@bigbinary/neeto-molecules 4.0.12 → 4.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/AuditLogs.js +1 -3
  2. package/dist/AuditLogs.js.map +1 -1
  3. package/dist/CalendarView.js +1 -4
  4. package/dist/CalendarView.js.map +1 -1
  5. package/dist/{Chevron-4o5U32u5.js → Chevron-DEQtNhrI.js} +4 -3
  6. package/dist/Chevron-DEQtNhrI.js.map +1 -0
  7. package/dist/{useColumns-BPD5xfeZ.js → Columns-CwbG5wLv.js} +55 -159
  8. package/dist/Columns-CwbG5wLv.js.map +1 -0
  9. package/dist/Columns.js +1 -4
  10. package/dist/Columns.js.map +1 -1
  11. package/dist/ConfigurePageSidebar.js +1 -1
  12. package/dist/Sidebar.js +198 -6
  13. package/dist/Sidebar.js.map +1 -1
  14. package/dist/SubHeader.js +1 -4
  15. package/dist/SubHeader.js.map +1 -1
  16. package/dist/Taxonomy.js +1 -3
  17. package/dist/Taxonomy.js.map +1 -1
  18. package/dist/cjs/AuditLogs.js +1 -3
  19. package/dist/cjs/AuditLogs.js.map +1 -1
  20. package/dist/cjs/CalendarView.js +1 -4
  21. package/dist/cjs/CalendarView.js.map +1 -1
  22. package/dist/cjs/{Chevron-DprQPqED.js → Chevron-u-rD2gAf.js} +4 -2
  23. package/dist/cjs/Chevron-u-rD2gAf.js.map +1 -0
  24. package/dist/cjs/{useColumns-CK2J7GSt.js → Columns-CZDLxh70.js} +52 -160
  25. package/dist/cjs/Columns-CZDLxh70.js.map +1 -0
  26. package/dist/cjs/Columns.js +6 -13
  27. package/dist/cjs/Columns.js.map +1 -1
  28. package/dist/cjs/ConfigurePageSidebar.js +1 -1
  29. package/dist/cjs/Sidebar.js +196 -4
  30. package/dist/cjs/Sidebar.js.map +1 -1
  31. package/dist/cjs/SubHeader.js +2 -5
  32. package/dist/cjs/SubHeader.js.map +1 -1
  33. package/dist/cjs/Taxonomy.js +1 -3
  34. package/dist/cjs/Taxonomy.js.map +1 -1
  35. package/package.json +1 -1
  36. package/src/translations/en.json +3 -0
  37. package/src/translations/fi.json +205 -1
  38. package/src/translations/hr.json +3 -1
  39. package/types/Columns.d.ts +1 -139
  40. package/types/Sidebar.d.ts +1 -0
  41. package/dist/Chevron-4o5U32u5.js.map +0 -1
  42. package/dist/cjs/Chevron-DprQPqED.js.map +0 -1
  43. package/dist/cjs/useColumns-CK2J7GSt.js.map +0 -1
  44. package/dist/useColumns-BPD5xfeZ.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Columns-CZDLxh70.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"],"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, 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 { data: tableConfiguration, isLoading } = useFetchTableConfiguration({\n tableKey,\n });\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 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 (\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.key,\n isShown: !defaultHiddenColumns.includes(column.key),\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.key)\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, // 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 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({ 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, noop } from \"neetocist\";\nimport { Search } from \"neetoicons\";\nimport { Checkbox, Dropdown, Input, Label, Button } from \"neetoui\";\nimport PropTypes from \"prop-types\";\nimport { assoc, isEmpty, pluck, includes } 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 allowConfigurationResetOnUpdate = true,\n onMutationSuccess = noop,\n defaultHiddenColumns = [],\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 updateColumns,\n destroyConfiguration,\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)\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(\"key\", 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: 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\n className=\"neeto-molecules-columns__container\"\n data-cy=\"customize-columns-dropdown-container\"\n >\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 gap-2 p-1 pr-3\">\n <Button\n data-cy=\"column-visibility-hide-all-button\"\n label={t(\"neetoMolecules.columns.hideAll\")}\n style=\"tertiary\"\n onClick={handleHideAllColumns}\n />\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 * Controls whether the table configuration should be reset on adding custom fields (optional).\n */\n allowConfigurationResetOnUpdate: PropTypes.bool,\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 * The function will be called when the mutation is successful (optional).\n */\n onMutationSuccess: PropTypes.func,\n};\n\nColumns.displayName = \"Columns\";\nexport default Columns;\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","arguments","length","useMutationWithInvalidation","keysToInvalidate","useDestroyTableConfiguration","useTableConfigurations","columnData","onMutationSuccess","noop","allowConfigurationResetOnUpdate","defaultHiddenColumns","_useFetchTableConfigu","data","isLoading","_useUpdateTableConfig","onSuccess","updateConfiguration","mutate","_useDestroyTableConfi","destroyConfiguration","processColumnsWithConfiguration","useCallback","originalColumns","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","isShown","customizedColumns","visibleColumnsConfig","visibleColumnKeys","updateColumns","updatedColumns","table_key","hideColumn","columnKey","showColumn","isTableConfigurationLoading","getHidableColumns","removeBy","isHidable","filterBySearchTerm","searchTerm","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","dropdownProps","_objectWithoutProperties","_excluded","Divider","Dropdown","Menu","MenuItem","_useState","useState","_useState2","_slicedToArray","setSearchTerm","_useTranslation","useTranslation","_useTableConfiguratio","handleDragEnd","event","active","over","oldIndex","findIndexBy","newIndex","newOrder","_newOrder$splice","splice","_newOrder$splice2","movedItem","filteredColumns","handleHideAllColumns","columnsToHideKeys","assoc","handleChange","_ref2","_ref2$target","target","dataIndex","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"],"mappings":"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","x_google_ignoreList":[0]}
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var useColumns = require('./useColumns-CK2J7GSt.js');
5
+ var Columns = require('./Columns-CZDLxh70.js');
6
6
  require('@babel/runtime/helpers/defineProperty');
