@economic/taco 1.28.1 → 1.30.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.
Files changed (75) hide show
  1. package/dist/components/Icon/components/ColumnFreeze.d.ts +3 -0
  2. package/dist/components/Icon/components/ColumnUnfreeze.d.ts +3 -0
  3. package/dist/components/Icon/components/index.d.ts +1 -1
  4. package/dist/components/Input/Input.d.ts +1 -1
  5. package/dist/components/Menu/components/Item.d.ts +1 -1
  6. package/dist/components/Menu/components/Link.d.ts +1 -1
  7. package/dist/components/Navigation2/components/Link.d.ts +1 -1
  8. package/dist/components/Provider/Localization.d.ts +12 -4
  9. package/dist/components/Select2/components/Option.d.ts +1 -1
  10. package/dist/components/Select2/components/Search.d.ts +1 -1
  11. package/dist/components/Table2/Table2.d.ts +11 -4
  12. package/dist/components/Table2/components/row/ExpandedRow.d.ts +1 -1
  13. package/dist/components/Table2/hooks/useColumnDefinitions.d.ts +2 -2
  14. package/dist/components/Table2/hooks/useTable.d.ts +4 -0
  15. package/dist/components/Table2/types.d.ts +3 -4
  16. package/dist/components/Table2/utilities/cell.d.ts +1 -1
  17. package/dist/components/Table2/utilities/columns.d.ts +1 -0
  18. package/dist/components/Tag/Tag.d.ts +1 -1
  19. package/dist/components/Truncate/Truncate.d.ts +6 -0
  20. package/dist/esm/packages/taco/src/components/Icon/components/ColumnFreeze.js +19 -0
  21. package/dist/esm/packages/taco/src/components/Icon/components/ColumnFreeze.js.map +1 -0
  22. package/dist/esm/packages/taco/src/components/Icon/components/ColumnUnfreeze.js +19 -0
  23. package/dist/esm/packages/taco/src/components/Icon/components/ColumnUnfreeze.js.map +1 -0
  24. package/dist/esm/packages/taco/src/components/Icon/components/index.js +4 -0
  25. package/dist/esm/packages/taco/src/components/Icon/components/index.js.map +1 -1
  26. package/dist/esm/packages/taco/src/components/Input/Input.js +14 -14
  27. package/dist/esm/packages/taco/src/components/Input/Input.js.map +1 -1
  28. package/dist/esm/packages/taco/src/components/Provider/Localization.js +13 -6
  29. package/dist/esm/packages/taco/src/components/Provider/Localization.js.map +1 -1
  30. package/dist/esm/packages/taco/src/components/SearchInput/SearchInput.js +1 -0
  31. package/dist/esm/packages/taco/src/components/SearchInput/SearchInput.js.map +1 -1
  32. package/dist/esm/packages/taco/src/components/Select2/components/Collection.js +2 -1
  33. package/dist/esm/packages/taco/src/components/Select2/components/Collection.js.map +1 -1
  34. package/dist/esm/packages/taco/src/components/Table2/Table2.js +21 -9
  35. package/dist/esm/packages/taco/src/components/Table2/Table2.js.map +1 -1
  36. package/dist/esm/packages/taco/src/components/Table2/components/ColumnSettingsButton.js +243 -111
  37. package/dist/esm/packages/taco/src/components/Table2/components/ColumnSettingsButton.js.map +1 -1
  38. package/dist/esm/packages/taco/src/components/Table2/components/column/Base.js +5 -5
  39. package/dist/esm/packages/taco/src/components/Table2/components/column/Base.js.map +1 -1
  40. package/dist/esm/packages/taco/src/components/Table2/components/column/Cell.js +76 -31
  41. package/dist/esm/packages/taco/src/components/Table2/components/column/Cell.js.map +1 -1
  42. package/dist/esm/packages/taco/src/components/Table2/components/column/Footer.js +2 -2
  43. package/dist/esm/packages/taco/src/components/Table2/components/column/Footer.js.map +1 -1
  44. package/dist/esm/packages/taco/src/components/Table2/components/column/Header.js +85 -19
  45. package/dist/esm/packages/taco/src/components/Table2/components/column/Header.js.map +1 -1
  46. package/dist/esm/packages/taco/src/components/Table2/components/row/ExpandedRow.js +3 -0
  47. package/dist/esm/packages/taco/src/components/Table2/components/row/ExpandedRow.js.map +1 -1
  48. package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useColumnOffsetStateListener.js +6 -3
  49. package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useColumnOffsetStateListener.js.map +1 -1
  50. package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useSettingsStateListener.js +2 -2
  51. package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useSettingsStateListener.js.map +1 -1
  52. package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js +6 -9
  53. package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js.map +1 -1
  54. package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js +14 -6
  55. package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js.map +1 -1
  56. package/dist/esm/packages/taco/src/components/Table2/types.js.map +1 -1
  57. package/dist/esm/packages/taco/src/components/Table2/utilities/cell.js +8 -8
  58. package/dist/esm/packages/taco/src/components/Table2/utilities/cell.js.map +1 -1
  59. package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js +17 -8
  60. package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js.map +1 -1
  61. package/dist/esm/packages/taco/src/components/Truncate/Truncate.js +32 -0
  62. package/dist/esm/packages/taco/src/components/Truncate/Truncate.js.map +1 -0
  63. package/dist/esm/packages/taco/src/index.js +1 -1
  64. package/dist/esm/packages/taco/src/primitives/Listbox2/components/Option.js +3 -1
  65. package/dist/esm/packages/taco/src/primitives/Listbox2/components/Option.js.map +1 -1
  66. package/dist/esm/packages/taco/src/primitives/Listbox2/components/Root.js +3 -1
  67. package/dist/esm/packages/taco/src/primitives/Listbox2/components/Root.js.map +1 -1
  68. package/dist/esm/packages/taco/src/primitives/Sortable/components/Item.js +5 -1
  69. package/dist/esm/packages/taco/src/primitives/Sortable/components/Item.js.map +1 -1
  70. package/dist/taco.cjs.development.js +576 -229
  71. package/dist/taco.cjs.development.js.map +1 -1
  72. package/dist/taco.cjs.production.min.js +1 -1
  73. package/dist/taco.cjs.production.min.js.map +1 -1
  74. package/package.json +2 -2
  75. package/types.json +68 -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
