@voplus/morpho-workspace 9.0.7 → 9.0.9
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/DocumentTableGroup/DocumentSection.d.ts +11 -0
- package/es/modules/my-document/DocumentTableGroup/DocumentSection.js +60 -0
- package/es/modules/my-document/DocumentTableGroup/DocumentSection.js.map +1 -0
- package/es/modules/my-document/{DocumentSection → DocumentTableGroup}/index.d.ts +3 -2
- package/es/modules/my-document/DocumentTableGroup/index.js +46 -0
- package/es/modules/my-document/DocumentTableGroup/index.js.map +1 -0
- package/es/modules/my-document/DocumentViewContext.d.ts +11 -3
- package/es/modules/my-document/DocumentViewContext.js +24 -2
- package/es/modules/my-document/DocumentViewContext.js.map +1 -1
- package/es/modules/my-document/FilterTabsBar/index.d.ts +2 -5
- package/es/modules/my-document/FilterTabsBar/index.js +12 -29
- package/es/modules/my-document/FilterTabsBar/index.js.map +1 -1
- package/es/modules/my-document/FilterUI/TeamFilter/index.d.ts +3 -0
- package/es/modules/my-document/FilterUI/TeamFilter/index.js +31 -0
- package/es/modules/my-document/FilterUI/TeamFilter/index.js.map +1 -0
- package/es/modules/my-document/FilterUI/WorkspaceFilter/index.d.ts +3 -0
- package/es/modules/my-document/FilterUI/WorkspaceFilter/index.js +27 -0
- package/es/modules/my-document/FilterUI/WorkspaceFilter/index.js.map +1 -0
- package/es/modules/my-document/FilterUI/index.css +8 -0
- package/es/modules/my-document/FilterUI/index.d.ts +9 -14
- package/es/modules/my-document/FilterUI/index.js +46 -28
- package/es/modules/my-document/FilterUI/index.js.map +1 -1
- package/es/modules/my-document/Header/index.d.ts +3 -1
- package/es/modules/my-document/Header/index.js +14 -10
- package/es/modules/my-document/Header/index.js.map +1 -1
- package/es/modules/my-document/SectionTemplate/DocumentTableUI/index.d.ts +4 -1
- package/es/modules/my-document/SectionTemplate/DocumentTableUI/index.js +9 -5
- package/es/modules/my-document/SectionTemplate/DocumentTableUI/index.js.map +1 -1
- package/es/modules/my-document/SectionTemplate/DocumentViewClass/index.d.ts +2 -5
- package/es/modules/my-document/SectionTemplate/DocumentViewClass/index.js +4 -4
- package/es/modules/my-document/SectionTemplate/DocumentViewClass/index.js.map +1 -1
- package/es/modules/my-document/SectionTemplate/GridUI/index.d.ts +4 -2
- package/es/modules/my-document/SectionTemplate/GridUI/index.js +30 -18
- package/es/modules/my-document/SectionTemplate/GridUI/index.js.map +1 -1
- package/es/modules/my-document/SectionTemplate/GridUI/useElementWidth.d.ts +6 -0
- package/es/modules/my-document/SectionTemplate/GridUI/useElementWidth.js +29 -0
- package/es/modules/my-document/SectionTemplate/GridUI/useElementWidth.js.map +1 -0
- package/es/modules/my-document/index.js +9 -17
- package/es/modules/my-document/index.js.map +1 -1
- package/package.json +1 -1
- package/es/modules/my-document/DocumentSection/index.js +0 -35
- package/es/modules/my-document/DocumentSection/index.js.map +0 -1
- package/es/modules/pin/components/PinnedSection/index.d.ts +0 -8
- package/es/modules/pin/components/PinnedSection/index.js +0 -45
- package/es/modules/pin/components/PinnedSection/index.js.map +0 -1
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { IconProp } from "@voplus/morpho-ui/es/faIcons";
|
|
3
|
+
declare const DocumentSection: (props: {
|
|
4
|
+
id: string;
|
|
5
|
+
title: string;
|
|
6
|
+
icon?: IconProp | undefined;
|
|
7
|
+
flag: "Star" | "Urgent" | "None";
|
|
8
|
+
onItemClick?: (id: string) => void;
|
|
9
|
+
onTotalChange?: (total: number) => void;
|
|
10
|
+
}) => React.JSX.Element;
|
|
11
|
+
export default DocumentSection;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { useOnDeleteDocument, useAutoUpdateListData, useDocumentListEffect, } from "@voplus/morpho-document-core";
|
|
3
|
+
import { useDocumentViewContext } from "../DocumentViewContext";
|
|
4
|
+
import { observe, useRenderOnChange } from "@voplus/morpho-ui";
|
|
5
|
+
import { useOnPinDocument, useOnUnPinDocument, useOnFlagChange, } from "@voplus/morpho-document-core/es/data/DocumentStore/hooks/pin-events";
|
|
6
|
+
import { ListDataContext, useCreateListDataState } from "@voplus/morpho-ui/es/data";
|
|
7
|
+
import DocumentViewClass from "../SectionTemplate/DocumentViewClass";
|
|
8
|
+
const DocumentSection = (props) => {
|
|
9
|
+
const { id, flag, icon, title } = props;
|
|
10
|
+
const { activeTab, onReload, filterOptions } = useDocumentViewContext();
|
|
11
|
+
const [total, setTotal] = React.useState(0);
|
|
12
|
+
const [page, setPage] = React.useState({
|
|
13
|
+
Page: 1,
|
|
14
|
+
PageSize: 20,
|
|
15
|
+
});
|
|
16
|
+
const onFilter = () => {
|
|
17
|
+
let filters = [
|
|
18
|
+
{ c: "Flag", o: "contains", l: "And", v1: JSON.stringify([flag]) },
|
|
19
|
+
];
|
|
20
|
+
switch (activeTab) {
|
|
21
|
+
case "pinned":
|
|
22
|
+
filters = [{ c: "Pin", l: "And", o: "=", v1: "True" }, ...filters];
|
|
23
|
+
break;
|
|
24
|
+
case "personal":
|
|
25
|
+
filters = [{ c: "ParentNodeId", o: "=", l: "And", v1: id }, ...filters];
|
|
26
|
+
break;
|
|
27
|
+
case "team":
|
|
28
|
+
case "workspace":
|
|
29
|
+
filters = filters.concat(filterOptions !== null && filterOptions !== void 0 ? filterOptions : []);
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
return filters;
|
|
33
|
+
};
|
|
34
|
+
const list = useCreateListDataState({
|
|
35
|
+
filterDefaults: {
|
|
36
|
+
includes: "tags,permissions,createdby,folder",
|
|
37
|
+
filters: onFilter(),
|
|
38
|
+
page,
|
|
39
|
+
},
|
|
40
|
+
}, [id, page, activeTab, filterOptions]);
|
|
41
|
+
useRenderOnChange(() => [list.filters.options, id]);
|
|
42
|
+
useDocumentListEffect(list, (result, total) => {
|
|
43
|
+
var _a;
|
|
44
|
+
list.union(result);
|
|
45
|
+
setTotal(total !== null && total !== void 0 ? total : 0);
|
|
46
|
+
(_a = props.onTotalChange) === null || _a === void 0 ? void 0 : _a.call(props, total !== null && total !== void 0 ? total : 0);
|
|
47
|
+
}, {
|
|
48
|
+
...list.filters.options,
|
|
49
|
+
Total: true,
|
|
50
|
+
});
|
|
51
|
+
useAutoUpdateListData(list, (d) => d.parentId === id);
|
|
52
|
+
useOnPinDocument(() => onReload === null || onReload === void 0 ? void 0 : onReload());
|
|
53
|
+
useOnUnPinDocument(() => onReload === null || onReload === void 0 ? void 0 : onReload());
|
|
54
|
+
useOnFlagChange(() => onReload === null || onReload === void 0 ? void 0 : onReload());
|
|
55
|
+
useOnDeleteDocument(() => onReload === null || onReload === void 0 ? void 0 : onReload());
|
|
56
|
+
return observe(() => (React.createElement(ListDataContext.Provider, { value: list },
|
|
57
|
+
React.createElement(DocumentViewClass, { title: title, icon: icon, total: total, list: list, onItemClick: props.onItemClick, onSearch: (val) => list.triggerSearch(val), onPageChange: (page, pageSize) => setPage({ Page: page, PageSize: pageSize }) }))));
|
|
58
|
+
};
|
|
59
|
+
export default DocumentSection;
|
|
60
|
+
//# sourceMappingURL=DocumentSection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DocumentSection.js","sourceRoot":"","sources":["../../../../src/modules/my-document/DocumentTableGroup/DocumentSection.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
* 使用在 MyDocument 中的全新 UI 设计
|
|
3
3
|
* */
|
|
4
4
|
import React from "react";
|
|
5
|
-
declare
|
|
5
|
+
export declare function capitalizeFirstLetter(str: string): string;
|
|
6
|
+
declare const DocumentTableGroup: (props: {
|
|
6
7
|
id: string;
|
|
7
8
|
onClickItem?: (id: string) => void;
|
|
8
9
|
}) => React.JSX.Element;
|
|
9
|
-
export default
|
|
10
|
+
export default DocumentTableGroup;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 使用在 MyDocument 中的全新 UI 设计
|
|
3
|
+
* */
|
|
4
|
+
import React, { useEffect, useState } from "react";
|
|
5
|
+
import { useDocumentViewContext } from "../DocumentViewContext";
|
|
6
|
+
import { observe, useAsideContentContext } from "@voplus/morpho-ui";
|
|
7
|
+
import { FontAwesomeIcon as FAIcon, faFolderOpenSolid, faStarSolid, faExclamationCircleSolid, } from "@voplus/morpho-ui/es/faIcons";
|
|
8
|
+
import DocumentPropertiesView from "@voplus/morpho-document-core/es/components/DocumentPropertiesView";
|
|
9
|
+
import DocumentSection from "./DocumentSection";
|
|
10
|
+
// 首字母大写工具函数
|
|
11
|
+
export function capitalizeFirstLetter(str) {
|
|
12
|
+
if (!str)
|
|
13
|
+
return str;
|
|
14
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
15
|
+
}
|
|
16
|
+
const DocumentTableGroup = (props) => {
|
|
17
|
+
const { id } = props;
|
|
18
|
+
const { loaded, activeTab, filterOptions } = useDocumentViewContext();
|
|
19
|
+
const [totalArr, setTotalArr] = useState([0, 0, 1]);
|
|
20
|
+
useEffect(() => setTotalArr([0, 0, 1]), [activeTab, loaded, filterOptions]);
|
|
21
|
+
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: faStarSolid, title: `${capitalizeFirstLetter(activeTab)} Starred`, onItemClick: onItemClick, onTotalChange: (total) => handleTotalChange(0, total) }),
|
|
29
|
+
React.createElement(DocumentSection, { id: id, flag: "Urgent", icon: faExclamationCircleSolid, title: `${capitalizeFirstLetter(activeTab)} Urgent`, onItemClick: onItemClick, onTotalChange: (total) => handleTotalChange(1, total) }),
|
|
30
|
+
React.createElement(DocumentSection, { id: id, flag: "None", title: `${capitalizeFirstLetter(activeTab)} Documents`, onItemClick: onItemClick, onTotalChange: (total) => handleTotalChange(2, total) })))))));
|
|
31
|
+
function onItemClick(id) {
|
|
32
|
+
var _a;
|
|
33
|
+
asideContext === null || asideContext === void 0 ? void 0 : asideContext.openAside(React.createElement(DocumentPropertiesView, { id: id }), { span: 10 });
|
|
34
|
+
(_a = props.onClickItem) === null || _a === void 0 ? void 0 : _a.call(props, id);
|
|
35
|
+
}
|
|
36
|
+
// 监听每个 section 的 total
|
|
37
|
+
function handleTotalChange(index, total) {
|
|
38
|
+
setTotalArr((prev) => {
|
|
39
|
+
const next = [...prev];
|
|
40
|
+
next[index] = total;
|
|
41
|
+
return next;
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
export default DocumentTableGroup;
|
|
46
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/my-document/DocumentTableGroup/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,19 @@
|
|
|
1
|
-
import React from "react";
|
|
1
|
+
import React, { ReactNode } from "react";
|
|
2
|
+
import { FilterOption } from "@voplus/morpho-data";
|
|
2
3
|
export type DocumentViewType = "table" | "grid";
|
|
4
|
+
export type DocumentFilterType = "pinned" | "personal" | "team" | "workspace";
|
|
3
5
|
interface DocumentViewContextProps {
|
|
6
|
+
loaded: boolean;
|
|
7
|
+
activeTab: DocumentFilterType;
|
|
4
8
|
viewType: DocumentViewType;
|
|
5
|
-
|
|
9
|
+
filterOptions?: FilterOption[];
|
|
10
|
+
onReload: () => void;
|
|
11
|
+
setActiveTab: (activeTab: DocumentFilterType) => void;
|
|
12
|
+
setViewType: (viewType: DocumentViewType) => void;
|
|
13
|
+
onApplyFilter: (activeTab: DocumentFilterType, value: FilterOption[] | []) => void;
|
|
6
14
|
}
|
|
7
15
|
export declare const useDocumentViewContext: () => DocumentViewContextProps;
|
|
8
16
|
export declare const DocumentViewProvider: React.FC<{
|
|
9
|
-
children:
|
|
17
|
+
children: ReactNode;
|
|
10
18
|
}>;
|
|
11
19
|
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { createContext, useContext, useState } from "react";
|
|
1
|
+
import React, { createContext, useCallback, useContext, useState } from "react";
|
|
2
2
|
const DocumentViewContext = createContext(undefined);
|
|
3
3
|
export const useDocumentViewContext = () => {
|
|
4
4
|
const ctx = useContext(DocumentViewContext);
|
|
@@ -7,7 +7,29 @@ export const useDocumentViewContext = () => {
|
|
|
7
7
|
return ctx;
|
|
8
8
|
};
|
|
9
9
|
export const DocumentViewProvider = ({ children }) => {
|
|
10
|
+
const [filterOptions, setFilterOptions] = useState(undefined);
|
|
10
11
|
const [viewType, setViewType] = useState("table");
|
|
11
|
-
|
|
12
|
+
const [activeTab, setActiveTab] = useState("pinned");
|
|
13
|
+
const [loaded, setLoaded] = useState(true);
|
|
14
|
+
const onReload = useCallback(() => {
|
|
15
|
+
setLoaded(false);
|
|
16
|
+
setTimeout(() => {
|
|
17
|
+
setLoaded(true);
|
|
18
|
+
}, 100);
|
|
19
|
+
}, []);
|
|
20
|
+
const onApplyFilter = useCallback((activeTab, value) => {
|
|
21
|
+
setFilterOptions(value);
|
|
22
|
+
setActiveTab(activeTab);
|
|
23
|
+
}, []);
|
|
24
|
+
return (React.createElement(DocumentViewContext.Provider, { value: {
|
|
25
|
+
viewType,
|
|
26
|
+
setViewType,
|
|
27
|
+
loaded,
|
|
28
|
+
onReload,
|
|
29
|
+
filterOptions,
|
|
30
|
+
onApplyFilter,
|
|
31
|
+
activeTab,
|
|
32
|
+
setActiveTab,
|
|
33
|
+
} }, children));
|
|
12
34
|
};
|
|
13
35
|
//# sourceMappingURL=DocumentViewContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentViewContext.js","sourceRoot":"","sources":["../../../src/modules/my-document/DocumentViewContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
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;AAkB3F,MAAM,mBAAmB,GAAG,aAAa,CAAuC,SAAS,CAAC,CAAC;AAE3F,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,EAAE;IAC1C,MAAM,GAAG,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAE5C,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IAC/F,OAAO,GAAG,CAAC;AACZ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAsC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IACvF,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAA6B,SAAS,CAAC,CAAC;IAC1F,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAmB,OAAO,CAAC,CAAC;IACpE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAqB,QAAQ,CAAC,CAAC;IACzE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE3C,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;QACjC,SAAS,CAAC,KAAK,CAAC,CAAC;QACjB,UAAU,CAAC,GAAG,EAAE;YACf,SAAS,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC,EAAE,GAAG,CAAC,CAAC;IACT,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,SAA6B,EAAE,KAA0B,EAAE,EAAE;QAC/F,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACxB,YAAY,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACN,oBAAC,mBAAmB,CAAC,QAAQ,IAC5B,KAAK,EAAE;YACN,QAAQ;YACR,WAAW;YACX,MAAM;YACN,QAAQ;YACR,aAAa;YACb,aAAa;YACb,SAAS;YACT,YAAY;SACZ,IAEA,QAAQ,CACqB,CAC/B,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
|
|
3
|
-
activeTab: "pinned" | "personal";
|
|
2
|
+
declare const FilterTabsBar: (props: {
|
|
4
3
|
onAdd?: () => void;
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
declare const FilterTabsBar: ({ activeTab, onAdd, onChange }: FilterTabsBarProps) => React.JSX.Element;
|
|
4
|
+
}) => React.JSX.Element;
|
|
8
5
|
export default FilterTabsBar;
|
|
@@ -1,41 +1,24 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import { Button } from "antd";
|
|
2
3
|
import { observe } from "@voplus/morpho-ui";
|
|
3
4
|
import { useDocumentViewContext } from "../DocumentViewContext";
|
|
4
|
-
import { FontAwesomeIcon as FAIcon, faListUlRegular, faThLargeSolid, faPlusRegular, faStarSolid, faUserSolid,
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
const FilterTabsBar = (
|
|
8
|
-
const {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
{ id: "marketing", name: "Marketing Team", count: 45 },
|
|
12
|
-
{ id: "sales", name: "Sales Team", count: 78 },
|
|
13
|
-
{ id: "finance", name: "Finance Team", count: 23 },
|
|
14
|
-
{ id: "hr", name: "HR Team", count: 12 },
|
|
15
|
-
{ id: "legal", name: "Legal Team", count: 56 },
|
|
16
|
-
];
|
|
17
|
-
const workspaces = [
|
|
18
|
-
{ id: "acme", name: "ACME Corporation", count: 234 },
|
|
19
|
-
{ id: "client-beta", name: "Client Beta Inc", count: 89 },
|
|
20
|
-
{ id: "operations", name: "Operations Hub", count: 34 },
|
|
21
|
-
{ id: "launch", name: "Product Launch Q1", count: 123 },
|
|
22
|
-
{ id: "research", name: "R&D Projects", count: 67 },
|
|
23
|
-
];
|
|
24
|
-
const [selectedTeams, setSelectedTeams] = React.useState([]);
|
|
25
|
-
const [selectedWorkspaces, setSelectedWorkspaces] = React.useState([]);
|
|
26
|
-
const [teamsSearch, setTeamsSearch] = React.useState("");
|
|
27
|
-
const [workspacesSearch, setWorkspacesSearch] = React.useState("");
|
|
28
|
-
return observe(() => (React.createElement("div", { className: "bg-white px-8 py-4 shrink-0" },
|
|
5
|
+
import { FontAwesomeIcon as FAIcon, faListUlRegular, faThLargeSolid, faPlusRegular, faStarSolid, faUserSolid, } from "@voplus/morpho-ui/es/faIcons";
|
|
6
|
+
import WorkspacesFilter from "../FilterUI/WorkspaceFilter";
|
|
7
|
+
import TeamFilter from "../FilterUI/TeamFilter";
|
|
8
|
+
const FilterTabsBar = (props) => {
|
|
9
|
+
const { onAdd } = props;
|
|
10
|
+
const { viewType, setViewType, activeTab, setActiveTab } = useDocumentViewContext();
|
|
11
|
+
return observe(() => (React.createElement("div", { className: "px-5 py-4 shrink-0" },
|
|
29
12
|
React.createElement("div", { className: "flex items-center justify-between" },
|
|
30
13
|
React.createElement("div", { className: "flex items-center gap-2" },
|
|
31
|
-
React.createElement(Button, { type: activeTab === "pinned" ? "primary" : "default", onClick: () =>
|
|
14
|
+
React.createElement(Button, { type: activeTab === "pinned" ? "primary" : "default", onClick: () => setActiveTab("pinned") },
|
|
32
15
|
React.createElement(FAIcon, { icon: faStarSolid, className: "mr-2" }),
|
|
33
16
|
"Pinned Documents"),
|
|
34
|
-
React.createElement(Button, { type: activeTab === "personal" ? "primary" : "default", onClick: () =>
|
|
17
|
+
React.createElement(Button, { type: activeTab === "personal" ? "primary" : "default", onClick: () => setActiveTab("personal") },
|
|
35
18
|
React.createElement(FAIcon, { icon: faUserSolid, className: "mr-2" }),
|
|
36
19
|
"Personal"),
|
|
37
|
-
React.createElement(
|
|
38
|
-
React.createElement(
|
|
20
|
+
React.createElement(TeamFilter, null),
|
|
21
|
+
React.createElement(WorkspacesFilter, null)),
|
|
39
22
|
React.createElement("div", { className: "flex items-center gap-3" },
|
|
40
23
|
React.createElement("div", { className: "flex items-center gap-1 bg-slate-100 rounded-lg p-1" },
|
|
41
24
|
React.createElement("button", { className: `w-6 h-6 flex items-center justify-center rounded transition-colors ${viewType === "table"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/my-document/FilterTabsBar/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,EACb,WAAW,EACX,WAAW,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/my-document/FilterTabsBar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,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,EACb,WAAW,EACX,WAAW,GACX,MAAM,8BAA8B,CAAC;AACtC,OAAO,gBAAgB,MAAM,6BAA6B,CAAC;AAC3D,OAAO,UAAU,MAAM,wBAAwB,CAAC;AAEhD,MAAM,aAAa,GAAG,CAAC,KAA6B,EAAE,EAAE;IACvD,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAExB,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,sBAAsB,EAAE,CAAC;IAEpF,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,CACpB,6BAAK,SAAS,EAAC,oBAAoB;QAClC,6BAAK,SAAS,EAAC,mCAAmC;YACjD,6BAAK,SAAS,EAAC,yBAAyB;gBAEvC,oBAAC,MAAM,IACN,IAAI,EAAE,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EACpD,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC;oBAErC,oBAAC,MAAM,IAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAC,MAAM,GAAG;uCAEtC;gBAGT,oBAAC,MAAM,IACN,IAAI,EAAE,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EACtD,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC;oBAEvC,oBAAC,MAAM,IAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAC,MAAM,GAAG;+BAEtC;gBAGT,oBAAC,UAAU,OAAG;gBAGd,oBAAC,gBAAgB,OAAG,CACf;YAGN,6BAAK,SAAS,EAAC,yBAAyB;gBAEvC,6BAAK,SAAS,EAAC,qDAAqD;oBACnE,gCACC,SAAS,EAAE,sEACV,QAAQ,KAAK,OAAO;4BACnB,CAAC,CAAC,mCAAmC;4BACrC,CAAC,CAAC,qCACJ,EAAE,EACF,KAAK,EAAC,WAAW,EACjB,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC;wBAEnC,oBAAC,MAAM,IAAC,IAAI,EAAE,eAAe,EAAE,SAAS,EAAC,SAAS,GAAG,CAC7C;oBACT,gCACC,SAAS,EAAE,sEACV,QAAQ,KAAK,MAAM;4BAClB,CAAC,CAAC,mCAAmC;4BACrC,CAAC,CAAC,qCACJ,EAAE,EACF,KAAK,EAAC,WAAW,EACjB,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC;wBAElC,oBAAC,MAAM,IAAC,IAAI,EAAE,cAAc,EAAE,SAAS,EAAC,SAAS,GAAG,CAC5C,CACJ;gBAEN,oBAAC,MAAM,IAAC,IAAI,EAAC,SAAS,EAAC,OAAO,EAAE,KAAK;oBACpC,oBAAC,MAAM,IAAC,IAAI,EAAE,aAAa,GAAI;0BAEvB,CACJ,CACD,CACD,CACN,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { useDocumentViewContext } from "../../DocumentViewContext";
|
|
3
|
+
import { observe, useRenderOnChange } from "@voplus/morpho-ui";
|
|
4
|
+
import { useCreateListDataState } from "@voplus/morpho-ui/es/data";
|
|
5
|
+
import { useUnitListEffect } from "@voplus/morpho-org";
|
|
6
|
+
import { FontAwesomeIcon as FAIcon, faUsersSolid } from "@voplus/morpho-ui/es/faIcons";
|
|
7
|
+
import FilterUI from "..";
|
|
8
|
+
const TeamFilter = () => {
|
|
9
|
+
const { onApplyFilter, activeTab } = useDocumentViewContext();
|
|
10
|
+
const list = useCreateListDataState({
|
|
11
|
+
filterDefaults: {
|
|
12
|
+
filters: [
|
|
13
|
+
{
|
|
14
|
+
c: "Type",
|
|
15
|
+
o: "contains",
|
|
16
|
+
l: "And",
|
|
17
|
+
v1: JSON.stringify(["Team"]),
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
page: { Page: 1, PageSize: 300 },
|
|
21
|
+
},
|
|
22
|
+
}, []);
|
|
23
|
+
/** 如果 list.filters.options变更了就重渲染,使下一行的useContactListEffect 可以接收新参数*/
|
|
24
|
+
useRenderOnChange(() => list.filters.options);
|
|
25
|
+
/** 把ListDataState传给useContactListEffect,使之可以自動更新loading, hasmore. */
|
|
26
|
+
useUnitListEffect(list, (result) => list.union(result), list.filters.options);
|
|
27
|
+
return observe(() => (React.createElement(FilterUI, { label: "Teams", icon: React.createElement(FAIcon, { icon: faUsersSolid, className: "mr-2" }), list: list, active: activeTab === "team", searchPlaceholder: "Search teams...", onFilter: (items) => onApplyFilter("team", (items === null || items === void 0 ? void 0 : items.map((item) => ({ c: "ParentNodeId", o: "=", l: "And", v1: item.containerId }))) ||
|
|
28
|
+
[]) })));
|
|
29
|
+
};
|
|
30
|
+
export default TeamFilter;
|
|
31
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/modules/my-document/FilterUI/TeamFilter/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAS,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,eAAe,IAAI,MAAM,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACvF,OAAO,QAAQ,MAAM,IAAI,CAAC;AAE1B,MAAM,UAAU,GAAG,GAAG,EAAE;IACvB,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,sBAAsB,EAAE,CAAC;IAE9D,MAAM,IAAI,GAAG,sBAAsB,CAClC;QACC,cAAc,EAAE;YACf,OAAO,EAAE;gBACR;oBACC,CAAC,EAAE,MAAM;oBACT,CAAC,EAAE,UAAU;oBACb,CAAC,EAAE,KAAK;oBACR,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;iBAC5B;aACD;YACD,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE;SAChC;KACD,EACD,EAAE,CACF,CAAC;IAEF,sEAAsE;IACtE,iBAAiB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE9C,qEAAqE;IACrE,iBAAiB,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE9E,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,CACpB,oBAAC,QAAQ,IACR,KAAK,EAAC,OAAO,EACb,IAAI,EAAE,oBAAC,MAAM,IAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAC,MAAM,GAAG,EACrD,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,SAAS,KAAK,MAAM,EAC5B,iBAAiB,EAAC,iBAAiB,EACnC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CACnB,aAAa,CACZ,MAAM,EACN,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YACpF,EAAE,CACH,GAED,CACF,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { useDocumentViewContext } from "../../DocumentViewContext";
|
|
3
|
+
import { observe, useRenderOnChange } from "@voplus/morpho-ui";
|
|
4
|
+
import { useCreateListDataState } from "@voplus/morpho-ui/es/data";
|
|
5
|
+
import { useWorkspaceListEffect } from "../../../../data/workspace";
|
|
6
|
+
import { useAutoUpdateListData } from "../../../../data/workspace/workspace-events";
|
|
7
|
+
import { FontAwesomeIcon as FAIcon, faBriefcaseSolid } from "@voplus/morpho-ui/es/faIcons";
|
|
8
|
+
import FilterUI from "..";
|
|
9
|
+
const WorkspaceFilter = () => {
|
|
10
|
+
const { onApplyFilter, activeTab } = useDocumentViewContext();
|
|
11
|
+
/** 建立 ListView 和useWorkspaceListEffect所需的ListDataState. 会根据state.id重建所以不需reset. */
|
|
12
|
+
const list = useCreateListDataState({
|
|
13
|
+
filterDefaults: {
|
|
14
|
+
filters: [],
|
|
15
|
+
page: { Page: 1, PageSize: 200 },
|
|
16
|
+
},
|
|
17
|
+
}, []);
|
|
18
|
+
/** 如果 list.filters.options变更了就重渲染,使下一行的useWorkspaceListEffect 可以接收新参数*/
|
|
19
|
+
useRenderOnChange(() => list.filters.options);
|
|
20
|
+
/** 把ListDataState传给useWorkspaceListEffect,使之可以自動更新loading, hasmore. */
|
|
21
|
+
useWorkspaceListEffect(list, (result) => list.union(result), list.filters.options);
|
|
22
|
+
/** useOnNewWorkspace, useOnDeleteWorkspace的sugar syntax 自動更新list. */
|
|
23
|
+
useAutoUpdateListData(list, (d) => true);
|
|
24
|
+
return observe(() => (React.createElement(FilterUI, { label: "Workspaces", active: activeTab === "workspace", icon: React.createElement(FAIcon, { icon: faBriefcaseSolid, className: "mr-2" }), list: list, searchPlaceholder: "Search workspaces...", onFilter: (items) => onApplyFilter("workspace", (items === null || items === void 0 ? void 0 : items.map((item) => ({ c: "ParentNodeId", o: "=", l: "And", v1: item.id }))) || []) })));
|
|
25
|
+
};
|
|
26
|
+
export default WorkspaceFilter;
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/modules/my-document/FilterUI/WorkspaceFilter/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAc,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACpF,OAAO,EAAE,eAAe,IAAI,MAAM,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC3F,OAAO,QAAQ,MAAM,IAAI,CAAC;AAE1B,MAAM,eAAe,GAAG,GAAG,EAAE;IAC5B,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,sBAAsB,EAAE,CAAC;IAE9D,mFAAmF;IACnF,MAAM,IAAI,GAAG,sBAAsB,CAClC;QACC,cAAc,EAAE;YACf,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE;SAChC;KACD,EACD,EAAE,CACF,CAAC;IAEF,wEAAwE;IACxE,iBAAiB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE9C,uEAAuE;IACvE,sBAAsB,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAEnF,qEAAqE;IACrE,qBAAqB,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAEzC,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,CACpB,oBAAC,QAAQ,IACR,KAAK,EAAC,YAAY,EAClB,MAAM,EAAE,SAAS,KAAK,WAAW,EACjC,IAAI,EAAE,oBAAC,MAAM,IAAC,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAC,MAAM,GAAG,EACzD,IAAI,EAAE,IAAI,EACV,iBAAiB,EAAC,sBAAsB,EACxC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CACnB,aAAa,CACZ,WAAW,EACX,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,KAAI,EAAE,CAClF,GAED,CACF,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -1,21 +1,16 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
|
|
2
|
+
import { ListDataContextState } from "@voplus/morpho-ui/es/data";
|
|
3
|
+
import "./index.css";
|
|
4
|
+
declare const FilterUI: <T extends {
|
|
3
5
|
id: string;
|
|
4
6
|
name: string;
|
|
5
|
-
|
|
6
|
-
checked?: boolean;
|
|
7
|
-
}
|
|
8
|
-
export interface FilterUIProps {
|
|
7
|
+
}>(props: {
|
|
9
8
|
label: string;
|
|
9
|
+
active?: boolean;
|
|
10
|
+
multiple?: boolean;
|
|
10
11
|
icon?: React.ReactNode;
|
|
11
|
-
|
|
12
|
-
selectedIds: string[];
|
|
12
|
+
list: ListDataContextState<T>;
|
|
13
13
|
searchPlaceholder?: string;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
onToggle: (id: string) => void;
|
|
17
|
-
onClearAll: () => void;
|
|
18
|
-
onSearch: (query: string) => void;
|
|
19
|
-
}
|
|
20
|
-
declare const FilterUI: React.FC<FilterUIProps>;
|
|
14
|
+
onFilter?: (selectedArr: T[]) => void;
|
|
15
|
+
}) => React.JSX.Element;
|
|
21
16
|
export default FilterUI;
|
|
@@ -1,11 +1,36 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import {
|
|
1
|
+
import React, { useEffect, useRef, useState } from "react";
|
|
2
|
+
import { debounce } from "lodash-es";
|
|
3
|
+
import { observe } from "@voplus/morpho-ui";
|
|
3
4
|
import { FontAwesomeIcon as FAIcon, faChevronDownRegular, faChevronUpRegular, } from "@voplus/morpho-ui/es/faIcons";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
|
|
5
|
+
import { Button, Input, Checkbox, Space, Skeleton } from "antd";
|
|
6
|
+
import "./index.css";
|
|
7
|
+
const FilterUI = (props) => {
|
|
8
|
+
const { label, icon, list, active = false, searchPlaceholder = "Search...", multiple = false, onFilter, } = props;
|
|
9
|
+
const [showDropdown, setShowDropdown] = useState(false);
|
|
10
|
+
const [selectedIds, setSelectedIds] = useState([]);
|
|
11
|
+
// 处理选中逻辑
|
|
12
|
+
const handleCheckboxChange = (id) => {
|
|
13
|
+
if (multiple) {
|
|
14
|
+
setSelectedIds((prev) => (prev.includes(id) ? prev.filter((v) => v !== id) : [...prev, id]));
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
setSelectedIds((prev) => (prev.includes(id) ? [] : [id]));
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const handleReset = () => {
|
|
21
|
+
setSelectedIds([]);
|
|
22
|
+
onFilter === null || onFilter === void 0 ? void 0 : onFilter([]);
|
|
23
|
+
};
|
|
24
|
+
const handleApply = () => {
|
|
25
|
+
onFilter === null || onFilter === void 0 ? void 0 : onFilter(list.data.filter((item) => selectedIds.includes(item.id)));
|
|
26
|
+
setShowDropdown(false);
|
|
27
|
+
};
|
|
28
|
+
const dropdownRef = useRef(null);
|
|
29
|
+
// 防抖处理 search input
|
|
30
|
+
const debouncedSearch = useRef(debounce((value) => {
|
|
31
|
+
list.triggerSearch(value);
|
|
32
|
+
}, 500)).current;
|
|
33
|
+
useEffect(() => {
|
|
9
34
|
if (!showDropdown)
|
|
10
35
|
return;
|
|
11
36
|
const handleClickOutside = (event) => {
|
|
@@ -18,41 +43,34 @@ const FilterUI = ({ label, icon, options, selectedIds, searchPlaceholder = "Sear
|
|
|
18
43
|
document.removeEventListener("mousedown", handleClickOutside);
|
|
19
44
|
};
|
|
20
45
|
}, [showDropdown]);
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
React.createElement(Button, { disabled: true, type: "default", onClick: () => setShowDropdown((v) => !v) },
|
|
46
|
+
return observe(() => (React.createElement("div", { className: "relative", ref: dropdownRef },
|
|
47
|
+
React.createElement(Button, { type: active ? "primary" : "default", onClick: () => setShowDropdown((v) => !v) },
|
|
24
48
|
icon,
|
|
25
49
|
label,
|
|
26
|
-
selectedIds.length > 0 && (React.createElement("span", { id: badgeId, className: "ml-1 px-2 py-0.5 bg-blue-100 text-blue-700 rounded-full text-xs" }, selectedIds.length)),
|
|
27
50
|
showDropdown ? (React.createElement(FAIcon, { icon: faChevronUpRegular, className: "ml-1 text-xs" })) : (React.createElement(FAIcon, { icon: faChevronDownRegular, className: "ml-1 text-xs" }))),
|
|
28
|
-
showDropdown && (React.createElement("div", {
|
|
51
|
+
showDropdown && (React.createElement("div", { className: "absolute top-full left-0 mt-2 w-72 bg-white border border-slate-200 rounded-lg shadow-lg z-999" },
|
|
29
52
|
React.createElement("div", { className: "p-3 border-b border-slate-200" },
|
|
30
53
|
React.createElement("h3", { className: "text-sm font-semibold text-slate-900 mb-2" },
|
|
31
54
|
"Select ",
|
|
32
55
|
label),
|
|
33
56
|
React.createElement("div", { className: "relative" },
|
|
34
57
|
React.createElement("i", { className: "fas fa-search absolute left-3 top-1/2 transform -translate-y-1/2 text-slate-400 text-sm" }),
|
|
35
|
-
React.createElement(Input, { placeholder: searchPlaceholder, className: "w-full pl-9 pr-3 py-2 border border-slate-300 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-blue-500",
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
opt.count,
|
|
45
|
-
" documents"))))))) : (React.createElement("div", { className: "px-4 py-8 text-center text-sm text-slate-500" },
|
|
46
|
-
"No ",
|
|
47
|
-
label.toLowerCase(),
|
|
48
|
-
" found"))),
|
|
58
|
+
React.createElement(Input, { placeholder: searchPlaceholder, className: "w-full pl-9 pr-3 py-2 border border-slate-300 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-blue-500", onChange: (e) => debouncedSearch(e.target.value) }))),
|
|
59
|
+
React.createElement("div", { className: "max-h-80 overflow-y-auto scrollbar-hide" },
|
|
60
|
+
React.createElement(Skeleton, { loading: list.loading, active: true }, list.data.length > 0 ? (list.data.map((opt) => (React.createElement("div", { key: opt.id, className: "flex items-center gap-3 px-4 py-2.5 hover:bg-slate-50 cursor-pointer" },
|
|
61
|
+
React.createElement(Checkbox, { checked: selectedIds.includes(opt.id), onChange: () => handleCheckboxChange(opt.id), className: "w-4 h-4 text-blue-600 border-slate-300 rounded focus:ring-blue-500" }),
|
|
62
|
+
React.createElement("div", { className: "flex-1" },
|
|
63
|
+
React.createElement("div", { className: "text-sm font-medium text-slate-900" }, opt.name)))))) : (React.createElement("div", { className: "px-4 py-8 text-center text-sm text-slate-500" },
|
|
64
|
+
"No ",
|
|
65
|
+
label.toLowerCase(),
|
|
66
|
+
" found")))),
|
|
49
67
|
React.createElement("div", { className: "p-3 border-t border-slate-200 flex items-center justify-between" },
|
|
50
68
|
React.createElement("span", { className: "text-xs text-slate-600" },
|
|
51
69
|
selectedIds.length,
|
|
52
70
|
" selected"),
|
|
53
71
|
React.createElement(Space, null,
|
|
54
|
-
React.createElement(Button, { type: "link", size: "small",
|
|
55
|
-
React.createElement(Button, { type: "link", size: "small",
|
|
72
|
+
React.createElement(Button, { type: "link", size: "small", className: "text-xs font-medium", onClick: handleReset }, "Reset"),
|
|
73
|
+
React.createElement(Button, { type: "link", size: "small", className: "text-xs text-blue-600 hover:text-blue-700 font-medium", onClick: handleApply }, "Apply"))))))));
|
|
56
74
|
};
|
|
57
75
|
export default FilterUI;
|
|
58
76
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/my-document/FilterUI/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/my-document/FilterUI/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
|
|
2
|
+
import FilterTabsBar from "../FilterTabsBar";
|
|
3
|
+
import type { ComponentProps } from "react";
|
|
4
|
+
declare const Header: (props: ComponentProps<typeof FilterTabsBar>) => React.JSX.Element;
|
|
3
5
|
export default Header;
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { observe } from "@voplus/morpho-ui";
|
|
3
|
-
import { FontAwesomeIcon as FAIcon, faFolderOpenSolid } from
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
React.createElement("
|
|
12
|
-
|
|
3
|
+
import { FontAwesomeIcon as FAIcon, faFolderOpenSolid } from "@voplus/morpho-ui/es/faIcons";
|
|
4
|
+
import FilterTabsBar from "../FilterTabsBar";
|
|
5
|
+
const Header = (props) => {
|
|
6
|
+
return observe(() => (React.createElement("div", { className: "bg-white flex-shrink-0" },
|
|
7
|
+
React.createElement("div", { className: "px-5 pt-6 pb-4" },
|
|
8
|
+
React.createElement("div", { className: "flex items-center gap-4" },
|
|
9
|
+
React.createElement("div", { className: "w-12 h-12 bg-blue-50 border border-blue-200 rounded-lg flex items-center justify-center flex-shrink-0" },
|
|
10
|
+
React.createElement(FAIcon, { icon: faFolderOpenSolid, className: "text-blue-600 text-xl" })),
|
|
11
|
+
React.createElement("div", null,
|
|
12
|
+
React.createElement("h1", { className: "text-xl font-bold text-slate-900" }, "My Documents"),
|
|
13
|
+
React.createElement("p", { className: "text-sm text-slate-600" }, "Access and manage your documents from all sources"))),
|
|
14
|
+
React.createElement("div", { className: "mt-4 border-b border-slate-200" })),
|
|
15
|
+
React.createElement(FilterTabsBar, { ...props }),
|
|
16
|
+
React.createElement("div", { className: "pb-4 bg-gradient-to-b from-white to-slate-50" }))));
|
|
13
17
|
};
|
|
14
18
|
export default Header;
|
|
15
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/my-document/Header/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/my-document/Header/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,eAAe,IAAI,MAAM,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAC5F,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAI7C,MAAM,MAAM,GAAG,CAAC,KAA2C,EAAE,EAAE;IAC9D,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,CACpB,6BAAK,SAAS,EAAC,wBAAwB;QAEtC,6BAAK,SAAS,EAAC,gBAAgB;YAC9B,6BAAK,SAAS,EAAC,yBAAyB;gBACvC,6BAAK,SAAS,EAAC,uGAAuG;oBACrH,oBAAC,MAAM,IAAC,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAC,uBAAuB,GAAG,CAChE;gBACN;oBACC,4BAAI,SAAS,EAAC,kCAAkC,mBAAkB;oBAClE,2BAAG,SAAS,EAAC,wBAAwB,wDAEjC,CACC,CACD;YAEN,6BAAK,SAAS,EAAC,gCAAgC,GAAO,CACjD;QAGN,oBAAC,aAAa,OAAK,KAAK,GAAI;QAE5B,6BAAK,SAAS,EAAC,8CAA8C,GAAO,CAC/D,CACN,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { IDocument } from "@voplus/morpho-document-core";
|
|
3
|
+
import { ListDataContextState } from "@voplus/morpho-ui/es/data/ListDataContext";
|
|
3
4
|
import "./index.css";
|
|
4
5
|
declare const TableView: (props: {
|
|
5
|
-
list: IDocument
|
|
6
|
+
list: ListDataContextState<IDocument>;
|
|
7
|
+
total?: number;
|
|
6
8
|
loading?: boolean;
|
|
7
9
|
onItemClick?: (id: string) => void;
|
|
10
|
+
onPageChange?: (page: number, pageSize: number) => void;
|
|
8
11
|
}) => React.JSX.Element;
|
|
9
12
|
export default TableView;
|
|
@@ -11,7 +11,7 @@ import UTCShortDate from "@voplus/morpho-ui/es/controls/UTCShortDate";
|
|
|
11
11
|
import TagView from "@voplus/morpho-org/es/modules/tag/TagView";
|
|
12
12
|
import "./index.css";
|
|
13
13
|
const TableView = (props) => {
|
|
14
|
-
const { list, loading } = props;
|
|
14
|
+
const { list, loading, total } = props;
|
|
15
15
|
const [selectedRowKeys, setSelectedRowKeys] = useState([]);
|
|
16
16
|
const meta = useMetaStore();
|
|
17
17
|
const store = useDocumentStore();
|
|
@@ -106,7 +106,7 @@ const TableView = (props) => {
|
|
|
106
106
|
title: (React.createElement("span", { className: "text-xs font-semibold text-slate-500 uppercase tracking-wider" }, "Flag")),
|
|
107
107
|
dataIndex: "flag",
|
|
108
108
|
key: "flag",
|
|
109
|
-
render: (_, doc) => (React.createElement("div", { className: "cell-content" },
|
|
109
|
+
render: (_, doc) => (React.createElement("div", { className: "cell-content", onClick: (e) => e.stopPropagation() },
|
|
110
110
|
React.createElement(FlagProperty, { showEditIcon: false, id: doc.id, flag: doc.flag }))),
|
|
111
111
|
},
|
|
112
112
|
{
|
|
@@ -119,7 +119,7 @@ const TableView = (props) => {
|
|
|
119
119
|
{
|
|
120
120
|
title: "",
|
|
121
121
|
key: "operate",
|
|
122
|
-
width:
|
|
122
|
+
width: 90,
|
|
123
123
|
fixed: "end",
|
|
124
124
|
render: (_, doc) => (React.createElement("div", { className: "cell-content" },
|
|
125
125
|
React.createElement(DocumentToolbar, { id: doc.id },
|
|
@@ -130,7 +130,7 @@ const TableView = (props) => {
|
|
|
130
130
|
className: "text-right",
|
|
131
131
|
},
|
|
132
132
|
];
|
|
133
|
-
return observe(() => (React.createElement("div", {
|
|
133
|
+
return observe(() => (React.createElement("div", { className: "bg-white border border-slate-200 rounded-lg overflow-hidden document-table-ui-hide-scrollbar" },
|
|
134
134
|
hasSelected && (React.createElement(Flex, { gap: "middle", align: "center", className: "p-2.5!" },
|
|
135
135
|
React.createElement(Button, { size: "small", type: "text", danger: true, onClick: () => Modal.confirm({
|
|
136
136
|
title: "Do you want to delete these items ?",
|
|
@@ -144,7 +144,11 @@ const TableView = (props) => {
|
|
|
144
144
|
"Selected ",
|
|
145
145
|
selectedRowKeys.length,
|
|
146
146
|
" items"))),
|
|
147
|
-
React.createElement(Table, { rowKey: "id", pagination:
|
|
147
|
+
React.createElement(Table, { rowKey: "id", pagination: {
|
|
148
|
+
total,
|
|
149
|
+
pageSize: 20,
|
|
150
|
+
onChange: (newPage, newPageSize) => { var _a; return (_a = props.onPageChange) === null || _a === void 0 ? void 0 : _a.call(props, newPage, newPageSize); },
|
|
151
|
+
}, loading: loading !== null && loading !== void 0 ? loading : list.loading, columns: columns, dataSource: list.data, scroll: { y: 400, x: "max-content" }, rowClassName: () => "hover:bg-slate-50 cursor-pointer transition-colors", rowSelection: rowSelection, onRow: (record) => ({
|
|
148
152
|
onClick: (event) => {
|
|
149
153
|
var _a;
|
|
150
154
|
if (!(event.target instanceof HTMLElement))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/modules/my-document/SectionTemplate/DocumentTableUI/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAExC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EACN,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,QAAQ,GACR,MAAM,6DAA6D,CAAC;AACrE,OAAO,EAEN,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,GACxB,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/modules/my-document/SectionTemplate/DocumentTableUI/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { IDocument } from "@voplus/morpho-document-core";
|
|
3
2
|
import { IconProp } from "@voplus/morpho-ui/es/faIcons";
|
|
3
|
+
import TableUI from "../DocumentTableUI";
|
|
4
4
|
declare const DocumentViewClass: (props: {
|
|
5
5
|
title: string;
|
|
6
6
|
icon?: IconProp;
|
|
7
|
-
list: IDocument[];
|
|
8
|
-
loading?: boolean;
|
|
9
7
|
search?: boolean;
|
|
10
8
|
onSearch?: (val: string) => void;
|
|
11
|
-
|
|
12
|
-
}) => React.JSX.Element;
|
|
9
|
+
} & React.ComponentProps<typeof TableUI>) => React.JSX.Element;
|
|
13
10
|
export default DocumentViewClass;
|
|
@@ -6,19 +6,19 @@ import QuickSearch from "@voplus/morpho-ui/es/components/layout/ListView/control
|
|
|
6
6
|
import TableUI from "../DocumentTableUI";
|
|
7
7
|
import GridUI from "../GridUI";
|
|
8
8
|
const DocumentViewClass = (props) => {
|
|
9
|
-
const { list, title, icon,
|
|
9
|
+
const { list, title, icon, search = true, total } = props;
|
|
10
10
|
const { viewType } = useDocumentViewContext();
|
|
11
|
-
return observe(() => (React.createElement("div", { className: "mb-8" },
|
|
11
|
+
return observe(() => (React.createElement(React.Fragment, null, total !== undefined && total > 0 ? (React.createElement("div", { className: "mb-8" },
|
|
12
12
|
React.createElement("div", { className: "flex items-center justify-between mb-4" },
|
|
13
13
|
React.createElement("div", { className: "flex items-center gap-2" },
|
|
14
14
|
icon && React.createElement(FAIcon, { icon: icon }),
|
|
15
15
|
React.createElement("h2", { className: "text-xl font-bold text-slate-900" }, title),
|
|
16
16
|
React.createElement("span", { className: "text-sm text-slate-500" },
|
|
17
17
|
"(",
|
|
18
|
-
list.length,
|
|
18
|
+
total || list.data.length,
|
|
19
19
|
")")),
|
|
20
20
|
React.createElement("div", { className: "flex items-center gap-2" }, search && React.createElement(QuickSearch, { onChange: (val) => { var _a; return (_a = props.onSearch) === null || _a === void 0 ? void 0 : _a.call(props, val); } }))),
|
|
21
|
-
React.createElement("div", { className: "pinned-content" }, viewType === "table" ?
|
|
21
|
+
React.createElement("div", { className: "pinned-content" }, viewType === "table" ? React.createElement(TableUI, { ...props }) : React.createElement(GridUI, { ...props })))) : null)));
|
|
22
22
|
};
|
|
23
23
|
export default DocumentViewClass;
|
|
24
24
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/modules/my-document/SectionTemplate/DocumentViewClass/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/modules/my-document/SectionTemplate/DocumentViewClass/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,eAAe,IAAI,MAAM,EAAY,MAAM,8BAA8B,CAAC;AACnF,OAAO,WAAW,MAAM,sEAAsE,CAAC;AAC/F,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,MAAM,iBAAiB,GAAG,CACzB,KAKwC,EACvC,EAAE;IACH,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAE1D,MAAM,EAAE,QAAQ,EAAE,GAAG,sBAAsB,EAAE,CAAC;IAE9C,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,CACpB,0CACE,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CACnC,6BAAK,SAAS,EAAC,MAAM;QACpB,6BAAK,SAAS,EAAC,wCAAwC;YACtD,6BAAK,SAAS,EAAC,yBAAyB;gBACtC,IAAI,IAAI,oBAAC,MAAM,IAAC,IAAI,EAAE,IAAI,GAAI;gBAC/B,4BAAI,SAAS,EAAC,kCAAkC,IAAE,KAAK,CAAM;gBAC7D,8BAAM,SAAS,EAAC,wBAAwB;;oBAAG,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM;wBAAS,CACxE;YAEN,6BAAK,SAAS,EAAC,yBAAyB,IACtC,MAAM,IAAI,oBAAC,WAAW,IAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,WAAC,OAAA,MAAA,KAAK,CAAC,QAAQ,sDAAG,GAAG,CAAC,CAAA,EAAA,GAAI,CAC/D,CACD;QAEN,6BAAK,SAAS,EAAC,gBAAgB,IAC7B,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,oBAAC,OAAO,OAAK,KAAK,GAAI,CAAC,CAAC,CAAC,oBAAC,MAAM,OAAK,KAAK,GAAI,CACjE,CACD,CACN,CAAC,CAAC,CAAC,IAAI,CACN,CACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import { ListDataContextState } from "@voplus/morpho-ui/es/data/ListDataContext";
|
|
2
3
|
import { IDocument } from "@voplus/morpho-document-core";
|
|
3
4
|
declare const GridView: (props: {
|
|
4
|
-
|
|
5
|
-
|
|
5
|
+
total?: number;
|
|
6
|
+
list: ListDataContextState<IDocument>;
|
|
6
7
|
onItemClick?: (id: string) => void;
|
|
8
|
+
onPageChange?: (page: number, pageSize: number) => void;
|
|
7
9
|
}) => React.JSX.Element;
|
|
8
10
|
export default GridView;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { Skeleton } from "antd";
|
|
3
2
|
import { observe } from "@voplus/morpho-ui";
|
|
3
|
+
import { Skeleton, Pagination } from "antd";
|
|
4
|
+
import { useElementWidth } from "./useElementWidth";
|
|
4
5
|
import { useApplicationContext } from "@voplus/morpho-data";
|
|
5
6
|
import { FontAwesomeIcon as FAIcon, faFolderOpenSolid } from "@voplus/morpho-ui/es/faIcons";
|
|
6
7
|
import { Restore, Open, Versions, Download, } from "@voplus/morpho-document/es/controls/DocumentToolbar/buttons";
|
|
@@ -10,26 +11,37 @@ import DocumentToolbar from "@voplus/morpho-document/es/controls/DocumentToolbar
|
|
|
10
11
|
import MentionList from "@voplus/morpho-org/es/controls/MentionList";
|
|
11
12
|
import TagView from "@voplus/morpho-org/es/modules/tag/TagView";
|
|
12
13
|
const GridView = (props) => {
|
|
13
|
-
const { list } = props;
|
|
14
|
+
const { list, total } = props;
|
|
14
15
|
const { user } = useApplicationContext();
|
|
15
16
|
const meta = useMetaStore();
|
|
16
17
|
const store = useDocumentStore();
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
React.createElement(
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
18
|
+
const [currentPage, setCurrentPage] = React.useState(1);
|
|
19
|
+
// 使用自定义 hook 检测宽度
|
|
20
|
+
const [gridRef, , isNarrow] = useElementWidth(1200);
|
|
21
|
+
return observe(() => (React.createElement(Skeleton, { loading: list.loading, active: true, paragraph: { rows: 3 } }, list.data.length > 0 ? (React.createElement(React.Fragment, null,
|
|
22
|
+
React.createElement("div", { ref: gridRef, className: `grid gap-4 items-stretch [grid-auto-rows:1fr] ` +
|
|
23
|
+
(isNarrow ? "grid-cols-2" : "grid-cols-1 md:grid-cols-2 lg:grid-cols-3") }, list.data.map((doc) => (React.createElement("div", { key: doc.id, onClick: () => { var _a; return (_a = props.onItemClick) === null || _a === void 0 ? void 0 : _a.call(props, doc.id); }, className: "group relative bg-white border rounded-lg p-4 hover:shadow-md transition-all cursor-pointer border-slate-200" },
|
|
24
|
+
React.createElement("div", { className: "absolute top-2 right-2" },
|
|
25
|
+
React.createElement(DocumentToolbar, { id: doc.id },
|
|
26
|
+
React.createElement(Open, { url: meta.getRoute(doc) }),
|
|
27
|
+
doc.status === "Archived" && React.createElement(Restore, null),
|
|
28
|
+
React.createElement(Versions, null),
|
|
29
|
+
doc.type === "File" && React.createElement(Download, null))),
|
|
30
|
+
React.createElement("div", { className: "flex items-start gap-3" },
|
|
31
|
+
React.createElement("div", { className: "flex-shrink-0 text-slate-500 text-xl" }, meta.getIcon(doc)),
|
|
32
|
+
React.createElement("div", { className: "flex-1 min-w-0" },
|
|
33
|
+
React.createElement("h3", { className: "font-semibold text-slate-900 truncate group-hover:text-blue-600 transition-colors" }, doc.name),
|
|
34
|
+
React.createElement("div", { className: "mt-2 flex flex-wrap items-center! gap-2 text-xs text-slate-500" },
|
|
35
|
+
React.createElement(MentionList, { contacts: doc.createdBy ? [doc.createdBy] : [], placeholder: "no Data", canEdit: false }),
|
|
36
|
+
React.createElement("div", null,
|
|
37
|
+
React.createElement(DocumentDataIconBar, { id: doc.id }))),
|
|
38
|
+
React.createElement(TagView, { id: doc.id, tags: doc.tags, items: store.items, editable: user.can("edit", doc.p, { asset: "Tags" }) && !doc.readonly }))))))),
|
|
39
|
+
React.createElement("div", { className: "flex justify-end mt-4" },
|
|
40
|
+
React.createElement(Pagination, { current: currentPage, total: total, pageSize: 20, onChange: (newPage, newPageSize) => {
|
|
41
|
+
var _a;
|
|
42
|
+
setCurrentPage(newPage);
|
|
43
|
+
(_a = props.onPageChange) === null || _a === void 0 ? void 0 : _a.call(props, newPage, newPageSize);
|
|
44
|
+
} })))) : (React.createElement("div", { className: "text-center py-12" },
|
|
33
45
|
React.createElement("div", { className: "mb-4" },
|
|
34
46
|
React.createElement(FAIcon, { icon: faFolderOpenSolid, className: "text-slate-300 text-6xl" })),
|
|
35
47
|
React.createElement("h3", { className: "text-lg font-semibold text-slate-900 mb-2" }, "No documents found"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/modules/my-document/SectionTemplate/GridUI/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/modules/my-document/SectionTemplate/GridUI/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { useEffect, useRef, useState } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* 用于实时检测某个元素宽度,并返回当前宽度和 ref。
|
|
4
|
+
* @param threshold 阈值宽度(可选)
|
|
5
|
+
* @returns [ref, width, isBelowThreshold]
|
|
6
|
+
*/
|
|
7
|
+
export function useElementWidth(threshold) {
|
|
8
|
+
const ref = useRef(null);
|
|
9
|
+
const [width, setWidth] = useState(0);
|
|
10
|
+
const [isBelow, setIsBelow] = useState(false);
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
const node = ref.current;
|
|
13
|
+
if (!node)
|
|
14
|
+
return;
|
|
15
|
+
const handleResize = (entries) => {
|
|
16
|
+
const w = entries[0].contentRect.width;
|
|
17
|
+
setWidth(w);
|
|
18
|
+
if (typeof threshold === "number")
|
|
19
|
+
setIsBelow(w < threshold);
|
|
20
|
+
};
|
|
21
|
+
const observer = new window.ResizeObserver(handleResize);
|
|
22
|
+
observer.observe(node);
|
|
23
|
+
// 初始化
|
|
24
|
+
handleResize([{ contentRect: node.getBoundingClientRect() }]);
|
|
25
|
+
return () => observer.disconnect();
|
|
26
|
+
}, [threshold]);
|
|
27
|
+
return [ref, width, isBelow];
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=useElementWidth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useElementWidth.js","sourceRoot":"","sources":["../../../../../src/modules/my-document/SectionTemplate/GridUI/useElementWidth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEpD;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC9B,SAAkB;IAElB,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACzC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9C,SAAS,CAAC,GAAG,EAAE;QACd,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC;QACzB,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,YAAY,GAAG,CAAC,OAA8B,EAAE,EAAE;YACvD,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC;YACvC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACZ,IAAI,OAAO,SAAS,KAAK,QAAQ;gBAAE,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;QAC9D,CAAC,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QACzD,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvB,MAAM;QACN,YAAY,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,qBAAqB,EAAE,EAAyB,CAAC,CAAC,CAAC;QACrF,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IACpC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -6,32 +6,24 @@ import { Scrollbars } from "react-custom-scrollbars-2";
|
|
|
6
6
|
import { DocumentViewProvider } from "./DocumentViewContext";
|
|
7
7
|
import AsideContent from "@voplus/morpho-ui/es/components/layout/AsideContent";
|
|
8
8
|
import NewDocumentForm from "@voplus/morpho-document/es/components/NewDocumentForm";
|
|
9
|
-
import
|
|
10
|
-
import DocumentSection from "./DocumentSection";
|
|
11
|
-
import FilterTabsBar from "./FilterTabsBar";
|
|
9
|
+
import DocumentTableGroup from "./DocumentTableGroup";
|
|
12
10
|
import Header from "./Header";
|
|
13
11
|
const MyDocumentPage = (props) => {
|
|
14
12
|
const [asideContext] = useState(AsideContent.createContext());
|
|
15
|
-
const [active, setActive] = useState("pinned");
|
|
16
13
|
const layout = useLayout();
|
|
17
14
|
return observe(() => (React.createElement(AsideContent, { context: asideContext },
|
|
18
15
|
React.createElement(DocumentViewProvider, null,
|
|
19
16
|
React.createElement("div", { className: "inset-0 flex flex-col bg-slate-50" },
|
|
20
|
-
React.createElement(Header,
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
React.createElement(Header, { onAdd: () => {
|
|
18
|
+
asideContext.openAside(React.createElement(NewDocumentForm, { parentId: props.parentId }), {
|
|
19
|
+
span: 10,
|
|
20
|
+
});
|
|
21
|
+
} }),
|
|
22
|
+
React.createElement("div", { className: "flex-1 p-5 bg-slate-50" },
|
|
23
23
|
React.createElement(Scrollbars, { autoHide: true },
|
|
24
|
-
|
|
24
|
+
React.createElement(DocumentTableGroup, { id: props.parentId, onClickItem: (id) => {
|
|
25
25
|
layout.history.push(generatePath(props.path, { active: id }));
|
|
26
|
-
} }))
|
|
27
|
-
active === "personal" && (React.createElement(DocumentSection, { id: props.parentId, onClickItem: (id) => {
|
|
28
|
-
layout.history.push(generatePath(props.path, { active: id }));
|
|
29
|
-
} })))))))));
|
|
30
|
-
function handleAdd() {
|
|
31
|
-
asideContext.openAside(React.createElement(NewDocumentForm, { parentId: props.parentId }), {
|
|
32
|
-
span: 10,
|
|
33
|
-
});
|
|
34
|
-
}
|
|
26
|
+
} }))))))));
|
|
35
27
|
};
|
|
36
28
|
export default MyDocumentPage;
|
|
37
29
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/my-document/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/my-document/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAA0B,MAAM,uBAAuB,CAAC;AACrF,OAAO,YAAY,MAAM,qDAAqD,CAAC;AAC/E,OAAO,eAAe,MAAM,uDAAuD,CAAC;AACpF,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,MAAM,cAAc,GAAG,CAAC,KAAyC,EAAE,EAAE;IACpE,MAAM,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,CAAC;IAE9D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,CACpB,oBAAC,YAAY,IAAC,OAAO,EAAE,YAAY;QAClC,oBAAC,oBAAoB;YACpB,6BAAK,SAAS,EAAC,mCAAmC;gBAEjD,oBAAC,MAAM,IACN,KAAK,EAAE,GAAG,EAAE;wBACX,YAAY,CAAC,SAAS,CACrB,oBAAC,eAAe,IACf,QAAQ,EAAE,KAAK,CAAC,QAAQ,GAMvB,EACF;4BACC,IAAI,EAAE,EAAE;yBACR,CACD,CAAC;oBACH,CAAC,GACA;gBAEF,6BAAK,SAAS,EAAC,wBAAwB;oBACtC,oBAAC,UAAU,IAAC,QAAQ;wBACnB,oBAAC,kBAAkB,IAClB,EAAE,EAAE,KAAK,CAAC,QAAQ,EAClB,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE;gCACnB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;4BAC/D,CAAC,GACA,CACU,CACR,CACD,CACgB,CACT,CACf,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 使用在 MyDocument 中的全新 UI 设计
|
|
3
|
-
* */
|
|
4
|
-
import React from "react";
|
|
5
|
-
import { useAutoUpdateListData, useDocumentListEffect, } from "@voplus/morpho-document-core";
|
|
6
|
-
import { ListDataContext, useCreateListDataState } from "@voplus/morpho-ui/es/data";
|
|
7
|
-
import { observe, useAsideContentContext, useRenderOnChange } from "@voplus/morpho-ui";
|
|
8
|
-
import DocumentPropertiesView from "@voplus/morpho-document-core/es/components/DocumentPropertiesView";
|
|
9
|
-
import DocumentViewClass from "../SectionTemplate/DocumentViewClass";
|
|
10
|
-
const DocumentSection = (props) => {
|
|
11
|
-
const { id } = props;
|
|
12
|
-
const asideContext = useAsideContentContext();
|
|
13
|
-
const list = useCreateListDataState({
|
|
14
|
-
filterDefaults: {
|
|
15
|
-
includes: "tags,permissions,createdby,folder",
|
|
16
|
-
filters: [{ c: "ParentNodeId", o: "=", l: "And", v1: id }],
|
|
17
|
-
page: { Page: 1, PageSize: 300 },
|
|
18
|
-
},
|
|
19
|
-
}, [id]);
|
|
20
|
-
/** 如果 list.filters.options变更了就重渲染,使下一行的useDocumentListEffect 可以接收新参数*/
|
|
21
|
-
useRenderOnChange(() => [list.filters.options, id]);
|
|
22
|
-
/** 把ListDataState传给useDocumentListEffect,使之可以自動更新loading, hasmore. */
|
|
23
|
-
useDocumentListEffect(list, (result) => list.union(result), list.filters.options);
|
|
24
|
-
/** useOnNewDocument, useOnDeleteDocument的sugar syntax 自動更新list. */
|
|
25
|
-
useAutoUpdateListData(list, (d) => d.parentId === id);
|
|
26
|
-
return observe(() => (React.createElement(ListDataContext.Provider, { value: list },
|
|
27
|
-
React.createElement(DocumentViewClass, { title: "Personal Documents", loading: list.loading, list: [...list.data], onSearch: (val) => list.triggerSearch(val), onItemClick: onItemClick }))));
|
|
28
|
-
function onItemClick(id) {
|
|
29
|
-
var _a;
|
|
30
|
-
asideContext === null || asideContext === void 0 ? void 0 : asideContext.openAside(React.createElement(DocumentPropertiesView, { id: id }), { span: 10 });
|
|
31
|
-
(_a = props.onClickItem) === null || _a === void 0 ? void 0 : _a.call(props, id);
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
export default DocumentSection;
|
|
35
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/my-document/DocumentSection/index.tsx"],"names":[],"mappings":"AAAA;;KAEK;AAEL,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAEN,qBAAqB,EACrB,qBAAqB,GACrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACpF,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,sBAAsB,MAAM,mEAAmE,CAAC;AACvG,OAAO,iBAAiB,MAAM,sCAAsC,CAAC;AAErE,MAAM,eAAe,GAAG,CAAC,KAAyD,EAAE,EAAE;IACrF,MAAM,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC;IAErB,MAAM,YAAY,GAAG,sBAAsB,EAAE,CAAC;IAE9C,MAAM,IAAI,GAAG,sBAAsB,CAClC;QACC,cAAc,EAAE;YACf,QAAQ,EAAE,mCAAmC;YAC7C,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;YAC1D,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE;SAChC;KACD,EACD,CAAC,EAAE,CAAC,CACJ,CAAC;IAEF,uEAAuE;IACvE,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAEpD,sEAAsE;IACtE,qBAAqB,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAElF,mEAAmE;IACnE,qBAAqB,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAC;IAEtD,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,CACpB,oBAAC,eAAe,CAAC,QAAQ,IAAC,KAAK,EAAE,IAAI;QACpC,oBAAC,iBAAiB,IACjB,KAAK,EAAC,oBAAoB,EAC1B,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EACpB,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAC1C,WAAW,EAAE,WAAW,GACvB,CACwB,CAC3B,CAAC,CAAC;IAEH,SAAS,WAAW,CAAC,EAAU;;QAC9B,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,eAAe,CAAC"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 使用在 MyDocument 中的全新 UI 设计
|
|
3
|
-
* */
|
|
4
|
-
import React, { useState } from "react";
|
|
5
|
-
import { State } from "../MyPinned/state";
|
|
6
|
-
import { useOnDeleteDocument, useDocumentListEffect, } from "@voplus/morpho-document-core";
|
|
7
|
-
import { useOnPinDocument, useOnUnPinDocument, useOnFlagChange, } from "@voplus/morpho-document-core/es/data/DocumentStore/hooks/pin-events";
|
|
8
|
-
import { faExclamationCircleSolid, faStarSolid } from "@voplus/morpho-ui/es/faIcons";
|
|
9
|
-
import { observe, useAsideContentContext, useRenderOnChange } from "@voplus/morpho-ui";
|
|
10
|
-
import { ListDataContext, useCreateListDataState } from "@voplus/morpho-ui/es/data/ListDataContext";
|
|
11
|
-
import DocumentPropertiesView from "@voplus/morpho-document-core/es/components/DocumentPropertiesView";
|
|
12
|
-
import PinnedClass from "../../../my-document/SectionTemplate/DocumentViewClass";
|
|
13
|
-
const PinnedSection = (props) => {
|
|
14
|
-
const [state] = useState(new State());
|
|
15
|
-
const asideContext = useAsideContentContext();
|
|
16
|
-
const list = useCreateListDataState({
|
|
17
|
-
filterDefaults: {
|
|
18
|
-
includes: "tags,createdby,folder",
|
|
19
|
-
filters: [{ c: "Pin", l: "And", o: "=", v1: "True" }],
|
|
20
|
-
page: { Page: 1, PageSize: 500 },
|
|
21
|
-
},
|
|
22
|
-
}, []);
|
|
23
|
-
/** 如果 list.filters.options变更了就重渲染,使下一行的useTaskListEffect 可以接收新参数*/
|
|
24
|
-
useRenderOnChange(() => list.filters.options);
|
|
25
|
-
/** 把ListDataState传给useTaskListEffect,使之可以自動更新loading, hasmore. */
|
|
26
|
-
useDocumentListEffect(list, (result, total) => {
|
|
27
|
-
list.union(result);
|
|
28
|
-
state.update(result, "new", true);
|
|
29
|
-
}, { ...list.filters.options, Total: true });
|
|
30
|
-
useOnPinDocument((s, d) => state.update([d], "new"));
|
|
31
|
-
useOnUnPinDocument((s, d) => state.update([d], "del"));
|
|
32
|
-
useOnFlagChange((s, d) => state.onChangeFlag(d));
|
|
33
|
-
useOnDeleteDocument((s, d) => state.update([d], "del"));
|
|
34
|
-
return observe(() => (React.createElement(ListDataContext.Provider, { value: list },
|
|
35
|
-
React.createElement(PinnedClass, { icon: faStarSolid, title: "Starred", loading: list.loading, list: state.starredList, onSearch: (val) => list.triggerSearch(val), onItemClick: onItemClick }),
|
|
36
|
-
React.createElement(PinnedClass, { icon: faExclamationCircleSolid, title: "Urgent", search: false, loading: list.loading, list: state.urgentList, onSearch: (val) => list.triggerSearch(val), onItemClick: onItemClick }),
|
|
37
|
-
React.createElement(PinnedClass, { title: "Others", search: false, loading: list.loading, list: state.othersList, onSearch: (val) => list.triggerSearch(val), onItemClick: onItemClick }))));
|
|
38
|
-
function onItemClick(id) {
|
|
39
|
-
var _a;
|
|
40
|
-
asideContext === null || asideContext === void 0 ? void 0 : asideContext.openAside(React.createElement(DocumentPropertiesView, { id: id }), { span: 10 });
|
|
41
|
-
(_a = props.onClickItem) === null || _a === void 0 ? void 0 : _a.call(props, id);
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
export default PinnedSection;
|
|
45
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/modules/pin/components/PinnedSection/index.tsx"],"names":[],"mappings":"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"}
|