55 LoadingOverlay ,
66 SegmentedControl ,
77 TextInput ,
8- Tooltip , useMantineTheme ,
8+ Tooltip ,
9+ useMantineTheme ,
910} from '@mantine/core' ;
1011import { MdClose as CloseIcon } from 'react-icons/md' ;
1112import FacetSortPanel from './FacetSortPanel' ;
@@ -15,7 +16,7 @@ import FacetExpander from './FacetExpander';
1516import { EnumFacetChart } from '../charts' ;
1617import React , { useEffect , useRef , useState } from 'react' ;
1718import { EnumFacetHooks } from './EnumFacet' ;
18- import { SortType } from './types' ;
19+ import { SortType , CombineMode } from './types' ;
1920import { updateFacetEnum } from './utils' ;
2021import { useDeepCompareCallback , useDeepCompareEffect } from 'use-deep-compare' ;
2122import { Icon } from '@iconify/react' ;
@@ -80,8 +81,10 @@ const FacetEnumList: React.FC<FacetEnumListProps> = ({
8081 const searchInputRef = useRef < HTMLInputElement > ( null ) ;
8182 const settingRef = useRef < HTMLDivElement > ( null ) ;
8283 const [ searchTerm , setSearchTerm ] = useState ( '' ) ;
83- const [ combineMode , setCombineMode ] = useState < 'or' | 'and' > ( 'and' ) ;
84- const { data, enumFilters, isSuccess, error } = hooks . useGetFacetData ( field ) ;
84+ // const [combineMode, setCombineMode] = useState<'or' | 'and'>('or');
85+
86+ const { data, enumFilters, combineMode, isSuccess, error } =
87+ hooks . useGetFacetData ( field ) ;
8588 const [ selectedEnums , setSelectedEnums ] = useState ( enumFilters ?? [ ] ) ;
8689 const totalCount = hooks ?. useTotalCounts ? hooks . useTotalCounts ( ) : 1 ;
8790 const clearFilters = hooks . useClearFilter ( ) ;
@@ -126,13 +129,36 @@ const FacetEnumList: React.FC<FacetEnumListProps> = ({
126129 } ) ;
127130 if ( checked ) {
128131 const updated = selectedEnums ? [ ...selectedEnums , value ] : [ value ] ;
129- updateFacetEnum ( field , updated , updateFacetFilters , clearFilters ) ;
132+ updateFacetEnum (
133+ field ,
134+ updated ,
135+ updateFacetFilters ,
136+ clearFilters ,
137+ combineMode ,
138+ ) ;
130139 } else {
131140 const updated = selectedEnums ?. filter ( ( x ) => x != value ) ;
132- updateFacetEnum ( field , updated ?? [ ] , updateFacetFilters , clearFilters ) ;
141+ updateFacetEnum (
142+ field ,
143+ updated ?? [ ] ,
144+ updateFacetFilters ,
145+ clearFilters ,
146+ combineMode ,
147+ ) ;
133148 }
134149 } ;
135150
151+ const handleCombineModeChange = ( mode : CombineMode ) => {
152+ updateFacetEnum (
153+ field ,
154+ selectedEnums ?? [ ] ,
155+ updateFacetFilters ,
156+ clearFilters ,
157+ mode ,
158+ ) ;
159+ console . log ( 'set mode' , mode ) ;
160+ } ;
161+
136162 const [ facetChartData , setFacetChartData ] = useState < {
137163 filteredData : [ string | number , number ] [ ] ;
138164 filteredDataObj : Record < string | number , number > ;
@@ -309,29 +335,29 @@ const FacetEnumList: React.FC<FacetEnumListProps> = ({
309335 { isSettings && (
310336 < div className = "flex w-full justify-center" >
311337 < div className = "flex items-center space-x-1 mt-1" >
312- < SegmentedControl
313- classNames = { {
314- root : 'border-1 border-accent rounded-l-md rounded-r-md' ,
315- control : 'p-0 m-0' ,
316- indicator : 'bg-accent text-accent-contrast'
317- } }
318- ref = { settingRef }
319- value = { combineMode }
320- onChange = { ( value : string ) =>
321- setCombineMode ( value as 'and' | 'or' )
322- }
323- data = { [
324- { label : 'AND' , value : 'and' } ,
325- { label : 'OR' , value : 'or' } ,
326- ] }
327- />
328- < Tooltip label = "Combine filters with AND or OR" >
329- < Icon
330- icon = "gen3:info"
331- height = { 12 }
332- width = { 12 }
333- color = { theme . colors . accent [ 4 ] }
338+ < SegmentedControl
339+ classNames = { {
340+ root : 'border-1 border-accent rounded-l-md rounded-r-md' ,
341+ control : 'p-0 m-0' ,
342+ indicator : 'bg-accent text-accent-contrast' ,
343+ } }
344+ ref = { settingRef }
345+ value = { combineMode }
346+ onChange = { ( value : string ) =>
347+ handleCombineModeChange ( value as 'and' | 'or' )
348+ }
349+ data = { [
350+ { label : 'AND' , value : 'and' } ,
351+ { label : 'OR' , value : 'or' } ,
352+ ] }
334353 />
354+ < Tooltip label = "Combine filters with AND or OR" >
355+ < Icon
356+ icon = "gen3:info"
357+ height = { 12 }
358+ width = { 12 }
359+ color = { theme . colors . accent [ 4 ] }
360+ />
335361 </ Tooltip >
336362 </ div >
337363 </ div >
0 commit comments