From ad7083f5d96d85274e521463340da2bffbb7cc4d Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 25 Jan 2024 20:20:24 +0100 Subject: [PATCH] move model mapping --- .../document/document-publishing.manager.ts | 2 +- .../data/entity/entity-folder.manager.ts | 2 +- .../mocks/data/entity/entity-recycle-bin.ts | 4 +-- .../mocks/data/entity/entity-tree.manager.ts | 4 +-- .../block-type-card.element.ts | 2 +- .../block-type-workspace-editor.element.ts | 2 +- .../item/data-type-item.repository.ts | 4 +-- .../core/data-type/repository/item/index.ts | 1 + .../core/data-type/repository/item/types.ts | 5 ++++ .../property-settings-modal.element.ts | 2 -- .../document-types/repository/item/types.ts | 9 ++++--- .../tree/document-type-tree.repository.ts | 1 - .../document-type.tree.server.data-source.ts | 3 +-- .../tree/document-type.tree.store.ts | 1 - .../document-type-workspace.context.ts | 27 +++++++++---------- ...t-type-workspace-view-templates.element.ts | 2 +- ...ut-document-granular-permission.element.ts | 15 ++++------- .../input-document/input-document.element.ts | 2 +- .../tree/document-tree.server.data-source.ts | 9 ++----- .../src/packages/documents/documents/types.ts | 4 +-- .../workspace/document-workspace.context.ts | 18 ++++++------- ...-workspace-view-edit-properties.element.ts | 11 +++++--- ...pe-workspace-view-edit-property.element.ts | 7 +++-- ...ia-type-workspace-view-edit-tab.element.ts | 8 ++++-- .../query-builder/query-builder.element.ts | 13 +++++---- .../tree/template-tree.repository.ts | 1 - .../tree/template-tree.server.data-source.ts | 2 +- 27 files changed, 78 insertions(+), 83 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/data-type/repository/item/types.ts diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/document/document-publishing.manager.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/document/document-publishing.manager.ts index d7ae0bbb42..52af46c503 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/document/document-publishing.manager.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/document/document-publishing.manager.ts @@ -28,7 +28,7 @@ export class UmbMockDocumentPublishingManager { const document: UmbMockDocumentModel = this.#documentDb.detail.read(id); document?.variants?.forEach((variant) => { - const hasCulture = variant.culture && data.cultures?.includes(variant.culture); + const hasCulture = variant.culture && data.culture === variant.culture; if (hasCulture) { variant.state = ContentStateModel.DRAFT; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/entity/entity-folder.manager.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/entity/entity-folder.manager.ts index 432f5b4a97..692ab9afd9 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/entity/entity-folder.manager.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/entity/entity-folder.manager.ts @@ -55,7 +55,7 @@ export class UmbMockEntityFolderManager, + MockType extends Omit, > extends UmbEntityMockDbBase { tree; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/entity/entity-tree.manager.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/entity/entity-tree.manager.ts index 2628bda298..b066aa74b3 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/entity/entity-tree.manager.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/entity/entity-tree.manager.ts @@ -12,14 +12,14 @@ export class UmbMockEntityTreeManager item.parentId === null); + const items = this.#db.getData().filter((item) => item.parent === null); const treeItems = items.map((item) => this.#treeItemMapper(item)); const total = items.length; return { items: treeItems, total }; } getChildrenOf(parentId: string) { - const items = this.#db.getData().filter((item) => item.parentId === parentId); + const items = this.#db.getData().filter((item) => item.parent?.id === parentId); const treeItems = items.map((item) => this.#treeItemMapper(item)); const total = items.length; return { items: treeItems, total }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block-type/components/block-type-card/block-type-card.element.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block-type/components/block-type-card/block-type-card.element.ts index 0d167a660d..b7732995ce 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block-type/components/block-type-card/block-type-card.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block-type/components/block-type-card/block-type-card.element.ts @@ -14,7 +14,7 @@ export class UmbBlockTypeCardElement extends UmbLitElement { #itemManager = new UmbRepositoryItemsManager( this, DOCUMENT_TYPE_ITEM_REPOSITORY_ALIAS, - (x) => x.id, + (x) => x.unique, ); @property({ type: String, attribute: false }) diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block-type/workspace/block-type-workspace-editor.element.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block-type/workspace/block-type-workspace-editor.element.ts index 018bfbbfa4..97b8c61af0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block-type/workspace/block-type-workspace-editor.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block-type/workspace/block-type-workspace-editor.element.ts @@ -12,7 +12,7 @@ export class UmbBlockTypeWorkspaceEditorElement extends UmbLitElement { #itemManager = new UmbRepositoryItemsManager( this, DOCUMENT_TYPE_ITEM_REPOSITORY_ALIAS, - (x) => x.id, + (x) => x.unique, ); #workspaceContext?: typeof UMB_BLOCK_TYPE_WORKSPACE_CONTEXT.TYPE; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/data-type/repository/item/data-type-item.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/core/data-type/repository/item/data-type-item.repository.ts index 4879b439f1..01c7113f0f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/data-type/repository/item/data-type-item.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/data-type/repository/item/data-type-item.repository.ts @@ -1,10 +1,10 @@ import { UmbDataTypeItemServerDataSource } from './data-type-item.server.data.js'; import { UMB_DATA_TYPE_ITEM_STORE_CONTEXT } from './data-type-item.store.js'; +import type { UmbDataTypeItemModel } from './types.js'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { UmbItemRepositoryBase } from '@umbraco-cms/backoffice/repository'; -import type { DataTypeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; -export class UmbDataTypeItemRepository extends UmbItemRepositoryBase { +export class UmbDataTypeItemRepository extends UmbItemRepositoryBase { constructor(host: UmbControllerHost) { super(host, UmbDataTypeItemServerDataSource, UMB_DATA_TYPE_ITEM_STORE_CONTEXT); } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/data-type/repository/item/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/data-type/repository/item/index.ts index 09da119f87..920fe6202c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/data-type/repository/item/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/data-type/repository/item/index.ts @@ -1,2 +1,3 @@ export { UmbDataTypeItemRepository } from './data-type-item.repository.js'; export { UMB_DATA_TYPE_ITEM_REPOSITORY_ALIAS as DATA_TYPE_ITEM_REPOSITORY_ALIAS } from './manifests.js'; +export type { UmbDataTypeItemModel } from './types.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/data-type/repository/item/types.ts b/src/Umbraco.Web.UI.Client/src/packages/core/data-type/repository/item/types.ts new file mode 100644 index 0000000000..d798ac80cc --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/data-type/repository/item/types.ts @@ -0,0 +1,5 @@ +export interface UmbDataTypeItemModel { + unique: string; + name: string; + propertyEditorUiAlias: string; +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/modal/common/property-settings/property-settings-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/modal/common/property-settings/property-settings-modal.element.ts index 0d290b8a43..7b3b79bb1c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/modal/common/property-settings/property-settings-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/modal/common/property-settings/property-settings-modal.element.ts @@ -10,8 +10,6 @@ import { css, html, nothing, customElement, state } from '@umbraco-cms/backoffic import type { UmbPropertySettingsModalValue, UmbPropertySettingsModalData } from '@umbraco-cms/backoffice/modal'; import { UmbModalBaseElement } from '@umbraco-cms/backoffice/modal'; import { generateAlias } from '@umbraco-cms/backoffice/utils'; -import { DocumentTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; -import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; // TODO: Could base take a token to get its types?. @customElement('umb-property-settings-modal') export class UmbPropertySettingsModalElement extends UmbModalBaseElement< diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/repository/item/types.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/repository/item/types.ts index d06102317d..1079e8cf02 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/repository/item/types.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/repository/item/types.ts @@ -1,3 +1,6 @@ -import type { DocumentTypeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; - -export type UmbDocumentTypeItemModel = DocumentTypeItemResponseModel; +export type UmbDocumentTypeItemModel = { + unique: string; + name: string; + isElement: boolean; + icon?: string | null; +}; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/tree/document-type-tree.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/tree/document-type-tree.repository.ts index 16c2b640e9..b2b3d9eb41 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/tree/document-type-tree.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/tree/document-type-tree.repository.ts @@ -21,7 +21,6 @@ export class UmbDocumentTypeTreeRepository name: 'Document Types', icon: 'icon-folder', hasChildren: true, - isContainer: false, isFolder: true, }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/tree/document-type.tree.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/tree/document-type.tree.server.data-source.ts index 619ef7c489..0c1b601301 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/tree/document-type.tree.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/tree/document-type.tree.server.data-source.ts @@ -46,10 +46,9 @@ const getChildrenOf = (parentUnique: string | null) => { const mapper = (item: DocumentTypeTreeItemResponseModel): UmbDocumentTypeTreeItemModel => { return { unique: item.id, - parentUnique: item.parentId || null, + parentUnique: item.parent ? item.parent.id : null, name: item.name, entityType: item.isFolder ? UMB_DOCUMENT_TYPE_FOLDER_ENTITY_TYPE : UMB_DOCUMENT_TYPE_ENTITY_TYPE, - isContainer: item.isContainer, hasChildren: item.hasChildren, isFolder: item.isFolder, icon: item.icon, diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/tree/document-type.tree.store.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/tree/document-type.tree.store.ts index 490baed60a..4e464abdcf 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/tree/document-type.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/tree/document-type.tree.store.ts @@ -39,7 +39,6 @@ export class UmbDocumentTypeTreeStore extends UmbUniqueTreeStore { entityType: item.entityType, isElement: item.isElement, isFolder: false, - isContainer: false, hasChildren: false, }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/workspace/document-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/workspace/document-type-workspace.context.ts index 3701df5d0b..da4a783138 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/workspace/document-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/workspace/document-type-workspace.context.ts @@ -1,12 +1,9 @@ import { UmbDocumentTypeDetailRepository } from '../repository/detail/document-type-detail.repository.js'; import type { UmbDocumentTypeDetailModel } from '../types.js'; +import type { UmbContentTypeCompositionModel, UmbContentTypeSortModel } from '@umbraco-cms/backoffice/content-type'; import { UmbContentTypePropertyStructureManager } from '@umbraco-cms/backoffice/content-type'; -import type { - UmbSaveableWorkspaceContextInterface} from '@umbraco-cms/backoffice/workspace'; -import { - UmbEditableWorkspaceContextBase -} from '@umbraco-cms/backoffice/workspace'; -import type { ContentTypeCompositionModel, ContentTypeSortModel } from '@umbraco-cms/backoffice/backend-api'; +import type { UmbSaveableWorkspaceContextInterface } from '@umbraco-cms/backoffice/workspace'; +import { UmbEditableWorkspaceContextBase } from '@umbraco-cms/backoffice/workspace'; import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api'; import { UmbBooleanState } from '@umbraco-cms/backoffice/observable-api'; @@ -60,9 +57,9 @@ export class UmbDocumentTypeWorkspaceContext this.compositions = this.structure.ownerContentTypeObservablePart((data) => data?.compositions); // Document type specific: - this.allowedTemplateIds = this.structure.ownerContentTypeObservablePart((data) => data?.allowedTemplateIds); - this.defaultTemplateId = this.structure.ownerContentTypeObservablePart((data) => data?.defaultTemplateId); - this.cleanup = this.structure.ownerContentTypeObservablePart((data) => data?.defaultTemplateId); + this.allowedTemplateIds = this.structure.ownerContentTypeObservablePart((data) => data?.allowedTemplates); + this.defaultTemplateId = this.structure.ownerContentTypeObservablePart((data) => data?.defaultTemplate); + this.cleanup = this.structure.ownerContentTypeObservablePart((data) => data?.defaultTemplate); } getIsSorting() { @@ -112,19 +109,19 @@ export class UmbDocumentTypeWorkspaceContext setIsElement(isElement: boolean) { this.structure.updateOwnerContentType({ isElement }); } - setAllowedContentTypes(allowedContentTypes: Array) { + setAllowedContentTypes(allowedContentTypes: Array) { this.structure.updateOwnerContentType({ allowedContentTypes }); } - setCompositions(compositions: Array) { + setCompositions(compositions: Array) { this.structure.updateOwnerContentType({ compositions }); } // Document type specific: - setAllowedTemplateIds(allowedTemplateIds: Array) { - this.structure.updateOwnerContentType({ allowedTemplateIds }); + setAllowedTemplateIds(allowedTemplates: Array) { + this.structure.updateOwnerContentType({ allowedTemplates }); } - setDefaultTemplateId(defaultTemplateId: string) { - this.structure.updateOwnerContentType({ defaultTemplateId }); + setDefaultTemplateId(defaultTemplate: string) { + this.structure.updateOwnerContentType({ defaultTemplate }); } async create(parentUnique: string | null) { diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/workspace/views/templates/document-type-workspace-view-templates.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/workspace/views/templates/document-type-workspace-view-templates.element.ts index 4c73b41165..a7f63a1afc 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/workspace/views/templates/document-type-workspace-view-templates.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/workspace/views/templates/document-type-workspace-view-templates.element.ts @@ -31,7 +31,7 @@ export class UmbDocumentTypeWorkspaceViewTemplatesElement extends UmbLitElement this.#workspaceContext.defaultTemplateId, (defaultTemplateId) => { const oldValue = this._defaultTemplateId; - this._defaultTemplateId = defaultTemplateId; + this._defaultTemplate = defaultTemplateId; this.requestUpdate('_defaultTemplateId', oldValue); }, 'defaultTemplate', diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/components/input-document-granular-permission/input-document-granular-permission.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/components/input-document-granular-permission/input-document-granular-permission.element.ts index 13542f654a..4924a63706 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/components/input-document-granular-permission/input-document-granular-permission.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/components/input-document-granular-permission/input-document-granular-permission.element.ts @@ -1,16 +1,11 @@ +import { UmbDocumentItemRepository } from '../../repository/index.js'; import type { PropertyValueMap } from '@umbraco-cms/backoffice/external/lit'; import { css, html, customElement, property, state } from '@umbraco-cms/backoffice/external/lit'; import { FormControlMixin } from '@umbraco-cms/backoffice/external/uui'; -import type { - UmbModalManagerContext} from '@umbraco-cms/backoffice/modal'; -import { - UMB_MODAL_MANAGER_CONTEXT, - UMB_CONFIRM_MODAL, - UMB_DOCUMENT_PICKER_MODAL, -} from '@umbraco-cms/backoffice/modal'; +import type { UmbModalManagerContext } from '@umbraco-cms/backoffice/modal'; +import { UMB_MODAL_MANAGER_CONTEXT, UMB_CONFIRM_MODAL, UMB_DOCUMENT_PICKER_MODAL } from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import type { DocumentItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; -import { UmbDocumentRepository } from '@umbraco-cms/backoffice/document'; import { UmbChangeEvent } from '@umbraco-cms/backoffice/event'; import type { UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; import { splitStringToArray } from '@umbraco-cms/backoffice/utils'; @@ -37,7 +32,7 @@ export class UmbInputDocumentGranularPermissionElement extends FormControlMixin( @state() private _items?: Array; - #documentRepository = new UmbDocumentRepository(this); + #documentItemRepository = new UmbDocumentItemRepository(this); #modalContext?: UmbModalManagerContext; #pickedItemsObserver?: UmbObserverController>; @@ -58,7 +53,7 @@ export class UmbInputDocumentGranularPermissionElement extends FormControlMixin( async #observePickedDocuments() { this.#pickedItemsObserver?.destroy(); - const { asObservable } = await this.#documentRepository.requestItems(this._selectedIds); + const { asObservable } = await this.#documentItemRepository.requestItems(this._selectedIds); this.#pickedItemsObserver = this.observe(asObservable(), (items) => (this._items = items)); } diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/components/input-document/input-document.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/components/input-document/input-document.element.ts index c2877f68ed..eab713c6e5 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/components/input-document/input-document.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/components/input-document/input-document.element.ts @@ -140,7 +140,7 @@ export class UmbInputDocumentElement extends FormControlMixin(UmbLitElement) { #pickableFilter: (item: DocumentTreeItemResponseModel) => boolean = (item) => { if (this.allowedContentTypeIds && this.allowedContentTypeIds.length > 0) { - return this.allowedContentTypeIds.includes(item.contentTypeId); + return this.allowedContentTypeIds.includes(item.documentType.id); } return true; }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/document-tree.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/document-tree.server.data-source.ts index 7dc23fb3e6..86ae929ee8 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/document-tree.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/document-tree.server.data-source.ts @@ -46,19 +46,14 @@ const getChildrenOf = (parentUnique: string | null) => { const mapper = (item: DocumentTreeItemResponseModel): UmbDocumentTreeItemModel => { return { unique: item.id, - parentUnique: item.parentId ? item.parentId : null, - name: item.name, + parentUnique: item.parent ? item.parent.id : null, entityType: UMB_DOCUMENT_ENTITY_TYPE, noAccess: item.noAccess, isTrashed: item.isTrashed, - isContainer: item.isContainer, hasChildren: item.hasChildren, isProtected: item.isProtected, - isPublished: item.isPublished, - isEdited: item.isEdited, - contentTypeId: item.contentTypeId, + documentType: item.documentType, variants: item.variants, - icon: item.icon, isFolder: false, }; }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/types.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/types.ts index 8f392c9aa7..f79593decf 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/types.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/types.ts @@ -1,5 +1,5 @@ -import { UmbDocumentEntityType } from './entity.js'; -import { ContentStateModel, ContentUrlInfoModel, DocumentValueModel } from '@umbraco-cms/backoffice/backend-api'; +import type { UmbDocumentEntityType } from './entity.js'; +import type { ContentStateModel, ContentUrlInfoModel, DocumentValueModel } from '@umbraco-cms/backoffice/backend-api'; export interface UmbDocumentDetailModel { contentTypeId: string; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts index ca039123c6..9bb08d754a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts @@ -1,7 +1,7 @@ -import { UmbDocumentRepository } from '../repository/document.repository.js'; import { UmbDocumentTypeDetailRepository } from '../../document-types/repository/detail/document-type-detail.repository.js'; import { UmbDocumentPropertyDataContext } from '../property-dataset-context/document-property-dataset-context.js'; import { UMB_DOCUMENT_ENTITY_TYPE } from '../entity.js'; +import { UmbDocumentDetailRepository } from '../repository/index.js'; import { UmbVariantId } from '@umbraco-cms/backoffice/variant'; import { UmbContentTypePropertyStructureManager } from '@umbraco-cms/backoffice/content-type'; import { @@ -20,7 +20,7 @@ export class UmbDocumentWorkspaceContext implements UmbVariantableWorkspaceContextInterface, UmbPublishableWorkspaceContextInterface { // - public readonly repository: UmbDocumentRepository = new UmbDocumentRepository(this); + public readonly repository: UmbDocumentDetailRepository = new UmbDocumentDetailRepository(this); /** * The document is the current state/draft version of the document. */ @@ -31,11 +31,11 @@ export class UmbDocumentWorkspaceContext } readonly unique = this.#currentData.asObservablePart((data) => data?.id); - readonly contentTypeId = this.#currentData.asObservablePart((data) => data?.contentTypeId); + readonly contentTypeId = this.#currentData.asObservablePart((data) => data?.documentType.id); readonly variants = this.#currentData.asObservablePart((data) => data?.variants || []); readonly urls = this.#currentData.asObservablePart((data) => data?.urls || []); - readonly templateId = this.#currentData.asObservablePart((data) => data?.templateId || null); + readonly templateId = this.#currentData.asObservablePart((data) => data?.template?.id || null); readonly structure = new UmbContentTypePropertyStructureManager(this, new UmbDocumentTypeDetailRepository(this)); readonly splitView = new UmbWorkspaceSplitViewManager(); @@ -51,8 +51,8 @@ export class UmbDocumentWorkspaceContext */ } - async load(entityId: string) { - this.#getDataPromise = this.repository.requestById(entityId); + async load(unique: string) { + this.#getDataPromise = this.repository.requestByUnique(unique); const { data } = await this.#getDataPromise; if (!data) return undefined; @@ -62,8 +62,8 @@ export class UmbDocumentWorkspaceContext return data || undefined; } - async create(documentTypeKey: string, parentId: string | null) { - this.#getDataPromise = this.repository.createScaffold(documentTypeKey, { parentId }); + async create(unique: string, parentUnique: string | null) { + this.#getDataPromise = this.repository.createScaffold(unique, { parentUnique }); const { data } = await this.#getDataPromise; if (!data) return undefined; @@ -91,7 +91,7 @@ export class UmbDocumentWorkspaceContext } getContentTypeId() { - return this.getData()?.contentTypeId; + return this.getData()?.documentType.id; } variantById(variantId: UmbVariantId) { diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/views/design/media-type-workspace-view-edit-properties.element.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/views/design/media-type-workspace-view-edit-properties.element.ts index 4282822402..9499997c16 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/views/design/media-type-workspace-view-edit-properties.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/views/design/media-type-workspace-view-edit-properties.element.ts @@ -8,7 +8,10 @@ import { UmbContentTypePropertyStructureHelper } from '@umbraco-cms/backoffice/c import type { UmbSorterConfig } from '@umbraco-cms/backoffice/sorter'; import { UmbSorterController } from '@umbraco-cms/backoffice/sorter'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import type { MediaTypePropertyTypeResponseModel, PropertyTypeModelBaseModel } from '@umbraco-cms/backoffice/backend-api'; +import type { + MediaTypePropertyTypeResponseModel, + PropertyTypeModelBaseModel, +} from '@umbraco-cms/backoffice/backend-api'; import { UMB_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/workspace'; import { UMB_PROPERTY_SETTINGS_MODAL, UmbModalRouteRegistrationController } from '@umbraco-cms/backoffice/modal'; @@ -172,18 +175,18 @@ export class UmbMediaTypeWorkspaceViewEditPropertiesElement extends UmbLitElemen return html`
${repeat( this._propertyStructure, - (property) => property.id ?? '' + property.containerId ?? '' + property.sortOrder ?? '', + (property) => property.id ?? '' + property.container.id ?? '' + property.sortOrder ?? '', (property) => { // Note: This piece might be moved into the property component const inheritedFromMedia = this._ownerMediaTypes?.find( - (types) => types.containers?.find((containers) => containers.id === property.containerId), + (types) => types.containers?.find((containers) => containers.id === property.container.id), ); return html` { diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/views/design/media-type-workspace-view-edit-property.element.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/views/design/media-type-workspace-view-edit-property.element.ts index cd88dc2b49..75975d1824 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/views/design/media-type-workspace-view-edit-property.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/views/design/media-type-workspace-view-edit-property.element.ts @@ -1,10 +1,9 @@ import { UmbDataTypeDetailRepository } from '@umbraco-cms/backoffice/data-type'; -import type { UUIInputElement} from '@umbraco-cms/backoffice/external/uui'; +import type { UUIInputElement } from '@umbraco-cms/backoffice/external/uui'; import { UUIInputEvent } from '@umbraco-cms/backoffice/external/uui'; import { css, html, customElement, property, state, ifDefined, nothing } from '@umbraco-cms/backoffice/external/lit'; import type { PropertyTypeModelBaseModel } from '@umbraco-cms/backoffice/backend-api'; -import type { - UmbConfirmModalData} from '@umbraco-cms/backoffice/modal'; +import type { UmbConfirmModalData } from '@umbraco-cms/backoffice/modal'; import { UMB_CONFIRM_MODAL, UMB_MODAL_MANAGER_CONTEXT, @@ -38,7 +37,7 @@ export class UmbMediaTypeWorkspacePropertyElement extends UmbLitElement { const oldValue = this._property; this._property = value; this.#modalRegistration.setUniquePathValue('propertyId', value?.id?.toString()); - this.setDataType(this._property?.dataTypeId); + this.setDataType(this._property?.dataType.id); this.requestUpdate('property', oldValue); } diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/views/design/media-type-workspace-view-edit-tab.element.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/views/design/media-type-workspace-view-edit-tab.element.ts index bbef256383..e7aa540062 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/views/design/media-type-workspace-view-edit-tab.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/views/design/media-type-workspace-view-edit-tab.element.ts @@ -6,7 +6,7 @@ import { UmbContentTypeContainerStructureHelper } from '@umbraco-cms/backoffice/ import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import type { PropertyTypeContainerModelBaseModel } from '@umbraco-cms/backoffice/backend-api'; import { UMB_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/workspace'; -import type { UmbSorterConfig} from '@umbraco-cms/backoffice/sorter'; +import type { UmbSorterConfig } from '@umbraco-cms/backoffice/sorter'; import { UmbSorterController } from '@umbraco-cms/backoffice/sorter'; import './media-type-workspace-view-edit-properties.element.js'; @@ -172,7 +172,11 @@ export class UmbMediaTypeWorkspaceViewEditTabElement extends UmbLitElement { value=${group.name ?? ''} @change=${(e: InputEvent) => { const newName = (e.target as HTMLInputElement).value; - this._groupStructureHelper.updateContainerName(group.id!, group.parentId ?? null, newName); + this._groupStructureHelper.updateContainerName( + group.id!, + group.parent?.id ?? null, + newName, + ); }}>
diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/templates/modals/query-builder/query-builder.element.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/templates/modals/query-builder/query-builder.element.ts index 559bea366d..f04610d28c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/templates/modals/query-builder/query-builder.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/templates/modals/query-builder/query-builder.element.ts @@ -3,19 +3,18 @@ import { localizePropertyType, localizeSort } from './utils.js'; import type { UmbQueryBuilderFilterElement } from './query-builder-filter.element.js'; import type { UUIComboboxListElement } from '@umbraco-cms/backoffice/external/uui'; import { css, html, customElement, state, query, queryAll, ifDefined } from '@umbraco-cms/backoffice/external/lit'; -import type { - UmbModalManagerContext} from '@umbraco-cms/backoffice/modal'; +import type { UmbModalManagerContext } from '@umbraco-cms/backoffice/modal'; import { UmbModalBaseElement, UMB_DOCUMENT_PICKER_MODAL, - UMB_MODAL_MANAGER_CONTEXT + UMB_MODAL_MANAGER_CONTEXT, } from '@umbraco-cms/backoffice/modal'; import type { TemplateQueryExecuteModel, TemplateQueryResultResponseModel, TemplateQuerySettingsResponseModel, } from '@umbraco-cms/backoffice/backend-api'; -import { UmbDocumentRepository } from '@umbraco-cms/backoffice/document'; +import { UmbDocumentItemRepository } from '@umbraco-cms/backoffice/document'; import './query-builder-filter.element.js'; export interface TemplateQueryBuilderModalData { @@ -57,14 +56,14 @@ export default class UmbChooseInsertTypeModalElement extends UmbModalBaseElement @state() private _defaultSortDirection: SortOrder = SortOrder.Ascending; - #documentRepository: UmbDocumentRepository; + #documentItemRepository: UmbDocumentItemRepository; #modalManagerContext?: UmbModalManagerContext; #templateRepository: UmbTemplateRepository; constructor() { super(); this.#templateRepository = new UmbTemplateRepository(this); - this.#documentRepository = new UmbDocumentRepository(this); + this.#documentItemRepository = new UmbDocumentItemRepository(this); this.consumeContext(UMB_MODAL_MANAGER_CONTEXT, (instance) => { this.#modalManagerContext = instance; @@ -127,7 +126,7 @@ export default class UmbChooseInsertTypeModalElement extends UmbModalBaseElement }; async #getDocumentItem(ids: string[]) { - const { data, error } = await this.#documentRepository.requestItems(ids); + const { data, error } = await this.#documentItemRepository.requestItems(ids); if (data) { this._selectedRootContentName = data[0].name; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/templates/tree/template-tree.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/templates/tree/template-tree.repository.ts index 6909401eb6..149ec17dc9 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/templates/tree/template-tree.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/templates/tree/template-tree.repository.ts @@ -21,7 +21,6 @@ export class UmbTemplateTreeRepository name: 'Templates', icon: 'icon-folder', hasChildren: true, - isContainer: false, isFolder: true, }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/templates/tree/template-tree.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/templates/tree/template-tree.server.data-source.ts index 043962734e..6988211379 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/templates/tree/template-tree.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/templates/tree/template-tree.server.data-source.ts @@ -14,7 +14,7 @@ import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; * @implements {UmbTreeDataSource} */ export class UmbTemplateTreeServerDataSource extends UmbTreeServerDataSourceBase< - EntityTreeItemResponseModel, + NamedEntityTreeItemResponseModel, UmbTemplateTreeItemModel > { /**