@economic/taco 1.28.1 → 1.29.0
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/components/Icon/components/ColumnFreeze.d.ts +3 -0
- package/dist/components/Icon/components/ColumnUnfreeze.d.ts +3 -0
- package/dist/components/Icon/components/index.d.ts +1 -1
- package/dist/components/Input/Input.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/Navigation2/components/Link.d.ts +1 -1
- package/dist/components/Provider/Localization.d.ts +12 -4
- package/dist/components/Select2/components/Option.d.ts +1 -1
- package/dist/components/Select2/components/Search.d.ts +1 -1
- package/dist/components/Table2/Table2.d.ts +11 -4
- package/dist/components/Table2/components/row/ExpandedRow.d.ts +1 -1
- package/dist/components/Table2/hooks/useColumnDefinitions.d.ts +2 -2
- package/dist/components/Table2/hooks/useTable.d.ts +4 -0
- package/dist/components/Table2/types.d.ts +3 -4
- package/dist/components/Table2/utilities/cell.d.ts +1 -1
- package/dist/components/Table2/utilities/columns.d.ts +1 -0
- package/dist/components/Tag/Tag.d.ts +1 -1
- package/dist/components/Truncate/Truncate.d.ts +6 -0
- package/dist/esm/packages/taco/src/components/Icon/components/ColumnFreeze.js +19 -0
- package/dist/esm/packages/taco/src/components/Icon/components/ColumnFreeze.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Icon/components/ColumnUnfreeze.js +19 -0
- package/dist/esm/packages/taco/src/components/Icon/components/ColumnUnfreeze.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Icon/components/index.js +4 -0
- package/dist/esm/packages/taco/src/components/Icon/components/index.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Input/Input.js +14 -14
- package/dist/esm/packages/taco/src/components/Input/Input.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Provider/Localization.js +13 -6
- package/dist/esm/packages/taco/src/components/Provider/Localization.js.map +1 -1
- package/dist/esm/packages/taco/src/components/SearchInput/SearchInput.js +1 -0
- package/dist/esm/packages/taco/src/components/SearchInput/SearchInput.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Select2/components/Collection.js +2 -1
- package/dist/esm/packages/taco/src/components/Select2/components/Collection.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/Table2.js +21 -9
- package/dist/esm/packages/taco/src/components/Table2/Table2.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/ColumnSettingsButton.js +243 -111
- package/dist/esm/packages/taco/src/components/Table2/components/ColumnSettingsButton.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/column/Base.js +5 -5
- package/dist/esm/packages/taco/src/components/Table2/components/column/Base.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/column/Cell.js +76 -31
- package/dist/esm/packages/taco/src/components/Table2/components/column/Cell.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/column/Footer.js +2 -2
- package/dist/esm/packages/taco/src/components/Table2/components/column/Footer.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/column/Header.js +85 -19
- package/dist/esm/packages/taco/src/components/Table2/components/column/Header.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/row/ExpandedRow.js +3 -0
- package/dist/esm/packages/taco/src/components/Table2/components/row/ExpandedRow.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useColumnOffsetStateListener.js +6 -3
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useColumnOffsetStateListener.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useSettingsStateListener.js +2 -2
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useSettingsStateListener.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js +6 -9
- package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js +14 -6
- package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/types.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/utilities/cell.js +8 -8
- package/dist/esm/packages/taco/src/components/Table2/utilities/cell.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js +17 -8
- package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Truncate/Truncate.js +32 -0
- package/dist/esm/packages/taco/src/components/Truncate/Truncate.js.map +1 -0
- package/dist/esm/packages/taco/src/index.js +1 -1
- package/dist/esm/packages/taco/src/primitives/Listbox2/components/Option.js +3 -1
- package/dist/esm/packages/taco/src/primitives/Listbox2/components/Option.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Listbox2/components/Root.js +3 -1
- package/dist/esm/packages/taco/src/primitives/Listbox2/components/Root.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Sortable/components/Item.js +5 -1
- package/dist/esm/packages/taco/src/primitives/Sortable/components/Item.js.map +1 -1
- package/dist/taco.cjs.development.js +576 -229
- 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/package.json +2 -2
- package/types.json +63 -19
@@ -1,7 +1,7 @@
|
|
1
1
|
import React__default from 'react';
|
2
2
|
import { Icon } from '../../Icon/Icon.js';
|
3
|
-
import { IconButton } from '../../IconButton/IconButton.js';
|
4
3
|
import { useLocalization } from '../../Provider/Localization.js';
|
4
|
+
import { Button } from '../../Button/Button.js';
|
5
5
|
import { Checkbox } from '../../Checkbox/Checkbox.js';
|
6
6
|
import { Input } from '../../Input/Input.js';
|
7
7
|
import { Popover } from '../../Popover/Popover.js';
|
@@ -10,51 +10,57 @@ import { Container } from '../../../primitives/Sortable/components/Container.js'
|
|
10
10
|
import '@dnd-kit/sortable';
|
11
11
|
import { Item } from '../../../primitives/Sortable/components/Item.js';
|
12
12
|
import { List } from '../../../primitives/Sortable/components/List.js';
|
13
|
+
import { Truncate } from '../../Truncate/Truncate.js';
|
13
14
|
|
14
15
|
const OrderableColumn = /*#__PURE__*/React__default.forwardRef((props, ref) => {
|
15
|
-
var _column$columnDef$hea;
|
16
|
+
var _ref, _column$columnDef$hea, _column$columnDef$hea2;
|
16
17
|
const {
|
17
18
|
canBeReordered,
|
18
19
|
column,
|
19
|
-
|
20
|
+
children,
|
21
|
+
isColumnFixed,
|
20
22
|
...attributes
|
21
23
|
} = props;
|
22
24
|
let icon;
|
23
25
|
if (canBeReordered) {
|
24
26
|
icon = /*#__PURE__*/React__default.createElement(Icon, {
|
25
27
|
name: "drag",
|
26
|
-
|
28
|
+
/** top margin of -3px on Icon, is added to make sure that each OrderableColumn is of 32px height **/
|
29
|
+
className: "text-grey-500 hover:text-grey-700 mr-0.5 -ml-[6px] -mt-[3px] inline-block !h-5 !w-5 cursor-move"
|
27
30
|
});
|
28
|
-
} else if (
|
31
|
+
} else if (isColumnFixed) {
|
29
32
|
icon = /*#__PURE__*/React__default.createElement("span", {
|
30
33
|
className: "mr-0.5 inline-flex w-4"
|
31
34
|
});
|
32
35
|
}
|
36
|
+
// columnName should be a string
|
37
|
+
const columnName = (_ref = (_column$columnDef$hea = (_column$columnDef$hea2 = column.columnDef.header) === null || _column$columnDef$hea2 === void 0 ? void 0 : _column$columnDef$hea2.toString()) !== null && _column$columnDef$hea !== void 0 ? _column$columnDef$hea : column.columnDef.id) !== null && _ref !== void 0 ? _ref : '';
|
33
38
|
return /*#__PURE__*/React__default.createElement("div", Object.assign({}, attributes, {
|
34
|
-
className: "hover:bg-grey-100 aria-pressed:bg-grey-200 flex w-full items-center justify-between gap-x-2 rounded py-
|
39
|
+
className: "hover:bg-grey-100 aria-pressed:bg-grey-200 flex w-full items-center justify-between gap-x-2 rounded py-[6px] px-2 aria-pressed:z-10",
|
35
40
|
ref: ref
|
36
|
-
}), /*#__PURE__*/React__default.createElement(
|
37
|
-
|
38
|
-
},
|
39
|
-
|
40
|
-
|
41
|
-
}) : null);
|
41
|
+
}), /*#__PURE__*/React__default.createElement(Truncate, {
|
42
|
+
tooltip: columnName
|
43
|
+
}, /*#__PURE__*/React__default.createElement("span", {
|
44
|
+
className: "select-none"
|
45
|
+
}, icon, columnName)), children);
|
42
46
|
});
|
43
47
|
const isOrderingAllowed = (table, column) => {
|
44
48
|
var _column$columnDef$met;
|
45
49
|
const meta = table.options.meta;
|
46
|
-
if (table.options.enablePinning) {
|
47
|
-
return true;
|
48
|
-
}
|
49
50
|
return meta.enableColumnReordering ? !((_column$columnDef$met = column.columnDef.meta) !== null && _column$columnDef$met !== void 0 && _column$columnDef$met.disableReordering) : false;
|
50
51
|
};
|
52
|
+
const isColumnOrderingDisabled = (table, column) => {
|
53
|
+
var _column$columnDef$met2;
|
54
|
+
const meta = table.options.meta;
|
55
|
+
return meta.enableColumnReordering && !!((_column$columnDef$met2 = column.columnDef.meta) !== null && _column$columnDef$met2 !== void 0 && _column$columnDef$met2.disableReordering);
|
56
|
+
};
|
51
57
|
const SortableColumnContainer = ({
|
52
58
|
state,
|
53
59
|
moveColumn,
|
54
60
|
reorderColumn,
|
55
|
-
table
|
61
|
+
table,
|
62
|
+
query
|
56
63
|
}) => {
|
57
|
-
var _ref;
|
58
64
|
const {
|
59
65
|
texts
|
60
66
|
} = useLocalization();
|
@@ -63,7 +69,7 @@ const SortableColumnContainer = ({
|
|
63
69
|
const draggedColumn = state[listId].find(c => c.id === activeId);
|
64
70
|
const targetColumn = state[listId].find(c => c.id === overId);
|
65
71
|
if (draggedColumn && targetColumn) {
|
66
|
-
reorderColumn(draggedColumn.id, targetColumn.id, listId === '
|
72
|
+
reorderColumn(draggedColumn.id, targetColumn.id, listId === 'visible');
|
67
73
|
}
|
68
74
|
};
|
69
75
|
const move = (activeId, oldListId) => {
|
@@ -72,80 +78,114 @@ const SortableColumnContainer = ({
|
|
72
78
|
moveColumn(column);
|
73
79
|
}
|
74
80
|
};
|
75
|
-
const
|
76
|
-
|
77
|
-
|
78
|
-
}
|
79
|
-
const
|
80
|
-
|
81
|
+
const handleColumnCheckboxChange = column => () => {
|
82
|
+
moveColumn === null || moveColumn === void 0 ? void 0 : moveColumn(column);
|
83
|
+
column.toggleVisibility();
|
84
|
+
};
|
85
|
+
const isColumnHidingAllowed = meta.enableColumnHiding;
|
86
|
+
const isQueryFilterNotApplied = query === '';
|
87
|
+
const filteredHiddenColumns = state.hidden.filter(column => {
|
88
|
+
var _column$columnDef$hea3;
|
89
|
+
return (_column$columnDef$hea3 = column.columnDef.header) === null || _column$columnDef$hea3 === void 0 ? void 0 : _column$columnDef$hea3.toString().toLowerCase().includes(query.toLowerCase());
|
90
|
+
});
|
91
|
+
const filteredVisibleColumns = state.visible.filter(column => {
|
92
|
+
var _column$columnDef$hea4;
|
93
|
+
return (_column$columnDef$hea4 = column.columnDef.header) === null || _column$columnDef$hea4 === void 0 ? void 0 : _column$columnDef$hea4.toString().toLowerCase().includes(query.toLowerCase());
|
94
|
+
});
|
95
|
+
const visibleListDescriptionText = isQueryFilterNotApplied ? texts.table2.columnSettings.columnsVisibleDrop : texts.table2.columnSettings.noVisibleColumns;
|
96
|
+
const hiddenListDescriptionText = isQueryFilterNotApplied ? texts.table2.columnSettings.columnsHiddenDrop : texts.table2.columnSettings.noHiddenColumns;
|
97
|
+
if (isColumnHidingAllowed) {
|
81
98
|
return /*#__PURE__*/React__default.createElement(Container, {
|
82
99
|
reorder: reorder,
|
83
100
|
move: move
|
84
|
-
}, /*#__PURE__*/React__default.createElement(
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
101
|
+
}, /*#__PURE__*/React__default.createElement(Truncate, {
|
102
|
+
tooltip: texts.table2.columnSettings.columnsVisible
|
103
|
+
}, /*#__PURE__*/React__default.createElement("h5", {
|
104
|
+
className: "mx-4 my-[6px]"
|
105
|
+
}, texts.table2.columnSettings.columnsVisible)), /*#__PURE__*/React__default.createElement(List, {
|
106
|
+
id: "visible",
|
107
|
+
className: "flex min-h-[theme(spacing.8)] flex-col overflow-hidden px-2"
|
108
|
+
}, filteredVisibleColumns.length ? filteredVisibleColumns.map(column => {
|
109
|
+
// When searching a column, we disable reordering and make it fixed
|
110
|
+
const canBeReordered = isOrderingAllowed(table, column) && isQueryFilterNotApplied;
|
111
|
+
const isColumnFixed = isColumnOrderingDisabled(table, column) && isQueryFilterNotApplied;
|
90
112
|
return /*#__PURE__*/React__default.createElement(Item, {
|
91
113
|
key: column.id,
|
92
|
-
disabled:
|
114
|
+
disabled: !canBeReordered,
|
93
115
|
id: column.id,
|
94
116
|
asChild: true
|
95
117
|
}, /*#__PURE__*/React__default.createElement(OrderableColumn, {
|
96
118
|
canBeReordered: canBeReordered,
|
97
119
|
column: column,
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
120
|
+
isColumnFixed: isColumnFixed
|
121
|
+
}, column.getCanHide() ? /*#__PURE__*/React__default.createElement(Checkbox, {
|
122
|
+
className: "!mt-0",
|
123
|
+
checked: column.getIsVisible(),
|
124
|
+
onChange: handleColumnCheckboxChange(column)
|
125
|
+
}) : null));
|
126
|
+
}) :
|
127
|
+
/*#__PURE__*/
|
128
|
+
// For some reason wrapping this paragraph with Truncate will throw error in scenarios where
|
129
|
+
// we conditionally hide or show the paragraph e.g. moving the last column to the hide list
|
130
|
+
React__default.createElement("p", {
|
131
|
+
className: "text-grey-500 mb-0 flex h-8 items-center truncate px-2"
|
132
|
+
}, visibleListDescriptionText)), /*#__PURE__*/React__default.createElement(Truncate, {
|
133
|
+
tooltip: texts.table2.columnSettings.columnsHidden
|
134
|
+
}, /*#__PURE__*/React__default.createElement("h5", {
|
135
|
+
className: "mx-4 my-[6px] truncate"
|
136
|
+
}, texts.table2.columnSettings.columnsHidden)), /*#__PURE__*/React__default.createElement(List, {
|
137
|
+
id: "hidden",
|
138
|
+
className: "flex min-h-[theme(spacing.8)] flex-col gap-y-px overflow-hidden px-2"
|
139
|
+
}, filteredHiddenColumns.length ? filteredHiddenColumns.map(column => {
|
140
|
+
// When searching a column, we disable reordering and make it fixed
|
141
|
+
const canBeReordered = isOrderingAllowed(table, column) && isQueryFilterNotApplied;
|
142
|
+
const isColumnFixed = isColumnOrderingDisabled(table, column) && isQueryFilterNotApplied;
|
143
|
+
return /*#__PURE__*/React__default.createElement(Item, {
|
144
|
+
key: column.id,
|
145
|
+
disabled: !canBeReordered,
|
146
|
+
id: column.id,
|
147
|
+
asChild: true
|
148
|
+
}, /*#__PURE__*/React__default.createElement(OrderableColumn, {
|
149
|
+
canBeReordered: canBeReordered,
|
150
|
+
column: column,
|
151
|
+
isColumnFixed: isColumnFixed
|
152
|
+
}, column.getCanHide() ? /*#__PURE__*/React__default.createElement(Checkbox, {
|
153
|
+
className: "!mt-0",
|
154
|
+
checked: column.getIsVisible(),
|
155
|
+
onChange: handleColumnCheckboxChange(column)
|
156
|
+
}) : null));
|
157
|
+
}) :
|
158
|
+
/*#__PURE__*/
|
159
|
+
// For some reason wrapping this paragraph with Truncate will throw error in scenarios where
|
160
|
+
// we conditionally hide or show the paragraph e.g. moving the last column to the visible list
|
161
|
+
React__default.createElement("p", {
|
162
|
+
className: "text-grey-500 mb-0 flex h-8 items-center truncate px-2"
|
163
|
+
}, hiddenListDescriptionText)));
|
102
164
|
}
|
103
165
|
return /*#__PURE__*/React__default.createElement(Container, {
|
104
166
|
reorder: reorder,
|
105
167
|
move: move
|
106
|
-
}, /*#__PURE__*/React__default.createElement(
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
disabled: (_column$columnDef$met3 = column.columnDef.meta) === null || _column$columnDef$met3 === void 0 ? void 0 : _column$columnDef$met3.disableReordering,
|
117
|
-
id: column.id,
|
118
|
-
asChild: true
|
119
|
-
}, /*#__PURE__*/React__default.createElement(OrderableColumn, {
|
120
|
-
canBeReordered: canBeReordered,
|
121
|
-
column: column,
|
122
|
-
isReorderingAllowed: isReorderingAllowed,
|
123
|
-
onDoubleClick: handleDoubleClick(column.id, 'pinned')
|
124
|
-
}));
|
125
|
-
}) : /*#__PURE__*/React__default.createElement("p", {
|
126
|
-
className: "text-grey-500 mb-0 flex h-8 items-center px-2"
|
127
|
-
}, texts.table2.columnSettings.columnsPinnedDrop)), /*#__PURE__*/React__default.createElement("h5", {
|
128
|
-
className: "mx-4"
|
129
|
-
}, texts.table2.columnSettings.columnsOther), /*#__PURE__*/React__default.createElement(List, {
|
130
|
-
id: "other",
|
131
|
-
className: "flex min-h-[theme(spacing.8)] flex-col gap-y-px overflow-x-hidden px-2"
|
132
|
-
}, state.other.length ? state.other.map(column => {
|
133
|
-
var _column$columnDef$met4;
|
134
|
-
const canBeReordered = isOrderingAllowed(table, column);
|
168
|
+
}, /*#__PURE__*/React__default.createElement(List, {
|
169
|
+
id: "visible",
|
170
|
+
className: "flex min-h-[theme(spacing.8)] flex-col gap-y-px overflow-hidden px-2"
|
171
|
+
}, state.visible.length ? state.visible.filter(column => {
|
172
|
+
var _column$columnDef$hea5;
|
173
|
+
return (_column$columnDef$hea5 = column.columnDef.header) === null || _column$columnDef$hea5 === void 0 ? void 0 : _column$columnDef$hea5.toString().toLowerCase().includes(query.toLowerCase());
|
174
|
+
}).map(column => {
|
175
|
+
// When searching a column, we disable reordering and make it fixed
|
176
|
+
const canBeReordered = isOrderingAllowed(table, column) && isQueryFilterNotApplied;
|
177
|
+
const isColumnFixed = isColumnOrderingDisabled(table, column) && isQueryFilterNotApplied;
|
135
178
|
return /*#__PURE__*/React__default.createElement(Item, {
|
136
179
|
key: column.id,
|
137
|
-
disabled:
|
180
|
+
disabled: !canBeReordered,
|
138
181
|
id: column.id,
|
139
182
|
asChild: true
|
140
183
|
}, /*#__PURE__*/React__default.createElement(OrderableColumn, {
|
141
184
|
canBeReordered: canBeReordered,
|
142
185
|
column: column,
|
143
|
-
|
144
|
-
onDoubleClick: handleDoubleClick(column.id, 'other')
|
186
|
+
isColumnFixed: isColumnFixed
|
145
187
|
}));
|
146
|
-
}) :
|
147
|
-
className: "text-grey-500 mb-0 flex h-8 items-center px-2"
|
148
|
-
}, texts.table2.columnSettings.columnsOtherDrop)));
|
188
|
+
}) : null));
|
149
189
|
};
|
150
190
|
const reorder = (draggedColumnId, targetColumnId, list = []) => {
|
151
191
|
const nextColumnOrder = [...list];
|
@@ -161,38 +201,109 @@ const ColumnSettingsButton = ({
|
|
161
201
|
const [query, setQuery] = React__default.useState('');
|
162
202
|
const columns = table.getAllLeafColumns().filter(column => !isInternalColumn(column.id));
|
163
203
|
const [state, setState] = React__default.useState({
|
164
|
-
|
165
|
-
|
204
|
+
visible: columns.filter(column => column.getIsVisible()),
|
205
|
+
hidden: columns.filter(column => !column.getIsVisible())
|
166
206
|
});
|
167
|
-
const
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
207
|
+
const initialOrderedColumns = React__default.useRef(columns);
|
208
|
+
const moveColumnToList = column => {
|
209
|
+
// If column can't hide then don't toggle visiblity
|
210
|
+
if (column.getCanHide()) {
|
211
|
+
column.toggleVisibility();
|
212
|
+
}
|
213
|
+
if (state.visible.find(c => c.id === column.id)) {
|
214
|
+
setState(currentState => {
|
215
|
+
const filteredColumns = currentState.visible.filter(c => c.id !== column.id);
|
216
|
+
if (column.getCanHide()) {
|
217
|
+
const hiddenColumns = [column].concat(...currentState.hidden);
|
218
|
+
// Sort the hidden column so that they follow the initial order of fixed columns
|
219
|
+
const sortedFixedHiddenColumns = hiddenColumns.filter(hiddenColumn => {
|
220
|
+
var _hiddenColumn$columnD;
|
221
|
+
return !!((_hiddenColumn$columnD = hiddenColumn.columnDef.meta) !== null && _hiddenColumn$columnD !== void 0 && _hiddenColumn$columnD.disableReordering);
|
222
|
+
}).sort((colA, colB) => {
|
223
|
+
const indexA = initialOrderedColumns.current.indexOf(colA);
|
224
|
+
const indexB = initialOrderedColumns.current.indexOf(colB);
|
225
|
+
return indexA - indexB;
|
226
|
+
});
|
227
|
+
const reorderableHiddenColumns = hiddenColumns.filter(hiddenColumn => {
|
228
|
+
var _hiddenColumn$columnD2;
|
229
|
+
return !((_hiddenColumn$columnD2 = hiddenColumn.columnDef.meta) !== null && _hiddenColumn$columnD2 !== void 0 && _hiddenColumn$columnD2.disableReordering);
|
230
|
+
});
|
231
|
+
return {
|
232
|
+
visible: filteredColumns,
|
233
|
+
hidden: [...sortedFixedHiddenColumns, ...reorderableHiddenColumns]
|
234
|
+
};
|
235
|
+
}
|
236
|
+
// If column can't hide and it is dragged to hidden column list then move the column to the bottom of
|
237
|
+
// the visible column list
|
238
|
+
return {
|
239
|
+
visible: filteredColumns.concat(column),
|
240
|
+
hidden: currentState.hidden
|
241
|
+
};
|
242
|
+
});
|
173
243
|
} else {
|
174
|
-
setState(currentState =>
|
175
|
-
|
176
|
-
|
177
|
-
|
244
|
+
setState(currentState => {
|
245
|
+
let visibleColumns = [];
|
246
|
+
// If ordering is allowed then we don't care about the previous column order
|
247
|
+
if (isOrderingAllowed(table, column)) {
|
248
|
+
visibleColumns = currentState.visible.concat(column);
|
249
|
+
} else {
|
250
|
+
const orderedVisibleColumns = initialOrderedColumns.current.filter(orderedColumn => !state.hidden.find(c => c.id === orderedColumn.id) || orderedColumn.id === column.id).map(({
|
251
|
+
id
|
252
|
+
}) => id);
|
253
|
+
const movedColumnIndex = orderedVisibleColumns.indexOf(column.id);
|
254
|
+
// Index of the column that is moved to visible list
|
255
|
+
// Intial value for the index is the last item in visible list
|
256
|
+
let index = currentState.visible.length;
|
257
|
+
currentState.visible.find((col, colIndex) => {
|
258
|
+
const columnIndex = orderedVisibleColumns.indexOf(col.id);
|
259
|
+
// Index where the moved column should be shown in visible list
|
260
|
+
if (movedColumnIndex < columnIndex) {
|
261
|
+
index = colIndex;
|
262
|
+
return true;
|
263
|
+
}
|
264
|
+
return false;
|
265
|
+
});
|
266
|
+
visibleColumns = currentState.visible.slice(0, index).concat(column).concat(currentState.visible.slice(index));
|
267
|
+
}
|
268
|
+
return {
|
269
|
+
visible: visibleColumns,
|
270
|
+
hidden: currentState.hidden.filter(c => c.id !== column.id)
|
271
|
+
};
|
272
|
+
});
|
178
273
|
}
|
179
274
|
};
|
180
|
-
const
|
181
|
-
|
275
|
+
const reorderColumnInList = (draggedColumnId, targetColumnId, isVisible) => {
|
276
|
+
var _columns$find, _columns$find$columnD;
|
277
|
+
const isTargetColumnFixed = !!((_columns$find = columns.find(column => column.id === targetColumnId)) !== null && _columns$find !== void 0 && (_columns$find$columnD = _columns$find.columnDef.meta) !== null && _columns$find$columnD !== void 0 && _columns$find$columnD.disableReordering);
|
278
|
+
if (isVisible) {
|
279
|
+
let firstReorderableVisibleColumnId = targetColumnId;
|
280
|
+
if (isTargetColumnFixed) {
|
281
|
+
var _state$visible$find$i, _state$visible$find;
|
282
|
+
firstReorderableVisibleColumnId = (_state$visible$find$i = (_state$visible$find = state.visible.find(visibleColumn => {
|
283
|
+
var _visibleColumn$column;
|
284
|
+
return !((_visibleColumn$column = visibleColumn.columnDef.meta) !== null && _visibleColumn$column !== void 0 && _visibleColumn$column.disableReordering);
|
285
|
+
})) === null || _state$visible$find === void 0 ? void 0 : _state$visible$find.id) !== null && _state$visible$find$i !== void 0 ? _state$visible$find$i : targetColumnId;
|
286
|
+
}
|
182
287
|
setState(currentState => ({
|
183
288
|
...currentState,
|
184
|
-
|
289
|
+
visible: reorder(draggedColumnId, firstReorderableVisibleColumnId, currentState.visible)
|
185
290
|
}));
|
186
291
|
} else {
|
292
|
+
let firstReorderableHiddenColumnId = targetColumnId;
|
293
|
+
if (isTargetColumnFixed) {
|
294
|
+
var _state$hidden$find$id, _state$hidden$find;
|
295
|
+
firstReorderableHiddenColumnId = (_state$hidden$find$id = (_state$hidden$find = state.hidden.find(visibleColumn => {
|
296
|
+
var _visibleColumn$column2;
|
297
|
+
return !((_visibleColumn$column2 = visibleColumn.columnDef.meta) !== null && _visibleColumn$column2 !== void 0 && _visibleColumn$column2.disableReordering);
|
298
|
+
})) === null || _state$hidden$find === void 0 ? void 0 : _state$hidden$find.id) !== null && _state$hidden$find$id !== void 0 ? _state$hidden$find$id : targetColumnId;
|
299
|
+
}
|
187
300
|
setState(currentState => ({
|
188
301
|
...currentState,
|
189
|
-
|
302
|
+
hidden: reorder(draggedColumnId, firstReorderableHiddenColumnId, currentState.hidden)
|
190
303
|
}));
|
191
304
|
}
|
192
305
|
};
|
193
|
-
|
194
|
-
// a range of issues using the native apis directly
|
195
|
-
React__default.useEffect(() => {
|
306
|
+
const changeColumnOrder = newColumnOrder => {
|
196
307
|
const internals = [];
|
197
308
|
if (table.options.enableRowSelection) {
|
198
309
|
internals.push(COLUMN_ID_FOR_SELECTION);
|
@@ -200,14 +311,42 @@ const ColumnSettingsButton = ({
|
|
200
311
|
if (table.options.enableExpanding) {
|
201
312
|
internals.push(COLUMN_ID_FOR_EXPANSION);
|
202
313
|
}
|
203
|
-
table.
|
204
|
-
|
205
|
-
|
206
|
-
|
314
|
+
table.setColumnOrder(internals.concat(newColumnOrder.map(c => c.id)));
|
315
|
+
};
|
316
|
+
// probably a more elegant way to do this without local state but had
|
317
|
+
// a range of issues using the native apis directly
|
318
|
+
React__default.useEffect(() => {
|
319
|
+
changeColumnOrder([...state.visible, ...state.hidden]);
|
207
320
|
}, [state]);
|
208
|
-
|
321
|
+
// This effect moves up all fixed/unorderable columns before orderable columns.
|
322
|
+
// For custom column order, the fixed/unorderable columns will also move up before orderable columns.
|
323
|
+
// The order between all fixed/unorderable column items, and all orderable column items will be same as it was
|
324
|
+
// specified by the consumer.
|
325
|
+
React__default.useEffect(() => {
|
326
|
+
const orderableColumns = [];
|
327
|
+
const fixedColumns = [];
|
328
|
+
columns.forEach(column => {
|
329
|
+
var _column$columnDef$met3;
|
330
|
+
const isColumnFixed = !!((_column$columnDef$met3 = column.columnDef.meta) !== null && _column$columnDef$met3 !== void 0 && _column$columnDef$met3.disableReordering);
|
331
|
+
if (isColumnFixed) {
|
332
|
+
fixedColumns.push(column);
|
333
|
+
} else {
|
334
|
+
orderableColumns.push(column);
|
335
|
+
}
|
336
|
+
});
|
337
|
+
const newOrderedColumns = [...fixedColumns, ...orderableColumns];
|
338
|
+
// Changes order in the table
|
339
|
+
changeColumnOrder(newOrderedColumns);
|
340
|
+
// Changes order in the column settings button popover
|
341
|
+
setState({
|
342
|
+
visible: newOrderedColumns.filter(column => column.getIsVisible()),
|
343
|
+
hidden: newOrderedColumns.filter(column => !column.getIsVisible())
|
344
|
+
});
|
345
|
+
// update initial column order
|
346
|
+
initialOrderedColumns.current = newOrderedColumns;
|
347
|
+
}, []);
|
348
|
+
return /*#__PURE__*/React__default.createElement(Button, {
|
209
349
|
"aria-label": texts.table2.columnSettings.tooltip,
|
210
|
-
icon: "columns",
|
211
350
|
popover: popoverProps => /*#__PURE__*/React__default.createElement(Popover, Object.assign({}, popoverProps), /*#__PURE__*/React__default.createElement(Popover.Content, {
|
212
351
|
align: "end"
|
213
352
|
}, /*#__PURE__*/React__default.createElement("div", {
|
@@ -217,25 +356,18 @@ const ColumnSettingsButton = ({
|
|
217
356
|
placeholder: texts.table2.columnSettings.search,
|
218
357
|
value: query
|
219
358
|
}) : null, /*#__PURE__*/React__default.createElement("div", {
|
220
|
-
className: "-ml-4 -mb-2 max-h-64 w-[calc(100%_+_theme(spacing.
|
221
|
-
},
|
222
|
-
className: "flex min-h-[theme(spacing.8)] flex-col gap-y-px overflow-x-hidden px-2"
|
223
|
-
}, columns.filter(column => {
|
224
|
-
var _column$columnDef$hea2;
|
225
|
-
return (_column$columnDef$hea2 = column.columnDef.header) === null || _column$columnDef$hea2 === void 0 ? void 0 : _column$columnDef$hea2.toString().toLowerCase().includes(query.toLowerCase());
|
226
|
-
}).map(column => /*#__PURE__*/React__default.createElement(OrderableColumn, {
|
227
|
-
key: column.id,
|
228
|
-
canBeReordered: false,
|
229
|
-
column: column,
|
230
|
-
isReorderingAllowed: false
|
231
|
-
}))) : /*#__PURE__*/React__default.createElement(SortableColumnContainer, {
|
359
|
+
className: "-ml-[calc(theme(spacing.4)_-_2px)] -mb-2 max-h-64 w-[calc(100%_+_theme(spacing.7)_-_1px)] overflow-auto"
|
360
|
+
}, /*#__PURE__*/React__default.createElement(SortableColumnContainer, {
|
232
361
|
state: state,
|
233
|
-
moveColumn:
|
234
|
-
reorderColumn:
|
235
|
-
table: table
|
362
|
+
moveColumn: moveColumnToList,
|
363
|
+
reorderColumn: reorderColumnInList,
|
364
|
+
table: table,
|
365
|
+
query: query
|
236
366
|
}))))),
|
237
367
|
tooltip: texts.table2.columnSettings.tooltip
|
238
|
-
}
|
368
|
+
}, /*#__PURE__*/React__default.createElement(Icon, {
|
369
|
+
name: "columns"
|
370
|
+
}), texts.table2.columnSettings.button);
|
239
371
|
};
|
240
372
|
|
241
373
|
export { ColumnSettingsButton };
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ColumnSettingsButton.js","sources":["../../../../../../../../src/components/Table2/components/ColumnSettingsButton.tsx"],"sourcesContent":["import React from 'react';\nimport { Column as RTColumn, Table as RTTable, TableMeta } from '@tanstack/react-table';\nimport { Checkbox } from '../../Checkbox/Checkbox';\nimport { Icon } from '../../Icon/Icon';\nimport { Input } from '../../Input/Input';\nimport { IconButton } from '../../IconButton/IconButton';\nimport { Popover } from '../../Popover/Popover';\nimport * as Sortable from '../../../primitives/Sortable/Sortable';\nimport { COLUMN_ID_FOR_EXPANSION, COLUMN_ID_FOR_SELECTION, isInternalColumn } from '../utilities/columns';\nimport { SortableItemId } from '../../../primitives/Sortable/Sortable';\nimport { useLocalization } from '../../Provider/Localization';\n\ntype OrderableColumnProps = React.HTMLAttributes<HTMLDivElement> & {\n canBeReordered: boolean;\n column: RTColumn<any, any>;\n isReorderingAllowed: boolean;\n};\n\nconst OrderableColumn = React.forwardRef<HTMLDivElement, OrderableColumnProps>((props, ref) => {\n const { canBeReordered, column, isReorderingAllowed, ...attributes } = props;\n\n let icon;\n\n if (canBeReordered) {\n icon = <Icon name=\"drag\" className=\"text-grey-500 hover:text-grey-700 mr-0.5 -ml-2 -mt-px cursor-move\" />;\n } else if (isReorderingAllowed) {\n icon = <span className=\"mr-0.5 inline-flex w-4\" />;\n }\n\n return (\n <div\n {...attributes}\n className=\"hover:bg-grey-100 aria-pressed:bg-grey-200 flex w-full items-center justify-between gap-x-2 rounded py-1 px-2 aria-pressed:z-10\"\n ref={ref}>\n <span className=\"pointer-events-none\">\n {icon}\n {column.columnDef.header ?? column.columnDef.id}\n </span>\n {column.getCanHide() ? <Checkbox checked={column.getIsVisible()} onChange={column.toggleVisibility} /> : null}\n </div>\n );\n});\n\nconst isOrderingAllowed = (table, column) => {\n const meta = table.options.meta as TableMeta<any>;\n\n if (table.options.enablePinning) {\n return true;\n }\n\n return meta.enableColumnReordering ? !column.columnDef.meta?.disableReordering : false;\n};\n\ntype SortableColumnContainerProps = {\n state: PinnedState;\n moveColumn: (column: RTColumn<any, any>) => void;\n reorderColumn: (draggedColumnId: string, targetColumnId: string, pinned: boolean) => void;\n table: RTTable<any>;\n};\n\nconst SortableColumnContainer = ({ state, moveColumn, reorderColumn, table }: SortableColumnContainerProps) => {\n const { texts } = useLocalization();\n const meta = table.options.meta as TableMeta<any>;\n\n const reorder = (activeId: SortableItemId, overId: SortableItemId, listId: string) => {\n const draggedColumn: RTColumn<any, any> = state[listId].find(c => c.id === activeId);\n const targetColumn: RTColumn<any, any> = state[listId].find(c => c.id === overId);\n\n if (draggedColumn && targetColumn) {\n reorderColumn(draggedColumn.id, targetColumn.id, listId === 'pinned');\n }\n };\n\n const move = (activeId: SortableItemId, oldListId: string) => {\n const column = state[oldListId].find(c => c.id === activeId);\n\n if (column) {\n moveColumn(column);\n }\n };\n\n const handleDoubleClick = (id, status) =>\n table.options.enablePinning\n ? event => {\n event.stopPropagation();\n move(id, status);\n }\n : undefined;\n\n const isReorderingAllowed = (meta.enableColumnReordering || table.options.enablePinning) ?? false;\n\n if (!table.options.enablePinning) {\n return (\n <Sortable.Container reorder={reorder} move={move}>\n <Sortable.List id=\"other\" className=\"flex min-h-[theme(spacing.8)] flex-col gap-y-px overflow-x-hidden px-2\">\n {state.other.map((column: RTColumn<any, any>) => {\n const canBeReordered = isOrderingAllowed(table, column);\n\n return (\n <Sortable.Item\n key={column.id}\n disabled={column.columnDef.meta?.disableReordering}\n id={column.id}\n asChild>\n <OrderableColumn\n canBeReordered={canBeReordered}\n column={column}\n isReorderingAllowed={isReorderingAllowed}\n onDoubleClick={handleDoubleClick(column.id, 'other')}\n />\n </Sortable.Item>\n );\n })}\n </Sortable.List>\n </Sortable.Container>\n );\n }\n\n return (\n <Sortable.Container reorder={reorder} move={move}>\n <h5 className=\"mx-4\">{texts.table2.columnSettings.columnsPinned}</h5>\n <Sortable.List id=\"pinned\" className=\"flex min-h-[theme(spacing.8)] flex-col gap-y-px overflow-x-hidden px-2\">\n {state.pinned.length ? (\n state.pinned.map(column => {\n const canBeReordered = isOrderingAllowed(table, column);\n\n return (\n <Sortable.Item\n key={column.id}\n disabled={column.columnDef.meta?.disableReordering}\n id={column.id}\n asChild>\n <OrderableColumn\n canBeReordered={canBeReordered}\n column={column}\n isReorderingAllowed={isReorderingAllowed}\n onDoubleClick={handleDoubleClick(column.id, 'pinned')}\n />\n </Sortable.Item>\n );\n })\n ) : (\n <p className=\"text-grey-500 mb-0 flex h-8 items-center px-2\">\n {texts.table2.columnSettings.columnsPinnedDrop}\n </p>\n )}\n </Sortable.List>\n <h5 className=\"mx-4\">{texts.table2.columnSettings.columnsOther}</h5>\n\n <Sortable.List id=\"other\" className=\"flex min-h-[theme(spacing.8)] flex-col gap-y-px overflow-x-hidden px-2\">\n {state.other.length ? (\n state.other.map((column: RTColumn<any, any>) => {\n const canBeReordered = isOrderingAllowed(table, column);\n\n return (\n <Sortable.Item\n key={column.id}\n disabled={column.columnDef.meta?.disableReordering}\n id={column.id}\n asChild>\n <OrderableColumn\n canBeReordered={canBeReordered}\n column={column}\n isReorderingAllowed={isReorderingAllowed}\n onDoubleClick={handleDoubleClick(column.id, 'other')}\n />\n </Sortable.Item>\n );\n })\n ) : (\n <p className=\"text-grey-500 mb-0 flex h-8 items-center px-2\">\n {texts.table2.columnSettings.columnsOtherDrop}\n </p>\n )}\n </Sortable.List>\n </Sortable.Container>\n );\n};\n\nconst reorder = (draggedColumnId: string, targetColumnId: string, list: RTColumn<any>[] = []): RTColumn<any>[] => {\n const nextColumnOrder = [...list];\n nextColumnOrder.splice(\n nextColumnOrder.findIndex(c => c.id === targetColumnId),\n 0,\n nextColumnOrder.splice(\n nextColumnOrder.findIndex(c => c.id === draggedColumnId),\n 1\n )[0]\n );\n return nextColumnOrder;\n};\n\ntype PinnedState = {\n pinned: RTColumn<any>[];\n other: RTColumn<any>[];\n};\ntype ColumnSettingsButtonProps = {\n table: RTTable<any>;\n};\n\nexport const ColumnSettingsButton = ({ table }: ColumnSettingsButtonProps) => {\n const { texts } = useLocalization();\n const [query, setQuery] = React.useState('');\n const columns = table.getAllLeafColumns().filter(column => !isInternalColumn(column.id));\n\n const [state, setState] = React.useState<PinnedState>({\n pinned: columns.filter(column => column.getIsPinned()),\n other: columns.filter(column => !column.getIsPinned()),\n });\n\n const pinColumn = (column: RTColumn<any, any>) => {\n if (state.pinned.find(c => c.id === column.id)) {\n setState(currentState => ({\n pinned: currentState.pinned.filter(c => c.id !== column.id),\n other: [column].concat(...currentState.other),\n }));\n } else {\n setState(currentState => ({\n pinned: currentState.pinned.concat(column),\n other: currentState.other.filter(c => c.id !== column.id),\n }));\n }\n };\n\n const reorderColumn = (draggedColumnId: string, targetColumnId: string, pinned: boolean) => {\n if (pinned) {\n setState(currentState => ({\n ...currentState,\n pinned: reorder(draggedColumnId, targetColumnId, currentState.pinned),\n }));\n } else {\n setState(currentState => ({\n ...currentState,\n other: reorder(draggedColumnId, targetColumnId, currentState.other),\n }));\n }\n };\n\n // probably a more elegant way to do this without local state but had\n // a range of issues using the native apis directly\n React.useEffect(() => {\n const internals: string[] = [];\n\n if (table.options.enableRowSelection) {\n internals.push(COLUMN_ID_FOR_SELECTION);\n }\n\n if (table.options.enableExpanding) {\n internals.push(COLUMN_ID_FOR_EXPANSION);\n }\n\n table.setColumnPinning({ left: internals.concat(...state.pinned.map(c => c.id)) });\n table.setColumnOrder(internals.concat([...state.pinned, ...state.other].map(c => c.id)));\n }, [state]);\n\n return (\n <IconButton\n aria-label={texts.table2.columnSettings.tooltip}\n icon=\"columns\"\n popover={popoverProps => (\n <Popover {...popoverProps}>\n <Popover.Content align=\"end\">\n <div className=\"flex w-60 flex-col gap-2\">\n {table.options.enableHiding ? (\n <Input\n onChange={event => setQuery(event.target.value)}\n placeholder={texts.table2.columnSettings.search}\n value={query}\n />\n ) : null}\n <div className=\"-ml-4 -mb-2 max-h-64 w-[calc(100%_+_theme(spacing.8))] overflow-auto\">\n {query ? (\n <div className=\"flex min-h-[theme(spacing.8)] flex-col gap-y-px overflow-x-hidden px-2\">\n {columns\n .filter(column =>\n column.columnDef.header?.toString().toLowerCase().includes(query.toLowerCase())\n )\n .map(column => (\n <OrderableColumn\n key={column.id}\n canBeReordered={false}\n column={column}\n isReorderingAllowed={false}\n />\n ))}\n </div>\n ) : (\n <SortableColumnContainer\n state={state}\n moveColumn={pinColumn}\n reorderColumn={reorderColumn}\n table={table}\n />\n )}\n </div>\n </div>\n </Popover.Content>\n </Popover>\n )}\n tooltip={texts.table2.columnSettings.tooltip}\n />\n );\n};\n"],"names":["OrderableColumn","React","forwardRef","props","ref","canBeReordered","column","isReorderingAllowed","attributes","icon","Icon","name","className","columnDef","header","id","getCanHide","Checkbox","checked","getIsVisible","onChange","toggleVisibility","isOrderingAllowed","table","meta","options","enablePinning","enableColumnReordering","disableReordering","SortableColumnContainer","state","moveColumn","reorderColumn","texts","useLocalization","reorder","activeId","overId","listId","draggedColumn","find","c","targetColumn","move","oldListId","handleDoubleClick","status","event","stopPropagation","undefined","Sortable","other","map","key","disabled","asChild","onDoubleClick","table2","columnSettings","columnsPinned","pinned","length","columnsPinnedDrop","columnsOther","columnsOtherDrop","draggedColumnId","targetColumnId","list","nextColumnOrder","splice","findIndex","ColumnSettingsButton","query","setQuery","useState","columns","getAllLeafColumns","filter","isInternalColumn","setState","getIsPinned","pinColumn","currentState","concat","useEffect","internals","enableRowSelection","push","COLUMN_ID_FOR_SELECTION","enableExpanding","COLUMN_ID_FOR_EXPANSION","setColumnPinning","left","setColumnOrder","IconButton","tooltip","popover","popoverProps","Popover","Content","align","enableHiding","Input","target","value","placeholder","search","toString","toLowerCase","includes"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"ColumnSettingsButton.js","sources":["../../../../../../../../src/components/Table2/components/ColumnSettingsButton.tsx"],"sourcesContent":["import React from 'react';\nimport { Column as RTColumn, Table as RTTable, TableMeta } from '@tanstack/react-table';\n\nimport { Checkbox } from '../../Checkbox/Checkbox';\nimport { Icon } from '../../Icon/Icon';\nimport { Input } from '../../Input/Input';\nimport { Button } from '../../Button/Button';\nimport { Popover } from '../../Popover/Popover';\nimport * as Sortable from '../../../primitives/Sortable/Sortable';\nimport { COLUMN_ID_FOR_EXPANSION, COLUMN_ID_FOR_SELECTION, isInternalColumn } from '../utilities/columns';\nimport { SortableItemId } from '../../../primitives/Sortable/Sortable';\nimport { useLocalization } from '../../Provider/Localization';\nimport { Truncate } from '../../Truncate/Truncate';\n\ntype OrderableColumnProps = React.HTMLAttributes<HTMLDivElement> & {\n canBeReordered: boolean;\n column: RTColumn<any, any>;\n isColumnFixed: boolean;\n};\n\nconst OrderableColumn = React.forwardRef<HTMLDivElement, OrderableColumnProps>((props, ref) => {\n const { canBeReordered, column, children, isColumnFixed, ...attributes } = props;\n let icon;\n\n if (canBeReordered) {\n icon = (\n <Icon\n name=\"drag\"\n /** top margin of -3px on Icon, is added to make sure that each OrderableColumn is of 32px height **/\n className=\"text-grey-500 hover:text-grey-700 mr-0.5 -ml-[6px] -mt-[3px] inline-block !h-5 !w-5 cursor-move\"\n />\n );\n } else if (isColumnFixed) {\n icon = <span className=\"mr-0.5 inline-flex w-4\" />;\n }\n\n // columnName should be a string\n const columnName = column.columnDef.header?.toString() ?? column.columnDef.id ?? '';\n\n return (\n <div\n {...attributes}\n className=\"hover:bg-grey-100 aria-pressed:bg-grey-200 flex w-full items-center justify-between gap-x-2 rounded py-[6px] px-2 aria-pressed:z-10\"\n ref={ref}>\n <Truncate tooltip={columnName}>\n <span className=\"select-none\">\n {icon}\n {columnName}\n </span>\n </Truncate>\n {children}\n </div>\n );\n});\n\nconst isOrderingAllowed = (table, column) => {\n const meta = table.options.meta as TableMeta<any>;\n\n return meta.enableColumnReordering ? !column.columnDef.meta?.disableReordering : false;\n};\n\nconst isColumnOrderingDisabled = (table, column) => {\n const meta = table.options.meta as TableMeta<any>;\n return meta.enableColumnReordering && !!column.columnDef.meta?.disableReordering;\n};\n\ntype SortableColumnContainerProps = {\n state: VisibilityState;\n moveColumn: (column: RTColumn<any, any>) => void;\n reorderColumn: (draggedColumnId: string, targetColumnId: string, isVisible: boolean) => void;\n table: RTTable<any>;\n query: string;\n};\n\nconst SortableColumnContainer = ({ state, moveColumn, reorderColumn, table, query }: SortableColumnContainerProps) => {\n const { texts } = useLocalization();\n const meta = table.options.meta as TableMeta<any>;\n\n const reorder = (activeId: SortableItemId, overId: SortableItemId, listId: string) => {\n const draggedColumn: RTColumn<any, any> = state[listId].find(c => c.id === activeId);\n const targetColumn: RTColumn<any, any> = state[listId].find(c => c.id === overId);\n\n if (draggedColumn && targetColumn) {\n reorderColumn(draggedColumn.id, targetColumn.id, listId === 'visible');\n }\n };\n\n const move = (activeId: SortableItemId, oldListId: string) => {\n const column = state[oldListId].find(c => c.id === activeId);\n\n if (column) {\n moveColumn(column);\n }\n };\n\n const handleColumnCheckboxChange = column => () => {\n moveColumn?.(column);\n column.toggleVisibility();\n };\n\n const isColumnHidingAllowed = meta.enableColumnHiding;\n const isQueryFilterNotApplied = query === '';\n const filteredHiddenColumns = state.hidden.filter(column =>\n column.columnDef.header?.toString().toLowerCase().includes(query.toLowerCase())\n );\n const filteredVisibleColumns = state.visible.filter(column =>\n column.columnDef.header?.toString().toLowerCase().includes(query.toLowerCase())\n );\n\n const visibleListDescriptionText = isQueryFilterNotApplied\n ? texts.table2.columnSettings.columnsVisibleDrop\n : texts.table2.columnSettings.noVisibleColumns;\n const hiddenListDescriptionText = isQueryFilterNotApplied\n ? texts.table2.columnSettings.columnsHiddenDrop\n : texts.table2.columnSettings.noHiddenColumns;\n\n if (isColumnHidingAllowed) {\n return (\n <Sortable.Container reorder={reorder} move={move}>\n <Truncate tooltip={texts.table2.columnSettings.columnsVisible}>\n <h5 className=\"mx-4 my-[6px]\">{texts.table2.columnSettings.columnsVisible}</h5>\n </Truncate>\n <Sortable.List id=\"visible\" className=\"flex min-h-[theme(spacing.8)] flex-col overflow-hidden px-2\">\n {filteredVisibleColumns.length ? (\n filteredVisibleColumns.map(column => {\n // When searching a column, we disable reordering and make it fixed\n const canBeReordered = isOrderingAllowed(table, column) && isQueryFilterNotApplied;\n const isColumnFixed = isColumnOrderingDisabled(table, column) && isQueryFilterNotApplied;\n\n return (\n <Sortable.Item key={column.id} disabled={!canBeReordered} id={column.id} asChild>\n <OrderableColumn\n canBeReordered={canBeReordered}\n column={column}\n isColumnFixed={isColumnFixed}>\n {column.getCanHide() ? (\n <Checkbox\n className=\"!mt-0\"\n checked={column.getIsVisible()}\n onChange={handleColumnCheckboxChange(column)}\n />\n ) : null}\n </OrderableColumn>\n </Sortable.Item>\n );\n })\n ) : (\n // For some reason wrapping this paragraph with Truncate will throw error in scenarios where\n // we conditionally hide or show the paragraph e.g. moving the last column to the hide list\n <p className=\"text-grey-500 mb-0 flex h-8 items-center truncate px-2\">{visibleListDescriptionText}</p>\n )}\n </Sortable.List>\n\n <Truncate tooltip={texts.table2.columnSettings.columnsHidden}>\n <h5 className=\"mx-4 my-[6px] truncate\">{texts.table2.columnSettings.columnsHidden}</h5>\n </Truncate>\n <Sortable.List id=\"hidden\" className=\"flex min-h-[theme(spacing.8)] flex-col gap-y-px overflow-hidden px-2\">\n {filteredHiddenColumns.length ? (\n filteredHiddenColumns.map((column: RTColumn<any, any>) => {\n // When searching a column, we disable reordering and make it fixed\n const canBeReordered = isOrderingAllowed(table, column) && isQueryFilterNotApplied;\n const isColumnFixed = isColumnOrderingDisabled(table, column) && isQueryFilterNotApplied;\n\n return (\n <Sortable.Item key={column.id} disabled={!canBeReordered} id={column.id} asChild>\n <OrderableColumn\n canBeReordered={canBeReordered}\n column={column}\n isColumnFixed={isColumnFixed}>\n {column.getCanHide() ? (\n <Checkbox\n className=\"!mt-0\"\n checked={column.getIsVisible()}\n onChange={handleColumnCheckboxChange(column)}\n />\n ) : null}\n </OrderableColumn>\n </Sortable.Item>\n );\n })\n ) : (\n // For some reason wrapping this paragraph with Truncate will throw error in scenarios where\n // we conditionally hide or show the paragraph e.g. moving the last column to the visible list\n <p className=\"text-grey-500 mb-0 flex h-8 items-center truncate px-2\">{hiddenListDescriptionText}</p>\n )}\n </Sortable.List>\n </Sortable.Container>\n );\n }\n\n return (\n <Sortable.Container reorder={reorder} move={move}>\n <Sortable.List id=\"visible\" className=\"flex min-h-[theme(spacing.8)] flex-col gap-y-px overflow-hidden px-2\">\n {state.visible.length\n ? state.visible\n .filter(column => column.columnDef.header?.toString().toLowerCase().includes(query.toLowerCase()))\n .map(column => {\n // When searching a column, we disable reordering and make it fixed\n const canBeReordered = isOrderingAllowed(table, column) && isQueryFilterNotApplied;\n const isColumnFixed = isColumnOrderingDisabled(table, column) && isQueryFilterNotApplied;\n\n return (\n <Sortable.Item key={column.id} disabled={!canBeReordered} id={column.id} asChild>\n <OrderableColumn\n canBeReordered={canBeReordered}\n column={column}\n isColumnFixed={isColumnFixed}\n />\n </Sortable.Item>\n );\n })\n : null}\n </Sortable.List>\n </Sortable.Container>\n );\n};\n\nconst reorder = (draggedColumnId: string, targetColumnId: string, list: RTColumn<any>[] = []): RTColumn<any>[] => {\n const nextColumnOrder = [...list];\n nextColumnOrder.splice(\n nextColumnOrder.findIndex(c => c.id === targetColumnId),\n 0,\n nextColumnOrder.splice(\n nextColumnOrder.findIndex(c => c.id === draggedColumnId),\n 1\n )[0]\n );\n return nextColumnOrder;\n};\n\ntype VisibilityState = {\n visible: RTColumn<any>[];\n hidden: RTColumn<any>[];\n};\ntype ColumnSettingsButtonProps = {\n table: RTTable<any>;\n};\n\nexport const ColumnSettingsButton = ({ table }: ColumnSettingsButtonProps) => {\n const { texts } = useLocalization();\n const [query, setQuery] = React.useState('');\n\n const columns = table.getAllLeafColumns().filter(column => !isInternalColumn(column.id));\n\n const [state, setState] = React.useState<VisibilityState>({\n visible: columns.filter(column => column.getIsVisible()),\n hidden: columns.filter(column => !column.getIsVisible()),\n });\n\n const initialOrderedColumns = React.useRef(columns);\n\n const moveColumnToList = (column: RTColumn<any, any>) => {\n // If column can't hide then don't toggle visiblity\n if (column.getCanHide()) {\n column.toggleVisibility();\n }\n\n if (state.visible.find(c => c.id === column.id)) {\n setState(currentState => {\n const filteredColumns = currentState.visible.filter(c => c.id !== column.id);\n\n if (column.getCanHide()) {\n const hiddenColumns = [column].concat(...currentState.hidden);\n\n // Sort the hidden column so that they follow the initial order of fixed columns\n const sortedFixedHiddenColumns = hiddenColumns\n .filter(hiddenColumn => !!hiddenColumn.columnDef.meta?.disableReordering)\n .sort((colA, colB) => {\n const indexA = initialOrderedColumns.current.indexOf(colA);\n const indexB = initialOrderedColumns.current.indexOf(colB);\n\n return indexA - indexB;\n });\n\n const reorderableHiddenColumns = hiddenColumns.filter(\n hiddenColumn => !hiddenColumn.columnDef.meta?.disableReordering\n );\n\n return {\n visible: filteredColumns,\n hidden: [...sortedFixedHiddenColumns, ...reorderableHiddenColumns],\n };\n }\n\n // If column can't hide and it is dragged to hidden column list then move the column to the bottom of\n // the visible column list\n return {\n visible: filteredColumns.concat(column),\n hidden: currentState.hidden,\n };\n });\n } else {\n setState(currentState => {\n let visibleColumns: RTColumn<any>[] = [];\n\n // If ordering is allowed then we don't care about the previous column order\n if (isOrderingAllowed(table, column)) {\n visibleColumns = currentState.visible.concat(column);\n } else {\n const orderedVisibleColumns = initialOrderedColumns.current\n .filter(\n orderedColumn => !state.hidden.find(c => c.id === orderedColumn.id) || orderedColumn.id === column.id\n )\n .map(({ id }) => id);\n\n const movedColumnIndex = orderedVisibleColumns.indexOf(column.id);\n\n // Index of the column that is moved to visible list\n // Intial value for the index is the last item in visible list\n let index = currentState.visible.length;\n\n currentState.visible.find((col, colIndex) => {\n const columnIndex = orderedVisibleColumns.indexOf(col.id);\n\n // Index where the moved column should be shown in visible list\n if (movedColumnIndex < columnIndex) {\n index = colIndex;\n return true;\n }\n\n return false;\n });\n\n visibleColumns = currentState.visible\n .slice(0, index)\n .concat(column)\n .concat(currentState.visible.slice(index));\n }\n\n return {\n visible: visibleColumns,\n hidden: currentState.hidden.filter(c => c.id !== column.id),\n };\n });\n }\n };\n\n const reorderColumnInList = (draggedColumnId: string, targetColumnId: string, isVisible: boolean) => {\n const isTargetColumnFixed = !!columns.find(column => column.id === targetColumnId)?.columnDef.meta?.disableReordering;\n\n if (isVisible) {\n let firstReorderableVisibleColumnId = targetColumnId;\n\n if (isTargetColumnFixed) {\n firstReorderableVisibleColumnId =\n state.visible.find(visibleColumn => !visibleColumn.columnDef.meta?.disableReordering)?.id ?? targetColumnId;\n }\n\n setState(currentState => ({\n ...currentState,\n visible: reorder(draggedColumnId, firstReorderableVisibleColumnId, currentState.visible),\n }));\n } else {\n let firstReorderableHiddenColumnId = targetColumnId;\n\n if (isTargetColumnFixed) {\n firstReorderableHiddenColumnId =\n state.hidden.find(visibleColumn => !visibleColumn.columnDef.meta?.disableReordering)?.id ?? targetColumnId;\n }\n\n setState(currentState => ({\n ...currentState,\n hidden: reorder(draggedColumnId, firstReorderableHiddenColumnId, currentState.hidden),\n }));\n }\n };\n\n const changeColumnOrder = (newColumnOrder: RTColumn<any>[]) => {\n const internals: string[] = [];\n\n if (table.options.enableRowSelection) {\n internals.push(COLUMN_ID_FOR_SELECTION);\n }\n\n if (table.options.enableExpanding) {\n internals.push(COLUMN_ID_FOR_EXPANSION);\n }\n\n table.setColumnOrder(internals.concat(newColumnOrder.map(c => c.id)));\n };\n\n // probably a more elegant way to do this without local state but had\n // a range of issues using the native apis directly\n React.useEffect(() => {\n changeColumnOrder([...state.visible, ...state.hidden]);\n }, [state]);\n\n // This effect moves up all fixed/unorderable columns before orderable columns.\n // For custom column order, the fixed/unorderable columns will also move up before orderable columns.\n // The order between all fixed/unorderable column items, and all orderable column items will be same as it was\n // specified by the consumer.\n React.useEffect(() => {\n const orderableColumns: RTColumn<any>[] = [];\n const fixedColumns: RTColumn<any>[] = [];\n\n columns.forEach(column => {\n const isColumnFixed = !!column.columnDef.meta?.disableReordering;\n\n if (isColumnFixed) {\n fixedColumns.push(column);\n } else {\n orderableColumns.push(column);\n }\n });\n\n const newOrderedColumns = [...fixedColumns, ...orderableColumns];\n\n // Changes order in the table\n changeColumnOrder(newOrderedColumns);\n\n // Changes order in the column settings button popover\n setState({\n visible: newOrderedColumns.filter(column => column.getIsVisible()),\n hidden: newOrderedColumns.filter(column => !column.getIsVisible()),\n });\n\n // update initial column order\n initialOrderedColumns.current = newOrderedColumns;\n }, []);\n\n return (\n <Button\n aria-label={texts.table2.columnSettings.tooltip}\n popover={popoverProps => (\n <Popover {...popoverProps}>\n <Popover.Content align=\"end\">\n <div className=\"flex w-60 flex-col gap-2\">\n {table.options.enableHiding ? (\n <Input\n onChange={event => setQuery(event.target.value)}\n placeholder={texts.table2.columnSettings.search}\n value={query}\n />\n ) : null}\n <div className=\"-ml-[calc(theme(spacing.4)_-_2px)] -mb-2 max-h-64 w-[calc(100%_+_theme(spacing.7)_-_1px)] overflow-auto\">\n <SortableColumnContainer\n state={state}\n moveColumn={moveColumnToList}\n reorderColumn={reorderColumnInList}\n table={table}\n query={query}\n />\n </div>\n </div>\n </Popover.Content>\n </Popover>\n )}\n tooltip={texts.table2.columnSettings.tooltip}>\n <Icon name=\"columns\" />\n {texts.table2.columnSettings.button}\n </Button>\n );\n};\n"],"names":["OrderableColumn","React","forwardRef","props","ref","canBeReordered","column","children","isColumnFixed","attributes","icon","Icon","name","className","columnName","columnDef","header","toString","id","Truncate","tooltip","isOrderingAllowed","table","meta","options","enableColumnReordering","disableReordering","isColumnOrderingDisabled","SortableColumnContainer","state","moveColumn","reorderColumn","query","texts","useLocalization","reorder","activeId","overId","listId","draggedColumn","find","c","targetColumn","move","oldListId","handleColumnCheckboxChange","toggleVisibility","isColumnHidingAllowed","enableColumnHiding","isQueryFilterNotApplied","filteredHiddenColumns","hidden","filter","toLowerCase","includes","filteredVisibleColumns","visible","visibleListDescriptionText","table2","columnSettings","columnsVisibleDrop","noVisibleColumns","hiddenListDescriptionText","columnsHiddenDrop","noHiddenColumns","Sortable","columnsVisible","length","map","key","disabled","asChild","getCanHide","Checkbox","checked","getIsVisible","onChange","columnsHidden","draggedColumnId","targetColumnId","list","nextColumnOrder","splice","findIndex","ColumnSettingsButton","setQuery","useState","columns","getAllLeafColumns","isInternalColumn","setState","initialOrderedColumns","useRef","moveColumnToList","currentState","filteredColumns","hiddenColumns","concat","sortedFixedHiddenColumns","hiddenColumn","sort","colA","colB","indexA","current","indexOf","indexB","reorderableHiddenColumns","visibleColumns","orderedVisibleColumns","orderedColumn","movedColumnIndex","index","col","colIndex","columnIndex","slice","reorderColumnInList","isVisible","isTargetColumnFixed","firstReorderableVisibleColumnId","visibleColumn","firstReorderableHiddenColumnId","changeColumnOrder","newColumnOrder","internals","enableRowSelection","push","COLUMN_ID_FOR_SELECTION","enableExpanding","COLUMN_ID_FOR_EXPANSION","setColumnOrder","useEffect","orderableColumns","fixedColumns","forEach","newOrderedColumns","Button","popover","popoverProps","Popover","Content","align","enableHiding","Input","event","target","value","placeholder","search","button"],"mappings":"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"}
|