@webiny/app-aco 6.4.5 → 6.6.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/Actions/DeleteFolder/DeleteFolder.js +1 -1
- package/components/Actions/DeleteFolder/DeleteFolder.js.map +1 -1
- package/components/AdvancedSearch/domain/Filter.d.ts +1 -1
- package/components/AdvancedSearch/domain/FilterRepositoryFactory.d.ts +2 -2
- package/components/AdvancedSearch/domain/FilterRepositoryFactory.js.map +1 -1
- package/components/AdvancedSearch/gateways/FiltersGraphQLGateway.d.ts +2 -2
- package/components/AdvancedSearch/gateways/FiltersGraphQLGateway.js +9 -10
- package/components/AdvancedSearch/gateways/FiltersGraphQLGateway.js.map +1 -1
- package/components/AdvancedSearch/gateways/filters.gql.d.ts +5 -5
- package/components/AdvancedSearch/gateways/filters.gql.js +5 -6
- package/components/AdvancedSearch/gateways/filters.gql.js.map +1 -1
- package/components/AdvancedSearch/useFilterRepository.js +7 -2
- package/components/AdvancedSearch/useFilterRepository.js.map +1 -1
- package/components/Table/cells/CellAuthor.d.ts +2 -0
- package/components/Table/cells/CellAuthor.js +10 -0
- package/components/Table/cells/CellAuthor.js.map +1 -0
- package/components/Table/cells/CellCreated.d.ts +2 -0
- package/components/Table/cells/CellCreated.js +13 -0
- package/components/Table/cells/CellCreated.js.map +1 -0
- package/components/Table/cells/CellModified.d.ts +2 -0
- package/components/Table/cells/CellModified.js +13 -0
- package/components/Table/cells/CellModified.js.map +1 -0
- package/components/Table/cells/index.d.ts +3 -0
- package/components/Table/cells/index.js +3 -0
- package/components/Table/createTableData.d.ts +7 -5
- package/components/Table/createTableData.js +22 -7
- package/components/Table/createTableData.js.map +1 -1
- package/components/Table/index.d.ts +2 -2
- package/components/Table/index.js +2 -2
- package/components/index.d.ts +0 -1
- package/components/index.js +0 -1
- package/config/AcoConfig.d.ts +8 -12
- package/config/advanced-search/FieldRenderer.d.ts +3 -1
- package/config/folder/Action.d.ts +1 -1
- package/config/folder/index.d.ts +3 -2
- package/config/index.d.ts +0 -1
- package/config/index.js +0 -1
- package/config/record/Action.d.ts +1 -1
- package/config/record/index.d.ts +1 -1
- package/config/table/Column.d.ts +8 -39
- package/config/table/Column.js +4 -67
- package/config/table/Column.js.map +1 -1
- package/config/table/Sorting.d.ts +2 -11
- package/config/table/Sorting.js +1 -28
- package/config/table/index.d.ts +5 -9
- package/contexts/index.d.ts +0 -3
- package/contexts/index.js +0 -3
- package/dialogs/DialogSetPermissions/graphql.d.ts +1 -1
- package/dialogs/DialogSetPermissions/graphql.js +1 -2
- package/dialogs/DialogSetPermissions/graphql.js.map +1 -1
- package/dialogs/useCreateDialog.js +2 -2
- package/dialogs/useCreateDialog.js.map +1 -1
- package/dialogs/useEditDialog.js +2 -2
- package/dialogs/useEditDialog.js.map +1 -1
- package/dialogs/useSetPermissionsDialog.js +16 -4
- package/dialogs/useSetPermissionsDialog.js.map +1 -1
- package/domain/folder/Folder.d.ts +2 -1
- package/domain/folder/Folder.js.map +1 -1
- package/features/folders/createFolder/CreateFolderGqlGateway.d.ts +3 -3
- package/features/folders/createFolder/CreateFolderGqlGateway.js +15 -16
- package/features/folders/createFolder/CreateFolderGqlGateway.js.map +1 -1
- package/features/folders/deleteFolder/DeleteFolderGqlGateway.d.ts +3 -3
- package/features/folders/deleteFolder/DeleteFolderGqlGateway.js +5 -6
- package/features/folders/deleteFolder/DeleteFolderGqlGateway.js.map +1 -1
- package/features/folders/folderModelProvider/FolderModelProvider.js +29 -31
- package/features/folders/folderModelProvider/FolderModelProvider.js.map +1 -1
- package/features/folders/folderModelProvider/GetFolderModelGqlGateway.d.ts +3 -3
- package/features/folders/folderModelProvider/GetFolderModelGqlGateway.js +5 -7
- package/features/folders/folderModelProvider/GetFolderModelGqlGateway.js.map +1 -1
- package/features/folders/getFolder/GetFolderGqlGateway.d.ts +3 -3
- package/features/folders/getFolder/GetFolderGqlGateway.js +5 -7
- package/features/folders/getFolder/GetFolderGqlGateway.js.map +1 -1
- package/features/folders/getFolderExtensionsFields/GetFolderExtensionsFieldsUseCase.d.ts +3 -3
- package/features/folders/getFolderExtensionsFields/useFolderExtensionsFields.d.ts +3 -3
- package/features/folders/listFolders/ListFoldersGqlGateway.d.ts +1 -1
- package/features/folders/listFolders/ListFoldersGqlGateway.js +1 -2
- package/features/folders/listFolders/ListFoldersGqlGateway.js.map +1 -1
- package/features/folders/listFolders/useListFolders.d.ts +1 -1
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsGqlGateway.d.ts +3 -3
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsGqlGateway.js +5 -7
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsGqlGateway.js.map +1 -1
- package/features/folders/listFoldersByParentIds/useListFoldersByParentIds.d.ts +2 -2
- package/features/folders/loadFolderHierarchy/useLoadFolderHierarchy.d.ts +2 -2
- package/features/folders/updateFolder/UpdateFolderGqlGateway.d.ts +3 -3
- package/features/folders/updateFolder/UpdateFolderGqlGateway.js +5 -6
- package/features/folders/updateFolder/UpdateFolderGqlGateway.js.map +1 -1
- package/hooks/index.d.ts +0 -6
- package/hooks/index.js +0 -6
- package/index.d.ts +3 -2
- package/index.js +2 -2
- package/package.json +16 -23
- package/presentation/folderTree/FolderTreePresenter.js +8 -8
- package/presentation/folderTree/FolderTreePresenter.js.map +1 -1
- package/presentation/folderTree/FolderTreePresenter.test.js +4 -2
- package/presentation/folderTree/FolderTreePresenter.test.js.map +1 -1
- package/table.types.d.ts +2 -9
- package/types.d.ts +5 -26
- package/types.js.map +1 -1
- package/components/Extensions/Extensions.d.ts +0 -2
- package/components/Extensions/Extensions.js +0 -30
- package/components/Extensions/Extensions.js.map +0 -1
- package/components/Extensions/index.d.ts +0 -1
- package/components/Extensions/index.js +0 -1
- package/config/folder/createFolderFieldDecoratorFactory.d.ts +0 -13
- package/config/folder/createFolderFieldDecoratorFactory.js +0 -17
- package/config/folder/createFolderFieldDecoratorFactory.js.map +0 -1
- package/config/table/Sorting.js.map +0 -1
- package/contexts/acoList.d.ts +0 -49
- package/contexts/acoList.js +0 -303
- package/contexts/acoList.js.map +0 -1
- package/contexts/app.d.ts +0 -33
- package/contexts/app.js +0 -47
- package/contexts/app.js.map +0 -1
- package/contexts/folders.d.ts +0 -12
- package/contexts/folders.js +0 -32
- package/contexts/folders.js.map +0 -1
- package/contexts/navigateFolder.d.ts +0 -17
- package/contexts/navigateFolder.js +0 -54
- package/contexts/navigateFolder.js.map +0 -1
- package/contexts/records.d.ts +0 -31
- package/contexts/records.js +0 -316
- package/contexts/records.js.map +0 -1
- package/exports/admin/aco.d.ts +0 -2
- package/exports/admin/aco.js +0 -2
- package/graphql/app.gql.d.ts +0 -17
- package/graphql/app.gql.js +0 -22
- package/graphql/app.gql.js.map +0 -1
- package/graphql/records/common.d.ts +0 -4
- package/graphql/records/common.js +0 -57
- package/graphql/records/common.js.map +0 -1
- package/graphql/records/getRecord.d.ts +0 -2
- package/graphql/records/getRecord.js +0 -5
- package/graphql/records/getRecord.js.map +0 -1
- package/graphql/records/listRecords.d.ts +0 -2
- package/graphql/records/listRecords.js +0 -26
- package/graphql/records/listRecords.js.map +0 -1
- package/graphql/records/moveRecord.d.ts +0 -2
- package/graphql/records/moveRecord.js +0 -16
- package/graphql/records/moveRecord.js.map +0 -1
- package/graphql/records/types.d.ts +0 -108
- package/graphql/records/types.js +0 -0
- package/graphql/records.gql.d.ts +0 -3
- package/graphql/records.gql.js +0 -3
- package/handlers.d.ts +0 -23
- package/handlers.js +0 -22
- package/handlers.js.map +0 -1
- package/hooks/useAcoApp.d.ts +0 -2
- package/hooks/useAcoApp.js +0 -16
- package/hooks/useAcoApp.js.map +0 -1
- package/hooks/useAcoList.d.ts +0 -3
- package/hooks/useAcoList.js +0 -10
- package/hooks/useAcoList.js.map +0 -1
- package/hooks/useFolderModel.d.ts +0 -2
- package/hooks/useFolderModel.js +0 -16
- package/hooks/useFolderModel.js.map +0 -1
- package/hooks/useFoldersType.d.ts +0 -1
- package/hooks/useFoldersType.js +0 -12
- package/hooks/useFoldersType.js.map +0 -1
- package/hooks/useNavigateFolder.d.ts +0 -2
- package/hooks/useNavigateFolder.js +0 -10
- package/hooks/useNavigateFolder.js.map +0 -1
- package/hooks/useRecords.d.ts +0 -62
- package/hooks/useRecords.js +0 -64
- package/hooks/useRecords.js.map +0 -1
- package/hooks/useTags.d.ts +0 -14
- package/hooks/useTags.js +0 -27
- package/hooks/useTags.js.map +0 -1
- package/sorting.d.ts +0 -9
- package/sorting.js +0 -31
- package/sorting.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config/table/Sorting.js","sources":["../../../src/config/table/Sorting.tsx"],"sourcesContent":["import React from \"react\";\nimport { Property, useIdGenerator } from \"@webiny/react-properties\";\n\nexport interface SortingConfig {\n field: string;\n order: \"asc\" | \"desc\";\n}\n\nexport interface SortingProps {\n name: string;\n field: string;\n order?: \"asc\" | \"desc\";\n}\n\nexport const Sorting = ({ name, field, order = \"desc\" }: SortingProps) => {\n const getId = useIdGenerator(\"tableSorting\");\n\n return (\n <Property id=\"table\" name={\"table\"}>\n <Property id={getId(name)} name={\"sorting\"} array={true}>\n <Property id={getId(name, \"name\")} name={\"name\"} value={name} />\n <Property id={getId(name, \"field\")} name={\"field\"} value={field} />\n <Property id={getId(name, \"order\")} name={\"order\"} value={order} />\n </Property>\n </Property>\n );\n};\n"],"names":["Sorting","name","field","order","getId","useIdGenerator","Property"],"mappings":";;AAcO,MAAMA,UAAU,CAAC,EAAEC,IAAI,EAAEC,KAAK,EAAEC,QAAQ,MAAM,EAAgB;IACjE,MAAMC,QAAQC,eAAe;IAE7B,OAAO,WAAP,GACI,oBAACC,UAAQA;QAAC,IAAG;QAAQ,MAAM;qBACvB,oBAACA,UAAQA;QAAC,IAAIF,MAAMH;QAAO,MAAM;QAAW,OAAO;qBAC/C,oBAACK,UAAQA;QAAC,IAAIF,MAAMH,MAAM;QAAS,MAAM;QAAQ,OAAOA;sBACxD,oBAACK,UAAQA;QAAC,IAAIF,MAAMH,MAAM;QAAU,MAAM;QAAS,OAAOC;sBAC1D,oBAACI,UAAQA;QAAC,IAAIF,MAAMH,MAAM;QAAU,MAAM;QAAS,OAAOE;;AAI1E"}
|
package/contexts/acoList.d.ts
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import type { FolderDto } from "../domain/folder/FolderDto.js";
|
|
3
|
-
import type { GenericSearchData, ListMeta, ListSearchRecordsSort } from "../types.js";
|
|
4
|
-
export interface AcoListContextData<T> {
|
|
5
|
-
currentFolder?: FolderDto;
|
|
6
|
-
folders: FolderDto[];
|
|
7
|
-
hideFilters: () => void;
|
|
8
|
-
isListLoading: boolean;
|
|
9
|
-
isListLoadingMore: boolean;
|
|
10
|
-
isSearch: boolean;
|
|
11
|
-
listMoreRecords: () => void;
|
|
12
|
-
listTitle?: string;
|
|
13
|
-
meta: ListMeta;
|
|
14
|
-
records: T[];
|
|
15
|
-
selected: T[];
|
|
16
|
-
setFilters: (data: Record<string, any>) => void;
|
|
17
|
-
setListSort: (state: ListSearchRecordsSort) => void;
|
|
18
|
-
setSearchQuery: (query: string) => void;
|
|
19
|
-
setSelected: (selected: T[]) => void;
|
|
20
|
-
showFilters: () => void;
|
|
21
|
-
showingFilters: boolean;
|
|
22
|
-
showingSelectAll: boolean;
|
|
23
|
-
searchQuery: string;
|
|
24
|
-
isSelectedAll: boolean;
|
|
25
|
-
selectAll: () => void;
|
|
26
|
-
unselectAll: () => void;
|
|
27
|
-
getWhere: () => Record<string, any>;
|
|
28
|
-
refresh: () => Promise<void>;
|
|
29
|
-
}
|
|
30
|
-
export declare const AcoListContext: React.Context<AcoListContextData<GenericSearchData> | undefined>;
|
|
31
|
-
export interface State<T> {
|
|
32
|
-
after?: string;
|
|
33
|
-
filters?: Record<string, any>;
|
|
34
|
-
folderId?: string;
|
|
35
|
-
isSearch: boolean;
|
|
36
|
-
limit: number;
|
|
37
|
-
listSort: ListSearchRecordsSort;
|
|
38
|
-
searchQuery: string;
|
|
39
|
-
selected: T[];
|
|
40
|
-
showingFilters: boolean;
|
|
41
|
-
showingSelectAll: boolean;
|
|
42
|
-
isSelectedAll: boolean;
|
|
43
|
-
}
|
|
44
|
-
export interface AcoListProviderProps {
|
|
45
|
-
children: React.ReactNode;
|
|
46
|
-
own?: boolean;
|
|
47
|
-
titleFieldId: string | null;
|
|
48
|
-
}
|
|
49
|
-
export declare const AcoListProvider: ({ children, ...props }: AcoListProviderProps) => React.JSX.Element;
|
package/contexts/acoList.js
DELETED
|
@@ -1,303 +0,0 @@
|
|
|
1
|
-
import react, { useCallback, useContext, useEffect, useMemo } from "react";
|
|
2
|
-
import dot_prop_immutable from "dot-prop-immutable";
|
|
3
|
-
import pick from "lodash/pick.js";
|
|
4
|
-
import { useSecurity, useStateIfMounted } from "@webiny/app-admin";
|
|
5
|
-
import { useGetDescendantFolders } from "../features/folders/getDescendantFolders/index.js";
|
|
6
|
-
import { useListFoldersByParentIds } from "../features/folders/listFoldersByParentIds/index.js";
|
|
7
|
-
import { useLoadFolderHierarchy } from "../features/folders/loadFolderHierarchy/index.js";
|
|
8
|
-
import { useAcoApp, useNavigateFolder } from "../hooks/index.js";
|
|
9
|
-
import { FoldersContext } from "./folders.js";
|
|
10
|
-
import { SearchRecordsContext } from "./records.js";
|
|
11
|
-
import { sortTableItems, validateOrGetDefaultDbSort } from "../sorting.js";
|
|
12
|
-
import { ROOT_FOLDER } from "../constants.js";
|
|
13
|
-
const AcoListContext = /*#__PURE__*/ react.createContext(void 0);
|
|
14
|
-
const initializeAcoListState = ()=>({
|
|
15
|
-
after: void 0,
|
|
16
|
-
filters: void 0,
|
|
17
|
-
folderId: void 0,
|
|
18
|
-
isSearch: false,
|
|
19
|
-
limit: 50,
|
|
20
|
-
listSort: [],
|
|
21
|
-
searchQuery: "",
|
|
22
|
-
selected: [],
|
|
23
|
-
showingFilters: false,
|
|
24
|
-
showingSelectAll: false,
|
|
25
|
-
isSelectedAll: false
|
|
26
|
-
});
|
|
27
|
-
const getCurrentFolderList = (folders, currentFolderId)=>{
|
|
28
|
-
if (!folders) return [];
|
|
29
|
-
if (!currentFolderId || currentFolderId.toLowerCase() === ROOT_FOLDER) return folders.filter((folder)=>!folder.parentId || folder.parentId.toLowerCase() === ROOT_FOLDER);
|
|
30
|
-
return folders.filter((folder)=>folder.parentId === currentFolderId);
|
|
31
|
-
};
|
|
32
|
-
const getCurrentRecordList = (records, folderIdPath, currentFolderId)=>{
|
|
33
|
-
if (!records) return [];
|
|
34
|
-
if (!currentFolderId) return records;
|
|
35
|
-
return records.filter((record)=>dot_prop_immutable.get(record, folderIdPath) === currentFolderId);
|
|
36
|
-
};
|
|
37
|
-
const AcoListProvider = ({ children, ...props })=>{
|
|
38
|
-
const { identity } = useSecurity();
|
|
39
|
-
const { currentFolderId } = useNavigateFolder();
|
|
40
|
-
const { folderIdPath, folderIdInPath } = useAcoApp();
|
|
41
|
-
const { folders: originalFolders, loadFolderHierarchy } = useLoadFolderHierarchy();
|
|
42
|
-
const { getDescendantFolders } = useGetDescendantFolders();
|
|
43
|
-
const { listFoldersByParentIds } = useListFoldersByParentIds();
|
|
44
|
-
const folderContext = useContext(FoldersContext);
|
|
45
|
-
const searchContext = useContext(SearchRecordsContext);
|
|
46
|
-
if (!folderContext || !searchContext) throw new Error("useAcoList must be used within a ACOProvider");
|
|
47
|
-
const [folders, setFolders] = useStateIfMounted([]);
|
|
48
|
-
const [records, setRecords] = useStateIfMounted([]);
|
|
49
|
-
const [listTitle, setListTitle] = useStateIfMounted(void 0);
|
|
50
|
-
const [state, setState] = useStateIfMounted(initializeAcoListState());
|
|
51
|
-
const { records: originalRecords, loading: recordsLoading, listRecords, meta } = searchContext;
|
|
52
|
-
useEffect(()=>{
|
|
53
|
-
if (0 === folders.length) loadFolderHierarchy(currentFolderId);
|
|
54
|
-
else listFoldersByParentIds([
|
|
55
|
-
currentFolderId
|
|
56
|
-
]);
|
|
57
|
-
setState((state)=>({
|
|
58
|
-
...state,
|
|
59
|
-
after: void 0,
|
|
60
|
-
filters: void 0,
|
|
61
|
-
folderId: currentFolderId,
|
|
62
|
-
isSearch: false,
|
|
63
|
-
searchQuery: "",
|
|
64
|
-
selected: [],
|
|
65
|
-
showingFilters: false,
|
|
66
|
-
showingSelectAll: false,
|
|
67
|
-
isSelectedAll: false
|
|
68
|
-
}));
|
|
69
|
-
}, [
|
|
70
|
-
currentFolderId
|
|
71
|
-
]);
|
|
72
|
-
useEffect(()=>{
|
|
73
|
-
const currentFolder = originalFolders?.find((folder)=>folder.id === (state.folderId || ROOT_FOLDER));
|
|
74
|
-
setListTitle(currentFolder?.title);
|
|
75
|
-
if (state.isSearch) return void setFolders([]);
|
|
76
|
-
const subFolders = getCurrentFolderList(originalFolders, state.folderId);
|
|
77
|
-
setFolders(()=>sortTableItems(subFolders, state.listSort));
|
|
78
|
-
}, [
|
|
79
|
-
originalFolders,
|
|
80
|
-
state.folderId,
|
|
81
|
-
state.isSearch
|
|
82
|
-
]);
|
|
83
|
-
useEffect(()=>{
|
|
84
|
-
if (state.isSearch) return void setRecords(originalRecords);
|
|
85
|
-
const subRecords = getCurrentRecordList(originalRecords, folderIdPath, state.folderId);
|
|
86
|
-
setRecords(subRecords);
|
|
87
|
-
}, [
|
|
88
|
-
originalRecords,
|
|
89
|
-
state.folderId,
|
|
90
|
-
state.isSearch
|
|
91
|
-
]);
|
|
92
|
-
useEffect(()=>{
|
|
93
|
-
setFolders((prev)=>{
|
|
94
|
-
const titleField = props?.titleFieldId || "id";
|
|
95
|
-
return sortTableItems(prev, state.listSort, {
|
|
96
|
-
[titleField]: "title"
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
}, [
|
|
100
|
-
state.listSort
|
|
101
|
-
]);
|
|
102
|
-
const listMoreRecords = useCallback(()=>{
|
|
103
|
-
const { hasMoreItems, cursor } = meta;
|
|
104
|
-
if (hasMoreItems && cursor) setState((state)=>({
|
|
105
|
-
...state,
|
|
106
|
-
after: cursor
|
|
107
|
-
}));
|
|
108
|
-
}, [
|
|
109
|
-
meta
|
|
110
|
-
]);
|
|
111
|
-
const getWhere = useCallback(()=>{
|
|
112
|
-
let where = {};
|
|
113
|
-
if (!state.folderId) return where;
|
|
114
|
-
if (state.folderId !== ROOT_FOLDER) {
|
|
115
|
-
const descendantFolderIds = getDescendantFolders(state.folderId).map((folder)=>folder.id);
|
|
116
|
-
where = dot_prop_immutable.set({}, folderIdInPath, descendantFolderIds);
|
|
117
|
-
}
|
|
118
|
-
return {
|
|
119
|
-
createdBy: props.own ? identity.id : void 0,
|
|
120
|
-
...state.filters,
|
|
121
|
-
...where
|
|
122
|
-
};
|
|
123
|
-
}, [
|
|
124
|
-
folders,
|
|
125
|
-
state.folderId,
|
|
126
|
-
state.filters,
|
|
127
|
-
props.own,
|
|
128
|
-
identity
|
|
129
|
-
]);
|
|
130
|
-
const buildListParams = useCallback(()=>{
|
|
131
|
-
if (!state.folderId) return null;
|
|
132
|
-
const isSearch = Boolean(state.searchQuery || state.filters && Object.values(state.filters).filter(Boolean).length);
|
|
133
|
-
let where = dot_prop_immutable.set({}, folderIdPath, state.folderId);
|
|
134
|
-
if (isSearch) where = getWhere();
|
|
135
|
-
return {
|
|
136
|
-
params: {
|
|
137
|
-
limit: state.limit,
|
|
138
|
-
sort: validateOrGetDefaultDbSort(state.listSort),
|
|
139
|
-
search: state.searchQuery,
|
|
140
|
-
after: state.after,
|
|
141
|
-
where
|
|
142
|
-
},
|
|
143
|
-
isSearch
|
|
144
|
-
};
|
|
145
|
-
}, [
|
|
146
|
-
state.folderId,
|
|
147
|
-
state.filters,
|
|
148
|
-
state.searchQuery,
|
|
149
|
-
state.after,
|
|
150
|
-
state.listSort,
|
|
151
|
-
state.limit,
|
|
152
|
-
getWhere,
|
|
153
|
-
folderIdPath
|
|
154
|
-
]);
|
|
155
|
-
useEffect(()=>{
|
|
156
|
-
const listItems = async ()=>{
|
|
157
|
-
const result = buildListParams();
|
|
158
|
-
if (!result) return;
|
|
159
|
-
await listRecords(result.params);
|
|
160
|
-
setState((state)=>({
|
|
161
|
-
...state,
|
|
162
|
-
isSearch: result.isSearch
|
|
163
|
-
}));
|
|
164
|
-
};
|
|
165
|
-
listItems();
|
|
166
|
-
}, [
|
|
167
|
-
state.folderId,
|
|
168
|
-
state.filters,
|
|
169
|
-
state.searchQuery,
|
|
170
|
-
state.after,
|
|
171
|
-
state.listSort,
|
|
172
|
-
state.limit,
|
|
173
|
-
props.own,
|
|
174
|
-
identity
|
|
175
|
-
]);
|
|
176
|
-
const refresh = useCallback(async ()=>{
|
|
177
|
-
const result = buildListParams();
|
|
178
|
-
if (!result) return;
|
|
179
|
-
await listRecords(result.params);
|
|
180
|
-
}, [
|
|
181
|
-
buildListParams,
|
|
182
|
-
listRecords
|
|
183
|
-
]);
|
|
184
|
-
useEffect(()=>{
|
|
185
|
-
const { selected, folderId } = state;
|
|
186
|
-
const { hasMoreItems } = meta;
|
|
187
|
-
const folderWithChildren = folderId ? getDescendantFolders(folderId) : [];
|
|
188
|
-
const foldersLength = folders.length;
|
|
189
|
-
const recordsLength = records.length;
|
|
190
|
-
const selectedLength = selected.length;
|
|
191
|
-
const folderWithChildrenLength = folderWithChildren.length;
|
|
192
|
-
const getAllRecordsAreSelected = ()=>!!recordsLength && recordsLength === selectedLength;
|
|
193
|
-
let showingSelectAll = false;
|
|
194
|
-
if (folderId === ROOT_FOLDER && foldersLength > 0) showingSelectAll = getAllRecordsAreSelected();
|
|
195
|
-
if (folderId !== ROOT_FOLDER && folderWithChildrenLength > 1) showingSelectAll = getAllRecordsAreSelected();
|
|
196
|
-
if (hasMoreItems) showingSelectAll = getAllRecordsAreSelected();
|
|
197
|
-
setState((prevState)=>{
|
|
198
|
-
if (!prevState.isSelectedAll && prevState.showingSelectAll === showingSelectAll) return prevState;
|
|
199
|
-
return {
|
|
200
|
-
...prevState,
|
|
201
|
-
isSelectedAll: false,
|
|
202
|
-
showingSelectAll
|
|
203
|
-
};
|
|
204
|
-
});
|
|
205
|
-
}, [
|
|
206
|
-
records.length,
|
|
207
|
-
folders.length,
|
|
208
|
-
state.isSearch,
|
|
209
|
-
meta.hasMoreItems,
|
|
210
|
-
state.selected.length,
|
|
211
|
-
state.folderId
|
|
212
|
-
]);
|
|
213
|
-
const currentFolder = useMemo(()=>originalFolders?.find((folder)=>folder.id === currentFolderId), [
|
|
214
|
-
originalFolders,
|
|
215
|
-
currentFolderId
|
|
216
|
-
]);
|
|
217
|
-
const context = {
|
|
218
|
-
...pick(state, [
|
|
219
|
-
"isSearch",
|
|
220
|
-
"searchQuery",
|
|
221
|
-
"selected",
|
|
222
|
-
"showingFilters",
|
|
223
|
-
"showingSelectAll",
|
|
224
|
-
"isSelectedAll"
|
|
225
|
-
]),
|
|
226
|
-
folders,
|
|
227
|
-
currentFolder,
|
|
228
|
-
records,
|
|
229
|
-
listTitle,
|
|
230
|
-
isListLoading: Boolean(recordsLoading.INIT || recordsLoading.LIST),
|
|
231
|
-
isListLoadingMore: Boolean(recordsLoading.LIST_MORE),
|
|
232
|
-
meta,
|
|
233
|
-
setSearchQuery (query) {
|
|
234
|
-
setState((state)=>({
|
|
235
|
-
...state,
|
|
236
|
-
searchQuery: query,
|
|
237
|
-
after: void 0
|
|
238
|
-
}));
|
|
239
|
-
},
|
|
240
|
-
setFilters (data) {
|
|
241
|
-
setState((state)=>({
|
|
242
|
-
...state,
|
|
243
|
-
filters: data,
|
|
244
|
-
after: void 0
|
|
245
|
-
}));
|
|
246
|
-
const filters = Object.fromEntries(Object.entries(data).filter(([, value])=>void 0 !== value));
|
|
247
|
-
setState((state)=>({
|
|
248
|
-
...state,
|
|
249
|
-
filters: Object.keys(filters).length ? filters : void 0,
|
|
250
|
-
after: void 0
|
|
251
|
-
}));
|
|
252
|
-
},
|
|
253
|
-
setListSort (sort) {
|
|
254
|
-
setState((state)=>({
|
|
255
|
-
...state,
|
|
256
|
-
listSort: sort,
|
|
257
|
-
after: void 0
|
|
258
|
-
}));
|
|
259
|
-
},
|
|
260
|
-
setSelected (selected) {
|
|
261
|
-
setState((state)=>({
|
|
262
|
-
...state,
|
|
263
|
-
selected
|
|
264
|
-
}));
|
|
265
|
-
},
|
|
266
|
-
hideFilters () {
|
|
267
|
-
setState((state)=>({
|
|
268
|
-
...state,
|
|
269
|
-
filters: void 0,
|
|
270
|
-
showingFilters: false,
|
|
271
|
-
after: void 0
|
|
272
|
-
}));
|
|
273
|
-
},
|
|
274
|
-
showFilters () {
|
|
275
|
-
setState((state)=>({
|
|
276
|
-
...state,
|
|
277
|
-
showingFilters: true
|
|
278
|
-
}));
|
|
279
|
-
},
|
|
280
|
-
selectAll () {
|
|
281
|
-
setState((state)=>({
|
|
282
|
-
...state,
|
|
283
|
-
isSelectedAll: true
|
|
284
|
-
}));
|
|
285
|
-
},
|
|
286
|
-
unselectAll () {
|
|
287
|
-
setState((state)=>({
|
|
288
|
-
...state,
|
|
289
|
-
selected: [],
|
|
290
|
-
isSelectedAll: false
|
|
291
|
-
}));
|
|
292
|
-
},
|
|
293
|
-
getWhere,
|
|
294
|
-
listMoreRecords,
|
|
295
|
-
refresh
|
|
296
|
-
};
|
|
297
|
-
return /*#__PURE__*/ react.createElement(AcoListContext.Provider, {
|
|
298
|
-
value: context
|
|
299
|
-
}, children);
|
|
300
|
-
};
|
|
301
|
-
export { AcoListContext, AcoListProvider };
|
|
302
|
-
|
|
303
|
-
//# sourceMappingURL=acoList.js.map
|
package/contexts/acoList.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contexts/acoList.js","sources":["../../src/contexts/acoList.tsx"],"sourcesContent":["import React, { useCallback, useContext, useEffect, useMemo } from \"react\";\nimport dotPropImmutable from \"dot-prop-immutable\";\nimport pick from \"lodash/pick.js\";\nimport { useStateIfMounted } from \"@webiny/app-admin\";\nimport { useSecurity } from \"@webiny/app-admin\";\nimport type { FolderDto } from \"~/domain/folder/FolderDto.js\";\nimport { useGetDescendantFolders } from \"~/features/folders/getDescendantFolders/index.js\";\nimport { useListFoldersByParentIds } from \"~/features/folders/listFoldersByParentIds/index.js\";\nimport { useLoadFolderHierarchy } from \"~/features/folders/loadFolderHierarchy/index.js\";\nimport type {\n GenericSearchData,\n ListMeta,\n ListSearchRecordsQueryVariables,\n ListSearchRecordsSort,\n SearchRecordItem\n} from \"~/types.js\";\nimport { useAcoApp, useNavigateFolder } from \"~/hooks/index.js\";\nimport { FoldersContext } from \"~/contexts/folders.js\";\nimport { SearchRecordsContext } from \"~/contexts/records.js\";\nimport { sortTableItems, validateOrGetDefaultDbSort } from \"~/sorting.js\";\nimport { ROOT_FOLDER } from \"~/constants.js\";\n\nexport interface AcoListContextData<T> {\n currentFolder?: FolderDto;\n folders: FolderDto[];\n hideFilters: () => void;\n isListLoading: boolean;\n isListLoadingMore: boolean;\n isSearch: boolean;\n listMoreRecords: () => void;\n listTitle?: string;\n meta: ListMeta;\n records: T[];\n selected: T[];\n setFilters: (data: Record<string, any>) => void;\n setListSort: (state: ListSearchRecordsSort) => void;\n setSearchQuery: (query: string) => void;\n setSelected: (selected: T[]) => void;\n showFilters: () => void;\n showingFilters: boolean;\n showingSelectAll: boolean;\n searchQuery: string;\n isSelectedAll: boolean;\n selectAll: () => void;\n unselectAll: () => void;\n getWhere: () => Record<string, any>;\n refresh: () => Promise<void>;\n}\n\nexport const AcoListContext = React.createContext<\n AcoListContextData<GenericSearchData> | undefined\n>(undefined);\n\nexport interface State<T> {\n after?: string;\n filters?: Record<string, any>;\n folderId?: string;\n isSearch: boolean;\n limit: number;\n listSort: ListSearchRecordsSort;\n searchQuery: string;\n selected: T[];\n showingFilters: boolean;\n showingSelectAll: boolean;\n isSelectedAll: boolean;\n}\n\nconst initializeAcoListState = (): State<GenericSearchData> => {\n return {\n after: undefined,\n filters: undefined,\n folderId: undefined,\n isSearch: false,\n limit: 50,\n listSort: [],\n searchQuery: \"\",\n selected: [],\n showingFilters: false,\n showingSelectAll: false,\n isSelectedAll: false\n };\n};\n\nconst getCurrentFolderList = (\n folders?: FolderDto[] | null,\n currentFolderId?: string\n): FolderDto[] | [] => {\n if (!folders) {\n return [];\n }\n if (!currentFolderId || currentFolderId.toLowerCase() === ROOT_FOLDER) {\n return folders.filter(\n folder => !folder.parentId || folder.parentId.toLowerCase() === ROOT_FOLDER\n );\n }\n return folders.filter(folder => folder.parentId === currentFolderId);\n};\n\nconst getCurrentRecordList = <T extends GenericSearchData = GenericSearchData>(\n records: SearchRecordItem<T>[],\n folderIdPath: string,\n currentFolderId?: string\n): SearchRecordItem<T>[] => {\n if (!records) {\n return [];\n }\n\n if (!currentFolderId) {\n return records;\n }\n\n return records.filter(\n (record): record is SearchRecordItem<T> =>\n dotPropImmutable.get(record, folderIdPath) === currentFolderId\n );\n};\n\nexport interface AcoListProviderProps {\n children: React.ReactNode;\n own?: boolean;\n titleFieldId: string | null;\n}\n\nexport const AcoListProvider = ({ children, ...props }: AcoListProviderProps) => {\n const { identity } = useSecurity();\n const { currentFolderId } = useNavigateFolder();\n const { folderIdPath, folderIdInPath } = useAcoApp();\n const { folders: originalFolders, loadFolderHierarchy } = useLoadFolderHierarchy();\n const { getDescendantFolders } = useGetDescendantFolders();\n const { listFoldersByParentIds } = useListFoldersByParentIds();\n const folderContext = useContext(FoldersContext);\n const searchContext = useContext(SearchRecordsContext);\n\n if (!folderContext || !searchContext) {\n throw new Error(\"useAcoList must be used within a ACOProvider\");\n }\n\n const [folders, setFolders] = useStateIfMounted<FolderDto[]>([]);\n const [records, setRecords] = useStateIfMounted<SearchRecordItem[]>([]);\n const [listTitle, setListTitle] = useStateIfMounted<string | undefined>(undefined);\n const [state, setState] = useStateIfMounted<State<GenericSearchData>>(initializeAcoListState());\n\n const { records: originalRecords, loading: recordsLoading, listRecords, meta } = searchContext;\n\n /**\n * On first mount, call `getFolderHierarchy` and `setState`, which will either issue a network request, or load folders and records from cache.\n * We don't need to store the result of it to any local state; that is managed by the context provider.\n *\n * We don't call `listRecords` directly, instead we call `setState` making it the only driver to fetch records from the apis.\n */\n useEffect(() => {\n // The folders collection is empty, it must be the first render, let's load the full hierarchy.\n if (folders.length === 0) {\n loadFolderHierarchy(currentFolderId);\n } else {\n // Otherwise let's load only the current folder sub-tree\n listFoldersByParentIds([currentFolderId]);\n }\n\n setState(state => {\n return {\n ...state,\n after: undefined,\n filters: undefined,\n folderId: currentFolderId,\n isSearch: false,\n searchQuery: \"\",\n selected: [],\n showingFilters: false,\n showingSelectAll: false,\n isSelectedAll: false\n };\n });\n }, [currentFolderId]);\n\n /**\n * Any time we receive a `folders` list update:\n * - we set an empty array in case of search;\n * - we set the list filtered by the current `type` and parent `folderId`, sorted according to the current `sort` value;\n * - we set the current folder name.\n */\n useEffect(() => {\n const currentFolder = originalFolders?.find(\n folder => folder.id === (state.folderId || ROOT_FOLDER)\n );\n\n setListTitle(currentFolder?.title);\n\n if (state.isSearch) {\n setFolders([]);\n return;\n }\n\n const subFolders = getCurrentFolderList(originalFolders, state.folderId);\n setFolders(() => {\n return sortTableItems(subFolders, state.listSort);\n });\n }, [originalFolders, state.folderId, state.isSearch]);\n\n /**\n * Any time we receive a `records` list or `folderId` update:\n * - we set all `records` in case of search query;\n * - we set the `records` list filtered by the current `folderId`.\n */\n useEffect(() => {\n if (state.isSearch) {\n setRecords(originalRecords as SearchRecordItem[]);\n return;\n }\n\n const subRecords = getCurrentRecordList(\n originalRecords as SearchRecordItem[],\n folderIdPath,\n state.folderId\n );\n setRecords(subRecords);\n }, [originalRecords, state.folderId, state.isSearch]);\n\n /**\n * Any time we receive a new `sort` value:\n * - we sort the current `folders` list according to `sorting` value;\n */\n useEffect(() => {\n setFolders(prev => {\n const titleField = props?.titleFieldId || \"id\";\n return sortTableItems(prev, state.listSort, {\n [titleField]: \"title\"\n });\n });\n }, [state.listSort]);\n\n /**\n * Utility function to list/load more records, the `meta` state is tracked internally.\n */\n const listMoreRecords = useCallback(() => {\n const { hasMoreItems, cursor } = meta;\n if (hasMoreItems && cursor) {\n setState(state => ({ ...state, after: cursor }));\n }\n }, [meta]);\n\n /**\n * Constructs a \"where\" condition object based on the current state and properties.\n *\n * This function creates a \"where\" object used to filter data based on the current folder ID,\n * ownership status, and other existing filters in the state.\n *\n * @returns {Object} A \"where\" condition object containing filters for querying data.\n */\n const getWhere = useCallback(() => {\n // Initialize an empty object\n let where = {};\n\n if (!state.folderId) {\n return where;\n }\n\n // Check if the current folder ID is not the ROOT_FOLDER folder\n if (state.folderId !== ROOT_FOLDER) {\n // Get descendant folder IDs of the current folder\n const descendantFolderIds = getDescendantFolders(state.folderId).map(\n folder => folder.id\n );\n\n // Set the locationWhere object with descendant folder IDs\n where = dotPropImmutable.set({}, folderIdInPath, descendantFolderIds);\n }\n\n return {\n createdBy: props.own ? identity.id : undefined, // Set 'createdBy' based on the ownership status\n ...state.filters, // Merge existing filters into the 'where' condition\n ...where // Include where condition if applicable\n };\n }, [folders, state.folderId, state.filters, props.own, identity]);\n\n const buildListParams = useCallback((): {\n params: ListSearchRecordsQueryVariables;\n isSearch: boolean;\n } | null => {\n if (!state.folderId) {\n return null;\n }\n\n const isSearch = Boolean(\n state.searchQuery ||\n (state.filters && Object.values(state.filters).filter(Boolean).length)\n );\n\n let where = dotPropImmutable.set({}, folderIdPath, state.folderId);\n\n // In case of a search or filters applied, let's get the where condition based on the current folder ID,\n // ownership status, and other existing filters in the state.\n if (isSearch) {\n where = getWhere();\n }\n\n return {\n params: {\n limit: state.limit,\n sort: validateOrGetDefaultDbSort(state.listSort),\n search: state.searchQuery,\n after: state.after,\n where\n },\n isSearch\n };\n }, [\n state.folderId,\n state.filters,\n state.searchQuery,\n state.after,\n state.listSort,\n state.limit,\n getWhere,\n folderIdPath\n ]);\n\n /**\n * Any time we receive new useful `state` params:\n * - we fetch records according to the new params\n */\n useEffect(() => {\n const listItems = async () => {\n const result = buildListParams();\n if (!result) {\n return;\n }\n\n await listRecords(result.params);\n\n setState(state => ({ ...state, isSearch: result.isSearch }));\n };\n\n listItems();\n }, [\n state.folderId,\n state.filters,\n state.searchQuery,\n state.after,\n state.listSort,\n state.limit,\n props.own,\n identity\n ]);\n\n const refresh = useCallback(async () => {\n const result = buildListParams();\n if (!result) {\n return;\n }\n\n await listRecords(result.params);\n }, [buildListParams, listRecords]);\n\n /**\n * useEffect hook to determine if the \"Select All\" option should be displayed based on the current state and meta properties:\n * - if in the root folder with no folders, checks if all records are selected.\n * - if in a non-root folder with multiple descendant folders, checks if all records are selected.\n * - if there are more items to load, checks if all records are selected.\n */\n useEffect(() => {\n // Destructure relevant properties from state and meta\n const { selected, folderId } = state;\n const { hasMoreItems } = meta;\n\n // Retrieve all descendant folders of the current folderId\n const folderWithChildren = folderId ? getDescendantFolders(folderId) : [];\n\n // Compute the lengths of various arrays for later comparisons\n const foldersLength = folders.length;\n const recordsLength = records.length;\n const selectedLength = selected.length;\n const folderWithChildrenLength = folderWithChildren.length;\n\n // Function to determine if all records are selected\n const getAllRecordsAreSelected = () => !!recordsLength && recordsLength === selectedLength;\n\n // Initialize a flag to determine if the \"Select All\" option should be shown\n let showingSelectAll = false;\n\n // If in the root folder and there are some folders, check if all records are selected\n if (folderId === ROOT_FOLDER && foldersLength > 0) {\n showingSelectAll = getAllRecordsAreSelected();\n }\n\n // If not in the root folder and there are multiple descendant folders, check if all records are selected\n if (folderId !== ROOT_FOLDER && folderWithChildrenLength > 1) {\n showingSelectAll = getAllRecordsAreSelected();\n }\n\n // If there are more items to load, check if all records are selected\n if (hasMoreItems) {\n showingSelectAll = getAllRecordsAreSelected();\n }\n\n // Update the component's state based on the computed showingSelectAll flag\n setState(prevState => {\n // Only update if there is a change in showingSelectAll or if isSelectedAll was true previously\n if (!prevState.isSelectedAll && prevState.showingSelectAll === showingSelectAll) {\n return prevState;\n }\n\n // Return the new state with updated showingSelectAll and reset isSelectedAll to false\n return {\n ...prevState,\n isSelectedAll: false,\n showingSelectAll\n };\n });\n }, [\n records.length,\n folders.length,\n state.isSearch,\n meta.hasMoreItems,\n state.selected.length,\n state.folderId\n ]);\n\n const currentFolder = useMemo(() => {\n return originalFolders?.find(folder => folder.id === currentFolderId);\n }, [originalFolders, currentFolderId]);\n\n const context: AcoListContextData<GenericSearchData> = {\n ...pick(state, [\n \"isSearch\",\n \"searchQuery\",\n \"selected\",\n \"showingFilters\",\n \"showingSelectAll\",\n \"isSelectedAll\"\n ]),\n folders,\n currentFolder,\n records,\n listTitle,\n isListLoading: Boolean(recordsLoading.INIT || recordsLoading.LIST),\n isListLoadingMore: Boolean(recordsLoading.LIST_MORE),\n meta,\n setSearchQuery(query) {\n setState(state => ({ ...state, searchQuery: query, after: undefined }));\n },\n setFilters(data) {\n setState(state => ({ ...state, filters: data, after: undefined }));\n // Create filters object excluding entries with `undefined` values\n const filters = Object.fromEntries(\n Object.entries(data).filter(([, value]) => value !== undefined)\n );\n\n setState(state => ({\n ...state,\n filters: Object.keys(filters).length ? filters : undefined,\n after: undefined\n }));\n },\n setListSort(sort: ListSearchRecordsSort) {\n setState(state => ({ ...state, listSort: sort, after: undefined }));\n },\n setSelected(selected) {\n setState(state => ({ ...state, selected }));\n },\n hideFilters() {\n setState(state => ({\n ...state,\n filters: undefined,\n showingFilters: false,\n after: undefined\n }));\n },\n showFilters() {\n setState(state => ({ ...state, showingFilters: true }));\n },\n selectAll() {\n setState(state => ({ ...state, isSelectedAll: true }));\n },\n unselectAll() {\n setState(state => ({\n ...state,\n selected: [],\n isSelectedAll: false\n }));\n },\n getWhere,\n listMoreRecords,\n refresh\n };\n\n return <AcoListContext.Provider value={context}>{children}</AcoListContext.Provider>;\n};\n"],"names":["AcoListContext","React","undefined","initializeAcoListState","getCurrentFolderList","folders","currentFolderId","ROOT_FOLDER","folder","getCurrentRecordList","records","folderIdPath","record","dotPropImmutable","AcoListProvider","children","props","identity","useSecurity","useNavigateFolder","folderIdInPath","useAcoApp","originalFolders","loadFolderHierarchy","useLoadFolderHierarchy","getDescendantFolders","useGetDescendantFolders","listFoldersByParentIds","useListFoldersByParentIds","folderContext","useContext","FoldersContext","searchContext","SearchRecordsContext","Error","setFolders","useStateIfMounted","setRecords","listTitle","setListTitle","state","setState","originalRecords","recordsLoading","listRecords","meta","useEffect","currentFolder","subFolders","sortTableItems","subRecords","prev","titleField","listMoreRecords","useCallback","hasMoreItems","cursor","getWhere","where","descendantFolderIds","buildListParams","isSearch","Boolean","Object","validateOrGetDefaultDbSort","listItems","result","refresh","selected","folderId","folderWithChildren","foldersLength","recordsLength","selectedLength","folderWithChildrenLength","getAllRecordsAreSelected","showingSelectAll","prevState","useMemo","context","pick","query","data","filters","value","sort"],"mappings":"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"}
|
package/contexts/app.d.ts
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import type { ApolloClient } from "apollo-client";
|
|
3
|
-
import type { AcoApp, AcoModel, AcoModelField } from "../types.js";
|
|
4
|
-
import type { ColumnConfig } from "../config/table/Column.js";
|
|
5
|
-
export interface AcoAppProviderContext {
|
|
6
|
-
app: AcoApp;
|
|
7
|
-
folderIdPath: string;
|
|
8
|
-
folderIdInPath: string;
|
|
9
|
-
model: AcoModel;
|
|
10
|
-
client: ApolloClient<any>;
|
|
11
|
-
}
|
|
12
|
-
export declare const AcoAppContext: React.Context<AcoAppProviderContext | undefined>;
|
|
13
|
-
export type AcoAppProviderProps = {
|
|
14
|
-
children: React.ReactNode;
|
|
15
|
-
id: string;
|
|
16
|
-
folderId: string | undefined;
|
|
17
|
-
folderIdPath: string;
|
|
18
|
-
client: ApolloClient<any>;
|
|
19
|
-
navigateToFolder: (folderId: string) => void;
|
|
20
|
-
createNavigateFolderStorageKey: () => string;
|
|
21
|
-
model: AcoModel;
|
|
22
|
-
columns: ColumnConfig[];
|
|
23
|
-
own?: boolean;
|
|
24
|
-
getFields?: () => AcoModelField[];
|
|
25
|
-
};
|
|
26
|
-
interface CreateAppParams {
|
|
27
|
-
id: string;
|
|
28
|
-
model: AcoModel;
|
|
29
|
-
getFields?: () => AcoModelField[];
|
|
30
|
-
}
|
|
31
|
-
export declare const createAppFromModel: (data: CreateAppParams) => AcoApp;
|
|
32
|
-
export declare const AcoAppProvider: ({ children, id, client, model, columns, getFields, navigateToFolder, createNavigateFolderStorageKey, folderId, folderIdPath, own }: AcoAppProviderProps) => React.JSX.Element;
|
|
33
|
-
export {};
|
package/contexts/app.js
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import react, { useMemo } from "react";
|
|
2
|
-
import { DialogsProvider } from "@webiny/app-admin";
|
|
3
|
-
import { FoldersProvider } from "./folders.js";
|
|
4
|
-
import { SearchRecordsProvider } from "./records.js";
|
|
5
|
-
import { AcoListProvider } from "./acoList.js";
|
|
6
|
-
import { NavigateFolderProvider } from "./navigateFolder.js";
|
|
7
|
-
const AcoAppContext = /*#__PURE__*/ react.createContext(void 0);
|
|
8
|
-
const createAppFromModel = (data)=>({
|
|
9
|
-
...data,
|
|
10
|
-
getFields: data.getFields || (()=>data.model.fields)
|
|
11
|
-
});
|
|
12
|
-
const AcoAppProvider = ({ children, id, client, model, columns, getFields, navigateToFolder, createNavigateFolderStorageKey, folderId, folderIdPath, own })=>{
|
|
13
|
-
const app = useMemo(()=>createAppFromModel({
|
|
14
|
-
id,
|
|
15
|
-
model,
|
|
16
|
-
getFields
|
|
17
|
-
}), [
|
|
18
|
-
model
|
|
19
|
-
]);
|
|
20
|
-
const folderIdInPath = folderIdPath + "_in";
|
|
21
|
-
const value = useMemo(()=>({
|
|
22
|
-
app: app,
|
|
23
|
-
folderIdPath,
|
|
24
|
-
folderIdInPath,
|
|
25
|
-
client,
|
|
26
|
-
model: model
|
|
27
|
-
}), [
|
|
28
|
-
app?.id,
|
|
29
|
-
model,
|
|
30
|
-
client
|
|
31
|
-
]);
|
|
32
|
-
return /*#__PURE__*/ react.createElement(AcoAppContext.Provider, {
|
|
33
|
-
value: value
|
|
34
|
-
}, /*#__PURE__*/ react.createElement(FoldersProvider, null, /*#__PURE__*/ react.createElement(SearchRecordsProvider, {
|
|
35
|
-
columns: columns
|
|
36
|
-
}, /*#__PURE__*/ react.createElement(NavigateFolderProvider, {
|
|
37
|
-
folderId: folderId,
|
|
38
|
-
createStorageKey: createNavigateFolderStorageKey,
|
|
39
|
-
navigateToFolder: navigateToFolder
|
|
40
|
-
}, /*#__PURE__*/ react.createElement(AcoListProvider, {
|
|
41
|
-
own: own,
|
|
42
|
-
titleFieldId: model.titleFieldId
|
|
43
|
-
}, /*#__PURE__*/ react.createElement(DialogsProvider, null, children))))));
|
|
44
|
-
};
|
|
45
|
-
export { AcoAppContext, AcoAppProvider, createAppFromModel };
|
|
46
|
-
|
|
47
|
-
//# sourceMappingURL=app.js.map
|
package/contexts/app.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contexts/app.js","sources":["../../src/contexts/app.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport type { ApolloClient } from \"apollo-client\";\nimport { DialogsProvider } from \"@webiny/app-admin\";\nimport type { AcoApp, AcoModel, AcoModelField } from \"~/types.js\";\nimport { FoldersProvider as FoldersContextProvider } from \"./folders.js\";\nimport { SearchRecordsProvider as SearchRecordsContextProvider } from \"./records.js\";\nimport { AcoListProvider } from \"~/contexts/acoList.js\";\nimport { NavigateFolderProvider } from \"~/contexts/navigateFolder.js\";\nimport type { ColumnConfig } from \"~/config/table/Column.js\";\n\nexport interface AcoAppProviderContext {\n app: AcoApp;\n folderIdPath: string;\n folderIdInPath: string;\n model: AcoModel;\n client: ApolloClient<any>;\n}\n\nexport const AcoAppContext = React.createContext<AcoAppProviderContext | undefined>(undefined);\n\nexport type AcoAppProviderProps = {\n children: React.ReactNode;\n id: string;\n folderId: string | undefined;\n folderIdPath: string;\n client: ApolloClient<any>;\n navigateToFolder: (folderId: string) => void;\n createNavigateFolderStorageKey: () => string;\n model: AcoModel;\n columns: ColumnConfig[];\n own?: boolean;\n getFields?: () => AcoModelField[];\n};\n\ninterface CreateAppParams {\n id: string;\n model: AcoModel;\n getFields?: () => AcoModelField[];\n}\n\nexport const createAppFromModel = (data: CreateAppParams): AcoApp => {\n return {\n ...data,\n getFields:\n data.getFields ||\n (() => {\n return data.model.fields;\n })\n };\n};\n\nexport const AcoAppProvider = ({\n children,\n id,\n client,\n model,\n columns,\n getFields,\n navigateToFolder,\n createNavigateFolderStorageKey,\n folderId,\n folderIdPath,\n own\n}: AcoAppProviderProps) => {\n const app = useMemo(() => {\n return createAppFromModel({\n id,\n model,\n getFields\n });\n }, [model]);\n\n const folderIdInPath = folderIdPath + \"_in\";\n\n const value = useMemo<AcoAppProviderContext>(() => {\n return {\n app: app as AcoApp,\n folderIdPath,\n folderIdInPath,\n client,\n model: model as AcoModel\n };\n }, [app?.id, model, client]);\n\n return (\n <AcoAppContext.Provider value={value}>\n <FoldersContextProvider>\n <SearchRecordsContextProvider columns={columns}>\n <NavigateFolderProvider\n folderId={folderId}\n createStorageKey={createNavigateFolderStorageKey}\n navigateToFolder={navigateToFolder}\n >\n <AcoListProvider own={own} titleFieldId={model.titleFieldId}>\n <DialogsProvider>{children}</DialogsProvider>\n </AcoListProvider>\n </NavigateFolderProvider>\n </SearchRecordsContextProvider>\n </FoldersContextProvider>\n </AcoAppContext.Provider>\n );\n};\n"],"names":["AcoAppContext","React","undefined","createAppFromModel","data","AcoAppProvider","children","id","client","model","columns","getFields","navigateToFolder","createNavigateFolderStorageKey","folderId","folderIdPath","own","app","useMemo","folderIdInPath","value","FoldersContextProvider","SearchRecordsContextProvider","NavigateFolderProvider","AcoListProvider","DialogsProvider"],"mappings":";;;;;;AAkBO,MAAMA,gBAAgB,WAAHA,GAAGC,MAAAA,aAAmB,CAAoCC;AAsB7E,MAAMC,qBAAqB,CAACC,OACxB;QACH,GAAGA,IAAI;QACP,WACIA,KAAK,SAAS,IACZ,KACSA,KAAK,KAAK,CAAC,MAAM,AAC5B;IACR;AAGG,MAAMC,iBAAiB,CAAC,EAC3BC,QAAQ,EACRC,EAAE,EACFC,MAAM,EACNC,KAAK,EACLC,OAAO,EACPC,SAAS,EACTC,gBAAgB,EAChBC,8BAA8B,EAC9BC,QAAQ,EACRC,YAAY,EACZC,GAAG,EACe;IAClB,MAAMC,MAAMC,QAAQ,IACTf,mBAAmB;YACtBI;YACAE;YACAE;QACJ,IACD;QAACF;KAAM;IAEV,MAAMU,iBAAiBJ,eAAe;IAEtC,MAAMK,QAAQF,QAA+B,IAClC;YACH,KAAKD;YACLF;YACAI;YACAX;YACA,OAAOC;QACX,IACD;QAACQ,KAAK;QAAIR;QAAOD;KAAO;IAE3B,OAAO,WAAP,GACI,oBAACR,cAAc,QAAQ;QAAC,OAAOoB;qBAC3B,oBAACC,iBAAsBA,MAAAA,WAAAA,GACnB,oBAACC,uBAA4BA;QAAC,SAASZ;qBACnC,oBAACa,wBAAsBA;QACnB,UAAUT;QACV,kBAAkBD;QAClB,kBAAkBD;qBAElB,oBAACY,iBAAeA;QAAC,KAAKR;QAAK,cAAcP,MAAM,YAAY;qBACvD,oBAACgB,iBAAeA,MAAEnB;AAO9C"}
|
package/contexts/folders.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { ReactNode } from "react";
|
|
2
|
-
import React from "react";
|
|
3
|
-
interface FoldersContext {
|
|
4
|
-
type?: string | null;
|
|
5
|
-
}
|
|
6
|
-
export declare const FoldersContext: React.Context<FoldersContext | undefined>;
|
|
7
|
-
interface Props {
|
|
8
|
-
type?: string;
|
|
9
|
-
children: ReactNode;
|
|
10
|
-
}
|
|
11
|
-
export declare const FoldersProvider: ({ children, ...props }: Props) => React.JSX.Element;
|
|
12
|
-
export {};
|
package/contexts/folders.js
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { DiContainerProvider, useContainer } from "@webiny/app";
|
|
2
|
-
import react, { useContext, useMemo } from "react";
|
|
3
|
-
import { AcoAppContext } from "./app.js";
|
|
4
|
-
import { FoldersFeature } from "../features/folders/feature.js";
|
|
5
|
-
const FoldersContext = /*#__PURE__*/ react.createContext(void 0);
|
|
6
|
-
const FoldersProvider = ({ children, ...props })=>{
|
|
7
|
-
const appContext = useContext(AcoAppContext);
|
|
8
|
-
const app = appContext ? appContext.app : void 0;
|
|
9
|
-
const type = props.type ?? app?.id;
|
|
10
|
-
if (!type) throw Error('FoldersProvider requires a "type" prop or an AcoAppContext to be available!');
|
|
11
|
-
const container = useContainer();
|
|
12
|
-
const routeContainer = useMemo(()=>{
|
|
13
|
-
const childContainer = container.createChildContainer();
|
|
14
|
-
FoldersFeature.register(childContainer, {
|
|
15
|
-
type
|
|
16
|
-
});
|
|
17
|
-
return childContainer;
|
|
18
|
-
}, []);
|
|
19
|
-
const context = useMemo(()=>({
|
|
20
|
-
type
|
|
21
|
-
}), [
|
|
22
|
-
type
|
|
23
|
-
]);
|
|
24
|
-
return /*#__PURE__*/ react.createElement(DiContainerProvider, {
|
|
25
|
-
container: routeContainer
|
|
26
|
-
}, /*#__PURE__*/ react.createElement(FoldersContext.Provider, {
|
|
27
|
-
value: context
|
|
28
|
-
}, children));
|
|
29
|
-
};
|
|
30
|
-
export { FoldersContext, FoldersProvider };
|
|
31
|
-
|
|
32
|
-
//# sourceMappingURL=folders.js.map
|
package/contexts/folders.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contexts/folders.js","sources":["../../src/contexts/folders.tsx"],"sourcesContent":["import { DiContainerProvider } from \"@webiny/app\";\nimport { useContainer } from \"@webiny/app\";\nimport type { ReactNode } from \"react\";\nimport React, { useContext, useMemo } from \"react\";\nimport { AcoAppContext } from \"~/contexts/app.js\";\nimport { FoldersFeature } from \"~/features/folders/feature.js\";\n\ninterface FoldersContext {\n type?: string | null;\n}\n\nexport const FoldersContext = React.createContext<FoldersContext | undefined>(undefined);\n\ninterface Props {\n type?: string;\n children: ReactNode;\n}\n\nexport const FoldersProvider = ({ children, ...props }: Props) => {\n const appContext = useContext(AcoAppContext);\n\n const app = appContext ? appContext.app : undefined;\n\n const type = props.type ?? app?.id;\n\n if (!type) {\n throw Error(`FoldersProvider requires a \"type\" prop or an AcoAppContext to be available!`);\n }\n\n const container = useContainer();\n\n const routeContainer = useMemo(() => {\n const childContainer = container.createChildContainer();\n\n FoldersFeature.register(childContainer, { type });\n\n return childContainer;\n }, []);\n\n const context = useMemo<FoldersContext>(() => {\n return {\n type\n };\n }, [type]);\n\n return (\n <DiContainerProvider container={routeContainer}>\n <FoldersContext.Provider value={context}>{children}</FoldersContext.Provider>\n </DiContainerProvider>\n );\n};\n"],"names":["FoldersContext","React","undefined","FoldersProvider","children","props","appContext","useContext","AcoAppContext","app","type","Error","container","useContainer","routeContainer","useMemo","childContainer","FoldersFeature","context","DiContainerProvider"],"mappings":";;;;AAWO,MAAMA,iBAAiB,WAAHA,GAAGC,MAAAA,aAAmB,CAA6BC;AAOvE,MAAMC,kBAAkB,CAAC,EAAEC,QAAQ,EAAE,GAAGC,OAAc;IACzD,MAAMC,aAAaC,WAAWC;IAE9B,MAAMC,MAAMH,aAAaA,WAAW,GAAG,GAAGJ;IAE1C,MAAMQ,OAAOL,MAAM,IAAI,IAAII,KAAK;IAEhC,IAAI,CAACC,MACD,MAAMC,MAAM;IAGhB,MAAMC,YAAYC;IAElB,MAAMC,iBAAiBC,QAAQ;QAC3B,MAAMC,iBAAiBJ,UAAU,oBAAoB;QAErDK,eAAe,QAAQ,CAACD,gBAAgB;YAAEN;QAAK;QAE/C,OAAOM;IACX,GAAG,EAAE;IAEL,MAAME,UAAUH,QAAwB,IAC7B;YACHL;QACJ,IACD;QAACA;KAAK;IAET,OAAO,WAAP,GACI,oBAACS,qBAAmBA;QAAC,WAAWL;qBAC5B,oBAACd,eAAe,QAAQ;QAAC,OAAOkB;OAAUd;AAGtD"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
export interface NavigateFolderContext {
|
|
3
|
-
currentFolderId: string;
|
|
4
|
-
isRootFolder: boolean;
|
|
5
|
-
setFolderToStorage: (folderId?: string) => void;
|
|
6
|
-
navigateToListHome: () => void;
|
|
7
|
-
navigateToFolder: (folder?: string) => void;
|
|
8
|
-
navigateToLatestFolder: () => void;
|
|
9
|
-
}
|
|
10
|
-
export declare const NavigateFolderContext: React.Context<NavigateFolderContext | undefined>;
|
|
11
|
-
export interface NavigateFolderProviderProps {
|
|
12
|
-
folderId: string | undefined;
|
|
13
|
-
children: React.ReactNode;
|
|
14
|
-
navigateToFolder: (folderId: string) => void;
|
|
15
|
-
createStorageKey: () => string;
|
|
16
|
-
}
|
|
17
|
-
export declare const NavigateFolderProvider: ({ folderId: currentFolderId, children, createStorageKey, ...props }: NavigateFolderProviderProps) => React.JSX.Element;
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import react, { useCallback, useEffect } from "react";
|
|
2
|
-
import { ROOT_FOLDER } from "../constants.js";
|
|
3
|
-
import { useLocalStorage } from "@webiny/app/exports/admin/local-storage.js";
|
|
4
|
-
const NavigateFolderContext = /*#__PURE__*/ react.createContext(void 0);
|
|
5
|
-
const NavigateFolderProvider = ({ folderId: currentFolderId, children, createStorageKey, ...props })=>{
|
|
6
|
-
const localStorage = useLocalStorage();
|
|
7
|
-
const setFolderToStorage = useCallback((newFolderId)=>{
|
|
8
|
-
localStorage.set(createStorageKey(), newFolderId);
|
|
9
|
-
}, [
|
|
10
|
-
createStorageKey
|
|
11
|
-
]);
|
|
12
|
-
const getFolderFromStorage = useCallback(()=>{
|
|
13
|
-
const folderId = localStorage.get(createStorageKey());
|
|
14
|
-
return folderId?.toLowerCase();
|
|
15
|
-
}, [
|
|
16
|
-
createStorageKey
|
|
17
|
-
]);
|
|
18
|
-
useEffect(()=>{
|
|
19
|
-
setTimeout(()=>{
|
|
20
|
-
navigateToLatestFolder();
|
|
21
|
-
});
|
|
22
|
-
}, []);
|
|
23
|
-
const navigateToLatestFolder = useCallback(()=>{
|
|
24
|
-
const storageFolderId = getFolderFromStorage();
|
|
25
|
-
if (!currentFolderId) props.navigateToFolder(storageFolderId || ROOT_FOLDER);
|
|
26
|
-
}, [
|
|
27
|
-
currentFolderId
|
|
28
|
-
]);
|
|
29
|
-
const navigateToFolder = useCallback((folderId)=>{
|
|
30
|
-
setFolderToStorage(folderId);
|
|
31
|
-
props.navigateToFolder(folderId || ROOT_FOLDER);
|
|
32
|
-
}, [
|
|
33
|
-
currentFolderId
|
|
34
|
-
]);
|
|
35
|
-
const navigateToListHome = ()=>{
|
|
36
|
-
localStorage.remove(createStorageKey());
|
|
37
|
-
props.navigateToFolder(ROOT_FOLDER);
|
|
38
|
-
};
|
|
39
|
-
const finalFolderId = currentFolderId || getFolderFromStorage() || ROOT_FOLDER;
|
|
40
|
-
const context = {
|
|
41
|
-
currentFolderId: finalFolderId,
|
|
42
|
-
isRootFolder: finalFolderId === ROOT_FOLDER,
|
|
43
|
-
setFolderToStorage,
|
|
44
|
-
navigateToListHome,
|
|
45
|
-
navigateToFolder,
|
|
46
|
-
navigateToLatestFolder
|
|
47
|
-
};
|
|
48
|
-
return /*#__PURE__*/ react.createElement(NavigateFolderContext.Provider, {
|
|
49
|
-
value: context
|
|
50
|
-
}, children);
|
|
51
|
-
};
|
|
52
|
-
export { NavigateFolderContext, NavigateFolderProvider };
|
|
53
|
-
|
|
54
|
-
//# sourceMappingURL=navigateFolder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contexts/navigateFolder.js","sources":["../../src/contexts/navigateFolder.tsx"],"sourcesContent":["import React, { useCallback, useEffect } from \"react\";\nimport { ROOT_FOLDER } from \"~/constants.js\";\nimport { useLocalStorage } from \"@webiny/app/exports/admin/local-storage.js\";\n\nexport interface NavigateFolderContext {\n currentFolderId: string;\n isRootFolder: boolean;\n setFolderToStorage: (folderId?: string) => void;\n navigateToListHome: () => void;\n navigateToFolder: (folder?: string) => void;\n navigateToLatestFolder: () => void;\n}\n\nexport const NavigateFolderContext = React.createContext<NavigateFolderContext | undefined>(\n undefined\n);\n\nexport interface NavigateFolderProviderProps {\n folderId: string | undefined;\n children: React.ReactNode;\n navigateToFolder: (folderId: string) => void;\n createStorageKey: () => string;\n}\n\nexport const NavigateFolderProvider = ({\n folderId: currentFolderId,\n children,\n createStorageKey,\n ...props\n}: NavigateFolderProviderProps) => {\n const localStorage = useLocalStorage();\n /**\n * Helper function to set the current folderId to local storage:\n * we export this function to call it programmatically when we need it and\n * persist the value on view switch.\n */\n const setFolderToStorage = useCallback(\n (newFolderId?: string): void => {\n localStorage.set(createStorageKey(), newFolderId);\n },\n [createStorageKey]\n );\n\n const getFolderFromStorage = useCallback((): string | undefined => {\n const folderId = localStorage.get(createStorageKey());\n return folderId?.toLowerCase();\n }, [createStorageKey]);\n\n useEffect(() => {\n setTimeout(() => {\n // Defer navigation to next tick.\n navigateToLatestFolder();\n });\n }, []);\n\n /**\n * Navigate to the latest visited folder.\n */\n const navigateToLatestFolder = useCallback(() => {\n const storageFolderId = getFolderFromStorage();\n if (!currentFolderId) {\n props.navigateToFolder(storageFolderId || ROOT_FOLDER);\n }\n }, [currentFolderId]);\n\n const navigateToFolder = useCallback(\n (folderId?: string) => {\n setFolderToStorage(folderId);\n props.navigateToFolder(folderId || ROOT_FOLDER);\n },\n [currentFolderId]\n );\n\n const navigateToListHome = () => {\n localStorage.remove(createStorageKey());\n props.navigateToFolder(ROOT_FOLDER);\n };\n\n const finalFolderId = currentFolderId || getFolderFromStorage() || ROOT_FOLDER;\n\n const context: NavigateFolderContext = {\n currentFolderId: finalFolderId,\n isRootFolder: finalFolderId === ROOT_FOLDER,\n setFolderToStorage,\n navigateToListHome,\n navigateToFolder,\n navigateToLatestFolder\n };\n\n return (\n <NavigateFolderContext.Provider value={context}>{children}</NavigateFolderContext.Provider>\n );\n};\n"],"names":["NavigateFolderContext","React","undefined","NavigateFolderProvider","currentFolderId","children","createStorageKey","props","localStorage","useLocalStorage","setFolderToStorage","useCallback","newFolderId","getFolderFromStorage","folderId","useEffect","setTimeout","navigateToLatestFolder","storageFolderId","ROOT_FOLDER","navigateToFolder","navigateToListHome","finalFolderId","context"],"mappings":";;;AAaO,MAAMA,wBAAwB,WAAHA,GAAGC,MAAAA,aAAmB,CACpDC;AAUG,MAAMC,yBAAyB,CAAC,EACnC,UAAUC,eAAe,EACzBC,QAAQ,EACRC,gBAAgB,EAChB,GAAGC,OACuB;IAC1B,MAAMC,eAAeC;IAMrB,MAAMC,qBAAqBC,YACvB,CAACC;QACGJ,aAAa,GAAG,CAACF,oBAAoBM;IACzC,GACA;QAACN;KAAiB;IAGtB,MAAMO,uBAAuBF,YAAY;QACrC,MAAMG,WAAWN,aAAa,GAAG,CAACF;QAClC,OAAOQ,UAAU;IACrB,GAAG;QAACR;KAAiB;IAErBS,UAAU;QACNC,WAAW;YAEPC;QACJ;IACJ,GAAG,EAAE;IAKL,MAAMA,yBAAyBN,YAAY;QACvC,MAAMO,kBAAkBL;QACxB,IAAI,CAACT,iBACDG,MAAM,gBAAgB,CAACW,mBAAmBC;IAElD,GAAG;QAACf;KAAgB;IAEpB,MAAMgB,mBAAmBT,YACrB,CAACG;QACGJ,mBAAmBI;QACnBP,MAAM,gBAAgB,CAACO,YAAYK;IACvC,GACA;QAACf;KAAgB;IAGrB,MAAMiB,qBAAqB;QACvBb,aAAa,MAAM,CAACF;QACpBC,MAAM,gBAAgB,CAACY;IAC3B;IAEA,MAAMG,gBAAgBlB,mBAAmBS,0BAA0BM;IAEnE,MAAMI,UAAiC;QACnC,iBAAiBD;QACjB,cAAcA,kBAAkBH;QAChCT;QACAW;QACAD;QACAH;IACJ;IAEA,OAAO,WAAP,GACI,oBAACjB,sBAAsB,QAAQ;QAAC,OAAOuB;OAAUlB;AAEzD"}
|