Provide an empty object when the target of the resolver is undefined (#10655)

* Provide an empty object when the target of the proxy is undefined

* changes check on subGetTarget function

* adds test case

* fixes lint
This commit is contained in:
stockiNail
2022-09-15 18:12:35 +02:00
committed by GitHub
parent 47cb9e1f76
commit d4e106cc9c
2 changed files with 37 additions and 1 deletions

View File

@@ -307,7 +307,7 @@ function subGetTarget(resolver, prop, value) {
// For array of objects, the object is used to store updated values
return value;
}
return target;
return target || {};
}
function _resolveWithPrefixes(prop, prefixes, scopes, proxy) {

View File

@@ -351,6 +351,42 @@ describe('Chart.plugins', function() {
expect(plugin.hook.calls.first().args[2]).toEqualOptions({bar: 'bar'});
});
// https://github.com/chartjs/Chart.js/issues/10654
it('should resolve options even if some subnodes are set as undefined', function() {
var runtimeOptions;
var plugin = {
id: 'a',
afterUpdate: function(chart, args, options) {
options.l1.l2.l3.display = true;
runtimeOptions = options;
},
defaults: {
l1: {
l2: {
l3: {
display: false
}
}
}
}
};
window.acquireChart({
plugins: [plugin],
options: {
plugins: {
a: {
l1: {
l2: undefined
}
},
}
},
});
expect(runtimeOptions.l1.l2.l3.display).toBe(true);
Chart.unregister(plugin);
});
it('should disable all plugins', function() {
var plugin = {id: 'a', hook: function() {}};
var chart = window.acquireChart({