@webiny/app-aco 6.3.0 → 6.4.0-beta.1
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/app.js +3 -4
- package/app.js.map +1 -1
- package/components/Actions/DeleteFolder/DeleteFolder.js +21 -26
- package/components/Actions/DeleteFolder/DeleteFolder.js.map +1 -1
- package/components/Actions/DeleteFolder/index.js +0 -2
- package/components/Actions/EditFolder/EditFolder.js +20 -25
- package/components/Actions/EditFolder/EditFolder.js.map +1 -1
- package/components/Actions/EditFolder/index.js +0 -2
- package/components/Actions/SetFolderPemissions/SetFolderPermissions.js +20 -25
- package/components/Actions/SetFolderPemissions/SetFolderPermissions.js.map +1 -1
- package/components/Actions/SetFolderPemissions/index.js +0 -2
- package/components/Actions/index.js +0 -2
- package/components/AdvancedSearch/AdvancedSearch.js +67 -75
- package/components/AdvancedSearch/AdvancedSearch.js.map +1 -1
- package/components/AdvancedSearch/AdvancedSearchConfigs.js +37 -40
- package/components/AdvancedSearch/AdvancedSearchConfigs.js.map +1 -1
- package/components/AdvancedSearch/AdvancedSearchPresenter.js +178 -199
- package/components/AdvancedSearch/AdvancedSearchPresenter.js.map +1 -1
- package/components/AdvancedSearch/AdvancedSearchPresenter.test.js +653 -720
- package/components/AdvancedSearch/AdvancedSearchPresenter.test.js.map +1 -1
- package/components/AdvancedSearch/Button/Button.js +13 -16
- package/components/AdvancedSearch/Button/Button.js.map +1 -1
- package/components/AdvancedSearch/Button/index.js +0 -2
- package/components/AdvancedSearch/GraphQLInputMapper.js +29 -40
- package/components/AdvancedSearch/GraphQLInputMapper.js.map +1 -1
- package/components/AdvancedSearch/GraphQLInputMapper.test.js +179 -139
- package/components/AdvancedSearch/GraphQLInputMapper.test.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/QueryBuilder.js +57 -58
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/QueryBuilder.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/Details.js +25 -26
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/Details.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/Filter.js +51 -71
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/Filter.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/FilterOperationLabel.js +9 -13
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/FilterOperationLabel.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/GroupOperationLabel.js +14 -14
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/GroupOperationLabel.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/InputField.js +11 -20
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/InputField.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/OperationSelector.js +15 -25
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/OperationSelector.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/AddFilter.js +14 -17
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/AddFilter.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/AddGroup.js +11 -14
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/AddGroup.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/RemoveFilter.js +14 -18
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/RemoveFilter.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/index.js +0 -2
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/index.js +0 -2
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/index.js +0 -2
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawer.js +65 -67
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawer.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawerPresenter.js +110 -139
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawerPresenter.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawerPresenter.test.js +345 -328
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawerPresenter.test.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/index.js +0 -2
- package/components/AdvancedSearch/QueryManagerDialog/QueryManagerDialog.js +23 -27
- package/components/AdvancedSearch/QueryManagerDialog/QueryManagerDialog.js.map +1 -1
- package/components/AdvancedSearch/QueryManagerDialog/components/Description.js +8 -10
- package/components/AdvancedSearch/QueryManagerDialog/components/Description.js.map +1 -1
- package/components/AdvancedSearch/QueryManagerDialog/components/Empty.js +16 -17
- package/components/AdvancedSearch/QueryManagerDialog/components/Empty.js.map +1 -1
- package/components/AdvancedSearch/QueryManagerDialog/components/FilterList.js +41 -42
- package/components/AdvancedSearch/QueryManagerDialog/components/FilterList.js.map +1 -1
- package/components/AdvancedSearch/QueryManagerDialog/components/index.js +0 -2
- package/components/AdvancedSearch/QueryManagerDialog/index.js +0 -2
- package/components/AdvancedSearch/QuerySaverDialog/QuerySaverDialog.js +52 -59
- package/components/AdvancedSearch/QuerySaverDialog/QuerySaverDialog.js.map +1 -1
- package/components/AdvancedSearch/QuerySaverDialog/QuerySaverDialogPresenter.js +39 -52
- package/components/AdvancedSearch/QuerySaverDialog/QuerySaverDialogPresenter.js.map +1 -1
- package/components/AdvancedSearch/QuerySaverDialog/QuerySaverDialogPresenter.test.js +58 -66
- package/components/AdvancedSearch/QuerySaverDialog/QuerySaverDialogPresenter.test.js.map +1 -1
- package/components/AdvancedSearch/QuerySaverDialog/index.js +0 -2
- package/components/AdvancedSearch/SelectedFilter/SelectedFilter.js +18 -19
- package/components/AdvancedSearch/SelectedFilter/SelectedFilter.js.map +1 -1
- package/components/AdvancedSearch/SelectedFilter/index.js +0 -2
- package/components/AdvancedSearch/domain/Feedback.js +12 -11
- package/components/AdvancedSearch/domain/Feedback.js.map +1 -1
- package/components/AdvancedSearch/domain/Field.js +206 -190
- package/components/AdvancedSearch/domain/Field.js.map +1 -1
- package/components/AdvancedSearch/domain/FieldMapper.js +40 -41
- package/components/AdvancedSearch/domain/FieldMapper.js.map +1 -1
- package/components/AdvancedSearch/domain/Filter.js +64 -47
- package/components/AdvancedSearch/domain/Filter.js.map +1 -1
- package/components/AdvancedSearch/domain/FilterMapper.js +35 -34
- package/components/AdvancedSearch/domain/FilterMapper.js.map +1 -1
- package/components/AdvancedSearch/domain/FilterRepository.js +84 -85
- package/components/AdvancedSearch/domain/FilterRepository.js.map +1 -1
- package/components/AdvancedSearch/domain/FilterRepositoryFactory.js +8 -9
- package/components/AdvancedSearch/domain/FilterRepositoryFactory.js.map +1 -1
- package/components/AdvancedSearch/domain/Loading.js +47 -46
- package/components/AdvancedSearch/domain/Loading.js.map +1 -1
- package/components/AdvancedSearch/domain/Operation.js +5 -4
- package/components/AdvancedSearch/domain/Operation.js.map +1 -1
- package/components/AdvancedSearch/domain/Sorter.js +17 -16
- package/components/AdvancedSearch/domain/Sorter.js.map +1 -1
- package/components/AdvancedSearch/domain/index.js +0 -2
- package/components/AdvancedSearch/fields/Boolean.js +23 -25
- package/components/AdvancedSearch/fields/Boolean.js.map +1 -1
- package/components/AdvancedSearch/fields/DateWithTimezone.js +47 -52
- package/components/AdvancedSearch/fields/DateWithTimezone.js.map +1 -1
- package/components/AdvancedSearch/fields/DateWithoutTimezone.js +26 -30
- package/components/AdvancedSearch/fields/DateWithoutTimezone.js.map +1 -1
- package/components/AdvancedSearch/fields/Input.js +12 -14
- package/components/AdvancedSearch/fields/Input.js.map +1 -1
- package/components/AdvancedSearch/fields/PredefinedValues.js +17 -23
- package/components/AdvancedSearch/fields/PredefinedValues.js.map +1 -1
- package/components/AdvancedSearch/fields/index.js +0 -2
- package/components/AdvancedSearch/gateways/FiltersGatewayInterface.js +0 -3
- package/components/AdvancedSearch/gateways/FiltersGraphQLGateway.js +69 -121
- package/components/AdvancedSearch/gateways/FiltersGraphQLGateway.js.map +1 -1
- package/components/AdvancedSearch/gateways/filters.gql.js +9 -8
- package/components/AdvancedSearch/gateways/filters.gql.js.map +1 -1
- package/components/AdvancedSearch/gateways/filters.types.js +0 -3
- package/components/AdvancedSearch/gateways/index.js +0 -2
- package/components/AdvancedSearch/index.js +22 -24
- package/components/AdvancedSearch/index.js.map +1 -1
- package/components/AdvancedSearch/useFilterRepository.js +4 -3
- package/components/AdvancedSearch/useFilterRepository.js.map +1 -1
- package/components/AdvancedSearch/useInputField.js +4 -6
- package/components/AdvancedSearch/useInputField.js.map +1 -1
- package/components/Extensions/Extensions.js +23 -26
- package/components/Extensions/Extensions.js.map +1 -1
- package/components/Extensions/index.js +0 -2
- package/components/FolderGrid/FolderGridItem.js +67 -62
- package/components/FolderGrid/FolderGridItem.js.map +1 -1
- package/components/FolderGrid/index.js +0 -2
- package/components/FolderIcons/assets/folder-shared-icon.js +25 -0
- package/components/FolderIcons/assets/folder-shared-icon.js.map +1 -0
- package/components/FolderIcons/assets/folder.js +21 -0
- package/components/FolderIcons/assets/folder.js.map +1 -0
- package/components/FolderIcons/index.js +2 -5
- package/components/FolderPicker/FolderPicker.js +23 -20
- package/components/FolderPicker/FolderPicker.js.map +1 -1
- package/components/FolderTree/ButtonCreate/ButtonCreate.d.ts +1 -0
- package/components/FolderTree/ButtonCreate/ButtonCreate.js +17 -14
- package/components/FolderTree/ButtonCreate/ButtonCreate.js.map +1 -1
- package/components/FolderTree/ButtonCreate/index.js +0 -2
- package/components/FolderTree/Empty/Empty.js +5 -6
- package/components/FolderTree/Empty/Empty.js.map +1 -1
- package/components/FolderTree/Empty/index.js +0 -2
- package/components/FolderTree/List/List.js +120 -135
- package/components/FolderTree/List/List.js.map +1 -1
- package/components/FolderTree/List/index.js +0 -2
- package/components/FolderTree/List/utils.js +31 -64
- package/components/FolderTree/List/utils.js.map +1 -1
- package/components/FolderTree/Loader/Loader.js +15 -18
- package/components/FolderTree/Loader/Loader.js.map +1 -1
- package/components/FolderTree/Loader/index.js +0 -2
- package/components/FolderTree/MenuActions/MenuActions.js +19 -27
- package/components/FolderTree/MenuActions/MenuActions.js.map +1 -1
- package/components/FolderTree/MenuActions/index.js +0 -2
- package/components/FolderTree/Node/Node.js +27 -47
- package/components/FolderTree/Node/Node.js.map +1 -1
- package/components/FolderTree/Node/index.js +0 -2
- package/components/FolderTree/NodePreview/NodePreview.js +11 -14
- package/components/FolderTree/NodePreview/NodePreview.js.map +1 -1
- package/components/FolderTree/NodePreview/index.js +0 -2
- package/components/FolderTree/index.d.ts +2 -1
- package/components/FolderTree/index.js +47 -57
- package/components/FolderTree/index.js.map +1 -1
- package/components/Search/Search.js +15 -20
- package/components/Search/Search.js.map +1 -1
- package/components/Search/index.js +0 -2
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityDecorator.js +19 -20
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityDecorator.js.map +1 -1
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.js +17 -18
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.js.map +1 -1
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.test.js +113 -130
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.test.js.map +1 -1
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepository.js +26 -25
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepository.js.map +1 -1
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepositoryFactory.js +12 -11
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepositoryFactory.js.map +1 -1
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityUpdater.js +11 -12
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityUpdater.js.map +1 -1
- package/components/Table/components/Table/ColumnVisibility/IColumnsVisibilityRepository.js +0 -3
- package/components/Table/components/Table/ColumnVisibility/IColumnsVisibilityUpdater.js +0 -3
- package/components/Table/components/Table/ColumnVisibility/index.js +0 -2
- package/components/Table/components/Table/Columns/Column.js +18 -17
- package/components/Table/components/Table/Columns/Column.js.map +1 -1
- package/components/Table/components/Table/Columns/ColumnMapper.js +31 -31
- package/components/Table/components/Table/Columns/ColumnMapper.js.map +1 -1
- package/components/Table/components/Table/Columns/ColumnsPresenter.js +14 -13
- package/components/Table/components/Table/Columns/ColumnsPresenter.js.map +1 -1
- package/components/Table/components/Table/Columns/ColumnsPresenter.test.js +66 -60
- package/components/Table/components/Table/Columns/ColumnsPresenter.test.js.map +1 -1
- package/components/Table/components/Table/Columns/ColumnsRepository.js +15 -14
- package/components/Table/components/Table/Columns/ColumnsRepository.js.map +1 -1
- package/components/Table/components/Table/Columns/ColumnsRepositoryFactory.js +15 -11
- package/components/Table/components/Table/Columns/ColumnsRepositoryFactory.js.map +1 -1
- package/components/Table/components/Table/Columns/IColumnsRepository.js +0 -3
- package/components/Table/components/Table/Columns/index.js +0 -2
- package/components/Table/components/Table/Table.js +38 -32
- package/components/Table/components/Table/Table.js.map +1 -1
- package/components/Table/components/Table/TableInner.js +33 -40
- package/components/Table/components/Table/TableInner.js.map +1 -1
- package/components/Table/components/Table/TablePresenter.js +12 -9
- package/components/Table/components/Table/TablePresenter.js.map +1 -1
- package/components/Table/components/Table/gateways/ColumnsVisibilityLocalStorageGateway.js +12 -11
- package/components/Table/components/Table/gateways/ColumnsVisibilityLocalStorageGateway.js.map +1 -1
- package/components/Table/components/Table/gateways/IColumnsVisibilityGateway.js +0 -3
- package/components/Table/components/Table/gateways/index.js +0 -2
- package/components/Table/components/Table/index.js +0 -2
- package/components/Table/components/index.js +0 -2
- package/components/Table/createTableData.js +13 -16
- package/components/Table/createTableData.js.map +1 -1
- package/components/Table/index.js +0 -2
- package/components/Table/useTableRow.js +17 -29
- package/components/Table/useTableRow.js.map +1 -1
- package/components/index.js +0 -2
- package/config/AcoConfig.js +43 -30
- package/config/AcoConfig.js.map +1 -1
- package/config/advanced-search/FieldRenderer.js +27 -30
- package/config/advanced-search/FieldRenderer.js.map +1 -1
- package/config/advanced-search/index.js +3 -2
- package/config/advanced-search/index.js.map +1 -1
- package/config/folder/Action.js +27 -32
- package/config/folder/Action.js.map +1 -1
- package/config/folder/DropConfirmation.js +12 -13
- package/config/folder/DropConfirmation.js.map +1 -1
- package/config/folder/createFolderFieldDecoratorFactory.js +14 -18
- package/config/folder/createFolderFieldDecoratorFactory.js.map +1 -1
- package/config/folder/index.js +4 -3
- package/config/folder/index.js.map +1 -1
- package/config/index.js +0 -2
- package/config/record/Action.js +28 -33
- package/config/record/Action.js.map +1 -1
- package/config/record/index.js +3 -2
- package/config/record/index.js.map +1 -1
- package/config/table/Column.js +65 -81
- package/config/table/Column.js.map +1 -1
- package/config/table/Sorting.js +24 -27
- package/config/table/Sorting.js.map +1 -1
- package/config/table/index.js +4 -3
- package/config/table/index.js.map +1 -1
- package/constants.js +0 -2
- package/contexts/acoList.js +283 -384
- package/contexts/acoList.js.map +1 -1
- package/contexts/app.js +40 -53
- package/contexts/app.js.map +1 -1
- package/contexts/folder.js +11 -15
- package/contexts/folder.js.map +1 -1
- package/contexts/folders.js +27 -32
- package/contexts/folders.js.map +1 -1
- package/contexts/index.js +0 -2
- package/contexts/navigateFolder.js +49 -57
- package/contexts/navigateFolder.js.map +1 -1
- package/contexts/records.js +299 -422
- package/contexts/records.js.map +1 -1
- package/dialogs/DialogSetPermissions/UsersTeamsMultiAutocomplete.js +22 -29
- package/dialogs/DialogSetPermissions/UsersTeamsMultiAutocomplete.js.map +1 -1
- package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemGraphic.js +18 -21
- package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemGraphic.js.map +1 -1
- package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemMeta.js +105 -107
- package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemMeta.js.map +1 -1
- package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemText.js +11 -16
- package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemText.js.map +1 -1
- package/dialogs/DialogSetPermissions/UsersTeamsSelection.js +29 -34
- package/dialogs/DialogSetPermissions/UsersTeamsSelection.js.map +1 -1
- package/dialogs/DialogSetPermissions/graphql.js +3 -2
- package/dialogs/DialogSetPermissions/graphql.js.map +1 -1
- package/dialogs/ParentFolderField.js +12 -13
- package/dialogs/ParentFolderField.js.map +1 -1
- package/dialogs/index.js +0 -2
- package/dialogs/useConfirmMoveFolderDialog.js +16 -19
- package/dialogs/useConfirmMoveFolderDialog.js.map +1 -1
- package/dialogs/useCreateDialog.js +78 -93
- package/dialogs/useCreateDialog.js.map +1 -1
- package/dialogs/useDeleteDialog.js +27 -33
- package/dialogs/useDeleteDialog.js.map +1 -1
- package/dialogs/useEditDialog.js +77 -80
- package/dialogs/useEditDialog.js.map +1 -1
- package/dialogs/useMoveToFolderDialog.d.ts +1 -1
- package/dialogs/useMoveToFolderDialog.js +33 -49
- package/dialogs/useMoveToFolderDialog.js.map +1 -1
- package/dialogs/useSetPermissionsDialog.js +85 -87
- package/dialogs/useSetPermissionsDialog.js.map +1 -1
- package/domain/folder/Folder.js +25 -24
- package/domain/folder/Folder.js.map +1 -1
- package/domain/folder/FolderDto.js +0 -3
- package/domain/folder/FolderDtoMapper.js +24 -25
- package/domain/folder/FolderDtoMapper.js.map +1 -1
- package/domain/folder/FolderIdentity.js +16 -17
- package/domain/folder/FolderIdentity.js.map +1 -1
- package/domain/folder/RootFolder.js +24 -23
- package/domain/folder/RootFolder.js.map +1 -1
- package/exports/admin/aco.js +0 -2
- package/exports/admin/ui.js +0 -2
- package/features/folders/abstractions.js +6 -5
- package/features/folders/abstractions.js.map +1 -1
- package/features/folders/cache/FoldersCacheFactory.js +13 -12
- package/features/folders/cache/FoldersCacheFactory.js.map +1 -1
- package/features/folders/cache/ListCache.d.ts +2 -29
- package/features/folders/cache/ListCache.js +1 -43
- package/features/folders/cache/LoadedCache.js +33 -27
- package/features/folders/cache/LoadedCache.js.map +1 -1
- package/features/folders/cache/LoadedFoldersCacheFactory.js +13 -12
- package/features/folders/cache/LoadedFoldersCacheFactory.js.map +1 -1
- package/features/folders/cache/index.js +0 -2
- package/features/folders/createFolder/CreateFolder.test.js +44 -48
- package/features/folders/createFolder/CreateFolder.test.js.map +1 -1
- package/features/folders/createFolder/CreateFolderGqlGateway.js +27 -32
- package/features/folders/createFolder/CreateFolderGqlGateway.js.map +1 -1
- package/features/folders/createFolder/CreateFolderRepository.js +29 -24
- package/features/folders/createFolder/CreateFolderRepository.js.map +1 -1
- package/features/folders/createFolder/CreateFolderUseCase.js +20 -17
- package/features/folders/createFolder/CreateFolderUseCase.js.map +1 -1
- package/features/folders/createFolder/abstractions.js +4 -12
- package/features/folders/createFolder/abstractions.js.map +1 -1
- package/features/folders/createFolder/feature.js +15 -14
- package/features/folders/createFolder/feature.js.map +1 -1
- package/features/folders/createFolder/index.js +0 -2
- package/features/folders/createFolder/useCreateFolder.js +6 -9
- package/features/folders/createFolder/useCreateFolder.js.map +1 -1
- package/features/folders/deleteFolder/DeleteFolder.test.js +38 -39
- package/features/folders/deleteFolder/DeleteFolder.test.js.map +1 -1
- package/features/folders/deleteFolder/DeleteFolderGqlGateway.js +21 -28
- package/features/folders/deleteFolder/DeleteFolderGqlGateway.js.map +1 -1
- package/features/folders/deleteFolder/DeleteFolderRepository.js +16 -13
- package/features/folders/deleteFolder/DeleteFolderRepository.js.map +1 -1
- package/features/folders/deleteFolder/DeleteFolderUseCase.js +13 -10
- package/features/folders/deleteFolder/DeleteFolderUseCase.js.map +1 -1
- package/features/folders/deleteFolder/abstractions.js +4 -12
- package/features/folders/deleteFolder/abstractions.js.map +1 -1
- package/features/folders/deleteFolder/feature.js +15 -14
- package/features/folders/deleteFolder/feature.js.map +1 -1
- package/features/folders/deleteFolder/index.js +0 -2
- package/features/folders/deleteFolder/useDeleteFolder.js +6 -9
- package/features/folders/deleteFolder/useDeleteFolder.js.map +1 -1
- package/features/folders/feature.js +23 -29
- package/features/folders/feature.js.map +1 -1
- package/features/folders/folderModelProvider/FolderModelContext.js +17 -24
- package/features/folders/folderModelProvider/FolderModelContext.js.map +1 -1
- package/features/folders/folderModelProvider/FolderModelDto.js +0 -3
- package/features/folders/folderModelProvider/FolderModelProvider.js +23 -23
- package/features/folders/folderModelProvider/FolderModelProvider.js.map +1 -1
- package/features/folders/folderModelProvider/GetFolderModelGqlGateway.js +20 -26
- package/features/folders/folderModelProvider/GetFolderModelGqlGateway.js.map +1 -1
- package/features/folders/folderModelProvider/GetFolderModelRepository.js +25 -22
- package/features/folders/folderModelProvider/GetFolderModelRepository.js.map +1 -1
- package/features/folders/folderModelProvider/abstractions.js +3 -2
- package/features/folders/folderModelProvider/abstractions.js.map +1 -1
- package/features/folders/folderModelProvider/feature.js +15 -14
- package/features/folders/folderModelProvider/feature.js.map +1 -1
- package/features/folders/folderModelProvider/index.js +0 -2
- package/features/folders/getDescendantFolders/GetDescendantFolders.test.js +116 -110
- package/features/folders/getDescendantFolders/GetDescendantFolders.test.js.map +1 -1
- package/features/folders/getDescendantFolders/GetDescendantFoldersRepository.js +35 -35
- package/features/folders/getDescendantFolders/GetDescendantFoldersRepository.js.map +1 -1
- package/features/folders/getDescendantFolders/GetDescendantFoldersUseCase.js +13 -10
- package/features/folders/getDescendantFolders/GetDescendantFoldersUseCase.js.map +1 -1
- package/features/folders/getDescendantFolders/abstractions.js +3 -10
- package/features/folders/getDescendantFolders/abstractions.js.map +1 -1
- package/features/folders/getDescendantFolders/feature.js +14 -13
- package/features/folders/getDescendantFolders/feature.js.map +1 -1
- package/features/folders/getDescendantFolders/index.js +0 -2
- package/features/folders/getDescendantFolders/useGetDescendantFolders.js +6 -9
- package/features/folders/getDescendantFolders/useGetDescendantFolders.js.map +1 -1
- package/features/folders/getFolder/GetFolderGqlGateway.js +26 -31
- package/features/folders/getFolder/GetFolderGqlGateway.js.map +1 -1
- package/features/folders/getFolder/GetFolderRepository.js +18 -13
- package/features/folders/getFolder/GetFolderRepository.js.map +1 -1
- package/features/folders/getFolder/GetFolderUseCase.js +13 -10
- package/features/folders/getFolder/GetFolderUseCase.js.map +1 -1
- package/features/folders/getFolder/abstractions.js +4 -12
- package/features/folders/getFolder/abstractions.js.map +1 -1
- package/features/folders/getFolder/feature.js +15 -14
- package/features/folders/getFolder/feature.js.map +1 -1
- package/features/folders/getFolder/index.js +0 -2
- package/features/folders/getFolder/useGetFolder.js +6 -9
- package/features/folders/getFolder/useGetFolder.js.map +1 -1
- package/features/folders/getFolderAncestors/GetFolderAncestors.test.js +108 -103
- package/features/folders/getFolderAncestors/GetFolderAncestors.test.js.map +1 -1
- package/features/folders/getFolderAncestors/GetFolderAncestorsRepository.js +32 -30
- package/features/folders/getFolderAncestors/GetFolderAncestorsRepository.js.map +1 -1
- package/features/folders/getFolderAncestors/GetFolderAncestorsUseCase.js +13 -10
- package/features/folders/getFolderAncestors/GetFolderAncestorsUseCase.js.map +1 -1
- package/features/folders/getFolderAncestors/abstractions.js +3 -10
- package/features/folders/getFolderAncestors/abstractions.js.map +1 -1
- package/features/folders/getFolderAncestors/feature.js +14 -13
- package/features/folders/getFolderAncestors/feature.js.map +1 -1
- package/features/folders/getFolderAncestors/index.js +0 -2
- package/features/folders/getFolderAncestors/useGetFolderAncestors.js +6 -9
- package/features/folders/getFolderAncestors/useGetFolderAncestors.js.map +1 -1
- package/features/folders/getFolderExtensionsFields/GetFolderExtensionsFields.test.js +190 -160
- package/features/folders/getFolderExtensionsFields/GetFolderExtensionsFields.test.js.map +1 -1
- package/features/folders/getFolderExtensionsFields/GetFolderExtensionsFieldsUseCase.js +30 -29
- package/features/folders/getFolderExtensionsFields/GetFolderExtensionsFieldsUseCase.js.map +1 -1
- package/features/folders/getFolderExtensionsFields/abstractions.js +3 -8
- package/features/folders/getFolderExtensionsFields/abstractions.js.map +1 -1
- package/features/folders/getFolderExtensionsFields/feature.js +16 -18
- package/features/folders/getFolderExtensionsFields/feature.js.map +1 -1
- package/features/folders/getFolderExtensionsFields/filters/CmsNamespaceFilter.js +16 -17
- package/features/folders/getFolderExtensionsFields/filters/CmsNamespaceFilter.js.map +1 -1
- package/features/folders/getFolderExtensionsFields/filters/FmFileNamespaceFilter.js +13 -16
- package/features/folders/getFolderExtensionsFields/filters/FmFileNamespaceFilter.js.map +1 -1
- package/features/folders/getFolderExtensionsFields/filters/GlobalNamespaceFilter.js +7 -8
- package/features/folders/getFolderExtensionsFields/filters/GlobalNamespaceFilter.js.map +1 -1
- package/features/folders/getFolderExtensionsFields/index.js +0 -2
- package/features/folders/getFolderExtensionsFields/useFolderExtensionsFields.js +13 -14
- package/features/folders/getFolderExtensionsFields/useFolderExtensionsFields.js.map +1 -1
- package/features/folders/getFolderLevelPermission/GetFolderLevelPermission.test.js +135 -164
- package/features/folders/getFolderLevelPermission/GetFolderLevelPermission.test.js.map +1 -1
- package/features/folders/getFolderLevelPermission/GetFolderLevelPermissionUseCase.js +8 -7
- package/features/folders/getFolderLevelPermission/GetFolderLevelPermissionUseCase.js.map +1 -1
- package/features/folders/getFolderLevelPermission/abstractions.js +2 -1
- package/features/folders/getFolderLevelPermission/abstractions.js.map +1 -1
- package/features/folders/getFolderLevelPermission/decorators/GetFolderLevelPermissionWithFlpDecorator.js +17 -20
- package/features/folders/getFolderLevelPermission/decorators/GetFolderLevelPermissionWithFlpDecorator.js.map +1 -1
- package/features/folders/getFolderLevelPermission/feature.js +14 -16
- package/features/folders/getFolderLevelPermission/feature.js.map +1 -1
- package/features/folders/getFolderLevelPermission/index.js +0 -2
- package/features/folders/getFolderLevelPermission/useGetFolderLevelPermission.js +9 -10
- package/features/folders/getFolderLevelPermission/useGetFolderLevelPermission.js.map +1 -1
- package/features/folders/listFolders/ListFolders.test.js +98 -111
- package/features/folders/listFolders/ListFolders.test.js.map +1 -1
- package/features/folders/listFolders/ListFoldersGqlGateway.js +29 -27
- package/features/folders/listFolders/ListFoldersGqlGateway.js.map +1 -1
- package/features/folders/listFolders/ListFoldersRepository.js +19 -14
- package/features/folders/listFolders/ListFoldersRepository.js.map +1 -1
- package/features/folders/listFolders/ListFoldersUseCase.js +13 -10
- package/features/folders/listFolders/ListFoldersUseCase.js.map +1 -1
- package/features/folders/listFolders/ListFoldersUseCaseWithLoading.js +14 -11
- package/features/folders/listFolders/ListFoldersUseCaseWithLoading.js.map +1 -1
- package/features/folders/listFolders/abstractions.js +4 -3
- package/features/folders/listFolders/abstractions.js.map +1 -1
- package/features/folders/listFolders/feature.js +17 -23
- package/features/folders/listFolders/feature.js.map +1 -1
- package/features/folders/listFolders/index.js +0 -2
- package/features/folders/listFolders/useListFolders.js +35 -37
- package/features/folders/listFolders/useListFolders.js.map +1 -1
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.test.js +218 -203
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.test.js.map +1 -1
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsGqlGateway.js +31 -33
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsGqlGateway.js.map +1 -1
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepository.js +18 -13
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepository.js.map +1 -1
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCase.js +18 -15
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCase.js.map +1 -1
- package/features/folders/listFoldersByParentIds/abstractions.js +4 -3
- package/features/folders/listFoldersByParentIds/abstractions.js.map +1 -1
- package/features/folders/listFoldersByParentIds/decorators/RepositoryWithLoadedCache.js +20 -22
- package/features/folders/listFoldersByParentIds/decorators/RepositoryWithLoadedCache.js.map +1 -1
- package/features/folders/listFoldersByParentIds/decorators/UseCaseWithLoading.js +17 -18
- package/features/folders/listFoldersByParentIds/decorators/UseCaseWithLoading.js.map +1 -1
- package/features/folders/listFoldersByParentIds/feature.js +18 -26
- package/features/folders/listFoldersByParentIds/feature.js.map +1 -1
- package/features/folders/listFoldersByParentIds/index.js +0 -2
- package/features/folders/listFoldersByParentIds/useListFoldersByParentIds.js +40 -42
- package/features/folders/listFoldersByParentIds/useListFoldersByParentIds.js.map +1 -1
- package/features/folders/loadFolderHierarchy/LoadFolderHierarchy.test.js +134 -136
- package/features/folders/loadFolderHierarchy/LoadFolderHierarchy.test.js.map +1 -1
- package/features/folders/loadFolderHierarchy/LoadFolderHierarchyGqlGateway.js +31 -31
- package/features/folders/loadFolderHierarchy/LoadFolderHierarchyGqlGateway.js.map +1 -1
- package/features/folders/loadFolderHierarchy/LoadFolderHierarchyRepository.js +35 -40
- package/features/folders/loadFolderHierarchy/LoadFolderHierarchyRepository.js.map +1 -1
- package/features/folders/loadFolderHierarchy/LoadFolderHierarchyUseCase.js +13 -10
- package/features/folders/loadFolderHierarchy/LoadFolderHierarchyUseCase.js.map +1 -1
- package/features/folders/loadFolderHierarchy/LoadFolderHierarchyUseCaseWithLoading.js +14 -11
- package/features/folders/loadFolderHierarchy/LoadFolderHierarchyUseCaseWithLoading.js.map +1 -1
- package/features/folders/loadFolderHierarchy/abstractions.js +4 -3
- package/features/folders/loadFolderHierarchy/abstractions.js.map +1 -1
- package/features/folders/loadFolderHierarchy/feature.js +17 -23
- package/features/folders/loadFolderHierarchy/feature.js.map +1 -1
- package/features/folders/loadFolderHierarchy/index.js +0 -2
- package/features/folders/loadFolderHierarchy/useLoadFolderHierarchy.js +37 -42
- package/features/folders/loadFolderHierarchy/useLoadFolderHierarchy.js.map +1 -1
- package/features/folders/updateFolder/UpdateFolder.test.js +372 -384
- package/features/folders/updateFolder/UpdateFolder.test.js.map +1 -1
- package/features/folders/updateFolder/UpdateFolderGqlGateway.js +33 -45
- package/features/folders/updateFolder/UpdateFolderGqlGateway.js.map +1 -1
- package/features/folders/updateFolder/UpdateFolderRepository.js +26 -24
- package/features/folders/updateFolder/UpdateFolderRepository.js.map +1 -1
- package/features/folders/updateFolder/UpdateFolderUseCase.js +13 -10
- package/features/folders/updateFolder/UpdateFolderUseCase.js.map +1 -1
- package/features/folders/updateFolder/abstractions.js +4 -3
- package/features/folders/updateFolder/abstractions.js.map +1 -1
- package/features/folders/updateFolder/decorators/RepositoryWithPathChange.js +43 -64
- package/features/folders/updateFolder/decorators/RepositoryWithPathChange.js.map +1 -1
- package/features/folders/updateFolder/decorators/RepositoryWithPermissionsChange.js +44 -56
- package/features/folders/updateFolder/decorators/RepositoryWithPermissionsChange.js.map +1 -1
- package/features/folders/updateFolder/decorators/UseCaseWithLoading.js +14 -11
- package/features/folders/updateFolder/decorators/UseCaseWithLoading.js.map +1 -1
- package/features/folders/updateFolder/decorators/UseCaseWithoutInheritedPermissions.js +15 -15
- package/features/folders/updateFolder/decorators/UseCaseWithoutInheritedPermissions.js.map +1 -1
- package/features/folders/updateFolder/feature.js +20 -28
- package/features/folders/updateFolder/feature.js.map +1 -1
- package/features/folders/updateFolder/index.js +0 -2
- package/features/folders/updateFolder/useUpdateFolder.js +17 -19
- package/features/folders/updateFolder/useUpdateFolder.js.map +1 -1
- package/graphql/app.gql.js +3 -4
- package/graphql/app.gql.js.map +1 -1
- package/graphql/records/common.js +41 -39
- package/graphql/records/common.js.map +1 -1
- package/graphql/records/getRecord.js +2 -3
- package/graphql/records/getRecord.js.map +1 -1
- package/graphql/records/listRecords.js +22 -13
- package/graphql/records/listRecords.js.map +1 -1
- package/graphql/records/moveRecord.js +5 -6
- package/graphql/records/moveRecord.js.map +1 -1
- package/graphql/records/types.js +0 -3
- package/graphql/records.gql.js +0 -2
- package/handlers.js +17 -40
- package/handlers.js.map +1 -1
- package/hooks/index.js +0 -2
- package/hooks/useAcoApp.js +11 -12
- package/hooks/useAcoApp.js.map +1 -1
- package/hooks/useAcoList.js +5 -6
- package/hooks/useAcoList.js.map +1 -1
- package/hooks/useFolder.js +6 -7
- package/hooks/useFolder.js.map +1 -1
- package/hooks/useFolderModel.js +11 -13
- package/hooks/useFolderModel.js.map +1 -1
- package/hooks/useFoldersType.js +7 -12
- package/hooks/useFoldersType.js.map +1 -1
- package/hooks/useNavigateFolder.js +5 -6
- package/hooks/useNavigateFolder.js.map +1 -1
- package/hooks/useRecords.js +56 -77
- package/hooks/useRecords.js.map +1 -1
- package/hooks/useTags.js +21 -30
- package/hooks/useTags.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.js +3 -8
- package/package.json +22 -22
- package/presentation/folderTree/FolderTree.d.ts +19 -0
- package/presentation/folderTree/FolderTree.js +252 -0
- package/presentation/folderTree/FolderTree.js.map +1 -0
- package/presentation/folderTree/FolderTreeFieldRenderer.d.ts +13 -0
- package/presentation/folderTree/FolderTreeFieldRenderer.js +23 -0
- package/presentation/folderTree/FolderTreeFieldRenderer.js.map +1 -0
- package/presentation/folderTree/FolderTreePresenter.d.ts +51 -0
- package/presentation/folderTree/FolderTreePresenter.js +303 -0
- package/presentation/folderTree/FolderTreePresenter.js.map +1 -0
- package/presentation/folderTree/FolderTreePresenter.test.d.ts +1 -0
- package/presentation/folderTree/FolderTreePresenter.test.js +517 -0
- package/presentation/folderTree/FolderTreePresenter.test.js.map +1 -0
- package/presentation/folderTree/abstractions.d.ts +65 -0
- package/presentation/folderTree/abstractions.js +5 -0
- package/presentation/folderTree/abstractions.js.map +1 -0
- package/presentation/folderTree/feature.d.ts +3 -0
- package/presentation/folderTree/feature.js +17 -0
- package/presentation/folderTree/feature.js.map +1 -0
- package/presentation/folderTree/index.d.ts +5 -0
- package/presentation/folderTree/index.js +3 -0
- package/sorting.js +25 -28
- package/sorting.js.map +1 -1
- package/static/svg/folder-shared-icon.5d947e49.svg +5 -0
- package/static/svg/folder.f3d5c400.svg +4 -0
- package/table.types.js +0 -3
- package/types.js +10 -13
- package/types.js.map +1 -1
- package/components/Actions/DeleteFolder/index.js.map +0 -1
- package/components/Actions/EditFolder/index.js.map +0 -1
- package/components/Actions/SetFolderPemissions/index.js.map +0 -1
- package/components/Actions/index.js.map +0 -1
- package/components/AdvancedSearch/Button/index.js.map +0 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/index.js.map +0 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/index.js.map +0 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/index.js.map +0 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/index.js.map +0 -1
- package/components/AdvancedSearch/QueryManagerDialog/components/index.js.map +0 -1
- package/components/AdvancedSearch/QueryManagerDialog/index.js.map +0 -1
- package/components/AdvancedSearch/QuerySaverDialog/index.js.map +0 -1
- package/components/AdvancedSearch/SelectedFilter/index.js.map +0 -1
- package/components/AdvancedSearch/domain/index.js.map +0 -1
- package/components/AdvancedSearch/fields/index.js.map +0 -1
- package/components/AdvancedSearch/gateways/FiltersGatewayInterface.js.map +0 -1
- package/components/AdvancedSearch/gateways/filters.types.js.map +0 -1
- package/components/AdvancedSearch/gateways/index.js.map +0 -1
- package/components/Extensions/index.js.map +0 -1
- package/components/FolderGrid/index.js.map +0 -1
- package/components/FolderIcons/index.js.map +0 -1
- package/components/FolderTree/ButtonCreate/index.js.map +0 -1
- package/components/FolderTree/Empty/index.js.map +0 -1
- package/components/FolderTree/List/index.js.map +0 -1
- package/components/FolderTree/Loader/index.js.map +0 -1
- package/components/FolderTree/MenuActions/index.js.map +0 -1
- package/components/FolderTree/Node/index.js.map +0 -1
- package/components/FolderTree/NodePreview/index.js.map +0 -1
- package/components/Search/index.js.map +0 -1
- package/components/Table/components/Table/ColumnVisibility/IColumnsVisibilityRepository.js.map +0 -1
- package/components/Table/components/Table/ColumnVisibility/IColumnsVisibilityUpdater.js.map +0 -1
- package/components/Table/components/Table/ColumnVisibility/index.js.map +0 -1
- package/components/Table/components/Table/Columns/IColumnsRepository.js.map +0 -1
- package/components/Table/components/Table/Columns/index.js.map +0 -1
- package/components/Table/components/Table/gateways/IColumnsVisibilityGateway.js.map +0 -1
- package/components/Table/components/Table/gateways/index.js.map +0 -1
- package/components/Table/components/Table/index.js.map +0 -1
- package/components/Table/components/index.js.map +0 -1
- package/components/Table/index.js.map +0 -1
- package/components/index.js.map +0 -1
- package/config/index.js.map +0 -1
- package/constants.js.map +0 -1
- package/contexts/index.js.map +0 -1
- package/dialogs/index.js.map +0 -1
- package/domain/folder/FolderDto.js.map +0 -1
- package/exports/admin/aco.js.map +0 -1
- package/exports/admin/ui.js.map +0 -1
- package/features/folders/cache/ListCache.js.map +0 -1
- package/features/folders/cache/index.js.map +0 -1
- package/features/folders/createFolder/index.js.map +0 -1
- package/features/folders/deleteFolder/index.js.map +0 -1
- package/features/folders/folderModelProvider/FolderModelDto.js.map +0 -1
- package/features/folders/folderModelProvider/index.js.map +0 -1
- package/features/folders/getDescendantFolders/index.js.map +0 -1
- package/features/folders/getFolder/index.js.map +0 -1
- package/features/folders/getFolderAncestors/index.js.map +0 -1
- package/features/folders/getFolderExtensionsFields/index.js.map +0 -1
- package/features/folders/getFolderLevelPermission/index.js.map +0 -1
- package/features/folders/listFolders/index.js.map +0 -1
- package/features/folders/listFoldersByParentIds/index.js.map +0 -1
- package/features/folders/loadFolderHierarchy/index.js.map +0 -1
- package/features/folders/updateFolder/index.js.map +0 -1
- package/graphql/records/types.js.map +0 -1
- package/graphql/records.gql.js.map +0 -1
- package/hooks/index.js.map +0 -1
- package/index.js.map +0 -1
- package/table.types.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["describe","it","vi","expect","beforeEach","AdvancedSearchPresenter","FilterRepository","Operation","mockGateway","list","fn","get","create","update","delete","createMockGateway","deleteFn","namespace","demoFilter","field","value","condition","demoGroup","operation","AND","filters","filter1","id","name","description","groups","createdOn","Date","toString","filter2","gateway","mockImplementation","Promise","resolve","presenter","clearAllMocks","repository","load","toBeCalledTimes","vm","toEqual","appliedFilter","currentFilter","feedbackVm","isOpen","message","managerVm","view","isLoading","loadingLabel","builderVm","saverVm","loadPromise","toMatchObject","applyFilter","unsetFilter","editAppliedFilter","openManager","createFilter","filter","OR","saveFilter","persistPromise","persistFilter","toHaveBeenCalledWith","any","String","length","toBe","editFilter","renameFilter","cloneFilter","clonedFilter","deleteFilter","mockRejectedValue","Error","createGateway","updateGateway","showFeedback"],"sources":["AdvancedSearchPresenter.test.ts"],"sourcesContent":["import { describe, it, vi, expect, beforeEach } from \"vitest\";\nimport { AdvancedSearchPresenter } from \"./AdvancedSearchPresenter.js\";\nimport {\n type FilterDTO,\n type FilterGroupDTO,\n type FilterGroupFilterDTO,\n FilterRepository,\n Operation\n} from \"./domain/index.js\";\nimport { type FiltersGatewayInterface } from \"./gateways/index.js\";\n\nconst mockGateway: FiltersGatewayInterface = {\n list: vi.fn<FiltersGatewayInterface[\"list\"]>(),\n get: vi.fn<FiltersGatewayInterface[\"get\"]>(),\n create: vi.fn<FiltersGatewayInterface[\"create\"]>(),\n update: vi.fn<FiltersGatewayInterface[\"update\"]>(),\n delete: vi.fn<FiltersGatewayInterface[\"delete\"]>()\n};\n\nconst createMockGateway = ({\n list,\n get,\n create,\n update,\n delete: deleteFn\n}: Partial<FiltersGatewayInterface>): FiltersGatewayInterface => ({\n ...mockGateway,\n ...(list && { list }),\n ...(get && { get }),\n ...(create && { create }),\n ...(update && { update }),\n ...(deleteFn && { delete: deleteFn })\n});\n\ndescribe(\"AdvancedSearchPresenter\", () => {\n const namespace = \"namespace\";\n\n const demoFilter: FilterGroupFilterDTO = {\n field: \"any-field\",\n value: \"any-value\",\n condition: \"any-condition\"\n };\n\n const demoGroup: FilterGroupDTO = {\n operation: Operation.AND,\n filters: [demoFilter]\n };\n\n const filter1: FilterDTO = {\n id: \"filter-1\",\n name: \"Filter 1\",\n description: \"Filter description\",\n operation: Operation.AND,\n groups: [demoGroup],\n createdOn: new Date().toString()\n };\n\n const filter2: FilterDTO = {\n id: \"filter-2\",\n name: \"Filter 2\",\n operation: Operation.AND,\n groups: [demoGroup],\n createdOn: new Date().toString()\n };\n\n const gateway = createMockGateway({\n list: vi.fn<FiltersGatewayInterface[\"list\"]>().mockImplementation(() => {\n return Promise.resolve([filter1, filter2]);\n }),\n get: vi.fn<FiltersGatewayInterface[\"get\"]>().mockImplementation(() => {\n return Promise.resolve(filter1);\n }),\n create: vi.fn<FiltersGatewayInterface[\"create\"]>().mockImplementation(() => {\n return Promise.resolve(filter1);\n }),\n update: vi.fn<FiltersGatewayInterface[\"update\"]>().mockImplementation(() => {\n return Promise.resolve({ ...filter1, name: \"Filter 1 - Edit\" });\n }),\n delete: vi.fn<FiltersGatewayInterface[\"delete\"]>().mockImplementation(() => {\n return Promise.resolve(true);\n })\n });\n\n let presenter: AdvancedSearchPresenter;\n\n beforeEach(() => {\n vi.clearAllMocks();\n\n const repository = new FilterRepository(gateway, namespace);\n presenter = new AdvancedSearchPresenter(repository);\n });\n\n it(\"should create a presenter and list filters from the gateway\", async () => {\n // let's load some filters\n await presenter.load();\n\n expect(gateway.list).toBeCalledTimes(1);\n\n expect(presenter.vm).toEqual({\n appliedFilter: null,\n currentFilter: null,\n feedbackVm: {\n isOpen: false,\n message: \"\"\n },\n managerVm: {\n isOpen: false,\n view: \"LIST\",\n isLoading: false,\n loadingLabel: \"\",\n filters: [\n {\n id: filter1.id,\n name: filter1.name,\n description: filter1.description,\n createdOn: filter1.createdOn\n },\n {\n id: filter2.id,\n name: filter2.name,\n description: \"\",\n createdOn: filter2.createdOn\n }\n ]\n },\n builderVm: {\n isOpen: false\n },\n saverVm: {\n isOpen: false,\n isLoading: false,\n loadingLabel: \"\"\n }\n });\n });\n\n it(\"should transition to loading state and then to list state\", async () => {\n const loadPromise = presenter.load();\n\n expect(presenter.vm.managerVm).toMatchObject({\n isOpen: false,\n isLoading: true,\n loadingLabel: \"Listing filters\",\n view: \"EMPTY\",\n filters: []\n });\n\n await loadPromise;\n\n expect(presenter.vm.managerVm).toMatchObject({\n isOpen: false,\n isLoading: false,\n loadingLabel: \"\",\n view: \"LIST\"\n });\n });\n\n it(\"should be able to apply a filter via filterId\", async () => {\n // let's load some filters\n await presenter.load();\n\n // Let's apply a filter\n await presenter.applyFilter(\"filter-1\");\n\n expect(presenter.vm).toMatchObject({\n appliedFilter: filter1,\n currentFilter: null,\n managerVm: {\n isOpen: false\n },\n builderVm: {\n isOpen: false\n },\n saverVm: {\n isOpen: false\n }\n });\n });\n\n it(\"should be able to apply directly a filter\", async () => {\n // let's load some filters\n await presenter.load();\n\n // Let's apply a filter\n presenter.applyFilter(filter2);\n\n expect(presenter.vm).toMatchObject({\n appliedFilter: filter2,\n managerVm: {\n isOpen: false\n },\n builderVm: {\n isOpen: false\n },\n saverVm: {\n isOpen: false\n }\n });\n });\n\n it(\"should be able to unset a filter\", async () => {\n // let's load some filters\n await presenter.load();\n\n // Let's apply and unset the filter\n await presenter.applyFilter(\"filter-1\");\n presenter.unsetFilter();\n\n expect(presenter.vm).toMatchObject({\n appliedFilter: null,\n currentFilter: null\n });\n });\n\n it(\"should be able to edit an already applied filter\", async () => {\n // let's load some filters\n await presenter.load();\n\n // Let's apply and unset the filter\n await presenter.applyFilter(\"filter-1\");\n presenter.editAppliedFilter();\n\n expect(presenter.vm).toMatchObject({\n appliedFilter: filter1,\n currentFilter: filter1,\n builderVm: {\n isOpen: true\n }\n });\n });\n\n it(\"should be create a new filter\", async () => {\n // let's load some filters\n await presenter.load();\n\n // Let's open the filter manager\n presenter.openManager();\n expect(presenter.vm).toMatchObject({\n managerVm: {\n isOpen: true\n }\n });\n\n // Let's create a new filter via builder\n presenter.createFilter();\n expect(presenter.vm).toMatchObject({\n currentFilter: {\n id: \"\",\n name: \"Draft filter\",\n description: \"\",\n operation: Operation.AND,\n groups: [\n {\n operation: Operation.AND,\n filters: [\n {\n field: \"\",\n condition: \"\",\n value: \"\"\n }\n ]\n }\n ]\n },\n managerVm: {\n isOpen: false\n },\n builderVm: {\n isOpen: true\n },\n saverVm: {\n isOpen: false\n }\n });\n\n // Let's change the Filter and open the saver\n const filter = {\n id: \"\",\n name: \"Draft filter\",\n description: \"\",\n operation: Operation.AND,\n groups: [\n {\n operation: Operation.OR,\n filters: [\n {\n field: \"Field value\",\n condition: \"field_condition\",\n value: \"Any value\"\n }\n ]\n }\n ]\n };\n presenter.saveFilter(filter);\n expect(presenter.vm).toMatchObject({\n currentFilter: filter,\n managerVm: {\n isOpen: false\n },\n builderVm: {\n isOpen: true\n },\n saverVm: {\n isOpen: true\n }\n });\n\n // Let's save it via the gateway\n const persistPromise = presenter.persistFilter(filter);\n\n // Let's check the transition to loading state\n expect(presenter.vm.saverVm).toMatchObject({\n isOpen: true,\n isLoading: true,\n loadingLabel: \"Creating filter...\"\n });\n\n await persistPromise;\n\n expect(gateway.create).toBeCalledTimes(1);\n expect(gateway.create).toHaveBeenCalledWith({\n id: expect.any(String),\n name: \"Draft filter\",\n description: \"\",\n namespace,\n operation: Operation.AND,\n groups: [filter.groups[0]]\n });\n expect(presenter.vm).toMatchObject({\n managerVm: {\n isOpen: false\n },\n builderVm: {\n isOpen: false\n },\n saverVm: {\n isOpen: false\n },\n feedbackVm: {\n isOpen: true,\n message: 'Filter \"Draft filter\" was successfully created.'\n }\n });\n\n // Let's open the manager again and check if the new filter is there.\n // Be aware: data comes from the mocked gateway\n presenter.openManager();\n expect(presenter.vm.managerVm.filters.length).toBe(3);\n expect(presenter.vm.managerVm.filters[0]).toEqual({\n id: filter1.id,\n name: filter1.name,\n description: filter1.description,\n createdOn: filter1.createdOn\n });\n });\n\n it(\"should be able to update an existing filter\", async () => {\n // let's load some filters\n await presenter.load();\n\n // Let's open the filter manager\n presenter.openManager();\n expect(presenter.vm).toMatchObject({\n managerVm: {\n isOpen: true\n }\n });\n\n // Let's select a filter to edit in the builder\n await presenter.editFilter(\"filter-1\");\n expect(presenter.vm).toMatchObject({\n currentFilter: filter1,\n managerVm: {\n isOpen: false\n },\n builderVm: {\n isOpen: true\n },\n saverVm: {\n isOpen: false\n }\n });\n\n // Let's change the Filter and open the saver\n const filter = {\n ...filter1,\n groups: [\n {\n operation: Operation.OR,\n filters: [\n {\n field: \"Field value\",\n condition: \"field_condition\",\n value: \"Any value\"\n }\n ]\n }\n ]\n };\n presenter.saveFilter(filter);\n expect(presenter.vm).toMatchObject({\n currentFilter: filter,\n managerVm: {\n isOpen: false\n },\n builderVm: {\n isOpen: true\n },\n saverVm: {\n isOpen: true\n }\n });\n\n // Let's save it via the gateway\n const persistPromise = presenter.persistFilter(filter);\n\n // Let's check the transition to loading state\n expect(presenter.vm.saverVm).toMatchObject({\n isOpen: true,\n isLoading: true,\n loadingLabel: \"Updating filter...\"\n });\n\n await persistPromise;\n\n expect(gateway.update).toBeCalledTimes(1);\n expect(gateway.update).toHaveBeenCalledWith({\n id: \"filter-1\",\n name: \"Filter 1\",\n description: \"Filter description\",\n operation: Operation.AND,\n groups: [filter.groups[0]]\n });\n expect(presenter.vm).toMatchObject({\n managerVm: {\n isOpen: false\n },\n builderVm: {\n isOpen: false\n },\n saverVm: {\n isOpen: false\n },\n feedbackVm: {\n isOpen: true,\n message: 'Filter \"Filter 1\" was successfully updated.'\n }\n });\n\n // Let's open the manager again and check if the new data is there.\n // Be aware: data comes from the mocked gateway\n presenter.openManager();\n expect(presenter.vm.managerVm.filters.length).toBe(2);\n expect(presenter.vm.managerVm.filters[0]).toEqual({\n id: filter1.id,\n name: \"Filter 1 - Edit\",\n description: filter1.description,\n createdOn: filter1.createdOn\n });\n });\n\n it(\"should be able to rename a filter\", async () => {\n // let's load some filters\n await presenter.load();\n\n // Let's open the filter manager\n presenter.openManager();\n expect(presenter.vm).toMatchObject({\n managerVm: {\n isOpen: true\n }\n });\n\n // Let's rename a filter\n await presenter.renameFilter(\"filter-1\");\n\n expect(presenter.vm).toMatchObject({\n currentFilter: filter1,\n managerVm: {\n isOpen: false\n },\n builderVm: {\n isOpen: false\n },\n saverVm: {\n isOpen: true\n }\n });\n\n // Let's save it via the gateway\n const persistPromise = presenter.persistFilter({\n ...filter1,\n name: `${filter1.name} - Edit`\n });\n\n // Let's check the transition to loading state\n expect(presenter.vm.saverVm).toMatchObject({\n isOpen: true,\n isLoading: true,\n loadingLabel: \"Updating filter...\"\n });\n\n await persistPromise;\n\n expect(gateway.update).toBeCalledTimes(1);\n expect(gateway.update).toHaveBeenCalledWith({\n id: \"filter-1\",\n name: `${filter1.name} - Edit`,\n description: \"Filter description\",\n operation: Operation.AND,\n groups: [filter1.groups[0]]\n });\n expect(presenter.vm).toMatchObject({\n managerVm: {\n isOpen: false\n },\n builderVm: {\n isOpen: false\n },\n saverVm: {\n isOpen: false\n },\n feedbackVm: {\n isOpen: true,\n message: `Filter \"${filter1.name} - Edit\" was successfully updated.`\n }\n });\n\n // Let's open the manager again and check if the new data is there.\n // Be aware: data comes from the mocked gateway\n presenter.openManager();\n expect(presenter.vm.managerVm.filters.length).toBe(2);\n expect(presenter.vm.managerVm.filters[0]).toEqual({\n id: filter1.id,\n name: `${filter1.name} - Edit`,\n description: filter1.description,\n createdOn: filter1.createdOn\n });\n });\n\n it(\"should be able to clone a filter\", async () => {\n // let's load some filters\n await presenter.load();\n\n // Let's open the filter manager\n presenter.openManager();\n expect(presenter.vm).toMatchObject({\n managerVm: {\n isOpen: true\n }\n });\n\n // Let's clone a filter\n await presenter.cloneFilter(\"filter-1\");\n\n const clonedFilter = {\n ...filter1,\n id: \"\",\n name: `Clone of ${filter1.name}`\n };\n\n expect(presenter.vm).toMatchObject({\n currentFilter: clonedFilter,\n managerVm: {\n isOpen: false\n },\n builderVm: {\n isOpen: true\n },\n saverVm: {\n isOpen: false\n }\n });\n\n presenter.saveFilter(clonedFilter);\n expect(presenter.vm).toMatchObject({\n currentFilter: clonedFilter,\n managerVm: {\n isOpen: false\n },\n builderVm: {\n isOpen: true\n },\n saverVm: {\n isOpen: true\n }\n });\n\n // Let's save it via the gateway\n const persistPromise = presenter.persistFilter(clonedFilter);\n\n // Let's check the transition to loading state\n expect(presenter.vm.saverVm).toMatchObject({\n isOpen: true,\n isLoading: true,\n loadingLabel: \"Creating filter...\"\n });\n\n await persistPromise;\n\n expect(gateway.create).toBeCalledTimes(1);\n expect(gateway.create).toHaveBeenCalledWith({\n id: expect.any(String),\n name: `Clone of ${filter1.name}`,\n description: \"Filter description\",\n namespace,\n operation: Operation.AND,\n groups: [filter1.groups[0]]\n });\n expect(presenter.vm).toMatchObject({\n managerVm: {\n isOpen: false\n },\n builderVm: {\n isOpen: false\n },\n saverVm: {\n isOpen: false\n },\n feedbackVm: {\n isOpen: true,\n message: `Filter \"Clone of ${filter1.name}\" was successfully created.`\n }\n });\n\n // Let's open the manager again and check if the new data is there\n presenter.openManager();\n expect(presenter.vm.managerVm.filters.length).toBe(3);\n });\n\n it(\"should be able to delete a filter\", async () => {\n // let's load some filters\n await presenter.load();\n\n // Let's open the filter manager\n presenter.openManager();\n expect(presenter.vm).toMatchObject({\n managerVm: {\n isOpen: true\n }\n });\n\n // Let's delete a filter\n await presenter.deleteFilter(\"filter-1\");\n expect(gateway.delete).toBeCalledTimes(1);\n expect(gateway.delete).toHaveBeenCalledWith(\"filter-1\");\n expect(presenter.vm).toMatchObject({\n currentFilter: null,\n feedbackVm: {\n isOpen: true,\n message: 'Filter \"Filter 1\" was successfully deleted.'\n }\n });\n\n // Let's check if the filter has been deleted and is not in the manager.\n // Be aware: data comes from the mocked gateway\n presenter.openManager();\n expect(presenter.vm.managerVm.filters.length).toBe(1);\n expect(presenter.vm.managerVm.filters[0]).toEqual({\n id: filter2.id,\n name: filter2.name,\n description: \"\",\n createdOn: filter2.createdOn\n });\n });\n\n it(\"should be able to handle an empty list - error from the gateway\", async () => {\n const message = \"Gateway error while listing filters\";\n const gateway = createMockGateway({\n list: vi.fn<FiltersGatewayInterface[\"list\"]>().mockRejectedValue(new Error(message))\n });\n\n const repository = new FilterRepository(gateway, namespace);\n const presenter = new AdvancedSearchPresenter(repository);\n\n // Let's load the app, without filters\n await presenter.load();\n\n expect(presenter.vm).toMatchObject({\n managerVm: {\n isOpen: false,\n view: \"EMPTY\",\n loadingLabel: \"\",\n filters: []\n },\n feedbackVm: {\n isOpen: true,\n message\n }\n });\n });\n\n it(\"should be able to handle error while creating the filter\", async () => {\n const message = \"Gateway error while creating filter\";\n const createGateway = createMockGateway({\n ...gateway,\n create: vi.fn<FiltersGatewayInterface[\"create\"]>().mockRejectedValue(new Error(message))\n });\n\n const repository = new FilterRepository(createGateway, namespace);\n const presenter = new AdvancedSearchPresenter(repository);\n\n // Let's load some filters\n await presenter.load();\n\n // Let's try to save a Filter\n const filter = {\n id: \"\",\n name: \"Draft filter\",\n description: \"\",\n operation: Operation.AND,\n groups: [\n {\n operation: Operation.OR,\n filters: [\n {\n field: \"Field value\",\n condition: \"field_condition\",\n value: \"Any value\"\n }\n ]\n }\n ]\n };\n\n await presenter.persistFilter(filter);\n\n expect(presenter.vm).toMatchObject({\n feedbackVm: {\n isOpen: true,\n message\n }\n });\n });\n\n it(\"should be able to handle error while updating a filter\", async () => {\n const message = \"Gateway error while updating filter\";\n const updateGateway = createMockGateway({\n ...gateway,\n update: vi.fn<FiltersGatewayInterface[\"update\"]>().mockRejectedValue(new Error(message))\n });\n\n const repository = new FilterRepository(updateGateway, namespace);\n const presenter = new AdvancedSearchPresenter(repository);\n\n // Let's load some filters\n await presenter.load();\n\n // Let's try to save a Filter\n const filter = {\n ...filter1,\n name: filter1 + \" - Edit\"\n };\n\n await presenter.persistFilter(filter);\n\n expect(presenter.vm).toMatchObject({\n feedbackVm: {\n isOpen: true,\n message\n }\n });\n });\n\n it(\"should be able to handle error while deleting a filter\", async () => {\n const message = \"Gateway error while deleting filter\";\n const updateGateway = createMockGateway({\n ...gateway,\n delete: vi.fn<FiltersGatewayInterface[\"delete\"]>().mockRejectedValue(new Error(message))\n });\n\n const repository = new FilterRepository(updateGateway, namespace);\n const presenter = new AdvancedSearchPresenter(repository);\n\n // Let's load some filters\n await presenter.load();\n\n await presenter.deleteFilter(filter1.id);\n\n expect(presenter.vm).toMatchObject({\n feedbackVm: {\n isOpen: true,\n message\n }\n });\n });\n\n it(\"should be able to show a feedback message\", async () => {\n // let's load some filters\n await presenter.load();\n\n // Let's show any random feedback message\n presenter.showFeedback(\"Any message\");\n expect(presenter.vm).toMatchObject({\n currentFilter: null,\n feedbackVm: {\n isOpen: true,\n message: \"Any message\"\n }\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"components/AdvancedSearch/AdvancedSearchPresenter.test.js","sources":["../../../src/components/AdvancedSearch/AdvancedSearchPresenter.test.ts"],"sourcesContent":["import { describe, it, vi, expect, beforeEach } from \"vitest\";\nimport { AdvancedSearchPresenter } from \"./AdvancedSearchPresenter.js\";\nimport {\n type FilterDTO,\n type FilterGroupDTO,\n type FilterGroupFilterDTO,\n FilterRepository,\n Operation\n} from \"./domain/index.js\";\nimport { type FiltersGatewayInterface } from \"./gateways/index.js\";\n\nconst mockGateway: FiltersGatewayInterface = {\n list: vi.fn<FiltersGatewayInterface[\"list\"]>(),\n get: vi.fn<FiltersGatewayInterface[\"get\"]>(),\n create: vi.fn<FiltersGatewayInterface[\"create\"]>(),\n update: vi.fn<FiltersGatewayInterface[\"update\"]>(),\n delete: vi.fn<FiltersGatewayInterface[\"delete\"]>()\n};\n\nconst createMockGateway = ({\n list,\n get,\n create,\n update,\n delete: deleteFn\n}: Partial<FiltersGatewayInterface>): FiltersGatewayInterface => ({\n ...mockGateway,\n ...(list && { list }),\n ...(get && { get }),\n ...(create && { create }),\n ...(update && { update }),\n ...(deleteFn && { delete: deleteFn })\n});\n\ndescribe(\"AdvancedSearchPresenter\", () => {\n const namespace = \"namespace\";\n\n const demoFilter: FilterGroupFilterDTO = {\n field: \"any-field\",\n value: \"any-value\",\n condition: \"any-condition\"\n };\n\n const demoGroup: FilterGroupDTO = {\n operation: Operation.AND,\n filters: [demoFilter]\n };\n\n const filter1: FilterDTO = {\n id: \"filter-1\",\n name: \"Filter 1\",\n description: \"Filter description\",\n operation: Operation.AND,\n groups: [demoGroup],\n createdOn: new Date().toString()\n };\n\n const filter2: FilterDTO = {\n id: \"filter-2\",\n name: \"Filter 2\",\n operation: Operation.AND,\n groups: [demoGroup],\n createdOn: new Date().toString()\n };\n\n const gateway = createMockGateway({\n list: vi.fn<FiltersGatewayInterface[\"list\"]>().mockImplementation(() => {\n return Promise.resolve([filter1, filter2]);\n }),\n get: vi.fn<FiltersGatewayInterface[\"get\"]>().mockImplementation(() => {\n return Promise.resolve(filter1);\n }),\n create: vi.fn<FiltersGatewayInterface[\"create\"]>().mockImplementation(() => {\n return Promise.resolve(filter1);\n }),\n update: vi.fn<FiltersGatewayInterface[\"update\"]>().mockImplementation(() => {\n return Promise.resolve({ ...filter1, name: \"Filter 1 - Edit\" });\n }),\n delete: vi.fn<FiltersGatewayInterface[\"delete\"]>().mockImplementation(() => {\n return Promise.resolve(true);\n })\n });\n\n let presenter: AdvancedSearchPresenter;\n\n beforeEach(() => {\n vi.clearAllMocks();\n\n const repository = new FilterRepository(gateway, namespace);\n presenter = new AdvancedSearchPresenter(repository);\n });\n\n it(\"should create a presenter and list filters from the gateway\", async () => {\n // let's load some filters\n await presenter.load();\n\n expect(gateway.list).toBeCalledTimes(1);\n\n expect(presenter.vm).toEqual({\n appliedFilter: null,\n currentFilter: null,\n feedbackVm: {\n isOpen: false,\n message: \"\"\n },\n managerVm: {\n isOpen: false,\n view: \"LIST\",\n isLoading: false,\n loadingLabel: \"\",\n filters: [\n {\n id: filter1.id,\n name: filter1.name,\n description: filter1.description,\n createdOn: filter1.createdOn\n },\n {\n id: filter2.id,\n name: filter2.name,\n description: \"\",\n createdOn: filter2.createdOn\n }\n ]\n },\n builderVm: {\n isOpen: false\n },\n saverVm: {\n isOpen: false,\n isLoading: false,\n loadingLabel: \"\"\n }\n });\n });\n\n it(\"should transition to loading state and then to list state\", async () => {\n const loadPromise = presenter.load();\n\n expect(presenter.vm.managerVm).toMatchObject({\n isOpen: false,\n isLoading: true,\n loadingLabel: \"Listing filters\",\n view: \"EMPTY\",\n filters: []\n });\n\n await loadPromise;\n\n expect(presenter.vm.managerVm).toMatchObject({\n isOpen: false,\n isLoading: false,\n loadingLabel: \"\",\n view: \"LIST\"\n });\n });\n\n it(\"should be able to apply a filter via filterId\", async () => {\n // let's load some filters\n await presenter.load();\n\n // Let's apply a filter\n await presenter.applyFilter(\"filter-1\");\n\n expect(presenter.vm).toMatchObject({\n appliedFilter: filter1,\n currentFilter: null,\n managerVm: {\n isOpen: false\n },\n builderVm: {\n isOpen: false\n },\n saverVm: {\n isOpen: false\n }\n });\n });\n\n it(\"should be able to apply directly a filter\", async () => {\n // let's load some filters\n await presenter.load();\n\n // Let's apply a filter\n presenter.applyFilter(filter2);\n\n expect(presenter.vm).toMatchObject({\n appliedFilter: filter2,\n managerVm: {\n isOpen: false\n },\n builderVm: {\n isOpen: false\n },\n saverVm: {\n isOpen: false\n }\n });\n });\n\n it(\"should be able to unset a filter\", async () => {\n // let's load some filters\n await presenter.load();\n\n // Let's apply and unset the filter\n await presenter.applyFilter(\"filter-1\");\n presenter.unsetFilter();\n\n expect(presenter.vm).toMatchObject({\n appliedFilter: null,\n currentFilter: null\n });\n });\n\n it(\"should be able to edit an already applied filter\", async () => {\n // let's load some filters\n await presenter.load();\n\n // Let's apply and unset the filter\n await presenter.applyFilter(\"filter-1\");\n presenter.editAppliedFilter();\n\n expect(presenter.vm).toMatchObject({\n appliedFilter: filter1,\n currentFilter: filter1,\n builderVm: {\n isOpen: true\n }\n });\n });\n\n it(\"should be create a new filter\", async () => {\n // let's load some filters\n await presenter.load();\n\n // Let's open the filter manager\n presenter.openManager();\n expect(presenter.vm).toMatchObject({\n managerVm: {\n isOpen: true\n }\n });\n\n // Let's create a new filter via builder\n presenter.createFilter();\n expect(presenter.vm).toMatchObject({\n currentFilter: {\n id: \"\",\n name: \"Draft filter\",\n description: \"\",\n operation: Operation.AND,\n groups: [\n {\n operation: Operation.AND,\n filters: [\n {\n field: \"\",\n condition: \"\",\n value: \"\"\n }\n ]\n }\n ]\n },\n managerVm: {\n isOpen: false\n },\n builderVm: {\n isOpen: true\n },\n saverVm: {\n isOpen: false\n }\n });\n\n // Let's change the Filter and open the saver\n const filter = {\n id: \"\",\n name: \"Draft filter\",\n description: \"\",\n operation: Operation.AND,\n groups: [\n {\n operation: Operation.OR,\n filters: [\n {\n field: \"Field value\",\n condition: \"field_condition\",\n value: \"Any value\"\n }\n ]\n }\n ]\n };\n presenter.saveFilter(filter);\n expect(presenter.vm).toMatchObject({\n currentFilter: filter,\n managerVm: {\n isOpen: false\n },\n builderVm: {\n isOpen: true\n },\n saverVm: {\n isOpen: true\n }\n });\n\n // Let's save it via the gateway\n const persistPromise = presenter.persistFilter(filter);\n\n // Let's check the transition to loading state\n expect(presenter.vm.saverVm).toMatchObject({\n isOpen: true,\n isLoading: true,\n loadingLabel: \"Creating filter...\"\n });\n\n await persistPromise;\n\n expect(gateway.create).toBeCalledTimes(1);\n expect(gateway.create).toHaveBeenCalledWith({\n id: expect.any(String),\n name: \"Draft filter\",\n description: \"\",\n namespace,\n operation: Operation.AND,\n groups: [filter.groups[0]]\n });\n expect(presenter.vm).toMatchObject({\n managerVm: {\n isOpen: false\n },\n builderVm: {\n isOpen: false\n },\n saverVm: {\n isOpen: false\n },\n feedbackVm: {\n isOpen: true,\n message: 'Filter \"Draft filter\" was successfully created.'\n }\n });\n\n // Let's open the manager again and check if the new filter is there.\n // Be aware: data comes from the mocked gateway\n presenter.openManager();\n expect(presenter.vm.managerVm.filters.length).toBe(3);\n expect(presenter.vm.managerVm.filters[0]).toEqual({\n id: filter1.id,\n name: filter1.name,\n description: filter1.description,\n createdOn: filter1.createdOn\n });\n });\n\n it(\"should be able to update an existing filter\", async () => {\n // let's load some filters\n await presenter.load();\n\n // Let's open the filter manager\n presenter.openManager();\n expect(presenter.vm).toMatchObject({\n managerVm: {\n isOpen: true\n }\n });\n\n // Let's select a filter to edit in the builder\n await presenter.editFilter(\"filter-1\");\n expect(presenter.vm).toMatchObject({\n currentFilter: filter1,\n managerVm: {\n isOpen: false\n },\n builderVm: {\n isOpen: true\n },\n saverVm: {\n isOpen: false\n }\n });\n\n // Let's change the Filter and open the saver\n const filter = {\n ...filter1,\n groups: [\n {\n operation: Operation.OR,\n filters: [\n {\n field: \"Field value\",\n condition: \"field_condition\",\n value: \"Any value\"\n }\n ]\n }\n ]\n };\n presenter.saveFilter(filter);\n expect(presenter.vm).toMatchObject({\n currentFilter: filter,\n managerVm: {\n isOpen: false\n },\n builderVm: {\n isOpen: true\n },\n saverVm: {\n isOpen: true\n }\n });\n\n // Let's save it via the gateway\n const persistPromise = presenter.persistFilter(filter);\n\n // Let's check the transition to loading state\n expect(presenter.vm.saverVm).toMatchObject({\n isOpen: true,\n isLoading: true,\n loadingLabel: \"Updating filter...\"\n });\n\n await persistPromise;\n\n expect(gateway.update).toBeCalledTimes(1);\n expect(gateway.update).toHaveBeenCalledWith({\n id: \"filter-1\",\n name: \"Filter 1\",\n description: \"Filter description\",\n operation: Operation.AND,\n groups: [filter.groups[0]]\n });\n expect(presenter.vm).toMatchObject({\n managerVm: {\n isOpen: false\n },\n builderVm: {\n isOpen: false\n },\n saverVm: {\n isOpen: false\n },\n feedbackVm: {\n isOpen: true,\n message: 'Filter \"Filter 1\" was successfully updated.'\n }\n });\n\n // Let's open the manager again and check if the new data is there.\n // Be aware: data comes from the mocked gateway\n presenter.openManager();\n expect(presenter.vm.managerVm.filters.length).toBe(2);\n expect(presenter.vm.managerVm.filters[0]).toEqual({\n id: filter1.id,\n name: \"Filter 1 - Edit\",\n description: filter1.description,\n createdOn: filter1.createdOn\n });\n });\n\n it(\"should be able to rename a filter\", async () => {\n // let's load some filters\n await presenter.load();\n\n // Let's open the filter manager\n presenter.openManager();\n expect(presenter.vm).toMatchObject({\n managerVm: {\n isOpen: true\n }\n });\n\n // Let's rename a filter\n await presenter.renameFilter(\"filter-1\");\n\n expect(presenter.vm).toMatchObject({\n currentFilter: filter1,\n managerVm: {\n isOpen: false\n },\n builderVm: {\n isOpen: false\n },\n saverVm: {\n isOpen: true\n }\n });\n\n // Let's save it via the gateway\n const persistPromise = presenter.persistFilter({\n ...filter1,\n name: `${filter1.name} - Edit`\n });\n\n // Let's check the transition to loading state\n expect(presenter.vm.saverVm).toMatchObject({\n isOpen: true,\n isLoading: true,\n loadingLabel: \"Updating filter...\"\n });\n\n await persistPromise;\n\n expect(gateway.update).toBeCalledTimes(1);\n expect(gateway.update).toHaveBeenCalledWith({\n id: \"filter-1\",\n name: `${filter1.name} - Edit`,\n description: \"Filter description\",\n operation: Operation.AND,\n groups: [filter1.groups[0]]\n });\n expect(presenter.vm).toMatchObject({\n managerVm: {\n isOpen: false\n },\n builderVm: {\n isOpen: false\n },\n saverVm: {\n isOpen: false\n },\n feedbackVm: {\n isOpen: true,\n message: `Filter \"${filter1.name} - Edit\" was successfully updated.`\n }\n });\n\n // Let's open the manager again and check if the new data is there.\n // Be aware: data comes from the mocked gateway\n presenter.openManager();\n expect(presenter.vm.managerVm.filters.length).toBe(2);\n expect(presenter.vm.managerVm.filters[0]).toEqual({\n id: filter1.id,\n name: `${filter1.name} - Edit`,\n description: filter1.description,\n createdOn: filter1.createdOn\n });\n });\n\n it(\"should be able to clone a filter\", async () => {\n // let's load some filters\n await presenter.load();\n\n // Let's open the filter manager\n presenter.openManager();\n expect(presenter.vm).toMatchObject({\n managerVm: {\n isOpen: true\n }\n });\n\n // Let's clone a filter\n await presenter.cloneFilter(\"filter-1\");\n\n const clonedFilter = {\n ...filter1,\n id: \"\",\n name: `Clone of ${filter1.name}`\n };\n\n expect(presenter.vm).toMatchObject({\n currentFilter: clonedFilter,\n managerVm: {\n isOpen: false\n },\n builderVm: {\n isOpen: true\n },\n saverVm: {\n isOpen: false\n }\n });\n\n presenter.saveFilter(clonedFilter);\n expect(presenter.vm).toMatchObject({\n currentFilter: clonedFilter,\n managerVm: {\n isOpen: false\n },\n builderVm: {\n isOpen: true\n },\n saverVm: {\n isOpen: true\n }\n });\n\n // Let's save it via the gateway\n const persistPromise = presenter.persistFilter(clonedFilter);\n\n // Let's check the transition to loading state\n expect(presenter.vm.saverVm).toMatchObject({\n isOpen: true,\n isLoading: true,\n loadingLabel: \"Creating filter...\"\n });\n\n await persistPromise;\n\n expect(gateway.create).toBeCalledTimes(1);\n expect(gateway.create).toHaveBeenCalledWith({\n id: expect.any(String),\n name: `Clone of ${filter1.name}`,\n description: \"Filter description\",\n namespace,\n operation: Operation.AND,\n groups: [filter1.groups[0]]\n });\n expect(presenter.vm).toMatchObject({\n managerVm: {\n isOpen: false\n },\n builderVm: {\n isOpen: false\n },\n saverVm: {\n isOpen: false\n },\n feedbackVm: {\n isOpen: true,\n message: `Filter \"Clone of ${filter1.name}\" was successfully created.`\n }\n });\n\n // Let's open the manager again and check if the new data is there\n presenter.openManager();\n expect(presenter.vm.managerVm.filters.length).toBe(3);\n });\n\n it(\"should be able to delete a filter\", async () => {\n // let's load some filters\n await presenter.load();\n\n // Let's open the filter manager\n presenter.openManager();\n expect(presenter.vm).toMatchObject({\n managerVm: {\n isOpen: true\n }\n });\n\n // Let's delete a filter\n await presenter.deleteFilter(\"filter-1\");\n expect(gateway.delete).toBeCalledTimes(1);\n expect(gateway.delete).toHaveBeenCalledWith(\"filter-1\");\n expect(presenter.vm).toMatchObject({\n currentFilter: null,\n feedbackVm: {\n isOpen: true,\n message: 'Filter \"Filter 1\" was successfully deleted.'\n }\n });\n\n // Let's check if the filter has been deleted and is not in the manager.\n // Be aware: data comes from the mocked gateway\n presenter.openManager();\n expect(presenter.vm.managerVm.filters.length).toBe(1);\n expect(presenter.vm.managerVm.filters[0]).toEqual({\n id: filter2.id,\n name: filter2.name,\n description: \"\",\n createdOn: filter2.createdOn\n });\n });\n\n it(\"should be able to handle an empty list - error from the gateway\", async () => {\n const message = \"Gateway error while listing filters\";\n const gateway = createMockGateway({\n list: vi.fn<FiltersGatewayInterface[\"list\"]>().mockRejectedValue(new Error(message))\n });\n\n const repository = new FilterRepository(gateway, namespace);\n const presenter = new AdvancedSearchPresenter(repository);\n\n // Let's load the app, without filters\n await presenter.load();\n\n expect(presenter.vm).toMatchObject({\n managerVm: {\n isOpen: false,\n view: \"EMPTY\",\n loadingLabel: \"\",\n filters: []\n },\n feedbackVm: {\n isOpen: true,\n message\n }\n });\n });\n\n it(\"should be able to handle error while creating the filter\", async () => {\n const message = \"Gateway error while creating filter\";\n const createGateway = createMockGateway({\n ...gateway,\n create: vi.fn<FiltersGatewayInterface[\"create\"]>().mockRejectedValue(new Error(message))\n });\n\n const repository = new FilterRepository(createGateway, namespace);\n const presenter = new AdvancedSearchPresenter(repository);\n\n // Let's load some filters\n await presenter.load();\n\n // Let's try to save a Filter\n const filter = {\n id: \"\",\n name: \"Draft filter\",\n description: \"\",\n operation: Operation.AND,\n groups: [\n {\n operation: Operation.OR,\n filters: [\n {\n field: \"Field value\",\n condition: \"field_condition\",\n value: \"Any value\"\n }\n ]\n }\n ]\n };\n\n await presenter.persistFilter(filter);\n\n expect(presenter.vm).toMatchObject({\n feedbackVm: {\n isOpen: true,\n message\n }\n });\n });\n\n it(\"should be able to handle error while updating a filter\", async () => {\n const message = \"Gateway error while updating filter\";\n const updateGateway = createMockGateway({\n ...gateway,\n update: vi.fn<FiltersGatewayInterface[\"update\"]>().mockRejectedValue(new Error(message))\n });\n\n const repository = new FilterRepository(updateGateway, namespace);\n const presenter = new AdvancedSearchPresenter(repository);\n\n // Let's load some filters\n await presenter.load();\n\n // Let's try to save a Filter\n const filter = {\n ...filter1,\n name: filter1 + \" - Edit\"\n };\n\n await presenter.persistFilter(filter);\n\n expect(presenter.vm).toMatchObject({\n feedbackVm: {\n isOpen: true,\n message\n }\n });\n });\n\n it(\"should be able to handle error while deleting a filter\", async () => {\n const message = \"Gateway error while deleting filter\";\n const updateGateway = createMockGateway({\n ...gateway,\n delete: vi.fn<FiltersGatewayInterface[\"delete\"]>().mockRejectedValue(new Error(message))\n });\n\n const repository = new FilterRepository(updateGateway, namespace);\n const presenter = new AdvancedSearchPresenter(repository);\n\n // Let's load some filters\n await presenter.load();\n\n await presenter.deleteFilter(filter1.id);\n\n expect(presenter.vm).toMatchObject({\n feedbackVm: {\n isOpen: true,\n message\n }\n });\n });\n\n it(\"should be able to show a feedback message\", async () => {\n // let's load some filters\n await presenter.load();\n\n // Let's show any random feedback message\n presenter.showFeedback(\"Any message\");\n expect(presenter.vm).toMatchObject({\n currentFilter: null,\n feedbackVm: {\n isOpen: true,\n message: \"Any message\"\n }\n });\n });\n});\n"],"names":["mockGateway","vi","createMockGateway","list","get","create","update","deleteFn","describe","namespace","demoFilter","demoGroup","Operation","filter1","Date","filter2","gateway","Promise","presenter","beforeEach","repository","FilterRepository","AdvancedSearchPresenter","it","expect","loadPromise","filter","persistPromise","String","clonedFilter","message","Error","createGateway","updateGateway"],"mappings":";;;AAWA,MAAMA,cAAuC;IACzC,MAAMC,GAAG,EAAE;IACX,KAAKA,GAAG,EAAE;IACV,QAAQA,GAAG,EAAE;IACb,QAAQA,GAAG,EAAE;IACb,QAAQA,GAAG,EAAE;AACjB;AAEA,MAAMC,oBAAoB,CAAC,EACvBC,IAAI,EACJC,GAAG,EACHC,MAAM,EACNC,MAAM,EACN,QAAQC,QAAQ,EACe,GAA+B;QAC9D,GAAGP,WAAW;QACd,GAAIG,QAAQ;YAAEA;QAAK,CAAC;QACpB,GAAIC,OAAO;YAAEA;QAAI,CAAC;QAClB,GAAIC,UAAU;YAAEA;QAAO,CAAC;QACxB,GAAIC,UAAU;YAAEA;QAAO,CAAC;QACxB,GAAIC,YAAY;YAAE,QAAQA;QAAS,CAAC;IACxC;AAEAC,SAAS,2BAA2B;IAChC,MAAMC,YAAY;IAElB,MAAMC,aAAmC;QACrC,OAAO;QACP,OAAO;QACP,WAAW;IACf;IAEA,MAAMC,YAA4B;QAC9B,WAAWC,UAAU,GAAG;QACxB,SAAS;YAACF;SAAW;IACzB;IAEA,MAAMG,UAAqB;QACvB,IAAI;QACJ,MAAM;QACN,aAAa;QACb,WAAWD,UAAU,GAAG;QACxB,QAAQ;YAACD;SAAU;QACnB,WAAW,IAAIG,OAAO,QAAQ;IAClC;IAEA,MAAMC,UAAqB;QACvB,IAAI;QACJ,MAAM;QACN,WAAWH,UAAU,GAAG;QACxB,QAAQ;YAACD;SAAU;QACnB,WAAW,IAAIG,OAAO,QAAQ;IAClC;IAEA,MAAME,UAAUd,kBAAkB;QAC9B,MAAMD,GAAG,EAAE,GAAoC,kBAAkB,CAAC,IACvDgB,QAAQ,OAAO,CAAC;gBAACJ;gBAASE;aAAQ;QAE7C,KAAKd,GAAG,EAAE,GAAmC,kBAAkB,CAAC,IACrDgB,QAAQ,OAAO,CAACJ;QAE3B,QAAQZ,GAAG,EAAE,GAAsC,kBAAkB,CAAC,IAC3DgB,QAAQ,OAAO,CAACJ;QAE3B,QAAQZ,GAAG,EAAE,GAAsC,kBAAkB,CAAC,IAC3DgB,QAAQ,OAAO,CAAC;gBAAE,GAAGJ,OAAO;gBAAE,MAAM;YAAkB;QAEjE,QAAQZ,GAAG,EAAE,GAAsC,kBAAkB,CAAC,IAC3DgB,QAAQ,OAAO,CAAC;IAE/B;IAEA,IAAIC;IAEJC,WAAW;QACPlB,GAAG,aAAa;QAEhB,MAAMmB,aAAa,IAAIC,iBAAiBL,SAASP;QACjDS,YAAY,IAAII,wBAAwBF;IAC5C;IAEAG,GAAG,+DAA+D;QAE9D,MAAML,UAAU,IAAI;QAEpBM,OAAOR,QAAQ,IAAI,EAAE,eAAe,CAAC;QAErCQ,OAAON,UAAU,EAAE,EAAE,OAAO,CAAC;YACzB,eAAe;YACf,eAAe;YACf,YAAY;gBACR,QAAQ;gBACR,SAAS;YACb;YACA,WAAW;gBACP,QAAQ;gBACR,MAAM;gBACN,WAAW;gBACX,cAAc;gBACd,SAAS;oBACL;wBACI,IAAIL,QAAQ,EAAE;wBACd,MAAMA,QAAQ,IAAI;wBAClB,aAAaA,QAAQ,WAAW;wBAChC,WAAWA,QAAQ,SAAS;oBAChC;oBACA;wBACI,IAAIE,QAAQ,EAAE;wBACd,MAAMA,QAAQ,IAAI;wBAClB,aAAa;wBACb,WAAWA,QAAQ,SAAS;oBAChC;iBACH;YACL;YACA,WAAW;gBACP,QAAQ;YACZ;YACA,SAAS;gBACL,QAAQ;gBACR,WAAW;gBACX,cAAc;YAClB;QACJ;IACJ;IAEAQ,GAAG,6DAA6D;QAC5D,MAAME,cAAcP,UAAU,IAAI;QAElCM,OAAON,UAAU,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC;YACzC,QAAQ;YACR,WAAW;YACX,cAAc;YACd,MAAM;YACN,SAAS,EAAE;QACf;QAEA,MAAMO;QAEND,OAAON,UAAU,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC;YACzC,QAAQ;YACR,WAAW;YACX,cAAc;YACd,MAAM;QACV;IACJ;IAEAK,GAAG,iDAAiD;QAEhD,MAAML,UAAU,IAAI;QAGpB,MAAMA,UAAU,WAAW,CAAC;QAE5BM,OAAON,UAAU,EAAE,EAAE,aAAa,CAAC;YAC/B,eAAeL;YACf,eAAe;YACf,WAAW;gBACP,QAAQ;YACZ;YACA,WAAW;gBACP,QAAQ;YACZ;YACA,SAAS;gBACL,QAAQ;YACZ;QACJ;IACJ;IAEAU,GAAG,6CAA6C;QAE5C,MAAML,UAAU,IAAI;QAGpBA,UAAU,WAAW,CAACH;QAEtBS,OAAON,UAAU,EAAE,EAAE,aAAa,CAAC;YAC/B,eAAeH;YACf,WAAW;gBACP,QAAQ;YACZ;YACA,WAAW;gBACP,QAAQ;YACZ;YACA,SAAS;gBACL,QAAQ;YACZ;QACJ;IACJ;IAEAQ,GAAG,oCAAoC;QAEnC,MAAML,UAAU,IAAI;QAGpB,MAAMA,UAAU,WAAW,CAAC;QAC5BA,UAAU,WAAW;QAErBM,OAAON,UAAU,EAAE,EAAE,aAAa,CAAC;YAC/B,eAAe;YACf,eAAe;QACnB;IACJ;IAEAK,GAAG,oDAAoD;QAEnD,MAAML,UAAU,IAAI;QAGpB,MAAMA,UAAU,WAAW,CAAC;QAC5BA,UAAU,iBAAiB;QAE3BM,OAAON,UAAU,EAAE,EAAE,aAAa,CAAC;YAC/B,eAAeL;YACf,eAAeA;YACf,WAAW;gBACP,QAAQ;YACZ;QACJ;IACJ;IAEAU,GAAG,iCAAiC;QAEhC,MAAML,UAAU,IAAI;QAGpBA,UAAU,WAAW;QACrBM,OAAON,UAAU,EAAE,EAAE,aAAa,CAAC;YAC/B,WAAW;gBACP,QAAQ;YACZ;QACJ;QAGAA,UAAU,YAAY;QACtBM,OAAON,UAAU,EAAE,EAAE,aAAa,CAAC;YAC/B,eAAe;gBACX,IAAI;gBACJ,MAAM;gBACN,aAAa;gBACb,WAAWN,UAAU,GAAG;gBACxB,QAAQ;oBACJ;wBACI,WAAWA,UAAU,GAAG;wBACxB,SAAS;4BACL;gCACI,OAAO;gCACP,WAAW;gCACX,OAAO;4BACX;yBACH;oBACL;iBACH;YACL;YACA,WAAW;gBACP,QAAQ;YACZ;YACA,WAAW;gBACP,QAAQ;YACZ;YACA,SAAS;gBACL,QAAQ;YACZ;QACJ;QAGA,MAAMc,SAAS;YACX,IAAI;YACJ,MAAM;YACN,aAAa;YACb,WAAWd,UAAU,GAAG;YACxB,QAAQ;gBACJ;oBACI,WAAWA,UAAU,EAAE;oBACvB,SAAS;wBACL;4BACI,OAAO;4BACP,WAAW;4BACX,OAAO;wBACX;qBACH;gBACL;aACH;QACL;QACAM,UAAU,UAAU,CAACQ;QACrBF,OAAON,UAAU,EAAE,EAAE,aAAa,CAAC;YAC/B,eAAeQ;YACf,WAAW;gBACP,QAAQ;YACZ;YACA,WAAW;gBACP,QAAQ;YACZ;YACA,SAAS;gBACL,QAAQ;YACZ;QACJ;QAGA,MAAMC,iBAAiBT,UAAU,aAAa,CAACQ;QAG/CF,OAAON,UAAU,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;YACvC,QAAQ;YACR,WAAW;YACX,cAAc;QAClB;QAEA,MAAMS;QAENH,OAAOR,QAAQ,MAAM,EAAE,eAAe,CAAC;QACvCQ,OAAOR,QAAQ,MAAM,EAAE,oBAAoB,CAAC;YACxC,IAAIQ,OAAO,GAAG,CAACI;YACf,MAAM;YACN,aAAa;YACbnB;YACA,WAAWG,UAAU,GAAG;YACxB,QAAQ;gBAACc,OAAO,MAAM,CAAC,EAAE;aAAC;QAC9B;QACAF,OAAON,UAAU,EAAE,EAAE,aAAa,CAAC;YAC/B,WAAW;gBACP,QAAQ;YACZ;YACA,WAAW;gBACP,QAAQ;YACZ;YACA,SAAS;gBACL,QAAQ;YACZ;YACA,YAAY;gBACR,QAAQ;gBACR,SAAS;YACb;QACJ;QAIAA,UAAU,WAAW;QACrBM,OAAON,UAAU,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;QACnDM,OAAON,UAAU,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC;YAC9C,IAAIL,QAAQ,EAAE;YACd,MAAMA,QAAQ,IAAI;YAClB,aAAaA,QAAQ,WAAW;YAChC,WAAWA,QAAQ,SAAS;QAChC;IACJ;IAEAU,GAAG,+CAA+C;QAE9C,MAAML,UAAU,IAAI;QAGpBA,UAAU,WAAW;QACrBM,OAAON,UAAU,EAAE,EAAE,aAAa,CAAC;YAC/B,WAAW;gBACP,QAAQ;YACZ;QACJ;QAGA,MAAMA,UAAU,UAAU,CAAC;QAC3BM,OAAON,UAAU,EAAE,EAAE,aAAa,CAAC;YAC/B,eAAeL;YACf,WAAW;gBACP,QAAQ;YACZ;YACA,WAAW;gBACP,QAAQ;YACZ;YACA,SAAS;gBACL,QAAQ;YACZ;QACJ;QAGA,MAAMa,SAAS;YACX,GAAGb,OAAO;YACV,QAAQ;gBACJ;oBACI,WAAWD,UAAU,EAAE;oBACvB,SAAS;wBACL;4BACI,OAAO;4BACP,WAAW;4BACX,OAAO;wBACX;qBACH;gBACL;aACH;QACL;QACAM,UAAU,UAAU,CAACQ;QACrBF,OAAON,UAAU,EAAE,EAAE,aAAa,CAAC;YAC/B,eAAeQ;YACf,WAAW;gBACP,QAAQ;YACZ;YACA,WAAW;gBACP,QAAQ;YACZ;YACA,SAAS;gBACL,QAAQ;YACZ;QACJ;QAGA,MAAMC,iBAAiBT,UAAU,aAAa,CAACQ;QAG/CF,OAAON,UAAU,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;YACvC,QAAQ;YACR,WAAW;YACX,cAAc;QAClB;QAEA,MAAMS;QAENH,OAAOR,QAAQ,MAAM,EAAE,eAAe,CAAC;QACvCQ,OAAOR,QAAQ,MAAM,EAAE,oBAAoB,CAAC;YACxC,IAAI;YACJ,MAAM;YACN,aAAa;YACb,WAAWJ,UAAU,GAAG;YACxB,QAAQ;gBAACc,OAAO,MAAM,CAAC,EAAE;aAAC;QAC9B;QACAF,OAAON,UAAU,EAAE,EAAE,aAAa,CAAC;YAC/B,WAAW;gBACP,QAAQ;YACZ;YACA,WAAW;gBACP,QAAQ;YACZ;YACA,SAAS;gBACL,QAAQ;YACZ;YACA,YAAY;gBACR,QAAQ;gBACR,SAAS;YACb;QACJ;QAIAA,UAAU,WAAW;QACrBM,OAAON,UAAU,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;QACnDM,OAAON,UAAU,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC;YAC9C,IAAIL,QAAQ,EAAE;YACd,MAAM;YACN,aAAaA,QAAQ,WAAW;YAChC,WAAWA,QAAQ,SAAS;QAChC;IACJ;IAEAU,GAAG,qCAAqC;QAEpC,MAAML,UAAU,IAAI;QAGpBA,UAAU,WAAW;QACrBM,OAAON,UAAU,EAAE,EAAE,aAAa,CAAC;YAC/B,WAAW;gBACP,QAAQ;YACZ;QACJ;QAGA,MAAMA,UAAU,YAAY,CAAC;QAE7BM,OAAON,UAAU,EAAE,EAAE,aAAa,CAAC;YAC/B,eAAeL;YACf,WAAW;gBACP,QAAQ;YACZ;YACA,WAAW;gBACP,QAAQ;YACZ;YACA,SAAS;gBACL,QAAQ;YACZ;QACJ;QAGA,MAAMc,iBAAiBT,UAAU,aAAa,CAAC;YAC3C,GAAGL,OAAO;YACV,MAAM,GAAGA,QAAQ,IAAI,CAAC,OAAO,CAAC;QAClC;QAGAW,OAAON,UAAU,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;YACvC,QAAQ;YACR,WAAW;YACX,cAAc;QAClB;QAEA,MAAMS;QAENH,OAAOR,QAAQ,MAAM,EAAE,eAAe,CAAC;QACvCQ,OAAOR,QAAQ,MAAM,EAAE,oBAAoB,CAAC;YACxC,IAAI;YACJ,MAAM,GAAGH,QAAQ,IAAI,CAAC,OAAO,CAAC;YAC9B,aAAa;YACb,WAAWD,UAAU,GAAG;YACxB,QAAQ;gBAACC,QAAQ,MAAM,CAAC,EAAE;aAAC;QAC/B;QACAW,OAAON,UAAU,EAAE,EAAE,aAAa,CAAC;YAC/B,WAAW;gBACP,QAAQ;YACZ;YACA,WAAW;gBACP,QAAQ;YACZ;YACA,SAAS;gBACL,QAAQ;YACZ;YACA,YAAY;gBACR,QAAQ;gBACR,SAAS,CAAC,QAAQ,EAAEL,QAAQ,IAAI,CAAC,kCAAkC,CAAC;YACxE;QACJ;QAIAK,UAAU,WAAW;QACrBM,OAAON,UAAU,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;QACnDM,OAAON,UAAU,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC;YAC9C,IAAIL,QAAQ,EAAE;YACd,MAAM,GAAGA,QAAQ,IAAI,CAAC,OAAO,CAAC;YAC9B,aAAaA,QAAQ,WAAW;YAChC,WAAWA,QAAQ,SAAS;QAChC;IACJ;IAEAU,GAAG,oCAAoC;QAEnC,MAAML,UAAU,IAAI;QAGpBA,UAAU,WAAW;QACrBM,OAAON,UAAU,EAAE,EAAE,aAAa,CAAC;YAC/B,WAAW;gBACP,QAAQ;YACZ;QACJ;QAGA,MAAMA,UAAU,WAAW,CAAC;QAE5B,MAAMW,eAAe;YACjB,GAAGhB,OAAO;YACV,IAAI;YACJ,MAAM,CAAC,SAAS,EAAEA,QAAQ,IAAI,EAAE;QACpC;QAEAW,OAAON,UAAU,EAAE,EAAE,aAAa,CAAC;YAC/B,eAAeW;YACf,WAAW;gBACP,QAAQ;YACZ;YACA,WAAW;gBACP,QAAQ;YACZ;YACA,SAAS;gBACL,QAAQ;YACZ;QACJ;QAEAX,UAAU,UAAU,CAACW;QACrBL,OAAON,UAAU,EAAE,EAAE,aAAa,CAAC;YAC/B,eAAeW;YACf,WAAW;gBACP,QAAQ;YACZ;YACA,WAAW;gBACP,QAAQ;YACZ;YACA,SAAS;gBACL,QAAQ;YACZ;QACJ;QAGA,MAAMF,iBAAiBT,UAAU,aAAa,CAACW;QAG/CL,OAAON,UAAU,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;YACvC,QAAQ;YACR,WAAW;YACX,cAAc;QAClB;QAEA,MAAMS;QAENH,OAAOR,QAAQ,MAAM,EAAE,eAAe,CAAC;QACvCQ,OAAOR,QAAQ,MAAM,EAAE,oBAAoB,CAAC;YACxC,IAAIQ,OAAO,GAAG,CAACI;YACf,MAAM,CAAC,SAAS,EAAEf,QAAQ,IAAI,EAAE;YAChC,aAAa;YACbJ;YACA,WAAWG,UAAU,GAAG;YACxB,QAAQ;gBAACC,QAAQ,MAAM,CAAC,EAAE;aAAC;QAC/B;QACAW,OAAON,UAAU,EAAE,EAAE,aAAa,CAAC;YAC/B,WAAW;gBACP,QAAQ;YACZ;YACA,WAAW;gBACP,QAAQ;YACZ;YACA,SAAS;gBACL,QAAQ;YACZ;YACA,YAAY;gBACR,QAAQ;gBACR,SAAS,CAAC,iBAAiB,EAAEL,QAAQ,IAAI,CAAC,2BAA2B,CAAC;YAC1E;QACJ;QAGAK,UAAU,WAAW;QACrBM,OAAON,UAAU,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;IACvD;IAEAK,GAAG,qCAAqC;QAEpC,MAAML,UAAU,IAAI;QAGpBA,UAAU,WAAW;QACrBM,OAAON,UAAU,EAAE,EAAE,aAAa,CAAC;YAC/B,WAAW;gBACP,QAAQ;YACZ;QACJ;QAGA,MAAMA,UAAU,YAAY,CAAC;QAC7BM,OAAOR,QAAQ,MAAM,EAAE,eAAe,CAAC;QACvCQ,OAAOR,QAAQ,MAAM,EAAE,oBAAoB,CAAC;QAC5CQ,OAAON,UAAU,EAAE,EAAE,aAAa,CAAC;YAC/B,eAAe;YACf,YAAY;gBACR,QAAQ;gBACR,SAAS;YACb;QACJ;QAIAA,UAAU,WAAW;QACrBM,OAAON,UAAU,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;QACnDM,OAAON,UAAU,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC;YAC9C,IAAIH,QAAQ,EAAE;YACd,MAAMA,QAAQ,IAAI;YAClB,aAAa;YACb,WAAWA,QAAQ,SAAS;QAChC;IACJ;IAEAQ,GAAG,mEAAmE;QAClE,MAAMO,UAAU;QAChB,MAAMd,UAAUd,kBAAkB;YAC9B,MAAMD,GAAG,EAAE,GAAoC,iBAAiB,CAAC,IAAI8B,MAAMD;QAC/E;QAEA,MAAMV,aAAa,IAAIC,iBAAiBL,SAASP;QACjD,MAAMS,YAAY,IAAII,wBAAwBF;QAG9C,MAAMF,UAAU,IAAI;QAEpBM,OAAON,UAAU,EAAE,EAAE,aAAa,CAAC;YAC/B,WAAW;gBACP,QAAQ;gBACR,MAAM;gBACN,cAAc;gBACd,SAAS,EAAE;YACf;YACA,YAAY;gBACR,QAAQ;gBACRY;YACJ;QACJ;IACJ;IAEAP,GAAG,4DAA4D;QAC3D,MAAMO,UAAU;QAChB,MAAME,gBAAgB9B,kBAAkB;YACpC,GAAGc,OAAO;YACV,QAAQf,GAAG,EAAE,GAAsC,iBAAiB,CAAC,IAAI8B,MAAMD;QACnF;QAEA,MAAMV,aAAa,IAAIC,iBAAiBW,eAAevB;QACvD,MAAMS,YAAY,IAAII,wBAAwBF;QAG9C,MAAMF,UAAU,IAAI;QAGpB,MAAMQ,SAAS;YACX,IAAI;YACJ,MAAM;YACN,aAAa;YACb,WAAWd,UAAU,GAAG;YACxB,QAAQ;gBACJ;oBACI,WAAWA,UAAU,EAAE;oBACvB,SAAS;wBACL;4BACI,OAAO;4BACP,WAAW;4BACX,OAAO;wBACX;qBACH;gBACL;aACH;QACL;QAEA,MAAMM,UAAU,aAAa,CAACQ;QAE9BF,OAAON,UAAU,EAAE,EAAE,aAAa,CAAC;YAC/B,YAAY;gBACR,QAAQ;gBACRY;YACJ;QACJ;IACJ;IAEAP,GAAG,0DAA0D;QACzD,MAAMO,UAAU;QAChB,MAAMG,gBAAgB/B,kBAAkB;YACpC,GAAGc,OAAO;YACV,QAAQf,GAAG,EAAE,GAAsC,iBAAiB,CAAC,IAAI8B,MAAMD;QACnF;QAEA,MAAMV,aAAa,IAAIC,iBAAiBY,eAAexB;QACvD,MAAMS,YAAY,IAAII,wBAAwBF;QAG9C,MAAMF,UAAU,IAAI;QAGpB,MAAMQ,SAAS;YACX,GAAGb,OAAO;YACV,MAAMA,UAAU;QACpB;QAEA,MAAMK,UAAU,aAAa,CAACQ;QAE9BF,OAAON,UAAU,EAAE,EAAE,aAAa,CAAC;YAC/B,YAAY;gBACR,QAAQ;gBACRY;YACJ;QACJ;IACJ;IAEAP,GAAG,0DAA0D;QACzD,MAAMO,UAAU;QAChB,MAAMG,gBAAgB/B,kBAAkB;YACpC,GAAGc,OAAO;YACV,QAAQf,GAAG,EAAE,GAAsC,iBAAiB,CAAC,IAAI8B,MAAMD;QACnF;QAEA,MAAMV,aAAa,IAAIC,iBAAiBY,eAAexB;QACvD,MAAMS,YAAY,IAAII,wBAAwBF;QAG9C,MAAMF,UAAU,IAAI;QAEpB,MAAMA,UAAU,YAAY,CAACL,QAAQ,EAAE;QAEvCW,OAAON,UAAU,EAAE,EAAE,aAAa,CAAC;YAC/B,YAAY;gBACR,QAAQ;gBACRY;YACJ;QACJ;IACJ;IAEAP,GAAG,6CAA6C;QAE5C,MAAML,UAAU,IAAI;QAGpBA,UAAU,YAAY,CAAC;QACvBM,OAAON,UAAU,EAAE,EAAE,aAAa,CAAC;YAC/B,eAAe;YACf,YAAY;gBACR,QAAQ;gBACR,SAAS;YACb;QACJ;IACJ;AACJ"}
|
|
@@ -1,18 +1,15 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { Button
|
|
3
|
-
import { ReactComponent
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
variant: "secondary"
|
|
15
|
-
});
|
|
16
|
-
};
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { Button, Icon } from "@webiny/admin-ui";
|
|
3
|
+
import { ReactComponent } from "@webiny/icons/tune.svg";
|
|
4
|
+
const Button_Button = ({ onClick })=>/*#__PURE__*/ react.createElement(Button, {
|
|
5
|
+
onClick: onClick,
|
|
6
|
+
text: "Advanced search filter",
|
|
7
|
+
icon: /*#__PURE__*/ react.createElement(Icon, {
|
|
8
|
+
label: "Advanced search filter",
|
|
9
|
+
icon: /*#__PURE__*/ react.createElement(ReactComponent, null)
|
|
10
|
+
}),
|
|
11
|
+
variant: "secondary"
|
|
12
|
+
});
|
|
13
|
+
export { Button_Button as Button };
|
|
17
14
|
|
|
18
15
|
//# sourceMappingURL=Button.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"components/AdvancedSearch/Button/Button.js","sources":["../../../../src/components/AdvancedSearch/Button/Button.tsx"],"sourcesContent":["import React from \"react\";\nimport { Button as UIButton, Icon } from \"@webiny/admin-ui\";\nimport { ReactComponent as SettingsIcon } from \"@webiny/icons/tune.svg\";\n\nexport interface ButtonProps {\n onClick: () => void;\n}\n\nexport const Button = ({ onClick }: ButtonProps) => {\n return (\n <UIButton\n onClick={onClick}\n text={\"Advanced search filter\"}\n icon={<Icon label={\"Advanced search filter\"} icon={<SettingsIcon />} />}\n variant={\"secondary\"}\n />\n );\n};\n"],"names":["Button","onClick","UIButton","Icon","SettingsIcon"],"mappings":";;;AAQO,MAAMA,gBAAS,CAAC,EAAEC,OAAO,EAAe,GACpC,WAAP,GACI,oBAACC,QAAQA;QACL,SAASD;QACT,MAAM;QACN,oBAAM,oBAACE,MAAIA;YAAC,OAAO;YAA0B,oBAAM,oBAACC,gBAAYA;;QAChE,SAAS"}
|
|
@@ -1,48 +1,37 @@
|
|
|
1
1
|
import get from "lodash/get.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
return {
|
|
5
|
-
[configuration.operation]: configuration.groups.map(group => {
|
|
2
|
+
class GraphQLInputMapper {
|
|
3
|
+
static toGraphQL(configuration) {
|
|
6
4
|
return {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
} catch {
|
|
22
|
-
return this.createNestedObject(this.createKeys(field, condition), this.convertToBooleanOrString(value));
|
|
23
|
-
}
|
|
24
|
-
})
|
|
5
|
+
[configuration.operation]: configuration.groups.map((group)=>({
|
|
6
|
+
[group.operation]: group.filters.map((filter)=>{
|
|
7
|
+
const { field, condition, value } = filter;
|
|
8
|
+
const keys = field.trim().split(".");
|
|
9
|
+
keys.shift();
|
|
10
|
+
if (0 === keys.length) return this.createNestedObject(this.createKeys(field, condition), this.convertToBooleanOrString(value));
|
|
11
|
+
try {
|
|
12
|
+
const values = JSON.parse(value);
|
|
13
|
+
return this.createNestedObject(this.createKeys(field, condition), this.convertToBooleanOrString(get(values, keys)));
|
|
14
|
+
} catch {
|
|
15
|
+
return this.createNestedObject(this.createKeys(field, condition), this.convertToBooleanOrString(value));
|
|
16
|
+
}
|
|
17
|
+
})
|
|
18
|
+
}))
|
|
25
19
|
};
|
|
26
|
-
})
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
static convertToBooleanOrString(value) {
|
|
30
|
-
if (value === "true") {
|
|
31
|
-
return true;
|
|
32
20
|
}
|
|
33
|
-
|
|
34
|
-
|
|
21
|
+
static convertToBooleanOrString(value) {
|
|
22
|
+
if ("true" === value) return true;
|
|
23
|
+
if ("false" === value) return false;
|
|
24
|
+
return value ?? "";
|
|
25
|
+
}
|
|
26
|
+
static createKeys(field, condition) {
|
|
27
|
+
return `${field}${condition}`.trim().split(".");
|
|
28
|
+
}
|
|
29
|
+
static createNestedObject(keys, value) {
|
|
30
|
+
return keys.reduceRight((acc, key)=>({
|
|
31
|
+
[key]: acc
|
|
32
|
+
}), value);
|
|
35
33
|
}
|
|
36
|
-
return value ?? "";
|
|
37
|
-
}
|
|
38
|
-
static createKeys(field, condition) {
|
|
39
|
-
return `${field}${condition}`.trim().split(".");
|
|
40
|
-
}
|
|
41
|
-
static createNestedObject(keys, value) {
|
|
42
|
-
return keys.reduceRight((acc, key) => ({
|
|
43
|
-
[key]: acc
|
|
44
|
-
}), value);
|
|
45
|
-
}
|
|
46
34
|
}
|
|
35
|
+
export { GraphQLInputMapper };
|
|
47
36
|
|
|
48
37
|
//# sourceMappingURL=GraphQLInputMapper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"components/AdvancedSearch/GraphQLInputMapper.js","sources":["../../../src/components/AdvancedSearch/GraphQLInputMapper.ts"],"sourcesContent":["import get from \"lodash/get.js\";\nimport type { FilterDTO } from \"~/components/AdvancedSearch/domain/index.js\";\n\ninterface NestedObject {\n [key: string]: string | boolean | NestedObject;\n}\n\nexport class GraphQLInputMapper {\n static toGraphQL(configuration: FilterDTO) {\n return {\n [configuration.operation]: configuration.groups.map(group => {\n return {\n [group.operation]: group.filters.map(filter => {\n const { field, condition, value } = filter;\n\n const keys = field.trim().split(\".\");\n keys.shift();\n\n if (keys.length === 0) {\n return this.createNestedObject(\n this.createKeys(field, condition),\n this.convertToBooleanOrString(value)\n );\n }\n\n try {\n const values = JSON.parse(value);\n return this.createNestedObject(\n this.createKeys(field, condition),\n this.convertToBooleanOrString(get(values, keys))\n );\n } catch {\n return this.createNestedObject(\n this.createKeys(field, condition),\n this.convertToBooleanOrString(value)\n );\n }\n })\n };\n })\n };\n }\n\n private static convertToBooleanOrString(value: string | boolean): string | boolean {\n if (value === \"true\") {\n return true;\n }\n\n if (value === \"false\") {\n return false;\n }\n\n return value ?? \"\";\n }\n\n private static createKeys(field: string, condition: string): string[] {\n return `${field}${condition}`.trim().split(\".\");\n }\n\n private static createNestedObject(keys: string[], value: string | boolean): NestedObject {\n return keys.reduceRight((acc, key) => ({ [key]: acc }), value as unknown as NestedObject);\n }\n}\n"],"names":["GraphQLInputMapper","configuration","group","filter","field","condition","value","keys","values","JSON","get","acc","key"],"mappings":";AAOO,MAAMA;IACT,OAAO,UAAUC,aAAwB,EAAE;QACvC,OAAO;YACH,CAACA,cAAc,SAAS,CAAC,EAAEA,cAAc,MAAM,CAAC,GAAG,CAACC,CAAAA,QACzC;oBACH,CAACA,MAAM,SAAS,CAAC,EAAEA,MAAM,OAAO,CAAC,GAAG,CAACC,CAAAA;wBACjC,MAAM,EAAEC,KAAK,EAAEC,SAAS,EAAEC,KAAK,EAAE,GAAGH;wBAEpC,MAAMI,OAAOH,MAAM,IAAI,GAAG,KAAK,CAAC;wBAChCG,KAAK,KAAK;wBAEV,IAAIA,AAAgB,MAAhBA,KAAK,MAAM,EACX,OAAO,IAAI,CAAC,kBAAkB,CAC1B,IAAI,CAAC,UAAU,CAACH,OAAOC,YACvB,IAAI,CAAC,wBAAwB,CAACC;wBAItC,IAAI;4BACA,MAAME,SAASC,KAAK,KAAK,CAACH;4BAC1B,OAAO,IAAI,CAAC,kBAAkB,CAC1B,IAAI,CAAC,UAAU,CAACF,OAAOC,YACvB,IAAI,CAAC,wBAAwB,CAACK,IAAIF,QAAQD;wBAElD,EAAE,OAAM;4BACJ,OAAO,IAAI,CAAC,kBAAkB,CAC1B,IAAI,CAAC,UAAU,CAACH,OAAOC,YACvB,IAAI,CAAC,wBAAwB,CAACC;wBAEtC;oBACJ;gBACJ;QAER;IACJ;IAEA,OAAe,yBAAyBA,KAAuB,EAAoB;QAC/E,IAAIA,AAAU,WAAVA,OACA,OAAO;QAGX,IAAIA,AAAU,YAAVA,OACA,OAAO;QAGX,OAAOA,SAAS;IACpB;IAEA,OAAe,WAAWF,KAAa,EAAEC,SAAiB,EAAY;QAClE,OAAO,GAAGD,QAAQC,WAAW,CAAC,IAAI,GAAG,KAAK,CAAC;IAC/C;IAEA,OAAe,mBAAmBE,IAAc,EAAED,KAAuB,EAAgB;QACrF,OAAOC,KAAK,WAAW,CAAC,CAACI,KAAKC,MAAS;gBAAE,CAACA,IAAI,EAAED;YAAI,IAAIL;IAC5D;AACJ"}
|