7
7
  require('@babel/runtime/helpers/toConsumableArray');
8
8
  require('@babel/runtime/helpers/slicedToArray');
@@ -26,19 +26,12 @@ require('react/jsx-runtime');
26
26
  require('@tanstack/react-query');
27
27
  require('@bigbinary/neeto-commons-frontend/react-utils/useMutationWithInvalidation');
28
28
  require('axios');
29
- require('zustand');
30
- require('zustand/middleware');
31
- require('@bigbinary/neeto-commons-frontend/utils/general');
32
29
 
33
30
 
34
31
 
35
- exports.COLUMNS_ORDER_STORAGE_KEY = useColumns.COLUMNS_ORDER_STORAGE_KEY;
36
- exports.HIDDEN_COLUMNS_STORAGE_KEY = useColumns.HIDDEN_COLUMNS_STORAGE_KEY;
37
- exports.TABLE_CONFIGURATION_QUERY_KEY = useColumns.TABLE_CONFIGURATION_QUERY_KEY;
38
- exports.default = useColumns.Columns;
39
- exports.useColumnOrderStore = useColumns.useColumnOrderStore;
40
- exports.useColumns = useColumns.useColumns;
41
- exports.useHiddenColumnStore = useColumns.useHiddenColumnStore;
42
- exports.useHiddenColumns = useColumns.useHiddenColumns;
43
- exports.useTableConfigurations = useColumns.useTableConfigurations;
32
+ exports.COLUMNS_ORDER_STORAGE_KEY = Columns.COLUMNS_ORDER_STORAGE_KEY;
33
+ exports.HIDDEN_COLUMNS_STORAGE_KEY = Columns.HIDDEN_COLUMNS_STORAGE_KEY;
34
+ exports.TABLE_CONFIGURATION_QUERY_KEY = Columns.TABLE_CONFIGURATION_QUERY_KEY;
35
+ exports.default = Columns.Columns;
36
+ exports.useTableConfigurations = Columns.useTableConfigurations;
44
37
  //# sourceMappingURL=Columns.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Columns.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Columns.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -7,7 +7,7 @@ var Button = require('@bigbinary/neetoui/Button');
7
7
  var ramda = require('ramda');
8
8
  var reactI18next = require('react-i18next');
9
9
  var reactRouterDom = require('react-router-dom');
10
- var Chevron = require('./Chevron-DprQPqED.js');
10
+ var Chevron = require('./Chevron-u-rD2gAf.js');
11
11
  var jsxRuntime = require('react/jsx-runtime');
12
12
  require('@babel/runtime/helpers/defineProperty');
13
13
  require('@babel/runtime/helpers/objectWithoutProperties');
@@ -12,14 +12,17 @@ var Typography = require('@bigbinary/neetoui/Typography');
12
12
  var ramda = require('ramda');
13
13
  var reactI18next = require('react-i18next');
14
14
  var reactRouterDom = require('react-router-dom');
