From 4fb2a70f870effd1705ab083e3a629b847e9069f Mon Sep 17 00:00:00 2001 From: Tiberiu Ichim Date: Mon, 26 Sep 2022 21:01:09 +0300 Subject: [PATCH] WIP --- .../Listing/templates/CardsCarousel.jsx | 2 +- src/blocks/Listing/templates/CardsGallery.jsx | 2 +- src/blocks/Listing/templates/Summary.jsx | 9 +++------ src/blocks/Teaser/Card.jsx | 2 +- src/blocks/Teaser/index.js | 2 +- .../UniversalCard/UniversalCard.jsx | 4 ++-- .../UniversalItem/UniversalItem.jsx | 4 ++-- src/schema-utils.js | 20 ++++++++++++------- 8 files changed, 24 insertions(+), 21 deletions(-) diff --git a/src/blocks/Listing/templates/CardsCarousel.jsx b/src/blocks/Listing/templates/CardsCarousel.jsx index 4e7ef0f0..f5dee25a 100644 --- a/src/blocks/Listing/templates/CardsCarousel.jsx +++ b/src/blocks/Listing/templates/CardsCarousel.jsx @@ -2,7 +2,7 @@ import React from 'react'; import { Button, Icon } from 'semantic-ui-react'; import loadable from '@loadable/component'; -import { UniversalCard } from '@eeacms/volto-listing-block'; +import UniversalCard from '@eeacms/volto-listing-block/components/UniversalCard/UniversalCard'; import ResponsiveContainer from '@eeacms/volto-listing-block/components/ResponsiveContainer'; const Slider = loadable(() => import('react-slick')); diff --git a/src/blocks/Listing/templates/CardsGallery.jsx b/src/blocks/Listing/templates/CardsGallery.jsx index 5c811b9b..65641087 100644 --- a/src/blocks/Listing/templates/CardsGallery.jsx +++ b/src/blocks/Listing/templates/CardsGallery.jsx @@ -1,7 +1,7 @@ import moment from 'moment'; import PropTypes from 'prop-types'; import React from 'react'; -import { UniversalCard } from '@eeacms/volto-listing-block'; +import UniversalCard from '@eeacms/volto-listing-block/components/UniversalCard/UniversalCard'; import config from '@plone/volto/registry'; const CardsGallery = ({ diff --git a/src/blocks/Listing/templates/Summary.jsx b/src/blocks/Listing/templates/Summary.jsx index 4428d99d..d1250c35 100644 --- a/src/blocks/Listing/templates/Summary.jsx +++ b/src/blocks/Listing/templates/Summary.jsx @@ -1,5 +1,5 @@ import { ConditionalLink } from '@plone/volto/components'; -import { UniversalItem } from '@eeacms/volto-listing-block'; +import UniversalItem from '@eeacms/volto-listing-block/components/UniversalItem/UniversalItem'; import { flattenToAppURL } from '@plone/volto/helpers'; import { isInternalURL } from '@plone/volto/helpers/Url/Url'; import config from '@plone/volto/registry'; @@ -41,13 +41,10 @@ const SummaryListing = (props) => { ); }; -SummaryListing.schemaEnhancer = (args) => { - const schema = UniversalItem.schemaEnhancer(args); - return schema; -}; +SummaryListing.schemaEnhancer = UniversalItem.schemaEnhancer; SummaryListing.styleSchemaEnhancer = ({ schema }) => { - // console.log('style', schema); + console.log('style', schema); return schema; }; diff --git a/src/blocks/Teaser/Card.jsx b/src/blocks/Teaser/Card.jsx index 5f24b283..ab030054 100644 --- a/src/blocks/Teaser/Card.jsx +++ b/src/blocks/Teaser/Card.jsx @@ -4,7 +4,7 @@ import { omit } from 'lodash'; import { Message } from 'semantic-ui-react'; import { defineMessages, useIntl } from 'react-intl'; -import { UniversalCard } from '@eeacms/volto-listing-block'; +import UniversalCard from '@eeacms/volto-listing-block/components/UniversalCard/UniversalCard'; import imageBlockSVG from '@plone/volto/components/manage/Blocks/Image/block-image.svg'; diff --git a/src/blocks/Teaser/index.js b/src/blocks/Teaser/index.js index 14808e2a..44e472a5 100644 --- a/src/blocks/Teaser/index.js +++ b/src/blocks/Teaser/index.js @@ -2,7 +2,7 @@ import { compose } from 'redux'; import TeaserCardTemplate from './Card'; import { ListingStylingSchemaEnhancer } from '../Listing/schema'; import { adjustTeaserSchema } from './schema'; -import { UniversalCard } from '@eeacms/volto-listing-block'; +import UniversalCard from '@eeacms/volto-listing-block/components/UniversalCard/UniversalCard'; export default (config) => { // Teaser diff --git a/src/components/UniversalCard/UniversalCard.jsx b/src/components/UniversalCard/UniversalCard.jsx index 33c9b967..f4f12df3 100644 --- a/src/components/UniversalCard/UniversalCard.jsx +++ b/src/components/UniversalCard/UniversalCard.jsx @@ -7,7 +7,7 @@ import { Item } from './model'; import { getVoltoStyles } from '@eeacms/volto-listing-block/schema-utils'; import schemaEnhancer from './schema'; -const UniversalCard = (props) => { +function UniversalCard(props) { const { itemModel = {}, styles, item, ...rest } = props; const extension = resolveExtension( '@type', @@ -27,7 +27,7 @@ const UniversalCard = (props) => { {...rest} /> ); -}; +} UniversalCard.schemaEnhancer = schemaEnhancer; diff --git a/src/components/UniversalItem/UniversalItem.jsx b/src/components/UniversalItem/UniversalItem.jsx index 8e3ffc4c..067047f8 100644 --- a/src/components/UniversalItem/UniversalItem.jsx +++ b/src/components/UniversalItem/UniversalItem.jsx @@ -4,7 +4,7 @@ import { Item } from './model'; import universalItemSchemaEnhancer from './schema'; -const UniversalItem = (props) => { +function UniversalItem(props) { const { itemModel = {}, item, ...rest } = props; const extension = resolveExtension( '@type', @@ -14,7 +14,7 @@ const UniversalItem = (props) => { const ItemTemplate = extension.view; return ; -}; +} UniversalItem.schemaEnhancer = universalItemSchemaEnhancer; diff --git a/src/schema-utils.js b/src/schema-utils.js index 9a513845..610c06e6 100644 --- a/src/schema-utils.js +++ b/src/schema-utils.js @@ -90,30 +90,36 @@ export const enhanceStylingSchema = ({ formData, schema, blockType = 'listing', - extensionName = 'itemModel', + extensionName = 'itemTemplates', intl, }) => { // Adds (to the limited styles schema) the new styling schema enhancements schema = addStylesField({ formData, schema, intl }); - const extensionType = '@type'; // the attribute name that's stored in the block data - const activeItemName = formData?.[extensionType]; + // first, enhance styling schema based on the variation + // then, enhance it based on the `${extensionName}` + // TODO: use resolveExtensions() from Volto + const blockConfig = config.blocks.blocksConfig[blockType]; const activeVariation = formData['variation'] || blockConfig.variations?.find(({ isDefault }) => isDefault) || {}; - const extensions = blockConfig.extensions; - const variations = extensions[extensionName]; - let activeItem = variations?.find((item) => item.id === activeItemName); - // TODO: not needed after bug fix in Volto + // TODO: not needed when we will use latest Volto const variationStyleSchema = activeVariation?.stylesSchema; schema = variationStyleSchema ? variationStyleSchema({ schema: cloneDeep(schema), formData, intl }) : schema; // end TODO + const extensionType = '@type'; // the attribute name that's stored in the block data + const extensionTemplates = blockConfig.extensions?.[extensionName]; + const activeItemName = formData?.itemModel?.[extensionType]; + let activeItem = extensionTemplates?.find( + (item) => item.id === activeItemName, + ); + const stylingSchema = activeItem?.['stylesSchema']; schema = stylingSchema ? stylingSchema({ schema: cloneDeep(schema), formData, intl })