@webiny/app-trash-bin 6.3.0-beta.4 → 6.4.0-beta.0
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/Domain/Models/TrashBinItem/ITrashBinItemMapper.js +0 -3
- package/Domain/Models/TrashBinItem/TrashBinItem.js +13 -12
- package/Domain/Models/TrashBinItem/TrashBinItem.js.map +1 -1
- package/Domain/Models/TrashBinItem/index.js +0 -2
- package/Domain/Models/index.js +0 -2
- package/Domain/Repositories/Search/ISearchRepository.js +0 -3
- package/Domain/Repositories/Search/SearchRepository.js +12 -11
- package/Domain/Repositories/Search/SearchRepository.js.map +1 -1
- package/Domain/Repositories/Search/SearchRepositoryFactory.js +13 -12
- package/Domain/Repositories/Search/SearchRepositoryFactory.js.map +1 -1
- package/Domain/Repositories/Search/index.js +0 -2
- package/Domain/Repositories/SelectedItems/ISelectedItemsRepository.js +0 -3
- package/Domain/Repositories/SelectedItems/SelectedItemsRepository.js +24 -23
- package/Domain/Repositories/SelectedItems/SelectedItemsRepository.js.map +1 -1
- package/Domain/Repositories/SelectedItems/SelectedItemsRepositoryFactory.js +13 -12
- package/Domain/Repositories/SelectedItems/SelectedItemsRepositoryFactory.js.map +1 -1
- package/Domain/Repositories/SelectedItems/index.js +0 -2
- package/Domain/Repositories/Sorting/SortingRepositoryWithDefaults.js +16 -17
- package/Domain/Repositories/Sorting/SortingRepositoryWithDefaults.js.map +1 -1
- package/Domain/Repositories/Sorting/index.js +0 -2
- package/Domain/Repositories/TrashBinItems/ITrashBinItemsRepository.js +0 -3
- package/Domain/Repositories/TrashBinItems/TrashBinItemMapper.js +16 -15
- package/Domain/Repositories/TrashBinItems/TrashBinItemMapper.js.map +1 -1
- package/Domain/Repositories/TrashBinItems/TrashBinItemsRepository.js +81 -90
- package/Domain/Repositories/TrashBinItems/TrashBinItemsRepository.js.map +1 -1
- package/Domain/Repositories/TrashBinItems/TrashBinItemsRepositoryFactory.js +13 -12
- package/Domain/Repositories/TrashBinItems/TrashBinItemsRepositoryFactory.js.map +1 -1
- package/Domain/Repositories/TrashBinItems/TrashBinItemsRepositoryWithLoading.js +34 -33
- package/Domain/Repositories/TrashBinItems/TrashBinItemsRepositoryWithLoading.js.map +1 -1
- package/Domain/Repositories/TrashBinItems/index.js +0 -2
- package/Domain/Repositories/index.js +0 -3
- package/Domain/index.js +0 -2
- package/Gateways/TrashBinBulkActions/ITrashBinBulkActionsGateway.js +0 -3
- package/Gateways/TrashBinBulkActions/index.js +0 -3
- package/Gateways/TrashBinDeleteItem/ITrashBinDeleteItemGateway.js +0 -3
- package/Gateways/TrashBinDeleteItem/index.js +0 -3
- package/Gateways/TrashBinListItems/ITrashBinListGateway.js +0 -3
- package/Gateways/TrashBinListItems/index.js +0 -3
- package/Gateways/TrashBinRestoreItem/ITrashBinRestoreItemGateway.js +0 -3
- package/Gateways/TrashBinRestoreItem/index.js +0 -3
- package/Gateways/index.js +0 -3
- package/Presentation/TrashBin/TrashBin.js +51 -40
- package/Presentation/TrashBin/TrashBin.js.map +1 -1
- package/Presentation/TrashBin/TrashBin.test.js +778 -752
- package/Presentation/TrashBin/TrashBin.test.js.map +1 -1
- package/Presentation/TrashBin/TrashBinControllers.js +53 -75
- package/Presentation/TrashBin/TrashBinControllers.js.map +1 -1
- package/Presentation/TrashBin/TrashBinPresenter.js +50 -53
- package/Presentation/TrashBin/TrashBinPresenter.js.map +1 -1
- package/Presentation/TrashBin/controllers/BulkAction/BulkActionsController.js +10 -9
- package/Presentation/TrashBin/controllers/BulkAction/BulkActionsController.js.map +1 -1
- package/Presentation/TrashBin/controllers/BulkAction/IBulkActionsController.js +0 -3
- package/Presentation/TrashBin/controllers/BulkAction/index.js +0 -2
- package/Presentation/TrashBin/controllers/DeleteItem/DeleteItemController.js +9 -8
- package/Presentation/TrashBin/controllers/DeleteItem/DeleteItemController.js.map +1 -1
- package/Presentation/TrashBin/controllers/DeleteItem/IDeleteItemController.js +0 -3
- package/Presentation/TrashBin/controllers/DeleteItem/index.js +0 -2
- package/Presentation/TrashBin/controllers/GetRestoredItemById/GetRestoredItemByIdController.js +11 -10
- package/Presentation/TrashBin/controllers/GetRestoredItemById/GetRestoredItemByIdController.js.map +1 -1
- package/Presentation/TrashBin/controllers/GetRestoredItemById/IGetRestoredItemByIdController.js +0 -3
- package/Presentation/TrashBin/controllers/GetRestoredItemById/index.js +0 -2
- package/Presentation/TrashBin/controllers/ListItems/IListItemsController.js +0 -3
- package/Presentation/TrashBin/controllers/ListItems/ListItemsController.js +9 -8
- package/Presentation/TrashBin/controllers/ListItems/ListItemsController.js.map +1 -1
- package/Presentation/TrashBin/controllers/ListItems/index.js +0 -2
- package/Presentation/TrashBin/controllers/ListMoreItems/IListMoreItemsController.js +0 -3
- package/Presentation/TrashBin/controllers/ListMoreItems/ListMoreItemsController.js +9 -8
- package/Presentation/TrashBin/controllers/ListMoreItems/ListMoreItemsController.js.map +1 -1
- package/Presentation/TrashBin/controllers/ListMoreItems/index.js +0 -2
- package/Presentation/TrashBin/controllers/RestoreItem/IRestoreItemController.js +0 -3
- package/Presentation/TrashBin/controllers/RestoreItem/RestoreItemController.js +9 -8
- package/Presentation/TrashBin/controllers/RestoreItem/RestoreItemController.js.map +1 -1
- package/Presentation/TrashBin/controllers/RestoreItem/index.js +0 -2
- package/Presentation/TrashBin/controllers/SearchItems/ISearchItemsController.js +0 -3
- package/Presentation/TrashBin/controllers/SearchItems/SearchItemsController.js +12 -11
- package/Presentation/TrashBin/controllers/SearchItems/SearchItemsController.js.map +1 -1
- package/Presentation/TrashBin/controllers/SearchItems/index.js +0 -2
- package/Presentation/TrashBin/controllers/SelectAllItems/ISelectAllItemsController.js +0 -3
- package/Presentation/TrashBin/controllers/SelectAllItems/SelectAllItemsController.js +9 -8
- package/Presentation/TrashBin/controllers/SelectAllItems/SelectAllItemsController.js.map +1 -1
- package/Presentation/TrashBin/controllers/SelectAllItems/index.js +0 -2
- package/Presentation/TrashBin/controllers/SelectItems/ISelectItemsController.js +0 -3
- package/Presentation/TrashBin/controllers/SelectItems/SelectItemsController.js +10 -9
- package/Presentation/TrashBin/controllers/SelectItems/SelectItemsController.js.map +1 -1
- package/Presentation/TrashBin/controllers/SelectItems/index.js +0 -2
- package/Presentation/TrashBin/controllers/SortItems/ISortItemsController.d.ts +2 -2
- package/Presentation/TrashBin/controllers/SortItems/ISortItemsController.js +0 -3
- package/Presentation/TrashBin/controllers/SortItems/SortItemsController.d.ts +2 -2
- package/Presentation/TrashBin/controllers/SortItems/SortItemsController.js +13 -14
- package/Presentation/TrashBin/controllers/SortItems/SortItemsController.js.map +1 -1
- package/Presentation/TrashBin/controllers/SortItems/index.js +0 -2
- package/Presentation/TrashBin/controllers/UnselectAllItems/IUnselectAllItemsController.js +0 -3
- package/Presentation/TrashBin/controllers/UnselectAllItems/UnselectAllItemsController.js +9 -8
- package/Presentation/TrashBin/controllers/UnselectAllItems/UnselectAllItemsController.js.map +1 -1
- package/Presentation/TrashBin/controllers/UnselectAllItems/index.js +0 -2
- package/Presentation/TrashBin/controllers/index.js +0 -2
- package/Presentation/TrashBin/index.js +0 -2
- package/Presentation/TrashBinConfigs/TrashBinConfigs.js +49 -52
- package/Presentation/TrashBinConfigs/TrashBinConfigs.js.map +1 -1
- package/Presentation/TrashBinConfigs/index.js +0 -2
- package/Presentation/TrashBinRenderer/TrashBinRenderer.js +10 -15
- package/Presentation/TrashBinRenderer/TrashBinRenderer.js.map +1 -1
- package/Presentation/TrashBinRenderer/index.js +0 -2
- package/Presentation/abstractions/ITrashBinControllers.js +0 -3
- package/Presentation/abstractions/ITrashBinPresenter.js +0 -3
- package/Presentation/abstractions/index.js +0 -3
- package/Presentation/components/Actions/DeleteItem/DeleteItem.js +15 -20
- package/Presentation/components/Actions/DeleteItem/DeleteItem.js.map +1 -1
- package/Presentation/components/Actions/DeleteItem/index.js +0 -2
- package/Presentation/components/Actions/RestoreItem/RestoreItem.js +14 -19
- package/Presentation/components/Actions/RestoreItem/RestoreItem.js.map +1 -1
- package/Presentation/components/Actions/RestoreItem/index.js +0 -2
- package/Presentation/components/Actions/index.js +0 -2
- package/Presentation/components/BottomInfoBar/BottomInfoBar.js +15 -16
- package/Presentation/components/BottomInfoBar/BottomInfoBar.js.map +1 -1
- package/Presentation/components/BottomInfoBar/ListMeta.js +10 -13
- package/Presentation/components/BottomInfoBar/ListMeta.js.map +1 -1
- package/Presentation/components/BottomInfoBar/ListStatus.js +13 -16
- package/Presentation/components/BottomInfoBar/ListStatus.js.map +1 -1
- package/Presentation/components/BottomInfoBar/index.js +0 -2
- package/Presentation/components/BulkActions/BulkActions/BulkActions.js +47 -56
- package/Presentation/components/BulkActions/BulkActions/BulkActions.js.map +1 -1
- package/Presentation/components/BulkActions/BulkActions/index.js +0 -2
- package/Presentation/components/BulkActions/DeleteItems/DeleteItems.js +58 -73
- package/Presentation/components/BulkActions/DeleteItems/DeleteItems.js.map +1 -1
- package/Presentation/components/BulkActions/DeleteItems/index.js +0 -2
- package/Presentation/components/BulkActions/RestoreItems/RestoreItems.js +67 -83
- package/Presentation/components/BulkActions/RestoreItems/RestoreItems.js.map +1 -1
- package/Presentation/components/BulkActions/RestoreItems/RestoreItemsReportMessage.js +9 -10
- package/Presentation/components/BulkActions/RestoreItems/RestoreItemsReportMessage.js.map +1 -1
- package/Presentation/components/BulkActions/RestoreItems/index.js +0 -2
- package/Presentation/components/BulkActions/index.js +0 -2
- package/Presentation/components/Cells/CellActions/CellActions.js +12 -17
- package/Presentation/components/Cells/CellActions/CellActions.js.map +1 -1
- package/Presentation/components/Cells/CellActions/index.js +0 -2
- package/Presentation/components/Cells/CellCreatedBy/CellCreatedBy.js +7 -12
- package/Presentation/components/Cells/CellCreatedBy/CellCreatedBy.js.map +1 -1
- package/Presentation/components/Cells/CellCreatedBy/index.js +0 -2
- package/Presentation/components/Cells/CellDeletedBy/CellDeletedBy.js +7 -12
- package/Presentation/components/Cells/CellDeletedBy/CellDeletedBy.js.map +1 -1
- package/Presentation/components/Cells/CellDeletedBy/index.js +0 -2
- package/Presentation/components/Cells/CellDeletedOn/CellDeletedOn.js +10 -15
- package/Presentation/components/Cells/CellDeletedOn/CellDeletedOn.js.map +1 -1
- package/Presentation/components/Cells/CellDeletedOn/index.js +0 -2
- package/Presentation/components/Cells/CellTitle/CellTitle.js +16 -19
- package/Presentation/components/Cells/CellTitle/CellTitle.js.map +1 -1
- package/Presentation/components/Cells/CellTitle/index.js +0 -2
- package/Presentation/components/Cells/index.js +0 -2
- package/Presentation/components/Empty/Empty.js +19 -20
- package/Presentation/components/Empty/Empty.js.map +1 -1
- package/Presentation/components/Empty/index.js +0 -2
- package/Presentation/components/SearchInput/SearchInput.js +25 -32
- package/Presentation/components/SearchInput/SearchInput.js.map +1 -1
- package/Presentation/components/SearchInput/index.js +0 -2
- package/Presentation/components/Table/Table.js +23 -28
- package/Presentation/components/Table/Table.js.map +1 -1
- package/Presentation/components/Table/index.js +0 -2
- package/Presentation/components/Title/Title.js +9 -12
- package/Presentation/components/Title/Title.js.map +1 -1
- package/Presentation/components/Title/index.js +0 -2
- package/Presentation/components/TrashBinOverlay/TrashBinOverlay.js +18 -24
- package/Presentation/components/TrashBinOverlay/TrashBinOverlay.js.map +1 -1
- package/Presentation/components/TrashBinOverlay/index.js +0 -2
- package/Presentation/configs/index.js +0 -2
- package/Presentation/configs/list/Browser/BulkAction.js +56 -66
- package/Presentation/configs/list/Browser/BulkAction.js.map +1 -1
- package/Presentation/configs/list/Browser/EntryAction.js +8 -11
- package/Presentation/configs/list/Browser/EntryAction.js.map +1 -1
- package/Presentation/configs/list/Browser/Table/Column.js +7 -10
- package/Presentation/configs/list/Browser/Table/Column.js.map +1 -1
- package/Presentation/configs/list/Browser/Table/Sorting.js +4 -7
- package/Presentation/configs/list/Browser/Table/Sorting.js.map +1 -1
- package/Presentation/configs/list/Browser/Table/index.js +4 -3
- package/Presentation/configs/list/Browser/Table/index.js.map +1 -1
- package/Presentation/configs/list/Browser/index.js +5 -4
- package/Presentation/configs/list/Browser/index.js.map +1 -1
- package/Presentation/configs/list/TrashBinListConfig.js +24 -23
- package/Presentation/configs/list/TrashBinListConfig.js.map +1 -1
- package/Presentation/configs/list/index.js +0 -2
- package/Presentation/hooks/index.js +0 -2
- package/Presentation/hooks/useDeleteTrashBinItem.js +22 -27
- package/Presentation/hooks/useDeleteTrashBinItem.js.map +1 -1
- package/Presentation/hooks/useRestoreTrashBinItem.js +28 -36
- package/Presentation/hooks/useRestoreTrashBinItem.js.map +1 -1
- package/Presentation/hooks/useTrashBin.js +68 -44
- package/Presentation/hooks/useTrashBin.js.map +1 -1
- package/Presentation/hooks/useTrashBinItem.js +4 -6
- package/Presentation/hooks/useTrashBinItem.js.map +1 -1
- package/Presentation/index.js +36 -43
- package/Presentation/index.js.map +1 -1
- package/UseCases/BulkAction/BulkActionUseCase.js +9 -8
- package/UseCases/BulkAction/BulkActionUseCase.js.map +1 -1
- package/UseCases/BulkAction/IBulkActionUseCase.js +0 -3
- package/UseCases/BulkAction/index.js +0 -2
- package/UseCases/DeleteItem/DeleteItemUseCase.js +9 -8
- package/UseCases/DeleteItem/DeleteItemUseCase.js.map +1 -1
- package/UseCases/DeleteItem/IDeleteItemUseCase.js +0 -3
- package/UseCases/DeleteItem/index.js +0 -2
- package/UseCases/GetRestoredItem/GetRestoredItemUseCase.js +10 -9
- package/UseCases/GetRestoredItem/GetRestoredItemUseCase.js.map +1 -1
- package/UseCases/GetRestoredItem/IGetRestoredItemUseCase.js +0 -3
- package/UseCases/GetRestoredItem/index.js +0 -2
- package/UseCases/ListItems/IListItemsUseCase.js +0 -3
- package/UseCases/ListItems/ListItemsUseCase.js +11 -10
- package/UseCases/ListItems/ListItemsUseCase.js.map +1 -1
- package/UseCases/ListItems/ListItemsUseCaseWithSearch.js +14 -13
- package/UseCases/ListItems/ListItemsUseCaseWithSearch.js.map +1 -1
- package/UseCases/ListItems/ListItemsUseCaseWithSorting.js +14 -13
- package/UseCases/ListItems/ListItemsUseCaseWithSorting.js.map +1 -1
- package/UseCases/ListItems/index.js +0 -2
- package/UseCases/ListMoreItems/IListMoreItemsUseCase.js +0 -3
- package/UseCases/ListMoreItems/ListMoreItemsUseCase.js +9 -8
- package/UseCases/ListMoreItems/ListMoreItemsUseCase.js.map +1 -1
- package/UseCases/ListMoreItems/index.js +0 -2
- package/UseCases/RestoreItem/IRestoreItemUseCase.js +0 -3
- package/UseCases/RestoreItem/RestoreItemUseCase.js +9 -8
- package/UseCases/RestoreItem/RestoreItemUseCase.js.map +1 -1
- package/UseCases/RestoreItem/index.js +0 -2
- package/UseCases/SearchItems/ISearchItemsUseCase.js +0 -3
- package/UseCases/SearchItems/SearchItemsUseCase.js +9 -8
- package/UseCases/SearchItems/SearchItemsUseCase.js.map +1 -1
- package/UseCases/SearchItems/index.js +0 -2
- package/UseCases/SelectAllItems/ISelectAllItemsUseCase.js +0 -3
- package/UseCases/SelectAllItems/SelectAllItemsUseCase.js +9 -8
- package/UseCases/SelectAllItems/SelectAllItemsUseCase.js.map +1 -1
- package/UseCases/SelectAllItems/index.js +0 -2
- package/UseCases/SelectItems/ISelectItemsUseCase.js +0 -3
- package/UseCases/SelectItems/SelectItemsUseCase.js +9 -8
- package/UseCases/SelectItems/SelectItemsUseCase.js.map +1 -1
- package/UseCases/SelectItems/index.js +0 -2
- package/UseCases/SortItems/ISortItemsUseCase.js +0 -3
- package/UseCases/SortItems/SortItemsUseCase.js +9 -8
- package/UseCases/SortItems/SortItemsUseCase.js.map +1 -1
- package/UseCases/SortItems/index.js +0 -2
- package/UseCases/UnSelectAllItems/IUnselectAllItemsUseCase.js +0 -3
- package/UseCases/UnSelectAllItems/UnselectAllItemsUseCase.js +9 -8
- package/UseCases/UnSelectAllItems/UnselectAllItemsUseCase.js.map +1 -1
- package/UseCases/UnSelectAllItems/index.js +0 -2
- package/UseCases/index.js +0 -2
- package/index.js +0 -2
- package/package.json +13 -14
- package/types.js +7 -6
- package/types.js.map +1 -1
- package/Domain/Models/TrashBinItem/ITrashBinItemMapper.js.map +0 -1
- package/Domain/Models/TrashBinItem/index.js.map +0 -1
- package/Domain/Models/index.js.map +0 -1
- package/Domain/Repositories/Search/ISearchRepository.js.map +0 -1
- package/Domain/Repositories/Search/index.js.map +0 -1
- package/Domain/Repositories/SelectedItems/ISelectedItemsRepository.js.map +0 -1
- package/Domain/Repositories/SelectedItems/index.js.map +0 -1
- package/Domain/Repositories/Sorting/index.js.map +0 -1
- package/Domain/Repositories/TrashBinItems/ITrashBinItemsRepository.js.map +0 -1
- package/Domain/Repositories/TrashBinItems/index.js.map +0 -1
- package/Domain/Repositories/index.js.map +0 -1
- package/Domain/index.js.map +0 -1
- package/Gateways/TrashBinBulkActions/ITrashBinBulkActionsGateway.js.map +0 -1
- package/Gateways/TrashBinBulkActions/index.js.map +0 -1
- package/Gateways/TrashBinDeleteItem/ITrashBinDeleteItemGateway.js.map +0 -1
- package/Gateways/TrashBinDeleteItem/index.js.map +0 -1
- package/Gateways/TrashBinListItems/ITrashBinListGateway.js.map +0 -1
- package/Gateways/TrashBinListItems/index.js.map +0 -1
- package/Gateways/TrashBinRestoreItem/ITrashBinRestoreItemGateway.js.map +0 -1
- package/Gateways/TrashBinRestoreItem/index.js.map +0 -1
- package/Gateways/index.js.map +0 -1
- package/Presentation/TrashBin/controllers/BulkAction/IBulkActionsController.js.map +0 -1
- package/Presentation/TrashBin/controllers/BulkAction/index.js.map +0 -1
- package/Presentation/TrashBin/controllers/DeleteItem/IDeleteItemController.js.map +0 -1
- package/Presentation/TrashBin/controllers/DeleteItem/index.js.map +0 -1
- package/Presentation/TrashBin/controllers/GetRestoredItemById/IGetRestoredItemByIdController.js.map +0 -1
- package/Presentation/TrashBin/controllers/GetRestoredItemById/index.js.map +0 -1
- package/Presentation/TrashBin/controllers/ListItems/IListItemsController.js.map +0 -1
- package/Presentation/TrashBin/controllers/ListItems/index.js.map +0 -1
- package/Presentation/TrashBin/controllers/ListMoreItems/IListMoreItemsController.js.map +0 -1
- package/Presentation/TrashBin/controllers/ListMoreItems/index.js.map +0 -1
- package/Presentation/TrashBin/controllers/RestoreItem/IRestoreItemController.js.map +0 -1
- package/Presentation/TrashBin/controllers/RestoreItem/index.js.map +0 -1
- package/Presentation/TrashBin/controllers/SearchItems/ISearchItemsController.js.map +0 -1
- package/Presentation/TrashBin/controllers/SearchItems/index.js.map +0 -1
- package/Presentation/TrashBin/controllers/SelectAllItems/ISelectAllItemsController.js.map +0 -1
- package/Presentation/TrashBin/controllers/SelectAllItems/index.js.map +0 -1
- package/Presentation/TrashBin/controllers/SelectItems/ISelectItemsController.js.map +0 -1
- package/Presentation/TrashBin/controllers/SelectItems/index.js.map +0 -1
- package/Presentation/TrashBin/controllers/SortItems/ISortItemsController.js.map +0 -1
- package/Presentation/TrashBin/controllers/SortItems/index.js.map +0 -1
- package/Presentation/TrashBin/controllers/UnselectAllItems/IUnselectAllItemsController.js.map +0 -1
- package/Presentation/TrashBin/controllers/UnselectAllItems/index.js.map +0 -1
- package/Presentation/TrashBin/controllers/index.js.map +0 -1
- package/Presentation/TrashBin/index.js.map +0 -1
- package/Presentation/TrashBinConfigs/index.js.map +0 -1
- package/Presentation/TrashBinRenderer/index.js.map +0 -1
- package/Presentation/abstractions/ITrashBinControllers.js.map +0 -1
- package/Presentation/abstractions/ITrashBinPresenter.js.map +0 -1
- package/Presentation/abstractions/index.js.map +0 -1
- package/Presentation/components/Actions/DeleteItem/index.js.map +0 -1
- package/Presentation/components/Actions/RestoreItem/index.js.map +0 -1
- package/Presentation/components/Actions/index.js.map +0 -1
- package/Presentation/components/BottomInfoBar/index.js.map +0 -1
- package/Presentation/components/BulkActions/BulkActions/index.js.map +0 -1
- package/Presentation/components/BulkActions/DeleteItems/index.js.map +0 -1
- package/Presentation/components/BulkActions/RestoreItems/index.js.map +0 -1
- package/Presentation/components/BulkActions/index.js.map +0 -1
- package/Presentation/components/Cells/CellActions/index.js.map +0 -1
- package/Presentation/components/Cells/CellCreatedBy/index.js.map +0 -1
- package/Presentation/components/Cells/CellDeletedBy/index.js.map +0 -1
- package/Presentation/components/Cells/CellDeletedOn/index.js.map +0 -1
- package/Presentation/components/Cells/CellTitle/index.js.map +0 -1
- package/Presentation/components/Cells/index.js.map +0 -1
- package/Presentation/components/Empty/index.js.map +0 -1
- package/Presentation/components/SearchInput/index.js.map +0 -1
- package/Presentation/components/Table/index.js.map +0 -1
- package/Presentation/components/Title/index.js.map +0 -1
- package/Presentation/components/TrashBinOverlay/index.js.map +0 -1
- package/Presentation/configs/index.js.map +0 -1
- package/Presentation/configs/list/index.js.map +0 -1
- package/Presentation/hooks/index.js.map +0 -1
- package/UseCases/BulkAction/IBulkActionUseCase.js.map +0 -1
- package/UseCases/BulkAction/index.js.map +0 -1
- package/UseCases/DeleteItem/IDeleteItemUseCase.js.map +0 -1
- package/UseCases/DeleteItem/index.js.map +0 -1
- package/UseCases/GetRestoredItem/IGetRestoredItemUseCase.js.map +0 -1
- package/UseCases/GetRestoredItem/index.js.map +0 -1
- package/UseCases/ListItems/IListItemsUseCase.js.map +0 -1
- package/UseCases/ListItems/index.js.map +0 -1
- package/UseCases/ListMoreItems/IListMoreItemsUseCase.js.map +0 -1
- package/UseCases/ListMoreItems/index.js.map +0 -1
- package/UseCases/RestoreItem/IRestoreItemUseCase.js.map +0 -1
- package/UseCases/RestoreItem/index.js.map +0 -1
- package/UseCases/SearchItems/ISearchItemsUseCase.js.map +0 -1
- package/UseCases/SearchItems/index.js.map +0 -1
- package/UseCases/SelectAllItems/ISelectAllItemsUseCase.js.map +0 -1
- package/UseCases/SelectAllItems/index.js.map +0 -1
- package/UseCases/SelectItems/ISelectItemsUseCase.js.map +0 -1
- package/UseCases/SelectItems/index.js.map +0 -1
- package/UseCases/SortItems/ISortItemsUseCase.js.map +0 -1
- package/UseCases/SortItems/index.js.map +0 -1
- package/UseCases/UnSelectAllItems/IUnselectAllItemsUseCase.js.map +0 -1
- package/UseCases/UnSelectAllItems/index.js.map +0 -1
- package/UseCases/index.js.map +0 -1
- package/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["describe","it","expect","beforeEach","vi","TrashBinPresenter","LoadingRepository","MetaRepository","SortingRepository","LoadingActions","TrashBinControllers","SearchRepository","SelectedItemsRepository","SortingRepositoryWithDefaults","TrashBinItemsRepository","TrashBinItemsRepositoryWithLoading","identity1","id","displayName","type","identity2","createBinListGateway","execute","createBinDeleteItemGateway","createBinRestoreItemGateway","createBinBulkActionsGateway","CustomItemMapper","toDTO","data","title","location","createdBy","deletedOn","deletedBy","defaultSorting","field","order","item1","folderId","Date","toString","custom","item2","item3","item4","listGateway","fn","mockImplementation","Promise","resolve","totalCount","cursor","hasMoreItems","deleteItemGateway","restoreItemGateway","bulkActionGateway","itemMapper","BulkActionDeleteItems","BulkActionRestoreItems","init","retentionPeriod","selectedRepo","loadingRepo","sortRepo","sortRepoWithDefaults","metaRepo","searchRepo","trashBinItemsRepo","itemsRepo","presenter","controllers","getControllers","clearAllMocks","listPromise","listItems","vm","toMatchObject","items","loading","list","toHaveBeenCalledTimes","toHaveBeenCalledWith","sort","any","String","mockImplementationOnce","listMorePromise","listMoreItems","listMore","after","search","undefined","sortListGateway","toHaveBeenNthCalledWith","sortItems","desc","sorting","searchItemsGateway","searchItems","searchQuery","isEmptyView","selectedItems","selectItems","deletePromise","deleteItem","delete","restorePromise","restoreItem","restore","restoredItems","restoredItem","getRestoredItemById","each","input","output","restoreBulkActionPromise","restoreBulkAction","where","action","deleteBulkActionPromise","deleteBulkAction","length","toBe","allowSelectAll","toBeFalsy","isSelectedAll","toBeTruthy","selectAllItems","unselectAllItems"],"sources":["TrashBin.test.ts"],"sourcesContent":["import { describe, it, expect, beforeEach, vi } from \"vitest\";\nimport { TrashBinPresenter } from \"./TrashBinPresenter.js\";\nimport {\n LoadingRepository,\n MetaRepository,\n type Sorting,\n SortingRepository\n} from \"@webiny/app-utils\";\nimport {\n LoadingActions,\n type TrashBinIdentity,\n TrashBinListQueryVariables,\n type TrashBinLocation,\n TrashBinMetaResponse,\n TrashBinBulkActionsResponse,\n TrashBinBulkActionsGatewayParams\n} from \"~/types.js\";\nimport { TrashBinControllers } from \"~/Presentation/TrashBin/TrashBinControllers.js\";\nimport {\n type ITrashBinBulkActionsGateway,\n type ITrashBinDeleteItemGateway,\n type ITrashBinListGateway,\n type ITrashBinRestoreItemGateway\n} from \"~/Gateways/index.js\";\nimport { type ITrashBinItemMapper } from \"~/Domain/Models/TrashBinItem/index.js\";\nimport { SearchRepository } from \"~/Domain/Repositories/Search/index.js\";\nimport { SelectedItemsRepository } from \"~/Domain/Repositories/SelectedItems/index.js\";\nimport { SortingRepositoryWithDefaults } from \"~/Domain/Repositories/Sorting/index.js\";\nimport {\n TrashBinItemsRepository,\n TrashBinItemsRepositoryWithLoading\n} from \"~/Domain/Repositories/TrashBinItems/index.js\";\n\ninterface Item {\n id: string;\n title: string;\n location: TrashBinLocation;\n createdBy: TrashBinIdentity;\n deletedOn: string;\n deletedBy: TrashBinIdentity;\n custom: string;\n}\n\nconst identity1: TrashBinIdentity = {\n id: \"1234\",\n displayName: \"John Doe\",\n type: \"admin\"\n};\n\nconst identity2: TrashBinIdentity = {\n id: \"5678\",\n displayName: \"Jane Doe\",\n type: \"admin\"\n};\n\nconst createBinListGateway = ({\n execute\n}: ITrashBinListGateway<Item>): ITrashBinListGateway<Item> => ({\n execute\n});\n\nconst createBinDeleteItemGateway = ({\n execute\n}: ITrashBinDeleteItemGateway): ITrashBinDeleteItemGateway => ({\n execute\n});\n\nconst createBinRestoreItemGateway = ({\n execute\n}: ITrashBinRestoreItemGateway<Item>): ITrashBinRestoreItemGateway<Item> => ({\n execute\n});\n\nconst createBinBulkActionsGateway = ({\n execute\n}: ITrashBinBulkActionsGateway): ITrashBinBulkActionsGateway => ({\n execute\n});\n\nclass CustomItemMapper implements ITrashBinItemMapper<Item> {\n toDTO(data: Item) {\n return {\n id: data.id,\n title: data.title,\n location: data.location,\n createdBy: data.createdBy,\n deletedOn: data.deletedOn,\n deletedBy: data.deletedBy\n };\n }\n}\n\nconst defaultSorting: Sorting[] = [{ field: \"deletedOn\", order: \"desc\" }];\n\ndescribe(\"TrashBin\", () => {\n const item1: Item = {\n id: \"item-1\",\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: new Date().toString(),\n custom: \"any custom data\"\n };\n\n const item2: Item = {\n id: \"item-2\",\n title: \"Item 2\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: new Date().toString(),\n custom: \"any custom data\"\n };\n\n const item3: Item = {\n id: \"item-3\",\n title: \"Item 3\",\n location: {\n folderId: \"folder-b\"\n },\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: new Date().toString(),\n custom: \"any custom data\"\n };\n\n const item4: Item = {\n id: \"item-4\",\n title: \"Item 4\",\n location: {\n folderId: \"folder-b\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: new Date().toString(),\n custom: \"any custom data\"\n };\n\n const listGateway = createBinListGateway({\n execute: vi\n .fn<(params: TrashBinListQueryVariables) => Promise<[Item[], TrashBinMetaResponse]>>()\n .mockImplementation(() => {\n return Promise.resolve([\n [item1, item2, item3],\n { totalCount: 3, cursor: null, hasMoreItems: false }\n ]);\n })\n });\n\n const deleteItemGateway = createBinDeleteItemGateway({\n execute: vi.fn<(id: string) => Promise<boolean>>().mockImplementation(() => {\n return Promise.resolve(true);\n })\n });\n\n const restoreItemGateway = createBinRestoreItemGateway({\n execute: vi.fn<(id: string) => Promise<Item>>().mockImplementation(() => {\n return Promise.resolve(item1);\n })\n });\n\n const bulkActionGateway = createBinBulkActionsGateway({\n execute: vi\n .fn<\n (params: TrashBinBulkActionsGatewayParams) => Promise<TrashBinBulkActionsResponse>\n >()\n .mockImplementation(() => {\n return Promise.resolve({ id: \"123456789\" });\n })\n });\n\n const itemMapper = new CustomItemMapper();\n\n const BulkActionDeleteItems = \"BulkDeleteItems\";\n const BulkActionRestoreItems = \"BulkRestoreItems\";\n\n const init = (\n listGateway: ITrashBinListGateway<Item>,\n deleteItemGateway: ITrashBinDeleteItemGateway,\n restoreItemGateway: ITrashBinRestoreItemGateway<Item>,\n retentionPeriod = 90\n ) => {\n const selectedRepo = new SelectedItemsRepository();\n const loadingRepo = new LoadingRepository();\n const sortRepo = new SortingRepository();\n const sortRepoWithDefaults = new SortingRepositoryWithDefaults(defaultSorting, sortRepo);\n const metaRepo = new MetaRepository();\n const searchRepo = new SearchRepository();\n const trashBinItemsRepo = new TrashBinItemsRepository(\n metaRepo,\n listGateway,\n deleteItemGateway,\n restoreItemGateway,\n bulkActionGateway,\n itemMapper\n );\n\n const itemsRepo = new TrashBinItemsRepositoryWithLoading(loadingRepo, trashBinItemsRepo);\n\n return {\n presenter: new TrashBinPresenter(\n itemsRepo,\n selectedRepo,\n sortRepoWithDefaults,\n searchRepo,\n retentionPeriod\n ),\n controllers: new TrashBinControllers(\n itemsRepo,\n selectedRepo,\n sortRepoWithDefaults,\n searchRepo,\n BulkActionDeleteItems,\n BulkActionRestoreItems\n ).getControllers()\n };\n };\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should create a presenter and list trash bin entries from the gateway\", async () => {\n const { presenter, controllers } = init(listGateway, deleteItemGateway, restoreItemGateway);\n\n const listPromise = controllers.listItems.execute();\n\n // Let's check the transition to loading state\n expect(presenter.vm).toMatchObject({\n items: [],\n loading: {\n [LoadingActions.list]: true\n }\n });\n\n await listPromise;\n\n expect(listGateway.execute).toHaveBeenCalledTimes(1);\n expect(listGateway.execute).toHaveBeenCalledWith({\n sort: [\"deletedOn_DESC\"]\n });\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-1\",\n title: \"Item 1\",\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-2\",\n title: \"Item 2\",\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-3\",\n title: \"Item 3\",\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ],\n loading: {\n [LoadingActions.list]: false\n }\n });\n });\n\n it(\"should list more items from the gateway\", async () => {\n const listGateway = createBinListGateway({\n execute: vi\n .fn<\n (params: TrashBinListQueryVariables) => Promise<[Item[], TrashBinMetaResponse]>\n >()\n .mockImplementationOnce(() => {\n return Promise.resolve([\n [item1, item2, item3],\n { totalCount: 4, cursor: \"IjMi\", hasMoreItems: true }\n ] as [Item[], TrashBinMetaResponse]);\n })\n .mockImplementationOnce(() => {\n return Promise.resolve([\n [item4],\n { totalCount: 4, cursor: null, hasMoreItems: false }\n ] as [Item[], TrashBinMetaResponse]);\n })\n });\n\n const { presenter, controllers } = init(listGateway, deleteItemGateway, restoreItemGateway);\n\n // Let's list some initial entries\n await controllers.listItems.execute();\n expect(listGateway.execute).toHaveBeenCalledTimes(1);\n\n // Let's list more items from the gateway\n const listMorePromise = controllers.listMoreItems.execute();\n\n expect(presenter.vm).toMatchObject({\n loading: {\n [LoadingActions.listMore]: true\n }\n });\n\n await listMorePromise;\n\n expect(listGateway.execute).toHaveBeenCalledTimes(2);\n expect(listGateway.execute).toHaveBeenCalledWith({\n after: \"IjMi\",\n search: undefined,\n sort: [\"deletedOn_DESC\"]\n });\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-1\",\n title: \"Item 1\",\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-2\",\n title: \"Item 2\",\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-3\",\n title: \"Item 3\",\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-4\",\n title: \"Item 4\",\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n }\n ],\n loading: {\n [LoadingActions.listMore]: false\n }\n });\n });\n\n it(\"should be able to sort items\", async () => {\n const sortListGateway = createBinListGateway({\n execute: vi\n .fn<\n (params: TrashBinListQueryVariables) => Promise<[Item[], TrashBinMetaResponse]>\n >()\n .mockImplementationOnce(() => {\n return Promise.resolve([\n [item1, item2, item3],\n { totalCount: 3, cursor: null, hasMoreItems: false }\n ] as [Item[], TrashBinMetaResponse]);\n })\n .mockImplementation(() => {\n return Promise.resolve([\n [item3, item2, item1],\n { totalCount: 3, cursor: null, hasMoreItems: false }\n ] as [Item[], TrashBinMetaResponse]);\n })\n });\n\n const { presenter, controllers } = init(\n sortListGateway,\n deleteItemGateway,\n restoreItemGateway\n );\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n expect(sortListGateway.execute).toHaveBeenNthCalledWith(1, {\n sort: [\"deletedOn_DESC\"]\n });\n\n // Let's sort items, it should call back the list gateway to retrieve the items sorted\n await controllers.sortItems.execute(() => [{ id: \"deletedOn\", desc: false }]);\n\n expect(sortListGateway.execute).toHaveBeenNthCalledWith(2, {\n sort: [\"deletedOn_ASC\"]\n });\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-3\",\n title: \"Item 3\",\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-2\",\n title: \"Item 2\",\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-1\",\n title: \"Item 1\",\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ],\n loading: {\n [LoadingActions.list]: false\n },\n sorting: [{ id: \"deletedOn\", desc: false }]\n });\n });\n\n it(\"should be able to search items\", async () => {\n const searchItemsGateway = createBinListGateway({\n execute: vi\n .fn<\n (params: TrashBinListQueryVariables) => Promise<[Item[], TrashBinMetaResponse]>\n >()\n .mockImplementationOnce(() => {\n return Promise.resolve([\n [item1, item2, item3],\n { totalCount: 3, cursor: null, hasMoreItems: false }\n ] as [Item[], TrashBinMetaResponse]);\n })\n .mockImplementationOnce(() => {\n return Promise.resolve([\n [item1],\n { totalCount: 1, cursor: null, hasMoreItems: false }\n ] as [Item[], TrashBinMetaResponse]);\n })\n .mockImplementationOnce(() => {\n return Promise.resolve([\n [],\n { totalCount: 0, cursor: null, hasMoreItems: false }\n ] as [Item[], TrashBinMetaResponse]);\n })\n });\n\n const { presenter, controllers } = init(\n searchItemsGateway,\n deleteItemGateway,\n restoreItemGateway\n );\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n expect(searchItemsGateway.execute).toHaveBeenNthCalledWith(1, {\n sort: [\"deletedOn_DESC\"]\n });\n\n // Let's search for items, it should return items from the gateway\n await controllers.searchItems.execute(\"Item 1\");\n\n expect(searchItemsGateway.execute).toHaveBeenNthCalledWith(2, {\n sort: [\"deletedOn_DESC\"],\n search: \"Item 1\"\n });\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-1\",\n title: \"Item 1\",\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ],\n loading: {\n [LoadingActions.list]: false\n },\n searchQuery: \"Item 1\"\n });\n\n // Let's search for items, it should return no items from the gateway\n await controllers.searchItems.execute(\"Not found query\");\n\n expect(searchItemsGateway.execute).toHaveBeenNthCalledWith(3, {\n sort: [\"deletedOn_DESC\"],\n search: \"Not found query\"\n });\n\n expect(presenter.vm).toMatchObject({\n items: [],\n loading: {\n [LoadingActions.list]: false\n },\n searchQuery: \"Not found query\",\n isEmptyView: true\n });\n });\n\n it(\"should be able to select items\", async () => {\n const { presenter, controllers } = init(listGateway, deleteItemGateway, restoreItemGateway);\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n // No selected items found by default\n expect(presenter.vm).toMatchObject({\n selectedItems: []\n });\n\n // Let's select the first Item\n await controllers.selectItems.execute([\n {\n id: \"item-1\",\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: new Date().toString()\n }\n ]);\n\n expect(presenter.vm).toMatchObject({\n selectedItems: [\n {\n id: \"item-1\",\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ]\n });\n\n // Let's select the second item\n await controllers.selectItems.execute([\n {\n id: \"item-1\",\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: new Date().toString()\n },\n {\n id: \"item-2\",\n title: \"Item 2\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: new Date().toString()\n }\n ]);\n\n expect(presenter.vm).toMatchObject({\n selectedItems: [\n {\n id: \"item-1\",\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-2\",\n title: \"Item 2\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n }\n ]\n });\n });\n\n it(\"should delete an item, removing it from the list\", async () => {\n const { presenter, controllers } = init(listGateway, deleteItemGateway, restoreItemGateway);\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n expect(listGateway.execute).toHaveBeenCalledTimes(1);\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-1\",\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-2\",\n title: \"Item 2\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-3\",\n title: \"Item 3\",\n location: {\n folderId: \"folder-b\"\n },\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ]\n });\n\n const deletePromise = controllers.deleteItem.execute(item1.id);\n\n // Let's check the transition to loading state\n expect(presenter.vm).toMatchObject({\n loading: {\n [LoadingActions.delete]: true\n }\n });\n\n await deletePromise;\n\n expect(deleteItemGateway.execute).toHaveBeenCalledTimes(1);\n expect(deleteItemGateway.execute).toHaveBeenCalledWith(item1.id);\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-2\",\n title: \"Item 2\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-3\",\n title: \"Item 3\",\n location: {\n folderId: \"folder-b\"\n },\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ]\n });\n });\n\n it(\"should restore an item, removing it from the list\", async () => {\n const { presenter, controllers } = init(listGateway, deleteItemGateway, restoreItemGateway);\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n expect(listGateway.execute).toHaveBeenCalledTimes(1);\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-1\",\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-2\",\n title: \"Item 2\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-3\",\n title: \"Item 3\",\n location: {\n folderId: \"folder-b\"\n },\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ]\n });\n\n const restorePromise = controllers.restoreItem.execute(item1.id);\n\n // Let's check the transition to loading state\n expect(presenter.vm).toMatchObject({\n loading: {\n [LoadingActions.restore]: true\n }\n });\n\n await restorePromise;\n\n expect(restoreItemGateway.execute).toHaveBeenCalledTimes(1);\n expect(restoreItemGateway.execute).toHaveBeenCalledWith(item1.id);\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-2\",\n title: \"Item 2\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-3\",\n title: \"Item 3\",\n location: {\n folderId: \"folder-b\"\n },\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ],\n restoredItems: [\n {\n id: \"item-1\",\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ]\n });\n\n // We should be able to get the restored item by id\n const restoredItem = await controllers.getRestoredItemById.execute(\"item-1\");\n expect(restoredItem).toMatchObject({\n id: \"item-1\",\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n });\n });\n\n it.each([\n [0, \"0 days\"],\n [1, \"1 day\"],\n [2, \"2 days\"]\n ])(\"should set the retention period to `%s` when input is `%i`\", (input, output) => {\n const { presenter } = init(listGateway, deleteItemGateway, restoreItemGateway, input);\n\n expect(presenter.vm).toMatchObject({\n retentionPeriod: output\n });\n });\n\n it(\"should be able to perform bulk action - RESTORE\", async () => {\n const { controllers } = init(listGateway, deleteItemGateway, restoreItemGateway);\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n expect(listGateway.execute).toHaveBeenCalledTimes(1);\n\n const restoreBulkActionPromise = controllers.restoreBulkAction.execute({\n search: \"Custom search\",\n where: {\n title: \"Item title\"\n },\n data: {\n any: 1\n }\n });\n\n await restoreBulkActionPromise;\n\n expect(bulkActionGateway.execute).toHaveBeenCalledTimes(1);\n expect(bulkActionGateway.execute).toHaveBeenCalledWith({\n action: BulkActionRestoreItems,\n search: \"Custom search\",\n where: {\n title: \"Item title\"\n },\n data: {\n any: 1\n }\n });\n });\n\n it(\"should be able to perform bulk action - DELETE\", async () => {\n const { controllers } = init(listGateway, deleteItemGateway, restoreItemGateway);\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n expect(listGateway.execute).toHaveBeenCalledTimes(1);\n\n const deleteBulkActionPromise = controllers.deleteBulkAction.execute({\n search: \"Custom search\",\n where: {\n title: \"Item title\"\n },\n data: {\n any: 1\n }\n });\n\n await deleteBulkActionPromise;\n\n expect(bulkActionGateway.execute).toHaveBeenCalledTimes(1);\n expect(bulkActionGateway.execute).toHaveBeenCalledWith({\n action: BulkActionDeleteItems,\n search: \"Custom search\",\n where: {\n title: \"Item title\"\n },\n data: {\n any: 1\n }\n });\n });\n\n it(\"should be able to `selectAll` and `unselectAll` items\", async () => {\n {\n // let's test the functionality by listing items that span multiple pages.\n const listGateway = createBinListGateway({\n execute: vi\n .fn<\n (\n params: TrashBinListQueryVariables\n ) => Promise<[Item[], TrashBinMetaResponse]>\n >()\n .mockImplementation(() => {\n return Promise.resolve([\n [item1, item2, item3],\n { totalCount: 4, cursor: \"IjMi\", hasMoreItems: true }\n ] as [Item[], TrashBinMetaResponse]);\n })\n });\n\n const { presenter, controllers } = init(\n listGateway,\n deleteItemGateway,\n restoreItemGateway\n );\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n expect(listGateway.execute).toHaveBeenCalledTimes(1);\n\n // let's check the initial vm state\n expect(presenter.vm.items.length).toBe(3);\n expect(presenter.vm.selectedItems.length).toBe(0);\n expect(presenter.vm.allowSelectAll).toBeFalsy();\n expect(presenter.vm.isSelectedAll).toBeFalsy();\n\n // let's check the vm state after selecting all items on the page\n await controllers.selectItems.execute([item1, item2, item3]);\n expect(presenter.vm.selectedItems.length).toBe(3);\n expect(presenter.vm.allowSelectAll).toBeTruthy();\n expect(presenter.vm.isSelectedAll).toBeFalsy();\n\n // let's check the vm state after selecting all items\n await controllers.selectAllItems.execute();\n expect(presenter.vm.selectedItems.length).toBe(3);\n expect(presenter.vm.allowSelectAll).toBeTruthy();\n expect(presenter.vm.isSelectedAll).toBeTruthy();\n\n // let's check the vm state after unselecting all items\n await controllers.unselectAllItems.execute();\n expect(presenter.vm.selectedItems.length).toBe(0);\n expect(presenter.vm.allowSelectAll).toBeFalsy();\n expect(presenter.vm.isSelectedAll).toBeFalsy();\n\n // let's check the vm state after unselecting one item\n await controllers.selectItems.execute([item1, item2, item3]);\n expect(presenter.vm.selectedItems.length).toBe(3);\n await controllers.selectAllItems.execute();\n expect(presenter.vm.isSelectedAll).toBeTruthy();\n await controllers.selectItems.execute([item1, item2]);\n expect(presenter.vm.isSelectedAll).toBeFalsy();\n expect(presenter.vm.allowSelectAll).toBeFalsy();\n }\n\n {\n // let's test the functionality by listing items that span only one page.\n const listGateway = createBinListGateway({\n execute: vi\n .fn<\n (\n params: TrashBinListQueryVariables\n ) => Promise<[Item[], TrashBinMetaResponse]>\n >()\n .mockImplementation(() => {\n return Promise.resolve([\n [item1, item2, item3],\n { totalCount: 3, cursor: null, hasMoreItems: false }\n ] as [Item[], TrashBinMetaResponse]);\n })\n });\n\n const { presenter, controllers } = init(\n listGateway,\n deleteItemGateway,\n restoreItemGateway\n );\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n expect(listGateway.execute).toHaveBeenCalledTimes(1);\n\n // let's check the initial vm state\n expect(presenter.vm.items.length).toBe(3);\n\n // let's check the vm state after selecting all items in the page\n await controllers.selectItems.execute([item1, item2, item3]);\n expect(presenter.vm.selectedItems.length).toBe(3);\n expect(presenter.vm.allowSelectAll).toBeFalsy();\n expect(presenter.vm.isSelectedAll).toBeFalsy();\n }\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Presentation/TrashBin/TrashBin.test.js","sources":["../../../src/Presentation/TrashBin/TrashBin.test.ts"],"sourcesContent":["import { describe, it, expect, beforeEach, vi } from \"vitest\";\nimport { TrashBinPresenter } from \"./TrashBinPresenter.js\";\nimport {\n LoadingRepository,\n MetaRepository,\n type Sorting,\n SortingRepository\n} from \"@webiny/app-utils\";\nimport {\n LoadingActions,\n type TrashBinIdentity,\n TrashBinListQueryVariables,\n type TrashBinLocation,\n TrashBinMetaResponse,\n TrashBinBulkActionsResponse,\n TrashBinBulkActionsGatewayParams\n} from \"~/types.js\";\nimport { TrashBinControllers } from \"~/Presentation/TrashBin/TrashBinControllers.js\";\nimport {\n type ITrashBinBulkActionsGateway,\n type ITrashBinDeleteItemGateway,\n type ITrashBinListGateway,\n type ITrashBinRestoreItemGateway\n} from \"~/Gateways/index.js\";\nimport { type ITrashBinItemMapper } from \"~/Domain/Models/TrashBinItem/index.js\";\nimport { SearchRepository } from \"~/Domain/Repositories/Search/index.js\";\nimport { SelectedItemsRepository } from \"~/Domain/Repositories/SelectedItems/index.js\";\nimport { SortingRepositoryWithDefaults } from \"~/Domain/Repositories/Sorting/index.js\";\nimport {\n TrashBinItemsRepository,\n TrashBinItemsRepositoryWithLoading\n} from \"~/Domain/Repositories/TrashBinItems/index.js\";\n\ninterface Item {\n id: string;\n title: string;\n location: TrashBinLocation;\n createdBy: TrashBinIdentity;\n deletedOn: string;\n deletedBy: TrashBinIdentity;\n custom: string;\n}\n\nconst identity1: TrashBinIdentity = {\n id: \"1234\",\n displayName: \"John Doe\",\n type: \"admin\"\n};\n\nconst identity2: TrashBinIdentity = {\n id: \"5678\",\n displayName: \"Jane Doe\",\n type: \"admin\"\n};\n\nconst createBinListGateway = ({\n execute\n}: ITrashBinListGateway<Item>): ITrashBinListGateway<Item> => ({\n execute\n});\n\nconst createBinDeleteItemGateway = ({\n execute\n}: ITrashBinDeleteItemGateway): ITrashBinDeleteItemGateway => ({\n execute\n});\n\nconst createBinRestoreItemGateway = ({\n execute\n}: ITrashBinRestoreItemGateway<Item>): ITrashBinRestoreItemGateway<Item> => ({\n execute\n});\n\nconst createBinBulkActionsGateway = ({\n execute\n}: ITrashBinBulkActionsGateway): ITrashBinBulkActionsGateway => ({\n execute\n});\n\nclass CustomItemMapper implements ITrashBinItemMapper<Item> {\n toDTO(data: Item) {\n return {\n id: data.id,\n title: data.title,\n location: data.location,\n createdBy: data.createdBy,\n deletedOn: data.deletedOn,\n deletedBy: data.deletedBy\n };\n }\n}\n\nconst defaultSorting: Sorting[] = [{ field: \"deletedOn\", order: \"desc\" }];\n\ndescribe(\"TrashBin\", () => {\n const item1: Item = {\n id: \"item-1\",\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: new Date().toString(),\n custom: \"any custom data\"\n };\n\n const item2: Item = {\n id: \"item-2\",\n title: \"Item 2\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: new Date().toString(),\n custom: \"any custom data\"\n };\n\n const item3: Item = {\n id: \"item-3\",\n title: \"Item 3\",\n location: {\n folderId: \"folder-b\"\n },\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: new Date().toString(),\n custom: \"any custom data\"\n };\n\n const item4: Item = {\n id: \"item-4\",\n title: \"Item 4\",\n location: {\n folderId: \"folder-b\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: new Date().toString(),\n custom: \"any custom data\"\n };\n\n const listGateway = createBinListGateway({\n execute: vi\n .fn<(params: TrashBinListQueryVariables) => Promise<[Item[], TrashBinMetaResponse]>>()\n .mockImplementation(() => {\n return Promise.resolve([\n [item1, item2, item3],\n { totalCount: 3, cursor: null, hasMoreItems: false }\n ]);\n })\n });\n\n const deleteItemGateway = createBinDeleteItemGateway({\n execute: vi.fn<(id: string) => Promise<boolean>>().mockImplementation(() => {\n return Promise.resolve(true);\n })\n });\n\n const restoreItemGateway = createBinRestoreItemGateway({\n execute: vi.fn<(id: string) => Promise<Item>>().mockImplementation(() => {\n return Promise.resolve(item1);\n })\n });\n\n const bulkActionGateway = createBinBulkActionsGateway({\n execute: vi\n .fn<\n (params: TrashBinBulkActionsGatewayParams) => Promise<TrashBinBulkActionsResponse>\n >()\n .mockImplementation(() => {\n return Promise.resolve({ id: \"123456789\" });\n })\n });\n\n const itemMapper = new CustomItemMapper();\n\n const BulkActionDeleteItems = \"BulkDeleteItems\";\n const BulkActionRestoreItems = \"BulkRestoreItems\";\n\n const init = (\n listGateway: ITrashBinListGateway<Item>,\n deleteItemGateway: ITrashBinDeleteItemGateway,\n restoreItemGateway: ITrashBinRestoreItemGateway<Item>,\n retentionPeriod = 90\n ) => {\n const selectedRepo = new SelectedItemsRepository();\n const loadingRepo = new LoadingRepository();\n const sortRepo = new SortingRepository();\n const sortRepoWithDefaults = new SortingRepositoryWithDefaults(defaultSorting, sortRepo);\n const metaRepo = new MetaRepository();\n const searchRepo = new SearchRepository();\n const trashBinItemsRepo = new TrashBinItemsRepository(\n metaRepo,\n listGateway,\n deleteItemGateway,\n restoreItemGateway,\n bulkActionGateway,\n itemMapper\n );\n\n const itemsRepo = new TrashBinItemsRepositoryWithLoading(loadingRepo, trashBinItemsRepo);\n\n return {\n presenter: new TrashBinPresenter(\n itemsRepo,\n selectedRepo,\n sortRepoWithDefaults,\n searchRepo,\n retentionPeriod\n ),\n controllers: new TrashBinControllers(\n itemsRepo,\n selectedRepo,\n sortRepoWithDefaults,\n searchRepo,\n BulkActionDeleteItems,\n BulkActionRestoreItems\n ).getControllers()\n };\n };\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should create a presenter and list trash bin entries from the gateway\", async () => {\n const { presenter, controllers } = init(listGateway, deleteItemGateway, restoreItemGateway);\n\n const listPromise = controllers.listItems.execute();\n\n // Let's check the transition to loading state\n expect(presenter.vm).toMatchObject({\n items: [],\n loading: {\n [LoadingActions.list]: true\n }\n });\n\n await listPromise;\n\n expect(listGateway.execute).toHaveBeenCalledTimes(1);\n expect(listGateway.execute).toHaveBeenCalledWith({\n sort: [\"deletedOn_DESC\"]\n });\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-1\",\n title: \"Item 1\",\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-2\",\n title: \"Item 2\",\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-3\",\n title: \"Item 3\",\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ],\n loading: {\n [LoadingActions.list]: false\n }\n });\n });\n\n it(\"should list more items from the gateway\", async () => {\n const listGateway = createBinListGateway({\n execute: vi\n .fn<\n (params: TrashBinListQueryVariables) => Promise<[Item[], TrashBinMetaResponse]>\n >()\n .mockImplementationOnce(() => {\n return Promise.resolve([\n [item1, item2, item3],\n { totalCount: 4, cursor: \"IjMi\", hasMoreItems: true }\n ] as [Item[], TrashBinMetaResponse]);\n })\n .mockImplementationOnce(() => {\n return Promise.resolve([\n [item4],\n { totalCount: 4, cursor: null, hasMoreItems: false }\n ] as [Item[], TrashBinMetaResponse]);\n })\n });\n\n const { presenter, controllers } = init(listGateway, deleteItemGateway, restoreItemGateway);\n\n // Let's list some initial entries\n await controllers.listItems.execute();\n expect(listGateway.execute).toHaveBeenCalledTimes(1);\n\n // Let's list more items from the gateway\n const listMorePromise = controllers.listMoreItems.execute();\n\n expect(presenter.vm).toMatchObject({\n loading: {\n [LoadingActions.listMore]: true\n }\n });\n\n await listMorePromise;\n\n expect(listGateway.execute).toHaveBeenCalledTimes(2);\n expect(listGateway.execute).toHaveBeenCalledWith({\n after: \"IjMi\",\n search: undefined,\n sort: [\"deletedOn_DESC\"]\n });\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-1\",\n title: \"Item 1\",\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-2\",\n title: \"Item 2\",\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-3\",\n title: \"Item 3\",\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-4\",\n title: \"Item 4\",\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n }\n ],\n loading: {\n [LoadingActions.listMore]: false\n }\n });\n });\n\n it(\"should be able to sort items\", async () => {\n const sortListGateway = createBinListGateway({\n execute: vi\n .fn<\n (params: TrashBinListQueryVariables) => Promise<[Item[], TrashBinMetaResponse]>\n >()\n .mockImplementationOnce(() => {\n return Promise.resolve([\n [item1, item2, item3],\n { totalCount: 3, cursor: null, hasMoreItems: false }\n ] as [Item[], TrashBinMetaResponse]);\n })\n .mockImplementation(() => {\n return Promise.resolve([\n [item3, item2, item1],\n { totalCount: 3, cursor: null, hasMoreItems: false }\n ] as [Item[], TrashBinMetaResponse]);\n })\n });\n\n const { presenter, controllers } = init(\n sortListGateway,\n deleteItemGateway,\n restoreItemGateway\n );\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n expect(sortListGateway.execute).toHaveBeenNthCalledWith(1, {\n sort: [\"deletedOn_DESC\"]\n });\n\n // Let's sort items, it should call back the list gateway to retrieve the items sorted\n await controllers.sortItems.execute(() => [{ id: \"deletedOn\", desc: false }]);\n\n expect(sortListGateway.execute).toHaveBeenNthCalledWith(2, {\n sort: [\"deletedOn_ASC\"]\n });\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-3\",\n title: \"Item 3\",\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-2\",\n title: \"Item 2\",\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-1\",\n title: \"Item 1\",\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ],\n loading: {\n [LoadingActions.list]: false\n },\n sorting: [{ id: \"deletedOn\", desc: false }]\n });\n });\n\n it(\"should be able to search items\", async () => {\n const searchItemsGateway = createBinListGateway({\n execute: vi\n .fn<\n (params: TrashBinListQueryVariables) => Promise<[Item[], TrashBinMetaResponse]>\n >()\n .mockImplementationOnce(() => {\n return Promise.resolve([\n [item1, item2, item3],\n { totalCount: 3, cursor: null, hasMoreItems: false }\n ] as [Item[], TrashBinMetaResponse]);\n })\n .mockImplementationOnce(() => {\n return Promise.resolve([\n [item1],\n { totalCount: 1, cursor: null, hasMoreItems: false }\n ] as [Item[], TrashBinMetaResponse]);\n })\n .mockImplementationOnce(() => {\n return Promise.resolve([\n [],\n { totalCount: 0, cursor: null, hasMoreItems: false }\n ] as [Item[], TrashBinMetaResponse]);\n })\n });\n\n const { presenter, controllers } = init(\n searchItemsGateway,\n deleteItemGateway,\n restoreItemGateway\n );\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n expect(searchItemsGateway.execute).toHaveBeenNthCalledWith(1, {\n sort: [\"deletedOn_DESC\"]\n });\n\n // Let's search for items, it should return items from the gateway\n await controllers.searchItems.execute(\"Item 1\");\n\n expect(searchItemsGateway.execute).toHaveBeenNthCalledWith(2, {\n sort: [\"deletedOn_DESC\"],\n search: \"Item 1\"\n });\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-1\",\n title: \"Item 1\",\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ],\n loading: {\n [LoadingActions.list]: false\n },\n searchQuery: \"Item 1\"\n });\n\n // Let's search for items, it should return no items from the gateway\n await controllers.searchItems.execute(\"Not found query\");\n\n expect(searchItemsGateway.execute).toHaveBeenNthCalledWith(3, {\n sort: [\"deletedOn_DESC\"],\n search: \"Not found query\"\n });\n\n expect(presenter.vm).toMatchObject({\n items: [],\n loading: {\n [LoadingActions.list]: false\n },\n searchQuery: \"Not found query\",\n isEmptyView: true\n });\n });\n\n it(\"should be able to select items\", async () => {\n const { presenter, controllers } = init(listGateway, deleteItemGateway, restoreItemGateway);\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n // No selected items found by default\n expect(presenter.vm).toMatchObject({\n selectedItems: []\n });\n\n // Let's select the first Item\n await controllers.selectItems.execute([\n {\n id: \"item-1\",\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: new Date().toString()\n }\n ]);\n\n expect(presenter.vm).toMatchObject({\n selectedItems: [\n {\n id: \"item-1\",\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ]\n });\n\n // Let's select the second item\n await controllers.selectItems.execute([\n {\n id: \"item-1\",\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: new Date().toString()\n },\n {\n id: \"item-2\",\n title: \"Item 2\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: new Date().toString()\n }\n ]);\n\n expect(presenter.vm).toMatchObject({\n selectedItems: [\n {\n id: \"item-1\",\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-2\",\n title: \"Item 2\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n }\n ]\n });\n });\n\n it(\"should delete an item, removing it from the list\", async () => {\n const { presenter, controllers } = init(listGateway, deleteItemGateway, restoreItemGateway);\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n expect(listGateway.execute).toHaveBeenCalledTimes(1);\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-1\",\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-2\",\n title: \"Item 2\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-3\",\n title: \"Item 3\",\n location: {\n folderId: \"folder-b\"\n },\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ]\n });\n\n const deletePromise = controllers.deleteItem.execute(item1.id);\n\n // Let's check the transition to loading state\n expect(presenter.vm).toMatchObject({\n loading: {\n [LoadingActions.delete]: true\n }\n });\n\n await deletePromise;\n\n expect(deleteItemGateway.execute).toHaveBeenCalledTimes(1);\n expect(deleteItemGateway.execute).toHaveBeenCalledWith(item1.id);\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-2\",\n title: \"Item 2\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-3\",\n title: \"Item 3\",\n location: {\n folderId: \"folder-b\"\n },\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ]\n });\n });\n\n it(\"should restore an item, removing it from the list\", async () => {\n const { presenter, controllers } = init(listGateway, deleteItemGateway, restoreItemGateway);\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n expect(listGateway.execute).toHaveBeenCalledTimes(1);\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-1\",\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-2\",\n title: \"Item 2\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-3\",\n title: \"Item 3\",\n location: {\n folderId: \"folder-b\"\n },\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ]\n });\n\n const restorePromise = controllers.restoreItem.execute(item1.id);\n\n // Let's check the transition to loading state\n expect(presenter.vm).toMatchObject({\n loading: {\n [LoadingActions.restore]: true\n }\n });\n\n await restorePromise;\n\n expect(restoreItemGateway.execute).toHaveBeenCalledTimes(1);\n expect(restoreItemGateway.execute).toHaveBeenCalledWith(item1.id);\n\n expect(presenter.vm).toMatchObject({\n items: [\n {\n id: \"item-2\",\n title: \"Item 2\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity1,\n deletedOn: expect.any(String)\n },\n {\n id: \"item-3\",\n title: \"Item 3\",\n location: {\n folderId: \"folder-b\"\n },\n createdBy: identity2,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ],\n restoredItems: [\n {\n id: \"item-1\",\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n }\n ]\n });\n\n // We should be able to get the restored item by id\n const restoredItem = await controllers.getRestoredItemById.execute(\"item-1\");\n expect(restoredItem).toMatchObject({\n id: \"item-1\",\n title: \"Item 1\",\n location: {\n folderId: \"folder-a\"\n },\n createdBy: identity1,\n deletedBy: identity2,\n deletedOn: expect.any(String)\n });\n });\n\n it.each([\n [0, \"0 days\"],\n [1, \"1 day\"],\n [2, \"2 days\"]\n ])(\"should set the retention period to `%s` when input is `%i`\", (input, output) => {\n const { presenter } = init(listGateway, deleteItemGateway, restoreItemGateway, input);\n\n expect(presenter.vm).toMatchObject({\n retentionPeriod: output\n });\n });\n\n it(\"should be able to perform bulk action - RESTORE\", async () => {\n const { controllers } = init(listGateway, deleteItemGateway, restoreItemGateway);\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n expect(listGateway.execute).toHaveBeenCalledTimes(1);\n\n const restoreBulkActionPromise = controllers.restoreBulkAction.execute({\n search: \"Custom search\",\n where: {\n title: \"Item title\"\n },\n data: {\n any: 1\n }\n });\n\n await restoreBulkActionPromise;\n\n expect(bulkActionGateway.execute).toHaveBeenCalledTimes(1);\n expect(bulkActionGateway.execute).toHaveBeenCalledWith({\n action: BulkActionRestoreItems,\n search: \"Custom search\",\n where: {\n title: \"Item title\"\n },\n data: {\n any: 1\n }\n });\n });\n\n it(\"should be able to perform bulk action - DELETE\", async () => {\n const { controllers } = init(listGateway, deleteItemGateway, restoreItemGateway);\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n expect(listGateway.execute).toHaveBeenCalledTimes(1);\n\n const deleteBulkActionPromise = controllers.deleteBulkAction.execute({\n search: \"Custom search\",\n where: {\n title: \"Item title\"\n },\n data: {\n any: 1\n }\n });\n\n await deleteBulkActionPromise;\n\n expect(bulkActionGateway.execute).toHaveBeenCalledTimes(1);\n expect(bulkActionGateway.execute).toHaveBeenCalledWith({\n action: BulkActionDeleteItems,\n search: \"Custom search\",\n where: {\n title: \"Item title\"\n },\n data: {\n any: 1\n }\n });\n });\n\n it(\"should be able to `selectAll` and `unselectAll` items\", async () => {\n {\n // let's test the functionality by listing items that span multiple pages.\n const listGateway = createBinListGateway({\n execute: vi\n .fn<\n (\n params: TrashBinListQueryVariables\n ) => Promise<[Item[], TrashBinMetaResponse]>\n >()\n .mockImplementation(() => {\n return Promise.resolve([\n [item1, item2, item3],\n { totalCount: 4, cursor: \"IjMi\", hasMoreItems: true }\n ] as [Item[], TrashBinMetaResponse]);\n })\n });\n\n const { presenter, controllers } = init(\n listGateway,\n deleteItemGateway,\n restoreItemGateway\n );\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n expect(listGateway.execute).toHaveBeenCalledTimes(1);\n\n // let's check the initial vm state\n expect(presenter.vm.items.length).toBe(3);\n expect(presenter.vm.selectedItems.length).toBe(0);\n expect(presenter.vm.allowSelectAll).toBeFalsy();\n expect(presenter.vm.isSelectedAll).toBeFalsy();\n\n // let's check the vm state after selecting all items on the page\n await controllers.selectItems.execute([item1, item2, item3]);\n expect(presenter.vm.selectedItems.length).toBe(3);\n expect(presenter.vm.allowSelectAll).toBeTruthy();\n expect(presenter.vm.isSelectedAll).toBeFalsy();\n\n // let's check the vm state after selecting all items\n await controllers.selectAllItems.execute();\n expect(presenter.vm.selectedItems.length).toBe(3);\n expect(presenter.vm.allowSelectAll).toBeTruthy();\n expect(presenter.vm.isSelectedAll).toBeTruthy();\n\n // let's check the vm state after unselecting all items\n await controllers.unselectAllItems.execute();\n expect(presenter.vm.selectedItems.length).toBe(0);\n expect(presenter.vm.allowSelectAll).toBeFalsy();\n expect(presenter.vm.isSelectedAll).toBeFalsy();\n\n // let's check the vm state after unselecting one item\n await controllers.selectItems.execute([item1, item2, item3]);\n expect(presenter.vm.selectedItems.length).toBe(3);\n await controllers.selectAllItems.execute();\n expect(presenter.vm.isSelectedAll).toBeTruthy();\n await controllers.selectItems.execute([item1, item2]);\n expect(presenter.vm.isSelectedAll).toBeFalsy();\n expect(presenter.vm.allowSelectAll).toBeFalsy();\n }\n\n {\n // let's test the functionality by listing items that span only one page.\n const listGateway = createBinListGateway({\n execute: vi\n .fn<\n (\n params: TrashBinListQueryVariables\n ) => Promise<[Item[], TrashBinMetaResponse]>\n >()\n .mockImplementation(() => {\n return Promise.resolve([\n [item1, item2, item3],\n { totalCount: 3, cursor: null, hasMoreItems: false }\n ] as [Item[], TrashBinMetaResponse]);\n })\n });\n\n const { presenter, controllers } = init(\n listGateway,\n deleteItemGateway,\n restoreItemGateway\n );\n\n // let's list some entries from the gateway\n await controllers.listItems.execute();\n\n expect(listGateway.execute).toHaveBeenCalledTimes(1);\n\n // let's check the initial vm state\n expect(presenter.vm.items.length).toBe(3);\n\n // let's check the vm state after selecting all items in the page\n await controllers.selectItems.execute([item1, item2, item3]);\n expect(presenter.vm.selectedItems.length).toBe(3);\n expect(presenter.vm.allowSelectAll).toBeFalsy();\n expect(presenter.vm.isSelectedAll).toBeFalsy();\n }\n });\n});\n"],"names":["identity1","identity2","createBinListGateway","execute","createBinDeleteItemGateway","createBinRestoreItemGateway","createBinBulkActionsGateway","CustomItemMapper","data","defaultSorting","describe","item1","Date","item2","item3","item4","listGateway","vi","Promise","deleteItemGateway","restoreItemGateway","bulkActionGateway","itemMapper","BulkActionDeleteItems","BulkActionRestoreItems","init","retentionPeriod","selectedRepo","SelectedItemsRepository","loadingRepo","LoadingRepository","sortRepo","SortingRepository","sortRepoWithDefaults","SortingRepositoryWithDefaults","metaRepo","MetaRepository","searchRepo","SearchRepository","trashBinItemsRepo","TrashBinItemsRepository","itemsRepo","TrashBinItemsRepositoryWithLoading","TrashBinPresenter","TrashBinControllers","beforeEach","it","presenter","controllers","listPromise","expect","LoadingActions","String","listMorePromise","undefined","sortListGateway","searchItemsGateway","deletePromise","restorePromise","restoredItem","input","output","restoreBulkActionPromise","deleteBulkActionPromise"],"mappings":"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"}
|
|
@@ -1,80 +1,58 @@
|
|
|
1
1
|
import { BulkActionsController, DeleteItemController, GetRestoredItemByIdController, ListItemsController, ListMoreItemsController, RestoreItemController, SearchItemsController, SelectAllItemsController, SelectItemsController, SortItemsController, UnselectAllItemsController } from "./controllers/index.js";
|
|
2
2
|
import { BulkActionUseCase, DeleteItemUseCase, GetRestoredItemUseCase, ListItemsUseCase, ListItemsUseCaseWithSearch, ListItemsUseCaseWithSorting, ListMoreItemsUseCase, RestoreItemUseCase, SearchItemsUseCase, SelectAllItemsUseCase, SelectItemsUseCase, SortItemsUseCase, UnselectAllItemsUseCase } from "../../UseCases/index.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
const selectItems = new SelectItemsController(selectItemsUseCase);
|
|
56
|
-
const selectAllItems = new SelectAllItemsController(selectAllItemsUseCase);
|
|
57
|
-
const unselectAllItems = new UnselectAllItemsController(unselectAllItemsUseCase);
|
|
58
|
-
const sortItems = new SortItemsController(listItemsUseCase, sortItemsUseCase);
|
|
59
|
-
const searchItems = new SearchItemsController(listItemsUseCase, searchItemsUseCase);
|
|
60
|
-
const getRestoredItemById = new GetRestoredItemByIdController(getRestoredItemUseCase);
|
|
61
|
-
const restoreBulkAction = new BulkActionsController(bulkActionUseCase, this.restoreBulkActionName);
|
|
62
|
-
const deleteBulkAction = new BulkActionsController(bulkActionUseCase, this.deleteBulkActionName);
|
|
63
|
-
return {
|
|
64
|
-
listItems,
|
|
65
|
-
listMoreItems,
|
|
66
|
-
deleteItem,
|
|
67
|
-
restoreItem,
|
|
68
|
-
restoreBulkAction,
|
|
69
|
-
deleteBulkAction,
|
|
70
|
-
selectItems,
|
|
71
|
-
selectAllItems,
|
|
72
|
-
unselectAllItems,
|
|
73
|
-
sortItems,
|
|
74
|
-
searchItems,
|
|
75
|
-
getRestoredItemById
|
|
76
|
-
};
|
|
77
|
-
}
|
|
3
|
+
class TrashBinControllers {
|
|
4
|
+
constructor(itemsRepository, selectedRepository, sortingRepository, searchRepository, deleteBulkActionName, restoreBulkActionName){
|
|
5
|
+
this.itemsRepository = itemsRepository;
|
|
6
|
+
this.selectedRepository = selectedRepository;
|
|
7
|
+
this.sortingRepository = sortingRepository;
|
|
8
|
+
this.searchRepository = searchRepository;
|
|
9
|
+
this.deleteBulkActionName = deleteBulkActionName;
|
|
10
|
+
this.restoreBulkActionName = restoreBulkActionName;
|
|
11
|
+
}
|
|
12
|
+
getControllers() {
|
|
13
|
+
const selectItemsUseCase = ()=>new SelectItemsUseCase(this.selectedRepository);
|
|
14
|
+
const selectAllItemsUseCase = ()=>new SelectAllItemsUseCase(this.selectedRepository);
|
|
15
|
+
const unselectAllItemsUseCase = ()=>new UnselectAllItemsUseCase(this.selectedRepository);
|
|
16
|
+
const sortItemsUseCase = ()=>new SortItemsUseCase(this.sortingRepository);
|
|
17
|
+
const searchItemsUseCase = ()=>new SearchItemsUseCase(this.searchRepository);
|
|
18
|
+
const listItemsUseCase = ()=>{
|
|
19
|
+
const baseListItemsUseCase = new ListItemsUseCase(this.itemsRepository);
|
|
20
|
+
const listItemsWithSearch = new ListItemsUseCaseWithSearch(this.searchRepository, baseListItemsUseCase);
|
|
21
|
+
return new ListItemsUseCaseWithSorting(this.sortingRepository, listItemsWithSearch);
|
|
22
|
+
};
|
|
23
|
+
const listMoreItemsUseCase = ()=>new ListMoreItemsUseCase(this.itemsRepository);
|
|
24
|
+
const deleteItemUseCase = ()=>new DeleteItemUseCase(this.itemsRepository);
|
|
25
|
+
const restoreItemUseCase = ()=>new RestoreItemUseCase(this.itemsRepository);
|
|
26
|
+
const getRestoredItemUseCase = ()=>new GetRestoredItemUseCase(this.itemsRepository);
|
|
27
|
+
const bulkActionUseCase = ()=>new BulkActionUseCase(this.itemsRepository);
|
|
28
|
+
const listItems = new ListItemsController(listItemsUseCase);
|
|
29
|
+
const listMoreItems = new ListMoreItemsController(listMoreItemsUseCase);
|
|
30
|
+
const deleteItem = new DeleteItemController(deleteItemUseCase);
|
|
31
|
+
const restoreItem = new RestoreItemController(restoreItemUseCase);
|
|
32
|
+
const selectItems = new SelectItemsController(selectItemsUseCase);
|
|
33
|
+
const selectAllItems = new SelectAllItemsController(selectAllItemsUseCase);
|
|
34
|
+
const unselectAllItems = new UnselectAllItemsController(unselectAllItemsUseCase);
|
|
35
|
+
const sortItems = new SortItemsController(listItemsUseCase, sortItemsUseCase);
|
|
36
|
+
const searchItems = new SearchItemsController(listItemsUseCase, searchItemsUseCase);
|
|
37
|
+
const getRestoredItemById = new GetRestoredItemByIdController(getRestoredItemUseCase);
|
|
38
|
+
const restoreBulkAction = new BulkActionsController(bulkActionUseCase, this.restoreBulkActionName);
|
|
39
|
+
const deleteBulkAction = new BulkActionsController(bulkActionUseCase, this.deleteBulkActionName);
|
|
40
|
+
return {
|
|
41
|
+
listItems,
|
|
42
|
+
listMoreItems,
|
|
43
|
+
deleteItem,
|
|
44
|
+
restoreItem,
|
|
45
|
+
restoreBulkAction,
|
|
46
|
+
deleteBulkAction,
|
|
47
|
+
selectItems,
|
|
48
|
+
selectAllItems,
|
|
49
|
+
unselectAllItems,
|
|
50
|
+
sortItems,
|
|
51
|
+
searchItems,
|
|
52
|
+
getRestoredItemById
|
|
53
|
+
};
|
|
54
|
+
}
|
|
78
55
|
}
|
|
56
|
+
export { TrashBinControllers };
|
|
79
57
|
|
|
80
58
|
//# sourceMappingURL=TrashBinControllers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"Presentation/TrashBin/TrashBinControllers.js","sources":["../../../src/Presentation/TrashBin/TrashBinControllers.ts"],"sourcesContent":["import type { ISortingRepository } from \"@webiny/app-utils\";\nimport type {\n ISearchRepository,\n ISelectedItemsRepository,\n ITrashBinItemsRepository\n} from \"~/Domain/index.js\";\nimport {\n BulkActionsController,\n DeleteItemController,\n GetRestoredItemByIdController,\n ListItemsController,\n ListMoreItemsController,\n RestoreItemController,\n SearchItemsController,\n SelectAllItemsController,\n SelectItemsController,\n SortItemsController,\n UnselectAllItemsController\n} from \"~/Presentation/TrashBin/controllers/index.js\";\nimport {\n BulkActionUseCase,\n DeleteItemUseCase,\n GetRestoredItemUseCase,\n ListItemsUseCase,\n ListItemsUseCaseWithSearch,\n ListItemsUseCaseWithSorting,\n ListMoreItemsUseCase,\n RestoreItemUseCase,\n SearchItemsUseCase,\n SelectAllItemsUseCase,\n SelectItemsUseCase,\n SortItemsUseCase,\n UnselectAllItemsUseCase\n} from \"~/UseCases/index.js\";\n\nexport class TrashBinControllers {\n private readonly itemsRepository: ITrashBinItemsRepository;\n private readonly selectedRepository: ISelectedItemsRepository;\n private readonly sortingRepository: ISortingRepository;\n private readonly searchRepository: ISearchRepository;\n private readonly deleteBulkActionName: string;\n private readonly restoreBulkActionName: string;\n\n constructor(\n itemsRepository: ITrashBinItemsRepository,\n selectedRepository: ISelectedItemsRepository,\n sortingRepository: ISortingRepository,\n searchRepository: ISearchRepository,\n deleteBulkActionName: string,\n restoreBulkActionName: string\n ) {\n this.itemsRepository = itemsRepository;\n this.selectedRepository = selectedRepository;\n this.sortingRepository = sortingRepository;\n this.searchRepository = searchRepository;\n this.deleteBulkActionName = deleteBulkActionName;\n this.restoreBulkActionName = restoreBulkActionName;\n }\n\n getControllers() {\n // Select Items UseCase\n const selectItemsUseCase = () => new SelectItemsUseCase(this.selectedRepository);\n\n // Select All Items UseCase\n const selectAllItemsUseCase = () => new SelectAllItemsUseCase(this.selectedRepository);\n\n // Unselect All Items UseCase\n const unselectAllItemsUseCase = () => new UnselectAllItemsUseCase(this.selectedRepository);\n\n // Sort Items UseCase\n const sortItemsUseCase = () => new SortItemsUseCase(this.sortingRepository);\n\n // Search Items UseCase\n const searchItemsUseCase = () => new SearchItemsUseCase(this.searchRepository);\n\n // List Items UseCase\n const listItemsUseCase = () => {\n const baseListItemsUseCase = new ListItemsUseCase(this.itemsRepository);\n const listItemsWithSearch = new ListItemsUseCaseWithSearch(\n this.searchRepository,\n baseListItemsUseCase\n );\n return new ListItemsUseCaseWithSorting(this.sortingRepository, listItemsWithSearch);\n };\n\n // List More Items UseCase\n const listMoreItemsUseCase = () => new ListMoreItemsUseCase(this.itemsRepository);\n\n // Delete Item UseCase\n const deleteItemUseCase = () => new DeleteItemUseCase(this.itemsRepository);\n\n // Restore Item UseCase\n const restoreItemUseCase = () => new RestoreItemUseCase(this.itemsRepository);\n\n // Get RestoredItem UseCase\n const getRestoredItemUseCase = () => new GetRestoredItemUseCase(this.itemsRepository);\n\n // Bulk Action UseCase\n const bulkActionUseCase = () => new BulkActionUseCase(this.itemsRepository);\n\n // Create controllers\n const listItems = new ListItemsController(listItemsUseCase);\n const listMoreItems = new ListMoreItemsController(listMoreItemsUseCase);\n const deleteItem = new DeleteItemController(deleteItemUseCase);\n const restoreItem = new RestoreItemController(restoreItemUseCase);\n const selectItems = new SelectItemsController(selectItemsUseCase);\n const selectAllItems = new SelectAllItemsController(selectAllItemsUseCase);\n const unselectAllItems = new UnselectAllItemsController(unselectAllItemsUseCase);\n const sortItems = new SortItemsController(listItemsUseCase, sortItemsUseCase);\n const searchItems = new SearchItemsController(listItemsUseCase, searchItemsUseCase);\n const getRestoredItemById = new GetRestoredItemByIdController(getRestoredItemUseCase);\n const restoreBulkAction = new BulkActionsController(\n bulkActionUseCase,\n this.restoreBulkActionName\n );\n const deleteBulkAction = new BulkActionsController(\n bulkActionUseCase,\n this.deleteBulkActionName\n );\n\n return {\n listItems,\n listMoreItems,\n deleteItem,\n restoreItem,\n restoreBulkAction,\n deleteBulkAction,\n selectItems,\n selectAllItems,\n unselectAllItems,\n sortItems,\n searchItems,\n getRestoredItemById\n };\n }\n}\n"],"names":["TrashBinControllers","itemsRepository","selectedRepository","sortingRepository","searchRepository","deleteBulkActionName","restoreBulkActionName","selectItemsUseCase","SelectItemsUseCase","selectAllItemsUseCase","SelectAllItemsUseCase","unselectAllItemsUseCase","UnselectAllItemsUseCase","sortItemsUseCase","SortItemsUseCase","searchItemsUseCase","SearchItemsUseCase","listItemsUseCase","baseListItemsUseCase","ListItemsUseCase","listItemsWithSearch","ListItemsUseCaseWithSearch","ListItemsUseCaseWithSorting","listMoreItemsUseCase","ListMoreItemsUseCase","deleteItemUseCase","DeleteItemUseCase","restoreItemUseCase","RestoreItemUseCase","getRestoredItemUseCase","GetRestoredItemUseCase","bulkActionUseCase","BulkActionUseCase","listItems","ListItemsController","listMoreItems","ListMoreItemsController","deleteItem","DeleteItemController","restoreItem","RestoreItemController","selectItems","SelectItemsController","selectAllItems","SelectAllItemsController","unselectAllItems","UnselectAllItemsController","sortItems","SortItemsController","searchItems","SearchItemsController","getRestoredItemById","GetRestoredItemByIdController","restoreBulkAction","BulkActionsController","deleteBulkAction"],"mappings":";;AAmCO,MAAMA;IAQT,YACIC,eAAyC,EACzCC,kBAA4C,EAC5CC,iBAAqC,EACrCC,gBAAmC,EACnCC,oBAA4B,EAC5BC,qBAA6B,CAC/B;QACE,IAAI,CAAC,eAAe,GAAGL;QACvB,IAAI,CAAC,kBAAkB,GAAGC;QAC1B,IAAI,CAAC,iBAAiB,GAAGC;QACzB,IAAI,CAAC,gBAAgB,GAAGC;QACxB,IAAI,CAAC,oBAAoB,GAAGC;QAC5B,IAAI,CAAC,qBAAqB,GAAGC;IACjC;IAEA,iBAAiB;QAEb,MAAMC,qBAAqB,IAAM,IAAIC,mBAAmB,IAAI,CAAC,kBAAkB;QAG/E,MAAMC,wBAAwB,IAAM,IAAIC,sBAAsB,IAAI,CAAC,kBAAkB;QAGrF,MAAMC,0BAA0B,IAAM,IAAIC,wBAAwB,IAAI,CAAC,kBAAkB;QAGzF,MAAMC,mBAAmB,IAAM,IAAIC,iBAAiB,IAAI,CAAC,iBAAiB;QAG1E,MAAMC,qBAAqB,IAAM,IAAIC,mBAAmB,IAAI,CAAC,gBAAgB;QAG7E,MAAMC,mBAAmB;YACrB,MAAMC,uBAAuB,IAAIC,iBAAiB,IAAI,CAAC,eAAe;YACtE,MAAMC,sBAAsB,IAAIC,2BAC5B,IAAI,CAAC,gBAAgB,EACrBH;YAEJ,OAAO,IAAII,4BAA4B,IAAI,CAAC,iBAAiB,EAAEF;QACnE;QAGA,MAAMG,uBAAuB,IAAM,IAAIC,qBAAqB,IAAI,CAAC,eAAe;QAGhF,MAAMC,oBAAoB,IAAM,IAAIC,kBAAkB,IAAI,CAAC,eAAe;QAG1E,MAAMC,qBAAqB,IAAM,IAAIC,mBAAmB,IAAI,CAAC,eAAe;QAG5E,MAAMC,yBAAyB,IAAM,IAAIC,uBAAuB,IAAI,CAAC,eAAe;QAGpF,MAAMC,oBAAoB,IAAM,IAAIC,kBAAkB,IAAI,CAAC,eAAe;QAG1E,MAAMC,YAAY,IAAIC,oBAAoBjB;QAC1C,MAAMkB,gBAAgB,IAAIC,wBAAwBb;QAClD,MAAMc,aAAa,IAAIC,qBAAqBb;QAC5C,MAAMc,cAAc,IAAIC,sBAAsBb;QAC9C,MAAMc,cAAc,IAAIC,sBAAsBnC;QAC9C,MAAMoC,iBAAiB,IAAIC,yBAAyBnC;QACpD,MAAMoC,mBAAmB,IAAIC,2BAA2BnC;QACxD,MAAMoC,YAAY,IAAIC,oBAAoB/B,kBAAkBJ;QAC5D,MAAMoC,cAAc,IAAIC,sBAAsBjC,kBAAkBF;QAChE,MAAMoC,sBAAsB,IAAIC,8BAA8BvB;QAC9D,MAAMwB,oBAAoB,IAAIC,sBAC1BvB,mBACA,IAAI,CAAC,qBAAqB;QAE9B,MAAMwB,mBAAmB,IAAID,sBACzBvB,mBACA,IAAI,CAAC,oBAAoB;QAG7B,OAAO;YACHE;YACAE;YACAE;YACAE;YACAc;YACAE;YACAd;YACAE;YACAE;YACAE;YACAE;YACAE;QACJ;IACJ;AACJ"}
|
|
@@ -2,60 +2,57 @@ import { makeAutoObservable } from "mobx";
|
|
|
2
2
|
import { MetaMapper, SortingMapper } from "@webiny/app-utils";
|
|
3
3
|
import { TrashBinItemMapper } from "../../Domain/Repositories/index.js";
|
|
4
4
|
import { LoadingActions } from "../../types.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
5
|
+
class TrashBinPresenter {
|
|
6
|
+
constructor(itemsRepository, selectedRepository, sortingRepository, searchRepository, retentionPeriod, nameColumnId){
|
|
7
|
+
this.itemsRepository = itemsRepository;
|
|
8
|
+
this.selectedRepository = selectedRepository;
|
|
9
|
+
this.sortingRepository = sortingRepository;
|
|
10
|
+
this.searchRepository = searchRepository;
|
|
11
|
+
this.itemMapper = new TrashBinItemMapper();
|
|
12
|
+
this.retentionPeriod = retentionPeriod;
|
|
13
|
+
this.nameColumnId = nameColumnId;
|
|
14
|
+
makeAutoObservable(this);
|
|
15
|
+
}
|
|
16
|
+
get vm() {
|
|
17
|
+
return {
|
|
18
|
+
items: this.mapItemsToDto(this.itemsRepository.getItems()),
|
|
19
|
+
restoredItems: this.mapItemsToDto(this.itemsRepository.getRestoredItems()),
|
|
20
|
+
selectedItems: this.mapItemsToDto(this.selectedRepository.getSelectedItems()),
|
|
21
|
+
allowSelectAll: this.getAllowSelectAll(),
|
|
22
|
+
isSelectedAll: this.selectedRepository.getSelectedAllItems(),
|
|
23
|
+
meta: MetaMapper.toDto(this.itemsRepository.getMeta()),
|
|
24
|
+
sorting: this.sortingRepository.get().map((sort)=>SortingMapper.fromDTOtoColumn(sort)),
|
|
25
|
+
loading: this.itemsRepository.getLoading(),
|
|
26
|
+
isEmptyView: this.getIsEmptyView(),
|
|
27
|
+
isSearchView: this.getIsSearchView(),
|
|
28
|
+
searchQuery: this.searchRepository.get(),
|
|
29
|
+
searchLabel: "Search all items",
|
|
30
|
+
nameColumnId: this.nameColumnId || "id",
|
|
31
|
+
retentionPeriod: this.getRetentionPeriod()
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
mapItemsToDto(items) {
|
|
35
|
+
return items.map((item)=>this.itemMapper.toDTO(item));
|
|
36
|
+
}
|
|
37
|
+
getIsEmptyView() {
|
|
38
|
+
const loading = this.itemsRepository.getLoading();
|
|
39
|
+
const items = this.itemsRepository.getItems();
|
|
40
|
+
return !loading[LoadingActions.list] && !items.length;
|
|
41
|
+
}
|
|
42
|
+
getIsSearchView() {
|
|
43
|
+
const loading = this.itemsRepository.getLoading();
|
|
44
|
+
const items = this.itemsRepository.getItems();
|
|
45
|
+
const searchQuery = this.searchRepository.get();
|
|
46
|
+
return !loading[LoadingActions.list] && !items.length && !!searchQuery;
|
|
47
|
+
}
|
|
48
|
+
getRetentionPeriod() {
|
|
49
|
+
if (1 === this.retentionPeriod) return "1 day";
|
|
50
|
+
return `${this.retentionPeriod} days`;
|
|
51
|
+
}
|
|
52
|
+
getAllowSelectAll() {
|
|
53
|
+
return this.itemsRepository.getMeta().hasMoreItems && !!this.itemsRepository.getItems().length && this.selectedRepository.getSelectedItems().length === this.itemsRepository.getItems().length;
|
|
53
54
|
}
|
|
54
|
-
return `${this.retentionPeriod} days`;
|
|
55
|
-
}
|
|
56
|
-
getAllowSelectAll() {
|
|
57
|
-
return this.itemsRepository.getMeta().hasMoreItems && !!this.itemsRepository.getItems().length && this.selectedRepository.getSelectedItems().length === this.itemsRepository.getItems().length;
|
|
58
|
-
}
|
|
59
55
|
}
|
|
56
|
+
export { TrashBinPresenter };
|
|
60
57
|
|
|
61
58
|
//# sourceMappingURL=TrashBinPresenter.js.map
|