From c99b4a96c49190df990982820373cb7ccdb5d329 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Wed, 13 Dec 2023 12:33:31 +1300 Subject: [PATCH 01/30] Fix saving issue caused by using isNew instead of getIsNew --- .../packages/media/media/workspace/media-workspace.context.ts | 2 +- .../member-types/workspace/member-type-workspace.context.ts | 2 +- .../relation-types/workspace/relation-type-workspace.context.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) 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 1b0575f358..5e16bf4685 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 @@ -69,7 +69,7 @@ export class UmbMediaWorkspaceContext async save() { if (!this.#data.value) return; - if (this.isNew) { + if (this.getIsNew()) { await this.repository.create(this.#data.value); } else { await this.repository.save(this.#data.value.id, this.#data.value); diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-types/workspace/member-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-types/workspace/member-type-workspace.context.ts index ee32cbdaf9..e40e02d3a0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-types/workspace/member-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-types/workspace/member-type-workspace.context.ts @@ -60,7 +60,7 @@ export class UmbMemberTypeWorkspaceContext if (!this.#data.value) return; if (!this.#data.value.id) return; - if (this.isNew) { + if (this.getIsNew()) { await this.repository.create(this.#data.value); } else { await this.repository.save(this.#data.value.id, this.#data.value); diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts index b28d8568d8..f11f17debf 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts @@ -57,7 +57,7 @@ export class UmbRelationTypeWorkspaceContext if (!this.#data.value) return; if (!this.#data.value.id) return; - if (this.isNew) { + if (this.getIsNew()) { await this.repository.create(this.#data.value); } else { await this.repository.save(this.#data.value.id, this.#data.value); From e93ea1fb44f739acc6dd91f870a9e48222db381f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Wed, 13 Dec 2023 12:46:24 +1300 Subject: [PATCH 02/30] add create action --- .../entity-actions/create.action.ts | 15 ++++++++ .../entity-actions/manifests.ts | 35 +++++++++++++++++++ .../packages/settings/relation-types/index.ts | 1 + .../settings/relation-types/manifests.ts | 9 ++++- 4 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/create.action.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/manifests.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/create.action.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/create.action.ts new file mode 100644 index 0000000000..64bbdf7a1f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/create.action.ts @@ -0,0 +1,15 @@ +import { UmbRelationTypeRepository } from '../repository/relation-type.repository.js'; +import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; +import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api'; + +export class UmbCreateRelationTypeEntityAction extends UmbEntityActionBase { + // TODO: Could EntityActions take the manifest instead, for more flexibility? + constructor(host: UmbControllerHostElement, repositoryAlias: string, unique: string) { + super(host, repositoryAlias, unique); + } + + async execute() { + // TODO: Generate the href or retrieve it from something? + history.pushState(null, '', `section/settings/workspace/relation-type/create`); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/manifests.ts new file mode 100644 index 0000000000..4dd71b899c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/manifests.ts @@ -0,0 +1,35 @@ +import { UMB_RELATION_TYPE_REPOSITORY_ALIAS } from '../repository/manifests.js'; +import { UMB_RELATION_TYPE_ENTITY_TYPE, UMB_RELATION_TYPE_ROOT_ENTITY_TYPE } from '../index.js'; +import { UmbCreateRelationTypeEntityAction } from './create.action.js'; +import { UmbDeleteEntityAction } from '@umbraco-cms/backoffice/entity-action'; +import { ManifestEntityAction } from '@umbraco-cms/backoffice/extension-registry'; + +const entityActions: Array = [ + { + type: 'entityAction', + alias: 'Umb.EntityAction.RelationType.Delete', + name: 'Delete RelationType Entity Action', + api: UmbDeleteEntityAction, + meta: { + repositoryAlias: UMB_RELATION_TYPE_REPOSITORY_ALIAS, + icon: 'icon-trash', + label: 'Delete', + entityTypes: [UMB_RELATION_TYPE_ENTITY_TYPE], + }, + }, + { + type: 'entityAction', + alias: 'Umb.EntityAction.RelationType.Create', + name: 'Create RelationType Entity Action', + weight: 900, + api: UmbCreateRelationTypeEntityAction, + meta: { + icon: 'icon-add', + label: 'Create', + repositoryAlias: UMB_RELATION_TYPE_REPOSITORY_ALIAS, + entityTypes: [UMB_RELATION_TYPE_ROOT_ENTITY_TYPE], + }, + }, +]; + +export const manifests = [...entityActions]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/index.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/index.ts index 3d76f338dd..7bbcc83722 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/index.ts @@ -1 +1,2 @@ export * from './repository/index.js'; +export * from './entities.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/manifests.ts index ebc952eb39..12f1863639 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/manifests.ts @@ -2,5 +2,12 @@ import { manifests as repositoryManifests } from './repository/manifests.js'; import { manifests as menuItemManifests } from './menu-item/manifests.js'; import { manifests as treeManifests } from './tree/manifests.js'; import { manifests as workspaceManifests } from './workspace/manifests.js'; +import { manifests as entityActionManifests } from './entity-actions/manifests.js'; -export const manifests = [...repositoryManifests, ...menuItemManifests, ...treeManifests, ...workspaceManifests]; +export const manifests = [ + ...repositoryManifests, + ...menuItemManifests, + ...treeManifests, + ...workspaceManifests, + ...entityActionManifests, +]; From 543c37c48aae90618783e95f153d6d27a96f1059 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Wed, 13 Dec 2023 13:02:07 +1300 Subject: [PATCH 03/30] fix create action --- .../settings/relation-types/entity-actions/create.action.ts | 2 +- .../settings/relation-types/entity-actions/manifests.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/create.action.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/create.action.ts index 64bbdf7a1f..8a03974269 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/create.action.ts @@ -10,6 +10,6 @@ export class UmbCreateRelationTypeEntityAction extends UmbEntityActionBase = [ icon: 'icon-add', label: 'Create', repositoryAlias: UMB_RELATION_TYPE_REPOSITORY_ALIAS, - entityTypes: [UMB_RELATION_TYPE_ROOT_ENTITY_TYPE], + entityTypes: [UMB_RELATION_TYPE_ROOT_ENTITY_TYPE, UMB_RELATION_TYPE_ENTITY_TYPE], }, }, ]; From 2419a8c96cbd297ea8d17d81ecaa18904f3c9f71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Wed, 13 Dec 2023 13:02:20 +1300 Subject: [PATCH 04/30] add id to scaffold --- .../repository/sources/relation-type.server.data.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts index d9af0eff76..97d652fe33 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts @@ -7,6 +7,7 @@ import { } from '@umbraco-cms/backoffice/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; +import { UmbId } from '@umbraco-cms/backoffice/id'; /** * A data source for the Relation Type that fetches data from the server @@ -55,7 +56,9 @@ export class UmbRelationTypeServerDataSource * @memberof UmbRelationTypeServerDataSource */ async createScaffold(parentId: string | null) { - const data: RelationTypeResponseModel = {}; + const data: RelationTypeResponseModel = { + id: UmbId.new(), + }; return { data }; } From 1d66d06199af8374c1661fa686a7c21ec193d5fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Wed, 13 Dec 2023 13:02:44 +1300 Subject: [PATCH 05/30] use isNew in workspace view --- .../relation-type-workspace-view-relation-type.element.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts index 323756f826..2dc63e727a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts @@ -75,13 +75,15 @@ export class UmbRelationTypeWorkspaceViewRelationTypeElement extends UmbLitEleme } #renderParentProperty() { - if (this._relationType?.id) return html`
${this._relationType.parentObjectTypeName}
`; + if (!this.#workspaceContext?.getIsNew() && this._relationType) + return html`
${this._relationType.parentObjectTypeName}
`; return html``; } #renderChildProperty() { - if (this._relationType?.id) return html`
${this._relationType.parentObjectTypeName}
`; + if (!this.#workspaceContext?.getIsNew() && this._relationType) + return html`
${this._relationType.parentObjectTypeName}
`; return html``; } From 7778669f08585f58e343b65596123ad689475532 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Wed, 13 Dec 2023 15:55:08 +1300 Subject: [PATCH 06/30] more scaffolding --- .../repository/sources/relation-type.server.data.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts index 97d652fe33..ced4b404f6 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts @@ -58,6 +58,10 @@ export class UmbRelationTypeServerDataSource async createScaffold(parentId: string | null) { const data: RelationTypeResponseModel = { id: UmbId.new(), + name: '', + alias: '', + isBidirectional: false, + isDependency: false, }; return { data }; From 0ea6d2a49688bec5c2ea13c41b34e6f79ba92748 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Wed, 13 Dec 2023 16:29:40 +1300 Subject: [PATCH 07/30] don't refresh page with new id unless the save worked --- .../workspace/relation-type-workspace.context.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts index f11f17debf..05f75db876 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts @@ -57,12 +57,16 @@ export class UmbRelationTypeWorkspaceContext if (!this.#data.value) return; if (!this.#data.value.id) return; + let response = undefined; + if (this.getIsNew()) { - await this.repository.create(this.#data.value); + response = await this.repository.create(this.#data.value); } else { - await this.repository.save(this.#data.value.id, this.#data.value); + response = await this.repository.save(this.#data.value.id, this.#data.value); } + if (response.error) return; + // If it went well, then its not new anymore?. this.setIsNew(false); } From 587410d06ae60b9286e301f90d7e14a33447cb8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Wed, 13 Dec 2023 16:30:02 +1300 Subject: [PATCH 08/30] add selects to set the object types --- ...pe-workspace-view-relation-type.element.ts | 43 ++++++++++++++++++- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts index 2dc63e727a..624f522a20 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts @@ -3,6 +3,7 @@ import { UUIBooleanInputEvent, UUIRadioGroupElement, UUIRadioGroupEvent, + UUISelectEvent, UUIToggleElement, } from '@umbraco-cms/backoffice/external/uui'; import { css, html, customElement, state, ifDefined } from '@umbraco-cms/backoffice/external/lit'; @@ -74,18 +75,56 @@ export class UmbRelationTypeWorkspaceViewRelationTypeElement extends UmbLitEleme `; } + #onParentObjectTypeChange(event: UUISelectEvent) { + const value = event.target.value as string; + this.#workspaceContext?.update('parentObjectType', value); + } + #onChildObjectTypeChange(event: UUISelectEvent) { + const value = event.target.value as string; + this.#workspaceContext?.update('childObjectType', value); + } + #renderParentProperty() { if (!this.#workspaceContext?.getIsNew() && this._relationType) return html`
${this._relationType.parentObjectTypeName}
`; - return html``; + //TODO Get the actual list of object types + return html` + >`; } #renderChildProperty() { if (!this.#workspaceContext?.getIsNew() && this._relationType) return html`
${this._relationType.parentObjectTypeName}
`; - return html``; + //TODO Get the actual list of object types + return html` + `; } static styles = [ From 790be6e68b279b660c70ccc456f51d3bb62f59d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Wed, 13 Dec 2023 16:30:37 +1300 Subject: [PATCH 09/30] only show create at the root --- .../settings/relation-types/entity-actions/manifests.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/manifests.ts index b21d989f7c..4dd71b899c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/manifests.ts @@ -27,7 +27,7 @@ const entityActions: Array = [ icon: 'icon-add', label: 'Create', repositoryAlias: UMB_RELATION_TYPE_REPOSITORY_ALIAS, - entityTypes: [UMB_RELATION_TYPE_ROOT_ENTITY_TYPE, UMB_RELATION_TYPE_ENTITY_TYPE], + entityTypes: [UMB_RELATION_TYPE_ROOT_ENTITY_TYPE], }, }, ]; From 2b759e904b2c8fcbbb12a462613dc224ca7a7cef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Mon, 18 Dec 2023 19:34:37 +1300 Subject: [PATCH 10/30] add object type input and repo --- .../src/packages/core/index.ts | 1 + .../src/packages/core/object-type/index.ts | 2 + .../object-type/input-object-type.element.ts | 57 +++++++++++++++++++ .../object-type/object-type.repository.ts | 25 ++++++++ 4 files changed, 85 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/object-type/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/object-type/input-object-type.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/object-type/object-type.repository.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/index.ts index 21661c1e53..e0e9907a0f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/index.ts @@ -42,6 +42,7 @@ export * from './variant/index.js'; export * from './workspace/index.js'; export * from './culture/index.js'; export * from './temporary-file/index.js'; +export * from './object-type/index.js'; const manifests: Array = [ ...conditionManifests, diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/object-type/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/object-type/index.ts new file mode 100644 index 0000000000..8e0d365e79 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/object-type/index.ts @@ -0,0 +1,2 @@ +export * from './object-type.repository.js'; +export * from './input-object-type.element.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/object-type/input-object-type.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/object-type/input-object-type.element.ts new file mode 100644 index 0000000000..cdb0995911 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/object-type/input-object-type.element.ts @@ -0,0 +1,57 @@ +import { html, customElement, property, query, state, nothing } from '@umbraco-cms/backoffice/external/lit'; +import { FormControlMixin, UUISelectElement, UUISelectEvent } from '@umbraco-cms/backoffice/external/uui'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { UmbObjectTypeRepository } from './object-type.repository'; + +@customElement('umb-input-object-type') +export class UmbInputObjectTypeElement extends FormControlMixin(UmbLitElement) { + @query('uui-select') + private select!: UUISelectElement; + + @property() + public set value(value: UUISelectElement['value']) { + this.select.value = value; + } + public get value(): UUISelectElement['value'] { + return this.select.value; + } + + @state() + private _options: UUISelectElement['options'] = []; + + #repository: UmbObjectTypeRepository; + + constructor() { + super(); + + this.#repository = new UmbObjectTypeRepository(this); + + this.#repository.read().then(({ data, error }) => { + if (!data) return; + + this._options = data.items.map((item) => ({ value: item.id, name: item.name ?? '' })); + }); + } + + protected getFormElement() { + return undefined; + } + + #onChange() { + this.dispatchEvent(new CustomEvent('change')); + } + + render() { + return html` `; + } + + static styles = []; +} + +export default UmbInputObjectTypeElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-input-object-type': UmbInputObjectTypeElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/object-type/object-type.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/core/object-type/object-type.repository.ts new file mode 100644 index 0000000000..35a175779e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/object-type/object-type.repository.ts @@ -0,0 +1,25 @@ +import { ObjectTypesResource } from '@umbraco-cms/backoffice/backend-api'; +import { UmbBaseController } from '@umbraco-cms/backoffice/class-api'; +import { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { UmbApi } from '@umbraco-cms/backoffice/extension-api'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; + +export class UmbObjectTypeRepository extends UmbBaseController implements UmbApi { + #host: UmbControllerHost; + + constructor(host: UmbControllerHost) { + super(host); + + this.#host = host; + } + + async #read() { + return tryExecuteAndNotify(this.#host, ObjectTypesResource.getObjectTypes({})); + } + + async read() { + const { data, error } = await this.#read(); + + return { data, error }; + } +} From 09d18bcc8214090eff703618cd47e9222e977bb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Mon, 18 Dec 2023 19:34:47 +1300 Subject: [PATCH 11/30] use object type input --- ...pe-workspace-view-relation-type.element.ts | 39 ++++--------------- 1 file changed, 7 insertions(+), 32 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts index 046ed210d1..070f8a4157 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts @@ -88,43 +88,18 @@ export class UmbRelationTypeWorkspaceViewRelationTypeElement extends UmbLitEleme if (!this.#workspaceContext?.getIsNew() && this._relationType) return html`
${this._relationType.parentObjectTypeName}
`; - //TODO Get the actual list of object types - return html` - >`; + return html` + + `; } #renderChildProperty() { if (!this.#workspaceContext?.getIsNew() && this._relationType) - return html`
${this._relationType.parentObjectTypeName}
`; + return html`
${this._relationType.childObjectTypeName}
`; - //TODO Get the actual list of object types - return html` - `; + return html` + + `; } static styles = [ From dc77ca2f50f226eabd9f39389c3103ac3ddfc196 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Tue, 19 Dec 2023 19:43:10 +1300 Subject: [PATCH 12/30] fix lint --- .../packages/core/object-type/input-object-type.element.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/object-type/input-object-type.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/object-type/input-object-type.element.ts index cdb0995911..3d24c0a152 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/object-type/input-object-type.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/object-type/input-object-type.element.ts @@ -1,7 +1,7 @@ -import { html, customElement, property, query, state, nothing } from '@umbraco-cms/backoffice/external/lit'; -import { FormControlMixin, UUISelectElement, UUISelectEvent } from '@umbraco-cms/backoffice/external/uui'; +import { UmbObjectTypeRepository } from './object-type.repository.js'; +import { html, customElement, property, query, state } from '@umbraco-cms/backoffice/external/lit'; +import { FormControlMixin, UUISelectElement } from '@umbraco-cms/backoffice/external/uui'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { UmbObjectTypeRepository } from './object-type.repository'; @customElement('umb-input-object-type') export class UmbInputObjectTypeElement extends FormControlMixin(UmbLitElement) { From 298c62eb7b4203fded31ad5c9e3c45950f2ebd85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Tue, 2 Jan 2024 17:04:25 +1300 Subject: [PATCH 13/30] wip --- .../repository/relation-type.repository.ts | 15 +++++++ .../repository/relation.repository.ts | 39 ++++++++++++++++++ .../sources/relation-type.server.data.ts | 20 +++++++++ .../sources/relation.server.data.ts | 41 +++++++++++++++++++ .../relation-type-workspace.context.ts | 4 ++ 5 files changed, 119 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation.repository.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation.server.data.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.repository.ts index fae1dc1e66..3ebe61d241 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.repository.ts @@ -59,6 +59,21 @@ export class UmbRelationTypeRepository return this.#detailDataSource.createScaffold(parentId); } + async requestRelationsById(id: string) { + await this.#init; + + // TODO: should we show a notification if the id is missing? + // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? + if (!id) { + throw new Error('Id is missing'); + } + + const { data, error } = await this.#detailDataSource.readRelations(id); + debugger; + + return { data, error }; + } + async requestById(id: string) { await this.#init; diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation.repository.ts new file mode 100644 index 0000000000..6ad4eadf1d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation.repository.ts @@ -0,0 +1,39 @@ +import { UmbRelationServerDataSource } from './sources/relation.server.data.js'; +import { type UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { UmbBaseController } from '@umbraco-cms/backoffice/class-api'; +import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; +import { UmbApi } from '@umbraco-cms/backoffice/extension-api'; + +export class UmbRelationRepository extends UmbBaseController implements UmbApi { + #init!: Promise; + + #detailDataSource: UmbRelationServerDataSource; + #notificationContext?: UmbNotificationContext; + + constructor(host: UmbControllerHost) { + super(host); + + // TODO: figure out how spin up get the correct data source + this.#detailDataSource = new UmbRelationServerDataSource(this._host); + + this.#init = Promise.all([ + this.consumeContext(UMB_NOTIFICATION_CONTEXT_TOKEN, (instance) => { + this.#notificationContext = instance; + }).asPromise(), + ]); + } + + async requestById(id: string) { + await this.#init; + + // TODO: should we show a notification if the id is missing? + // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? + if (!id) { + throw new Error('Id is missing'); + } + + const { data, error } = await this.#detailDataSource.read(id); + + return { data, error }; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts index ced4b404f6..f12cddfb2f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts @@ -4,6 +4,7 @@ import { RelationTypeResponseModel, CreateRelationTypeRequestModel, UpdateRelationTypeRequestModel, + RelationResource, } from '@umbraco-cms/backoffice/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -49,6 +50,25 @@ export class UmbRelationTypeServerDataSource ); } + /** + * Fetches a Relation Type with the given id from the server + * @param {string} id + * @return {*} + * @memberof UmbRelationTypeServerDataSource + */ + async readRelations(id: string) { + if (!id) { + throw new Error('Id is missing'); + } + + return tryExecuteAndNotify( + this.#host, + RelationResource.getRelationTypeById({ + id, + }), + ); + } + /** * Creates a new Relation Type scaffold * @param {(string | null)} parentId diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation.server.data.ts new file mode 100644 index 0000000000..c9490ee2ca --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation.server.data.ts @@ -0,0 +1,41 @@ +import { RelationResource } from '@umbraco-cms/backoffice/backend-api'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; + +/** + * A data source for the Relation that fetches data from the server + * @export + * @class UmbRelationServerDataSource + * @implements {RepositoryDetailDataSource} + */ +export class UmbRelationServerDataSource { + #host: UmbControllerHost; + + /** + * Creates an instance of UmbRelationServerDataSource. + * @param {UmbControllerHost} host + * @memberof UmbRelationServerDataSource + */ + constructor(host: UmbControllerHost) { + this.#host = host; + } + + /** + * Fetches relations by the given id from the server + * @param {string} id + * @return {*} + * @memberof UmbRelationServerDataSource + */ + async read(id: string) { + if (!id) { + throw new Error('Id is missing'); + } + + return tryExecuteAndNotify( + this.#host, + RelationResource.getRelationTypeById({ + id, + }), + ); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts index 07c6993695..299c36a583 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts @@ -24,6 +24,10 @@ export class UmbRelationTypeWorkspaceContext async load(id: string) { const { data } = await this.repository.requestById(id); + const { data: relations } = await this.repository.requestRelationsById(id); + + debugger; + if (data) { this.setIsNew(false); this.#data.update(data); From cda8ede2c6ea70cf2550870457c03a6533f8348d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Wed, 3 Jan 2024 19:10:06 +1300 Subject: [PATCH 14/30] cleanup --- .../repository/relation-type.repository.ts | 1 - .../workspace/relation-type-workspace.context.ts | 9 +++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.repository.ts index 3ebe61d241..2b9af764ed 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.repository.ts @@ -69,7 +69,6 @@ export class UmbRelationTypeRepository } const { data, error } = await this.#detailDataSource.readRelations(id); - debugger; return { data, error }; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts index 299c36a583..82ef1403d0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts @@ -24,10 +24,6 @@ export class UmbRelationTypeWorkspaceContext async load(id: string) { const { data } = await this.repository.requestById(id); - const { data: relations } = await this.repository.requestRelationsById(id); - - debugger; - if (data) { this.setIsNew(false); this.#data.update(data); @@ -41,6 +37,11 @@ export class UmbRelationTypeWorkspaceContext this.#data.next(data); } + async getRelations() { + //TODO: How do we test this? + return await this.repository.requestRelationsById(this.getEntityId()); + } + getData() { return this.#data.getValue(); } From 72706c62ae3f646a2bfa2396f3d4705ee8bad6af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Wed, 3 Jan 2024 19:13:50 +1300 Subject: [PATCH 15/30] fix build --- .../repository/sources/relation-type.server.data.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts index f12cddfb2f..2e91fb1006 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts @@ -82,6 +82,8 @@ export class UmbRelationTypeServerDataSource alias: '', isBidirectional: false, isDependency: false, + path: '', + isSystemRelationType: false, }; return { data }; From bc09e08e5cb5787ce3ee0bd249576ce5383cbcf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Thu, 4 Jan 2024 16:49:57 +1300 Subject: [PATCH 16/30] update import map --- src/Umbraco.Web.UI.Client/package.json | 3 ++- src/Umbraco.Web.UI.Client/tsconfig.json | 3 ++- src/Umbraco.Web.UI.Client/web-test-runner.config.mjs | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index f3df7fa2e0..ad577347e0 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -62,7 +62,8 @@ "./data-type": "./dist-cms/packages/core/data-type/index.js", "./language": "./dist-cms/packages/settings/languages/index.js", "./logviewer": "./dist-cms/packages/settings/logviewer/index.js", - "./relation-type": "./dist-cms/packages/settings/relation-types/index.js", + "./relation-type": "./dist-cms/packages/relations/relation-types/index.js", + "./relation": "./dist-cms/packages/relations/relations/index.js", "./tags": "./dist-cms/packages/tags/index.js", "./static-file": "./dist-cms/packages/static-file/index.js", "./partial-view": "./dist-cms/packages/templating/partial-views/index.js", diff --git a/src/Umbraco.Web.UI.Client/tsconfig.json b/src/Umbraco.Web.UI.Client/tsconfig.json index 3747bafb49..723fc5b01c 100644 --- a/src/Umbraco.Web.UI.Client/tsconfig.json +++ b/src/Umbraco.Web.UI.Client/tsconfig.json @@ -87,7 +87,8 @@ "@umbraco-cms/backoffice/data-type": ["./src/packages/core/data-type/index.ts"], "@umbraco-cms/backoffice/language": ["./src/packages/settings/languages/index.ts"], "@umbraco-cms/backoffice/logviewer": ["src/packages/log-viewer/index.ts"], - "@umbraco-cms/backoffice/relation-type": ["./src/packages/settings/relation-types/index.ts"], + "@umbraco-cms/backoffice/relation-types": ["src/packages/relations/relation-types/index.ts"], + "@umbraco-cms/backoffice/relations": ["src/packages/relations/relations/index.ts"], "@umbraco-cms/backoffice/tags": ["./src/packages/tags/index.ts"], "@umbraco-cms/backoffice/static-file": ["./src/packages/static-file/index.ts"], diff --git a/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs b/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs index 91b9dc9e89..17cb0ff4e1 100644 --- a/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs +++ b/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs @@ -106,7 +106,8 @@ export default { '@umbraco-cms/backoffice/data-type': './src/packages/core/data-type/index.ts', '@umbraco-cms/backoffice/language': './src/packages/settings/languages/index.ts', '@umbraco-cms/backoffice/logviewer': './src/packages/settings/logviewer/index.ts', - '@umbraco-cms/backoffice/relation-type': './src/packages/settings/relation-types/index.ts', + '@umbraco-cms/backoffice/relation-type': './src/packages/relations/relation-types/index.ts', + '@umbraco-cms/backoffice/relation': './src/packages/relations/relations/index.ts', '@umbraco-cms/backoffice/tags': './src/packages/tags/index.ts', '@umbraco-cms/backoffice/static-file': './src/packages/static-file/index.ts', '@umbraco-cms/backoffice/partial-view': './src/packages/templating/partial-views/index.ts', From 1047a67e2631f9c8ef6167ff73ee39fc393ce256 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Thu, 4 Jan 2024 17:23:56 +1300 Subject: [PATCH 17/30] add core package --- .../src/apps/backoffice/backoffice.element.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.element.ts b/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.element.ts index 5044f6ccbd..17d532a707 100644 --- a/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.element.ts +++ b/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.element.ts @@ -15,6 +15,7 @@ const CORE_PACKAGES = [ import('../../packages/core/umbraco-package.js'), import('../../packages/settings/umbraco-package.js'), import('../../packages/documents/umbraco-package.js'), + import('../../packages/relations/umbraco-package.js'), import('../../packages/media/umbraco-package.js'), import('../../packages/members/umbraco-package.js'), import('../../packages/dictionary/umbraco-package.js'), From 0760e6d743faf9435a5cb5b668f0ba65bca4941e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Thu, 4 Jan 2024 17:24:19 +1300 Subject: [PATCH 18/30] remove relations from settings manifest --- src/Umbraco.Web.UI.Client/src/packages/settings/manifests.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/manifests.ts index 3e1e34d012..0d518e2776 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/manifests.ts @@ -1,7 +1,6 @@ import { manifests as dashboardManifests } from './dashboards/manifests.js'; import { manifests as extensionManifests } from './extensions/manifests.js'; import { manifests as languageManifests } from './languages/manifests.js'; -import { manifests as relationTypeManifests } from './relation-types/manifests.js'; import { manifests as settingsMenuManifests } from './menu.manifests.js'; import { manifests as settingsSectionManifests } from './section.manifests.js'; @@ -9,7 +8,6 @@ export const manifests = [ ...dashboardManifests, ...extensionManifests, ...languageManifests, - ...relationTypeManifests, ...settingsMenuManifests, ...settingsSectionManifests, ]; From 0598272b12deed8d8d9e09e0ff6dc53dc418a27b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Thu, 4 Jan 2024 17:24:41 +1300 Subject: [PATCH 19/30] make relations package --- .../src/packages/relations/index.ts | 4 ++++ .../src/packages/relations/manifests.ts | 4 ++++ .../relation-types/entities.ts | 0 .../relation-types/entity-actions/create.action.ts | 0 .../relation-types/entity-actions/manifests.ts | 0 .../{settings => relations}/relation-types/index.ts | 0 .../relation-types/manifests.ts | 0 .../relation-types/menu-item/manifests.ts | 0 .../relation-types/repository/index.ts | 0 .../relation-types/repository/manifests.ts | 2 +- .../repository/relation-type.repository.ts | 0 .../repository/relation-type.store.ts | 0 .../repository/sources/relation-type.server.data.ts | 0 .../relation-types/tree/index.ts | 0 .../relation-types/tree/manifests.ts | 0 .../tree/relation-type-tree.repository.ts | 0 .../tree/relation-type-tree.server.data-source.ts | 0 .../relation-types/tree/relation-type-tree.store.ts | 0 .../relation-types/tree/types.ts | 0 .../relation-types/workspace/manifests.ts | 0 .../relation-type-workspace-editor.element.ts | 0 .../workspace/relation-type-workspace.context.ts | 0 .../workspace/relation-type-workspace.element.ts | 0 .../workspace/relation-type-workspace.stories.ts | 0 ...ion-type-workspace-view-relation-type.element.ts | 0 ...ion-type-workspace-view-relation-type.stories.ts | 0 ...workspace-view-relation-type-relation.element.ts | 0 ...workspace-view-relation-type-relation.stories.ts | 0 .../src/packages/relations/relations/entities.ts | 1 + .../src/packages/relations/relations/index.ts | 2 ++ .../src/packages/relations/relations/manifests.ts | 3 +++ .../relations/relations/repository/index.ts | 1 + .../relations/relations/repository/manifests.ts | 13 +++++++++++++ .../relations}/repository/relation.repository.ts | 0 .../repository/sources/relation.server.data.ts | 0 .../src/packages/relations/umbraco-package.ts | 9 +++++++++ 36 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/relations/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/relations/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/entities.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/entity-actions/create.action.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/entity-actions/manifests.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/index.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/manifests.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/menu-item/manifests.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/repository/index.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/repository/manifests.ts (88%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/repository/relation-type.repository.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/repository/relation-type.store.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/repository/sources/relation-type.server.data.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/tree/index.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/tree/manifests.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/tree/relation-type-tree.repository.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/tree/relation-type-tree.server.data-source.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/tree/relation-type-tree.store.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/tree/types.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/workspace/manifests.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/workspace/relation-type-workspace-editor.element.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/workspace/relation-type-workspace.context.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/workspace/relation-type-workspace.element.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/workspace/relation-type-workspace.stories.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.stories.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/workspace/views/relation/workspace-view-relation-type-relation.element.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/workspace/views/relation/workspace-view-relation-type-relation.stories.ts (100%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/relations/relations/entities.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/relations/relations/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/relations/relations/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/{settings/relation-types => relations/relations}/repository/relation.repository.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings/relation-types => relations/relations}/repository/sources/relation.server.data.ts (100%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/relations/umbraco-package.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/index.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/index.ts new file mode 100644 index 0000000000..2a421f612c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/index.ts @@ -0,0 +1,4 @@ +import './relation-types/index.js'; +import './relations/index.js'; + +export * from './manifests.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/manifests.ts new file mode 100644 index 0000000000..0df7e9bea0 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/manifests.ts @@ -0,0 +1,4 @@ +import { manifests as relationManifests } from './relations/manifests.js'; +import { manifests as relationTypeManifests } from './relation-types/manifests.js'; + +export const manifests = [...relationTypeManifests, ...relationManifests]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entities.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/entities.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entities.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/entities.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/create.action.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/entity-actions/create.action.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/create.action.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/entity-actions/create.action.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/entity-actions/manifests.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/manifests.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/entity-actions/manifests.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/index.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/index.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/index.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/index.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/manifests.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/manifests.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/manifests.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/menu-item/manifests.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/menu-item/manifests.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/menu-item/manifests.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/index.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/repository/index.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/index.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/repository/index.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/repository/manifests.ts similarity index 88% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/manifests.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/repository/manifests.ts index aea2595058..0af82d025b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/repository/manifests.ts @@ -1,4 +1,4 @@ -import { UmbRelationTypeRepository } from '../repository/relation-type.repository.js'; +import { UmbRelationTypeRepository } from './relation-type.repository.js'; import { UmbRelationTypeStore } from './relation-type.store.js'; import { ManifestStore, ManifestRepository } from '@umbraco-cms/backoffice/extension-registry'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/repository/relation-type.repository.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.repository.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/repository/relation-type.repository.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.store.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/repository/relation-type.store.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.store.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/repository/relation-type.store.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/repository/sources/relation-type.server.data.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/repository/sources/relation-type.server.data.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/tree/index.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/tree/index.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/tree/index.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/tree/index.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/tree/manifests.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/tree/manifests.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/tree/manifests.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/tree/relation-type-tree.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/tree/relation-type-tree.repository.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/tree/relation-type-tree.repository.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/tree/relation-type-tree.repository.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/tree/relation-type-tree.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/tree/relation-type-tree.server.data-source.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/tree/relation-type-tree.server.data-source.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/tree/relation-type-tree.server.data-source.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/tree/relation-type-tree.store.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/tree/relation-type-tree.store.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/tree/relation-type-tree.store.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/tree/relation-type-tree.store.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/tree/types.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/tree/types.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/tree/types.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/tree/types.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/manifests.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/manifests.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/manifests.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace-editor.element.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type-workspace-editor.element.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace-editor.element.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type-workspace-editor.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type-workspace.context.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type-workspace.context.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type-workspace.element.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.element.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type-workspace.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type-workspace.stories.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.stories.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type-workspace.stories.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.stories.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.stories.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.stories.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.stories.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation/workspace-view-relation-type-relation.element.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/views/relation/workspace-view-relation-type-relation.element.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation/workspace-view-relation-type-relation.element.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/views/relation/workspace-view-relation-type-relation.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation/workspace-view-relation-type-relation.stories.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/views/relation/workspace-view-relation-type-relation.stories.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation/workspace-view-relation-type-relation.stories.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/views/relation/workspace-view-relation-type-relation.stories.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/relations/entities.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/entities.ts new file mode 100644 index 0000000000..197d94a6e7 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/entities.ts @@ -0,0 +1 @@ +export const UMB_RELATION_ENTITY_TYPE = 'relation'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/relations/index.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/index.ts new file mode 100644 index 0000000000..7bbcc83722 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/index.ts @@ -0,0 +1,2 @@ +export * from './repository/index.js'; +export * from './entities.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/relations/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/manifests.ts new file mode 100644 index 0000000000..4e1826b900 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/manifests.ts @@ -0,0 +1,3 @@ +import { manifests as repositoryManifests } from './repository/manifests.js'; + +export const manifests = [...repositoryManifests]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/index.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/index.ts new file mode 100644 index 0000000000..5a2d860e87 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/index.ts @@ -0,0 +1 @@ +export * from './relation.repository.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/manifests.ts new file mode 100644 index 0000000000..0a8b0eacbb --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/manifests.ts @@ -0,0 +1,13 @@ +import { UmbRelationRepository } from './relation.repository.js'; +import { ManifestRepository } from '@umbraco-cms/backoffice/extension-registry'; + +export const UMB_RELATION_REPOSITORY_ALIAS = 'Umb.Repository.Relation'; + +const repository: ManifestRepository = { + type: 'repository', + alias: UMB_RELATION_REPOSITORY_ALIAS, + name: 'Relation Repository', + api: UmbRelationRepository, +}; + +export const manifests = [repository]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/relation.repository.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation.repository.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/relation.repository.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/sources/relation.server.data.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation.server.data.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/sources/relation.server.data.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/umbraco-package.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/umbraco-package.ts new file mode 100644 index 0000000000..fb27644d7b --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/umbraco-package.ts @@ -0,0 +1,9 @@ +export const name = 'Umbraco.Core.Relations'; +export const extensions = [ + { + name: 'Relations Bundle', + alias: 'Umb.Bundle.Relations', + type: 'bundle', + js: () => import('./manifests.js'), + }, +]; From 24d5de0afa56cf671bd295f6284622d6ad424c0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Fri, 5 Jan 2024 10:52:53 +1300 Subject: [PATCH 20/30] move handlers to new relations folder --- .../src/mocks/browser-handlers.ts | 4 +- .../mocks/handlers/relation-type.handlers.ts | 76 ------------------- .../src/mocks/handlers/relations/index.ts | 1 + .../relation-types/detail.handlers.ts | 47 ++++++++++++ .../relations/relation-types/index.ts | 4 + .../handlers/relations/relation-types/slug.ts | 1 + .../relations/relation-types/tree.handlers.ts | 36 +++++++++ 7 files changed, 91 insertions(+), 78 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/src/mocks/handlers/relation-type.handlers.ts create mode 100644 src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/detail.handlers.ts create mode 100644 src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/slug.ts create mode 100644 src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/tree.handlers.ts diff --git a/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts index cac7ae809b..cc6544084a 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts @@ -1,5 +1,4 @@ import { handlers as dataTypeHandlers } from './handlers/data-type/index.js'; -import { handlers as relationTypeHandlers } from './handlers/relation-type.handlers.js'; import { handlers as documentTypeHandlers } from './handlers/document-type/index.js'; import { handlers as installHandlers } from './handlers/install.handlers.js'; import * as manifestsHandlers from './handlers/manifests.handlers.js'; @@ -11,6 +10,7 @@ import { handlers as telemetryHandlers } from './handlers/telemetry.handlers.js' import { handlers as userGroupsHandlers } from './handlers/user-group/index.js'; import { handlers as examineManagementHandlers } from './handlers/examine-management.handlers.js'; import { handlers as modelsBuilderHandlers } from './handlers/modelsbuilder.handlers.js'; +import { handlers as relationHandlers } from './handlers/relations/index.js'; import { handlers as healthCheckHandlers } from './handlers/health-check.handlers.js'; import { handlers as profilingHandlers } from './handlers/performance-profiling.handlers.js'; import { handlers as documentHandlers } from './handlers/document/index.js'; @@ -58,7 +58,7 @@ const handlers = [ ...profilingHandlers, ...publishedStatusHandlers, ...redirectManagementHandlers, - ...relationTypeHandlers, + ...relationHandlers, ...rteEmbedHandlers, ...scriptHandlers, ...staticFileHandlers, diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/relation-type.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relation-type.handlers.ts deleted file mode 100644 index ad208e5d65..0000000000 --- a/src/Umbraco.Web.UI.Client/src/mocks/handlers/relation-type.handlers.ts +++ /dev/null @@ -1,76 +0,0 @@ -const { rest } = window.MockServiceWorker; -import { umbRelationTypeData } from '../data/relation-type.data.js'; -import { umbracoPath } from '@umbraco-cms/backoffice/utils'; - -// TODO: add schema -export const handlers = [ - rest.delete('/umbraco/backoffice/relation-type/:id', async (req, res, ctx) => { - const id = req.params.id as string; - if (!id) return; - - umbRelationTypeData.delete([id]); - - return res(ctx.status(200)); - }), - - rest.get('/umbraco/management/api/v1/tree/relation-type/root', (req, res, ctx) => { - const rootItems = umbRelationTypeData.getTreeRoot(); - const response = { - total: rootItems.length, - items: rootItems, - }; - return res(ctx.status(200), ctx.json(response)); - }), - - rest.get('/umbraco/management/api/v1/tree/relation-type/children', (req, res, ctx) => { - const parentId = req.url.searchParams.get('parentId'); - if (!parentId) return; - - const children = umbRelationTypeData.getTreeItemChildren(parentId); - - const response = { - total: children.length, - items: children, - }; - - return res(ctx.status(200), ctx.json(response)); - }), - - rest.get('/umbraco/management/api/v1/tree/relation-type/item', (req, res, ctx) => { - const ids = req.url.searchParams.getAll('id'); - if (!ids) return; - const items = umbRelationTypeData.getTreeItem(ids); - return res(ctx.status(200), ctx.json(items)); - }), - - rest.get(umbracoPath('/relation-type/:id'), (req, res, ctx) => { - const id = req.params.id as string; - if (!id) return; - - const RelationType = umbRelationTypeData.getById(id); - - return res(ctx.status(200), ctx.json(RelationType)); - }), - - rest.post(umbracoPath('/relation-type/:id'), async (req, res, ctx) => { - const id = req.params.id as string; - if (!id) return; - const data = await req.json(); - if (!data) return; - - umbRelationTypeData.insert(data); - - return res(ctx.status(200)); - }), - - rest.put(umbracoPath('/relation-type/:id'), async (req, res, ctx) => { - const id = req.params.id as string; - if (!id) return; - const data = await req.json(); - if (!data) return; - - umbRelationTypeData.save(id, data); - - return res(ctx.status(200)); - }), -]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/index.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/index.ts new file mode 100644 index 0000000000..4903a21656 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/index.ts @@ -0,0 +1 @@ +export * from './relation-types/index.js'; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/detail.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/detail.handlers.ts new file mode 100644 index 0000000000..4f7cf607ba --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/detail.handlers.ts @@ -0,0 +1,47 @@ +const { rest } = window.MockServiceWorker; +import { umbRelationTypeData } from '../../../data/relation-type.data.js'; +import { UMB_SLUG } from './slug.js'; +import { umbracoPath } from '@umbraco-cms/backoffice/utils'; + +// TODO: add schema +export const handlers = [ + rest.delete(umbracoPath(`${UMB_SLUG}/:id`), async (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; + + umbRelationTypeData.delete([id]); + + return res(ctx.status(200)); + }), + + rest.get(umbracoPath(`${UMB_SLUG}/:id`), (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; + + const RelationType = umbRelationTypeData.getById(id); + + return res(ctx.status(200), ctx.json(RelationType)); + }), + + rest.post(umbracoPath(`${UMB_SLUG}/:id`), async (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; + const data = await req.json(); + if (!data) return; + + umbRelationTypeData.insert(data); + + return res(ctx.status(200)); + }), + + rest.put(umbracoPath(`${UMB_SLUG}/:id`), async (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; + const data = await req.json(); + if (!data) return; + + umbRelationTypeData.save(id, data); + + return res(ctx.status(200)); + }), +]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/index.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/index.ts new file mode 100644 index 0000000000..865bbcb066 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/index.ts @@ -0,0 +1,4 @@ +import { handlers as detailHandlers } from './detail.handlers.js'; +import { handlers as treeHandlers } from './tree.handlers.js'; + +export const handlers = [...detailHandlers, ...treeHandlers]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/slug.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/slug.ts new file mode 100644 index 0000000000..16aae5847e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/slug.ts @@ -0,0 +1 @@ +export const UMB_SLUG = '/relation-type'; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/tree.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/tree.handlers.ts new file mode 100644 index 0000000000..c33fae2727 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/tree.handlers.ts @@ -0,0 +1,36 @@ +const { rest } = window.MockServiceWorker; +import { umbRelationTypeData } from '../../../data/relation-type.data.js'; +import { UMB_SLUG } from './slug.js'; +import { umbracoPath } from '@umbraco-cms/backoffice/utils'; + +export const handlers = [ + rest.get(umbracoPath(`/tree${UMB_SLUG}/root`), (req, res, ctx) => { + const rootItems = umbRelationTypeData.getTreeRoot(); + const response = { + total: rootItems.length, + items: rootItems, + }; + return res(ctx.status(200), ctx.json(response)); + }), + + rest.get(umbracoPath(`/tree${UMB_SLUG}/children`), (req, res, ctx) => { + const parentId = req.url.searchParams.get('parentId'); + if (!parentId) return; + + const children = umbRelationTypeData.getTreeItemChildren(parentId); + + const response = { + total: children.length, + items: children, + }; + + return res(ctx.status(200), ctx.json(response)); + }), + + rest.get(umbracoPath(`/tree${UMB_SLUG}/item`), (req, res, ctx) => { + const ids = req.url.searchParams.getAll('id'); + if (!ids) return; + const items = umbRelationTypeData.getTreeItem(ids); + return res(ctx.status(200), ctx.json(items)); + }), +]; From 4b8cd3a2d5914e49b25c5d3fad49f1b0eed5aa65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Fri, 5 Jan 2024 15:17:50 +1300 Subject: [PATCH 21/30] add missing function to repo --- .../repository/relation.repository.ts | 14 +++++++++++++ .../sources/relation.server.data.ts | 20 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/relation.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/relation.repository.ts index 6ad4eadf1d..f3ec9bc63c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/relation.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/relation.repository.ts @@ -36,4 +36,18 @@ export class UmbRelationRepository extends UmbBaseController implements UmbApi { return { data, error }; } + + async requestChildRelationById(childId: string, relationTypeAlias?: string) { + await this.#init; + + // TODO: should we show a notification if the id is missing? + // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? + if (!childId) { + throw new Error('Id is missing'); + } + + const { data, error } = await this.#detailDataSource.readChildRelations(childId, relationTypeAlias); + + return { data, error }; + } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/sources/relation.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/sources/relation.server.data.ts index c9490ee2ca..9e8845bcb9 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/sources/relation.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/sources/relation.server.data.ts @@ -38,4 +38,24 @@ export class UmbRelationServerDataSource { }), ); } + + /** + * Fetches relations by the given id from the server + * @param {string} childId + * @return {*} + * @memberof UmbRelationServerDataSource + */ + async readChildRelations(childId: string, relationTypeAlias?: string) { + if (!childId) { + throw new Error('Id is missing'); + } + + return tryExecuteAndNotify( + this.#host, + RelationResource.getRelationChildRelationByChildId({ + childId, + relationTypeAlias, + }), + ); + } } From b4f5e165338590c90440ad98d16e1e9a8934df57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Mon, 8 Jan 2024 12:11:18 +1300 Subject: [PATCH 22/30] add object type handler and data --- .../data/object-type/object-type.data.ts | 32 +++++++++++++++++++ .../src/mocks/handlers/object-type/index.ts | 3 ++ .../handlers/object-type/item.handlers.ts | 11 +++++++ .../src/mocks/handlers/object-type/slug.ts | 1 + 4 files changed, 47 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/mocks/data/object-type/object-type.data.ts create mode 100644 src/Umbraco.Web.UI.Client/src/mocks/handlers/object-type/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/mocks/handlers/object-type/item.handlers.ts create mode 100644 src/Umbraco.Web.UI.Client/src/mocks/handlers/object-type/slug.ts diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/object-type/object-type.data.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/object-type/object-type.data.ts new file mode 100644 index 0000000000..ced9f0b6c9 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/object-type/object-type.data.ts @@ -0,0 +1,32 @@ +import { UmbEntityData } from '../entity.data.js'; +import type { ObjectTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; + +export const data: Array = [ + { + id: '1', + name: 'Media', + }, + { + id: '2', + name: 'Content', + }, + { + id: '3', + name: 'User', + }, + { + id: '4', + name: 'Document', + }, +]; + +// Temp mocked database +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore +class UmbObjectTypeData extends UmbEntityData { + constructor() { + super(data); + } +} + +export const umbObjectTypeData = new UmbObjectTypeData(); diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/object-type/index.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/object-type/index.ts new file mode 100644 index 0000000000..f1df43458a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/object-type/index.ts @@ -0,0 +1,3 @@ +import { handlers as itemHandlers } from './item.handlers.js'; + +export const handlers = [...itemHandlers]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/object-type/item.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/object-type/item.handlers.ts new file mode 100644 index 0000000000..0d4426e00d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/object-type/item.handlers.ts @@ -0,0 +1,11 @@ +const { rest } = window.MockServiceWorker; +import { umbObjectTypeData } from '../../data/object-type/object-type.data.js'; +import { UMB_SLUG } from './slug.js'; +import { umbracoPath } from '@umbraco-cms/backoffice/utils'; + +export const handlers = [ + rest.get(umbracoPath(`${UMB_SLUG}`), (req, res, ctx) => { + const response = umbObjectTypeData.getAll(); + return res(ctx.status(200), ctx.json(response)); + }), +]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/object-type/slug.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/object-type/slug.ts new file mode 100644 index 0000000000..9809e3f7b7 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/object-type/slug.ts @@ -0,0 +1 @@ +export const UMB_SLUG = '/object-types'; From b88bd79eca626a73a83fb9cdddca77fe9dba509a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Mon, 8 Jan 2024 12:11:30 +1300 Subject: [PATCH 23/30] relation mocks --- .../src/mocks/browser-handlers.ts | 5 +- .../{ => relations}/relation-type.data.ts | 4 +- .../src/mocks/data/relations/relation.data.ts | 79 +++++++++++++++++++ .../src/mocks/handlers/relations/index.ts | 3 +- .../detail.handlers.ts | 2 +- .../index.ts | 2 +- .../{relation-types => relation-type}/slug.ts | 0 .../tree.handlers.ts | 2 +- .../handlers/relations/relation/index.ts | 3 + .../relations/relation/item.handlers.ts | 36 +++++++++ 10 files changed, 129 insertions(+), 7 deletions(-) rename src/Umbraco.Web.UI.Client/src/mocks/data/{ => relations}/relation-type.data.ts (97%) create mode 100644 src/Umbraco.Web.UI.Client/src/mocks/data/relations/relation.data.ts rename src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/{relation-types => relation-type}/detail.handlers.ts (93%) rename src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/{relation-types => relation-type}/index.ts (63%) rename src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/{relation-types => relation-type}/slug.ts (100%) rename src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/{relation-types => relation-type}/tree.handlers.ts (92%) create mode 100644 src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation/item.handlers.ts diff --git a/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts index cc6544084a..e1fe61b753 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts @@ -10,7 +10,8 @@ import { handlers as telemetryHandlers } from './handlers/telemetry.handlers.js' import { handlers as userGroupsHandlers } from './handlers/user-group/index.js'; import { handlers as examineManagementHandlers } from './handlers/examine-management.handlers.js'; import { handlers as modelsBuilderHandlers } from './handlers/modelsbuilder.handlers.js'; -import { handlers as relationHandlers } from './handlers/relations/index.js'; +import { relationHandlers, relationTypeHandlers } from './handlers/relations/index.js'; +import { handlers as objectTypeHandlers } from './handlers/object-type/index.js'; import { handlers as healthCheckHandlers } from './handlers/health-check.handlers.js'; import { handlers as profilingHandlers } from './handlers/performance-profiling.handlers.js'; import { handlers as documentHandlers } from './handlers/document/index.js'; @@ -59,6 +60,8 @@ const handlers = [ ...publishedStatusHandlers, ...redirectManagementHandlers, ...relationHandlers, + ...objectTypeHandlers, + ...relationTypeHandlers, ...rteEmbedHandlers, ...scriptHandlers, ...staticFileHandlers, diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/relation-type.data.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/relations/relation-type.data.ts similarity index 97% rename from src/Umbraco.Web.UI.Client/src/mocks/data/relation-type.data.ts rename to src/Umbraco.Web.UI.Client/src/mocks/data/relations/relation-type.data.ts index 7de5f02825..ffe6093a17 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/relation-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/relations/relation-type.data.ts @@ -1,5 +1,5 @@ -import { UmbEntityData } from './entity.data.js'; -import { createEntityTreeItem } from './utils.js'; +import { UmbEntityData } from '../entity.data.js'; +import { createEntityTreeItem } from '../utils.js'; import type { EntityTreeItemResponseModel, RelationTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; // TODO: investigate why we don't get an entity type as part of the RelationTypeResponseModel diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/relations/relation.data.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/relations/relation.data.ts new file mode 100644 index 0000000000..4576ad3078 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/relations/relation.data.ts @@ -0,0 +1,79 @@ +import type { RelationResponseModel } from '@umbraco-cms/backoffice/backend-api'; + +export const data: Array = [ + { + parentId: '1', + parentName: 'TEST Parent 1', + childId: '2', + childName: 'Child 1', + createDate: '2021-01-01', + comment: 'Comment 1', + }, + { + parentId: '1', + parentName: 'Parent 1', + childId: '3', + childName: 'Child 2', + createDate: '2021-01-01', + comment: 'Comment 2', + }, + { + parentId: '1', + parentName: 'Parent 1', + childId: '4', + childName: 'Child 3', + createDate: '2021-01-01', + comment: 'Comment 3', + }, + { + parentId: '1', + parentName: 'Parent 1', + childId: '5', + childName: 'Child 4', + createDate: '2021-01-01', + comment: 'Comment 4', + }, + { + parentId: '1', + parentName: 'Parent 1', + childId: '6', + childName: 'Child 5', + createDate: '2021-01-01', + comment: 'Comment 5', + }, + { + parentId: '1', + parentName: 'Parent 1', + childId: '7', + childName: 'Child 6', + createDate: '2021-01-01', + comment: 'Comment 6', + }, + { + parentId: '1', + parentName: 'Parent 1', + childId: '8', + childName: 'Child 7', + createDate: '2021-01-01', + comment: 'Comment 7', + }, + { + parentId: '1', + parentName: 'Parent 1', + childId: '9', + childName: 'Child 8', + createDate: '2021-01-01', + comment: 'Comment 8', + }, +]; + +// Temp mocked database +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore +class UmbRelationData extends UmbEntityData { + constructor() { + super(data); + } +} + +export const umbRelationData = new UmbRelationData(); diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/index.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/index.ts index 4903a21656..c920b2fd73 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/index.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/index.ts @@ -1 +1,2 @@ -export * from './relation-types/index.js'; +export * from './relation/index.js'; +export * from './relation-type/index.js'; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/detail.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-type/detail.handlers.ts similarity index 93% rename from src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/detail.handlers.ts rename to src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-type/detail.handlers.ts index 4f7cf607ba..4d2b87e074 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/detail.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-type/detail.handlers.ts @@ -1,5 +1,5 @@ const { rest } = window.MockServiceWorker; -import { umbRelationTypeData } from '../../../data/relation-type.data.js'; +import { umbRelationTypeData } from '../../../data/relations/relation-type.data.js'; import { UMB_SLUG } from './slug.js'; import { umbracoPath } from '@umbraco-cms/backoffice/utils'; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/index.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-type/index.ts similarity index 63% rename from src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/index.ts rename to src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-type/index.ts index 865bbcb066..8b9e50e347 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/index.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-type/index.ts @@ -1,4 +1,4 @@ import { handlers as detailHandlers } from './detail.handlers.js'; import { handlers as treeHandlers } from './tree.handlers.js'; -export const handlers = [...detailHandlers, ...treeHandlers]; +export const relationTypeHandlers = [...detailHandlers, ...treeHandlers]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/slug.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-type/slug.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/slug.ts rename to src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-type/slug.ts diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/tree.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-type/tree.handlers.ts similarity index 92% rename from src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/tree.handlers.ts rename to src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-type/tree.handlers.ts index c33fae2727..985c09b929 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/tree.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-type/tree.handlers.ts @@ -1,5 +1,5 @@ const { rest } = window.MockServiceWorker; -import { umbRelationTypeData } from '../../../data/relation-type.data.js'; +import { umbRelationTypeData } from '../../../data/relations/relation-type.data.js'; import { UMB_SLUG } from './slug.js'; import { umbracoPath } from '@umbraco-cms/backoffice/utils'; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation/index.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation/index.ts new file mode 100644 index 0000000000..46b27bbdb7 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation/index.ts @@ -0,0 +1,3 @@ +import { handlers as itemHandlers } from './item.handlers.js'; + +export const relationHandlers = [...itemHandlers]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation/item.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation/item.handlers.ts new file mode 100644 index 0000000000..985c09b929 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation/item.handlers.ts @@ -0,0 +1,36 @@ +const { rest } = window.MockServiceWorker; +import { umbRelationTypeData } from '../../../data/relations/relation-type.data.js'; +import { UMB_SLUG } from './slug.js'; +import { umbracoPath } from '@umbraco-cms/backoffice/utils'; + +export const handlers = [ + rest.get(umbracoPath(`/tree${UMB_SLUG}/root`), (req, res, ctx) => { + const rootItems = umbRelationTypeData.getTreeRoot(); + const response = { + total: rootItems.length, + items: rootItems, + }; + return res(ctx.status(200), ctx.json(response)); + }), + + rest.get(umbracoPath(`/tree${UMB_SLUG}/children`), (req, res, ctx) => { + const parentId = req.url.searchParams.get('parentId'); + if (!parentId) return; + + const children = umbRelationTypeData.getTreeItemChildren(parentId); + + const response = { + total: children.length, + items: children, + }; + + return res(ctx.status(200), ctx.json(response)); + }), + + rest.get(umbracoPath(`/tree${UMB_SLUG}/item`), (req, res, ctx) => { + const ids = req.url.searchParams.getAll('id'); + if (!ids) return; + const items = umbRelationTypeData.getTreeItem(ids); + return res(ctx.status(200), ctx.json(items)); + }), +]; From 1244509822e3aca91ed46ef066d10b6b782cd847 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Mon, 8 Jan 2024 12:11:50 +1300 Subject: [PATCH 24/30] relation mocks --- .../src/mocks/handlers/relations/relation/slug.ts | 1 + .../relation-types/workspace/relation-type-workspace.stories.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation/slug.ts diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation/slug.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation/slug.ts new file mode 100644 index 0000000000..ba6bc7ffc4 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation/slug.ts @@ -0,0 +1 @@ +export const UMB_SLUG = '/relation'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type-workspace.stories.ts index 72fe092d1c..401fd251ed 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type-workspace.stories.ts @@ -1,7 +1,7 @@ import './relation-type-workspace.element.js'; import { Meta, Story } from '@storybook/web-components'; -import { data } from '../../../../mocks/data/relation-type.data.js'; +import { data } from '../../../../mocks/data/relations/relation-type.data.js'; import type { UmbRelationTypeWorkspaceElement } from './relation-type-workspace.element.js'; import { html, ifDefined } from '@umbraco-cms/backoffice/external/lit'; From 3959890d6ca0b27a6a97f36b4f1d0c08a4a9c2de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Mon, 8 Jan 2024 12:35:04 +1300 Subject: [PATCH 25/30] relation mocks --- .../src/mocks/data/relations/relation.data.ts | 38 +++++++++++-------- .../relations/relation/item.handlers.ts | 31 +++------------ 2 files changed, 27 insertions(+), 42 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/relations/relation.data.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/relations/relation.data.ts index 4576ad3078..ca46d6ca9e 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/relations/relation.data.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/relations/relation.data.ts @@ -1,65 +1,66 @@ +import { UmbEntityData } from '../entity.data.js'; import type { RelationResponseModel } from '@umbraco-cms/backoffice/backend-api'; export const data: Array = [ { - parentId: '1', - parentName: 'TEST Parent 1', + parentId: 'e0d39ff5-71d8-453f-b682-9d8d31ee5e06', + parentName: 'Relate Document On Copy', childId: '2', childName: 'Child 1', createDate: '2021-01-01', comment: 'Comment 1', }, { - parentId: '1', - parentName: 'Parent 1', + parentId: 'e0d39ff5-71d8-453f-b682-9d8d31ee5e06', + parentName: 'Relate Document On Copy', childId: '3', childName: 'Child 2', createDate: '2021-01-01', comment: 'Comment 2', }, { - parentId: '1', - parentName: 'Parent 1', + parentId: 'e0d39ff5-71d8-453f-b682-9d8d31ee5e06', + parentName: 'Relate Document On Copy', childId: '4', childName: 'Child 3', createDate: '2021-01-01', comment: 'Comment 3', }, { - parentId: '1', - parentName: 'Parent 1', + parentId: 'e0d39ff5-71d8-453f-b682-9d8d31ee5e06', + parentName: 'Relate Document On Copy', childId: '5', childName: 'Child 4', createDate: '2021-01-01', comment: 'Comment 4', }, { - parentId: '1', - parentName: 'Parent 1', + parentId: 'e0d39ff5-71d8-453f-b682-9d8d31ee5e06', + parentName: 'Relate Document On Copy', childId: '6', childName: 'Child 5', createDate: '2021-01-01', comment: 'Comment 5', }, { - parentId: '1', - parentName: 'Parent 1', + parentId: 'e0d39ff5-71d8-453f-b682-9d8d31ee5e06', + parentName: 'Relate Document On Copy', childId: '7', childName: 'Child 6', createDate: '2021-01-01', comment: 'Comment 6', }, { - parentId: '1', - parentName: 'Parent 1', + parentId: 'e0d39ff5-71d8-453f-b682-9d8d31ee5e06', + parentName: 'Relate Document On Copy', childId: '8', childName: 'Child 7', createDate: '2021-01-01', comment: 'Comment 7', }, { - parentId: '1', - parentName: 'Parent 1', + parentId: 'e0d39ff5-71d8-453f-b682-9d8d31ee5e06', + parentName: 'Relate Document On Copy', childId: '9', childName: 'Child 8', createDate: '2021-01-01', @@ -74,6 +75,11 @@ class UmbRelationData extends UmbEntityData { constructor() { super(data); } + + getRelationsByParentId(id: string) { + const test = this.data.filter((relation) => relation.parentId === id); + return { items: test, total: test.length }; + } } export const umbRelationData = new UmbRelationData(); diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation/item.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation/item.handlers.ts index 985c09b929..80bae2824b 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation/item.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation/item.handlers.ts @@ -1,36 +1,15 @@ const { rest } = window.MockServiceWorker; -import { umbRelationTypeData } from '../../../data/relations/relation-type.data.js'; +import { umbRelationData } from '../../../data/relations/relation.data.js'; import { UMB_SLUG } from './slug.js'; import { umbracoPath } from '@umbraco-cms/backoffice/utils'; export const handlers = [ - rest.get(umbracoPath(`/tree${UMB_SLUG}/root`), (req, res, ctx) => { - const rootItems = umbRelationTypeData.getTreeRoot(); - const response = { - total: rootItems.length, - items: rootItems, - }; - return res(ctx.status(200), ctx.json(response)); - }), + rest.get(umbracoPath(`${UMB_SLUG}/type/:id`), (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; - rest.get(umbracoPath(`/tree${UMB_SLUG}/children`), (req, res, ctx) => { - const parentId = req.url.searchParams.get('parentId'); - if (!parentId) return; - - const children = umbRelationTypeData.getTreeItemChildren(parentId); - - const response = { - total: children.length, - items: children, - }; + const response = umbRelationData.getRelationsByParentId(id); return res(ctx.status(200), ctx.json(response)); }), - - rest.get(umbracoPath(`/tree${UMB_SLUG}/item`), (req, res, ctx) => { - const ids = req.url.searchParams.getAll('id'); - if (!ids) return; - const items = umbRelationTypeData.getTreeItem(ids); - return res(ctx.status(200), ctx.json(items)); - }), ]; From e64b2242a73a5b9c89fcb3006be006e785a43836 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Mon, 8 Jan 2024 12:35:15 +1300 Subject: [PATCH 26/30] use api in relation view --- ...ace-view-relation-type-relation.element.ts | 96 +++++-------------- 1 file changed, 25 insertions(+), 71 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/views/relation/workspace-view-relation-type-relation.element.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/views/relation/workspace-view-relation-type-relation.element.ts index 58ecf96072..5c57f3cf40 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/views/relation/workspace-view-relation-type-relation.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/views/relation/workspace-view-relation-type-relation.element.ts @@ -1,6 +1,7 @@ +import { UMB_RELATION_TYPE_WORKSPACE_CONTEXT } from '../../relation-type-workspace.context.js'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { css, html, customElement, state } from '@umbraco-cms/backoffice/external/lit'; -import { UmbTableColumn, UmbTableConfig } from '@umbraco-cms/backoffice/components'; +import { UmbTableColumn, UmbTableConfig, UmbTableItem } from '@umbraco-cms/backoffice/components'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { RelationResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbWorkspaceViewElement } from '@umbraco-cms/backoffice/extension-registry'; @@ -9,7 +10,27 @@ import { UmbWorkspaceViewElement } from '@umbraco-cms/backoffice/extension-regis export class UmbWorkspaceViewRelationTypeRelationElement extends UmbLitElement implements UmbWorkspaceViewElement { //TODO Use real data @state() - _relations: Array = MockData; + _relations: Array = []; + + #workspaceContext?: typeof UMB_RELATION_TYPE_WORKSPACE_CONTEXT.TYPE; + + constructor() { + super(); + + this.consumeContext(UMB_RELATION_TYPE_WORKSPACE_CONTEXT, (instance) => { + this.#workspaceContext = instance; + this.#getRelations(); + }); + } + + async #getRelations() { + if (!this.#workspaceContext) { + return; + } + + const response = await this.#workspaceContext.getRelations(); + this._relations = response.data?.items ?? []; + } private _tableConfig: UmbTableConfig = { allowSelection: false, @@ -35,10 +56,10 @@ export class UmbWorkspaceViewRelationTypeRelationElement extends UmbLitElement i }, ]; - private get _tableItems() { + private get _tableItems(): UmbTableItem[] { return this._relations.map((relation) => { return { - key: relation.parentId + '-' + relation.childId, + id: relation.parentId + '-' + relation.childId, // Add the missing id property data: [ { columnAlias: 'parent', @@ -78,73 +99,6 @@ export class UmbWorkspaceViewRelationTypeRelationElement extends UmbLitElement i ]; } -const MockData: Array = [ - { - parentId: '1', - parentName: 'Parent 1', - childId: '2', - childName: 'Child 1', - createDate: '2021-01-01', - comment: 'Comment 1', - }, - { - parentId: '1', - parentName: 'Parent 1', - childId: '3', - childName: 'Child 2', - createDate: '2021-01-01', - comment: 'Comment 2', - }, - { - parentId: '1', - parentName: 'Parent 1', - childId: '4', - childName: 'Child 3', - createDate: '2021-01-01', - comment: 'Comment 3', - }, - { - parentId: '1', - parentName: 'Parent 1', - childId: '5', - childName: 'Child 4', - createDate: '2021-01-01', - comment: 'Comment 4', - }, - { - parentId: '1', - parentName: 'Parent 1', - childId: '6', - childName: 'Child 5', - createDate: '2021-01-01', - comment: 'Comment 5', - }, - { - parentId: '1', - parentName: 'Parent 1', - childId: '7', - childName: 'Child 6', - createDate: '2021-01-01', - comment: 'Comment 6', - }, - { - parentId: '1', - parentName: 'Parent 1', - childId: '8', - childName: 'Child 7', - createDate: '2021-01-01', - comment: 'Comment 7', - }, - { - parentId: '1', - parentName: 'Parent 1', - childId: '9', - childName: 'Child 8', - createDate: '2021-01-01', - comment: 'Comment 8', - }, -]; - export default UmbWorkspaceViewRelationTypeRelationElement; declare global { From 5738a04f21a056d8b25c1a259063ea21673c4988 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Mon, 8 Jan 2024 12:38:00 +1300 Subject: [PATCH 27/30] more mock data --- .../src/mocks/data/relations/relation.data.ts | 48 ++++++++++++++----- 1 file changed, 36 insertions(+), 12 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/relations/relation.data.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/relations/relation.data.ts index ca46d6ca9e..eb2697f274 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/relations/relation.data.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/relations/relation.data.ts @@ -5,7 +5,7 @@ export const data: Array = [ { parentId: 'e0d39ff5-71d8-453f-b682-9d8d31ee5e06', parentName: 'Relate Document On Copy', - childId: '2', + childId: '1', childName: 'Child 1', createDate: '2021-01-01', comment: 'Comment 1', @@ -13,7 +13,7 @@ export const data: Array = [ { parentId: 'e0d39ff5-71d8-453f-b682-9d8d31ee5e06', parentName: 'Relate Document On Copy', - childId: '3', + childId: '2', childName: 'Child 2', createDate: '2021-01-01', comment: 'Comment 2', @@ -21,7 +21,7 @@ export const data: Array = [ { parentId: 'e0d39ff5-71d8-453f-b682-9d8d31ee5e06', parentName: 'Relate Document On Copy', - childId: '4', + childId: '3', childName: 'Child 3', createDate: '2021-01-01', comment: 'Comment 3', @@ -29,43 +29,67 @@ export const data: Array = [ { parentId: 'e0d39ff5-71d8-453f-b682-9d8d31ee5e06', parentName: 'Relate Document On Copy', - childId: '5', + childId: '4', childName: 'Child 4', createDate: '2021-01-01', comment: 'Comment 4', }, { - parentId: 'e0d39ff5-71d8-453f-b682-9d8d31ee5e06', + parentId: 'ac68cde6-763f-4231-a751-1101b57defd2', parentName: 'Relate Document On Copy', - childId: '6', + childId: '5', childName: 'Child 5', createDate: '2021-01-01', comment: 'Comment 5', }, { - parentId: 'e0d39ff5-71d8-453f-b682-9d8d31ee5e06', + parentId: 'ac68cde6-763f-4231-a751-1101b57defd2', parentName: 'Relate Document On Copy', - childId: '7', + childId: '6', childName: 'Child 6', createDate: '2021-01-01', comment: 'Comment 6', }, { - parentId: 'e0d39ff5-71d8-453f-b682-9d8d31ee5e06', + parentId: '6f9b800c-762c-42d4-85d9-bf40a77d689e', parentName: 'Relate Document On Copy', - childId: '8', + childId: '7', childName: 'Child 7', createDate: '2021-01-01', comment: 'Comment 7', }, { - parentId: 'e0d39ff5-71d8-453f-b682-9d8d31ee5e06', + parentId: 'd421727d-43de-4205-b4c6-037404f309ad', parentName: 'Relate Document On Copy', - childId: '9', + childId: '8', childName: 'Child 8', createDate: '2021-01-01', comment: 'Comment 8', }, + { + parentId: 'd421727d-43de-4205-b4c6-037404f309ad', + parentName: 'Relate Document On Copy', + childId: '9', + childName: 'Child 9', + createDate: '2021-01-01', + comment: 'Comment 9', + }, + { + parentId: 'e9a0a28e-2d5b-4229-ac00-66f2df230513', + parentName: 'Relate Document On Copy', + childId: '10', + childName: 'Child 10', + createDate: '2021-01-01', + comment: 'Comment 10', + }, + { + parentId: 'e9a0a28e-2d5b-4229-ac00-66f2df230513', + parentName: 'Relate Document On Copy', + childId: '11', + childName: 'Child 11', + createDate: '2021-01-01', + comment: 'Comment 11', + }, ]; // Temp mocked database From ef08344a55bcc713a82755a2855eb29cdad61734 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Tue, 9 Jan 2024 14:53:58 +0100 Subject: [PATCH 28/30] fix eslint warnings --- .../src/apps/backoffice/backoffice.element.ts | 2 +- .../src/apps/backoffice/components/backoffice-main.element.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.element.ts b/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.element.ts index 17d532a707..27bcf47a4e 100644 --- a/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.element.ts +++ b/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.element.ts @@ -1,4 +1,4 @@ -import { UmbBackofficeContext, UMB_BACKOFFICE_CONTEXT_TOKEN } from './backoffice.context.js'; +import { UmbBackofficeContext } from './backoffice.context.js'; import { UmbServerExtensionRegistrator } from './server-extension-registrator.controller.js'; import { css, html, customElement } from '@umbraco-cms/backoffice/external/lit'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry'; diff --git a/src/Umbraco.Web.UI.Client/src/apps/backoffice/components/backoffice-main.element.ts b/src/Umbraco.Web.UI.Client/src/apps/backoffice/components/backoffice-main.element.ts index f319f9d9e3..8cd338830b 100644 --- a/src/Umbraco.Web.UI.Client/src/apps/backoffice/components/backoffice-main.element.ts +++ b/src/Umbraco.Web.UI.Client/src/apps/backoffice/components/backoffice-main.element.ts @@ -76,7 +76,7 @@ export class UmbBackofficeMainElement extends UmbLitElement { private _onRouteChange = async (event: UmbRouterSlotChangeEvent) => { const currentPath = event.target.localActiveViewPath || ''; - const section = this._sections.find((s) => this._routePrefix + (s.manifest as any).meta.pathname === currentPath); + const section = this._sections.find((s) => this._routePrefix + s.manifest?.meta.pathname === currentPath); if (!section) return; await section.asPromise(); if (section.manifest) { From 53159d797de3ba03ac03615b88f5de26f2ea700b Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Tue, 9 Jan 2024 14:58:33 +0100 Subject: [PATCH 29/30] fix eslint warnings --- .../apps/installer/database/installer-database.stories.ts | 8 +++----- .../src/libs/class-api/class.mixin.ts | 2 +- .../src/libs/class-api/context-base.class.ts | 1 + .../src/libs/context-api/consume/context-consumer.test.ts | 2 ++ 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/apps/installer/database/installer-database.stories.ts b/src/Umbraco.Web.UI.Client/src/apps/installer/database/installer-database.stories.ts index 6d74c051d8..3bfc558ee4 100644 --- a/src/Umbraco.Web.UI.Client/src/apps/installer/database/installer-database.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/apps/installer/database/installer-database.stories.ts @@ -1,13 +1,11 @@ import './installer-database.element.js'; -import { Meta, Story } from '@storybook/web-components'; import { html } from '@umbraco-cms/backoffice/external/lit'; -const { rest } = window.MockServiceWorker; - -import { installerContextProvider } from '../shared/utils.story-helpers.js'; +import { Meta, Story } from '@storybook/web-components'; import type { UmbInstallerDatabaseElement } from './installer-database.element.js'; -import type { InstallSettingsResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { installerContextProvider } from '../shared/utils.story-helpers.js'; + export default { title: 'Apps/Installer/Steps', component: 'umb-installer-database', diff --git a/src/Umbraco.Web.UI.Client/src/libs/class-api/class.mixin.ts b/src/Umbraco.Web.UI.Client/src/libs/class-api/class.mixin.ts index c075be0ee0..4073a02727 100644 --- a/src/Umbraco.Web.UI.Client/src/libs/class-api/class.mixin.ts +++ b/src/Umbraco.Web.UI.Client/src/libs/class-api/class.mixin.ts @@ -122,7 +122,7 @@ export const UmbClassMixin = (superClass: T) => { public destroy() { if (this._host) { this._host.removeController(this); - this._host = undefined as any; + this._host = undefined as never; } super.destroy(); } diff --git a/src/Umbraco.Web.UI.Client/src/libs/class-api/context-base.class.ts b/src/Umbraco.Web.UI.Client/src/libs/class-api/context-base.class.ts index 5c1a721c26..204c2c2ae2 100644 --- a/src/Umbraco.Web.UI.Client/src/libs/class-api/context-base.class.ts +++ b/src/Umbraco.Web.UI.Client/src/libs/class-api/context-base.class.ts @@ -8,6 +8,7 @@ import { UmbBaseController } from './controller-base.class.js'; */ export abstract class UmbContextBase< ContextType, + // eslint-disable-next-line @typescript-eslint/no-explicit-any GivenContextToken extends UmbContextToken = UmbContextToken, > extends UmbBaseController { constructor(host: UmbControllerHost, contextToken: GivenContextToken | string) { diff --git a/src/Umbraco.Web.UI.Client/src/libs/context-api/consume/context-consumer.test.ts b/src/Umbraco.Web.UI.Client/src/libs/context-api/consume/context-consumer.test.ts index aee8547152..749907a3a5 100644 --- a/src/Umbraco.Web.UI.Client/src/libs/context-api/consume/context-consumer.test.ts +++ b/src/Umbraco.Web.UI.Client/src/libs/context-api/consume/context-consumer.test.ts @@ -153,10 +153,12 @@ describe('UmbContextConsumer', () => { type A = { prop: string }; function discriminator(instance: unknown): instance is A { + // eslint-disable-next-line @typescript-eslint/no-explicit-any return typeof (instance as any).prop === 'string'; } function badDiscriminator(instance: unknown): instance is A { + // eslint-disable-next-line @typescript-eslint/no-explicit-any return typeof (instance as any).notExistingProp === 'string'; } From 3784eb4f2d532c75871f7488c4996a5354d33309 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Jan 2024 13:46:14 +0000 Subject: [PATCH 30/30] Bump follow-redirects from 1.15.2 to 1.15.4 Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.2 to 1.15.4. - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.2...v1.15.4) --- updated-dependencies: - dependency-name: follow-redirects dependency-type: indirect ... Signed-off-by: dependabot[bot] --- src/Umbraco.Web.UI.Client/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/package-lock.json b/src/Umbraco.Web.UI.Client/package-lock.json index 43b5e5ac01..5160af0068 100644 --- a/src/Umbraco.Web.UI.Client/package-lock.json +++ b/src/Umbraco.Web.UI.Client/package-lock.json @@ -13524,9 +13524,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", + "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", "funding": [ { "type": "individual",