@leav/ui 1.6.0 → 1.7.0-178015c1
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/README.md +13 -12
- package/dist/__mocks__/react-i18next.d.ts +1 -1
- package/dist/_gqlTypes/index.d.ts +1006 -686
- package/dist/_gqlTypes/index.js +167 -43
- package/dist/_gqlTypes/index.js.map +1 -1
- package/dist/_queries/attributes/attributeDetailsFragment.js +5 -0
- package/dist/_queries/attributes/attributeDetailsFragment.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/reducer/__mocks__/attributesSelectionListStateContext.d.ts +1 -1
- package/dist/components/AttributesSelectionList/sharedComponents.d.ts +159 -153
- package/dist/components/Explorer/DataView.d.ts +2 -0
- package/dist/components/Explorer/DataView.js +6 -3
- package/dist/components/Explorer/DataView.js.map +1 -1
- package/dist/components/Explorer/Explorer.d.ts +2 -0
- package/dist/components/Explorer/Explorer.js +7 -5
- 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/_queries/useExplorerData.d.ts +7 -7
- package/dist/components/Explorer/_queries/useExplorerData.js +19 -7
- package/dist/components/Explorer/_queries/useExplorerData.js.map +1 -1
- package/dist/components/Explorer/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/edit-attribute/EditTreeAttributeValueLine.d.ts +2 -4
- package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValueLine.js +18 -16
- package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValueLine.js.map +1 -1
- package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValuesMapping.js +2 -2
- package/dist/components/Explorer/actions-mass/edit-attribute/EditTreeAttributeValuesMapping.js.map +1 -1
- package/dist/components/Explorer/actions-mass/edit-attribute/useListEditableAttributeHook.js +9 -1
- package/dist/components/Explorer/actions-mass/edit-attribute/useListEditableAttributeHook.js.map +1 -1
- package/dist/components/Explorer/actions-mass/edit-attribute/useListTreeAttributeValuesHook.d.ts +10 -3
- package/dist/components/Explorer/actions-mass/edit-attribute/useListTreeAttributeValuesHook.js +16 -6
- package/dist/components/Explorer/actions-mass/edit-attribute/useListTreeAttributeValuesHook.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/Explorer/manage-view-settings/store-view-settings/viewSettingsReducer.js.map +1 -1
- package/dist/components/Explorer/useSearchInput.js +6 -2
- package/dist/components/Explorer/useSearchInput.js.map +1 -1
- package/dist/components/Filters/FiltersProvider.d.ts +2 -2
- package/dist/components/Filters/FiltersProvider.js.map +1 -1
- package/dist/components/Filters/_types.d.ts +3 -0
- package/dist/components/Filters/_types.js.map +1 -1
- package/dist/components/Filters/context/filtersReducer.js +7 -4
- package/dist/components/Filters/context/filtersReducer.js.map +1 -1
- package/dist/components/Filters/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/antdUtils.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/hooks/__mocks__/useDeleteValueMutation.d.ts +1 -1
- package/dist/components/RecordEdition/EditRecordContent/hooks/__mocks__/useSaveValueMutation.d.ts +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/LinkField.d.ts +1 -11
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/LinkField.js +8 -95
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/LinkField.js.map +1 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/_types.d.ts +8 -0
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/_types.js +2 -0
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/_types.js.map +1 -0
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/explorer/LinkFieldExplorer.d.ts +6 -0
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/explorer/LinkFieldExplorer.js +77 -0
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/explorer/LinkFieldExplorer.js.map +1 -0
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/{link-record → explorer/link-record}/useExplorerLinkRecords.d.ts +5 -7
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/{link-record → explorer/link-record}/useExplorerLinkRecords.js +3 -10
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/explorer/link-record/useExplorerLinkRecords.js.map +1 -0
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/{link-record → explorer/link-record}/useLinkRecords.d.ts +5 -6
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/explorer/link-record/useLinkRecords.js +98 -0
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/explorer/link-record/useLinkRecords.js.map +1 -0
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/{ExplorerWrapper.d.ts → InputExtraAlignLeft.d.ts} +54 -52
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/{link-record/ActionButton.js → shared/InputExtraAlignLeft.js} +4 -4
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/InputExtraAlignLeft.js.map +1 -0
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/InputWrapper.d.ts +3 -0
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/InputWrapper.js +31 -0
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/InputWrapper.js.map +1 -0
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/Wrapper.d.ts +3 -0
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/Wrapper.js +8 -0
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/Wrapper.js.map +1 -0
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/LinkFieldTags.d.ts +3 -0
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/LinkFieldTags.js +57 -0
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/LinkFieldTags.js.map +1 -0
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/link-record/useLinkRecord.d.ts +16 -0
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/link-record/useLinkRecord.js +82 -0
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/link-record/useLinkRecord.js.map +1 -0
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/unlink-record/useUnlinkRecord.d.ts +19 -0
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/unlink-record/useUnlinkRecord.js +43 -0
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/tag/unlink-record/useUnlinkRecord.js.map +1 -0
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/unlink-all-records/useUnlinkAllRecords.d.ts +16 -0
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/unlink-all-records/useUnlinkAllRecords.js +27 -0
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/unlink-all-records/useUnlinkAllRecords.js.map +1 -0
- 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 +3 -1
- package/dist/hooks/useIFrameMessenger/messageHandlers.js +16 -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 +32 -2
- package/dist/hooks/useIFrameMessenger/types.js.map +1 -1
- package/dist/hooks/useIFrameMessenger/useIFrameMessenger.d.ts +2 -0
- package/dist/hooks/useIFrameMessenger/useIFrameMessenger.js +16 -2
- package/dist/hooks/useIFrameMessenger/useIFrameMessenger.js.map +1 -1
- package/dist/hooks/useIFrameMessengerClient/iFrameMessengerClientContext.d.ts +2 -0
- package/dist/hooks/useIFrameMessengerClient/useIFrameMessengerClient.d.ts +2 -0
- package/dist/locales/en/shared.json +18 -3
- package/dist/locales/fr/shared.json +18 -3
- package/package.json +40 -42
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/link-record/ActionButton.d.ts +0 -3
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/link-record/ActionButton.js.map +0 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/link-record/useExplorerLinkRecords.js.map +0 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/link-record/useLinkRecords.js +0 -100
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/link-record/useLinkRecords.js.map +0 -1
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/ExplorerWrapper.js +0 -13
- package/dist/components/RecordEdition/EditRecordContent/uiElements/LinkField/shared/ExplorerWrapper.js.map +0 -1
|
@@ -108,9 +108,39 @@ const _generateConditionsFromMultipleValues = (filter) => {
|
|
|
108
108
|
});
|
|
109
109
|
return filtersWithOperators;
|
|
110
110
|
};
|
|
111
|
+
const _addEmptyCondition = (baseConditions, filter) => {
|
|
112
|
+
if (!filter.withEmptyValues) {
|
|
113
|
+
return baseConditions;
|
|
114
|
+
}
|
|
115
|
+
const hasValue = filter.value !== null &&
|
|
116
|
+
filter.value !== undefined &&
|
|
117
|
+
(!Array.isArray(filter.value) || filter.value.length > 0);
|
|
118
|
+
// patch because field contains multiple informations & can be empty
|
|
119
|
+
const field = (Array.isArray(filter.field) ? filter.field[0] : filter.field) || filter.attribute.id;
|
|
120
|
+
const emptyCondition = {
|
|
121
|
+
field,
|
|
122
|
+
condition: RecordFilterCondition.IS_EMPTY,
|
|
123
|
+
value: null,
|
|
124
|
+
};
|
|
125
|
+
if (!hasValue) {
|
|
126
|
+
return [emptyCondition];
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
return [
|
|
130
|
+
{ operator: RecordFilterOperator.OPEN_BRACKET },
|
|
131
|
+
...baseConditions,
|
|
132
|
+
{ operator: RecordFilterOperator.OR },
|
|
133
|
+
emptyCondition,
|
|
134
|
+
{ operator: RecordFilterOperator.CLOSE_BRACKET },
|
|
135
|
+
];
|
|
136
|
+
}
|
|
137
|
+
};
|
|
111
138
|
export const prepareFiltersForRequest = (filters, filtersOperator, valuesList) => {
|
|
112
139
|
const interleaveFilter = interleaveElement({ operator: filtersOperator === 'OR' ? RecordFilterOperator.OR : RecordFilterOperator.AND }, filters
|
|
113
140
|
.filter(filter => {
|
|
141
|
+
if (filter.withEmptyValues) {
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
114
144
|
if (isUIFilterThrough(filter)) {
|
|
115
145
|
return (filter.subField &&
|
|
116
146
|
filter.subCondition &&
|
|
@@ -140,15 +170,17 @@ export const prepareFiltersForRequest = (filters, filtersOperator, valuesList) =
|
|
|
140
170
|
//@ts-ignore typscript does not recognize filter as a UIFilter
|
|
141
171
|
if (isUIFilterValueList(filter) || isUIFilterTree(filter)) {
|
|
142
172
|
if (filter.condition && nullValueConditions.includes(filter.condition)) {
|
|
143
|
-
|
|
173
|
+
const baseConditions = [
|
|
144
174
|
{
|
|
145
175
|
field: Array.isArray(filter.field) ? filter.field[0] : filter.field,
|
|
146
176
|
condition: filter.condition,
|
|
147
177
|
value: null,
|
|
148
178
|
},
|
|
149
179
|
];
|
|
180
|
+
return _addEmptyCondition(baseConditions, filter);
|
|
150
181
|
}
|
|
151
|
-
|
|
182
|
+
const baseConditions = _generateConditionsFromMultipleValues(filter);
|
|
183
|
+
return _addEmptyCondition(baseConditions, filter);
|
|
152
184
|
}
|
|
153
185
|
if (isUIFilterStandard(filter)) {
|
|
154
186
|
switch (filter.attribute.format) {
|
|
@@ -160,13 +192,14 @@ export const prepareFiltersForRequest = (filters, filtersOperator, valuesList) =
|
|
|
160
192
|
break;
|
|
161
193
|
}
|
|
162
194
|
}
|
|
163
|
-
|
|
195
|
+
const baseConditions = [
|
|
164
196
|
{
|
|
165
197
|
field: filter.field,
|
|
166
198
|
condition: filter.condition,
|
|
167
199
|
value: filter.value,
|
|
168
200
|
},
|
|
169
201
|
];
|
|
202
|
+
return _addEmptyCondition(baseConditions, filter);
|
|
170
203
|
}));
|
|
171
204
|
return [
|
|
172
205
|
...interleaveFilter,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepareFiltersForRequest.js","sourceRoot":"","sources":["../../../src/components/Filters/prepareFiltersForRequest.ts"],"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 dayjs from 'dayjs';\nimport {AttributeFormat, RecordFilterCondition, type RecordFilterInput, RecordFilterOperator} from '_ui/_gqlTypes';\nimport {interleaveElement} from '_ui/_utils/interleaveElement';\nimport {AttributeConditionFilter} from '_ui/types';\nimport {\n type UIFilter,\n type IUIFilterStandard,\n type IUIFilterTree,\n isUIFilterStandard,\n isUIFilterThrough,\n isUIFilterTree,\n isUIFilterValueList,\n type IUIFilterValueList,\n type FiltersOperator,\n isUIFilterLinkWithValueList,\n} from './_types';\nimport {nullValueConditions} from './conditionsHelper';\n\nexport const dateValuesSeparator = '\\n';\n\nconst _getDateAtNoon = (date: number): string => dayjs.unix(Number(date)).add(12, 'hour').unix().toString();\n\nconst _getDateRequestFilters = ({field, condition, value}: IUIFilterStandard): RecordFilterInput[] => {\n switch (condition) {\n case RecordFilterCondition.BETWEEN:\n const [from, to] = value!.split(dateValuesSeparator);\n return [\n {\n field,\n condition,\n value: JSON.stringify({\n from,\n to,\n }),\n },\n ];\n case RecordFilterCondition.NOT_EQUAL:\n return [\n {\n field,\n condition: RecordFilterCondition.NOT_EQUAL,\n value: _getDateAtNoon(Number(value)),\n },\n ];\n case RecordFilterCondition.EQUAL:\n return [\n {\n field,\n condition,\n value: _getDateAtNoon(Number(value)),\n },\n ];\n default:\n return [\n {\n field,\n condition,\n value,\n },\n ];\n }\n};\n\nconst _getBooleanRequestFilters = (filter: IUIFilterStandard): RecordFilterInput[] => {\n if (filter.value === 'false') {\n return [\n {\n field: filter.field,\n condition: AttributeConditionFilter.NOT_EQUAL,\n value: 'true',\n },\n ];\n }\n\n return [{field: filter.field, condition: filter.condition, value: filter.value}];\n};\n\nconst _addValuesListForFilters = (valuesList: string[]): RecordFilterInput[] => [\n {operator: RecordFilterOperator.OPEN_BRACKET},\n ...(interleaveElement(\n {operator: RecordFilterOperator.OR},\n valuesList.map(value => [\n {\n field: 'id',\n condition: AttributeConditionFilter.EQUAL,\n value,\n },\n ]),\n ) as RecordFilterInput[]),\n {operator: RecordFilterOperator.CLOSE_BRACKET},\n];\n\nconst _generateConditionsFromMultipleValues = (filter: IUIFilterTree | IUIFilterValueList): RecordFilterInput[] => {\n if (!filter.value || filter.value.length === 0) {\n return [];\n }\n const filtersWithOperators: RecordFilterInput[] = [];\n filter.value.forEach((recordId, idx) => {\n if (idx === 0 && filter.value && filter.value.length > 1) {\n filtersWithOperators.push({operator: RecordFilterOperator.OPEN_BRACKET});\n }\n if (isUIFilterTree(filter) && filter.nodes && filter.nodes.length > 0) {\n filtersWithOperators.push({\n value: recordId,\n condition: filter.condition,\n field: `${filter.attribute.id}.${filter.nodes[0].libraryId}.id`,\n });\n } else {\n filtersWithOperators.push({\n value: recordId,\n condition: filter.condition,\n field: Array.isArray(filter.field) ? filter.field[idx] : filter.field,\n });\n }\n if (filter.value && idx < filter.value.length - 1) {\n filtersWithOperators.push({\n operator:\n filter.condition === RecordFilterCondition.NOT_EQUAL\n ? RecordFilterOperator.AND\n : RecordFilterOperator.OR,\n });\n }\n if (filter.value && filter.value.length > 1 && idx >= filter.value.length - 1) {\n filtersWithOperators.push({operator: RecordFilterOperator.CLOSE_BRACKET});\n }\n });\n return filtersWithOperators;\n};\n\nexport const prepareFiltersForRequest = (\n filters: UIFilter[],\n filtersOperator?: FiltersOperator,\n valuesList?: string[],\n): RecordFilterInput[] => {\n const interleaveFilter = interleaveElement(\n {operator: filtersOperator === 'OR' ? RecordFilterOperator.OR : RecordFilterOperator.AND},\n filters\n .filter(filter => {\n if (isUIFilterThrough(filter)) {\n return (\n filter.subField &&\n filter.subCondition &&\n (filter.value !== null || nullValueConditions.includes(filter.subCondition))\n );\n }\n\n if (isUIFilterValueList(filter)) {\n return (\n (!!filter.condition && filter.value?.length) ||\n (filter.condition && nullValueConditions.includes(filter.condition))\n );\n }\n\n return filter.value !== null || (filter.condition && nullValueConditions.includes(filter.condition));\n })\n .map(filter => {\n if (isUIFilterTree(filter)) {\n return filter;\n }\n const condition =\n filter.condition === AttributeConditionFilter.THROUGH ? filter.subCondition : filter.condition;\n let field =\n filter.condition === AttributeConditionFilter.THROUGH\n ? `${filter.field}.${filter.subField}`\n : filter.field;\n\n // When a link attribute has a values list, we must filter on the linked record id\n if (isUIFilterLinkWithValueList(filter) && typeof field === 'string' && !field.endsWith('.id')) {\n field = `${field}.id`;\n }\n\n return {...filter, condition, field};\n })\n .map(filter => {\n //@ts-ignore typscript does not recognize filter as a UIFilter\n if (isUIFilterValueList(filter) || isUIFilterTree(filter)) {\n if (filter.condition && nullValueConditions.includes(filter.condition)) {\n return [\n {\n field: Array.isArray(filter.field) ? filter.field[0] : filter.field,\n condition: filter.condition,\n value: null,\n },\n ];\n }\n return _generateConditionsFromMultipleValues(filter as IUIFilterTree | IUIFilterValueList);\n }\n\n if (isUIFilterStandard(filter as UIFilter)) {\n switch (filter.attribute.format) {\n case AttributeFormat.date:\n return _getDateRequestFilters(filter as IUIFilterStandard);\n case AttributeFormat.boolean:\n return _getBooleanRequestFilters(filter as IUIFilterStandard);\n default:\n break;\n }\n }\n return [\n {\n field: filter.field as string,\n condition: filter.condition,\n value: filter.value,\n },\n ];\n }),\n );\n\n return [\n ...interleaveFilter,\n ...(interleaveFilter.length > 0 && valuesList ? [{operator: RecordFilterOperator.AND}] : []),\n ...(valuesList ? _addValuesListForFilters(valuesList) : []),\n ];\n};\n"]}
|
|
1
|
+
{"version":3,"file":"prepareFiltersForRequest.js","sourceRoot":"","sources":["../../../src/components/Filters/prepareFiltersForRequest.ts"],"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 dayjs from 'dayjs';\nimport {AttributeFormat, RecordFilterCondition, type RecordFilterInput, RecordFilterOperator} from '_ui/_gqlTypes';\nimport {interleaveElement} from '_ui/_utils/interleaveElement';\nimport {AttributeConditionFilter} from '_ui/types';\nimport {\n type UIFilter,\n type IUIFilterStandard,\n type IUIFilterTree,\n isUIFilterStandard,\n isUIFilterThrough,\n isUIFilterTree,\n isUIFilterValueList,\n type IUIFilterValueList,\n type FiltersOperator,\n isUIFilterLinkWithValueList,\n} from './_types';\nimport {nullValueConditions} from './conditionsHelper';\n\nexport const dateValuesSeparator = '\\n';\n\nconst _getDateAtNoon = (date: number): string => dayjs.unix(Number(date)).add(12, 'hour').unix().toString();\n\nconst _getDateRequestFilters = ({field, condition, value}: IUIFilterStandard): RecordFilterInput[] => {\n switch (condition) {\n case RecordFilterCondition.BETWEEN:\n const [from, to] = value!.split(dateValuesSeparator);\n return [\n {\n field,\n condition,\n value: JSON.stringify({\n from,\n to,\n }),\n },\n ];\n case RecordFilterCondition.NOT_EQUAL:\n return [\n {\n field,\n condition: RecordFilterCondition.NOT_EQUAL,\n value: _getDateAtNoon(Number(value)),\n },\n ];\n case RecordFilterCondition.EQUAL:\n return [\n {\n field,\n condition,\n value: _getDateAtNoon(Number(value)),\n },\n ];\n default:\n return [\n {\n field,\n condition,\n value,\n },\n ];\n }\n};\n\nconst _getBooleanRequestFilters = (filter: IUIFilterStandard): RecordFilterInput[] => {\n if (filter.value === 'false') {\n return [\n {\n field: filter.field,\n condition: AttributeConditionFilter.NOT_EQUAL,\n value: 'true',\n },\n ];\n }\n\n return [{field: filter.field, condition: filter.condition, value: filter.value}];\n};\n\nconst _addValuesListForFilters = (valuesList: string[]): RecordFilterInput[] => [\n {operator: RecordFilterOperator.OPEN_BRACKET},\n ...(interleaveElement(\n {operator: RecordFilterOperator.OR},\n valuesList.map(value => [\n {\n field: 'id',\n condition: AttributeConditionFilter.EQUAL,\n value,\n },\n ]),\n ) as RecordFilterInput[]),\n {operator: RecordFilterOperator.CLOSE_BRACKET},\n];\n\nconst _generateConditionsFromMultipleValues = (filter: IUIFilterTree | IUIFilterValueList): RecordFilterInput[] => {\n if (!filter.value || filter.value.length === 0) {\n return [];\n }\n const filtersWithOperators: RecordFilterInput[] = [];\n filter.value.forEach((recordId, idx) => {\n if (idx === 0 && filter.value && filter.value.length > 1) {\n filtersWithOperators.push({operator: RecordFilterOperator.OPEN_BRACKET});\n }\n if (isUIFilterTree(filter) && filter.nodes && filter.nodes.length > 0) {\n filtersWithOperators.push({\n value: recordId,\n condition: filter.condition,\n field: `${filter.attribute.id}.${filter.nodes[0].libraryId}.id`,\n });\n } else {\n filtersWithOperators.push({\n value: recordId,\n condition: filter.condition,\n field: Array.isArray(filter.field) ? filter.field[idx] : filter.field,\n });\n }\n if (filter.value && idx < filter.value.length - 1) {\n filtersWithOperators.push({\n operator:\n filter.condition === RecordFilterCondition.NOT_EQUAL\n ? RecordFilterOperator.AND\n : RecordFilterOperator.OR,\n });\n }\n if (filter.value && filter.value.length > 1 && idx >= filter.value.length - 1) {\n filtersWithOperators.push({operator: RecordFilterOperator.CLOSE_BRACKET});\n }\n });\n return filtersWithOperators;\n};\n\nconst _addEmptyCondition = (baseConditions: RecordFilterInput[], filter: UIFilter): RecordFilterInput[] => {\n if (!filter.withEmptyValues) {\n return baseConditions;\n }\n\n const hasValue =\n filter.value !== null &&\n filter.value !== undefined &&\n (!Array.isArray(filter.value) || filter.value.length > 0);\n\n // patch because field contains multiple informations & can be empty\n const field = (Array.isArray(filter.field) ? filter.field[0] : filter.field) || filter.attribute.id;\n const emptyCondition = {\n field,\n condition: RecordFilterCondition.IS_EMPTY,\n value: null,\n };\n\n if (!hasValue) {\n return [emptyCondition];\n } else {\n return [\n {operator: RecordFilterOperator.OPEN_BRACKET},\n ...baseConditions,\n {operator: RecordFilterOperator.OR},\n emptyCondition,\n {operator: RecordFilterOperator.CLOSE_BRACKET},\n ];\n }\n};\n\nexport const prepareFiltersForRequest = (\n filters: UIFilter[],\n filtersOperator?: FiltersOperator,\n valuesList?: string[],\n): RecordFilterInput[] => {\n const interleaveFilter = interleaveElement(\n {operator: filtersOperator === 'OR' ? RecordFilterOperator.OR : RecordFilterOperator.AND},\n filters\n .filter(filter => {\n if (filter.withEmptyValues) {\n return true;\n }\n\n if (isUIFilterThrough(filter)) {\n return (\n filter.subField &&\n filter.subCondition &&\n (filter.value !== null || nullValueConditions.includes(filter.subCondition))\n );\n }\n\n if (isUIFilterValueList(filter)) {\n return (\n (!!filter.condition && filter.value?.length) ||\n (filter.condition && nullValueConditions.includes(filter.condition))\n );\n }\n\n return filter.value !== null || (filter.condition && nullValueConditions.includes(filter.condition));\n })\n .map(filter => {\n if (isUIFilterTree(filter)) {\n return filter;\n }\n const condition =\n filter.condition === AttributeConditionFilter.THROUGH ? filter.subCondition : filter.condition;\n let field =\n filter.condition === AttributeConditionFilter.THROUGH\n ? `${filter.field}.${filter.subField}`\n : filter.field;\n\n // When a link attribute has a values list, we must filter on the linked record id\n if (isUIFilterLinkWithValueList(filter) && typeof field === 'string' && !field.endsWith('.id')) {\n field = `${field}.id`;\n }\n\n return {...filter, condition, field};\n })\n .map(filter => {\n //@ts-ignore typscript does not recognize filter as a UIFilter\n if (isUIFilterValueList(filter) || isUIFilterTree(filter)) {\n if (filter.condition && nullValueConditions.includes(filter.condition)) {\n const baseConditions = [\n {\n field: Array.isArray(filter.field) ? filter.field[0] : filter.field,\n condition: filter.condition,\n value: null,\n },\n ];\n return _addEmptyCondition(baseConditions, filter as IUIFilterTree | IUIFilterValueList);\n }\n const baseConditions = _generateConditionsFromMultipleValues(\n filter as IUIFilterTree | IUIFilterValueList,\n );\n return _addEmptyCondition(baseConditions, filter as IUIFilterTree | IUIFilterValueList);\n }\n\n if (isUIFilterStandard(filter as UIFilter)) {\n switch (filter.attribute.format) {\n case AttributeFormat.date:\n return _getDateRequestFilters(filter as IUIFilterStandard);\n case AttributeFormat.boolean:\n return _getBooleanRequestFilters(filter as IUIFilterStandard);\n default:\n break;\n }\n }\n const baseConditions = [\n {\n field: filter.field as string,\n condition: filter.condition,\n value: filter.value,\n },\n ];\n return _addEmptyCondition(baseConditions, filter as UIFilter);\n }),\n );\n\n return [\n ...interleaveFilter,\n ...(interleaveFilter.length > 0 && valuesList ? [{operator: RecordFilterOperator.AND}] : []),\n ...(valuesList ? _addValuesListForFilters(valuesList) : []),\n ];\n};\n"]}
|
|
@@ -343,6 +343,7 @@ export declare const useFilters: (pinFilters?: boolean) => {
|
|
|
343
343
|
value: string | null;
|
|
344
344
|
id: string;
|
|
345
345
|
hidden?: boolean | undefined;
|
|
346
|
+
withEmptyValues?: boolean;
|
|
346
347
|
formattedValue?: string | null;
|
|
347
348
|
} | {
|
|
348
349
|
attribute: {
|
|
@@ -686,6 +687,7 @@ export declare const useFilters: (pinFilters?: boolean) => {
|
|
|
686
687
|
value: string | null;
|
|
687
688
|
id: string;
|
|
688
689
|
hidden?: boolean | undefined;
|
|
690
|
+
withEmptyValues?: boolean;
|
|
689
691
|
formattedValue?: string | null;
|
|
690
692
|
} | {
|
|
691
693
|
attribute: {
|
|
@@ -1031,6 +1033,7 @@ export declare const useFilters: (pinFilters?: boolean) => {
|
|
|
1031
1033
|
value: string | null;
|
|
1032
1034
|
id: string;
|
|
1033
1035
|
hidden?: boolean | undefined;
|
|
1036
|
+
withEmptyValues?: boolean;
|
|
1034
1037
|
formattedValue?: string | null;
|
|
1035
1038
|
} | {
|
|
1036
1039
|
attribute: {
|
|
@@ -1374,6 +1377,7 @@ export declare const useFilters: (pinFilters?: boolean) => {
|
|
|
1374
1377
|
field: string | string[];
|
|
1375
1378
|
id: string;
|
|
1376
1379
|
hidden?: boolean | undefined;
|
|
1380
|
+
withEmptyValues?: boolean;
|
|
1377
1381
|
} | {
|
|
1378
1382
|
attribute: {
|
|
1379
1383
|
format: import("../../_gqlTypes").AttributeFormat;
|
|
@@ -1721,6 +1725,7 @@ export declare const useFilters: (pinFilters?: boolean) => {
|
|
|
1721
1725
|
field: string[];
|
|
1722
1726
|
id: string;
|
|
1723
1727
|
hidden?: boolean | undefined;
|
|
1728
|
+
withEmptyValues?: boolean;
|
|
1724
1729
|
};
|
|
1725
1730
|
isPinned: boolean;
|
|
1726
1731
|
}[];
|
|
@@ -69,6 +69,7 @@ export const useTransformFilters = () => {
|
|
|
69
69
|
format: attributeData.format,
|
|
70
70
|
valuesList: attributeData.valuesList,
|
|
71
71
|
},
|
|
72
|
+
withEmptyValues: filter.withEmptyValues ?? false,
|
|
72
73
|
};
|
|
73
74
|
acc.push(newFilter);
|
|
74
75
|
}
|
|
@@ -91,6 +92,7 @@ export const useTransformFilters = () => {
|
|
|
91
92
|
...filterAttributeBase,
|
|
92
93
|
format: attributeData.format,
|
|
93
94
|
},
|
|
95
|
+
withEmptyValues: filter.withEmptyValues ?? false,
|
|
94
96
|
};
|
|
95
97
|
acc.push(newFilter);
|
|
96
98
|
}
|
|
@@ -126,6 +128,7 @@ export const useTransformFilters = () => {
|
|
|
126
128
|
linkedLibrary: attributeData.linked_library,
|
|
127
129
|
valuesList: attributeData.valuesList,
|
|
128
130
|
},
|
|
131
|
+
withEmptyValues: filter.withEmptyValues ?? false,
|
|
129
132
|
};
|
|
130
133
|
acc.push(newFilter);
|
|
131
134
|
}
|
|
@@ -171,6 +174,7 @@ export const useTransformFilters = () => {
|
|
|
171
174
|
linkedTree: attributeData.linked_tree,
|
|
172
175
|
},
|
|
173
176
|
condition: filter.condition ?? RecordFilterCondition.EQUAL,
|
|
177
|
+
withEmptyValues: filter.withEmptyValues ?? false,
|
|
174
178
|
};
|
|
175
179
|
acc.push(newFilter);
|
|
176
180
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTransformFilters.js","sourceRoot":"","sources":["../../../src/components/Filters/useTransformFilters.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 {\n type AttributeDetailsLinkAttributeFragment,\n type AttributeDetailsTreeAttributeFragment,\n AttributeFormat,\n AttributeType,\n type ExplorerAttributesQuery,\n type ExplorerLinkAttributeQuery,\n type GetViewsListQuery,\n type LinkAttributeDetailsFragment,\n RecordFilterCondition,\n type StandardAttributeDetailsFragment,\n type ViewDetailsFilterFragment,\n} from '_ui/_gqlTypes';\nimport {\n type UIFilter,\n type IUIFilterBaseAttribute,\n type IUIFilterLink,\n type IUIFilterLinkValueList,\n type IUIFilterStandard,\n type IUIFilterStandardValueList,\n type IUIFilterThrough,\n type IUIFilterTree,\n type ValidFieldFilter,\n type ValidFieldFilterLinkValuesList,\n type ValidFieldFilterStandardValuesList,\n type ValidFieldFilterThrough,\n type ValidFilter,\n} from './_types';\nimport {ThroughConditionFilter} from '_ui/types';\nimport {isLinkAttribute, isStandardAttribute, isTreeAttribute} from '_ui/_utils/attributeType';\nimport {localizedTranslation} from '@leav/utils';\nimport {useLang} from '_ui/hooks';\nimport {valueListTextConditions} from './filter-items/filter-type/useConditionOptionsByType';\nimport dayjs from 'dayjs';\nimport {type TFunction} from 'i18next';\nimport {type ITreeFilters} from './context/useGetTreeFilters';\n\nconst _isValidFieldFilter = (filter: ViewDetailsFilterFragment | UIFilter): filter is ValidFieldFilter =>\n !!filter.field;\n\nconst _isValidFieldFilterThrough = (filter: ValidFilter): filter is ValidFieldFilterThrough =>\n filter.condition === ThroughConditionFilter.THROUGH && !!filter.subCondition && !!filter.subField;\n\nconst _isValidFieldFilterStandardValuesList = (\n filter: ValidFilter,\n attribute: NonNullable<ExplorerAttributesQuery['attributes']>['list'][number],\n): filter is ValidFieldFilterStandardValuesList & {attribute: StandardAttributeDetailsFragment} =>\n valueListTextConditions.includes(filter.condition) &&\n [AttributeType.simple, AttributeType.advanced].includes(attribute.type) &&\n 'valuesList' in attribute &&\n !!attribute.valuesList?.enable;\n\nconst _isValidFieldFilterLinkValuesList = (\n filter: ValidFilter,\n attribute: NonNullable<ExplorerAttributesQuery['attributes']>['list'][number],\n): filter is ValidFieldFilterLinkValuesList & {attribute: LinkAttributeDetailsFragment} =>\n valueListTextConditions.includes(filter.condition) &&\n [AttributeType.simple_link, AttributeType.advanced_link].includes(attribute.type) &&\n 'valuesList' in attribute &&\n !!attribute.valuesList?.enable;\n\ntype AttributeDetailsLinkAttributeWithPermissionsFragment = AttributeDetailsLinkAttributeFragment & {\n permissions: {\n access_attribute: boolean;\n };\n};\ntype AttributeDetailsTreeAttributeWithPermissionsFragment = AttributeDetailsTreeAttributeFragment & {\n permissions: {\n access_attribute: boolean;\n };\n};\n\nexport const isLinkAttributeDetails = (\n linkAttributeData: NonNullable<ExplorerLinkAttributeQuery['attributes']>['list'][number],\n): linkAttributeData is LinkAttributeDetailsFragment & {\n id: string;\n multiple_values: boolean;\n permissions: {\n access_attribute: boolean;\n edit_value: boolean;\n };\n} => 'linked_library' in linkAttributeData;\n\nexport type ValidFiltersArgument = GetViewsListQuery['views']['list'][number]['filters'] | UIFilter[];\n\nexport type AttributesById = Record<string, NonNullable<ExplorerAttributesQuery['attributes']>['list'][number]>;\n\nexport const useTransformFilters = () => {\n const {lang} = useLang();\n\n const toValidFilters = (filters: ValidFiltersArgument): ValidFilter[] =>\n (filters ?? []).reduce<ValidFilter[]>((acc, filter) => {\n if (!_isValidFieldFilter(filter)) {\n return acc;\n }\n const _isThroughFilter = filter.field.includes('.');\n\n if (_isThroughFilter) {\n const [field, subField] = filter.field.split('.');\n const throughFilter: ValidFieldFilterThrough = {\n field,\n subField,\n value: filter.value ?? null,\n hidden: filter.hidden ?? false,\n condition: ThroughConditionFilter.THROUGH,\n subCondition: filter.condition,\n };\n acc.push(throughFilter);\n } else {\n acc.push(filter);\n }\n\n return acc;\n }, []);\n\n const toUIFilters = ({\n filters,\n treeFilters,\n attributesDataById,\n t,\n }: {\n filters: ValidFilter[];\n treeFilters: ITreeFilters;\n attributesDataById: AttributesById;\n t: TFunction;\n }): UIFilter[] =>\n (filters ?? []).reduce<UIFilter[]>((acc, filter) => {\n if (!attributesDataById[filter.field]) {\n console.warn(`Attribute ${filter.field} from user view not found in database.`);\n return acc;\n }\n\n const filterAttributeBase: IUIFilterBaseAttribute = {\n id: attributesDataById[filter.field].id,\n label: localizedTranslation(attributesDataById[filter.field].label, lang),\n type: attributesDataById[filter.field].type,\n };\n\n // filter is standardFilter\n if (isStandardAttribute(filterAttributeBase.type)) {\n const attributeData = attributesDataById[filter.field];\n if (_isValidFieldFilterStandardValuesList(filter, attributeData)) {\n const newFilter: IUIFilterStandardValueList = {\n field: filter.field,\n // TODO : save filter values as string[] when filter and handle fields with libraries\n value: filter.value ? [filter.value] : [],\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n condition: (filter.condition as RecordFilterCondition) ?? null,\n attribute: {\n ...filterAttributeBase,\n format: attributeData.format!,\n valuesList: (attributeData as StandardAttributeDetailsFragment).valuesList!,\n },\n };\n acc.push(newFilter);\n } else {\n let formattedValue: string;\n if (attributeData.format === AttributeFormat.boolean && filter.value) {\n formattedValue = filter.value === 'true' ? t('explorer.true') : t('explorer.false');\n }\n\n if (attributeData.format === AttributeFormat.date && filter.value) {\n formattedValue = dayjs(filter.value).format('YYYY-MM-DD');\n }\n\n const newFilter: IUIFilterStandard = {\n field: filter.field,\n value: filter.value ?? null,\n formattedValue,\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n condition: (filter.condition as RecordFilterCondition) ?? null,\n attribute: {\n ...filterAttributeBase,\n format: attributeData.format!,\n },\n };\n acc.push(newFilter);\n }\n }\n\n if (isLinkAttribute(filterAttributeBase.type)) {\n const attributeData = attributesDataById[\n filter.field\n ] as AttributeDetailsLinkAttributeWithPermissionsFragment;\n if (_isValidFieldFilterThrough(filter)) {\n const newFilter: IUIFilterThrough = {\n field: filter.field,\n value: filter.value ?? null,\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n condition: filter.condition,\n attribute: {\n ...filterAttributeBase,\n linkedLibrary: attributeData.linked_library!,\n },\n subCondition: filter.subCondition ?? null,\n subField: filter.subField,\n };\n acc.push(newFilter);\n } else if (_isValidFieldFilterLinkValuesList(filter, attributeData)) {\n const newFilter: IUIFilterLinkValueList = {\n field: filter.field,\n // TODO : save filter values as string[] when filter and handle fields with libraries\n value: filter.value ? [filter.value] : [],\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n condition: filter.condition,\n attribute: {\n ...filterAttributeBase,\n linkedLibrary: attributeData.linked_library!,\n valuesList: (attributeData as LinkAttributeDetailsFragment).valuesList!,\n },\n };\n\n acc.push(newFilter);\n } else {\n const newFilter: IUIFilterLink = {\n field: filter.field,\n value: filter.value ?? null,\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n condition: filter.condition,\n attribute: {\n ...filterAttributeBase,\n linkedLibrary: attributeData.linked_library!,\n },\n };\n\n acc.push(newFilter);\n }\n }\n\n if (isTreeAttribute(filterAttributeBase.type) && !_isValidFieldFilterThrough(filter)) {\n const attributeData = attributesDataById[\n filter.field\n ] as AttributeDetailsTreeAttributeWithPermissionsFragment;\n const newFilter: IUIFilterTree = {\n field: [filter.field],\n // TODO : save filter values as string[] when tree filter and handle fields with libraries\n value: filter.value\n ? [filter.value]\n : treeFilters[filter.field]\n ? treeFilters[filter.field].map(tree => tree.value)\n : null,\n formattedValue: filter.value\n ? [filter.value]\n : treeFilters[filter.field]\n ? treeFilters[filter.field].map(tree => tree.label)\n : undefined,\n nodes: filter.value\n ? undefined\n : treeFilters[filter.field]\n ? treeFilters[filter.field].map(tree => ({libraryId: tree.libraryId, nodeId: tree.nodeId}))\n : undefined,\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n attribute: {\n ...filterAttributeBase,\n linkedTree: attributeData.linked_tree!,\n },\n condition: filter.condition ?? RecordFilterCondition.EQUAL,\n };\n acc.push(newFilter);\n }\n\n return acc;\n }, []);\n\n return {\n toValidFilters,\n toUIFilters,\n };\n};\n"]}
|
|
1
|
+
{"version":3,"file":"useTransformFilters.js","sourceRoot":"","sources":["../../../src/components/Filters/useTransformFilters.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 {\n type AttributeDetailsLinkAttributeFragment,\n type AttributeDetailsTreeAttributeFragment,\n AttributeFormat,\n AttributeType,\n type ExplorerAttributesQuery,\n type ExplorerLinkAttributeQuery,\n type GetViewsListQuery,\n type LinkAttributeDetailsFragment,\n RecordFilterCondition,\n type StandardAttributeDetailsFragment,\n type ViewDetailsFilterFragment,\n} from '_ui/_gqlTypes';\nimport {\n type UIFilter,\n type IUIFilterBaseAttribute,\n type IUIFilterLink,\n type IUIFilterLinkValueList,\n type IUIFilterStandard,\n type IUIFilterStandardValueList,\n type IUIFilterThrough,\n type IUIFilterTree,\n type ValidFieldFilter,\n type ValidFieldFilterLinkValuesList,\n type ValidFieldFilterStandardValuesList,\n type ValidFieldFilterThrough,\n type ValidFilter,\n} from './_types';\nimport {ThroughConditionFilter} from '_ui/types';\nimport {isLinkAttribute, isStandardAttribute, isTreeAttribute} from '_ui/_utils/attributeType';\nimport {localizedTranslation} from '@leav/utils';\nimport {useLang} from '_ui/hooks';\nimport {valueListTextConditions} from './filter-items/filter-type/useConditionOptionsByType';\nimport dayjs from 'dayjs';\nimport {type TFunction} from 'i18next';\nimport {type ITreeFilters} from './context/useGetTreeFilters';\n\nconst _isValidFieldFilter = (filter: ViewDetailsFilterFragment | UIFilter): filter is ValidFieldFilter =>\n !!filter.field;\n\nconst _isValidFieldFilterThrough = (filter: ValidFilter): filter is ValidFieldFilterThrough =>\n filter.condition === ThroughConditionFilter.THROUGH && !!filter.subCondition && !!filter.subField;\n\nconst _isValidFieldFilterStandardValuesList = (\n filter: ValidFilter,\n attribute: NonNullable<ExplorerAttributesQuery['attributes']>['list'][number],\n): filter is ValidFieldFilterStandardValuesList & {attribute: StandardAttributeDetailsFragment} =>\n valueListTextConditions.includes(filter.condition) &&\n [AttributeType.simple, AttributeType.advanced].includes(attribute.type) &&\n 'valuesList' in attribute &&\n !!attribute.valuesList?.enable;\n\nconst _isValidFieldFilterLinkValuesList = (\n filter: ValidFilter,\n attribute: NonNullable<ExplorerAttributesQuery['attributes']>['list'][number],\n): filter is ValidFieldFilterLinkValuesList & {attribute: LinkAttributeDetailsFragment} =>\n valueListTextConditions.includes(filter.condition) &&\n [AttributeType.simple_link, AttributeType.advanced_link].includes(attribute.type) &&\n 'valuesList' in attribute &&\n !!attribute.valuesList?.enable;\n\ntype AttributeDetailsLinkAttributeWithPermissionsFragment = AttributeDetailsLinkAttributeFragment & {\n permissions: {\n access_attribute: boolean;\n };\n};\ntype AttributeDetailsTreeAttributeWithPermissionsFragment = AttributeDetailsTreeAttributeFragment & {\n permissions: {\n access_attribute: boolean;\n };\n};\n\nexport const isLinkAttributeDetails = (\n linkAttributeData: NonNullable<ExplorerLinkAttributeQuery['attributes']>['list'][number],\n): linkAttributeData is LinkAttributeDetailsFragment & {\n id: string;\n multiple_values: boolean;\n permissions: {\n access_attribute: boolean;\n edit_value: boolean;\n };\n} => 'linked_library' in linkAttributeData;\n\nexport type ValidFiltersArgument = GetViewsListQuery['views']['list'][number]['filters'] | UIFilter[];\n\nexport type AttributesById = Record<string, NonNullable<ExplorerAttributesQuery['attributes']>['list'][number]>;\n\nexport const useTransformFilters = () => {\n const {lang} = useLang();\n\n const toValidFilters = (filters: ValidFiltersArgument): ValidFilter[] =>\n (filters ?? []).reduce<ValidFilter[]>((acc, filter) => {\n if (!_isValidFieldFilter(filter)) {\n return acc;\n }\n const _isThroughFilter = filter.field.includes('.');\n\n if (_isThroughFilter) {\n const [field, subField] = filter.field.split('.');\n const throughFilter: ValidFieldFilterThrough = {\n field,\n subField,\n value: filter.value ?? null,\n hidden: filter.hidden ?? false,\n condition: ThroughConditionFilter.THROUGH,\n subCondition: filter.condition,\n };\n acc.push(throughFilter);\n } else {\n acc.push(filter);\n }\n\n return acc;\n }, []);\n\n const toUIFilters = ({\n filters,\n treeFilters,\n attributesDataById,\n t,\n }: {\n filters: ValidFilter[];\n treeFilters: ITreeFilters;\n attributesDataById: AttributesById;\n t: TFunction;\n }): UIFilter[] =>\n (filters ?? []).reduce<UIFilter[]>((acc, filter) => {\n if (!attributesDataById[filter.field]) {\n console.warn(`Attribute ${filter.field} from user view not found in database.`);\n return acc;\n }\n\n const filterAttributeBase: IUIFilterBaseAttribute = {\n id: attributesDataById[filter.field].id,\n label: localizedTranslation(attributesDataById[filter.field].label, lang),\n type: attributesDataById[filter.field].type,\n };\n\n // filter is standardFilter\n if (isStandardAttribute(filterAttributeBase.type)) {\n const attributeData = attributesDataById[filter.field];\n if (_isValidFieldFilterStandardValuesList(filter, attributeData)) {\n const newFilter: IUIFilterStandardValueList = {\n field: filter.field,\n // TODO : save filter values as string[] when filter and handle fields with libraries\n value: filter.value ? [filter.value] : [],\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n condition: (filter.condition as RecordFilterCondition) ?? null,\n attribute: {\n ...filterAttributeBase,\n format: attributeData.format!,\n valuesList: (attributeData as StandardAttributeDetailsFragment).valuesList!,\n },\n withEmptyValues: filter.withEmptyValues ?? false,\n };\n acc.push(newFilter);\n } else {\n let formattedValue: string;\n if (attributeData.format === AttributeFormat.boolean && filter.value) {\n formattedValue = filter.value === 'true' ? t('explorer.true') : t('explorer.false');\n }\n\n if (attributeData.format === AttributeFormat.date && filter.value) {\n formattedValue = dayjs(filter.value).format('YYYY-MM-DD');\n }\n\n const newFilter: IUIFilterStandard = {\n field: filter.field,\n value: filter.value ?? null,\n formattedValue,\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n condition: (filter.condition as RecordFilterCondition) ?? null,\n attribute: {\n ...filterAttributeBase,\n format: attributeData.format!,\n },\n withEmptyValues: filter.withEmptyValues ?? false,\n };\n acc.push(newFilter);\n }\n }\n\n if (isLinkAttribute(filterAttributeBase.type)) {\n const attributeData = attributesDataById[\n filter.field\n ] as AttributeDetailsLinkAttributeWithPermissionsFragment;\n if (_isValidFieldFilterThrough(filter)) {\n const newFilter: IUIFilterThrough = {\n field: filter.field,\n value: filter.value ?? null,\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n condition: filter.condition,\n attribute: {\n ...filterAttributeBase,\n linkedLibrary: attributeData.linked_library!,\n },\n subCondition: filter.subCondition ?? null,\n subField: filter.subField,\n };\n acc.push(newFilter);\n } else if (_isValidFieldFilterLinkValuesList(filter, attributeData)) {\n const newFilter: IUIFilterLinkValueList = {\n field: filter.field,\n // TODO : save filter values as string[] when filter and handle fields with libraries\n value: filter.value ? [filter.value] : [],\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n condition: filter.condition,\n attribute: {\n ...filterAttributeBase,\n linkedLibrary: attributeData.linked_library!,\n valuesList: (attributeData as LinkAttributeDetailsFragment).valuesList!,\n },\n withEmptyValues: filter.withEmptyValues ?? false,\n };\n\n acc.push(newFilter);\n } else {\n const newFilter: IUIFilterLink = {\n field: filter.field,\n value: filter.value ?? null,\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n condition: filter.condition,\n attribute: {\n ...filterAttributeBase,\n linkedLibrary: attributeData.linked_library!,\n },\n };\n\n acc.push(newFilter);\n }\n }\n\n if (isTreeAttribute(filterAttributeBase.type) && !_isValidFieldFilterThrough(filter)) {\n const attributeData = attributesDataById[\n filter.field\n ] as AttributeDetailsTreeAttributeWithPermissionsFragment;\n const newFilter: IUIFilterTree = {\n field: [filter.field],\n // TODO : save filter values as string[] when tree filter and handle fields with libraries\n value: filter.value\n ? [filter.value]\n : treeFilters[filter.field]\n ? treeFilters[filter.field].map(tree => tree.value)\n : null,\n formattedValue: filter.value\n ? [filter.value]\n : treeFilters[filter.field]\n ? treeFilters[filter.field].map(tree => tree.label)\n : undefined,\n nodes: filter.value\n ? undefined\n : treeFilters[filter.field]\n ? treeFilters[filter.field].map(tree => ({libraryId: tree.libraryId, nodeId: tree.nodeId}))\n : undefined,\n hidden: filter.hidden ?? false,\n id: window.crypto.randomUUID(),\n attribute: {\n ...filterAttributeBase,\n linkedTree: attributeData.linked_tree!,\n },\n condition: filter.condition ?? RecordFilterCondition.EQUAL,\n withEmptyValues: filter.withEmptyValues ?? false,\n };\n acc.push(newFilter);\n }\n\n return acc;\n }, []);\n\n return {\n toValidFilters,\n toUIFilters,\n };\n};\n"]}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { type DraggableProvidedDragHandleProps } from 'react-beautiful-dnd';
|
|
2
1
|
import { type IFilter } from '../../../../types/search';
|
|
3
2
|
export interface IFilterInputProps {
|
|
4
3
|
filter: IFilter;
|
|
@@ -7,7 +6,6 @@ export interface IFilterInputProps {
|
|
|
7
6
|
}
|
|
8
7
|
interface IFilterProps {
|
|
9
8
|
filter: IFilter;
|
|
10
|
-
handleProps: DraggableProvidedDragHandleProps;
|
|
11
9
|
}
|
|
12
|
-
declare function Filter({ filter
|
|
10
|
+
declare function Filter({ filter }: IFilterProps): JSX.Element;
|
|
13
11
|
export default Filter;
|
|
@@ -6,6 +6,7 @@ import { CloseCircleFilled, MoreOutlined } from '@ant-design/icons';
|
|
|
6
6
|
import { localizedTranslation } from '@leav/utils';
|
|
7
7
|
import { Button, Dropdown } from 'antd';
|
|
8
8
|
import { useCallback, useState } from 'react';
|
|
9
|
+
import { CSS } from '@dnd-kit/utilities';
|
|
9
10
|
import styled from 'styled-components';
|
|
10
11
|
import { themeVars } from '../../../../antdTheme';
|
|
11
12
|
import DateBetweenFilter from '../../../../components/LibraryItemsList/FiltersPanel/Filter/FilterInput/DateBetweenFilter';
|
|
@@ -27,6 +28,7 @@ import DateFilter from './FilterInput/DateFilter';
|
|
|
27
28
|
import NumericFilter from './FilterInput/NumericFilter';
|
|
28
29
|
import TextFilter from './FilterInput/TextFilter';
|
|
29
30
|
import { getDefaultFilterValueByFormat } from '../../../../components/LibraryItemsList/FiltersPanel/Filter/filterUtils';
|
|
31
|
+
import { useSortable } from '@dnd-kit/sortable';
|
|
30
32
|
const Wrapper = styled.div `
|
|
31
33
|
background: ${themeVars.lightBg};
|
|
32
34
|
padding: 8px 8px 8px 0px;
|
|
@@ -118,11 +120,13 @@ const ClearParentButton = styled(Button) `
|
|
|
118
120
|
}
|
|
119
121
|
}
|
|
120
122
|
`;
|
|
121
|
-
function Filter({ filter
|
|
123
|
+
function Filter({ filter }) {
|
|
122
124
|
const { t } = useSharedTranslation();
|
|
123
125
|
const { lang } = useLang();
|
|
124
126
|
const { state: searchState, dispatch: searchDispatch } = useSearchReducer();
|
|
125
127
|
const [showSelectTreeNodeModal, setShowSelectTreeNodeModal] = useState(false);
|
|
128
|
+
const { attributes, listeners, setNodeRef, transform, transition } = useSortable({ id: filter.key });
|
|
129
|
+
const style = { transform: CSS.Transform.toString(transform), transition };
|
|
126
130
|
const handleDelete = () => {
|
|
127
131
|
searchDispatch({
|
|
128
132
|
type: SearchActionTypes.SET_FILTERS,
|
|
@@ -318,7 +322,7 @@ function Filter({ filter, handleProps }) {
|
|
|
318
322
|
const _handlePressEnter = () => {
|
|
319
323
|
searchDispatch({ type: SearchActionTypes.APPLY_FILTERS });
|
|
320
324
|
};
|
|
321
|
-
return (_jsxs(_Fragment, { children: [showSelectTreeNodeModal && (_jsx(SelectTreeNodeModalOld, { selectedNodeKey: filter.value.value || filter.tree.id, treeId: filter.tree.id, onSubmit: node => updateFilterValue(_getValueFromNode(node)), onClose: () => setShowSelectTreeNodeModal(false), isVisible: showSelectTreeNodeModal, canSelectRoot: true })), _jsxs(Wrapper, { "data-testid": "filter", "$active": filter.active, children: [_jsx(Handle, { className: "filter-handle", ...
|
|
325
|
+
return (_jsxs(_Fragment, { children: [showSelectTreeNodeModal && (_jsx(SelectTreeNodeModalOld, { selectedNodeKey: filter.value.value || filter.tree.id, treeId: filter.tree.id, onSubmit: node => updateFilterValue(_getValueFromNode(node)), onClose: () => setShowSelectTreeNodeModal(false), isVisible: showSelectTreeNodeModal, canSelectRoot: true })), _jsxs(Wrapper, { "data-testid": "filter", "$active": filter.active, ref: setNodeRef, style: style, ...attributes, children: [_jsx(Handle, { className: "filter-handle", ...listeners }), _jsxs(Content, { "$hasParent": hasParent, children: [hasParent && (_jsxs(ParentLabel, { children: [_jsxs("span", { children: [t('filters.through'), ":\u00A0"] }), _jsx("span", { children: getParentLabel() }), _jsx(ClearParentButton, { disabled: !filter.active, size: "small", onClick: _handleResetClick, shape: "circle", icon: _jsx(CloseCircleFilled, {}) })] })), _jsxs(Head, { children: [_jsxs(HeadInfos, { children: [_jsx(FiltersDropdown, { libraryId: searchState.library.id, button: _jsx(FilterDropdownButton, { secondary: filter.condition === ThroughConditionFilter.THROUGH, children: getDropdownLabel() }), filter: filter, attributes: getAttributes(), libraries: getLibraries(), trees: getTrees() }), (filter.type === FilterType.ATTRIBUTE || filter.type === FilterType.LIBRARY) && (_jsx(FilterAttributeCondition, { filter: filter, updateFilterValue: updateFilterValue })), filter.type === FilterType.TREE && _jsx(FilterTreeCondition, { filter: filter })] }), _jsx(Dropdown, { menu: filterOptions, placement: "bottomRight", children: _jsx(HeadOptions, { children: _jsx(MoreOutlined, {}) }) })] }), _jsx(InputByFormat, { filter: filter, updateFilterValue: updateFilterValue, onPressEnter: _handlePressEnter })] })] })] }));
|
|
322
326
|
}
|
|
323
327
|
export default Filter;
|
|
324
328
|
//# sourceMappingURL=Filter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Filter.js","sourceRoot":"","sources":["../../../../../src/components/LibraryItemsList/FiltersPanel/Filter/Filter.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 {CloseCircleFilled, MoreOutlined} from '@ant-design/icons';\nimport {localizedTranslation} from '@leav/utils';\nimport {Button, Dropdown} from 'antd';\nimport {useCallback, useState} from 'react';\nimport {type DraggableProvidedDragHandleProps} from 'react-beautiful-dnd';\nimport styled from 'styled-components';\nimport {themeVars} from '_ui/antdTheme';\nimport DateBetweenFilter from '_ui/components/LibraryItemsList/FiltersPanel/Filter/FilterInput/DateBetweenFilter';\nimport useSearchReducer from '_ui/components/LibraryItemsList/hooks/useSearchReducer';\nimport {SearchActionTypes} from '_ui/components/LibraryItemsList/hooks/useSearchReducer/searchReducer';\nimport {SelectTreeNodeModalOld} from '_ui/components/SelectTreeNodeModalOld';\nimport {useLang} from '_ui/hooks';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {\n AttributeConditionFilter,\n type AttributeConditionType,\n FilterType,\n type IAttribute,\n type IFilter,\n type IFilterAttribute,\n type IFilterLibrary,\n type IFilterTree,\n ThroughConditionFilter,\n TreeConditionFilter,\n} from '_ui/types/search';\nimport {type ITreeNode} from '_ui/types/trees';\nimport {\n AttributeFormat,\n type AttributesByLibAttributeStandardAttributeFragment,\n AttributeType,\n RecordFilterCondition,\n} from '_ui/_gqlTypes';\nimport {\n type ILibraryDetailExtended,\n type ILibraryDetailExtendedAttribute,\n type ILibraryDetailExtendedAttributeParentLinkedTree,\n} from '_ui/_queries/libraries/getLibraryDetailExtendQuery';\nimport {formatNotUsingCondition} from '../../constants';\nimport FiltersDropdown from '../../FiltersDropdown';\nimport {defaultFilterConditionByAttributeFormat} from '../../helpers/defaultFilterConditionByAttributeFormat';\nimport FilterDropdownButton from '../FilterDropdownButton';\nimport FilterTreeCondition from '../FilterTreeCondition';\nimport mustHideValue from '../mustHideValue';\nimport FilterAttributeCondition from './FilterAttributeCondition';\nimport DateFilter from './FilterInput/DateFilter';\nimport NumericFilter from './FilterInput/NumericFilter';\nimport TextFilter from './FilterInput/TextFilter';\nimport {getDefaultFilterValueByFormat} from '_ui/components/LibraryItemsList/FiltersPanel/Filter/filterUtils';\n\ninterface IWrapperProps {\n $active: boolean;\n}\n\nconst Wrapper = styled.div<IWrapperProps>`\n background: ${themeVars.lightBg};\n padding: 8px 8px 8px 0px;\n border-radius: 3px;\n display: grid;\n grid-template-columns: 1.375rem 1fr;\n margin-bottom: 8px;\n border: 2px solid transparent;\n\n ${({$active}) =>\n $active\n ? `\n &:hover,\n &:active {\n border: 2px solid ${themeVars.primaryColor};\n\n &&& .filter-handle {\n color: ${themeVars.primaryColor};\n }\n }\n `\n : 'opacity: .5;'}\n`;\n\nconst Handle = styled.div`\n content: '....';\n width: 20px;\n height: 30px;\n display: inline-block;\n overflow: hidden;\n line-height: 5px;\n padding: 3px 4px;\n vertical-align: middle;\n margin: auto;\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 Content = styled.div<{$hasParent: boolean}>`\n display: grid;\n grid-template-rows: ${p => (p.$hasParent ? 'auto auto 1fr' : 'auto 1fr')};\n row-gap: 8px;\n`;\n\nconst Head = styled.div`\n display: grid;\n grid-template-columns: 1fr 1.5rem;\n align-items: center;\n column-gap: 8px;\n min-width: 0;\n`;\n\nconst HeadInfos = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr;\n justify-items: space-around;\n align-items: center;\n justify-content: center;\n\n background: ${themeVars.defaultBg} 0% 0% no-repeat padding-box;\n border: 1px solid ${themeVars.borderColor};\n border-radius: 3px;\n\n min-width: 0;\n`;\n\nconst HeadOptions = styled.div`\n display: grid;\n place-items: center;\n height: 32px;\n\n background: ${themeVars.defaultBg} 0% 0% no-repeat padding-box;\n border: 1px solid ${themeVars.borderColor};\n border-radius: 3px;\n`;\n\nconst ParentLabel = styled.div`\n display: flex;\n align-content: flex-start;\n`;\n\nconst ClearParentButton = styled(Button)`\n && {\n border: none;\n color: ${themeVars.secondaryTextColor};\n\n :hover {\n border: none;\n color: ${themeVars.secondaryTextColor};\n }\n }\n`;\n\nexport interface IFilterInputProps {\n filter: IFilter;\n updateFilterValue: (newFilterValue: IFilter['value']) => void;\n onPressEnter?: () => void;\n}\n\ninterface IFilterProps {\n filter: IFilter;\n handleProps: DraggableProvidedDragHandleProps;\n}\n\nfunction Filter({filter, handleProps}: IFilterProps): JSX.Element {\n const {t} = useSharedTranslation();\n const {lang} = useLang();\n const {state: searchState, dispatch: searchDispatch} = useSearchReducer();\n const [showSelectTreeNodeModal, setShowSelectTreeNodeModal] = useState(false);\n\n const handleDelete = () => {\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters: searchState.filters.filter(f => f.index !== filter.index),\n });\n };\n\n const updateFilterValue = (newFilterValue: IFilter['value']) => {\n const newFilters: IFilter[] = searchState.filters.map(f => {\n if (f.index === filter.index) {\n return {...f, value: newFilterValue};\n }\n\n return f;\n });\n\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters: newFilters,\n });\n };\n\n const _getValueFromNode = (node: ITreeNode): IFilter['value'] =>\n typeof node === 'undefined' || node.id === (filter as IFilterTree).tree.id\n ? {value: null}\n : {value: node.id, label: String(node.title)};\n\n const toggleActiveStatus = () => {\n const newFilters = searchState.filters.map(f => {\n if (f.index === filter.index) {\n return {...f, active: !f.active};\n }\n\n return f;\n });\n\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters: newFilters,\n });\n };\n\n const filterOptions = {\n items: [\n {\n key: 'deactivate',\n label: filter.active ? t('filters.deactivate') : t('filters.activate'),\n onClick: toggleActiveStatus,\n },\n {\n key: 'delete',\n label: t('global.delete'),\n onClick: handleDelete,\n },\n ],\n };\n\n const InputByFormat = useCallback(\n (props: IFilterInputProps) => {\n const showStandardCondition =\n props.filter.condition in AttributeConditionFilter &&\n !(props.filter.condition in TreeConditionFilter) &&\n !formatNotUsingCondition.find(\n format => format === (props.filter as IFilterAttribute).attribute?.format,\n );\n\n const showTreeCondition = props.filter.condition in TreeConditionFilter;\n\n if (showStandardCondition) {\n if (mustHideValue(props.filter.condition as AttributeConditionType)) {\n return <></>;\n }\n\n switch ((props.filter as IFilterAttribute).attribute?.format) {\n case AttributeFormat.date:\n return props.filter.condition === AttributeConditionFilter.BETWEEN ? (\n <DateBetweenFilter {...props} />\n ) : (\n <DateFilter {...props} />\n );\n case AttributeFormat.date_range:\n return <DateFilter {...props} />;\n case AttributeFormat.numeric:\n return <NumericFilter {...props} />;\n case AttributeFormat.text:\n default:\n return <TextFilter {...props} />;\n }\n } else if (showTreeCondition) {\n return (\n <Button disabled={!props.filter.active} onClick={() => setShowSelectTreeNodeModal(true)}>\n {props.filter.value.label || t('global.select')}\n </Button>\n );\n }\n\n return <></>;\n },\n [t],\n );\n\n const embeddedFieldsToAttribute = (\n embeddedFields: AttributesByLibAttributeStandardAttributeFragment['embedded_fields'],\n ): AttributesByLibAttributeStandardAttributeFragment[] =>\n embeddedFields\n ? embeddedFields.map(f => ({\n ...f,\n type: AttributeType.simple,\n multiple_values: undefined,\n linked_tree: undefined,\n system: false,\n readonly: false,\n }))\n : [];\n\n const getAttributes = (): ILibraryDetailExtendedAttribute[] => {\n if (filter.type === FilterType.ATTRIBUTE) {\n if (\n filter.condition === ThroughConditionFilter.THROUGH &&\n (filter as IFilterAttribute).attribute?.format === AttributeFormat.extended\n ) {\n return embeddedFieldsToAttribute((filter as IFilterAttribute).attribute.embedded_fields);\n }\n\n if (\n filter.condition === ThroughConditionFilter.THROUGH &&\n typeof (filter as IFilterAttribute).attribute.linkedTree === 'undefined'\n ) {\n return (filter as IFilterAttribute).attribute.linkedLibrary?.attributes;\n }\n\n if (typeof (filter as IFilterAttribute).attribute.parentAttribute !== 'undefined') {\n return (\n (filter as IFilterAttribute).attribute.parentAttribute?.linkedLibrary?.attributes ||\n embeddedFieldsToAttribute((filter as IFilterAttribute).attribute.parentAttribute?.embedded_fields)\n );\n }\n\n if (typeof (filter as IFilterAttribute).parentTreeLibrary !== 'undefined') {\n const lib = (filter as IFilterAttribute).parentTreeLibrary.parentAttribute.linkedTree.libraries.find(\n l => l.library.id === (filter as IFilterAttribute).parentTreeLibrary.library.id,\n );\n\n return lib.library.attributes;\n }\n\n if (\n typeof (filter as IFilterAttribute).attribute.linkedTree !== 'undefined' &&\n filter.condition === ThroughConditionFilter.THROUGH\n ) {\n return [];\n }\n }\n\n if (filter.type === FilterType.LIBRARY) {\n if (filter.condition !== ThroughConditionFilter.THROUGH) {\n return [];\n }\n\n if (filter.condition === ThroughConditionFilter.THROUGH) {\n const lib = (filter as IFilterLibrary).parentAttribute.linkedTree?.libraries.find(\n l => l.library.id === (filter as IFilterLibrary).library.id,\n );\n\n return lib.library.attributes;\n }\n }\n\n return searchState.library.attributes;\n };\n\n // on tree attribute type with linkedTree\n const getLibraries = (): ILibraryDetailExtendedAttributeParentLinkedTree['libraries'] => {\n if (filter.type === FilterType.LIBRARY) {\n return (filter as IFilterLibrary).parentAttribute.linkedTree?.libraries;\n }\n\n if (\n filter.type === FilterType.ATTRIBUTE &&\n typeof (filter as IFilterAttribute).attribute.linkedTree !== 'undefined' &&\n filter.condition === ThroughConditionFilter.THROUGH\n ) {\n return (filter as IFilterAttribute).attribute.linkedTree?.libraries;\n }\n\n return [];\n };\n\n const getTrees = (): ILibraryDetailExtended['linkedTrees'] => {\n if (\n filter.type === FilterType.TREE ||\n (filter.condition !== ThroughConditionFilter.THROUGH &&\n filter.type === FilterType.ATTRIBUTE &&\n !(filter as IFilterAttribute).parentTreeLibrary &&\n !(filter as IFilterAttribute).attribute.parentAttribute)\n ) {\n return searchState.trees;\n }\n\n return [];\n };\n\n const _handleResetClick = () => {\n const filters = [...searchState.filters];\n\n const parentAttribute: IAttribute =\n filter.type === FilterType.ATTRIBUTE &&\n typeof (filter as IFilterAttribute).parentTreeLibrary !== 'undefined'\n ? (filter as IFilterAttribute).parentTreeLibrary.parentAttribute\n : filter.type === FilterType.ATTRIBUTE\n ? ((filter as IFilterAttribute).attribute.parentAttribute ?? (filter as IFilterAttribute).attribute)\n : (filter as IFilterLibrary).parentAttribute;\n\n const newFilter: IFilterAttribute = {\n type: FilterType.ATTRIBUTE,\n index: filter.index,\n key: parentAttribute?.id,\n value: {\n value: getDefaultFilterValueByFormat(parentAttribute.format),\n },\n active: true,\n condition: RecordFilterCondition[defaultFilterConditionByAttributeFormat(parentAttribute.format)],\n attribute: parentAttribute,\n };\n\n const filterPos = searchState.filters.findIndex(f => f.index === filter.index);\n filters.splice(filterPos, 1, newFilter);\n\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters,\n });\n };\n\n const getDropdownLabel = (): string => {\n if (filter.condition === ThroughConditionFilter.THROUGH) {\n return `${t('global.select')}...`;\n }\n\n if (filter.type === FilterType.ATTRIBUTE) {\n return (\n localizedTranslation((filter as IFilterAttribute).attribute?.label, lang) ||\n (filter as IFilterAttribute).attribute?.id\n );\n } else if (filter.type === FilterType.TREE) {\n return localizedTranslation((filter as IFilterTree).tree.label, lang) || (filter as IFilterTree).tree.id;\n }\n\n return (\n localizedTranslation((filter as IFilterLibrary).library.label, lang) ||\n (filter as IFilterLibrary).library.id\n );\n };\n\n const getParentLabel = () =>\n localizedTranslation(\n filter.condition === ThroughConditionFilter.THROUGH\n ? (filter as IFilterAttribute).attribute?.label\n : (filter as IFilterAttribute).attribute?.parentAttribute?.label ||\n (filter as IFilterLibrary).parentAttribute?.label,\n lang,\n ) ||\n `${localizedTranslation(\n filter.condition === ThroughConditionFilter.THROUGH\n ? (filter as IFilterLibrary).parentAttribute?.label\n : (filter as IFilterAttribute).parentTreeLibrary?.parentAttribute?.label,\n lang,\n )} > ${localizedTranslation(\n filter.condition === ThroughConditionFilter.THROUGH\n ? (filter as IFilterLibrary)?.library.label\n : (filter as IFilterAttribute).parentTreeLibrary?.library.label,\n lang,\n )} `;\n\n const hasParent = !!(\n filter.condition === ThroughConditionFilter.THROUGH ||\n !!(filter as IFilterAttribute).attribute?.parentAttribute ||\n (filter as IFilterAttribute).parentTreeLibrary ||\n filter.type === FilterType.LIBRARY\n );\n\n const _handlePressEnter = () => {\n searchDispatch({type: SearchActionTypes.APPLY_FILTERS});\n };\n\n return (\n <>\n {showSelectTreeNodeModal && (\n <SelectTreeNodeModalOld\n selectedNodeKey={(filter.value.value as string) || (filter as IFilterTree).tree.id}\n treeId={(filter as IFilterTree).tree.id}\n onSubmit={node => updateFilterValue(_getValueFromNode(node))}\n onClose={() => setShowSelectTreeNodeModal(false)}\n isVisible={showSelectTreeNodeModal}\n canSelectRoot\n />\n )}\n <Wrapper data-testid=\"filter\" $active={filter.active}>\n <Handle className=\"filter-handle\" {...handleProps} />\n <Content $hasParent={hasParent}>\n {hasParent && (\n <ParentLabel>\n <span>{t('filters.through')}: </span>\n <span>{getParentLabel()}</span>\n <ClearParentButton\n disabled={!filter.active}\n size=\"small\"\n onClick={_handleResetClick}\n shape=\"circle\"\n icon={<CloseCircleFilled />}\n />\n </ParentLabel>\n )}\n <Head>\n <HeadInfos>\n <FiltersDropdown\n libraryId={searchState.library.id}\n button={\n <FilterDropdownButton\n secondary={filter.condition === ThroughConditionFilter.THROUGH}\n >\n {getDropdownLabel()}\n </FilterDropdownButton>\n }\n filter={filter}\n attributes={getAttributes()}\n libraries={getLibraries()}\n trees={getTrees()}\n />\n {(filter.type === FilterType.ATTRIBUTE || filter.type === FilterType.LIBRARY) && (\n <FilterAttributeCondition\n filter={filter as IFilterAttribute | IFilterLibrary}\n updateFilterValue={updateFilterValue}\n />\n )}\n {filter.type === FilterType.TREE && <FilterTreeCondition filter={filter as IFilterTree} />}\n </HeadInfos>\n <Dropdown menu={filterOptions} placement=\"bottomRight\">\n <HeadOptions>\n <MoreOutlined />\n </HeadOptions>\n </Dropdown>\n </Head>\n <InputByFormat\n filter={filter}\n updateFilterValue={updateFilterValue}\n onPressEnter={_handlePressEnter}\n />\n </Content>\n </Wrapper>\n </>\n );\n}\n\nexport default Filter;\n"]}
|
|
1
|
+
{"version":3,"file":"Filter.js","sourceRoot":"","sources":["../../../../../src/components/LibraryItemsList/FiltersPanel/Filter/Filter.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 {CloseCircleFilled, MoreOutlined} from '@ant-design/icons';\nimport {localizedTranslation} from '@leav/utils';\nimport {Button, Dropdown} from 'antd';\nimport {useCallback, useState} from 'react';\nimport {CSS} from '@dnd-kit/utilities';\nimport styled from 'styled-components';\nimport {themeVars} from '_ui/antdTheme';\nimport DateBetweenFilter from '_ui/components/LibraryItemsList/FiltersPanel/Filter/FilterInput/DateBetweenFilter';\nimport useSearchReducer from '_ui/components/LibraryItemsList/hooks/useSearchReducer';\nimport {SearchActionTypes} from '_ui/components/LibraryItemsList/hooks/useSearchReducer/searchReducer';\nimport {SelectTreeNodeModalOld} from '_ui/components/SelectTreeNodeModalOld';\nimport {useLang} from '_ui/hooks';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {\n AttributeConditionFilter,\n type AttributeConditionType,\n FilterType,\n type IAttribute,\n type IFilter,\n type IFilterAttribute,\n type IFilterLibrary,\n type IFilterTree,\n ThroughConditionFilter,\n TreeConditionFilter,\n} from '_ui/types/search';\nimport {type ITreeNode} from '_ui/types/trees';\nimport {\n AttributeFormat,\n type AttributesByLibAttributeStandardAttributeFragment,\n AttributeType,\n RecordFilterCondition,\n} from '_ui/_gqlTypes';\nimport {\n type ILibraryDetailExtended,\n type ILibraryDetailExtendedAttribute,\n type ILibraryDetailExtendedAttributeParentLinkedTree,\n} from '_ui/_queries/libraries/getLibraryDetailExtendQuery';\nimport {formatNotUsingCondition} from '../../constants';\nimport FiltersDropdown from '../../FiltersDropdown';\nimport {defaultFilterConditionByAttributeFormat} from '../../helpers/defaultFilterConditionByAttributeFormat';\nimport FilterDropdownButton from '../FilterDropdownButton';\nimport FilterTreeCondition from '../FilterTreeCondition';\nimport mustHideValue from '../mustHideValue';\nimport FilterAttributeCondition from './FilterAttributeCondition';\nimport DateFilter from './FilterInput/DateFilter';\nimport NumericFilter from './FilterInput/NumericFilter';\nimport TextFilter from './FilterInput/TextFilter';\nimport {getDefaultFilterValueByFormat} from '_ui/components/LibraryItemsList/FiltersPanel/Filter/filterUtils';\nimport {useSortable} from '@dnd-kit/sortable';\n\ninterface IWrapperProps {\n $active: boolean;\n}\n\nconst Wrapper = styled.div<IWrapperProps>`\n background: ${themeVars.lightBg};\n padding: 8px 8px 8px 0px;\n border-radius: 3px;\n display: grid;\n grid-template-columns: 1.375rem 1fr;\n margin-bottom: 8px;\n border: 2px solid transparent;\n\n ${({$active}) =>\n $active\n ? `\n &:hover,\n &:active {\n border: 2px solid ${themeVars.primaryColor};\n\n &&& .filter-handle {\n color: ${themeVars.primaryColor};\n }\n }\n `\n : 'opacity: .5;'}\n`;\n\nconst Handle = styled.div`\n content: '....';\n width: 20px;\n height: 30px;\n display: inline-block;\n overflow: hidden;\n line-height: 5px;\n padding: 3px 4px;\n vertical-align: middle;\n margin: auto;\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 Content = styled.div<{$hasParent: boolean}>`\n display: grid;\n grid-template-rows: ${p => (p.$hasParent ? 'auto auto 1fr' : 'auto 1fr')};\n row-gap: 8px;\n`;\n\nconst Head = styled.div`\n display: grid;\n grid-template-columns: 1fr 1.5rem;\n align-items: center;\n column-gap: 8px;\n min-width: 0;\n`;\n\nconst HeadInfos = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr;\n justify-items: space-around;\n align-items: center;\n justify-content: center;\n\n background: ${themeVars.defaultBg} 0% 0% no-repeat padding-box;\n border: 1px solid ${themeVars.borderColor};\n border-radius: 3px;\n\n min-width: 0;\n`;\n\nconst HeadOptions = styled.div`\n display: grid;\n place-items: center;\n height: 32px;\n\n background: ${themeVars.defaultBg} 0% 0% no-repeat padding-box;\n border: 1px solid ${themeVars.borderColor};\n border-radius: 3px;\n`;\n\nconst ParentLabel = styled.div`\n display: flex;\n align-content: flex-start;\n`;\n\nconst ClearParentButton = styled(Button)`\n && {\n border: none;\n color: ${themeVars.secondaryTextColor};\n\n :hover {\n border: none;\n color: ${themeVars.secondaryTextColor};\n }\n }\n`;\n\nexport interface IFilterInputProps {\n filter: IFilter;\n updateFilterValue: (newFilterValue: IFilter['value']) => void;\n onPressEnter?: () => void;\n}\n\ninterface IFilterProps {\n filter: IFilter;\n}\n\nfunction Filter({filter}: IFilterProps): JSX.Element {\n const {t} = useSharedTranslation();\n const {lang} = useLang();\n const {state: searchState, dispatch: searchDispatch} = useSearchReducer();\n const [showSelectTreeNodeModal, setShowSelectTreeNodeModal] = useState(false);\n\n const {attributes, listeners, setNodeRef, transform, transition} = useSortable({id: filter.key});\n const style = {transform: CSS.Transform.toString(transform), transition};\n\n const handleDelete = () => {\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters: searchState.filters.filter(f => f.index !== filter.index),\n });\n };\n\n const updateFilterValue = (newFilterValue: IFilter['value']) => {\n const newFilters: IFilter[] = searchState.filters.map(f => {\n if (f.index === filter.index) {\n return {...f, value: newFilterValue};\n }\n\n return f;\n });\n\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters: newFilters,\n });\n };\n\n const _getValueFromNode = (node: ITreeNode): IFilter['value'] =>\n typeof node === 'undefined' || node.id === (filter as IFilterTree).tree.id\n ? {value: null}\n : {value: node.id, label: String(node.title)};\n\n const toggleActiveStatus = () => {\n const newFilters = searchState.filters.map(f => {\n if (f.index === filter.index) {\n return {...f, active: !f.active};\n }\n\n return f;\n });\n\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters: newFilters,\n });\n };\n\n const filterOptions = {\n items: [\n {\n key: 'deactivate',\n label: filter.active ? t('filters.deactivate') : t('filters.activate'),\n onClick: toggleActiveStatus,\n },\n {\n key: 'delete',\n label: t('global.delete'),\n onClick: handleDelete,\n },\n ],\n };\n\n const InputByFormat = useCallback(\n (props: IFilterInputProps) => {\n const showStandardCondition =\n props.filter.condition in AttributeConditionFilter &&\n !(props.filter.condition in TreeConditionFilter) &&\n !formatNotUsingCondition.find(\n format => format === (props.filter as IFilterAttribute).attribute?.format,\n );\n\n const showTreeCondition = props.filter.condition in TreeConditionFilter;\n\n if (showStandardCondition) {\n if (mustHideValue(props.filter.condition as AttributeConditionType)) {\n return <></>;\n }\n\n switch ((props.filter as IFilterAttribute).attribute?.format) {\n case AttributeFormat.date:\n return props.filter.condition === AttributeConditionFilter.BETWEEN ? (\n <DateBetweenFilter {...props} />\n ) : (\n <DateFilter {...props} />\n );\n case AttributeFormat.date_range:\n return <DateFilter {...props} />;\n case AttributeFormat.numeric:\n return <NumericFilter {...props} />;\n case AttributeFormat.text:\n default:\n return <TextFilter {...props} />;\n }\n } else if (showTreeCondition) {\n return (\n <Button disabled={!props.filter.active} onClick={() => setShowSelectTreeNodeModal(true)}>\n {props.filter.value.label || t('global.select')}\n </Button>\n );\n }\n\n return <></>;\n },\n [t],\n );\n\n const embeddedFieldsToAttribute = (\n embeddedFields: AttributesByLibAttributeStandardAttributeFragment['embedded_fields'],\n ): AttributesByLibAttributeStandardAttributeFragment[] =>\n embeddedFields\n ? embeddedFields.map(f => ({\n ...f,\n type: AttributeType.simple,\n multiple_values: undefined,\n linked_tree: undefined,\n system: false,\n readonly: false,\n }))\n : [];\n\n const getAttributes = (): ILibraryDetailExtendedAttribute[] => {\n if (filter.type === FilterType.ATTRIBUTE) {\n if (\n filter.condition === ThroughConditionFilter.THROUGH &&\n (filter as IFilterAttribute).attribute?.format === AttributeFormat.extended\n ) {\n return embeddedFieldsToAttribute((filter as IFilterAttribute).attribute.embedded_fields);\n }\n\n if (\n filter.condition === ThroughConditionFilter.THROUGH &&\n typeof (filter as IFilterAttribute).attribute.linkedTree === 'undefined'\n ) {\n return (filter as IFilterAttribute).attribute.linkedLibrary?.attributes;\n }\n\n if (typeof (filter as IFilterAttribute).attribute.parentAttribute !== 'undefined') {\n return (\n (filter as IFilterAttribute).attribute.parentAttribute?.linkedLibrary?.attributes ||\n embeddedFieldsToAttribute((filter as IFilterAttribute).attribute.parentAttribute?.embedded_fields)\n );\n }\n\n if (typeof (filter as IFilterAttribute).parentTreeLibrary !== 'undefined') {\n const lib = (filter as IFilterAttribute).parentTreeLibrary.parentAttribute.linkedTree.libraries.find(\n l => l.library.id === (filter as IFilterAttribute).parentTreeLibrary.library.id,\n );\n\n return lib.library.attributes;\n }\n\n if (\n typeof (filter as IFilterAttribute).attribute.linkedTree !== 'undefined' &&\n filter.condition === ThroughConditionFilter.THROUGH\n ) {\n return [];\n }\n }\n\n if (filter.type === FilterType.LIBRARY) {\n if (filter.condition !== ThroughConditionFilter.THROUGH) {\n return [];\n }\n\n if (filter.condition === ThroughConditionFilter.THROUGH) {\n const lib = (filter as IFilterLibrary).parentAttribute.linkedTree?.libraries.find(\n l => l.library.id === (filter as IFilterLibrary).library.id,\n );\n\n return lib.library.attributes;\n }\n }\n\n return searchState.library.attributes;\n };\n\n // on tree attribute type with linkedTree\n const getLibraries = (): ILibraryDetailExtendedAttributeParentLinkedTree['libraries'] => {\n if (filter.type === FilterType.LIBRARY) {\n return (filter as IFilterLibrary).parentAttribute.linkedTree?.libraries;\n }\n\n if (\n filter.type === FilterType.ATTRIBUTE &&\n typeof (filter as IFilterAttribute).attribute.linkedTree !== 'undefined' &&\n filter.condition === ThroughConditionFilter.THROUGH\n ) {\n return (filter as IFilterAttribute).attribute.linkedTree?.libraries;\n }\n\n return [];\n };\n\n const getTrees = (): ILibraryDetailExtended['linkedTrees'] => {\n if (\n filter.type === FilterType.TREE ||\n (filter.condition !== ThroughConditionFilter.THROUGH &&\n filter.type === FilterType.ATTRIBUTE &&\n !(filter as IFilterAttribute).parentTreeLibrary &&\n !(filter as IFilterAttribute).attribute.parentAttribute)\n ) {\n return searchState.trees;\n }\n\n return [];\n };\n\n const _handleResetClick = () => {\n const filters = [...searchState.filters];\n\n const parentAttribute: IAttribute =\n filter.type === FilterType.ATTRIBUTE &&\n typeof (filter as IFilterAttribute).parentTreeLibrary !== 'undefined'\n ? (filter as IFilterAttribute).parentTreeLibrary.parentAttribute\n : filter.type === FilterType.ATTRIBUTE\n ? ((filter as IFilterAttribute).attribute.parentAttribute ?? (filter as IFilterAttribute).attribute)\n : (filter as IFilterLibrary).parentAttribute;\n\n const newFilter: IFilterAttribute = {\n type: FilterType.ATTRIBUTE,\n index: filter.index,\n key: parentAttribute?.id,\n value: {\n value: getDefaultFilterValueByFormat(parentAttribute.format),\n },\n active: true,\n condition: RecordFilterCondition[defaultFilterConditionByAttributeFormat(parentAttribute.format)],\n attribute: parentAttribute,\n };\n\n const filterPos = searchState.filters.findIndex(f => f.index === filter.index);\n filters.splice(filterPos, 1, newFilter);\n\n searchDispatch({\n type: SearchActionTypes.SET_FILTERS,\n filters,\n });\n };\n\n const getDropdownLabel = (): string => {\n if (filter.condition === ThroughConditionFilter.THROUGH) {\n return `${t('global.select')}...`;\n }\n\n if (filter.type === FilterType.ATTRIBUTE) {\n return (\n localizedTranslation((filter as IFilterAttribute).attribute?.label, lang) ||\n (filter as IFilterAttribute).attribute?.id\n );\n } else if (filter.type === FilterType.TREE) {\n return localizedTranslation((filter as IFilterTree).tree.label, lang) || (filter as IFilterTree).tree.id;\n }\n\n return (\n localizedTranslation((filter as IFilterLibrary).library.label, lang) ||\n (filter as IFilterLibrary).library.id\n );\n };\n\n const getParentLabel = () =>\n localizedTranslation(\n filter.condition === ThroughConditionFilter.THROUGH\n ? (filter as IFilterAttribute).attribute?.label\n : (filter as IFilterAttribute).attribute?.parentAttribute?.label ||\n (filter as IFilterLibrary).parentAttribute?.label,\n lang,\n ) ||\n `${localizedTranslation(\n filter.condition === ThroughConditionFilter.THROUGH\n ? (filter as IFilterLibrary).parentAttribute?.label\n : (filter as IFilterAttribute).parentTreeLibrary?.parentAttribute?.label,\n lang,\n )} > ${localizedTranslation(\n filter.condition === ThroughConditionFilter.THROUGH\n ? (filter as IFilterLibrary)?.library.label\n : (filter as IFilterAttribute).parentTreeLibrary?.library.label,\n lang,\n )} `;\n\n const hasParent = !!(\n filter.condition === ThroughConditionFilter.THROUGH ||\n !!(filter as IFilterAttribute).attribute?.parentAttribute ||\n (filter as IFilterAttribute).parentTreeLibrary ||\n filter.type === FilterType.LIBRARY\n );\n\n const _handlePressEnter = () => {\n searchDispatch({type: SearchActionTypes.APPLY_FILTERS});\n };\n\n return (\n <>\n {showSelectTreeNodeModal && (\n <SelectTreeNodeModalOld\n selectedNodeKey={(filter.value.value as string) || (filter as IFilterTree).tree.id}\n treeId={(filter as IFilterTree).tree.id}\n onSubmit={node => updateFilterValue(_getValueFromNode(node))}\n onClose={() => setShowSelectTreeNodeModal(false)}\n isVisible={showSelectTreeNodeModal}\n canSelectRoot\n />\n )}\n <Wrapper data-testid=\"filter\" $active={filter.active} ref={setNodeRef} style={style} {...attributes}>\n <Handle className=\"filter-handle\" {...listeners} />\n <Content $hasParent={hasParent}>\n {hasParent && (\n <ParentLabel>\n <span>{t('filters.through')}: </span>\n <span>{getParentLabel()}</span>\n <ClearParentButton\n disabled={!filter.active}\n size=\"small\"\n onClick={_handleResetClick}\n shape=\"circle\"\n icon={<CloseCircleFilled />}\n />\n </ParentLabel>\n )}\n <Head>\n <HeadInfos>\n <FiltersDropdown\n libraryId={searchState.library.id}\n button={\n <FilterDropdownButton\n secondary={filter.condition === ThroughConditionFilter.THROUGH}\n >\n {getDropdownLabel()}\n </FilterDropdownButton>\n }\n filter={filter}\n attributes={getAttributes()}\n libraries={getLibraries()}\n trees={getTrees()}\n />\n {(filter.type === FilterType.ATTRIBUTE || filter.type === FilterType.LIBRARY) && (\n <FilterAttributeCondition\n filter={filter as IFilterAttribute | IFilterLibrary}\n updateFilterValue={updateFilterValue}\n />\n )}\n {filter.type === FilterType.TREE && <FilterTreeCondition filter={filter as IFilterTree} />}\n </HeadInfos>\n <Dropdown menu={filterOptions} placement=\"bottomRight\">\n <HeadOptions>\n <MoreOutlined />\n </HeadOptions>\n </Dropdown>\n </Head>\n <InputByFormat\n filter={filter}\n updateFilterValue={updateFilterValue}\n onPressEnter={_handlePressEnter}\n />\n </Content>\n </Wrapper>\n </>\n );\n}\n\nexport default Filter;\n"]}
|
|
@@ -56,14 +56,7 @@ const allowedConditionByFormat = {
|
|
|
56
56
|
AttributeConditionFilter.IS_EMPTY,
|
|
57
57
|
AttributeConditionFilter.IS_NOT_EMPTY,
|
|
58
58
|
],
|
|
59
|
-
[AttributeFormat.color]: [
|
|
60
|
-
AttributeConditionFilter.CONTAINS,
|
|
61
|
-
AttributeConditionFilter.NOT_CONTAINS,
|
|
62
|
-
AttributeConditionFilter.EQUAL,
|
|
63
|
-
AttributeConditionFilter.NOT_EQUAL,
|
|
64
|
-
AttributeConditionFilter.IS_EMPTY,
|
|
65
|
-
AttributeConditionFilter.IS_NOT_EMPTY,
|
|
66
|
-
],
|
|
59
|
+
[AttributeFormat.color]: [],
|
|
67
60
|
[AttributeFormat.rich_text]: [
|
|
68
61
|
AttributeConditionFilter.CONTAINS,
|
|
69
62
|
AttributeConditionFilter.NOT_CONTAINS,
|