@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 @@
1
+ {"version":3,"file":"useColumns-ZmJggX3n.js","sources":["../node_modules/@dnd-kit/utilities/dist/utilities.esm.js","../src/components/Columns/Item.jsx","../src/components/Columns/api.js","../src/components/Columns/constants.js","../src/components/Columns/useTableConfigurationsApi.js","../src/components/Columns/useTableConfigurations.js","../src/components/Columns/utils.js","../src/components/Columns/Columns.jsx","../src/components/Columns/useHiddenColumns.js","../src/components/Columns/useColumns.js"],"sourcesContent":["import { useMemo, useLayoutEffect, useEffect, useRef, useCallback } from 'react';\n\nfunction useCombinedRefs() {\n for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {\n refs[_key] = arguments[_key];\n }\n\n return useMemo(() => node => {\n refs.forEach(ref => ref(node));\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n refs);\n}\n\n// https://github.com/facebook/react/blob/master/packages/shared/ExecutionEnvironment.js\nconst canUseDOM = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined';\n\nfunction isWindow(element) {\n const elementString = Object.prototype.toString.call(element);\n return elementString === '[object Window]' || // In Electron context the Window object serializes to [object global]\n elementString === '[object global]';\n}\n\nfunction isNode(node) {\n return 'nodeType' in node;\n}\n\nfunction getWindow(target) {\n var _target$ownerDocument, _target$ownerDocument2;\n\n if (!target) {\n return window;\n }\n\n if (isWindow(target)) {\n return target;\n }\n\n if (!isNode(target)) {\n return window;\n }\n\n return (_target$ownerDocument = (_target$ownerDocument2 = target.ownerDocument) == null ? void 0 : _target$ownerDocument2.defaultView) != null ? _target$ownerDocument : window;\n}\n\nfunction isDocument(node) {\n const {\n Document\n } = getWindow(node);\n return node instanceof Document;\n}\n\nfunction isHTMLElement(node) {\n if (isWindow(node)) {\n return false;\n }\n\n return node instanceof getWindow(node).HTMLElement;\n}\n\nfunction isSVGElement(node) {\n return node instanceof getWindow(node).SVGElement;\n}\n\nfunction getOwnerDocument(target) {\n if (!target) {\n return document;\n }\n\n if (isWindow(target)) {\n return target.document;\n }\n\n if (!isNode(target)) {\n return document;\n }\n\n if (isDocument(target)) {\n return target;\n }\n\n if (isHTMLElement(target) || isSVGElement(target)) {\n return target.ownerDocument;\n }\n\n return document;\n}\n\n/**\r\n * A hook that resolves to useEffect on the server and useLayoutEffect on the client\r\n * @param callback {function} Callback function that is invoked when the dependencies of the hook change\r\n */\n\nconst useIsomorphicLayoutEffect = canUseDOM ? useLayoutEffect : useEffect;\n\nfunction useEvent(handler) {\n const handlerRef = useRef(handler);\n useIsomorphicLayoutEffect(() => {\n handlerRef.current = handler;\n });\n return useCallback(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return handlerRef.current == null ? void 0 : handlerRef.current(...args);\n }, []);\n}\n\nfunction useInterval() {\n const intervalRef = useRef(null);\n const set = useCallback((listener, duration) => {\n intervalRef.current = setInterval(listener, duration);\n }, []);\n const clear = useCallback(() => {\n if (intervalRef.current !== null) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n }, []);\n return [set, clear];\n}\n\nfunction useLatestValue(value, dependencies) {\n if (dependencies === void 0) {\n dependencies = [value];\n }\n\n const valueRef = useRef(value);\n useIsomorphicLayoutEffect(() => {\n if (valueRef.current !== value) {\n valueRef.current = value;\n }\n }, dependencies);\n return valueRef;\n}\n\nfunction useLazyMemo(callback, dependencies) {\n const valueRef = useRef();\n return useMemo(() => {\n const newValue = callback(valueRef.current);\n valueRef.current = newValue;\n return newValue;\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [...dependencies]);\n}\n\nfunction useNodeRef(onChange) {\n const onChangeHandler = useEvent(onChange);\n const node = useRef(null);\n const setNodeRef = useCallback(element => {\n if (element !== node.current) {\n onChangeHandler == null ? void 0 : onChangeHandler(element, node.current);\n }\n\n node.current = element;\n }, //eslint-disable-next-line\n []);\n return [node, setNodeRef];\n}\n\nfunction usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n\nlet ids = {};\nfunction useUniqueId(prefix, value) {\n return useMemo(() => {\n if (value) {\n return value;\n }\n\n const id = ids[prefix] == null ? 0 : ids[prefix] + 1;\n ids[prefix] = id;\n return prefix + \"-\" + id;\n }, [prefix, value]);\n}\n\nfunction createAdjustmentFn(modifier) {\n return function (object) {\n for (var _len = arguments.length, adjustments = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n adjustments[_key - 1] = arguments[_key];\n }\n\n return adjustments.reduce((accumulator, adjustment) => {\n const entries = Object.entries(adjustment);\n\n for (const [key, valueAdjustment] of entries) {\n const value = accumulator[key];\n\n if (value != null) {\n accumulator[key] = value + modifier * valueAdjustment;\n }\n }\n\n return accumulator;\n }, { ...object\n });\n };\n}\n\nconst add = /*#__PURE__*/createAdjustmentFn(1);\nconst subtract = /*#__PURE__*/createAdjustmentFn(-1);\n\nfunction hasViewportRelativeCoordinates(event) {\n return 'clientX' in event && 'clientY' in event;\n}\n\nfunction isKeyboardEvent(event) {\n if (!event) {\n return false;\n }\n\n const {\n KeyboardEvent\n } = getWindow(event.target);\n return KeyboardEvent && event instanceof KeyboardEvent;\n}\n\nfunction isTouchEvent(event) {\n if (!event) {\n return false;\n }\n\n const {\n TouchEvent\n } = getWindow(event.target);\n return TouchEvent && event instanceof TouchEvent;\n}\n\n/**\r\n * Returns the normalized x and y coordinates for mouse and touch events.\r\n */\n\nfunction getEventCoordinates(event) {\n if (isTouchEvent(event)) {\n if (event.touches && event.touches.length) {\n const {\n clientX: x,\n clientY: y\n } = event.touches[0];\n return {\n x,\n y\n };\n } else if (event.changedTouches && event.changedTouches.length) {\n const {\n clientX: x,\n clientY: y\n } = event.changedTouches[0];\n return {\n x,\n y\n };\n }\n }\n\n if (hasViewportRelativeCoordinates(event)) {\n return {\n x: event.clientX,\n y: event.clientY\n };\n }\n\n return null;\n}\n\nconst CSS = /*#__PURE__*/Object.freeze({\n Translate: {\n toString(transform) {\n if (!transform) {\n return;\n }\n\n const {\n x,\n y\n } = transform;\n return \"translate3d(\" + (x ? Math.round(x) : 0) + \"px, \" + (y ? Math.round(y) : 0) + \"px, 0)\";\n }\n\n },\n Scale: {\n toString(transform) {\n if (!transform) {\n return;\n }\n\n const {\n scaleX,\n scaleY\n } = transform;\n return \"scaleX(\" + scaleX + \") scaleY(\" + scaleY + \")\";\n }\n\n },\n Transform: {\n toString(transform) {\n if (!transform) {\n return;\n }\n\n return [CSS.Translate.toString(transform), CSS.Scale.toString(transform)].join(' ');\n }\n\n },\n Transition: {\n toString(_ref) {\n let {\n property,\n duration,\n easing\n } = _ref;\n return property + \" \" + duration + \"ms \" + easing;\n }\n\n }\n});\n\nconst SELECTOR = 'a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]';\nfunction findFirstFocusableNode(element) {\n if (element.matches(SELECTOR)) {\n return element;\n }\n\n return element.querySelector(SELECTOR);\n}\n\nexport { CSS, add, canUseDOM, findFirstFocusableNode, getEventCoordinates, getOwnerDocument, getWindow, hasViewportRelativeCoordinates, isDocument, isHTMLElement, isKeyboardEvent, isNode, isSVGElement, isTouchEvent, isWindow, subtract, useCombinedRefs, useEvent, useInterval, useIsomorphicLayoutEffect, useLatestValue, useLazyMemo, useNodeRef, usePrevious, useUniqueId };\n//# sourceMappingURL=utilities.esm.js.map\n","import { useSortable } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { Drag } from \"neetoicons\";\nimport { Checkbox, Label } from \"neetoui\";\n\nconst Item = ({ column, hiddenColumns, checkboxProps, onToggle }) => {\n const { key, title } = column;\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id: key });\n\n const dragStyle = {\n transform: isDragging ? CSS.Transform.toString(transform) : undefined,\n transition,\n opacity: isDragging ? 0.5 : 1,\n };\n\n return (\n <div\n className=\"neeto-molecules-columns__sortable-item\"\n ref={setNodeRef}\n style={dragStyle}\n >\n <Label\n 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\"\n htmlFor={key}\n >\n <div\n {...attributes}\n {...listeners}\n className=\"neeto-ui-mr-2 neeto-ui-cursor-grab neeto-ui-flex neeto-ui-items-center\"\n >\n <Drag className=\"neeto-ui-text-gray-400\" size={16} />\n </div>\n <Checkbox\n checked={!hiddenColumns.includes(key)}\n data-cy=\"neeto-ui-columns-checkbox\"\n id={key}\n label={title}\n name={key}\n onChange={onToggle}\n {...checkboxProps}\n />\n </Label>\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 =>\n useMutationWithInvalidation(tableConfigurationApi.update, {\n keysToInvalidate: [[TABLE_CONFIGURATION_QUERY_KEY, tableKey]],\n });\n\nconst useDestroyTableConfiguration = tableKey =>\n useMutationWithInvalidation(tableConfigurationApi.destroy, {\n keysToInvalidate: [[TABLE_CONFIGURATION_QUERY_KEY, tableKey]],\n });\n\nexport {\n useFetchTableConfiguration,\n useUpdateTableConfiguration,\n useDestroyTableConfiguration,\n};\n","import { useEffect, useMemo, useCallback } from \"react\";\n\nimport { isNotEqualDeep, isNotEmpty } from \"neetocist\";\nimport { isEmpty, pluck, prop } from \"ramda\";\n\nimport {\n useFetchTableConfiguration,\n useUpdateTableConfiguration,\n useDestroyTableConfiguration,\n} from \"./useTableConfigurationsApi.js\";\n\nconst useTableConfigurations = (tableKey, columnData) => {\n const { data: tableConfiguration, isLoading } = useFetchTableConfiguration({\n tableKey,\n });\n const { mutate: updateConfiguration } = useUpdateTableConfiguration(tableKey);\n const { mutate: destroyConfiguration } =\n useDestroyTableConfiguration(tableKey);\n\n const processColumnsWithConfiguration = useCallback(\n (originalColumns = [], existingColumnConfiguration = []) => {\n if (isEmpty(existingColumnConfiguration)) {\n return originalColumns;\n }\n\n const originalColumnsByKey = new Map(\n originalColumns?.filter(prop(\"key\")).map(column => [column.key, column])\n );\n\n const configurationByKey = new Map(\n existingColumnConfiguration.map(config => [config.key, config])\n );\n\n const orderedConfiguredColumns = existingColumnConfiguration\n .map(config => originalColumnsByKey.get(config.key))\n .filter(Boolean);\n\n const unconfiguredOriginalColumns = originalColumns.filter(\n column => column.key && !configurationByKey.has(column.key)\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 = pluck(\"key\", columnData).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 (hasAdditionalColumns && tableConfiguration) {\n destroyConfiguration(tableKey);\n }\n }, [hasAdditionalColumns, tableKey]);\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 customizedColumns = useMemo(() => {\n if (shouldApplyTableConfiguration) {\n const visibleColumnKeys = pluck(\n \"key\",\n tableConfiguration.columns.filter(prop(\"isShown\"))\n );\n\n return allProcessedColumns.filter(column =>\n visibleColumnKeys.includes(column.key)\n );\n }\n\n return columnData || [];\n }, [\n allProcessedColumns,\n columnData,\n tableConfiguration?.columns,\n shouldApplyTableConfiguration,\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 => ({ key: column.key, isShown: true }));\n }, [shouldApplyTableConfiguration, columnData, tableConfiguration?.columns]);\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 const reorderColumns = newOrder => {\n updateColumns(newOrder);\n };\n\n return {\n customizedColumns, // Only visible columns (for displaying the columns in the table)\n allProcessedColumns, // All columns (for displaying the columns in the Subheader)\n isTableConfigurationLoading: isLoading,\n existingColumnConfiguration,\n hideColumn,\n showColumn,\n reorderColumns,\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({ isHidable: false }, columnData);\n\nexport const filterBySearchTerm = (searchTerm, columns) =>\n filter(\n ({ title }) => includes(trim(toLower(searchTerm)), trim(toLower(title))),\n columns\n );\n\nexport const removeDeletedColumns = (hiddenColumns, columnData) =>\n hiddenColumns.filter(hiddenColumn =>\n existsBy({ dataIndex: hiddenColumn }, columnData)\n );\n","import { useState } from \"react\";\n\nimport { DndContext } from \"@dnd-kit/core\";\nimport { SortableContext } from \"@dnd-kit/sortable\";\nimport i18next from \"i18next\";\nimport { isNotEmpty, findIndexBy } from \"neetocist\";\nimport { Search } from \"neetoicons\";\nimport { Checkbox, Dropdown, Input, Label, Button } from \"neetoui\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty, pluck } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport \"./columns.scss\";\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 ...dropdownProps\n}) => {\n const { Divider, Menu, MenuItem } = Dropdown;\n const [searchTerm, setSearchTerm] = useState(\"\");\n const { t } = useTranslation();\n\n const {\n allProcessedColumns,\n existingColumnConfiguration,\n hideColumn,\n showColumn,\n reorderColumns,\n destroyConfiguration,\n } = useTableConfigurations(tableKey, columnData);\n\n const hiddenColumns = pluck(\n \"key\",\n existingColumnConfiguration.filter(column => !column.isShown)\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 reorderColumns(newOrder);\n };\n\n const columns = getHidableColumns(allProcessedColumns);\n const filteredColumns = filterBySearchTerm(searchTerm, columns);\n\n const handleChange = ({ target: { name: dataIndex, checked } }) => {\n if (checked) showColumn(dataIndex);\n else hideColumn(dataIndex);\n };\n\n const handleSearch = ({ target: { value } }) => setSearchTerm(value);\n\n return (\n <Dropdown\n appendTo={document.body}\n buttonSize=\"medium\"\n buttonStyle=\"text\"\n closeOnSelect={false}\n position=\"bottom-end\"\n onClose={() => setSearchTerm(\"\")}\n {...dropdownProps}\n >\n <Menu>\n <div className=\"neeto-molecules-columns__container\">\n {isSearchable && (\n <Input\n className=\"px-4 py-2\"\n data-cy=\"neeto-ui-columns-search\"\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 )}\n {isEmpty(filteredColumns) && (\n <span className=\"neeto-ui-flex neeto-ui-flex-col neeto-ui-items-center neeto-ui-p-2\">\n {noColumnMessage}\n </span>\n )}\n {isNotEmpty(filteredColumns) && !searchTerm && (\n <DndContext onDragEnd={handleDragEnd}>\n <SortableContext items={pluck(\"key\", filteredColumns)}>\n {filteredColumns.map(column => (\n <Item\n {...{ checkboxProps, column, hiddenColumns }}\n key={column.key}\n onToggle={handleChange}\n />\n ))}\n </SortableContext>\n </DndContext>\n )}\n {isNotEmpty(filteredColumns) &&\n searchTerm &&\n filteredColumns.map(({ key, title }) => (\n <MenuItem key={key}>\n <Label\n className=\"neeto-ui-flex neeto-ui-w-full hover:neeto-ui-bg-gray-200 neeto-ui-cursor-pointer px-4 py-2\"\n htmlFor={key}\n >\n <Checkbox\n checked={!hiddenColumns.includes(key)}\n data-cy=\"neeto-ui-columns-checkbox\"\n id={key}\n label={title}\n name={key}\n onChange={handleChange}\n {...checkboxProps}\n />\n </Label>\n </MenuItem>\n ))}\n <Divider />\n {!!actionBlock && (\n <>\n {actionBlock}\n <Divider />\n </>\n )}\n <div className=\"flex justify-end p-1 pr-3\">\n <Button\n data-cy=\"column-visibility-reset-button\"\n label={t(\"neetoMolecules.columns.reset\")}\n style=\"secondary\"\n onClick={() => destroyConfiguration(tableKey)}\n />\n </div>\n </div>\n </Menu>\n </Dropdown>\n );\n};\n\nColumns.propTypes = {\n /**\n * Extra action items that can be added at the end of the dropdown (optional).\n */\n actionBlock: PropTypes.element,\n /**\n * Additional props for the checkboxes in the dropdown (optional).\n */\n checkboxProps: PropTypes.object,\n /**\n * The list of columns from which the dropdown options are built (required).\n */\n columnData: PropTypes.array,\n /**\n * Controls whether the dropdown options should be searchable (optional).\n */\n isSearchable: PropTypes.bool,\n /**\n * The table key used to identify table configuration in the API (required).\n */\n tableKey: PropTypes.string,\n /**\n * The message to be shown when there are no columns to be displayed in the dropdown (optional).\n */\n noColumnMessage: PropTypes.string,\n /**\n * Props to be passed to the search input in the column dropdown. Only works when `isSearchable` is set to `true` (optional).\n */\n searchProps: PropTypes.object,\n};\n\nColumns.displayName = \"Columns\";\nexport default Columns;\n","import { useEffect } from \"react\";\n\nimport { removeBy } from \"neetocist\";\nimport {\n getFromLocalStorage,\n removeFromLocalStorage,\n} from \"neetocommons/utils/general\";\nimport { __, without, includes, isEmpty, equals, union } from \"ramda\";\nimport { create } from \"zustand\";\nimport { persist } from \"zustand/middleware\";\n\nimport { HIDDEN_COLUMNS_STORAGE_KEY } from \"./constants\";\nimport { removeDeletedColumns } from \"./utils\";\n\n/** @type {import(\"neetocommons/react-utils\").ZustandStoreHook} */\nconst useHiddenColumnStore = create(\n persist(() => ({}), { name: HIDDEN_COLUMNS_STORAGE_KEY })\n);\n\nconst useHiddenColumns = (localStorageKey, initialValue = []) => {\n const hiddenColumns = useHiddenColumnStore(state => state[localStorageKey]);\n const setHiddenColumns = columns =>\n useHiddenColumnStore.setState({ [localStorageKey]: columns });\n\n // Migrates values from old location to new zustand location.\n useEffect(() => {\n const oldValue = getFromLocalStorage(localStorageKey);\n if (oldValue) {\n setHiddenColumns(oldValue);\n removeFromLocalStorage(localStorageKey);\n } else if (!hiddenColumns) {\n setHiddenColumns(initialValue);\n }\n }, [localStorageKey]);\n\n const hideColumn = columns =>\n setHiddenColumns(\n union(hiddenColumns, Array.isArray(columns) ? columns : [columns])\n );\n\n const showColumn = columns =>\n setHiddenColumns(\n without(Array.isArray(columns) ? columns : [columns], hiddenColumns)\n );\n\n const getVisibleColumnData = columnData =>\n removeBy({ dataIndex: includes(__, hiddenColumns || []) }, columnData);\n\n const onColumnDataChange = columnData => {\n if (isEmpty(columnData) || !hiddenColumns) return;\n const newHiddenColumns = removeDeletedColumns(hiddenColumns, columnData);\n if (!equals(newHiddenColumns, hiddenColumns)) {\n setHiddenColumns(newHiddenColumns);\n }\n };\n\n return {\n hiddenColumns,\n hideColumn,\n showColumn,\n getVisibleColumnData,\n onColumnDataChange,\n };\n};\n\nexport { useHiddenColumns, useHiddenColumnStore };\n","import { identity, isEmpty, pipe } from \"ramda\";\nimport { create } from \"zustand\";\nimport { persist } from \"zustand/middleware\";\n\nimport { COLUMNS_ORDER_STORAGE_KEY } from \"./constants\";\nimport { useHiddenColumns } from \"./useHiddenColumns\";\n\n/** @type {import(\"neetocommons/react-utils\").ZustandStoreHook} */\nconst useColumnOrderStore = create(\n persist(() => ({}), { name: COLUMNS_ORDER_STORAGE_KEY })\n);\n\nconst useColumns = ({\n localStorageKey,\n initialHiddenColumns,\n initialOrder = [],\n}) => {\n const columnOrder =\n useColumnOrderStore(state => state[localStorageKey]) || initialOrder;\n\n const setColumnOrder = columns =>\n useColumnOrderStore.setState({ [localStorageKey]: columns });\n\n const { hiddenColumns, getVisibleColumnData, ...hiddenColumnHelpers } =\n useHiddenColumns(localStorageKey, initialHiddenColumns);\n\n const orderColumns = columnData => {\n if (isEmpty(columnOrder)) return columnData;\n\n return columnData.sort((a, b) => {\n if (\n !columnOrder.includes(a.dataIndex) ||\n !columnOrder.includes(b.dataIndex)\n ) {\n return 0;\n }\n\n return (\n columnOrder.indexOf(a.dataIndex) - columnOrder.indexOf(b.dataIndex)\n );\n });\n };\n\n const getColumnData = ({\n columnData,\n isHidable = true,\n isReOrderable = false,\n }) =>\n pipe(\n isHidable ? getVisibleColumnData : identity,\n isReOrderable ? orderColumns : identity\n )(columnData);\n\n return {\n ...hiddenColumnHelpers,\n hiddenColumns,\n columnOrder,\n getVisibleColumnData,\n setColumnOrder,\n getColumnData,\n };\n};\n\nexport { useColumns, useColumnOrderStore };\n"],"names":["Item","_ref","column","hiddenColumns","checkboxProps","onToggle","key","title","_useSortable","useSortable","id","attributes","listeners","setNodeRef","transform","transition","isDragging","dragStyle","CSS","Transform","toString","undefined","opacity","_jsx","className","ref","style","children","_jsxs","Label","htmlFor","_objectSpread","Drag","size","Checkbox","checked","includes","label","name","onChange","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","useMutationWithInvalidation","keysToInvalidate","useDestroyTableConfiguration","useTableConfigurations","columnData","_useFetchTableConfigu","data","isLoading","_useUpdateTableConfig","updateConfiguration","mutate","_useDestroyTableConfi","destroyConfiguration","processColumnsWithConfiguration","useCallback","originalColumns","arguments","length","existingColumnConfiguration","isEmpty","originalColumnsByKey","Map","filter","prop","map","configurationByKey","config","orderedConfiguredColumns","Boolean","unconfiguredOriginalColumns","has","_toConsumableArray","hasAdditionalColumns","useMemo","columns","configurationKeys","pluck","sort","dataKeys","isNotEqualDeep","shouldApplyTableConfiguration","isNotEmpty","useEffect","allProcessedColumns","customizedColumns","visibleColumnKeys","isShown","updateColumns","updatedColumns","table_key","hideColumn","columnKey","showColumn","reorderColumns","newOrder","isTableConfigurationLoading","getHidableColumns","removeBy","isHidable","filterBySearchTerm","searchTerm","trim","toLower","removeDeletedColumns","hiddenColumn","existsBy","dataIndex","Columns","actionBlock","_ref$checkboxProps","_ref$columnData","_ref$isSearchable","isSearchable","_ref$tableKey","_ref$noColumnMessage","noColumnMessage","i18next","t","_ref$searchProps","searchProps","dropdownProps","_objectWithoutProperties","_excluded","Divider","Dropdown","Menu","MenuItem","_useState","useState","_useState2","_slicedToArray","setSearchTerm","_useTranslation","useTranslation","_useTableConfiguratio","handleDragEnd","event","active","over","oldIndex","findIndexBy","newIndex","_newOrder$splice","splice","_newOrder$splice2","movedItem","filteredColumns","handleChange","_ref2","_ref2$target","target","handleSearch","_ref3","value","appendTo","document","body","buttonSize","buttonStyle","closeOnSelect","position","onClose","Input","placeholder","prefix","Search","type","DndContext","onDragEnd","SortableContext","items","_createElement","_ref4","_Fragment","Button","onClick","displayName","useHiddenColumnStore","persist","useHiddenColumns","localStorageKey","initialValue","state","setHiddenColumns","setState","_defineProperty","oldValue","getFromLocalStorage","removeFromLocalStorage","union","Array","isArray","without","getVisibleColumnData","__","onColumnDataChange","newHiddenColumns","equals","useColumnOrderStore","useColumns","initialHiddenColumns","_ref$initialOrder","initialOrder","columnOrder","setColumnOrder","_useHiddenColumns","hiddenColumnHelpers","orderColumns","a","b","indexOf","getColumnData","_ref2$isHidable","_ref2$isReOrderable","isReOrderable","pipe","identity"],"mappings":"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","x_google_ignoreList":[0]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bigbinary/neeto-molecules",
3
- "version": "3.16.102",
3
+ "version": "4.0.0",
4
4
  "description": "A package of reusable molecular components for neeto products.",
5
5
  "repository": "git@github.com:bigbinary/neeto-molecules.git",
6
6
  "author": "Amaljith K <amaljith.k@bigbinary.com>",
@@ -66,6 +66,7 @@
66
66
  "@bigbinary/neeto-time-zones": "0.5.5",
67
67
  "@bigbinary/neetoui": "8.2.13",
68
68
  "@dnd-kit/core": "^6.2.0",
69
+ "@dnd-kit/sortable": "^10.0.0",
69
70
  "@faker-js/faker": "8.2.0",
70
71
  "@fullcalendar/core": "^6.1.8",
71
72
  "@fullcalendar/daygrid": "^6.1.8",
@@ -223,6 +224,7 @@
223
224
  "@bigbinary/neeto-time-zones": "0.5.5",
224
225
  "@bigbinary/neetoui": "8.2.13",
225
226
  "@dnd-kit/core": "^6.2.0",
227
+ "@dnd-kit/sortable": "^10.0.0",
226
228
  "@fullcalendar/core": "^6.1.8",
227
229
  "@fullcalendar/daygrid": "^6.1.8",
228
230
  "@fullcalendar/interaction": "^6.1.8",
@@ -67,11 +67,12 @@
67
67
  "enter": "Enter {{what}}"
68
68
  },
