@voplus/morpho-workspace 10.0.21 → 10.0.23
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/es/modules/my-document/DataViewToolbar/index.d.ts +5 -0
- package/es/modules/my-document/DataViewToolbar/index.js +23 -0
- package/es/modules/my-document/DataViewToolbar/index.js.map +1 -0
- package/es/modules/my-document/DocumentTableGroup/DocumentSection.d.ts +4 -4
- package/es/modules/my-document/DocumentTableGroup/DocumentSection.js +129 -31
- package/es/modules/my-document/DocumentTableGroup/DocumentSection.js.map +1 -1
- package/es/modules/my-document/DocumentTableGroup/FilterPillsBar.d.ts +19 -0
- package/es/modules/my-document/DocumentTableGroup/FilterPillsBar.js +17 -0
- package/es/modules/my-document/DocumentTableGroup/FilterPillsBar.js.map +1 -0
- package/es/modules/my-document/DocumentTableGroup/index.d.ts +4 -0
- package/es/modules/my-document/DocumentTableGroup/index.js +7 -22
- package/es/modules/my-document/DocumentTableGroup/index.js.map +1 -1
- package/es/modules/my-document/DocumentViewContext.d.ts +18 -1
- package/es/modules/my-document/DocumentViewContext.js +105 -3
- package/es/modules/my-document/DocumentViewContext.js.map +1 -1
- package/es/modules/my-document/FilterTabsBar/index.d.ts +1 -1
- package/es/modules/my-document/FilterTabsBar/index.js +12 -28
- package/es/modules/my-document/FilterTabsBar/index.js.map +1 -1
- package/es/modules/my-document/FilterUI/TeamFilter/index.js +9 -16
- package/es/modules/my-document/FilterUI/TeamFilter/index.js.map +1 -1
- package/es/modules/my-document/FilterUI/WorkspaceFilter/index.js +9 -16
- package/es/modules/my-document/FilterUI/WorkspaceFilter/index.js.map +1 -1
- package/es/modules/my-document/FilterUI/index.d.ts +2 -0
- package/es/modules/my-document/FilterUI/index.js +35 -51
- package/es/modules/my-document/FilterUI/index.js.map +1 -1
- package/es/modules/my-document/SectionTemplate/DocumentTableUI/TableCell.d.ts +20 -0
- package/es/modules/my-document/SectionTemplate/DocumentTableUI/TableCell.js +160 -0
- package/es/modules/my-document/SectionTemplate/DocumentTableUI/TableCell.js.map +1 -0
- package/es/modules/my-document/SectionTemplate/DocumentTableUI/index.css +40 -0
- package/es/modules/my-document/SectionTemplate/DocumentTableUI/index.d.ts +5 -10
- package/es/modules/my-document/SectionTemplate/DocumentTableUI/index.js +103 -174
- package/es/modules/my-document/SectionTemplate/DocumentTableUI/index.js.map +1 -1
- package/es/modules/my-document/SectionTemplate/DocumentViewClass/index.d.ts +7 -6
- package/es/modules/my-document/SectionTemplate/DocumentViewClass/index.js +3 -20
- package/es/modules/my-document/SectionTemplate/DocumentViewClass/index.js.map +1 -1
- package/es/modules/my-document/SectionTemplate/GridUI/index.d.ts +5 -9
- package/es/modules/my-document/SectionTemplate/GridUI/index.js +49 -37
- package/es/modules/my-document/SectionTemplate/GridUI/index.js.map +1 -1
- package/es/modules/my-document/SectionTemplate/documentGroups.d.ts +39 -0
- package/es/modules/my-document/SectionTemplate/documentGroups.js +40 -0
- package/es/modules/my-document/SectionTemplate/documentGroups.js.map +1 -0
- package/es/modules/my-document/SectionTemplate/documentGroups.test.d.ts +1 -0
- package/es/modules/my-document/SectionTemplate/documentGroups.test.js +64 -0
- package/es/modules/my-document/SectionTemplate/documentGroups.test.js.map +1 -0
- package/es/modules/my-document/index.js +21 -14
- package/es/modules/my-document/index.js.map +1 -1
- package/es/modules/my-document/tabClasses.d.ts +3 -0
- package/es/modules/my-document/tabClasses.js +4 -0
- package/es/modules/my-document/tabClasses.js.map +1 -0
- package/es/modules/pin/components/MyPinned/index.css +2 -2
- package/es/modules/tasks/components/TaskItem/subTaskItem.css +0 -2
- package/es/modules/work/components/WorkListHeader/index.js +1 -1
- package/es/modules/work/components/WorkTableCard/TableCellDetail.js +3 -3
- package/es/modules/work/components/WorkTableCard/TableCellDetail.js.map +1 -1
- package/es/modules/work/components/WorkTableList/TableCell.js +1 -1
- package/es/modules/work/components/WorkTableList/TableCell.js.map +1 -1
- package/es/modules/work/components/WorkTableListCard/TableCellDetails.js +2 -2
- package/es/modules/work/components/WorkTableListCard/TableCellDetails.js.map +1 -1
- package/es/modules/work/components/WorkTableListCard/index.css +0 -9
- package/es/modules/work/components/WorkTableListCardPage/index.js +1 -1
- package/es/modules/work/work-type/components/WorkTypeItem/index.d.ts +0 -1
- package/es/modules/work/work-type/components/WorkTypeItem/index.js +17 -12
- package/es/modules/work/work-type/components/WorkTypeItem/index.js.map +1 -1
- package/es/obsolete/space/components/Notes/index.js +1 -1
- package/es/obsolete/space/components/Notes/index.js.map +1 -1
- package/package.json +1 -1
- package/es/controls/Corner/index.css +0 -5
- package/es/controls/Corner/index.d.ts +0 -9
- package/es/controls/Corner/index.js +0 -10
- package/es/controls/Corner/index.js.map +0 -1
- package/es/controls/StickyAddButton/index.css +0 -18
- package/es/controls/StickyAddButton/index.d.ts +0 -9
- package/es/controls/StickyAddButton/index.js +0 -12
- package/es/controls/StickyAddButton/index.js.map +0 -1
- package/es/modules/work/work-type/components/WorkTypeItem/index.css +0 -45
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { observe } from "@voplus/morpho-ui";
|
|
3
|
+
import { useDocumentViewContext } from "../DocumentViewContext";
|
|
4
|
+
import { FontAwesomeIcon as FAIcon, faListUlRegular, faThLargeSolid, faPlusRegular, } from "@voplus/morpho-ui/es/faIcons";
|
|
5
|
+
const DataViewToolbar = (props) => {
|
|
6
|
+
const { onAdd } = props;
|
|
7
|
+
const { viewType, setViewType } = useDocumentViewContext();
|
|
8
|
+
return observe(() => (React.createElement("div", { className: "flex items-center gap-3" },
|
|
9
|
+
React.createElement("div", { className: "flex items-center gap-1 bg-bg-grey rounded-base px-1.5 py-[7px]" },
|
|
10
|
+
React.createElement("button", { className: `w-7.5 h-7.5 flex items-center justify-center rounded-base transition-colors cursor-pointer ${viewType === "table"
|
|
11
|
+
? "bg-white text-font-secondary shadow-sm"
|
|
12
|
+
: "text-font-primary hover:text-font-secondary"}`, title: "List View", onClick: () => setViewType("table") },
|
|
13
|
+
React.createElement(FAIcon, { icon: faListUlRegular, className: "text-sm" })),
|
|
14
|
+
React.createElement("button", { className: `w-7.5 h-7.5 flex items-center justify-center rounded-base transition-colors cursor-pointer ${viewType === "grid"
|
|
15
|
+
? "bg-white text-font-secondary shadow-sm"
|
|
16
|
+
: "text-font-primary hover:text-font-secondary"}`, title: "Grid View", onClick: () => setViewType("grid") },
|
|
17
|
+
React.createElement(FAIcon, { icon: faThLargeSolid, className: "text-sm" }))),
|
|
18
|
+
React.createElement("button", { className: "h-11 px-4 primary-button", onClick: onAdd },
|
|
19
|
+
React.createElement(FAIcon, { icon: faPlusRegular, className: "mr-2" }),
|
|
20
|
+
"New"))));
|
|
21
|
+
};
|
|
22
|
+
export default DataViewToolbar;
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/my-document/DataViewToolbar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EACN,eAAe,IAAI,MAAM,EACzB,eAAe,EACf,cAAc,EACd,aAAa,GACb,MAAM,8BAA8B,CAAC;AAEtC,MAAM,eAAe,GAAG,CAAC,KAA6B,EAAE,EAAE;IACzD,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAExB,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,sBAAsB,EAAE,CAAC;IAE3D,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,CACpB,6BAAK,SAAS,EAAC,yBAAyB;QAEvC,6BAAK,SAAS,EAAC,iEAAiE;YAC/E,gCACC,SAAS,EAAE,8FACV,QAAQ,KAAK,OAAO;oBACnB,CAAC,CAAC,wCAAwC;oBAC1C,CAAC,CAAC,6CACJ,EAAE,EACF,KAAK,EAAC,WAAW,EACjB,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC;gBAEnC,oBAAC,MAAM,IAAC,IAAI,EAAE,eAAe,EAAE,SAAS,EAAC,SAAS,GAAG,CAC7C;YACT,gCACC,SAAS,EAAE,8FACV,QAAQ,KAAK,MAAM;oBAClB,CAAC,CAAC,wCAAwC;oBAC1C,CAAC,CAAC,6CACJ,EAAE,EACF,KAAK,EAAC,WAAW,EACjB,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC;gBAElC,oBAAC,MAAM,IAAC,IAAI,EAAE,cAAc,EAAE,SAAS,EAAC,SAAS,GAAG,CAC5C,CACJ;QAEN,gCAAQ,SAAS,EAAC,0BAA0B,EAAC,OAAO,EAAE,KAAK;YAC1D,oBAAC,MAAM,IAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAC,MAAM,GAAG;kBAExC,CACJ,CACN,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* 单一文档分组视图:内部创建 Star/Urgent/None 三个查询列表,
|
|
4
|
+
* 组装为 groups 供表格/网格分组展示,并承载 FilterTabsBar、统计行与空状态。
|
|
5
|
+
*/
|
|
2
6
|
declare const DocumentSection: (props: {
|
|
3
7
|
id: string;
|
|
4
|
-
title: string;
|
|
5
|
-
icon?: React.ReactNode;
|
|
6
|
-
flag: "Star" | "Urgent" | "None";
|
|
7
8
|
onItemClick?: (id?: string) => void;
|
|
8
|
-
onTotalChange?: (total: number) => void;
|
|
9
9
|
}) => React.JSX.Element;
|
|
10
10
|
export default DocumentSection;
|
|
@@ -1,24 +1,58 @@
|
|
|
1
|
-
import React from "react";
|
|
1
|
+
import React, { useEffect, useState } from "react";
|
|
2
2
|
import { useOnDeleteDocument, useAutoUpdateListData, useDocumentListEffect, } from "@voplus/morpho-document-core";
|
|
3
3
|
import { useDocumentViewContext, INITIAL_PAGE } from "../DocumentViewContext";
|
|
4
|
-
import { observe, useRenderOnChange } from "@voplus/morpho-ui";
|
|
4
|
+
import { observe, useRenderOnChange, useAsideContentContext } from "@voplus/morpho-ui";
|
|
5
5
|
import { useOnPinDocument, useOnUnPinDocument, useOnFlagChange, } from "@voplus/morpho-document-core/es/data/DocumentStore/hooks/pin-events";
|
|
6
6
|
import { ListDataContext, useCreateListDataState } from "@voplus/morpho-ui/es/data";
|
|
7
|
+
import { FontAwesomeIcon as FAIcon, faStarSolid, faExclamationCircleSolid, } from "@voplus/morpho-ui/es/faIcons";
|
|
7
8
|
import DocumentViewClass from "../SectionTemplate/DocumentViewClass";
|
|
9
|
+
import ListHeaderTool from "@voplus/morpho-ui/es/components/layout/ListView/headers/ListHeaderTool";
|
|
10
|
+
import FilterTabsBar from "../FilterTabsBar";
|
|
11
|
+
import FilterPillsBar from "./FilterPillsBar";
|
|
12
|
+
import { sumGroupTotals, } from "../SectionTemplate/documentGroups";
|
|
13
|
+
import classnames from "classnames";
|
|
14
|
+
/** 分组展示配置(按 Star / Urgent / None 顺序) */
|
|
15
|
+
const FLAG_GROUPS = [
|
|
16
|
+
{
|
|
17
|
+
flag: "Star",
|
|
18
|
+
title: "Starred",
|
|
19
|
+
icon: React.createElement(FAIcon, { icon: faStarSolid }),
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
flag: "Urgent",
|
|
23
|
+
title: "Urgent",
|
|
24
|
+
icon: React.createElement(FAIcon, { icon: faExclamationCircleSolid }),
|
|
25
|
+
},
|
|
26
|
+
{ flag: "None", title: "Documents" },
|
|
27
|
+
];
|
|
28
|
+
/**
|
|
29
|
+
* 单一文档分组视图:内部创建 Star/Urgent/None 三个查询列表,
|
|
30
|
+
* 组装为 groups 供表格/网格分组展示,并承载 FilterTabsBar、统计行与空状态。
|
|
31
|
+
*/
|
|
8
32
|
const DocumentSection = (props) => {
|
|
9
|
-
const { id
|
|
10
|
-
const { activeTab, onReload, filterOptions } = useDocumentViewContext();
|
|
11
|
-
const
|
|
12
|
-
const [
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
33
|
+
const { id } = props;
|
|
34
|
+
const { activeTab, onReload, filterOptions, teamItems, workspaceItems, onRemoveTeamItem, onRemoveWorkspaceItem, onResetFilters, } = useDocumentViewContext();
|
|
35
|
+
const asideContext = useAsideContentContext();
|
|
36
|
+
const [starPage, setStarPage] = useState(INITIAL_PAGE);
|
|
37
|
+
const [urgentPage, setUrgentPage] = useState(INITIAL_PAGE);
|
|
38
|
+
const [nonePage, setNonePage] = useState(INITIAL_PAGE);
|
|
39
|
+
/** 搜索防抖定时器(tab 切换或卸载时取消未完成的搜索同步) */
|
|
40
|
+
const searchTimerRef = React.useRef();
|
|
41
|
+
/** 卸载时清理搜索防抖定时器 */
|
|
42
|
+
useEffect(() => () => clearTimeout(searchTimerRef.current), []);
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
[setStarPage, setUrgentPage, setNonePage].forEach((setPage) => setPage((prev) => prev.Page === INITIAL_PAGE.Page && prev.PageSize === INITIAL_PAGE.PageSize
|
|
45
|
+
? prev
|
|
46
|
+
: INITIAL_PAGE));
|
|
20
47
|
}, [activeTab]);
|
|
21
|
-
|
|
48
|
+
/** tab 或过滤条件变化时重置各分组总数并取消未完成的搜索防抖,避免短暂显示旧 tab 的状态 */
|
|
49
|
+
useEffect(() => {
|
|
50
|
+
setTotals({});
|
|
51
|
+
if (searchTimerRef.current)
|
|
52
|
+
clearTimeout(searchTimerRef.current);
|
|
53
|
+
}, [activeTab, filterOptions]);
|
|
54
|
+
/** 按 flag 构建当前 tab 的过滤条件 */
|
|
55
|
+
const onFilter = (flag) => {
|
|
22
56
|
let filters = [
|
|
23
57
|
{ c: "Flag", o: "contains", l: "And", v1: JSON.stringify([flag]) },
|
|
24
58
|
];
|
|
@@ -36,30 +70,94 @@ const DocumentSection = (props) => {
|
|
|
36
70
|
}
|
|
37
71
|
return filters;
|
|
38
72
|
};
|
|
39
|
-
const
|
|
73
|
+
const starList = useCreateListDataState({
|
|
40
74
|
filterDefaults: {
|
|
41
75
|
includes: "tags,permissions,createdby,folder",
|
|
42
|
-
filters: onFilter(),
|
|
43
|
-
page,
|
|
76
|
+
filters: onFilter("Star"),
|
|
77
|
+
page: starPage,
|
|
44
78
|
},
|
|
45
|
-
}, [id,
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
},
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
79
|
+
}, [id, starPage, activeTab, filterOptions]);
|
|
80
|
+
const urgentList = useCreateListDataState({
|
|
81
|
+
filterDefaults: {
|
|
82
|
+
includes: "tags,permissions,createdby,folder",
|
|
83
|
+
filters: onFilter("Urgent"),
|
|
84
|
+
page: urgentPage,
|
|
85
|
+
},
|
|
86
|
+
}, [id, urgentPage, activeTab, filterOptions]);
|
|
87
|
+
const noneList = useCreateListDataState({
|
|
88
|
+
filterDefaults: {
|
|
89
|
+
includes: "tags,permissions,createdby,folder",
|
|
90
|
+
filters: onFilter("None"),
|
|
91
|
+
page: nonePage,
|
|
92
|
+
},
|
|
93
|
+
}, [id, nonePage, activeTab, filterOptions]);
|
|
94
|
+
useRenderOnChange(() => [
|
|
95
|
+
[starList.filters.options, urgentList.filters.options, noneList.filters.options],
|
|
96
|
+
id,
|
|
97
|
+
]);
|
|
98
|
+
/** 各分组的服务器总数(undefined 表示尚未收到响应) */
|
|
99
|
+
const [totals, setTotals] = useState({});
|
|
100
|
+
const [allTotal, setAllTotal] = useState(0);
|
|
101
|
+
useDocumentListEffect(starList, (result, total) => {
|
|
102
|
+
starList.union(result);
|
|
103
|
+
setTotals((prev) => ({ ...prev, Star: total !== null && total !== void 0 ? total : 0 }));
|
|
104
|
+
}, { ...starList.filters.options, Total: true });
|
|
105
|
+
useDocumentListEffect(urgentList, (result, total) => {
|
|
106
|
+
urgentList.union(result);
|
|
107
|
+
setTotals((prev) => ({ ...prev, Urgent: total !== null && total !== void 0 ? total : 0 }));
|
|
108
|
+
}, { ...urgentList.filters.options, Total: true });
|
|
109
|
+
useDocumentListEffect(noneList, (result, total) => {
|
|
110
|
+
noneList.union(result);
|
|
111
|
+
setTotals((prev) => ({ ...prev, None: total !== null && total !== void 0 ? total : 0 }));
|
|
112
|
+
}, { ...noneList.filters.options, Total: true });
|
|
113
|
+
useAutoUpdateListData(starList, (d) => d.parentId === id);
|
|
114
|
+
useAutoUpdateListData(urgentList, (d) => d.parentId === id);
|
|
115
|
+
useAutoUpdateListData(noneList, (d) => d.parentId === id);
|
|
57
116
|
useOnPinDocument(() => onReload === null || onReload === void 0 ? void 0 : onReload());
|
|
58
117
|
useOnUnPinDocument(() => onReload === null || onReload === void 0 ? void 0 : onReload());
|
|
59
118
|
useOnFlagChange(() => onReload === null || onReload === void 0 ? void 0 : onReload());
|
|
60
119
|
useOnDeleteDocument(() => onReload === null || onReload === void 0 ? void 0 : onReload());
|
|
61
|
-
|
|
62
|
-
|
|
120
|
+
const groups = FLAG_GROUPS.map((g) => {
|
|
121
|
+
var _a;
|
|
122
|
+
return ({
|
|
123
|
+
...g,
|
|
124
|
+
list: g.flag === "Star" ? starList : g.flag === "Urgent" ? urgentList : noneList,
|
|
125
|
+
total: (_a = totals[g.flag]) !== null && _a !== void 0 ? _a : 0,
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
/** 三个分组的总数是否都已收到(避免加载中误判为空状态) */
|
|
129
|
+
const allReceived = totals.Star !== undefined && totals.Urgent !== undefined && totals.None !== undefined;
|
|
130
|
+
const total = allReceived ? sumGroupTotals(groups) : undefined;
|
|
131
|
+
/** 三个分组中任一列表正在请求(filter 变化/首次加载等)时视为加载中 */
|
|
132
|
+
const loading = groups.some((g) => g.list.loading);
|
|
133
|
+
/** 是否处于 team/workspace 过滤状态 */
|
|
134
|
+
const isFiltered = !!(filterOptions === null || filterOptions === void 0 ? void 0 : filterOptions.length);
|
|
135
|
+
/** 无 filter 时三组总和(有 filter 时保持该值不变,作为 "of Y" 基数;重挂载且无历史快照时用当前总和兜底,避免 "of 0") */
|
|
136
|
+
useEffect(() => {
|
|
137
|
+
if (allReceived) {
|
|
138
|
+
setAllTotal((prev) => (!isFiltered || prev === 0 ? sumGroupTotals(groups) : prev));
|
|
139
|
+
}
|
|
140
|
+
}, [isFiltered, allReceived, totals]);
|
|
141
|
+
/** 搜索同步:主列表(None)由 ListHeaderTool 内部 1s 防抖触发,这里同步另外两个分组 */
|
|
142
|
+
const handleSearchAll = (val) => {
|
|
143
|
+
if (searchTimerRef.current)
|
|
144
|
+
clearTimeout(searchTimerRef.current);
|
|
145
|
+
searchTimerRef.current = setTimeout(() => {
|
|
146
|
+
[starList, urgentList].forEach((list) => list.triggerSearch(val !== null && val !== void 0 ? val : ""));
|
|
147
|
+
}, 1000);
|
|
148
|
+
};
|
|
149
|
+
/** 排序同步:主列表(None)由 ListHeaderTool 内部触发,这里同步另外两个分组 */
|
|
150
|
+
const handleSortAll = (params) => {
|
|
151
|
+
[starList, urgentList].forEach((list) => list.triggerSort(params));
|
|
152
|
+
};
|
|
153
|
+
const headerTool = observe(() => (React.createElement(ListHeaderTool, { key: activeTab, className: classnames("flex-1 [&_>div]:gap-5!", !(asideContext === null || asideContext === void 0 ? void 0 : asideContext.asideContent) ? "p-0!" : "pt-0"), sortable: true, addAble: false, searchHeader: true, searchOptions: { placeholder: "Search in documents", onChange: handleSearchAll }, onSort: handleSortAll })));
|
|
154
|
+
return observe(() => (React.createElement(ListDataContext.Provider, { value: noneList },
|
|
155
|
+
React.createElement("div", { className: "h-full flex flex-col" },
|
|
156
|
+
React.createElement(FilterTabsBar, { headerTool: !(asideContext === null || asideContext === void 0 ? void 0 : asideContext.asideContent) && headerTool }),
|
|
157
|
+
React.createElement(FilterPillsBar, { teamItems: teamItems, workspaceItems: workspaceItems, onRemoveTeamItem: onRemoveTeamItem, onRemoveWorkspaceItem: onRemoveWorkspaceItem, onResetFilters: onResetFilters, showTotal: React.createElement("span", { className: "ml-auto text-sm font-medium text-font-primary" }, loading ? "Loading..." : `Showing ${total !== null && total !== void 0 ? total : 0} of ${allTotal} total`) }),
|
|
158
|
+
(asideContext === null || asideContext === void 0 ? void 0 : asideContext.asideContent) && headerTool,
|
|
159
|
+
React.createElement("div", { className: "pinned-content h-full" },
|
|
160
|
+
React.createElement(DocumentViewClass, { groups: groups, onItemClick: props.onItemClick }))))));
|
|
63
161
|
};
|
|
64
162
|
export default DocumentSection;
|
|
65
163
|
//# sourceMappingURL=DocumentSection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentSection.js","sourceRoot":"","sources":["../../../../src/modules/my-document/DocumentTableGroup/DocumentSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DocumentSection.js","sourceRoot":"","sources":["../../../../src/modules/my-document/DocumentTableGroup/DocumentSection.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { IUnit } from "@voplus/morpho-org";
|
|
3
|
+
import type { IWorkspace } from "../../../data/workspace";
|
|
4
|
+
/** 统计行内的筛选 pill 条:展示 team/workspace 选中项,每项一个可关闭 pill,支持全量重置 */
|
|
5
|
+
export declare const FilterPillsBar: (props: {
|
|
6
|
+
/** 选中的 team 项 */
|
|
7
|
+
teamItems: IUnit[];
|
|
8
|
+
/** 选中的 workspace 项 */
|
|
9
|
+
workspaceItems: IWorkspace[];
|
|
10
|
+
/** 移除单个 team 项(触发重新过滤) */
|
|
11
|
+
onRemoveTeamItem: (item: IUnit) => void;
|
|
12
|
+
/** 移除单个 workspace 项(触发重新过滤) */
|
|
13
|
+
onRemoveWorkspaceItem: (item: IWorkspace) => void;
|
|
14
|
+
/** 重置全部筛选 */
|
|
15
|
+
onResetFilters: () => void;
|
|
16
|
+
/** 统计文本(Showing X of Y total) */
|
|
17
|
+
showTotal: React.ReactNode;
|
|
18
|
+
}) => React.JSX.Element;
|
|
19
|
+
export default FilterPillsBar;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { FontAwesomeIcon as FAIcon, faXmarkSolid } from "@voplus/morpho-ui/es/faIcons";
|
|
3
|
+
/** 统计行内的筛选 pill 条:展示 team/workspace 选中项,每项一个可关闭 pill,支持全量重置 */
|
|
4
|
+
export const FilterPillsBar = (props) => {
|
|
5
|
+
const { teamItems, workspaceItems, onRemoveTeamItem, onRemoveWorkspaceItem, onResetFilters } = props;
|
|
6
|
+
const hasFilters = teamItems.length > 0 || workspaceItems.length > 0;
|
|
7
|
+
const Item = ({ item, onRemove, }) => (React.createElement("span", { className: "flex h-9.5 items-center gap-3 rounded-full border border-font-disabled pl-4 pr-3 text-xs font-semibold text-font-primary" },
|
|
8
|
+
item.name,
|
|
9
|
+
React.createElement(FAIcon, { className: "cursor-pointer text-font-disabled", icon: faXmarkSolid, onClick: () => onRemove(item) })));
|
|
10
|
+
return (React.createElement("div", { className: "flex flex-wrap items-center gap-3 px-5 pb-3.5" },
|
|
11
|
+
teamItems.map((item) => (React.createElement(Item, { key: `team-${item.id}`, item: item, onRemove: onRemoveTeamItem }))),
|
|
12
|
+
workspaceItems.map((item) => (React.createElement(Item, { key: `workspace-${item.id}`, item: item, onRemove: onRemoveWorkspaceItem }))),
|
|
13
|
+
hasFilters && (React.createElement("button", { className: "text-sm font-semibold uppercase tracking-wide text-font-grey underline cursor-pointer", onClick: onResetFilters }, "Reset")),
|
|
14
|
+
React.createElement("span", { className: "ml-auto text-sm font-medium text-font-primary" }, props.showTotal)));
|
|
15
|
+
};
|
|
16
|
+
export default FilterPillsBar;
|
|
17
|
+
//# sourceMappingURL=FilterPillsBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterPillsBar.js","sourceRoot":"","sources":["../../../../src/modules/my-document/DocumentTableGroup/FilterPillsBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,eAAe,IAAI,MAAM,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEvF,+DAA+D;AAC/D,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAa9B,EAAE,EAAE;IACJ,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,cAAc,EAAE,GAC3F,KAAK,CAAC;IACP,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;IAErE,MAAM,IAAI,GAAG,CAAC,EACb,IAAI,EACJ,QAAQ,GAIR,EAAE,EAAE,CAAC,CACL,8BAAM,SAAS,EAAC,0HAA0H;QACxI,IAAI,CAAC,IAAI;QACV,oBAAC,MAAM,IACN,SAAS,EAAC,mCAAmC,EAC7C,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAC5B,CACI,CACP,CAAC;IACF,OAAO,CACN,6BAAK,SAAS,EAAC,+CAA+C;QAC5D,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACxB,oBAAC,IAAI,IAAC,GAAG,EAAE,QAAQ,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,GAAI,CACxE,CAAC;QACD,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC7B,oBAAC,IAAI,IAAC,GAAG,EAAE,aAAa,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,qBAAqB,GAAI,CAClF,CAAC;QACD,UAAU,IAAI,CACd,gCACC,SAAS,EAAC,uFAAuF,EACjG,OAAO,EAAE,cAAc,YAGf,CACT;QACD,8BAAM,SAAS,EAAC,+CAA+C,IAAE,KAAK,CAAC,SAAS,CAAQ,CACnF,CACN,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
* */
|
|
4
4
|
import React from "react";
|
|
5
5
|
export declare function capitalizeFirstLetter(str: string): string;
|
|
6
|
+
/**
|
|
7
|
+
* 文档分组视图容器:负责加载门控,始终渲染单一 DocumentSection
|
|
8
|
+
* (Star/Urgent/None 三分组);空状态由 Section 内部呈现,保证工具栏可用。
|
|
9
|
+
*/
|
|
6
10
|
declare const DocumentTableGroup: (props: {
|
|
7
11
|
id: string;
|
|
8
12
|
onClickItem?: (id?: string) => void;
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 使用在 MyDocument 中的全新 UI 设计
|
|
3
3
|
* */
|
|
4
|
-
import React
|
|
4
|
+
import React from "react";
|
|
5
5
|
import { useDocumentViewContext } from "../DocumentViewContext";
|
|
6
6
|
import { observe, useAsideContentContext } from "@voplus/morpho-ui";
|
|
7
|
-
import { FontAwesomeIcon as FAIcon, faFolderOpenSolid, faStarSolid, faExclamationCircleSolid, } from "@voplus/morpho-ui/es/faIcons";
|
|
8
7
|
import DocumentPropertiesView from "@voplus/morpho-document-core/es/components/DocumentPropertiesView";
|
|
9
8
|
import DocumentSection from "./DocumentSection";
|
|
10
9
|
// 首字母大写工具函数
|
|
@@ -13,21 +12,15 @@ export function capitalizeFirstLetter(str) {
|
|
|
13
12
|
return str;
|
|
14
13
|
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
15
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* 文档分组视图容器:负责加载门控,始终渲染单一 DocumentSection
|
|
17
|
+
* (Star/Urgent/None 三分组);空状态由 Section 内部呈现,保证工具栏可用。
|
|
18
|
+
*/
|
|
16
19
|
const DocumentTableGroup = (props) => {
|
|
17
20
|
const { id } = props;
|
|
18
|
-
const { loaded
|
|
19
|
-
const [totalArr, setTotalArr] = useState([0, 0, 1]);
|
|
20
|
-
useEffect(() => setTotalArr([0, 0, 1]), [activeTab, loaded, filterOptions]);
|
|
21
|
+
const { loaded } = useDocumentViewContext();
|
|
21
22
|
const asideContext = useAsideContentContext();
|
|
22
|
-
return observe(() => (React.createElement(React.Fragment, null, loaded &&
|
|
23
|
-
(totalArr.every((t) => t === 0) ? (React.createElement("div", { className: "text-center py-12" },
|
|
24
|
-
React.createElement("div", { className: "mb-4" },
|
|
25
|
-
React.createElement(FAIcon, { icon: faFolderOpenSolid, className: "text-slate-300 text-6xl" })),
|
|
26
|
-
React.createElement("h3", { className: "text-lg font-semibold text-slate-900 mb-2" }, "No documents found"),
|
|
27
|
-
React.createElement("p", { className: "text-slate-600" }, "Try adjusting your filters or create a new document."))) : (React.createElement(React.Fragment, null,
|
|
28
|
-
React.createElement(DocumentSection, { id: id, flag: "Star", icon: React.createElement(FAIcon, { icon: faStarSolid, className: "text-yellow-500" }), title: `Starred`, onItemClick: onItemClick, onTotalChange: (total) => handleTotalChange(0, total) }),
|
|
29
|
-
React.createElement(DocumentSection, { id: id, flag: "Urgent", icon: React.createElement(FAIcon, { icon: faExclamationCircleSolid, className: "text-red-500" }), title: `Urgent`, onItemClick: onItemClick, onTotalChange: (total) => handleTotalChange(1, total) }),
|
|
30
|
-
React.createElement(DocumentSection, { id: id, flag: "None", title: `Documents`, onItemClick: onItemClick, onTotalChange: (total) => handleTotalChange(2, total) })))))));
|
|
23
|
+
return observe(() => (React.createElement(React.Fragment, null, loaded && React.createElement(DocumentSection, { id: id, onItemClick: onItemClick }))));
|
|
31
24
|
function onItemClick(id) {
|
|
32
25
|
var _a;
|
|
33
26
|
if (!id)
|
|
@@ -35,14 +28,6 @@ const DocumentTableGroup = (props) => {
|
|
|
35
28
|
asideContext === null || asideContext === void 0 ? void 0 : asideContext.openAside(React.createElement(DocumentPropertiesView, { id: id }), { span: 10 });
|
|
36
29
|
(_a = props.onClickItem) === null || _a === void 0 ? void 0 : _a.call(props, id);
|
|
37
30
|
}
|
|
38
|
-
// 监听每个 section 的 total
|
|
39
|
-
function handleTotalChange(index, total) {
|
|
40
|
-
setTotalArr((prev) => {
|
|
41
|
-
const next = [...prev];
|
|
42
|
-
next[index] = total;
|
|
43
|
-
return next;
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
31
|
};
|
|
47
32
|
export default DocumentTableGroup;
|
|
48
33
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/my-document/DocumentTableGroup/index.tsx"],"names":[],"mappings":"AAAA;;KAEK;AAEL,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/my-document/DocumentTableGroup/index.tsx"],"names":[],"mappings":"AAAA;;KAEK;AAEL,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,sBAAsB,MAAM,mEAAmE,CAAC;AACvG,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,YAAY;AACZ,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAChD,IAAI,CAAC,GAAG;QAAE,OAAO,GAAG,CAAC;IACrB,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AAED;;;GAGG;AACH,MAAM,kBAAkB,GAAG,CAAC,KAA0D,EAAE,EAAE;IACzF,MAAM,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC;IAErB,MAAM,EAAE,MAAM,EAAE,GAAG,sBAAsB,EAAE,CAAC;IAE5C,MAAM,YAAY,GAAG,sBAAsB,EAAE,CAAC;IAE9C,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,CACpB,0CACE,MAAM,IAAI,oBAAC,eAAe,IAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,WAAW,GAAI,CAC9D,CACH,CAAC,CAAC;IAEH,SAAS,WAAW,CAAC,EAAW;;QAC/B,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,SAAS,CAAC,oBAAC,sBAAsB,IAAC,EAAE,EAAE,EAAE,GAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1E,MAAA,KAAK,CAAC,WAAW,sDAAG,EAAE,CAAC,CAAC;IACzB,CAAC;AACF,CAAC,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
|
|
@@ -1,20 +1,37 @@
|
|
|
1
1
|
import React, { ReactNode } from "react";
|
|
2
2
|
import { FilterOption } from "@voplus/morpho-data";
|
|
3
|
+
import { IUnit } from "@voplus/morpho-org";
|
|
4
|
+
import { IWorkspace } from "../../data/workspace";
|
|
3
5
|
export type DocumentViewType = "table" | "grid";
|
|
4
6
|
export type DocumentFilterType = "pinned" | "personal" | "team" | "workspace";
|
|
5
7
|
export declare const INITIAL_PAGE: {
|
|
6
8
|
Page: number;
|
|
7
9
|
PageSize: number;
|
|
8
10
|
};
|
|
11
|
+
/** team 选中项 → ParentNodeId contains 过滤条件(空数组表示不过滤) */
|
|
12
|
+
export declare const teamItemsToFilterOption: (items: IUnit[]) => FilterOption[];
|
|
13
|
+
/** workspace 选中项 → ParentNodeId contains 过滤条件(空数组表示不过滤) */
|
|
14
|
+
export declare const workspaceItemsToFilterOption: (items: IWorkspace[]) => FilterOption[];
|
|
15
|
+
/**
|
|
16
|
+
* team + workspace 选中项 → 单个 ParentNodeId contains 过滤条件。
|
|
17
|
+
* 两侧的 id(team 用 containerId,workspace 用 id)合并进同一个条件,
|
|
18
|
+
* 避免同时过滤时产生两个 ParentNodeId 条件(全部为空数组时不返回条件)。
|
|
19
|
+
*/
|
|
20
|
+
export declare const parentNodeFilterOptions: (teamItems: IUnit[], workspaceItems: IWorkspace[]) => FilterOption[];
|
|
9
21
|
interface DocumentViewContextProps {
|
|
10
22
|
loaded: boolean;
|
|
11
23
|
activeTab: DocumentFilterType;
|
|
12
24
|
viewType: DocumentViewType;
|
|
13
25
|
filterOptions?: FilterOption[];
|
|
26
|
+
teamItems: IUnit[];
|
|
27
|
+
workspaceItems: IWorkspace[];
|
|
14
28
|
onReload: () => void;
|
|
15
29
|
setActiveTab: (activeTab: DocumentFilterType) => void;
|
|
16
30
|
setViewType: (viewType: DocumentViewType) => void;
|
|
17
|
-
onApplyFilter: (activeTab: DocumentFilterType, value: FilterOption[] | []) => void;
|
|
31
|
+
onApplyFilter: (activeTab: DocumentFilterType, value: FilterOption[] | [], items?: IUnit[] | IWorkspace[]) => void;
|
|
32
|
+
onRemoveTeamItem: (item: IUnit) => void;
|
|
33
|
+
onRemoveWorkspaceItem: (item: IWorkspace) => void;
|
|
34
|
+
onResetFilters: () => void;
|
|
18
35
|
}
|
|
19
36
|
export declare const useDocumentViewContext: () => DocumentViewContextProps;
|
|
20
37
|
export declare const DocumentViewProvider: React.FC<{
|
|
@@ -3,6 +3,49 @@ export const INITIAL_PAGE = {
|
|
|
3
3
|
Page: 1,
|
|
4
4
|
PageSize: 10,
|
|
5
5
|
};
|
|
6
|
+
/** team 选中项 → ParentNodeId contains 过滤条件(空数组表示不过滤) */
|
|
7
|
+
export const teamItemsToFilterOption = (items) => items.length
|
|
8
|
+
? [
|
|
9
|
+
{
|
|
10
|
+
c: "ParentNodeId",
|
|
11
|
+
o: "contains",
|
|
12
|
+
l: "And",
|
|
13
|
+
v1: JSON.stringify(items.map((item) => item.containerId)),
|
|
14
|
+
},
|
|
15
|
+
]
|
|
16
|
+
: [];
|
|
17
|
+
/** workspace 选中项 → ParentNodeId contains 过滤条件(空数组表示不过滤) */
|
|
18
|
+
export const workspaceItemsToFilterOption = (items) => items.length
|
|
19
|
+
? [
|
|
20
|
+
{
|
|
21
|
+
c: "ParentNodeId",
|
|
22
|
+
o: "contains",
|
|
23
|
+
l: "And",
|
|
24
|
+
v1: JSON.stringify(items.map((item) => item.id)),
|
|
25
|
+
},
|
|
26
|
+
]
|
|
27
|
+
: [];
|
|
28
|
+
/**
|
|
29
|
+
* team + workspace 选中项 → 单个 ParentNodeId contains 过滤条件。
|
|
30
|
+
* 两侧的 id(team 用 containerId,workspace 用 id)合并进同一个条件,
|
|
31
|
+
* 避免同时过滤时产生两个 ParentNodeId 条件(全部为空数组时不返回条件)。
|
|
32
|
+
*/
|
|
33
|
+
export const parentNodeFilterOptions = (teamItems, workspaceItems) => {
|
|
34
|
+
const ids = [
|
|
35
|
+
...teamItems.map((item) => item.containerId),
|
|
36
|
+
...workspaceItems.map((item) => item.id),
|
|
37
|
+
];
|
|
38
|
+
return ids.length
|
|
39
|
+
? [
|
|
40
|
+
{
|
|
41
|
+
c: "ParentNodeId",
|
|
42
|
+
o: "contains",
|
|
43
|
+
l: "And",
|
|
44
|
+
v1: JSON.stringify(ids),
|
|
45
|
+
},
|
|
46
|
+
]
|
|
47
|
+
: [];
|
|
48
|
+
};
|
|
6
49
|
const DocumentViewContext = createContext(undefined);
|
|
7
50
|
export const useDocumentViewContext = () => {
|
|
8
51
|
const ctx = useContext(DocumentViewContext);
|
|
@@ -13,18 +56,72 @@ export const useDocumentViewContext = () => {
|
|
|
13
56
|
export const DocumentViewProvider = ({ children }) => {
|
|
14
57
|
const [filterOptions, setFilterOptions] = useState(undefined);
|
|
15
58
|
const [viewType, setViewType] = useState("table");
|
|
16
|
-
const [activeTab,
|
|
59
|
+
const [activeTab, setActiveTabState] = useState("pinned");
|
|
17
60
|
const [loaded, setLoaded] = useState(true);
|
|
61
|
+
const [teamItems, setTeamItems] = useState([]);
|
|
62
|
+
const [workspaceItems, setWorkspaceItems] = useState([]);
|
|
63
|
+
/**
|
|
64
|
+
* 切换 tab。切到 pinned/personal 时清空 team/workspace 选中项与过滤条件,
|
|
65
|
+
* 保证 UI(FilterPillsBar)与后台查询条件(不含 ParentNodeId)一致。
|
|
66
|
+
*/
|
|
67
|
+
const setActiveTab = useCallback((nextTab) => {
|
|
68
|
+
setActiveTabState(nextTab);
|
|
69
|
+
if (nextTab !== "team" && nextTab !== "workspace") {
|
|
70
|
+
setTeamItems([]);
|
|
71
|
+
setWorkspaceItems([]);
|
|
72
|
+
setFilterOptions(undefined);
|
|
73
|
+
}
|
|
74
|
+
}, []);
|
|
18
75
|
const onReload = useCallback(() => {
|
|
19
76
|
setLoaded(false);
|
|
20
77
|
setTimeout(() => {
|
|
21
78
|
setLoaded(true);
|
|
22
79
|
}, 100);
|
|
23
80
|
}, []);
|
|
24
|
-
const onApplyFilter = useCallback((activeTab, value) => {
|
|
25
|
-
|
|
81
|
+
const onApplyFilter = useCallback((activeTab, value, items) => {
|
|
82
|
+
var _a, _b;
|
|
26
83
|
setActiveTab(activeTab);
|
|
84
|
+
if (activeTab === "team") {
|
|
85
|
+
const team = (_a = items) !== null && _a !== void 0 ? _a : [];
|
|
86
|
+
setTeamItems(team);
|
|
87
|
+
setFilterOptions(parentNodeFilterOptions(team, workspaceItems));
|
|
88
|
+
}
|
|
89
|
+
else if (activeTab === "workspace") {
|
|
90
|
+
const ws = (_b = items) !== null && _b !== void 0 ? _b : [];
|
|
91
|
+
setWorkspaceItems(ws);
|
|
92
|
+
setFilterOptions(parentNodeFilterOptions(teamItems, ws));
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
setFilterOptions(value);
|
|
96
|
+
}
|
|
97
|
+
}, [teamItems, workspaceItems, setActiveTab]);
|
|
98
|
+
/** 重置全部筛选:清空 team/workspace 选中项与过滤条件并回到 pinned */
|
|
99
|
+
const onResetFilters = useCallback(() => {
|
|
100
|
+
setTeamItems([]);
|
|
101
|
+
setWorkspaceItems([]);
|
|
102
|
+
setFilterOptions(undefined);
|
|
103
|
+
setActiveTab("pinned");
|
|
27
104
|
}, []);
|
|
105
|
+
/** 移除单个 team 项并重新生成过滤条件;两侧均无选中项时调用 onResetFilters 回到 pinned */
|
|
106
|
+
const onRemoveTeamItem = useCallback((item) => {
|
|
107
|
+
const next = teamItems.filter((i) => i.id !== item.id);
|
|
108
|
+
if (next.length === 0 && workspaceItems.length === 0) {
|
|
109
|
+
onResetFilters();
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
setTeamItems(next);
|
|
113
|
+
setFilterOptions(parentNodeFilterOptions(next, workspaceItems));
|
|
114
|
+
}, [teamItems, workspaceItems, onResetFilters]);
|
|
115
|
+
/** 移除单个 workspace 项并重新生成过滤条件;两侧均无选中项时调用 onResetFilters 回到 pinned */
|
|
116
|
+
const onRemoveWorkspaceItem = useCallback((item) => {
|
|
117
|
+
const next = workspaceItems.filter((i) => i.id !== item.id);
|
|
118
|
+
if (teamItems.length === 0 && next.length === 0) {
|
|
119
|
+
onResetFilters();
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
setWorkspaceItems(next);
|
|
123
|
+
setFilterOptions(parentNodeFilterOptions(teamItems, next));
|
|
124
|
+
}, [teamItems, workspaceItems, onResetFilters]);
|
|
28
125
|
return (React.createElement(DocumentViewContext.Provider, { value: {
|
|
29
126
|
viewType,
|
|
30
127
|
setViewType,
|
|
@@ -32,6 +129,11 @@ export const DocumentViewProvider = ({ children }) => {
|
|
|
32
129
|
onReload,
|
|
33
130
|
filterOptions,
|
|
34
131
|
onApplyFilter,
|
|
132
|
+
teamItems,
|
|
133
|
+
workspaceItems,
|
|
134
|
+
onRemoveTeamItem,
|
|
135
|
+
onRemoveWorkspaceItem,
|
|
136
|
+
onResetFilters,
|
|
35
137
|
activeTab,
|
|
36
138
|
setActiveTab,
|
|
37
139
|
} }, children));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentViewContext.js","sourceRoot":"","sources":["../../../src/modules/my-document/DocumentViewContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAa,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DocumentViewContext.js","sourceRoot":"","sources":["../../../src/modules/my-document/DocumentViewContext.tsx"],"names":[],"mappings":"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"}
|