forked from tsai/budibase
3 changed files with 79 additions and 65 deletions
@ -0,0 +1,60 @@ |
|||||
|
import { |
||||
|
setupBinding |
||||
|
} from "../state/stateBinding"; |
||||
|
import { |
||||
|
split, |
||||
|
last |
||||
|
} from "lodash/fp"; |
||||
|
import { $ } from "../core/common"; |
||||
|
|
||||
|
export const _initialiseChildren = ({ bb, coreApi, store, componentLibraries, appDefinition, parentContext, hydrate }) => |
||||
|
(childrenProps, htmlElement, context, anchor=null) => { |
||||
|
|
||||
|
const childComponents = []; |
||||
|
|
||||
|
if(hydrate) { |
||||
|
while (htmlElement.firstChild) { |
||||
|
htmlElement.removeChild(htmlElement.firstChild); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
for(let childProps of childrenProps) { |
||||
|
const {componentName, libName} = splitName(childProps._component); |
||||
|
|
||||
|
if(!componentName || !libName) return; |
||||
|
|
||||
|
const {initialProps, bind} = setupBinding( |
||||
|
store, childProps, coreApi, |
||||
|
context || parentContext, appDefinition.appRootPath); |
||||
|
|
||||
|
|
||||
|
const componentProps = { |
||||
|
...initialProps, |
||||
|
_bb:bb(context || parentContext, childProps) |
||||
|
}; |
||||
|
|
||||
|
const component = new (componentLibraries[libName][componentName])({ |
||||
|
target: htmlElement, |
||||
|
props: componentProps, |
||||
|
hydrate:false, |
||||
|
anchor |
||||
|
}); |
||||
|
|
||||
|
bind(component); |
||||
|
childComponents.push(component); |
||||
|
} |
||||
|
|
||||
|
return childComponents; |
||||
|
} |
||||
|
|
||||
|
const splitName = fullname => { |
||||
|
const componentName = $(fullname, [ |
||||
|
split("/"), |
||||
|
last |
||||
|
]); |
||||
|
|
||||
|
const libName =fullname.substring( |
||||
|
0, fullname.length - componentName.length - 1); |
||||
|
|
||||
|
return {libName, componentName}; |
||||
|
} |
||||
Loading…
Reference in new issue