Skip to content

Commit

Permalink
Add expand/collapse to object widget (#927)
Browse files Browse the repository at this point in the history
  • Loading branch information
drlogout authored and erquhart committed Dec 24, 2017
1 parent dfd1111 commit 4b5fb89
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 12 deletions.
1 change: 1 addition & 0 deletions src/components/EditorWidgets/List/ListControl.js
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,7 @@ export default class ListControl extends Component {
onAddAsset={onAddAsset}
onRemoveInsertedMedia={onRemoveInsertedMedia}
classNameWrapper={`${classNameWrapper} nc-listControl-objectControl`}
forList
/>
</SortableListItem>);
};
Expand Down
11 changes: 10 additions & 1 deletion src/components/EditorWidgets/Object/Object.css
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
.nc-objectControl-root {
padding: 14px;
padding: 0 14px;
}

.nc-objectControl-topBar {
align-items: center;
background-color: #dfdfe3;
display: flex;
justify-content: space-between;
margin: 0 -14px;
padding: 13px;
}
33 changes: 22 additions & 11 deletions src/components/EditorWidgets/Object/ObjectControl.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,18 @@ import { Map } from 'immutable';
import { partial } from 'lodash';
import c from 'classnames';
import { resolveWidget } from 'Lib/registry';
import { Icon } from 'UI';
import EditorControl from 'Editor/EditorControlPane/EditorControl';

const TopBar = ({ collapsed, onCollapseToggle }) =>
<div className="nc-listControl-topBar">
<div className="nc-listControl-listCollapseToggle" onClick={onCollapseToggle}>
<Icon type="chevron" direction={collapsed ? 'up' : 'down'} size="small"/>
{itemsCount} {listLabel}
const TopBar = ({ collapsed, onCollapseToggle }) => (
<div className="nc-objectControl-topBar">
<div className="nc-objectControl-objectCollapseToggle">
<button className="nc-listControl-listCollapseToggleButton" onClick={onCollapseToggle}>
<Icon type="chevron" direction={collapsed ? 'up' : 'down'} size="small" />
</button>
</div>
</div>;

</div>
);

export default class ObjectControl extends Component {
static propTypes = {
Expand All @@ -32,6 +34,7 @@ export default class ObjectControl extends Component {
field: PropTypes.object,
forID: PropTypes.string,
classNameWrapper: PropTypes.string.isRequired,
forList: PropTypes.bool,
};

constructor(props) {
Expand Down Expand Up @@ -85,15 +88,23 @@ export default class ObjectControl extends Component {
);
}

handleCollapseToggle = () => {
this.setState({ collapsed: !this.state.collapsed });
}

render() {
const { field, forID, classNameWrapper } = this.props;
const { field, forID, classNameWrapper, forList } = this.props;
const { collapsed } = this.state;
const multiFields = field.get('fields');
const singleField = field.get('field');

if (multiFields) {
return (<div id={forID} className={c(classNameWrapper, 'nc-objectControl-root')}>
{multiFields.map((f, idx) => this.controlFor(f, idx))}
</div>);
return (
<div id={forID} className={c(classNameWrapper, 'nc-objectControl-root')}>
{ forList ? null : <TopBar collapsed={collapsed} onCollapseToggle={this.handleCollapseToggle} /> }
{ collapsed ? null : multiFields.map((f, idx) => this.controlFor(f, idx)) }
</div>
);
} else if (singleField) {
return this.controlFor(singleField);
}
Expand Down

0 comments on commit 4b5fb89

Please sign in to comment.