15
- var Chevron = require('./Chevron-DprQPqED.js');
15
+ var Chevron = require('./Chevron-u-rD2gAf.js');
16
16
  var initializers = require('@bigbinary/neeto-commons-frontend/initializers');
17
17
  var Neeto = require('@bigbinary/neeto-icons/typeface-logos/Neeto');
18
18
  var AppIcons = require('@bigbinary/neeto-icons/typeface-logos');
19
19
  var jsxRuntime = require('react/jsx-runtime');
20
20
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
21
21
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
22
+ var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
22
23
  var Right = require('@bigbinary/neeto-icons/Right');
24
+ var MenuHorizontal = require('@bigbinary/neeto-icons/MenuHorizontal');
25
+ var Dropdown = require('@bigbinary/neetoui/Dropdown');
23
26
  var useKeyboardShortcutsPaneState = require('./useKeyboardShortcutsPaneState-YnXpWOcs.js');
24
27
  require('@bigbinary/neeto-commons-frontend/react-utils');
25
28
  require('@bigbinary/neeto-commons-frontend/utils/general');
@@ -79,6 +82,156 @@ var Header = function Header(_ref) {
79
82
  };
80
83
  var Header$1 = /*#__PURE__*/React.memo(Header);
81
84
 
85
+ function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
86
+ function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
87
+ var PinIcon = function PinIcon(_ref) {
88
+ var size = _ref.size,
89
+ otherProps = _ref.otherProps;
90
+ return /*#__PURE__*/jsxRuntime.jsx("svg", _objectSpread$2(_objectSpread$2({
91
+ fill: "currentColor",
92
+ height: size,
93
+ viewBox: "0 -960 960 960",
94
+ width: size,
95
+ xmlns: "http://www.w3.org/2000/svg"
96
+ }, otherProps), {}, {
97
+ children: /*#__PURE__*/jsxRuntime.jsx("path", {
98
+ d: "m640-480 80 80v80H520v240l-40 40-40-40v-240H240v-80l80-80v-280h-40v-80h400v80h-40zm-286 80h252l-46-46v-314H400v314zm126 0"
99
+ })
100
+ }));
101
+ };
102
+
103
+ 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; }
104
+ 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; }
105
+ var UnpinIcon = function UnpinIcon(_ref) {
106
+ var size = _ref.size,
107
+ otherProps = _ref.otherProps;
108
+ return /*#__PURE__*/jsxRuntime.jsx("svg", _objectSpread$1(_objectSpread$1({
109
+ fill: "currentColor",
110
+ height: size,
111
+ viewBox: "0 -960 960 960",
112
+ width: size,
113
+ xmlns: "http://www.w3.org/2000/svg"
114
+ }, otherProps), {}, {
115
+ children: /*#__PURE__*/jsxRuntime.jsx("path", {
116
+ d: "m640-480 80 80v80H520v240l-40 40-40-40v-240H240v-80l80-80v-280h-40v-80h400v80h-40z"
117
+ })
118
+ }));
119
+ };
120
+
121
+ var _excluded$1 = ["label", "icon", "key", "to", "onClick"];
122
+ var MoreDropdown = function MoreDropdown(_ref) {
123
+ var moreNavLinks = _ref.moreNavLinks,
124
+ isNavLinkPinned = _ref.isNavLinkPinned,
125
+ handleTogglePin = _ref.handleTogglePin;
126
+ var _useTranslation = reactI18next.useTranslation(),
127
+ t = _useTranslation.t;
128
+ var location = reactRouterDom.useLocation();
129
+ var _useState = React.useState(false),
130
+ _useState2 = _slicedToArray(_useState, 2),
131
+ isOpen = _useState2[0],
132
+ setIsOpen = _useState2[1];
133
+ return /*#__PURE__*/jsxRuntime.jsx(Dropdown, {
134
+ isOpen: isOpen,
135
+ closeOnSelect: true,
136
+ appendTo: function appendTo() {
137
+ return document.body;
138
+ },
139
+ position: "right",
140
+ strategy: "fixed",
141
+ zIndex: 99999,
142
+ customTarget: function customTarget() {
143
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
144
+ "data-testid": "more-nav-links-dropdown-button",
145
+ className: classnames("neeto-ui-flex neeto-ui-items-center neeto-ui-no-underline neeto-ui-select-none neeto-molecules-sidebar__link neeto-ui-w-full neeto-ui-cursor-pointer", {
146
+ "neeto-molecules-sidebar__link--hover-active": isOpen
147
+ }),
148
+ onClick: function onClick() {
149
+ return setIsOpen(!isOpen);
150
+ },
151
+ children: [/*#__PURE__*/jsxRuntime.jsx("span", {
152
+ className: "neeto-molecules-sidebar__link-icon",
153
+ children: /*#__PURE__*/jsxRuntime.jsx(MenuHorizontal, {})
154
+ }), /*#__PURE__*/jsxRuntime.jsx(Typography, {
155
+ component: "span",
156
+ style: "body2",
157
+ children: t("neetoMolecules.sidebar.more")
158
+ })]
159
+ });
160
+ },
161
+ onClickOutside: function onClickOutside() {
162
+ return setIsOpen(false);
163
+ },
164
+ onClose: function onClose() {
165
+ return setIsOpen(false);
166
+ },
167
+ children: /*#__PURE__*/jsxRuntime.jsx(Dropdown.Menu, {
168
+ className: "p-0",
169
+ "data-testid": "more-nav-links-dropdown-menu",
170
+ position: "right",
171
+ strategy: "fixed",
172
+ zIndex: 99999,
173
+ children: moreNavLinks.filter(Chevron.filterByPermissions).map(function (navLink, index) {
174
+ var label = navLink.label,
175
+ icon = navLink.icon,
176
+ navLinkKey = navLink.key,
177
+ to = navLink.to,
178
+ onClick = navLink.onClick,
179
+ otherProps = _objectWithoutProperties(navLink, _excluded$1);
180
+ var IconSVG = icon;
181
+ var isPinned = isNavLinkPinned(navLink);
182
+ var url = new URL(to, window.location.href);
183
+ var isActive = function isActive() {
184
+ return ramda.is(Function, otherProps.isActive) ? otherProps.isActive() : location.pathname.startsWith(url.pathname);
185
+ };
186
+ return /*#__PURE__*/jsxRuntime.jsx(Dropdown.MenuItem, {
187
+ "data-testid": label,
188
+ children: /*#__PURE__*/jsxRuntime.jsxs(Chevron.CheckPointNavLinks, {
189
+ onClick: onClick,
190
+ to: to,
191
+ className: classnames("flex cursor-pointer items-center justify-between gap-2 px-2 py-1", {
192
+ "neeto-ui-bg-accent-100 font-semibold": isActive()
193
+ }),
194
+ children: [/*#__PURE__*/jsxRuntime.jsxs("span", {
195
+ className: "flex min-w-0 flex-grow items-center gap-2",
196
+ children: [icon && /*#__PURE__*/jsxRuntime.jsx(IconSVG, {
197
+ className: "flex-shrink-0",
198
+ size: 20
199
+ }), /*#__PURE__*/jsxRuntime.jsx(Typography, {
200
+ className: "min-w-0 flex-grow",
201
+ component: "span",
202
+ style: "body2",
203
+ children: label
204
+ })]
205
+ }), /*#__PURE__*/jsxRuntime.jsx(Button, {
206
+ className: "flex-shrink-0",
207
+ size: "small",
208
+ style: "text",
209
+ icon: isPinned ? function () {
210
+ return /*#__PURE__*/jsxRuntime.jsx(UnpinIcon, {
211
+ otherProps: {},
212
+ size: 16
213
+ });
214
+ } : function () {
215
+ return /*#__PURE__*/jsxRuntime.jsx(PinIcon, {
216
+ otherProps: {},
217
+ size: 16
218
+ });
219
+ },
220
+ tooltipProps: {
221
+ content: isPinned ? t("neetoMolecules.sidebar.unpin") : t("neetoMolecules.sidebar.pin"),
222
+ position: "right"
223
+ },
224
+ onClick: function onClick(event) {
225
+ return handleTogglePin(navLink, event);
226
+ }
227
+ })]
228
+ })
229
+ }, navLinkKey || index);
230
+ })
231
+ })
232
+ });
233
+ };
234
+
82
235
  var _excluded = ["label", "to", "icon", "items", "isConfigureNavLink", "isCountsLoading", "count", "component", "onClick"];
