@leav/ui 1.12.0-8d8706f0 → 1.12.0-a3cb7513

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 (97) hide show
  1. package/dist/__mocks__/utils.d.ts +3 -0
  2. package/dist/__mocks__/utils.js +2 -0
  3. package/dist/__mocks__/utils.js.map +1 -0
  4. package/dist/_gqlTypes/index.d.ts +243 -94
  5. package/dist/_gqlTypes/index.js +190 -48
  6. package/dist/_gqlTypes/index.js.map +1 -1
  7. package/dist/components/CreateDirectory/CreateDirectory.js +1 -2
  8. package/dist/components/CreateDirectory/CreateDirectory.js.map +1 -1
  9. package/dist/components/Explorer/DataView.js +1 -1
  10. package/dist/components/Explorer/DataView.js.map +1 -1
  11. package/dist/components/Explorer/_constants.d.ts +0 -1
  12. package/dist/components/Explorer/_constants.js +0 -1
  13. package/dist/components/Explorer/_constants.js.map +1 -1
  14. package/dist/components/Explorer/actions-item/useEditStatusItemAction.js +5 -9
  15. package/dist/components/Explorer/actions-item/useEditStatusItemAction.js.map +1 -1
  16. package/dist/components/Explorer/actions-mass/edit-attribute/EditAttributeMassActionModal.d.ts +4 -9
  17. package/dist/components/Explorer/actions-mass/edit-attribute/EditAttributeMassActionModal.js +3 -11
  18. package/dist/components/Explorer/actions-mass/edit-attribute/EditAttributeMassActionModal.js.map +1 -1
  19. package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValuesMapping.d.ts +8 -8
  20. package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValuesMapping.js +26 -13
  21. package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValuesMapping.js.map +1 -1
  22. package/dist/components/Explorer/actions-mass/edit-attribute/TreeNodeRemap.d.ts +7 -0
  23. package/dist/components/Explorer/actions-mass/edit-attribute/TreeNodeRemap.js +30 -0
  24. package/dist/components/Explorer/actions-mass/edit-attribute/TreeNodeRemap.js.map +1 -0
  25. package/dist/components/Explorer/actions-mass/edit-attribute/_types.d.ts +23 -0
  26. package/dist/components/Explorer/actions-mass/edit-attribute/_types.js +2 -0
  27. package/dist/components/Explorer/actions-mass/edit-attribute/_types.js.map +1 -0
  28. package/dist/components/Explorer/actions-mass/edit-attribute/useMassEditableAttributes.d.ts +4 -0
  29. package/dist/components/Explorer/actions-mass/edit-attribute/useMassEditableAttributes.js +46 -0
  30. package/dist/components/Explorer/actions-mass/edit-attribute/useMassEditableAttributes.js.map +1 -0
  31. package/dist/components/Explorer/actions-mass/edit-attribute/useTreeNodeRemapping.d.ts +12 -0
  32. package/dist/components/Explorer/actions-mass/edit-attribute/useTreeNodeRemapping.js +24 -0
  33. package/dist/components/Explorer/actions-mass/edit-attribute/useTreeNodeRemapping.js.map +1 -0
  34. package/dist/components/Explorer/actions-mass/edit-attribute/useValuesDistribution.d.ts +13 -0
  35. package/dist/components/Explorer/actions-mass/edit-attribute/useValuesDistribution.js +28 -0
  36. package/dist/components/Explorer/actions-mass/edit-attribute/useValuesDistribution.js.map +1 -0
  37. package/dist/components/Explorer/actions-mass/useDeactivateMassAction.js +6 -10
  38. package/dist/components/Explorer/actions-mass/useDeactivateMassAction.js.map +1 -1
  39. package/dist/components/Explorer/actions-mass/useDeleteLinkValues.js +5 -8
  40. package/dist/components/Explorer/actions-mass/useDeleteLinkValues.js.map +1 -1
  41. package/dist/components/Explorer/actions-mass/useEditAttributeMassAction.d.ts +8 -2
  42. package/dist/components/Explorer/actions-mass/useEditAttributeMassAction.js +104 -80
  43. package/dist/components/Explorer/actions-mass/useEditAttributeMassAction.js.map +1 -1
  44. package/dist/components/Explorer/actions-mass/useMassActions.js +18 -13
  45. package/dist/components/Explorer/actions-mass/useMassActions.js.map +1 -1
  46. package/dist/components/Explorer/conditionsHelper.d.ts +2 -1
  47. package/dist/components/Explorer/conditionsHelper.js.map +1 -1
  48. package/dist/components/Filters/conditionsHelper.d.ts +2 -1
  49. package/dist/components/Filters/conditionsHelper.js.map +1 -1
  50. package/dist/components/Filters/filter-items/CommonFilterItem.js.map +1 -1
  51. package/dist/components/Filters/filter-items/filter-type/useConditionOptionsByType.js.map +1 -1
  52. package/dist/components/Filters/useTransformFilters.js.map +1 -1
  53. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/unlink-record/useUnlinkRecord.d.ts +1 -4
  54. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/unlink-record/useUnlinkRecord.js +5 -9
  55. package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/unlink-record/useUnlinkRecord.js.map +1 -1
  56. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/DeleteAllValuesButton.js +4 -8
  57. package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/DeleteAllValuesButton.js.map +1 -1
  58. package/dist/components/RecordEdition/EditRecordModal/EditRecordModal.js +2 -3
  59. package/dist/components/RecordEdition/EditRecordModal/EditRecordModal.js.map +1 -1
  60. package/dist/components/RecordEdition/hooks/useCreateCancelConfirm/useCreateCancelConfirm.js +4 -8
  61. package/dist/components/RecordEdition/hooks/useCreateCancelConfirm/useCreateCancelConfirm.js.map +1 -1
  62. package/dist/components/UploadFiles/UploadFiles.js +1 -2
  63. package/dist/components/UploadFiles/UploadFiles.js.map +1 -1
  64. package/dist/constants.d.ts +1 -6
  65. package/dist/constants.js +1 -6
  66. package/dist/constants.js.map +1 -1
  67. package/dist/hooks/index.d.ts +1 -0
  68. package/dist/hooks/index.js +1 -0
  69. package/dist/hooks/index.js.map +1 -1
  70. package/dist/hooks/useConfirmModal/__mocks__/index.d.ts +1 -0
  71. package/dist/hooks/useConfirmModal/__mocks__/index.js +5 -0
  72. package/dist/hooks/useConfirmModal/__mocks__/index.js.map +1 -0
  73. package/dist/hooks/useConfirmModal/__mocks__/useConfirmModal.d.ts +3 -0
  74. package/dist/hooks/useConfirmModal/__mocks__/useConfirmModal.js +7 -0
  75. package/dist/hooks/useConfirmModal/__mocks__/useConfirmModal.js.map +1 -0
  76. package/dist/hooks/useConfirmModal/index.d.ts +1 -0
  77. package/dist/hooks/useConfirmModal/index.js +5 -0
  78. package/dist/hooks/useConfirmModal/index.js.map +1 -0
  79. package/dist/hooks/useConfirmModal/useConfirmModal.d.ts +7 -0
  80. package/dist/hooks/useConfirmModal/useConfirmModal.js +25 -0
  81. package/dist/hooks/useConfirmModal/useConfirmModal.js.map +1 -0
  82. package/dist/hooks/useSharedTranslation/__mocks__/useSharedTranslation.js.map +1 -1
  83. package/dist/locales/en/shared.json +4 -4
  84. package/dist/locales/fr/shared.json +5 -5
  85. package/package.json +8 -8
  86. package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValueLine.d.ts +0 -8
  87. package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValueLine.js +0 -40
  88. package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValueLine.js.map +0 -1
  89. package/dist/components/Explorer/actions-mass/edit-attribute/useCountValuesOccurrencesHook.d.ts +0 -17
  90. package/dist/components/Explorer/actions-mass/edit-attribute/useCountValuesOccurrencesHook.js +0 -42
  91. package/dist/components/Explorer/actions-mass/edit-attribute/useCountValuesOccurrencesHook.js.map +0 -1
  92. package/dist/components/Explorer/actions-mass/edit-attribute/useListEditableAttributeHook.d.ts +0 -5
  93. package/dist/components/Explorer/actions-mass/edit-attribute/useListEditableAttributeHook.js +0 -20
  94. package/dist/components/Explorer/actions-mass/edit-attribute/useListEditableAttributeHook.js.map +0 -1
  95. package/dist/components/Explorer/actions-mass/edit-attribute/useListTreeAttributeValuesHook.d.ts +0 -12
  96. package/dist/components/Explorer/actions-mass/edit-attribute/useListTreeAttributeValuesHook.js +0 -30
  97. package/dist/components/Explorer/actions-mass/edit-attribute/useListTreeAttributeValuesHook.js.map +0 -1
@@ -7,7 +7,6 @@ import { useState } from 'react';
7
7
  import { useSharedTranslation } from '../../hooks/useSharedTranslation';
8
8
  import { TreeBehavior, useCreateDirectoryMutation, useDoesFileExistAsChildLazyQuery, useGetTreeLibrariesQuery, } from '../../_gqlTypes';
9
9
  import { SelectTreeNode } from '../SelectTreeNode';
10
- import { Z_INDEX_MODAL_OVERLAY } from '../../constants';
11
10
  function CreateDirectory({ defaultSelectedKey, libraryId, onCompleted, onClose }) {
12
11
  const { t } = useSharedTranslation();
13
12
  const { token } = theme.useToken();
@@ -111,7 +110,7 @@ function CreateDirectory({ defaultSelectedKey, libraryId, onCompleted, onClose }
111
110
  },
112
111
  ];
113
112
  const items = steps.map(item => ({ key: item.title, title: item.title }));
114
- return (_jsxs(Modal, { "data-testid": "create-directory-modal", title: t('create_directory.title'), open: true, width: "70rem", zIndex: Z_INDEX_MODAL_OVERLAY, onCancel: _onClose, footer: _jsxs("div", { style: { marginTop: 50 }, children: [currentStep > 0 && (_jsx(Button, { "data-testid": "prev-btn", onClick: () => prev(), children: t('create_directory.previous') })), currentStep < steps.length - 1 && (_jsx(Button, { "data-testid": "next-btn", disabled: !selectedNodeKey, type: "primary", onClick: () => next(), children: t('create_directory.next') })), currentStep > 0 && (_jsx(Button, { "data-testid": "create-btn", loading: loading, disabled: !directoryName, className: "submit-btn", title: "Create", type: "primary", onClick: _handleCreateClick, children: t('create_directory.create_step_title') }))] }), children: [_jsx(Steps, { status: status, current: currentStep, items: items }), _jsx("div", { style: contentStyle, children: steps[currentStep].content })] }));
113
+ return (_jsxs(Modal, { "data-testid": "create-directory-modal", title: t('create_directory.title'), open: true, width: "70rem", onCancel: _onClose, footer: _jsxs("div", { style: { marginTop: 50 }, children: [currentStep > 0 && (_jsx(Button, { "data-testid": "prev-btn", onClick: () => prev(), children: t('create_directory.previous') })), currentStep < steps.length - 1 && (_jsx(Button, { "data-testid": "next-btn", disabled: !selectedNodeKey, type: "primary", onClick: () => next(), children: t('create_directory.next') })), currentStep > 0 && (_jsx(Button, { "data-testid": "create-btn", loading: loading, disabled: !directoryName, className: "submit-btn", title: "Create", type: "primary", onClick: _handleCreateClick, children: t('create_directory.create_step_title') }))] }), children: [_jsx(Steps, { status: status, current: currentStep, items: items }), _jsx("div", { style: contentStyle, children: steps[currentStep].content })] }));
115
114
  }
116
115
  export default CreateDirectory;
