@webiny/app-aco 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/app.js +3 -4
- package/app.js.map +1 -1
- package/components/Actions/DeleteFolder/DeleteFolder.js +21 -26
- package/components/Actions/DeleteFolder/DeleteFolder.js.map +1 -1
- package/components/Actions/DeleteFolder/index.js +0 -2
- package/components/Actions/EditFolder/EditFolder.js +20 -25
- package/components/Actions/EditFolder/EditFolder.js.map +1 -1
- package/components/Actions/EditFolder/index.js +0 -2
- package/components/Actions/SetFolderPemissions/SetFolderPermissions.js +20 -25
- package/components/Actions/SetFolderPemissions/SetFolderPermissions.js.map +1 -1
- package/components/Actions/SetFolderPemissions/index.js +0 -2
- package/components/Actions/index.js +0 -2
- package/components/AdvancedSearch/AdvancedSearch.js +67 -75
- package/components/AdvancedSearch/AdvancedSearch.js.map +1 -1
- package/components/AdvancedSearch/AdvancedSearchConfigs.js +37 -40
- package/components/AdvancedSearch/AdvancedSearchConfigs.js.map +1 -1
- package/components/AdvancedSearch/AdvancedSearchPresenter.js +178 -199
- package/components/AdvancedSearch/AdvancedSearchPresenter.js.map +1 -1
- package/components/AdvancedSearch/AdvancedSearchPresenter.test.js +653 -720
- package/components/AdvancedSearch/AdvancedSearchPresenter.test.js.map +1 -1
- package/components/AdvancedSearch/Button/Button.js +13 -16
- package/components/AdvancedSearch/Button/Button.js.map +1 -1
- package/components/AdvancedSearch/Button/index.js +0 -2
- package/components/AdvancedSearch/GraphQLInputMapper.js +29 -40
- package/components/AdvancedSearch/GraphQLInputMapper.js.map +1 -1
- package/components/AdvancedSearch/GraphQLInputMapper.test.js +179 -139
- package/components/AdvancedSearch/GraphQLInputMapper.test.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/QueryBuilder.js +57 -58
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/QueryBuilder.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/Details.js +25 -26
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/Details.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/Filter.js +51 -71
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/Filter.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/FilterOperationLabel.js +9 -13
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/FilterOperationLabel.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/GroupOperationLabel.js +14 -14
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/GroupOperationLabel.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/InputField.js +11 -20
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/InputField.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/OperationSelector.js +15 -25
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/OperationSelector.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/AddFilter.js +14 -17
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/AddFilter.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/AddGroup.js +11 -14
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/AddGroup.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/RemoveFilter.js +14 -18
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/RemoveFilter.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/index.js +0 -2
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/index.js +0 -2
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/index.js +0 -2
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawer.js +65 -67
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawer.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawerPresenter.js +110 -139
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawerPresenter.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawerPresenter.test.js +345 -328
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawerPresenter.test.js.map +1 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/index.js +0 -2
- package/components/AdvancedSearch/QueryManagerDialog/QueryManagerDialog.js +23 -27
- package/components/AdvancedSearch/QueryManagerDialog/QueryManagerDialog.js.map +1 -1
- package/components/AdvancedSearch/QueryManagerDialog/components/Description.js +8 -10
- package/components/AdvancedSearch/QueryManagerDialog/components/Description.js.map +1 -1
- package/components/AdvancedSearch/QueryManagerDialog/components/Empty.js +16 -17
- package/components/AdvancedSearch/QueryManagerDialog/components/Empty.js.map +1 -1
- package/components/AdvancedSearch/QueryManagerDialog/components/FilterList.js +41 -42
- package/components/AdvancedSearch/QueryManagerDialog/components/FilterList.js.map +1 -1
- package/components/AdvancedSearch/QueryManagerDialog/components/index.js +0 -2
- package/components/AdvancedSearch/QueryManagerDialog/index.js +0 -2
- package/components/AdvancedSearch/QuerySaverDialog/QuerySaverDialog.js +52 -59
- package/components/AdvancedSearch/QuerySaverDialog/QuerySaverDialog.js.map +1 -1
- package/components/AdvancedSearch/QuerySaverDialog/QuerySaverDialogPresenter.js +39 -52
- package/components/AdvancedSearch/QuerySaverDialog/QuerySaverDialogPresenter.js.map +1 -1
- package/components/AdvancedSearch/QuerySaverDialog/QuerySaverDialogPresenter.test.js +58 -66
- package/components/AdvancedSearch/QuerySaverDialog/QuerySaverDialogPresenter.test.js.map +1 -1
- package/components/AdvancedSearch/QuerySaverDialog/index.js +0 -2
- package/components/AdvancedSearch/SelectedFilter/SelectedFilter.js +18 -19
- package/components/AdvancedSearch/SelectedFilter/SelectedFilter.js.map +1 -1
- package/components/AdvancedSearch/SelectedFilter/index.js +0 -2
- package/components/AdvancedSearch/domain/Feedback.js +12 -11
- package/components/AdvancedSearch/domain/Feedback.js.map +1 -1
- package/components/AdvancedSearch/domain/Field.js +206 -190
- package/components/AdvancedSearch/domain/Field.js.map +1 -1
- package/components/AdvancedSearch/domain/FieldMapper.js +40 -41
- package/components/AdvancedSearch/domain/FieldMapper.js.map +1 -1
- package/components/AdvancedSearch/domain/Filter.js +64 -47
- package/components/AdvancedSearch/domain/Filter.js.map +1 -1
- package/components/AdvancedSearch/domain/FilterMapper.js +35 -34
- package/components/AdvancedSearch/domain/FilterMapper.js.map +1 -1
- package/components/AdvancedSearch/domain/FilterRepository.js +84 -85
- package/components/AdvancedSearch/domain/FilterRepository.js.map +1 -1
- package/components/AdvancedSearch/domain/FilterRepositoryFactory.js +8 -9
- package/components/AdvancedSearch/domain/FilterRepositoryFactory.js.map +1 -1
- package/components/AdvancedSearch/domain/Loading.js +47 -46
- package/components/AdvancedSearch/domain/Loading.js.map +1 -1
- package/components/AdvancedSearch/domain/Operation.js +5 -4
- package/components/AdvancedSearch/domain/Operation.js.map +1 -1
- package/components/AdvancedSearch/domain/Sorter.js +17 -16
- package/components/AdvancedSearch/domain/Sorter.js.map +1 -1
- package/components/AdvancedSearch/domain/index.js +0 -2
- package/components/AdvancedSearch/fields/Boolean.js +23 -25
- package/components/AdvancedSearch/fields/Boolean.js.map +1 -1
- package/components/AdvancedSearch/fields/DateWithTimezone.js +47 -52
- package/components/AdvancedSearch/fields/DateWithTimezone.js.map +1 -1
- package/components/AdvancedSearch/fields/DateWithoutTimezone.js +26 -30
- package/components/AdvancedSearch/fields/DateWithoutTimezone.js.map +1 -1
- package/components/AdvancedSearch/fields/Input.js +12 -14
- package/components/AdvancedSearch/fields/Input.js.map +1 -1
- package/components/AdvancedSearch/fields/PredefinedValues.js +17 -23
- package/components/AdvancedSearch/fields/PredefinedValues.js.map +1 -1
- package/components/AdvancedSearch/fields/index.js +0 -2
- package/components/AdvancedSearch/gateways/FiltersGatewayInterface.js +0 -3
- package/components/AdvancedSearch/gateways/FiltersGraphQLGateway.js +69 -121
- package/components/AdvancedSearch/gateways/FiltersGraphQLGateway.js.map +1 -1
- package/components/AdvancedSearch/gateways/filters.gql.js +9 -8
- package/components/AdvancedSearch/gateways/filters.gql.js.map +1 -1
- package/components/AdvancedSearch/gateways/filters.types.js +0 -3
- package/components/AdvancedSearch/gateways/index.js +0 -2
- package/components/AdvancedSearch/index.js +22 -24
- package/components/AdvancedSearch/index.js.map +1 -1
- package/components/AdvancedSearch/useFilterRepository.js +4 -3
- package/components/AdvancedSearch/useFilterRepository.js.map +1 -1
- package/components/AdvancedSearch/useInputField.js +4 -6
- package/components/AdvancedSearch/useInputField.js.map +1 -1
- package/components/Extensions/Extensions.js +23 -26
- package/components/Extensions/Extensions.js.map +1 -1
- package/components/Extensions/index.js +0 -2
- package/components/FolderGrid/FolderGridItem.js +67 -62
- package/components/FolderGrid/FolderGridItem.js.map +1 -1
- package/components/FolderGrid/index.js +0 -2
- package/components/FolderIcons/assets/folder-shared-icon.js +25 -0
- package/components/FolderIcons/assets/folder-shared-icon.js.map +1 -0
- package/components/FolderIcons/assets/folder.js +21 -0
- package/components/FolderIcons/assets/folder.js.map +1 -0
- package/components/FolderIcons/index.js +2 -5
- package/components/FolderPicker/FolderPicker.js +23 -20
- package/components/FolderPicker/FolderPicker.js.map +1 -1
- package/components/FolderTree/ButtonCreate/ButtonCreate.d.ts +1 -0
- package/components/FolderTree/ButtonCreate/ButtonCreate.js +17 -14
- package/components/FolderTree/ButtonCreate/ButtonCreate.js.map +1 -1
- package/components/FolderTree/ButtonCreate/index.js +0 -2
- package/components/FolderTree/Empty/Empty.js +5 -6
- package/components/FolderTree/Empty/Empty.js.map +1 -1
- package/components/FolderTree/Empty/index.js +0 -2
- package/components/FolderTree/List/List.js +120 -135
- package/components/FolderTree/List/List.js.map +1 -1
- package/components/FolderTree/List/index.js +0 -2
- package/components/FolderTree/List/utils.js +31 -64
- package/components/FolderTree/List/utils.js.map +1 -1
- package/components/FolderTree/Loader/Loader.js +15 -18
- package/components/FolderTree/Loader/Loader.js.map +1 -1
- package/components/FolderTree/Loader/index.js +0 -2
- package/components/FolderTree/MenuActions/MenuActions.js +19 -27
- package/components/FolderTree/MenuActions/MenuActions.js.map +1 -1
- package/components/FolderTree/MenuActions/index.js +0 -2
- package/components/FolderTree/Node/Node.js +27 -47
- package/components/FolderTree/Node/Node.js.map +1 -1
- package/components/FolderTree/Node/index.js +0 -2
- package/components/FolderTree/NodePreview/NodePreview.js +11 -14
- package/components/FolderTree/NodePreview/NodePreview.js.map +1 -1
- package/components/FolderTree/NodePreview/index.js +0 -2
- package/components/FolderTree/index.d.ts +2 -1
- package/components/FolderTree/index.js +47 -57
- package/components/FolderTree/index.js.map +1 -1
- package/components/Search/Search.js +15 -20
- package/components/Search/Search.js.map +1 -1
- package/components/Search/index.js +0 -2
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityDecorator.js +19 -20
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityDecorator.js.map +1 -1
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.js +17 -18
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.js.map +1 -1
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.test.js +113 -130
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.test.js.map +1 -1
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepository.js +26 -25
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepository.js.map +1 -1
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepositoryFactory.js +12 -11
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepositoryFactory.js.map +1 -1
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityUpdater.js +11 -12
- package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityUpdater.js.map +1 -1
- package/components/Table/components/Table/ColumnVisibility/IColumnsVisibilityRepository.js +0 -3
- package/components/Table/components/Table/ColumnVisibility/IColumnsVisibilityUpdater.js +0 -3
- package/components/Table/components/Table/ColumnVisibility/index.js +0 -2
- package/components/Table/components/Table/Columns/Column.js +18 -17
- package/components/Table/components/Table/Columns/Column.js.map +1 -1
- package/components/Table/components/Table/Columns/ColumnMapper.js +31 -31
- package/components/Table/components/Table/Columns/ColumnMapper.js.map +1 -1
- package/components/Table/components/Table/Columns/ColumnsPresenter.js +14 -13
- package/components/Table/components/Table/Columns/ColumnsPresenter.js.map +1 -1
- package/components/Table/components/Table/Columns/ColumnsPresenter.test.js +66 -60
- package/components/Table/components/Table/Columns/ColumnsPresenter.test.js.map +1 -1
- package/components/Table/components/Table/Columns/ColumnsRepository.js +15 -14
- package/components/Table/components/Table/Columns/ColumnsRepository.js.map +1 -1
- package/components/Table/components/Table/Columns/ColumnsRepositoryFactory.js +15 -11
- package/components/Table/components/Table/Columns/ColumnsRepositoryFactory.js.map +1 -1
- package/components/Table/components/Table/Columns/IColumnsRepository.js +0 -3
- package/components/Table/components/Table/Columns/index.js +0 -2
- package/components/Table/components/Table/Table.js +38 -32
- package/components/Table/components/Table/Table.js.map +1 -1
- package/components/Table/components/Table/TableInner.js +33 -40
- package/components/Table/components/Table/TableInner.js.map +1 -1
- package/components/Table/components/Table/TablePresenter.js +12 -9
- package/components/Table/components/Table/TablePresenter.js.map +1 -1
- package/components/Table/components/Table/gateways/ColumnsVisibilityLocalStorageGateway.js +12 -11
- package/components/Table/components/Table/gateways/ColumnsVisibilityLocalStorageGateway.js.map +1 -1
- package/components/Table/components/Table/gateways/IColumnsVisibilityGateway.js +0 -3
- package/components/Table/components/Table/gateways/index.js +0 -2
- package/components/Table/components/Table/index.js +0 -2
- package/components/Table/components/index.js +0 -2
- package/components/Table/createTableData.js +13 -16
- package/components/Table/createTableData.js.map +1 -1
- package/components/Table/index.js +0 -2
- package/components/Table/useTableRow.js +17 -29
- package/components/Table/useTableRow.js.map +1 -1
- package/components/index.js +0 -2
- package/config/AcoConfig.js +43 -30
- package/config/AcoConfig.js.map +1 -1
- package/config/advanced-search/FieldRenderer.js +27 -30
- package/config/advanced-search/FieldRenderer.js.map +1 -1
- package/config/advanced-search/index.js +3 -2
- package/config/advanced-search/index.js.map +1 -1
- package/config/folder/Action.js +27 -32
- package/config/folder/Action.js.map +1 -1
- package/config/folder/DropConfirmation.js +12 -13
- package/config/folder/DropConfirmation.js.map +1 -1
- package/config/folder/createFolderFieldDecoratorFactory.js +14 -18
- package/config/folder/createFolderFieldDecoratorFactory.js.map +1 -1
- package/config/folder/index.js +4 -3
- package/config/folder/index.js.map +1 -1
- package/config/index.js +0 -2
- package/config/record/Action.js +28 -33
- package/config/record/Action.js.map +1 -1
- package/config/record/index.js +3 -2
- package/config/record/index.js.map +1 -1
- package/config/table/Column.js +65 -81
- package/config/table/Column.js.map +1 -1
- package/config/table/Sorting.js +24 -27
- package/config/table/Sorting.js.map +1 -1
- package/config/table/index.js +4 -3
- package/config/table/index.js.map +1 -1
- package/constants.js +0 -2
- package/contexts/acoList.js +283 -384
- package/contexts/acoList.js.map +1 -1
- package/contexts/app.js +40 -53
- package/contexts/app.js.map +1 -1
- package/contexts/folder.js +11 -15
- package/contexts/folder.js.map +1 -1
- package/contexts/folders.js +27 -32
- package/contexts/folders.js.map +1 -1
- package/contexts/index.js +0 -2
- package/contexts/navigateFolder.js +49 -57
- package/contexts/navigateFolder.js.map +1 -1
- package/contexts/records.js +299 -422
- package/contexts/records.js.map +1 -1
- package/dialogs/DialogSetPermissions/UsersTeamsMultiAutocomplete.js +22 -29
- package/dialogs/DialogSetPermissions/UsersTeamsMultiAutocomplete.js.map +1 -1
- package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemGraphic.js +18 -21
- package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemGraphic.js.map +1 -1
- package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemMeta.js +105 -107
- package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemMeta.js.map +1 -1
- package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemText.js +11 -16
- package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemText.js.map +1 -1
- package/dialogs/DialogSetPermissions/UsersTeamsSelection.js +29 -34
- package/dialogs/DialogSetPermissions/UsersTeamsSelection.js.map +1 -1
- package/dialogs/DialogSetPermissions/graphql.js +3 -2
- package/dialogs/DialogSetPermissions/graphql.js.map +1 -1
- package/dialogs/ParentFolderField.js +12 -13
- package/dialogs/ParentFolderField.js.map +1 -1
- package/dialogs/index.js +0 -2
- package/dialogs/useConfirmMoveFolderDialog.js +16 -19
- package/dialogs/useConfirmMoveFolderDialog.js.map +1 -1
- package/dialogs/useCreateDialog.js +78 -93
- package/dialogs/useCreateDialog.js.map +1 -1
- package/dialogs/useDeleteDialog.js +27 -33
- package/dialogs/useDeleteDialog.js.map +1 -1
- package/dialogs/useEditDialog.js +77 -80
- package/dialogs/useEditDialog.js.map +1 -1
- package/dialogs/useMoveToFolderDialog.d.ts +1 -1
- package/dialogs/useMoveToFolderDialog.js +33 -49
- package/dialogs/useMoveToFolderDialog.js.map +1 -1
- package/dialogs/useSetPermissionsDialog.js +85 -87
- package/dialogs/useSetPermissionsDialog.js.map +1 -1
- package/domain/folder/Folder.js +25 -24
- package/domain/folder/Folder.js.map +1 -1
- package/domain/folder/FolderDto.js +0 -3
- package/domain/folder/FolderDtoMapper.js +24 -25
- package/domain/folder/FolderDtoMapper.js.map +1 -1
- package/domain/folder/FolderIdentity.js +16 -17
- package/domain/folder/FolderIdentity.js.map +1 -1
- package/domain/folder/RootFolder.js +24 -23
- package/domain/folder/RootFolder.js.map +1 -1
- package/exports/admin/aco.js +0 -2
- package/exports/admin/ui.js +0 -2
- package/features/folders/abstractions.js +6 -5
- package/features/folders/abstractions.js.map +1 -1
- package/features/folders/cache/FoldersCacheFactory.js +13 -12
- package/features/folders/cache/FoldersCacheFactory.js.map +1 -1
- package/features/folders/cache/ListCache.d.ts +2 -29
- package/features/folders/cache/ListCache.js +1 -43
- package/features/folders/cache/LoadedCache.js +33 -27
- package/features/folders/cache/LoadedCache.js.map +1 -1
- package/features/folders/cache/LoadedFoldersCacheFactory.js +13 -12
- package/features/folders/cache/LoadedFoldersCacheFactory.js.map +1 -1
- package/features/folders/cache/index.js +0 -2
- package/features/folders/createFolder/CreateFolder.test.js +44 -48
- package/features/folders/createFolder/CreateFolder.test.js.map +1 -1
- package/features/folders/createFolder/CreateFolderGqlGateway.js +27 -32
- package/features/folders/createFolder/CreateFolderGqlGateway.js.map +1 -1
- package/features/folders/createFolder/CreateFolderRepository.js +29 -24
- package/features/folders/createFolder/CreateFolderRepository.js.map +1 -1
- package/features/folders/createFolder/CreateFolderUseCase.js +20 -17
- package/features/folders/createFolder/CreateFolderUseCase.js.map +1 -1
- package/features/folders/createFolder/abstractions.js +4 -12
- package/features/folders/createFolder/abstractions.js.map +1 -1
- package/features/folders/createFolder/feature.js +15 -14
- package/features/folders/createFolder/feature.js.map +1 -1
- package/features/folders/createFolder/index.js +0 -2
- package/features/folders/createFolder/useCreateFolder.js +6 -9
- package/features/folders/createFolder/useCreateFolder.js.map +1 -1
- package/features/folders/deleteFolder/DeleteFolder.test.js +38 -39
- package/features/folders/deleteFolder/DeleteFolder.test.js.map +1 -1
- package/features/folders/deleteFolder/DeleteFolderGqlGateway.js +21 -28
- package/features/folders/deleteFolder/DeleteFolderGqlGateway.js.map +1 -1
- package/features/folders/deleteFolder/DeleteFolderRepository.js +16 -13
- package/features/folders/deleteFolder/DeleteFolderRepository.js.map +1 -1
- package/features/folders/deleteFolder/DeleteFolderUseCase.js +13 -10
- package/features/folders/deleteFolder/DeleteFolderUseCase.js.map +1 -1
- package/features/folders/deleteFolder/abstractions.js +4 -12
- package/features/folders/deleteFolder/abstractions.js.map +1 -1
- package/features/folders/deleteFolder/feature.js +15 -14
- package/features/folders/deleteFolder/feature.js.map +1 -1
- package/features/folders/deleteFolder/index.js +0 -2
- package/features/folders/deleteFolder/useDeleteFolder.js +6 -9
- package/features/folders/deleteFolder/useDeleteFolder.js.map +1 -1
- package/features/folders/feature.js +23 -29
- package/features/folders/feature.js.map +1 -1
- package/features/folders/folderModelProvider/FolderModelContext.js +17 -24
- package/features/folders/folderModelProvider/FolderModelContext.js.map +1 -1
- package/features/folders/folderModelProvider/FolderModelDto.js +0 -3
- package/features/folders/folderModelProvider/FolderModelProvider.js +23 -23
- package/features/folders/folderModelProvider/FolderModelProvider.js.map +1 -1
- package/features/folders/folderModelProvider/GetFolderModelGqlGateway.js +20 -26
- package/features/folders/folderModelProvider/GetFolderModelGqlGateway.js.map +1 -1
- package/features/folders/folderModelProvider/GetFolderModelRepository.js +25 -22
- package/features/folders/folderModelProvider/GetFolderModelRepository.js.map +1 -1
- package/features/folders/folderModelProvider/abstractions.js +3 -2
- package/features/folders/folderModelProvider/abstractions.js.map +1 -1
- package/features/folders/folderModelProvider/feature.js +15 -14
- package/features/folders/folderModelProvider/feature.js.map +1 -1
- package/features/folders/folderModelProvider/index.js +0 -2
- package/features/folders/getDescendantFolders/GetDescendantFolders.test.js +116 -110
- package/features/folders/getDescendantFolders/GetDescendantFolders.test.js.map +1 -1
- package/features/folders/getDescendantFolders/GetDescendantFoldersRepository.js +35 -35
- package/features/folders/getDescendantFolders/GetDescendantFoldersRepository.js.map +1 -1
- package/features/folders/getDescendantFolders/GetDescendantFoldersUseCase.js +13 -10
- package/features/folders/getDescendantFolders/GetDescendantFoldersUseCase.js.map +1 -1
- package/features/folders/getDescendantFolders/abstractions.js +3 -10
- package/features/folders/getDescendantFolders/abstractions.js.map +1 -1
- package/features/folders/getDescendantFolders/feature.js +14 -13
- package/features/folders/getDescendantFolders/feature.js.map +1 -1
- package/features/folders/getDescendantFolders/index.js +0 -2
- package/features/folders/getDescendantFolders/useGetDescendantFolders.js +6 -9
- package/features/folders/getDescendantFolders/useGetDescendantFolders.js.map +1 -1
- package/features/folders/getFolder/GetFolderGqlGateway.js +26 -31
- package/features/folders/getFolder/GetFolderGqlGateway.js.map +1 -1
- package/features/folders/getFolder/GetFolderRepository.js +18 -13
- package/features/folders/getFolder/GetFolderRepository.js.map +1 -1
- package/features/folders/getFolder/GetFolderUseCase.js +13 -10
- package/features/folders/getFolder/GetFolderUseCase.js.map +1 -1
- package/features/folders/getFolder/abstractions.js +4 -12
- package/features/folders/getFolder/abstractions.js.map +1 -1
- package/features/folders/getFolder/feature.js +15 -14
- package/features/folders/getFolder/feature.js.map +1 -1
- package/features/folders/getFolder/index.js +0 -2
- package/features/folders/getFolder/useGetFolder.js +6 -9
- package/features/folders/getFolder/useGetFolder.js.map +1 -1
- package/features/folders/getFolderAncestors/GetFolderAncestors.test.js +108 -103
- package/features/folders/getFolderAncestors/GetFolderAncestors.test.js.map +1 -1
- package/features/folders/getFolderAncestors/GetFolderAncestorsRepository.js +32 -30
- package/features/folders/getFolderAncestors/GetFolderAncestorsRepository.js.map +1 -1
- package/features/folders/getFolderAncestors/GetFolderAncestorsUseCase.js +13 -10
- package/features/folders/getFolderAncestors/GetFolderAncestorsUseCase.js.map +1 -1
- package/features/folders/getFolderAncestors/abstractions.js +3 -10
- package/features/folders/getFolderAncestors/abstractions.js.map +1 -1
- package/features/folders/getFolderAncestors/feature.js +14 -13
- package/features/folders/getFolderAncestors/feature.js.map +1 -1
- package/features/folders/getFolderAncestors/index.js +0 -2
- package/features/folders/getFolderAncestors/useGetFolderAncestors.js +6 -9
- package/features/folders/getFolderAncestors/useGetFolderAncestors.js.map +1 -1
- package/features/folders/getFolderExtensionsFields/GetFolderExtensionsFields.test.js +190 -160
- package/features/folders/getFolderExtensionsFields/GetFolderExtensionsFields.test.js.map +1 -1
- package/features/folders/getFolderExtensionsFields/GetFolderExtensionsFieldsUseCase.js +30 -29
- package/features/folders/getFolderExtensionsFields/GetFolderExtensionsFieldsUseCase.js.map +1 -1
- package/features/folders/getFolderExtensionsFields/abstractions.js +3 -8
- package/features/folders/getFolderExtensionsFields/abstractions.js.map +1 -1
- package/features/folders/getFolderExtensionsFields/feature.js +16 -18
- package/features/folders/getFolderExtensionsFields/feature.js.map +1 -1
- package/features/folders/getFolderExtensionsFields/filters/CmsNamespaceFilter.js +16 -17
- package/features/folders/getFolderExtensionsFields/filters/CmsNamespaceFilter.js.map +1 -1
- package/features/folders/getFolderExtensionsFields/filters/FmFileNamespaceFilter.js +13 -16
- package/features/folders/getFolderExtensionsFields/filters/FmFileNamespaceFilter.js.map +1 -1
- package/features/folders/getFolderExtensionsFields/filters/GlobalNamespaceFilter.js +7 -8
- package/features/folders/getFolderExtensionsFields/filters/GlobalNamespaceFilter.js.map +1 -1
- package/features/folders/getFolderExtensionsFields/index.js +0 -2
- package/features/folders/getFolderExtensionsFields/useFolderExtensionsFields.js +13 -14
- package/features/folders/getFolderExtensionsFields/useFolderExtensionsFields.js.map +1 -1
- package/features/folders/getFolderLevelPermission/GetFolderLevelPermission.test.js +135 -164
- package/features/folders/getFolderLevelPermission/GetFolderLevelPermission.test.js.map +1 -1
- package/features/folders/getFolderLevelPermission/GetFolderLevelPermissionUseCase.js +8 -7
- package/features/folders/getFolderLevelPermission/GetFolderLevelPermissionUseCase.js.map +1 -1
- package/features/folders/getFolderLevelPermission/abstractions.js +2 -1
- package/features/folders/getFolderLevelPermission/abstractions.js.map +1 -1
- package/features/folders/getFolderLevelPermission/decorators/GetFolderLevelPermissionWithFlpDecorator.js +17 -20
- package/features/folders/getFolderLevelPermission/decorators/GetFolderLevelPermissionWithFlpDecorator.js.map +1 -1
- package/features/folders/getFolderLevelPermission/feature.js +14 -16
- package/features/folders/getFolderLevelPermission/feature.js.map +1 -1
- package/features/folders/getFolderLevelPermission/index.js +0 -2
- package/features/folders/getFolderLevelPermission/useGetFolderLevelPermission.js +9 -10
- package/features/folders/getFolderLevelPermission/useGetFolderLevelPermission.js.map +1 -1
- package/features/folders/listFolders/ListFolders.test.js +98 -111
- package/features/folders/listFolders/ListFolders.test.js.map +1 -1
- package/features/folders/listFolders/ListFoldersGqlGateway.js +29 -27
- package/features/folders/listFolders/ListFoldersGqlGateway.js.map +1 -1
- package/features/folders/listFolders/ListFoldersRepository.js +19 -14
- package/features/folders/listFolders/ListFoldersRepository.js.map +1 -1
- package/features/folders/listFolders/ListFoldersUseCase.js +13 -10
- package/features/folders/listFolders/ListFoldersUseCase.js.map +1 -1
- package/features/folders/listFolders/ListFoldersUseCaseWithLoading.js +14 -11
- package/features/folders/listFolders/ListFoldersUseCaseWithLoading.js.map +1 -1
- package/features/folders/listFolders/abstractions.js +4 -3
- package/features/folders/listFolders/abstractions.js.map +1 -1
- package/features/folders/listFolders/feature.js +17 -23
- package/features/folders/listFolders/feature.js.map +1 -1
- package/features/folders/listFolders/index.js +0 -2
- package/features/folders/listFolders/useListFolders.js +35 -37
- package/features/folders/listFolders/useListFolders.js.map +1 -1
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.test.js +218 -203
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.test.js.map +1 -1
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsGqlGateway.js +31 -33
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsGqlGateway.js.map +1 -1
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepository.js +18 -13
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepository.js.map +1 -1
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCase.js +18 -15
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCase.js.map +1 -1
- package/features/folders/listFoldersByParentIds/abstractions.js +4 -3
- package/features/folders/listFoldersByParentIds/abstractions.js.map +1 -1
- package/features/folders/listFoldersByParentIds/decorators/RepositoryWithLoadedCache.js +20 -22
- package/features/folders/listFoldersByParentIds/decorators/RepositoryWithLoadedCache.js.map +1 -1
- package/features/folders/listFoldersByParentIds/decorators/UseCaseWithLoading.js +17 -18
- package/features/folders/listFoldersByParentIds/decorators/UseCaseWithLoading.js.map +1 -1
- package/features/folders/listFoldersByParentIds/feature.js +18 -26
- package/features/folders/listFoldersByParentIds/feature.js.map +1 -1
- package/features/folders/listFoldersByParentIds/index.js +0 -2
- package/features/folders/listFoldersByParentIds/useListFoldersByParentIds.js +40 -42
- package/features/folders/listFoldersByParentIds/useListFoldersByParentIds.js.map +1 -1
- package/features/folders/loadFolderHierarchy/LoadFolderHierarchy.test.js +134 -136
- package/features/folders/loadFolderHierarchy/LoadFolderHierarchy.test.js.map +1 -1
- package/features/folders/loadFolderHierarchy/LoadFolderHierarchyGqlGateway.js +31 -31
- package/features/folders/loadFolderHierarchy/LoadFolderHierarchyGqlGateway.js.map +1 -1
- package/features/folders/loadFolderHierarchy/LoadFolderHierarchyRepository.js +35 -40
- package/features/folders/loadFolderHierarchy/LoadFolderHierarchyRepository.js.map +1 -1
- package/features/folders/loadFolderHierarchy/LoadFolderHierarchyUseCase.js +13 -10
- package/features/folders/loadFolderHierarchy/LoadFolderHierarchyUseCase.js.map +1 -1
- package/features/folders/loadFolderHierarchy/LoadFolderHierarchyUseCaseWithLoading.js +14 -11
- package/features/folders/loadFolderHierarchy/LoadFolderHierarchyUseCaseWithLoading.js.map +1 -1
- package/features/folders/loadFolderHierarchy/abstractions.js +4 -3
- package/features/folders/loadFolderHierarchy/abstractions.js.map +1 -1
- package/features/folders/loadFolderHierarchy/feature.js +17 -23
- package/features/folders/loadFolderHierarchy/feature.js.map +1 -1
- package/features/folders/loadFolderHierarchy/index.js +0 -2
- package/features/folders/loadFolderHierarchy/useLoadFolderHierarchy.js +37 -42
- package/features/folders/loadFolderHierarchy/useLoadFolderHierarchy.js.map +1 -1
- package/features/folders/updateFolder/UpdateFolder.test.js +372 -384
- package/features/folders/updateFolder/UpdateFolder.test.js.map +1 -1
- package/features/folders/updateFolder/UpdateFolderGqlGateway.js +33 -45
- package/features/folders/updateFolder/UpdateFolderGqlGateway.js.map +1 -1
- package/features/folders/updateFolder/UpdateFolderRepository.js +26 -24
- package/features/folders/updateFolder/UpdateFolderRepository.js.map +1 -1
- package/features/folders/updateFolder/UpdateFolderUseCase.js +13 -10
- package/features/folders/updateFolder/UpdateFolderUseCase.js.map +1 -1
- package/features/folders/updateFolder/abstractions.js +4 -3
- package/features/folders/updateFolder/abstractions.js.map +1 -1
- package/features/folders/updateFolder/decorators/RepositoryWithPathChange.js +43 -64
- package/features/folders/updateFolder/decorators/RepositoryWithPathChange.js.map +1 -1
- package/features/folders/updateFolder/decorators/RepositoryWithPermissionsChange.js +44 -56
- package/features/folders/updateFolder/decorators/RepositoryWithPermissionsChange.js.map +1 -1
- package/features/folders/updateFolder/decorators/UseCaseWithLoading.js +14 -11
- package/features/folders/updateFolder/decorators/UseCaseWithLoading.js.map +1 -1
- package/features/folders/updateFolder/decorators/UseCaseWithoutInheritedPermissions.js +15 -15
- package/features/folders/updateFolder/decorators/UseCaseWithoutInheritedPermissions.js.map +1 -1
- package/features/folders/updateFolder/feature.js +20 -28
- package/features/folders/updateFolder/feature.js.map +1 -1
- package/features/folders/updateFolder/index.js +0 -2
- package/features/folders/updateFolder/useUpdateFolder.js +17 -19
- package/features/folders/updateFolder/useUpdateFolder.js.map +1 -1
- package/graphql/app.gql.js +3 -4
- package/graphql/app.gql.js.map +1 -1
- package/graphql/records/common.js +41 -39
- package/graphql/records/common.js.map +1 -1
- package/graphql/records/getRecord.js +2 -3
- package/graphql/records/getRecord.js.map +1 -1
- package/graphql/records/listRecords.js +22 -13
- package/graphql/records/listRecords.js.map +1 -1
- package/graphql/records/moveRecord.js +5 -6
- package/graphql/records/moveRecord.js.map +1 -1
- package/graphql/records/types.js +0 -3
- package/graphql/records.gql.js +0 -2
- package/handlers.js +17 -40
- package/handlers.js.map +1 -1
- package/hooks/index.js +0 -2
- package/hooks/useAcoApp.js +11 -12
- package/hooks/useAcoApp.js.map +1 -1
- package/hooks/useAcoList.js +5 -6
- package/hooks/useAcoList.js.map +1 -1
- package/hooks/useFolder.js +6 -7
- package/hooks/useFolder.js.map +1 -1
- package/hooks/useFolderModel.js +11 -13
- package/hooks/useFolderModel.js.map +1 -1
- package/hooks/useFoldersType.js +7 -12
- package/hooks/useFoldersType.js.map +1 -1
- package/hooks/useNavigateFolder.js +5 -6
- package/hooks/useNavigateFolder.js.map +1 -1
- package/hooks/useRecords.js +56 -77
- package/hooks/useRecords.js.map +1 -1
- package/hooks/useTags.js +21 -30
- package/hooks/useTags.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.js +3 -8
- package/package.json +21 -21
- package/presentation/folderTree/FolderTree.d.ts +19 -0
- package/presentation/folderTree/FolderTree.js +252 -0
- package/presentation/folderTree/FolderTree.js.map +1 -0
- package/presentation/folderTree/FolderTreeFieldRenderer.d.ts +13 -0
- package/presentation/folderTree/FolderTreeFieldRenderer.js +23 -0
- package/presentation/folderTree/FolderTreeFieldRenderer.js.map +1 -0
- package/presentation/folderTree/FolderTreePresenter.d.ts +51 -0
- package/presentation/folderTree/FolderTreePresenter.js +303 -0
- package/presentation/folderTree/FolderTreePresenter.js.map +1 -0
- package/presentation/folderTree/FolderTreePresenter.test.d.ts +1 -0
- package/presentation/folderTree/FolderTreePresenter.test.js +517 -0
- package/presentation/folderTree/FolderTreePresenter.test.js.map +1 -0
- package/presentation/folderTree/abstractions.d.ts +65 -0
- package/presentation/folderTree/abstractions.js +5 -0
- package/presentation/folderTree/abstractions.js.map +1 -0
- package/presentation/folderTree/feature.d.ts +3 -0
- package/presentation/folderTree/feature.js +17 -0
- package/presentation/folderTree/feature.js.map +1 -0
- package/presentation/folderTree/index.d.ts +5 -0
- package/presentation/folderTree/index.js +3 -0
- package/sorting.js +25 -28
- package/sorting.js.map +1 -1
- package/static/svg/folder-shared-icon.5d947e49.svg +5 -0
- package/static/svg/folder.f3d5c400.svg +4 -0
- package/table.types.js +0 -3
- package/types.js +10 -13
- package/types.js.map +1 -1
- package/components/Actions/DeleteFolder/index.js.map +0 -1
- package/components/Actions/EditFolder/index.js.map +0 -1
- package/components/Actions/SetFolderPemissions/index.js.map +0 -1
- package/components/Actions/index.js.map +0 -1
- package/components/AdvancedSearch/Button/index.js.map +0 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/index.js.map +0 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/index.js.map +0 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/index.js.map +0 -1
- package/components/AdvancedSearch/QueryBuilderDrawer/index.js.map +0 -1
- package/components/AdvancedSearch/QueryManagerDialog/components/index.js.map +0 -1
- package/components/AdvancedSearch/QueryManagerDialog/index.js.map +0 -1
- package/components/AdvancedSearch/QuerySaverDialog/index.js.map +0 -1
- package/components/AdvancedSearch/SelectedFilter/index.js.map +0 -1
- package/components/AdvancedSearch/domain/index.js.map +0 -1
- package/components/AdvancedSearch/fields/index.js.map +0 -1
- package/components/AdvancedSearch/gateways/FiltersGatewayInterface.js.map +0 -1
- package/components/AdvancedSearch/gateways/filters.types.js.map +0 -1
- package/components/AdvancedSearch/gateways/index.js.map +0 -1
- package/components/Extensions/index.js.map +0 -1
- package/components/FolderGrid/index.js.map +0 -1
- package/components/FolderIcons/index.js.map +0 -1
- package/components/FolderTree/ButtonCreate/index.js.map +0 -1
- package/components/FolderTree/Empty/index.js.map +0 -1
- package/components/FolderTree/List/index.js.map +0 -1
- package/components/FolderTree/Loader/index.js.map +0 -1
- package/components/FolderTree/MenuActions/index.js.map +0 -1
- package/components/FolderTree/Node/index.js.map +0 -1
- package/components/FolderTree/NodePreview/index.js.map +0 -1
- package/components/Search/index.js.map +0 -1
- package/components/Table/components/Table/ColumnVisibility/IColumnsVisibilityRepository.js.map +0 -1
- package/components/Table/components/Table/ColumnVisibility/IColumnsVisibilityUpdater.js.map +0 -1
- package/components/Table/components/Table/ColumnVisibility/index.js.map +0 -1
- package/components/Table/components/Table/Columns/IColumnsRepository.js.map +0 -1
- package/components/Table/components/Table/Columns/index.js.map +0 -1
- package/components/Table/components/Table/gateways/IColumnsVisibilityGateway.js.map +0 -1
- package/components/Table/components/Table/gateways/index.js.map +0 -1
- package/components/Table/components/Table/index.js.map +0 -1
- package/components/Table/components/index.js.map +0 -1
- package/components/Table/index.js.map +0 -1
- package/components/index.js.map +0 -1
- package/config/index.js.map +0 -1
- package/constants.js.map +0 -1
- package/contexts/index.js.map +0 -1
- package/dialogs/index.js.map +0 -1
- package/domain/folder/FolderDto.js.map +0 -1
- package/exports/admin/aco.js.map +0 -1
- package/exports/admin/ui.js.map +0 -1
- package/features/folders/cache/ListCache.js.map +0 -1
- package/features/folders/cache/index.js.map +0 -1
- package/features/folders/createFolder/index.js.map +0 -1
- package/features/folders/deleteFolder/index.js.map +0 -1
- package/features/folders/folderModelProvider/FolderModelDto.js.map +0 -1
- package/features/folders/folderModelProvider/index.js.map +0 -1
- package/features/folders/getDescendantFolders/index.js.map +0 -1
- package/features/folders/getFolder/index.js.map +0 -1
- package/features/folders/getFolderAncestors/index.js.map +0 -1
- package/features/folders/getFolderExtensionsFields/index.js.map +0 -1
- package/features/folders/getFolderLevelPermission/index.js.map +0 -1
- package/features/folders/listFolders/index.js.map +0 -1
- package/features/folders/listFoldersByParentIds/index.js.map +0 -1
- package/features/folders/loadFolderHierarchy/index.js.map +0 -1
- package/features/folders/updateFolder/index.js.map +0 -1
- package/graphql/records/types.js.map +0 -1
- package/graphql/records.gql.js.map +0 -1
- package/hooks/index.js.map +0 -1
- package/index.js.map +0 -1
- package/table.types.js.map +0 -1
package/contexts/acoList.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useContext","useEffect","useMemo","dotPropImmutable","pick","useStateIfMounted","useSecurity","useGetDescendantFolders","useListFoldersByParentIds","useLoadFolderHierarchy","useAcoApp","useNavigateFolder","FoldersContext","SearchRecordsContext","sortTableItems","validateOrGetDefaultDbSort","ROOT_FOLDER","AcoListContext","createContext","undefined","initializeAcoListState","after","filters","folderId","isSearch","limit","listSort","searchQuery","selected","showingFilters","showingSelectAll","isSelectedAll","getCurrentFolderList","folders","currentFolderId","toLowerCase","filter","folder","parentId","getCurrentRecordList","records","folderIdPath","record","get","AcoListProvider","children","props","identity","folderIdInPath","originalFolders","loadFolderHierarchy","getDescendantFolders","listFoldersByParentIds","folderContext","searchContext","Error","setFolders","setRecords","listTitle","setListTitle","state","setState","originalRecords","loading","recordsLoading","listRecords","meta","length","currentFolder","find","id","title","subFolders","subRecords","prev","titleField","titleFieldId","listMoreRecords","hasMoreItems","cursor","getWhere","where","descendantFolderIds","map","set","createdBy","own","buildListParams","Boolean","Object","values","params","sort","search","listItems","result","refresh","folderWithChildren","foldersLength","recordsLength","selectedLength","folderWithChildrenLength","getAllRecordsAreSelected","prevState","context","isListLoading","INIT","LIST","isListLoadingMore","LIST_MORE","setSearchQuery","query","setFilters","data","fromEntries","entries","value","keys","setListSort","setSelected","hideFilters","showFilters","selectAll","unselectAll","createElement","Provider"],"sources":["acoList.tsx"],"sourcesContent":["import React, { useCallback, useContext, useEffect, useMemo } from \"react\";\nimport dotPropImmutable from \"dot-prop-immutable\";\nimport pick from \"lodash/pick.js\";\nimport { useStateIfMounted } from \"@webiny/app-admin\";\nimport { useSecurity } from \"@webiny/app-admin\";\nimport type { FolderDto } from \"~/domain/folder/FolderDto.js\";\nimport { useGetDescendantFolders } from \"~/features/folders/getDescendantFolders/index.js\";\nimport { useListFoldersByParentIds } from \"~/features/folders/listFoldersByParentIds/index.js\";\nimport { useLoadFolderHierarchy } from \"~/features/folders/loadFolderHierarchy/index.js\";\nimport type {\n GenericSearchData,\n ListMeta,\n ListSearchRecordsQueryVariables,\n ListSearchRecordsSort,\n SearchRecordItem\n} from \"~/types.js\";\nimport { useAcoApp, useNavigateFolder } from \"~/hooks/index.js\";\nimport { FoldersContext } from \"~/contexts/folders.js\";\nimport { SearchRecordsContext } from \"~/contexts/records.js\";\nimport { sortTableItems, validateOrGetDefaultDbSort } from \"~/sorting.js\";\nimport { ROOT_FOLDER } from \"~/constants.js\";\n\nexport interface AcoListContextData<T> {\n currentFolder?: FolderDto;\n folders: FolderDto[];\n hideFilters: () => void;\n isListLoading: boolean;\n isListLoadingMore: boolean;\n isSearch: boolean;\n listMoreRecords: () => void;\n listTitle?: string;\n meta: ListMeta;\n records: T[];\n selected: T[];\n setFilters: (data: Record<string, any>) => void;\n setListSort: (state: ListSearchRecordsSort) => void;\n setSearchQuery: (query: string) => void;\n setSelected: (selected: T[]) => void;\n showFilters: () => void;\n showingFilters: boolean;\n showingSelectAll: boolean;\n searchQuery: string;\n isSelectedAll: boolean;\n selectAll: () => void;\n unselectAll: () => void;\n getWhere: () => Record<string, any>;\n refresh: () => Promise<void>;\n}\n\nexport const AcoListContext = React.createContext<\n AcoListContextData<GenericSearchData> | undefined\n>(undefined);\n\nexport interface State<T> {\n after?: string;\n filters?: Record<string, any>;\n folderId?: string;\n isSearch: boolean;\n limit: number;\n listSort: ListSearchRecordsSort;\n searchQuery: string;\n selected: T[];\n showingFilters: boolean;\n showingSelectAll: boolean;\n isSelectedAll: boolean;\n}\n\nconst initializeAcoListState = (): State<GenericSearchData> => {\n return {\n after: undefined,\n filters: undefined,\n folderId: undefined,\n isSearch: false,\n limit: 50,\n listSort: [],\n searchQuery: \"\",\n selected: [],\n showingFilters: false,\n showingSelectAll: false,\n isSelectedAll: false\n };\n};\n\nconst getCurrentFolderList = (\n folders?: FolderDto[] | null,\n currentFolderId?: string\n): FolderDto[] | [] => {\n if (!folders) {\n return [];\n }\n if (!currentFolderId || currentFolderId.toLowerCase() === ROOT_FOLDER) {\n return folders.filter(\n folder => !folder.parentId || folder.parentId.toLowerCase() === ROOT_FOLDER\n );\n }\n return folders.filter(folder => folder.parentId === currentFolderId);\n};\n\nconst getCurrentRecordList = <T extends GenericSearchData = GenericSearchData>(\n records: SearchRecordItem<T>[],\n folderIdPath: string,\n currentFolderId?: string\n): SearchRecordItem<T>[] => {\n if (!records) {\n return [];\n }\n\n if (!currentFolderId) {\n return records;\n }\n\n return records.filter(\n (record): record is SearchRecordItem<T> =>\n dotPropImmutable.get(record, folderIdPath) === currentFolderId\n );\n};\n\nexport interface AcoListProviderProps {\n children: React.ReactNode;\n own?: boolean;\n titleFieldId: string | null;\n}\n\nexport const AcoListProvider = ({ children, ...props }: AcoListProviderProps) => {\n const { identity } = useSecurity();\n const { currentFolderId } = useNavigateFolder();\n const { folderIdPath, folderIdInPath } = useAcoApp();\n const { folders: originalFolders, loadFolderHierarchy } = useLoadFolderHierarchy();\n const { getDescendantFolders } = useGetDescendantFolders();\n const { listFoldersByParentIds } = useListFoldersByParentIds();\n const folderContext = useContext(FoldersContext);\n const searchContext = useContext(SearchRecordsContext);\n\n if (!folderContext || !searchContext) {\n throw new Error(\"useAcoList must be used within a ACOProvider\");\n }\n\n const [folders, setFolders] = useStateIfMounted<FolderDto[]>([]);\n const [records, setRecords] = useStateIfMounted<SearchRecordItem[]>([]);\n const [listTitle, setListTitle] = useStateIfMounted<string | undefined>(undefined);\n const [state, setState] = useStateIfMounted<State<GenericSearchData>>(initializeAcoListState());\n\n const { records: originalRecords, loading: recordsLoading, listRecords, meta } = searchContext;\n\n /**\n * On first mount, call `getFolderHierarchy` and `setState`, which will either issue a network request, or load folders and records from cache.\n * We don't need to store the result of it to any local state; that is managed by the context provider.\n *\n * We don't call `listRecords` directly, instead we call `setState` making it the only driver to fetch records from the apis.\n */\n useEffect(() => {\n // The folders collection is empty, it must be the first render, let's load the full hierarchy.\n if (folders.length === 0) {\n loadFolderHierarchy(currentFolderId);\n } else {\n // Otherwise let's load only the current folder sub-tree\n listFoldersByParentIds([currentFolderId]);\n }\n\n setState(state => {\n return {\n ...state,\n after: undefined,\n filters: undefined,\n folderId: currentFolderId,\n isSearch: false,\n searchQuery: \"\",\n selected: [],\n showingFilters: false,\n showingSelectAll: false,\n isSelectedAll: false\n };\n });\n }, [currentFolderId]);\n\n /**\n * Any time we receive a `folders` list update:\n * - we set an empty array in case of search;\n * - we set the list filtered by the current `type` and parent `folderId`, sorted according to the current `sort` value;\n * - we set the current folder name.\n */\n useEffect(() => {\n const currentFolder = originalFolders?.find(\n folder => folder.id === (state.folderId || ROOT_FOLDER)\n );\n\n setListTitle(currentFolder?.title);\n\n if (state.isSearch) {\n setFolders([]);\n return;\n }\n\n const subFolders = getCurrentFolderList(originalFolders, state.folderId);\n setFolders(() => {\n return sortTableItems(subFolders, state.listSort);\n });\n }, [originalFolders, state.folderId, state.isSearch]);\n\n /**\n * Any time we receive a `records` list or `folderId` update:\n * - we set all `records` in case of search query;\n * - we set the `records` list filtered by the current `folderId`.\n */\n useEffect(() => {\n if (state.isSearch) {\n setRecords(originalRecords as SearchRecordItem[]);\n return;\n }\n\n const subRecords = getCurrentRecordList(\n originalRecords as SearchRecordItem[],\n folderIdPath,\n state.folderId\n );\n setRecords(subRecords);\n }, [originalRecords, state.folderId, state.isSearch]);\n\n /**\n * Any time we receive a new `sort` value:\n * - we sort the current `folders` list according to `sorting` value;\n */\n useEffect(() => {\n setFolders(prev => {\n const titleField = props?.titleFieldId || \"id\";\n return sortTableItems(prev, state.listSort, {\n [titleField]: \"title\"\n });\n });\n }, [state.listSort]);\n\n /**\n * Utility function to list/load more records, the `meta` state is tracked internally.\n */\n const listMoreRecords = useCallback(() => {\n const { hasMoreItems, cursor } = meta;\n if (hasMoreItems && cursor) {\n setState(state => ({ ...state, after: cursor }));\n }\n }, [meta]);\n\n /**\n * Constructs a \"where\" condition object based on the current state and properties.\n *\n * This function creates a \"where\" object used to filter data based on the current folder ID,\n * ownership status, and other existing filters in the state.\n *\n * @returns {Object} A \"where\" condition object containing filters for querying data.\n */\n const getWhere = useCallback(() => {\n // Initialize an empty object\n let where = {};\n\n if (!state.folderId) {\n return where;\n }\n\n // Check if the current folder ID is not the ROOT_FOLDER folder\n if (state.folderId !== ROOT_FOLDER) {\n // Get descendant folder IDs of the current folder\n const descendantFolderIds = getDescendantFolders(state.folderId).map(\n folder => folder.id\n );\n\n // Set the locationWhere object with descendant folder IDs\n where = dotPropImmutable.set({}, folderIdInPath, descendantFolderIds);\n }\n\n return {\n createdBy: props.own ? identity.id : undefined, // Set 'createdBy' based on the ownership status\n ...state.filters, // Merge existing filters into the 'where' condition\n ...where // Include where condition if applicable\n };\n }, [folders, state.folderId, state.filters, props.own, identity]);\n\n const buildListParams = useCallback((): {\n params: ListSearchRecordsQueryVariables;\n isSearch: boolean;\n } | null => {\n if (!state.folderId) {\n return null;\n }\n\n const isSearch = Boolean(\n state.searchQuery ||\n (state.filters && Object.values(state.filters).filter(Boolean).length)\n );\n\n let where = dotPropImmutable.set({}, folderIdPath, state.folderId);\n\n // In case of a search or filters applied, let's get the where condition based on the current folder ID,\n // ownership status, and other existing filters in the state.\n if (isSearch) {\n where = getWhere();\n }\n\n return {\n params: {\n limit: state.limit,\n sort: validateOrGetDefaultDbSort(state.listSort),\n search: state.searchQuery,\n after: state.after,\n where\n },\n isSearch\n };\n }, [\n state.folderId,\n state.filters,\n state.searchQuery,\n state.after,\n state.listSort,\n state.limit,\n getWhere,\n folderIdPath\n ]);\n\n /**\n * Any time we receive new useful `state` params:\n * - we fetch records according to the new params\n */\n useEffect(() => {\n const listItems = async () => {\n const result = buildListParams();\n if (!result) {\n return;\n }\n\n await listRecords(result.params);\n\n setState(state => ({ ...state, isSearch: result.isSearch }));\n };\n\n listItems();\n }, [\n state.folderId,\n state.filters,\n state.searchQuery,\n state.after,\n state.listSort,\n state.limit,\n props.own,\n identity\n ]);\n\n const refresh = useCallback(async () => {\n const result = buildListParams();\n if (!result) {\n return;\n }\n\n await listRecords(result.params);\n }, [buildListParams, listRecords]);\n\n /**\n * useEffect hook to determine if the \"Select All\" option should be displayed based on the current state and meta properties:\n * - if in the root folder with no folders, checks if all records are selected.\n * - if in a non-root folder with multiple descendant folders, checks if all records are selected.\n * - if there are more items to load, checks if all records are selected.\n */\n useEffect(() => {\n // Destructure relevant properties from state and meta\n const { selected, folderId } = state;\n const { hasMoreItems } = meta;\n\n // Retrieve all descendant folders of the current folderId\n const folderWithChildren = folderId ? getDescendantFolders(folderId) : [];\n\n // Compute the lengths of various arrays for later comparisons\n const foldersLength = folders.length;\n const recordsLength = records.length;\n const selectedLength = selected.length;\n const folderWithChildrenLength = folderWithChildren.length;\n\n // Function to determine if all records are selected\n const getAllRecordsAreSelected = () => !!recordsLength && recordsLength === selectedLength;\n\n // Initialize a flag to determine if the \"Select All\" option should be shown\n let showingSelectAll = false;\n\n // If in the root folder and there are some folders, check if all records are selected\n if (folderId === ROOT_FOLDER && foldersLength > 0) {\n showingSelectAll = getAllRecordsAreSelected();\n }\n\n // If not in the root folder and there are multiple descendant folders, check if all records are selected\n if (folderId !== ROOT_FOLDER && folderWithChildrenLength > 1) {\n showingSelectAll = getAllRecordsAreSelected();\n }\n\n // If there are more items to load, check if all records are selected\n if (hasMoreItems) {\n showingSelectAll = getAllRecordsAreSelected();\n }\n\n // Update the component's state based on the computed showingSelectAll flag\n setState(prevState => {\n // Only update if there is a change in showingSelectAll or if isSelectedAll was true previously\n if (!prevState.isSelectedAll && prevState.showingSelectAll === showingSelectAll) {\n return prevState;\n }\n\n // Return the new state with updated showingSelectAll and reset isSelectedAll to false\n return {\n ...prevState,\n isSelectedAll: false,\n showingSelectAll\n };\n });\n }, [\n records.length,\n folders.length,\n state.isSearch,\n meta.hasMoreItems,\n state.selected.length,\n state.folderId\n ]);\n\n const currentFolder = useMemo(() => {\n return originalFolders?.find(folder => folder.id === currentFolderId);\n }, [originalFolders, currentFolderId]);\n\n const context: AcoListContextData<GenericSearchData> = {\n ...pick(state, [\n \"isSearch\",\n \"searchQuery\",\n \"selected\",\n \"showingFilters\",\n \"showingSelectAll\",\n \"isSelectedAll\"\n ]),\n folders,\n currentFolder,\n records,\n listTitle,\n isListLoading: Boolean(recordsLoading.INIT || recordsLoading.LIST),\n isListLoadingMore: Boolean(recordsLoading.LIST_MORE),\n meta,\n setSearchQuery(query) {\n setState(state => ({ ...state, searchQuery: query, after: undefined }));\n },\n setFilters(data) {\n setState(state => ({ ...state, filters: data, after: undefined }));\n // Create filters object excluding entries with `undefined` values\n const filters = Object.fromEntries(\n Object.entries(data).filter(([, value]) => value !== undefined)\n );\n\n setState(state => ({\n ...state,\n filters: Object.keys(filters).length ? filters : undefined,\n after: undefined\n }));\n },\n setListSort(sort: ListSearchRecordsSort) {\n setState(state => ({ ...state, listSort: sort, after: undefined }));\n },\n setSelected(selected) {\n setState(state => ({ ...state, selected }));\n },\n hideFilters() {\n setState(state => ({\n ...state,\n filters: undefined,\n showingFilters: false,\n after: undefined\n }));\n },\n showFilters() {\n setState(state => ({ ...state, showingFilters: true }));\n },\n selectAll() {\n setState(state => ({ ...state, isSelectedAll: true }));\n },\n unselectAll() {\n setState(state => ({\n ...state,\n selected: [],\n isSelectedAll: false\n }));\n },\n getWhere,\n listMoreRecords,\n refresh\n };\n\n return <AcoListContext.Provider value={context}>{children}</AcoListContext.Provider>;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"contexts/acoList.js","sources":["../../src/contexts/acoList.tsx"],"sourcesContent":["import React, { useCallback, useContext, useEffect, useMemo } from \"react\";\nimport dotPropImmutable from \"dot-prop-immutable\";\nimport pick from \"lodash/pick.js\";\nimport { useStateIfMounted } from \"@webiny/app-admin\";\nimport { useSecurity } from \"@webiny/app-admin\";\nimport type { FolderDto } from \"~/domain/folder/FolderDto.js\";\nimport { useGetDescendantFolders } from \"~/features/folders/getDescendantFolders/index.js\";\nimport { useListFoldersByParentIds } from \"~/features/folders/listFoldersByParentIds/index.js\";\nimport { useLoadFolderHierarchy } from \"~/features/folders/loadFolderHierarchy/index.js\";\nimport type {\n GenericSearchData,\n ListMeta,\n ListSearchRecordsQueryVariables,\n ListSearchRecordsSort,\n SearchRecordItem\n} from \"~/types.js\";\nimport { useAcoApp, useNavigateFolder } from \"~/hooks/index.js\";\nimport { FoldersContext } from \"~/contexts/folders.js\";\nimport { SearchRecordsContext } from \"~/contexts/records.js\";\nimport { sortTableItems, validateOrGetDefaultDbSort } from \"~/sorting.js\";\nimport { ROOT_FOLDER } from \"~/constants.js\";\n\nexport interface AcoListContextData<T> {\n currentFolder?: FolderDto;\n folders: FolderDto[];\n hideFilters: () => void;\n isListLoading: boolean;\n isListLoadingMore: boolean;\n isSearch: boolean;\n listMoreRecords: () => void;\n listTitle?: string;\n meta: ListMeta;\n records: T[];\n selected: T[];\n setFilters: (data: Record<string, any>) => void;\n setListSort: (state: ListSearchRecordsSort) => void;\n setSearchQuery: (query: string) => void;\n setSelected: (selected: T[]) => void;\n showFilters: () => void;\n showingFilters: boolean;\n showingSelectAll: boolean;\n searchQuery: string;\n isSelectedAll: boolean;\n selectAll: () => void;\n unselectAll: () => void;\n getWhere: () => Record<string, any>;\n refresh: () => Promise<void>;\n}\n\nexport const AcoListContext = React.createContext<\n AcoListContextData<GenericSearchData> | undefined\n>(undefined);\n\nexport interface State<T> {\n after?: string;\n filters?: Record<string, any>;\n folderId?: string;\n isSearch: boolean;\n limit: number;\n listSort: ListSearchRecordsSort;\n searchQuery: string;\n selected: T[];\n showingFilters: boolean;\n showingSelectAll: boolean;\n isSelectedAll: boolean;\n}\n\nconst initializeAcoListState = (): State<GenericSearchData> => {\n return {\n after: undefined,\n filters: undefined,\n folderId: undefined,\n isSearch: false,\n limit: 50,\n listSort: [],\n searchQuery: \"\",\n selected: [],\n showingFilters: false,\n showingSelectAll: false,\n isSelectedAll: false\n };\n};\n\nconst getCurrentFolderList = (\n folders?: FolderDto[] | null,\n currentFolderId?: string\n): FolderDto[] | [] => {\n if (!folders) {\n return [];\n }\n if (!currentFolderId || currentFolderId.toLowerCase() === ROOT_FOLDER) {\n return folders.filter(\n folder => !folder.parentId || folder.parentId.toLowerCase() === ROOT_FOLDER\n );\n }\n return folders.filter(folder => folder.parentId === currentFolderId);\n};\n\nconst getCurrentRecordList = <T extends GenericSearchData = GenericSearchData>(\n records: SearchRecordItem<T>[],\n folderIdPath: string,\n currentFolderId?: string\n): SearchRecordItem<T>[] => {\n if (!records) {\n return [];\n }\n\n if (!currentFolderId) {\n return records;\n }\n\n return records.filter(\n (record): record is SearchRecordItem<T> =>\n dotPropImmutable.get(record, folderIdPath) === currentFolderId\n );\n};\n\nexport interface AcoListProviderProps {\n children: React.ReactNode;\n own?: boolean;\n titleFieldId: string | null;\n}\n\nexport const AcoListProvider = ({ children, ...props }: AcoListProviderProps) => {\n const { identity } = useSecurity();\n const { currentFolderId } = useNavigateFolder();\n const { folderIdPath, folderIdInPath } = useAcoApp();\n const { folders: originalFolders, loadFolderHierarchy } = useLoadFolderHierarchy();\n const { getDescendantFolders } = useGetDescendantFolders();\n const { listFoldersByParentIds } = useListFoldersByParentIds();\n const folderContext = useContext(FoldersContext);\n const searchContext = useContext(SearchRecordsContext);\n\n if (!folderContext || !searchContext) {\n throw new Error(\"useAcoList must be used within a ACOProvider\");\n }\n\n const [folders, setFolders] = useStateIfMounted<FolderDto[]>([]);\n const [records, setRecords] = useStateIfMounted<SearchRecordItem[]>([]);\n const [listTitle, setListTitle] = useStateIfMounted<string | undefined>(undefined);\n const [state, setState] = useStateIfMounted<State<GenericSearchData>>(initializeAcoListState());\n\n const { records: originalRecords, loading: recordsLoading, listRecords, meta } = searchContext;\n\n /**\n * On first mount, call `getFolderHierarchy` and `setState`, which will either issue a network request, or load folders and records from cache.\n * We don't need to store the result of it to any local state; that is managed by the context provider.\n *\n * We don't call `listRecords` directly, instead we call `setState` making it the only driver to fetch records from the apis.\n */\n useEffect(() => {\n // The folders collection is empty, it must be the first render, let's load the full hierarchy.\n if (folders.length === 0) {\n loadFolderHierarchy(currentFolderId);\n } else {\n // Otherwise let's load only the current folder sub-tree\n listFoldersByParentIds([currentFolderId]);\n }\n\n setState(state => {\n return {\n ...state,\n after: undefined,\n filters: undefined,\n folderId: currentFolderId,\n isSearch: false,\n searchQuery: \"\",\n selected: [],\n showingFilters: false,\n showingSelectAll: false,\n isSelectedAll: false\n };\n });\n }, [currentFolderId]);\n\n /**\n * Any time we receive a `folders` list update:\n * - we set an empty array in case of search;\n * - we set the list filtered by the current `type` and parent `folderId`, sorted according to the current `sort` value;\n * - we set the current folder name.\n */\n useEffect(() => {\n const currentFolder = originalFolders?.find(\n folder => folder.id === (state.folderId || ROOT_FOLDER)\n );\n\n setListTitle(currentFolder?.title);\n\n if (state.isSearch) {\n setFolders([]);\n return;\n }\n\n const subFolders = getCurrentFolderList(originalFolders, state.folderId);\n setFolders(() => {\n return sortTableItems(subFolders, state.listSort);\n });\n }, [originalFolders, state.folderId, state.isSearch]);\n\n /**\n * Any time we receive a `records` list or `folderId` update:\n * - we set all `records` in case of search query;\n * - we set the `records` list filtered by the current `folderId`.\n */\n useEffect(() => {\n if (state.isSearch) {\n setRecords(originalRecords as SearchRecordItem[]);\n return;\n }\n\n const subRecords = getCurrentRecordList(\n originalRecords as SearchRecordItem[],\n folderIdPath,\n state.folderId\n );\n setRecords(subRecords);\n }, [originalRecords, state.folderId, state.isSearch]);\n\n /**\n * Any time we receive a new `sort` value:\n * - we sort the current `folders` list according to `sorting` value;\n */\n useEffect(() => {\n setFolders(prev => {\n const titleField = props?.titleFieldId || \"id\";\n return sortTableItems(prev, state.listSort, {\n [titleField]: \"title\"\n });\n });\n }, [state.listSort]);\n\n /**\n * Utility function to list/load more records, the `meta` state is tracked internally.\n */\n const listMoreRecords = useCallback(() => {\n const { hasMoreItems, cursor } = meta;\n if (hasMoreItems && cursor) {\n setState(state => ({ ...state, after: cursor }));\n }\n }, [meta]);\n\n /**\n * Constructs a \"where\" condition object based on the current state and properties.\n *\n * This function creates a \"where\" object used to filter data based on the current folder ID,\n * ownership status, and other existing filters in the state.\n *\n * @returns {Object} A \"where\" condition object containing filters for querying data.\n */\n const getWhere = useCallback(() => {\n // Initialize an empty object\n let where = {};\n\n if (!state.folderId) {\n return where;\n }\n\n // Check if the current folder ID is not the ROOT_FOLDER folder\n if (state.folderId !== ROOT_FOLDER) {\n // Get descendant folder IDs of the current folder\n const descendantFolderIds = getDescendantFolders(state.folderId).map(\n folder => folder.id\n );\n\n // Set the locationWhere object with descendant folder IDs\n where = dotPropImmutable.set({}, folderIdInPath, descendantFolderIds);\n }\n\n return {\n createdBy: props.own ? identity.id : undefined, // Set 'createdBy' based on the ownership status\n ...state.filters, // Merge existing filters into the 'where' condition\n ...where // Include where condition if applicable\n };\n }, [folders, state.folderId, state.filters, props.own, identity]);\n\n const buildListParams = useCallback((): {\n params: ListSearchRecordsQueryVariables;\n isSearch: boolean;\n } | null => {\n if (!state.folderId) {\n return null;\n }\n\n const isSearch = Boolean(\n state.searchQuery ||\n (state.filters && Object.values(state.filters).filter(Boolean).length)\n );\n\n let where = dotPropImmutable.set({}, folderIdPath, state.folderId);\n\n // In case of a search or filters applied, let's get the where condition based on the current folder ID,\n // ownership status, and other existing filters in the state.\n if (isSearch) {\n where = getWhere();\n }\n\n return {\n params: {\n limit: state.limit,\n sort: validateOrGetDefaultDbSort(state.listSort),\n search: state.searchQuery,\n after: state.after,\n where\n },\n isSearch\n };\n }, [\n state.folderId,\n state.filters,\n state.searchQuery,\n state.after,\n state.listSort,\n state.limit,\n getWhere,\n folderIdPath\n ]);\n\n /**\n * Any time we receive new useful `state` params:\n * - we fetch records according to the new params\n */\n useEffect(() => {\n const listItems = async () => {\n const result = buildListParams();\n if (!result) {\n return;\n }\n\n await listRecords(result.params);\n\n setState(state => ({ ...state, isSearch: result.isSearch }));\n };\n\n listItems();\n }, [\n state.folderId,\n state.filters,\n state.searchQuery,\n state.after,\n state.listSort,\n state.limit,\n props.own,\n identity\n ]);\n\n const refresh = useCallback(async () => {\n const result = buildListParams();\n if (!result) {\n return;\n }\n\n await listRecords(result.params);\n }, [buildListParams, listRecords]);\n\n /**\n * useEffect hook to determine if the \"Select All\" option should be displayed based on the current state and meta properties:\n * - if in the root folder with no folders, checks if all records are selected.\n * - if in a non-root folder with multiple descendant folders, checks if all records are selected.\n * - if there are more items to load, checks if all records are selected.\n */\n useEffect(() => {\n // Destructure relevant properties from state and meta\n const { selected, folderId } = state;\n const { hasMoreItems } = meta;\n\n // Retrieve all descendant folders of the current folderId\n const folderWithChildren = folderId ? getDescendantFolders(folderId) : [];\n\n // Compute the lengths of various arrays for later comparisons\n const foldersLength = folders.length;\n const recordsLength = records.length;\n const selectedLength = selected.length;\n const folderWithChildrenLength = folderWithChildren.length;\n\n // Function to determine if all records are selected\n const getAllRecordsAreSelected = () => !!recordsLength && recordsLength === selectedLength;\n\n // Initialize a flag to determine if the \"Select All\" option should be shown\n let showingSelectAll = false;\n\n // If in the root folder and there are some folders, check if all records are selected\n if (folderId === ROOT_FOLDER && foldersLength > 0) {\n showingSelectAll = getAllRecordsAreSelected();\n }\n\n // If not in the root folder and there are multiple descendant folders, check if all records are selected\n if (folderId !== ROOT_FOLDER && folderWithChildrenLength > 1) {\n showingSelectAll = getAllRecordsAreSelected();\n }\n\n // If there are more items to load, check if all records are selected\n if (hasMoreItems) {\n showingSelectAll = getAllRecordsAreSelected();\n }\n\n // Update the component's state based on the computed showingSelectAll flag\n setState(prevState => {\n // Only update if there is a change in showingSelectAll or if isSelectedAll was true previously\n if (!prevState.isSelectedAll && prevState.showingSelectAll === showingSelectAll) {\n return prevState;\n }\n\n // Return the new state with updated showingSelectAll and reset isSelectedAll to false\n return {\n ...prevState,\n isSelectedAll: false,\n showingSelectAll\n };\n });\n }, [\n records.length,\n folders.length,\n state.isSearch,\n meta.hasMoreItems,\n state.selected.length,\n state.folderId\n ]);\n\n const currentFolder = useMemo(() => {\n return originalFolders?.find(folder => folder.id === currentFolderId);\n }, [originalFolders, currentFolderId]);\n\n const context: AcoListContextData<GenericSearchData> = {\n ...pick(state, [\n \"isSearch\",\n \"searchQuery\",\n \"selected\",\n \"showingFilters\",\n \"showingSelectAll\",\n \"isSelectedAll\"\n ]),\n folders,\n currentFolder,\n records,\n listTitle,\n isListLoading: Boolean(recordsLoading.INIT || recordsLoading.LIST),\n isListLoadingMore: Boolean(recordsLoading.LIST_MORE),\n meta,\n setSearchQuery(query) {\n setState(state => ({ ...state, searchQuery: query, after: undefined }));\n },\n setFilters(data) {\n setState(state => ({ ...state, filters: data, after: undefined }));\n // Create filters object excluding entries with `undefined` values\n const filters = Object.fromEntries(\n Object.entries(data).filter(([, value]) => value !== undefined)\n );\n\n setState(state => ({\n ...state,\n filters: Object.keys(filters).length ? filters : undefined,\n after: undefined\n }));\n },\n setListSort(sort: ListSearchRecordsSort) {\n setState(state => ({ ...state, listSort: sort, after: undefined }));\n },\n setSelected(selected) {\n setState(state => ({ ...state, selected }));\n },\n hideFilters() {\n setState(state => ({\n ...state,\n filters: undefined,\n showingFilters: false,\n after: undefined\n }));\n },\n showFilters() {\n setState(state => ({ ...state, showingFilters: true }));\n },\n selectAll() {\n setState(state => ({ ...state, isSelectedAll: true }));\n },\n unselectAll() {\n setState(state => ({\n ...state,\n selected: [],\n isSelectedAll: false\n }));\n },\n getWhere,\n listMoreRecords,\n refresh\n };\n\n return <AcoListContext.Provider value={context}>{children}</AcoListContext.Provider>;\n};\n"],"names":["AcoListContext","React","undefined","initializeAcoListState","getCurrentFolderList","folders","currentFolderId","ROOT_FOLDER","folder","getCurrentRecordList","records","folderIdPath","record","dotPropImmutable","AcoListProvider","children","props","identity","useSecurity","useNavigateFolder","folderIdInPath","useAcoApp","originalFolders","loadFolderHierarchy","useLoadFolderHierarchy","getDescendantFolders","useGetDescendantFolders","listFoldersByParentIds","useListFoldersByParentIds","folderContext","useContext","FoldersContext","searchContext","SearchRecordsContext","Error","setFolders","useStateIfMounted","setRecords","listTitle","setListTitle","state","setState","originalRecords","recordsLoading","listRecords","meta","useEffect","currentFolder","subFolders","sortTableItems","subRecords","prev","titleField","listMoreRecords","useCallback","hasMoreItems","cursor","getWhere","where","descendantFolderIds","buildListParams","isSearch","Boolean","Object","validateOrGetDefaultDbSort","listItems","result","refresh","selected","folderId","folderWithChildren","foldersLength","recordsLength","selectedLength","folderWithChildrenLength","getAllRecordsAreSelected","showingSelectAll","prevState","useMemo","context","pick","query","data","filters","value","sort"],"mappings":";;;;;;;;;;;;AAiDO,MAAMA,iBAAiB,WAAHA,GAAGC,MAAAA,aAAmB,CAE/CC;AAgBF,MAAMC,yBAAyB,IACpB;QACH,OAAOD;QACP,SAASA;QACT,UAAUA;QACV,UAAU;QACV,OAAO;QACP,UAAU,EAAE;QACZ,aAAa;QACb,UAAU,EAAE;QACZ,gBAAgB;QAChB,kBAAkB;QAClB,eAAe;IACnB;AAGJ,MAAME,uBAAuB,CACzBC,SACAC;IAEA,IAAI,CAACD,SACD,OAAO,EAAE;IAEb,IAAI,CAACC,mBAAmBA,gBAAgB,WAAW,OAAOC,aACtD,OAAOF,QAAQ,MAAM,CACjBG,CAAAA,SAAU,CAACA,OAAO,QAAQ,IAAIA,OAAO,QAAQ,CAAC,WAAW,OAAOD;IAGxE,OAAOF,QAAQ,MAAM,CAACG,CAAAA,SAAUA,OAAO,QAAQ,KAAKF;AACxD;AAEA,MAAMG,uBAAuB,CACzBC,SACAC,cACAL;IAEA,IAAI,CAACI,SACD,OAAO,EAAE;IAGb,IAAI,CAACJ,iBACD,OAAOI;IAGX,OAAOA,QAAQ,MAAM,CACjB,CAACE,SACGC,mBAAAA,GAAoB,CAACD,QAAQD,kBAAkBL;AAE3D;AAQO,MAAMQ,kBAAkB,CAAC,EAAEC,QAAQ,EAAE,GAAGC,OAA6B;IACxE,MAAM,EAAEC,QAAQ,EAAE,GAAGC;IACrB,MAAM,EAAEZ,eAAe,EAAE,GAAGa;IAC5B,MAAM,EAAER,YAAY,EAAES,cAAc,EAAE,GAAGC;IACzC,MAAM,EAAE,SAASC,eAAe,EAAEC,mBAAmB,EAAE,GAAGC;IAC1D,MAAM,EAAEC,oBAAoB,EAAE,GAAGC;IACjC,MAAM,EAAEC,sBAAsB,EAAE,GAAGC;IACnC,MAAMC,gBAAgBC,WAAWC;IACjC,MAAMC,gBAAgBF,WAAWG;IAEjC,IAAI,CAACJ,iBAAiB,CAACG,eACnB,MAAM,IAAIE,MAAM;IAGpB,MAAM,CAAC7B,SAAS8B,WAAW,GAAGC,kBAA+B,EAAE;IAC/D,MAAM,CAAC1B,SAAS2B,WAAW,GAAGD,kBAAsC,EAAE;IACtE,MAAM,CAACE,WAAWC,aAAa,GAAGH,kBAAsClC;IACxE,MAAM,CAACsC,OAAOC,SAAS,GAAGL,kBAA4CjC;IAEtE,MAAM,EAAE,SAASuC,eAAe,EAAE,SAASC,cAAc,EAAEC,WAAW,EAAEC,IAAI,EAAE,GAAGb;IAQjFc,UAAU;QAEN,IAAIzC,AAAmB,MAAnBA,QAAQ,MAAM,EACdkB,oBAAoBjB;aAGpBqB,uBAAuB;YAACrB;SAAgB;QAG5CmC,SAASD,CAAAA,QACE;gBACH,GAAGA,KAAK;gBACR,OAAOtC;gBACP,SAASA;gBACT,UAAUI;gBACV,UAAU;gBACV,aAAa;gBACb,UAAU,EAAE;gBACZ,gBAAgB;gBAChB,kBAAkB;gBAClB,eAAe;YACnB;IAER,GAAG;QAACA;KAAgB;IAQpBwC,UAAU;QACN,MAAMC,gBAAgBzB,iBAAiB,KACnCd,CAAAA,SAAUA,OAAO,EAAE,KAAMgC,CAAAA,MAAM,QAAQ,IAAIjC,WAAU;QAGzDgC,aAAaQ,eAAe;QAE5B,IAAIP,MAAM,QAAQ,EAAE,YAChBL,WAAW,EAAE;QAIjB,MAAMa,aAAa5C,qBAAqBkB,iBAAiBkB,MAAM,QAAQ;QACvEL,WAAW,IACAc,eAAeD,YAAYR,MAAM,QAAQ;IAExD,GAAG;QAAClB;QAAiBkB,MAAM,QAAQ;QAAEA,MAAM,QAAQ;KAAC;IAOpDM,UAAU;QACN,IAAIN,MAAM,QAAQ,EAAE,YAChBH,WAAWK;QAIf,MAAMQ,aAAazC,qBACfiC,iBACA/B,cACA6B,MAAM,QAAQ;QAElBH,WAAWa;IACf,GAAG;QAACR;QAAiBF,MAAM,QAAQ;QAAEA,MAAM,QAAQ;KAAC;IAMpDM,UAAU;QACNX,WAAWgB,CAAAA;YACP,MAAMC,aAAapC,OAAO,gBAAgB;YAC1C,OAAOiC,eAAeE,MAAMX,MAAM,QAAQ,EAAE;gBACxC,CAACY,WAAW,EAAE;YAClB;QACJ;IACJ,GAAG;QAACZ,MAAM,QAAQ;KAAC;IAKnB,MAAMa,kBAAkBC,YAAY;QAChC,MAAM,EAAEC,YAAY,EAAEC,MAAM,EAAE,GAAGX;QACjC,IAAIU,gBAAgBC,QAChBf,SAASD,CAAAA,QAAU;gBAAE,GAAGA,KAAK;gBAAE,OAAOgB;YAAO;IAErD,GAAG;QAACX;KAAK;IAUT,MAAMY,WAAWH,YAAY;QAEzB,IAAII,QAAQ,CAAC;QAEb,IAAI,CAAClB,MAAM,QAAQ,EACf,OAAOkB;QAIX,IAAIlB,MAAM,QAAQ,KAAKjC,aAAa;YAEhC,MAAMoD,sBAAsBlC,qBAAqBe,MAAM,QAAQ,EAAE,GAAG,CAChEhC,CAAAA,SAAUA,OAAO,EAAE;YAIvBkD,QAAQ7C,mBAAAA,GAAoB,CAAC,CAAC,GAAGO,gBAAgBuC;QACrD;QAEA,OAAO;YACH,WAAW3C,MAAM,GAAG,GAAGC,SAAS,EAAE,GAAGf;YACrC,GAAGsC,MAAM,OAAO;YAChB,GAAGkB,KAAK;QACZ;IACJ,GAAG;QAACrD;QAASmC,MAAM,QAAQ;QAAEA,MAAM,OAAO;QAAExB,MAAM,GAAG;QAAEC;KAAS;IAEhE,MAAM2C,kBAAkBN,YAAY;QAIhC,IAAI,CAACd,MAAM,QAAQ,EACf,OAAO;QAGX,MAAMqB,WAAWC,QACbtB,MAAM,WAAW,IAChBA,MAAM,OAAO,IAAIuB,OAAO,MAAM,CAACvB,MAAM,OAAO,EAAE,MAAM,CAACsB,SAAS,MAAM;QAGzE,IAAIJ,QAAQ7C,mBAAAA,GAAoB,CAAC,CAAC,GAAGF,cAAc6B,MAAM,QAAQ;QAIjE,IAAIqB,UACAH,QAAQD;QAGZ,OAAO;YACH,QAAQ;gBACJ,OAAOjB,MAAM,KAAK;gBAClB,MAAMwB,2BAA2BxB,MAAM,QAAQ;gBAC/C,QAAQA,MAAM,WAAW;gBACzB,OAAOA,MAAM,KAAK;gBAClBkB;YACJ;YACAG;QACJ;IACJ,GAAG;QACCrB,MAAM,QAAQ;QACdA,MAAM,OAAO;QACbA,MAAM,WAAW;QACjBA,MAAM,KAAK;QACXA,MAAM,QAAQ;QACdA,MAAM,KAAK;QACXiB;QACA9C;KACH;IAMDmC,UAAU;QACN,MAAMmB,YAAY;YACd,MAAMC,SAASN;YACf,IAAI,CAACM,QACD;YAGJ,MAAMtB,YAAYsB,OAAO,MAAM;YAE/BzB,SAASD,CAAAA,QAAU;oBAAE,GAAGA,KAAK;oBAAE,UAAU0B,OAAO,QAAQ;gBAAC;QAC7D;QAEAD;IACJ,GAAG;QACCzB,MAAM,QAAQ;QACdA,MAAM,OAAO;QACbA,MAAM,WAAW;QACjBA,MAAM,KAAK;QACXA,MAAM,QAAQ;QACdA,MAAM,KAAK;QACXxB,MAAM,GAAG;QACTC;KACH;IAED,MAAMkD,UAAUb,YAAY;QACxB,MAAMY,SAASN;QACf,IAAI,CAACM,QACD;QAGJ,MAAMtB,YAAYsB,OAAO,MAAM;IACnC,GAAG;QAACN;QAAiBhB;KAAY;IAQjCE,UAAU;QAEN,MAAM,EAAEsB,QAAQ,EAAEC,QAAQ,EAAE,GAAG7B;QAC/B,MAAM,EAAEe,YAAY,EAAE,GAAGV;QAGzB,MAAMyB,qBAAqBD,WAAW5C,qBAAqB4C,YAAY,EAAE;QAGzE,MAAME,gBAAgBlE,QAAQ,MAAM;QACpC,MAAMmE,gBAAgB9D,QAAQ,MAAM;QACpC,MAAM+D,iBAAiBL,SAAS,MAAM;QACtC,MAAMM,2BAA2BJ,mBAAmB,MAAM;QAG1D,MAAMK,2BAA2B,IAAM,CAAC,CAACH,iBAAiBA,kBAAkBC;QAG5E,IAAIG,mBAAmB;QAGvB,IAAIP,aAAa9D,eAAegE,gBAAgB,GAC5CK,mBAAmBD;QAIvB,IAAIN,aAAa9D,eAAemE,2BAA2B,GACvDE,mBAAmBD;QAIvB,IAAIpB,cACAqB,mBAAmBD;QAIvBlC,SAASoC,CAAAA;YAEL,IAAI,CAACA,UAAU,aAAa,IAAIA,UAAU,gBAAgB,KAAKD,kBAC3D,OAAOC;YAIX,OAAO;gBACH,GAAGA,SAAS;gBACZ,eAAe;gBACfD;YACJ;QACJ;IACJ,GAAG;QACClE,QAAQ,MAAM;QACdL,QAAQ,MAAM;QACdmC,MAAM,QAAQ;QACdK,KAAK,YAAY;QACjBL,MAAM,QAAQ,CAAC,MAAM;QACrBA,MAAM,QAAQ;KACjB;IAED,MAAMO,gBAAgB+B,QAAQ,IACnBxD,iBAAiB,KAAKd,CAAAA,SAAUA,OAAO,EAAE,KAAKF,kBACtD;QAACgB;QAAiBhB;KAAgB;IAErC,MAAMyE,UAAiD;QACnD,GAAGC,KAAKxC,OAAO;YACX;YACA;YACA;YACA;YACA;YACA;SACH,CAAC;QACFnC;QACA0C;QACArC;QACA4B;QACA,eAAewB,QAAQnB,eAAe,IAAI,IAAIA,eAAe,IAAI;QACjE,mBAAmBmB,QAAQnB,eAAe,SAAS;QACnDE;QACA,gBAAeoC,KAAK;YAChBxC,SAASD,CAAAA,QAAU;oBAAE,GAAGA,KAAK;oBAAE,aAAayC;oBAAO,OAAO/E;gBAAU;QACxE;QACA,YAAWgF,IAAI;YACXzC,SAASD,CAAAA,QAAU;oBAAE,GAAGA,KAAK;oBAAE,SAAS0C;oBAAM,OAAOhF;gBAAU;YAE/D,MAAMiF,UAAUpB,OAAO,WAAW,CAC9BA,OAAO,OAAO,CAACmB,MAAM,MAAM,CAAC,CAAC,GAAGE,MAAM,GAAKA,AAAUlF,WAAVkF;YAG/C3C,SAASD,CAAAA,QAAU;oBACf,GAAGA,KAAK;oBACR,SAASuB,OAAO,IAAI,CAACoB,SAAS,MAAM,GAAGA,UAAUjF;oBACjD,OAAOA;gBACX;QACJ;QACA,aAAYmF,IAA2B;YACnC5C,SAASD,CAAAA,QAAU;oBAAE,GAAGA,KAAK;oBAAE,UAAU6C;oBAAM,OAAOnF;gBAAU;QACpE;QACA,aAAYkE,QAAQ;YAChB3B,SAASD,CAAAA,QAAU;oBAAE,GAAGA,KAAK;oBAAE4B;gBAAS;QAC5C;QACA;YACI3B,SAASD,CAAAA,QAAU;oBACf,GAAGA,KAAK;oBACR,SAAStC;oBACT,gBAAgB;oBAChB,OAAOA;gBACX;QACJ;QACA;YACIuC,SAASD,CAAAA,QAAU;oBAAE,GAAGA,KAAK;oBAAE,gBAAgB;gBAAK;QACxD;QACA;YACIC,SAASD,CAAAA,QAAU;oBAAE,GAAGA,KAAK;oBAAE,eAAe;gBAAK;QACvD;QACA;YACIC,SAASD,CAAAA,QAAU;oBACf,GAAGA,KAAK;oBACR,UAAU,EAAE;oBACZ,eAAe;gBACnB;QACJ;QACAiB;QACAJ;QACAc;IACJ;IAEA,OAAO,WAAP,GAAO,oBAACnE,eAAe,QAAQ;QAAC,OAAO+E;OAAUhE;AACrD"}
|
package/contexts/app.js
CHANGED
|
@@ -1,60 +1,47 @@
|
|
|
1
|
-
import
|
|
1
|
+
import react, { useMemo } from "react";
|
|
2
2
|
import { DialogsProvider } from "@webiny/app-admin";
|
|
3
|
-
import { FoldersProvider
|
|
4
|
-
import { SearchRecordsProvider
|
|
3
|
+
import { FoldersProvider } from "./folders.js";
|
|
4
|
+
import { SearchRecordsProvider } from "./records.js";
|
|
5
5
|
import { AcoListProvider } from "./acoList.js";
|
|
6
6
|
import { NavigateFolderProvider } from "./navigateFolder.js";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
getFields: data.getFields || (() => {
|
|
12
|
-
return data.model.fields;
|
|
13
|
-
})
|
|
14
|
-
};
|
|
15
|
-
};
|
|
16
|
-
export const AcoAppProvider = ({
|
|
17
|
-
children,
|
|
18
|
-
id,
|
|
19
|
-
client,
|
|
20
|
-
model,
|
|
21
|
-
columns,
|
|
22
|
-
getFields,
|
|
23
|
-
navigateToFolder,
|
|
24
|
-
createNavigateFolderStorageKey,
|
|
25
|
-
folderId,
|
|
26
|
-
folderIdPath,
|
|
27
|
-
own
|
|
28
|
-
}) => {
|
|
29
|
-
const app = useMemo(() => {
|
|
30
|
-
return createAppFromModel({
|
|
31
|
-
id,
|
|
32
|
-
model,
|
|
33
|
-
getFields
|
|
7
|
+
const AcoAppContext = /*#__PURE__*/ react.createContext(void 0);
|
|
8
|
+
const createAppFromModel = (data)=>({
|
|
9
|
+
...data,
|
|
10
|
+
getFields: data.getFields || (()=>data.model.fields)
|
|
34
11
|
});
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
12
|
+
const AcoAppProvider = ({ children, id, client, model, columns, getFields, navigateToFolder, createNavigateFolderStorageKey, folderId, folderIdPath, own })=>{
|
|
13
|
+
const app = useMemo(()=>createAppFromModel({
|
|
14
|
+
id,
|
|
15
|
+
model,
|
|
16
|
+
getFields
|
|
17
|
+
}), [
|
|
18
|
+
model
|
|
19
|
+
]);
|
|
20
|
+
const folderIdInPath = folderIdPath + "_in";
|
|
21
|
+
const value = useMemo(()=>({
|
|
22
|
+
app: app,
|
|
23
|
+
folderIdPath,
|
|
24
|
+
folderIdInPath,
|
|
25
|
+
client,
|
|
26
|
+
model: model
|
|
27
|
+
}), [
|
|
28
|
+
app?.id,
|
|
29
|
+
model,
|
|
30
|
+
client
|
|
31
|
+
]);
|
|
32
|
+
return /*#__PURE__*/ react.createElement(AcoAppContext.Provider, {
|
|
33
|
+
value: value
|
|
34
|
+
}, /*#__PURE__*/ react.createElement(FoldersProvider, null, /*#__PURE__*/ react.createElement(SearchRecordsProvider, {
|
|
35
|
+
columns: columns
|
|
36
|
+
}, /*#__PURE__*/ react.createElement(NavigateFolderProvider, {
|
|
37
|
+
folderId: folderId,
|
|
38
|
+
createStorageKey: createNavigateFolderStorageKey,
|
|
39
|
+
navigateToFolder: navigateToFolder
|
|
40
|
+
}, /*#__PURE__*/ react.createElement(AcoListProvider, {
|
|
41
|
+
own: own,
|
|
42
|
+
titleFieldId: model.titleFieldId
|
|
43
|
+
}, /*#__PURE__*/ react.createElement(DialogsProvider, null, children))))));
|
|
58
44
|
};
|
|
45
|
+
export { AcoAppContext, AcoAppProvider, createAppFromModel };
|
|
59
46
|
|
|
60
47
|
//# sourceMappingURL=app.js.map
|
package/contexts/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"contexts/app.js","sources":["../../src/contexts/app.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport type { ApolloClient } from \"apollo-client\";\nimport { DialogsProvider } from \"@webiny/app-admin\";\nimport type { AcoApp, AcoModel, AcoModelField } from \"~/types.js\";\nimport { FoldersProvider as FoldersContextProvider } from \"./folders.js\";\nimport { SearchRecordsProvider as SearchRecordsContextProvider } from \"./records.js\";\nimport { AcoListProvider } from \"~/contexts/acoList.js\";\nimport { NavigateFolderProvider } from \"~/contexts/navigateFolder.js\";\nimport type { ColumnConfig } from \"~/config/table/Column.js\";\n\nexport interface AcoAppProviderContext {\n app: AcoApp;\n folderIdPath: string;\n folderIdInPath: string;\n model: AcoModel;\n client: ApolloClient<any>;\n}\n\nexport const AcoAppContext = React.createContext<AcoAppProviderContext | undefined>(undefined);\n\nexport type AcoAppProviderProps = {\n children: React.ReactNode;\n id: string;\n folderId: string | undefined;\n folderIdPath: string;\n client: ApolloClient<any>;\n navigateToFolder: (folderId: string) => void;\n createNavigateFolderStorageKey: () => string;\n model: AcoModel;\n columns: ColumnConfig[];\n own?: boolean;\n getFields?: () => AcoModelField[];\n};\n\ninterface CreateAppParams {\n id: string;\n model: AcoModel;\n getFields?: () => AcoModelField[];\n}\n\nexport const createAppFromModel = (data: CreateAppParams): AcoApp => {\n return {\n ...data,\n getFields:\n data.getFields ||\n (() => {\n return data.model.fields;\n })\n };\n};\n\nexport const AcoAppProvider = ({\n children,\n id,\n client,\n model,\n columns,\n getFields,\n navigateToFolder,\n createNavigateFolderStorageKey,\n folderId,\n folderIdPath,\n own\n}: AcoAppProviderProps) => {\n const app = useMemo(() => {\n return createAppFromModel({\n id,\n model,\n getFields\n });\n }, [model]);\n\n const folderIdInPath = folderIdPath + \"_in\";\n\n const value = useMemo<AcoAppProviderContext>(() => {\n return {\n app: app as AcoApp,\n folderIdPath,\n folderIdInPath,\n client,\n model: model as AcoModel\n };\n }, [app?.id, model, client]);\n\n return (\n <AcoAppContext.Provider value={value}>\n <FoldersContextProvider>\n <SearchRecordsContextProvider columns={columns}>\n <NavigateFolderProvider\n folderId={folderId}\n createStorageKey={createNavigateFolderStorageKey}\n navigateToFolder={navigateToFolder}\n >\n <AcoListProvider own={own} titleFieldId={model.titleFieldId}>\n <DialogsProvider>{children}</DialogsProvider>\n </AcoListProvider>\n </NavigateFolderProvider>\n </SearchRecordsContextProvider>\n </FoldersContextProvider>\n </AcoAppContext.Provider>\n );\n};\n"],"names":["AcoAppContext","React","undefined","createAppFromModel","data","AcoAppProvider","children","id","client","model","columns","getFields","navigateToFolder","createNavigateFolderStorageKey","folderId","folderIdPath","own","app","useMemo","folderIdInPath","value","FoldersContextProvider","SearchRecordsContextProvider","NavigateFolderProvider","AcoListProvider","DialogsProvider"],"mappings":";;;;;;AAkBO,MAAMA,gBAAgB,WAAHA,GAAGC,MAAAA,aAAmB,CAAoCC;AAsB7E,MAAMC,qBAAqB,CAACC,OACxB;QACH,GAAGA,IAAI;QACP,WACIA,KAAK,SAAS,IACZ,KACSA,KAAK,KAAK,CAAC,MAAM,AAC5B;IACR;AAGG,MAAMC,iBAAiB,CAAC,EAC3BC,QAAQ,EACRC,EAAE,EACFC,MAAM,EACNC,KAAK,EACLC,OAAO,EACPC,SAAS,EACTC,gBAAgB,EAChBC,8BAA8B,EAC9BC,QAAQ,EACRC,YAAY,EACZC,GAAG,EACe;IAClB,MAAMC,MAAMC,QAAQ,IACTf,mBAAmB;YACtBI;YACAE;YACAE;QACJ,IACD;QAACF;KAAM;IAEV,MAAMU,iBAAiBJ,eAAe;IAEtC,MAAMK,QAAQF,QAA+B,IAClC;YACH,KAAKD;YACLF;YACAI;YACAX;YACA,OAAOC;QACX,IACD;QAACQ,KAAK;QAAIR;QAAOD;KAAO;IAE3B,OAAO,WAAP,GACI,oBAACR,cAAc,QAAQ;QAAC,OAAOoB;qBAC3B,oBAACC,iBAAsBA,MAAAA,WAAAA,GACnB,oBAACC,uBAA4BA;QAAC,SAASZ;qBACnC,oBAACa,wBAAsBA;QACnB,UAAUT;QACV,kBAAkBD;QAClB,kBAAkBD;qBAElB,oBAACY,iBAAeA;QAAC,KAAKR;QAAK,cAAcP,MAAM,YAAY;qBACvD,oBAACgB,iBAAeA,MAAEnB;AAO9C"}
|
package/contexts/folder.js
CHANGED
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
return
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
folder
|
|
12
|
-
};
|
|
13
|
-
return /*#__PURE__*/React.createElement(FolderContext.Provider, {
|
|
14
|
-
value: value
|
|
15
|
-
}, children);
|
|
1
|
+
import react, { createContext } from "react";
|
|
2
|
+
const FolderContext = /*#__PURE__*/ createContext(void 0);
|
|
3
|
+
const FolderProvider = ({ folder, children })=>{
|
|
4
|
+
if (!folder) return null;
|
|
5
|
+
const value = {
|
|
6
|
+
folder
|
|
7
|
+
};
|
|
8
|
+
return /*#__PURE__*/ react.createElement(FolderContext.Provider, {
|
|
9
|
+
value: value
|
|
10
|
+
}, children);
|
|
16
11
|
};
|
|
12
|
+
export { FolderContext, FolderProvider };
|
|
17
13
|
|
|
18
14
|
//# sourceMappingURL=folder.js.map
|
package/contexts/folder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"contexts/folder.js","sources":["../../src/contexts/folder.tsx"],"sourcesContent":["import React, { createContext } from \"react\";\nimport type { FolderDto } from \"~/domain/folder/FolderDto.js\";\n\nexport interface FolderContext {\n folder: FolderDto;\n}\n\nexport const FolderContext = createContext<FolderContext | undefined>(undefined);\n\ninterface FolderProviderProps {\n folder: FolderDto | undefined;\n children: React.ReactNode;\n}\n\nexport const FolderProvider = ({ folder, children }: FolderProviderProps) => {\n if (!folder) {\n return null;\n }\n\n const value: FolderContext = { folder };\n\n return <FolderContext.Provider value={value}>{children}</FolderContext.Provider>;\n};\n"],"names":["FolderContext","createContext","undefined","FolderProvider","folder","children","value"],"mappings":";AAOO,MAAMA,gBAAgB,WAAHA,GAAGC,cAAyCC;AAO/D,MAAMC,iBAAiB,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAuB;IACpE,IAAI,CAACD,QACD,OAAO;IAGX,MAAME,QAAuB;QAAEF;IAAO;IAEtC,OAAO,WAAP,GAAO,oBAACJ,cAAc,QAAQ;QAAC,OAAOM;OAAQD;AAClD"}
|
package/contexts/folders.js
CHANGED
|
@@ -1,37 +1,32 @@
|
|
|
1
|
-
import { DiContainerProvider } from "@webiny/app";
|
|
2
|
-
import {
|
|
3
|
-
import React, { useContext, useMemo } from "react";
|
|
1
|
+
import { DiContainerProvider, useContainer } from "@webiny/app";
|
|
2
|
+
import react, { useContext, useMemo } from "react";
|
|
4
3
|
import { AcoAppContext } from "./app.js";
|
|
5
4
|
import { FoldersFeature } from "../features/folders/feature.js";
|
|
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
|
-
return /*#__PURE__*/React.createElement(DiContainerProvider, {
|
|
31
|
-
container: routeContainer
|
|
32
|
-
}, /*#__PURE__*/React.createElement(FoldersContext.Provider, {
|
|
33
|
-
value: context
|
|
34
|
-
}, children));
|
|
5
|
+
const FoldersContext = /*#__PURE__*/ react.createContext(void 0);
|
|
6
|
+
const FoldersProvider = ({ children, ...props })=>{
|
|
7
|
+
const appContext = useContext(AcoAppContext);
|
|
8
|
+
const app = appContext ? appContext.app : void 0;
|
|
9
|
+
const type = props.type ?? app?.id;
|
|
10
|
+
if (!type) throw Error('FoldersProvider requires a "type" prop or an AcoAppContext to be available!');
|
|
11
|
+
const container = useContainer();
|
|
12
|
+
const routeContainer = useMemo(()=>{
|
|
13
|
+
const childContainer = container.createChildContainer();
|
|
14
|
+
FoldersFeature.register(childContainer, {
|
|
15
|
+
type
|
|
16
|
+
});
|
|
17
|
+
return childContainer;
|
|
18
|
+
}, []);
|
|
19
|
+
const context = useMemo(()=>({
|
|
20
|
+
type
|
|
21
|
+
}), [
|
|
22
|
+
type
|
|
23
|
+
]);
|
|
24
|
+
return /*#__PURE__*/ react.createElement(DiContainerProvider, {
|
|
25
|
+
container: routeContainer
|
|
26
|
+
}, /*#__PURE__*/ react.createElement(FoldersContext.Provider, {
|
|
27
|
+
value: context
|
|
28
|
+
}, children));
|
|
35
29
|
};
|
|
30
|
+
export { FoldersContext, FoldersProvider };
|
|
36
31
|
|
|
37
32
|
//# sourceMappingURL=folders.js.map
|
package/contexts/folders.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"contexts/folders.js","sources":["../../src/contexts/folders.tsx"],"sourcesContent":["import { DiContainerProvider } from \"@webiny/app\";\nimport { useContainer } from \"@webiny/app\";\nimport type { ReactNode } from \"react\";\nimport React, { useContext, useMemo } from \"react\";\nimport { AcoAppContext } from \"~/contexts/app.js\";\nimport { FoldersFeature } from \"~/features/folders/feature.js\";\n\ninterface FoldersContext {\n type?: string | null;\n}\n\nexport const FoldersContext = React.createContext<FoldersContext | undefined>(undefined);\n\ninterface Props {\n type?: string;\n children: ReactNode;\n}\n\nexport const FoldersProvider = ({ children, ...props }: Props) => {\n const appContext = useContext(AcoAppContext);\n\n const app = appContext ? appContext.app : undefined;\n\n const type = props.type ?? app?.id;\n\n if (!type) {\n throw Error(`FoldersProvider requires a \"type\" prop or an AcoAppContext to be available!`);\n }\n\n const container = useContainer();\n\n const routeContainer = useMemo(() => {\n const childContainer = container.createChildContainer();\n\n FoldersFeature.register(childContainer, { type });\n\n return childContainer;\n }, []);\n\n const context = useMemo<FoldersContext>(() => {\n return {\n type\n };\n }, [type]);\n\n return (\n <DiContainerProvider container={routeContainer}>\n <FoldersContext.Provider value={context}>{children}</FoldersContext.Provider>\n </DiContainerProvider>\n );\n};\n"],"names":["FoldersContext","React","undefined","FoldersProvider","children","props","appContext","useContext","AcoAppContext","app","type","Error","container","useContainer","routeContainer","useMemo","childContainer","FoldersFeature","context","DiContainerProvider"],"mappings":";;;;AAWO,MAAMA,iBAAiB,WAAHA,GAAGC,MAAAA,aAAmB,CAA6BC;AAOvE,MAAMC,kBAAkB,CAAC,EAAEC,QAAQ,EAAE,GAAGC,OAAc;IACzD,MAAMC,aAAaC,WAAWC;IAE9B,MAAMC,MAAMH,aAAaA,WAAW,GAAG,GAAGJ;IAE1C,MAAMQ,OAAOL,MAAM,IAAI,IAAII,KAAK;IAEhC,IAAI,CAACC,MACD,MAAMC,MAAM;IAGhB,MAAMC,YAAYC;IAElB,MAAMC,iBAAiBC,QAAQ;QAC3B,MAAMC,iBAAiBJ,UAAU,oBAAoB;QAErDK,eAAe,QAAQ,CAACD,gBAAgB;YAAEN;QAAK;QAE/C,OAAOM;IACX,GAAG,EAAE;IAEL,MAAME,UAAUH,QAAwB,IAC7B;YACHL;QACJ,IACD;QAACA;KAAK;IAET,OAAO,WAAP,GACI,oBAACS,qBAAmBA;QAAC,WAAWL;qBAC5B,oBAACd,eAAe,QAAQ;QAAC,OAAOkB;OAAUd;AAGtD"}
|
package/contexts/index.js
CHANGED
|
@@ -1,62 +1,54 @@
|
|
|
1
|
-
import
|
|
1
|
+
import react, { useCallback, useEffect } from "react";
|
|
2
2
|
import { ROOT_FOLDER } from "../constants.js";
|
|
3
3
|
import { useLocalStorage } from "@webiny/app/exports/admin/local-storage.js";
|
|
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
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
isRootFolder: finalFolderId === ROOT_FOLDER,
|
|
52
|
-
setFolderToStorage,
|
|
53
|
-
navigateToListHome,
|
|
54
|
-
navigateToFolder,
|
|
55
|
-
navigateToLatestFolder
|
|
56
|
-
};
|
|
57
|
-
return /*#__PURE__*/React.createElement(NavigateFolderContext.Provider, {
|
|
58
|
-
value: context
|
|
59
|
-
}, children);
|
|
4
|
+
const NavigateFolderContext = /*#__PURE__*/ react.createContext(void 0);
|
|
5
|
+
const NavigateFolderProvider = ({ folderId: currentFolderId, children, createStorageKey, ...props })=>{
|
|
6
|
+
const localStorage = useLocalStorage();
|
|
7
|
+
const setFolderToStorage = useCallback((newFolderId)=>{
|
|
8
|
+
localStorage.set(createStorageKey(), newFolderId);
|
|
9
|
+
}, [
|
|
10
|
+
createStorageKey
|
|
11
|
+
]);
|
|
12
|
+
const getFolderFromStorage = useCallback(()=>{
|
|
13
|
+
const folderId = localStorage.get(createStorageKey());
|
|
14
|
+
return folderId?.toLowerCase();
|
|
15
|
+
}, [
|
|
16
|
+
createStorageKey
|
|
17
|
+
]);
|
|
18
|
+
useEffect(()=>{
|
|
19
|
+
setTimeout(()=>{
|
|
20
|
+
navigateToLatestFolder();
|
|
21
|
+
});
|
|
22
|
+
}, []);
|
|
23
|
+
const navigateToLatestFolder = useCallback(()=>{
|
|
24
|
+
const storageFolderId = getFolderFromStorage();
|
|
25
|
+
if (!currentFolderId) props.navigateToFolder(storageFolderId || ROOT_FOLDER);
|
|
26
|
+
}, [
|
|
27
|
+
currentFolderId
|
|
28
|
+
]);
|
|
29
|
+
const navigateToFolder = useCallback((folderId)=>{
|
|
30
|
+
setFolderToStorage(folderId);
|
|
31
|
+
props.navigateToFolder(folderId || ROOT_FOLDER);
|
|
32
|
+
}, [
|
|
33
|
+
currentFolderId
|
|
34
|
+
]);
|
|
35
|
+
const navigateToListHome = ()=>{
|
|
36
|
+
localStorage.remove(createStorageKey());
|
|
37
|
+
props.navigateToFolder(ROOT_FOLDER);
|
|
38
|
+
};
|
|
39
|
+
const finalFolderId = currentFolderId || getFolderFromStorage() || ROOT_FOLDER;
|
|
40
|
+
const context = {
|
|
41
|
+
currentFolderId: finalFolderId,
|
|
42
|
+
isRootFolder: finalFolderId === ROOT_FOLDER,
|
|
43
|
+
setFolderToStorage,
|
|
44
|
+
navigateToListHome,
|
|
45
|
+
navigateToFolder,
|
|
46
|
+
navigateToLatestFolder
|
|
47
|
+
};
|
|
48
|
+
return /*#__PURE__*/ react.createElement(NavigateFolderContext.Provider, {
|
|
49
|
+
value: context
|
|
50
|
+
}, children);
|
|
60
51
|
};
|
|
52
|
+
export { NavigateFolderContext, NavigateFolderProvider };
|
|
61
53
|
|
|
62
54
|
//# sourceMappingURL=navigateFolder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"contexts/navigateFolder.js","sources":["../../src/contexts/navigateFolder.tsx"],"sourcesContent":["import React, { useCallback, useEffect } from \"react\";\nimport { ROOT_FOLDER } from \"~/constants.js\";\nimport { useLocalStorage } from \"@webiny/app/exports/admin/local-storage.js\";\n\nexport interface NavigateFolderContext {\n currentFolderId: string;\n isRootFolder: boolean;\n setFolderToStorage: (folderId?: string) => void;\n navigateToListHome: () => void;\n navigateToFolder: (folder?: string) => void;\n navigateToLatestFolder: () => void;\n}\n\nexport const NavigateFolderContext = React.createContext<NavigateFolderContext | undefined>(\n undefined\n);\n\nexport interface NavigateFolderProviderProps {\n folderId: string | undefined;\n children: React.ReactNode;\n navigateToFolder: (folderId: string) => void;\n createStorageKey: () => string;\n}\n\nexport const NavigateFolderProvider = ({\n folderId: currentFolderId,\n children,\n createStorageKey,\n ...props\n}: NavigateFolderProviderProps) => {\n const localStorage = useLocalStorage();\n /**\n * Helper function to set the current folderId to local storage:\n * we export this function to call it programmatically when we need it and\n * persist the value on view switch.\n */\n const setFolderToStorage = useCallback(\n (newFolderId?: string): void => {\n localStorage.set(createStorageKey(), newFolderId);\n },\n [createStorageKey]\n );\n\n const getFolderFromStorage = useCallback((): string | undefined => {\n const folderId = localStorage.get(createStorageKey());\n return folderId?.toLowerCase();\n }, [createStorageKey]);\n\n useEffect(() => {\n setTimeout(() => {\n // Defer navigation to next tick.\n navigateToLatestFolder();\n });\n }, []);\n\n /**\n * Navigate to the latest visited folder.\n */\n const navigateToLatestFolder = useCallback(() => {\n const storageFolderId = getFolderFromStorage();\n if (!currentFolderId) {\n props.navigateToFolder(storageFolderId || ROOT_FOLDER);\n }\n }, [currentFolderId]);\n\n const navigateToFolder = useCallback(\n (folderId?: string) => {\n setFolderToStorage(folderId);\n props.navigateToFolder(folderId || ROOT_FOLDER);\n },\n [currentFolderId]\n );\n\n const navigateToListHome = () => {\n localStorage.remove(createStorageKey());\n props.navigateToFolder(ROOT_FOLDER);\n };\n\n const finalFolderId = currentFolderId || getFolderFromStorage() || ROOT_FOLDER;\n\n const context: NavigateFolderContext = {\n currentFolderId: finalFolderId,\n isRootFolder: finalFolderId === ROOT_FOLDER,\n setFolderToStorage,\n navigateToListHome,\n navigateToFolder,\n navigateToLatestFolder\n };\n\n return (\n <NavigateFolderContext.Provider value={context}>{children}</NavigateFolderContext.Provider>\n );\n};\n"],"names":["NavigateFolderContext","React","undefined","NavigateFolderProvider","currentFolderId","children","createStorageKey","props","localStorage","useLocalStorage","setFolderToStorage","useCallback","newFolderId","getFolderFromStorage","folderId","useEffect","setTimeout","navigateToLatestFolder","storageFolderId","ROOT_FOLDER","navigateToFolder","navigateToListHome","finalFolderId","context"],"mappings":";;;AAaO,MAAMA,wBAAwB,WAAHA,GAAGC,MAAAA,aAAmB,CACpDC;AAUG,MAAMC,yBAAyB,CAAC,EACnC,UAAUC,eAAe,EACzBC,QAAQ,EACRC,gBAAgB,EAChB,GAAGC,OACuB;IAC1B,MAAMC,eAAeC;IAMrB,MAAMC,qBAAqBC,YACvB,CAACC;QACGJ,aAAa,GAAG,CAACF,oBAAoBM;IACzC,GACA;QAACN;KAAiB;IAGtB,MAAMO,uBAAuBF,YAAY;QACrC,MAAMG,WAAWN,aAAa,GAAG,CAACF;QAClC,OAAOQ,UAAU;IACrB,GAAG;QAACR;KAAiB;IAErBS,UAAU;QACNC,WAAW;YAEPC;QACJ;IACJ,GAAG,EAAE;IAKL,MAAMA,yBAAyBN,YAAY;QACvC,MAAMO,kBAAkBL;QACxB,IAAI,CAACT,iBACDG,MAAM,gBAAgB,CAACW,mBAAmBC;IAElD,GAAG;QAACf;KAAgB;IAEpB,MAAMgB,mBAAmBT,YACrB,CAACG;QACGJ,mBAAmBI;QACnBP,MAAM,gBAAgB,CAACO,YAAYK;IACvC,GACA;QAACf;KAAgB;IAGrB,MAAMiB,qBAAqB;QACvBb,aAAa,MAAM,CAACF;QACpBC,MAAM,gBAAgB,CAACY;IAC3B;IAEA,MAAMG,gBAAgBlB,mBAAmBS,0BAA0BM;IAEnE,MAAMI,UAAiC;QACnC,iBAAiBD;QACjB,cAAcA,kBAAkBH;QAChCT;QACAW;QACAD;QACAH;IACJ;IAEA,OAAO,WAAP,GACI,oBAACjB,sBAAsB,QAAQ;QAAC,OAAOuB;OAAUlB;AAEzD"}
|