@leav/ui 1.5.3 → 1.6.0-0f019af0
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.
- package/dist/_gqlTypes/index.d.ts +640 -701
- package/dist/_gqlTypes/index.js +50 -167
- package/dist/_gqlTypes/index.js.map +1 -1
- package/dist/_queries/trees/treeNodeChildrenQuery.js +2 -0
- package/dist/_queries/trees/treeNodeChildrenQuery.js.map +1 -1
- package/dist/_queries/views/viewDetailsFragment.js +1 -0
- package/dist/_queries/views/viewDetailsFragment.js.map +1 -1
- package/dist/components/AttributesSelectionList/sharedComponents.d.ts +159 -153
- package/dist/components/Explorer/Explorer.js +5 -3
- package/dist/components/Explorer/Explorer.js.map +1 -1
- package/dist/components/Explorer/ExplorerFiltersAndSorts.js +1 -1
- package/dist/components/Explorer/ExplorerFiltersAndSorts.js.map +1 -1
- package/dist/components/Explorer/TableCell.js +6 -7
- package/dist/components/Explorer/TableCell.js.map +1 -1
- package/dist/components/Explorer/TableNameCell.js +9 -3
- package/dist/components/Explorer/TableNameCell.js.map +1 -1
- package/dist/components/Explorer/_queries/useExplorerData.d.ts +7 -7
- package/dist/components/Explorer/_queries/useExplorerData.js +19 -7
- package/dist/components/Explorer/_queries/useExplorerData.js.map +1 -1
- package/dist/components/Explorer/_types.d.ts +1 -0
- package/dist/components/Explorer/_types.js.map +1 -1
- package/dist/components/Explorer/actions-item/useEditStatusItemAction.js +3 -2
- package/dist/components/Explorer/actions-item/useEditStatusItemAction.js.map +1 -1
- package/dist/components/Explorer/actions-item/useReplaceItemAction.d.ts +2 -1
- package/dist/components/Explorer/actions-item/useReplaceItemAction.js +5 -4
- package/dist/components/Explorer/actions-item/useReplaceItemAction.js.map +1 -1
- package/dist/components/Explorer/actions-mass/export/ExportProfileSelectionModal.d.ts +10 -0
- package/dist/components/Explorer/actions-mass/export/ExportProfileSelectionModal.js +46 -0
- package/dist/components/Explorer/actions-mass/export/ExportProfileSelectionModal.js.map +1 -0
- package/dist/components/Explorer/actions-mass/export/content/NoProfiles.d.ts +1 -0
- package/dist/components/Explorer/actions-mass/export/content/NoProfiles.js +17 -0
- package/dist/components/Explorer/actions-mass/export/content/NoProfiles.js.map +1 -0
- package/dist/components/Explorer/actions-mass/export/content/ProfilesSelection.d.ts +8 -0
- package/dist/components/Explorer/actions-mass/export/content/ProfilesSelection.js +49 -0
- package/dist/components/Explorer/actions-mass/export/content/ProfilesSelection.js.map +1 -0
- package/dist/components/Explorer/actions-mass/export/useGetLibraryExportProfiles.d.ts +27 -0
- package/dist/components/Explorer/actions-mass/export/useGetLibraryExportProfiles.js +48 -0
- package/dist/components/Explorer/actions-mass/export/useGetLibraryExportProfiles.js.map +1 -0
- package/dist/components/Explorer/actions-mass/useDeactivateMassAction.js +3 -2
- package/dist/components/Explorer/actions-mass/useDeactivateMassAction.js.map +1 -1
- package/dist/components/Explorer/actions-mass/useDeleteLinkValues.js +3 -2
- package/dist/components/Explorer/actions-mass/useDeleteLinkValues.js.map +1 -1
- package/dist/components/Explorer/actions-mass/useEditAttributeMassAction.js +8 -7
- package/dist/components/Explorer/actions-mass/useEditAttributeMassAction.js.map +1 -1
- package/dist/components/Explorer/actions-mass/useExportMassAction.d.ts +7 -4
- package/dist/components/Explorer/actions-mass/useExportMassAction.js +81 -74
- package/dist/components/Explorer/actions-mass/useExportMassAction.js.map +1 -1
- package/dist/components/Explorer/actions-mass/useMassActions.js +3 -2
- package/dist/components/Explorer/actions-mass/useMassActions.js.map +1 -1
- package/dist/components/Explorer/actions-primary/useCreatePrimaryAction.js +3 -2
- package/dist/components/Explorer/actions-primary/useCreatePrimaryAction.js.map +1 -1
- package/dist/components/Explorer/actions-primary/useLinkPrimaryAction.d.ts +2 -1
- package/dist/components/Explorer/actions-primary/useLinkPrimaryAction.js +5 -4
- package/dist/components/Explorer/actions-primary/useLinkPrimaryAction.js.map +1 -1
- package/dist/components/Explorer/link-item/LinkModal.d.ts +1 -0
- package/dist/components/Explorer/link-item/LinkModal.js +2 -2
- package/dist/components/Explorer/link-item/LinkModal.js.map +1 -1
- package/dist/components/Explorer/list-saved-views/SavedViews.js +12 -9
- package/dist/components/Explorer/list-saved-views/SavedViews.js.map +1 -1
- package/dist/components/Explorer/manage-view-settings/_shared/ColumnItem.js +5 -8
- package/dist/components/Explorer/manage-view-settings/_shared/ColumnItem.js.map +1 -1
- package/dist/components/Explorer/manage-view-settings/configure-display/attributes/SelectVisibleAttributes.js +3 -2
- package/dist/components/Explorer/manage-view-settings/configure-display/attributes/SelectVisibleAttributes.js.map +1 -1
- package/dist/components/Explorer/manage-view-settings/filter-items/FilterItems.js +7 -6
- package/dist/components/Explorer/manage-view-settings/filter-items/FilterItems.js.map +1 -1
- package/dist/components/Explorer/manage-view-settings/filter-items/FilterListItem.js +3 -2
- package/dist/components/Explorer/manage-view-settings/filter-items/FilterListItem.js.map +1 -1
- package/dist/components/Explorer/manage-view-settings/open-view-settings/useOpenViewSettings.js +4 -3
- package/dist/components/Explorer/manage-view-settings/open-view-settings/useOpenViewSettings.js.map +1 -1
- package/dist/components/Explorer/manage-view-settings/router-menu/SettingItem.js +3 -2
- package/dist/components/Explorer/manage-view-settings/router-menu/SettingItem.js.map +1 -1
- package/dist/components/Explorer/manage-view-settings/router-menu/SettingsPanel.js +3 -2
- package/dist/components/Explorer/manage-view-settings/router-menu/SettingsPanel.js.map +1 -1
- package/dist/components/Explorer/manage-view-settings/save-view/LabelViewFormModal.js +3 -2
- package/dist/components/Explorer/manage-view-settings/save-view/LabelViewFormModal.js.map +1 -1
- package/dist/components/Explorer/manage-view-settings/save-view/prepareViewForRequest.js +3 -0
- package/dist/components/Explorer/manage-view-settings/save-view/prepareViewForRequest.js.map +1 -1
- package/dist/components/Explorer/manage-view-settings/save-view/useCreateNewView.js +3 -2
- package/dist/components/Explorer/manage-view-settings/save-view/useCreateNewView.js.map +1 -1
- package/dist/components/Explorer/manage-view-settings/save-view/useDeleteView.js +4 -3
- package/dist/components/Explorer/manage-view-settings/save-view/useDeleteView.js.map +1 -1
- package/dist/components/Explorer/manage-view-settings/save-view/useEditLabelView.js +3 -2
- package/dist/components/Explorer/manage-view-settings/save-view/useEditLabelView.js.map +1 -1
- package/dist/components/Explorer/manage-view-settings/save-view/useResetView.js +3 -2
- package/dist/components/Explorer/manage-view-settings/save-view/useResetView.js.map +1 -1
- package/dist/components/Explorer/manage-view-settings/save-view/useShareView.js +3 -2
- package/dist/components/Explorer/manage-view-settings/save-view/useShareView.js.map +1 -1
- package/dist/components/Explorer/manage-view-settings/save-view/useUpdateView.js +3 -2
- package/dist/components/Explorer/manage-view-settings/save-view/useUpdateView.js.map +1 -1
- package/dist/components/Explorer/manage-view-settings/sort-items/SortItems.js +7 -6
- package/dist/components/Explorer/manage-view-settings/sort-items/SortItems.js.map +1 -1
- package/dist/components/Explorer/manage-view-settings/sort-items/SortListItem.js +3 -2
- package/dist/components/Explorer/manage-view-settings/sort-items/SortListItem.js.map +1 -1
- package/dist/components/Explorer/manage-view-settings/store-view-settings/viewSettingsReducer.js.map +1 -1
- package/dist/components/Explorer/useSearchInput.js +6 -2
- package/dist/components/Explorer/useSearchInput.js.map +1 -1
- package/dist/components/Filters/FiltersProvider.d.ts +2 -2
- package/dist/components/Filters/FiltersProvider.js.map +1 -1
- package/dist/components/Filters/_types.d.ts +3 -0
- package/dist/components/Filters/_types.js.map +1 -1
- package/dist/components/Filters/context/filtersReducer.js +7 -4
- package/dist/components/Filters/context/filtersReducer.js.map +1 -1
- package/dist/components/Filters/context/useGetTreeFilters.js +3 -1
- package/dist/components/Filters/context/useGetTreeFilters.js.map +1 -1
- package/dist/components/Filters/filter-items/CommonFilterItem.d.ts +1 -0
- package/dist/components/Filters/filter-items/CommonFilterItem.js +28 -8
- package/dist/components/Filters/filter-items/CommonFilterItem.js.map +1 -1
- package/dist/components/Filters/filter-items/EmptyValueCheckbox.d.ts +8 -0
- package/dist/components/Filters/filter-items/EmptyValueCheckbox.js +16 -0
- package/dist/components/Filters/filter-items/EmptyValueCheckbox.js.map +1 -0
- package/dist/components/Filters/filter-items/filter-type/BooleanAttributeDropdown.js +23 -9
- package/dist/components/Filters/filter-items/filter-type/BooleanAttributeDropdown.js.map +1 -1
- package/dist/components/Filters/filter-items/filter-type/ColorAttributeDropDown.js +9 -8
- package/dist/components/Filters/filter-items/filter-type/ColorAttributeDropDown.js.map +1 -1
- package/dist/components/Filters/filter-items/filter-type/FilterDropDown.js +4 -3
- package/dist/components/Filters/filter-items/filter-type/FilterDropDown.js.map +1 -1
- package/dist/components/Filters/filter-items/filter-type/FilterDropdownContent.js +1 -1
- package/dist/components/Filters/filter-items/filter-type/FilterDropdownContent.js.map +1 -1
- package/dist/components/Filters/filter-items/filter-type/FilterValueListDropDown.d.ts +0 -1
- package/dist/components/Filters/filter-items/filter-type/FilterValueListDropDown.js +17 -23
- package/dist/components/Filters/filter-items/filter-type/FilterValueListDropDown.js.map +1 -1
- package/dist/components/Filters/filter-items/filter-type/TreeAttributeDropDown.js +10 -12
- package/dist/components/Filters/filter-items/filter-type/TreeAttributeDropDown.js.map +1 -1
- package/dist/components/Filters/filter-items/filter-type/useConditionOptionsByType.js +3 -13
- package/dist/components/Filters/filter-items/filter-type/useConditionOptionsByType.js.map +1 -1
- package/dist/components/Filters/index.d.ts +1 -0
- package/dist/components/Filters/index.js +1 -0
- package/dist/components/Filters/index.js.map +1 -1
- package/dist/components/Filters/prepareFiltersForRequest.js +36 -3
- package/dist/components/Filters/prepareFiltersForRequest.js.map +1 -1
- package/dist/components/Filters/useFilters.d.ts +5 -0
- package/dist/components/Filters/useTransformFilters.js +4 -0
- package/dist/components/Filters/useTransformFilters.js.map +1 -1
- package/dist/components/ImportModal/ImportModalSelectFileStep/ImportModalSelectFileStep.js +8 -4
- package/dist/components/ImportModal/ImportModalSelectFileStep/ImportModalSelectFileStep.js.map +1 -1
- package/dist/components/LibraryItemsList/FiltersPanel/FiltersOptions.js +1 -8
- package/dist/components/LibraryItemsList/FiltersPanel/FiltersOptions.js.map +1 -1
- package/dist/components/LibraryItemsList/LibraryItemsListContent/LibraryItemsListContent.js +5 -3
- package/dist/components/LibraryItemsList/LibraryItemsListContent/LibraryItemsListContent.js.map +1 -1
- package/dist/components/LibraryItemsList/MenuView/MenuView.js +4 -4
- package/dist/components/LibraryItemsList/MenuView/MenuView.js.map +1 -1
- package/dist/components/LibraryItemsList/ViewPanel/View/View.js +3 -2
- package/dist/components/LibraryItemsList/ViewPanel/View/View.js.map +1 -1
- package/dist/components/Notifications/hooks/useNotificationSubscription.js +10 -8
- package/dist/components/Notifications/hooks/useNotificationSubscription.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/shared/ValuesVersionBtn/ValuesVersionBtn.js +5 -20
- package/dist/components/RecordEdition/EditRecordContent/shared/ValuesVersionBtn/ValuesVersionBtn.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/link-record/useLinkRecords.js +4 -3
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/link-record/useLinkRecords.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/ExplorerWrapper.d.ts +53 -51
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardField.js +4 -3
- package/dist/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardField.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/TreeField.js +9 -2
- package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/TreeField.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/display-tree-node/TreeFieldWrapper.d.ts +53 -51
- package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/display-tree-node/TreeNodeItem.js +3 -2
- package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/display-tree-node/TreeNodeItem.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/SelectTreeNodeModal.d.ts +2 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/SelectTreeNodeModal.js +4 -7
- package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/SelectTreeNodeModal.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/useManageTreeNodeSelection.d.ts +3 -2
- package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/useManageTreeNodeSelection.js +2 -2
- package/dist/components/RecordEdition/EditRecordContent/uiElements/TreeField/manage-tree-node-selection/useManageTreeNodeSelection.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/ComputeIndicator.js +3 -2
- package/dist/components/RecordEdition/EditRecordContent/uiElements/shared/ComputeIndicator.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordSidebar/RecordSummary/RecordInformations/RecordInformations.js +3 -2
- package/dist/components/RecordEdition/EditRecordSidebar/RecordSummary/RecordInformations/RecordInformations.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordSidebar/ValuesSummary/ValuesSummary.js +4 -3
- package/dist/components/RecordEdition/EditRecordSidebar/ValuesSummary/ValuesSummary.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordSidebar/ValuesVersions/ValuesVersions.js +3 -2
- package/dist/components/RecordEdition/EditRecordSidebar/ValuesVersions/ValuesVersions.js.map +1 -1
- package/dist/components/SelectRecordForLinkModal/SelectRecordForLinkModal.d.ts +1 -0
- package/dist/components/SelectRecordForLinkModal/SelectRecordForLinkModal.js +7 -7
- package/dist/components/SelectRecordForLinkModal/SelectRecordForLinkModal.js.map +1 -1
- package/dist/components/SelectTreeNode/SelectTreeNode.d.ts +2 -1
- package/dist/components/SelectTreeNode/SelectTreeNode.js +3 -3
- package/dist/components/SelectTreeNode/SelectTreeNode.js.map +1 -1
- package/dist/components/SelectTreeNode/SelectTreeNodeContent.d.ts +2 -1
- package/dist/components/SelectTreeNode/SelectTreeNodeContent.js +6 -2
- package/dist/components/SelectTreeNode/SelectTreeNodeContent.js.map +1 -1
- package/dist/components/SelectTreeNode/TreeNodeTitle.js +3 -2
- package/dist/components/SelectTreeNode/TreeNodeTitle.js.map +1 -1
- package/dist/components/TriggerPreviewsGenerationModal/TriggerPreviewsGenerationModal.js +14 -4
- package/dist/components/TriggerPreviewsGenerationModal/TriggerPreviewsGenerationModal.js.map +1 -1
- package/dist/constants.d.ts +5 -1
- package/dist/constants.js +5 -1
- package/dist/constants.js.map +1 -1
- package/dist/hooks/useIFrameMessenger/messageHandlers.d.ts +2 -1
- package/dist/hooks/useIFrameMessenger/messageHandlers.js +8 -0
- package/dist/hooks/useIFrameMessenger/messageHandlers.js.map +1 -1
- package/dist/hooks/useIFrameMessenger/schema.d.ts +5 -0
- package/dist/hooks/useIFrameMessenger/schema.js +2 -0
- package/dist/hooks/useIFrameMessenger/schema.js.map +1 -1
- package/dist/hooks/useIFrameMessenger/types.d.ts +12 -2
- package/dist/hooks/useIFrameMessenger/types.js.map +1 -1
- package/dist/hooks/useIFrameMessenger/useIFrameMessenger.d.ts +1 -0
- package/dist/hooks/useIFrameMessenger/useIFrameMessenger.js +16 -2
- package/dist/hooks/useIFrameMessenger/useIFrameMessenger.js.map +1 -1
- package/dist/hooks/useIFrameMessengerClient/iFrameMessengerClientContext.d.ts +1 -0
- package/dist/hooks/useIFrameMessengerClient/useIFrameMessengerClient.d.ts +1 -0
- package/dist/locales/en/shared.json +15 -3
- package/dist/locales/fr/shared.json +15 -3
- package/package.json +21 -24
|
@@ -4,18 +4,18 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
4
4
|
// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt
|
|
5
5
|
import { extractArgsFromString } from '@leav/utils';
|
|
6
6
|
import { message, Space, Spin } from 'antd';
|
|
7
|
-
import { KitAlert, KitUpload,
|
|
7
|
+
import { KitAlert, KitUpload, KitNotification } from 'aristid-ds';
|
|
8
8
|
import { useState } from 'react';
|
|
9
9
|
import { read as xlsxRead, utils as xlsxUtils } from 'xlsx';
|
|
10
10
|
import { useSharedTranslation } from '../../../hooks/useSharedTranslation';
|
|
11
11
|
import { AttributeType, ImportMode, ImportType, } from '../../../_gqlTypes';
|
|
12
12
|
import { ImportReducerActionTypes } from '../importReducer/importReducer';
|
|
13
13
|
import { useImportReducerContext } from '../importReducer/ImportReducerContext';
|
|
14
|
+
import { ERROR_NOTIFICATION_DURATION } from '../../../constants';
|
|
14
15
|
const defaultType = ImportType.STANDARD;
|
|
15
16
|
const defaultMode = ImportMode.upsert;
|
|
16
17
|
function ImportModalSelectFileStep({ onGetAttributes }) {
|
|
17
18
|
const { t } = useSharedTranslation();
|
|
18
|
-
const { kitNotification } = useKitNotification();
|
|
19
19
|
const { state, dispatch } = useImportReducerContext();
|
|
20
20
|
const { file } = state;
|
|
21
21
|
const _setFileData = async (content) => {
|
|
@@ -143,9 +143,11 @@ function ImportModalSelectFileStep({ onGetAttributes }) {
|
|
|
143
143
|
}
|
|
144
144
|
catch (error) {
|
|
145
145
|
const errorMessage = error?.message ?? t('error.error_occurred');
|
|
146
|
-
|
|
146
|
+
KitNotification.error({
|
|
147
147
|
message: t('error.error_occurred'),
|
|
148
148
|
description: errorMessage,
|
|
149
|
+
duration: ERROR_NOTIFICATION_DURATION,
|
|
150
|
+
closable: true,
|
|
149
151
|
});
|
|
150
152
|
}
|
|
151
153
|
};
|
|
@@ -156,9 +158,11 @@ function ImportModalSelectFileStep({ onGetAttributes }) {
|
|
|
156
158
|
setLoading(false);
|
|
157
159
|
};
|
|
158
160
|
reader.onerror = e => {
|
|
159
|
-
|
|
161
|
+
KitNotification.error({
|
|
160
162
|
message: t('error.error_occurred'),
|
|
161
163
|
description: reader.error?.message ?? '',
|
|
164
|
+
duration: ERROR_NOTIFICATION_DURATION,
|
|
165
|
+
closable: true,
|
|
162
166
|
});
|
|
163
167
|
};
|
|
164
168
|
// Prevent default upload. We'll handle it ourselves later on
|
package/dist/components/ImportModal/ImportModalSelectFileStep/ImportModalSelectFileStep.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImportModalSelectFileStep.js","sourceRoot":"","sources":["../../../../src/components/ImportModal/ImportModalSelectFileStep/ImportModalSelectFileStep.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 {extractArgsFromString} from '@leav/utils';\nimport {message, Space, Spin} from 'antd';\nimport {KitAlert, KitUpload, useKitNotification} from 'aristid-ds';\nimport {type IKitDragger} from 'aristid-ds/dist/Kit/DataEntry/Upload/types';\nimport {useState} from 'react';\nimport {read as xlsxRead, utils as xlsxUtils} from 'xlsx';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {\n type AttributesByLibAttributeFragment,\n type AttributesByLibAttributeLinkAttributeFragment,\n AttributeType,\n ImportMode,\n ImportType,\n} from '_ui/_gqlTypes';\nimport {ImportReducerActionTypes} from '../importReducer/importReducer';\nimport {useImportReducerContext} from '../importReducer/ImportReducerContext';\nimport {type ISheet} from '../_types';\n\ninterface IImportModalSelectFileStepsProps {\n onGetAttributes: (library: string) => Promise<AttributesByLibAttributeFragment[]>;\n}\n\nconst defaultType = ImportType.STANDARD;\nconst defaultMode = ImportMode.upsert;\n\nfunction ImportModalSelectFileStep({onGetAttributes}: IImportModalSelectFileStepsProps): JSX.Element {\n const {t} = useSharedTranslation();\n const {kitNotification} = useKitNotification();\n\n const {state, dispatch} = useImportReducerContext();\n const {file} = state;\n\n const _setFileData = async content => {\n const workbook = xlsxRead(content, {type: 'binary'});\n\n const s: ISheet[] = [];\n\n for (const sheetName in workbook.Sheets) {\n if (workbook.Sheets.hasOwnProperty(sheetName)) {\n // Use the sheet_to_json method to convert excel to json data\n const sheetData: Array<{[col: string]: string}> = xlsxUtils.sheet_to_json(workbook.Sheets[sheetName], {\n blankrows: false,\n defval: null,\n });\n\n // if sheet is empty we skip it\n if (!sheetData.length) {\n continue;\n }\n\n // get columns' name\n const sheetColumns = Object.keys(sheetData[0]);\n\n // match only first line cells (A1, B1, etc.)\n const firstRowAddresses = Object.keys(workbook.Sheets[sheetName]).filter(\n k => !!k.match(/\\b[A-Z]+1\\b/g),\n );\n\n const isMapped = !!workbook.Sheets[sheetName][firstRowAddresses[0]]?.c;\n\n // Mapping is present.\n if (isMapped) {\n const comments: string[] = [];\n\n for (const address of firstRowAddresses) {\n // get first line comments and delete \"\\n\" characters\n comments.push(workbook.Sheets[sheetName][address].c?.[0]?.t?.replace(/\\n/g, ' ') || null);\n }\n\n const params = extractArgsFromString(comments[0]);\n\n const sType = params.type ?? defaultType;\n const sLibrary = params.library;\n const sLinkAttribute = params.linkAttribute;\n const sMode = params.mode ?? defaultMode;\n let sMapping = [];\n const sTreeLinkLibrary = params.treeLinkLibrary;\n let sKeyColumnIndex: number;\n let sKeyToColumnIndex: number;\n\n let sKeyToAttributes: AttributesByLibAttributeFragment[] = [];\n\n const attributes = await onGetAttributes(sLibrary);\n\n // Extract mapping, keyIndex and keyToIndex from all columns comments\n for (const [index, comm] of comments.entries()) {\n const commArgs = extractArgsFromString(comm);\n sMapping.push(String(commArgs.id) ?? null);\n\n if (commArgs.key) {\n sKeyColumnIndex = index;\n }\n\n if (commArgs.keyTo) {\n sKeyToColumnIndex = index;\n }\n }\n\n const linkAttributeProps =\n sKeyToColumnIndex && sLinkAttribute\n ? (attributes.find(\n a => a.id === sLinkAttribute,\n ) as AttributesByLibAttributeLinkAttributeFragment)\n : null;\n\n if (linkAttributeProps && (linkAttributeProps.type !== AttributeType.tree || sTreeLinkLibrary)) {\n const keyToLibrary =\n linkAttributeProps.type === AttributeType.tree\n ? sTreeLinkLibrary\n : linkAttributeProps?.linked_library?.id;\n sKeyToAttributes = await onGetAttributes(keyToLibrary);\n }\n\n // Check if all mapping attributes actually exist\n sMapping = sMapping.map((mappingAttribute, index) => {\n const attributesToCheck = index === sKeyToColumnIndex ? sKeyToAttributes : attributes;\n return attributesToCheck.find(attribute => attribute.id === mappingAttribute)\n ? mappingAttribute\n : null;\n });\n\n s.push({\n name: sheetName,\n attributes,\n columns: sheetColumns,\n type: ImportType[sType],\n mode: ImportMode[sMode],\n library: sLibrary,\n linkAttribute: sLinkAttribute,\n linkAttributeProps,\n keyColumnIndex: sKeyColumnIndex,\n keyToColumnIndex: sKeyToColumnIndex,\n keyToAttributes: sKeyToAttributes,\n treeLinkLibrary: sTreeLinkLibrary,\n data: sheetData.length ? sheetData : null,\n mapping: sMapping,\n });\n } else {\n const sLibrary = state.defaultLibrary;\n const attributes = await onGetAttributes(sLibrary);\n\n s.push({\n name: sheetName,\n library: sLibrary,\n columns: sheetColumns,\n type: defaultType,\n mode: defaultMode,\n attributes,\n mapping: [],\n data: sheetData.length ? sheetData : null,\n });\n }\n }\n }\n\n if (!s.length || s.every(sheet => sheet.data === null)) {\n message.error(t('import.empty_file'));\n return false;\n }\n\n dispatch({type: ImportReducerActionTypes.SET_SHEETS, sheets: s});\n\n return true;\n };\n\n const [loading, setLoading] = useState(false);\n\n const draggerProps: IKitDragger = {\n name: 'file',\n multiple: false,\n accept: '.xlsx',\n description: t('import.file_selection_restriction', {allowedFormat: '.xlsx'}),\n title: file?.name ?? t('import.file_selection_instruction'),\n beforeUpload: fileToImport => {\n // Read file to read mapping and display a preview on next step\n const reader = new FileReader();\n reader.readAsBinaryString(fileToImport);\n\n reader.onload = async e => {\n try {\n const res = await _setFileData(reader.result);\n\n if (res) {\n dispatch({type: ImportReducerActionTypes.SET_FILE, file: fileToImport});\n }\n dispatch({type: ImportReducerActionTypes.SET_OK_BTN, okBtn: res});\n } catch (error) {\n const errorMessage = error?.message ?? t('error.error_occurred');\n kitNotification.error({\n message: t('error.error_occurred'),\n description: errorMessage,\n });\n }\n };\n\n reader.onloadstart = e => {\n setLoading(true);\n };\n\n reader.onloadend = e => {\n setLoading(false);\n };\n\n reader.onerror = e => {\n kitNotification.error({\n message: t('error.error_occurred'),\n description: reader.error?.message ?? '',\n });\n };\n\n // Prevent default upload. We'll handle it ourselves later on\n return false;\n },\n };\n\n return (\n <Space direction=\"vertical\" style={{width: '100%'}}>\n <Spin spinning={loading}>\n <KitUpload.Dragger {...draggerProps} />\n </Spin>\n <KitAlert message={t('import.first_line_info')} type=\"info\" showIcon />\n </Space>\n );\n}\n\nexport default ImportModalSelectFileStep;\n"]}
|
|
1
|
+
{"version":3,"file":"ImportModalSelectFileStep.js","sourceRoot":"","sources":["../../../../src/components/ImportModal/ImportModalSelectFileStep/ImportModalSelectFileStep.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,qBAAqB,EAAC,MAAM,aAAa,CAAC;AAClD,OAAO,EAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAC,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAC,MAAM,YAAY,CAAC;AAEhE,OAAO,EAAC,QAAQ,EAAC,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAC,IAAI,IAAI,QAAQ,EAAE,KAAK,IAAI,SAAS,EAAC,MAAM,MAAM,CAAC;AAC1D,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAGH,aAAa,EACb,UAAU,EACV,UAAU,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,wBAAwB,EAAC,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAC,uBAAuB,EAAC,MAAM,uCAAuC,CAAC;AAE9E,OAAO,EAAC,2BAA2B,EAAC,MAAM,eAAe,CAAC;AAM1D,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC;AACxC,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC;AAEtC,SAAS,yBAAyB,CAAC,EAAC,eAAe,EAAmC;IAClF,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IAEnC,MAAM,EAAC,KAAK,EAAE,QAAQ,EAAC,GAAG,uBAAuB,EAAE,CAAC;IACpD,MAAM,EAAC,IAAI,EAAC,GAAG,KAAK,CAAC;IAErB,MAAM,YAAY,GAAG,KAAK,EAAC,OAAO,EAAC,EAAE;QACjC,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;QAErD,MAAM,CAAC,GAAa,EAAE,CAAC;QAEvB,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACtC,IAAI,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5C,6DAA6D;gBAC7D,MAAM,SAAS,GAAmC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;oBAClG,SAAS,EAAE,KAAK;oBAChB,MAAM,EAAE,IAAI;iBACf,CAAC,CAAC;gBAEH,+BAA+B;gBAC/B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;oBACpB,SAAS;gBACb,CAAC;gBAED,oBAAoB;gBACpB,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;gBAE/C,6CAA6C;gBAC7C,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CACpE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CACjC,CAAC;gBAEF,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAEvE,sBAAsB;gBACtB,IAAI,QAAQ,EAAE,CAAC;oBACX,MAAM,QAAQ,GAAa,EAAE,CAAC;oBAE9B,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;wBACtC,qDAAqD;wBACrD,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC;oBAC9F,CAAC;oBAED,MAAM,MAAM,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;oBAElD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC;oBACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;oBAChC,MAAM,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC;oBAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC;oBACzC,IAAI,QAAQ,GAAG,EAAE,CAAC;oBAClB,MAAM,gBAAgB,GAAG,MAAM,CAAC,eAAe,CAAC;oBAChD,IAAI,eAAuB,CAAC;oBAC5B,IAAI,iBAAyB,CAAC;oBAE9B,IAAI,gBAAgB,GAAuC,EAAE,CAAC;oBAE9D,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;oBAEnD,qEAAqE;oBACrE,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;wBAC7C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;wBAC7C,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC;wBAE3C,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC;4BACf,eAAe,GAAG,KAAK,CAAC;wBAC5B,CAAC;wBAED,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;4BACjB,iBAAiB,GAAG,KAAK,CAAC;wBAC9B,CAAC;oBACL,CAAC;oBAED,MAAM,kBAAkB,GACpB,iBAAiB,IAAI,cAAc;wBAC/B,CAAC,CAAE,UAAU,CAAC,IAAI,CACZ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,cAAc,CACmB;wBACrD,CAAC,CAAC,IAAI,CAAC;oBAEf,IAAI,kBAAkB,IAAI,CAAC,kBAAkB,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,IAAI,gBAAgB,CAAC,EAAE,CAAC;wBAC7F,MAAM,YAAY,GACd,kBAAkB,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI;4BAC1C,CAAC,CAAC,gBAAgB;4BAClB,CAAC,CAAC,kBAAkB,EAAE,cAAc,EAAE,EAAE,CAAC;wBACjD,gBAAgB,GAAG,MAAM,eAAe,CAAC,YAAY,CAAC,CAAC;oBAC3D,CAAC;oBAED,iDAAiD;oBACjD,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,gBAAgB,EAAE,KAAK,EAAE,EAAE;wBAChD,MAAM,iBAAiB,GAAG,KAAK,KAAK,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC;wBACtF,OAAO,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,gBAAgB,CAAC;4BACzE,CAAC,CAAC,gBAAgB;4BAClB,CAAC,CAAC,IAAI,CAAC;oBACf,CAAC,CAAC,CAAC;oBAEH,CAAC,CAAC,IAAI,CAAC;wBACH,IAAI,EAAE,SAAS;wBACf,UAAU;wBACV,OAAO,EAAE,YAAY;wBACrB,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC;wBACvB,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC;wBACvB,OAAO,EAAE,QAAQ;wBACjB,aAAa,EAAE,cAAc;wBAC7B,kBAAkB;wBAClB,cAAc,EAAE,eAAe;wBAC/B,gBAAgB,EAAE,iBAAiB;wBACnC,eAAe,EAAE,gBAAgB;wBACjC,eAAe,EAAE,gBAAgB;wBACjC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;wBACzC,OAAO,EAAE,QAAQ;qBACpB,CAAC,CAAC;gBACP,CAAC;qBAAM,CAAC;oBACJ,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC;oBACtC,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;oBAEnD,CAAC,CAAC,IAAI,CAAC;wBACH,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,QAAQ;wBACjB,OAAO,EAAE,YAAY;wBACrB,IAAI,EAAE,WAAW;wBACjB,IAAI,EAAE,WAAW;wBACjB,UAAU;wBACV,OAAO,EAAE,EAAE;wBACX,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;qBAC5C,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACrD,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACtC,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,QAAQ,CAAC,EAAC,IAAI,EAAE,wBAAwB,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,EAAC,CAAC,CAAC;QAEjE,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9C,MAAM,YAAY,GAAgB;QAC9B,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,CAAC,CAAC,mCAAmC,EAAE,EAAC,aAAa,EAAE,OAAO,EAAC,CAAC;QAC7E,KAAK,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,mCAAmC,CAAC;QAC3D,YAAY,EAAE,YAAY,CAAC,EAAE;YACzB,+DAA+D;YAC/D,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAChC,MAAM,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;YAExC,MAAM,CAAC,MAAM,GAAG,KAAK,EAAC,CAAC,EAAC,EAAE;gBACtB,IAAI,CAAC;oBACD,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAE9C,IAAI,GAAG,EAAE,CAAC;wBACN,QAAQ,CAAC,EAAC,IAAI,EAAE,wBAAwB,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAC,CAAC,CAAC;oBAC5E,CAAC;oBACD,QAAQ,CAAC,EAAC,IAAI,EAAE,wBAAwB,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,EAAC,CAAC,CAAC;gBACtE,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,MAAM,YAAY,GAAG,KAAK,EAAE,OAAO,IAAI,CAAC,CAAC,sBAAsB,CAAC,CAAC;oBACjE,eAAe,CAAC,KAAK,CAAC;wBAClB,OAAO,EAAE,CAAC,CAAC,sBAAsB,CAAC;wBAClC,WAAW,EAAE,YAAY;wBACzB,QAAQ,EAAE,2BAA2B;wBACrC,QAAQ,EAAE,IAAI;qBACjB,CAAC,CAAC;gBACP,CAAC;YACL,CAAC,CAAC;YAEF,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;gBACrB,UAAU,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC,CAAC;YAEF,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE;gBACnB,UAAU,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC,CAAC;YAEF,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE;gBACjB,eAAe,CAAC,KAAK,CAAC;oBAClB,OAAO,EAAE,CAAC,CAAC,sBAAsB,CAAC;oBAClC,WAAW,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE;oBACxC,QAAQ,EAAE,2BAA2B;oBACrC,QAAQ,EAAE,IAAI;iBACjB,CAAC,CAAC;YACP,CAAC,CAAC;YAEF,6DAA6D;YAC7D,OAAO,KAAK,CAAC;QACjB,CAAC;KACJ,CAAC;IAEF,OAAO,CACH,MAAC,KAAK,IAAC,SAAS,EAAC,UAAU,EAAC,KAAK,EAAE,EAAC,KAAK,EAAE,MAAM,EAAC,aAC9C,KAAC,IAAI,IAAC,QAAQ,EAAE,OAAO,YACnB,KAAC,SAAS,CAAC,OAAO,OAAK,YAAY,GAAI,GACpC,EACP,KAAC,QAAQ,IAAC,OAAO,EAAE,CAAC,CAAC,wBAAwB,CAAC,EAAE,IAAI,EAAC,MAAM,EAAC,QAAQ,SAAG,IACnE,CACX,CAAC;AACN,CAAC;AAED,eAAe,yBAAyB,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 {extractArgsFromString} from '@leav/utils';\nimport {message, Space, Spin} from 'antd';\nimport {KitAlert, KitUpload, KitNotification} from 'aristid-ds';\nimport {type IKitDragger} from 'aristid-ds/dist/Kit/DataEntry/Upload/types';\nimport {useState} from 'react';\nimport {read as xlsxRead, utils as xlsxUtils} from 'xlsx';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {\n type AttributesByLibAttributeFragment,\n type AttributesByLibAttributeLinkAttributeFragment,\n AttributeType,\n ImportMode,\n ImportType,\n} from '_ui/_gqlTypes';\nimport {ImportReducerActionTypes} from '../importReducer/importReducer';\nimport {useImportReducerContext} from '../importReducer/ImportReducerContext';\nimport {type ISheet} from '../_types';\nimport {ERROR_NOTIFICATION_DURATION} from '_ui/constants';\n\ninterface IImportModalSelectFileStepsProps {\n onGetAttributes: (library: string) => Promise<AttributesByLibAttributeFragment[]>;\n}\n\nconst defaultType = ImportType.STANDARD;\nconst defaultMode = ImportMode.upsert;\n\nfunction ImportModalSelectFileStep({onGetAttributes}: IImportModalSelectFileStepsProps): JSX.Element {\n const {t} = useSharedTranslation();\n\n const {state, dispatch} = useImportReducerContext();\n const {file} = state;\n\n const _setFileData = async content => {\n const workbook = xlsxRead(content, {type: 'binary'});\n\n const s: ISheet[] = [];\n\n for (const sheetName in workbook.Sheets) {\n if (workbook.Sheets.hasOwnProperty(sheetName)) {\n // Use the sheet_to_json method to convert excel to json data\n const sheetData: Array<{[col: string]: string}> = xlsxUtils.sheet_to_json(workbook.Sheets[sheetName], {\n blankrows: false,\n defval: null,\n });\n\n // if sheet is empty we skip it\n if (!sheetData.length) {\n continue;\n }\n\n // get columns' name\n const sheetColumns = Object.keys(sheetData[0]);\n\n // match only first line cells (A1, B1, etc.)\n const firstRowAddresses = Object.keys(workbook.Sheets[sheetName]).filter(\n k => !!k.match(/\\b[A-Z]+1\\b/g),\n );\n\n const isMapped = !!workbook.Sheets[sheetName][firstRowAddresses[0]]?.c;\n\n // Mapping is present.\n if (isMapped) {\n const comments: string[] = [];\n\n for (const address of firstRowAddresses) {\n // get first line comments and delete \"\\n\" characters\n comments.push(workbook.Sheets[sheetName][address].c?.[0]?.t?.replace(/\\n/g, ' ') || null);\n }\n\n const params = extractArgsFromString(comments[0]);\n\n const sType = params.type ?? defaultType;\n const sLibrary = params.library;\n const sLinkAttribute = params.linkAttribute;\n const sMode = params.mode ?? defaultMode;\n let sMapping = [];\n const sTreeLinkLibrary = params.treeLinkLibrary;\n let sKeyColumnIndex: number;\n let sKeyToColumnIndex: number;\n\n let sKeyToAttributes: AttributesByLibAttributeFragment[] = [];\n\n const attributes = await onGetAttributes(sLibrary);\n\n // Extract mapping, keyIndex and keyToIndex from all columns comments\n for (const [index, comm] of comments.entries()) {\n const commArgs = extractArgsFromString(comm);\n sMapping.push(String(commArgs.id) ?? null);\n\n if (commArgs.key) {\n sKeyColumnIndex = index;\n }\n\n if (commArgs.keyTo) {\n sKeyToColumnIndex = index;\n }\n }\n\n const linkAttributeProps =\n sKeyToColumnIndex && sLinkAttribute\n ? (attributes.find(\n a => a.id === sLinkAttribute,\n ) as AttributesByLibAttributeLinkAttributeFragment)\n : null;\n\n if (linkAttributeProps && (linkAttributeProps.type !== AttributeType.tree || sTreeLinkLibrary)) {\n const keyToLibrary =\n linkAttributeProps.type === AttributeType.tree\n ? sTreeLinkLibrary\n : linkAttributeProps?.linked_library?.id;\n sKeyToAttributes = await onGetAttributes(keyToLibrary);\n }\n\n // Check if all mapping attributes actually exist\n sMapping = sMapping.map((mappingAttribute, index) => {\n const attributesToCheck = index === sKeyToColumnIndex ? sKeyToAttributes : attributes;\n return attributesToCheck.find(attribute => attribute.id === mappingAttribute)\n ? mappingAttribute\n : null;\n });\n\n s.push({\n name: sheetName,\n attributes,\n columns: sheetColumns,\n type: ImportType[sType],\n mode: ImportMode[sMode],\n library: sLibrary,\n linkAttribute: sLinkAttribute,\n linkAttributeProps,\n keyColumnIndex: sKeyColumnIndex,\n keyToColumnIndex: sKeyToColumnIndex,\n keyToAttributes: sKeyToAttributes,\n treeLinkLibrary: sTreeLinkLibrary,\n data: sheetData.length ? sheetData : null,\n mapping: sMapping,\n });\n } else {\n const sLibrary = state.defaultLibrary;\n const attributes = await onGetAttributes(sLibrary);\n\n s.push({\n name: sheetName,\n library: sLibrary,\n columns: sheetColumns,\n type: defaultType,\n mode: defaultMode,\n attributes,\n mapping: [],\n data: sheetData.length ? sheetData : null,\n });\n }\n }\n }\n\n if (!s.length || s.every(sheet => sheet.data === null)) {\n message.error(t('import.empty_file'));\n return false;\n }\n\n dispatch({type: ImportReducerActionTypes.SET_SHEETS, sheets: s});\n\n return true;\n };\n\n const [loading, setLoading] = useState(false);\n\n const draggerProps: IKitDragger = {\n name: 'file',\n multiple: false,\n accept: '.xlsx',\n description: t('import.file_selection_restriction', {allowedFormat: '.xlsx'}),\n title: file?.name ?? t('import.file_selection_instruction'),\n beforeUpload: fileToImport => {\n // Read file to read mapping and display a preview on next step\n const reader = new FileReader();\n reader.readAsBinaryString(fileToImport);\n\n reader.onload = async e => {\n try {\n const res = await _setFileData(reader.result);\n\n if (res) {\n dispatch({type: ImportReducerActionTypes.SET_FILE, file: fileToImport});\n }\n dispatch({type: ImportReducerActionTypes.SET_OK_BTN, okBtn: res});\n } catch (error) {\n const errorMessage = error?.message ?? t('error.error_occurred');\n KitNotification.error({\n message: t('error.error_occurred'),\n description: errorMessage,\n duration: ERROR_NOTIFICATION_DURATION,\n closable: true,\n });\n }\n };\n\n reader.onloadstart = e => {\n setLoading(true);\n };\n\n reader.onloadend = e => {\n setLoading(false);\n };\n\n reader.onerror = e => {\n KitNotification.error({\n message: t('error.error_occurred'),\n description: reader.error?.message ?? '',\n duration: ERROR_NOTIFICATION_DURATION,\n closable: true,\n });\n };\n\n // Prevent default upload. We'll handle it ourselves later on\n return false;\n },\n };\n\n return (\n <Space direction=\"vertical\" style={{width: '100%'}}>\n <Spin spinning={loading}>\n <KitUpload.Dragger {...draggerProps} />\n </Spin>\n <KitAlert message={t('import.first_line_info')} type=\"info\" showIcon />\n </Space>\n );\n}\n\nexport default ImportModalSelectFileStep;\n"]}
|
|
@@ -56,14 +56,7 @@ const allowedConditionByFormat = {
|
|
|
56
56
|
AttributeConditionFilter.IS_EMPTY,
|
|
57
57
|
AttributeConditionFilter.IS_NOT_EMPTY,
|
|
58
58
|
],
|
|
59
|
-
[AttributeFormat.color]: [
|
|
60
|
-
AttributeConditionFilter.CONTAINS,
|
|
61
|
-
AttributeConditionFilter.NOT_CONTAINS,
|
|
62
|
-
AttributeConditionFilter.EQUAL,
|
|
63
|
-
AttributeConditionFilter.NOT_EQUAL,
|
|
64
|
-
AttributeConditionFilter.IS_EMPTY,
|
|
65
|
-
AttributeConditionFilter.IS_NOT_EMPTY,
|
|
66
|
-
],
|
|
59
|
+
[AttributeFormat.color]: [],
|
|
67
60
|
[AttributeFormat.rich_text]: [
|
|
68
61
|
AttributeConditionFilter.CONTAINS,
|
|
69
62
|
AttributeConditionFilter.NOT_CONTAINS,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FiltersOptions.js","sourceRoot":"","sources":["../../../../src/components/LibraryItemsList/FiltersPanel/FiltersOptions.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 TFunction} from 'i18next';\nimport {\n AttributeConditionFilter,\n type AttributeConditionType,\n FilterType,\n type IFilter,\n type IFilterAttribute,\n OperatorFilter,\n TreeConditionFilter,\n} from '_ui/types/search';\nimport {AttributeFormat, type RecordFilterCondition} from '_ui/_gqlTypes';\n\nexport interface IFilterConditionOption<T> {\n text: string;\n value: T;\n textByFormat?: {[key in AttributeFormat]?: string};\n}\n\nconst allowedConditionByFormat: {[format in AttributeFormat]: AttributeConditionType[]} = {\n [AttributeFormat.text]: [\n AttributeConditionFilter.CONTAINS,\n AttributeConditionFilter.NOT_CONTAINS,\n AttributeConditionFilter.EQUAL,\n AttributeConditionFilter.NOT_EQUAL,\n AttributeConditionFilter.BEGIN_WITH,\n AttributeConditionFilter.END_WITH,\n AttributeConditionFilter.IS_EMPTY,\n AttributeConditionFilter.IS_NOT_EMPTY,\n ],\n [AttributeFormat.extended]: [\n AttributeConditionFilter.CONTAINS,\n AttributeConditionFilter.NOT_CONTAINS,\n AttributeConditionFilter.EQUAL,\n AttributeConditionFilter.NOT_EQUAL,\n AttributeConditionFilter.BEGIN_WITH,\n AttributeConditionFilter.END_WITH,\n AttributeConditionFilter.IS_EMPTY,\n AttributeConditionFilter.IS_NOT_EMPTY,\n ],\n [AttributeFormat.encrypted]: [AttributeConditionFilter.IS_EMPTY, AttributeConditionFilter.IS_NOT_EMPTY],\n [AttributeFormat.numeric]: [\n AttributeConditionFilter.EQUAL,\n AttributeConditionFilter.NOT_EQUAL,\n AttributeConditionFilter.GREATER_THAN,\n AttributeConditionFilter.LESS_THAN,\n AttributeConditionFilter.IS_EMPTY,\n AttributeConditionFilter.IS_NOT_EMPTY,\n ],\n [AttributeFormat.boolean]: [AttributeConditionFilter.EQUAL, AttributeConditionFilter.NOT_EQUAL],\n [AttributeFormat.date]: [\n AttributeConditionFilter.EQUAL,\n AttributeConditionFilter.NOT_EQUAL,\n AttributeConditionFilter.GREATER_THAN,\n AttributeConditionFilter.LESS_THAN,\n AttributeConditionFilter.IS_EMPTY,\n AttributeConditionFilter.IS_NOT_EMPTY,\n AttributeConditionFilter.TODAY,\n AttributeConditionFilter.TOMORROW,\n AttributeConditionFilter.YESTERDAY,\n AttributeConditionFilter.LAST_MONTH,\n AttributeConditionFilter.NEXT_MONTH,\n AttributeConditionFilter.BETWEEN,\n ],\n [AttributeFormat.date_range]: [\n AttributeConditionFilter.CONTAINS,\n AttributeConditionFilter.START_ON,\n AttributeConditionFilter.START_AFTER,\n AttributeConditionFilter.START_BEFORE,\n AttributeConditionFilter.END_ON,\n AttributeConditionFilter.END_AFTER,\n AttributeConditionFilter.END_BEFORE,\n AttributeConditionFilter.IS_EMPTY,\n AttributeConditionFilter.IS_NOT_EMPTY,\n ],\n [AttributeFormat.color]: [\n AttributeConditionFilter.CONTAINS,\n AttributeConditionFilter.NOT_CONTAINS,\n AttributeConditionFilter.EQUAL,\n AttributeConditionFilter.NOT_EQUAL,\n AttributeConditionFilter.IS_EMPTY,\n AttributeConditionFilter.IS_NOT_EMPTY,\n ],\n [AttributeFormat.rich_text]: [\n AttributeConditionFilter.CONTAINS,\n AttributeConditionFilter.NOT_CONTAINS,\n AttributeConditionFilter.IS_EMPTY,\n AttributeConditionFilter.IS_NOT_EMPTY,\n ],\n};\n\nexport function getAttributeConditionOptions(t: TFunction): Array<IFilterConditionOption<AttributeConditionType>> {\n return [\n {text: t('filters.contains'), value: AttributeConditionFilter.CONTAINS},\n {text: t('filters.not-contains'), value: AttributeConditionFilter.NOT_CONTAINS},\n {text: t('filters.equal'), value: AttributeConditionFilter.EQUAL},\n {text: t('filters.not-equal'), value: AttributeConditionFilter.NOT_EQUAL},\n {text: t('filters.begin-with'), value: AttributeConditionFilter.BEGIN_WITH},\n {text: t('filters.end-with'), value: AttributeConditionFilter.END_WITH},\n {\n text: t('filters.less-than'),\n textByFormat: {[AttributeFormat.date]: t('filters.before')},\n value: AttributeConditionFilter.LESS_THAN,\n },\n {\n text: t('filters.greater-than'),\n textByFormat: {[AttributeFormat.date]: t('filters.after')},\n value: AttributeConditionFilter.GREATER_THAN,\n },\n {text: t('filters.today'), value: AttributeConditionFilter.TODAY},\n {text: t('filters.tomorrow'), value: AttributeConditionFilter.TOMORROW},\n {text: t('filters.yesterday'), value: AttributeConditionFilter.YESTERDAY},\n {text: t('filters.last-month'), value: AttributeConditionFilter.LAST_MONTH},\n {text: t('filters.next-month'), value: AttributeConditionFilter.NEXT_MONTH},\n {text: t('filters.between'), value: AttributeConditionFilter.BETWEEN},\n {text: t('filters.start-on'), value: AttributeConditionFilter.START_ON},\n {text: t('filters.start-after'), value: AttributeConditionFilter.START_AFTER},\n {text: t('filters.start-before'), value: AttributeConditionFilter.START_BEFORE},\n {text: t('filters.end-on'), value: AttributeConditionFilter.END_ON},\n {text: t('filters.end-after'), value: AttributeConditionFilter.END_AFTER},\n {text: t('filters.end-before'), value: AttributeConditionFilter.END_BEFORE},\n {text: t('filters.is-empty'), value: AttributeConditionFilter.IS_EMPTY},\n {text: t('filters.is-not-empty'), value: AttributeConditionFilter.IS_NOT_EMPTY},\n {text: t('filters.values-count-equal'), value: AttributeConditionFilter.VALUES_COUNT_EQUAL},\n {text: t('filters.values-count-greater-than'), value: AttributeConditionFilter.VALUES_COUNT_GREATER_THAN},\n {text: t('filters.values-count-lower-than'), value: AttributeConditionFilter.VALUES_COUNT_LOWER_THAN},\n {text: t('filters.through'), value: AttributeConditionFilter.THROUGH},\n ];\n}\n\nexport function getTreeConditionOptions(t: TFunction): Array<IFilterConditionOption<TreeConditionFilter>> {\n return [\n {text: t('filters.classified-in'), value: TreeConditionFilter.CLASSIFIED_IN},\n {text: t('filters.not-classified-in'), value: TreeConditionFilter.NOT_CLASSIFIED_IN},\n ];\n}\n\nexport function getOperatorOptions(t: TFunction): Array<IFilterConditionOption<OperatorFilter>> {\n return [\n {text: t('filters.and'), value: OperatorFilter.AND},\n {text: t('filters.or'), value: OperatorFilter.OR},\n ];\n}\n\nexport const getConditionOptionsByType = (\n filter: IFilter,\n showThroughCondition: boolean,\n t: TFunction,\n): Array<IFilterConditionOption<AttributeConditionType>> => {\n const _isValuesCountCondition = (condition: AttributeConditionType): boolean =>\n [\n AttributeConditionFilter.VALUES_COUNT_EQUAL,\n AttributeConditionFilter.VALUES_COUNT_GREATER_THAN,\n AttributeConditionFilter.VALUES_COUNT_LOWER_THAN,\n ].includes(condition as RecordFilterCondition);\n\n const attributeConditionOptions = getAttributeConditionOptions(t);\n\n const conditionOptionsByType = attributeConditionOptions.filter(conditionOption => {\n // \"Through\" condition\n if (conditionOption.value === AttributeConditionFilter.THROUGH && showThroughCondition) {\n return true;\n }\n\n // Filter on library (applied to tree attribute only) => show condition for text attribute\n if (\n filter.type === FilterType.LIBRARY &&\n allowedConditionByFormat[AttributeFormat.text].includes(conditionOption.value)\n ) {\n return true;\n }\n\n // Regular attribute filter => show condition based on format + values count if multiple values is allowed\n if (filter.type === FilterType.ATTRIBUTE) {\n const attributeFilter = filter as IFilterAttribute;\n if (\n ((filter as IFilterAttribute).attribute?.format &&\n allowedConditionByFormat[attributeFilter.attribute.format]?.includes(conditionOption.value)) ||\n (attributeFilter.attribute.isMultiple && _isValuesCountCondition(conditionOption.value))\n ) {\n return true;\n }\n }\n\n return false;\n });\n\n return conditionOptionsByType;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"FiltersOptions.js","sourceRoot":"","sources":["../../../../src/components/LibraryItemsList/FiltersPanel/FiltersOptions.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 TFunction} from 'i18next';\nimport {\n AttributeConditionFilter,\n type AttributeConditionType,\n FilterType,\n type IFilter,\n type IFilterAttribute,\n OperatorFilter,\n TreeConditionFilter,\n} from '_ui/types/search';\nimport {AttributeFormat, type RecordFilterCondition} from '_ui/_gqlTypes';\n\nexport interface IFilterConditionOption<T> {\n text: string;\n value: T;\n textByFormat?: {[key in AttributeFormat]?: string};\n}\n\nconst allowedConditionByFormat: {[format in AttributeFormat]: AttributeConditionType[]} = {\n [AttributeFormat.text]: [\n AttributeConditionFilter.CONTAINS,\n AttributeConditionFilter.NOT_CONTAINS,\n AttributeConditionFilter.EQUAL,\n AttributeConditionFilter.NOT_EQUAL,\n AttributeConditionFilter.BEGIN_WITH,\n AttributeConditionFilter.END_WITH,\n AttributeConditionFilter.IS_EMPTY,\n AttributeConditionFilter.IS_NOT_EMPTY,\n ],\n [AttributeFormat.extended]: [\n AttributeConditionFilter.CONTAINS,\n AttributeConditionFilter.NOT_CONTAINS,\n AttributeConditionFilter.EQUAL,\n AttributeConditionFilter.NOT_EQUAL,\n AttributeConditionFilter.BEGIN_WITH,\n AttributeConditionFilter.END_WITH,\n AttributeConditionFilter.IS_EMPTY,\n AttributeConditionFilter.IS_NOT_EMPTY,\n ],\n [AttributeFormat.encrypted]: [AttributeConditionFilter.IS_EMPTY, AttributeConditionFilter.IS_NOT_EMPTY],\n [AttributeFormat.numeric]: [\n AttributeConditionFilter.EQUAL,\n AttributeConditionFilter.NOT_EQUAL,\n AttributeConditionFilter.GREATER_THAN,\n AttributeConditionFilter.LESS_THAN,\n AttributeConditionFilter.IS_EMPTY,\n AttributeConditionFilter.IS_NOT_EMPTY,\n ],\n [AttributeFormat.boolean]: [AttributeConditionFilter.EQUAL, AttributeConditionFilter.NOT_EQUAL],\n [AttributeFormat.date]: [\n AttributeConditionFilter.EQUAL,\n AttributeConditionFilter.NOT_EQUAL,\n AttributeConditionFilter.GREATER_THAN,\n AttributeConditionFilter.LESS_THAN,\n AttributeConditionFilter.IS_EMPTY,\n AttributeConditionFilter.IS_NOT_EMPTY,\n AttributeConditionFilter.TODAY,\n AttributeConditionFilter.TOMORROW,\n AttributeConditionFilter.YESTERDAY,\n AttributeConditionFilter.LAST_MONTH,\n AttributeConditionFilter.NEXT_MONTH,\n AttributeConditionFilter.BETWEEN,\n ],\n [AttributeFormat.date_range]: [\n AttributeConditionFilter.CONTAINS,\n AttributeConditionFilter.START_ON,\n AttributeConditionFilter.START_AFTER,\n AttributeConditionFilter.START_BEFORE,\n AttributeConditionFilter.END_ON,\n AttributeConditionFilter.END_AFTER,\n AttributeConditionFilter.END_BEFORE,\n AttributeConditionFilter.IS_EMPTY,\n AttributeConditionFilter.IS_NOT_EMPTY,\n ],\n [AttributeFormat.color]: [],\n [AttributeFormat.rich_text]: [\n AttributeConditionFilter.CONTAINS,\n AttributeConditionFilter.NOT_CONTAINS,\n AttributeConditionFilter.IS_EMPTY,\n AttributeConditionFilter.IS_NOT_EMPTY,\n ],\n};\n\nexport function getAttributeConditionOptions(t: TFunction): Array<IFilterConditionOption<AttributeConditionType>> {\n return [\n {text: t('filters.contains'), value: AttributeConditionFilter.CONTAINS},\n {text: t('filters.not-contains'), value: AttributeConditionFilter.NOT_CONTAINS},\n {text: t('filters.equal'), value: AttributeConditionFilter.EQUAL},\n {text: t('filters.not-equal'), value: AttributeConditionFilter.NOT_EQUAL},\n {text: t('filters.begin-with'), value: AttributeConditionFilter.BEGIN_WITH},\n {text: t('filters.end-with'), value: AttributeConditionFilter.END_WITH},\n {\n text: t('filters.less-than'),\n textByFormat: {[AttributeFormat.date]: t('filters.before')},\n value: AttributeConditionFilter.LESS_THAN,\n },\n {\n text: t('filters.greater-than'),\n textByFormat: {[AttributeFormat.date]: t('filters.after')},\n value: AttributeConditionFilter.GREATER_THAN,\n },\n {text: t('filters.today'), value: AttributeConditionFilter.TODAY},\n {text: t('filters.tomorrow'), value: AttributeConditionFilter.TOMORROW},\n {text: t('filters.yesterday'), value: AttributeConditionFilter.YESTERDAY},\n {text: t('filters.last-month'), value: AttributeConditionFilter.LAST_MONTH},\n {text: t('filters.next-month'), value: AttributeConditionFilter.NEXT_MONTH},\n {text: t('filters.between'), value: AttributeConditionFilter.BETWEEN},\n {text: t('filters.start-on'), value: AttributeConditionFilter.START_ON},\n {text: t('filters.start-after'), value: AttributeConditionFilter.START_AFTER},\n {text: t('filters.start-before'), value: AttributeConditionFilter.START_BEFORE},\n {text: t('filters.end-on'), value: AttributeConditionFilter.END_ON},\n {text: t('filters.end-after'), value: AttributeConditionFilter.END_AFTER},\n {text: t('filters.end-before'), value: AttributeConditionFilter.END_BEFORE},\n {text: t('filters.is-empty'), value: AttributeConditionFilter.IS_EMPTY},\n {text: t('filters.is-not-empty'), value: AttributeConditionFilter.IS_NOT_EMPTY},\n {text: t('filters.values-count-equal'), value: AttributeConditionFilter.VALUES_COUNT_EQUAL},\n {text: t('filters.values-count-greater-than'), value: AttributeConditionFilter.VALUES_COUNT_GREATER_THAN},\n {text: t('filters.values-count-lower-than'), value: AttributeConditionFilter.VALUES_COUNT_LOWER_THAN},\n {text: t('filters.through'), value: AttributeConditionFilter.THROUGH},\n ];\n}\n\nexport function getTreeConditionOptions(t: TFunction): Array<IFilterConditionOption<TreeConditionFilter>> {\n return [\n {text: t('filters.classified-in'), value: TreeConditionFilter.CLASSIFIED_IN},\n {text: t('filters.not-classified-in'), value: TreeConditionFilter.NOT_CLASSIFIED_IN},\n ];\n}\n\nexport function getOperatorOptions(t: TFunction): Array<IFilterConditionOption<OperatorFilter>> {\n return [\n {text: t('filters.and'), value: OperatorFilter.AND},\n {text: t('filters.or'), value: OperatorFilter.OR},\n ];\n}\n\nexport const getConditionOptionsByType = (\n filter: IFilter,\n showThroughCondition: boolean,\n t: TFunction,\n): Array<IFilterConditionOption<AttributeConditionType>> => {\n const _isValuesCountCondition = (condition: AttributeConditionType): boolean =>\n [\n AttributeConditionFilter.VALUES_COUNT_EQUAL,\n AttributeConditionFilter.VALUES_COUNT_GREATER_THAN,\n AttributeConditionFilter.VALUES_COUNT_LOWER_THAN,\n ].includes(condition as RecordFilterCondition);\n\n const attributeConditionOptions = getAttributeConditionOptions(t);\n\n const conditionOptionsByType = attributeConditionOptions.filter(conditionOption => {\n // \"Through\" condition\n if (conditionOption.value === AttributeConditionFilter.THROUGH && showThroughCondition) {\n return true;\n }\n\n // Filter on library (applied to tree attribute only) => show condition for text attribute\n if (\n filter.type === FilterType.LIBRARY &&\n allowedConditionByFormat[AttributeFormat.text].includes(conditionOption.value)\n ) {\n return true;\n }\n\n // Regular attribute filter => show condition based on format + values count if multiple values is allowed\n if (filter.type === FilterType.ATTRIBUTE) {\n const attributeFilter = filter as IFilterAttribute;\n if (\n ((filter as IFilterAttribute).attribute?.format &&\n allowedConditionByFormat[attributeFilter.attribute.format]?.includes(conditionOption.value)) ||\n (attributeFilter.attribute.isMultiple && _isValuesCountCondition(conditionOption.value))\n ) {\n return true;\n }\n }\n\n return false;\n });\n\n return conditionOptionsByType;\n};\n"]}
|
|
@@ -24,7 +24,8 @@ import MenuItemList from '../MenuItemList';
|
|
|
24
24
|
import MenuItemListSelected from '../MenuItemListSelected';
|
|
25
25
|
import Sidebar from '../Sidebar';
|
|
26
26
|
import { useSharedTranslation } from '../../../hooks/useSharedTranslation';
|
|
27
|
-
import {
|
|
27
|
+
import { KitNotification } from 'aristid-ds';
|
|
28
|
+
import { SUCCESS_NOTIFICATION_DURATION } from '../../../constants';
|
|
28
29
|
const MenuWrapper = styled.div `
|
|
29
30
|
border-bottom: 1px solid rgb(235, 237, 240);
|
|
30
31
|
padding: 0 1rem;
|
|
@@ -59,7 +60,6 @@ const Wrapper = styled.div `
|
|
|
59
60
|
const LibraryItemsListContent = ({ selectionMode, library, defaultView, showTransparency, onSelectChange, style, }) => {
|
|
60
61
|
const { lang } = useLang();
|
|
61
62
|
const { t } = useSharedTranslation();
|
|
62
|
-
const { kitNotification } = useKitNotification();
|
|
63
63
|
const defaultAttributes = extractAttributesFromLibrary(library);
|
|
64
64
|
const _getFieldsFromView = (view) => (view.attributes ?? []).reduce((acc, fieldKey) => {
|
|
65
65
|
const field = getFieldFromKey(fieldKey, library, defaultAttributes, lang);
|
|
@@ -186,9 +186,11 @@ const LibraryItemsListContent = ({ selectionMode, library, defaultView, showTran
|
|
|
186
186
|
};
|
|
187
187
|
const _notifyNewCreation = () => {
|
|
188
188
|
_reload();
|
|
189
|
-
|
|
189
|
+
KitNotification.success({
|
|
190
190
|
message: t('items_list.created_in_success.message'),
|
|
191
191
|
description: '',
|
|
192
|
+
duration: SUCCESS_NOTIFICATION_DURATION,
|
|
193
|
+
closable: true,
|
|
192
194
|
});
|
|
193
195
|
};
|
|
194
196
|
// If some elements are selected and the selection type is search, show the selection Menu
|
package/dist/components/LibraryItemsList/LibraryItemsListContent/LibraryItemsListContent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LibraryItemsListContent.js","sourceRoot":"","sources":["../../../../src/components/LibraryItemsList/LibraryItemsListContent/LibraryItemsListContent.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 ApolloQueryResult, useQuery} from '@apollo/client';\nimport {type FunctionComponent, useEffect, useMemo, useReducer} from 'react';\nimport styled, {type CSSObject} from 'styled-components';\nimport {Loading} from '_ui/components';\nimport {SearchContext} from '_ui/components/LibraryItemsList/hooks/useSearchReducer/searchContext';\nimport searchReducer, {\n initialSearchState,\n SearchActionTypes,\n} from '_ui/components/LibraryItemsList/hooks/useSearchReducer/searchReducer';\nimport {type ISearchRecord} from '_ui/components/LibraryItemsList/hooks/useSearchReducer/_types';\nimport {useGetRecordUpdatesSubscription, useLang} from '_ui/hooks';\nimport {type IField, type IFilter, type ISearchSelection, SearchMode} from '_ui/types/search';\nimport {type IView} from '_ui/types/views';\nimport {useSaveUserDataMutation} from '_ui/_gqlTypes';\nimport {type ILibraryDetailExtended} from '_ui/_queries/libraries/getLibraryDetailExtendQuery';\nimport {\n getRecordsFromLibraryQuery,\n type IGetRecordsFromLibraryQuery,\n type IGetRecordsFromLibraryQueryVariables,\n} from '_ui/_queries/records/getRecordsFromLibraryQuery';\nimport {objectValueVersionToArray} from '_ui/_utils';\nimport {getRequestFromFilters} from '_ui/_utils/getRequestFromFilter';\nimport {getSelectedViewKey} from '../constants';\nimport DisplayTypeSelector from '../DisplayTypeSelector';\nimport extractAttributesFromLibrary from '../helpers/extractAttributesFromLibrary';\nimport getFieldFromKey from '../helpers/getFieldFromKey';\nimport LibraryItemsListEmpty from '../LibraryItemsListEmpty';\nimport {manageItems} from '../manageItems';\nimport MenuItemList from '../MenuItemList';\nimport MenuItemListSelected from '../MenuItemListSelected';\nimport Sidebar from '../Sidebar';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {useKitNotification} from 'aristid-ds';\n\nconst MenuWrapper = styled.div`\n border-bottom: 1px solid rgb(235, 237, 240);\n padding: 0 1rem;\n height: 4rem;\n\n display: flex;\n align-content: center;\n justify-content: space-around;\n`;\n\ninterface IWrapperProps {\n $showSide: boolean;\n style?: CSSObject;\n}\n\nconst panelSize = '22.5rem';\nconst Wrapper = styled.div<IWrapperProps>`\n display: grid;\n\n ${({$showSide}) =>\n $showSide\n ? `\n grid-template-columns: ${panelSize} calc(100% - ${panelSize});\n grid-template-rows: 92% auto;\n grid-template-areas:\n 'side data'\n 'side pagination';`\n : `\n grid-template-columns: auto;\n grid-template-rows: 92% auto;\n grid-template-areas:\n 'data'\n 'pagination';`}\n\n height: calc(100vh - 7rem);\n position: relative;\n overflow: auto;\n`;\n\ninterface ILibraryItemsListContentProps {\n library: ILibraryDetailExtended;\n defaultView: IView;\n selectionMode?: boolean;\n style?: CSSObject;\n showTransparency?: boolean;\n mode?: SearchMode;\n onSelectChange?: (selection: ISearchSelection, filters?: IFilter[]) => void;\n}\n\nconst LibraryItemsListContent: FunctionComponent<ILibraryItemsListContentProps> = ({\n selectionMode,\n library,\n defaultView,\n showTransparency,\n onSelectChange,\n style,\n}) => {\n const {lang} = useLang();\n const {t} = useSharedTranslation();\n\n const {kitNotification} = useKitNotification();\n\n const defaultAttributes = extractAttributesFromLibrary(library);\n\n const _getFieldsFromView = (view: IView): IField[] =>\n (view.attributes ?? []).reduce((acc, fieldKey) => {\n const field = getFieldFromKey(fieldKey, library, defaultAttributes, lang);\n return field ? [...acc, field] : acc;\n }, []);\n\n const [searchState, searchDispatch] = useReducer(searchReducer, {\n ...initialSearchState,\n library,\n loading: true,\n attributes: defaultAttributes,\n trees: library.linkedTrees,\n fields: _getFieldsFromView(defaultView),\n filters: defaultView.filters,\n sort: defaultView.sort,\n display: defaultView.display,\n view: {\n current: defaultView,\n reload: false,\n sync: true,\n },\n lang,\n valuesVersions: defaultView.valuesVersions,\n showTransparency,\n mode: selectionMode ? SearchMode.SELECT : SearchMode.SEARCH,\n });\n\n useGetRecordUpdatesSubscription({libraries: [library.id]});\n\n const [updateSelectedViewMutation] = useSaveUserDataMutation();\n const selectedViewKey = getSelectedViewKey(library.id);\n\n const _applyResults = (result: ApolloQueryResult<IGetRecordsFromLibraryQuery>) => {\n const itemsFromQuery = result?.data?.records?.list ?? [];\n\n const newRecords: ISearchRecord[] = manageItems({\n items: itemsFromQuery,\n fields: searchState.fields,\n });\n\n searchDispatch({\n type: SearchActionTypes.UPDATE_RESULT,\n records: newRecords,\n errors: result?.errors,\n totalCount: result?.data?.records?.totalCount ?? searchState.totalCount,\n });\n };\n\n const _getVersionForRequest = () =>\n searchState.valuesVersions\n ? objectValueVersionToArray(searchState.valuesVersions).filter(v => !!v.treeNodeId)\n : [];\n\n // We're using a useMemo here to prevent query being fired on every change of searchState.\n // Subsequent search will be triggered on user request and are handled elsewhere.\n // We were previously using the skip property of useQuery but it was causing issues with data update\n const variables = useMemo(\n () => ({\n library: library.id,\n limit: searchState.pagination,\n offset: searchState.offset,\n filters: getRequestFromFilters(searchState.filters),\n sort: searchState.sort?.[0] ?? null,\n fullText: searchState.fullText,\n version: _getVersionForRequest(),\n }),\n [],\n );\n\n const getRecordsQueryResult = useQuery<IGetRecordsFromLibraryQuery, IGetRecordsFromLibraryQueryVariables>(\n getRecordsFromLibraryQuery(searchState.fields, !searchState.offset),\n {\n fetchPolicy: 'network-only',\n errorPolicy: 'all',\n variables,\n },\n );\n const {\n loading: getRecordsLoading,\n data: searchData,\n error: searchError,\n called: searchCalled,\n fetchMore: getRecordsFetchMore,\n } = getRecordsQueryResult;\n\n const _fetchRecords = async () => {\n const queryFilters = getRequestFromFilters(searchState.filters);\n\n const currentVariables = {\n library: library.id,\n limit: searchState.pagination,\n offset: searchState.offset,\n filters: queryFilters,\n sort: searchState.sort?.[0] ?? null,\n fullText: searchState.fullText,\n version: _getVersionForRequest(),\n };\n\n // Records have already been fetched, we use fetchMore to make sure\n // we request the right fields by passing in a whole new query\n const results = await getRecordsFetchMore({\n query: getRecordsFromLibraryQuery(searchState.fields, !searchState.offset),\n variables: currentVariables,\n //@ts-expect-error errorPolicy is applied at runtime even though it's not in the types\n errorPolicy: 'all',\n });\n\n // We have to call applyResults here because onCompleted is not called when fetchMore is used\n _applyResults(results);\n };\n\n const isLoading = getRecordsLoading || searchState.view.reload || searchState.loading;\n\n useEffect(() => {\n if (searchData || searchError) {\n _applyResults(getRecordsQueryResult);\n }\n }, [searchData, searchError]);\n\n useEffect(() => {\n if (searchState.loading && searchCalled) {\n _fetchRecords();\n }\n }, [searchState.loading]);\n\n /**\n * Called when current view changes. In charge of refetching record and saving last used view\n */\n useEffect(() => {\n if (!searchState.view.reload) {\n return;\n }\n\n _fetchRecords();\n\n updateSelectedViewMutation({\n variables: {\n key: selectedViewKey,\n value: searchState.view.current.id,\n global: false,\n },\n });\n searchDispatch({type: SearchActionTypes.SET_VIEW_RELOAD, reload: false});\n }, [selectedViewKey, updateSelectedViewMutation, searchState.view, searchState.fields, searchDispatch, library]);\n\n /**\n * Calls onSelectChange when selection changes\n */\n useEffect(() => {\n if (!onSelectChange) {\n return;\n }\n\n onSelectChange(searchState.selection, searchState.selection.allSelected ? searchState.filters : null);\n }, [searchState.selection]);\n\n const _reload = () => {\n searchDispatch({type: SearchActionTypes.SET_LOADING, loading: true});\n };\n\n const _notifyNewCreation = () => {\n _reload();\n kitNotification.success({\n message: t('items_list.created_in_success.message'),\n description: '',\n });\n };\n\n // If some elements are selected and the selection type is search, show the selection Menu\n const menuSelectedActive = !!searchState.selection.selected.length || searchState.selection.allSelected;\n\n return (\n <SearchContext.Provider value={{state: searchState, dispatch: searchDispatch}}>\n <MenuWrapper>\n <MenuItemList refetch={_reload} notifyNewCreation={_notifyNewCreation} library={library} />\n <MenuItemListSelected active={menuSelectedActive} />\n </MenuWrapper>\n\n <Wrapper\n $showSide={searchState.sideBar.visible}\n className={searchState.sideBar.visible ? 'wrapper-open' : 'wrapper-close'}\n style={style}\n >\n <Sidebar />\n {isLoading && <Loading />}\n {!isLoading &&\n (!searchState.records.length ? (\n <LibraryItemsListEmpty notifyNewCreation={_notifyNewCreation} />\n ) : (\n <DisplayTypeSelector />\n ))}\n </Wrapper>\n </SearchContext.Provider>\n );\n};\n\nexport default LibraryItemsListContent;\n"]}
|
|
1
|
+
{"version":3,"file":"LibraryItemsListContent.js","sourceRoot":"","sources":["../../../../src/components/LibraryItemsList/LibraryItemsListContent/LibraryItemsListContent.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 ApolloQueryResult, useQuery} from '@apollo/client';\nimport {type FunctionComponent, useEffect, useMemo, useReducer} from 'react';\nimport styled, {type CSSObject} from 'styled-components';\nimport {Loading} from '_ui/components';\nimport {SearchContext} from '_ui/components/LibraryItemsList/hooks/useSearchReducer/searchContext';\nimport searchReducer, {\n initialSearchState,\n SearchActionTypes,\n} from '_ui/components/LibraryItemsList/hooks/useSearchReducer/searchReducer';\nimport {type ISearchRecord} from '_ui/components/LibraryItemsList/hooks/useSearchReducer/_types';\nimport {useGetRecordUpdatesSubscription, useLang} from '_ui/hooks';\nimport {type IField, type IFilter, type ISearchSelection, SearchMode} from '_ui/types/search';\nimport {type IView} from '_ui/types/views';\nimport {useSaveUserDataMutation} from '_ui/_gqlTypes';\nimport {type ILibraryDetailExtended} from '_ui/_queries/libraries/getLibraryDetailExtendQuery';\nimport {\n getRecordsFromLibraryQuery,\n type IGetRecordsFromLibraryQuery,\n type IGetRecordsFromLibraryQueryVariables,\n} from '_ui/_queries/records/getRecordsFromLibraryQuery';\nimport {objectValueVersionToArray} from '_ui/_utils';\nimport {getRequestFromFilters} from '_ui/_utils/getRequestFromFilter';\nimport {getSelectedViewKey} from '../constants';\nimport DisplayTypeSelector from '../DisplayTypeSelector';\nimport extractAttributesFromLibrary from '../helpers/extractAttributesFromLibrary';\nimport getFieldFromKey from '../helpers/getFieldFromKey';\nimport LibraryItemsListEmpty from '../LibraryItemsListEmpty';\nimport {manageItems} from '../manageItems';\nimport MenuItemList from '../MenuItemList';\nimport MenuItemListSelected from '../MenuItemListSelected';\nimport Sidebar from '../Sidebar';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {KitNotification} from 'aristid-ds';\nimport {SUCCESS_NOTIFICATION_DURATION} from '_ui/constants';\n\nconst MenuWrapper = styled.div`\n border-bottom: 1px solid rgb(235, 237, 240);\n padding: 0 1rem;\n height: 4rem;\n\n display: flex;\n align-content: center;\n justify-content: space-around;\n`;\n\ninterface IWrapperProps {\n $showSide: boolean;\n style?: CSSObject;\n}\n\nconst panelSize = '22.5rem';\nconst Wrapper = styled.div<IWrapperProps>`\n display: grid;\n\n ${({$showSide}) =>\n $showSide\n ? `\n grid-template-columns: ${panelSize} calc(100% - ${panelSize});\n grid-template-rows: 92% auto;\n grid-template-areas:\n 'side data'\n 'side pagination';`\n : `\n grid-template-columns: auto;\n grid-template-rows: 92% auto;\n grid-template-areas:\n 'data'\n 'pagination';`}\n\n height: calc(100vh - 7rem);\n position: relative;\n overflow: auto;\n`;\n\ninterface ILibraryItemsListContentProps {\n library: ILibraryDetailExtended;\n defaultView: IView;\n selectionMode?: boolean;\n style?: CSSObject;\n showTransparency?: boolean;\n mode?: SearchMode;\n onSelectChange?: (selection: ISearchSelection, filters?: IFilter[]) => void;\n}\n\nconst LibraryItemsListContent: FunctionComponent<ILibraryItemsListContentProps> = ({\n selectionMode,\n library,\n defaultView,\n showTransparency,\n onSelectChange,\n style,\n}) => {\n const {lang} = useLang();\n const {t} = useSharedTranslation();\n\n const defaultAttributes = extractAttributesFromLibrary(library);\n\n const _getFieldsFromView = (view: IView): IField[] =>\n (view.attributes ?? []).reduce((acc, fieldKey) => {\n const field = getFieldFromKey(fieldKey, library, defaultAttributes, lang);\n return field ? [...acc, field] : acc;\n }, []);\n\n const [searchState, searchDispatch] = useReducer(searchReducer, {\n ...initialSearchState,\n library,\n loading: true,\n attributes: defaultAttributes,\n trees: library.linkedTrees,\n fields: _getFieldsFromView(defaultView),\n filters: defaultView.filters,\n sort: defaultView.sort,\n display: defaultView.display,\n view: {\n current: defaultView,\n reload: false,\n sync: true,\n },\n lang,\n valuesVersions: defaultView.valuesVersions,\n showTransparency,\n mode: selectionMode ? SearchMode.SELECT : SearchMode.SEARCH,\n });\n\n useGetRecordUpdatesSubscription({libraries: [library.id]});\n\n const [updateSelectedViewMutation] = useSaveUserDataMutation();\n const selectedViewKey = getSelectedViewKey(library.id);\n\n const _applyResults = (result: ApolloQueryResult<IGetRecordsFromLibraryQuery>) => {\n const itemsFromQuery = result?.data?.records?.list ?? [];\n\n const newRecords: ISearchRecord[] = manageItems({\n items: itemsFromQuery,\n fields: searchState.fields,\n });\n\n searchDispatch({\n type: SearchActionTypes.UPDATE_RESULT,\n records: newRecords,\n errors: result?.errors,\n totalCount: result?.data?.records?.totalCount ?? searchState.totalCount,\n });\n };\n\n const _getVersionForRequest = () =>\n searchState.valuesVersions\n ? objectValueVersionToArray(searchState.valuesVersions).filter(v => !!v.treeNodeId)\n : [];\n\n // We're using a useMemo here to prevent query being fired on every change of searchState.\n // Subsequent search will be triggered on user request and are handled elsewhere.\n // We were previously using the skip property of useQuery but it was causing issues with data update\n const variables = useMemo(\n () => ({\n library: library.id,\n limit: searchState.pagination,\n offset: searchState.offset,\n filters: getRequestFromFilters(searchState.filters),\n sort: searchState.sort?.[0] ?? null,\n fullText: searchState.fullText,\n version: _getVersionForRequest(),\n }),\n [],\n );\n\n const getRecordsQueryResult = useQuery<IGetRecordsFromLibraryQuery, IGetRecordsFromLibraryQueryVariables>(\n getRecordsFromLibraryQuery(searchState.fields, !searchState.offset),\n {\n fetchPolicy: 'network-only',\n errorPolicy: 'all',\n variables,\n },\n );\n const {\n loading: getRecordsLoading,\n data: searchData,\n error: searchError,\n called: searchCalled,\n fetchMore: getRecordsFetchMore,\n } = getRecordsQueryResult;\n\n const _fetchRecords = async () => {\n const queryFilters = getRequestFromFilters(searchState.filters);\n\n const currentVariables = {\n library: library.id,\n limit: searchState.pagination,\n offset: searchState.offset,\n filters: queryFilters,\n sort: searchState.sort?.[0] ?? null,\n fullText: searchState.fullText,\n version: _getVersionForRequest(),\n };\n\n // Records have already been fetched, we use fetchMore to make sure\n // we request the right fields by passing in a whole new query\n const results = await getRecordsFetchMore({\n query: getRecordsFromLibraryQuery(searchState.fields, !searchState.offset),\n variables: currentVariables,\n //@ts-expect-error errorPolicy is applied at runtime even though it's not in the types\n errorPolicy: 'all',\n });\n\n // We have to call applyResults here because onCompleted is not called when fetchMore is used\n _applyResults(results);\n };\n\n const isLoading = getRecordsLoading || searchState.view.reload || searchState.loading;\n\n useEffect(() => {\n if (searchData || searchError) {\n _applyResults(getRecordsQueryResult);\n }\n }, [searchData, searchError]);\n\n useEffect(() => {\n if (searchState.loading && searchCalled) {\n _fetchRecords();\n }\n }, [searchState.loading]);\n\n /**\n * Called when current view changes. In charge of refetching record and saving last used view\n */\n useEffect(() => {\n if (!searchState.view.reload) {\n return;\n }\n\n _fetchRecords();\n\n updateSelectedViewMutation({\n variables: {\n key: selectedViewKey,\n value: searchState.view.current.id,\n global: false,\n },\n });\n searchDispatch({type: SearchActionTypes.SET_VIEW_RELOAD, reload: false});\n }, [selectedViewKey, updateSelectedViewMutation, searchState.view, searchState.fields, searchDispatch, library]);\n\n /**\n * Calls onSelectChange when selection changes\n */\n useEffect(() => {\n if (!onSelectChange) {\n return;\n }\n\n onSelectChange(searchState.selection, searchState.selection.allSelected ? searchState.filters : null);\n }, [searchState.selection]);\n\n const _reload = () => {\n searchDispatch({type: SearchActionTypes.SET_LOADING, loading: true});\n };\n\n const _notifyNewCreation = () => {\n _reload();\n KitNotification.success({\n message: t('items_list.created_in_success.message'),\n description: '',\n duration: SUCCESS_NOTIFICATION_DURATION,\n closable: true,\n });\n };\n\n // If some elements are selected and the selection type is search, show the selection Menu\n const menuSelectedActive = !!searchState.selection.selected.length || searchState.selection.allSelected;\n\n return (\n <SearchContext.Provider value={{state: searchState, dispatch: searchDispatch}}>\n <MenuWrapper>\n <MenuItemList refetch={_reload} notifyNewCreation={_notifyNewCreation} library={library} />\n <MenuItemListSelected active={menuSelectedActive} />\n </MenuWrapper>\n\n <Wrapper\n $showSide={searchState.sideBar.visible}\n className={searchState.sideBar.visible ? 'wrapper-open' : 'wrapper-close'}\n style={style}\n >\n <Sidebar />\n {isLoading && <Loading />}\n {!isLoading &&\n (!searchState.records.length ? (\n <LibraryItemsListEmpty notifyNewCreation={_notifyNewCreation} />\n ) : (\n <DisplayTypeSelector />\n ))}\n </Wrapper>\n </SearchContext.Provider>\n );\n};\n\nexport default LibraryItemsListContent;\n"]}
|
|
@@ -5,8 +5,6 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
5
5
|
import { AppstoreFilled, FilterOutlined, MenuOutlined, PlusOutlined, SaveFilled } from '@ant-design/icons';
|
|
6
6
|
import { localizedTranslation, objectToNameValueArray } from '@leav/utils';
|
|
7
7
|
import { Badge, Button, Dropdown, Space, Tooltip } from 'antd';
|
|
8
|
-
import { GrUndo } from 'react-icons/gr';
|
|
9
|
-
import { VscLayers } from 'react-icons/vsc';
|
|
10
8
|
import styled from 'styled-components';
|
|
11
9
|
import useSearchReducer from '../../../components/LibraryItemsList/hooks/useSearchReducer';
|
|
12
10
|
import { SearchActionTypes } from '../../../components/LibraryItemsList/hooks/useSearchReducer/searchReducer';
|
|
@@ -23,6 +21,8 @@ import { defaultView } from '../constants';
|
|
|
23
21
|
import FiltersDropdown from '../FiltersDropdown';
|
|
24
22
|
import useUpdateViewsOrderMutation from '../hooks/useUpdateViewsOrderMutation';
|
|
25
23
|
import IconViewType from '../IconViewType';
|
|
24
|
+
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
25
|
+
import { faUndo, faLayerGroup } from '@fortawesome/free-solid-svg-icons';
|
|
26
26
|
const ViewButton = styled(Button) `
|
|
27
27
|
&& {
|
|
28
28
|
display: flex;
|
|
@@ -154,9 +154,9 @@ function MenuView({ library }) {
|
|
|
154
154
|
],
|
|
155
155
|
};
|
|
156
156
|
return (_jsxs(Space, { size: "large", children: [_jsxs(Button.Group, { children: [_jsx(Tooltip, { title: localizedTranslation(searchState.view.current?.label, lang) || t('select-view.default-view'), children: _jsx(ViewButton, { icon: _jsx(IconViewType, { style: { marginRight: '8px' }, type: searchState.view.current.display.type }), "data-testid": "dropdown-view-options", onClick: _toggleShowView, children: _jsx(ViewLabel, { children: localizedTranslation(searchState.view.current?.label, lang) ||
|
|
157
|
-
t('select-view.default-view') }) }) }), _jsx(Button, { disabled: searchState.view.sync, icon: _jsx(
|
|
157
|
+
t('select-view.default-view') }) }) }), _jsx(Button, { disabled: searchState.view.sync, icon: _jsx(FontAwesomeIcon, { icon: faUndo }), onClick: _resetView, style: { paddingTop: '6px' } }), _jsx(Button, { icon: _jsx(SaveFilled, {}), onClick: _saveView, disabled: searchState.view.sync ||
|
|
158
158
|
searchState.view.current?.id === defaultView.id ||
|
|
159
|
-
!searchState.view.current.owner }), _jsx(Dropdown, { menu: menu, trigger: ['click'], children: _jsx(Button, { icon: _jsx(PlusOutlined, {}) }) })] }), _jsx(Badge, { dot: !!searchState.filters.length, children: _jsxs(Button.Group, { children: [_jsx(Button, { onClick: _toggleShowFilters, icon: _jsx(FilterOutlined, {}), children: t('filters.filters') }), _jsx(FiltersDropdown, { libraryId: library.id, button: _jsx(Button, { icon: _jsx(PlusOutlined, {}), type: "default" }), attributes: library.attributes, trees: library.linkedTrees, libraries: [] })] }) }), _jsx(Button, { onClick: _toggleShowVersions, icon: _jsx(
|
|
159
|
+
!searchState.view.current.owner }), _jsx(Dropdown, { menu: menu, trigger: ['click'], children: _jsx(Button, { icon: _jsx(PlusOutlined, {}) }) })] }), _jsx(Badge, { dot: !!searchState.filters.length, children: _jsxs(Button.Group, { children: [_jsx(Button, { onClick: _toggleShowFilters, icon: _jsx(FilterOutlined, {}), children: t('filters.filters') }), _jsx(FiltersDropdown, { libraryId: library.id, button: _jsx(Button, { icon: _jsx(PlusOutlined, {}), type: "default" }), attributes: library.attributes, trees: library.linkedTrees, libraries: [] })] }) }), _jsx(Button, { onClick: _toggleShowVersions, icon: _jsx(FontAwesomeIcon, { icon: faLayerGroup }), style: { paddingTop: '5px' } })] }));
|
|
160
160
|
}
|
|
161
161
|
export default MenuView;
|
|
162
162
|
//# sourceMappingURL=MenuView.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuView.js","sourceRoot":"","sources":["../../../../src/components/LibraryItemsList/MenuView/MenuView.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 {AppstoreFilled, FilterOutlined, MenuOutlined, PlusOutlined, SaveFilled} from '@ant-design/icons';\nimport {localizedTranslation, objectToNameValueArray} from '@leav/utils';\nimport {Badge, Button, Dropdown, type MenuProps, Space, Tooltip} from 'antd';\nimport {GrUndo} from 'react-icons/gr';\nimport {VscLayers} from 'react-icons/vsc';\nimport styled from 'styled-components';\nimport useSearchReducer from '_ui/components/LibraryItemsList/hooks/useSearchReducer';\nimport {SearchActionTypes} from '_ui/components/LibraryItemsList/hooks/useSearchReducer/searchReducer';\nimport useExecuteSaveViewMutation from '_ui/hooks/useExecuteSaveViewMutation/useExecuteSaveViewMutation';\nimport useLang from '_ui/hooks/useLang';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {SidebarContentType} from '_ui/types/search';\nimport {type ViewInput, ViewTypes} from '_ui/_gqlTypes';\nimport {type ILibraryDetailExtended} from '_ui/_queries/libraries/getLibraryDetailExtendQuery';\nimport {prepareView} from '_ui/_utils';\nimport {getRequestFromFilters} from '_ui/_utils/getRequestFromFilter';\nimport {PREFIX_USER_VIEWS_ORDER_KEY} from '../../../constants';\nimport {useUser} from '../../../hooks/useUser/useUser';\nimport {defaultView} from '../constants';\nimport FiltersDropdown from '../FiltersDropdown';\nimport useUpdateViewsOrderMutation from '../hooks/useUpdateViewsOrderMutation';\nimport IconViewType from '../IconViewType';\n\ninterface IMenuViewProps {\n library: ILibraryDetailExtended;\n}\n\nconst ViewButton = styled(Button)`\n && {\n display: flex;\n align-items: center;\n }\n`;\n\nconst ViewLabel = styled.span`\n width: 180px;\n overflow: hidden;\n text-overflow: ellipsis;\n whitespace: nowrap;\n`;\n\nfunction MenuView({library}: IMenuViewProps): JSX.Element {\n const {t} = useSharedTranslation();\n const {lang, defaultLang} = useLang();\n\n const {state: searchState, dispatch: searchDispatch} = useSearchReducer();\n const {userData} = useUser();\n\n const {saveView: addView} = useExecuteSaveViewMutation();\n const {updateViewsOrder} = useUpdateViewsOrderMutation(library.id);\n\n const _toggleShowView = () => {\n const visible = !searchState.sideBar.visible || searchState.sideBar.type !== SidebarContentType.VIEW;\n searchDispatch({\n type: SearchActionTypes.SET_SIDEBAR,\n sidebarType: SidebarContentType.VIEW,\n visible,\n });\n };\n\n const _toggleShowFilters = () => {\n const visible = !searchState.sideBar.visible || searchState.sideBar.type !== SidebarContentType.FILTERS;\n searchDispatch({\n type: SearchActionTypes.SET_SIDEBAR,\n sidebarType: SidebarContentType.FILTERS,\n visible,\n });\n };\n\n const _toggleShowVersions = () => {\n const visible = !searchState.sideBar.visible || searchState.sideBar.type !== SidebarContentType.FILTERS;\n searchDispatch({\n type: SearchActionTypes.SET_SIDEBAR,\n sidebarType: SidebarContentType.VERSIONS,\n visible,\n });\n };\n\n const _resetView = () => {\n searchDispatch({\n type: SearchActionTypes.CHANGE_VIEW,\n view: searchState.view.current,\n });\n };\n\n const _getNewViewFromSearchState = (): ViewInput => ({\n library: library.id,\n label: {\n [defaultLang]: t('view.add-view.title', {lng: defaultLang}),\n },\n display: searchState.display,\n shared: false,\n sort: searchState.sort,\n filters: getRequestFromFilters(searchState.filters),\n valuesVersions: searchState.valuesVersions\n ? objectToNameValueArray(searchState.valuesVersions)\n .map(version => ({\n treeId: version?.name ?? null,\n treeNode: version?.value?.id ?? null,\n }))\n .filter(v => v.treeId !== null && v.treeNode !== null)\n : null,\n attributes: searchState.fields?.map(f => f.key) ?? [],\n });\n\n const _saveView = async () => {\n if (searchState.view.current.id !== defaultView.id) {\n // save view in backend\n await addView({\n view: {\n ..._getNewViewFromSearchState(),\n id: searchState.view.current.id,\n label: searchState.view.current.label,\n description: searchState.view.current.description,\n shared: searchState.view.current.shared,\n color: searchState.view.current.color,\n sort: searchState.sort ?? null,\n },\n });\n\n searchDispatch({\n type: SearchActionTypes.SET_VIEW_SYNC,\n sync: true,\n });\n }\n };\n\n const _handleAddView = async (viewType: ViewTypes) => {\n const newView: ViewInput = {\n ..._getNewViewFromSearchState(),\n display: {...searchState.display, type: viewType},\n };\n\n // save view in backend\n const newViewRes = await addView({\n view: newView,\n });\n\n await updateViewsOrder({\n key: PREFIX_USER_VIEWS_ORDER_KEY + newView.library,\n value: [...searchState.userViewsOrder, newViewRes.data.saveView.id],\n global: false,\n });\n\n searchDispatch({\n type: SearchActionTypes.CHANGE_VIEW,\n view: prepareView(\n newViewRes.data.saveView,\n searchState.attributes,\n searchState.library.id,\n userData?.userId,\n ),\n });\n };\n\n const menu: MenuProps = {\n items: [\n {\n key: 'add-group',\n type: 'group',\n label: t('view.add-view.title'),\n children: [\n {\n key: 'list',\n onClick: () => _handleAddView(ViewTypes.list),\n icon: <MenuOutlined />,\n label: t('view.type-list'),\n },\n {\n key: 'cards',\n onClick: () => _handleAddView(ViewTypes.cards),\n icon: <AppstoreFilled />,\n label: t('view.type-cards'),\n },\n ],\n },\n ],\n };\n\n return (\n <Space size=\"large\">\n <Button.Group>\n <Tooltip\n title={localizedTranslation(searchState.view.current?.label, lang) || t('select-view.default-view')}\n >\n <ViewButton\n icon={\n <IconViewType style={{marginRight: '8px'}} type={searchState.view.current.display.type} />\n }\n data-testid=\"dropdown-view-options\"\n onClick={_toggleShowView}\n >\n <ViewLabel>\n {localizedTranslation(searchState.view.current?.label, lang) ||\n t('select-view.default-view')}\n </ViewLabel>\n </ViewButton>\n </Tooltip>\n <Button\n disabled={searchState.view.sync}\n icon={<GrUndo />}\n onClick={_resetView}\n style={{paddingTop: '6px'}}\n />\n <Button\n icon={<SaveFilled />}\n onClick={_saveView}\n disabled={\n searchState.view.sync ||\n searchState.view.current?.id === defaultView.id ||\n !searchState.view.current.owner\n }\n />\n <Dropdown menu={menu} trigger={['click']}>\n <Button icon={<PlusOutlined />}></Button>\n </Dropdown>\n </Button.Group>\n <Badge dot={!!searchState.filters.length}>\n <Button.Group>\n <Button onClick={_toggleShowFilters} icon={<FilterOutlined />}>\n {t('filters.filters')}\n </Button>\n <FiltersDropdown\n libraryId={library.id}\n button={<Button icon={<PlusOutlined />} type=\"default\" />}\n attributes={library.attributes}\n trees={library.linkedTrees}\n libraries={[]}\n />\n </Button.Group>\n </Badge>\n <Button onClick={_toggleShowVersions} icon={<VscLayers />} style={{paddingTop: '5px'}} />\n </Space>\n );\n}\n\nexport default MenuView;\n"]}
|
|
1
|
+
{"version":3,"file":"MenuView.js","sourceRoot":"","sources":["../../../../src/components/LibraryItemsList/MenuView/MenuView.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 {AppstoreFilled, FilterOutlined, MenuOutlined, PlusOutlined, SaveFilled} from '@ant-design/icons';\nimport {localizedTranslation, objectToNameValueArray} from '@leav/utils';\nimport {Badge, Button, Dropdown, type MenuProps, Space, Tooltip} from 'antd';\nimport styled from 'styled-components';\nimport useSearchReducer from '_ui/components/LibraryItemsList/hooks/useSearchReducer';\nimport {SearchActionTypes} from '_ui/components/LibraryItemsList/hooks/useSearchReducer/searchReducer';\nimport useExecuteSaveViewMutation from '_ui/hooks/useExecuteSaveViewMutation/useExecuteSaveViewMutation';\nimport useLang from '_ui/hooks/useLang';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {SidebarContentType} from '_ui/types/search';\nimport {type ViewInput, ViewTypes} from '_ui/_gqlTypes';\nimport {type ILibraryDetailExtended} from '_ui/_queries/libraries/getLibraryDetailExtendQuery';\nimport {prepareView} from '_ui/_utils';\nimport {getRequestFromFilters} from '_ui/_utils/getRequestFromFilter';\nimport {PREFIX_USER_VIEWS_ORDER_KEY} from '../../../constants';\nimport {useUser} from '../../../hooks/useUser/useUser';\nimport {defaultView} from '../constants';\nimport FiltersDropdown from '../FiltersDropdown';\nimport useUpdateViewsOrderMutation from '../hooks/useUpdateViewsOrderMutation';\nimport IconViewType from '../IconViewType';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {faUndo, faLayerGroup} from '@fortawesome/free-solid-svg-icons';\n\ninterface IMenuViewProps {\n library: ILibraryDetailExtended;\n}\n\nconst ViewButton = styled(Button)`\n && {\n display: flex;\n align-items: center;\n }\n`;\n\nconst ViewLabel = styled.span`\n width: 180px;\n overflow: hidden;\n text-overflow: ellipsis;\n whitespace: nowrap;\n`;\n\nfunction MenuView({library}: IMenuViewProps): JSX.Element {\n const {t} = useSharedTranslation();\n const {lang, defaultLang} = useLang();\n\n const {state: searchState, dispatch: searchDispatch} = useSearchReducer();\n const {userData} = useUser();\n\n const {saveView: addView} = useExecuteSaveViewMutation();\n const {updateViewsOrder} = useUpdateViewsOrderMutation(library.id);\n\n const _toggleShowView = () => {\n const visible = !searchState.sideBar.visible || searchState.sideBar.type !== SidebarContentType.VIEW;\n searchDispatch({\n type: SearchActionTypes.SET_SIDEBAR,\n sidebarType: SidebarContentType.VIEW,\n visible,\n });\n };\n\n const _toggleShowFilters = () => {\n const visible = !searchState.sideBar.visible || searchState.sideBar.type !== SidebarContentType.FILTERS;\n searchDispatch({\n type: SearchActionTypes.SET_SIDEBAR,\n sidebarType: SidebarContentType.FILTERS,\n visible,\n });\n };\n\n const _toggleShowVersions = () => {\n const visible = !searchState.sideBar.visible || searchState.sideBar.type !== SidebarContentType.FILTERS;\n searchDispatch({\n type: SearchActionTypes.SET_SIDEBAR,\n sidebarType: SidebarContentType.VERSIONS,\n visible,\n });\n };\n\n const _resetView = () => {\n searchDispatch({\n type: SearchActionTypes.CHANGE_VIEW,\n view: searchState.view.current,\n });\n };\n\n const _getNewViewFromSearchState = (): ViewInput => ({\n library: library.id,\n label: {\n [defaultLang]: t('view.add-view.title', {lng: defaultLang}),\n },\n display: searchState.display,\n shared: false,\n sort: searchState.sort,\n filters: getRequestFromFilters(searchState.filters),\n valuesVersions: searchState.valuesVersions\n ? objectToNameValueArray(searchState.valuesVersions)\n .map(version => ({\n treeId: version?.name ?? null,\n treeNode: version?.value?.id ?? null,\n }))\n .filter(v => v.treeId !== null && v.treeNode !== null)\n : null,\n attributes: searchState.fields?.map(f => f.key) ?? [],\n });\n\n const _saveView = async () => {\n if (searchState.view.current.id !== defaultView.id) {\n // save view in backend\n await addView({\n view: {\n ..._getNewViewFromSearchState(),\n id: searchState.view.current.id,\n label: searchState.view.current.label,\n description: searchState.view.current.description,\n shared: searchState.view.current.shared,\n color: searchState.view.current.color,\n sort: searchState.sort ?? null,\n },\n });\n\n searchDispatch({\n type: SearchActionTypes.SET_VIEW_SYNC,\n sync: true,\n });\n }\n };\n\n const _handleAddView = async (viewType: ViewTypes) => {\n const newView: ViewInput = {\n ..._getNewViewFromSearchState(),\n display: {...searchState.display, type: viewType},\n };\n\n // save view in backend\n const newViewRes = await addView({\n view: newView,\n });\n\n await updateViewsOrder({\n key: PREFIX_USER_VIEWS_ORDER_KEY + newView.library,\n value: [...searchState.userViewsOrder, newViewRes.data.saveView.id],\n global: false,\n });\n\n searchDispatch({\n type: SearchActionTypes.CHANGE_VIEW,\n view: prepareView(\n newViewRes.data.saveView,\n searchState.attributes,\n searchState.library.id,\n userData?.userId,\n ),\n });\n };\n\n const menu: MenuProps = {\n items: [\n {\n key: 'add-group',\n type: 'group',\n label: t('view.add-view.title'),\n children: [\n {\n key: 'list',\n onClick: () => _handleAddView(ViewTypes.list),\n icon: <MenuOutlined />,\n label: t('view.type-list'),\n },\n {\n key: 'cards',\n onClick: () => _handleAddView(ViewTypes.cards),\n icon: <AppstoreFilled />,\n label: t('view.type-cards'),\n },\n ],\n },\n ],\n };\n\n return (\n <Space size=\"large\">\n <Button.Group>\n <Tooltip\n title={localizedTranslation(searchState.view.current?.label, lang) || t('select-view.default-view')}\n >\n <ViewButton\n icon={\n <IconViewType style={{marginRight: '8px'}} type={searchState.view.current.display.type} />\n }\n data-testid=\"dropdown-view-options\"\n onClick={_toggleShowView}\n >\n <ViewLabel>\n {localizedTranslation(searchState.view.current?.label, lang) ||\n t('select-view.default-view')}\n </ViewLabel>\n </ViewButton>\n </Tooltip>\n <Button\n disabled={searchState.view.sync}\n icon={<FontAwesomeIcon icon={faUndo} />}\n onClick={_resetView}\n style={{paddingTop: '6px'}}\n />\n <Button\n icon={<SaveFilled />}\n onClick={_saveView}\n disabled={\n searchState.view.sync ||\n searchState.view.current?.id === defaultView.id ||\n !searchState.view.current.owner\n }\n />\n <Dropdown menu={menu} trigger={['click']}>\n <Button icon={<PlusOutlined />}></Button>\n </Dropdown>\n </Button.Group>\n <Badge dot={!!searchState.filters.length}>\n <Button.Group>\n <Button onClick={_toggleShowFilters} icon={<FilterOutlined />}>\n {t('filters.filters')}\n </Button>\n <FiltersDropdown\n libraryId={library.id}\n button={<Button icon={<PlusOutlined />} type=\"default\" />}\n attributes={library.attributes}\n trees={library.linkedTrees}\n libraries={[]}\n />\n </Button.Group>\n </Badge>\n <Button\n onClick={_toggleShowVersions}\n icon={<FontAwesomeIcon icon={faLayerGroup} />}\n style={{paddingTop: '5px'}}\n />\n </Space>\n );\n}\n\nexport default MenuView;\n"]}
|
|
@@ -7,7 +7,6 @@ import { localizedTranslation, objectToNameValueArray } from '@leav/utils';
|
|
|
7
7
|
import { Button, Tooltip, Typography } from 'antd';
|
|
8
8
|
import omit from 'lodash/omit';
|
|
9
9
|
import { useState } from 'react';
|
|
10
|
-
import { RiUserReceivedLine } from 'react-icons/ri';
|
|
11
10
|
import styled from 'styled-components';
|
|
12
11
|
import { themeVars } from '../../../../antdTheme';
|
|
13
12
|
import useSearchReducer from '../../../../components/LibraryItemsList/hooks/useSearchReducer';
|
|
@@ -22,6 +21,8 @@ import { ViewSizes, ViewTypes } from '../../../../_gqlTypes';
|
|
|
22
21
|
import { getRequestFromFilters } from '../../../../_utils/getRequestFromFilter';
|
|
23
22
|
import { defaultView } from '../../constants';
|
|
24
23
|
import useUpdateViewsOrderMutation from '../../hooks/useUpdateViewsOrderMutation';
|
|
24
|
+
import { faUserTag } from '@fortawesome/free-solid-svg-icons';
|
|
25
|
+
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
25
26
|
const Infos = styled.div `
|
|
26
27
|
width: 100%;
|
|
27
28
|
`;
|
|
@@ -141,7 +142,7 @@ function View({ view, onEdit, handleProps }) {
|
|
|
141
142
|
}, style: { marginBottom: 0 }, children: localizedTranslation(view.description, lang) }, description.key), description.expand && (_jsx("a", { href: "!#", onClick: ev => {
|
|
142
143
|
ev.preventDefault();
|
|
143
144
|
_onClose();
|
|
144
|
-
}, children: t('global.close') }))] }))] }), !view.owner && !isActionsShown && _jsx(
|
|
145
|
+
}, children: t('global.close') }))] }))] }), !view.owner && !isActionsShown && _jsx(FontAwesomeIcon, { icon: faUserTag }), isActionsShown && (_jsxs(_Fragment, { children: [_jsx(Tooltip, { title: t('global.edit'), children: _jsx(Button, { onClick: _handleEdit, disabled: !view.owner, type: "text", size: "small", shape: "circle", icon: _jsx(EditOutlined, {}) }, "edit") }), _jsx(Tooltip, { title: t('global.duplicate'), children: _jsx(Button, { onClick: _handleDuplicate, type: "text", size: "small", shape: "circle", icon: _jsx(CopyOutlined, {}) }, "duplicate") }), _jsx(Tooltip, { title: t('global.delete'), children: _jsx(Button, { onClick: _handleDelete, disabled: !view.owner, type: "text", size: "small", shape: "circle", icon: _jsx(DeleteOutlined, {}) }, "delete") })] }))] }, view.id));
|
|
145
146
|
}
|
|
146
147
|
export default View;
|
|
147
148
|
//# sourceMappingURL=View.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"View.js","sourceRoot":"","sources":["../../../../../src/components/LibraryItemsList/ViewPanel/View/View.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 {CopyOutlined, DeleteOutlined, EditOutlined} from '@ant-design/icons';\nimport {localizedTranslation, objectToNameValueArray} from '@leav/utils';\nimport {Button, Tooltip, Typography} from 'antd';\nimport omit from 'lodash/omit';\nimport {useState} from 'react';\nimport {type DraggableProvidedDragHandleProps} from 'react-beautiful-dnd';\nimport {RiUserReceivedLine} from 'react-icons/ri';\nimport styled from 'styled-components';\nimport {themeVars} from '_ui/antdTheme';\nimport useSearchReducer from '_ui/components/LibraryItemsList/hooks/useSearchReducer';\nimport {SearchActionTypes} from '_ui/components/LibraryItemsList/hooks/useSearchReducer/searchReducer';\nimport IconViewType from '_ui/components/LibraryItemsList/IconViewType';\nimport {PREFIX_SHARED_VIEWS_ORDER_KEY, PREFIX_USER_VIEWS_ORDER_KEY} from '_ui/constants';\nimport {useLang} from '_ui/hooks';\nimport useExecuteSaveViewMutation from '_ui/hooks/useExecuteSaveViewMutation/useExecuteSaveViewMutation';\nimport useExecuteDeleteViewMutation from '_ui/hooks/useExecuteDeleteViewMutation/useExecuteDeleteViewMutation';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {type IView} from '_ui/types/views';\nimport {type ViewInput, ViewSizes, ViewTypes} from '_ui/_gqlTypes';\nimport {getRequestFromFilters} from '_ui/_utils/getRequestFromFilter';\nimport {defaultView} from '../../constants';\nimport useUpdateViewsOrderMutation from '../../hooks/useUpdateViewsOrderMutation';\n\ninterface IWrapperProps {\n selected: boolean;\n}\n\nconst Infos = styled.div`\n width: 100%;\n`;\n\nconst Wrapper = styled.div<IWrapperProps>`\n background: ${({selected}) => (selected ? `${themeVars.activeColor} ` : 'none')};\n padding: 0.5rem;\n display: flex;\n align-items: center;\n`;\n\nconst Handle = styled.div`\n content: '....';\n width: 20px;\n height: 30px;\n display: inline-block;\n line-height: 5px;\n padding: 3px 4px;\n vertical-align: middle;\n font-size: 12px;\n font-family: sans-serif;\n letter-spacing: 2px;\n color: ${themeVars.borderLightColor};\n text-shadow: 1px 0 1px black;\n\n &::after {\n content: '.. .. .. ..';\n }\n`;\n\nconst Title = styled.div`\n display: flex;\n align-items: center;\n margin-left: 10px;\n`;\n\nconst Description = styled.div`\n opacity: 0.8;\n margin-left: 10px;\n overflow: hidden;\n`;\n\ninterface IViewProps {\n view: IView;\n onEdit: (viewId: string) => void;\n handleProps?: DraggableProvidedDragHandleProps;\n}\n\nfunction View({view, onEdit, handleProps}: IViewProps): JSX.Element {\n const {t} = useSharedTranslation();\n const {lang, defaultLang} = useLang();\n\n const {state: searchState, dispatch: searchDispatch} = useSearchReducer();\n const [description, setDescription] = useState<{expand: boolean; key: number}>({expand: false, key: 0});\n\n const {saveView} = useExecuteSaveViewMutation();\n\n const {deleteView} = useExecuteDeleteViewMutation();\n const {updateViewsOrder} = useUpdateViewsOrderMutation(searchState.library.id);\n\n const _changeView = () => {\n searchDispatch({type: SearchActionTypes.CHANGE_VIEW, view});\n };\n\n const ROWS_DESCRIPTION = 3;\n\n const _handleDelete = async (event: any) => {\n // stop progation to avoid click on view\n event.stopPropagation();\n\n await deleteView(view.id);\n\n const newOrder = (view.shared ? searchState.sharedViewsOrder : searchState.userViewsOrder).filter(\n vId => vId !== view.id,\n );\n\n await updateViewsOrder({\n key: (view.shared ? PREFIX_SHARED_VIEWS_ORDER_KEY : PREFIX_USER_VIEWS_ORDER_KEY) + searchState.library.id,\n value: newOrder,\n global: false,\n });\n\n if (view.id === searchState.view.current.id) {\n searchDispatch({type: SearchActionTypes.CHANGE_VIEW, view: defaultView});\n }\n };\n\n const _handleDuplicate = async (event: any) => {\n // stop progation to avoid click on view\n event.stopPropagation();\n\n try {\n const newView: ViewInput = {\n ...omit(view, ['id', 'owner']),\n library: searchState.library.id,\n label: {\n [defaultLang]: `${localizedTranslation(view.label, lang)} (${t('global.copy')})`,\n },\n filters: getRequestFromFilters(view.filters),\n display: {\n size: ViewSizes.MEDIUM,\n type: ViewTypes.list,\n },\n valuesVersions: objectToNameValueArray(view.valuesVersions).map(version => ({\n treeId: version.name,\n treeNode: version.value.id,\n })),\n shared: false,\n };\n\n const newViewRes = await saveView({\n view: newView,\n });\n\n await updateViewsOrder({\n key: PREFIX_USER_VIEWS_ORDER_KEY + newView.library,\n value: [...searchState.userViewsOrder, newViewRes.data.saveView.id],\n global: false,\n });\n } catch (e) {\n console.error(e);\n }\n };\n\n const _handleEdit = (event: any) => {\n // stop progation to avoid click on view\n event.stopPropagation();\n\n onEdit(view.id);\n };\n\n const _onExpand = () => {\n setDescription({expand: true, key: description.key});\n };\n\n const _onClose = () => {\n setDescription({expand: false, key: description.key + 1});\n };\n\n const selected = view.id === searchState.view.current?.id;\n\n const [isActionsShown, setIsActionsShown] = useState(false);\n\n const viewLabel = localizedTranslation(view.label, lang);\n\n return (\n <Wrapper\n key={view.id}\n selected={selected}\n onClick={_changeView}\n color={view.color}\n onMouseEnter={() => setIsActionsShown(true)}\n onMouseLeave={() => setIsActionsShown(false)}\n >\n <Handle className=\"view-handle\" {...handleProps} />\n <Infos>\n <Title data-testid=\"view-title\">\n <IconViewType type={view.display.type} />\n <Typography.Text ellipsis={{tooltip: true}} style={{padding: '0 .5em', width: 'calc(100% - 1em)'}}>\n {viewLabel}\n </Typography.Text>\n </Title>\n {view.description && (\n <Description>\n <Typography.Paragraph\n key={description.key}\n ellipsis={{\n rows: ROWS_DESCRIPTION,\n expandable: true,\n onExpand: _onExpand,\n symbol: t('view.see-more'),\n }}\n style={{marginBottom: 0}}\n >\n {localizedTranslation(view.description, lang)}\n </Typography.Paragraph>\n {description.expand && (\n <a\n href=\"!#\"\n onClick={ev => {\n ev.preventDefault();\n _onClose();\n }}\n >\n {t('global.close')}\n </a>\n )}\n </Description>\n )}\n </Infos>\n {!view.owner && !isActionsShown && <RiUserReceivedLine size=\"1.3em\" />}\n {isActionsShown && (\n <>\n <Tooltip title={t('global.edit')}>\n <Button\n key=\"edit\"\n onClick={_handleEdit}\n disabled={!view.owner}\n type=\"text\"\n size=\"small\"\n shape=\"circle\"\n icon={<EditOutlined />}\n />\n </Tooltip>\n <Tooltip title={t('global.duplicate')}>\n <Button\n key=\"duplicate\"\n onClick={_handleDuplicate}\n type=\"text\"\n size=\"small\"\n shape=\"circle\"\n icon={<CopyOutlined />}\n />\n </Tooltip>\n <Tooltip title={t('global.delete')}>\n <Button\n key=\"delete\"\n onClick={_handleDelete}\n disabled={!view.owner}\n type=\"text\"\n size=\"small\"\n shape=\"circle\"\n icon={<DeleteOutlined />}\n />\n </Tooltip>\n </>\n )}\n </Wrapper>\n );\n}\n\nexport default View;\n"]}
|
|
1
|
+
{"version":3,"file":"View.js","sourceRoot":"","sources":["../../../../../src/components/LibraryItemsList/ViewPanel/View/View.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 {CopyOutlined, DeleteOutlined, EditOutlined} from '@ant-design/icons';\nimport {localizedTranslation, objectToNameValueArray} from '@leav/utils';\nimport {Button, Tooltip, Typography} from 'antd';\nimport omit from 'lodash/omit';\nimport {useState} from 'react';\nimport {type DraggableProvidedDragHandleProps} from 'react-beautiful-dnd';\nimport styled from 'styled-components';\nimport {themeVars} from '_ui/antdTheme';\nimport useSearchReducer from '_ui/components/LibraryItemsList/hooks/useSearchReducer';\nimport {SearchActionTypes} from '_ui/components/LibraryItemsList/hooks/useSearchReducer/searchReducer';\nimport IconViewType from '_ui/components/LibraryItemsList/IconViewType';\nimport {PREFIX_SHARED_VIEWS_ORDER_KEY, PREFIX_USER_VIEWS_ORDER_KEY} from '_ui/constants';\nimport {useLang} from '_ui/hooks';\nimport useExecuteSaveViewMutation from '_ui/hooks/useExecuteSaveViewMutation/useExecuteSaveViewMutation';\nimport useExecuteDeleteViewMutation from '_ui/hooks/useExecuteDeleteViewMutation/useExecuteDeleteViewMutation';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {type IView} from '_ui/types/views';\nimport {type ViewInput, ViewSizes, ViewTypes} from '_ui/_gqlTypes';\nimport {getRequestFromFilters} from '_ui/_utils/getRequestFromFilter';\nimport {defaultView} from '../../constants';\nimport useUpdateViewsOrderMutation from '../../hooks/useUpdateViewsOrderMutation';\nimport {faUserTag} from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\n\ninterface IWrapperProps {\n selected: boolean;\n}\n\nconst Infos = styled.div`\n width: 100%;\n`;\n\nconst Wrapper = styled.div<IWrapperProps>`\n background: ${({selected}) => (selected ? `${themeVars.activeColor} ` : 'none')};\n padding: 0.5rem;\n display: flex;\n align-items: center;\n`;\n\nconst Handle = styled.div`\n content: '....';\n width: 20px;\n height: 30px;\n display: inline-block;\n line-height: 5px;\n padding: 3px 4px;\n vertical-align: middle;\n font-size: 12px;\n font-family: sans-serif;\n letter-spacing: 2px;\n color: ${themeVars.borderLightColor};\n text-shadow: 1px 0 1px black;\n\n &::after {\n content: '.. .. .. ..';\n }\n`;\n\nconst Title = styled.div`\n display: flex;\n align-items: center;\n margin-left: 10px;\n`;\n\nconst Description = styled.div`\n opacity: 0.8;\n margin-left: 10px;\n overflow: hidden;\n`;\n\ninterface IViewProps {\n view: IView;\n onEdit: (viewId: string) => void;\n handleProps?: DraggableProvidedDragHandleProps;\n}\n\nfunction View({view, onEdit, handleProps}: IViewProps): JSX.Element {\n const {t} = useSharedTranslation();\n const {lang, defaultLang} = useLang();\n\n const {state: searchState, dispatch: searchDispatch} = useSearchReducer();\n const [description, setDescription] = useState<{expand: boolean; key: number}>({expand: false, key: 0});\n\n const {saveView} = useExecuteSaveViewMutation();\n\n const {deleteView} = useExecuteDeleteViewMutation();\n const {updateViewsOrder} = useUpdateViewsOrderMutation(searchState.library.id);\n\n const _changeView = () => {\n searchDispatch({type: SearchActionTypes.CHANGE_VIEW, view});\n };\n\n const ROWS_DESCRIPTION = 3;\n\n const _handleDelete = async (event: any) => {\n // stop progation to avoid click on view\n event.stopPropagation();\n\n await deleteView(view.id);\n\n const newOrder = (view.shared ? searchState.sharedViewsOrder : searchState.userViewsOrder).filter(\n vId => vId !== view.id,\n );\n\n await updateViewsOrder({\n key: (view.shared ? PREFIX_SHARED_VIEWS_ORDER_KEY : PREFIX_USER_VIEWS_ORDER_KEY) + searchState.library.id,\n value: newOrder,\n global: false,\n });\n\n if (view.id === searchState.view.current.id) {\n searchDispatch({type: SearchActionTypes.CHANGE_VIEW, view: defaultView});\n }\n };\n\n const _handleDuplicate = async (event: any) => {\n // stop progation to avoid click on view\n event.stopPropagation();\n\n try {\n const newView: ViewInput = {\n ...omit(view, ['id', 'owner']),\n library: searchState.library.id,\n label: {\n [defaultLang]: `${localizedTranslation(view.label, lang)} (${t('global.copy')})`,\n },\n filters: getRequestFromFilters(view.filters),\n display: {\n size: ViewSizes.MEDIUM,\n type: ViewTypes.list,\n },\n valuesVersions: objectToNameValueArray(view.valuesVersions).map(version => ({\n treeId: version.name,\n treeNode: version.value.id,\n })),\n shared: false,\n };\n\n const newViewRes = await saveView({\n view: newView,\n });\n\n await updateViewsOrder({\n key: PREFIX_USER_VIEWS_ORDER_KEY + newView.library,\n value: [...searchState.userViewsOrder, newViewRes.data.saveView.id],\n global: false,\n });\n } catch (e) {\n console.error(e);\n }\n };\n\n const _handleEdit = (event: any) => {\n // stop progation to avoid click on view\n event.stopPropagation();\n\n onEdit(view.id);\n };\n\n const _onExpand = () => {\n setDescription({expand: true, key: description.key});\n };\n\n const _onClose = () => {\n setDescription({expand: false, key: description.key + 1});\n };\n\n const selected = view.id === searchState.view.current?.id;\n\n const [isActionsShown, setIsActionsShown] = useState(false);\n\n const viewLabel = localizedTranslation(view.label, lang);\n\n return (\n <Wrapper\n key={view.id}\n selected={selected}\n onClick={_changeView}\n color={view.color}\n onMouseEnter={() => setIsActionsShown(true)}\n onMouseLeave={() => setIsActionsShown(false)}\n >\n <Handle className=\"view-handle\" {...handleProps} />\n <Infos>\n <Title data-testid=\"view-title\">\n <IconViewType type={view.display.type} />\n <Typography.Text ellipsis={{tooltip: true}} style={{padding: '0 .5em', width: 'calc(100% - 1em)'}}>\n {viewLabel}\n </Typography.Text>\n </Title>\n {view.description && (\n <Description>\n <Typography.Paragraph\n key={description.key}\n ellipsis={{\n rows: ROWS_DESCRIPTION,\n expandable: true,\n onExpand: _onExpand,\n symbol: t('view.see-more'),\n }}\n style={{marginBottom: 0}}\n >\n {localizedTranslation(view.description, lang)}\n </Typography.Paragraph>\n {description.expand && (\n <a\n href=\"!#\"\n onClick={ev => {\n ev.preventDefault();\n _onClose();\n }}\n >\n {t('global.close')}\n </a>\n )}\n </Description>\n )}\n </Infos>\n {!view.owner && !isActionsShown && <FontAwesomeIcon icon={faUserTag} />}\n {isActionsShown && (\n <>\n <Tooltip title={t('global.edit')}>\n <Button\n key=\"edit\"\n onClick={_handleEdit}\n disabled={!view.owner}\n type=\"text\"\n size=\"small\"\n shape=\"circle\"\n icon={<EditOutlined />}\n />\n </Tooltip>\n <Tooltip title={t('global.duplicate')}>\n <Button\n key=\"duplicate\"\n onClick={_handleDuplicate}\n type=\"text\"\n size=\"small\"\n shape=\"circle\"\n icon={<CopyOutlined />}\n />\n </Tooltip>\n <Tooltip title={t('global.delete')}>\n <Button\n key=\"delete\"\n onClick={_handleDelete}\n disabled={!view.owner}\n type=\"text\"\n size=\"small\"\n shape=\"circle\"\n icon={<DeleteOutlined />}\n />\n </Tooltip>\n </>\n )}\n </Wrapper>\n );\n}\n\nexport default View;\n"]}
|