Skip to content

Commit e6a5750

Browse files
authored
Merge pull request #2309 from umbraco/v15/feature/collection-kind-workspace-view
Feature: Default Workspace Kind + Collection Workspace View Kind
2 parents f8c1b9a + 308ab3e commit e6a5750

File tree

78 files changed

+489
-358
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+489
-358
lines changed
Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1+
import type { UmbExtensionManifestKind } from '../extension-registry/registry.js';
12
import { manifest as collectionAliasCondition } from './collection-alias.manifest.js';
23
import { manifest as collectionBulkActionPermissionCondition } from './collection-bulk-action-permission.manifest.js';
4+
import { manifests as workspaceViewManifests } from './workspace-view/manifests.js';
35

4-
export const manifests: Array<UmbExtensionManifest> = [
6+
export const manifests: Array<UmbExtensionManifest | UmbExtensionManifestKind> = [
7+
...workspaceViewManifests,
58
collectionAliasCondition,
69
collectionBulkActionPermissionCondition,
710
];
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import type { ManifestWorkspaceViewCollectionKind } from './types.js';
2+
import { html, customElement, property } from '@umbraco-cms/backoffice/external/lit';
3+
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
4+
5+
const elementName = 'umb-collection-workspace-view';
6+
@customElement(elementName)
7+
export class UmbCollectionWorkspaceViewElement extends UmbLitElement {
8+
@property({ type: Object, attribute: false })
9+
manifest?: ManifestWorkspaceViewCollectionKind;
10+
11+
override render() {
12+
if (!this.manifest) return html` <div>No Manifest</div>`;
13+
if (!this.manifest.meta.collectionAlias) return html` <div>No Collection Alias in Manifest</div>`;
14+
return html`<umb-collection alias=${this.manifest.meta.collectionAlias}></umb-collection>`;
15+
}
16+
}
17+
18+
export { UmbCollectionWorkspaceViewElement as element };
19+
20+
declare global {
21+
interface HTMLElementTagNameMap {
22+
[elementName]: UmbCollectionWorkspaceViewElement;
23+
}
24+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './collection-workspace-view.element.js';

src/packages/core/workspace/components/workspace-collection/manifests.ts renamed to src/packages/core/collection/workspace-view/manifests.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
22

3-
export const manifests: Array<UmbExtensionManifestKind> = [
3+
export const manifests: Array<UmbExtensionManifest | UmbExtensionManifestKind> = [
44
{
55
type: 'kind',
66
alias: 'Umb.Kind.WorkspaceView.Collection',
@@ -9,12 +9,11 @@ export const manifests: Array<UmbExtensionManifestKind> = [
99
manifest: {
1010
type: 'workspaceView',
1111
kind: 'collection',
12-
element: () => import('./workspace-view-collection.element.js'),
13-
weight: 300,
12+
element: () => import('./collection-workspace-view.element.js'),
1413
meta: {
1514
label: 'Collection',
1615
pathname: 'collection',
17-
icon: 'icon-grid',
16+
icon: 'icon-layers',
1817
},
1918
},
2019
},
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import type { ManifestWorkspaceView, MetaWorkspaceView } from '@umbraco-cms/backoffice/workspace';
2+
3+
export interface ManifestWorkspaceViewCollectionKind extends ManifestWorkspaceView {
4+
type: 'workspaceView';
5+
kind: 'collection';
6+
meta: MetaWorkspaceViewCollectionKind;
7+
}
8+
9+
export interface MetaWorkspaceViewCollectionKind extends MetaWorkspaceView {
10+
collectionAlias: string;
11+
}
12+
13+
declare global {
14+
interface UmbExtensionManifestMap {
15+
umbManifestWorkspaceViewCollectionKind: ManifestWorkspaceViewCollectionKind;
16+
}
17+
}

src/packages/core/components/entity-actions-bundle/entity-actions-bundle.element.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ export class UmbEntityActionsBundleElement extends UmbLitElement {
4545
protected override updated(_changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void {
4646
if (_changedProperties.has('entityType') && _changedProperties.has('unique')) {
4747
this.#entityContext.setEntityType(this.entityType);
48-
this.#entityContext.setUnique(this.unique);
48+
this.#entityContext.setUnique(this.unique ?? null);
4949
this.#observeEntityActions();
5050
}
5151
}

src/packages/core/workspace/contexts/tokens/collection-workspace-context.interface.ts renamed to src/packages/core/content/collection/content-collection-workspace-context.interface.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import type { UmbEntityWorkspaceContext } from './entity-workspace-context.interface.js';
21
import type { Observable } from '@umbraco-cms/backoffice/external/rxjs';
32
import type { UmbContentTypeModel, UmbContentTypeStructureManager } from '@umbraco-cms/backoffice/content-type';
3+
import type { UmbEntityWorkspaceContext } from '@umbraco-cms/backoffice/workspace';
44

5-
export interface UmbCollectionWorkspaceContext<T extends UmbContentTypeModel> extends UmbEntityWorkspaceContext {
5+
export interface UmbContentCollectionWorkspaceContext<T extends UmbContentTypeModel> extends UmbEntityWorkspaceContext {
66
contentTypeHasCollection: Observable<boolean>;
77
getCollectionAlias(): string;
88
structure: UmbContentTypeStructureManager<T>;
Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1-
import type { UmbCollectionBulkActionPermissions, UmbCollectionConfiguration } from '../../../collection/types.js';
1+
import type { UmbCollectionBulkActionPermissions, UmbCollectionConfiguration } from '../../collection/types.js';
2+
import { UMB_CONTENT_COLLECTION_WORKSPACE_CONTEXT } from './content-collection-workspace.context-token.js';
23
import { customElement, html, nothing, state } from '@umbraco-cms/backoffice/external/lit';
34
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
45
import { UmbDataTypeDetailRepository } from '@umbraco-cms/backoffice/data-type';
56
import { UmbPropertyEditorConfigCollection } from '@umbraco-cms/backoffice/property-editor';
6-
import { UMB_COLLECTION_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/workspace';
77
import type { UmbDataTypeDetailModel } from '@umbraco-cms/backoffice/data-type';
88
import type { UmbWorkspaceViewElement } from '@umbraco-cms/backoffice/workspace';
99

10-
@customElement('umb-workspace-view-collection')
11-
export class UmbWorkspaceViewCollectionElement extends UmbLitElement implements UmbWorkspaceViewElement {
10+
const elementName = 'umb-content-collection-workspace-view';
11+
@customElement('umb-content-collection-workspace-view')
12+
export class UmbContentCollectionWorkspaceViewElement extends UmbLitElement implements UmbWorkspaceViewElement {
1213
@state()
1314
private _loading = true;
1415

@@ -29,7 +30,7 @@ export class UmbWorkspaceViewCollectionElement extends UmbLitElement implements
2930
}
3031

3132
async #observeConfig() {
32-
this.consumeContext(UMB_COLLECTION_WORKSPACE_CONTEXT, (workspaceContext) => {
33+
this.consumeContext(UMB_CONTENT_COLLECTION_WORKSPACE_CONTEXT, (workspaceContext) => {
3334
this._collectionAlias = workspaceContext.getCollectionAlias();
3435
this._documentUnique = workspaceContext.getUnique() ?? '';
3536

@@ -78,10 +79,10 @@ export class UmbWorkspaceViewCollectionElement extends UmbLitElement implements
7879
}
7980
}
8081

81-
export default UmbWorkspaceViewCollectionElement;
82+
export { UmbContentCollectionWorkspaceViewElement as element };
8283

8384
declare global {
8485
interface HTMLElementTagNameMap {
85-
'umb-workspace-view-collection': UmbWorkspaceViewCollectionElement;
86+
[elementName]: UmbContentCollectionWorkspaceViewElement;
8687
}
8788
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import type { UmbContentCollectionWorkspaceContext } from './content-collection-workspace-context.interface.js';
2+
import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
3+
import type { UmbContentTypeModel } from '@umbraco-cms/backoffice/content-type';
4+
import type { UmbWorkspaceContext } from '@umbraco-cms/backoffice/workspace';
5+
6+
export const UMB_CONTENT_COLLECTION_WORKSPACE_CONTEXT = new UmbContextToken<
7+
UmbWorkspaceContext,
8+
UmbContentCollectionWorkspaceContext<UmbContentTypeModel>
9+
>(
10+
'UmbWorkspaceContext',
11+
undefined,
12+
(context): context is UmbContentCollectionWorkspaceContext<UmbContentTypeModel> =>
13+
(context as UmbContentCollectionWorkspaceContext<UmbContentTypeModel>).contentTypeHasCollection !== undefined,
14+
);
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export type * from './content-collection-workspace-context.interface.js';
2+
export * from './content-collection-workspace.context-token.js';

0 commit comments

Comments
 (0)