diff --git a/src/ColumnsBlock/ColumnsBlockEdit.jsx b/src/ColumnsBlock/ColumnsBlockEdit.jsx index ba7527e..f9e068e 100644 --- a/src/ColumnsBlock/ColumnsBlockEdit.jsx +++ b/src/ColumnsBlock/ColumnsBlockEdit.jsx @@ -70,7 +70,7 @@ class ColumnsBlockEdit extends React.Component { const { coldata, gridCols, gridSize } = data; const columnList = getColumns(coldata); - console.log('data', gridCols); + // console.log('data', gridCols); return ( -
- -
+
{ - const { - draginfo, - block, - selected, - children, - blockId, - onDeleteBlock, - intl, - } = props; - console.log('block', block); - const type = block['@type']; - const visible = selected && blockHasValue(block) && !block.fixed; +class EditBlockWrapper extends React.Component { + constructor(props) { + super(props); + this.state = { + addNewBlockOpened: false, + }; + } + + componentDidMount() { + document.addEventListener('mousedown', this.handleClickOutside, false); + } + + componentWillUnmount() { + document.removeEventListener('mousedown', this.handleClickOutside); + } + + handleClickOutside = (e) => { + if ( + this.blockNode.current && + doesNodeContainClick(this.blockNode.current, e) + ) + return; + + if (this.state.addNewBlockOpened) { + this.setState({ + addNewBlockOpened: false, + }); + return true; + } + }; - const required = isBoolean(block.required) - ? block.required - : includes(blocks.requiredBlocks, type); + blockNode = React.createRef(); - // visibility: visible ? 'visible' : 'hidden', - return ( -
- {selected && ( -
-
- -
+ render() { + const { + allowedBlocks, + block, + blockId, + children, + draginfo, + intl, + onDeleteBlock, + onMutateBlock, + selected, + } = this.props; + const type = block['@type']; + const { disableNewBlocks } = block; - {!required && ( - + // const visible = selected && blockHasValue(block) && !block.fixed; + // visibility: visible ? 'visible' : 'hidden', + + const required = isBoolean(block.required) + ? block.required + : includes(blocks.requiredBlocks, type); + + return ( +
+
+ {selected && ( +
+
+ +
+ + {!disableNewBlocks && !blockHasValue(block) && ( + + )} + {!required && ( + + )} + {this.state.addNewBlockOpened && ( + { + this.setState({ addNewBlockOpened: false }); + onMutateBlock(id, value); + }} + currentBlock={blockId} + allowedBlocks={allowedBlocks} + /> + )} +
)} -
- )} -
{children}
-
- ); -}; +
{children}
+
+
+ ); + } +} export default injectIntl(EditBlockWrapper); diff --git a/src/ColumnsBlock/styles.less b/src/ColumnsBlock/styles.less index 7e13db4..9bbcd3f 100644 --- a/src/ColumnsBlock/styles.less +++ b/src/ColumnsBlock/styles.less @@ -3,27 +3,36 @@ padding: 0.3em; .column-header { - width: 60%; + width: 80%; text-align: center; + border-bottom: 6px solid #eaeaea; + margin: 0.3em auto 0.8em auto; + } - // height: 6px; - // border-radius: 4px; - // background-color: #ccc; - // transform: rotate(90deg); - margin: 0.1em auto; + .block { + .block-add-button { + display: none; + } } } - .columns-devices-selector { - text-align: center; + + [data-rbd-draggable-context-id] { + margin-bottom: 0.3em; } } .block-toolbar { - background-color: #eaeaea; + background-color: #d9edf4; padding: 3px; + // margin-top: -10px; + display: inline-block; + margin-bottom: 8px; position: absolute; margin-top: -36px; z-index: 10; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + right: 0px; .drag.handle.wrapper-column-block { position: initial;