@kitconcept/volto-light-theme
Version:
Volto Light Theme by kitconcept
80 lines (74 loc) • 2.63 kB
JSX
import React from 'react';
import PropTypes from 'prop-types';
import ConditionalLink from '@plone/volto/components/manage/ConditionalLink/ConditionalLink';
import Card from '../../../primitives/Card/Card';
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';
import cx from 'classnames';
const SummaryTemplate = ({ items, linkTitle, linkHref, isEditMode }) => {
let link = null;
let href = linkHref?.[0]?.['@id'] || '';
const PreviewImageComponent = config.getComponent('PreviewImage').component;
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 showLink = !Summary.hideLink && !isEditMode;
const ItemBodyTemplate = (props) =>
CustomItemBodyTemplate ? (
<CustomItemBodyTemplate item={item} />
) : (
<>
<Card.Image
item={item}
showPlaceholderImage={true}
imageComponent={PreviewImageComponent}
/>
<Card.Summary a11yLabelId={props.a11yLabelId}>
<Summary item={item} HeadingTag="h3" />
</Card.Summary>
</>
);
return (
<div
className={cx('listing-item has--align--left', {
[`${item['@type']?.toLowerCase()}-listing`]: item['@type'],
})}
key={item['@id']}
>
<Card item={showLink ? item : null}>
<ItemBodyTemplate item={item} />
</Card>
</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;