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