FLUID-6156: Impossible to implement "defaultable" values in defaults via expanders returning undefined

Metadata

Source
FLUID-6156
Type
Bug
Priority
Major
Status
Open
Resolution
N/A
Assignee
Antranig Basman
Reporter
Antranig Basman
Created
2017-05-12T10:53:34.894-0400
Updated
2021-01-08T11:14:26.615-0500
Versions
  1. 2.0
Fixed Versions
N/A
Component
  1. Framework

Description

Our irregular defaults merging algorithm (which performs merging before expansion, unlike the system used for distributions, subcomponents, etc.) leads to the impossibility of a useful feature - it would be useful to be able to override values in derived grades by values which may (via an expander return) be undefined, and as a result, retaining the original value. This would ordinarily be possible, but, for example, the following code fails:

fluid.defaults("fluid.tests.undefinedMergeBase", {
    gradeNames: "fluid.component",
    option6: "OPTION6"
});

fluid.defaults("fluid.tests.undefinedMergeOver", {
    gradeNames: "fluid.tests.undefinedMergeBase",
    option6: "@expand:fluid.tests.returnUndefined()"
});

fluid.tests.returnUndefined = function () {};

jqUnit.test("FLUID-6156: Test ignoring of undefined values during merge", function () {
    var that = fluid.tests.undefinedMergeOver();
    jqUnit.assertEquals("Undefined value should have been ignored", "OPTION6", that.option6);
});

});