@stenajs-webui/filter 15.0.0-alpha.4 → 15.0.0-alpha.8
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/README.md +40 -0
- package/dist/features/search-filter/features/chips/EmptyChip.d.ts +7 -0
- package/dist/features/search-filter/features/chips/SearchFilterChip.d.ts +10 -0
- package/dist/features/search-filter/features/chips/SectionChips.d.ts +1 -2
- package/dist/features/search-filter/section-factories/boolean-record/components/ChipMultiSelectSection.d.ts +2 -1
- package/dist/features/search-filter/section-factories/date-range/DateRangeChips.d.ts +2 -2
- package/dist/features/search-filter/section-factories/date-range/components/DateRangeCalendarSection.d.ts +4 -9
- package/dist/index.d.ts +2 -1
- package/dist/index.es.js +35 -24
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +35 -22
- package/dist/index.js.map +1 -1
- package/package.json +11 -11
- package/dist/features/search-filter/section-factories/date-range/DateRangeTypes.d.ts +0 -4
package/README.md
CHANGED
|
@@ -140,3 +140,43 @@ They are API compatible and are interchangeable.
|
|
|
140
140
|
}
|
|
141
141
|
/>
|
|
142
142
|
```
|
|
143
|
+
|
|
144
|
+
## Chips
|
|
145
|
+
|
|
146
|
+
You can add all chips for a section using the `SectionChips` component.
|
|
147
|
+
|
|
148
|
+
```tsx
|
|
149
|
+
<SectionChips
|
|
150
|
+
sectionId={"divisions"}
|
|
151
|
+
emptyChipLabel={"All division"}
|
|
152
|
+
{...createChipsPropsForBooleanRecord(
|
|
153
|
+
state.formModel,
|
|
154
|
+
"divisions",
|
|
155
|
+
divisionOptions
|
|
156
|
+
)}
|
|
157
|
+
/>
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Manual chips
|
|
161
|
+
|
|
162
|
+
If you need more manual control over each chip, you can add them individually.
|
|
163
|
+
|
|
164
|
+
```tsx
|
|
165
|
+
{
|
|
166
|
+
myList.map(({ value, label }) => (
|
|
167
|
+
<SearchFilterChip
|
|
168
|
+
key={value}
|
|
169
|
+
label={label ?? sectionId}
|
|
170
|
+
sectionId={sectionId}
|
|
171
|
+
onClickRemove={onClickRemoveOnChip}
|
|
172
|
+
value={value}
|
|
173
|
+
/>
|
|
174
|
+
));
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
If you need a chip to indicate no selection, you can use `EmptyChip`.
|
|
179
|
+
|
|
180
|
+
```tsx
|
|
181
|
+
<EmptyChip sectionId={sectionId} label={emptyChipLabel} />
|
|
182
|
+
```
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
interface EmptyChipProps<TSectionKey extends string> {
|
|
3
|
+
sectionId: TSectionKey;
|
|
4
|
+
label: string;
|
|
5
|
+
}
|
|
6
|
+
export declare const EmptyChip: <TSectionKey extends string>({ label, sectionId, }: EmptyChipProps<TSectionKey>) => JSX.Element;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { SearchFilterSectionOnClickRemoveOnChip } from "../../config/SearchFilterConfig";
|
|
3
|
+
interface SearchFilterChipProps<TFormModel, TSectionKey> {
|
|
4
|
+
sectionId: TSectionKey;
|
|
5
|
+
label: string;
|
|
6
|
+
value: string;
|
|
7
|
+
onClickRemove?: SearchFilterSectionOnClickRemoveOnChip<TFormModel>;
|
|
8
|
+
}
|
|
9
|
+
export declare const SearchFilterChip: <TFormModel, TSectionKey extends string>({ sectionId, label, value, onClickRemove, }: SearchFilterChipProps<TFormModel, TSectionKey>) => JSX.Element;
|
|
10
|
+
export {};
|
|
@@ -5,6 +5,5 @@ export interface SectionChipsProps<TFormModel, TSectionKey extends string> {
|
|
|
5
5
|
chips?: Array<SearchFilterSectionChipModel>;
|
|
6
6
|
emptyChipLabel?: string;
|
|
7
7
|
onClickRemoveOnChip?: SearchFilterSectionOnClickRemoveOnChip<TFormModel>;
|
|
8
|
-
disableChipClearButton?: boolean;
|
|
9
8
|
}
|
|
10
|
-
export declare const SectionChips: <TFormModel, TSectionKey extends string>({ sectionId, chips, emptyChipLabel, onClickRemoveOnChip,
|
|
9
|
+
export declare const SectionChips: <TFormModel, TSectionKey extends string>({ sectionId, chips, emptyChipLabel, onClickRemoveOnChip, }: SectionChipsProps<TFormModel, TSectionKey>) => JSX.Element | null;
|
|
@@ -3,7 +3,8 @@ import { SearchFilterSectionProps } from "../../../components/SearchFilterSectio
|
|
|
3
3
|
import { ValueAndOnValueChangeProps } from "@stenajs-webui/forms";
|
|
4
4
|
import { BooleanRecord, BooleanRecordOptions } from "../BooleanRecordTypes";
|
|
5
5
|
interface ChipMultiSelectSectionProps<TSectionKey extends string> extends SearchFilterSectionProps<TSectionKey>, ValueAndOnValueChangeProps<BooleanRecord> {
|
|
6
|
+
noneSelectedLabel?: string;
|
|
6
7
|
options?: BooleanRecordOptions;
|
|
7
8
|
}
|
|
8
|
-
export declare const ChipMultiSelectSection: <TSectionKey extends string>({ options, value, onValueChange, ...sectionProps }: ChipMultiSelectSectionProps<TSectionKey>) => React.ReactElement;
|
|
9
|
+
export declare const ChipMultiSelectSection: <TSectionKey extends string>({ options, value, noneSelectedLabel, onValueChange, ...sectionProps }: ChipMultiSelectSectionProps<TSectionKey>) => React.ReactElement;
|
|
9
10
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DateStringRange } from "@stenajs-webui/calendar";
|
|
2
2
|
import { SearchFilterSectionChipModel, SearchFilterSectionOnClickRemoveOnChip } from "../../config/SearchFilterConfig";
|
|
3
3
|
import { SectionChipsProps } from "../../features/chips/SectionChips";
|
|
4
4
|
export declare const createChipsPropsForDateRange: <TFormModel, TSectionKey extends string, TField extends { [Key in keyof TFormModel]-?: TFormModel[Key] extends string | undefined ? Key : never; }[keyof TFormModel]>(formModel: TFormModel, startDateFieldName: TField, endDateFieldName: TField) => Pick<SectionChipsProps<TFormModel, TSectionKey>, "chips" | "onClickRemoveOnChip">;
|
|
5
5
|
export declare const createChipsForDateRange: (startDate: string | undefined, endDate: string | undefined) => Array<SearchFilterSectionChipModel>;
|
|
6
|
-
export declare const createOnClickRemoveOnChipForDateRange: <TFormModel, TField extends { [Key in keyof TFormModel]-?: TFormModel[Key] extends
|
|
6
|
+
export declare const createOnClickRemoveOnChipForDateRange: <TFormModel, TField extends { [Key in keyof TFormModel]-?: TFormModel[Key] extends DateStringRange ? Key : never; }[keyof TFormModel]>(startDateFieldName: TField, endDateFieldName: TField) => SearchFilterSectionOnClickRemoveOnChip<TFormModel>;
|
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { DateRangeCalendarProps } from "@stenajs-webui/calendar";
|
|
2
|
+
import { DateRangeCalendarProps, DateStringRange } from "@stenajs-webui/calendar";
|
|
3
3
|
import { SearchFilterSectionProps } from "../../../components/SearchFilterSection";
|
|
4
4
|
import { SearchFilterActions, SearchFilterDispatch } from "../../../redux/SearchFilterRedux";
|
|
5
|
-
interface
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
export interface DateRangeCalendarSectionProps<TFormModel, TSectionKey extends string> extends SearchFilterSectionProps<TSectionKey>, Omit<DateRangeCalendarProps<{}>, "focusedInput" | "setFocusedInput" | "startDate" | "endDate" | "onChange" | "setStartDate" | "setEndDate"> {
|
|
10
|
-
value: DateRangeCalendarSectionOnChangeValue;
|
|
11
|
-
onValueChange: (value: DateRangeCalendarSectionOnChangeValue, options: SetDateOptions<TFormModel, TSectionKey>) => void;
|
|
5
|
+
export interface DateRangeCalendarSectionProps<TFormModel, TSectionKey extends string> extends SearchFilterSectionProps<TSectionKey>, Omit<DateRangeCalendarProps<{}>, "value" | "onValueChange" | "focusedInput" | "setFocusedInput"> {
|
|
6
|
+
value: DateStringRange;
|
|
7
|
+
onValueChange: (value: DateStringRange, options: SetDateOptions<TFormModel, TSectionKey>) => void;
|
|
12
8
|
}
|
|
13
9
|
export interface SetDateOptions<TFormModel, TSectionKey extends string> {
|
|
14
10
|
dispatch: SearchFilterDispatch<TFormModel>;
|
|
15
11
|
actions: SearchFilterActions<TFormModel, TSectionKey>;
|
|
16
12
|
}
|
|
17
13
|
export declare const DateRangeCalendarSection: <TFormModel, TSectionKey extends string>({ value, onValueChange, sectionId, ...dateRangeCalendarProps }: DateRangeCalendarSectionProps<TFormModel, TSectionKey>) => JSX.Element;
|
|
18
|
-
export {};
|
package/dist/index.d.ts
CHANGED
|
@@ -17,11 +17,12 @@ export * from "./features/search-filter/redux/SearchFilterRedux";
|
|
|
17
17
|
export * from "./features/search-filter/types/FilterEntity";
|
|
18
18
|
export * from "./features/search-filter/features/chips/SearchFilterChips";
|
|
19
19
|
export * from "./features/search-filter/features/chips/SectionChips";
|
|
20
|
+
export * from "./features/search-filter/features/chips/SearchFilterChip";
|
|
21
|
+
export * from "./features/search-filter/features/chips/EmptyChip";
|
|
20
22
|
export * from "./features/search-filter/section-factories/boolean-record/BooleanRecordTypes";
|
|
21
23
|
export * from "./features/search-filter/section-factories/boolean-record/BooleanRecordChips";
|
|
22
24
|
export * from "./features/search-filter/section-factories/boolean-record/components/SimpleCheckboxListSection";
|
|
23
25
|
export * from "./features/search-filter/section-factories/boolean-record/components/ChipMultiSelectSection";
|
|
24
|
-
export * from "./features/search-filter/section-factories/date-range/DateRangeTypes";
|
|
25
26
|
export * from "./features/search-filter/section-factories/date-range/DateRangeChips";
|
|
26
27
|
export * from "./features/search-filter/section-factories/date-range/DateRangePropsFactory";
|
|
27
28
|
export * from "./features/search-filter/section-factories/date-range/components/DateRangeCalendarSection";
|
package/dist/index.es.js
CHANGED
|
@@ -13,8 +13,7 @@ import { reducerIdGate, createValueByIdReducer, createEntityReducer, reducerIdGa
|
|
|
13
13
|
import styled from '@emotion/styled';
|
|
14
14
|
import { Checkbox } from '@stenajs-webui/forms';
|
|
15
15
|
import { ChipMultiSelect } from '@stenajs-webui/select';
|
|
16
|
-
import { DateRangeCalendar } from '@stenajs-webui/calendar';
|
|
17
|
-
import { parse, format } from 'date-fns';
|
|
16
|
+
import { stringsToDateRange, dateRangeToStrings, DateRangeCalendar } from '@stenajs-webui/calendar';
|
|
18
17
|
|
|
19
18
|
/*! *****************************************************************************
|
|
20
19
|
Copyright (c) Microsoft Corporation.
|
|
@@ -237,32 +236,49 @@ var SearchFilterChips = function (_a) {
|
|
|
237
236
|
React.createElement(FlatButton, { size: "small", label: "Clear all", onClick: onClickClearAll })))));
|
|
238
237
|
};
|
|
239
238
|
|
|
240
|
-
var
|
|
241
|
-
var
|
|
239
|
+
var EmptyChip = function EmptyChip(_a) {
|
|
240
|
+
var label = _a.label, sectionId = _a.sectionId;
|
|
241
|
+
var dispatch = useSearchFilterDispatch();
|
|
242
|
+
var actions = useSearchFilterActions();
|
|
243
|
+
var onClickLabel = useCallback(function () {
|
|
244
|
+
dispatch(actions.clearExpandedSections());
|
|
245
|
+
dispatch(actions.expandSection(sectionId));
|
|
246
|
+
dispatch(actions.openFilters());
|
|
247
|
+
}, [actions, dispatch, sectionId]);
|
|
248
|
+
return (React.createElement(ChipSpacer, null,
|
|
249
|
+
React.createElement(Chip, { label: label, variant: "secondary", onClick: onClickLabel })));
|
|
250
|
+
};
|
|
251
|
+
|
|
252
|
+
var SearchFilterChip = function SearchFilterChip(_a) {
|
|
253
|
+
var sectionId = _a.sectionId, label = _a.label, value = _a.value, onClickRemove = _a.onClickRemove;
|
|
242
254
|
var dispatch = useSearchFilterDispatch();
|
|
243
255
|
var actions = useSearchFilterActions();
|
|
244
256
|
var setFormModelFields = useCallback(function (fields) {
|
|
245
257
|
return dispatch(actions.setFormModelFields(fields));
|
|
246
258
|
}, [dispatch, actions]);
|
|
247
|
-
var
|
|
248
|
-
|
|
249
|
-
}, [
|
|
259
|
+
var onClickRemoveHandler = useCallback(function () {
|
|
260
|
+
onClickRemove === null || onClickRemove === void 0 ? void 0 : onClickRemove({ value: value, setFormModelFields: setFormModelFields });
|
|
261
|
+
}, [onClickRemove, setFormModelFields, value]);
|
|
250
262
|
var onClickLabel = useCallback(function () {
|
|
251
263
|
dispatch(actions.clearExpandedSections());
|
|
252
264
|
dispatch(actions.expandSection(sectionId));
|
|
253
265
|
dispatch(actions.openFilters());
|
|
254
266
|
}, [actions, dispatch, sectionId]);
|
|
267
|
+
return (React.createElement(ChipSpacer, null,
|
|
268
|
+
React.createElement(Chip, { label: label !== null && label !== void 0 ? label : sectionId, onClick: onClickLabel, onClickRemove: onClickRemove ? onClickRemoveHandler : undefined })));
|
|
269
|
+
};
|
|
270
|
+
|
|
271
|
+
var SectionChips = function SectionChips(_a) {
|
|
272
|
+
var sectionId = _a.sectionId, chips = _a.chips, emptyChipLabel = _a.emptyChipLabel, onClickRemoveOnChip = _a.onClickRemoveOnChip;
|
|
255
273
|
if (!(chips === null || chips === void 0 ? void 0 : chips.length)) {
|
|
256
274
|
if (!emptyChipLabel) {
|
|
257
275
|
return null;
|
|
258
276
|
}
|
|
259
|
-
return
|
|
260
|
-
React.createElement(Chip, { label: emptyChipLabel, variant: "secondary", onClick: onClickLabel })));
|
|
277
|
+
return React.createElement(EmptyChip, { sectionId: sectionId, label: emptyChipLabel });
|
|
261
278
|
}
|
|
262
279
|
return (React.createElement(React.Fragment, null, chips.map(function (_a) {
|
|
263
280
|
var label = _a.label, value = _a.value;
|
|
264
|
-
return (React.createElement(
|
|
265
|
-
React.createElement(Chip, { label: label !== null && label !== void 0 ? label : sectionId, onClick: onClickLabel, onClickRemove: disableChipClearButton ? undefined : function () { return onClickRemove(value); } })));
|
|
281
|
+
return (React.createElement(SearchFilterChip, { key: value, label: label !== null && label !== void 0 ? label : sectionId, sectionId: sectionId, onClickRemove: onClickRemoveOnChip, value: value }));
|
|
266
282
|
})));
|
|
267
283
|
};
|
|
268
284
|
|
|
@@ -303,7 +319,7 @@ var SimpleCheckboxListSection = function (_a) {
|
|
|
303
319
|
};
|
|
304
320
|
|
|
305
321
|
var ChipMultiSelectSection = function (_a) {
|
|
306
|
-
var options = _a.options, value = _a.value, onValueChange = _a.onValueChange, sectionProps = __rest(_a, ["options", "value", "onValueChange"]);
|
|
322
|
+
var options = _a.options, value = _a.value, noneSelectedLabel = _a.noneSelectedLabel, onValueChange = _a.onValueChange, sectionProps = __rest(_a, ["options", "value", "noneSelectedLabel", "onValueChange"]);
|
|
307
323
|
var _b = useState(""), text = _b[0], setText = _b[1];
|
|
308
324
|
var listValue = useMemo(function () {
|
|
309
325
|
return value
|
|
@@ -324,7 +340,7 @@ var ChipMultiSelectSection = function (_a) {
|
|
|
324
340
|
onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange(createBooleanRecordFromValue(value));
|
|
325
341
|
}, [onValueChange]);
|
|
326
342
|
return (React.createElement(SearchFilterSection, __assign({}, sectionProps),
|
|
327
|
-
React.createElement(ChipMultiSelect, { options: filteredOptions, value: listValue, onValueChange: onValueChangeInternal, inputValue: text, onInputChange: setText })));
|
|
343
|
+
React.createElement(ChipMultiSelect, { options: filteredOptions, value: listValue, onValueChange: onValueChangeInternal, inputValue: text, noneSelectedLabel: noneSelectedLabel, onInputChange: setText, closeMenuOnSelect: false })));
|
|
328
344
|
};
|
|
329
345
|
var createBooleanRecordFromValue = function (value) {
|
|
330
346
|
return value.reduce(function (sum, item) {
|
|
@@ -378,20 +394,15 @@ var DateRangeCalendarSection = function (_a) {
|
|
|
378
394
|
var actions = useSearchFilterActions();
|
|
379
395
|
var options = useMemo(function () { return ({ dispatch: dispatch, actions: actions }); }, [actions, dispatch]);
|
|
380
396
|
var _b = useState("startDate"), focusedInput = _b[0], setFocusedInput = _b[1];
|
|
381
|
-
var
|
|
382
|
-
var
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
onValueChange({ startDate: format(startDate, "yyyy-MM-dd"), endDate: endDate }, options);
|
|
386
|
-
}, [endDate, onValueChange, options]);
|
|
387
|
-
var setEndDate = useCallback(function (endDate) {
|
|
388
|
-
onValueChange({ startDate: startDate, endDate: format(endDate, "yyyy-MM-dd") }, options);
|
|
389
|
-
}, [onValueChange, options, startDate]);
|
|
397
|
+
var dateRangeValue = useMemo(function () { return stringsToDateRange(value); }, [value]);
|
|
398
|
+
var onValueChangeHandler = useCallback(function (value) {
|
|
399
|
+
onValueChange(dateRangeToStrings(value), options);
|
|
400
|
+
}, [onValueChange, options]);
|
|
390
401
|
return (React.createElement(SearchFilterSection, { sectionId: sectionId },
|
|
391
402
|
React.createElement(Box, { flex: 1, alignItems: "center" },
|
|
392
403
|
React.createElement(Box, { background: "white", indent: true },
|
|
393
|
-
React.createElement(DateRangeCalendar, __assign({ setFocusedInput: setFocusedInput, focusedInput: focusedInput,
|
|
404
|
+
React.createElement(DateRangeCalendar, __assign({ setFocusedInput: setFocusedInput, focusedInput: focusedInput, value: dateRangeValue, onValueChange: onValueChangeHandler }, dateRangeCalendarProps))))));
|
|
394
405
|
};
|
|
395
406
|
|
|
396
|
-
export { ChipMultiSelectSection, DateRangeCalendarSection, SearchFilterActionsContext, SearchFilterButton, SearchFilterChips, SearchFilterContext, SearchFilterDispatchContext, SearchFilterDrawer, SearchFilterLocalStateContext, SearchFilterModelContext, SearchFilterPanelHeader, SearchFilterSection, SearchFilterStateContext, SectionChips, SimpleCheckboxListSection, createChipsForBooleanRecord, createChipsForDateRange, createChipsPropsForBooleanRecord, createChipsPropsForDateRange, createDateRangeSectionProps, createOnClickRemoveOnChipForBooleanRecord, createOnClickRemoveOnChipForDateRange, createSearchFilterActions, createSearchFilterInitialState, createSearchFilterReducer, formatColumnIdToHeaderCellLabel, getReducerIdFor, useLocalSearchFilterState, useSearchFilterActions, useSearchFilterDispatch, useSearchFilterModel, useSearchFilterState };
|
|
407
|
+
export { ChipMultiSelectSection, DateRangeCalendarSection, EmptyChip, SearchFilterActionsContext, SearchFilterButton, SearchFilterChip, SearchFilterChips, SearchFilterContext, SearchFilterDispatchContext, SearchFilterDrawer, SearchFilterLocalStateContext, SearchFilterModelContext, SearchFilterPanelHeader, SearchFilterSection, SearchFilterStateContext, SectionChips, SimpleCheckboxListSection, createChipsForBooleanRecord, createChipsForDateRange, createChipsPropsForBooleanRecord, createChipsPropsForDateRange, createDateRangeSectionProps, createOnClickRemoveOnChipForBooleanRecord, createOnClickRemoveOnChipForDateRange, createSearchFilterActions, createSearchFilterInitialState, createSearchFilterReducer, formatColumnIdToHeaderCellLabel, getReducerIdFor, useLocalSearchFilterState, useSearchFilterActions, useSearchFilterDispatch, useSearchFilterModel, useSearchFilterState };
|
|
397
408
|
//# sourceMappingURL=index.es.js.map
|
package/dist/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../src/features/search-filter/components/SearchFilterPanelHeader.tsx","../src/features/search-filter/context/SearchFilterStateContext.ts","../src/features/search-filter/context/SearchFilterDispatchContext.ts","../src/features/search-filter/context/SearchFilterActionsContext.ts","../src/features/search-filter/components/SearchFilterDrawer.tsx","../src/features/search-filter/components/SearchFilterButton.tsx","../src/features/search-filter/components/SearchFilterSection.tsx","../src/features/search-filter/context/SearchFilterModelContext.ts","../src/features/search-filter/components/context/SearchFilterContext.tsx","../src/features/search-filter/redux/SearchFilterRedux.ts","../src/features/search-filter/hooks/UseLocalSearchFilterState.ts","../src/features/search-filter/components/context/SearchFilterLocalStateContext.tsx","../src/features/search-filter/features/chips/ChipSpacer.tsx","../src/features/search-filter/features/chips/SearchFilterChips.tsx","../src/features/search-filter/features/chips/SectionChips.tsx","../src/features/search-filter/section-factories/boolean-record/BooleanRecordChips.ts","../src/features/search-filter/section-factories/boolean-record/components/SimpleCheckboxListSection.tsx","../src/features/search-filter/section-factories/boolean-record/components/ChipMultiSelectSection.tsx","../src/features/search-filter/section-factories/date-range/DateRangeChips.ts","../src/features/search-filter/section-factories/date-range/DateRangePropsFactory.ts","../src/features/search-filter/section-factories/date-range/components/DateRangeCalendarSection.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Heading, Indent, Row } from \"@stenajs-webui/core\";\nimport { FlatButton, Icon } from \"@stenajs-webui/elements\";\nimport { faTimes } from \"@fortawesome/free-solid-svg-icons/faTimes\";\nimport { faSlidersH } from \"@fortawesome/free-solid-svg-icons/faSlidersH\";\nimport { cssColor } from \"@stenajs-webui/theme\";\n\ninterface SearchFilterPanelHeaderProps {\n onRequestClose: () => void;\n}\n\nexport const SearchFilterPanelHeader: React.FC<SearchFilterPanelHeaderProps> = ({\n onRequestClose,\n}) => {\n return (\n <Row\n height={\"48px\"}\n justifyContent={\"space-between\"}\n alignItems={\"center\"}\n indent={2}\n >\n <Row alignItems={\"center\"}>\n <Icon\n icon={faSlidersH}\n color={cssColor(\"--lhds-color-ui-500\")}\n size={12}\n />\n <Indent />\n <Heading variant={\"h4\"}>Filters</Heading>\n </Row>\n <FlatButton leftIcon={faTimes} onClick={onRequestClose} />\n </Row>\n );\n};\n","import { createContext, useContext } from \"react\";\nimport { SearchFilterState } from \"../redux/SearchFilterRedux\";\n\nexport const SearchFilterStateContext = createContext<\n SearchFilterState<unknown>\n>((null as unknown) as SearchFilterState<unknown>);\n\nexport const useSearchFilterState = <\n TFormModel\n>(): SearchFilterState<TFormModel> => {\n const c = useContext(SearchFilterStateContext);\n if (!c) {\n throw new Error(\n \"Missing search filter context, wrap components with SearchFilterContext component.\"\n );\n }\n return c as SearchFilterState<TFormModel>;\n};\n","import { createContext, useContext } from \"react\";\nimport { SearchFilterDispatch } from \"../redux/SearchFilterRedux\";\n\nexport const SearchFilterDispatchContext = createContext<\n SearchFilterDispatch<unknown>\n>((null as unknown) as SearchFilterDispatch<unknown>);\n\nexport const useSearchFilterDispatch = () => {\n const c = useContext(SearchFilterDispatchContext);\n if (!c) {\n throw new Error(\"Missing search filter dispatch context.\");\n }\n return c;\n};\n","import { createContext, useContext } from \"react\";\nimport { SearchFilterActions } from \"../redux/SearchFilterRedux\";\n\nexport const SearchFilterActionsContext = createContext<\n SearchFilterActions<unknown, any>\n>((null as unknown) as SearchFilterActions<unknown, any>);\n\nexport const useSearchFilterActions = <\n TFormModel,\n TSectionKey extends string\n>() => {\n const c = useContext(SearchFilterActionsContext);\n if (!c) {\n throw new Error(\"Missing search filter actions context.\");\n }\n return c as SearchFilterActions<TFormModel, TSectionKey>;\n};\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { Drawer, DrawerProps } from \"@stenajs-webui/modal\";\nimport { cssColor } from \"@stenajs-webui/theme\";\nimport { Column } from \"@stenajs-webui/core\";\nimport { SearchFilterPanelHeader } from \"./SearchFilterPanelHeader\";\nimport { useSearchFilterState } from \"../context/SearchFilterStateContext\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\n\ninterface SearchFilterDrawerProps\n extends Omit<DrawerProps, \"isOpen\" | \"onRequestClose\"> {}\n\nexport const SearchFilterDrawer: React.FC<SearchFilterDrawerProps> = ({\n children,\n ...drawerProps\n}) => {\n const {\n settings: { open },\n } = useSearchFilterState();\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const closeDrawer = useCallback(() => {\n dispatch(actions.closeFilters());\n }, [actions, dispatch]);\n\n return (\n <Drawer\n background={cssColor(\"--lhds-color-ui-50\")}\n width={\"370px\"}\n isOpen={open}\n onRequestClose={closeDrawer}\n {...drawerProps}\n >\n <Column>\n <SearchFilterPanelHeader onRequestClose={closeDrawer} />\n {children}\n </Column>\n </Drawer>\n );\n};\n","import { faSlidersH } from \"@fortawesome/free-solid-svg-icons/faSlidersH\";\nimport { SecondaryButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\n\ninterface SearchFilterDrawerButtonProps {\n label?: string;\n}\n\nexport const SearchFilterButton: React.VFC<SearchFilterDrawerButtonProps> = ({\n label = \"Filters\",\n}) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const onClickButton = useCallback(() => {\n dispatch(actions.openFilters());\n }, [actions, dispatch]);\n\n return (\n <SecondaryButton\n label={label}\n leftIcon={faSlidersH}\n onClick={onClickButton}\n />\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren, useCallback } from \"react\";\nimport { Row } from \"@stenajs-webui/core\";\nimport { Collapsible, CollapsibleContent } from \"@stenajs-webui/panels\";\nimport { lowerCase, upperFirst } from \"lodash\";\nimport { Banner, FlatButton, Spinner } from \"@stenajs-webui/elements\";\nimport { useSearchFilterState } from \"../context/SearchFilterStateContext\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\n\nexport interface SearchFilterSectionProps<TSectionKey extends string> {\n sectionId: TSectionKey;\n contentLeft?: React.ReactNode;\n contentRight?: React.ReactNode;\n disableContentPadding?: boolean;\n loading?: boolean;\n error?: string;\n onRetry?: () => void;\n label?: string;\n}\n\nexport const SearchFilterSection = function SearchFilterSection<\n TSectionKey extends string\n>({\n sectionId,\n label,\n contentLeft,\n contentRight,\n loading,\n error,\n onRetry,\n disableContentPadding,\n children,\n}: PropsWithChildren<SearchFilterSectionProps<TSectionKey>>) {\n const state = useSearchFilterState();\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const expanded = state.expandedSections.values[sectionId] ?? false;\n\n const onClickLabel = useCallback(() => {\n dispatch(actions.setSectionExpanded(sectionId, !expanded));\n }, [actions, dispatch, expanded, sectionId]);\n\n const activeLabel = label ?? formatColumnIdToHeaderCellLabel(sectionId);\n\n return (\n <Collapsible\n label={activeLabel}\n collapsed={!expanded}\n onClick={onClickLabel}\n contentLeft={contentLeft}\n contentRight={contentRight}\n >\n {loading ? (\n <CollapsibleContent>\n <Row spacing justifyContent={\"center\"} flex={1}>\n <Spinner size={\"small\"} />\n </Row>\n </CollapsibleContent>\n ) : error ? (\n <Banner\n variant={\"error\"}\n text={error}\n contentRight={\n onRetry ? <FlatButton label={\"Retry\"} onClick={onRetry} /> : null\n }\n />\n ) : disableContentPadding ? (\n children\n ) : (\n <CollapsibleContent>{children}</CollapsibleContent>\n )}\n </Collapsible>\n );\n};\n\nexport const formatColumnIdToHeaderCellLabel = (columnId: string): string =>\n upperFirst(lowerCase(columnId));\n","import { createContext, useContext } from \"react\";\n\nexport const SearchFilterModelContext = createContext<unknown>(null as unknown);\n\nexport const useSearchFilterModel = <TFormModel>(): TFormModel => {\n const c = useContext(SearchFilterModelContext);\n if (!c) {\n throw new Error(\n \"Missing search filter context, wrap components with SearchFilterContext component.\"\n );\n }\n return c as TFormModel;\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport {\n SearchFilterActions,\n SearchFilterDispatch,\n SearchFilterState,\n} from \"../../redux/SearchFilterRedux\";\nimport { SearchFilterDispatchContext } from \"../../context/SearchFilterDispatchContext\";\nimport { SearchFilterActionsContext } from \"../../context/SearchFilterActionsContext\";\nimport { SearchFilterStateContext } from \"../../context/SearchFilterStateContext\";\nimport { SearchFilterModelContext } from \"../../context/SearchFilterModelContext\";\n\ninterface SearchFilterScopeProps<TFormModel, TSectionKey extends string> {\n state: SearchFilterState<TFormModel>;\n dispatch: SearchFilterDispatch<TFormModel>;\n actions: SearchFilterActions<TFormModel, TSectionKey>;\n}\n\nexport const SearchFilterContext = function SearchFilterScope<\n TFormModel,\n TSectionKey extends string\n>({\n state,\n dispatch,\n actions,\n children,\n}: PropsWithChildren<SearchFilterScopeProps<TFormModel, TSectionKey>>) {\n return (\n <SearchFilterDispatchContext.Provider\n value={dispatch as SearchFilterDispatch<unknown>}\n >\n <SearchFilterActionsContext.Provider value={actions}>\n <SearchFilterStateContext.Provider value={state}>\n <SearchFilterModelContext.Provider value={state.formModel}>\n {children}\n </SearchFilterModelContext.Provider>\n </SearchFilterStateContext.Provider>\n </SearchFilterActionsContext.Provider>\n </SearchFilterDispatchContext.Provider>\n );\n};\n","import { combineReducers } from \"redux\";\nimport {\n createEntityActions,\n createEntityReducer,\n createValueByIdActions,\n createValueByIdReducer,\n EntityAction,\n EntityState,\n reducerIdGate,\n reducerIdGateAction,\n ReducerIdGateAction,\n ValueByIdAction,\n ValueByIdState,\n} from \"@stenajs-webui/redux\";\nimport { Dispatch } from \"react\";\n\nexport interface SearchFilterSettings {\n open: boolean;\n}\n\nexport type SearchFilterDispatch<TFormModel> = Dispatch<\n SearchFilterAction<TFormModel>\n>;\n\nexport interface SearchFilterState<TFormModel> {\n expandedSections: ValueByIdState<boolean>;\n formModel: EntityState<TFormModel>;\n settings: EntityState<SearchFilterSettings>;\n}\n\nexport type SearchFilterAction<TFormModel> =\n | ReducerIdGateAction<ValueByIdAction<boolean>>\n | ReducerIdGateAction<EntityAction<TFormModel>>\n | ReducerIdGateAction<EntityAction<SearchFilterSettings>>;\n\nexport const createSearchFilterInitialState = <TFormModel>(\n initialFormModel: TFormModel\n): SearchFilterState<TFormModel> => ({\n settings: {\n open: false,\n },\n formModel: initialFormModel,\n expandedSections: { values: {} },\n});\n\nexport const createSearchFilterReducer = <TFormModel>(\n reducerId: string,\n initialState: SearchFilterState<TFormModel>\n) =>\n combineReducers({\n expandedSections: reducerIdGate(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdReducer<boolean>(initialState.expandedSections)\n ),\n formModel: reducerIdGate(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityReducer<TFormModel>(initialState.formModel)\n ),\n settings: reducerIdGate(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityReducer<SearchFilterSettings>(initialState.settings)\n ),\n });\n\nexport interface SearchFilterActions<TFormModel, TSectionKey extends string> {\n openFilters: () => SearchFilterAction<TFormModel>;\n closeFilters: () => SearchFilterAction<TFormModel>;\n setFormModelFields: (\n fields: Partial<TFormModel>\n ) => SearchFilterAction<TFormModel>;\n clearFormModel: () => SearchFilterAction<TFormModel>;\n expandSection: (section: TSectionKey) => SearchFilterAction<TFormModel>;\n collapseSection: (section: TSectionKey) => SearchFilterAction<TFormModel>;\n setSectionExpanded: (\n section: TSectionKey,\n expanded: boolean\n ) => SearchFilterAction<TFormModel>;\n clearExpandedSections: () => SearchFilterAction<TFormModel>;\n}\n\nexport const createSearchFilterActions = <\n TFormModel,\n TSectionKey extends string\n>(\n reducerId: string,\n initialFormModel: TFormModel\n): SearchFilterActions<TFormModel, TSectionKey> => ({\n openFilters: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityActions<SearchFilterSettings>().setEntityFields({\n open: true,\n })\n ),\n closeFilters: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityActions<SearchFilterSettings>().setEntityFields({\n open: false,\n })\n ),\n setFormModelFields: (fields: Partial<TFormModel>) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityActions<TFormModel>().setEntityFields(fields)\n ),\n clearFormModel: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityActions<TFormModel>().setEntity(initialFormModel)\n ),\n expandSection: (section: TSectionKey) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, true)\n ),\n collapseSection: (section: TSectionKey) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, false)\n ),\n setSectionExpanded: (section: TSectionKey, expanded: boolean) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, expanded)\n ),\n clearExpandedSections: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().clearAllValues()\n ),\n});\n\nexport const getReducerIdFor = (\n reducerId: string,\n reducerIdSuffix: keyof SearchFilterState<unknown>\n): string => `${reducerId}.${reducerIdSuffix}`;\n","import {\n createSearchFilterActions,\n createSearchFilterReducer,\n SearchFilterState,\n} from \"../redux/SearchFilterRedux\";\nimport { useReducer, useState } from \"react\";\n\nexport const useLocalSearchFilterState = <\n TFormModel,\n TSectionKey extends string\n>(\n initialState: SearchFilterState<TFormModel>\n) => {\n const [reducer] = useState(() =>\n createSearchFilterReducer<TFormModel>(\"local\", initialState)\n );\n\n const [actions] = useState(() =>\n createSearchFilterActions<TFormModel, TSectionKey>(\n \"local\",\n initialState.formModel\n )\n );\n\n const [state, dispatch] = useReducer(reducer, initialState);\n\n return {\n actions,\n state,\n dispatch,\n };\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport { useLocalSearchFilterState } from \"../../hooks/UseLocalSearchFilterState\";\nimport { SearchFilterContext } from \"./SearchFilterContext\";\nimport { createSearchFilterInitialState } from \"../../redux/SearchFilterRedux\";\n\ninterface SearchFilterLocalScopeProps<TFormModel> {\n initialFormModel: TFormModel;\n}\n\nexport const SearchFilterLocalStateContext = function SearchFilterLocalScope<\n TFormModel\n>({\n initialFormModel,\n children,\n}: PropsWithChildren<SearchFilterLocalScopeProps<TFormModel>>) {\n const { state, actions, dispatch } = useLocalSearchFilterState(\n createSearchFilterInitialState(initialFormModel)\n );\n\n return (\n <SearchFilterContext state={state} actions={actions} dispatch={dispatch}>\n {children}\n </SearchFilterContext>\n );\n};\n","import styled from \"@emotion/styled\";\n\nexport const ChipSpacer = styled.div`\n padding: calc(var(--swui-metrics-spacing) / 2)\n calc(var(--swui-metrics-indent) / 2);\n`;\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { Row } from \"@stenajs-webui/core\";\nimport { ChipSpacer } from \"./ChipSpacer\";\nimport { FlatButton } from \"@stenajs-webui/elements\";\nimport { useSearchFilterDispatch } from \"../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../context/SearchFilterActionsContext\";\n\ninterface SearchFilterChipsProps {\n disableClearAllButton?: boolean;\n}\n\nexport const SearchFilterChips: React.FC<SearchFilterChipsProps> = ({\n children,\n disableClearAllButton = false,\n}) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const onClickClearAll = useCallback(\n () => dispatch(actions.clearFormModel()),\n [actions, dispatch]\n );\n\n return (\n <Row flexWrap={\"wrap\"}>\n {children}\n {!disableClearAllButton && (\n <ChipSpacer>\n <FlatButton\n size={\"small\"}\n label={\"Clear all\"}\n onClick={onClickClearAll}\n />\n </ChipSpacer>\n )}\n </Row>\n );\n};\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport {\n SearchFilterSectionChipModel,\n SearchFilterSectionOnClickRemoveOnChip,\n} from \"../../config/SearchFilterConfig\";\nimport { Chip } from \"@stenajs-webui/elements\";\nimport { ChipSpacer } from \"./ChipSpacer\";\nimport { useSearchFilterDispatch } from \"../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../context/SearchFilterActionsContext\";\n\nexport interface SectionChipsProps<TFormModel, TSectionKey extends string> {\n sectionId: TSectionKey;\n chips?: Array<SearchFilterSectionChipModel>;\n emptyChipLabel?: string;\n onClickRemoveOnChip?: SearchFilterSectionOnClickRemoveOnChip<TFormModel>;\n disableChipClearButton?: boolean;\n}\n\nexport const SectionChips = function SectionChips<\n TFormModel,\n TSectionKey extends string\n>({\n sectionId,\n chips,\n emptyChipLabel,\n onClickRemoveOnChip,\n disableChipClearButton,\n}: SectionChipsProps<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 onClickRemove = useCallback(\n (value: string) => {\n onClickRemoveOnChip?.({ value, setFormModelFields });\n },\n [onClickRemoveOnChip, setFormModelFields]\n );\n\n const onClickLabel = useCallback(() => {\n dispatch(actions.clearExpandedSections());\n dispatch(actions.expandSection(sectionId));\n dispatch(actions.openFilters());\n }, [actions, dispatch, sectionId]);\n\n if (!chips?.length) {\n if (!emptyChipLabel) {\n return null;\n }\n return (\n <ChipSpacer>\n <Chip\n label={emptyChipLabel}\n variant={\"secondary\"}\n onClick={onClickLabel}\n />\n </ChipSpacer>\n );\n }\n\n return (\n <>\n {chips.map(({ label, value }) => (\n <ChipSpacer key={value}>\n <Chip\n label={label ?? sectionId}\n onClick={onClickLabel}\n onClickRemove={\n disableChipClearButton ? undefined : () => onClickRemove(value)\n }\n />\n </ChipSpacer>\n ))}\n </>\n );\n};\n","import { BooleanRecord, BooleanRecordOptions } from \"./BooleanRecordTypes\";\nimport {\n SearchFilterSectionChipModel,\n SearchFilterSectionOnClickRemoveOnChip,\n} from \"../../config/SearchFilterConfig\";\nimport { PickByValue, truthyKeysAsList } from \"@stenajs-webui/core\";\nimport { SectionChipsProps } from \"../../features/chips/SectionChips\";\n\nexport const createChipsPropsForBooleanRecord = <\n TFormModel,\n TSectionKey extends string,\n TField extends keyof PickByValue<TFormModel, BooleanRecord>\n>(\n formModel: TFormModel,\n fieldName: TField,\n options?: BooleanRecordOptions\n): Pick<\n SectionChipsProps<TFormModel, TSectionKey>,\n \"chips\" | \"onClickRemoveOnChip\"\n> => ({\n chips: createChipsForBooleanRecord(formModel[fieldName], options),\n onClickRemoveOnChip: createOnClickRemoveOnChipForBooleanRecord(\n formModel,\n fieldName\n ),\n});\n\nexport const createChipsForBooleanRecord = (\n booleanRecord: BooleanRecord,\n options?: BooleanRecordOptions\n): Array<SearchFilterSectionChipModel> =>\n truthyKeysAsList(booleanRecord).map((key) => {\n const option = options?.find((o) => o.value === key);\n return { value: key, label: option?.label ?? key };\n });\n\nexport const createOnClickRemoveOnChipForBooleanRecord = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, BooleanRecord>\n>(\n formModel: TFormModel,\n fieldName: TField\n): SearchFilterSectionOnClickRemoveOnChip<TFormModel> => {\n return ({ setFormModelFields, value }) => {\n const newRecord: BooleanRecord = { ...formModel[fieldName] };\n newRecord[value] = false;\n setFormModelFields(({\n [fieldName]: newRecord,\n } as unknown) as Partial<TFormModel>);\n };\n};\n","import * as React from \"react\";\nimport {\n SearchFilterSection,\n SearchFilterSectionProps,\n} from \"../../../components/SearchFilterSection\";\nimport { Column, Text } from \"@stenajs-webui/core\";\nimport { CollapsibleClickableContent } from \"@stenajs-webui/panels\";\nimport { Checkbox, ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { BooleanRecord, BooleanRecordOptions } from \"../BooleanRecordTypes\";\n\nexport interface SimpleCheckboxSectionProps<TSectionKey extends string>\n extends SearchFilterSectionProps<TSectionKey>,\n ValueAndOnValueChangeProps<BooleanRecord> {\n options?: BooleanRecordOptions;\n}\n\nexport const SimpleCheckboxListSection = <TSectionKey extends string>({\n options,\n value,\n onValueChange,\n ...sectionProps\n}: SimpleCheckboxSectionProps<TSectionKey>): React.ReactElement => (\n <SearchFilterSection disableContentPadding {...sectionProps}>\n <Column maxHeight={\"400px\"} overflowY={\"auto\"} flex={1}>\n {options?.map((d) => (\n <CollapsibleClickableContent\n key={d.value}\n onClick={() => {\n if (value && onValueChange) {\n const sel = !value[d.value];\n onValueChange({\n ...value,\n [d.value]: sel,\n });\n }\n }}\n contentLeft={<Checkbox tabIndex={-1} value={value?.[d.value]} />}\n >\n <Text>{d.label}</Text>\n </CollapsibleClickableContent>\n ))}\n </Column>\n </SearchFilterSection>\n);\n","import * as React from \"react\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport {\n SearchFilterSection,\n SearchFilterSectionProps,\n} from \"../../../components/SearchFilterSection\";\nimport { ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { BooleanRecord, BooleanRecordOptions } from \"../BooleanRecordTypes\";\nimport { ChipMultiSelect, ChipMultiSelectValue } from \"@stenajs-webui/select\";\nimport { truthyKeysAsList } from \"@stenajs-webui/core\";\n\ninterface ChipMultiSelectSectionProps<TSectionKey extends string>\n extends SearchFilterSectionProps<TSectionKey>,\n ValueAndOnValueChangeProps<BooleanRecord> {\n options?: BooleanRecordOptions;\n}\n\nexport const ChipMultiSelectSection = <TSectionKey extends string>({\n options,\n value,\n onValueChange,\n ...sectionProps\n}: ChipMultiSelectSectionProps<TSectionKey>): React.ReactElement => {\n const [text, setText] = useState<string>(\"\");\n\n const listValue = useMemo<Array<ChipMultiSelectValue>>(\n () =>\n value\n ? truthyKeysAsList(value).map<ChipMultiSelectValue>((key) => {\n const option = options?.find((o) => o.value === key);\n return { value: key, label: option?.label ?? key };\n })\n : [],\n [options, value]\n );\n\n const filteredOptions = useMemo(() => {\n return options?.filter(\n (p) =>\n p.value.toLocaleLowerCase().indexOf(text.toLocaleLowerCase()) > -1 ||\n p.label.toLocaleLowerCase().indexOf(text.toLocaleLowerCase()) > -1\n );\n }, [options, text]);\n\n const onValueChangeInternal = useCallback(\n (value: Array<ChipMultiSelectValue>) => {\n onValueChange?.(createBooleanRecordFromValue(value));\n },\n [onValueChange]\n );\n\n return (\n <SearchFilterSection {...sectionProps}>\n <ChipMultiSelect\n options={filteredOptions}\n value={listValue}\n onValueChange={onValueChangeInternal}\n inputValue={text}\n onInputChange={setText}\n />\n </SearchFilterSection>\n );\n};\n\nconst createBooleanRecordFromValue = (\n value: Array<ChipMultiSelectValue>\n): BooleanRecord => {\n return value.reduce<BooleanRecord>((sum, item) => {\n sum[item.value] = true;\n return sum;\n }, {});\n};\n","import { DateRange } from \"./DateRangeTypes\";\nimport {\n SearchFilterSectionChipModel,\n SearchFilterSectionOnClickRemoveOnChip,\n} from \"../../config/SearchFilterConfig\";\nimport { PickByValue } from \"@stenajs-webui/core\";\nimport { SectionChipsProps } from \"../../features/chips/SectionChips\";\n\nexport const createChipsPropsForDateRange = <\n TFormModel,\n TSectionKey extends string,\n TField extends keyof PickByValue<TFormModel, string | undefined>\n>(\n formModel: TFormModel,\n startDateFieldName: TField,\n endDateFieldName: TField\n): Pick<\n SectionChipsProps<TFormModel, TSectionKey>,\n \"chips\" | \"onClickRemoveOnChip\"\n> => ({\n chips: createChipsForDateRange(\n formModel[startDateFieldName],\n formModel[endDateFieldName]\n ),\n onClickRemoveOnChip: createOnClickRemoveOnChipForDateRange(\n startDateFieldName,\n endDateFieldName\n ),\n});\n\nexport const createChipsForDateRange = (\n startDate: string | undefined,\n endDate: string | undefined\n): Array<SearchFilterSectionChipModel> => {\n if (!startDate && !endDate) {\n return [];\n }\n return [\n { value: \"dateRange\", label: `${startDate ?? \"\"} - ${endDate ?? \"\"}` },\n ];\n};\n\nexport const createOnClickRemoveOnChipForDateRange = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, DateRange>\n>(\n startDateFieldName: TField,\n endDateFieldName: TField\n): SearchFilterSectionOnClickRemoveOnChip<TFormModel> => {\n return ({ setFormModelFields }) => {\n setFormModelFields(({\n [startDateFieldName]: undefined,\n [endDateFieldName]: undefined,\n } as unknown) as Partial<TFormModel>);\n };\n};\n","import { PickByValue } from \"@stenajs-webui/core\";\nimport { DateRangeCalendarSectionProps } from \"./components/DateRangeCalendarSection\";\n\nexport const createDateRangeSectionProps = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, string | undefined>,\n TSectionKey extends string\n>(\n formModel: TFormModel,\n startDateFieldName: TField,\n endDateFieldName: TField\n): Pick<\n DateRangeCalendarSectionProps<TFormModel, TSectionKey>,\n \"value\" | \"onValueChange\"\n> => ({\n value: {\n startDate: formModel[startDateFieldName],\n endDate: formModel[endDateFieldName],\n },\n onValueChange: (value, { dispatch, actions }) => {\n const fields: Partial<TFormModel> = {\n [startDateFieldName]: value.startDate,\n [endDateFieldName]: value.endDate,\n } as any;\n dispatch(actions.setFormModelFields(fields));\n },\n});\n","import {\n DateRangeCalendar,\n DateRangeCalendarProps,\n DateRangeFocusedInput,\n} from \"@stenajs-webui/calendar\";\nimport * as React from \"react\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { Box } from \"@stenajs-webui/core\";\nimport { format, parse } from \"date-fns\";\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\ninterface DateRangeCalendarSectionOnChangeValue {\n startDate?: string;\n endDate?: string;\n}\n\nexport interface DateRangeCalendarSectionProps<\n TFormModel,\n TSectionKey extends string\n> extends SearchFilterSectionProps<TSectionKey>,\n Omit<\n DateRangeCalendarProps<{}>,\n | \"focusedInput\"\n | \"setFocusedInput\"\n | \"startDate\"\n | \"endDate\"\n | \"onChange\"\n | \"setStartDate\"\n | \"setEndDate\"\n > {\n value: DateRangeCalendarSectionOnChangeValue;\n onValueChange: (\n value: DateRangeCalendarSectionOnChangeValue,\n options: SetDateOptions<TFormModel, TSectionKey>\n ) => void;\n}\n\nexport interface SetDateOptions<TFormModel, TSectionKey extends string> {\n dispatch: SearchFilterDispatch<TFormModel>;\n actions: SearchFilterActions<TFormModel, TSectionKey>;\n}\n\nexport const DateRangeCalendarSection = <\n TFormModel,\n TSectionKey extends string\n>({\n value,\n onValueChange,\n sectionId,\n ...dateRangeCalendarProps\n}: DateRangeCalendarSectionProps<TFormModel, TSectionKey>) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions<TFormModel, TSectionKey>();\n\n const options = useMemo<SetDateOptions<TFormModel, TSectionKey>>(\n () => ({ dispatch, actions }),\n [actions, dispatch]\n );\n const [focusedInput, setFocusedInput] = useState<DateRangeFocusedInput>(\n \"startDate\"\n );\n\n const { startDate, endDate } = value ?? {};\n\n const startDateObj = useMemo(\n () => (startDate ? parse(startDate, \"yyyy-MM-dd\", new Date()) : undefined),\n [startDate]\n );\n\n const endDateObj = useMemo(\n () => (endDate ? parse(endDate, \"yyyy-MM-dd\", new Date()) : undefined),\n [endDate]\n );\n\n const setStartDate = useCallback(\n (startDate: Date) => {\n onValueChange(\n { startDate: format(startDate, \"yyyy-MM-dd\"), endDate },\n options\n );\n },\n [endDate, onValueChange, options]\n );\n\n const setEndDate = useCallback(\n (endDate: Date) => {\n onValueChange(\n { startDate, endDate: format(endDate, \"yyyy-MM-dd\") },\n options\n );\n },\n [onValueChange, options, startDate]\n );\n\n return (\n <SearchFilterSection sectionId={sectionId}>\n <Box flex={1} alignItems={\"center\"}>\n <Box background={\"white\"} indent>\n <DateRangeCalendar\n setFocusedInput={setFocusedInput}\n focusedInput={focusedInput}\n startDate={startDateObj}\n endDate={endDateObj}\n setStartDate={setStartDate}\n setEndDate={setEndDate}\n {...dateRangeCalendarProps}\n />\n </Box>\n </Box>\n </SearchFilterSection>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../src/features/search-filter/components/SearchFilterPanelHeader.tsx","../src/features/search-filter/context/SearchFilterStateContext.ts","../src/features/search-filter/context/SearchFilterDispatchContext.ts","../src/features/search-filter/context/SearchFilterActionsContext.ts","../src/features/search-filter/components/SearchFilterDrawer.tsx","../src/features/search-filter/components/SearchFilterButton.tsx","../src/features/search-filter/components/SearchFilterSection.tsx","../src/features/search-filter/context/SearchFilterModelContext.ts","../src/features/search-filter/components/context/SearchFilterContext.tsx","../src/features/search-filter/redux/SearchFilterRedux.ts","../src/features/search-filter/hooks/UseLocalSearchFilterState.ts","../src/features/search-filter/components/context/SearchFilterLocalStateContext.tsx","../src/features/search-filter/features/chips/ChipSpacer.tsx","../src/features/search-filter/features/chips/SearchFilterChips.tsx","../src/features/search-filter/features/chips/EmptyChip.tsx","../src/features/search-filter/features/chips/SearchFilterChip.tsx","../src/features/search-filter/features/chips/SectionChips.tsx","../src/features/search-filter/section-factories/boolean-record/BooleanRecordChips.ts","../src/features/search-filter/section-factories/boolean-record/components/SimpleCheckboxListSection.tsx","../src/features/search-filter/section-factories/boolean-record/components/ChipMultiSelectSection.tsx","../src/features/search-filter/section-factories/date-range/DateRangeChips.ts","../src/features/search-filter/section-factories/date-range/DateRangePropsFactory.ts","../src/features/search-filter/section-factories/date-range/components/DateRangeCalendarSection.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Heading, Indent, Row } from \"@stenajs-webui/core\";\nimport { FlatButton, Icon } from \"@stenajs-webui/elements\";\nimport { faTimes } from \"@fortawesome/free-solid-svg-icons/faTimes\";\nimport { faSlidersH } from \"@fortawesome/free-solid-svg-icons/faSlidersH\";\nimport { cssColor } from \"@stenajs-webui/theme\";\n\ninterface SearchFilterPanelHeaderProps {\n onRequestClose: () => void;\n}\n\nexport const SearchFilterPanelHeader: React.FC<SearchFilterPanelHeaderProps> = ({\n onRequestClose,\n}) => {\n return (\n <Row\n height={\"48px\"}\n justifyContent={\"space-between\"}\n alignItems={\"center\"}\n indent={2}\n >\n <Row alignItems={\"center\"}>\n <Icon\n icon={faSlidersH}\n color={cssColor(\"--lhds-color-ui-500\")}\n size={12}\n />\n <Indent />\n <Heading variant={\"h4\"}>Filters</Heading>\n </Row>\n <FlatButton leftIcon={faTimes} onClick={onRequestClose} />\n </Row>\n );\n};\n","import { createContext, useContext } from \"react\";\nimport { SearchFilterState } from \"../redux/SearchFilterRedux\";\n\nexport const SearchFilterStateContext = createContext<\n SearchFilterState<unknown>\n>((null as unknown) as SearchFilterState<unknown>);\n\nexport const useSearchFilterState = <\n TFormModel\n>(): SearchFilterState<TFormModel> => {\n const c = useContext(SearchFilterStateContext);\n if (!c) {\n throw new Error(\n \"Missing search filter context, wrap components with SearchFilterContext component.\"\n );\n }\n return c as SearchFilterState<TFormModel>;\n};\n","import { createContext, useContext } from \"react\";\nimport { SearchFilterDispatch } from \"../redux/SearchFilterRedux\";\n\nexport const SearchFilterDispatchContext = createContext<\n SearchFilterDispatch<unknown>\n>((null as unknown) as SearchFilterDispatch<unknown>);\n\nexport const useSearchFilterDispatch = () => {\n const c = useContext(SearchFilterDispatchContext);\n if (!c) {\n throw new Error(\"Missing search filter dispatch context.\");\n }\n return c;\n};\n","import { createContext, useContext } from \"react\";\nimport { SearchFilterActions } from \"../redux/SearchFilterRedux\";\n\nexport const SearchFilterActionsContext = createContext<\n SearchFilterActions<unknown, any>\n>((null as unknown) as SearchFilterActions<unknown, any>);\n\nexport const useSearchFilterActions = <\n TFormModel,\n TSectionKey extends string\n>() => {\n const c = useContext(SearchFilterActionsContext);\n if (!c) {\n throw new Error(\"Missing search filter actions context.\");\n }\n return c as SearchFilterActions<TFormModel, TSectionKey>;\n};\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { Drawer, DrawerProps } from \"@stenajs-webui/modal\";\nimport { cssColor } from \"@stenajs-webui/theme\";\nimport { Column } from \"@stenajs-webui/core\";\nimport { SearchFilterPanelHeader } from \"./SearchFilterPanelHeader\";\nimport { useSearchFilterState } from \"../context/SearchFilterStateContext\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\n\ninterface SearchFilterDrawerProps\n extends Omit<DrawerProps, \"isOpen\" | \"onRequestClose\"> {}\n\nexport const SearchFilterDrawer: React.FC<SearchFilterDrawerProps> = ({\n children,\n ...drawerProps\n}) => {\n const {\n settings: { open },\n } = useSearchFilterState();\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const closeDrawer = useCallback(() => {\n dispatch(actions.closeFilters());\n }, [actions, dispatch]);\n\n return (\n <Drawer\n background={cssColor(\"--lhds-color-ui-50\")}\n width={\"370px\"}\n isOpen={open}\n onRequestClose={closeDrawer}\n {...drawerProps}\n >\n <Column>\n <SearchFilterPanelHeader onRequestClose={closeDrawer} />\n {children}\n </Column>\n </Drawer>\n );\n};\n","import { faSlidersH } from \"@fortawesome/free-solid-svg-icons/faSlidersH\";\nimport { SecondaryButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\n\ninterface SearchFilterDrawerButtonProps {\n label?: string;\n}\n\nexport const SearchFilterButton: React.VFC<SearchFilterDrawerButtonProps> = ({\n label = \"Filters\",\n}) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const onClickButton = useCallback(() => {\n dispatch(actions.openFilters());\n }, [actions, dispatch]);\n\n return (\n <SecondaryButton\n label={label}\n leftIcon={faSlidersH}\n onClick={onClickButton}\n />\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren, useCallback } from \"react\";\nimport { Row } from \"@stenajs-webui/core\";\nimport { Collapsible, CollapsibleContent } from \"@stenajs-webui/panels\";\nimport { lowerCase, upperFirst } from \"lodash\";\nimport { Banner, FlatButton, Spinner } from \"@stenajs-webui/elements\";\nimport { useSearchFilterState } from \"../context/SearchFilterStateContext\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\n\nexport interface SearchFilterSectionProps<TSectionKey extends string> {\n sectionId: TSectionKey;\n contentLeft?: React.ReactNode;\n contentRight?: React.ReactNode;\n disableContentPadding?: boolean;\n loading?: boolean;\n error?: string;\n onRetry?: () => void;\n label?: string;\n}\n\nexport const SearchFilterSection = function SearchFilterSection<\n TSectionKey extends string\n>({\n sectionId,\n label,\n contentLeft,\n contentRight,\n loading,\n error,\n onRetry,\n disableContentPadding,\n children,\n}: PropsWithChildren<SearchFilterSectionProps<TSectionKey>>) {\n const state = useSearchFilterState();\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const expanded = state.expandedSections.values[sectionId] ?? false;\n\n const onClickLabel = useCallback(() => {\n dispatch(actions.setSectionExpanded(sectionId, !expanded));\n }, [actions, dispatch, expanded, sectionId]);\n\n const activeLabel = label ?? formatColumnIdToHeaderCellLabel(sectionId);\n\n return (\n <Collapsible\n label={activeLabel}\n collapsed={!expanded}\n onClick={onClickLabel}\n contentLeft={contentLeft}\n contentRight={contentRight}\n >\n {loading ? (\n <CollapsibleContent>\n <Row spacing justifyContent={\"center\"} flex={1}>\n <Spinner size={\"small\"} />\n </Row>\n </CollapsibleContent>\n ) : error ? (\n <Banner\n variant={\"error\"}\n text={error}\n contentRight={\n onRetry ? <FlatButton label={\"Retry\"} onClick={onRetry} /> : null\n }\n />\n ) : disableContentPadding ? (\n children\n ) : (\n <CollapsibleContent>{children}</CollapsibleContent>\n )}\n </Collapsible>\n );\n};\n\nexport const formatColumnIdToHeaderCellLabel = (columnId: string): string =>\n upperFirst(lowerCase(columnId));\n","import { createContext, useContext } from \"react\";\n\nexport const SearchFilterModelContext = createContext<unknown>(null as unknown);\n\nexport const useSearchFilterModel = <TFormModel>(): TFormModel => {\n const c = useContext(SearchFilterModelContext);\n if (!c) {\n throw new Error(\n \"Missing search filter context, wrap components with SearchFilterContext component.\"\n );\n }\n return c as TFormModel;\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport {\n SearchFilterActions,\n SearchFilterDispatch,\n SearchFilterState,\n} from \"../../redux/SearchFilterRedux\";\nimport { SearchFilterDispatchContext } from \"../../context/SearchFilterDispatchContext\";\nimport { SearchFilterActionsContext } from \"../../context/SearchFilterActionsContext\";\nimport { SearchFilterStateContext } from \"../../context/SearchFilterStateContext\";\nimport { SearchFilterModelContext } from \"../../context/SearchFilterModelContext\";\n\ninterface SearchFilterScopeProps<TFormModel, TSectionKey extends string> {\n state: SearchFilterState<TFormModel>;\n dispatch: SearchFilterDispatch<TFormModel>;\n actions: SearchFilterActions<TFormModel, TSectionKey>;\n}\n\nexport const SearchFilterContext = function SearchFilterScope<\n TFormModel,\n TSectionKey extends string\n>({\n state,\n dispatch,\n actions,\n children,\n}: PropsWithChildren<SearchFilterScopeProps<TFormModel, TSectionKey>>) {\n return (\n <SearchFilterDispatchContext.Provider\n value={dispatch as SearchFilterDispatch<unknown>}\n >\n <SearchFilterActionsContext.Provider value={actions}>\n <SearchFilterStateContext.Provider value={state}>\n <SearchFilterModelContext.Provider value={state.formModel}>\n {children}\n </SearchFilterModelContext.Provider>\n </SearchFilterStateContext.Provider>\n </SearchFilterActionsContext.Provider>\n </SearchFilterDispatchContext.Provider>\n );\n};\n","import { combineReducers } from \"redux\";\nimport {\n createEntityActions,\n createEntityReducer,\n createValueByIdActions,\n createValueByIdReducer,\n EntityAction,\n EntityState,\n reducerIdGate,\n reducerIdGateAction,\n ReducerIdGateAction,\n ValueByIdAction,\n ValueByIdState,\n} from \"@stenajs-webui/redux\";\nimport { Dispatch } from \"react\";\n\nexport interface SearchFilterSettings {\n open: boolean;\n}\n\nexport type SearchFilterDispatch<TFormModel> = Dispatch<\n SearchFilterAction<TFormModel>\n>;\n\nexport interface SearchFilterState<TFormModel> {\n expandedSections: ValueByIdState<boolean>;\n formModel: EntityState<TFormModel>;\n settings: EntityState<SearchFilterSettings>;\n}\n\nexport type SearchFilterAction<TFormModel> =\n | ReducerIdGateAction<ValueByIdAction<boolean>>\n | ReducerIdGateAction<EntityAction<TFormModel>>\n | ReducerIdGateAction<EntityAction<SearchFilterSettings>>;\n\nexport const createSearchFilterInitialState = <TFormModel>(\n initialFormModel: TFormModel\n): SearchFilterState<TFormModel> => ({\n settings: {\n open: false,\n },\n formModel: initialFormModel,\n expandedSections: { values: {} },\n});\n\nexport const createSearchFilterReducer = <TFormModel>(\n reducerId: string,\n initialState: SearchFilterState<TFormModel>\n) =>\n combineReducers({\n expandedSections: reducerIdGate(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdReducer<boolean>(initialState.expandedSections)\n ),\n formModel: reducerIdGate(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityReducer<TFormModel>(initialState.formModel)\n ),\n settings: reducerIdGate(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityReducer<SearchFilterSettings>(initialState.settings)\n ),\n });\n\nexport interface SearchFilterActions<TFormModel, TSectionKey extends string> {\n openFilters: () => SearchFilterAction<TFormModel>;\n closeFilters: () => SearchFilterAction<TFormModel>;\n setFormModelFields: (\n fields: Partial<TFormModel>\n ) => SearchFilterAction<TFormModel>;\n clearFormModel: () => SearchFilterAction<TFormModel>;\n expandSection: (section: TSectionKey) => SearchFilterAction<TFormModel>;\n collapseSection: (section: TSectionKey) => SearchFilterAction<TFormModel>;\n setSectionExpanded: (\n section: TSectionKey,\n expanded: boolean\n ) => SearchFilterAction<TFormModel>;\n clearExpandedSections: () => SearchFilterAction<TFormModel>;\n}\n\nexport const createSearchFilterActions = <\n TFormModel,\n TSectionKey extends string\n>(\n reducerId: string,\n initialFormModel: TFormModel\n): SearchFilterActions<TFormModel, TSectionKey> => ({\n openFilters: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityActions<SearchFilterSettings>().setEntityFields({\n open: true,\n })\n ),\n closeFilters: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityActions<SearchFilterSettings>().setEntityFields({\n open: false,\n })\n ),\n setFormModelFields: (fields: Partial<TFormModel>) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityActions<TFormModel>().setEntityFields(fields)\n ),\n clearFormModel: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityActions<TFormModel>().setEntity(initialFormModel)\n ),\n expandSection: (section: TSectionKey) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, true)\n ),\n collapseSection: (section: TSectionKey) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, false)\n ),\n setSectionExpanded: (section: TSectionKey, expanded: boolean) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, expanded)\n ),\n clearExpandedSections: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().clearAllValues()\n ),\n});\n\nexport const getReducerIdFor = (\n reducerId: string,\n reducerIdSuffix: keyof SearchFilterState<unknown>\n): string => `${reducerId}.${reducerIdSuffix}`;\n","import {\n createSearchFilterActions,\n createSearchFilterReducer,\n SearchFilterState,\n} from \"../redux/SearchFilterRedux\";\nimport { useReducer, useState } from \"react\";\n\nexport const useLocalSearchFilterState = <\n TFormModel,\n TSectionKey extends string\n>(\n initialState: SearchFilterState<TFormModel>\n) => {\n const [reducer] = useState(() =>\n createSearchFilterReducer<TFormModel>(\"local\", initialState)\n );\n\n const [actions] = useState(() =>\n createSearchFilterActions<TFormModel, TSectionKey>(\n \"local\",\n initialState.formModel\n )\n );\n\n const [state, dispatch] = useReducer(reducer, initialState);\n\n return {\n actions,\n state,\n dispatch,\n };\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport { useLocalSearchFilterState } from \"../../hooks/UseLocalSearchFilterState\";\nimport { SearchFilterContext } from \"./SearchFilterContext\";\nimport { createSearchFilterInitialState } from \"../../redux/SearchFilterRedux\";\n\ninterface SearchFilterLocalScopeProps<TFormModel> {\n initialFormModel: TFormModel;\n}\n\nexport const SearchFilterLocalStateContext = function SearchFilterLocalScope<\n TFormModel\n>({\n initialFormModel,\n children,\n}: PropsWithChildren<SearchFilterLocalScopeProps<TFormModel>>) {\n const { state, actions, dispatch } = useLocalSearchFilterState(\n createSearchFilterInitialState(initialFormModel)\n );\n\n return (\n <SearchFilterContext state={state} actions={actions} dispatch={dispatch}>\n {children}\n </SearchFilterContext>\n );\n};\n","import styled from \"@emotion/styled\";\n\nexport const ChipSpacer = styled.div`\n padding: calc(var(--swui-metrics-spacing) / 2)\n calc(var(--swui-metrics-indent) / 2);\n`;\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { Row } from \"@stenajs-webui/core\";\nimport { ChipSpacer } from \"./ChipSpacer\";\nimport { FlatButton } from \"@stenajs-webui/elements\";\nimport { useSearchFilterDispatch } from \"../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../context/SearchFilterActionsContext\";\n\ninterface SearchFilterChipsProps {\n disableClearAllButton?: boolean;\n}\n\nexport const SearchFilterChips: React.FC<SearchFilterChipsProps> = ({\n children,\n disableClearAllButton = false,\n}) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const onClickClearAll = useCallback(\n () => dispatch(actions.clearFormModel()),\n [actions, dispatch]\n );\n\n return (\n <Row flexWrap={\"wrap\"}>\n {children}\n {!disableClearAllButton && (\n <ChipSpacer>\n <FlatButton\n size={\"small\"}\n label={\"Clear all\"}\n onClick={onClickClearAll}\n />\n </ChipSpacer>\n )}\n </Row>\n );\n};\n","import * as React from \"react\";\nimport { ChipSpacer } from \"./ChipSpacer\";\nimport { Chip } from \"@stenajs-webui/elements\";\nimport { useCallback } from \"react\";\nimport { useSearchFilterDispatch } from \"../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../context/SearchFilterActionsContext\";\n\ninterface EmptyChipProps<TSectionKey extends string> {\n sectionId: TSectionKey;\n label: string;\n}\n\nexport const EmptyChip = function EmptyChip<TSectionKey extends string>({\n label,\n sectionId,\n}: EmptyChipProps<TSectionKey>) {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const onClickLabel = useCallback(() => {\n dispatch(actions.clearExpandedSections());\n dispatch(actions.expandSection(sectionId));\n dispatch(actions.openFilters());\n }, [actions, dispatch, sectionId]);\n\n return (\n <ChipSpacer>\n <Chip label={label} variant={\"secondary\"} onClick={onClickLabel} />\n </ChipSpacer>\n );\n};\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { ChipSpacer } from \"./ChipSpacer\";\nimport { Chip } from \"@stenajs-webui/elements\";\nimport { useSearchFilterDispatch } from \"../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../context/SearchFilterActionsContext\";\nimport { SearchFilterSectionOnClickRemoveOnChip } from \"../../config/SearchFilterConfig\";\n\ninterface SearchFilterChipProps<TFormModel, TSectionKey> {\n sectionId: TSectionKey;\n label: string;\n value: string;\n onClickRemove?: SearchFilterSectionOnClickRemoveOnChip<TFormModel>;\n}\n\nexport const SearchFilterChip = function SearchFilterChip<\n TFormModel,\n TSectionKey extends string\n>({\n sectionId,\n label,\n value,\n onClickRemove,\n}: SearchFilterChipProps<TFormModel, TSectionKey>) {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const setFormModelFields = useCallback(\n (fields: Partial<TFormModel>) =>\n dispatch(actions.setFormModelFields(fields)),\n [dispatch, actions]\n );\n\n const onClickRemoveHandler = useCallback(() => {\n onClickRemove?.({ value, setFormModelFields });\n }, [onClickRemove, setFormModelFields, value]);\n\n const onClickLabel = useCallback(() => {\n dispatch(actions.clearExpandedSections());\n dispatch(actions.expandSection(sectionId));\n dispatch(actions.openFilters());\n }, [actions, dispatch, sectionId]);\n\n return (\n <ChipSpacer>\n <Chip\n label={label ?? sectionId}\n onClick={onClickLabel}\n onClickRemove={onClickRemove ? onClickRemoveHandler : undefined}\n />\n </ChipSpacer>\n );\n};\n","import * as React from \"react\";\nimport {\n SearchFilterSectionChipModel,\n SearchFilterSectionOnClickRemoveOnChip,\n} from \"../../config/SearchFilterConfig\";\nimport { EmptyChip } from \"./EmptyChip\";\nimport { SearchFilterChip } from \"./SearchFilterChip\";\n\nexport interface SectionChipsProps<TFormModel, TSectionKey extends string> {\n sectionId: TSectionKey;\n chips?: Array<SearchFilterSectionChipModel>;\n emptyChipLabel?: string;\n onClickRemoveOnChip?: SearchFilterSectionOnClickRemoveOnChip<TFormModel>;\n}\n\nexport const SectionChips = function SectionChips<\n TFormModel,\n TSectionKey extends string\n>({\n sectionId,\n chips,\n emptyChipLabel,\n onClickRemoveOnChip,\n}: SectionChipsProps<TFormModel, TSectionKey>) {\n if (!chips?.length) {\n if (!emptyChipLabel) {\n return null;\n }\n return <EmptyChip sectionId={sectionId} label={emptyChipLabel} />;\n }\n\n return (\n <>\n {chips.map(({ label, value }) => (\n <SearchFilterChip\n key={value}\n label={label ?? sectionId}\n sectionId={sectionId}\n onClickRemove={onClickRemoveOnChip}\n value={value}\n />\n ))}\n </>\n );\n};\n","import { BooleanRecord, BooleanRecordOptions } from \"./BooleanRecordTypes\";\nimport {\n SearchFilterSectionChipModel,\n SearchFilterSectionOnClickRemoveOnChip,\n} from \"../../config/SearchFilterConfig\";\nimport { PickByValue, truthyKeysAsList } from \"@stenajs-webui/core\";\nimport { SectionChipsProps } from \"../../features/chips/SectionChips\";\n\nexport const createChipsPropsForBooleanRecord = <\n TFormModel,\n TSectionKey extends string,\n TField extends keyof PickByValue<TFormModel, BooleanRecord>\n>(\n formModel: TFormModel,\n fieldName: TField,\n options?: BooleanRecordOptions\n): Pick<\n SectionChipsProps<TFormModel, TSectionKey>,\n \"chips\" | \"onClickRemoveOnChip\"\n> => ({\n chips: createChipsForBooleanRecord(formModel[fieldName], options),\n onClickRemoveOnChip: createOnClickRemoveOnChipForBooleanRecord(\n formModel,\n fieldName\n ),\n});\n\nexport const createChipsForBooleanRecord = (\n booleanRecord: BooleanRecord,\n options?: BooleanRecordOptions\n): Array<SearchFilterSectionChipModel> =>\n truthyKeysAsList(booleanRecord).map((key) => {\n const option = options?.find((o) => o.value === key);\n return { value: key, label: option?.label ?? key };\n });\n\nexport const createOnClickRemoveOnChipForBooleanRecord = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, BooleanRecord>\n>(\n formModel: TFormModel,\n fieldName: TField\n): SearchFilterSectionOnClickRemoveOnChip<TFormModel> => {\n return ({ setFormModelFields, value }) => {\n const newRecord: BooleanRecord = { ...formModel[fieldName] };\n newRecord[value] = false;\n setFormModelFields(({\n [fieldName]: newRecord,\n } as unknown) as Partial<TFormModel>);\n };\n};\n","import * as React from \"react\";\nimport {\n SearchFilterSection,\n SearchFilterSectionProps,\n} from \"../../../components/SearchFilterSection\";\nimport { Column, Text } from \"@stenajs-webui/core\";\nimport { CollapsibleClickableContent } from \"@stenajs-webui/panels\";\nimport { Checkbox, ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { BooleanRecord, BooleanRecordOptions } from \"../BooleanRecordTypes\";\n\nexport interface SimpleCheckboxSectionProps<TSectionKey extends string>\n extends SearchFilterSectionProps<TSectionKey>,\n ValueAndOnValueChangeProps<BooleanRecord> {\n options?: BooleanRecordOptions;\n}\n\nexport const SimpleCheckboxListSection = <TSectionKey extends string>({\n options,\n value,\n onValueChange,\n ...sectionProps\n}: SimpleCheckboxSectionProps<TSectionKey>): React.ReactElement => (\n <SearchFilterSection disableContentPadding {...sectionProps}>\n <Column maxHeight={\"400px\"} overflowY={\"auto\"} flex={1}>\n {options?.map((d) => (\n <CollapsibleClickableContent\n key={d.value}\n onClick={() => {\n if (value && onValueChange) {\n const sel = !value[d.value];\n onValueChange({\n ...value,\n [d.value]: sel,\n });\n }\n }}\n contentLeft={<Checkbox tabIndex={-1} value={value?.[d.value]} />}\n >\n <Text>{d.label}</Text>\n </CollapsibleClickableContent>\n ))}\n </Column>\n </SearchFilterSection>\n);\n","import * as React from \"react\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport {\n SearchFilterSection,\n SearchFilterSectionProps,\n} from \"../../../components/SearchFilterSection\";\nimport { ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { BooleanRecord, BooleanRecordOptions } from \"../BooleanRecordTypes\";\nimport { ChipMultiSelect, ChipMultiSelectValue } from \"@stenajs-webui/select\";\nimport { truthyKeysAsList } from \"@stenajs-webui/core\";\n\ninterface ChipMultiSelectSectionProps<TSectionKey extends string>\n extends SearchFilterSectionProps<TSectionKey>,\n ValueAndOnValueChangeProps<BooleanRecord> {\n noneSelectedLabel?: string;\n options?: BooleanRecordOptions;\n}\n\nexport const ChipMultiSelectSection = <TSectionKey extends string>({\n options,\n value,\n noneSelectedLabel,\n onValueChange,\n ...sectionProps\n}: ChipMultiSelectSectionProps<TSectionKey>): React.ReactElement => {\n const [text, setText] = useState<string>(\"\");\n\n const listValue = useMemo<Array<ChipMultiSelectValue>>(\n () =>\n value\n ? truthyKeysAsList(value).map<ChipMultiSelectValue>((key) => {\n const option = options?.find((o) => o.value === key);\n return { value: key, label: option?.label ?? key };\n })\n : [],\n [options, value]\n );\n\n const filteredOptions = useMemo(() => {\n return options?.filter(\n (p) =>\n p.value.toLocaleLowerCase().indexOf(text.toLocaleLowerCase()) > -1 ||\n p.label.toLocaleLowerCase().indexOf(text.toLocaleLowerCase()) > -1\n );\n }, [options, text]);\n\n const onValueChangeInternal = useCallback(\n (value: Array<ChipMultiSelectValue>) => {\n onValueChange?.(createBooleanRecordFromValue(value));\n },\n [onValueChange]\n );\n\n return (\n <SearchFilterSection {...sectionProps}>\n <ChipMultiSelect\n options={filteredOptions}\n value={listValue}\n onValueChange={onValueChangeInternal}\n inputValue={text}\n noneSelectedLabel={noneSelectedLabel}\n onInputChange={setText}\n closeMenuOnSelect={false}\n />\n </SearchFilterSection>\n );\n};\n\nconst createBooleanRecordFromValue = (\n value: Array<ChipMultiSelectValue>\n): BooleanRecord => {\n return value.reduce<BooleanRecord>((sum, item) => {\n sum[item.value] = true;\n return sum;\n }, {});\n};\n","import { DateStringRange } from \"@stenajs-webui/calendar\";\nimport {\n SearchFilterSectionChipModel,\n SearchFilterSectionOnClickRemoveOnChip,\n} from \"../../config/SearchFilterConfig\";\nimport { PickByValue } from \"@stenajs-webui/core\";\nimport { SectionChipsProps } from \"../../features/chips/SectionChips\";\n\nexport const createChipsPropsForDateRange = <\n TFormModel,\n TSectionKey extends string,\n TField extends keyof PickByValue<TFormModel, string | undefined>\n>(\n formModel: TFormModel,\n startDateFieldName: TField,\n endDateFieldName: TField\n): Pick<\n SectionChipsProps<TFormModel, TSectionKey>,\n \"chips\" | \"onClickRemoveOnChip\"\n> => ({\n chips: createChipsForDateRange(\n formModel[startDateFieldName],\n formModel[endDateFieldName]\n ),\n onClickRemoveOnChip: createOnClickRemoveOnChipForDateRange(\n startDateFieldName,\n endDateFieldName\n ),\n});\n\nexport const createChipsForDateRange = (\n startDate: string | undefined,\n endDate: string | undefined\n): Array<SearchFilterSectionChipModel> => {\n if (!startDate && !endDate) {\n return [];\n }\n return [\n { value: \"dateRange\", label: `${startDate ?? \"\"} - ${endDate ?? \"\"}` },\n ];\n};\n\nexport const createOnClickRemoveOnChipForDateRange = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, DateStringRange>\n>(\n startDateFieldName: TField,\n endDateFieldName: TField\n): SearchFilterSectionOnClickRemoveOnChip<TFormModel> => {\n return ({ setFormModelFields }) => {\n setFormModelFields(({\n [startDateFieldName]: undefined,\n [endDateFieldName]: undefined,\n } as unknown) as Partial<TFormModel>);\n };\n};\n","import { PickByValue } from \"@stenajs-webui/core\";\nimport { DateRangeCalendarSectionProps } from \"./components/DateRangeCalendarSection\";\n\nexport const createDateRangeSectionProps = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, string | undefined>,\n TSectionKey extends string\n>(\n formModel: TFormModel,\n startDateFieldName: TField,\n endDateFieldName: TField\n): Pick<\n DateRangeCalendarSectionProps<TFormModel, TSectionKey>,\n \"value\" | \"onValueChange\"\n> => ({\n value: {\n startDate: formModel[startDateFieldName],\n endDate: formModel[endDateFieldName],\n },\n onValueChange: (value, { dispatch, actions }) => {\n const fields: Partial<TFormModel> = {\n [startDateFieldName]: value.startDate,\n [endDateFieldName]: value.endDate,\n } as any;\n dispatch(actions.setFormModelFields(fields));\n },\n});\n","import {\n DateRange,\n DateRangeCalendar,\n DateRangeCalendarProps,\n DateRangeFocusedInput,\n dateRangeToStrings,\n DateStringRange,\n stringsToDateRange,\n} from \"@stenajs-webui/calendar\";\nimport * as React from \"react\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { Box } from \"@stenajs-webui/core\";\nimport {\n SearchFilterSection,\n SearchFilterSectionProps,\n} from \"../../../components/SearchFilterSection\";\nimport {\n SearchFilterActions,\n SearchFilterDispatch,\n} from \"../../../redux/SearchFilterRedux\";\nimport { useSearchFilterDispatch } from \"../../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../../context/SearchFilterActionsContext\";\n\nexport interface DateRangeCalendarSectionProps<\n TFormModel,\n TSectionKey extends string\n> extends SearchFilterSectionProps<TSectionKey>,\n Omit<\n DateRangeCalendarProps<{}>,\n \"value\" | \"onValueChange\" | \"focusedInput\" | \"setFocusedInput\"\n > {\n value: DateStringRange;\n onValueChange: (\n value: DateStringRange,\n options: SetDateOptions<TFormModel, TSectionKey>\n ) => void;\n}\n\nexport interface SetDateOptions<TFormModel, TSectionKey extends string> {\n dispatch: SearchFilterDispatch<TFormModel>;\n actions: SearchFilterActions<TFormModel, TSectionKey>;\n}\n\nexport const DateRangeCalendarSection = <\n TFormModel,\n TSectionKey extends string\n>({\n value,\n onValueChange,\n sectionId,\n ...dateRangeCalendarProps\n}: DateRangeCalendarSectionProps<TFormModel, TSectionKey>) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions<TFormModel, TSectionKey>();\n\n const options = useMemo<SetDateOptions<TFormModel, TSectionKey>>(\n () => ({ dispatch, actions }),\n [actions, dispatch]\n );\n const [focusedInput, setFocusedInput] = useState<DateRangeFocusedInput>(\n \"startDate\"\n );\n\n const dateRangeValue = useMemo(() => stringsToDateRange(value), [value]);\n\n const onValueChangeHandler = useCallback(\n (value: DateRange) => {\n onValueChange(dateRangeToStrings(value), options);\n },\n [onValueChange, options]\n );\n\n return (\n <SearchFilterSection sectionId={sectionId}>\n <Box flex={1} alignItems={\"center\"}>\n <Box background={\"white\"} indent>\n <DateRangeCalendar\n setFocusedInput={setFocusedInput}\n focusedInput={focusedInput}\n value={dateRangeValue}\n onValueChange={onValueChangeHandler}\n {...dateRangeCalendarProps}\n />\n </Box>\n </Box>\n </SearchFilterSection>\n );\n};\n"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -17,7 +17,6 @@ var styled = require('@emotion/styled');
|
|
|
17
17
|
var forms = require('@stenajs-webui/forms');
|
|
18
18
|
var select = require('@stenajs-webui/select');
|
|
19
19
|
var calendar = require('@stenajs-webui/calendar');
|
|
20
|
-
var dateFns = require('date-fns');
|
|
21
20
|
|
|
22
21
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
23
22
|
|
|
@@ -263,32 +262,49 @@ var SearchFilterChips = function (_a) {
|
|
|
263
262
|
React__namespace.createElement(elements.FlatButton, { size: "small", label: "Clear all", onClick: onClickClearAll })))));
|
|
264
263
|
};
|
|
265
264
|
|
|
266
|
-
var
|
|
267
|
-
var
|
|
265
|
+
var EmptyChip = function EmptyChip(_a) {
|
|
266
|
+
var label = _a.label, sectionId = _a.sectionId;
|
|
267
|
+
var dispatch = useSearchFilterDispatch();
|
|
268
|
+
var actions = useSearchFilterActions();
|
|
269
|
+
var onClickLabel = React.useCallback(function () {
|
|
270
|
+
dispatch(actions.clearExpandedSections());
|
|
271
|
+
dispatch(actions.expandSection(sectionId));
|
|
272
|
+
dispatch(actions.openFilters());
|
|
273
|
+
}, [actions, dispatch, sectionId]);
|
|
274
|
+
return (React__namespace.createElement(ChipSpacer, null,
|
|
275
|
+
React__namespace.createElement(elements.Chip, { label: label, variant: "secondary", onClick: onClickLabel })));
|
|
276
|
+
};
|
|
277
|
+
|
|
278
|
+
var SearchFilterChip = function SearchFilterChip(_a) {
|
|
279
|
+
var sectionId = _a.sectionId, label = _a.label, value = _a.value, onClickRemove = _a.onClickRemove;
|
|
268
280
|
var dispatch = useSearchFilterDispatch();
|
|
269
281
|
var actions = useSearchFilterActions();
|
|
270
282
|
var setFormModelFields = React.useCallback(function (fields) {
|
|
271
283
|
return dispatch(actions.setFormModelFields(fields));
|
|
272
284
|
}, [dispatch, actions]);
|
|
273
|
-
var
|
|
274
|
-
|
|
275
|
-
}, [
|
|
285
|
+
var onClickRemoveHandler = React.useCallback(function () {
|
|
286
|
+
onClickRemove === null || onClickRemove === void 0 ? void 0 : onClickRemove({ value: value, setFormModelFields: setFormModelFields });
|
|
287
|
+
}, [onClickRemove, setFormModelFields, value]);
|
|
276
288
|
var onClickLabel = React.useCallback(function () {
|
|
277
289
|
dispatch(actions.clearExpandedSections());
|
|
278
290
|
dispatch(actions.expandSection(sectionId));
|
|
279
291
|
dispatch(actions.openFilters());
|
|
280
292
|
}, [actions, dispatch, sectionId]);
|
|
293
|
+
return (React__namespace.createElement(ChipSpacer, null,
|
|
294
|
+
React__namespace.createElement(elements.Chip, { label: label !== null && label !== void 0 ? label : sectionId, onClick: onClickLabel, onClickRemove: onClickRemove ? onClickRemoveHandler : undefined })));
|
|
295
|
+
};
|
|
296
|
+
|
|
297
|
+
var SectionChips = function SectionChips(_a) {
|
|
298
|
+
var sectionId = _a.sectionId, chips = _a.chips, emptyChipLabel = _a.emptyChipLabel, onClickRemoveOnChip = _a.onClickRemoveOnChip;
|
|
281
299
|
if (!(chips === null || chips === void 0 ? void 0 : chips.length)) {
|
|
282
300
|
if (!emptyChipLabel) {
|
|
283
301
|
return null;
|
|
284
302
|
}
|
|
285
|
-
return
|
|
286
|
-
React__namespace.createElement(elements.Chip, { label: emptyChipLabel, variant: "secondary", onClick: onClickLabel })));
|
|
303
|
+
return React__namespace.createElement(EmptyChip, { sectionId: sectionId, label: emptyChipLabel });
|
|
287
304
|
}
|
|
288
305
|
return (React__namespace.createElement(React__namespace.Fragment, null, chips.map(function (_a) {
|
|
289
306
|
var label = _a.label, value = _a.value;
|
|
290
|
-
return (React__namespace.createElement(
|
|
291
|
-
React__namespace.createElement(elements.Chip, { label: label !== null && label !== void 0 ? label : sectionId, onClick: onClickLabel, onClickRemove: disableChipClearButton ? undefined : function () { return onClickRemove(value); } })));
|
|
307
|
+
return (React__namespace.createElement(SearchFilterChip, { key: value, label: label !== null && label !== void 0 ? label : sectionId, sectionId: sectionId, onClickRemove: onClickRemoveOnChip, value: value }));
|
|
292
308
|
})));
|
|
293
309
|
};
|
|
294
310
|
|
|
@@ -329,7 +345,7 @@ var SimpleCheckboxListSection = function (_a) {
|
|
|
329
345
|
};
|
|
330
346
|
|
|
331
347
|
var ChipMultiSelectSection = function (_a) {
|
|
332
|
-
var options = _a.options, value = _a.value, onValueChange = _a.onValueChange, sectionProps = __rest(_a, ["options", "value", "onValueChange"]);
|
|
348
|
+
var options = _a.options, value = _a.value, noneSelectedLabel = _a.noneSelectedLabel, onValueChange = _a.onValueChange, sectionProps = __rest(_a, ["options", "value", "noneSelectedLabel", "onValueChange"]);
|
|
333
349
|
var _b = React.useState(""), text = _b[0], setText = _b[1];
|
|
334
350
|
var listValue = React.useMemo(function () {
|
|
335
351
|
return value
|
|
@@ -350,7 +366,7 @@ var ChipMultiSelectSection = function (_a) {
|
|
|
350
366
|
onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange(createBooleanRecordFromValue(value));
|
|
351
367
|
}, [onValueChange]);
|
|
352
368
|
return (React__namespace.createElement(SearchFilterSection, __assign({}, sectionProps),
|
|
353
|
-
React__namespace.createElement(select.ChipMultiSelect, { options: filteredOptions, value: listValue, onValueChange: onValueChangeInternal, inputValue: text, onInputChange: setText })));
|
|
369
|
+
React__namespace.createElement(select.ChipMultiSelect, { options: filteredOptions, value: listValue, onValueChange: onValueChangeInternal, inputValue: text, noneSelectedLabel: noneSelectedLabel, onInputChange: setText, closeMenuOnSelect: false })));
|
|
354
370
|
};
|
|
355
371
|
var createBooleanRecordFromValue = function (value) {
|
|
356
372
|
return value.reduce(function (sum, item) {
|
|
@@ -404,25 +420,22 @@ var DateRangeCalendarSection = function (_a) {
|
|
|
404
420
|
var actions = useSearchFilterActions();
|
|
405
421
|
var options = React.useMemo(function () { return ({ dispatch: dispatch, actions: actions }); }, [actions, dispatch]);
|
|
406
422
|
var _b = React.useState("startDate"), focusedInput = _b[0], setFocusedInput = _b[1];
|
|
407
|
-
var
|
|
408
|
-
var
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
onValueChange({ startDate: dateFns.format(startDate, "yyyy-MM-dd"), endDate: endDate }, options);
|
|
412
|
-
}, [endDate, onValueChange, options]);
|
|
413
|
-
var setEndDate = React.useCallback(function (endDate) {
|
|
414
|
-
onValueChange({ startDate: startDate, endDate: dateFns.format(endDate, "yyyy-MM-dd") }, options);
|
|
415
|
-
}, [onValueChange, options, startDate]);
|
|
423
|
+
var dateRangeValue = React.useMemo(function () { return calendar.stringsToDateRange(value); }, [value]);
|
|
424
|
+
var onValueChangeHandler = React.useCallback(function (value) {
|
|
425
|
+
onValueChange(calendar.dateRangeToStrings(value), options);
|
|
426
|
+
}, [onValueChange, options]);
|
|
416
427
|
return (React__namespace.createElement(SearchFilterSection, { sectionId: sectionId },
|
|
417
428
|
React__namespace.createElement(core.Box, { flex: 1, alignItems: "center" },
|
|
418
429
|
React__namespace.createElement(core.Box, { background: "white", indent: true },
|
|
419
|
-
React__namespace.createElement(calendar.DateRangeCalendar, __assign({ setFocusedInput: setFocusedInput, focusedInput: focusedInput,
|
|
430
|
+
React__namespace.createElement(calendar.DateRangeCalendar, __assign({ setFocusedInput: setFocusedInput, focusedInput: focusedInput, value: dateRangeValue, onValueChange: onValueChangeHandler }, dateRangeCalendarProps))))));
|
|
420
431
|
};
|
|
421
432
|
|
|
422
433
|
exports.ChipMultiSelectSection = ChipMultiSelectSection;
|
|
423
434
|
exports.DateRangeCalendarSection = DateRangeCalendarSection;
|
|
435
|
+
exports.EmptyChip = EmptyChip;
|
|
424
436
|
exports.SearchFilterActionsContext = SearchFilterActionsContext;
|
|
425
437
|
exports.SearchFilterButton = SearchFilterButton;
|
|
438
|
+
exports.SearchFilterChip = SearchFilterChip;
|
|
426
439
|
exports.SearchFilterChips = SearchFilterChips;
|
|
427
440
|
exports.SearchFilterContext = SearchFilterContext;
|
|
428
441
|
exports.SearchFilterDispatchContext = SearchFilterDispatchContext;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/features/search-filter/components/SearchFilterPanelHeader.tsx","../src/features/search-filter/context/SearchFilterStateContext.ts","../src/features/search-filter/context/SearchFilterDispatchContext.ts","../src/features/search-filter/context/SearchFilterActionsContext.ts","../src/features/search-filter/components/SearchFilterDrawer.tsx","../src/features/search-filter/components/SearchFilterButton.tsx","../src/features/search-filter/components/SearchFilterSection.tsx","../src/features/search-filter/context/SearchFilterModelContext.ts","../src/features/search-filter/components/context/SearchFilterContext.tsx","../src/features/search-filter/redux/SearchFilterRedux.ts","../src/features/search-filter/hooks/UseLocalSearchFilterState.ts","../src/features/search-filter/components/context/SearchFilterLocalStateContext.tsx","../src/features/search-filter/features/chips/ChipSpacer.tsx","../src/features/search-filter/features/chips/SearchFilterChips.tsx","../src/features/search-filter/features/chips/SectionChips.tsx","../src/features/search-filter/section-factories/boolean-record/BooleanRecordChips.ts","../src/features/search-filter/section-factories/boolean-record/components/SimpleCheckboxListSection.tsx","../src/features/search-filter/section-factories/boolean-record/components/ChipMultiSelectSection.tsx","../src/features/search-filter/section-factories/date-range/DateRangeChips.ts","../src/features/search-filter/section-factories/date-range/DateRangePropsFactory.ts","../src/features/search-filter/section-factories/date-range/components/DateRangeCalendarSection.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Heading, Indent, Row } from \"@stenajs-webui/core\";\nimport { FlatButton, Icon } from \"@stenajs-webui/elements\";\nimport { faTimes } from \"@fortawesome/free-solid-svg-icons/faTimes\";\nimport { faSlidersH } from \"@fortawesome/free-solid-svg-icons/faSlidersH\";\nimport { cssColor } from \"@stenajs-webui/theme\";\n\ninterface SearchFilterPanelHeaderProps {\n onRequestClose: () => void;\n}\n\nexport const SearchFilterPanelHeader: React.FC<SearchFilterPanelHeaderProps> = ({\n onRequestClose,\n}) => {\n return (\n <Row\n height={\"48px\"}\n justifyContent={\"space-between\"}\n alignItems={\"center\"}\n indent={2}\n >\n <Row alignItems={\"center\"}>\n <Icon\n icon={faSlidersH}\n color={cssColor(\"--lhds-color-ui-500\")}\n size={12}\n />\n <Indent />\n <Heading variant={\"h4\"}>Filters</Heading>\n </Row>\n <FlatButton leftIcon={faTimes} onClick={onRequestClose} />\n </Row>\n );\n};\n","import { createContext, useContext } from \"react\";\nimport { SearchFilterState } from \"../redux/SearchFilterRedux\";\n\nexport const SearchFilterStateContext = createContext<\n SearchFilterState<unknown>\n>((null as unknown) as SearchFilterState<unknown>);\n\nexport const useSearchFilterState = <\n TFormModel\n>(): SearchFilterState<TFormModel> => {\n const c = useContext(SearchFilterStateContext);\n if (!c) {\n throw new Error(\n \"Missing search filter context, wrap components with SearchFilterContext component.\"\n );\n }\n return c as SearchFilterState<TFormModel>;\n};\n","import { createContext, useContext } from \"react\";\nimport { SearchFilterDispatch } from \"../redux/SearchFilterRedux\";\n\nexport const SearchFilterDispatchContext = createContext<\n SearchFilterDispatch<unknown>\n>((null as unknown) as SearchFilterDispatch<unknown>);\n\nexport const useSearchFilterDispatch = () => {\n const c = useContext(SearchFilterDispatchContext);\n if (!c) {\n throw new Error(\"Missing search filter dispatch context.\");\n }\n return c;\n};\n","import { createContext, useContext } from \"react\";\nimport { SearchFilterActions } from \"../redux/SearchFilterRedux\";\n\nexport const SearchFilterActionsContext = createContext<\n SearchFilterActions<unknown, any>\n>((null as unknown) as SearchFilterActions<unknown, any>);\n\nexport const useSearchFilterActions = <\n TFormModel,\n TSectionKey extends string\n>() => {\n const c = useContext(SearchFilterActionsContext);\n if (!c) {\n throw new Error(\"Missing search filter actions context.\");\n }\n return c as SearchFilterActions<TFormModel, TSectionKey>;\n};\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { Drawer, DrawerProps } from \"@stenajs-webui/modal\";\nimport { cssColor } from \"@stenajs-webui/theme\";\nimport { Column } from \"@stenajs-webui/core\";\nimport { SearchFilterPanelHeader } from \"./SearchFilterPanelHeader\";\nimport { useSearchFilterState } from \"../context/SearchFilterStateContext\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\n\ninterface SearchFilterDrawerProps\n extends Omit<DrawerProps, \"isOpen\" | \"onRequestClose\"> {}\n\nexport const SearchFilterDrawer: React.FC<SearchFilterDrawerProps> = ({\n children,\n ...drawerProps\n}) => {\n const {\n settings: { open },\n } = useSearchFilterState();\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const closeDrawer = useCallback(() => {\n dispatch(actions.closeFilters());\n }, [actions, dispatch]);\n\n return (\n <Drawer\n background={cssColor(\"--lhds-color-ui-50\")}\n width={\"370px\"}\n isOpen={open}\n onRequestClose={closeDrawer}\n {...drawerProps}\n >\n <Column>\n <SearchFilterPanelHeader onRequestClose={closeDrawer} />\n {children}\n </Column>\n </Drawer>\n );\n};\n","import { faSlidersH } from \"@fortawesome/free-solid-svg-icons/faSlidersH\";\nimport { SecondaryButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\n\ninterface SearchFilterDrawerButtonProps {\n label?: string;\n}\n\nexport const SearchFilterButton: React.VFC<SearchFilterDrawerButtonProps> = ({\n label = \"Filters\",\n}) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const onClickButton = useCallback(() => {\n dispatch(actions.openFilters());\n }, [actions, dispatch]);\n\n return (\n <SecondaryButton\n label={label}\n leftIcon={faSlidersH}\n onClick={onClickButton}\n />\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren, useCallback } from \"react\";\nimport { Row } from \"@stenajs-webui/core\";\nimport { Collapsible, CollapsibleContent } from \"@stenajs-webui/panels\";\nimport { lowerCase, upperFirst } from \"lodash\";\nimport { Banner, FlatButton, Spinner } from \"@stenajs-webui/elements\";\nimport { useSearchFilterState } from \"../context/SearchFilterStateContext\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\n\nexport interface SearchFilterSectionProps<TSectionKey extends string> {\n sectionId: TSectionKey;\n contentLeft?: React.ReactNode;\n contentRight?: React.ReactNode;\n disableContentPadding?: boolean;\n loading?: boolean;\n error?: string;\n onRetry?: () => void;\n label?: string;\n}\n\nexport const SearchFilterSection = function SearchFilterSection<\n TSectionKey extends string\n>({\n sectionId,\n label,\n contentLeft,\n contentRight,\n loading,\n error,\n onRetry,\n disableContentPadding,\n children,\n}: PropsWithChildren<SearchFilterSectionProps<TSectionKey>>) {\n const state = useSearchFilterState();\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const expanded = state.expandedSections.values[sectionId] ?? false;\n\n const onClickLabel = useCallback(() => {\n dispatch(actions.setSectionExpanded(sectionId, !expanded));\n }, [actions, dispatch, expanded, sectionId]);\n\n const activeLabel = label ?? formatColumnIdToHeaderCellLabel(sectionId);\n\n return (\n <Collapsible\n label={activeLabel}\n collapsed={!expanded}\n onClick={onClickLabel}\n contentLeft={contentLeft}\n contentRight={contentRight}\n >\n {loading ? (\n <CollapsibleContent>\n <Row spacing justifyContent={\"center\"} flex={1}>\n <Spinner size={\"small\"} />\n </Row>\n </CollapsibleContent>\n ) : error ? (\n <Banner\n variant={\"error\"}\n text={error}\n contentRight={\n onRetry ? <FlatButton label={\"Retry\"} onClick={onRetry} /> : null\n }\n />\n ) : disableContentPadding ? (\n children\n ) : (\n <CollapsibleContent>{children}</CollapsibleContent>\n )}\n </Collapsible>\n );\n};\n\nexport const formatColumnIdToHeaderCellLabel = (columnId: string): string =>\n upperFirst(lowerCase(columnId));\n","import { createContext, useContext } from \"react\";\n\nexport const SearchFilterModelContext = createContext<unknown>(null as unknown);\n\nexport const useSearchFilterModel = <TFormModel>(): TFormModel => {\n const c = useContext(SearchFilterModelContext);\n if (!c) {\n throw new Error(\n \"Missing search filter context, wrap components with SearchFilterContext component.\"\n );\n }\n return c as TFormModel;\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport {\n SearchFilterActions,\n SearchFilterDispatch,\n SearchFilterState,\n} from \"../../redux/SearchFilterRedux\";\nimport { SearchFilterDispatchContext } from \"../../context/SearchFilterDispatchContext\";\nimport { SearchFilterActionsContext } from \"../../context/SearchFilterActionsContext\";\nimport { SearchFilterStateContext } from \"../../context/SearchFilterStateContext\";\nimport { SearchFilterModelContext } from \"../../context/SearchFilterModelContext\";\n\ninterface SearchFilterScopeProps<TFormModel, TSectionKey extends string> {\n state: SearchFilterState<TFormModel>;\n dispatch: SearchFilterDispatch<TFormModel>;\n actions: SearchFilterActions<TFormModel, TSectionKey>;\n}\n\nexport const SearchFilterContext = function SearchFilterScope<\n TFormModel,\n TSectionKey extends string\n>({\n state,\n dispatch,\n actions,\n children,\n}: PropsWithChildren<SearchFilterScopeProps<TFormModel, TSectionKey>>) {\n return (\n <SearchFilterDispatchContext.Provider\n value={dispatch as SearchFilterDispatch<unknown>}\n >\n <SearchFilterActionsContext.Provider value={actions}>\n <SearchFilterStateContext.Provider value={state}>\n <SearchFilterModelContext.Provider value={state.formModel}>\n {children}\n </SearchFilterModelContext.Provider>\n </SearchFilterStateContext.Provider>\n </SearchFilterActionsContext.Provider>\n </SearchFilterDispatchContext.Provider>\n );\n};\n","import { combineReducers } from \"redux\";\nimport {\n createEntityActions,\n createEntityReducer,\n createValueByIdActions,\n createValueByIdReducer,\n EntityAction,\n EntityState,\n reducerIdGate,\n reducerIdGateAction,\n ReducerIdGateAction,\n ValueByIdAction,\n ValueByIdState,\n} from \"@stenajs-webui/redux\";\nimport { Dispatch } from \"react\";\n\nexport interface SearchFilterSettings {\n open: boolean;\n}\n\nexport type SearchFilterDispatch<TFormModel> = Dispatch<\n SearchFilterAction<TFormModel>\n>;\n\nexport interface SearchFilterState<TFormModel> {\n expandedSections: ValueByIdState<boolean>;\n formModel: EntityState<TFormModel>;\n settings: EntityState<SearchFilterSettings>;\n}\n\nexport type SearchFilterAction<TFormModel> =\n | ReducerIdGateAction<ValueByIdAction<boolean>>\n | ReducerIdGateAction<EntityAction<TFormModel>>\n | ReducerIdGateAction<EntityAction<SearchFilterSettings>>;\n\nexport const createSearchFilterInitialState = <TFormModel>(\n initialFormModel: TFormModel\n): SearchFilterState<TFormModel> => ({\n settings: {\n open: false,\n },\n formModel: initialFormModel,\n expandedSections: { values: {} },\n});\n\nexport const createSearchFilterReducer = <TFormModel>(\n reducerId: string,\n initialState: SearchFilterState<TFormModel>\n) =>\n combineReducers({\n expandedSections: reducerIdGate(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdReducer<boolean>(initialState.expandedSections)\n ),\n formModel: reducerIdGate(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityReducer<TFormModel>(initialState.formModel)\n ),\n settings: reducerIdGate(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityReducer<SearchFilterSettings>(initialState.settings)\n ),\n });\n\nexport interface SearchFilterActions<TFormModel, TSectionKey extends string> {\n openFilters: () => SearchFilterAction<TFormModel>;\n closeFilters: () => SearchFilterAction<TFormModel>;\n setFormModelFields: (\n fields: Partial<TFormModel>\n ) => SearchFilterAction<TFormModel>;\n clearFormModel: () => SearchFilterAction<TFormModel>;\n expandSection: (section: TSectionKey) => SearchFilterAction<TFormModel>;\n collapseSection: (section: TSectionKey) => SearchFilterAction<TFormModel>;\n setSectionExpanded: (\n section: TSectionKey,\n expanded: boolean\n ) => SearchFilterAction<TFormModel>;\n clearExpandedSections: () => SearchFilterAction<TFormModel>;\n}\n\nexport const createSearchFilterActions = <\n TFormModel,\n TSectionKey extends string\n>(\n reducerId: string,\n initialFormModel: TFormModel\n): SearchFilterActions<TFormModel, TSectionKey> => ({\n openFilters: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityActions<SearchFilterSettings>().setEntityFields({\n open: true,\n })\n ),\n closeFilters: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityActions<SearchFilterSettings>().setEntityFields({\n open: false,\n })\n ),\n setFormModelFields: (fields: Partial<TFormModel>) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityActions<TFormModel>().setEntityFields(fields)\n ),\n clearFormModel: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityActions<TFormModel>().setEntity(initialFormModel)\n ),\n expandSection: (section: TSectionKey) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, true)\n ),\n collapseSection: (section: TSectionKey) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, false)\n ),\n setSectionExpanded: (section: TSectionKey, expanded: boolean) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, expanded)\n ),\n clearExpandedSections: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().clearAllValues()\n ),\n});\n\nexport const getReducerIdFor = (\n reducerId: string,\n reducerIdSuffix: keyof SearchFilterState<unknown>\n): string => `${reducerId}.${reducerIdSuffix}`;\n","import {\n createSearchFilterActions,\n createSearchFilterReducer,\n SearchFilterState,\n} from \"../redux/SearchFilterRedux\";\nimport { useReducer, useState } from \"react\";\n\nexport const useLocalSearchFilterState = <\n TFormModel,\n TSectionKey extends string\n>(\n initialState: SearchFilterState<TFormModel>\n) => {\n const [reducer] = useState(() =>\n createSearchFilterReducer<TFormModel>(\"local\", initialState)\n );\n\n const [actions] = useState(() =>\n createSearchFilterActions<TFormModel, TSectionKey>(\n \"local\",\n initialState.formModel\n )\n );\n\n const [state, dispatch] = useReducer(reducer, initialState);\n\n return {\n actions,\n state,\n dispatch,\n };\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport { useLocalSearchFilterState } from \"../../hooks/UseLocalSearchFilterState\";\nimport { SearchFilterContext } from \"./SearchFilterContext\";\nimport { createSearchFilterInitialState } from \"../../redux/SearchFilterRedux\";\n\ninterface SearchFilterLocalScopeProps<TFormModel> {\n initialFormModel: TFormModel;\n}\n\nexport const SearchFilterLocalStateContext = function SearchFilterLocalScope<\n TFormModel\n>({\n initialFormModel,\n children,\n}: PropsWithChildren<SearchFilterLocalScopeProps<TFormModel>>) {\n const { state, actions, dispatch } = useLocalSearchFilterState(\n createSearchFilterInitialState(initialFormModel)\n );\n\n return (\n <SearchFilterContext state={state} actions={actions} dispatch={dispatch}>\n {children}\n </SearchFilterContext>\n );\n};\n","import styled from \"@emotion/styled\";\n\nexport const ChipSpacer = styled.div`\n padding: calc(var(--swui-metrics-spacing) / 2)\n calc(var(--swui-metrics-indent) / 2);\n`;\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { Row } from \"@stenajs-webui/core\";\nimport { ChipSpacer } from \"./ChipSpacer\";\nimport { FlatButton } from \"@stenajs-webui/elements\";\nimport { useSearchFilterDispatch } from \"../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../context/SearchFilterActionsContext\";\n\ninterface SearchFilterChipsProps {\n disableClearAllButton?: boolean;\n}\n\nexport const SearchFilterChips: React.FC<SearchFilterChipsProps> = ({\n children,\n disableClearAllButton = false,\n}) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const onClickClearAll = useCallback(\n () => dispatch(actions.clearFormModel()),\n [actions, dispatch]\n );\n\n return (\n <Row flexWrap={\"wrap\"}>\n {children}\n {!disableClearAllButton && (\n <ChipSpacer>\n <FlatButton\n size={\"small\"}\n label={\"Clear all\"}\n onClick={onClickClearAll}\n />\n </ChipSpacer>\n )}\n </Row>\n );\n};\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport {\n SearchFilterSectionChipModel,\n SearchFilterSectionOnClickRemoveOnChip,\n} from \"../../config/SearchFilterConfig\";\nimport { Chip } from \"@stenajs-webui/elements\";\nimport { ChipSpacer } from \"./ChipSpacer\";\nimport { useSearchFilterDispatch } from \"../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../context/SearchFilterActionsContext\";\n\nexport interface SectionChipsProps<TFormModel, TSectionKey extends string> {\n sectionId: TSectionKey;\n chips?: Array<SearchFilterSectionChipModel>;\n emptyChipLabel?: string;\n onClickRemoveOnChip?: SearchFilterSectionOnClickRemoveOnChip<TFormModel>;\n disableChipClearButton?: boolean;\n}\n\nexport const SectionChips = function SectionChips<\n TFormModel,\n TSectionKey extends string\n>({\n sectionId,\n chips,\n emptyChipLabel,\n onClickRemoveOnChip,\n disableChipClearButton,\n}: SectionChipsProps<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 onClickRemove = useCallback(\n (value: string) => {\n onClickRemoveOnChip?.({ value, setFormModelFields });\n },\n [onClickRemoveOnChip, setFormModelFields]\n );\n\n const onClickLabel = useCallback(() => {\n dispatch(actions.clearExpandedSections());\n dispatch(actions.expandSection(sectionId));\n dispatch(actions.openFilters());\n }, [actions, dispatch, sectionId]);\n\n if (!chips?.length) {\n if (!emptyChipLabel) {\n return null;\n }\n return (\n <ChipSpacer>\n <Chip\n label={emptyChipLabel}\n variant={\"secondary\"}\n onClick={onClickLabel}\n />\n </ChipSpacer>\n );\n }\n\n return (\n <>\n {chips.map(({ label, value }) => (\n <ChipSpacer key={value}>\n <Chip\n label={label ?? sectionId}\n onClick={onClickLabel}\n onClickRemove={\n disableChipClearButton ? undefined : () => onClickRemove(value)\n }\n />\n </ChipSpacer>\n ))}\n </>\n );\n};\n","import { BooleanRecord, BooleanRecordOptions } from \"./BooleanRecordTypes\";\nimport {\n SearchFilterSectionChipModel,\n SearchFilterSectionOnClickRemoveOnChip,\n} from \"../../config/SearchFilterConfig\";\nimport { PickByValue, truthyKeysAsList } from \"@stenajs-webui/core\";\nimport { SectionChipsProps } from \"../../features/chips/SectionChips\";\n\nexport const createChipsPropsForBooleanRecord = <\n TFormModel,\n TSectionKey extends string,\n TField extends keyof PickByValue<TFormModel, BooleanRecord>\n>(\n formModel: TFormModel,\n fieldName: TField,\n options?: BooleanRecordOptions\n): Pick<\n SectionChipsProps<TFormModel, TSectionKey>,\n \"chips\" | \"onClickRemoveOnChip\"\n> => ({\n chips: createChipsForBooleanRecord(formModel[fieldName], options),\n onClickRemoveOnChip: createOnClickRemoveOnChipForBooleanRecord(\n formModel,\n fieldName\n ),\n});\n\nexport const createChipsForBooleanRecord = (\n booleanRecord: BooleanRecord,\n options?: BooleanRecordOptions\n): Array<SearchFilterSectionChipModel> =>\n truthyKeysAsList(booleanRecord).map((key) => {\n const option = options?.find((o) => o.value === key);\n return { value: key, label: option?.label ?? key };\n });\n\nexport const createOnClickRemoveOnChipForBooleanRecord = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, BooleanRecord>\n>(\n formModel: TFormModel,\n fieldName: TField\n): SearchFilterSectionOnClickRemoveOnChip<TFormModel> => {\n return ({ setFormModelFields, value }) => {\n const newRecord: BooleanRecord = { ...formModel[fieldName] };\n newRecord[value] = false;\n setFormModelFields(({\n [fieldName]: newRecord,\n } as unknown) as Partial<TFormModel>);\n };\n};\n","import * as React from \"react\";\nimport {\n SearchFilterSection,\n SearchFilterSectionProps,\n} from \"../../../components/SearchFilterSection\";\nimport { Column, Text } from \"@stenajs-webui/core\";\nimport { CollapsibleClickableContent } from \"@stenajs-webui/panels\";\nimport { Checkbox, ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { BooleanRecord, BooleanRecordOptions } from \"../BooleanRecordTypes\";\n\nexport interface SimpleCheckboxSectionProps<TSectionKey extends string>\n extends SearchFilterSectionProps<TSectionKey>,\n ValueAndOnValueChangeProps<BooleanRecord> {\n options?: BooleanRecordOptions;\n}\n\nexport const SimpleCheckboxListSection = <TSectionKey extends string>({\n options,\n value,\n onValueChange,\n ...sectionProps\n}: SimpleCheckboxSectionProps<TSectionKey>): React.ReactElement => (\n <SearchFilterSection disableContentPadding {...sectionProps}>\n <Column maxHeight={\"400px\"} overflowY={\"auto\"} flex={1}>\n {options?.map((d) => (\n <CollapsibleClickableContent\n key={d.value}\n onClick={() => {\n if (value && onValueChange) {\n const sel = !value[d.value];\n onValueChange({\n ...value,\n [d.value]: sel,\n });\n }\n }}\n contentLeft={<Checkbox tabIndex={-1} value={value?.[d.value]} />}\n >\n <Text>{d.label}</Text>\n </CollapsibleClickableContent>\n ))}\n </Column>\n </SearchFilterSection>\n);\n","import * as React from \"react\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport {\n SearchFilterSection,\n SearchFilterSectionProps,\n} from \"../../../components/SearchFilterSection\";\nimport { ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { BooleanRecord, BooleanRecordOptions } from \"../BooleanRecordTypes\";\nimport { ChipMultiSelect, ChipMultiSelectValue } from \"@stenajs-webui/select\";\nimport { truthyKeysAsList } from \"@stenajs-webui/core\";\n\ninterface ChipMultiSelectSectionProps<TSectionKey extends string>\n extends SearchFilterSectionProps<TSectionKey>,\n ValueAndOnValueChangeProps<BooleanRecord> {\n options?: BooleanRecordOptions;\n}\n\nexport const ChipMultiSelectSection = <TSectionKey extends string>({\n options,\n value,\n onValueChange,\n ...sectionProps\n}: ChipMultiSelectSectionProps<TSectionKey>): React.ReactElement => {\n const [text, setText] = useState<string>(\"\");\n\n const listValue = useMemo<Array<ChipMultiSelectValue>>(\n () =>\n value\n ? truthyKeysAsList(value).map<ChipMultiSelectValue>((key) => {\n const option = options?.find((o) => o.value === key);\n return { value: key, label: option?.label ?? key };\n })\n : [],\n [options, value]\n );\n\n const filteredOptions = useMemo(() => {\n return options?.filter(\n (p) =>\n p.value.toLocaleLowerCase().indexOf(text.toLocaleLowerCase()) > -1 ||\n p.label.toLocaleLowerCase().indexOf(text.toLocaleLowerCase()) > -1\n );\n }, [options, text]);\n\n const onValueChangeInternal = useCallback(\n (value: Array<ChipMultiSelectValue>) => {\n onValueChange?.(createBooleanRecordFromValue(value));\n },\n [onValueChange]\n );\n\n return (\n <SearchFilterSection {...sectionProps}>\n <ChipMultiSelect\n options={filteredOptions}\n value={listValue}\n onValueChange={onValueChangeInternal}\n inputValue={text}\n onInputChange={setText}\n />\n </SearchFilterSection>\n );\n};\n\nconst createBooleanRecordFromValue = (\n value: Array<ChipMultiSelectValue>\n): BooleanRecord => {\n return value.reduce<BooleanRecord>((sum, item) => {\n sum[item.value] = true;\n return sum;\n }, {});\n};\n","import { DateRange } from \"./DateRangeTypes\";\nimport {\n SearchFilterSectionChipModel,\n SearchFilterSectionOnClickRemoveOnChip,\n} from \"../../config/SearchFilterConfig\";\nimport { PickByValue } from \"@stenajs-webui/core\";\nimport { SectionChipsProps } from \"../../features/chips/SectionChips\";\n\nexport const createChipsPropsForDateRange = <\n TFormModel,\n TSectionKey extends string,\n TField extends keyof PickByValue<TFormModel, string | undefined>\n>(\n formModel: TFormModel,\n startDateFieldName: TField,\n endDateFieldName: TField\n): Pick<\n SectionChipsProps<TFormModel, TSectionKey>,\n \"chips\" | \"onClickRemoveOnChip\"\n> => ({\n chips: createChipsForDateRange(\n formModel[startDateFieldName],\n formModel[endDateFieldName]\n ),\n onClickRemoveOnChip: createOnClickRemoveOnChipForDateRange(\n startDateFieldName,\n endDateFieldName\n ),\n});\n\nexport const createChipsForDateRange = (\n startDate: string | undefined,\n endDate: string | undefined\n): Array<SearchFilterSectionChipModel> => {\n if (!startDate && !endDate) {\n return [];\n }\n return [\n { value: \"dateRange\", label: `${startDate ?? \"\"} - ${endDate ?? \"\"}` },\n ];\n};\n\nexport const createOnClickRemoveOnChipForDateRange = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, DateRange>\n>(\n startDateFieldName: TField,\n endDateFieldName: TField\n): SearchFilterSectionOnClickRemoveOnChip<TFormModel> => {\n return ({ setFormModelFields }) => {\n setFormModelFields(({\n [startDateFieldName]: undefined,\n [endDateFieldName]: undefined,\n } as unknown) as Partial<TFormModel>);\n };\n};\n","import { PickByValue } from \"@stenajs-webui/core\";\nimport { DateRangeCalendarSectionProps } from \"./components/DateRangeCalendarSection\";\n\nexport const createDateRangeSectionProps = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, string | undefined>,\n TSectionKey extends string\n>(\n formModel: TFormModel,\n startDateFieldName: TField,\n endDateFieldName: TField\n): Pick<\n DateRangeCalendarSectionProps<TFormModel, TSectionKey>,\n \"value\" | \"onValueChange\"\n> => ({\n value: {\n startDate: formModel[startDateFieldName],\n endDate: formModel[endDateFieldName],\n },\n onValueChange: (value, { dispatch, actions }) => {\n const fields: Partial<TFormModel> = {\n [startDateFieldName]: value.startDate,\n [endDateFieldName]: value.endDate,\n } as any;\n dispatch(actions.setFormModelFields(fields));\n },\n});\n","import {\n DateRangeCalendar,\n DateRangeCalendarProps,\n DateRangeFocusedInput,\n} from \"@stenajs-webui/calendar\";\nimport * as React from \"react\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { Box } from \"@stenajs-webui/core\";\nimport { format, parse } from \"date-fns\";\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\ninterface DateRangeCalendarSectionOnChangeValue {\n startDate?: string;\n endDate?: string;\n}\n\nexport interface DateRangeCalendarSectionProps<\n TFormModel,\n TSectionKey extends string\n> extends SearchFilterSectionProps<TSectionKey>,\n Omit<\n DateRangeCalendarProps<{}>,\n | \"focusedInput\"\n | \"setFocusedInput\"\n | \"startDate\"\n | \"endDate\"\n | \"onChange\"\n | \"setStartDate\"\n | \"setEndDate\"\n > {\n value: DateRangeCalendarSectionOnChangeValue;\n onValueChange: (\n value: DateRangeCalendarSectionOnChangeValue,\n options: SetDateOptions<TFormModel, TSectionKey>\n ) => void;\n}\n\nexport interface SetDateOptions<TFormModel, TSectionKey extends string> {\n dispatch: SearchFilterDispatch<TFormModel>;\n actions: SearchFilterActions<TFormModel, TSectionKey>;\n}\n\nexport const DateRangeCalendarSection = <\n TFormModel,\n TSectionKey extends string\n>({\n value,\n onValueChange,\n sectionId,\n ...dateRangeCalendarProps\n}: DateRangeCalendarSectionProps<TFormModel, TSectionKey>) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions<TFormModel, TSectionKey>();\n\n const options = useMemo<SetDateOptions<TFormModel, TSectionKey>>(\n () => ({ dispatch, actions }),\n [actions, dispatch]\n );\n const [focusedInput, setFocusedInput] = useState<DateRangeFocusedInput>(\n \"startDate\"\n );\n\n const { startDate, endDate } = value ?? {};\n\n const startDateObj = useMemo(\n () => (startDate ? parse(startDate, \"yyyy-MM-dd\", new Date()) : undefined),\n [startDate]\n );\n\n const endDateObj = useMemo(\n () => (endDate ? parse(endDate, \"yyyy-MM-dd\", new Date()) : undefined),\n [endDate]\n );\n\n const setStartDate = useCallback(\n (startDate: Date) => {\n onValueChange(\n { startDate: format(startDate, \"yyyy-MM-dd\"), endDate },\n options\n );\n },\n [endDate, onValueChange, options]\n );\n\n const setEndDate = useCallback(\n (endDate: Date) => {\n onValueChange(\n { startDate, endDate: format(endDate, \"yyyy-MM-dd\") },\n options\n );\n },\n [onValueChange, options, startDate]\n );\n\n return (\n <SearchFilterSection sectionId={sectionId}>\n <Box flex={1} alignItems={\"center\"}>\n <Box background={\"white\"} indent>\n <DateRangeCalendar\n setFocusedInput={setFocusedInput}\n focusedInput={focusedInput}\n startDate={startDateObj}\n endDate={endDateObj}\n setStartDate={setStartDate}\n setEndDate={setEndDate}\n {...dateRangeCalendarProps}\n />\n </Box>\n </Box>\n </SearchFilterSection>\n );\n};\n"],"names":["React","Row","Icon","faSlidersH","cssColor","Indent","Heading","FlatButton","faTimes","createContext","useContext","useCallback","Drawer","Column","SecondaryButton","Collapsible","CollapsibleContent","Spinner","Banner","upperFirst","lowerCase","combineReducers","reducerIdGate","createValueByIdReducer","createEntityReducer","reducerIdGateAction","createEntityActions","createValueByIdActions","useState","useReducer","styled","Chip","truthyKeysAsList","CollapsibleClickableContent","Checkbox","Text","useMemo","ChipMultiSelect","parse","format","Box","DateRangeCalendar"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/features/search-filter/components/SearchFilterPanelHeader.tsx","../src/features/search-filter/context/SearchFilterStateContext.ts","../src/features/search-filter/context/SearchFilterDispatchContext.ts","../src/features/search-filter/context/SearchFilterActionsContext.ts","../src/features/search-filter/components/SearchFilterDrawer.tsx","../src/features/search-filter/components/SearchFilterButton.tsx","../src/features/search-filter/components/SearchFilterSection.tsx","../src/features/search-filter/context/SearchFilterModelContext.ts","../src/features/search-filter/components/context/SearchFilterContext.tsx","../src/features/search-filter/redux/SearchFilterRedux.ts","../src/features/search-filter/hooks/UseLocalSearchFilterState.ts","../src/features/search-filter/components/context/SearchFilterLocalStateContext.tsx","../src/features/search-filter/features/chips/ChipSpacer.tsx","../src/features/search-filter/features/chips/SearchFilterChips.tsx","../src/features/search-filter/features/chips/EmptyChip.tsx","../src/features/search-filter/features/chips/SearchFilterChip.tsx","../src/features/search-filter/features/chips/SectionChips.tsx","../src/features/search-filter/section-factories/boolean-record/BooleanRecordChips.ts","../src/features/search-filter/section-factories/boolean-record/components/SimpleCheckboxListSection.tsx","../src/features/search-filter/section-factories/boolean-record/components/ChipMultiSelectSection.tsx","../src/features/search-filter/section-factories/date-range/DateRangeChips.ts","../src/features/search-filter/section-factories/date-range/DateRangePropsFactory.ts","../src/features/search-filter/section-factories/date-range/components/DateRangeCalendarSection.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Heading, Indent, Row } from \"@stenajs-webui/core\";\nimport { FlatButton, Icon } from \"@stenajs-webui/elements\";\nimport { faTimes } from \"@fortawesome/free-solid-svg-icons/faTimes\";\nimport { faSlidersH } from \"@fortawesome/free-solid-svg-icons/faSlidersH\";\nimport { cssColor } from \"@stenajs-webui/theme\";\n\ninterface SearchFilterPanelHeaderProps {\n onRequestClose: () => void;\n}\n\nexport const SearchFilterPanelHeader: React.FC<SearchFilterPanelHeaderProps> = ({\n onRequestClose,\n}) => {\n return (\n <Row\n height={\"48px\"}\n justifyContent={\"space-between\"}\n alignItems={\"center\"}\n indent={2}\n >\n <Row alignItems={\"center\"}>\n <Icon\n icon={faSlidersH}\n color={cssColor(\"--lhds-color-ui-500\")}\n size={12}\n />\n <Indent />\n <Heading variant={\"h4\"}>Filters</Heading>\n </Row>\n <FlatButton leftIcon={faTimes} onClick={onRequestClose} />\n </Row>\n );\n};\n","import { createContext, useContext } from \"react\";\nimport { SearchFilterState } from \"../redux/SearchFilterRedux\";\n\nexport const SearchFilterStateContext = createContext<\n SearchFilterState<unknown>\n>((null as unknown) as SearchFilterState<unknown>);\n\nexport const useSearchFilterState = <\n TFormModel\n>(): SearchFilterState<TFormModel> => {\n const c = useContext(SearchFilterStateContext);\n if (!c) {\n throw new Error(\n \"Missing search filter context, wrap components with SearchFilterContext component.\"\n );\n }\n return c as SearchFilterState<TFormModel>;\n};\n","import { createContext, useContext } from \"react\";\nimport { SearchFilterDispatch } from \"../redux/SearchFilterRedux\";\n\nexport const SearchFilterDispatchContext = createContext<\n SearchFilterDispatch<unknown>\n>((null as unknown) as SearchFilterDispatch<unknown>);\n\nexport const useSearchFilterDispatch = () => {\n const c = useContext(SearchFilterDispatchContext);\n if (!c) {\n throw new Error(\"Missing search filter dispatch context.\");\n }\n return c;\n};\n","import { createContext, useContext } from \"react\";\nimport { SearchFilterActions } from \"../redux/SearchFilterRedux\";\n\nexport const SearchFilterActionsContext = createContext<\n SearchFilterActions<unknown, any>\n>((null as unknown) as SearchFilterActions<unknown, any>);\n\nexport const useSearchFilterActions = <\n TFormModel,\n TSectionKey extends string\n>() => {\n const c = useContext(SearchFilterActionsContext);\n if (!c) {\n throw new Error(\"Missing search filter actions context.\");\n }\n return c as SearchFilterActions<TFormModel, TSectionKey>;\n};\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { Drawer, DrawerProps } from \"@stenajs-webui/modal\";\nimport { cssColor } from \"@stenajs-webui/theme\";\nimport { Column } from \"@stenajs-webui/core\";\nimport { SearchFilterPanelHeader } from \"./SearchFilterPanelHeader\";\nimport { useSearchFilterState } from \"../context/SearchFilterStateContext\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\n\ninterface SearchFilterDrawerProps\n extends Omit<DrawerProps, \"isOpen\" | \"onRequestClose\"> {}\n\nexport const SearchFilterDrawer: React.FC<SearchFilterDrawerProps> = ({\n children,\n ...drawerProps\n}) => {\n const {\n settings: { open },\n } = useSearchFilterState();\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const closeDrawer = useCallback(() => {\n dispatch(actions.closeFilters());\n }, [actions, dispatch]);\n\n return (\n <Drawer\n background={cssColor(\"--lhds-color-ui-50\")}\n width={\"370px\"}\n isOpen={open}\n onRequestClose={closeDrawer}\n {...drawerProps}\n >\n <Column>\n <SearchFilterPanelHeader onRequestClose={closeDrawer} />\n {children}\n </Column>\n </Drawer>\n );\n};\n","import { faSlidersH } from \"@fortawesome/free-solid-svg-icons/faSlidersH\";\nimport { SecondaryButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\n\ninterface SearchFilterDrawerButtonProps {\n label?: string;\n}\n\nexport const SearchFilterButton: React.VFC<SearchFilterDrawerButtonProps> = ({\n label = \"Filters\",\n}) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const onClickButton = useCallback(() => {\n dispatch(actions.openFilters());\n }, [actions, dispatch]);\n\n return (\n <SecondaryButton\n label={label}\n leftIcon={faSlidersH}\n onClick={onClickButton}\n />\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren, useCallback } from \"react\";\nimport { Row } from \"@stenajs-webui/core\";\nimport { Collapsible, CollapsibleContent } from \"@stenajs-webui/panels\";\nimport { lowerCase, upperFirst } from \"lodash\";\nimport { Banner, FlatButton, Spinner } from \"@stenajs-webui/elements\";\nimport { useSearchFilterState } from \"../context/SearchFilterStateContext\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\n\nexport interface SearchFilterSectionProps<TSectionKey extends string> {\n sectionId: TSectionKey;\n contentLeft?: React.ReactNode;\n contentRight?: React.ReactNode;\n disableContentPadding?: boolean;\n loading?: boolean;\n error?: string;\n onRetry?: () => void;\n label?: string;\n}\n\nexport const SearchFilterSection = function SearchFilterSection<\n TSectionKey extends string\n>({\n sectionId,\n label,\n contentLeft,\n contentRight,\n loading,\n error,\n onRetry,\n disableContentPadding,\n children,\n}: PropsWithChildren<SearchFilterSectionProps<TSectionKey>>) {\n const state = useSearchFilterState();\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const expanded = state.expandedSections.values[sectionId] ?? false;\n\n const onClickLabel = useCallback(() => {\n dispatch(actions.setSectionExpanded(sectionId, !expanded));\n }, [actions, dispatch, expanded, sectionId]);\n\n const activeLabel = label ?? formatColumnIdToHeaderCellLabel(sectionId);\n\n return (\n <Collapsible\n label={activeLabel}\n collapsed={!expanded}\n onClick={onClickLabel}\n contentLeft={contentLeft}\n contentRight={contentRight}\n >\n {loading ? (\n <CollapsibleContent>\n <Row spacing justifyContent={\"center\"} flex={1}>\n <Spinner size={\"small\"} />\n </Row>\n </CollapsibleContent>\n ) : error ? (\n <Banner\n variant={\"error\"}\n text={error}\n contentRight={\n onRetry ? <FlatButton label={\"Retry\"} onClick={onRetry} /> : null\n }\n />\n ) : disableContentPadding ? (\n children\n ) : (\n <CollapsibleContent>{children}</CollapsibleContent>\n )}\n </Collapsible>\n );\n};\n\nexport const formatColumnIdToHeaderCellLabel = (columnId: string): string =>\n upperFirst(lowerCase(columnId));\n","import { createContext, useContext } from \"react\";\n\nexport const SearchFilterModelContext = createContext<unknown>(null as unknown);\n\nexport const useSearchFilterModel = <TFormModel>(): TFormModel => {\n const c = useContext(SearchFilterModelContext);\n if (!c) {\n throw new Error(\n \"Missing search filter context, wrap components with SearchFilterContext component.\"\n );\n }\n return c as TFormModel;\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport {\n SearchFilterActions,\n SearchFilterDispatch,\n SearchFilterState,\n} from \"../../redux/SearchFilterRedux\";\nimport { SearchFilterDispatchContext } from \"../../context/SearchFilterDispatchContext\";\nimport { SearchFilterActionsContext } from \"../../context/SearchFilterActionsContext\";\nimport { SearchFilterStateContext } from \"../../context/SearchFilterStateContext\";\nimport { SearchFilterModelContext } from \"../../context/SearchFilterModelContext\";\n\ninterface SearchFilterScopeProps<TFormModel, TSectionKey extends string> {\n state: SearchFilterState<TFormModel>;\n dispatch: SearchFilterDispatch<TFormModel>;\n actions: SearchFilterActions<TFormModel, TSectionKey>;\n}\n\nexport const SearchFilterContext = function SearchFilterScope<\n TFormModel,\n TSectionKey extends string\n>({\n state,\n dispatch,\n actions,\n children,\n}: PropsWithChildren<SearchFilterScopeProps<TFormModel, TSectionKey>>) {\n return (\n <SearchFilterDispatchContext.Provider\n value={dispatch as SearchFilterDispatch<unknown>}\n >\n <SearchFilterActionsContext.Provider value={actions}>\n <SearchFilterStateContext.Provider value={state}>\n <SearchFilterModelContext.Provider value={state.formModel}>\n {children}\n </SearchFilterModelContext.Provider>\n </SearchFilterStateContext.Provider>\n </SearchFilterActionsContext.Provider>\n </SearchFilterDispatchContext.Provider>\n );\n};\n","import { combineReducers } from \"redux\";\nimport {\n createEntityActions,\n createEntityReducer,\n createValueByIdActions,\n createValueByIdReducer,\n EntityAction,\n EntityState,\n reducerIdGate,\n reducerIdGateAction,\n ReducerIdGateAction,\n ValueByIdAction,\n ValueByIdState,\n} from \"@stenajs-webui/redux\";\nimport { Dispatch } from \"react\";\n\nexport interface SearchFilterSettings {\n open: boolean;\n}\n\nexport type SearchFilterDispatch<TFormModel> = Dispatch<\n SearchFilterAction<TFormModel>\n>;\n\nexport interface SearchFilterState<TFormModel> {\n expandedSections: ValueByIdState<boolean>;\n formModel: EntityState<TFormModel>;\n settings: EntityState<SearchFilterSettings>;\n}\n\nexport type SearchFilterAction<TFormModel> =\n | ReducerIdGateAction<ValueByIdAction<boolean>>\n | ReducerIdGateAction<EntityAction<TFormModel>>\n | ReducerIdGateAction<EntityAction<SearchFilterSettings>>;\n\nexport const createSearchFilterInitialState = <TFormModel>(\n initialFormModel: TFormModel\n): SearchFilterState<TFormModel> => ({\n settings: {\n open: false,\n },\n formModel: initialFormModel,\n expandedSections: { values: {} },\n});\n\nexport const createSearchFilterReducer = <TFormModel>(\n reducerId: string,\n initialState: SearchFilterState<TFormModel>\n) =>\n combineReducers({\n expandedSections: reducerIdGate(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdReducer<boolean>(initialState.expandedSections)\n ),\n formModel: reducerIdGate(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityReducer<TFormModel>(initialState.formModel)\n ),\n settings: reducerIdGate(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityReducer<SearchFilterSettings>(initialState.settings)\n ),\n });\n\nexport interface SearchFilterActions<TFormModel, TSectionKey extends string> {\n openFilters: () => SearchFilterAction<TFormModel>;\n closeFilters: () => SearchFilterAction<TFormModel>;\n setFormModelFields: (\n fields: Partial<TFormModel>\n ) => SearchFilterAction<TFormModel>;\n clearFormModel: () => SearchFilterAction<TFormModel>;\n expandSection: (section: TSectionKey) => SearchFilterAction<TFormModel>;\n collapseSection: (section: TSectionKey) => SearchFilterAction<TFormModel>;\n setSectionExpanded: (\n section: TSectionKey,\n expanded: boolean\n ) => SearchFilterAction<TFormModel>;\n clearExpandedSections: () => SearchFilterAction<TFormModel>;\n}\n\nexport const createSearchFilterActions = <\n TFormModel,\n TSectionKey extends string\n>(\n reducerId: string,\n initialFormModel: TFormModel\n): SearchFilterActions<TFormModel, TSectionKey> => ({\n openFilters: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityActions<SearchFilterSettings>().setEntityFields({\n open: true,\n })\n ),\n closeFilters: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityActions<SearchFilterSettings>().setEntityFields({\n open: false,\n })\n ),\n setFormModelFields: (fields: Partial<TFormModel>) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityActions<TFormModel>().setEntityFields(fields)\n ),\n clearFormModel: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityActions<TFormModel>().setEntity(initialFormModel)\n ),\n expandSection: (section: TSectionKey) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, true)\n ),\n collapseSection: (section: TSectionKey) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, false)\n ),\n setSectionExpanded: (section: TSectionKey, expanded: boolean) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, expanded)\n ),\n clearExpandedSections: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().clearAllValues()\n ),\n});\n\nexport const getReducerIdFor = (\n reducerId: string,\n reducerIdSuffix: keyof SearchFilterState<unknown>\n): string => `${reducerId}.${reducerIdSuffix}`;\n","import {\n createSearchFilterActions,\n createSearchFilterReducer,\n SearchFilterState,\n} from \"../redux/SearchFilterRedux\";\nimport { useReducer, useState } from \"react\";\n\nexport const useLocalSearchFilterState = <\n TFormModel,\n TSectionKey extends string\n>(\n initialState: SearchFilterState<TFormModel>\n) => {\n const [reducer] = useState(() =>\n createSearchFilterReducer<TFormModel>(\"local\", initialState)\n );\n\n const [actions] = useState(() =>\n createSearchFilterActions<TFormModel, TSectionKey>(\n \"local\",\n initialState.formModel\n )\n );\n\n const [state, dispatch] = useReducer(reducer, initialState);\n\n return {\n actions,\n state,\n dispatch,\n };\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport { useLocalSearchFilterState } from \"../../hooks/UseLocalSearchFilterState\";\nimport { SearchFilterContext } from \"./SearchFilterContext\";\nimport { createSearchFilterInitialState } from \"../../redux/SearchFilterRedux\";\n\ninterface SearchFilterLocalScopeProps<TFormModel> {\n initialFormModel: TFormModel;\n}\n\nexport const SearchFilterLocalStateContext = function SearchFilterLocalScope<\n TFormModel\n>({\n initialFormModel,\n children,\n}: PropsWithChildren<SearchFilterLocalScopeProps<TFormModel>>) {\n const { state, actions, dispatch } = useLocalSearchFilterState(\n createSearchFilterInitialState(initialFormModel)\n );\n\n return (\n <SearchFilterContext state={state} actions={actions} dispatch={dispatch}>\n {children}\n </SearchFilterContext>\n );\n};\n","import styled from \"@emotion/styled\";\n\nexport const ChipSpacer = styled.div`\n padding: calc(var(--swui-metrics-spacing) / 2)\n calc(var(--swui-metrics-indent) / 2);\n`;\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { Row } from \"@stenajs-webui/core\";\nimport { ChipSpacer } from \"./ChipSpacer\";\nimport { FlatButton } from \"@stenajs-webui/elements\";\nimport { useSearchFilterDispatch } from \"../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../context/SearchFilterActionsContext\";\n\ninterface SearchFilterChipsProps {\n disableClearAllButton?: boolean;\n}\n\nexport const SearchFilterChips: React.FC<SearchFilterChipsProps> = ({\n children,\n disableClearAllButton = false,\n}) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const onClickClearAll = useCallback(\n () => dispatch(actions.clearFormModel()),\n [actions, dispatch]\n );\n\n return (\n <Row flexWrap={\"wrap\"}>\n {children}\n {!disableClearAllButton && (\n <ChipSpacer>\n <FlatButton\n size={\"small\"}\n label={\"Clear all\"}\n onClick={onClickClearAll}\n />\n </ChipSpacer>\n )}\n </Row>\n );\n};\n","import * as React from \"react\";\nimport { ChipSpacer } from \"./ChipSpacer\";\nimport { Chip } from \"@stenajs-webui/elements\";\nimport { useCallback } from \"react\";\nimport { useSearchFilterDispatch } from \"../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../context/SearchFilterActionsContext\";\n\ninterface EmptyChipProps<TSectionKey extends string> {\n sectionId: TSectionKey;\n label: string;\n}\n\nexport const EmptyChip = function EmptyChip<TSectionKey extends string>({\n label,\n sectionId,\n}: EmptyChipProps<TSectionKey>) {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const onClickLabel = useCallback(() => {\n dispatch(actions.clearExpandedSections());\n dispatch(actions.expandSection(sectionId));\n dispatch(actions.openFilters());\n }, [actions, dispatch, sectionId]);\n\n return (\n <ChipSpacer>\n <Chip label={label} variant={\"secondary\"} onClick={onClickLabel} />\n </ChipSpacer>\n );\n};\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { ChipSpacer } from \"./ChipSpacer\";\nimport { Chip } from \"@stenajs-webui/elements\";\nimport { useSearchFilterDispatch } from \"../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../context/SearchFilterActionsContext\";\nimport { SearchFilterSectionOnClickRemoveOnChip } from \"../../config/SearchFilterConfig\";\n\ninterface SearchFilterChipProps<TFormModel, TSectionKey> {\n sectionId: TSectionKey;\n label: string;\n value: string;\n onClickRemove?: SearchFilterSectionOnClickRemoveOnChip<TFormModel>;\n}\n\nexport const SearchFilterChip = function SearchFilterChip<\n TFormModel,\n TSectionKey extends string\n>({\n sectionId,\n label,\n value,\n onClickRemove,\n}: SearchFilterChipProps<TFormModel, TSectionKey>) {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const setFormModelFields = useCallback(\n (fields: Partial<TFormModel>) =>\n dispatch(actions.setFormModelFields(fields)),\n [dispatch, actions]\n );\n\n const onClickRemoveHandler = useCallback(() => {\n onClickRemove?.({ value, setFormModelFields });\n }, [onClickRemove, setFormModelFields, value]);\n\n const onClickLabel = useCallback(() => {\n dispatch(actions.clearExpandedSections());\n dispatch(actions.expandSection(sectionId));\n dispatch(actions.openFilters());\n }, [actions, dispatch, sectionId]);\n\n return (\n <ChipSpacer>\n <Chip\n label={label ?? sectionId}\n onClick={onClickLabel}\n onClickRemove={onClickRemove ? onClickRemoveHandler : undefined}\n />\n </ChipSpacer>\n );\n};\n","import * as React from \"react\";\nimport {\n SearchFilterSectionChipModel,\n SearchFilterSectionOnClickRemoveOnChip,\n} from \"../../config/SearchFilterConfig\";\nimport { EmptyChip } from \"./EmptyChip\";\nimport { SearchFilterChip } from \"./SearchFilterChip\";\n\nexport interface SectionChipsProps<TFormModel, TSectionKey extends string> {\n sectionId: TSectionKey;\n chips?: Array<SearchFilterSectionChipModel>;\n emptyChipLabel?: string;\n onClickRemoveOnChip?: SearchFilterSectionOnClickRemoveOnChip<TFormModel>;\n}\n\nexport const SectionChips = function SectionChips<\n TFormModel,\n TSectionKey extends string\n>({\n sectionId,\n chips,\n emptyChipLabel,\n onClickRemoveOnChip,\n}: SectionChipsProps<TFormModel, TSectionKey>) {\n if (!chips?.length) {\n if (!emptyChipLabel) {\n return null;\n }\n return <EmptyChip sectionId={sectionId} label={emptyChipLabel} />;\n }\n\n return (\n <>\n {chips.map(({ label, value }) => (\n <SearchFilterChip\n key={value}\n label={label ?? sectionId}\n sectionId={sectionId}\n onClickRemove={onClickRemoveOnChip}\n value={value}\n />\n ))}\n </>\n );\n};\n","import { BooleanRecord, BooleanRecordOptions } from \"./BooleanRecordTypes\";\nimport {\n SearchFilterSectionChipModel,\n SearchFilterSectionOnClickRemoveOnChip,\n} from \"../../config/SearchFilterConfig\";\nimport { PickByValue, truthyKeysAsList } from \"@stenajs-webui/core\";\nimport { SectionChipsProps } from \"../../features/chips/SectionChips\";\n\nexport const createChipsPropsForBooleanRecord = <\n TFormModel,\n TSectionKey extends string,\n TField extends keyof PickByValue<TFormModel, BooleanRecord>\n>(\n formModel: TFormModel,\n fieldName: TField,\n options?: BooleanRecordOptions\n): Pick<\n SectionChipsProps<TFormModel, TSectionKey>,\n \"chips\" | \"onClickRemoveOnChip\"\n> => ({\n chips: createChipsForBooleanRecord(formModel[fieldName], options),\n onClickRemoveOnChip: createOnClickRemoveOnChipForBooleanRecord(\n formModel,\n fieldName\n ),\n});\n\nexport const createChipsForBooleanRecord = (\n booleanRecord: BooleanRecord,\n options?: BooleanRecordOptions\n): Array<SearchFilterSectionChipModel> =>\n truthyKeysAsList(booleanRecord).map((key) => {\n const option = options?.find((o) => o.value === key);\n return { value: key, label: option?.label ?? key };\n });\n\nexport const createOnClickRemoveOnChipForBooleanRecord = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, BooleanRecord>\n>(\n formModel: TFormModel,\n fieldName: TField\n): SearchFilterSectionOnClickRemoveOnChip<TFormModel> => {\n return ({ setFormModelFields, value }) => {\n const newRecord: BooleanRecord = { ...formModel[fieldName] };\n newRecord[value] = false;\n setFormModelFields(({\n [fieldName]: newRecord,\n } as unknown) as Partial<TFormModel>);\n };\n};\n","import * as React from \"react\";\nimport {\n SearchFilterSection,\n SearchFilterSectionProps,\n} from \"../../../components/SearchFilterSection\";\nimport { Column, Text } from \"@stenajs-webui/core\";\nimport { CollapsibleClickableContent } from \"@stenajs-webui/panels\";\nimport { Checkbox, ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { BooleanRecord, BooleanRecordOptions } from \"../BooleanRecordTypes\";\n\nexport interface SimpleCheckboxSectionProps<TSectionKey extends string>\n extends SearchFilterSectionProps<TSectionKey>,\n ValueAndOnValueChangeProps<BooleanRecord> {\n options?: BooleanRecordOptions;\n}\n\nexport const SimpleCheckboxListSection = <TSectionKey extends string>({\n options,\n value,\n onValueChange,\n ...sectionProps\n}: SimpleCheckboxSectionProps<TSectionKey>): React.ReactElement => (\n <SearchFilterSection disableContentPadding {...sectionProps}>\n <Column maxHeight={\"400px\"} overflowY={\"auto\"} flex={1}>\n {options?.map((d) => (\n <CollapsibleClickableContent\n key={d.value}\n onClick={() => {\n if (value && onValueChange) {\n const sel = !value[d.value];\n onValueChange({\n ...value,\n [d.value]: sel,\n });\n }\n }}\n contentLeft={<Checkbox tabIndex={-1} value={value?.[d.value]} />}\n >\n <Text>{d.label}</Text>\n </CollapsibleClickableContent>\n ))}\n </Column>\n </SearchFilterSection>\n);\n","import * as React from \"react\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport {\n SearchFilterSection,\n SearchFilterSectionProps,\n} from \"../../../components/SearchFilterSection\";\nimport { ValueAndOnValueChangeProps } from \"@stenajs-webui/forms\";\nimport { BooleanRecord, BooleanRecordOptions } from \"../BooleanRecordTypes\";\nimport { ChipMultiSelect, ChipMultiSelectValue } from \"@stenajs-webui/select\";\nimport { truthyKeysAsList } from \"@stenajs-webui/core\";\n\ninterface ChipMultiSelectSectionProps<TSectionKey extends string>\n extends SearchFilterSectionProps<TSectionKey>,\n ValueAndOnValueChangeProps<BooleanRecord> {\n noneSelectedLabel?: string;\n options?: BooleanRecordOptions;\n}\n\nexport const ChipMultiSelectSection = <TSectionKey extends string>({\n options,\n value,\n noneSelectedLabel,\n onValueChange,\n ...sectionProps\n}: ChipMultiSelectSectionProps<TSectionKey>): React.ReactElement => {\n const [text, setText] = useState<string>(\"\");\n\n const listValue = useMemo<Array<ChipMultiSelectValue>>(\n () =>\n value\n ? truthyKeysAsList(value).map<ChipMultiSelectValue>((key) => {\n const option = options?.find((o) => o.value === key);\n return { value: key, label: option?.label ?? key };\n })\n : [],\n [options, value]\n );\n\n const filteredOptions = useMemo(() => {\n return options?.filter(\n (p) =>\n p.value.toLocaleLowerCase().indexOf(text.toLocaleLowerCase()) > -1 ||\n p.label.toLocaleLowerCase().indexOf(text.toLocaleLowerCase()) > -1\n );\n }, [options, text]);\n\n const onValueChangeInternal = useCallback(\n (value: Array<ChipMultiSelectValue>) => {\n onValueChange?.(createBooleanRecordFromValue(value));\n },\n [onValueChange]\n );\n\n return (\n <SearchFilterSection {...sectionProps}>\n <ChipMultiSelect\n options={filteredOptions}\n value={listValue}\n onValueChange={onValueChangeInternal}\n inputValue={text}\n noneSelectedLabel={noneSelectedLabel}\n onInputChange={setText}\n closeMenuOnSelect={false}\n />\n </SearchFilterSection>\n );\n};\n\nconst createBooleanRecordFromValue = (\n value: Array<ChipMultiSelectValue>\n): BooleanRecord => {\n return value.reduce<BooleanRecord>((sum, item) => {\n sum[item.value] = true;\n return sum;\n }, {});\n};\n","import { DateStringRange } from \"@stenajs-webui/calendar\";\nimport {\n SearchFilterSectionChipModel,\n SearchFilterSectionOnClickRemoveOnChip,\n} from \"../../config/SearchFilterConfig\";\nimport { PickByValue } from \"@stenajs-webui/core\";\nimport { SectionChipsProps } from \"../../features/chips/SectionChips\";\n\nexport const createChipsPropsForDateRange = <\n TFormModel,\n TSectionKey extends string,\n TField extends keyof PickByValue<TFormModel, string | undefined>\n>(\n formModel: TFormModel,\n startDateFieldName: TField,\n endDateFieldName: TField\n): Pick<\n SectionChipsProps<TFormModel, TSectionKey>,\n \"chips\" | \"onClickRemoveOnChip\"\n> => ({\n chips: createChipsForDateRange(\n formModel[startDateFieldName],\n formModel[endDateFieldName]\n ),\n onClickRemoveOnChip: createOnClickRemoveOnChipForDateRange(\n startDateFieldName,\n endDateFieldName\n ),\n});\n\nexport const createChipsForDateRange = (\n startDate: string | undefined,\n endDate: string | undefined\n): Array<SearchFilterSectionChipModel> => {\n if (!startDate && !endDate) {\n return [];\n }\n return [\n { value: \"dateRange\", label: `${startDate ?? \"\"} - ${endDate ?? \"\"}` },\n ];\n};\n\nexport const createOnClickRemoveOnChipForDateRange = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, DateStringRange>\n>(\n startDateFieldName: TField,\n endDateFieldName: TField\n): SearchFilterSectionOnClickRemoveOnChip<TFormModel> => {\n return ({ setFormModelFields }) => {\n setFormModelFields(({\n [startDateFieldName]: undefined,\n [endDateFieldName]: undefined,\n } as unknown) as Partial<TFormModel>);\n };\n};\n","import { PickByValue } from \"@stenajs-webui/core\";\nimport { DateRangeCalendarSectionProps } from \"./components/DateRangeCalendarSection\";\n\nexport const createDateRangeSectionProps = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, string | undefined>,\n TSectionKey extends string\n>(\n formModel: TFormModel,\n startDateFieldName: TField,\n endDateFieldName: TField\n): Pick<\n DateRangeCalendarSectionProps<TFormModel, TSectionKey>,\n \"value\" | \"onValueChange\"\n> => ({\n value: {\n startDate: formModel[startDateFieldName],\n endDate: formModel[endDateFieldName],\n },\n onValueChange: (value, { dispatch, actions }) => {\n const fields: Partial<TFormModel> = {\n [startDateFieldName]: value.startDate,\n [endDateFieldName]: value.endDate,\n } as any;\n dispatch(actions.setFormModelFields(fields));\n },\n});\n","import {\n DateRange,\n DateRangeCalendar,\n DateRangeCalendarProps,\n DateRangeFocusedInput,\n dateRangeToStrings,\n DateStringRange,\n stringsToDateRange,\n} from \"@stenajs-webui/calendar\";\nimport * as React from \"react\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { Box } from \"@stenajs-webui/core\";\nimport {\n SearchFilterSection,\n SearchFilterSectionProps,\n} from \"../../../components/SearchFilterSection\";\nimport {\n SearchFilterActions,\n SearchFilterDispatch,\n} from \"../../../redux/SearchFilterRedux\";\nimport { useSearchFilterDispatch } from \"../../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../../context/SearchFilterActionsContext\";\n\nexport interface DateRangeCalendarSectionProps<\n TFormModel,\n TSectionKey extends string\n> extends SearchFilterSectionProps<TSectionKey>,\n Omit<\n DateRangeCalendarProps<{}>,\n \"value\" | \"onValueChange\" | \"focusedInput\" | \"setFocusedInput\"\n > {\n value: DateStringRange;\n onValueChange: (\n value: DateStringRange,\n options: SetDateOptions<TFormModel, TSectionKey>\n ) => void;\n}\n\nexport interface SetDateOptions<TFormModel, TSectionKey extends string> {\n dispatch: SearchFilterDispatch<TFormModel>;\n actions: SearchFilterActions<TFormModel, TSectionKey>;\n}\n\nexport const DateRangeCalendarSection = <\n TFormModel,\n TSectionKey extends string\n>({\n value,\n onValueChange,\n sectionId,\n ...dateRangeCalendarProps\n}: DateRangeCalendarSectionProps<TFormModel, TSectionKey>) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions<TFormModel, TSectionKey>();\n\n const options = useMemo<SetDateOptions<TFormModel, TSectionKey>>(\n () => ({ dispatch, actions }),\n [actions, dispatch]\n );\n const [focusedInput, setFocusedInput] = useState<DateRangeFocusedInput>(\n \"startDate\"\n );\n\n const dateRangeValue = useMemo(() => stringsToDateRange(value), [value]);\n\n const onValueChangeHandler = useCallback(\n (value: DateRange) => {\n onValueChange(dateRangeToStrings(value), options);\n },\n [onValueChange, options]\n );\n\n return (\n <SearchFilterSection sectionId={sectionId}>\n <Box flex={1} alignItems={\"center\"}>\n <Box background={\"white\"} indent>\n <DateRangeCalendar\n setFocusedInput={setFocusedInput}\n focusedInput={focusedInput}\n value={dateRangeValue}\n onValueChange={onValueChangeHandler}\n {...dateRangeCalendarProps}\n />\n </Box>\n </Box>\n </SearchFilterSection>\n );\n};\n"],"names":["React","Row","Icon","faSlidersH","cssColor","Indent","Heading","FlatButton","faTimes","createContext","useContext","useCallback","Drawer","Column","SecondaryButton","Collapsible","CollapsibleContent","Spinner","Banner","upperFirst","lowerCase","combineReducers","reducerIdGate","createValueByIdReducer","createEntityReducer","reducerIdGateAction","createEntityActions","createValueByIdActions","useState","useReducer","styled","Chip","truthyKeysAsList","CollapsibleClickableContent","Checkbox","Text","useMemo","ChipMultiSelect","stringsToDateRange","dateRangeToStrings","Box","DateRangeCalendar"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stenajs-webui/filter",
|
|
3
|
-
"version": "15.0.0-alpha.
|
|
3
|
+
"version": "15.0.0-alpha.8",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "mattias800",
|
|
6
6
|
"license": "MIT",
|
|
@@ -27,15 +27,15 @@
|
|
|
27
27
|
"deploy": "gh-pages -d example/build"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@stenajs-webui/calendar": "15.0.0-alpha.
|
|
31
|
-
"@stenajs-webui/core": "15.0.0-alpha.
|
|
32
|
-
"@stenajs-webui/elements": "15.0.0-alpha.
|
|
33
|
-
"@stenajs-webui/forms": "15.0.0-alpha.
|
|
34
|
-
"@stenajs-webui/modal": "15.0.0-alpha.
|
|
35
|
-
"@stenajs-webui/panels": "15.0.0-alpha.
|
|
36
|
-
"@stenajs-webui/redux": "15.0.0-alpha.
|
|
37
|
-
"@stenajs-webui/select": "15.0.0-alpha.
|
|
38
|
-
"@stenajs-webui/theme": "15.0.0-alpha.
|
|
30
|
+
"@stenajs-webui/calendar": "15.0.0-alpha.8",
|
|
31
|
+
"@stenajs-webui/core": "15.0.0-alpha.8",
|
|
32
|
+
"@stenajs-webui/elements": "15.0.0-alpha.8",
|
|
33
|
+
"@stenajs-webui/forms": "15.0.0-alpha.8",
|
|
34
|
+
"@stenajs-webui/modal": "15.0.0-alpha.8",
|
|
35
|
+
"@stenajs-webui/panels": "15.0.0-alpha.8",
|
|
36
|
+
"@stenajs-webui/redux": "15.0.0-alpha.8",
|
|
37
|
+
"@stenajs-webui/select": "15.0.0-alpha.8",
|
|
38
|
+
"@stenajs-webui/theme": "15.0.0-alpha.8",
|
|
39
39
|
"date-fns": "2.26.0"
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
@@ -64,5 +64,5 @@
|
|
|
64
64
|
"files": [
|
|
65
65
|
"dist"
|
|
66
66
|
],
|
|
67
|
-
"gitHead": "
|
|
67
|
+
"gitHead": "f57a1cd64b0a380b5970b1a19dcf2445bb1a7882"
|
|
68
68
|
}
|