@hkyhy/marsun-components-core 0.1.29 → 0.1.31

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.
Files changed (63) hide show
  1. package/dist/components/Auth/UserProfileCard/UserProfileCard.d.ts +7 -1
  2. package/dist/components/Auth/UserProfileCard/UserProfileCard.js +59 -28
  3. package/dist/components/Auth/UserProfileCard/UserProfileCard.js.map +1 -1
  4. package/dist/components/Auth/UserProfileCard/style.module.scss.js +16 -10
  5. package/dist/components/Auth/UserProfileCard/style.module.scss.js.map +1 -1
  6. package/dist/components/Filter/CommonFilter/index.js +88 -53
  7. package/dist/components/Filter/CommonFilter/index.js.map +1 -1
  8. package/dist/components/Filter/FilterCascader/index.d.ts +40 -0
  9. package/dist/components/Filter/FilterCascader/index.js +318 -0
  10. package/dist/components/Filter/FilterCascader/index.js.map +1 -0
  11. package/dist/components/Filter/FilterCascader/style.module.scss.js +14 -0
  12. package/dist/components/Filter/FilterCascader/style.module.scss.js.map +1 -0
  13. package/dist/components/Filter/FilterDatePicker/index.js +102 -84
  14. package/dist/components/Filter/FilterDatePicker/index.js.map +1 -1
  15. package/dist/components/Filter/FilterDateRange/index.js +84 -66
  16. package/dist/components/Filter/FilterDateRange/index.js.map +1 -1
  17. package/dist/components/Filter/FilterInput/index.js +51 -33
  18. package/dist/components/Filter/FilterInput/index.js.map +1 -1
  19. package/dist/components/Filter/FilterNumberRange/index.js +87 -69
  20. package/dist/components/Filter/FilterNumberRange/index.js.map +1 -1
  21. package/dist/components/Filter/FilterPopover/index.d.ts +2 -0
  22. package/dist/components/Filter/FilterPopover/index.js +22 -21
  23. package/dist/components/Filter/FilterPopover/index.js.map +1 -1
  24. package/dist/components/Filter/FilterSelect/index.d.ts +20 -2
  25. package/dist/components/Filter/FilterSelect/index.js +237 -194
  26. package/dist/components/Filter/FilterSelect/index.js.map +1 -1
  27. package/dist/components/Filter/FilterSelect/style.module.scss.js +16 -14
  28. package/dist/components/Filter/FilterSelect/style.module.scss.js.map +1 -1
  29. package/dist/components/Filter/FilterTreeSelect/index.d.ts +18 -1
  30. package/dist/components/Filter/FilterTreeSelect/index.js +278 -218
  31. package/dist/components/Filter/FilterTreeSelect/index.js.map +1 -1
  32. package/dist/components/Filter/FilterTreeSelect/style.module.scss.js +15 -13
  33. package/dist/components/Filter/FilterTreeSelect/style.module.scss.js.map +1 -1
  34. package/dist/components/Filter/FilterTrigger/index.d.ts +3 -0
  35. package/dist/components/Filter/FilterTrigger/index.js +59 -26
  36. package/dist/components/Filter/FilterTrigger/index.js.map +1 -1
  37. package/dist/components/Filter/FilterTrigger/style.module.scss.js +5 -4
  38. package/dist/components/Filter/FilterTrigger/style.module.scss.js.map +1 -1
  39. package/dist/components/Filter/index.d.ts +7 -3
  40. package/dist/components/Filter/types.d.ts +27 -1
  41. package/dist/components/Filter/types.js +24 -7
  42. package/dist/components/Filter/types.js.map +1 -1
  43. package/dist/components/Filter/useFilterState.d.ts +37 -5
  44. package/dist/components/Filter/useFilterState.js +74 -23
  45. package/dist/components/Filter/useFilterState.js.map +1 -1
  46. package/dist/components/Table/ColumnConfigPanel.d.ts +13 -0
  47. package/dist/components/Table/ColumnConfigPanel.js +260 -0
  48. package/dist/components/Table/ColumnConfigPanel.js.map +1 -0
  49. package/dist/components/Table/Table.d.ts +16 -2
  50. package/dist/components/Table/Table.js +106 -28
  51. package/dist/components/Table/Table.js.map +1 -1
  52. package/dist/components/Table/columnConfig.module.scss.js +38 -0
  53. package/dist/components/Table/columnConfig.module.scss.js.map +1 -0
  54. package/dist/components/Table/columnConfigTypes.d.ts +22 -0
  55. package/dist/components/Table/columnConfigUtils.d.ts +25 -0
  56. package/dist/components/Table/columnConfigUtils.js +141 -0
  57. package/dist/components/Table/columnConfigUtils.js.map +1 -0
  58. package/dist/components/Table/index.d.ts +2 -1
  59. package/dist/index.js +289 -276
  60. package/dist/index.js.map +1 -1
  61. package/dist/marsun-components-core.css +1 -1
  62. package/dist/styles/global.css +1 -1
  63. package/package.json +1 -1
