@bigbinary/neetoui 8.2.14 → 8.2.15

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 (109) hide show
  1. package/dist/ActionDropdown.js +2 -2
  2. package/dist/Alert.js +3 -3
  3. package/dist/Checkbox.js +2 -2
  4. package/dist/ColorPicker.js +2 -2
  5. package/dist/DatePicker.js +6 -6
  6. package/dist/Dropdown.js +2 -2
  7. package/dist/Input.js +2 -2
  8. package/dist/Modal.js +3 -3
  9. package/dist/MultiEmailInput.js +2 -2
  10. package/dist/Pagination.js +2 -2
  11. package/dist/Pane.js +3 -3
  12. package/dist/Radio.js +2 -2
  13. package/dist/Select.js +2 -2
  14. package/dist/Sidebar.js +2 -2
  15. package/dist/Slider.js +2 -2
  16. package/dist/Switch.js +2 -2
  17. package/dist/Table.js +258 -161
  18. package/dist/Table.js.map +1 -1
  19. package/dist/{Textarea-d9a69b9b.js → Textarea-ffce70c4.js} +2 -2
  20. package/dist/{Textarea-d9a69b9b.js.map → Textarea-ffce70c4.js.map} +1 -1
  21. package/dist/Textarea.js +3 -3
  22. package/dist/TimePicker.js +6 -6
  23. package/dist/Toastr.js +2 -2
  24. package/dist/TranslationProvider.js +1 -1
  25. package/dist/Tree.js +2 -2
  26. package/dist/TreeSelect.js +2 -2
  27. package/dist/cjs/ActionDropdown.js +2 -2
  28. package/dist/cjs/Alert.js +3 -3
  29. package/dist/cjs/Checkbox.js +2 -2
  30. package/dist/cjs/ColorPicker.js +2 -2
  31. package/dist/cjs/DatePicker.js +6 -6
  32. package/dist/cjs/Dropdown.js +2 -2
  33. package/dist/cjs/Input.js +2 -2
  34. package/dist/cjs/Modal.js +3 -3
  35. package/dist/cjs/MultiEmailInput.js +2 -2
  36. package/dist/cjs/Pagination.js +2 -2
  37. package/dist/cjs/Pane.js +3 -3
  38. package/dist/cjs/Radio.js +2 -2
  39. package/dist/cjs/Select.js +2 -2
  40. package/dist/cjs/Sidebar.js +2 -2
  41. package/dist/cjs/Slider.js +2 -2
  42. package/dist/cjs/Switch.js +2 -2
  43. package/dist/cjs/Table.js +262 -165
  44. package/dist/cjs/Table.js.map +1 -1
  45. package/dist/cjs/{Textarea-a5fa88e6.js → Textarea-19fb996b.js} +2 -2
  46. package/dist/cjs/{Textarea-a5fa88e6.js.map → Textarea-19fb996b.js.map} +1 -1
  47. package/dist/cjs/Textarea.js +3 -3
  48. package/dist/cjs/TimePicker.js +6 -6
  49. package/dist/cjs/Toastr.js +2 -2
  50. package/dist/cjs/TranslationProvider.js +1 -1
  51. package/dist/cjs/Tree.js +2 -2
  52. package/dist/cjs/TreeSelect.js +2 -2
  53. package/dist/cjs/{en-80d0fbff.js → en-2db2c836.js} +4 -2
  54. package/dist/cjs/en-2db2c836.js.map +1 -0
  55. package/dist/cjs/formik/ActionBlock.js +2 -2
  56. package/dist/cjs/formik/BlockNavigation.js +3 -3
  57. package/dist/cjs/formik/Checkbox.js +2 -2
  58. package/dist/cjs/formik/Input.js +2 -2
  59. package/dist/cjs/formik/MultiEmailInput.js +2 -2
  60. package/dist/cjs/formik/Radio.js +2 -2
  61. package/dist/cjs/formik/Select.js +2 -2
  62. package/dist/cjs/formik/Slider.js +2 -2
  63. package/dist/cjs/formik/Switch.js +2 -2
  64. package/dist/cjs/formik/Textarea.js +3 -3
  65. package/dist/cjs/formik/TreeSelect.js +2 -2
  66. package/dist/cjs/formik/index.js +4 -4
  67. package/dist/cjs/{index-e2b848cc.js → index-00bdc7be.js} +4 -4
  68. package/dist/cjs/{index-e2b848cc.js.map → index-00bdc7be.js.map} +1 -1
  69. package/dist/cjs/{index-0f5141e0.js → index-13162f47.js} +15 -2
  70. package/dist/cjs/index-13162f47.js.map +1 -0
  71. package/dist/cjs/index.js +6 -6
  72. package/dist/cjs/layouts.js +2 -2
  73. package/dist/cjs/{useOverlayManager-d4108cf8.js → useOverlayManager-0e028745.js} +2 -2
  74. package/dist/cjs/{useOverlayManager-d4108cf8.js.map → useOverlayManager-0e028745.js.map} +1 -1
  75. package/dist/cjs/{HeaderCellMenu-3deb613f.js → useRestoreScrollPosition-dd1bbd92.js} +55 -44
  76. package/dist/cjs/useRestoreScrollPosition-dd1bbd92.js.map +1 -0
  77. package/dist/{en-41f5c641.js → en-8006295a.js} +4 -2
  78. package/dist/en-8006295a.js.map +1 -0
  79. package/dist/formik/ActionBlock.js +2 -2
  80. package/dist/formik/BlockNavigation.js +3 -3
  81. package/dist/formik/Checkbox.js +2 -2
  82. package/dist/formik/Input.js +2 -2
  83. package/dist/formik/MultiEmailInput.js +2 -2
  84. package/dist/formik/Radio.js +2 -2
  85. package/dist/formik/Select.js +2 -2
  86. package/dist/formik/Slider.js +2 -2
  87. package/dist/formik/Switch.js +2 -2
  88. package/dist/formik/Textarea.js +3 -3
  89. package/dist/formik/TreeSelect.js +2 -2
  90. package/dist/formik/index.js +4 -4
  91. package/dist/{index-abadd6e9.js → index-4d4c3cde.js} +14 -3
  92. package/dist/index-4d4c3cde.js.map +1 -0
  93. package/dist/{index-9b5ec9a5.js → index-8ff1994f.js} +4 -4
  94. package/dist/{index-9b5ec9a5.js.map → index-8ff1994f.js.map} +1 -1
  95. package/dist/index.js +6 -6
  96. package/dist/layouts.js +2 -2
  97. package/dist/{useOverlayManager-593daea1.js → useOverlayManager-b8edcf18.js} +2 -2
  98. package/dist/{useOverlayManager-593daea1.js.map → useOverlayManager-b8edcf18.js.map} +1 -1
  99. package/dist/{HeaderCellMenu-bca097dd.js → useRestoreScrollPosition-853e5957.js} +55 -45
  100. package/dist/useRestoreScrollPosition-853e5957.js.map +1 -0
  101. package/package.json +1 -1
  102. package/src/translations/en.json +3 -1
  103. package/types/Table.d.ts +1 -0
  104. package/dist/HeaderCellMenu-bca097dd.js.map +0 -1
  105. package/dist/cjs/HeaderCellMenu-3deb613f.js.map +0 -1
  106. package/dist/cjs/en-80d0fbff.js.map +0 -1
  107. package/dist/cjs/index-0f5141e0.js.map +0 -1
  108. package/dist/en-41f5c641.js.map +0 -1
  109. package/dist/index-abadd6e9.js.map +0 -1
