@osdk/react-components 0.2.0-beta.3 → 0.2.0-beta.4
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/CHANGELOG.md +13 -0
- package/README.md +39 -22
- package/build/browser/object-table/DefaultCellRenderer.js +43 -0
- package/build/browser/object-table/DefaultCellRenderer.js.map +1 -0
- package/build/browser/object-table/EditableCell.js +91 -0
- package/build/browser/object-table/EditableCell.js.map +1 -0
- package/build/browser/object-table/EditableCell.module.css +3 -0
- package/build/browser/object-table/EditableCell.module.css.js +6 -0
- package/build/browser/object-table/ObjectTable.js +29 -2
- package/build/browser/object-table/ObjectTable.js.map +1 -1
- package/build/browser/object-table/ObjectTableApi.js.map +1 -1
- package/build/browser/object-table/Table.js +18 -3
- package/build/browser/object-table/Table.js.map +1 -1
- package/build/browser/object-table/Table.module.css +17 -1
- package/build/browser/object-table/Table.module.css.js +3 -1
- package/build/browser/object-table/TableBody.module.css +2 -0
- package/build/browser/object-table/TableCell.module.css +11 -1
- package/build/browser/object-table/TableHeader.module.css +4 -2
- package/build/browser/object-table/TableRow.module.css +2 -0
- package/build/browser/object-table/__tests__/useEditableTable.test.js +197 -0
- package/build/browser/object-table/__tests__/useEditableTable.test.js.map +1 -0
- package/build/browser/object-table/hooks/__tests__/useColumnDefs.test.js +13 -1
- package/build/browser/object-table/hooks/__tests__/useColumnDefs.test.js.map +1 -1
- package/build/browser/object-table/hooks/useColumnDefs.js +10 -2
- package/build/browser/object-table/hooks/useColumnDefs.js.map +1 -1
- package/build/browser/object-table/hooks/useEditableTable.js +57 -0
- package/build/browser/object-table/hooks/useEditableTable.js.map +1 -0
- package/build/browser/object-table/utils/getCellId.js +27 -0
- package/build/browser/object-table/utils/getCellId.js.map +1 -0
- package/build/browser/object-table/utils/types.js.map +1 -1
- package/build/browser/public/experimental.js.map +1 -1
- package/build/browser/styles.css +42 -4
- package/build/cjs/public/experimental.cjs +485 -289
- package/build/cjs/public/experimental.cjs.map +1 -1
- package/build/cjs/public/experimental.css +78 -48
- package/build/cjs/public/experimental.css.map +1 -1
- package/build/cjs/public/experimental.d.cts +44 -10
- package/build/esm/object-table/DefaultCellRenderer.js +43 -0
- package/build/esm/object-table/DefaultCellRenderer.js.map +1 -0
- package/build/esm/object-table/EditableCell.js +91 -0
- package/build/esm/object-table/EditableCell.js.map +1 -0
- package/build/esm/object-table/EditableCell.module.css +3 -0
- package/build/esm/object-table/ObjectTable.js +29 -2
- package/build/esm/object-table/ObjectTable.js.map +1 -1
- package/build/esm/object-table/ObjectTableApi.js.map +1 -1
- package/build/esm/object-table/Table.js +18 -3
- package/build/esm/object-table/Table.js.map +1 -1
- package/build/esm/object-table/Table.module.css +17 -1
- package/build/esm/object-table/TableBody.module.css +2 -0
- package/build/esm/object-table/TableCell.module.css +11 -1
- package/build/esm/object-table/TableHeader.module.css +4 -2
- package/build/esm/object-table/TableRow.module.css +2 -0
- package/build/esm/object-table/__tests__/useEditableTable.test.js +197 -0
- package/build/esm/object-table/__tests__/useEditableTable.test.js.map +1 -0
- package/build/esm/object-table/hooks/__tests__/useColumnDefs.test.js +13 -1
- package/build/esm/object-table/hooks/__tests__/useColumnDefs.test.js.map +1 -1
- package/build/esm/object-table/hooks/useColumnDefs.js +10 -2
- package/build/esm/object-table/hooks/useColumnDefs.js.map +1 -1
- package/build/esm/object-table/hooks/useEditableTable.js +57 -0
- package/build/esm/object-table/hooks/useEditableTable.js.map +1 -0
- package/build/esm/object-table/utils/getCellId.js +27 -0
- package/build/esm/object-table/utils/getCellId.js.map +1 -0
- package/build/esm/object-table/utils/types.js.map +1 -1
- package/build/esm/public/experimental.js.map +1 -1
- package/build/types/object-table/DefaultCellRenderer.d.ts +3 -0
- package/build/types/object-table/DefaultCellRenderer.d.ts.map +1 -0
- package/build/types/object-table/EditableCell.d.ts +10 -0
- package/build/types/object-table/EditableCell.d.ts.map +1 -0
- package/build/types/object-table/ObjectTable.d.ts +1 -1
- package/build/types/object-table/ObjectTable.d.ts.map +1 -1
- package/build/types/object-table/ObjectTableApi.d.ts +15 -0
- package/build/types/object-table/ObjectTableApi.d.ts.map +1 -1
- package/build/types/object-table/Table.d.ts +17 -3
- package/build/types/object-table/Table.d.ts.map +1 -1
- package/build/types/object-table/__tests__/useEditableTable.test.d.ts +1 -0
- package/build/types/object-table/__tests__/useEditableTable.test.d.ts.map +1 -0
- package/build/types/object-table/hooks/useColumnDefs.d.ts.map +1 -1
- package/build/types/object-table/hooks/useEditableTable.d.ts +22 -0
- package/build/types/object-table/hooks/useEditableTable.d.ts.map +1 -0
- package/build/types/object-table/utils/getCellId.d.ts +3 -0
- package/build/types/object-table/utils/getCellId.d.ts.map +1 -0
- package/build/types/object-table/utils/types.d.ts +9 -0
- package/build/types/object-table/utils/types.d.ts.map +1 -1
- package/build/types/public/experimental.d.ts +1 -0
- package/build/types/public/experimental.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var reactTable = require('@tanstack/react-table');
|
|
4
|
-
var
|
|
4
|
+
var React12 = require('react');
|
|
5
5
|
var react = require('@osdk/react');
|
|
6
|
+
var input = require('@base-ui/react/input');
|
|
6
7
|
var experimental = require('@osdk/react/experimental');
|
|
7
8
|
var checkbox = require('@base-ui/react/checkbox');
|
|
8
9
|
var icons = require('@blueprintjs/icons');
|
|
@@ -13,24 +14,136 @@ var sortable = require('@dnd-kit/sortable');
|
|
|
13
14
|
var dialog = require('@base-ui/react/dialog');
|
|
14
15
|
var core = require('@dnd-kit/core');
|
|
15
16
|
var utilities = require('@dnd-kit/utilities');
|
|
16
|
-
var input = require('@base-ui/react/input');
|
|
17
17
|
var menu = require('@base-ui/react/menu');
|
|
18
18
|
var reactVirtual = require('@tanstack/react-virtual');
|
|
19
19
|
var reactDom = require('react-dom');
|
|
20
20
|
|
|
21
21
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
22
22
|
|
|
23
|
-
var
|
|
23
|
+
var React12__default = /*#__PURE__*/_interopDefault(React12);
|
|
24
24
|
var classNames7__default = /*#__PURE__*/_interopDefault(classNames7);
|
|
25
25
|
|
|
26
26
|
// src/object-table/ObjectTable.tsx
|
|
27
|
+
|
|
28
|
+
// src/object-table/EditableCell.module.css
|
|
29
|
+
var EditableCell_default = {};
|
|
30
|
+
|
|
31
|
+
// src/object-table/EditableCell.tsx
|
|
32
|
+
var NUMBER_TYPES = ["double", "integer", "long", "float", "decimal", "byte", "short"];
|
|
33
|
+
function valueToString(value) {
|
|
34
|
+
if (value == null) {
|
|
35
|
+
return "";
|
|
36
|
+
}
|
|
37
|
+
if (typeof value === "object") {
|
|
38
|
+
return JSON.stringify(value);
|
|
39
|
+
}
|
|
40
|
+
return String(value);
|
|
41
|
+
}
|
|
42
|
+
function parseValueByType(value, dataType) {
|
|
43
|
+
if (!dataType || !NUMBER_TYPES.includes(dataType)) {
|
|
44
|
+
return value;
|
|
45
|
+
}
|
|
46
|
+
if (value === "") {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
const parsedNumber = Number(value);
|
|
50
|
+
if (isNaN(parsedNumber)) {
|
|
51
|
+
return value;
|
|
52
|
+
}
|
|
53
|
+
return parsedNumber;
|
|
54
|
+
}
|
|
55
|
+
function EditableCell({
|
|
56
|
+
initialValue,
|
|
57
|
+
currentValue,
|
|
58
|
+
cellId,
|
|
59
|
+
dataType,
|
|
60
|
+
onCellEdit
|
|
61
|
+
}) {
|
|
62
|
+
const [value, setValue] = React12.useState(valueToString(currentValue));
|
|
63
|
+
const isCancelled = React12.useRef(false);
|
|
64
|
+
React12.useEffect(() => {
|
|
65
|
+
setValue(valueToString(currentValue));
|
|
66
|
+
}, [currentValue]);
|
|
67
|
+
const handleBlur = React12.useCallback(() => {
|
|
68
|
+
if (isCancelled.current) {
|
|
69
|
+
isCancelled.current = false;
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const parsedValue = parseValueByType(value, dataType);
|
|
73
|
+
onCellEdit?.(cellId, {
|
|
74
|
+
newValue: parsedValue,
|
|
75
|
+
oldValue: initialValue
|
|
76
|
+
});
|
|
77
|
+
}, [value, initialValue, onCellEdit, cellId, dataType]);
|
|
78
|
+
const handleChange = React12.useCallback((value2) => {
|
|
79
|
+
setValue(value2);
|
|
80
|
+
}, []);
|
|
81
|
+
const handleKeyDown = React12.useCallback((e) => {
|
|
82
|
+
if (e.key === "Enter") {
|
|
83
|
+
e.currentTarget.blur();
|
|
84
|
+
}
|
|
85
|
+
if (e.key === "Escape") {
|
|
86
|
+
isCancelled.current = true;
|
|
87
|
+
setValue(valueToString(currentValue));
|
|
88
|
+
e.currentTarget.blur();
|
|
89
|
+
}
|
|
90
|
+
}, [currentValue]);
|
|
91
|
+
const inputType = dataType && NUMBER_TYPES.includes(dataType) ? "number" : "text";
|
|
92
|
+
return /* @__PURE__ */ React12__default.default.createElement(input.Input, {
|
|
93
|
+
className: EditableCell_default.osdkEditableInput,
|
|
94
|
+
type: inputType,
|
|
95
|
+
value,
|
|
96
|
+
onValueChange: handleChange,
|
|
97
|
+
onBlur: handleBlur,
|
|
98
|
+
onKeyDown: handleKeyDown
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// src/object-table/utils/getCellId.ts
|
|
103
|
+
function getCellId(cellIdentifier) {
|
|
104
|
+
return JSON.stringify(cellIdentifier);
|
|
105
|
+
}
|
|
106
|
+
function getCellIdentifier(cellId) {
|
|
107
|
+
const parsed = JSON.parse(cellId);
|
|
108
|
+
if (typeof parsed === "object" && parsed != null && "rowId" in parsed && "columnId" in parsed) {
|
|
109
|
+
return parsed;
|
|
110
|
+
}
|
|
111
|
+
throw new Error("Parsed cellId does not have required properties");
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// src/object-table/DefaultCellRenderer.tsx
|
|
115
|
+
function renderDefaultCell(cellContext) {
|
|
116
|
+
const meta = cellContext.table.options.meta;
|
|
117
|
+
const columnMeta = cellContext.column.columnDef.meta;
|
|
118
|
+
if (!columnMeta?.editable || !meta?.onCellEdit) {
|
|
119
|
+
return cellContext.getValue();
|
|
120
|
+
}
|
|
121
|
+
const rowId = cellContext.row.id;
|
|
122
|
+
const columnId = cellContext.column.id;
|
|
123
|
+
const cellId = getCellId({
|
|
124
|
+
rowId,
|
|
125
|
+
columnId
|
|
126
|
+
});
|
|
127
|
+
const cellEdits = meta.cellEdits;
|
|
128
|
+
const editedValue = cellEdits?.[cellId];
|
|
129
|
+
const currentValue = editedValue?.newValue ?? cellContext.getValue();
|
|
130
|
+
return /* @__PURE__ */ React12__default.default.createElement(EditableCell, {
|
|
131
|
+
initialValue: cellContext.getValue(),
|
|
132
|
+
currentValue,
|
|
133
|
+
cellId,
|
|
134
|
+
dataType: columnMeta?.dataType,
|
|
135
|
+
onCellEdit: meta.onCellEdit
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// src/object-table/hooks/useColumnDefs.ts
|
|
27
140
|
function useColumnDefs(objectType, columnDefinitions) {
|
|
28
141
|
const {
|
|
29
142
|
metadata,
|
|
30
143
|
loading,
|
|
31
144
|
error
|
|
32
145
|
} = react.useOsdkMetadata(objectType);
|
|
33
|
-
const columns =
|
|
146
|
+
const columns = React12.useMemo(() => {
|
|
34
147
|
const objectProperties = metadata?.properties;
|
|
35
148
|
if (columnDefinitions) {
|
|
36
149
|
return getColumnsFromColumnDefinitions(columnDefinitions, objectProperties);
|
|
@@ -53,19 +166,23 @@ function getColumnsFromColumnDefinitions(columnDefinitions, objectProperties) {
|
|
|
53
166
|
resizable,
|
|
54
167
|
orderable,
|
|
55
168
|
filterable,
|
|
169
|
+
editable,
|
|
56
170
|
renderCell,
|
|
57
171
|
renderHeader,
|
|
58
172
|
columnName
|
|
59
173
|
} = col;
|
|
60
174
|
const propertyMetadata = locator.type === "property" ? objectProperties?.[locator.id] : void 0;
|
|
61
175
|
const colKey = locator.id;
|
|
176
|
+
const dataType = propertyMetadata?.type && typeof propertyMetadata.type === "string" ? propertyMetadata.type : void 0;
|
|
62
177
|
const colDef = {
|
|
63
178
|
id: colKey,
|
|
64
179
|
accessorKey: colKey,
|
|
65
180
|
header: renderHeader ?? (columnName || propertyMetadata?.displayName),
|
|
66
181
|
meta: {
|
|
67
182
|
columnName: columnName || propertyMetadata?.displayName,
|
|
68
|
-
isVisible: col.isVisible !== false
|
|
183
|
+
isVisible: col.isVisible !== false,
|
|
184
|
+
editable,
|
|
185
|
+
dataType
|
|
69
186
|
},
|
|
70
187
|
size: width,
|
|
71
188
|
...minWidth ? {
|
|
@@ -79,7 +196,10 @@ function getColumnsFromColumnDefinitions(columnDefinitions, objectProperties) {
|
|
|
79
196
|
enableColumnFilter: filterable,
|
|
80
197
|
cell: (cellContext) => {
|
|
81
198
|
const object = cellContext.row.original;
|
|
82
|
-
|
|
199
|
+
if (renderCell) {
|
|
200
|
+
return renderCell(object, locator);
|
|
201
|
+
}
|
|
202
|
+
return renderDefaultCell(cellContext);
|
|
83
203
|
}
|
|
84
204
|
};
|
|
85
205
|
return colDef;
|
|
@@ -105,11 +225,11 @@ var useColumnPinning = ({
|
|
|
105
225
|
hasSelectionColumn,
|
|
106
226
|
onColumnsPinnedChanged
|
|
107
227
|
}) => {
|
|
108
|
-
const [columnPinning, setColumnPinning] =
|
|
228
|
+
const [columnPinning, setColumnPinning] = React12.useState({
|
|
109
229
|
left: [],
|
|
110
230
|
right: []
|
|
111
231
|
});
|
|
112
|
-
|
|
232
|
+
React12.useEffect(() => {
|
|
113
233
|
const defaultState = getColumnPinningStateFromColumnDefs(columnDefinitions);
|
|
114
234
|
const selectionCol = hasSelectionColumn ? [SELECTION_COLUMN_ID] : [];
|
|
115
235
|
setColumnPinning({
|
|
@@ -117,7 +237,7 @@ var useColumnPinning = ({
|
|
|
117
237
|
right: [...defaultState.right ?? []]
|
|
118
238
|
});
|
|
119
239
|
}, [columnDefinitions, hasSelectionColumn]);
|
|
120
|
-
const onColumnPinningChange =
|
|
240
|
+
const onColumnPinningChange = React12.useCallback((updater) => {
|
|
121
241
|
setColumnPinning((prev) => {
|
|
122
242
|
const newPinning = typeof updater === "function" ? updater(prev) : updater;
|
|
123
243
|
if (onColumnsPinnedChanged) {
|
|
@@ -174,8 +294,8 @@ function convertColumnPinningStateToArray(pinningState) {
|
|
|
174
294
|
var useColumnResize = ({
|
|
175
295
|
onColumnResize
|
|
176
296
|
}) => {
|
|
177
|
-
const [columnSizing, setColumnSizing] =
|
|
178
|
-
const onColumnSizingChange =
|
|
297
|
+
const [columnSizing, setColumnSizing] = React12.useState({});
|
|
298
|
+
const onColumnSizingChange = React12.useCallback((updater) => {
|
|
179
299
|
setColumnSizing((prev) => {
|
|
180
300
|
const newState = typeof updater === "function" ? updater(prev) : updater;
|
|
181
301
|
if (onColumnResize) {
|
|
@@ -202,15 +322,15 @@ var useColumnVisibility = ({
|
|
|
202
322
|
allColumns,
|
|
203
323
|
onColumnVisibilityChanged
|
|
204
324
|
}) => {
|
|
205
|
-
const [columnVisibility, setColumnVisibility] =
|
|
206
|
-
const [columnOrder, setColumnOrder] =
|
|
207
|
-
|
|
325
|
+
const [columnVisibility, setColumnVisibility] = React12.useState(() => getColumnVisibilityState(allColumns));
|
|
326
|
+
const [columnOrder, setColumnOrder] = React12.useState(() => getColumnOrder(allColumns));
|
|
327
|
+
React12.useEffect(() => {
|
|
208
328
|
setColumnVisibility(getColumnVisibilityState(allColumns));
|
|
209
329
|
}, [allColumns]);
|
|
210
|
-
|
|
330
|
+
React12.useEffect(() => {
|
|
211
331
|
setColumnOrder(getColumnOrder(allColumns));
|
|
212
332
|
}, [allColumns]);
|
|
213
|
-
const onColumnVisibilityChange =
|
|
333
|
+
const onColumnVisibilityChange = React12.useCallback((updaterOrValue) => {
|
|
214
334
|
setColumnVisibility((prev) => {
|
|
215
335
|
const newState = typeof updaterOrValue === "function" ? updaterOrValue(prev) : updaterOrValue;
|
|
216
336
|
if (onColumnVisibilityChanged) {
|
|
@@ -223,7 +343,7 @@ var useColumnVisibility = ({
|
|
|
223
343
|
return newState;
|
|
224
344
|
});
|
|
225
345
|
}, [onColumnVisibilityChanged]);
|
|
226
|
-
const onColumnOrderChange =
|
|
346
|
+
const onColumnOrderChange = React12.useCallback((updaterOrValue) => {
|
|
227
347
|
setColumnOrder((prev) => {
|
|
228
348
|
const newState = typeof updaterOrValue === "function" ? updaterOrValue(prev) : updaterOrValue;
|
|
229
349
|
return newState;
|
|
@@ -251,9 +371,45 @@ var getColumnVisibilityState = (allColumns) => {
|
|
|
251
371
|
var getColumnOrder = (allColumns) => {
|
|
252
372
|
return allColumns.map((col) => col.id ?? col.accessorKey).filter((id) => id != null);
|
|
253
373
|
};
|
|
374
|
+
function useEditableTable({
|
|
375
|
+
onCellValueChanged,
|
|
376
|
+
onSubmitEdits
|
|
377
|
+
}) {
|
|
378
|
+
const [cellEdits, setCellEdits] = React12.useState({});
|
|
379
|
+
const handleCellEdit = React12.useCallback((cellId, state) => {
|
|
380
|
+
const cellIdentifier = getCellIdentifier(cellId);
|
|
381
|
+
if (state.newValue === state.oldValue) {
|
|
382
|
+
setCellEdits((prev) => {
|
|
383
|
+
const {
|
|
384
|
+
[cellId]: _,
|
|
385
|
+
...rest
|
|
386
|
+
} = prev;
|
|
387
|
+
return rest;
|
|
388
|
+
});
|
|
389
|
+
} else {
|
|
390
|
+
setCellEdits((prev) => ({
|
|
391
|
+
...prev,
|
|
392
|
+
[cellId]: state
|
|
393
|
+
}));
|
|
394
|
+
}
|
|
395
|
+
onCellValueChanged?.(cellIdentifier, state);
|
|
396
|
+
}, [onCellValueChanged]);
|
|
397
|
+
const clearEdits = React12.useCallback(() => {
|
|
398
|
+
setCellEdits({});
|
|
399
|
+
}, []);
|
|
400
|
+
const handleSubmitEdits = React12.useCallback(async () => {
|
|
401
|
+
await onSubmitEdits?.(cellEdits);
|
|
402
|
+
}, [cellEdits, onSubmitEdits]);
|
|
403
|
+
return {
|
|
404
|
+
cellEdits,
|
|
405
|
+
handleCellEdit,
|
|
406
|
+
handleSubmitEdits,
|
|
407
|
+
clearEdits
|
|
408
|
+
};
|
|
409
|
+
}
|
|
254
410
|
var PAGE_SIZE = 50;
|
|
255
411
|
function useObjectTableData(objectOrInterfaceType, columnDefinitions, filter, sorting) {
|
|
256
|
-
const orderBy =
|
|
412
|
+
const orderBy = React12.useMemo(() => {
|
|
257
413
|
if (!sorting || sorting.length === 0) {
|
|
258
414
|
return void 0;
|
|
259
415
|
}
|
|
@@ -262,7 +418,7 @@ function useObjectTableData(objectOrInterfaceType, columnDefinitions, filter, so
|
|
|
262
418
|
return acc;
|
|
263
419
|
}, {});
|
|
264
420
|
}, [sorting]);
|
|
265
|
-
const withProperties =
|
|
421
|
+
const withProperties = React12.useMemo(() => {
|
|
266
422
|
if (!columnDefinitions) {
|
|
267
423
|
return;
|
|
268
424
|
}
|
|
@@ -300,11 +456,11 @@ function useRowSelection({
|
|
|
300
456
|
onRowSelection,
|
|
301
457
|
data
|
|
302
458
|
}) {
|
|
303
|
-
const [internalRowSelection, setInternalRowSelection] =
|
|
304
|
-
const [lastSelectedRowIndex, setLastSelectedRowIndex] =
|
|
459
|
+
const [internalRowSelection, setInternalRowSelection] = React12.useState({});
|
|
460
|
+
const [lastSelectedRowIndex, setLastSelectedRowIndex] = React12.useState(null);
|
|
305
461
|
const isControlled = selectedRows !== void 0;
|
|
306
462
|
const enableRowSelection = selectionMode !== "none";
|
|
307
|
-
const rowSelectionState =
|
|
463
|
+
const rowSelectionState = React12.useMemo(() => {
|
|
308
464
|
if (!enableRowSelection) return {};
|
|
309
465
|
if (isControlled && selectedRows) {
|
|
310
466
|
return getRowSelectionState(selectedRows);
|
|
@@ -315,7 +471,7 @@ function useRowSelection({
|
|
|
315
471
|
const totalCount = data?.length ?? 0;
|
|
316
472
|
const isAllSelected = totalCount > 0 && selectedCount === totalCount;
|
|
317
473
|
const hasSelection = selectedCount > 0;
|
|
318
|
-
const onToggleAll =
|
|
474
|
+
const onToggleAll = React12.useCallback(() => {
|
|
319
475
|
if (!enableRowSelection || !data) return;
|
|
320
476
|
const newSelectedRows = isAllSelected ? [] : data.map((item) => item.$primaryKey);
|
|
321
477
|
if (!isControlled) {
|
|
@@ -323,7 +479,7 @@ function useRowSelection({
|
|
|
323
479
|
}
|
|
324
480
|
onRowSelection?.(newSelectedRows);
|
|
325
481
|
}, [enableRowSelection, data, isAllSelected, isControlled, onRowSelection]);
|
|
326
|
-
const onToggleRow =
|
|
482
|
+
const onToggleRow = React12.useCallback((rowId, rowIndex, isShiftClick = false) => {
|
|
327
483
|
if (!enableRowSelection || !data) return;
|
|
328
484
|
let newSelectedRows = [];
|
|
329
485
|
if (selectionMode === "single") {
|
|
@@ -446,14 +602,14 @@ function Checkbox({
|
|
|
446
602
|
indicatorProps,
|
|
447
603
|
...rest
|
|
448
604
|
}) {
|
|
449
|
-
return /* @__PURE__ */
|
|
605
|
+
return /* @__PURE__ */ React12__default.default.createElement(checkbox.Checkbox.Root, _extends({
|
|
450
606
|
className: classNames7__default.default(Checkbox_default.osdkCheckboxRoot, className),
|
|
451
607
|
indeterminate
|
|
452
|
-
}, rest), /* @__PURE__ */
|
|
608
|
+
}, rest), /* @__PURE__ */ React12__default.default.createElement(checkbox.Checkbox.Indicator, _extends({}, indicatorProps, {
|
|
453
609
|
className: classNames7__default.default(Checkbox_default.osdkCheckboxIndicator, indicatorProps?.className)
|
|
454
|
-
}), indeterminate ? /* @__PURE__ */
|
|
610
|
+
}), indeterminate ? /* @__PURE__ */ React12__default.default.createElement(icons.Minus, {
|
|
455
611
|
color: "currentColor"
|
|
456
|
-
}) : /* @__PURE__ */
|
|
612
|
+
}) : /* @__PURE__ */ React12__default.default.createElement(icons.Tick, {
|
|
457
613
|
color: "currentColor"
|
|
458
614
|
})));
|
|
459
615
|
}
|
|
@@ -464,7 +620,7 @@ function SelectionHeaderCell({
|
|
|
464
620
|
hasSelection,
|
|
465
621
|
onToggleAll
|
|
466
622
|
}) {
|
|
467
|
-
return /* @__PURE__ */
|
|
623
|
+
return /* @__PURE__ */ React12__default.default.createElement(Checkbox, {
|
|
468
624
|
indeterminate: hasSelection && !isAllSelected,
|
|
469
625
|
checked: isAllSelected,
|
|
470
626
|
onCheckedChange: onToggleAll,
|
|
@@ -475,11 +631,11 @@ function SelectionCell({
|
|
|
475
631
|
row,
|
|
476
632
|
onToggleRow
|
|
477
633
|
}) {
|
|
478
|
-
const handleClick =
|
|
634
|
+
const handleClick = React12.useCallback((event) => {
|
|
479
635
|
const isShiftClick = event.shiftKey;
|
|
480
636
|
onToggleRow(row.id, row.index, isShiftClick);
|
|
481
637
|
}, [row, onToggleRow]);
|
|
482
|
-
return /* @__PURE__ */
|
|
638
|
+
return /* @__PURE__ */ React12__default.default.createElement(Checkbox, {
|
|
483
639
|
checked: row.getIsSelected(),
|
|
484
640
|
onClick: handleClick,
|
|
485
641
|
"aria-label": `Select row ${row.index + 1}`
|
|
@@ -494,26 +650,26 @@ var useSelectionColumn = ({
|
|
|
494
650
|
onToggleAll,
|
|
495
651
|
onToggleRow
|
|
496
652
|
}) => {
|
|
497
|
-
const isAllSelectedRef =
|
|
653
|
+
const isAllSelectedRef = React12.useRef(isAllSelected);
|
|
498
654
|
isAllSelectedRef.current = isAllSelected;
|
|
499
|
-
const hasSelectionRef =
|
|
655
|
+
const hasSelectionRef = React12.useRef(hasSelection);
|
|
500
656
|
hasSelectionRef.current = hasSelection;
|
|
501
|
-
const onToggleAllRef =
|
|
657
|
+
const onToggleAllRef = React12.useRef(onToggleAll);
|
|
502
658
|
onToggleAllRef.current = onToggleAll;
|
|
503
|
-
const onToggleRowRef =
|
|
659
|
+
const onToggleRowRef = React12.useRef(onToggleRow);
|
|
504
660
|
onToggleRowRef.current = onToggleRow;
|
|
505
|
-
const selectionColumn =
|
|
661
|
+
const selectionColumn = React12.useMemo(() => {
|
|
506
662
|
if (selectionMode === "none") return null;
|
|
507
663
|
const colDef = {
|
|
508
664
|
id: SELECTION_COLUMN_ID,
|
|
509
|
-
header: () => selectionMode === "multiple" ? /* @__PURE__ */
|
|
665
|
+
header: () => selectionMode === "multiple" ? /* @__PURE__ */ React12__default.default.createElement(SelectionHeaderCell, {
|
|
510
666
|
isAllSelected: isAllSelectedRef.current,
|
|
511
667
|
hasSelection: hasSelectionRef.current,
|
|
512
668
|
onToggleAll: onToggleAllRef.current
|
|
513
669
|
}) : null,
|
|
514
670
|
cell: ({
|
|
515
671
|
row
|
|
516
|
-
}) => /* @__PURE__ */
|
|
672
|
+
}) => /* @__PURE__ */ React12__default.default.createElement(SelectionCell, {
|
|
517
673
|
row,
|
|
518
674
|
onToggleRow: onToggleRowRef.current
|
|
519
675
|
}),
|
|
@@ -533,10 +689,10 @@ var useTableSorting = ({
|
|
|
533
689
|
defaultOrderBy,
|
|
534
690
|
onOrderByChanged
|
|
535
691
|
}) => {
|
|
536
|
-
const [internalSorting, setInternalSorting] =
|
|
692
|
+
const [internalSorting, setInternalSorting] = React12.useState(() => defaultOrderBy ? convertOrderByToSortingState(defaultOrderBy) : []);
|
|
537
693
|
const isControlled = orderBy !== void 0;
|
|
538
|
-
const sortingState =
|
|
539
|
-
const onSortingChange =
|
|
694
|
+
const sortingState = React12.useMemo(() => orderBy ? convertOrderByToSortingState(orderBy) : internalSorting, [orderBy, internalSorting]);
|
|
695
|
+
const onSortingChange = React12.useCallback((updater) => {
|
|
540
696
|
const newSorting = typeof updater === "function" ? updater(sortingState) : updater;
|
|
541
697
|
if (!isControlled) {
|
|
542
698
|
setInternalSorting(newSorting);
|
|
@@ -570,6 +726,29 @@ function convertSortingStateToOrderBy(sorting) {
|
|
|
570
726
|
}));
|
|
571
727
|
}
|
|
572
728
|
|
|
729
|
+
// src/base-components/action-button/ActionButton.module.css
|
|
730
|
+
var ActionButton_default = {};
|
|
731
|
+
|
|
732
|
+
// src/base-components/action-button/ActionButton.tsx
|
|
733
|
+
function _extends2() {
|
|
734
|
+
return _extends2 = Object.assign ? Object.assign.bind() : function(n) {
|
|
735
|
+
for (var e = 1; e < arguments.length; e++) {
|
|
736
|
+
var t = arguments[e];
|
|
737
|
+
for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
|
|
738
|
+
}
|
|
739
|
+
return n;
|
|
740
|
+
}, _extends2.apply(null, arguments);
|
|
741
|
+
}
|
|
742
|
+
function ActionButton({
|
|
743
|
+
variant = "secondary",
|
|
744
|
+
className,
|
|
745
|
+
...rest
|
|
746
|
+
}) {
|
|
747
|
+
return /* @__PURE__ */ React12__default.default.createElement(button.Button, _extends2({
|
|
748
|
+
className: classNames7__default.default(ActionButton_default.button, variant === "primary" ? ActionButton_default.primaryButton : ActionButton_default.secondaryButton, className)
|
|
749
|
+
}, rest));
|
|
750
|
+
}
|
|
751
|
+
|
|
573
752
|
// src/object-table/LoadingCell.module.css
|
|
574
753
|
var LoadingCell_default = {};
|
|
575
754
|
|
|
@@ -580,12 +759,12 @@ var TableCell_default = {};
|
|
|
580
759
|
function LoadingCell({
|
|
581
760
|
width
|
|
582
761
|
}) {
|
|
583
|
-
return /* @__PURE__ */
|
|
762
|
+
return /* @__PURE__ */ React12__default.default.createElement("td", {
|
|
584
763
|
className: TableCell_default.osdkTableCell,
|
|
585
764
|
style: {
|
|
586
765
|
width
|
|
587
766
|
}
|
|
588
|
-
}, /* @__PURE__ */
|
|
767
|
+
}, /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
589
768
|
className: classNames7__default.default(LoadingCell_default.osdkLoadingCell, LoadingCell_default.osdkCellSkeleton)
|
|
590
769
|
}));
|
|
591
770
|
}
|
|
@@ -601,17 +780,17 @@ function LoadingRow({
|
|
|
601
780
|
rowHeight = 40,
|
|
602
781
|
columnWidth = 80
|
|
603
782
|
}) {
|
|
604
|
-
return /* @__PURE__ */
|
|
783
|
+
return /* @__PURE__ */ React12__default.default.createElement("tr", {
|
|
605
784
|
className: TableRow_default.osdkTableRow,
|
|
606
785
|
style: {
|
|
607
786
|
height: `${rowHeight}px`,
|
|
608
787
|
transform: `translateY(${translateY}px)`
|
|
609
788
|
}
|
|
610
|
-
}, /* @__PURE__ */
|
|
789
|
+
}, /* @__PURE__ */ React12__default.default.createElement(React12__default.default.Fragment, null, Array.from({
|
|
611
790
|
length: columnCount
|
|
612
791
|
}).map((_, index) => {
|
|
613
792
|
const width = headers.length > index ? headers[index].getSize() : columnWidth;
|
|
614
|
-
return /* @__PURE__ */
|
|
793
|
+
return /* @__PURE__ */ React12__default.default.createElement(LoadingCell, {
|
|
615
794
|
key: `loading-cell-${index}`,
|
|
616
795
|
width
|
|
617
796
|
});
|
|
@@ -621,29 +800,6 @@ function LoadingRow({
|
|
|
621
800
|
// src/object-table/TableBody.module.css
|
|
622
801
|
var TableBody_default = {};
|
|
623
802
|
|
|
624
|
-
// src/base-components/action-button/ActionButton.module.css
|
|
625
|
-
var ActionButton_default = {};
|
|
626
|
-
|
|
627
|
-
// src/base-components/action-button/ActionButton.tsx
|
|
628
|
-
function _extends2() {
|
|
629
|
-
return _extends2 = Object.assign ? Object.assign.bind() : function(n) {
|
|
630
|
-
for (var e = 1; e < arguments.length; e++) {
|
|
631
|
-
var t = arguments[e];
|
|
632
|
-
for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
|
|
633
|
-
}
|
|
634
|
-
return n;
|
|
635
|
-
}, _extends2.apply(null, arguments);
|
|
636
|
-
}
|
|
637
|
-
function ActionButton({
|
|
638
|
-
variant = "secondary",
|
|
639
|
-
className,
|
|
640
|
-
...rest
|
|
641
|
-
}) {
|
|
642
|
-
return /* @__PURE__ */ React10__default.default.createElement(button.Button, _extends2({
|
|
643
|
-
className: classNames7__default.default(ActionButton_default.button, variant === "primary" ? ActionButton_default.primaryButton : ActionButton_default.secondaryButton, className)
|
|
644
|
-
}, rest));
|
|
645
|
-
}
|
|
646
|
-
|
|
647
803
|
// src/base-components/dialog/Dialog.module.css
|
|
648
804
|
var Dialog_default = {};
|
|
649
805
|
|
|
@@ -656,25 +812,25 @@ function Dialog({
|
|
|
656
812
|
footer,
|
|
657
813
|
className
|
|
658
814
|
}) {
|
|
659
|
-
return /* @__PURE__ */
|
|
815
|
+
return /* @__PURE__ */ React12__default.default.createElement(dialog.Dialog.Root, {
|
|
660
816
|
open: isOpen,
|
|
661
817
|
onOpenChange
|
|
662
|
-
}, /* @__PURE__ */
|
|
818
|
+
}, /* @__PURE__ */ React12__default.default.createElement(dialog.Dialog.Portal, null, /* @__PURE__ */ React12__default.default.createElement(dialog.Dialog.Backdrop, {
|
|
663
819
|
className: Dialog_default.backdrop
|
|
664
|
-
}), /* @__PURE__ */
|
|
820
|
+
}), /* @__PURE__ */ React12__default.default.createElement(dialog.Dialog.Popup, {
|
|
665
821
|
className: classNames7__default.default(Dialog_default.popup, className)
|
|
666
|
-
}, /* @__PURE__ */
|
|
822
|
+
}, /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
667
823
|
className: Dialog_default.header
|
|
668
|
-
}, /* @__PURE__ */
|
|
824
|
+
}, /* @__PURE__ */ React12__default.default.createElement(dialog.Dialog.Title, {
|
|
669
825
|
className: Dialog_default.title
|
|
670
|
-
}, title), /* @__PURE__ */
|
|
826
|
+
}, title), /* @__PURE__ */ React12__default.default.createElement(dialog.Dialog.Close, {
|
|
671
827
|
className: Dialog_default.closeButton,
|
|
672
828
|
"aria-label": "Close dialog"
|
|
673
|
-
}, /* @__PURE__ */
|
|
829
|
+
}, /* @__PURE__ */ React12__default.default.createElement(icons.Cross, {
|
|
674
830
|
className: Dialog_default.closeIcon
|
|
675
|
-
}))), /* @__PURE__ */
|
|
831
|
+
}))), /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
676
832
|
className: Dialog_default.body
|
|
677
|
-
}, children), footer != null && /* @__PURE__ */
|
|
833
|
+
}, children), footer != null && /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
678
834
|
className: Dialog_default.footer
|
|
679
835
|
}, footer))));
|
|
680
836
|
}
|
|
@@ -712,27 +868,27 @@ function DraggableListItem({
|
|
|
712
868
|
transform: utilities.CSS.Transform.toString(transform),
|
|
713
869
|
transition
|
|
714
870
|
};
|
|
715
|
-
const handleRemove =
|
|
871
|
+
const handleRemove = React12.useCallback(() => {
|
|
716
872
|
onRemove?.(item.id);
|
|
717
873
|
}, [item.id, onRemove]);
|
|
718
874
|
const RemoveIcon = removeIconVariant === "trash" ? icons.Trash : icons.SmallCross;
|
|
719
|
-
return /* @__PURE__ */
|
|
875
|
+
return /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
720
876
|
ref: setNodeRef,
|
|
721
877
|
style,
|
|
722
878
|
className: DraggableList_default.draggableItem,
|
|
723
879
|
"data-dragging": isDragging
|
|
724
|
-
}, /* @__PURE__ */
|
|
880
|
+
}, /* @__PURE__ */ React12__default.default.createElement("div", _extends3({
|
|
725
881
|
className: DraggableList_default.dragHandle,
|
|
726
882
|
"aria-label": `Reorder ${item.label}`
|
|
727
|
-
}, attributes, listeners), /* @__PURE__ */
|
|
883
|
+
}, attributes, listeners), /* @__PURE__ */ React12__default.default.createElement(icons.DragHandleVertical, {
|
|
728
884
|
className: DraggableList_default.icon
|
|
729
|
-
})), /* @__PURE__ */
|
|
885
|
+
})), /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
730
886
|
className: DraggableList_default.itemContent
|
|
731
|
-
}, renderContent ? renderContent(item) : item.label), onRemove && /* @__PURE__ */
|
|
887
|
+
}, renderContent ? renderContent(item) : item.label), onRemove && /* @__PURE__ */ React12__default.default.createElement(button.Button, {
|
|
732
888
|
className: DraggableList_default.removeButton,
|
|
733
889
|
onClick: handleRemove,
|
|
734
890
|
"aria-label": `Remove ${item.label}`
|
|
735
|
-
}, /* @__PURE__ */
|
|
891
|
+
}, /* @__PURE__ */ React12__default.default.createElement(RemoveIcon, {
|
|
736
892
|
className: DraggableList_default.icon
|
|
737
893
|
})));
|
|
738
894
|
}
|
|
@@ -745,7 +901,7 @@ function DraggableList({
|
|
|
745
901
|
emptyMessage,
|
|
746
902
|
className
|
|
747
903
|
}) {
|
|
748
|
-
const itemIds =
|
|
904
|
+
const itemIds = React12.useMemo(() => items.map((item) => item.id), [items]);
|
|
749
905
|
const sensors = core.useSensors(core.useSensor(core.PointerSensor, {
|
|
750
906
|
activationConstraint: {
|
|
751
907
|
distance: 5
|
|
@@ -753,7 +909,7 @@ function DraggableList({
|
|
|
753
909
|
}), core.useSensor(core.KeyboardSensor, {
|
|
754
910
|
coordinateGetter: sortable.sortableKeyboardCoordinates
|
|
755
911
|
}));
|
|
756
|
-
const handleDragEnd =
|
|
912
|
+
const handleDragEnd = React12.useCallback((event) => {
|
|
757
913
|
const {
|
|
758
914
|
active,
|
|
759
915
|
over
|
|
@@ -764,31 +920,31 @@ function DraggableList({
|
|
|
764
920
|
onReorder(oldIndex, newIndex);
|
|
765
921
|
}
|
|
766
922
|
}, [items, onReorder]);
|
|
767
|
-
const containerRef =
|
|
923
|
+
const containerRef = React12.useRef(null);
|
|
768
924
|
useKeyboardEvents(containerRef);
|
|
769
925
|
const DndContext = core.DndContext;
|
|
770
|
-
return /* @__PURE__ */
|
|
926
|
+
return /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
771
927
|
ref: containerRef,
|
|
772
928
|
className: classNames7__default.default(DraggableList_default.draggableListContainer, className)
|
|
773
|
-
}, /* @__PURE__ */
|
|
929
|
+
}, /* @__PURE__ */ React12__default.default.createElement(DndContext, {
|
|
774
930
|
sensors,
|
|
775
931
|
collisionDetection: core.closestCenter,
|
|
776
932
|
onDragEnd: handleDragEnd
|
|
777
|
-
}, /* @__PURE__ */
|
|
933
|
+
}, /* @__PURE__ */ React12__default.default.createElement(sortable.SortableContext, {
|
|
778
934
|
items: itemIds,
|
|
779
935
|
strategy: sortable.verticalListSortingStrategy
|
|
780
|
-
}, items.map((item) => /* @__PURE__ */
|
|
936
|
+
}, items.map((item) => /* @__PURE__ */ React12__default.default.createElement(DraggableListItem, {
|
|
781
937
|
key: item.id,
|
|
782
938
|
item,
|
|
783
939
|
onRemove,
|
|
784
940
|
removeIconVariant,
|
|
785
941
|
renderContent
|
|
786
|
-
})))), items.length === 0 && emptyMessage && /* @__PURE__ */
|
|
942
|
+
})))), items.length === 0 && emptyMessage && /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
787
943
|
className: DraggableList_default.emptyState
|
|
788
944
|
}, emptyMessage));
|
|
789
945
|
}
|
|
790
946
|
var useKeyboardEvents = (containerRef) => {
|
|
791
|
-
|
|
947
|
+
React12.useEffect(() => {
|
|
792
948
|
const el = containerRef.current;
|
|
793
949
|
if (el == null) {
|
|
794
950
|
return;
|
|
@@ -825,11 +981,11 @@ function SearchBar({
|
|
|
825
981
|
className,
|
|
826
982
|
onKeyDown
|
|
827
983
|
}) {
|
|
828
|
-
return /* @__PURE__ */
|
|
984
|
+
return /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
829
985
|
className: classNames7__default.default(SearchBar_default.searchBar, className)
|
|
830
|
-
}, /* @__PURE__ */
|
|
986
|
+
}, /* @__PURE__ */ React12__default.default.createElement(icons.Search, {
|
|
831
987
|
className: SearchBar_default.searchIcon
|
|
832
|
-
}), /* @__PURE__ */
|
|
988
|
+
}), /* @__PURE__ */ React12__default.default.createElement(input.Input, {
|
|
833
989
|
type: "text",
|
|
834
990
|
placeholder,
|
|
835
991
|
"aria-label": ariaLabel ?? placeholder,
|
|
@@ -853,9 +1009,9 @@ function ColumnConfigDialog({
|
|
|
853
1009
|
onApply,
|
|
854
1010
|
isValidConfig
|
|
855
1011
|
}) {
|
|
856
|
-
const [visibleColumns, setVisibleColumns] =
|
|
857
|
-
const [searchQuery, setSearchQuery] =
|
|
858
|
-
const allColumns =
|
|
1012
|
+
const [visibleColumns, setVisibleColumns] = React12.useState([]);
|
|
1013
|
+
const [searchQuery, setSearchQuery] = React12.useState("");
|
|
1014
|
+
const allColumns = React12.useMemo(() => {
|
|
859
1015
|
return columnOptions.map((opt) => {
|
|
860
1016
|
const isVisible = currentVisibility ? currentVisibility[opt.id] : false;
|
|
861
1017
|
return {
|
|
@@ -865,7 +1021,7 @@ function ColumnConfigDialog({
|
|
|
865
1021
|
};
|
|
866
1022
|
});
|
|
867
1023
|
}, [columnOptions, currentVisibility]);
|
|
868
|
-
|
|
1024
|
+
React12.useEffect(() => {
|
|
869
1025
|
if (isOpen) {
|
|
870
1026
|
const visibleCols = allColumns.filter((col) => col.isVisible);
|
|
871
1027
|
if (!!currentColumnOrder?.length) {
|
|
@@ -881,19 +1037,19 @@ function ColumnConfigDialog({
|
|
|
881
1037
|
setSearchQuery("");
|
|
882
1038
|
}
|
|
883
1039
|
}, [isOpen, allColumns, currentColumnOrder]);
|
|
884
|
-
const handleApply =
|
|
1040
|
+
const handleApply = React12.useCallback(() => {
|
|
885
1041
|
onApply(getColumnConfig(allColumns, visibleColumns));
|
|
886
1042
|
onClose();
|
|
887
1043
|
}, [allColumns, visibleColumns, onApply, onClose]);
|
|
888
1044
|
const isValid = isValidConfig ? isValidConfig(getColumnConfig(allColumns, visibleColumns)) : true;
|
|
889
1045
|
const isApplyDisabled = visibleColumns.length === 0 || !isValid;
|
|
890
|
-
const handleReorderColumns =
|
|
1046
|
+
const handleReorderColumns = React12.useCallback((fromIndex, toIndex) => {
|
|
891
1047
|
setVisibleColumns((items) => sortable.arrayMove(items, fromIndex, toIndex));
|
|
892
1048
|
}, []);
|
|
893
|
-
const handleRemoveColumn =
|
|
1049
|
+
const handleRemoveColumn = React12.useCallback((columnId) => {
|
|
894
1050
|
setVisibleColumns((prev) => prev.filter((col) => col.id !== columnId));
|
|
895
1051
|
}, []);
|
|
896
|
-
const handleToggleColumn =
|
|
1052
|
+
const handleToggleColumn = React12.useCallback((column) => {
|
|
897
1053
|
setVisibleColumns((prev) => {
|
|
898
1054
|
const isCurrentlyVisible = prev.some((col) => col.id === column.id);
|
|
899
1055
|
if (isCurrentlyVisible) {
|
|
@@ -903,10 +1059,10 @@ function ColumnConfigDialog({
|
|
|
903
1059
|
}
|
|
904
1060
|
});
|
|
905
1061
|
}, []);
|
|
906
|
-
const handleSearchChange =
|
|
1062
|
+
const handleSearchChange = React12.useCallback((event) => {
|
|
907
1063
|
setSearchQuery(event.target.value);
|
|
908
1064
|
}, []);
|
|
909
|
-
const handleSelectAll =
|
|
1065
|
+
const handleSelectAll = React12.useCallback((columns) => {
|
|
910
1066
|
setVisibleColumns((prev) => {
|
|
911
1067
|
const allSelected = columns.every((col) => prev.some((v) => v.id === col.id));
|
|
912
1068
|
if (allSelected) {
|
|
@@ -917,33 +1073,33 @@ function ColumnConfigDialog({
|
|
|
917
1073
|
}
|
|
918
1074
|
});
|
|
919
1075
|
}, []);
|
|
920
|
-
const filteredAvailableColumns =
|
|
1076
|
+
const filteredAvailableColumns = React12.useMemo(() => {
|
|
921
1077
|
const query = searchQuery.toLowerCase().trim();
|
|
922
1078
|
if (!query) {
|
|
923
1079
|
return allColumns;
|
|
924
1080
|
}
|
|
925
1081
|
return allColumns.filter((col) => (col.label?.toLowerCase().includes(query) ?? false) || col.id.toLowerCase().includes(query));
|
|
926
1082
|
}, [allColumns, searchQuery]);
|
|
927
|
-
const footer =
|
|
1083
|
+
const footer = React12.useMemo(() => /* @__PURE__ */ React12__default.default.createElement(React12__default.default.Fragment, null, /* @__PURE__ */ React12__default.default.createElement(ActionButton, {
|
|
928
1084
|
onClick: onClose
|
|
929
|
-
}, "Cancel"), /* @__PURE__ */
|
|
1085
|
+
}, "Cancel"), /* @__PURE__ */ React12__default.default.createElement(ActionButton, {
|
|
930
1086
|
variant: "primary",
|
|
931
1087
|
onClick: handleApply,
|
|
932
1088
|
disabled: isApplyDisabled
|
|
933
1089
|
}, "Apply")), [onClose, handleApply, isApplyDisabled]);
|
|
934
|
-
return /* @__PURE__ */
|
|
1090
|
+
return /* @__PURE__ */ React12__default.default.createElement(Dialog, {
|
|
935
1091
|
isOpen,
|
|
936
1092
|
onOpenChange: onClose,
|
|
937
1093
|
title: DialogTitle,
|
|
938
1094
|
footer,
|
|
939
1095
|
className: ColumnConfigDialog_default.columnConfigDialog
|
|
940
|
-
}, /* @__PURE__ */
|
|
1096
|
+
}, /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
941
1097
|
className: ColumnConfigDialog_default.dialogLayout
|
|
942
|
-
}, /* @__PURE__ */
|
|
1098
|
+
}, /* @__PURE__ */ React12__default.default.createElement(VisibleColumnsList, {
|
|
943
1099
|
columns: visibleColumns,
|
|
944
1100
|
onReorder: handleReorderColumns,
|
|
945
1101
|
onRemove: handleRemoveColumn
|
|
946
|
-
}), /* @__PURE__ */
|
|
1102
|
+
}), /* @__PURE__ */ React12__default.default.createElement(AvailableColumnsList, {
|
|
947
1103
|
visibleColumns,
|
|
948
1104
|
searchQuery,
|
|
949
1105
|
onSearchChange: handleSearchChange,
|
|
@@ -952,9 +1108,9 @@ function ColumnConfigDialog({
|
|
|
952
1108
|
filteredColumns: filteredAvailableColumns
|
|
953
1109
|
})));
|
|
954
1110
|
}
|
|
955
|
-
var DialogTitle = /* @__PURE__ */
|
|
1111
|
+
var DialogTitle = /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
956
1112
|
className: ColumnConfigDialog_default.title
|
|
957
|
-
}, /* @__PURE__ */
|
|
1113
|
+
}, /* @__PURE__ */ React12__default.default.createElement(icons.Cog, null), "Configure Table Columns");
|
|
958
1114
|
var getColumnConfig = (allColumns, visibleColumns) => {
|
|
959
1115
|
const hiddenColumns = allColumns.filter((col) => !visibleColumns.some((v) => v.id === col.id));
|
|
960
1116
|
return [...visibleColumns.map((col) => ({
|
|
@@ -970,17 +1126,17 @@ function VisibleColumnsList({
|
|
|
970
1126
|
onReorder,
|
|
971
1127
|
onRemove
|
|
972
1128
|
}) {
|
|
973
|
-
return /* @__PURE__ */
|
|
1129
|
+
return /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
974
1130
|
className: ColumnConfigDialog_default.visibleColumnsContainer
|
|
975
|
-
}, /* @__PURE__ */
|
|
1131
|
+
}, /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
976
1132
|
className: ColumnConfigDialog_default.sectionHeader
|
|
977
|
-
}, /* @__PURE__ */
|
|
1133
|
+
}, /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
978
1134
|
className: ColumnConfigDialog_default.sectionTitle
|
|
979
|
-
}, /* @__PURE__ */
|
|
1135
|
+
}, /* @__PURE__ */ React12__default.default.createElement("span", null, "Visible Columns"), /* @__PURE__ */ React12__default.default.createElement("span", {
|
|
980
1136
|
className: ColumnConfigDialog_default.countTag
|
|
981
|
-
}, columns.length)), /* @__PURE__ */
|
|
1137
|
+
}, columns.length)), /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
982
1138
|
className: ColumnConfigDialog_default.sectionHint
|
|
983
|
-
}, "Drag to reorder")), /* @__PURE__ */
|
|
1139
|
+
}, "Drag to reorder")), /* @__PURE__ */ React12__default.default.createElement(DraggableList, {
|
|
984
1140
|
items: columns,
|
|
985
1141
|
onReorder,
|
|
986
1142
|
onRemove,
|
|
@@ -1001,42 +1157,42 @@ function AvailableColumnsList({
|
|
|
1001
1157
|
const totalCount = filteredColumns.length;
|
|
1002
1158
|
const allFilteredSelected = filteredColumns.every((col) => visibleColumns.some((v) => v.id === col.id));
|
|
1003
1159
|
const someFilteredSelected = filteredColumns.some((col) => visibleColumns.some((v) => v.id === col.id));
|
|
1004
|
-
const handleSelectAllClick =
|
|
1160
|
+
const handleSelectAllClick = React12.useCallback(() => {
|
|
1005
1161
|
onSelectAll(filteredColumns);
|
|
1006
1162
|
}, [filteredColumns, onSelectAll]);
|
|
1007
|
-
return /* @__PURE__ */
|
|
1163
|
+
return /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
1008
1164
|
className: ColumnConfigDialog_default.availableColumnsContainer
|
|
1009
|
-
}, /* @__PURE__ */
|
|
1165
|
+
}, /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
1010
1166
|
className: classNames7__default.default(ColumnConfigDialog_default.sectionHeader, ColumnConfigDialog_default.sectionTitle)
|
|
1011
|
-
}, "Add or Remove Columns"), /* @__PURE__ */
|
|
1167
|
+
}, "Add or Remove Columns"), /* @__PURE__ */ React12__default.default.createElement(SearchBar, {
|
|
1012
1168
|
value: searchQuery,
|
|
1013
1169
|
onChange: onSearchChange,
|
|
1014
1170
|
placeholder: "Search...",
|
|
1015
1171
|
"aria-label": "Search available columns",
|
|
1016
1172
|
className: ColumnConfigDialog_default.searchContainer
|
|
1017
|
-
}), /* @__PURE__ */
|
|
1173
|
+
}), /* @__PURE__ */ React12__default.default.createElement(collapsible.Collapsible.Root, {
|
|
1018
1174
|
defaultOpen: true,
|
|
1019
1175
|
className: ColumnConfigDialog_default.propertiesList
|
|
1020
|
-
}, /* @__PURE__ */
|
|
1176
|
+
}, /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
1021
1177
|
className: ColumnConfigDialog_default.categoryHeader
|
|
1022
|
-
}, /* @__PURE__ */
|
|
1178
|
+
}, /* @__PURE__ */ React12__default.default.createElement(Checkbox, {
|
|
1023
1179
|
checked: allFilteredSelected,
|
|
1024
1180
|
indeterminate: someFilteredSelected && !allFilteredSelected,
|
|
1025
1181
|
onCheckedChange: handleSelectAllClick,
|
|
1026
1182
|
className: ColumnConfigDialog_default.checkbox
|
|
1027
|
-
}), /* @__PURE__ */
|
|
1183
|
+
}), /* @__PURE__ */ React12__default.default.createElement(collapsible.Collapsible.Trigger, {
|
|
1028
1184
|
className: ColumnConfigDialog_default.categoryTrigger
|
|
1029
|
-
}, /* @__PURE__ */
|
|
1185
|
+
}, /* @__PURE__ */ React12__default.default.createElement("span", {
|
|
1030
1186
|
className: ColumnConfigDialog_default.categoryTitle
|
|
1031
|
-
}, "All Columns"), /* @__PURE__ */
|
|
1187
|
+
}, "All Columns"), /* @__PURE__ */ React12__default.default.createElement("span", {
|
|
1032
1188
|
className: ColumnConfigDialog_default.categoryCount
|
|
1033
|
-
}, selectedCount, "/", totalCount), /* @__PURE__ */
|
|
1189
|
+
}, selectedCount, "/", totalCount), /* @__PURE__ */ React12__default.default.createElement(icons.CaretDown, {
|
|
1034
1190
|
className: ColumnConfigDialog_default.caretIcon
|
|
1035
|
-
}))), /* @__PURE__ */
|
|
1191
|
+
}))), /* @__PURE__ */ React12__default.default.createElement(collapsible.Collapsible.Panel, {
|
|
1036
1192
|
className: ColumnConfigDialog_default.propertyList
|
|
1037
|
-
}, filteredColumns.length === 0 ? /* @__PURE__ */
|
|
1193
|
+
}, filteredColumns.length === 0 ? /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
1038
1194
|
className: ColumnConfigDialog_default.emptyState
|
|
1039
|
-
}, "No matching columns found") : filteredColumns.map((column) => /* @__PURE__ */
|
|
1195
|
+
}, "No matching columns found") : filteredColumns.map((column) => /* @__PURE__ */ React12__default.default.createElement(PropertyItem, {
|
|
1040
1196
|
key: column.id,
|
|
1041
1197
|
column,
|
|
1042
1198
|
isSelected: visibleColumns.some((v) => v.id === column.id),
|
|
@@ -1049,19 +1205,19 @@ function PropertyItem({
|
|
|
1049
1205
|
onToggle,
|
|
1050
1206
|
showInfoIcon = false
|
|
1051
1207
|
}) {
|
|
1052
|
-
const handleClick =
|
|
1208
|
+
const handleClick = React12.useCallback(() => {
|
|
1053
1209
|
onToggle(column);
|
|
1054
1210
|
}, [onToggle, column]);
|
|
1055
|
-
return /* @__PURE__ */
|
|
1211
|
+
return /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
1056
1212
|
className: ColumnConfigDialog_default.propertyItem
|
|
1057
|
-
}, /* @__PURE__ */
|
|
1213
|
+
}, /* @__PURE__ */ React12__default.default.createElement(Checkbox, {
|
|
1058
1214
|
checked: isSelected,
|
|
1059
1215
|
onCheckedChange: handleClick,
|
|
1060
1216
|
className: ColumnConfigDialog_default.checkbox
|
|
1061
|
-
}), /* @__PURE__ */
|
|
1217
|
+
}), /* @__PURE__ */ React12__default.default.createElement(button.Button, {
|
|
1062
1218
|
onClick: handleClick,
|
|
1063
1219
|
className: ColumnConfigDialog_default.propertyName
|
|
1064
|
-
}, column.label), showInfoIcon && /* @__PURE__ */
|
|
1220
|
+
}, column.label), showInfoIcon && /* @__PURE__ */ React12__default.default.createElement(icons.SmallInfoSign, {
|
|
1065
1221
|
className: ColumnConfigDialog_default.infoIcon
|
|
1066
1222
|
}));
|
|
1067
1223
|
}
|
|
@@ -1074,8 +1230,8 @@ function SortableItemsList({
|
|
|
1074
1230
|
onRemove,
|
|
1075
1231
|
className
|
|
1076
1232
|
}) {
|
|
1077
|
-
const renderContent =
|
|
1078
|
-
return /* @__PURE__ */
|
|
1233
|
+
const renderContent = React12.useCallback((item) => item.content, []);
|
|
1234
|
+
return /* @__PURE__ */ React12__default.default.createElement(DraggableList, {
|
|
1079
1235
|
items,
|
|
1080
1236
|
onReorder,
|
|
1081
1237
|
onRemove,
|
|
@@ -1093,9 +1249,9 @@ function MultiColumnSortDialog({
|
|
|
1093
1249
|
currentSorting,
|
|
1094
1250
|
columnOptions
|
|
1095
1251
|
}) {
|
|
1096
|
-
const [selectedSortColumns, setSelectedSortColumns] =
|
|
1097
|
-
const [menuSearchQuery, setMenuSearchQuery] =
|
|
1098
|
-
|
|
1252
|
+
const [selectedSortColumns, setSelectedSortColumns] = React12.useState([]);
|
|
1253
|
+
const [menuSearchQuery, setMenuSearchQuery] = React12.useState("");
|
|
1254
|
+
React12.useEffect(() => {
|
|
1099
1255
|
if (isOpen) {
|
|
1100
1256
|
const selectedColumns = [];
|
|
1101
1257
|
for (const sort of currentSorting) {
|
|
@@ -1110,25 +1266,25 @@ function MultiColumnSortDialog({
|
|
|
1110
1266
|
setSelectedSortColumns(selectedColumns);
|
|
1111
1267
|
}
|
|
1112
1268
|
}, [isOpen, currentSorting, columnOptions]);
|
|
1113
|
-
const handleAddColumn =
|
|
1269
|
+
const handleAddColumn = React12.useCallback((column) => {
|
|
1114
1270
|
setSelectedSortColumns((prev) => [...prev, {
|
|
1115
1271
|
...column,
|
|
1116
1272
|
direction: "asc"
|
|
1117
1273
|
}]);
|
|
1118
1274
|
}, []);
|
|
1119
|
-
const handleRemoveSortColumn =
|
|
1275
|
+
const handleRemoveSortColumn = React12.useCallback((id) => {
|
|
1120
1276
|
setSelectedSortColumns((prev) => prev.filter((item) => item.id !== id));
|
|
1121
1277
|
}, []);
|
|
1122
|
-
const handleReorderSortColumns =
|
|
1278
|
+
const handleReorderSortColumns = React12.useCallback((fromIndex, toIndex) => {
|
|
1123
1279
|
setSelectedSortColumns((items) => sortable.arrayMove(items, fromIndex, toIndex));
|
|
1124
1280
|
}, []);
|
|
1125
|
-
const handleToggleSortDirection =
|
|
1281
|
+
const handleToggleSortDirection = React12.useCallback((id) => {
|
|
1126
1282
|
setSelectedSortColumns((prev) => prev.map((item) => item.id === id ? {
|
|
1127
1283
|
...item,
|
|
1128
1284
|
direction: item.direction === "asc" ? "desc" : "asc"
|
|
1129
1285
|
} : item));
|
|
1130
1286
|
}, []);
|
|
1131
|
-
const handleApply =
|
|
1287
|
+
const handleApply = React12.useCallback(() => {
|
|
1132
1288
|
const sortingState = selectedSortColumns.map((col) => ({
|
|
1133
1289
|
id: col.id,
|
|
1134
1290
|
desc: col.direction === "desc"
|
|
@@ -1136,100 +1292,100 @@ function MultiColumnSortDialog({
|
|
|
1136
1292
|
onApply(sortingState);
|
|
1137
1293
|
onClose();
|
|
1138
1294
|
}, [selectedSortColumns, onApply, onClose]);
|
|
1139
|
-
const availableColumns =
|
|
1140
|
-
const filteredAvailableColumns =
|
|
1295
|
+
const availableColumns = React12.useMemo(() => columnOptions.filter((col) => col.canSort && !selectedSortColumns.some((selected) => selected.id === col.id)), [columnOptions, selectedSortColumns]);
|
|
1296
|
+
const filteredAvailableColumns = React12.useMemo(() => {
|
|
1141
1297
|
const query = menuSearchQuery.toLowerCase().trim();
|
|
1142
1298
|
if (!query) {
|
|
1143
1299
|
return availableColumns;
|
|
1144
1300
|
}
|
|
1145
1301
|
return availableColumns.filter((col) => col.name.toLowerCase().includes(query));
|
|
1146
1302
|
}, [availableColumns, menuSearchQuery]);
|
|
1147
|
-
const handleMenuSearchChange =
|
|
1303
|
+
const handleMenuSearchChange = React12.useCallback((event) => {
|
|
1148
1304
|
setMenuSearchQuery(event.target.value);
|
|
1149
1305
|
}, []);
|
|
1150
|
-
const handleMenuOpenChange =
|
|
1306
|
+
const handleMenuOpenChange = React12.useCallback((open) => {
|
|
1151
1307
|
if (open) {
|
|
1152
1308
|
setMenuSearchQuery("");
|
|
1153
1309
|
}
|
|
1154
1310
|
}, []);
|
|
1155
|
-
const sortableItems =
|
|
1311
|
+
const sortableItems = React12.useMemo(() => {
|
|
1156
1312
|
return selectedSortColumns.map((item) => ({
|
|
1157
1313
|
id: item.id,
|
|
1158
1314
|
label: item.name,
|
|
1159
|
-
content: /* @__PURE__ */
|
|
1315
|
+
content: /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
1160
1316
|
className: MultiColumnSortDialog_default.sortColumnItem
|
|
1161
|
-
}, /* @__PURE__ */
|
|
1317
|
+
}, /* @__PURE__ */ React12__default.default.createElement("span", {
|
|
1162
1318
|
className: classNames7__default.default(MultiColumnSortDialog_default.sortColumnName, MultiColumnSortDialog_default.truncate)
|
|
1163
|
-
}, item.name), /* @__PURE__ */
|
|
1319
|
+
}, item.name), /* @__PURE__ */ React12__default.default.createElement(button.Button, {
|
|
1164
1320
|
className: MultiColumnSortDialog_default.sortDirectionButton,
|
|
1165
1321
|
onClick: () => handleToggleSortDirection(item.id),
|
|
1166
1322
|
"aria-label": `Toggle sort direction for ${item.name}`
|
|
1167
|
-
}, item.direction === "asc" ? /* @__PURE__ */
|
|
1323
|
+
}, item.direction === "asc" ? /* @__PURE__ */ React12__default.default.createElement(icons.SortAlphabetical, {
|
|
1168
1324
|
className: MultiColumnSortDialog_default.sortIcon
|
|
1169
|
-
}) : /* @__PURE__ */
|
|
1325
|
+
}) : /* @__PURE__ */ React12__default.default.createElement(icons.SortAlphabeticalDesc, {
|
|
1170
1326
|
className: MultiColumnSortDialog_default.sortIcon
|
|
1171
1327
|
})))
|
|
1172
1328
|
}));
|
|
1173
1329
|
}, [selectedSortColumns, handleToggleSortDirection]);
|
|
1174
|
-
const footer =
|
|
1330
|
+
const footer = React12.useMemo(() => /* @__PURE__ */ React12__default.default.createElement(React12__default.default.Fragment, null, /* @__PURE__ */ React12__default.default.createElement(ActionButton, {
|
|
1175
1331
|
onClick: onClose
|
|
1176
|
-
}, "Cancel"), /* @__PURE__ */
|
|
1332
|
+
}, "Cancel"), /* @__PURE__ */ React12__default.default.createElement(ActionButton, {
|
|
1177
1333
|
variant: "primary",
|
|
1178
1334
|
onClick: handleApply
|
|
1179
1335
|
}, "Apply")), [handleApply, onClose]);
|
|
1180
|
-
return /* @__PURE__ */
|
|
1336
|
+
return /* @__PURE__ */ React12__default.default.createElement(Dialog, {
|
|
1181
1337
|
isOpen,
|
|
1182
1338
|
onOpenChange: onClose,
|
|
1183
1339
|
title: DialogTitle2,
|
|
1184
1340
|
footer
|
|
1185
|
-
}, /* @__PURE__ */
|
|
1341
|
+
}, /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
1186
1342
|
className: MultiColumnSortDialog_default.sortColumnsList
|
|
1187
|
-
}, /* @__PURE__ */
|
|
1343
|
+
}, /* @__PURE__ */ React12__default.default.createElement(SortableItemsList, {
|
|
1188
1344
|
items: sortableItems,
|
|
1189
1345
|
onReorder: handleReorderSortColumns,
|
|
1190
1346
|
onRemove: handleRemoveSortColumn,
|
|
1191
1347
|
className: MultiColumnSortDialog_default.sortableList
|
|
1192
|
-
}), /* @__PURE__ */
|
|
1348
|
+
}), /* @__PURE__ */ React12__default.default.createElement(menu.Menu.Root, {
|
|
1193
1349
|
onOpenChange: handleMenuOpenChange
|
|
1194
|
-
}, /* @__PURE__ */
|
|
1350
|
+
}, /* @__PURE__ */ React12__default.default.createElement(menu.Menu.Trigger, {
|
|
1195
1351
|
className: MultiColumnSortDialog_default.addColumnButton,
|
|
1196
1352
|
disabled: availableColumns.length === 0,
|
|
1197
1353
|
"aria-label": "Add column to sort"
|
|
1198
|
-
}, /* @__PURE__ */
|
|
1354
|
+
}, /* @__PURE__ */ React12__default.default.createElement(icons.Add, {
|
|
1199
1355
|
className: MultiColumnSortDialog_default.addIcon
|
|
1200
|
-
}), /* @__PURE__ */
|
|
1356
|
+
}), /* @__PURE__ */ React12__default.default.createElement("span", {
|
|
1201
1357
|
className: MultiColumnSortDialog_default.addColumnText
|
|
1202
|
-
}, "Add Column to Sort"), /* @__PURE__ */
|
|
1358
|
+
}, "Add Column to Sort"), /* @__PURE__ */ React12__default.default.createElement(icons.CaretDown, {
|
|
1203
1359
|
color: "currentColor"
|
|
1204
|
-
})), /* @__PURE__ */
|
|
1360
|
+
})), /* @__PURE__ */ React12__default.default.createElement(menu.Menu.Portal, null, /* @__PURE__ */ React12__default.default.createElement(menu.Menu.Positioner, {
|
|
1205
1361
|
className: MultiColumnSortDialog_default.menuPositioner,
|
|
1206
1362
|
sideOffset: 4
|
|
1207
|
-
}, /* @__PURE__ */
|
|
1363
|
+
}, /* @__PURE__ */ React12__default.default.createElement(menu.Menu.Popup, {
|
|
1208
1364
|
className: MultiColumnSortDialog_default.dropdownMenu
|
|
1209
|
-
}, /* @__PURE__ */
|
|
1365
|
+
}, /* @__PURE__ */ React12__default.default.createElement(SearchBar, {
|
|
1210
1366
|
value: menuSearchQuery,
|
|
1211
1367
|
onChange: handleMenuSearchChange,
|
|
1212
1368
|
placeholder: "Search columns",
|
|
1213
1369
|
"aria-label": "Search columns to sort",
|
|
1214
1370
|
className: MultiColumnSortDialog_default.menuSearchContainer,
|
|
1215
1371
|
onKeyDown: (e) => e.stopPropagation()
|
|
1216
|
-
}), filteredAvailableColumns.map((column) => /* @__PURE__ */
|
|
1372
|
+
}), filteredAvailableColumns.map((column) => /* @__PURE__ */ React12__default.default.createElement(AvailableColumnMenuItem, {
|
|
1217
1373
|
key: column.id,
|
|
1218
1374
|
column,
|
|
1219
1375
|
onAddColumn: handleAddColumn
|
|
1220
|
-
})), filteredAvailableColumns.length === 0 && /* @__PURE__ */
|
|
1376
|
+
})), filteredAvailableColumns.length === 0 && /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
1221
1377
|
className: MultiColumnSortDialog_default.menuEmptyState
|
|
1222
1378
|
}, "No matching columns")))))));
|
|
1223
1379
|
}
|
|
1224
|
-
var DialogTitle2 = /* @__PURE__ */
|
|
1380
|
+
var DialogTitle2 = /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
1225
1381
|
className: MultiColumnSortDialog_default.title
|
|
1226
|
-
}, /* @__PURE__ */
|
|
1382
|
+
}, /* @__PURE__ */ React12__default.default.createElement(icons.Cog, null), "Sort on Multiple Columns");
|
|
1227
1383
|
function AvailableColumnMenuItem({
|
|
1228
1384
|
column,
|
|
1229
1385
|
onAddColumn
|
|
1230
1386
|
}) {
|
|
1231
|
-
const onClick =
|
|
1232
|
-
return /* @__PURE__ */
|
|
1387
|
+
const onClick = React12.useCallback(() => onAddColumn(column), [onAddColumn, column]);
|
|
1388
|
+
return /* @__PURE__ */ React12__default.default.createElement(menu.Menu.Item, {
|
|
1233
1389
|
className: classNames7__default.default(MultiColumnSortDialog_default.dropdownItem, MultiColumnSortDialog_default.truncate),
|
|
1234
1390
|
onClick
|
|
1235
1391
|
}, column.name);
|
|
@@ -1245,7 +1401,7 @@ var TableHeaderContent_default = {};
|
|
|
1245
1401
|
function TableHeaderContent({
|
|
1246
1402
|
header
|
|
1247
1403
|
}) {
|
|
1248
|
-
return /* @__PURE__ */
|
|
1404
|
+
return /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
1249
1405
|
className: TableHeaderContent_default.osdkHeaderContent
|
|
1250
1406
|
}, reactTable.flexRender(header.column.columnDef.header, header.getContext()));
|
|
1251
1407
|
}
|
|
@@ -1260,14 +1416,14 @@ function HeaderMenuItem({
|
|
|
1260
1416
|
label,
|
|
1261
1417
|
active = false
|
|
1262
1418
|
}) {
|
|
1263
|
-
return /* @__PURE__ */
|
|
1419
|
+
return /* @__PURE__ */ React12__default.default.createElement(menu.Menu.Item, {
|
|
1264
1420
|
closeOnClick: true,
|
|
1265
1421
|
className: classNames7__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkContentGap, TableHeaderWithPopover_default.osdkHeaderMenuItem, active && TableHeaderWithPopover_default.osdkHeaderActiveMenuItem),
|
|
1266
1422
|
onClick
|
|
1267
|
-
}, /* @__PURE__ */
|
|
1423
|
+
}, /* @__PURE__ */ React12__default.default.createElement(Icon, {
|
|
1268
1424
|
className: TableHeaderWithPopover_default.osdkHeaderIcon,
|
|
1269
1425
|
color: "currentColor"
|
|
1270
|
-
}), /* @__PURE__ */
|
|
1426
|
+
}), /* @__PURE__ */ React12__default.default.createElement("span", null, label));
|
|
1271
1427
|
}
|
|
1272
1428
|
function TableHeaderWithPopover({
|
|
1273
1429
|
header,
|
|
@@ -1290,8 +1446,8 @@ function TableHeaderWithPopover({
|
|
|
1290
1446
|
setSorting
|
|
1291
1447
|
} = table;
|
|
1292
1448
|
const currentSorting = table.getState().sorting;
|
|
1293
|
-
const [isOpen, setIsOpen] =
|
|
1294
|
-
const handlePinLeft =
|
|
1449
|
+
const [isOpen, setIsOpen] = React12.useState(false);
|
|
1450
|
+
const handlePinLeft = React12.useCallback(() => {
|
|
1295
1451
|
setColumnPinning((prev) => {
|
|
1296
1452
|
return {
|
|
1297
1453
|
left: [...prev.left || [], header.column.id],
|
|
@@ -1299,7 +1455,7 @@ function TableHeaderWithPopover({
|
|
|
1299
1455
|
};
|
|
1300
1456
|
});
|
|
1301
1457
|
}, [header.column.id, setColumnPinning]);
|
|
1302
|
-
const handleUnpin =
|
|
1458
|
+
const handleUnpin = React12.useCallback(() => {
|
|
1303
1459
|
setColumnPinning((prev) => {
|
|
1304
1460
|
return {
|
|
1305
1461
|
left: prev.left?.filter((id) => id !== header.column.id) || [],
|
|
@@ -1307,39 +1463,39 @@ function TableHeaderWithPopover({
|
|
|
1307
1463
|
};
|
|
1308
1464
|
});
|
|
1309
1465
|
}, [header.column.id, setColumnPinning]);
|
|
1310
|
-
const handleSortAscending =
|
|
1466
|
+
const handleSortAscending = React12.useCallback(() => {
|
|
1311
1467
|
header.column.toggleSorting(false);
|
|
1312
1468
|
setSorting?.([{
|
|
1313
1469
|
id: header.column.id,
|
|
1314
1470
|
desc: false
|
|
1315
1471
|
}]);
|
|
1316
1472
|
}, [header.column, setSorting]);
|
|
1317
|
-
const handleSortDescending =
|
|
1473
|
+
const handleSortDescending = React12.useCallback(() => {
|
|
1318
1474
|
header.column.toggleSorting(true);
|
|
1319
1475
|
setSorting?.([{
|
|
1320
1476
|
id: header.column.id,
|
|
1321
1477
|
desc: true
|
|
1322
1478
|
}]);
|
|
1323
1479
|
}, [header.column, setSorting]);
|
|
1324
|
-
const handleClearAllSorts =
|
|
1480
|
+
const handleClearAllSorts = React12.useCallback(() => {
|
|
1325
1481
|
header.column.clearSorting();
|
|
1326
1482
|
setSorting?.([]);
|
|
1327
1483
|
}, [header.column, setSorting]);
|
|
1328
|
-
const handleResetSize =
|
|
1484
|
+
const handleResetSize = React12.useCallback(() => {
|
|
1329
1485
|
header.column.resetSize();
|
|
1330
1486
|
if (onResetSize) {
|
|
1331
1487
|
onResetSize();
|
|
1332
1488
|
}
|
|
1333
1489
|
}, [header.column, onResetSize]);
|
|
1334
|
-
const handleInteraction =
|
|
1490
|
+
const handleInteraction = React12.useCallback((e) => {
|
|
1335
1491
|
e.preventDefault();
|
|
1336
1492
|
setIsOpen((prev) => !prev);
|
|
1337
1493
|
}, []);
|
|
1338
|
-
const handleOpenColumnConfig =
|
|
1494
|
+
const handleOpenColumnConfig = React12.useCallback(() => {
|
|
1339
1495
|
onOpenColumnConfig?.();
|
|
1340
1496
|
setIsOpen(false);
|
|
1341
1497
|
}, [onOpenColumnConfig]);
|
|
1342
|
-
const handleOpenMultiSort =
|
|
1498
|
+
const handleOpenMultiSort = React12.useCallback(() => {
|
|
1343
1499
|
onOpenMultiSort?.();
|
|
1344
1500
|
setIsOpen(false);
|
|
1345
1501
|
}, [onOpenMultiSort]);
|
|
@@ -1347,72 +1503,72 @@ function TableHeaderWithPopover({
|
|
|
1347
1503
|
const isSortable = header.column.getCanSort();
|
|
1348
1504
|
const sortIndex = currentSorting?.findIndex((s) => s.id === header.column.id) ?? -1;
|
|
1349
1505
|
const hasAnyMenuItems = showPinningItems || showSortingItems && isSortable || showResizeItem || showConfigItem;
|
|
1350
|
-
return /* @__PURE__ */
|
|
1506
|
+
return /* @__PURE__ */ React12__default.default.createElement(React12__default.default.Fragment, null, /* @__PURE__ */ React12__default.default.createElement(menu.Menu.Root, {
|
|
1351
1507
|
open: isOpen,
|
|
1352
1508
|
onOpenChange: setIsOpen
|
|
1353
|
-
}, /* @__PURE__ */
|
|
1509
|
+
}, /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
1354
1510
|
className: classNames7__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkContentGap, TableHeaderWithPopover_default.osdkHeaderContainer),
|
|
1355
1511
|
onContextMenu: handleInteraction
|
|
1356
|
-
}, /* @__PURE__ */
|
|
1512
|
+
}, /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
1357
1513
|
className: classNames7__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkContentGap, TableHeaderWithPopover_default.osdkHeaderContentLeft)
|
|
1358
|
-
}, isColumnPinned && /* @__PURE__ */
|
|
1514
|
+
}, isColumnPinned && /* @__PURE__ */ React12__default.default.createElement(icons.Pin, {
|
|
1359
1515
|
className: TableHeaderWithPopover_default.osdkHeaderIcon,
|
|
1360
1516
|
color: "currentColor"
|
|
1361
|
-
}), /* @__PURE__ */
|
|
1517
|
+
}), /* @__PURE__ */ React12__default.default.createElement(TableHeaderContent, {
|
|
1362
1518
|
header
|
|
1363
|
-
})), /* @__PURE__ */
|
|
1519
|
+
})), /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
1364
1520
|
className: classNames7__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkContentGap, TableHeaderWithPopover_default.osdkHeaderContentRight)
|
|
1365
|
-
}, isSorted && /* @__PURE__ */
|
|
1521
|
+
}, isSorted && /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
1366
1522
|
className: TableHeaderWithPopover_default.osdkCenterContainer
|
|
1367
|
-
}, isSorted === "asc" ? /* @__PURE__ */
|
|
1523
|
+
}, isSorted === "asc" ? /* @__PURE__ */ React12__default.default.createElement(icons.SortAlphabetical, {
|
|
1368
1524
|
className: TableHeaderWithPopover_default.osdkHeaderIcon
|
|
1369
|
-
}) : /* @__PURE__ */
|
|
1525
|
+
}) : /* @__PURE__ */ React12__default.default.createElement(icons.SortAlphabeticalDesc, {
|
|
1370
1526
|
className: TableHeaderWithPopover_default.osdkHeaderIcon
|
|
1371
|
-
}), currentSorting.length > 1 && sortIndex >= 0 && /* @__PURE__ */
|
|
1527
|
+
}), currentSorting.length > 1 && sortIndex >= 0 && /* @__PURE__ */ React12__default.default.createElement("span", {
|
|
1372
1528
|
className: TableHeaderWithPopover_default.sortIndex
|
|
1373
|
-
}, sortIndex + 1)), hasAnyMenuItems && /* @__PURE__ */
|
|
1529
|
+
}, sortIndex + 1)), hasAnyMenuItems && /* @__PURE__ */ React12__default.default.createElement(menu.Menu.Trigger, {
|
|
1374
1530
|
"aria-label": `Open header menu for column with id=${header.column.id}`,
|
|
1375
1531
|
className: classNames7__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkHeaderPopoverTrigger)
|
|
1376
|
-
}, /* @__PURE__ */
|
|
1532
|
+
}, /* @__PURE__ */ React12__default.default.createElement(icons.ChevronDown, {
|
|
1377
1533
|
className: TableHeaderWithPopover_default.osdkHeaderIcon
|
|
1378
|
-
}))), /* @__PURE__ */
|
|
1534
|
+
}))), /* @__PURE__ */ React12__default.default.createElement(menu.Menu.Portal, {
|
|
1379
1535
|
container: document.body
|
|
1380
|
-
}, /* @__PURE__ */
|
|
1536
|
+
}, /* @__PURE__ */ React12__default.default.createElement(menu.Menu.Positioner, {
|
|
1381
1537
|
sideOffset: 4
|
|
1382
|
-
}, /* @__PURE__ */
|
|
1538
|
+
}, /* @__PURE__ */ React12__default.default.createElement(menu.Menu.Popup, {
|
|
1383
1539
|
className: TableHeaderWithPopover_default.osdkHeaderPopup
|
|
1384
|
-
}, showPinningItems && !isColumnPinned && /* @__PURE__ */
|
|
1540
|
+
}, showPinningItems && !isColumnPinned && /* @__PURE__ */ React12__default.default.createElement(HeaderMenuItem, {
|
|
1385
1541
|
onClick: handlePinLeft,
|
|
1386
1542
|
icon: icons.Pin,
|
|
1387
1543
|
label: "Pin column"
|
|
1388
|
-
}), showPinningItems && isColumnPinned && /* @__PURE__ */
|
|
1544
|
+
}), showPinningItems && isColumnPinned && /* @__PURE__ */ React12__default.default.createElement(HeaderMenuItem, {
|
|
1389
1545
|
onClick: handleUnpin,
|
|
1390
1546
|
icon: icons.Unpin,
|
|
1391
1547
|
label: "Unpin Column",
|
|
1392
1548
|
active: true
|
|
1393
|
-
}), showSortingItems && isSortable && /* @__PURE__ */
|
|
1549
|
+
}), showSortingItems && isSortable && /* @__PURE__ */ React12__default.default.createElement(React12__default.default.Fragment, null, /* @__PURE__ */ React12__default.default.createElement(HeaderMenuItem, {
|
|
1394
1550
|
onClick: handleSortAscending,
|
|
1395
1551
|
icon: icons.SortAlphabetical,
|
|
1396
1552
|
label: "Sort ascending",
|
|
1397
1553
|
active: isSorted === "asc"
|
|
1398
|
-
}), /* @__PURE__ */
|
|
1554
|
+
}), /* @__PURE__ */ React12__default.default.createElement(HeaderMenuItem, {
|
|
1399
1555
|
onClick: handleSortDescending,
|
|
1400
1556
|
icon: icons.SortAlphabeticalDesc,
|
|
1401
1557
|
label: "Sort descending",
|
|
1402
1558
|
active: isSorted === "desc"
|
|
1403
|
-
}), columnOptions?.some((col) => col.canSort) && /* @__PURE__ */
|
|
1559
|
+
}), columnOptions?.some((col) => col.canSort) && /* @__PURE__ */ React12__default.default.createElement(HeaderMenuItem, {
|
|
1404
1560
|
onClick: handleOpenMultiSort,
|
|
1405
1561
|
icon: icons.Sort,
|
|
1406
1562
|
label: "Sort on multiple columns"
|
|
1407
|
-
})), showSortingItems && !!currentSorting?.length && /* @__PURE__ */
|
|
1563
|
+
})), showSortingItems && !!currentSorting?.length && /* @__PURE__ */ React12__default.default.createElement(HeaderMenuItem, {
|
|
1408
1564
|
onClick: handleClearAllSorts,
|
|
1409
1565
|
icon: icons.Remove,
|
|
1410
1566
|
label: "Clear all sorts"
|
|
1411
|
-
}), showResizeItem && /* @__PURE__ */
|
|
1567
|
+
}), showResizeItem && /* @__PURE__ */ React12__default.default.createElement(HeaderMenuItem, {
|
|
1412
1568
|
onClick: handleResetSize,
|
|
1413
1569
|
icon: icons.VerticalDistribution,
|
|
1414
1570
|
label: "Reset Column Size"
|
|
1415
|
-
}), showConfigItem && /* @__PURE__ */
|
|
1571
|
+
}), showConfigItem && /* @__PURE__ */ React12__default.default.createElement(HeaderMenuItem, {
|
|
1416
1572
|
onClick: handleOpenColumnConfig,
|
|
1417
1573
|
icon: icons.Settings,
|
|
1418
1574
|
label: "Configure Columns"
|
|
@@ -1466,25 +1622,25 @@ function TableHeader({
|
|
|
1466
1622
|
const currentVisibility = table.getState().columnVisibility;
|
|
1467
1623
|
const currentColumnOrder = table.getState().columnOrder;
|
|
1468
1624
|
const isResizing = !!table.getState().columnSizingInfo?.isResizingColumn;
|
|
1469
|
-
const [configDialogOpen, setConfigDialogOpen] =
|
|
1470
|
-
const [multiSortDialogOpen, setMultiSortDialogOpen] =
|
|
1471
|
-
const handleOpenColumnConfig =
|
|
1625
|
+
const [configDialogOpen, setConfigDialogOpen] = React12.useState(false);
|
|
1626
|
+
const [multiSortDialogOpen, setMultiSortDialogOpen] = React12.useState(false);
|
|
1627
|
+
const handleOpenColumnConfig = React12.useCallback(() => {
|
|
1472
1628
|
setConfigDialogOpen(true);
|
|
1473
1629
|
}, []);
|
|
1474
|
-
const handleCloseColumnConfig =
|
|
1630
|
+
const handleCloseColumnConfig = React12.useCallback(() => {
|
|
1475
1631
|
setConfigDialogOpen(false);
|
|
1476
1632
|
}, []);
|
|
1477
|
-
const handleOpenMultiSort =
|
|
1633
|
+
const handleOpenMultiSort = React12.useCallback(() => {
|
|
1478
1634
|
setMultiSortDialogOpen(true);
|
|
1479
1635
|
}, []);
|
|
1480
|
-
const handleCloseMultiSort =
|
|
1636
|
+
const handleCloseMultiSort = React12.useCallback(() => {
|
|
1481
1637
|
setMultiSortDialogOpen(false);
|
|
1482
1638
|
}, []);
|
|
1483
|
-
const handleApplyMultiSort =
|
|
1639
|
+
const handleApplyMultiSort = React12.useCallback((sortColumns) => {
|
|
1484
1640
|
setMultiSortDialogOpen(false);
|
|
1485
1641
|
setSorting?.(sortColumns);
|
|
1486
1642
|
}, [setSorting]);
|
|
1487
|
-
const handleApplyColumnConfig =
|
|
1643
|
+
const handleApplyColumnConfig = React12.useCallback((updates) => {
|
|
1488
1644
|
const newVisibilityState = {};
|
|
1489
1645
|
for (const update of updates) {
|
|
1490
1646
|
newVisibilityState[update.columnId] = update.isVisible;
|
|
@@ -1492,7 +1648,7 @@ function TableHeader({
|
|
|
1492
1648
|
setColumnOrder(updates.map((col) => col.columnId));
|
|
1493
1649
|
setColumnVisibility(newVisibilityState);
|
|
1494
1650
|
}, [setColumnOrder, setColumnVisibility]);
|
|
1495
|
-
const columnOptions =
|
|
1651
|
+
const columnOptions = React12.useMemo(() => {
|
|
1496
1652
|
const allHeaders = table.getHeaderGroups().flatMap((headerGroup) => headerGroup.headers);
|
|
1497
1653
|
return table.getAllColumns().filter((column) => column.id !== SELECTION_COLUMN_ID).map((column) => {
|
|
1498
1654
|
return {
|
|
@@ -1502,10 +1658,10 @@ function TableHeader({
|
|
|
1502
1658
|
};
|
|
1503
1659
|
});
|
|
1504
1660
|
}, [table]);
|
|
1505
|
-
return /* @__PURE__ */
|
|
1661
|
+
return /* @__PURE__ */ React12__default.default.createElement(React12__default.default.Fragment, null, /* @__PURE__ */ React12__default.default.createElement("thead", {
|
|
1506
1662
|
className: TableHeader_default.osdkTableHeader,
|
|
1507
1663
|
"data-resizing": isResizing
|
|
1508
|
-
}, table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */
|
|
1664
|
+
}, table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ React12__default.default.createElement("tr", {
|
|
1509
1665
|
key: headerGroup.id,
|
|
1510
1666
|
className: TableHeader_default.osdkTableHeaderRow
|
|
1511
1667
|
}, headerGroup.headers.map((header) => {
|
|
@@ -1514,14 +1670,14 @@ function TableHeader({
|
|
|
1514
1670
|
} = getColumnPinningStyles(header.column);
|
|
1515
1671
|
const isColumnPinned = header.column.getIsPinned();
|
|
1516
1672
|
const isSelectColumn = header.id === SELECTION_COLUMN_ID;
|
|
1517
|
-
return /* @__PURE__ */
|
|
1673
|
+
return /* @__PURE__ */ React12__default.default.createElement("th", {
|
|
1518
1674
|
key: header.id,
|
|
1519
1675
|
"data-pinned": header.column.getIsPinned(),
|
|
1520
1676
|
className: TableHeader_default.osdkTableHeaderCell,
|
|
1521
1677
|
style: columnStyles
|
|
1522
|
-
}, header.isPlaceholder ? null : isSelectColumn ? /* @__PURE__ */
|
|
1678
|
+
}, header.isPlaceholder ? null : isSelectColumn ? /* @__PURE__ */ React12__default.default.createElement(TableHeaderContent, {
|
|
1523
1679
|
header
|
|
1524
|
-
}) : /* @__PURE__ */
|
|
1680
|
+
}) : /* @__PURE__ */ React12__default.default.createElement(TableHeaderWithPopover, {
|
|
1525
1681
|
table,
|
|
1526
1682
|
header,
|
|
1527
1683
|
isColumnPinned,
|
|
@@ -1529,20 +1685,20 @@ function TableHeader({
|
|
|
1529
1685
|
featureFlags: headerMenuFeatureFlags,
|
|
1530
1686
|
onOpenColumnConfig: handleOpenColumnConfig,
|
|
1531
1687
|
onOpenMultiSort: handleOpenMultiSort
|
|
1532
|
-
}), header.column.getCanResize() && headerMenuFeatureFlags?.showResizeItem !== false && /* @__PURE__ */
|
|
1688
|
+
}), header.column.getCanResize() && headerMenuFeatureFlags?.showResizeItem !== false && /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
1533
1689
|
className: TableHeader_default.osdkTableHeaderResizer,
|
|
1534
1690
|
onDoubleClick: () => header.column.resetSize(),
|
|
1535
1691
|
onMouseDown: header.getResizeHandler(),
|
|
1536
1692
|
onTouchStart: header.getResizeHandler()
|
|
1537
1693
|
}));
|
|
1538
|
-
})))), !!columnOptions?.length && /* @__PURE__ */
|
|
1694
|
+
})))), !!columnOptions?.length && /* @__PURE__ */ React12__default.default.createElement(ColumnConfigDialog, {
|
|
1539
1695
|
isOpen: configDialogOpen,
|
|
1540
1696
|
onClose: handleCloseColumnConfig,
|
|
1541
1697
|
columnOptions,
|
|
1542
1698
|
currentVisibility,
|
|
1543
1699
|
currentColumnOrder,
|
|
1544
1700
|
onApply: handleApplyColumnConfig
|
|
1545
|
-
}), columnOptions?.some((col) => col.canSort) && /* @__PURE__ */
|
|
1701
|
+
}), columnOptions?.some((col) => col.canSort) && /* @__PURE__ */ React12__default.default.createElement(MultiColumnSortDialog, {
|
|
1546
1702
|
isOpen: multiSortDialogOpen,
|
|
1547
1703
|
onClose: handleCloseMultiSort,
|
|
1548
1704
|
columnOptions,
|
|
@@ -1562,13 +1718,13 @@ function LoadingStateTable({
|
|
|
1562
1718
|
}) {
|
|
1563
1719
|
const enableRowSelection = table.options.enableRowSelection;
|
|
1564
1720
|
const minHeaderCount = enableRowSelection ? 1 : 0;
|
|
1565
|
-
const headers =
|
|
1721
|
+
const headers = React12.useMemo(() => headerGroups.length > 0 ? headerGroups[0].headers : [], [headerGroups]);
|
|
1566
1722
|
const hasHeadersLoaded = headers.length > minHeaderCount;
|
|
1567
|
-
const headerRef =
|
|
1568
|
-
const bodyRef =
|
|
1569
|
-
const [loadingRowCount, setLoadingRowCount] =
|
|
1570
|
-
const [loadingColumnCount, setLoadingColumnCount] =
|
|
1571
|
-
|
|
1723
|
+
const headerRef = React12.useRef(null);
|
|
1724
|
+
const bodyRef = React12.useRef(null);
|
|
1725
|
+
const [loadingRowCount, setLoadingRowCount] = React12.useState(MIN_ROWS);
|
|
1726
|
+
const [loadingColumnCount, setLoadingColumnCount] = React12.useState(headers.length);
|
|
1727
|
+
React12.useEffect(() => {
|
|
1572
1728
|
if (hasHeadersLoaded) {
|
|
1573
1729
|
setLoadingColumnCount(headers.length);
|
|
1574
1730
|
} else {
|
|
@@ -1581,7 +1737,7 @@ function LoadingStateTable({
|
|
|
1581
1737
|
}
|
|
1582
1738
|
}
|
|
1583
1739
|
}, [columnWidth, hasHeadersLoaded, headers, tableContainerRef]);
|
|
1584
|
-
|
|
1740
|
+
React12.useEffect(() => {
|
|
1585
1741
|
if (tableContainerRef.current) {
|
|
1586
1742
|
const containerHeight = tableContainerRef.current.clientHeight;
|
|
1587
1743
|
const availableHeight = containerHeight - rowHeight;
|
|
@@ -1591,32 +1747,32 @@ function LoadingStateTable({
|
|
|
1591
1747
|
}
|
|
1592
1748
|
}
|
|
1593
1749
|
}, [tableContainerRef, rowHeight]);
|
|
1594
|
-
return /* @__PURE__ */
|
|
1750
|
+
return /* @__PURE__ */ React12__default.default.createElement(React12__default.default.Fragment, null, hasHeadersLoaded ? /* @__PURE__ */ React12__default.default.createElement(TableHeader, {
|
|
1595
1751
|
table
|
|
1596
|
-
}) : /* @__PURE__ */
|
|
1752
|
+
}) : /* @__PURE__ */ React12__default.default.createElement("thead", {
|
|
1597
1753
|
className: TableHeader_default.osdkTableHeader,
|
|
1598
1754
|
ref: headerRef
|
|
1599
|
-
}, /* @__PURE__ */
|
|
1755
|
+
}, /* @__PURE__ */ React12__default.default.createElement("tr", {
|
|
1600
1756
|
className: TableHeader_default.osdkTableHeaderRow
|
|
1601
1757
|
}, Array.from({
|
|
1602
1758
|
length: loadingColumnCount
|
|
1603
1759
|
}).map((_, index) => {
|
|
1604
1760
|
const width = headers.length > index ? headers[index].getSize() : columnWidth;
|
|
1605
|
-
return /* @__PURE__ */
|
|
1761
|
+
return /* @__PURE__ */ React12__default.default.createElement("th", {
|
|
1606
1762
|
key: `loading-header-${index}`,
|
|
1607
1763
|
className: TableHeader_default.osdkTableHeaderCell,
|
|
1608
1764
|
style: {
|
|
1609
1765
|
width
|
|
1610
1766
|
}
|
|
1611
|
-
}, /* @__PURE__ */
|
|
1767
|
+
}, /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
1612
1768
|
className: classNames7__default.default(TableHeader_default.osdkLoadingHeaderCell, LoadingCell_default.osdkCellSkeleton)
|
|
1613
1769
|
}));
|
|
1614
|
-
}))), /* @__PURE__ */
|
|
1770
|
+
}))), /* @__PURE__ */ React12__default.default.createElement("tbody", {
|
|
1615
1771
|
className: TableBody_default.osdkTableBody,
|
|
1616
1772
|
ref: bodyRef
|
|
1617
1773
|
}, Array.from({
|
|
1618
1774
|
length: loadingRowCount
|
|
1619
|
-
}).map((_, index) => /* @__PURE__ */
|
|
1775
|
+
}).map((_, index) => /* @__PURE__ */ React12__default.default.createElement(LoadingRow, {
|
|
1620
1776
|
key: `skeleton-${index}`,
|
|
1621
1777
|
columnCount: loadingColumnCount,
|
|
1622
1778
|
headers,
|
|
@@ -1633,9 +1789,9 @@ var NonIdealState_default = {};
|
|
|
1633
1789
|
function NonIdealState({
|
|
1634
1790
|
message
|
|
1635
1791
|
}) {
|
|
1636
|
-
return /* @__PURE__ */
|
|
1792
|
+
return /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
1637
1793
|
className: NonIdealState_default.container
|
|
1638
|
-
}, /* @__PURE__ */
|
|
1794
|
+
}, /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
1639
1795
|
className: NonIdealState_default.message
|
|
1640
1796
|
}, message));
|
|
1641
1797
|
}
|
|
@@ -1653,8 +1809,8 @@ function CellContextMenu({
|
|
|
1653
1809
|
onClose,
|
|
1654
1810
|
renderContent
|
|
1655
1811
|
}) {
|
|
1656
|
-
const ref =
|
|
1657
|
-
|
|
1812
|
+
const ref = React12.useRef(null);
|
|
1813
|
+
React12.useEffect(() => {
|
|
1658
1814
|
const handleClickOutside = (event) => {
|
|
1659
1815
|
if (ref.current && !ref.current.contains(event.target)) {
|
|
1660
1816
|
onClose();
|
|
@@ -1665,7 +1821,7 @@ function CellContextMenu({
|
|
|
1665
1821
|
document.removeEventListener("mousedown", handleClickOutside);
|
|
1666
1822
|
};
|
|
1667
1823
|
}, [onClose]);
|
|
1668
|
-
return /* @__PURE__ */ reactDom.createPortal(/* @__PURE__ */
|
|
1824
|
+
return /* @__PURE__ */ reactDom.createPortal(/* @__PURE__ */ React12__default.default.createElement("div", {
|
|
1669
1825
|
ref,
|
|
1670
1826
|
className: CellContextMenu_default.osdkCellContextMenu,
|
|
1671
1827
|
style: {
|
|
@@ -1678,9 +1834,9 @@ function CellContextMenu({
|
|
|
1678
1834
|
var useCellContextMenu = ({
|
|
1679
1835
|
tdRef
|
|
1680
1836
|
}) => {
|
|
1681
|
-
const [popoverPosition, setPopoverPosition] =
|
|
1682
|
-
const [isContextMenuOpen, setIsContextMenuOpen] =
|
|
1683
|
-
const handleOpenContextMenu =
|
|
1837
|
+
const [popoverPosition, setPopoverPosition] = React12.useState(null);
|
|
1838
|
+
const [isContextMenuOpen, setIsContextMenuOpen] = React12.useState(false);
|
|
1839
|
+
const handleOpenContextMenu = React12.useCallback((event) => {
|
|
1684
1840
|
event.preventDefault();
|
|
1685
1841
|
event.stopPropagation();
|
|
1686
1842
|
if (tdRef.current) {
|
|
@@ -1694,7 +1850,7 @@ var useCellContextMenu = ({
|
|
|
1694
1850
|
setIsContextMenuOpen(true);
|
|
1695
1851
|
}
|
|
1696
1852
|
}, [tdRef]);
|
|
1697
|
-
const handleCloseContextMenu =
|
|
1853
|
+
const handleCloseContextMenu = React12.useCallback(() => {
|
|
1698
1854
|
setIsContextMenuOpen(false);
|
|
1699
1855
|
setPopoverPosition(null);
|
|
1700
1856
|
}, []);
|
|
@@ -1711,7 +1867,7 @@ function TableCell({
|
|
|
1711
1867
|
cell,
|
|
1712
1868
|
renderCellContextMenu
|
|
1713
1869
|
}) {
|
|
1714
|
-
const tdRef =
|
|
1870
|
+
const tdRef = React12.useRef(null);
|
|
1715
1871
|
const isSelectColumn = cell.column.id === SELECTION_COLUMN_ID;
|
|
1716
1872
|
const {
|
|
1717
1873
|
isContextMenuOpen,
|
|
@@ -1725,15 +1881,15 @@ function TableCell({
|
|
|
1725
1881
|
const {
|
|
1726
1882
|
columnStyles
|
|
1727
1883
|
} = getColumnPinningStyles(cell.column);
|
|
1728
|
-
return /* @__PURE__ */
|
|
1884
|
+
return /* @__PURE__ */ React12__default.default.createElement(React12__default.default.Fragment, null, /* @__PURE__ */ React12__default.default.createElement("td", {
|
|
1729
1885
|
ref: tdRef,
|
|
1730
1886
|
"data-pinned": cell.column.getIsPinned(),
|
|
1731
1887
|
className: TableCell_default.osdkTableCell,
|
|
1732
1888
|
style: columnStyles,
|
|
1733
1889
|
onContextMenu: handleOpenContextMenu
|
|
1734
|
-
}, /* @__PURE__ */
|
|
1890
|
+
}, /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
1735
1891
|
className: TableCell_default.osdkTableCellContent
|
|
1736
|
-
}, reactTable.flexRender(cell.column.columnDef.cell, cell.getContext()))), shouldRenderContextMenu && /* @__PURE__ */
|
|
1892
|
+
}, reactTable.flexRender(cell.column.columnDef.cell, cell.getContext()))), shouldRenderContextMenu && /* @__PURE__ */ React12__default.default.createElement(CellContextMenu, {
|
|
1737
1893
|
cell,
|
|
1738
1894
|
position: popoverPosition,
|
|
1739
1895
|
onClose: handleCloseContextMenu,
|
|
@@ -1748,10 +1904,10 @@ function TableRow({
|
|
|
1748
1904
|
onRowClick,
|
|
1749
1905
|
renderCellContextMenu
|
|
1750
1906
|
}) {
|
|
1751
|
-
const handleClick =
|
|
1907
|
+
const handleClick = React12.useCallback(() => {
|
|
1752
1908
|
onRowClick?.(row.original);
|
|
1753
1909
|
}, [onRowClick, row.original]);
|
|
1754
|
-
return /* @__PURE__ */
|
|
1910
|
+
return /* @__PURE__ */ React12__default.default.createElement("tr", {
|
|
1755
1911
|
"data-selected": row.getIsSelected(),
|
|
1756
1912
|
className: TableRow_default.osdkTableRow,
|
|
1757
1913
|
style: {
|
|
@@ -1759,7 +1915,7 @@ function TableRow({
|
|
|
1759
1915
|
transform: `translateY(${virtualRow.start}px)`
|
|
1760
1916
|
},
|
|
1761
1917
|
onClick: handleClick
|
|
1762
|
-
}, row.getVisibleCells().map((cell) => /* @__PURE__ */
|
|
1918
|
+
}, row.getVisibleCells().map((cell) => /* @__PURE__ */ React12__default.default.createElement(TableCell, {
|
|
1763
1919
|
key: cell.id,
|
|
1764
1920
|
cell,
|
|
1765
1921
|
renderCellContextMenu
|
|
@@ -1782,27 +1938,27 @@ function TableBody({
|
|
|
1782
1938
|
getScrollElement: () => tableContainerRef.current,
|
|
1783
1939
|
overscan: 5
|
|
1784
1940
|
});
|
|
1785
|
-
|
|
1941
|
+
React12.useLayoutEffect(() => {
|
|
1786
1942
|
rowVirtualizer.measure();
|
|
1787
1943
|
}, [rowVirtualizer, rows.length]);
|
|
1788
1944
|
const totalSize = rowVirtualizer.getTotalSize();
|
|
1789
1945
|
const bodyHeight = isLoadingMore ? totalSize + rowHeight : totalSize;
|
|
1790
1946
|
const headers = headerGroups[0]?.headers ?? [];
|
|
1791
|
-
return /* @__PURE__ */
|
|
1947
|
+
return /* @__PURE__ */ React12__default.default.createElement("tbody", {
|
|
1792
1948
|
className: TableBody_default.osdkTableBody,
|
|
1793
1949
|
style: {
|
|
1794
1950
|
height: `${bodyHeight}px`
|
|
1795
1951
|
}
|
|
1796
1952
|
}, rowVirtualizer.getVirtualItems().map((virtualRow) => {
|
|
1797
1953
|
const row = rows[virtualRow.index];
|
|
1798
|
-
return /* @__PURE__ */
|
|
1954
|
+
return /* @__PURE__ */ React12__default.default.createElement(TableRow, {
|
|
1799
1955
|
key: row.id,
|
|
1800
1956
|
row,
|
|
1801
1957
|
virtualRow,
|
|
1802
1958
|
onRowClick,
|
|
1803
1959
|
renderCellContextMenu
|
|
1804
1960
|
});
|
|
1805
|
-
}), isLoadingMore && /* @__PURE__ */
|
|
1961
|
+
}), isLoadingMore && /* @__PURE__ */ React12__default.default.createElement(LoadingRow, {
|
|
1806
1962
|
headers,
|
|
1807
1963
|
translateY: totalSize,
|
|
1808
1964
|
rowHeight,
|
|
@@ -1820,17 +1976,18 @@ function BaseTable({
|
|
|
1820
1976
|
renderCellContextMenu,
|
|
1821
1977
|
className,
|
|
1822
1978
|
error,
|
|
1823
|
-
headerMenuFeatureFlags
|
|
1979
|
+
headerMenuFeatureFlags,
|
|
1980
|
+
editableConfig
|
|
1824
1981
|
}) {
|
|
1825
|
-
const tableContainerRef =
|
|
1826
|
-
const [isLoadingMore, setIsLoadingMore] =
|
|
1827
|
-
const fetchingRef =
|
|
1828
|
-
|
|
1982
|
+
const tableContainerRef = React12.useRef(null);
|
|
1983
|
+
const [isLoadingMore, setIsLoadingMore] = React12.useState(false);
|
|
1984
|
+
const fetchingRef = React12.useRef(false);
|
|
1985
|
+
React12.useEffect(() => {
|
|
1829
1986
|
if (!isLoading || fetchNextPage == null) {
|
|
1830
1987
|
setIsLoadingMore(false);
|
|
1831
1988
|
}
|
|
1832
1989
|
}, [isLoading, fetchNextPage]);
|
|
1833
|
-
const fetchMoreOnEndReached =
|
|
1990
|
+
const fetchMoreOnEndReached = React12.useCallback(async (containerRefElement) => {
|
|
1834
1991
|
if (containerRefElement && !fetchingRef.current && !isLoadingMore) {
|
|
1835
1992
|
const {
|
|
1836
1993
|
scrollHeight,
|
|
@@ -1848,25 +2005,32 @@ function BaseTable({
|
|
|
1848
2005
|
}
|
|
1849
2006
|
}
|
|
1850
2007
|
}, [fetchNextPage, isLoading, isLoadingMore]);
|
|
1851
|
-
const handleScroll =
|
|
2008
|
+
const handleScroll = React12.useCallback(async (e) => {
|
|
1852
2009
|
await fetchMoreOnEndReached(e.currentTarget);
|
|
1853
2010
|
}, [fetchMoreOnEndReached]);
|
|
1854
2011
|
const rows = table.getRowModel().rows;
|
|
1855
2012
|
const headerGroups = table.getHeaderGroups();
|
|
1856
2013
|
const hasData = rows.length > 0;
|
|
1857
|
-
|
|
2014
|
+
const hasEdits = Object.keys(editableConfig?.cellEdits ?? {}).length > 0;
|
|
2015
|
+
const handleSubmitEdits = React12.useCallback(async () => {
|
|
2016
|
+
await editableConfig?.onSubmitEdits?.();
|
|
2017
|
+
editableConfig?.clearEdits?.();
|
|
2018
|
+
}, [editableConfig]);
|
|
2019
|
+
return /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
2020
|
+
className: classNames7__default.default(Table_default.osdkTableWrapper, className)
|
|
2021
|
+
}, /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
1858
2022
|
ref: tableContainerRef,
|
|
1859
|
-
className: classNames7__default.default(Table_default.osdkTableContainer,
|
|
2023
|
+
className: classNames7__default.default(Table_default.osdkTableContainer, editableConfig && Table_default.osdkTableContainerWithButton),
|
|
1860
2024
|
onScroll: handleScroll
|
|
1861
|
-
}, /* @__PURE__ */
|
|
2025
|
+
}, /* @__PURE__ */ React12__default.default.createElement("table", null, isLoading && !hasData ? /* @__PURE__ */ React12__default.default.createElement(LoadingStateTable, {
|
|
1862
2026
|
table,
|
|
1863
2027
|
headerGroups,
|
|
1864
2028
|
rowHeight,
|
|
1865
2029
|
tableContainerRef
|
|
1866
|
-
}) : /* @__PURE__ */
|
|
2030
|
+
}) : /* @__PURE__ */ React12__default.default.createElement(React12__default.default.Fragment, null, /* @__PURE__ */ React12__default.default.createElement(TableHeader, {
|
|
1867
2031
|
table,
|
|
1868
2032
|
headerMenuFeatureFlags
|
|
1869
|
-
}), /* @__PURE__ */
|
|
2033
|
+
}), /* @__PURE__ */ React12__default.default.createElement(TableBody, {
|
|
1870
2034
|
rows,
|
|
1871
2035
|
tableContainerRef,
|
|
1872
2036
|
onRowClick,
|
|
@@ -1874,11 +2038,17 @@ function BaseTable({
|
|
|
1874
2038
|
renderCellContextMenu,
|
|
1875
2039
|
isLoadingMore,
|
|
1876
2040
|
headerGroups
|
|
1877
|
-
}))), !hasData && error == null && /* @__PURE__ */
|
|
2041
|
+
}))), !hasData && error == null && /* @__PURE__ */ React12__default.default.createElement(NonIdealState, {
|
|
1878
2042
|
message: "No Data"
|
|
1879
|
-
}), error != null && /* @__PURE__ */
|
|
2043
|
+
}), error != null && /* @__PURE__ */ React12__default.default.createElement(NonIdealState, {
|
|
1880
2044
|
message: `Error Loading Data: ${error.message}`
|
|
1881
|
-
}))
|
|
2045
|
+
})), editableConfig && /* @__PURE__ */ React12__default.default.createElement("div", {
|
|
2046
|
+
className: Table_default.submitButtonContainer
|
|
2047
|
+
}, /* @__PURE__ */ React12__default.default.createElement(ActionButton, {
|
|
2048
|
+
variant: "primary",
|
|
2049
|
+
onClick: handleSubmitEdits,
|
|
2050
|
+
disabled: !hasEdits
|
|
2051
|
+
}, "Submit Edits")));
|
|
1882
2052
|
}
|
|
1883
2053
|
|
|
1884
2054
|
// src/object-table/ObjectTable.tsx
|
|
@@ -1896,6 +2066,8 @@ function ObjectTable({
|
|
|
1896
2066
|
selectionMode = "none",
|
|
1897
2067
|
selectedRows,
|
|
1898
2068
|
onColumnVisibilityChanged,
|
|
2069
|
+
onCellValueChanged,
|
|
2070
|
+
onSubmitEdits,
|
|
1899
2071
|
enableOrdering = true,
|
|
1900
2072
|
enableColumnPinning = true,
|
|
1901
2073
|
enableColumnResizing = true,
|
|
@@ -1908,6 +2080,15 @@ function ObjectTable({
|
|
|
1908
2080
|
} = useColumnResize({
|
|
1909
2081
|
onColumnResize
|
|
1910
2082
|
});
|
|
2083
|
+
const {
|
|
2084
|
+
cellEdits,
|
|
2085
|
+
clearEdits,
|
|
2086
|
+
handleCellEdit,
|
|
2087
|
+
handleSubmitEdits
|
|
2088
|
+
} = useEditableTable({
|
|
2089
|
+
onCellValueChanged,
|
|
2090
|
+
onSubmitEdits
|
|
2091
|
+
});
|
|
1911
2092
|
const {
|
|
1912
2093
|
sorting,
|
|
1913
2094
|
onSortingChange
|
|
@@ -1963,7 +2144,7 @@ function ObjectTable({
|
|
|
1963
2144
|
hasSelectionColumn: enableRowSelection,
|
|
1964
2145
|
onColumnsPinnedChanged
|
|
1965
2146
|
});
|
|
1966
|
-
const allColumns =
|
|
2147
|
+
const allColumns = React12.useMemo(() => {
|
|
1967
2148
|
return selectionColumn ? [selectionColumn, ...columns] : columns;
|
|
1968
2149
|
}, [selectionColumn, columns]);
|
|
1969
2150
|
const table = reactTable.useReactTable({
|
|
@@ -1992,19 +2173,33 @@ function ObjectTable({
|
|
|
1992
2173
|
defaultColumn: {
|
|
1993
2174
|
minSize: 80
|
|
1994
2175
|
},
|
|
1995
|
-
getRowId
|
|
2176
|
+
getRowId,
|
|
2177
|
+
meta: {
|
|
2178
|
+
onCellEdit: handleCellEdit,
|
|
2179
|
+
cellEdits
|
|
2180
|
+
}
|
|
1996
2181
|
});
|
|
1997
|
-
const onRenderCellContextMenu =
|
|
2182
|
+
const onRenderCellContextMenu = React12.useCallback((row, cell) => {
|
|
1998
2183
|
return renderCellContextMenu?.(row, cell.getValue());
|
|
1999
2184
|
}, [renderCellContextMenu]);
|
|
2000
2185
|
const isTableLoading = isLoading || isColumnsLoading;
|
|
2001
|
-
const headerMenuFeatureFlags =
|
|
2186
|
+
const headerMenuFeatureFlags = React12.useMemo(() => ({
|
|
2002
2187
|
showSortingItems: enableOrdering,
|
|
2003
2188
|
showPinningItems: enableColumnPinning,
|
|
2004
2189
|
showResizeItem: enableColumnResizing,
|
|
2005
2190
|
showConfigItem: enableColumnConfig
|
|
2006
2191
|
}), [enableOrdering, enableColumnPinning, enableColumnResizing, enableColumnConfig]);
|
|
2007
|
-
|
|
2192
|
+
const editableConfig = React12.useMemo(() => {
|
|
2193
|
+
if (!onSubmitEdits) {
|
|
2194
|
+
return;
|
|
2195
|
+
}
|
|
2196
|
+
return {
|
|
2197
|
+
onSubmitEdits: handleSubmitEdits,
|
|
2198
|
+
clearEdits,
|
|
2199
|
+
cellEdits
|
|
2200
|
+
};
|
|
2201
|
+
}, [onSubmitEdits, handleSubmitEdits, clearEdits, cellEdits]);
|
|
2202
|
+
return /* @__PURE__ */ React12__default.default.createElement(BaseTable, {
|
|
2008
2203
|
table,
|
|
2009
2204
|
isLoading: isTableLoading,
|
|
2010
2205
|
fetchNextPage: fetchMore,
|
|
@@ -2013,7 +2208,8 @@ function ObjectTable({
|
|
|
2013
2208
|
renderCellContextMenu: onRenderCellContextMenu,
|
|
2014
2209
|
className: props.className,
|
|
2015
2210
|
error,
|
|
2016
|
-
headerMenuFeatureFlags
|
|
2211
|
+
headerMenuFeatureFlags,
|
|
2212
|
+
editableConfig
|
|
2017
2213
|
});
|
|
2018
2214
|
}
|
|
2019
2215
|
|