From 17f52d166aa33f0d491da04b7c38195f983f1292 Mon Sep 17 00:00:00 2001 From: Tiberiu Ichim Date: Sat, 26 Sep 2020 22:03:44 +0300 Subject: [PATCH] WIP on columns --- src/ColumnsBlock/ColumnsBlockEdit.jsx | 78 +++++++++++++++++---------- src/ColumnsBlock/EditBlockWrapper.jsx | 26 ++++++++- src/ColumnsBlock/styles.less | 2 +- 3 files changed, 74 insertions(+), 32 deletions(-) diff --git a/src/ColumnsBlock/ColumnsBlockEdit.jsx b/src/ColumnsBlock/ColumnsBlockEdit.jsx index f9e068e..0b0e7bc 100644 --- a/src/ColumnsBlock/ColumnsBlockEdit.jsx +++ b/src/ColumnsBlock/ColumnsBlockEdit.jsx @@ -1,18 +1,20 @@ import React from 'react'; import { Grid } from 'semantic-ui-react'; import { isEmpty } from 'lodash'; -import { Icon, SidebarPortal, InlineForm } from '@plone/volto/components'; // BlocksForm +import { SidebarPortal, InlineForm } from '@plone/volto/components'; // BlocksForm, Icon, import { emptyBlocksForm } from '@plone/volto/helpers'; +import { setSidebarTab } from '@plone/volto/actions'; +import { connect } from 'react-redux'; import { BlocksForm } from '@eeacms/volto-blocks-form/components'; +import { blocks } from '~/config'; +import { COLUMNSBLOCK } from '@eeacms/volto-columns-block/constants'; import { ColumnsBlockSchema } from './schema'; import { getColumns, empty } from './utils'; import ColumnVariations from './ColumnVariations'; -import { blocks } from '~/config'; -import { COLUMNSBLOCK } from '@eeacms/volto-columns-block/constants'; import EditBlockWrapper from './EditBlockWrapper'; -import dragSVG from '@plone/volto/icons/drag.svg'; +// import dragSVG from '@plone/volto/icons/drag.svg'; // import dotsSVG from '@plone/volto/icons/drag.svg'; import './styles.less'; @@ -21,7 +23,9 @@ class ColumnsBlockEdit extends React.Component { constructor(props) { super(props); this.state = { - colSelections: {}, + colSelections: {}, // selected block for each column + showSidebar: false, + activeColumn: null, }; // This special variable is needed because of the onChangeField(block...) is @@ -44,7 +48,7 @@ class ColumnsBlockEdit extends React.Component { // blockState trick to overcome this. If there would be a onChangeBlocks or // onChangeFormData in Volto core, then BlocksForm could match that API // and this wouldn't be needed (together with the unstable_batchedUpdates - // calls. + // calls). this.blocksState = {}; } @@ -92,7 +96,20 @@ class ColumnsBlockEdit extends React.Component {
( + { + setSidebarTab(1); + this.setState({ + showSidebar: true, + activeColumn: colId, + colSelections: {}, + }); + }} + /> + )} selectedBlock={ selected ? this.state.colSelections[colId] : null } @@ -144,30 +161,33 @@ class ColumnsBlockEdit extends React.Component { })} - - { - onChangeBlock(block, { - ...data, - [id]: value, - }); - }} - formData={data} - /> - + {Object.keys(this.state.colSelections).length === 0 && ( + + {this.state.activeColumn ? ( +
{this.state.activeColumn}
+ ) : ( + { + onChangeBlock(block, { + ...data, + [id]: value, + }); + }} + formData={data} + /> + )} +
+ )} ); } } -export default ColumnsBlockEdit; -// -// import DeviceSelect from './DeviceSelect'; -// import ColumnControls from './ColumnControls'; -// -// import moreIcon from '@plone/volto/icons/more.svg'; -// {/* */} -// {/* {

{data.block_title}

} */} -// { /*

{`Column ${index}`}

*/ } +export default connect( + (state, props) => { + return {}; + }, + { setSidebarTab }, +)(ColumnsBlockEdit); diff --git a/src/ColumnsBlock/EditBlockWrapper.jsx b/src/ColumnsBlock/EditBlockWrapper.jsx index 17d3600..e51e8f0 100644 --- a/src/ColumnsBlock/EditBlockWrapper.jsx +++ b/src/ColumnsBlock/EditBlockWrapper.jsx @@ -8,6 +8,8 @@ import isBoolean from 'lodash/isBoolean'; import { defineMessages, injectIntl } from 'react-intl'; import { doesNodeContainClick } from 'semantic-ui-react/dist/commonjs/lib'; +import tuneSVG from '@plone/volto/icons/tune.svg'; +import columnSVG from '@plone/volto/icons/column.svg'; import dragSVG from '@plone/volto/icons/drag.svg'; import addSVG from '@plone/volto/icons/circle-plus.svg'; import trashSVG from '@plone/volto/icons/delete.svg'; @@ -67,7 +69,9 @@ class EditBlockWrapper extends React.Component { onDeleteBlock, onMutateBlock, selected, + onShowColumnSettings, } = this.props; + console.log('draginfo', draginfo); const type = block['@type']; const { disableNewBlocks } = block; @@ -81,10 +85,19 @@ class EditBlockWrapper extends React.Component { return (
+ {!selected && ( +
+ )} {selected && (
+ + {!disableNewBlocks && !blockHasValue(block) && (