@hkyhy/marsun-components-core 0.1.31 → 0.1.32

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.
@@ -1,57 +1,57 @@
1
- import { jsx as u, jsxs as Z } from "react/jsx-runtime";
2
- import { Input as br, Spin as yr, Cascader as K, Space as Ar } from "antd";
3
- import h from "classnames";
4
- import { useRef as $, useState as F, useEffect as q, useMemo as L, useCallback as O } from "react";
5
- import Lr from "../FilterPopover/index.js";
1
+ import { jsx as g, jsxs as K } from "react/jsx-runtime";
2
+ import { Input as Lr, Spin as wr, Cascader as O, Space as pr } from "antd";
3
+ import y from "classnames";
4
+ import { useRef as _, useState as M, useEffect as $, useMemo as L, useCallback as k } from "react";
5
+ import Mr from "../FilterPopover/index.js";
6
6
  import { resolveFilterVisible as C } from "../types.js";
7
- import { useFilterFieldBridge as pr, useFilterRegister as wr } from "../useFilterState.js";
7
+ import { useFilterFieldBridge as Nr, useFilterRegister as Fr } from "../useFilterState.js";
8
8
  import v from "./style.module.scss.js";
9
- import Mr from "../../Empty/Empty.js";
10
- const { Search: Nr } = br;
11
- function rr(r, i = (c) => c.name) {
12
- return r != null && r.length ? r.map((c) => {
13
- var l;
14
- const t = (l = c.children) != null && l.length ? rr(c.children, i) : void 0;
9
+ import Tr from "../../Empty/Empty.js";
10
+ const { Search: Vr } = Lr;
11
+ function rr(r, i = (s) => s.name) {
12
+ return r != null && r.length ? r.map((s) => {
13
+ var a;
14
+ const t = (a = s.children) != null && a.length ? rr(s.children, i) : void 0;
15
15
  return {
16
- value: c.id,
17
- label: i(c),
16
+ value: s.id,
17
+ label: i(s),
18
18
  children: t,
19
19
  isLeaf: !(t != null && t.length)
20
20
  };
21
21
  }) : [];
22
22
  }
23
- function Fr(r, i) {
23
+ function Ir(r, i) {
24
24
  if (!i.trim()) return r;
25
- const c = i.toLowerCase(), t = (l) => {
26
- var n;
27
- const s = [];
28
- for (const e of l) {
29
- const a = typeof e.label == "string" || typeof e.label == "number" ? String(e.label) : String(e.value), f = (n = e.children) != null && n.length ? t(e.children) : [];
30
- (a.toLowerCase().includes(c) || f.length > 0) && s.push({
25
+ const s = i.toLowerCase(), t = (a) => {
26
+ var c;
27
+ const n = [];
28
+ for (const e of a) {
29
+ const o = typeof e.label == "string" || typeof e.label == "number" ? String(e.label) : String(e.value), u = (c = e.children) != null && c.length ? t(e.children) : [];
30
+ (o.toLowerCase().includes(s) || u.length > 0) && n.push({
31
31
  ...e,
32
- children: f.length > 0 ? f : void 0,
33
- isLeaf: !(f.length > 0)
32
+ children: u.length > 0 ? u : void 0,
33
+ isLeaf: !(u.length > 0)
34
34
  });
35
35
  }
36
- return s;
36
+ return n;
37
37
  };
38
38
  return t(r);
39
39
  }
40
- function Vr(r) {
41
- const i = /* @__PURE__ */ new Map(), c = (t, l) => {
42
- var s;
43
- for (const n of t) {
44
- const e = [...l, String(n.value)];
45
- (s = n.children) != null && s.length ? c(n.children, e) : i.set(String(n.value), e);
40
+ function kr(r) {
41
+ const i = /* @__PURE__ */ new Map(), s = (t, a) => {
42
+ var n;
43
+ for (const c of t) {
44
+ const e = [...a, String(c.value)];
45
+ (n = c.children) != null && n.length ? s(c.children, e) : i.set(String(c.value), e);
46
46
  }
47
47
  };
48
- return c(r, []), i;
48
+ return s(r, []), i;
49
49
  }
50
- function Tr(r, i) {
51
- let c = r, t = null;
52
- for (const l of i) {
53
- if (t = c.find((s) => String(s.value) === String(l)) ?? null, !t) return null;
54
- c = t.children ?? [];
50
+ function zr(r, i) {
51
+ let s = r, t = null;
52
+ for (const a of i) {
53
+ if (t = s.find((n) => String(n.value) === String(a)) ?? null, !t) return null;
54
+ s = t.children ?? [];
55
55
  }
56
56
  return t;
57
57
  }
@@ -59,251 +59,261 @@ function er(r) {
59
59
  var i;
60
60
  return (i = r.children) != null && i.length ? r.children.flatMap(er) : [String(r.value)];
61
61
  }
62
- function P(r, i, c, t) {
63
- const l = [], s = /* @__PURE__ */ new Set(), n = (e) => {
64
- !e || s.has(e) || (s.add(e), l.push(e));
62
+ function P(r, i, s, t) {
63
+ const a = [], n = /* @__PURE__ */ new Set(), c = (e) => {
64
+ !e || n.has(e) || (n.add(e), a.push(e));
65
65
  };
66
66
  for (const e of r) {
67
67
  if (!(e != null && e.length)) continue;
68
- const a = String(e[e.length - 1]);
69
- if (c.has(a)) {
70
- n(a);
68
+ const o = String(e[e.length - 1]);
69
+ if (s.has(o)) {
70
+ c(o);
71
71
  continue;
72
72
  }
73
73
  if (!t) {
74
- n(a);
74
+ c(o);
75
75
  continue;
76
76
  }
77
- const f = Tr(i, e.map(String));
78
- f && er(f).forEach(n);
77
+ const u = zr(i, e.map(String));
78
+ u && er(u).forEach(c);
79
79
  }
80
- return l;
80
+ return a;
81
81
  }
82
- function kr(r) {
83
- const i = /* @__PURE__ */ new Map(), c = (t) => {
84
- var l;
85
- for (const s of t) {
86
- const n = typeof s.label == "string" || typeof s.label == "number" ? String(s.label) : String(s.value);
87
- i.set(String(s.value), n), (l = s.children) != null && l.length && c(s.children);
82
+ function jr(r) {
83
+ const i = /* @__PURE__ */ new Map(), s = (t) => {
84
+ var a;
85
+ for (const n of t) {
86
+ const c = typeof n.label == "string" || typeof n.label == "number" ? String(n.label) : String(n.value);
87
+ i.set(String(n.value), c), (a = n.children) != null && a.length && s(n.children);
88
88
  }
89
89
  };
90
- return c(r), i;
90
+ return s(r), i;
91
91
  }
92
- function zr(r, i, c) {
93
- if (r == null || r === "") return c ? [] : void 0;
94
- if (c)
95
- return (Array.isArray(r) ? r : [r]).map((s) => i.get(String(s)) || [String(s)]).filter((s) => s.length);
92
+ function Rr(r, i, s) {
93
+ if (r == null || r === "") return s ? [] : void 0;
94
+ if (s)
95
+ return (Array.isArray(r) ? r : [r]).map((n) => i.get(String(n)) || [String(n)]).filter((n) => n.length);
96
96
  const t = Array.isArray(r) ? r[0] : r;
97
97
  if (!(t == null || t === ""))
98
98
  return i.get(String(t)) || [String(t)];
99
99
  }
100
- function Ir(r, i, c, t, l) {
100
+ function Br(r, i, s, t, a) {
101
101
  if (r == null || Array.isArray(r) && r.length === 0)
102
102
  return i ? [] : void 0;
103
103
  if (i) {
104
- const e = r.filter((a) => Array.isArray(a) && a.length);
104
+ const e = r.filter((o) => Array.isArray(o) && o.length);
105
105
  return P(
106
- e.map((a) => a.map(String)),
106
+ e.map((o) => o.map(String)),
107
107
  t,
108
- l,
109
- c
108
+ a,
109
+ s
110
110
  );
111
111
  }
112
- const s = r.map(String);
113
- if (!s.length) return;
114
- const n = P([s], t, l, c);
115
- if (!(c && n.length === 0))
116
- return n[0];
112
+ const n = r.map(String);
113
+ if (!n.length) return;
114
+ const c = P([n], t, a, s);
115
+ if (!(s && c.length === 0))
116
+ return c[0];
117
117
  }
118
- const qr = ({
118
+ const Jr = ({
119
119
  filterKey: r,
120
120
  label: i,
121
- treeData: c,
121
+ treeData: s,
122
122
  options: t,
123
- loadData: l,
124
- enabled: s = !0,
125
- value: n,
123
+ loadData: a,
124
+ enabled: n = !0,
125
+ value: c,
126
126
  onChange: e,
127
- onChangePath: a,
128
- showSearch: f = !1,
129
- multiple: o = !1,
130
- leafOnly: V = !0,
127
+ onChangePath: o,
128
+ showSearch: u = !1,
129
+ multiple: d = !1,
130
+ leafOnly: N = !0,
131
131
  active: tr,
132
- hidden: I,
133
- display: R,
134
- dependsOn: nr,
135
- clearOnDepsChange: cr = !0,
136
- getNodeLabel: D = (S) => S.name,
137
- panelExtra: j,
138
- panelWidth: sr,
132
+ hidden: z,
133
+ display: j,
134
+ dependsOn: cr,
135
+ clearOnDepsChange: sr = !0,
136
+ getNodeLabel: q = (A) => A.name,
137
+ panelExtra: R,
138
+ panelWidth: nr,
139
139
  loading: ir = !1
140
140
  }) => {
141
- const S = $(e);
142
- S.current = e;
143
- const T = $(a);
144
- T.current = a;
145
- const lr = sr ?? (j ? 520 : 440), { resolvedLabel: p, values: ar, depsKey: or } = pr({
141
+ const A = _(e);
142
+ A.current = e;
143
+ const F = _(o);
144
+ F.current = o;
145
+ const lr = nr ?? (R ? 520 : 440), { resolvedLabel: w, values: ar, depsKey: or } = Nr({
146
146
  filterKey: r,
147
- value: n,
147
+ value: c,
148
148
  label: i,
149
- dependsOn: nr,
150
- clearOnDepsChange: cr,
149
+ dependsOn: cr,
150
+ clearOnDepsChange: sr,
151
151
  onDepsClear: () => {
152
- var d, g;
153
- (d = S.current) == null || d.call(S, o ? [] : void 0), (g = T.current) == null || g.call(T, void 0);
152
+ var l, f;
153
+ (l = A.current) == null || l.call(A, d ? [] : void 0), (f = F.current) == null || f.call(F, void 0);
154
154
  }
155
- }), [G, J] = F([]), [dr, Q] = F(!1), x = $(l);
156
- x.current = l, q(() => {
157
- if (!x.current || c != null || t != null || !s) return;
158
- let d = !1;
155
+ }), [G, J] = M([]), [dr, Q] = M(!1), B = _(a);
156
+ B.current = a, $(() => {
157
+ if (!B.current || s != null || t != null || !n) return;
158
+ let l = !1;
159
159
  return Q(!0), (async () => {
160
160
  try {
161
- const g = await x.current({ values: ar });
162
- d || J(g ?? []);
161
+ const f = await B.current({ values: ar });
162
+ l || J(f ?? []);
163
163
  } catch {
164
- d || J([]);
164
+ l || J([]);
165
165
  } finally {
166
- d || Q(!1);
166
+ l || Q(!1);
167
167
  }
168
168
  })(), () => {
169
- d = !0;
169
+ l = !0;
170
170
  };
171
- }, [or, s, c, t, l]);
172
- const m = L(() => t != null && t.length ? t : rr(c ?? (l ? G : []), D), [t, c, l, G, D]), U = ir || dr, b = L(() => Vr(m), [m]), B = L(() => kr(m), [m]), [fr, ur] = F(!1), [k, H] = F(""), [w, X] = F(
173
- n ?? (o ? [] : void 0)
171
+ }, [or, n, s, t, a]);
172
+ const m = L(() => t != null && t.length ? t : rr(s ?? (a ? G : []), q), [t, s, a, G, q]), U = ir || dr, S = L(() => kr(m), [m]), D = L(() => jr(m), [m]), [fr, T] = M(!1), [V, H] = M(""), [b, I] = M(
173
+ c ?? (d ? [] : void 0)
174
174
  );
175
- q(() => {
176
- X(n ?? (o ? [] : void 0)), n == null && H("");
177
- }, [n, o]);
175
+ $(() => {
176
+ I(c ?? (d ? [] : void 0)), c == null && H("");
177
+ }, [c, d]);
178
178
  const W = L(() => {
179
- if (n == null) return "";
180
- if (o) {
181
- const d = n;
182
- return d.length > 0 ? d.map((g) => B.get(g) ?? g).join("、") : "";
179
+ if (c == null) return "";
180
+ if (d) {
181
+ const l = c;
182
+ return l.length > 0 ? l.map((f) => D.get(f) ?? f).join("、") : "";
183
183
  }
184
- return B.get(n) ?? "";
185
- }, [n, o, B]), M = wr(), E = { filterKey: r, label: p, value: n };
186
- q(() => {
187
- if (M) {
188
- if (!C({ display: R, hidden: I }, E)) {
189
- M.unregister(r);
184
+ return D.get(c) ?? "";
185
+ }, [c, d, D]), p = Fr(), x = { filterKey: r, label: w, value: c };
186
+ $(() => {
187
+ if (p) {
188
+ if (!C({ display: j, hidden: z }, x)) {
189
+ p.unregister(r);
190
190
  return;
191
191
  }
192
- W ? M.register(r, {
193
- label: p,
192
+ W ? p.register(r, {
193
+ label: w,
194
194
  valueLabel: W,
195
195
  onRemove: () => {
196
- e == null || e(o ? [] : void 0), a == null || a(void 0);
196
+ e == null || e(d ? [] : void 0), o == null || o(void 0);
197
197
  }
198
- }) : M.unregister(r);
198
+ }) : p.unregister(r);
199
199
  }
200
200
  }, [
201
201
  W,
202
202
  r,
203
+ w,
204
+ j,
205
+ z,
203
206
  p,
204
- R,
205
- I,
206
- M,
207
207
  e,
208
- a,
209
208
  o,
210
- E
209
+ d,
210
+ x
211
211
  ]);
212
- const Y = L(
213
- () => f && k ? Fr(m, k) : m,
214
- [f, k, m]
215
- ), gr = L(
216
- () => zr(w, b, o),
217
- [w, b, o]
218
- ), z = O(
219
- (d, g) => {
220
- X(d), e == null || e(d), a == null || a(g);
212
+ const X = L(
213
+ () => u && V ? Ir(m, V) : m,
214
+ [u, V, m]
215
+ ), ur = L(
216
+ () => Rr(b, S, d),
217
+ [b, S, d]
218
+ ), gr = k(
219
+ (l) => l.map((f) => S.get(String(f))).filter((f) => !!(f != null && f.length)),
220
+ [S]
221
+ ), Y = k(
222
+ (l, f) => {
223
+ I(l), e == null || e(l), o == null || o(f);
221
224
  },
222
- [e, a]
223
- ), mr = O(
224
- (d) => {
225
- const y = Ir(
225
+ [e, o]
226
+ ), Z = k(() => {
227
+ I(c ?? (d ? [] : void 0)), H("");
228
+ }, [c, d]), mr = k(
229
+ (l) => {
230
+ const h = Br(
231
+ l,
226
232
  d,
227
- o,
228
- V,
233
+ N,
229
234
  m,
230
- b
235
+ S
231
236
  );
232
- if (o) {
233
- const A = Array.isArray(y) ? y : y ? [y] : [], _ = A.map((N) => b.get(String(N))).filter((N) => !!(N != null && N.length));
234
- z(A, _);
235
- } else {
236
- const A = typeof y == "string" ? y : void 0, _ = A ? b.get(A) : void 0;
237
- z(A, _);
237
+ if (d) {
238
+ const hr = Array.isArray(h) ? h : h ? [h] : [];
239
+ I(hr);
240
+ return;
238
241
  }
242
+ const E = typeof h == "string" ? h : void 0, Ar = E ? S.get(E) : void 0;
243
+ Y(E, Ar), T(!1);
239
244
  },
240
- [o, V, m, b, z]
245
+ [d, N, m, S, Y]
241
246
  ), vr = () => {
242
- }, hr = () => {
243
- z(o ? [] : void 0, void 0), H("");
244
- }, Sr = tr ?? (o ? Array.isArray(n) && n.length > 0 : n != null && n !== "");
245
- return C({ display: R, hidden: I }, E) ? /* @__PURE__ */ u(
246
- Lr,
247
+ if (!d) return;
248
+ const l = Array.isArray(b) ? b : [], f = gr(l);
249
+ e == null || e(l), o == null || o(f), T(!1);
250
+ }, Sr = () => {
251
+ Z(), T(!1);
252
+ }, br = (l) => {
253
+ !l && d && Z(), T(l);
254
+ }, yr = tr ?? (d ? Array.isArray(c) && c.length > 0 : c != null && c !== "");
255
+ return C({ display: j, hidden: z }, x) ? /* @__PURE__ */ g(
256
+ Mr,
247
257
  {
248
- label: p,
249
- active: Sr,
258
+ label: w,
259
+ active: yr,
250
260
  loading: U,
251
261
  width: lr,
252
262
  open: fr,
253
- onOpenChange: ur,
254
- onConfirm: vr,
255
- onReset: hr,
256
- children: /* @__PURE__ */ Z("div", { className: h("filter-cascader-root", v["filter-cascader-root"]), children: [
257
- j ? /* @__PURE__ */ u(
263
+ onOpenChange: br,
264
+ onConfirm: d ? vr : void 0,
265
+ onReset: d ? Sr : void 0,
266
+ children: /* @__PURE__ */ K("div", { className: y("filter-cascader-root", v["filter-cascader-root"]), children: [
267
+ R ? /* @__PURE__ */ g(
258
268
  "div",
259
269
  {
260
- className: h(
270
+ className: y(
261
271
  "filter-cascader-panel-extra",
262
272
  v["filter-cascader-panel-extra"]
263
273
  ),
264
- children: j
274
+ children: R
265
275
  }
266
276
  ) : null,
267
- f ? /* @__PURE__ */ u("div", { className: h("filter-cascader-search", v["filter-cascader-search"]), children: /* @__PURE__ */ u(
268
- Nr,
277
+ u ? /* @__PURE__ */ g("div", { className: y("filter-cascader-search", v["filter-cascader-search"]), children: /* @__PURE__ */ g(
278
+ Vr,
269
279
  {
270
- placeholder: `搜索${p}`,
280
+ placeholder: `搜索${w}`,
271
281
  allowClear: !0,
272
- value: k,
273
- onChange: (d) => H(d.target.value)
282
+ value: V,
283
+ onChange: (l) => H(l.target.value)
274
284
  }
275
285
  ) }) : null,
276
- U ? /* @__PURE__ */ u("div", { className: h("filter-cascader-loading", v["filter-cascader-loading"]), children: /* @__PURE__ */ u(yr, { size: "small" }) }) : Y.length === 0 ? /* @__PURE__ */ u(Mr, { iconType: "simple", description: "暂无选项" }) : /* @__PURE__ */ u(
286
+ U ? /* @__PURE__ */ g("div", { className: y("filter-cascader-loading", v["filter-cascader-loading"]), children: /* @__PURE__ */ g(wr, { size: "small" }) }) : X.length === 0 ? /* @__PURE__ */ g(Tr, { iconType: "simple", description: "暂无选项" }) : /* @__PURE__ */ g(
277
287
  "div",
278
288
  {
279
- className: h(
289
+ className: y(
280
290
  "filter-cascader-panel-wrap",
281
291
  v["filter-cascader-panel-wrap"]
282
292
  ),
283
- children: /* @__PURE__ */ u(
284
- K.Panel,
293
+ children: /* @__PURE__ */ g(
294
+ O.Panel,
285
295
  {
286
- className: h("filter-cascader-panel", v["filter-cascader-panel"]),
287
- options: Y,
288
- value: gr,
296
+ className: y("filter-cascader-panel", v["filter-cascader-panel"]),
297
+ options: X,
298
+ value: ur,
289
299
  onChange: mr,
290
- multiple: o,
291
- changeOnSelect: !V,
292
- ...o && V ? { showCheckedStrategy: K.SHOW_CHILD } : {}
300
+ multiple: d,
301
+ changeOnSelect: !N,
302
+ ...d && N ? { showCheckedStrategy: O.SHOW_CHILD } : {}
293
303
  }
294
304
  )
295
305
  }
296
306
  ),
297
- o && Array.isArray(w) && w.length > 0 ? /* @__PURE__ */ u(
307
+ d && Array.isArray(b) && b.length > 0 ? /* @__PURE__ */ g(
298
308
  "div",
299
309
  {
300
- className: h(
310
+ className: y(
301
311
  "filter-cascader-selected-bar",
302
312
  v["filter-cascader-selected-bar"]
303
313
  ),
304
- children: /* @__PURE__ */ u(Ar, { size: [4, 4], wrap: !0, children: /* @__PURE__ */ Z("span", { className: v["filter-cascader-selected-count"], children: [
314
+ children: /* @__PURE__ */ g(pr, { size: [4, 4], wrap: !0, children: /* @__PURE__ */ K("span", { className: v["filter-cascader-selected-count"], children: [
305
315
  "已选 ",
306
- w.length
316
+ b.length
307
317
  ] }) })
308
318
  }
309
319
  ) : null
@@ -312,7 +322,7 @@ const qr = ({
312
322
  ) : null;
313
323
  };
314
324
  export {
315
- qr as default,
325
+ Jr as default,
316
326
  rr as treeToCascaderOptions
317
327
  };
318
328
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/Filter/FilterCascader/index.tsx"],"sourcesContent":["import { Empty } from '@/components/Empty';\nimport { Cascader, Input, Space, Spin } from 'antd';\nimport type { DefaultOptionType } from 'antd/es/cascader';\nimport classNames from 'classnames';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport type { TreeFilterNode } from '../FilterTreeSelect';\nimport FilterPopover from '../FilterPopover';\nimport type { BaseFilterProps, FilterLoadDataContext } from '../types';\nimport { resolveFilterVisible } from '../types';\nimport { useFilterFieldBridge, useFilterRegister } from '../useFilterState';\nimport styles from './style.module.scss';\n\nconst { Search } = Input;\n\nexport type { TreeFilterNode };\n\nexport type CascaderPath = string[];\n\nexport interface FilterCascaderProps extends BaseFilterProps {\n /** 树数据(与 FilterTreeSelect 同构);优先于 loadData */\n treeData?: TreeFilterNode[];\n /** 已转换的 Cascader options;与 treeData 二选一(同时存在以 options 为准) */\n options?: DefaultOptionType[];\n loadData?: (ctx: FilterLoadDataContext) => Promise<TreeFilterNode[]>;\n enabled?: boolean;\n /** leafOnly 时为叶子 id;多选为叶子 id 数组 */\n value?: string | string[] | undefined;\n onChange?: (value: string | string[] | undefined) => void;\n /** 完整路径变更(单选 string[];多选 string[][]) */\n onChangePath?: (paths: CascaderPath | CascaderPath[] | undefined) => void;\n showSearch?: boolean;\n multiple?: boolean;\n /**\n * 仅叶子写入最终值(默认 true)。\n * Cascader changeOnSelect=false,父级不可单独作为已选值。\n */\n leafOnly?: boolean;\n getNodeLabel?: (node: TreeFilterNode) => string;\n panelExtra?: React.ReactNode;\n panelWidth?: number;\n loading?: boolean;\n}\n\ntype CascaderOption = DefaultOptionType & {\n value: string;\n label: React.ReactNode;\n children?: CascaderOption[];\n isLeaf?: boolean;\n};\n\n/** TreeFilterNode → antd Cascader options */\nexport function treeToCascaderOptions(\n nodes: TreeFilterNode[] | undefined,\n getLabel: (n: TreeFilterNode) => string = (n) => n.name,\n): CascaderOption[] {\n if (!nodes?.length) return [];\n return nodes.map((n) => {\n const children = n.children?.length ? treeToCascaderOptions(n.children, getLabel) : undefined;\n return {\n value: n.id,\n label: getLabel(n),\n children,\n isLeaf: !children?.length,\n };\n });\n}\n\nfunction filterOptionsByKeyword(options: CascaderOption[], keyword: string): CascaderOption[] {\n if (!keyword.trim()) return options;\n const lower = keyword.toLowerCase();\n const walk = (opts: CascaderOption[]): CascaderOption[] => {\n const result: CascaderOption[] = [];\n for (const opt of opts) {\n const label =\n typeof opt.label === 'string' || typeof opt.label === 'number'\n ? String(opt.label)\n : String(opt.value);\n const children = opt.children?.length ? walk(opt.children) : [];\n const selfMatch = label.toLowerCase().includes(lower);\n if (selfMatch || children.length > 0) {\n result.push({\n ...opt,\n children: children.length > 0 ? children : undefined,\n isLeaf: !(children.length > 0),\n });\n }\n }\n return result;\n };\n return walk(options);\n}\n\nfunction buildLeafPathMap(options: CascaderOption[]): Map<string, CascaderPath> {\n const map = new Map<string, CascaderPath>();\n const walk = (opts: CascaderOption[], prefix: CascaderPath) => {\n for (const opt of opts) {\n const path = [...prefix, String(opt.value)];\n if (opt.children?.length) {\n walk(opt.children, path);\n } else {\n map.set(String(opt.value), path);\n }\n }\n };\n walk(options, []);\n return map;\n}\n\nfunction findCascaderNode(options: CascaderOption[], path: CascaderPath): CascaderOption | null {\n let nodes = options;\n let found: CascaderOption | null = null;\n for (const id of path) {\n found = nodes.find((n) => String(n.value) === String(id)) ?? null;\n if (!found) return null;\n nodes = found.children ?? [];\n }\n return found;\n}\n\nfunction collectDescendantLeafIds(node: CascaderOption): string[] {\n if (!node.children?.length) return [String(node.value)];\n return node.children.flatMap(collectDescendantLeafIds);\n}\n\n/** leafOnly:多选路径可能因 SHOW_PARENT 塌成父级,展开为叶子 id */\nfunction pathsToLeafIds(\n paths: CascaderPath[],\n options: CascaderOption[],\n leafPathMap: Map<string, CascaderPath>,\n leafOnly: boolean,\n): string[] {\n const out: string[] = [];\n const seen = new Set<string>();\n const push = (id: string) => {\n if (!id || seen.has(id)) return;\n seen.add(id);\n out.push(id);\n };\n\n for (const path of paths) {\n if (!path?.length) continue;\n const last = String(path[path.length - 1]);\n if (leafPathMap.has(last)) {\n push(last);\n continue;\n }\n if (!leafOnly) {\n push(last);\n continue;\n }\n const node = findCascaderNode(options, path.map(String));\n if (node) {\n collectDescendantLeafIds(node).forEach(push);\n }\n }\n return out;\n}\n\nfunction buildLabelMapFromOptions(options: CascaderOption[]): Map<string, string> {\n const map = new Map<string, string>();\n const walk = (opts: CascaderOption[]) => {\n for (const opt of opts) {\n const label =\n typeof opt.label === 'string' || typeof opt.label === 'number'\n ? String(opt.label)\n : String(opt.value);\n map.set(String(opt.value), label);\n if (opt.children?.length) walk(opt.children);\n }\n };\n walk(options);\n return map;\n}\n\nfunction leafToCascaderValue(\n leaf: string | string[] | undefined,\n leafPathMap: Map<string, CascaderPath>,\n multiple: boolean,\n): CascaderPath | CascaderPath[] | undefined {\n if (leaf == null || leaf === '') return multiple ? [] : undefined;\n if (multiple) {\n const arr = Array.isArray(leaf) ? leaf : [leaf];\n return arr.map((id) => leafPathMap.get(String(id)) || [String(id)]).filter((p) => p.length);\n }\n const id = Array.isArray(leaf) ? leaf[0] : leaf;\n if (id == null || id === '') return undefined;\n return leafPathMap.get(String(id)) || [String(id)];\n}\n\nfunction cascaderValueToLeaf(\n next: CascaderPath | CascaderPath[] | null,\n multiple: boolean,\n leafOnly: boolean,\n options: CascaderOption[],\n leafPathMap: Map<string, CascaderPath>,\n): string | string[] | undefined {\n if (next == null || (Array.isArray(next) && next.length === 0)) {\n return multiple ? [] : undefined;\n }\n if (multiple) {\n const paths = (next as CascaderPath[]).filter((p) => Array.isArray(p) && p.length);\n return pathsToLeafIds(\n paths.map((p) => p.map(String)),\n options,\n leafPathMap,\n leafOnly,\n );\n }\n const path = (next as CascaderPath).map(String);\n if (!path.length) return undefined;\n const leaves = pathsToLeafIds([path], options, leafPathMap, leafOnly);\n if (leafOnly && leaves.length === 0) return undefined;\n return leaves[0];\n}\n\nconst FilterCascader: React.FC<FilterCascaderProps> = ({\n filterKey,\n label,\n treeData: propsTreeData,\n options: propsOptions,\n loadData,\n enabled = true,\n value,\n onChange,\n onChangePath,\n showSearch = false,\n multiple = false,\n leafOnly = true,\n active,\n hidden,\n display,\n dependsOn,\n clearOnDepsChange = true,\n getNodeLabel = (n) => n.name,\n panelExtra,\n panelWidth,\n loading: loadingProp = false,\n}) => {\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n const onChangePathRef = useRef(onChangePath);\n onChangePathRef.current = onChangePath;\n\n // 两列路径:分厂列 + 品种长文案列,默认略宽;有 panelExtra 再加一点\n const resolvedPanelWidth = panelWidth ?? (panelExtra ? 520 : 440);\n\n const { resolvedLabel, values, depsKey } = useFilterFieldBridge({\n filterKey,\n value,\n label,\n dependsOn,\n clearOnDepsChange,\n onDepsClear: () => {\n onChangeRef.current?.(multiple ? [] : undefined);\n onChangePathRef.current?.(undefined);\n },\n });\n\n const [loadedTree, setLoadedTree] = useState<TreeFilterNode[]>([]);\n const [loadDataLoading, setLoadDataLoading] = useState(false);\n const loadDataRef = useRef(loadData);\n loadDataRef.current = loadData;\n\n useEffect(() => {\n if (!loadDataRef.current || propsTreeData != null || propsOptions != null || !enabled) return;\n let cancelled = false;\n setLoadDataLoading(true);\n (async () => {\n try {\n const next = await loadDataRef.current!({ values });\n if (!cancelled) setLoadedTree(next ?? []);\n } catch {\n if (!cancelled) setLoadedTree([]);\n } finally {\n if (!cancelled) setLoadDataLoading(false);\n }\n })();\n return () => {\n cancelled = true;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [depsKey, enabled, propsTreeData, propsOptions, loadData]);\n\n const cascaderOptions = useMemo(() => {\n if (propsOptions?.length) return propsOptions as CascaderOption[];\n const tree = propsTreeData ?? (loadData ? loadedTree : []);\n return treeToCascaderOptions(tree, getNodeLabel);\n }, [propsOptions, propsTreeData, loadData, loadedTree, getNodeLabel]);\n\n const optionsLoading = loadingProp || loadDataLoading;\n const leafPathMap = useMemo(() => buildLeafPathMap(cascaderOptions), [cascaderOptions]);\n const labelMap = useMemo(() => buildLabelMapFromOptions(cascaderOptions), [cascaderOptions]);\n\n const [open, setOpen] = useState(false);\n const [searchText, setSearchText] = useState('');\n const [localValue, setLocalValue] = useState<string | string[] | undefined>(\n value ?? (multiple ? [] : undefined),\n );\n\n useEffect(() => {\n setLocalValue(value ?? (multiple ? [] : undefined));\n if (value === undefined || value === null) setSearchText('');\n }, [value, multiple]);\n\n const confirmedValueLabel = useMemo(() => {\n if (value == null) return '';\n if (multiple) {\n const arr = value as string[];\n return arr.length > 0 ? arr.map((v) => labelMap.get(v) ?? v).join('、') : '';\n }\n return labelMap.get(value as string) ?? '';\n }, [value, multiple, labelMap]);\n\n const registerFn = useFilterRegister();\n const visibilityCtx = { filterKey, label: resolvedLabel, value };\n\n useEffect(() => {\n if (!registerFn) return;\n if (!resolveFilterVisible({ display, hidden }, visibilityCtx)) {\n registerFn.unregister(filterKey);\n return;\n }\n if (confirmedValueLabel) {\n registerFn.register(filterKey, {\n label: resolvedLabel,\n valueLabel: confirmedValueLabel,\n onRemove: () => {\n onChange?.(multiple ? [] : undefined);\n onChangePath?.(undefined);\n },\n });\n } else {\n registerFn.unregister(filterKey);\n }\n }, [\n confirmedValueLabel,\n filterKey,\n resolvedLabel,\n display,\n hidden,\n registerFn,\n onChange,\n onChangePath,\n multiple,\n visibilityCtx,\n ]);\n\n const displayOptions = useMemo(\n () =>\n showSearch && searchText\n ? filterOptionsByKeyword(cascaderOptions, searchText)\n : cascaderOptions,\n [showSearch, searchText, cascaderOptions],\n );\n\n const cascaderValue = useMemo(\n () => leafToCascaderValue(localValue, leafPathMap, multiple),\n [localValue, leafPathMap, multiple],\n );\n\n const emitChange = useCallback(\n (nextLeaf: string | string[] | undefined, paths: CascaderPath | CascaderPath[] | undefined) => {\n setLocalValue(nextLeaf);\n onChange?.(nextLeaf);\n onChangePath?.(paths);\n },\n [onChange, onChangePath],\n );\n\n const handleCascaderChange = useCallback(\n (next: (string | number | null)[] | (string | number | null)[][] | null) => {\n const normalized = next as CascaderPath | CascaderPath[] | null;\n const leaf = cascaderValueToLeaf(\n normalized,\n multiple,\n leafOnly,\n cascaderOptions,\n leafPathMap,\n );\n if (multiple) {\n const leafArr = Array.isArray(leaf) ? leaf : leaf ? [leaf] : [];\n const paths = leafArr\n .map((id) => leafPathMap.get(String(id)))\n .filter((p): p is CascaderPath => !!p?.length);\n emitChange(leafArr, paths);\n } else {\n const id = typeof leaf === 'string' ? leaf : undefined;\n const path = id ? leafPathMap.get(id) : undefined;\n emitChange(id, path);\n }\n },\n [multiple, leafOnly, cascaderOptions, leafPathMap, emitChange],\n );\n\n const handleConfirm = () => {\n // 即时 onChange;确认仅关面板\n };\n\n const handleReset = () => {\n emitChange(multiple ? [] : undefined, undefined);\n setSearchText('');\n };\n\n const isActive =\n active ?? (multiple ? Array.isArray(value) && value.length > 0 : value != null && value !== '');\n\n if (!resolveFilterVisible({ display, hidden }, visibilityCtx)) {\n return null;\n }\n\n return (\n <FilterPopover\n label={resolvedLabel}\n active={isActive}\n loading={optionsLoading}\n width={resolvedPanelWidth}\n open={open}\n onOpenChange={setOpen}\n onConfirm={handleConfirm}\n onReset={handleReset}\n >\n <div className={classNames('filter-cascader-root', styles['filter-cascader-root'])}>\n {panelExtra ? (\n <div\n className={classNames(\n 'filter-cascader-panel-extra',\n styles['filter-cascader-panel-extra'],\n )}\n >\n {panelExtra}\n </div>\n ) : null}\n {showSearch ? (\n <div className={classNames('filter-cascader-search', styles['filter-cascader-search'])}>\n <Search\n placeholder={`搜索${resolvedLabel}`}\n allowClear\n value={searchText}\n onChange={(e) => setSearchText(e.target.value)}\n />\n </div>\n ) : null}\n {optionsLoading ? (\n <div className={classNames('filter-cascader-loading', styles['filter-cascader-loading'])}>\n <Spin size=\"small\" />\n </div>\n ) : displayOptions.length === 0 ? (\n <Empty iconType=\"simple\" description=\"暂无选项\" />\n ) : (\n <div\n className={classNames(\n 'filter-cascader-panel-wrap',\n styles['filter-cascader-panel-wrap'],\n )}\n >\n <Cascader.Panel\n className={classNames('filter-cascader-panel', styles['filter-cascader-panel'])}\n options={displayOptions}\n value={cascaderValue as never}\n onChange={handleCascaderChange as never}\n multiple={multiple}\n changeOnSelect={!leafOnly}\n // leafOnly 多选:禁止 SHOW_PARENT 把整厂塌成父级 Code\n {...(multiple && leafOnly ? { showCheckedStrategy: Cascader.SHOW_CHILD } : {})}\n />\n </div>\n )}\n {multiple && Array.isArray(localValue) && localValue.length > 0 ? (\n <div\n className={classNames(\n 'filter-cascader-selected-bar',\n styles['filter-cascader-selected-bar'],\n )}\n >\n <Space size={[4, 4]} wrap>\n <span className={styles['filter-cascader-selected-count']}>\n 已选 {localValue.length}\n </span>\n </Space>\n </div>\n ) : null}\n </div>\n </FilterPopover>\n );\n};\n\nexport default FilterCascader;\n"],"names":["Search","Input","treeToCascaderOptions","nodes","getLabel","n","children","_a","filterOptionsByKeyword","options","keyword","lower","walk","opts","result","opt","label","buildLeafPathMap","map","prefix","path","findCascaderNode","found","id","collectDescendantLeafIds","node","pathsToLeafIds","paths","leafPathMap","leafOnly","out","seen","push","last","buildLabelMapFromOptions","leafToCascaderValue","leaf","multiple","p","cascaderValueToLeaf","next","leaves","FilterCascader","filterKey","propsTreeData","propsOptions","loadData","enabled","value","onChange","onChangePath","showSearch","active","hidden","display","dependsOn","clearOnDepsChange","getNodeLabel","panelExtra","panelWidth","loadingProp","onChangeRef","useRef","onChangePathRef","resolvedPanelWidth","resolvedLabel","values","depsKey","useFilterFieldBridge","_b","loadedTree","setLoadedTree","useState","loadDataLoading","setLoadDataLoading","loadDataRef","useEffect","cancelled","cascaderOptions","useMemo","optionsLoading","labelMap","open","setOpen","searchText","setSearchText","localValue","setLocalValue","confirmedValueLabel","arr","v","registerFn","useFilterRegister","visibilityCtx","resolveFilterVisible","displayOptions","cascaderValue","emitChange","useCallback","nextLeaf","handleCascaderChange","leafArr","handleConfirm","handleReset","isActive","jsx","FilterPopover","jsxs","classNames","styles","e","Spin","Empty","Cascader","Space"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/Filter/FilterCascader/index.tsx"],"sourcesContent":["import { Empty } from '@/components/Empty';\nimport { Cascader, Input, Space, Spin } from 'antd';\nimport type { DefaultOptionType } from 'antd/es/cascader';\nimport classNames from 'classnames';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport type { TreeFilterNode } from '../FilterTreeSelect';\nimport FilterPopover from '../FilterPopover';\nimport type { BaseFilterProps, FilterLoadDataContext } from '../types';\nimport { resolveFilterVisible } from '../types';\nimport { useFilterFieldBridge, useFilterRegister } from '../useFilterState';\nimport styles from './style.module.scss';\n\nconst { Search } = Input;\n\nexport type { TreeFilterNode };\n\nexport type CascaderPath = string[];\n\nexport interface FilterCascaderProps extends BaseFilterProps {\n /** 树数据(与 FilterTreeSelect 同构);优先于 loadData */\n treeData?: TreeFilterNode[];\n /** 已转换的 Cascader options;与 treeData 二选一(同时存在以 options 为准) */\n options?: DefaultOptionType[];\n loadData?: (ctx: FilterLoadDataContext) => Promise<TreeFilterNode[]>;\n enabled?: boolean;\n /** leafOnly 时为叶子 id;多选为叶子 id 数组 */\n value?: string | string[] | undefined;\n onChange?: (value: string | string[] | undefined) => void;\n /** 完整路径变更(单选 string[];多选 string[][]) */\n onChangePath?: (paths: CascaderPath | CascaderPath[] | undefined) => void;\n showSearch?: boolean;\n multiple?: boolean;\n /**\n * 仅叶子写入最终值(默认 true)。\n * Cascader changeOnSelect=false,父级不可单独作为已选值。\n */\n leafOnly?: boolean;\n getNodeLabel?: (node: TreeFilterNode) => string;\n panelExtra?: React.ReactNode;\n panelWidth?: number;\n loading?: boolean;\n}\n\ntype CascaderOption = DefaultOptionType & {\n value: string;\n label: React.ReactNode;\n children?: CascaderOption[];\n isLeaf?: boolean;\n};\n\n/** TreeFilterNode → antd Cascader options */\nexport function treeToCascaderOptions(\n nodes: TreeFilterNode[] | undefined,\n getLabel: (n: TreeFilterNode) => string = (n) => n.name,\n): CascaderOption[] {\n if (!nodes?.length) return [];\n return nodes.map((n) => {\n const children = n.children?.length ? treeToCascaderOptions(n.children, getLabel) : undefined;\n return {\n value: n.id,\n label: getLabel(n),\n children,\n isLeaf: !children?.length,\n };\n });\n}\n\nfunction filterOptionsByKeyword(options: CascaderOption[], keyword: string): CascaderOption[] {\n if (!keyword.trim()) return options;\n const lower = keyword.toLowerCase();\n const walk = (opts: CascaderOption[]): CascaderOption[] => {\n const result: CascaderOption[] = [];\n for (const opt of opts) {\n const label =\n typeof opt.label === 'string' || typeof opt.label === 'number'\n ? String(opt.label)\n : String(opt.value);\n const children = opt.children?.length ? walk(opt.children) : [];\n const selfMatch = label.toLowerCase().includes(lower);\n if (selfMatch || children.length > 0) {\n result.push({\n ...opt,\n children: children.length > 0 ? children : undefined,\n isLeaf: !(children.length > 0),\n });\n }\n }\n return result;\n };\n return walk(options);\n}\n\nfunction buildLeafPathMap(options: CascaderOption[]): Map<string, CascaderPath> {\n const map = new Map<string, CascaderPath>();\n const walk = (opts: CascaderOption[], prefix: CascaderPath) => {\n for (const opt of opts) {\n const path = [...prefix, String(opt.value)];\n if (opt.children?.length) {\n walk(opt.children, path);\n } else {\n map.set(String(opt.value), path);\n }\n }\n };\n walk(options, []);\n return map;\n}\n\nfunction findCascaderNode(options: CascaderOption[], path: CascaderPath): CascaderOption | null {\n let nodes = options;\n let found: CascaderOption | null = null;\n for (const id of path) {\n found = nodes.find((n) => String(n.value) === String(id)) ?? null;\n if (!found) return null;\n nodes = found.children ?? [];\n }\n return found;\n}\n\nfunction collectDescendantLeafIds(node: CascaderOption): string[] {\n if (!node.children?.length) return [String(node.value)];\n return node.children.flatMap(collectDescendantLeafIds);\n}\n\n/** leafOnly:多选路径可能因 SHOW_PARENT 塌成父级,展开为叶子 id */\nfunction pathsToLeafIds(\n paths: CascaderPath[],\n options: CascaderOption[],\n leafPathMap: Map<string, CascaderPath>,\n leafOnly: boolean,\n): string[] {\n const out: string[] = [];\n const seen = new Set<string>();\n const push = (id: string) => {\n if (!id || seen.has(id)) return;\n seen.add(id);\n out.push(id);\n };\n\n for (const path of paths) {\n if (!path?.length) continue;\n const last = String(path[path.length - 1]);\n if (leafPathMap.has(last)) {\n push(last);\n continue;\n }\n if (!leafOnly) {\n push(last);\n continue;\n }\n const node = findCascaderNode(options, path.map(String));\n if (node) {\n collectDescendantLeafIds(node).forEach(push);\n }\n }\n return out;\n}\n\nfunction buildLabelMapFromOptions(options: CascaderOption[]): Map<string, string> {\n const map = new Map<string, string>();\n const walk = (opts: CascaderOption[]) => {\n for (const opt of opts) {\n const label =\n typeof opt.label === 'string' || typeof opt.label === 'number'\n ? String(opt.label)\n : String(opt.value);\n map.set(String(opt.value), label);\n if (opt.children?.length) walk(opt.children);\n }\n };\n walk(options);\n return map;\n}\n\nfunction leafToCascaderValue(\n leaf: string | string[] | undefined,\n leafPathMap: Map<string, CascaderPath>,\n multiple: boolean,\n): CascaderPath | CascaderPath[] | undefined {\n if (leaf == null || leaf === '') return multiple ? [] : undefined;\n if (multiple) {\n const arr = Array.isArray(leaf) ? leaf : [leaf];\n return arr.map((id) => leafPathMap.get(String(id)) || [String(id)]).filter((p) => p.length);\n }\n const id = Array.isArray(leaf) ? leaf[0] : leaf;\n if (id == null || id === '') return undefined;\n return leafPathMap.get(String(id)) || [String(id)];\n}\n\nfunction cascaderValueToLeaf(\n next: CascaderPath | CascaderPath[] | null,\n multiple: boolean,\n leafOnly: boolean,\n options: CascaderOption[],\n leafPathMap: Map<string, CascaderPath>,\n): string | string[] | undefined {\n if (next == null || (Array.isArray(next) && next.length === 0)) {\n return multiple ? [] : undefined;\n }\n if (multiple) {\n const paths = (next as CascaderPath[]).filter((p) => Array.isArray(p) && p.length);\n return pathsToLeafIds(\n paths.map((p) => p.map(String)),\n options,\n leafPathMap,\n leafOnly,\n );\n }\n const path = (next as CascaderPath).map(String);\n if (!path.length) return undefined;\n const leaves = pathsToLeafIds([path], options, leafPathMap, leafOnly);\n if (leafOnly && leaves.length === 0) return undefined;\n return leaves[0];\n}\n\nconst FilterCascader: React.FC<FilterCascaderProps> = ({\n filterKey,\n label,\n treeData: propsTreeData,\n options: propsOptions,\n loadData,\n enabled = true,\n value,\n onChange,\n onChangePath,\n showSearch = false,\n multiple = false,\n leafOnly = true,\n active,\n hidden,\n display,\n dependsOn,\n clearOnDepsChange = true,\n getNodeLabel = (n) => n.name,\n panelExtra,\n panelWidth,\n loading: loadingProp = false,\n}) => {\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n const onChangePathRef = useRef(onChangePath);\n onChangePathRef.current = onChangePath;\n\n // 两列路径:分厂列 + 品种长文案列,默认略宽;有 panelExtra 再加一点\n const resolvedPanelWidth = panelWidth ?? (panelExtra ? 520 : 440);\n\n const { resolvedLabel, values, depsKey } = useFilterFieldBridge({\n filterKey,\n value,\n label,\n dependsOn,\n clearOnDepsChange,\n onDepsClear: () => {\n onChangeRef.current?.(multiple ? [] : undefined);\n onChangePathRef.current?.(undefined);\n },\n });\n\n const [loadedTree, setLoadedTree] = useState<TreeFilterNode[]>([]);\n const [loadDataLoading, setLoadDataLoading] = useState(false);\n const loadDataRef = useRef(loadData);\n loadDataRef.current = loadData;\n\n useEffect(() => {\n if (!loadDataRef.current || propsTreeData != null || propsOptions != null || !enabled) return;\n let cancelled = false;\n setLoadDataLoading(true);\n (async () => {\n try {\n const next = await loadDataRef.current!({ values });\n if (!cancelled) setLoadedTree(next ?? []);\n } catch {\n if (!cancelled) setLoadedTree([]);\n } finally {\n if (!cancelled) setLoadDataLoading(false);\n }\n })();\n return () => {\n cancelled = true;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [depsKey, enabled, propsTreeData, propsOptions, loadData]);\n\n const cascaderOptions = useMemo(() => {\n if (propsOptions?.length) return propsOptions as CascaderOption[];\n const tree = propsTreeData ?? (loadData ? loadedTree : []);\n return treeToCascaderOptions(tree, getNodeLabel);\n }, [propsOptions, propsTreeData, loadData, loadedTree, getNodeLabel]);\n\n const optionsLoading = loadingProp || loadDataLoading;\n const leafPathMap = useMemo(() => buildLeafPathMap(cascaderOptions), [cascaderOptions]);\n const labelMap = useMemo(() => buildLabelMapFromOptions(cascaderOptions), [cascaderOptions]);\n\n const [open, setOpen] = useState(false);\n const [searchText, setSearchText] = useState('');\n const [localValue, setLocalValue] = useState<string | string[] | undefined>(\n value ?? (multiple ? [] : undefined),\n );\n\n useEffect(() => {\n setLocalValue(value ?? (multiple ? [] : undefined));\n if (value === undefined || value === null) setSearchText('');\n }, [value, multiple]);\n\n const confirmedValueLabel = useMemo(() => {\n if (value == null) return '';\n if (multiple) {\n const arr = value as string[];\n return arr.length > 0 ? arr.map((v) => labelMap.get(v) ?? v).join('、') : '';\n }\n return labelMap.get(value as string) ?? '';\n }, [value, multiple, labelMap]);\n\n const registerFn = useFilterRegister();\n const visibilityCtx = { filterKey, label: resolvedLabel, value };\n\n useEffect(() => {\n if (!registerFn) return;\n if (!resolveFilterVisible({ display, hidden }, visibilityCtx)) {\n registerFn.unregister(filterKey);\n return;\n }\n if (confirmedValueLabel) {\n registerFn.register(filterKey, {\n label: resolvedLabel,\n valueLabel: confirmedValueLabel,\n onRemove: () => {\n onChange?.(multiple ? [] : undefined);\n onChangePath?.(undefined);\n },\n });\n } else {\n registerFn.unregister(filterKey);\n }\n }, [\n confirmedValueLabel,\n filterKey,\n resolvedLabel,\n display,\n hidden,\n registerFn,\n onChange,\n onChangePath,\n multiple,\n visibilityCtx,\n ]);\n\n const displayOptions = useMemo(\n () =>\n showSearch && searchText\n ? filterOptionsByKeyword(cascaderOptions, searchText)\n : cascaderOptions,\n [showSearch, searchText, cascaderOptions],\n );\n\n const cascaderValue = useMemo(\n () => leafToCascaderValue(localValue, leafPathMap, multiple),\n [localValue, leafPathMap, multiple],\n );\n\n const leafIdsToPaths = useCallback(\n (leafIds: string[]): CascaderPath[] =>\n leafIds\n .map((id) => leafPathMap.get(String(id)))\n .filter((p): p is CascaderPath => !!p?.length),\n [leafPathMap],\n );\n\n const emitChange = useCallback(\n (nextLeaf: string | string[] | undefined, paths: CascaderPath | CascaderPath[] | undefined) => {\n setLocalValue(nextLeaf);\n onChange?.(nextLeaf);\n onChangePath?.(paths);\n },\n [onChange, onChangePath],\n );\n\n const revertToCommitted = useCallback(() => {\n setLocalValue(value ?? (multiple ? [] : undefined));\n setSearchText('');\n }, [value, multiple]);\n\n const handleCascaderChange = useCallback(\n (next: (string | number | null)[] | (string | number | null)[][] | null) => {\n const normalized = next as CascaderPath | CascaderPath[] | null;\n const leaf = cascaderValueToLeaf(\n normalized,\n multiple,\n leafOnly,\n cascaderOptions,\n leafPathMap,\n );\n if (multiple) {\n // 多选:勾选只改草稿,确定才 onChange(对齐 FilterSelect / FilterTreeSelect)\n const leafArr = Array.isArray(leaf) ? leaf : leaf ? [leaf] : [];\n setLocalValue(leafArr);\n return;\n }\n const id = typeof leaf === 'string' ? leaf : undefined;\n const path = id ? leafPathMap.get(id) : undefined;\n emitChange(id, path);\n setOpen(false);\n },\n [multiple, leafOnly, cascaderOptions, leafPathMap, emitChange],\n );\n\n const handleConfirm = () => {\n if (!multiple) return;\n const leafArr = Array.isArray(localValue) ? localValue : [];\n const paths = leafIdsToPaths(leafArr);\n onChange?.(leafArr);\n onChangePath?.(paths);\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 isActive =\n active ?? (multiple ? Array.isArray(value) && value.length > 0 : value != null && value !== '');\n\n if (!resolveFilterVisible({ display, hidden }, visibilityCtx)) {\n return null;\n }\n\n return (\n <FilterPopover\n label={resolvedLabel}\n active={isActive}\n loading={optionsLoading}\n width={resolvedPanelWidth}\n open={open}\n onOpenChange={handleOpenChange}\n onConfirm={multiple ? handleConfirm : undefined}\n onReset={multiple ? handleDiscardDraft : undefined}\n >\n <div className={classNames('filter-cascader-root', styles['filter-cascader-root'])}>\n {panelExtra ? (\n <div\n className={classNames(\n 'filter-cascader-panel-extra',\n styles['filter-cascader-panel-extra'],\n )}\n >\n {panelExtra}\n </div>\n ) : null}\n {showSearch ? (\n <div className={classNames('filter-cascader-search', styles['filter-cascader-search'])}>\n <Search\n placeholder={`搜索${resolvedLabel}`}\n allowClear\n value={searchText}\n onChange={(e) => setSearchText(e.target.value)}\n />\n </div>\n ) : null}\n {optionsLoading ? (\n <div className={classNames('filter-cascader-loading', styles['filter-cascader-loading'])}>\n <Spin size=\"small\" />\n </div>\n ) : displayOptions.length === 0 ? (\n <Empty iconType=\"simple\" description=\"暂无选项\" />\n ) : (\n <div\n className={classNames(\n 'filter-cascader-panel-wrap',\n styles['filter-cascader-panel-wrap'],\n )}\n >\n <Cascader.Panel\n className={classNames('filter-cascader-panel', styles['filter-cascader-panel'])}\n options={displayOptions}\n value={cascaderValue as never}\n onChange={handleCascaderChange as never}\n multiple={multiple}\n changeOnSelect={!leafOnly}\n // leafOnly 多选:禁止 SHOW_PARENT 把整厂塌成父级 Code\n {...(multiple && leafOnly ? { showCheckedStrategy: Cascader.SHOW_CHILD } : {})}\n />\n </div>\n )}\n {multiple && Array.isArray(localValue) && localValue.length > 0 ? (\n <div\n className={classNames(\n 'filter-cascader-selected-bar',\n styles['filter-cascader-selected-bar'],\n )}\n >\n <Space size={[4, 4]} wrap>\n <span className={styles['filter-cascader-selected-count']}>\n 已选 {localValue.length}\n </span>\n </Space>\n </div>\n ) : null}\n </div>\n </FilterPopover>\n );\n};\n\nexport default FilterCascader;\n"],"names":["Search","Input","treeToCascaderOptions","nodes","getLabel","n","children","_a","filterOptionsByKeyword","options","keyword","lower","walk","opts","result","opt","label","buildLeafPathMap","map","prefix","path","findCascaderNode","found","id","collectDescendantLeafIds","node","pathsToLeafIds","paths","leafPathMap","leafOnly","out","seen","push","last","buildLabelMapFromOptions","leafToCascaderValue","leaf","multiple","p","cascaderValueToLeaf","next","leaves","FilterCascader","filterKey","propsTreeData","propsOptions","loadData","enabled","value","onChange","onChangePath","showSearch","active","hidden","display","dependsOn","clearOnDepsChange","getNodeLabel","panelExtra","panelWidth","loadingProp","onChangeRef","useRef","onChangePathRef","resolvedPanelWidth","resolvedLabel","values","depsKey","useFilterFieldBridge","_b","loadedTree","setLoadedTree","useState","loadDataLoading","setLoadDataLoading","loadDataRef","useEffect","cancelled","cascaderOptions","useMemo","optionsLoading","labelMap","open","setOpen","searchText","setSearchText","localValue","setLocalValue","confirmedValueLabel","arr","v","registerFn","useFilterRegister","visibilityCtx","resolveFilterVisible","displayOptions","cascaderValue","leafIdsToPaths","useCallback","leafIds","emitChange","nextLeaf","revertToCommitted","handleCascaderChange","leafArr","handleConfirm","handleDiscardDraft","handleOpenChange","nextOpen","isActive","jsx","FilterPopover","jsxs","classNames","styles","e","Spin","Empty","Cascader","Space"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hkyhy/marsun-components-core",
3
- "version": "0.1.31",
3
+ "version": "0.1.32",
4
4
  "description": "Marsun pure UI component library",
5
5
  "type": "module",
6
6
  "repository": {