@stenajs-webui/filter 15.0.0-alpha.6 → 15.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,7 +3,8 @@ import { SearchFilterSectionProps } from "../../../components/SearchFilterSectio
3
3
  import { ValueAndOnValueChangeProps } from "@stenajs-webui/forms";
4
4
  import { BooleanRecord, BooleanRecordOptions } from "../BooleanRecordTypes";
5
5
  interface ChipMultiSelectSectionProps<TSectionKey extends string> extends SearchFilterSectionProps<TSectionKey>, ValueAndOnValueChangeProps<BooleanRecord> {
6
+ noneSelectedLabel?: string;
6
7
  options?: BooleanRecordOptions;
7
8
  }
8
- export declare const ChipMultiSelectSection: <TSectionKey extends string>({ options, value, onValueChange, ...sectionProps }: ChipMultiSelectSectionProps<TSectionKey>) => React.ReactElement;
9
+ export declare const ChipMultiSelectSection: <TSectionKey extends string>({ options, value, noneSelectedLabel, onValueChange, ...sectionProps }: ChipMultiSelectSectionProps<TSectionKey>) => React.ReactElement;
9
10
  export {};
package/dist/index.es.js CHANGED
@@ -319,7 +319,7 @@ var SimpleCheckboxListSection = function (_a) {
319
319
  };
320
320
 
321
321
  var ChipMultiSelectSection = function (_a) {
322
- var options = _a.options, value = _a.value, onValueChange = _a.onValueChange, sectionProps = __rest(_a, ["options", "value", "onValueChange"]);
322
+ var options = _a.options, value = _a.value, noneSelectedLabel = _a.noneSelectedLabel, onValueChange = _a.onValueChange, sectionProps = __rest(_a, ["options", "value", "noneSelectedLabel", "onValueChange"]);
323
323
  var _b = useState(""), text = _b[0], setText = _b[1];
324
324
  var listValue = useMemo(function () {
325
325
  return value
@@ -340,7 +340,7 @@ var ChipMultiSelectSection = function (_a) {
340
340
  onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange(createBooleanRecordFromValue(value));
341
341
  }, [onValueChange]);
342
342
  return (React.createElement(SearchFilterSection, __assign({}, sectionProps),
343
- React.createElement(ChipMultiSelect, { options: filteredOptions, value: listValue, onValueChange: onValueChangeInternal, inputValue: text, onInputChange: setText })));
343
+ React.createElement(ChipMultiSelect, { options: filteredOptions, value: listValue, onValueChange: onValueChangeInternal, inputValue: text, noneSelectedLabel: noneSelectedLabel, onInputChange: setText, closeMenuOnSelect: false })));
344
344
  };
