@hkyhy/marsun-components-core 0.1.15 → 0.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Filter/CommonFilter/index.js +34 -30
- package/dist/components/Filter/CommonFilter/index.js.map +1 -1
- package/dist/components/Filter/CommonFilter/style.module.scss.js +17 -16
- package/dist/components/Filter/CommonFilter/style.module.scss.js.map +1 -1
- package/dist/components/Filter/FilterSelect/index.d.ts +2 -0
- package/dist/components/Filter/FilterSelect/index.js +140 -118
- package/dist/components/Filter/FilterSelect/index.js.map +1 -1
- package/dist/components/Filter/FilterSelect/style.module.scss.js +12 -10
- package/dist/components/Filter/FilterSelect/style.module.scss.js.map +1 -1
- package/dist/components/Filter/types.d.ts +2 -0
- package/dist/components/Filter/types.js.map +1 -1
- package/dist/components/Filter/useFilterState.d.ts +2 -0
- package/dist/components/Filter/useFilterState.js +27 -26
- package/dist/components/Filter/useFilterState.js.map +1 -1
- package/dist/components/Layout/ModulePageShell/index.d.ts +17 -0
- package/dist/components/Layout/ModulePageShell/index.js +42 -0
- package/dist/components/Layout/ModulePageShell/index.js.map +1 -0
- package/dist/components/Layout/ModulePageShell/style.module.scss.js +10 -0
- package/dist/components/Layout/ModulePageShell/style.module.scss.js.map +1 -0
- package/dist/components/Layout/PageHeaderLayout/index.d.ts +3 -1
- package/dist/components/Layout/PageHeaderLayout/index.js +43 -34
- package/dist/components/Layout/PageHeaderLayout/index.js.map +1 -1
- package/dist/components/Layout/PageHeaderLayout/style.module.scss.js +5 -4
- package/dist/components/Layout/PageHeaderLayout/style.module.scss.js.map +1 -1
- package/dist/components/Layout/PageShell/PageShellContext.d.ts +20 -0
- package/dist/components/Layout/PageShell/PageShellContext.js +39 -0
- package/dist/components/Layout/PageShell/PageShellContext.js.map +1 -0
- package/dist/components/Layout/PageShell/index.d.ts +2 -0
- package/dist/components/Layout/PageSpin/index.d.ts +9 -0
- package/dist/components/Layout/PageSpin/index.js +9 -0
- package/dist/components/Layout/PageSpin/index.js.map +1 -0
- package/dist/components/Layout/PageSpin/style.module.scss.js +7 -0
- package/dist/components/Layout/PageSpin/style.module.scss.js.map +1 -0
- package/dist/components/Layout/index.d.ts +6 -0
- package/dist/index.js +152 -144
- package/dist/index.js.map +1 -1
- package/dist/marsun-components-core.css +1 -1
- package/dist/styles/global.css +1 -1
- package/package.json +2 -1
|
@@ -1,65 +1,69 @@
|
|
|
1
1
|
import { jsxs as o, jsx as l } from "react/jsx-runtime";
|
|
2
2
|
import { X as T } from "../../Icons/index.js";
|
|
3
3
|
import { Space as k, Tooltip as E, Button as x } from "antd";
|
|
4
|
-
import
|
|
4
|
+
import t from "classnames";
|
|
5
5
|
import F, { useMemo as L } from "react";
|
|
6
|
-
import
|
|
6
|
+
import e from "./style.module.scss.js";
|
|
7
7
|
import { useFilterState as S, FilterProvider as _ } from "../useFilterState.js";
|
|
8
8
|
import D from "../../Tag/SemanticTag.js";
|
|
9
9
|
const j = 20;
|
|
10
|
-
function z(
|
|
11
|
-
return
|
|
10
|
+
function z(r, m) {
|
|
11
|
+
return r.length <= m ? { display: r, truncated: !1 } : { display: `${r.slice(0, m)}...`, truncated: !0 };
|
|
12
12
|
}
|
|
13
13
|
const I = ({
|
|
14
|
-
children:
|
|
15
|
-
list:
|
|
14
|
+
children: r,
|
|
15
|
+
list: m,
|
|
16
16
|
extra: n,
|
|
17
17
|
onClearAll: i,
|
|
18
18
|
label: u = "筛选",
|
|
19
19
|
selectedTagMaxLength: h = j
|
|
20
20
|
}) => {
|
|
21
|
-
const { selectedItems: a, register: s, unregister:
|
|
22
|
-
|
|
23
|
-
}, [
|
|
24
|
-
return /* @__PURE__ */ o("div", { className:
|
|
25
|
-
/* @__PURE__ */ o("div", { className:
|
|
26
|
-
/* @__PURE__ */ l("span", { className:
|
|
27
|
-
/* @__PURE__ */ l(_, { ctx: N, children: /* @__PURE__ */ o("div", { className:
|
|
28
|
-
/* @__PURE__ */ o("div", { className:
|
|
29
|
-
|
|
30
|
-
|
|
21
|
+
const { selectedItems: a, register: s, unregister: f, clearAll: d } = S(), N = L(() => ({ register: s, unregister: f }), [s, f]), v = F.useCallback(() => {
|
|
22
|
+
d(), i == null || i();
|
|
23
|
+
}, [d, i]);
|
|
24
|
+
return /* @__PURE__ */ o("div", { className: t("common-filter-root", e["common-filter-root"]), children: [
|
|
25
|
+
/* @__PURE__ */ o("div", { className: t("common-filter-container", e["common-filter-container"]), children: [
|
|
26
|
+
/* @__PURE__ */ l("span", { className: t("common-filter-label", e["common-filter-label"]), children: u }),
|
|
27
|
+
/* @__PURE__ */ l(_, { ctx: N, children: /* @__PURE__ */ o("div", { className: t("common-filter-content", e["common-filter-content"]), children: [
|
|
28
|
+
/* @__PURE__ */ o("div", { className: t("common-filter-items", e["common-filter-items"]), children: [
|
|
29
|
+
m,
|
|
30
|
+
r
|
|
31
31
|
] }),
|
|
32
|
-
n && /* @__PURE__ */ l("div", { className:
|
|
32
|
+
n && /* @__PURE__ */ l("div", { className: t("common-filter-extra", e["common-filter-extra"]), children: n })
|
|
33
33
|
] }) })
|
|
34
34
|
] }),
|
|
35
|
-
a.length > 0 && /* @__PURE__ */ o("div", { className:
|
|
36
|
-
/* @__PURE__ */ o("div", { className:
|
|
37
|
-
/* @__PURE__ */ l("span", { className:
|
|
38
|
-
/* @__PURE__ */ l(k, { size: [8, 8], wrap: !0, className:
|
|
39
|
-
const { display: p, truncated:
|
|
40
|
-
return /* @__PURE__ */ l(D, { color: "primary", children: /* @__PURE__ */ o("span", { className:
|
|
35
|
+
a.length > 0 && /* @__PURE__ */ o("div", { className: t("common-filter-selected", e["common-filter-selected"]), children: [
|
|
36
|
+
/* @__PURE__ */ o("div", { className: t("common-filter-selected-main", e["common-filter-selected-main"]), children: [
|
|
37
|
+
/* @__PURE__ */ l("span", { className: t("common-filter-selected-title", e["common-filter-selected-title"]), children: "您已选择" }),
|
|
38
|
+
/* @__PURE__ */ l(k, { size: [8, 8], wrap: !0, className: t("common-filter-selected-tags", e["common-filter-selected-tags"]), children: a.map((c) => {
|
|
39
|
+
const { display: p, truncated: b } = z(c.valueLabel, h), g = b ? /* @__PURE__ */ l(E, { title: c.valueLabel, children: /* @__PURE__ */ l("span", { children: p }) }) : /* @__PURE__ */ l("span", { children: p });
|
|
40
|
+
return /* @__PURE__ */ l(D, { color: "primary", children: /* @__PURE__ */ o("span", { className: t("common-filter-tag", e["common-filter-tag"]), children: [
|
|
41
41
|
/* @__PURE__ */ o(
|
|
42
42
|
"span",
|
|
43
43
|
{
|
|
44
|
-
className:
|
|
44
|
+
className: t("common-filter-tag-label", e["common-filter-tag-label"]),
|
|
45
45
|
style: { color: "var(--font-color)" },
|
|
46
46
|
children: [
|
|
47
|
-
|
|
47
|
+
c.label,
|
|
48
48
|
":"
|
|
49
49
|
]
|
|
50
50
|
}
|
|
51
51
|
),
|
|
52
|
-
|
|
52
|
+
g,
|
|
53
53
|
/* @__PURE__ */ l(
|
|
54
54
|
T,
|
|
55
55
|
{
|
|
56
|
-
className:
|
|
56
|
+
className: t(
|
|
57
|
+
"common-filter-tag-close",
|
|
58
|
+
e["common-filter-tag-close"],
|
|
59
|
+
c.removable === !1 && e["common-filter-tag-close-disabled"]
|
|
60
|
+
),
|
|
57
61
|
onClick: (y) => {
|
|
58
|
-
y.preventDefault(),
|
|
62
|
+
y.preventDefault(), c.removable !== !1 && c.onRemove();
|
|
59
63
|
}
|
|
60
64
|
}
|
|
61
65
|
)
|
|
62
|
-
] }) },
|
|
66
|
+
] }) }, c.key);
|
|
63
67
|
}) })
|
|
64
68
|
] }),
|
|
65
69
|
/* @__PURE__ */ l(
|
|
@@ -68,7 +72,7 @@ const I = ({
|
|
|
68
72
|
type: "link",
|
|
69
73
|
size: "small",
|
|
70
74
|
onClick: v,
|
|
71
|
-
className:
|
|
75
|
+
className: t("common-filter-clear-btn", e["common-filter-clear-btn"]),
|
|
72
76
|
children: "清空全部"
|
|
73
77
|
}
|
|
74
78
|
)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/Filter/CommonFilter/index.tsx"],"sourcesContent":["import { SemanticTag } from '@/components/Tag';\nimport { X } from '@/components/Icons';\nimport { Button, Space, Tooltip } from 'antd';\nimport classNames from 'classnames';\nimport React, { useMemo } from 'react';\nimport styles from './style.module.scss';\nimport { FilterProvider, useFilterState } from '../useFilterState';\n\nconst DEFAULT_SELECTED_TAG_MAX_LENGTH = 20;\n\nfunction truncateText(text: string, maxLength: number) {\n if (text.length <= maxLength) {\n return { display: text, truncated: false };\n }\n return { display: `${text.slice(0, maxLength)}...`, truncated: true };\n}\n\ninterface CommonFilterProps {\n children?: React.ReactNode;\n /** 筛选项 JSX 数组,如 [<FilterInput .../>, <FilterSelect .../>] */\n list?: React.ReactNode[];\n /** 右侧额外内容(与筛选项两端对齐) */\n extra?: React.ReactNode;\n /** 清空全部回调 */\n onClearAll?: () => void;\n /** 左侧标签文字 */\n label?: string;\n /** 已选标签 value 最大字符数,超出显示 ... 并在 hover 时展示完整内容 */\n selectedTagMaxLength?: number;\n}\n\n/**\n * 通用筛选栏容器\n *\n * 内部通过 useFilterState 管理各子组件的注册状态,\n * 子组件(FilterInput / FilterSelect / FilterTreeSelect)自行通过 useFilterRegister 注册选中项。\n * 外部不再需要手动维护 selectedItems 数组。\n *\n * 用法一(children 模式):\n * ```tsx\n * <CommonFilter label=\"筛选\">\n * <FilterInput filterKey=\"keyword\" label=\"关键词\" value={keyword} onChange={setKeyword} />\n * <FilterSelect filterKey=\"status\" label=\"状态\" options={options} value={status} onChange={setStatus} />\n * </CommonFilter>\n * ```\n *\n * 用法二(list 模式):\n * ```tsx\n * const filterList = [\n * <FilterInput key=\"keyword\" filterKey=\"keyword\" label=\"关键词\" value={keyword} onChange={setKeyword} />,\n * <FilterSelect key=\"status\" filterKey=\"status\" label=\"状态\" options={options} value={status} onChange={setStatus} />,\n * ];\n * <CommonFilter label=\"筛选\" list={filterList} extra={<Button>导出</Button>} />\n * ```\n */\nconst CommonFilter: React.FC<CommonFilterProps> = ({\n children,\n list,\n extra,\n onClearAll,\n label = '筛选',\n selectedTagMaxLength = DEFAULT_SELECTED_TAG_MAX_LENGTH,\n}) => {\n const { selectedItems, register, unregister, clearAll } = useFilterState();\n\n const filterCtx = useMemo(() => ({ register, unregister }), [register, unregister]);\n\n // 合并外部 onClearAll 和内部的 clearAll\n const handleClearAll = React.useCallback(() => {\n clearAll();\n onClearAll?.();\n }, [clearAll, onClearAll]);\n\n return (\n <div className={classNames('common-filter-root', styles['common-filter-root'])}>\n {/* 筛选行 */}\n <div className={classNames('common-filter-container', styles['common-filter-container'])}>\n <span className={classNames('common-filter-label', styles['common-filter-label'])}>{label}</span>\n <FilterProvider ctx={filterCtx}>\n <div className={classNames('common-filter-content', styles['common-filter-content'])}>\n <div className={classNames('common-filter-items', styles['common-filter-items'])}>\n {list}\n {children}\n </div>\n {extra && (\n <div className={classNames('common-filter-extra', styles['common-filter-extra'])}>{extra}</div>\n )}\n </div>\n </FilterProvider>\n </div>\n\n {/* 已选择行 */}\n {selectedItems.length > 0 && (\n <div className={classNames('common-filter-selected', styles['common-filter-selected'])}>\n <div className={classNames('common-filter-selected-main', styles['common-filter-selected-main'])}>\n <span className={classNames('common-filter-selected-title', styles['common-filter-selected-title'])}>\n 您已选择\n </span>\n <Space size={[8, 8]} wrap className={classNames('common-filter-selected-tags', styles['common-filter-selected-tags'])}>\n {selectedItems.map((s) => {\n const { display, truncated } = truncateText(s.valueLabel, selectedTagMaxLength);\n const valueNode = truncated ? (\n <Tooltip title={s.valueLabel}>\n <span>{display}</span>\n </Tooltip>\n ) : (\n <span>{display}</span>\n );\n\n return (\n <SemanticTag key={s.key} color=\"primary\">\n <span className={classNames('common-filter-tag', styles['common-filter-tag'])}>\n <span\n className={classNames('common-filter-tag-label', styles['common-filter-tag-label'])}\n style={{ color: 'var(--font-color)' }}\n >\n {s.label}:\n </span>\n {valueNode}\n <X\n className={classNames('common-filter-tag-close'
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/Filter/CommonFilter/index.tsx"],"sourcesContent":["import { SemanticTag } from '@/components/Tag';\nimport { X } from '@/components/Icons';\nimport { Button, Space, Tooltip } from 'antd';\nimport classNames from 'classnames';\nimport React, { useMemo } from 'react';\nimport styles from './style.module.scss';\nimport { FilterProvider, useFilterState } from '../useFilterState';\n\nconst DEFAULT_SELECTED_TAG_MAX_LENGTH = 20;\n\nfunction truncateText(text: string, maxLength: number) {\n if (text.length <= maxLength) {\n return { display: text, truncated: false };\n }\n return { display: `${text.slice(0, maxLength)}...`, truncated: true };\n}\n\ninterface CommonFilterProps {\n children?: React.ReactNode;\n /** 筛选项 JSX 数组,如 [<FilterInput .../>, <FilterSelect .../>] */\n list?: React.ReactNode[];\n /** 右侧额外内容(与筛选项两端对齐) */\n extra?: React.ReactNode;\n /** 清空全部回调 */\n onClearAll?: () => void;\n /** 左侧标签文字 */\n label?: string;\n /** 已选标签 value 最大字符数,超出显示 ... 并在 hover 时展示完整内容 */\n selectedTagMaxLength?: number;\n}\n\n/**\n * 通用筛选栏容器\n *\n * 内部通过 useFilterState 管理各子组件的注册状态,\n * 子组件(FilterInput / FilterSelect / FilterTreeSelect)自行通过 useFilterRegister 注册选中项。\n * 外部不再需要手动维护 selectedItems 数组。\n *\n * 用法一(children 模式):\n * ```tsx\n * <CommonFilter label=\"筛选\">\n * <FilterInput filterKey=\"keyword\" label=\"关键词\" value={keyword} onChange={setKeyword} />\n * <FilterSelect filterKey=\"status\" label=\"状态\" options={options} value={status} onChange={setStatus} />\n * </CommonFilter>\n * ```\n *\n * 用法二(list 模式):\n * ```tsx\n * const filterList = [\n * <FilterInput key=\"keyword\" filterKey=\"keyword\" label=\"关键词\" value={keyword} onChange={setKeyword} />,\n * <FilterSelect key=\"status\" filterKey=\"status\" label=\"状态\" options={options} value={status} onChange={setStatus} />,\n * ];\n * <CommonFilter label=\"筛选\" list={filterList} extra={<Button>导出</Button>} />\n * ```\n */\nconst CommonFilter: React.FC<CommonFilterProps> = ({\n children,\n list,\n extra,\n onClearAll,\n label = '筛选',\n selectedTagMaxLength = DEFAULT_SELECTED_TAG_MAX_LENGTH,\n}) => {\n const { selectedItems, register, unregister, clearAll } = useFilterState();\n\n const filterCtx = useMemo(() => ({ register, unregister }), [register, unregister]);\n\n // 合并外部 onClearAll 和内部的 clearAll\n const handleClearAll = React.useCallback(() => {\n clearAll();\n onClearAll?.();\n }, [clearAll, onClearAll]);\n\n return (\n <div className={classNames('common-filter-root', styles['common-filter-root'])}>\n {/* 筛选行 */}\n <div className={classNames('common-filter-container', styles['common-filter-container'])}>\n <span className={classNames('common-filter-label', styles['common-filter-label'])}>{label}</span>\n <FilterProvider ctx={filterCtx}>\n <div className={classNames('common-filter-content', styles['common-filter-content'])}>\n <div className={classNames('common-filter-items', styles['common-filter-items'])}>\n {list}\n {children}\n </div>\n {extra && (\n <div className={classNames('common-filter-extra', styles['common-filter-extra'])}>{extra}</div>\n )}\n </div>\n </FilterProvider>\n </div>\n\n {/* 已选择行 */}\n {selectedItems.length > 0 && (\n <div className={classNames('common-filter-selected', styles['common-filter-selected'])}>\n <div className={classNames('common-filter-selected-main', styles['common-filter-selected-main'])}>\n <span className={classNames('common-filter-selected-title', styles['common-filter-selected-title'])}>\n 您已选择\n </span>\n <Space size={[8, 8]} wrap className={classNames('common-filter-selected-tags', styles['common-filter-selected-tags'])}>\n {selectedItems.map((s) => {\n const { display, truncated } = truncateText(s.valueLabel, selectedTagMaxLength);\n const valueNode = truncated ? (\n <Tooltip title={s.valueLabel}>\n <span>{display}</span>\n </Tooltip>\n ) : (\n <span>{display}</span>\n );\n\n return (\n <SemanticTag key={s.key} color=\"primary\">\n <span className={classNames('common-filter-tag', styles['common-filter-tag'])}>\n <span\n className={classNames('common-filter-tag-label', styles['common-filter-tag-label'])}\n style={{ color: 'var(--font-color)' }}\n >\n {s.label}:\n </span>\n {valueNode}\n <X\n className={classNames(\n 'common-filter-tag-close',\n styles['common-filter-tag-close'],\n s.removable === false && styles['common-filter-tag-close-disabled'],\n )}\n onClick={(e) => {\n e.preventDefault();\n if (s.removable === false) return;\n s.onRemove();\n }}\n />\n </span>\n </SemanticTag>\n );\n })}\n </Space>\n </div>\n <Button\n type=\"link\"\n size=\"small\"\n onClick={handleClearAll}\n className={classNames('common-filter-clear-btn', styles['common-filter-clear-btn'])}\n >\n 清空全部\n </Button>\n </div>\n )}\n </div>\n );\n};\n\nexport default CommonFilter;\nexport type { CommonFilterProps };\n"],"names":["DEFAULT_SELECTED_TAG_MAX_LENGTH","truncateText","text","maxLength","CommonFilter","children","list","extra","onClearAll","label","selectedTagMaxLength","selectedItems","register","unregister","clearAll","useFilterState","filterCtx","useMemo","handleClearAll","React","jsxs","classNames","styles","jsx","FilterProvider","Space","s","display","truncated","valueNode","Tooltip","SemanticTag","X","e","Button"],"mappings":"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"}
|
|
@@ -1,20 +1,21 @@
|
|
|
1
|
-
const
|
|
2
|
-
"common-filter-root": "_common-filter-
|
|
3
|
-
"common-filter-container": "_common-filter-
|
|
4
|
-
"common-filter-label": "_common-filter-
|
|
5
|
-
"common-filter-content": "_common-filter-
|
|
6
|
-
"common-filter-items": "_common-filter-
|
|
7
|
-
"common-filter-extra": "_common-filter-
|
|
8
|
-
"common-filter-selected": "_common-filter-
|
|
9
|
-
"common-filter-selected-main": "_common-filter-selected-
|
|
10
|
-
"common-filter-selected-title": "_common-filter-selected-
|
|
11
|
-
"common-filter-selected-tags": "_common-filter-selected-
|
|
12
|
-
"common-filter-tag": "_common-filter-
|
|
13
|
-
"common-filter-tag-label": "_common-filter-tag-
|
|
14
|
-
"common-filter-tag-close": "_common-filter-tag-
|
|
15
|
-
"common-filter-
|
|
1
|
+
const e = {
|
|
2
|
+
"common-filter-root": "_common-filter-root_16e7m_1",
|
|
3
|
+
"common-filter-container": "_common-filter-container_16e7m_6",
|
|
4
|
+
"common-filter-label": "_common-filter-label_16e7m_12",
|
|
5
|
+
"common-filter-content": "_common-filter-content_16e7m_19",
|
|
6
|
+
"common-filter-items": "_common-filter-items_16e7m_26",
|
|
7
|
+
"common-filter-extra": "_common-filter-extra_16e7m_34",
|
|
8
|
+
"common-filter-selected": "_common-filter-selected_16e7m_39",
|
|
9
|
+
"common-filter-selected-main": "_common-filter-selected-main_16e7m_46",
|
|
10
|
+
"common-filter-selected-title": "_common-filter-selected-title_16e7m_52",
|
|
11
|
+
"common-filter-selected-tags": "_common-filter-selected-tags_16e7m_58",
|
|
12
|
+
"common-filter-tag": "_common-filter-tag_16e7m_62",
|
|
13
|
+
"common-filter-tag-label": "_common-filter-tag-label_16e7m_68",
|
|
14
|
+
"common-filter-tag-close": "_common-filter-tag-close_16e7m_72",
|
|
15
|
+
"common-filter-tag-close-disabled": "_common-filter-tag-close-disabled_16e7m_82",
|
|
16
|
+
"common-filter-clear-btn": "_common-filter-clear-btn_16e7m_88"
|
|
16
17
|
};
|
|
17
18
|
export {
|
|
18
|
-
|
|
19
|
+
e as default
|
|
19
20
|
};
|
|
20
21
|
//# sourceMappingURL=style.module.scss.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"style.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
|
|
@@ -1,174 +1,196 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { Check as
|
|
3
|
-
import { Input as
|
|
4
|
-
import { useState as
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import { resolveFilterVisible as
|
|
8
|
-
import { useFilterRegister as
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
const { Search:
|
|
12
|
-
function
|
|
1
|
+
import { jsxs as N, jsx as v } from "react/jsx-runtime";
|
|
2
|
+
import { Check as W, X as Y } from "../../Icons/index.js";
|
|
3
|
+
import { Input as Z, Checkbox as _, Space as K } from "antd";
|
|
4
|
+
import { useState as D, useRef as V, useMemo as z, useEffect as B } from "react";
|
|
5
|
+
import ee from "../../Form/PersonOptionRow/index.js";
|
|
6
|
+
import re from "../FilterPopover/index.js";
|
|
7
|
+
import { resolveFilterVisible as E } from "../types.js";
|
|
8
|
+
import { useFilterRegister as te } from "../useFilterState.js";
|
|
9
|
+
import m from "./style.module.scss.js";
|
|
10
|
+
import h from "classnames";
|
|
11
|
+
const { Search: se } = Z;
|
|
12
|
+
function ne(r) {
|
|
13
13
|
const t = [r.label];
|
|
14
14
|
return r.departmentName && t.push(r.departmentName), t.join(" · ");
|
|
15
15
|
}
|
|
16
|
-
function
|
|
17
|
-
const
|
|
18
|
-
return [r.label, r.departmentName, r.email, r.phone, r.employeeId].filter(Boolean).some((
|
|
16
|
+
function ce(r, t) {
|
|
17
|
+
const o = t.toLowerCase();
|
|
18
|
+
return [r.label, r.departmentName, r.email, r.phone, r.employeeId].filter(Boolean).some((l) => String(l).toLowerCase().includes(o));
|
|
19
19
|
}
|
|
20
|
-
function
|
|
20
|
+
function ie(r, t) {
|
|
21
21
|
if (!(r != null && r.length) && !(t != null && t.length)) return !0;
|
|
22
22
|
if (!r || !t || r.length !== t.length) return !1;
|
|
23
|
-
const
|
|
24
|
-
return
|
|
23
|
+
const o = [...r].map(String).sort(), l = [...t].map(String).sort();
|
|
24
|
+
return o.every((c, d) => c === l[d]);
|
|
25
25
|
}
|
|
26
|
-
function
|
|
27
|
-
if (
|
|
28
|
-
const
|
|
29
|
-
return
|
|
26
|
+
function I(r, t, o, l) {
|
|
27
|
+
if (l) {
|
|
28
|
+
const c = Array.isArray(r) ? r : r != null && r !== "" ? [r] : [];
|
|
29
|
+
return o != null && o.length && ie(c, o) ? [] : c;
|
|
30
30
|
}
|
|
31
31
|
if (!(t !== void 0 && r === t))
|
|
32
32
|
return r;
|
|
33
33
|
}
|
|
34
|
-
function
|
|
35
|
-
if (
|
|
36
|
-
const
|
|
37
|
-
return
|
|
34
|
+
function oe(r, t, o, l) {
|
|
35
|
+
if (o) {
|
|
36
|
+
const d = r || [];
|
|
37
|
+
return d.length > 0 ? d.map((u) => {
|
|
38
38
|
var S;
|
|
39
|
-
return ((S = t.find((s) => s.value ===
|
|
39
|
+
return ((S = t.find((s) => String(s.value) === String(u))) == null ? void 0 : S.label) ?? String(u);
|
|
40
40
|
}).join("、") : "";
|
|
41
41
|
}
|
|
42
42
|
if (r == null) return "";
|
|
43
|
-
const
|
|
44
|
-
return
|
|
43
|
+
const c = t.find((d) => String(d.value) === String(r));
|
|
44
|
+
return c ? l ? ne(c) : c.label : String(r);
|
|
45
45
|
}
|
|
46
|
-
const
|
|
46
|
+
const Ne = ({
|
|
47
47
|
filterKey: r,
|
|
48
48
|
label: t,
|
|
49
|
-
options:
|
|
50
|
-
value:
|
|
51
|
-
onChange:
|
|
52
|
-
defaultValue:
|
|
53
|
-
defaultValues:
|
|
49
|
+
options: o = [],
|
|
50
|
+
value: l,
|
|
51
|
+
onChange: c,
|
|
52
|
+
defaultValue: d,
|
|
53
|
+
defaultValues: u,
|
|
54
54
|
searchable: S = !1,
|
|
55
55
|
multiple: s = !1,
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
56
|
+
minSelection: g,
|
|
57
|
+
variant: M = "default",
|
|
58
|
+
active: q,
|
|
59
|
+
hidden: C,
|
|
60
|
+
display: O
|
|
60
61
|
}) => {
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
), L =
|
|
64
|
-
w.current =
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
),
|
|
72
|
-
|
|
62
|
+
const x = M === "person", [X, b] = D(!1), [y, R] = D(""), n = I(l, d, u, s), [a, k] = D(
|
|
63
|
+
n ?? (s ? [] : void 0)
|
|
64
|
+
), L = te(), w = V(c);
|
|
65
|
+
w.current = c;
|
|
66
|
+
const F = z(() => {
|
|
67
|
+
const e = Array.isArray(n) ? n : n != null && n !== "" ? [n] : [], i = !s || g == null || e.length > g;
|
|
68
|
+
return () => {
|
|
69
|
+
var f;
|
|
70
|
+
i && ((f = w.current) == null || f.call(w, void 0));
|
|
71
|
+
};
|
|
72
|
+
}, [n, g, s]), j = () => {
|
|
73
|
+
k(n ?? (s ? [] : void 0)), R("");
|
|
73
74
|
};
|
|
74
|
-
|
|
75
|
-
const e =
|
|
76
|
-
|
|
77
|
-
}, [
|
|
78
|
-
const
|
|
79
|
-
() =>
|
|
80
|
-
[
|
|
75
|
+
B(() => {
|
|
76
|
+
const e = I(l, d, u, s);
|
|
77
|
+
k(e ?? (s ? [] : void 0)), (e == null || Array.isArray(e) && e.length === 0) && R("");
|
|
78
|
+
}, [l, d, u, s]);
|
|
79
|
+
const P = z(
|
|
80
|
+
() => oe(n, o, s, x),
|
|
81
|
+
[o, n, s, x]
|
|
81
82
|
);
|
|
82
|
-
if (
|
|
83
|
+
if (B(() => {
|
|
83
84
|
if (!L) return;
|
|
84
|
-
if (!
|
|
85
|
+
if (!E({ display: O, hidden: C }, { filterKey: r, label: t, value: l })) {
|
|
85
86
|
L.unregister(r);
|
|
86
87
|
return;
|
|
87
88
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
},
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
89
|
+
if (P) {
|
|
90
|
+
const i = Array.isArray(n) ? n : n != null && n !== "" ? [n] : [], f = !s || g == null || i.length > g;
|
|
91
|
+
L.register(r, {
|
|
92
|
+
label: t,
|
|
93
|
+
valueLabel: P,
|
|
94
|
+
onRemove: F,
|
|
95
|
+
removable: f
|
|
96
|
+
});
|
|
97
|
+
} else
|
|
98
|
+
L.unregister(r);
|
|
99
|
+
}, [P, r, t, C, O, F]), !E({ display: O, hidden: C }, { filterKey: r, label: t, value: l })) return null;
|
|
100
|
+
const T = y ? o.filter(
|
|
101
|
+
(e) => x ? ce(e, y) : e.label.toLowerCase().includes(y.toLowerCase())
|
|
102
|
+
) : o, $ = () => {
|
|
103
|
+
c == null || c(a), b(!1);
|
|
104
|
+
}, G = () => {
|
|
105
|
+
j(), b(!1);
|
|
106
|
+
}, H = (e) => {
|
|
107
|
+
!e && s && j(), b(e);
|
|
108
|
+
}, J = (e) => {
|
|
103
109
|
if (!s) {
|
|
104
|
-
const
|
|
105
|
-
let
|
|
106
|
-
|
|
110
|
+
const i = d !== void 0 && e === d;
|
|
111
|
+
let f;
|
|
112
|
+
a === e || i ? f = void 0 : f = e, k(f), c == null || c(f), b(!1);
|
|
107
113
|
}
|
|
108
|
-
},
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
+
}, p = (e) => {
|
|
115
|
+
const i = a || [];
|
|
116
|
+
if (i.includes(e) && g != null && i.length <= g)
|
|
117
|
+
return;
|
|
118
|
+
const f = i.includes(e) ? i.filter((A) => A !== e) : [...i, e];
|
|
119
|
+
k(f);
|
|
120
|
+
}, Q = s ? Array.isArray(n) && n.length > 0 : n != null && n !== "";
|
|
121
|
+
return /* @__PURE__ */ N(
|
|
122
|
+
re,
|
|
114
123
|
{
|
|
115
124
|
label: t,
|
|
116
|
-
active:
|
|
117
|
-
open:
|
|
118
|
-
onOpenChange:
|
|
119
|
-
onConfirm: s ?
|
|
120
|
-
onReset: s ?
|
|
125
|
+
active: q || Q,
|
|
126
|
+
open: X,
|
|
127
|
+
onOpenChange: H,
|
|
128
|
+
onConfirm: s ? $ : void 0,
|
|
129
|
+
onReset: s ? G : void 0,
|
|
121
130
|
children: [
|
|
122
|
-
S && /* @__PURE__ */
|
|
123
|
-
|
|
131
|
+
S && /* @__PURE__ */ v(
|
|
132
|
+
se,
|
|
124
133
|
{
|
|
125
134
|
placeholder: `搜索${t}`,
|
|
126
135
|
allowClear: !0,
|
|
127
136
|
size: "middle",
|
|
128
|
-
className:
|
|
129
|
-
value:
|
|
130
|
-
onChange: (e) =>
|
|
137
|
+
className: h("filter-select-search", m["filter-select-search"]),
|
|
138
|
+
value: y,
|
|
139
|
+
onChange: (e) => R(e.target.value)
|
|
131
140
|
}
|
|
132
141
|
),
|
|
133
|
-
/* @__PURE__ */
|
|
134
|
-
|
|
142
|
+
/* @__PURE__ */ N("div", { className: h("filter-select-options", m["filter-select-options"]), children: [
|
|
143
|
+
T.map((e) => /* @__PURE__ */ N(
|
|
135
144
|
"div",
|
|
136
145
|
{
|
|
137
|
-
className:
|
|
146
|
+
className: h(
|
|
138
147
|
"filter-select-option",
|
|
139
|
-
|
|
140
|
-
!s &&
|
|
148
|
+
m["filter-select-option"],
|
|
149
|
+
!s && a === e.value && h("filter-select-option-selected", m["filter-select-option-selected"])
|
|
141
150
|
),
|
|
142
|
-
onClick: () => s ?
|
|
151
|
+
onClick: () => s ? p(e.value) : J(e.value),
|
|
143
152
|
children: [
|
|
144
|
-
s && /* @__PURE__ */
|
|
145
|
-
|
|
153
|
+
s && /* @__PURE__ */ v(
|
|
154
|
+
_,
|
|
146
155
|
{
|
|
147
|
-
checked:
|
|
148
|
-
onChange: () =>
|
|
149
|
-
onClick: (
|
|
156
|
+
checked: a == null ? void 0 : a.includes(e.value),
|
|
157
|
+
onChange: () => p(e.value),
|
|
158
|
+
onClick: (i) => i.stopPropagation()
|
|
150
159
|
}
|
|
151
160
|
),
|
|
152
|
-
|
|
153
|
-
!s && !
|
|
161
|
+
x ? /* @__PURE__ */ v(ee, { option: e }) : /* @__PURE__ */ v("span", { children: e.label }),
|
|
162
|
+
!s && !x && a === e.value && /* @__PURE__ */ v(W, { className: h("filter-select-option-check", m["filter-select-option-check"]) })
|
|
154
163
|
]
|
|
155
164
|
},
|
|
156
165
|
String(e.value)
|
|
157
166
|
)),
|
|
158
|
-
|
|
167
|
+
T.length === 0 && /* @__PURE__ */ v("div", { className: h("filter-select-empty", m["filter-select-empty"]), children: "暂无数据" })
|
|
159
168
|
] }),
|
|
160
|
-
s && (
|
|
161
|
-
/* @__PURE__ */
|
|
162
|
-
/* @__PURE__ */
|
|
163
|
-
const
|
|
164
|
-
return /* @__PURE__ */
|
|
169
|
+
s && (a == null ? void 0 : a.length) > 0 && /* @__PURE__ */ N("div", { className: h("filter-select-selected-bar", m["filter-select-selected-bar"]), children: [
|
|
170
|
+
/* @__PURE__ */ v("div", { className: h("filter-select-selected-label", m["filter-select-selected-label"]), children: "已选:" }),
|
|
171
|
+
/* @__PURE__ */ v(K, { size: [4, 4], wrap: !0, children: a.map((e) => {
|
|
172
|
+
const i = o.find((U) => String(U.value) === String(e)), f = a || [], A = g == null || f.length > g;
|
|
173
|
+
return /* @__PURE__ */ N(
|
|
165
174
|
"span",
|
|
166
175
|
{
|
|
167
|
-
className:
|
|
168
|
-
|
|
176
|
+
className: h(
|
|
177
|
+
"filter-select-selected-tag",
|
|
178
|
+
m["filter-select-selected-tag"],
|
|
179
|
+
!A && m["filter-select-selected-tag-disabled"]
|
|
180
|
+
),
|
|
181
|
+
onClick: () => A && p(e),
|
|
169
182
|
children: [
|
|
170
|
-
(
|
|
171
|
-
/* @__PURE__ */
|
|
183
|
+
(i == null ? void 0 : i.label) ?? String(e),
|
|
184
|
+
/* @__PURE__ */ v(
|
|
185
|
+
Y,
|
|
186
|
+
{
|
|
187
|
+
className: h(
|
|
188
|
+
"filter-select-selected-remove",
|
|
189
|
+
m["filter-select-selected-remove"],
|
|
190
|
+
!A && m["filter-select-selected-remove-disabled"]
|
|
191
|
+
)
|
|
192
|
+
}
|
|
193
|
+
)
|
|
172
194
|
]
|
|
173
195
|
},
|
|
174
196
|
String(e)
|
|
@@ -180,6 +202,6 @@ const xe = ({
|
|
|
180
202
|
);
|
|
181
203
|
};
|
|
182
204
|
export {
|
|
183
|
-
|
|
205
|
+
Ne as default
|
|
184
206
|
};
|
|
185
207
|
//# sourceMappingURL=index.js.map
|