@stenajs-webui/filter 21.24.1 → 21.24.3

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.
package/dist/index.es.js CHANGED
@@ -1,28 +1,28 @@
1
- import { jsx as c, jsxs as v, Fragment as T } from "react/jsx-runtime";
2
- import { createContext as M, useContext as L, useCallback as u, useState as w, useReducer as W, useMemo as R } from "react";
1
+ import { jsx as c, jsxs as M, Fragment as T } from "react/jsx-runtime";
2
+ import { createContext as v, useContext as L, useCallback as u, useState as w, useReducer as W, useMemo as R } from "react";
3
3
  import { DrawerHeader as Y, Drawer as J } from "@stenajs-webui/modal";
4
4
  import { cssColor as Q } from "@stenajs-webui/theme";
5
5
  import { Column as D, Box as y, Row as O, Space as U, Text as X, truthyKeysAsList as V } from "@stenajs-webui/core";
6
6
  import { SecondaryButton as Z, stenaSlidersMini as _, MenuButton as I, Spinner as N, Banner as ee, FlatButton as j, ContentMenuButton as te, stenaClean as ne, Chip as H } from "@stenajs-webui/elements";
7
7
  import { upperFirst as re, lowerCase as oe } from "lodash-es";
8
8
  import { combineReducers as ce } from "redux";
9
- import { reducerIdGate as B, createValueByIdReducer as se, createEntityReducer as P, reducerIdGateAction as C, createEntityActions as g, createValueByIdActions as b } from "@stenajs-webui/redux";
9
+ import { reducerIdGate as B, createValueByIdReducer as se, createEntityReducer as P, reducerIdGateAction as f, createEntityActions as g, createValueByIdActions as b } from "@stenajs-webui/redux";
10
10
  import { Checkbox as ae } from "@stenajs-webui/forms";
11
11
  import { ChipMultiSelect as le } from "@stenajs-webui/select";
12
12
  import { stringsToDateRange as ie, dateRangeToStrings as de, DateRangeCalendar as ue } from "@stenajs-webui/calendar";
