@hkyhy/marsun-components-core 0.1.29 → 0.1.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Auth/UserProfileCard/UserProfileCard.d.ts +7 -1
- package/dist/components/Auth/UserProfileCard/UserProfileCard.js +59 -28
- package/dist/components/Auth/UserProfileCard/UserProfileCard.js.map +1 -1
- package/dist/components/Auth/UserProfileCard/style.module.scss.js +16 -10
- package/dist/components/Auth/UserProfileCard/style.module.scss.js.map +1 -1
- package/dist/components/Filter/CommonFilter/index.js +88 -53
- package/dist/components/Filter/CommonFilter/index.js.map +1 -1
- package/dist/components/Filter/FilterDatePicker/index.js +102 -84
- package/dist/components/Filter/FilterDatePicker/index.js.map +1 -1
- package/dist/components/Filter/FilterDateRange/index.js +84 -66
- package/dist/components/Filter/FilterDateRange/index.js.map +1 -1
- package/dist/components/Filter/FilterInput/index.js +51 -33
- package/dist/components/Filter/FilterInput/index.js.map +1 -1
- package/dist/components/Filter/FilterNumberRange/index.js +87 -69
- package/dist/components/Filter/FilterNumberRange/index.js.map +1 -1
- package/dist/components/Filter/FilterSelect/index.d.ts +14 -2
- package/dist/components/Filter/FilterSelect/index.js +216 -177
- package/dist/components/Filter/FilterSelect/index.js.map +1 -1
- package/dist/components/Filter/FilterSelect/style.module.scss.js +15 -14
- package/dist/components/Filter/FilterSelect/style.module.scss.js.map +1 -1
- package/dist/components/Filter/FilterTreeSelect/index.d.ts +12 -1
- package/dist/components/Filter/FilterTreeSelect/index.js +233 -190
- package/dist/components/Filter/FilterTreeSelect/index.js.map +1 -1
- package/dist/components/Filter/FilterTreeSelect/style.module.scss.js +14 -13
- package/dist/components/Filter/FilterTreeSelect/style.module.scss.js.map +1 -1
- package/dist/components/Filter/FilterTrigger/index.js +34 -14
- package/dist/components/Filter/FilterTrigger/index.js.map +1 -1
- package/dist/components/Filter/index.d.ts +4 -3
- package/dist/components/Filter/types.d.ts +27 -1
- package/dist/components/Filter/types.js +24 -7
- package/dist/components/Filter/types.js.map +1 -1
- package/dist/components/Filter/useFilterState.d.ts +37 -5
- package/dist/components/Filter/useFilterState.js +74 -23
- package/dist/components/Filter/useFilterState.js.map +1 -1
- package/dist/index.js +170 -164
- package/dist/marsun-components-core.css +1 -1
- package/dist/styles/global.css +1 -1
- package/package.json +1 -1
|
@@ -1,56 +1,74 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { Input as
|
|
3
|
-
import { useState as
|
|
4
|
-
import
|
|
5
|
-
import { useFilterRegister as
|
|
6
|
-
import { resolveHidden as
|
|
7
|
-
const
|
|
1
|
+
import { jsx as d } from "react/jsx-runtime";
|
|
2
|
+
import { Input as E } from "antd";
|
|
3
|
+
import { useState as L, useRef as P, useEffect as f } from "react";
|
|
4
|
+
import V from "../FilterPopover/index.js";
|
|
5
|
+
import { useFilterFieldBridge as j, useFilterRegister as w } from "../useFilterState.js";
|
|
6
|
+
import { resolveHidden as F } from "../types.js";
|
|
7
|
+
const q = ({
|
|
8
8
|
filterKey: e,
|
|
9
|
-
label:
|
|
9
|
+
label: v,
|
|
10
10
|
value: t,
|
|
11
11
|
onChange: r,
|
|
12
|
-
placeholder:
|
|
13
|
-
active:
|
|
14
|
-
hidden:
|
|
12
|
+
placeholder: R,
|
|
13
|
+
active: b,
|
|
14
|
+
hidden: u,
|
|
15
|
+
dependsOn: I,
|
|
16
|
+
clearOnDepsChange: x = !0
|
|
15
17
|
}) => {
|
|
16
|
-
const [
|
|
17
|
-
|
|
18
|
+
const [p, m] = L(t ?? ""), s = P(r);
|
|
19
|
+
s.current = r;
|
|
20
|
+
const { resolvedLabel: i } = j({
|
|
21
|
+
filterKey: e,
|
|
22
|
+
value: t,
|
|
23
|
+
label: v,
|
|
24
|
+
dependsOn: I,
|
|
25
|
+
clearOnDepsChange: x,
|
|
26
|
+
onDepsClear: () => {
|
|
27
|
+
var l;
|
|
28
|
+
return (l = s.current) == null ? void 0 : l.call(s, void 0);
|
|
29
|
+
}
|
|
30
|
+
}), o = w();
|
|
31
|
+
if (f(() => {
|
|
18
32
|
m(t ?? "");
|
|
19
|
-
}, [t]),
|
|
20
|
-
if (
|
|
21
|
-
if (
|
|
22
|
-
|
|
33
|
+
}, [t]), f(() => {
|
|
34
|
+
if (o) {
|
|
35
|
+
if (F(u)) {
|
|
36
|
+
o.unregister(e);
|
|
23
37
|
return;
|
|
24
38
|
}
|
|
25
|
-
t ?
|
|
39
|
+
t ? o.register(e, {
|
|
40
|
+
label: i,
|
|
41
|
+
valueLabel: t,
|
|
42
|
+
onRemove: () => r == null ? void 0 : r(void 0)
|
|
43
|
+
}) : o.unregister(e);
|
|
26
44
|
}
|
|
27
|
-
}, [t, e,
|
|
28
|
-
const
|
|
29
|
-
r == null || r(
|
|
45
|
+
}, [t, e, i, u]), F(u)) return null;
|
|
46
|
+
const c = () => {
|
|
47
|
+
r == null || r(p || void 0);
|
|
30
48
|
};
|
|
31
|
-
return /* @__PURE__ */
|
|
32
|
-
|
|
49
|
+
return /* @__PURE__ */ d(
|
|
50
|
+
V,
|
|
33
51
|
{
|
|
34
|
-
label:
|
|
35
|
-
active:
|
|
36
|
-
onConfirm:
|
|
52
|
+
label: i,
|
|
53
|
+
active: b || !!t,
|
|
54
|
+
onConfirm: c,
|
|
37
55
|
onReset: () => {
|
|
38
56
|
m(""), r == null || r(void 0);
|
|
39
57
|
},
|
|
40
|
-
children: /* @__PURE__ */
|
|
41
|
-
|
|
58
|
+
children: /* @__PURE__ */ d(
|
|
59
|
+
E,
|
|
42
60
|
{
|
|
43
|
-
placeholder:
|
|
61
|
+
placeholder: R ?? `请输入${i}`,
|
|
44
62
|
allowClear: !0,
|
|
45
|
-
value:
|
|
46
|
-
onChange: (
|
|
47
|
-
onPressEnter:
|
|
63
|
+
value: p,
|
|
64
|
+
onChange: (l) => m(l.target.value),
|
|
65
|
+
onPressEnter: c
|
|
48
66
|
}
|
|
49
67
|
)
|
|
50
68
|
}
|
|
51
69
|
);
|
|
52
70
|
};
|
|
53
71
|
export {
|
|
54
|
-
|
|
72
|
+
q as default
|
|
55
73
|
};
|
|
56
74
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/Filter/FilterInput/index.tsx"],"sourcesContent":["import { Input } from 'antd';\nimport React, { useEffect, useState } from 'react';\nimport FilterPopover from '../FilterPopover';\nimport { useFilterRegister } from '../useFilterState';\nimport type { BaseFilterProps } from '../types';\nimport { resolveHidden } from '../types';\n\ninterface FilterInputProps extends BaseFilterProps {\n value?: string;\n onChange?: (value: string | undefined) => void;\n placeholder?: string;\n}\n\nconst FilterInput: React.FC<FilterInputProps> = ({\n filterKey,\n label,\n value,\n onChange,\n placeholder,\n active,\n hidden,\n}) => {\n const [inputValue, setInputValue] = useState(value ?? '');\n\n
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/Filter/FilterInput/index.tsx"],"sourcesContent":["import { Input } from 'antd';\nimport React, { useEffect, useRef, useState } from 'react';\nimport FilterPopover from '../FilterPopover';\nimport { useFilterFieldBridge, useFilterRegister } from '../useFilterState';\nimport type { BaseFilterProps } from '../types';\nimport { resolveHidden } from '../types';\n\ninterface FilterInputProps extends BaseFilterProps {\n value?: string;\n onChange?: (value: string | undefined) => void;\n placeholder?: string;\n}\n\nconst FilterInput: React.FC<FilterInputProps> = ({\n filterKey,\n label,\n value,\n onChange,\n placeholder,\n active,\n hidden,\n dependsOn,\n clearOnDepsChange = true,\n}) => {\n const [inputValue, setInputValue] = useState(value ?? '');\n\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n const { resolvedLabel } = useFilterFieldBridge({\n filterKey,\n value,\n label,\n dependsOn,\n clearOnDepsChange,\n onDepsClear: () => onChangeRef.current?.(undefined),\n });\n\n const registerFn = useFilterRegister();\n\n useEffect(() => {\n setInputValue(value ?? '');\n }, [value]);\n\n useEffect(() => {\n if (!registerFn) return;\n if (resolveHidden(hidden)) {\n registerFn.unregister(filterKey);\n return;\n }\n if (value) {\n registerFn.register(filterKey, {\n label: resolvedLabel,\n valueLabel: value,\n onRemove: () => onChange?.(undefined),\n });\n } else {\n registerFn.unregister(filterKey);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value, filterKey, resolvedLabel, hidden]);\n\n if (resolveHidden(hidden)) return null;\n\n const handleConfirm = () => {\n onChange?.(inputValue || undefined);\n };\n\n const handleReset = () => {\n setInputValue('');\n onChange?.(undefined);\n };\n\n return (\n <FilterPopover\n label={resolvedLabel}\n active={active || !!value}\n onConfirm={handleConfirm}\n onReset={handleReset}\n >\n <Input\n placeholder={placeholder ?? `请输入${resolvedLabel}`}\n allowClear\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onPressEnter={handleConfirm}\n />\n </FilterPopover>\n );\n};\n\nexport default FilterInput;\nexport type { FilterInputProps };\n"],"names":["FilterInput","filterKey","label","value","onChange","placeholder","active","hidden","dependsOn","clearOnDepsChange","inputValue","setInputValue","useState","onChangeRef","useRef","resolvedLabel","useFilterFieldBridge","_a","registerFn","useFilterRegister","useEffect","resolveHidden","handleConfirm","jsx","FilterPopover","Input","e"],"mappings":";;;;;;AAaA,MAAMA,IAA0C,CAAC;AAAA,EAC/C,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,QAAAC;AAAA,EACA,QAAAC;AAAA,EACA,WAAAC;AAAA,EACA,mBAAAC,IAAoB;AACtB,MAAM;AACJ,QAAM,CAACC,GAAYC,CAAa,IAAIC,EAAST,KAAS,EAAE,GAElDU,IAAcC,EAAOV,CAAQ;AACnC,EAAAS,EAAY,UAAUT;AAEtB,QAAM,EAAE,eAAAW,EAAA,IAAkBC,EAAqB;AAAA,IAC7C,WAAAf;AAAA,IACA,OAAAE;AAAA,IACA,OAAAD;AAAA,IACA,WAAAM;AAAA,IACA,mBAAAC;AAAA,IACA,aAAa,MAAA;;AAAM,cAAAQ,IAAAJ,EAAY,YAAZ,gBAAAI,EAAA,KAAAJ,GAAsB;AAAA;AAAA,EAAS,CACnD,GAEKK,IAAaC,EAAA;AAwBnB,MAtBAC,EAAU,MAAM;AACd,IAAAT,EAAcR,KAAS,EAAE;AAAA,EAC3B,GAAG,CAACA,CAAK,CAAC,GAEViB,EAAU,MAAM;AACd,QAAKF,GACL;AAAA,UAAIG,EAAcd,CAAM,GAAG;AACzB,QAAAW,EAAW,WAAWjB,CAAS;AAC/B;AAAA,MACF;AACA,MAAIE,IACFe,EAAW,SAASjB,GAAW;AAAA,QAC7B,OAAOc;AAAA,QACP,YAAYZ;AAAA,QACZ,UAAU,MAAMC,KAAA,gBAAAA,EAAW;AAAA,MAAS,CACrC,IAEDc,EAAW,WAAWjB,CAAS;AAAA;AAAA,EAGnC,GAAG,CAACE,GAAOF,GAAWc,GAAeR,CAAM,CAAC,GAExCc,EAAcd,CAAM,EAAG,QAAO;AAElC,QAAMe,IAAgB,MAAM;AAC1B,IAAAlB,KAAA,QAAAA,EAAWM,KAAc;AAAA,EAC3B;AAOA,SACE,gBAAAa;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAOT;AAAA,MACP,QAAQT,KAAU,CAAC,CAACH;AAAA,MACpB,WAAWmB;AAAA,MACX,SAVgB,MAAM;AACxB,QAAAX,EAAc,EAAE,GAChBP,KAAA,QAAAA,EAAW;AAAA,MACb;AAAA,MASI,UAAA,gBAAAmB;AAAA,QAACE;AAAA,QAAA;AAAA,UACC,aAAapB,KAAe,MAAMU,CAAa;AAAA,UAC/C,YAAU;AAAA,UACV,OAAOL;AAAA,UACP,UAAU,CAACgB,MAAMf,EAAce,EAAE,OAAO,KAAK;AAAA,UAC7C,cAAcJ;AAAA,QAAA;AAAA,MAAA;AAAA,IAChB;AAAA,EAAA;AAGN;"}
|
|
@@ -1,86 +1,104 @@
|
|
|
1
|
-
import { jsx as d, jsxs as
|
|
2
|
-
import { InputNumber as
|
|
3
|
-
import { useState as
|
|
4
|
-
import
|
|
5
|
-
import { useFilterRegister as
|
|
6
|
-
import { resolveHidden as
|
|
1
|
+
import { jsx as d, jsxs as $ } from "react/jsx-runtime";
|
|
2
|
+
import { InputNumber as j, message as G } from "antd";
|
|
3
|
+
import { useState as S, useRef as J, useEffect as w, useMemo as O } from "react";
|
|
4
|
+
import Q from "../FilterPopover/index.js";
|
|
5
|
+
import { useFilterFieldBridge as U, useFilterRegister as W } from "../useFilterState.js";
|
|
6
|
+
import { resolveHidden as z } from "../types.js";
|
|
7
7
|
import f from "./style.module.scss.js";
|
|
8
8
|
import c from "classnames";
|
|
9
|
-
function
|
|
10
|
-
return
|
|
9
|
+
function L(s, i) {
|
|
10
|
+
return i != null && i >= 0 ? s.toFixed(i) : String(s);
|
|
11
11
|
}
|
|
12
|
-
function
|
|
12
|
+
function X(s, i) {
|
|
13
13
|
if (s != null) return s;
|
|
14
|
-
if (
|
|
14
|
+
if (i != null && i >= 0) return 10 ** -i;
|
|
15
15
|
}
|
|
16
|
-
const
|
|
16
|
+
const rr = ({
|
|
17
17
|
filterKey: s,
|
|
18
|
-
label:
|
|
18
|
+
label: i,
|
|
19
19
|
value: r,
|
|
20
20
|
onChange: t,
|
|
21
21
|
unit: u,
|
|
22
|
-
minPlaceholder:
|
|
23
|
-
maxPlaceholder:
|
|
24
|
-
min:
|
|
25
|
-
max:
|
|
26
|
-
precision:
|
|
27
|
-
step:
|
|
28
|
-
active:
|
|
29
|
-
hidden:
|
|
22
|
+
minPlaceholder: T = "最低...",
|
|
23
|
+
maxPlaceholder: B = "最高...",
|
|
24
|
+
min: V,
|
|
25
|
+
max: g,
|
|
26
|
+
precision: o,
|
|
27
|
+
step: D,
|
|
28
|
+
active: H,
|
|
29
|
+
hidden: N,
|
|
30
|
+
dependsOn: I,
|
|
31
|
+
clearOnDepsChange: P = !0
|
|
30
32
|
}) => {
|
|
31
|
-
const [
|
|
32
|
-
|
|
33
|
-
|
|
33
|
+
const [l, x] = S(r == null ? void 0 : r[0]), [m, a] = S(r == null ? void 0 : r[1]), [E, n] = S(""), M = X(D, o), b = J(t);
|
|
34
|
+
b.current = t;
|
|
35
|
+
const { resolvedLabel: F } = U({
|
|
36
|
+
filterKey: s,
|
|
37
|
+
value: r,
|
|
38
|
+
label: i,
|
|
39
|
+
dependsOn: I,
|
|
40
|
+
clearOnDepsChange: P,
|
|
41
|
+
onDepsClear: () => {
|
|
42
|
+
var e;
|
|
43
|
+
return (e = b.current) == null ? void 0 : e.call(b, null);
|
|
44
|
+
}
|
|
45
|
+
}), p = W();
|
|
46
|
+
w(() => {
|
|
47
|
+
x(r == null ? void 0 : r[0]), a(r == null ? void 0 : r[1]), n("");
|
|
34
48
|
}, [r]);
|
|
35
|
-
const R =
|
|
36
|
-
if (
|
|
37
|
-
const
|
|
38
|
-
return `${
|
|
39
|
-
}, [
|
|
40
|
-
if (
|
|
41
|
-
if (
|
|
42
|
-
if (
|
|
43
|
-
|
|
49
|
+
const R = O(() => {
|
|
50
|
+
if (l === void 0 && m === void 0) return "";
|
|
51
|
+
const e = l !== void 0 ? L(l, o) : "—", A = m !== void 0 ? L(m, o) : "—";
|
|
52
|
+
return `${e} ~ ${A}${u ?? ""}`;
|
|
53
|
+
}, [l, m, u, o]);
|
|
54
|
+
if (w(() => {
|
|
55
|
+
if (p) {
|
|
56
|
+
if (z(N)) {
|
|
57
|
+
p.unregister(s);
|
|
44
58
|
return;
|
|
45
59
|
}
|
|
46
|
-
R ?
|
|
60
|
+
R ? p.register(s, {
|
|
61
|
+
label: F,
|
|
62
|
+
valueLabel: R,
|
|
63
|
+
onRemove: () => t == null ? void 0 : t(null)
|
|
64
|
+
}) : p.unregister(s);
|
|
47
65
|
}
|
|
48
|
-
}, [R, s,
|
|
49
|
-
const
|
|
50
|
-
if (
|
|
51
|
-
const
|
|
52
|
-
return
|
|
66
|
+
}, [R, s, F, N]), z(N)) return null;
|
|
67
|
+
const k = () => {
|
|
68
|
+
if (l !== void 0 && m !== void 0 && l > m) {
|
|
69
|
+
const e = "最小值不能大于最大值";
|
|
70
|
+
return n(e), G.warning(e), !1;
|
|
53
71
|
}
|
|
54
|
-
|
|
55
|
-
},
|
|
56
|
-
|
|
72
|
+
n(""), l !== void 0 || m !== void 0 ? t == null || t([l, m]) : t == null || t(null);
|
|
73
|
+
}, q = () => {
|
|
74
|
+
x(void 0), a(void 0), n(""), t == null || t(null);
|
|
57
75
|
};
|
|
58
76
|
return /* @__PURE__ */ d(
|
|
59
|
-
|
|
77
|
+
Q,
|
|
60
78
|
{
|
|
61
|
-
label:
|
|
62
|
-
active:
|
|
63
|
-
onConfirm:
|
|
64
|
-
onReset:
|
|
79
|
+
label: F,
|
|
80
|
+
active: H || !!(r != null && r[0]) || !!(r != null && r[1]),
|
|
81
|
+
onConfirm: k,
|
|
82
|
+
onReset: q,
|
|
65
83
|
width: 380,
|
|
66
|
-
children: /* @__PURE__ */
|
|
67
|
-
/* @__PURE__ */
|
|
84
|
+
children: /* @__PURE__ */ $("div", { className: c("filter-number-range-body", f["filter-number-range-body"]), children: [
|
|
85
|
+
/* @__PURE__ */ $(
|
|
68
86
|
"div",
|
|
69
87
|
{
|
|
70
88
|
className: c("filter-number-range-inputs", f["filter-number-range-inputs"]),
|
|
71
89
|
children: [
|
|
72
90
|
/* @__PURE__ */ d(
|
|
73
|
-
|
|
91
|
+
j,
|
|
74
92
|
{
|
|
75
93
|
size: "middle",
|
|
76
|
-
placeholder:
|
|
77
|
-
value:
|
|
78
|
-
min:
|
|
79
|
-
max:
|
|
80
|
-
precision:
|
|
81
|
-
step:
|
|
82
|
-
onChange: (
|
|
83
|
-
|
|
94
|
+
placeholder: T,
|
|
95
|
+
value: l,
|
|
96
|
+
min: V,
|
|
97
|
+
max: g,
|
|
98
|
+
precision: o,
|
|
99
|
+
step: M,
|
|
100
|
+
onChange: (e) => {
|
|
101
|
+
x(e === null ? void 0 : e), n("");
|
|
84
102
|
}
|
|
85
103
|
}
|
|
86
104
|
),
|
|
@@ -95,17 +113,17 @@ const Z = ({
|
|
|
95
113
|
}
|
|
96
114
|
),
|
|
97
115
|
/* @__PURE__ */ d(
|
|
98
|
-
|
|
116
|
+
j,
|
|
99
117
|
{
|
|
100
118
|
size: "middle",
|
|
101
|
-
placeholder:
|
|
102
|
-
value:
|
|
103
|
-
min:
|
|
104
|
-
max:
|
|
105
|
-
precision:
|
|
106
|
-
step:
|
|
107
|
-
onChange: (
|
|
108
|
-
|
|
119
|
+
placeholder: B,
|
|
120
|
+
value: m,
|
|
121
|
+
min: V,
|
|
122
|
+
max: g,
|
|
123
|
+
precision: o,
|
|
124
|
+
step: M,
|
|
125
|
+
onChange: (e) => {
|
|
126
|
+
a(e === null ? void 0 : e), n("");
|
|
109
127
|
}
|
|
110
128
|
}
|
|
111
129
|
),
|
|
@@ -119,12 +137,12 @@ const Z = ({
|
|
|
119
137
|
]
|
|
120
138
|
}
|
|
121
139
|
),
|
|
122
|
-
|
|
140
|
+
E ? /* @__PURE__ */ d(
|
|
123
141
|
"div",
|
|
124
142
|
{
|
|
125
143
|
className: c("filter-number-range-error", f["filter-number-range-error"]),
|
|
126
144
|
role: "alert",
|
|
127
|
-
children:
|
|
145
|
+
children: E
|
|
128
146
|
}
|
|
129
147
|
) : null
|
|
130
148
|
] })
|
|
@@ -132,6 +150,6 @@ const Z = ({
|
|
|
132
150
|
);
|
|
133
151
|
};
|
|
134
152
|
export {
|
|
135
|
-
|
|
153
|
+
rr as default
|
|
136
154
|
};
|
|
137
155
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/Filter/FilterNumberRange/index.tsx"],"sourcesContent":["import { InputNumber, message } from 'antd';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport FilterPopover from '../FilterPopover';\nimport { useFilterRegister } from '../useFilterState';\nimport type { BaseFilterProps } from '../types';\nimport { resolveHidden } from '../types';\nimport styles from './style.module.scss';\nimport classNames from 'classnames';\n\ninterface FilterNumberRangeProps extends BaseFilterProps {\n value?: [number | undefined, number | undefined] | null;\n onChange?: (value: [number | undefined, number | undefined] | null) => void;\n unit?: string;\n minPlaceholder?: string;\n maxPlaceholder?: string;\n /** 绝对值下限(左右输入框共用) */\n min?: number;\n /** 绝对值上限(左右输入框共用) */\n max?: number;\n /** 小数位数 */\n precision?: number;\n /** 步进;未传且有 precision 时按 10^-precision 推导 */\n step?: number;\n}\n\nfunction formatNumber(n: number, precision?: number): string {\n if (precision != null && precision >= 0) return n.toFixed(precision);\n return String(n);\n}\n\nfunction resolveStep(step: number | undefined, precision: number | undefined): number | undefined {\n if (step != null) return step;\n if (precision != null && precision >= 0) return 10 ** -precision;\n return undefined;\n}\n\nconst FilterNumberRange: React.FC<FilterNumberRangeProps> = ({\n filterKey,\n label,\n value,\n onChange,\n unit,\n minPlaceholder = '最低...',\n maxPlaceholder = '最高...',\n min,\n max,\n precision,\n step,\n active,\n hidden,\n}) => {\n const [minVal, setMinVal] = useState<number | undefined>(value?.[0]);\n const [maxVal, setMaxVal] = useState<number | undefined>(value?.[1]);\n const [rangeError, setRangeError] = useState('');\n\n const resolvedStep = resolveStep(step, precision);\n\n // ── 自动注册到 CommonFilter ──\n const registerFn = useFilterRegister();\n\n // 同步外部 value 到内部 minVal/maxVal\n useEffect(() => {\n setMinVal(value?.[0]);\n setMaxVal(value?.[1]);\n setRangeError('');\n }, [value]);\n\n const valueLabel = useMemo(() => {\n if (minVal === undefined && maxVal === undefined) return '';\n const minText = minVal !== undefined ? formatNumber(minVal, precision) : '—';\n const maxText = maxVal !== undefined ? formatNumber(maxVal, precision) : '—';\n return `${minText} ~ ${maxText}${unit ?? ''}`;\n }, [minVal, maxVal, unit, precision]);\n\n useEffect(() => {\n if (!registerFn) return;\n if (resolveHidden(hidden)) {\n registerFn.unregister(filterKey);\n return;\n }\n if (valueLabel) {\n registerFn.register(filterKey, { label, valueLabel, onRemove: () => onChange?.(null) });\n } else {\n registerFn.unregister(filterKey);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [valueLabel, filterKey, label, hidden]);\n\n // hidden 处理 - 必须在所有 hooks 之后\n if (resolveHidden(hidden)) return null;\n\n const handleConfirm = (): boolean | void => {\n if (minVal !== undefined && maxVal !== undefined && minVal > maxVal) {\n const msg = '最小值不能大于最大值';\n setRangeError(msg);\n message.warning(msg);\n return false;\n }\n setRangeError('');\n if (minVal !== undefined || maxVal !== undefined) {\n onChange?.([minVal, maxVal]);\n } else {\n onChange?.(null);\n }\n };\n\n const handleReset = () => {\n setMinVal(undefined);\n setMaxVal(undefined);\n setRangeError('');\n onChange?.(null);\n };\n\n return (\n <FilterPopover\n label={label}\n active={active || !!value?.[0] || !!value?.[1]}\n onConfirm={handleConfirm}\n onReset={handleReset}\n width={380}\n >\n <div className={classNames('filter-number-range-body', styles['filter-number-range-body'])}>\n <div\n className={classNames('filter-number-range-inputs', styles['filter-number-range-inputs'])}\n >\n <InputNumber\n size=\"middle\"\n placeholder={minPlaceholder}\n value={minVal}\n min={min}\n max={max}\n precision={precision}\n step={resolvedStep}\n onChange={(v) => {\n setMinVal(v === null ? undefined : v);\n setRangeError('');\n }}\n />\n <span\n className={classNames(\n 'filter-number-range-separator',\n styles['filter-number-range-separator'],\n )}\n >\n -\n </span>\n <InputNumber\n size=\"middle\"\n placeholder={maxPlaceholder}\n value={maxVal}\n min={min}\n max={max}\n precision={precision}\n step={resolvedStep}\n onChange={(v) => {\n setMaxVal(v === null ? undefined : v);\n setRangeError('');\n }}\n />\n {unit ? (\n <span\n className={classNames('filter-number-range-unit', styles['filter-number-range-unit'])}\n >\n {unit}\n </span>\n ) : null}\n </div>\n {rangeError ? (\n <div\n className={classNames('filter-number-range-error', styles['filter-number-range-error'])}\n role=\"alert\"\n >\n {rangeError}\n </div>\n ) : null}\n </div>\n </FilterPopover>\n );\n};\n\nexport default FilterNumberRange;\nexport type { FilterNumberRangeProps };\n"],"names":["formatNumber","n","precision","resolveStep","step","FilterNumberRange","filterKey","label","value","onChange","unit","minPlaceholder","maxPlaceholder","min","max","active","hidden","minVal","setMinVal","useState","maxVal","setMaxVal","rangeError","setRangeError","resolvedStep","registerFn","useFilterRegister","useEffect","valueLabel","useMemo","minText","maxText","resolveHidden","handleConfirm","msg","message","handleReset","jsx","FilterPopover","jsxs","classNames","styles","InputNumber","v"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/Filter/FilterNumberRange/index.tsx"],"sourcesContent":["import { InputNumber, message } from 'antd';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport FilterPopover from '../FilterPopover';\nimport { useFilterFieldBridge, useFilterRegister } from '../useFilterState';\nimport type { BaseFilterProps } from '../types';\nimport { resolveHidden } from '../types';\nimport styles from './style.module.scss';\nimport classNames from 'classnames';\n\ninterface FilterNumberRangeProps extends BaseFilterProps {\n value?: [number | undefined, number | undefined] | null;\n onChange?: (value: [number | undefined, number | undefined] | null) => void;\n unit?: string;\n minPlaceholder?: string;\n maxPlaceholder?: string;\n /** 绝对值下限(左右输入框共用) */\n min?: number;\n /** 绝对值上限(左右输入框共用) */\n max?: number;\n /** 小数位数 */\n precision?: number;\n /** 步进;未传且有 precision 时按 10^-precision 推导 */\n step?: number;\n}\n\nfunction formatNumber(n: number, precision?: number): string {\n if (precision != null && precision >= 0) return n.toFixed(precision);\n return String(n);\n}\n\nfunction resolveStep(step: number | undefined, precision: number | undefined): number | undefined {\n if (step != null) return step;\n if (precision != null && precision >= 0) return 10 ** -precision;\n return undefined;\n}\n\nconst FilterNumberRange: React.FC<FilterNumberRangeProps> = ({\n filterKey,\n label,\n value,\n onChange,\n unit,\n minPlaceholder = '最低...',\n maxPlaceholder = '最高...',\n min,\n max,\n precision,\n step,\n active,\n hidden,\n dependsOn,\n clearOnDepsChange = true,\n}) => {\n const [minVal, setMinVal] = useState<number | undefined>(value?.[0]);\n const [maxVal, setMaxVal] = useState<number | undefined>(value?.[1]);\n const [rangeError, setRangeError] = useState('');\n\n const resolvedStep = resolveStep(step, precision);\n\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n const { resolvedLabel } = useFilterFieldBridge({\n filterKey,\n value,\n label,\n dependsOn,\n clearOnDepsChange,\n onDepsClear: () => onChangeRef.current?.(null),\n });\n\n // ── 自动注册到 CommonFilter ──\n const registerFn = useFilterRegister();\n\n // 同步外部 value 到内部 minVal/maxVal\n useEffect(() => {\n setMinVal(value?.[0]);\n setMaxVal(value?.[1]);\n setRangeError('');\n }, [value]);\n\n const valueLabel = useMemo(() => {\n if (minVal === undefined && maxVal === undefined) return '';\n const minText = minVal !== undefined ? formatNumber(minVal, precision) : '—';\n const maxText = maxVal !== undefined ? formatNumber(maxVal, precision) : '—';\n return `${minText} ~ ${maxText}${unit ?? ''}`;\n }, [minVal, maxVal, unit, precision]);\n\n useEffect(() => {\n if (!registerFn) return;\n if (resolveHidden(hidden)) {\n registerFn.unregister(filterKey);\n return;\n }\n if (valueLabel) {\n registerFn.register(filterKey, {\n label: resolvedLabel,\n valueLabel,\n onRemove: () => onChange?.(null),\n });\n } else {\n registerFn.unregister(filterKey);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [valueLabel, filterKey, resolvedLabel, hidden]);\n\n // hidden 处理 - 必须在所有 hooks 之后\n if (resolveHidden(hidden)) return null;\n\n const handleConfirm = (): boolean | void => {\n if (minVal !== undefined && maxVal !== undefined && minVal > maxVal) {\n const msg = '最小值不能大于最大值';\n setRangeError(msg);\n message.warning(msg);\n return false;\n }\n setRangeError('');\n if (minVal !== undefined || maxVal !== undefined) {\n onChange?.([minVal, maxVal]);\n } else {\n onChange?.(null);\n }\n };\n\n const handleReset = () => {\n setMinVal(undefined);\n setMaxVal(undefined);\n setRangeError('');\n onChange?.(null);\n };\n\n return (\n <FilterPopover\n label={resolvedLabel}\n active={active || !!value?.[0] || !!value?.[1]}\n onConfirm={handleConfirm}\n onReset={handleReset}\n width={380}\n >\n <div className={classNames('filter-number-range-body', styles['filter-number-range-body'])}>\n <div\n className={classNames('filter-number-range-inputs', styles['filter-number-range-inputs'])}\n >\n <InputNumber\n size=\"middle\"\n placeholder={minPlaceholder}\n value={minVal}\n min={min}\n max={max}\n precision={precision}\n step={resolvedStep}\n onChange={(v) => {\n setMinVal(v === null ? undefined : v);\n setRangeError('');\n }}\n />\n <span\n className={classNames(\n 'filter-number-range-separator',\n styles['filter-number-range-separator'],\n )}\n >\n -\n </span>\n <InputNumber\n size=\"middle\"\n placeholder={maxPlaceholder}\n value={maxVal}\n min={min}\n max={max}\n precision={precision}\n step={resolvedStep}\n onChange={(v) => {\n setMaxVal(v === null ? undefined : v);\n setRangeError('');\n }}\n />\n {unit ? (\n <span\n className={classNames('filter-number-range-unit', styles['filter-number-range-unit'])}\n >\n {unit}\n </span>\n ) : null}\n </div>\n {rangeError ? (\n <div\n className={classNames('filter-number-range-error', styles['filter-number-range-error'])}\n role=\"alert\"\n >\n {rangeError}\n </div>\n ) : null}\n </div>\n </FilterPopover>\n );\n};\n\nexport default FilterNumberRange;\nexport type { FilterNumberRangeProps };\n"],"names":["formatNumber","n","precision","resolveStep","step","FilterNumberRange","filterKey","label","value","onChange","unit","minPlaceholder","maxPlaceholder","min","max","active","hidden","dependsOn","clearOnDepsChange","minVal","setMinVal","useState","maxVal","setMaxVal","rangeError","setRangeError","resolvedStep","onChangeRef","useRef","resolvedLabel","useFilterFieldBridge","_a","registerFn","useFilterRegister","useEffect","valueLabel","useMemo","minText","maxText","resolveHidden","handleConfirm","msg","message","handleReset","jsx","FilterPopover","jsxs","classNames","styles","InputNumber","v"],"mappings":"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"}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
|
-
import { BaseFilterProps, FilterOption } from '../types';
|
|
2
|
+
import { BaseFilterProps, FilterLoadDataContext, FilterOption } from '../types';
|
|
3
3
|
type FilterSelectValue = string | number | (string | number)[] | undefined;
|
|
4
4
|
export type { FilterSelectValue };
|
|
5
5
|
interface FilterSelectProps extends BaseFilterProps {
|
|
6
|
-
options
|
|
6
|
+
/** 静态选项;与 loadData 二选一(同时存在时以 options 为准) */
|
|
7
|
+
options?: FilterOption[];
|
|
8
|
+
/** 按依赖值动态拉取选项 */
|
|
9
|
+
loadData?: (ctx: FilterLoadDataContext) => Promise<FilterOption[]>;
|
|
10
|
+
/** loadData 是否启用;默认 true */
|
|
11
|
+
enabled?: boolean;
|
|
7
12
|
value?: FilterSelectValue;
|
|
8
13
|
onChange?: (value: FilterSelectValue) => void;
|
|
9
14
|
/** 默认值:与默认值相同时视为未筛选(除非 showDefaultAsSelected) */
|
|
@@ -20,6 +25,13 @@ interface FilterSelectProps extends BaseFilterProps {
|
|
|
20
25
|
minSelection?: number;
|
|
21
26
|
/** 人员选项:展示部门与联系方式 */
|
|
22
27
|
variant?: 'default' | 'person';
|
|
28
|
+
/**
|
|
29
|
+
* 面板内嵌从属条件(与 search 同层:search 下方、选项列表上方)。
|
|
30
|
+
* 禁止再嵌 Filter*(双重 Popover)。
|
|
31
|
+
*/
|
|
32
|
+
panelExtra?: React.ReactNode;
|
|
33
|
+
/** 面板宽度;有 panelExtra 时默认 460 */
|
|
34
|
+
panelWidth?: number;
|
|
23
35
|
}
|
|
24
36
|
declare const FilterSelect: React.FC<FilterSelectProps>;
|
|
25
37
|
export default FilterSelect;
|