@findify/react-components
Version:
Findify react UI components
48 lines (47 loc) • 1.94 kB
JSX
/**
* @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;