83
236
  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; }
84
237
  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; }
@@ -87,6 +240,7 @@ var renderCount = function renderCount(count) {
87
240
  };
88
241
  var Links = function Links(_ref) {
89
242
  var navLinks = _ref.navLinks,
243
+ moreNavLinks = _ref.moreNavLinks,
90
244
  isCountsLoadingDeprecated = _ref.isCountsLoading,
91
245
  setSelectedNavLinkRoute = _ref.setSelectedNavLinkRoute;
92
246
  var location = reactRouterDom.useLocation();
@@ -94,6 +248,10 @@ var Links = function Links(_ref) {
94
248
  _useState2 = _slicedToArray(_useState, 2),
95
249
  isActiveLinkExpanded = _useState2[0],
96
250
  setIsActiveLinkExpanded = _useState2[1];
251
+ var _useLocalStorage = useLocalStorage(Chevron.PINNED_MORE_NAV_LINKS_KEY, []),
252
+ _useLocalStorage2 = _slicedToArray(_useLocalStorage, 2),
253
+ pinnedNavLinks = _useLocalStorage2[0],
254
+ setPinnedNavLinks = _useLocalStorage2[1];
97
255
  var handleNavLinkClick = function handleNavLinkClick(_ref2) {
98
256
  var event = _ref2.event,
99
257
  isActive = _ref2.isActive,
@@ -110,9 +268,36 @@ var Links = function Links(_ref) {
110
268
  }
111
269
  setIsActiveLinkExpanded(true);
112
270
  };
113
- return /*#__PURE__*/jsxRuntime.jsx("div", {
271
+ var handleTogglePin = function handleTogglePin(navLink, event) {
272
+ event.preventDefault();
273
+ event.stopPropagation();
274
+ var navLinkKey = navLink.key || navLink.to;
275
+ var isPinned = pinnedNavLinks.includes(navLinkKey);
276
+ if (isPinned) {
277
+ setPinnedNavLinks(pinnedNavLinks.filter(neetoCist.isNot(navLinkKey)));
278
+ } else {
279
+ setPinnedNavLinks([].concat(_toConsumableArray(pinnedNavLinks), [navLinkKey]));
280
+ }
281
+ };
282
+ var isNavLinkPinned = function isNavLinkPinned(navLink) {
283
+ if (!navLink) return false;
284
+ var navLinkKey = navLink.key || navLink.to;
285
+ return pinnedNavLinks.includes(navLinkKey);
286
+ };
287
+ var pinnedItems = moreNavLinks ? moreNavLinks.filter(function (navLink) {
288
+ return isNavLinkPinned(navLink);
289
+ }) : [];
290
+ var activeMoreNavLink = moreNavLinks ? moreNavLinks.find(function (navLink) {
291
+ return navLink && location.pathname.startsWith(navLink.to);
292
+ }) : null;
293
+ var additionalItems = _toConsumableArray(pinnedItems);
294
+ if (activeMoreNavLink && !isNavLinkPinned(activeMoreNavLink)) {
295
+ additionalItems.push(activeMoreNavLink);
296
+ }
297
+ var combinedNavLinks = [].concat(_toConsumableArray(navLinks), _toConsumableArray(additionalItems));
298
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
114
299
  className: "neeto-molecules-sidebar__links neeto-molecules-sidebar__no-shrinkable",
115
- children: navLinks.filter(Chevron.filterByPermissions).map(function (navLink, index) {
300
+ children: [combinedNavLinks.filter(Chevron.filterByPermissions).map(function (navLink, index) {
116
301
  var label = navLink.label,
117
302
  to = navLink.to,
118
303
  icon = navLink.icon,
@@ -178,12 +363,18 @@ var Links = function Links(_ref) {
178
363
  })]
179
364
  })]
180
365
  }, navLink.key || index);
181
- })
366
+ }), neetoCist.isNotEmpty(moreNavLinks) && /*#__PURE__*/jsxRuntime.jsx(MoreDropdown, {
367
+ handleTogglePin: handleTogglePin,
368
+ isNavLinkPinned: isNavLinkPinned,
369
+ moreNavLinks: moreNavLinks
370
+ })]
182
371
  });
183
372
  };
184
373
 
185
374
  var Sidebar = function Sidebar(_ref) {
186
375
  var navLinks = _ref.navLinks,
376
+ _ref$moreNavLinks = _ref.moreNavLinks,
377
+ moreNavLinks = _ref$moreNavLinks === void 0 ? [] : _ref$moreNavLinks,
187
378
  customLogo = _ref.customLogo,
188
379
  _ref$isCountsLoading = _ref.isCountsLoading,
189
380
  isCountsLoading = _ref$isCountsLoading === void 0 ? false : _ref$isCountsLoading,
@@ -364,6 +555,7 @@ var Sidebar = function Sidebar(_ref) {
364
555
  navLink: activeLink
365
556
  }) : /*#__PURE__*/jsxRuntime.jsx(Links, {
366
557
  isCountsLoading: isCountsLoading,
558
+ moreNavLinks: moreNavLinks,
367
559
  navLinks: navLinks,
368
560
  setSelectedNavLinkRoute: setSelectedNavLinkRoute
369
561
  })]