@leav/ui 1.6.0-4c30ab85 → 1.6.0-4feacea4
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 +367 -27
- package/dist/_gqlTypes/index.js +223 -1
- 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/SelectedAttributesList/SelectedAttributesList.js +20 -12
- package/dist/components/AttributesSelectionList/SelectedAttributesList/SelectedAttributesList.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 +3 -2
- package/dist/components/Explorer/TableNameCell.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 +3 -2
- 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 +80 -73
- 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 +4 -3
- 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/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 +5 -1
- package/dist/components/Filters/context/filtersReducer.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/LibraryItemsList/FiltersPanel/Filter/Filter.d.ts +1 -3
- package/dist/components/LibraryItemsList/FiltersPanel/Filter/Filter.js +6 -2
- package/dist/components/LibraryItemsList/FiltersPanel/Filter/Filter.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/FiltersPanel/FiltersPanel.js +15 -17
- package/dist/components/LibraryItemsList/FiltersPanel/FiltersPanel.js.map +1 -1
- package/dist/components/LibraryItemsList/LibraryItemsListTable/ChooseTableColumns/ChooseTableColumns.js +0 -6
- package/dist/components/LibraryItemsList/LibraryItemsListTable/ChooseTableColumns/ChooseTableColumns.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.d.ts +1 -3
- package/dist/components/LibraryItemsList/ViewPanel/View/View.js +9 -4
- package/dist/components/LibraryItemsList/ViewPanel/View/View.js.map +1 -1
- package/dist/components/LibraryItemsList/ViewPanel/ViewPanel.js +36 -14
- package/dist/components/LibraryItemsList/ViewPanel/ViewPanel.js.map +1 -1
- package/dist/components/Notifications/hooks/useNotificationSubscription.js +3 -2
- package/dist/components/Notifications/hooks/useNotificationSubscription.js.map +1 -1
- package/dist/components/RecordEdition/EditRecord/EditRecord.d.ts +1 -0
- package/dist/components/RecordEdition/EditRecord/EditRecord.js +3 -3
- package/dist/components/RecordEdition/EditRecord/EditRecord.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/EditRecordPage/EditRecordPage.d.ts +1 -0
- package/dist/components/RecordEdition/EditRecordPage/EditRecordPage.js +2 -2
- package/dist/components/RecordEdition/EditRecordPage/EditRecordPage.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/RecordEdition/hooks/useGetSubmitButtons.js +2 -2
- package/dist/components/RecordEdition/hooks/useGetSubmitButtons.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/constants.d.ts +1 -0
- package/dist/constants.js +1 -0
- 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 +6 -3
- package/dist/hooks/useIFrameMessenger/schema.js +2 -1
- 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 +15 -0
- 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 +13 -11
|
@@ -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":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAC,MAAM,mBAAmB,CAAC;AACzG,OAAO,EAAC,oBAAoB,EAAE,sBAAsB,EAAC,MAAM,aAAa,CAAC;AACzE,OAAO,EAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAkB,KAAK,EAAE,OAAO,EAAC,MAAM,MAAM,CAAC;AAC7E,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,gBAAgB,MAAM,wDAAwD,CAAC;AACtF,OAAO,EAAC,iBAAiB,EAAC,MAAM,sEAAsE,CAAC;AACvG,OAAO,0BAA0B,MAAM,iEAAiE,CAAC;AACzG,OAAO,OAAO,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAiB,SAAS,EAAC,MAAM,eAAe,CAAC;AAExD,OAAO,EAAC,WAAW,EAAC,MAAM,YAAY,CAAC;AACvC,OAAO,EAAC,qBAAqB,EAAC,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAC,2BAA2B,EAAC,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAC,OAAO,EAAC,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AACzC,OAAO,eAAe,MAAM,oBAAoB,CAAC;AACjD,OAAO,2BAA2B,MAAM,sCAAsC,CAAC;AAC/E,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAC,MAAM,EAAE,YAAY,EAAC,MAAM,mCAAmC,CAAC;AAMvE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;;;;;CAKhC,CAAC;AAEF,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAA;;;;;CAK5B,CAAC;AAEF,SAAS,QAAQ,CAAC,EAAC,OAAO,EAAiB;IACvC,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IACnC,MAAM,EAAC,IAAI,EAAE,WAAW,EAAC,GAAG,OAAO,EAAE,CAAC;IAEtC,MAAM,EAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAC,GAAG,gBAAgB,EAAE,CAAC;IAC1E,MAAM,EAAC,QAAQ,EAAC,GAAG,OAAO,EAAE,CAAC;IAE7B,MAAM,EAAC,QAAQ,EAAE,OAAO,EAAC,GAAG,0BAA0B,EAAE,CAAC;IACzD,MAAM,EAAC,gBAAgB,EAAC,GAAG,2BAA2B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAEnE,MAAM,eAAe,GAAG,GAAG,EAAE;QACzB,MAAM,OAAO,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,KAAK,kBAAkB,CAAC,IAAI,CAAC;QACrG,cAAc,CAAC;YACX,IAAI,EAAE,iBAAiB,CAAC,WAAW;YACnC,WAAW,EAAE,kBAAkB,CAAC,IAAI;YACpC,OAAO;SACV,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC5B,MAAM,OAAO,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,KAAK,kBAAkB,CAAC,OAAO,CAAC;QACxG,cAAc,CAAC;YACX,IAAI,EAAE,iBAAiB,CAAC,WAAW;YACnC,WAAW,EAAE,kBAAkB,CAAC,OAAO;YACvC,OAAO;SACV,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,GAAG,EAAE;QAC7B,MAAM,OAAO,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,KAAK,kBAAkB,CAAC,OAAO,CAAC;QACxG,cAAc,CAAC;YACX,IAAI,EAAE,iBAAiB,CAAC,WAAW;YACnC,WAAW,EAAE,kBAAkB,CAAC,QAAQ;YACxC,OAAO;SACV,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,GAAG,EAAE;QACpB,cAAc,CAAC;YACX,IAAI,EAAE,iBAAiB,CAAC,WAAW;YACnC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO;SACjC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,0BAA0B,GAAG,GAAc,EAAE,CAAC,CAAC;QACjD,OAAO,EAAE,OAAO,CAAC,EAAE;QACnB,KAAK,EAAE;YACH,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,qBAAqB,EAAE,EAAC,GAAG,EAAE,WAAW,EAAC,CAAC;SAC9D;QACD,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,WAAW,CAAC,IAAI;QACtB,OAAO,EAAE,qBAAqB,CAAC,WAAW,CAAC,OAAO,CAAC;QACnD,cAAc,EAAE,WAAW,CAAC,cAAc;YACtC,CAAC,CAAC,sBAAsB,CAAC,WAAW,CAAC,cAAc,CAAC;iBAC7C,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACb,MAAM,EAAE,OAAO,EAAE,IAAI,IAAI,IAAI;gBAC7B,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI;aACvC,CAAC,CAAC;iBACF,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC;YAC5D,CAAC,CAAC,IAAI;QACV,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE;KACxD,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;QACzB,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,EAAE,CAAC;YACjD,uBAAuB;YACvB,MAAM,OAAO,CAAC;gBACV,IAAI,EAAE;oBACF,GAAG,0BAA0B,EAAE;oBAC/B,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;oBAC/B,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;oBACrC,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW;oBACjD,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;oBACvC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;oBACrC,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,IAAI;iBACjC;aACJ,CAAC,CAAC;YAEH,cAAc,CAAC;gBACX,IAAI,EAAE,iBAAiB,CAAC,aAAa;gBACrC,IAAI,EAAE,IAAI;aACb,CAAC,CAAC;QACP,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,KAAK,EAAE,QAAmB,EAAE,EAAE;QACjD,MAAM,OAAO,GAAc;YACvB,GAAG,0BAA0B,EAAE;YAC/B,OAAO,EAAE,EAAC,GAAG,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAC;SACpD,CAAC;QAEF,uBAAuB;QACvB,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC;YAC7B,IAAI,EAAE,OAAO;SAChB,CAAC,CAAC;QAEH,MAAM,gBAAgB,CAAC;YACnB,GAAG,EAAE,2BAA2B,GAAG,OAAO,CAAC,OAAO;YAClD,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,cAAc,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnE,MAAM,EAAE,KAAK;SAChB,CAAC,CAAC;QAEH,cAAc,CAAC;YACX,IAAI,EAAE,iBAAiB,CAAC,WAAW;YACnC,IAAI,EAAE,WAAW,CACb,UAAU,CAAC,IAAI,CAAC,QAAQ,EACxB,WAAW,CAAC,UAAU,EACtB,WAAW,CAAC,OAAO,CAAC,EAAE,EACtB,QAAQ,EAAE,MAAM,CACnB;SACJ,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,IAAI,GAAc;QACpB,KAAK,EAAE;YACH;gBACI,GAAG,EAAE,WAAW;gBAChB,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,CAAC,CAAC,qBAAqB,CAAC;gBAC/B,QAAQ,EAAE;oBACN;wBACI,GAAG,EAAE,MAAM;wBACX,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC;wBAC7C,IAAI,EAAE,KAAC,YAAY,KAAG;wBACtB,KAAK,EAAE,CAAC,CAAC,gBAAgB,CAAC;qBAC7B;oBACD;wBACI,GAAG,EAAE,OAAO;wBACZ,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC;wBAC9C,IAAI,EAAE,KAAC,cAAc,KAAG;wBACxB,KAAK,EAAE,CAAC,CAAC,iBAAiB,CAAC;qBAC9B;iBACJ;aACJ;SACJ;KACJ,CAAC;IAEF,OAAO,CACH,MAAC,KAAK,IAAC,IAAI,EAAC,OAAO,aACf,MAAC,MAAM,CAAC,KAAK,eACT,KAAC,OAAO,IACJ,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,0BAA0B,CAAC,YAEnG,KAAC,UAAU,IACP,IAAI,EACA,KAAC,YAAY,IAAC,KAAK,EAAE,EAAC,WAAW,EAAE,KAAK,EAAC,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,GAAI,iBAElF,uBAAuB,EACnC,OAAO,EAAE,eAAe,YAExB,KAAC,SAAS,cACL,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC;oCACxD,CAAC,CAAC,0BAA0B,CAAC,GACzB,GACH,GACP,EACV,KAAC,MAAM,IACH,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,EAC/B,IAAI,EAAE,KAAC,eAAe,IAAC,IAAI,EAAE,MAAM,GAAI,EACvC,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,EAAC,UAAU,EAAE,KAAK,EAAC,GAC5B,EACF,KAAC,MAAM,IACH,IAAI,EAAE,KAAC,UAAU,KAAG,EACpB,OAAO,EAAE,SAAS,EAClB,QAAQ,EACJ,WAAW,CAAC,IAAI,CAAC,IAAI;4BACrB,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,WAAW,CAAC,EAAE;4BAC/C,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAErC,EACF,KAAC,QAAQ,IAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,YACpC,KAAC,MAAM,IAAC,IAAI,EAAE,KAAC,YAAY,KAAG,GAAW,GAClC,IACA,EACf,KAAC,KAAK,IAAC,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,YACpC,MAAC,MAAM,CAAC,KAAK,eACT,KAAC,MAAM,IAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,KAAC,cAAc,KAAG,YACxD,CAAC,CAAC,iBAAiB,CAAC,GAChB,EACT,KAAC,eAAe,IACZ,SAAS,EAAE,OAAO,CAAC,EAAE,EACrB,MAAM,EAAE,KAAC,MAAM,IAAC,IAAI,EAAE,KAAC,YAAY,KAAG,EAAE,IAAI,EAAC,SAAS,GAAG,EACzD,UAAU,EAAE,OAAO,CAAC,UAAU,EAC9B,KAAK,EAAE,OAAO,CAAC,WAAW,EAC1B,SAAS,EAAE,EAAE,GACf,IACS,GACX,EACR,KAAC,MAAM,IACH,OAAO,EAAE,mBAAmB,EAC5B,IAAI,EAAE,KAAC,eAAe,IAAC,IAAI,EAAE,YAAY,GAAI,EAC7C,KAAK,EAAE,EAAC,UAAU,EAAE,KAAK,EAAC,GAC5B,IACE,CACX,CAAC;AACN,CAAC;AAED,eAAe,QAAQ,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 {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"]}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import { type DraggableProvidedDragHandleProps } from 'react-beautiful-dnd';
|
|
2
1
|
import { type IView } from '../../../../types/views';
|
|
3
2
|
interface IViewProps {
|
|
4
3
|
view: IView;
|
|
5
4
|
onEdit: (viewId: string) => void;
|
|
6
|
-
handleProps?: DraggableProvidedDragHandleProps;
|
|
7
5
|
}
|
|
8
|
-
declare function View({ view, onEdit
|
|
6
|
+
declare function View({ view, onEdit }: IViewProps): JSX.Element;
|
|
9
7
|
export default View;
|
|
@@ -4,10 +4,11 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
4
4
|
// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt
|
|
5
5
|
import { CopyOutlined, DeleteOutlined, EditOutlined } from '@ant-design/icons';
|
|
6
6
|
import { localizedTranslation, objectToNameValueArray } from '@leav/utils';
|
|
7
|
+
import { useSortable } from '@dnd-kit/sortable';
|
|
8
|
+
import { CSS } from '@dnd-kit/utilities';
|
|
7
9
|
import { Button, Tooltip, Typography } from 'antd';
|
|
8
10
|
import omit from 'lodash/omit';
|
|
9
11
|
import { useState } from 'react';
|
|
10
|
-
import { RiUserReceivedLine } from 'react-icons/ri';
|
|
11
12
|
import styled from 'styled-components';
|
|
12
13
|
import { themeVars } from '../../../../antdTheme';
|
|
13
14
|
import useSearchReducer from '../../../../components/LibraryItemsList/hooks/useSearchReducer';
|
|
@@ -22,6 +23,8 @@ import { ViewSizes, ViewTypes } from '../../../../_gqlTypes';
|
|
|
22
23
|
import { getRequestFromFilters } from '../../../../_utils/getRequestFromFilter';
|
|
23
24
|
import { defaultView } from '../../constants';
|
|
24
25
|
import useUpdateViewsOrderMutation from '../../hooks/useUpdateViewsOrderMutation';
|
|
26
|
+
import { faUserTag } from '@fortawesome/free-solid-svg-icons';
|
|
27
|
+
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
25
28
|
const Infos = styled.div `
|
|
26
29
|
width: 100%;
|
|
27
30
|
`;
|
|
@@ -59,7 +62,7 @@ const Description = styled.div `
|
|
|
59
62
|
margin-left: 10px;
|
|
60
63
|
overflow: hidden;
|
|
61
64
|
`;
|
|
62
|
-
function View({ view, onEdit
|
|
65
|
+
function View({ view, onEdit }) {
|
|
63
66
|
const { t } = useSharedTranslation();
|
|
64
67
|
const { lang, defaultLang } = useLang();
|
|
65
68
|
const { state: searchState, dispatch: searchDispatch } = useSearchReducer();
|
|
@@ -67,6 +70,8 @@ function View({ view, onEdit, handleProps }) {
|
|
|
67
70
|
const { saveView } = useExecuteSaveViewMutation();
|
|
68
71
|
const { deleteView } = useExecuteDeleteViewMutation();
|
|
69
72
|
const { updateViewsOrder } = useUpdateViewsOrderMutation(searchState.library.id);
|
|
73
|
+
const { attributes, listeners, setNodeRef, transform, transition } = useSortable({ id: view.id });
|
|
74
|
+
const style = { transform: CSS.Transform.toString(transform), transition };
|
|
70
75
|
const _changeView = () => {
|
|
71
76
|
searchDispatch({ type: SearchActionTypes.CHANGE_VIEW, view });
|
|
72
77
|
};
|
|
@@ -133,7 +138,7 @@ function View({ view, onEdit, handleProps }) {
|
|
|
133
138
|
const selected = view.id === searchState.view.current?.id;
|
|
134
139
|
const [isActionsShown, setIsActionsShown] = useState(false);
|
|
135
140
|
const viewLabel = localizedTranslation(view.label, lang);
|
|
136
|
-
return (_jsxs(Wrapper, { selected: selected, onClick: _changeView, color: view.color, onMouseEnter: () => setIsActionsShown(true), onMouseLeave: () => setIsActionsShown(false), children: [_jsx(Handle, { className: "view-handle", ...
|
|
141
|
+
return (_jsxs(Wrapper, { ref: setNodeRef, style: style, ...attributes, selected: selected, onClick: _changeView, color: view.color, onMouseEnter: () => setIsActionsShown(true), onMouseLeave: () => setIsActionsShown(false), children: [_jsx(Handle, { className: "view-handle", ...listeners }), _jsxs(Infos, { children: [_jsxs(Title, { "data-testid": "view-title", children: [_jsx(IconViewType, { type: view.display.type }), _jsx(Typography.Text, { ellipsis: { tooltip: true }, style: { padding: '0 .5em', width: 'calc(100% - 1em)' }, children: viewLabel })] }), view.description && (_jsxs(Description, { children: [_jsx(Typography.Paragraph, { ellipsis: {
|
|
137
142
|
rows: ROWS_DESCRIPTION,
|
|
138
143
|
expandable: true,
|
|
139
144
|
onExpand: _onExpand,
|
|
@@ -141,7 +146,7 @@ function View({ view, onEdit, handleProps }) {
|
|
|
141
146
|
}, style: { marginBottom: 0 }, children: localizedTranslation(view.description, lang) }, description.key), description.expand && (_jsx("a", { href: "!#", onClick: ev => {
|
|
142
147
|
ev.preventDefault();
|
|
143
148
|
_onClose();
|
|
144
|
-
}, children: t('global.close') }))] }))] }), !view.owner && !isActionsShown && _jsx(
|
|
149
|
+
}, 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
150
|
}
|
|
146
151
|
export default View;
|
|
147
152
|
//# 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 {useSortable} from '@dnd-kit/sortable';\nimport {CSS} from '@dnd-kit/utilities';\nimport {Button, Tooltip, Typography} from 'antd';\nimport omit from 'lodash/omit';\nimport {useState} from 'react';\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}\n\nfunction View({view, onEdit}: 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 {attributes, listeners, setNodeRef, transform, transition} = useSortable({id: view.id});\n const style = {transform: CSS.Transform.toString(transform), transition};\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 ref={setNodeRef}\n style={style}\n {...attributes}\n selected={selected}\n onClick={_changeView}\n color={view.color}\n onMouseEnter={() => setIsActionsShown(true)}\n onMouseLeave={() => setIsActionsShown(false)}\n >\n <Handle className=\"view-handle\" {...listeners} />\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"]}
|
|
@@ -7,7 +7,8 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
|
7
7
|
import { localizedTranslation } from '@leav/utils';
|
|
8
8
|
import { Badge, Button, Input } from 'antd';
|
|
9
9
|
import { useState } from 'react';
|
|
10
|
-
import {
|
|
10
|
+
import { DndContext, closestCenter } from '@dnd-kit/core';
|
|
11
|
+
import { SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable';
|
|
11
12
|
import styled from 'styled-components';
|
|
12
13
|
import { themeVars } from '../../../antdTheme';
|
|
13
14
|
import { ErrorDisplay } from '../../../components/ErrorDisplay';
|
|
@@ -157,22 +158,43 @@ function ViewPanel() {
|
|
|
157
158
|
const _closeModal = () => {
|
|
158
159
|
setEditView(false);
|
|
159
160
|
};
|
|
160
|
-
const
|
|
161
|
-
|
|
161
|
+
const handleDragEnd = async (event) => {
|
|
162
|
+
const { active, over } = event;
|
|
163
|
+
if (!over || active.id === over.id) {
|
|
162
164
|
return;
|
|
163
165
|
}
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
166
|
+
let viewsList = userViews;
|
|
167
|
+
let keyToUpdate = PREFIX_USER_VIEWS_ORDER_KEY + searchState.library.id;
|
|
168
|
+
let orderType = 'userViewsOrder';
|
|
169
|
+
if (sharedViews.some(v => v.id === active.id)) {
|
|
170
|
+
viewsList = sharedViews;
|
|
171
|
+
keyToUpdate = PREFIX_SHARED_VIEWS_ORDER_KEY + searchState.library.id;
|
|
172
|
+
orderType = 'sharedViewsOrder';
|
|
173
|
+
}
|
|
174
|
+
const ids = viewsList.map(v => v.id);
|
|
175
|
+
const oldIndex = ids.indexOf(active.id);
|
|
176
|
+
const newIndex = ids.indexOf(over.id);
|
|
177
|
+
if (oldIndex === -1 || newIndex === -1) {
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
const newOrder = [...ids];
|
|
181
|
+
newOrder.splice(oldIndex, 1);
|
|
182
|
+
newOrder.splice(newIndex, 0, active.id);
|
|
183
|
+
if (orderType === 'userViewsOrder') {
|
|
184
|
+
searchDispatch({
|
|
185
|
+
type: SearchActionTypes.SET_USER_VIEWS_ORDER,
|
|
186
|
+
userViewsOrder: newOrder,
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
searchDispatch({
|
|
191
|
+
type: SearchActionTypes.SET_SHARED_VIEWS_ORDER,
|
|
192
|
+
sharedViewsOrder: newOrder,
|
|
193
|
+
});
|
|
194
|
+
}
|
|
173
195
|
await updateViewsOrder({
|
|
174
196
|
key: keyToUpdate,
|
|
175
|
-
value:
|
|
197
|
+
value: newOrder,
|
|
176
198
|
global: false,
|
|
177
199
|
});
|
|
178
200
|
};
|
|
@@ -181,7 +203,7 @@ function ViewPanel() {
|
|
|
181
203
|
const handleHide = () => {
|
|
182
204
|
searchDispatch({ type: SearchActionTypes.TOGGLE_SIDEBAR });
|
|
183
205
|
};
|
|
184
|
-
return (_jsxs(Wrapper, { children: [editView && (_jsx(EditView, { view: editView, visible: !!editView, onClose: _closeModal, libraryId: searchState.library.id })), _jsxs(Header, { children: [_jsx("span", { children: t('view.views') }), _jsx(Button, { onClick: handleHide, icon: _jsx(FontAwesomeIcon, { icon: faAngleLeft }) })] }), _jsx(SearchWrapper, { children: _jsx(Input.Search, { placeholder: t('view.search'), onSearch: _handleSearchSubmit }) }),
|
|
206
|
+
return (_jsxs(Wrapper, { children: [editView && (_jsx(EditView, { view: editView, visible: !!editView, onClose: _closeModal, libraryId: searchState.library.id })), _jsxs(Header, { children: [_jsx("span", { children: t('view.views') }), _jsx(Button, { onClick: handleHide, icon: _jsx(FontAwesomeIcon, { icon: faAngleLeft }) })] }), _jsx(SearchWrapper, { children: _jsx(Input.Search, { placeholder: t('view.search'), onSearch: _handleSearchSubmit }) }), _jsxs(DndContext, { collisionDetection: closestCenter, onDragEnd: handleDragEnd, children: [_jsx(SubHeader, { children: t('view.shared-views') }), _jsx(SortableContext, { items: sharedViews.map(v => v.id), strategy: verticalListSortingStrategy, children: _jsx(Views, { children: sharedViews.map(view => (_jsx(View, { view: view, onEdit: () => _showModal(view) }, view.id))) }) }), _jsxs(SubHeader, { children: [t('view.my-views'), _jsx(CustomBadge, { count: userViews.length })] }), _jsx(SortableContext, { items: userViews.map(v => v.id), strategy: verticalListSortingStrategy, children: _jsx(Views, { children: userViews.map(view => (_jsx(View, { view: view, onEdit: () => _showModal(view) }, view.id))) }) })] })] }));
|
|
185
207
|
}
|
|
186
208
|
export default ViewPanel;
|
|
187
209
|
//# sourceMappingURL=ViewPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewPanel.js","sourceRoot":"","sources":["../../../../src/components/LibraryItemsList/ViewPanel/ViewPanel.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 {faAngleLeft} from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {localizedTranslation} from '@leav/utils';\nimport {Badge, Button, Input} from 'antd';\nimport {useState} from 'react';\nimport {DragDropContext, Draggable, Droppable, type DropResult, type ResponderProvided} from 'react-beautiful-dnd';\nimport styled from 'styled-components';\nimport {themeVars} from '_ui/antdTheme';\nimport {ErrorDisplay} from '_ui/components/ErrorDisplay';\nimport useSearchReducer from '_ui/components/LibraryItemsList/hooks/useSearchReducer';\nimport {SearchActionTypes} from '_ui/components/LibraryItemsList/hooks/useSearchReducer/searchReducer';\nimport {Loading} from '_ui/components/Loading';\nimport {PREFIX_SHARED_VIEWS_ORDER_KEY, PREFIX_USER_VIEWS_ORDER_KEY} from '_ui/constants';\nimport {useLang} from '_ui/hooks';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {useUser} from '_ui/hooks/useUser/useUser';\nimport {type IView} from '_ui/types/views';\nimport {useGetUserDataQuery, useGetViewsListQuery} from '_ui/_gqlTypes';\nimport {prepareView} from '_ui/_utils';\nimport useUpdateViewsOrderMutation from '../hooks/useUpdateViewsOrderMutation';\nimport EditView from './EditView';\nimport View from './View';\n\nconst Wrapper = styled.div`\n width: 100%;\n display: flex;\n flex-flow: column nowrap;\n border-right: ${themeVars.borderLightColor} 1px solid;\n overflow-y: auto;\n`;\n\nconst Header = styled.div`\n width: 100%;\n background-color: ${themeVars.headerBg};\n display: grid;\n grid-template-columns: repeat(2, auto);\n justify-content: space-between;\n padding: 0.3rem 0.3rem 0.3rem 1rem;\n font-weight: 700;\n border-bottom: 1px solid ${themeVars.borderLightColor};\n\n & > * {\n :first-of-type {\n display: grid;\n column-gap: 8px;\n grid-template-columns: repeat(3, auto);\n align-items: center;\n justify-items: center;\n }\n\n :last-of-type {\n display: grid;\n align-items: center;\n justify-content: flex-end;\n column-gap: 8px;\n grid-template-columns: repeat(2, auto);\n }\n }\n`;\n\nconst SubHeader = styled.div`\n width: 100%;\n border-top: ${themeVars.activeColor} 1px solid;\n border-bottom: ${themeVars.activeColor} 1px solid;\n padding: 0.3rem;\n padding-left: 1rem;\n font-weight: 700;\n font-size: 14px;\n`;\n\nconst Views = styled.div`\n width: 100%;\n`;\n\nconst SearchWrapper = styled.div`\n margin: 1rem;\n`;\n\nconst CustomBadge = styled(Badge)`\n margin-left: 8px;\n && > * {\n background-color: ${themeVars.borderLightColor};\n color: ${themeVars.defaultTextColor};\n }\n`;\n\nconst _sortViewFunction = (referenceOrder: string[]) => (viewA: IView, viewB: IView) => {\n const orderA = referenceOrder.indexOf(viewA.id);\n const orderB = referenceOrder.indexOf(viewB.id);\n const isAOrdered = orderA !== -1;\n const isBOrdered = orderB !== -1;\n\n if (isAOrdered && isBOrdered) {\n return orderA - orderB;\n } else if (isAOrdered && !isBOrdered) {\n return -1;\n } else if (!isAOrdered && isBOrdered) {\n return 1;\n } else {\n return Number(viewA.id) - Number(viewB.id);\n }\n};\n\nfunction ViewPanel(): JSX.Element {\n const {t} = useSharedTranslation();\n\n const {userData} = useUser();\n const {lang} = useLang();\n const [search, setSearch] = useState('');\n const {state: searchState, dispatch: searchDispatch} = useSearchReducer();\n const [editView, setEditView] = useState<IView | false>(false);\n\n const {updateViewsOrder} = useUpdateViewsOrderMutation(searchState.library.id);\n\n const getViewsList = useGetViewsListQuery({\n variables: {\n libraryId: searchState?.library?.id || '',\n },\n });\n\n const getOrderDataQuery = useGetUserDataQuery({\n variables: {\n keys: [\n PREFIX_USER_VIEWS_ORDER_KEY + searchState.library.id,\n PREFIX_SHARED_VIEWS_ORDER_KEY + searchState.library.id,\n ],\n },\n onCompleted: d => {\n searchDispatch({\n type: SearchActionTypes.SET_USER_VIEWS_ORDER,\n userViewsOrder: d.userData?.data[PREFIX_USER_VIEWS_ORDER_KEY + searchState.library.id] || [],\n });\n searchDispatch({\n type: SearchActionTypes.SET_SHARED_VIEWS_ORDER,\n sharedViewsOrder: d.userData?.data[PREFIX_SHARED_VIEWS_ORDER_KEY + searchState.library.id] || [],\n });\n },\n });\n\n if (getViewsList.loading) {\n return <Loading />;\n }\n\n const _handleSearchSubmit = (value: string) => {\n setSearch(value);\n };\n\n const {sharedViews, userViews}: {sharedViews: IView[]; userViews: IView[]} = getViewsList.data?.views.list.reduce(\n (acc, view) => {\n const v: IView = prepareView(view, searchState.attributes, searchState.library.id, userData?.userId);\n\n if (search && !localizedTranslation(v.label, lang).toUpperCase().includes(search.toUpperCase())) {\n return acc;\n }\n\n if (v.shared) {\n return {...acc, sharedViews: [...acc.sharedViews, v]};\n }\n\n return {...acc, userViews: [...acc.userViews, v]};\n },\n {sharedViews: [], userViews: []},\n ) ?? {sharedViews: [], userViews: []};\n\n if (getViewsList.error || getOrderDataQuery.error) {\n return <ErrorDisplay message={(getViewsList.error || getOrderDataQuery.error).message} />;\n }\n\n if (!sharedViews || !userViews) {\n return <ErrorDisplay message={t('error.error_occurred')} />;\n }\n\n const _showModal = (view: IView) => {\n setEditView(view);\n };\n\n const _closeModal = () => {\n setEditView(false);\n };\n\n const onDragEnd = async (result: DropResult, provided: ResponderProvided) => {\n if (!result.destination) {\n return;\n }\n\n const isOrderingUserViews = result.source.droppableId === 'user';\n\n const viewsListBefore = isOrderingUserViews ? userViews : sharedViews;\n const orderedViews = viewsListBefore.map(v => v.id);\n\n const element = orderedViews[result.source.index];\n orderedViews.splice(result.source.index, 1);\n orderedViews.splice(result.destination.index, 0, element);\n\n const keyToUpdate = isOrderingUserViews\n ? PREFIX_USER_VIEWS_ORDER_KEY + searchState.library.id\n : PREFIX_SHARED_VIEWS_ORDER_KEY + searchState.library.id;\n\n await updateViewsOrder({\n key: keyToUpdate,\n value: orderedViews,\n global: false,\n });\n };\n\n userViews.sort(_sortViewFunction(searchState.userViewsOrder));\n sharedViews.sort(_sortViewFunction(searchState.sharedViewsOrder));\n\n const handleHide = () => {\n searchDispatch({type: SearchActionTypes.TOGGLE_SIDEBAR});\n };\n\n return (\n <Wrapper>\n {editView && (\n <EditView\n view={editView}\n visible={!!editView}\n onClose={_closeModal}\n libraryId={searchState.library.id}\n />\n )}\n <Header>\n <span>{t('view.views')}</span>\n <Button onClick={handleHide} icon={<FontAwesomeIcon icon={faAngleLeft} />}></Button>\n </Header>\n <SearchWrapper>\n <Input.Search placeholder={t('view.search')} onSearch={_handleSearchSubmit} />\n </SearchWrapper>\n\n <SubHeader>{t('view.shared-views')}</SubHeader>\n\n <DragDropContext onDragEnd={onDragEnd}>\n <Droppable droppableId=\"shared\">\n {providedDroppable => (\n <Views {...providedDroppable.droppableProps} ref={providedDroppable.innerRef}>\n {sharedViews.map((view, idx) => (\n <Draggable key={idx} draggableId={idx.toString()} index={idx}>\n {provided => (\n <div\n ref={provided.innerRef}\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n >\n <View\n key={view.id}\n view={view}\n onEdit={() => _showModal(view)}\n handleProps={provided.dragHandleProps}\n />\n </div>\n )}\n </Draggable>\n ))}\n {providedDroppable.placeholder}\n </Views>\n )}\n </Droppable>\n </DragDropContext>\n\n <SubHeader>\n {t('view.my-views')}\n <CustomBadge count={userViews.length} />\n </SubHeader>\n <DragDropContext onDragEnd={onDragEnd}>\n <Droppable droppableId=\"user\">\n {providedDroppable => (\n <Views {...providedDroppable.droppableProps} ref={providedDroppable.innerRef}>\n {userViews.map((view, idx) => (\n <Draggable key={idx} draggableId={idx.toString()} index={idx}>\n {provided => (\n <div\n ref={provided.innerRef}\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n >\n <View\n key={view.id}\n view={view}\n onEdit={() => _showModal(view)}\n handleProps={provided.dragHandleProps}\n />\n </div>\n )}\n </Draggable>\n ))}\n {providedDroppable.placeholder}\n </Views>\n )}\n </Droppable>\n </DragDropContext>\n </Wrapper>\n );\n}\n\nexport default ViewPanel;\n"]}
|
|
1
|
+
{"version":3,"file":"ViewPanel.js","sourceRoot":"","sources":["../../../../src/components/LibraryItemsList/ViewPanel/ViewPanel.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 {faAngleLeft} from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {localizedTranslation} from '@leav/utils';\nimport {Badge, Button, Input} from 'antd';\nimport {useState} from 'react';\nimport {DndContext, closestCenter} from '@dnd-kit/core';\nimport {SortableContext, verticalListSortingStrategy} from '@dnd-kit/sortable';\nimport styled from 'styled-components';\nimport {themeVars} from '_ui/antdTheme';\nimport {ErrorDisplay} from '_ui/components/ErrorDisplay';\nimport useSearchReducer from '_ui/components/LibraryItemsList/hooks/useSearchReducer';\nimport {SearchActionTypes} from '_ui/components/LibraryItemsList/hooks/useSearchReducer/searchReducer';\nimport {Loading} from '_ui/components/Loading';\nimport {PREFIX_SHARED_VIEWS_ORDER_KEY, PREFIX_USER_VIEWS_ORDER_KEY} from '_ui/constants';\nimport {useLang} from '_ui/hooks';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {useUser} from '_ui/hooks/useUser/useUser';\nimport {type IView} from '_ui/types/views';\nimport {useGetUserDataQuery, useGetViewsListQuery} from '_ui/_gqlTypes';\nimport {prepareView} from '_ui/_utils';\nimport useUpdateViewsOrderMutation from '../hooks/useUpdateViewsOrderMutation';\nimport EditView from './EditView';\nimport View from './View';\n\nconst Wrapper = styled.div`\n width: 100%;\n display: flex;\n flex-flow: column nowrap;\n border-right: ${themeVars.borderLightColor} 1px solid;\n overflow-y: auto;\n`;\n\nconst Header = styled.div`\n width: 100%;\n background-color: ${themeVars.headerBg};\n display: grid;\n grid-template-columns: repeat(2, auto);\n justify-content: space-between;\n padding: 0.3rem 0.3rem 0.3rem 1rem;\n font-weight: 700;\n border-bottom: 1px solid ${themeVars.borderLightColor};\n\n & > * {\n :first-of-type {\n display: grid;\n column-gap: 8px;\n grid-template-columns: repeat(3, auto);\n align-items: center;\n justify-items: center;\n }\n\n :last-of-type {\n display: grid;\n align-items: center;\n justify-content: flex-end;\n column-gap: 8px;\n grid-template-columns: repeat(2, auto);\n }\n }\n`;\n\nconst SubHeader = styled.div`\n width: 100%;\n border-top: ${themeVars.activeColor} 1px solid;\n border-bottom: ${themeVars.activeColor} 1px solid;\n padding: 0.3rem;\n padding-left: 1rem;\n font-weight: 700;\n font-size: 14px;\n`;\n\nconst Views = styled.div`\n width: 100%;\n`;\n\nconst SearchWrapper = styled.div`\n margin: 1rem;\n`;\n\nconst CustomBadge = styled(Badge)`\n margin-left: 8px;\n && > * {\n background-color: ${themeVars.borderLightColor};\n color: ${themeVars.defaultTextColor};\n }\n`;\n\nconst _sortViewFunction = (referenceOrder: string[]) => (viewA: IView, viewB: IView) => {\n const orderA = referenceOrder.indexOf(viewA.id);\n const orderB = referenceOrder.indexOf(viewB.id);\n const isAOrdered = orderA !== -1;\n const isBOrdered = orderB !== -1;\n\n if (isAOrdered && isBOrdered) {\n return orderA - orderB;\n } else if (isAOrdered && !isBOrdered) {\n return -1;\n } else if (!isAOrdered && isBOrdered) {\n return 1;\n } else {\n return Number(viewA.id) - Number(viewB.id);\n }\n};\n\nfunction ViewPanel(): JSX.Element {\n const {t} = useSharedTranslation();\n const {userData} = useUser();\n const {lang} = useLang();\n const [search, setSearch] = useState('');\n const {state: searchState, dispatch: searchDispatch} = useSearchReducer();\n const [editView, setEditView] = useState<IView | false>(false);\n\n const {updateViewsOrder} = useUpdateViewsOrderMutation(searchState.library.id);\n\n const getViewsList = useGetViewsListQuery({\n variables: {\n libraryId: searchState?.library?.id || '',\n },\n });\n\n const getOrderDataQuery = useGetUserDataQuery({\n variables: {\n keys: [\n PREFIX_USER_VIEWS_ORDER_KEY + searchState.library.id,\n PREFIX_SHARED_VIEWS_ORDER_KEY + searchState.library.id,\n ],\n },\n onCompleted: d => {\n searchDispatch({\n type: SearchActionTypes.SET_USER_VIEWS_ORDER,\n userViewsOrder: d.userData?.data[PREFIX_USER_VIEWS_ORDER_KEY + searchState.library.id] || [],\n });\n searchDispatch({\n type: SearchActionTypes.SET_SHARED_VIEWS_ORDER,\n sharedViewsOrder: d.userData?.data[PREFIX_SHARED_VIEWS_ORDER_KEY + searchState.library.id] || [],\n });\n },\n });\n\n if (getViewsList.loading) {\n return <Loading />;\n }\n\n const _handleSearchSubmit = (value: string) => {\n setSearch(value);\n };\n\n const {sharedViews, userViews}: {sharedViews: IView[]; userViews: IView[]} = getViewsList.data?.views.list.reduce(\n (acc, view) => {\n const v: IView = prepareView(view, searchState.attributes, searchState.library.id, userData?.userId);\n\n if (search && !localizedTranslation(v.label, lang).toUpperCase().includes(search.toUpperCase())) {\n return acc;\n }\n\n if (v.shared) {\n return {...acc, sharedViews: [...acc.sharedViews, v]};\n }\n\n return {...acc, userViews: [...acc.userViews, v]};\n },\n {sharedViews: [], userViews: []},\n ) ?? {sharedViews: [], userViews: []};\n\n if (getViewsList.error || getOrderDataQuery.error) {\n return <ErrorDisplay message={(getViewsList.error || getOrderDataQuery.error).message} />;\n }\n\n if (!sharedViews || !userViews) {\n return <ErrorDisplay message={t('error.error_occurred')} />;\n }\n\n const _showModal = (view: IView) => {\n setEditView(view);\n };\n\n const _closeModal = () => {\n setEditView(false);\n };\n\n const handleDragEnd = async event => {\n const {active, over} = event;\n if (!over || active.id === over.id) {\n return;\n }\n\n let viewsList = userViews;\n let keyToUpdate = PREFIX_USER_VIEWS_ORDER_KEY + searchState.library.id;\n let orderType = 'userViewsOrder';\n if (sharedViews.some(v => v.id === active.id)) {\n viewsList = sharedViews;\n keyToUpdate = PREFIX_SHARED_VIEWS_ORDER_KEY + searchState.library.id;\n orderType = 'sharedViewsOrder';\n }\n\n const ids = viewsList.map(v => v.id);\n const oldIndex = ids.indexOf(active.id);\n const newIndex = ids.indexOf(over.id);\n if (oldIndex === -1 || newIndex === -1) {\n return;\n }\n\n const newOrder = [...ids];\n newOrder.splice(oldIndex, 1);\n newOrder.splice(newIndex, 0, active.id);\n\n if (orderType === 'userViewsOrder') {\n searchDispatch({\n type: SearchActionTypes.SET_USER_VIEWS_ORDER,\n userViewsOrder: newOrder,\n });\n } else {\n searchDispatch({\n type: SearchActionTypes.SET_SHARED_VIEWS_ORDER,\n sharedViewsOrder: newOrder,\n });\n }\n\n await updateViewsOrder({\n key: keyToUpdate,\n value: newOrder,\n global: false,\n });\n };\n\n userViews.sort(_sortViewFunction(searchState.userViewsOrder));\n sharedViews.sort(_sortViewFunction(searchState.sharedViewsOrder));\n\n const handleHide = () => {\n searchDispatch({type: SearchActionTypes.TOGGLE_SIDEBAR});\n };\n\n return (\n <Wrapper>\n {editView && (\n <EditView\n view={editView}\n visible={!!editView}\n onClose={_closeModal}\n libraryId={searchState.library.id}\n />\n )}\n <Header>\n <span>{t('view.views')}</span>\n <Button onClick={handleHide} icon={<FontAwesomeIcon icon={faAngleLeft} />}></Button>\n </Header>\n <SearchWrapper>\n <Input.Search placeholder={t('view.search')} onSearch={_handleSearchSubmit} />\n </SearchWrapper>\n\n <DndContext collisionDetection={closestCenter} onDragEnd={handleDragEnd}>\n <SubHeader>{t('view.shared-views')}</SubHeader>\n <SortableContext items={sharedViews.map(v => v.id)} strategy={verticalListSortingStrategy}>\n <Views>\n {sharedViews.map(view => (\n <View key={view.id} view={view} onEdit={() => _showModal(view)} />\n ))}\n </Views>\n </SortableContext>\n <SubHeader>\n {t('view.my-views')}\n <CustomBadge count={userViews.length} />\n </SubHeader>\n <SortableContext items={userViews.map(v => v.id)} strategy={verticalListSortingStrategy}>\n <Views>\n {userViews.map(view => (\n <View key={view.id} view={view} onEdit={() => _showModal(view)} />\n ))}\n </Views>\n </SortableContext>\n </DndContext>\n </Wrapper>\n );\n}\n\nexport default ViewPanel;\n"]}
|
|
@@ -7,7 +7,8 @@ import { SUBSCRIPTION_NOTIFICATION_DURATION } from '../../../constants';
|
|
|
7
7
|
import { useSharedTranslation } from '../../../hooks/useSharedTranslation';
|
|
8
8
|
import { KitButton, KitSpace, KitNotification, KitTypography } from 'aristid-ds';
|
|
9
9
|
import dayjs from 'dayjs';
|
|
10
|
-
import {
|
|
10
|
+
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
11
|
+
import { faDownload } from '@fortawesome/free-solid-svg-icons';
|
|
11
12
|
export const useNotificationsSubscription = () => {
|
|
12
13
|
const { t } = useSharedTranslation();
|
|
13
14
|
return useNotificationSubscription({
|
|
@@ -23,7 +24,7 @@ export const useNotificationsSubscription = () => {
|
|
|
23
24
|
description: message,
|
|
24
25
|
messageExtra: (_jsx(KitTypography.Text, { size: "fontSize7", children: dayjs.unix(date).format('HH:mm DD/MM/YYYY') })),
|
|
25
26
|
duration: SUBSCRIPTION_NOTIFICATION_DURATION,
|
|
26
|
-
footer: (_jsxs(KitSpace, { direction: "horizontal", size: "xs", children: [attachments?.map(attachment => (_jsx(KitButton, { type: "secondary", onClick: () => window.open(attachment.url, '_blank'), icon: _jsx(
|
|
27
|
+
footer: (_jsxs(KitSpace, { direction: "horizontal", size: "xs", children: [attachments?.map(attachment => (_jsx(KitButton, { type: "secondary", onClick: () => window.open(attachment.url, '_blank'), icon: _jsx(FontAwesomeIcon, { icon: faDownload }), children: t('global.download') }, attachment.url))), relatedEntities?.map(relatedEntity => (_jsx(KitButton, { type: "secondary", onClick: () => {
|
|
27
28
|
window.location.href = relatedEntity.url;
|
|
28
29
|
}, children: t('global.show') }, relatedEntity.url)))] })),
|
|
29
30
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNotificationSubscription.js","sourceRoot":"","sources":["../../../../src/components/Notifications/hooks/useNotificationSubscription.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,2BAA2B,EAAC,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAC,kCAAkC,EAAC,MAAM,eAAe,CAAC;AACjE,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,aAAa,EAAC,MAAM,YAAY,CAAC;AAC/E,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,UAAU,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"useNotificationSubscription.js","sourceRoot":"","sources":["../../../../src/components/Notifications/hooks/useNotificationSubscription.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,2BAA2B,EAAC,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAC,kCAAkC,EAAC,MAAM,eAAe,CAAC;AACjE,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,aAAa,EAAC,MAAM,YAAY,CAAC;AAC/E,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAC,UAAU,EAAC,MAAM,mCAAmC,CAAC;AAE7D,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,EAAE;IAC7C,MAAM,EAAC,CAAC,EAAC,GAAG,oBAAoB,EAAE,CAAC;IACnC,OAAO,2BAA2B,CAAC;QAC/B,MAAM,EAAE,CAAC,EAAC,IAAI,EAAC,EAAE,EAAE;YACf,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;gBACnC,OAAO;YACX,CAAC;YACD,MAAM,EAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,EAAC,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;YAE3F,MAAM,oBAAoB,GAAG,OAAO,eAAe,CAAC,KAAK,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;YAE3F,eAAe,CAAC,oBAAoB,CAAC,CAAC;gBAClC,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,KAAK;gBACd,WAAW,EAAE,OAAO;gBACpB,YAAY,EAAE,CACV,KAAC,aAAa,CAAC,IAAI,IAAC,IAAI,EAAC,WAAW,YAC/B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,GAC3B,CACxB;gBACD,QAAQ,EAAE,kCAAkC;gBAC5C,MAAM,EAAE,CACJ,MAAC,QAAQ,IAAC,SAAS,EAAC,YAAY,EAAC,IAAI,EAAC,IAAI,aACrC,WAAW,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAC5B,KAAC,SAAS,IAEN,IAAI,EAAC,WAAW,EAChB,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,EACpD,IAAI,EAAE,KAAC,eAAe,IAAC,IAAI,EAAE,UAAU,GAAI,YAE1C,CAAC,CAAC,iBAAiB,CAAC,IALhB,UAAU,CAAC,GAAG,CAMX,CACf,CAAC,EACD,eAAe,EAAE,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CACnC,KAAC,SAAS,IAEN,IAAI,EAAC,WAAW,EAChB,OAAO,EAAE,GAAG,EAAE;gCACV,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC;4BAC7C,CAAC,YAEA,CAAC,CAAC,aAAa,CAAC,IANZ,aAAa,CAAC,GAAG,CAOd,CACf,CAAC,IACK,CACd;aACJ,CAAC,CAAC;QACP,CAAC;KACJ,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,eAAe,4BAA4B,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 {useNotificationSubscription} from '_ui/_gqlTypes';\nimport {SUBSCRIPTION_NOTIFICATION_DURATION} from '_ui/constants';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {KitButton, KitSpace, KitNotification, KitTypography} from 'aristid-ds';\nimport dayjs from 'dayjs';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {faDownload} from '@fortawesome/free-solid-svg-icons';\n\nexport const useNotificationsSubscription = () => {\n const {t} = useSharedTranslation();\n return useNotificationSubscription({\n onData: ({data}) => {\n if (!data?.data?.notification?.title) {\n return;\n }\n const {level, title, message, attachments, relatedEntities, date} = data.data.notification;\n\n const kitNotificationLevel = typeof KitNotification[level] === 'function' ? level : 'info';\n\n KitNotification[kitNotificationLevel]({\n closable: true,\n message: title,\n description: message,\n messageExtra: (\n <KitTypography.Text size=\"fontSize7\">\n {dayjs.unix(date).format('HH:mm DD/MM/YYYY')}\n </KitTypography.Text>\n ),\n duration: SUBSCRIPTION_NOTIFICATION_DURATION,\n footer: (\n <KitSpace direction=\"horizontal\" size=\"xs\">\n {attachments?.map(attachment => (\n <KitButton\n key={attachment.url}\n type=\"secondary\"\n onClick={() => window.open(attachment.url, '_blank')}\n icon={<FontAwesomeIcon icon={faDownload} />}\n >\n {t('global.download')}\n </KitButton>\n ))}\n {relatedEntities?.map(relatedEntity => (\n <KitButton\n key={relatedEntity.url}\n type=\"secondary\"\n onClick={() => {\n window.location.href = relatedEntity.url;\n }}\n >\n {t('global.show')}\n </KitButton>\n ))}\n </KitSpace>\n ),\n });\n },\n });\n};\n\nexport default useNotificationsSubscription;\n"]}
|
|
@@ -29,12 +29,12 @@ const Container = styled.div `
|
|
|
29
29
|
`;
|
|
30
30
|
const Content = styled.div `
|
|
31
31
|
grid-area: content;
|
|
32
|
-
padding: 24px;
|
|
32
|
+
padding: ${props => (props.$removePadding ? 'unset' : '24px')};
|
|
33
33
|
overflow-x: hidden;
|
|
34
34
|
overflow-y: scroll;
|
|
35
35
|
border-right: ${props => props.$shouldUseLayoutWithSidebar ? '1px solid var(--general-utilities-border)' : 'none'};
|
|
36
36
|
`;
|
|
37
|
-
export const EditRecord = ({ antdForm, formId, isFormCreationMode, formElementId, record, library: libraryId, onCreate, valuesVersion, enableSidebar = false, showSidebar = false, sidebarContainer, containerStyle, withInfoButton, }) => {
|
|
37
|
+
export const EditRecord = ({ antdForm, formId, isFormCreationMode, formElementId, record, library: libraryId, onCreate, valuesVersion, enableSidebar = false, showSidebar = false, sidebarContainer, containerStyle, withInfoButton, removePadding = false, }) => {
|
|
38
38
|
const [state, dispatch] = useReducer(editRecordReducer, {
|
|
39
39
|
...initialState,
|
|
40
40
|
record,
|
|
@@ -162,6 +162,6 @@ export const EditRecord = ({ antdForm, formId, isFormCreationMode, formElementId
|
|
|
162
162
|
return saveValues(record, valuesToSave, version, true);
|
|
163
163
|
};
|
|
164
164
|
const shouldUseLayoutWithSidebar = state.enableSidebar && state.isOpenSidebar && sidebarContainer === undefined;
|
|
165
|
-
return (_jsx(ErrorBoundary, { children: _jsx(EditRecordReducerContext.Provider, { value: { state, dispatch }, children: _jsxs(Container, { "$shouldUseLayoutWithSidebar": shouldUseLayoutWithSidebar, style: containerStyle, children: [_jsx(EditRecordButtons, {}), _jsx(Content, { "$shouldUseLayoutWithSidebar": shouldUseLayoutWithSidebar, children: permissionsLoading ? (_jsx(EditRecordSkeleton, { rows: 5 })) : canEdit ? (_jsx(EditRecordContent, { antdForm: antdForm, formId: formId, isFormCreationMode: isFormCreationMode, formElementId: formElementId, record: record, library: libraryId, onRecordSubmit: _handleRecordSubmit, onValueSubmit: _handleValueSubmit, onValueDelete: deleteValue, onDeleteMultipleValues: _handleDeleteAllValues, readonly: isReadOnly })) : (_jsx(ErrorDisplay, { type: ErrorDisplayTypes.PERMISSION_ERROR, showActionButton: false })) }), _jsx(EditRecordSidebar, { onMetadataSubmit: _handleMetadataSubmit, sidebarContainer: sidebarContainer })] }) }) }));
|
|
165
|
+
return (_jsx(ErrorBoundary, { children: _jsx(EditRecordReducerContext.Provider, { value: { state, dispatch }, children: _jsxs(Container, { "$shouldUseLayoutWithSidebar": shouldUseLayoutWithSidebar, style: containerStyle, children: [_jsx(EditRecordButtons, {}), _jsx(Content, { "$shouldUseLayoutWithSidebar": shouldUseLayoutWithSidebar, "$removePadding": removePadding, children: permissionsLoading ? (_jsx(EditRecordSkeleton, { rows: 5 })) : canEdit ? (_jsx(EditRecordContent, { antdForm: antdForm, formId: formId, isFormCreationMode: isFormCreationMode, formElementId: formElementId, record: record, library: libraryId, onRecordSubmit: _handleRecordSubmit, onValueSubmit: _handleValueSubmit, onValueDelete: deleteValue, onDeleteMultipleValues: _handleDeleteAllValues, readonly: isReadOnly })) : (_jsx(ErrorDisplay, { type: ErrorDisplayTypes.PERMISSION_ERROR, showActionButton: false })) }), _jsx(EditRecordSidebar, { onMetadataSubmit: _handleMetadataSubmit, sidebarContainer: sidebarContainer })] }) }) }));
|
|
166
166
|
};
|
|
167
167
|
//# sourceMappingURL=EditRecord.js.map
|