@webiny/app-aco 6.0.0-alpha.0 → 6.0.0-alpha.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/components/AdvancedSearch/AdvancedSearch.d.ts +1 -1
- package/components/AdvancedSearch/AdvancedSearch.js.map +1 -1
- package/components/AdvancedSearch/AdvancedSearchPresenter.d.ts +1 -1
- package/components/AdvancedSearch/AdvancedSearchPresenter.js.map +1 -1
- package/components/AdvancedSearch/AdvancedSearchPresenter.test.js.map +1 -1
- package/components/AdvancedSearch/GraphQLInputMapper.d.ts +1 -1
- package/components/AdvancedSearch/GraphQLInputMapper.js.map +1 -1
- package/components/AdvancedSearch/GraphQLInputMapper.test.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/QueryBuilder.d.ts +3 -3
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/QueryBuilder.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/Filter.d.ts +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/Filter.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/InputField.d.ts +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/InputField.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawer.d.ts +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawer.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawerPresenter.d.ts +3 -2
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawerPresenter.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawerPresenter.test.js.map +1 -1
- package/components/AdvancedSearch/QueryManagerDialog/components/FilterList.d.ts +1 -1
- package/components/AdvancedSearch/QueryManagerDialog/components/FilterList.js.map +1 -1
- package/components/AdvancedSearch/QuerySaverDialog/QuerySaverDialog.d.ts +1 -1
- package/components/AdvancedSearch/QuerySaverDialog/QuerySaverDialog.js.map +1 -1
- package/components/AdvancedSearch/QuerySaverDialog/QuerySaverDialogPresenter.d.ts +2 -2
- package/components/AdvancedSearch/QuerySaverDialog/QuerySaverDialogPresenter.js.map +1 -1
- package/components/AdvancedSearch/QuerySaverDialog/QuerySaverDialogPresenter.test.js.map +1 -1
- package/components/AdvancedSearch/SelectedFilter/SelectedFilter.d.ts +1 -1
- package/components/AdvancedSearch/SelectedFilter/SelectedFilter.js.map +1 -1
- package/components/AdvancedSearch/domain/Field.d.ts +1 -1
- package/components/AdvancedSearch/domain/Field.js.map +1 -1
- package/components/AdvancedSearch/domain/FieldMapper.d.ts +1 -1
- package/components/AdvancedSearch/domain/FieldMapper.js.map +1 -1
- package/components/AdvancedSearch/domain/FilterMapper.d.ts +1 -1
- package/components/AdvancedSearch/domain/FilterMapper.js.map +1 -1
- package/components/AdvancedSearch/domain/FilterRepository.d.ts +2 -2
- package/components/AdvancedSearch/domain/FilterRepository.js.map +1 -1
- package/components/AdvancedSearch/domain/FilterRepositoryFactory.d.ts +1 -1
- package/components/AdvancedSearch/domain/FilterRepositoryFactory.js.map +1 -1
- package/components/AdvancedSearch/gateways/FiltersGatewayInterface.d.ts +2 -2
- package/components/AdvancedSearch/gateways/FiltersGatewayInterface.js.map +1 -1
- package/components/AdvancedSearch/gateways/FiltersGraphQLGateway.d.ts +3 -3
- package/components/AdvancedSearch/gateways/FiltersGraphQLGateway.js.map +1 -1
- package/components/AdvancedSearch/gateways/filters.types.d.ts +2 -2
- package/components/AdvancedSearch/gateways/filters.types.js.map +1 -1
- package/components/AdvancedSearch/index.d.ts +2 -2
- package/components/AdvancedSearch/index.js.map +1 -1
- package/components/AdvancedSearch/useInputField.d.ts +1 -1
- package/components/AdvancedSearch/useInputField.js.map +1 -1
- package/components/FolderTree/List/List.d.ts +1 -1
- package/components/FolderTree/List/List.js +15 -1
- package/components/FolderTree/List/List.js.map +1 -1
- package/components/FolderTree/List/utils.d.ts +1 -1
- package/components/FolderTree/List/utils.js.map +1 -1
- package/components/FolderTree/MenuActions/MenuActions.js +2 -0
- package/components/FolderTree/MenuActions/MenuActions.js.map +1 -1
- package/components/FolderTree/index.d.ts +1 -1
- package/components/FolderTree/index.js.map +1 -1
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityDecorator.d.ts +2 -2
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityDecorator.js.map +1 -1
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.d.ts +1 -1
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.js.map +1 -1
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.test.js.map +1 -1
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepository.d.ts +2 -2
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepository.js.map +1 -1
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepositoryFactory.d.ts +1 -1
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepositoryFactory.js.map +1 -1
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityUpdater.d.ts +2 -2
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityUpdater.js.map +1 -1
- package/components/Table/components/Table/Columns/Column.d.ts +2 -2
- package/components/Table/components/Table/Columns/Column.js.map +1 -1
- package/components/Table/components/Table/Columns/ColumnMapper.d.ts +2 -2
- package/components/Table/components/Table/Columns/ColumnMapper.js.map +1 -1
- package/components/Table/components/Table/Columns/ColumnsPresenter.d.ts +1 -1
- package/components/Table/components/Table/Columns/ColumnsPresenter.js.map +1 -1
- package/components/Table/components/Table/Columns/ColumnsPresenter.test.js.map +1 -1
- package/components/Table/components/Table/Columns/ColumnsRepository.d.ts +2 -2
- package/components/Table/components/Table/Columns/ColumnsRepository.js.map +1 -1
- package/components/Table/components/Table/Columns/ColumnsRepositoryFactory.d.ts +1 -1
- package/components/Table/components/Table/Columns/ColumnsRepositoryFactory.js.map +1 -1
- package/components/Table/components/Table/Columns/IColumnsRepository.d.ts +1 -1
- package/components/Table/components/Table/Columns/IColumnsRepository.js.map +1 -1
- package/components/Table/components/Table/Table.d.ts +4 -3
- package/components/Table/components/Table/Table.js.map +1 -1
- package/components/Table/components/Table/TableInner.d.ts +8 -6
- package/components/Table/components/Table/TableInner.js.map +1 -1
- package/components/Table/components/Table/TablePresenter.d.ts +1 -1
- package/components/Table/components/Table/TablePresenter.js.map +1 -1
- package/components/Table/components/Table/gateways/ColumnsVisibilityLocalStorageGateway.d.ts +1 -1
- package/components/Table/components/Table/gateways/ColumnsVisibilityLocalStorageGateway.js.map +1 -1
- package/components/Table/createTableData.d.ts +6 -6
- package/components/Table/createTableData.js +8 -8
- package/components/Table/createTableData.js.map +1 -1
- package/components/Table/useTableRow.d.ts +9 -4
- package/components/Table/useTableRow.js +10 -3
- package/components/Table/useTableRow.js.map +1 -1
- package/config/AcoConfig.d.ts +12 -7
- package/config/AcoConfig.js +0 -5
- package/config/AcoConfig.js.map +1 -1
- package/config/advanced-search/index.d.ts +1 -1
- package/config/advanced-search/index.js.map +1 -1
- package/config/folder/createFolderFieldDecoratorFactory.d.ts +1 -1
- package/config/folder/createFolderFieldDecoratorFactory.js.map +1 -1
- package/config/folder/index.d.ts +1 -1
- package/config/folder/index.js.map +1 -1
- package/config/record/index.d.ts +1 -1
- package/config/record/index.js.map +1 -1
- package/config/table/Column.d.ts +10 -4
- package/config/table/Column.js.map +1 -1
- package/config/table/index.d.ts +9 -4
- package/config/table/index.js.map +1 -1
- package/contexts/acoList.d.ts +1 -1
- package/contexts/acoList.js.map +1 -1
- package/contexts/app.d.ts +2 -2
- package/contexts/app.js.map +1 -1
- package/contexts/folder.d.ts +1 -1
- package/contexts/folder.js.map +1 -1
- package/contexts/folders.d.ts +2 -1
- package/contexts/folders.js.map +1 -1
- package/contexts/index.d.ts +1 -1
- package/contexts/index.js +1 -1
- package/contexts/index.js.map +1 -1
- package/contexts/records.d.ts +3 -2
- package/contexts/records.js.map +1 -1
- package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemGraphic.d.ts +1 -1
- package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemGraphic.js.map +1 -1
- package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemMeta.d.ts +1 -1
- package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemMeta.js.map +1 -1
- package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemText.d.ts +1 -1
- package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemText.js.map +1 -1
- package/dialogs/DialogSetPermissions/UsersTeamsSelection.d.ts +1 -1
- package/dialogs/DialogSetPermissions/UsersTeamsSelection.js.map +1 -1
- package/dialogs/useCreateDialog.js.map +1 -1
- package/dialogs/useDeleteDialog.d.ts +1 -1
- package/dialogs/useDeleteDialog.js.map +1 -1
- package/dialogs/useEditDialog.d.ts +1 -1
- package/dialogs/useEditDialog.js.map +1 -1
- package/dialogs/useMoveToFolderDialog.d.ts +3 -2
- package/dialogs/useMoveToFolderDialog.js.map +1 -1
- package/dialogs/useSetPermissionsDialog.d.ts +1 -1
- package/dialogs/useSetPermissionsDialog.js.map +1 -1
- package/features/folders/Folder.d.ts +1 -1
- package/features/folders/Folder.js.map +1 -1
- package/features/folders/cache/FoldersCacheFactory.d.ts +1 -1
- package/features/folders/cache/FoldersCacheFactory.js.map +1 -1
- package/features/folders/createFolder/CreateFolder.d.ts +2 -2
- package/features/folders/createFolder/CreateFolder.js.map +1 -1
- package/features/folders/createFolder/CreateFolderGqlGateway.d.ts +4 -4
- package/features/folders/createFolder/CreateFolderGqlGateway.js.map +1 -1
- package/features/folders/createFolder/CreateFolderRepository.d.ts +3 -3
- package/features/folders/createFolder/CreateFolderRepository.js.map +1 -1
- package/features/folders/createFolder/CreateFolderUseCase.d.ts +2 -2
- package/features/folders/createFolder/CreateFolderUseCase.js.map +1 -1
- package/features/folders/createFolder/CreateFolderUseCaseWithLoading.d.ts +2 -2
- package/features/folders/createFolder/CreateFolderUseCaseWithLoading.js.map +1 -1
- package/features/folders/createFolder/FolderDto.d.ts +1 -1
- package/features/folders/createFolder/FolderDto.js.map +1 -1
- package/features/folders/createFolder/FolderGqlDto.d.ts +1 -1
- package/features/folders/createFolder/FolderGqlDto.js.map +1 -1
- package/features/folders/createFolder/ICreateFolderGateway.d.ts +2 -2
- package/features/folders/createFolder/ICreateFolderGateway.js.map +1 -1
- package/features/folders/createFolder/ICreateFolderRepository.d.ts +1 -1
- package/features/folders/createFolder/ICreateFolderRepository.js.map +1 -1
- package/features/folders/createFolder/ICreateFolderUseCase.d.ts +1 -1
- package/features/folders/createFolder/ICreateFolderUseCase.js.map +1 -1
- package/features/folders/createFolder/useCreateFolder.d.ts +1 -1
- package/features/folders/createFolder/useCreateFolder.js.map +1 -1
- package/features/folders/deleteFolder/DeleteFolder.d.ts +2 -2
- package/features/folders/deleteFolder/DeleteFolder.js.map +1 -1
- package/features/folders/deleteFolder/DeleteFolderGqlGateway.d.ts +3 -3
- package/features/folders/deleteFolder/DeleteFolderGqlGateway.js.map +1 -1
- package/features/folders/deleteFolder/DeleteFolderRepository.d.ts +4 -4
- package/features/folders/deleteFolder/DeleteFolderRepository.js.map +1 -1
- package/features/folders/deleteFolder/DeleteFolderUseCase.d.ts +2 -2
- package/features/folders/deleteFolder/DeleteFolderUseCase.js.map +1 -1
- package/features/folders/deleteFolder/DeleteFolderUseCaseWithLoading.d.ts +2 -2
- package/features/folders/deleteFolder/DeleteFolderUseCaseWithLoading.js.map +1 -1
- package/features/folders/deleteFolder/IDeleteFolderRepository.d.ts +1 -1
- package/features/folders/deleteFolder/IDeleteFolderRepository.js.map +1 -1
- package/features/folders/deleteFolder/IDeleteFolderUseCase.d.ts +1 -1
- package/features/folders/deleteFolder/IDeleteFolderUseCase.js.map +1 -1
- package/features/folders/deleteFolder/useDeleteFolder.d.ts +1 -1
- package/features/folders/deleteFolder/useDeleteFolder.js.map +1 -1
- package/features/folders/getDescendantFolders/FolderDto.d.ts +1 -1
- package/features/folders/getDescendantFolders/FolderDto.js.map +1 -1
- package/features/folders/getDescendantFolders/GetDescendantFolders.d.ts +1 -1
- package/features/folders/getDescendantFolders/GetDescendantFolders.js.map +1 -1
- package/features/folders/getDescendantFolders/GetDescendantFoldersRepository.d.ts +3 -3
- package/features/folders/getDescendantFolders/GetDescendantFoldersRepository.js.map +1 -1
- package/features/folders/getDescendantFolders/GetDescendantFoldersUseCase.d.ts +2 -2
- package/features/folders/getDescendantFolders/GetDescendantFoldersUseCase.js.map +1 -1
- package/features/folders/getDescendantFolders/IGetDescendantFoldersRepository.d.ts +1 -1
- package/features/folders/getDescendantFolders/IGetDescendantFoldersRepository.js.map +1 -1
- package/features/folders/getDescendantFolders/IGetDescendantFoldersUseCase.d.ts +1 -1
- package/features/folders/getDescendantFolders/IGetDescendantFoldersUseCase.js.map +1 -1
- package/features/folders/getFolder/GetFolder.d.ts +2 -2
- package/features/folders/getFolder/GetFolder.js.map +1 -1
- package/features/folders/getFolder/GetFolderGqlGateway.d.ts +3 -3
- package/features/folders/getFolder/GetFolderGqlGateway.js.map +1 -1
- package/features/folders/getFolder/GetFolderRepository.d.ts +3 -3
- package/features/folders/getFolder/GetFolderRepository.js.map +1 -1
- package/features/folders/getFolder/GetFolderUseCase.d.ts +2 -2
- package/features/folders/getFolder/GetFolderUseCase.js.map +1 -1
- package/features/folders/getFolder/GetFolderUseCaseWithLoading.d.ts +2 -2
- package/features/folders/getFolder/GetFolderUseCaseWithLoading.js.map +1 -1
- package/features/folders/getFolder/IGetFolderGateway.d.ts +1 -1
- package/features/folders/getFolder/IGetFolderGateway.js.map +1 -1
- package/features/folders/getFolder/useGetFolder.d.ts +1 -1
- package/features/folders/getFolder/useGetFolder.js.map +1 -1
- package/features/folders/getFolderAncestors/FolderDto.d.ts +9 -0
- package/features/folders/getFolderAncestors/FolderDto.js +3 -0
- package/features/folders/getFolderAncestors/FolderDto.js.map +1 -0
- package/features/folders/getFolderAncestors/GetFolderAncestors.d.ts +4 -0
- package/features/folders/getFolderAncestors/GetFolderAncestors.js +12 -0
- package/features/folders/getFolderAncestors/GetFolderAncestors.js.map +1 -0
- package/features/folders/getFolderAncestors/GetFolderAncestors.test.d.ts +1 -0
- package/features/folders/getFolderAncestors/GetFolderAncestors.test.js +97 -0
- package/features/folders/getFolderAncestors/GetFolderAncestors.test.js.map +1 -0
- package/features/folders/getFolderAncestors/GetFolderAncestorsRepository.d.ts +7 -0
- package/features/folders/getFolderAncestors/GetFolderAncestorsRepository.js +25 -0
- package/features/folders/getFolderAncestors/GetFolderAncestorsRepository.js.map +1 -0
- package/features/folders/getFolderAncestors/GetFolderAncestorsUseCase.d.ts +14 -0
- package/features/folders/getFolderAncestors/GetFolderAncestorsUseCase.js +18 -0
- package/features/folders/getFolderAncestors/GetFolderAncestorsUseCase.js.map +1 -0
- package/features/folders/getFolderAncestors/IGetFolderAncestorsRepository.d.ts +4 -0
- package/features/folders/getFolderAncestors/IGetFolderAncestorsRepository.js +3 -0
- package/features/folders/getFolderAncestors/IGetFolderAncestorsRepository.js.map +1 -0
- package/features/folders/getFolderAncestors/IGetFolderAncestorsUseCase.d.ts +7 -0
- package/features/folders/getFolderAncestors/IGetFolderAncestorsUseCase.js +3 -0
- package/features/folders/getFolderAncestors/IGetFolderAncestorsUseCase.js.map +1 -0
- package/features/folders/getFolderAncestors/index.d.ts +1 -0
- package/features/folders/getFolderAncestors/index.js +3 -0
- package/features/folders/getFolderAncestors/index.js.map +1 -0
- package/features/folders/getFolderAncestors/useGetFolderAncestors.d.ts +3 -0
- package/features/folders/getFolderAncestors/useGetFolderAncestors.js +17 -0
- package/features/folders/getFolderAncestors/useGetFolderAncestors.js.map +1 -0
- package/features/folders/getFolderExtensionsFields/IGetFolderExtensionsFieldsRepository.d.ts +1 -1
- package/features/folders/getFolderExtensionsFields/IGetFolderExtensionsFieldsRepository.js.map +1 -1
- package/features/folders/getFolderExtensionsFields/IGetFolderExtensionsFieldsUseCase.d.ts +1 -1
- package/features/folders/getFolderExtensionsFields/IGetFolderExtensionsFieldsUseCase.js.map +1 -1
- package/features/folders/getFolderHierarchy/FolderDto.d.ts +2 -2
- package/features/folders/getFolderHierarchy/FolderDto.js.map +1 -1
- package/features/folders/getFolderHierarchy/FolderGqlDto.d.ts +1 -1
- package/features/folders/getFolderHierarchy/FolderGqlDto.js.map +1 -1
- package/features/folders/getFolderHierarchy/GetFolderHierarchy.d.ts +5 -5
- package/features/folders/getFolderHierarchy/GetFolderHierarchy.js.map +1 -1
- package/features/folders/getFolderHierarchy/GetFolderHierarchyGqlGateway.d.ts +3 -3
- package/features/folders/getFolderHierarchy/GetFolderHierarchyGqlGateway.js.map +1 -1
- package/features/folders/getFolderHierarchy/GetFolderHierarchyRepository.d.ts +3 -3
- package/features/folders/getFolderHierarchy/GetFolderHierarchyRepository.js.map +1 -1
- package/features/folders/getFolderHierarchy/GetFolderHierarchyUseCase.d.ts +2 -2
- package/features/folders/getFolderHierarchy/GetFolderHierarchyUseCase.js.map +1 -1
- package/features/folders/getFolderHierarchy/GetFolderHierarchyUseCaseWithLoading.d.ts +2 -2
- package/features/folders/getFolderHierarchy/GetFolderHierarchyUseCaseWithLoading.js.map +1 -1
- package/features/folders/getFolderHierarchy/IGetFolderHierarchyGateway.d.ts +1 -1
- package/features/folders/getFolderHierarchy/IGetFolderHierarchyGateway.js.map +1 -1
- package/features/folders/getFolderHierarchy/useGetFolderHierarchy.d.ts +1 -1
- package/features/folders/getFolderHierarchy/useGetFolderHierarchy.js.map +1 -1
- package/features/folders/getFolderLevelPermission/GetFolderLevelPermission.d.ts +2 -2
- package/features/folders/getFolderLevelPermission/GetFolderLevelPermission.js.map +1 -1
- package/features/folders/getFolderLevelPermission/GetFolderLevelPermissionRepository.d.ts +4 -4
- package/features/folders/getFolderLevelPermission/GetFolderLevelPermissionRepository.js.map +1 -1
- package/features/folders/getFolderLevelPermission/GetFolderLevelPermissionUseCase.d.ts +1 -1
- package/features/folders/getFolderLevelPermission/GetFolderLevelPermissionUseCase.js.map +1 -1
- package/features/folders/getFolderLevelPermission/GetFolderLevelPermissionWithFlpUseCase.d.ts +2 -2
- package/features/folders/getFolderLevelPermission/GetFolderLevelPermissionWithFlpUseCase.js.map +1 -1
- package/features/folders/getFolderLevelPermission/useGetFolderLevelPermission.d.ts +1 -1
- package/features/folders/getFolderLevelPermission/useGetFolderLevelPermission.js.map +1 -1
- package/features/folders/getFolderModel/FolderModelContext.js.map +1 -1
- package/features/folders/getFolderModel/FolderModelDto.d.ts +1 -1
- package/features/folders/getFolderModel/FolderModelDto.js.map +1 -1
- package/features/folders/getFolderModel/GetFolderModel.d.ts +3 -3
- package/features/folders/getFolderModel/GetFolderModel.js.map +1 -1
- package/features/folders/getFolderModel/GetFolderModelGqlGateway.d.ts +4 -4
- package/features/folders/getFolderModel/GetFolderModelGqlGateway.js.map +1 -1
- package/features/folders/getFolderModel/GetFolderModelRepository.d.ts +2 -2
- package/features/folders/getFolderModel/GetFolderModelRepository.js.map +1 -1
- package/features/folders/getFolderModel/GetFolderModelUseCase.d.ts +2 -2
- package/features/folders/getFolderModel/GetFolderModelUseCase.js.map +1 -1
- package/features/folders/getFolderModel/IGetFolderModelGateway.d.ts +1 -1
- package/features/folders/getFolderModel/IGetFolderModelGateway.js.map +1 -1
- package/features/folders/getFolderModel/IGetFolderModelRepository.d.ts +1 -1
- package/features/folders/getFolderModel/IGetFolderModelRepository.js.map +1 -1
- package/features/folders/index.d.ts +1 -0
- package/features/folders/index.js +1 -0
- package/features/folders/index.js.map +1 -1
- package/features/folders/listFolders/FolderDto.d.ts +2 -2
- package/features/folders/listFolders/FolderDto.js.map +1 -1
- package/features/folders/listFolders/FolderGqlDto.d.ts +1 -1
- package/features/folders/listFolders/FolderGqlDto.js.map +1 -1
- package/features/folders/listFolders/IListFoldersGateway.d.ts +1 -1
- package/features/folders/listFolders/IListFoldersGateway.js.map +1 -1
- package/features/folders/listFolders/ListFolders.d.ts +5 -5
- package/features/folders/listFolders/ListFolders.js.map +1 -1
- package/features/folders/listFolders/ListFoldersCompressedGqlGateway.d.ts +3 -3
- package/features/folders/listFolders/ListFoldersCompressedGqlGateway.js.map +1 -1
- package/features/folders/listFolders/ListFoldersGqlGateway.d.ts +3 -3
- package/features/folders/listFolders/ListFoldersGqlGateway.js.map +1 -1
- package/features/folders/listFolders/ListFoldersRepository.d.ts +3 -3
- package/features/folders/listFolders/ListFoldersRepository.js.map +1 -1
- package/features/folders/listFolders/ListFoldersUseCase.d.ts +2 -2
- package/features/folders/listFolders/ListFoldersUseCase.js.map +1 -1
- package/features/folders/listFolders/ListFoldersUseCaseWithLoading.d.ts +2 -2
- package/features/folders/listFolders/ListFoldersUseCaseWithLoading.js.map +1 -1
- package/features/folders/listFolders/useListFolders.d.ts +1 -1
- package/features/folders/listFolders/useListFolders.js.map +1 -1
- package/features/folders/listFoldersByParentIds/FolderDto.d.ts +2 -2
- package/features/folders/listFoldersByParentIds/FolderDto.js.map +1 -1
- package/features/folders/listFoldersByParentIds/FolderGqlDto.d.ts +1 -1
- package/features/folders/listFoldersByParentIds/FolderGqlDto.js.map +1 -1
- package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsGateway.d.ts +1 -1
- package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsGateway.js.map +1 -1
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.d.ts +5 -5
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.js.map +1 -1
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsGqlGateway.d.ts +3 -3
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsGqlGateway.js.map +1 -1
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepository.d.ts +3 -3
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepository.js.map +1 -1
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepositoryWithLoadedCache.d.ts +2 -2
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepositoryWithLoadedCache.js.map +1 -1
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCase.d.ts +2 -2
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCase.js.map +1 -1
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCaseWithLoading.d.ts +3 -3
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCaseWithLoading.js.map +1 -1
- package/features/folders/listFoldersByParentIds/useListFoldersByParentIds.d.ts +1 -1
- package/features/folders/listFoldersByParentIds/useListFoldersByParentIds.js.map +1 -1
- package/features/folders/updateFolder/FolderDto.d.ts +1 -1
- package/features/folders/updateFolder/FolderDto.js.map +1 -1
- package/features/folders/updateFolder/FolderGqlDto.d.ts +1 -1
- package/features/folders/updateFolder/FolderGqlDto.js.map +1 -1
- package/features/folders/updateFolder/IUpdateFolderGateway.d.ts +2 -2
- package/features/folders/updateFolder/IUpdateFolderGateway.js.map +1 -1
- package/features/folders/updateFolder/IUpdateFolderRepository.d.ts +1 -1
- package/features/folders/updateFolder/IUpdateFolderRepository.js.map +1 -1
- package/features/folders/updateFolder/IUpdateFolderUseCase.d.ts +1 -1
- package/features/folders/updateFolder/IUpdateFolderUseCase.js.map +1 -1
- package/features/folders/updateFolder/UpdateFolder.d.ts +2 -2
- package/features/folders/updateFolder/UpdateFolder.js.map +1 -1
- package/features/folders/updateFolder/UpdateFolder.test.js.map +1 -1
- package/features/folders/updateFolder/UpdateFolderGqlGateway.d.ts +4 -4
- package/features/folders/updateFolder/UpdateFolderGqlGateway.js.map +1 -1
- package/features/folders/updateFolder/UpdateFolderRepository.d.ts +3 -3
- package/features/folders/updateFolder/UpdateFolderRepository.js.map +1 -1
- package/features/folders/updateFolder/UpdateFolderRepositoryWithPathChange.d.ts +2 -2
- package/features/folders/updateFolder/UpdateFolderRepositoryWithPathChange.js.map +1 -1
- package/features/folders/updateFolder/UpdateFolderRepositoryWithPermissionsChange.d.ts +2 -2
- package/features/folders/updateFolder/UpdateFolderRepositoryWithPermissionsChange.js.map +1 -1
- package/features/folders/updateFolder/UpdateFolderUseCase.d.ts +2 -2
- package/features/folders/updateFolder/UpdateFolderUseCase.js.map +1 -1
- package/features/folders/updateFolder/UpdateFolderUseCaseWithLoading.d.ts +2 -2
- package/features/folders/updateFolder/UpdateFolderUseCaseWithLoading.js.map +1 -1
- package/features/folders/updateFolder/UpdateFolderUseCaseWithoutInheritedPermissions.d.ts +1 -1
- package/features/folders/updateFolder/UpdateFolderUseCaseWithoutInheritedPermissions.js.map +1 -1
- package/features/folders/updateFolder/useUpdateFolder.d.ts +1 -1
- package/features/folders/updateFolder/useUpdateFolder.js.map +1 -1
- package/graphql/app.gql.d.ts +1 -1
- package/graphql/app.gql.js.map +1 -1
- package/graphql/records/common.d.ts +1 -1
- package/graphql/records/common.js.map +1 -1
- package/graphql/records/createRecord.d.ts +1 -1
- package/graphql/records/createRecord.js.map +1 -1
- package/graphql/records/deleteRecord.d.ts +1 -1
- package/graphql/records/deleteRecord.js.map +1 -1
- package/graphql/records/getRecord.d.ts +1 -1
- package/graphql/records/getRecord.js.map +1 -1
- package/graphql/records/listRecords.d.ts +1 -1
- package/graphql/records/listRecords.js.map +1 -1
- package/graphql/records/listTags.d.ts +1 -1
- package/graphql/records/listTags.js.map +1 -1
- package/graphql/records/moveRecord.d.ts +1 -1
- package/graphql/records/moveRecord.js.map +1 -1
- package/graphql/records/types.d.ts +1 -1
- package/graphql/records/types.js.map +1 -1
- package/graphql/records/updateRecord.d.ts +1 -1
- package/graphql/records/updateRecord.js.map +1 -1
- package/handlers.d.ts +4 -4
- package/handlers.js.map +1 -1
- package/hooks/useAcoApp.d.ts +1 -1
- package/hooks/useAcoApp.js.map +1 -1
- package/hooks/useAcoList.d.ts +2 -2
- package/hooks/useAcoList.js.map +1 -1
- package/hooks/useRecords.d.ts +2 -2
- package/hooks/useRecords.js.map +1 -1
- package/hooks/useTags.d.ts +1 -1
- package/hooks/useTags.js.map +1 -1
- package/index.d.ts +2 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/package.json +18 -18
- package/sorting.d.ts +1 -1
- package/sorting.js.map +1 -1
- package/table.types.d.ts +6 -4
- package/table.types.js.map +1 -1
- package/types.d.ts +2 -2
- package/types.js +0 -1
- package/types.js.map +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { FieldDTOWithElement, FilterDTO, FilterRepository } from "./domain";
|
|
2
|
+
import type { FieldDTOWithElement, FilterDTO, FilterRepository } from "./domain";
|
|
3
3
|
export interface AdvancedSearchProps {
|
|
4
4
|
fields: FieldDTOWithElement[];
|
|
5
5
|
repository: FilterRepository;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useMemo","observer","useToast","AdvancedSearchPresenter","Button","QueryManagerDialog","QueryBuilderDrawer","QuerySaverDialog","SelectedFilter","AdvancedSearch","fields","repository","onApplyFilter","showToast","presenter","load","applyFilter","filter","vm","appliedFilter","unsetFilter","deleteFilter","filterId","id","persistAndApplyFilter","persistFilter","feedbackVm","isOpen","title","message","createElement","Fragment","className","onClick","openManager","onEdit","editAppliedFilter","onDelete","onClose","closeManager","onCreate","createFilter","editFilter","onRename","renameFilter","onClone","cloneFilter","onSelect","managerVm","currentFilter","closeBuilder","onSave","saveFilter","onApply","onValidationError","showFeedback","builderVm","closeSaver","saverVm"],"sources":["AdvancedSearch.tsx"],"sourcesContent":["import React, { useEffect, useMemo } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { useToast } from \"@webiny/admin-ui\";\n\nimport { FieldDTOWithElement, FilterDTO, FilterRepository } from \"./domain\";\n\nimport { AdvancedSearchPresenter } from \"./AdvancedSearchPresenter\";\n\nimport { Button } from \"./Button\";\nimport { QueryManagerDialog } from \"./QueryManagerDialog\";\nimport { QueryBuilderDrawer } from \"./QueryBuilderDrawer\";\nimport { QuerySaverDialog } from \"./QuerySaverDialog\";\nimport { SelectedFilter } from \"./SelectedFilter\";\n\nexport interface AdvancedSearchProps {\n fields: FieldDTOWithElement[];\n repository: FilterRepository;\n onApplyFilter: (data: FilterDTO | null) => void;\n}\n\nexport const AdvancedSearch = observer(\n ({ fields, repository, onApplyFilter }: AdvancedSearchProps) => {\n const { showToast } = useToast();\n\n const presenter = useMemo<AdvancedSearchPresenter>(() => {\n return new AdvancedSearchPresenter(repository);\n }, [repository]);\n\n useEffect(() => {\n presenter.load();\n }, []);\n\n const applyFilter = async (filter: string | FilterDTO) => {\n await presenter.applyFilter(filter);\n if (presenter.vm.appliedFilter) {\n onApplyFilter(presenter.vm.appliedFilter);\n }\n };\n\n const unsetFilter = () => {\n if (presenter.vm.appliedFilter) {\n presenter.unsetFilter();\n onApplyFilter(null);\n }\n };\n\n const deleteFilter = async (filterId: string) => {\n await presenter.deleteFilter(filterId);\n if (filterId === presenter.vm.appliedFilter?.id) {\n unsetFilter();\n }\n };\n\n const persistAndApplyFilter = async (filter: FilterDTO) => {\n await presenter.persistFilter(filter);\n onApplyFilter(filter);\n };\n\n useEffect(() => {\n if (presenter.vm.feedbackVm.isOpen) {\n showToast({\n title: presenter.vm.feedbackVm.message\n });\n }\n }, [presenter.vm.feedbackVm.isOpen, presenter.vm.feedbackVm.message]);\n\n return (\n <>\n <div\n className={\n \"wby-flex wby-flex-row-reverse wby-justify-between wby-items-center wby-gap-sm\"\n }\n >\n <Button onClick={() => presenter.openManager()} />\n {presenter.vm.appliedFilter ? (\n <SelectedFilter\n filter={presenter.vm.appliedFilter}\n onEdit={() => presenter.editAppliedFilter()}\n onDelete={unsetFilter}\n />\n ) : null}\n </div>\n <QueryManagerDialog\n onClose={() => presenter.closeManager()}\n onCreate={() => presenter.createFilter()}\n onEdit={filterId => presenter.editFilter(filterId)}\n onRename={filterId => presenter.renameFilter(filterId)}\n onClone={filterId => presenter.cloneFilter(filterId)}\n onDelete={deleteFilter}\n onSelect={applyFilter}\n vm={presenter.vm.managerVm}\n />\n {presenter.vm.currentFilter ? (\n <>\n <QueryBuilderDrawer\n fields={fields}\n onClose={() => presenter.closeBuilder()}\n onSave={filter => presenter.saveFilter(filter)}\n onApply={applyFilter}\n onValidationError={message => presenter.showFeedback(message)}\n filter={presenter.vm.currentFilter}\n vm={presenter.vm.builderVm}\n />\n <QuerySaverDialog\n onSave={persistAndApplyFilter}\n onClose={() => presenter.closeSaver()}\n filter={presenter.vm.currentFilter}\n vm={presenter.vm.saverVm}\n />\n </>\n ) : null}\n </>\n );\n }\n);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useEffect","useMemo","observer","useToast","AdvancedSearchPresenter","Button","QueryManagerDialog","QueryBuilderDrawer","QuerySaverDialog","SelectedFilter","AdvancedSearch","fields","repository","onApplyFilter","showToast","presenter","load","applyFilter","filter","vm","appliedFilter","unsetFilter","deleteFilter","filterId","id","persistAndApplyFilter","persistFilter","feedbackVm","isOpen","title","message","createElement","Fragment","className","onClick","openManager","onEdit","editAppliedFilter","onDelete","onClose","closeManager","onCreate","createFilter","editFilter","onRename","renameFilter","onClone","cloneFilter","onSelect","managerVm","currentFilter","closeBuilder","onSave","saveFilter","onApply","onValidationError","showFeedback","builderVm","closeSaver","saverVm"],"sources":["AdvancedSearch.tsx"],"sourcesContent":["import React, { useEffect, useMemo } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { useToast } from \"@webiny/admin-ui\";\n\nimport type { FieldDTOWithElement, FilterDTO, FilterRepository } from \"./domain\";\n\nimport { AdvancedSearchPresenter } from \"./AdvancedSearchPresenter\";\n\nimport { Button } from \"./Button\";\nimport { QueryManagerDialog } from \"./QueryManagerDialog\";\nimport { QueryBuilderDrawer } from \"./QueryBuilderDrawer\";\nimport { QuerySaverDialog } from \"./QuerySaverDialog\";\nimport { SelectedFilter } from \"./SelectedFilter\";\n\nexport interface AdvancedSearchProps {\n fields: FieldDTOWithElement[];\n repository: FilterRepository;\n onApplyFilter: (data: FilterDTO | null) => void;\n}\n\nexport const AdvancedSearch = observer(\n ({ fields, repository, onApplyFilter }: AdvancedSearchProps) => {\n const { showToast } = useToast();\n\n const presenter = useMemo<AdvancedSearchPresenter>(() => {\n return new AdvancedSearchPresenter(repository);\n }, [repository]);\n\n useEffect(() => {\n presenter.load();\n }, []);\n\n const applyFilter = async (filter: string | FilterDTO) => {\n await presenter.applyFilter(filter);\n if (presenter.vm.appliedFilter) {\n onApplyFilter(presenter.vm.appliedFilter);\n }\n };\n\n const unsetFilter = () => {\n if (presenter.vm.appliedFilter) {\n presenter.unsetFilter();\n onApplyFilter(null);\n }\n };\n\n const deleteFilter = async (filterId: string) => {\n await presenter.deleteFilter(filterId);\n if (filterId === presenter.vm.appliedFilter?.id) {\n unsetFilter();\n }\n };\n\n const persistAndApplyFilter = async (filter: FilterDTO) => {\n await presenter.persistFilter(filter);\n onApplyFilter(filter);\n };\n\n useEffect(() => {\n if (presenter.vm.feedbackVm.isOpen) {\n showToast({\n title: presenter.vm.feedbackVm.message\n });\n }\n }, [presenter.vm.feedbackVm.isOpen, presenter.vm.feedbackVm.message]);\n\n return (\n <>\n <div\n className={\n \"wby-flex wby-flex-row-reverse wby-justify-between wby-items-center wby-gap-sm\"\n }\n >\n <Button onClick={() => presenter.openManager()} />\n {presenter.vm.appliedFilter ? (\n <SelectedFilter\n filter={presenter.vm.appliedFilter}\n onEdit={() => presenter.editAppliedFilter()}\n onDelete={unsetFilter}\n />\n ) : null}\n </div>\n <QueryManagerDialog\n onClose={() => presenter.closeManager()}\n onCreate={() => presenter.createFilter()}\n onEdit={filterId => presenter.editFilter(filterId)}\n onRename={filterId => presenter.renameFilter(filterId)}\n onClone={filterId => presenter.cloneFilter(filterId)}\n onDelete={deleteFilter}\n onSelect={applyFilter}\n vm={presenter.vm.managerVm}\n />\n {presenter.vm.currentFilter ? (\n <>\n <QueryBuilderDrawer\n fields={fields}\n onClose={() => presenter.closeBuilder()}\n onSave={filter => presenter.saveFilter(filter)}\n onApply={applyFilter}\n onValidationError={message => presenter.showFeedback(message)}\n filter={presenter.vm.currentFilter}\n vm={presenter.vm.builderVm}\n />\n <QuerySaverDialog\n onSave={persistAndApplyFilter}\n onClose={() => presenter.closeSaver()}\n filter={presenter.vm.currentFilter}\n vm={presenter.vm.saverVm}\n />\n </>\n ) : null}\n </>\n );\n }\n);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["makeAutoObservable","runInAction","Feedback","Filter","FilterMapper","AdvancedSearchPresenter","showBuilder","showManager","showSaver","currentFilter","appliedFilter","constructor","repository","feedback","load","listFilters","managerVm","vm","isOpen","view","isLoading","getLoading","loadingLabel","filters","getFilters","map","filter","id","name","description","createdOn","length","feedbackVm","Boolean","message","builderVm","saverVm","openManager","closeManager","openBuilder","closeBuilder","openSaver","closeSaver","showFeedback","applyFilter","filterDto","result","getFilterById","unsetFilter","editAppliedFilter","renameFilter","filterId","createFilter","toDTO","createEmpty","cloneFilter","create","editFilter","deleteFilter","saveFilter","persistFilter","updateFilterIntoRepository","createFilterIntoRepository","newFilter","updateFilter"],"sources":["AdvancedSearchPresenter.ts"],"sourcesContent":["import { makeAutoObservable, runInAction } from \"mobx\";\nimport {\n Feedback,\n Filter,\n FilterDTO,\n FilterMapper,\n FilterRepository\n} from \"~/components/AdvancedSearch/domain\";\n\nexport interface AdvancedSearchPresenterInterface {\n load(): Promise<void>;\n openManager(): void;\n closeManager(): void;\n openBuilder(): void;\n closeBuilder(): void;\n openSaver(): void;\n closeSaver(): void;\n showFeedback(message: string): void;\n applyFilter(filter: string | FilterDTO): Promise<void>;\n unsetFilter(): void;\n editAppliedFilter(): void;\n createFilter(): void;\n editFilter(filterId: string): Promise<void>;\n deleteFilter(id: string): Promise<void>;\n saveFilter(filter: FilterDTO): void;\n renameFilter(filterId: string): Promise<void>;\n cloneFilter(filterId: string): Promise<void>;\n persistFilter(filter: FilterDTO): Promise<void>;\n get vm(): {\n currentFilter: FilterDTO | null;\n appliedFilter: FilterDTO | null;\n feedbackVm: {\n isOpen: boolean;\n message: string;\n };\n managerVm: {\n isOpen: boolean;\n view: string;\n isLoading: boolean;\n loadingLabel: string;\n filters: Array<{\n id: string;\n name: string;\n description: string;\n createdOn: string;\n }>;\n };\n builderVm: {\n isOpen: boolean;\n };\n saverVm: {\n isOpen: boolean;\n isLoading: boolean;\n loadingLabel: string;\n };\n };\n}\n\nexport class AdvancedSearchPresenter implements AdvancedSearchPresenterInterface {\n private repository: FilterRepository;\n private readonly feedback: Feedback;\n private showBuilder = false;\n private showManager = false;\n private showSaver = false;\n private currentFilter: FilterDTO | null = null;\n private appliedFilter: FilterDTO | null = null;\n\n constructor(repository: FilterRepository) {\n this.repository = repository;\n this.feedback = new Feedback();\n makeAutoObservable(this);\n }\n\n async load() {\n await this.repository.listFilters();\n }\n\n private get managerVm() {\n const vm = {\n isOpen: this.showManager,\n view: \"EMPTY\",\n isLoading: this.repository.getLoading().isLoading,\n loadingLabel: this.repository.getLoading().loadingLabel,\n filters: this.repository.getFilters().map(filter => ({\n id: filter.id,\n name: filter.name,\n description: filter.description || \"\",\n createdOn: filter.createdOn || \"\"\n }))\n };\n\n if (this.repository.getFilters().length !== 0) {\n vm.view = \"LIST\";\n }\n\n return vm;\n }\n\n private get feedbackVm() {\n return {\n isOpen: Boolean(this.feedback.message || this.repository.getLoading().message),\n message: this.feedback.message || this.repository.getLoading().message\n };\n }\n\n private get builderVm() {\n return {\n isOpen: this.showBuilder\n };\n }\n\n private get saverVm() {\n return {\n isOpen: this.showSaver,\n isLoading: this.repository.getLoading().isLoading,\n loadingLabel: this.repository.getLoading().loadingLabel\n };\n }\n\n get vm() {\n return {\n appliedFilter: this.appliedFilter,\n currentFilter: this.currentFilter,\n feedbackVm: this.feedbackVm,\n managerVm: this.managerVm,\n builderVm: this.builderVm,\n saverVm: this.saverVm\n };\n }\n\n openManager() {\n this.showManager = true;\n }\n\n closeManager() {\n this.showManager = false;\n }\n\n openBuilder() {\n this.showBuilder = true;\n }\n\n closeBuilder() {\n this.showBuilder = false;\n }\n\n openSaver() {\n this.showSaver = true;\n }\n\n closeSaver() {\n this.showSaver = false;\n }\n\n showFeedback(message: string) {\n this.feedback.message = message;\n }\n\n async applyFilter(filter: string | FilterDTO): Promise<void> {\n let filterDto: FilterDTO;\n\n if (typeof filter === \"string\") {\n const result = await this.repository.getFilterById(filter);\n\n if (!result) {\n return;\n }\n\n filterDto = result;\n } else {\n filterDto = filter;\n }\n\n runInAction(() => {\n this.appliedFilter = filterDto;\n this.currentFilter = null;\n this.closeManager();\n this.closeBuilder();\n this.closeSaver();\n });\n }\n\n unsetFilter() {\n this.appliedFilter = null;\n this.currentFilter = null;\n }\n\n editAppliedFilter() {\n this.currentFilter = this.appliedFilter;\n this.openBuilder();\n }\n\n async renameFilter(filterId: string) {\n const filter = await this.repository.getFilterById(filterId);\n\n if (!filter) {\n return;\n }\n\n runInAction(() => {\n this.currentFilter = filter;\n this.closeManager();\n this.closeBuilder();\n this.openSaver();\n });\n }\n\n createFilter() {\n this.currentFilter = FilterMapper.toDTO(Filter.createEmpty());\n this.closeManager();\n this.openBuilder();\n this.closeSaver();\n }\n\n async cloneFilter(filterId: string) {\n const filter = await this.repository.getFilterById(filterId);\n\n if (!filter) {\n return;\n }\n\n runInAction(() => {\n this.currentFilter = FilterMapper.toDTO(\n Filter.create({ ...filter, id: \"\", name: `Clone of ${filter.name}` })\n );\n this.closeManager();\n this.openBuilder();\n this.closeSaver();\n });\n }\n\n async editFilter(filterId: string) {\n const filter = await this.repository.getFilterById(filterId);\n\n if (!filter) {\n return;\n }\n\n runInAction(() => {\n this.currentFilter = filter;\n this.closeManager();\n this.openBuilder();\n this.closeSaver();\n });\n }\n\n async deleteFilter(filterId: string) {\n await this.repository.deleteFilter(filterId);\n\n runInAction(() => {\n this.currentFilter = null;\n });\n }\n\n saveFilter(filter: FilterDTO) {\n this.currentFilter = filter;\n this.closeManager();\n this.openBuilder();\n this.openSaver();\n }\n\n async persistFilter(filter: FilterDTO) {\n if (filter.id) {\n await this.updateFilterIntoRepository(filter);\n } else {\n await this.createFilterIntoRepository(filter);\n }\n\n runInAction(() => {\n this.closeManager();\n this.closeBuilder();\n this.closeSaver();\n });\n }\n\n private async createFilterIntoRepository(filterDto: FilterDTO) {\n const newFilter = await this.repository.createFilter(filterDto);\n\n if (!newFilter) {\n return;\n }\n\n /**\n * repository.createFilter returns generates the filter id.\n * We need to set it back as appliedFilter, otherwise further actions on the filter would fail (update/delete).\n */\n runInAction(() => {\n this.appliedFilter = newFilter;\n this.currentFilter = null;\n });\n }\n\n private async updateFilterIntoRepository(filter: FilterDTO) {\n await this.repository.updateFilter(filter);\n\n runInAction(() => {\n this.appliedFilter = filter;\n this.currentFilter = null;\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["makeAutoObservable","runInAction","Feedback","Filter","FilterMapper","AdvancedSearchPresenter","showBuilder","showManager","showSaver","currentFilter","appliedFilter","constructor","repository","feedback","load","listFilters","managerVm","vm","isOpen","view","isLoading","getLoading","loadingLabel","filters","getFilters","map","filter","id","name","description","createdOn","length","feedbackVm","Boolean","message","builderVm","saverVm","openManager","closeManager","openBuilder","closeBuilder","openSaver","closeSaver","showFeedback","applyFilter","filterDto","result","getFilterById","unsetFilter","editAppliedFilter","renameFilter","filterId","createFilter","toDTO","createEmpty","cloneFilter","create","editFilter","deleteFilter","saveFilter","persistFilter","updateFilterIntoRepository","createFilterIntoRepository","newFilter","updateFilter"],"sources":["AdvancedSearchPresenter.ts"],"sourcesContent":["import { makeAutoObservable, runInAction } from \"mobx\";\nimport type { FilterDTO, FilterRepository } from \"~/components/AdvancedSearch/domain\";\nimport { Feedback, Filter, FilterMapper } from \"~/components/AdvancedSearch/domain\";\n\nexport interface AdvancedSearchPresenterInterface {\n load(): Promise<void>;\n openManager(): void;\n closeManager(): void;\n openBuilder(): void;\n closeBuilder(): void;\n openSaver(): void;\n closeSaver(): void;\n showFeedback(message: string): void;\n applyFilter(filter: string | FilterDTO): Promise<void>;\n unsetFilter(): void;\n editAppliedFilter(): void;\n createFilter(): void;\n editFilter(filterId: string): Promise<void>;\n deleteFilter(id: string): Promise<void>;\n saveFilter(filter: FilterDTO): void;\n renameFilter(filterId: string): Promise<void>;\n cloneFilter(filterId: string): Promise<void>;\n persistFilter(filter: FilterDTO): Promise<void>;\n get vm(): {\n currentFilter: FilterDTO | null;\n appliedFilter: FilterDTO | null;\n feedbackVm: {\n isOpen: boolean;\n message: string;\n };\n managerVm: {\n isOpen: boolean;\n view: string;\n isLoading: boolean;\n loadingLabel: string;\n filters: Array<{\n id: string;\n name: string;\n description: string;\n createdOn: string;\n }>;\n };\n builderVm: {\n isOpen: boolean;\n };\n saverVm: {\n isOpen: boolean;\n isLoading: boolean;\n loadingLabel: string;\n };\n };\n}\n\nexport class AdvancedSearchPresenter implements AdvancedSearchPresenterInterface {\n private repository: FilterRepository;\n private readonly feedback: Feedback;\n private showBuilder = false;\n private showManager = false;\n private showSaver = false;\n private currentFilter: FilterDTO | null = null;\n private appliedFilter: FilterDTO | null = null;\n\n constructor(repository: FilterRepository) {\n this.repository = repository;\n this.feedback = new Feedback();\n makeAutoObservable(this);\n }\n\n async load() {\n await this.repository.listFilters();\n }\n\n private get managerVm() {\n const vm = {\n isOpen: this.showManager,\n view: \"EMPTY\",\n isLoading: this.repository.getLoading().isLoading,\n loadingLabel: this.repository.getLoading().loadingLabel,\n filters: this.repository.getFilters().map(filter => ({\n id: filter.id,\n name: filter.name,\n description: filter.description || \"\",\n createdOn: filter.createdOn || \"\"\n }))\n };\n\n if (this.repository.getFilters().length !== 0) {\n vm.view = \"LIST\";\n }\n\n return vm;\n }\n\n private get feedbackVm() {\n return {\n isOpen: Boolean(this.feedback.message || this.repository.getLoading().message),\n message: this.feedback.message || this.repository.getLoading().message\n };\n }\n\n private get builderVm() {\n return {\n isOpen: this.showBuilder\n };\n }\n\n private get saverVm() {\n return {\n isOpen: this.showSaver,\n isLoading: this.repository.getLoading().isLoading,\n loadingLabel: this.repository.getLoading().loadingLabel\n };\n }\n\n get vm() {\n return {\n appliedFilter: this.appliedFilter,\n currentFilter: this.currentFilter,\n feedbackVm: this.feedbackVm,\n managerVm: this.managerVm,\n builderVm: this.builderVm,\n saverVm: this.saverVm\n };\n }\n\n openManager() {\n this.showManager = true;\n }\n\n closeManager() {\n this.showManager = false;\n }\n\n openBuilder() {\n this.showBuilder = true;\n }\n\n closeBuilder() {\n this.showBuilder = false;\n }\n\n openSaver() {\n this.showSaver = true;\n }\n\n closeSaver() {\n this.showSaver = false;\n }\n\n showFeedback(message: string) {\n this.feedback.message = message;\n }\n\n async applyFilter(filter: string | FilterDTO): Promise<void> {\n let filterDto: FilterDTO;\n\n if (typeof filter === \"string\") {\n const result = await this.repository.getFilterById(filter);\n\n if (!result) {\n return;\n }\n\n filterDto = result;\n } else {\n filterDto = filter;\n }\n\n runInAction(() => {\n this.appliedFilter = filterDto;\n this.currentFilter = null;\n this.closeManager();\n this.closeBuilder();\n this.closeSaver();\n });\n }\n\n unsetFilter() {\n this.appliedFilter = null;\n this.currentFilter = null;\n }\n\n editAppliedFilter() {\n this.currentFilter = this.appliedFilter;\n this.openBuilder();\n }\n\n async renameFilter(filterId: string) {\n const filter = await this.repository.getFilterById(filterId);\n\n if (!filter) {\n return;\n }\n\n runInAction(() => {\n this.currentFilter = filter;\n this.closeManager();\n this.closeBuilder();\n this.openSaver();\n });\n }\n\n createFilter() {\n this.currentFilter = FilterMapper.toDTO(Filter.createEmpty());\n this.closeManager();\n this.openBuilder();\n this.closeSaver();\n }\n\n async cloneFilter(filterId: string) {\n const filter = await this.repository.getFilterById(filterId);\n\n if (!filter) {\n return;\n }\n\n runInAction(() => {\n this.currentFilter = FilterMapper.toDTO(\n Filter.create({ ...filter, id: \"\", name: `Clone of ${filter.name}` })\n );\n this.closeManager();\n this.openBuilder();\n this.closeSaver();\n });\n }\n\n async editFilter(filterId: string) {\n const filter = await this.repository.getFilterById(filterId);\n\n if (!filter) {\n return;\n }\n\n runInAction(() => {\n this.currentFilter = filter;\n this.closeManager();\n this.openBuilder();\n this.closeSaver();\n });\n }\n\n async deleteFilter(filterId: string) {\n await this.repository.deleteFilter(filterId);\n\n runInAction(() => {\n this.currentFilter = null;\n });\n }\n\n saveFilter(filter: FilterDTO) {\n this.currentFilter = filter;\n this.closeManager();\n this.openBuilder();\n this.openSaver();\n }\n\n async persistFilter(filter: FilterDTO) {\n if (filter.id) {\n await this.updateFilterIntoRepository(filter);\n } else {\n await this.createFilterIntoRepository(filter);\n }\n\n runInAction(() => {\n this.closeManager();\n this.closeBuilder();\n this.closeSaver();\n });\n }\n\n private async createFilterIntoRepository(filterDto: FilterDTO) {\n const newFilter = await this.repository.createFilter(filterDto);\n\n if (!newFilter) {\n return;\n }\n\n /**\n * repository.createFilter returns generates the filter id.\n * We need to set it back as appliedFilter, otherwise further actions on the filter would fail (update/delete).\n */\n runInAction(() => {\n this.appliedFilter = newFilter;\n this.currentFilter = null;\n });\n }\n\n private async updateFilterIntoRepository(filter: FilterDTO) {\n await this.repository.updateFilter(filter);\n\n runInAction(() => {\n this.appliedFilter = filter;\n this.currentFilter = null;\n });\n }\n}\n"],"mappings":"AAAA,SAASA,kBAAkB,EAAEC,WAAW,QAAQ,MAAM;AAEtD,SAASC,QAAQ,EAAEC,MAAM,EAAEC,YAAY;AAmDvC,OAAO,MAAMC,uBAAuB,CAA6C;EAGrEC,WAAW,GAAG,KAAK;EACnBC,WAAW,GAAG,KAAK;EACnBC,SAAS,GAAG,KAAK;EACjBC,aAAa,GAAqB,IAAI;EACtCC,aAAa,GAAqB,IAAI;EAE9CC,WAAWA,CAACC,UAA4B,EAAE;IACtC,IAAI,CAACA,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACC,QAAQ,GAAG,IAAIX,QAAQ,CAAC,CAAC;IAC9BF,kBAAkB,CAAC,IAAI,CAAC;EAC5B;EAEA,MAAMc,IAAIA,CAAA,EAAG;IACT,MAAM,IAAI,CAACF,UAAU,CAACG,WAAW,CAAC,CAAC;EACvC;EAEA,IAAYC,SAASA,CAAA,EAAG;IACpB,MAAMC,EAAE,GAAG;MACPC,MAAM,EAAE,IAAI,CAACX,WAAW;MACxBY,IAAI,EAAE,OAAO;MACbC,SAAS,EAAE,IAAI,CAACR,UAAU,CAACS,UAAU,CAAC,CAAC,CAACD,SAAS;MACjDE,YAAY,EAAE,IAAI,CAACV,UAAU,CAACS,UAAU,CAAC,CAAC,CAACC,YAAY;MACvDC,OAAO,EAAE,IAAI,CAACX,UAAU,CAACY,UAAU,CAAC,CAAC,CAACC,GAAG,CAACC,MAAM,KAAK;QACjDC,EAAE,EAAED,MAAM,CAACC,EAAE;QACbC,IAAI,EAAEF,MAAM,CAACE,IAAI;QACjBC,WAAW,EAAEH,MAAM,CAACG,WAAW,IAAI,EAAE;QACrCC,SAAS,EAAEJ,MAAM,CAACI,SAAS,IAAI;MACnC,CAAC,CAAC;IACN,CAAC;IAED,IAAI,IAAI,CAAClB,UAAU,CAACY,UAAU,CAAC,CAAC,CAACO,MAAM,KAAK,CAAC,EAAE;MAC3Cd,EAAE,CAACE,IAAI,GAAG,MAAM;IACpB;IAEA,OAAOF,EAAE;EACb;EAEA,IAAYe,UAAUA,CAAA,EAAG;IACrB,OAAO;MACHd,MAAM,EAAEe,OAAO,CAAC,IAAI,CAACpB,QAAQ,CAACqB,OAAO,IAAI,IAAI,CAACtB,UAAU,CAACS,UAAU,CAAC,CAAC,CAACa,OAAO,CAAC;MAC9EA,OAAO,EAAE,IAAI,CAACrB,QAAQ,CAACqB,OAAO,IAAI,IAAI,CAACtB,UAAU,CAACS,UAAU,CAAC,CAAC,CAACa;IACnE,CAAC;EACL;EAEA,IAAYC,SAASA,CAAA,EAAG;IACpB,OAAO;MACHjB,MAAM,EAAE,IAAI,CAACZ;IACjB,CAAC;EACL;EAEA,IAAY8B,OAAOA,CAAA,EAAG;IAClB,OAAO;MACHlB,MAAM,EAAE,IAAI,CAACV,SAAS;MACtBY,SAAS,EAAE,IAAI,CAACR,UAAU,CAACS,UAAU,CAAC,CAAC,CAACD,SAAS;MACjDE,YAAY,EAAE,IAAI,CAACV,UAAU,CAACS,UAAU,CAAC,CAAC,CAACC;IAC/C,CAAC;EACL;EAEA,IAAIL,EAAEA,CAAA,EAAG;IACL,OAAO;MACHP,aAAa,EAAE,IAAI,CAACA,aAAa;MACjCD,aAAa,EAAE,IAAI,CAACA,aAAa;MACjCuB,UAAU,EAAE,IAAI,CAACA,UAAU;MAC3BhB,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBmB,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBC,OAAO,EAAE,IAAI,CAACA;IAClB,CAAC;EACL;EAEAC,WAAWA,CAAA,EAAG;IACV,IAAI,CAAC9B,WAAW,GAAG,IAAI;EAC3B;EAEA+B,YAAYA,CAAA,EAAG;IACX,IAAI,CAAC/B,WAAW,GAAG,KAAK;EAC5B;EAEAgC,WAAWA,CAAA,EAAG;IACV,IAAI,CAACjC,WAAW,GAAG,IAAI;EAC3B;EAEAkC,YAAYA,CAAA,EAAG;IACX,IAAI,CAAClC,WAAW,GAAG,KAAK;EAC5B;EAEAmC,SAASA,CAAA,EAAG;IACR,IAAI,CAACjC,SAAS,GAAG,IAAI;EACzB;EAEAkC,UAAUA,CAAA,EAAG;IACT,IAAI,CAAClC,SAAS,GAAG,KAAK;EAC1B;EAEAmC,YAAYA,CAACT,OAAe,EAAE;IAC1B,IAAI,CAACrB,QAAQ,CAACqB,OAAO,GAAGA,OAAO;EACnC;EAEA,MAAMU,WAAWA,CAAClB,MAA0B,EAAiB;IACzD,IAAImB,SAAoB;IAExB,IAAI,OAAOnB,MAAM,KAAK,QAAQ,EAAE;MAC5B,MAAMoB,MAAM,GAAG,MAAM,IAAI,CAAClC,UAAU,CAACmC,aAAa,CAACrB,MAAM,CAAC;MAE1D,IAAI,CAACoB,MAAM,EAAE;QACT;MACJ;MAEAD,SAAS,GAAGC,MAAM;IACtB,CAAC,MAAM;MACHD,SAAS,GAAGnB,MAAM;IACtB;IAEAzB,WAAW,CAAC,MAAM;MACd,IAAI,CAACS,aAAa,GAAGmC,SAAS;MAC9B,IAAI,CAACpC,aAAa,GAAG,IAAI;MACzB,IAAI,CAAC6B,YAAY,CAAC,CAAC;MACnB,IAAI,CAACE,YAAY,CAAC,CAAC;MACnB,IAAI,CAACE,UAAU,CAAC,CAAC;IACrB,CAAC,CAAC;EACN;EAEAM,WAAWA,CAAA,EAAG;IACV,IAAI,CAACtC,aAAa,GAAG,IAAI;IACzB,IAAI,CAACD,aAAa,GAAG,IAAI;EAC7B;EAEAwC,iBAAiBA,CAAA,EAAG;IAChB,IAAI,CAACxC,aAAa,GAAG,IAAI,CAACC,aAAa;IACvC,IAAI,CAAC6B,WAAW,CAAC,CAAC;EACtB;EAEA,MAAMW,YAAYA,CAACC,QAAgB,EAAE;IACjC,MAAMzB,MAAM,GAAG,MAAM,IAAI,CAACd,UAAU,CAACmC,aAAa,CAACI,QAAQ,CAAC;IAE5D,IAAI,CAACzB,MAAM,EAAE;MACT;IACJ;IAEAzB,WAAW,CAAC,MAAM;MACd,IAAI,CAACQ,aAAa,GAAGiB,MAAM;MAC3B,IAAI,CAACY,YAAY,CAAC,CAAC;MACnB,IAAI,CAACE,YAAY,CAAC,CAAC;MACnB,IAAI,CAACC,SAAS,CAAC,CAAC;IACpB,CAAC,CAAC;EACN;EAEAW,YAAYA,CAAA,EAAG;IACX,IAAI,CAAC3C,aAAa,GAAGL,YAAY,CAACiD,KAAK,CAAClD,MAAM,CAACmD,WAAW,CAAC,CAAC,CAAC;IAC7D,IAAI,CAAChB,YAAY,CAAC,CAAC;IACnB,IAAI,CAACC,WAAW,CAAC,CAAC;IAClB,IAAI,CAACG,UAAU,CAAC,CAAC;EACrB;EAEA,MAAMa,WAAWA,CAACJ,QAAgB,EAAE;IAChC,MAAMzB,MAAM,GAAG,MAAM,IAAI,CAACd,UAAU,CAACmC,aAAa,CAACI,QAAQ,CAAC;IAE5D,IAAI,CAACzB,MAAM,EAAE;MACT;IACJ;IAEAzB,WAAW,CAAC,MAAM;MACd,IAAI,CAACQ,aAAa,GAAGL,YAAY,CAACiD,KAAK,CACnClD,MAAM,CAACqD,MAAM,CAAC;QAAE,GAAG9B,MAAM;QAAEC,EAAE,EAAE,EAAE;QAAEC,IAAI,EAAE,YAAYF,MAAM,CAACE,IAAI;MAAG,CAAC,CACxE,CAAC;MACD,IAAI,CAACU,YAAY,CAAC,CAAC;MACnB,IAAI,CAACC,WAAW,CAAC,CAAC;MAClB,IAAI,CAACG,UAAU,CAAC,CAAC;IACrB,CAAC,CAAC;EACN;EAEA,MAAMe,UAAUA,CAACN,QAAgB,EAAE;IAC/B,MAAMzB,MAAM,GAAG,MAAM,IAAI,CAACd,UAAU,CAACmC,aAAa,CAACI,QAAQ,CAAC;IAE5D,IAAI,CAACzB,MAAM,EAAE;MACT;IACJ;IAEAzB,WAAW,CAAC,MAAM;MACd,IAAI,CAACQ,aAAa,GAAGiB,MAAM;MAC3B,IAAI,CAACY,YAAY,CAAC,CAAC;MACnB,IAAI,CAACC,WAAW,CAAC,CAAC;MAClB,IAAI,CAACG,UAAU,CAAC,CAAC;IACrB,CAAC,CAAC;EACN;EAEA,MAAMgB,YAAYA,CAACP,QAAgB,EAAE;IACjC,MAAM,IAAI,CAACvC,UAAU,CAAC8C,YAAY,CAACP,QAAQ,CAAC;IAE5ClD,WAAW,CAAC,MAAM;MACd,IAAI,CAACQ,aAAa,GAAG,IAAI;IAC7B,CAAC,CAAC;EACN;EAEAkD,UAAUA,CAACjC,MAAiB,EAAE;IAC1B,IAAI,CAACjB,aAAa,GAAGiB,MAAM;IAC3B,IAAI,CAACY,YAAY,CAAC,CAAC;IACnB,IAAI,CAACC,WAAW,CAAC,CAAC;IAClB,IAAI,CAACE,SAAS,CAAC,CAAC;EACpB;EAEA,MAAMmB,aAAaA,CAAClC,MAAiB,EAAE;IACnC,IAAIA,MAAM,CAACC,EAAE,EAAE;MACX,MAAM,IAAI,CAACkC,0BAA0B,CAACnC,MAAM,CAAC;IACjD,CAAC,MAAM;MACH,MAAM,IAAI,CAACoC,0BAA0B,CAACpC,MAAM,CAAC;IACjD;IAEAzB,WAAW,CAAC,MAAM;MACd,IAAI,CAACqC,YAAY,CAAC,CAAC;MACnB,IAAI,CAACE,YAAY,CAAC,CAAC;MACnB,IAAI,CAACE,UAAU,CAAC,CAAC;IACrB,CAAC,CAAC;EACN;EAEA,MAAcoB,0BAA0BA,CAACjB,SAAoB,EAAE;IAC3D,MAAMkB,SAAS,GAAG,MAAM,IAAI,CAACnD,UAAU,CAACwC,YAAY,CAACP,SAAS,CAAC;IAE/D,IAAI,CAACkB,SAAS,EAAE;MACZ;IACJ;;IAEA;AACR;AACA;AACA;IACQ9D,WAAW,CAAC,MAAM;MACd,IAAI,CAACS,aAAa,GAAGqD,SAAS;MAC9B,IAAI,CAACtD,aAAa,GAAG,IAAI;IAC7B,CAAC,CAAC;EACN;EAEA,MAAcoD,0BAA0BA,CAACnC,MAAiB,EAAE;IACxD,MAAM,IAAI,CAACd,UAAU,CAACoD,YAAY,CAACtC,MAAM,CAAC;IAE1CzB,WAAW,CAAC,MAAM;MACd,IAAI,CAACS,aAAa,GAAGgB,MAAM;MAC3B,IAAI,CAACjB,aAAa,GAAG,IAAI;IAC7B,CAAC,CAAC;EACN;AACJ","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AdvancedSearchPresenter","FilterRepository","Operation","mockGateway","list","jest","fn","get","create","update","delete","createMockGateway","deleteFn","describe","namespace","demoFilter","field","value","condition","demoGroup","operation","AND","filters","filter1","id","name","description","groups","createdOn","Date","toString","filter2","gateway","mockImplementation","Promise","resolve","presenter","beforeEach","clearAllMocks","repository","it","load","expect","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 { AdvancedSearchPresenter } from \"./AdvancedSearchPresenter\";\nimport {\n FilterDTO,\n FilterGroupDTO,\n FilterGroupFilterDTO,\n FilterRepository,\n Operation\n} from \"./domain\";\nimport { FiltersGatewayInterface } from \"./gateways\";\n\nconst mockGateway: FiltersGatewayInterface = {\n list: jest.fn(),\n get: jest.fn(),\n create: jest.fn(),\n update: jest.fn(),\n delete: jest.fn()\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: jest.fn().mockImplementation(() => {\n return Promise.resolve([filter1, filter2]);\n }),\n get: jest.fn().mockImplementation(() => {\n return Promise.resolve(filter1);\n }),\n create: jest.fn().mockImplementation(() => {\n return Promise.resolve(filter1);\n }),\n update: jest.fn().mockImplementation(() => {\n return Promise.resolve({ ...filter1, name: \"Filter 1 - Edit\" });\n }),\n delete: jest.fn().mockImplementation(() => {\n return Promise.resolve(true);\n })\n });\n\n let presenter: AdvancedSearchPresenter;\n\n beforeEach(() => {\n jest.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: jest.fn().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: jest.fn().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: jest.fn().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: jest.fn().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,"names":["AdvancedSearchPresenter","FilterRepository","Operation","mockGateway","list","jest","fn","get","create","update","delete","createMockGateway","deleteFn","describe","namespace","demoFilter","field","value","condition","demoGroup","operation","AND","filters","filter1","id","name","description","groups","createdOn","Date","toString","filter2","gateway","mockImplementation","Promise","resolve","presenter","beforeEach","clearAllMocks","repository","it","load","expect","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 { AdvancedSearchPresenter } from \"./AdvancedSearchPresenter\";\nimport type { FilterDTO, FilterGroupDTO, FilterGroupFilterDTO } from \"./domain\";\nimport { FilterRepository, Operation } from \"./domain\";\nimport type { FiltersGatewayInterface } from \"./gateways\";\n\nconst mockGateway: FiltersGatewayInterface = {\n list: jest.fn(),\n get: jest.fn(),\n create: jest.fn(),\n update: jest.fn(),\n delete: jest.fn()\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: jest.fn().mockImplementation(() => {\n return Promise.resolve([filter1, filter2]);\n }),\n get: jest.fn().mockImplementation(() => {\n return Promise.resolve(filter1);\n }),\n create: jest.fn().mockImplementation(() => {\n return Promise.resolve(filter1);\n }),\n update: jest.fn().mockImplementation(() => {\n return Promise.resolve({ ...filter1, name: \"Filter 1 - Edit\" });\n }),\n delete: jest.fn().mockImplementation(() => {\n return Promise.resolve(true);\n })\n });\n\n let presenter: AdvancedSearchPresenter;\n\n beforeEach(() => {\n jest.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: jest.fn().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: jest.fn().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: jest.fn().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: jest.fn().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 +1 @@
|
|
|
1
|
-
{"version":3,"names":["get","GraphQLInputMapper","toGraphQL","configuration","operation","groups","map","group","filters","filter","field","condition","value","keys","trim","split","shift","length","createNestedObject","createKeys","convertToBooleanOrString","values","JSON","parse","reduceRight","acc","key"],"sources":["GraphQLInputMapper.ts"],"sourcesContent":["import get from \"lodash/get\";\nimport { FilterDTO } from \"~/components/AdvancedSearch/domain\";\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"],"mappings":"AAAA,OAAOA,GAAG,MAAM,YAAY;AAO5B,OAAO,MAAMC,kBAAkB,CAAC;EAC5B,OAAOC,SAASA,CAACC,aAAwB,EAAE;IACvC,OAAO;MACH,CAACA,aAAa,CAACC,SAAS,GAAGD,aAAa,CAACE,MAAM,CAACC,GAAG,CAACC,KAAK,IAAI;QACzD,OAAO;UACH,CAACA,KAAK,CAACH,SAAS,GAAGG,KAAK,CAACC,OAAO,CAACF,GAAG,CAACG,MAAM,IAAI;YAC3C,MAAM;cAAEC,KAAK;cAAEC,SAAS;cAAEC;YAAM,CAAC,GAAGH,MAAM;YAE1C,MAAMI,IAAI,GAAGH,KAAK,CAACI,IAAI,CAAC,CAAC,CAACC,KAAK,CAAC,GAAG,CAAC;YACpCF,IAAI,CAACG,KAAK,CAAC,CAAC;YAEZ,IAAIH,IAAI,CAACI,MAAM,KAAK,CAAC,EAAE;cACnB,OAAO,IAAI,CAACC,kBAAkB,CAC1B,IAAI,CAACC,UAAU,CAACT,KAAK,EAAEC,SAAS,CAAC,EACjC,IAAI,CAACS,wBAAwB,CAACR,KAAK,CACvC,CAAC;YACL;YAEA,IAAI;cACA,MAAMS,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACX,KAAK,CAAC;cAChC,OAAO,IAAI,CAACM,kBAAkB,CAC1B,IAAI,CAACC,UAAU,CAACT,KAAK,EAAEC,SAAS,CAAC,EACjC,IAAI,CAACS,wBAAwB,CAACpB,GAAG,CAACqB,MAAM,EAAER,IAAI,CAAC,CACnD,CAAC;YACL,CAAC,CAAC,MAAM;cACJ,OAAO,IAAI,CAACK,kBAAkB,CAC1B,IAAI,CAACC,UAAU,CAACT,KAAK,EAAEC,SAAS,CAAC,EACjC,IAAI,CAACS,wBAAwB,CAACR,KAAK,CACvC,CAAC;YACL;UACJ,CAAC;QACL,CAAC;MACL,CAAC;IACL,CAAC;EACL;EAEA,OAAeQ,wBAAwBA,CAACR,KAAuB,EAAoB;IAC/E,IAAIA,KAAK,KAAK,MAAM,EAAE;MAClB,OAAO,IAAI;IACf;IAEA,IAAIA,KAAK,KAAK,OAAO,EAAE;MACnB,OAAO,KAAK;IAChB;IAEA,OAAOA,KAAK,IAAI,EAAE;EACtB;EAEA,OAAeO,UAAUA,CAACT,KAAa,EAAEC,SAAiB,EAAY;IAClE,OAAO,GAAGD,KAAK,GAAGC,SAAS,EAAE,CAACG,IAAI,CAAC,CAAC,CAACC,KAAK,CAAC,GAAG,CAAC;EACnD;EAEA,OAAeG,kBAAkBA,CAACL,IAAc,EAAED,KAAuB,EAAgB;IACrF,OAAOC,IAAI,CAACW,WAAW,CAAC,CAACC,GAAG,EAAEC,GAAG,MAAM;MAAE,CAACA,GAAG,GAAGD;IAAI,CAAC,CAAC,EAAEb,KAAgC,CAAC;EAC7F;AACJ","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["get","GraphQLInputMapper","toGraphQL","configuration","operation","groups","map","group","filters","filter","field","condition","value","keys","trim","split","shift","length","createNestedObject","createKeys","convertToBooleanOrString","values","JSON","parse","reduceRight","acc","key"],"sources":["GraphQLInputMapper.ts"],"sourcesContent":["import get from \"lodash/get\";\nimport type { FilterDTO } from \"~/components/AdvancedSearch/domain\";\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"],"mappings":"AAAA,OAAOA,GAAG,MAAM,YAAY;AAO5B,OAAO,MAAMC,kBAAkB,CAAC;EAC5B,OAAOC,SAASA,CAACC,aAAwB,EAAE;IACvC,OAAO;MACH,CAACA,aAAa,CAACC,SAAS,GAAGD,aAAa,CAACE,MAAM,CAACC,GAAG,CAACC,KAAK,IAAI;QACzD,OAAO;UACH,CAACA,KAAK,CAACH,SAAS,GAAGG,KAAK,CAACC,OAAO,CAACF,GAAG,CAACG,MAAM,IAAI;YAC3C,MAAM;cAAEC,KAAK;cAAEC,SAAS;cAAEC;YAAM,CAAC,GAAGH,MAAM;YAE1C,MAAMI,IAAI,GAAGH,KAAK,CAACI,IAAI,CAAC,CAAC,CAACC,KAAK,CAAC,GAAG,CAAC;YACpCF,IAAI,CAACG,KAAK,CAAC,CAAC;YAEZ,IAAIH,IAAI,CAACI,MAAM,KAAK,CAAC,EAAE;cACnB,OAAO,IAAI,CAACC,kBAAkB,CAC1B,IAAI,CAACC,UAAU,CAACT,KAAK,EAAEC,SAAS,CAAC,EACjC,IAAI,CAACS,wBAAwB,CAACR,KAAK,CACvC,CAAC;YACL;YAEA,IAAI;cACA,MAAMS,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACX,KAAK,CAAC;cAChC,OAAO,IAAI,CAACM,kBAAkB,CAC1B,IAAI,CAACC,UAAU,CAACT,KAAK,EAAEC,SAAS,CAAC,EACjC,IAAI,CAACS,wBAAwB,CAACpB,GAAG,CAACqB,MAAM,EAAER,IAAI,CAAC,CACnD,CAAC;YACL,CAAC,CAAC,MAAM;cACJ,OAAO,IAAI,CAACK,kBAAkB,CAC1B,IAAI,CAACC,UAAU,CAACT,KAAK,EAAEC,SAAS,CAAC,EACjC,IAAI,CAACS,wBAAwB,CAACR,KAAK,CACvC,CAAC;YACL;UACJ,CAAC;QACL,CAAC;MACL,CAAC;IACL,CAAC;EACL;EAEA,OAAeQ,wBAAwBA,CAACR,KAAuB,EAAoB;IAC/E,IAAIA,KAAK,KAAK,MAAM,EAAE;MAClB,OAAO,IAAI;IACf;IAEA,IAAIA,KAAK,KAAK,OAAO,EAAE;MACnB,OAAO,KAAK;IAChB;IAEA,OAAOA,KAAK,IAAI,EAAE;EACtB;EAEA,OAAeO,UAAUA,CAACT,KAAa,EAAEC,SAAiB,EAAY;IAClE,OAAO,GAAGD,KAAK,GAAGC,SAAS,EAAE,CAACG,IAAI,CAAC,CAAC,CAACC,KAAK,CAAC,GAAG,CAAC;EACnD;EAEA,OAAeG,kBAAkBA,CAACL,IAAc,EAAED,KAAuB,EAAgB;IACrF,OAAOC,IAAI,CAACW,WAAW,CAAC,CAACC,GAAG,EAAEC,GAAG,MAAM;MAAE,CAACA,GAAG,GAAGD;IAAI,CAAC,CAAC,EAAEb,KAAgC,CAAC;EAC7F;AACJ","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["GraphQLInputMapper","Operation","describe","it","filterDTO","id","name","operation","AND","groups","filters","field","condition","value","OR","output","toGraphQL","expect","toEqual","JSON","stringify","entryId","modelId","entryId_not"],"sources":["GraphQLInputMapper.test.ts"],"sourcesContent":["import { GraphQLInputMapper } from \"./GraphQLInputMapper\";\nimport {
|
|
1
|
+
{"version":3,"names":["GraphQLInputMapper","Operation","describe","it","filterDTO","id","name","operation","AND","groups","filters","field","condition","value","OR","output","toGraphQL","expect","toEqual","JSON","stringify","entryId","modelId","entryId_not"],"sources":["GraphQLInputMapper.test.ts"],"sourcesContent":["import { GraphQLInputMapper } from \"./GraphQLInputMapper\";\nimport type { FilterDTO } from \"./domain\";\nimport { Operation } from \"./domain\";\n\ndescribe(\"GraphQLInputMapper\", () => {\n it(\"should return a GraphQL formatted output based on the received FilterDTO\", () => {\n const filterDTO: FilterDTO = {\n id: \"any-id\",\n name: \"Untitled\",\n operation: Operation.AND,\n groups: [\n {\n operation: Operation.AND,\n filters: [\n {\n field: \"field-1\",\n condition: \" \",\n value: \"value-1\"\n },\n {\n field: \"field-2\",\n condition: \"_not\",\n value: \"value-2\"\n }\n ]\n },\n {\n operation: Operation.OR,\n filters: [\n {\n field: \"field-3\",\n condition: \"_startsWith\",\n value: \"value-3\"\n },\n {\n field: \"field-4\",\n condition: \"_not_contains\",\n value: \"value-4\"\n },\n {\n field: \"boolean-field-true\",\n condition: \" \",\n value: \"true\"\n },\n {\n field: \"boolean-field-false\",\n condition: \" \",\n value: \"false\"\n }\n ]\n }\n ]\n };\n\n const output = GraphQLInputMapper.toGraphQL(filterDTO);\n\n expect(output).toEqual({\n [Operation.AND]: [\n {\n [Operation.AND]: [\n {\n \"field-1\": \"value-1\"\n },\n {\n \"field-2_not\": \"value-2\"\n }\n ]\n },\n {\n [Operation.OR]: [\n {\n \"field-3_startsWith\": \"value-3\"\n },\n {\n \"field-4_not_contains\": \"value-4\"\n },\n {\n \"boolean-field-true\": true\n },\n {\n \"boolean-field-false\": false\n }\n ]\n }\n ]\n });\n });\n\n it(\"should return a GraphQL formatted output and support nested objects\", () => {\n const filterDTO: FilterDTO = {\n id: \"any-id\",\n name: \"Untitled\",\n operation: Operation.AND,\n groups: [\n {\n operation: Operation.AND,\n filters: [\n {\n field: \"field-1\",\n condition: \" \",\n value: \"value-1\"\n },\n {\n field: \"field-2\",\n condition: \"_not\",\n value: \"value-2\"\n },\n {\n field: \"field-3.entryId\",\n condition: \" \",\n value: JSON.stringify({ entryId: \"value-3\", modelId: \"any-modelId\" })\n },\n {\n field: \"field-4.entryId\",\n condition: \"_not\",\n value: JSON.stringify({ entryId: \"value-4\", modelId: \"any-modelId\" })\n },\n {\n field: \"field-5.sub-field.entryId\",\n condition: \" \",\n value: JSON.stringify({\n \"sub-field\": { entryId: \"value-5\", modelId: \"any-modelId\" }\n })\n },\n {\n field: \"field-6.sub-field.entryId\",\n condition: \"_not\",\n value: JSON.stringify({\n \"sub-field\": { entryId: \"value-6\", modelId: \"any-modelId\" }\n })\n }\n ]\n }\n ]\n };\n\n const output = GraphQLInputMapper.toGraphQL(filterDTO);\n\n expect(output).toEqual({\n [Operation.AND]: [\n {\n [Operation.AND]: [\n {\n \"field-1\": \"value-1\"\n },\n {\n \"field-2_not\": \"value-2\"\n },\n {\n \"field-3\": {\n entryId: \"value-3\"\n }\n },\n {\n \"field-4\": {\n entryId_not: \"value-4\"\n }\n },\n {\n \"field-5\": {\n \"sub-field\": {\n entryId: \"value-5\"\n }\n }\n },\n {\n \"field-6\": {\n \"sub-field\": {\n entryId_not: \"value-6\"\n }\n }\n }\n ]\n }\n ]\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { FormAPI, FormOnSubmit } from "@webiny/form";
|
|
3
|
-
import { QueryBuilderFormData, QueryBuilderViewModel } from "../QueryBuilderDrawerPresenter";
|
|
4
|
-
import { FieldDTOWithElement } from "../../domain";
|
|
2
|
+
import type { FormAPI, FormOnSubmit } from "@webiny/form";
|
|
3
|
+
import type { QueryBuilderFormData, QueryBuilderViewModel } from "../QueryBuilderDrawerPresenter";
|
|
4
|
+
import type { FieldDTOWithElement } from "../../domain";
|
|
5
5
|
export interface QueryBuilderProps {
|
|
6
6
|
onForm: (form: FormAPI) => void;
|
|
7
7
|
onSubmit: FormOnSubmit<QueryBuilderFormData>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Fragment","useEffect","ReactComponent","DeleteIcon","Accordion","Form","AddFilter","AddGroup","Details","Filter","FilterOperationLabel","GroupOperationLabel","OperationSelector","QueryBuilder","props","formRef","createRef","current","onForm","createElement","className","ref","data","vm","onChange","onSubmit","invalidFields","name","description","background","variant","groups","map","group","groupIndex","Item","title","defaultOpen","open","key","actions","label","Action","icon","onClick","onDeleteGroup","disabled","canDelete","filters","filter","filterIndex","fields","onFieldSelectChange","onSetFilterFieldData","onDelete","onDeleteFilterFromGroup","show","length","operation","onAddNewFilterToGroup","onAddGroup"],"sources":["QueryBuilder.tsx"],"sourcesContent":["import React, { Fragment, useEffect } from \"react\";\nimport { ReactComponent as DeleteIcon } from \"@webiny/icons/delete_outline.svg\";\n\nimport { Accordion } from \"@webiny/admin-ui\";\nimport {
|
|
1
|
+
{"version":3,"names":["React","Fragment","useEffect","ReactComponent","DeleteIcon","Accordion","Form","AddFilter","AddGroup","Details","Filter","FilterOperationLabel","GroupOperationLabel","OperationSelector","QueryBuilder","props","formRef","createRef","current","onForm","createElement","className","ref","data","vm","onChange","onSubmit","invalidFields","name","description","background","variant","groups","map","group","groupIndex","Item","title","defaultOpen","open","key","actions","label","Action","icon","onClick","onDeleteGroup","disabled","canDelete","filters","filter","filterIndex","fields","onFieldSelectChange","onSetFilterFieldData","onDelete","onDeleteFilterFromGroup","show","length","operation","onAddNewFilterToGroup","onAddGroup"],"sources":["QueryBuilder.tsx"],"sourcesContent":["import React, { Fragment, useEffect } from \"react\";\nimport { ReactComponent as DeleteIcon } from \"@webiny/icons/delete_outline.svg\";\n\nimport { Accordion } from \"@webiny/admin-ui\";\nimport type { FormAPI, FormOnSubmit } from \"@webiny/form\";\nimport { Form } from \"@webiny/form\";\n\nimport type { QueryBuilderFormData, QueryBuilderViewModel } from \"../QueryBuilderDrawerPresenter\";\n\nimport {\n AddFilter,\n AddGroup,\n Details,\n Filter,\n FilterOperationLabel,\n GroupOperationLabel,\n OperationSelector\n} from \"./components\";\n\nimport type { FieldDTOWithElement } from \"~/components/AdvancedSearch/domain\";\n\nexport interface QueryBuilderProps {\n onForm: (form: FormAPI) => void;\n onSubmit: FormOnSubmit<QueryBuilderFormData>;\n onChange: (data: QueryBuilderFormData) => void;\n onDeleteGroup: (groupIndex: number) => void;\n onSetFilterFieldData: (groupIndex: number, filterIndex: number, data: string) => void;\n onDeleteFilterFromGroup: (groupIndex: number, filterIndex: number) => void;\n onAddNewFilterToGroup: (groupIndex: number) => void;\n onAddGroup: () => void;\n fields: FieldDTOWithElement[];\n vm: QueryBuilderViewModel;\n}\n\nexport const QueryBuilder = (props: QueryBuilderProps) => {\n const formRef = React.createRef<FormAPI>();\n\n useEffect(() => {\n if (formRef.current) {\n props.onForm(formRef.current);\n }\n }, []);\n\n return (\n <div className={\"wby-py-lg\"}>\n <Form\n ref={formRef}\n data={props.vm.data}\n onChange={props.onChange}\n onSubmit={props.onSubmit}\n invalidFields={props.vm.invalidFields}\n >\n {() => (\n <>\n <Details name={props.vm.name} description={props.vm.description} />\n <Accordion background={\"light\"} variant={\"container\"}>\n {props.vm.data.groups.map((group, groupIndex, groups) => (\n <Accordion.Item\n className={\"wby-relative\"}\n title={group.title}\n defaultOpen={group.open}\n key={`group-${groupIndex}`}\n actions={\n <>\n <div className={\"wby-mt-xxs wby-mr-xs-plus\"}>\n <OperationSelector\n label={\"Match all conditions\"}\n name={`groups.${groupIndex}.operation`}\n />\n </div>\n <Accordion.Item.Action\n icon={<DeleteIcon />}\n onClick={() => props.onDeleteGroup(groupIndex)}\n disabled={!group.canDelete}\n />\n </>\n }\n >\n {group.filters.map((filter, filterIndex, filters) => (\n <Fragment key={filterIndex}>\n <Filter\n name={`groups.${groupIndex}.filters.${filterIndex}`}\n filter={filter}\n fields={props.fields}\n onFieldSelectChange={data =>\n props.onSetFilterFieldData(\n groupIndex,\n filterIndex,\n data\n )\n }\n onDelete={() => {\n props.onDeleteFilterFromGroup(\n groupIndex,\n filterIndex\n );\n }}\n />\n <FilterOperationLabel\n show={filters.length !== filterIndex + 1}\n operation={group.operation}\n />\n </Fragment>\n ))}\n <AddFilter\n onClick={() => props.onAddNewFilterToGroup(groupIndex)}\n />\n <GroupOperationLabel\n show={groups.length !== groupIndex + 1}\n operation={props.vm.data.operation}\n />\n </Accordion.Item>\n ))}\n </Accordion>\n <AddGroup onClick={() => props.onAddGroup()} />\n </>\n )}\n </Form>\n </div>\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Bind","AutoComplete","Grid","Select","InputField","RemoveFilter","Filter","name","onDelete","onFieldSelectChange","fields","filter","createElement","Column","span","className","value","validation","options","map","field","label","onValueChange","selected","size","onChange","find","conditions","condition","onClick","disabled","canDelete"],"sources":["Filter.tsx"],"sourcesContent":["import React from \"react\";\nimport { Bind } from \"@webiny/form\";\n\nimport { AutoComplete, Grid, Select } from \"@webiny/admin-ui\";\n\nimport { InputField } from \"./InputField\";\nimport { RemoveFilter } from \"./controls\";\n\nimport { FieldDTOWithElement, FilterGroupFilterDTO } from \"../../../domain\";\n\ninterface FilterProps {\n name: string;\n filter: FilterGroupFilterDTO & { canDelete: boolean };\n fields: FieldDTOWithElement[];\n onDelete: () => void;\n onFieldSelectChange: (data: string) => void;\n}\n\nexport const Filter = ({ name, onDelete, onFieldSelectChange, fields, filter }: FilterProps) => {\n return (\n <Grid>\n <Grid.Column span={4}>\n <div className={\"wby-text-left\"}>\n <Bind name={`${name}.field`}>\n {({ value, validation }) => {\n const options = fields.map(field => ({\n value: field.value,\n label: field.label\n }));\n\n return (\n <AutoComplete\n label={\"Field\"}\n options={options}\n value={value}\n onValueChange={selected => {\n /**\n * Update the selected value only if it's different from the current value.\n * When the value is populated from data, onChange might trigger re-rendering of the form and clear related fields.\n */\n if (selected !== value) {\n onFieldSelectChange(selected);\n }\n }}\n validation={validation}\n size={\"lg\"}\n />\n );\n }}\n </Bind>\n </div>\n </Grid.Column>\n <Grid.Column span={3}>\n <div className={\"wby-text-left\"}>\n {filter.field && (\n <Bind name={`${name}.condition`}>\n {({ value, onChange, validation }) => (\n <Select\n label={\"Condition\"}\n options={\n fields.find(field => field.value === filter.field)\n ?.conditions || []\n }\n value={value}\n onChange={onChange}\n validation={validation}\n size={\"lg\"}\n />\n )}\n </Bind>\n )}\n </div>\n </Grid.Column>\n <Grid.Column span={4}>\n <div className={\"wby-text-left\"}>\n {filter.condition && (\n <InputField\n name={`${name}.value`}\n field={fields.find(field => field.value === filter.field)}\n />\n )}\n </div>\n </Grid.Column>\n <Grid.Column span={1}>\n <div className={\"wby-flex wby-justify-center wby-items-end wby-h-full\"}>\n <RemoveFilter onClick={onDelete} disabled={!filter.canDelete} />\n </div>\n </Grid.Column>\n </Grid>\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","Bind","AutoComplete","Grid","Select","InputField","RemoveFilter","Filter","name","onDelete","onFieldSelectChange","fields","filter","createElement","Column","span","className","value","validation","options","map","field","label","onValueChange","selected","size","onChange","find","conditions","condition","onClick","disabled","canDelete"],"sources":["Filter.tsx"],"sourcesContent":["import React from \"react\";\nimport { Bind } from \"@webiny/form\";\n\nimport { AutoComplete, Grid, Select } from \"@webiny/admin-ui\";\n\nimport { InputField } from \"./InputField\";\nimport { RemoveFilter } from \"./controls\";\n\nimport type { FieldDTOWithElement, FilterGroupFilterDTO } from \"../../../domain\";\n\ninterface FilterProps {\n name: string;\n filter: FilterGroupFilterDTO & { canDelete: boolean };\n fields: FieldDTOWithElement[];\n onDelete: () => void;\n onFieldSelectChange: (data: string) => void;\n}\n\nexport const Filter = ({ name, onDelete, onFieldSelectChange, fields, filter }: FilterProps) => {\n return (\n <Grid>\n <Grid.Column span={4}>\n <div className={\"wby-text-left\"}>\n <Bind name={`${name}.field`}>\n {({ value, validation }) => {\n const options = fields.map(field => ({\n value: field.value,\n label: field.label\n }));\n\n return (\n <AutoComplete\n label={\"Field\"}\n options={options}\n value={value}\n onValueChange={selected => {\n /**\n * Update the selected value only if it's different from the current value.\n * When the value is populated from data, onChange might trigger re-rendering of the form and clear related fields.\n */\n if (selected !== value) {\n onFieldSelectChange(selected);\n }\n }}\n validation={validation}\n size={\"lg\"}\n />\n );\n }}\n </Bind>\n </div>\n </Grid.Column>\n <Grid.Column span={3}>\n <div className={\"wby-text-left\"}>\n {filter.field && (\n <Bind name={`${name}.condition`}>\n {({ value, onChange, validation }) => (\n <Select\n label={\"Condition\"}\n options={\n fields.find(field => field.value === filter.field)\n ?.conditions || []\n }\n value={value}\n onChange={onChange}\n validation={validation}\n size={\"lg\"}\n />\n )}\n </Bind>\n )}\n </div>\n </Grid.Column>\n <Grid.Column span={4}>\n <div className={\"wby-text-left\"}>\n {filter.condition && (\n <InputField\n name={`${name}.value`}\n field={fields.find(field => field.value === filter.field)}\n />\n )}\n </div>\n </Grid.Column>\n <Grid.Column span={1}>\n <div className={\"wby-flex wby-justify-center wby-items-end wby-h-full\"}>\n <RemoveFilter onClick={onDelete} disabled={!filter.canDelete} />\n </div>\n </Grid.Column>\n </Grid>\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/InputField.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Text","InputFieldProvider","InputField","field","name","element","rest","createElement","size","type"],"sources":["InputField.tsx"],"sourcesContent":["import React from \"react\";\nimport { Text } from \"@webiny/admin-ui\";\nimport { InputFieldProvider } from \"~/components\";\nimport { FieldDTOWithElement } from \"~/components/AdvancedSearch/domain\";\n\ninterface InputFieldProps {\n field?: FieldDTOWithElement;\n name: string;\n}\n\nexport const InputField = ({ field, name }: InputFieldProps) => {\n if (!field) {\n return null;\n }\n\n const { element, ...rest } = field;\n\n if (!element) {\n return (\n <Text\n size={\"sm\"}\n >{`Cannot render \"${field.type}\" field: missing field renderer.`}</Text>\n );\n }\n\n return (\n <InputFieldProvider field={rest} name={name}>\n {element}\n </InputFieldProvider>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,QAAQ,kBAAkB;AACvC,SAASC,kBAAkB;AAQ3B,OAAO,MAAMC,UAAU,GAAGA,CAAC;EAAEC,KAAK;EAAEC;AAAsB,CAAC,KAAK;EAC5D,IAAI,CAACD,KAAK,EAAE;IACR,OAAO,IAAI;EACf;EAEA,MAAM;IAAEE,OAAO;IAAE,GAAGC;EAAK,CAAC,GAAGH,KAAK;EAElC,IAAI,CAACE,OAAO,EAAE;IACV,oBACIN,KAAA,CAAAQ,aAAA,CAACP,IAAI;MACDQ,IAAI,EAAE;IAAK,GACb,kBAAkBL,KAAK,CAACM,IAAI,kCAAyC,CAAC;EAEhF;EAEA,oBACIV,KAAA,CAAAQ,aAAA,CAACN,kBAAkB;IAACE,KAAK,EAAEG,IAAK;IAACF,IAAI,EAAEA;EAAK,GACvCC,OACe,CAAC;AAE7B,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","Text","InputFieldProvider","InputField","field","name","element","rest","createElement","size","type"],"sources":["InputField.tsx"],"sourcesContent":["import React from \"react\";\nimport { Text } from \"@webiny/admin-ui\";\nimport { InputFieldProvider } from \"~/components\";\nimport type { FieldDTOWithElement } from \"~/components/AdvancedSearch/domain\";\n\ninterface InputFieldProps {\n field?: FieldDTOWithElement;\n name: string;\n}\n\nexport const InputField = ({ field, name }: InputFieldProps) => {\n if (!field) {\n return null;\n }\n\n const { element, ...rest } = field;\n\n if (!element) {\n return (\n <Text\n size={\"sm\"}\n >{`Cannot render \"${field.type}\" field: missing field renderer.`}</Text>\n );\n }\n\n return (\n <InputFieldProvider field={rest} name={name}>\n {element}\n </InputFieldProvider>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,QAAQ,kBAAkB;AACvC,SAASC,kBAAkB;AAQ3B,OAAO,MAAMC,UAAU,GAAGA,CAAC;EAAEC,KAAK;EAAEC;AAAsB,CAAC,KAAK;EAC5D,IAAI,CAACD,KAAK,EAAE;IACR,OAAO,IAAI;EACf;EAEA,MAAM;IAAEE,OAAO;IAAE,GAAGC;EAAK,CAAC,GAAGH,KAAK;EAElC,IAAI,CAACE,OAAO,EAAE;IACV,oBACIN,KAAA,CAAAQ,aAAA,CAACP,IAAI;MACDQ,IAAI,EAAE;IAAK,GACb,kBAAkBL,KAAK,CAACM,IAAI,kCAAyC,CAAC;EAEhF;EAEA,oBACIV,KAAA,CAAAQ,aAAA,CAACN,kBAAkB;IAACE,KAAK,EAAEG,IAAK;IAACF,IAAI,EAAEA;EAAK,GACvCC,OACe,CAAC;AAE7B,CAAC","ignoreList":[]}
|