removed binding references to array type
This commit is contained in:
parent
d6d936e3d0
commit
b0c1ace9f0
|
@ -24,7 +24,6 @@ export const setupBinding = (store, rootProps, coreApi, context, rootPath) => {
|
|||
const boundProps = [];
|
||||
const contextBoundProps = [];
|
||||
const componentEventHandlers = [];
|
||||
const boundArrays = [];
|
||||
|
||||
for(let propName in props) {
|
||||
|
||||
|
@ -76,21 +75,10 @@ export const setupBinding = (store, rootProps, coreApi, context, rootPath) => {
|
|||
}
|
||||
|
||||
initialProps[propName] = doNothing;
|
||||
} else if(Array.isArray(val)) {
|
||||
const arrayOfBindings = [];
|
||||
for(let element of val){
|
||||
arrayOfBindings.push(getBindings(element, {...element}));
|
||||
}
|
||||
|
||||
boundArrays.push({
|
||||
arrayOfBindings,
|
||||
propName
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return {contextBoundProps, boundProps, componentEventHandlers, boundArrays, initialProps};
|
||||
return {contextBoundProps, boundProps, componentEventHandlers, initialProps};
|
||||
}
|
||||
|
||||
|
||||
|
@ -98,8 +86,7 @@ export const setupBinding = (store, rootProps, coreApi, context, rootPath) => {
|
|||
const bind = (rootBindings) => (component) => {
|
||||
|
||||
if(rootBindings.boundProps.length === 0
|
||||
&& rootBindings.componentEventHandlers.length === 0
|
||||
&& rootBindings.boundArrays.length === 0) return;
|
||||
&& rootBindings.componentEventHandlers.length === 0) return;
|
||||
|
||||
const handlerTypes = eventHandlers(store, coreApi, rootPath);
|
||||
|
||||
|
@ -108,7 +95,7 @@ export const setupBinding = (store, rootProps, coreApi, context, rootPath) => {
|
|||
|
||||
const getPropsFromBindings = (s, bindings) => {
|
||||
|
||||
const {boundProps, componentEventHandlers, boundArrays} = bindings;
|
||||
const {boundProps, componentEventHandlers} = bindings;
|
||||
const newProps = {...bindings.initialProps};
|
||||
|
||||
for(let boundProp of boundProps) {
|
||||
|
@ -159,18 +146,6 @@ export const setupBinding = (store, rootProps, coreApi, context, rootPath) => {
|
|||
|
||||
}
|
||||
|
||||
for(let boundArray of boundArrays) {
|
||||
let index = 0;
|
||||
if(!newProps[boundArray.propName])
|
||||
newProps[boundArray.propName] = [];
|
||||
for(let bindings of boundArray.arrayOfBindings){
|
||||
newProps[boundArray.propName][index] = getPropsFromBindings(
|
||||
s,
|
||||
bindings);
|
||||
index++;
|
||||
}
|
||||
}
|
||||
|
||||
return newProps;
|
||||
|
||||
}
|
||||
|
@ -189,7 +164,6 @@ export const setupBinding = (store, rootProps, coreApi, context, rootPath) => {
|
|||
initialProps:rootInitialProps,
|
||||
bind:bind(bindings),
|
||||
boundProps:bindings.boundProps,
|
||||
boundArrays: bindings.boundArrays,
|
||||
contextBoundProps: bindings.contextBoundProps
|
||||
};
|
||||
|
||||
|
|
|
@ -74,59 +74,6 @@ describe("setupBinding", () => {
|
|||
|
||||
});
|
||||
|
||||
it("should update bound array props when updated ", () => {
|
||||
|
||||
const {component, store, props} = testSetup();
|
||||
|
||||
const {bind} = testSetupBinding(store, props, component);
|
||||
bind(component);
|
||||
|
||||
store.update(s => {
|
||||
s.FirstName = "Bobby";
|
||||
s.LastName = "Thedog";
|
||||
s.Customer = {
|
||||
Name: "ACME inc",
|
||||
Address: ""
|
||||
};
|
||||
s.addressToSet = "123 Main Street";
|
||||
s.ArrayVal1 = "item 1 - version 1";
|
||||
s.ArrayVal2 = "item 2 - version 1";
|
||||
s.ArrayVal3 = "inner array item";
|
||||
return s;
|
||||
});
|
||||
|
||||
expect(component.props.arrayWithInnerBinding[0].innerBound).toBe("item 1 - version 1");
|
||||
expect(component.props.arrayWithInnerBinding[1].innerBound).toBe("item 2 - version 1");
|
||||
expect(component.props.arrayWithInnerBinding[0].innerUnbound).toBe("not bound 1");
|
||||
expect(component.props.arrayWithInnerBinding[1].innerUnbound).toBe("not bound 2");
|
||||
|
||||
});
|
||||
|
||||
it("should update bound nested (2nd level) array props when updated ", () => {
|
||||
|
||||
const {component, store, props} = testSetup();
|
||||
|
||||
const {bind} = testSetupBinding(store, props, component);
|
||||
bind(component);
|
||||
|
||||
store.update(s => {
|
||||
s.FirstName = "Bobby";
|
||||
s.LastName = "Thedog";
|
||||
s.Customer = {
|
||||
Name: "ACME inc",
|
||||
Address: ""
|
||||
};
|
||||
s.addressToSet = "123 Main Street";
|
||||
s.ArrayVal1 = "item 1 - version 1";
|
||||
s.ArrayVal2 = "item 2 - version 1";
|
||||
s.ArrayVal3 = "inner array item";
|
||||
return s;
|
||||
});
|
||||
|
||||
expect(component.props.arrayWithInnerBinding[2].innerArray[0].innerInnerBound).toBe("inner array item");
|
||||
|
||||
});
|
||||
|
||||
it("should update event handlers on state change", () => {
|
||||
|
||||
const {component, store, props} = testSetup();
|
||||
|
@ -235,23 +182,6 @@ const testSetup = () => {
|
|||
path: "Customer.Address",
|
||||
value: binding("addressOverride", "", "event")
|
||||
})
|
||||
],
|
||||
arrayWithInnerBinding: [
|
||||
{
|
||||
innerBound: binding("ArrayVal1"),
|
||||
innerUnbound: "not bound 1"
|
||||
},
|
||||
{
|
||||
innerBound: binding("ArrayVal2"),
|
||||
innerUnbound: "not bound 2"
|
||||
},
|
||||
{
|
||||
innerArray: [
|
||||
{
|
||||
innerInnerBound: binding("ArrayVal3")
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue