@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.
@@ -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 N, jsx as v } from "react/jsx-runtime";
2
- import { Check as W, X as Y } from "../../Icons/index.js";
3
- import { Input as Z, Checkbox as _, Space as K } from "antd";
4
- import { useState as D, useRef as V, useMemo as z, useEffect as B } from "react";
5
- import ee from "../../Form/PersonOptionRow/index.js";
6
- import re from "../FilterPopover/index.js";
7
- import { resolveFilterVisible as E } from "../types.js";
8
- import { useFilterRegister as te } from "../useFilterState.js";
9
- import m from "./style.module.scss.js";
10
- import h from "classnames";
11
- const { Search: se } = Z;
12
- function ne(r) {
13
- const t = [r.label];
14
- return r.departmentName && t.push(r.departmentName), t.join(" · ");
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 ce(r, t) {
17
- const o = t.toLowerCase();
18
- return [r.label, r.departmentName, r.email, r.phone, r.employeeId].filter(Boolean).some((l) => String(l).toLowerCase().includes(o));
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 ie(r, t) {
21
- if (!(r != null && r.length) && !(t != null && t.length)) return !0;
22
- if (!r || !t || r.length !== t.length) return !1;
23
- const o = [...r].map(String).sort(), l = [...t].map(String).sort();
24
- return o.every((c, d) => c === l[d]);
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 I(r, t, o, l) {
27
- if (l) {
28
- const c = Array.isArray(r) ? r : r != null && r !== "" ? [r] : [];
29
- return o != null && o.length && ie(c, o) ? [] : c;
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 (!(t !== void 0 && r === t))
34
+ if (!(!l && s !== void 0 && r === s))
32
35
  return r;
33
36
  }
34
- function oe(r, t, o, l) {
35
- if (o) {
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 > 0 ? d.map((u) => {
38
- var S;
39
- return ((S = t.find((s) => String(s.value) === String(u))) == null ? void 0 : S.label) ?? String(u);
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 c = t.find((d) => String(d.value) === String(r));
44
- return c ? l ? ne(c) : c.label : String(r);
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 Ne = ({
52
+ const Re = ({
47
53
  filterKey: r,
48
- label: t,
49
- options: o = [],
50
- value: l,
51
- onChange: c,
52
- defaultValue: d,
53
- defaultValues: u,
54
- searchable: S = !1,
55
- multiple: s = !1,
56
- minSelection: g,
57
- variant: M = "default",
58
- active: q,
59
- hidden: C,
60
- display: O
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 x = M === "person", [X, b] = D(!1), [y, R] = D(""), n = I(l, d, u, s), [a, k] = D(
63
- n ?? (s ? [] : void 0)
64
- ), L = te(), w = V(c);
65
- w.current = c;
66
- const F = z(() => {
67
- const e = Array.isArray(n) ? n : n != null && n !== "" ? [n] : [], i = !s || g == null || e.length > g;
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 f;
70
- i && ((f = w.current) == null || f.call(w, void 0));
82
+ var c;
83
+ t && ((c = R.current) == null || c.call(R, void 0));
71
84
  };
72
- }, [n, g, s]), j = () => {
73
- k(n ?? (s ? [] : void 0)), R("");
85
+ }, [f, h, n]), $ = () => {
86
+ y(
87
+ I(o, a, d, n) ?? (n ? [] : void 0)
88
+ ), j("");
74
89
  };
75
- B(() => {
76
- const e = I(l, d, u, s);
77
- k(e ?? (s ? [] : void 0)), (e == null || Array.isArray(e) && e.length === 0) && R("");
78
- }, [l, d, u, s]);
79
- const P = z(
80
- () => oe(n, o, s, x),
81
- [o, n, s, x]
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 (B(() => {
84
- if (!L) return;
85
- if (!E({ display: O, hidden: C }, { filterKey: r, label: t, value: l })) {
86
- L.unregister(r);
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 (P) {
90
- const i = Array.isArray(n) ? n : n != null && n !== "" ? [n] : [], f = !s || g == null || i.length > g;
91
- L.register(r, {
92
- label: t,
93
- valueLabel: P,
94
- onRemove: F,
95
- removable: f
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
- L.unregister(r);
99
- }, [P, r, t, C, O, F]), !E({ display: O, hidden: C }, { filterKey: r, label: t, value: l })) return null;
100
- const T = y ? o.filter(
101
- (e) => x ? ce(e, y) : e.label.toLowerCase().includes(y.toLowerCase())
102
- ) : o, $ = () => {
103
- c == null || c(a), b(!1);
104
- }, G = () => {
105
- j(), b(!1);
106
- }, H = (e) => {
107
- !e && s && j(), b(e);
108
- }, J = (e) => {
109
- if (!s) {
110
- const i = d !== void 0 && e === d;
111
- let f;
112
- a === e || i ? f = void 0 : f = e, k(f), c == null || c(f), b(!1);
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
- }, p = (e) => {
115
- const i = a || [];
116
- if (i.includes(e) && g != null && i.length <= g)
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
- const f = i.includes(e) ? i.filter((A) => A !== e) : [...i, e];
119
- k(f);
120
- }, Q = s ? Array.isArray(n) && n.length > 0 : n != null && n !== "";
121
- return /* @__PURE__ */ N(
122
- re,
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: t,
125
- active: q || Q,
126
- open: X,
127
- onOpenChange: H,
128
- onConfirm: s ? $ : void 0,
129
- onReset: s ? G : void 0,
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
- S && /* @__PURE__ */ v(
132
- se,
168
+ w && /* @__PURE__ */ m(
169
+ ve,
133
170
  {
134
- placeholder: `搜索${t}`,
171
+ placeholder: `搜索${s}`,
135
172
  allowClear: !0,
136
173
  size: "middle",
137
- className: h("filter-select-search", m["filter-select-search"]),
138
- value: y,
139
- onChange: (e) => R(e.target.value)
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__ */ N("div", { className: h("filter-select-options", m["filter-select-options"]), children: [
143
- T.map((e) => /* @__PURE__ */ N(
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: h(
183
+ className: v(
147
184
  "filter-select-option",
148
- m["filter-select-option"],
149
- !s && a === e.value && h("filter-select-option-selected", m["filter-select-option-selected"])
185
+ g["filter-select-option"],
186
+ "filter-select-select-all",
187
+ g["filter-select-select-all"]
150
188
  ),
151
- onClick: () => s ? p(e.value) : J(e.value),
189
+ onClick: () => H(!z),
152
190
  children: [
153
- s && /* @__PURE__ */ v(
154
- _,
191
+ /* @__PURE__ */ m(
192
+ Q,
155
193
  {
156
- checked: a == null ? void 0 : a.includes(e.value),
157
- onChange: () => p(e.value),
158
- onClick: (i) => i.stopPropagation()
194
+ checked: z,
195
+ indeterminate: ce,
196
+ onChange: (e) => H(e.target.checked),
197
+ onClick: (e) => e.stopPropagation()
159
198
  }
160
199
  ),
161
- x ? /* @__PURE__ */ v(ee, { option: e }) : /* @__PURE__ */ v("span", { children: e.label }),
162
- !s && !x && a === e.value && /* @__PURE__ */ v(W, { className: h("filter-select-option-check", m["filter-select-option-check"]) })
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
- T.length === 0 && /* @__PURE__ */ v("div", { className: h("filter-select-empty", m["filter-select-empty"]), children: "暂无数据" })
239
+ A.length === 0 && /* @__PURE__ */ m("div", { className: v("filter-select-empty", g["filter-select-empty"]), children: "暂无数据" })
168
240
  ] }),
169
- s && (a == null ? void 0 : a.length) > 0 && /* @__PURE__ */ N("div", { className: h("filter-select-selected-bar", m["filter-select-selected-bar"]), children: [
170
- /* @__PURE__ */ v("div", { className: h("filter-select-selected-label", m["filter-select-selected-label"]), children: "已选:" }),
171
- /* @__PURE__ */ v(K, { size: [4, 4], wrap: !0, children: a.map((e) => {
172
- const i = o.find((U) => String(U.value) === String(e)), f = a || [], A = g == null || f.length > g;
173
- return /* @__PURE__ */ N(
174
- "span",
175
- {
176
- className: h(
177
- "filter-select-selected-tag",
178
- m["filter-select-selected-tag"],
179
- !A && m["filter-select-selected-tag-disabled"]
180
- ),
181
- onClick: () => A && p(e),
182
- children: [
183
- (i == null ? void 0 : i.label) ?? String(e),
184
- /* @__PURE__ */ v(
185
- Y,
186
- {
187
- className: h(
188
- "filter-select-selected-remove",
189
- m["filter-select-selected-remove"],
190
- !A && m["filter-select-selected-remove-disabled"]
191
- )
192
- }
193
- )
194
- ]
195
- },
196
- String(e)
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
- Ne as default
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":"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"}
@@ -1,16 +1,18 @@
1
1
  const e = {
2
- "filter-select-search": "_filter-select-search_11rsz_1",
3
- "filter-select-options": "_filter-select-options_11rsz_5",
4
- "filter-select-option": "_filter-select-option_11rsz_5",
5
- "filter-select-option-selected": "_filter-select-option-selected_11rsz_23",
6
- "filter-select-option-check": "_filter-select-option-check_11rsz_28",
7
- "filter-select-empty": "_filter-select-empty_11rsz_34",
8
- "filter-select-selected-bar": "_filter-select-selected-bar_11rsz_42",
9
- "filter-select-selected-label": "_filter-select-selected-label_11rsz_49",
10
- "filter-select-selected-tag": "_filter-select-selected-tag_11rsz_55",
11
- "filter-select-selected-tag-disabled": "_filter-select-selected-tag-disabled_11rsz_68",
12
- "filter-select-selected-remove": "_filter-select-selected-remove_11rsz_73",
13
- "filter-select-selected-remove-disabled": "_filter-select-selected-remove-disabled_11rsz_77"
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":";;;;;;;;;;;;;;;;"}