UNPKG

@plone/volto

Version:
71 lines (63 loc) 2.1 kB
import React from 'react'; import PropTypes from 'prop-types'; import { defineMessages, useIntl } from 'react-intl'; import isEqual from 'lodash/isEqual'; import SidebarPortal from '@plone/volto/components/manage/Sidebar/SidebarPortal'; import { default as ListingBody } from '@plone/volto/components/manage/Blocks/Listing/ListingBody'; import ListingData from './ListingData'; import { withBlockExtensions } from '@plone/volto/helpers/Extensions'; import { getBaseUrl } from '@plone/volto/helpers/Url/Url'; const messages = defineMessages({ results: { id: 'Results preview', defaultMessage: 'Results preview', }, items: { id: 'Contained items', defaultMessage: 'Contained items', }, }); const Edit = React.memo( (props) => { const { data, onChangeBlock, block, selected, pathname } = props; const intl = useIntl(); const placeholder = data.placeholder || (data?.querystring?.query?.length ? intl.formatMessage(messages.results) : intl.formatMessage(messages.items)); return ( <> <p className="items-preview">{placeholder}</p> <ListingBody {...props} path={getBaseUrl(pathname)} isEditMode /> <SidebarPortal selected={selected}> <ListingData key={block} {...props} data={data} block={block} onChangeBlock={onChangeBlock} /> </SidebarPortal> </> ); }, function areEquals(prevProps, nextProps) { return !( nextProps.selected !== prevProps.selected || nextProps.index !== prevProps.index || !isEqual(prevProps.data, nextProps.data) ); }, ); Edit.propTypes = { data: PropTypes.objectOf(PropTypes.any).isRequired, index: PropTypes.number.isRequired, selected: PropTypes.bool.isRequired, block: PropTypes.string.isRequired, onSelectBlock: PropTypes.func.isRequired, items: PropTypes.arrayOf(PropTypes.any), properties: PropTypes.objectOf(PropTypes.any).isRequired, pathname: PropTypes.string.isRequired, }; export default withBlockExtensions(Edit);