117
116
  //# sourceMappingURL=CreateDirectory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreateDirectory.js","sourceRoot":"","sources":["../../../src/components/CreateDirectory/CreateDirectory.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {App, Button, Input, Modal, type StepProps, Steps, theme} from 'antd';\nimport {useState} from 'react';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {type ITreeNodeWithRecord} from '_ui/types/trees';\nimport {\n type CreateDirectoryMutation,\n TreeBehavior,\n useCreateDirectoryMutation,\n useDoesFileExistAsChildLazyQuery,\n useGetTreeLibrariesQuery,\n} from '_ui/_gqlTypes';\nimport {SelectTreeNode} from '../SelectTreeNode';\nimport {Z_INDEX_MODAL_OVERLAY} from '_ui/constants';\n\ninterface ICreateDirectoryProps {\n defaultSelectedKey?: string;\n libraryId: string;\n onClose: () => void;\n onCompleted?: (data: CreateDirectoryMutation['createDirectory']) => void;\n}\n\nfunction CreateDirectory({defaultSelectedKey, libraryId, onCompleted, onClose}: ICreateDirectoryProps): JSX.Element {\n const {t} = useSharedTranslation();\n const {token} = theme.useToken();\n const [selectedNodeKey, setSelectedNodeKey] = useState<string>(defaultSelectedKey);\n const [directoryName, setDirectoryName] = useState<string>();\n const [status, setStatus] = useState<StepProps['status']>('wait');\n const [currentStep, setCurrentStep] = useState(!!defaultSelectedKey ? 1 : 0);\n const [treeId, setTreeId] = useState<string>();\n const {modal} = App.useApp();\n\n const [runDoesFileExistAsChild] = useDoesFileExistAsChildLazyQuery({\n fetchPolicy: 'no-cache',\n });\n\n const _checkDirectoryExists = async (parentNode: string, name: string): Promise<boolean> => {\n const isFileExists = await runDoesFileExistAsChild({\n variables: {\n treeId,\n parentNode: parentNode !== treeId ? parentNode : null,\n filename: name,\n },\n });\n\n return isFileExists.data.doesFileExistAsChild;\n };\n\n useGetTreeLibrariesQuery({\n variables: {\n library: libraryId,\n },\n onCompleted: getTreeLibrariesData => {\n const linkedTree = getTreeLibrariesData.trees.list.filter(\n tree => tree.system && tree.behavior === TreeBehavior.files,\n )[0];\n\n setTreeId(linkedTree.id);\n },\n });\n\n const [runCreateDirectory, {loading}] = useCreateDirectoryMutation({\n fetchPolicy: 'no-cache',\n onCompleted: data => {\n if (typeof onCompleted !== 'undefined') {\n onCompleted(data.createDirectory);\n }\n\n setStatus('finish');\n },\n onError: err => {\n setStatus('error');\n },\n });\n\n const _handleCreateClick = async () => {\n if (await _checkDirectoryExists(selectedNodeKey, directoryName)) {\n showDuplicateNameModal();\n return;\n }\n\n setStatus('process');\n\n await runCreateDirectory({\n variables: {\n library: libraryId,\n nodeId: selectedNodeKey,\n name: directoryName,\n },\n });\n\n _onClose();\n };\n\n const _onClose = () => {\n setDirectoryName('');\n onClose();\n };\n\n const contentStyle: React.CSSProperties = {\n marginTop: 16,\n };\n\n const next = () => {\n setCurrentStep(currentStep + 1);\n };\n\n const prev = () => {\n setCurrentStep(currentStep - 1);\n };\n\n const onSelectPath = async (node: ITreeNodeWithRecord, selected: boolean) => {\n const newSelectedNode = !selected ? undefined : node;\n\n if (directoryName && newSelectedNode && (await _checkDirectoryExists(newSelectedNode?.id, directoryName))) {\n showDuplicateNameModal();\n return;\n }\n\n setSelectedNodeKey(newSelectedNode?.key);\n };\n\n const showDuplicateNameModal = () => {\n modal.warning({\n className: 'warning-duplicate-modal',\n closable: true,\n open: true,\n title: t('create_directory.duplicate_modal.title'),\n okText: t('global.ok'),\n content: <p>{t('create_directory.duplicate_modal.message', {directoryName})}</p>,\n });\n };\n\n const steps = [\n {\n title: t('create_directory.select_path_step_title'),\n content: (\n <div\n data-testid=\"select-tree-node\"\n style={{\n borderRadius: token.borderRadiusLG,\n border: `1px dashed ${token.colorBorder}`,\n }}\n >\n {treeId && libraryId && (\n <SelectTreeNode\n treeId={treeId}\n onSelect={onSelectPath}\n selectedNodes={[selectedNodeKey]}\n canSelectRoot\n selectableLibraries={[libraryId]}\n />\n )}\n </div>\n ),\n },\n {\n title: t('create_directory.choose_name_step_title'),\n content: (\n <Input\n data-testid=\"directory-name-input\"\n placeholder={t('create_directory.directory_name')}\n value={directoryName}\n onChange={e => setDirectoryName(e.target.value)}\n />\n ),\n },\n ];\n\n const items = steps.map(item => ({key: item.title, title: item.title}));\n\n return (\n <Modal\n data-testid=\"create-directory-modal\"\n title={t('create_directory.title')}\n open\n width=\"70rem\"\n zIndex={Z_INDEX_MODAL_OVERLAY}\n onCancel={_onClose}\n footer={\n <div style={{marginTop: 50}}>\n {currentStep > 0 && (\n <Button data-testid=\"prev-btn\" onClick={() => prev()}>\n {t('create_directory.previous')}\n </Button>\n )}\n {currentStep < steps.length - 1 && (\n <Button\n data-testid=\"next-btn\"\n disabled={!selectedNodeKey}\n type=\"primary\"\n onClick={() => next()}\n >\n {t('create_directory.next')}\n </Button>\n )}\n {currentStep > 0 && (\n <Button\n data-testid=\"create-btn\"\n loading={loading}\n disabled={!directoryName}\n className=\"submit-btn\"\n title=\"Create\"\n type=\"primary\"\n onClick={_handleCreateClick}\n >\n {t('create_directory.create_step_title')}\n </Button>\n )}\n </div>\n }\n >\n <Steps status={status} current={currentStep} items={items} />\n <div style={contentStyle}>{steps[currentStep].content}</div>\n </Modal>\n );\n}\n\nexport default CreateDirectory;\n"]}
