@economic/taco 1.19.1 → 1.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/AlertDialog/components/Content.d.ts +1 -1
- package/dist/components/Calendar/Calendar.d.ts +1 -1
- package/dist/components/Calendar/Calendar.stories.d.ts +1 -1
- package/dist/components/Datepicker/Datepicker.d.ts +1 -1
- package/dist/components/Datepicker/Datepicker.stories.d.ts +1 -1
- package/dist/components/Dialog/components/Content.d.ts +1 -1
- package/dist/components/Dialog/components/Drawer.d.ts +1 -1
- package/dist/components/IconButton/IconButton.d.ts +2 -2
- package/dist/components/Input/Input.d.ts +1 -1
- package/dist/components/Listbox/Listbox.d.ts +2 -2
- package/dist/components/Listbox/Listbox.stories.d.ts +1 -1
- package/dist/components/Listbox/ScrollableList.d.ts +1 -1
- package/dist/components/Menu/components/Checkbox.d.ts +1 -1
- package/dist/components/Menu/components/Content.d.ts +1 -1
- package/dist/components/Menu/components/Item.d.ts +1 -1
- package/dist/components/Menu/components/Link.d.ts +1 -1
- package/dist/components/Menu/components/Trigger.d.ts +1 -1
- package/dist/components/Provider/Localization.d.ts +26 -0
- package/dist/components/SearchInput/SearchInput.d.ts +1 -1
- package/dist/components/SearchInput/SearchInput.stories.d.ts +1 -1
- package/dist/components/Select/Select.d.ts +1 -1
- package/dist/components/Select/Select.stories.d.ts +1 -1
- package/dist/components/Select2/components/Option.d.ts +1 -1
- package/dist/components/Select2/components/Search.d.ts +1 -1
- package/dist/components/Select2/components/Trigger.d.ts +1 -1
- package/dist/components/Shortcut/Shortcut.d.ts +5 -0
- package/dist/components/Table2/Table2.d.ts +33 -0
- package/dist/components/Table2/Table2.stories.d.ts +50 -0
- package/dist/components/Table2/components/BatchActionsMenu.d.ts +10 -0
- package/dist/components/Table2/components/ColumnSettingsButton.d.ts +7 -0
- package/dist/components/Table2/components/EditModeButton.d.ts +7 -0
- package/dist/components/Table2/components/RowDensityButton.d.ts +7 -0
- package/dist/components/Table2/components/Search.d.ts +3 -0
- package/dist/components/Table2/components/ShortcutsGuideButton.d.ts +7 -0
- package/dist/components/Table2/components/column/Base.d.ts +12 -0
- package/dist/components/Table2/components/column/Cell.d.ts +15 -0
- package/dist/components/Table2/components/column/Footer.d.ts +9 -0
- package/dist/components/Table2/components/column/Header.d.ts +11 -0
- package/dist/components/Table2/components/column/Indicator.d.ts +16 -0
- package/dist/components/Table2/components/column/ValidationError.d.ts +5 -0
- package/dist/components/Table2/components/column/utils.d.ts +2 -0
- package/dist/components/Table2/components/filters/FiltersButton.d.ts +7 -0
- package/dist/components/Table2/components/filters/components/Column.d.ts +11 -0
- package/dist/components/Table2/components/filters/components/ColumnFilter.d.ts +9 -0
- package/dist/components/Table2/components/filters/components/Comparator.d.ts +11 -0
- package/dist/components/Table2/components/filters/components/InferredControl.d.ts +10 -0
- package/dist/components/Table2/components/row/Context.d.ts +16 -0
- package/dist/components/Table2/components/row/ExpandedRow.d.ts +6 -0
- package/dist/components/Table2/components/row/Row.d.ts +7 -0
- package/dist/components/Table2/hooks/listeners/useActiveCellStateListener.d.ts +3 -0
- package/dist/components/Table2/hooks/listeners/useActiveRowStateListener.d.ts +3 -0
- package/dist/components/Table2/hooks/listeners/useColumnOffsetStateListener.d.ts +4 -0
- package/dist/components/Table2/hooks/listeners/useRowSelectionListener.d.ts +3 -0
- package/dist/components/Table2/hooks/listeners/useSettingsStateListener.d.ts +3 -0
- package/dist/components/Table2/hooks/useActiveCell.d.ts +26 -0
- package/dist/components/Table2/hooks/useActiveRow.d.ts +10 -0
- package/dist/components/Table2/hooks/useColumnDefinitions.d.ts +36 -0
- package/dist/components/Table2/hooks/useEditMode.d.ts +28 -0
- package/dist/components/Table2/hooks/useGridTemplate.d.ts +2 -0
- package/dist/components/Table2/hooks/useSeparatedChildren.d.ts +1 -0
- package/dist/components/Table2/hooks/useTable.d.ts +41 -0
- package/dist/components/Table2/hooks/useVirtualiser.d.ts +23 -0
- package/dist/components/Table2/types.d.ts +139 -0
- package/dist/components/Table2/utilities/cell.d.ts +13 -0
- package/dist/components/Table2/utilities/columns.d.ts +13 -0
- package/dist/components/Table2/utilities/filterFn.d.ts +3 -0
- package/dist/components/Tag/Tag.d.ts +1 -1
- package/dist/components/Tooltip/Tooltip.d.ts +1 -1
- package/dist/components/Tooltip/Tooltip.stories.d.ts +1 -1
- package/dist/esm/index.css +1 -1
- package/dist/esm/node_modules/babel-plugin-transform-async-to-promises/helpers.mjs.js +14 -1
- package/dist/esm/node_modules/babel-plugin-transform-async-to-promises/helpers.mjs.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Checkbox/Checkbox.js +13 -5
- package/dist/esm/packages/taco/src/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Provider/Localization.js +23 -0
- package/dist/esm/packages/taco/src/components/Provider/Localization.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js +18 -0
- package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/Table2.js +374 -0
- package/dist/esm/packages/taco/src/components/Table2/Table2.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/BatchActionsMenu.js +83 -0
- package/dist/esm/packages/taco/src/components/Table2/components/BatchActionsMenu.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/ColumnSettingsButton.js +238 -0
- package/dist/esm/packages/taco/src/components/Table2/components/ColumnSettingsButton.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/EditModeButton.js +58 -0
- package/dist/esm/packages/taco/src/components/Table2/components/EditModeButton.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/RowDensityButton.js +31 -0
- package/dist/esm/packages/taco/src/components/Table2/components/RowDensityButton.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/Search.js +55 -0
- package/dist/esm/packages/taco/src/components/Table2/components/Search.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/ShortcutsGuideButton.js +94 -0
- package/dist/esm/packages/taco/src/components/Table2/components/ShortcutsGuideButton.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/column/Base.js +32 -0
- package/dist/esm/packages/taco/src/components/Table2/components/column/Base.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/column/Cell.js +516 -0
- package/dist/esm/packages/taco/src/components/Table2/components/column/Cell.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/column/Footer.js +27 -0
- package/dist/esm/packages/taco/src/components/Table2/components/column/Footer.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/column/Header.js +159 -0
- package/dist/esm/packages/taco/src/components/Table2/components/column/Header.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/column/Indicator.js +78 -0
- package/dist/esm/packages/taco/src/components/Table2/components/column/Indicator.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/column/ValidationError.js +30 -0
- package/dist/esm/packages/taco/src/components/Table2/components/column/ValidationError.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/column/utils.js +38 -0
- package/dist/esm/packages/taco/src/components/Table2/components/column/utils.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/filters/FiltersButton.js +89 -0
- package/dist/esm/packages/taco/src/components/Table2/components/filters/FiltersButton.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/filters/components/Column.js +31 -0
- package/dist/esm/packages/taco/src/components/Table2/components/filters/components/Column.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/filters/components/ColumnFilter.js +121 -0
- package/dist/esm/packages/taco/src/components/Table2/components/filters/components/ColumnFilter.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/filters/components/Comparator.js +60 -0
- package/dist/esm/packages/taco/src/components/Table2/components/filters/components/Comparator.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/filters/components/InferredControl.js +96 -0
- package/dist/esm/packages/taco/src/components/Table2/components/filters/components/InferredControl.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/row/Context.js +26 -0
- package/dist/esm/packages/taco/src/components/Table2/components/row/Context.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/row/ExpandedRow.js +33 -0
- package/dist/esm/packages/taco/src/components/Table2/components/row/ExpandedRow.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/row/Row.js +58 -0
- package/dist/esm/packages/taco/src/components/Table2/components/row/Row.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useActiveRowStateListener.js +19 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useActiveRowStateListener.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useColumnOffsetStateListener.js +44 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useColumnOffsetStateListener.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useRowSelectionListener.js +17 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useRowSelectionListener.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useSettingsStateListener.js +25 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useSettingsStateListener.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useActiveRow.js +33 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useActiveRow.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js +109 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useEditMode.js +112 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useEditMode.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useGridTemplate.js +36 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useGridTemplate.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useSeparatedChildren.js +21 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useSeparatedChildren.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js +202 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useVirtualiser.js +49 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useVirtualiser.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/types.js +16 -0
- package/dist/esm/packages/taco/src/components/Table2/types.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/utilities/cell.js +41 -0
- package/dist/esm/packages/taco/src/components/Table2/utilities/cell.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js +311 -0
- package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/utilities/filterFn.js +96 -0
- package/dist/esm/packages/taco/src/components/Table2/utilities/filterFn.js.map +1 -0
- package/dist/esm/packages/taco/src/hooks/useBoundaryOverflowDetection.js +16 -0
- package/dist/esm/packages/taco/src/hooks/useBoundaryOverflowDetection.js.map +1 -0
- package/dist/esm/packages/taco/src/hooks/useGlobalKeyboardShortcut.js +13 -0
- package/dist/esm/packages/taco/src/hooks/useGlobalKeyboardShortcut.js.map +1 -0
- package/dist/esm/packages/taco/src/index.js +4 -2
- package/dist/esm/packages/taco/src/index.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Sortable/components/Container.js +59 -0
- package/dist/esm/packages/taco/src/primitives/Sortable/components/Container.js.map +1 -0
- package/dist/esm/packages/taco/src/primitives/Sortable/components/Item.js +47 -0
- package/dist/esm/packages/taco/src/primitives/Sortable/components/Item.js.map +1 -0
- package/dist/esm/packages/taco/src/primitives/Sortable/components/List.js +28 -0
- package/dist/esm/packages/taco/src/primitives/Sortable/components/List.js.map +1 -0
- package/dist/esm/packages/taco/src/utils/date.js +4 -1
- package/dist/esm/packages/taco/src/utils/date.js.map +1 -1
- package/dist/esm/packages/taco/src/utils/dom.js +2 -1
- package/dist/esm/packages/taco/src/utils/dom.js.map +1 -1
- package/dist/esm/packages/taco/src/utils/hooks/useTruncated.js +20 -0
- package/dist/esm/packages/taco/src/utils/hooks/useTruncated.js.map +1 -0
- package/dist/hooks/useGlobalKeyboardShortcut.d.ts +1 -0
- package/dist/index.css +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/primitives/Sortable/Sortable.d.ts +2 -2
- package/dist/taco.cjs.development.js +3489 -90
- package/dist/taco.cjs.development.js.map +1 -1
- package/dist/taco.cjs.production.min.js +1 -1
- package/dist/taco.cjs.production.min.js.map +1 -1
- package/dist/utils/date.d.ts +1 -0
- package/dist/utils/hooks/useTruncated.d.ts +3 -0
- package/package.json +4 -2
- package/tailwind.config.js +11 -1
- package/types.json +1368 -2
@@ -0,0 +1,311 @@
|
|
1
|
+
import React__default from 'react';
|
2
|
+
import cn from 'classnames';
|
3
|
+
import { Icon } from '../../Icon/Icon.js';
|
4
|
+
import { Tooltip } from '../../Tooltip/Tooltip.js';
|
5
|
+
import { IconButton } from '../../IconButton/IconButton.js';
|
6
|
+
import { Checkbox } from '../../Checkbox/Checkbox.js';
|
7
|
+
import { Menu } from '../../Menu/Menu.js';
|
8
|
+
import { Shortcut } from '../../Shortcut/Shortcut.js';
|
9
|
+
|
10
|
+
const COLUMN_ID_FOR_DRAGGABLE = '__draggable';
|
11
|
+
const COLUMN_ID_FOR_SELECTION = '__select';
|
12
|
+
const COLUMN_ID_FOR_EXPANSION = '__expansion';
|
13
|
+
const COLUMN_ID_FOR_ACTIONS = '__actions';
|
14
|
+
const isInternalColumn = id => id === COLUMN_ID_FOR_SELECTION || id === COLUMN_ID_FOR_EXPANSION || id === COLUMN_ID_FOR_ACTIONS || id === COLUMN_ID_FOR_DRAGGABLE;
|
15
|
+
const MIN_COLUMN_SIZE = 80; // accounts for padding and sort controls
|
16
|
+
const toggleBetween = (fromRowIndex, toRowIndex) => {
|
17
|
+
const fromIndex = toRowIndex < fromRowIndex ? toRowIndex : fromRowIndex;
|
18
|
+
const toIndex = toRowIndex > fromRowIndex ? toRowIndex : fromRowIndex;
|
19
|
+
return [fromIndex, toIndex];
|
20
|
+
};
|
21
|
+
function createRowDraggableColumn(onRowDrag) {
|
22
|
+
return {
|
23
|
+
id: COLUMN_ID_FOR_DRAGGABLE,
|
24
|
+
cell: ({
|
25
|
+
row,
|
26
|
+
table
|
27
|
+
}) => {
|
28
|
+
const meta = table.options.meta;
|
29
|
+
const GHOST_ELEMENT_ID = 'taco_table_dragging';
|
30
|
+
const onDragStart = event => {
|
31
|
+
const rows = row.getIsSelected() ? table.getSelectedRowModel().rows : [row, ...table.getSelectedRowModel().rows];
|
32
|
+
meta.setDragging(rows.reduce((dragging, rowBeingDragged) => ({
|
33
|
+
...dragging,
|
34
|
+
[rowBeingDragged.id]: true
|
35
|
+
}), {}));
|
36
|
+
const data = rows.map(row => row.original);
|
37
|
+
// set a default data value so that the consumer doesn't have to
|
38
|
+
event.dataTransfer.setData('text', JSON.stringify(data));
|
39
|
+
const showPlaceholder = text => {
|
40
|
+
const ghost = document.createElement('div');
|
41
|
+
ghost.id = GHOST_ELEMENT_ID;
|
42
|
+
ghost.className = 'wcag-blue rounded flex w-48 p-4 absolute -ml-[100vw]';
|
43
|
+
ghost.innerText = text;
|
44
|
+
document.body.appendChild(ghost);
|
45
|
+
event.dataTransfer.setDragImage(ghost, 0, 0);
|
46
|
+
};
|
47
|
+
const setDataTransfer = text => event.dataTransfer.setData('text', text);
|
48
|
+
onRowDrag(data, showPlaceholder, setDataTransfer);
|
49
|
+
};
|
50
|
+
const onDragEnd = () => {
|
51
|
+
var _document$getElementB;
|
52
|
+
(_document$getElementB = document.getElementById(GHOST_ELEMENT_ID)) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.remove();
|
53
|
+
meta.setDragging({});
|
54
|
+
};
|
55
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
56
|
+
draggable: true,
|
57
|
+
onDragStart: onDragStart,
|
58
|
+
onDragEnd: onDragEnd
|
59
|
+
}, /*#__PURE__*/React__default.createElement(Icon, {
|
60
|
+
"aria-label": "Drag row",
|
61
|
+
name: "drag",
|
62
|
+
className: "text-grey-darkest invisible w-[20px] cursor-grab active:cursor-grabbing group-hover/row:visible group-[[aria-grabbed]]/row:text-white"
|
63
|
+
}));
|
64
|
+
},
|
65
|
+
meta: {
|
66
|
+
align: 'center',
|
67
|
+
className: 'items-center !px-0',
|
68
|
+
disableTruncation: true,
|
69
|
+
headerClassName: 'items-center !px-0'
|
70
|
+
},
|
71
|
+
// sizing
|
72
|
+
enableResizing: false,
|
73
|
+
size: 10
|
74
|
+
};
|
75
|
+
}
|
76
|
+
function createRowSelectionColumn(enableMultipleRowSelection, lastSelectedRowIndex, onRowDrag, tableRef) {
|
77
|
+
let header;
|
78
|
+
let cell;
|
79
|
+
if (enableMultipleRowSelection) {
|
80
|
+
header = ({
|
81
|
+
table
|
82
|
+
}) => /*#__PURE__*/React__default.createElement(Tooltip, {
|
83
|
+
title: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, table.getIsAllPageRowsSelected() ? 'Deselect all' : 'Select all', /*#__PURE__*/React__default.createElement(Shortcut, {
|
84
|
+
className: "ml-2",
|
85
|
+
keys: ['Ctrl', 'A']
|
86
|
+
}))
|
87
|
+
}, /*#__PURE__*/React__default.createElement(Checkbox, {
|
88
|
+
"aria-label": table.getIsAllPageRowsSelected() ? 'Deselect all rows' : 'Select all rows',
|
89
|
+
className: "hover:border-blue !mt-0",
|
90
|
+
checked: table.getIsAllPageRowsSelected(),
|
91
|
+
indeterminate: table.getIsSomePageRowsSelected(),
|
92
|
+
onChange: checked => table.toggleAllPageRowsSelected(checked),
|
93
|
+
onClick: () => {
|
94
|
+
var _tableRef$current;
|
95
|
+
(_tableRef$current = tableRef.current) === null || _tableRef$current === void 0 ? void 0 : _tableRef$current.focus();
|
96
|
+
},
|
97
|
+
tabIndex: -1
|
98
|
+
}));
|
99
|
+
cell = ({
|
100
|
+
row,
|
101
|
+
table
|
102
|
+
}) => {
|
103
|
+
const meta = table.options.meta;
|
104
|
+
const handleClick = event => {
|
105
|
+
var _tableRef$current2;
|
106
|
+
event.stopPropagation();
|
107
|
+
if (event.shiftKey) {
|
108
|
+
const [fromIndex, toIndex] = toggleBetween((lastSelectedRowIndex === null || lastSelectedRowIndex === void 0 ? void 0 : lastSelectedRowIndex.current) || 0, row.index);
|
109
|
+
table.getRowModel().rows.slice(fromIndex, toIndex + 1).forEach(row => row.toggleSelected(true));
|
110
|
+
} else {
|
111
|
+
row.toggleSelected();
|
112
|
+
}
|
113
|
+
lastSelectedRowIndex.current = row.index;
|
114
|
+
meta.setActiveRowIndex(row.index);
|
115
|
+
(_tableRef$current2 = tableRef.current) === null || _tableRef$current2 === void 0 ? void 0 : _tableRef$current2.focus();
|
116
|
+
};
|
117
|
+
return /*#__PURE__*/React__default.createElement(Tooltip, {
|
118
|
+
title: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, table.getIsAllPageRowsSelected() ? 'Deselect' : 'Select', /*#__PURE__*/React__default.createElement(Shortcut, {
|
119
|
+
className: "ml-2",
|
120
|
+
keys: ['Space']
|
121
|
+
}))
|
122
|
+
}, /*#__PURE__*/React__default.createElement(Checkbox, {
|
123
|
+
"aria-label": row.getIsSelected() ? 'Deselect row' : 'Select row',
|
124
|
+
className: "hover:border-blue !mt-[0.45rem]",
|
125
|
+
checked: row.getIsSelected(),
|
126
|
+
onClick: handleClick,
|
127
|
+
// this is necessary to remove console spam from eslint
|
128
|
+
onChange: () => false,
|
129
|
+
tabIndex: -1
|
130
|
+
}));
|
131
|
+
};
|
132
|
+
} else {
|
133
|
+
cell = ({
|
134
|
+
row,
|
135
|
+
table
|
136
|
+
}) => {
|
137
|
+
const meta = table.options.meta;
|
138
|
+
const className = 'border-grey-300 focus:yt-focus flex h-5 w-5 mt-[0.45rem] flex-shrink-0 items-center justify-center self-start rounded-full border-2 bg-white hover:border-[5px] aria-checked:border-blue-500 aria-checked:bg-blue-500 hover:aria-checked:border-blue-300';
|
139
|
+
const handleClick = event => {
|
140
|
+
var _tableRef$current3;
|
141
|
+
event.stopPropagation();
|
142
|
+
row.toggleSelected();
|
143
|
+
meta.setActiveRowIndex(row.index);
|
144
|
+
(_tableRef$current3 = tableRef.current) === null || _tableRef$current3 === void 0 ? void 0 : _tableRef$current3.focus();
|
145
|
+
};
|
146
|
+
return /*#__PURE__*/React__default.createElement("button", {
|
147
|
+
className: className,
|
148
|
+
"aria-checked": row.getIsSelected(),
|
149
|
+
onClick: handleClick,
|
150
|
+
role: "radio",
|
151
|
+
tabIndex: -1,
|
152
|
+
type: "button"
|
153
|
+
}, row.getIsSelected() ? /*#__PURE__*/React__default.createElement("span", {
|
154
|
+
className: "h-2.5 w-2.5 rounded-full bg-white"
|
155
|
+
}) : null);
|
156
|
+
};
|
157
|
+
}
|
158
|
+
return {
|
159
|
+
id: COLUMN_ID_FOR_SELECTION,
|
160
|
+
header,
|
161
|
+
cell,
|
162
|
+
meta: {
|
163
|
+
align: 'center',
|
164
|
+
className: onRowDrag ? '!pl-0 !pr-3' : '!px-3',
|
165
|
+
disableTruncation: true,
|
166
|
+
headerClassName: onRowDrag ? '!pl-0 !pr-3' : '!px-3'
|
167
|
+
},
|
168
|
+
// sizing
|
169
|
+
enableResizing: false,
|
170
|
+
size: 46
|
171
|
+
};
|
172
|
+
}
|
173
|
+
function createRowExpansionColumn() {
|
174
|
+
return {
|
175
|
+
id: COLUMN_ID_FOR_EXPANSION,
|
176
|
+
header: ({
|
177
|
+
table
|
178
|
+
}) => /*#__PURE__*/React__default.createElement(Tooltip, {
|
179
|
+
title: table.getIsSomeRowsExpanded() ? 'Collapse all' : 'Expand all'
|
180
|
+
}, /*#__PURE__*/React__default.createElement(IconButton, {
|
181
|
+
title: table.getIsSomeRowsExpanded() ? 'Collapse all rows' : 'Expand all rows',
|
182
|
+
appearance: "discrete",
|
183
|
+
className: "-mb-2 -mt-1.5",
|
184
|
+
icon: table.getIsSomeRowsExpanded() ? 'chevron-down-double' : 'chevron-right-double',
|
185
|
+
onClick: event => {
|
186
|
+
event.stopPropagation();
|
187
|
+
table.toggleAllRowsExpanded(table.getIsSomeRowsExpanded() ? false : true);
|
188
|
+
},
|
189
|
+
tabIndex: -1
|
190
|
+
})),
|
191
|
+
cell: ({
|
192
|
+
row
|
193
|
+
}) => /*#__PURE__*/React__default.createElement(Tooltip, {
|
194
|
+
title: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, row.getIsExpanded() ? 'Collapse' : 'Expand', /*#__PURE__*/React__default.createElement(Shortcut, {
|
195
|
+
className: "ml-2",
|
196
|
+
keys: ['Ctrl', row.getIsExpanded() ? '←' : '→']
|
197
|
+
}))
|
198
|
+
}, /*#__PURE__*/React__default.createElement(IconButton, {
|
199
|
+
title: row.getIsExpanded() ? 'Collapse row' : 'Expand row',
|
200
|
+
appearance: "discrete",
|
201
|
+
icon: row.getIsExpanded() ? 'chevron-down' : 'chevron-right',
|
202
|
+
onClick: event => {
|
203
|
+
event.stopPropagation();
|
204
|
+
row.toggleExpanded();
|
205
|
+
},
|
206
|
+
tabIndex: -1
|
207
|
+
})),
|
208
|
+
meta: {
|
209
|
+
align: 'center',
|
210
|
+
className: 'items-center !p-0',
|
211
|
+
disableTruncation: true,
|
212
|
+
headerClassName: 'items-center hover:!bg-white !p-0'
|
213
|
+
},
|
214
|
+
// sizing
|
215
|
+
enableResizing: false,
|
216
|
+
size: 36
|
217
|
+
};
|
218
|
+
}
|
219
|
+
const getActionPropertyValue = (property, row) => typeof property === 'function' ? property(row) : property;
|
220
|
+
function RowActionCell({
|
221
|
+
row,
|
222
|
+
actions,
|
223
|
+
moreActions
|
224
|
+
}) {
|
225
|
+
const isVisible = action => typeof action.visible !== 'undefined' ? typeof action.visible === 'function' ? action.visible(row.original) : action.visible : true;
|
226
|
+
const visibleActions = actions.filter(isVisible);
|
227
|
+
const visibleMoreActions = moreActions.filter(isVisible);
|
228
|
+
const rowActionCellWidth = React__default.useMemo(() => {
|
229
|
+
const totalButtons = visibleActions.length + (visibleMoreActions.length ? 1 : 0);
|
230
|
+
// this is necessary because row actions is has this mount hover delay, which makes the
|
231
|
+
// size calculation in the header get set before rendering - meaning the size doesn't include the buttons
|
232
|
+
// when we cache icons this can go
|
233
|
+
const paddingSize = 8;
|
234
|
+
const buttonSize = 32;
|
235
|
+
return paddingSize + totalButtons * buttonSize;
|
236
|
+
}, [visibleActions.length, visibleMoreActions.length]);
|
237
|
+
// Instead of relying on row.index to figure out whether the row is being hovered or is active. We should rely on a
|
238
|
+
// CSS fix. The reason behind this is that row data or index is the initial data or index that is passed to the
|
239
|
+
// table on the first render, the indexes of row changes when sorting or filtering is applied.
|
240
|
+
// If the row is not the active row or the hovered row then actions are hidden.
|
241
|
+
const actionClassName = 'group-hover/row:flex group-[[aria-current]]/row:flex hidden';
|
242
|
+
return /*#__PURE__*/React__default.createElement("span", {
|
243
|
+
className: "-mb-2 -mt-1.5 flex justify-end text-right",
|
244
|
+
style: {
|
245
|
+
width: rowActionCellWidth
|
246
|
+
}
|
247
|
+
}, visibleActions.map((action, i) => /*#__PURE__*/React__default.createElement(IconButton, {
|
248
|
+
key: i,
|
249
|
+
className: actionClassName,
|
250
|
+
"aria-label": getActionPropertyValue(action.ariaLabel, row.original),
|
251
|
+
appearance: "discrete",
|
252
|
+
dialog: action.dialog ? action.dialog(row.original) : undefined,
|
253
|
+
disabled: getActionPropertyValue(action.disabled, row.original),
|
254
|
+
icon: getActionPropertyValue(action.icon, row.original),
|
255
|
+
onClick: event => {
|
256
|
+
event.stopPropagation();
|
257
|
+
if (action.onClick) {
|
258
|
+
action.onClick(row.original);
|
259
|
+
}
|
260
|
+
},
|
261
|
+
tooltip: getActionPropertyValue(action.text, row.original)
|
262
|
+
})), visibleMoreActions.length ? /*#__PURE__*/React__default.createElement(IconButton, {
|
263
|
+
className: actionClassName,
|
264
|
+
"aria-label": "View other actions",
|
265
|
+
appearance: "discrete",
|
266
|
+
icon: "more",
|
267
|
+
onClick: event => {
|
268
|
+
event.preventDefault();
|
269
|
+
},
|
270
|
+
menu: menuProps => /*#__PURE__*/React__default.createElement(Menu, Object.assign({}, menuProps), /*#__PURE__*/React__default.createElement(Menu.Content, null, visibleMoreActions.map((action, i) => /*#__PURE__*/React__default.createElement(Menu.Item, {
|
271
|
+
key: i,
|
272
|
+
dialog: action.dialog ? action.dialog(row.original) : undefined,
|
273
|
+
disabled: getActionPropertyValue(action.disabled, row.original),
|
274
|
+
icon: getActionPropertyValue(action.icon, row.original),
|
275
|
+
onClick: () => {
|
276
|
+
if (action.onClick) {
|
277
|
+
action.onClick(row.original);
|
278
|
+
}
|
279
|
+
}
|
280
|
+
}, getActionPropertyValue(action.text, row.original))))),
|
281
|
+
tooltip: "Other actions..."
|
282
|
+
}) : null);
|
283
|
+
}
|
284
|
+
function createRowActionsColumn(rowActions) {
|
285
|
+
const actions = rowActions.slice(0, 3);
|
286
|
+
const moreActions = rowActions.slice(3);
|
287
|
+
return {
|
288
|
+
id: COLUMN_ID_FOR_ACTIONS,
|
289
|
+
cell: ({
|
290
|
+
row
|
291
|
+
}) => /*#__PURE__*/React__default.createElement(RowActionCell, {
|
292
|
+
row: row,
|
293
|
+
actions: actions,
|
294
|
+
moreActions: moreActions
|
295
|
+
}),
|
296
|
+
meta: {
|
297
|
+
align: 'right',
|
298
|
+
className: row => cn('items-center print:opacity-0 group-[[aria-current]]/row:sticky group-hover/row:sticky right-0 bg-transparent !px-1', {
|
299
|
+
'group-hover/row:!shadow-[-6px_0px_6px_theme(colors.grey.100)] group-[[aria-current]]/row:!shadow-[-6px_0px_6px_theme(colors.grey.100)]': !row.getIsSelected(),
|
300
|
+
'shadow-[-6px_0px_6px_theme(colors.blue.100)]': row.getIsSelected()
|
301
|
+
}),
|
302
|
+
disableTruncation: true,
|
303
|
+
headerClassName: 'hover:!bg-white !px-1'
|
304
|
+
},
|
305
|
+
// sizing
|
306
|
+
enableResizing: false
|
307
|
+
};
|
308
|
+
}
|
309
|
+
|
310
|
+
export { COLUMN_ID_FOR_ACTIONS, COLUMN_ID_FOR_DRAGGABLE, COLUMN_ID_FOR_EXPANSION, COLUMN_ID_FOR_SELECTION, MIN_COLUMN_SIZE, createRowActionsColumn, createRowDraggableColumn, createRowExpansionColumn, createRowSelectionColumn, isInternalColumn };
|
311
|
+
//# sourceMappingURL=columns.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"columns.js","sources":["../../../../../../../../src/components/Table2/utilities/columns.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { CellContext, DisplayColumnDef, Row, TableMeta } from '@tanstack/react-table';\nimport { Checkbox } from '../../Checkbox/Checkbox';\nimport { IconButton } from '../../IconButton/IconButton';\nimport { Shortcut } from '../../Shortcut/Shortcut';\nimport { Tooltip } from '../../Tooltip/Tooltip';\nimport { RowDragHandler, Table2RowActionProps } from '../types';\nimport { Menu } from '../../Menu/Menu';\nimport { Icon } from '../../Icon/Icon';\n\nexport const COLUMN_ID_FOR_DRAGGABLE = '__draggable';\nexport const COLUMN_ID_FOR_SELECTION = '__select';\nexport const COLUMN_ID_FOR_EXPANSION = '__expansion';\nexport const COLUMN_ID_FOR_ACTIONS = '__actions';\n\nexport const isInternalColumn = (id: string) =>\n id === COLUMN_ID_FOR_SELECTION ||\n id === COLUMN_ID_FOR_EXPANSION ||\n id === COLUMN_ID_FOR_ACTIONS ||\n id === COLUMN_ID_FOR_DRAGGABLE;\n\nexport const MIN_COLUMN_SIZE = 80; // accounts for padding and sort controls\n\nconst toggleBetween = (fromRowIndex: number, toRowIndex: number): [number, number] => {\n const fromIndex = toRowIndex < fromRowIndex ? toRowIndex : fromRowIndex;\n const toIndex = toRowIndex > fromRowIndex ? toRowIndex : fromRowIndex;\n\n return [fromIndex, toIndex];\n};\n\nexport function createRowDraggableColumn<TType = any>(onRowDrag: RowDragHandler<TType>): DisplayColumnDef<TType, any> {\n return {\n id: COLUMN_ID_FOR_DRAGGABLE,\n cell: ({ row, table }) => {\n const meta = table.options.meta as TableMeta<any>;\n const GHOST_ELEMENT_ID = 'taco_table_dragging';\n\n const onDragStart = (event: React.DragEvent): void => {\n const rows = row.getIsSelected() ? table.getSelectedRowModel().rows : [row, ...table.getSelectedRowModel().rows];\n\n meta.setDragging(rows.reduce((dragging, rowBeingDragged) => ({ ...dragging, [rowBeingDragged.id]: true }), {}));\n\n const data = rows.map(row => row.original);\n // set a default data value so that the consumer doesn't have to\n event.dataTransfer.setData('text', JSON.stringify(data));\n\n const showPlaceholder = (text: string) => {\n const ghost = document.createElement('div');\n ghost.id = GHOST_ELEMENT_ID;\n ghost.className = 'wcag-blue rounded flex w-48 p-4 absolute -ml-[100vw]';\n ghost.innerText = text;\n document.body.appendChild(ghost);\n event.dataTransfer.setDragImage(ghost, 0, 0);\n };\n\n const setDataTransfer = (text: string) => event.dataTransfer.setData('text', text);\n\n onRowDrag(data, showPlaceholder, setDataTransfer);\n };\n\n const onDragEnd = (): void => {\n document.getElementById(GHOST_ELEMENT_ID)?.remove();\n meta.setDragging({});\n };\n\n return (\n <div draggable onDragStart={onDragStart} onDragEnd={onDragEnd}>\n <Icon\n aria-label=\"Drag row\"\n name=\"drag\"\n className=\"text-grey-darkest invisible w-[20px] cursor-grab active:cursor-grabbing group-hover/row:visible group-[[aria-grabbed]]/row:text-white\"\n />\n </div>\n );\n },\n meta: {\n align: 'center',\n className: 'items-center !px-0',\n disableTruncation: true,\n headerClassName: 'items-center !px-0',\n },\n // sizing\n enableResizing: false,\n size: 10,\n };\n}\n\nexport function createRowSelectionColumn<TType = any>(\n enableMultipleRowSelection: boolean,\n lastSelectedRowIndex: React.MutableRefObject<number | undefined>,\n onRowDrag: RowDragHandler<TType> | undefined,\n tableRef: React.RefObject<HTMLDivElement>\n): DisplayColumnDef<TType, any> {\n let header;\n let cell;\n\n if (enableMultipleRowSelection) {\n header = ({ table }) => (\n <Tooltip\n title={\n <>\n {table.getIsAllPageRowsSelected() ? 'Deselect all' : 'Select all'}\n <Shortcut className=\"ml-2\" keys={['Ctrl', 'A']} />\n </>\n }>\n <Checkbox\n aria-label={table.getIsAllPageRowsSelected() ? 'Deselect all rows' : 'Select all rows'}\n className=\"hover:border-blue !mt-0\"\n checked={table.getIsAllPageRowsSelected()}\n indeterminate={table.getIsSomePageRowsSelected()}\n onChange={checked => table.toggleAllPageRowsSelected(checked)}\n onClick={() => {\n tableRef.current?.focus();\n }}\n tabIndex={-1}\n />\n </Tooltip>\n );\n cell = ({ row, table }) => {\n const meta = table.options.meta as TableMeta<any>;\n const handleClick = (event: React.MouseEvent): void => {\n event.stopPropagation();\n\n if (event.shiftKey) {\n const [fromIndex, toIndex] = toggleBetween(lastSelectedRowIndex?.current || 0, row.index);\n\n table\n .getRowModel()\n .rows.slice(fromIndex, toIndex + 1)\n .forEach(row => row.toggleSelected(true));\n } else {\n row.toggleSelected();\n }\n\n lastSelectedRowIndex.current = row.index;\n meta.setActiveRowIndex(row.index);\n tableRef.current?.focus();\n };\n\n return (\n <Tooltip\n title={\n <>\n {table.getIsAllPageRowsSelected() ? 'Deselect' : 'Select'}\n <Shortcut className=\"ml-2\" keys={['Space']} />\n </>\n }>\n <Checkbox\n aria-label={row.getIsSelected() ? 'Deselect row' : 'Select row'}\n className=\"hover:border-blue !mt-[0.45rem]\"\n checked={row.getIsSelected()}\n onClick={handleClick}\n // this is necessary to remove console spam from eslint\n onChange={() => false}\n tabIndex={-1}\n />\n </Tooltip>\n );\n };\n } else {\n cell = ({ row, table }) => {\n const meta = table.options.meta as TableMeta<any>;\n const className =\n 'border-grey-300 focus:yt-focus flex h-5 w-5 mt-[0.45rem] flex-shrink-0 items-center justify-center self-start rounded-full border-2 bg-white hover:border-[5px] aria-checked:border-blue-500 aria-checked:bg-blue-500 hover:aria-checked:border-blue-300';\n\n const handleClick = (event: React.MouseEvent): void => {\n event.stopPropagation();\n row.toggleSelected();\n meta.setActiveRowIndex(row.index);\n tableRef.current?.focus();\n };\n\n return (\n <button\n className={className}\n aria-checked={row.getIsSelected()}\n onClick={handleClick}\n role=\"radio\"\n tabIndex={-1}\n type=\"button\">\n {row.getIsSelected() ? <span className=\"h-2.5 w-2.5 rounded-full bg-white\" /> : null}\n </button>\n );\n };\n }\n\n return {\n id: COLUMN_ID_FOR_SELECTION,\n header,\n cell,\n meta: {\n align: 'center',\n className: onRowDrag ? '!pl-0 !pr-3' : '!px-3',\n disableTruncation: true,\n headerClassName: onRowDrag ? '!pl-0 !pr-3' : '!px-3',\n },\n // sizing\n enableResizing: false,\n size: 46,\n };\n}\n\nexport function createRowExpansionColumn<TType = any>(): DisplayColumnDef<TType, any> {\n return {\n id: COLUMN_ID_FOR_EXPANSION,\n header: ({ table }) => (\n <Tooltip title={table.getIsSomeRowsExpanded() ? 'Collapse all' : 'Expand all'}>\n <IconButton\n title={table.getIsSomeRowsExpanded() ? 'Collapse all rows' : 'Expand all rows'}\n appearance=\"discrete\"\n className=\"-mb-2 -mt-1.5\"\n icon={table.getIsSomeRowsExpanded() ? 'chevron-down-double' : 'chevron-right-double'}\n onClick={event => {\n event.stopPropagation();\n table.toggleAllRowsExpanded(table.getIsSomeRowsExpanded() ? false : true);\n }}\n tabIndex={-1}\n />\n </Tooltip>\n ),\n cell: ({ row }: CellContext<TType, any>) => (\n <Tooltip\n title={\n <>\n {row.getIsExpanded() ? 'Collapse' : 'Expand'}\n <Shortcut className=\"ml-2\" keys={['Ctrl', row.getIsExpanded() ? '←' : '→']} />\n </>\n }>\n <IconButton\n title={row.getIsExpanded() ? 'Collapse row' : 'Expand row'}\n appearance=\"discrete\"\n icon={row.getIsExpanded() ? 'chevron-down' : 'chevron-right'}\n onClick={event => {\n event.stopPropagation();\n row.toggleExpanded();\n }}\n tabIndex={-1}\n />\n </Tooltip>\n ),\n meta: {\n align: 'center',\n className: 'items-center !p-0',\n disableTruncation: true,\n headerClassName: 'items-center hover:!bg-white !p-0',\n },\n // sizing\n enableResizing: false,\n size: 36,\n };\n}\n\nconst getActionPropertyValue = (property, row) => (typeof property === 'function' ? property(row) : property);\n\nfunction RowActionCell<TType = {}>({ row, actions, moreActions }) {\n const isVisible = (action: Table2RowActionProps<TType>) =>\n typeof action.visible !== 'undefined'\n ? typeof action.visible === 'function'\n ? action.visible(row.original)\n : action.visible\n : true;\n\n const visibleActions = actions.filter(isVisible);\n const visibleMoreActions = moreActions.filter(isVisible);\n\n const rowActionCellWidth = React.useMemo(() => {\n const totalButtons = visibleActions.length + (visibleMoreActions.length ? 1 : 0);\n // this is necessary because row actions is has this mount hover delay, which makes the\n // size calculation in the header get set before rendering - meaning the size doesn't include the buttons\n // when we cache icons this can go\n const paddingSize = 8;\n const buttonSize = 32;\n\n return paddingSize + totalButtons * buttonSize;\n }, [visibleActions.length, visibleMoreActions.length]);\n\n // Instead of relying on row.index to figure out whether the row is being hovered or is active. We should rely on a\n // CSS fix. The reason behind this is that row data or index is the initial data or index that is passed to the\n // table on the first render, the indexes of row changes when sorting or filtering is applied.\n\n // If the row is not the active row or the hovered row then actions are hidden.\n const actionClassName = 'group-hover/row:flex group-[[aria-current]]/row:flex hidden';\n\n return (\n <span className=\"-mb-2 -mt-1.5 flex justify-end text-right\" style={{ width: rowActionCellWidth }}>\n {visibleActions.map((action, i) => (\n <IconButton\n key={i}\n className={actionClassName}\n aria-label={getActionPropertyValue(action.ariaLabel, row.original)}\n appearance=\"discrete\"\n dialog={action.dialog ? action.dialog(row.original) : undefined}\n disabled={getActionPropertyValue(action.disabled, row.original)}\n icon={getActionPropertyValue(action.icon, row.original)}\n onClick={event => {\n event.stopPropagation();\n if (action.onClick) {\n action.onClick(row.original);\n }\n }}\n tooltip={getActionPropertyValue(action.text, row.original)}\n />\n ))}\n {visibleMoreActions.length ? (\n <IconButton\n className={actionClassName}\n aria-label=\"View other actions\"\n appearance=\"discrete\"\n icon=\"more\"\n onClick={event => {\n event.preventDefault();\n }}\n menu={menuProps => (\n <Menu {...menuProps}>\n <Menu.Content>\n {visibleMoreActions.map((action, i) => (\n <Menu.Item\n key={i}\n dialog={action.dialog ? action.dialog(row.original) : undefined}\n disabled={getActionPropertyValue(action.disabled, row.original)}\n icon={getActionPropertyValue(action.icon, row.original)}\n onClick={() => {\n if (action.onClick) {\n action.onClick(row.original);\n }\n }}>\n {getActionPropertyValue(action.text, row.original)}\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu>\n )}\n tooltip=\"Other actions...\"\n />\n ) : null}\n </span>\n );\n}\n\nexport function createRowActionsColumn<TType = any>(rowActions): DisplayColumnDef<TType, any> {\n const actions: Table2RowActionProps<TType>[] = rowActions.slice(0, 3);\n const moreActions: Table2RowActionProps<TType>[] = rowActions.slice(3);\n\n return {\n id: COLUMN_ID_FOR_ACTIONS,\n cell: ({ row }) => <RowActionCell<TType> row={row} actions={actions} moreActions={moreActions} />,\n meta: {\n align: 'right',\n className: (row: Row<any>) =>\n cn(\n 'items-center print:opacity-0 group-[[aria-current]]/row:sticky group-hover/row:sticky right-0 bg-transparent !px-1',\n {\n 'group-hover/row:!shadow-[-6px_0px_6px_theme(colors.grey.100)] group-[[aria-current]]/row:!shadow-[-6px_0px_6px_theme(colors.grey.100)]':\n !row.getIsSelected(),\n 'shadow-[-6px_0px_6px_theme(colors.blue.100)]': row.getIsSelected(),\n }\n ),\n disableTruncation: true,\n headerClassName: 'hover:!bg-white !px-1',\n },\n // sizing\n enableResizing: false,\n };\n}\n"],"names":["COLUMN_ID_FOR_DRAGGABLE","COLUMN_ID_FOR_SELECTION","COLUMN_ID_FOR_EXPANSION","COLUMN_ID_FOR_ACTIONS","isInternalColumn","id","MIN_COLUMN_SIZE","toggleBetween","fromRowIndex","toRowIndex","fromIndex","toIndex","createRowDraggableColumn","onRowDrag","cell","row","table","meta","options","GHOST_ELEMENT_ID","onDragStart","event","rows","getIsSelected","getSelectedRowModel","setDragging","reduce","dragging","rowBeingDragged","data","map","original","dataTransfer","setData","JSON","stringify","showPlaceholder","text","ghost","document","createElement","className","innerText","body","appendChild","setDragImage","setDataTransfer","onDragEnd","getElementById","remove","React","draggable","Icon","name","align","disableTruncation","headerClassName","enableResizing","size","createRowSelectionColumn","enableMultipleRowSelection","lastSelectedRowIndex","tableRef","header","Tooltip","title","getIsAllPageRowsSelected","Shortcut","keys","Checkbox","checked","indeterminate","getIsSomePageRowsSelected","onChange","toggleAllPageRowsSelected","onClick","current","focus","tabIndex","handleClick","stopPropagation","shiftKey","index","getRowModel","slice","forEach","toggleSelected","setActiveRowIndex","role","type","createRowExpansionColumn","getIsSomeRowsExpanded","IconButton","appearance","icon","toggleAllRowsExpanded","getIsExpanded","toggleExpanded","getActionPropertyValue","property","RowActionCell","actions","moreActions","isVisible","action","visible","visibleActions","filter","visibleMoreActions","rowActionCellWidth","useMemo","totalButtons","length","paddingSize","buttonSize","actionClassName","style","width","i","key","ariaLabel","dialog","undefined","disabled","tooltip","preventDefault","menu","menuProps","Menu","Content","Item","createRowActionsColumn","rowActions","cn"],"mappings":"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"}
|
@@ -0,0 +1,96 @@
|
|
1
|
+
import { isDate, isBefore, isAfter } from 'date-fns';
|
2
|
+
import { isWeakEqual as isWeakEqual$1 } from '../../../utils/date.js';
|
3
|
+
import { Table2FilterComparator } from '../types.js';
|
4
|
+
|
5
|
+
const toLowerCase = value => String(value !== null && value !== void 0 ? value : '').toLocaleLowerCase();
|
6
|
+
const isWeakContains = (left, right) => toLowerCase(left).includes(toLowerCase(right));
|
7
|
+
const isWeakEqual = (left, right) => toLowerCase(left) === toLowerCase(right);
|
8
|
+
const globalFilterFn = (value, query) => isWeakContains(value, query);
|
9
|
+
// the filter type is only settable on the column definition, which would re-render all columns
|
10
|
+
// so instead we store it in the filter value, but that means we also have to destructure that
|
11
|
+
// before we filter - that's why this custom filter function exists
|
12
|
+
const columnFilterFn = (value, filter) => {
|
13
|
+
try {
|
14
|
+
if (filter.value === undefined || filter.value === null || filter.value === '') {
|
15
|
+
return true;
|
16
|
+
}
|
17
|
+
switch (filter.comparator) {
|
18
|
+
case Table2FilterComparator.Contains:
|
19
|
+
return isWeakContains(value, filter.value);
|
20
|
+
case Table2FilterComparator.DoesNotContain:
|
21
|
+
return !isWeakContains(value, filter.value);
|
22
|
+
case Table2FilterComparator.IsEqualTo:
|
23
|
+
{
|
24
|
+
if (isDate(value)) {
|
25
|
+
return isDate(filter.value) && isWeakEqual$1(value, filter.value);
|
26
|
+
} else if (typeof filter.value === 'boolean') {
|
27
|
+
return value === filter.value;
|
28
|
+
}
|
29
|
+
return isWeakEqual(value, filter.value);
|
30
|
+
}
|
31
|
+
case Table2FilterComparator.IsNotEqualTo:
|
32
|
+
{
|
33
|
+
if (isDate(value)) {
|
34
|
+
return isDate(filter.value) && isWeakEqual$1(value, filter.value) === false;
|
35
|
+
} else if (typeof filter.value === 'boolean') {
|
36
|
+
return value !== filter.value;
|
37
|
+
}
|
38
|
+
return !isWeakEqual(value, filter.value);
|
39
|
+
}
|
40
|
+
case Table2FilterComparator.IsGreaterThan:
|
41
|
+
{
|
42
|
+
if (isDate(value)) {
|
43
|
+
return isDate(filter.value) && isAfter(value, filter.value);
|
44
|
+
} else {
|
45
|
+
const valueAsNumber = parseInt(value);
|
46
|
+
return !isNaN(valueAsNumber) && filter.value !== undefined && valueAsNumber > filter.value;
|
47
|
+
}
|
48
|
+
}
|
49
|
+
case Table2FilterComparator.IsLessThan:
|
50
|
+
{
|
51
|
+
if (isDate(value)) {
|
52
|
+
return isDate(filter.value) && isBefore(value, filter.value);
|
53
|
+
} else {
|
54
|
+
const valueAsNumber = parseInt(value);
|
55
|
+
return !isNaN(valueAsNumber) && filter.value !== undefined && valueAsNumber < filter.value;
|
56
|
+
}
|
57
|
+
}
|
58
|
+
case Table2FilterComparator.IsBetween:
|
59
|
+
{
|
60
|
+
const [fromValue, toValue] = filter.value;
|
61
|
+
if (isDate(value)) {
|
62
|
+
if (isDate(fromValue) && isBefore(value, fromValue)) {
|
63
|
+
return false;
|
64
|
+
} else if (isDate(toValue) && isAfter(value, toValue)) {
|
65
|
+
return false;
|
66
|
+
}
|
67
|
+
return true;
|
68
|
+
} else {
|
69
|
+
const valueAsNumber = parseInt(value);
|
70
|
+
if (isNaN(valueAsNumber)) {
|
71
|
+
return false;
|
72
|
+
}
|
73
|
+
if (fromValue !== undefined && valueAsNumber < fromValue) {
|
74
|
+
return false;
|
75
|
+
} else if (toValue !== undefined && valueAsNumber > toValue) {
|
76
|
+
return false;
|
77
|
+
}
|
78
|
+
return true;
|
79
|
+
}
|
80
|
+
}
|
81
|
+
case Table2FilterComparator.IsOneOf:
|
82
|
+
return Array.isArray(filter.value) ? filter.value.includes(value) : false;
|
83
|
+
case Table2FilterComparator.IsNoneOf:
|
84
|
+
return Array.isArray(filter.value) ? filter.value.includes(value) === false : false;
|
85
|
+
case Table2FilterComparator.IsAllOf:
|
86
|
+
return Array.isArray(filter.value) && Array.isArray(value) ? filter.value.filter(v => value.includes(v)).length === filter.value.length : false;
|
87
|
+
}
|
88
|
+
return false;
|
89
|
+
} catch (e) {
|
90
|
+
console.error(e);
|
91
|
+
return true;
|
92
|
+
}
|
93
|
+
};
|
94
|
+
|
95
|
+
export { columnFilterFn, globalFilterFn };
|
96
|
+
//# sourceMappingURL=filterFn.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"filterFn.js","sources":["../../../../../../../../src/components/Table2/utilities/filterFn.ts"],"sourcesContent":["import { isDate, isAfter as isAfterDate, isBefore as isBeforeDate } from 'date-fns';\nimport { Table2Filter, Table2FilterComparator } from '../types';\nimport { isWeakEqual as isWeakEqualDate } from '../../../utils/date';\n\nconst toLowerCase = (value: string | number) => String(value ?? '').toLocaleLowerCase();\nconst isWeakContains = (left: string | number, right: string | number) => toLowerCase(left).includes(toLowerCase(right));\nconst isWeakEqual = (left: string | number, right: string | number) => toLowerCase(left) === toLowerCase(right);\n\nexport const globalFilterFn = (value: string, query: string) => isWeakContains(value, query);\n\n// the filter type is only settable on the column definition, which would re-render all columns\n// so instead we store it in the filter value, but that means we also have to destructure that\n// before we filter - that's why this custom filter function exists\nexport const columnFilterFn = (value: any, filter: Table2Filter) => {\n try {\n if (filter.value === undefined || filter.value === null || filter.value === '') {\n return true;\n }\n\n switch (filter.comparator) {\n case Table2FilterComparator.Contains:\n return isWeakContains(value, filter.value);\n\n case Table2FilterComparator.DoesNotContain:\n return !isWeakContains(value, filter.value);\n\n case Table2FilterComparator.IsEqualTo: {\n if (isDate(value)) {\n return isDate(filter.value) && isWeakEqualDate(value, filter.value);\n } else if (typeof filter.value === 'boolean') {\n return value === filter.value;\n }\n\n return isWeakEqual(value, filter.value);\n }\n\n case Table2FilterComparator.IsNotEqualTo: {\n if (isDate(value)) {\n return isDate(filter.value) && isWeakEqualDate(value, filter.value) === false;\n } else if (typeof filter.value === 'boolean') {\n return value !== filter.value;\n }\n\n return !isWeakEqual(value, filter.value);\n }\n\n case Table2FilterComparator.IsGreaterThan: {\n if (isDate(value)) {\n return isDate(filter.value) && isAfterDate(value, filter.value);\n } else {\n const valueAsNumber = parseInt(value);\n return !isNaN(valueAsNumber) && filter.value !== undefined && valueAsNumber > filter.value;\n }\n }\n\n case Table2FilterComparator.IsLessThan: {\n if (isDate(value)) {\n return isDate(filter.value) && isBeforeDate(value, filter.value);\n } else {\n const valueAsNumber = parseInt(value);\n return !isNaN(valueAsNumber) && filter.value !== undefined && valueAsNumber < filter.value;\n }\n }\n\n case Table2FilterComparator.IsBetween: {\n const [fromValue, toValue] = filter.value;\n\n if (isDate(value)) {\n if (isDate(fromValue) && isBeforeDate(value, fromValue)) {\n return false;\n } else if (isDate(toValue) && isAfterDate(value, toValue)) {\n return false;\n }\n\n return true;\n } else {\n const valueAsNumber = parseInt(value);\n\n if (isNaN(valueAsNumber)) {\n return false;\n }\n\n if (fromValue !== undefined && valueAsNumber < fromValue) {\n return false;\n } else if (toValue !== undefined && valueAsNumber > toValue) {\n return false;\n }\n\n return true;\n }\n }\n\n case Table2FilterComparator.IsOneOf:\n return Array.isArray(filter.value) ? filter.value.includes(value) : false;\n\n case Table2FilterComparator.IsNoneOf:\n return Array.isArray(filter.value) ? filter.value.includes(value) === false : false;\n\n case Table2FilterComparator.IsAllOf:\n return Array.isArray(filter.value) && Array.isArray(value)\n ? filter.value.filter(v => value.includes(v)).length === filter.value.length\n : false;\n }\n\n return false;\n } catch (e) {\n console.error(e);\n return true;\n }\n};\n"],"names":["toLowerCase","value","String","toLocaleLowerCase","isWeakContains","left","right","includes","isWeakEqual","globalFilterFn","query","columnFilterFn","filter","undefined","comparator","Table2FilterComparator","Contains","DoesNotContain","IsEqualTo","isDate","isWeakEqualDate","IsNotEqualTo","IsGreaterThan","isAfterDate","valueAsNumber","parseInt","isNaN","IsLessThan","isBeforeDate","IsBetween","fromValue","toValue","IsOneOf","Array","isArray","IsNoneOf","IsAllOf","v","length","e","console","error"],"mappings":"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"}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import React__default from 'react';
|
2
|
+
import { getIndexOfFirstChildOverflowingParent } from '../utils/dom.js';
|
3
|
+
|
4
|
+
const useBoundaryOverflowDetection = (ref, dependencies = []) => {
|
5
|
+
const [boundaryIndex, setBoundaryIndex] = React__default.useState();
|
6
|
+
React__default.useEffect(() => {
|
7
|
+
if (ref.current) {
|
8
|
+
const boundaryChildIndex = getIndexOfFirstChildOverflowingParent(ref.current);
|
9
|
+
setBoundaryIndex(boundaryChildIndex);
|
10
|
+
}
|
11
|
+
}, [ref, ...dependencies]);
|
12
|
+
return boundaryIndex;
|
13
|
+
};
|
14
|
+
|
15
|
+
export { useBoundaryOverflowDetection };
|
16
|
+
//# sourceMappingURL=useBoundaryOverflowDetection.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useBoundaryOverflowDetection.js","sources":["../../../../../../src/hooks/useBoundaryOverflowDetection.ts"],"sourcesContent":["import React from 'react';\nimport { getIndexOfFirstChildOverflowingParent } from '../utils/dom';\n\nexport const useBoundaryOverflowDetection = (\n ref: React.RefObject<HTMLElement>,\n dependencies: any[] = []\n): number | null | undefined => {\n const [boundaryIndex, setBoundaryIndex] = React.useState<number | null>();\n\n React.useEffect(() => {\n if (ref.current) {\n const boundaryChildIndex = getIndexOfFirstChildOverflowingParent(ref.current);\n setBoundaryIndex(boundaryChildIndex);\n }\n }, [ref, ...dependencies]);\n\n return boundaryIndex;\n};\n"],"names":["useBoundaryOverflowDetection","ref","dependencies","boundaryIndex","setBoundaryIndex","React","useState","useEffect","current","boundaryChildIndex","getIndexOfFirstChildOverflowingParent"],"mappings":";;;MAGaA,4BAA4B,GAAG,CACxCC,GAAiC,EACjCC,eAAsB,EAAE;EAExB,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAGC,cAAK,CAACC,QAAQ,EAAiB;EAEzED,cAAK,CAACE,SAAS,CAAC;IACZ,IAAIN,GAAG,CAACO,OAAO,EAAE;MACb,MAAMC,kBAAkB,GAAGC,qCAAqC,CAACT,GAAG,CAACO,OAAO,CAAC;MAC7EJ,gBAAgB,CAACK,kBAAkB,CAAC;;GAE3C,EAAE,CAACR,GAAG,EAAE,GAAGC,YAAY,CAAC,CAAC;EAE1B,OAAOC,aAAa;AACxB;;;;"}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import React__default from 'react';
|
2
|
+
|
3
|
+
const useGlobalKeyboardShortcut = handler => {
|
4
|
+
React__default.useEffect(() => {
|
5
|
+
document.addEventListener('keydown', handler);
|
6
|
+
return () => {
|
7
|
+
document.removeEventListener('keydown', handler);
|
8
|
+
};
|
9
|
+
}, [handler]);
|
10
|
+
};
|
11
|
+
|
12
|
+
export { useGlobalKeyboardShortcut };
|
13
|
+
//# sourceMappingURL=useGlobalKeyboardShortcut.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useGlobalKeyboardShortcut.js","sources":["../../../../../../src/hooks/useGlobalKeyboardShortcut.ts"],"sourcesContent":["import React from 'react';\n\nexport const useGlobalKeyboardShortcut = (handler: (event: KeyboardEvent) => void) => {\n React.useEffect(() => {\n document.addEventListener('keydown', handler);\n\n return () => {\n document.removeEventListener('keydown', handler);\n };\n }, [handler]);\n};\n"],"names":["useGlobalKeyboardShortcut","handler","React","useEffect","document","addEventListener","removeEventListener"],"mappings":";;MAEaA,yBAAyB,GAAIC,OAAuC;EAC7EC,cAAK,CAACC,SAAS,CAAC;IACZC,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAEJ,OAAO,CAAC;IAE7C,OAAO;MACHG,QAAQ,CAACE,mBAAmB,CAAC,SAAS,EAAEL,OAAO,CAAC;KACnD;GACJ,EAAE,CAACA,OAAO,CAAC,CAAC;AACjB;;;;"}
|
@@ -21,7 +21,7 @@ export { getNextIndexFromKey, useListKeyboardNavigation } from './utils/hooks/us
|
|
21
21
|
export { useListScrollTo } from './utils/hooks/useListScrollTo.js';
|
22
22
|
export { Spinner } from './components/Spinner/Spinner.js';
|
23
23
|
export { Combobox } from './components/Combobox/Combobox.js';
|
24
|
-
export { format, parseFromCustomString, parseFromISOString } from './utils/date.js';
|
24
|
+
export { format, isWeakEqual, parseFromCustomString, parseFromISOString } from './utils/date.js';
|
25
25
|
export { Popover } from './components/Popover/Popover.js';
|
26
26
|
export { Datepicker } from './components/Datepicker/Datepicker.js';
|
27
27
|
export { Dialog } from './components/Dialog/Dialog.js';
|
@@ -45,14 +45,16 @@ export { ToastProvider, useToast } from './components/Toast/Toaster.js';
|
|
45
45
|
export { Provider } from './components/Provider/Provider.js';
|
46
46
|
export { TAG_COLORS, Tag } from './components/Tag/Tag.js';
|
47
47
|
export { Select2 } from './components/Select2/Select2.js';
|
48
|
+
export { Shortcut } from './components/Shortcut/Shortcut.js';
|
48
49
|
export { Table } from './components/Table/components/Table.js';
|
49
50
|
export { PaginatedTable } from './components/Table/components/PaginatedTable.js';
|
50
51
|
export { WindowedTable } from './components/Table/components/WindowedTable.js';
|
51
52
|
export { convertRowIndexPathToNumberArray, getByRowIndexPath, getParentRowIndexPath, setByRowIndexPath } from './components/Table/util/rowIndexPath.js';
|
52
53
|
export { insertChildTableRow, removeChildTableRow, useTableRowCreation } from './components/Table/hooks/useRowCreation.js';
|
54
|
+
export { Switch } from './components/Switch/Switch.js';
|
55
|
+
export { Table2 } from './components/Table2/Table2.js';
|
53
56
|
export { Tabs } from './components/Tabs/Tabs.js';
|
54
57
|
export { Textarea } from './components/Textarea/Textarea.js';
|
55
|
-
export { Switch } from './components/Switch/Switch.js';
|
56
58
|
export { Tour, TourStep } from './components/Tour/Tour.js';
|
57
59
|
export { useOnClickOutside } from './utils/hooks/useOnClickOutside.js';
|
58
60
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
@@ -0,0 +1,59 @@
|
|
1
|
+
import React__default from 'react';
|
2
|
+
import { DndContext, closestCenter } from '@dnd-kit/core';
|
3
|
+
|
4
|
+
function getContainerById(children, id) {
|
5
|
+
var _lists$find;
|
6
|
+
const lists = React__default.Children.toArray(children).filter(child => child.type.displayName === 'SortableList');
|
7
|
+
const list = lists.find(list => list.props.id === id);
|
8
|
+
if (list) {
|
9
|
+
return list === null || list === void 0 ? void 0 : list.props;
|
10
|
+
}
|
11
|
+
return (_lists$find = lists.find(l => React__default.Children.toArray(l.props.children).findIndex(child => child.props.id === id) > -1)) === null || _lists$find === void 0 ? void 0 : _lists$find.props;
|
12
|
+
}
|
13
|
+
function Container(externalProps) {
|
14
|
+
const {
|
15
|
+
children,
|
16
|
+
reorder,
|
17
|
+
move
|
18
|
+
} = externalProps;
|
19
|
+
function handleDragOver(event) {
|
20
|
+
const {
|
21
|
+
active,
|
22
|
+
over
|
23
|
+
} = event;
|
24
|
+
if (!(active !== null && active !== void 0 && active.id) || !(over !== null && over !== void 0 && over.id)) {
|
25
|
+
return;
|
26
|
+
}
|
27
|
+
const activeList = getContainerById(children, active.id);
|
28
|
+
const overList = getContainerById(children, over.id);
|
29
|
+
if (!(activeList !== null && activeList !== void 0 && activeList.id) || !(overList !== null && overList !== void 0 && overList.id) || activeList.id === overList.id) {
|
30
|
+
return;
|
31
|
+
}
|
32
|
+
move(active.id, activeList === null || activeList === void 0 ? void 0 : activeList.id, overList.id);
|
33
|
+
}
|
34
|
+
function handleDragEnd(event) {
|
35
|
+
const {
|
36
|
+
active,
|
37
|
+
over
|
38
|
+
} = event;
|
39
|
+
if (!(active !== null && active !== void 0 && active.id) || !(over !== null && over !== void 0 && over.id)) {
|
40
|
+
return;
|
41
|
+
}
|
42
|
+
const activeList = getContainerById(children, active.id);
|
43
|
+
const overList = getContainerById(children, over.id);
|
44
|
+
if (!(activeList !== null && activeList !== void 0 && activeList.id) || !(overList !== null && overList !== void 0 && overList.id) || activeList.id !== overList.id) {
|
45
|
+
return;
|
46
|
+
}
|
47
|
+
reorder(active.id, over.id, overList.id);
|
48
|
+
}
|
49
|
+
return /*#__PURE__*/React__default.createElement(DndContext, Object.assign({
|
50
|
+
collisionDetection: closestCenter
|
51
|
+
}, externalProps, {
|
52
|
+
onDragOver: handleDragOver,
|
53
|
+
onDragEnd: handleDragEnd
|
54
|
+
}), children);
|
55
|
+
}
|
56
|
+
Container.displayName = 'SortableContainer';
|
57
|
+
|
58
|
+
export { Container };
|
59
|
+
//# sourceMappingURL=Container.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Container.js","sources":["../../../../../../../../src/primitives/Sortable/components/Container.tsx"],"sourcesContent":["import React, { ReactNode } from 'react';\nimport { DndContext, closestCenter } from '@dnd-kit/core';\nimport { SortableListProps } from './List';\nimport { SortableItemId } from './Item';\n\nexport type SortableContainerProps = {\n children: ReactNode;\n move?: (activeId: SortableItemId, overId: SortableItemId, listId: string) => void;\n reorder: (activeId: SortableItemId, oldListId: string, listId: string) => void;\n};\n\nfunction getContainerById(children, id): SortableListProps | undefined {\n const lists = React.Children.toArray(children).filter(\n (child: any) => child.type.displayName === 'SortableList'\n ) as React.ReactElement<SortableListProps>[];\n const list: React.ReactElement<SortableListProps> | undefined = lists.find(\n (list: React.ReactElement<SortableListProps>) => list.props.id === id\n );\n\n if (list) {\n return list?.props;\n }\n\n return lists.find(l => React.Children.toArray(l.props.children).findIndex((child: any) => child.props.id === id) > -1)?.props;\n}\n\nexport function Container(externalProps) {\n const { children, reorder, move } = externalProps;\n\n function handleDragOver(event): void {\n const { active, over } = event;\n\n if (!active?.id || !over?.id) {\n return;\n }\n\n const activeList = getContainerById(children, active.id);\n const overList = getContainerById(children, over.id);\n\n if (!activeList?.id || !overList?.id || activeList.id === overList.id) {\n return;\n }\n\n move(active.id, activeList?.id, overList.id);\n }\n\n function handleDragEnd(event): void {\n const { active, over } = event;\n\n if (!active?.id || !over?.id) {\n return;\n }\n\n const activeList = getContainerById(children, active.id);\n const overList = getContainerById(children, over.id);\n\n if (!activeList?.id || !overList?.id || activeList.id !== overList.id) {\n return;\n }\n\n reorder(active.id, over.id, overList.id);\n }\n\n return (\n <DndContext collisionDetection={closestCenter} {...externalProps} onDragOver={handleDragOver} onDragEnd={handleDragEnd}>\n {children}\n </DndContext>\n );\n}\nContainer.displayName = 'SortableContainer';\n"],"names":["getContainerById","children","id","lists","React","Children","toArray","filter","child","type","displayName","list","find","props","l","findIndex","Container","externalProps","reorder","move","handleDragOver","event","active","over","activeList","overList","handleDragEnd","DndContext","collisionDetection","closestCenter","onDragOver","onDragEnd"],"mappings":"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"}
|