From 8d5eaa35f5f3c77527bee020a08c59b2306e4396 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 1 Apr 2024 10:11:33 +0200 Subject: [PATCH 01/34] add repo to sort children --- .../documents/entity-actions/manifests.ts | 9 ---- .../entity-actions/sort-children-of/index.ts | 6 +++ .../sort-children-of/manifests.ts | 17 +++++++ .../sort-children-of/repository/constants.ts | 1 + .../sort-children-of/repository/index.ts | 3 ++ .../sort-children-of/repository/manifests.ts | 11 +++++ .../repository/sort-children-of.repository.ts | 39 ++++++++++++++++ .../sort-children-of.server.data.ts | 46 +++++++++++++++++++ 8 files changed, 123 insertions(+), 9 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/constants.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/sort-children-of.repository.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/sort-children-of.server.data.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/manifests.ts index 36d9a0cf3e..7a4cb0b594 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/manifests.ts @@ -59,15 +59,6 @@ const entityActions: Array = [ pickerModal: UMB_DOCUMENT_PICKER_MODAL, }, }, - { - type: 'entityAction', - kind: 'sort', - alias: 'Umb.EntityAction.Document.Sort', - name: 'Sort Document Entity Action', - weight: 700, - forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], - meta: {}, - }, { type: 'entityAction', kind: 'default', diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/index.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/index.ts new file mode 100644 index 0000000000..8276e983e9 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/index.ts @@ -0,0 +1,6 @@ +export { + UmbSortChildrenOfDocumentRepository, + UMB_SORT_CHILDREN_OF_DOCUMENT_REPOSITORY_ALIAS, +} from './repository/index.js'; + +export type { UmbSortChildrenOfArgs } from './repository/index.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/manifests.ts new file mode 100644 index 0000000000..8ab4ef9f5e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/manifests.ts @@ -0,0 +1,17 @@ +import { UMB_DOCUMENT_ENTITY_TYPE } from '../../entity.js'; +import { UMB_DOCUMENT_ITEM_REPOSITORY_ALIAS } from '../../repository/index.js'; +import { UMB_SORT_CHILDREN_OF_DOCUMENT_REPOSITORY_ALIAS } from './repository/constants.js'; + +export const manifests = [ + { + type: 'entityAction', + kind: 'sort', + alias: 'Umb.EntityAction.Document.SortChildrenOf', + name: 'Sort Children Of Document Entity Action', + forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], + meta: { + itemRepositoryAlias: UMB_DOCUMENT_ITEM_REPOSITORY_ALIAS, + sortRepositoryAlias: UMB_SORT_CHILDREN_OF_DOCUMENT_REPOSITORY_ALIAS, + }, + }, +]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/constants.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/constants.ts new file mode 100644 index 0000000000..cc0716dc9a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/constants.ts @@ -0,0 +1 @@ +export const UMB_SORT_CHILDREN_OF_DOCUMENT_REPOSITORY_ALIAS = 'Umb.Repository.Document.SortChildrenOf'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/index.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/index.ts new file mode 100644 index 0000000000..ce7a0f56a4 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/index.ts @@ -0,0 +1,3 @@ +export { UmbSortChildrenOfDocumentRepository } from './sort-children-of.repository.js'; +export { UMB_SORT_CHILDREN_OF_DOCUMENT_REPOSITORY_ALIAS } from './constants.js'; +export type { UmbSortChildrenOfArgs } from './types.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/manifests.ts new file mode 100644 index 0000000000..0e17f4f6df --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/manifests.ts @@ -0,0 +1,11 @@ +import { UMB_SORT_CHILDREN_OF_DOCUMENT_REPOSITORY_ALIAS } from './constants.js'; +import type { ManifestRepository } from '@umbraco-cms/backoffice/extension-registry'; + +const repository: ManifestRepository = { + type: 'repository', + alias: UMB_SORT_CHILDREN_OF_DOCUMENT_REPOSITORY_ALIAS, + name: 'Sort Children Of Document Repository', + api: () => import('./sort-children-of.repository.js'), +}; + +export const manifests = [repository]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/sort-children-of.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/sort-children-of.repository.ts new file mode 100644 index 0000000000..013cebdf8f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/sort-children-of.repository.ts @@ -0,0 +1,39 @@ +import { UmbSortChildrenOfDocumentServerDataSource } from './sort-children-of.server.data.js'; +import type { UmbSortChildrenOfArgs } from './types.js'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api'; +import type { UmbNotificationContext } from '@umbraco-cms/backoffice/notification'; +import { UMB_NOTIFICATION_CONTEXT } from '@umbraco-cms/backoffice/notification'; +import type { UmbApi } from '@umbraco-cms/backoffice/extension-api'; + +export class UmbSortChildrenOfDocumentRepository extends UmbControllerBase implements UmbApi { + #dataSource: UmbSortChildrenOfDocumentServerDataSource; + + #notificationContext?: UmbNotificationContext; + + constructor(host: UmbControllerHost) { + super(host); + + this.#dataSource = new UmbSortChildrenOfDocumentServerDataSource(this); + + this.consumeContext(UMB_NOTIFICATION_CONTEXT, (instance) => { + this.#notificationContext = instance; + }); + } + + async sortChildrenOf(args: UmbSortChildrenOfArgs) { + if (!args.unique) throw new Error('Unique is missing'); + if (!args.sorting) throw new Error('Sorting details are missing'); + + const { error } = await this.#dataSource.sortChildrenOf(args); + + if (!error) { + const notification = { data: { message: `Items sorted` } }; + this.#notificationContext?.peek('positive', notification); + } + + return { error }; + } +} + +export { UmbSortChildrenOfDocumentRepository as api }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/sort-children-of.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/sort-children-of.server.data.ts new file mode 100644 index 0000000000..3af9de7e2b --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/sort-children-of.server.data.ts @@ -0,0 +1,46 @@ +import type { UmbSortChildrenOfArgs } from './types.js'; +import { DocumentResource } from '@umbraco-cms/backoffice/external/backend-api'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; + +/** + * A server data source for sorting children of a Document + * @export + * @class UmbSortChildrenOfDocumentServerDataSource + * @implements {RepositoryDetailDataSource} + */ +export class UmbSortChildrenOfDocumentServerDataSource { + #host: UmbControllerHost; + + /** + * Creates an instance of UmbSortChildrenOfDocumentServerDataSource. + * @param {UmbControllerHost} host + * @memberof UmbSortChildrenOfDocumentServerDataSource + */ + constructor(host: UmbControllerHost) { + this.#host = host; + } + + /** + * Creates the Public Access for the given Document unique + * @param {UmbSortChildrenOfArgs} args + * @memberof UmbSortChildrenOfDocumentServerDataSource + */ + async sortChildrenOf(args: UmbSortChildrenOfArgs) { + if (!args.unique) throw new Error('unique is missing'); + + const sortingMapping = args.sorting.map((item) => ({ id: item.unique, sortOrder: item.sortOrder })); + + return tryExecuteAndNotify( + this.#host, + DocumentResource.putDocumentSort({ + requestBody: { + parent: { + id: args.unique, + }, + sorting: sortingMapping, + }, + }), + ); + } +} From 198ab9a50435488a530c5bc3ffc40ebdea651fc8 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 1 Apr 2024 10:11:56 +0200 Subject: [PATCH 02/34] add type for args --- .../entity-actions/sort-children-of/repository/types.ts | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/types.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/types.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/types.ts new file mode 100644 index 0000000000..3e08bcc734 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/types.ts @@ -0,0 +1,4 @@ +export interface UmbSortChildrenOfArgs { + unique: string; + sorting: Array<{ unique: string; sortOrder: number }>; +} From e8bf184177438fb3667bc65ce39eeef7d3b46f4a Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 1 Apr 2024 10:12:10 +0200 Subject: [PATCH 03/34] add kind types --- .../sort-children-of/sort-children-of.action.kind.ts | 5 ++--- .../extension-registry/models/entity-action.model.ts | 11 +++++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/sort-children-of.action.kind.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/sort-children-of.action.kind.ts index ff9e06647f..c2a86fb691 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/sort-children-of.action.kind.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/sort-children-of.action.kind.ts @@ -15,10 +15,9 @@ export const manifest: UmbBackofficeManifestKind = { forEntityTypes: [], meta: { icon: 'icon-height', - label: 'Sort (TBD)...', + label: 'Sort...', itemRepositoryAlias: '', - moveRepositoryAlias: '', - pickerModal: '', + sortRepositoryAlias: '', }, }, }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts index b48d33e454..37862f6e73 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts @@ -130,3 +130,14 @@ export interface ManifestEntityActionDeleteFolderKind extends ManifestEntityActi export interface MetaEntityActionFolderKind extends MetaEntityActionDefaultKind { folderRepositoryAlias: string; } + +// SORT +export interface ManifestEntityActionSortKind extends ManifestEntityAction { + type: 'entityAction'; + kind: 'sort'; +} + +export interface MetaEntityActionSortKind extends MetaEntityActionDefaultKind { + itemRepositoryAlias: string; + sortRepositoryAlias: string; +} From 6819c6b817f146be4399af4e794efac37bf0c76c Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 1 Apr 2024 10:14:57 +0200 Subject: [PATCH 04/34] make naming more explicit --- .../sort-children-of.action.kind.ts | 8 ++++---- .../models/entity-action.model.ts | 9 +++++---- .../core/extension-registry/models/index.ts | 14 ++++++++------ .../entity-actions/sort-children-of/manifests.ts | 2 +- 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/sort-children-of.action.kind.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/sort-children-of.action.kind.ts index c2a86fb691..42dab12acb 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/sort-children-of.action.kind.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/sort-children-of.action.kind.ts @@ -3,19 +3,19 @@ import type { UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extensio export const manifest: UmbBackofficeManifestKind = { type: 'kind', - alias: 'Umb.Kind.EntityAction.Sort', - matchKind: 'sort', + alias: 'Umb.Kind.EntityAction.SortChildrenOf', + matchKind: 'sortChildrenOf', matchType: 'entityAction', manifest: { ...UMB_ENTITY_ACTION_DEFAULT_KIND_MANIFEST.manifest, type: 'entityAction', - kind: 'sort', + kind: 'sortChildrenOf', api: () => import('./sort-children-of.action.js'), weight: 100, forEntityTypes: [], meta: { icon: 'icon-height', - label: 'Sort...', + label: 'Sort Children...', itemRepositoryAlias: '', sortRepositoryAlias: '', }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts index 37862f6e73..f61db36192 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts @@ -132,12 +132,13 @@ export interface MetaEntityActionFolderKind extends MetaEntityActionDefaultKind } // SORT -export interface ManifestEntityActionSortKind extends ManifestEntityAction { +export interface ManifestEntityActionSortChildrenOfKind + extends ManifestEntityAction { type: 'entityAction'; - kind: 'sort'; + kind: 'sortChildrenOf'; } -export interface MetaEntityActionSortKind extends MetaEntityActionDefaultKind { +export interface MetaEntityActionSortChildrenOfKind extends MetaEntityActionDefaultKind { itemRepositoryAlias: string; - sortRepositoryAlias: string; + sortChildrenOfRepositoryAlias: string; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/index.ts index fac0614d51..bd0341840b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/index.ts @@ -15,6 +15,7 @@ import type { ManifestEntityActionDeleteFolderKind, ManifestEntityActionDefaultKind, ManifestEntityActionTrashKind, + ManifestEntityActionSortChildrenOfKind, } from './entity-action.model.js'; import type { ManifestDynamicRootOrigin, ManifestDynamicRootQueryStep } from './dynamic-root.model.js'; import type { ManifestEntityBulkAction } from './entity-bulk-action.model.js'; @@ -103,16 +104,17 @@ export type * from './workspace.model.js'; export type ManifestEntityActions = | ManifestEntityAction + | ManifestEntityActionCreateFolderKind | ManifestEntityActionDefaultKind + | ManifestEntityActionDeleteFolderKind | ManifestEntityActionDeleteKind - | ManifestEntityActionRenameKind - | ManifestEntityActionReloadTreeItemChildrenKind | ManifestEntityActionDuplicateKind | ManifestEntityActionMoveKind - | ManifestEntityActionCreateFolderKind - | ManifestEntityActionUpdateFolderKind - | ManifestEntityActionDeleteFolderKind - | ManifestEntityActionTrashKind; + | ManifestEntityActionReloadTreeItemChildrenKind + | ManifestEntityActionRenameKind + | ManifestEntityActionSortChildrenOfKind + | ManifestEntityActionTrashKind + | ManifestEntityActionUpdateFolderKind; export type ManifestWorkspaceFooterApps = | ManifestWorkspaceFooterApp diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/manifests.ts index 8ab4ef9f5e..0c5282075d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/manifests.ts @@ -5,7 +5,7 @@ import { UMB_SORT_CHILDREN_OF_DOCUMENT_REPOSITORY_ALIAS } from './repository/con export const manifests = [ { type: 'entityAction', - kind: 'sort', + kind: 'sortChildrenOf', alias: 'Umb.EntityAction.Document.SortChildrenOf', name: 'Sort Children Of Document Entity Action', forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], From 5610708ee21da73bfeccafb46dc72fb391fa1ab6 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 1 Apr 2024 10:16:12 +0200 Subject: [PATCH 05/34] Update entity-action.model.ts --- .../core/extension-registry/models/entity-action.model.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts index f61db36192..e446836217 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts @@ -131,7 +131,7 @@ export interface MetaEntityActionFolderKind extends MetaEntityActionDefaultKind folderRepositoryAlias: string; } -// SORT +// SORT CHILDREN OF export interface ManifestEntityActionSortChildrenOfKind extends ManifestEntityAction { type: 'entityAction'; From 007f39c66860488231a40a33f2d81e7018921876 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 1 Apr 2024 10:18:06 +0200 Subject: [PATCH 06/34] export manifests --- .../packages/documents/documents/entity-actions/manifests.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/manifests.ts index 7a4cb0b594..3d5c84ca4c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/manifests.ts @@ -4,6 +4,7 @@ import { UMB_DOCUMENT_PICKER_MODAL } from '../modals/index.js'; import { manifests as createManifests } from './create/manifests.js'; import { manifests as publicAccessManifests } from './public-access/manifests.js'; import { manifests as cultureAndHostnamesManifests } from './culture-and-hostnames/manifests.js'; +import { manifests as sortChildrenOfManifests } from './sort-children-of/manifests.js'; import type { ManifestEntityAction } from '@umbraco-cms/backoffice/extension-registry'; const entityActions: Array = [ @@ -117,5 +118,6 @@ export const manifests = [ ...createManifests, ...publicAccessManifests, ...cultureAndHostnamesManifests, + ...sortChildrenOfManifests, ...entityActions, ]; From e58cf5455c3d857dc28afa72738a65c6ab484c22 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 1 Apr 2024 10:18:11 +0200 Subject: [PATCH 07/34] export apis --- .../src/packages/documents/documents/entity-actions/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/index.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/index.ts index 24085f0259..0570228f3e 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/index.ts @@ -1,2 +1,3 @@ export * from './public-access/index.js'; export * from './culture-and-hostnames/index.js'; +export * from './sort-children-of/index.js'; From e3c1563cc0f25f333ccc267817ebca8056043448 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 1 Apr 2024 10:20:15 +0200 Subject: [PATCH 08/34] register sort children for document root --- .../documents/entity-actions/sort-children-of/manifests.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/manifests.ts index 0c5282075d..1035fe738d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/manifests.ts @@ -1,4 +1,4 @@ -import { UMB_DOCUMENT_ENTITY_TYPE } from '../../entity.js'; +import { UMB_DOCUMENT_ENTITY_TYPE, UMB_DOCUMENT_ROOT_ENTITY_TYPE } from '../../entity.js'; import { UMB_DOCUMENT_ITEM_REPOSITORY_ALIAS } from '../../repository/index.js'; import { UMB_SORT_CHILDREN_OF_DOCUMENT_REPOSITORY_ALIAS } from './repository/constants.js'; @@ -8,7 +8,7 @@ export const manifests = [ kind: 'sortChildrenOf', alias: 'Umb.EntityAction.Document.SortChildrenOf', name: 'Sort Children Of Document Entity Action', - forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], + forEntityTypes: [UMB_DOCUMENT_ROOT_ENTITY_TYPE, UMB_DOCUMENT_ENTITY_TYPE], meta: { itemRepositoryAlias: UMB_DOCUMENT_ITEM_REPOSITORY_ALIAS, sortRepositoryAlias: UMB_SORT_CHILDREN_OF_DOCUMENT_REPOSITORY_ALIAS, From 069551bbf58e27b42add1188d034583049b6d472 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 1 Apr 2024 10:46:35 +0200 Subject: [PATCH 09/34] register sorting modal --- .../common/sort-children-of/manifests.ts | 5 ++- .../sort-children-of/modal/constants.ts | 1 + .../common/sort-children-of/modal/index.ts | 2 + .../sort-children-of/modal/manifests.ts | 11 ++++++ .../modal/sort-children-of-modal.element.ts | 37 +++++++++++++++++++ .../modal/sort-children-of-modal.token.ts | 20 ++++++++++ .../sort-children-of.action.ts | 14 +++---- .../sort-children-of/manifests.ts | 5 ++- 8 files changed, 84 insertions(+), 11 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/constants.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.token.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/manifests.ts index b792878165..234ced8c91 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/manifests.ts @@ -1,3 +1,4 @@ -import { manifest as sortKindManifest } from './sort-children-of.action.kind.js'; +import { manifest as kindManifest } from './sort-children-of.action.kind.js'; +import { manifests as modalManifests } from './modal/manifests.js'; -export const manifests = [sortKindManifest]; +export const manifests = [kindManifest, ...modalManifests]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/constants.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/constants.ts new file mode 100644 index 0000000000..b54e13bb05 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/constants.ts @@ -0,0 +1 @@ +export const UMB_SORT_CHILDREN_OF_MODAL_ALIAS = 'Umb.Modal.SortChildrenOf'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/index.ts new file mode 100644 index 0000000000..f434e8e619 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/index.ts @@ -0,0 +1,2 @@ +export * from './constants.js'; +export * from './sort-children-of-modal.token.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/manifests.ts new file mode 100644 index 0000000000..7a2dbb915a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/manifests.ts @@ -0,0 +1,11 @@ +import { UMB_SORT_CHILDREN_OF_MODAL_ALIAS } from './constants.js'; +import type { ManifestModal } from '@umbraco-cms/backoffice/extension-registry'; + +export const manifests: Array = [ + { + type: 'modal', + alias: UMB_SORT_CHILDREN_OF_MODAL_ALIAS, + name: 'Sort Children Of Modal', + js: () => import('./sort-children-of-modal.element.js'), + }, +]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts new file mode 100644 index 0000000000..30f0c3014a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts @@ -0,0 +1,37 @@ +import type { UmbSortChildrenOfModalData, UmbSortChildrenOfModalValue } from './sort-children-of-modal.token.js'; +import { html, customElement, css } from '@umbraco-cms/backoffice/external/lit'; +import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; +import { UmbModalBaseElement } from '@umbraco-cms/backoffice/modal'; + +@customElement('umb-sort-children-of-modal') +export class UmbRenameModalElement extends UmbModalBaseElement< + UmbSortChildrenOfModalData, + UmbSortChildrenOfModalValue +> { + render() { + return html` + + Sorting UI here + + + + `; + } + + static styles = [ + UmbTextStyles, + css` + #name { + width: 100%; + } + `, + ]; +} + +export default UmbRenameModalElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-rename-modal': UmbRenameModalElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.token.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.token.ts new file mode 100644 index 0000000000..bc834773ed --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.token.ts @@ -0,0 +1,20 @@ +import { UMB_SORT_CHILDREN_OF_MODAL_ALIAS } from './constants.js'; +import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; + +export interface UmbSortChildrenOfModalData { + unique: string; + itemRepositoryAlias: string; + sortChildrenOfRepositoryAlias: string; +} + +export interface UmbSortChildrenOfModalValue {} + +export const UMB_SORT_CHILDREN_OF_MODAL = new UmbModalToken( + UMB_SORT_CHILDREN_OF_MODAL_ALIAS, + { + modal: { + type: 'sidebar', + size: 'small', + }, + }, +); diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/sort-children-of.action.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/sort-children-of.action.ts index d67149e519..bea7fd9f0a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/sort-children-of.action.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/sort-children-of.action.ts @@ -1,13 +1,13 @@ import { UmbEntityActionBase } from '../../entity-action-base.js'; -import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; - -export class UmbSortChildrenOfEntityAction extends UmbEntityActionBase { - constructor(host: UmbControllerHost, args: any) { - super(host, args); - } +import { UMB_SORT_CHILDREN_OF_MODAL } from './modal/index.js'; +import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal'; +import type { MetaEntityActionSortChildrenOfKind } from '@umbraco-cms/backoffice/extension-registry'; +export class UmbSortChildrenOfEntityAction extends UmbEntityActionBase { async execute() { - console.log(`execute sort for: ${this.args.unique}`); + const modalManager = await this.getContext(UMB_MODAL_MANAGER_CONTEXT); + const modal = modalManager.open(this._host, UMB_SORT_CHILDREN_OF_MODAL); + await modal.onSubmit(); } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/manifests.ts index 1035fe738d..e505eae313 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/manifests.ts @@ -1,8 +1,9 @@ import { UMB_DOCUMENT_ENTITY_TYPE, UMB_DOCUMENT_ROOT_ENTITY_TYPE } from '../../entity.js'; import { UMB_DOCUMENT_ITEM_REPOSITORY_ALIAS } from '../../repository/index.js'; import { UMB_SORT_CHILDREN_OF_DOCUMENT_REPOSITORY_ALIAS } from './repository/constants.js'; +import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; -export const manifests = [ +export const manifests: Array = [ { type: 'entityAction', kind: 'sortChildrenOf', @@ -11,7 +12,7 @@ export const manifests = [ forEntityTypes: [UMB_DOCUMENT_ROOT_ENTITY_TYPE, UMB_DOCUMENT_ENTITY_TYPE], meta: { itemRepositoryAlias: UMB_DOCUMENT_ITEM_REPOSITORY_ALIAS, - sortRepositoryAlias: UMB_SORT_CHILDREN_OF_DOCUMENT_REPOSITORY_ALIAS, + sortChildrenOfRepositoryAlias: UMB_SORT_CHILDREN_OF_DOCUMENT_REPOSITORY_ALIAS, }, }, ]; From 1658d69579f9899c9a308bb79e34c53869b925ac Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 1 Apr 2024 16:46:32 +0200 Subject: [PATCH 10/34] fix naming --- .../modal/sort-children-of-modal.element.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts index 30f0c3014a..0df893c166 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts @@ -3,8 +3,10 @@ import { html, customElement, css } from '@umbraco-cms/backoffice/external/lit'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { UmbModalBaseElement } from '@umbraco-cms/backoffice/modal'; -@customElement('umb-sort-children-of-modal') -export class UmbRenameModalElement extends UmbModalBaseElement< +const elementName = 'umb-sort-children-of-modal'; + +@customElement(elementName) +export class UmbSortChildrenOfModalElement extends UmbModalBaseElement< UmbSortChildrenOfModalData, UmbSortChildrenOfModalValue > { @@ -28,10 +30,10 @@ export class UmbRenameModalElement extends UmbModalBaseElement< ]; } -export default UmbRenameModalElement; +export default UmbSortChildrenOfModalElement; declare global { interface HTMLElementTagNameMap { - 'umb-rename-modal': UmbRenameModalElement; + [elementName]: UmbSortChildrenOfModalElement; } } From fb1402186762a45bfc63dbb956e578acf1663eb7 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 1 Apr 2024 16:47:40 +0200 Subject: [PATCH 11/34] export as element --- .../sort-children-of/modal/sort-children-of-modal.element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts index 0df893c166..a2066b16e7 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts @@ -30,7 +30,7 @@ export class UmbSortChildrenOfModalElement extends UmbModalBaseElement< ]; } -export default UmbSortChildrenOfModalElement; +export { UmbSortChildrenOfModalElement as element }; declare global { interface HTMLElementTagNameMap { From 5af4a2ed1060ee091585afc033df26f6cd06d038 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 1 Apr 2024 21:08:09 +0200 Subject: [PATCH 12/34] wip sort controller --- .../modal/sort-children-of-modal.element.ts | 79 ++++++++++++++++++- .../modal/sort-children-of-modal.token.ts | 4 +- .../sort-children-of.action.ts | 10 ++- .../models/entity-action.model.ts | 1 + .../sort-children-of/manifests.ts | 2 + 5 files changed, 92 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts index a2066b16e7..c3afe60046 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts @@ -1,7 +1,12 @@ import type { UmbSortChildrenOfModalData, UmbSortChildrenOfModalValue } from './sort-children-of-modal.token.js'; -import { html, customElement, css } from '@umbraco-cms/backoffice/external/lit'; +import type { PropertyValueMap } from '@umbraco-cms/backoffice/external/lit'; +import { html, customElement, css, state, repeat } from '@umbraco-cms/backoffice/external/lit'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { UmbModalBaseElement } from '@umbraco-cms/backoffice/modal'; +import { UmbSorterController } from '@umbraco-cms/backoffice/sorter'; +import { createExtensionApiByAlias } from '@umbraco-cms/backoffice/extension-registry'; +import type { UmbTreeRepository, UmbUniqueTreeItemModel } from '@umbraco-cms/backoffice/tree'; +import type { UmbItemRepository } from '@umbraco-cms/backoffice/repository'; const elementName = 'umb-sort-children-of-modal'; @@ -10,16 +15,86 @@ export class UmbSortChildrenOfModalElement extends UmbModalBaseElement< UmbSortChildrenOfModalData, UmbSortChildrenOfModalValue > { + @state() + _items: Array = []; + + #sorter = new UmbSorterController(this, { + getUniqueOfElement: (element) => { + return element.dataset.unique; + }, + getUniqueOfModel: (modelEntry) => { + return modelEntry.unique; + }, + identifier: 'Umb.SorterIdentifier.SortChildrenOfModal', + itemSelector: 'uui-ref-node', + containerSelector: 'uui-ref-list', + onChange: (params) => { + this._items = params.model; + this.requestUpdate('_items'); + }, + }); + + protected async firstUpdated(_changedProperties: PropertyValueMap | Map): Promise { + super.firstUpdated(_changedProperties); + + if (!this.data?.unique === undefined) throw new Error('unique is required'); + if (!this.data?.itemRepositoryAlias) throw new Error('itemRepositoryAlias is required'); + + const itemRepository = await createExtensionApiByAlias>(this, this.data.itemRepositoryAlias); + + const treeRepository = await createExtensionApiByAlias>( + this, + this.data.treeRepositoryAlias, + ); + + const { data } = await treeRepository.requestTreeItemsOf({ parentUnique: this.data.unique, skip: 0, take: 100 }); + + if (data) { + this._items = data.items; + this.#sorter.setModel(this._items); + } + } + + async #onSubmit(event: PointerEvent) { + event?.stopPropagation(); + if (!this.data?.sortChildrenOfRepositoryAlias) throw new Error('sortChildrenOfRepositoryAlias is required'); + const sortChildrenOfRepository = await createExtensionApiByAlias( + this, + this.data.sortChildrenOfRepositoryAlias, + ); + + debugger; + + /* + const { error } = await sortChildrenOfRepository.sortChildrenOf({ unique: this.data.unique }); + if (!error) { + console.log('Sorted'); + } + */ + } + render() { return html` - Sorting UI here + + + ${repeat( + this._items, + (item) => item.unique, + (item) => this.#renderItem(item), + )} + `; } + #renderItem(item: UmbUniqueTreeItemModel) { + return html``; + } + static styles = [ UmbTextStyles, css` diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.token.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.token.ts index bc834773ed..ce4905112e 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.token.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.token.ts @@ -2,9 +2,11 @@ import { UMB_SORT_CHILDREN_OF_MODAL_ALIAS } from './constants.js'; import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; export interface UmbSortChildrenOfModalData { - unique: string; + unique: string | null; + entityType: string; itemRepositoryAlias: string; sortChildrenOfRepositoryAlias: string; + treeRepositoryAlias: string; } export interface UmbSortChildrenOfModalValue {} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/sort-children-of.action.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/sort-children-of.action.ts index bea7fd9f0a..767b8863e1 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/sort-children-of.action.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/sort-children-of.action.ts @@ -6,7 +6,15 @@ import type { MetaEntityActionSortChildrenOfKind } from '@umbraco-cms/backoffice export class UmbSortChildrenOfEntityAction extends UmbEntityActionBase { async execute() { const modalManager = await this.getContext(UMB_MODAL_MANAGER_CONTEXT); - const modal = modalManager.open(this._host, UMB_SORT_CHILDREN_OF_MODAL); + const modal = modalManager.open(this._host, UMB_SORT_CHILDREN_OF_MODAL, { + data: { + unique: this.args.unique, + entityType: this.args.entityType, + itemRepositoryAlias: this.args.meta.itemRepositoryAlias, + sortChildrenOfRepositoryAlias: this.args.meta.sortChildrenOfRepositoryAlias, + treeRepositoryAlias: this.args.meta.treeRepositoryAlias, + }, + }); await modal.onSubmit(); } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts index e446836217..103465dce5 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts @@ -141,4 +141,5 @@ export interface ManifestEntityActionSortChildrenOfKind export interface MetaEntityActionSortChildrenOfKind extends MetaEntityActionDefaultKind { itemRepositoryAlias: string; sortChildrenOfRepositoryAlias: string; + treeRepositoryAlias: string; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/manifests.ts index e505eae313..96c483bbaa 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/manifests.ts @@ -1,5 +1,6 @@ import { UMB_DOCUMENT_ENTITY_TYPE, UMB_DOCUMENT_ROOT_ENTITY_TYPE } from '../../entity.js'; import { UMB_DOCUMENT_ITEM_REPOSITORY_ALIAS } from '../../repository/index.js'; +import { UMB_DOCUMENT_TREE_REPOSITORY_ALIAS } from '../../tree/index.js'; import { UMB_SORT_CHILDREN_OF_DOCUMENT_REPOSITORY_ALIAS } from './repository/constants.js'; import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; @@ -13,6 +14,7 @@ export const manifests: Array = [ meta: { itemRepositoryAlias: UMB_DOCUMENT_ITEM_REPOSITORY_ALIAS, sortChildrenOfRepositoryAlias: UMB_SORT_CHILDREN_OF_DOCUMENT_REPOSITORY_ALIAS, + treeRepositoryAlias: UMB_DOCUMENT_TREE_REPOSITORY_ALIAS, }, }, ]; From 2fa9d49e4eb4c78693bbfae80266906ddb055f21 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 1 Apr 2024 21:59:03 +0200 Subject: [PATCH 13/34] add pagination --- .../modal/sort-children-of-modal.element.ts | 93 +++++++++++++++---- 1 file changed, 74 insertions(+), 19 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts index c3afe60046..aaabd4fa01 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts @@ -1,12 +1,14 @@ import type { UmbSortChildrenOfModalData, UmbSortChildrenOfModalValue } from './sort-children-of-modal.token.js'; import type { PropertyValueMap } from '@umbraco-cms/backoffice/external/lit'; -import { html, customElement, css, state, repeat } from '@umbraco-cms/backoffice/external/lit'; +import { html, customElement, css, state, repeat, nothing } from '@umbraco-cms/backoffice/external/lit'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { UmbModalBaseElement } from '@umbraco-cms/backoffice/modal'; import { UmbSorterController } from '@umbraco-cms/backoffice/sorter'; import { createExtensionApiByAlias } from '@umbraco-cms/backoffice/extension-registry'; import type { UmbTreeRepository, UmbUniqueTreeItemModel } from '@umbraco-cms/backoffice/tree'; import type { UmbItemRepository } from '@umbraco-cms/backoffice/repository'; +import { UmbPaginationManager } from '@umbraco-cms/backoffice/utils'; +import { observeMultiple } from '@umbraco-cms/backoffice/observable-api'; const elementName = 'umb-sort-children-of-modal'; @@ -16,7 +18,15 @@ export class UmbSortChildrenOfModalElement extends UmbModalBaseElement< UmbSortChildrenOfModalValue > { @state() - _items: Array = []; + _children: Array = []; + + @state() + _currentPage = 1; + + @state() + _totalPages = 1; + + #pagination = new UmbPaginationManager(); #sorter = new UmbSorterController(this, { getUniqueOfElement: (element) => { @@ -29,32 +39,65 @@ export class UmbSortChildrenOfModalElement extends UmbModalBaseElement< itemSelector: 'uui-ref-node', containerSelector: 'uui-ref-list', onChange: (params) => { - this._items = params.model; + this._children = params.model; this.requestUpdate('_items'); }, }); + constructor() { + super(); + this.#pagination.setPageSize(2); + + this.observe( + observeMultiple([this.#pagination.currentPage, this.#pagination.totalPages]), + ([currentPage, totalPages]) => { + this._currentPage = currentPage; + this._totalPages = totalPages; + }, + 'umbPaginationObserver', + ); + } + protected async firstUpdated(_changedProperties: PropertyValueMap | Map): Promise { super.firstUpdated(_changedProperties); - if (!this.data?.unique === undefined) throw new Error('unique is required'); + /* if (!this.data?.itemRepositoryAlias) throw new Error('itemRepositoryAlias is required'); - const itemRepository = await createExtensionApiByAlias>(this, this.data.itemRepositoryAlias); + */ + + this.#requestItems(); + } + + async #requestItems() { + if (!this.data?.unique === undefined) throw new Error('unique is required'); + if (!this.data?.treeRepositoryAlias) throw new Error('treeRepositoryAlias is required'); const treeRepository = await createExtensionApiByAlias>( this, this.data.treeRepositoryAlias, ); - const { data } = await treeRepository.requestTreeItemsOf({ parentUnique: this.data.unique, skip: 0, take: 100 }); + const { data } = await treeRepository.requestTreeItemsOf({ + parentUnique: this.data.unique, + skip: this.#pagination.getSkip(), + take: this.#pagination.getPageSize(), + }); if (data) { - this._items = data.items; - this.#sorter.setModel(this._items); + this._children = [...this._children, ...data.items]; + this.#pagination.setTotalItems(data.total); + this.#sorter.setModel(this._children); } } + #onLoadMore(event: PointerEvent) { + event.stopPropagation(); + if (this._currentPage >= this._totalPages) return; + this.#pagination.setCurrentPageNumber(this._currentPage + 1); + this.#requestItems(); + } + async #onSubmit(event: PointerEvent) { event?.stopPropagation(); if (!this.data?.sortChildrenOfRepositoryAlias) throw new Error('sortChildrenOfRepositoryAlias is required'); @@ -76,29 +119,41 @@ export class UmbSortChildrenOfModalElement extends UmbModalBaseElement< render() { return html` - - - ${repeat( - this._items, - (item) => item.unique, - (item) => this.#renderItem(item), - )} - + ${this.#renderChildren()} `; } - #renderItem(item: UmbUniqueTreeItemModel) { + #renderChildren() { + return html` + + ${repeat( + this._children, + (child) => child.unique, + (child) => this.#renderChild(child), + )} + + + ${this._currentPage < this._totalPages + ? html` + Load More (${this._currentPage}/${this._totalPages}) + ` + : nothing} + `; + } + + #renderChild(item: UmbUniqueTreeItemModel) { return html``; } static styles = [ UmbTextStyles, css` - #name { + #loadMoreButton { width: 100%; } `, From 645e1adfe17aaca69deb7adb0393577ec64f293a Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 2 Apr 2024 09:56:14 +0200 Subject: [PATCH 14/34] register repo manifests --- .../documents/entity-actions/sort-children-of/manifests.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/manifests.ts index 96c483bbaa..e38ec7363f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/manifests.ts @@ -2,9 +2,11 @@ import { UMB_DOCUMENT_ENTITY_TYPE, UMB_DOCUMENT_ROOT_ENTITY_TYPE } from '../../e import { UMB_DOCUMENT_ITEM_REPOSITORY_ALIAS } from '../../repository/index.js'; import { UMB_DOCUMENT_TREE_REPOSITORY_ALIAS } from '../../tree/index.js'; import { UMB_SORT_CHILDREN_OF_DOCUMENT_REPOSITORY_ALIAS } from './repository/constants.js'; +import { manifests as repositoryManifests } from './repository/manifests.js'; import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; export const manifests: Array = [ + ...repositoryManifests, { type: 'entityAction', kind: 'sortChildrenOf', From a5577b969860649552cd287350d667851ab69335 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 2 Apr 2024 09:56:26 +0200 Subject: [PATCH 15/34] remove item repo from kind --- .../core/extension-registry/models/entity-action.model.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts index 103465dce5..5389ada97c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/entity-action.model.ts @@ -139,7 +139,6 @@ export interface ManifestEntityActionSortChildrenOfKind } export interface MetaEntityActionSortChildrenOfKind extends MetaEntityActionDefaultKind { - itemRepositoryAlias: string; sortChildrenOfRepositoryAlias: string; treeRepositoryAlias: string; } From 4083687716dd854ce7771e2e2f4e2cb53309d616 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 2 Apr 2024 09:56:44 +0200 Subject: [PATCH 16/34] pass sorted items to end point --- .../modal/sort-children-of-modal.element.ts | 54 ++++++++++++------- .../modal/sort-children-of-modal.token.ts | 3 +- 2 files changed, 37 insertions(+), 20 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts index aaabd4fa01..5a5843a933 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts @@ -6,7 +6,6 @@ import { UmbModalBaseElement } from '@umbraco-cms/backoffice/modal'; import { UmbSorterController } from '@umbraco-cms/backoffice/sorter'; import { createExtensionApiByAlias } from '@umbraco-cms/backoffice/extension-registry'; import type { UmbTreeRepository, UmbUniqueTreeItemModel } from '@umbraco-cms/backoffice/tree'; -import type { UmbItemRepository } from '@umbraco-cms/backoffice/repository'; import { UmbPaginationManager } from '@umbraco-cms/backoffice/utils'; import { observeMultiple } from '@umbraco-cms/backoffice/observable-api'; @@ -27,6 +26,7 @@ export class UmbSortChildrenOfModalElement extends UmbModalBaseElement< _totalPages = 1; #pagination = new UmbPaginationManager(); + #sortedUniques = new Set(); #sorter = new UmbSorterController(this, { getUniqueOfElement: (element) => { @@ -38,9 +38,13 @@ export class UmbSortChildrenOfModalElement extends UmbModalBaseElement< identifier: 'Umb.SorterIdentifier.SortChildrenOfModal', itemSelector: 'uui-ref-node', containerSelector: 'uui-ref-list', - onChange: (params) => { - this._children = params.model; - this.requestUpdate('_items'); + onChange: ({ model }) => { + const oldValue = this._children; + this._children = model; + this.requestUpdate('_children', oldValue); + }, + onEnd: ({ item }) => { + this.#sortedUniques.add(item.unique); }, }); @@ -60,16 +64,10 @@ export class UmbSortChildrenOfModalElement extends UmbModalBaseElement< protected async firstUpdated(_changedProperties: PropertyValueMap | Map): Promise { super.firstUpdated(_changedProperties); - - /* - if (!this.data?.itemRepositoryAlias) throw new Error('itemRepositoryAlias is required'); - const itemRepository = await createExtensionApiByAlias>(this, this.data.itemRepositoryAlias); - */ - - this.#requestItems(); + this.#requestChildren(); } - async #requestItems() { + async #requestChildren() { if (!this.data?.unique === undefined) throw new Error('unique is required'); if (!this.data?.treeRepositoryAlias) throw new Error('treeRepositoryAlias is required'); @@ -95,25 +93,45 @@ export class UmbSortChildrenOfModalElement extends UmbModalBaseElement< event.stopPropagation(); if (this._currentPage >= this._totalPages) return; this.#pagination.setCurrentPageNumber(this._currentPage + 1); - this.#requestItems(); + this.#requestChildren(); } async #onSubmit(event: PointerEvent) { event?.stopPropagation(); if (!this.data?.sortChildrenOfRepositoryAlias) throw new Error('sortChildrenOfRepositoryAlias is required'); + const sortChildrenOfRepository = await createExtensionApiByAlias( this, this.data.sortChildrenOfRepositoryAlias, ); - debugger; + const { error } = await sortChildrenOfRepository.sortChildrenOf({ + unique: this.data.unique, + sorting: this.#getSortOrderOfSortedItems(), + }); - /* - const { error } = await sortChildrenOfRepository.sortChildrenOf({ unique: this.data.unique }); if (!error) { console.log('Sorted'); } - */ + } + + #getSortOrderOfSortedItems() { + const sorting = []; + + // get the new sort order from the sorted uniques + for (const value of this.#sortedUniques) { + const index = this._children.findIndex((child) => child.unique === value); + if (index !== -1) { + const entry = { + unique: value, + sortOrder: index, + }; + + sorting.push(entry); + } + } + + return sorting; } render() { @@ -121,7 +139,7 @@ export class UmbSortChildrenOfModalElement extends UmbModalBaseElement< ${this.#renderChildren()} - + `; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.token.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.token.ts index ce4905112e..b23cb24834 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.token.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.token.ts @@ -4,9 +4,8 @@ import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; export interface UmbSortChildrenOfModalData { unique: string | null; entityType: string; - itemRepositoryAlias: string; - sortChildrenOfRepositoryAlias: string; treeRepositoryAlias: string; + sortChildrenOfRepositoryAlias: string; } export interface UmbSortChildrenOfModalValue {} From c07041eba0f8b2a5ea716f248faadc8d8d3bf50a Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 2 Apr 2024 09:58:19 +0200 Subject: [PATCH 17/34] allow root as parent --- .../sort-children-of/repository/sort-children-of.repository.ts | 2 +- .../sort-children-of/repository/sort-children-of.server.data.ts | 2 +- .../entity-actions/sort-children-of/repository/types.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/sort-children-of.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/sort-children-of.repository.ts index 013cebdf8f..b6469aac92 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/sort-children-of.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/sort-children-of.repository.ts @@ -22,7 +22,7 @@ export class UmbSortChildrenOfDocumentRepository extends UmbControllerBase imple } async sortChildrenOf(args: UmbSortChildrenOfArgs) { - if (!args.unique) throw new Error('Unique is missing'); + if (args.unique === undefined) throw new Error('Unique is missing'); if (!args.sorting) throw new Error('Sorting details are missing'); const { error } = await this.#dataSource.sortChildrenOf(args); diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/sort-children-of.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/sort-children-of.server.data.ts index 3af9de7e2b..87819f4ae1 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/sort-children-of.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/sort-children-of.server.data.ts @@ -27,7 +27,7 @@ export class UmbSortChildrenOfDocumentServerDataSource { * @memberof UmbSortChildrenOfDocumentServerDataSource */ async sortChildrenOf(args: UmbSortChildrenOfArgs) { - if (!args.unique) throw new Error('unique is missing'); + if (args.unique === undefined) throw new Error('unique is missing'); const sortingMapping = args.sorting.map((item) => ({ id: item.unique, sortOrder: item.sortOrder })); diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/types.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/types.ts index 3e08bcc734..7934391f3f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/types.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/types.ts @@ -1,4 +1,4 @@ export interface UmbSortChildrenOfArgs { - unique: string; + unique: string | null; sorting: Array<{ unique: string; sortOrder: number }>; } From 368fe1652cce6e5a721fc443c11a1bea58cee38c Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 2 Apr 2024 10:18:18 +0200 Subject: [PATCH 18/34] pass null parent correctly --- .../repository/sort-children-of.server.data.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/sort-children-of.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/sort-children-of.server.data.ts index 87819f4ae1..e958faa93d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/sort-children-of.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/sort-children-of/repository/sort-children-of.server.data.ts @@ -35,9 +35,7 @@ export class UmbSortChildrenOfDocumentServerDataSource { this.#host, DocumentResource.putDocumentSort({ requestBody: { - parent: { - id: args.unique, - }, + parent: args.unique ? { id: args.unique } : null, sorting: sortingMapping, }, }), From da0c43dd25078485b5efeed494321237f6d828ed Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 2 Apr 2024 10:22:32 +0200 Subject: [PATCH 19/34] remove item repo --- .../common/sort-children-of/sort-children-of.action.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/sort-children-of.action.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/sort-children-of.action.ts index 767b8863e1..859dc8a7c7 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/sort-children-of.action.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/sort-children-of.action.ts @@ -10,7 +10,6 @@ export class UmbSortChildrenOfEntityAction extends UmbEntityActionBase Date: Tue, 2 Apr 2024 10:17:07 +0100 Subject: [PATCH 20/34] Adds reusable function `blobDownload` --- .../utils/download/blob-download.function.ts | 25 +++++++++++++++++++ .../src/packages/core/utils/index.ts | 1 + 2 files changed, 26 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/utils/download/blob-download.function.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/utils/download/blob-download.function.ts b/src/Umbraco.Web.UI.Client/src/packages/core/utils/download/blob-download.function.ts new file mode 100644 index 0000000000..f4371b4ac0 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/utils/download/blob-download.function.ts @@ -0,0 +1,25 @@ +/** + * Triggers a client-side download of a file, using a `Blob` object. + * To do this, a temporary anchor element is created, appended to the document body, + * immediate triggered to download, then removed from the document body. + * + * @param {any} data - The data to be downloaded. + * @param {string} filename - The name of the file to be downloaded. + * @param {string} mimeType - The MIME type of the file to be downloaded. + * @returns {void} + * + * @example + * blobDownload(data, 'package.xml', 'text/xml'); + */ +export const blobDownload = (data: any, filename: string, mimeType: string) => { + const blob = new Blob([data], { type: mimeType }); + const url = window.URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = filename; + a.style.display = 'none'; + document.body.appendChild(a); + a.dispatchEvent(new MouseEvent('click')); + a.remove(); + window.URL.revokeObjectURL(url); +}; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/utils/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/utils/index.ts index 0fc65a99ab..3782c9eb05 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/utils/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/utils/index.ts @@ -14,3 +14,4 @@ export * from './type/diff.type.js'; export * from './string/to-camel-case/to-camel-case.function.js'; export * from './string/from-camel-case.function.js'; export * from './debounce/debounce.function.js'; +export * from './download/blob-download.function.js'; From 5031b670fd03e3b2bf1d134d810971844622fac6 Mon Sep 17 00:00:00 2001 From: leekelleher Date: Tue, 2 Apr 2024 10:17:32 +0100 Subject: [PATCH 21/34] Dictionary Export - reuses `blobDownload` function --- .../entity-action/export/export.action.ts | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/dictionary/entity-action/export/export.action.ts b/src/Umbraco.Web.UI.Client/src/packages/dictionary/entity-action/export/export.action.ts index 6b86ba4d9f..5d08404040 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/dictionary/entity-action/export/export.action.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/dictionary/entity-action/export/export.action.ts @@ -1,5 +1,6 @@ import { UmbDictionaryExportRepository } from '../../repository/index.js'; import { UMB_EXPORT_DICTIONARY_MODAL } from './export-dictionary-modal.token.js'; +import { blobDownload } from '@umbraco-cms/backoffice/utils'; import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal'; @@ -14,23 +15,11 @@ export class UmbExportDictionaryEntityAction extends UmbEntityActionBase // Export the file const repository = new UmbDictionaryExportRepository(this); - const result = await repository.requestExport(this.args.unique, includeChildren); - const blobContent = await result?.data; + const { data } = await repository.requestExport(this.args.unique, includeChildren); - if (!blobContent) return; - const blob = new Blob([blobContent], { type: 'text/plain' }); - const a = document.createElement('a'); - const url = window.URL.createObjectURL(blob); + if (!data) return; - // Download - a.href = url; - a.download = `${this.args.unique}.udt`; - document.body.appendChild(a); - a.click(); - document.body.removeChild(a); - - // Clean up - window.URL.revokeObjectURL(url); + blobDownload(data, `${this.args.unique}.udt`, 'text/xml'); } } From 8f2b00b3bd6428995c338b3b9f2c08cbeb4760b2 Mon Sep 17 00:00:00 2001 From: leekelleher Date: Tue, 2 Apr 2024 10:17:51 +0100 Subject: [PATCH 22/34] Package Builder - reuses `blobDownload` function --- .../workspace/workspace-package-builder.element.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/packages/package-builder/workspace/workspace-package-builder.element.ts b/src/Umbraco.Web.UI.Client/src/packages/packages/package-builder/workspace/workspace-package-builder.element.ts index b5fbb46501..2039464360 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/packages/package-builder/workspace/workspace-package-builder.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/packages/package-builder/workspace/workspace-package-builder.element.ts @@ -13,6 +13,7 @@ import { ifDefined, } from '@umbraco-cms/backoffice/external/lit'; // TODO: update to module imports when ready +import { blobDownload } from '@umbraco-cms/backoffice/utils'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import type { PackageDefinitionResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; import { PackageResource } from '@umbraco-cms/backoffice/external/backend-api'; @@ -57,7 +58,17 @@ export class UmbWorkspacePackageBuilderElement extends UmbLitElement { async #download() { if (!this._package?.id) return; - await tryExecuteAndNotify(this, PackageResource.getPackageCreatedByIdDownload({ id: this._package.id })); + const { data } = await tryExecuteAndNotify( + this, + PackageResource.getPackageCreatedByIdDownload({ id: this._package.id }), + ); + + if (!data) return; + + // TODO: [LK] Need to review what the server is doing, as different data is returned depending on schema configuration. + // e.g. selecting Media items will return a ZIP file, otherwise it's an XML file. It should be consistent. + //blobDownload(data, 'package.xml', 'text/xml'); + blobDownload(data, 'package.zip', 'application/zip'); } #nameDefined() { From fba4aafc4c725692979d8375c43ffff76cb6b2d2 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 2 Apr 2024 12:33:40 +0200 Subject: [PATCH 23/34] deprecate event name --- .../packages/core/tree/default/default-tree.context.ts | 8 ++++---- .../create-folder/create-folder.action.ts | 7 ++----- .../src/packages/core/tree/index.ts | 10 +++++++++- .../core/tree/reload-tree-item-children/index.ts | 2 +- .../tree-item/tree-item-base/tree-item-context-base.ts | 8 ++++---- .../data-type/workspace/data-type-workspace.context.ts | 4 ++-- .../workspace/dictionary-workspace.context.ts | 4 ++-- .../workspace/document-type-workspace.context.ts | 4 ++-- .../documents/workspace/document-workspace.context.ts | 4 ++-- .../workspace/media-type-workspace.context.ts | 4 ++-- .../media/media/workspace/media-workspace.context.ts | 6 +++--- .../workspace/member-type-workspace.context.ts | 4 ++-- .../workspace/partial-view-workspace.context.ts | 4 ++-- .../scripts/workspace/script-workspace.context.ts | 4 ++-- .../workspace/stylesheet-workspace.context.ts | 4 ++-- .../templates/workspace/template-workspace.context.ts | 4 ++-- 16 files changed, 43 insertions(+), 38 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/tree/default/default-tree.context.ts b/src/Umbraco.Web.UI.Client/src/packages/core/tree/default/default-tree.context.ts index 98bf9e6e89..c55e88dd19 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/tree/default/default-tree.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/tree/default/default-tree.context.ts @@ -1,4 +1,4 @@ -import { UmbReloadTreeItemChildrenRequestEntityActionEvent } from '../reload-tree-item-children/index.js'; +import { UmbRequestReloadTreeItemChildrenEvent } from '../reload-tree-item-children/index.js'; import type { UmbTreeItemModelBase } from '../types.js'; import type { UmbTreeRepository } from '../data/tree-repository.interface.js'; import type { UmbTreeContext } from '../tree-context.interface.js'; @@ -144,11 +144,11 @@ export class UmbDefaultTreeContext this.consumeContext(UMB_ACTION_EVENT_CONTEXT, (instance) => { this.#actionEventContext = instance; this.#actionEventContext.removeEventListener( - UmbReloadTreeItemChildrenRequestEntityActionEvent.TYPE, + UmbRequestReloadTreeItemChildrenEvent.TYPE, this.#onReloadRequest as EventListener, ); this.#actionEventContext.addEventListener( - UmbReloadTreeItemChildrenRequestEntityActionEvent.TYPE, + UmbRequestReloadTreeItemChildrenEvent.TYPE, this.#onReloadRequest as EventListener, ); }); @@ -188,7 +188,7 @@ export class UmbDefaultTreeContext destroy(): void { this.#actionEventContext?.removeEventListener( - UmbReloadTreeItemChildrenRequestEntityActionEvent.TYPE, + UmbRequestReloadTreeItemChildrenEvent.TYPE, this.#onReloadRequest as EventListener, ); super.destroy(); diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/tree/folder/entity-action/create-folder/create-folder.action.ts b/src/Umbraco.Web.UI.Client/src/packages/core/tree/folder/entity-action/create-folder/create-folder.action.ts index a17235798b..aa785f0841 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/tree/folder/entity-action/create-folder/create-folder.action.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/tree/folder/entity-action/create-folder/create-folder.action.ts @@ -2,10 +2,7 @@ import { UMB_ACTION_EVENT_CONTEXT } from '@umbraco-cms/backoffice/action'; import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; import type { MetaEntityActionFolderKind } from '@umbraco-cms/backoffice/extension-registry'; import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal'; -import { - UMB_FOLDER_CREATE_MODAL, - UmbReloadTreeItemChildrenRequestEntityActionEvent, -} from '@umbraco-cms/backoffice/tree'; +import { UMB_FOLDER_CREATE_MODAL, UmbRequestReloadTreeItemChildrenEvent } from '@umbraco-cms/backoffice/tree'; export class UmbCreateFolderEntityAction extends UmbEntityActionBase { async execute() { @@ -23,7 +20,7 @@ export class UmbCreateFolderEntityAction extends UmbEntityActionBase { this.#actionEventContext?.removeEventListener( - UmbReloadTreeItemChildrenRequestEntityActionEvent.TYPE, + UmbRequestReloadTreeItemChildrenEvent.TYPE, this.#onReloadRequest as EventListener, ); @@ -226,7 +226,7 @@ export abstract class UmbTreeItemContextBase Date: Tue, 2 Apr 2024 12:50:50 +0200 Subject: [PATCH 24/34] submit modal --- .../sort-children-of/modal/sort-children-of-modal.element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts index 5a5843a933..fc40d387ca 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts @@ -111,7 +111,7 @@ export class UmbSortChildrenOfModalElement extends UmbModalBaseElement< }); if (!error) { - console.log('Sorted'); + this._submitModal(); } } From f991e2fc5df3795cda2f56c07c0167b0ed970107 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 2 Apr 2024 12:51:03 +0200 Subject: [PATCH 25/34] reload tree items after sorting is done --- .../sort-children-of/sort-children-of.action.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/sort-children-of.action.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/sort-children-of.action.ts index 859dc8a7c7..06e4da6146 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/sort-children-of.action.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/sort-children-of.action.ts @@ -2,6 +2,8 @@ import { UmbEntityActionBase } from '../../entity-action-base.js'; import { UMB_SORT_CHILDREN_OF_MODAL } from './modal/index.js'; import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal'; import type { MetaEntityActionSortChildrenOfKind } from '@umbraco-cms/backoffice/extension-registry'; +import { UMB_ACTION_EVENT_CONTEXT } from '@umbraco-cms/backoffice/action'; +import { UmbRequestReloadTreeItemChildrenEvent } from '@umbraco-cms/backoffice/tree'; export class UmbSortChildrenOfEntityAction extends UmbEntityActionBase { async execute() { @@ -14,7 +16,17 @@ export class UmbSortChildrenOfEntityAction extends UmbEntityActionBase Date: Tue, 2 Apr 2024 13:00:35 +0200 Subject: [PATCH 26/34] add missing skip-take-values --- .../data-type/tree/data-type-tree.server.data-source.ts | 2 ++ .../dictionary/tree/dictionary-tree.server.data-source.ts | 2 ++ .../tree/document-recycle-bin-tree.server.data-source.ts | 2 ++ .../documents/tree/document-tree.server.data-source.ts | 2 ++ .../media-types/tree/media-type-tree.server.data-source.ts | 2 ++ .../packages/media/media/tree/media-tree.server.data-source.ts | 2 ++ .../static-file/tree/static-file-tree.server.data-source.ts | 2 ++ .../partial-views/tree/partial-view-tree.server.data-source.ts | 2 ++ .../templating/scripts/tree/script-tree.server.data-source.ts | 2 ++ .../stylesheets/tree/stylesheet-tree.server.data-source.ts | 2 ++ .../templates/tree/template-tree.server.data-source.ts | 2 ++ 11 files changed, 22 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/packages/data-type/tree/data-type-tree.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/data-type/tree/data-type-tree.server.data-source.ts index 719ef42024..8063d1407f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/data-type/tree/data-type-tree.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/data-type/tree/data-type-tree.server.data-source.ts @@ -55,6 +55,8 @@ const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { // eslint-disable-next-line local-rules/no-direct-api-import return DataTypeResource.getTreeDataTypeChildren({ parentId: args.parentUnique, + skip: args.skip, + take: args.take, }); } }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/dictionary/tree/dictionary-tree.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/dictionary/tree/dictionary-tree.server.data-source.ts index af5b62174f..3cc46577e0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/dictionary/tree/dictionary-tree.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/dictionary/tree/dictionary-tree.server.data-source.ts @@ -46,6 +46,8 @@ const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { // eslint-disable-next-line local-rules/no-direct-api-import return DictionaryResource.getTreeDictionaryChildren({ parentId: args.parentUnique, + skip: args.skip, + take: args.take, }); } }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/document-recycle-bin-tree.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/document-recycle-bin-tree.server.data-source.ts index 4497a30476..d5a1ee2f36 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/document-recycle-bin-tree.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/tree/document-recycle-bin-tree.server.data-source.ts @@ -45,6 +45,8 @@ const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { // eslint-disable-next-line local-rules/no-direct-api-import return DocumentResource.getRecycleBinDocumentChildren({ parentId: args.parentUnique, + skip: args.skip, + take: args.take, }); } }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/document-tree.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/document-tree.server.data-source.ts index 5d9c486b44..7ca165460b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/document-tree.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/document-tree.server.data-source.ts @@ -46,6 +46,8 @@ const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { // eslint-disable-next-line local-rules/no-direct-api-import return DocumentResource.getTreeDocumentChildren({ parentId: args.parentUnique, + skip: args.skip, + take: args.take, }); } }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/tree/media-type-tree.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/tree/media-type-tree.server.data-source.ts index d5be706a5b..203056945e 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/tree/media-type-tree.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/tree/media-type-tree.server.data-source.ts @@ -46,6 +46,8 @@ const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { // eslint-disable-next-line local-rules/no-direct-api-import return MediaTypeResource.getTreeMediaTypeChildren({ parentId: args.parentUnique, + skip: args.skip, + take: args.take, }); } }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/tree/media-tree.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/tree/media-tree.server.data-source.ts index ab445331ae..a9223242b6 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media/tree/media-tree.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/tree/media-tree.server.data-source.ts @@ -45,6 +45,8 @@ const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { // eslint-disable-next-line local-rules/no-direct-api-import return MediaResource.getTreeMediaChildren({ parentId: args.parentUnique, + skip: args.skip, + take: args.take, }); } }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/static-file/tree/static-file-tree.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/static-file/tree/static-file-tree.server.data-source.ts index c88bf71e9d..0d7345bdda 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/static-file/tree/static-file-tree.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/static-file/tree/static-file-tree.server.data-source.ts @@ -51,6 +51,8 @@ const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { // eslint-disable-next-line local-rules/no-direct-api-import return StaticFileResource.getTreeStaticFileChildren({ parentPath, + skip: args.skip, + take: args.take, }); } }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/tree/partial-view-tree.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/tree/partial-view-tree.server.data-source.ts index d718e6e5e1..cb6caa8ca9 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/tree/partial-view-tree.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/tree/partial-view-tree.server.data-source.ts @@ -49,6 +49,8 @@ const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { // eslint-disable-next-line local-rules/no-direct-api-import return PartialViewResource.getTreePartialViewChildren({ parentPath, + skip: args.skip, + take: args.take, }); } }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/tree/script-tree.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/tree/script-tree.server.data-source.ts index 0288114f2d..67ba6050b3 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/tree/script-tree.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/tree/script-tree.server.data-source.ts @@ -49,6 +49,8 @@ const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { // eslint-disable-next-line local-rules/no-direct-api-import return ScriptResource.getTreeScriptChildren({ parentPath, + skip: args.skip, + take: args.take, }); } }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/tree/stylesheet-tree.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/tree/stylesheet-tree.server.data-source.ts index eb7ed09eef..9133b10587 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/tree/stylesheet-tree.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/tree/stylesheet-tree.server.data-source.ts @@ -49,6 +49,8 @@ const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { // eslint-disable-next-line local-rules/no-direct-api-import return StylesheetResource.getTreeStylesheetChildren({ parentPath, + skip: args.skip, + take: args.take, }); } }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/templates/tree/template-tree.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/templates/tree/template-tree.server.data-source.ts index d4b21ae0d0..8c8f0a8d76 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/templates/tree/template-tree.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/templates/tree/template-tree.server.data-source.ts @@ -46,6 +46,8 @@ const getChildrenOf = (args: UmbTreeChildrenOfRequestArgs) => { // eslint-disable-next-line local-rules/no-direct-api-import return TemplateResource.getTreeTemplateChildren({ parentId: args.parentUnique, + skip: args.skip, + take: args.take, }); } }; From b560399718caeedf6343e9dba6bf6b0113696c9e Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 2 Apr 2024 13:25:15 +0200 Subject: [PATCH 27/34] render message of there are no children --- .../sort-children-of/modal/sort-children-of-modal.element.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts index fc40d387ca..3e19535cfd 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts @@ -145,6 +145,8 @@ export class UmbSortChildrenOfModalElement extends UmbModalBaseElement< } #renderChildren() { + if (this._children.length === 0) return html`There are no children`; + return html` ${repeat( From 4142c78f9c7ed73a87ec87be90099102ac47bc21 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 2 Apr 2024 13:40:45 +0200 Subject: [PATCH 28/34] only init sorting controller if there are children to sort --- .../modal/sort-children-of-modal.element.ts | 51 +++++++++++-------- 1 file changed, 30 insertions(+), 21 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts index 3e19535cfd..b42a9e16d6 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts @@ -27,26 +27,7 @@ export class UmbSortChildrenOfModalElement extends UmbModalBaseElement< #pagination = new UmbPaginationManager(); #sortedUniques = new Set(); - - #sorter = new UmbSorterController(this, { - getUniqueOfElement: (element) => { - return element.dataset.unique; - }, - getUniqueOfModel: (modelEntry) => { - return modelEntry.unique; - }, - identifier: 'Umb.SorterIdentifier.SortChildrenOfModal', - itemSelector: 'uui-ref-node', - containerSelector: 'uui-ref-list', - onChange: ({ model }) => { - const oldValue = this._children; - this._children = model; - this.requestUpdate('_children', oldValue); - }, - onEnd: ({ item }) => { - this.#sortedUniques.add(item.unique); - }, - }); + #sorter?: UmbSorterController; constructor() { super(); @@ -85,10 +66,38 @@ export class UmbSortChildrenOfModalElement extends UmbModalBaseElement< if (data) { this._children = [...this._children, ...data.items]; this.#pagination.setTotalItems(data.total); - this.#sorter.setModel(this._children); + + if (data.total > 0) { + this.#initSorter(); + this.#sorter.setModel(this._children); + } } } + #initSorter() { + if (this.#sorter) return; + + this.#sorter = new UmbSorterController(this, { + getUniqueOfElement: (element) => { + return element.dataset.unique; + }, + getUniqueOfModel: (modelEntry) => { + return modelEntry.unique; + }, + identifier: 'Umb.SorterIdentifier.SortChildrenOfModal', + itemSelector: 'uui-ref-node', + containerSelector: 'uui-ref-list', + onChange: ({ model }) => { + const oldValue = this._children; + this._children = model; + this.requestUpdate('_children', oldValue); + }, + onEnd: ({ item }) => { + this.#sortedUniques.add(item.unique); + }, + }); + } + #onLoadMore(event: PointerEvent) { event.stopPropagation(); if (this._currentPage >= this._totalPages) return; From 44ba12f117437993ab5049952a5f6460eb3903d0 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 2 Apr 2024 13:41:09 +0200 Subject: [PATCH 29/34] bump page size to 50 --- .../sort-children-of/modal/sort-children-of-modal.element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts index b42a9e16d6..f88f595432 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts @@ -31,7 +31,7 @@ export class UmbSortChildrenOfModalElement extends UmbModalBaseElement< constructor() { super(); - this.#pagination.setPageSize(2); + this.#pagination.setPageSize(50); this.observe( observeMultiple([this.#pagination.currentPage, this.#pagination.totalPages]), From 6b862400b35520a2938cd14da2d87da20cfc36b9 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 2 Apr 2024 13:46:56 +0200 Subject: [PATCH 30/34] add type + null check --- .../sort-children-of/modal/sort-children-of-modal.element.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts index f88f595432..57623eaa70 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity-action/common/sort-children-of/modal/sort-children-of-modal.element.ts @@ -27,7 +27,7 @@ export class UmbSortChildrenOfModalElement extends UmbModalBaseElement< #pagination = new UmbPaginationManager(); #sortedUniques = new Set(); - #sorter?: UmbSorterController; + #sorter?: UmbSorterController; constructor() { super(); @@ -69,7 +69,7 @@ export class UmbSortChildrenOfModalElement extends UmbModalBaseElement< if (data.total > 0) { this.#initSorter(); - this.#sorter.setModel(this._children); + this.#sorter?.setModel(this._children); } } } From 57c2396f678476e6f445561b586bf9c0c09a1316 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 2 Apr 2024 20:24:28 +0200 Subject: [PATCH 31/34] rename save workspace action --- .../block-grid-area-config-entry/workspace/manifests.ts | 4 ++-- .../src/packages/block/block-type/workspace/manifests.ts | 4 ++-- .../src/packages/block/block/workspace/manifests.ts | 4 ++-- .../workspace/components/workspace-action/common/index.ts | 2 +- .../components/workspace-action/common/save/index.ts | 1 - .../components/workspace-action/common/submit/index.ts | 1 + .../{save/save.action.ts => submit/submit.action.ts} | 7 ++++++- .../src/packages/data-type/workspace/manifests.ts | 4 ++-- .../src/packages/dictionary/workspace/manifests.ts | 4 ++-- .../documents/document-types/workspace/manifests.ts | 4 ++-- .../packages/documents/documents/workspace/manifests.ts | 4 ++-- .../src/packages/language/workspace/language/manifests.ts | 4 ++-- .../src/packages/media/media-types/workspace/manifests.ts | 4 ++-- .../src/packages/media/media/workspace/manifests.ts | 4 ++-- .../packages/members/member-group/workspace/manifests.ts | 4 ++-- .../packages/members/member-type/workspace/manifests.ts | 4 ++-- .../src/packages/members/member/workspace/manifests.ts | 4 ++-- .../templating/partial-views/workspace/manifests.ts | 4 ++-- .../src/packages/templating/scripts/workspace/manifests.ts | 4 ++-- .../packages/templating/stylesheets/workspace/manifests.ts | 4 ++-- .../packages/templating/templates/workspace/manifests.ts | 4 ++-- .../src/packages/user/user-group/workspace/manifests.ts | 4 ++-- .../src/packages/user/user/workspace/manifests.ts | 4 ++-- 23 files changed, 46 insertions(+), 41 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/common/save/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/common/submit/index.ts rename src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/common/{save/save.action.ts => submit/submit.action.ts} (84%) diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/components/block-grid-area-config-entry/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/components/block-grid-area-config-entry/workspace/manifests.ts index bf7e75361f..17644bc775 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/components/block-grid-area-config-entry/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block-grid/components/block-grid-area-config-entry/workspace/manifests.ts @@ -1,7 +1,7 @@ import { manifests as workspaceViewManifests } from './views/manifests.js'; import { UMB_BLOCK_GRID_AREA_TYPE_WORKSPACE_ALIAS } from './index.js'; import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; -import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; +import { UmbSubmitWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; export const manifests: Array = [ ...workspaceViewManifests, @@ -19,7 +19,7 @@ export const manifests: Array = [ type: 'workspaceAction', alias: 'Umb.WorkspaceAction.BlockGridAreaType.Save', name: 'Save Block Grid Area Type Workspace Action', - api: UmbSaveWorkspaceAction, + api: UmbSubmitWorkspaceAction, meta: { label: 'Submit', look: 'primary', diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block-type/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block-type/workspace/manifests.ts index 94b8d27803..0df0592053 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block-type/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block-type/workspace/manifests.ts @@ -1,7 +1,7 @@ import { UMB_BLOCK_GRID_TYPE_WORKSPACE_ALIAS } from '../../block-grid/workspace/index.js'; import { UMB_BLOCK_LIST_TYPE_WORKSPACE_ALIAS } from '../../block-list/workspace/index.js'; import { UMB_BLOCK_RTE_TYPE_WORKSPACE_ALIAS } from '../../block-rte/workspace/index.js'; -import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; +import { UmbSubmitWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; import type { ManifestWorkspaceActions } from '@umbraco-cms/backoffice/extension-registry'; export const manifests: Array = [ @@ -10,7 +10,7 @@ export const manifests: Array = [ kind: 'default', alias: 'Umb.WorkspaceAction.BlockType.Save', name: 'Save Block Type Workspace Action', - api: UmbSaveWorkspaceAction, + api: UmbSubmitWorkspaceAction, meta: { label: 'Submit', look: 'primary', diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/manifests.ts index 35eebf989b..bc76264f4d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/manifests.ts @@ -1,5 +1,5 @@ import { UMB_BLOCK_WORKSPACE_ALIAS } from './index.js'; -import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; +import { UmbSubmitWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; export const manifests: Array = [ @@ -8,7 +8,7 @@ export const manifests: Array = [ kind: 'default', alias: 'Umb.WorkspaceAction.Block.Save', name: 'Save Block Type Workspace Action', - api: UmbSaveWorkspaceAction, + api: UmbSubmitWorkspaceAction, meta: { label: 'Submit', look: 'primary', diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/common/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/common/index.ts index b21a44dbd5..744c315e61 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/common/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/common/index.ts @@ -1 +1 @@ -export * from './save/index.js'; +export * from './submit/index.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/common/save/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/common/save/index.ts deleted file mode 100644 index 068cf4b8c1..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/common/save/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './save.action.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/common/submit/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/common/submit/index.ts new file mode 100644 index 0000000000..22e8c2d675 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/common/submit/index.ts @@ -0,0 +1 @@ +export * from './submit.action.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/common/save/save.action.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/common/submit/submit.action.ts similarity index 84% rename from src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/common/save/save.action.ts rename to src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/common/submit/submit.action.ts index 04f6484e58..40113594fe 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/common/save/save.action.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/common/submit/submit.action.ts @@ -3,7 +3,7 @@ import { UmbWorkspaceActionBase } from '../../workspace-action-base.controller.j import { UMB_SUBMITTABLE_WORKSPACE_CONTEXT, type UmbWorkspaceActionArgs } from '@umbraco-cms/backoffice/workspace'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; -export class UmbSaveWorkspaceAction extends UmbWorkspaceActionBase { +export class UmbSubmitWorkspaceAction extends UmbWorkspaceActionBase { #workspaceContext?: UmbSubmittableWorkspaceContext; constructor(host: UmbControllerHost, args: UmbWorkspaceActionArgs) { @@ -36,3 +36,8 @@ export class UmbSaveWorkspaceAction extends UmbWorkspaceActionBase = [ kind: 'default', alias: 'Umb.WorkspaceAction.DataType.Save', name: 'Save Data Type Workspace Action', - api: UmbSaveWorkspaceAction, + api: UmbSubmitWorkspaceAction, meta: { label: 'Save', look: 'primary', diff --git a/src/Umbraco.Web.UI.Client/src/packages/dictionary/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/dictionary/workspace/manifests.ts index a778105a03..e889ec34da 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/dictionary/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/dictionary/workspace/manifests.ts @@ -1,5 +1,5 @@ import { UMB_DICTIONARY_ENTITY_TYPE } from '../entity.js'; -import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; +import { UmbSubmitWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; import type { ManifestWorkspaces, ManifestWorkspaceActions, @@ -45,7 +45,7 @@ const workspaceActions: Array = [ alias: 'Umb.WorkspaceAction.Dictionary.Save', name: 'Save Dictionary Workspace Action', weight: 90, - api: UmbSaveWorkspaceAction, + api: UmbSubmitWorkspaceAction, meta: { label: 'Save', look: 'primary', diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/workspace/manifests.ts index d53ddd1a34..7aa4387ada 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/workspace/manifests.ts @@ -1,5 +1,5 @@ import { UMB_DOCUMENT_TYPE_COMPOSITION_REPOSITORY_ALIAS } from '../repository/composition/index.js'; -import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; +import { UmbSubmitWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; import type { ManifestWorkspace, ManifestWorkspaceActions, @@ -100,7 +100,7 @@ const workspaceActions: Array = [ kind: 'default', alias: 'Umb.WorkspaceAction.DocumentType.Save', name: 'Save Document Type Workspace Action', - api: UmbSaveWorkspaceAction, + api: UmbSubmitWorkspaceAction, meta: { label: 'Save', look: 'primary', diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/manifests.ts index dbd1616e94..b4f16f960b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/manifests.ts @@ -3,7 +3,7 @@ import { UmbDocumentSaveAndScheduleWorkspaceAction } from './actions/save-and-sc import { UmbDocumentUnpublishWorkspaceAction } from './actions/unpublish.action.js'; import { UmbDocumentSaveAndPublishWorkspaceAction } from './actions/save-and-publish.action.js'; import { UmbDocumentPublishWithDescendantsWorkspaceAction } from './actions/publish-with-descendants.action.js'; -import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; +import { UmbSubmitWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; import type { ManifestWorkspaces, ManifestWorkspaceActions, @@ -89,7 +89,7 @@ const workspaceActions: Array = [ alias: 'Umb.WorkspaceAction.Document.Save', name: 'Save Document Workspace Action', weight: 80, - api: UmbSaveWorkspaceAction, + api: UmbSubmitWorkspaceAction, meta: { label: 'Save', look: 'secondary', diff --git a/src/Umbraco.Web.UI.Client/src/packages/language/workspace/language/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/language/workspace/language/manifests.ts index e18de036b6..96711c9deb 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/language/workspace/language/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/language/workspace/language/manifests.ts @@ -1,4 +1,4 @@ -import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; +import { UmbSubmitWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; import type { ManifestWorkspaces, ManifestWorkspaceActions, @@ -43,7 +43,7 @@ const workspaceActions: Array = [ kind: 'default', alias: 'Umb.WorkspaceAction.Language.Save', name: 'Save Language Workspace Action', - api: UmbSaveWorkspaceAction, + api: UmbSubmitWorkspaceAction, meta: { look: 'primary', color: 'positive', diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/manifests.ts index 1f160a83a5..9826f39746 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/manifests.ts @@ -4,7 +4,7 @@ import type { ManifestWorkspaceViews, } from '@umbraco-cms/backoffice/extension-registry'; -import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; +import { UmbSubmitWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; export const UMB_MEDIA_TYPE_WORKSPACE_ALIAS = 'Umb.Workspace.MediaType'; @@ -63,7 +63,7 @@ const workspaceActions: Array = [ kind: 'default', alias: 'Umb.WorkspaceAction.MediaType.Save', name: 'Save Media Type Workspace Action', - api: UmbSaveWorkspaceAction, + api: UmbSubmitWorkspaceAction, meta: { label: 'Save', look: 'primary', diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/manifests.ts index 3f9e5c9c0e..32fb6e651a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/manifests.ts @@ -1,4 +1,4 @@ -import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; +import { UmbSubmitWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; import type { ManifestWorkspaces, ManifestWorkspaceActions, @@ -61,7 +61,7 @@ const workspaceActions: Array = [ kind: 'default', alias: 'Umb.WorkspaceAction.Media.Save', name: 'Save Media Workspace Action', - api: UmbSaveWorkspaceAction, + api: UmbSubmitWorkspaceAction, meta: { label: 'Save', look: 'primary', diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/manifests.ts index c4b75d4ca5..f17abf1cf3 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/manifests.ts @@ -1,5 +1,5 @@ import { UMB_MEMBER_GROUP_ENTITY_TYPE } from '../entity.js'; -import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; +import { UmbSubmitWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; import type { ManifestWorkspaces, ManifestWorkspaceActions, @@ -25,7 +25,7 @@ const workspaceActions: Array = [ kind: 'default', alias: 'Umb.WorkspaceAction.MemberGroup.Save', name: 'Save Member Group Workspace Action', - api: UmbSaveWorkspaceAction, + api: UmbSubmitWorkspaceAction, meta: { label: 'Save', look: 'primary', diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/manifests.ts index 64191c02f8..336c403747 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/manifests.ts @@ -3,7 +3,7 @@ import type { ManifestWorkspaceActions, ManifestWorkspaceView, } from '@umbraco-cms/backoffice/extension-registry'; -import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; +import { UmbSubmitWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; export const UMB_MEMBER_TYPE_WORKSPACE_ALIAS = 'Umb.Workspace.MemberType'; @@ -44,7 +44,7 @@ const workspaceActions: Array = [ kind: 'default', alias: 'Umb.WorkspaceAction.MemberType.Save', name: 'Save Member Type Workspace Action', - api: UmbSaveWorkspaceAction, + api: UmbSubmitWorkspaceAction, meta: { label: 'Save', look: 'primary', diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/manifests.ts index d5f2035cda..9198c2ef10 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/manifests.ts @@ -1,5 +1,5 @@ import { UMB_MEMBER_ENTITY_TYPE } from '../entity.js'; -import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; +import { UmbSubmitWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; import type { ManifestWorkspaces, ManifestWorkspaceActions, @@ -25,7 +25,7 @@ const workspaceActions: Array = [ kind: 'default', alias: 'Umb.WorkspaceAction.Member.Save', name: 'Save Member Workspace Action', - api: UmbSaveWorkspaceAction, + api: UmbSubmitWorkspaceAction, meta: { label: 'Save', look: 'primary', diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/workspace/manifests.ts index 433349499d..734cd8e35d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/workspace/manifests.ts @@ -1,4 +1,4 @@ -import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; +import { UmbSubmitWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; import type { ManifestWorkspaces, ManifestWorkspaceActions } from '@umbraco-cms/backoffice/extension-registry'; export const UMB_PARTIAL_VIEW_WORKSPACE_ALIAS = 'Umb.Workspace.PartialView'; @@ -20,7 +20,7 @@ const workspaceActions: Array = [ kind: 'default', alias: 'Umb.WorkspaceAction.PartialView.Save', name: 'Save Partial View', - api: UmbSaveWorkspaceAction, + api: UmbSubmitWorkspaceAction, meta: { label: 'Save', look: 'primary', diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/workspace/manifests.ts index cb29ced563..a5ac33c6db 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/workspace/manifests.ts @@ -1,5 +1,5 @@ import { UMB_SCRIPT_ENTITY_TYPE } from '../entity.js'; -import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; +import { UmbSubmitWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; import type { ManifestWorkspaces, ManifestWorkspaceActions } from '@umbraco-cms/backoffice/extension-registry'; export const UMB_SCRIPT_WORKSPACE_ALIAS = 'Umb.Workspace.Script'; @@ -22,7 +22,7 @@ const workspaceActions: Array = [ kind: 'default', alias: UMB_SAVE_SCRIPT_WORKSPACE_ACTION_ALIAS, name: 'Save Script Workspace Action', - api: UmbSaveWorkspaceAction, + api: UmbSubmitWorkspaceAction, meta: { label: 'Save', look: 'primary', diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/workspace/manifests.ts index ebada289ad..ffdb1016de 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/workspace/manifests.ts @@ -3,7 +3,7 @@ import type { ManifestWorkspaceActions, ManifestWorkspaceView, } from '@umbraco-cms/backoffice/extension-registry'; -import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; +import { UmbSubmitWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; export const UMB_STYLESHEET_WORKSPACE_ALIAS = 'Umb.Workspace.Stylesheet'; @@ -62,7 +62,7 @@ const workspaceActions: Array = [ kind: 'default', alias: 'Umb.WorkspaceAction.Stylesheet.Save', name: 'Save Stylesheet Workspace Action', - api: UmbSaveWorkspaceAction, + api: UmbSubmitWorkspaceAction, meta: { label: 'Save', look: 'primary', diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/templates/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/templates/workspace/manifests.ts index e1d9e0bbcf..13a5f9b71b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/templates/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/templates/workspace/manifests.ts @@ -1,4 +1,4 @@ -import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; +import { UmbSubmitWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; import type { ManifestWorkspaces, ManifestWorkspaceActions, @@ -26,7 +26,7 @@ const workspaceActions: Array = [ kind: 'default', alias: 'Umb.WorkspaceAction.Template.Save', name: 'Save Template', - api: UmbSaveWorkspaceAction, + api: UmbSubmitWorkspaceAction, weight: 70, meta: { look: 'primary', diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user-group/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user-group/workspace/manifests.ts index a401ed5329..9a24209b37 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/user-group/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/user-group/workspace/manifests.ts @@ -3,7 +3,7 @@ import type { ManifestWorkspaceActions, ManifestWorkspaceView, } from '@umbraco-cms/backoffice/extension-registry'; -import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; +import { UmbSubmitWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; const workspace: ManifestWorkspaces = { type: 'workspace', @@ -23,7 +23,7 @@ const workspaceActions: Array = [ kind: 'default', alias: 'Umb.WorkspaceAction.UserGroup.Save', name: 'Save User Group Workspace Action', - api: UmbSaveWorkspaceAction, + api: UmbSubmitWorkspaceAction, meta: { label: 'Save', look: 'primary', diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user/workspace/manifests.ts index e52e99f86e..f54a0593a2 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/user/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/user/workspace/manifests.ts @@ -1,5 +1,5 @@ import { UMB_USER_ENTITY_TYPE } from '../entity.js'; -import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; +import { UmbSubmitWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; import type { ManifestWorkspaces, ManifestWorkspaceActions, @@ -26,7 +26,7 @@ const workspaceActions: Array = [ kind: 'default', alias: 'Umb.WorkspaceAction.User.Save', name: 'Save User Workspace Action', - api: UmbSaveWorkspaceAction, + api: UmbSubmitWorkspaceAction, meta: { label: 'Save', look: 'primary', From 3529d60dc65a816592b00e75d2bb96135917d0cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 2 Apr 2024 20:29:50 +0200 Subject: [PATCH 32/34] note on removing --- .../components/workspace-action/common/submit/submit.action.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/common/submit/submit.action.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/common/submit/submit.action.ts index 40113594fe..3801e4c0f0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/common/submit/submit.action.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action/common/submit/submit.action.ts @@ -39,5 +39,6 @@ export class UmbSubmitWorkspaceAction extends UmbWorkspaceActionBase Date: Wed, 3 Apr 2024 17:05:46 +0000 Subject: [PATCH 33/34] Bump vite from 5.1.2 to 5.1.7 Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.1.2 to 5.1.7. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/v5.1.7/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v5.1.7/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- src/Umbraco.Web.UI.Client/package-lock.json | 8 ++++---- src/Umbraco.Web.UI.Client/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/package-lock.json b/src/Umbraco.Web.UI.Client/package-lock.json index 9147e5302e..b6ef567796 100644 --- a/src/Umbraco.Web.UI.Client/package-lock.json +++ b/src/Umbraco.Web.UI.Client/package-lock.json @@ -78,7 +78,7 @@ "typedoc": "^0.25.10", "typescript": "^5.3.3", "typescript-json-schema": "^0.63.0", - "vite": "^5.1.1", + "vite": "^5.1.7", "vite-plugin-static-copy": "^1.0.1", "vite-tsconfig-paths": "^4.3.1", "web-component-analyzer": "^2.0.0" @@ -20259,9 +20259,9 @@ } }, "node_modules/vite": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.2.tgz", - "integrity": "sha512-uwiFebQbTWRIGbCaTEBVAfKqgqKNKMJ2uPXsXeLIZxM8MVMjoS3j0cG8NrPxdDIadaWnPSjrkLWffLSC+uiP3Q==", + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.7.tgz", + "integrity": "sha512-sgnEEFTZYMui/sTlH1/XEnVNHMujOahPLGMxn1+5sIT45Xjng1Ec1K78jRP15dSmVgg5WBin9yO81j3o9OxofA==", "dev": true, "dependencies": { "esbuild": "^0.19.3", diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index b8c968c82c..e8c3085c05 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -232,7 +232,7 @@ "typedoc": "^0.25.10", "typescript": "^5.3.3", "typescript-json-schema": "^0.63.0", - "vite": "^5.1.1", + "vite": "^5.1.7", "vite-plugin-static-copy": "^1.0.1", "vite-tsconfig-paths": "^4.3.1", "web-component-analyzer": "^2.0.0" From f03727e14995efa7a38f75fce0d255c249444a5a Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 4 Apr 2024 09:14:30 +0200 Subject: [PATCH 34/34] super context does not exist within a callback --- .../core/components/input-entity/input-entity.element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/input-entity/input-entity.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/input-entity/input-entity.element.ts index 192bfd17ed..e99a924bea 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/input-entity/input-entity.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/input-entity/input-entity.element.ts @@ -101,7 +101,7 @@ export class UmbInputEntityElement extends FormControlMixin(UmbLitElement) { this.observe( this.#pickerContext.selection, - (selection) => (super.value = selection?.join(',') ?? ''), + (selection) => (this.value = selection?.join(',') ?? ''), 'observeSelection', );