@hkyhy/marsun-components-core 0.1.24 → 0.1.25
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/components/Filter/FilterSelect/index.d.ts +4 -2
- package/dist/components/Filter/FilterSelect/index.js +253 -157
- package/dist/components/Filter/FilterSelect/index.js.map +1 -1
- package/dist/components/Filter/FilterSelect/style.module.scss.js +14 -12
- package/dist/components/Filter/FilterSelect/style.module.scss.js.map +1 -1
- package/dist/components/Table/Table.d.ts +8 -0
- package/dist/components/Table/Table.js +39 -0
- package/dist/components/Table/Table.js.map +1 -0
- package/dist/components/Table/index.d.ts +2 -0
- package/dist/components/Table/style.module.scss.js +7 -0
- package/dist/components/Table/style.module.scss.js.map +1 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.js +408 -405
- package/dist/index.js.map +1 -1
- package/dist/marsun-components-core.css +1 -1
- package/dist/styles/global.css +1 -1
- package/dist/utils/authRedirect.d.ts +17 -4
- package/dist/utils/authRedirect.js +39 -20
- package/dist/utils/authRedirect.js.map +1 -1
- package/dist/utils/createMarsunRequest.d.ts +2 -0
- package/dist/utils/createMarsunRequest.js +20 -18
- package/dist/utils/createMarsunRequest.js.map +1 -1
- package/package.json +1 -1
|
@@ -6,10 +6,12 @@ interface FilterSelectProps extends BaseFilterProps {
|
|
|
6
6
|
options: FilterOption[];
|
|
7
7
|
value?: FilterSelectValue;
|
|
8
8
|
onChange?: (value: FilterSelectValue) => void;
|
|
9
|
-
/**
|
|
9
|
+
/** 默认值:与默认值相同时视为未筛选(除非 showDefaultAsSelected) */
|
|
10
10
|
defaultValue?: string | number;
|
|
11
|
-
/**
|
|
11
|
+
/** 多选默认值:与默认集合相同时视为未筛选(除非 showDefaultAsSelected) */
|
|
12
12
|
defaultValues?: (string | number)[];
|
|
13
|
+
/** 为 true 时,value 等于默认仍展示在「您已选择」并保持选中态 */
|
|
14
|
+
showDefaultAsSelected?: boolean;
|
|
13
15
|
placeholder?: string;
|
|
14
16
|
searchable?: boolean;
|
|
15
17
|
/** 是否多选 */
|
|
@@ -1,207 +1,303 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { Check as
|
|
3
|
-
import { Input as
|
|
4
|
-
import { useState as
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import { resolveFilterVisible as
|
|
8
|
-
import { useFilterRegister as
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
const { Search:
|
|
12
|
-
function
|
|
13
|
-
const
|
|
14
|
-
return r.departmentName &&
|
|
1
|
+
import { jsxs as b, jsx as m } from "react/jsx-runtime";
|
|
2
|
+
import { Check as oe, X as le } from "../../Icons/index.js";
|
|
3
|
+
import { Input as ae, Checkbox as Q, Space as fe } from "antd";
|
|
4
|
+
import { useState as E, useRef as ge, useMemo as U, useEffect as W } from "react";
|
|
5
|
+
import de from "../../Form/PersonOptionRow/index.js";
|
|
6
|
+
import he from "../FilterPopover/index.js";
|
|
7
|
+
import { resolveFilterVisible as Y } from "../types.js";
|
|
8
|
+
import { useFilterRegister as me } from "../useFilterState.js";
|
|
9
|
+
import g from "./style.module.scss.js";
|
|
10
|
+
import v from "classnames";
|
|
11
|
+
const { Search: ve } = ae;
|
|
12
|
+
function Se(r) {
|
|
13
|
+
const s = [r.label];
|
|
14
|
+
return r.departmentName && s.push(r.departmentName), s.join(" · ");
|
|
15
15
|
}
|
|
16
|
-
function
|
|
17
|
-
const
|
|
18
|
-
return [r.label, r.departmentName, r.email, r.phone, r.employeeId].filter(Boolean).some((
|
|
16
|
+
function Ae(r, s) {
|
|
17
|
+
const i = s.toLowerCase();
|
|
18
|
+
return [r.label, r.departmentName, r.email, r.phone, r.employeeId].filter(Boolean).some((o) => String(o).toLowerCase().includes(i));
|
|
19
19
|
}
|
|
20
|
-
function
|
|
21
|
-
if (!(r != null && r.length) && !(
|
|
22
|
-
if (!r || !
|
|
23
|
-
const
|
|
24
|
-
return
|
|
20
|
+
function Z(r, s) {
|
|
21
|
+
if (!(r != null && r.length) && !(s != null && s.length)) return !0;
|
|
22
|
+
if (!r || !s || r.length !== s.length) return !1;
|
|
23
|
+
const i = [...r].map(String).sort(), o = [...s].map(String).sort();
|
|
24
|
+
return i.every((l, a) => l === o[a]);
|
|
25
25
|
}
|
|
26
|
-
function
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
function _(r) {
|
|
27
|
+
return Array.isArray(r) ? r : r != null && r !== "" ? [r] : [];
|
|
28
|
+
}
|
|
29
|
+
function q(r, s, i, o, l) {
|
|
30
|
+
if (o) {
|
|
31
|
+
const a = _(r);
|
|
32
|
+
return !l && (i != null && i.length) && Z(a, i) ? [] : a;
|
|
30
33
|
}
|
|
31
|
-
if (!(
|
|
34
|
+
if (!(!l && s !== void 0 && r === s))
|
|
32
35
|
return r;
|
|
33
36
|
}
|
|
34
|
-
function
|
|
35
|
-
|
|
37
|
+
function I(r, s, i, o) {
|
|
38
|
+
return o ? _(r) : q(r, s, i, !1, !0);
|
|
39
|
+
}
|
|
40
|
+
function xe(r, s, i, o, l) {
|
|
41
|
+
if (i) {
|
|
36
42
|
const d = r || [];
|
|
37
|
-
return d.length
|
|
38
|
-
var
|
|
39
|
-
return ((
|
|
43
|
+
return d.length ? l != null && l.length && Z(d, l) ? "全部" : d.map((N) => {
|
|
44
|
+
var w;
|
|
45
|
+
return ((w = s.find((n) => String(n.value) === String(N))) == null ? void 0 : w.label) ?? String(N);
|
|
40
46
|
}).join("、") : "";
|
|
41
47
|
}
|
|
42
48
|
if (r == null) return "";
|
|
43
|
-
const
|
|
44
|
-
return
|
|
49
|
+
const a = s.find((d) => String(d.value) === String(r));
|
|
50
|
+
return a ? o ? Se(a) : a.label : String(r);
|
|
45
51
|
}
|
|
46
|
-
const
|
|
52
|
+
const Re = ({
|
|
47
53
|
filterKey: r,
|
|
48
|
-
label:
|
|
49
|
-
options:
|
|
50
|
-
value:
|
|
51
|
-
onChange:
|
|
52
|
-
defaultValue:
|
|
53
|
-
defaultValues:
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
54
|
+
label: s,
|
|
55
|
+
options: i = [],
|
|
56
|
+
value: o,
|
|
57
|
+
onChange: l,
|
|
58
|
+
defaultValue: a,
|
|
59
|
+
defaultValues: d,
|
|
60
|
+
showDefaultAsSelected: N = !1,
|
|
61
|
+
searchable: w = !1,
|
|
62
|
+
multiple: n = !1,
|
|
63
|
+
minSelection: h,
|
|
64
|
+
variant: K = "default",
|
|
65
|
+
active: V,
|
|
66
|
+
hidden: u,
|
|
67
|
+
display: T
|
|
61
68
|
}) => {
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
69
|
+
const p = K === "person", [ee, F] = E(!1), [O, j] = E(""), f = q(
|
|
70
|
+
o,
|
|
71
|
+
a,
|
|
72
|
+
d,
|
|
73
|
+
n,
|
|
74
|
+
N
|
|
75
|
+
), [S, y] = E(
|
|
76
|
+
() => I(o, a, d, n) ?? (n ? [] : void 0)
|
|
77
|
+
), P = me(), R = ge(l);
|
|
78
|
+
R.current = l;
|
|
79
|
+
const X = U(() => {
|
|
80
|
+
const e = Array.isArray(f) ? f : f != null && f !== "" ? [f] : [], t = !n || h == null || e.length > h;
|
|
68
81
|
return () => {
|
|
69
|
-
var
|
|
70
|
-
|
|
82
|
+
var c;
|
|
83
|
+
t && ((c = R.current) == null || c.call(R, void 0));
|
|
71
84
|
};
|
|
72
|
-
}, [
|
|
73
|
-
|
|
85
|
+
}, [f, h, n]), $ = () => {
|
|
86
|
+
y(
|
|
87
|
+
I(o, a, d, n) ?? (n ? [] : void 0)
|
|
88
|
+
), j("");
|
|
74
89
|
};
|
|
75
|
-
|
|
76
|
-
const e = I(
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
90
|
+
W(() => {
|
|
91
|
+
const e = I(o, a, d, n);
|
|
92
|
+
y(e ?? (n ? [] : void 0));
|
|
93
|
+
const t = q(
|
|
94
|
+
o,
|
|
95
|
+
a,
|
|
96
|
+
d,
|
|
97
|
+
n,
|
|
98
|
+
N
|
|
99
|
+
);
|
|
100
|
+
(t == null || Array.isArray(t) && t.length === 0) && j("");
|
|
101
|
+
}, [o, a, d, n, N]);
|
|
102
|
+
const D = U(
|
|
103
|
+
() => xe(f, i, n, p, d),
|
|
104
|
+
[i, f, n, p, d]
|
|
82
105
|
);
|
|
83
|
-
if (
|
|
84
|
-
if (!
|
|
85
|
-
if (!
|
|
86
|
-
|
|
106
|
+
if (W(() => {
|
|
107
|
+
if (!P) return;
|
|
108
|
+
if (!Y({ display: T, hidden: u }, { filterKey: r, label: s, value: o })) {
|
|
109
|
+
P.unregister(r);
|
|
87
110
|
return;
|
|
88
111
|
}
|
|
89
|
-
if (
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
label:
|
|
93
|
-
valueLabel:
|
|
94
|
-
onRemove:
|
|
95
|
-
removable:
|
|
112
|
+
if (D) {
|
|
113
|
+
const t = Array.isArray(f) ? f : f != null && f !== "" ? [f] : [], c = !n || h == null || t.length > h;
|
|
114
|
+
P.register(r, {
|
|
115
|
+
label: s,
|
|
116
|
+
valueLabel: D,
|
|
117
|
+
onRemove: X,
|
|
118
|
+
removable: c
|
|
96
119
|
});
|
|
97
120
|
} else
|
|
98
|
-
|
|
99
|
-
}, [
|
|
100
|
-
const
|
|
101
|
-
(e) =>
|
|
102
|
-
) :
|
|
103
|
-
|
|
104
|
-
},
|
|
105
|
-
|
|
106
|
-
},
|
|
107
|
-
!e &&
|
|
108
|
-
},
|
|
109
|
-
if (!
|
|
110
|
-
const
|
|
111
|
-
let
|
|
112
|
-
|
|
121
|
+
P.unregister(r);
|
|
122
|
+
}, [D, r, s, u, T, X]), !Y({ display: T, hidden: u }, { filterKey: r, label: s, value: o })) return null;
|
|
123
|
+
const A = O ? i.filter(
|
|
124
|
+
(e) => p ? Ae(e, O) : e.label.toLowerCase().includes(O.toLowerCase())
|
|
125
|
+
) : i, re = () => {
|
|
126
|
+
l == null || l(S), F(!1);
|
|
127
|
+
}, te = () => {
|
|
128
|
+
$(), F(!1);
|
|
129
|
+
}, ne = (e) => {
|
|
130
|
+
!e && n && $(), F(e);
|
|
131
|
+
}, se = (e) => {
|
|
132
|
+
if (!n) {
|
|
133
|
+
const t = a !== void 0 && e === a;
|
|
134
|
+
let c;
|
|
135
|
+
S === e || t ? c = void 0 : c = e, y(c), l == null || l(c), F(!1);
|
|
113
136
|
}
|
|
114
|
-
},
|
|
115
|
-
const
|
|
116
|
-
if (
|
|
137
|
+
}, M = (e) => {
|
|
138
|
+
const t = S || [], c = t.some((x) => String(x) === String(e));
|
|
139
|
+
if (c && h != null && t.length <= h)
|
|
140
|
+
return;
|
|
141
|
+
const L = c ? t.filter((x) => String(x) !== String(e)) : [...t, e];
|
|
142
|
+
y(L);
|
|
143
|
+
}, k = Array.isArray(S) ? S : [], G = A.filter(
|
|
144
|
+
(e) => k.some((t) => String(t) === String(e.value))
|
|
145
|
+
).length, z = A.length > 0 && G === A.length, ce = G > 0 && !z, H = (e) => {
|
|
146
|
+
const t = k, c = A.map((C) => C.value);
|
|
147
|
+
if (e) {
|
|
148
|
+
const C = new Set(t.map(String)), J = [...t];
|
|
149
|
+
for (const B of c)
|
|
150
|
+
C.has(String(B)) || (J.push(B), C.add(String(B)));
|
|
151
|
+
y(J);
|
|
117
152
|
return;
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
153
|
+
}
|
|
154
|
+
const L = new Set(c.map(String));
|
|
155
|
+
let x = t.filter((C) => !L.has(String(C)));
|
|
156
|
+
h != null && x.length < h && (x = t.slice(0, h)), y(x);
|
|
157
|
+
}, ie = n ? Array.isArray(f) && f.length > 0 : f != null && f !== "";
|
|
158
|
+
return /* @__PURE__ */ b(
|
|
159
|
+
he,
|
|
123
160
|
{
|
|
124
|
-
label:
|
|
125
|
-
active:
|
|
126
|
-
open:
|
|
127
|
-
onOpenChange:
|
|
128
|
-
onConfirm:
|
|
129
|
-
onReset:
|
|
161
|
+
label: s,
|
|
162
|
+
active: V || ie,
|
|
163
|
+
open: ee,
|
|
164
|
+
onOpenChange: ne,
|
|
165
|
+
onConfirm: n ? re : void 0,
|
|
166
|
+
onReset: n ? te : void 0,
|
|
130
167
|
children: [
|
|
131
|
-
|
|
132
|
-
|
|
168
|
+
w && /* @__PURE__ */ m(
|
|
169
|
+
ve,
|
|
133
170
|
{
|
|
134
|
-
placeholder: `搜索${
|
|
171
|
+
placeholder: `搜索${s}`,
|
|
135
172
|
allowClear: !0,
|
|
136
173
|
size: "middle",
|
|
137
|
-
className:
|
|
138
|
-
value:
|
|
139
|
-
onChange: (e) =>
|
|
174
|
+
className: v("filter-select-search", g["filter-select-search"]),
|
|
175
|
+
value: O,
|
|
176
|
+
onChange: (e) => j(e.target.value)
|
|
140
177
|
}
|
|
141
178
|
),
|
|
142
|
-
/* @__PURE__ */
|
|
143
|
-
|
|
179
|
+
/* @__PURE__ */ b("div", { className: v("filter-select-options", g["filter-select-options"]), children: [
|
|
180
|
+
n && A.length > 0 && /* @__PURE__ */ b(
|
|
144
181
|
"div",
|
|
145
182
|
{
|
|
146
|
-
className:
|
|
183
|
+
className: v(
|
|
147
184
|
"filter-select-option",
|
|
148
|
-
|
|
149
|
-
|
|
185
|
+
g["filter-select-option"],
|
|
186
|
+
"filter-select-select-all",
|
|
187
|
+
g["filter-select-select-all"]
|
|
150
188
|
),
|
|
151
|
-
onClick: () =>
|
|
189
|
+
onClick: () => H(!z),
|
|
152
190
|
children: [
|
|
153
|
-
|
|
154
|
-
|
|
191
|
+
/* @__PURE__ */ m(
|
|
192
|
+
Q,
|
|
155
193
|
{
|
|
156
|
-
checked:
|
|
157
|
-
|
|
158
|
-
|
|
194
|
+
checked: z,
|
|
195
|
+
indeterminate: ce,
|
|
196
|
+
onChange: (e) => H(e.target.checked),
|
|
197
|
+
onClick: (e) => e.stopPropagation()
|
|
159
198
|
}
|
|
160
199
|
),
|
|
161
|
-
|
|
162
|
-
|
|
200
|
+
/* @__PURE__ */ m("span", { children: "全选" })
|
|
201
|
+
]
|
|
202
|
+
}
|
|
203
|
+
),
|
|
204
|
+
A.map((e) => /* @__PURE__ */ b(
|
|
205
|
+
"div",
|
|
206
|
+
{
|
|
207
|
+
className: v(
|
|
208
|
+
"filter-select-option",
|
|
209
|
+
g["filter-select-option"],
|
|
210
|
+
!n && S === e.value && v(
|
|
211
|
+
"filter-select-option-selected",
|
|
212
|
+
g["filter-select-option-selected"]
|
|
213
|
+
)
|
|
214
|
+
),
|
|
215
|
+
onClick: () => n ? M(e.value) : se(e.value),
|
|
216
|
+
children: [
|
|
217
|
+
n && /* @__PURE__ */ m(
|
|
218
|
+
Q,
|
|
219
|
+
{
|
|
220
|
+
checked: k.some((t) => String(t) === String(e.value)),
|
|
221
|
+
onChange: () => M(e.value),
|
|
222
|
+
onClick: (t) => t.stopPropagation()
|
|
223
|
+
}
|
|
224
|
+
),
|
|
225
|
+
p ? /* @__PURE__ */ m(de, { option: e }) : /* @__PURE__ */ m("span", { children: e.label }),
|
|
226
|
+
!n && !p && S === e.value && /* @__PURE__ */ m(
|
|
227
|
+
oe,
|
|
228
|
+
{
|
|
229
|
+
className: v(
|
|
230
|
+
"filter-select-option-check",
|
|
231
|
+
g["filter-select-option-check"]
|
|
232
|
+
)
|
|
233
|
+
}
|
|
234
|
+
)
|
|
163
235
|
]
|
|
164
236
|
},
|
|
165
237
|
String(e.value)
|
|
166
238
|
)),
|
|
167
|
-
|
|
239
|
+
A.length === 0 && /* @__PURE__ */ m("div", { className: v("filter-select-empty", g["filter-select-empty"]), children: "暂无数据" })
|
|
168
240
|
] }),
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
241
|
+
n && k.length > 0 && /* @__PURE__ */ b(
|
|
242
|
+
"div",
|
|
243
|
+
{
|
|
244
|
+
className: v("filter-select-selected-bar", g["filter-select-selected-bar"]),
|
|
245
|
+
children: [
|
|
246
|
+
/* @__PURE__ */ m(
|
|
247
|
+
"div",
|
|
248
|
+
{
|
|
249
|
+
className: v(
|
|
250
|
+
"filter-select-selected-label",
|
|
251
|
+
g["filter-select-selected-label"]
|
|
252
|
+
),
|
|
253
|
+
children: "已选:"
|
|
254
|
+
}
|
|
255
|
+
),
|
|
256
|
+
/* @__PURE__ */ m(
|
|
257
|
+
"div",
|
|
258
|
+
{
|
|
259
|
+
className: v(
|
|
260
|
+
"filter-select-selected-tags",
|
|
261
|
+
g["filter-select-selected-tags"]
|
|
262
|
+
),
|
|
263
|
+
children: /* @__PURE__ */ m(fe, { size: [4, 4], wrap: !0, children: k.map((e) => {
|
|
264
|
+
const t = i.find((L) => String(L.value) === String(e)), c = h == null || k.length > h;
|
|
265
|
+
return /* @__PURE__ */ b(
|
|
266
|
+
"span",
|
|
267
|
+
{
|
|
268
|
+
className: v(
|
|
269
|
+
"filter-select-selected-tag",
|
|
270
|
+
g["filter-select-selected-tag"],
|
|
271
|
+
!c && g["filter-select-selected-tag-disabled"]
|
|
272
|
+
),
|
|
273
|
+
onClick: () => c && M(e),
|
|
274
|
+
children: [
|
|
275
|
+
(t == null ? void 0 : t.label) ?? String(e),
|
|
276
|
+
/* @__PURE__ */ m(
|
|
277
|
+
le,
|
|
278
|
+
{
|
|
279
|
+
className: v(
|
|
280
|
+
"filter-select-selected-remove",
|
|
281
|
+
g["filter-select-selected-remove"],
|
|
282
|
+
!c && g["filter-select-selected-remove-disabled"]
|
|
283
|
+
)
|
|
284
|
+
}
|
|
285
|
+
)
|
|
286
|
+
]
|
|
287
|
+
},
|
|
288
|
+
String(e)
|
|
289
|
+
);
|
|
290
|
+
}) })
|
|
291
|
+
}
|
|
292
|
+
)
|
|
293
|
+
]
|
|
294
|
+
}
|
|
295
|
+
)
|
|
200
296
|
]
|
|
201
297
|
}
|
|
202
298
|
);
|
|
203
299
|
};
|
|
204
300
|
export {
|
|
205
|
-
|
|
301
|
+
Re as default
|
|
206
302
|
};
|
|
207
303
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/Filter/FilterSelect/index.tsx"],"sourcesContent":["import { Check, X } from '@/components/Icons';\nimport { Checkbox, Input, Space } from 'antd';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport PersonOptionRow from '../../Form/PersonOptionRow';\nimport FilterPopover from '../FilterPopover';\nimport type { BaseFilterProps, FilterOption, PersonOption } from '../types';\nimport { resolveFilterVisible } from '../types';\nimport { useFilterRegister } from '../useFilterState';\nimport styles from './style.module.scss';\nimport classNames from 'classnames';\n\nconst { Search } = Input;\n\nfunction formatPersonValueLabel(opt: PersonOption): string {\n const parts = [opt.label];\n if (opt.departmentName) parts.push(opt.departmentName);\n return parts.join(' · ');\n}\n\nfunction matchPersonOptionSearch(opt: PersonOption, keyword: string): boolean {\n const lower = keyword.toLowerCase();\n return [opt.label, opt.departmentName, opt.email, opt.phone, opt.employeeId]\n .filter(Boolean)\n .some((s) => String(s).toLowerCase().includes(lower));\n}\n\ntype FilterSelectValue = string | number | (string | number)[] | undefined;\n\nexport type { FilterSelectValue };\n\nfunction arraysEqual(\n a?: (string | number)[],\n b?: (string | number)[],\n): boolean {\n if (!a?.length && !b?.length) return true;\n if (!a || !b || a.length !== b.length) return false;\n const sortedA = [...a].map(String).sort();\n const sortedB = [...b].map(String).sort();\n return sortedA.every((v, i) => v === sortedB[i]);\n}\n\ninterface FilterSelectProps extends BaseFilterProps {\n options: FilterOption[];\n value?: FilterSelectValue;\n onChange?: (value: FilterSelectValue) => void;\n /** 默认值:与默认值相同时视为未筛选(不展示已选标签与选中态) */\n defaultValue?: string | number;\n /** 多选默认值:与默认集合相同时视为未筛选 */\n defaultValues?: (string | number)[];\n placeholder?: string;\n searchable?: boolean;\n /** 是否多选 */\n multiple?: boolean;\n /** 多选至少保留项数;达到下限时不允许移除已选标签 */\n minSelection?: number;\n /** 人员选项:展示部门与联系方式 */\n variant?: 'default' | 'person';\n}\n\nfunction toDisplayValue(\n value: FilterSelectValue,\n defaultValue: string | number | undefined,\n defaultValues: (string | number)[] | undefined,\n multiple: boolean,\n): string | number | (string | number)[] | undefined {\n if (multiple) {\n const arr = Array.isArray(value) ? value : value != null && value !== '' ? [value] : [];\n if (defaultValues?.length && arraysEqual(arr, defaultValues)) {\n return [];\n }\n return arr;\n }\n if (defaultValue !== undefined && value === defaultValue) return undefined;\n return value;\n}\n\nfunction formatValueLabel(\n displayVal: string | number | (string | number)[] | undefined,\n options: FilterOption[],\n multiple: boolean,\n isPersonVariant: boolean,\n): string {\n if (multiple) {\n const arr = (displayVal as (string | number)[]) || [];\n return arr.length > 0\n ? arr.map((v) => options.find((o) => String(o.value) === String(v))?.label ?? String(v)).join('、')\n : '';\n }\n if (displayVal == null) return '';\n const opt = options.find((o) => String(o.value) === String(displayVal));\n if (!opt) return String(displayVal);\n return isPersonVariant ? formatPersonValueLabel(opt as PersonOption) : opt.label;\n}\n\nconst FilterSelect: React.FC<FilterSelectProps> = ({\n filterKey,\n label,\n options = [],\n value,\n onChange,\n defaultValue,\n defaultValues,\n searchable = false,\n multiple = false,\n minSelection,\n variant = 'default',\n active,\n hidden,\n display,\n}) => {\n const isPersonVariant = variant === 'person';\n const [open, setOpen] = useState(false);\n const [searchText, setSearchText] = useState('');\n const displayValue = toDisplayValue(value, defaultValue, defaultValues, multiple);\n const [localValue, setLocalValue] = useState<string | number | (string | number)[] | undefined>(\n displayValue ?? (multiple ? [] : undefined),\n );\n\n // ── 自动注册到 CommonFilter ──\n const registerFn = useFilterRegister();\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n const handleRemove = useMemo(() => {\n const selectedArr = Array.isArray(displayValue)\n ? displayValue\n : displayValue != null && displayValue !== ''\n ? [displayValue]\n : [];\n const canRemove =\n !multiple ||\n minSelection == null ||\n selectedArr.length > minSelection;\n return () => {\n if (!canRemove) return;\n onChangeRef.current?.(undefined);\n };\n }, [displayValue, minSelection, multiple]);\n\n const revertToCommitted = () => {\n const next = displayValue ?? (multiple ? [] : undefined);\n setLocalValue(next);\n setSearchText('');\n };\n\n // 同步外部 value 到内部 localValue\n useEffect(() => {\n const nextDisplayValue = toDisplayValue(value, defaultValue, defaultValues, multiple);\n setLocalValue(nextDisplayValue ?? (multiple ? [] : undefined));\n if (\n nextDisplayValue === undefined ||\n nextDisplayValue === null ||\n (Array.isArray(nextDisplayValue) && nextDisplayValue.length === 0)\n ) {\n setSearchText('');\n }\n }, [value, defaultValue, defaultValues, multiple]);\n\n const committedValueLabel = useMemo(\n () => formatValueLabel(displayValue, options, multiple, isPersonVariant),\n [options, displayValue, multiple, isPersonVariant],\n );\n\n useEffect(() => {\n if (!registerFn) return;\n const ctx = { filterKey, label, value };\n if (!resolveFilterVisible({ display, hidden }, ctx)) {\n registerFn.unregister(filterKey);\n return;\n }\n if (committedValueLabel) {\n const selectedArr = Array.isArray(displayValue)\n ? displayValue\n : displayValue != null && displayValue !== ''\n ? [displayValue]\n : [];\n const removable =\n !multiple || minSelection == null || selectedArr.length > minSelection;\n registerFn.register(filterKey, {\n label,\n valueLabel: committedValueLabel,\n onRemove: handleRemove,\n removable,\n });\n } else {\n registerFn.unregister(filterKey);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [committedValueLabel, filterKey, label, hidden, display, handleRemove]);\n\n const visibilityCtx = { filterKey, label, value };\n if (!resolveFilterVisible({ display, hidden }, visibilityCtx)) return null;\n\n const filteredOptions = searchText\n ? options.filter((opt) =>\n isPersonVariant\n ? matchPersonOptionSearch(opt as PersonOption, searchText)\n : opt.label.toLowerCase().includes(searchText.toLowerCase()),\n )\n : options;\n\n const handleConfirm = () => {\n onChange?.(localValue as FilterSelectValue);\n setOpen(false);\n };\n\n const handleDiscardDraft = () => {\n revertToCommitted();\n setOpen(false);\n };\n\n const handleOpenChange = (nextOpen: boolean) => {\n if (!nextOpen && multiple) {\n revertToCommitted();\n }\n setOpen(nextOpen);\n };\n\n const handleClickOption = (optVal: string | number) => {\n if (!multiple) {\n const isDefaultOption = defaultValue !== undefined && optVal === defaultValue;\n let next: string | number | undefined;\n if (localValue === optVal || isDefaultOption) {\n next = undefined;\n } else {\n next = optVal;\n }\n setLocalValue(next);\n onChange?.(next);\n setOpen(false);\n }\n };\n\n const handleToggleMulti = (optVal: string | number) => {\n const arr = (localValue as (string | number)[]) || [];\n if (arr.includes(optVal) && minSelection != null && arr.length <= minSelection) {\n return;\n }\n const next = arr.includes(optVal) ? arr.filter((v) => v !== optVal) : [...arr, optVal];\n setLocalValue(next);\n };\n\n const isActive = multiple\n ? Array.isArray(displayValue) && displayValue.length > 0\n : displayValue != null && displayValue !== '';\n\n return (\n <FilterPopover\n label={label}\n active={active || isActive}\n open={open}\n onOpenChange={handleOpenChange}\n onConfirm={multiple ? handleConfirm : undefined}\n onReset={multiple ? handleDiscardDraft : undefined}\n >\n {searchable && (\n <Search\n placeholder={`搜索${label}`}\n allowClear\n size=\"middle\"\n className={classNames('filter-select-search', styles['filter-select-search'])}\n value={searchText}\n onChange={(e) => setSearchText(e.target.value)}\n />\n )}\n\n <div className={classNames('filter-select-options', styles['filter-select-options'])}>\n {filteredOptions.map((opt) => (\n <div\n key={String(opt.value)}\n className={classNames('filter-select-option', styles['filter-select-option'],\n !multiple &&\n localValue === opt.value &&\n classNames('filter-select-option-selected', styles['filter-select-option-selected']),\n )}\n onClick={() =>\n multiple ? handleToggleMulti(opt.value) : handleClickOption(opt.value)\n }\n >\n {multiple && (\n <Checkbox\n checked={(localValue as (string | number)[])?.includes(opt.value)}\n onChange={() => handleToggleMulti(opt.value)}\n onClick={(e) => e.stopPropagation()}\n />\n )}\n {isPersonVariant ? (\n <PersonOptionRow option={opt as PersonOption} />\n ) : (\n <span>{opt.label}</span>\n )}\n {!multiple && !isPersonVariant && localValue === opt.value && (\n <Check className={classNames('filter-select-option-check', styles['filter-select-option-check'])} />\n )}\n </div>\n ))}\n {filteredOptions.length === 0 && (\n <div className={classNames('filter-select-empty', styles['filter-select-empty'])}>暂无数据</div>\n )}\n </div>\n\n {multiple && (localValue as (string | number)[])?.length > 0 && (\n <div className={classNames('filter-select-selected-bar', styles['filter-select-selected-bar'])}>\n <div className={classNames('filter-select-selected-label', styles['filter-select-selected-label'])}>已选:</div>\n <Space size={[4, 4]} wrap>\n {(localValue as (string | number)[]).map((v) => {\n const opt = options.find((o) => String(o.value) === String(v));\n const arr = (localValue as (string | number)[]) || [];\n const tagRemovable = minSelection == null || arr.length > minSelection;\n return (\n <span\n key={String(v)}\n className={classNames(\n 'filter-select-selected-tag',\n styles['filter-select-selected-tag'],\n !tagRemovable && styles['filter-select-selected-tag-disabled'],\n )}\n onClick={() => tagRemovable && handleToggleMulti(v)}\n >\n {opt?.label ?? String(v)}\n <X\n className={classNames(\n 'filter-select-selected-remove',\n styles['filter-select-selected-remove'],\n !tagRemovable && styles['filter-select-selected-remove-disabled'],\n )}\n />\n </span>\n );\n })}\n </Space>\n </div>\n )}\n </FilterPopover>\n );\n};\n\nexport default FilterSelect;\nexport type { FilterSelectProps };\n"],"names":["Search","Input","formatPersonValueLabel","opt","parts","matchPersonOptionSearch","keyword","lower","s","arraysEqual","a","b","sortedA","sortedB","v","i","toDisplayValue","value","defaultValue","defaultValues","multiple","arr","formatValueLabel","displayVal","options","isPersonVariant","_a","o","FilterSelect","filterKey","label","onChange","searchable","minSelection","variant","active","hidden","display","open","setOpen","useState","searchText","setSearchText","displayValue","localValue","setLocalValue","registerFn","useFilterRegister","onChangeRef","useRef","handleRemove","useMemo","selectedArr","canRemove","revertToCommitted","useEffect","nextDisplayValue","committedValueLabel","resolveFilterVisible","removable","filteredOptions","handleConfirm","handleDiscardDraft","handleOpenChange","nextOpen","handleClickOption","optVal","isDefaultOption","next","handleToggleMulti","isActive","jsxs","FilterPopover","jsx","classNames","styles","Checkbox","e","PersonOptionRow","Check","Space","tagRemovable","X"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/Filter/FilterSelect/index.tsx"],"sourcesContent":["import { Check, X } from '@/components/Icons';\nimport { Checkbox, Input, Space } from 'antd';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport PersonOptionRow from '../../Form/PersonOptionRow';\nimport FilterPopover from '../FilterPopover';\nimport type { BaseFilterProps, FilterOption, PersonOption } from '../types';\nimport { resolveFilterVisible } from '../types';\nimport { useFilterRegister } from '../useFilterState';\nimport styles from './style.module.scss';\nimport classNames from 'classnames';\n\nconst { Search } = Input;\n\nfunction formatPersonValueLabel(opt: PersonOption): string {\n const parts = [opt.label];\n if (opt.departmentName) parts.push(opt.departmentName);\n return parts.join(' · ');\n}\n\nfunction matchPersonOptionSearch(opt: PersonOption, keyword: string): boolean {\n const lower = keyword.toLowerCase();\n return [opt.label, opt.departmentName, opt.email, opt.phone, opt.employeeId]\n .filter(Boolean)\n .some((s) => String(s).toLowerCase().includes(lower));\n}\n\ntype FilterSelectValue = string | number | (string | number)[] | undefined;\n\nexport type { FilterSelectValue };\n\nfunction arraysEqual(a?: (string | number)[], b?: (string | number)[]): boolean {\n if (!a?.length && !b?.length) return true;\n if (!a || !b || a.length !== b.length) return false;\n const sortedA = [...a].map(String).sort();\n const sortedB = [...b].map(String).sort();\n return sortedA.every((v, i) => v === sortedB[i]);\n}\n\ninterface FilterSelectProps extends BaseFilterProps {\n options: FilterOption[];\n value?: FilterSelectValue;\n onChange?: (value: FilterSelectValue) => void;\n /** 默认值:与默认值相同时视为未筛选(除非 showDefaultAsSelected) */\n defaultValue?: string | number;\n /** 多选默认值:与默认集合相同时视为未筛选(除非 showDefaultAsSelected) */\n defaultValues?: (string | number)[];\n /** 为 true 时,value 等于默认仍展示在「您已选择」并保持选中态 */\n showDefaultAsSelected?: boolean;\n placeholder?: string;\n searchable?: boolean;\n /** 是否多选 */\n multiple?: boolean;\n /** 多选至少保留项数;达到下限时不允许移除已选标签 */\n minSelection?: number;\n /** 人员选项:展示部门与联系方式 */\n variant?: 'default' | 'person';\n}\n\nfunction toMultiArray(value: FilterSelectValue): (string | number)[] {\n if (Array.isArray(value)) return value;\n if (value != null && value !== '') return [value];\n return [];\n}\n\nfunction toDisplayValue(\n value: FilterSelectValue,\n defaultValue: string | number | undefined,\n defaultValues: (string | number)[] | undefined,\n multiple: boolean,\n showDefaultAsSelected: boolean,\n): string | number | (string | number)[] | undefined {\n if (multiple) {\n const arr = toMultiArray(value);\n // 等于默认集合时:对外视为「未筛选」(不亮 trigger / 不进「您已选择」)\n if (!showDefaultAsSelected && defaultValues?.length && arraysEqual(arr, defaultValues)) {\n return [];\n }\n return arr;\n }\n if (!showDefaultAsSelected && defaultValue !== undefined && value === defaultValue) {\n return undefined;\n }\n return value;\n}\n\n/** 草稿/面板用真实 value,避免 defaultValues 折叠成 [] 后全选勾选丢失 */\nfunction toDraftValue(\n value: FilterSelectValue,\n defaultValue: string | number | undefined,\n defaultValues: (string | number)[] | undefined,\n multiple: boolean,\n): string | number | (string | number)[] | undefined {\n if (multiple) return toMultiArray(value);\n return toDisplayValue(value, defaultValue, defaultValues, false, true);\n}\n\nfunction formatValueLabel(\n displayVal: string | number | (string | number)[] | undefined,\n options: FilterOption[],\n multiple: boolean,\n isPersonVariant: boolean,\n defaultValues?: (string | number)[],\n): string {\n if (multiple) {\n const arr = (displayVal as (string | number)[]) || [];\n if (!arr.length) return '';\n // 全选默认集合时用「全部」,避免「您已选择」被几十个厂名撑满\n if (defaultValues?.length && arraysEqual(arr, defaultValues)) {\n return '全部';\n }\n return arr\n .map((v) => options.find((o) => String(o.value) === String(v))?.label ?? String(v))\n .join('、');\n }\n if (displayVal == null) return '';\n const opt = options.find((o) => String(o.value) === String(displayVal));\n if (!opt) return String(displayVal);\n return isPersonVariant ? formatPersonValueLabel(opt as PersonOption) : opt.label;\n}\n\nconst FilterSelect: React.FC<FilterSelectProps> = ({\n filterKey,\n label,\n options = [],\n value,\n onChange,\n defaultValue,\n defaultValues,\n showDefaultAsSelected = false,\n searchable = false,\n multiple = false,\n minSelection,\n variant = 'default',\n active,\n hidden,\n display,\n}) => {\n const isPersonVariant = variant === 'person';\n const [open, setOpen] = useState(false);\n const [searchText, setSearchText] = useState('');\n const displayValue = toDisplayValue(\n value,\n defaultValue,\n defaultValues,\n multiple,\n showDefaultAsSelected,\n );\n const [localValue, setLocalValue] = useState<string | number | (string | number)[] | undefined>(\n () => toDraftValue(value, defaultValue, defaultValues, multiple) ?? (multiple ? [] : undefined),\n );\n\n // ── 自动注册到 CommonFilter ──\n const registerFn = useFilterRegister();\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n const handleRemove = useMemo(() => {\n const selectedArr = Array.isArray(displayValue)\n ? displayValue\n : displayValue != null && displayValue !== ''\n ? [displayValue]\n : [];\n const canRemove = !multiple || minSelection == null || selectedArr.length > minSelection;\n return () => {\n if (!canRemove) return;\n onChangeRef.current?.(undefined);\n };\n }, [displayValue, minSelection, multiple]);\n\n const revertToCommitted = () => {\n setLocalValue(\n toDraftValue(value, defaultValue, defaultValues, multiple) ?? (multiple ? [] : undefined),\n );\n setSearchText('');\n };\n\n // 同步外部 value 到内部 localValue(多选用真实 value,保留 defaultValues 全选勾选)\n useEffect(() => {\n const nextDraft = toDraftValue(value, defaultValue, defaultValues, multiple);\n setLocalValue(nextDraft ?? (multiple ? [] : undefined));\n const nextDisplay = toDisplayValue(\n value,\n defaultValue,\n defaultValues,\n multiple,\n showDefaultAsSelected,\n );\n if (\n nextDisplay === undefined ||\n nextDisplay === null ||\n (Array.isArray(nextDisplay) && nextDisplay.length === 0)\n ) {\n setSearchText('');\n }\n }, [value, defaultValue, defaultValues, multiple, showDefaultAsSelected]);\n\n const committedValueLabel = useMemo(\n () => formatValueLabel(displayValue, options, multiple, isPersonVariant, defaultValues),\n [options, displayValue, multiple, isPersonVariant, defaultValues],\n );\n\n useEffect(() => {\n if (!registerFn) return;\n const ctx = { filterKey, label, value };\n if (!resolveFilterVisible({ display, hidden }, ctx)) {\n registerFn.unregister(filterKey);\n return;\n }\n if (committedValueLabel) {\n const selectedArr = Array.isArray(displayValue)\n ? displayValue\n : displayValue != null && displayValue !== ''\n ? [displayValue]\n : [];\n const removable = !multiple || minSelection == null || selectedArr.length > minSelection;\n registerFn.register(filterKey, {\n label,\n valueLabel: committedValueLabel,\n onRemove: handleRemove,\n removable,\n });\n } else {\n registerFn.unregister(filterKey);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [committedValueLabel, filterKey, label, hidden, display, handleRemove]);\n\n const visibilityCtx = { filterKey, label, value };\n if (!resolveFilterVisible({ display, hidden }, visibilityCtx)) return null;\n\n const filteredOptions = searchText\n ? options.filter((opt) =>\n isPersonVariant\n ? matchPersonOptionSearch(opt as PersonOption, searchText)\n : opt.label.toLowerCase().includes(searchText.toLowerCase()),\n )\n : options;\n\n const handleConfirm = () => {\n onChange?.(localValue as FilterSelectValue);\n setOpen(false);\n };\n\n const handleDiscardDraft = () => {\n revertToCommitted();\n setOpen(false);\n };\n\n const handleOpenChange = (nextOpen: boolean) => {\n if (!nextOpen && multiple) {\n revertToCommitted();\n }\n setOpen(nextOpen);\n };\n\n const handleClickOption = (optVal: string | number) => {\n if (!multiple) {\n const isDefaultOption = defaultValue !== undefined && optVal === defaultValue;\n let next: string | number | undefined;\n if (localValue === optVal || isDefaultOption) {\n next = undefined;\n } else {\n next = optVal;\n }\n setLocalValue(next);\n onChange?.(next);\n setOpen(false);\n }\n };\n\n const handleToggleMulti = (optVal: string | number) => {\n const arr = (localValue as (string | number)[]) || [];\n const has = arr.some((v) => String(v) === String(optVal));\n if (has && minSelection != null && arr.length <= minSelection) {\n return;\n }\n const next = has ? arr.filter((v) => String(v) !== String(optVal)) : [...arr, optVal];\n setLocalValue(next);\n };\n\n const localMultiArr = (Array.isArray(localValue) ? localValue : []) as (string | number)[];\n const filteredSelectedCount = filteredOptions.filter((opt) =>\n localMultiArr.some((v) => String(v) === String(opt.value)),\n ).length;\n const allFilteredSelected =\n filteredOptions.length > 0 && filteredSelectedCount === filteredOptions.length;\n const someFilteredSelected = filteredSelectedCount > 0 && !allFilteredSelected;\n\n const handleToggleAll = (checked: boolean) => {\n const arr = localMultiArr;\n const filteredVals = filteredOptions.map((o) => o.value);\n if (checked) {\n const seen = new Set(arr.map(String));\n const next = [...arr];\n for (const v of filteredVals) {\n if (!seen.has(String(v))) {\n next.push(v);\n seen.add(String(v));\n }\n }\n setLocalValue(next);\n return;\n }\n const removeSet = new Set(filteredVals.map(String));\n let next = arr.filter((v) => !removeSet.has(String(v)));\n if (minSelection != null && next.length < minSelection) {\n next = arr.slice(0, minSelection);\n }\n setLocalValue(next);\n };\n\n const isActive = multiple\n ? Array.isArray(displayValue) && displayValue.length > 0\n : displayValue != null && displayValue !== '';\n\n return (\n <FilterPopover\n label={label}\n active={active || isActive}\n open={open}\n onOpenChange={handleOpenChange}\n onConfirm={multiple ? handleConfirm : undefined}\n onReset={multiple ? handleDiscardDraft : undefined}\n >\n {searchable && (\n <Search\n placeholder={`搜索${label}`}\n allowClear\n size=\"middle\"\n className={classNames('filter-select-search', styles['filter-select-search'])}\n value={searchText}\n onChange={(e) => setSearchText(e.target.value)}\n />\n )}\n\n <div className={classNames('filter-select-options', styles['filter-select-options'])}>\n {multiple && filteredOptions.length > 0 && (\n <div\n className={classNames(\n 'filter-select-option',\n styles['filter-select-option'],\n 'filter-select-select-all',\n styles['filter-select-select-all'],\n )}\n onClick={() => handleToggleAll(!allFilteredSelected)}\n >\n <Checkbox\n checked={allFilteredSelected}\n indeterminate={someFilteredSelected}\n onChange={(e) => handleToggleAll(e.target.checked)}\n onClick={(e) => e.stopPropagation()}\n />\n <span>全选</span>\n </div>\n )}\n {filteredOptions.map((opt) => (\n <div\n key={String(opt.value)}\n className={classNames(\n 'filter-select-option',\n styles['filter-select-option'],\n !multiple &&\n localValue === opt.value &&\n classNames(\n 'filter-select-option-selected',\n styles['filter-select-option-selected'],\n ),\n )}\n onClick={() => (multiple ? handleToggleMulti(opt.value) : handleClickOption(opt.value))}\n >\n {multiple && (\n <Checkbox\n checked={localMultiArr.some((v) => String(v) === String(opt.value))}\n onChange={() => handleToggleMulti(opt.value)}\n onClick={(e) => e.stopPropagation()}\n />\n )}\n {isPersonVariant ? (\n <PersonOptionRow option={opt as PersonOption} />\n ) : (\n <span>{opt.label}</span>\n )}\n {!multiple && !isPersonVariant && localValue === opt.value && (\n <Check\n className={classNames(\n 'filter-select-option-check',\n styles['filter-select-option-check'],\n )}\n />\n )}\n </div>\n ))}\n {filteredOptions.length === 0 && (\n <div className={classNames('filter-select-empty', styles['filter-select-empty'])}>\n 暂无数据\n </div>\n )}\n </div>\n\n {multiple && localMultiArr.length > 0 && (\n <div\n className={classNames('filter-select-selected-bar', styles['filter-select-selected-bar'])}\n >\n <div\n className={classNames(\n 'filter-select-selected-label',\n styles['filter-select-selected-label'],\n )}\n >\n 已选:\n </div>\n <div\n className={classNames(\n 'filter-select-selected-tags',\n styles['filter-select-selected-tags'],\n )}\n >\n <Space size={[4, 4]} wrap>\n {localMultiArr.map((v) => {\n const opt = options.find((o) => String(o.value) === String(v));\n const tagRemovable = minSelection == null || localMultiArr.length > minSelection;\n return (\n <span\n key={String(v)}\n className={classNames(\n 'filter-select-selected-tag',\n styles['filter-select-selected-tag'],\n !tagRemovable && styles['filter-select-selected-tag-disabled'],\n )}\n onClick={() => tagRemovable && handleToggleMulti(v)}\n >\n {opt?.label ?? String(v)}\n <X\n className={classNames(\n 'filter-select-selected-remove',\n styles['filter-select-selected-remove'],\n !tagRemovable && styles['filter-select-selected-remove-disabled'],\n )}\n />\n </span>\n );\n })}\n </Space>\n </div>\n </div>\n )}\n </FilterPopover>\n );\n};\n\nexport default FilterSelect;\nexport type { FilterSelectProps };\n"],"names":["Search","Input","formatPersonValueLabel","opt","parts","matchPersonOptionSearch","keyword","lower","s","arraysEqual","a","b","sortedA","sortedB","v","i","toMultiArray","value","toDisplayValue","defaultValue","defaultValues","multiple","showDefaultAsSelected","arr","toDraftValue","formatValueLabel","displayVal","options","isPersonVariant","_a","o","FilterSelect","filterKey","label","onChange","searchable","minSelection","variant","active","hidden","display","open","setOpen","useState","searchText","setSearchText","displayValue","localValue","setLocalValue","registerFn","useFilterRegister","onChangeRef","useRef","handleRemove","useMemo","selectedArr","canRemove","revertToCommitted","useEffect","nextDraft","nextDisplay","committedValueLabel","resolveFilterVisible","removable","filteredOptions","handleConfirm","handleDiscardDraft","handleOpenChange","nextOpen","handleClickOption","optVal","isDefaultOption","next","handleToggleMulti","has","localMultiArr","filteredSelectedCount","allFilteredSelected","someFilteredSelected","handleToggleAll","checked","filteredVals","seen","removeSet","isActive","jsxs","FilterPopover","jsx","classNames","styles","Checkbox","e","PersonOptionRow","Check","Space","tagRemovable","X"],"mappings":";;;;;;;;;;AAWA,MAAM,EAAE,QAAAA,OAAWC;AAEnB,SAASC,GAAuBC,GAA2B;AACzD,QAAMC,IAAQ,CAACD,EAAI,KAAK;AACxB,SAAIA,EAAI,kBAAgBC,EAAM,KAAKD,EAAI,cAAc,GAC9CC,EAAM,KAAK,KAAK;AACzB;AAEA,SAASC,GAAwBF,GAAmBG,GAA0B;AAC5E,QAAMC,IAAQD,EAAQ,YAAA;AACtB,SAAO,CAACH,EAAI,OAAOA,EAAI,gBAAgBA,EAAI,OAAOA,EAAI,OAAOA,EAAI,UAAU,EACxE,OAAO,OAAO,EACd,KAAK,CAACK,MAAM,OAAOA,CAAC,EAAE,YAAA,EAAc,SAASD,CAAK,CAAC;AACxD;AAMA,SAASE,EAAYC,GAAyBC,GAAkC;AAC9E,MAAI,EAACD,KAAA,QAAAA,EAAG,WAAU,EAACC,KAAA,QAAAA,EAAG,QAAQ,QAAO;AACrC,MAAI,CAACD,KAAK,CAACC,KAAKD,EAAE,WAAWC,EAAE,OAAQ,QAAO;AAC9C,QAAMC,IAAU,CAAC,GAAGF,CAAC,EAAE,IAAI,MAAM,EAAE,KAAA,GAC7BG,IAAU,CAAC,GAAGF,CAAC,EAAE,IAAI,MAAM,EAAE,KAAA;AACnC,SAAOC,EAAQ,MAAM,CAACE,GAAGC,MAAMD,MAAMD,EAAQE,CAAC,CAAC;AACjD;AAsBA,SAASC,EAAaC,GAA+C;AACnE,SAAI,MAAM,QAAQA,CAAK,IAAUA,IAC7BA,KAAS,QAAQA,MAAU,KAAW,CAACA,CAAK,IACzC,CAAA;AACT;AAEA,SAASC,EACPD,GACAE,GACAC,GACAC,GACAC,GACmD;AACnD,MAAID,GAAU;AACZ,UAAME,IAAMP,EAAaC,CAAK;AAE9B,WAAI,CAACK,MAAyBF,KAAA,QAAAA,EAAe,WAAUX,EAAYc,GAAKH,CAAa,IAC5E,CAAA,IAEFG;AAAA,EACT;AACA,MAAI,GAACD,KAAyBH,MAAiB,UAAaF,MAAUE;AAGtE,WAAOF;AACT;AAGA,SAASO,EACPP,GACAE,GACAC,GACAC,GACmD;AACnD,SAAIA,IAAiBL,EAAaC,CAAK,IAChCC,EAAeD,GAAOE,GAAcC,GAAe,IAAO,EAAI;AACvE;AAEA,SAASK,GACPC,GACAC,GACAN,GACAO,GACAR,GACQ;AACR,MAAIC,GAAU;AACZ,UAAME,IAAOG,KAAsC,CAAA;AACnD,WAAKH,EAAI,SAELH,KAAA,QAAAA,EAAe,UAAUX,EAAYc,GAAKH,CAAa,IAClD,OAEFG,EACJ,IAAI,CAACT,MAAA;;AAAM,eAAAe,IAAAF,EAAQ,KAAK,CAACG,MAAM,OAAOA,EAAE,KAAK,MAAM,OAAOhB,CAAC,CAAC,MAAjD,gBAAAe,EAAoD,UAAS,OAAOf,CAAC;AAAA,KAAC,EACjF,KAAK,GAAG,IAPa;AAAA,EAQ1B;AACA,MAAIY,KAAc,KAAM,QAAO;AAC/B,QAAMvB,IAAMwB,EAAQ,KAAK,CAACG,MAAM,OAAOA,EAAE,KAAK,MAAM,OAAOJ,CAAU,CAAC;AACtE,SAAKvB,IACEyB,IAAkB1B,GAAuBC,CAAmB,IAAIA,EAAI,QAD1D,OAAOuB,CAAU;AAEpC;AAEA,MAAMK,KAA4C,CAAC;AAAA,EACjD,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,SAAAN,IAAU,CAAA;AAAA,EACV,OAAAV;AAAA,EACA,UAAAiB;AAAA,EACA,cAAAf;AAAA,EACA,eAAAC;AAAA,EACA,uBAAAE,IAAwB;AAAA,EACxB,YAAAa,IAAa;AAAA,EACb,UAAAd,IAAW;AAAA,EACX,cAAAe;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,QAAAC;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC;AACF,MAAM;AACJ,QAAMZ,IAAkBS,MAAY,UAC9B,CAACI,IAAMC,CAAO,IAAIC,EAAS,EAAK,GAChC,CAACC,GAAYC,CAAa,IAAIF,EAAS,EAAE,GACzCG,IAAe5B;AAAA,IACnBD;AAAA,IACAE;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,EAAA,GAEI,CAACyB,GAAYC,CAAa,IAAIL;AAAA,IAClC,MAAMnB,EAAaP,GAAOE,GAAcC,GAAeC,CAAQ,MAAMA,IAAW,CAAA,IAAK;AAAA,EAAA,GAIjF4B,IAAaC,GAAA,GACbC,IAAcC,GAAOlB,CAAQ;AACnC,EAAAiB,EAAY,UAAUjB;AAEtB,QAAMmB,IAAeC,EAAQ,MAAM;AACjC,UAAMC,IAAc,MAAM,QAAQT,CAAY,IAC1CA,IACAA,KAAgB,QAAQA,MAAiB,KACvC,CAACA,CAAY,IACb,CAAA,GACAU,IAAY,CAACnC,KAAYe,KAAgB,QAAQmB,EAAY,SAASnB;AAC5E,WAAO,MAAM;;AACX,MAAKoB,OACL3B,IAAAsB,EAAY,YAAZ,QAAAtB,EAAA,KAAAsB,GAAsB;AAAA,IACxB;AAAA,EACF,GAAG,CAACL,GAAcV,GAAcf,CAAQ,CAAC,GAEnCoC,IAAoB,MAAM;AAC9B,IAAAT;AAAA,MACExB,EAAaP,GAAOE,GAAcC,GAAeC,CAAQ,MAAMA,IAAW,CAAA,IAAK;AAAA,IAAA,GAEjFwB,EAAc,EAAE;AAAA,EAClB;AAGA,EAAAa,EAAU,MAAM;AACd,UAAMC,IAAYnC,EAAaP,GAAOE,GAAcC,GAAeC,CAAQ;AAC3E,IAAA2B,EAAcW,MAActC,IAAW,CAAA,IAAK,OAAU;AACtD,UAAMuC,IAAc1C;AAAA,MAClBD;AAAA,MACAE;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,IAAA;AAEF,KAEEsC,KAAgB,QACf,MAAM,QAAQA,CAAW,KAAKA,EAAY,WAAW,MAEtDf,EAAc,EAAE;AAAA,EAEpB,GAAG,CAAC5B,GAAOE,GAAcC,GAAeC,GAAUC,CAAqB,CAAC;AAExE,QAAMuC,IAAsBP;AAAA,IAC1B,MAAM7B,GAAiBqB,GAAcnB,GAASN,GAAUO,GAAiBR,CAAa;AAAA,IACtF,CAACO,GAASmB,GAAczB,GAAUO,GAAiBR,CAAa;AAAA,EAAA;AA8BlE,MA3BAsC,EAAU,MAAM;AACd,QAAI,CAACT,EAAY;AAEjB,QAAI,CAACa,EAAqB,EAAE,SAAAtB,GAAS,QAAAD,EAAA,GADzB,EAAE,WAAAP,GAAW,OAAAC,GAAO,OAAAhB,EAAA,CACkB,GAAG;AACnD,MAAAgC,EAAW,WAAWjB,CAAS;AAC/B;AAAA,IACF;AACA,QAAI6B,GAAqB;AACvB,YAAMN,IAAc,MAAM,QAAQT,CAAY,IAC1CA,IACAA,KAAgB,QAAQA,MAAiB,KACvC,CAACA,CAAY,IACb,CAAA,GACAiB,IAAY,CAAC1C,KAAYe,KAAgB,QAAQmB,EAAY,SAASnB;AAC5E,MAAAa,EAAW,SAASjB,GAAW;AAAA,QAC7B,OAAAC;AAAA,QACA,YAAY4B;AAAA,QACZ,UAAUR;AAAA,QACV,WAAAU;AAAA,MAAA,CACD;AAAA,IACH;AACE,MAAAd,EAAW,WAAWjB,CAAS;AAAA,EAGnC,GAAG,CAAC6B,GAAqB7B,GAAWC,GAAOM,GAAQC,GAASa,CAAY,CAAC,GAGrE,CAACS,EAAqB,EAAE,SAAAtB,GAAS,QAAAD,KADf,EAAE,WAAAP,GAAW,OAAAC,GAAO,OAAAhB,EAAA,CACkB,EAAG,QAAO;AAEtE,QAAM+C,IAAkBpB,IACpBjB,EAAQ;AAAA,IAAO,CAACxB,MACdyB,IACIvB,GAAwBF,GAAqByC,CAAU,IACvDzC,EAAI,MAAM,YAAA,EAAc,SAASyC,EAAW,aAAa;AAAA,EAAA,IAE/DjB,GAEEsC,KAAgB,MAAM;AAC1B,IAAA/B,KAAA,QAAAA,EAAWa,IACXL,EAAQ,EAAK;AAAA,EACf,GAEMwB,KAAqB,MAAM;AAC/B,IAAAT,EAAA,GACAf,EAAQ,EAAK;AAAA,EACf,GAEMyB,KAAmB,CAACC,MAAsB;AAC9C,IAAI,CAACA,KAAY/C,KACfoC,EAAA,GAEFf,EAAQ0B,CAAQ;AAAA,EAClB,GAEMC,KAAoB,CAACC,MAA4B;AACrD,QAAI,CAACjD,GAAU;AACb,YAAMkD,IAAkBpD,MAAiB,UAAamD,MAAWnD;AACjE,UAAIqD;AACJ,MAAIzB,MAAeuB,KAAUC,IAC3BC,IAAO,SAEPA,IAAOF,GAETtB,EAAcwB,CAAI,GAClBtC,KAAA,QAAAA,EAAWsC,IACX9B,EAAQ,EAAK;AAAA,IACf;AAAA,EACF,GAEM+B,IAAoB,CAACH,MAA4B;AACrD,UAAM/C,IAAOwB,KAAsC,CAAA,GAC7C2B,IAAMnD,EAAI,KAAK,CAACT,MAAM,OAAOA,CAAC,MAAM,OAAOwD,CAAM,CAAC;AACxD,QAAII,KAAOtC,KAAgB,QAAQb,EAAI,UAAUa;AAC/C;AAEF,UAAMoC,IAAOE,IAAMnD,EAAI,OAAO,CAACT,MAAM,OAAOA,CAAC,MAAM,OAAOwD,CAAM,CAAC,IAAI,CAAC,GAAG/C,GAAK+C,CAAM;AACpF,IAAAtB,EAAcwB,CAAI;AAAA,EACpB,GAEMG,IAAiB,MAAM,QAAQ5B,CAAU,IAAIA,IAAa,CAAA,GAC1D6B,IAAwBZ,EAAgB;AAAA,IAAO,CAAC7D,MACpDwE,EAAc,KAAK,CAAC7D,MAAM,OAAOA,CAAC,MAAM,OAAOX,EAAI,KAAK,CAAC;AAAA,EAAA,EACzD,QACI0E,IACJb,EAAgB,SAAS,KAAKY,MAA0BZ,EAAgB,QACpEc,KAAuBF,IAAwB,KAAK,CAACC,GAErDE,IAAkB,CAACC,MAAqB;AAC5C,UAAMzD,IAAMoD,GACNM,IAAejB,EAAgB,IAAI,CAAClC,MAAMA,EAAE,KAAK;AACvD,QAAIkD,GAAS;AACX,YAAME,IAAO,IAAI,IAAI3D,EAAI,IAAI,MAAM,CAAC,GAC9BiD,IAAO,CAAC,GAAGjD,CAAG;AACpB,iBAAWT,KAAKmE;AACd,QAAKC,EAAK,IAAI,OAAOpE,CAAC,CAAC,MACrB0D,EAAK,KAAK1D,CAAC,GACXoE,EAAK,IAAI,OAAOpE,CAAC,CAAC;AAGtB,MAAAkC,EAAcwB,CAAI;AAClB;AAAA,IACF;AACA,UAAMW,IAAY,IAAI,IAAIF,EAAa,IAAI,MAAM,CAAC;AAClD,QAAIT,IAAOjD,EAAI,OAAO,CAACT,MAAM,CAACqE,EAAU,IAAI,OAAOrE,CAAC,CAAC,CAAC;AACtD,IAAIsB,KAAgB,QAAQoC,EAAK,SAASpC,MACxCoC,IAAOjD,EAAI,MAAM,GAAGa,CAAY,IAElCY,EAAcwB,CAAI;AAAA,EACpB,GAEMY,KAAW/D,IACb,MAAM,QAAQyB,CAAY,KAAKA,EAAa,SAAS,IACrDA,KAAgB,QAAQA,MAAiB;AAE7C,SACE,gBAAAuC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAArD;AAAA,MACA,QAAQK,KAAU8C;AAAA,MAClB,MAAA3C;AAAA,MACA,cAAc0B;AAAA,MACd,WAAW9C,IAAW4C,KAAgB;AAAA,MACtC,SAAS5C,IAAW6C,KAAqB;AAAA,MAExC,UAAA;AAAA,QAAA/B,KACC,gBAAAoD;AAAA,UAACvF;AAAA,UAAA;AAAA,YACC,aAAa,KAAKiC,CAAK;AAAA,YACvB,YAAU;AAAA,YACV,MAAK;AAAA,YACL,WAAWuD,EAAW,wBAAwBC,EAAO,sBAAsB,CAAC;AAAA,YAC5E,OAAO7C;AAAA,YACP,UAAU,CAAC,MAAMC,EAAc,EAAE,OAAO,KAAK;AAAA,UAAA;AAAA,QAAA;AAAA,QAIjD,gBAAAwC,EAAC,SAAI,WAAWG,EAAW,yBAAyBC,EAAO,uBAAuB,CAAC,GAChF,UAAA;AAAA,UAAApE,KAAY2C,EAAgB,SAAS,KACpC,gBAAAqB;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWG;AAAA,gBACT;AAAA,gBACAC,EAAO,sBAAsB;AAAA,gBAC7B;AAAA,gBACAA,EAAO,0BAA0B;AAAA,cAAA;AAAA,cAEnC,SAAS,MAAMV,EAAgB,CAACF,CAAmB;AAAA,cAEnD,UAAA;AAAA,gBAAA,gBAAAU;AAAA,kBAACG;AAAA,kBAAA;AAAA,oBACC,SAASb;AAAA,oBACT,eAAeC;AAAA,oBACf,UAAU,CAAC,MAAMC,EAAgB,EAAE,OAAO,OAAO;AAAA,oBACjD,SAAS,CAAC,MAAM,EAAE,gBAAA;AAAA,kBAAgB;AAAA,gBAAA;AAAA,gBAEpC,gBAAAQ,EAAC,UAAK,UAAA,KAAA,CAAE;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGXvB,EAAgB,IAAI,CAAC7D,MACpB,gBAAAkF;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC,WAAWG;AAAA,gBACT;AAAA,gBACAC,EAAO,sBAAsB;AAAA,gBAC7B,CAACpE,KACC0B,MAAe5C,EAAI,SACnBqF;AAAA,kBACE;AAAA,kBACAC,EAAO,+BAA+B;AAAA,gBAAA;AAAA,cACxC;AAAA,cAEJ,SAAS,MAAOpE,IAAWoD,EAAkBtE,EAAI,KAAK,IAAIkE,GAAkBlE,EAAI,KAAK;AAAA,cAEpF,UAAA;AAAA,gBAAAkB,KACC,gBAAAkE;AAAA,kBAACG;AAAA,kBAAA;AAAA,oBACC,SAASf,EAAc,KAAK,CAAC7D,MAAM,OAAOA,CAAC,MAAM,OAAOX,EAAI,KAAK,CAAC;AAAA,oBAClE,UAAU,MAAMsE,EAAkBtE,EAAI,KAAK;AAAA,oBAC3C,SAAS,CAACwF,MAAMA,EAAE,gBAAA;AAAA,kBAAgB;AAAA,gBAAA;AAAA,gBAGrC/D,sBACEgE,IAAA,EAAgB,QAAQzF,GAAqB,IAE9C,gBAAAoF,EAAC,QAAA,EAAM,UAAApF,EAAI,MAAA,CAAM;AAAA,gBAElB,CAACkB,KAAY,CAACO,KAAmBmB,MAAe5C,EAAI,SACnD,gBAAAoF;AAAA,kBAACM;AAAA,kBAAA;AAAA,oBACC,WAAWL;AAAA,sBACT;AAAA,sBACAC,EAAO,4BAA4B;AAAA,oBAAA;AAAA,kBACrC;AAAA,gBAAA;AAAA,cACF;AAAA,YAAA;AAAA,YA/BG,OAAOtF,EAAI,KAAK;AAAA,UAAA,CAkCxB;AAAA,UACA6D,EAAgB,WAAW,KAC1B,gBAAAuB,EAAC,OAAA,EAAI,WAAWC,EAAW,uBAAuBC,EAAO,qBAAqB,CAAC,GAAG,UAAA,OAAA,CAElF;AAAA,QAAA,GAEJ;AAAA,QAECpE,KAAYsD,EAAc,SAAS,KAClC,gBAAAU;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWG,EAAW,8BAA8BC,EAAO,4BAA4B,CAAC;AAAA,YAExF,UAAA;AAAA,cAAA,gBAAAF;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAWC;AAAA,oBACT;AAAA,oBACAC,EAAO,8BAA8B;AAAA,kBAAA;AAAA,kBAExC,UAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,cAGD,gBAAAF;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAWC;AAAA,oBACT;AAAA,oBACAC,EAAO,6BAA6B;AAAA,kBAAA;AAAA,kBAGtC,UAAA,gBAAAF,EAACO,IAAA,EAAM,MAAM,CAAC,GAAG,CAAC,GAAG,MAAI,IACtB,UAAAnB,EAAc,IAAI,CAAC7D,MAAM;AACxB,0BAAMX,IAAMwB,EAAQ,KAAK,CAACG,MAAM,OAAOA,EAAE,KAAK,MAAM,OAAOhB,CAAC,CAAC,GACvDiF,IAAe3D,KAAgB,QAAQuC,EAAc,SAASvC;AACpE,2BACE,gBAAAiD;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBAEC,WAAWG;AAAA,0BACT;AAAA,0BACAC,EAAO,4BAA4B;AAAA,0BACnC,CAACM,KAAgBN,EAAO,qCAAqC;AAAA,wBAAA;AAAA,wBAE/D,SAAS,MAAMM,KAAgBtB,EAAkB3D,CAAC;AAAA,wBAEjD,UAAA;AAAA,2BAAAX,KAAA,gBAAAA,EAAK,UAAS,OAAOW,CAAC;AAAA,0BACvB,gBAAAyE;AAAA,4BAACS;AAAA,4BAAA;AAAA,8BACC,WAAWR;AAAA,gCACT;AAAA,gCACAC,EAAO,+BAA+B;AAAA,gCACtC,CAACM,KAAgBN,EAAO,wCAAwC;AAAA,8BAAA;AAAA,4BAClE;AAAA,0BAAA;AAAA,wBACF;AAAA,sBAAA;AAAA,sBAfK,OAAO3E,CAAC;AAAA,oBAAA;AAAA,kBAkBnB,CAAC,EAAA,CACH;AAAA,gBAAA;AAAA,cAAA;AAAA,YACF;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAIR;"}
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
const e = {
|
|
2
|
-
"filter-select-search": "_filter-select-
|
|
3
|
-
"filter-select-options": "_filter-select-
|
|
4
|
-
"filter-select-option": "_filter-select-
|
|
5
|
-
"filter-select-option-selected": "_filter-select-option-
|
|
6
|
-
"filter-select-option-check": "_filter-select-option-
|
|
7
|
-
"filter-select-empty": "_filter-select-
|
|
8
|
-
"filter-select-
|
|
9
|
-
"filter-select-selected-
|
|
10
|
-
"filter-select-selected-
|
|
11
|
-
"filter-select-selected-
|
|
12
|
-
"filter-select-selected-
|
|
13
|
-
"filter-select-selected-
|
|
2
|
+
"filter-select-search": "_filter-select-search_1wwy0_1",
|
|
3
|
+
"filter-select-options": "_filter-select-options_1wwy0_5",
|
|
4
|
+
"filter-select-option": "_filter-select-option_1wwy0_5",
|
|
5
|
+
"filter-select-option-selected": "_filter-select-option-selected_1wwy0_23",
|
|
6
|
+
"filter-select-option-check": "_filter-select-option-check_1wwy0_28",
|
|
7
|
+
"filter-select-empty": "_filter-select-empty_1wwy0_34",
|
|
8
|
+
"filter-select-select-all": "_filter-select-select-all_1wwy0_42",
|
|
9
|
+
"filter-select-selected-bar": "_filter-select-selected-bar_1wwy0_50",
|
|
10
|
+
"filter-select-selected-label": "_filter-select-selected-label_1wwy0_57",
|
|
11
|
+
"filter-select-selected-tags": "_filter-select-selected-tags_1wwy0_63",
|
|
12
|
+
"filter-select-selected-tag": "_filter-select-selected-tag_1wwy0_63",
|
|
13
|
+
"filter-select-selected-tag-disabled": "_filter-select-selected-tag-disabled_1wwy0_81",
|
|
14
|
+
"filter-select-selected-remove": "_filter-select-selected-remove_1wwy0_86",
|
|
15
|
+
"filter-select-selected-remove-disabled": "_filter-select-selected-remove-disabled_1wwy0_90"
|
|
14
16
|
};
|
|
15
17
|
export {
|
|
16
18
|
e as default
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"style.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
|