@bigbinary/neeto-molecules 4.1.70 → 4.1.72

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.
@@ -6,6 +6,7 @@ import { useCallback, useMemo, useEffect, useState, createElement } from 'react'
6
6
  import { Label, Checkbox, Button, Input } from '@bigbinary/neeto-atoms';
7
7
  import { Popover, PopoverTrigger, PopoverContent, Separator } from '@bigbinary/neeto-atoms/primitives';
8
8
  import { DndContext, closestCenter } from '@dnd-kit/core';
9
+ import { restrictToVerticalAxis, restrictToFirstScrollableAncestor } from '@dnd-kit/modifiers';
9
10
  import { useSortable, SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable';
10
11
  import i18next from 'i18next';
11
12
  import { isNotEqualDeep, isNotEmpty, noop, removeBy, findIndexBy } from '@bigbinary/neeto-cist';
@@ -62,7 +63,7 @@ var Item = function Item(_ref) {
62
63
  over = _useSortable.over,
63
64
  active = _useSortable.active;
64
65
  var dragStyle = {
65
- transform: isDragging ? CSS.Transform.toString(transform) : undefined,
66
+ transform: CSS.Transform.toString(transform),
66
67
  transition: transition,
67
68
  opacity: isDragging ? 0.5 : 1
68
69
  };
@@ -81,7 +82,7 @@ var Item = function Item(_ref) {
81
82
  ref: setNodeRef,
82
83
  style: dragStyle,
83
84
  children: [/*#__PURE__*/jsx("div", _objectSpread$3(_objectSpread$3(_objectSpread$3({}, attributes), listeners), {}, {
84
- className: "absolute top-1/2 left-0.5 flex -translate-y-1/2 cursor-grab items-center active:cursor-grabbing",
85
+ className: "absolute inset-y-0 left-0 z-10 flex w-5 cursor-grab items-center justify-center active:cursor-grabbing",
85
86
  "data-testid": "column-drag-handle",
86
87
  children: /*#__PURE__*/jsx(GripVertical, {
87
88
  className: "text-muted-foreground/50 hover:text-foreground transition-all duration-300 ease-in-out",
@@ -332,7 +333,9 @@ var Columns = function Columns(_ref) {
332
333
  _ref$defaultHiddenCol = _ref.defaultHiddenColumns,
333
334
  defaultHiddenColumns = _ref$defaultHiddenCol === void 0 ? [] : _ref$defaultHiddenCol,
334
335
  _ref$buttonProps = _ref.buttonProps,
335
- buttonProps = _ref$buttonProps === void 0 ? {} : _ref$buttonProps;
336
+ buttonProps = _ref$buttonProps === void 0 ? {} : _ref$buttonProps,
337
+ _ref$onOpenChange = _ref.onOpenChange,
338
+ _onOpenChange = _ref$onOpenChange === void 0 ? noop : _ref$onOpenChange;
336
339
  var _useState = useState(""),
337
340
  _useState2 = _slicedToArray(_useState, 2),
338
341
  searchTerm = _useState2[0],
@@ -382,9 +385,9 @@ var Columns = function Columns(_ref) {
382
385
  };
383
386
  var handleChange = function handleChange(_ref2) {
384
387
  var _ref2$target = _ref2.target,
385
- dataIndex = _ref2$target.name,
388
+ columnId = _ref2$target.name,
386
389
  checked = _ref2$target.checked;
387
- if (checked) showColumn(dataIndex);else hideColumn(dataIndex);
390
+ if (checked) showColumn(columnId);else hideColumn(columnId);
388
391
  };
389
392
  var handleSearch = function handleSearch(_ref3) {
390
393
  var value = _ref3.target.value;
@@ -399,6 +402,7 @@ var Columns = function Columns(_ref) {
399
402
  open: open,
400
403
  onOpenChange: function onOpenChange(isOpen) {
401
404
  setOpen(isOpen);
405
+ _onOpenChange(isOpen);
402
406
  if (!isOpen) setSearchTerm("");
403
407
  },
404
408
  children: [/*#__PURE__*/jsx(PopoverTrigger, {
@@ -412,86 +416,89 @@ var Columns = function Columns(_ref) {
412
416
  }, restButtonProps))
413
417
  }), /*#__PURE__*/jsx(PopoverContent, {
414
418
  align: "end",
415
- className: "max-h-[calc(100dvh-200px)] w-80 max-w-[31.25rem] overflow-y-auto p-0",
416
- onOpenAutoFocus: function onOpenAutoFocus(e) {
417
- return e.preventDefault();
418
- },
419
+ className: "flex max-h-[calc(100dvh-200px)] w-80 max-w-[31.25rem] flex-col p-0",
419
420
  children: /*#__PURE__*/jsxs("div", {
421
+ className: "flex min-h-0 flex-1 flex-col",
420
422
  "data-testid": "customize-columns-dropdown-container",
421
- children: [isSearchable && /*#__PURE__*/jsxs("div", {
422
- className: "relative p-3",
423
- children: [/*#__PURE__*/jsx(Search, {
424
- className: "text-muted-foreground pointer-events-none absolute top-1/2 left-6 size-4 -translate-y-1/2"
425
- }), /*#__PURE__*/jsx(Input, _objectSpread({
426
- className: "pl-9",
423
+ children: [isSearchable && /*#__PURE__*/jsx("div", {
424
+ className: "relative shrink-0 p-3",
425
+ children: /*#__PURE__*/jsx(Input, _objectSpread({
427
426
  "data-testid": "neeto-ui-columns-search",
428
427
  placeholder: t("neetoMolecules.columns.search"),
428
+ prefix: /*#__PURE__*/jsx(Search, {}),
429
429
  type: "search",
430
430
  value: searchTerm,
431
431
  onChange: handleSearch
432
- }, searchProps))]
433
- }), isEmpty(filteredColumns) && /*#__PURE__*/jsx("span", {
434
- className: "flex flex-col items-center p-2",
435
- children: noColumnMessage
436
- }), isNotEmpty(filteredColumns) && !searchTerm && /*#__PURE__*/jsx(DndContext, {
437
- collisionDetection: closestCenter,
438
- onDragEnd: handleDragEnd,
439
- children: /*#__PURE__*/jsx(SortableContext, {
440
- items: pluck("id", filteredColumns),
441
- strategy: verticalListSortingStrategy,
442
- children: filteredColumns.map(function (column) {
443
- return /*#__PURE__*/createElement(Item, {
444
- checkboxProps: checkboxProps,
445
- column: column,
446
- hiddenColumns: hiddenColumns,
447
- isTableConfigurationFetching: isTableConfigurationFetching,
448
- key: column.id,
449
- onToggle: handleChange
450
- });
451
- })
452
- })
453
- }), isNotEmpty(filteredColumns) && searchTerm && filteredColumns.map(function (_ref4) {
454
- var id = _ref4.id,
455
- header = _ref4.header;
456
- return /*#__PURE__*/jsxs(Label, {
457
- className: "hover:bg-accent flex w-full cursor-pointer items-center px-5 py-2",
458
- htmlFor: id,
459
- children: [/*#__PURE__*/jsx(Checkbox, _objectSpread({
460
- id: id,
461
- checked: !hiddenColumns.includes(id),
462
- "data-testid": "neeto-ui-columns-checkbox",
463
- name: id,
464
- onCheckedChange: function onCheckedChange(checked) {
465
- handleChange({
466
- target: {
467
- name: id,
468
- checked: checked
469
- }
432
+ }, searchProps))
433
+ }), /*#__PURE__*/jsxs("div", {
434
+ className: "min-h-0 flex-1 overflow-x-hidden overflow-y-auto",
435
+ children: [isEmpty(filteredColumns) && /*#__PURE__*/jsx("span", {
436
+ className: "flex flex-col items-center p-2",
437
+ children: noColumnMessage
438
+ }), isNotEmpty(filteredColumns) && !searchTerm && /*#__PURE__*/jsx(DndContext, {
439
+ collisionDetection: closestCenter,
440
+ modifiers: [restrictToVerticalAxis, restrictToFirstScrollableAncestor],
441
+ onDragEnd: handleDragEnd,
442
+ children: /*#__PURE__*/jsx(SortableContext, {
443
+ items: pluck("id", filteredColumns),
444
+ strategy: verticalListSortingStrategy,
445
+ children: filteredColumns.map(function (column) {
446
+ return /*#__PURE__*/createElement(Item, {
447
+ checkboxProps: checkboxProps,
448
+ column: column,
449
+ hiddenColumns: hiddenColumns,
450
+ isTableConfigurationFetching: isTableConfigurationFetching,
451
+ key: column.id,
452
+ onToggle: handleChange
470
453
  });
471
- }
472
- }, checkboxProps)), /*#__PURE__*/jsx("span", {
473
- className: "ml-2 text-sm",
474
- children: header
475
- })]
476
- }, id);
477
- }), /*#__PURE__*/jsx(Separator, {}), !!actionBlock && /*#__PURE__*/jsxs(Fragment, {
478
- children: [actionBlock, /*#__PURE__*/jsx(Separator, {})]
454
+ })
455
+ })
456
+ }), isNotEmpty(filteredColumns) && searchTerm && filteredColumns.map(function (_ref4) {
457
+ var id = _ref4.id,
458
+ header = _ref4.header;
459
+ return /*#__PURE__*/jsxs(Label, {
460
+ className: "hover:bg-accent flex w-full cursor-pointer items-center px-5 py-2",
461
+ htmlFor: id,
462
+ children: [/*#__PURE__*/jsx(Checkbox, _objectSpread({
463
+ id: id,
464
+ checked: !hiddenColumns.includes(id),
465
+ "data-testid": "neeto-ui-columns-checkbox",
466
+ name: id,
467
+ onCheckedChange: function onCheckedChange(checked) {
468
+ handleChange({
469
+ target: {
470
+ name: id,
471
+ checked: checked
472
+ }
473
+ });
474
+ }
475
+ }, checkboxProps)), /*#__PURE__*/jsx("span", {
476
+ className: "ml-2 text-sm",
477
+ children: header
478
+ })]
479
+ }, id);
480
+ })]
479
481
  }), /*#__PURE__*/jsxs("div", {
480
- className: "flex justify-end gap-2 px-3 py-2",
481
- children: [/*#__PURE__*/jsx(Button, {
482
- "data-testid": "column-visibility-hide-all-button",
483
- size: "sm",
484
- variant: "ghost",
485
- onClick: handleHideAllColumns,
486
- children: t("neetoMolecules.columns.hideAll")
487
- }), /*#__PURE__*/jsx(Button, {
488
- "data-testid": "column-visibility-reset-button",
489
- size: "sm",
490
- variant: "outline",
491
- onClick: function onClick() {
492
- return destroyConfiguration(tableKey);
493
- },
494
- children: t("neetoMolecules.columns.reset")
482
+ className: "shrink-0",
483
+ children: [/*#__PURE__*/jsx(Separator, {}), !!actionBlock && /*#__PURE__*/jsxs(Fragment, {
484
+ children: [actionBlock, /*#__PURE__*/jsx(Separator, {})]
485
+ }), /*#__PURE__*/jsxs("div", {
486
+ className: "flex justify-end gap-2 px-3 py-2",
487
+ children: [/*#__PURE__*/jsx(Button, {
488
+ "data-testid": "column-visibility-hide-all-button",
489
+ size: "sm",
490
+ variant: "ghost",
491
+ onClick: handleHideAllColumns,
492
+ children: t("neetoMolecules.columns.hideAll")
493
+ }), /*#__PURE__*/jsx(Button, {
494
+ "data-testid": "column-visibility-reset-button",
495
+ size: "sm",
496
+ variant: "outline",
497
+ onClick: function onClick() {
498
+ return destroyConfiguration(tableKey);
499
+ },
500
+ children: t("neetoMolecules.columns.reset")
501
+ })]
495
502
  })]
496
503
  })]
497
504
  })
@@ -501,4 +508,4 @@ var Columns = function Columns(_ref) {
501
508
  Columns.displayName = "Columns";
502
509
 
503
510
  export { COLUMNS_ORDER_STORAGE_KEY as C, HIDDEN_COLUMNS_STORAGE_KEY as H, TABLE_CONFIGURATION_QUERY_KEY as T, Columns as a, useTableConfigurations as u };
504
- //# sourceMappingURL=Columns-lnb4eO0H.js.map
511
+ //# sourceMappingURL=Columns-DpeV3Jzz.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Columns-DpeV3Jzz.js","sources":["../node_modules/lucide-react/dist/esm/icons/grip-vertical.js","../src/v2/components/Columns/Item.jsx","../src/v2/components/Columns/api.js","../src/v2/components/Columns/constants.js","../src/v2/components/Columns/useTableConfigurationsApi.js","../src/v2/components/Columns/useTableConfigurations.js","../src/v2/components/Columns/utils.js","../src/v2/components/Columns/Columns.jsx"],"sourcesContent":["/**\n * @license lucide-react v1.7.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"9\", cy: \"12\", r: \"1\", key: \"1vctgf\" }],\n [\"circle\", { cx: \"9\", cy: \"5\", r: \"1\", key: \"hp0tcf\" }],\n [\"circle\", { cx: \"9\", cy: \"19\", r: \"1\", key: \"fkjjf6\" }],\n [\"circle\", { cx: \"15\", cy: \"12\", r: \"1\", key: \"1tmaij\" }],\n [\"circle\", { cx: \"15\", cy: \"5\", r: \"1\", key: \"19l28e\" }],\n [\"circle\", { cx: \"15\", cy: \"19\", r: \"1\", key: \"f4zoj3\" }]\n];\nconst GripVertical = createLucideIcon(\"grip-vertical\", __iconNode);\n\nexport { __iconNode, GripVertical as default };\n//# sourceMappingURL=grip-vertical.js.map\n","import { Checkbox, Label } from \"@bigbinary/neeto-atoms\";\nimport { useSortable } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport classNames from \"classnames\";\nimport { GripVertical } from \"lucide-react\";\n\nconst Item = ({\n column,\n hiddenColumns,\n checkboxProps,\n onToggle,\n isTableConfigurationFetching,\n}) => {\n const { id, header } = column;\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n isOver,\n over,\n active,\n } = useSortable({ id });\n\n const dragStyle = {\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isDragging ? 0.5 : 1,\n };\n\n const isIndicatorVisible = !isDragging && isOver;\n const draggedIndex = active?.data?.current?.sortable?.index;\n const targetIndex = over?.data?.current?.sortable?.index;\n\n const isChecked = !hiddenColumns.includes(id);\n\n return (\n <div>\n <div\n className={classNames({\n \"bg-muted h-1 w-full\":\n isIndicatorVisible && targetIndex < draggedIndex,\n })}\n />\n <div\n className=\"hover:bg-accent relative flex items-center px-5 py-2\"\n data-testid=\"column-sortable-item\"\n ref={setNodeRef}\n style={dragStyle}\n >\n <div\n {...attributes}\n {...listeners}\n className=\"absolute inset-y-0 left-0 z-10 flex w-5 cursor-grab items-center justify-center active:cursor-grabbing\"\n data-testid=\"column-drag-handle\"\n >\n <GripVertical\n className=\"text-muted-foreground/50 hover:text-foreground transition-all duration-300 ease-in-out\"\n size={16}\n />\n </div>\n <Label className=\"flex w-full cursor-pointer items-center\" htmlFor={id}>\n <Checkbox\n {...{ id }}\n checked={isChecked}\n data-testid=\"neeto-ui-columns-checkbox\"\n disabled={isTableConfigurationFetching}\n name={id}\n onCheckedChange={checked => {\n onToggle({ target: { name: id, checked } });\n }}\n {...checkboxProps}\n />\n <span className=\"ml-2 text-sm\">{header}</span>\n </Label>\n </div>\n <div\n className={classNames({\n \"bg-muted h-1 w-full\":\n isIndicatorVisible && targetIndex > draggedIndex,\n })}\n />\n </div>\n );\n};\n\nexport default Item;\n","import axios from \"axios\";\n\nconst baseUrl = \"api/v1/table_configurations\";\n\nconst fetch = tableKey => axios.get(`${baseUrl}/${tableKey}`);\n\nconst create = payload => axios.post(baseUrl, { tableConfiguration: payload });\n\nconst update = ({ tableKey, payload }) =>\n axios.patch(`${baseUrl}/${tableKey}`, { tableConfiguration: payload });\n\nconst destroy = tableKey => axios.delete(`${baseUrl}/${tableKey}`);\n\nconst tableConfigurationApi = { fetch, create, update, destroy };\n\nexport default tableConfigurationApi;\n","export const HIDDEN_COLUMNS_STORAGE_KEY = \"neeto-molecules-hidden-columns\";\nexport const COLUMNS_ORDER_STORAGE_KEY = \"neeto-molecules-columns-order\";\nexport const TABLE_CONFIGURATION_QUERY_KEY = \"table-configuration\";\n","import { useQuery } from \"@tanstack/react-query\";\nimport useMutationWithInvalidation from \"neetocommons/react-utils/useMutationWithInvalidation\";\n\nimport tableConfigurationApi from \"./api\";\nimport { TABLE_CONFIGURATION_QUERY_KEY } from \"./constants.js\";\n\nconst useFetchTableConfiguration = ({ tableKey, options = {} }) =>\n useQuery({\n queryKey: [TABLE_CONFIGURATION_QUERY_KEY, tableKey],\n enabled: !!tableKey,\n queryFn: () => tableConfigurationApi.fetch(tableKey),\n ...options,\n });\n\nconst useUpdateTableConfiguration = (tableKey, options = {}) =>\n useMutationWithInvalidation(tableConfigurationApi.update, {\n keysToInvalidate: [[TABLE_CONFIGURATION_QUERY_KEY, tableKey]],\n ...options,\n });\n\nconst useDestroyTableConfiguration = (tableKey, options = {}) =>\n useMutationWithInvalidation(tableConfigurationApi.destroy, {\n keysToInvalidate: [[TABLE_CONFIGURATION_QUERY_KEY, tableKey]],\n ...options,\n });\n\nexport {\n useFetchTableConfiguration,\n useUpdateTableConfiguration,\n useDestroyTableConfiguration,\n};\n","import { useEffect, useMemo, useCallback } from \"react\";\n\nimport { isNotEqualDeep, isNotEmpty, noop } from \"neetocist\";\nimport { isEmpty, pluck, prop } from \"ramda\";\n\nimport {\n useFetchTableConfiguration,\n useUpdateTableConfiguration,\n useDestroyTableConfiguration,\n} from \"./useTableConfigurationsApi.js\";\n\nconst useTableConfigurations = (\n tableKey,\n columnData,\n onMutationSuccess = noop,\n allowConfigurationResetOnUpdate = true,\n defaultHiddenColumns = []\n) => {\n const {\n data: tableConfiguration,\n isLoading,\n isFetching,\n } = useFetchTableConfiguration({ tableKey });\n\n const { mutate: updateConfiguration } = useUpdateTableConfiguration(\n tableKey,\n { onSuccess: onMutationSuccess }\n );\n\n const { mutate: destroyConfiguration } = useDestroyTableConfiguration(\n tableKey,\n { onSuccess: onMutationSuccess }\n );\n\n const processColumnsWithConfiguration = useCallback(\n (originalColumns = [], existingColumnConfiguration = []) => {\n if (isEmpty(existingColumnConfiguration)) {\n return originalColumns;\n }\n\n const originalColumnsById = new Map(\n originalColumns?.filter(prop(\"id\")).map(column => [column.id, column])\n );\n\n const configurationByKey = new Map(\n existingColumnConfiguration.map(config => [config.key, config])\n );\n\n const orderedConfiguredColumns = existingColumnConfiguration\n .map(config => originalColumnsById.get(config.key))\n .filter(Boolean);\n\n const unconfiguredOriginalColumns = originalColumns.filter(\n column => column.id && !configurationByKey.has(column.id)\n );\n\n return [...orderedConfiguredColumns, ...unconfiguredOriginalColumns];\n },\n []\n );\n\n const hasAdditionalColumns = useMemo(() => {\n if (!tableConfiguration?.columns || !columnData) {\n return false;\n }\n\n const configurationKeys = pluck(\"key\", tableConfiguration.columns).sort();\n const dataKeys = columnData.map(col => col.id).sort();\n\n return isNotEqualDeep(configurationKeys, dataKeys);\n }, [tableConfiguration, columnData]);\n\n const shouldApplyTableConfiguration = useMemo(\n () =>\n !isLoading &&\n tableConfiguration?.columns &&\n isNotEmpty(tableConfiguration?.columns) &&\n !hasAdditionalColumns,\n [tableConfiguration, isLoading, hasAdditionalColumns]\n );\n\n useEffect(() => {\n if (\n hasAdditionalColumns &&\n tableConfiguration &&\n allowConfigurationResetOnUpdate\n ) {\n destroyConfiguration(tableKey);\n }\n }, [hasAdditionalColumns, tableKey, allowConfigurationResetOnUpdate]);\n\n const allProcessedColumns = useMemo(() => {\n if (\n !isLoading &&\n isNotEmpty(tableConfiguration?.columns) &&\n !hasAdditionalColumns\n ) {\n return processColumnsWithConfiguration(\n columnData,\n tableConfiguration?.columns\n );\n }\n\n return columnData || [];\n }, [\n isLoading,\n tableConfiguration?.columns,\n hasAdditionalColumns,\n columnData,\n processColumnsWithConfiguration,\n ]);\n\n const existingColumnConfiguration = useMemo(() => {\n if (shouldApplyTableConfiguration) {\n return tableConfiguration.columns;\n }\n\n if (!columnData || isEmpty(columnData)) {\n return [];\n }\n\n return columnData.map(column => ({\n key: column.id,\n isShown: !defaultHiddenColumns.includes(column.id),\n }));\n }, [\n shouldApplyTableConfiguration,\n columnData,\n tableConfiguration?.columns,\n defaultHiddenColumns,\n ]);\n\n const customizedColumns = useMemo(() => {\n const visibleColumnsConfig = existingColumnConfiguration.filter(\n prop(\"isShown\")\n );\n const visibleColumnKeys = pluck(\"key\", visibleColumnsConfig);\n\n return allProcessedColumns.filter(column =>\n visibleColumnKeys.includes(column.id)\n );\n }, [allProcessedColumns, existingColumnConfiguration]);\n\n const updateColumns = updatedColumns => {\n updateConfiguration({\n tableKey,\n payload: { table_key: tableKey, columns: updatedColumns },\n });\n };\n\n const hideColumn = columnKey => {\n updateColumns(\n existingColumnConfiguration.map(column =>\n column.key === columnKey ? { ...column, isShown: false } : column\n )\n );\n };\n\n const showColumn = columnKey => {\n updateColumns(\n existingColumnConfiguration.map(column =>\n column.key === columnKey ? { ...column, isShown: true } : column\n )\n );\n };\n\n return {\n customizedColumns,\n allProcessedColumns,\n isTableConfigurationLoading: isLoading,\n isTableConfigurationFetching: isFetching,\n existingColumnConfiguration,\n hideColumn,\n showColumn,\n updateColumns,\n destroyConfiguration,\n };\n};\n\nexport default useTableConfigurations;\n","import { existsBy, removeBy } from \"neetocist\";\nimport { filter, includes, toLower, trim } from \"ramda\";\n\nexport const getHidableColumns = columnData =>\n removeBy({ enableHiding: false }, columnData);\n\nexport const filterBySearchTerm = (searchTerm, columns) =>\n filter(\n ({ header = \"\" }) =>\n includes(trim(toLower(searchTerm)), trim(toLower(header))),\n columns\n );\n\nexport const removeDeletedColumns = (hiddenColumns, columnData) =>\n hiddenColumns.filter(hiddenColumn =>\n existsBy({ id: hiddenColumn }, columnData)\n );\n","import { useState } from \"react\";\n\nimport { Button, Checkbox, Input, Label } from \"@bigbinary/neeto-atoms\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n Separator,\n} from \"@bigbinary/neeto-atoms/primitives\";\nimport { DndContext, closestCenter } from \"@dnd-kit/core\";\nimport {\n restrictToFirstScrollableAncestor,\n restrictToVerticalAxis,\n} from \"@dnd-kit/modifiers\";\nimport {\n SortableContext,\n verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\";\nimport i18next from \"i18next\";\nimport { Search } from \"lucide-react\";\nimport { isNotEmpty, findIndexBy, noop } from \"neetocist\";\nimport PropTypes from \"prop-types\";\nimport { assoc, isEmpty, pluck, includes } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport Item from \"./Item\";\nimport useTableConfigurations from \"./useTableConfigurations.js\";\nimport { filterBySearchTerm, getHidableColumns } from \"./utils.js\";\n\nconst Columns = ({\n actionBlock,\n checkboxProps = {},\n columnData = [],\n isSearchable = false,\n tableKey = \"\",\n noColumnMessage = i18next.t(\"neetoMolecules.columns.noColumns\"),\n searchProps = {},\n allowConfigurationResetOnUpdate = true,\n onMutationSuccess = noop,\n defaultHiddenColumns = [],\n buttonProps = {},\n onOpenChange = noop,\n}) => {\n const [searchTerm, setSearchTerm] = useState(\"\");\n const [open, setOpen] = useState(false);\n const { t } = useTranslation();\n\n const {\n allProcessedColumns,\n existingColumnConfiguration,\n hideColumn,\n showColumn,\n updateColumns,\n destroyConfiguration,\n isTableConfigurationFetching,\n } = useTableConfigurations(\n tableKey,\n columnData,\n onMutationSuccess,\n allowConfigurationResetOnUpdate,\n defaultHiddenColumns\n );\n\n const hiddenColumns = pluck(\n \"key\",\n existingColumnConfiguration.filter(column => column.isShown === false)\n );\n\n const handleDragEnd = event => {\n const { active, over } = event;\n if (!over || active.id === over.id) return;\n\n const oldIndex = findIndexBy(\n { key: active.id },\n existingColumnConfiguration\n );\n\n const newIndex = findIndexBy({ key: over.id }, existingColumnConfiguration);\n\n if (oldIndex === -1 || newIndex === -1) return;\n\n const newOrder = [...existingColumnConfiguration];\n const [movedItem] = newOrder.splice(oldIndex, 1);\n newOrder.splice(newIndex, 0, movedItem);\n updateColumns(newOrder);\n };\n\n const columns = getHidableColumns(allProcessedColumns);\n const filteredColumns = filterBySearchTerm(searchTerm, columns);\n\n const handleHideAllColumns = () => {\n const columnsToHideKeys = pluck(\"id\", columns);\n\n updateColumns(\n existingColumnConfiguration.map(column =>\n includes(column.key, columnsToHideKeys)\n ? assoc(\"isShown\", false, column)\n : column\n )\n );\n };\n\n const handleChange = ({ target: { name: columnId, checked } }) => {\n if (checked) showColumn(columnId);\n else hideColumn(columnId);\n };\n\n const handleSearch = ({ target: { value } }) => setSearchTerm(value);\n\n const {\n icon: Icon,\n \"data-testid\": dataTestId = \"columns-dropdown-button\",\n label: buttonLabel,\n ...restButtonProps\n } = buttonProps;\n\n return (\n <Popover\n {...{ open }}\n onOpenChange={isOpen => {\n setOpen(isOpen);\n onOpenChange(isOpen);\n if (!isOpen) setSearchTerm(\"\");\n }}\n >\n <PopoverTrigger asChild>\n <Button\n data-testid={dataTestId}\n icon={Icon || undefined}\n label={buttonLabel || undefined}\n size={buttonLabel ? \"default\" : \"icon\"}\n variant=\"ghost\"\n {...restButtonProps}\n />\n </PopoverTrigger>\n <PopoverContent\n align=\"end\"\n className=\"flex max-h-[calc(100dvh-200px)] w-80 max-w-[31.25rem] flex-col p-0\"\n >\n <div\n className=\"flex min-h-0 flex-1 flex-col\"\n data-testid=\"customize-columns-dropdown-container\"\n >\n {isSearchable && (\n <div className=\"relative shrink-0 p-3\">\n <Input\n data-testid=\"neeto-ui-columns-search\"\n placeholder={t(\"neetoMolecules.columns.search\")}\n prefix={<Search />}\n type=\"search\"\n value={searchTerm}\n onChange={handleSearch}\n {...searchProps}\n />\n </div>\n )}\n <div className=\"min-h-0 flex-1 overflow-x-hidden overflow-y-auto\">\n {isEmpty(filteredColumns) && (\n <span className=\"flex flex-col items-center p-2\">\n {noColumnMessage}\n </span>\n )}\n {isNotEmpty(filteredColumns) && !searchTerm && (\n <DndContext\n collisionDetection={closestCenter}\n modifiers={[\n restrictToVerticalAxis,\n restrictToFirstScrollableAncestor,\n ]}\n onDragEnd={handleDragEnd}\n >\n <SortableContext\n items={pluck(\"id\", filteredColumns)}\n strategy={verticalListSortingStrategy}\n >\n {filteredColumns.map(column => (\n <Item\n {...{\n checkboxProps,\n column,\n hiddenColumns,\n isTableConfigurationFetching,\n }}\n key={column.id}\n onToggle={handleChange}\n />\n ))}\n </SortableContext>\n </DndContext>\n )}\n {isNotEmpty(filteredColumns) &&\n searchTerm &&\n filteredColumns.map(({ id, header }) => (\n <Label\n className=\"hover:bg-accent flex w-full cursor-pointer items-center px-5 py-2\"\n htmlFor={id}\n key={id}\n >\n <Checkbox\n {...{ id }}\n checked={!hiddenColumns.includes(id)}\n data-testid=\"neeto-ui-columns-checkbox\"\n name={id}\n onCheckedChange={checked => {\n handleChange({ target: { name: id, checked } });\n }}\n {...checkboxProps}\n />\n <span className=\"ml-2 text-sm\">{header}</span>\n </Label>\n ))}\n </div>\n <div className=\"shrink-0\">\n <Separator />\n {!!actionBlock && (\n <>\n {actionBlock}\n <Separator />\n </>\n )}\n <div className=\"flex justify-end gap-2 px-3 py-2\">\n <Button\n data-testid=\"column-visibility-hide-all-button\"\n size=\"sm\"\n variant=\"ghost\"\n onClick={handleHideAllColumns}\n >\n {t(\"neetoMolecules.columns.hideAll\")}\n </Button>\n <Button\n data-testid=\"column-visibility-reset-button\"\n size=\"sm\"\n variant=\"outline\"\n onClick={() => destroyConfiguration(tableKey)}\n >\n {t(\"neetoMolecules.columns.reset\")}\n </Button>\n </div>\n </div>\n </div>\n </PopoverContent>\n </Popover>\n );\n};\n\nColumns.propTypes = {\n allowConfigurationResetOnUpdate: PropTypes.bool,\n actionBlock: PropTypes.element,\n checkboxProps: PropTypes.object,\n columnData: PropTypes.array,\n isSearchable: PropTypes.bool,\n tableKey: PropTypes.string,\n noColumnMessage: PropTypes.string,\n searchProps: PropTypes.object,\n onMutationSuccess: PropTypes.func,\n onOpenChange: PropTypes.func,\n};\n\nColumns.displayName = \"Columns\";\nexport default Columns;\n"],"names":["Item","_ref","_active$data","_over$data","column","hiddenColumns","checkboxProps","onToggle","isTableConfigurationFetching","id","header","_useSortable","useSortable","attributes","listeners","setNodeRef","transform","transition","isDragging","isOver","over","active","dragStyle","CSS","Transform","toString","opacity","isIndicatorVisible","draggedIndex","data","current","sortable","index","targetIndex","isChecked","includes","_jsxs","children","_jsx","className","classNames","ref","style","_objectSpread","GripVertical","size","Label","htmlFor","Checkbox","checked","disabled","name","onCheckedChange","target","baseUrl","fetch","tableKey","axios","get","concat","create","payload","post","tableConfiguration","update","patch","destroy","tableConfigurationApi","HIDDEN_COLUMNS_STORAGE_KEY","COLUMNS_ORDER_STORAGE_KEY","TABLE_CONFIGURATION_QUERY_KEY","useFetchTableConfiguration","_ref$options","options","useQuery","queryKey","enabled","queryFn","useUpdateTableConfiguration","arguments","length","undefined","useMutationWithInvalidation","keysToInvalidate","useDestroyTableConfiguration","useTableConfigurations","columnData","onMutationSuccess","noop","allowConfigurationResetOnUpdate","defaultHiddenColumns","_useFetchTableConfigu","isLoading","isFetching","_useUpdateTableConfig","onSuccess","updateConfiguration","mutate","_useDestroyTableConfi","destroyConfiguration","processColumnsWithConfiguration","useCallback","originalColumns","existingColumnConfiguration","isEmpty","originalColumnsById","Map","filter","prop","map","configurationByKey","config","key","orderedConfiguredColumns","Boolean","unconfiguredOriginalColumns","has","_toConsumableArray","hasAdditionalColumns","useMemo","columns","configurationKeys","pluck","sort","dataKeys","col","isNotEqualDeep","shouldApplyTableConfiguration","isNotEmpty","useEffect","allProcessedColumns","isShown","customizedColumns","visibleColumnsConfig","visibleColumnKeys","updateColumns","updatedColumns","table_key","hideColumn","columnKey","showColumn","isTableConfigurationLoading","getHidableColumns","removeBy","enableHiding","filterBySearchTerm","searchTerm","_ref$header","trim","toLower","Columns","actionBlock","_ref$checkboxProps","_ref$columnData","_ref$isSearchable","isSearchable","_ref$tableKey","_ref$noColumnMessage","noColumnMessage","i18next","t","_ref$searchProps","searchProps","_ref$allowConfigurati","_ref$onMutationSucces","_ref$defaultHiddenCol","_ref$buttonProps","buttonProps","_ref$onOpenChange","onOpenChange","_useState","useState","_useState2","_slicedToArray","setSearchTerm","_useState3","_useState4","open","setOpen","_useTranslation","useTranslation","_useTableConfiguratio","handleDragEnd","event","oldIndex","findIndexBy","newIndex","newOrder","_newOrder$splice","splice","_newOrder$splice2","movedItem","filteredColumns","handleHideAllColumns","columnsToHideKeys","assoc","handleChange","_ref2","_ref2$target","columnId","handleSearch","_ref3","value","Icon","icon","_buttonProps$dataTes","dataTestId","buttonLabel","label","restButtonProps","_objectWithoutProperties","_excluded","Popover","isOpen","PopoverTrigger","asChild","Button","variant","PopoverContent","align","Input","placeholder","prefix","Search","type","onChange","DndContext","collisionDetection","closestCenter","modifiers","restrictToVerticalAxis","restrictToFirstScrollableAncestor","onDragEnd","SortableContext","items","strategy","verticalListSortingStrategy","_createElement","_ref4","Separator","_Fragment","onClick","displayName"],"mappings":"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","x_google_ignoreList":[0]}
@@ -8,6 +8,7 @@ var React = require('react');
8
8
  var neetoAtoms = require('@bigbinary/neeto-atoms');
9
9
  var primitives = require('@bigbinary/neeto-atoms/primitives');
10
10
  var core = require('@dnd-kit/core');
11
+ var modifiers = require('@dnd-kit/modifiers');
11
12
  var sortable = require('@dnd-kit/sortable');
12
13
  var i18next = require('i18next');
13
14
  var neetoCist = require('@bigbinary/neeto-cist');
@@ -64,7 +65,7 @@ var Item = function Item(_ref) {
64
65
  over = _useSortable.over,
65
66
  active = _useSortable.active;
66
67
  var dragStyle = {
67
- transform: isDragging ? utilities_esm.CSS.Transform.toString(transform) : undefined,
68
+ transform: utilities_esm.CSS.Transform.toString(transform),
68
69
  transition: transition,
69
70
  opacity: isDragging ? 0.5 : 1
70
71
  };
@@ -83,7 +84,7 @@ var Item = function Item(_ref) {
83
84
  ref: setNodeRef,
84
85
  style: dragStyle,
85
86
  children: [/*#__PURE__*/jsxRuntime.jsx("div", _objectSpread$3(_objectSpread$3(_objectSpread$3({}, attributes), listeners), {}, {
86
- className: "absolute top-1/2 left-0.5 flex -translate-y-1/2 cursor-grab items-center active:cursor-grabbing",
87
+ className: "absolute inset-y-0 left-0 z-10 flex w-5 cursor-grab items-center justify-center active:cursor-grabbing",
87
88
  "data-testid": "column-drag-handle",
88
89
  children: /*#__PURE__*/jsxRuntime.jsx(GripVertical, {
89
90
  className: "text-muted-foreground/50 hover:text-foreground transition-all duration-300 ease-in-out",
@@ -334,7 +335,9 @@ var Columns = function Columns(_ref) {
334
335
  _ref$defaultHiddenCol = _ref.defaultHiddenColumns,
335
336
  defaultHiddenColumns = _ref$defaultHiddenCol === void 0 ? [] : _ref$defaultHiddenCol,
336
337
  _ref$buttonProps = _ref.buttonProps,
337
- buttonProps = _ref$buttonProps === void 0 ? {} : _ref$buttonProps;
338
+ buttonProps = _ref$buttonProps === void 0 ? {} : _ref$buttonProps,
339
+ _ref$onOpenChange = _ref.onOpenChange,
340
+ _onOpenChange = _ref$onOpenChange === void 0 ? neetoCist.noop : _ref$onOpenChange;
338
341
  var _useState = React.useState(""),
339
342
  _useState2 = _slicedToArray(_useState, 2),
340
343
  searchTerm = _useState2[0],
@@ -384,9 +387,9 @@ var Columns = function Columns(_ref) {
384
387
  };
385
388
  var handleChange = function handleChange(_ref2) {
386
389
  var _ref2$target = _ref2.target,
387
- dataIndex = _ref2$target.name,
390
+ columnId = _ref2$target.name,
388
391
  checked = _ref2$target.checked;
389
- if (checked) showColumn(dataIndex);else hideColumn(dataIndex);
392
+ if (checked) showColumn(columnId);else hideColumn(columnId);
390
393
  };
391
394
  var handleSearch = function handleSearch(_ref3) {
392
395
  var value = _ref3.target.value;
@@ -401,6 +404,7 @@ var Columns = function Columns(_ref) {
401
404
  open: open,
402
405
  onOpenChange: function onOpenChange(isOpen) {
403
406
  setOpen(isOpen);
407
+ _onOpenChange(isOpen);
404
408
  if (!isOpen) setSearchTerm("");
405
409
  },
406
410
  children: [/*#__PURE__*/jsxRuntime.jsx(primitives.PopoverTrigger, {
@@ -414,86 +418,89 @@ var Columns = function Columns(_ref) {
414
418
  }, restButtonProps))
415
419
  }), /*#__PURE__*/jsxRuntime.jsx(primitives.PopoverContent, {
416
420
  align: "end",
417
- className: "max-h-[calc(100dvh-200px)] w-80 max-w-[31.25rem] overflow-y-auto p-0",
418
- onOpenAutoFocus: function onOpenAutoFocus(e) {
419
- return e.preventDefault();
420
- },
421
+ className: "flex max-h-[calc(100dvh-200px)] w-80 max-w-[31.25rem] flex-col p-0",
421
422
  children: /*#__PURE__*/jsxRuntime.jsxs("div", {
423
+ className: "flex min-h-0 flex-1 flex-col",
422
424
  "data-testid": "customize-columns-dropdown-container",
423
- children: [isSearchable && /*#__PURE__*/jsxRuntime.jsxs("div", {
424
- className: "relative p-3",
425
- children: [/*#__PURE__*/jsxRuntime.jsx(search.Search, {
426
- className: "text-muted-foreground pointer-events-none absolute top-1/2 left-6 size-4 -translate-y-1/2"
427
- }), /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Input, _objectSpread({
428
- className: "pl-9",
425
+ children: [isSearchable && /*#__PURE__*/jsxRuntime.jsx("div", {
426
+ className: "relative shrink-0 p-3",
427
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Input, _objectSpread({
429
428
  "data-testid": "neeto-ui-columns-search",
430
429
  placeholder: t("neetoMolecules.columns.search"),
430
+ prefix: /*#__PURE__*/jsxRuntime.jsx(search.Search, {}),
431
431
  type: "search",
432
432
  value: searchTerm,
433
433
  onChange: handleSearch
434
- }, searchProps))]
435
- }), ramda.isEmpty(filteredColumns) && /*#__PURE__*/jsxRuntime.jsx("span", {
436
- className: "flex flex-col items-center p-2",
437
- children: noColumnMessage
438
- }), neetoCist.isNotEmpty(filteredColumns) && !searchTerm && /*#__PURE__*/jsxRuntime.jsx(core.DndContext, {
439
- collisionDetection: core.closestCenter,
440
- onDragEnd: handleDragEnd,
441
- children: /*#__PURE__*/jsxRuntime.jsx(sortable.SortableContext, {
442
- items: ramda.pluck("id", filteredColumns),
443
- strategy: sortable.verticalListSortingStrategy,
444
- children: filteredColumns.map(function (column) {
445
- return /*#__PURE__*/React.createElement(Item, {
446
- checkboxProps: checkboxProps,
447
- column: column,
448
- hiddenColumns: hiddenColumns,
449
- isTableConfigurationFetching: isTableConfigurationFetching,
450
- key: column.id,
451
- onToggle: handleChange
452
- });
453
- })
454
- })
455
- }), neetoCist.isNotEmpty(filteredColumns) && searchTerm && filteredColumns.map(function (_ref4) {
456
- var id = _ref4.id,
457
- header = _ref4.header;
458
- return /*#__PURE__*/jsxRuntime.jsxs(neetoAtoms.Label, {
459
- className: "hover:bg-accent flex w-full cursor-pointer items-center px-5 py-2",
460
- htmlFor: id,
461
- children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Checkbox, _objectSpread({
462
- id: id,
463
- checked: !hiddenColumns.includes(id),
464
- "data-testid": "neeto-ui-columns-checkbox",
465
- name: id,
466
- onCheckedChange: function onCheckedChange(checked) {
467
- handleChange({
468
- target: {
469
- name: id,
470
- checked: checked
471
- }
434
+ }, searchProps))
435
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
436
+ className: "min-h-0 flex-1 overflow-x-hidden overflow-y-auto",
437
+ children: [ramda.isEmpty(filteredColumns) && /*#__PURE__*/jsxRuntime.jsx("span", {
438
+ className: "flex flex-col items-center p-2",
439
+ children: noColumnMessage
440
+ }), neetoCist.isNotEmpty(filteredColumns) && !searchTerm && /*#__PURE__*/jsxRuntime.jsx(core.DndContext, {
441
+ collisionDetection: core.closestCenter,
442
+ modifiers: [modifiers.restrictToVerticalAxis, modifiers.restrictToFirstScrollableAncestor],
443
+ onDragEnd: handleDragEnd,
444
+ children: /*#__PURE__*/jsxRuntime.jsx(sortable.SortableContext, {
445
+ items: ramda.pluck("id", filteredColumns),
446
+ strategy: sortable.verticalListSortingStrategy,
447
+ children: filteredColumns.map(function (column) {
448
+ return /*#__PURE__*/React.createElement(Item, {
449
+ checkboxProps: checkboxProps,
450
+ column: column,
451
+ hiddenColumns: hiddenColumns,
452
+ isTableConfigurationFetching: isTableConfigurationFetching,
453
+ key: column.id,
454
+ onToggle: handleChange
472
455
  });
473
- }
474
- }, checkboxProps)), /*#__PURE__*/jsxRuntime.jsx("span", {
475
- className: "ml-2 text-sm",
476
- children: header
477
- })]
478
- }, id);
479
- }), /*#__PURE__*/jsxRuntime.jsx(primitives.Separator, {}), !!actionBlock && /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
480
- children: [actionBlock, /*#__PURE__*/jsxRuntime.jsx(primitives.Separator, {})]
456
+ })
457
+ })
458
+ }), neetoCist.isNotEmpty(filteredColumns) && searchTerm && filteredColumns.map(function (_ref4) {
459
+ var id = _ref4.id,
460
+ header = _ref4.header;
461
+ return /*#__PURE__*/jsxRuntime.jsxs(neetoAtoms.Label, {
462
+ className: "hover:bg-accent flex w-full cursor-pointer items-center px-5 py-2",
463
+ htmlFor: id,
464
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Checkbox, _objectSpread({
465
+ id: id,
466
+ checked: !hiddenColumns.includes(id),
467
+ "data-testid": "neeto-ui-columns-checkbox",
468
+ name: id,
469
+ onCheckedChange: function onCheckedChange(checked) {
470
+ handleChange({
471
+ target: {
472
+ name: id,
473
+ checked: checked
474
+ }
475
+ });
476
+ }
477
+ }, checkboxProps)), /*#__PURE__*/jsxRuntime.jsx("span", {
478
+ className: "ml-2 text-sm",
479
+ children: header
480
+ })]
481
+ }, id);
482
+ })]
481
483
  }), /*#__PURE__*/jsxRuntime.jsxs("div", {
482
- className: "flex justify-end gap-2 px-3 py-2",
483
- children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
484
- "data-testid": "column-visibility-hide-all-button",
485
- size: "sm",
486
- variant: "ghost",
487
- onClick: handleHideAllColumns,
488
- children: t("neetoMolecules.columns.hideAll")
489
- }), /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
490
- "data-testid": "column-visibility-reset-button",
491
- size: "sm",
492
- variant: "outline",
493
- onClick: function onClick() {
494
- return destroyConfiguration(tableKey);
495
- },
496
- children: t("neetoMolecules.columns.reset")
484
+ className: "shrink-0",
485
+ children: [/*#__PURE__*/jsxRuntime.jsx(primitives.Separator, {}), !!actionBlock && /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
486
+ children: [actionBlock, /*#__PURE__*/jsxRuntime.jsx(primitives.Separator, {})]
487
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
488
+ className: "flex justify-end gap-2 px-3 py-2",
489
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
490
+ "data-testid": "column-visibility-hide-all-button",
491
+ size: "sm",
492
+ variant: "ghost",
493
+ onClick: handleHideAllColumns,
494
+ children: t("neetoMolecules.columns.hideAll")
495
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
496
+ "data-testid": "column-visibility-reset-button",
497
+ size: "sm",
498
+ variant: "outline",
499
+ onClick: function onClick() {
500
+ return destroyConfiguration(tableKey);
501
+ },
502
+ children: t("neetoMolecules.columns.reset")
503
+ })]
497
504
  })]
498
505
  })]
499
506
  })
@@ -507,4 +514,4 @@ exports.Columns = Columns;
507
514
  exports.HIDDEN_COLUMNS_STORAGE_KEY = HIDDEN_COLUMNS_STORAGE_KEY;
508
515
  exports.TABLE_CONFIGURATION_QUERY_KEY = TABLE_CONFIGURATION_QUERY_KEY;
509
516
  exports.useTableConfigurations = useTableConfigurations;
510
- //# sourceMappingURL=Columns-CKKEXExE.js.map
517
+ //# sourceMappingURL=Columns-C2ke8N58.js.map