1
+ {"version":3,"file":"CreateDirectory.js","sourceRoot":"","sources":["../../../src/components/CreateDirectory/CreateDirectory.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {App, Button, Input, Modal, type StepProps, Steps, theme} from 'antd';\nimport {useState} from 'react';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {type ITreeNodeWithRecord} from '_ui/types/trees';\nimport {\n type CreateDirectoryMutation,\n TreeBehavior,\n useCreateDirectoryMutation,\n useDoesFileExistAsChildLazyQuery,\n useGetTreeLibrariesQuery,\n} from '_ui/_gqlTypes';\nimport {SelectTreeNode} from '../SelectTreeNode';\n\ninterface ICreateDirectoryProps {\n defaultSelectedKey?: string;\n libraryId: string;\n onClose: () => void;\n onCompleted?: (data: CreateDirectoryMutation['createDirectory']) => void;\n}\n\nfunction CreateDirectory({defaultSelectedKey, libraryId, onCompleted, onClose}: ICreateDirectoryProps): JSX.Element {\n const {t} = useSharedTranslation();\n const {token} = theme.useToken();\n const [selectedNodeKey, setSelectedNodeKey] = useState<string>(defaultSelectedKey);\n const [directoryName, setDirectoryName] = useState<string>();\n const [status, setStatus] = useState<StepProps['status']>('wait');\n const [currentStep, setCurrentStep] = useState(!!defaultSelectedKey ? 1 : 0);\n const [treeId, setTreeId] = useState<string>();\n const {modal} = App.useApp();\n\n const [runDoesFileExistAsChild] = useDoesFileExistAsChildLazyQuery({\n fetchPolicy: 'no-cache',\n });\n\n const _checkDirectoryExists = async (parentNode: string, name: string): Promise<boolean> => {\n const isFileExists = await runDoesFileExistAsChild({\n variables: {\n treeId,\n parentNode: parentNode !== treeId ? parentNode : null,\n filename: name,\n },\n });\n\n return isFileExists.data.doesFileExistAsChild;\n };\n\n useGetTreeLibrariesQuery({\n variables: {\n library: libraryId,\n },\n onCompleted: getTreeLibrariesData => {\n const linkedTree = getTreeLibrariesData.trees.list.filter(\n tree => tree.system && tree.behavior === TreeBehavior.files,\n )[0];\n\n setTreeId(linkedTree.id);\n },\n });\n\n const [runCreateDirectory, {loading}] = useCreateDirectoryMutation({\n fetchPolicy: 'no-cache',\n onCompleted: data => {\n if (typeof onCompleted !== 'undefined') {\n onCompleted(data.createDirectory);\n }\n\n setStatus('finish');\n },\n onError: err => {\n setStatus('error');\n },\n });\n\n const _handleCreateClick = async () => {\n if (await _checkDirectoryExists(selectedNodeKey, directoryName)) {\n showDuplicateNameModal();\n return;\n }\n\n setStatus('process');\n\n await runCreateDirectory({\n variables: {\n library: libraryId,\n nodeId: selectedNodeKey,\n name: directoryName,\n },\n });\n\n _onClose();\n };\n\n const _onClose = () => {\n setDirectoryName('');\n onClose();\n };\n\n const contentStyle: React.CSSProperties = {\n marginTop: 16,\n };\n\n const next = () => {\n setCurrentStep(currentStep + 1);\n };\n\n const prev = () => {\n setCurrentStep(currentStep - 1);\n };\n\n const onSelectPath = async (node: ITreeNodeWithRecord, selected: boolean) => {\n const newSelectedNode = !selected ? undefined : node;\n\n if (directoryName && newSelectedNode && (await _checkDirectoryExists(newSelectedNode?.id, directoryName))) {\n showDuplicateNameModal();\n return;\n }\n\n setSelectedNodeKey(newSelectedNode?.key);\n };\n\n const showDuplicateNameModal = () => {\n modal.warning({\n className: 'warning-duplicate-modal',\n closable: true,\n open: true,\n title: t('create_directory.duplicate_modal.title'),\n okText: t('global.ok'),\n content: <p>{t('create_directory.duplicate_modal.message', {directoryName})}</p>,\n });\n };\n\n const steps = [\n {\n title: t('create_directory.select_path_step_title'),\n content: (\n <div\n data-testid=\"select-tree-node\"\n style={{\n borderRadius: token.borderRadiusLG,\n border: `1px dashed ${token.colorBorder}`,\n }}\n >\n {treeId && libraryId && (\n <SelectTreeNode\n treeId={treeId}\n onSelect={onSelectPath}\n selectedNodes={[selectedNodeKey]}\n canSelectRoot\n selectableLibraries={[libraryId]}\n />\n )}\n </div>\n ),\n },\n {\n title: t('create_directory.choose_name_step_title'),\n content: (\n <Input\n data-testid=\"directory-name-input\"\n placeholder={t('create_directory.directory_name')}\n value={directoryName}\n onChange={e => setDirectoryName(e.target.value)}\n />\n ),\n },\n ];\n\n const items = steps.map(item => ({key: item.title, title: item.title}));\n\n return (\n <Modal\n data-testid=\"create-directory-modal\"\n title={t('create_directory.title')}\n open\n width=\"70rem\"\n onCancel={_onClose}\n footer={\n <div style={{marginTop: 50}}>\n {currentStep > 0 && (\n <Button data-testid=\"prev-btn\" onClick={() => prev()}>\n {t('create_directory.previous')}\n </Button>\n )}\n {currentStep < steps.length - 1 && (\n <Button\n data-testid=\"next-btn\"\n disabled={!selectedNodeKey}\n type=\"primary\"\n onClick={() => next()}\n >\n {t('create_directory.next')}\n </Button>\n )}\n {currentStep > 0 && (\n <Button\n data-testid=\"create-btn\"\n loading={loading}\n disabled={!directoryName}\n className=\"submit-btn\"\n title=\"Create\"\n type=\"primary\"\n onClick={_handleCreateClick}\n >\n {t('create_directory.create_step_title')}\n </Button>\n )}\n </div>\n }\n >\n <Steps status={status} current={currentStep} items={items} />\n <div style={contentStyle}>{steps[currentStep].content}</div>\n </Modal>\n );\n}\n\nexport default CreateDirectory;\n"]}
@@ -127,7 +127,7 @@ export const DataView = memo(({ dataGroupedFilteredSorted, attributesToDisplay,
127
127
  // TODO: handle columns width based on attribute type/format
128
128
  return (_jsxs(DataViewContainerDivStyled, { ref: containerRef, className: cn({ headless: hideTableHeader }), children: [_jsx(StyledTable, { className: cn({
129
129
  'row-clickable': itemActionToUseOnRowClick,
130
- }), showHeader: dataGroupedFilteredSorted.length > 0 && !hideTableHeader, headerLineSize: useSmallHeaderSize ? 's' : undefined, columns: [whoIAmColumn, ...columns], tableLayout: "fixed", scroll: {
130
+ }), showHeader: dataGroupedFilteredSorted.length > 0 && !hideTableHeader, headerLineSize: useSmallHeaderSize ? 's' : 'm', columns: [whoIAmColumn, ...columns], tableLayout: "fixed", scroll: {
131
131
  y: tableBodyHeight ?? (hideTableHeader ? '100%' : scrollHeight),
132
132
  x: '100%',
133
133
  }, dataSource: dataGroupedFilteredSorted, pagination: false, rowSelection: _rowSelection, onRow: (item) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"DataView.js","sourceRoot":"","sources":["../../../src/components/Explorer/DataView.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\n\nimport {type ComponentProps, type FunctionComponent, type Key, memo, useCallback, useState} from 'react';\nimport {KitPagination, KitTable} from 'aristid-ds';\nimport {type KitTableColumnType} from 'aristid-ds/dist/Kit/DataDisplay/Table/types';\nimport styled from 'styled-components';\nimport isEqual from 'lodash/isEqual';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {type IExplorerData, type IItemAction, type IItemData} from './_types';\nimport {TableCell} from './TableCell';\nimport {defaultPaginationHeight, useTableScrollableHeight} from './useTableScrollableHeight';\nimport {useColumnWidth} from './useColumnWidth';\nimport {WHO_AM_I_COLUMN} from './_constants';\nimport {TableNameCell} from './TableNameCell';\nimport cn from 'classnames';\nimport {throttle} from 'lodash';\n\nconst tableRowHeight = 56;\nconst tableHeaderMinLineHeight = 22;\n\nconst DataViewContainerDivStyled = styled.div`\n flex: 1 1 min-content;\n overflow: hidden;\n\n &.headless {\n overflow-y: auto;\n }\n\n .kit-table {\n padding-bottom: ${defaultPaginationHeight}px;\n position: relative;\n }\n\n .pagination {\n flex: 0 0 auto;\n justify-content: center;\n display: flex;\n padding-top: calc(var(--general-spacing-xs) * 1px);\n }\n`;\n\n// TODO: Table component should be updated fix header display\nconst StyledTable = styled(KitTable)`\n .ant-table-thead > tr > th {\n padding-top: calc(var(--general-spacing-xxs) * 1px) !important;\n padding-bottom: calc(var(--general-spacing-xxs) * 1px) !important;\n height: ${tableRowHeight}px;\n\n .ant-table-cell {\n min-height: ${tableHeaderMinLineHeight}px;\n height: auto !important;\n padding: 0 calc(var(--general-spacing-s) * 1px) 0 0;\n }\n }\n\n .ant-table-tbody > tr:hover .ant-table-cell {\n .actions-list {\n display: inline-flex;\n }\n }\n\n .ant-table-tbody > tr {\n .ant-table-cell {\n min-height: ${tableRowHeight}px;\n height: auto !important;\n .actions-list {\n margin-left: auto;\n }\n }\n }\n\n &.row-clickable {\n .ant-table-tbody > tr {\n cursor: pointer;\n }\n }\n`;\n\ninterface IDataViewProps {\n dataGroupedFilteredSorted: IItemData[];\n itemActions: IItemAction[];\n attributesProperties: IExplorerData['attributes'];\n attributesToDisplay: string[];\n paginationProps?: {\n pageSizeOptions: number[];\n totalCount: number;\n currentPage: number;\n pageSize: number;\n setNewPage: (page: number, pageSize: number) => void;\n setNewPageSize: (page: number, pageSize: number) => void;\n };\n selection: {\n onSelectItem?: null | ((selectedItem: IItemData) => void);\n onSelectionChange: null | ((keys: Key[]) => void);\n isMassSelectionAll: boolean;\n selectedKeys: Key[];\n mode?: 'simple' | 'multiple';\n };\n hideTableHeader: boolean;\n useSmallHeaderSize?: boolean;\n tableBodyHeight?: string;\n}\n\n// TODO: tests will fail if we don't check attributeToDisplay because we have a render with no attributes but data is present. We should check why there's this behavior\nconst arePropsEqual = (prevProps: IDataViewProps, nextProps: IDataViewProps) =>\n isEqual(\n {\n attributesToDisplay: prevProps.attributesToDisplay,\n data: prevProps.dataGroupedFilteredSorted,\n selectedKeys: prevProps.selection.selectedKeys,\n },\n {\n attributesToDisplay: nextProps.attributesToDisplay,\n data: nextProps.dataGroupedFilteredSorted,\n selectedKeys: nextProps.selection.selectedKeys,\n },\n );\n\nexport const DataView: FunctionComponent<IDataViewProps> = memo(\n ({\n dataGroupedFilteredSorted,\n attributesToDisplay,\n attributesProperties,\n paginationProps,\n itemActions,\n selection: {onSelectItem, onSelectionChange, selectedKeys, isMassSelectionAll, mode},\n hideTableHeader = false,\n useSmallHeaderSize = false,\n tableBodyHeight,\n }) => {\n const {t} = useSharedTranslation();\n\n const {containerRef, scrollHeight} = useTableScrollableHeight(!!paginationProps);\n const {getFieldColumnWidth} = useColumnWidth();\n\n const getColumnProps = (attributeName: string) =>\n ({\n title: () => attributesProperties[attributeName].label,\n ellipsis: useSmallHeaderSize,\n width: getFieldColumnWidth(attributesProperties[attributeName]),\n shouldCellUpdate: (record, prevRecord) =>\n isMassSelectionAll ||\n record.propertiesById[attributeName] !== prevRecord.propertiesById[attributeName],\n render: (_, item) => (\n <TableCell\n attributeProperties={attributesProperties[attributeName]}\n values={item.propertiesById[attributeName]}\n />\n ),\n }) satisfies KitTableColumnType<IItemData>;\n\n const columns = attributesToDisplay.map(getColumnProps);\n\n const whoIAmColumn = useWhoAmIColumn({\n ...getColumnProps(WHO_AM_I_COLUMN),\n fixed: 'left',\n render: (_, item) => <TableNameCell item={item} itemActions={itemActions} />,\n shouldCellUpdate: (record, prevRecord) => isMassSelectionAll || record.whoAmI !== prevRecord.whoAmI,\n });\n\n const itemActionToUseOnRowClick = itemActions.find(itemAction => itemAction.useItemActionOnRowClick);\n\n const _rowSelection: ComponentProps<typeof KitTable>['rowSelection'] =\n onSelectionChange === null\n ? undefined\n : {\n type: mode === 'simple' ? 'radio' : 'checkbox',\n columnTitle: ' ', // blank string to hide select all checkbox from <KitTable />\n selectedRowKeys: selectedKeys,\n preserveSelectedRowKeys: true,\n // TODO: review types from antd directly\n onChange: (selectedRowKeys: Key[]) => {\n const lastSelectedKey = selectedRowKeys[selectedRowKeys.length - 1];\n const lastSelectedItem = dataGroupedFilteredSorted.find(data => data.key === lastSelectedKey);\n\n onSelectionChange(selectedRowKeys);\n\n if (lastSelectedItem) {\n onSelectItem?.(lastSelectedItem);\n }\n },\n getCheckboxProps: isMassSelectionAll\n ? () => ({\n disabled: true,\n })\n : undefined,\n };\n\n // TODO: handle columns width based on attribute type/format\n return (\n <DataViewContainerDivStyled ref={containerRef} className={cn({headless: hideTableHeader})}>\n <StyledTable\n className={cn({\n 'row-clickable': itemActionToUseOnRowClick,\n })}\n showHeader={dataGroupedFilteredSorted.length > 0 && !hideTableHeader}\n headerLineSize={useSmallHeaderSize ? 's' : undefined}\n columns={[whoIAmColumn, ...columns]}\n tableLayout=\"fixed\"\n scroll={{\n y: tableBodyHeight ?? (hideTableHeader ? '100%' : scrollHeight),\n x: '100%',\n }}\n dataSource={dataGroupedFilteredSorted}\n pagination={false}\n rowSelection={_rowSelection}\n onRow={(item: IItemData) => ({\n onClick: () => itemActionToUseOnRowClick?.callback(item),\n })}\n />\n {paginationProps && (\n <div className=\"pagination\">\n <KitPagination\n aria-label=\"pagination\"\n showSizeChanger\n showTotal={(total, [from, to]) =>\n t('explorer.pagination-total-number', {from, to, count: total})\n }\n total={paginationProps.totalCount}\n defaultCurrent={paginationProps.currentPage}\n defaultPageSize={paginationProps.pageSize}\n pageSizeOptions={paginationProps.pageSizeOptions}\n onChange={paginationProps.setNewPage}\n onShowSizeChange={paginationProps.setNewPageSize}\n />\n </div>\n )}\n </DataViewContainerDivStyled>\n );\n },\n arePropsEqual,\n);\n\n// This hook exists to change the width of the whoAmI column dynamically.\n// The aimed result is a whoAmI column that always expand and is the only one to expand if there is horizontal space available, but never shrinks under its specifed width.\n// This behaviour is mostly present to prevent the selection column to expand\nfunction useWhoAmIColumn(props: KitTableColumnType<IItemData> & {width: number}) {\n const {t} = useSharedTranslation();\n\n const [width, setWidth] = useState<number | string>(props.width);\n\n // initialize observer only once using the useState initializer\n const [resizeObserver] = useState(\n () =>\n new ResizeObserver(\n throttle(\n ([node]: ResizeObserverEntry[]) =>\n setWidth(node.contentRect.width < props.width ? props.width : '100%'),\n 100,\n ),\n ),\n );\n\n // use the `ref` prop as a callback to retrieve the div element and connect the observer on it\n const onWhoAmIColumnRender = useCallback((node: HTMLDivElement) => {\n resizeObserver.disconnect();\n if (node) {\n resizeObserver.observe(node);\n }\n }, []);\n\n return {\n ...props,\n title: () => <div ref={onWhoAmIColumnRender}>{t('explorer.name')}</div>,\n width,\n };\n}\n"]}
1
+ {"version":3,"file":"DataView.js","sourceRoot":"","sources":["../../../src/components/Explorer/DataView.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AAEtE,OAAO,EAAwD,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AACzG,OAAO,EAAC,aAAa,EAAE,QAAQ,EAAC,MAAM,YAAY,CAAC;AAEnD,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,OAAO,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AACtC,OAAO,EAAC,uBAAuB,EAAE,wBAAwB,EAAC,MAAM,4BAA4B,CAAC;AAC7F,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAC,QAAQ,EAAC,MAAM,QAAQ,CAAC;AAEhC,MAAM,cAAc,GAAG,EAAE,CAAC;AAC1B,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAEpC,MAAM,0BAA0B,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;0BASnB,uBAAuB;;;;;;;;;;CAUhD,CAAC;AAEF,6DAA6D;AAC7D,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;;;;kBAIlB,cAAc;;;0BAGN,wBAAwB;;;;;;;;;;;;;;0BAcxB,cAAc;;;;;;;;;;;;;CAavC,CAAC;AA2BF,wKAAwK;AACxK,MAAM,aAAa,GAAG,CAAC,SAAyB,EAAE,SAAyB,EAAE,EAAE,CAC3E,OAAO,CACH;IACI,mBAAmB,EAAE,SAAS,CAAC,mBAAmB;IAClD,IAAI,EAAE,SAAS,CAAC,yBAAyB;IACzC,YAAY,EAAE,SAAS,CAAC,SAAS,CAAC,YAAY;CACjD,EACD;IACI,mBAAmB,EAAE,SAAS,CAAC,mBAAmB;IAClD,IAAI,EAAE,SAAS,CAAC,yBAAyB;IACzC,YAAY,EAAE,SAAS,CAAC,SAAS,CAAC,YAAY;CACjD,CACJ,CAAC;AAEN,MAAM,CAAC,MAAM,QAAQ,GAAsC,IAAI,CAC3D,CAAC,EACG,yBAAyB,EACzB,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,SAAS,EAAE,EAAC,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,kBAAkB,EAAE,IAAI,EAAC,EACpF,eAAe,GAAG,KAAK,EACvB,kBAAkB,GAAG,KAAK,EAC1B,eAAe,GAClB,EAAE,EAAE;IACD,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IAEnC,MAAM,EAAC,YAAY,EAAE,YAAY,EAAC,GAAG,wBAAwB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;IACjF,MAAM,EAAC,mBAAmB,EAAC,GAAG,cAAc,EAAE,CAAC;IAE/C,MAAM,cAAc,GAAG,CAAC,aAAqB,EAAE,EAAE,CAC7C,CAAC;QACG,KAAK,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC,KAAK;QACtD,QAAQ,EAAE,kBAAkB;QAC5B,KAAK,EAAE,mBAAmB,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;QAC/D,gBAAgB,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CACrC,kBAAkB;YAClB,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,UAAU,CAAC,cAAc,CAAC,aAAa,CAAC;QACrF,MAAM,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CACjB,KAAC,SAAS,IACN,mBAAmB,EAAE,oBAAoB,CAAC,aAAa,CAAC,EACxD,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,GAC5C,CACL;KACJ,CAAyC,CAAC;IAE/C,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAExD,MAAM,YAAY,GAAG,eAAe,CAAC;QACjC,GAAG,cAAc,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,KAAC,aAAa,IAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,GAAI;QAC5E,gBAAgB,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,kBAAkB,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM;KACtG,CAAC,CAAC;IAEH,MAAM,yBAAyB,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;IAErG,MAAM,aAAa,GACf,iBAAiB,KAAK,IAAI;QACtB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC;YACI,IAAI,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU;YAC9C,WAAW,EAAE,GAAG,EAAE,6DAA6D;YAC/E,eAAe,EAAE,YAAY;YAC7B,uBAAuB,EAAE,IAAI;YAC7B,wCAAwC;YACxC,QAAQ,EAAE,CAAC,eAAsB,EAAE,EAAE;gBACjC,MAAM,eAAe,GAAG,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACpE,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,eAAe,CAAC,CAAC;gBAE9F,iBAAiB,CAAC,eAAe,CAAC,CAAC;gBAEnC,IAAI,gBAAgB,EAAE,CAAC;oBACnB,YAAY,EAAE,CAAC,gBAAgB,CAAC,CAAC;gBACrC,CAAC;YACL,CAAC;YACD,gBAAgB,EAAE,kBAAkB;gBAChC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;oBACH,QAAQ,EAAE,IAAI;iBACjB,CAAC;gBACJ,CAAC,CAAC,SAAS;SAClB,CAAC;IAEZ,4DAA4D;IAC5D,OAAO,CACH,MAAC,0BAA0B,IAAC,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,CAAC,EAAC,QAAQ,EAAE,eAAe,EAAC,CAAC,aACrF,KAAC,WAAW,IACR,SAAS,EAAE,EAAE,CAAC;oBACV,eAAe,EAAE,yBAAyB;iBAC7C,CAAC,EACF,UAAU,EAAE,yBAAyB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,eAAe,EACpE,cAAc,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAC9C,OAAO,EAAE,CAAC,YAAY,EAAE,GAAG,OAAO,CAAC,EACnC,WAAW,EAAC,OAAO,EACnB,MAAM,EAAE;oBACJ,CAAC,EAAE,eAAe,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC;oBAC/D,CAAC,EAAE,MAAM;iBACZ,EACD,UAAU,EAAE,yBAAyB,EACrC,UAAU,EAAE,KAAK,EACjB,YAAY,EAAE,aAAa,EAC3B,KAAK,EAAE,CAAC,IAAe,EAAE,EAAE,CAAC,CAAC;oBACzB,OAAO,EAAE,GAAG,EAAE,CAAC,yBAAyB,EAAE,QAAQ,CAAC,IAAI,CAAC;iBAC3D,CAAC,GACJ,EACD,eAAe,IAAI,CAChB,cAAK,SAAS,EAAC,YAAY,YACvB,KAAC,aAAa,kBACC,YAAY,EACvB,eAAe,QACf,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAC7B,CAAC,CAAC,kCAAkC,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC,EAEnE,KAAK,EAAE,eAAe,CAAC,UAAU,EACjC,cAAc,EAAE,eAAe,CAAC,WAAW,EAC3C,eAAe,EAAE,eAAe,CAAC,QAAQ,EACzC,eAAe,EAAE,eAAe,CAAC,eAAe,EAChD,QAAQ,EAAE,eAAe,CAAC,UAAU,EACpC,gBAAgB,EAAE,eAAe,CAAC,cAAc,GAClD,GACA,CACT,IACwB,CAChC,CAAC;AACN,CAAC,EACD,aAAa,CAChB,CAAC;AAEF,yEAAyE;AACzE,2KAA2K;AAC3K,6EAA6E;AAC7E,SAAS,eAAe,CAAC,KAAsD;IAC3E,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IAEnC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAkB,KAAK,CAAC,KAAK,CAAC,CAAC;IAEjE,+DAA+D;IAC/D,MAAM,CAAC,cAAc,CAAC,GAAG,QAAQ,CAC7B,GAAG,EAAE,CACD,IAAI,cAAc,CACd,QAAQ,CACJ,CAAC,CAAC,IAAI,CAAwB,EAAE,EAAE,CAC9B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EACzE,GAAG,CACN,CACJ,CACR,CAAC;IAEF,8FAA8F;IAC9F,MAAM,oBAAoB,GAAG,WAAW,CAAC,CAAC,IAAoB,EAAE,EAAE;QAC9D,cAAc,CAAC,UAAU,EAAE,CAAC;QAC5B,IAAI,IAAI,EAAE,CAAC;YACP,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACH,GAAG,KAAK;QACR,KAAK,EAAE,GAAG,EAAE,CAAC,cAAK,GAAG,EAAE,oBAAoB,YAAG,CAAC,CAAC,eAAe,CAAC,GAAO;QACvE,KAAK;KACR,CAAC;AACN,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\n\nimport {type ComponentProps, type FunctionComponent, type Key, memo, useCallback, useState} from 'react';\nimport {KitPagination, KitTable} from 'aristid-ds';\nimport {type KitTableColumnType} from 'aristid-ds/dist/Kit/DataDisplay/Table/types';\nimport styled from 'styled-components';\nimport isEqual from 'lodash/isEqual';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {type IExplorerData, type IItemAction, type IItemData} from './_types';\nimport {TableCell} from './TableCell';\nimport {defaultPaginationHeight, useTableScrollableHeight} from './useTableScrollableHeight';\nimport {useColumnWidth} from './useColumnWidth';\nimport {WHO_AM_I_COLUMN} from './_constants';\nimport {TableNameCell} from './TableNameCell';\nimport cn from 'classnames';\nimport {throttle} from 'lodash';\n\nconst tableRowHeight = 56;\nconst tableHeaderMinLineHeight = 22;\n\nconst DataViewContainerDivStyled = styled.div`\n flex: 1 1 min-content;\n overflow: hidden;\n\n &.headless {\n overflow-y: auto;\n }\n\n .kit-table {\n padding-bottom: ${defaultPaginationHeight}px;\n position: relative;\n }\n\n .pagination {\n flex: 0 0 auto;\n justify-content: center;\n display: flex;\n padding-top: calc(var(--general-spacing-xs) * 1px);\n }\n`;\n\n// TODO: Table component should be updated fix header display\nconst StyledTable = styled(KitTable)`\n .ant-table-thead > tr > th {\n padding-top: calc(var(--general-spacing-xxs) * 1px) !important;\n padding-bottom: calc(var(--general-spacing-xxs) * 1px) !important;\n height: ${tableRowHeight}px;\n\n .ant-table-cell {\n min-height: ${tableHeaderMinLineHeight}px;\n height: auto !important;\n padding: 0 calc(var(--general-spacing-s) * 1px) 0 0;\n }\n }\n\n .ant-table-tbody > tr:hover .ant-table-cell {\n .actions-list {\n display: inline-flex;\n }\n }\n\n .ant-table-tbody > tr {\n .ant-table-cell {\n min-height: ${tableRowHeight}px;\n height: auto !important;\n .actions-list {\n margin-left: auto;\n }\n }\n }\n\n &.row-clickable {\n .ant-table-tbody > tr {\n cursor: pointer;\n }\n }\n`;\n\ninterface IDataViewProps {\n dataGroupedFilteredSorted: IItemData[];\n itemActions: IItemAction[];\n attributesProperties: IExplorerData['attributes'];\n attributesToDisplay: string[];\n paginationProps?: {\n pageSizeOptions: number[];\n totalCount: number;\n currentPage: number;\n pageSize: number;\n setNewPage: (page: number, pageSize: number) => void;\n setNewPageSize: (page: number, pageSize: number) => void;\n };\n selection: {\n onSelectItem?: null | ((selectedItem: IItemData) => void);\n onSelectionChange: null | ((keys: Key[]) => void);\n isMassSelectionAll: boolean;\n selectedKeys: Key[];\n mode?: 'simple' | 'multiple';\n };\n hideTableHeader: boolean;\n useSmallHeaderSize?: boolean;\n tableBodyHeight?: string;\n}\n\n// TODO: tests will fail if we don't check attributeToDisplay because we have a render with no attributes but data is present. We should check why there's this behavior\nconst arePropsEqual = (prevProps: IDataViewProps, nextProps: IDataViewProps) =>\n isEqual(\n {\n attributesToDisplay: prevProps.attributesToDisplay,\n data: prevProps.dataGroupedFilteredSorted,\n selectedKeys: prevProps.selection.selectedKeys,\n },\n {\n attributesToDisplay: nextProps.attributesToDisplay,\n data: nextProps.dataGroupedFilteredSorted,\n selectedKeys: nextProps.selection.selectedKeys,\n },\n );\n\nexport const DataView: FunctionComponent<IDataViewProps> = memo(\n ({\n dataGroupedFilteredSorted,\n attributesToDisplay,\n attributesProperties,\n paginationProps,\n itemActions,\n selection: {onSelectItem, onSelectionChange, selectedKeys, isMassSelectionAll, mode},\n hideTableHeader = false,\n useSmallHeaderSize = false,\n tableBodyHeight,\n }) => {\n const {t} = useSharedTranslation();\n\n const {containerRef, scrollHeight} = useTableScrollableHeight(!!paginationProps);\n const {getFieldColumnWidth} = useColumnWidth();\n\n const getColumnProps = (attributeName: string) =>\n ({\n title: () => attributesProperties[attributeName].label,\n ellipsis: useSmallHeaderSize,\n width: getFieldColumnWidth(attributesProperties[attributeName]),\n shouldCellUpdate: (record, prevRecord) =>\n isMassSelectionAll ||\n record.propertiesById[attributeName] !== prevRecord.propertiesById[attributeName],\n render: (_, item) => (\n <TableCell\n attributeProperties={attributesProperties[attributeName]}\n values={item.propertiesById[attributeName]}\n />\n ),\n }) satisfies KitTableColumnType<IItemData>;\n\n const columns = attributesToDisplay.map(getColumnProps);\n\n const whoIAmColumn = useWhoAmIColumn({\n ...getColumnProps(WHO_AM_I_COLUMN),\n fixed: 'left',\n render: (_, item) => <TableNameCell item={item} itemActions={itemActions} />,\n shouldCellUpdate: (record, prevRecord) => isMassSelectionAll || record.whoAmI !== prevRecord.whoAmI,\n });\n\n const itemActionToUseOnRowClick = itemActions.find(itemAction => itemAction.useItemActionOnRowClick);\n\n const _rowSelection: ComponentProps<typeof KitTable>['rowSelection'] =\n onSelectionChange === null\n ? undefined\n : {\n type: mode === 'simple' ? 'radio' : 'checkbox',\n columnTitle: ' ', // blank string to hide select all checkbox from <KitTable />\n selectedRowKeys: selectedKeys,\n preserveSelectedRowKeys: true,\n // TODO: review types from antd directly\n onChange: (selectedRowKeys: Key[]) => {\n const lastSelectedKey = selectedRowKeys[selectedRowKeys.length - 1];\n const lastSelectedItem = dataGroupedFilteredSorted.find(data => data.key === lastSelectedKey);\n\n onSelectionChange(selectedRowKeys);\n\n if (lastSelectedItem) {\n onSelectItem?.(lastSelectedItem);\n }\n },\n getCheckboxProps: isMassSelectionAll\n ? () => ({\n disabled: true,\n })\n : undefined,\n };\n\n // TODO: handle columns width based on attribute type/format\n return (\n <DataViewContainerDivStyled ref={containerRef} className={cn({headless: hideTableHeader})}>\n <StyledTable\n className={cn({\n 'row-clickable': itemActionToUseOnRowClick,\n })}\n showHeader={dataGroupedFilteredSorted.length > 0 && !hideTableHeader}\n headerLineSize={useSmallHeaderSize ? 's' : 'm'}\n columns={[whoIAmColumn, ...columns]}\n tableLayout=\"fixed\"\n scroll={{\n y: tableBodyHeight ?? (hideTableHeader ? '100%' : scrollHeight),\n x: '100%',\n }}\n dataSource={dataGroupedFilteredSorted}\n pagination={false}\n rowSelection={_rowSelection}\n onRow={(item: IItemData) => ({\n onClick: () => itemActionToUseOnRowClick?.callback(item),\n })}\n />\n {paginationProps && (\n <div className=\"pagination\">\n <KitPagination\n aria-label=\"pagination\"\n showSizeChanger\n showTotal={(total, [from, to]) =>\n t('explorer.pagination-total-number', {from, to, count: total})\n }\n total={paginationProps.totalCount}\n defaultCurrent={paginationProps.currentPage}\n defaultPageSize={paginationProps.pageSize}\n pageSizeOptions={paginationProps.pageSizeOptions}\n onChange={paginationProps.setNewPage}\n onShowSizeChange={paginationProps.setNewPageSize}\n />\n </div>\n )}\n </DataViewContainerDivStyled>\n );\n },\n arePropsEqual,\n);\n\n// This hook exists to change the width of the whoAmI column dynamically.\n// The aimed result is a whoAmI column that always expand and is the only one to expand if there is horizontal space available, but never shrinks under its specifed width.\n// This behaviour is mostly present to prevent the selection column to expand\nfunction useWhoAmIColumn(props: KitTableColumnType<IItemData> & {width: number}) {\n const {t} = useSharedTranslation();\n\n const [width, setWidth] = useState<number | string>(props.width);\n\n // initialize observer only once using the useState initializer\n const [resizeObserver] = useState(\n () =>\n new ResizeObserver(\n throttle(\n ([node]: ResizeObserverEntry[]) =>\n setWidth(node.contentRect.width < props.width ? props.width : '100%'),\n 100,\n ),\n ),\n );\n\n // use the `ref` prop as a callback to retrieve the div element and connect the observer on it\n const onWhoAmIColumnRender = useCallback((node: HTMLDivElement) => {\n resizeObserver.disconnect();\n if (node) {\n resizeObserver.observe(node);\n }\n }, []);\n\n return {\n ...props,\n title: () => <div ref={onWhoAmIColumnRender}>{t('explorer.name')}</div>,\n width,\n };\n}\n"]}
@@ -8,4 +8,3 @@ export declare const CREATE_RECORD_MODAL_CLASSNAME = "create-record-modal";
8
8
  export declare const EDIT_RECORD_MODAL_CLASSNAME = "edit-record-modal";
9
9
  export declare const WHO_AM_I_COLUMN = "whoAmI";
10
10
  export declare const SNACKBAR_MASS_ID = "SNACKBAR_MASS_ID";
11
- export declare const BREAK_TWO_LINES = "\n\n";
@@ -20,5 +20,4 @@ export const CREATE_RECORD_MODAL_CLASSNAME = 'create-record-modal';
20
20
  export const EDIT_RECORD_MODAL_CLASSNAME = 'edit-record-modal';
21
21
  export const WHO_AM_I_COLUMN = 'whoAmI';
22
22
  export const SNACKBAR_MASS_ID = 'SNACKBAR_MASS_ID';
23
- export const BREAK_TWO_LINES = '\n\n';
24
23
  //# sourceMappingURL=_constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_constants.js","sourceRoot":"","sources":["../../../src/components/Explorer/_constants.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;AAGxC,yJAAyJ;AACzJ,MAAM,CAAC,MAAM,+BAA+B,GAAgC;IACxE,KAAK,EAAE,SAAS,CAAC,IAAI;IACrB,MAAM,EAAE,SAAS,CAAC,KAAK;IACvB,QAAQ,EAAE,SAAS,CAAC,QAAQ;IAC5B,IAAI,EAAE,SAAS,CAAC,IAAI;CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,+BAA+B,GAAgC;IACxE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO;IACzB,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,QAAQ;IAC3B,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,UAAU;CACnC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC;AAExC,MAAM,CAAC,MAAM,4BAA4B,GAAG,YAAY,CAAC;AAEzD,MAAM,CAAC,MAAM,6BAA6B,GAAG,qBAAqB,CAAC;AAEnE,MAAM,CAAC,MAAM,2BAA2B,GAAG,mBAAmB,CAAC;AAE/D,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC;AAExC,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAEnD,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {ViewTypes} from '_ui/_gqlTypes';\nimport {type ViewType} from './manage-view-settings/store-view-settings/viewSettingsReducer';\n\n//TODO: this mapping is here for backward compatibility. When the old explorer is removed, we should updates types on the backend and remove this mapping\nexport const mapViewTypeFromExplorerToLegacy: Record<ViewType, ViewTypes> = {\n table: ViewTypes.list,\n mosaic: ViewTypes.cards,\n timeline: ViewTypes.timeline,\n list: ViewTypes.list,\n};\n\nexport const mapViewTypeFromLegacyToExplorer: Record<ViewTypes, ViewType> = {\n [ViewTypes.list]: 'table',\n [ViewTypes.cards]: 'mosaic',\n [ViewTypes.timeline]: 'timeline',\n};\n\nexport const MASS_SELECTION_ALL = 'all';\n\nexport const LINK_RECORDS_MODAL_CLASSNAME = 'link-modal';\n\nexport const CREATE_RECORD_MODAL_CLASSNAME = 'create-record-modal';\n\nexport const EDIT_RECORD_MODAL_CLASSNAME = 'edit-record-modal';\n\nexport const WHO_AM_I_COLUMN = 'whoAmI';\n\nexport const SNACKBAR_MASS_ID = 'SNACKBAR_MASS_ID';\n\nexport const BREAK_TWO_LINES = '\\n\\n';\n"]}
1
+ {"version":3,"file":"_constants.js","sourceRoot":"","sources":["../../../src/components/Explorer/_constants.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;AAGxC,yJAAyJ;AACzJ,MAAM,CAAC,MAAM,+BAA+B,GAAgC;IACxE,KAAK,EAAE,SAAS,CAAC,IAAI;IACrB,MAAM,EAAE,SAAS,CAAC,KAAK;IACvB,QAAQ,EAAE,SAAS,CAAC,QAAQ;IAC5B,IAAI,EAAE,SAAS,CAAC,IAAI;CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,+BAA+B,GAAgC;IACxE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO;IACzB,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,QAAQ;IAC3B,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,UAAU;CACnC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC;AAExC,MAAM,CAAC,MAAM,4BAA4B,GAAG,YAAY,CAAC;AAEzD,MAAM,CAAC,MAAM,6BAA6B,GAAG,qBAAqB,CAAC;AAEnE,MAAM,CAAC,MAAM,2BAA2B,GAAG,mBAAmB,CAAC;AAE/D,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC;AAExC,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {ViewTypes} from '_ui/_gqlTypes';\nimport {type ViewType} from './manage-view-settings/store-view-settings/viewSettingsReducer';\n\n//TODO: this mapping is here for backward compatibility. When the old explorer is removed, we should updates types on the backend and remove this mapping\nexport const mapViewTypeFromExplorerToLegacy: Record<ViewType, ViewTypes> = {\n table: ViewTypes.list,\n mosaic: ViewTypes.cards,\n timeline: ViewTypes.timeline,\n list: ViewTypes.list,\n};\n\nexport const mapViewTypeFromLegacyToExplorer: Record<ViewTypes, ViewType> = {\n [ViewTypes.list]: 'table',\n [ViewTypes.cards]: 'mosaic',\n [ViewTypes.timeline]: 'timeline',\n};\n\nexport const MASS_SELECTION_ALL = 'all';\n\nexport const LINK_RECORDS_MODAL_CLASSNAME = 'link-modal';\n\nexport const CREATE_RECORD_MODAL_CLASSNAME = 'create-record-modal';\n\nexport const EDIT_RECORD_MODAL_CLASSNAME = 'edit-record-modal';\n\nexport const WHO_AM_I_COLUMN = 'whoAmI';\n\nexport const SNACKBAR_MASS_ID = 'SNACKBAR_MASS_ID';\n"]}
@@ -3,12 +3,13 @@ import { jsx as _jsx } from "react/jsx-runtime";
3
3
  // This file is released under LGPL V3
4
4
  // License text available at https://www.gnu.org/licenses/lgpl-3.0.txt
5
5
  import { useMemo } from 'react';
6
- import { KitModal } from 'aristid-ds';
6
+ import { useConfirmModal } from '../../../hooks/useConfirmModal';
7
7
  import { useActivateRecordsMutation, useDeactivateRecordsMutation, useDeleteValueMutation, } from '../../../_gqlTypes';
8
8
  import { useSharedTranslation } from '../../../hooks/useSharedTranslation';
9
9
  import { useValuesCacheUpdate } from '../../../hooks/useValuesCacheUpdate';
10
10
  import { ViewSettingsActionTypes } from '../manage-view-settings';
11
- import { BREAK_TWO_LINES, MASS_SELECTION_ALL } from '../_constants';
11
+ import { MASS_SELECTION_ALL } from '../_constants';
12
+ import { BREAK_TWO_LINES } from '../../../constants';
12
13
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
13
14
  import { faTrash, faTrashRestore } from '@fortawesome/free-solid-svg-icons';
14
15
  /**
@@ -25,6 +26,7 @@ import { faTrash, faTrashRestore } from '@fortawesome/free-solid-svg-icons';
25
26
  */
26
27
  export const useEditStatusItemAction = ({ isEnabled, canDeleteLinkValues, store: { view, dispatch }, onRemove, entrypoint, }) => {
27
28
  const { t } = useSharedTranslation();
29
+ const { openConfirmModal } = useConfirmModal();
28
30
  const updateValuesCache = useValuesCacheUpdate();
29
31
  const [deactivateRecordsMutation] = useDeactivateRecordsMutation({
30
32
  update(cache, deactivatedRecords) {
@@ -127,15 +129,9 @@ export const useEditStatusItemAction = ({ isEnabled, canDeleteLinkValues, store:
127
129
  ? t('explorer.deactivate_item_description_one')
128
130
  : t('explorer.activate_item_description_one')
129
131
  : t('explorer.delete_link_description_one');
130
- KitModal.confirm({
131
- width: '100%',
132
- style: { content: { width: '90vw', maxWidth: '656px' } },
133
- type: 'confirm',
134
- icon: false,
132
+ openConfirmModal({
135
133
  title,
136
134
  content: content + BREAK_TWO_LINES + t('global.are_you_sure'),
137
- okText: t('global.confirm') ?? undefined,
138
- cancelText: t('global.cancel') ?? undefined,
139
135
  onOk: async () => {
140
136
  switch (entrypoint.type) {
141
137
  case 'library':
@@ -1 +1 @@
1
- {"version":3,"file":"useEditStatusItemAction.js","sourceRoot":"","sources":["../../../../src/components/Explorer/actions-item/useEditStatusItemAction.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type Dispatch, useMemo} from 'react';\nimport {KitModal} from 'aristid-ds';\nimport {\n type ActivateRecordsMutation,\n type DeactivateRecordsMutation,\n useActivateRecordsMutation,\n useDeactivateRecordsMutation,\n useDeleteValueMutation,\n} from '_ui/_gqlTypes';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {useValuesCacheUpdate} from '_ui/hooks/useValuesCacheUpdate';\nimport {type FeatureHook, type Entrypoint, type IEntrypointLink, type IItemAction, type IItemData} from '../_types';\nimport {type IViewSettingsAction, type IViewSettingsState, ViewSettingsActionTypes} from '../manage-view-settings';\nimport {BREAK_TWO_LINES, MASS_SELECTION_ALL} from '../_constants';\nimport {type FetchResult} from '@apollo/client';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {faTrash, faTrashRestore} from '@fortawesome/free-solid-svg-icons';\n\n/**\n * Hook used to get the action for `<DataView />` component.\n *\n * When the mutation for removing is done, the Apollo cache will be clean (`Record` and `RecordIdentity`)\n * from removed record.\n *\n * @param isEnabled - whether the action is present\n * @param view - represent the current view\n * @param dispatch - method to change the current view\n * @param entrypoint - represent the current entrypoint\n * @param canDeleteLinkValues - check permission to delete link values\n */\nexport const useEditStatusItemAction = ({\n isEnabled,\n canDeleteLinkValues,\n store: {view, dispatch},\n onRemove,\n entrypoint,\n}: FeatureHook<{\n store: {\n view: IViewSettingsState;\n dispatch: Dispatch<IViewSettingsAction>;\n };\n canDeleteLinkValues: boolean;\n onRemove?: IItemAction['callback'];\n entrypoint: Entrypoint;\n}>) => {\n const {t} = useSharedTranslation();\n const updateValuesCache = useValuesCacheUpdate();\n\n const [deactivateRecordsMutation] = useDeactivateRecordsMutation({\n update(cache, deactivatedRecords) {\n deactivatedRecords.data?.deactivateRecords.forEach(record => {\n cache.evict({\n id: cache.identify(record),\n });\n });\n cache.modify({\n fields: {\n records: prev => ({\n ...prev,\n totalCount: prev.totalCount - 1,\n }),\n },\n broadcast: false,\n });\n cache.gc();\n },\n });\n\n const [activateRecordsMutation] = useActivateRecordsMutation({\n update(cache, activatedRecords) {\n activatedRecords.data?.activateRecords.forEach(record => {\n cache.evict({\n id: cache.identify(record),\n });\n });\n cache.modify({\n fields: {\n records: prev => ({\n ...prev,\n totalCount: prev.totalCount - 1,\n }),\n },\n broadcast: false,\n });\n cache.gc();\n },\n });\n\n const [deleteRecordLinkMutation] = useDeleteValueMutation({\n update: (_, deletedRecord) => {\n const parentRecord = {\n id: (entrypoint as IEntrypointLink).parentRecordId,\n library: {\n id: (entrypoint as IEntrypointLink).parentLibraryId,\n },\n };\n updateValuesCache(parentRecord, deletedRecord.data?.deleteValue ?? []);\n },\n });\n\n const _deactivateItem = async (item: IItemData): Promise<FetchResult<DeactivateRecordsMutation>> => {\n const libRes = await deactivateRecordsMutation({\n variables: {\n libraryId: item.libraryId,\n recordsIds: [item.itemId],\n },\n });\n\n if (view.massSelection !== MASS_SELECTION_ALL) {\n dispatch({\n type: ViewSettingsActionTypes.SET_SELECTED_KEYS,\n payload: view.massSelection.filter(key => key !== item.itemId),\n });\n }\n\n onRemove?.(item);\n\n return libRes;\n };\n\n const _activateItem = async (item: IItemData): Promise<FetchResult<ActivateRecordsMutation>> => {\n const libRes = await activateRecordsMutation({\n variables: {\n libraryId: item.libraryId,\n recordsIds: [item.itemId],\n },\n });\n\n if (view.massSelection !== MASS_SELECTION_ALL) {\n dispatch({\n type: ViewSettingsActionTypes.SET_SELECTED_KEYS,\n payload: view.massSelection.filter(key => key !== item.itemId),\n });\n }\n\n return libRes;\n };\n\n const _editStatusItemAction: IItemAction = useMemo(\n () => ({\n label: (item: IItemData) =>\n entrypoint.type === 'library'\n ? item.active\n ? t('explorer.deactivate-item')\n : t('explorer.activate-item')\n : t('explorer.delete-item'),\n icon: (item: IItemData) => (\n <FontAwesomeIcon icon={entrypoint.type === 'library' && !item.active ? faTrashRestore : faTrash} />\n ),\n isDanger: true,\n disabled: (item: IItemData) =>\n entrypoint.type === 'link' ? !canDeleteLinkValues : item.active ? !item.canDelete : !item.canActivate,\n callback: item => {\n const {itemId, id_value} = item;\n\n const title =\n entrypoint.type === 'library'\n ? item.active\n ? t('explorer.deactivate_item_one')\n : t('explorer.activate_item_one')\n : t('explorer.delete_link_one');\n\n const content =\n entrypoint.type === 'library'\n ? item.active\n ? t('explorer.deactivate_item_description_one')\n : t('explorer.activate_item_description_one')\n : t('explorer.delete_link_description_one');\n\n KitModal.confirm({\n width: '100%',\n style: {content: {width: '90vw', maxWidth: '656px'}},\n type: 'confirm',\n icon: false,\n title,\n content: content + BREAK_TWO_LINES + t('global.are_you_sure'),\n okText: t('global.confirm') ?? undefined,\n cancelText: t('global.cancel') ?? undefined,\n onOk: async () => {\n switch (entrypoint.type) {\n case 'library':\n if (item.active) {\n return _deactivateItem(item);\n }\n\n return _activateItem(item);\n case 'link':\n const linkRes = await deleteRecordLinkMutation({\n variables: {\n library: entrypoint.parentLibraryId,\n attribute: entrypoint.linkAttributeId,\n recordId: entrypoint.parentRecordId,\n value: {\n payload: itemId,\n id_value,\n },\n },\n });\n onRemove?.(item);\n return linkRes;\n default:\n return;\n }\n },\n });\n },\n }),\n [\n t,\n deactivateRecordsMutation,\n deleteRecordLinkMutation,\n activateRecordsMutation,\n canDeleteLinkValues,\n entrypoint.type,\n view.massSelection,\n dispatch,\n ],\n );\n\n return {\n editStatusItemAction: isEnabled ? _editStatusItemAction : null,\n };\n};\n"]}
1
+ {"version":3,"file":"useEditStatusItemAction.js","sourceRoot":"","sources":["../../../../src/components/Explorer/actions-item/useEditStatusItemAction.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type Dispatch, useMemo} from 'react';\nimport {useConfirmModal} from '_ui/hooks/useConfirmModal';\nimport {\n type ActivateRecordsMutation,\n type DeactivateRecordsMutation,\n useActivateRecordsMutation,\n useDeactivateRecordsMutation,\n useDeleteValueMutation,\n} from '_ui/_gqlTypes';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {useValuesCacheUpdate} from '_ui/hooks/useValuesCacheUpdate';\nimport {type FeatureHook, type Entrypoint, type IEntrypointLink, type IItemAction, type IItemData} from '../_types';\nimport {type IViewSettingsAction, type IViewSettingsState, ViewSettingsActionTypes} from '../manage-view-settings';\nimport {MASS_SELECTION_ALL} from '../_constants';\nimport {BREAK_TWO_LINES} from '_ui/constants';\nimport {type FetchResult} from '@apollo/client';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {faTrash, faTrashRestore} from '@fortawesome/free-solid-svg-icons';\n\n/**\n * Hook used to get the action for `<DataView />` component.\n *\n * When the mutation for removing is done, the Apollo cache will be clean (`Record` and `RecordIdentity`)\n * from removed record.\n *\n * @param isEnabled - whether the action is present\n * @param view - represent the current view\n * @param dispatch - method to change the current view\n * @param entrypoint - represent the current entrypoint\n * @param canDeleteLinkValues - check permission to delete link values\n */\nexport const useEditStatusItemAction = ({\n isEnabled,\n canDeleteLinkValues,\n store: {view, dispatch},\n onRemove,\n entrypoint,\n}: FeatureHook<{\n store: {\n view: IViewSettingsState;\n dispatch: Dispatch<IViewSettingsAction>;\n };\n canDeleteLinkValues: boolean;\n onRemove?: IItemAction['callback'];\n entrypoint: Entrypoint;\n}>) => {\n const {t} = useSharedTranslation();\n const {openConfirmModal} = useConfirmModal();\n const updateValuesCache = useValuesCacheUpdate();\n\n const [deactivateRecordsMutation] = useDeactivateRecordsMutation({\n update(cache, deactivatedRecords) {\n deactivatedRecords.data?.deactivateRecords.forEach(record => {\n cache.evict({\n id: cache.identify(record),\n });\n });\n cache.modify({\n fields: {\n records: prev => ({\n ...prev,\n totalCount: prev.totalCount - 1,\n }),\n },\n broadcast: false,\n });\n cache.gc();\n },\n });\n\n const [activateRecordsMutation] = useActivateRecordsMutation({\n update(cache, activatedRecords) {\n activatedRecords.data?.activateRecords.forEach(record => {\n cache.evict({\n id: cache.identify(record),\n });\n });\n cache.modify({\n fields: {\n records: prev => ({\n ...prev,\n totalCount: prev.totalCount - 1,\n }),\n },\n broadcast: false,\n });\n cache.gc();\n },\n });\n\n const [deleteRecordLinkMutation] = useDeleteValueMutation({\n update: (_, deletedRecord) => {\n const parentRecord = {\n id: (entrypoint as IEntrypointLink).parentRecordId,\n library: {\n id: (entrypoint as IEntrypointLink).parentLibraryId,\n },\n };\n updateValuesCache(parentRecord, deletedRecord.data?.deleteValue ?? []);\n },\n });\n\n const _deactivateItem = async (item: IItemData): Promise<FetchResult<DeactivateRecordsMutation>> => {\n const libRes = await deactivateRecordsMutation({\n variables: {\n libraryId: item.libraryId,\n recordsIds: [item.itemId],\n },\n });\n\n if (view.massSelection !== MASS_SELECTION_ALL) {\n dispatch({\n type: ViewSettingsActionTypes.SET_SELECTED_KEYS,\n payload: view.massSelection.filter(key => key !== item.itemId),\n });\n }\n\n onRemove?.(item);\n\n return libRes;\n };\n\n const _activateItem = async (item: IItemData): Promise<FetchResult<ActivateRecordsMutation>> => {\n const libRes = await activateRecordsMutation({\n variables: {\n libraryId: item.libraryId,\n recordsIds: [item.itemId],\n },\n });\n\n if (view.massSelection !== MASS_SELECTION_ALL) {\n dispatch({\n type: ViewSettingsActionTypes.SET_SELECTED_KEYS,\n payload: view.massSelection.filter(key => key !== item.itemId),\n });\n }\n\n return libRes;\n };\n\n const _editStatusItemAction: IItemAction = useMemo(\n () => ({\n label: (item: IItemData) =>\n entrypoint.type === 'library'\n ? item.active\n ? t('explorer.deactivate-item')\n : t('explorer.activate-item')\n : t('explorer.delete-item'),\n icon: (item: IItemData) => (\n <FontAwesomeIcon icon={entrypoint.type === 'library' && !item.active ? faTrashRestore : faTrash} />\n ),\n isDanger: true,\n disabled: (item: IItemData) =>\n entrypoint.type === 'link' ? !canDeleteLinkValues : item.active ? !item.canDelete : !item.canActivate,\n callback: item => {\n const {itemId, id_value} = item;\n\n const title =\n entrypoint.type === 'library'\n ? item.active\n ? t('explorer.deactivate_item_one')\n : t('explorer.activate_item_one')\n : t('explorer.delete_link_one');\n\n const content =\n entrypoint.type === 'library'\n ? item.active\n ? t('explorer.deactivate_item_description_one')\n : t('explorer.activate_item_description_one')\n : t('explorer.delete_link_description_one');\n\n openConfirmModal({\n title,\n content: content + BREAK_TWO_LINES + t('global.are_you_sure'),\n onOk: async () => {\n switch (entrypoint.type) {\n case 'library':\n if (item.active) {\n return _deactivateItem(item);\n }\n\n return _activateItem(item);\n case 'link':\n const linkRes = await deleteRecordLinkMutation({\n variables: {\n library: entrypoint.parentLibraryId,\n attribute: entrypoint.linkAttributeId,\n recordId: entrypoint.parentRecordId,\n value: {\n payload: itemId,\n id_value,\n },\n },\n });\n onRemove?.(item);\n return linkRes;\n default:\n return;\n }\n },\n });\n },\n }),\n [\n t,\n deactivateRecordsMutation,\n deleteRecordLinkMutation,\n activateRecordsMutation,\n canDeleteLinkValues,\n entrypoint.type,\n view.massSelection,\n dispatch,\n ],\n );\n\n return {\n editStatusItemAction: isEnabled ? _editStatusItemAction : null,\n };\n};\n"]}
@@ -1,13 +1,8 @@
1
- import { type AttributeDetailsFragment, type RecordFilterInput } from '../../../../_gqlTypes';
2
- import { type FunctionComponent, type ReactNode } from 'react';
3
- export declare const EditAttributeMassActionModal: FunctionComponent<{
1
+ import { type ReactNode } from 'react';
2
+ export declare const EditAttributeMassActionModal: ({ isOpen, children, bulkCount, onOkButtonClick, onCancelButtonClick, }: {
4
3
  isOpen: boolean;
5
4
  children: ReactNode;
6
- attributes: AttributeDetailsFragment[];
7
- setSelectedAttribute: (attr: AttributeDetailsFragment | undefined) => void;
8
- massSelectionFilter: RecordFilterInput[];
9
- elementsCount: number;
10
- disableOkButton: boolean;
5
+ bulkCount: number;
11
6
  onOkButtonClick: () => void;
12
7
  onCancelButtonClick: () => void;
13
- }>;
8
+ }) => JSX.Element;
@@ -1,20 +1,12 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- // Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06
3
- // This file is released under LGPL V3
4
- // License text available at https://www.gnu.org/licenses/lgpl-3.0.txt
5
2
  import { faCheck, faXmark } from '@fortawesome/free-solid-svg-icons';
6
3
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
4
+ import { KitButton, KitModal, KitSpace, KitTypography } from 'aristid-ds';
7
5
  import { useSharedTranslation } from '../../../../hooks/useSharedTranslation';
8
- import { KitButton, KitModal, KitSelect, KitSpace, KitTypography } from 'aristid-ds';
9
6
  const MODAL_WIDTH = '90vw';
10
7
  const MODAL_MAX_WIDTH = '656px';
11
- export const EditAttributeMassActionModal = ({ isOpen, children, setSelectedAttribute, attributes, elementsCount, disableOkButton, onOkButtonClick, onCancelButtonClick, }) => {
8
+ export const EditAttributeMassActionModal = ({ isOpen, children, bulkCount, onOkButtonClick, onCancelButtonClick, }) => {
12
9
  const { t } = useSharedTranslation();
13
- return (_jsx(KitModal, { isOpen: isOpen, appElement: document.getElementById('root'), style: { content: { width: MODAL_WIDTH, maxWidth: MODAL_MAX_WIDTH } }, width: "100%", height: "auto", icon: false, title: _jsxs(KitSpace, { direction: "vertical", size: "none", children: [_jsx(KitTypography.Title, { level: "h2", children: t('explorer.massAction.editAttribute') }), _jsx(KitTypography.Text, { size: "fontSize7", children: t('explorer.massAction.editAttribute_description', { count: elementsCount }) })] }), footer: _jsxs(_Fragment, { children: [_jsx(KitButton, { size: "m", icon: _jsx(FontAwesomeIcon, { icon: faXmark }), onClick: onCancelButtonClick, children: t('global.cancel') }), _jsx(KitButton, { type: "primary", disabled: disableOkButton, onClick: onOkButtonClick, size: "m", icon: _jsx(FontAwesomeIcon, { icon: faCheck }), children: t('global.edit') })] }), children: _jsxs(KitSpace, { direction: "vertical", size: "m", style: { display: 'flex' }, children: [_jsxs(KitSpace, { direction: "vertical", size: "xxs", style: { display: 'flex' }, children: [_jsx(KitTypography.Text, { children: t('explorer.massAction.editAttribute_attribute_select_title') }), _jsx(KitSelect, { options: attributes.map(attr => ({
14
- label: attr.label || attr.id,
15
- value: attr.id,
16
- })), size: "large", allowClear: false, onChange: value => {
17
- setSelectedAttribute(attributes.find(att => att.id === value));
18
- }, placeholder: t('explorer.massAction.editAttribute_attribute_select_placeholder') })] }), children] }) }));
10
+ return (_jsx(KitModal, { isOpen: isOpen, appElement: document.getElementById('root'), style: { content: { width: MODAL_WIDTH, maxWidth: MODAL_MAX_WIDTH } }, width: "100%", height: "auto", icon: false, title: _jsxs(KitSpace, { direction: "vertical", size: "none", children: [_jsx(KitTypography.Title, { level: "h2", children: t('explorer.massAction.editAttribute') }), _jsx(KitTypography.Text, { size: "fontSize7", children: t('explorer.massAction.editAttribute_description', { count: bulkCount }) })] }), footer: _jsxs(_Fragment, { children: [_jsx(KitButton, { size: "m", icon: _jsx(FontAwesomeIcon, { icon: faXmark }), onClick: onCancelButtonClick, children: t('global.cancel') }), _jsx(KitButton, { type: "primary", onClick: onOkButtonClick, size: "m", icon: _jsx(FontAwesomeIcon, { icon: faCheck }), children: t('global.edit') })] }), children: _jsx(KitSpace, { direction: "vertical", size: "s", style: { display: 'flex' }, children: children }) }));
19
11
  };
20
12
  //# sourceMappingURL=EditAttributeMassActionModal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditAttributeMassActionModal.js","sourceRoot":"","sources":["../../../../../src/components/Explorer/actions-mass/edit-attribute/EditAttributeMassActionModal.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {faCheck, faXmark} from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {type AttributeDetailsFragment, type RecordFilterInput} from '_ui/_gqlTypes';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {KitButton, KitModal, KitSelect, KitSpace, KitTypography} from 'aristid-ds';\nimport {type FunctionComponent, type ReactNode} from 'react';\n\nconst MODAL_WIDTH = '90vw';\nconst MODAL_MAX_WIDTH = '656px';\n\nexport const EditAttributeMassActionModal: FunctionComponent<{\n isOpen: boolean;\n children: ReactNode;\n attributes: AttributeDetailsFragment[];\n setSelectedAttribute: (attr: AttributeDetailsFragment | undefined) => void;\n massSelectionFilter: RecordFilterInput[];\n elementsCount: number;\n disableOkButton: boolean;\n onOkButtonClick: () => void;\n onCancelButtonClick: () => void;\n}> = ({\n isOpen,\n children,\n setSelectedAttribute,\n attributes,\n elementsCount,\n disableOkButton,\n onOkButtonClick,\n onCancelButtonClick,\n}) => {\n const {t} = useSharedTranslation();\n\n return (\n <KitModal\n isOpen={isOpen}\n appElement={document.getElementById('root')}\n style={{content: {width: MODAL_WIDTH, maxWidth: MODAL_MAX_WIDTH}}}\n width=\"100%\"\n height=\"auto\"\n icon={false}\n title={\n <KitSpace direction=\"vertical\" size=\"none\">\n <KitTypography.Title level=\"h2\">{t('explorer.massAction.editAttribute')}</KitTypography.Title>\n <KitTypography.Text size=\"fontSize7\">\n {t('explorer.massAction.editAttribute_description', {count: elementsCount})}\n </KitTypography.Text>\n </KitSpace>\n }\n footer={\n <>\n <KitButton size=\"m\" icon={<FontAwesomeIcon icon={faXmark} />} onClick={onCancelButtonClick}>\n {t('global.cancel')}\n </KitButton>\n <KitButton\n type=\"primary\"\n disabled={disableOkButton}\n onClick={onOkButtonClick}\n size=\"m\"\n icon={<FontAwesomeIcon icon={faCheck} />}\n >\n {t('global.edit')}\n </KitButton>\n </>\n }\n >\n <KitSpace direction=\"vertical\" size=\"m\" style={{display: 'flex'}}>\n <KitSpace direction=\"vertical\" size=\"xxs\" style={{display: 'flex'}}>\n <KitTypography.Text>\n {t('explorer.massAction.editAttribute_attribute_select_title')}\n </KitTypography.Text>\n <KitSelect\n options={attributes.map(attr => ({\n label: attr.label || attr.id,\n value: attr.id,\n }))}\n size=\"large\"\n allowClear={false}\n onChange={value => {\n setSelectedAttribute(attributes.find(att => att.id === value));\n }}\n placeholder={t('explorer.massAction.editAttribute_attribute_select_placeholder')}\n />\n </KitSpace>\n {children}\n </KitSpace>\n </KitModal>\n );\n};\n"]}
1
+ {"version":3,"file":"EditAttributeMassActionModal.js","sourceRoot":"","sources":["../../../../../src/components/Explorer/actions-mass/edit-attribute/EditAttributeMassActionModal.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAC,OAAO,EAAE,OAAO,EAAC,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAC,MAAM,YAAY,CAAC;AAExE,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AAEpE,MAAM,WAAW,GAAG,MAAM,CAAC;AAC3B,MAAM,eAAe,GAAG,OAAO,CAAC;AAEhC,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,EACzC,MAAM,EACN,QAAQ,EACR,SAAS,EACT,eAAe,EACf,mBAAmB,GAOtB,EAAE,EAAE;IACD,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IAEnC,OAAO,CACH,KAAC,QAAQ,IACL,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,EAC3C,KAAK,EAAE,EAAC,OAAO,EAAE,EAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,EAAC,EAAC,EACjE,KAAK,EAAC,MAAM,EACZ,MAAM,EAAC,MAAM,EACb,IAAI,EAAE,KAAK,EACX,KAAK,EACD,MAAC,QAAQ,IAAC,SAAS,EAAC,UAAU,EAAC,IAAI,EAAC,MAAM,aACtC,KAAC,aAAa,CAAC,KAAK,IAAC,KAAK,EAAC,IAAI,YAAE,CAAC,CAAC,mCAAmC,CAAC,GAAuB,EAC9F,KAAC,aAAa,CAAC,IAAI,IAAC,IAAI,EAAC,WAAW,YAC/B,CAAC,CAAC,+CAA+C,EAAE,EAAC,KAAK,EAAE,SAAS,EAAC,CAAC,GACtD,IACd,EAEf,MAAM,EACF,8BACI,KAAC,SAAS,IAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAE,KAAC,eAAe,IAAC,IAAI,EAAE,OAAO,GAAI,EAAE,OAAO,EAAE,mBAAmB,YACrF,CAAC,CAAC,eAAe,CAAC,GACX,EACZ,KAAC,SAAS,IACN,IAAI,EAAC,SAAS,EACd,OAAO,EAAE,eAAe,EACxB,IAAI,EAAC,GAAG,EACR,IAAI,EAAE,KAAC,eAAe,IAAC,IAAI,EAAE,OAAO,GAAI,YAEvC,CAAC,CAAC,aAAa,CAAC,GACT,IACb,YAGP,KAAC,QAAQ,IAAC,SAAS,EAAC,UAAU,EAAC,IAAI,EAAC,GAAG,EAAC,KAAK,EAAE,EAAC,OAAO,EAAE,MAAM,EAAC,YAC3D,QAAQ,GACF,GACJ,CACd,CAAC;AACN,CAAC,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type ReactNode} from 'react';\nimport {faCheck, faXmark} from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {KitButton, KitModal, KitSpace, KitTypography} from 'aristid-ds';\nimport {type RecordFilterInput} from '_ui/_gqlTypes';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\n\nconst MODAL_WIDTH = '90vw';\nconst MODAL_MAX_WIDTH = '656px';\n\nexport const EditAttributeMassActionModal = ({\n isOpen,\n children,\n bulkCount,\n onOkButtonClick,\n onCancelButtonClick,\n}: {\n isOpen: boolean;\n children: ReactNode;\n bulkCount: number;\n onOkButtonClick: () => void;\n onCancelButtonClick: () => void;\n}) => {\n const {t} = useSharedTranslation();\n\n return (\n <KitModal\n isOpen={isOpen}\n appElement={document.getElementById('root')}\n style={{content: {width: MODAL_WIDTH, maxWidth: MODAL_MAX_WIDTH}}}\n width=\"100%\"\n height=\"auto\"\n icon={false}\n title={\n <KitSpace direction=\"vertical\" size=\"none\">\n <KitTypography.Title level=\"h2\">{t('explorer.massAction.editAttribute')}</KitTypography.Title>\n <KitTypography.Text size=\"fontSize7\">\n {t('explorer.massAction.editAttribute_description', {count: bulkCount})}\n </KitTypography.Text>\n </KitSpace>\n }\n footer={\n <>\n <KitButton size=\"m\" icon={<FontAwesomeIcon icon={faXmark} />} onClick={onCancelButtonClick}>\n {t('global.cancel')}\n </KitButton>\n <KitButton\n type=\"primary\"\n onClick={onOkButtonClick}\n size=\"m\"\n icon={<FontAwesomeIcon icon={faCheck} />}\n >\n {t('global.edit')}\n </KitButton>\n </>\n }\n >\n <KitSpace direction=\"vertical\" size=\"s\" style={{display: 'flex'}}>\n {children}\n </KitSpace>\n </KitModal>\n );\n};\n"]}
@@ -1,8 +1,8 @@
1
- import { type AttributeDetailsTreeAttributeFragment } from '../../../../_gqlTypes';
2
- import { type FunctionComponent } from 'react';
3
- import { type ValuesOccurrences } from './useCountValuesOccurrencesHook';
4
- export declare const EditTreeAttributeValuesMapping: FunctionComponent<{
5
- selectedAttribute: AttributeDetailsTreeAttributeFragment;
6
- valuesOccurrences: ValuesOccurrences;
7
- setAttributeMapping: (before: string | null, after: string | null) => void;
8
- }>;
1
+ import { type RecordFilterInput } from '../../../../_gqlTypes';
2
+ import { type MassEditableAttribute, type SetAttributeMapping } from './_types';
3
+ export declare const EditTreeAttributeValuesMapping: ({ libraryId, attribute, setAttributeMapping, massSelectionFilters, }: {
4
+ libraryId: string;
5
+ attribute: MassEditableAttribute;
6
+ setAttributeMapping: SetAttributeMapping;
7
+ massSelectionFilters: RecordFilterInput[];
8
+ }) => JSX.Element;
@@ -1,16 +1,29 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { KitSpace } from 'aristid-ds';
3
- import { useListTreeAttributeValuesHook } from './useListTreeAttributeValuesHook';
4
- import { EditTreeAttributeValueLine } from './EditTreeAttributeValueLine';
5
- export const EditTreeAttributeValuesMapping = ({ selectedAttribute, valuesOccurrences, setAttributeMapping }) => {
6
- const treeAttributeValues = useListTreeAttributeValuesHook({ treeAttribute: selectedAttribute });
7
- const { occurrences, noValueCount } = valuesOccurrences;
8
- return (_jsxs(KitSpace, { direction: "vertical", size: "xs", style: { display: 'flex' }, children: [treeAttributeValues.map((nodeForOccurrence, index) => {
9
- const occurrence = occurrences.find(occ => occ.value.id === nodeForOccurrence.id);
10
- if (!occurrence) {
11
- return null;
12
- }
13
- return (_jsx(EditTreeAttributeValueLine, { treeNodeValues: treeAttributeValues, valueOccurrenceNodeId: occurrence.value.id, valueOccurrenceCount: occurrence.count, setAttributeMapping: setAttributeMapping }, index));
14
- }), noValueCount > 0 && (_jsx(EditTreeAttributeValueLine, { treeNodeValues: treeAttributeValues, valueOccurrenceNodeId: null, valueOccurrenceCount: noValueCount, setAttributeMapping: setAttributeMapping }))] }));
2
+ // Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06
3
+ // This file is released under LGPL V3
4
+ // License text available at https://www.gnu.org/licenses/lgpl-3.0.txt
5
+ import { KitLoader, KitSpace } from 'aristid-ds';
6
+ import { useSharedTranslation } from '../../../../hooks/useSharedTranslation';
7
+ import { useValuesDistribution } from './useValuesDistribution';
8
+ import { useTreeNodeRemapping } from './useTreeNodeRemapping';
9
+ import { TreeNodeRemap } from './TreeNodeRemap';
10
+ const UNDEFINED_NODE_ID = null;
11
+ export const EditTreeAttributeValuesMapping = ({ libraryId, attribute, setAttributeMapping, massSelectionFilters, }) => {
12
+ const { t } = useSharedTranslation();
13
+ const { distribution, noValueCount, loading } = useValuesDistribution({
14
+ attributeId: attribute.id,
15
+ libraryId,
16
+ recordFilters: massSelectionFilters,
17
+ });
18
+ const noValueNode = attribute.treeNodes.find(({ id }) => id === UNDEFINED_NODE_ID) ?? null;
19
+ const editableNodes = attribute.treeNodes.filter(({ id }) => id !== UNDEFINED_NODE_ID);
20
+ const remappingList = useTreeNodeRemapping({ distribution, editableNodes });
21
+ if (loading) {
22
+ return _jsx(KitLoader, {});
23
+ }
24
+ return (_jsxs(KitSpace, { direction: "vertical", size: "xs", style: { display: 'flex' }, children: [remappingList.map(remapping => (_jsx(TreeNodeRemap, { ...remapping, setAttributeMapping: setAttributeMapping }, remapping.currentNode.id))), noValueCount > 0 && noValueNode !== null && (_jsx(TreeNodeRemap, { currentNode: noValueNode, occurrenceCount: noValueCount, candidateNodes: [
25
+ { id: UNDEFINED_NODE_ID, label: t('explorer.massAction.editAttribute_value_do_not_change') },
26
+ ...editableNodes,
27
+ ], setAttributeMapping: setAttributeMapping }))] }));
15
28
  };
16
29
  //# sourceMappingURL=EditTreeAttributeValuesMapping.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditTreeAttributeValuesMapping.js","sourceRoot":"","sources":["../../../../../src/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValuesMapping.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AAGpC,OAAO,EAAC,8BAA8B,EAAC,MAAM,kCAAkC,CAAC;AAChF,OAAO,EAAC,0BAA0B,EAAC,MAAM,8BAA8B,CAAC;AAExE,MAAM,CAAC,MAAM,8BAA8B,GAItC,CAAC,EAAC,iBAAiB,EAAE,iBAAiB,EAAE,mBAAmB,EAAC,EAAE,EAAE;IACjE,MAAM,mBAAmB,GAAG,8BAA8B,CAAC,EAAC,aAAa,EAAE,iBAAiB,EAAC,CAAC,CAAC;IAC/F,MAAM,EAAC,WAAW,EAAE,YAAY,EAAC,GAAG,iBAAiB,CAAC;IAEtD,OAAO,CACH,MAAC,QAAQ,IAAC,SAAS,EAAC,UAAU,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAE,EAAC,OAAO,EAAE,MAAM,EAAC,aAC5D,mBAAmB,CAAC,GAAG,CAAC,CAAC,iBAAiB,EAAE,KAAK,EAAE,EAAE;gBAClD,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,iBAAiB,CAAC,EAAE,CAAC,CAAC;gBAClF,IAAI,CAAC,UAAU,EAAE,CAAC;oBACd,OAAO,IAAI,CAAC;gBAChB,CAAC;gBACD,OAAO,CACH,KAAC,0BAA0B,IAEvB,cAAc,EAAE,mBAAmB,EACnC,qBAAqB,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,EAC1C,oBAAoB,EAAE,UAAU,CAAC,KAAK,EACtC,mBAAmB,EAAE,mBAAmB,IAJnC,KAAK,CAKZ,CACL,CAAC;YACN,CAAC,CAAC,EACD,YAAY,GAAG,CAAC,IAAI,CACjB,KAAC,0BAA0B,IACvB,cAAc,EAAE,mBAAmB,EACnC,qBAAqB,EAAE,IAAI,EAC3B,oBAAoB,EAAE,YAAY,EAClC,mBAAmB,EAAE,mBAAmB,GAC1C,CACL,IACM,CACd,CAAC;AACN,CAAC,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type AttributeDetailsTreeAttributeFragment} from '_ui/_gqlTypes';\nimport {KitSpace} from 'aristid-ds';\nimport {type FunctionComponent} from 'react';\nimport {type ValuesOccurrences} from './useCountValuesOccurrencesHook';\nimport {useListTreeAttributeValuesHook} from './useListTreeAttributeValuesHook';\nimport {EditTreeAttributeValueLine} from './EditTreeAttributeValueLine';\n\nexport const EditTreeAttributeValuesMapping: FunctionComponent<{\n selectedAttribute: AttributeDetailsTreeAttributeFragment;\n valuesOccurrences: ValuesOccurrences;\n setAttributeMapping: (before: string | null, after: string | null) => void;\n}> = ({selectedAttribute, valuesOccurrences, setAttributeMapping}) => {\n const treeAttributeValues = useListTreeAttributeValuesHook({treeAttribute: selectedAttribute});\n const {occurrences, noValueCount} = valuesOccurrences;\n\n return (\n <KitSpace direction=\"vertical\" size=\"xs\" style={{display: 'flex'}}>\n {treeAttributeValues.map((nodeForOccurrence, index) => {\n const occurrence = occurrences.find(occ => occ.value.id === nodeForOccurrence.id);\n if (!occurrence) {\n return null;\n }\n return (\n <EditTreeAttributeValueLine\n key={index}\n treeNodeValues={treeAttributeValues}\n valueOccurrenceNodeId={occurrence.value.id}\n valueOccurrenceCount={occurrence.count}\n setAttributeMapping={setAttributeMapping}\n />\n );\n })}\n {noValueCount > 0 && (\n <EditTreeAttributeValueLine\n treeNodeValues={treeAttributeValues}\n valueOccurrenceNodeId={null}\n valueOccurrenceCount={noValueCount}\n setAttributeMapping={setAttributeMapping}\n />\n )}\n </KitSpace>\n );\n};\n"]}
1
+ {"version":3,"file":"EditTreeAttributeValuesMapping.js","sourceRoot":"","sources":["../../../../../src/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValuesMapping.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAC,MAAM,YAAY,CAAC;AAE/C,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAG9C,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAE/B,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,EAC3C,SAAS,EACT,SAAS,EACT,mBAAmB,EACnB,oBAAoB,GAMvB,EAAE,EAAE;IACD,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IAEnC,MAAM,EAAC,YAAY,EAAE,YAAY,EAAE,OAAO,EAAC,GAAG,qBAAqB,CAAC;QAChE,WAAW,EAAE,SAAS,CAAC,EAAE;QACzB,SAAS;QACT,aAAa,EAAE,oBAAoB;KACtC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAE,CAAC,EAAE,KAAK,iBAAiB,CAAC,IAAI,IAAI,CAAC;IACzF,MAAM,aAAa,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAE,CAAC,EAAE,KAAK,iBAAiB,CAAC,CAAC;IAErF,MAAM,aAAa,GAAG,oBAAoB,CAAC,EAAC,YAAY,EAAE,aAAa,EAAC,CAAC,CAAC;IAE1E,IAAI,OAAO,EAAE,CAAC;QACV,OAAO,KAAC,SAAS,KAAG,CAAC;IACzB,CAAC;IAED,OAAO,CACH,MAAC,QAAQ,IAAC,SAAS,EAAC,UAAU,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAE,EAAC,OAAO,EAAE,MAAM,EAAC,aAC5D,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAC5B,KAAC,aAAa,OAEN,SAAS,EACb,mBAAmB,EAAE,mBAAmB,IAFnC,SAAS,CAAC,WAAW,CAAC,EAAE,CAG/B,CACL,CAAC,EACD,YAAY,GAAG,CAAC,IAAI,WAAW,KAAK,IAAI,IAAI,CACzC,KAAC,aAAa,IACV,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,YAAY,EAC7B,cAAc,EAAE;oBACZ,EAAC,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC,uDAAuD,CAAC,EAAC;oBAC1F,GAAG,aAAa;iBACnB,EACD,mBAAmB,EAAE,mBAAmB,GAC1C,CACL,IACM,CACd,CAAC;AACN,CAAC,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {KitLoader, KitSpace} from 'aristid-ds';\nimport {type RecordFilterInput} from '_ui/_gqlTypes';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {useValuesDistribution} from './useValuesDistribution';\nimport {useTreeNodeRemapping} from './useTreeNodeRemapping';\nimport {TreeNodeRemap} from './TreeNodeRemap';\nimport {type MassEditableAttribute, type SetAttributeMapping} from './_types';\n\nconst UNDEFINED_NODE_ID = null;\n\nexport const EditTreeAttributeValuesMapping = ({\n libraryId,\n attribute,\n setAttributeMapping,\n massSelectionFilters,\n}: {\n libraryId: string;\n attribute: MassEditableAttribute;\n setAttributeMapping: SetAttributeMapping;\n massSelectionFilters: RecordFilterInput[];\n}) => {\n const {t} = useSharedTranslation();\n\n const {distribution, noValueCount, loading} = useValuesDistribution({\n attributeId: attribute.id,\n libraryId,\n recordFilters: massSelectionFilters,\n });\n\n const noValueNode = attribute.treeNodes.find(({id}) => id === UNDEFINED_NODE_ID) ?? null;\n const editableNodes = attribute.treeNodes.filter(({id}) => id !== UNDEFINED_NODE_ID);\n\n const remappingList = useTreeNodeRemapping({distribution, editableNodes});\n\n if (loading) {\n return <KitLoader />;\n }\n\n return (\n <KitSpace direction=\"vertical\" size=\"xs\" style={{display: 'flex'}}>\n {remappingList.map(remapping => (\n <TreeNodeRemap\n key={remapping.currentNode.id}\n {...remapping}\n setAttributeMapping={setAttributeMapping}\n />\n ))}\n {noValueCount > 0 && noValueNode !== null && (\n <TreeNodeRemap\n currentNode={noValueNode}\n occurrenceCount={noValueCount}\n candidateNodes={[\n {id: UNDEFINED_NODE_ID, label: t('explorer.massAction.editAttribute_value_do_not_change')},\n ...editableNodes,\n ]}\n setAttributeMapping={setAttributeMapping}\n />\n )}\n </KitSpace>\n );\n};\n"]}
@@ -0,0 +1,7 @@
1
+ import { type MassEditTreeNode, type SetAttributeMapping } from './_types';
2
+ export declare const TreeNodeRemap: ({ currentNode, occurrenceCount, candidateNodes, setAttributeMapping, }: {
3
+ currentNode: MassEditTreeNode;
4
+ occurrenceCount: number;
5
+ candidateNodes: MassEditTreeNode[];
6
+ setAttributeMapping: SetAttributeMapping;
7
+ }) => JSX.Element;
@@ -0,0 +1,30 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import styled from 'styled-components';
3
+ import { KitIdCard, KitSelect, KitTypography } from 'aristid-ds';
4
+ import { useSharedTranslation } from '../../../../hooks/useSharedTranslation';
5
+ const DivContainer = styled.div `
6
+ display: grid;
7
+ align-items: center;
8
+ grid-template-columns: repeat(3, 1fr);
9
+ grid-column-gap: calc(var(--general-spacing-l) * 1px);
10
+ `;
11
+ const UNDEFINED_VALUE = '__null__';
12
+ const DEFAULT_ID_CARD_COLOR = 'rgba(200, 200, 200, 1)';
13
+ export const TreeNodeRemap = ({ currentNode, occurrenceCount, candidateNodes, setAttributeMapping, }) => {
14
+ const { t } = useSharedTranslation();
15
+ const selectOptions = candidateNodes.map(node => ({
16
+ label: node.label,
17
+ value: node.id ?? UNDEFINED_VALUE,
18
+ }));
19
+ const doNotChangeOption = selectOptions[0];
20
+ return (_jsxs(DivContainer, { children: [_jsx(KitIdCard, { title: currentNode.label, color: currentNode.color ?? DEFAULT_ID_CARD_COLOR }), _jsx(KitTypography.Text, { children: t('explorer.massAction.editAttribute_value_occurrences_to_edit', {
21
+ count: occurrenceCount,
22
+ }) }), _jsx(KitSelect, { defaultValue: doNotChangeOption.value, options: selectOptions, size: "middle", allowClear: false, onChange: value => {
23
+ setAttributeMapping({
24
+ before: currentNode.id,
25
+ after: value === UNDEFINED_VALUE ? null : value,
26
+ occurrenceCount,
27
+ });
28
+ } })] }));
29
+ };
30
+ //# sourceMappingURL=TreeNodeRemap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeNodeRemap.js","sourceRoot":"","sources":["../../../../../src/components/Explorer/actions-mass/edit-attribute/TreeNodeRemap.tsx"],"names":[],"mappings":";AAIA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAC,SAAS,EAAE,SAAS,EAAE,aAAa,EAAC,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AAGpE,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;CAK9B,CAAC;AAEF,MAAM,eAAe,GAAG,UAAU,CAAC;AACnC,MAAM,qBAAqB,GAAG,wBAAwB,CAAC;AAEvD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC1B,WAAW,EACX,eAAe,EACf,cAAc,EACd,mBAAmB,GAMtB,EAAE,EAAE;IACD,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IAEnC,MAAM,aAAa,GAAgD,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3F,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,eAAe;KACpC,CAAC,CAAC,CAAC;IAEJ,MAAM,iBAAiB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAE3C,OAAO,CACH,MAAC,YAAY,eACT,KAAC,SAAS,IAAC,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,IAAI,qBAAqB,GAAI,EAC1F,KAAC,aAAa,CAAC,IAAI,cACd,CAAC,CAAC,6DAA6D,EAAE;oBAC9D,KAAK,EAAE,eAAe;iBACzB,CAAC,GACe,EACrB,KAAC,SAAS,IACN,YAAY,EAAE,iBAAiB,CAAC,KAAK,EACrC,OAAO,EAAE,aAAa,EACtB,IAAI,EAAC,QAAQ,EACb,UAAU,EAAE,KAAK,EACjB,QAAQ,EAAE,KAAK,CAAC,EAAE;oBACd,mBAAmB,CAAC;wBAChB,MAAM,EAAE,WAAW,CAAC,EAAE;wBACtB,KAAK,EAAE,KAAK,KAAK,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;wBAC/C,eAAe;qBAClB,CAAC,CAAC;gBACP,CAAC,GACH,IACS,CAClB,CAAC;AACN,CAAC,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type ComponentProps} from 'react';\nimport styled from 'styled-components';\nimport {KitIdCard, KitSelect, KitTypography} from 'aristid-ds';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {type MassEditTreeNode, type SetAttributeMapping} from './_types';\n\nconst DivContainer = styled.div`\n display: grid;\n align-items: center;\n grid-template-columns: repeat(3, 1fr);\n grid-column-gap: calc(var(--general-spacing-l) * 1px);\n`;\n\nconst UNDEFINED_VALUE = '__null__';\nconst DEFAULT_ID_CARD_COLOR = 'rgba(200, 200, 200, 1)';\n\nexport const TreeNodeRemap = ({\n currentNode,\n occurrenceCount,\n candidateNodes,\n setAttributeMapping,\n}: {\n currentNode: MassEditTreeNode;\n occurrenceCount: number;\n candidateNodes: MassEditTreeNode[];\n setAttributeMapping: SetAttributeMapping;\n}) => {\n const {t} = useSharedTranslation();\n\n const selectOptions: ComponentProps<typeof KitSelect>['options'] = candidateNodes.map(node => ({\n label: node.label,\n value: node.id ?? UNDEFINED_VALUE,\n }));\n\n const doNotChangeOption = selectOptions[0];\n\n return (\n <DivContainer>\n <KitIdCard title={currentNode.label} color={currentNode.color ?? DEFAULT_ID_CARD_COLOR} />\n <KitTypography.Text>\n {t('explorer.massAction.editAttribute_value_occurrences_to_edit', {\n count: occurrenceCount,\n })}\n </KitTypography.Text>\n <KitSelect\n defaultValue={doNotChangeOption.value}\n options={selectOptions}\n size=\"middle\"\n allowClear={false}\n onChange={value => {\n setAttributeMapping({\n before: currentNode.id,\n after: value === UNDEFINED_VALUE ? null : value,\n occurrenceCount,\n });\n }}\n />\n </DivContainer>\n );\n};\n"]}
@@ -0,0 +1,23 @@
1
+ import { type SystemTranslation } from '../../../../types';
2
+ import { type SaveValueBulkMappingValueInput } from '../../../../_gqlTypes';
3
+ export type MassEditableAttribute = {
4
+ id: string;
5
+ label?: SystemTranslation;
6
+ dependencies: Array<{
7
+ id: string;
8
+ label?: SystemTranslation;
9
+ }>;
10
+ hasEmptyDependency: boolean;
11
+ isSimpleWorkflow: boolean;
12
+ isMonoDependencyWorkflow: boolean;
13
+ treeNodes: MassEditTreeNode[];
14
+ };
15
+ export type MassEditTreeNode = {
16
+ id: string | null;
17
+ label: string;
18
+ color?: string | null;
19
+ allowedDependentNodeIds?: string[];
20
+ };
21
+ export type SetAttributeMapping = (mapping: SaveValueBulkMappingValueInput & {
22
+ occurrenceCount: number;
23
+ }) => void;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=_types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_types.js","sourceRoot":"","sources":["../../../../../src/components/Explorer/actions-mass/edit-attribute/_types.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type SystemTranslation} from '_ui/types';\nimport {type SaveValueBulkMappingValueInput} from '_ui/_gqlTypes';\n\nexport type MassEditableAttribute = {\n id: string;\n label?: SystemTranslation;\n dependencies: Array<{id: string; label?: SystemTranslation}>;\n hasEmptyDependency: boolean;\n isSimpleWorkflow: boolean;\n isMonoDependencyWorkflow: boolean;\n treeNodes: MassEditTreeNode[];\n};\n\nexport type MassEditTreeNode = {\n id: string | null;\n label: string;\n color?: string | null;\n allowedDependentNodeIds?: string[];\n};\n\nexport type SetAttributeMapping = (mapping: SaveValueBulkMappingValueInput & {occurrenceCount: number}) => void;\n"]}
@@ -0,0 +1,4 @@
1
+ import { type MassEditableAttribute } from './_types';
2
+ export declare const useMassEditableAttributes: ({ libraryId }: {
3
+ libraryId: string;
4
+ }) => MassEditableAttribute[];