From 9357d67db941621e6f0e4039b531f749933c35ad Mon Sep 17 00:00:00 2001 From: Evhen Kassa Date: Fri, 12 Mar 2021 17:46:18 +0200 Subject: [PATCH] Feature: more abilities for FacetGroup component --- src/plp/FacetGroup.js | 49 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 44 insertions(+), 5 deletions(-) diff --git a/src/plp/FacetGroup.js b/src/plp/FacetGroup.js index 172749f6..65b2d0de 100644 --- a/src/plp/FacetGroup.js +++ b/src/plp/FacetGroup.js @@ -5,6 +5,7 @@ import { makeStyles } from '@material-ui/core/styles' import ExpandableSection from '../ExpandableSection' import CheckboxFilterGroup from './CheckboxFilterGroup' import ButtonFilterGroup from './ButtonFilterGroup' +import ListItem from '@material-ui/core/ListItem' const styles = theme => ({ /** @@ -23,7 +24,16 @@ const useStyles = makeStyles(styles, { name: 'RSFFacetGroup' }) * A grouping of facets used for filtering products. */ export default function FacetGroup(props) { - const { group, submitOnChange, defaultExpanded } = props + const { + group, + submitOnChange, + defaultExpanded, + ControlsComponent, + controlsProps, + listItemProps, + onClose, + isSimpleList + } = props const classes = useStyles(props.classes) const { pageData: { filters }, @@ -40,11 +50,11 @@ export default function FacetGroup(props) { } } - let Controls + let Controls = ControlsComponent - if (group.ui === 'buttons') { + if (!Controls && group.ui === 'buttons') { Controls = ButtonFilterGroup - } else { + } else if (!Controls) { Controls = CheckboxFilterGroup } @@ -56,6 +66,20 @@ export default function FacetGroup(props) { caption = `${selection.length} selected` } + if (isSimpleList) { + return ( + + {group.name} + + + ) + } + return ( - + ) }, [...Object.values(props), filters]) @@ -87,4 +115,15 @@ FacetGroup.propTypes = { * If `true`, the group is expanded by default. */ defaultExpanded: PropTypes.bool, + /** + * Custom component to use own component. + */ + ControlsComponent: PropTypes.func, + controlsProps: PropTypes.object, + onClose: PropTypes.func, + listItemProps: PropTypes.object, + /** + * If `true` list will be displayed instead of expandable items. + */ + isSimpleList: PropTypes.bool, }