13
- const he = ({ header: e = "Filter", ...t }) => /* @__PURE__ */ c(Y, { ...t, header: e }), $ = M(null), z = () => {
13
+ const he = ({ header: e = "Filter", ...t }) => /* @__PURE__ */ c(Y, { ...t, header: e }), $ = v(null), z = () => {
14
14
  const e = L($);
15
15
  if (!e)
16
16
  throw new Error(
17
17
  "Missing search filter context, wrap components with SearchFilterContext component."
18
18
  );
19
19
  return e;
20
- }, q = M(null), F = () => {
20
+ }, q = v(null), F = () => {
21
21
  const e = L(q);
22
22
  if (!e)
23
23
  throw new Error("Missing search filter dispatch context.");
24
24
  return e;
25
- }, G = M(null), x = () => {
25
+ }, G = v(null), x = () => {
26
26
  const e = L(G);
27
27
  if (!e)
28
28
  throw new Error("Missing search filter actions context.");
@@ -45,7 +45,7 @@ const he = ({ header: e = "Filter", ...t }) => /* @__PURE__ */ c(Y, { ...t, head
45
45
  isOpen: o,
46
46
  onRequestClose: i,
47
47
  ...r,
48
- children: /* @__PURE__ */ v(
48
+ children: /* @__PURE__ */ M(
49
49
  D,
50
50
  {
51
51
  height: "100%",
@@ -92,18 +92,18 @@ const he = ({ header: e = "Filter", ...t }) => /* @__PURE__ */ c(Y, { ...t, head
92
92
  leftIcon: h,
93
93
  contentRight: p
94
94
  }) {
95
- const l = z(), S = F(), m = x(), f = l.expandedSections.values[t] ?? !1, E = u(() => {
96
- S(m.setSectionExpanded(t, !f));
97
- }, [m, S, f, t]), k = n ?? pe(t);
98
- return /* @__PURE__ */ v(T, { children: [
95
+ const l = z(), S = F(), m = x(), C = l.expandedSections.values[t] ?? !1, E = u(() => {
96
+ S(m.setSectionExpanded(t, !C));
97
+ }, [m, S, C, t]), k = n ?? pe(t);
98
+ return /* @__PURE__ */ M(T, { children: [
99
99
  /* @__PURE__ */ c(
100
100
  I,
101
101
  {
102
102
  label: k,
103
103
  leftIcon: h,
104
104
  expandable: !0,
105
- expanded: f,
106
- selected: f,
105
+ expanded: C,
106
+ selected: C,
107
107
  onClick: E,
108
108
  right: p,
109
109
  children: r ? /* @__PURE__ */ c(O, { spacing: !0, justifyContent: "center", flex: 1, children: /* @__PURE__ */ c(N, { size: "small" }) }) : o ? /* @__PURE__ */ c(
@@ -116,7 +116,7 @@ const he = ({ header: e = "Filter", ...t }) => /* @__PURE__ */ c(Y, { ...t, head
116
116
  ) : i
117
117
  }
118
118
  ),
119
- f && /* @__PURE__ */ c(U, {})
119
+ C && /* @__PURE__ */ c(U, {})
120
120
  ] });
121
121
  }, pe = (e) => re(oe(e)), Ge = ({
122
122
  children: e,
@@ -133,7 +133,7 @@ const he = ({ header: e = "Filter", ...t }) => /* @__PURE__ */ c(Y, { ...t, head
133
133
  ...t,
134
134
  children: e
135
135
  }
136
- ), K = M(null), Ke = () => {
136
+ ), K = v(null), Ke = () => {
137
137
  const e = L(K);
138
138
  if (!e)
139
139
  throw new Error(
@@ -153,13 +153,13 @@ const he = ({ header: e = "Filter", ...t }) => /* @__PURE__ */ c(Y, { ...t, head
153
153
  children: /* @__PURE__ */ c(G.Provider, { value: r, children: /* @__PURE__ */ c($.Provider, { value: t, children: /* @__PURE__ */ c(K.Provider, { value: t.formModel, children: o }) }) })
154
154
  }
155
155
  );
156
- }, Ce = (e) => ({
156
+ }, fe = (e) => ({
157
157
  settings: {
158
158
  open: !1
159
159
  },
160
160
  formModel: e,
161
161
  expandedSections: { values: {} }
162
- }), fe = (e, t) => ce({
162
+ }), Ce = (e, t) => ce({
163
163
  expandedSections: B(
164
164
  d(e, "expandedSections"),
165
165
  se(t.expandedSections)
@@ -173,45 +173,45 @@ const he = ({ header: e = "Filter", ...t }) => /* @__PURE__ */ c(Y, { ...t, head
173
173
  P(t.settings)
174
174
  )
175
175
  }), Fe = (e, t) => ({
176
- openFilters: () => C(
176
+ openFilters: () => f(
177
177
  d(e, "settings"),
178
178
  g().setEntityFields({
179
179
  open: !0
180
180
  })
181
181
  ),
182
- closeFilters: () => C(
182
+ closeFilters: () => f(
183
183
  d(e, "settings"),
184
184
  g().setEntityFields({
185
185
  open: !1
186
186
  })
187
187
  ),
188
- setFormModelFields: (n) => C(
188
+ setFormModelFields: (n) => f(
189
189
  d(e, "formModel"),
190
190
  g().setEntityFields(n)
191
191
  ),
192
- clearFormModel: () => C(
192
+ clearFormModel: () => f(
193
193
  d(e, "formModel"),
194
194
  g().setEntity(t)
195
195
  ),
196
- expandSection: (n) => C(
196
+ expandSection: (n) => f(
197
197
  d(e, "expandedSections"),
198
198
  b().setValue(n, !0)
199
199
  ),
200
- collapseSection: (n) => C(
200
+ collapseSection: (n) => f(
201
201
  d(e, "expandedSections"),
202
202
  b().setValue(n, !1)
203
203
  ),
204
- setSectionExpanded: (n, r) => C(
204
+ setSectionExpanded: (n, r) => f(
205
205
  d(e, "expandedSections"),
206
206
  b().setValue(n, r)
207
207
  ),
208
- clearExpandedSections: () => C(
208
+ clearExpandedSections: () => f(
209
209
  d(e, "expandedSections"),
210
210
  b().clearAllValues()
211
211
  )
212
212
  }), d = (e, t) => `${e}.${t}`, xe = (e) => {
213
213
  const [t] = w(
214
- () => fe("local", e)
214
+ () => Ce("local", e)
215
215
  ), [n] = w(
216
216
  () => Fe(
217
217
  "local",
@@ -228,13 +228,13 @@ const he = ({ header: e = "Filter", ...t }) => /* @__PURE__ */ c(Y, { ...t, head
228
228
  children: n
229
229
  }) {
230
230
  const { state: r, actions: o, dispatch: s } = xe(
231
- Ce(t)
231
+ fe(t)
232
232
  );
233
233
  return /* @__PURE__ */ c(Se, { state: r, actions: o, dispatch: s, children: n });
234
234
  }, me = ({
235
235
  label: e,
236
236
  ...t
237
- }) => /* @__PURE__ */ c(te, { children: /* @__PURE__ */ v(O, { gap: 2, alignItems: "center", justifyContent: "flex-start", children: [
237
+ }) => /* @__PURE__ */ c(te, { children: /* @__PURE__ */ M(O, { gap: 2, alignItems: "center", justifyContent: "flex-start", children: [
238
238
  /* @__PURE__ */ c(ae, { ...t }),
239
239
  /* @__PURE__ */ c(X, { children: e })
240
240
  ] }) }), ge = ({
@@ -256,7 +256,7 @@ const he = ({ header: e = "Filter", ...t }) => /* @__PURE__ */ c(Y, { ...t, head
256
256
  () => n(r.clearFormModel()),
257
257
  [r, n]
258
258
  );
259
- return /* @__PURE__ */ v(O, { flexWrap: "wrap", alignItems: "center", gap: !0, children: [
259
+ return /* @__PURE__ */ M(O, { flexWrap: "wrap", alignItems: "center", gap: !0, children: [
260
260
  e,
261
261
  !t && /* @__PURE__ */ c(
262
262
  j,
@@ -319,14 +319,14 @@ const he = ({ header: e = "Filter", ...t }) => /* @__PURE__ */ c(Y, { ...t, head
319
319
  e[t],
320
320
  n
321
321
  ),
322
- onClickRemoveOnChip: ve(
322
+ onClickRemoveOnChip: Me(
323
323
  e,
324
324
  t
325
325
  )
326
326
  }), Re = (e, t) => V(e).map((n) => {
327
327
  const r = t == null ? void 0 : t.find((o) => o.value === n);
328
328
  return { value: n, label: (r == null ? void 0 : r.label) ?? n };
329
- }), ve = (e, t) => ({ setFormModelFields: n, value: r }) => {
329
+ }), Me = (e, t) => ({ setFormModelFields: n, value: r }) => {
330
330
  const o = { ...e[t] };
331
331
  o[r] = !1, n({
332
332
  [t]: o
@@ -364,7 +364,7 @@ const he = ({ header: e = "Filter", ...t }) => /* @__PURE__ */ c(Y, { ...t, head
364
364
  (l) => l.value.toLocaleLowerCase().indexOf(s.toLocaleLowerCase()) > -1 || l.label.toLocaleLowerCase().indexOf(s.toLocaleLowerCase()) > -1
365
365
  ), [e, s]), p = u(
366
366
  (l) => {
367
- r == null || r(Me(l));
367
+ r == null || r(ve(l));
368
368
  },
369
369
  [r]
370
370
  );
@@ -380,7 +380,7 @@ const he = ({ header: e = "Filter", ...t }) => /* @__PURE__ */ c(Y, { ...t, head
380
380
  closeMenuOnSelect: !1
381
381
  }
382
382
  ) });
383
- }, Me = (e) => e.reduce((t, n) => (t[n.value] = !0, t), {}), Ze = (e, t, n) => ({
383
+ }, ve = (e) => e.reduce((t, n) => (t[n.value] = !0, t), {}), Ze = (e, t, n) => ({
384
384
  chips: Le(
385
385
  e[t],
386
386
  e[n]
@@ -422,7 +422,7 @@ const he = ({ header: e = "Filter", ...t }) => /* @__PURE__ */ c(Y, { ...t, head
422
422
  const h = F(), p = x(), l = R(
423
423
  () => ({ dispatch: h, actions: p }),
424
424
  [p, h]
425
- ), [S, m] = w("startDate"), f = R(() => ie(e), [e]), E = u(
425
+ ), [S, m] = w("startDate"), C = R(() => ie(e), [e]), E = u(
426
426
  (k) => {
427
427
  t(de(k), l);
428
428
  },
@@ -441,7 +441,7 @@ const he = ({ header: e = "Filter", ...t }) => /* @__PURE__ */ c(Y, { ...t, head
441
441
  {
442
442
  setFocusedInput: m,
443
443
  focusedInput: S,
444
- value: f,
444
+ value: C,
445
445
  onValueChange: E,
446
446
  ...i
447
447
  }
@@ -475,11 +475,11 @@ export {
475
475
  Qe as createChipsPropsForBooleanRecord,
476
476
  Ze as createChipsPropsForDateRange,
477
477
  _e as createDateRangeSectionProps,
478
- ve as createOnClickRemoveOnChipForBooleanRecord,
478
+ Me as createOnClickRemoveOnChipForBooleanRecord,
479
479
  Ee as createOnClickRemoveOnChipForDateRange,
480
480
  Fe as createSearchFilterActions,
481
- Ce as createSearchFilterInitialState,
482
- fe as createSearchFilterReducer,
481
+ fe as createSearchFilterInitialState,
482
+ Ce as createSearchFilterReducer,
483
483
  pe as formatColumnIdToHeaderCellLabel,
484
484
  d as getReducerIdFor,
485
485
  xe as useLocalSearchFilterState,
@@ -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/components/StickyFooter.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/filter-checkbox/FilterCheckbox.tsx","../src/features/search-filter/features/filter-checkbox/FilterCheckboxList.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 { ReactNode } from \"react\";\nimport { DrawerHeader } from \"@stenajs-webui/modal\";\n\ninterface SearchFilterPanelHeaderProps {\n onRequestClose: () => void;\n header?: string;\n contentRight?: ReactNode;\n}\n\nexport const SearchFilterPanelHeader: React.FC<\n SearchFilterPanelHeaderProps\n> = ({ header = \"Filter\", ...props }) => {\n return <DrawerHeader {...props} header={header} />;\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\n/* eslint-disable @typescript-eslint/no-explicit-any */\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 { ReactNode, useCallback } from \"react\";\nimport { Drawer, DrawerProps } from \"@stenajs-webui/modal\";\nimport { cssColor } from \"@stenajs-webui/theme\";\nimport { Box, 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 header?: string;\n headerContentRight?: ReactNode;\n}\n\nexport const SearchFilterDrawer: React.FC<SearchFilterDrawerProps> = ({\n children,\n header,\n headerContentRight,\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 floating\n isOpen={open}\n onRequestClose={closeDrawer}\n {...drawerProps}\n >\n <Column\n height={\"100%\"}\n borderRadius={\"var(--swui-border-radius)\"}\n background={cssColor(\"--lhds-color-ui-50\")}\n >\n <SearchFilterPanelHeader\n onRequestClose={closeDrawer}\n header={header}\n contentRight={headerContentRight}\n />\n <Box spacing={1} indent={1} gap={1}>\n {children}\n </Box>\n </Column>\n </Drawer>\n );\n};\n","import { SecondaryButton, stenaSlidersMini } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\nimport { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\n\ninterface SearchFilterDrawerButtonProps {\n label?: string;\n leftIcon?: IconDefinition;\n}\n\nexport const SearchFilterButton: React.FC<SearchFilterDrawerButtonProps> = ({\n label = \"Filters\",\n leftIcon = stenaSlidersMini,\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={leftIcon}\n onClick={onClickButton}\n />\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren, useCallback } from \"react\";\nimport { Row, Space } from \"@stenajs-webui/core\";\nimport { lowerCase, upperFirst } from \"lodash-es\";\nimport {\n Banner,\n FlatButton,\n MenuButton,\n Spinner,\n} from \"@stenajs-webui/elements\";\nimport { useSearchFilterState } from \"../context/SearchFilterStateContext\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\nimport { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\n\nexport interface SearchFilterSectionProps<TSectionKey extends string> {\n sectionId: TSectionKey;\n label?: string;\n leftIcon?: IconDefinition;\n contentRight?: React.ReactNode;\n disableContentPadding?: boolean;\n loading?: boolean;\n error?: string;\n onRetry?: () => void;\n}\n\nexport const SearchFilterSection = function SearchFilterSection<\n TSectionKey extends string,\n>({\n sectionId,\n label,\n loading,\n error,\n onRetry,\n disableContentPadding,\n children,\n leftIcon,\n contentRight,\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 <>\n <MenuButton\n label={activeLabel}\n leftIcon={leftIcon}\n expandable\n expanded={expanded}\n selected={expanded}\n onClick={onClickLabel}\n right={contentRight}\n >\n {loading ? (\n <Row spacing justifyContent={\"center\"} flex={1}>\n <Spinner size={\"small\"} />\n </Row>\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 children\n )}\n </MenuButton>\n {expanded && <Space />}\n </>\n );\n};\n\nexport const formatColumnIdToHeaderCellLabel = (columnId: string): string =>\n upperFirst(lowerCase(columnId));\n","import { BoxProps, Column } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\n\nexport interface StickySearchButtonProps extends Pick<BoxProps, \"gap\"> {\n children?: ReactNode;\n}\n\nexport const StickyFooter: React.FC<StickySearchButtonProps> = ({\n children,\n ...boxProps\n}) => {\n return (\n <Column\n style={{ marginTop: \"auto\" }}\n justifyContent={\"center\"}\n spacing={2}\n indent\n shadow={\"popover\"}\n zIndex={1}\n {...boxProps}\n >\n {children}\n </Column>\n );\n};\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 * as React from \"react\";\nimport { Row, Text } from \"@stenajs-webui/core\";\nimport { ContentMenuButton } from \"@stenajs-webui/elements\";\nimport { Checkbox, CheckboxProps } from \"@stenajs-webui/forms\";\n\nexport interface FilterCheckboxProps extends CheckboxProps {\n label: string;\n}\n\nexport const FilterCheckbox: React.FC<FilterCheckboxProps> = ({\n label,\n ...checkboxProps\n}) => {\n return (\n <ContentMenuButton>\n <Row gap={2} alignItems={\"center\"} justifyContent={\"flex-start\"}>\n <Checkbox {...checkboxProps} />\n <Text>{label}</Text>\n </Row>\n </ContentMenuButton>\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport { Column } from \"@stenajs-webui/core\";\n\nexport interface FilterCheckboxListProps extends PropsWithChildren {\n maxHeight?: string;\n}\n\nexport const FilterCheckboxList: React.FC<FilterCheckboxListProps> = ({\n children,\n maxHeight,\n}) => {\n return (\n <Column\n maxHeight={maxHeight}\n overflowY={maxHeight ? \"auto\" : undefined}\n spacing={1}\n >\n {children}\n </Column>\n );\n};\n","import * as React from \"react\";\nimport { ReactNode, useCallback } from \"react\";\nimport { Row } from \"@stenajs-webui/core\";\nimport { FlatButton, stenaClean } from \"@stenajs-webui/elements\";\nimport { useSearchFilterDispatch } from \"../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../context/SearchFilterActionsContext\";\n\ninterface SearchFilterChipsProps {\n disableClearAllButton?: boolean;\n children?: ReactNode;\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\"} alignItems={\"center\"} gap>\n {children}\n {!disableClearAllButton && (\n <FlatButton\n size={\"small\"}\n leftIcon={stenaClean}\n label={\"Clear\"}\n onClick={onClickClearAll}\n />\n )}\n </Row>\n );\n};\n","import * as React from \"react\";\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 <Chip label={label} variant={\"secondary\"} onClick={onClickLabel} />;\n};\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\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 <Chip\n label={label ?? sectionId}\n onClick={onClickLabel}\n onClickRemove={onClickRemove ? onClickRemoveHandler : undefined}\n />\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(\n formModel[fieldName] as unknown as BooleanRecord,\n options,\n ),\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 newBooleanRecord = { ...formModel[fieldName] } as BooleanRecord;\n newBooleanRecord[value] = false;\n setFormModelFields({\n [fieldName]: newBooleanRecord,\n } as unknown as Partial<TFormModel>);\n };\n};\n","import * as React from \"react\";\nimport {\n SearchFilterSection,\n SearchFilterSectionProps,\n} from \"../../../components/SearchFilterSection\";\nimport { ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { BooleanRecord, BooleanRecordOptions } from \"../BooleanRecordTypes\";\nimport { FilterCheckbox } from \"../../../features/filter-checkbox/FilterCheckbox\";\nimport { FilterCheckboxList } from \"../../../features/filter-checkbox/FilterCheckboxList\";\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 <FilterCheckboxList maxHeight={\"400px\"}>\n {options?.map((d) => (\n <FilterCheckbox\n key={d.value}\n value={value?.[d.value]}\n label={d.label}\n onValueChange={(v) =>\n onValueChange?.({\n ...value,\n [d.value]: v,\n })\n }\n />\n ))}\n </FilterCheckboxList>\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 {\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] as unknown as string | undefined,\n formModel[endDateFieldName] as unknown as string | undefined,\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, string | undefined>,\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] as unknown as string | undefined,\n endDate: formModel[endDateFieldName] as unknown as string | undefined,\n },\n /* eslint-disable @typescript-eslint/no-explicit-any */\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 Omit<\n SearchFilterSectionProps<TSectionKey>,\n \"label\" | \"onRetry\" | \"error\" | \"loading\"\n >,\n Omit<\n DateRangeCalendarProps<unknown>,\n \"value\" | \"onValueChange\" | \"focusedInput\" | \"setFocusedInput\"\n > {\n value: DateStringRange;\n onValueChange: (\n value: DateStringRange,\n options: SetDateOptions<TFormModel, TSectionKey>,\n ) => void;\n label?: string;\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 contentRight,\n disableContentPadding,\n label,\n leftIcon,\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] =\n useState<DateRangeFocusedInput>(\"startDate\");\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\n label={label}\n leftIcon={leftIcon}\n sectionId={sectionId}\n contentRight={contentRight}\n disableContentPadding={disableContentPadding}\n >\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":["SearchFilterPanelHeader","header","props","jsx","DrawerHeader","SearchFilterStateContext","createContext","useSearchFilterState","c","useContext","SearchFilterDispatchContext","useSearchFilterDispatch","SearchFilterActionsContext","useSearchFilterActions","SearchFilterDrawer","children","headerContentRight","drawerProps","open","dispatch","actions","closeDrawer","useCallback","Drawer","jsxs","Column","cssColor","Box","SearchFilterButton","label","leftIcon","stenaSlidersMini","onClickButton","SecondaryButton","SearchFilterSection","sectionId","loading","error","onRetry","disableContentPadding","contentRight","state","expanded","onClickLabel","activeLabel","formatColumnIdToHeaderCellLabel","Fragment","MenuButton","Row","Spinner","Banner","FlatButton","Space","columnId","upperFirst","lowerCase","StickyFooter","boxProps","SearchFilterModelContext","useSearchFilterModel","SearchFilterContext","createSearchFilterInitialState","initialFormModel","createSearchFilterReducer","reducerId","initialState","combineReducers","reducerIdGate","getReducerIdFor","createValueByIdReducer","createEntityReducer","createSearchFilterActions","reducerIdGateAction","createEntityActions","fields","section","createValueByIdActions","reducerIdSuffix","useLocalSearchFilterState","reducer","useState","useReducer","SearchFilterLocalStateContext","FilterCheckbox","checkboxProps","ContentMenuButton","Checkbox","Text","FilterCheckboxList","maxHeight","SearchFilterChips","disableClearAllButton","onClickClearAll","stenaClean","EmptyChip","Chip","SearchFilterChip","value","onClickRemove","setFormModelFields","onClickRemoveHandler","SectionChips","chips","emptyChipLabel","onClickRemoveOnChip","createChipsPropsForBooleanRecord","formModel","fieldName","options","createChipsForBooleanRecord","createOnClickRemoveOnChipForBooleanRecord","booleanRecord","truthyKeysAsList","key","option","newBooleanRecord","SimpleCheckboxListSection","onValueChange","sectionProps","d","v","ChipMultiSelectSection","noneSelectedLabel","text","setText","listValue","useMemo","o","filteredOptions","p","onValueChangeInternal","createBooleanRecordFromValue","ChipMultiSelect","sum","item","createChipsPropsForDateRange","startDateFieldName","endDateFieldName","createChipsForDateRange","createOnClickRemoveOnChipForDateRange","startDate","endDate","createDateRangeSectionProps","DateRangeCalendarSection","dateRangeCalendarProps","focusedInput","setFocusedInput","dateRangeValue","stringsToDateRange","onValueChangeHandler","dateRangeToStrings","DateRangeCalendar"],"mappings":";;;;;;;;;;;;AAUO,MAAMA,KAET,CAAC,EAAE,QAAAC,IAAS,UAAU,GAAGC,QACnB,gBAAAC,EAAAC,GAAA,EAAc,GAAGF,GAAO,QAAAD,EAAgB,CAAA,GCVrCI,IAA2BC,EAEtC,IAA6C,GAElCC,IAAuB,MAEE;AAC9B,QAAAC,IAAIC,EAAWJ,CAAwB;AAC7C,MAAI,CAACG;AACH,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAGG,SAAAA;AACT,GCdaE,IAA8BJ,EAEzC,IAAgD,GAErCK,IAA0B,MAAM;AACrC,QAAAH,IAAIC,EAAWC,CAA2B;AAChD,MAAI,CAACF;AACG,UAAA,IAAI,MAAM,yCAAyC;AAEpD,SAAAA;AACT,GCTaI,IAA6BN,EAExC,IAAoD,GAEzCO,IAAyB,MAG/B;AACC,QAAAL,IAAIC,EAAWG,CAA0B;AAC/C,MAAI,CAACJ;AACG,UAAA,IAAI,MAAM,wCAAwC;AAEnD,SAAAA;AACT,GCDaM,KAAwD,CAAC;AAAA,EACpE,UAAAC;AAAA,EACA,QAAAd;AAAA,EACA,oBAAAe;AAAA,EACA,GAAGC;AACL,MAAM;AACE,QAAA;AAAA,IACJ,UAAU,EAAE,MAAAC,EAAK;AAAA,MACfX,EAAqB,GACnBY,IAAWR,KACXS,IAAUP,KAEVQ,IAAcC,EAAY,MAAM;AAC3B,IAAAH,EAAAC,EAAQ,cAAc;AAAA,EAAA,GAC9B,CAACA,GAASD,CAAQ,CAAC;AAGpB,SAAA,gBAAAhB;AAAA,IAACoB;AAAA,IAAA;AAAA,MACC,UAAQ;AAAA,MACR,QAAQL;AAAA,MACR,gBAAgBG;AAAA,MACf,GAAGJ;AAAA,MAEJ,UAAA,gBAAAO;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,QAAQ;AAAA,UACR,cAAc;AAAA,UACd,YAAYC,EAAS,oBAAoB;AAAA,UAEzC,UAAA;AAAA,YAAA,gBAAAvB;AAAA,cAACH;AAAA,cAAA;AAAA,gBACC,gBAAgBqB;AAAA,gBAChB,QAAApB;AAAA,gBACA,cAAce;AAAA,cAAA;AAAA,YAChB;AAAA,YACA,gBAAAb,EAACwB,KAAI,SAAS,GAAG,QAAQ,GAAG,KAAK,GAC9B,UAAAZ,GACH;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAGN,GC3Caa,KAA8D,CAAC;AAAA,EAC1E,OAAAC,IAAQ;AAAA,EACR,UAAAC,IAAWC;AACb,MAAM;AACJ,QAAMZ,IAAWR,KACXS,IAAUP,KAEVmB,IAAgBV,EAAY,MAAM;AAC7B,IAAAH,EAAAC,EAAQ,aAAa;AAAA,EAAA,GAC7B,CAACA,GAASD,CAAQ,CAAC;AAGpB,SAAA,gBAAAhB;AAAA,IAAC8B;AAAA,IAAA;AAAA,MACC,OAAAJ;AAAA,MACA,UAAAC;AAAA,MACA,SAASE;AAAA,IAAA;AAAA,EAAA;AAGf,GCJaE,IAAsB,SAEjC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAN;AAAA,EACA,SAAAO;AAAA,EACA,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,uBAAAC;AAAA,EACA,UAAAxB;AAAA,EACA,UAAAe;AAAA,EACA,cAAAU;AACF,GAA6D;AAC3D,QAAMC,IAAQlC,KACRY,IAAWR,KACXS,IAAUP,KAEV6B,IAAWD,EAAM,iBAAiB,OAAON,CAAS,KAAK,IAEvDQ,IAAerB,EAAY,MAAM;AACrC,IAAAH,EAASC,EAAQ,mBAAmBe,GAAW,CAACO,CAAQ,CAAC;AAAA,KACxD,CAACtB,GAASD,GAAUuB,GAAUP,CAAS,CAAC,GAErCS,IAAcf,KAASgB,GAAgCV,CAAS;AAEtE,SAEI,gBAAAX,EAAAsB,GAAA,EAAA,UAAA;AAAA,IAAA,gBAAA3C;AAAA,MAAC4C;AAAA,MAAA;AAAA,QACC,OAAOH;AAAA,QACP,UAAAd;AAAA,QACA,YAAU;AAAA,QACV,UAAAY;AAAA,QACA,UAAUA;AAAA,QACV,SAASC;AAAA,QACT,OAAOH;AAAA,QAEN,UACCJ,IAAA,gBAAAjC,EAAC6C,GAAI,EAAA,SAAO,IAAC,gBAAgB,UAAU,MAAM,GAC3C,4BAACC,GAAQ,EAAA,MAAM,SAAS,EAAA,CAC1B,IACEZ,IACF,gBAAAlC;AAAA,UAAC+C;AAAA,UAAA;AAAA,YACC,SAAS;AAAA,YACT,MAAMb;AAAA,YACN,cACEC,IAAW,gBAAAnC,EAAAgD,GAAA,EAAW,OAAO,SAAS,SAASb,EAAS,CAAA,IAAK;AAAA,UAAA;AAAA,QAAA,IAIjEvB;AAAA,MAEA;AAAA,IAEJ;AAAA,IACC2B,uBAAaU,GAAM,EAAA;AAAA,EACtB,EAAA,CAAA;AAEJ,GAEaP,KAAkC,CAACQ,MAC9CC,GAAWC,GAAUF,CAAQ,CAAC,GC9EnBG,KAAkD,CAAC;AAAA,EAC9D,UAAAzC;AAAA,EACA,GAAG0C;AACL,MAEI,gBAAAtD;AAAA,EAACsB;AAAA,EAAA;AAAA,IACC,OAAO,EAAE,WAAW,OAAO;AAAA,IAC3B,gBAAgB;AAAA,IAChB,SAAS;AAAA,IACT,QAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACP,GAAGgC;AAAA,IAEH,UAAA1C;AAAA,EAAA;AAAA,GCpBM2C,IAA2BpD,EAAuB,IAAe,GAEjEqD,KAAuB,MAA8B;AAC1D,QAAAnD,IAAIC,EAAWiD,CAAwB;AAC7C,MAAI,CAAClD;AACH,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAGG,SAAAA;AACT,GCMaoD,KAAsB,SAGjC;AAAA,EACA,OAAAnB;AAAA,EACA,UAAAtB;AAAA,EACA,SAAAC;AAAA,EACA,UAAAL;AACF,GAAuE;AAEnE,SAAA,gBAAAZ;AAAA,IAACO,EAA4B;AAAA,IAA5B;AAAA,MACC,OAAOS;AAAA,MAEP,UAAA,gBAAAhB,EAACS,EAA2B,UAA3B,EAAoC,OAAOQ,GAC1C,UAAA,gBAAAjB,EAACE,EAAyB,UAAzB,EAAkC,OAAOoC,GACxC,UAAA,gBAAAtC,EAACuD,EAAyB,UAAzB,EAAkC,OAAOjB,EAAM,WAC7C,UAAA1B,GACH,EAAA,CACF,EACF,CAAA;AAAA,IAAA;AAAA,EAAA;AAGN,GCLa8C,KAAiC,CAC5CC,OACmC;AAAA,EACnC,UAAU;AAAA,IACR,MAAM;AAAA,EACR;AAAA,EACA,WAAWA;AAAA,EACX,kBAAkB,EAAE,QAAQ,GAAG;AACjC,IAEaC,KAA4B,CACvCC,GACAC,MAEAC,GAAgB;AAAA,EACd,kBAAkBC;AAAA,IAChBC,EAAgBJ,GAAW,kBAAkB;AAAA,IAC7CK,GAAgCJ,EAAa,gBAAgB;AAAA,EAC/D;AAAA,EACA,WAAWE;AAAA,IACTC,EAAgBJ,GAAW,WAAW;AAAA,IACtCM,EAAgCL,EAAa,SAAS;AAAA,EACxD;AAAA,EACA,UAAUE;AAAA,IACRC,EAAgBJ,GAAW,UAAU;AAAA,IACrCM,EAA0CL,EAAa,QAAQ;AAAA,EACjE;AACF,CAAC,GAkBUM,KAA4B,CAIvCP,GACAF,OACkD;AAAA,EAClD,aAAa,MACXU;AAAA,IACEJ,EAAgBJ,GAAW,UAAU;AAAA,IACrCS,EAAA,EAA4C,gBAAgB;AAAA,MAC1D,MAAM;AAAA,IAAA,CACP;AAAA,EACH;AAAA,EACF,cAAc,MACZD;AAAA,IACEJ,EAAgBJ,GAAW,UAAU;AAAA,IACrCS,EAAA,EAA4C,gBAAgB;AAAA,MAC1D,MAAM;AAAA,IAAA,CACP;AAAA,EACH;AAAA,EACF,oBAAoB,CAACC,MACnBF;AAAA,IACEJ,EAAgBJ,GAAW,WAAW;AAAA,IACtCS,EAAkC,EAAA,gBAAgBC,CAAM;AAAA,EAC1D;AAAA,EACF,gBAAgB,MACdF;AAAA,IACEJ,EAAgBJ,GAAW,WAAW;AAAA,IACtCS,EAAkC,EAAA,UAAUX,CAAgB;AAAA,EAC9D;AAAA,EACF,eAAe,CAACa,MACdH;AAAA,IACEJ,EAAgBJ,GAAW,kBAAkB;AAAA,IAC7CY,IAAkC,SAASD,GAAS,EAAI;AAAA,EAC1D;AAAA,EACF,iBAAiB,CAACA,MAChBH;AAAA,IACEJ,EAAgBJ,GAAW,kBAAkB;AAAA,IAC7CY,IAAkC,SAASD,GAAS,EAAK;AAAA,EAC3D;AAAA,EACF,oBAAoB,CAACA,GAAsBjC,MACzC8B;AAAA,IACEJ,EAAgBJ,GAAW,kBAAkB;AAAA,IAC7CY,IAAkC,SAASD,GAASjC,CAAQ;AAAA,EAC9D;AAAA,EACF,uBAAuB,MACrB8B;AAAA,IACEJ,EAAgBJ,GAAW,kBAAkB;AAAA,IAC7CY,EAAA,EAAkC,eAAe;AAAA,EACnD;AACJ,IAEaR,IAAkB,CAC7BJ,GACAa,MACW,GAAGb,CAAS,IAAIa,CAAe,ICjI/BC,KAA4B,CAIvCb,MACG;AACG,QAAA,CAACc,CAAO,IAAIC;AAAA,IAAS,MACzBjB,GAAsC,SAASE,CAAY;AAAA,EAAA,GAGvD,CAAC7C,CAAO,IAAI4D;AAAA,IAAS,MACzBT;AAAA,MACE;AAAA,MACAN,EAAa;AAAA,IACf;AAAA,EAAA,GAGI,CAACxB,GAAOtB,CAAQ,IAAI8D,EAAWF,GAASd,CAAY;AAEnD,SAAA;AAAA,IACL,SAAA7C;AAAA,IACA,OAAAqB;AAAA,IACA,UAAAtB;AAAA,EAAA;AAEJ,GCrBa+D,KAAgC,SAE3C;AAAA,EACA,kBAAApB;AAAA,EACA,UAAA/C;AACF,GAA+D;AAC7D,QAAM,EAAE,OAAA0B,GAAO,SAAArB,GAAS,UAAAD,EAAa,IAAA2D;AAAA,IACnCjB,GAA+BC,CAAgB;AAAA,EAAA;AAGjD,SACG,gBAAA3D,EAAAyD,IAAA,EAAoB,OAAAnB,GAAc,SAAArB,GAAkB,UAAAD,GAClD,UAAAJ,EACH,CAAA;AAEJ,GChBaoE,KAAgD,CAAC;AAAA,EAC5D,OAAAtD;AAAA,EACA,GAAGuD;AACL,MAEI,gBAAAjF,EAACkF,MACC,UAAC,gBAAA7D,EAAAwB,GAAA,EAAI,KAAK,GAAG,YAAY,UAAU,gBAAgB,cACjD,UAAA;AAAA,EAAC,gBAAA7C,EAAAmF,IAAA,EAAU,GAAGF,GAAe;AAAA,EAC7B,gBAAAjF,EAACoF,KAAM,UAAM1D,EAAA,CAAA;AAAA,EACf,CAAA,EACF,CAAA,GCXS2D,KAAwD,CAAC;AAAA,EACpE,UAAAzE;AAAA,EACA,WAAA0E;AACF,MAEI,gBAAAtF;AAAA,EAACsB;AAAA,EAAA;AAAA,IACC,WAAAgE;AAAA,IACA,WAAWA,IAAY,SAAS;AAAA,IAChC,SAAS;AAAA,IAER,UAAA1E;AAAA,EAAA;AAAA,GCNM2E,KAAsD,CAAC;AAAA,EAClE,UAAA3E;AAAA,EACA,uBAAA4E,IAAwB;AAC1B,MAAM;AACJ,QAAMxE,IAAWR,KACXS,IAAUP,KAEV+E,IAAkBtE;AAAA,IACtB,MAAMH,EAASC,EAAQ,gBAAgB;AAAA,IACvC,CAACA,GAASD,CAAQ;AAAA,EAAA;AAGpB,2BACG6B,GAAI,EAAA,UAAU,QAAQ,YAAY,UAAU,KAAG,IAC7C,UAAA;AAAA,IAAAjC;AAAA,IACA,CAAC4E,KACA,gBAAAxF;AAAA,MAACgD;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN,UAAU0C;AAAA,QACV,OAAO;AAAA,QACP,SAASD;AAAA,MAAA;AAAA,IACX;AAAA,EAEJ,EAAA,CAAA;AAEJ,GC1BaE,KAAY,SAA+C;AAAA,EACtE,OAAAjE;AAAA,EACA,WAAAM;AACF,GAAgC;AAC9B,QAAMhB,IAAWR,KACXS,IAAUP,KAEV8B,IAAerB,EAAY,MAAM;AAC5B,IAAAH,EAAAC,EAAQ,uBAAuB,GAC/BD,EAAAC,EAAQ,cAAce,CAAS,CAAC,GAChChB,EAAAC,EAAQ,aAAa;AAAA,EAC7B,GAAA,CAACA,GAASD,GAAUgB,CAAS,CAAC;AAEjC,2BAAQ4D,GAAK,EAAA,OAAAlE,GAAc,SAAS,aAAa,SAASc,EAAc,CAAA;AAC1E,GCXaqD,KAAmB,SAG9B;AAAA,EACA,WAAA7D;AAAA,EACA,OAAAN;AAAA,EACA,OAAAoE;AAAA,EACA,eAAAC;AACF,GAAmD;AACjD,QAAM/E,IAAWR,KACXS,IAAUP,KAEVsF,IAAqB7E;AAAA,IACzB,CAACoD,MACCvD,EAASC,EAAQ,mBAAmBsD,CAAM,CAAC;AAAA,IAC7C,CAACvD,GAAUC,CAAO;AAAA,EAAA,GAGdgF,IAAuB9E,EAAY,MAAM;AAC7B,IAAA4E,KAAA,QAAAA,EAAA,EAAE,OAAAD,GAAO,oBAAAE,EAAA;AAAA,EACxB,GAAA,CAACD,GAAeC,GAAoBF,CAAK,CAAC,GAEvCtD,IAAerB,EAAY,MAAM;AAC5B,IAAAH,EAAAC,EAAQ,uBAAuB,GAC/BD,EAAAC,EAAQ,cAAce,CAAS,CAAC,GAChChB,EAAAC,EAAQ,aAAa;AAAA,EAC7B,GAAA,CAACA,GAASD,GAAUgB,CAAS,CAAC;AAG/B,SAAA,gBAAAhC;AAAA,IAAC4F;AAAA,IAAA;AAAA,MACC,OAAOlE,KAASM;AAAA,MAChB,SAASQ;AAAA,MACT,eAAeuD,IAAgBE,IAAuB;AAAA,IAAA;AAAA,EAAA;AAG5D,GClCaC,KAAe,SAG1B;AAAA,EACA,WAAAlE;AAAA,EACA,OAAAmE;AAAA,EACA,gBAAAC;AAAA,EACA,qBAAAC;AACF,GAA+C;AACzC,SAACF,KAAA,QAAAA,EAAO,gCASP,UAAMA,EAAA,IAAI,CAAC,EAAE,OAAAzE,GAAO,OAAAoE,QACnB,gBAAA9F;AAAA,IAAC6F;AAAA,IAAA;AAAA,MAEC,OAAOnE,KAASM;AAAA,MAChB,WAAAA;AAAA,MACA,eAAeqE;AAAA,MACf,OAAAP;AAAA,IAAA;AAAA,IAJKA;AAAA,EAMR,CAAA,EACH,CAAA,IAjBKM,IAGG,gBAAApG,EAAA2F,IAAA,EAAU,WAAA3D,GAAsB,OAAOoE,EAAgB,CAAA,IAFtD;AAkBb,GCpCaE,KAAmC,CAK9CC,GACAC,GACAC,OAII;AAAA,EACJ,OAAOC;AAAA,IACLH,EAAUC,CAAS;AAAA,IACnBC;AAAA,EACF;AAAA,EACA,qBAAqBE;AAAA,IACnBJ;AAAA,IACAC;AAAA,EACF;AACF,IAEaE,KAA8B,CACzCE,GACAH,MAEAI,EAAiBD,CAAa,EAAE,IAAI,CAACE,MAAQ;AAC3C,QAAMC,IAASN,KAAA,gBAAAA,EAAS,KAAK,CAAC,MAAM,EAAE,UAAUK;AAChD,SAAO,EAAE,OAAOA,GAAK,QAAOC,KAAA,gBAAAA,EAAQ,UAASD;AAC/C,CAAC,GAEUH,KAA4C,CAIvDJ,GACAC,MAEO,CAAC,EAAE,oBAAAR,GAAoB,OAAAF,QAAY;AACxC,QAAMkB,IAAmB,EAAE,GAAGT,EAAUC,CAAS,EAAE;AACnD,EAAAQ,EAAiBlB,CAAK,IAAI,IACPE,EAAA;AAAA,IACjB,CAACQ,CAAS,GAAGQ;AAAA,EAAA,CACoB;AAAA,GCnC1BC,KAA4B,CAA6B;AAAA,EACpE,SAAAR;AAAA,EACA,OAAAX;AAAA,EACA,eAAAoB;AAAA,EACA,GAAGC;AACL,MACG,gBAAAnH,EAAA+B,GAAA,EAAoB,uBAAqB,IAAE,GAAGoF,GAC7C,UAAC,gBAAAnH,EAAAqF,IAAA,EAAmB,WAAW,SAC5B,UAASoB,KAAA,gBAAAA,EAAA,IAAI,CAACW,MACb,gBAAApH;AAAA,EAACgF;AAAA,EAAA;AAAA,IAEC,OAAOc,KAAA,gBAAAA,EAAQsB,EAAE;AAAA,IACjB,OAAOA,EAAE;AAAA,IACT,eAAe,CAACC,MACdH,KAAA,gBAAAA,EAAgB;AAAA,MACd,GAAGpB;AAAA,MACH,CAACsB,EAAE,KAAK,GAAGC;AAAA,IAAA;AAAA,EACZ;AAAA,EAPED,EAAE;AAST,GAEJ,CAAA,EACF,CAAA,GCpBWE,KAAyB,CAA6B;AAAA,EACjE,SAAAb;AAAA,EACA,OAAAX;AAAA,EACA,mBAAAyB;AAAA,EACA,eAAAL;AAAA,EACA,GAAGC;AACL,MAAoE;AAClE,QAAM,CAACK,GAAMC,CAAO,IAAI5C,EAAiB,EAAE,GAErC6C,IAAYC;AAAA,IAChB,MACE7B,IACIe,EAAiBf,CAAK,EAAE,IAA0B,CAACgB,MAAQ;AACzD,YAAMC,IAASN,KAAA,gBAAAA,EAAS,KAAK,CAACmB,MAAMA,EAAE,UAAUd;AAChD,aAAO,EAAE,OAAOA,GAAK,QAAOC,KAAA,gBAAAA,EAAQ,UAASD;IAC9C,CAAA,IACD,CAAC;AAAA,IACP,CAACL,GAASX,CAAK;AAAA,EAAA,GAGX+B,IAAkBF,EAAQ,MACvBlB,KAAA,gBAAAA,EAAS;AAAA,IACd,CAACqB,MACCA,EAAE,MAAM,kBAAoB,EAAA,QAAQN,EAAK,mBAAmB,IAAI,MAChEM,EAAE,MAAM,kBAAkB,EAAE,QAAQN,EAAK,mBAAmB,IAAI;AAAA,KAEnE,CAACf,GAASe,CAAI,CAAC,GAEZO,IAAwB5G;AAAA,IAC5B,CAAC2E,MAAuC;AACtB,MAAAoB,KAAA,QAAAA,EAAAc,GAA6BlC,CAAK;AAAA,IACpD;AAAA,IACA,CAACoB,CAAa;AAAA,EAAA;AAId,SAAA,gBAAAlH,EAAC+B,GAAqB,EAAA,GAAGoF,GACvB,UAAA,gBAAAnH;AAAA,IAACiI;AAAA,IAAA;AAAA,MACC,SAASJ;AAAA,MACT,OAAOH;AAAA,MACP,eAAeK;AAAA,MACf,YAAYP;AAAA,MACZ,mBAAAD;AAAA,MACA,eAAeE;AAAA,MACf,mBAAmB;AAAA,IAAA;AAAA,EAEvB,EAAA,CAAA;AAEJ,GAEMO,KAA+B,CACnClC,MAEOA,EAAM,OAAsB,CAACoC,GAAKC,OACnCD,EAAAC,EAAK,KAAK,IAAI,IACXD,IACN,CAAE,CAAA,GCnEME,KAA+B,CAK1C7B,GACA8B,GACAC,OAII;AAAA,EACJ,OAAOC;AAAA,IACLhC,EAAU8B,CAAkB;AAAA,IAC5B9B,EAAU+B,CAAgB;AAAA,EAC5B;AAAA,EACA,qBAAqBE;AAAA,IACnBH;AAAA,IACAC;AAAA,EACF;AACF,IAEaC,KAA0B,CACrCE,GACAC,MAEI,CAACD,KAAa,CAACC,IACV,KAEF;AAAA,EACL,EAAE,OAAO,aAAa,OAAO,GAAGD,KAAa,EAAE,MAAMC,KAAW,EAAE,GAAG;AAAA,GAI5DF,KAAwC,CAInDH,GACAC,MAEO,CAAC,EAAE,oBAAAtC,QAAyB;AACd,EAAAA,EAAA;AAAA,IACjB,CAACqC,CAAkB,GAAG;AAAA,IACtB,CAACC,CAAgB,GAAG;AAAA,EAAA,CACa;AAAA,GCjD1BK,KAA8B,CAKzCpC,GACA8B,GACAC,OAII;AAAA,EACJ,OAAO;AAAA,IACL,WAAW/B,EAAU8B,CAAkB;AAAA,IACvC,SAAS9B,EAAU+B,CAAgB;AAAA,EACrC;AAAA;AAAA,EAEA,eAAe,CAACxC,GAAO,EAAE,UAAA9E,GAAU,SAAAC,QAAc;AAC/C,UAAMsD,IAA8B;AAAA,MAClC,CAAC8D,CAAkB,GAAGvC,EAAM;AAAA,MAC5B,CAACwC,CAAgB,GAAGxC,EAAM;AAAA,IAAA;AAEnB,IAAA9E,EAAAC,EAAQ,mBAAmBsD,CAAM,CAAC;AAAA,EAC7C;AACF,ICoBaqE,KAA2B,CAGtC;AAAA,EACA,OAAA9C;AAAA,EACA,eAAAoB;AAAA,EACA,WAAAlF;AAAA,EACA,cAAAK;AAAA,EACA,uBAAAD;AAAA,EACA,OAAAV;AAAA,EACA,UAAAC;AAAA,EACA,GAAGkH;AACL,MAA8D;AAC5D,QAAM7H,IAAWR,KACXS,IAAUP,KAEV+F,IAAUkB;AAAA,IACd,OAAO,EAAE,UAAA3G,GAAU,SAAAC;IACnB,CAACA,GAASD,CAAQ;AAAA,EAAA,GAEd,CAAC8H,GAAcC,CAAe,IAClClE,EAAgC,WAAW,GAEvCmE,IAAiBrB,EAAQ,MAAMsB,GAAmBnD,CAAK,GAAG,CAACA,CAAK,CAAC,GAEjEoD,IAAuB/H;AAAA,IAC3B,CAAC2E,MAAqB;AACN,MAAAoB,EAAAiC,GAAmBrD,CAAK,GAAGW,CAAO;AAAA,IAClD;AAAA,IACA,CAACS,GAAeT,CAAO;AAAA,EAAA;AAIvB,SAAA,gBAAAzG;AAAA,IAAC+B;AAAA,IAAA;AAAA,MACC,OAAAL;AAAA,MACA,UAAAC;AAAA,MACA,WAAAK;AAAA,MACA,cAAAK;AAAA,MACA,uBAAAD;AAAA,MAEA,UAAA,gBAAApC,EAACwB,GAAI,EAAA,MAAM,GAAG,YAAY,UACxB,UAAA,gBAAAxB,EAACwB,GAAI,EAAA,YAAY,SAAS,QAAM,IAC9B,UAAA,gBAAAxB;AAAA,QAACoJ;AAAA,QAAA;AAAA,UACC,iBAAAL;AAAA,UACA,cAAAD;AAAA,UACA,OAAOE;AAAA,UACP,eAAeE;AAAA,UACd,GAAGL;AAAA,QAAA;AAAA,SAER,EACF,CAAA;AAAA,IAAA;AAAA,EAAA;AAGN;"}
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/components/StickyFooter.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/filter-checkbox/FilterCheckbox.tsx","../src/features/search-filter/features/filter-checkbox/FilterCheckboxList.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 { ReactNode } from \"react\";\nimport { DrawerHeader } from \"@stenajs-webui/modal\";\n\ninterface SearchFilterPanelHeaderProps {\n onRequestClose: () => void;\n header?: string;\n contentRight?: ReactNode;\n}\n\nexport const SearchFilterPanelHeader: React.FC<\n SearchFilterPanelHeaderProps\n> = ({ header = \"Filter\", ...props }) => {\n return <DrawerHeader {...props} header={header} />;\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\n/* eslint-disable @typescript-eslint/no-explicit-any */\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 { ReactNode, useCallback } from \"react\";\nimport { Drawer, DrawerProps } from \"@stenajs-webui/modal\";\nimport { cssColor } from \"@stenajs-webui/theme\";\nimport { Box, 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 header?: string;\n headerContentRight?: ReactNode;\n}\n\nexport const SearchFilterDrawer: React.FC<SearchFilterDrawerProps> = ({\n children,\n header,\n headerContentRight,\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 floating\n isOpen={open}\n onRequestClose={closeDrawer}\n {...drawerProps}\n >\n <Column\n height={\"100%\"}\n borderRadius={\"var(--swui-border-radius)\"}\n background={cssColor(\"--lhds-color-ui-50\")}\n >\n <SearchFilterPanelHeader\n onRequestClose={closeDrawer}\n header={header}\n contentRight={headerContentRight}\n />\n <Box spacing={1} indent={1} gap={1}>\n {children}\n </Box>\n </Column>\n </Drawer>\n );\n};\n","import { SecondaryButton, stenaSlidersMini } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\nimport { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\n\ninterface SearchFilterDrawerButtonProps {\n label?: string;\n leftIcon?: IconDefinition;\n}\n\nexport const SearchFilterButton: React.FC<SearchFilterDrawerButtonProps> = ({\n label = \"Filters\",\n leftIcon = stenaSlidersMini,\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={leftIcon}\n onClick={onClickButton}\n />\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren, useCallback } from \"react\";\nimport { Row, Space } from \"@stenajs-webui/core\";\nimport { lowerCase, upperFirst } from \"lodash-es\";\nimport {\n Banner,\n FlatButton,\n MenuButton,\n Spinner,\n} from \"@stenajs-webui/elements\";\nimport { useSearchFilterState } from \"../context/SearchFilterStateContext\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\nimport { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\n\nexport interface SearchFilterSectionProps<TSectionKey extends string> {\n sectionId: TSectionKey;\n label?: string;\n leftIcon?: IconDefinition;\n contentRight?: React.ReactNode;\n disableContentPadding?: boolean;\n loading?: boolean;\n error?: string;\n onRetry?: () => void;\n}\n\nexport const SearchFilterSection = function SearchFilterSection<\n TSectionKey extends string,\n>({\n sectionId,\n label,\n loading,\n error,\n onRetry,\n disableContentPadding,\n children,\n leftIcon,\n contentRight,\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 <>\n <MenuButton\n label={activeLabel}\n leftIcon={leftIcon}\n expandable\n expanded={expanded}\n selected={expanded}\n onClick={onClickLabel}\n right={contentRight}\n >\n {loading ? (\n <Row spacing justifyContent={\"center\"} flex={1}>\n <Spinner size={\"small\"} />\n </Row>\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 children\n )}\n </MenuButton>\n {expanded && <Space />}\n </>\n );\n};\n\nexport const formatColumnIdToHeaderCellLabel = (columnId: string): string =>\n upperFirst(lowerCase(columnId));\n","import { BoxProps, Column } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\n\nexport interface StickySearchButtonProps extends Pick<BoxProps, \"gap\"> {\n children?: ReactNode;\n}\n\nexport const StickyFooter: React.FC<StickySearchButtonProps> = ({\n children,\n ...boxProps\n}) => {\n return (\n <Column\n style={{ marginTop: \"auto\" }}\n justifyContent={\"center\"}\n spacing={2}\n indent\n shadow={\"popover\"}\n zIndex={1}\n {...boxProps}\n >\n {children}\n </Column>\n );\n};\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 * as React from \"react\";\nimport { Row, Text } from \"@stenajs-webui/core\";\nimport { ContentMenuButton } from \"@stenajs-webui/elements\";\nimport { Checkbox, CheckboxProps } from \"@stenajs-webui/forms\";\n\nexport interface FilterCheckboxProps extends CheckboxProps {\n label: string;\n}\n\nexport const FilterCheckbox: React.FC<FilterCheckboxProps> = ({\n label,\n ...checkboxProps\n}) => {\n return (\n <ContentMenuButton>\n <Row gap={2} alignItems={\"center\"} justifyContent={\"flex-start\"}>\n <Checkbox {...checkboxProps} />\n <Text>{label}</Text>\n </Row>\n </ContentMenuButton>\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport { Column } from \"@stenajs-webui/core\";\n\nexport interface FilterCheckboxListProps extends PropsWithChildren {\n maxHeight?: string;\n}\n\nexport const FilterCheckboxList: React.FC<FilterCheckboxListProps> = ({\n children,\n maxHeight,\n}) => {\n return (\n <Column\n maxHeight={maxHeight}\n overflowY={maxHeight ? \"auto\" : undefined}\n spacing={1}\n >\n {children}\n </Column>\n );\n};\n","import * as React from \"react\";\nimport { ReactNode, useCallback } from \"react\";\nimport { Row } from \"@stenajs-webui/core\";\nimport { FlatButton, stenaClean } from \"@stenajs-webui/elements\";\nimport { useSearchFilterDispatch } from \"../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../context/SearchFilterActionsContext\";\n\ninterface SearchFilterChipsProps {\n disableClearAllButton?: boolean;\n children?: ReactNode;\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\"} alignItems={\"center\"} gap>\n {children}\n {!disableClearAllButton && (\n <FlatButton\n size={\"small\"}\n leftIcon={stenaClean}\n label={\"Clear\"}\n onClick={onClickClearAll}\n />\n )}\n </Row>\n );\n};\n","import * as React from \"react\";\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 <Chip label={label} variant={\"secondary\"} onClick={onClickLabel} />;\n};\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\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 <Chip\n label={label ?? sectionId}\n onClick={onClickLabel}\n onClickRemove={onClickRemove ? onClickRemoveHandler : undefined}\n />\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(\n formModel[fieldName] as unknown as BooleanRecord,\n options,\n ),\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 newBooleanRecord = { ...formModel[fieldName] } as BooleanRecord;\n newBooleanRecord[value] = false;\n setFormModelFields({\n [fieldName]: newBooleanRecord,\n } as unknown as Partial<TFormModel>);\n };\n};\n","import * as React from \"react\";\nimport {\n SearchFilterSection,\n SearchFilterSectionProps,\n} from \"../../../components/SearchFilterSection\";\nimport { ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { BooleanRecord, BooleanRecordOptions } from \"../BooleanRecordTypes\";\nimport { FilterCheckbox } from \"../../../features/filter-checkbox/FilterCheckbox\";\nimport { FilterCheckboxList } from \"../../../features/filter-checkbox/FilterCheckboxList\";\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 <FilterCheckboxList maxHeight={\"400px\"}>\n {options?.map((d) => (\n <FilterCheckbox\n key={d.value}\n value={value?.[d.value]}\n label={d.label}\n onValueChange={(v) =>\n onValueChange?.({\n ...value,\n [d.value]: v,\n })\n }\n />\n ))}\n </FilterCheckboxList>\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 {\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] as unknown as string | undefined,\n formModel[endDateFieldName] as unknown as string | undefined,\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, string | undefined>,\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] as unknown as string | undefined,\n endDate: formModel[endDateFieldName] as unknown as string | undefined,\n },\n /* eslint-disable @typescript-eslint/no-explicit-any */\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 Omit<\n SearchFilterSectionProps<TSectionKey>,\n \"label\" | \"onRetry\" | \"error\" | \"loading\"\n >,\n Omit<\n DateRangeCalendarProps<unknown>,\n \"value\" | \"onValueChange\" | \"focusedInput\" | \"setFocusedInput\"\n > {\n value: DateStringRange;\n onValueChange: (\n value: DateStringRange,\n options: SetDateOptions<TFormModel, TSectionKey>,\n ) => void;\n label?: string;\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 contentRight,\n disableContentPadding,\n label,\n leftIcon,\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] =\n useState<DateRangeFocusedInput>(\"startDate\");\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\n label={label}\n leftIcon={leftIcon}\n sectionId={sectionId}\n contentRight={contentRight}\n disableContentPadding={disableContentPadding}\n >\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":["SearchFilterPanelHeader","header","props","jsx","DrawerHeader","SearchFilterStateContext","createContext","useSearchFilterState","c","useContext","SearchFilterDispatchContext","useSearchFilterDispatch","SearchFilterActionsContext","useSearchFilterActions","SearchFilterDrawer","children","headerContentRight","drawerProps","open","dispatch","actions","closeDrawer","useCallback","Drawer","jsxs","Column","cssColor","Box","SearchFilterButton","label","leftIcon","stenaSlidersMini","onClickButton","SecondaryButton","SearchFilterSection","sectionId","loading","error","onRetry","disableContentPadding","contentRight","state","expanded","onClickLabel","activeLabel","formatColumnIdToHeaderCellLabel","Fragment","MenuButton","Row","Spinner","Banner","FlatButton","Space","columnId","upperFirst","lowerCase","StickyFooter","boxProps","SearchFilterModelContext","useSearchFilterModel","SearchFilterContext","createSearchFilterInitialState","initialFormModel","createSearchFilterReducer","reducerId","initialState","combineReducers","reducerIdGate","getReducerIdFor","createValueByIdReducer","createEntityReducer","createSearchFilterActions","reducerIdGateAction","createEntityActions","fields","section","createValueByIdActions","reducerIdSuffix","useLocalSearchFilterState","reducer","useState","useReducer","SearchFilterLocalStateContext","FilterCheckbox","checkboxProps","ContentMenuButton","Checkbox","Text","FilterCheckboxList","maxHeight","SearchFilterChips","disableClearAllButton","onClickClearAll","stenaClean","EmptyChip","Chip","SearchFilterChip","value","onClickRemove","setFormModelFields","onClickRemoveHandler","SectionChips","chips","emptyChipLabel","onClickRemoveOnChip","createChipsPropsForBooleanRecord","formModel","fieldName","options","createChipsForBooleanRecord","createOnClickRemoveOnChipForBooleanRecord","booleanRecord","truthyKeysAsList","key","option","newBooleanRecord","SimpleCheckboxListSection","onValueChange","sectionProps","d","v","ChipMultiSelectSection","noneSelectedLabel","text","setText","listValue","useMemo","o","filteredOptions","p","onValueChangeInternal","createBooleanRecordFromValue","ChipMultiSelect","sum","item","createChipsPropsForDateRange","startDateFieldName","endDateFieldName","createChipsForDateRange","createOnClickRemoveOnChipForDateRange","startDate","endDate","createDateRangeSectionProps","DateRangeCalendarSection","dateRangeCalendarProps","focusedInput","setFocusedInput","dateRangeValue","stringsToDateRange","onValueChangeHandler","dateRangeToStrings","DateRangeCalendar"],"mappings":";;;;;;;;;;;;AAUO,MAAMA,KAET,CAAC,EAAE,QAAAC,IAAS,UAAU,GAAGC,QACnB,gBAAAC,EAAAC,GAAA,EAAc,GAAGF,GAAO,QAAAD,EAAgB,CAAA,GCVrCI,IAA2BC,EAEtC,IAA6C,GAElCC,IAAuB,MAEE;AAC9B,QAAAC,IAAIC,EAAWJ,CAAwB;AAC7C,MAAI,CAACG;AACH,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAEK,SAAAA;AACT,GCdaE,IAA8BJ,EAEzC,IAAgD,GAErCK,IAA0B,MAAM;AACrC,QAAAH,IAAIC,EAAWC,CAA2B;AAChD,MAAI,CAACF;AACG,UAAA,IAAI,MAAM,yCAAyC;AAEpD,SAAAA;AACT,GCTaI,IAA6BN,EAExC,IAAoD,GAEzCO,IAAyB,MAG/B;AACC,QAAAL,IAAIC,EAAWG,CAA0B;AAC/C,MAAI,CAACJ;AACG,UAAA,IAAI,MAAM,wCAAwC;AAEnD,SAAAA;AACT,GCDaM,KAAwD,CAAC;AAAA,EACpE,UAAAC;AAAA,EACA,QAAAd;AAAA,EACA,oBAAAe;AAAA,EACA,GAAGC;AACL,MAAM;AACE,QAAA;AAAA,IACJ,UAAU,EAAE,MAAAC,EAAK;AAAA,MACfX,EAAqB,GACnBY,IAAWR,EAAwB,GACnCS,IAAUP,EAAuB,GAEjCQ,IAAcC,EAAY,MAAM;AAC3B,IAAAH,EAAAC,EAAQ,cAAc;AAAA,EAAA,GAC9B,CAACA,GAASD,CAAQ,CAAC;AAGpB,SAAA,gBAAAhB;AAAA,IAACoB;AAAA,IAAA;AAAA,MACC,UAAQ;AAAA,MACR,QAAQL;AAAA,MACR,gBAAgBG;AAAA,MACf,GAAGJ;AAAA,MAEJ,UAAA,gBAAAO;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,QAAQ;AAAA,UACR,cAAc;AAAA,UACd,YAAYC,EAAS,oBAAoB;AAAA,UAEzC,UAAA;AAAA,YAAA,gBAAAvB;AAAA,cAACH;AAAA,cAAA;AAAA,gBACC,gBAAgBqB;AAAA,gBAChB,QAAApB;AAAA,gBACA,cAAce;AAAA,cAAA;AAAA,YAChB;AAAA,YACA,gBAAAb,EAACwB,KAAI,SAAS,GAAG,QAAQ,GAAG,KAAK,GAC9B,UAAAZ,EACH,CAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EACF;AAEJ,GC3Caa,KAA8D,CAAC;AAAA,EAC1E,OAAAC,IAAQ;AAAA,EACR,UAAAC,IAAWC;AACb,MAAM;AACJ,QAAMZ,IAAWR,EAAwB,GACnCS,IAAUP,EAAuB,GAEjCmB,IAAgBV,EAAY,MAAM;AAC7B,IAAAH,EAAAC,EAAQ,aAAa;AAAA,EAAA,GAC7B,CAACA,GAASD,CAAQ,CAAC;AAGpB,SAAA,gBAAAhB;AAAA,IAAC8B;AAAA,IAAA;AAAA,MACC,OAAAJ;AAAA,MACA,UAAAC;AAAA,MACA,SAASE;AAAA,IAAA;AAAA,EACX;AAEJ,GCJaE,IAAsB,SAEjC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAN;AAAA,EACA,SAAAO;AAAA,EACA,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,uBAAAC;AAAA,EACA,UAAAxB;AAAA,EACA,UAAAe;AAAA,EACA,cAAAU;AACF,GAA6D;AAC3D,QAAMC,IAAQlC,EAAqB,GAC7BY,IAAWR,EAAwB,GACnCS,IAAUP,EAAuB,GAEjC6B,IAAWD,EAAM,iBAAiB,OAAON,CAAS,KAAK,IAEvDQ,IAAerB,EAAY,MAAM;AACrC,IAAAH,EAASC,EAAQ,mBAAmBe,GAAW,CAACO,CAAQ,CAAC;AAAA,KACxD,CAACtB,GAASD,GAAUuB,GAAUP,CAAS,CAAC,GAErCS,IAAcf,KAASgB,GAAgCV,CAAS;AAEtE,SAEI,gBAAAX,EAAAsB,GAAA,EAAA,UAAA;AAAA,IAAA,gBAAA3C;AAAA,MAAC4C;AAAA,MAAA;AAAA,QACC,OAAOH;AAAA,QACP,UAAAd;AAAA,QACA,YAAU;AAAA,QACV,UAAAY;AAAA,QACA,UAAUA;AAAA,QACV,SAASC;AAAA,QACT,OAAOH;AAAA,QAEN,UACCJ,IAAA,gBAAAjC,EAAC6C,GAAI,EAAA,SAAO,IAAC,gBAAgB,UAAU,MAAM,GAC3C,4BAACC,GAAQ,EAAA,MAAM,SAAS,EAAA,CAC1B,IACEZ,IACF,gBAAAlC;AAAA,UAAC+C;AAAA,UAAA;AAAA,YACC,SAAS;AAAA,YACT,MAAMb;AAAA,YACN,cACEC,IAAW,gBAAAnC,EAAAgD,GAAA,EAAW,OAAO,SAAS,SAASb,GAAS,IAAK;AAAA,UAAA;AAAA,QAAA,IAIjEvB;AAAA,MAEA;AAAA,IAEJ;AAAA,IACC2B,uBAAaU,GAAM,CAAA,CAAA;AAAA,EAAA,GACtB;AAEJ,GAEaP,KAAkC,CAACQ,MAC9CC,GAAWC,GAAUF,CAAQ,CAAC,GC9EnBG,KAAkD,CAAC;AAAA,EAC9D,UAAAzC;AAAA,EACA,GAAG0C;AACL,MAEI,gBAAAtD;AAAA,EAACsB;AAAA,EAAA;AAAA,IACC,OAAO,EAAE,WAAW,OAAO;AAAA,IAC3B,gBAAgB;AAAA,IAChB,SAAS;AAAA,IACT,QAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACP,GAAGgC;AAAA,IAEH,UAAA1C;AAAA,EAAA;AACH,GCrBS2C,IAA2BpD,EAAuB,IAAe,GAEjEqD,KAAuB,MAA8B;AAC1D,QAAAnD,IAAIC,EAAWiD,CAAwB;AAC7C,MAAI,CAAClD;AACH,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAEK,SAAAA;AACT,GCMaoD,KAAsB,SAGjC;AAAA,EACA,OAAAnB;AAAA,EACA,UAAAtB;AAAA,EACA,SAAAC;AAAA,EACA,UAAAL;AACF,GAAuE;AAEnE,SAAA,gBAAAZ;AAAA,IAACO,EAA4B;AAAA,IAA5B;AAAA,MACC,OAAOS;AAAA,MAEP,UAAA,gBAAAhB,EAACS,EAA2B,UAA3B,EAAoC,OAAOQ,GAC1C,UAAA,gBAAAjB,EAACE,EAAyB,UAAzB,EAAkC,OAAOoC,GACxC,UAAA,gBAAAtC,EAACuD,EAAyB,UAAzB,EAAkC,OAAOjB,EAAM,WAC7C,UAAA1B,EACH,CAAA,EACF,CAAA,EACF,CAAA;AAAA,IAAA;AAAA,EACF;AAEJ,GCLa8C,KAAiC,CAC5CC,OACmC;AAAA,EACnC,UAAU;AAAA,IACR,MAAM;AAAA,EACR;AAAA,EACA,WAAWA;AAAA,EACX,kBAAkB,EAAE,QAAQ,CAAG,EAAA;AACjC,IAEaC,KAA4B,CACvCC,GACAC,MAEAC,GAAgB;AAAA,EACd,kBAAkBC;AAAA,IAChBC,EAAgBJ,GAAW,kBAAkB;AAAA,IAC7CK,GAAgCJ,EAAa,gBAAgB;AAAA,EAC/D;AAAA,EACA,WAAWE;AAAA,IACTC,EAAgBJ,GAAW,WAAW;AAAA,IACtCM,EAAgCL,EAAa,SAAS;AAAA,EACxD;AAAA,EACA,UAAUE;AAAA,IACRC,EAAgBJ,GAAW,UAAU;AAAA,IACrCM,EAA0CL,EAAa,QAAQ;AAAA,EAAA;AAEnE,CAAC,GAkBUM,KAA4B,CAIvCP,GACAF,OACkD;AAAA,EAClD,aAAa,MACXU;AAAA,IACEJ,EAAgBJ,GAAW,UAAU;AAAA,IACrCS,EAAA,EAA4C,gBAAgB;AAAA,MAC1D,MAAM;AAAA,IACP,CAAA;AAAA,EACH;AAAA,EACF,cAAc,MACZD;AAAA,IACEJ,EAAgBJ,GAAW,UAAU;AAAA,IACrCS,EAAA,EAA4C,gBAAgB;AAAA,MAC1D,MAAM;AAAA,IACP,CAAA;AAAA,EACH;AAAA,EACF,oBAAoB,CAACC,MACnBF;AAAA,IACEJ,EAAgBJ,GAAW,WAAW;AAAA,IACtCS,EAAA,EAAkC,gBAAgBC,CAAM;AAAA,EAC1D;AAAA,EACF,gBAAgB,MACdF;AAAA,IACEJ,EAAgBJ,GAAW,WAAW;AAAA,IACtCS,EAAA,EAAkC,UAAUX,CAAgB;AAAA,EAC9D;AAAA,EACF,eAAe,CAACa,MACdH;AAAA,IACEJ,EAAgBJ,GAAW,kBAAkB;AAAA,IAC7CY,EAAgC,EAAE,SAASD,GAAS,EAAI;AAAA,EAC1D;AAAA,EACF,iBAAiB,CAACA,MAChBH;AAAA,IACEJ,EAAgBJ,GAAW,kBAAkB;AAAA,IAC7CY,EAAgC,EAAE,SAASD,GAAS,EAAK;AAAA,EAC3D;AAAA,EACF,oBAAoB,CAACA,GAAsBjC,MACzC8B;AAAA,IACEJ,EAAgBJ,GAAW,kBAAkB;AAAA,IAC7CY,EAAgC,EAAE,SAASD,GAASjC,CAAQ;AAAA,EAC9D;AAAA,EACF,uBAAuB,MACrB8B;AAAA,IACEJ,EAAgBJ,GAAW,kBAAkB;AAAA,IAC7CY,IAAkC,eAAe;AAAA,EAAA;AAEvD,IAEaR,IAAkB,CAC7BJ,GACAa,MACW,GAAGb,CAAS,IAAIa,CAAe,ICjI/BC,KAA4B,CAIvCb,MACG;AACG,QAAA,CAACc,CAAO,IAAIC;AAAA,IAAS,MACzBjB,GAAsC,SAASE,CAAY;AAAA,EAC7D,GAEM,CAAC7C,CAAO,IAAI4D;AAAA,IAAS,MACzBT;AAAA,MACE;AAAA,MACAN,EAAa;AAAA,IAAA;AAAA,EAEjB,GAEM,CAACxB,GAAOtB,CAAQ,IAAI8D,EAAWF,GAASd,CAAY;AAEnD,SAAA;AAAA,IACL,SAAA7C;AAAA,IACA,OAAAqB;AAAA,IACA,UAAAtB;AAAA,EACF;AACF,GCrBa+D,KAAgC,SAE3C;AAAA,EACA,kBAAApB;AAAA,EACA,UAAA/C;AACF,GAA+D;AAC7D,QAAM,EAAE,OAAA0B,GAAO,SAAArB,GAAS,UAAAD,EAAa,IAAA2D;AAAA,IACnCjB,GAA+BC,CAAgB;AAAA,EACjD;AAEA,SACG,gBAAA3D,EAAAyD,IAAA,EAAoB,OAAAnB,GAAc,SAAArB,GAAkB,UAAAD,GAClD,UAAAJ,GACH;AAEJ,GChBaoE,KAAgD,CAAC;AAAA,EAC5D,OAAAtD;AAAA,EACA,GAAGuD;AACL,MAEI,gBAAAjF,EAACkF,MACC,UAAC,gBAAA7D,EAAAwB,GAAA,EAAI,KAAK,GAAG,YAAY,UAAU,gBAAgB,cACjD,UAAA;AAAA,EAAC,gBAAA7C,EAAAmF,IAAA,EAAU,GAAGF,GAAe;AAAA,EAC7B,gBAAAjF,EAACoF,KAAM,UAAM1D,EAAA,CAAA;AAAA,EAAA,CACf,EACF,CAAA,GCXS2D,KAAwD,CAAC;AAAA,EACpE,UAAAzE;AAAA,EACA,WAAA0E;AACF,MAEI,gBAAAtF;AAAA,EAACsB;AAAA,EAAA;AAAA,IACC,WAAAgE;AAAA,IACA,WAAWA,IAAY,SAAS;AAAA,IAChC,SAAS;AAAA,IAER,UAAA1E;AAAA,EAAA;AACH,GCPS2E,KAAsD,CAAC;AAAA,EAClE,UAAA3E;AAAA,EACA,uBAAA4E,IAAwB;AAC1B,MAAM;AACJ,QAAMxE,IAAWR,EAAwB,GACnCS,IAAUP,EAAuB,GAEjC+E,IAAkBtE;AAAA,IACtB,MAAMH,EAASC,EAAQ,gBAAgB;AAAA,IACvC,CAACA,GAASD,CAAQ;AAAA,EACpB;AAEA,2BACG6B,GAAI,EAAA,UAAU,QAAQ,YAAY,UAAU,KAAG,IAC7C,UAAA;AAAA,IAAAjC;AAAA,IACA,CAAC4E,KACA,gBAAAxF;AAAA,MAACgD;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN,UAAU0C;AAAA,QACV,OAAO;AAAA,QACP,SAASD;AAAA,MAAA;AAAA,IAAA;AAAA,EACX,GAEJ;AAEJ,GC1BaE,KAAY,SAA+C;AAAA,EACtE,OAAAjE;AAAA,EACA,WAAAM;AACF,GAAgC;AAC9B,QAAMhB,IAAWR,EAAwB,GACnCS,IAAUP,EAAuB,GAEjC8B,IAAerB,EAAY,MAAM;AAC5B,IAAAH,EAAAC,EAAQ,uBAAuB,GAC/BD,EAAAC,EAAQ,cAAce,CAAS,CAAC,GAChChB,EAAAC,EAAQ,aAAa;AAAA,EAC7B,GAAA,CAACA,GAASD,GAAUgB,CAAS,CAAC;AAEjC,2BAAQ4D,GAAK,EAAA,OAAAlE,GAAc,SAAS,aAAa,SAASc,GAAc;AAC1E,GCXaqD,KAAmB,SAG9B;AAAA,EACA,WAAA7D;AAAA,EACA,OAAAN;AAAA,EACA,OAAAoE;AAAA,EACA,eAAAC;AACF,GAAmD;AACjD,QAAM/E,IAAWR,EAAwB,GACnCS,IAAUP,EAAuB,GAEjCsF,IAAqB7E;AAAA,IACzB,CAACoD,MACCvD,EAASC,EAAQ,mBAAmBsD,CAAM,CAAC;AAAA,IAC7C,CAACvD,GAAUC,CAAO;AAAA,EACpB,GAEMgF,IAAuB9E,EAAY,MAAM;AAC7B,IAAA4E,KAAA,QAAAA,EAAA,EAAE,OAAAD,GAAO,oBAAAE;EACxB,GAAA,CAACD,GAAeC,GAAoBF,CAAK,CAAC,GAEvCtD,IAAerB,EAAY,MAAM;AAC5B,IAAAH,EAAAC,EAAQ,uBAAuB,GAC/BD,EAAAC,EAAQ,cAAce,CAAS,CAAC,GAChChB,EAAAC,EAAQ,aAAa;AAAA,EAC7B,GAAA,CAACA,GAASD,GAAUgB,CAAS,CAAC;AAG/B,SAAA,gBAAAhC;AAAA,IAAC4F;AAAA,IAAA;AAAA,MACC,OAAOlE,KAASM;AAAA,MAChB,SAASQ;AAAA,MACT,eAAeuD,IAAgBE,IAAuB;AAAA,IAAA;AAAA,EACxD;AAEJ,GClCaC,KAAe,SAG1B;AAAA,EACA,WAAAlE;AAAA,EACA,OAAAmE;AAAA,EACA,gBAAAC;AAAA,EACA,qBAAAC;AACF,GAA+C;AACzC,SAACF,KAAA,QAAAA,EAAO,gCASP,UAAMA,EAAA,IAAI,CAAC,EAAE,OAAAzE,GAAO,OAAAoE,QACnB,gBAAA9F;AAAA,IAAC6F;AAAA,IAAA;AAAA,MAEC,OAAOnE,KAASM;AAAA,MAChB,WAAAA;AAAA,MACA,eAAeqE;AAAA,MACf,OAAAP;AAAA,IAAA;AAAA,IAJKA;AAAA,EAMR,CAAA,GACH,IAjBKM,IAGG,gBAAApG,EAAA2F,IAAA,EAAU,WAAA3D,GAAsB,OAAOoE,EAAgB,CAAA,IAFtD;AAkBb,GCpCaE,KAAmC,CAK9CC,GACAC,GACAC,OAII;AAAA,EACJ,OAAOC;AAAA,IACLH,EAAUC,CAAS;AAAA,IACnBC;AAAA,EACF;AAAA,EACA,qBAAqBE;AAAA,IACnBJ;AAAA,IACAC;AAAA,EAAA;AAEJ,IAEaE,KAA8B,CACzCE,GACAH,MAEAI,EAAiBD,CAAa,EAAE,IAAI,CAACE,MAAQ;AAC3C,QAAMC,IAASN,KAAA,gBAAAA,EAAS,KAAK,CAAC,MAAM,EAAE,UAAUK;AAChD,SAAO,EAAE,OAAOA,GAAK,QAAOC,KAAA,gBAAAA,EAAQ,UAASD,EAAI;AACnD,CAAC,GAEUH,KAA4C,CAIvDJ,GACAC,MAEO,CAAC,EAAE,oBAAAR,GAAoB,OAAAF,QAAY;AACxC,QAAMkB,IAAmB,EAAE,GAAGT,EAAUC,CAAS,EAAE;AACnD,EAAAQ,EAAiBlB,CAAK,IAAI,IACPE,EAAA;AAAA,IACjB,CAACQ,CAAS,GAAGQ;AAAA,EAAA,CACoB;AACrC,GCpCWC,KAA4B,CAA6B;AAAA,EACpE,SAAAR;AAAA,EACA,OAAAX;AAAA,EACA,eAAAoB;AAAA,EACA,GAAGC;AACL,MACG,gBAAAnH,EAAA+B,GAAA,EAAoB,uBAAqB,IAAE,GAAGoF,GAC7C,UAAC,gBAAAnH,EAAAqF,IAAA,EAAmB,WAAW,SAC5B,UAASoB,KAAA,gBAAAA,EAAA,IAAI,CAACW,MACb,gBAAApH;AAAA,EAACgF;AAAA,EAAA;AAAA,IAEC,OAAOc,KAAA,gBAAAA,EAAQsB,EAAE;AAAA,IACjB,OAAOA,EAAE;AAAA,IACT,eAAe,CAACC,MACdH,KAAA,gBAAAA,EAAgB;AAAA,MACd,GAAGpB;AAAA,MACH,CAACsB,EAAE,KAAK,GAAGC;AAAA,IACZ;AAAA,EAAA;AAAA,EAPED,EAAE;AAST,GAEJ,CAAA,EACF,CAAA,GCpBWE,KAAyB,CAA6B;AAAA,EACjE,SAAAb;AAAA,EACA,OAAAX;AAAA,EACA,mBAAAyB;AAAA,EACA,eAAAL;AAAA,EACA,GAAGC;AACL,MAAoE;AAClE,QAAM,CAACK,GAAMC,CAAO,IAAI5C,EAAiB,EAAE,GAErC6C,IAAYC;AAAA,IAChB,MACE7B,IACIe,EAAiBf,CAAK,EAAE,IAA0B,CAACgB,MAAQ;AACzD,YAAMC,IAASN,KAAA,gBAAAA,EAAS,KAAK,CAACmB,MAAMA,EAAE,UAAUd;AAChD,aAAO,EAAE,OAAOA,GAAK,QAAOC,KAAA,gBAAAA,EAAQ,UAASD,EAAI;AAAA,IAClD,CAAA,IACD,CAAC;AAAA,IACP,CAACL,GAASX,CAAK;AAAA,EACjB,GAEM+B,IAAkBF,EAAQ,MACvBlB,KAAA,gBAAAA,EAAS;AAAA,IACd,CAACqB,MACCA,EAAE,MAAM,oBAAoB,QAAQN,EAAK,kBAAmB,CAAA,IAAI,MAChEM,EAAE,MAAM,kBAAkB,EAAE,QAAQN,EAAK,kBAAA,CAAmB,IAAI;AAAA,KAEnE,CAACf,GAASe,CAAI,CAAC,GAEZO,IAAwB5G;AAAA,IAC5B,CAAC2E,MAAuC;AACtB,MAAAoB,KAAA,QAAAA,EAAAc,GAA6BlC,CAAK;AAAA,IACpD;AAAA,IACA,CAACoB,CAAa;AAAA,EAChB;AAGE,SAAA,gBAAAlH,EAAC+B,GAAqB,EAAA,GAAGoF,GACvB,UAAA,gBAAAnH;AAAA,IAACiI;AAAA,IAAA;AAAA,MACC,SAASJ;AAAA,MACT,OAAOH;AAAA,MACP,eAAeK;AAAA,MACf,YAAYP;AAAA,MACZ,mBAAAD;AAAA,MACA,eAAeE;AAAA,MACf,mBAAmB;AAAA,IAAA;AAAA,EAAA,GAEvB;AAEJ,GAEMO,KAA+B,CACnClC,MAEOA,EAAM,OAAsB,CAACoC,GAAKC,OACnCD,EAAAC,EAAK,KAAK,IAAI,IACXD,IACN,EAAE,GCnEME,KAA+B,CAK1C7B,GACA8B,GACAC,OAII;AAAA,EACJ,OAAOC;AAAA,IACLhC,EAAU8B,CAAkB;AAAA,IAC5B9B,EAAU+B,CAAgB;AAAA,EAC5B;AAAA,EACA,qBAAqBE;AAAA,IACnBH;AAAA,IACAC;AAAA,EAAA;AAEJ,IAEaC,KAA0B,CACrCE,GACAC,MAEI,CAACD,KAAa,CAACC,IACV,CAAC,IAEH;AAAA,EACL,EAAE,OAAO,aAAa,OAAO,GAAGD,KAAa,EAAE,MAAMC,KAAW,EAAE,GAAG;AACvE,GAGWF,KAAwC,CAInDH,GACAC,MAEO,CAAC,EAAE,oBAAAtC,QAAyB;AACd,EAAAA,EAAA;AAAA,IACjB,CAACqC,CAAkB,GAAG;AAAA,IACtB,CAACC,CAAgB,GAAG;AAAA,EAAA,CACa;AACrC,GClDWK,KAA8B,CAKzCpC,GACA8B,GACAC,OAII;AAAA,EACJ,OAAO;AAAA,IACL,WAAW/B,EAAU8B,CAAkB;AAAA,IACvC,SAAS9B,EAAU+B,CAAgB;AAAA,EACrC;AAAA;AAAA,EAEA,eAAe,CAACxC,GAAO,EAAE,UAAA9E,GAAU,SAAAC,QAAc;AAC/C,UAAMsD,IAA8B;AAAA,MAClC,CAAC8D,CAAkB,GAAGvC,EAAM;AAAA,MAC5B,CAACwC,CAAgB,GAAGxC,EAAM;AAAA,IAC5B;AACS,IAAA9E,EAAAC,EAAQ,mBAAmBsD,CAAM,CAAC;AAAA,EAAA;AAE/C,ICoBaqE,KAA2B,CAGtC;AAAA,EACA,OAAA9C;AAAA,EACA,eAAAoB;AAAA,EACA,WAAAlF;AAAA,EACA,cAAAK;AAAA,EACA,uBAAAD;AAAA,EACA,OAAAV;AAAA,EACA,UAAAC;AAAA,EACA,GAAGkH;AACL,MAA8D;AAC5D,QAAM7H,IAAWR,EAAwB,GACnCS,IAAUP,EAAgD,GAE1D+F,IAAUkB;AAAA,IACd,OAAO,EAAE,UAAA3G,GAAU,SAAAC;IACnB,CAACA,GAASD,CAAQ;AAAA,EACpB,GACM,CAAC8H,GAAcC,CAAe,IAClClE,EAAgC,WAAW,GAEvCmE,IAAiBrB,EAAQ,MAAMsB,GAAmBnD,CAAK,GAAG,CAACA,CAAK,CAAC,GAEjEoD,IAAuB/H;AAAA,IAC3B,CAAC2E,MAAqB;AACN,MAAAoB,EAAAiC,GAAmBrD,CAAK,GAAGW,CAAO;AAAA,IAClD;AAAA,IACA,CAACS,GAAeT,CAAO;AAAA,EACzB;AAGE,SAAA,gBAAAzG;AAAA,IAAC+B;AAAA,IAAA;AAAA,MACC,OAAAL;AAAA,MACA,UAAAC;AAAA,MACA,WAAAK;AAAA,MACA,cAAAK;AAAA,MACA,uBAAAD;AAAA,MAEA,UAAA,gBAAApC,EAACwB,GAAI,EAAA,MAAM,GAAG,YAAY,UACxB,UAAA,gBAAAxB,EAACwB,GAAI,EAAA,YAAY,SAAS,QAAM,IAC9B,UAAA,gBAAAxB;AAAA,QAACoJ;AAAA,QAAA;AAAA,UACC,iBAAAL;AAAA,UACA,cAAAD;AAAA,UACA,OAAOE;AAAA,UACP,eAAeE;AAAA,UACd,GAAGL;AAAA,QAAA;AAAA,SAER,EACF,CAAA;AAAA,IAAA;AAAA,EACF;AAEJ;"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),a=require("react"),E=require("@stenajs-webui/modal"),Q=require("@stenajs-webui/theme"),d=require("@stenajs-webui/core"),C=require("@stenajs-webui/elements"),L=require("lodash-es"),U=require("redux"),l=require("@stenajs-webui/redux"),X=require("@stenajs-webui/forms"),Z=require("@stenajs-webui/select"),w=require("@stenajs-webui/calendar"),D=({header:e="Filter",...t})=>o.jsx(E.DrawerHeader,{...t,header:e}),M=a.createContext(null),v=()=>{const e=a.useContext(M);if(!e)throw new Error("Missing search filter context, wrap components with SearchFilterContext component.");return e},y=a.createContext(null),g=()=>{const e=a.useContext(y);if(!e)throw new Error("Missing search filter dispatch context.");return e},A=a.createContext(null),f=()=>{const e=a.useContext(A);if(!e)throw new Error("Missing search filter actions context.");return e},_=({children:e,header:t,headerContentRight:r,...n})=>{const{settings:{open:c}}=v(),s=g(),i=f(),h=a.useCallback(()=>{s(i.closeFilters())},[i,s]);return o.jsx(E.Drawer,{floating:!0,isOpen:c,onRequestClose:h,...n,children:o.jsxs(d.Column,{height:"100%",borderRadius:"var(--swui-border-radius)",background:Q.cssColor("--lhds-color-ui-50"),children:[o.jsx(D,{onRequestClose:h,header:t,contentRight:r}),o.jsx(d.Box,{spacing:1,indent:1,gap:1,children:e})]})})},N=({label:e="Filters",leftIcon:t=C.stenaSlidersMini})=>{const r=g(),n=f(),c=a.useCallback(()=>{r(n.openFilters())},[n,r]);return o.jsx(C.SecondaryButton,{label:e,leftIcon:t,onClick:c})},j=function({sectionId:t,label:r,loading:n,error:c,onRetry:s,disableContentPadding:i,children:h,leftIcon:S,contentRight:p}){const u=v(),F=g(),b=f(),m=u.expandedSections.values[t]??!1,R=a.useCallback(()=>{F(b.setSectionExpanded(t,!m))},[b,F,m,t]),k=r??O(t);return o.jsxs(o.Fragment,{children:[o.jsx(C.MenuButton,{label:k,leftIcon:S,expandable:!0,expanded:m,selected:m,onClick:R,right:p,children:n?o.jsx(d.Row,{spacing:!0,justifyContent:"center",flex:1,children:o.jsx(C.Spinner,{size:"small"})}):c?o.jsx(C.Banner,{variant:"error",text:c,contentRight:s?o.jsx(C.FlatButton,{label:"Retry",onClick:s}):null}):h}),m&&o.jsx(d.Space,{})]})},O=e=>L.upperFirst(L.lowerCase(e)),ee=({children:e,...t})=>o.jsx(d.Column,{style:{marginTop:"auto"},justifyContent:"center",spacing:2,indent:!0,shadow:"popover",zIndex:1,...t,children:e}),B=a.createContext(null),te=()=>{const e=a.useContext(B);if(!e)throw new Error("Missing search filter context, wrap components with SearchFilterContext component.");return e},q=function({state:t,dispatch:r,actions:n,children:c}){return o.jsx(y.Provider,{value:r,children:o.jsx(A.Provider,{value:n,children:o.jsx(M.Provider,{value:t,children:o.jsx(B.Provider,{value:t.formModel,children:c})})})})},I=e=>({settings:{open:!1},formModel:e,expandedSections:{values:{}}}),P=(e,t)=>U.combineReducers({expandedSections:l.reducerIdGate(x(e,"expandedSections"),l.createValueByIdReducer(t.expandedSections)),formModel:l.reducerIdGate(x(e,"formModel"),l.createEntityReducer(t.formModel)),settings:l.reducerIdGate(x(e,"settings"),l.createEntityReducer(t.settings))}),G=(e,t)=>({openFilters:()=>l.reducerIdGateAction(x(e,"settings"),l.createEntityActions().setEntityFields({open:!0})),closeFilters:()=>l.reducerIdGateAction(x(e,"settings"),l.createEntityActions().setEntityFields({open:!1})),setFormModelFields:r=>l.reducerIdGateAction(x(e,"formModel"),l.createEntityActions().setEntityFields(r)),clearFormModel:()=>l.reducerIdGateAction(x(e,"formModel"),l.createEntityActions().setEntity(t)),expandSection:r=>l.reducerIdGateAction(x(e,"expandedSections"),l.createValueByIdActions().setValue(r,!0)),collapseSection:r=>l.reducerIdGateAction(x(e,"expandedSections"),l.createValueByIdActions().setValue(r,!1)),setSectionExpanded:(r,n)=>l.reducerIdGateAction(x(e,"expandedSections"),l.createValueByIdActions().setValue(r,n)),clearExpandedSections:()=>l.reducerIdGateAction(x(e,"expandedSections"),l.createValueByIdActions().clearAllValues())}),x=(e,t)=>`${e}.${t}`,V=e=>{const[t]=a.useState(()=>P("local",e)),[r]=a.useState(()=>G("local",e.formModel)),[n,c]=a.useReducer(t,e);return{actions:r,state:n,dispatch:c}},re=function({initialFormModel:t,children:r}){const{state:n,actions:c,dispatch:s}=V(I(t));return o.jsx(q,{state:n,actions:c,dispatch:s,children:r})},T=({label:e,...t})=>o.jsx(C.ContentMenuButton,{children:o.jsxs(d.Row,{gap:2,alignItems:"center",justifyContent:"flex-start",children:[o.jsx(X.Checkbox,{...t}),o.jsx(d.Text,{children:e})]})}),H=({children:e,maxHeight:t})=>o.jsx(d.Column,{maxHeight:t,overflowY:t?"auto":void 0,spacing:1,children:e}),ne=({children:e,disableClearAllButton:t=!1})=>{const r=g(),n=f(),c=a.useCallback(()=>r(n.clearFormModel()),[n,r]);return o.jsxs(d.Row,{flexWrap:"wrap",alignItems:"center",gap:!0,children:[e,!t&&o.jsx(C.FlatButton,{size:"small",leftIcon:C.stenaClean,label:"Clear",onClick:c})]})},$=function({label:t,sectionId:r}){const n=g(),c=f(),s=a.useCallback(()=>{n(c.clearExpandedSections()),n(c.expandSection(r)),n(c.openFilters())},[c,n,r]);return o.jsx(C.Chip,{label:t,variant:"secondary",onClick:s})},z=function({sectionId:t,label:r,value:n,onClickRemove:c}){const s=g(),i=f(),h=a.useCallback(u=>s(i.setFormModelFields(u)),[s,i]),S=a.useCallback(()=>{c==null||c({value:n,setFormModelFields:h})},[c,h,n]),p=a.useCallback(()=>{s(i.clearExpandedSections()),s(i.expandSection(t)),s(i.openFilters())},[i,s,t]);return o.jsx(C.Chip,{label:r??t,onClick:p,onClickRemove:c?S:void 0})},ce=function({sectionId:t,chips:r,emptyChipLabel:n,onClickRemoveOnChip:c}){return r!=null&&r.length?o.jsx(o.Fragment,{children:r.map(({label:s,value:i})=>o.jsx(z,{label:s??t,sectionId:t,onClickRemove:c,value:i},i))}):n?o.jsx($,{sectionId:t,label:n}):null},oe=(e,t,r)=>({chips:K(e[t],r),onClickRemoveOnChip:W(e,t)}),K=(e,t)=>d.truthyKeysAsList(e).map(r=>{const n=t==null?void 0:t.find(c=>c.value===r);return{value:r,label:(n==null?void 0:n.label)??r}}),W=(e,t)=>({setFormModelFields:r,value:n})=>{const c={...e[t]};c[n]=!1,r({[t]:c})},se=({options:e,value:t,onValueChange:r,...n})=>o.jsx(j,{disableContentPadding:!0,...n,children:o.jsx(H,{maxHeight:"400px",children:e==null?void 0:e.map(c=>o.jsx(T,{value:t==null?void 0:t[c.value],label:c.label,onValueChange:s=>r==null?void 0:r({...t,[c.value]:s})},c.value))})}),ae=({options:e,value:t,noneSelectedLabel:r,onValueChange:n,...c})=>{const[s,i]=a.useState(""),h=a.useMemo(()=>t?d.truthyKeysAsList(t).map(u=>{const F=e==null?void 0:e.find(b=>b.value===u);return{value:u,label:(F==null?void 0:F.label)??u}}):[],[e,t]),S=a.useMemo(()=>e==null?void 0:e.filter(u=>u.value.toLocaleLowerCase().indexOf(s.toLocaleLowerCase())>-1||u.label.toLocaleLowerCase().indexOf(s.toLocaleLowerCase())>-1),[e,s]),p=a.useCallback(u=>{n==null||n(le(u))},[n]);return o.jsx(j,{...c,children:o.jsx(Z.ChipMultiSelect,{options:S,value:h,onValueChange:p,inputValue:s,noneSelectedLabel:r,onInputChange:i,closeMenuOnSelect:!1})})},le=e=>e.reduce((t,r)=>(t[r.value]=!0,t),{}),ie=(e,t,r)=>({chips:Y(e[t],e[r]),onClickRemoveOnChip:J(t,r)}),Y=(e,t)=>!e&&!t?[]:[{value:"dateRange",label:`${e??""} - ${t??""}`}],J=(e,t)=>({setFormModelFields:r})=>{r({[e]:void 0,[t]:void 0})},ue=(e,t,r)=>({value:{startDate:e[t],endDate:e[r]},onValueChange:(n,{dispatch:c,actions:s})=>{const i={[t]:n.startDate,[r]:n.endDate};c(s.setFormModelFields(i))}}),de=({value:e,onValueChange:t,sectionId:r,contentRight:n,disableContentPadding:c,label:s,leftIcon:i,...h})=>{const S=g(),p=f(),u=a.useMemo(()=>({dispatch:S,actions:p}),[p,S]),[F,b]=a.useState("startDate"),m=a.useMemo(()=>w.stringsToDateRange(e),[e]),R=a.useCallback(k=>{t(w.dateRangeToStrings(k),u)},[t,u]);return o.jsx(j,{label:s,leftIcon:i,sectionId:r,contentRight:n,disableContentPadding:c,children:o.jsx(d.Box,{flex:1,alignItems:"center",children:o.jsx(d.Box,{background:"white",indent:!0,children:o.jsx(w.DateRangeCalendar,{setFocusedInput:b,focusedInput:F,value:m,onValueChange:R,...h})})})})};exports.ChipMultiSelectSection=ae;exports.DateRangeCalendarSection=de;exports.EmptyChip=$;exports.FilterCheckbox=T;exports.FilterCheckboxList=H;exports.SearchFilterActionsContext=A;exports.SearchFilterButton=N;exports.SearchFilterChip=z;exports.SearchFilterChips=ne;exports.SearchFilterContext=q;exports.SearchFilterDispatchContext=y;exports.SearchFilterDrawer=_;exports.SearchFilterLocalStateContext=re;exports.SearchFilterModelContext=B;exports.SearchFilterPanelHeader=D;exports.SearchFilterSection=j;exports.SearchFilterStateContext=M;exports.SectionChips=ce;exports.SimpleCheckboxListSection=se;exports.StickyFooter=ee;exports.createChipsForBooleanRecord=K;exports.createChipsForDateRange=Y;exports.createChipsPropsForBooleanRecord=oe;exports.createChipsPropsForDateRange=ie;exports.createDateRangeSectionProps=ue;exports.createOnClickRemoveOnChipForBooleanRecord=W;exports.createOnClickRemoveOnChipForDateRange=J;exports.createSearchFilterActions=G;exports.createSearchFilterInitialState=I;exports.createSearchFilterReducer=P;exports.formatColumnIdToHeaderCellLabel=O;exports.getReducerIdFor=x;exports.useLocalSearchFilterState=V;exports.useSearchFilterActions=f;exports.useSearchFilterDispatch=g;exports.useSearchFilterModel=te;exports.useSearchFilterState=v;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),a=require("react"),E=require("@stenajs-webui/modal"),Q=require("@stenajs-webui/theme"),d=require("@stenajs-webui/core"),C=require("@stenajs-webui/elements"),v=require("lodash-es"),U=require("redux"),l=require("@stenajs-webui/redux"),X=require("@stenajs-webui/forms"),Z=require("@stenajs-webui/select"),w=require("@stenajs-webui/calendar"),D=({header:e="Filter",...t})=>o.jsx(E.DrawerHeader,{...t,header:e}),M=a.createContext(null),y=()=>{const e=a.useContext(M);if(!e)throw new Error("Missing search filter context, wrap components with SearchFilterContext component.");return e},A=a.createContext(null),f=()=>{const e=a.useContext(A);if(!e)throw new Error("Missing search filter dispatch context.");return e},B=a.createContext(null),g=()=>{const e=a.useContext(B);if(!e)throw new Error("Missing search filter actions context.");return e},_=({children:e,header:t,headerContentRight:r,...n})=>{const{settings:{open:c}}=y(),s=f(),i=g(),h=a.useCallback(()=>{s(i.closeFilters())},[i,s]);return o.jsx(E.Drawer,{floating:!0,isOpen:c,onRequestClose:h,...n,children:o.jsxs(d.Column,{height:"100%",borderRadius:"var(--swui-border-radius)",background:Q.cssColor("--lhds-color-ui-50"),children:[o.jsx(D,{onRequestClose:h,header:t,contentRight:r}),o.jsx(d.Box,{spacing:1,indent:1,gap:1,children:e})]})})},N=({label:e="Filters",leftIcon:t=C.stenaSlidersMini})=>{const r=f(),n=g(),c=a.useCallback(()=>{r(n.openFilters())},[n,r]);return o.jsx(C.SecondaryButton,{label:e,leftIcon:t,onClick:c})},j=function({sectionId:t,label:r,loading:n,error:c,onRetry:s,disableContentPadding:i,children:h,leftIcon:S,contentRight:p}){const u=y(),F=f(),b=g(),m=u.expandedSections.values[t]??!1,R=a.useCallback(()=>{F(b.setSectionExpanded(t,!m))},[b,F,m,t]),k=r??O(t);return o.jsxs(o.Fragment,{children:[o.jsx(C.MenuButton,{label:k,leftIcon:S,expandable:!0,expanded:m,selected:m,onClick:R,right:p,children:n?o.jsx(d.Row,{spacing:!0,justifyContent:"center",flex:1,children:o.jsx(C.Spinner,{size:"small"})}):c?o.jsx(C.Banner,{variant:"error",text:c,contentRight:s?o.jsx(C.FlatButton,{label:"Retry",onClick:s}):null}):h}),m&&o.jsx(d.Space,{})]})},O=e=>v.upperFirst(v.lowerCase(e)),ee=({children:e,...t})=>o.jsx(d.Column,{style:{marginTop:"auto"},justifyContent:"center",spacing:2,indent:!0,shadow:"popover",zIndex:1,...t,children:e}),L=a.createContext(null),te=()=>{const e=a.useContext(L);if(!e)throw new Error("Missing search filter context, wrap components with SearchFilterContext component.");return e},q=function({state:t,dispatch:r,actions:n,children:c}){return o.jsx(A.Provider,{value:r,children:o.jsx(B.Provider,{value:n,children:o.jsx(M.Provider,{value:t,children:o.jsx(L.Provider,{value:t.formModel,children:c})})})})},I=e=>({settings:{open:!1},formModel:e,expandedSections:{values:{}}}),P=(e,t)=>U.combineReducers({expandedSections:l.reducerIdGate(x(e,"expandedSections"),l.createValueByIdReducer(t.expandedSections)),formModel:l.reducerIdGate(x(e,"formModel"),l.createEntityReducer(t.formModel)),settings:l.reducerIdGate(x(e,"settings"),l.createEntityReducer(t.settings))}),G=(e,t)=>({openFilters:()=>l.reducerIdGateAction(x(e,"settings"),l.createEntityActions().setEntityFields({open:!0})),closeFilters:()=>l.reducerIdGateAction(x(e,"settings"),l.createEntityActions().setEntityFields({open:!1})),setFormModelFields:r=>l.reducerIdGateAction(x(e,"formModel"),l.createEntityActions().setEntityFields(r)),clearFormModel:()=>l.reducerIdGateAction(x(e,"formModel"),l.createEntityActions().setEntity(t)),expandSection:r=>l.reducerIdGateAction(x(e,"expandedSections"),l.createValueByIdActions().setValue(r,!0)),collapseSection:r=>l.reducerIdGateAction(x(e,"expandedSections"),l.createValueByIdActions().setValue(r,!1)),setSectionExpanded:(r,n)=>l.reducerIdGateAction(x(e,"expandedSections"),l.createValueByIdActions().setValue(r,n)),clearExpandedSections:()=>l.reducerIdGateAction(x(e,"expandedSections"),l.createValueByIdActions().clearAllValues())}),x=(e,t)=>`${e}.${t}`,V=e=>{const[t]=a.useState(()=>P("local",e)),[r]=a.useState(()=>G("local",e.formModel)),[n,c]=a.useReducer(t,e);return{actions:r,state:n,dispatch:c}},re=function({initialFormModel:t,children:r}){const{state:n,actions:c,dispatch:s}=V(I(t));return o.jsx(q,{state:n,actions:c,dispatch:s,children:r})},T=({label:e,...t})=>o.jsx(C.ContentMenuButton,{children:o.jsxs(d.Row,{gap:2,alignItems:"center",justifyContent:"flex-start",children:[o.jsx(X.Checkbox,{...t}),o.jsx(d.Text,{children:e})]})}),H=({children:e,maxHeight:t})=>o.jsx(d.Column,{maxHeight:t,overflowY:t?"auto":void 0,spacing:1,children:e}),ne=({children:e,disableClearAllButton:t=!1})=>{const r=f(),n=g(),c=a.useCallback(()=>r(n.clearFormModel()),[n,r]);return o.jsxs(d.Row,{flexWrap:"wrap",alignItems:"center",gap:!0,children:[e,!t&&o.jsx(C.FlatButton,{size:"small",leftIcon:C.stenaClean,label:"Clear",onClick:c})]})},$=function({label:t,sectionId:r}){const n=f(),c=g(),s=a.useCallback(()=>{n(c.clearExpandedSections()),n(c.expandSection(r)),n(c.openFilters())},[c,n,r]);return o.jsx(C.Chip,{label:t,variant:"secondary",onClick:s})},z=function({sectionId:t,label:r,value:n,onClickRemove:c}){const s=f(),i=g(),h=a.useCallback(u=>s(i.setFormModelFields(u)),[s,i]),S=a.useCallback(()=>{c==null||c({value:n,setFormModelFields:h})},[c,h,n]),p=a.useCallback(()=>{s(i.clearExpandedSections()),s(i.expandSection(t)),s(i.openFilters())},[i,s,t]);return o.jsx(C.Chip,{label:r??t,onClick:p,onClickRemove:c?S:void 0})},ce=function({sectionId:t,chips:r,emptyChipLabel:n,onClickRemoveOnChip:c}){return r!=null&&r.length?o.jsx(o.Fragment,{children:r.map(({label:s,value:i})=>o.jsx(z,{label:s??t,sectionId:t,onClickRemove:c,value:i},i))}):n?o.jsx($,{sectionId:t,label:n}):null},oe=(e,t,r)=>({chips:K(e[t],r),onClickRemoveOnChip:W(e,t)}),K=(e,t)=>d.truthyKeysAsList(e).map(r=>{const n=t==null?void 0:t.find(c=>c.value===r);return{value:r,label:(n==null?void 0:n.label)??r}}),W=(e,t)=>({setFormModelFields:r,value:n})=>{const c={...e[t]};c[n]=!1,r({[t]:c})},se=({options:e,value:t,onValueChange:r,...n})=>o.jsx(j,{disableContentPadding:!0,...n,children:o.jsx(H,{maxHeight:"400px",children:e==null?void 0:e.map(c=>o.jsx(T,{value:t==null?void 0:t[c.value],label:c.label,onValueChange:s=>r==null?void 0:r({...t,[c.value]:s})},c.value))})}),ae=({options:e,value:t,noneSelectedLabel:r,onValueChange:n,...c})=>{const[s,i]=a.useState(""),h=a.useMemo(()=>t?d.truthyKeysAsList(t).map(u=>{const F=e==null?void 0:e.find(b=>b.value===u);return{value:u,label:(F==null?void 0:F.label)??u}}):[],[e,t]),S=a.useMemo(()=>e==null?void 0:e.filter(u=>u.value.toLocaleLowerCase().indexOf(s.toLocaleLowerCase())>-1||u.label.toLocaleLowerCase().indexOf(s.toLocaleLowerCase())>-1),[e,s]),p=a.useCallback(u=>{n==null||n(le(u))},[n]);return o.jsx(j,{...c,children:o.jsx(Z.ChipMultiSelect,{options:S,value:h,onValueChange:p,inputValue:s,noneSelectedLabel:r,onInputChange:i,closeMenuOnSelect:!1})})},le=e=>e.reduce((t,r)=>(t[r.value]=!0,t),{}),ie=(e,t,r)=>({chips:Y(e[t],e[r]),onClickRemoveOnChip:J(t,r)}),Y=(e,t)=>!e&&!t?[]:[{value:"dateRange",label:`${e??""} - ${t??""}`}],J=(e,t)=>({setFormModelFields:r})=>{r({[e]:void 0,[t]:void 0})},ue=(e,t,r)=>({value:{startDate:e[t],endDate:e[r]},onValueChange:(n,{dispatch:c,actions:s})=>{const i={[t]:n.startDate,[r]:n.endDate};c(s.setFormModelFields(i))}}),de=({value:e,onValueChange:t,sectionId:r,contentRight:n,disableContentPadding:c,label:s,leftIcon:i,...h})=>{const S=f(),p=g(),u=a.useMemo(()=>({dispatch:S,actions:p}),[p,S]),[F,b]=a.useState("startDate"),m=a.useMemo(()=>w.stringsToDateRange(e),[e]),R=a.useCallback(k=>{t(w.dateRangeToStrings(k),u)},[t,u]);return o.jsx(j,{label:s,leftIcon:i,sectionId:r,contentRight:n,disableContentPadding:c,children:o.jsx(d.Box,{flex:1,alignItems:"center",children:o.jsx(d.Box,{background:"white",indent:!0,children:o.jsx(w.DateRangeCalendar,{setFocusedInput:b,focusedInput:F,value:m,onValueChange:R,...h})})})})};exports.ChipMultiSelectSection=ae;exports.DateRangeCalendarSection=de;exports.EmptyChip=$;exports.FilterCheckbox=T;exports.FilterCheckboxList=H;exports.SearchFilterActionsContext=B;exports.SearchFilterButton=N;exports.SearchFilterChip=z;exports.SearchFilterChips=ne;exports.SearchFilterContext=q;exports.SearchFilterDispatchContext=A;exports.SearchFilterDrawer=_;exports.SearchFilterLocalStateContext=re;exports.SearchFilterModelContext=L;exports.SearchFilterPanelHeader=D;exports.SearchFilterSection=j;exports.SearchFilterStateContext=M;exports.SectionChips=ce;exports.SimpleCheckboxListSection=se;exports.StickyFooter=ee;exports.createChipsForBooleanRecord=K;exports.createChipsForDateRange=Y;exports.createChipsPropsForBooleanRecord=oe;exports.createChipsPropsForDateRange=ie;exports.createDateRangeSectionProps=ue;exports.createOnClickRemoveOnChipForBooleanRecord=W;exports.createOnClickRemoveOnChipForDateRange=J;exports.createSearchFilterActions=G;exports.createSearchFilterInitialState=I;exports.createSearchFilterReducer=P;exports.formatColumnIdToHeaderCellLabel=O;exports.getReducerIdFor=x;exports.useLocalSearchFilterState=V;exports.useSearchFilterActions=g;exports.useSearchFilterDispatch=f;exports.useSearchFilterModel=te;exports.useSearchFilterState=y;
2
2
  //# sourceMappingURL=index.js.map
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/components/StickyFooter.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/filter-checkbox/FilterCheckbox.tsx","../src/features/search-filter/features/filter-checkbox/FilterCheckboxList.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 { ReactNode } from \"react\";\nimport { DrawerHeader } from \"@stenajs-webui/modal\";\n\ninterface SearchFilterPanelHeaderProps {\n onRequestClose: () => void;\n header?: string;\n contentRight?: ReactNode;\n}\n\nexport const SearchFilterPanelHeader: React.FC<\n SearchFilterPanelHeaderProps\n> = ({ header = \"Filter\", ...props }) => {\n return <DrawerHeader {...props} header={header} />;\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\n/* eslint-disable @typescript-eslint/no-explicit-any */\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 { ReactNode, useCallback } from \"react\";\nimport { Drawer, DrawerProps } from \"@stenajs-webui/modal\";\nimport { cssColor } from \"@stenajs-webui/theme\";\nimport { Box, 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 header?: string;\n headerContentRight?: ReactNode;\n}\n\nexport const SearchFilterDrawer: React.FC<SearchFilterDrawerProps> = ({\n children,\n header,\n headerContentRight,\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 floating\n isOpen={open}\n onRequestClose={closeDrawer}\n {...drawerProps}\n >\n <Column\n height={\"100%\"}\n borderRadius={\"var(--swui-border-radius)\"}\n background={cssColor(\"--lhds-color-ui-50\")}\n >\n <SearchFilterPanelHeader\n onRequestClose={closeDrawer}\n header={header}\n contentRight={headerContentRight}\n />\n <Box spacing={1} indent={1} gap={1}>\n {children}\n </Box>\n </Column>\n </Drawer>\n );\n};\n","import { SecondaryButton, stenaSlidersMini } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\nimport { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\n\ninterface SearchFilterDrawerButtonProps {\n label?: string;\n leftIcon?: IconDefinition;\n}\n\nexport const SearchFilterButton: React.FC<SearchFilterDrawerButtonProps> = ({\n label = \"Filters\",\n leftIcon = stenaSlidersMini,\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={leftIcon}\n onClick={onClickButton}\n />\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren, useCallback } from \"react\";\nimport { Row, Space } from \"@stenajs-webui/core\";\nimport { lowerCase, upperFirst } from \"lodash-es\";\nimport {\n Banner,\n FlatButton,\n MenuButton,\n Spinner,\n} from \"@stenajs-webui/elements\";\nimport { useSearchFilterState } from \"../context/SearchFilterStateContext\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\nimport { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\n\nexport interface SearchFilterSectionProps<TSectionKey extends string> {\n sectionId: TSectionKey;\n label?: string;\n leftIcon?: IconDefinition;\n contentRight?: React.ReactNode;\n disableContentPadding?: boolean;\n loading?: boolean;\n error?: string;\n onRetry?: () => void;\n}\n\nexport const SearchFilterSection = function SearchFilterSection<\n TSectionKey extends string,\n>({\n sectionId,\n label,\n loading,\n error,\n onRetry,\n disableContentPadding,\n children,\n leftIcon,\n contentRight,\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 <>\n <MenuButton\n label={activeLabel}\n leftIcon={leftIcon}\n expandable\n expanded={expanded}\n selected={expanded}\n onClick={onClickLabel}\n right={contentRight}\n >\n {loading ? (\n <Row spacing justifyContent={\"center\"} flex={1}>\n <Spinner size={\"small\"} />\n </Row>\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 children\n )}\n </MenuButton>\n {expanded && <Space />}\n </>\n );\n};\n\nexport const formatColumnIdToHeaderCellLabel = (columnId: string): string =>\n upperFirst(lowerCase(columnId));\n","import { BoxProps, Column } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\n\nexport interface StickySearchButtonProps extends Pick<BoxProps, \"gap\"> {\n children?: ReactNode;\n}\n\nexport const StickyFooter: React.FC<StickySearchButtonProps> = ({\n children,\n ...boxProps\n}) => {\n return (\n <Column\n style={{ marginTop: \"auto\" }}\n justifyContent={\"center\"}\n spacing={2}\n indent\n shadow={\"popover\"}\n zIndex={1}\n {...boxProps}\n >\n {children}\n </Column>\n );\n};\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 * as React from \"react\";\nimport { Row, Text } from \"@stenajs-webui/core\";\nimport { ContentMenuButton } from \"@stenajs-webui/elements\";\nimport { Checkbox, CheckboxProps } from \"@stenajs-webui/forms\";\n\nexport interface FilterCheckboxProps extends CheckboxProps {\n label: string;\n}\n\nexport const FilterCheckbox: React.FC<FilterCheckboxProps> = ({\n label,\n ...checkboxProps\n}) => {\n return (\n <ContentMenuButton>\n <Row gap={2} alignItems={\"center\"} justifyContent={\"flex-start\"}>\n <Checkbox {...checkboxProps} />\n <Text>{label}</Text>\n </Row>\n </ContentMenuButton>\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport { Column } from \"@stenajs-webui/core\";\n\nexport interface FilterCheckboxListProps extends PropsWithChildren {\n maxHeight?: string;\n}\n\nexport const FilterCheckboxList: React.FC<FilterCheckboxListProps> = ({\n children,\n maxHeight,\n}) => {\n return (\n <Column\n maxHeight={maxHeight}\n overflowY={maxHeight ? \"auto\" : undefined}\n spacing={1}\n >\n {children}\n </Column>\n );\n};\n","import * as React from \"react\";\nimport { ReactNode, useCallback } from \"react\";\nimport { Row } from \"@stenajs-webui/core\";\nimport { FlatButton, stenaClean } from \"@stenajs-webui/elements\";\nimport { useSearchFilterDispatch } from \"../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../context/SearchFilterActionsContext\";\n\ninterface SearchFilterChipsProps {\n disableClearAllButton?: boolean;\n children?: ReactNode;\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\"} alignItems={\"center\"} gap>\n {children}\n {!disableClearAllButton && (\n <FlatButton\n size={\"small\"}\n leftIcon={stenaClean}\n label={\"Clear\"}\n onClick={onClickClearAll}\n />\n )}\n </Row>\n );\n};\n","import * as React from \"react\";\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 <Chip label={label} variant={\"secondary\"} onClick={onClickLabel} />;\n};\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\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 <Chip\n label={label ?? sectionId}\n onClick={onClickLabel}\n onClickRemove={onClickRemove ? onClickRemoveHandler : undefined}\n />\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(\n formModel[fieldName] as unknown as BooleanRecord,\n options,\n ),\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 newBooleanRecord = { ...formModel[fieldName] } as BooleanRecord;\n newBooleanRecord[value] = false;\n setFormModelFields({\n [fieldName]: newBooleanRecord,\n } as unknown as Partial<TFormModel>);\n };\n};\n","import * as React from \"react\";\nimport {\n SearchFilterSection,\n SearchFilterSectionProps,\n} from \"../../../components/SearchFilterSection\";\nimport { ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { BooleanRecord, BooleanRecordOptions } from \"../BooleanRecordTypes\";\nimport { FilterCheckbox } from \"../../../features/filter-checkbox/FilterCheckbox\";\nimport { FilterCheckboxList } from \"../../../features/filter-checkbox/FilterCheckboxList\";\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 <FilterCheckboxList maxHeight={\"400px\"}>\n {options?.map((d) => (\n <FilterCheckbox\n key={d.value}\n value={value?.[d.value]}\n label={d.label}\n onValueChange={(v) =>\n onValueChange?.({\n ...value,\n [d.value]: v,\n })\n }\n />\n ))}\n </FilterCheckboxList>\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 {\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] as unknown as string | undefined,\n formModel[endDateFieldName] as unknown as string | undefined,\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, string | undefined>,\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] as unknown as string | undefined,\n endDate: formModel[endDateFieldName] as unknown as string | undefined,\n },\n /* eslint-disable @typescript-eslint/no-explicit-any */\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 Omit<\n SearchFilterSectionProps<TSectionKey>,\n \"label\" | \"onRetry\" | \"error\" | \"loading\"\n >,\n Omit<\n DateRangeCalendarProps<unknown>,\n \"value\" | \"onValueChange\" | \"focusedInput\" | \"setFocusedInput\"\n > {\n value: DateStringRange;\n onValueChange: (\n value: DateStringRange,\n options: SetDateOptions<TFormModel, TSectionKey>,\n ) => void;\n label?: string;\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 contentRight,\n disableContentPadding,\n label,\n leftIcon,\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] =\n useState<DateRangeFocusedInput>(\"startDate\");\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\n label={label}\n leftIcon={leftIcon}\n sectionId={sectionId}\n contentRight={contentRight}\n disableContentPadding={disableContentPadding}\n >\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":["SearchFilterPanelHeader","header","props","jsx","DrawerHeader","SearchFilterStateContext","createContext","useSearchFilterState","c","useContext","SearchFilterDispatchContext","useSearchFilterDispatch","SearchFilterActionsContext","useSearchFilterActions","SearchFilterDrawer","children","headerContentRight","drawerProps","open","dispatch","actions","closeDrawer","useCallback","Drawer","jsxs","Column","cssColor","Box","SearchFilterButton","label","leftIcon","stenaSlidersMini","onClickButton","SecondaryButton","SearchFilterSection","sectionId","loading","error","onRetry","disableContentPadding","contentRight","state","expanded","onClickLabel","activeLabel","formatColumnIdToHeaderCellLabel","Fragment","MenuButton","Row","Spinner","Banner","FlatButton","Space","columnId","upperFirst","lowerCase","StickyFooter","boxProps","SearchFilterModelContext","useSearchFilterModel","SearchFilterContext","createSearchFilterInitialState","initialFormModel","createSearchFilterReducer","reducerId","initialState","combineReducers","reducerIdGate","getReducerIdFor","createValueByIdReducer","createEntityReducer","createSearchFilterActions","reducerIdGateAction","createEntityActions","fields","section","createValueByIdActions","reducerIdSuffix","useLocalSearchFilterState","reducer","useState","useReducer","SearchFilterLocalStateContext","FilterCheckbox","checkboxProps","ContentMenuButton","Checkbox","Text","FilterCheckboxList","maxHeight","SearchFilterChips","disableClearAllButton","onClickClearAll","stenaClean","EmptyChip","Chip","SearchFilterChip","value","onClickRemove","setFormModelFields","onClickRemoveHandler","SectionChips","chips","emptyChipLabel","onClickRemoveOnChip","createChipsPropsForBooleanRecord","formModel","fieldName","options","createChipsForBooleanRecord","createOnClickRemoveOnChipForBooleanRecord","booleanRecord","truthyKeysAsList","key","option","o","newBooleanRecord","SimpleCheckboxListSection","onValueChange","sectionProps","d","v","ChipMultiSelectSection","noneSelectedLabel","text","setText","listValue","useMemo","filteredOptions","p","onValueChangeInternal","createBooleanRecordFromValue","ChipMultiSelect","sum","item","createChipsPropsForDateRange","startDateFieldName","endDateFieldName","createChipsForDateRange","createOnClickRemoveOnChipForDateRange","startDate","endDate","createDateRangeSectionProps","DateRangeCalendarSection","dateRangeCalendarProps","focusedInput","setFocusedInput","dateRangeValue","stringsToDateRange","onValueChangeHandler","dateRangeToStrings","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/components/StickyFooter.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/filter-checkbox/FilterCheckbox.tsx","../src/features/search-filter/features/filter-checkbox/FilterCheckboxList.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 { ReactNode } from \"react\";\nimport { DrawerHeader } from \"@stenajs-webui/modal\";\n\ninterface SearchFilterPanelHeaderProps {\n onRequestClose: () => void;\n header?: string;\n contentRight?: ReactNode;\n}\n\nexport const SearchFilterPanelHeader: React.FC<\n SearchFilterPanelHeaderProps\n> = ({ header = \"Filter\", ...props }) => {\n return <DrawerHeader {...props} header={header} />;\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\n/* eslint-disable @typescript-eslint/no-explicit-any */\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 { ReactNode, useCallback } from \"react\";\nimport { Drawer, DrawerProps } from \"@stenajs-webui/modal\";\nimport { cssColor } from \"@stenajs-webui/theme\";\nimport { Box, 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 header?: string;\n headerContentRight?: ReactNode;\n}\n\nexport const SearchFilterDrawer: React.FC<SearchFilterDrawerProps> = ({\n children,\n header,\n headerContentRight,\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 floating\n isOpen={open}\n onRequestClose={closeDrawer}\n {...drawerProps}\n >\n <Column\n height={\"100%\"}\n borderRadius={\"var(--swui-border-radius)\"}\n background={cssColor(\"--lhds-color-ui-50\")}\n >\n <SearchFilterPanelHeader\n onRequestClose={closeDrawer}\n header={header}\n contentRight={headerContentRight}\n />\n <Box spacing={1} indent={1} gap={1}>\n {children}\n </Box>\n </Column>\n </Drawer>\n );\n};\n","import { SecondaryButton, stenaSlidersMini } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\nimport { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\n\ninterface SearchFilterDrawerButtonProps {\n label?: string;\n leftIcon?: IconDefinition;\n}\n\nexport const SearchFilterButton: React.FC<SearchFilterDrawerButtonProps> = ({\n label = \"Filters\",\n leftIcon = stenaSlidersMini,\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={leftIcon}\n onClick={onClickButton}\n />\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren, useCallback } from \"react\";\nimport { Row, Space } from \"@stenajs-webui/core\";\nimport { lowerCase, upperFirst } from \"lodash-es\";\nimport {\n Banner,\n FlatButton,\n MenuButton,\n Spinner,\n} from \"@stenajs-webui/elements\";\nimport { useSearchFilterState } from \"../context/SearchFilterStateContext\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\nimport { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\n\nexport interface SearchFilterSectionProps<TSectionKey extends string> {\n sectionId: TSectionKey;\n label?: string;\n leftIcon?: IconDefinition;\n contentRight?: React.ReactNode;\n disableContentPadding?: boolean;\n loading?: boolean;\n error?: string;\n onRetry?: () => void;\n}\n\nexport const SearchFilterSection = function SearchFilterSection<\n TSectionKey extends string,\n>({\n sectionId,\n label,\n loading,\n error,\n onRetry,\n disableContentPadding,\n children,\n leftIcon,\n contentRight,\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 <>\n <MenuButton\n label={activeLabel}\n leftIcon={leftIcon}\n expandable\n expanded={expanded}\n selected={expanded}\n onClick={onClickLabel}\n right={contentRight}\n >\n {loading ? (\n <Row spacing justifyContent={\"center\"} flex={1}>\n <Spinner size={\"small\"} />\n </Row>\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 children\n )}\n </MenuButton>\n {expanded && <Space />}\n </>\n );\n};\n\nexport const formatColumnIdToHeaderCellLabel = (columnId: string): string =>\n upperFirst(lowerCase(columnId));\n","import { BoxProps, Column } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\n\nexport interface StickySearchButtonProps extends Pick<BoxProps, \"gap\"> {\n children?: ReactNode;\n}\n\nexport const StickyFooter: React.FC<StickySearchButtonProps> = ({\n children,\n ...boxProps\n}) => {\n return (\n <Column\n style={{ marginTop: \"auto\" }}\n justifyContent={\"center\"}\n spacing={2}\n indent\n shadow={\"popover\"}\n zIndex={1}\n {...boxProps}\n >\n {children}\n </Column>\n );\n};\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 * as React from \"react\";\nimport { Row, Text } from \"@stenajs-webui/core\";\nimport { ContentMenuButton } from \"@stenajs-webui/elements\";\nimport { Checkbox, CheckboxProps } from \"@stenajs-webui/forms\";\n\nexport interface FilterCheckboxProps extends CheckboxProps {\n label: string;\n}\n\nexport const FilterCheckbox: React.FC<FilterCheckboxProps> = ({\n label,\n ...checkboxProps\n}) => {\n return (\n <ContentMenuButton>\n <Row gap={2} alignItems={\"center\"} justifyContent={\"flex-start\"}>\n <Checkbox {...checkboxProps} />\n <Text>{label}</Text>\n </Row>\n </ContentMenuButton>\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport { Column } from \"@stenajs-webui/core\";\n\nexport interface FilterCheckboxListProps extends PropsWithChildren {\n maxHeight?: string;\n}\n\nexport const FilterCheckboxList: React.FC<FilterCheckboxListProps> = ({\n children,\n maxHeight,\n}) => {\n return (\n <Column\n maxHeight={maxHeight}\n overflowY={maxHeight ? \"auto\" : undefined}\n spacing={1}\n >\n {children}\n </Column>\n );\n};\n","import * as React from \"react\";\nimport { ReactNode, useCallback } from \"react\";\nimport { Row } from \"@stenajs-webui/core\";\nimport { FlatButton, stenaClean } from \"@stenajs-webui/elements\";\nimport { useSearchFilterDispatch } from \"../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../context/SearchFilterActionsContext\";\n\ninterface SearchFilterChipsProps {\n disableClearAllButton?: boolean;\n children?: ReactNode;\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\"} alignItems={\"center\"} gap>\n {children}\n {!disableClearAllButton && (\n <FlatButton\n size={\"small\"}\n leftIcon={stenaClean}\n label={\"Clear\"}\n onClick={onClickClearAll}\n />\n )}\n </Row>\n );\n};\n","import * as React from \"react\";\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 <Chip label={label} variant={\"secondary\"} onClick={onClickLabel} />;\n};\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\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 <Chip\n label={label ?? sectionId}\n onClick={onClickLabel}\n onClickRemove={onClickRemove ? onClickRemoveHandler : undefined}\n />\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(\n formModel[fieldName] as unknown as BooleanRecord,\n options,\n ),\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 newBooleanRecord = { ...formModel[fieldName] } as BooleanRecord;\n newBooleanRecord[value] = false;\n setFormModelFields({\n [fieldName]: newBooleanRecord,\n } as unknown as Partial<TFormModel>);\n };\n};\n","import * as React from \"react\";\nimport {\n SearchFilterSection,\n SearchFilterSectionProps,\n} from \"../../../components/SearchFilterSection\";\nimport { ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { BooleanRecord, BooleanRecordOptions } from \"../BooleanRecordTypes\";\nimport { FilterCheckbox } from \"../../../features/filter-checkbox/FilterCheckbox\";\nimport { FilterCheckboxList } from \"../../../features/filter-checkbox/FilterCheckboxList\";\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 <FilterCheckboxList maxHeight={\"400px\"}>\n {options?.map((d) => (\n <FilterCheckbox\n key={d.value}\n value={value?.[d.value]}\n label={d.label}\n onValueChange={(v) =>\n onValueChange?.({\n ...value,\n [d.value]: v,\n })\n }\n />\n ))}\n </FilterCheckboxList>\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 {\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] as unknown as string | undefined,\n formModel[endDateFieldName] as unknown as string | undefined,\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, string | undefined>,\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] as unknown as string | undefined,\n endDate: formModel[endDateFieldName] as unknown as string | undefined,\n },\n /* eslint-disable @typescript-eslint/no-explicit-any */\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 Omit<\n SearchFilterSectionProps<TSectionKey>,\n \"label\" | \"onRetry\" | \"error\" | \"loading\"\n >,\n Omit<\n DateRangeCalendarProps<unknown>,\n \"value\" | \"onValueChange\" | \"focusedInput\" | \"setFocusedInput\"\n > {\n value: DateStringRange;\n onValueChange: (\n value: DateStringRange,\n options: SetDateOptions<TFormModel, TSectionKey>,\n ) => void;\n label?: string;\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 contentRight,\n disableContentPadding,\n label,\n leftIcon,\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] =\n useState<DateRangeFocusedInput>(\"startDate\");\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\n label={label}\n leftIcon={leftIcon}\n sectionId={sectionId}\n contentRight={contentRight}\n disableContentPadding={disableContentPadding}\n >\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":["SearchFilterPanelHeader","header","props","jsx","DrawerHeader","SearchFilterStateContext","createContext","useSearchFilterState","c","useContext","SearchFilterDispatchContext","useSearchFilterDispatch","SearchFilterActionsContext","useSearchFilterActions","SearchFilterDrawer","children","headerContentRight","drawerProps","open","dispatch","actions","closeDrawer","useCallback","Drawer","jsxs","Column","cssColor","Box","SearchFilterButton","label","leftIcon","stenaSlidersMini","onClickButton","SecondaryButton","SearchFilterSection","sectionId","loading","error","onRetry","disableContentPadding","contentRight","state","expanded","onClickLabel","activeLabel","formatColumnIdToHeaderCellLabel","Fragment","MenuButton","Row","Spinner","Banner","FlatButton","Space","columnId","upperFirst","lowerCase","StickyFooter","boxProps","SearchFilterModelContext","useSearchFilterModel","SearchFilterContext","createSearchFilterInitialState","initialFormModel","createSearchFilterReducer","reducerId","initialState","combineReducers","reducerIdGate","getReducerIdFor","createValueByIdReducer","createEntityReducer","createSearchFilterActions","reducerIdGateAction","createEntityActions","fields","section","createValueByIdActions","reducerIdSuffix","useLocalSearchFilterState","reducer","useState","useReducer","SearchFilterLocalStateContext","FilterCheckbox","checkboxProps","ContentMenuButton","Checkbox","Text","FilterCheckboxList","maxHeight","SearchFilterChips","disableClearAllButton","onClickClearAll","stenaClean","EmptyChip","Chip","SearchFilterChip","value","onClickRemove","setFormModelFields","onClickRemoveHandler","SectionChips","chips","emptyChipLabel","onClickRemoveOnChip","createChipsPropsForBooleanRecord","formModel","fieldName","options","createChipsForBooleanRecord","createOnClickRemoveOnChipForBooleanRecord","booleanRecord","truthyKeysAsList","key","option","o","newBooleanRecord","SimpleCheckboxListSection","onValueChange","sectionProps","d","v","ChipMultiSelectSection","noneSelectedLabel","text","setText","listValue","useMemo","filteredOptions","p","onValueChangeInternal","createBooleanRecordFromValue","ChipMultiSelect","sum","item","createChipsPropsForDateRange","startDateFieldName","endDateFieldName","createChipsForDateRange","createOnClickRemoveOnChipForDateRange","startDate","endDate","createDateRangeSectionProps","DateRangeCalendarSection","dateRangeCalendarProps","focusedInput","setFocusedInput","dateRangeValue","stringsToDateRange","onValueChangeHandler","dateRangeToStrings","DateRangeCalendar"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stenajs-webui/filter",
3
- "version": "21.24.1",
3
+ "version": "21.24.3",
4
4
  "type": "module",
5
5
  "description": "",
6
6
  "author": "mattias800",
@@ -33,15 +33,15 @@
33
33
  "deploy": "gh-pages -d example/build"
34
34
  },
35
35
  "dependencies": {
36
- "@stenajs-webui/calendar": "21.24.1",
37
- "@stenajs-webui/core": "21.24.1",
38
- "@stenajs-webui/elements": "21.24.1",
39
- "@stenajs-webui/forms": "21.24.1",
40
- "@stenajs-webui/modal": "21.24.1",
41
- "@stenajs-webui/panels": "21.24.1",
42
- "@stenajs-webui/redux": "21.24.1",
43
- "@stenajs-webui/select": "21.24.1",
44
- "@stenajs-webui/theme": "21.24.1",
36
+ "@stenajs-webui/calendar": "21.24.3",
37
+ "@stenajs-webui/core": "21.24.3",
38
+ "@stenajs-webui/elements": "21.24.3",
39
+ "@stenajs-webui/forms": "21.24.3",
40
+ "@stenajs-webui/modal": "21.24.3",
41
+ "@stenajs-webui/panels": "21.24.3",
42
+ "@stenajs-webui/redux": "21.24.3",
43
+ "@stenajs-webui/select": "21.24.3",
44
+ "@stenajs-webui/theme": "21.24.3",
45
45
  "date-fns": "4.1.0",
46
46
  "lodash-es": "^4.17.21"
47
47
  },
@@ -70,5 +70,5 @@
70
70
  "files": [
71
71
  "dist"
72
72
  ],
73
- "gitHead": "4205f6be5f4639579a3faca6781466b907852e6b"
73
+ "gitHead": "fa71f6ec2b3f9595996d209b9b0758bd6ef41b98"
74
74
  }