345
345
  var createBooleanRecordFromValue = function (value) {
346
346
  return value.reduce(function (sum, item) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../src/features/search-filter/components/SearchFilterPanelHeader.tsx","../src/features/search-filter/context/SearchFilterStateContext.ts","../src/features/search-filter/context/SearchFilterDispatchContext.ts","../src/features/search-filter/context/SearchFilterActionsContext.ts","../src/features/search-filter/components/SearchFilterDrawer.tsx","../src/features/search-filter/components/SearchFilterButton.tsx","../src/features/search-filter/components/SearchFilterSection.tsx","../src/features/search-filter/context/SearchFilterModelContext.ts","../src/features/search-filter/components/context/SearchFilterContext.tsx","../src/features/search-filter/redux/SearchFilterRedux.ts","../src/features/search-filter/hooks/UseLocalSearchFilterState.ts","../src/features/search-filter/components/context/SearchFilterLocalStateContext.tsx","../src/features/search-filter/features/chips/ChipSpacer.tsx","../src/features/search-filter/features/chips/SearchFilterChips.tsx","../src/features/search-filter/features/chips/EmptyChip.tsx","../src/features/search-filter/features/chips/SearchFilterChip.tsx","../src/features/search-filter/features/chips/SectionChips.tsx","../src/features/search-filter/section-factories/boolean-record/BooleanRecordChips.ts","../src/features/search-filter/section-factories/boolean-record/components/SimpleCheckboxListSection.tsx","../src/features/search-filter/section-factories/boolean-record/components/ChipMultiSelectSection.tsx","../src/features/search-filter/section-factories/date-range/DateRangeChips.ts","../src/features/search-filter/section-factories/date-range/DateRangePropsFactory.ts","../src/features/search-filter/section-factories/date-range/components/DateRangeCalendarSection.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Heading, Indent, Row } from \"@stenajs-webui/core\";\nimport { FlatButton, Icon } from \"@stenajs-webui/elements\";\nimport { faTimes } from \"@fortawesome/free-solid-svg-icons/faTimes\";\nimport { faSlidersH } from \"@fortawesome/free-solid-svg-icons/faSlidersH\";\nimport { cssColor } from \"@stenajs-webui/theme\";\n\ninterface SearchFilterPanelHeaderProps {\n onRequestClose: () => void;\n}\n\nexport const SearchFilterPanelHeader: React.FC<SearchFilterPanelHeaderProps> = ({\n onRequestClose,\n}) => {\n return (\n <Row\n height={\"48px\"}\n justifyContent={\"space-between\"}\n alignItems={\"center\"}\n indent={2}\n >\n <Row alignItems={\"center\"}>\n <Icon\n icon={faSlidersH}\n color={cssColor(\"--lhds-color-ui-500\")}\n size={12}\n />\n <Indent />\n <Heading variant={\"h4\"}>Filters</Heading>\n </Row>\n <FlatButton leftIcon={faTimes} onClick={onRequestClose} />\n </Row>\n );\n};\n","import { createContext, useContext } from \"react\";\nimport { SearchFilterState } from \"../redux/SearchFilterRedux\";\n\nexport const SearchFilterStateContext = createContext<\n SearchFilterState<unknown>\n>((null as unknown) as SearchFilterState<unknown>);\n\nexport const useSearchFilterState = <\n TFormModel\n>(): SearchFilterState<TFormModel> => {\n const c = useContext(SearchFilterStateContext);\n if (!c) {\n throw new Error(\n \"Missing search filter context, wrap components with SearchFilterContext component.\"\n );\n }\n return c as SearchFilterState<TFormModel>;\n};\n","import { createContext, useContext } from \"react\";\nimport { SearchFilterDispatch } from \"../redux/SearchFilterRedux\";\n\nexport const SearchFilterDispatchContext = createContext<\n SearchFilterDispatch<unknown>\n>((null as unknown) as SearchFilterDispatch<unknown>);\n\nexport const useSearchFilterDispatch = () => {\n const c = useContext(SearchFilterDispatchContext);\n if (!c) {\n throw new Error(\"Missing search filter dispatch context.\");\n }\n return c;\n};\n","import { createContext, useContext } from \"react\";\nimport { SearchFilterActions } from \"../redux/SearchFilterRedux\";\n\nexport const SearchFilterActionsContext = createContext<\n SearchFilterActions<unknown, any>\n>((null as unknown) as SearchFilterActions<unknown, any>);\n\nexport const useSearchFilterActions = <\n TFormModel,\n TSectionKey extends string\n>() => {\n const c = useContext(SearchFilterActionsContext);\n if (!c) {\n throw new Error(\"Missing search filter actions context.\");\n }\n return c as SearchFilterActions<TFormModel, TSectionKey>;\n};\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { Drawer, DrawerProps } from \"@stenajs-webui/modal\";\nimport { cssColor } from \"@stenajs-webui/theme\";\nimport { Column } from \"@stenajs-webui/core\";\nimport { SearchFilterPanelHeader } from \"./SearchFilterPanelHeader\";\nimport { useSearchFilterState } from \"../context/SearchFilterStateContext\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\n\ninterface SearchFilterDrawerProps\n extends Omit<DrawerProps, \"isOpen\" | \"onRequestClose\"> {}\n\nexport const SearchFilterDrawer: React.FC<SearchFilterDrawerProps> = ({\n children,\n ...drawerProps\n}) => {\n const {\n settings: { open },\n } = useSearchFilterState();\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const closeDrawer = useCallback(() => {\n dispatch(actions.closeFilters());\n }, [actions, dispatch]);\n\n return (\n <Drawer\n background={cssColor(\"--lhds-color-ui-50\")}\n width={\"370px\"}\n isOpen={open}\n onRequestClose={closeDrawer}\n {...drawerProps}\n >\n <Column>\n <SearchFilterPanelHeader onRequestClose={closeDrawer} />\n {children}\n </Column>\n </Drawer>\n );\n};\n","import { faSlidersH } from \"@fortawesome/free-solid-svg-icons/faSlidersH\";\nimport { SecondaryButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\n\ninterface SearchFilterDrawerButtonProps {\n label?: string;\n}\n\nexport const SearchFilterButton: React.VFC<SearchFilterDrawerButtonProps> = ({\n label = \"Filters\",\n}) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const onClickButton = useCallback(() => {\n dispatch(actions.openFilters());\n }, [actions, dispatch]);\n\n return (\n <SecondaryButton\n label={label}\n leftIcon={faSlidersH}\n onClick={onClickButton}\n />\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren, useCallback } from \"react\";\nimport { Row } from \"@stenajs-webui/core\";\nimport { Collapsible, CollapsibleContent } from \"@stenajs-webui/panels\";\nimport { lowerCase, upperFirst } from \"lodash\";\nimport { Banner, FlatButton, Spinner } from \"@stenajs-webui/elements\";\nimport { useSearchFilterState } from \"../context/SearchFilterStateContext\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\n\nexport interface SearchFilterSectionProps<TSectionKey extends string> {\n sectionId: TSectionKey;\n contentLeft?: React.ReactNode;\n contentRight?: React.ReactNode;\n disableContentPadding?: boolean;\n loading?: boolean;\n error?: string;\n onRetry?: () => void;\n label?: string;\n}\n\nexport const SearchFilterSection = function SearchFilterSection<\n TSectionKey extends string\n>({\n sectionId,\n label,\n contentLeft,\n contentRight,\n loading,\n error,\n onRetry,\n disableContentPadding,\n children,\n}: PropsWithChildren<SearchFilterSectionProps<TSectionKey>>) {\n const state = useSearchFilterState();\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const expanded = state.expandedSections.values[sectionId] ?? false;\n\n const onClickLabel = useCallback(() => {\n dispatch(actions.setSectionExpanded(sectionId, !expanded));\n }, [actions, dispatch, expanded, sectionId]);\n\n const activeLabel = label ?? formatColumnIdToHeaderCellLabel(sectionId);\n\n return (\n <Collapsible\n label={activeLabel}\n collapsed={!expanded}\n onClick={onClickLabel}\n contentLeft={contentLeft}\n contentRight={contentRight}\n >\n {loading ? (\n <CollapsibleContent>\n <Row spacing justifyContent={\"center\"} flex={1}>\n <Spinner size={\"small\"} />\n </Row>\n </CollapsibleContent>\n ) : error ? (\n <Banner\n variant={\"error\"}\n text={error}\n contentRight={\n onRetry ? <FlatButton label={\"Retry\"} onClick={onRetry} /> : null\n }\n />\n ) : disableContentPadding ? (\n children\n ) : (\n <CollapsibleContent>{children}</CollapsibleContent>\n )}\n </Collapsible>\n );\n};\n\nexport const formatColumnIdToHeaderCellLabel = (columnId: string): string =>\n upperFirst(lowerCase(columnId));\n","import { createContext, useContext } from \"react\";\n\nexport const SearchFilterModelContext = createContext<unknown>(null as unknown);\n\nexport const useSearchFilterModel = <TFormModel>(): TFormModel => {\n const c = useContext(SearchFilterModelContext);\n if (!c) {\n throw new Error(\n \"Missing search filter context, wrap components with SearchFilterContext component.\"\n );\n }\n return c as TFormModel;\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport {\n SearchFilterActions,\n SearchFilterDispatch,\n SearchFilterState,\n} from \"../../redux/SearchFilterRedux\";\nimport { SearchFilterDispatchContext } from \"../../context/SearchFilterDispatchContext\";\nimport { SearchFilterActionsContext } from \"../../context/SearchFilterActionsContext\";\nimport { SearchFilterStateContext } from \"../../context/SearchFilterStateContext\";\nimport { SearchFilterModelContext } from \"../../context/SearchFilterModelContext\";\n\ninterface SearchFilterScopeProps<TFormModel, TSectionKey extends string> {\n state: SearchFilterState<TFormModel>;\n dispatch: SearchFilterDispatch<TFormModel>;\n actions: SearchFilterActions<TFormModel, TSectionKey>;\n}\n\nexport const SearchFilterContext = function SearchFilterScope<\n TFormModel,\n TSectionKey extends string\n>({\n state,\n dispatch,\n actions,\n children,\n}: PropsWithChildren<SearchFilterScopeProps<TFormModel, TSectionKey>>) {\n return (\n <SearchFilterDispatchContext.Provider\n value={dispatch as SearchFilterDispatch<unknown>}\n >\n <SearchFilterActionsContext.Provider value={actions}>\n <SearchFilterStateContext.Provider value={state}>\n <SearchFilterModelContext.Provider value={state.formModel}>\n {children}\n </SearchFilterModelContext.Provider>\n </SearchFilterStateContext.Provider>\n </SearchFilterActionsContext.Provider>\n </SearchFilterDispatchContext.Provider>\n );\n};\n","import { combineReducers } from \"redux\";\nimport {\n createEntityActions,\n createEntityReducer,\n createValueByIdActions,\n createValueByIdReducer,\n EntityAction,\n EntityState,\n reducerIdGate,\n reducerIdGateAction,\n ReducerIdGateAction,\n ValueByIdAction,\n ValueByIdState,\n} from \"@stenajs-webui/redux\";\nimport { Dispatch } from \"react\";\n\nexport interface SearchFilterSettings {\n open: boolean;\n}\n\nexport type SearchFilterDispatch<TFormModel> = Dispatch<\n SearchFilterAction<TFormModel>\n>;\n\nexport interface SearchFilterState<TFormModel> {\n expandedSections: ValueByIdState<boolean>;\n formModel: EntityState<TFormModel>;\n settings: EntityState<SearchFilterSettings>;\n}\n\nexport type SearchFilterAction<TFormModel> =\n | ReducerIdGateAction<ValueByIdAction<boolean>>\n | ReducerIdGateAction<EntityAction<TFormModel>>\n | ReducerIdGateAction<EntityAction<SearchFilterSettings>>;\n\nexport const createSearchFilterInitialState = <TFormModel>(\n initialFormModel: TFormModel\n): SearchFilterState<TFormModel> => ({\n settings: {\n open: false,\n },\n formModel: initialFormModel,\n expandedSections: { values: {} },\n});\n\nexport const createSearchFilterReducer = <TFormModel>(\n reducerId: string,\n initialState: SearchFilterState<TFormModel>\n) =>\n combineReducers({\n expandedSections: reducerIdGate(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdReducer<boolean>(initialState.expandedSections)\n ),\n formModel: reducerIdGate(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityReducer<TFormModel>(initialState.formModel)\n ),\n settings: reducerIdGate(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityReducer<SearchFilterSettings>(initialState.settings)\n ),\n });\n\nexport interface SearchFilterActions<TFormModel, TSectionKey extends string> {\n openFilters: () => SearchFilterAction<TFormModel>;\n closeFilters: () => SearchFilterAction<TFormModel>;\n setFormModelFields: (\n fields: Partial<TFormModel>\n ) => SearchFilterAction<TFormModel>;\n clearFormModel: () => SearchFilterAction<TFormModel>;\n expandSection: (section: TSectionKey) => SearchFilterAction<TFormModel>;\n collapseSection: (section: TSectionKey) => SearchFilterAction<TFormModel>;\n setSectionExpanded: (\n section: TSectionKey,\n expanded: boolean\n ) => SearchFilterAction<TFormModel>;\n clearExpandedSections: () => SearchFilterAction<TFormModel>;\n}\n\nexport const createSearchFilterActions = <\n TFormModel,\n TSectionKey extends string\n>(\n reducerId: string,\n initialFormModel: TFormModel\n): SearchFilterActions<TFormModel, TSectionKey> => ({\n openFilters: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityActions<SearchFilterSettings>().setEntityFields({\n open: true,\n })\n ),\n closeFilters: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityActions<SearchFilterSettings>().setEntityFields({\n open: false,\n })\n ),\n setFormModelFields: (fields: Partial<TFormModel>) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityActions<TFormModel>().setEntityFields(fields)\n ),\n clearFormModel: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityActions<TFormModel>().setEntity(initialFormModel)\n ),\n expandSection: (section: TSectionKey) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, true)\n ),\n collapseSection: (section: TSectionKey) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, false)\n ),\n setSectionExpanded: (section: TSectionKey, expanded: boolean) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, expanded)\n ),\n clearExpandedSections: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().clearAllValues()\n ),\n});\n\nexport const getReducerIdFor = (\n reducerId: string,\n reducerIdSuffix: keyof SearchFilterState<unknown>\n): string => `${reducerId}.${reducerIdSuffix}`;\n","import {\n createSearchFilterActions,\n createSearchFilterReducer,\n SearchFilterState,\n} from \"../redux/SearchFilterRedux\";\nimport { useReducer, useState } from \"react\";\n\nexport const useLocalSearchFilterState = <\n TFormModel,\n TSectionKey extends string\n>(\n initialState: SearchFilterState<TFormModel>\n) => {\n const [reducer] = useState(() =>\n createSearchFilterReducer<TFormModel>(\"local\", initialState)\n );\n\n const [actions] = useState(() =>\n createSearchFilterActions<TFormModel, TSectionKey>(\n \"local\",\n initialState.formModel\n )\n );\n\n const [state, dispatch] = useReducer(reducer, initialState);\n\n return {\n actions,\n state,\n dispatch,\n };\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport { useLocalSearchFilterState } from \"../../hooks/UseLocalSearchFilterState\";\nimport { SearchFilterContext } from \"./SearchFilterContext\";\nimport { createSearchFilterInitialState } from \"../../redux/SearchFilterRedux\";\n\ninterface SearchFilterLocalScopeProps<TFormModel> {\n initialFormModel: TFormModel;\n}\n\nexport const SearchFilterLocalStateContext = function SearchFilterLocalScope<\n TFormModel\n>({\n initialFormModel,\n children,\n}: PropsWithChildren<SearchFilterLocalScopeProps<TFormModel>>) {\n const { state, actions, dispatch } = useLocalSearchFilterState(\n createSearchFilterInitialState(initialFormModel)\n );\n\n return (\n <SearchFilterContext state={state} actions={actions} dispatch={dispatch}>\n {children}\n </SearchFilterContext>\n );\n};\n","import styled from \"@emotion/styled\";\n\nexport const ChipSpacer = styled.div`\n padding: calc(var(--swui-metrics-spacing) / 2)\n calc(var(--swui-metrics-indent) / 2);\n`;\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { Row } from \"@stenajs-webui/core\";\nimport { ChipSpacer } from \"./ChipSpacer\";\nimport { FlatButton } from \"@stenajs-webui/elements\";\nimport { useSearchFilterDispatch } from \"../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../context/SearchFilterActionsContext\";\n\ninterface SearchFilterChipsProps {\n disableClearAllButton?: boolean;\n}\n\nexport const SearchFilterChips: React.FC<SearchFilterChipsProps> = ({\n children,\n disableClearAllButton = false,\n}) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const onClickClearAll = useCallback(\n () => dispatch(actions.clearFormModel()),\n [actions, dispatch]\n );\n\n return (\n <Row flexWrap={\"wrap\"}>\n {children}\n {!disableClearAllButton && (\n <ChipSpacer>\n <FlatButton\n size={\"small\"}\n label={\"Clear all\"}\n onClick={onClickClearAll}\n />\n </ChipSpacer>\n )}\n </Row>\n );\n};\n","import * as React from \"react\";\nimport { ChipSpacer } from \"./ChipSpacer\";\nimport { Chip } from \"@stenajs-webui/elements\";\nimport { useCallback } from \"react\";\nimport { useSearchFilterDispatch } from \"../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../context/SearchFilterActionsContext\";\n\ninterface EmptyChipProps<TSectionKey extends string> {\n sectionId: TSectionKey;\n label: string;\n}\n\nexport const EmptyChip = function EmptyChip<TSectionKey extends string>({\n label,\n sectionId,\n}: EmptyChipProps<TSectionKey>) {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const onClickLabel = useCallback(() => {\n dispatch(actions.clearExpandedSections());\n dispatch(actions.expandSection(sectionId));\n dispatch(actions.openFilters());\n }, [actions, dispatch, sectionId]);\n\n return (\n <ChipSpacer>\n <Chip label={label} variant={\"secondary\"} onClick={onClickLabel} />\n </ChipSpacer>\n );\n};\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { ChipSpacer } from \"./ChipSpacer\";\nimport { Chip } from \"@stenajs-webui/elements\";\nimport { useSearchFilterDispatch } from \"../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../context/SearchFilterActionsContext\";\nimport { SearchFilterSectionOnClickRemoveOnChip } from \"../../config/SearchFilterConfig\";\n\ninterface SearchFilterChipProps<TFormModel, TSectionKey> {\n sectionId: TSectionKey;\n label: string;\n value: string;\n onClickRemove?: SearchFilterSectionOnClickRemoveOnChip<TFormModel>;\n}\n\nexport const SearchFilterChip = function SearchFilterChip<\n TFormModel,\n TSectionKey extends string\n>({\n sectionId,\n label,\n value,\n onClickRemove,\n}: SearchFilterChipProps<TFormModel, TSectionKey>) {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const setFormModelFields = useCallback(\n (fields: Partial<TFormModel>) =>\n dispatch(actions.setFormModelFields(fields)),\n [dispatch, actions]\n );\n\n const onClickRemoveHandler = useCallback(() => {\n onClickRemove?.({ value, setFormModelFields });\n }, [onClickRemove, setFormModelFields, value]);\n\n const onClickLabel = useCallback(() => {\n dispatch(actions.clearExpandedSections());\n dispatch(actions.expandSection(sectionId));\n dispatch(actions.openFilters());\n }, [actions, dispatch, sectionId]);\n\n return (\n <ChipSpacer>\n <Chip\n label={label ?? sectionId}\n onClick={onClickLabel}\n onClickRemove={onClickRemove ? onClickRemoveHandler : undefined}\n />\n </ChipSpacer>\n );\n};\n","import * as React from \"react\";\nimport {\n SearchFilterSectionChipModel,\n SearchFilterSectionOnClickRemoveOnChip,\n} from \"../../config/SearchFilterConfig\";\nimport { EmptyChip } from \"./EmptyChip\";\nimport { SearchFilterChip } from \"./SearchFilterChip\";\n\nexport interface SectionChipsProps<TFormModel, TSectionKey extends string> {\n sectionId: TSectionKey;\n chips?: Array<SearchFilterSectionChipModel>;\n emptyChipLabel?: string;\n onClickRemoveOnChip?: SearchFilterSectionOnClickRemoveOnChip<TFormModel>;\n}\n\nexport const SectionChips = function SectionChips<\n TFormModel,\n TSectionKey extends string\n>({\n sectionId,\n chips,\n emptyChipLabel,\n onClickRemoveOnChip,\n}: SectionChipsProps<TFormModel, TSectionKey>) {\n if (!chips?.length) {\n if (!emptyChipLabel) {\n return null;\n }\n return <EmptyChip sectionId={sectionId} label={emptyChipLabel} />;\n }\n\n return (\n <>\n {chips.map(({ label, value }) => (\n <SearchFilterChip\n key={value}\n label={label ?? sectionId}\n sectionId={sectionId}\n onClickRemove={onClickRemoveOnChip}\n value={value}\n />\n ))}\n </>\n );\n};\n","import { BooleanRecord, BooleanRecordOptions } from \"./BooleanRecordTypes\";\nimport {\n SearchFilterSectionChipModel,\n SearchFilterSectionOnClickRemoveOnChip,\n} from \"../../config/SearchFilterConfig\";\nimport { PickByValue, truthyKeysAsList } from \"@stenajs-webui/core\";\nimport { SectionChipsProps } from \"../../features/chips/SectionChips\";\n\nexport const createChipsPropsForBooleanRecord = <\n TFormModel,\n TSectionKey extends string,\n TField extends keyof PickByValue<TFormModel, BooleanRecord>\n>(\n formModel: TFormModel,\n fieldName: TField,\n options?: BooleanRecordOptions\n): Pick<\n SectionChipsProps<TFormModel, TSectionKey>,\n \"chips\" | \"onClickRemoveOnChip\"\n> => ({\n chips: createChipsForBooleanRecord(formModel[fieldName], options),\n onClickRemoveOnChip: createOnClickRemoveOnChipForBooleanRecord(\n formModel,\n fieldName\n ),\n});\n\nexport const createChipsForBooleanRecord = (\n booleanRecord: BooleanRecord,\n options?: BooleanRecordOptions\n): Array<SearchFilterSectionChipModel> =>\n truthyKeysAsList(booleanRecord).map((key) => {\n const option = options?.find((o) => o.value === key);\n return { value: key, label: option?.label ?? key };\n });\n\nexport const createOnClickRemoveOnChipForBooleanRecord = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, BooleanRecord>\n>(\n formModel: TFormModel,\n fieldName: TField\n): SearchFilterSectionOnClickRemoveOnChip<TFormModel> => {\n return ({ setFormModelFields, value }) => {\n const newRecord: BooleanRecord = { ...formModel[fieldName] };\n newRecord[value] = false;\n setFormModelFields(({\n [fieldName]: newRecord,\n } as unknown) as Partial<TFormModel>);\n };\n};\n","import * as React from \"react\";\nimport {\n SearchFilterSection,\n SearchFilterSectionProps,\n} from \"../../../components/SearchFilterSection\";\nimport { Column, Text } from \"@stenajs-webui/core\";\nimport { CollapsibleClickableContent } from \"@stenajs-webui/panels\";\nimport { Checkbox, ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { BooleanRecord, BooleanRecordOptions } from \"../BooleanRecordTypes\";\n\nexport interface SimpleCheckboxSectionProps<TSectionKey extends string>\n extends SearchFilterSectionProps<TSectionKey>,\n ValueAndOnValueChangeProps<BooleanRecord> {\n options?: BooleanRecordOptions;\n}\n\nexport const SimpleCheckboxListSection = <TSectionKey extends string>({\n options,\n value,\n onValueChange,\n ...sectionProps\n}: SimpleCheckboxSectionProps<TSectionKey>): React.ReactElement => (\n <SearchFilterSection disableContentPadding {...sectionProps}>\n <Column maxHeight={\"400px\"} overflowY={\"auto\"} flex={1}>\n {options?.map((d) => (\n <CollapsibleClickableContent\n key={d.value}\n onClick={() => {\n if (value && onValueChange) {\n const sel = !value[d.value];\n onValueChange({\n ...value,\n [d.value]: sel,\n });\n }\n }}\n contentLeft={<Checkbox tabIndex={-1} value={value?.[d.value]} />}\n >\n <Text>{d.label}</Text>\n </CollapsibleClickableContent>\n ))}\n </Column>\n </SearchFilterSection>\n);\n","import * as React from \"react\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport {\n SearchFilterSection,\n SearchFilterSectionProps,\n} from \"../../../components/SearchFilterSection\";\nimport { ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { BooleanRecord, BooleanRecordOptions } from \"../BooleanRecordTypes\";\nimport { ChipMultiSelect, ChipMultiSelectValue } from \"@stenajs-webui/select\";\nimport { truthyKeysAsList } from \"@stenajs-webui/core\";\n\ninterface ChipMultiSelectSectionProps<TSectionKey extends string>\n extends SearchFilterSectionProps<TSectionKey>,\n ValueAndOnValueChangeProps<BooleanRecord> {\n options?: BooleanRecordOptions;\n}\n\nexport const ChipMultiSelectSection = <TSectionKey extends string>({\n options,\n value,\n onValueChange,\n ...sectionProps\n}: ChipMultiSelectSectionProps<TSectionKey>): React.ReactElement => {\n const [text, setText] = useState<string>(\"\");\n\n const listValue = useMemo<Array<ChipMultiSelectValue>>(\n () =>\n value\n ? truthyKeysAsList(value).map<ChipMultiSelectValue>((key) => {\n const option = options?.find((o) => o.value === key);\n return { value: key, label: option?.label ?? key };\n })\n : [],\n [options, value]\n );\n\n const filteredOptions = useMemo(() => {\n return options?.filter(\n (p) =>\n p.value.toLocaleLowerCase().indexOf(text.toLocaleLowerCase()) > -1 ||\n p.label.toLocaleLowerCase().indexOf(text.toLocaleLowerCase()) > -1\n );\n }, [options, text]);\n\n const onValueChangeInternal = useCallback(\n (value: Array<ChipMultiSelectValue>) => {\n onValueChange?.(createBooleanRecordFromValue(value));\n },\n [onValueChange]\n );\n\n return (\n <SearchFilterSection {...sectionProps}>\n <ChipMultiSelect\n options={filteredOptions}\n value={listValue}\n onValueChange={onValueChangeInternal}\n inputValue={text}\n onInputChange={setText}\n />\n </SearchFilterSection>\n );\n};\n\nconst createBooleanRecordFromValue = (\n value: Array<ChipMultiSelectValue>\n): BooleanRecord => {\n return value.reduce<BooleanRecord>((sum, item) => {\n sum[item.value] = true;\n return sum;\n }, {});\n};\n","import { DateStringRange } from \"@stenajs-webui/calendar\";\nimport {\n SearchFilterSectionChipModel,\n SearchFilterSectionOnClickRemoveOnChip,\n} from \"../../config/SearchFilterConfig\";\nimport { PickByValue } from \"@stenajs-webui/core\";\nimport { SectionChipsProps } from \"../../features/chips/SectionChips\";\n\nexport const createChipsPropsForDateRange = <\n TFormModel,\n TSectionKey extends string,\n TField extends keyof PickByValue<TFormModel, string | undefined>\n>(\n formModel: TFormModel,\n startDateFieldName: TField,\n endDateFieldName: TField\n): Pick<\n SectionChipsProps<TFormModel, TSectionKey>,\n \"chips\" | \"onClickRemoveOnChip\"\n> => ({\n chips: createChipsForDateRange(\n formModel[startDateFieldName],\n formModel[endDateFieldName]\n ),\n onClickRemoveOnChip: createOnClickRemoveOnChipForDateRange(\n startDateFieldName,\n endDateFieldName\n ),\n});\n\nexport const createChipsForDateRange = (\n startDate: string | undefined,\n endDate: string | undefined\n): Array<SearchFilterSectionChipModel> => {\n if (!startDate && !endDate) {\n return [];\n }\n return [\n { value: \"dateRange\", label: `${startDate ?? \"\"} - ${endDate ?? \"\"}` },\n ];\n};\n\nexport const createOnClickRemoveOnChipForDateRange = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, DateStringRange>\n>(\n startDateFieldName: TField,\n endDateFieldName: TField\n): SearchFilterSectionOnClickRemoveOnChip<TFormModel> => {\n return ({ setFormModelFields }) => {\n setFormModelFields(({\n [startDateFieldName]: undefined,\n [endDateFieldName]: undefined,\n } as unknown) as Partial<TFormModel>);\n };\n};\n","import { PickByValue } from \"@stenajs-webui/core\";\nimport { DateRangeCalendarSectionProps } from \"./components/DateRangeCalendarSection\";\n\nexport const createDateRangeSectionProps = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, string | undefined>,\n TSectionKey extends string\n>(\n formModel: TFormModel,\n startDateFieldName: TField,\n endDateFieldName: TField\n): Pick<\n DateRangeCalendarSectionProps<TFormModel, TSectionKey>,\n \"value\" | \"onValueChange\"\n> => ({\n value: {\n startDate: formModel[startDateFieldName],\n endDate: formModel[endDateFieldName],\n },\n onValueChange: (value, { dispatch, actions }) => {\n const fields: Partial<TFormModel> = {\n [startDateFieldName]: value.startDate,\n [endDateFieldName]: value.endDate,\n } as any;\n dispatch(actions.setFormModelFields(fields));\n },\n});\n","import {\n DateRange,\n DateRangeCalendar,\n DateRangeCalendarProps,\n DateRangeFocusedInput,\n dateRangeToStrings,\n DateStringRange,\n stringsToDateRange,\n} from \"@stenajs-webui/calendar\";\nimport * as React from \"react\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { Box } from \"@stenajs-webui/core\";\nimport {\n SearchFilterSection,\n SearchFilterSectionProps,\n} from \"../../../components/SearchFilterSection\";\nimport {\n SearchFilterActions,\n SearchFilterDispatch,\n} from \"../../../redux/SearchFilterRedux\";\nimport { useSearchFilterDispatch } from \"../../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../../context/SearchFilterActionsContext\";\n\nexport interface DateRangeCalendarSectionProps<\n TFormModel,\n TSectionKey extends string\n> extends SearchFilterSectionProps<TSectionKey>,\n Omit<\n DateRangeCalendarProps<{}>,\n \"value\" | \"onValueChange\" | \"focusedInput\" | \"setFocusedInput\"\n > {\n value: DateStringRange;\n onValueChange: (\n value: DateStringRange,\n options: SetDateOptions<TFormModel, TSectionKey>\n ) => void;\n}\n\nexport interface SetDateOptions<TFormModel, TSectionKey extends string> {\n dispatch: SearchFilterDispatch<TFormModel>;\n actions: SearchFilterActions<TFormModel, TSectionKey>;\n}\n\nexport const DateRangeCalendarSection = <\n TFormModel,\n TSectionKey extends string\n>({\n value,\n onValueChange,\n sectionId,\n ...dateRangeCalendarProps\n}: DateRangeCalendarSectionProps<TFormModel, TSectionKey>) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions<TFormModel, TSectionKey>();\n\n const options = useMemo<SetDateOptions<TFormModel, TSectionKey>>(\n () => ({ dispatch, actions }),\n [actions, dispatch]\n );\n const [focusedInput, setFocusedInput] = useState<DateRangeFocusedInput>(\n \"startDate\"\n );\n\n const dateRangeValue = useMemo(() => stringsToDateRange(value), [value]);\n\n const onValueChangeHandler = useCallback(\n (value: DateRange) => {\n onValueChange(dateRangeToStrings(value), options);\n },\n [onValueChange, options]\n );\n\n return (\n <SearchFilterSection sectionId={sectionId}>\n <Box flex={1} alignItems={\"center\"}>\n <Box background={\"white\"} indent>\n <DateRangeCalendar\n setFocusedInput={setFocusedInput}\n focusedInput={focusedInput}\n value={dateRangeValue}\n onValueChange={onValueChangeHandler}\n {...dateRangeCalendarProps}\n />\n </Box>\n </Box>\n </SearchFilterSection>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAWa,uBAAuB,GAA2C,UAAC,EAE/E;QADC,cAAc,oBAAA;IAEd,QACE,oBAAC,GAAG,IACF,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,eAAe,EAC/B,UAAU,EAAE,QAAQ,EACpB,MAAM,EAAE,CAAC;QAET,oBAAC,GAAG,IAAC,UAAU,EAAE,QAAQ;YACvB,oBAAC,IAAI,IACH,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,QAAQ,CAAC,qBAAqB,CAAC,EACtC,IAAI,EAAE,EAAE,GACR;YACF,oBAAC,MAAM,OAAG;YACV,oBAAC,OAAO,IAAC,OAAO,EAAE,IAAI,cAAmB,CACrC;QACN,oBAAC,UAAU,IAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,GAAI,CACtD,EACN;AACJ;;IC9Ba,wBAAwB,GAAG,aAAa,CAElD,IAA8C,EAAE;IAEtC,oBAAoB,GAAG;IAGlC,IAAM,CAAC,GAAG,UAAU,CAAC,wBAAwB,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC,EAAE;QACN,MAAM,IAAI,KAAK,CACb,oFAAoF,CACrF,CAAC;KACH;IACD,OAAO,CAAkC,CAAC;AAC5C;;ICda,2BAA2B,GAAG,aAAa,CAErD,IAAiD,EAAE;IAEzC,uBAAuB,GAAG;IACrC,IAAM,CAAC,GAAG,UAAU,CAAC,2BAA2B,CAAC,CAAC;IAClD,IAAI,CAAC,CAAC,EAAE;QACN,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;KAC5D;IACD,OAAO,CAAC,CAAC;AACX;;ICVa,0BAA0B,GAAG,aAAa,CAEpD,IAAqD,EAAE;IAE7C,sBAAsB,GAAG;IAIpC,IAAM,CAAC,GAAG,UAAU,CAAC,0BAA0B,CAAC,CAAC;IACjD,IAAI,CAAC,CAAC,EAAE;QACN,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;KAC3D;IACD,OAAO,CAAiD,CAAC;AAC3D;;ICHa,kBAAkB,GAAsC,UAAC,EAGrE;IAFC,IAAA,QAAQ,cAAA,EACL,WAAW,cAFsD,YAGrE,CADe;IAGA,IAAA,IAAI,GACd,oBAAoB,EAAE,cADR,CACS;IAC3B,IAAM,QAAQ,GAAG,uBAAuB,EAAE,CAAC;IAC3C,IAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;IAEzC,IAAM,WAAW,GAAG,WAAW,CAAC;QAC9B,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;KAClC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAExB,QACE,oBAAC,MAAM,aACL,UAAU,EAAE,QAAQ,CAAC,oBAAoB,CAAC,EAC1C,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,IAAI,EACZ,cAAc,EAAE,WAAW,IACvB,WAAW;QAEf,oBAAC,MAAM;YACL,oBAAC,uBAAuB,IAAC,cAAc,EAAE,WAAW,GAAI;YACvD,QAAQ,CACF,CACF,EACT;AACJ;;IC9Ba,kBAAkB,GAA6C,UAAC,EAE5E;QADC,aAAiB,EAAjB,KAAK,mBAAG,SAAS,KAAA;IAEjB,IAAM,QAAQ,GAAG,uBAAuB,EAAE,CAAC;IAC3C,IAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;IAEzC,IAAM,aAAa,GAAG,WAAW,CAAC;QAChC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;KACjC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAExB,QACE,oBAAC,eAAe,IACd,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,UAAU,EACpB,OAAO,EAAE,aAAa,GACtB,EACF;AACJ;;ICPa,mBAAmB,GAAG,SAAS,mBAAmB,CAE7D,EAUyD;;QATzD,SAAS,eAAA,EACT,KAAK,WAAA,EACL,WAAW,iBAAA,EACX,YAAY,kBAAA,EACZ,OAAO,aAAA,EACP,KAAK,WAAA,EACL,OAAO,aAAA,EACP,qBAAqB,2BAAA,EACrB,QAAQ,cAAA;IAER,IAAM,KAAK,GAAG,oBAAoB,EAAE,CAAC;IACrC,IAAM,QAAQ,GAAG,uBAAuB,EAAE,CAAC;IAC3C,IAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;IAEzC,IAAM,QAAQ,GAAG,MAAA,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,mCAAI,KAAK,CAAC;IAEnE,IAAM,YAAY,GAAG,WAAW,CAAC;QAC/B,QAAQ,CAAC,OAAO,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;KAC5D,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAE7C,IAAM,WAAW,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,+BAA+B,CAAC,SAAS,CAAC,CAAC;IAExE,QACE,oBAAC,WAAW,IACV,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,CAAC,QAAQ,EACpB,OAAO,EAAE,YAAY,EACrB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,IAEzB,OAAO,IACN,oBAAC,kBAAkB;QACjB,oBAAC,GAAG,IAAC,OAAO,QAAC,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC5C,oBAAC,OAAO,IAAC,IAAI,EAAE,OAAO,GAAI,CACtB,CACa,IACnB,KAAK,IACP,oBAAC,MAAM,IACL,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,KAAK,EACX,YAAY,EACV,OAAO,GAAG,oBAAC,UAAU,IAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAI,GAAG,IAAI,GAEnE,IACA,qBAAqB,IACvB,QAAQ,KAER,oBAAC,kBAAkB,QAAE,QAAQ,CAAsB,CACpD,CACW,EACd;AACJ,EAAE;IAEW,+BAA+B,GAAG,UAAC,QAAgB;IAC9D,OAAA,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAA/B;;IC5EW,wBAAwB,GAAG,aAAa,CAAU,IAAe,EAAE;IAEnE,oBAAoB,GAAG;IAClC,IAAM,CAAC,GAAG,UAAU,CAAC,wBAAwB,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC,EAAE;QACN,MAAM,IAAI,KAAK,CACb,oFAAoF,CACrF,CAAC;KACH;IACD,OAAO,CAAe,CAAC;AACzB;;ICMa,mBAAmB,GAAG,SAAS,iBAAiB,CAG3D,EAKmE;QAJnE,KAAK,WAAA,EACL,QAAQ,cAAA,EACR,OAAO,aAAA,EACP,QAAQ,cAAA;IAER,QACE,oBAAC,2BAA2B,CAAC,QAAQ,IACnC,KAAK,EAAE,QAAyC;QAEhD,oBAAC,0BAA0B,CAAC,QAAQ,IAAC,KAAK,EAAE,OAAO;YACjD,oBAAC,wBAAwB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK;gBAC7C,oBAAC,wBAAwB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,CAAC,SAAS,IACtD,QAAQ,CACyB,CACF,CACA,CACD,EACvC;AACJ;;ICLa,8BAA8B,GAAG,UAC5C,gBAA4B,IACM,QAAC;IACnC,QAAQ,EAAE;QACR,IAAI,EAAE,KAAK;KACZ;IACD,SAAS,EAAE,gBAAgB;IAC3B,gBAAgB,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;CACjC,KAAE;IAEU,yBAAyB,GAAG,UACvC,SAAiB,EACjB,YAA2C;IAE3C,OAAA,eAAe,CAAC;QACd,gBAAgB,EAAE,aAAa,CAC7B,eAAe,CAAC,SAAS,EAAE,kBAAkB,CAAC,EAC9C,sBAAsB,CAAU,YAAY,CAAC,gBAAgB,CAAC,CAC/D;QACD,SAAS,EAAE,aAAa,CACtB,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC,EACvC,mBAAmB,CAAa,YAAY,CAAC,SAAS,CAAC,CACxD;QACD,QAAQ,EAAE,aAAa,CACrB,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,EACtC,mBAAmB,CAAuB,YAAY,CAAC,QAAQ,CAAC,CACjE;KACF,CAAC;AAbF,EAaG;IAkBQ,yBAAyB,GAAG,UAIvC,SAAiB,EACjB,gBAA4B,IACqB,QAAC;IAClD,WAAW,EAAE;QACX,OAAA,mBAAmB,CACjB,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,EACtC,mBAAmB,EAAwB,CAAC,eAAe,CAAC;YAC1D,IAAI,EAAE,IAAI;SACX,CAAC,CACH;KAAA;IACH,YAAY,EAAE;QACZ,OAAA,mBAAmB,CACjB,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,EACtC,mBAAmB,EAAwB,CAAC,eAAe,CAAC;YAC1D,IAAI,EAAE,KAAK;SACZ,CAAC,CACH;KAAA;IACH,kBAAkB,EAAE,UAAC,MAA2B;QAC9C,OAAA,mBAAmB,CACjB,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC,EACvC,mBAAmB,EAAc,CAAC,eAAe,CAAC,MAAM,CAAC,CAC1D;KAAA;IACH,cAAc,EAAE;QACd,OAAA,mBAAmB,CACjB,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC,EACvC,mBAAmB,EAAc,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAC9D;KAAA;IACH,aAAa,EAAE,UAAC,OAAoB;QAClC,OAAA,mBAAmB,CACjB,eAAe,CAAC,SAAS,EAAE,kBAAkB,CAAC,EAC9C,sBAAsB,EAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAC1D;KAAA;IACH,eAAe,EAAE,UAAC,OAAoB;QACpC,OAAA,mBAAmB,CACjB,eAAe,CAAC,SAAS,EAAE,kBAAkB,CAAC,EAC9C,sBAAsB,EAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAC3D;KAAA;IACH,kBAAkB,EAAE,UAAC,OAAoB,EAAE,QAAiB;QAC1D,OAAA,mBAAmB,CACjB,eAAe,CAAC,SAAS,EAAE,kBAAkB,CAAC,EAC9C,sBAAsB,EAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAC9D;KAAA;IACH,qBAAqB,EAAE;QACrB,OAAA,mBAAmB,CACjB,eAAe,CAAC,SAAS,EAAE,kBAAkB,CAAC,EAC9C,sBAAsB,EAAW,CAAC,cAAc,EAAE,CACnD;KAAA;CACJ,KAAE;IAEU,eAAe,GAAG,UAC7B,SAAiB,EACjB,eAAiD,IACtC,OAAG,SAAS,SAAI,eAAiB;;ICjIjC,yBAAyB,GAAG,UAIvC,YAA2C;IAEpC,IAAA,OAAO,GAAI,QAAQ,CAAC;QACzB,OAAA,yBAAyB,CAAa,OAAO,EAAE,YAAY,CAAC;KAAA,CAC7D,GAFa,CAEZ;IAEK,IAAA,OAAO,GAAI,QAAQ,CAAC;QACzB,OAAA,yBAAyB,CACvB,OAAO,EACP,YAAY,CAAC,SAAS,CACvB;KAAA,CACF,GALa,CAKZ;IAEI,IAAA,KAAoB,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,EAApD,KAAK,QAAA,EAAE,QAAQ,QAAqC,CAAC;IAE5D,OAAO;QACL,OAAO,SAAA;QACP,KAAK,OAAA;QACL,QAAQ,UAAA;KACT,CAAC;AACJ;;ICrBa,6BAA6B,GAAG,SAAS,sBAAsB,CAE1E,EAG2D;QAF3D,gBAAgB,sBAAA,EAChB,QAAQ,cAAA;IAEF,IAAA,KAA+B,yBAAyB,CAC5D,8BAA8B,CAAC,gBAAgB,CAAC,CACjD,EAFO,KAAK,WAAA,EAAE,OAAO,aAAA,EAAE,QAAQ,cAE/B,CAAC;IAEF,QACE,oBAAC,mBAAmB,IAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,IACpE,QAAQ,CACW,EACtB;AACJ;;ACvBO,IAAM,UAAU,GAAG,MAAM,CAAC,GAAG,oKAAA,iGAGnC,IAAA,CAAC;;;ICOW,iBAAiB,GAAqC,UAAC,EAGnE;QAFC,QAAQ,cAAA,EACR,6BAA6B,EAA7B,qBAAqB,mBAAG,KAAK,KAAA;IAE7B,IAAM,QAAQ,GAAG,uBAAuB,EAAE,CAAC;IAC3C,IAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;IAEzC,IAAM,eAAe,GAAG,WAAW,CACjC,cAAM,OAAA,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,GAAA,EACxC,CAAC,OAAO,EAAE,QAAQ,CAAC,CACpB,CAAC;IAEF,QACE,oBAAC,GAAG,IAAC,QAAQ,EAAE,MAAM;QAClB,QAAQ;QACR,CAAC,qBAAqB,KACrB,oBAAC,UAAU;YACT,oBAAC,UAAU,IACT,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,eAAe,GACxB,CACS,CACd,CACG,EACN;AACJ;;IC1Ba,SAAS,GAAG,SAAS,SAAS,CAA6B,EAG1C;QAF5B,KAAK,WAAA,EACL,SAAS,eAAA;IAET,IAAM,QAAQ,GAAG,uBAAuB,EAAE,CAAC;IAC3C,IAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;IAEzC,IAAM,YAAY,GAAG,WAAW,CAAC;QAC/B,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAC1C,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;QAC3C,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;KACjC,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAEnC,QACE,oBAAC,UAAU;QACT,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,GAAI,CACxD,EACb;AACJ;;ICfa,gBAAgB,GAAG,SAAS,gBAAgB,CAGvD,EAK+C;QAJ/C,SAAS,eAAA,EACT,KAAK,WAAA,EACL,KAAK,WAAA,EACL,aAAa,mBAAA;IAEb,IAAM,QAAQ,GAAG,uBAAuB,EAAE,CAAC;IAC3C,IAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;IAEzC,IAAM,kBAAkB,GAAG,WAAW,CACpC,UAAC,MAA2B;QAC1B,OAAA,QAAQ,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;KAAA,EAC9C,CAAC,QAAQ,EAAE,OAAO,CAAC,CACpB,CAAC;IAEF,IAAM,oBAAoB,GAAG,WAAW,CAAC;QACvC,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAG,EAAE,KAAK,OAAA,EAAE,kBAAkB,oBAAA,EAAE,CAAC,CAAC;KAChD,EAAE,CAAC,aAAa,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC;IAE/C,IAAM,YAAY,GAAG,WAAW,CAAC;QAC/B,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAC1C,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;QAC3C,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;KACjC,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAEnC,QACE,oBAAC,UAAU;QACT,oBAAC,IAAI,IACH,KAAK,EAAE,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,SAAS,EACzB,OAAO,EAAE,YAAY,EACrB,aAAa,EAAE,aAAa,GAAG,oBAAoB,GAAG,SAAS,GAC/D,CACS,EACb;AACJ;;ICrCa,YAAY,GAAG,SAAS,YAAY,CAG/C,EAK2C;QAJ3C,SAAS,eAAA,EACT,KAAK,WAAA,EACL,cAAc,oBAAA,EACd,mBAAmB,yBAAA;IAEnB,IAAI,EAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,CAAA,EAAE;QAClB,IAAI,CAAC,cAAc,EAAE;YACnB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,oBAAC,SAAS,IAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,GAAI,CAAC;KACnE;IAED,QACE,0CACG,KAAK,CAAC,GAAG,CAAC,UAAC,EAAgB;YAAd,KAAK,WAAA,EAAE,KAAK,WAAA;QAAO,QAC/B,oBAAC,gBAAgB,IACf,GAAG,EAAE,KAAK,EACV,KAAK,EAAE,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,SAAS,EACzB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,mBAAmB,EAClC,KAAK,EAAE,KAAK,GACZ;KACH,CAAC,CACD,EACH;AACJ;;ICpCa,gCAAgC,GAAG,UAK9C,SAAqB,EACrB,SAAiB,EACjB,OAA8B,IAI3B,QAAC;IACJ,KAAK,EAAE,2BAA2B,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IACjE,mBAAmB,EAAE,yCAAyC,CAC5D,SAAS,EACT,SAAS,CACV;CACF,KAAE;IAEU,2BAA2B,GAAG,UACzC,aAA4B,EAC5B,OAA8B;IAE9B,OAAA,gBAAgB,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,UAAC,GAAG;;QACtC,IAAM,MAAM,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,KAAK,KAAK,GAAG,GAAA,CAAC,CAAC;QACrD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,mCAAI,GAAG,EAAE,CAAC;KACpD,CAAC;AAHF,EAGG;IAEQ,yCAAyC,GAAG,UAIvD,SAAqB,EACrB,SAAiB;IAEjB,OAAO,UAAC,EAA6B;;YAA3B,kBAAkB,wBAAA,EAAE,KAAK,WAAA;QACjC,IAAM,SAAS,gBAAuB,SAAS,CAAC,SAAS,CAAC,CAAE,CAAC;QAC7D,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;QACzB,kBAAkB,EAAE;YAClB,GAAC,SAAS,IAAG,SAAS;cACY,EAAC,CAAC;KACvC,CAAC;AACJ;;IClCa,yBAAyB,GAAG,UAA6B,EAK5B;IAJxC,IAAA,OAAO,aAAA,EACP,KAAK,WAAA,EACL,aAAa,mBAAA,EACV,YAAY,cAJqD,qCAKrE,CADgB;IACkD,QACjE,oBAAC,mBAAmB,aAAC,qBAAqB,UAAK,YAAY;QACzD,oBAAC,MAAM,IAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IACnD,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,CAAC,UAAC,CAAC,IAAK,QACnB,oBAAC,2BAA2B,IAC1B,GAAG,EAAE,CAAC,CAAC,KAAK,EACZ,OAAO,EAAE;;gBACP,IAAI,KAAK,IAAI,aAAa,EAAE;oBAC1B,IAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;oBAC5B,aAAa,uBACR,KAAK,gBACP,CAAC,CAAC,KAAK,IAAG,GAAG,OACd,CAAC;iBACJ;aACF,EACD,WAAW,EAAE,oBAAC,QAAQ,IAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,CAAC,CAAC,KAAK,CAAC,GAAI;YAEhE,oBAAC,IAAI,QAAE,CAAC,CAAC,KAAK,CAAQ,CACM,IAC/B,CAAC,CACK,CACW,EACvB;;;IC1BY,sBAAsB,GAAG,UAA6B,EAKxB;IAJzC,IAAA,OAAO,aAAA,EACP,KAAK,WAAA,EACL,aAAa,mBAAA,EACV,YAAY,cAJkD,qCAKlE,CADgB;IAET,IAAA,KAAkB,QAAQ,CAAS,EAAE,CAAC,EAArC,IAAI,QAAA,EAAE,OAAO,QAAwB,CAAC;IAE7C,IAAM,SAAS,GAAG,OAAO,CACvB;QACE,OAAA,KAAK;cACD,gBAAgB,CAAC,KAAK,CAAC,CAAC,GAAG,CAAuB,UAAC,GAAG;;gBACpD,IAAM,MAAM,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,KAAK,KAAK,GAAG,GAAA,CAAC,CAAC;gBACrD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,mCAAI,GAAG,EAAE,CAAC;aACpD,CAAC;cACF,EAAE;KAAA,EACR,CAAC,OAAO,EAAE,KAAK,CAAC,CACjB,CAAC;IAEF,IAAM,eAAe,GAAG,OAAO,CAAC;QAC9B,OAAO,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CACpB,UAAC,CAAC;YACA,OAAA,CAAC,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,CAAC;gBAClE,CAAC,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,CAAC;SAAA,CACrE,CAAC;KACH,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAEpB,IAAM,qBAAqB,GAAG,WAAW,CACvC,UAAC,KAAkC;QACjC,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAG,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAC;KACtD,EACD,CAAC,aAAa,CAAC,CAChB,CAAC;IAEF,QACE,oBAAC,mBAAmB,eAAK,YAAY;QACnC,oBAAC,eAAe,IACd,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,SAAS,EAChB,aAAa,EAAE,qBAAqB,EACpC,UAAU,EAAE,IAAI,EAChB,aAAa,EAAE,OAAO,GACtB,CACkB,EACtB;AACJ,EAAE;AAEF,IAAM,4BAA4B,GAAG,UACnC,KAAkC;IAElC,OAAO,KAAK,CAAC,MAAM,CAAgB,UAAC,GAAG,EAAE,IAAI;QAC3C,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QACvB,OAAO,GAAG,CAAC;KACZ,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;;IC/DY,4BAA4B,GAAG,UAK1C,SAAqB,EACrB,kBAA0B,EAC1B,gBAAwB,IAIrB,QAAC;IACJ,KAAK,EAAE,uBAAuB,CAC5B,SAAS,CAAC,kBAAkB,CAAC,EAC7B,SAAS,CAAC,gBAAgB,CAAC,CAC5B;IACD,mBAAmB,EAAE,qCAAqC,CACxD,kBAAkB,EAClB,gBAAgB,CACjB;CACF,KAAE;IAEU,uBAAuB,GAAG,UACrC,SAA6B,EAC7B,OAA2B;IAE3B,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE;QAC1B,OAAO,EAAE,CAAC;KACX;IACD,OAAO;QACL,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,CAAG,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,EAAE,aAAM,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAE,EAAE;KACvE,CAAC;AACJ,EAAE;IAEW,qCAAqC,GAAG,UAInD,kBAA0B,EAC1B,gBAAwB;IAExB,OAAO,UAAC,EAAsB;;YAApB,kBAAkB,wBAAA;QAC1B,kBAAkB,EAAE;YAClB,GAAC,kBAAkB,IAAG,SAAS;YAC/B,GAAC,gBAAgB,IAAG,SAAS;cACK,EAAC,CAAC;KACvC,CAAC;AACJ;;ICpDa,2BAA2B,GAAG,UAKzC,SAAqB,EACrB,kBAA0B,EAC1B,gBAAwB,IAIrB,QAAC;IACJ,KAAK,EAAE;QACL,SAAS,EAAE,SAAS,CAAC,kBAAkB,CAAC;QACxC,OAAO,EAAE,SAAS,CAAC,gBAAgB,CAAC;KACrC;IACD,aAAa,EAAE,UAAC,KAAK,EAAE,EAAqB;;YAAnB,QAAQ,cAAA,EAAE,OAAO,aAAA;QACxC,IAAM,MAAM,IAAwB;YAClC,GAAC,kBAAkB,IAAG,KAAK,CAAC,SAAS;YACrC,GAAC,gBAAgB,IAAG,KAAK,CAAC,OAAO;cAC3B,CAAA,CAAC;QACT,QAAQ,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;KAC9C;CACF;;ICiBY,wBAAwB,GAAG,UAGtC,EAKuD;IAJvD,IAAA,KAAK,WAAA,EACL,aAAa,mBAAA,EACb,SAAS,eAAA,EACN,sBAAsB,cAJzB,uCAKD,CAD0B;IAEzB,IAAM,QAAQ,GAAG,uBAAuB,EAAE,CAAC;IAC3C,IAAM,OAAO,GAAG,sBAAsB,EAA2B,CAAC;IAElE,IAAM,OAAO,GAAG,OAAO,CACrB,cAAM,QAAC,EAAE,QAAQ,UAAA,EAAE,OAAO,SAAA,EAAE,IAAC,EAC7B,CAAC,OAAO,EAAE,QAAQ,CAAC,CACpB,CAAC;IACI,IAAA,KAAkC,QAAQ,CAC9C,WAAW,CACZ,EAFM,YAAY,QAAA,EAAE,eAAe,QAEnC,CAAC;IAEF,IAAM,cAAc,GAAG,OAAO,CAAC,cAAM,OAAA,kBAAkB,CAAC,KAAK,CAAC,GAAA,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEzE,IAAM,oBAAoB,GAAG,WAAW,CACtC,UAAC,KAAgB;QACf,aAAa,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;KACnD,EACD,CAAC,aAAa,EAAE,OAAO,CAAC,CACzB,CAAC;IAEF,QACE,oBAAC,mBAAmB,IAAC,SAAS,EAAE,SAAS;QACvC,oBAAC,GAAG,IAAC,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ;YAChC,oBAAC,GAAG,IAAC,UAAU,EAAE,OAAO,EAAE,MAAM;gBAC9B,oBAAC,iBAAiB,aAChB,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,cAAc,EACrB,aAAa,EAAE,oBAAoB,IAC/B,sBAAsB,EAC1B,CACE,CACF,CACc,EACtB;AACJ;;;;"}
