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/workspace/components/workspace-collection/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/collection/workspace-view/manifests.ts similarity index 67% 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/collection/workspace-view/manifests.ts index 19ec7fb94b..0f0ef67706 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/collection/workspace-view/manifests.ts @@ -1,6 +1,6 @@ import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry'; -export const manifests: Array = [ +export const manifests: Array = [ { type: 'kind', alias: 'Umb.Kind.WorkspaceView.Collection', @@ -9,12 +9,11 @@ export const manifests: Array = [ manifest: { type: 'workspaceView', kind: 'collection', - element: () => import('./workspace-view-collection.element.js'), - weight: 300, + element: () => import('./collection-workspace-view.element.js'), meta: { label: 'Collection', pathname: 'collection', - icon: 'icon-grid', + 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/core/components/entity-actions-bundle/entity-actions-bundle.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/entity-actions-bundle/entity-actions-bundle.element.ts index c989f99a87..786c55fa5d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/entity-actions-bundle/entity-actions-bundle.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/entity-actions-bundle/entity-actions-bundle.element.ts @@ -45,7 +45,7 @@ export class UmbEntityActionsBundleElement extends UmbLitElement { protected override updated(_changedProperties: PropertyValueMap | Map): void { if (_changedProperties.has('entityType') && _changedProperties.has('unique')) { this.#entityContext.setEntityType(this.entityType); - this.#entityContext.setUnique(this.unique); + this.#entityContext.setUnique(this.unique ?? null); this.#observeEntityActions(); } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/collection-workspace-context.interface.ts b/src/Umbraco.Web.UI.Client/src/packages/core/content/collection/content-collection-workspace-context.interface.ts similarity index 60% rename from src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/collection-workspace-context.interface.ts rename to src/Umbraco.Web.UI.Client/src/packages/core/content/collection/content-collection-workspace-context.interface.ts index 6268e06d27..5df6b41d25 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/collection-workspace-context.interface.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/content/collection/content-collection-workspace-context.interface.ts @@ -1,8 +1,8 @@ -import type { UmbEntityWorkspaceContext } from './entity-workspace-context.interface.js'; import type { Observable } from '@umbraco-cms/backoffice/external/rxjs'; import type { UmbContentTypeModel, UmbContentTypeStructureManager } from '@umbraco-cms/backoffice/content-type'; +import type { UmbEntityWorkspaceContext } from '@umbraco-cms/backoffice/workspace'; -export interface UmbCollectionWorkspaceContext extends UmbEntityWorkspaceContext { +export interface UmbContentCollectionWorkspaceContext extends UmbEntityWorkspaceContext { contentTypeHasCollection: Observable; getCollectionAlias(): string; structure: UmbContentTypeStructureManager; 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..f9a8b7dc19 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-token.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-token.ts b/src/Umbraco.Web.UI.Client/src/packages/core/content/collection/content-collection-workspace.context-token.ts new file mode 100644 index 0000000000..eab9a2a5bb --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/content/collection/content-collection-workspace.context-token.ts @@ -0,0 +1,14 @@ +import type { UmbContentCollectionWorkspaceContext } from './content-collection-workspace-context.interface.js'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import type { UmbContentTypeModel } from '@umbraco-cms/backoffice/content-type'; +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/content/collection/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/content/collection/index.ts new file mode 100644 index 0000000000..0ff461eb07 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/content/collection/index.ts @@ -0,0 +1,2 @@ +export type * from './content-collection-workspace-context.interface.js'; +export * from './content-collection-workspace.context-token.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/content/collection/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/content/collection/manifests.ts new file mode 100644 index 0000000000..4ab94434f3 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/content/collection/manifests.ts @@ -0,0 +1,21 @@ +import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry'; + +export const manifests: Array = [ + { + type: 'kind', + alias: 'Umb.Kind.WorkspaceView.Content.Collection', + matchKind: 'contentCollection', + matchType: 'workspaceView', + manifest: { + type: 'workspaceView', + kind: 'contentCollection', + element: () => import('./content-collection-workspace-view.element.js'), + weight: 300, + meta: { + label: 'Collection', + pathname: 'collection', + icon: 'icon-grid', + }, + }, + }, +]; 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..d029868d77 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/content/collection/types.ts @@ -0,0 +1,12 @@ +import type { ManifestWorkspaceView, MetaWorkspaceView } from '@umbraco-cms/backoffice/workspace'; + +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/content/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/content/index.ts index 90606662dc..54e507719b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/content/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/content/index.ts @@ -1,4 +1,6 @@ export { UMB_CONTENT_PROPERTY_CONTEXT } from './content-property.context-token.js'; export { UmbContentPropertyContext } from './content-property.context.js'; + export * from './property-dataset-context/content-property-dataset.context.js'; export * from './workspace/index.js'; +export * from './collection/index.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity/entity.context.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity/entity.context.ts index 4770a11be3..f3058608df 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/entity/entity.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity/entity.context.ts @@ -1,4 +1,5 @@ import { UMB_ENTITY_CONTEXT } from './entity.context-token.js'; +import type { UmbEntityUnique } from './types.js'; import { UmbContextBase } from '@umbraco-cms/backoffice/class-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { UmbStringState } from '@umbraco-cms/backoffice/observable-api'; @@ -12,7 +13,7 @@ export class UmbEntityContext extends UmbContextBase { #entityType = new UmbStringState(undefined); public readonly entityType = this.#entityType.asObservable(); - #unique = new UmbStringState(undefined); + #unique = new UmbStringState(null); public readonly unique = this.#unique.asObservable(); /** @@ -44,16 +45,16 @@ export class UmbEntityContext extends UmbContextBase { /** * Set the unique - * @param {string | null | undefined} unique + * @param {string | null} unique * @memberof UmbEntityContext */ - setUnique(unique: string | null | undefined) { + setUnique(unique: string | null) { this.#unique.setValue(unique); } /** * Get the unique - * @returns {string | null | undefined} + * @returns {string | null} * @memberof UmbEntityContext */ getUnique() { 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/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/conditions/workspace-has-collection.condition.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/workspace-has-collection.condition.ts index 1ce9048884..fa00381174 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/workspace-has-collection.condition.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/conditions/workspace-has-collection.condition.ts @@ -1,4 +1,4 @@ -import { UMB_COLLECTION_WORKSPACE_CONTEXT } from '../contexts/tokens/collection-workspace.context-token.js'; +import { UMB_CONTENT_COLLECTION_WORKSPACE_CONTEXT } from '../../content/collection/content-collection-workspace.context-token.js'; import type { WorkspaceHasCollectionConditionConfig } from './types.js'; import { UMB_WORKSPACE_HAS_COLLECTION_CONDITION } from './const.js'; import { UmbConditionBase } from '@umbraco-cms/backoffice/extension-registry'; @@ -18,7 +18,7 @@ export class UmbWorkspaceHasCollectionCondition constructor(host: UmbControllerHost, args: UmbConditionControllerArguments) { super(host, args); - this.consumeContext(UMB_COLLECTION_WORKSPACE_CONTEXT, (context) => { + this.consumeContext(UMB_CONTENT_COLLECTION_WORKSPACE_CONTEXT, (context) => { this.observe( context.contentTypeHasCollection, (hasCollection) => { 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/contexts/default-workspace.context.ts deleted file mode 100644 index 7adc90ecc8..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/default-workspace.context.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { UMB_WORKSPACE_CONTEXT } from './tokens/workspace.context-token.js'; -import type { UmbWorkspaceContext } from './tokens/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'; - -export abstract class UmbDefaultWorkspaceContext - extends UmbContextBase - implements UmbWorkspaceContext -{ - public workspaceAlias!: string; - #entityType!: string; - - constructor(host: UmbControllerHost) { - super(host, UMB_WORKSPACE_CONTEXT.toString()); - } - - set manifest(manifest: ManifestWorkspace) { - this.workspaceAlias = manifest.alias; - this.#entityType = manifest.meta.entityType; - } - - getUnique(): string | undefined { - return undefined; - } - getEntityType(): string { - return this.#entityType; - } -} - -export { UmbDefaultWorkspaceContext as api }; 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 57b04ad199..9b6ffe3477 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,2 +1 @@ -export * from './default-workspace.context.js'; export * from './tokens/index.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/collection-workspace.context-token.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/collection-workspace.context-token.ts deleted file mode 100644 index c39ef48779..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/collection-workspace.context-token.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; -import type { UmbContentTypeModel } from '@umbraco-cms/backoffice/content-type'; -import type { UmbWorkspaceContext, UmbCollectionWorkspaceContext } from '@umbraco-cms/backoffice/workspace'; - -export const UMB_COLLECTION_WORKSPACE_CONTEXT = new UmbContextToken< - UmbWorkspaceContext, - UmbCollectionWorkspaceContext ->( - 'UmbWorkspaceContext', - undefined, - (context): context is UmbCollectionWorkspaceContext => - (context as UmbCollectionWorkspaceContext).contentTypeHasCollection !== undefined, -); - -/** - * @deprecated Use `UMB_COLLECTION_WORKSPACE_CONTEXT` instead. This token will be removed in the RC version. - * TODO: Remove in RC - */ -export const UMB_WORKSPACE_COLLECTION_CONTEXT = UMB_COLLECTION_WORKSPACE_CONTEXT; 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..06d402f312 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 @@ -1,12 +1,9 @@ -export * from './collection-workspace.context-token.js'; export * from './entity-workspace.context-token.js'; export * from './property-structure-workspace.context-token.js'; 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'; export type * from './property-structure-workspace-context.interface.js'; @@ -14,4 +11,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-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/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 79765fee3f..019da3c801 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 @@ -12,3 +12,7 @@ export * from './workspace.element.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/kinds/default/default-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/default-workspace.context.ts new file mode 100644 index 0000000000..53c308a1af --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/default-workspace.context.ts @@ -0,0 +1,42 @@ +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'; +import { UmbEntityContext, type UmbEntityUnique } from '@umbraco-cms/backoffice/entity'; + +export class UmbDefaultWorkspaceContext + extends UmbContextBase + implements UmbWorkspaceContext +{ + public workspaceAlias!: string; + + #entityContext = new UmbEntityContext(this); + + constructor(host: UmbControllerHost) { + super(host, UMB_WORKSPACE_CONTEXT.toString()); + } + + set manifest(manifest: ManifestWorkspace) { + this.workspaceAlias = manifest.alias; + this.setEntityType(manifest.meta.entityType); + } + + setUnique(unique: UmbEntityUnique): void { + this.#entityContext.setUnique(unique); + } + + getUnique(): UmbEntityUnique { + return this.#entityContext.getUnique(); + } + + setEntityType(entityType: string): void { + this.#entityContext.setEntityType(entityType); + } + + getEntityType(): string { + return this.#entityContext.getEntityType()!; + } +} + +export { UmbDefaultWorkspaceContext as api }; 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..59596972ce --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/kinds/default/default-workspace.element.ts @@ -0,0 +1,29 @@ +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() { + if (this.manifest === undefined) return html`
No Manifest
`; + const headline = this.manifest?.meta.headline; + + return html` `; + } + + static override styles = [UmbTextStyles]; +} + +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/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; + } +} 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/submittable/submittable-workspace-context-base.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/submittable/submittable-workspace-context-base.ts index 3ee9e75874..aa0b8c46d0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/submittable/submittable-workspace-context-base.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/submittable/submittable-workspace-context-base.ts @@ -1,5 +1,5 @@ import { UmbWorkspaceRouteManager } from '../controllers/workspace-route-manager.controller.js'; -import { UMB_WORKSPACE_CONTEXT } from '../contexts/tokens/workspace.context-token.js'; +import { UMB_WORKSPACE_CONTEXT } from '../workspace.context-token.js'; import type { UmbSubmittableWorkspaceContext } from '../contexts/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/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}>`; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts index 59fdf9f187..07d89d152d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts @@ -31,7 +31,6 @@ import { UmbEntityContext } from '@umbraco-cms/backoffice/entity'; import { UMB_INVARIANT_CULTURE, UmbVariantId } from '@umbraco-cms/backoffice/variant'; import { UmbContentTypeStructureManager } from '@umbraco-cms/backoffice/content-type'; import { - type UmbCollectionWorkspaceContext, type UmbPublishableWorkspaceContext, UmbSubmittableWorkspaceContextBase, UmbWorkspaceIsNewRedirectController, @@ -64,7 +63,7 @@ import { } from '@umbraco-cms/backoffice/validation'; import { UmbDocumentBlueprintDetailRepository } from '@umbraco-cms/backoffice/document-blueprint'; import { UMB_NOTIFICATION_CONTEXT } from '@umbraco-cms/backoffice/notification'; -import type { UmbContentWorkspaceContext } from '@umbraco-cms/backoffice/content'; +import type { UmbContentCollectionWorkspaceContext, UmbContentWorkspaceContext } from '@umbraco-cms/backoffice/content'; import type { UmbDocumentTypeDetailModel } from '@umbraco-cms/backoffice/document-type'; import { UmbIsTrashedEntityContext } from '@umbraco-cms/backoffice/recycle-bin'; import { UmbReadOnlyVariantStateManager } from '@umbraco-cms/backoffice/utils'; @@ -75,7 +74,7 @@ export class UmbDocumentWorkspaceContext implements UmbContentWorkspaceContext, UmbPublishableWorkspaceContext, - UmbCollectionWorkspaceContext + UmbContentCollectionWorkspaceContext { public readonly IS_CONTENT_WORKSPACE_CONTEXT = true as const; 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/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, + }, + ], + }, ]; 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, + }, + ], + }, ]; 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: { diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/media-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/media-workspace.context.ts index abb9051de3..f45faaa702 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/media-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/media-workspace.context.ts @@ -6,7 +6,6 @@ import type { UmbMediaDetailModel, UmbMediaVariantModel, UmbMediaVariantOptionMo import { UMB_INVARIANT_CULTURE, UmbVariantId } from '@umbraco-cms/backoffice/variant'; import { UmbContentTypeStructureManager } from '@umbraco-cms/backoffice/content-type'; import { - type UmbCollectionWorkspaceContext, UmbSubmittableWorkspaceContextBase, UmbWorkspaceIsNewRedirectController, UmbWorkspaceSplitViewManager, @@ -25,7 +24,7 @@ import { UmbRequestReloadStructureForEntityEvent, } from '@umbraco-cms/backoffice/entity-action'; import type { UmbMediaTypeDetailModel } from '@umbraco-cms/backoffice/media-type'; -import type { UmbContentWorkspaceContext } from '@umbraco-cms/backoffice/content'; +import type { UmbContentCollectionWorkspaceContext, UmbContentWorkspaceContext } from '@umbraco-cms/backoffice/content'; import { UmbEntityContext } from '@umbraco-cms/backoffice/entity'; import { UmbIsTrashedEntityContext } from '@umbraco-cms/backoffice/recycle-bin'; import { UmbReadOnlyVariantStateManager } from '@umbraco-cms/backoffice/utils'; @@ -35,7 +34,7 @@ export class UmbMediaWorkspaceContext extends UmbSubmittableWorkspaceContextBase implements UmbContentWorkspaceContext, - UmbCollectionWorkspaceContext + UmbContentCollectionWorkspaceContext { public readonly IS_CONTENT_WORKSPACE_CONTEXT = true as const; 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..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,13 +1,34 @@ +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'; 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', + kind: 'collection', + alias: 'Umb.WorkspaceView.MemberGroupRoot.Collection', + name: 'Member Group Root Collection Workspace View', + meta: { + label: 'Collection', + pathname: 'collection', + icon: 'icon-layers', + collectionAlias: UMB_MEMBER_GROUP_COLLECTION_ALIAS, + }, + 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 deleted file mode 100644 index dc61795be1..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,21 +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; - } -} 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..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,13 +1,34 @@ +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'; 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', + kind: 'collection', + alias: 'Umb.WorkspaceView.MemberRoot.Collection', + name: 'Member Root Collection Workspace View', + meta: { + label: 'Collection', + pathname: 'collection', + icon: 'icon-layers', + collectionAlias: UMB_MEMBER_COLLECTION_ALIAS, + }, + 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 deleted file mode 100644 index 7095f17e2d..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member-root/member-root-workspace.element.ts +++ /dev/null @@ -1,31 +0,0 @@ -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` - ; - `; - } -} - -export { UmbMemberRootWorkspaceElement as element }; - -declare global { - interface HTMLElementTagNameMap { - [elementName]: UmbMemberRootWorkspaceElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/src/packages/property-editors/collection/property-editor-ui-collection.element.ts b/src/Umbraco.Web.UI.Client/src/packages/property-editors/collection/property-editor-ui-collection.element.ts index 321cc1908c..e7e3f8e67a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/property-editors/collection/property-editor-ui-collection.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/property-editors/collection/property-editor-ui-collection.element.ts @@ -3,7 +3,7 @@ import { html, customElement, property, state } from '@umbraco-cms/backoffice/ex import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import { UMB_DOCUMENT_COLLECTION_ALIAS } from '@umbraco-cms/backoffice/document'; import { UMB_PROPERTY_CONTEXT } from '@umbraco-cms/backoffice/property'; -import { UMB_COLLECTION_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/workspace'; +import { UMB_CONTENT_COLLECTION_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/content'; import type { UmbPropertyEditorUiElement } from '@umbraco-cms/backoffice/extension-registry'; import type { UmbCollectionBulkActionPermissions, @@ -31,7 +31,7 @@ export class UmbPropertyEditorUICollectionElement extends UmbLitElement implemen constructor() { super(); - this.consumeContext(UMB_COLLECTION_WORKSPACE_CONTEXT, (workspaceContext) => { + this.consumeContext(UMB_CONTENT_COLLECTION_WORKSPACE_CONTEXT, (workspaceContext) => { this._collectionAlias = workspaceContext.getCollectionAlias(); this.consumeContext(UMB_PROPERTY_CONTEXT, (propertyContext) => { 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..eb4a829978 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 @@ -1,3 +1,4 @@ +import { UMB_RELATIONS_ROOT_WORKSPACE_PATH } from '../../../workspace/paths.js'; import { UMB_RELATION_TYPE_WORKSPACE_CONTEXT } from './relation-type-workspace.context-token.js'; import { observeMultiple } from '@umbraco-cms/backoffice/observable-api'; import { css, html, customElement, state } from '@umbraco-cms/backoffice/external/lit'; @@ -36,11 +37,9 @@ export class UmbRelationTypeWorkspaceEditorElement extends UmbLitElement { override render() { return html` - + diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/workspace/manifests.ts new file mode 100644 index 0000000000..54a076ba06 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/workspace/manifests.ts @@ -0,0 +1,32 @@ +import { UMB_RELATION_TYPE_COLLECTION_ALIAS } from '@umbraco-cms/backoffice/relation-type'; + +export const manifests: Array = [ + { + type: 'workspace', + kind: 'default', + alias: 'Umb.Workspace.RelationsRoot', + name: 'Relations Root Workspace', + meta: { + entityType: 'relations-root', + headline: 'Relations', + }, + }, + { + type: 'workspaceView', + kind: 'collection', + alias: 'Umb.Workspace.RelationsRoot.Collection', + name: 'Relations Root Collection Workspace View', + meta: { + label: 'Collection', + pathname: 'collection', + icon: 'icon-layers', + collectionAlias: UMB_RELATION_TYPE_COLLECTION_ALIAS, + }, + conditions: [ + { + alias: 'Umb.Condition.WorkspaceAlias', + match: 'Umb.Workspace.RelationsRoot', + }, + ], + }, +]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/workspace/paths.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/workspace/paths.ts new file mode 100644 index 0000000000..b4002d12b6 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/workspace/paths.ts @@ -0,0 +1,7 @@ +import { UMB_SETTINGS_SECTION_PATHNAME } from '@umbraco-cms/backoffice/settings'; +import { UMB_WORKSPACE_PATH_PATTERN } from '@umbraco-cms/backoffice/workspace'; + +export const UMB_RELATIONS_ROOT_WORKSPACE_PATH = UMB_WORKSPACE_PATH_PATTERN.generateAbsolute({ + sectionName: UMB_SETTINGS_SECTION_PATHNAME, + entityType: 'relations-root', +}); diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user-group/workspace/user-group-root/constants.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user-group/workspace/user-group-root/constants.ts new file mode 100644 index 0000000000..c496a1dda3 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/user/user-group/workspace/user-group-root/constants.ts @@ -0,0 +1 @@ +export const UMB_USER_GROUP_WORKSPACE_ALIAS = 'Umb.Workspace.UserGroupRoot'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user-group/workspace/user-group-root/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user-group/workspace/user-group-root/manifests.ts index 039973736b..3a269c71ff 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/user-group/workspace/user-group-root/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/user-group/workspace/user-group-root/manifests.ts @@ -1,13 +1,34 @@ +import { UMB_USER_GROUP_COLLECTION_ALIAS } from '../../collection/index.js'; import { UMB_USER_GROUP_ROOT_ENTITY_TYPE } from '../../entity.js'; +import { UMB_USER_GROUP_WORKSPACE_ALIAS } from './constants.js'; export const manifests: Array = [ { type: 'workspace', - alias: 'Umb.Workspace.UserGroupRoot', + kind: 'default', + alias: UMB_USER_GROUP_WORKSPACE_ALIAS, name: 'User Group Root Workspace View', - element: () => import('./user-group-root-workspace.element.js'), meta: { entityType: UMB_USER_GROUP_ROOT_ENTITY_TYPE, + headline: '#user_usergroups', }, }, + { + type: 'workspaceView', + kind: 'collection', + alias: 'Umb.WorkspaceView.UserGroupRoot.Collection', + name: 'User Group Root Collection Workspace View', + meta: { + label: 'Collection', + pathname: 'collection', + icon: 'icon-layers', + collectionAlias: UMB_USER_GROUP_COLLECTION_ALIAS, + }, + conditions: [ + { + alias: 'Umb.Condition.WorkspaceAlias', + match: UMB_USER_GROUP_WORKSPACE_ALIAS, + }, + ], + }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user-group/workspace/user-group-root/user-group-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user-group/workspace/user-group-root/user-group-root-workspace.element.ts deleted file mode 100644 index 0900cee472..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/user/user-group/workspace/user-group-root/user-group-root-workspace.element.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { UMB_USER_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-user-group-root-workspace'; -@customElement(elementName) -export class UmbUserGroupRootWorkspaceElement extends UmbLitElement { - override render() { - return html` - ; - `; - } -} - -export { UmbUserGroupRootWorkspaceElement as element }; - -declare global { - interface HTMLElementTagNameMap { - [elementName]: UmbUserGroupRootWorkspaceElement; - } -} 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'; 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..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,13 +1,34 @@ +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'; 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', + kind: 'collection', + alias: 'Umb.WorkspaceView.UserRoot.Collection', + name: 'User Root Collection Workspace View', + meta: { + label: 'Collection', + icon: 'icon-layers', + pathname: 'collection', + collectionAlias: UMB_USER_COLLECTION_ALIAS, + }, + conditions: [ + { + alias: 'Umb.Condition.WorkspaceAlias', + match: UMB_USER_ROOT_WORKSPACE_ALIAS, + }, + ], + }, ]; 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; - } -} 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; - } -}