From 50f95de0d5f101b810c5867b7df8e13681a5d360 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 17 Sep 2024 18:05:26 +0200 Subject: [PATCH 01/25] register default workspace kind --- .../conditions/workspace-alias.condition.ts | 3 ++- .../workspace-entity-type.condition.ts | 2 +- .../packages/core/workspace/contexts/index.ts | 1 - .../submittable-workspace-context-base.ts | 2 +- .../entity-workspace-context.interface.ts | 2 +- .../tokens/entity-workspace.context-token.ts | 2 +- .../core/workspace/contexts/tokens/index.ts | 3 +-- ...perty-structure-workspace.context-token.ts | 2 +- .../routable-workspace-context.interface.ts | 2 +- .../routable-workspace.context-token.ts | 2 +- .../tokens/variant-workspace.context-token.ts | 2 +- .../workspace/extensions/workspace.model.ts | 2 +- .../src/packages/core/workspace/index.ts | 4 ++++ .../default}/default-workspace.context.ts | 4 ++-- .../default/default-workspace.element.ts | 20 +++++++++++++++++++ .../core/workspace/kinds/default/index.ts | 2 ++ .../core/workspace/kinds/default/manifests.ts | 16 +++++++++++++++ .../core/workspace/kinds/manifests.ts | 7 ++++++- .../workspace-context.interface.ts | 0 .../tokens => }/workspace.context-token.ts | 0 .../core/workspace/workspace.element.ts | 2 +- 21 files changed, 63 insertions(+), 17 deletions(-) rename src/Umbraco.Web.UI.Client/src/packages/core/workspace/{contexts => kinds/default}/default-workspace.context.ts (83%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/default-workspace.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/core/workspace/{contexts/tokens => }/workspace-context.interface.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/core/workspace/{contexts/tokens => }/workspace.context-token.ts (100%) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/workspace-alias.condition.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/workspace-alias.condition.ts index e065f2d7a6..4c7e1f1e71 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/workspace-alias.condition.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/workspace-alias.condition.ts @@ -1,4 +1,5 @@ -import { UMB_WORKSPACE_CONTEXT, type UmbWorkspaceContext } from '../contexts/index.js'; +import { UMB_WORKSPACE_CONTEXT } from '../workspace.context-token.js'; +import type { UmbWorkspaceContext } from '../workspace-context.interface.js'; import type { WorkspaceAliasConditionConfig } from './types.js'; import { UmbConditionBase } from '@umbraco-cms/backoffice/extension-registry'; import type { diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/workspace-entity-type.condition.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/workspace-entity-type.condition.ts index 45e61e61f6..e78a170ddd 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/workspace-entity-type.condition.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/workspace-entity-type.condition.ts @@ -1,4 +1,4 @@ -import { UMB_WORKSPACE_CONTEXT } from '../contexts/index.js'; +import { UMB_WORKSPACE_CONTEXT } from '../workspace.context-token.js'; import type { WorkspaceEntityTypeConditionConfig } from './types.js'; import { UmbConditionBase } from '@umbraco-cms/backoffice/extension-registry'; import type { diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/index.ts index d6ffbc4792..65ad6ca270 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/index.ts @@ -1,3 +1,2 @@ -export * from './default-workspace.context.js'; export * from './submittable-workspace-context-base.js'; export * from './tokens/index.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/submittable-workspace-context-base.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/submittable-workspace-context-base.ts index ccc13c9526..660106d72a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/submittable-workspace-context-base.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/submittable-workspace-context-base.ts @@ -1,5 +1,5 @@ import { UmbWorkspaceRouteManager } from '../controllers/workspace-route-manager.controller.js'; -import { UMB_WORKSPACE_CONTEXT } from './tokens/workspace.context-token.js'; +import { UMB_WORKSPACE_CONTEXT } from '../workspace.context-token.js'; import type { UmbSubmittableWorkspaceContext } from './tokens/submittable-workspace-context.interface.js'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { UmbContextBase } from '@umbraco-cms/backoffice/class-api'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/entity-workspace-context.interface.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/entity-workspace-context.interface.ts index 16f335e73e..46fa7a12c7 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/entity-workspace-context.interface.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/entity-workspace-context.interface.ts @@ -1,4 +1,4 @@ -import type { UmbWorkspaceContext } from './workspace-context.interface.js'; +import type { UmbWorkspaceContext } from '../../workspace-context.interface.js'; import type { UmbWorkspaceUniqueType } from './../../types.js'; import type { Observable } from '@umbraco-cms/backoffice/external/rxjs'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/entity-workspace.context-token.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/entity-workspace.context-token.ts index 6305c04de2..6f50196861 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/entity-workspace.context-token.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/entity-workspace.context-token.ts @@ -1,4 +1,4 @@ -import type { UmbWorkspaceContext } from './workspace-context.interface.js'; +import type { UmbWorkspaceContext } from '../../workspace-context.interface.js'; import type { UmbEntityWorkspaceContext } from './entity-workspace-context.interface.js'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/index.ts index 69ba11bc07..7514818c70 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/index.ts @@ -5,7 +5,6 @@ export * from './publishable-workspace.context-token.js'; export * from './routable-workspace.context-token.js'; export * from './submittable-workspace.context-token.js'; export * from './variant-workspace.context-token.js'; -export * from './workspace.context-token.js'; export type * from './collection-workspace-context.interface.js'; export type * from './entity-workspace-context.interface.js'; export type * from './invariant-dataset-workspace-context.interface.js'; @@ -14,4 +13,4 @@ export type * from './publishable-workspace-context.interface.js'; export type * from './routable-workspace-context.interface.js'; export type * from './submittable-workspace-context.interface.js'; export type * from './variant-dataset-workspace-context.interface.js'; -export type * from './workspace-context.interface.js'; +export type * from '../../workspace-context.interface.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/property-structure-workspace.context-token.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/property-structure-workspace.context-token.ts index 6b4f95d8c3..9e9d3b4ec8 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/property-structure-workspace.context-token.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/property-structure-workspace.context-token.ts @@ -1,4 +1,4 @@ -import type { UmbWorkspaceContext } from './workspace-context.interface.js'; +import type { UmbWorkspaceContext } from '../../workspace-context.interface.js'; import type { UmbPropertyStructureWorkspaceContext } from './property-structure-workspace-context.interface.js'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/routable-workspace-context.interface.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/routable-workspace-context.interface.ts index c268b6c4d7..2645a1fda7 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/routable-workspace-context.interface.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/routable-workspace-context.interface.ts @@ -1,5 +1,5 @@ import type { UmbWorkspaceRouteManager } from '../../index.js'; -import type { UmbWorkspaceContext } from './workspace-context.interface.js'; +import type { UmbWorkspaceContext } from '../../workspace-context.interface.js'; export interface UmbRoutableWorkspaceContext extends UmbWorkspaceContext { readonly routes: UmbWorkspaceRouteManager; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/routable-workspace.context-token.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/routable-workspace.context-token.ts index 36deeebcfe..d4ddfefa49 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/routable-workspace.context-token.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/routable-workspace.context-token.ts @@ -1,5 +1,5 @@ +import type { UmbWorkspaceContext } from '../../workspace-context.interface.js'; import type { UmbRoutableWorkspaceContext } from './routable-workspace-context.interface.js'; -import type { UmbWorkspaceContext } from './workspace-context.interface.js'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; export const UMB_ROUTABLE_WORKSPACE_CONTEXT = new UmbContextToken( diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/variant-workspace.context-token.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/variant-workspace.context-token.ts index 0141a6c978..7a53544108 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/variant-workspace.context-token.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/variant-workspace.context-token.ts @@ -1,4 +1,4 @@ -import type { UmbWorkspaceContext } from './workspace-context.interface.js'; +import type { UmbWorkspaceContext } from '../../workspace-context.interface.js'; import type { UmbVariantDatasetWorkspaceContext } from './variant-dataset-workspace-context.interface.js'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/extensions/workspace.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/extensions/workspace.model.ts index 7a9bd1c299..8f6c999a5a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/extensions/workspace.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/extensions/workspace.model.ts @@ -1,5 +1,5 @@ import type { UmbRoutableWorkspaceContext } from '../contexts/tokens/routable-workspace-context.interface.js'; -import type { UmbWorkspaceContext } from '../contexts/tokens/workspace-context.interface.js'; +import type { UmbWorkspaceContext } from '../workspace-context.interface.js'; import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api'; import type { ManifestElementAndApi } from '@umbraco-cms/backoffice/extension-api'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/index.ts index 0896610ff9..fbd972bc2b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/index.ts @@ -8,3 +8,7 @@ export * from './paths.js'; export type * from './conditions/index.js'; export type * from './types.js'; + +export * from './workspace.context-token.js'; +export * from './workspace-context.interface.js'; +export * from './workspace.element.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/default-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/default-workspace.context.ts similarity index 83% rename from src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/default-workspace.context.ts rename to src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/default-workspace.context.ts index 7adc90ecc8..691117277e 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/default-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/default-workspace.context.ts @@ -1,5 +1,5 @@ -import { UMB_WORKSPACE_CONTEXT } from './tokens/workspace.context-token.js'; -import type { UmbWorkspaceContext } from './tokens/workspace-context.interface.js'; +import { UMB_WORKSPACE_CONTEXT } from '../../workspace.context-token.js'; +import type { UmbWorkspaceContext } from '../../workspace-context.interface.js'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { UmbContextBase } from '@umbraco-cms/backoffice/class-api'; import type { ManifestWorkspace } from '@umbraco-cms/backoffice/workspace'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/default-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/default-workspace.element.ts new file mode 100644 index 0000000000..bad9acdaf8 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/default-workspace.element.ts @@ -0,0 +1,20 @@ +import { css, customElement, html } from '@umbraco-cms/backoffice/external/lit'; +import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; +import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; + +@customElement('umb-default-workspace') +export class UmbDefaultWorkspaceElement extends UmbLitElement { + override render() { + return html`This is a default workspace`; + } + + static override styles = [UmbTextStyles, css``]; +} + +export { UmbDefaultWorkspaceElement as element }; + +declare global { + interface HTMLElementTagNameMap { + 'umb-default-workspace': UmbDefaultWorkspaceElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/index.ts new file mode 100644 index 0000000000..3ce7939a10 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/index.ts @@ -0,0 +1,2 @@ +export * from './default-workspace.context.js'; +export * from './default-workspace.element.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/manifests.ts new file mode 100644 index 0000000000..bcfd13210d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/manifests.ts @@ -0,0 +1,16 @@ +import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry'; + +export const manifests: Array = [ + { + type: 'kind', + alias: 'Umb.Kind.Workspace.Default', + matchKind: 'default', + matchType: 'workspace', + manifest: { + type: 'workspace', + kind: 'default', + element: () => import('./default-workspace.element.js'), + api: () => import('./default-workspace.context.js'), + }, + }, +]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/manifests.ts index 337250c9b5..c2927d3985 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/manifests.ts @@ -1,4 +1,9 @@ import { manifest as routableKindManifest } from './routable/routable-workspace.kind.js'; +import { manifests as defaultManifests } from './default/manifests.js'; + import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry'; -export const manifests: Array = [routableKindManifest]; +export const manifests: Array = [ + routableKindManifest, + ...defaultManifests, +]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/workspace-context.interface.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/workspace-context.interface.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/workspace-context.interface.ts rename to src/Umbraco.Web.UI.Client/src/packages/core/workspace/workspace-context.interface.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/workspace.context-token.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/workspace.context-token.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/workspace.context-token.ts rename to src/Umbraco.Web.UI.Client/src/packages/core/workspace/workspace.context-token.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/workspace.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/workspace.element.ts index ac3d5ef3a6..b447843035 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/workspace.element.ts @@ -16,7 +16,7 @@ export class UmbWorkspaceElement extends UmbLitElement { if (!this.entityType) return nothing; return html` import('./contexts/default-workspace.context.js')} + .defaultApi=${() => import('./kinds/default/default-workspace.context.js')} .apiArgs=${apiArgsCreator} .filter=${(manifest: ManifestWorkspace) => manifest.meta.entityType === this.entityType}>`; From c9d1a8d80585f93af5525db29d86fdee4acfaac9 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 17 Sep 2024 18:58:44 +0200 Subject: [PATCH 02/25] register kind types --- .../core/workspace/kinds/default/types.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/types.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/types.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/types.ts new file mode 100644 index 0000000000..b9d0933d18 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/types.ts @@ -0,0 +1,19 @@ +import type { ManifestWorkspace, MetaWorkspace } from '../../extensions/types.js'; +import type { UmbDefaultWorkspaceContext } from './default-workspace.context.js'; +import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api'; + +export interface ManifestWorkspaceDefaultKind + extends ManifestWorkspace { + type: 'workspace'; + kind: 'default'; +} + +export interface MetaWorkspaceDefaultKind extends MetaWorkspace { + headline: string; +} + +declare global { + interface UmbExtensionManifestMap { + umbManifestWorkspaceDefaultKind: ManifestWorkspaceDefaultKind; + } +} From 434ae7f186972ee15f6a186ec877f472dcd6fe39 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 17 Sep 2024 19:01:35 +0200 Subject: [PATCH 03/25] render headline --- .../kinds/default/default-workspace.element.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/default-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/default-workspace.element.ts index bad9acdaf8..3398d33021 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/default-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/default-workspace.element.ts @@ -1,14 +1,20 @@ -import { css, customElement, html } from '@umbraco-cms/backoffice/external/lit'; +import type { ManifestWorkspaceDefaultKind } from './types.js'; +import { customElement, html, ifDefined, property } from '@umbraco-cms/backoffice/external/lit'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; @customElement('umb-default-workspace') export class UmbDefaultWorkspaceElement extends UmbLitElement { + @property({ type: Object, attribute: false }) + manifest?: ManifestWorkspaceDefaultKind; + override render() { - return html`This is a default workspace`; + const headline = this.manifest?.meta.headline; + return html` + `; } - static override styles = [UmbTextStyles, css``]; + static override styles = [UmbTextStyles]; } export { UmbDefaultWorkspaceElement as element }; From 11d9c6efcb119c1c823f810d903fb89f7e4a9c2e Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 17 Sep 2024 20:22:50 +0200 Subject: [PATCH 04/25] add const --- .../src/packages/user/user/workspace/user-root/constants.ts | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/user/user/workspace/user-root/constants.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user/workspace/user-root/constants.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user/workspace/user-root/constants.ts new file mode 100644 index 0000000000..4627d874ce --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/user/user/workspace/user-root/constants.ts @@ -0,0 +1 @@ +export const UMB_USER_ROOT_WORKSPACE_ALIAS = 'Umb.Workspace.UserRoot'; From c14ee87a4d1758724579f491095ef0299fc9284c Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 17 Sep 2024 20:23:05 +0200 Subject: [PATCH 05/25] rename element --- .../collection-workspace-view.element.ts | 19 ++++++++++++ .../user-root/user-root-workspace.element.ts | 31 ------------------- 2 files changed, 19 insertions(+), 31 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/user/user/workspace/user-root/collection-workspace-view.element.ts delete mode 100644 src/Umbraco.Web.UI.Client/src/packages/user/user/workspace/user-root/user-root-workspace.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user/workspace/user-root/collection-workspace-view.element.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user/workspace/user-root/collection-workspace-view.element.ts new file mode 100644 index 0000000000..e2d8504a4f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/user/user/workspace/user-root/collection-workspace-view.element.ts @@ -0,0 +1,19 @@ +import { UMB_USER_COLLECTION_ALIAS } from '../../collection/index.js'; +import { html, customElement } from '@umbraco-cms/backoffice/external/lit'; +import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; + +const elementName = 'umb-collection-workspace-view'; +@customElement(elementName) +export class UmbCollectionWorkspaceViewElement extends UmbLitElement { + override render() { + return html` ; `; + } +} + +export { UmbCollectionWorkspaceViewElement as element }; + +declare global { + interface HTMLElementTagNameMap { + [elementName]: UmbCollectionWorkspaceViewElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user/workspace/user-root/user-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user/workspace/user-root/user-root-workspace.element.ts deleted file mode 100644 index 335f7b9590..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/user/user/workspace/user-root/user-root-workspace.element.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { UMB_USER_COLLECTION_ALIAS } from '../../collection/index.js'; -import { UMB_USER_ROOT_ENTITY_TYPE } from '../../entity.js'; -import { UmbEntityContext } from '@umbraco-cms/backoffice/entity'; -import { html, customElement } from '@umbraco-cms/backoffice/external/lit'; -import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; - -const elementName = 'umb-user-root-workspace'; -@customElement(elementName) -export class UmbUserRootWorkspaceElement extends UmbLitElement { - constructor() { - super(); - // TODO: this.should happen automatically - const entityContext = new UmbEntityContext(this); - entityContext.setEntityType(UMB_USER_ROOT_ENTITY_TYPE); - entityContext.setUnique(null); - } - - override render() { - return html` - ; - `; - } -} - -export { UmbUserRootWorkspaceElement as element }; - -declare global { - interface HTMLElementTagNameMap { - [elementName]: UmbUserRootWorkspaceElement; - } -} From 11513e365e2a952ab7e6d49c9dcdead08eacb818 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 17 Sep 2024 20:23:28 +0200 Subject: [PATCH 06/25] use editor in default workspace --- .../workspace/kinds/default/default-workspace.element.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/default-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/default-workspace.element.ts index 3398d33021..59596972ce 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/default-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/default-workspace.element.ts @@ -9,9 +9,12 @@ export class UmbDefaultWorkspaceElement extends UmbLitElement { manifest?: ManifestWorkspaceDefaultKind; override render() { + if (this.manifest === undefined) return html`
No Manifest
`; const headline = this.manifest?.meta.headline; - return html` - `; + + return html` `; } static override styles = [UmbTextStyles]; From 5ec34bc4a5c85c817df299da51d9928794647440 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 17 Sep 2024 20:23:55 +0200 Subject: [PATCH 07/25] provide entity context from workspace --- .../kinds/default/default-workspace.context.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/default-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/default-workspace.context.ts index 691117277e..e368fc2196 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/default-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/default-workspace.context.ts @@ -3,13 +3,18 @@ import type { UmbWorkspaceContext } from '../../workspace-context.interface.js'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { UmbContextBase } from '@umbraco-cms/backoffice/class-api'; import type { ManifestWorkspace } from '@umbraco-cms/backoffice/workspace'; +import { UmbEntityContext } from '@umbraco-cms/backoffice/entity'; export abstract class UmbDefaultWorkspaceContext extends UmbContextBase implements UmbWorkspaceContext { public workspaceAlias!: string; + #entityType!: string; + #unique: string | null = null; + + #entityContext = new UmbEntityContext(this); constructor(host: UmbControllerHost) { super(host, UMB_WORKSPACE_CONTEXT.toString()); @@ -18,11 +23,15 @@ export abstract class UmbDefaultWorkspaceContext set manifest(manifest: ManifestWorkspace) { this.workspaceAlias = manifest.alias; this.#entityType = manifest.meta.entityType; + + this.#entityContext.setEntityType(this.#entityType); + this.#entityContext.setUnique(this.#unique); } - getUnique(): string | undefined { - return undefined; + getUnique(): string | null { + return this.#unique; } + getEntityType(): string { return this.#entityType; } From a445354b97a240996a76332f203a4ab916e4ab27 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 17 Sep 2024 20:24:13 +0200 Subject: [PATCH 08/25] register workspace view --- .../user/workspace/user-root/manifests.ts | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user/workspace/user-root/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user/workspace/user-root/manifests.ts index 355381d31b..89197f082f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/user/workspace/user-root/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/user/workspace/user-root/manifests.ts @@ -1,13 +1,32 @@ import { UMB_USER_ROOT_ENTITY_TYPE } from '../../entity.js'; +import { UMB_USER_ROOT_WORKSPACE_ALIAS } from './constants.js'; export const manifests: Array = [ { type: 'workspace', - alias: 'Umb.Workspace.UserRoot', - name: 'User Root Workspace View', - element: () => import('./user-root-workspace.element.js'), + kind: 'default', + alias: UMB_USER_ROOT_WORKSPACE_ALIAS, + name: 'User Root Workspace', meta: { entityType: UMB_USER_ROOT_ENTITY_TYPE, + headline: '#treeHeaders_users', }, }, + { + type: 'workspaceView', + alias: 'Umb.WorkspaceView.UserRoot.Collection', + name: 'User Root Collection Workspace View', + element: () => import('./collection-workspace-view.element.js'), + meta: { + label: 'Collection', + pathname: 'collection', + icon: 'icon-layers', + }, + conditions: [ + { + alias: 'Umb.Condition.WorkspaceAlias', + match: UMB_USER_ROOT_WORKSPACE_ALIAS, + }, + ], + }, ]; From 99915a810c5cbb46f6c1522d6ac3b9646f7c5362 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 17 Sep 2024 20:43:21 +0200 Subject: [PATCH 09/25] use default workspace kind --- .../workspace/member-group-root/constants.ts | 1 + .../workspace/member-group-root/manifests.ts | 23 +++++++++++++++-- .../member-group-root-workspace.element.ts | 4 +-- .../member/workspace/member-root/constants.ts | 1 + .../member/workspace/member-root/manifests.ts | 25 ++++++++++++++++--- .../member-root-workspace.element.ts | 14 +---------- 6 files changed, 47 insertions(+), 21 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-root/constants.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-root/constants.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-root/constants.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-root/constants.ts new file mode 100644 index 0000000000..121572d3b9 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-root/constants.ts @@ -0,0 +1 @@ +export const UMB_MEMBER_GROUP_ROOT_WORKSPACE_ALIAS = 'Umb.Workspace.MemberGroupRoot'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-root/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-root/manifests.ts index e4b23dfa33..bae45205e6 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-root/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-root/manifests.ts @@ -1,13 +1,32 @@ import { UMB_MEMBER_GROUP_ROOT_ENTITY_TYPE } from '../../entity.js'; +import { UMB_MEMBER_GROUP_ROOT_WORKSPACE_ALIAS } from './constants.js'; export const manifests: Array = [ { type: 'workspace', - alias: 'Umb.Workspace.MemberGroupRoot', + kind: 'default', + alias: UMB_MEMBER_GROUP_ROOT_WORKSPACE_ALIAS, name: 'Member Group Root Workspace View', - element: () => import('./member-group-root-workspace.element.js'), meta: { entityType: UMB_MEMBER_GROUP_ROOT_ENTITY_TYPE, + headline: '#treeHeaders_memberGroups', }, }, + { + type: 'workspaceView', + alias: 'Umb.WorkspaceView.MemberGroupRoot.Collection', + name: 'Member Group Root Collection Workspace View', + element: () => import('./member-group-root-workspace.element.js'), + meta: { + label: 'Collection', + pathname: 'collection', + icon: 'icon-layers', + }, + conditions: [ + { + alias: 'Umb.Condition.WorkspaceAlias', + match: UMB_MEMBER_GROUP_ROOT_WORKSPACE_ALIAS, + }, + ], + }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-root/member-group-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-root/member-group-root-workspace.element.ts index dc61795be1..29fe2381dd 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-root/member-group-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-root/member-group-root-workspace.element.ts @@ -6,9 +6,7 @@ const elementName = 'umb-member-group-root-workspace'; @customElement(elementName) export class UmbMemberGroupRootWorkspaceElement extends UmbLitElement { override render() { - return html` - ; - `; + return html` `; } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-root/constants.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-root/constants.ts new file mode 100644 index 0000000000..962f595053 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-root/constants.ts @@ -0,0 +1 @@ +export const UMB_MEMBER_ROOT_WORKSPACE_ALIAS = 'Umb.Workspace.MemberRoot'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-root/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-root/manifests.ts index 22e93de7f7..8d5b0c81f9 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-root/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-root/manifests.ts @@ -1,13 +1,32 @@ import { UMB_MEMBER_ROOT_ENTITY_TYPE } from '../../entity.js'; +import { UMB_MEMBER_ROOT_WORKSPACE_ALIAS } from './constants.js'; export const manifests: Array = [ { type: 'workspace', - alias: 'Umb.Workspace.MemberRoot', - name: 'Member Root Workspace View', - element: () => import('./member-root-workspace.element.js'), + kind: 'default', + alias: UMB_MEMBER_ROOT_WORKSPACE_ALIAS, + name: 'Member Root Workspace', meta: { entityType: UMB_MEMBER_ROOT_ENTITY_TYPE, + headline: '#treeHeaders_member', }, }, + { + type: 'workspaceView', + alias: 'Umb.WorkspaceView.MemberRoot.Collection', + name: 'Member Root Collection Workspace View', + element: () => import('./member-root-workspace.element.js'), + meta: { + label: 'Collection', + pathname: 'collection', + icon: 'icon-layers', + }, + conditions: [ + { + alias: 'Umb.Condition.WorkspaceAlias', + match: UMB_MEMBER_ROOT_WORKSPACE_ALIAS, + }, + ], + }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-root/member-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-root/member-root-workspace.element.ts index 7095f17e2d..be48673354 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-root/member-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-root/member-root-workspace.element.ts @@ -1,24 +1,12 @@ import { UMB_MEMBER_COLLECTION_ALIAS } from '../../collection/index.js'; -import { UMB_MEMBER_ROOT_ENTITY_TYPE } from '../../entity.js'; -import { UmbEntityContext } from '@umbraco-cms/backoffice/entity'; import { html, customElement } from '@umbraco-cms/backoffice/external/lit'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; const elementName = 'umb-member-root-workspace'; @customElement(elementName) export class UmbMemberRootWorkspaceElement extends UmbLitElement { - constructor() { - super(); - // TODO: this.should happen automatically - const entityContext = new UmbEntityContext(this); - entityContext.setEntityType(UMB_MEMBER_ROOT_ENTITY_TYPE); - entityContext.setUnique(null); - } - override render() { - return html` - ; - `; + return html` ; `; } } From 09f23b10aa13e4cee3a63d9855d82b6f02ae605c Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 18 Sep 2024 07:08:56 +0200 Subject: [PATCH 10/25] rename collection workspace view kind to contentCollection --- ...tent-collection-workspace-view.element.ts} | 15 ++++++------- .../content-collection-workspace.context.ts | 14 +++++++++++++ .../collection}/manifests.ts | 8 +++---- .../packages/core/content/collection/types.ts | 21 +++++++++++++++++++ .../core/workspace/components/manifests.ts | 2 +- .../extensions/workspace-view.model.ts | 6 ------ .../documents/workspace/manifests.ts | 2 +- .../media/media/workspace/manifests.ts | 2 +- 8 files changed, 50 insertions(+), 20 deletions(-) rename src/Umbraco.Web.UI.Client/src/packages/core/{workspace/components/workspace-collection/workspace-view-collection.element.ts => content/collection/content-collection-workspace-view.element.ts} (81%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/content/collection/content-collection-workspace.context.ts rename src/Umbraco.Web.UI.Client/src/packages/core/{workspace/components/workspace-collection => content/collection}/manifests.ts (65%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/content/collection/types.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-collection/workspace-view-collection.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/content/collection/content-collection-workspace-view.element.ts similarity index 81% rename from src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-collection/workspace-view-collection.element.ts rename to src/Umbraco.Web.UI.Client/src/packages/core/content/collection/content-collection-workspace-view.element.ts index 7679035ab5..47ea73e5c9 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-collection/workspace-view-collection.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/content/collection/content-collection-workspace-view.element.ts @@ -1,14 +1,15 @@ -import type { UmbCollectionBulkActionPermissions, UmbCollectionConfiguration } from '../../../collection/types.js'; +import type { UmbCollectionBulkActionPermissions, UmbCollectionConfiguration } from '../../collection/types.js'; +import { UMB_CONTENT_COLLECTION_WORKSPACE_CONTEXT } from './content-collection-workspace.context.js'; import { customElement, html, nothing, state } from '@umbraco-cms/backoffice/external/lit'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import { UmbDataTypeDetailRepository } from '@umbraco-cms/backoffice/data-type'; import { UmbPropertyEditorConfigCollection } from '@umbraco-cms/backoffice/property-editor'; -import { UMB_COLLECTION_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/workspace'; import type { UmbDataTypeDetailModel } from '@umbraco-cms/backoffice/data-type'; import type { UmbWorkspaceViewElement } from '@umbraco-cms/backoffice/workspace'; -@customElement('umb-workspace-view-collection') -export class UmbWorkspaceViewCollectionElement extends UmbLitElement implements UmbWorkspaceViewElement { +const elementName = 'umb-content-collection-workspace-view'; +@customElement('umb-content-collection-workspace-view') +export class UmbContentCollectionWorkspaceViewElement extends UmbLitElement implements UmbWorkspaceViewElement { @state() private _loading = true; @@ -29,7 +30,7 @@ export class UmbWorkspaceViewCollectionElement extends UmbLitElement implements } async #observeConfig() { - this.consumeContext(UMB_COLLECTION_WORKSPACE_CONTEXT, (workspaceContext) => { + this.consumeContext(UMB_CONTENT_COLLECTION_WORKSPACE_CONTEXT, (workspaceContext) => { this._collectionAlias = workspaceContext.getCollectionAlias(); this._documentUnique = workspaceContext.getUnique() ?? ''; @@ -78,10 +79,10 @@ export class UmbWorkspaceViewCollectionElement extends UmbLitElement implements } } -export default UmbWorkspaceViewCollectionElement; +export { UmbContentCollectionWorkspaceViewElement as element }; declare global { interface HTMLElementTagNameMap { - 'umb-workspace-view-collection': UmbWorkspaceViewCollectionElement; + [elementName]: UmbContentCollectionWorkspaceViewElement; } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/content/collection/content-collection-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/core/content/collection/content-collection-workspace.context.ts new file mode 100644 index 0000000000..b72c47210c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/content/collection/content-collection-workspace.context.ts @@ -0,0 +1,14 @@ +import type { UmbContentCollectionWorkspaceContext } from './types.js'; +import type { UmbContentTypeModel } from '@umbraco-cms/backoffice/content-type'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import type { UmbWorkspaceContext } from '@umbraco-cms/backoffice/workspace'; + +export const UMB_CONTENT_COLLECTION_WORKSPACE_CONTEXT = new UmbContextToken< + UmbWorkspaceContext, + UmbContentCollectionWorkspaceContext +>( + 'UmbWorkspaceContext', + undefined, + (context): context is UmbContentCollectionWorkspaceContext => + (context as UmbContentCollectionWorkspaceContext).contentTypeHasCollection !== undefined, +); diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-collection/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/content/collection/manifests.ts similarity index 65% rename from src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-collection/manifests.ts rename to src/Umbraco.Web.UI.Client/src/packages/core/content/collection/manifests.ts index 19ec7fb94b..4ab94434f3 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-collection/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/content/collection/manifests.ts @@ -3,13 +3,13 @@ import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension export const manifests: Array = [ { type: 'kind', - alias: 'Umb.Kind.WorkspaceView.Collection', - matchKind: 'collection', + alias: 'Umb.Kind.WorkspaceView.Content.Collection', + matchKind: 'contentCollection', matchType: 'workspaceView', manifest: { type: 'workspaceView', - kind: 'collection', - element: () => import('./workspace-view-collection.element.js'), + kind: 'contentCollection', + element: () => import('./content-collection-workspace-view.element.js'), weight: 300, meta: { label: 'Collection', diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/content/collection/types.ts b/src/Umbraco.Web.UI.Client/src/packages/core/content/collection/types.ts new file mode 100644 index 0000000000..5bebfbb720 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/content/collection/types.ts @@ -0,0 +1,21 @@ +import type { UmbContentTypeModel } from '@umbraco-cms/backoffice/content-type'; +import type { + ManifestWorkspaceView, + MetaWorkspaceView, + UmbCollectionWorkspaceContext, +} from '@umbraco-cms/backoffice/workspace'; + +// eslint-disable-next-line @typescript-eslint/no-empty-object-type +export interface UmbContentCollectionWorkspaceContext + extends UmbCollectionWorkspaceContext {} + +export interface ManifestWorkspaceViewContentCollectionKind extends ManifestWorkspaceView { + type: 'workspaceView'; + kind: 'contentCollection'; +} + +declare global { + interface UmbExtensionManifestMap { + umbManifestWorkspaceViewContentCollectionKind: ManifestWorkspaceViewContentCollectionKind; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/manifests.ts index a08b080a82..b9da9ce35c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/manifests.ts @@ -1,7 +1,7 @@ import { manifests as workspaceActionManifests } from './workspace-action/manifests.js'; import { manifests as workspaceActionMenuItemManifests } from './workspace-action-menu-item/manifests.js'; import { manifests as workspaceBreadcrumbManifests } from './workspace-breadcrumb/manifests.js'; -import { manifests as workspaceViewManifests } from './workspace-collection/manifests.js'; +import { manifests as workspaceViewManifests } from '../../content/collection/manifests.js'; import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry'; export const manifests: Array = [ diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/extensions/workspace-view.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/extensions/workspace-view.model.ts index 0cd6920c62..6381dfdc2a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/extensions/workspace-view.model.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/extensions/workspace-view.model.ts @@ -18,11 +18,6 @@ export interface ManifestWorkspaceView { - type: 'workspaceView'; - kind: 'collection'; -} - export interface ManifestWorkspaceViewContentTypeDesignEditorKind extends ManifestWorkspaceView { type: 'workspaceView'; kind: 'contentTypeDesignEditor'; @@ -36,7 +31,6 @@ export interface MetaWorkspaceViewContentTypeDesignEditorKind extends MetaWorksp declare global { interface UmbExtensionManifestMap { ManifestWorkspaceView: ManifestWorkspaceView; - ManifestWorkspaceViewCollectionKind: ManifestWorkspaceViewCollectionKind; ManifestWorkspaceViewContentTypeDesignEditorKind: ManifestWorkspaceViewContentTypeDesignEditorKind; } } 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 de091d78af..0301ab190c 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 @@ -21,7 +21,7 @@ export const manifests: Array = [ }, { type: 'workspaceView', - kind: 'collection', + kind: 'contentCollection', alias: 'Umb.WorkspaceView.Document.Collection', name: 'Document Workspace Collection View', meta: { 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 5e889a0f14..37161fba4b 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 @@ -17,7 +17,7 @@ export const manifests: Array = [ }, { type: 'workspaceView', - kind: 'collection', + kind: 'contentCollection', alias: 'Umb.WorkspaceView.Media.Collection', name: 'Media Workspace Collection View', meta: { From 410551b4b44c3d91aae39530881dde9876c7678e Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 18 Sep 2024 08:23:57 +0200 Subject: [PATCH 11/25] register collection workspace view kind --- .../src/packages/core/collection/manifests.ts | 5 +++- .../collection-workspace-view.element.ts | 24 +++++++++++++++++++ .../core/collection/workspace-view/index.ts | 1 + .../collection/workspace-view/manifests.ts | 20 ++++++++++++++++ .../core/collection/workspace-view/types.ts | 17 +++++++++++++ .../collection-workspace-view.element.ts | 19 --------------- 6 files changed, 66 insertions(+), 20 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/collection/workspace-view/collection-workspace-view.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/collection/workspace-view/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/collection/workspace-view/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/collection/workspace-view/types.ts delete mode 100644 src/Umbraco.Web.UI.Client/src/packages/user/user/workspace/user-root/collection-workspace-view.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/collection/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/collection/manifests.ts index b0bff148e3..1ee0674ee8 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/collection/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/collection/manifests.ts @@ -1,7 +1,10 @@ +import type { UmbExtensionManifestKind } from '../extension-registry/registry.js'; import { manifest as collectionAliasCondition } from './collection-alias.manifest.js'; import { manifest as collectionBulkActionPermissionCondition } from './collection-bulk-action-permission.manifest.js'; +import { manifests as workspaceViewManifests } from './workspace-view/manifests.js'; -export const manifests: Array = [ +export const manifests: Array = [ + ...workspaceViewManifests, collectionAliasCondition, collectionBulkActionPermissionCondition, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/collection/workspace-view/collection-workspace-view.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/collection/workspace-view/collection-workspace-view.element.ts new file mode 100644 index 0000000000..ae709482ac --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/collection/workspace-view/collection-workspace-view.element.ts @@ -0,0 +1,24 @@ +import type { ManifestWorkspaceViewCollectionKind } from './types.js'; +import { html, customElement, property } from '@umbraco-cms/backoffice/external/lit'; +import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; + +const elementName = 'umb-collection-workspace-view'; +@customElement(elementName) +export class UmbCollectionWorkspaceViewElement extends UmbLitElement { + @property({ type: Object, attribute: false }) + manifest?: ManifestWorkspaceViewCollectionKind; + + override render() { + if (!this.manifest) return html`
No Manifest
`; + if (!this.manifest.meta.collectionAlias) return html`
No Collection Alias in Manifest
`; + return html``; + } +} + +export { UmbCollectionWorkspaceViewElement as element }; + +declare global { + interface HTMLElementTagNameMap { + [elementName]: UmbCollectionWorkspaceViewElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/collection/workspace-view/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/collection/workspace-view/index.ts new file mode 100644 index 0000000000..fc33e60d70 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/collection/workspace-view/index.ts @@ -0,0 +1 @@ +export * from './collection-workspace-view.element.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/collection/workspace-view/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/collection/workspace-view/manifests.ts new file mode 100644 index 0000000000..0f0ef67706 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/collection/workspace-view/manifests.ts @@ -0,0 +1,20 @@ +import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry'; + +export const manifests: Array = [ + { + type: 'kind', + alias: 'Umb.Kind.WorkspaceView.Collection', + matchKind: 'collection', + matchType: 'workspaceView', + manifest: { + type: 'workspaceView', + kind: 'collection', + element: () => import('./collection-workspace-view.element.js'), + meta: { + label: 'Collection', + pathname: 'collection', + icon: 'icon-layers', + }, + }, + }, +]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/collection/workspace-view/types.ts b/src/Umbraco.Web.UI.Client/src/packages/core/collection/workspace-view/types.ts new file mode 100644 index 0000000000..468461c3ae --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/collection/workspace-view/types.ts @@ -0,0 +1,17 @@ +import type { ManifestWorkspaceView, MetaWorkspaceView } from '@umbraco-cms/backoffice/workspace'; + +export interface ManifestWorkspaceViewCollectionKind extends ManifestWorkspaceView { + type: 'workspaceView'; + kind: 'collection'; + meta: MetaWorkspaceViewCollectionKind; +} + +export interface MetaWorkspaceViewCollectionKind extends MetaWorkspaceView { + collectionAlias: string; +} + +declare global { + interface UmbExtensionManifestMap { + umbManifestWorkspaceViewCollectionKind: ManifestWorkspaceViewCollectionKind; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user/workspace/user-root/collection-workspace-view.element.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user/workspace/user-root/collection-workspace-view.element.ts deleted file mode 100644 index e2d8504a4f..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/user/user/workspace/user-root/collection-workspace-view.element.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { UMB_USER_COLLECTION_ALIAS } from '../../collection/index.js'; -import { html, customElement } from '@umbraco-cms/backoffice/external/lit'; -import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; - -const elementName = 'umb-collection-workspace-view'; -@customElement(elementName) -export class UmbCollectionWorkspaceViewElement extends UmbLitElement { - override render() { - return html` ; `; - } -} - -export { UmbCollectionWorkspaceViewElement as element }; - -declare global { - interface HTMLElementTagNameMap { - [elementName]: UmbCollectionWorkspaceViewElement; - } -} From beccd85a0db705d5e8ca8bf25af9a5436d03e492 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 18 Sep 2024 08:24:25 +0200 Subject: [PATCH 12/25] utilize collection kind for user root --- .../src/packages/user/user/workspace/user-root/manifests.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user/workspace/user-root/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user/workspace/user-root/manifests.ts index 89197f082f..90662322da 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/user/workspace/user-root/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/user/workspace/user-root/manifests.ts @@ -1,3 +1,4 @@ +import { UMB_USER_COLLECTION_ALIAS } from '../../collection/constants.js'; import { UMB_USER_ROOT_ENTITY_TYPE } from '../../entity.js'; import { UMB_USER_ROOT_WORKSPACE_ALIAS } from './constants.js'; @@ -14,13 +15,14 @@ export const manifests: Array = [ }, { type: 'workspaceView', + kind: 'collection', alias: 'Umb.WorkspaceView.UserRoot.Collection', name: 'User Root Collection Workspace View', - element: () => import('./collection-workspace-view.element.js'), meta: { label: 'Collection', - pathname: 'collection', icon: 'icon-layers', + pathname: 'collection', + collectionAlias: UMB_USER_COLLECTION_ALIAS, }, conditions: [ { From 90c4ade0f888c15aa394ce1837f1699d5b2b8867 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 18 Sep 2024 08:25:51 +0200 Subject: [PATCH 13/25] use collection kind on member root --- .../member/workspace/member-root/manifests.ts | 4 +++- .../member-root-workspace.element.ts | 19 ------------------- 2 files changed, 3 insertions(+), 20 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-root/member-root-workspace.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-root/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-root/manifests.ts index 8d5b0c81f9..afe1a7fa56 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-root/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-root/manifests.ts @@ -1,3 +1,4 @@ +import { UMB_MEMBER_COLLECTION_ALIAS } from '../../collection/manifests.js'; import { UMB_MEMBER_ROOT_ENTITY_TYPE } from '../../entity.js'; import { UMB_MEMBER_ROOT_WORKSPACE_ALIAS } from './constants.js'; @@ -14,13 +15,14 @@ export const manifests: Array = [ }, { type: 'workspaceView', + kind: 'collection', alias: 'Umb.WorkspaceView.MemberRoot.Collection', name: 'Member Root Collection Workspace View', - element: () => import('./member-root-workspace.element.js'), meta: { label: 'Collection', pathname: 'collection', icon: 'icon-layers', + collectionAlias: UMB_MEMBER_COLLECTION_ALIAS, }, conditions: [ { diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-root/member-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-root/member-root-workspace.element.ts deleted file mode 100644 index be48673354..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-root/member-root-workspace.element.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { UMB_MEMBER_COLLECTION_ALIAS } from '../../collection/index.js'; -import { html, customElement } from '@umbraco-cms/backoffice/external/lit'; -import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; - -const elementName = 'umb-member-root-workspace'; -@customElement(elementName) -export class UmbMemberRootWorkspaceElement extends UmbLitElement { - override render() { - return html` ; `; - } -} - -export { UmbMemberRootWorkspaceElement as element }; - -declare global { - interface HTMLElementTagNameMap { - [elementName]: UmbMemberRootWorkspaceElement; - } -} From 4a39839132469f28acd817de956549ef7c27c28d Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 18 Sep 2024 08:29:06 +0200 Subject: [PATCH 14/25] use collection kind for member group root --- .../workspace/member-group-root/manifests.ts | 4 +++- .../member-group-root-workspace.element.ts | 19 ------------------- 2 files changed, 3 insertions(+), 20 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-root/member-group-root-workspace.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-root/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-root/manifests.ts index bae45205e6..25634ebe02 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-root/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-root/manifests.ts @@ -1,3 +1,4 @@ +import { UMB_MEMBER_GROUP_COLLECTION_ALIAS } from '../../collection/manifests.js'; import { UMB_MEMBER_GROUP_ROOT_ENTITY_TYPE } from '../../entity.js'; import { UMB_MEMBER_GROUP_ROOT_WORKSPACE_ALIAS } from './constants.js'; @@ -14,13 +15,14 @@ export const manifests: Array = [ }, { type: 'workspaceView', + kind: 'collection', alias: 'Umb.WorkspaceView.MemberGroupRoot.Collection', name: 'Member Group Root Collection Workspace View', - element: () => import('./member-group-root-workspace.element.js'), meta: { label: 'Collection', pathname: 'collection', icon: 'icon-layers', + collectionAlias: UMB_MEMBER_GROUP_COLLECTION_ALIAS, }, conditions: [ { diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-root/member-group-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-root/member-group-root-workspace.element.ts deleted file mode 100644 index 29fe2381dd..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-group/workspace/member-group-root/member-group-root-workspace.element.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { UMB_MEMBER_GROUP_COLLECTION_ALIAS } from '../../collection/index.js'; -import { html, customElement } from '@umbraco-cms/backoffice/external/lit'; -import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; - -const elementName = 'umb-member-group-root-workspace'; -@customElement(elementName) -export class UmbMemberGroupRootWorkspaceElement extends UmbLitElement { - override render() { - return html` `; - } -} - -export { UmbMemberGroupRootWorkspaceElement as element }; - -declare global { - interface HTMLElementTagNameMap { - [elementName]: UmbMemberGroupRootWorkspaceElement; - } -} From c17b94c6c8a23f20d237d4e43ca90bcc0046e0f3 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 18 Sep 2024 08:42:54 +0200 Subject: [PATCH 15/25] use collection kind for extension insight workspace --- .../src/packages/extension-insights/entity.ts | 2 ++ .../extension-insights/workspace/constants.ts | 1 + .../extension-root-workspace.element.ts | 26 ---------------- .../extension-root-workspace.stories.ts | 15 --------- .../extension-insights/workspace/manifests.ts | 31 ++++++++++++++++--- 5 files changed, 29 insertions(+), 46 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/extension-insights/workspace/constants.ts delete mode 100644 src/Umbraco.Web.UI.Client/src/packages/extension-insights/workspace/extension-root-workspace.element.ts delete mode 100644 src/Umbraco.Web.UI.Client/src/packages/extension-insights/workspace/extension-root-workspace.stories.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/extension-insights/entity.ts b/src/Umbraco.Web.UI.Client/src/packages/extension-insights/entity.ts index 5d12118ed8..3f229d026e 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/extension-insights/entity.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/extension-insights/entity.ts @@ -1,3 +1,5 @@ export const UMB_EXTENSION_ENTITY_TYPE = 'extension'; +export const UMB_EXTENSION_ROOT_ENTITY_TYPE = 'extension-root'; export type UmbExtensionEntityType = typeof UMB_EXTENSION_ENTITY_TYPE; +export type UmbExtensionRootEntityType = typeof UMB_EXTENSION_ROOT_ENTITY_TYPE; diff --git a/src/Umbraco.Web.UI.Client/src/packages/extension-insights/workspace/constants.ts b/src/Umbraco.Web.UI.Client/src/packages/extension-insights/workspace/constants.ts new file mode 100644 index 0000000000..9a53e581e1 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/extension-insights/workspace/constants.ts @@ -0,0 +1 @@ +export const UMB_EXTENSION_ROOT_WORKSPACE_ALIAS = 'Umb.Workspace.ExtensionRoot'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/extension-insights/workspace/extension-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/packages/extension-insights/workspace/extension-root-workspace.element.ts deleted file mode 100644 index ea7740efa4..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/extension-insights/workspace/extension-root-workspace.element.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { UMB_EXTENSION_COLLECTION_ALIAS } from '../collection/manifests.js'; -import { UMB_EXTENSION_ROOT_WORKSPACE_ALIAS } from './manifests.js'; -import { html, customElement } from '@umbraco-cms/backoffice/external/lit'; -import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; - -@customElement('umb-extension-root-workspace') -export class UmbExtensionRootWorkspaceElement extends UmbLitElement { - override render() { - return html` - - - - `; - } -} - -export { UmbExtensionRootWorkspaceElement as element }; - -declare global { - interface HTMLElementTagNameMap { - 'umb-extension-root-workspace': UmbExtensionRootWorkspaceElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/src/packages/extension-insights/workspace/extension-root-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/packages/extension-insights/workspace/extension-root-workspace.stories.ts deleted file mode 100644 index ca32dbced5..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/extension-insights/workspace/extension-root-workspace.stories.ts +++ /dev/null @@ -1,15 +0,0 @@ -import './extension-root-workspace.element.js'; - -import type { UmbExtensionRootWorkspaceElement } from './extension-root-workspace.element.js'; -import type { Meta, Story } from '@storybook/web-components'; -import { html } from '@umbraco-cms/backoffice/external/lit'; - -export default { - title: 'Workspaces/Extensions', - component: 'umb-workspace-extension-root', - id: 'umb-workspace-extension-root', -} as Meta; - -export const AAAOverview: Story = () => - html` `; -AAAOverview.storyName = 'Overview'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/extension-insights/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/extension-insights/workspace/manifests.ts index faa495b800..1fafb06a69 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/extension-insights/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/extension-insights/workspace/manifests.ts @@ -1,13 +1,34 @@ -export const UMB_EXTENSION_ROOT_WORKSPACE_ALIAS = 'Umb.Workspace.ExtensionRoot'; +import { UMB_EXTENSION_COLLECTION_ALIAS } from '../collection/manifests.js'; +import { UMB_EXTENSION_ROOT_ENTITY_TYPE } from '../entity.js'; +import { UMB_EXTENSION_ROOT_WORKSPACE_ALIAS } from './constants.js'; export const manifests: Array = [ { type: 'workspace', - alias: 'Umb.Workspace.ExtensionRoot', - name: 'Extension Root Workspace', - element: () => import('./extension-root-workspace.element.js'), + kind: 'default', + alias: UMB_EXTENSION_ROOT_WORKSPACE_ALIAS, + name: 'Extension Insights Root Workspace', meta: { - entityType: 'extension-root', + entityType: UMB_EXTENSION_ROOT_ENTITY_TYPE, + headline: 'Extension Insights', }, }, + { + type: 'workspaceView', + kind: 'collection', + alias: 'Umb.WorkspaceView.Extension.Collection', + name: 'Extension Insights Root Root Collection Workspace View', + meta: { + label: 'Collection', + pathname: 'collection', + icon: 'icon-layers', + collectionAlias: UMB_EXTENSION_COLLECTION_ALIAS, + }, + conditions: [ + { + alias: 'Umb.Condition.WorkspaceAlias', + match: UMB_EXTENSION_ROOT_WORKSPACE_ALIAS, + }, + ], + }, ]; From aae0b6f3196afa42fc6db3d752f49360d5851709 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 18 Sep 2024 12:26:41 +0200 Subject: [PATCH 16/25] use collection workspace view for webhook root --- .../workspace/webhook-root/constants.ts | 1 + .../workspace/webhook-root/manifests.ts | 29 +++++++++++++++++-- .../webhook-root-workspace.element.ts | 22 -------------- 3 files changed, 27 insertions(+), 25 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/webhook/workspace/webhook-root/constants.ts delete mode 100644 src/Umbraco.Web.UI.Client/src/packages/webhook/workspace/webhook-root/webhook-root-workspace.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/webhook/workspace/webhook-root/constants.ts b/src/Umbraco.Web.UI.Client/src/packages/webhook/workspace/webhook-root/constants.ts new file mode 100644 index 0000000000..66343fd2e4 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/webhook/workspace/webhook-root/constants.ts @@ -0,0 +1 @@ +export const UMB_WEBHOOK_ROOT_WORKSPACE_ALIAS = 'Umb.Workspace.WebhookRoot'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/webhook/workspace/webhook-root/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/webhook/workspace/webhook-root/manifests.ts index 177801e0af..1bd1cbc0e0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/webhook/workspace/webhook-root/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/webhook/workspace/webhook-root/manifests.ts @@ -1,11 +1,34 @@ +import { UMB_WEBHOOK_COLLECTION_ALIAS } from '../../collection/manifests.js'; +import { UMB_WEBHOOK_ROOT_ENTITY_TYPE } from '../../entity.js'; +import { UMB_WEBHOOK_ROOT_WORKSPACE_ALIAS } from './constants.js'; + export const manifests: Array = [ { type: 'workspace', - alias: 'Umb.Workspace.WebhookRoot', + kind: 'default', + alias: UMB_WEBHOOK_ROOT_WORKSPACE_ALIAS, name: 'Webhook Root Workspace', - element: () => import('./webhook-root-workspace.element.js'), meta: { - entityType: 'webhook-root', + entityType: UMB_WEBHOOK_ROOT_ENTITY_TYPE, + headline: '#treeHeaders_webhooks', }, }, + { + type: 'workspaceView', + kind: 'collection', + alias: 'Umb.WorkspaceView.WebhookRoot.Collection', + name: 'Webhook Root Collection Workspace View', + meta: { + label: 'Collection', + pathname: 'collection', + icon: 'icon-layers', + collectionAlias: UMB_WEBHOOK_COLLECTION_ALIAS, + }, + conditions: [ + { + alias: 'Umb.Condition.WorkspaceAlias', + match: UMB_WEBHOOK_ROOT_WORKSPACE_ALIAS, + }, + ], + }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/webhook/workspace/webhook-root/webhook-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/packages/webhook/workspace/webhook-root/webhook-root-workspace.element.ts deleted file mode 100644 index 3149d847cc..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/webhook/workspace/webhook-root/webhook-root-workspace.element.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { UMB_WEBHOOK_COLLECTION_ALIAS } from '../../collection/index.js'; -import { html, customElement } from '@umbraco-cms/backoffice/external/lit'; -import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; - -@customElement('umb-webhook-root-workspace') -export class UmbWebhookRootWorkspaceElement extends UmbLitElement { - override render() { - return html` - - ; - - `; - } -} - -export { UmbWebhookRootWorkspaceElement as element }; - -declare global { - interface HTMLElementTagNameMap { - 'umb-webhook-root-workspace': UmbWebhookRootWorkspaceElement; - } -} From fdd9278609c795e5dc3fb62862b5fc1b64958ae0 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 18 Sep 2024 12:32:21 +0200 Subject: [PATCH 17/25] use collection workspace view for languages --- .../workspace/language-root/constants.ts | 1 + .../language-root-workspace.element.ts | 20 ------------- .../workspace/language-root/manifests.ts | 29 +++++++++++++++++-- 3 files changed, 27 insertions(+), 23 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/language/workspace/language-root/constants.ts delete mode 100644 src/Umbraco.Web.UI.Client/src/packages/language/workspace/language-root/language-root-workspace.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/language/workspace/language-root/constants.ts b/src/Umbraco.Web.UI.Client/src/packages/language/workspace/language-root/constants.ts new file mode 100644 index 0000000000..4a072bb412 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/language/workspace/language-root/constants.ts @@ -0,0 +1 @@ +export const UMB_LANGUAGE_ROOT_WORKSPACE_ALIAS = 'Umb.Workspace.LanguageRoot'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/language/workspace/language-root/language-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/packages/language/workspace/language-root/language-root-workspace.element.ts deleted file mode 100644 index 32ef1c56eb..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/language/workspace/language-root/language-root-workspace.element.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { UMB_LANGUAGE_COLLECTION_ALIAS } from '../../collection/index.js'; -import { html, customElement } from '@umbraco-cms/backoffice/external/lit'; -import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; - -@customElement('umb-language-root-workspace') -export class UmbLanguageRootWorkspaceElement extends UmbLitElement { - override render() { - return html` - ; - `; - } -} - -export { UmbLanguageRootWorkspaceElement as element }; - -declare global { - interface HTMLElementTagNameMap { - 'umb-language-root-workspace': UmbLanguageRootWorkspaceElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/src/packages/language/workspace/language-root/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/language/workspace/language-root/manifests.ts index 34a2abd249..08d9f3509f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/language/workspace/language-root/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/language/workspace/language-root/manifests.ts @@ -1,11 +1,34 @@ +import { UMB_LANGUAGE_COLLECTION_ALIAS } from '../../collection/index.js'; +import { UMB_LANGUAGE_ROOT_ENTITY_TYPE } from '../../entity.js'; +import { UMB_LANGUAGE_ROOT_WORKSPACE_ALIAS } from './constants.js'; + export const manifests: Array = [ { type: 'workspace', - alias: 'Umb.Workspace.LanguageRoot', + kind: 'default', + alias: UMB_LANGUAGE_ROOT_WORKSPACE_ALIAS, name: 'Language Root Workspace', - element: () => import('./language-root-workspace.element.js'), meta: { - entityType: 'language-root', + entityType: UMB_LANGUAGE_ROOT_ENTITY_TYPE, + headline: '#treeHeaders_languages', }, }, + { + type: 'workspaceView', + kind: 'collection', + alias: 'Umb.WorkspaceView.LanguageRoot.Collection', + name: 'Webhook Root Collection Workspace View', + meta: { + label: 'Collection', + pathname: 'collection', + icon: 'icon-layers', + collectionAlias: UMB_LANGUAGE_COLLECTION_ALIAS, + }, + conditions: [ + { + alias: 'Umb.Condition.WorkspaceAlias', + match: UMB_LANGUAGE_ROOT_WORKSPACE_ALIAS, + }, + ], + }, ]; From 398fb5afc08f3efd97f83711f5892dd0afda95f6 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 18 Sep 2024 13:03:56 +0200 Subject: [PATCH 18/25] use collection kind for relations --- .../src/packages/relations/manifests.ts | 6 ++-- .../src/packages/relations/menu/manifests.ts | 4 +-- .../relations/relation-types/index.ts | 3 +- .../relation-types/workspace/manifests.ts | 3 +- .../workspace/relation-type-root/manifests.ts | 11 ------- .../relation-type-root-workspace.element.ts | 22 ------------- .../relation-type-workspace-editor.element.ts | 5 ++- .../packages/relations/workspace/manifests.ts | 32 +++++++++++++++++++ .../src/packages/relations/workspace/paths.ts | 7 ++++ 9 files changed, 49 insertions(+), 44 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type-root/manifests.ts delete mode 100644 src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type-root/relation-type-root-workspace.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/relations/workspace/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/relations/workspace/paths.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/manifests.ts index 4db7819f84..66c4ca9ee9 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/relations/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/manifests.ts @@ -1,9 +1,11 @@ import { manifests as menuManifests } from './menu/manifests.js'; import { manifests as relationManifests } from './relations/manifests.js'; import { manifests as relationTypeManifests } from './relation-types/manifests.js'; +import { manifests as workspaceManifests } from './workspace/manifests.js'; export const manifests: Array = [ - ...relationTypeManifests, - ...relationManifests, ...menuManifests, + ...relationManifests, + ...relationTypeManifests, + ...workspaceManifests, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/menu/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/menu/manifests.ts index 0e8bf33d78..7e96e7f245 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/relations/menu/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/menu/manifests.ts @@ -1,5 +1,3 @@ -import { UMB_RELATION_TYPE_ROOT_ENTITY_TYPE } from '../relation-types/index.js'; - export const manifests: Array = [ { type: 'menuItem', @@ -9,7 +7,7 @@ export const manifests: Array = [ meta: { label: '#treeHeaders_relations', icon: 'icon-trafic', - entityType: UMB_RELATION_TYPE_ROOT_ENTITY_TYPE, + entityType: 'relations-root', menus: ['Umb.Menu.AdvancedSettings'], }, }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/index.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/index.ts index 48e5364e41..b12dbb1348 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/index.ts @@ -1,2 +1,3 @@ -export * from './repository/index.js'; +export * from './collection/index.js'; export * from './entity.js'; +export * from './repository/index.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/manifests.ts index 190a2a6711..b3b0c6a5cd 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/manifests.ts @@ -1,4 +1,3 @@ import { manifests as relationTypeManifests } from './relation-type/manifests.js'; -import { manifests as relationTypeRootManifests } from './relation-type-root/manifests.js'; -export const manifests: Array = [...relationTypeManifests, ...relationTypeRootManifests]; +export const manifests: Array = [...relationTypeManifests]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type-root/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type-root/manifests.ts deleted file mode 100644 index dc47eb8a07..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type-root/manifests.ts +++ /dev/null @@ -1,11 +0,0 @@ -export const manifests: Array = [ - { - type: 'workspace', - alias: 'Umb.Workspace.RelationTypeRoot', - name: 'Relation Type Root Workspace', - element: () => import('./relation-type-root-workspace.element.js'), - meta: { - entityType: 'relation-type-root', - }, - }, -]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type-root/relation-type-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type-root/relation-type-root-workspace.element.ts deleted file mode 100644 index f61aa2ae63..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type-root/relation-type-root-workspace.element.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { UMB_RELATION_TYPE_COLLECTION_ALIAS } from '../../collection/index.js'; -import { html, customElement } from '@umbraco-cms/backoffice/external/lit'; -import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; - -@customElement('umb-relation-type-root-workspace') -export class UmbRelationTypeRootWorkspaceElement extends UmbLitElement { - override render() { - return html` - - ; - - `; - } -} - -export { UmbRelationTypeRootWorkspaceElement as element }; - -declare global { - interface HTMLElementTagNameMap { - 'umb-relation-type-root-workspace': UmbRelationTypeRootWorkspaceElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type/relation-type-workspace-editor.element.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type/relation-type-workspace-editor.element.ts index e52f46cc97..851158f541 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type/relation-type-workspace-editor.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type/relation-type-workspace-editor.element.ts @@ -2,6 +2,7 @@ import { UMB_RELATION_TYPE_WORKSPACE_CONTEXT } from './relation-type-workspace.c import { observeMultiple } from '@umbraco-cms/backoffice/observable-api'; import { css, html, customElement, state } from '@umbraco-cms/backoffice/external/lit'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; +import { UMB_RELATIONS_ROOT_WORKSPACE_PATH } from 'src/packages/relations/workspace/paths.js'; /** * @element umb-relation-type-workspace-editor @@ -36,9 +37,7 @@ export class UmbRelationTypeWorkspaceEditorElement extends UmbLitElement { override render() { return html` - +