@baishuyun/ui-business 6.0.7 → 6.1.0
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/DeptsMemberSelector/Department-lQJcetBA.js +267 -0
- package/dist/DeptsMemberSelector/DeptsMemberSelector-DmwD1Ls_.js +1336 -0
- package/dist/DeptsMemberSelector/DeptsUser-wWfkuBDp.js +974 -0
- package/dist/DeptsMemberSelector/Member-K4kgwY7b.js +603 -0
- package/dist/DeptsMemberSelector/MemberPanel-Cm1Hv-GV.js +698 -0
- package/dist/DeptsMemberSelector/OrganizationPanel-2QDNfFtJ.js +401 -0
- package/dist/DeptsMemberSelector/RelationShipList-DkF9XivU.js +75 -0
- package/dist/DeptsMemberSelector/index.js +12 -14
- package/dist/DeptsMemberSelector/services/contact/selector.service-BUQcY5DZ.js +380 -0
- package/dist/DeptsMemberSelector/subcomponents/Entity/Department/index.js +4 -5
- package/dist/DeptsMemberSelector/subcomponents/Entity/DeptsUser/index.js +6 -8
- package/dist/DeptsMemberSelector/subcomponents/Entity/Member/index.js +4 -5
- package/dist/DeptsMemberSelector/subcomponents/Panels/MemberRelationShipPanel/RelationShipList/index.js +2 -2
- package/dist/DeptsMemberSelector/useDeptsMemberSelector-CHK0U3R4.js +155 -0
- package/dist/DeptsMemberSelector/useOutsiderGroupPanelState-d2EiLVaV.js +648 -0
- package/dist/DeptsMemberSelector/utils/index.js +2 -87
- package/dist/DeptsMemberSelector/utils-BVfGpRu5.js +103 -0
- package/dist/components/DeptsMemberSelector/context/DeptsMemberContext.d.ts +17 -1
- package/dist/components/DeptsMemberSelector/hooks/useDeptsMemberSelector.d.ts +5 -0
- package/dist/components/DeptsMemberSelector/hooks/useOutsiderGroupPanelState.d.ts +19 -0
- package/dist/components/DeptsMemberSelector/hooks/useSlidingTabIndicator.d.ts +29 -0
- package/dist/components/DeptsMemberSelector/index.d.ts +2 -0
- package/dist/components/DeptsMemberSelector/subcomponents/Entity/Member/MemberSearch/useMemberSearchData.d.ts +2 -2
- package/dist/components/DeptsMemberSelector/subcomponents/Entity/Member/MemerList/MemberListCheckboxRow.d.ts +17 -0
- package/dist/components/DeptsMemberSelector/subcomponents/Panels/DeptUsersExtraContactPanel/useDeptUsersExtraContactPanelData.d.ts +11 -5
- package/dist/components/DeptsMemberSelector/subcomponents/Panels/DeptUsersPositionPanel/useDeptUsersPositionPanelData.d.ts +5 -1
- package/dist/components/DeptsMemberSelector/subcomponents/Panels/DeptUsersRolePanel/useDeptUsersRolePanelData.d.ts +2 -1
- package/dist/components/DeptsMemberSelector/subcomponents/Panels/ExtraConcactPanel/useExtraContactPanelData.d.ts +8 -10
- package/dist/components/DeptsMemberSelector/subcomponents/Panels/ExtraContactGroupPanel/ExtraContactGroupPanel.d.ts +2 -2
- package/dist/components/DeptsMemberSelector/subcomponents/Panels/FlowCreatorPanel/FlowCreatorPanel.d.ts +2 -0
- package/dist/components/DeptsMemberSelector/subcomponents/Panels/MemberPanel/ExternalMember/ExternalMember.d.ts +2 -0
- package/dist/components/DeptsMemberSelector/subcomponents/Panels/MemberPanel/asideFallback.d.ts +26 -0
- package/dist/components/DeptsMemberSelector/subcomponents/Panels/MemberPanel/resolveMemberPanelShowSidebar.d.ts +13 -0
- package/dist/components/DeptsMemberSelector/subcomponents/Panels/MemberPanel/useMemberPanelData.d.ts +6 -1
- package/dist/components/DeptsMemberSelector/subcomponents/Panels/MemberRelationShipPanel/RelationShipList/index.d.ts +4 -12
- package/dist/components/DeptsMemberSelector/subcomponents/Panels/MemberRelationShipPanel/types.d.ts +1 -13
- package/dist/components/DeptsMemberSelector/subcomponents/Panels/MemberRelationShipPanel/useMemberRelationShipPanelData.d.ts +7 -36
- package/dist/components/DeptsMemberSelector/subcomponents/Panels/OrganizationPanel/ExternalOrganization/ExternalOrganization.d.ts +2 -1
- package/dist/components/DeptsMemberSelector/subcomponents/Panels/OrganizationPanel/InternalOrganization/InternalOrganization.d.ts +2 -1
- package/dist/components/DeptsMemberSelector/subcomponents/Panels/OrganizationPanel/utils/treeExpandedKeys.d.ts +23 -0
- package/dist/components/DeptsMemberSelector/subcomponents/Panels/OrganizationPanel/utils/useOrganizationTreeExpandedKeys.d.ts +9 -0
- package/dist/components/DeptsMemberSelector/subcomponents/Panels/PositionPanel/usePositionPanelData.d.ts +5 -0
- package/dist/components/DeptsMemberSelector/subcomponents/Panels/RolePanel/useRolePanelData.d.ts +1 -1
- package/dist/components/DeptsMemberSelector/subcomponents/SelectedItemIcon/SelectedItemIcon.d.ts +8 -0
- package/dist/components/DeptsMemberSelector/subcomponents/SelectionTabs/SelectionTabList/SelectionTabList.d.ts +4 -0
- package/dist/components/DeptsMemberSelector/subcomponents/SelectionTabs/useSelectorType.d.ts +1 -0
- package/dist/components/DeptsMemberSelector/subcomponents/SlidingTabIndicatorBar/SlidingTabIndicatorBar.d.ts +10 -0
- package/dist/components/DeptsMemberSelector/subcomponents/TagIcon/TagIcon.d.ts +9 -3
- package/dist/components/DeptsMemberSelector/types/selector.d.ts +90 -3
- package/dist/components/DeptsMemberSelector/utils/constants.d.ts +27 -0
- package/dist/components/DeptsMemberSelector/utils/currentUserDepts.d.ts +21 -0
- package/dist/components/DeptsMemberSelector/utils/departmentSearchVisibility.d.ts +9 -0
- package/dist/components/DeptsMemberSelector/utils/deptUsersRelationSearchGroup.d.ts +37 -0
- package/dist/components/DeptsMemberSelector/utils/deptUsersSearchVisibility.d.ts +30 -0
- package/dist/components/DeptsMemberSelector/utils/entityItemType.d.ts +32 -0
- package/dist/components/DeptsMemberSelector/utils/flowCreator.d.ts +8 -0
- package/dist/components/DeptsMemberSelector/utils/index.d.ts +10 -2
- package/dist/components/DeptsMemberSelector/utils/jobTitleDepartmentLimit.d.ts +3 -0
- package/dist/components/DeptsMemberSelector/utils/memberBadgeText.d.ts +20 -0
- package/dist/components/DeptsMemberSelector/utils/memberStatus.d.ts +4 -0
- package/dist/components/DeptsMemberSelector/utils/memberUsersDepartmentLimit.d.ts +7 -0
- package/dist/components/DeptsMemberSelector/utils/normalizeIdList.d.ts +2 -0
- package/dist/components/DeptsMemberSelector/utils/outsiderGroupBuckets.d.ts +18 -0
- package/dist/components/DeptsMemberSelector/utils/requestContext.d.ts +4 -2
- package/dist/components/DeptsMemberSelector/utils/resolveExternalMemberUserType.d.ts +6 -0
- package/dist/components/DeptsMemberSelector/utils/resolveOutsiderFlatMemberMode.d.ts +4 -0
- package/dist/components/DeptsMemberSelector/utils/resolveOutsiderGroupTabs.d.ts +21 -0
- package/dist/components/DeptsMemberSelector/utils/resolveSelectedItemVisual.d.ts +10 -0
- package/dist/components/DeptsMemberSelector/utils/widgetRequestLimits.d.ts +1 -0
- package/dist/index.css +1 -1
- package/dist/index.js +50 -35
- package/dist/lang/en-US.json.d.ts +5 -3
- package/dist/lang/zh-CN.json.d.ts +5 -3
- package/dist/lang/zh-TW.json.d.ts +5 -3
- package/dist/services/contact/selector.service.d.ts +34 -12
- package/dist/vendors/lodash-es.js +689 -175
- package/dist/vendors/simplebar-react.js +2 -2
- package/package.json +3 -3
- package/dist/DeptsMemberSelector/Department-6R-BZNZ4.js +0 -252
- package/dist/DeptsMemberSelector/DeptsMemberSelector-CC32KXc8.js +0 -1064
- package/dist/DeptsMemberSelector/DeptsUser-9Lf7ytTr.js +0 -981
- package/dist/DeptsMemberSelector/Member-BY8mtQb0.js +0 -517
- package/dist/DeptsMemberSelector/MemberPanel-Dw1b2J3V.js +0 -510
- package/dist/DeptsMemberSelector/OrganizationPanel-Di4dqUlZ.js +0 -366
- package/dist/DeptsMemberSelector/RelationShipDepts-__eb4oDP.js +0 -55
- package/dist/DeptsMemberSelector/RelationShipList-CS5uhLos.js +0 -52
- package/dist/DeptsMemberSelector/TabGroup-Dht9ylk4.js +0 -114
- package/dist/DeptsMemberSelector/services/contact/selector.service-BFwBe9fo.js +0 -346
- package/dist/DeptsMemberSelector/subcomponents/Panels/MemberRelationShipPanel/RelationShipDepts/index.d.ts +0 -4
- package/dist/DeptsMemberSelector/subcomponents/Panels/MemberRelationShipPanel/RelationShipDepts/index.js +0 -6
- package/dist/DeptsMemberSelector/useDeptsMemberSelector-B2Un1d5r.js +0 -123
- package/dist/components/DeptsMemberSelector/subcomponents/Panels/MemberRelationShipPanel/RelationShipDepts/index.d.ts +0 -7
- package/dist/components/DeptsMemberSelector/subcomponents/Panels/MemberRelationShipPanel/RelationShipMember/RelationShipMember.d.ts +0 -9
- package/dist/vendors/useLocale.js +0 -209
|
@@ -1,87 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
var t = [
|
|
4
|
-
"#f5c547",
|
|
5
|
-
"#528cff",
|
|
6
|
-
"#50b0f4",
|
|
7
|
-
"#61db8c",
|
|
8
|
-
"#ff8383",
|
|
9
|
-
"#444"
|
|
10
|
-
], n = (n) => (e(n) || (n = "?"), t[n.charCodeAt(0) % t.length]), r = (t = {}) => {
|
|
11
|
-
let n = t.nickname || t.name || t.dock_corpname || t._id;
|
|
12
|
-
return e(n) && n.trim() ? n : "?";
|
|
13
|
-
}, i = (e, t) => {
|
|
14
|
-
let { value: n, children: r, parentId: i } = {
|
|
15
|
-
title: "title",
|
|
16
|
-
value: "value",
|
|
17
|
-
children: "children",
|
|
18
|
-
parentId: "parentId",
|
|
19
|
-
...t
|
|
20
|
-
};
|
|
21
|
-
if (!Array.isArray(e)) return console.error("输入的数据不是一个数组。"), [];
|
|
22
|
-
let a = /* @__PURE__ */ new Map();
|
|
23
|
-
e.forEach((e) => {
|
|
24
|
-
let t = e[n], i = {
|
|
25
|
-
...e,
|
|
26
|
-
[r]: []
|
|
27
|
-
};
|
|
28
|
-
a.set(t, i);
|
|
29
|
-
});
|
|
30
|
-
let o = [];
|
|
31
|
-
return a.forEach((e) => {
|
|
32
|
-
let t = e[i], n = a.get(t);
|
|
33
|
-
n ? n[r].push(e) : o.push(e);
|
|
34
|
-
}), o;
|
|
35
|
-
}, a = (e, t, n) => {
|
|
36
|
-
let { value: r, children: i } = {
|
|
37
|
-
value: "value",
|
|
38
|
-
children: "children",
|
|
39
|
-
...n
|
|
40
|
-
};
|
|
41
|
-
if (!Array.isArray(t)) return null;
|
|
42
|
-
let a = [...t];
|
|
43
|
-
for (; a.length > 0;) {
|
|
44
|
-
let t = a.pop();
|
|
45
|
-
if (!t) continue;
|
|
46
|
-
if (t[r] === e) return t;
|
|
47
|
-
let n = t[i];
|
|
48
|
-
if (n && n.length > 0) for (let e = n.length - 1; e >= 0; e--) a.push(n[e]);
|
|
49
|
-
}
|
|
50
|
-
return null;
|
|
51
|
-
};
|
|
52
|
-
function o(e) {
|
|
53
|
-
let t = {}, n = [], r = (e) => e == null ? "" : String(e), i = (e) => {
|
|
54
|
-
if (e === "" || e == null) return Infinity;
|
|
55
|
-
let t = Number(e);
|
|
56
|
-
return Number.isFinite(t) ? t : Infinity;
|
|
57
|
-
}, a = (e) => e.sort((e, t) => {
|
|
58
|
-
let n = i(e.order), r = i(t.order);
|
|
59
|
-
return n === r ? 0 : n - r;
|
|
60
|
-
});
|
|
61
|
-
return e.forEach((e) => {
|
|
62
|
-
let n = r(e.departmentId);
|
|
63
|
-
n && (t[n] = {
|
|
64
|
-
...e,
|
|
65
|
-
title: e.name,
|
|
66
|
-
key: e.departmentId,
|
|
67
|
-
children: []
|
|
68
|
-
});
|
|
69
|
-
}), Object.values(t).forEach((e) => {
|
|
70
|
-
let i = r(e.departmentId), a = r(e.parentId);
|
|
71
|
-
if (!a || a === "0") {
|
|
72
|
-
n.push(e);
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
if (a === i) return;
|
|
76
|
-
let o = t[a];
|
|
77
|
-
if (o) {
|
|
78
|
-
o.children.push(e);
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
n.push(e);
|
|
82
|
-
}), Object.values(t).forEach((e) => {
|
|
83
|
-
a(e.children);
|
|
84
|
-
}), a(n), n;
|
|
85
|
-
}
|
|
86
|
-
//#endregion
|
|
87
|
-
export { t as ENTITY_COLORS, o as buildDeptTree, i as buildTree, a as findNodeInTree, n as getColorByName, r as getMemberDisplayName };
|
|
1
|
+
import { a as e, c as t, i as n, l as r, n as i, o as a, r as o, s, t as c } from "../utils-BVfGpRu5.js";
|
|
2
|
+
export { c as ENTITY_COLORS, i as buildDeptTree, o as buildTree, n as findNodeInTree, e as getAvatarText, a as getColorByName, t as getMemberBadgeLabels, s as getMemberDisplayName, r as resolveMemberBadgeText };
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { o as e } from "../vendors/lodash-es.js";
|
|
2
|
+
//#region src/components/DeptsMemberSelector/utils/memberBadgeText.ts
|
|
3
|
+
var t = (e, t) => `(${t.external}:${e})`, n = (e) => ({
|
|
4
|
+
external: e("department.external"),
|
|
5
|
+
member: e("member.title")
|
|
6
|
+
}), r = (e, n, r) => {
|
|
7
|
+
if (e.type === "dockrole") return e.name ? t(e.name, n) : void 0;
|
|
8
|
+
if (e.type === "role") return e.name ? `(${n.member}:${e.name})` : void 0;
|
|
9
|
+
if (e.user_type === "dock_user") return e.dock_corpname ? t(e.dock_corpname, n) : void 0;
|
|
10
|
+
if (e.deptnames) return e.deptnames;
|
|
11
|
+
if (r?.allowDockCorpFallback && e.dock_corpname) return t(e.dock_corpname, n);
|
|
12
|
+
}, i = [
|
|
13
|
+
"#f5c547",
|
|
14
|
+
"#528cff",
|
|
15
|
+
"#50b0f4",
|
|
16
|
+
"#61db8c",
|
|
17
|
+
"#ff8383",
|
|
18
|
+
"#444"
|
|
19
|
+
], a = (e) => {
|
|
20
|
+
let t = e.charCodeAt(0);
|
|
21
|
+
return t >= 19968 && t <= 40959;
|
|
22
|
+
}, o = (t) => {
|
|
23
|
+
if (!e(t) || !t.trim()) return "?";
|
|
24
|
+
let n = t.trim();
|
|
25
|
+
return [...n].every(a) ? n.slice(-1) : n.charAt(0);
|
|
26
|
+
}, s = (e) => o(e), c = (t) => i[o(e(t) ? t : void 0).charCodeAt(0) % i.length], l = (t = {}) => {
|
|
27
|
+
let n = t.nickname || t.name || t.dock_corpname || t._id;
|
|
28
|
+
return e(n) && n.trim() ? n : "?";
|
|
29
|
+
}, u = (e, t) => {
|
|
30
|
+
let { value: n, children: r, parentId: i } = {
|
|
31
|
+
title: "title",
|
|
32
|
+
value: "value",
|
|
33
|
+
children: "children",
|
|
34
|
+
parentId: "parentId",
|
|
35
|
+
...t
|
|
36
|
+
};
|
|
37
|
+
if (!Array.isArray(e)) return console.error("输入的数据不是一个数组。"), [];
|
|
38
|
+
let a = /* @__PURE__ */ new Map();
|
|
39
|
+
e.forEach((e) => {
|
|
40
|
+
let t = e[n], i = {
|
|
41
|
+
...e,
|
|
42
|
+
[r]: []
|
|
43
|
+
};
|
|
44
|
+
a.set(t, i);
|
|
45
|
+
});
|
|
46
|
+
let o = [];
|
|
47
|
+
return a.forEach((e) => {
|
|
48
|
+
let t = e[i], n = a.get(t);
|
|
49
|
+
n ? n[r].push(e) : o.push(e);
|
|
50
|
+
}), o;
|
|
51
|
+
}, d = (e, t, n) => {
|
|
52
|
+
let { value: r, children: i } = {
|
|
53
|
+
value: "value",
|
|
54
|
+
children: "children",
|
|
55
|
+
...n
|
|
56
|
+
};
|
|
57
|
+
if (!Array.isArray(t)) return null;
|
|
58
|
+
let a = [...t];
|
|
59
|
+
for (; a.length > 0;) {
|
|
60
|
+
let t = a.pop();
|
|
61
|
+
if (!t) continue;
|
|
62
|
+
if (t[r] === e) return t;
|
|
63
|
+
let n = t[i];
|
|
64
|
+
if (n && n.length > 0) for (let e = n.length - 1; e >= 0; e--) a.push(n[e]);
|
|
65
|
+
}
|
|
66
|
+
return null;
|
|
67
|
+
};
|
|
68
|
+
function f(e) {
|
|
69
|
+
let t = {}, n = [], r = (e) => e == null ? "" : String(e), i = (e) => {
|
|
70
|
+
if (e === "" || e == null) return Infinity;
|
|
71
|
+
let t = Number(e);
|
|
72
|
+
return Number.isFinite(t) ? t : Infinity;
|
|
73
|
+
}, a = (e) => e.sort((e, t) => {
|
|
74
|
+
let n = i(e.order), r = i(t.order);
|
|
75
|
+
return n === r ? 0 : n - r;
|
|
76
|
+
});
|
|
77
|
+
return e.forEach((e) => {
|
|
78
|
+
let n = r(e.departmentId);
|
|
79
|
+
n && (t[n] = {
|
|
80
|
+
...e,
|
|
81
|
+
title: e.name,
|
|
82
|
+
key: e.departmentId,
|
|
83
|
+
children: []
|
|
84
|
+
});
|
|
85
|
+
}), Object.values(t).forEach((e) => {
|
|
86
|
+
let i = r(e.departmentId), a = r(e.parentId);
|
|
87
|
+
if (!a || a === "0") {
|
|
88
|
+
n.push(e);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
if (a === i) return;
|
|
92
|
+
let o = t[a];
|
|
93
|
+
if (o) {
|
|
94
|
+
o.children.push(e);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
n.push(e);
|
|
98
|
+
}), Object.values(t).forEach((e) => {
|
|
99
|
+
a(e.children);
|
|
100
|
+
}), a(n), n;
|
|
101
|
+
}
|
|
102
|
+
//#endregion
|
|
103
|
+
export { s as a, n as c, d as i, r as l, f as n, c as o, u as r, l as s, i as t };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SetStateAction } from 'react';
|
|
2
2
|
import { Action } from '../types/context';
|
|
3
|
-
import { CurrentContext, DepartmentSelectableRange, DepartmentPanelRequestGuard, MemberPanelRequestGuard, MemberPanelVisibility, RequestContext, SelectorLimits, SelectorType } from '../types/selector';
|
|
3
|
+
import { CurrentContext, DepartmentSelectableRange, DepartmentPanelRequestGuard, DeptUsersPanelConfig, FlowCreator, MemberPanelRequestGuard, MemberPanelVisibility, RequestContext, SelectorLimits, SelectorType } from '../types/selector';
|
|
4
4
|
declare const DeptsMemberContext: import('react').Context<{
|
|
5
5
|
type: SelectorType;
|
|
6
6
|
/**
|
|
@@ -12,6 +12,8 @@ declare const DeptsMemberContext: import('react').Context<{
|
|
|
12
12
|
dispatch: (action: Action) => void;
|
|
13
13
|
containerHeight: number;
|
|
14
14
|
currentUsers?: Record<string, unknown>[];
|
|
15
|
+
/** transfer 模式下「流程发起人」;非 transfer 或与 currentUsers 重合时为 undefined */
|
|
16
|
+
flowCreator?: FlowCreator;
|
|
15
17
|
requestContext: RequestContext;
|
|
16
18
|
limits: SelectorLimits;
|
|
17
19
|
departmentSelectableRange?: DepartmentSelectableRange;
|
|
@@ -23,5 +25,19 @@ declare const DeptsMemberContext: import('react').Context<{
|
|
|
23
25
|
publicPermissionEnable: boolean;
|
|
24
26
|
managerPermissionEnable: boolean;
|
|
25
27
|
};
|
|
28
|
+
deptUsersPanelConfig?: DeptUsersPanelConfig;
|
|
29
|
+
/**
|
|
30
|
+
* 是否查询对接(dock)数据,仅 deptusers 生效。为 false 时隐藏内部/外部切换、只查内部。
|
|
31
|
+
*/
|
|
32
|
+
hasDock?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* 是否只查询对接数据、隐藏内部,仅 deptusers 生效。为 true 时隐藏内部、只查外部。
|
|
35
|
+
*/
|
|
36
|
+
hasDeptDock?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* deptusers 单选模式开关(type === 'deptusers' 且 multiple:false 时为 true)。
|
|
39
|
+
* 为 true 时整个弹窗统一走单选(radio + insertOnly),由主组件派生注入。
|
|
40
|
+
*/
|
|
41
|
+
isSingleSelect?: boolean;
|
|
26
42
|
}>;
|
|
27
43
|
export default DeptsMemberContext;
|
|
@@ -7,6 +7,7 @@ export declare const useDeptsMemberSelector: () => {
|
|
|
7
7
|
dispatch: (action: import('../types/context').Action) => void;
|
|
8
8
|
containerHeight: number;
|
|
9
9
|
currentUsers?: Record<string, unknown>[];
|
|
10
|
+
flowCreator?: import('../types/selector').FlowCreator;
|
|
10
11
|
requestContext: import('..').RequestContext;
|
|
11
12
|
limits: import('..').SelectorLimits;
|
|
12
13
|
currentContext: import('..').CurrentContext;
|
|
@@ -16,4 +17,8 @@ export declare const useDeptsMemberSelector: () => {
|
|
|
16
17
|
publicPermissionEnable: boolean;
|
|
17
18
|
managerPermissionEnable: boolean;
|
|
18
19
|
};
|
|
20
|
+
deptUsersPanelConfig?: import('../types/selector').DeptUsersPanelConfig;
|
|
21
|
+
hasDock?: boolean;
|
|
22
|
+
hasDeptDock?: boolean;
|
|
23
|
+
isSingleSelect?: boolean;
|
|
19
24
|
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { OutsiderGroup, OutsiderGroupTabKey } from '../utils/outsiderGroupBuckets';
|
|
2
|
+
declare const useOutsiderGroupPanelState: <T extends OutsiderGroup>({ groups, labels, initialActiveKey, ordered, }: {
|
|
3
|
+
groups?: T[];
|
|
4
|
+
labels: {
|
|
5
|
+
default: string;
|
|
6
|
+
custom: string;
|
|
7
|
+
};
|
|
8
|
+
initialActiveKey?: OutsiderGroupTabKey;
|
|
9
|
+
ordered?: boolean;
|
|
10
|
+
}) => {
|
|
11
|
+
setActiveKey: import('react').Dispatch<import('react').SetStateAction<OutsiderGroupTabKey>>;
|
|
12
|
+
defaultGroups: T[];
|
|
13
|
+
customGroups: T[];
|
|
14
|
+
tabs: import('../utils/resolveOutsiderGroupTabs').OutsiderGroupTab[];
|
|
15
|
+
isPanelEmpty: boolean;
|
|
16
|
+
activeKey: OutsiderGroupTabKey;
|
|
17
|
+
currentGroups: T[];
|
|
18
|
+
};
|
|
19
|
+
export { useOutsiderGroupPanelState };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export type SlidingTabIndicatorStyle = {
|
|
2
|
+
width: number;
|
|
3
|
+
left: number;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* 滑动 tab 指示条 hook 的返回契约。
|
|
7
|
+
*
|
|
8
|
+
* `enableTransition` 语义(消费者必须用此字段控制 CSS transition,例如 `--animated` 修饰类):
|
|
9
|
+
* - 挂载/重挂载后初始值为 `false`,首帧定位指示条时不播放动画
|
|
10
|
+
* - 首次测量写入几何后的下一帧变为 `true`,此后 tab 切换才启用 transition
|
|
11
|
+
*/
|
|
12
|
+
export type UseSlidingTabIndicatorResult = {
|
|
13
|
+
containerRef: React.RefObject<HTMLDivElement>;
|
|
14
|
+
indicatorStyle: SlidingTabIndicatorStyle;
|
|
15
|
+
enableTransition: boolean;
|
|
16
|
+
/** 首帧测量稳定前为 false,避免指示条在错误位置闪现 */
|
|
17
|
+
indicatorVisible: boolean;
|
|
18
|
+
};
|
|
19
|
+
export type UseSlidingTabIndicatorOptions = {
|
|
20
|
+
activeKey: string;
|
|
21
|
+
/** `${key}:${label}|...`,用于 tabs 结构或文案变化时重新绑定观察器 */
|
|
22
|
+
tabsKey: string;
|
|
23
|
+
/** 测量节点上的 data 属性,默认 `data-tab-key` */
|
|
24
|
+
measureAttribute?: string;
|
|
25
|
+
/** 为 true 时除 container 外还监听所有 `[measureAttribute]` 节点(如 TabGroup label) */
|
|
26
|
+
observeMeasureTargets?: boolean;
|
|
27
|
+
};
|
|
28
|
+
export declare const buildSlidingTabsKey: <T>(tabs: readonly T[], getKey: (item: T) => string, getLabel: (item: T) => string) => string;
|
|
29
|
+
export declare const useSlidingTabIndicator: (options: UseSlidingTabIndicatorOptions) => UseSlidingTabIndicatorResult;
|
|
@@ -2,4 +2,6 @@ import { default as DeptsMemberSelector } from './DeptsMemberSelector';
|
|
|
2
2
|
export default DeptsMemberSelector;
|
|
3
3
|
export type * from './DeptsMemberSelector.type';
|
|
4
4
|
export { Entity } from './utils/constants';
|
|
5
|
+
export { IconType } from './utils/constants';
|
|
6
|
+
export { ENTITY_ITEM_TYPE } from './utils/entityItemType';
|
|
5
7
|
export { getColorByName } from './utils/index';
|
|
@@ -5,10 +5,10 @@ declare const useMemberSearchData: ({ wd }: {
|
|
|
5
5
|
treeData: {
|
|
6
6
|
title: string;
|
|
7
7
|
value: string;
|
|
8
|
-
children: any;
|
|
8
|
+
children: any[];
|
|
9
9
|
}[];
|
|
10
10
|
defaultExpandedKeys: string[];
|
|
11
|
-
|
|
11
|
+
selectedKeys: any[];
|
|
12
12
|
isLoading: boolean;
|
|
13
13
|
checkType: "radio" | "checkbox";
|
|
14
14
|
handleSelectMember: (id: any) => void;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type MemberListCheckboxRowData = {
|
|
2
|
+
item: {
|
|
3
|
+
_id: string | number;
|
|
4
|
+
avatarurl?: string;
|
|
5
|
+
[key: string]: unknown;
|
|
6
|
+
};
|
|
7
|
+
displayName: string;
|
|
8
|
+
avatarColor: string;
|
|
9
|
+
badgeNode?: React.ReactNode;
|
|
10
|
+
};
|
|
11
|
+
type MemberListCheckboxRowProps = {
|
|
12
|
+
row: MemberListCheckboxRowData;
|
|
13
|
+
checked: boolean;
|
|
14
|
+
onToggle: (item: MemberListCheckboxRowData['item'], checked: boolean) => void;
|
|
15
|
+
};
|
|
16
|
+
declare const MemberListCheckboxRow: import('react').NamedExoticComponent<MemberListCheckboxRowProps>;
|
|
17
|
+
export default MemberListCheckboxRow;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { OutsiderGroupTabKey } from '../../../utils/outsiderGroupBuckets';
|
|
1
2
|
type EntryKey = 'group' | 'member';
|
|
2
|
-
type GroupTypeKey = 'default' | 'custom';
|
|
3
3
|
type MenuItem<T extends string> = {
|
|
4
4
|
key: T;
|
|
5
5
|
label: string;
|
|
6
|
+
visible?: boolean;
|
|
6
7
|
};
|
|
7
8
|
type DeptUsersOutsiderGroup = {
|
|
8
9
|
_id: string;
|
|
@@ -22,19 +23,24 @@ type DeptUsersOutsiderMember = {
|
|
|
22
23
|
declare const useDeptUsersExtraContactPanelData: () => {
|
|
23
24
|
containerHeight: number;
|
|
24
25
|
menuItems: MenuItem<EntryKey>[];
|
|
25
|
-
groupTypeItems:
|
|
26
|
+
groupTypeItems: import('../../../utils/resolveOutsiderGroupTabs').OutsiderGroupTab[];
|
|
26
27
|
activeEntry: EntryKey;
|
|
27
|
-
|
|
28
|
+
activeKey: OutsiderGroupTabKey;
|
|
28
29
|
setActiveEntry: import('react').Dispatch<import('react').SetStateAction<EntryKey>>;
|
|
29
|
-
|
|
30
|
+
setActiveKey: import('react').Dispatch<import('react').SetStateAction<OutsiderGroupTabKey>>;
|
|
30
31
|
groupId: string | undefined;
|
|
31
32
|
setGroupId: import('react').Dispatch<import('react').SetStateAction<string | undefined>>;
|
|
32
33
|
currentGroups: DeptUsersOutsiderGroup[];
|
|
33
34
|
memberList: DeptUsersOutsiderMember[];
|
|
34
35
|
selectedIdSet: Set<any>;
|
|
36
|
+
selectedId: any;
|
|
37
|
+
isSingleSelect: boolean | undefined;
|
|
35
38
|
groupListLoading: boolean;
|
|
36
39
|
memberLoading: boolean;
|
|
40
|
+
outsiderGroupEnable: boolean;
|
|
41
|
+
outsiderMemberEnable: boolean;
|
|
42
|
+
isPanelEmpty: boolean;
|
|
37
43
|
handleGroupToggle: (group: DeptUsersOutsiderGroup, checked: boolean) => void;
|
|
38
44
|
};
|
|
39
45
|
export { useDeptUsersExtraContactPanelData };
|
|
40
|
-
export type { DeptUsersOutsiderGroup, DeptUsersOutsiderMember, EntryKey,
|
|
46
|
+
export type { DeptUsersOutsiderGroup, DeptUsersOutsiderMember, EntryKey, OutsiderGroupTabKey };
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ENTITY_ITEM_TYPE } from '../../../utils/entityItemType';
|
|
1
2
|
type DeptUsersPositionMode = 'current' | 'currentSub';
|
|
2
3
|
type PositionSourceItem = string | {
|
|
3
4
|
_id?: string;
|
|
@@ -11,7 +12,8 @@ type DeptUsersPositionItem = {
|
|
|
11
12
|
id: string;
|
|
12
13
|
name: string;
|
|
13
14
|
positionName: string;
|
|
14
|
-
type:
|
|
15
|
+
/** 已选区图标渲染标识(canonical type: position) */
|
|
16
|
+
type: typeof ENTITY_ITEM_TYPE.POSITION;
|
|
15
17
|
jobTitle: string;
|
|
16
18
|
rawId?: string;
|
|
17
19
|
deptId: string;
|
|
@@ -42,6 +44,8 @@ declare const useDeptUsersPositionPanelData: () => {
|
|
|
42
44
|
}[];
|
|
43
45
|
positionList: DeptUsersPositionItem[];
|
|
44
46
|
selectedIds: any[];
|
|
47
|
+
selectedId: any;
|
|
48
|
+
isSingleSelect: boolean | undefined;
|
|
45
49
|
loadingDepartments: boolean;
|
|
46
50
|
loadingPositions: boolean;
|
|
47
51
|
handleSelectDepartment: (deptId: string | number, node?: any) => void;
|
|
@@ -29,12 +29,13 @@ declare const useDeptUsersRolePanelData: () => {
|
|
|
29
29
|
externalRoleList: DeptUsersRoleOptionItem[];
|
|
30
30
|
selectedRoleId: string | undefined;
|
|
31
31
|
selectedIds: any[];
|
|
32
|
+
selectedId: any;
|
|
32
33
|
currentOptions: DeptUsersRoleOptionItem[];
|
|
33
34
|
loading: boolean;
|
|
35
|
+
isSingleSelect: boolean | undefined;
|
|
34
36
|
handleSelectInternalRole: (roleId: string | number) => void;
|
|
35
37
|
handleRoleToggle: (item: DeptUsersRoleSelectionItem, checked: boolean) => void;
|
|
36
38
|
isRoleGroupNode: (role?: RoleSourceItem | null) => boolean;
|
|
37
|
-
defaultExpandedKeys: never[];
|
|
38
39
|
};
|
|
39
40
|
export { useDeptUsersRolePanelData };
|
|
40
41
|
export type { DeptUsersRoleSelectionItem, DeptUsersRoleOptionItem, RoleSourceItem };
|
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
type MenuItem = {
|
|
2
|
-
key: string;
|
|
3
|
-
label: string;
|
|
4
|
-
visible: boolean;
|
|
5
|
-
};
|
|
6
1
|
declare const useExtraContactPanelData: () => {
|
|
7
2
|
containerHeight: number;
|
|
8
|
-
menuItems:
|
|
9
|
-
activeKey:
|
|
10
|
-
setActiveKey: (
|
|
3
|
+
menuItems: import('../../../utils/resolveOutsiderGroupTabs').OutsiderGroupTab[];
|
|
4
|
+
activeKey: import('../DeptUsersExtraContactPanel/useDeptUsersExtraContactPanelData').OutsiderGroupTabKey;
|
|
5
|
+
setActiveKey: import('react').Dispatch<import('react').SetStateAction<import('../DeptUsersExtraContactPanel/useDeptUsersExtraContactPanelData').OutsiderGroupTabKey>>;
|
|
11
6
|
groupId: string | undefined;
|
|
12
7
|
setGroupId: import('react').Dispatch<import('react').SetStateAction<string | undefined>>;
|
|
13
|
-
groupList: any;
|
|
14
|
-
memberList:
|
|
8
|
+
groupList: any[];
|
|
9
|
+
memberList: Record<string, unknown>[];
|
|
15
10
|
groupListLoading: boolean;
|
|
16
11
|
memberLoading: boolean;
|
|
12
|
+
defaultGroupName: string | undefined;
|
|
13
|
+
isPanelEmpty: boolean;
|
|
14
|
+
showGroupSidebar: boolean;
|
|
17
15
|
};
|
|
18
16
|
export { useExtraContactPanelData };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const
|
|
2
|
-
export default
|
|
1
|
+
declare const ExtraContactGroupPanel: React.FC;
|
|
2
|
+
export default ExtraContactGroupPanel;
|
package/dist/components/DeptsMemberSelector/subcomponents/Panels/MemberPanel/asideFallback.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export type DepartmentsSnapshot = {
|
|
2
|
+
departments_count: number;
|
|
3
|
+
label_corp_count: number;
|
|
4
|
+
};
|
|
5
|
+
export type AsideMenuVisibility = {
|
|
6
|
+
internal: boolean;
|
|
7
|
+
external: boolean;
|
|
8
|
+
};
|
|
9
|
+
export type InternalSupplementContext = {
|
|
10
|
+
hasDepartmentScope: boolean;
|
|
11
|
+
isInternalDisabled: boolean;
|
|
12
|
+
snapshot: DepartmentsSnapshot;
|
|
13
|
+
usersLen: number;
|
|
14
|
+
};
|
|
15
|
+
export declare const EMPTY_DEPARTMENTS_SNAPSHOT: DepartmentsSnapshot;
|
|
16
|
+
export declare const resolveDepartmentsSnapshot: (result: {
|
|
17
|
+
departments_count?: number;
|
|
18
|
+
label_corp_count?: number;
|
|
19
|
+
}) => DepartmentsSnapshot;
|
|
20
|
+
/** 部门类 limit 下,内部树为空但 member/users 有 users 时补内部入口并走扁平布局。 */
|
|
21
|
+
export declare const resolveInternalSupplement: ({ hasDepartmentScope, isInternalDisabled, snapshot, usersLen, }: InternalSupplementContext) => boolean;
|
|
22
|
+
/** 内部 supplement 扁平模式下,internal Tab 不展示中间部门树。 */
|
|
23
|
+
export declare const resolveSideShowTree: (isMemberLimitMode: boolean, activeKey: string, internalFlat: boolean) => boolean;
|
|
24
|
+
/** 内部树为空且存在部门类 limit 时,等 member/users 首屏再决选 init Tab。 */
|
|
25
|
+
export declare const shouldDeferInitActiveKey: (hasDepartmentScope: boolean, snapshot: DepartmentsSnapshot) => boolean;
|
|
26
|
+
export declare const resolveStableInitActiveKey: (menuVisibility: AsideMenuVisibility, fallbackActiveKey: string) => string;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SelectorType } from '../../../types/selector';
|
|
2
|
+
type MemberPanelMenuItem = {
|
|
3
|
+
visible: boolean;
|
|
4
|
+
};
|
|
5
|
+
export declare const getVisibleMemberPanelMenuItems: <T extends MemberPanelMenuItem>(menuItems: T[]) => T[];
|
|
6
|
+
/**
|
|
7
|
+
* transfer 合并展示内外成员,侧栏切换会破坏 userList 合并语义,故永不展示。
|
|
8
|
+
* 其他类型:仅当内部/外部两个入口同时可见时才展示左侧切换栏。
|
|
9
|
+
* @param visibleMenuItems 已过滤的可见菜单项,避免重复 filter。
|
|
10
|
+
*/
|
|
11
|
+
export declare const resolveMemberPanelShowSidebar: (type: SelectorType, visibleMenuItems: readonly MemberPanelMenuItem[]) => boolean;
|
|
12
|
+
export declare const resolveMemberPanelShowSidebarFromMenuItems: (type: SelectorType, menuItems: MemberPanelMenuItem[]) => boolean;
|
|
13
|
+
export {};
|
package/dist/components/DeptsMemberSelector/subcomponents/Panels/MemberPanel/useMemberPanelData.d.ts
CHANGED
|
@@ -11,14 +11,19 @@ declare const useMemberPanelData: () => {
|
|
|
11
11
|
selectKey: string | symbol;
|
|
12
12
|
setSelectKey: import('react').Dispatch<import('react').SetStateAction<string | symbol>>;
|
|
13
13
|
uniqueAllKey: symbol;
|
|
14
|
+
externalActiveTab: string;
|
|
15
|
+
handleExternalActiveTabChange: (tab: string) => void;
|
|
14
16
|
treeData: {
|
|
15
17
|
internal: any[];
|
|
16
18
|
external: any[];
|
|
17
19
|
};
|
|
18
20
|
currentTreeData: any[];
|
|
19
|
-
userList: any;
|
|
21
|
+
userList: any[];
|
|
22
|
+
scrollRef: import('react').RefObject<HTMLDivElement>;
|
|
20
23
|
loading: boolean;
|
|
21
24
|
memberLoading: boolean;
|
|
25
|
+
memberLoadingMore: boolean;
|
|
22
26
|
showUnavailableOverlay: boolean;
|
|
27
|
+
showTree: boolean;
|
|
23
28
|
};
|
|
24
29
|
export { useMemberPanelData };
|
|
@@ -1,19 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { RelationListItem } from '../types';
|
|
2
2
|
declare const RelationShipList: React.FC<{
|
|
3
|
-
/**
|
|
4
|
-
* 关系的从属
|
|
5
|
-
* @description relation: 当前部门的所有关系
|
|
6
|
-
* @description relationSub: 当前部门以及下级部门的关系
|
|
7
|
-
* @description relationUser: 当前成员的关系
|
|
8
|
-
*/
|
|
9
|
-
from?: RelationFrom;
|
|
10
|
-
/**
|
|
11
|
-
* 关系的从属 ID
|
|
12
|
-
*/
|
|
13
|
-
fromId?: string;
|
|
14
3
|
relationList?: RelationListItem[];
|
|
15
4
|
selectedIds?: Array<string | number>;
|
|
5
|
+
selectedId?: string | number;
|
|
16
6
|
loading?: boolean;
|
|
7
|
+
isSingleSelect?: boolean;
|
|
17
8
|
onChange?: (values: (string | number)[]) => void;
|
|
9
|
+
onToggle?: (item: RelationListItem) => void;
|
|
18
10
|
}>;
|
|
19
11
|
export default RelationShipList;
|
package/dist/components/DeptsMemberSelector/subcomponents/Panels/MemberRelationShipPanel/types.d.ts
CHANGED
|
@@ -1,17 +1,5 @@
|
|
|
1
|
-
type RelationFrom = 'relation' | 'relationSub' | 'relationUser';
|
|
2
1
|
type RelationListItem = {
|
|
3
2
|
_id: string;
|
|
4
3
|
name: string;
|
|
5
4
|
};
|
|
6
|
-
type
|
|
7
|
-
_id: string;
|
|
8
|
-
deptids: number[];
|
|
9
|
-
relations: any[];
|
|
10
|
-
uid: number;
|
|
11
|
-
username: string;
|
|
12
|
-
uniqueid: string;
|
|
13
|
-
nickname: string;
|
|
14
|
-
avatarurl: string;
|
|
15
|
-
deptnames: string;
|
|
16
|
-
};
|
|
17
|
-
export type { RelationFrom, RelationListItem, RelationUserItem };
|
|
5
|
+
export type { RelationListItem };
|
|
@@ -1,42 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare
|
|
3
|
-
DEPARTMENT = 0,
|
|
4
|
-
MEMBER = 1
|
|
5
|
-
}
|
|
6
|
-
declare const useMemberRelationShipPanelData: () => {
|
|
7
|
-
containerHeight: number;
|
|
8
|
-
activeKey: RELATION_SHIP_TYPE;
|
|
9
|
-
setActiveKey: import('react').Dispatch<import('react').SetStateAction<RELATION_SHIP_TYPE>>;
|
|
10
|
-
relationData: {
|
|
11
|
-
deptFromId?: string;
|
|
12
|
-
deptFrom?: Exclude<RelationFrom, "relationUser">;
|
|
13
|
-
memberFromId?: string;
|
|
14
|
-
memberFrom: Extract<RelationFrom, "relationUser">;
|
|
15
|
-
deptId?: string | number;
|
|
16
|
-
};
|
|
17
|
-
setDeptRelationType: (nextType: Exclude<RelationFrom, "relationUser">) => void;
|
|
18
|
-
deptTreeData: any[];
|
|
19
|
-
userList: RelationUserItem[];
|
|
1
|
+
import { RelationListItem } from './types';
|
|
2
|
+
export declare const useMemberRelationShipPanelData: () => {
|
|
20
3
|
relationList: {
|
|
21
4
|
_id: string;
|
|
22
|
-
name:
|
|
5
|
+
name: string;
|
|
23
6
|
}[];
|
|
24
7
|
selectedIds: any[];
|
|
25
|
-
|
|
26
|
-
memberLoading: boolean;
|
|
8
|
+
selectedId: any;
|
|
27
9
|
relationsLoading: boolean;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
relationShipType: typeof RELATION_SHIP_TYPE;
|
|
32
|
-
departmentRelationTabs: {
|
|
33
|
-
key: string;
|
|
34
|
-
label: string;
|
|
35
|
-
}[];
|
|
36
|
-
menuItems: {
|
|
37
|
-
key: RELATION_SHIP_TYPE;
|
|
38
|
-
label: string;
|
|
39
|
-
}[];
|
|
40
|
-
getAvatarColor: (nickname: string) => string;
|
|
10
|
+
isSingleSelect: boolean | undefined;
|
|
11
|
+
handleSelectRelation: (values: Array<string | number>) => void;
|
|
12
|
+
handleRelationToggle: (item: RelationListItem) => void;
|
|
41
13
|
};
|
|
42
|
-
export { useMemberRelationShipPanelData };
|
|
@@ -4,6 +4,7 @@ declare const ExternalOrganization: React.FC<{
|
|
|
4
4
|
onSelect: (key: number | string, node: any) => void;
|
|
5
5
|
onDeselect: (depId: number | string) => void;
|
|
6
6
|
preferredTab?: string;
|
|
7
|
-
|
|
7
|
+
/** 各外部 Tab 下的选中祖先链,与 baseline 合并后得到 Tree.expandedKeys */
|
|
8
|
+
selectionExpandKeysByTab?: Record<string, Array<string | number> | undefined>;
|
|
8
9
|
}>;
|
|
9
10
|
export default ExternalOrganization;
|
|
@@ -3,6 +3,7 @@ declare const InternalOrganization: React.FC<{
|
|
|
3
3
|
loading?: boolean;
|
|
4
4
|
onSelect: (key: number | string, node: any) => void;
|
|
5
5
|
onDeselect: (depId: number | string) => void;
|
|
6
|
-
|
|
6
|
+
/** 选中部门在各视图下的祖先链;与 baseline 合并后得到 Tree.expandedKeys */
|
|
7
|
+
selectionExpandKeys?: Array<string | number>;
|
|
7
8
|
}>;
|
|
8
9
|
export default InternalOrganization;
|