UNPKG

design-comuni-plone-theme

Version:
239 lines (233 loc) 7.47 kB
/** * Default view component. * @module components/theme/View/IncaricoView */ import React from 'react'; import PropTypes from 'prop-types'; import { defineMessages, useIntl } from 'react-intl'; import { PageHeader, SkipToMainContent, RichTextSection, OfficeCard, Metadata, HelpBox, richTextHasContent, Attachments, IncaricoPlaceholderAfterContent, IncaricoPlaceholderAfterRelatedItems, RelatedItems, IncaricoPersone, } from 'design-comuni-plone-theme/components/ItaliaTheme/View'; import { contentFolderHasItems } from 'design-comuni-plone-theme/helpers'; import { UniversalLink } from '@plone/volto/components'; import { flattenToAppURL } from '@plone/volto/helpers'; import { injectLazyLibs } from '@plone/volto/helpers/Loadable/Loadable'; const messages = defineMessages({ tipologia_incarico: { id: 'tipologia_incarico', defaultMessage: 'Tipo di incarico', }, data_inizio_incarico: { id: 'data_inizio_incarico', defaultMessage: "Data di inizio dell'incarico", }, data_conclusione_incarico: { id: 'data_conclusione_incarico', defaultMessage: "Data di fine dell'incarico", }, data_insediamento: { id: 'data_insediamento', defaultMessage: 'Data di insediamento', }, importi_viaggio: { id: 'importi_viaggio', defaultMessage: 'Importi di viaggio e/o servizio', }, compensi: { id: 'compensi', defaultMessage: 'Compensi', }, ufficio: { id: 'ufficio', defaultMessage: 'Unita organizzativa', }, responsabile: { id: 'responsabile', defaultMessage: 'Responsabile della struttura', }, data_inizio: { id: 'data_inizio', defaultMessage: 'Data inizio incarico', }, data_conclusione: { id: 'data_conclusione', defaultMessage: 'Data conclusione incarico', }, atto_nomina: { id: 'atto_nomina', defaultMessage: 'Atto di nomina', }, }); /** * Component to display the default view. * @function DefaultView * @param {Object} content Content object. * @returns {string} Markup of the component. */ const IncaricoView = ({ content, moment: momentlib }) => { const moment = momentlib.default; const intl = useIntl(); return ( <div className="container px-4 my-4 incarico-view"> <SkipToMainContent /> <PageHeader content={{ ...content, stato_servizio: null }} showreadingtime={false} showdates={false} showtassonomiaargomenti={false} /> <section className="col-lg-12 it-page-sections-container border-light my-4 py-4" id="main-content-section" > {content.tipologia_incarico && ( <RichTextSection tag_id="tipologia_incarico" title={intl.formatMessage(messages.tipologia_incarico)} > <div className="font-serif">{content.tipologia_incarico.title}</div> </RichTextSection> )} {content.data_inizio_incarico && ( <RichTextSection tag_id="data_inizio_incarico" title={intl.formatMessage(messages.data_inizio_incarico)} > <div className="font-serif"> {moment(content.data_inizio_incarico).format('D-MM-YYYY')} </div> </RichTextSection> )} {content.data_conclusione_incarico && ( <RichTextSection tag_id="data_conclusione_incarico" title={intl.formatMessage(messages.data_conclusione_incarico)} > <div className="font-serif"> {moment(content.data_conclusione_incarico).format('D-MM-YYYY')} </div> </RichTextSection> )} {content.data_insediamento && ( <RichTextSection tag_id="data_insediamento" title={intl.formatMessage(messages.data_insediamento)} > <div className="font-serif"> {moment(content.data_insediamento).format('D-MM-YYYY')} </div> </RichTextSection> )} {richTextHasContent(content.compensi) && ( <RichTextSection data={content.compensi} tag_id={'text-body'} title={intl.formatMessage(messages.compensi)} /> )} {contentFolderHasItems(content, 'compensi-file') && ( <Attachments content={content} folder_name={'compensi-file'} as_article={false} /> )} {richTextHasContent(content.importi_viaggio_servizio) && ( <RichTextSection data={content.importi_viaggio_servizio} tag_id={'text-body'} title={intl.formatMessage(messages.importi_viaggio)} /> )} {contentFolderHasItems(content, 'importi-di-viaggio-e-o-servizi') && ( <Attachments content={content} folder_name={'importi-di-viaggio-e-o-servizi'} as_article={false} /> )} <IncaricoPersone content={content} /> {content.unita_organizzativa?.length > 0 && ( <RichTextSection tag_id="ufficio" title={intl.formatMessage(messages.ufficio)} > <div className="card-wrapper card-teaser-wrapper card-teaser-wrapper-equal"> {content.unita_organizzativa?.map((item) => ( <OfficeCard key={flattenToAppURL(item['@id'])} office={item} /> ))} </div> </RichTextSection> )} {content.responsabile_struttura?.length > 0 && ( <RichTextSection tag_id="responsabile" title={intl.formatMessage(messages.responsabile)} > <div className="card-wrapper card-teaser-wrapper card-teaser-wrapper-equal"> {content.responsabile_struttura?.map((item) => ( <OfficeCard key={flattenToAppURL(item['@id'])} office={item} /> ))} </div> </RichTextSection> )} {content.atto_nomina?.length > 0 && ( <RichTextSection tag_id="atto-nomina" title={intl.formatMessage(messages.atto_nomina)} > {content.atto_nomina.map((atto_nomina) => ( <div key={flattenToAppURL(atto_nomina['@id'])} className="card-wrapper card-teaser-wrapper card-teaser-wrapper-equal" > <UniversalLink href={flattenToAppURL(atto_nomina['@id'])}> {atto_nomina.title} </UniversalLink> </div> ))} </RichTextSection> )} <Metadata content={content} showSectionTitle={richTextHasContent(content?.ulteriori_informazioni)} > {richTextHasContent(content?.ulteriori_informazioni) && ( <HelpBox text={content?.ulteriori_informazioni} /> )} </Metadata> </section> <IncaricoPlaceholderAfterContent content={content} /> <RelatedItems list={content?.relatedItems} /> <IncaricoPlaceholderAfterRelatedItems content={content} /> </div> ); }; /** * Property types. * @property {Object} propTypes Property types. * @static */ IncaricoView.propTypes = { /** * Content of the object */ content: PropTypes.shape({ /** * Title of the object */ title: PropTypes.string, }).isRequired, }; export default injectLazyLibs(['moment'])(IncaricoView);