@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.
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 +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
- 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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"}