UNPKG

@kitconcept/volto-light-theme

Version:
70 lines (62 loc) 2.22 kB
import React from 'react'; import PropTypes from 'prop-types'; import ConditionalLink from '@plone/volto/components/manage/ConditionalLink/ConditionalLink'; import Component from '@plone/volto/components/theme/Component/Component'; import { flattenToAppURL, isInternalURL } from '@plone/volto/helpers/Url/Url'; import config from '@plone/volto/registry'; import DefaultSummary from '@kitconcept/volto-light-theme/components/Summary/DefaultSummary'; const SummaryTemplate = ({ items, linkTitle, linkHref, isEditMode }) => { let link = null; let href = linkHref?.[0]?.['@id'] || ''; if (isInternalURL(href)) { link = ( <ConditionalLink to={flattenToAppURL(href)} condition={!isEditMode}> {linkTitle || href} </ConditionalLink> ); } else if (href) { link = <a href={href}>{linkTitle || href}</a>; } return ( <> <div className="items"> {items.map((item) => { const CustomItemBodyTemplate = config.getComponent({ name: 'SummaryListingItemTemplate', dependencies: [item['@type']], }).component; const Summary = config.getComponent({ name: 'Summary', dependencies: [item['@type']], }).component || DefaultSummary; const ItemBodyTemplate = () => CustomItemBodyTemplate ? ( <CustomItemBodyTemplate item={item} /> ) : ( <> <Component componentName="PreviewImage" item={item} alt="" /> <div className="listing-body"> <Summary item={item} HeadingTag="h3" /> </div> </> ); return ( <div className="listing-item" key={item['@id']}> <ConditionalLink item={item} condition={!isEditMode}> <ItemBodyTemplate item={item} /> </ConditionalLink> </div> ); })} </div> {link && <div className="footer">{link}</div>} </> ); }; SummaryTemplate.propTypes = { items: PropTypes.arrayOf(PropTypes.any).isRequired, linkMore: PropTypes.any, isEditMode: PropTypes.bool, }; export default SummaryTemplate;