UNPKG

design-comuni-plone-theme

Version:
77 lines (67 loc) 2.21 kB
/** * SocialHeader component. * @module components/ItaliaTheme/Header/SocialHeader */ import React, { useEffect } from 'react'; import { useSelector, useDispatch } from 'react-redux'; import { defineMessages, useIntl } from 'react-intl'; import { isEmpty } from 'lodash'; import { HeaderSocialsZone } from 'design-react-kit'; import { Icon } from 'design-comuni-plone-theme/components/ItaliaTheme'; import { getSocialSettings } from 'volto-social-settings'; const messages = defineMessages({ followUs: { id: 'Seguici su', defaultMessage: 'Seguici su', }, socialOpen: { id: 'Nuova scheda', defaultMessage: '- apri in nuova scheda', }, }); const SocialHeader = () => { const intl = useIntl(); const dispatch = useDispatch(); const socialSettings = useSelector((state) => state?.socialSettings); //useSelector((state) => state?.socialSettings?.results); const subsite = useSelector((state) => state.subsite?.data); const items = isEmpty(socialSettings.results) ? [] : socialSettings.results; useEffect(() => { if (!socialSettings?.loadingResults && items.length === 0) { dispatch(getSocialSettings()); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [dispatch]); const socials = subsite?.subsite_social_links?.length > 0 ? JSON.parse(subsite.subsite_social_links) : items; return ( socials?.length > 0 && ( <HeaderSocialsZone label={intl.formatMessage(messages.followUs)}> <ul> {socials?.map((social, idx) => ( <li key={idx}> <a title={`${intl.formatMessage(messages.followUs)} ${ social.title } ${intl.formatMessage(messages.socialOpen)}`} href={social.url} target="_blank" rel="noopener noreferrer" > <Icon color="" icon={social.icon} padding={false} size="" title={social.title} /> </a> </li> ))} </ul> </HeaderSocialsZone> ) ); }; export default SocialHeader;