- isReorderingAllowed,
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
- className: "text-grey-500 hover:text-grey-700 mr-0.5 -ml-2 -mt-px cursor-move"
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 (isReorderingAllowed) {
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-1 px-2 aria-pressed:z-10",
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("span", {
37
- className: "pointer-events-none"
38
- }, icon, (_column$columnDef$hea = column.columnDef.header) !== null && _column$columnDef$hea !== void 0 ? _column$columnDef$hea : column.columnDef.id), column.getCanHide() ? /*#__PURE__*/React__default.createElement(Checkbox, {
39
- checked: column.getIsVisible(),
40
- onChange: column.toggleVisibility
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 === 'pinned');
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 handleDoubleClick = (id, status) => table.options.enablePinning ? event => {
76
- event.stopPropagation();
77
- move(id, status);
78
- } : undefined;
79
- const isReorderingAllowed = (_ref = meta.enableColumnReordering || table.options.enablePinning) !== null && _ref !== void 0 ? _ref : false;
80
- if (!table.options.enablePinning) {
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(List, {
85
- id: "other",
86
- className: "flex min-h-[theme(spacing.8)] flex-col gap-y-px overflow-x-hidden px-2"
87
- }, state.other.map(column => {
88
- var _column$columnDef$met2;
89
- const canBeReordered = isOrderingAllowed(table, column);
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: (_column$columnDef$met2 = column.columnDef.meta) === null || _column$columnDef$met2 === void 0 ? void 0 : _column$columnDef$met2.disableReordering,
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
- isReorderingAllowed: isReorderingAllowed,
99
- onDoubleClick: handleDoubleClick(column.id, 'other')
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("h5", {
107
- className: "mx-4"
108
- }, texts.table2.columnSettings.columnsPinned), /*#__PURE__*/React__default.createElement(List, {
109
- id: "pinned",
110
- className: "flex min-h-[theme(spacing.8)] flex-col gap-y-px overflow-x-hidden px-2"
111
- }, state.pinned.length ? state.pinned.map(column => {
112
- var _column$columnDef$met3;
113
- const canBeReordered = isOrderingAllowed(table, column);
114
- return /*#__PURE__*/React__default.createElement(Item, {
115
- key: column.id,
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: (_column$columnDef$met4 = column.columnDef.meta) === null || _column$columnDef$met4 === void 0 ? void 0 : _column$columnDef$met4.disableReordering,
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
- isReorderingAllowed: isReorderingAllowed,
144
- onDoubleClick: handleDoubleClick(column.id, 'other')
186
+ isColumnFixed: isColumnFixed
145
187
  }));
146
- }) : /*#__PURE__*/React__default.createElement("p", {
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
- pinned: columns.filter(column => column.getIsPinned()),
165
- other: columns.filter(column => !column.getIsPinned())
204
+ visible: columns.filter(column => column.getIsVisible()),
205
+ hidden: columns.filter(column => !column.getIsVisible())
166
206
  });
167
- const pinColumn = column => {
168
- if (state.pinned.find(c => c.id === column.id)) {
169
- setState(currentState => ({
170
- pinned: currentState.pinned.filter(c => c.id !== column.id),
171
- other: [column].concat(...currentState.other)
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
- pinned: currentState.pinned.concat(column),
176
- other: currentState.other.filter(c => c.id !== column.id)
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 reorderColumn = (draggedColumnId, targetColumnId, pinned) => {
181
- if (pinned) {
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
- pinned: reorder(draggedColumnId, targetColumnId, currentState.pinned)
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
- other: reorder(draggedColumnId, targetColumnId, currentState.other)
302
+ hidden: reorder(draggedColumnId, firstReorderableHiddenColumnId, currentState.hidden)
190
303
  }));
191
304
  }
192
305
  };
193
- // probably a more elegant way to do this without local state but had
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.setColumnPinning({
204
- left: internals.concat(...state.pinned.map(c => c.id))
205
- });
206
- table.setColumnOrder(internals.concat([...state.pinned, ...state.other].map(c => c.id)));
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
- return /*#__PURE__*/React__default.createElement(IconButton, {
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.8))] overflow-auto"
221
- }, query ? /*#__PURE__*/React__default.createElement("div", {
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: pinColumn,
234
- reorderColumn: 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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"}