UNPKG

@findify/react-components

Version:
48 lines (47 loc) 1.94 kB
/** * @module layouts/Search */ import { useEffect } from 'react'; import DesktopFacets from 'components/search/DesktopFacets'; import MobileActions from 'components/search/MobileActions'; import DesktopActions from 'components/search/DesktopActions'; import Branch from 'components/common/Branch'; import Banner from 'components/Banner'; import Grid, { Column } from 'components/common/Grid'; import { useMobile } from 'helpers/useMobile'; import { useAnnouncement } from 'components/common/Announcement'; import useScrollOnChange from 'helpers/useScrollOnChange'; import { useItems } from '@findify/react-connect'; import useTranslations from 'helpers/useTranslations'; import styles from 'layouts/Search/styles.css'; import SearchResultsLayout from 'components/search/SearchResultsLayout'; const Search = ({ isCollection, theme = styles }) => { const { items, config } = useItems(); const translate = useTranslations(); const isMobile = useMobile(); const [announcement, setAnnouncement] = useAnnouncement(); useScrollOnChange(items); useEffect(() => setAnnouncement(translate('search.accessibleUpdate')), [ items, ]); if (!items.size) return null; return (<> <Grid className={theme.root} gutter={40} columns={config.getIn(['facets', 'position']) === 'top' ? 'full' : config.getIn(['breakpoints', 'layout'], 'fit|auto')}> <Column display-if={!isMobile} order={config.getIn(['facets', 'position']) === 'right' && 2}> <DesktopFacets /> </Column> <> <Branch isCollection={isCollection} condition={isMobile} left={MobileActions} right={DesktopActions}/> <Banner /> <SearchResultsLayout condition={config.getIn(['pagination', 'type'])}/> </> </Grid> {announcement} </>); }; export default process.env.HOT ? require('react-hot-loader').hot(module)(Search) : Search;