@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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import react, { useCallback, useEffect, useMemo, useState } from "react";
|
|
2
2
|
import { Tree } from "@webiny/admin-ui";
|
|
3
3
|
import { useSnackbar } from "@webiny/app-admin";
|
|
4
4
|
import { useGetFolderLevelPermission } from "../../../features/folders/getFolderLevelPermission/index.js";
|
|
@@ -10,141 +10,126 @@ import { createInitialOpenList, createTreeData } from "./utils.js";
|
|
|
10
10
|
import { ROOT_FOLDER } from "../../../constants.js";
|
|
11
11
|
import { FolderProvider } from "../../../contexts/folder.js";
|
|
12
12
|
import { useConfirmMoveFolderDialog } from "../../../dialogs/index.js";
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
13
|
+
const List = ({ folders, folderActions, onFolderClick, focusedFolderId, hiddenFolderIds, enableActions, dropConfirmation = false })=>{
|
|
14
|
+
const { listFoldersByParentIds, loading } = useListFoldersByParentIds();
|
|
15
|
+
const { updateFolder } = useUpdateFolder();
|
|
16
|
+
const { getFolderLevelPermission: canManageStructure } = useGetFolderLevelPermission("canManageStructure");
|
|
17
|
+
const { getFolderAncestors } = useGetFolderAncestors();
|
|
18
|
+
const { showSnackbar } = useSnackbar();
|
|
19
|
+
const [treeData, setTreeData] = useState([]);
|
|
20
|
+
const [openFolderIds, setOpenFolderIds] = useState([
|
|
21
|
+
ROOT_FOLDER
|
|
22
|
+
]);
|
|
23
|
+
const { showDialog: showConfirmMoveFolderDialog } = useConfirmMoveFolderDialog();
|
|
24
|
+
useEffect(()=>{
|
|
25
|
+
setTreeData(createTreeData(folders, focusedFolderId, hiddenFolderIds));
|
|
26
|
+
}, [
|
|
27
|
+
folders,
|
|
28
|
+
focusedFolderId,
|
|
29
|
+
hiddenFolderIds
|
|
30
|
+
]);
|
|
31
|
+
useEffect(()=>{
|
|
32
|
+
setOpenFolderIds((prev)=>{
|
|
33
|
+
const expanded = createInitialOpenList(folders, prev, focusedFolderId);
|
|
34
|
+
return [
|
|
35
|
+
...new Set([
|
|
36
|
+
ROOT_FOLDER,
|
|
37
|
+
...expanded
|
|
38
|
+
])
|
|
39
|
+
];
|
|
40
|
+
});
|
|
41
|
+
}, [
|
|
42
|
+
focusedFolderId,
|
|
43
|
+
folders,
|
|
44
|
+
setOpenFolderIds
|
|
45
|
+
]);
|
|
46
|
+
const handleChangeOpen = async (nodes)=>{
|
|
47
|
+
const folderIds = nodes.map((node)=>node.id);
|
|
48
|
+
const updatedOpenIds = [
|
|
49
|
+
...new Set([
|
|
50
|
+
ROOT_FOLDER,
|
|
51
|
+
...folderIds
|
|
52
|
+
])
|
|
53
|
+
];
|
|
54
|
+
setOpenFolderIds(updatedOpenIds);
|
|
55
|
+
const fetchableIds = folderIds.filter((id)=>id !== ROOT_FOLDER && "0" !== id);
|
|
56
|
+
await listFoldersByParentIds(fetchableIds);
|
|
57
|
+
};
|
|
58
|
+
const handleDrop = async (_, { dragSourceId, dropTargetId })=>{
|
|
59
|
+
try {
|
|
60
|
+
const item = folders.find((folder)=>folder.id === dragSourceId);
|
|
61
|
+
if (!item) throw new Error("Folder not found!");
|
|
62
|
+
await updateFolder({
|
|
63
|
+
...item,
|
|
64
|
+
parentId: dropTargetId !== ROOT_FOLDER ? dropTargetId : null
|
|
65
|
+
});
|
|
66
|
+
} catch (error) {
|
|
67
|
+
showSnackbar(error.message);
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
const onDrop = useCallback(async (newTree, options)=>{
|
|
71
|
+
const runDrop = async ()=>handleDrop(newTree, options);
|
|
72
|
+
if (dropConfirmation) {
|
|
73
|
+
const { dragSourceId, dropTargetId } = options;
|
|
74
|
+
const folder = folders.find((f)=>f.id === dragSourceId);
|
|
75
|
+
const targetFolder = folders.find((f)=>f.id === dropTargetId);
|
|
76
|
+
if (!folder || !targetFolder) return;
|
|
77
|
+
showConfirmMoveFolderDialog({
|
|
78
|
+
folder,
|
|
79
|
+
targetFolder,
|
|
80
|
+
onAccept: runDrop
|
|
81
|
+
});
|
|
82
|
+
} else await runDrop();
|
|
83
|
+
}, [
|
|
84
|
+
folders,
|
|
85
|
+
dropConfirmation,
|
|
86
|
+
showConfirmMoveFolderDialog
|
|
87
|
+
]);
|
|
88
|
+
const sort = useMemo(()=>(a, b)=>{
|
|
89
|
+
if (a.id === ROOT_FOLDER || b.id === ROOT_FOLDER) return 1;
|
|
90
|
+
return a.label.localeCompare(b.label, void 0, {
|
|
91
|
+
numeric: true
|
|
92
|
+
});
|
|
93
|
+
}, []);
|
|
94
|
+
const canDrag = useCallback((node)=>node.id !== ROOT_FOLDER && canManageStructure(node.id), [
|
|
95
|
+
canManageStructure
|
|
96
|
+
]);
|
|
97
|
+
const canDrop = (_, options)=>{
|
|
98
|
+
const { dragSourceId, dropTargetId } = options;
|
|
99
|
+
const dropTagetAncestorIds = getFolderAncestors(dropTargetId).map((item)=>item.id);
|
|
100
|
+
return !(dragSourceId && dropTagetAncestorIds.includes(dragSourceId));
|
|
101
|
+
};
|
|
102
|
+
const nodeRenderer = (node)=>{
|
|
103
|
+
const folder = folders.find((folder)=>folder.id === node.id);
|
|
104
|
+
return /*#__PURE__*/ react.createElement(FolderProvider, {
|
|
105
|
+
folder: folder
|
|
106
|
+
}, /*#__PURE__*/ react.createElement(Node, {
|
|
107
|
+
enableActions: enableActions,
|
|
108
|
+
folderActions: folderActions
|
|
109
|
+
}));
|
|
110
|
+
};
|
|
111
|
+
const handleNodeClick = useCallback((node)=>{
|
|
112
|
+
onFolderClick(node);
|
|
113
|
+
}, [
|
|
114
|
+
onFolderClick
|
|
115
|
+
]);
|
|
116
|
+
return /*#__PURE__*/ react.createElement(Tree, {
|
|
117
|
+
nodes: treeData,
|
|
118
|
+
rootId: "0",
|
|
119
|
+
defaultOpenNodeIds: openFolderIds,
|
|
120
|
+
onChangeOpen: handleChangeOpen,
|
|
121
|
+
onDrop: onDrop,
|
|
122
|
+
onNodeClick: handleNodeClick,
|
|
123
|
+
sort: sort,
|
|
124
|
+
canDrag: canDrag,
|
|
125
|
+
canDrop: canDrop,
|
|
126
|
+
renderer: nodeRenderer,
|
|
127
|
+
defaultLockedOpenNodeIds: [
|
|
128
|
+
ROOT_FOLDER
|
|
129
|
+
],
|
|
130
|
+
loadingNodeIds: loading
|
|
50
131
|
});
|
|
51
|
-
}, [focusedFolderId, folders, setOpenFolderIds]);
|
|
52
|
-
const handleChangeOpen = async nodes => {
|
|
53
|
-
const folderIds = nodes.map(node => node.id);
|
|
54
|
-
const updatedOpenIds = [...new Set([ROOT_FOLDER, ...folderIds])];
|
|
55
|
-
setOpenFolderIds(updatedOpenIds);
|
|
56
|
-
const fetchableIds = folderIds.filter(id => id !== ROOT_FOLDER && id !== "0");
|
|
57
|
-
await listFoldersByParentIds(fetchableIds);
|
|
58
|
-
};
|
|
59
|
-
const handleDrop = async (_, {
|
|
60
|
-
dragSourceId,
|
|
61
|
-
dropTargetId
|
|
62
|
-
}) => {
|
|
63
|
-
try {
|
|
64
|
-
const item = folders.find(folder => folder.id === dragSourceId);
|
|
65
|
-
if (!item) {
|
|
66
|
-
throw new Error("Folder not found!");
|
|
67
|
-
}
|
|
68
|
-
await updateFolder({
|
|
69
|
-
...item,
|
|
70
|
-
parentId: dropTargetId !== ROOT_FOLDER ? dropTargetId : null
|
|
71
|
-
});
|
|
72
|
-
} catch (error) {
|
|
73
|
-
showSnackbar(error.message);
|
|
74
|
-
}
|
|
75
|
-
};
|
|
76
|
-
const onDrop = useCallback(async (newTree, options) => {
|
|
77
|
-
// Function to execute the drop logic
|
|
78
|
-
const runDrop = async () => handleDrop(newTree, options);
|
|
79
|
-
|
|
80
|
-
// If drop confirmation is enabled, show dialog before proceeding
|
|
81
|
-
if (dropConfirmation) {
|
|
82
|
-
const {
|
|
83
|
-
dragSourceId,
|
|
84
|
-
dropTargetId
|
|
85
|
-
} = options;
|
|
86
|
-
const folder = folders.find(f => f.id === dragSourceId);
|
|
87
|
-
const targetFolder = folders.find(f => f.id === dropTargetId);
|
|
88
|
-
|
|
89
|
-
// Abort if either folder is not found
|
|
90
|
-
if (!folder || !targetFolder) {
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
showConfirmMoveFolderDialog({
|
|
94
|
-
folder,
|
|
95
|
-
targetFolder,
|
|
96
|
-
onAccept: runDrop
|
|
97
|
-
});
|
|
98
|
-
} else {
|
|
99
|
-
// Otherwise, perform the drop immediately
|
|
100
|
-
await runDrop();
|
|
101
|
-
}
|
|
102
|
-
}, [folders, dropConfirmation, showConfirmMoveFolderDialog]);
|
|
103
|
-
const sort = useMemo(() => (a, b) => {
|
|
104
|
-
if (a.id === ROOT_FOLDER || b.id === ROOT_FOLDER) {
|
|
105
|
-
return 1;
|
|
106
|
-
}
|
|
107
|
-
return a.label.localeCompare(b.label, undefined, {
|
|
108
|
-
numeric: true
|
|
109
|
-
});
|
|
110
|
-
}, []);
|
|
111
|
-
const canDrag = useCallback(node => node.id !== ROOT_FOLDER && canManageStructure(node.id), [canManageStructure]);
|
|
112
|
-
const canDrop = (_, options) => {
|
|
113
|
-
const {
|
|
114
|
-
dragSourceId,
|
|
115
|
-
dropTargetId
|
|
116
|
-
} = options;
|
|
117
|
-
const dropTagetAncestorIds = getFolderAncestors(dropTargetId).map(item => item.id);
|
|
118
|
-
|
|
119
|
-
// Prevent dropping a folder into itself or its descendants
|
|
120
|
-
return !(dragSourceId && dropTagetAncestorIds.includes(dragSourceId));
|
|
121
|
-
};
|
|
122
|
-
const nodeRenderer = node => {
|
|
123
|
-
const folder = folders.find(folder => folder.id === node.id);
|
|
124
|
-
return /*#__PURE__*/React.createElement(FolderProvider, {
|
|
125
|
-
folder: folder
|
|
126
|
-
}, /*#__PURE__*/React.createElement(Node, {
|
|
127
|
-
enableActions: enableActions,
|
|
128
|
-
folderActions: folderActions
|
|
129
|
-
}));
|
|
130
|
-
};
|
|
131
|
-
const handleNodeClick = useCallback(node => {
|
|
132
|
-
onFolderClick(node);
|
|
133
|
-
}, [onFolderClick]);
|
|
134
|
-
return /*#__PURE__*/React.createElement(Tree, {
|
|
135
|
-
nodes: treeData,
|
|
136
|
-
rootId: "0",
|
|
137
|
-
defaultOpenNodeIds: openFolderIds,
|
|
138
|
-
onChangeOpen: handleChangeOpen,
|
|
139
|
-
onDrop: onDrop,
|
|
140
|
-
onNodeClick: handleNodeClick,
|
|
141
|
-
sort: sort,
|
|
142
|
-
canDrag: canDrag,
|
|
143
|
-
canDrop: canDrop,
|
|
144
|
-
renderer: nodeRenderer,
|
|
145
|
-
defaultLockedOpenNodeIds: [ROOT_FOLDER],
|
|
146
|
-
loadingNodeIds: loading
|
|
147
|
-
});
|
|
148
132
|
};
|
|
133
|
+
export { List };
|
|
149
134
|
|
|
150
135
|
//# sourceMappingURL=List.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useEffect","useMemo","useState","Tree","useSnackbar","useGetFolderLevelPermission","useListFoldersByParentIds","useGetFolderAncestors","useUpdateFolder","Node","createInitialOpenList","createTreeData","ROOT_FOLDER","FolderProvider","useConfirmMoveFolderDialog","List","folders","folderActions","onFolderClick","focusedFolderId","hiddenFolderIds","enableActions","dropConfirmation","listFoldersByParentIds","loading","updateFolder","getFolderLevelPermission","canManageStructure","getFolderAncestors","showSnackbar","treeData","setTreeData","openFolderIds","setOpenFolderIds","showDialog","showConfirmMoveFolderDialog","prev","expanded","Set","handleChangeOpen","nodes","folderIds","map","node","id","updatedOpenIds","fetchableIds","filter","handleDrop","_","dragSourceId","dropTargetId","item","find","folder","Error","parentId","error","message","onDrop","newTree","options","runDrop","f","targetFolder","onAccept","sort","a","b","label","localeCompare","undefined","numeric","canDrag","canDrop","dropTagetAncestorIds","includes","nodeRenderer","createElement","handleNodeClick","rootId","defaultOpenNodeIds","onChangeOpen","onNodeClick","renderer","defaultLockedOpenNodeIds","loadingNodeIds"],"sources":["List.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport {\n Tree,\n type NodeDto,\n type TreeProps,\n type WithDefaultNodeData,\n type DropOptions\n} from \"@webiny/admin-ui\";\nimport { useSnackbar } from \"@webiny/app-admin\";\nimport type { FolderDto } from \"~/domain/folder/FolderDto.js\";\nimport { useGetFolderLevelPermission } from \"~/features/folders/getFolderLevelPermission/index.js\";\nimport { useListFoldersByParentIds } from \"~/features/folders/listFoldersByParentIds/index.js\";\nimport { useGetFolderAncestors } from \"~/features/folders/getFolderAncestors/index.js\";\nimport { useUpdateFolder } from \"~/features/folders/updateFolder/index.js\";\nimport { Node } from \"../Node/index.js\";\nimport { createInitialOpenList, createTreeData } from \"./utils.js\";\nimport { ROOT_FOLDER } from \"~/constants.js\";\nimport { FolderProvider } from \"~/contexts/folder.js\";\nimport { useConfirmMoveFolderDialog } from \"~/dialogs/index.js\";\nimport type { FolderActionConfig } from \"~/config/AcoConfig.js\";\n\ninterface ListProps {\n folders: FolderDto[];\n folderActions: FolderActionConfig[];\n dropConfirmation?: boolean;\n focusedFolderId?: string;\n hiddenFolderIds?: string[];\n enableActions?: boolean;\n onFolderClick: (data: FolderDto) => void;\n}\n\nexport const List = ({\n folders,\n folderActions,\n onFolderClick,\n focusedFolderId,\n hiddenFolderIds,\n enableActions,\n dropConfirmation = false\n}: ListProps) => {\n const { listFoldersByParentIds, loading } = useListFoldersByParentIds();\n const { updateFolder } = useUpdateFolder();\n const { getFolderLevelPermission: canManageStructure } =\n useGetFolderLevelPermission(\"canManageStructure\");\n const { getFolderAncestors } = useGetFolderAncestors();\n const { showSnackbar } = useSnackbar();\n\n const [treeData, setTreeData] = useState<NodeDto<FolderDto>[]>([]);\n const [openFolderIds, setOpenFolderIds] = useState<string[]>([ROOT_FOLDER]);\n const { showDialog: showConfirmMoveFolderDialog } = useConfirmMoveFolderDialog();\n\n useEffect(() => {\n setTreeData(createTreeData(folders, focusedFolderId, hiddenFolderIds));\n }, [folders, focusedFolderId, hiddenFolderIds]);\n\n useEffect(() => {\n setOpenFolderIds(prev => {\n const expanded = createInitialOpenList(folders, prev, focusedFolderId);\n return [...new Set([ROOT_FOLDER, ...expanded])];\n });\n }, [focusedFolderId, folders, setOpenFolderIds]);\n\n const handleChangeOpen: TreeProps[\"onChangeOpen\"] = async nodes => {\n const folderIds = nodes.map(node => node.id);\n const updatedOpenIds = [...new Set([ROOT_FOLDER, ...folderIds])];\n setOpenFolderIds(updatedOpenIds);\n\n const fetchableIds = folderIds.filter(id => id !== ROOT_FOLDER && id !== \"0\");\n await listFoldersByParentIds(fetchableIds);\n };\n\n const handleDrop: TreeProps[\"onDrop\"] = async (_, { dragSourceId, dropTargetId }) => {\n try {\n const item = folders.find(folder => folder.id === dragSourceId);\n if (!item) {\n throw new Error(\"Folder not found!\");\n }\n\n await updateFolder({\n ...item,\n parentId: dropTargetId !== ROOT_FOLDER ? (dropTargetId as string) : null\n });\n } catch (error) {\n showSnackbar(error.message);\n }\n };\n\n const onDrop = useCallback<NonNullable<TreeProps[\"onDrop\"]>>(\n async (newTree, options: DropOptions) => {\n // Function to execute the drop logic\n const runDrop = async () => handleDrop(newTree, options);\n\n // If drop confirmation is enabled, show dialog before proceeding\n if (dropConfirmation) {\n const { dragSourceId, dropTargetId } = options;\n const folder = folders.find(f => f.id === dragSourceId);\n const targetFolder = folders.find(f => f.id === dropTargetId);\n\n // Abort if either folder is not found\n if (!folder || !targetFolder) {\n return;\n }\n\n showConfirmMoveFolderDialog({\n folder,\n targetFolder,\n onAccept: runDrop\n });\n } else {\n // Otherwise, perform the drop immediately\n await runDrop();\n }\n },\n [folders, dropConfirmation, showConfirmMoveFolderDialog]\n );\n\n const sort = useMemo(\n () => (a: NodeDto<any>, b: NodeDto<any>) => {\n if (a.id === ROOT_FOLDER || b.id === ROOT_FOLDER) {\n return 1;\n }\n return a.label.localeCompare(b.label, undefined, { numeric: true });\n },\n []\n );\n\n const canDrag: TreeProps<FolderDto>[\"canDrag\"] = useCallback(\n (node: NodeDto<FolderDto>) => node.id !== ROOT_FOLDER && canManageStructure(node.id),\n [canManageStructure]\n );\n\n const canDrop: TreeProps<FolderDto>[\"canDrop\"] = (_, options: DropOptions<FolderDto>) => {\n const { dragSourceId, dropTargetId } = options;\n const dropTagetAncestorIds = getFolderAncestors(dropTargetId).map(item => item.id);\n\n // Prevent dropping a folder into itself or its descendants\n return !(dragSourceId && dropTagetAncestorIds.includes(dragSourceId));\n };\n\n const nodeRenderer: TreeProps<FolderDto>[\"renderer\"] = node => {\n const folder = folders.find(folder => folder.id === node.id);\n return (\n <FolderProvider folder={folder}>\n <Node enableActions={enableActions} folderActions={folderActions} />\n </FolderProvider>\n );\n };\n\n const handleNodeClick = useCallback(\n (node: WithDefaultNodeData<FolderDto>) => {\n onFolderClick(node);\n },\n [onFolderClick]\n );\n\n return (\n <Tree<FolderDto>\n nodes={treeData}\n rootId={\"0\"}\n defaultOpenNodeIds={openFolderIds}\n onChangeOpen={handleChangeOpen}\n onDrop={onDrop}\n onNodeClick={handleNodeClick}\n sort={sort}\n canDrag={canDrag}\n canDrop={canDrop}\n renderer={nodeRenderer}\n defaultLockedOpenNodeIds={[ROOT_FOLDER]}\n loadingNodeIds={loading}\n />\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"components/FolderTree/List/List.js","sources":["../../../../src/components/FolderTree/List/List.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport {\n Tree,\n type NodeDto,\n type TreeProps,\n type WithDefaultNodeData,\n type DropOptions\n} from \"@webiny/admin-ui\";\nimport { useSnackbar } from \"@webiny/app-admin\";\nimport type { FolderDto } from \"~/domain/folder/FolderDto.js\";\nimport { useGetFolderLevelPermission } from \"~/features/folders/getFolderLevelPermission/index.js\";\nimport { useListFoldersByParentIds } from \"~/features/folders/listFoldersByParentIds/index.js\";\nimport { useGetFolderAncestors } from \"~/features/folders/getFolderAncestors/index.js\";\nimport { useUpdateFolder } from \"~/features/folders/updateFolder/index.js\";\nimport { Node } from \"../Node/index.js\";\nimport { createInitialOpenList, createTreeData } from \"./utils.js\";\nimport { ROOT_FOLDER } from \"~/constants.js\";\nimport { FolderProvider } from \"~/contexts/folder.js\";\nimport { useConfirmMoveFolderDialog } from \"~/dialogs/index.js\";\nimport type { FolderActionConfig } from \"~/config/AcoConfig.js\";\n\ninterface ListProps {\n folders: FolderDto[];\n folderActions: FolderActionConfig[];\n dropConfirmation?: boolean;\n focusedFolderId?: string;\n hiddenFolderIds?: string[];\n enableActions?: boolean;\n onFolderClick: (data: FolderDto) => void;\n}\n\nexport const List = ({\n folders,\n folderActions,\n onFolderClick,\n focusedFolderId,\n hiddenFolderIds,\n enableActions,\n dropConfirmation = false\n}: ListProps) => {\n const { listFoldersByParentIds, loading } = useListFoldersByParentIds();\n const { updateFolder } = useUpdateFolder();\n const { getFolderLevelPermission: canManageStructure } =\n useGetFolderLevelPermission(\"canManageStructure\");\n const { getFolderAncestors } = useGetFolderAncestors();\n const { showSnackbar } = useSnackbar();\n\n const [treeData, setTreeData] = useState<NodeDto<FolderDto>[]>([]);\n const [openFolderIds, setOpenFolderIds] = useState<string[]>([ROOT_FOLDER]);\n const { showDialog: showConfirmMoveFolderDialog } = useConfirmMoveFolderDialog();\n\n useEffect(() => {\n setTreeData(createTreeData(folders, focusedFolderId, hiddenFolderIds));\n }, [folders, focusedFolderId, hiddenFolderIds]);\n\n useEffect(() => {\n setOpenFolderIds(prev => {\n const expanded = createInitialOpenList(folders, prev, focusedFolderId);\n return [...new Set([ROOT_FOLDER, ...expanded])];\n });\n }, [focusedFolderId, folders, setOpenFolderIds]);\n\n const handleChangeOpen: TreeProps[\"onChangeOpen\"] = async nodes => {\n const folderIds = nodes.map(node => node.id);\n const updatedOpenIds = [...new Set([ROOT_FOLDER, ...folderIds])];\n setOpenFolderIds(updatedOpenIds);\n\n const fetchableIds = folderIds.filter(id => id !== ROOT_FOLDER && id !== \"0\");\n await listFoldersByParentIds(fetchableIds);\n };\n\n const handleDrop: TreeProps[\"onDrop\"] = async (_, { dragSourceId, dropTargetId }) => {\n try {\n const item = folders.find(folder => folder.id === dragSourceId);\n if (!item) {\n throw new Error(\"Folder not found!\");\n }\n\n await updateFolder({\n ...item,\n parentId: dropTargetId !== ROOT_FOLDER ? (dropTargetId as string) : null\n });\n } catch (error) {\n showSnackbar(error.message);\n }\n };\n\n const onDrop = useCallback<NonNullable<TreeProps[\"onDrop\"]>>(\n async (newTree, options: DropOptions) => {\n // Function to execute the drop logic\n const runDrop = async () => handleDrop(newTree, options);\n\n // If drop confirmation is enabled, show dialog before proceeding\n if (dropConfirmation) {\n const { dragSourceId, dropTargetId } = options;\n const folder = folders.find(f => f.id === dragSourceId);\n const targetFolder = folders.find(f => f.id === dropTargetId);\n\n // Abort if either folder is not found\n if (!folder || !targetFolder) {\n return;\n }\n\n showConfirmMoveFolderDialog({\n folder,\n targetFolder,\n onAccept: runDrop\n });\n } else {\n // Otherwise, perform the drop immediately\n await runDrop();\n }\n },\n [folders, dropConfirmation, showConfirmMoveFolderDialog]\n );\n\n const sort = useMemo(\n () => (a: NodeDto<any>, b: NodeDto<any>) => {\n if (a.id === ROOT_FOLDER || b.id === ROOT_FOLDER) {\n return 1;\n }\n return a.label.localeCompare(b.label, undefined, { numeric: true });\n },\n []\n );\n\n const canDrag: TreeProps<FolderDto>[\"canDrag\"] = useCallback(\n (node: NodeDto<FolderDto>) => node.id !== ROOT_FOLDER && canManageStructure(node.id),\n [canManageStructure]\n );\n\n const canDrop: TreeProps<FolderDto>[\"canDrop\"] = (_, options: DropOptions<FolderDto>) => {\n const { dragSourceId, dropTargetId } = options;\n const dropTagetAncestorIds = getFolderAncestors(dropTargetId).map(item => item.id);\n\n // Prevent dropping a folder into itself or its descendants\n return !(dragSourceId && dropTagetAncestorIds.includes(dragSourceId));\n };\n\n const nodeRenderer: TreeProps<FolderDto>[\"renderer\"] = node => {\n const folder = folders.find(folder => folder.id === node.id);\n return (\n <FolderProvider folder={folder}>\n <Node enableActions={enableActions} folderActions={folderActions} />\n </FolderProvider>\n );\n };\n\n const handleNodeClick = useCallback(\n (node: WithDefaultNodeData<FolderDto>) => {\n onFolderClick(node);\n },\n [onFolderClick]\n );\n\n return (\n <Tree<FolderDto>\n nodes={treeData}\n rootId={\"0\"}\n defaultOpenNodeIds={openFolderIds}\n onChangeOpen={handleChangeOpen}\n onDrop={onDrop}\n onNodeClick={handleNodeClick}\n sort={sort}\n canDrag={canDrag}\n canDrop={canDrop}\n renderer={nodeRenderer}\n defaultLockedOpenNodeIds={[ROOT_FOLDER]}\n loadingNodeIds={loading}\n />\n );\n};\n"],"names":["List","folders","folderActions","onFolderClick","focusedFolderId","hiddenFolderIds","enableActions","dropConfirmation","listFoldersByParentIds","loading","useListFoldersByParentIds","updateFolder","useUpdateFolder","canManageStructure","useGetFolderLevelPermission","getFolderAncestors","useGetFolderAncestors","showSnackbar","useSnackbar","treeData","setTreeData","useState","openFolderIds","setOpenFolderIds","ROOT_FOLDER","showConfirmMoveFolderDialog","useConfirmMoveFolderDialog","useEffect","createTreeData","prev","expanded","createInitialOpenList","Set","handleChangeOpen","nodes","folderIds","node","updatedOpenIds","fetchableIds","id","handleDrop","_","dragSourceId","dropTargetId","item","folder","Error","error","onDrop","useCallback","newTree","options","runDrop","f","targetFolder","sort","useMemo","a","b","undefined","canDrag","canDrop","dropTagetAncestorIds","nodeRenderer","FolderProvider","Node","handleNodeClick","Tree"],"mappings":"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"}
|
|
@@ -1,69 +1,36 @@
|
|
|
1
1
|
import { ROOT_FOLDER } from "../../../constants.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Return an array of ids of open folders, based on the current focused folder id, its parent folders and the folders
|
|
30
|
-
* opened by user interaction.
|
|
31
|
-
*
|
|
32
|
-
* @param folders list of folders returned by folders cache.
|
|
33
|
-
* @param openIds list of open folders ids.
|
|
34
|
-
* @param focusedId id of the current folder selected/focused.
|
|
35
|
-
* @return array of ids of open folders.
|
|
36
|
-
*/
|
|
37
|
-
export const createInitialOpenList = (folders = [], openIds = [], focusedId) => {
|
|
38
|
-
// There is always a root folder, opened by default
|
|
39
|
-
if (!focusedId) {
|
|
40
|
-
return openIds;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// Create a map for quick folder lookup by id
|
|
44
|
-
const folderMap = new Map(folders.map(folder => [folder.id, folder]));
|
|
45
|
-
// Store the chain of folder ids from the focused folder up to the root
|
|
46
|
-
const result = [];
|
|
47
|
-
let currentId = focusedId;
|
|
48
|
-
|
|
49
|
-
// Traverse up the folder tree, collecting parent ids
|
|
50
|
-
while (currentId) {
|
|
51
|
-
// Add the current folder id if not already in the result
|
|
52
|
-
if (!result.includes(currentId)) {
|
|
53
|
-
result.push(currentId);
|
|
54
|
-
}
|
|
55
|
-
// Get the folder object for the current id
|
|
56
|
-
const folder = folderMap.get(currentId);
|
|
57
|
-
// Get the parent id of the current folder
|
|
58
|
-
const parentId = folder?.parentId;
|
|
59
|
-
// Stop if there is no parent or we've already added this parent
|
|
60
|
-
if (!parentId || result.includes(parentId)) {
|
|
61
|
-
break;
|
|
2
|
+
const createTreeData = (folders = [], focusedNodeId, hiddenFolderIds = [])=>folders.map((item)=>{
|
|
3
|
+
const { id, parentId, title } = item;
|
|
4
|
+
return {
|
|
5
|
+
id,
|
|
6
|
+
parentId: parentId?.toLowerCase() || ROOT_FOLDER,
|
|
7
|
+
label: title,
|
|
8
|
+
droppable: true,
|
|
9
|
+
active: focusedNodeId === id
|
|
10
|
+
};
|
|
11
|
+
}).filter((item)=>!hiddenFolderIds.includes(item.id));
|
|
12
|
+
const createInitialOpenList = (folders = [], openIds = [], focusedId)=>{
|
|
13
|
+
if (!focusedId) return openIds;
|
|
14
|
+
const folderMap = new Map(folders.map((folder)=>[
|
|
15
|
+
folder.id,
|
|
16
|
+
folder
|
|
17
|
+
]));
|
|
18
|
+
const result = [];
|
|
19
|
+
let currentId = focusedId;
|
|
20
|
+
while(currentId){
|
|
21
|
+
if (!result.includes(currentId)) result.push(currentId);
|
|
22
|
+
const folder = folderMap.get(currentId);
|
|
23
|
+
const parentId = folder?.parentId;
|
|
24
|
+
if (!parentId || result.includes(parentId)) break;
|
|
25
|
+
currentId = parentId;
|
|
62
26
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
27
|
+
return [
|
|
28
|
+
...new Set([
|
|
29
|
+
...result,
|
|
30
|
+
...openIds
|
|
31
|
+
])
|
|
32
|
+
];
|
|
67
33
|
};
|
|
34
|
+
export { createInitialOpenList, createTreeData };
|
|
68
35
|
|
|
69
36
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"components/FolderTree/List/utils.js","sources":["../../../../src/components/FolderTree/List/utils.ts"],"sourcesContent":["import { ROOT_FOLDER } from \"~/constants.js\";\nimport type { NodeDto } from \"@webiny/admin-ui\";\nimport type { FolderDto } from \"~/domain/folder/FolderDto.js\";\n\n/**\n * Transform an array of folders returned by folders cache into an array of elements for the tree component.\n *\n * @param folders list of folders returned by folders cache.\n * @param focusedNodeId id of the current folder selected/focused.\n * @param hiddenFolderIds list ids of the folder you don't want to show within the list.\n * @return array of elements to render the tree component.\n */\nexport const createTreeData = (\n folders: FolderDto[] = [],\n focusedNodeId?: string,\n hiddenFolderIds: string[] = []\n): NodeDto<FolderDto>[] => {\n return folders\n .map(item => {\n const { id, parentId, title } = item;\n\n return {\n id,\n // toLowerCase() fixes a bug introduced by 5.36.0: accidentally we stored \"ROOT\" as parentId, instead of null\n parentId: parentId?.toLowerCase() || ROOT_FOLDER,\n label: title,\n droppable: true,\n active: focusedNodeId === id\n };\n })\n .filter(item => !hiddenFolderIds.includes(item.id));\n};\n\n/**\n * Return an array of ids of open folders, based on the current focused folder id, its parent folders and the folders\n * opened by user interaction.\n *\n * @param folders list of folders returned by folders cache.\n * @param openIds list of open folders ids.\n * @param focusedId id of the current folder selected/focused.\n * @return array of ids of open folders.\n */\nexport const createInitialOpenList = (\n folders: FolderDto[] = [],\n openIds: string[] = [],\n focusedId?: string\n): string[] => {\n // There is always a root folder, opened by default\n if (!focusedId) {\n return openIds;\n }\n\n // Create a map for quick folder lookup by id\n const folderMap = new Map(folders.map(folder => [folder.id, folder]));\n // Store the chain of folder ids from the focused folder up to the root\n const result: string[] = [];\n\n let currentId: string | undefined = focusedId;\n\n // Traverse up the folder tree, collecting parent ids\n while (currentId) {\n // Add the current folder id if not already in the result\n if (!result.includes(currentId)) {\n result.push(currentId);\n }\n // Get the folder object for the current id\n const folder = folderMap.get(currentId) as FolderDto | undefined;\n // Get the parent id of the current folder\n const parentId = folder?.parentId;\n // Stop if there is no parent or we've already added this parent\n if (!parentId || result.includes(parentId)) {\n break;\n }\n // Move up to the parent folder\n currentId = parentId;\n }\n\n return [...new Set([...result, ...openIds])];\n};\n"],"names":["createTreeData","folders","focusedNodeId","hiddenFolderIds","item","id","parentId","title","ROOT_FOLDER","createInitialOpenList","openIds","focusedId","folderMap","Map","folder","result","currentId","Set"],"mappings":";AAYO,MAAMA,iBAAiB,CAC1BC,UAAuB,EAAE,EACzBC,eACAC,kBAA4B,EAAE,GAEvBF,QACF,GAAG,CAACG,CAAAA;QACD,MAAM,EAAEC,EAAE,EAAEC,QAAQ,EAAEC,KAAK,EAAE,GAAGH;QAEhC,OAAO;YACHC;YAEA,UAAUC,UAAU,iBAAiBE;YACrC,OAAOD;YACP,WAAW;YACX,QAAQL,kBAAkBG;QAC9B;IACJ,GACC,MAAM,CAACD,CAAAA,OAAQ,CAACD,gBAAgB,QAAQ,CAACC,KAAK,EAAE;AAYlD,MAAMK,wBAAwB,CACjCR,UAAuB,EAAE,EACzBS,UAAoB,EAAE,EACtBC;IAGA,IAAI,CAACA,WACD,OAAOD;IAIX,MAAME,YAAY,IAAIC,IAAIZ,QAAQ,GAAG,CAACa,CAAAA,SAAU;YAACA,OAAO,EAAE;YAAEA;SAAO;IAEnE,MAAMC,SAAmB,EAAE;IAE3B,IAAIC,YAAgCL;IAGpC,MAAOK,UAAW;QAEd,IAAI,CAACD,OAAO,QAAQ,CAACC,YACjBD,OAAO,IAAI,CAACC;QAGhB,MAAMF,SAASF,UAAU,GAAG,CAACI;QAE7B,MAAMV,WAAWQ,QAAQ;QAEzB,IAAI,CAACR,YAAYS,OAAO,QAAQ,CAACT,WAC7B;QAGJU,YAAYV;IAChB;IAEA,OAAO;WAAI,IAAIW,IAAI;eAAIF;eAAWL;SAAQ;KAAE;AAChD"}
|
|
@@ -1,22 +1,19 @@
|
|
|
1
|
-
import
|
|
1
|
+
import react from "react";
|
|
2
2
|
import { Skeleton } from "@webiny/admin-ui";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
type: "text",
|
|
17
|
-
size: "md"
|
|
18
|
-
}));
|
|
19
|
-
}));
|
|
3
|
+
const Loader = ({ count = 4 })=>{
|
|
4
|
+
const lines = Array.from({
|
|
5
|
+
length: count
|
|
6
|
+
});
|
|
7
|
+
return /*#__PURE__*/ react.createElement("div", {
|
|
8
|
+
className: "my-md p-xs"
|
|
9
|
+
}, lines.map((_, index)=>/*#__PURE__*/ react.createElement("div", {
|
|
10
|
+
key: `folder-skeleton-${index}`,
|
|
11
|
+
className: "mb-xs px-sm py-xs-plus"
|
|
12
|
+
}, /*#__PURE__*/ react.createElement(Skeleton, {
|
|
13
|
+
type: "text",
|
|
14
|
+
size: "md"
|
|
15
|
+
}))));
|
|
20
16
|
};
|
|
17
|
+
export { Loader };
|
|
21
18
|
|
|
22
19
|
//# sourceMappingURL=Loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"components/FolderTree/Loader/Loader.js","sources":["../../../../src/components/FolderTree/Loader/Loader.tsx"],"sourcesContent":["import React from \"react\";\nimport { Skeleton } from \"@webiny/admin-ui\";\n\ninterface LoaderProps {\n count?: number;\n}\n\nexport const Loader = ({ count = 4 }: LoaderProps) => {\n const lines = Array.from({ length: count });\n\n return (\n <div className={\"my-md p-xs\"}>\n {lines.map((_, index) => {\n return (\n <div key={`folder-skeleton-${index}`} className={\"mb-xs px-sm py-xs-plus\"}>\n <Skeleton type={\"text\"} size={\"md\"} />\n </div>\n );\n })}\n </div>\n );\n};\n"],"names":["Loader","count","lines","Array","_","index","Skeleton"],"mappings":";;AAOO,MAAMA,SAAS,CAAC,EAAEC,QAAQ,CAAC,EAAe;IAC7C,MAAMC,QAAQC,MAAM,IAAI,CAAC;QAAE,QAAQF;IAAM;IAEzC,OAAO,WAAP,GACI,oBAAC;QAAI,WAAW;OACXC,MAAM,GAAG,CAAC,CAACE,GAAGC,QACJ,WAAP,GACI,oBAAC;YAAI,KAAK,CAAC,gBAAgB,EAAEA,OAAO;YAAE,WAAW;yBAC7C,oBAACC,UAAQA;YAAC,MAAM;YAAQ,MAAM;;AAMtD"}
|
|
@@ -1,32 +1,24 @@
|
|
|
1
|
-
import
|
|
1
|
+
import react from "react";
|
|
2
2
|
import { OptionsMenu } from "@webiny/app-admin";
|
|
3
|
-
import {
|
|
4
|
-
import { ReactComponent
|
|
3
|
+
import { IconButton, cn } from "@webiny/admin-ui";
|
|
4
|
+
import { ReactComponent } from "@webiny/icons/more_vert.svg";
|
|
5
5
|
import { useFolder } from "../../../hooks/index.js";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}, /*#__PURE__*/React.createElement(OptionsMenu, {
|
|
22
|
-
trigger: /*#__PURE__*/React.createElement(IconButton, {
|
|
23
|
-
icon: /*#__PURE__*/React.createElement(MoreVerticalIcon, null),
|
|
24
|
-
size: "xs",
|
|
25
|
-
variant: "ghost"
|
|
26
|
-
}),
|
|
27
|
-
actions: folderActions,
|
|
28
|
-
"data-testid": "folder.tree.menu-action"
|
|
29
|
-
}));
|
|
6
|
+
const MenuActions = ({ folderActions })=>{
|
|
7
|
+
const { folder } = useFolder();
|
|
8
|
+
if (!folder.canManageStructure) return null;
|
|
9
|
+
return /*#__PURE__*/ react.createElement("div", {
|
|
10
|
+
onClick: (e)=>e.stopPropagation(),
|
|
11
|
+
className: cn("invisible group-hover:visible", "size-md cursor-pointer", "absolute top-1/2 right-sm -translate-y-1/2")
|
|
12
|
+
}, /*#__PURE__*/ react.createElement(OptionsMenu, {
|
|
13
|
+
trigger: /*#__PURE__*/ react.createElement(IconButton, {
|
|
14
|
+
icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
|
|
15
|
+
size: "xs",
|
|
16
|
+
variant: "ghost"
|
|
17
|
+
}),
|
|
18
|
+
actions: folderActions,
|
|
19
|
+
"data-testid": "folder.tree.menu-action"
|
|
20
|
+
}));
|
|
30
21
|
};
|
|
22
|
+
export { MenuActions };
|
|
31
23
|
|
|
32
24
|
//# sourceMappingURL=MenuActions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"components/FolderTree/MenuActions/MenuActions.js","sources":["../../../../src/components/FolderTree/MenuActions/MenuActions.tsx"],"sourcesContent":["import React from \"react\";\nimport { OptionsMenu } from \"@webiny/app-admin\";\nimport { cn, IconButton } from \"@webiny/admin-ui\";\nimport { ReactComponent as MoreVerticalIcon } from \"@webiny/icons/more_vert.svg\";\nimport type { FolderActionConfig } from \"~/config/index.js\";\nimport { useFolder } from \"~/hooks/index.js\";\n\ninterface MenuActionsProps {\n folderActions: FolderActionConfig[];\n}\n\nexport const MenuActions = ({ folderActions }: MenuActionsProps) => {\n const { folder } = useFolder();\n\n // If the user cannot manage folder structure, no need to show the menu.\n if (!folder.canManageStructure) {\n return null;\n }\n\n return (\n <div\n // Let's stop click event propagation, otherwise opening the OptionsMenu event will propagate up to the main Tree Item\n onClick={e => e.stopPropagation()}\n className={cn(\n \"invisible group-hover:visible\",\n \"size-md cursor-pointer\",\n \"absolute top-1/2 right-sm -translate-y-1/2\"\n )}\n >\n <OptionsMenu\n trigger={<IconButton icon={<MoreVerticalIcon />} size={\"xs\"} variant={\"ghost\"} />}\n actions={folderActions}\n data-testid={\"folder.tree.menu-action\"}\n />\n </div>\n );\n};\n"],"names":["MenuActions","folderActions","folder","useFolder","e","cn","OptionsMenu","IconButton","MoreVerticalIcon"],"mappings":";;;;;AAWO,MAAMA,cAAc,CAAC,EAAEC,aAAa,EAAoB;IAC3D,MAAM,EAAEC,MAAM,EAAE,GAAGC;IAGnB,IAAI,CAACD,OAAO,kBAAkB,EAC1B,OAAO;IAGX,OAAO,WAAP,GACI,oBAAC;QAEG,SAASE,CAAAA,IAAKA,EAAE,eAAe;QAC/B,WAAWC,GACP,iCACA,0BACA;qBAGJ,oBAACC,aAAWA;QACR,uBAAS,oBAACC,YAAUA;YAAC,oBAAM,oBAACC,gBAAgBA;YAAK,MAAM;YAAM,SAAS;;QACtE,SAASP;QACT,eAAa;;AAI7B"}
|