1
+ {"version":3,"file":"index.es.js","sources":["../src/features/search-filter/components/SearchFilterPanelHeader.tsx","../src/features/search-filter/context/SearchFilterStateContext.ts","../src/features/search-filter/context/SearchFilterDispatchContext.ts","../src/features/search-filter/context/SearchFilterActionsContext.ts","../src/features/search-filter/components/SearchFilterDrawer.tsx","../src/features/search-filter/components/SearchFilterButton.tsx","../src/features/search-filter/components/SearchFilterSection.tsx","../src/features/search-filter/context/SearchFilterModelContext.ts","../src/features/search-filter/components/context/SearchFilterContext.tsx","../src/features/search-filter/redux/SearchFilterRedux.ts","../src/features/search-filter/hooks/UseLocalSearchFilterState.ts","../src/features/search-filter/components/context/SearchFilterLocalStateContext.tsx","../src/features/search-filter/features/chips/ChipSpacer.tsx","../src/features/search-filter/features/chips/SearchFilterChips.tsx","../src/features/search-filter/features/chips/EmptyChip.tsx","../src/features/search-filter/features/chips/SearchFilterChip.tsx","../src/features/search-filter/features/chips/SectionChips.tsx","../src/features/search-filter/section-factories/boolean-record/BooleanRecordChips.ts","../src/features/search-filter/section-factories/boolean-record/components/SimpleCheckboxListSection.tsx","../src/features/search-filter/section-factories/boolean-record/components/ChipMultiSelectSection.tsx","../src/features/search-filter/section-factories/date-range/DateRangeChips.ts","../src/features/search-filter/section-factories/date-range/DateRangePropsFactory.ts","../src/features/search-filter/section-factories/date-range/components/DateRangeCalendarSection.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Heading, Indent, Row } from \"@stenajs-webui/core\";\nimport { FlatButton, Icon } from \"@stenajs-webui/elements\";\nimport { faTimes } from \"@fortawesome/free-solid-svg-icons/faTimes\";\nimport { faSlidersH } from \"@fortawesome/free-solid-svg-icons/faSlidersH\";\nimport { cssColor } from \"@stenajs-webui/theme\";\n\ninterface SearchFilterPanelHeaderProps {\n onRequestClose: () => void;\n}\n\nexport const SearchFilterPanelHeader: React.FC<SearchFilterPanelHeaderProps> = ({\n onRequestClose,\n}) => {\n return (\n <Row\n height={\"48px\"}\n justifyContent={\"space-between\"}\n alignItems={\"center\"}\n indent={2}\n >\n <Row alignItems={\"center\"}>\n <Icon\n icon={faSlidersH}\n color={cssColor(\"--lhds-color-ui-500\")}\n size={12}\n />\n <Indent />\n <Heading variant={\"h4\"}>Filters</Heading>\n </Row>\n <FlatButton leftIcon={faTimes} onClick={onRequestClose} />\n </Row>\n );\n};\n","import { createContext, useContext } from \"react\";\nimport { SearchFilterState } from \"../redux/SearchFilterRedux\";\n\nexport const SearchFilterStateContext = createContext<\n SearchFilterState<unknown>\n>((null as unknown) as SearchFilterState<unknown>);\n\nexport const useSearchFilterState = <\n TFormModel\n>(): SearchFilterState<TFormModel> => {\n const c = useContext(SearchFilterStateContext);\n if (!c) {\n throw new Error(\n \"Missing search filter context, wrap components with SearchFilterContext component.\"\n );\n }\n return c as SearchFilterState<TFormModel>;\n};\n","import { createContext, useContext } from \"react\";\nimport { SearchFilterDispatch } from \"../redux/SearchFilterRedux\";\n\nexport const SearchFilterDispatchContext = createContext<\n SearchFilterDispatch<unknown>\n>((null as unknown) as SearchFilterDispatch<unknown>);\n\nexport const useSearchFilterDispatch = () => {\n const c = useContext(SearchFilterDispatchContext);\n if (!c) {\n throw new Error(\"Missing search filter dispatch context.\");\n }\n return c;\n};\n","import { createContext, useContext } from \"react\";\nimport { SearchFilterActions } from \"../redux/SearchFilterRedux\";\n\nexport const SearchFilterActionsContext = createContext<\n SearchFilterActions<unknown, any>\n>((null as unknown) as SearchFilterActions<unknown, any>);\n\nexport const useSearchFilterActions = <\n TFormModel,\n TSectionKey extends string\n>() => {\n const c = useContext(SearchFilterActionsContext);\n if (!c) {\n throw new Error(\"Missing search filter actions context.\");\n }\n return c as SearchFilterActions<TFormModel, TSectionKey>;\n};\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { Drawer, DrawerProps } from \"@stenajs-webui/modal\";\nimport { cssColor } from \"@stenajs-webui/theme\";\nimport { Column } from \"@stenajs-webui/core\";\nimport { SearchFilterPanelHeader } from \"./SearchFilterPanelHeader\";\nimport { useSearchFilterState } from \"../context/SearchFilterStateContext\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\n\ninterface SearchFilterDrawerProps\n extends Omit<DrawerProps, \"isOpen\" | \"onRequestClose\"> {}\n\nexport const SearchFilterDrawer: React.FC<SearchFilterDrawerProps> = ({\n children,\n ...drawerProps\n}) => {\n const {\n settings: { open },\n } = useSearchFilterState();\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const closeDrawer = useCallback(() => {\n dispatch(actions.closeFilters());\n }, [actions, dispatch]);\n\n return (\n <Drawer\n background={cssColor(\"--lhds-color-ui-50\")}\n width={\"370px\"}\n isOpen={open}\n onRequestClose={closeDrawer}\n {...drawerProps}\n >\n <Column>\n <SearchFilterPanelHeader onRequestClose={closeDrawer} />\n {children}\n </Column>\n </Drawer>\n );\n};\n","import { faSlidersH } from \"@fortawesome/free-solid-svg-icons/faSlidersH\";\nimport { SecondaryButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\n\ninterface SearchFilterDrawerButtonProps {\n label?: string;\n}\n\nexport const SearchFilterButton: React.VFC<SearchFilterDrawerButtonProps> = ({\n label = \"Filters\",\n}) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const onClickButton = useCallback(() => {\n dispatch(actions.openFilters());\n }, [actions, dispatch]);\n\n return (\n <SecondaryButton\n label={label}\n leftIcon={faSlidersH}\n onClick={onClickButton}\n />\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren, useCallback } from \"react\";\nimport { Row } from \"@stenajs-webui/core\";\nimport { Collapsible, CollapsibleContent } from \"@stenajs-webui/panels\";\nimport { lowerCase, upperFirst } from \"lodash\";\nimport { Banner, FlatButton, Spinner } from \"@stenajs-webui/elements\";\nimport { useSearchFilterState } from \"../context/SearchFilterStateContext\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\n\nexport interface SearchFilterSectionProps<TSectionKey extends string> {\n sectionId: TSectionKey;\n contentLeft?: React.ReactNode;\n contentRight?: React.ReactNode;\n disableContentPadding?: boolean;\n loading?: boolean;\n error?: string;\n onRetry?: () => void;\n label?: string;\n}\n\nexport const SearchFilterSection = function SearchFilterSection<\n TSectionKey extends string\n>({\n sectionId,\n label,\n contentLeft,\n contentRight,\n loading,\n error,\n onRetry,\n disableContentPadding,\n children,\n}: PropsWithChildren<SearchFilterSectionProps<TSectionKey>>) {\n const state = useSearchFilterState();\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const expanded = state.expandedSections.values[sectionId] ?? false;\n\n const onClickLabel = useCallback(() => {\n dispatch(actions.setSectionExpanded(sectionId, !expanded));\n }, [actions, dispatch, expanded, sectionId]);\n\n const activeLabel = label ?? formatColumnIdToHeaderCellLabel(sectionId);\n\n return (\n <Collapsible\n label={activeLabel}\n collapsed={!expanded}\n onClick={onClickLabel}\n contentLeft={contentLeft}\n contentRight={contentRight}\n >\n {loading ? (\n <CollapsibleContent>\n <Row spacing justifyContent={\"center\"} flex={1}>\n <Spinner size={\"small\"} />\n </Row>\n </CollapsibleContent>\n ) : error ? (\n <Banner\n variant={\"error\"}\n text={error}\n contentRight={\n onRetry ? <FlatButton label={\"Retry\"} onClick={onRetry} /> : null\n }\n />\n ) : disableContentPadding ? (\n children\n ) : (\n <CollapsibleContent>{children}</CollapsibleContent>\n )}\n </Collapsible>\n );\n};\n\nexport const formatColumnIdToHeaderCellLabel = (columnId: string): string =>\n upperFirst(lowerCase(columnId));\n","import { createContext, useContext } from \"react\";\n\nexport const SearchFilterModelContext = createContext<unknown>(null as unknown);\n\nexport const useSearchFilterModel = <TFormModel>(): TFormModel => {\n const c = useContext(SearchFilterModelContext);\n if (!c) {\n throw new Error(\n \"Missing search filter context, wrap components with SearchFilterContext component.\"\n );\n }\n return c as TFormModel;\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport {\n SearchFilterActions,\n SearchFilterDispatch,\n SearchFilterState,\n} from \"../../redux/SearchFilterRedux\";\nimport { SearchFilterDispatchContext } from \"../../context/SearchFilterDispatchContext\";\nimport { SearchFilterActionsContext } from \"../../context/SearchFilterActionsContext\";\nimport { SearchFilterStateContext } from \"../../context/SearchFilterStateContext\";\nimport { SearchFilterModelContext } from \"../../context/SearchFilterModelContext\";\n\ninterface SearchFilterScopeProps<TFormModel, TSectionKey extends string> {\n state: SearchFilterState<TFormModel>;\n dispatch: SearchFilterDispatch<TFormModel>;\n actions: SearchFilterActions<TFormModel, TSectionKey>;\n}\n\nexport const SearchFilterContext = function SearchFilterScope<\n TFormModel,\n TSectionKey extends string\n>({\n state,\n dispatch,\n actions,\n children,\n}: PropsWithChildren<SearchFilterScopeProps<TFormModel, TSectionKey>>) {\n return (\n <SearchFilterDispatchContext.Provider\n value={dispatch as SearchFilterDispatch<unknown>}\n >\n <SearchFilterActionsContext.Provider value={actions}>\n <SearchFilterStateContext.Provider value={state}>\n <SearchFilterModelContext.Provider value={state.formModel}>\n {children}\n </SearchFilterModelContext.Provider>\n </SearchFilterStateContext.Provider>\n </SearchFilterActionsContext.Provider>\n </SearchFilterDispatchContext.Provider>\n );\n};\n","import { combineReducers } from \"redux\";\nimport {\n createEntityActions,\n createEntityReducer,\n createValueByIdActions,\n createValueByIdReducer,\n EntityAction,\n EntityState,\n reducerIdGate,\n reducerIdGateAction,\n ReducerIdGateAction,\n ValueByIdAction,\n ValueByIdState,\n} from \"@stenajs-webui/redux\";\nimport { Dispatch } from \"react\";\n\nexport interface SearchFilterSettings {\n open: boolean;\n}\n\nexport type SearchFilterDispatch<TFormModel> = Dispatch<\n SearchFilterAction<TFormModel>\n>;\n\nexport interface SearchFilterState<TFormModel> {\n expandedSections: ValueByIdState<boolean>;\n formModel: EntityState<TFormModel>;\n settings: EntityState<SearchFilterSettings>;\n}\n\nexport type SearchFilterAction<TFormModel> =\n | ReducerIdGateAction<ValueByIdAction<boolean>>\n | ReducerIdGateAction<EntityAction<TFormModel>>\n | ReducerIdGateAction<EntityAction<SearchFilterSettings>>;\n\nexport const createSearchFilterInitialState = <TFormModel>(\n initialFormModel: TFormModel\n): SearchFilterState<TFormModel> => ({\n settings: {\n open: false,\n },\n formModel: initialFormModel,\n expandedSections: { values: {} },\n});\n\nexport const createSearchFilterReducer = <TFormModel>(\n reducerId: string,\n initialState: SearchFilterState<TFormModel>\n) =>\n combineReducers({\n expandedSections: reducerIdGate(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdReducer<boolean>(initialState.expandedSections)\n ),\n formModel: reducerIdGate(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityReducer<TFormModel>(initialState.formModel)\n ),\n settings: reducerIdGate(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityReducer<SearchFilterSettings>(initialState.settings)\n ),\n });\n\nexport interface SearchFilterActions<TFormModel, TSectionKey extends string> {\n openFilters: () => SearchFilterAction<TFormModel>;\n closeFilters: () => SearchFilterAction<TFormModel>;\n setFormModelFields: (\n fields: Partial<TFormModel>\n ) => SearchFilterAction<TFormModel>;\n clearFormModel: () => SearchFilterAction<TFormModel>;\n expandSection: (section: TSectionKey) => SearchFilterAction<TFormModel>;\n collapseSection: (section: TSectionKey) => SearchFilterAction<TFormModel>;\n setSectionExpanded: (\n section: TSectionKey,\n expanded: boolean\n ) => SearchFilterAction<TFormModel>;\n clearExpandedSections: () => SearchFilterAction<TFormModel>;\n}\n\nexport const createSearchFilterActions = <\n TFormModel,\n TSectionKey extends string\n>(\n reducerId: string,\n initialFormModel: TFormModel\n): SearchFilterActions<TFormModel, TSectionKey> => ({\n openFilters: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityActions<SearchFilterSettings>().setEntityFields({\n open: true,\n })\n ),\n closeFilters: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityActions<SearchFilterSettings>().setEntityFields({\n open: false,\n })\n ),\n setFormModelFields: (fields: Partial<TFormModel>) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityActions<TFormModel>().setEntityFields(fields)\n ),\n clearFormModel: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityActions<TFormModel>().setEntity(initialFormModel)\n ),\n expandSection: (section: TSectionKey) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, true)\n ),\n collapseSection: (section: TSectionKey) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, false)\n ),\n setSectionExpanded: (section: TSectionKey, expanded: boolean) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, expanded)\n ),\n clearExpandedSections: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().clearAllValues()\n ),\n});\n\nexport const getReducerIdFor = (\n reducerId: string,\n reducerIdSuffix: keyof SearchFilterState<unknown>\n): string => `${reducerId}.${reducerIdSuffix}`;\n","import {\n createSearchFilterActions,\n createSearchFilterReducer,\n SearchFilterState,\n} from \"../redux/SearchFilterRedux\";\nimport { useReducer, useState } from \"react\";\n\nexport const useLocalSearchFilterState = <\n TFormModel,\n TSectionKey extends string\n>(\n initialState: SearchFilterState<TFormModel>\n) => {\n const [reducer] = useState(() =>\n createSearchFilterReducer<TFormModel>(\"local\", initialState)\n );\n\n const [actions] = useState(() =>\n createSearchFilterActions<TFormModel, TSectionKey>(\n \"local\",\n initialState.formModel\n )\n );\n\n const [state, dispatch] = useReducer(reducer, initialState);\n\n return {\n actions,\n state,\n dispatch,\n };\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport { useLocalSearchFilterState } from \"../../hooks/UseLocalSearchFilterState\";\nimport { SearchFilterContext } from \"./SearchFilterContext\";\nimport { createSearchFilterInitialState } from \"../../redux/SearchFilterRedux\";\n\ninterface SearchFilterLocalScopeProps<TFormModel> {\n initialFormModel: TFormModel;\n}\n\nexport const SearchFilterLocalStateContext = function SearchFilterLocalScope<\n TFormModel\n>({\n initialFormModel,\n children,\n}: PropsWithChildren<SearchFilterLocalScopeProps<TFormModel>>) {\n const { state, actions, dispatch } = useLocalSearchFilterState(\n createSearchFilterInitialState(initialFormModel)\n );\n\n return (\n <SearchFilterContext state={state} actions={actions} dispatch={dispatch}>\n {children}\n </SearchFilterContext>\n );\n};\n","import styled from \"@emotion/styled\";\n\nexport const ChipSpacer = styled.div`\n padding: calc(var(--swui-metrics-spacing) / 2)\n calc(var(--swui-metrics-indent) / 2);\n`;\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { Row } from \"@stenajs-webui/core\";\nimport { ChipSpacer } from \"./ChipSpacer\";\nimport { FlatButton } from \"@stenajs-webui/elements\";\nimport { useSearchFilterDispatch } from \"../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../context/SearchFilterActionsContext\";\n\ninterface SearchFilterChipsProps {\n disableClearAllButton?: boolean;\n}\n\nexport const SearchFilterChips: React.FC<SearchFilterChipsProps> = ({\n children,\n disableClearAllButton = false,\n}) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const onClickClearAll = useCallback(\n () => dispatch(actions.clearFormModel()),\n [actions, dispatch]\n );\n\n return (\n <Row flexWrap={\"wrap\"}>\n {children}\n {!disableClearAllButton && (\n <ChipSpacer>\n <FlatButton\n size={\"small\"}\n label={\"Clear all\"}\n onClick={onClickClearAll}\n />\n </ChipSpacer>\n )}\n </Row>\n );\n};\n","import * as React from \"react\";\nimport { ChipSpacer } from \"./ChipSpacer\";\nimport { Chip } from \"@stenajs-webui/elements\";\nimport { useCallback } from \"react\";\nimport { useSearchFilterDispatch } from \"../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../context/SearchFilterActionsContext\";\n\ninterface EmptyChipProps<TSectionKey extends string> {\n sectionId: TSectionKey;\n label: string;\n}\n\nexport const EmptyChip = function EmptyChip<TSectionKey extends string>({\n label,\n sectionId,\n}: EmptyChipProps<TSectionKey>) {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const onClickLabel = useCallback(() => {\n dispatch(actions.clearExpandedSections());\n dispatch(actions.expandSection(sectionId));\n dispatch(actions.openFilters());\n }, [actions, dispatch, sectionId]);\n\n return (\n <ChipSpacer>\n <Chip label={label} variant={\"secondary\"} onClick={onClickLabel} />\n </ChipSpacer>\n );\n};\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { ChipSpacer } from \"./ChipSpacer\";\nimport { Chip } from \"@stenajs-webui/elements\";\nimport { useSearchFilterDispatch } from \"../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../context/SearchFilterActionsContext\";\nimport { SearchFilterSectionOnClickRemoveOnChip } from \"../../config/SearchFilterConfig\";\n\ninterface SearchFilterChipProps<TFormModel, TSectionKey> {\n sectionId: TSectionKey;\n label: string;\n value: string;\n onClickRemove?: SearchFilterSectionOnClickRemoveOnChip<TFormModel>;\n}\n\nexport const SearchFilterChip = function SearchFilterChip<\n TFormModel,\n TSectionKey extends string\n>({\n sectionId,\n label,\n value,\n onClickRemove,\n}: SearchFilterChipProps<TFormModel, TSectionKey>) {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const setFormModelFields = useCallback(\n (fields: Partial<TFormModel>) =>\n dispatch(actions.setFormModelFields(fields)),\n [dispatch, actions]\n );\n\n const onClickRemoveHandler = useCallback(() => {\n onClickRemove?.({ value, setFormModelFields });\n }, [onClickRemove, setFormModelFields, value]);\n\n const onClickLabel = useCallback(() => {\n dispatch(actions.clearExpandedSections());\n dispatch(actions.expandSection(sectionId));\n dispatch(actions.openFilters());\n }, [actions, dispatch, sectionId]);\n\n return (\n <ChipSpacer>\n <Chip\n label={label ?? sectionId}\n onClick={onClickLabel}\n onClickRemove={onClickRemove ? onClickRemoveHandler : undefined}\n />\n </ChipSpacer>\n );\n};\n","import * as React from \"react\";\nimport {\n SearchFilterSectionChipModel,\n SearchFilterSectionOnClickRemoveOnChip,\n} from \"../../config/SearchFilterConfig\";\nimport { EmptyChip } from \"./EmptyChip\";\nimport { SearchFilterChip } from \"./SearchFilterChip\";\n\nexport interface SectionChipsProps<TFormModel, TSectionKey extends string> {\n sectionId: TSectionKey;\n chips?: Array<SearchFilterSectionChipModel>;\n emptyChipLabel?: string;\n onClickRemoveOnChip?: SearchFilterSectionOnClickRemoveOnChip<TFormModel>;\n}\n\nexport const SectionChips = function SectionChips<\n TFormModel,\n TSectionKey extends string\n>({\n sectionId,\n chips,\n emptyChipLabel,\n onClickRemoveOnChip,\n}: SectionChipsProps<TFormModel, TSectionKey>) {\n if (!chips?.length) {\n if (!emptyChipLabel) {\n return null;\n }\n return <EmptyChip sectionId={sectionId} label={emptyChipLabel} />;\n }\n\n return (\n <>\n {chips.map(({ label, value }) => (\n <SearchFilterChip\n key={value}\n label={label ?? sectionId}\n sectionId={sectionId}\n onClickRemove={onClickRemoveOnChip}\n value={value}\n />\n ))}\n </>\n );\n};\n","import { BooleanRecord, BooleanRecordOptions } from \"./BooleanRecordTypes\";\nimport {\n SearchFilterSectionChipModel,\n SearchFilterSectionOnClickRemoveOnChip,\n} from \"../../config/SearchFilterConfig\";\nimport { PickByValue, truthyKeysAsList } from \"@stenajs-webui/core\";\nimport { SectionChipsProps } from \"../../features/chips/SectionChips\";\n\nexport const createChipsPropsForBooleanRecord = <\n TFormModel,\n TSectionKey extends string,\n TField extends keyof PickByValue<TFormModel, BooleanRecord>\n>(\n formModel: TFormModel,\n fieldName: TField,\n options?: BooleanRecordOptions\n): Pick<\n SectionChipsProps<TFormModel, TSectionKey>,\n \"chips\" | \"onClickRemoveOnChip\"\n> => ({\n chips: createChipsForBooleanRecord(formModel[fieldName], options),\n onClickRemoveOnChip: createOnClickRemoveOnChipForBooleanRecord(\n formModel,\n fieldName\n ),\n});\n\nexport const createChipsForBooleanRecord = (\n booleanRecord: BooleanRecord,\n options?: BooleanRecordOptions\n): Array<SearchFilterSectionChipModel> =>\n truthyKeysAsList(booleanRecord).map((key) => {\n const option = options?.find((o) => o.value === key);\n return { value: key, label: option?.label ?? key };\n });\n\nexport const createOnClickRemoveOnChipForBooleanRecord = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, BooleanRecord>\n>(\n formModel: TFormModel,\n fieldName: TField\n): SearchFilterSectionOnClickRemoveOnChip<TFormModel> => {\n return ({ setFormModelFields, value }) => {\n const newRecord: BooleanRecord = { ...formModel[fieldName] };\n newRecord[value] = false;\n setFormModelFields(({\n [fieldName]: newRecord,\n } as unknown) as Partial<TFormModel>);\n };\n};\n","import * as React from \"react\";\nimport {\n SearchFilterSection,\n SearchFilterSectionProps,\n} from \"../../../components/SearchFilterSection\";\nimport { Column, Text } from \"@stenajs-webui/core\";\nimport { CollapsibleClickableContent } from \"@stenajs-webui/panels\";\nimport { Checkbox, ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { BooleanRecord, BooleanRecordOptions } from \"../BooleanRecordTypes\";\n\nexport interface SimpleCheckboxSectionProps<TSectionKey extends string>\n extends SearchFilterSectionProps<TSectionKey>,\n ValueAndOnValueChangeProps<BooleanRecord> {\n options?: BooleanRecordOptions;\n}\n\nexport const SimpleCheckboxListSection = <TSectionKey extends string>({\n options,\n value,\n onValueChange,\n ...sectionProps\n}: SimpleCheckboxSectionProps<TSectionKey>): React.ReactElement => (\n <SearchFilterSection disableContentPadding {...sectionProps}>\n <Column maxHeight={\"400px\"} overflowY={\"auto\"} flex={1}>\n {options?.map((d) => (\n <CollapsibleClickableContent\n key={d.value}\n onClick={() => {\n if (value && onValueChange) {\n const sel = !value[d.value];\n onValueChange({\n ...value,\n [d.value]: sel,\n });\n }\n }}\n contentLeft={<Checkbox tabIndex={-1} value={value?.[d.value]} />}\n >\n <Text>{d.label}</Text>\n </CollapsibleClickableContent>\n ))}\n </Column>\n </SearchFilterSection>\n);\n","import * as React from \"react\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport {\n SearchFilterSection,\n SearchFilterSectionProps,\n} from \"../../../components/SearchFilterSection\";\nimport { ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { BooleanRecord, BooleanRecordOptions } from \"../BooleanRecordTypes\";\nimport { ChipMultiSelect, ChipMultiSelectValue } from \"@stenajs-webui/select\";\nimport { truthyKeysAsList } from \"@stenajs-webui/core\";\n\ninterface ChipMultiSelectSectionProps<TSectionKey extends string>\n extends SearchFilterSectionProps<TSectionKey>,\n ValueAndOnValueChangeProps<BooleanRecord> {\n noneSelectedLabel?: string;\n options?: BooleanRecordOptions;\n}\n\nexport const ChipMultiSelectSection = <TSectionKey extends string>({\n options,\n value,\n noneSelectedLabel,\n onValueChange,\n ...sectionProps\n}: ChipMultiSelectSectionProps<TSectionKey>): React.ReactElement => {\n const [text, setText] = useState<string>(\"\");\n\n const listValue = useMemo<Array<ChipMultiSelectValue>>(\n () =>\n value\n ? truthyKeysAsList(value).map<ChipMultiSelectValue>((key) => {\n const option = options?.find((o) => o.value === key);\n return { value: key, label: option?.label ?? key };\n })\n : [],\n [options, value]\n );\n\n const filteredOptions = useMemo(() => {\n return options?.filter(\n (p) =>\n p.value.toLocaleLowerCase().indexOf(text.toLocaleLowerCase()) > -1 ||\n p.label.toLocaleLowerCase().indexOf(text.toLocaleLowerCase()) > -1\n );\n }, [options, text]);\n\n const onValueChangeInternal = useCallback(\n (value: Array<ChipMultiSelectValue>) => {\n onValueChange?.(createBooleanRecordFromValue(value));\n },\n [onValueChange]\n );\n\n return (\n <SearchFilterSection {...sectionProps}>\n <ChipMultiSelect\n options={filteredOptions}\n value={listValue}\n onValueChange={onValueChangeInternal}\n inputValue={text}\n noneSelectedLabel={noneSelectedLabel}\n onInputChange={setText}\n closeMenuOnSelect={false}\n />\n </SearchFilterSection>\n );\n};\n\nconst createBooleanRecordFromValue = (\n value: Array<ChipMultiSelectValue>\n): BooleanRecord => {\n return value.reduce<BooleanRecord>((sum, item) => {\n sum[item.value] = true;\n return sum;\n }, {});\n};\n","import { DateStringRange } from \"@stenajs-webui/calendar\";\nimport {\n SearchFilterSectionChipModel,\n SearchFilterSectionOnClickRemoveOnChip,\n} from \"../../config/SearchFilterConfig\";\nimport { PickByValue } from \"@stenajs-webui/core\";\nimport { SectionChipsProps } from \"../../features/chips/SectionChips\";\n\nexport const createChipsPropsForDateRange = <\n TFormModel,\n TSectionKey extends string,\n TField extends keyof PickByValue<TFormModel, string | undefined>\n>(\n formModel: TFormModel,\n startDateFieldName: TField,\n endDateFieldName: TField\n): Pick<\n SectionChipsProps<TFormModel, TSectionKey>,\n \"chips\" | \"onClickRemoveOnChip\"\n> => ({\n chips: createChipsForDateRange(\n formModel[startDateFieldName],\n formModel[endDateFieldName]\n ),\n onClickRemoveOnChip: createOnClickRemoveOnChipForDateRange(\n startDateFieldName,\n endDateFieldName\n ),\n});\n\nexport const createChipsForDateRange = (\n startDate: string | undefined,\n endDate: string | undefined\n): Array<SearchFilterSectionChipModel> => {\n if (!startDate && !endDate) {\n return [];\n }\n return [\n { value: \"dateRange\", label: `${startDate ?? \"\"} - ${endDate ?? \"\"}` },\n ];\n};\n\nexport const createOnClickRemoveOnChipForDateRange = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, DateStringRange>\n>(\n startDateFieldName: TField,\n endDateFieldName: TField\n): SearchFilterSectionOnClickRemoveOnChip<TFormModel> => {\n return ({ setFormModelFields }) => {\n setFormModelFields(({\n [startDateFieldName]: undefined,\n [endDateFieldName]: undefined,\n } as unknown) as Partial<TFormModel>);\n };\n};\n","import { PickByValue } from \"@stenajs-webui/core\";\nimport { DateRangeCalendarSectionProps } from \"./components/DateRangeCalendarSection\";\n\nexport const createDateRangeSectionProps = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, string | undefined>,\n TSectionKey extends string\n>(\n formModel: TFormModel,\n startDateFieldName: TField,\n endDateFieldName: TField\n): Pick<\n DateRangeCalendarSectionProps<TFormModel, TSectionKey>,\n \"value\" | \"onValueChange\"\n> => ({\n value: {\n startDate: formModel[startDateFieldName],\n endDate: formModel[endDateFieldName],\n },\n onValueChange: (value, { dispatch, actions }) => {\n const fields: Partial<TFormModel> = {\n [startDateFieldName]: value.startDate,\n [endDateFieldName]: value.endDate,\n } as any;\n dispatch(actions.setFormModelFields(fields));\n },\n});\n","import {\n DateRange,\n DateRangeCalendar,\n DateRangeCalendarProps,\n DateRangeFocusedInput,\n dateRangeToStrings,\n DateStringRange,\n stringsToDateRange,\n} from \"@stenajs-webui/calendar\";\nimport * as React from \"react\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { Box } from \"@stenajs-webui/core\";\nimport {\n SearchFilterSection,\n SearchFilterSectionProps,\n} from \"../../../components/SearchFilterSection\";\nimport {\n SearchFilterActions,\n SearchFilterDispatch,\n} from \"../../../redux/SearchFilterRedux\";\nimport { useSearchFilterDispatch } from \"../../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../../context/SearchFilterActionsContext\";\n\nexport interface DateRangeCalendarSectionProps<\n TFormModel,\n TSectionKey extends string\n> extends SearchFilterSectionProps<TSectionKey>,\n Omit<\n DateRangeCalendarProps<{}>,\n \"value\" | \"onValueChange\" | \"focusedInput\" | \"setFocusedInput\"\n > {\n value: DateStringRange;\n onValueChange: (\n value: DateStringRange,\n options: SetDateOptions<TFormModel, TSectionKey>\n ) => void;\n}\n\nexport interface SetDateOptions<TFormModel, TSectionKey extends string> {\n dispatch: SearchFilterDispatch<TFormModel>;\n actions: SearchFilterActions<TFormModel, TSectionKey>;\n}\n\nexport const DateRangeCalendarSection = <\n TFormModel,\n TSectionKey extends string\n>({\n value,\n onValueChange,\n sectionId,\n ...dateRangeCalendarProps\n}: DateRangeCalendarSectionProps<TFormModel, TSectionKey>) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions<TFormModel, TSectionKey>();\n\n const options = useMemo<SetDateOptions<TFormModel, TSectionKey>>(\n () => ({ dispatch, actions }),\n [actions, dispatch]\n );\n const [focusedInput, setFocusedInput] = useState<DateRangeFocusedInput>(\n \"startDate\"\n );\n\n const dateRangeValue = useMemo(() => stringsToDateRange(value), [value]);\n\n const onValueChangeHandler = useCallback(\n (value: DateRange) => {\n onValueChange(dateRangeToStrings(value), options);\n },\n [onValueChange, options]\n );\n\n return (\n <SearchFilterSection sectionId={sectionId}>\n <Box flex={1} alignItems={\"center\"}>\n <Box background={\"white\"} indent>\n <DateRangeCalendar\n setFocusedInput={setFocusedInput}\n focusedInput={focusedInput}\n value={dateRangeValue}\n onValueChange={onValueChangeHandler}\n {...dateRangeCalendarProps}\n />\n </Box>\n </Box>\n </SearchFilterSection>\n );\n};\n"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -345,7 +345,7 @@ var SimpleCheckboxListSection = function (_a) {
345
345
  };
346
346
 
347
347
  var ChipMultiSelectSection = function (_a) {
348
- var options = _a.options, value = _a.value, onValueChange = _a.onValueChange, sectionProps = __rest(_a, ["options", "value", "onValueChange"]);
348
+ var options = _a.options, value = _a.value, noneSelectedLabel = _a.noneSelectedLabel, onValueChange = _a.onValueChange, sectionProps = __rest(_a, ["options", "value", "noneSelectedLabel", "onValueChange"]);
349
349
  var _b = React.useState(""), text = _b[0], setText = _b[1];
350
350
  var listValue = React.useMemo(function () {
351
351
  return value
@@ -366,7 +366,7 @@ var ChipMultiSelectSection = function (_a) {
366
366
  onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange(createBooleanRecordFromValue(value));
367
367
  }, [onValueChange]);
368
368
  return (React__namespace.createElement(SearchFilterSection, __assign({}, sectionProps),
369
- React__namespace.createElement(select.ChipMultiSelect, { options: filteredOptions, value: listValue, onValueChange: onValueChangeInternal, inputValue: text, onInputChange: setText })));
369
+ React__namespace.createElement(select.ChipMultiSelect, { options: filteredOptions, value: listValue, onValueChange: onValueChangeInternal, inputValue: text, noneSelectedLabel: noneSelectedLabel, onInputChange: setText, closeMenuOnSelect: false })));
370
370
  };
371
371
  var createBooleanRecordFromValue = function (value) {
372
372
  return value.reduce(function (sum, item) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/features/search-filter/components/SearchFilterPanelHeader.tsx","../src/features/search-filter/context/SearchFilterStateContext.ts","../src/features/search-filter/context/SearchFilterDispatchContext.ts","../src/features/search-filter/context/SearchFilterActionsContext.ts","../src/features/search-filter/components/SearchFilterDrawer.tsx","../src/features/search-filter/components/SearchFilterButton.tsx","../src/features/search-filter/components/SearchFilterSection.tsx","../src/features/search-filter/context/SearchFilterModelContext.ts","../src/features/search-filter/components/context/SearchFilterContext.tsx","../src/features/search-filter/redux/SearchFilterRedux.ts","../src/features/search-filter/hooks/UseLocalSearchFilterState.ts","../src/features/search-filter/components/context/SearchFilterLocalStateContext.tsx","../src/features/search-filter/features/chips/ChipSpacer.tsx","../src/features/search-filter/features/chips/SearchFilterChips.tsx","../src/features/search-filter/features/chips/EmptyChip.tsx","../src/features/search-filter/features/chips/SearchFilterChip.tsx","../src/features/search-filter/features/chips/SectionChips.tsx","../src/features/search-filter/section-factories/boolean-record/BooleanRecordChips.ts","../src/features/search-filter/section-factories/boolean-record/components/SimpleCheckboxListSection.tsx","../src/features/search-filter/section-factories/boolean-record/components/ChipMultiSelectSection.tsx","../src/features/search-filter/section-factories/date-range/DateRangeChips.ts","../src/features/search-filter/section-factories/date-range/DateRangePropsFactory.ts","../src/features/search-filter/section-factories/date-range/components/DateRangeCalendarSection.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Heading, Indent, Row } from \"@stenajs-webui/core\";\nimport { FlatButton, Icon } from \"@stenajs-webui/elements\";\nimport { faTimes } from \"@fortawesome/free-solid-svg-icons/faTimes\";\nimport { faSlidersH } from \"@fortawesome/free-solid-svg-icons/faSlidersH\";\nimport { cssColor } from \"@stenajs-webui/theme\";\n\ninterface SearchFilterPanelHeaderProps {\n onRequestClose: () => void;\n}\n\nexport const SearchFilterPanelHeader: React.FC<SearchFilterPanelHeaderProps> = ({\n onRequestClose,\n}) => {\n return (\n <Row\n height={\"48px\"}\n justifyContent={\"space-between\"}\n alignItems={\"center\"}\n indent={2}\n >\n <Row alignItems={\"center\"}>\n <Icon\n icon={faSlidersH}\n color={cssColor(\"--lhds-color-ui-500\")}\n size={12}\n />\n <Indent />\n <Heading variant={\"h4\"}>Filters</Heading>\n </Row>\n <FlatButton leftIcon={faTimes} onClick={onRequestClose} />\n </Row>\n );\n};\n","import { createContext, useContext } from \"react\";\nimport { SearchFilterState } from \"../redux/SearchFilterRedux\";\n\nexport const SearchFilterStateContext = createContext<\n SearchFilterState<unknown>\n>((null as unknown) as SearchFilterState<unknown>);\n\nexport const useSearchFilterState = <\n TFormModel\n>(): SearchFilterState<TFormModel> => {\n const c = useContext(SearchFilterStateContext);\n if (!c) {\n throw new Error(\n \"Missing search filter context, wrap components with SearchFilterContext component.\"\n );\n }\n return c as SearchFilterState<TFormModel>;\n};\n","import { createContext, useContext } from \"react\";\nimport { SearchFilterDispatch } from \"../redux/SearchFilterRedux\";\n\nexport const SearchFilterDispatchContext = createContext<\n SearchFilterDispatch<unknown>\n>((null as unknown) as SearchFilterDispatch<unknown>);\n\nexport const useSearchFilterDispatch = () => {\n const c = useContext(SearchFilterDispatchContext);\n if (!c) {\n throw new Error(\"Missing search filter dispatch context.\");\n }\n return c;\n};\n","import { createContext, useContext } from \"react\";\nimport { SearchFilterActions } from \"../redux/SearchFilterRedux\";\n\nexport const SearchFilterActionsContext = createContext<\n SearchFilterActions<unknown, any>\n>((null as unknown) as SearchFilterActions<unknown, any>);\n\nexport const useSearchFilterActions = <\n TFormModel,\n TSectionKey extends string\n>() => {\n const c = useContext(SearchFilterActionsContext);\n if (!c) {\n throw new Error(\"Missing search filter actions context.\");\n }\n return c as SearchFilterActions<TFormModel, TSectionKey>;\n};\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { Drawer, DrawerProps } from \"@stenajs-webui/modal\";\nimport { cssColor } from \"@stenajs-webui/theme\";\nimport { Column } from \"@stenajs-webui/core\";\nimport { SearchFilterPanelHeader } from \"./SearchFilterPanelHeader\";\nimport { useSearchFilterState } from \"../context/SearchFilterStateContext\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\n\ninterface SearchFilterDrawerProps\n extends Omit<DrawerProps, \"isOpen\" | \"onRequestClose\"> {}\n\nexport const SearchFilterDrawer: React.FC<SearchFilterDrawerProps> = ({\n children,\n ...drawerProps\n}) => {\n const {\n settings: { open },\n } = useSearchFilterState();\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const closeDrawer = useCallback(() => {\n dispatch(actions.closeFilters());\n }, [actions, dispatch]);\n\n return (\n <Drawer\n background={cssColor(\"--lhds-color-ui-50\")}\n width={\"370px\"}\n isOpen={open}\n onRequestClose={closeDrawer}\n {...drawerProps}\n >\n <Column>\n <SearchFilterPanelHeader onRequestClose={closeDrawer} />\n {children}\n </Column>\n </Drawer>\n );\n};\n","import { faSlidersH } from \"@fortawesome/free-solid-svg-icons/faSlidersH\";\nimport { SecondaryButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\n\ninterface SearchFilterDrawerButtonProps {\n label?: string;\n}\n\nexport const SearchFilterButton: React.VFC<SearchFilterDrawerButtonProps> = ({\n label = \"Filters\",\n}) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const onClickButton = useCallback(() => {\n dispatch(actions.openFilters());\n }, [actions, dispatch]);\n\n return (\n <SecondaryButton\n label={label}\n leftIcon={faSlidersH}\n onClick={onClickButton}\n />\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren, useCallback } from \"react\";\nimport { Row } from \"@stenajs-webui/core\";\nimport { Collapsible, CollapsibleContent } from \"@stenajs-webui/panels\";\nimport { lowerCase, upperFirst } from \"lodash\";\nimport { Banner, FlatButton, Spinner } from \"@stenajs-webui/elements\";\nimport { useSearchFilterState } from \"../context/SearchFilterStateContext\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\n\nexport interface SearchFilterSectionProps<TSectionKey extends string> {\n sectionId: TSectionKey;\n contentLeft?: React.ReactNode;\n contentRight?: React.ReactNode;\n disableContentPadding?: boolean;\n loading?: boolean;\n error?: string;\n onRetry?: () => void;\n label?: string;\n}\n\nexport const SearchFilterSection = function SearchFilterSection<\n TSectionKey extends string\n>({\n sectionId,\n label,\n contentLeft,\n contentRight,\n loading,\n error,\n onRetry,\n disableContentPadding,\n children,\n}: PropsWithChildren<SearchFilterSectionProps<TSectionKey>>) {\n const state = useSearchFilterState();\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const expanded = state.expandedSections.values[sectionId] ?? false;\n\n const onClickLabel = useCallback(() => {\n dispatch(actions.setSectionExpanded(sectionId, !expanded));\n }, [actions, dispatch, expanded, sectionId]);\n\n const activeLabel = label ?? formatColumnIdToHeaderCellLabel(sectionId);\n\n return (\n <Collapsible\n label={activeLabel}\n collapsed={!expanded}\n onClick={onClickLabel}\n contentLeft={contentLeft}\n contentRight={contentRight}\n >\n {loading ? (\n <CollapsibleContent>\n <Row spacing justifyContent={\"center\"} flex={1}>\n <Spinner size={\"small\"} />\n </Row>\n </CollapsibleContent>\n ) : error ? (\n <Banner\n variant={\"error\"}\n text={error}\n contentRight={\n onRetry ? <FlatButton label={\"Retry\"} onClick={onRetry} /> : null\n }\n />\n ) : disableContentPadding ? (\n children\n ) : (\n <CollapsibleContent>{children}</CollapsibleContent>\n )}\n </Collapsible>\n );\n};\n\nexport const formatColumnIdToHeaderCellLabel = (columnId: string): string =>\n upperFirst(lowerCase(columnId));\n","import { createContext, useContext } from \"react\";\n\nexport const SearchFilterModelContext = createContext<unknown>(null as unknown);\n\nexport const useSearchFilterModel = <TFormModel>(): TFormModel => {\n const c = useContext(SearchFilterModelContext);\n if (!c) {\n throw new Error(\n \"Missing search filter context, wrap components with SearchFilterContext component.\"\n );\n }\n return c as TFormModel;\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport {\n SearchFilterActions,\n SearchFilterDispatch,\n SearchFilterState,\n} from \"../../redux/SearchFilterRedux\";\nimport { SearchFilterDispatchContext } from \"../../context/SearchFilterDispatchContext\";\nimport { SearchFilterActionsContext } from \"../../context/SearchFilterActionsContext\";\nimport { SearchFilterStateContext } from \"../../context/SearchFilterStateContext\";\nimport { SearchFilterModelContext } from \"../../context/SearchFilterModelContext\";\n\ninterface SearchFilterScopeProps<TFormModel, TSectionKey extends string> {\n state: SearchFilterState<TFormModel>;\n dispatch: SearchFilterDispatch<TFormModel>;\n actions: SearchFilterActions<TFormModel, TSectionKey>;\n}\n\nexport const SearchFilterContext = function SearchFilterScope<\n TFormModel,\n TSectionKey extends string\n>({\n state,\n dispatch,\n actions,\n children,\n}: PropsWithChildren<SearchFilterScopeProps<TFormModel, TSectionKey>>) {\n return (\n <SearchFilterDispatchContext.Provider\n value={dispatch as SearchFilterDispatch<unknown>}\n >\n <SearchFilterActionsContext.Provider value={actions}>\n <SearchFilterStateContext.Provider value={state}>\n <SearchFilterModelContext.Provider value={state.formModel}>\n {children}\n </SearchFilterModelContext.Provider>\n </SearchFilterStateContext.Provider>\n </SearchFilterActionsContext.Provider>\n </SearchFilterDispatchContext.Provider>\n );\n};\n","import { combineReducers } from \"redux\";\nimport {\n createEntityActions,\n createEntityReducer,\n createValueByIdActions,\n createValueByIdReducer,\n EntityAction,\n EntityState,\n reducerIdGate,\n reducerIdGateAction,\n ReducerIdGateAction,\n ValueByIdAction,\n ValueByIdState,\n} from \"@stenajs-webui/redux\";\nimport { Dispatch } from \"react\";\n\nexport interface SearchFilterSettings {\n open: boolean;\n}\n\nexport type SearchFilterDispatch<TFormModel> = Dispatch<\n SearchFilterAction<TFormModel>\n>;\n\nexport interface SearchFilterState<TFormModel> {\n expandedSections: ValueByIdState<boolean>;\n formModel: EntityState<TFormModel>;\n settings: EntityState<SearchFilterSettings>;\n}\n\nexport type SearchFilterAction<TFormModel> =\n | ReducerIdGateAction<ValueByIdAction<boolean>>\n | ReducerIdGateAction<EntityAction<TFormModel>>\n | ReducerIdGateAction<EntityAction<SearchFilterSettings>>;\n\nexport const createSearchFilterInitialState = <TFormModel>(\n initialFormModel: TFormModel\n): SearchFilterState<TFormModel> => ({\n settings: {\n open: false,\n },\n formModel: initialFormModel,\n expandedSections: { values: {} },\n});\n\nexport const createSearchFilterReducer = <TFormModel>(\n reducerId: string,\n initialState: SearchFilterState<TFormModel>\n) =>\n combineReducers({\n expandedSections: reducerIdGate(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdReducer<boolean>(initialState.expandedSections)\n ),\n formModel: reducerIdGate(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityReducer<TFormModel>(initialState.formModel)\n ),\n settings: reducerIdGate(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityReducer<SearchFilterSettings>(initialState.settings)\n ),\n });\n\nexport interface SearchFilterActions<TFormModel, TSectionKey extends string> {\n openFilters: () => SearchFilterAction<TFormModel>;\n closeFilters: () => SearchFilterAction<TFormModel>;\n setFormModelFields: (\n fields: Partial<TFormModel>\n ) => SearchFilterAction<TFormModel>;\n clearFormModel: () => SearchFilterAction<TFormModel>;\n expandSection: (section: TSectionKey) => SearchFilterAction<TFormModel>;\n collapseSection: (section: TSectionKey) => SearchFilterAction<TFormModel>;\n setSectionExpanded: (\n section: TSectionKey,\n expanded: boolean\n ) => SearchFilterAction<TFormModel>;\n clearExpandedSections: () => SearchFilterAction<TFormModel>;\n}\n\nexport const createSearchFilterActions = <\n TFormModel,\n TSectionKey extends string\n>(\n reducerId: string,\n initialFormModel: TFormModel\n): SearchFilterActions<TFormModel, TSectionKey> => ({\n openFilters: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityActions<SearchFilterSettings>().setEntityFields({\n open: true,\n })\n ),\n closeFilters: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityActions<SearchFilterSettings>().setEntityFields({\n open: false,\n })\n ),\n setFormModelFields: (fields: Partial<TFormModel>) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityActions<TFormModel>().setEntityFields(fields)\n ),\n clearFormModel: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityActions<TFormModel>().setEntity(initialFormModel)\n ),\n expandSection: (section: TSectionKey) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, true)\n ),\n collapseSection: (section: TSectionKey) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, false)\n ),\n setSectionExpanded: (section: TSectionKey, expanded: boolean) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, expanded)\n ),\n clearExpandedSections: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().clearAllValues()\n ),\n});\n\nexport const getReducerIdFor = (\n reducerId: string,\n reducerIdSuffix: keyof SearchFilterState<unknown>\n): string => `${reducerId}.${reducerIdSuffix}`;\n","import {\n createSearchFilterActions,\n createSearchFilterReducer,\n SearchFilterState,\n} from \"../redux/SearchFilterRedux\";\nimport { useReducer, useState } from \"react\";\n\nexport const useLocalSearchFilterState = <\n TFormModel,\n TSectionKey extends string\n>(\n initialState: SearchFilterState<TFormModel>\n) => {\n const [reducer] = useState(() =>\n createSearchFilterReducer<TFormModel>(\"local\", initialState)\n );\n\n const [actions] = useState(() =>\n createSearchFilterActions<TFormModel, TSectionKey>(\n \"local\",\n initialState.formModel\n )\n );\n\n const [state, dispatch] = useReducer(reducer, initialState);\n\n return {\n actions,\n state,\n dispatch,\n };\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport { useLocalSearchFilterState } from \"../../hooks/UseLocalSearchFilterState\";\nimport { SearchFilterContext } from \"./SearchFilterContext\";\nimport { createSearchFilterInitialState } from \"../../redux/SearchFilterRedux\";\n\ninterface SearchFilterLocalScopeProps<TFormModel> {\n initialFormModel: TFormModel;\n}\n\nexport const SearchFilterLocalStateContext = function SearchFilterLocalScope<\n TFormModel\n>({\n initialFormModel,\n children,\n}: PropsWithChildren<SearchFilterLocalScopeProps<TFormModel>>) {\n const { state, actions, dispatch } = useLocalSearchFilterState(\n createSearchFilterInitialState(initialFormModel)\n );\n\n return (\n <SearchFilterContext state={state} actions={actions} dispatch={dispatch}>\n {children}\n </SearchFilterContext>\n );\n};\n","import styled from \"@emotion/styled\";\n\nexport const ChipSpacer = styled.div`\n padding: calc(var(--swui-metrics-spacing) / 2)\n calc(var(--swui-metrics-indent) / 2);\n`;\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { Row } from \"@stenajs-webui/core\";\nimport { ChipSpacer } from \"./ChipSpacer\";\nimport { FlatButton } from \"@stenajs-webui/elements\";\nimport { useSearchFilterDispatch } from \"../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../context/SearchFilterActionsContext\";\n\ninterface SearchFilterChipsProps {\n disableClearAllButton?: boolean;\n}\n\nexport const SearchFilterChips: React.FC<SearchFilterChipsProps> = ({\n children,\n disableClearAllButton = false,\n}) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const onClickClearAll = useCallback(\n () => dispatch(actions.clearFormModel()),\n [actions, dispatch]\n );\n\n return (\n <Row flexWrap={\"wrap\"}>\n {children}\n {!disableClearAllButton && (\n <ChipSpacer>\n <FlatButton\n size={\"small\"}\n label={\"Clear all\"}\n onClick={onClickClearAll}\n />\n </ChipSpacer>\n )}\n </Row>\n );\n};\n","import * as React from \"react\";\nimport { ChipSpacer } from \"./ChipSpacer\";\nimport { Chip } from \"@stenajs-webui/elements\";\nimport { useCallback } from \"react\";\nimport { useSearchFilterDispatch } from \"../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../context/SearchFilterActionsContext\";\n\ninterface EmptyChipProps<TSectionKey extends string> {\n sectionId: TSectionKey;\n label: string;\n}\n\nexport const EmptyChip = function EmptyChip<TSectionKey extends string>({\n label,\n sectionId,\n}: EmptyChipProps<TSectionKey>) {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const onClickLabel = useCallback(() => {\n dispatch(actions.clearExpandedSections());\n dispatch(actions.expandSection(sectionId));\n dispatch(actions.openFilters());\n }, [actions, dispatch, sectionId]);\n\n return (\n <ChipSpacer>\n <Chip label={label} variant={\"secondary\"} onClick={onClickLabel} />\n </ChipSpacer>\n );\n};\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { ChipSpacer } from \"./ChipSpacer\";\nimport { Chip } from \"@stenajs-webui/elements\";\nimport { useSearchFilterDispatch } from \"../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../context/SearchFilterActionsContext\";\nimport { SearchFilterSectionOnClickRemoveOnChip } from \"../../config/SearchFilterConfig\";\n\ninterface SearchFilterChipProps<TFormModel, TSectionKey> {\n sectionId: TSectionKey;\n label: string;\n value: string;\n onClickRemove?: SearchFilterSectionOnClickRemoveOnChip<TFormModel>;\n}\n\nexport const SearchFilterChip = function SearchFilterChip<\n TFormModel,\n TSectionKey extends string\n>({\n sectionId,\n label,\n value,\n onClickRemove,\n}: SearchFilterChipProps<TFormModel, TSectionKey>) {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const setFormModelFields = useCallback(\n (fields: Partial<TFormModel>) =>\n dispatch(actions.setFormModelFields(fields)),\n [dispatch, actions]\n );\n\n const onClickRemoveHandler = useCallback(() => {\n onClickRemove?.({ value, setFormModelFields });\n }, [onClickRemove, setFormModelFields, value]);\n\n const onClickLabel = useCallback(() => {\n dispatch(actions.clearExpandedSections());\n dispatch(actions.expandSection(sectionId));\n dispatch(actions.openFilters());\n }, [actions, dispatch, sectionId]);\n\n return (\n <ChipSpacer>\n <Chip\n label={label ?? sectionId}\n onClick={onClickLabel}\n onClickRemove={onClickRemove ? onClickRemoveHandler : undefined}\n />\n </ChipSpacer>\n );\n};\n","import * as React from \"react\";\nimport {\n SearchFilterSectionChipModel,\n SearchFilterSectionOnClickRemoveOnChip,\n} from \"../../config/SearchFilterConfig\";\nimport { EmptyChip } from \"./EmptyChip\";\nimport { SearchFilterChip } from \"./SearchFilterChip\";\n\nexport interface SectionChipsProps<TFormModel, TSectionKey extends string> {\n sectionId: TSectionKey;\n chips?: Array<SearchFilterSectionChipModel>;\n emptyChipLabel?: string;\n onClickRemoveOnChip?: SearchFilterSectionOnClickRemoveOnChip<TFormModel>;\n}\n\nexport const SectionChips = function SectionChips<\n TFormModel,\n TSectionKey extends string\n>({\n sectionId,\n chips,\n emptyChipLabel,\n onClickRemoveOnChip,\n}: SectionChipsProps<TFormModel, TSectionKey>) {\n if (!chips?.length) {\n if (!emptyChipLabel) {\n return null;\n }\n return <EmptyChip sectionId={sectionId} label={emptyChipLabel} />;\n }\n\n return (\n <>\n {chips.map(({ label, value }) => (\n <SearchFilterChip\n key={value}\n label={label ?? sectionId}\n sectionId={sectionId}\n onClickRemove={onClickRemoveOnChip}\n value={value}\n />\n ))}\n </>\n );\n};\n","import { BooleanRecord, BooleanRecordOptions } from \"./BooleanRecordTypes\";\nimport {\n SearchFilterSectionChipModel,\n SearchFilterSectionOnClickRemoveOnChip,\n} from \"../../config/SearchFilterConfig\";\nimport { PickByValue, truthyKeysAsList } from \"@stenajs-webui/core\";\nimport { SectionChipsProps } from \"../../features/chips/SectionChips\";\n\nexport const createChipsPropsForBooleanRecord = <\n TFormModel,\n TSectionKey extends string,\n TField extends keyof PickByValue<TFormModel, BooleanRecord>\n>(\n formModel: TFormModel,\n fieldName: TField,\n options?: BooleanRecordOptions\n): Pick<\n SectionChipsProps<TFormModel, TSectionKey>,\n \"chips\" | \"onClickRemoveOnChip\"\n> => ({\n chips: createChipsForBooleanRecord(formModel[fieldName], options),\n onClickRemoveOnChip: createOnClickRemoveOnChipForBooleanRecord(\n formModel,\n fieldName\n ),\n});\n\nexport const createChipsForBooleanRecord = (\n booleanRecord: BooleanRecord,\n options?: BooleanRecordOptions\n): Array<SearchFilterSectionChipModel> =>\n truthyKeysAsList(booleanRecord).map((key) => {\n const option = options?.find((o) => o.value === key);\n return { value: key, label: option?.label ?? key };\n });\n\nexport const createOnClickRemoveOnChipForBooleanRecord = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, BooleanRecord>\n>(\n formModel: TFormModel,\n fieldName: TField\n): SearchFilterSectionOnClickRemoveOnChip<TFormModel> => {\n return ({ setFormModelFields, value }) => {\n const newRecord: BooleanRecord = { ...formModel[fieldName] };\n newRecord[value] = false;\n setFormModelFields(({\n [fieldName]: newRecord,\n } as unknown) as Partial<TFormModel>);\n };\n};\n","import * as React from \"react\";\nimport {\n SearchFilterSection,\n SearchFilterSectionProps,\n} from \"../../../components/SearchFilterSection\";\nimport { Column, Text } from \"@stenajs-webui/core\";\nimport { CollapsibleClickableContent } from \"@stenajs-webui/panels\";\nimport { Checkbox, ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { BooleanRecord, BooleanRecordOptions } from \"../BooleanRecordTypes\";\n\nexport interface SimpleCheckboxSectionProps<TSectionKey extends string>\n extends SearchFilterSectionProps<TSectionKey>,\n ValueAndOnValueChangeProps<BooleanRecord> {\n options?: BooleanRecordOptions;\n}\n\nexport const SimpleCheckboxListSection = <TSectionKey extends string>({\n options,\n value,\n onValueChange,\n ...sectionProps\n}: SimpleCheckboxSectionProps<TSectionKey>): React.ReactElement => (\n <SearchFilterSection disableContentPadding {...sectionProps}>\n <Column maxHeight={\"400px\"} overflowY={\"auto\"} flex={1}>\n {options?.map((d) => (\n <CollapsibleClickableContent\n key={d.value}\n onClick={() => {\n if (value && onValueChange) {\n const sel = !value[d.value];\n onValueChange({\n ...value,\n [d.value]: sel,\n });\n }\n }}\n contentLeft={<Checkbox tabIndex={-1} value={value?.[d.value]} />}\n >\n <Text>{d.label}</Text>\n </CollapsibleClickableContent>\n ))}\n </Column>\n </SearchFilterSection>\n);\n","import * as React from \"react\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport {\n SearchFilterSection,\n SearchFilterSectionProps,\n} from \"../../../components/SearchFilterSection\";\nimport { ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { BooleanRecord, BooleanRecordOptions } from \"../BooleanRecordTypes\";\nimport { ChipMultiSelect, ChipMultiSelectValue } from \"@stenajs-webui/select\";\nimport { truthyKeysAsList } from \"@stenajs-webui/core\";\n\ninterface ChipMultiSelectSectionProps<TSectionKey extends string>\n extends SearchFilterSectionProps<TSectionKey>,\n ValueAndOnValueChangeProps<BooleanRecord> {\n options?: BooleanRecordOptions;\n}\n\nexport const ChipMultiSelectSection = <TSectionKey extends string>({\n options,\n value,\n onValueChange,\n ...sectionProps\n}: ChipMultiSelectSectionProps<TSectionKey>): React.ReactElement => {\n const [text, setText] = useState<string>(\"\");\n\n const listValue = useMemo<Array<ChipMultiSelectValue>>(\n () =>\n value\n ? truthyKeysAsList(value).map<ChipMultiSelectValue>((key) => {\n const option = options?.find((o) => o.value === key);\n return { value: key, label: option?.label ?? key };\n })\n : [],\n [options, value]\n );\n\n const filteredOptions = useMemo(() => {\n return options?.filter(\n (p) =>\n p.value.toLocaleLowerCase().indexOf(text.toLocaleLowerCase()) > -1 ||\n p.label.toLocaleLowerCase().indexOf(text.toLocaleLowerCase()) > -1\n );\n }, [options, text]);\n\n const onValueChangeInternal = useCallback(\n (value: Array<ChipMultiSelectValue>) => {\n onValueChange?.(createBooleanRecordFromValue(value));\n },\n [onValueChange]\n );\n\n return (\n <SearchFilterSection {...sectionProps}>\n <ChipMultiSelect\n options={filteredOptions}\n value={listValue}\n onValueChange={onValueChangeInternal}\n inputValue={text}\n onInputChange={setText}\n />\n </SearchFilterSection>\n );\n};\n\nconst createBooleanRecordFromValue = (\n value: Array<ChipMultiSelectValue>\n): BooleanRecord => {\n return value.reduce<BooleanRecord>((sum, item) => {\n sum[item.value] = true;\n return sum;\n }, {});\n};\n","import { DateStringRange } from \"@stenajs-webui/calendar\";\nimport {\n SearchFilterSectionChipModel,\n SearchFilterSectionOnClickRemoveOnChip,\n} from \"../../config/SearchFilterConfig\";\nimport { PickByValue } from \"@stenajs-webui/core\";\nimport { SectionChipsProps } from \"../../features/chips/SectionChips\";\n\nexport const createChipsPropsForDateRange = <\n TFormModel,\n TSectionKey extends string,\n TField extends keyof PickByValue<TFormModel, string | undefined>\n>(\n formModel: TFormModel,\n startDateFieldName: TField,\n endDateFieldName: TField\n): Pick<\n SectionChipsProps<TFormModel, TSectionKey>,\n \"chips\" | \"onClickRemoveOnChip\"\n> => ({\n chips: createChipsForDateRange(\n formModel[startDateFieldName],\n formModel[endDateFieldName]\n ),\n onClickRemoveOnChip: createOnClickRemoveOnChipForDateRange(\n startDateFieldName,\n endDateFieldName\n ),\n});\n\nexport const createChipsForDateRange = (\n startDate: string | undefined,\n endDate: string | undefined\n): Array<SearchFilterSectionChipModel> => {\n if (!startDate && !endDate) {\n return [];\n }\n return [\n { value: \"dateRange\", label: `${startDate ?? \"\"} - ${endDate ?? \"\"}` },\n ];\n};\n\nexport const createOnClickRemoveOnChipForDateRange = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, DateStringRange>\n>(\n startDateFieldName: TField,\n endDateFieldName: TField\n): SearchFilterSectionOnClickRemoveOnChip<TFormModel> => {\n return ({ setFormModelFields }) => {\n setFormModelFields(({\n [startDateFieldName]: undefined,\n [endDateFieldName]: undefined,\n } as unknown) as Partial<TFormModel>);\n };\n};\n","import { PickByValue } from \"@stenajs-webui/core\";\nimport { DateRangeCalendarSectionProps } from \"./components/DateRangeCalendarSection\";\n\nexport const createDateRangeSectionProps = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, string | undefined>,\n TSectionKey extends string\n>(\n formModel: TFormModel,\n startDateFieldName: TField,\n endDateFieldName: TField\n): Pick<\n DateRangeCalendarSectionProps<TFormModel, TSectionKey>,\n \"value\" | \"onValueChange\"\n> => ({\n value: {\n startDate: formModel[startDateFieldName],\n endDate: formModel[endDateFieldName],\n },\n onValueChange: (value, { dispatch, actions }) => {\n const fields: Partial<TFormModel> = {\n [startDateFieldName]: value.startDate,\n [endDateFieldName]: value.endDate,\n } as any;\n dispatch(actions.setFormModelFields(fields));\n },\n});\n","import {\n DateRange,\n DateRangeCalendar,\n DateRangeCalendarProps,\n DateRangeFocusedInput,\n dateRangeToStrings,\n DateStringRange,\n stringsToDateRange,\n} from \"@stenajs-webui/calendar\";\nimport * as React from \"react\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { Box } from \"@stenajs-webui/core\";\nimport {\n SearchFilterSection,\n SearchFilterSectionProps,\n} from \"../../../components/SearchFilterSection\";\nimport {\n SearchFilterActions,\n SearchFilterDispatch,\n} from \"../../../redux/SearchFilterRedux\";\nimport { useSearchFilterDispatch } from \"../../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../../context/SearchFilterActionsContext\";\n\nexport interface DateRangeCalendarSectionProps<\n TFormModel,\n TSectionKey extends string\n> extends SearchFilterSectionProps<TSectionKey>,\n Omit<\n DateRangeCalendarProps<{}>,\n \"value\" | \"onValueChange\" | \"focusedInput\" | \"setFocusedInput\"\n > {\n value: DateStringRange;\n onValueChange: (\n value: DateStringRange,\n options: SetDateOptions<TFormModel, TSectionKey>\n ) => void;\n}\n\nexport interface SetDateOptions<TFormModel, TSectionKey extends string> {\n dispatch: SearchFilterDispatch<TFormModel>;\n actions: SearchFilterActions<TFormModel, TSectionKey>;\n}\n\nexport const DateRangeCalendarSection = <\n TFormModel,\n TSectionKey extends string\n>({\n value,\n onValueChange,\n sectionId,\n ...dateRangeCalendarProps\n}: DateRangeCalendarSectionProps<TFormModel, TSectionKey>) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions<TFormModel, TSectionKey>();\n\n const options = useMemo<SetDateOptions<TFormModel, TSectionKey>>(\n () => ({ dispatch, actions }),\n [actions, dispatch]\n );\n const [focusedInput, setFocusedInput] = useState<DateRangeFocusedInput>(\n \"startDate\"\n );\n\n const dateRangeValue = useMemo(() => stringsToDateRange(value), [value]);\n\n const onValueChangeHandler = useCallback(\n (value: DateRange) => {\n onValueChange(dateRangeToStrings(value), options);\n },\n [onValueChange, options]\n );\n\n return (\n <SearchFilterSection sectionId={sectionId}>\n <Box flex={1} alignItems={\"center\"}>\n <Box background={\"white\"} indent>\n <DateRangeCalendar\n setFocusedInput={setFocusedInput}\n focusedInput={focusedInput}\n value={dateRangeValue}\n onValueChange={onValueChangeHandler}\n {...dateRangeCalendarProps}\n />\n </Box>\n </Box>\n </SearchFilterSection>\n );\n};\n"],"names":["React","Row","Icon","faSlidersH","cssColor","Indent","Heading","FlatButton","faTimes","createContext","useContext","useCallback","Drawer","Column","SecondaryButton","Collapsible","CollapsibleContent","Spinner","Banner","upperFirst","lowerCase","combineReducers","reducerIdGate","createValueByIdReducer","createEntityReducer","reducerIdGateAction","createEntityActions","createValueByIdActions","useState","useReducer","styled","Chip","truthyKeysAsList","CollapsibleClickableContent","Checkbox","Text","useMemo","ChipMultiSelect","stringsToDateRange","dateRangeToStrings","Box","DateRangeCalendar"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/features/search-filter/components/SearchFilterPanelHeader.tsx","../src/features/search-filter/context/SearchFilterStateContext.ts","../src/features/search-filter/context/SearchFilterDispatchContext.ts","../src/features/search-filter/context/SearchFilterActionsContext.ts","../src/features/search-filter/components/SearchFilterDrawer.tsx","../src/features/search-filter/components/SearchFilterButton.tsx","../src/features/search-filter/components/SearchFilterSection.tsx","../src/features/search-filter/context/SearchFilterModelContext.ts","../src/features/search-filter/components/context/SearchFilterContext.tsx","../src/features/search-filter/redux/SearchFilterRedux.ts","../src/features/search-filter/hooks/UseLocalSearchFilterState.ts","../src/features/search-filter/components/context/SearchFilterLocalStateContext.tsx","../src/features/search-filter/features/chips/ChipSpacer.tsx","../src/features/search-filter/features/chips/SearchFilterChips.tsx","../src/features/search-filter/features/chips/EmptyChip.tsx","../src/features/search-filter/features/chips/SearchFilterChip.tsx","../src/features/search-filter/features/chips/SectionChips.tsx","../src/features/search-filter/section-factories/boolean-record/BooleanRecordChips.ts","../src/features/search-filter/section-factories/boolean-record/components/SimpleCheckboxListSection.tsx","../src/features/search-filter/section-factories/boolean-record/components/ChipMultiSelectSection.tsx","../src/features/search-filter/section-factories/date-range/DateRangeChips.ts","../src/features/search-filter/section-factories/date-range/DateRangePropsFactory.ts","../src/features/search-filter/section-factories/date-range/components/DateRangeCalendarSection.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Heading, Indent, Row } from \"@stenajs-webui/core\";\nimport { FlatButton, Icon } from \"@stenajs-webui/elements\";\nimport { faTimes } from \"@fortawesome/free-solid-svg-icons/faTimes\";\nimport { faSlidersH } from \"@fortawesome/free-solid-svg-icons/faSlidersH\";\nimport { cssColor } from \"@stenajs-webui/theme\";\n\ninterface SearchFilterPanelHeaderProps {\n onRequestClose: () => void;\n}\n\nexport const SearchFilterPanelHeader: React.FC<SearchFilterPanelHeaderProps> = ({\n onRequestClose,\n}) => {\n return (\n <Row\n height={\"48px\"}\n justifyContent={\"space-between\"}\n alignItems={\"center\"}\n indent={2}\n >\n <Row alignItems={\"center\"}>\n <Icon\n icon={faSlidersH}\n color={cssColor(\"--lhds-color-ui-500\")}\n size={12}\n />\n <Indent />\n <Heading variant={\"h4\"}>Filters</Heading>\n </Row>\n <FlatButton leftIcon={faTimes} onClick={onRequestClose} />\n </Row>\n );\n};\n","import { createContext, useContext } from \"react\";\nimport { SearchFilterState } from \"../redux/SearchFilterRedux\";\n\nexport const SearchFilterStateContext = createContext<\n SearchFilterState<unknown>\n>((null as unknown) as SearchFilterState<unknown>);\n\nexport const useSearchFilterState = <\n TFormModel\n>(): SearchFilterState<TFormModel> => {\n const c = useContext(SearchFilterStateContext);\n if (!c) {\n throw new Error(\n \"Missing search filter context, wrap components with SearchFilterContext component.\"\n );\n }\n return c as SearchFilterState<TFormModel>;\n};\n","import { createContext, useContext } from \"react\";\nimport { SearchFilterDispatch } from \"../redux/SearchFilterRedux\";\n\nexport const SearchFilterDispatchContext = createContext<\n SearchFilterDispatch<unknown>\n>((null as unknown) as SearchFilterDispatch<unknown>);\n\nexport const useSearchFilterDispatch = () => {\n const c = useContext(SearchFilterDispatchContext);\n if (!c) {\n throw new Error(\"Missing search filter dispatch context.\");\n }\n return c;\n};\n","import { createContext, useContext } from \"react\";\nimport { SearchFilterActions } from \"../redux/SearchFilterRedux\";\n\nexport const SearchFilterActionsContext = createContext<\n SearchFilterActions<unknown, any>\n>((null as unknown) as SearchFilterActions<unknown, any>);\n\nexport const useSearchFilterActions = <\n TFormModel,\n TSectionKey extends string\n>() => {\n const c = useContext(SearchFilterActionsContext);\n if (!c) {\n throw new Error(\"Missing search filter actions context.\");\n }\n return c as SearchFilterActions<TFormModel, TSectionKey>;\n};\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { Drawer, DrawerProps } from \"@stenajs-webui/modal\";\nimport { cssColor } from \"@stenajs-webui/theme\";\nimport { Column } from \"@stenajs-webui/core\";\nimport { SearchFilterPanelHeader } from \"./SearchFilterPanelHeader\";\nimport { useSearchFilterState } from \"../context/SearchFilterStateContext\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\n\ninterface SearchFilterDrawerProps\n extends Omit<DrawerProps, \"isOpen\" | \"onRequestClose\"> {}\n\nexport const SearchFilterDrawer: React.FC<SearchFilterDrawerProps> = ({\n children,\n ...drawerProps\n}) => {\n const {\n settings: { open },\n } = useSearchFilterState();\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const closeDrawer = useCallback(() => {\n dispatch(actions.closeFilters());\n }, [actions, dispatch]);\n\n return (\n <Drawer\n background={cssColor(\"--lhds-color-ui-50\")}\n width={\"370px\"}\n isOpen={open}\n onRequestClose={closeDrawer}\n {...drawerProps}\n >\n <Column>\n <SearchFilterPanelHeader onRequestClose={closeDrawer} />\n {children}\n </Column>\n </Drawer>\n );\n};\n","import { faSlidersH } from \"@fortawesome/free-solid-svg-icons/faSlidersH\";\nimport { SecondaryButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\n\ninterface SearchFilterDrawerButtonProps {\n label?: string;\n}\n\nexport const SearchFilterButton: React.VFC<SearchFilterDrawerButtonProps> = ({\n label = \"Filters\",\n}) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const onClickButton = useCallback(() => {\n dispatch(actions.openFilters());\n }, [actions, dispatch]);\n\n return (\n <SecondaryButton\n label={label}\n leftIcon={faSlidersH}\n onClick={onClickButton}\n />\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren, useCallback } from \"react\";\nimport { Row } from \"@stenajs-webui/core\";\nimport { Collapsible, CollapsibleContent } from \"@stenajs-webui/panels\";\nimport { lowerCase, upperFirst } from \"lodash\";\nimport { Banner, FlatButton, Spinner } from \"@stenajs-webui/elements\";\nimport { useSearchFilterState } from \"../context/SearchFilterStateContext\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\n\nexport interface SearchFilterSectionProps<TSectionKey extends string> {\n sectionId: TSectionKey;\n contentLeft?: React.ReactNode;\n contentRight?: React.ReactNode;\n disableContentPadding?: boolean;\n loading?: boolean;\n error?: string;\n onRetry?: () => void;\n label?: string;\n}\n\nexport const SearchFilterSection = function SearchFilterSection<\n TSectionKey extends string\n>({\n sectionId,\n label,\n contentLeft,\n contentRight,\n loading,\n error,\n onRetry,\n disableContentPadding,\n children,\n}: PropsWithChildren<SearchFilterSectionProps<TSectionKey>>) {\n const state = useSearchFilterState();\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const expanded = state.expandedSections.values[sectionId] ?? false;\n\n const onClickLabel = useCallback(() => {\n dispatch(actions.setSectionExpanded(sectionId, !expanded));\n }, [actions, dispatch, expanded, sectionId]);\n\n const activeLabel = label ?? formatColumnIdToHeaderCellLabel(sectionId);\n\n return (\n <Collapsible\n label={activeLabel}\n collapsed={!expanded}\n onClick={onClickLabel}\n contentLeft={contentLeft}\n contentRight={contentRight}\n >\n {loading ? (\n <CollapsibleContent>\n <Row spacing justifyContent={\"center\"} flex={1}>\n <Spinner size={\"small\"} />\n </Row>\n </CollapsibleContent>\n ) : error ? (\n <Banner\n variant={\"error\"}\n text={error}\n contentRight={\n onRetry ? <FlatButton label={\"Retry\"} onClick={onRetry} /> : null\n }\n />\n ) : disableContentPadding ? (\n children\n ) : (\n <CollapsibleContent>{children}</CollapsibleContent>\n )}\n </Collapsible>\n );\n};\n\nexport const formatColumnIdToHeaderCellLabel = (columnId: string): string =>\n upperFirst(lowerCase(columnId));\n","import { createContext, useContext } from \"react\";\n\nexport const SearchFilterModelContext = createContext<unknown>(null as unknown);\n\nexport const useSearchFilterModel = <TFormModel>(): TFormModel => {\n const c = useContext(SearchFilterModelContext);\n if (!c) {\n throw new Error(\n \"Missing search filter context, wrap components with SearchFilterContext component.\"\n );\n }\n return c as TFormModel;\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport {\n SearchFilterActions,\n SearchFilterDispatch,\n SearchFilterState,\n} from \"../../redux/SearchFilterRedux\";\nimport { SearchFilterDispatchContext } from \"../../context/SearchFilterDispatchContext\";\nimport { SearchFilterActionsContext } from \"../../context/SearchFilterActionsContext\";\nimport { SearchFilterStateContext } from \"../../context/SearchFilterStateContext\";\nimport { SearchFilterModelContext } from \"../../context/SearchFilterModelContext\";\n\ninterface SearchFilterScopeProps<TFormModel, TSectionKey extends string> {\n state: SearchFilterState<TFormModel>;\n dispatch: SearchFilterDispatch<TFormModel>;\n actions: SearchFilterActions<TFormModel, TSectionKey>;\n}\n\nexport const SearchFilterContext = function SearchFilterScope<\n TFormModel,\n TSectionKey extends string\n>({\n state,\n dispatch,\n actions,\n children,\n}: PropsWithChildren<SearchFilterScopeProps<TFormModel, TSectionKey>>) {\n return (\n <SearchFilterDispatchContext.Provider\n value={dispatch as SearchFilterDispatch<unknown>}\n >\n <SearchFilterActionsContext.Provider value={actions}>\n <SearchFilterStateContext.Provider value={state}>\n <SearchFilterModelContext.Provider value={state.formModel}>\n {children}\n </SearchFilterModelContext.Provider>\n </SearchFilterStateContext.Provider>\n </SearchFilterActionsContext.Provider>\n </SearchFilterDispatchContext.Provider>\n );\n};\n","import { combineReducers } from \"redux\";\nimport {\n createEntityActions,\n createEntityReducer,\n createValueByIdActions,\n createValueByIdReducer,\n EntityAction,\n EntityState,\n reducerIdGate,\n reducerIdGateAction,\n ReducerIdGateAction,\n ValueByIdAction,\n ValueByIdState,\n} from \"@stenajs-webui/redux\";\nimport { Dispatch } from \"react\";\n\nexport interface SearchFilterSettings {\n open: boolean;\n}\n\nexport type SearchFilterDispatch<TFormModel> = Dispatch<\n SearchFilterAction<TFormModel>\n>;\n\nexport interface SearchFilterState<TFormModel> {\n expandedSections: ValueByIdState<boolean>;\n formModel: EntityState<TFormModel>;\n settings: EntityState<SearchFilterSettings>;\n}\n\nexport type SearchFilterAction<TFormModel> =\n | ReducerIdGateAction<ValueByIdAction<boolean>>\n | ReducerIdGateAction<EntityAction<TFormModel>>\n | ReducerIdGateAction<EntityAction<SearchFilterSettings>>;\n\nexport const createSearchFilterInitialState = <TFormModel>(\n initialFormModel: TFormModel\n): SearchFilterState<TFormModel> => ({\n settings: {\n open: false,\n },\n formModel: initialFormModel,\n expandedSections: { values: {} },\n});\n\nexport const createSearchFilterReducer = <TFormModel>(\n reducerId: string,\n initialState: SearchFilterState<TFormModel>\n) =>\n combineReducers({\n expandedSections: reducerIdGate(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdReducer<boolean>(initialState.expandedSections)\n ),\n formModel: reducerIdGate(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityReducer<TFormModel>(initialState.formModel)\n ),\n settings: reducerIdGate(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityReducer<SearchFilterSettings>(initialState.settings)\n ),\n });\n\nexport interface SearchFilterActions<TFormModel, TSectionKey extends string> {\n openFilters: () => SearchFilterAction<TFormModel>;\n closeFilters: () => SearchFilterAction<TFormModel>;\n setFormModelFields: (\n fields: Partial<TFormModel>\n ) => SearchFilterAction<TFormModel>;\n clearFormModel: () => SearchFilterAction<TFormModel>;\n expandSection: (section: TSectionKey) => SearchFilterAction<TFormModel>;\n collapseSection: (section: TSectionKey) => SearchFilterAction<TFormModel>;\n setSectionExpanded: (\n section: TSectionKey,\n expanded: boolean\n ) => SearchFilterAction<TFormModel>;\n clearExpandedSections: () => SearchFilterAction<TFormModel>;\n}\n\nexport const createSearchFilterActions = <\n TFormModel,\n TSectionKey extends string\n>(\n reducerId: string,\n initialFormModel: TFormModel\n): SearchFilterActions<TFormModel, TSectionKey> => ({\n openFilters: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityActions<SearchFilterSettings>().setEntityFields({\n open: true,\n })\n ),\n closeFilters: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityActions<SearchFilterSettings>().setEntityFields({\n open: false,\n })\n ),\n setFormModelFields: (fields: Partial<TFormModel>) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityActions<TFormModel>().setEntityFields(fields)\n ),\n clearFormModel: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityActions<TFormModel>().setEntity(initialFormModel)\n ),\n expandSection: (section: TSectionKey) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, true)\n ),\n collapseSection: (section: TSectionKey) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, false)\n ),\n setSectionExpanded: (section: TSectionKey, expanded: boolean) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, expanded)\n ),\n clearExpandedSections: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().clearAllValues()\n ),\n});\n\nexport const getReducerIdFor = (\n reducerId: string,\n reducerIdSuffix: keyof SearchFilterState<unknown>\n): string => `${reducerId}.${reducerIdSuffix}`;\n","import {\n createSearchFilterActions,\n createSearchFilterReducer,\n SearchFilterState,\n} from \"../redux/SearchFilterRedux\";\nimport { useReducer, useState } from \"react\";\n\nexport const useLocalSearchFilterState = <\n TFormModel,\n TSectionKey extends string\n>(\n initialState: SearchFilterState<TFormModel>\n) => {\n const [reducer] = useState(() =>\n createSearchFilterReducer<TFormModel>(\"local\", initialState)\n );\n\n const [actions] = useState(() =>\n createSearchFilterActions<TFormModel, TSectionKey>(\n \"local\",\n initialState.formModel\n )\n );\n\n const [state, dispatch] = useReducer(reducer, initialState);\n\n return {\n actions,\n state,\n dispatch,\n };\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport { useLocalSearchFilterState } from \"../../hooks/UseLocalSearchFilterState\";\nimport { SearchFilterContext } from \"./SearchFilterContext\";\nimport { createSearchFilterInitialState } from \"../../redux/SearchFilterRedux\";\n\ninterface SearchFilterLocalScopeProps<TFormModel> {\n initialFormModel: TFormModel;\n}\n\nexport const SearchFilterLocalStateContext = function SearchFilterLocalScope<\n TFormModel\n>({\n initialFormModel,\n children,\n}: PropsWithChildren<SearchFilterLocalScopeProps<TFormModel>>) {\n const { state, actions, dispatch } = useLocalSearchFilterState(\n createSearchFilterInitialState(initialFormModel)\n );\n\n return (\n <SearchFilterContext state={state} actions={actions} dispatch={dispatch}>\n {children}\n </SearchFilterContext>\n );\n};\n","import styled from \"@emotion/styled\";\n\nexport const ChipSpacer = styled.div`\n padding: calc(var(--swui-metrics-spacing) / 2)\n calc(var(--swui-metrics-indent) / 2);\n`;\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { Row } from \"@stenajs-webui/core\";\nimport { ChipSpacer } from \"./ChipSpacer\";\nimport { FlatButton } from \"@stenajs-webui/elements\";\nimport { useSearchFilterDispatch } from \"../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../context/SearchFilterActionsContext\";\n\ninterface SearchFilterChipsProps {\n disableClearAllButton?: boolean;\n}\n\nexport const SearchFilterChips: React.FC<SearchFilterChipsProps> = ({\n children,\n disableClearAllButton = false,\n}) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const onClickClearAll = useCallback(\n () => dispatch(actions.clearFormModel()),\n [actions, dispatch]\n );\n\n return (\n <Row flexWrap={\"wrap\"}>\n {children}\n {!disableClearAllButton && (\n <ChipSpacer>\n <FlatButton\n size={\"small\"}\n label={\"Clear all\"}\n onClick={onClickClearAll}\n />\n </ChipSpacer>\n )}\n </Row>\n );\n};\n","import * as React from \"react\";\nimport { ChipSpacer } from \"./ChipSpacer\";\nimport { Chip } from \"@stenajs-webui/elements\";\nimport { useCallback } from \"react\";\nimport { useSearchFilterDispatch } from \"../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../context/SearchFilterActionsContext\";\n\ninterface EmptyChipProps<TSectionKey extends string> {\n sectionId: TSectionKey;\n label: string;\n}\n\nexport const EmptyChip = function EmptyChip<TSectionKey extends string>({\n label,\n sectionId,\n}: EmptyChipProps<TSectionKey>) {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const onClickLabel = useCallback(() => {\n dispatch(actions.clearExpandedSections());\n dispatch(actions.expandSection(sectionId));\n dispatch(actions.openFilters());\n }, [actions, dispatch, sectionId]);\n\n return (\n <ChipSpacer>\n <Chip label={label} variant={\"secondary\"} onClick={onClickLabel} />\n </ChipSpacer>\n );\n};\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { ChipSpacer } from \"./ChipSpacer\";\nimport { Chip } from \"@stenajs-webui/elements\";\nimport { useSearchFilterDispatch } from \"../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../context/SearchFilterActionsContext\";\nimport { SearchFilterSectionOnClickRemoveOnChip } from \"../../config/SearchFilterConfig\";\n\ninterface SearchFilterChipProps<TFormModel, TSectionKey> {\n sectionId: TSectionKey;\n label: string;\n value: string;\n onClickRemove?: SearchFilterSectionOnClickRemoveOnChip<TFormModel>;\n}\n\nexport const SearchFilterChip = function SearchFilterChip<\n TFormModel,\n TSectionKey extends string\n>({\n sectionId,\n label,\n value,\n onClickRemove,\n}: SearchFilterChipProps<TFormModel, TSectionKey>) {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const setFormModelFields = useCallback(\n (fields: Partial<TFormModel>) =>\n dispatch(actions.setFormModelFields(fields)),\n [dispatch, actions]\n );\n\n const onClickRemoveHandler = useCallback(() => {\n onClickRemove?.({ value, setFormModelFields });\n }, [onClickRemove, setFormModelFields, value]);\n\n const onClickLabel = useCallback(() => {\n dispatch(actions.clearExpandedSections());\n dispatch(actions.expandSection(sectionId));\n dispatch(actions.openFilters());\n }, [actions, dispatch, sectionId]);\n\n return (\n <ChipSpacer>\n <Chip\n label={label ?? sectionId}\n onClick={onClickLabel}\n onClickRemove={onClickRemove ? onClickRemoveHandler : undefined}\n />\n </ChipSpacer>\n );\n};\n","import * as React from \"react\";\nimport {\n SearchFilterSectionChipModel,\n SearchFilterSectionOnClickRemoveOnChip,\n} from \"../../config/SearchFilterConfig\";\nimport { EmptyChip } from \"./EmptyChip\";\nimport { SearchFilterChip } from \"./SearchFilterChip\";\n\nexport interface SectionChipsProps<TFormModel, TSectionKey extends string> {\n sectionId: TSectionKey;\n chips?: Array<SearchFilterSectionChipModel>;\n emptyChipLabel?: string;\n onClickRemoveOnChip?: SearchFilterSectionOnClickRemoveOnChip<TFormModel>;\n}\n\nexport const SectionChips = function SectionChips<\n TFormModel,\n TSectionKey extends string\n>({\n sectionId,\n chips,\n emptyChipLabel,\n onClickRemoveOnChip,\n}: SectionChipsProps<TFormModel, TSectionKey>) {\n if (!chips?.length) {\n if (!emptyChipLabel) {\n return null;\n }\n return <EmptyChip sectionId={sectionId} label={emptyChipLabel} />;\n }\n\n return (\n <>\n {chips.map(({ label, value }) => (\n <SearchFilterChip\n key={value}\n label={label ?? sectionId}\n sectionId={sectionId}\n onClickRemove={onClickRemoveOnChip}\n value={value}\n />\n ))}\n </>\n );\n};\n","import { BooleanRecord, BooleanRecordOptions } from \"./BooleanRecordTypes\";\nimport {\n SearchFilterSectionChipModel,\n SearchFilterSectionOnClickRemoveOnChip,\n} from \"../../config/SearchFilterConfig\";\nimport { PickByValue, truthyKeysAsList } from \"@stenajs-webui/core\";\nimport { SectionChipsProps } from \"../../features/chips/SectionChips\";\n\nexport const createChipsPropsForBooleanRecord = <\n TFormModel,\n TSectionKey extends string,\n TField extends keyof PickByValue<TFormModel, BooleanRecord>\n>(\n formModel: TFormModel,\n fieldName: TField,\n options?: BooleanRecordOptions\n): Pick<\n SectionChipsProps<TFormModel, TSectionKey>,\n \"chips\" | \"onClickRemoveOnChip\"\n> => ({\n chips: createChipsForBooleanRecord(formModel[fieldName], options),\n onClickRemoveOnChip: createOnClickRemoveOnChipForBooleanRecord(\n formModel,\n fieldName\n ),\n});\n\nexport const createChipsForBooleanRecord = (\n booleanRecord: BooleanRecord,\n options?: BooleanRecordOptions\n): Array<SearchFilterSectionChipModel> =>\n truthyKeysAsList(booleanRecord).map((key) => {\n const option = options?.find((o) => o.value === key);\n return { value: key, label: option?.label ?? key };\n });\n\nexport const createOnClickRemoveOnChipForBooleanRecord = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, BooleanRecord>\n>(\n formModel: TFormModel,\n fieldName: TField\n): SearchFilterSectionOnClickRemoveOnChip<TFormModel> => {\n return ({ setFormModelFields, value }) => {\n const newRecord: BooleanRecord = { ...formModel[fieldName] };\n newRecord[value] = false;\n setFormModelFields(({\n [fieldName]: newRecord,\n } as unknown) as Partial<TFormModel>);\n };\n};\n","import * as React from \"react\";\nimport {\n SearchFilterSection,\n SearchFilterSectionProps,\n} from \"../../../components/SearchFilterSection\";\nimport { Column, Text } from \"@stenajs-webui/core\";\nimport { CollapsibleClickableContent } from \"@stenajs-webui/panels\";\nimport { Checkbox, ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { BooleanRecord, BooleanRecordOptions } from \"../BooleanRecordTypes\";\n\nexport interface SimpleCheckboxSectionProps<TSectionKey extends string>\n extends SearchFilterSectionProps<TSectionKey>,\n ValueAndOnValueChangeProps<BooleanRecord> {\n options?: BooleanRecordOptions;\n}\n\nexport const SimpleCheckboxListSection = <TSectionKey extends string>({\n options,\n value,\n onValueChange,\n ...sectionProps\n}: SimpleCheckboxSectionProps<TSectionKey>): React.ReactElement => (\n <SearchFilterSection disableContentPadding {...sectionProps}>\n <Column maxHeight={\"400px\"} overflowY={\"auto\"} flex={1}>\n {options?.map((d) => (\n <CollapsibleClickableContent\n key={d.value}\n onClick={() => {\n if (value && onValueChange) {\n const sel = !value[d.value];\n onValueChange({\n ...value,\n [d.value]: sel,\n });\n }\n }}\n contentLeft={<Checkbox tabIndex={-1} value={value?.[d.value]} />}\n >\n <Text>{d.label}</Text>\n </CollapsibleClickableContent>\n ))}\n </Column>\n </SearchFilterSection>\n);\n","import * as React from \"react\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport {\n SearchFilterSection,\n SearchFilterSectionProps,\n} from \"../../../components/SearchFilterSection\";\nimport { ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { BooleanRecord, BooleanRecordOptions } from \"../BooleanRecordTypes\";\nimport { ChipMultiSelect, ChipMultiSelectValue } from \"@stenajs-webui/select\";\nimport { truthyKeysAsList } from \"@stenajs-webui/core\";\n\ninterface ChipMultiSelectSectionProps<TSectionKey extends string>\n extends SearchFilterSectionProps<TSectionKey>,\n ValueAndOnValueChangeProps<BooleanRecord> {\n noneSelectedLabel?: string;\n options?: BooleanRecordOptions;\n}\n\nexport const ChipMultiSelectSection = <TSectionKey extends string>({\n options,\n value,\n noneSelectedLabel,\n onValueChange,\n ...sectionProps\n}: ChipMultiSelectSectionProps<TSectionKey>): React.ReactElement => {\n const [text, setText] = useState<string>(\"\");\n\n const listValue = useMemo<Array<ChipMultiSelectValue>>(\n () =>\n value\n ? truthyKeysAsList(value).map<ChipMultiSelectValue>((key) => {\n const option = options?.find((o) => o.value === key);\n return { value: key, label: option?.label ?? key };\n })\n : [],\n [options, value]\n );\n\n const filteredOptions = useMemo(() => {\n return options?.filter(\n (p) =>\n p.value.toLocaleLowerCase().indexOf(text.toLocaleLowerCase()) > -1 ||\n p.label.toLocaleLowerCase().indexOf(text.toLocaleLowerCase()) > -1\n );\n }, [options, text]);\n\n const onValueChangeInternal = useCallback(\n (value: Array<ChipMultiSelectValue>) => {\n onValueChange?.(createBooleanRecordFromValue(value));\n },\n [onValueChange]\n );\n\n return (\n <SearchFilterSection {...sectionProps}>\n <ChipMultiSelect\n options={filteredOptions}\n value={listValue}\n onValueChange={onValueChangeInternal}\n inputValue={text}\n noneSelectedLabel={noneSelectedLabel}\n onInputChange={setText}\n closeMenuOnSelect={false}\n />\n </SearchFilterSection>\n );\n};\n\nconst createBooleanRecordFromValue = (\n value: Array<ChipMultiSelectValue>\n): BooleanRecord => {\n return value.reduce<BooleanRecord>((sum, item) => {\n sum[item.value] = true;\n return sum;\n }, {});\n};\n","import { DateStringRange } from \"@stenajs-webui/calendar\";\nimport {\n SearchFilterSectionChipModel,\n SearchFilterSectionOnClickRemoveOnChip,\n} from \"../../config/SearchFilterConfig\";\nimport { PickByValue } from \"@stenajs-webui/core\";\nimport { SectionChipsProps } from \"../../features/chips/SectionChips\";\n\nexport const createChipsPropsForDateRange = <\n TFormModel,\n TSectionKey extends string,\n TField extends keyof PickByValue<TFormModel, string | undefined>\n>(\n formModel: TFormModel,\n startDateFieldName: TField,\n endDateFieldName: TField\n): Pick<\n SectionChipsProps<TFormModel, TSectionKey>,\n \"chips\" | \"onClickRemoveOnChip\"\n> => ({\n chips: createChipsForDateRange(\n formModel[startDateFieldName],\n formModel[endDateFieldName]\n ),\n onClickRemoveOnChip: createOnClickRemoveOnChipForDateRange(\n startDateFieldName,\n endDateFieldName\n ),\n});\n\nexport const createChipsForDateRange = (\n startDate: string | undefined,\n endDate: string | undefined\n): Array<SearchFilterSectionChipModel> => {\n if (!startDate && !endDate) {\n return [];\n }\n return [\n { value: \"dateRange\", label: `${startDate ?? \"\"} - ${endDate ?? \"\"}` },\n ];\n};\n\nexport const createOnClickRemoveOnChipForDateRange = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, DateStringRange>\n>(\n startDateFieldName: TField,\n endDateFieldName: TField\n): SearchFilterSectionOnClickRemoveOnChip<TFormModel> => {\n return ({ setFormModelFields }) => {\n setFormModelFields(({\n [startDateFieldName]: undefined,\n [endDateFieldName]: undefined,\n } as unknown) as Partial<TFormModel>);\n };\n};\n","import { PickByValue } from \"@stenajs-webui/core\";\nimport { DateRangeCalendarSectionProps } from \"./components/DateRangeCalendarSection\";\n\nexport const createDateRangeSectionProps = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, string | undefined>,\n TSectionKey extends string\n>(\n formModel: TFormModel,\n startDateFieldName: TField,\n endDateFieldName: TField\n): Pick<\n DateRangeCalendarSectionProps<TFormModel, TSectionKey>,\n \"value\" | \"onValueChange\"\n> => ({\n value: {\n startDate: formModel[startDateFieldName],\n endDate: formModel[endDateFieldName],\n },\n onValueChange: (value, { dispatch, actions }) => {\n const fields: Partial<TFormModel> = {\n [startDateFieldName]: value.startDate,\n [endDateFieldName]: value.endDate,\n } as any;\n dispatch(actions.setFormModelFields(fields));\n },\n});\n","import {\n DateRange,\n DateRangeCalendar,\n DateRangeCalendarProps,\n DateRangeFocusedInput,\n dateRangeToStrings,\n DateStringRange,\n stringsToDateRange,\n} from \"@stenajs-webui/calendar\";\nimport * as React from \"react\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { Box } from \"@stenajs-webui/core\";\nimport {\n SearchFilterSection,\n SearchFilterSectionProps,\n} from \"../../../components/SearchFilterSection\";\nimport {\n SearchFilterActions,\n SearchFilterDispatch,\n} from \"../../../redux/SearchFilterRedux\";\nimport { useSearchFilterDispatch } from \"../../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../../context/SearchFilterActionsContext\";\n\nexport interface DateRangeCalendarSectionProps<\n TFormModel,\n TSectionKey extends string\n> extends SearchFilterSectionProps<TSectionKey>,\n Omit<\n DateRangeCalendarProps<{}>,\n \"value\" | \"onValueChange\" | \"focusedInput\" | \"setFocusedInput\"\n > {\n value: DateStringRange;\n onValueChange: (\n value: DateStringRange,\n options: SetDateOptions<TFormModel, TSectionKey>\n ) => void;\n}\n\nexport interface SetDateOptions<TFormModel, TSectionKey extends string> {\n dispatch: SearchFilterDispatch<TFormModel>;\n actions: SearchFilterActions<TFormModel, TSectionKey>;\n}\n\nexport const DateRangeCalendarSection = <\n TFormModel,\n TSectionKey extends string\n>({\n value,\n onValueChange,\n sectionId,\n ...dateRangeCalendarProps\n}: DateRangeCalendarSectionProps<TFormModel, TSectionKey>) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions<TFormModel, TSectionKey>();\n\n const options = useMemo<SetDateOptions<TFormModel, TSectionKey>>(\n () => ({ dispatch, actions }),\n [actions, dispatch]\n );\n const [focusedInput, setFocusedInput] = useState<DateRangeFocusedInput>(\n \"startDate\"\n );\n\n const dateRangeValue = useMemo(() => stringsToDateRange(value), [value]);\n\n const onValueChangeHandler = useCallback(\n (value: DateRange) => {\n onValueChange(dateRangeToStrings(value), options);\n },\n [onValueChange, options]\n );\n\n return (\n <SearchFilterSection sectionId={sectionId}>\n <Box flex={1} alignItems={\"center\"}>\n <Box background={\"white\"} indent>\n <DateRangeCalendar\n setFocusedInput={setFocusedInput}\n focusedInput={focusedInput}\n value={dateRangeValue}\n onValueChange={onValueChangeHandler}\n {...dateRangeCalendarProps}\n />\n </Box>\n </Box>\n </SearchFilterSection>\n );\n};\n"],"names":["React","Row","Icon","faSlidersH","cssColor","Indent","Heading","FlatButton","faTimes","createContext","useContext","useCallback","Drawer","Column","SecondaryButton","Collapsible","CollapsibleContent","Spinner","Banner","upperFirst","lowerCase","combineReducers","reducerIdGate","createValueByIdReducer","createEntityReducer","reducerIdGateAction","createEntityActions","createValueByIdActions","useState","useReducer","styled","Chip","truthyKeysAsList","CollapsibleClickableContent","Checkbox","Text","useMemo","ChipMultiSelect","stringsToDateRange","dateRangeToStrings","Box","DateRangeCalendar"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stenajs-webui/filter",
3
- "version": "15.0.0-alpha.6",
3
+ "version": "15.0.0",
4
4
  "description": "",
5
5
  "author": "mattias800",
6
6
  "license": "MIT",
@@ -27,15 +27,15 @@
27
27
  "deploy": "gh-pages -d example/build"
28
28
  },