69
69
  "columns": {
70
- "columns": "Show/hide columns",
70
+ "columns": "Customize columns",
71
71
  "noColumns": "No columns found!",
72
72
  "search": "Search columns",
73
73
  "hideAll": "Hide all",
74
- "showAll": "Show all"
74
+ "showAll": "Show all",
75
+ "reset": "Reset"
75
76
  },
76
77
  "engagements": {
77
78
  "namesReacted": "{{ names, anyCase }} reacted"
@@ -19,12 +19,62 @@ type useColumnsType = {
19
19
  };
20
20
  /**
21
21
  *
22
- * It is a helper component that can be used along with the table component to hide
22
+ * It is a helper component that can be used along with the table component to
23
23
  *
24
- * and show columns.
24
+ * hide, show, and reorder columns. The component now uses server-side
25
+ *
26
+ * configuration storage through the useTableConfigurations hook.
25
27
  *
26
28
  * ![image](https://user-images.githubusercontent.com/32426070/195069324-3cbb4c70-f62b-4080-b4ae-bdeabb449b23.png|height=200|width=300)
27
29
  *
30
+ * This hook is for managing table column configurations. It provides column
31
+ *
32
+ * customization including visibility, ordering, and server-side persistence.
33
+ *
34
+ * @example
35
+ *
36
+ * import { useState } from "react";
37
+ *
38
+ * import { Table } from "@bigbinary/neetoui";
39
+ * import Columns, {
40
+ * useTableConfigurations,
41
+ * } from "@bigbinary/neeto-molecules/Columns";
42
+ *
43
+ * import { DEFAULT_ROW_DATA } from "./constants";
44
+ *
45
+ * const App = () => {
46
+ * const tableKey = "users-table";
47
+ * const DEFAULT_COLUMNS_DATA = [
48
+ * { title: "Id", dataIndex: "id", key: "id", isHidable: false },
49
+ * { title: "Name", dataIndex: "name", key: "name", isHidable: false },
50
+ * { title: "Email", dataIndex: "email", key: "email" },
51
+ * { title: "Status", dataIndex: "status", key: "status" },
52
+ * ];
53
+ *
54
+ * const {
55
+ * customizedColumns,
56
+ * allProcessedColumns,
57
+ * isTableConfigurationLoading,
58
+ * hideColumn,
59
+ * showColumn,
60
+ * } = useTableConfigurations(tableKey, DEFAULT_COLUMNS_DATA);
61
+ *
62
+ * if (isTableConfigurationLoading) {
63
+ * return <div>Loading...</div>;
64
+ * }
65
+ *
66
+ * return (
67
+ * <div>
68
+ * <Columns
69
+ * columnData={allProcessedColumns}
70
+ * tableKey={tableKey}
71
+ * isSearchable
72
+ * />
73
+ * <Table rowData={DEFAULT_ROW_DATA} columnData={customizedColumns} />
74
+ * </div>
75
+ * );
76
+ * };
77
+ * @endexample
28
78
  * It's a helper hook used alongside Columns component. It allows you to to
29
79
  *
30
80
  * interact with the underlying zustand store to hide and show columns.
@@ -130,13 +180,11 @@ type useColumnsType = {
130
180
  * @endexample
131
181
  */
132
182
  declare const Columns: React.FC<{
133
- actionBlock?: React.ReactNode;
134
183
  checkboxProps?: CheckboxProps;
184
+ tableKey: string;
135
185
  columnData: Column[];
136
186
  isSearchable?: boolean;
137
- localStorageKey: string;
138
187
  noColumnMessage?: string;
139
- onChange: (columns: Column[], hiddenColumns: string[]) => any[];
140
188
  searchProps?: InputProps;
141
189
  } & DropdownProps>;
142
190
  declare function useHiddenColumns(localStorageKey: string, initialValue?: string[]): {
@@ -16,13 +16,11 @@ type DataProps = {
16
16
  totalCount?: number;
17
17
  };
18
18
  type ColumnsButtonProps = {
19
- onChange: (columns: ColumnData[], hiddenColumns: string[]) => void;
20
19
  actionBlock?: React.ReactNode;
21
20
  checkboxProps?: Partial<CheckboxProps>;
22
21
  columnData?: ColumnData[];
23
22
  isSearchable?: boolean;
24
- localStorageKey?: string;
25
- initialValue?: string[];
23
+ tableKey?: string;
26
24
  noColumnMessage?: string;
27
25
  searchProps?: Partial<InputProps>;
28
26
  };
@@ -1,282 +0,0 @@
1
- 'use strict';
2
-
3
- var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
- var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
5
- var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
6
- var React = require('react');
7
- var i18next = require('i18next');
8
- var neetoCist = require('@bigbinary/neeto-cist');
9
- var Search = require('@bigbinary/neeto-icons/Search');
10
- var Checkbox = require('@bigbinary/neetoui/Checkbox');
11
- var Dropdown = require('@bigbinary/neetoui/Dropdown');
12
- var Input = require('@bigbinary/neetoui/Input');
13
- var Label = require('@bigbinary/neetoui/Label');
14
- var Typography = require('@bigbinary/neetoui/Typography');
15
- var ramda = require('ramda');
16
- var reactI18next = require('react-i18next');
17
- var injectCss = require('./inject-css-vQvjPR2x.js');
18
- var jsxRuntime = require('react/jsx-runtime');
19
- var zustand = require('zustand');
20
- var middleware = require('zustand/middleware');
21
- var general = require('@bigbinary/neeto-commons-frontend/utils/general');
22
-
23
- 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)}";
24
- injectCss.n(css,{});
25
-
26
- var HIDDEN_COLUMNS_STORAGE_KEY = "neeto-molecules-hidden-columns";
27
- var COLUMNS_ORDER_STORAGE_KEY = "neeto-molecules-columns-order";
28
-
29
- var getHidableColumns = function getHidableColumns(columnData) {
30
- return neetoCist.removeBy({
31
- isHidable: false
32
- }, columnData);
33
- };
34
- var filterBySearchTerm = function filterBySearchTerm(searchTerm, columns) {
35
- return ramda.filter(function (_ref) {
36
- var title = _ref.title;
37
- return ramda.includes(ramda.trim(ramda.toLower(searchTerm)), ramda.trim(ramda.toLower(title)));
38
- }, columns);
39
- };
40
- var removeDeletedColumns = function removeDeletedColumns(hiddenColumns, columnData) {
41
- return hiddenColumns.filter(function (hiddenColumn) {
42
- return neetoCist.existsBy({
43
- dataIndex: hiddenColumn
44
- }, columnData);
45
- });
46
- };
47
-
48
- /** @type {import("neetocommons/react-utils").ZustandStoreHook} */
49
- var useHiddenColumnStore = zustand.create(middleware.persist(function () {
50
- return {};
51
- }, {
52
- name: HIDDEN_COLUMNS_STORAGE_KEY
53
- }));
54
- var useHiddenColumns = function useHiddenColumns(localStorageKey) {
55
- var initialValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
56
- var hiddenColumns = useHiddenColumnStore(function (state) {
57
- return state[localStorageKey];
58
- });
59
- var setHiddenColumns = function setHiddenColumns(columns) {
60
- return useHiddenColumnStore.setState(_defineProperty({}, localStorageKey, columns));
61
- };
62
-
63
- // Migrates values from old location to new zustand location.
64
- React.useEffect(function () {
65
- var oldValue = general.getFromLocalStorage(localStorageKey);
66
- if (oldValue) {
67
- setHiddenColumns(oldValue);
68
- general.removeFromLocalStorage(localStorageKey);
69
- } else if (!hiddenColumns) {
70
- setHiddenColumns(initialValue);
71
- }
72
- }, [localStorageKey]);
73
- var hideColumn = function hideColumn(columns) {
74
- return setHiddenColumns(ramda.union(hiddenColumns, Array.isArray(columns) ? columns : [columns]));
75
- };
76
- var showColumn = function showColumn(columns) {
77
- return setHiddenColumns(ramda.without(Array.isArray(columns) ? columns : [columns], hiddenColumns));
78
- };
79
- var getVisibleColumnData = function getVisibleColumnData(columnData) {
80
- return neetoCist.removeBy({
81
- dataIndex: ramda.includes(ramda.__, hiddenColumns || [])
82
- }, columnData);
83
- };
84
- var onColumnDataChange = function onColumnDataChange(columnData) {
85
- if (ramda.isEmpty(columnData) || !hiddenColumns) return;
86
- var newHiddenColumns = removeDeletedColumns(hiddenColumns, columnData);
87
- if (!ramda.equals(newHiddenColumns, hiddenColumns)) {
88
- setHiddenColumns(newHiddenColumns);
89
- }
90
- };
91
- return {
92
- hiddenColumns: hiddenColumns,
93
- hideColumn: hideColumn,
94
- showColumn: showColumn,
95
- getVisibleColumnData: getVisibleColumnData,
96
- onColumnDataChange: onColumnDataChange
97
- };
98
- };
99
-
100
- var _excluded$1 = ["actionBlock", "checkboxProps", "columnData", "isSearchable", "localStorageKey", "initialValue", "noColumnMessage", "onChange", "searchProps"];
101
- 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; }
102
- 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; }
103
- var Columns = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
104
- var actionBlock = _ref.actionBlock,
105
- _ref$checkboxProps = _ref.checkboxProps,
106
- checkboxProps = _ref$checkboxProps === void 0 ? {} : _ref$checkboxProps,
107
- _ref$columnData = _ref.columnData,
108
- columnData = _ref$columnData === void 0 ? [] : _ref$columnData,
109
- _ref$isSearchable = _ref.isSearchable,
110
- isSearchable = _ref$isSearchable === void 0 ? false : _ref$isSearchable,
111
- _ref$localStorageKey = _ref.localStorageKey,
112
- localStorageKey = _ref$localStorageKey === void 0 ? "" : _ref$localStorageKey,
113
- _ref$initialValue = _ref.initialValue,
114
- initialValue = _ref$initialValue === void 0 ? [] : _ref$initialValue,
115
- _ref$noColumnMessage = _ref.noColumnMessage,
116
- noColumnMessage = _ref$noColumnMessage === void 0 ? i18next.t("neetoMolecules.columns.noColumns") : _ref$noColumnMessage,
117
- _ref$onChange = _ref.onChange,
118
- onChange = _ref$onChange === void 0 ? ramda.identity : _ref$onChange,
119
- _ref$searchProps = _ref.searchProps,
120
- searchProps = _ref$searchProps === void 0 ? {} : _ref$searchProps,
121
- dropdownProps = _objectWithoutProperties(_ref, _excluded$1);
122
- var Divider = Dropdown.Divider,
123
- Menu = Dropdown.Menu,
124
- MenuItem = Dropdown.MenuItem;
125
- var _useState = React.useState(""),
126
- _useState2 = _slicedToArray(_useState, 2),
127
- searchTerm = _useState2[0],
128
- setSearchTerm = _useState2[1];
129
- var _useTranslation = reactI18next.useTranslation(),
130
- t = _useTranslation.t;
131
- var _useHiddenColumns = useHiddenColumns(localStorageKey, initialValue),
132
- _useHiddenColumns$hid = _useHiddenColumns.hiddenColumns,
133
- hiddenColumns = _useHiddenColumns$hid === void 0 ? [] : _useHiddenColumns$hid,
134
- hideColumn = _useHiddenColumns.hideColumn,
135
- showColumn = _useHiddenColumns.showColumn,
136
- getVisibleColumnData = _useHiddenColumns.getVisibleColumnData,
137
- onColumnDataChange = _useHiddenColumns.onColumnDataChange;
138
- React.useEffect(function () {
139
- onChange(getVisibleColumnData(columnData), hiddenColumns);
140
- }, [hiddenColumns]);
141
- React.useEffect(function () {
142
- onColumnDataChange(columnData);
143
- }, [columnData]);
144
-
145
- /**
146
- * @deprecated Use showColumn|hideColumn from useHiddenColumns
147
- */
148
- React.useImperativeHandle(ref, function () {
149
- return {
150
- hideColumn: hideColumn,
151
- showColumn: showColumn
152
- };
153
- }, []);
154
- var handleChange = function handleChange(_ref2) {
155
- var _ref2$target = _ref2.target,
156
- dataIndex = _ref2$target.name,
157
- checked = _ref2$target.checked;
158
- if (checked) showColumn(dataIndex);else hideColumn(dataIndex);
159
- };
160
- var handleSearch = function handleSearch(_ref3) {
161
- var value = _ref3.target.value;
162
- return setSearchTerm(value);
163
- };
164
- var columns = getHidableColumns(columnData);
165
- var filteredColumns = filterBySearchTerm(searchTerm, columns);
166
- return /*#__PURE__*/jsxRuntime.jsx(Dropdown, _objectSpread$1(_objectSpread$1({
167
- appendTo: document.body,
168
- buttonSize: "medium",
169
- buttonStyle: "text",
170
- closeOnSelect: false,
171
- label: t("neetoMolecules.columns.columns"),
172
- position: "bottom-end",
173
- onClose: function onClose() {
174
- return setSearchTerm("");
175
- }
176
- }, dropdownProps), {}, {
177
- children: /*#__PURE__*/jsxRuntime.jsx(Menu, {
178
- children: /*#__PURE__*/jsxRuntime.jsxs("div", {
179
- className: "neeto-molecules-columns__container",
180
- children: [isSearchable && /*#__PURE__*/jsxRuntime.jsx(Input, _objectSpread$1({
181
- className: "px-4 py-2",
182
- "data-cy": "neeto-ui-columns-search",
183
- "data-testid": "neeto-ui-columns-search",
184
- placeholder: t("neetoMolecules.columns.search"),
185
- prefix: /*#__PURE__*/jsxRuntime.jsx(Search, {}),
186
- type: "search",
187
- value: searchTerm,
188
- onChange: handleSearch
189
- }, searchProps)), /*#__PURE__*/jsxRuntime.jsx(Typography, {
190
- className: "neeto-ui-text-gray-600 px-4 py-2",
191
- style: "body2",
192
- weight: "semibold",
193
- children: t("neetoMolecules.columns.columns")
194
- }), neetoCist.isNotEmpty(filteredColumns) ? filteredColumns.map(function (_ref4) {
195
- var dataIndex = _ref4.dataIndex,
196
- key = _ref4.key,
197
- title = _ref4.title;
198
- return /*#__PURE__*/jsxRuntime.jsx(MenuItem, {
199
- children: /*#__PURE__*/jsxRuntime.jsx(Label, {
200
- className: "neeto-ui-flex neeto-ui-w-full hover:neeto-ui-bg-gray-200 neeto-ui-cursor-pointer px-4 py-2",
201
- htmlFor: dataIndex,
202
- children: /*#__PURE__*/jsxRuntime.jsx(Checkbox, _objectSpread$1({
203
- checked: !hiddenColumns.includes(dataIndex),
204
- "data-cy": "neeto-ui-columns-checkbox",
205
- id: dataIndex,
206
- label: title,
207
- name: dataIndex,
208
- onChange: handleChange
209
- }, checkboxProps))
210
- })
211
- }, key);
212
- }) : /*#__PURE__*/jsxRuntime.jsx("span", {
213
- className: "neeto-ui-flex neeto-ui-flex-col neeto-ui-items-center neeto-ui-p-2",
214
- children: noColumnMessage
215
- }), !!actionBlock && /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
216
- children: [/*#__PURE__*/jsxRuntime.jsx(Divider, {}), actionBlock]
217
- })]
218
- })
219
- })
220
- }));
221
- });
222
- Columns.displayName = "Columns";
223
-
224
- var _excluded = ["hiddenColumns", "getVisibleColumnData"];
225
- 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; }
226
- 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; }
227
-
228
- /** @type {import("neetocommons/react-utils").ZustandStoreHook} */
229
- var useColumnOrderStore = zustand.create(middleware.persist(function () {
230
- return {};
231
- }, {
232
- name: COLUMNS_ORDER_STORAGE_KEY
233
- }));
234
- var useColumns = function useColumns(_ref) {
235
- var localStorageKey = _ref.localStorageKey,
236
- initialHiddenColumns = _ref.initialHiddenColumns,
237
- _ref$initialOrder = _ref.initialOrder,
238
- initialOrder = _ref$initialOrder === void 0 ? [] : _ref$initialOrder;
239
- var columnOrder = useColumnOrderStore(function (state) {
240
- return state[localStorageKey];
241
- }) || initialOrder;
242
- var setColumnOrder = function setColumnOrder(columns) {
243
- return useColumnOrderStore.setState(_defineProperty({}, localStorageKey, columns));
244
- };
245
- var _useHiddenColumns = useHiddenColumns(localStorageKey, initialHiddenColumns),
246
- hiddenColumns = _useHiddenColumns.hiddenColumns,
247
- getVisibleColumnData = _useHiddenColumns.getVisibleColumnData,
248
- hiddenColumnHelpers = _objectWithoutProperties(_useHiddenColumns, _excluded);
249
- var orderColumns = function orderColumns(columnData) {
250
- if (ramda.isEmpty(columnOrder)) return columnData;
251
- return columnData.sort(function (a, b) {
252
- if (!columnOrder.includes(a.dataIndex) || !columnOrder.includes(b.dataIndex)) {
253
- return 0;
254
- }
255
- return columnOrder.indexOf(a.dataIndex) - columnOrder.indexOf(b.dataIndex);
256
- });
257
- };
258
- var getColumnData = function getColumnData(_ref2) {
259
- var columnData = _ref2.columnData,
260
- _ref2$isHidable = _ref2.isHidable,
261
- isHidable = _ref2$isHidable === void 0 ? true : _ref2$isHidable,
262
- _ref2$isReOrderable = _ref2.isReOrderable,
263
- isReOrderable = _ref2$isReOrderable === void 0 ? false : _ref2$isReOrderable;
264
- return ramda.pipe(isHidable ? getVisibleColumnData : ramda.identity, isReOrderable ? orderColumns : ramda.identity)(columnData);
265
- };
266
- return _objectSpread(_objectSpread({}, hiddenColumnHelpers), {}, {
267
- hiddenColumns: hiddenColumns,
268
- columnOrder: columnOrder,
269
- getVisibleColumnData: getVisibleColumnData,
270
- setColumnOrder: setColumnOrder,
271
- getColumnData: getColumnData
272
- });
273
- };
274
-
275
- exports.COLUMNS_ORDER_STORAGE_KEY = COLUMNS_ORDER_STORAGE_KEY;
276
- exports.Columns = Columns;
277
- exports.HIDDEN_COLUMNS_STORAGE_KEY = HIDDEN_COLUMNS_STORAGE_KEY;
278
- exports.useColumnOrderStore = useColumnOrderStore;
279
- exports.useColumns = useColumns;
280
- exports.useHiddenColumnStore = useHiddenColumnStore;
281
- exports.useHiddenColumns = useHiddenColumns;
282
- //# sourceMappingURL=useColumns-BP8c4PV-.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useColumns-BP8c4PV-.js","sources":["../../src/components/Columns/constants.js","../../src/components/Columns/utils.js","../../src/components/Columns/useHiddenColumns.js","../../src/components/Columns/Columns.jsx","../../src/components/Columns/useColumns.js"],"sourcesContent":["export const HIDDEN_COLUMNS_STORAGE_KEY = \"neeto-molecules-hidden-columns\";\nexport const COLUMNS_ORDER_STORAGE_KEY = \"neeto-molecules-columns-order\";\n","import { existsBy, removeBy } from \"neetocist\";\nimport { filter, includes, toLower, trim } from \"ramda\";\n\nexport const getHidableColumns = columnData =>\n removeBy({ isHidable: false }, columnData);\n\nexport const filterBySearchTerm = (searchTerm, columns) =>\n filter(\n ({ title }) => includes(trim(toLower(searchTerm)), trim(toLower(title))),\n columns\n );\n\nexport const removeDeletedColumns = (hiddenColumns, columnData) =>\n hiddenColumns.filter(hiddenColumn =>\n existsBy({ dataIndex: hiddenColumn }, columnData)\n );\n","import { useEffect } from \"react\";\n\nimport { removeBy } from \"neetocist\";\nimport {\n getFromLocalStorage,\n removeFromLocalStorage,\n} from \"neetocommons/utils/general\";\nimport { __, without, includes, isEmpty, equals, union } from \"ramda\";\nimport { create } from \"zustand\";\nimport { persist } from \"zustand/middleware\";\n\nimport { HIDDEN_COLUMNS_STORAGE_KEY } from \"./constants\";\nimport { removeDeletedColumns } from \"./utils\";\n\n/** @type {import(\"neetocommons/react-utils\").ZustandStoreHook} */\nconst useHiddenColumnStore = create(\n persist(() => ({}), { name: HIDDEN_COLUMNS_STORAGE_KEY })\n);\n\nconst useHiddenColumns = (localStorageKey, initialValue = []) => {\n const hiddenColumns = useHiddenColumnStore(state => state[localStorageKey]);\n const setHiddenColumns = columns =>\n useHiddenColumnStore.setState({ [localStorageKey]: columns });\n\n // Migrates values from old location to new zustand location.\n useEffect(() => {\n const oldValue = getFromLocalStorage(localStorageKey);\n if (oldValue) {\n setHiddenColumns(oldValue);\n removeFromLocalStorage(localStorageKey);\n } else if (!hiddenColumns) {\n setHiddenColumns(initialValue);\n }\n }, [localStorageKey]);\n\n const hideColumn = columns =>\n setHiddenColumns(\n union(hiddenColumns, Array.isArray(columns) ? columns : [columns])\n );\n\n const showColumn = columns =>\n setHiddenColumns(\n without(Array.isArray(columns) ? columns : [columns], hiddenColumns)\n );\n\n const getVisibleColumnData = columnData =>\n removeBy({ dataIndex: includes(__, hiddenColumns || []) }, columnData);\n\n const onColumnDataChange = columnData => {\n if (isEmpty(columnData) || !hiddenColumns) return;\n const newHiddenColumns = removeDeletedColumns(hiddenColumns, columnData);\n if (!equals(newHiddenColumns, hiddenColumns)) {\n setHiddenColumns(newHiddenColumns);\n }\n };\n\n return {\n hiddenColumns,\n hideColumn,\n showColumn,\n getVisibleColumnData,\n onColumnDataChange,\n };\n};\n\nexport { useHiddenColumns, useHiddenColumnStore };\n","import { useState, useImperativeHandle, forwardRef, useEffect } from \"react\";\n\nimport i18next from \"i18next\";\nimport { isNotEmpty } from \"neetocist\";\nimport { Search } from \"neetoicons\";\nimport { Checkbox, Dropdown, Input, Label, Typography } from \"neetoui\";\nimport PropTypes from \"prop-types\";\nimport { identity } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport \"./columns.scss\";\nimport { useHiddenColumns } from \"./useHiddenColumns\";\nimport { filterBySearchTerm, getHidableColumns } from \"./utils\";\n\nconst Columns = forwardRef(\n (\n {\n actionBlock,\n checkboxProps = {},\n columnData = [],\n isSearchable = false,\n localStorageKey = \"\",\n initialValue = [],\n noColumnMessage = i18next.t(\"neetoMolecules.columns.noColumns\"),\n onChange = identity,\n searchProps = {},\n ...dropdownProps\n },\n ref\n ) => {\n const { Divider, Menu, MenuItem } = Dropdown;\n const [searchTerm, setSearchTerm] = useState(\"\");\n const { t } = useTranslation();\n\n const {\n hiddenColumns = [],\n hideColumn,\n showColumn,\n getVisibleColumnData,\n onColumnDataChange,\n } = useHiddenColumns(localStorageKey, initialValue);\n\n useEffect(() => {\n onChange(getVisibleColumnData(columnData), hiddenColumns);\n }, [hiddenColumns]);\n\n useEffect(() => {\n onColumnDataChange(columnData);\n }, [columnData]);\n\n /**\n * @deprecated Use showColumn|hideColumn from useHiddenColumns\n */\n useImperativeHandle(ref, () => ({ hideColumn, showColumn }), []);\n\n const handleChange = ({ target: { name: dataIndex, checked } }) => {\n if (checked) showColumn(dataIndex);\n else hideColumn(dataIndex);\n };\n const handleSearch = ({ target: { value } }) => setSearchTerm(value);\n\n const columns = getHidableColumns(columnData);\n const filteredColumns = filterBySearchTerm(searchTerm, columns);\n\n return (\n <Dropdown\n appendTo={document.body}\n buttonSize=\"medium\"\n buttonStyle=\"text\"\n closeOnSelect={false}\n label={t(\"neetoMolecules.columns.columns\")}\n position=\"bottom-end\"\n onClose={() => setSearchTerm(\"\")}\n {...dropdownProps}\n >\n <Menu>\n <div className=\"neeto-molecules-columns__container\">\n {isSearchable && (\n <Input\n className=\"px-4 py-2\"\n data-cy=\"neeto-ui-columns-search\"\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 )}\n <Typography\n className=\"neeto-ui-text-gray-600 px-4 py-2\"\n style=\"body2\"\n weight=\"semibold\"\n >\n {t(\"neetoMolecules.columns.columns\")}\n </Typography>\n {isNotEmpty(filteredColumns) ? (\n filteredColumns.map(({ dataIndex, key, title }) => (\n <MenuItem key={key}>\n <Label\n className=\"neeto-ui-flex neeto-ui-w-full hover:neeto-ui-bg-gray-200 neeto-ui-cursor-pointer px-4 py-2\"\n htmlFor={dataIndex}\n >\n <Checkbox\n checked={!hiddenColumns.includes(dataIndex)}\n data-cy=\"neeto-ui-columns-checkbox\"\n id={dataIndex}\n label={title}\n name={dataIndex}\n onChange={handleChange}\n {...checkboxProps}\n />\n </Label>\n </MenuItem>\n ))\n ) : (\n <span className=\"neeto-ui-flex neeto-ui-flex-col neeto-ui-items-center neeto-ui-p-2\">\n {noColumnMessage}\n </span>\n )}\n {!!actionBlock && (\n <>\n <Divider />\n {actionBlock}\n </>\n )}\n </div>\n </Menu>\n </Dropdown>\n );\n }\n);\n\nColumns.propTypes = {\n /**\n * Extra action items that can be added at the end of the dropdown (optional).\n */\n actionBlock: PropTypes.element,\n /**\n * Additional props for the checkboxes in the dropdown (optional).\n */\n checkboxProps: PropTypes.object,\n /**\n * The list of columns from which the dropdown options are built (required).\n */\n columnData: PropTypes.array,\n /**\n * Controls whether the dropdown options should be searchable (optional).\n */\n isSearchable: PropTypes.bool,\n /**\n * The key used to store data in local storage (required).\n */\n localStorageKey: PropTypes.string,\n /**\n * The list of columns that are hidden on initial render. This is the `dataIndex` attribute from columnData (optional).\n */\n initialValue: PropTypes.array,\n /**\n * The message to be shown when there are no columns to be displayed in the dropdown (optional).\n */\n noColumnMessage: PropTypes.string,\n /**\n * Handler function that is called when a checkbox is selected or unselected.\n */\n onChange: PropTypes.func,\n /**\n * Props to be passed to the search input in the column dropdown. Only works when `isSearchable` is set to `true` (optional).\n */\n searchProps: PropTypes.object,\n};\n\nColumns.displayName = \"Columns\";\nexport default Columns;\n","import { identity, isEmpty, pipe } from \"ramda\";\nimport { create } from \"zustand\";\nimport { persist } from \"zustand/middleware\";\n\nimport { COLUMNS_ORDER_STORAGE_KEY } from \"./constants\";\nimport { useHiddenColumns } from \"./useHiddenColumns\";\n\n/** @type {import(\"neetocommons/react-utils\").ZustandStoreHook} */\nconst useColumnOrderStore = create(\n persist(() => ({}), { name: COLUMNS_ORDER_STORAGE_KEY })\n);\n\nconst useColumns = ({\n localStorageKey,\n initialHiddenColumns,\n initialOrder = [],\n}) => {\n const columnOrder =\n useColumnOrderStore(state => state[localStorageKey]) || initialOrder;\n\n const setColumnOrder = columns =>\n useColumnOrderStore.setState({ [localStorageKey]: columns });\n\n const { hiddenColumns, getVisibleColumnData, ...hiddenColumnHelpers } =\n useHiddenColumns(localStorageKey, initialHiddenColumns);\n\n const orderColumns = columnData => {\n if (isEmpty(columnOrder)) return columnData;\n\n return columnData.sort((a, b) => {\n if (\n !columnOrder.includes(a.dataIndex) ||\n !columnOrder.includes(b.dataIndex)\n ) {\n return 0;\n }\n\n return (\n columnOrder.indexOf(a.dataIndex) - columnOrder.indexOf(b.dataIndex)\n );\n });\n };\n\n const getColumnData = ({\n columnData,\n isHidable = true,\n isReOrderable = false,\n }) =>\n pipe(\n isHidable ? getVisibleColumnData : identity,\n isReOrderable ? orderColumns : identity\n )(columnData);\n\n return {\n ...hiddenColumnHelpers,\n hiddenColumns,\n columnOrder,\n getVisibleColumnData,\n setColumnOrder,\n getColumnData,\n };\n};\n\nexport { useColumns, useColumnOrderStore };\n"],"names":["HIDDEN_COLUMNS_STORAGE_KEY","COLUMNS_ORDER_STORAGE_KEY","getHidableColumns","columnData","removeBy","isHidable","filterBySearchTerm","searchTerm","columns","filter","_ref","title","includes","trim","toLower","removeDeletedColumns","hiddenColumns","hiddenColumn","existsBy","dataIndex","useHiddenColumnStore","create","persist","name","useHiddenColumns","localStorageKey","initialValue","arguments","length","undefined","state","setHiddenColumns","setState","_defineProperty","useEffect","oldValue","getFromLocalStorage","removeFromLocalStorage","hideColumn","union","Array","isArray","showColumn","without","getVisibleColumnData","__","onColumnDataChange","isEmpty","newHiddenColumns","equals","Columns","forwardRef","ref","actionBlock","_ref$checkboxProps","checkboxProps","_ref$columnData","_ref$isSearchable","isSearchable","_ref$localStorageKey","_ref$initialValue","_ref$noColumnMessage","noColumnMessage","i18next","t","_ref$onChange","onChange","identity","_ref$searchProps","searchProps","dropdownProps","_objectWithoutProperties","_excluded","Divider","Dropdown","Menu","MenuItem","_useState","useState","_useState2","_slicedToArray","setSearchTerm","_useTranslation","useTranslation","_useHiddenColumns","_useHiddenColumns$hid","useImperativeHandle","handleChange","_ref2","_ref2$target","target","checked","handleSearch","_ref3","value","filteredColumns","_jsx","_objectSpread","appendTo","document","body","buttonSize","buttonStyle","closeOnSelect","label","position","onClose","children","_jsxs","className","Input","placeholder","prefix","Search","type","Typography","style","weight","isNotEmpty","map","_ref4","key","Label","htmlFor","Checkbox","id","_Fragment","displayName","useColumnOrderStore","useColumns","initialHiddenColumns","_ref$initialOrder","initialOrder","columnOrder","setColumnOrder","hiddenColumnHelpers","orderColumns","sort","a","b","indexOf","getColumnData","_ref2$isHidable","_ref2$isReOrderable","isReOrderable","pipe"],"mappings":"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"}