package/dist/cjs/Table.js CHANGED
@@ -17,12 +17,12 @@ var reactRouterDom = require('react-router-dom');
17
17
  var constants = require('./constants.js');
18
18
  require('@bigbinary/neeto-hotkeys');
19
19
  require('./overlayManager.js');
20
- var index = require('./index-0f5141e0.js');
20
+ var index = require('./index-13162f47.js');
21
21
  var useQueryParams = require('./useQueryParams-a8ee2f76.js');
22
22
  var Button = require('./Button.js');
23
23
  var Callout = require('./Callout.js');
24
24
  var Typography = require('./Typography.js');
25
- var HeaderCellMenu = require('./HeaderCellMenu-3deb613f.js');
25
+ var useRestoreScrollPosition = require('./useRestoreScrollPosition-dd1bbd92.js');
26
26
  var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
27
27
  var reactResizable = require('react-resizable');
28
28
  var Spinner = require('./Spinner.js');
@@ -41,13 +41,13 @@ require('dayjs/plugin/utc');
41
41
  require('dayjs/plugin/weekday');
42
42
  require('dayjs/plugin/weekOfYear');
43
43
  require('qs');
44
- require('./en-80d0fbff.js');
44
+ require('./en-2db2c836.js');
45
45
  require('./Tooltip.js');
46
46
  require('@tippyjs/react');
47
47
  require('tippy.js');
48
- require('zustand');
49
48
  require('./Dropdown.js');
50
49
  require('./Popover.js');
50
+ require('zustand');
51
51
 
52
52
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
53
53
 
@@ -101,6 +101,37 @@ var SelectAllRowsCallout = function SelectAllRowsCallout(_ref) {
101
101
  })));
102
102
  };
103
103
 