@@ -0,0 +1,318 @@
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";
6
+ import { resolveFilterVisible as C } from "../types.js";
7
+ import { useFilterFieldBridge as pr, useFilterRegister as wr } from "../useFilterState.js";
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;
15
+ return {
16
+ value: c.id,
17
+ label: i(c),
18
+ children: t,
19
+ isLeaf: !(t != null && t.length)
20
+ };
21
+ }) : [];
22
+ }
23
+ function Fr(r, i) {
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({
31
+ ...e,
32
+ children: f.length > 0 ? f : void 0,
33
+ isLeaf: !(f.length > 0)
34
+ });
35
+ }
36
+ return s;
37
+ };
38
+ return t(r);
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);
46
+ }
47
+ };
48
+ return c(r, []), i;
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 ?? [];
55
+ }
56
+ return t;
57
+ }
58
+ function er(r) {
59
+ var i;
60
+ return (i = r.children) != null && i.length ? r.children.flatMap(er) : [String(r.value)];
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));
65
+ };
66
+ for (const e of r) {
67
+ if (!(e != null && e.length)) continue;
68
+ const a = String(e[e.length - 1]);
69
+ if (c.has(a)) {
70
+ n(a);
71
+ continue;
72
+ }
73
+ if (!t) {
74
+ n(a);
75
+ continue;
76
+ }
77
+ const f = Tr(i, e.map(String));
78
+ f && er(f).forEach(n);
79
+ }
80
+ return l;
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);
88
+ }
89
+ };
90
+ return c(r), i;
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);
96
+ const t = Array.isArray(r) ? r[0] : r;
97
+ if (!(t == null || t === ""))
98
+ return i.get(String(t)) || [String(t)];
99
+ }
100
+ function Ir(r, i, c, t, l) {
101
+ if (r == null || Array.isArray(r) && r.length === 0)
102
+ return i ? [] : void 0;
103
+ if (i) {
104
+ const e = r.filter((a) => Array.isArray(a) && a.length);
105
+ return P(
106
+ e.map((a) => a.map(String)),
107
+ t,
108
+ l,
109
+ c
110
+ );
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];
117
+ }
118
+ const qr = ({
119
+ filterKey: r,
120
+ label: i,
121
+ treeData: c,
122
+ options: t,
123
+ loadData: l,
124
+ enabled: s = !0,
125
+ value: n,
126
+ onChange: e,
127
+ onChangePath: a,
128
+ showSearch: f = !1,
129
+ multiple: o = !1,
130
+ leafOnly: V = !0,
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,
139
+ loading: ir = !1
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({
146
+ filterKey: r,
147
+ value: n,
148
+ label: i,
149
+ dependsOn: nr,
150
+ clearOnDepsChange: cr,
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);
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;
159
+ return Q(!0), (async () => {
160
+ try {
161
+ const g = await x.current({ values: ar });
162
+ d || J(g ?? []);
163
+ } catch {
164
+ d || J([]);
165
+ } finally {
166
+ d || Q(!1);
167
+ }
168
+ })(), () => {
169
+ d = !0;
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)
174
+ );
175
+ q(() => {
176
+ X(n ?? (o ? [] : void 0)), n == null && H("");
177
+ }, [n, o]);
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("、") : "";
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);
190
+ return;
191
+ }
192
+ W ? M.register(r, {
193
+ label: p,
194
+ valueLabel: W,
195
+ onRemove: () => {
196
+ e == null || e(o ? [] : void 0), a == null || a(void 0);
197
+ }
198
+ }) : M.unregister(r);
199
+ }
200
+ }, [
201
+ W,
202
+ r,
203
+ p,
204
+ R,
205
+ I,
206
+ M,
207
+ e,
208
+ a,
209
+ o,
210
+ E
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);
221
+ },
222
+ [e, a]
223
+ ), mr = O(
224
+ (d) => {
225
+ const y = Ir(
226
+ d,
227
+ o,
228
+ V,
229
+ m,
230
+ b
231
+ );
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, _);
238
+ }
239
+ },
240
+ [o, V, m, b, z]
241
+ ), 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
+ {
248
+ label: p,
249
+ active: Sr,
250
+ loading: U,
251
+ width: lr,
252
+ 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(
258
+ "div",
259
+ {
260
+ className: h(
261
+ "filter-cascader-panel-extra",
262
+ v["filter-cascader-panel-extra"]
263
+ ),
264
+ children: j
265
+ }
266
+ ) : null,
267
+ f ? /* @__PURE__ */ u("div", { className: h("filter-cascader-search", v["filter-cascader-search"]), children: /* @__PURE__ */ u(
268
+ Nr,
269
+ {
270
+ placeholder: `搜索${p}`,
271
+ allowClear: !0,
272
+ value: k,
273
+ onChange: (d) => H(d.target.value)
274
+ }
275
+ ) }) : 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(
277
+ "div",
278
+ {
279
+ className: h(
280
+ "filter-cascader-panel-wrap",
281
+ v["filter-cascader-panel-wrap"]
282
+ ),
283
+ children: /* @__PURE__ */ u(
284
+ K.Panel,
285
+ {
286
+ className: h("filter-cascader-panel", v["filter-cascader-panel"]),
287
+ options: Y,
288
+ value: gr,
289
+ onChange: mr,
290
+ multiple: o,
291
+ changeOnSelect: !V,
292
+ ...o && V ? { showCheckedStrategy: K.SHOW_CHILD } : {}
293
+ }
294
+ )
295
+ }
296
+ ),
297
+ o && Array.isArray(w) && w.length > 0 ? /* @__PURE__ */ u(
298
+ "div",
299
+ {
300
+ className: h(
301
+ "filter-cascader-selected-bar",
302
+ v["filter-cascader-selected-bar"]
303
+ ),
304
+ children: /* @__PURE__ */ u(Ar, { size: [4, 4], wrap: !0, children: /* @__PURE__ */ Z("span", { className: v["filter-cascader-selected-count"], children: [
305
+ "已选 ",
306
+ w.length
307
+ ] }) })
308
+ }
309
+ ) : null
310
+ ] })
311
+ }
312
+ ) : null;
313
+ };
314
+ export {
315
+ qr as default,
316
+ rr as treeToCascaderOptions
317
+ };
318
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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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"}
@@ -0,0 +1,14 @@
1
+ const a = {
2
+ "filter-cascader-root": "_filter-cascader-root_13av2_1",
3
+ "filter-cascader-panel-extra": "_filter-cascader-panel-extra_13av2_5",
4
+ "filter-cascader-search": "_filter-cascader-search_13av2_9",
5
+ "filter-cascader-loading": "_filter-cascader-loading_13av2_14",
6
+ "filter-cascader-panel-wrap": "_filter-cascader-panel-wrap_13av2_22",
7
+ "filter-cascader-panel": "_filter-cascader-panel_13av2_5",
8
+ "filter-cascader-selected-bar": "_filter-cascader-selected-bar_13av2_109",
9
+ "filter-cascader-selected-count": "_filter-cascader-selected-count_13av2_117"
10
+ };
11
+ export {
12
+ a as default
13
+ };
14
+ //# sourceMappingURL=style.module.scss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
@@ -1,117 +1,135 @@
1
- import { jsxs as E, jsx as h } from "react/jsx-runtime";
2
- import { DatePicker as H } from "antd";
3
- import I from "dayjs";
4
- import { useState as O, useMemo as g, useEffect as j } from "react";
5
- import { parsePickerValue as u, formatPickerValue as K } from "../../../utils/pickerDate.js";
6
- import L from "../FilterPopover/index.js";
7
- import { resolveHidden as M } from "../types.js";
8
- import { useFilterRegister as T } from "../useFilterState.js";
9
- import c from "./style.module.scss.js";
10
- import P from "classnames";
11
- function Y(r) {
12
- const e = I();
13
- return r === "year" ? [{ key: "thisYear", label: "今年", getValue: () => e.startOf("year") }] : r === "month" ? [{ key: "thisMonth", label: "本月", getValue: () => e.startOf("month") }] : [{ key: "today", label: "今天", getValue: () => e.startOf("day") }];
1
+ import { jsxs as T, jsx as O } from "react/jsx-runtime";
2
+ import { DatePicker as Y } from "antd";
3
+ import w from "dayjs";
4
+ import { useState as P, useRef as z, useMemo as M, useEffect as R } from "react";
5
+ import { parsePickerValue as m, formatPickerValue as G } from "../../../utils/pickerDate.js";
6
+ import J from "../FilterPopover/index.js";
7
+ import { resolveHidden as S } from "../types.js";
8
+ import { useFilterFieldBridge as K, useFilterRegister as U } from "../useFilterState.js";
9
+ import u from "./style.module.scss.js";
10
+ import q from "classnames";
11
+ function W(t) {
12
+ const l = w();
13
+ return t === "year" ? [{ key: "thisYear", label: "今年", getValue: () => l.startOf("year") }] : t === "month" ? [{ key: "thisMonth", label: "本月", getValue: () => l.startOf("month") }] : [{ key: "today", label: "今天", getValue: () => l.startOf("day") }];
14
14
  }
15
- function w(r, e) {
16
- return !r && !e ? !0 : !r || !e ? !1 : r === e;
15
+ function X(t, l) {
16
+ return !t && !l ? !0 : !t || !l ? !1 : t === l;
17
17
  }
18
- function z(r, e, t) {
19
- if (!r) return null;
20
- const i = u(r, e);
18
+ function Z(t, l, e) {
19
+ if (!t) return null;
20
+ const i = m(t, l);
21
21
  if (!i.isValid()) return null;
22
- for (const n of t) {
23
- const m = n.getValue(), d = e === "year" ? "year" : e === "month" ? "month" : "day";
24
- if (m.isSame(i, d)) return n.key;
22
+ for (const s of e) {
23
+ const d = s.getValue(), k = l === "year" ? "year" : l === "month" ? "month" : "day";
24
+ if (d.isSame(i, k)) return s.key;
25
25
  }
26
26
  return null;
27
27
  }
28
- const it = ({
29
- filterKey: r,
30
- label: e,
31
- value: t,
28
+ const ae = ({
29
+ filterKey: t,
30
+ label: l,
31
+ value: e,
32
32
  onChange: i,
33
- picker: n = "date",
34
- defaultValue: m,
35
- showDefaultAsSelected: d = !1,
36
- showQuickOptions: q = !1,
37
- quickOptions: N,
38
- placeholder: R,
39
- disabledDate: S,
40
- active: A,
41
- hidden: k
33
+ picker: s = "date",
34
+ defaultValue: d,
35
+ showDefaultAsSelected: k = !1,
36
+ showQuickOptions: N = !1,
37
+ quickOptions: x,
38
+ placeholder: A,
39
+ disabledDate: B,
40
+ active: L,
41
+ hidden: p,
42
+ dependsOn: g,
43
+ clearOnDepsChange: E = !0
42
44
  }) => {
43
- const [b, p] = O(!1), [y, l] = O(t ? u(t, n) : null), [x, o] = O(null), f = T(), a = g(
44
- () => N ?? (q ? Y(n) : []),
45
- [N, q, n]
46
- ), F = (s) => {
47
- o(z(s, n, a));
48
- }, Q = () => {
49
- t ? (l(u(t, n)), F(t)) : (l(null), o(null));
45
+ const [H, y] = P(!1), [V, n] = P(e ? m(e, s) : null), [Q, o] = P(null), c = z(i);
46
+ c.current = i;
47
+ const { resolvedLabel: D } = K({
48
+ filterKey: t,
49
+ value: e,
50
+ label: l,
51
+ dependsOn: g,
52
+ clearOnDepsChange: E,
53
+ onDepsClear: () => {
54
+ var r;
55
+ return (r = c.current) == null ? void 0 : r.call(c, null);
56
+ }
57
+ }), a = U(), f = M(
58
+ () => x ?? (N ? W(s) : []),
59
+ [x, N, s]
60
+ ), h = (r) => {
61
+ o(Z(r, s, f));
62
+ }, j = () => {
63
+ e ? (n(m(e, s)), h(e)) : (n(null), o(null));
50
64
  };
51
- j(() => {
52
- t ? (l(u(t, n)), F(t)) : (l(null), o(null));
53
- }, [t, n, a]);
54
- const V = d ? !!t : !!t && !w(t, m), D = g(() => !V || !t ? "" : t, [V, t]);
55
- return j(() => {
56
- if (f) {
57
- if (M(k)) {
58
- f.unregister(r);
65
+ R(() => {
66
+ e ? (n(m(e, s)), h(e)) : (n(null), o(null));
67
+ }, [e, s, f]);
68
+ const b = k ? !!e : !!e && !X(e, d), F = M(() => !b || !e ? "" : e, [b, e]);
69
+ return R(() => {
70
+ if (a) {
71
+ if (S(p)) {
72
+ a.unregister(t);
59
73
  return;
60
74
  }
61
- D ? f.register(r, { label: e, valueLabel: D, onRemove: () => i == null ? void 0 : i(null) }) : f.unregister(r);
75
+ F ? a.register(t, {
76
+ label: D,
77
+ valueLabel: F,
78
+ onRemove: () => i == null ? void 0 : i(null)
79
+ }) : a.unregister(t);
62
80
  }
63
- }, [D, r, e, k]), M(k) ? null : /* @__PURE__ */ E(
64
- L,
81
+ }, [F, t, D, p]), S(p) ? null : /* @__PURE__ */ T(
82
+ J,
65
83
  {
66
- label: e,
67
- active: A || V,
68
- open: b,
69
- onOpenChange: (s) => {
70
- Q(), p(s);
84
+ label: D,
85
+ active: L || b,
86
+ open: H,
87
+ onOpenChange: (r) => {
88
+ j(), y(r);
71
89
  },
72
90
  onConfirm: () => {
73
- y ? i == null || i(K(y, n)) : i == null || i(null), p(!1);
91
+ V ? i == null || i(G(V, s)) : i == null || i(null), y(!1);
74
92
  },
75
93
  onReset: () => {
76
- Q(), p(!1);
94
+ j(), y(!1);
77
95
  },
78
96
  children: [
79
- a.length > 0 ? /* @__PURE__ */ h(
97
+ f.length > 0 ? /* @__PURE__ */ O(
80
98
  "div",
81
99
  {
82
- className: P(
100
+ className: q(
83
101
  "filter-date-picker-quick-options",
84
- c["filter-date-picker-quick-options"]
102
+ u["filter-date-picker-quick-options"]
85
103
  ),
86
- children: a.map((s) => /* @__PURE__ */ h(
104
+ children: f.map((r) => /* @__PURE__ */ O(
87
105
  "span",
88
106
  {
89
- className: P(
107
+ className: q(
90
108
  "filter-date-picker-quick-option",
91
- c["filter-date-picker-quick-option"],
92
- x === s.key && "filter-date-picker-quick-option-active",
93
- x === s.key && c["filter-date-picker-quick-option-active"]
109
+ u["filter-date-picker-quick-option"],
110
+ Q === r.key && "filter-date-picker-quick-option-active",
111
+ Q === r.key && u["filter-date-picker-quick-option-active"]
94
112
  ),
95
113
  onClick: () => {
96
- const B = s.getValue();
97
- l(B), o(s.key);
114
+ const I = r.getValue();
115
+ n(I), o(r.key);
98
116
  },
99
- children: s.label
117
+ children: r.label
100
118
  },
101
- s.key
119
+ r.key
102
120
  ))
103
121
  }
104
122
  ) : null,
105
- /* @__PURE__ */ h(
106
- H,
123
+ /* @__PURE__ */ O(
124
+ Y,
107
125
  {
108
- className: P("filter-date-picker", c["filter-date-picker"]),
109
- picker: n,
110
- value: y,
111
- placeholder: R,
112
- disabledDate: S,
113
- onChange: (s) => {
114
- l(s), o(null);
126
+ className: q("filter-date-picker", u["filter-date-picker"]),
127
+ picker: s,
128
+ value: V,
129
+ placeholder: A,
130
+ disabledDate: B,
131
+ onChange: (r) => {
132
+ n(r), o(null);
115
133
  }
116
134
  }
117
135
  )
@@ -120,9 +138,9 @@ const it = ({
120
138
  );
121
139
  };
122
140
  export {
123
- it as default,
124
- z as findMatchingQuickKey,
125
- Y as getBuiltInQuickOptions,
126
- w as isSamePickerValue
141
+ ae as default,
142
+ Z as findMatchingQuickKey,
143
+ W as getBuiltInQuickOptions,
144
+ X as isSamePickerValue
127
145
  };
128
146
  //# sourceMappingURL=index.js.map