design-comuni-plone-theme
Version:
Volto Theme for Italia design guidelines
92 lines (87 loc) • 2.5 kB
JSX
import React from 'react';
import { defineMessages } from 'react-intl';
import { TextEditorWidget } from 'design-comuni-plone-theme/components/ItaliaTheme';
import {
Card,
CardBody,
CardTitle,
CardText,
CardReadMore,
} from 'design-react-kit';
import { UniversalLink } from '@plone/volto/components';
import { flattenToAppURL } from '@plone/volto/helpers';
import { ArgumentIcon } from 'design-comuni-plone-theme/components/ItaliaTheme/View';
import { TextBlockView } from '@plone/volto-slate/blocks/Text';
const messages = defineMessages({
text: {
id: 'Type text…',
defaultMessage: 'Digita un testo…',
},
exploreArgument: {
id: 'exploreArgument',
defaultMessage: 'Esplora argomento',
},
select_argument_sidebar: {
id: 'select_argument_sidebar',
defaultMessage: 'Seleziona un argomento nella barra a lato',
},
});
const Block = ({
data,
inEditMode,
selected,
block,
onChange,
intl,
index,
...otherProps
}) => {
const argument = data?.argument ? data?.argument[0] : null;
return (
<Card className="card-bg" noWrapper={true} tag="div">
{argument ? (
<CardBody tag="div">
<ArgumentIcon icon={argument?.icona} />
<CardTitle tag="h3">{argument?.title}</CardTitle>
<CardText tag="p">{argument?.description}</CardText>
{inEditMode ? (
<TextEditorWidget
{...otherProps}
data={data}
block={block}
fieldName="title"
selected={selected}
placeholder={intl.formatMessage(messages.text)}
onChangeBlock={(block, _data) => {
onChange(_data);
}}
setSelected={() => {
otherProps.onSubblockChangeFocus(index);
}}
/>
) : (
<div>
<TextBlockView
id={otherProps.id + '-' + index}
data={{ value: data.title }}
/>
</div>
)}
{argument && (
<CardReadMore
iconName="it-arrow-right"
tag={UniversalLink}
text={intl.formatMessage(messages.exploreArgument)}
href={flattenToAppURL(argument['@id'])}
/>
)}
</CardBody>
) : (
<CardBody tag="div">
{intl.formatMessage(messages.select_argument_sidebar)}
</CardBody>
)}
</Card>
);
};
export default Block;