import React from 'react' import classnames from 'classnames' import { type OverrideClassName } from '~components/types/OverrideClassName' import { FilterBarProvider, type FilterBarProviderProps } from './context/FilterBarContext' import { FilterBarDatePicker, FilterBarDateRangePicker, FilterBarMultiSelect, FilterBarSelect, } from './subcomponents' import { AddFiltersMenu } from './subcomponents/AddFiltersMenu' import { ClearAllButton } from './subcomponents/ClearAllButton' import { type FiltersValues } from './types' import styles from './FilterBar.module.css' export type FilterBarProps = OverrideClassName< Omit, 'children'> > export const FilterBar = ({ filters, classNameOverride, ...providerProps }: FilterBarProps): JSX.Element => ( filters={filters} {...providerProps}> {(activeFilters): JSX.Element => (
{Object.values(activeFilters).map(({ id, Component }) => ( // `id` will always be `string`, but keyof ValuesMap transformed it {React.cloneElement(Component, { id })} ))}
)} ) FilterBar.displayName = 'FilterBar' FilterBar.DatePicker = FilterBarDatePicker FilterBar.DateRangePicker = FilterBarDateRangePicker FilterBar.MultiSelect = FilterBarMultiSelect FilterBar.Select = FilterBarSelect