@webiny/app-aco 5.40.5-beta.0 → 5.41.0-dbt.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/AdvancedSearch/QueryManagerDialog/QueryManagerDialog.d.ts +1 -1
- package/components/AdvancedSearch/QueryManagerDialog/components/FilterList.d.ts +1 -1
- package/components/AdvancedSearch/domain/Field.d.ts +1 -1
- package/components/AdvancedSearch/domain/Filter.d.ts +17 -17
- package/components/AdvancedSearch/domain/Sorter.d.ts +2 -2
- package/components/AdvancedSearch/gateways/filters.types.d.ts +1 -1
- package/components/FolderTree/ButtonCreate/index.d.ts +1 -1
- package/components/FolderTree/Node/index.d.ts +2 -2
- package/components/FolderTree/Node/styled.d.ts +2 -2
- package/components/FolderTree/NodePreview/index.d.ts +1 -1
- package/components/Table/createTableData.d.ts +1 -1
- package/contexts/acoList.d.ts +8 -0
- package/contexts/acoList.js +114 -13
- package/contexts/acoList.js.map +1 -1
- package/contexts/app.d.ts +1 -1
- package/contexts/records.d.ts +1 -1
- package/hooks/useFolders.d.ts +1 -1
- package/package.json +17 -17
- package/table.types.d.ts +2 -2
- package/types.d.ts +7 -7
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { QueryManagerFilter } from "../QueryManagerDialog";
|
|
3
|
-
|
|
3
|
+
type filterCallback = (filterId: string) => void;
|
|
4
4
|
interface FilterListProps {
|
|
5
5
|
onEdit: filterCallback;
|
|
6
6
|
onRename: filterCallback;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { CmsModelField } from "@webiny/app-headless-cms-common/types/model";
|
|
3
|
-
export
|
|
3
|
+
export type FieldRaw = Pick<CmsModelField, "id" | "type" | "label" | "multipleValues" | "predefinedValues" | "settings">;
|
|
4
4
|
export declare enum FieldType {
|
|
5
5
|
TEXT = "text",
|
|
6
6
|
NUMBER = "number",
|
|
@@ -17,7 +17,7 @@ export interface FilterDTO {
|
|
|
17
17
|
groups: FilterGroupDTO[];
|
|
18
18
|
createdOn?: string;
|
|
19
19
|
}
|
|
20
|
-
export
|
|
20
|
+
export type FilterStorage = Omit<FilterDTO, "createdOn">;
|
|
21
21
|
export declare const filterValidationSchema: zod.ZodObject<{
|
|
22
22
|
id: zod.ZodOptional<zod.ZodNullable<zod.ZodOptional<zod.ZodString>>>;
|
|
23
23
|
name: zod.ZodString;
|
|
@@ -39,45 +39,45 @@ export declare const filterValidationSchema: zod.ZodObject<{
|
|
|
39
39
|
condition: string;
|
|
40
40
|
}>, "many">;
|
|
41
41
|
}, "strip", zod.ZodTypeAny, {
|
|
42
|
-
operation: Operation;
|
|
43
42
|
filters: {
|
|
44
43
|
value: (string | number | boolean | [string | number | boolean, ...(string | number | boolean)[]]) & (string | number | boolean | [string | number | boolean, ...(string | number | boolean)[]] | undefined);
|
|
45
44
|
field: string;
|
|
46
45
|
condition: string;
|
|
47
46
|
}[];
|
|
48
|
-
}, {
|
|
49
47
|
operation: Operation;
|
|
48
|
+
}, {
|
|
50
49
|
filters: {
|
|
51
50
|
value: (string | number | boolean | [string | number | boolean, ...(string | number | boolean)[]]) & (string | number | boolean | [string | number | boolean, ...(string | number | boolean)[]] | undefined);
|
|
52
51
|
field: string;
|
|
53
52
|
condition: string;
|
|
54
53
|
}[];
|
|
54
|
+
operation: Operation;
|
|
55
55
|
}>, "many">;
|
|
56
56
|
}, "strip", zod.ZodTypeAny, {
|
|
57
|
-
name: string;
|
|
58
|
-
description: string;
|
|
59
|
-
operation: Operation;
|
|
60
57
|
groups: {
|
|
61
|
-
operation: Operation;
|
|
62
58
|
filters: {
|
|
63
59
|
value: (string | number | boolean | [string | number | boolean, ...(string | number | boolean)[]]) & (string | number | boolean | [string | number | boolean, ...(string | number | boolean)[]] | undefined);
|
|
64
60
|
field: string;
|
|
65
61
|
condition: string;
|
|
66
62
|
}[];
|
|
63
|
+
operation: Operation;
|
|
67
64
|
}[];
|
|
68
|
-
id?: string | null | undefined;
|
|
69
|
-
}, {
|
|
70
65
|
name: string;
|
|
71
66
|
description: string;
|
|
72
67
|
operation: Operation;
|
|
68
|
+
id?: string | null | undefined;
|
|
69
|
+
}, {
|
|
73
70
|
groups: {
|
|
74
|
-
operation: Operation;
|
|
75
71
|
filters: {
|
|
76
72
|
value: (string | number | boolean | [string | number | boolean, ...(string | number | boolean)[]]) & (string | number | boolean | [string | number | boolean, ...(string | number | boolean)[]] | undefined);
|
|
77
73
|
field: string;
|
|
78
74
|
condition: string;
|
|
79
75
|
}[];
|
|
76
|
+
operation: Operation;
|
|
80
77
|
}[];
|
|
78
|
+
name: string;
|
|
79
|
+
description: string;
|
|
80
|
+
operation: Operation;
|
|
81
81
|
id?: string | null | undefined;
|
|
82
82
|
}>;
|
|
83
83
|
export declare class Filter {
|
|
@@ -91,30 +91,30 @@ export declare class Filter {
|
|
|
91
91
|
static createEmpty(): Filter;
|
|
92
92
|
static create(data: FilterDTO): Filter;
|
|
93
93
|
static validate(data: FilterDTO): zod.SafeParseReturnType<{
|
|
94
|
-
name: string;
|
|
95
|
-
description: string;
|
|
96
|
-
operation: Operation;
|
|
97
94
|
groups: {
|
|
98
|
-
operation: Operation;
|
|
99
95
|
filters: {
|
|
100
96
|
value: (string | number | boolean | [string | number | boolean, ...(string | number | boolean)[]]) & (string | number | boolean | [string | number | boolean, ...(string | number | boolean)[]] | undefined);
|
|
101
97
|
field: string;
|
|
102
98
|
condition: string;
|
|
103
99
|
}[];
|
|
100
|
+
operation: Operation;
|
|
104
101
|
}[];
|
|
105
|
-
id?: string | null | undefined;
|
|
106
|
-
}, {
|
|
107
102
|
name: string;
|
|
108
103
|
description: string;
|
|
109
104
|
operation: Operation;
|
|
105
|
+
id?: string | null | undefined;
|
|
106
|
+
}, {
|
|
110
107
|
groups: {
|
|
111
|
-
operation: Operation;
|
|
112
108
|
filters: {
|
|
113
109
|
value: (string | number | boolean | [string | number | boolean, ...(string | number | boolean)[]]) & (string | number | boolean | [string | number | boolean, ...(string | number | boolean)[]] | undefined);
|
|
114
110
|
field: string;
|
|
115
111
|
condition: string;
|
|
116
112
|
}[];
|
|
113
|
+
operation: Operation;
|
|
117
114
|
}[];
|
|
115
|
+
name: string;
|
|
116
|
+
description: string;
|
|
117
|
+
operation: Operation;
|
|
118
118
|
id?: string | null | undefined;
|
|
119
119
|
}>;
|
|
120
120
|
protected constructor(data: {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
type ListOrderItem = `${string}_ASC` | `${string}_DESC`;
|
|
2
|
+
type ListOrder = ListOrderItem[];
|
|
3
3
|
export declare class Sorter<T> {
|
|
4
4
|
private _order;
|
|
5
5
|
constructor(order: ListOrder);
|
|
@@ -39,7 +39,7 @@ export interface CreateFilterResponse {
|
|
|
39
39
|
};
|
|
40
40
|
};
|
|
41
41
|
}
|
|
42
|
-
export
|
|
42
|
+
export type UpdateFilterPayload = Partial<FilterStorage>;
|
|
43
43
|
export interface UpdateFilterVariables {
|
|
44
44
|
id: string;
|
|
45
45
|
data: Omit<UpdateFilterPayload, "id">;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { NodeModel } from "@minoru/react-dnd-treeview";
|
|
3
3
|
import { DndFolderItemData, FolderItem } from "../../../types";
|
|
4
|
-
|
|
4
|
+
type NodeProps = {
|
|
5
5
|
node: NodeModel<DndFolderItemData>;
|
|
6
6
|
depth: number;
|
|
7
7
|
isOpen: boolean;
|
|
@@ -9,7 +9,7 @@ declare type NodeProps = {
|
|
|
9
9
|
onToggle: (id: string | number) => void;
|
|
10
10
|
onClick: (data: FolderItem) => void;
|
|
11
11
|
};
|
|
12
|
-
|
|
12
|
+
type FolderProps = {
|
|
13
13
|
text: string;
|
|
14
14
|
isRoot: boolean;
|
|
15
15
|
isOpen: boolean;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
|
|
2
|
+
type ContainerProps = {
|
|
3
3
|
isFocused: boolean;
|
|
4
4
|
};
|
|
5
|
-
|
|
5
|
+
type ArrowIconContainerProps = {
|
|
6
6
|
isOpen: boolean;
|
|
7
7
|
};
|
|
8
8
|
export declare const Container: import("@emotion/styled").StyledComponent<{
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { DragLayerMonitorProps } from "@minoru/react-dnd-treeview";
|
|
3
3
|
import { DndFolderItemData } from "../../../types";
|
|
4
|
-
|
|
4
|
+
type NodePreviewProps = {
|
|
5
5
|
monitorProps: DragLayerMonitorProps<DndFolderItemData>;
|
|
6
6
|
};
|
|
7
7
|
export declare const NodePreview: (props: NodePreviewProps) => React.JSX.Element;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FolderTableItem, RecordTableItem } from "../../table.types";
|
|
2
2
|
import { FolderItem } from "../../types";
|
|
3
|
-
|
|
3
|
+
type Result<T> = Array<RecordTableItem & T>;
|
|
4
4
|
export declare const createRecordsData: <T>(items: T[]) => Result<T>;
|
|
5
5
|
export declare const createFoldersData: (items: FolderItem[]) => FolderTableItem[];
|
|
6
6
|
export {};
|
package/contexts/acoList.d.ts
CHANGED
|
@@ -17,6 +17,12 @@ export interface AcoListContextData<T> {
|
|
|
17
17
|
setSelected: (selected: T[]) => void;
|
|
18
18
|
showFilters: () => void;
|
|
19
19
|
showingFilters: boolean;
|
|
20
|
+
showingSelectAll: boolean;
|
|
21
|
+
searchQuery: string;
|
|
22
|
+
isSelectedAll: boolean;
|
|
23
|
+
selectAll: () => void;
|
|
24
|
+
unselectAll: () => void;
|
|
25
|
+
getWhere: () => Record<string, any>;
|
|
20
26
|
}
|
|
21
27
|
export declare const AcoListContext: React.Context<AcoListContextData<GenericSearchData> | undefined>;
|
|
22
28
|
export interface State<T> {
|
|
@@ -29,6 +35,8 @@ export interface State<T> {
|
|
|
29
35
|
searchQuery: string;
|
|
30
36
|
selected: T[];
|
|
31
37
|
showingFilters: boolean;
|
|
38
|
+
showingSelectAll: boolean;
|
|
39
|
+
isSelectedAll: boolean;
|
|
32
40
|
}
|
|
33
41
|
export interface AcoListProviderProps {
|
|
34
42
|
children: React.ReactNode;
|
package/contexts/acoList.js
CHANGED
|
@@ -32,7 +32,9 @@ var initializeAcoListState = function initializeAcoListState() {
|
|
|
32
32
|
listSort: [],
|
|
33
33
|
searchQuery: "",
|
|
34
34
|
selected: [],
|
|
35
|
-
showingFilters: false
|
|
35
|
+
showingFilters: false,
|
|
36
|
+
showingSelectAll: false,
|
|
37
|
+
isSelectedAll: false
|
|
36
38
|
};
|
|
37
39
|
};
|
|
38
40
|
var getCurrentFolderList = function getCurrentFolderList(folders, currentFolderId) {
|
|
@@ -124,7 +126,9 @@ var AcoListProvider = exports.AcoListProvider = function AcoListProvider(_ref) {
|
|
|
124
126
|
isSearch: false,
|
|
125
127
|
searchQuery: "",
|
|
126
128
|
selected: [],
|
|
127
|
-
showingFilters: false
|
|
129
|
+
showingFilters: false,
|
|
130
|
+
showingSelectAll: false,
|
|
131
|
+
isSelectedAll: false
|
|
128
132
|
});
|
|
129
133
|
});
|
|
130
134
|
}, [currentFolderId]);
|
|
@@ -190,6 +194,33 @@ var AcoListProvider = exports.AcoListProvider = function AcoListProvider(_ref) {
|
|
|
190
194
|
}
|
|
191
195
|
}, [meta]);
|
|
192
196
|
|
|
197
|
+
/**
|
|
198
|
+
* Constructs a "where" condition object based on the current state and properties.
|
|
199
|
+
*
|
|
200
|
+
* This function creates a "where" object used to filter data based on the current folder ID,
|
|
201
|
+
* ownership status, and other existing filters in the state.
|
|
202
|
+
*
|
|
203
|
+
* @returns {Object} A "where" condition object containing filters for querying data.
|
|
204
|
+
*/
|
|
205
|
+
var getWhere = (0, _react.useCallback)(function () {
|
|
206
|
+
// Initialize an empty object
|
|
207
|
+
var where = {};
|
|
208
|
+
|
|
209
|
+
// Check if the current folder ID is not the ROOT_FOLDER folder
|
|
210
|
+
if (state.folderId !== _constants.ROOT_FOLDER) {
|
|
211
|
+
// Get descendant folder IDs of the current folder
|
|
212
|
+
var descendantFolderIds = getDescendantFolders(state.folderId).map(function (folder) {
|
|
213
|
+
return folder.id;
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
// Set the locationWhere object with descendant folder IDs
|
|
217
|
+
where = _dotPropImmutable.default.set({}, folderIdInPath, descendantFolderIds);
|
|
218
|
+
}
|
|
219
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({
|
|
220
|
+
createdBy: props.own ? identity?.id : undefined
|
|
221
|
+
}, state.filters), where);
|
|
222
|
+
}, [folders, state.folderId, state.filters, props.own, identity]);
|
|
223
|
+
|
|
193
224
|
/**
|
|
194
225
|
* Any time we receive new useful `state` params:
|
|
195
226
|
* - we fetch records according to the new params
|
|
@@ -200,15 +231,12 @@ var AcoListProvider = exports.AcoListProvider = function AcoListProvider(_ref) {
|
|
|
200
231
|
return;
|
|
201
232
|
}
|
|
202
233
|
var isSearch = Boolean(state.searchQuery || state.filters && Object.values(state.filters).filter(Boolean).length);
|
|
203
|
-
var
|
|
234
|
+
var where = _dotPropImmutable.default.set({}, folderIdPath, state.folderId);
|
|
204
235
|
if (isSearch) {
|
|
205
236
|
if (state.folderId === _constants.ROOT_FOLDER) {
|
|
206
|
-
|
|
237
|
+
where = undefined;
|
|
207
238
|
} else {
|
|
208
|
-
|
|
209
|
-
return folder.id;
|
|
210
|
-
});
|
|
211
|
-
locationWhere = _dotPropImmutable.default.set({}, folderIdInPath, descendantFolderIds);
|
|
239
|
+
where = getWhere();
|
|
212
240
|
}
|
|
213
241
|
}
|
|
214
242
|
var params = {
|
|
@@ -216,9 +244,7 @@ var AcoListProvider = exports.AcoListProvider = function AcoListProvider(_ref) {
|
|
|
216
244
|
sort: (0, _sorting.validateOrGetDefaultDbSort)(state.listSort),
|
|
217
245
|
search: state.searchQuery,
|
|
218
246
|
after: state.after,
|
|
219
|
-
where:
|
|
220
|
-
createdBy: props.own ? identity.id : undefined
|
|
221
|
-
}, locationWhere), state.filters)
|
|
247
|
+
where: where
|
|
222
248
|
};
|
|
223
249
|
await listRecords(params);
|
|
224
250
|
setState(function (state) {
|
|
@@ -228,8 +254,67 @@ var AcoListProvider = exports.AcoListProvider = function AcoListProvider(_ref) {
|
|
|
228
254
|
});
|
|
229
255
|
};
|
|
230
256
|
listItems();
|
|
231
|
-
}, [state.folderId, state.filters, state.searchQuery, state.after, state.listSort]);
|
|
232
|
-
|
|
257
|
+
}, [state.folderId, state.filters, state.searchQuery, state.after, state.listSort, state.limit, props.own, identity]);
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* useEffect hook to determine if the "Select All" option should be displayed based on the current state and meta properties:
|
|
261
|
+
* - if in the root folder with no folders, checks if all records are selected.
|
|
262
|
+
* - if in a non-root folder with multiple descendant folders, checks if all records are selected.
|
|
263
|
+
* - if there are more items to load, checks if all records are selected.
|
|
264
|
+
*/
|
|
265
|
+
(0, _react.useEffect)(function () {
|
|
266
|
+
// Destructure relevant properties from state and meta
|
|
267
|
+
var selected = state.selected,
|
|
268
|
+
folderId = state.folderId;
|
|
269
|
+
var hasMoreItems = meta.hasMoreItems;
|
|
270
|
+
|
|
271
|
+
// Retrieve all descendant folders of the current folderId
|
|
272
|
+
var folderWithChildren = getDescendantFolders(folderId);
|
|
273
|
+
|
|
274
|
+
// Compute the lengths of various arrays for later comparisons
|
|
275
|
+
var foldersLength = folders.length;
|
|
276
|
+
var recordsLength = records.length;
|
|
277
|
+
var selectedLength = selected.length;
|
|
278
|
+
var folderWithChildrenLength = folderWithChildren.length;
|
|
279
|
+
|
|
280
|
+
// Function to determine if all records are selected
|
|
281
|
+
var getAllRecordsAreSelected = function getAllRecordsAreSelected() {
|
|
282
|
+
return !!recordsLength && recordsLength === selectedLength;
|
|
283
|
+
};
|
|
284
|
+
|
|
285
|
+
// Initialize a flag to determine if the "Select All" option should be shown
|
|
286
|
+
var showingSelectAll = false;
|
|
287
|
+
|
|
288
|
+
// If in the root folder and there are some folders, check if all records are selected
|
|
289
|
+
if (folderId === _constants.ROOT_FOLDER && foldersLength > 0) {
|
|
290
|
+
showingSelectAll = getAllRecordsAreSelected();
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
// If not in the root folder and there are multiple descendant folders, check if all records are selected
|
|
294
|
+
if (folderId !== _constants.ROOT_FOLDER && folderWithChildrenLength > 1) {
|
|
295
|
+
showingSelectAll = getAllRecordsAreSelected();
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
// If there are more items to load, check if all records are selected
|
|
299
|
+
if (hasMoreItems) {
|
|
300
|
+
showingSelectAll = getAllRecordsAreSelected();
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
// Update the component's state based on the computed showingSelectAll flag
|
|
304
|
+
setState(function (prevState) {
|
|
305
|
+
// Only update if there is a change in showingSelectAll or if isSelectedAll was true previously
|
|
306
|
+
if (!prevState.isSelectedAll && prevState.showingSelectAll === showingSelectAll) {
|
|
307
|
+
return prevState;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
// Return the new state with updated showingSelectAll and reset isSelectedAll to false
|
|
311
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, prevState), {}, {
|
|
312
|
+
isSelectedAll: false,
|
|
313
|
+
showingSelectAll: showingSelectAll
|
|
314
|
+
});
|
|
315
|
+
});
|
|
316
|
+
}, [records.length, folders.length, state.isSearch, meta.hasMoreItems, state.selected.length, state.folderId]);
|
|
317
|
+
var context = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _pick.default)(state, ["isSearch", "searchQuery", "selected", "showingFilters", "showingSelectAll", "isSelectedAll"])), {}, {
|
|
233
318
|
folders: folders,
|
|
234
319
|
records: records,
|
|
235
320
|
listTitle: listTitle,
|
|
@@ -295,6 +380,22 @@ var AcoListProvider = exports.AcoListProvider = function AcoListProvider(_ref) {
|
|
|
295
380
|
});
|
|
296
381
|
});
|
|
297
382
|
},
|
|
383
|
+
selectAll: function selectAll() {
|
|
384
|
+
setState(function (state) {
|
|
385
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, state), {}, {
|
|
386
|
+
isSelectedAll: true
|
|
387
|
+
});
|
|
388
|
+
});
|
|
389
|
+
},
|
|
390
|
+
unselectAll: function unselectAll() {
|
|
391
|
+
setState(function (state) {
|
|
392
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, state), {}, {
|
|
393
|
+
selected: [],
|
|
394
|
+
isSelectedAll: false
|
|
395
|
+
});
|
|
396
|
+
});
|
|
397
|
+
},
|
|
398
|
+
getWhere: getWhere,
|
|
298
399
|
listMoreRecords: listMoreRecords
|
|
299
400
|
});
|
|
300
401
|
return /*#__PURE__*/_react.default.createElement(AcoListContext.Provider, {
|
package/contexts/acoList.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_dotPropImmutable","_interopRequireDefault","_pick","_appAdmin","_appSecurity","_hooks","_folders","_records","_sorting","_constants","_excluded","AcoListContext","exports","React","createContext","undefined","initializeAcoListState","after","filters","folderId","isSearch","limit","listSort","searchQuery","selected","showingFilters","getCurrentFolderList","folders","currentFolderId","toLowerCase","ROOT_FOLDER","filter","folder","parentId","getCurrentRecordList","records","folderIdPath","record","dotPropImmutable","get","AcoListProvider","_ref","children","props","_objectWithoutProperties2","default","_useSecurity","useSecurity","identity","_useNavigateFolder","useNavigateFolder","_useAcoApp","useAcoApp","folderIdInPath","folderContext","useContext","FoldersContext","searchContext","SearchRecordsContext","Error","_useStateIfMounted","useStateIfMounted","_useStateIfMounted2","_slicedToArray2","setFolders","_useStateIfMounted3","_useStateIfMounted4","setRecords","_useStateIfMounted5","_useStateIfMounted6","listTitle","setListTitle","_useStateIfMounted7","_useStateIfMounted8","state","setState","originalFolders","foldersLoading","loading","listFolders","getDescendantFolders","originalRecords","recordsLoading","listRecords","meta","useEffect","_objectSpread2","currentFolder","find","id","title","subFolders","sortTableItems","subRecords","prev","titleField","titleFieldId","_defineProperty2","listMoreRecords","useCallback","hasMoreItems","cursor","listItems","Boolean","Object","values","length","locationWhere","set","descendantFolderIds","map","params","sort","validateOrGetDefaultDbSort","search","where","createdBy","own","context","pick","isListLoading","INIT","LIST","isListLoadingMore","LIST_MORE","setSearchQuery","query","setFilters","data","fromEntries","entries","_ref2","_ref3","value","keys","setListSort","setSelected","hideFilters","showFilters","createElement","Provider"],"sources":["acoList.tsx"],"sourcesContent":["import React, { useCallback, useContext, useEffect } from \"react\";\nimport dotPropImmutable from \"dot-prop-immutable\";\nimport pick from \"lodash/pick\";\nimport { useStateIfMounted } from \"@webiny/app-admin\";\nimport { useSecurity } from \"@webiny/app-security\";\nimport {\n FolderItem,\n GenericSearchData,\n ListMeta,\n ListSearchRecordsQueryVariables,\n ListSearchRecordsSort,\n SearchRecordItem\n} from \"~/types\";\nimport { useAcoApp, useNavigateFolder } from \"~/hooks\";\nimport { FoldersContext } from \"~/contexts/folders\";\nimport { SearchRecordsContext } from \"~/contexts/records\";\nimport { sortTableItems, validateOrGetDefaultDbSort } from \"~/sorting\";\nimport { ROOT_FOLDER } from \"~/constants\";\n\nexport interface AcoListContextData<T> {\n folders: FolderItem[];\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}\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}\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 };\n};\n\nconst getCurrentFolderList = (\n folders?: FolderItem[] | null,\n currentFolderId?: string\n): FolderItem[] | [] => {\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 = 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 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<FolderItem[]>([]);\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 {\n folders: originalFolders,\n loading: foldersLoading,\n listFolders,\n getDescendantFolders\n } = folderContext;\n const { records: originalRecords, loading: recordsLoading, listRecords, meta } = searchContext;\n\n /**\n * On first mount, call `listFolders` 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 * IMPORTANT: we check if the folders[type] array exists: the hook can be used from multiple components and\n * fetch the outdated list from Apollo Cache. Since the state is managed locally, we fetch the folders only\n * at the first mount.\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 if (!currentFolderId) {\n return;\n }\n\n if (!originalFolders) {\n listFolders();\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 };\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 * 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 if (!state.folderId) {\n return;\n }\n\n const isSearch = Boolean(\n state.searchQuery ||\n (state.filters && Object.values(state.filters).filter(Boolean).length)\n );\n\n let locationWhere = dotPropImmutable.set({}, folderIdPath, state.folderId);\n\n if (isSearch) {\n if (state.folderId === ROOT_FOLDER) {\n locationWhere = undefined;\n } else {\n const descendantFolderIds = getDescendantFolders(state.folderId).map(\n folder => folder.id\n );\n locationWhere = dotPropImmutable.set({}, folderIdInPath, descendantFolderIds);\n }\n }\n\n const params: ListSearchRecordsQueryVariables = {\n limit: state.limit,\n sort: validateOrGetDefaultDbSort(state.listSort),\n search: state.searchQuery,\n after: state.after,\n where: {\n createdBy: props.own ? identity!.id : undefined,\n ...locationWhere,\n ...state.filters\n }\n };\n\n await listRecords(params);\n\n setState(state => ({ ...state, isSearch }));\n };\n\n listItems();\n }, [state.folderId, state.filters, state.searchQuery, state.after, state.listSort]);\n\n const context: AcoListContextData<GenericSearchData> = {\n ...pick(state, [\"isSearch\", \"selected\", \"showingFilters\"]),\n folders,\n records,\n listTitle,\n isListLoading: Boolean(\n recordsLoading.INIT || foldersLoading.INIT || recordsLoading.LIST || foldersLoading.LIST\n ),\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 listMoreRecords\n };\n\n return <AcoListContext.Provider value={context}>{children}</AcoListContext.Provider>;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_dotPropImmutable","_interopRequireDefault","_pick","_appAdmin","_appSecurity","_hooks","_folders","_records","_sorting","_constants","_excluded","AcoListContext","exports","React","createContext","undefined","initializeAcoListState","after","filters","folderId","isSearch","limit","listSort","searchQuery","selected","showingFilters","showingSelectAll","isSelectedAll","getCurrentFolderList","folders","currentFolderId","toLowerCase","ROOT_FOLDER","filter","folder","parentId","getCurrentRecordList","records","folderIdPath","record","dotPropImmutable","get","AcoListProvider","_ref","children","props","_objectWithoutProperties2","default","_useSecurity","useSecurity","identity","_useNavigateFolder","useNavigateFolder","_useAcoApp","useAcoApp","folderIdInPath","folderContext","useContext","FoldersContext","searchContext","SearchRecordsContext","Error","_useStateIfMounted","useStateIfMounted","_useStateIfMounted2","_slicedToArray2","setFolders","_useStateIfMounted3","_useStateIfMounted4","setRecords","_useStateIfMounted5","_useStateIfMounted6","listTitle","setListTitle","_useStateIfMounted7","_useStateIfMounted8","state","setState","originalFolders","foldersLoading","loading","listFolders","getDescendantFolders","originalRecords","recordsLoading","listRecords","meta","useEffect","_objectSpread2","currentFolder","find","id","title","subFolders","sortTableItems","subRecords","prev","titleField","titleFieldId","_defineProperty2","listMoreRecords","useCallback","hasMoreItems","cursor","getWhere","where","descendantFolderIds","map","set","createdBy","own","listItems","Boolean","Object","values","length","params","sort","validateOrGetDefaultDbSort","search","folderWithChildren","foldersLength","recordsLength","selectedLength","folderWithChildrenLength","getAllRecordsAreSelected","prevState","context","pick","isListLoading","INIT","LIST","isListLoadingMore","LIST_MORE","setSearchQuery","query","setFilters","data","fromEntries","entries","_ref2","_ref3","value","keys","setListSort","setSelected","hideFilters","showFilters","selectAll","unselectAll","createElement","Provider"],"sources":["acoList.tsx"],"sourcesContent":["import React, { useCallback, useContext, useEffect } from \"react\";\nimport dotPropImmutable from \"dot-prop-immutable\";\nimport pick from \"lodash/pick\";\nimport { useStateIfMounted } from \"@webiny/app-admin\";\nimport { useSecurity } from \"@webiny/app-security\";\nimport {\n FolderItem,\n GenericSearchData,\n ListMeta,\n ListSearchRecordsQueryVariables,\n ListSearchRecordsSort,\n SearchRecordItem\n} from \"~/types\";\nimport { useAcoApp, useNavigateFolder } from \"~/hooks\";\nimport { FoldersContext } from \"~/contexts/folders\";\nimport { SearchRecordsContext } from \"~/contexts/records\";\nimport { sortTableItems, validateOrGetDefaultDbSort } from \"~/sorting\";\nimport { ROOT_FOLDER } from \"~/constants\";\n\nexport interface AcoListContextData<T> {\n folders: FolderItem[];\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}\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?: FolderItem[] | null,\n currentFolderId?: string\n): FolderItem[] | [] => {\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 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<FolderItem[]>([]);\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 {\n folders: originalFolders,\n loading: foldersLoading,\n listFolders,\n getDescendantFolders\n } = folderContext;\n const { records: originalRecords, loading: recordsLoading, listRecords, meta } = searchContext;\n\n /**\n * On first mount, call `listFolders` 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 * IMPORTANT: we check if the folders[type] array exists: the hook can be used from multiple components and\n * fetch the outdated list from Apollo Cache. Since the state is managed locally, we fetch the folders only\n * at the first mount.\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 if (!currentFolderId) {\n return;\n }\n\n if (!originalFolders) {\n listFolders();\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 // 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 /**\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 if (!state.folderId) {\n return;\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 if (isSearch) {\n if (state.folderId === ROOT_FOLDER) {\n where = undefined;\n } else {\n where = getWhere();\n }\n }\n\n const params: ListSearchRecordsQueryVariables = {\n limit: state.limit,\n sort: validateOrGetDefaultDbSort(state.listSort),\n search: state.searchQuery,\n after: state.after,\n where\n };\n\n await listRecords(params);\n\n setState(state => ({ ...state, 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 /**\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 = 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 context: AcoListContextData<GenericSearchData> = {\n ...pick(state, [\n \"isSearch\",\n \"searchQuery\",\n \"selected\",\n \"showingFilters\",\n \"showingSelectAll\",\n \"isSelectedAll\"\n ]),\n folders,\n records,\n listTitle,\n isListLoading: Boolean(\n recordsLoading.INIT || foldersLoading.INIT || recordsLoading.LIST || foldersLoading.LIST\n ),\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 };\n\n return <AcoListContext.Provider value={context}>{children}</AcoListContext.Provider>;\n};\n"],"mappings":"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","ignoreList":[]}
|
package/contexts/app.d.ts
CHANGED
|
@@ -30,6 +30,6 @@ export interface AcoAppProviderPropsManual extends BaseAcoAppProviderProps {
|
|
|
30
30
|
model: AcoModel;
|
|
31
31
|
getFields?: () => AcoModelField[];
|
|
32
32
|
}
|
|
33
|
-
export
|
|
33
|
+
export type AcoAppProviderProps = AcoAppProviderPropsApi | AcoAppProviderPropsManual;
|
|
34
34
|
export declare const AcoAppProvider: ({ children, id, client, model: inputModel, getFields, folderIdQueryString, createNavigateFolderListLink, createNavigateFolderStorageKey, folderIdPath: initialFolderIdPath, own }: AcoAppProviderProps) => React.JSX.Element;
|
|
35
35
|
export {};
|
package/contexts/records.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { DeletableSearchRecordItem, ListMeta, ListSearchRecordsQueryVariables, L
|
|
|
3
3
|
interface ListTagsParams {
|
|
4
4
|
where?: ListTagsWhereQueryVariables;
|
|
5
5
|
}
|
|
6
|
-
export
|
|
6
|
+
export type ListRecordsParams = ListSearchRecordsQueryVariables;
|
|
7
7
|
interface SearchRecordsContext {
|
|
8
8
|
records: SearchRecordItem[];
|
|
9
9
|
tags: TagItem[];
|
package/hooks/useFolders.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export declare const useFolders: () => {
|
|
2
2
|
getFolder: (id: string) => Promise<import("../types").FolderItem>;
|
|
3
|
-
createFolder: (folder: Omit<import("../types").FolderItem, "
|
|
3
|
+
createFolder: (folder: Omit<import("../types").FolderItem, "type" | "id">) => Promise<import("../types").FolderItem>;
|
|
4
4
|
updateFolder: (folder: Omit<import("../types").FolderItem, "type">, options?: Partial<{
|
|
5
5
|
refetchFoldersList: boolean;
|
|
6
6
|
}> | undefined) => Promise<import("../types").FolderItem>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/app-aco",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.41.0-dbt.0",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -17,18 +17,18 @@
|
|
|
17
17
|
"@material-design-icons/svg": "0.14.13",
|
|
18
18
|
"@material-symbols/svg-400": "0.4.3",
|
|
19
19
|
"@minoru/react-dnd-treeview": "3.2.1",
|
|
20
|
-
"@webiny/app": "5.
|
|
21
|
-
"@webiny/app-admin": "5.
|
|
22
|
-
"@webiny/app-headless-cms-common": "5.
|
|
23
|
-
"@webiny/app-security": "5.
|
|
24
|
-
"@webiny/app-wcp": "5.
|
|
25
|
-
"@webiny/form": "5.
|
|
26
|
-
"@webiny/plugins": "5.
|
|
27
|
-
"@webiny/react-properties": "5.
|
|
28
|
-
"@webiny/react-router": "5.
|
|
29
|
-
"@webiny/ui": "5.
|
|
30
|
-
"@webiny/utils": "5.
|
|
31
|
-
"@webiny/validation": "5.
|
|
20
|
+
"@webiny/app": "5.41.0-dbt.0",
|
|
21
|
+
"@webiny/app-admin": "5.41.0-dbt.0",
|
|
22
|
+
"@webiny/app-headless-cms-common": "5.41.0-dbt.0",
|
|
23
|
+
"@webiny/app-security": "5.41.0-dbt.0",
|
|
24
|
+
"@webiny/app-wcp": "5.41.0-dbt.0",
|
|
25
|
+
"@webiny/form": "5.41.0-dbt.0",
|
|
26
|
+
"@webiny/plugins": "5.41.0-dbt.0",
|
|
27
|
+
"@webiny/react-properties": "5.41.0-dbt.0",
|
|
28
|
+
"@webiny/react-router": "5.41.0-dbt.0",
|
|
29
|
+
"@webiny/ui": "5.41.0-dbt.0",
|
|
30
|
+
"@webiny/utils": "5.41.0-dbt.0",
|
|
31
|
+
"@webiny/validation": "5.41.0-dbt.0",
|
|
32
32
|
"dot-prop-immutable": "2.1.1",
|
|
33
33
|
"graphql": "15.8.0",
|
|
34
34
|
"graphql-tag": "2.12.6",
|
|
@@ -51,13 +51,13 @@
|
|
|
51
51
|
"@babel/preset-typescript": "7.24.1",
|
|
52
52
|
"@babel/runtime": "7.24.1",
|
|
53
53
|
"@types/react": "18.2.79",
|
|
54
|
-
"@webiny/cli": "5.
|
|
55
|
-
"@webiny/project-utils": "5.
|
|
54
|
+
"@webiny/cli": "5.41.0-dbt.0",
|
|
55
|
+
"@webiny/project-utils": "5.41.0-dbt.0",
|
|
56
56
|
"apollo-client": "2.6.10",
|
|
57
57
|
"apollo-link": "1.2.14",
|
|
58
58
|
"rimraf": "5.0.5",
|
|
59
59
|
"ttypescript": "1.5.15",
|
|
60
|
-
"typescript": "4.
|
|
60
|
+
"typescript": "4.9.5"
|
|
61
61
|
},
|
|
62
62
|
"publishConfig": {
|
|
63
63
|
"access": "public",
|
|
@@ -67,5 +67,5 @@
|
|
|
67
67
|
"build": "yarn webiny run build",
|
|
68
68
|
"watch": "yarn webiny run watch"
|
|
69
69
|
},
|
|
70
|
-
"gitHead": "
|
|
70
|
+
"gitHead": "bbaec4dd1685579548c08bbde386aee5d96b80f8"
|
|
71
71
|
}
|
package/table.types.d.ts
CHANGED
|
@@ -14,8 +14,8 @@ export interface SearchRecordItem<TData extends GenericSearchData = GenericSearc
|
|
|
14
14
|
modifiedOn: string | null;
|
|
15
15
|
modifiedBy: CmsIdentity | null;
|
|
16
16
|
}
|
|
17
|
-
export
|
|
18
|
-
export
|
|
17
|
+
export type MovableSearchRecordItem = Pick<SearchRecordItem, "id" | "location">;
|
|
18
|
+
export type DeletableSearchRecordItem = Pick<SearchRecordItem, "id" | "location">;
|
|
19
19
|
export interface BaseTableItem {
|
|
20
20
|
$selectable: boolean;
|
|
21
21
|
$type: string;
|
package/types.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { CmsIdentity, CmsModel, CmsModelField, CmsModelFieldSettings } from "@we
|
|
|
2
2
|
export { CmsIdentity } from "@webiny/app-headless-cms-common/types";
|
|
3
3
|
export * from "./graphql/records/types";
|
|
4
4
|
export * from "./table.types";
|
|
5
|
-
export
|
|
5
|
+
export type FolderAccessLevel = "owner" | "viewer" | "editor" | "public";
|
|
6
6
|
export interface FolderPermission {
|
|
7
7
|
target: `admin:${string}` | `team:${string}`;
|
|
8
8
|
level: FolderAccessLevel;
|
|
@@ -33,7 +33,7 @@ export interface FolderItem {
|
|
|
33
33
|
modifiedBy: CmsIdentity | null;
|
|
34
34
|
modifiedOn: string | null;
|
|
35
35
|
}
|
|
36
|
-
export
|
|
36
|
+
export type GenericSearchData = {
|
|
37
37
|
[key: string]: any;
|
|
38
38
|
};
|
|
39
39
|
export interface Location {
|
|
@@ -42,17 +42,17 @@ export interface Location {
|
|
|
42
42
|
export interface TagItem {
|
|
43
43
|
tag: string;
|
|
44
44
|
}
|
|
45
|
-
export
|
|
45
|
+
export type Loading<T extends string> = {
|
|
46
46
|
[P in T]?: boolean;
|
|
47
47
|
};
|
|
48
|
-
export
|
|
48
|
+
export type LoadingActions = "INIT" | "LIST" | "LIST_MORE" | "GET" | "CREATE" | "UPDATE" | "DELETE" | "MOVE";
|
|
49
49
|
export interface AcoError {
|
|
50
50
|
code: string;
|
|
51
51
|
message: string;
|
|
52
52
|
data?: Record<string, any> | null;
|
|
53
53
|
}
|
|
54
|
-
export
|
|
55
|
-
export
|
|
54
|
+
export type ListSearchRecordsSortItem = `${string}_ASC` | `${string}_DESC`;
|
|
55
|
+
export type ListSearchRecordsSort = ListSearchRecordsSortItem[];
|
|
56
56
|
export interface ListMeta {
|
|
57
57
|
cursor: string | null;
|
|
58
58
|
totalCount: number;
|
|
@@ -124,7 +124,7 @@ export interface DndFolderItemData {
|
|
|
124
124
|
* This type will be removed when all apps migrate to the CMS.
|
|
125
125
|
* @deprecated
|
|
126
126
|
*/
|
|
127
|
-
export
|
|
127
|
+
export type AcoAppMode = "aco" | "cms";
|
|
128
128
|
/**
|
|
129
129
|
* Apps.
|
|
130
130
|
*/
|