29
29
  "dependencies": {
30
- "@stenajs-webui/calendar": "15.0.0-alpha.6",
31
- "@stenajs-webui/core": "15.0.0-alpha.6",
32
- "@stenajs-webui/elements": "15.0.0-alpha.6",
33
- "@stenajs-webui/forms": "15.0.0-alpha.6",
34
- "@stenajs-webui/modal": "15.0.0-alpha.6",
35
- "@stenajs-webui/panels": "15.0.0-alpha.6",
36
- "@stenajs-webui/redux": "15.0.0-alpha.6",
37
- "@stenajs-webui/select": "15.0.0-alpha.6",
38
- "@stenajs-webui/theme": "15.0.0-alpha.6",
30
+ "@stenajs-webui/calendar": "^15.0.0",
31
+ "@stenajs-webui/core": "^15.0.0",
32
+ "@stenajs-webui/elements": "^15.0.0",
33
+ "@stenajs-webui/forms": "^15.0.0",
34
+ "@stenajs-webui/modal": "^15.0.0",
35
+ "@stenajs-webui/panels": "^15.0.0",
36
+ "@stenajs-webui/redux": "^15.0.0",
37
+ "@stenajs-webui/select": "^15.0.0",
38
+ "@stenajs-webui/theme": "^15.0.0",
39
39
  "date-fns": "2.26.0"
40
40
  },
41
41
  "peerDependencies": {
@@ -64,5 +64,5 @@
64
64
  "files": [
65
65
  "dist"
66
66
  ],
67
- "gitHead": "8fdfb7b97167925672b89b6a8f8a30a67241abb7"
67
+ "gitHead": "ae5d6a4c9262b72f553eff709470d8d50a8b57ba"
68
68
  }