UNPKG

@findify/react-components

Version:
51 lines (47 loc) 1.79 kB
/** * @module components/search/MobileSorting */ import Button from 'components/Button'; import Text from 'components/Text'; import Icon from 'components/Icon'; import MapArray from 'components/common/MapArray'; import { is } from 'immutable'; import styles from 'components/search/MobileSorting/styles.css'; import useTranslations from 'helpers/useTranslations'; import useSortingLogic from 'helpers/useSortingLogic'; import { useCallback } from 'react'; const Item = ({ item, theme = styles, selected, onChange, }) => { const onClick = useCallback((e) => { e.preventDefault(); onChange(item); }, []); const isSelected = is(selected, item); return (<Button onClick={onClick} disabled={isSelected} className={theme.item}> <Text primary uppercase> <Icon name={isSelected ? 'RadioFilled' : 'RadioEmpty'} title={isSelected ? 'Selected' : 'Not selected'}/> {item.get('label')} </Text> </Button>); }; export default ({ theme = styles, style, hideModal }) => { const [items, selected, onChange] = useSortingLogic(); const translate = useTranslations(); return (<div className={theme.root} style={style}> <div className={theme.header}> <div className={theme.title}> <Text primary uppercase> {translate('actions.sorting')} </Text> </div> <Button onClick={hideModal}> <Icon name="ArrowBack" title={translate('actions.back')}/> </Button> </div> <div className={theme.body}> <MapArray onChange={onChange} theme={theme} selected={selected} array={items} factory={Item}/> </div> <Button className={theme.footer} onClick={hideModal}> {translate('actions.seeResults')} </Button> </div>); };