Skip to content

Commit

Permalink
Merge pull request #29 from redux-autoform/experimental
Browse files Browse the repository at this point in the history
Added HeadLess support
  • Loading branch information
andrerpena committed Aug 15, 2016
2 parents 443d3a0 + c6e1750 commit d6ba7f7
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 7 deletions.
2 changes: 1 addition & 1 deletion demo/presets.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export default [
},
{
name: 'layoutsTabs',
displayName: 'Layouts - Tabs (Experimental)',
displayName: 'Layouts - Tabs',
entityName: 'contact',
layoutName: 'edit',
formTitle: 'Edit contact',
Expand Down
16 changes: 10 additions & 6 deletions src/components/group/Group.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,23 +9,27 @@ class Group extends BaseGroup {
componentFactory: PropTypes.object.isRequired
};

render() {

getHeader = () => {
let {layout} = this.props;
let content = this.getContent();

// Group header
let header = layout.title
return layout.title
? (
<header className="metaform-group-header">
<span className="metaform-group-title">
{layout.title}
</span>
</header>
) : null;
};

render() {
let {layout} = this.props;
let content = this.getContent();
let header = (!layout.headLess)? this.getHeader() : null;
const style = (layout.headLess)? { marginTop: "15px" } : null;

return (
<section>
<section style={style}>
<div className='row'>
<div className="metaform-group">
{ header }
Expand Down
45 changes: 45 additions & 0 deletions src/components/group/TabGroup.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,51 @@ class TabGroup extends BaseGroup {
position: 0
};

getComponents = () => {
let { layout, componentFactory, fields } = this.props;
let components;

if (layout.fields) {

components = layout.fields.map(field => {
let fieldMetadata = fields.find(cp => cp.name === field.name);

if (!fieldMetadata) {
throw Error(`Could not find field. Field: ${field.name}`);
}

// in case the field is going to render layouts internally, it's going to need information about the
// layout and fields. I'm not sure if this is the best way to do it, probably not. TODO: Review it.
fieldMetadata._extra = {layout, fields};

return {
data: fieldMetadata,
length: layout.fields.length,
component: componentFactory.buildFieldComponent(fieldMetadata)
}
});

} else if (layout.groups) {

components = layout.groups.map(group => {
group = {...group, headLess: true};

return {
data: group,
length: layout.groups.length,
component: componentFactory.buildGroupComponent({
component: group.component,
layout: group,
fields: fields,
componentFactory: componentFactory
})
}
});
}

return components;
};

onNavItemSelected = (eventKey) => {
this.setState({ position: eventKey });
};
Expand Down

0 comments on commit d6ba7f7

Please sign in to comment.