@bigbinary/neeto-molecules 3.16.102 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,568 @@
1
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
+ import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
3
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
4
+ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
5
+ import { useCallback, useMemo, useEffect, useState, createElement } from 'react';
6
+ import { DndContext } from '@dnd-kit/core';
7
+ import { useSortable, SortableContext } from '@dnd-kit/sortable';
8
+ import i18next from 'i18next';
9
+ import { isNotEqualDeep, isNotEmpty, removeBy, existsBy, findIndexBy } from '@bigbinary/neeto-cist';
10
+ import Search from '@bigbinary/neeto-icons/Search';
11
+ import Checkbox from '@bigbinary/neetoui/Checkbox';
12
+ import Dropdown from '@bigbinary/neetoui/Dropdown';
13
+ import Input from '@bigbinary/neetoui/Input';
14
+ import Label from '@bigbinary/neetoui/Label';
15
+ import Button from '@bigbinary/neetoui/Button';
16
+ import { isEmpty, prop, pluck, filter, includes, trim, toLower, union, without, __, equals, pipe, identity } from 'ramda';
17
+ import { useTranslation } from 'react-i18next';
18
+ import { n } from './inject-css-DmrvuTKK.js';
19
+ import Drag from '@bigbinary/neeto-icons/Drag';
20
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
21
+ import { useQuery } from '@tanstack/react-query';
22
+ import useMutationWithInvalidation from '@bigbinary/neeto-commons-frontend/react-utils/useMutationWithInvalidation';
23
+ import axios from 'axios';
24
+ import { create as create$1 } from 'zustand';
25
+ import { persist } from 'zustand/middleware';
26
+ import { getFromLocalStorage, removeFromLocalStorage } from '@bigbinary/neeto-commons-frontend/utils/general';
27
+
28
+ var css = ":root{--neeto-molecules-columns-menu-max-width:31.25rem}.neeto-molecules-columns__container{max-width:31.25rem;max-width:var(--neeto-molecules-columns-menu-max-width)}.neeto-molecules-columns__sortable-item .neeto-ui-cursor-grab{cursor:grab}.neeto-molecules-columns__sortable-item .neeto-ui-cursor-grab:active{cursor:grabbing}.neeto-molecules-columns__sortable-item:hover .neeto-ui-text-gray-400{color:#6b7280}";
29
+ n(css,{});
30
+
31
+ const CSS = /*#__PURE__*/Object.freeze({
32
+ Translate: {
33
+ toString(transform) {
34
+ if (!transform) {
35
+ return;
36
+ }
37
+
38
+ const {
39
+ x,
40
+ y
41
+ } = transform;
42
+ return "translate3d(" + (x ? Math.round(x) : 0) + "px, " + (y ? Math.round(y) : 0) + "px, 0)";
43
+ }
44
+
45
+ },
46
+ Scale: {
47
+ toString(transform) {
48
+ if (!transform) {
49
+ return;
50
+ }
51
+
52
+ const {
53
+ scaleX,
54
+ scaleY
55
+ } = transform;
56
+ return "scaleX(" + scaleX + ") scaleY(" + scaleY + ")";
57
+ }
58
+
59
+ },
60
+ Transform: {
61
+ toString(transform) {
62
+ if (!transform) {
63
+ return;
64
+ }
65
+
66
+ return [CSS.Translate.toString(transform), CSS.Scale.toString(transform)].join(' ');
67
+ }
68
+
69
+ },
70
+ Transition: {
71
+ toString(_ref) {
72
+ let {
73
+ property,
74
+ duration,
75
+ easing
76
+ } = _ref;
77
+ return property + " " + duration + "ms " + easing;
78
+ }
79
+
80
+ }
81
+ });
82
+
83
+ function ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
84
+ function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
85
+ var Item = function Item(_ref) {
86
+ var column = _ref.column,
87
+ hiddenColumns = _ref.hiddenColumns,
88
+ checkboxProps = _ref.checkboxProps,
89
+ onToggle = _ref.onToggle;
90
+ var key = column.key,
91
+ title = column.title;
92
+ var _useSortable = useSortable({
93
+ id: key
94
+ }),
95
+ attributes = _useSortable.attributes,
96
+ listeners = _useSortable.listeners,
97
+ setNodeRef = _useSortable.setNodeRef,
98
+ transform = _useSortable.transform,
99
+ transition = _useSortable.transition,
100
+ isDragging = _useSortable.isDragging;
101
+ var dragStyle = {
102
+ transform: isDragging ? CSS.Transform.toString(transform) : undefined,
103
+ transition: transition,
104
+ opacity: isDragging ? 0.5 : 1
105
+ };
106
+ return /*#__PURE__*/jsx("div", {
107
+ className: "neeto-molecules-columns__sortable-item",
108
+ ref: setNodeRef,
109
+ style: dragStyle,
110
+ children: /*#__PURE__*/jsxs(Label, {
111
+ className: "neeto-ui-flex neeto-ui-w-full hover:neeto-ui-bg-gray-200 neeto-ui-cursor-pointer neeto-ui-items-center px-4 py-2",
112
+ htmlFor: key,
113
+ children: [/*#__PURE__*/jsx("div", _objectSpread$4(_objectSpread$4(_objectSpread$4({}, attributes), listeners), {}, {
114
+ className: "neeto-ui-mr-2 neeto-ui-cursor-grab neeto-ui-flex neeto-ui-items-center",
115
+ children: /*#__PURE__*/jsx(Drag, {
116
+ className: "neeto-ui-text-gray-400",
117
+ size: 16
118
+ })
119
+ })), /*#__PURE__*/jsx(Checkbox, _objectSpread$4({
120
+ checked: !hiddenColumns.includes(key),
121
+ "data-cy": "neeto-ui-columns-checkbox",
122
+ id: key,
123
+ label: title,
124
+ name: key,
125
+ onChange: onToggle
126
+ }, checkboxProps))]
127
+ })
128
+ });
129
+ };
130
+
131
+ var baseUrl = "api/v1/table_configurations";
132
+ var fetch = function fetch(tableKey) {
133
+ return axios.get("".concat(baseUrl, "/").concat(tableKey));
134
+ };
135
+ var create = function create(payload) {
136
+ return axios.post(baseUrl, {
137
+ tableConfiguration: payload
138
+ });
139
+ };
140
+ var update = function update(_ref) {
141
+ var tableKey = _ref.tableKey,
142
+ payload = _ref.payload;
143
+ return axios.patch("".concat(baseUrl, "/").concat(tableKey), {
144
+ tableConfiguration: payload
145
+ });
146
+ };
147
+ var destroy = function destroy(tableKey) {
148
+ return axios["delete"]("".concat(baseUrl, "/").concat(tableKey));
149
+ };
150
+ var tableConfigurationApi = {
151
+ fetch: fetch,
152
+ create: create,
153
+ update: update,
154
+ destroy: destroy
155
+ };
156
+
157
+ var HIDDEN_COLUMNS_STORAGE_KEY = "neeto-molecules-hidden-columns";
158
+ var COLUMNS_ORDER_STORAGE_KEY = "neeto-molecules-columns-order";
159
+ var TABLE_CONFIGURATION_QUERY_KEY = "table-configuration";
160
+
161
+ function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
162
+ function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
163
+ var useFetchTableConfiguration = function useFetchTableConfiguration(_ref) {
164
+ var tableKey = _ref.tableKey,
165
+ _ref$options = _ref.options,
166
+ options = _ref$options === void 0 ? {} : _ref$options;
167
+ return useQuery(_objectSpread$3({
168
+ queryKey: [TABLE_CONFIGURATION_QUERY_KEY, tableKey],
169
+ enabled: !!tableKey,
170
+ queryFn: function queryFn() {
171
+ return tableConfigurationApi.fetch(tableKey);
172
+ }
173
+ }, options));
174
+ };
175
+ var useUpdateTableConfiguration = function useUpdateTableConfiguration(tableKey) {
176
+ return useMutationWithInvalidation(tableConfigurationApi.update, {
177
+ keysToInvalidate: [[TABLE_CONFIGURATION_QUERY_KEY, tableKey]]
178
+ });
179
+ };
180
+ var useDestroyTableConfiguration = function useDestroyTableConfiguration(tableKey) {
181
+ return useMutationWithInvalidation(tableConfigurationApi.destroy, {
182
+ keysToInvalidate: [[TABLE_CONFIGURATION_QUERY_KEY, tableKey]]
183
+ });
184
+ };
185
+
186
+ function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
187
+ function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
188
+ var useTableConfigurations = function useTableConfigurations(tableKey, columnData) {
189
+ var _useFetchTableConfigu = useFetchTableConfiguration({
190
+ tableKey: tableKey
191
+ }),
192
+ tableConfiguration = _useFetchTableConfigu.data,
193
+ isLoading = _useFetchTableConfigu.isLoading;
194
+ var _useUpdateTableConfig = useUpdateTableConfiguration(tableKey),
195
+ updateConfiguration = _useUpdateTableConfig.mutate;
196
+ var _useDestroyTableConfi = useDestroyTableConfiguration(tableKey),
197
+ destroyConfiguration = _useDestroyTableConfi.mutate;
198
+ var processColumnsWithConfiguration = useCallback(function () {
199
+ var originalColumns = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
200
+ var existingColumnConfiguration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
201
+ if (isEmpty(existingColumnConfiguration)) {
202
+ return originalColumns;
203
+ }
204
+ var originalColumnsByKey = new Map(originalColumns === null || originalColumns === void 0 ? void 0 : originalColumns.filter(prop("key")).map(function (column) {
205
+ return [column.key, column];
206
+ }));
207
+ var configurationByKey = new Map(existingColumnConfiguration.map(function (config) {
208
+ return [config.key, config];
209
+ }));
210
+ var orderedConfiguredColumns = existingColumnConfiguration.map(function (config) {
211
+ return originalColumnsByKey.get(config.key);
212
+ }).filter(Boolean);
213
+ var unconfiguredOriginalColumns = originalColumns.filter(function (column) {
214
+ return column.key && !configurationByKey.has(column.key);
215
+ });
216
+ return [].concat(_toConsumableArray(orderedConfiguredColumns), _toConsumableArray(unconfiguredOriginalColumns));
217
+ }, []);
218
+ var hasAdditionalColumns = useMemo(function () {
219
+ if (!(tableConfiguration !== null && tableConfiguration !== void 0 && tableConfiguration.columns) || !columnData) {
220
+ return false;
221
+ }
222
+ var configurationKeys = pluck("key", tableConfiguration.columns).sort();
223
+ var dataKeys = pluck("key", columnData).sort();
224
+ return isNotEqualDeep(configurationKeys, dataKeys);
225
+ }, [tableConfiguration, columnData]);
226
+ var shouldApplyTableConfiguration = useMemo(function () {
227
+ return !isLoading && (tableConfiguration === null || tableConfiguration === void 0 ? void 0 : tableConfiguration.columns) && isNotEmpty(tableConfiguration === null || tableConfiguration === void 0 ? void 0 : tableConfiguration.columns) && !hasAdditionalColumns;
228
+ }, [tableConfiguration, isLoading, hasAdditionalColumns]);
229
+ useEffect(function () {
230
+ if (hasAdditionalColumns && tableConfiguration) {
231
+ destroyConfiguration(tableKey);
232
+ }
233
+ }, [hasAdditionalColumns, tableKey]);
234
+ var allProcessedColumns = useMemo(function () {
235
+ if (!isLoading && isNotEmpty(tableConfiguration === null || tableConfiguration === void 0 ? void 0 : tableConfiguration.columns) && !hasAdditionalColumns) {
236
+ return processColumnsWithConfiguration(columnData, tableConfiguration === null || tableConfiguration === void 0 ? void 0 : tableConfiguration.columns);
237
+ }
238
+ return columnData || [];
239
+ }, [isLoading, tableConfiguration === null || tableConfiguration === void 0 ? void 0 : tableConfiguration.columns, hasAdditionalColumns, columnData, processColumnsWithConfiguration]);
240
+ var customizedColumns = useMemo(function () {
241
+ if (shouldApplyTableConfiguration) {
242
+ var visibleColumnKeys = pluck("key", tableConfiguration.columns.filter(prop("isShown")));
243
+ return allProcessedColumns.filter(function (column) {
244
+ return visibleColumnKeys.includes(column.key);
245
+ });
246
+ }
247
+ return columnData || [];
248
+ }, [allProcessedColumns, columnData, tableConfiguration === null || tableConfiguration === void 0 ? void 0 : tableConfiguration.columns, shouldApplyTableConfiguration]);
249
+ var existingColumnConfiguration = useMemo(function () {
250
+ if (shouldApplyTableConfiguration) {
251
+ return tableConfiguration.columns;
252
+ }
253
+ if (!columnData || isEmpty(columnData)) {
254
+ return [];
255
+ }
256
+ return columnData.map(function (column) {
257
+ return {
258
+ key: column.key,
259
+ isShown: true
260
+ };
261
+ });
262
+ }, [shouldApplyTableConfiguration, columnData, tableConfiguration === null || tableConfiguration === void 0 ? void 0 : tableConfiguration.columns]);
263
+ var updateColumns = function updateColumns(updatedColumns) {
264
+ updateConfiguration({
265
+ tableKey: tableKey,
266
+ payload: {
267
+ table_key: tableKey,
268
+ columns: updatedColumns
269
+ }
270
+ });
271
+ };
272
+ var hideColumn = function hideColumn(columnKey) {
273
+ updateColumns(existingColumnConfiguration.map(function (column) {
274
+ return column.key === columnKey ? _objectSpread$2(_objectSpread$2({}, column), {}, {
275
+ isShown: false
276
+ }) : column;
277
+ }));
278
+ };
279
+ var showColumn = function showColumn(columnKey) {
280
+ updateColumns(existingColumnConfiguration.map(function (column) {
281
+ return column.key === columnKey ? _objectSpread$2(_objectSpread$2({}, column), {}, {
282
+ isShown: true
283
+ }) : column;
284
+ }));
285
+ };
286
+ var reorderColumns = function reorderColumns(newOrder) {
287
+ updateColumns(newOrder);
288
+ };
289
+ return {
290
+ customizedColumns: customizedColumns,
291
+ // Only visible columns (for displaying the columns in the table)
292
+ allProcessedColumns: allProcessedColumns,
293
+ // All columns (for displaying the columns in the Subheader)
294
+ isTableConfigurationLoading: isLoading,
295
+ existingColumnConfiguration: existingColumnConfiguration,
296
+ hideColumn: hideColumn,
297
+ showColumn: showColumn,
298
+ reorderColumns: reorderColumns,
299
+ destroyConfiguration: destroyConfiguration
300
+ };
301
+ };
302
+
303
+ var getHidableColumns = function getHidableColumns(columnData) {
304
+ return removeBy({
305
+ isHidable: false
306
+ }, columnData);
307
+ };
308
+ var filterBySearchTerm = function filterBySearchTerm(searchTerm, columns) {
309
+ return filter(function (_ref) {
310
+ var title = _ref.title;
311
+ return includes(trim(toLower(searchTerm)), trim(toLower(title)));
312
+ }, columns);
313
+ };
314
+ var removeDeletedColumns = function removeDeletedColumns(hiddenColumns, columnData) {
315
+ return hiddenColumns.filter(function (hiddenColumn) {
316
+ return existsBy({
317
+ dataIndex: hiddenColumn
318
+ }, columnData);
319
+ });
320
+ };
321
+
322
+ var _excluded$1 = ["actionBlock", "checkboxProps", "columnData", "isSearchable", "tableKey", "noColumnMessage", "searchProps"];
323
+ function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
324
+ function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
325
+ var Columns = function Columns(_ref) {
326
+ var actionBlock = _ref.actionBlock,
327
+ _ref$checkboxProps = _ref.checkboxProps,
328
+ checkboxProps = _ref$checkboxProps === void 0 ? {} : _ref$checkboxProps,
329
+ _ref$columnData = _ref.columnData,
330
+ columnData = _ref$columnData === void 0 ? [] : _ref$columnData,
331
+ _ref$isSearchable = _ref.isSearchable,
332
+ isSearchable = _ref$isSearchable === void 0 ? false : _ref$isSearchable,
333
+ _ref$tableKey = _ref.tableKey,
334
+ tableKey = _ref$tableKey === void 0 ? "" : _ref$tableKey,
335
+ _ref$noColumnMessage = _ref.noColumnMessage,
336
+ noColumnMessage = _ref$noColumnMessage === void 0 ? i18next.t("neetoMolecules.columns.noColumns") : _ref$noColumnMessage,
337
+ _ref$searchProps = _ref.searchProps,
338
+ searchProps = _ref$searchProps === void 0 ? {} : _ref$searchProps,
339
+ dropdownProps = _objectWithoutProperties(_ref, _excluded$1);
340
+ var Divider = Dropdown.Divider,
341
+ Menu = Dropdown.Menu,
342
+ MenuItem = Dropdown.MenuItem;
343
+ var _useState = useState(""),
344
+ _useState2 = _slicedToArray(_useState, 2),
345
+ searchTerm = _useState2[0],
346
+ setSearchTerm = _useState2[1];
347
+ var _useTranslation = useTranslation(),
348
+ t = _useTranslation.t;
349
+ var _useTableConfiguratio = useTableConfigurations(tableKey, columnData),
350
+ allProcessedColumns = _useTableConfiguratio.allProcessedColumns,
351
+ existingColumnConfiguration = _useTableConfiguratio.existingColumnConfiguration,
352
+ hideColumn = _useTableConfiguratio.hideColumn,
353
+ showColumn = _useTableConfiguratio.showColumn,
354
+ reorderColumns = _useTableConfiguratio.reorderColumns,
355
+ destroyConfiguration = _useTableConfiguratio.destroyConfiguration;
356
+ var hiddenColumns = pluck("key", existingColumnConfiguration.filter(function (column) {
357
+ return !column.isShown;
358
+ }));
359
+ var handleDragEnd = function handleDragEnd(event) {
360
+ var active = event.active,
361
+ over = event.over;
362
+ if (!over || active.id === over.id) return;
363
+ var oldIndex = findIndexBy({
364
+ key: active.id
365
+ }, existingColumnConfiguration);
366
+ var newIndex = findIndexBy({
367
+ key: over.id
368
+ }, existingColumnConfiguration);
369
+ if (oldIndex === -1 || newIndex === -1) return;
370
+ var newOrder = _toConsumableArray(existingColumnConfiguration);
371
+ var _newOrder$splice = newOrder.splice(oldIndex, 1),
372
+ _newOrder$splice2 = _slicedToArray(_newOrder$splice, 1),
373
+ movedItem = _newOrder$splice2[0];
374
+ newOrder.splice(newIndex, 0, movedItem);
375
+ reorderColumns(newOrder);
376
+ };
377
+ var columns = getHidableColumns(allProcessedColumns);
378
+ var filteredColumns = filterBySearchTerm(searchTerm, columns);
379
+ var handleChange = function handleChange(_ref2) {
380
+ var _ref2$target = _ref2.target,
381
+ dataIndex = _ref2$target.name,
382
+ checked = _ref2$target.checked;
383
+ if (checked) showColumn(dataIndex);else hideColumn(dataIndex);
384
+ };
385
+ var handleSearch = function handleSearch(_ref3) {
386
+ var value = _ref3.target.value;
387
+ return setSearchTerm(value);
388
+ };
389
+ return /*#__PURE__*/jsx(Dropdown, _objectSpread$1(_objectSpread$1({
390
+ appendTo: document.body,
391
+ buttonSize: "medium",
392
+ buttonStyle: "text",
393
+ closeOnSelect: false,
394
+ position: "bottom-end",
395
+ onClose: function onClose() {
396
+ return setSearchTerm("");
397
+ }
398
+ }, dropdownProps), {}, {
399
+ children: /*#__PURE__*/jsx(Menu, {
400
+ children: /*#__PURE__*/jsxs("div", {
401
+ className: "neeto-molecules-columns__container",
402
+ children: [isSearchable && /*#__PURE__*/jsx(Input, _objectSpread$1({
403
+ className: "px-4 py-2",
404
+ "data-cy": "neeto-ui-columns-search",
405
+ "data-testid": "neeto-ui-columns-search",
406
+ placeholder: t("neetoMolecules.columns.search"),
407
+ prefix: /*#__PURE__*/jsx(Search, {}),
408
+ type: "search",
409
+ value: searchTerm,
410
+ onChange: handleSearch
411
+ }, searchProps)), isEmpty(filteredColumns) && /*#__PURE__*/jsx("span", {
412
+ className: "neeto-ui-flex neeto-ui-flex-col neeto-ui-items-center neeto-ui-p-2",
413
+ children: noColumnMessage
414
+ }), isNotEmpty(filteredColumns) && !searchTerm && /*#__PURE__*/jsx(DndContext, {
415
+ onDragEnd: handleDragEnd,
416
+ children: /*#__PURE__*/jsx(SortableContext, {
417
+ items: pluck("key", filteredColumns),
418
+ children: filteredColumns.map(function (column) {
419
+ return /*#__PURE__*/createElement(Item, {
420
+ checkboxProps: checkboxProps,
421
+ column: column,
422
+ hiddenColumns: hiddenColumns,
423
+ key: column.key,
424
+ onToggle: handleChange
425
+ });
426
+ })
427
+ })
428
+ }), isNotEmpty(filteredColumns) && searchTerm && filteredColumns.map(function (_ref4) {
429
+ var key = _ref4.key,
430
+ title = _ref4.title;
431
+ return /*#__PURE__*/jsx(MenuItem, {
432
+ children: /*#__PURE__*/jsx(Label, {
433
+ className: "neeto-ui-flex neeto-ui-w-full hover:neeto-ui-bg-gray-200 neeto-ui-cursor-pointer px-4 py-2",
434
+ htmlFor: key,
435
+ children: /*#__PURE__*/jsx(Checkbox, _objectSpread$1({
436
+ checked: !hiddenColumns.includes(key),
437
+ "data-cy": "neeto-ui-columns-checkbox",
438
+ id: key,
439
+ label: title,
440
+ name: key,
441
+ onChange: handleChange
442
+ }, checkboxProps))
443
+ })
444
+ }, key);
445
+ }), /*#__PURE__*/jsx(Divider, {}), !!actionBlock && /*#__PURE__*/jsxs(Fragment, {
446
+ children: [actionBlock, /*#__PURE__*/jsx(Divider, {})]
447
+ }), /*#__PURE__*/jsx("div", {
448
+ className: "flex justify-end p-1 pr-3",
449
+ children: /*#__PURE__*/jsx(Button, {
450
+ "data-cy": "column-visibility-reset-button",
451
+ label: t("neetoMolecules.columns.reset"),
452
+ style: "secondary",
453
+ onClick: function onClick() {
454
+ return destroyConfiguration(tableKey);
455
+ }
456
+ })
457
+ })]
458
+ })
459
+ })
460
+ }));
461
+ };
462
+ Columns.displayName = "Columns";
463
+
464
+ /** @type {import("neetocommons/react-utils").ZustandStoreHook} */
465
+ var useHiddenColumnStore = create$1(persist(function () {
466
+ return {};
467
+ }, {
468
+ name: HIDDEN_COLUMNS_STORAGE_KEY
469
+ }));
470
+ var useHiddenColumns = function useHiddenColumns(localStorageKey) {
471
+ var initialValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
472
+ var hiddenColumns = useHiddenColumnStore(function (state) {
473
+ return state[localStorageKey];
474
+ });
475
+ var setHiddenColumns = function setHiddenColumns(columns) {
476
+ return useHiddenColumnStore.setState(_defineProperty({}, localStorageKey, columns));
477
+ };
478
+
479
+ // Migrates values from old location to new zustand location.
480
+ useEffect(function () {
481
+ var oldValue = getFromLocalStorage(localStorageKey);
482
+ if (oldValue) {
483
+ setHiddenColumns(oldValue);
484
+ removeFromLocalStorage(localStorageKey);
485
+ } else if (!hiddenColumns) {
486
+ setHiddenColumns(initialValue);
487
+ }
488
+ }, [localStorageKey]);
489
+ var hideColumn = function hideColumn(columns) {
490
+ return setHiddenColumns(union(hiddenColumns, Array.isArray(columns) ? columns : [columns]));
491
+ };
492
+ var showColumn = function showColumn(columns) {
493
+ return setHiddenColumns(without(Array.isArray(columns) ? columns : [columns], hiddenColumns));
494
+ };
495
+ var getVisibleColumnData = function getVisibleColumnData(columnData) {
496
+ return removeBy({
497
+ dataIndex: includes(__, hiddenColumns || [])
498
+ }, columnData);
499
+ };
500
+ var onColumnDataChange = function onColumnDataChange(columnData) {
501
+ if (isEmpty(columnData) || !hiddenColumns) return;
502
+ var newHiddenColumns = removeDeletedColumns(hiddenColumns, columnData);
503
+ if (!equals(newHiddenColumns, hiddenColumns)) {
504
+ setHiddenColumns(newHiddenColumns);
505
+ }
506
+ };
507
+ return {
508
+ hiddenColumns: hiddenColumns,
509
+ hideColumn: hideColumn,
510
+ showColumn: showColumn,
511
+ getVisibleColumnData: getVisibleColumnData,
512
+ onColumnDataChange: onColumnDataChange
513
+ };
514
+ };
515
+
516
+ var _excluded = ["hiddenColumns", "getVisibleColumnData"];
517
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
518
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
519
+
520
+ /** @type {import("neetocommons/react-utils").ZustandStoreHook} */
521
+ var useColumnOrderStore = create$1(persist(function () {
522
+ return {};
523
+ }, {
524
+ name: COLUMNS_ORDER_STORAGE_KEY
525
+ }));
526
+ var useColumns = function useColumns(_ref) {
527
+ var localStorageKey = _ref.localStorageKey,
528
+ initialHiddenColumns = _ref.initialHiddenColumns,
529
+ _ref$initialOrder = _ref.initialOrder,
530
+ initialOrder = _ref$initialOrder === void 0 ? [] : _ref$initialOrder;
531
+ var columnOrder = useColumnOrderStore(function (state) {
532
+ return state[localStorageKey];
533
+ }) || initialOrder;
534
+ var setColumnOrder = function setColumnOrder(columns) {
535
+ return useColumnOrderStore.setState(_defineProperty({}, localStorageKey, columns));
536
+ };
537
+ var _useHiddenColumns = useHiddenColumns(localStorageKey, initialHiddenColumns),
538
+ hiddenColumns = _useHiddenColumns.hiddenColumns,
539
+ getVisibleColumnData = _useHiddenColumns.getVisibleColumnData,
540
+ hiddenColumnHelpers = _objectWithoutProperties(_useHiddenColumns, _excluded);
541
+ var orderColumns = function orderColumns(columnData) {
542
+ if (isEmpty(columnOrder)) return columnData;
543
+ return columnData.sort(function (a, b) {
544
+ if (!columnOrder.includes(a.dataIndex) || !columnOrder.includes(b.dataIndex)) {
545
+ return 0;
546
+ }
547
+ return columnOrder.indexOf(a.dataIndex) - columnOrder.indexOf(b.dataIndex);
548
+ });
549
+ };
550
+ var getColumnData = function getColumnData(_ref2) {
551
+ var columnData = _ref2.columnData,
552
+ _ref2$isHidable = _ref2.isHidable,
553
+ isHidable = _ref2$isHidable === void 0 ? true : _ref2$isHidable,
554
+ _ref2$isReOrderable = _ref2.isReOrderable,
555
+ isReOrderable = _ref2$isReOrderable === void 0 ? false : _ref2$isReOrderable;
556
+ return pipe(isHidable ? getVisibleColumnData : identity, isReOrderable ? orderColumns : identity)(columnData);
557
+ };
558
+ return _objectSpread(_objectSpread({}, hiddenColumnHelpers), {}, {
559
+ hiddenColumns: hiddenColumns,
560
+ columnOrder: columnOrder,
561
+ getVisibleColumnData: getVisibleColumnData,
562
+ setColumnOrder: setColumnOrder,
563
+ getColumnData: getColumnData
564
+ });
565
+ };
566
+
567
+ export { Columns as C, HIDDEN_COLUMNS_STORAGE_KEY as H, TABLE_CONFIGURATION_QUERY_KEY as T, useHiddenColumns as a, useHiddenColumnStore as b, COLUMNS_ORDER_STORAGE_KEY as c, useColumns as d, useColumnOrderStore as e, useTableConfigurations as u };
568
+ //# sourceMappingURL=useColumns-ZmJggX3n.js.map