@hkyhy/marsun-components-core 0.1.28 → 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.d.ts +8 -0
- package/dist/components/Filter/FilterNumberRange/index.js +133 -59
- package/dist/components/Filter/FilterNumberRange/index.js.map +1 -1
- package/dist/components/Filter/FilterNumberRange/style.module.scss.js +7 -5
- package/dist/components/Filter/FilterNumberRange/style.module.scss.js.map +1 -1
- package/dist/components/Filter/FilterPopover/index.d.ts +2 -2
- package/dist/components/Filter/FilterPopover/index.js +7 -7
- package/dist/components/Filter/FilterPopover/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
|
@@ -13,10 +13,16 @@ export type UserProfileCardProps = {
|
|
|
13
13
|
menuItems?: MenuProps['items'];
|
|
14
14
|
/** 点击默认「退出登录」时回调 */
|
|
15
15
|
onLogout?: () => void;
|
|
16
|
+
/**
|
|
17
|
+
* 右侧扩展区(如站内信铃铛);在 Dropdown 触发器之外,
|
|
18
|
+
* 点击不会打开用户菜单。不传则不展示扩展区。
|
|
19
|
+
*/
|
|
20
|
+
extra?: React.ReactNode;
|
|
16
21
|
className?: string;
|
|
17
22
|
};
|
|
18
23
|
/**
|
|
19
|
-
*
|
|
24
|
+
* 侧栏底部用户卡片:主区域点击向上展开菜单(默认退出登录);
|
|
25
|
+
* 可选 `extra` 槽承载独立操作(如站内信),与主区同处视觉壳内。
|
|
20
26
|
* 纯 UI;是否挂载由业务根据登录态决定。
|
|
21
27
|
*/
|
|
22
28
|
declare const UserProfileCard: React.FC<UserProfileCardProps>;
|
|
@@ -1,57 +1,88 @@
|
|
|
1
|
-
import { jsx as e, jsxs as
|
|
2
|
-
import { LogOut as
|
|
3
|
-
import { Avatar as
|
|
4
|
-
import
|
|
5
|
-
import { useMemo as
|
|
1
|
+
import { jsx as e, jsxs as f } from "react/jsx-runtime";
|
|
2
|
+
import { LogOut as v } from "../../Icons/index.js";
|
|
3
|
+
import { Avatar as g, Dropdown as w } from "antd";
|
|
4
|
+
import i from "classnames";
|
|
5
|
+
import { useMemo as k } from "react";
|
|
6
6
|
import r from "./style.module.scss.js";
|
|
7
|
-
const
|
|
8
|
-
name:
|
|
9
|
-
sub:
|
|
10
|
-
avatarText:
|
|
11
|
-
collapsed:
|
|
7
|
+
const j = ({
|
|
8
|
+
name: s,
|
|
9
|
+
sub: o,
|
|
10
|
+
avatarText: u,
|
|
11
|
+
collapsed: l = !1,
|
|
12
12
|
menuItems: a,
|
|
13
|
-
onLogout:
|
|
14
|
-
|
|
13
|
+
onLogout: t,
|
|
14
|
+
extra: n,
|
|
15
|
+
className: d
|
|
15
16
|
}) => {
|
|
16
|
-
const
|
|
17
|
+
const h = (u || s).trim().charAt(0).toUpperCase() || "U", c = k(() => a || (t ? [
|
|
17
18
|
{
|
|
18
19
|
key: "logout",
|
|
19
20
|
danger: !0,
|
|
20
21
|
label: "退出登录",
|
|
21
|
-
icon: /* @__PURE__ */ e(
|
|
22
|
-
onClick:
|
|
22
|
+
icon: /* @__PURE__ */ e(v, { size: 14 }),
|
|
23
|
+
onClick: t
|
|
23
24
|
}
|
|
24
|
-
] : []), [a,
|
|
25
|
+
] : []), [a, t]), m = /* @__PURE__ */ f(
|
|
25
26
|
"button",
|
|
26
27
|
{
|
|
27
28
|
type: "button",
|
|
28
|
-
className:
|
|
29
|
+
className: i(
|
|
29
30
|
r["user-profile-card"],
|
|
30
|
-
|
|
31
|
-
m
|
|
31
|
+
l && r["user-profile-card--collapsed"]
|
|
32
32
|
),
|
|
33
33
|
"aria-label": "用户菜单",
|
|
34
34
|
children: [
|
|
35
|
-
/* @__PURE__ */ e(
|
|
36
|
-
|
|
37
|
-
/* @__PURE__ */ e("div", { className: r["user-profile-name"], title:
|
|
38
|
-
|
|
35
|
+
/* @__PURE__ */ e(g, { className: r["user-profile-avatar"], size: l ? 32 : 40, children: h }),
|
|
36
|
+
l ? null : /* @__PURE__ */ f("div", { className: r["user-profile-meta"], children: [
|
|
37
|
+
/* @__PURE__ */ e("div", { className: r["user-profile-name"], title: s, children: s }),
|
|
38
|
+
o ? /* @__PURE__ */ e("div", { className: r["user-profile-sub"], title: o, children: o }) : null
|
|
39
39
|
] })
|
|
40
40
|
]
|
|
41
41
|
}
|
|
42
|
-
);
|
|
42
|
+
), N = c && c.length > 0 ? /* @__PURE__ */ e(w, { menu: { items: c }, trigger: ["click"], placement: "topLeft", children: m }) : m;
|
|
43
43
|
return /* @__PURE__ */ e(
|
|
44
44
|
"div",
|
|
45
45
|
{
|
|
46
|
-
className:
|
|
46
|
+
className: i(
|
|
47
47
|
r["user-profile-wrap"],
|
|
48
|
-
|
|
48
|
+
l && r["user-profile-wrap--collapsed"]
|
|
49
49
|
),
|
|
50
|
-
children:
|
|
50
|
+
children: /* @__PURE__ */ e(
|
|
51
|
+
"div",
|
|
52
|
+
{
|
|
53
|
+
className: i(
|
|
54
|
+
r["user-profile-shell"],
|
|
55
|
+
l && r["user-profile-shell--collapsed"],
|
|
56
|
+
!!n && r["user-profile-shell--with-extra"],
|
|
57
|
+
d
|
|
58
|
+
),
|
|
59
|
+
children: /* @__PURE__ */ f(
|
|
60
|
+
"div",
|
|
61
|
+
{
|
|
62
|
+
className: i(
|
|
63
|
+
r["user-profile-row"],
|
|
64
|
+
l && r["user-profile-row--collapsed"]
|
|
65
|
+
),
|
|
66
|
+
children: [
|
|
67
|
+
/* @__PURE__ */ e("div", { className: r["user-profile-main"], children: N }),
|
|
68
|
+
n ? /* @__PURE__ */ e(
|
|
69
|
+
"div",
|
|
70
|
+
{
|
|
71
|
+
className: r["user-profile-extra"],
|
|
72
|
+
onClick: (p) => p.stopPropagation(),
|
|
73
|
+
onKeyDown: (p) => p.stopPropagation(),
|
|
74
|
+
children: n
|
|
75
|
+
}
|
|
76
|
+
) : null
|
|
77
|
+
]
|
|
78
|
+
}
|
|
79
|
+
)
|
|
80
|
+
}
|
|
81
|
+
)
|
|
51
82
|
}
|
|
52
83
|
);
|
|
53
84
|
};
|
|
54
85
|
export {
|
|
55
|
-
|
|
86
|
+
j as default
|
|
56
87
|
};
|
|
57
88
|
//# sourceMappingURL=UserProfileCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserProfileCard.js","sources":["../../../../src/components/Auth/UserProfileCard/UserProfileCard.tsx"],"sourcesContent":["import { LogOut } from '../../Icons';\nimport { Avatar, Dropdown } from 'antd';\nimport type { MenuProps } from 'antd';\nimport classNames from 'classnames';\nimport React, { useMemo } from 'react';\nimport styles from './style.module.scss';\n\nexport type UserProfileCardProps = {\n /** 主文案(姓名 / 展示名) */\n name: string;\n /** 副文案(邮箱 / 工号等) */\n sub?: string;\n /** 头像文字,默认 name 首字 */\n avatarText?: string;\n /** 侧栏折叠时仅显示头像 */\n collapsed?: boolean;\n /** 自定义下拉菜单;不传则在提供 onLogout 时生成「退出登录」 */\n menuItems?: MenuProps['items'];\n /** 点击默认「退出登录」时回调 */\n onLogout?: () => void;\n className?: string;\n};\n\n/**\n *
|
|
1
|
+
{"version":3,"file":"UserProfileCard.js","sources":["../../../../src/components/Auth/UserProfileCard/UserProfileCard.tsx"],"sourcesContent":["import { LogOut } from '../../Icons';\nimport { Avatar, Dropdown } from 'antd';\nimport type { MenuProps } from 'antd';\nimport classNames from 'classnames';\nimport React, { useMemo } from 'react';\nimport styles from './style.module.scss';\n\nexport type UserProfileCardProps = {\n /** 主文案(姓名 / 展示名) */\n name: string;\n /** 副文案(邮箱 / 工号等) */\n sub?: string;\n /** 头像文字,默认 name 首字 */\n avatarText?: string;\n /** 侧栏折叠时仅显示头像 */\n collapsed?: boolean;\n /** 自定义下拉菜单;不传则在提供 onLogout 时生成「退出登录」 */\n menuItems?: MenuProps['items'];\n /** 点击默认「退出登录」时回调 */\n onLogout?: () => void;\n /**\n * 右侧扩展区(如站内信铃铛);在 Dropdown 触发器之外,\n * 点击不会打开用户菜单。不传则不展示扩展区。\n */\n extra?: React.ReactNode;\n className?: string;\n};\n\n/**\n * 侧栏底部用户卡片:主区域点击向上展开菜单(默认退出登录);\n * 可选 `extra` 槽承载独立操作(如站内信),与主区同处视觉壳内。\n * 纯 UI;是否挂载由业务根据登录态决定。\n */\nconst UserProfileCard: React.FC<UserProfileCardProps> = ({\n name,\n sub,\n avatarText,\n collapsed = false,\n menuItems,\n onLogout,\n extra,\n className,\n}) => {\n const initial = (avatarText || name).trim().charAt(0).toUpperCase() || 'U';\n\n const items = useMemo<MenuProps['items']>(() => {\n if (menuItems) return menuItems;\n if (!onLogout) return [];\n return [\n {\n key: 'logout',\n danger: true,\n label: '退出登录',\n icon: <LogOut size={14} />,\n onClick: onLogout,\n },\n ];\n }, [menuItems, onLogout]);\n\n const trigger = (\n <button\n type=\"button\"\n className={classNames(\n styles['user-profile-card'],\n collapsed && styles['user-profile-card--collapsed'],\n )}\n aria-label=\"用户菜单\"\n >\n <Avatar className={styles['user-profile-avatar']} size={collapsed ? 32 : 40}>\n {initial}\n </Avatar>\n {!collapsed ? (\n <div className={styles['user-profile-meta']}>\n <div className={styles['user-profile-name']} title={name}>\n {name}\n </div>\n {sub ? (\n <div className={styles['user-profile-sub']} title={sub}>\n {sub}\n </div>\n ) : null}\n </div>\n ) : null}\n </button>\n );\n\n const main =\n items && items.length > 0 ? (\n <Dropdown menu={{ items }} trigger={['click']} placement=\"topLeft\">\n {trigger}\n </Dropdown>\n ) : (\n trigger\n );\n\n return (\n <div\n className={classNames(\n styles['user-profile-wrap'],\n collapsed && styles['user-profile-wrap--collapsed'],\n )}\n >\n <div\n className={classNames(\n styles['user-profile-shell'],\n collapsed && styles['user-profile-shell--collapsed'],\n Boolean(extra) && styles['user-profile-shell--with-extra'],\n className,\n )}\n >\n <div\n className={classNames(\n styles['user-profile-row'],\n collapsed && styles['user-profile-row--collapsed'],\n )}\n >\n <div className={styles['user-profile-main']}>{main}</div>\n {extra ? (\n <div\n className={styles['user-profile-extra']}\n onClick={(e) => e.stopPropagation()}\n onKeyDown={(e) => e.stopPropagation()}\n >\n {extra}\n </div>\n ) : null}\n </div>\n </div>\n </div>\n );\n};\n\nexport default UserProfileCard;\n"],"names":["UserProfileCard","name","sub","avatarText","collapsed","menuItems","onLogout","extra","className","initial","items","useMemo","jsx","LogOut","trigger","jsxs","classNames","styles","Avatar","main","Dropdown","e"],"mappings":";;;;;;AAiCA,MAAMA,IAAkD,CAAC;AAAA,EACvD,MAAAC;AAAA,EACA,KAAAC;AAAA,EACA,YAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC;AACF,MAAM;AACJ,QAAMC,KAAWN,KAAcF,GAAM,OAAO,OAAO,CAAC,EAAE,YAAA,KAAiB,KAEjES,IAAQC,EAA4B,MACpCN,MACCC,IACE;AAAA,IACL;AAAA,MACE,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM,gBAAAM,EAACC,GAAA,EAAO,MAAM,GAAA,CAAI;AAAA,MACxB,SAASP;AAAA,IAAA;AAAA,EACX,IARoB,CAAA,IAUrB,CAACD,GAAWC,CAAQ,CAAC,GAElBQ,IACJ,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAWC;AAAA,QACTC,EAAO,mBAAmB;AAAA,QAC1Bb,KAAaa,EAAO,8BAA8B;AAAA,MAAA;AAAA,MAEpD,cAAW;AAAA,MAEX,UAAA;AAAA,QAAA,gBAAAL,EAACM,GAAA,EAAO,WAAWD,EAAO,qBAAqB,GAAG,MAAMb,IAAY,KAAK,IACtE,UAAAK,EAAA,CACH;AAAA,QACEL,IAWE,OAVF,gBAAAW,EAAC,SAAI,WAAWE,EAAO,mBAAmB,GACxC,UAAA;AAAA,UAAA,gBAAAL,EAAC,SAAI,WAAWK,EAAO,mBAAmB,GAAG,OAAOhB,GACjD,UAAAA,GACH;AAAA,UACCC,IACC,gBAAAU,EAAC,OAAA,EAAI,WAAWK,EAAO,kBAAkB,GAAG,OAAOf,GAChD,UAAAA,EAAA,CACH,IACE;AAAA,QAAA,EAAA,CACN;AAAA,MACE;AAAA,IAAA;AAAA,EAAA,GAIFiB,IACJT,KAASA,EAAM,SAAS,IACtB,gBAAAE,EAACQ,KAAS,MAAM,EAAE,OAAAV,EAAA,GAAS,SAAS,CAAC,OAAO,GAAG,WAAU,WACtD,aACH,IAEAI;AAGJ,SACE,gBAAAF;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWI;AAAA,QACTC,EAAO,mBAAmB;AAAA,QAC1Bb,KAAaa,EAAO,8BAA8B;AAAA,MAAA;AAAA,MAGpD,UAAA,gBAAAL;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWI;AAAA,YACTC,EAAO,oBAAoB;AAAA,YAC3Bb,KAAaa,EAAO,+BAA+B;AAAA,YACnD,EAAQV,KAAUU,EAAO,gCAAgC;AAAA,YACzDT;AAAA,UAAA;AAAA,UAGF,UAAA,gBAAAO;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWC;AAAA,gBACTC,EAAO,kBAAkB;AAAA,gBACzBb,KAAaa,EAAO,6BAA6B;AAAA,cAAA;AAAA,cAGnD,UAAA;AAAA,gBAAA,gBAAAL,EAAC,OAAA,EAAI,WAAWK,EAAO,mBAAmB,GAAI,UAAAE,GAAK;AAAA,gBAClDZ,IACC,gBAAAK;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAWK,EAAO,oBAAoB;AAAA,oBACtC,SAAS,CAACI,MAAMA,EAAE,gBAAA;AAAA,oBAClB,WAAW,CAACA,MAAMA,EAAE,gBAAA;AAAA,oBAEnB,UAAAd;AAAA,kBAAA;AAAA,gBAAA,IAED;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QACN;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN;"}
|
|
@@ -1,14 +1,20 @@
|
|
|
1
|
-
const
|
|
2
|
-
"user-profile-wrap": "_user-profile-
|
|
3
|
-
"user-profile-wrap--collapsed": "_user-profile-wrap--
|
|
4
|
-
"user-profile-
|
|
5
|
-
"user-profile-
|
|
6
|
-
"user-profile-
|
|
7
|
-
"user-profile-
|
|
8
|
-
"user-profile-
|
|
9
|
-
"user-profile-
|
|
1
|
+
const e = {
|
|
2
|
+
"user-profile-wrap": "_user-profile-wrap_1n23e_2",
|
|
3
|
+
"user-profile-wrap--collapsed": "_user-profile-wrap--collapsed_1n23e_9",
|
|
4
|
+
"user-profile-shell": "_user-profile-shell_1n23e_14",
|
|
5
|
+
"user-profile-shell--collapsed": "_user-profile-shell--collapsed_1n23e_27",
|
|
6
|
+
"user-profile-row": "_user-profile-row_1n23e_32",
|
|
7
|
+
"user-profile-row--collapsed": "_user-profile-row--collapsed_1n23e_40",
|
|
8
|
+
"user-profile-main": "_user-profile-main_1n23e_47",
|
|
9
|
+
"user-profile-extra": "_user-profile-extra_1n23e_66",
|
|
10
|
+
"user-profile-card": "_user-profile-card_1n23e_99",
|
|
11
|
+
"user-profile-card--collapsed": "_user-profile-card--collapsed_1n23e_113",
|
|
12
|
+
"user-profile-avatar": "_user-profile-avatar_1n23e_118",
|
|
13
|
+
"user-profile-meta": "_user-profile-meta_1n23e_125",
|
|
14
|
+
"user-profile-name": "_user-profile-name_1n23e_130",
|
|
15
|
+
"user-profile-sub": "_user-profile-sub_1n23e_140"
|
|
10
16
|
};
|
|
11
17
|
export {
|
|
12
|
-
|
|
18
|
+
e as default
|
|
13
19
|
};
|
|
14
20
|
//# 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,78 +1,113 @@
|
|
|
1
|
-
import { jsxs as o, jsx as
|
|
2
|
-
import { X as
|
|
3
|
-
import { Space as
|
|
4
|
-
import
|
|
5
|
-
import
|
|
1
|
+
import { jsxs as o, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { X as E } from "../../Icons/index.js";
|
|
3
|
+
import { Space as x, Tooltip as L, Button as S } from "antd";
|
|
4
|
+
import l from "classnames";
|
|
5
|
+
import _, { useMemo as D } from "react";
|
|
6
6
|
import e from "./style.module.scss.js";
|
|
7
|
-
import { useFilterState as
|
|
8
|
-
import
|
|
9
|
-
const
|
|
10
|
-
function
|
|
7
|
+
import { useFilterState as j, FilterProvider as z } from "../useFilterState.js";
|
|
8
|
+
import C from "../../Tag/SemanticTag.js";
|
|
9
|
+
const G = 20;
|
|
10
|
+
function M(r, m) {
|
|
11
11
|
return r.length <= m ? { display: r, truncated: !1 } : { display: `${r.slice(0, m)}...`, truncated: !0 };
|
|
12
12
|
}
|
|
13
|
-
const
|
|
13
|
+
const U = ({
|
|
14
14
|
children: r,
|
|
15
15
|
list: m,
|
|
16
|
-
extra:
|
|
16
|
+
extra: a,
|
|
17
17
|
onClearAll: i,
|
|
18
|
-
label:
|
|
19
|
-
selectedTagMaxLength:
|
|
18
|
+
label: N = "筛选",
|
|
19
|
+
selectedTagMaxLength: b = G
|
|
20
20
|
}) => {
|
|
21
|
-
const { selectedItems:
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
21
|
+
const { selectedItems: n, register: s, unregister: d, clearAll: f, values: p, setFieldValue: u, clearFieldValue: h } = j(), g = D(
|
|
22
|
+
() => ({ register: s, unregister: d, values: p, setFieldValue: u, clearFieldValue: h }),
|
|
23
|
+
[s, d, p, u, h]
|
|
24
|
+
), y = _.useCallback(() => {
|
|
25
|
+
f(), i == null || i();
|
|
26
|
+
}, [f, i]);
|
|
27
|
+
return /* @__PURE__ */ o("div", { className: l("common-filter-root", e["common-filter-root"]), children: [
|
|
28
|
+
/* @__PURE__ */ o("div", { className: l("common-filter-container", e["common-filter-container"]), children: [
|
|
29
|
+
/* @__PURE__ */ t("span", { className: l("common-filter-label", e["common-filter-label"]), children: N }),
|
|
30
|
+
/* @__PURE__ */ t(z, { ctx: g, children: /* @__PURE__ */ o("div", { className: l("common-filter-content", e["common-filter-content"]), children: [
|
|
31
|
+
/* @__PURE__ */ o("div", { className: l("common-filter-items", e["common-filter-items"]), children: [
|
|
29
32
|
m,
|
|
30
33
|
r
|
|
31
34
|
] }),
|
|
32
|
-
|
|
35
|
+
a && /* @__PURE__ */ t("div", { className: l("common-filter-extra", e["common-filter-extra"]), children: a })
|
|
33
36
|
] }) })
|
|
34
37
|
] }),
|
|
35
|
-
|
|
36
|
-
/* @__PURE__ */ o(
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
n.length > 0 && /* @__PURE__ */ o("div", { className: l("common-filter-selected", e["common-filter-selected"]), children: [
|
|
39
|
+
/* @__PURE__ */ o(
|
|
40
|
+
"div",
|
|
41
|
+
{
|
|
42
|
+
className: l(
|
|
43
|
+
"common-filter-selected-main",
|
|
44
|
+
e["common-filter-selected-main"]
|
|
45
|
+
),
|
|
46
|
+
children: [
|
|
47
|
+
/* @__PURE__ */ t(
|
|
42
48
|
"span",
|
|
43
49
|
{
|
|
44
|
-
className:
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
]
|
|
50
|
+
className: l(
|
|
51
|
+
"common-filter-selected-title",
|
|
52
|
+
e["common-filter-selected-title"]
|
|
53
|
+
),
|
|
54
|
+
children: "您已选择"
|
|
50
55
|
}
|
|
51
56
|
),
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
T,
|
|
57
|
+
/* @__PURE__ */ t(
|
|
58
|
+
x,
|
|
55
59
|
{
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
+
size: [8, 8],
|
|
61
|
+
wrap: !0,
|
|
62
|
+
className: l(
|
|
63
|
+
"common-filter-selected-tags",
|
|
64
|
+
e["common-filter-selected-tags"]
|
|
60
65
|
),
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
66
|
+
children: n.map((c) => {
|
|
67
|
+
const { display: v, truncated: T } = M(c.valueLabel, b), F = T ? /* @__PURE__ */ t(L, { title: c.valueLabel, children: /* @__PURE__ */ t("span", { children: v }) }) : /* @__PURE__ */ t("span", { children: v });
|
|
68
|
+
return /* @__PURE__ */ t(C, { color: "primary", children: /* @__PURE__ */ o("span", { className: l("common-filter-tag", e["common-filter-tag"]), children: [
|
|
69
|
+
/* @__PURE__ */ o(
|
|
70
|
+
"span",
|
|
71
|
+
{
|
|
72
|
+
className: l(
|
|
73
|
+
"common-filter-tag-label",
|
|
74
|
+
e["common-filter-tag-label"]
|
|
75
|
+
),
|
|
76
|
+
style: { color: "var(--font-color)" },
|
|
77
|
+
children: [
|
|
78
|
+
c.label,
|
|
79
|
+
":"
|
|
80
|
+
]
|
|
81
|
+
}
|
|
82
|
+
),
|
|
83
|
+
F,
|
|
84
|
+
/* @__PURE__ */ t(
|
|
85
|
+
E,
|
|
86
|
+
{
|
|
87
|
+
className: l(
|
|
88
|
+
"common-filter-tag-close",
|
|
89
|
+
e["common-filter-tag-close"],
|
|
90
|
+
c.removable === !1 && e["common-filter-tag-close-disabled"]
|
|
91
|
+
),
|
|
92
|
+
onClick: (k) => {
|
|
93
|
+
k.preventDefault(), c.removable !== !1 && c.onRemove();
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
)
|
|
97
|
+
] }) }, c.key);
|
|
98
|
+
})
|
|
64
99
|
}
|
|
65
100
|
)
|
|
66
|
-
]
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/* @__PURE__ */
|
|
70
|
-
|
|
101
|
+
]
|
|
102
|
+
}
|
|
103
|
+
),
|
|
104
|
+
/* @__PURE__ */ t(
|
|
105
|
+
S,
|
|
71
106
|
{
|
|
72
107
|
type: "link",
|
|
73
108
|
size: "small",
|
|
74
|
-
onClick:
|
|
75
|
-
className:
|
|
109
|
+
onClick: y,
|
|
110
|
+
className: l("common-filter-clear-btn", e["common-filter-clear-btn"]),
|
|
76
111
|
children: "清空全部"
|
|
77
112
|
}
|
|
78
113
|
)
|
|
@@ -80,6 +115,6 @@ const I = ({
|
|
|
80
115
|
] });
|
|
81
116
|
};
|
|
82
117
|
export {
|
|
83
|
-
|
|
118
|
+
U as default
|
|
84
119
|
};
|
|
85
120
|
//# sourceMappingURL=index.js.map
|
|
@@ -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 }
|
|
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, values, setFieldValue, clearFieldValue } =\n useFilterState();\n\n const filterCtx = useMemo(\n () => ({ register, unregister, values, setFieldValue, clearFieldValue }),\n [register, unregister, values, setFieldValue, clearFieldValue],\n );\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'])}>\n {label}\n </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'])}>\n {extra}\n </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\n className={classNames(\n 'common-filter-selected-main',\n styles['common-filter-selected-main'],\n )}\n >\n <span\n className={classNames(\n 'common-filter-selected-title',\n styles['common-filter-selected-title'],\n )}\n >\n 您已选择\n </span>\n <Space\n size={[8, 8]}\n wrap\n className={classNames(\n 'common-filter-selected-tags',\n styles['common-filter-selected-tags'],\n )}\n >\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(\n 'common-filter-tag-label',\n styles['common-filter-tag-label'],\n )}\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","values","setFieldValue","clearFieldValue","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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"}
|