design-comuni-plone-theme
Version:
Volto Theme for Italia design guidelines
112 lines (103 loc) • 2.83 kB
JSX
import React from 'react';
import PropTypes from 'prop-types';
import { Segment, Accordion } from 'semantic-ui-react';
import { FormattedMessage, injectIntl } from 'react-intl';
import { TextWidget } from '@plone/volto/components';
import { defineMessages, useIntl } from 'react-intl';
import {
LinkToWidget,
ColorListWidget,
} from 'design-comuni-plone-theme/components/ItaliaTheme';
const messages = defineMessages({
linkMoreTitle: {
id: 'linkMoreTitle',
defaultMessage: 'Titolo per il link ad altro',
},
linkMore: {
id: 'linkMore',
defaultMessage: 'Link ad altro',
},
bg_color: {
id: 'bg_color',
defaultMessage: 'Colore di sfondo',
},
color_primary: {
id: 'color_primary',
defaultMessage: 'Primario',
},
color_secondary: {
id: 'color_primary',
defaultMessage: 'Primario',
},
});
const Sidebar = ({
data,
block,
onChangeBlock,
onChangeSubBlock,
selected = 0,
setSelected,
openObjectBrowser,
}) => {
const intl = useIntl();
const bg_colors = [
{ name: 'primary', label: intl.formatMessage(messages.color_primary) },
{ name: 'secondary', label: intl.formatMessage(messages.color_secondary) },
];
return (
<Segment.Group raised>
<header className="header pulled">
<h2>
<FormattedMessage id="contacts_block" defaultMessage="Contatti" />
</h2>
</header>
<Accordion className="form">
<Accordion.Content active={true}>
<ColorListWidget
id="bg_color"
title={intl.formatMessage(messages.bg_color)}
value={data.bg_color}
onChange={(id, value) => {
onChangeBlock(block, {
...data,
[id]: value,
});
}}
colors={bg_colors}
/>
<TextWidget
id="linkMoreTitle"
title={intl.formatMessage(messages.linkMoreTitle)}
value={data.linkMoreTitle}
onChange={(name, value) => {
onChangeBlock(block, {
...data,
linkMoreTitle: value,
});
}}
/>
<LinkToWidget
data={data}
openObjectBrowser={openObjectBrowser}
title={intl.formatMessage(messages.linkMore)}
showTarget={false}
onChange={(name, value) =>
onChangeBlock(block, {
...data,
[name]: value,
})
}
/>
</Accordion.Content>
</Accordion>
</Segment.Group>
);
};
Sidebar.propTypes = {
data: PropTypes.objectOf(PropTypes.any),
block: PropTypes.string,
onChangeBlock: PropTypes.func,
selected: PropTypes.any,
setSelected: PropTypes.func,
};
export default injectIntl(Sidebar);