104
+ var getStorageValue = function getStorageValue(key, defaultValue) {
105
+ try {
106
+ var storedValue = localStorage.getItem(key);
107
+ return storedValue ? JSON.parse(storedValue) : defaultValue;
108
+ } catch (error) {
109
+ // eslint-disable-next-line no-console
110
+ console.error(error);
111
+ return defaultValue;
112
+ }
113
+ };
114
+ var useLocalStorage = function useLocalStorage(key, defaultValue) {
115
+ var _useState = React.useState(function () {
116
+ return getStorageValue(key, defaultValue);
117
+ }),
118
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
119
+ storedValue = _useState2[0],
120
+ setStoredValue = _useState2[1];
121
+ var setValue = function setValue(value) {
122
+ return setStoredValue(function (prevStoredValue) {
123
+ var newValue = typeof value === "function" ? value(prevStoredValue) : value;
124
+ if (ramda.isNil(newValue)) {
125
+ index.removeFromLocalStorage(key);
126
+ } else {
127
+ index.setToLocalStorage(key, newValue);
128
+ }
129
+ return newValue;
130
+ });
131
+ };
132
+ return [storedValue, setValue];
133
+ };
134
+
104
135
  var useReorderColumns = function useReorderColumns(_ref) {
105
136
  var isEnabled = _ref.isEnabled,
106
137
  columns = _ref.columns,
@@ -139,12 +170,12 @@ var useReorderColumns = function useReorderColumns(_ref) {
139
170
 
140
171
  var SortIcon = function SortIcon(_ref) {
141
172
  var sortOrder = _ref.sortOrder;
142
- if (sortOrder === HeaderCellMenu.TABLE_SORT_ORDERS.asc || sortOrder === HeaderCellMenu.URL_SORT_ORDERS.ascend) {
173
+ if (sortOrder === useRestoreScrollPosition.TABLE_SORT_ORDERS.asc || sortOrder === useRestoreScrollPosition.URL_SORT_ORDERS.ascend) {
143
174
  return /*#__PURE__*/React__default["default"].createElement(neetoIcons.UpArrow, {
144
175
  size: 14
145
176
  });
146
177
  }
147
- if (sortOrder === HeaderCellMenu.TABLE_SORT_ORDERS.desc || sortOrder === HeaderCellMenu.URL_SORT_ORDERS.descend) {
178
+ if (sortOrder === useRestoreScrollPosition.TABLE_SORT_ORDERS.desc || sortOrder === useRestoreScrollPosition.URL_SORT_ORDERS.descend) {
148
179
  return /*#__PURE__*/React__default["default"].createElement(neetoIcons.DownArrow, {
149
180
  size: 14
150
181
  });
@@ -152,10 +183,199 @@ var SortIcon = function SortIcon(_ref) {
152
183
  return null;
153
184
  };
154
185
 
186
+ var _excluded$4 = ["children", "isSortable", "isAddEnabled", "sortedInfo", "onSort", "isHidable", "isDeletable", "isFixedColumn", "onColumnHide", "onAddColumn", "onColumnDelete", "onColumnFreeze", "onMoreActionClick", "column", "moreActions"];
187
+ var CellContent = function CellContent(_ref) {
188
+ var children = _ref.children,
189
+ isSortable = _ref.isSortable,
190
+ isAddEnabled = _ref.isAddEnabled,
191
+ sortedInfo = _ref.sortedInfo,
192
+ onSort = _ref.onSort,
193
+ _ref$isHidable = _ref.isHidable,
194
+ isHidable = _ref$isHidable === void 0 ? true : _ref$isHidable,
195
+ _ref$isDeletable = _ref.isDeletable,
196
+ isDeletable = _ref$isDeletable === void 0 ? false : _ref$isDeletable,
197
+ isFixedColumn = _ref.isFixedColumn,
198
+ onColumnHide = _ref.onColumnHide,
199
+ onAddColumn = _ref.onAddColumn,
200
+ onColumnDelete = _ref.onColumnDelete,
201
+ onColumnFreeze = _ref.onColumnFreeze,
202
+ onMoreActionClick = _ref.onMoreActionClick,
203
+ column = _ref.column,
204
+ _ref$moreActions = _ref.moreActions,
205
+ moreActions = _ref$moreActions === void 0 ? [] : _ref$moreActions,
206
+ headerProps = _objectWithoutProperties__default["default"](_ref, _excluded$4);
207
+ var isColumnHidable = isHidable && neetoCist.isPresent(onColumnHide);
208
+ var isColumnDeletable = isDeletable && neetoCist.isPresent(onColumnDelete);
209
+ var hasMoreActions = !ramda.isEmpty(moreActions) && neetoCist.isPresent(onMoreActionClick);
210
+ var hasMoreMenu = neetoCist.isPresent(column);
211
+ return /*#__PURE__*/React__default["default"].createElement("th", _extends__default["default"]({}, headerProps, {
212
+ title: "",
213
+ onClick: isSortable ? neetoCist.noop : headerProps.onClick
214
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
215
+ className: "flex items-center justify-between"
216
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
217
+ className: "min-w-0 flex-grow"
218
+ }, children), hasMoreMenu && /*#__PURE__*/React__default["default"].createElement(useRestoreScrollPosition.HeaderCellMenu, {
219
+ column: column,
220
+ hasMoreActions: hasMoreActions,
221
+ isAddEnabled: isAddEnabled,
222
+ isColumnDeletable: isColumnDeletable,
223
+ isFixedColumn: isFixedColumn,
224
+ isSortable: isSortable,
225
+ moreActions: moreActions,
226
+ onAddColumn: onAddColumn,
227
+ onColumnDelete: onColumnDelete,
228
+ onColumnFreeze: onColumnFreeze,
229
+ onColumnHide: onColumnHide,
230
+ onMoreActionClick: onMoreActionClick,
231
+ onSort: onSort,
232
+ sortedInfo: sortedInfo,
233
+ columnTitle: headerProps.title,
234
+ isHidable: isColumnHidable
235
+ })));
236
+ };
237
+
238
+ var _excluded$3 = ["onResize", "width", "onResizeStop", "className"];
239
+ var HeaderCell = function HeaderCell(props) {
240
+ var onResize = props.onResize,
241
+ width = props.width,
242
+ onResizeStop = props.onResizeStop,
243
+ className = props.className,
244
+ restProps = _objectWithoutProperties__default["default"](props, _excluded$3);
245
+ if (!width) {
246
+ return /*#__PURE__*/React__default["default"].createElement(CellContent, _extends__default["default"]({}, restProps, {
247
+ className: classnames__default["default"](className, "drag-handler")
248
+ }));
249
+ }
250
+ return /*#__PURE__*/React__default["default"].createElement(reactResizable.Resizable, {
251
+ onResize: onResize,
252
+ onResizeStop: onResizeStop,
253
+ width: width,
254
+ draggableOpts: {
255
+ enableUserSelectHack: false
256
+ },
257
+ height: 0,
258
+ handle: /*#__PURE__*/React__default["default"].createElement("span", {
259
+ className: "react-resizable-handle",
260
+ onClick: function onClick(e) {
261
+ return e.stopPropagation();
262
+ }
263
+ }),
264
+ onResizeStart: function onResizeStart(e) {
265
+ e.preventDefault();
266
+ }
267
+ }, /*#__PURE__*/React__default["default"].createElement(CellContent, _extends__default["default"]({}, restProps, {
268
+ className: classnames__default["default"](className, "drag-handler")
269
+ })));
270
+ };
271
+
272
+ var _excluded$2 = ["onResize", "width", "onResizeStop"];
273
+ var ResizableHeaderCell = function ResizableHeaderCell(props) {
274
+ var onResize = props.onResize,
275
+ width = props.width,
276
+ onResizeStop = props.onResizeStop,
277
+ restProps = _objectWithoutProperties__default["default"](props, _excluded$2);
278
+ if (!width) {
279
+ return /*#__PURE__*/React__default["default"].createElement(CellContent, restProps);
280
+ }
281
+ return /*#__PURE__*/React__default["default"].createElement(reactResizable.Resizable, {
282
+ onResize: onResize,
283
+ onResizeStop: onResizeStop,
284
+ width: width,
285
+ draggableOpts: {
286
+ enableUserSelectHack: false
287
+ },
288
+ height: 0,
289
+ handle: /*#__PURE__*/React__default["default"].createElement("span", {
290
+ className: "react-resizable-handle",
291
+ onClick: function onClick(e) {
292
+ return e.stopPropagation();
293
+ }
294
+ }),
295
+ onResizeStart: function onResizeStart(e) {
296
+ e.preventDefault();
297
+ }
298
+ }, /*#__PURE__*/React__default["default"].createElement(CellContent, restProps));
299
+ };
300
+
301
+ var _excluded$1 = ["className"];
302
+ var ReorderableHeaderCell = function ReorderableHeaderCell(_ref) {
303
+ var className = _ref.className,
304
+ props = _objectWithoutProperties__default["default"](_ref, _excluded$1);
305
+ return /*#__PURE__*/React__default["default"].createElement(CellContent, _extends__default["default"]({}, props, {
306
+ className: classnames__default["default"](className, "drag-handler")
307
+ }));
308
+ };
309
+
310
+ var convertLocationPathnameToId = function convertLocationPathnameToId() {
311
+ var pathname = decodeURIComponent(window.location.pathname).replace(/^\//, "");
312
+ var hash = 0;
313
+ for (var i = 0; i < pathname.length; i++) {
314
+ var _char = pathname.charCodeAt(i);
315
+ hash = (hash << 5) - hash + _char;
316
+ hash = hash & hash; // Convert to 32-bit integer
317
+ }
318
+
319
+ return Math.abs(hash).toString(16).toUpperCase();
320
+ };
321
+ var getHeaderCell = function getHeaderCell(_ref) {
322
+ var enableColumnResize = _ref.enableColumnResize,
323
+ enableColumnReorder = _ref.enableColumnReorder;
324
+ if (enableColumnReorder && enableColumnResize) return {
325
+ cell: HeaderCell
326
+ };
327
+ if (enableColumnResize) return {
328
+ cell: ResizableHeaderCell
329
+ };
330
+ if (enableColumnReorder) return {
331
+ cell: ReorderableHeaderCell
332
+ };
333
+ return {
334
+ cell: CellContent
335
+ };
336
+ };
337
+ var isIncludedIn = function isIncludedIn(array1, array2) {
338
+ return ramda.all(ramda.includes(ramda.__, array1), array2);
339
+ };
340
+ var getSelectAllRowsCalloutHeight = function getSelectAllRowsCalloutHeight() {
341
+ return window.innerWidth < 768 ? useRestoreScrollPosition.SELECT_ALL_ROWS_CALLOUT_MOBILE_HEIGHT : useRestoreScrollPosition.SELECT_ALL_ROWS_CALLOUT_DESKTOP_HEIGHT;
342
+ };
343
+ var sortFrozenColumns = function sortFrozenColumns(columnData) {
344
+ var originalIndices = new Map(columnData.map(function (col, index) {
345
+ return [col.dataIndex, index];
346
+ }));
347
+ return function (a, b) {
348
+ var aFixed = neetoCist.isPresent(a.fixed);
349
+ var bFixed = neetoCist.isPresent(b.fixed);
350
+ var aIndex = originalIndices.get(a.dataIndex);
351
+ var bIndex = originalIndices.get(b.dataIndex);
352
+ if (aFixed !== bFixed) return aFixed ? -1 : 1;
353
+ return aIndex - bIndex;
354
+ };
355
+ };
356
+ var getFixedColumns = function getFixedColumns(columnData) {
357
+ return ramda.pipe(ramda.filter(function (_ref2) {
358
+ var fixed = _ref2.fixed;
359
+ return neetoCist.isPresent(fixed);
360
+ }), ramda.pluck("dataIndex"))(columnData);
361
+ };
362
+ var getColumnSortOrder = function getColumnSortOrder(col, sortedInfo) {
363
+ return sortedInfo.field === col.dataIndex || sortedInfo.field === col.key ? sortedInfo.order : null;
364
+ };
365
+ var getColumFixedValue = function getColumFixedValue(col, frozenColumns) {
366
+ return frozenColumns.indexOf(col.dataIndex) !== -1 ? useRestoreScrollPosition.COLUMN_FIXED_VALUES.LEFT : null;
367
+ };
368
+ var getFrozenColumnsLocalStorageKey = function getFrozenColumnsLocalStorageKey(localStorageKeyPrefix) {
369
+ var prefix = neetoCist.isPresent(localStorageKeyPrefix) ? localStorageKeyPrefix : convertLocationPathnameToId();
370
+ return "NEETOUI-".concat(prefix, "-FIXED_COLUMNS");
371
+ };
372
+
155
373
  function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
156
374
  function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
157
375
  var useResizableColumns = function useResizableColumns(_ref) {
158
376
  var columns = _ref.columns,
377
+ columnData = _ref.columnData,
378
+ frozenColumns = _ref.frozenColumns,
159
379
  setColumns = _ref.setColumns,
160
380
  isEnabled = _ref.isEnabled,
161
381
  isAddEnabled = _ref.isAddEnabled,
@@ -165,6 +385,7 @@ var useResizableColumns = function useResizableColumns(_ref) {
165
385
  handleSort = _ref.handleSort,
166
386
  sortedInfo = _ref.sortedInfo,
167
387
  onColumnHide = _ref.onColumnHide,
388
+ onColumnFreeze = _ref.onColumnFreeze,
168
389
  onMoreActionClick = _ref.onMoreActionClick,
169
390
  tableOnChangeProps = _ref.tableOnChangeProps;
170
391
  var handleResize = function handleResize(index) {
@@ -179,6 +400,7 @@ var useResizableColumns = function useResizableColumns(_ref) {
179
400
  };
180
401
  var computedColumnsData = React.useMemo(function () {
181
402
  return columns.map(function (col, index) {
403
+ var fixed = getColumFixedValue(col, frozenColumns);
182
404
  var modifiedColumn = _objectSpread$2(_objectSpread$2({}, col), {}, {
183
405
  onHeaderCell: function onHeaderCell(column) {
184
406
  return {
@@ -191,11 +413,13 @@ var useResizableColumns = function useResizableColumns(_ref) {
191
413
  onSort: handleSort,
192
414
  sortedInfo: sortedInfo,
193
415
  onColumnHide: onColumnHide,
416
+ onColumnFreeze: onColumnFreeze,
194
417
  onMoreActionClick: onMoreActionClick,
195
- isAddEnabled: isAddEnabled && !col.fixed,
418
+ isAddEnabled: isAddEnabled && !fixed,
196
419
  onAddColumn: function onAddColumn(positionOffset) {
197
420
  return onColumnAdd(index + positionOffset);
198
421
  },
422
+ isFixedColumn: !!fixed,
199
423
  onColumnDelete: onColumnDelete,
200
424
  isHidable: col.isHidable,
201
425
  isDeletable: col.isDeletable,
@@ -204,14 +428,13 @@ var useResizableColumns = function useResizableColumns(_ref) {
204
428
  };
205
429
  },
206
430
  sortIcon: SortIcon,
207
- sortOrder: sortedInfo.field === col.dataIndex || sortedInfo.field === col.key ? sortedInfo.order : null
431
+ sortOrder: getColumnSortOrder(col, sortedInfo),
432
+ fixed: fixed
208
433
  });
209
- if (!ramda.has("ellipsis", col)) {
210
- modifiedColumn.ellipsis = true;
211
- }
434
+ if (!ramda.has("ellipsis", col)) modifiedColumn.ellipsis = true;
212
435
  return modifiedColumn;
213
- });
214
- }, [columns, sortedInfo, tableOnChangeProps]);
436
+ }).sort(sortFrozenColumns(columnData));
437
+ }, [columns, sortedInfo, tableOnChangeProps, onColumnFreeze, frozenColumns, columnData]);
215
438
  return {
216
439
  columns: computedColumnsData
217
440
  };
@@ -221,6 +444,7 @@ function ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if
221
444
  function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
222
445
  var useColumns = function useColumns(_ref) {
223
446
  var columns = _ref.columns,
447
+ columnData = _ref.columnData,
224
448
  setColumns = _ref.setColumns,
225
449
  isResizeEnabled = _ref.isResizeEnabled,
226
450
  isReorderEnabled = _ref.isReorderEnabled,
@@ -236,7 +460,17 @@ var useColumns = function useColumns(_ref) {
236
460
  onTableChange = _ref.onTableChange,
237
461
  tableOnChangeProps = _ref.tableOnChangeProps,
238
462
  handleTableSortChange = _ref.handleTableSortChange,
239
- isDefaultPageChangeHandler = _ref.isDefaultPageChangeHandler;
463
+ isDefaultPageChangeHandler = _ref.isDefaultPageChangeHandler,
464
+ localStorageKeyPrefix = _ref.localStorageKeyPrefix;
465
+ var _useLocalStorage = useLocalStorage(getFrozenColumnsLocalStorageKey(localStorageKeyPrefix), getFixedColumns(columnData)),
466
+ _useLocalStorage2 = _slicedToArray__default["default"](_useLocalStorage, 2),
467
+ frozenColumns = _useLocalStorage2[0],
468
+ setFrozenColumns = _useLocalStorage2[1];
469
+ var onColumnFreeze = React.useCallback(function (isFixedColumn, _ref2) {
470
+ var dataIndex = _ref2.dataIndex;
471
+ var updatedColumns = isFixedColumn ? ramda.without([dataIndex], frozenColumns) : ramda.append(dataIndex, frozenColumns);
472
+ setFrozenColumns(updatedColumns);
473
+ }, [frozenColumns, setFrozenColumns]);
240
474
  var _useReorderColumns = useReorderColumns({
241
475
  isEnabled: isReorderEnabled,
242
476
  columns: columns,
@@ -262,6 +496,8 @@ var useColumns = function useColumns(_ref) {
262
496
  };
263
497
  var _useResizableColumns = useResizableColumns({
264
498
  columns: columns,
499
+ columnData: columnData,
500
+ frozenColumns: frozenColumns,
265
501
  setColumns: setColumns,
266
502
  isEnabled: isResizeEnabled,
267
503
  isAddEnabled: isAddEnabled,
@@ -272,7 +508,8 @@ var useColumns = function useColumns(_ref) {
272
508
  sortedInfo: sortedInfo,
273
509
  onColumnHide: onColumnHide,
274
510
  onMoreActionClick: onMoreActionClick,
275
- tableOnChangeProps: tableOnChangeProps
511
+ tableOnChangeProps: tableOnChangeProps,
512
+ onColumnFreeze: onColumnFreeze
276
513
  }),
277
514
  computedColumnsData = _useResizableColumns.columns;
278
515
  return {
@@ -283,9 +520,9 @@ var useColumns = function useColumns(_ref) {
283
520
 
284
521
  var getSortInfoFromQueryParams = function getSortInfoFromQueryParams(queryParams) {
285
522
  var sortedInfo = {};
286
- if (neetoCist.isPresent(queryParams.sort_by) && neetoCist.isPresent(queryParams.order_by) && neetoCist.isPresent(HeaderCellMenu.TABLE_SORT_ORDERS[queryParams.order_by])) {
523
+ if (neetoCist.isPresent(queryParams.sort_by) && neetoCist.isPresent(queryParams.order_by) && neetoCist.isPresent(useRestoreScrollPosition.TABLE_SORT_ORDERS[queryParams.order_by])) {
287
524
  sortedInfo.field = neetoCist.snakeToCamelCase(queryParams.sort_by);
288
- sortedInfo.order = HeaderCellMenu.TABLE_SORT_ORDERS[queryParams.order_by];
525
+ sortedInfo.order = useRestoreScrollPosition.TABLE_SORT_ORDERS[queryParams.order_by];
289
526
  }
290
527
  return sortedInfo;
291
528
  };
@@ -304,7 +541,7 @@ var useTableSort = function useTableSort() {
304
541
  var handleTableChange = function handleTableChange(pagination, sorter) {
305
542
  var params = {
306
543
  sort_by: sorter.order ? neetoCist.camelToSnakeCase(sorter.field) : undefined,
307
- order_by: HeaderCellMenu.URL_SORT_ORDERS[sorter.order],
544
+ order_by: useRestoreScrollPosition.URL_SORT_ORDERS[sorter.order],
308
545
  page: pagination.current
309
546
  };
310
547
  var pathname = window.location.pathname;
@@ -317,150 +554,7 @@ var useTableSort = function useTableSort() {
317
554
  };
318
555
  };
319
556
 
320
- var _excluded$4 = ["children", "isSortable", "isAddEnabled", "sortedInfo", "onSort", "isHidable", "isDeletable", "onColumnHide", "onAddColumn", "onColumnDelete", "onMoreActionClick", "column", "moreActions"];
321
- var CellContent = function CellContent(_ref) {
322
- var children = _ref.children,
323
- isSortable = _ref.isSortable,
324
- isAddEnabled = _ref.isAddEnabled,
325
- sortedInfo = _ref.sortedInfo,
326
- onSort = _ref.onSort,
327
- _ref$isHidable = _ref.isHidable,
328
- isHidable = _ref$isHidable === void 0 ? true : _ref$isHidable,
329
- _ref$isDeletable = _ref.isDeletable,
330
- isDeletable = _ref$isDeletable === void 0 ? false : _ref$isDeletable,
331
- onColumnHide = _ref.onColumnHide,
332
- onAddColumn = _ref.onAddColumn,
333
- onColumnDelete = _ref.onColumnDelete,
334
- onMoreActionClick = _ref.onMoreActionClick,
335
- column = _ref.column,
336
- _ref$moreActions = _ref.moreActions,
337
- moreActions = _ref$moreActions === void 0 ? [] : _ref$moreActions,
338
- headerProps = _objectWithoutProperties__default["default"](_ref, _excluded$4);
339
- var isColumnHidable = isHidable && neetoCist.isPresent(onColumnHide);
340
- var isColumnDeletable = isDeletable && neetoCist.isPresent(onColumnDelete);
341
- var hasMoreActions = !ramda.isEmpty(moreActions) && neetoCist.isPresent(onMoreActionClick);
342
- var hasMoreMenu = isSortable || neetoCist.isPresent(column === null || column === void 0 ? void 0 : column.description) || isColumnHidable || isAddEnabled || hasMoreActions;
343
- return /*#__PURE__*/React__default["default"].createElement("th", _extends__default["default"]({}, headerProps, {
344
- title: "",
345
- onClick: isSortable ? neetoCist.noop : headerProps.onClick
346
- }), /*#__PURE__*/React__default["default"].createElement("div", {
347
- className: "flex items-center justify-between"
348
- }, /*#__PURE__*/React__default["default"].createElement("div", {
349
- className: "min-w-0 flex-grow"
350
- }, children), hasMoreMenu && /*#__PURE__*/React__default["default"].createElement(HeaderCellMenu.HeaderCellMenu, {
351
- column: column,
352
- hasMoreActions: hasMoreActions,
353
- isAddEnabled: isAddEnabled,
354
- isColumnDeletable: isColumnDeletable,
355
- isSortable: isSortable,
356
- moreActions: moreActions,
357
- onAddColumn: onAddColumn,
358
- onColumnDelete: onColumnDelete,
359
- onColumnHide: onColumnHide,
360
- onMoreActionClick: onMoreActionClick,
361
- onSort: onSort,
362
- sortedInfo: sortedInfo,
363
- columnTitle: headerProps.title,
364
- isHidable: isColumnHidable
365
- })));
366
- };
367
-
368
- var _excluded$3 = ["onResize", "width", "onResizeStop", "className"];
369
- var HeaderCell = function HeaderCell(props) {
370
- var onResize = props.onResize,
371
- width = props.width,
372
- onResizeStop = props.onResizeStop,
373
- className = props.className,
374
- restProps = _objectWithoutProperties__default["default"](props, _excluded$3);
375
- if (!width) {
376
- return /*#__PURE__*/React__default["default"].createElement(CellContent, _extends__default["default"]({}, restProps, {
377
- className: classnames__default["default"](className, "drag-handler")
378
- }));
379
- }
380
- return /*#__PURE__*/React__default["default"].createElement(reactResizable.Resizable, {
381
- onResize: onResize,
382
- onResizeStop: onResizeStop,
383
- width: width,
384
- draggableOpts: {
385
- enableUserSelectHack: false
386
- },
387
- height: 0,
388
- handle: /*#__PURE__*/React__default["default"].createElement("span", {
389
- className: "react-resizable-handle",
390
- onClick: function onClick(e) {
391
- return e.stopPropagation();
392
- }
393
- }),
394
- onResizeStart: function onResizeStart(e) {
395
- e.preventDefault();
396
- }
397
- }, /*#__PURE__*/React__default["default"].createElement(CellContent, _extends__default["default"]({}, restProps, {
398
- className: classnames__default["default"](className, "drag-handler")
399
- })));
400
- };
401
-
402
- var _excluded$2 = ["onResize", "width", "onResizeStop"];
403
- var ResizableHeaderCell = function ResizableHeaderCell(props) {
404
- var onResize = props.onResize,
405
- width = props.width,
406
- onResizeStop = props.onResizeStop,
407
- restProps = _objectWithoutProperties__default["default"](props, _excluded$2);
408
- if (!width) {
409
- return /*#__PURE__*/React__default["default"].createElement(CellContent, restProps);
410
- }
411
- return /*#__PURE__*/React__default["default"].createElement(reactResizable.Resizable, {
412
- onResize: onResize,
413
- onResizeStop: onResizeStop,
414
- width: width,
415
- draggableOpts: {
416
- enableUserSelectHack: false
417
- },
418
- height: 0,
419
- handle: /*#__PURE__*/React__default["default"].createElement("span", {
420
- className: "react-resizable-handle",
421
- onClick: function onClick(e) {
422
- return e.stopPropagation();
423
- }
424
- }),
425
- onResizeStart: function onResizeStart(e) {
426
- e.preventDefault();
427
- }
428
- }, /*#__PURE__*/React__default["default"].createElement(CellContent, restProps));
429
- };
430
-
431
- var _excluded$1 = ["className"];
432
- var ReorderableHeaderCell = function ReorderableHeaderCell(_ref) {
433
- var className = _ref.className,
434
- props = _objectWithoutProperties__default["default"](_ref, _excluded$1);
435
- return /*#__PURE__*/React__default["default"].createElement(CellContent, _extends__default["default"]({}, props, {
436
- className: classnames__default["default"](className, "drag-handler")
437
- }));
438
- };
439
-
440
- var getHeaderCell = function getHeaderCell(_ref) {
441
- var enableColumnResize = _ref.enableColumnResize,
442
- enableColumnReorder = _ref.enableColumnReorder;
443
- if (enableColumnReorder && enableColumnResize) return {
444
- cell: HeaderCell
445
- };
446
- if (enableColumnResize) return {
447
- cell: ResizableHeaderCell
448
- };
449
- if (enableColumnReorder) return {
450
- cell: ReorderableHeaderCell
451
- };
452
- return {
453
- cell: CellContent
454
- };
455
- };
456
- var isIncludedIn = function isIncludedIn(array1, array2) {
457
- return ramda.all(ramda.includes(ramda.__, array1), array2);
458
- };
459
- var getSelectAllRowsCalloutHeight = function getSelectAllRowsCalloutHeight() {
460
- return window.innerWidth < 768 ? HeaderCellMenu.SELECT_ALL_ROWS_CALLOUT_MOBILE_HEIGHT : HeaderCellMenu.SELECT_ALL_ROWS_CALLOUT_DESKTOP_HEIGHT;
461
- };
462
-
463
- var _excluded = ["allowRowClick", "enableColumnResize", "enableColumnReorder", "enableAddColumn", "className", "columnData", "currentPageNumber", "defaultPageSize", "handlePageChange", "loading", "onRowClick", "onRowSelect", "rowData", "totalCount", "selectedRowKeys", "fixedHeight", "paginationProps", "rowKey", "scroll", "rowSelection", "shouldDynamicallyRenderRowSize", "bordered", "onColumnUpdate", "components", "onColumnHide", "onColumnAdd", "onColumnDelete", "onChange", "onMoreActionClick", "bulkSelectAllRowsProps"];
557
+ var _excluded = ["allowRowClick", "enableColumnResize", "enableColumnReorder", "enableAddColumn", "className", "columnData", "currentPageNumber", "defaultPageSize", "handlePageChange", "loading", "onRowClick", "onRowSelect", "rowData", "totalCount", "selectedRowKeys", "fixedHeight", "paginationProps", "rowKey", "scroll", "rowSelection", "shouldDynamicallyRenderRowSize", "bordered", "onColumnUpdate", "components", "onColumnHide", "onColumnAdd", "onColumnDelete", "onChange", "onMoreActionClick", "bulkSelectAllRowsProps", "localStorageKeyPrefix"];
464
558
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
465
559
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
466
560
  var TABLE_PAGINATION_HEIGHT = 64;
@@ -518,6 +612,7 @@ var Table = function Table(_ref) {
518
612
  onChange = _ref.onChange,
519
613
  onMoreActionClick = _ref.onMoreActionClick,
520
614
  bulkSelectAllRowsProps = _ref.bulkSelectAllRowsProps,
615
+ localStorageKeyPrefix = _ref.localStorageKeyPrefix,
521
616
  otherProps = _objectWithoutProperties__default["default"](_ref, _excluded);
522
617
  var _useTranslation = reactI18next.useTranslation(),
523
618
  i18n = _useTranslation.i18n;
@@ -563,7 +658,7 @@ var Table = function Table(_ref) {
563
658
  observer.disconnect();
564
659
  }
565
660
  }, [resizeObserver.current, fixedHeight]);
566
- var _useRestoreScrollPosi = HeaderCellMenu.useRestoreScrollPosition({
661
+ var _useRestoreScrollPosi = useRestoreScrollPosition.useRestoreScrollPosition({
567
662
  tableRef: tableRef,
568
663
  scrollRef: scrollRef,
569
664
  loading: loading
@@ -579,6 +674,7 @@ var Table = function Table(_ref) {
579
674
  isAddEnabled: enableAddColumn,
580
675
  onTableChange: onChange,
581
676
  columns: columns,
677
+ columnData: columnData,
582
678
  setColumns: setColumns,
583
679
  onColumnUpdate: onColumnUpdate,
584
680
  rowSelection: rowSelection,
@@ -590,7 +686,8 @@ var Table = function Table(_ref) {
590
686
  onColumnDelete: onColumnDelete,
591
687
  tableOnChangeProps: tableOnChangeProps,
592
688
  handleTableSortChange: handleTableSortChange,
593
- isDefaultPageChangeHandler: isDefaultPageChangeHandler
689
+ isDefaultPageChangeHandler: isDefaultPageChangeHandler,
690
+ localStorageKeyPrefix: localStorageKeyPrefix
594
691
  }),
595
692
  dragProps = _useColumns.dragProps,
596
693
  curatedColumnsData = _useColumns.columns;
@@ -599,7 +696,7 @@ var Table = function Table(_ref) {
599
696
  var _queryParams$sort_by;
600
697
  return neetoCist.modifyBy({
601
698
  dataIndex: neetoCist.snakeToCamelCase((_queryParams$sort_by = queryParams.sort_by) !== null && _queryParams$sort_by !== void 0 ? _queryParams$sort_by : "")
602
- }, ramda.assoc("sortOrder", HeaderCellMenu.TABLE_SORT_ORDERS[queryParams.order_by]), columnData);
699
+ }, ramda.assoc("sortOrder", useRestoreScrollPosition.TABLE_SORT_ORDERS[queryParams.order_by]), columnData);
603
700
  };
604
701
  var sortedColumns = isDefaultPageChangeHandler ? setSortFromURL(curatedColumnsData) : curatedColumnsData;
605
702
  var locale = {