Skip to content

Commit 7b02676

Browse files
authored
Fix value stored in element options for indexable option (#860)
* Fix value stored in element options for indexable option * CC
1 parent bc38d6b commit 7b02676

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

src/elements.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {Animations} from 'chart.js';
2-
import {isObject, defined} from 'chart.js/helpers';
2+
import {isObject, isArray, defined} from 'chart.js/helpers';
33
import {eventHooks} from './events';
44
import {elementHooks} from './hooks';
55
import {annotationTypes} from './types';
@@ -9,6 +9,8 @@ const directUpdater = {
99
};
1010

1111
const hooks = eventHooks.concat(elementHooks);
12+
const resolve = (value, optDefs) => isObject(optDefs) ? resolveObj(value, optDefs) : value;
13+
1214

1315
/**
1416
* @typedef { import("chart.js").Chart } Chart
@@ -131,7 +133,11 @@ function resolveObj(resolver, defs) {
131133
for (const prop of Object.keys(defs)) {
132134
const optDefs = defs[prop];
133135
const value = resolver[prop];
134-
result[prop] = isObject(optDefs) && !isIndexable(prop) ? resolveObj(value, optDefs) : value;
136+
if (isIndexable(prop) && isArray(value)) {
137+
result[prop] = value.map((item) => resolve(item, optDefs));
138+
} else {
139+
result[prop] = resolve(value, optDefs);
140+
}
135141
}
136142
return result;
137143
}

0 commit comments

Comments
 (0)