Skip to content

Commit 80d66cb

Browse files
committed
Handle children property in the user components.
1 parent 277ee0b commit 80d66cb

3 files changed

Lines changed: 19 additions & 2 deletions

File tree

src/framework/components/ComponentComposer/ComponentComposer.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import get from 'lodash/get';
22
import cloneDeep from 'lodash/cloneDeep';
3+
import isArray from 'lodash/isArray';
34
import React from 'react';
45
import PropTypes from 'prop-types';
56
import ComponentWrapper from './ComponentWrapper';
@@ -64,9 +65,15 @@ const renderComponent = (userComponents, description, rootProps) => {
6465
propsComponent = renderComponent(userComponents, child, propsComponent);
6566
});
6667
}
68+
let nestedComponents = [];
69+
if (propsComponent.children && isArray(propsComponent.children)) {
70+
nestedComponents = propsComponent.children;
71+
delete propsComponent.children;
72+
}
6773
newElement = React.createElement(
6874
ComponentWrapper,
69-
{wrappedComponent: component, propsComponent, key}
75+
{wrappedComponent: component, propsComponent, key},
76+
nestedComponents
7077
);
7178
} else {
7279
newElement = React.createElement(NotFoundComponent, {componentName});

src/framework/components/PageComposer/PageComposer.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import get from 'lodash/get';
22
import cloneDeep from 'lodash/cloneDeep';
3+
import isArray from 'lodash/isArray';
34
import React from 'react';
45
import PropTypes from 'prop-types';
56
import queryString from 'query-string';
@@ -77,7 +78,12 @@ const renderComponent = (userComponents, description, serviceComponentOptions, r
7778
isSelected,
7879
...serviceComponentOptions,
7980
};
80-
newElement = React.createElement(ComponentWrapper, wrapperProps);
81+
let nestedComponents = [];
82+
if (propsComponent.children && isArray(propsComponent.children)) {
83+
nestedComponents = propsComponent.children;
84+
delete propsComponent.children;
85+
}
86+
newElement = React.createElement(ComponentWrapper, wrapperProps, nestedComponents);
8187
} else {
8288
newElement = React.createElement(NotFoundComponent, {componentName});
8389
}

src/framework/components/PageComposition/PageComposition.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,10 @@ class PageComposition extends Component {
122122
return this.renderComponent(child);
123123
});
124124
}
125+
if (propsComponents.children && isArray(propsComponents.children)) {
126+
nestedComponents = nestedComponents.concat(propsComponents.children);
127+
delete propsComponents.children;
128+
}
125129
const validType = type || 'div';
126130
if (validType.charAt(0) === '_') {
127131
const pageComponentType = validType.substr(1);

0 commit comments

Comments
 (0)