@stenajs-webui/filter 19.0.0-next.11 → 19.0.0-next.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.es.js +184 -211
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +11 -11
package/dist/index.es.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
(function(){"use strict";try{var e=document.createElement("style");e.appendChild(document.createTextNode("")),document.head.appendChild(e)}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
|
|
2
|
+
import { jsx as o, jsxs as g, Fragment as z } from "react/jsx-runtime";
|
|
2
3
|
import { createContext as L, useContext as E, useCallback as u, useState as M, useReducer as J, useMemo as b } from "react";
|
|
3
4
|
import { Drawer as Q } from "@stenajs-webui/modal";
|
|
4
5
|
import { cssColor as U } from "@stenajs-webui/theme";
|
|
5
|
-
import { Spacing as X, Row as
|
|
6
|
-
import { FlatButton as H, stenaTimes as _, SecondaryButton as N, stenaSlidersMini as ee, MenuButton as te, Spinner as ne, Banner as re, Chip as
|
|
7
|
-
import { jsx as o, jsxs as w, Fragment as q } from "react/jsx-runtime";
|
|
6
|
+
import { Spacing as X, Row as w, Space as O, Heading as Z, Column as P, Box as A, truthyKeysAsList as D } from "@stenajs-webui/core";
|
|
7
|
+
import { FlatButton as H, stenaTimes as _, SecondaryButton as N, stenaSlidersMini as ee, MenuButton as te, Spinner as ne, Banner as re, Chip as q } from "@stenajs-webui/elements";
|
|
8
8
|
import { upperFirst as ce, lowerCase as oe } from "lodash";
|
|
9
9
|
import { combineReducers as se } from "redux";
|
|
10
10
|
import { reducerIdGate as B, createValueByIdReducer as ie, createEntityReducer as $, reducerIdGateAction as C, createEntityActions as v, createValueByIdActions as R } from "@stenajs-webui/redux";
|
|
@@ -12,34 +12,32 @@ import ae from "@emotion/styled";
|
|
|
12
12
|
import { CheckboxWithLabel as le } from "@stenajs-webui/forms";
|
|
13
13
|
import { ChipMultiSelect as de } from "@stenajs-webui/select";
|
|
14
14
|
import { stringsToDateRange as ue, dateRangeToStrings as he, DateRangeCalendar as pe } from "@stenajs-webui/calendar";
|
|
15
|
-
const Se = ({
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
contentRight: n
|
|
19
|
-
}) => /* @__PURE__ */ o(X, {
|
|
20
|
-
children: /* @__PURE__ */ w(g, {
|
|
15
|
+
const Se = ({ onRequestClose: e, header: t = "Filter", contentRight: n }) => /* @__PURE__ */ o(X, { children: /* @__PURE__ */ g(
|
|
16
|
+
w,
|
|
17
|
+
{
|
|
21
18
|
justifyContent: "space-between",
|
|
22
19
|
alignItems: "center",
|
|
23
20
|
height: "48px",
|
|
24
|
-
children: [
|
|
25
|
-
|
|
26
|
-
num: 3
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
21
|
+
children: [
|
|
22
|
+
/* @__PURE__ */ g(w, { children: [
|
|
23
|
+
/* @__PURE__ */ o(O, { num: 3 }),
|
|
24
|
+
/* @__PURE__ */ o(Z, { variant: "h4", children: t })
|
|
25
|
+
] }),
|
|
26
|
+
/* @__PURE__ */ g(w, { gap: 1, children: [
|
|
27
|
+
n,
|
|
28
|
+
/* @__PURE__ */ o(
|
|
29
|
+
H,
|
|
30
|
+
{
|
|
31
|
+
leftIcon: _,
|
|
32
|
+
onClick: e,
|
|
33
|
+
variant: "danger"
|
|
34
|
+
}
|
|
35
|
+
),
|
|
36
|
+
/* @__PURE__ */ o(O, { num: 0.5 })
|
|
37
|
+
] })
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
) }), G = L(null), W = () => {
|
|
43
41
|
const e = E(G);
|
|
44
42
|
if (!e)
|
|
45
43
|
throw new Error(
|
|
@@ -63,32 +61,29 @@ const Se = ({
|
|
|
63
61
|
...r
|
|
64
62
|
}) => {
|
|
65
63
|
const {
|
|
66
|
-
settings: {
|
|
67
|
-
open: c
|
|
68
|
-
}
|
|
64
|
+
settings: { open: c }
|
|
69
65
|
} = W(), s = F(), i = x(), l = u(() => {
|
|
70
66
|
s(i.closeFilters());
|
|
71
67
|
}, [i, s]);
|
|
72
|
-
return /* @__PURE__ */ o(Q, {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
...r,
|
|
76
|
-
children: /* @__PURE__ */ w(P, {
|
|
68
|
+
return /* @__PURE__ */ o(Q, { isOpen: c, onRequestClose: l, ...r, children: /* @__PURE__ */ g(
|
|
69
|
+
P,
|
|
70
|
+
{
|
|
77
71
|
height: "100%",
|
|
78
72
|
borderRadius: "var(--swui-border-radius)",
|
|
79
73
|
background: U("--lhds-color-ui-50"),
|
|
80
|
-
children: [
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
74
|
+
children: [
|
|
75
|
+
/* @__PURE__ */ o(
|
|
76
|
+
Se,
|
|
77
|
+
{
|
|
78
|
+
onRequestClose: l,
|
|
79
|
+
header: t,
|
|
80
|
+
contentRight: n
|
|
81
|
+
}
|
|
82
|
+
),
|
|
83
|
+
/* @__PURE__ */ o(A, { spacing: 1, indent: 1, gap: 1, children: e })
|
|
84
|
+
]
|
|
85
|
+
}
|
|
86
|
+
) });
|
|
92
87
|
}, Ge = ({
|
|
93
88
|
label: e = "Filters",
|
|
94
89
|
leftIcon: t = ee
|
|
@@ -96,11 +91,14 @@ const Se = ({
|
|
|
96
91
|
const n = F(), r = x(), c = u(() => {
|
|
97
92
|
n(r.openFilters());
|
|
98
93
|
}, [r, n]);
|
|
99
|
-
return /* @__PURE__ */ o(
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
94
|
+
return /* @__PURE__ */ o(
|
|
95
|
+
N,
|
|
96
|
+
{
|
|
97
|
+
label: e,
|
|
98
|
+
leftIcon: t,
|
|
99
|
+
onClick: c
|
|
100
|
+
}
|
|
101
|
+
);
|
|
104
102
|
}, T = function({
|
|
105
103
|
sectionId: t,
|
|
106
104
|
label: n,
|
|
@@ -116,47 +114,45 @@ const Se = ({
|
|
|
116
114
|
const a = W(), m = F(), f = x(), h = (j = a.expandedSections.values[t]) != null ? j : !1, k = u(() => {
|
|
117
115
|
m(f.setSectionExpanded(t, !h));
|
|
118
116
|
}, [f, m, h, t]), y = n != null ? n : me(t);
|
|
119
|
-
return /* @__PURE__ */
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
justifyContent: "center",
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
}) : l
|
|
143
|
-
}), h && /* @__PURE__ */ o(O, {})]
|
|
144
|
-
});
|
|
117
|
+
return /* @__PURE__ */ g(z, { children: [
|
|
118
|
+
/* @__PURE__ */ o(
|
|
119
|
+
te,
|
|
120
|
+
{
|
|
121
|
+
label: y,
|
|
122
|
+
leftIcon: p,
|
|
123
|
+
expandable: !0,
|
|
124
|
+
expanded: h,
|
|
125
|
+
selected: h,
|
|
126
|
+
onClick: k,
|
|
127
|
+
right: S,
|
|
128
|
+
children: r ? /* @__PURE__ */ o(w, { spacing: !0, justifyContent: "center", flex: 1, children: /* @__PURE__ */ o(ne, { size: "small" }) }) : c ? /* @__PURE__ */ o(
|
|
129
|
+
re,
|
|
130
|
+
{
|
|
131
|
+
variant: "error",
|
|
132
|
+
text: c,
|
|
133
|
+
contentRight: s ? /* @__PURE__ */ o(H, { label: "Retry", onClick: s }) : null
|
|
134
|
+
}
|
|
135
|
+
) : l
|
|
136
|
+
}
|
|
137
|
+
),
|
|
138
|
+
h && /* @__PURE__ */ o(O, {})
|
|
139
|
+
] });
|
|
145
140
|
}, me = (e) => ce(oe(e)), We = ({
|
|
146
141
|
children: e,
|
|
147
142
|
...t
|
|
148
|
-
}) => /* @__PURE__ */ o(
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
}
|
|
143
|
+
}) => /* @__PURE__ */ o(
|
|
144
|
+
P,
|
|
145
|
+
{
|
|
146
|
+
style: { marginTop: "auto" },
|
|
147
|
+
justifyContent: "center",
|
|
148
|
+
spacing: 2,
|
|
149
|
+
indent: !0,
|
|
150
|
+
shadow: "popover",
|
|
151
|
+
zIndex: 1,
|
|
152
|
+
...t,
|
|
153
|
+
children: e
|
|
154
|
+
}
|
|
155
|
+
), I = L(null), Ke = () => {
|
|
160
156
|
const e = E(I);
|
|
161
157
|
if (!e)
|
|
162
158
|
throw new Error(
|
|
@@ -169,19 +165,13 @@ const Se = ({
|
|
|
169
165
|
actions: r,
|
|
170
166
|
children: c
|
|
171
167
|
}) {
|
|
172
|
-
return /* @__PURE__ */ o(
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
value:
|
|
176
|
-
children: /* @__PURE__ */ o(G.Provider, {
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
value: t.formModel,
|
|
180
|
-
children: c
|
|
181
|
-
})
|
|
182
|
-
})
|
|
183
|
-
})
|
|
184
|
-
});
|
|
168
|
+
return /* @__PURE__ */ o(
|
|
169
|
+
K.Provider,
|
|
170
|
+
{
|
|
171
|
+
value: n,
|
|
172
|
+
children: /* @__PURE__ */ o(Y.Provider, { value: r, children: /* @__PURE__ */ o(G.Provider, { value: t, children: /* @__PURE__ */ o(I.Provider, { value: t.formModel, children: c }) }) })
|
|
173
|
+
}
|
|
174
|
+
);
|
|
185
175
|
}, fe = (e) => ({
|
|
186
176
|
settings: {
|
|
187
177
|
open: !1
|
|
@@ -256,17 +246,10 @@ const Se = ({
|
|
|
256
246
|
initialFormModel: t,
|
|
257
247
|
children: n
|
|
258
248
|
}) {
|
|
259
|
-
const {
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
} = ge(fe(t));
|
|
264
|
-
return /* @__PURE__ */ o(Ce, {
|
|
265
|
-
state: r,
|
|
266
|
-
actions: c,
|
|
267
|
-
dispatch: s,
|
|
268
|
-
children: n
|
|
269
|
-
});
|
|
249
|
+
const { state: r, actions: c, dispatch: s } = ge(
|
|
250
|
+
fe(t)
|
|
251
|
+
);
|
|
252
|
+
return /* @__PURE__ */ o(Ce, { state: r, actions: c, dispatch: s, children: n });
|
|
270
253
|
}, V = ae.div`
|
|
271
254
|
padding: calc(var(--swui-metrics-spacing) / 2)
|
|
272
255
|
calc(var(--swui-metrics-indent) / 2);
|
|
@@ -274,17 +257,21 @@ const Se = ({
|
|
|
274
257
|
children: e,
|
|
275
258
|
disableClearAllButton: t = !1
|
|
276
259
|
}) => {
|
|
277
|
-
const n = F(), r = x(), c = u(
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
260
|
+
const n = F(), r = x(), c = u(
|
|
261
|
+
() => n(r.clearFormModel()),
|
|
262
|
+
[r, n]
|
|
263
|
+
);
|
|
264
|
+
return /* @__PURE__ */ g(w, { flexWrap: "wrap", children: [
|
|
265
|
+
e,
|
|
266
|
+
!t && /* @__PURE__ */ o(V, { children: /* @__PURE__ */ o(
|
|
267
|
+
H,
|
|
268
|
+
{
|
|
282
269
|
size: "small",
|
|
283
270
|
label: "Clear all",
|
|
284
271
|
onClick: c
|
|
285
|
-
}
|
|
286
|
-
})
|
|
287
|
-
});
|
|
272
|
+
}
|
|
273
|
+
) })
|
|
274
|
+
] });
|
|
288
275
|
}, we = function({
|
|
289
276
|
label: t,
|
|
290
277
|
sectionId: n
|
|
@@ -292,54 +279,45 @@ const Se = ({
|
|
|
292
279
|
const r = F(), c = x(), s = u(() => {
|
|
293
280
|
r(c.clearExpandedSections()), r(c.expandSection(n)), r(c.openFilters());
|
|
294
281
|
}, [c, r, n]);
|
|
295
|
-
return /* @__PURE__ */ o(V, {
|
|
296
|
-
children: /* @__PURE__ */ o(D, {
|
|
297
|
-
label: t,
|
|
298
|
-
variant: "secondary",
|
|
299
|
-
onClick: s
|
|
300
|
-
})
|
|
301
|
-
});
|
|
282
|
+
return /* @__PURE__ */ o(V, { children: /* @__PURE__ */ o(q, { label: t, variant: "secondary", onClick: s }) });
|
|
302
283
|
}, ve = function({
|
|
303
284
|
sectionId: t,
|
|
304
285
|
label: n,
|
|
305
286
|
value: r,
|
|
306
287
|
onClickRemove: c
|
|
307
288
|
}) {
|
|
308
|
-
const s = F(), i = x(), l = u(
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
});
|
|
289
|
+
const s = F(), i = x(), l = u(
|
|
290
|
+
(a) => s(i.setFormModelFields(a)),
|
|
291
|
+
[s, i]
|
|
292
|
+
), p = u(() => {
|
|
293
|
+
c == null || c({ value: r, setFormModelFields: l });
|
|
313
294
|
}, [c, l, r]), S = u(() => {
|
|
314
295
|
s(i.clearExpandedSections()), s(i.expandSection(t)), s(i.openFilters());
|
|
315
296
|
}, [i, s, t]);
|
|
316
|
-
return /* @__PURE__ */ o(V, {
|
|
317
|
-
|
|
297
|
+
return /* @__PURE__ */ o(V, { children: /* @__PURE__ */ o(
|
|
298
|
+
q,
|
|
299
|
+
{
|
|
318
300
|
label: n != null ? n : t,
|
|
319
301
|
onClick: S,
|
|
320
302
|
onClickRemove: c ? p : void 0
|
|
321
|
-
}
|
|
322
|
-
});
|
|
303
|
+
}
|
|
304
|
+
) });
|
|
323
305
|
}, Je = function({
|
|
324
306
|
sectionId: t,
|
|
325
307
|
chips: n,
|
|
326
308
|
emptyChipLabel: r,
|
|
327
309
|
onClickRemoveOnChip: c
|
|
328
310
|
}) {
|
|
329
|
-
return n != null && n.length ? /* @__PURE__ */ o(
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
value: i
|
|
333
|
-
}) => /* @__PURE__ */ o(ve, {
|
|
311
|
+
return n != null && n.length ? /* @__PURE__ */ o(z, { children: n.map(({ label: s, value: i }) => /* @__PURE__ */ o(
|
|
312
|
+
ve,
|
|
313
|
+
{
|
|
334
314
|
label: s != null ? s : t,
|
|
335
315
|
sectionId: t,
|
|
336
316
|
onClickRemove: c,
|
|
337
317
|
value: i
|
|
338
|
-
},
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
label: r
|
|
342
|
-
}) : null;
|
|
318
|
+
},
|
|
319
|
+
i
|
|
320
|
+
)) }) : r ? /* @__PURE__ */ o(we, { sectionId: t, label: r }) : null;
|
|
343
321
|
}, Qe = (e, t, n) => ({
|
|
344
322
|
chips: Re(
|
|
345
323
|
e[t],
|
|
@@ -349,7 +327,7 @@ const Se = ({
|
|
|
349
327
|
e,
|
|
350
328
|
t
|
|
351
329
|
)
|
|
352
|
-
}), Re = (e, t) =>
|
|
330
|
+
}), Re = (e, t) => D(e).map((n) => {
|
|
353
331
|
var c;
|
|
354
332
|
const r = t == null ? void 0 : t.find((s) => s.value === n);
|
|
355
333
|
return { value: n, label: (c = r == null ? void 0 : r.label) != null ? c : n };
|
|
@@ -363,48 +341,42 @@ const Se = ({
|
|
|
363
341
|
value: t,
|
|
364
342
|
onValueChange: n,
|
|
365
343
|
...r
|
|
366
|
-
}) => /* @__PURE__ */ o(T, {
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
tabIndex: -1,
|
|
379
|
-
value: t == null ? void 0 : t[c.value],
|
|
380
|
-
label: c.label,
|
|
381
|
-
onValueChange: (s) => n == null ? void 0 : n({
|
|
382
|
-
...t,
|
|
383
|
-
[c.value]: s
|
|
384
|
-
})
|
|
385
|
-
})
|
|
386
|
-
}, c.value))
|
|
387
|
-
})
|
|
388
|
-
}), Xe = ({
|
|
344
|
+
}) => /* @__PURE__ */ o(T, { disableContentPadding: !0, ...r, children: /* @__PURE__ */ o(P, { maxHeight: "400px", overflowY: "auto", flex: 1, gap: 1, spacing: 1, children: e == null ? void 0 : e.map((c) => /* @__PURE__ */ o(w, { alignItems: "center", children: /* @__PURE__ */ o(
|
|
345
|
+
le,
|
|
346
|
+
{
|
|
347
|
+
tabIndex: -1,
|
|
348
|
+
value: t == null ? void 0 : t[c.value],
|
|
349
|
+
label: c.label,
|
|
350
|
+
onValueChange: (s) => n == null ? void 0 : n({
|
|
351
|
+
...t,
|
|
352
|
+
[c.value]: s
|
|
353
|
+
})
|
|
354
|
+
}
|
|
355
|
+
) }, c.value)) }) }), Xe = ({
|
|
389
356
|
options: e,
|
|
390
357
|
value: t,
|
|
391
358
|
noneSelectedLabel: n,
|
|
392
359
|
onValueChange: r,
|
|
393
360
|
...c
|
|
394
361
|
}) => {
|
|
395
|
-
const [s, i] = M(""), l = b(
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
value: a,
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
362
|
+
const [s, i] = M(""), l = b(
|
|
363
|
+
() => t ? D(t).map((a) => {
|
|
364
|
+
var f;
|
|
365
|
+
const m = e == null ? void 0 : e.find((h) => h.value === a);
|
|
366
|
+
return { value: a, label: (f = m == null ? void 0 : m.label) != null ? f : a };
|
|
367
|
+
}) : [],
|
|
368
|
+
[e, t]
|
|
369
|
+
), p = b(() => e == null ? void 0 : e.filter(
|
|
370
|
+
(a) => a.value.toLocaleLowerCase().indexOf(s.toLocaleLowerCase()) > -1 || a.label.toLocaleLowerCase().indexOf(s.toLocaleLowerCase()) > -1
|
|
371
|
+
), [e, s]), S = u(
|
|
372
|
+
(a) => {
|
|
373
|
+
r == null || r(be(a));
|
|
374
|
+
},
|
|
375
|
+
[r]
|
|
376
|
+
);
|
|
377
|
+
return /* @__PURE__ */ o(T, { ...c, children: /* @__PURE__ */ o(
|
|
378
|
+
de,
|
|
379
|
+
{
|
|
408
380
|
options: p,
|
|
409
381
|
value: l,
|
|
410
382
|
onValueChange: S,
|
|
@@ -412,8 +384,8 @@ const Se = ({
|
|
|
412
384
|
noneSelectedLabel: n,
|
|
413
385
|
onInputChange: i,
|
|
414
386
|
closeMenuOnSelect: !1
|
|
415
|
-
}
|
|
416
|
-
});
|
|
387
|
+
}
|
|
388
|
+
) });
|
|
417
389
|
}, be = (e) => e.reduce((t, n) => (t[n.value] = !0, t), {}), Ze = (e, t, n) => ({
|
|
418
390
|
chips: Le(
|
|
419
391
|
e[t],
|
|
@@ -452,34 +424,35 @@ const Se = ({
|
|
|
452
424
|
leftIcon: i,
|
|
453
425
|
...l
|
|
454
426
|
}) => {
|
|
455
|
-
const p = F(), S = x(), a = b(
|
|
456
|
-
dispatch: p,
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
427
|
+
const p = F(), S = x(), a = b(
|
|
428
|
+
() => ({ dispatch: p, actions: S }),
|
|
429
|
+
[S, p]
|
|
430
|
+
), [m, f] = M("startDate"), h = b(() => ue(e), [e]), k = u(
|
|
431
|
+
(y) => {
|
|
432
|
+
t(he(y), a);
|
|
433
|
+
},
|
|
434
|
+
[t, a]
|
|
435
|
+
);
|
|
436
|
+
return /* @__PURE__ */ o(
|
|
437
|
+
T,
|
|
438
|
+
{
|
|
439
|
+
label: s,
|
|
440
|
+
leftIcon: i,
|
|
441
|
+
sectionId: n,
|
|
442
|
+
contentRight: r,
|
|
443
|
+
disableContentPadding: c,
|
|
444
|
+
children: /* @__PURE__ */ o(A, { flex: 1, alignItems: "center", children: /* @__PURE__ */ o(A, { background: "white", indent: !0, children: /* @__PURE__ */ o(
|
|
445
|
+
pe,
|
|
446
|
+
{
|
|
474
447
|
setFocusedInput: f,
|
|
475
448
|
focusedInput: m,
|
|
476
449
|
value: h,
|
|
477
450
|
onValueChange: k,
|
|
478
451
|
...l
|
|
479
|
-
}
|
|
480
|
-
})
|
|
481
|
-
}
|
|
482
|
-
|
|
452
|
+
}
|
|
453
|
+
) }) })
|
|
454
|
+
}
|
|
455
|
+
);
|
|
483
456
|
};
|
|
484
457
|
export {
|
|
485
458
|
Xe as ChipMultiSelectSection,
|
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/components/StickyFooter.tsx","../src/features/search-filter/context/SearchFilterModelContext.ts","../src/features/search-filter/components/context/SearchFilterContext.tsx","../src/features/search-filter/redux/SearchFilterRedux.ts","../src/features/search-filter/hooks/UseLocalSearchFilterState.ts","../src/features/search-filter/components/context/SearchFilterLocalStateContext.tsx","../src/features/search-filter/features/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 { ReactNode } from \"react\";\nimport { FlatButton, stenaTimes } from \"@stenajs-webui/elements\";\nimport { Heading, Row, Space, Spacing } from \"@stenajs-webui/core\";\n\ninterface SearchFilterPanelHeaderProps {\n onRequestClose: () => void;\n header?: string;\n contentRight?: ReactNode;\n}\n\nexport const SearchFilterPanelHeader: React.FC<\n SearchFilterPanelHeaderProps\n> = ({ onRequestClose, header = \"Filter\", contentRight }) => {\n return (\n <Spacing>\n <Row\n justifyContent={\"space-between\"}\n alignItems={\"center\"}\n height={\"48px\"}\n >\n <Row>\n <Space num={3} />\n <Heading variant={\"h4\"}>{header}</Heading>\n </Row>\n <Row gap={1}>\n {contentRight}\n <FlatButton\n leftIcon={stenaTimes}\n onClick={onRequestClose}\n variant={\"danger\"}\n />\n <Space num={0.5} />\n </Row>\n </Row>\n </Spacing>\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 { ReactNode, useCallback } from \"react\";\nimport { Drawer, DrawerProps } from \"@stenajs-webui/modal\";\nimport { cssColor } from \"@stenajs-webui/theme\";\nimport { Box, Column } from \"@stenajs-webui/core\";\nimport { SearchFilterPanelHeader } from \"./SearchFilterPanelHeader\";\nimport { useSearchFilterState } from \"../context/SearchFilterStateContext\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\n\ninterface SearchFilterDrawerProps\n extends Omit<DrawerProps, \"isOpen\" | \"onRequestClose\"> {\n header?: string;\n headerContentRight?: ReactNode;\n}\n\nexport const SearchFilterDrawer: React.FC<SearchFilterDrawerProps> = ({\n children,\n header,\n headerContentRight,\n ...drawerProps\n}) => {\n const {\n settings: { open },\n } = useSearchFilterState();\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const closeDrawer = useCallback(() => {\n dispatch(actions.closeFilters());\n }, [actions, dispatch]);\n\n return (\n <Drawer isOpen={open} onRequestClose={closeDrawer} {...drawerProps}>\n <Column\n height={\"100%\"}\n borderRadius={\"var(--swui-border-radius)\"}\n background={cssColor(\"--lhds-color-ui-50\")}\n >\n <SearchFilterPanelHeader\n onRequestClose={closeDrawer}\n header={header}\n contentRight={headerContentRight}\n />\n <Box spacing={1} indent={1} gap={1}>\n {children}\n </Box>\n </Column>\n </Drawer>\n );\n};\n","import { SecondaryButton, stenaSlidersMini } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\nimport { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\n\ninterface SearchFilterDrawerButtonProps {\n label?: string;\n leftIcon?: IconDefinition;\n}\n\nexport const SearchFilterButton: React.FC<SearchFilterDrawerButtonProps> = ({\n label = \"Filters\",\n leftIcon = stenaSlidersMini,\n}) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const onClickButton = useCallback(() => {\n dispatch(actions.openFilters());\n }, [actions, dispatch]);\n\n return (\n <SecondaryButton\n label={label}\n leftIcon={leftIcon}\n onClick={onClickButton}\n />\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren, useCallback } from \"react\";\nimport { Row, Space } from \"@stenajs-webui/core\";\nimport { lowerCase, upperFirst } from \"lodash\";\nimport {\n Banner,\n FlatButton,\n MenuButton,\n Spinner,\n} from \"@stenajs-webui/elements\";\nimport { useSearchFilterState } from \"../context/SearchFilterStateContext\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\nimport { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\n\nexport interface SearchFilterSectionProps<TSectionKey extends string> {\n sectionId: TSectionKey;\n label?: string;\n leftIcon?: IconDefinition;\n contentRight?: React.ReactNode;\n disableContentPadding?: boolean;\n loading?: boolean;\n error?: string;\n onRetry?: () => void;\n}\n\nexport const SearchFilterSection = function SearchFilterSection<\n TSectionKey extends string\n>({\n sectionId,\n label,\n loading,\n error,\n onRetry,\n disableContentPadding,\n children,\n leftIcon,\n contentRight,\n}: PropsWithChildren<SearchFilterSectionProps<TSectionKey>>) {\n const state = useSearchFilterState();\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const expanded = state.expandedSections.values[sectionId] ?? false;\n\n const onClickLabel = useCallback(() => {\n dispatch(actions.setSectionExpanded(sectionId, !expanded));\n }, [actions, dispatch, expanded, sectionId]);\n\n const activeLabel = label ?? formatColumnIdToHeaderCellLabel(sectionId);\n\n return (\n <>\n <MenuButton\n label={activeLabel}\n leftIcon={leftIcon}\n expandable\n expanded={expanded}\n selected={expanded}\n onClick={onClickLabel}\n right={contentRight}\n >\n {loading ? (\n <Row spacing justifyContent={\"center\"} flex={1}>\n <Spinner size={\"small\"} />\n </Row>\n ) : error ? (\n <Banner\n variant={\"error\"}\n text={error}\n contentRight={\n onRetry ? <FlatButton label={\"Retry\"} onClick={onRetry} /> : null\n }\n />\n ) : disableContentPadding ? (\n children\n ) : (\n children\n )}\n </MenuButton>\n {expanded && <Space />}\n </>\n );\n};\n\nexport const formatColumnIdToHeaderCellLabel = (columnId: string): string =>\n upperFirst(lowerCase(columnId));\n","import { BoxProps, Column } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\n\nexport interface StickySearchButtonProps extends Pick<BoxProps, \"gap\"> {\n children?: ReactNode;\n}\n\nexport const StickyFooter: React.FC<StickySearchButtonProps> = ({\n children,\n ...boxProps\n}) => {\n return (\n <Column\n style={{ marginTop: \"auto\" }}\n justifyContent={\"center\"}\n spacing={2}\n indent\n shadow={\"popover\"}\n zIndex={1}\n {...boxProps}\n >\n {children}\n </Column>\n );\n};\n","import { createContext, useContext } from \"react\";\n\nexport const SearchFilterModelContext = createContext<unknown>(null as unknown);\n\nexport const useSearchFilterModel = <TFormModel>(): TFormModel => {\n const c = useContext(SearchFilterModelContext);\n if (!c) {\n throw new Error(\n \"Missing search filter context, wrap components with SearchFilterContext component.\"\n );\n }\n return c as TFormModel;\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport {\n SearchFilterActions,\n SearchFilterDispatch,\n SearchFilterState,\n} from \"../../redux/SearchFilterRedux\";\nimport { SearchFilterDispatchContext } from \"../../context/SearchFilterDispatchContext\";\nimport { SearchFilterActionsContext } from \"../../context/SearchFilterActionsContext\";\nimport { SearchFilterStateContext } from \"../../context/SearchFilterStateContext\";\nimport { SearchFilterModelContext } from \"../../context/SearchFilterModelContext\";\n\ninterface SearchFilterScopeProps<TFormModel, TSectionKey extends string> {\n state: SearchFilterState<TFormModel>;\n dispatch: SearchFilterDispatch<TFormModel>;\n actions: SearchFilterActions<TFormModel, TSectionKey>;\n}\n\nexport const SearchFilterContext = function SearchFilterScope<\n TFormModel,\n TSectionKey extends string\n>({\n state,\n dispatch,\n actions,\n children,\n}: PropsWithChildren<SearchFilterScopeProps<TFormModel, TSectionKey>>) {\n return (\n <SearchFilterDispatchContext.Provider\n value={dispatch as SearchFilterDispatch<unknown>}\n >\n <SearchFilterActionsContext.Provider value={actions}>\n <SearchFilterStateContext.Provider value={state}>\n <SearchFilterModelContext.Provider value={state.formModel}>\n {children}\n </SearchFilterModelContext.Provider>\n </SearchFilterStateContext.Provider>\n </SearchFilterActionsContext.Provider>\n </SearchFilterDispatchContext.Provider>\n );\n};\n","import { combineReducers } from \"redux\";\nimport {\n createEntityActions,\n createEntityReducer,\n createValueByIdActions,\n createValueByIdReducer,\n EntityAction,\n EntityState,\n reducerIdGate,\n reducerIdGateAction,\n ReducerIdGateAction,\n ValueByIdAction,\n ValueByIdState,\n} from \"@stenajs-webui/redux\";\nimport { Dispatch } from \"react\";\n\nexport interface SearchFilterSettings {\n open: boolean;\n}\n\nexport type SearchFilterDispatch<TFormModel> = Dispatch<\n SearchFilterAction<TFormModel>\n>;\n\nexport interface SearchFilterState<TFormModel> {\n expandedSections: ValueByIdState<boolean>;\n formModel: EntityState<TFormModel>;\n settings: EntityState<SearchFilterSettings>;\n}\n\nexport type SearchFilterAction<TFormModel> =\n | ReducerIdGateAction<ValueByIdAction<boolean>>\n | ReducerIdGateAction<EntityAction<TFormModel>>\n | ReducerIdGateAction<EntityAction<SearchFilterSettings>>;\n\nexport const createSearchFilterInitialState = <TFormModel>(\n initialFormModel: TFormModel\n): SearchFilterState<TFormModel> => ({\n settings: {\n open: false,\n },\n formModel: initialFormModel,\n expandedSections: { values: {} },\n});\n\nexport const createSearchFilterReducer = <TFormModel>(\n reducerId: string,\n initialState: SearchFilterState<TFormModel>\n) =>\n combineReducers({\n expandedSections: reducerIdGate(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdReducer<boolean>(initialState.expandedSections)\n ),\n formModel: reducerIdGate(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityReducer<TFormModel>(initialState.formModel)\n ),\n settings: reducerIdGate(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityReducer<SearchFilterSettings>(initialState.settings)\n ),\n });\n\nexport interface SearchFilterActions<TFormModel, TSectionKey extends string> {\n openFilters: () => SearchFilterAction<TFormModel>;\n closeFilters: () => SearchFilterAction<TFormModel>;\n setFormModelFields: (\n fields: Partial<TFormModel>\n ) => SearchFilterAction<TFormModel>;\n clearFormModel: () => SearchFilterAction<TFormModel>;\n expandSection: (section: TSectionKey) => SearchFilterAction<TFormModel>;\n collapseSection: (section: TSectionKey) => SearchFilterAction<TFormModel>;\n setSectionExpanded: (\n section: TSectionKey,\n expanded: boolean\n ) => SearchFilterAction<TFormModel>;\n clearExpandedSections: () => SearchFilterAction<TFormModel>;\n}\n\nexport const createSearchFilterActions = <\n TFormModel,\n TSectionKey extends string\n>(\n reducerId: string,\n initialFormModel: TFormModel\n): SearchFilterActions<TFormModel, TSectionKey> => ({\n openFilters: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityActions<SearchFilterSettings>().setEntityFields({\n open: true,\n })\n ),\n closeFilters: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityActions<SearchFilterSettings>().setEntityFields({\n open: false,\n })\n ),\n setFormModelFields: (fields: Partial<TFormModel>) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityActions<TFormModel>().setEntityFields(fields)\n ),\n clearFormModel: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityActions<TFormModel>().setEntity(initialFormModel)\n ),\n expandSection: (section: TSectionKey) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, true)\n ),\n collapseSection: (section: TSectionKey) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, false)\n ),\n setSectionExpanded: (section: TSectionKey, expanded: boolean) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, expanded)\n ),\n clearExpandedSections: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().clearAllValues()\n ),\n});\n\nexport const getReducerIdFor = (\n reducerId: string,\n reducerIdSuffix: keyof SearchFilterState<unknown>\n): string => `${reducerId}.${reducerIdSuffix}`;\n","import {\n createSearchFilterActions,\n createSearchFilterReducer,\n SearchFilterState,\n} from \"../redux/SearchFilterRedux\";\nimport { useReducer, useState } from \"react\";\n\nexport const useLocalSearchFilterState = <\n TFormModel,\n TSectionKey extends string\n>(\n initialState: SearchFilterState<TFormModel>\n) => {\n const [reducer] = useState(() =>\n createSearchFilterReducer<TFormModel>(\"local\", initialState)\n );\n\n const [actions] = useState(() =>\n createSearchFilterActions<TFormModel, TSectionKey>(\n \"local\",\n initialState.formModel\n )\n );\n\n const [state, dispatch] = useReducer(reducer, initialState);\n\n return {\n actions,\n state,\n dispatch,\n };\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport { useLocalSearchFilterState } from \"../../hooks/UseLocalSearchFilterState\";\nimport { SearchFilterContext } from \"./SearchFilterContext\";\nimport { createSearchFilterInitialState } from \"../../redux/SearchFilterRedux\";\n\ninterface SearchFilterLocalScopeProps<TFormModel> {\n initialFormModel: TFormModel;\n}\n\nexport const SearchFilterLocalStateContext = function SearchFilterLocalScope<\n TFormModel\n>({\n initialFormModel,\n children,\n}: PropsWithChildren<SearchFilterLocalScopeProps<TFormModel>>) {\n const { state, actions, dispatch } = useLocalSearchFilterState(\n createSearchFilterInitialState(initialFormModel)\n );\n\n return (\n <SearchFilterContext state={state} actions={actions} dispatch={dispatch}>\n {children}\n </SearchFilterContext>\n );\n};\n","import 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 { ReactNode, 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 children?: ReactNode;\n}\n\nexport const SearchFilterChips: React.FC<SearchFilterChipsProps> = ({\n children,\n disableClearAllButton = false,\n}) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const onClickClearAll = useCallback(\n () => dispatch(actions.clearFormModel()),\n [actions, dispatch]\n );\n\n return (\n <Row flexWrap={\"wrap\"}>\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(\n formModel[fieldName] as unknown as BooleanRecord,\n options\n ),\n onClickRemoveOnChip: createOnClickRemoveOnChipForBooleanRecord(\n formModel,\n fieldName\n ),\n});\n\nexport const createChipsForBooleanRecord = (\n booleanRecord: BooleanRecord,\n options?: BooleanRecordOptions\n): Array<SearchFilterSectionChipModel> =>\n truthyKeysAsList(booleanRecord).map((key) => {\n const option = options?.find((o) => o.value === key);\n return { value: key, label: option?.label ?? key };\n });\n\nexport const createOnClickRemoveOnChipForBooleanRecord = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, BooleanRecord>\n>(\n formModel: TFormModel,\n fieldName: TField\n): SearchFilterSectionOnClickRemoveOnChip<TFormModel> => {\n return ({ setFormModelFields, value }) => {\n const newRecord = { ...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, Row } from \"@stenajs-webui/core\";\nimport {\n CheckboxWithLabel,\n ValueAndOnValueChangeProps,\n} 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} gap={1} spacing={1}>\n {options?.map((d) => (\n <Row key={d.value} alignItems={\"center\"}>\n <CheckboxWithLabel\n tabIndex={-1}\n value={value?.[d.value]}\n label={d.label}\n onValueChange={(v) =>\n onValueChange?.({\n ...value,\n [d.value]: v,\n })\n }\n />\n </Row>\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 {\n SearchFilterSectionChipModel,\n SearchFilterSectionOnClickRemoveOnChip,\n} from \"../../config/SearchFilterConfig\";\nimport { PickByValue } from \"@stenajs-webui/core\";\nimport { SectionChipsProps } from \"../../features/chips/SectionChips\";\n\nexport const createChipsPropsForDateRange = <\n TFormModel,\n TSectionKey extends string,\n TField extends keyof PickByValue<TFormModel, string | undefined>\n>(\n formModel: TFormModel,\n startDateFieldName: TField,\n endDateFieldName: TField\n): Pick<\n SectionChipsProps<TFormModel, TSectionKey>,\n \"chips\" | \"onClickRemoveOnChip\"\n> => ({\n chips: createChipsForDateRange(\n formModel[startDateFieldName] as unknown as string | undefined,\n formModel[endDateFieldName] as unknown as string | undefined\n ),\n onClickRemoveOnChip: createOnClickRemoveOnChipForDateRange(\n startDateFieldName,\n endDateFieldName\n ),\n});\n\nexport const createChipsForDateRange = (\n startDate: string | undefined,\n endDate: string | undefined\n): Array<SearchFilterSectionChipModel> => {\n if (!startDate && !endDate) {\n return [];\n }\n return [\n { value: \"dateRange\", label: `${startDate ?? \"\"} - ${endDate ?? \"\"}` },\n ];\n};\n\nexport const createOnClickRemoveOnChipForDateRange = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, string | undefined>\n>(\n startDateFieldName: TField,\n endDateFieldName: TField\n): SearchFilterSectionOnClickRemoveOnChip<TFormModel> => {\n return ({ setFormModelFields }) => {\n setFormModelFields({\n [startDateFieldName]: undefined,\n [endDateFieldName]: undefined,\n } as unknown as Partial<TFormModel>);\n };\n};\n","import { PickByValue } from \"@stenajs-webui/core\";\nimport { DateRangeCalendarSectionProps } from \"./components/DateRangeCalendarSection\";\n\nexport const createDateRangeSectionProps = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, string | undefined>,\n TSectionKey extends string\n>(\n formModel: TFormModel,\n startDateFieldName: TField,\n endDateFieldName: TField\n): Pick<\n DateRangeCalendarSectionProps<TFormModel, TSectionKey>,\n \"value\" | \"onValueChange\"\n> => ({\n value: {\n startDate: formModel[startDateFieldName] as unknown as string | undefined,\n endDate: formModel[endDateFieldName] as unknown as string | undefined,\n },\n onValueChange: (value, { dispatch, actions }) => {\n const fields: Partial<TFormModel> = {\n [startDateFieldName]: value.startDate,\n [endDateFieldName]: value.endDate,\n } as any;\n dispatch(actions.setFormModelFields(fields));\n },\n});\n","import {\n DateRange,\n DateRangeCalendar,\n DateRangeCalendarProps,\n DateRangeFocusedInput,\n dateRangeToStrings,\n DateStringRange,\n stringsToDateRange,\n} from \"@stenajs-webui/calendar\";\nimport * as React from \"react\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { Box } from \"@stenajs-webui/core\";\nimport {\n SearchFilterSection,\n SearchFilterSectionProps,\n} from \"../../../components/SearchFilterSection\";\nimport {\n SearchFilterActions,\n SearchFilterDispatch,\n} from \"../../../redux/SearchFilterRedux\";\nimport { useSearchFilterDispatch } from \"../../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../../context/SearchFilterActionsContext\";\n\nexport interface DateRangeCalendarSectionProps<\n TFormModel,\n TSectionKey extends string\n> extends Omit<\n SearchFilterSectionProps<TSectionKey>,\n \"label\" | \"onRetry\" | \"error\" | \"loading\"\n >,\n Omit<\n DateRangeCalendarProps<{}>,\n \"value\" | \"onValueChange\" | \"focusedInput\" | \"setFocusedInput\"\n > {\n value: DateStringRange;\n onValueChange: (\n value: DateStringRange,\n options: SetDateOptions<TFormModel, TSectionKey>\n ) => void;\n label?: string;\n}\n\nexport interface SetDateOptions<TFormModel, TSectionKey extends string> {\n dispatch: SearchFilterDispatch<TFormModel>;\n actions: SearchFilterActions<TFormModel, TSectionKey>;\n}\n\nexport const DateRangeCalendarSection = <\n TFormModel,\n TSectionKey extends string\n>({\n value,\n onValueChange,\n sectionId,\n contentRight,\n disableContentPadding,\n label,\n leftIcon,\n ...dateRangeCalendarProps\n}: DateRangeCalendarSectionProps<TFormModel, TSectionKey>) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions<TFormModel, TSectionKey>();\n\n const options = useMemo<SetDateOptions<TFormModel, TSectionKey>>(\n () => ({ dispatch, actions }),\n [actions, dispatch]\n );\n const [focusedInput, setFocusedInput] =\n useState<DateRangeFocusedInput>(\"startDate\");\n\n const dateRangeValue = useMemo(() => stringsToDateRange(value), [value]);\n\n const onValueChangeHandler = useCallback(\n (value: DateRange) => {\n onValueChange(dateRangeToStrings(value), options);\n },\n [onValueChange, options]\n );\n\n return (\n <SearchFilterSection\n label={label}\n leftIcon={leftIcon}\n sectionId={sectionId}\n contentRight={contentRight}\n disableContentPadding={disableContentPadding}\n >\n <Box flex={1} alignItems={\"center\"}>\n <Box background={\"white\"} indent>\n <DateRangeCalendar\n setFocusedInput={setFocusedInput}\n focusedInput={focusedInput}\n value={dateRangeValue}\n onValueChange={onValueChangeHandler}\n {...dateRangeCalendarProps}\n />\n </Box>\n </Box>\n </SearchFilterSection>\n );\n};\n"],"names":["SearchFilterPanelHeader","onRequestClose","header","contentRight","Spacing","Row","_jsxs","_jsx","Space","Heading","FlatButton","stenaTimes","SearchFilterStateContext","createContext","useSearchFilterState","c","useContext","SearchFilterDispatchContext","useSearchFilterDispatch","SearchFilterActionsContext","useSearchFilterActions","SearchFilterDrawer","children","headerContentRight","drawerProps","settings","open","dispatch","actions","closeDrawer","useCallback","closeFilters","Drawer","Column","cssColor","Box","SearchFilterButton","label","leftIcon","stenaSlidersMini","onClickButton","openFilters","SecondaryButton","SearchFilterSection","sectionId","loading","error","onRetry","disableContentPadding","state","expanded","expandedSections","values","onClickLabel","setSectionExpanded","activeLabel","formatColumnIdToHeaderCellLabel","_Fragment","MenuButton","Spinner","Banner","columnId","upperFirst","lowerCase","StickyFooter","boxProps","marginTop","SearchFilterModelContext","useSearchFilterModel","SearchFilterContext","formModel","createSearchFilterInitialState","initialFormModel","createSearchFilterReducer","reducerId","initialState","combineReducers","reducerIdGate","getReducerIdFor","createValueByIdReducer","createEntityReducer","createSearchFilterActions","reducerIdGateAction","createEntityActions","fields","section","createValueByIdActions","reducerIdSuffix","useLocalSearchFilterState","reducer","useState","useReducer","SearchFilterLocalStateContext","ChipSpacer","styled","div","SearchFilterChips","disableClearAllButton","onClickClearAll","clearFormModel","EmptyChip","clearExpandedSections","expandSection","Chip","SearchFilterChip","value","onClickRemove","setFormModelFields","onClickRemoveHandler","undefined","SectionChips","chips","emptyChipLabel","onClickRemoveOnChip","length","map","createChipsPropsForBooleanRecord","fieldName","options","createChipsForBooleanRecord","createOnClickRemoveOnChipForBooleanRecord","booleanRecord","truthyKeysAsList","key","option","o","_a","newRecord","SimpleCheckboxListSection","onValueChange","sectionProps","d","CheckboxWithLabel","v","ChipMultiSelectSection","noneSelectedLabel","text","setText","listValue","useMemo","find","filteredOptions","filter","p","toLocaleLowerCase","indexOf","onValueChangeInternal","createBooleanRecordFromValue","ChipMultiSelect","reduce","sum","item","createChipsPropsForDateRange","startDateFieldName","endDateFieldName","createChipsForDateRange","createOnClickRemoveOnChipForDateRange","startDate","endDate","createDateRangeSectionProps","DateRangeCalendarSection","dateRangeCalendarProps","focusedInput","setFocusedInput","dateRangeValue","stringsToDateRange","onValueChangeHandler","dateRangeToStrings","DateRangeCalendar"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../src/features/search-filter/components/SearchFilterPanelHeader.tsx","../src/features/search-filter/context/SearchFilterStateContext.ts","../src/features/search-filter/context/SearchFilterDispatchContext.ts","../src/features/search-filter/context/SearchFilterActionsContext.ts","../src/features/search-filter/components/SearchFilterDrawer.tsx","../src/features/search-filter/components/SearchFilterButton.tsx","../src/features/search-filter/components/SearchFilterSection.tsx","../src/features/search-filter/components/StickyFooter.tsx","../src/features/search-filter/context/SearchFilterModelContext.ts","../src/features/search-filter/components/context/SearchFilterContext.tsx","../src/features/search-filter/redux/SearchFilterRedux.ts","../src/features/search-filter/hooks/UseLocalSearchFilterState.ts","../src/features/search-filter/components/context/SearchFilterLocalStateContext.tsx","../src/features/search-filter/features/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 { ReactNode } from \"react\";\nimport { FlatButton, stenaTimes } from \"@stenajs-webui/elements\";\nimport { Heading, Row, Space, Spacing } from \"@stenajs-webui/core\";\n\ninterface SearchFilterPanelHeaderProps {\n onRequestClose: () => void;\n header?: string;\n contentRight?: ReactNode;\n}\n\nexport const SearchFilterPanelHeader: React.FC<\n SearchFilterPanelHeaderProps\n> = ({ onRequestClose, header = \"Filter\", contentRight }) => {\n return (\n <Spacing>\n <Row\n justifyContent={\"space-between\"}\n alignItems={\"center\"}\n height={\"48px\"}\n >\n <Row>\n <Space num={3} />\n <Heading variant={\"h4\"}>{header}</Heading>\n </Row>\n <Row gap={1}>\n {contentRight}\n <FlatButton\n leftIcon={stenaTimes}\n onClick={onRequestClose}\n variant={\"danger\"}\n />\n <Space num={0.5} />\n </Row>\n </Row>\n </Spacing>\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 { ReactNode, useCallback } from \"react\";\nimport { Drawer, DrawerProps } from \"@stenajs-webui/modal\";\nimport { cssColor } from \"@stenajs-webui/theme\";\nimport { Box, Column } from \"@stenajs-webui/core\";\nimport { SearchFilterPanelHeader } from \"./SearchFilterPanelHeader\";\nimport { useSearchFilterState } from \"../context/SearchFilterStateContext\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\n\ninterface SearchFilterDrawerProps\n extends Omit<DrawerProps, \"isOpen\" | \"onRequestClose\"> {\n header?: string;\n headerContentRight?: ReactNode;\n}\n\nexport const SearchFilterDrawer: React.FC<SearchFilterDrawerProps> = ({\n children,\n header,\n headerContentRight,\n ...drawerProps\n}) => {\n const {\n settings: { open },\n } = useSearchFilterState();\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const closeDrawer = useCallback(() => {\n dispatch(actions.closeFilters());\n }, [actions, dispatch]);\n\n return (\n <Drawer isOpen={open} onRequestClose={closeDrawer} {...drawerProps}>\n <Column\n height={\"100%\"}\n borderRadius={\"var(--swui-border-radius)\"}\n background={cssColor(\"--lhds-color-ui-50\")}\n >\n <SearchFilterPanelHeader\n onRequestClose={closeDrawer}\n header={header}\n contentRight={headerContentRight}\n />\n <Box spacing={1} indent={1} gap={1}>\n {children}\n </Box>\n </Column>\n </Drawer>\n );\n};\n","import { SecondaryButton, stenaSlidersMini } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\nimport { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\n\ninterface SearchFilterDrawerButtonProps {\n label?: string;\n leftIcon?: IconDefinition;\n}\n\nexport const SearchFilterButton: React.FC<SearchFilterDrawerButtonProps> = ({\n label = \"Filters\",\n leftIcon = stenaSlidersMini,\n}) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const onClickButton = useCallback(() => {\n dispatch(actions.openFilters());\n }, [actions, dispatch]);\n\n return (\n <SecondaryButton\n label={label}\n leftIcon={leftIcon}\n onClick={onClickButton}\n />\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren, useCallback } from \"react\";\nimport { Row, Space } from \"@stenajs-webui/core\";\nimport { lowerCase, upperFirst } from \"lodash\";\nimport {\n Banner,\n FlatButton,\n MenuButton,\n Spinner,\n} from \"@stenajs-webui/elements\";\nimport { useSearchFilterState } from \"../context/SearchFilterStateContext\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\nimport { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\n\nexport interface SearchFilterSectionProps<TSectionKey extends string> {\n sectionId: TSectionKey;\n label?: string;\n leftIcon?: IconDefinition;\n contentRight?: React.ReactNode;\n disableContentPadding?: boolean;\n loading?: boolean;\n error?: string;\n onRetry?: () => void;\n}\n\nexport const SearchFilterSection = function SearchFilterSection<\n TSectionKey extends string\n>({\n sectionId,\n label,\n loading,\n error,\n onRetry,\n disableContentPadding,\n children,\n leftIcon,\n contentRight,\n}: PropsWithChildren<SearchFilterSectionProps<TSectionKey>>) {\n const state = useSearchFilterState();\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const expanded = state.expandedSections.values[sectionId] ?? false;\n\n const onClickLabel = useCallback(() => {\n dispatch(actions.setSectionExpanded(sectionId, !expanded));\n }, [actions, dispatch, expanded, sectionId]);\n\n const activeLabel = label ?? formatColumnIdToHeaderCellLabel(sectionId);\n\n return (\n <>\n <MenuButton\n label={activeLabel}\n leftIcon={leftIcon}\n expandable\n expanded={expanded}\n selected={expanded}\n onClick={onClickLabel}\n right={contentRight}\n >\n {loading ? (\n <Row spacing justifyContent={\"center\"} flex={1}>\n <Spinner size={\"small\"} />\n </Row>\n ) : error ? (\n <Banner\n variant={\"error\"}\n text={error}\n contentRight={\n onRetry ? <FlatButton label={\"Retry\"} onClick={onRetry} /> : null\n }\n />\n ) : disableContentPadding ? (\n children\n ) : (\n children\n )}\n </MenuButton>\n {expanded && <Space />}\n </>\n );\n};\n\nexport const formatColumnIdToHeaderCellLabel = (columnId: string): string =>\n upperFirst(lowerCase(columnId));\n","import { BoxProps, Column } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\n\nexport interface StickySearchButtonProps extends Pick<BoxProps, \"gap\"> {\n children?: ReactNode;\n}\n\nexport const StickyFooter: React.FC<StickySearchButtonProps> = ({\n children,\n ...boxProps\n}) => {\n return (\n <Column\n style={{ marginTop: \"auto\" }}\n justifyContent={\"center\"}\n spacing={2}\n indent\n shadow={\"popover\"}\n zIndex={1}\n {...boxProps}\n >\n {children}\n </Column>\n );\n};\n","import { createContext, useContext } from \"react\";\n\nexport const SearchFilterModelContext = createContext<unknown>(null as unknown);\n\nexport const useSearchFilterModel = <TFormModel>(): TFormModel => {\n const c = useContext(SearchFilterModelContext);\n if (!c) {\n throw new Error(\n \"Missing search filter context, wrap components with SearchFilterContext component.\"\n );\n }\n return c as TFormModel;\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport {\n SearchFilterActions,\n SearchFilterDispatch,\n SearchFilterState,\n} from \"../../redux/SearchFilterRedux\";\nimport { SearchFilterDispatchContext } from \"../../context/SearchFilterDispatchContext\";\nimport { SearchFilterActionsContext } from \"../../context/SearchFilterActionsContext\";\nimport { SearchFilterStateContext } from \"../../context/SearchFilterStateContext\";\nimport { SearchFilterModelContext } from \"../../context/SearchFilterModelContext\";\n\ninterface SearchFilterScopeProps<TFormModel, TSectionKey extends string> {\n state: SearchFilterState<TFormModel>;\n dispatch: SearchFilterDispatch<TFormModel>;\n actions: SearchFilterActions<TFormModel, TSectionKey>;\n}\n\nexport const SearchFilterContext = function SearchFilterScope<\n TFormModel,\n TSectionKey extends string\n>({\n state,\n dispatch,\n actions,\n children,\n}: PropsWithChildren<SearchFilterScopeProps<TFormModel, TSectionKey>>) {\n return (\n <SearchFilterDispatchContext.Provider\n value={dispatch as SearchFilterDispatch<unknown>}\n >\n <SearchFilterActionsContext.Provider value={actions}>\n <SearchFilterStateContext.Provider value={state}>\n <SearchFilterModelContext.Provider value={state.formModel}>\n {children}\n </SearchFilterModelContext.Provider>\n </SearchFilterStateContext.Provider>\n </SearchFilterActionsContext.Provider>\n </SearchFilterDispatchContext.Provider>\n );\n};\n","import { combineReducers } from \"redux\";\nimport {\n createEntityActions,\n createEntityReducer,\n createValueByIdActions,\n createValueByIdReducer,\n EntityAction,\n EntityState,\n reducerIdGate,\n reducerIdGateAction,\n ReducerIdGateAction,\n ValueByIdAction,\n ValueByIdState,\n} from \"@stenajs-webui/redux\";\nimport { Dispatch } from \"react\";\n\nexport interface SearchFilterSettings {\n open: boolean;\n}\n\nexport type SearchFilterDispatch<TFormModel> = Dispatch<\n SearchFilterAction<TFormModel>\n>;\n\nexport interface SearchFilterState<TFormModel> {\n expandedSections: ValueByIdState<boolean>;\n formModel: EntityState<TFormModel>;\n settings: EntityState<SearchFilterSettings>;\n}\n\nexport type SearchFilterAction<TFormModel> =\n | ReducerIdGateAction<ValueByIdAction<boolean>>\n | ReducerIdGateAction<EntityAction<TFormModel>>\n | ReducerIdGateAction<EntityAction<SearchFilterSettings>>;\n\nexport const createSearchFilterInitialState = <TFormModel>(\n initialFormModel: TFormModel\n): SearchFilterState<TFormModel> => ({\n settings: {\n open: false,\n },\n formModel: initialFormModel,\n expandedSections: { values: {} },\n});\n\nexport const createSearchFilterReducer = <TFormModel>(\n reducerId: string,\n initialState: SearchFilterState<TFormModel>\n) =>\n combineReducers({\n expandedSections: reducerIdGate(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdReducer<boolean>(initialState.expandedSections)\n ),\n formModel: reducerIdGate(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityReducer<TFormModel>(initialState.formModel)\n ),\n settings: reducerIdGate(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityReducer<SearchFilterSettings>(initialState.settings)\n ),\n });\n\nexport interface SearchFilterActions<TFormModel, TSectionKey extends string> {\n openFilters: () => SearchFilterAction<TFormModel>;\n closeFilters: () => SearchFilterAction<TFormModel>;\n setFormModelFields: (\n fields: Partial<TFormModel>\n ) => SearchFilterAction<TFormModel>;\n clearFormModel: () => SearchFilterAction<TFormModel>;\n expandSection: (section: TSectionKey) => SearchFilterAction<TFormModel>;\n collapseSection: (section: TSectionKey) => SearchFilterAction<TFormModel>;\n setSectionExpanded: (\n section: TSectionKey,\n expanded: boolean\n ) => SearchFilterAction<TFormModel>;\n clearExpandedSections: () => SearchFilterAction<TFormModel>;\n}\n\nexport const createSearchFilterActions = <\n TFormModel,\n TSectionKey extends string\n>(\n reducerId: string,\n initialFormModel: TFormModel\n): SearchFilterActions<TFormModel, TSectionKey> => ({\n openFilters: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityActions<SearchFilterSettings>().setEntityFields({\n open: true,\n })\n ),\n closeFilters: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityActions<SearchFilterSettings>().setEntityFields({\n open: false,\n })\n ),\n setFormModelFields: (fields: Partial<TFormModel>) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityActions<TFormModel>().setEntityFields(fields)\n ),\n clearFormModel: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityActions<TFormModel>().setEntity(initialFormModel)\n ),\n expandSection: (section: TSectionKey) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, true)\n ),\n collapseSection: (section: TSectionKey) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, false)\n ),\n setSectionExpanded: (section: TSectionKey, expanded: boolean) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, expanded)\n ),\n clearExpandedSections: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().clearAllValues()\n ),\n});\n\nexport const getReducerIdFor = (\n reducerId: string,\n reducerIdSuffix: keyof SearchFilterState<unknown>\n): string => `${reducerId}.${reducerIdSuffix}`;\n","import {\n createSearchFilterActions,\n createSearchFilterReducer,\n SearchFilterState,\n} from \"../redux/SearchFilterRedux\";\nimport { useReducer, useState } from \"react\";\n\nexport const useLocalSearchFilterState = <\n TFormModel,\n TSectionKey extends string\n>(\n initialState: SearchFilterState<TFormModel>\n) => {\n const [reducer] = useState(() =>\n createSearchFilterReducer<TFormModel>(\"local\", initialState)\n );\n\n const [actions] = useState(() =>\n createSearchFilterActions<TFormModel, TSectionKey>(\n \"local\",\n initialState.formModel\n )\n );\n\n const [state, dispatch] = useReducer(reducer, initialState);\n\n return {\n actions,\n state,\n dispatch,\n };\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport { useLocalSearchFilterState } from \"../../hooks/UseLocalSearchFilterState\";\nimport { SearchFilterContext } from \"./SearchFilterContext\";\nimport { createSearchFilterInitialState } from \"../../redux/SearchFilterRedux\";\n\ninterface SearchFilterLocalScopeProps<TFormModel> {\n initialFormModel: TFormModel;\n}\n\nexport const SearchFilterLocalStateContext = function SearchFilterLocalScope<\n TFormModel\n>({\n initialFormModel,\n children,\n}: PropsWithChildren<SearchFilterLocalScopeProps<TFormModel>>) {\n const { state, actions, dispatch } = useLocalSearchFilterState(\n createSearchFilterInitialState(initialFormModel)\n );\n\n return (\n <SearchFilterContext state={state} actions={actions} dispatch={dispatch}>\n {children}\n </SearchFilterContext>\n );\n};\n","import 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 { ReactNode, 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 children?: ReactNode;\n}\n\nexport const SearchFilterChips: React.FC<SearchFilterChipsProps> = ({\n children,\n disableClearAllButton = false,\n}) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const onClickClearAll = useCallback(\n () => dispatch(actions.clearFormModel()),\n [actions, dispatch]\n );\n\n return (\n <Row flexWrap={\"wrap\"}>\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(\n formModel[fieldName] as unknown as BooleanRecord,\n options\n ),\n onClickRemoveOnChip: createOnClickRemoveOnChipForBooleanRecord(\n formModel,\n fieldName\n ),\n});\n\nexport const createChipsForBooleanRecord = (\n booleanRecord: BooleanRecord,\n options?: BooleanRecordOptions\n): Array<SearchFilterSectionChipModel> =>\n truthyKeysAsList(booleanRecord).map((key) => {\n const option = options?.find((o) => o.value === key);\n return { value: key, label: option?.label ?? key };\n });\n\nexport const createOnClickRemoveOnChipForBooleanRecord = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, BooleanRecord>\n>(\n formModel: TFormModel,\n fieldName: TField\n): SearchFilterSectionOnClickRemoveOnChip<TFormModel> => {\n return ({ setFormModelFields, value }) => {\n const newRecord = { ...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, Row } from \"@stenajs-webui/core\";\nimport {\n CheckboxWithLabel,\n ValueAndOnValueChangeProps,\n} 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} gap={1} spacing={1}>\n {options?.map((d) => (\n <Row key={d.value} alignItems={\"center\"}>\n <CheckboxWithLabel\n tabIndex={-1}\n value={value?.[d.value]}\n label={d.label}\n onValueChange={(v) =>\n onValueChange?.({\n ...value,\n [d.value]: v,\n })\n }\n />\n </Row>\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 {\n SearchFilterSectionChipModel,\n SearchFilterSectionOnClickRemoveOnChip,\n} from \"../../config/SearchFilterConfig\";\nimport { PickByValue } from \"@stenajs-webui/core\";\nimport { SectionChipsProps } from \"../../features/chips/SectionChips\";\n\nexport const createChipsPropsForDateRange = <\n TFormModel,\n TSectionKey extends string,\n TField extends keyof PickByValue<TFormModel, string | undefined>\n>(\n formModel: TFormModel,\n startDateFieldName: TField,\n endDateFieldName: TField\n): Pick<\n SectionChipsProps<TFormModel, TSectionKey>,\n \"chips\" | \"onClickRemoveOnChip\"\n> => ({\n chips: createChipsForDateRange(\n formModel[startDateFieldName] as unknown as string | undefined,\n formModel[endDateFieldName] as unknown as string | undefined\n ),\n onClickRemoveOnChip: createOnClickRemoveOnChipForDateRange(\n startDateFieldName,\n endDateFieldName\n ),\n});\n\nexport const createChipsForDateRange = (\n startDate: string | undefined,\n endDate: string | undefined\n): Array<SearchFilterSectionChipModel> => {\n if (!startDate && !endDate) {\n return [];\n }\n return [\n { value: \"dateRange\", label: `${startDate ?? \"\"} - ${endDate ?? \"\"}` },\n ];\n};\n\nexport const createOnClickRemoveOnChipForDateRange = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, string | undefined>\n>(\n startDateFieldName: TField,\n endDateFieldName: TField\n): SearchFilterSectionOnClickRemoveOnChip<TFormModel> => {\n return ({ setFormModelFields }) => {\n setFormModelFields({\n [startDateFieldName]: undefined,\n [endDateFieldName]: undefined,\n } as unknown as Partial<TFormModel>);\n };\n};\n","import { PickByValue } from \"@stenajs-webui/core\";\nimport { DateRangeCalendarSectionProps } from \"./components/DateRangeCalendarSection\";\n\nexport const createDateRangeSectionProps = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, string | undefined>,\n TSectionKey extends string\n>(\n formModel: TFormModel,\n startDateFieldName: TField,\n endDateFieldName: TField\n): Pick<\n DateRangeCalendarSectionProps<TFormModel, TSectionKey>,\n \"value\" | \"onValueChange\"\n> => ({\n value: {\n startDate: formModel[startDateFieldName] as unknown as string | undefined,\n endDate: formModel[endDateFieldName] as unknown as string | undefined,\n },\n onValueChange: (value, { dispatch, actions }) => {\n const fields: Partial<TFormModel> = {\n [startDateFieldName]: value.startDate,\n [endDateFieldName]: value.endDate,\n } as any;\n dispatch(actions.setFormModelFields(fields));\n },\n});\n","import {\n DateRange,\n DateRangeCalendar,\n DateRangeCalendarProps,\n DateRangeFocusedInput,\n dateRangeToStrings,\n DateStringRange,\n stringsToDateRange,\n} from \"@stenajs-webui/calendar\";\nimport * as React from \"react\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { Box } from \"@stenajs-webui/core\";\nimport {\n SearchFilterSection,\n SearchFilterSectionProps,\n} from \"../../../components/SearchFilterSection\";\nimport {\n SearchFilterActions,\n SearchFilterDispatch,\n} from \"../../../redux/SearchFilterRedux\";\nimport { useSearchFilterDispatch } from \"../../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../../context/SearchFilterActionsContext\";\n\nexport interface DateRangeCalendarSectionProps<\n TFormModel,\n TSectionKey extends string\n> extends Omit<\n SearchFilterSectionProps<TSectionKey>,\n \"label\" | \"onRetry\" | \"error\" | \"loading\"\n >,\n Omit<\n DateRangeCalendarProps<{}>,\n \"value\" | \"onValueChange\" | \"focusedInput\" | \"setFocusedInput\"\n > {\n value: DateStringRange;\n onValueChange: (\n value: DateStringRange,\n options: SetDateOptions<TFormModel, TSectionKey>\n ) => void;\n label?: string;\n}\n\nexport interface SetDateOptions<TFormModel, TSectionKey extends string> {\n dispatch: SearchFilterDispatch<TFormModel>;\n actions: SearchFilterActions<TFormModel, TSectionKey>;\n}\n\nexport const DateRangeCalendarSection = <\n TFormModel,\n TSectionKey extends string\n>({\n value,\n onValueChange,\n sectionId,\n contentRight,\n disableContentPadding,\n label,\n leftIcon,\n ...dateRangeCalendarProps\n}: DateRangeCalendarSectionProps<TFormModel, TSectionKey>) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions<TFormModel, TSectionKey>();\n\n const options = useMemo<SetDateOptions<TFormModel, TSectionKey>>(\n () => ({ dispatch, actions }),\n [actions, dispatch]\n );\n const [focusedInput, setFocusedInput] =\n useState<DateRangeFocusedInput>(\"startDate\");\n\n const dateRangeValue = useMemo(() => stringsToDateRange(value), [value]);\n\n const onValueChangeHandler = useCallback(\n (value: DateRange) => {\n onValueChange(dateRangeToStrings(value), options);\n },\n [onValueChange, options]\n );\n\n return (\n <SearchFilterSection\n label={label}\n leftIcon={leftIcon}\n sectionId={sectionId}\n contentRight={contentRight}\n disableContentPadding={disableContentPadding}\n >\n <Box flex={1} alignItems={\"center\"}>\n <Box background={\"white\"} indent>\n <DateRangeCalendar\n setFocusedInput={setFocusedInput}\n focusedInput={focusedInput}\n value={dateRangeValue}\n onValueChange={onValueChangeHandler}\n {...dateRangeCalendarProps}\n />\n </Box>\n </Box>\n </SearchFilterSection>\n );\n};\n"],"names":["SearchFilterPanelHeader","onRequestClose","header","contentRight","Spacing","jsxs","Row","jsx","Space","Heading","FlatButton","stenaTimes","SearchFilterStateContext","createContext","useSearchFilterState","c","useContext","SearchFilterDispatchContext","useSearchFilterDispatch","SearchFilterActionsContext","useSearchFilterActions","SearchFilterDrawer","children","headerContentRight","drawerProps","open","dispatch","actions","closeDrawer","useCallback","Drawer","Column","cssColor","Box","SearchFilterButton","label","leftIcon","stenaSlidersMini","onClickButton","SecondaryButton","SearchFilterSection","sectionId","loading","error","onRetry","disableContentPadding","state","expanded","_a","onClickLabel","activeLabel","formatColumnIdToHeaderCellLabel","Fragment","MenuButton","Spinner","Banner","columnId","upperFirst","lowerCase","StickyFooter","boxProps","SearchFilterModelContext","useSearchFilterModel","SearchFilterContext","createSearchFilterInitialState","initialFormModel","createSearchFilterReducer","reducerId","initialState","combineReducers","reducerIdGate","getReducerIdFor","createValueByIdReducer","createEntityReducer","createSearchFilterActions","reducerIdGateAction","createEntityActions","fields","section","createValueByIdActions","reducerIdSuffix","useLocalSearchFilterState","reducer","useState","useReducer","SearchFilterLocalStateContext","ChipSpacer","styled","SearchFilterChips","disableClearAllButton","onClickClearAll","EmptyChip","Chip","SearchFilterChip","value","onClickRemove","setFormModelFields","onClickRemoveHandler","SectionChips","chips","emptyChipLabel","onClickRemoveOnChip","createChipsPropsForBooleanRecord","formModel","fieldName","options","createChipsForBooleanRecord","createOnClickRemoveOnChipForBooleanRecord","booleanRecord","truthyKeysAsList","key","option","o","newRecord","SimpleCheckboxListSection","onValueChange","sectionProps","d","CheckboxWithLabel","v","ChipMultiSelectSection","noneSelectedLabel","text","setText","listValue","useMemo","filteredOptions","p","onValueChangeInternal","createBooleanRecordFromValue","ChipMultiSelect","sum","item","createChipsPropsForDateRange","startDateFieldName","endDateFieldName","createChipsForDateRange","createOnClickRemoveOnChipForDateRange","startDate","endDate","createDateRangeSectionProps","DateRangeCalendarSection","dateRangeCalendarProps","focusedInput","setFocusedInput","dateRangeValue","stringsToDateRange","onValueChangeHandler","dateRangeToStrings","DateRangeCalendar"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
(function(){"use strict";try{var e=document.createElement("style");e.appendChild(document.createTextNode("")),document.head.appendChild(e)}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
|
|
2
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("react"),Y=require("@stenajs-webui/modal"),J=require("@stenajs-webui/theme"),u=require("@stenajs-webui/core"),S=require("@stenajs-webui/elements"),
|
|
2
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("react/jsx-runtime"),a=require("react"),Y=require("@stenajs-webui/modal"),J=require("@stenajs-webui/theme"),u=require("@stenajs-webui/core"),S=require("@stenajs-webui/elements"),O=require("lodash"),Q=require("redux"),i=require("@stenajs-webui/redux"),U=require("@emotion/styled"),X=require("@stenajs-webui/forms"),Z=require("@stenajs-webui/select"),v=require("@stenajs-webui/calendar"),N=e=>e&&typeof e=="object"&&"default"in e?e:{default:e},ee=N(U),q=({onRequestClose:e,header:t="Filter",contentRight:n})=>r.jsx(u.Spacing,{children:r.jsxs(u.Row,{justifyContent:"space-between",alignItems:"center",height:"48px",children:[r.jsxs(u.Row,{children:[r.jsx(u.Space,{num:3}),r.jsx(u.Heading,{variant:"h4",children:t})]}),r.jsxs(u.Row,{gap:1,children:[n,r.jsx(S.FlatButton,{leftIcon:S.stenaTimes,onClick:e,variant:"danger"}),r.jsx(u.Space,{num:.5})]})]})}),y=a.createContext(null),M=()=>{const e=a.useContext(y);if(!e)throw new Error("Missing search filter context, wrap components with SearchFilterContext component.");return e},k=a.createContext(null),g=()=>{const e=a.useContext(k);if(!e)throw new Error("Missing search filter dispatch context.");return e},A=a.createContext(null),m=()=>{const e=a.useContext(A);if(!e)throw new Error("Missing search filter actions context.");return e},te=({children:e,header:t,headerContentRight:n,...c})=>{const{settings:{open:s}}=M(),o=g(),l=m(),h=a.useCallback(()=>{o(l.closeFilters())},[l,o]);return r.jsx(Y.Drawer,{isOpen:s,onRequestClose:h,...c,children:r.jsxs(u.Column,{height:"100%",borderRadius:"var(--swui-border-radius)",background:J.cssColor("--lhds-color-ui-50"),children:[r.jsx(q,{onRequestClose:h,header:t,contentRight:n}),r.jsx(u.Box,{spacing:1,indent:1,gap:1,children:e})]})})},ne=({label:e="Filters",leftIcon:t=S.stenaSlidersMini})=>{const n=g(),c=m(),s=a.useCallback(()=>{n(c.openFilters())},[c,n]);return r.jsx(S.SecondaryButton,{label:e,leftIcon:t,onClick:s})},R=function({sectionId:t,label:n,loading:c,error:s,onRetry:o,disableContentPadding:l,children:h,leftIcon:C,contentRight:F}){var E;const d=M(),j=g(),f=m(),p=(E=d.expandedSections.values[t])!=null?E:!1,w=a.useCallback(()=>{j(f.setSectionExpanded(t,!p))},[f,j,p,t]),b=n!=null?n:I(t);return r.jsxs(r.Fragment,{children:[r.jsx(S.MenuButton,{label:b,leftIcon:C,expandable:!0,expanded:p,selected:p,onClick:w,right:F,children:c?r.jsx(u.Row,{spacing:!0,justifyContent:"center",flex:1,children:r.jsx(S.Spinner,{size:"small"})}):s?r.jsx(S.Banner,{variant:"error",text:s,contentRight:o?r.jsx(S.FlatButton,{label:"Retry",onClick:o}):null}):h}),p&&r.jsx(u.Space,{})]})},I=e=>O.upperFirst(O.lowerCase(e)),re=({children:e,...t})=>r.jsx(u.Column,{style:{marginTop:"auto"},justifyContent:"center",spacing:2,indent:!0,shadow:"popover",zIndex:1,...t,children:e}),B=a.createContext(null),ce=()=>{const e=a.useContext(B);if(!e)throw new Error("Missing search filter context, wrap components with SearchFilterContext component.");return e},P=function({state:t,dispatch:n,actions:c,children:s}){return r.jsx(k.Provider,{value:n,children:r.jsx(A.Provider,{value:c,children:r.jsx(y.Provider,{value:t,children:r.jsx(B.Provider,{value:t.formModel,children:s})})})})},D=e=>({settings:{open:!1},formModel:e,expandedSections:{values:{}}}),G=(e,t)=>Q.combineReducers({expandedSections:i.reducerIdGate(x(e,"expandedSections"),i.createValueByIdReducer(t.expandedSections)),formModel:i.reducerIdGate(x(e,"formModel"),i.createEntityReducer(t.formModel)),settings:i.reducerIdGate(x(e,"settings"),i.createEntityReducer(t.settings))}),V=(e,t)=>({openFilters:()=>i.reducerIdGateAction(x(e,"settings"),i.createEntityActions().setEntityFields({open:!0})),closeFilters:()=>i.reducerIdGateAction(x(e,"settings"),i.createEntityActions().setEntityFields({open:!1})),setFormModelFields:n=>i.reducerIdGateAction(x(e,"formModel"),i.createEntityActions().setEntityFields(n)),clearFormModel:()=>i.reducerIdGateAction(x(e,"formModel"),i.createEntityActions().setEntity(t)),expandSection:n=>i.reducerIdGateAction(x(e,"expandedSections"),i.createValueByIdActions().setValue(n,!0)),collapseSection:n=>i.reducerIdGateAction(x(e,"expandedSections"),i.createValueByIdActions().setValue(n,!1)),setSectionExpanded:(n,c)=>i.reducerIdGateAction(x(e,"expandedSections"),i.createValueByIdActions().setValue(n,c)),clearExpandedSections:()=>i.reducerIdGateAction(x(e,"expandedSections"),i.createValueByIdActions().clearAllValues())}),x=(e,t)=>`${e}.${t}`,H=e=>{const[t]=a.useState(()=>G("local",e)),[n]=a.useState(()=>V("local",e.formModel)),[c,s]=a.useReducer(t,e);return{actions:n,state:c,dispatch:s}},se=function({initialFormModel:t,children:n}){const{state:c,actions:s,dispatch:o}=H(D(t));return r.jsx(P,{state:c,actions:s,dispatch:o,children:n})},L=ee.default.div`
|
|
3
3
|
padding: calc(var(--swui-metrics-spacing) / 2)
|
|
4
4
|
calc(var(--swui-metrics-indent) / 2);
|
|
5
5
|
`,oe=({children:e,disableClearAllButton:t=!1})=>{const n=g(),c=m(),s=a.useCallback(()=>n(c.clearFormModel()),[c,n]);return r.jsxs(u.Row,{flexWrap:"wrap",children:[e,!t&&r.jsx(L,{children:r.jsx(S.FlatButton,{size:"small",label:"Clear all",onClick:s})})]})},T=function({label:t,sectionId:n}){const c=g(),s=m(),o=a.useCallback(()=>{c(s.clearExpandedSections()),c(s.expandSection(n)),c(s.openFilters())},[s,c,n]);return r.jsx(L,{children:r.jsx(S.Chip,{label:t,variant:"secondary",onClick:o})})},_=function({sectionId:t,label:n,value:c,onClickRemove:s}){const o=g(),l=m(),h=a.useCallback(d=>o(l.setFormModelFields(d)),[o,l]),C=a.useCallback(()=>{s==null||s({value:c,setFormModelFields:h})},[s,h,c]),F=a.useCallback(()=>{o(l.clearExpandedSections()),o(l.expandSection(t)),o(l.openFilters())},[l,o,t]);return r.jsx(L,{children:r.jsx(S.Chip,{label:n!=null?n:t,onClick:F,onClickRemove:s?C:void 0})})},ae=function({sectionId:t,chips:n,emptyChipLabel:c,onClickRemoveOnChip:s}){return n!=null&&n.length?r.jsx(r.Fragment,{children:n.map(({label:o,value:l})=>r.jsx(_,{label:o!=null?o:t,sectionId:t,onClickRemove:s,value:l},l))}):c?r.jsx(T,{sectionId:t,label:c}):null},ie=(e,t,n)=>({chips:$(e[t],n),onClickRemoveOnChip:z(e,t)}),$=(e,t)=>u.truthyKeysAsList(e).map(n=>{var s;const c=t==null?void 0:t.find(o=>o.value===n);return{value:n,label:(s=c==null?void 0:c.label)!=null?s:n}}),z=(e,t)=>({setFormModelFields:n,value:c})=>{const s={...e[t]};s[c]=!1,n({[t]:s})},le=({options:e,value:t,onValueChange:n,...c})=>r.jsx(R,{disableContentPadding:!0,...c,children:r.jsx(u.Column,{maxHeight:"400px",overflowY:"auto",flex:1,gap:1,spacing:1,children:e==null?void 0:e.map(s=>r.jsx(u.Row,{alignItems:"center",children:r.jsx(X.CheckboxWithLabel,{tabIndex:-1,value:t==null?void 0:t[s.value],label:s.label,onValueChange:o=>n==null?void 0:n({...t,[s.value]:o})})},s.value))})}),ue=({options:e,value:t,noneSelectedLabel:n,onValueChange:c,...s})=>{const[o,l]=a.useState(""),h=a.useMemo(()=>t?u.truthyKeysAsList(t).map(d=>{var f;const j=e==null?void 0:e.find(p=>p.value===d);return{value:d,label:(f=j==null?void 0:j.label)!=null?f:d}}):[],[e,t]),C=a.useMemo(()=>e==null?void 0:e.filter(d=>d.value.toLocaleLowerCase().indexOf(o.toLocaleLowerCase())>-1||d.label.toLocaleLowerCase().indexOf(o.toLocaleLowerCase())>-1),[e,o]),F=a.useCallback(d=>{c==null||c(de(d))},[c]);return r.jsx(R,{...s,children:r.jsx(Z.ChipMultiSelect,{options:C,value:h,onValueChange:F,inputValue:o,noneSelectedLabel:n,onInputChange:l,closeMenuOnSelect:!1})})},de=e=>e.reduce((t,n)=>(t[n.value]=!0,t),{}),he=(e,t,n)=>({chips:K(e[t],e[n]),onClickRemoveOnChip:W(t,n)}),K=(e,t)=>!e&&!t?[]:[{value:"dateRange",label:`${e!=null?e:""} - ${t!=null?t:""}`}],W=(e,t)=>({setFormModelFields:n})=>{n({[e]:void 0,[t]:void 0})},xe=(e,t,n)=>({value:{startDate:e[t],endDate:e[n]},onValueChange:(c,{dispatch:s,actions:o})=>{const l={[t]:c.startDate,[n]:c.endDate};s(o.setFormModelFields(l))}}),Se=({value:e,onValueChange:t,sectionId:n,contentRight:c,disableContentPadding:s,label:o,leftIcon:l,...h})=>{const C=g(),F=m(),d=a.useMemo(()=>({dispatch:C,actions:F}),[F,C]),[j,f]=a.useState("startDate"),p=a.useMemo(()=>v.stringsToDateRange(e),[e]),w=a.useCallback(b=>{t(v.dateRangeToStrings(b),d)},[t,d]);return r.jsx(R,{label:o,leftIcon:l,sectionId:n,contentRight:c,disableContentPadding:s,children:r.jsx(u.Box,{flex:1,alignItems:"center",children:r.jsx(u.Box,{background:"white",indent:!0,children:r.jsx(v.DateRangeCalendar,{setFocusedInput:f,focusedInput:j,value:p,onValueChange:w,...h})})})})};exports.ChipMultiSelectSection=ue;exports.DateRangeCalendarSection=Se;exports.EmptyChip=T;exports.SearchFilterActionsContext=A;exports.SearchFilterButton=ne;exports.SearchFilterChip=_;exports.SearchFilterChips=oe;exports.SearchFilterContext=P;exports.SearchFilterDispatchContext=k;exports.SearchFilterDrawer=te;exports.SearchFilterLocalStateContext=se;exports.SearchFilterModelContext=B;exports.SearchFilterPanelHeader=q;exports.SearchFilterSection=R;exports.SearchFilterStateContext=y;exports.SectionChips=ae;exports.SimpleCheckboxListSection=le;exports.StickyFooter=re;exports.createChipsForBooleanRecord=$;exports.createChipsForDateRange=K;exports.createChipsPropsForBooleanRecord=ie;exports.createChipsPropsForDateRange=he;exports.createDateRangeSectionProps=xe;exports.createOnClickRemoveOnChipForBooleanRecord=z;exports.createOnClickRemoveOnChipForDateRange=W;exports.createSearchFilterActions=V;exports.createSearchFilterInitialState=D;exports.createSearchFilterReducer=G;exports.formatColumnIdToHeaderCellLabel=I;exports.getReducerIdFor=x;exports.useLocalSearchFilterState=H;exports.useSearchFilterActions=m;exports.useSearchFilterDispatch=g;exports.useSearchFilterModel=ce;exports.useSearchFilterState=M;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/features/search-filter/components/SearchFilterPanelHeader.tsx","../src/features/search-filter/context/SearchFilterStateContext.ts","../src/features/search-filter/context/SearchFilterDispatchContext.ts","../src/features/search-filter/context/SearchFilterActionsContext.ts","../src/features/search-filter/components/SearchFilterDrawer.tsx","../src/features/search-filter/components/SearchFilterButton.tsx","../src/features/search-filter/components/SearchFilterSection.tsx","../src/features/search-filter/components/StickyFooter.tsx","../src/features/search-filter/context/SearchFilterModelContext.ts","../src/features/search-filter/components/context/SearchFilterContext.tsx","../src/features/search-filter/redux/SearchFilterRedux.ts","../src/features/search-filter/hooks/UseLocalSearchFilterState.ts","../src/features/search-filter/components/context/SearchFilterLocalStateContext.tsx","../src/features/search-filter/features/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 { ReactNode } from \"react\";\nimport { FlatButton, stenaTimes } from \"@stenajs-webui/elements\";\nimport { Heading, Row, Space, Spacing } from \"@stenajs-webui/core\";\n\ninterface SearchFilterPanelHeaderProps {\n onRequestClose: () => void;\n header?: string;\n contentRight?: ReactNode;\n}\n\nexport const SearchFilterPanelHeader: React.FC<\n SearchFilterPanelHeaderProps\n> = ({ onRequestClose, header = \"Filter\", contentRight }) => {\n return (\n <Spacing>\n <Row\n justifyContent={\"space-between\"}\n alignItems={\"center\"}\n height={\"48px\"}\n >\n <Row>\n <Space num={3} />\n <Heading variant={\"h4\"}>{header}</Heading>\n </Row>\n <Row gap={1}>\n {contentRight}\n <FlatButton\n leftIcon={stenaTimes}\n onClick={onRequestClose}\n variant={\"danger\"}\n />\n <Space num={0.5} />\n </Row>\n </Row>\n </Spacing>\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 { ReactNode, useCallback } from \"react\";\nimport { Drawer, DrawerProps } from \"@stenajs-webui/modal\";\nimport { cssColor } from \"@stenajs-webui/theme\";\nimport { Box, Column } from \"@stenajs-webui/core\";\nimport { SearchFilterPanelHeader } from \"./SearchFilterPanelHeader\";\nimport { useSearchFilterState } from \"../context/SearchFilterStateContext\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\n\ninterface SearchFilterDrawerProps\n extends Omit<DrawerProps, \"isOpen\" | \"onRequestClose\"> {\n header?: string;\n headerContentRight?: ReactNode;\n}\n\nexport const SearchFilterDrawer: React.FC<SearchFilterDrawerProps> = ({\n children,\n header,\n headerContentRight,\n ...drawerProps\n}) => {\n const {\n settings: { open },\n } = useSearchFilterState();\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const closeDrawer = useCallback(() => {\n dispatch(actions.closeFilters());\n }, [actions, dispatch]);\n\n return (\n <Drawer isOpen={open} onRequestClose={closeDrawer} {...drawerProps}>\n <Column\n height={\"100%\"}\n borderRadius={\"var(--swui-border-radius)\"}\n background={cssColor(\"--lhds-color-ui-50\")}\n >\n <SearchFilterPanelHeader\n onRequestClose={closeDrawer}\n header={header}\n contentRight={headerContentRight}\n />\n <Box spacing={1} indent={1} gap={1}>\n {children}\n </Box>\n </Column>\n </Drawer>\n );\n};\n","import { SecondaryButton, stenaSlidersMini } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\nimport { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\n\ninterface SearchFilterDrawerButtonProps {\n label?: string;\n leftIcon?: IconDefinition;\n}\n\nexport const SearchFilterButton: React.FC<SearchFilterDrawerButtonProps> = ({\n label = \"Filters\",\n leftIcon = stenaSlidersMini,\n}) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const onClickButton = useCallback(() => {\n dispatch(actions.openFilters());\n }, [actions, dispatch]);\n\n return (\n <SecondaryButton\n label={label}\n leftIcon={leftIcon}\n onClick={onClickButton}\n />\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren, useCallback } from \"react\";\nimport { Row, Space } from \"@stenajs-webui/core\";\nimport { lowerCase, upperFirst } from \"lodash\";\nimport {\n Banner,\n FlatButton,\n MenuButton,\n Spinner,\n} from \"@stenajs-webui/elements\";\nimport { useSearchFilterState } from \"../context/SearchFilterStateContext\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\nimport { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\n\nexport interface SearchFilterSectionProps<TSectionKey extends string> {\n sectionId: TSectionKey;\n label?: string;\n leftIcon?: IconDefinition;\n contentRight?: React.ReactNode;\n disableContentPadding?: boolean;\n loading?: boolean;\n error?: string;\n onRetry?: () => void;\n}\n\nexport const SearchFilterSection = function SearchFilterSection<\n TSectionKey extends string\n>({\n sectionId,\n label,\n loading,\n error,\n onRetry,\n disableContentPadding,\n children,\n leftIcon,\n contentRight,\n}: PropsWithChildren<SearchFilterSectionProps<TSectionKey>>) {\n const state = useSearchFilterState();\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const expanded = state.expandedSections.values[sectionId] ?? false;\n\n const onClickLabel = useCallback(() => {\n dispatch(actions.setSectionExpanded(sectionId, !expanded));\n }, [actions, dispatch, expanded, sectionId]);\n\n const activeLabel = label ?? formatColumnIdToHeaderCellLabel(sectionId);\n\n return (\n <>\n <MenuButton\n label={activeLabel}\n leftIcon={leftIcon}\n expandable\n expanded={expanded}\n selected={expanded}\n onClick={onClickLabel}\n right={contentRight}\n >\n {loading ? (\n <Row spacing justifyContent={\"center\"} flex={1}>\n <Spinner size={\"small\"} />\n </Row>\n ) : error ? (\n <Banner\n variant={\"error\"}\n text={error}\n contentRight={\n onRetry ? <FlatButton label={\"Retry\"} onClick={onRetry} /> : null\n }\n />\n ) : disableContentPadding ? (\n children\n ) : (\n children\n )}\n </MenuButton>\n {expanded && <Space />}\n </>\n );\n};\n\nexport const formatColumnIdToHeaderCellLabel = (columnId: string): string =>\n upperFirst(lowerCase(columnId));\n","import { BoxProps, Column } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\n\nexport interface StickySearchButtonProps extends Pick<BoxProps, \"gap\"> {\n children?: ReactNode;\n}\n\nexport const StickyFooter: React.FC<StickySearchButtonProps> = ({\n children,\n ...boxProps\n}) => {\n return (\n <Column\n style={{ marginTop: \"auto\" }}\n justifyContent={\"center\"}\n spacing={2}\n indent\n shadow={\"popover\"}\n zIndex={1}\n {...boxProps}\n >\n {children}\n </Column>\n );\n};\n","import { createContext, useContext } from \"react\";\n\nexport const SearchFilterModelContext = createContext<unknown>(null as unknown);\n\nexport const useSearchFilterModel = <TFormModel>(): TFormModel => {\n const c = useContext(SearchFilterModelContext);\n if (!c) {\n throw new Error(\n \"Missing search filter context, wrap components with SearchFilterContext component.\"\n );\n }\n return c as TFormModel;\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport {\n SearchFilterActions,\n SearchFilterDispatch,\n SearchFilterState,\n} from \"../../redux/SearchFilterRedux\";\nimport { SearchFilterDispatchContext } from \"../../context/SearchFilterDispatchContext\";\nimport { SearchFilterActionsContext } from \"../../context/SearchFilterActionsContext\";\nimport { SearchFilterStateContext } from \"../../context/SearchFilterStateContext\";\nimport { SearchFilterModelContext } from \"../../context/SearchFilterModelContext\";\n\ninterface SearchFilterScopeProps<TFormModel, TSectionKey extends string> {\n state: SearchFilterState<TFormModel>;\n dispatch: SearchFilterDispatch<TFormModel>;\n actions: SearchFilterActions<TFormModel, TSectionKey>;\n}\n\nexport const SearchFilterContext = function SearchFilterScope<\n TFormModel,\n TSectionKey extends string\n>({\n state,\n dispatch,\n actions,\n children,\n}: PropsWithChildren<SearchFilterScopeProps<TFormModel, TSectionKey>>) {\n return (\n <SearchFilterDispatchContext.Provider\n value={dispatch as SearchFilterDispatch<unknown>}\n >\n <SearchFilterActionsContext.Provider value={actions}>\n <SearchFilterStateContext.Provider value={state}>\n <SearchFilterModelContext.Provider value={state.formModel}>\n {children}\n </SearchFilterModelContext.Provider>\n </SearchFilterStateContext.Provider>\n </SearchFilterActionsContext.Provider>\n </SearchFilterDispatchContext.Provider>\n );\n};\n","import { combineReducers } from \"redux\";\nimport {\n createEntityActions,\n createEntityReducer,\n createValueByIdActions,\n createValueByIdReducer,\n EntityAction,\n EntityState,\n reducerIdGate,\n reducerIdGateAction,\n ReducerIdGateAction,\n ValueByIdAction,\n ValueByIdState,\n} from \"@stenajs-webui/redux\";\nimport { Dispatch } from \"react\";\n\nexport interface SearchFilterSettings {\n open: boolean;\n}\n\nexport type SearchFilterDispatch<TFormModel> = Dispatch<\n SearchFilterAction<TFormModel>\n>;\n\nexport interface SearchFilterState<TFormModel> {\n expandedSections: ValueByIdState<boolean>;\n formModel: EntityState<TFormModel>;\n settings: EntityState<SearchFilterSettings>;\n}\n\nexport type SearchFilterAction<TFormModel> =\n | ReducerIdGateAction<ValueByIdAction<boolean>>\n | ReducerIdGateAction<EntityAction<TFormModel>>\n | ReducerIdGateAction<EntityAction<SearchFilterSettings>>;\n\nexport const createSearchFilterInitialState = <TFormModel>(\n initialFormModel: TFormModel\n): SearchFilterState<TFormModel> => ({\n settings: {\n open: false,\n },\n formModel: initialFormModel,\n expandedSections: { values: {} },\n});\n\nexport const createSearchFilterReducer = <TFormModel>(\n reducerId: string,\n initialState: SearchFilterState<TFormModel>\n) =>\n combineReducers({\n expandedSections: reducerIdGate(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdReducer<boolean>(initialState.expandedSections)\n ),\n formModel: reducerIdGate(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityReducer<TFormModel>(initialState.formModel)\n ),\n settings: reducerIdGate(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityReducer<SearchFilterSettings>(initialState.settings)\n ),\n });\n\nexport interface SearchFilterActions<TFormModel, TSectionKey extends string> {\n openFilters: () => SearchFilterAction<TFormModel>;\n closeFilters: () => SearchFilterAction<TFormModel>;\n setFormModelFields: (\n fields: Partial<TFormModel>\n ) => SearchFilterAction<TFormModel>;\n clearFormModel: () => SearchFilterAction<TFormModel>;\n expandSection: (section: TSectionKey) => SearchFilterAction<TFormModel>;\n collapseSection: (section: TSectionKey) => SearchFilterAction<TFormModel>;\n setSectionExpanded: (\n section: TSectionKey,\n expanded: boolean\n ) => SearchFilterAction<TFormModel>;\n clearExpandedSections: () => SearchFilterAction<TFormModel>;\n}\n\nexport const createSearchFilterActions = <\n TFormModel,\n TSectionKey extends string\n>(\n reducerId: string,\n initialFormModel: TFormModel\n): SearchFilterActions<TFormModel, TSectionKey> => ({\n openFilters: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityActions<SearchFilterSettings>().setEntityFields({\n open: true,\n })\n ),\n closeFilters: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityActions<SearchFilterSettings>().setEntityFields({\n open: false,\n })\n ),\n setFormModelFields: (fields: Partial<TFormModel>) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityActions<TFormModel>().setEntityFields(fields)\n ),\n clearFormModel: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityActions<TFormModel>().setEntity(initialFormModel)\n ),\n expandSection: (section: TSectionKey) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, true)\n ),\n collapseSection: (section: TSectionKey) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, false)\n ),\n setSectionExpanded: (section: TSectionKey, expanded: boolean) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, expanded)\n ),\n clearExpandedSections: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().clearAllValues()\n ),\n});\n\nexport const getReducerIdFor = (\n reducerId: string,\n reducerIdSuffix: keyof SearchFilterState<unknown>\n): string => `${reducerId}.${reducerIdSuffix}`;\n","import {\n createSearchFilterActions,\n createSearchFilterReducer,\n SearchFilterState,\n} from \"../redux/SearchFilterRedux\";\nimport { useReducer, useState } from \"react\";\n\nexport const useLocalSearchFilterState = <\n TFormModel,\n TSectionKey extends string\n>(\n initialState: SearchFilterState<TFormModel>\n) => {\n const [reducer] = useState(() =>\n createSearchFilterReducer<TFormModel>(\"local\", initialState)\n );\n\n const [actions] = useState(() =>\n createSearchFilterActions<TFormModel, TSectionKey>(\n \"local\",\n initialState.formModel\n )\n );\n\n const [state, dispatch] = useReducer(reducer, initialState);\n\n return {\n actions,\n state,\n dispatch,\n };\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport { useLocalSearchFilterState } from \"../../hooks/UseLocalSearchFilterState\";\nimport { SearchFilterContext } from \"./SearchFilterContext\";\nimport { createSearchFilterInitialState } from \"../../redux/SearchFilterRedux\";\n\ninterface SearchFilterLocalScopeProps<TFormModel> {\n initialFormModel: TFormModel;\n}\n\nexport const SearchFilterLocalStateContext = function SearchFilterLocalScope<\n TFormModel\n>({\n initialFormModel,\n children,\n}: PropsWithChildren<SearchFilterLocalScopeProps<TFormModel>>) {\n const { state, actions, dispatch } = useLocalSearchFilterState(\n createSearchFilterInitialState(initialFormModel)\n );\n\n return (\n <SearchFilterContext state={state} actions={actions} dispatch={dispatch}>\n {children}\n </SearchFilterContext>\n );\n};\n","import 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 { ReactNode, 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 children?: ReactNode;\n}\n\nexport const SearchFilterChips: React.FC<SearchFilterChipsProps> = ({\n children,\n disableClearAllButton = false,\n}) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const onClickClearAll = useCallback(\n () => dispatch(actions.clearFormModel()),\n [actions, dispatch]\n );\n\n return (\n <Row flexWrap={\"wrap\"}>\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(\n formModel[fieldName] as unknown as BooleanRecord,\n options\n ),\n onClickRemoveOnChip: createOnClickRemoveOnChipForBooleanRecord(\n formModel,\n fieldName\n ),\n});\n\nexport const createChipsForBooleanRecord = (\n booleanRecord: BooleanRecord,\n options?: BooleanRecordOptions\n): Array<SearchFilterSectionChipModel> =>\n truthyKeysAsList(booleanRecord).map((key) => {\n const option = options?.find((o) => o.value === key);\n return { value: key, label: option?.label ?? key };\n });\n\nexport const createOnClickRemoveOnChipForBooleanRecord = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, BooleanRecord>\n>(\n formModel: TFormModel,\n fieldName: TField\n): SearchFilterSectionOnClickRemoveOnChip<TFormModel> => {\n return ({ setFormModelFields, value }) => {\n const newRecord = { ...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, Row } from \"@stenajs-webui/core\";\nimport {\n CheckboxWithLabel,\n ValueAndOnValueChangeProps,\n} 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} gap={1} spacing={1}>\n {options?.map((d) => (\n <Row key={d.value} alignItems={\"center\"}>\n <CheckboxWithLabel\n tabIndex={-1}\n value={value?.[d.value]}\n label={d.label}\n onValueChange={(v) =>\n onValueChange?.({\n ...value,\n [d.value]: v,\n })\n }\n />\n </Row>\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 {\n SearchFilterSectionChipModel,\n SearchFilterSectionOnClickRemoveOnChip,\n} from \"../../config/SearchFilterConfig\";\nimport { PickByValue } from \"@stenajs-webui/core\";\nimport { SectionChipsProps } from \"../../features/chips/SectionChips\";\n\nexport const createChipsPropsForDateRange = <\n TFormModel,\n TSectionKey extends string,\n TField extends keyof PickByValue<TFormModel, string | undefined>\n>(\n formModel: TFormModel,\n startDateFieldName: TField,\n endDateFieldName: TField\n): Pick<\n SectionChipsProps<TFormModel, TSectionKey>,\n \"chips\" | \"onClickRemoveOnChip\"\n> => ({\n chips: createChipsForDateRange(\n formModel[startDateFieldName] as unknown as string | undefined,\n formModel[endDateFieldName] as unknown as string | undefined\n ),\n onClickRemoveOnChip: createOnClickRemoveOnChipForDateRange(\n startDateFieldName,\n endDateFieldName\n ),\n});\n\nexport const createChipsForDateRange = (\n startDate: string | undefined,\n endDate: string | undefined\n): Array<SearchFilterSectionChipModel> => {\n if (!startDate && !endDate) {\n return [];\n }\n return [\n { value: \"dateRange\", label: `${startDate ?? \"\"} - ${endDate ?? \"\"}` },\n ];\n};\n\nexport const createOnClickRemoveOnChipForDateRange = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, string | undefined>\n>(\n startDateFieldName: TField,\n endDateFieldName: TField\n): SearchFilterSectionOnClickRemoveOnChip<TFormModel> => {\n return ({ setFormModelFields }) => {\n setFormModelFields({\n [startDateFieldName]: undefined,\n [endDateFieldName]: undefined,\n } as unknown as Partial<TFormModel>);\n };\n};\n","import { PickByValue } from \"@stenajs-webui/core\";\nimport { DateRangeCalendarSectionProps } from \"./components/DateRangeCalendarSection\";\n\nexport const createDateRangeSectionProps = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, string | undefined>,\n TSectionKey extends string\n>(\n formModel: TFormModel,\n startDateFieldName: TField,\n endDateFieldName: TField\n): Pick<\n DateRangeCalendarSectionProps<TFormModel, TSectionKey>,\n \"value\" | \"onValueChange\"\n> => ({\n value: {\n startDate: formModel[startDateFieldName] as unknown as string | undefined,\n endDate: formModel[endDateFieldName] as unknown as string | undefined,\n },\n onValueChange: (value, { dispatch, actions }) => {\n const fields: Partial<TFormModel> = {\n [startDateFieldName]: value.startDate,\n [endDateFieldName]: value.endDate,\n } as any;\n dispatch(actions.setFormModelFields(fields));\n },\n});\n","import {\n DateRange,\n DateRangeCalendar,\n DateRangeCalendarProps,\n DateRangeFocusedInput,\n dateRangeToStrings,\n DateStringRange,\n stringsToDateRange,\n} from \"@stenajs-webui/calendar\";\nimport * as React from \"react\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { Box } from \"@stenajs-webui/core\";\nimport {\n SearchFilterSection,\n SearchFilterSectionProps,\n} from \"../../../components/SearchFilterSection\";\nimport {\n SearchFilterActions,\n SearchFilterDispatch,\n} from \"../../../redux/SearchFilterRedux\";\nimport { useSearchFilterDispatch } from \"../../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../../context/SearchFilterActionsContext\";\n\nexport interface DateRangeCalendarSectionProps<\n TFormModel,\n TSectionKey extends string\n> extends Omit<\n SearchFilterSectionProps<TSectionKey>,\n \"label\" | \"onRetry\" | \"error\" | \"loading\"\n >,\n Omit<\n DateRangeCalendarProps<{}>,\n \"value\" | \"onValueChange\" | \"focusedInput\" | \"setFocusedInput\"\n > {\n value: DateStringRange;\n onValueChange: (\n value: DateStringRange,\n options: SetDateOptions<TFormModel, TSectionKey>\n ) => void;\n label?: string;\n}\n\nexport interface SetDateOptions<TFormModel, TSectionKey extends string> {\n dispatch: SearchFilterDispatch<TFormModel>;\n actions: SearchFilterActions<TFormModel, TSectionKey>;\n}\n\nexport const DateRangeCalendarSection = <\n TFormModel,\n TSectionKey extends string\n>({\n value,\n onValueChange,\n sectionId,\n contentRight,\n disableContentPadding,\n label,\n leftIcon,\n ...dateRangeCalendarProps\n}: DateRangeCalendarSectionProps<TFormModel, TSectionKey>) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions<TFormModel, TSectionKey>();\n\n const options = useMemo<SetDateOptions<TFormModel, TSectionKey>>(\n () => ({ dispatch, actions }),\n [actions, dispatch]\n );\n const [focusedInput, setFocusedInput] =\n useState<DateRangeFocusedInput>(\"startDate\");\n\n const dateRangeValue = useMemo(() => stringsToDateRange(value), [value]);\n\n const onValueChangeHandler = useCallback(\n (value: DateRange) => {\n onValueChange(dateRangeToStrings(value), options);\n },\n [onValueChange, options]\n );\n\n return (\n <SearchFilterSection\n label={label}\n leftIcon={leftIcon}\n sectionId={sectionId}\n contentRight={contentRight}\n disableContentPadding={disableContentPadding}\n >\n <Box flex={1} alignItems={\"center\"}>\n <Box background={\"white\"} indent>\n <DateRangeCalendar\n setFocusedInput={setFocusedInput}\n focusedInput={focusedInput}\n value={dateRangeValue}\n onValueChange={onValueChangeHandler}\n {...dateRangeCalendarProps}\n />\n </Box>\n </Box>\n </SearchFilterSection>\n );\n};\n"],"names":["SearchFilterPanelHeader","onRequestClose","header","contentRight","Spacing","Row","_jsxs","_jsx","Space","Heading","FlatButton","stenaTimes","SearchFilterStateContext","createContext","useSearchFilterState","c","useContext","SearchFilterDispatchContext","useSearchFilterDispatch","SearchFilterActionsContext","useSearchFilterActions","SearchFilterDrawer","children","headerContentRight","drawerProps","settings","open","dispatch","actions","closeDrawer","useCallback","closeFilters","Drawer","Column","cssColor","Box","SearchFilterButton","label","leftIcon","stenaSlidersMini","onClickButton","openFilters","SecondaryButton","SearchFilterSection","sectionId","loading","error","onRetry","disableContentPadding","state","expanded","expandedSections","values","onClickLabel","setSectionExpanded","activeLabel","formatColumnIdToHeaderCellLabel","_Fragment","MenuButton","Spinner","Banner","columnId","upperFirst","lowerCase","StickyFooter","boxProps","marginTop","SearchFilterModelContext","useSearchFilterModel","SearchFilterContext","formModel","createSearchFilterInitialState","initialFormModel","createSearchFilterReducer","reducerId","initialState","combineReducers","reducerIdGate","getReducerIdFor","createValueByIdReducer","createEntityReducer","createSearchFilterActions","reducerIdGateAction","createEntityActions","fields","section","createValueByIdActions","reducerIdSuffix","useLocalSearchFilterState","reducer","useState","useReducer","SearchFilterLocalStateContext","ChipSpacer","styled","div","SearchFilterChips","disableClearAllButton","onClickClearAll","clearFormModel","EmptyChip","clearExpandedSections","expandSection","Chip","SearchFilterChip","value","onClickRemove","setFormModelFields","onClickRemoveHandler","undefined","SectionChips","chips","emptyChipLabel","onClickRemoveOnChip","length","map","createChipsPropsForBooleanRecord","fieldName","options","createChipsForBooleanRecord","createOnClickRemoveOnChipForBooleanRecord","booleanRecord","truthyKeysAsList","key","option","_a","newRecord","SimpleCheckboxListSection","onValueChange","sectionProps","d","CheckboxWithLabel","v","ChipMultiSelectSection","noneSelectedLabel","text","setText","listValue","useMemo","find","o","filteredOptions","filter","p","toLocaleLowerCase","indexOf","onValueChangeInternal","createBooleanRecordFromValue","ChipMultiSelect","reduce","sum","item","createChipsPropsForDateRange","startDateFieldName","endDateFieldName","createChipsForDateRange","createOnClickRemoveOnChipForDateRange","startDate","endDate","createDateRangeSectionProps","DateRangeCalendarSection","dateRangeCalendarProps","focusedInput","setFocusedInput","dateRangeValue","stringsToDateRange","onValueChangeHandler","dateRangeToStrings","DateRangeCalendar"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/features/search-filter/components/SearchFilterPanelHeader.tsx","../src/features/search-filter/context/SearchFilterStateContext.ts","../src/features/search-filter/context/SearchFilterDispatchContext.ts","../src/features/search-filter/context/SearchFilterActionsContext.ts","../src/features/search-filter/components/SearchFilterDrawer.tsx","../src/features/search-filter/components/SearchFilterButton.tsx","../src/features/search-filter/components/SearchFilterSection.tsx","../src/features/search-filter/components/StickyFooter.tsx","../src/features/search-filter/context/SearchFilterModelContext.ts","../src/features/search-filter/components/context/SearchFilterContext.tsx","../src/features/search-filter/redux/SearchFilterRedux.ts","../src/features/search-filter/hooks/UseLocalSearchFilterState.ts","../src/features/search-filter/components/context/SearchFilterLocalStateContext.tsx","../src/features/search-filter/features/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 { ReactNode } from \"react\";\nimport { FlatButton, stenaTimes } from \"@stenajs-webui/elements\";\nimport { Heading, Row, Space, Spacing } from \"@stenajs-webui/core\";\n\ninterface SearchFilterPanelHeaderProps {\n onRequestClose: () => void;\n header?: string;\n contentRight?: ReactNode;\n}\n\nexport const SearchFilterPanelHeader: React.FC<\n SearchFilterPanelHeaderProps\n> = ({ onRequestClose, header = \"Filter\", contentRight }) => {\n return (\n <Spacing>\n <Row\n justifyContent={\"space-between\"}\n alignItems={\"center\"}\n height={\"48px\"}\n >\n <Row>\n <Space num={3} />\n <Heading variant={\"h4\"}>{header}</Heading>\n </Row>\n <Row gap={1}>\n {contentRight}\n <FlatButton\n leftIcon={stenaTimes}\n onClick={onRequestClose}\n variant={\"danger\"}\n />\n <Space num={0.5} />\n </Row>\n </Row>\n </Spacing>\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 { ReactNode, useCallback } from \"react\";\nimport { Drawer, DrawerProps } from \"@stenajs-webui/modal\";\nimport { cssColor } from \"@stenajs-webui/theme\";\nimport { Box, Column } from \"@stenajs-webui/core\";\nimport { SearchFilterPanelHeader } from \"./SearchFilterPanelHeader\";\nimport { useSearchFilterState } from \"../context/SearchFilterStateContext\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\n\ninterface SearchFilterDrawerProps\n extends Omit<DrawerProps, \"isOpen\" | \"onRequestClose\"> {\n header?: string;\n headerContentRight?: ReactNode;\n}\n\nexport const SearchFilterDrawer: React.FC<SearchFilterDrawerProps> = ({\n children,\n header,\n headerContentRight,\n ...drawerProps\n}) => {\n const {\n settings: { open },\n } = useSearchFilterState();\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const closeDrawer = useCallback(() => {\n dispatch(actions.closeFilters());\n }, [actions, dispatch]);\n\n return (\n <Drawer isOpen={open} onRequestClose={closeDrawer} {...drawerProps}>\n <Column\n height={\"100%\"}\n borderRadius={\"var(--swui-border-radius)\"}\n background={cssColor(\"--lhds-color-ui-50\")}\n >\n <SearchFilterPanelHeader\n onRequestClose={closeDrawer}\n header={header}\n contentRight={headerContentRight}\n />\n <Box spacing={1} indent={1} gap={1}>\n {children}\n </Box>\n </Column>\n </Drawer>\n );\n};\n","import { SecondaryButton, stenaSlidersMini } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\nimport { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\n\ninterface SearchFilterDrawerButtonProps {\n label?: string;\n leftIcon?: IconDefinition;\n}\n\nexport const SearchFilterButton: React.FC<SearchFilterDrawerButtonProps> = ({\n label = \"Filters\",\n leftIcon = stenaSlidersMini,\n}) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const onClickButton = useCallback(() => {\n dispatch(actions.openFilters());\n }, [actions, dispatch]);\n\n return (\n <SecondaryButton\n label={label}\n leftIcon={leftIcon}\n onClick={onClickButton}\n />\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren, useCallback } from \"react\";\nimport { Row, Space } from \"@stenajs-webui/core\";\nimport { lowerCase, upperFirst } from \"lodash\";\nimport {\n Banner,\n FlatButton,\n MenuButton,\n Spinner,\n} from \"@stenajs-webui/elements\";\nimport { useSearchFilterState } from \"../context/SearchFilterStateContext\";\nimport { useSearchFilterDispatch } from \"../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../context/SearchFilterActionsContext\";\nimport { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\n\nexport interface SearchFilterSectionProps<TSectionKey extends string> {\n sectionId: TSectionKey;\n label?: string;\n leftIcon?: IconDefinition;\n contentRight?: React.ReactNode;\n disableContentPadding?: boolean;\n loading?: boolean;\n error?: string;\n onRetry?: () => void;\n}\n\nexport const SearchFilterSection = function SearchFilterSection<\n TSectionKey extends string\n>({\n sectionId,\n label,\n loading,\n error,\n onRetry,\n disableContentPadding,\n children,\n leftIcon,\n contentRight,\n}: PropsWithChildren<SearchFilterSectionProps<TSectionKey>>) {\n const state = useSearchFilterState();\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const expanded = state.expandedSections.values[sectionId] ?? false;\n\n const onClickLabel = useCallback(() => {\n dispatch(actions.setSectionExpanded(sectionId, !expanded));\n }, [actions, dispatch, expanded, sectionId]);\n\n const activeLabel = label ?? formatColumnIdToHeaderCellLabel(sectionId);\n\n return (\n <>\n <MenuButton\n label={activeLabel}\n leftIcon={leftIcon}\n expandable\n expanded={expanded}\n selected={expanded}\n onClick={onClickLabel}\n right={contentRight}\n >\n {loading ? (\n <Row spacing justifyContent={\"center\"} flex={1}>\n <Spinner size={\"small\"} />\n </Row>\n ) : error ? (\n <Banner\n variant={\"error\"}\n text={error}\n contentRight={\n onRetry ? <FlatButton label={\"Retry\"} onClick={onRetry} /> : null\n }\n />\n ) : disableContentPadding ? (\n children\n ) : (\n children\n )}\n </MenuButton>\n {expanded && <Space />}\n </>\n );\n};\n\nexport const formatColumnIdToHeaderCellLabel = (columnId: string): string =>\n upperFirst(lowerCase(columnId));\n","import { BoxProps, Column } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\n\nexport interface StickySearchButtonProps extends Pick<BoxProps, \"gap\"> {\n children?: ReactNode;\n}\n\nexport const StickyFooter: React.FC<StickySearchButtonProps> = ({\n children,\n ...boxProps\n}) => {\n return (\n <Column\n style={{ marginTop: \"auto\" }}\n justifyContent={\"center\"}\n spacing={2}\n indent\n shadow={\"popover\"}\n zIndex={1}\n {...boxProps}\n >\n {children}\n </Column>\n );\n};\n","import { createContext, useContext } from \"react\";\n\nexport const SearchFilterModelContext = createContext<unknown>(null as unknown);\n\nexport const useSearchFilterModel = <TFormModel>(): TFormModel => {\n const c = useContext(SearchFilterModelContext);\n if (!c) {\n throw new Error(\n \"Missing search filter context, wrap components with SearchFilterContext component.\"\n );\n }\n return c as TFormModel;\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport {\n SearchFilterActions,\n SearchFilterDispatch,\n SearchFilterState,\n} from \"../../redux/SearchFilterRedux\";\nimport { SearchFilterDispatchContext } from \"../../context/SearchFilterDispatchContext\";\nimport { SearchFilterActionsContext } from \"../../context/SearchFilterActionsContext\";\nimport { SearchFilterStateContext } from \"../../context/SearchFilterStateContext\";\nimport { SearchFilterModelContext } from \"../../context/SearchFilterModelContext\";\n\ninterface SearchFilterScopeProps<TFormModel, TSectionKey extends string> {\n state: SearchFilterState<TFormModel>;\n dispatch: SearchFilterDispatch<TFormModel>;\n actions: SearchFilterActions<TFormModel, TSectionKey>;\n}\n\nexport const SearchFilterContext = function SearchFilterScope<\n TFormModel,\n TSectionKey extends string\n>({\n state,\n dispatch,\n actions,\n children,\n}: PropsWithChildren<SearchFilterScopeProps<TFormModel, TSectionKey>>) {\n return (\n <SearchFilterDispatchContext.Provider\n value={dispatch as SearchFilterDispatch<unknown>}\n >\n <SearchFilterActionsContext.Provider value={actions}>\n <SearchFilterStateContext.Provider value={state}>\n <SearchFilterModelContext.Provider value={state.formModel}>\n {children}\n </SearchFilterModelContext.Provider>\n </SearchFilterStateContext.Provider>\n </SearchFilterActionsContext.Provider>\n </SearchFilterDispatchContext.Provider>\n );\n};\n","import { combineReducers } from \"redux\";\nimport {\n createEntityActions,\n createEntityReducer,\n createValueByIdActions,\n createValueByIdReducer,\n EntityAction,\n EntityState,\n reducerIdGate,\n reducerIdGateAction,\n ReducerIdGateAction,\n ValueByIdAction,\n ValueByIdState,\n} from \"@stenajs-webui/redux\";\nimport { Dispatch } from \"react\";\n\nexport interface SearchFilterSettings {\n open: boolean;\n}\n\nexport type SearchFilterDispatch<TFormModel> = Dispatch<\n SearchFilterAction<TFormModel>\n>;\n\nexport interface SearchFilterState<TFormModel> {\n expandedSections: ValueByIdState<boolean>;\n formModel: EntityState<TFormModel>;\n settings: EntityState<SearchFilterSettings>;\n}\n\nexport type SearchFilterAction<TFormModel> =\n | ReducerIdGateAction<ValueByIdAction<boolean>>\n | ReducerIdGateAction<EntityAction<TFormModel>>\n | ReducerIdGateAction<EntityAction<SearchFilterSettings>>;\n\nexport const createSearchFilterInitialState = <TFormModel>(\n initialFormModel: TFormModel\n): SearchFilterState<TFormModel> => ({\n settings: {\n open: false,\n },\n formModel: initialFormModel,\n expandedSections: { values: {} },\n});\n\nexport const createSearchFilterReducer = <TFormModel>(\n reducerId: string,\n initialState: SearchFilterState<TFormModel>\n) =>\n combineReducers({\n expandedSections: reducerIdGate(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdReducer<boolean>(initialState.expandedSections)\n ),\n formModel: reducerIdGate(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityReducer<TFormModel>(initialState.formModel)\n ),\n settings: reducerIdGate(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityReducer<SearchFilterSettings>(initialState.settings)\n ),\n });\n\nexport interface SearchFilterActions<TFormModel, TSectionKey extends string> {\n openFilters: () => SearchFilterAction<TFormModel>;\n closeFilters: () => SearchFilterAction<TFormModel>;\n setFormModelFields: (\n fields: Partial<TFormModel>\n ) => SearchFilterAction<TFormModel>;\n clearFormModel: () => SearchFilterAction<TFormModel>;\n expandSection: (section: TSectionKey) => SearchFilterAction<TFormModel>;\n collapseSection: (section: TSectionKey) => SearchFilterAction<TFormModel>;\n setSectionExpanded: (\n section: TSectionKey,\n expanded: boolean\n ) => SearchFilterAction<TFormModel>;\n clearExpandedSections: () => SearchFilterAction<TFormModel>;\n}\n\nexport const createSearchFilterActions = <\n TFormModel,\n TSectionKey extends string\n>(\n reducerId: string,\n initialFormModel: TFormModel\n): SearchFilterActions<TFormModel, TSectionKey> => ({\n openFilters: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityActions<SearchFilterSettings>().setEntityFields({\n open: true,\n })\n ),\n closeFilters: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"settings\"),\n createEntityActions<SearchFilterSettings>().setEntityFields({\n open: false,\n })\n ),\n setFormModelFields: (fields: Partial<TFormModel>) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityActions<TFormModel>().setEntityFields(fields)\n ),\n clearFormModel: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"formModel\"),\n createEntityActions<TFormModel>().setEntity(initialFormModel)\n ),\n expandSection: (section: TSectionKey) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, true)\n ),\n collapseSection: (section: TSectionKey) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, false)\n ),\n setSectionExpanded: (section: TSectionKey, expanded: boolean) =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().setValue(section, expanded)\n ),\n clearExpandedSections: () =>\n reducerIdGateAction(\n getReducerIdFor(reducerId, \"expandedSections\"),\n createValueByIdActions<boolean>().clearAllValues()\n ),\n});\n\nexport const getReducerIdFor = (\n reducerId: string,\n reducerIdSuffix: keyof SearchFilterState<unknown>\n): string => `${reducerId}.${reducerIdSuffix}`;\n","import {\n createSearchFilterActions,\n createSearchFilterReducer,\n SearchFilterState,\n} from \"../redux/SearchFilterRedux\";\nimport { useReducer, useState } from \"react\";\n\nexport const useLocalSearchFilterState = <\n TFormModel,\n TSectionKey extends string\n>(\n initialState: SearchFilterState<TFormModel>\n) => {\n const [reducer] = useState(() =>\n createSearchFilterReducer<TFormModel>(\"local\", initialState)\n );\n\n const [actions] = useState(() =>\n createSearchFilterActions<TFormModel, TSectionKey>(\n \"local\",\n initialState.formModel\n )\n );\n\n const [state, dispatch] = useReducer(reducer, initialState);\n\n return {\n actions,\n state,\n dispatch,\n };\n};\n","import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport { useLocalSearchFilterState } from \"../../hooks/UseLocalSearchFilterState\";\nimport { SearchFilterContext } from \"./SearchFilterContext\";\nimport { createSearchFilterInitialState } from \"../../redux/SearchFilterRedux\";\n\ninterface SearchFilterLocalScopeProps<TFormModel> {\n initialFormModel: TFormModel;\n}\n\nexport const SearchFilterLocalStateContext = function SearchFilterLocalScope<\n TFormModel\n>({\n initialFormModel,\n children,\n}: PropsWithChildren<SearchFilterLocalScopeProps<TFormModel>>) {\n const { state, actions, dispatch } = useLocalSearchFilterState(\n createSearchFilterInitialState(initialFormModel)\n );\n\n return (\n <SearchFilterContext state={state} actions={actions} dispatch={dispatch}>\n {children}\n </SearchFilterContext>\n );\n};\n","import 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 { ReactNode, 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 children?: ReactNode;\n}\n\nexport const SearchFilterChips: React.FC<SearchFilterChipsProps> = ({\n children,\n disableClearAllButton = false,\n}) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions();\n\n const onClickClearAll = useCallback(\n () => dispatch(actions.clearFormModel()),\n [actions, dispatch]\n );\n\n return (\n <Row flexWrap={\"wrap\"}>\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(\n formModel[fieldName] as unknown as BooleanRecord,\n options\n ),\n onClickRemoveOnChip: createOnClickRemoveOnChipForBooleanRecord(\n formModel,\n fieldName\n ),\n});\n\nexport const createChipsForBooleanRecord = (\n booleanRecord: BooleanRecord,\n options?: BooleanRecordOptions\n): Array<SearchFilterSectionChipModel> =>\n truthyKeysAsList(booleanRecord).map((key) => {\n const option = options?.find((o) => o.value === key);\n return { value: key, label: option?.label ?? key };\n });\n\nexport const createOnClickRemoveOnChipForBooleanRecord = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, BooleanRecord>\n>(\n formModel: TFormModel,\n fieldName: TField\n): SearchFilterSectionOnClickRemoveOnChip<TFormModel> => {\n return ({ setFormModelFields, value }) => {\n const newRecord = { ...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, Row } from \"@stenajs-webui/core\";\nimport {\n CheckboxWithLabel,\n ValueAndOnValueChangeProps,\n} 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} gap={1} spacing={1}>\n {options?.map((d) => (\n <Row key={d.value} alignItems={\"center\"}>\n <CheckboxWithLabel\n tabIndex={-1}\n value={value?.[d.value]}\n label={d.label}\n onValueChange={(v) =>\n onValueChange?.({\n ...value,\n [d.value]: v,\n })\n }\n />\n </Row>\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 {\n SearchFilterSectionChipModel,\n SearchFilterSectionOnClickRemoveOnChip,\n} from \"../../config/SearchFilterConfig\";\nimport { PickByValue } from \"@stenajs-webui/core\";\nimport { SectionChipsProps } from \"../../features/chips/SectionChips\";\n\nexport const createChipsPropsForDateRange = <\n TFormModel,\n TSectionKey extends string,\n TField extends keyof PickByValue<TFormModel, string | undefined>\n>(\n formModel: TFormModel,\n startDateFieldName: TField,\n endDateFieldName: TField\n): Pick<\n SectionChipsProps<TFormModel, TSectionKey>,\n \"chips\" | \"onClickRemoveOnChip\"\n> => ({\n chips: createChipsForDateRange(\n formModel[startDateFieldName] as unknown as string | undefined,\n formModel[endDateFieldName] as unknown as string | undefined\n ),\n onClickRemoveOnChip: createOnClickRemoveOnChipForDateRange(\n startDateFieldName,\n endDateFieldName\n ),\n});\n\nexport const createChipsForDateRange = (\n startDate: string | undefined,\n endDate: string | undefined\n): Array<SearchFilterSectionChipModel> => {\n if (!startDate && !endDate) {\n return [];\n }\n return [\n { value: \"dateRange\", label: `${startDate ?? \"\"} - ${endDate ?? \"\"}` },\n ];\n};\n\nexport const createOnClickRemoveOnChipForDateRange = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, string | undefined>\n>(\n startDateFieldName: TField,\n endDateFieldName: TField\n): SearchFilterSectionOnClickRemoveOnChip<TFormModel> => {\n return ({ setFormModelFields }) => {\n setFormModelFields({\n [startDateFieldName]: undefined,\n [endDateFieldName]: undefined,\n } as unknown as Partial<TFormModel>);\n };\n};\n","import { PickByValue } from \"@stenajs-webui/core\";\nimport { DateRangeCalendarSectionProps } from \"./components/DateRangeCalendarSection\";\n\nexport const createDateRangeSectionProps = <\n TFormModel,\n TField extends keyof PickByValue<TFormModel, string | undefined>,\n TSectionKey extends string\n>(\n formModel: TFormModel,\n startDateFieldName: TField,\n endDateFieldName: TField\n): Pick<\n DateRangeCalendarSectionProps<TFormModel, TSectionKey>,\n \"value\" | \"onValueChange\"\n> => ({\n value: {\n startDate: formModel[startDateFieldName] as unknown as string | undefined,\n endDate: formModel[endDateFieldName] as unknown as string | undefined,\n },\n onValueChange: (value, { dispatch, actions }) => {\n const fields: Partial<TFormModel> = {\n [startDateFieldName]: value.startDate,\n [endDateFieldName]: value.endDate,\n } as any;\n dispatch(actions.setFormModelFields(fields));\n },\n});\n","import {\n DateRange,\n DateRangeCalendar,\n DateRangeCalendarProps,\n DateRangeFocusedInput,\n dateRangeToStrings,\n DateStringRange,\n stringsToDateRange,\n} from \"@stenajs-webui/calendar\";\nimport * as React from \"react\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { Box } from \"@stenajs-webui/core\";\nimport {\n SearchFilterSection,\n SearchFilterSectionProps,\n} from \"../../../components/SearchFilterSection\";\nimport {\n SearchFilterActions,\n SearchFilterDispatch,\n} from \"../../../redux/SearchFilterRedux\";\nimport { useSearchFilterDispatch } from \"../../../context/SearchFilterDispatchContext\";\nimport { useSearchFilterActions } from \"../../../context/SearchFilterActionsContext\";\n\nexport interface DateRangeCalendarSectionProps<\n TFormModel,\n TSectionKey extends string\n> extends Omit<\n SearchFilterSectionProps<TSectionKey>,\n \"label\" | \"onRetry\" | \"error\" | \"loading\"\n >,\n Omit<\n DateRangeCalendarProps<{}>,\n \"value\" | \"onValueChange\" | \"focusedInput\" | \"setFocusedInput\"\n > {\n value: DateStringRange;\n onValueChange: (\n value: DateStringRange,\n options: SetDateOptions<TFormModel, TSectionKey>\n ) => void;\n label?: string;\n}\n\nexport interface SetDateOptions<TFormModel, TSectionKey extends string> {\n dispatch: SearchFilterDispatch<TFormModel>;\n actions: SearchFilterActions<TFormModel, TSectionKey>;\n}\n\nexport const DateRangeCalendarSection = <\n TFormModel,\n TSectionKey extends string\n>({\n value,\n onValueChange,\n sectionId,\n contentRight,\n disableContentPadding,\n label,\n leftIcon,\n ...dateRangeCalendarProps\n}: DateRangeCalendarSectionProps<TFormModel, TSectionKey>) => {\n const dispatch = useSearchFilterDispatch();\n const actions = useSearchFilterActions<TFormModel, TSectionKey>();\n\n const options = useMemo<SetDateOptions<TFormModel, TSectionKey>>(\n () => ({ dispatch, actions }),\n [actions, dispatch]\n );\n const [focusedInput, setFocusedInput] =\n useState<DateRangeFocusedInput>(\"startDate\");\n\n const dateRangeValue = useMemo(() => stringsToDateRange(value), [value]);\n\n const onValueChangeHandler = useCallback(\n (value: DateRange) => {\n onValueChange(dateRangeToStrings(value), options);\n },\n [onValueChange, options]\n );\n\n return (\n <SearchFilterSection\n label={label}\n leftIcon={leftIcon}\n sectionId={sectionId}\n contentRight={contentRight}\n disableContentPadding={disableContentPadding}\n >\n <Box flex={1} alignItems={\"center\"}>\n <Box background={\"white\"} indent>\n <DateRangeCalendar\n setFocusedInput={setFocusedInput}\n focusedInput={focusedInput}\n value={dateRangeValue}\n onValueChange={onValueChangeHandler}\n {...dateRangeCalendarProps}\n />\n </Box>\n </Box>\n </SearchFilterSection>\n );\n};\n"],"names":["SearchFilterPanelHeader","onRequestClose","header","contentRight","Spacing","jsxs","Row","jsx","Space","Heading","FlatButton","stenaTimes","SearchFilterStateContext","createContext","useSearchFilterState","c","useContext","SearchFilterDispatchContext","useSearchFilterDispatch","SearchFilterActionsContext","useSearchFilterActions","SearchFilterDrawer","children","headerContentRight","drawerProps","open","dispatch","actions","closeDrawer","useCallback","Drawer","Column","cssColor","Box","SearchFilterButton","label","leftIcon","stenaSlidersMini","onClickButton","SecondaryButton","SearchFilterSection","sectionId","loading","error","onRetry","disableContentPadding","state","expanded","_a","onClickLabel","activeLabel","formatColumnIdToHeaderCellLabel","Fragment","MenuButton","Spinner","Banner","columnId","upperFirst","lowerCase","StickyFooter","boxProps","SearchFilterModelContext","useSearchFilterModel","SearchFilterContext","createSearchFilterInitialState","initialFormModel","createSearchFilterReducer","reducerId","initialState","combineReducers","reducerIdGate","getReducerIdFor","createValueByIdReducer","createEntityReducer","createSearchFilterActions","reducerIdGateAction","createEntityActions","fields","section","createValueByIdActions","reducerIdSuffix","useLocalSearchFilterState","reducer","useState","useReducer","SearchFilterLocalStateContext","ChipSpacer","styled","SearchFilterChips","disableClearAllButton","onClickClearAll","EmptyChip","Chip","SearchFilterChip","value","onClickRemove","setFormModelFields","onClickRemoveHandler","SectionChips","chips","emptyChipLabel","onClickRemoveOnChip","createChipsPropsForBooleanRecord","formModel","fieldName","options","createChipsForBooleanRecord","createOnClickRemoveOnChipForBooleanRecord","booleanRecord","truthyKeysAsList","key","option","newRecord","SimpleCheckboxListSection","onValueChange","sectionProps","d","CheckboxWithLabel","v","ChipMultiSelectSection","noneSelectedLabel","text","setText","listValue","useMemo","o","filteredOptions","p","onValueChangeInternal","createBooleanRecordFromValue","ChipMultiSelect","sum","item","createChipsPropsForDateRange","startDateFieldName","endDateFieldName","createChipsForDateRange","createOnClickRemoveOnChipForDateRange","startDate","endDate","createDateRangeSectionProps","DateRangeCalendarSection","dateRangeCalendarProps","focusedInput","setFocusedInput","dateRangeValue","stringsToDateRange","onValueChangeHandler","dateRangeToStrings","DateRangeCalendar"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stenajs-webui/filter",
|
|
3
|
-
"version": "19.0.0-next.
|
|
3
|
+
"version": "19.0.0-next.12",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "mattias800",
|
|
6
6
|
"license": "MIT",
|
|
@@ -26,15 +26,15 @@
|
|
|
26
26
|
"deploy": "gh-pages -d example/build"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@stenajs-webui/calendar": "19.0.0-next.
|
|
30
|
-
"@stenajs-webui/core": "19.0.0-next.
|
|
31
|
-
"@stenajs-webui/elements": "19.0.0-next.
|
|
32
|
-
"@stenajs-webui/forms": "19.0.0-next.
|
|
33
|
-
"@stenajs-webui/modal": "19.0.0-next.
|
|
34
|
-
"@stenajs-webui/panels": "19.0.0-next.
|
|
35
|
-
"@stenajs-webui/redux": "19.0.0-next.
|
|
36
|
-
"@stenajs-webui/select": "19.0.0-next.
|
|
37
|
-
"@stenajs-webui/theme": "19.0.0-next.
|
|
29
|
+
"@stenajs-webui/calendar": "19.0.0-next.12",
|
|
30
|
+
"@stenajs-webui/core": "19.0.0-next.12",
|
|
31
|
+
"@stenajs-webui/elements": "19.0.0-next.12",
|
|
32
|
+
"@stenajs-webui/forms": "19.0.0-next.12",
|
|
33
|
+
"@stenajs-webui/modal": "19.0.0-next.12",
|
|
34
|
+
"@stenajs-webui/panels": "19.0.0-next.12",
|
|
35
|
+
"@stenajs-webui/redux": "19.0.0-next.12",
|
|
36
|
+
"@stenajs-webui/select": "19.0.0-next.12",
|
|
37
|
+
"@stenajs-webui/theme": "19.0.0-next.12",
|
|
38
38
|
"date-fns": "2.26.0"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
@@ -65,5 +65,5 @@
|
|
|
65
65
|
"files": [
|
|
66
66
|
"dist"
|
|
67
67
|
],
|
|
68
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "5f3bcbfadc816d5ac26b94b556c64ccea4b185ee"
|
|
69
69
|
}
|