diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/types.gen.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/types.gen.ts index 072eb0592d..b7dd5aa8e8 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/types.gen.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/types.gen.ts @@ -612,7 +612,7 @@ export type DocumentBlueprintItemResponseModel = { }; export type DocumentBlueprintResponseModel = { - values: Array<(DocumentValueModel)>; + values: Array<(DocumentValueResponseModel)>; variants: Array<(DocumentVariantResponseModel)>; id: string; documentType: (DocumentTypeReferenceResponseModel); @@ -628,7 +628,7 @@ export type DocumentBlueprintTreeItemResponseModel = { }; export type DocumentCollectionResponseModel = { - values: Array<(DocumentValueModel)>; + values: Array<(DocumentValueResponseModel)>; variants: Array<(DocumentVariantResponseModel)>; id: string; creator?: (string) | null; @@ -684,7 +684,7 @@ export type DocumentReferenceResponseModel = { }; export type DocumentResponseModel = { - values: Array<(DocumentValueModel)>; + values: Array<(DocumentValueResponseModel)>; variants: Array<(DocumentVariantResponseModel)>; id: string; documentType: (DocumentTypeReferenceResponseModel); @@ -834,6 +834,14 @@ export type DocumentValueModel = { value?: unknown; }; +export type DocumentValueResponseModel = { + culture?: (string) | null; + segment?: (string) | null; + alias: string; + value?: unknown; + editorAlias: string; +}; + export type DocumentVariantItemResponseModel = { name: string; culture?: (string) | null; @@ -875,7 +883,7 @@ export type DocumentVersionItemResponseModel = { }; export type DocumentVersionResponseModel = { - values: Array<(DocumentValueModel)>; + values: Array<(DocumentValueResponseModel)>; variants: Array<(DocumentVariantResponseModel)>; id: string; documentType: (DocumentTypeReferenceResponseModel); @@ -1156,7 +1164,7 @@ export type ManifestResponseModel = { }; export type MediaCollectionResponseModel = { - values: Array<(MediaValueModel)>; + values: Array<(MediaValueResponseModel)>; variants: Array<(MediaVariantResponseModel)>; id: string; creator?: (string) | null; @@ -1195,7 +1203,7 @@ export type MediaReferenceResponseModel = { }; export type MediaResponseModel = { - values: Array<(MediaValueModel)>; + values: Array<(MediaValueResponseModel)>; variants: Array<(MediaVariantResponseModel)>; id: string; urls: Array<(MediaUrlInfoModel)>; @@ -1325,6 +1333,14 @@ export type MediaValueModel = { value?: unknown; }; +export type MediaValueResponseModel = { + culture?: (string) | null; + segment?: (string) | null; + alias: string; + value?: unknown; + editorAlias: string; +}; + export type MediaVariantRequestModel = { culture?: (string) | null; segment?: (string) | null; @@ -1369,7 +1385,7 @@ export enum MemberKindModel { } export type MemberResponseModel = { - values: Array<(MemberValueModel)>; + values: Array<(MemberValueResponseModel)>; variants: Array<(MemberVariantResponseModel)>; id: string; email: string; @@ -1479,6 +1495,14 @@ export type MemberValueModel = { value?: unknown; }; +export type MemberValueResponseModel = { + culture?: (string) | null; + segment?: (string) | null; + alias: string; + value?: unknown; + editorAlias: string; +}; + export type MemberVariantRequestModel = { culture?: (string) | null; segment?: (string) | null; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/document-blueprint/document-blueprint.data.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/document-blueprint/document-blueprint.data.ts index 46a252aeeb..0ca71a3f1c 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/document-blueprint/document-blueprint.data.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/document-blueprint/document-blueprint.data.ts @@ -36,6 +36,7 @@ export const data: Array = [ ], values: [ { + editorAlias: 'Umbraco.TextBox', alias: 'prop1', culture: null, segment: null, diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/document-blueprint/document-blueprint.db.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/document-blueprint/document-blueprint.db.ts index 9166a603dc..9ad279f722 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/document-blueprint/document-blueprint.db.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/document-blueprint/document-blueprint.db.ts @@ -12,6 +12,7 @@ import type { DocumentItemResponseModel, DocumentResponseModel, DocumentTreeItemResponseModel, + DocumentValueResponseModel, } from '@umbraco-cms/backoffice/external/backend-api'; export class UmbDocumentBlueprintMockDB extends UmbEntityMockDbBase { @@ -65,7 +66,7 @@ const createMockDocumentBlueprintMapper = (request: CreateDocumentRequestModel): isTrashed: false, noAccess: false, parent: request.parent, - values: request.values, + values: request.values as DocumentValueResponseModel[], variants: request.variants.map((variantRequest) => { return { culture: variantRequest.culture, diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/document/document.data.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/document/document.data.ts index 2e3dce12d4..821f1f2012 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/document/document.data.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/document/document.data.ts @@ -39,6 +39,7 @@ export const data: Array = [ ], values: [ { + editorAlias: 'Umbraco.TextBox', alias: 'prop1', culture: null, segment: null, @@ -66,6 +67,7 @@ export const data: Array = [ isTrashed: false, values: [ { + editorAlias: 'Umbraco.RichText', alias: 'richTextEditor', culture: null, segment: null, @@ -83,6 +85,7 @@ export const data: Array = [ }, }, { + editorAlias: 'Umbraco.TextArea', alias: 'codeEditor', culture: null, segment: null, @@ -113,30 +116,35 @@ export const data: Array = [

`, }, { + editorAlias: 'Umbraco.TextBox', alias: 'email', culture: null, segment: null, value: null, }, { + editorAlias: 'Umbraco.ColorPicker', alias: 'colorPicker', culture: null, segment: null, value: null, }, { + editorAlias: 'Umbraco.MultiNodeTreePicker', alias: 'contentPicker', culture: null, segment: null, value: null, }, { + editorAlias: 'Umbraco.ColorPicker.EyeDropper', alias: 'eyeDropper', culture: null, segment: null, value: null, }, { + editorAlias: 'Umbraco.MultiUrlPicker', alias: 'multiUrlPicker', culture: 'en-US', segment: null, @@ -153,12 +161,14 @@ export const data: Array = [ ], }, { + editorAlias: 'Umbraco.MultiUrlPicker', alias: 'multiUrlPicker', culture: 'da-dk', segment: null, value: null, }, { + editorAlias: 'Umbraco.MultiNodeTreePicker', alias: 'multiNodeTreePicker', culture: null, segment: null, @@ -166,84 +176,98 @@ export const data: Array = [ 'all-property-editors-document-id,c05da24d-7740-447b-9cdc-bd8ce2172e38,fd56a0b5-01a0-4da2-b428-52773bfa9cc4', }, { + editorAlias: 'Umbraco.DateTime', alias: 'datePicker', culture: null, segment: null, value: '2023-12-24', }, { + editorAlias: 'Umbraco.DateTime', alias: 'datePickerTime', culture: null, segment: null, value: '2023-12-24 14:52', }, { + editorAlias: 'Umbraco.DateTime', alias: 'time', culture: null, segment: null, value: '14:52:00', }, { + editorAlias: 'Umbraco.EmailAddress', alias: 'email', culture: null, segment: null, value: null, }, { + editorAlias: 'Umbraco.TextBox', alias: 'textBox', culture: null, segment: null, value: null, }, { + editorAlias: 'Umbraco.DropDown.Flexible', alias: 'dropdown', culture: null, segment: null, value: null, }, { + editorAlias: 'Umbraco.TextArea', alias: 'textArea', culture: null, segment: null, value: null, }, { + editorAlias: 'Umbraco.Slider', alias: 'slider', culture: null, segment: null, value: null, }, { + editorAlias: 'Umbraco.TrueFalse', alias: 'toggle', culture: null, segment: null, value: null, }, { + editorAlias: 'Umbraco.Tags', alias: 'tags', culture: null, segment: null, value: null, }, { + editorAlias: 'Umbraco.MarkdownEditor', alias: 'markdownEditor', culture: null, segment: null, value: null, }, { + editorAlias: 'Umbraco.RadioButtonList', alias: 'radioButtonList', culture: null, segment: null, value: null, }, { + editorAlias: 'Umbraco.CheckBoxList', alias: 'checkboxList', culture: null, segment: null, value: null, }, { + editorAlias: 'Umbraco.BlockList', alias: 'blockList', culture: null, segment: null, @@ -298,12 +322,14 @@ export const data: Array = [ }, }, { + editorAlias: 'Umbraco.MediaPicker3', alias: 'mediaPicker', culture: null, segment: null, value: null, }, { + editorAlias: 'Umbraco.ImageCropper', alias: 'imageCropper', culture: null, segment: null, @@ -384,12 +410,14 @@ export const data: Array = [ }, }, { + editorAlias: 'Umbraco.UploadField', alias: 'uploadField', culture: null, segment: null, value: null, }, { + editorAlias: 'Umbraco.BlockGrid', alias: 'blockGrid', culture: null, segment: null, @@ -473,60 +501,70 @@ export const data: Array = [ }, }, { + editorAlias: 'Umbraco.BlockGrid', alias: 'blockGrid', culture: null, segment: null, value: null, }, { + editorAlias: '', alias: 'numberRange', culture: null, segment: null, value: null, }, { + editorAlias: '', alias: 'orderDirection', culture: null, segment: null, value: null, }, { + editorAlias: '', alias: 'overlaySize', culture: null, segment: null, value: null, }, { + editorAlias: 'Umbraco.Label', alias: 'label', culture: null, segment: null, value: null, }, { + editorAlias: 'Umbraco.Integer', alias: 'integer', culture: null, segment: null, value: null, }, { + editorAlias: 'Umbraco.Decimal', alias: 'decimal', culture: null, segment: null, value: null, }, { + editorAlias: 'Umbraco.MemberPicker', alias: 'memberPicker', culture: null, segment: null, value: null, }, { + editorAlias: 'Umbraco.MemberGroupPicker', alias: 'memberGroupPicker', culture: null, segment: null, value: null, }, { + editorAlias: 'Umbraco.UserPicker', alias: 'userPicker', culture: null, segment: null, @@ -574,60 +612,70 @@ export const data: Array = [ isTrashed: false, values: [ { + editorAlias: 'Umbraco.TextBox', culture: null, segment: null, alias: 'masterText', value: 'i have a master text', }, { + editorAlias: 'Umbraco.TextBox', culture: null, segment: null, alias: 'pageTitle', value: 'with a page title', }, { + editorAlias: 'Umbraco.TextArea', culture: null, segment: null, alias: 'blogPostText', value: 'My first blog post', }, { + editorAlias: 'Umbraco.TextBox', culture: 'en-US', segment: null, alias: 'blogTextStringUnderMasterTab', value: 'in the master tab', }, { + editorAlias: 'Umbraco.TextBox', culture: 'en-US', segment: null, alias: 'blogTextStringUnderGroupUnderMasterTab', value: 'which is under another group in the tab', }, { + editorAlias: 'Umbraco.TextBox', culture: 'da-dk', segment: null, alias: 'blogTextStringUnderMasterTab', value: 'på master dokument tab B', }, { + editorAlias: 'Umbraco.TextBox', culture: 'da-dk', segment: null, alias: 'blogTextStringUnderGroupUnderMasterTab', value: 'denne er under en anden gruppe i tab B', }, { + editorAlias: 'Umbraco.TextBox', culture: 'no-no', segment: null, alias: 'blogTextStringUnderMasterTab', value: 'Norsk på master dokument tab B', }, { + editorAlias: 'Umbraco.TextBox', culture: 'no-no', segment: null, alias: 'blogTextStringUnderGroupUnderMasterTab', value: 'Norsk denne er under en anden gruppe i tab B', }, { + editorAlias: 'Umbraco.TextBox', culture: null, segment: null, alias: 'localBlogTabString', @@ -697,48 +745,56 @@ export const data: Array = [ isTrashed: false, values: [ { + editorAlias: 'Umbraco.TextBox', culture: null, segment: null, alias: 'masterText', value: 'i have a master text B', }, { + editorAlias: 'Umbraco.TextBox', culture: null, segment: null, alias: 'pageTitle', value: 'with a page title B', }, { + editorAlias: 'Umbraco.TextBox', culture: null, segment: null, alias: 'blogPostText', value: 'My first blog post B', }, { + editorAlias: 'Umbraco.TextBox', culture: 'en-US', segment: null, alias: 'blogTextStringUnderMasterTab', value: 'in the master tab B', }, { + editorAlias: 'Umbraco.TextBox', culture: 'en-US', segment: null, alias: 'blogTextStringUnderGroupUnderMasterTab', value: 'which is under another group in the tab B', }, { + editorAlias: 'Umbraco.TextBox', culture: 'da-dk', segment: null, alias: 'blogTextStringUnderMasterTab', value: 'på master dokument tab B', }, { + editorAlias: 'Umbraco.TextBox', culture: 'da-dk', segment: null, alias: 'blogTextStringUnderGroupUnderMasterTab', value: 'denne er under en anden gruppe i tab B', }, { + editorAlias: 'Umbraco.TextBox', culture: null, segment: null, alias: 'localBlogTabString', @@ -789,12 +845,14 @@ export const data: Array = [ ], values: [ { + editorAlias: 'Umbraco.MultiNodeTreePicker', alias: 'multiNodeTreePicker', culture: null, segment: null, value: null, }, { + editorAlias: 'Umbraco.ListView', alias: 'listView', culture: null, segment: null, diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/document/document.db.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/document/document.db.ts index d9a36ba11b..5cace7dd50 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/document/document.db.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/document/document.db.ts @@ -18,6 +18,7 @@ import type { DocumentTreeItemResponseModel, DomainsResponseModel, DocumentConfigurationResponseModel, + DocumentValueResponseModel, } from '@umbraco-cms/backoffice/external/backend-api'; export class UmbDocumentMockDB extends UmbEntityMockDbBase { @@ -89,7 +90,8 @@ const createMockDocumentMapper = (request: CreateDocumentRequestModel): UmbMockD isTrashed: false, noAccess: false, parent: request.parent, - values: request.values, + // TODO: Currently trusting we did send the editorAlias to the create end point: + values: request.values as DocumentValueResponseModel[], variants: request.variants.map((variantRequest) => { return { culture: variantRequest.culture, diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/media/media.data.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/media/media.data.ts index 012ab54620..b6012a0494 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/media/media.data.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/media/media.data.ts @@ -19,6 +19,7 @@ export const data: Array = [ }, values: [ { + editorAlias: 'Umbraco.TextBox', alias: 'myMediaHeadline', value: 'The daily life at Umbraco HQ', }, @@ -47,6 +48,7 @@ export const data: Array = [ }, values: [ { + editorAlias: 'Umbraco.TextBox', alias: 'myMediaDescription', value: 'Every day, a rabbit in a military costume greets me at the front door', }, @@ -123,6 +125,7 @@ export const data: Array = [ }, values: [ { + editorAlias: 'Umbraco.TextBox', alias: 'myMediaDescription', value: 'Every day, a rabbit in a military costume greets me at the front door', }, @@ -151,6 +154,7 @@ export const data: Array = [ }, values: [ { + editorAlias: 'Umbraco.TextBox', alias: 'myMediaDescription', value: 'Every day, a rabbit in a military costume greets me at the front door', }, @@ -179,6 +183,7 @@ export const data: Array = [ }, values: [ { + editorAlias: 'Umbraco.TextBox', alias: 'myMediaDescription', value: 'Every day, a rabbit in a military costume greets me at the front door', }, @@ -207,6 +212,7 @@ export const data: Array = [ }, values: [ { + editorAlias: 'Umbraco.TextBox', alias: 'myMediaDescription', value: 'Every day, a rabbit in a military costume greets me at the front door', }, diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/media/media.db.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/media/media.db.ts index e0a6337152..f8e81cd0dc 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/media/media.db.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/media/media.db.ts @@ -14,6 +14,7 @@ import type { MediaItemResponseModel, MediaResponseModel, MediaTreeItemResponseModel, + MediaValueResponseModel, } from '@umbraco-cms/backoffice/external/backend-api'; export class UmbMediaMockDB extends UmbEntityMockDbBase { @@ -64,7 +65,8 @@ const createMockMediaMapper = (request: CreateMediaRequestModel): UmbMockMediaMo isTrashed: false, noAccess: false, parent: request.parent, - values: request.values, + // We trust blindly that we send of the editorAlias to the create end point. + values: request.values as MediaValueResponseModel[], variants: request.variants.map((variantRequest) => { return { culture: variantRequest.culture, diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/member/member.db.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/member/member.db.ts index ca5fb77e98..77f41e2cde 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/member/member.db.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/member/member.db.ts @@ -11,6 +11,7 @@ import { type CreateMemberRequestModel, type MemberItemResponseModel, type MemberResponseModel, + type MemberValueResponseModel, } from '@umbraco-cms/backoffice/external/backend-api'; class UmbMemberMockDB extends UmbEntityMockDbBase { @@ -46,7 +47,7 @@ const createDetailMockMapper = (request: CreateMemberRequestModel): UmbMockMembe icon: memberType.icon, }, username: request.username, - values: request.values, + values: request.values as MemberValueResponseModel[], variants: request.variants.map((variantRequest) => { return { culture: variantRequest.culture, diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/detail/document-blueprint-detail.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/detail/document-blueprint-detail.server.data-source.ts index 8d211bad4c..acb3437977 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/detail/document-blueprint-detail.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/detail/document-blueprint-detail.server.data-source.ts @@ -92,6 +92,7 @@ export class UmbDocumentBlueprintServerDataSource implements UmbDetailDataSource unique: data.id, values: data.values.map((value) => { return { + editorAlias: value.editorAlias, alias: value.alias, culture: value.culture || null, segment: value.segment || null, diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/workspace/document-blueprint-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/workspace/document-blueprint-workspace.context.ts index 214e9ba02e..7098648af1 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/workspace/document-blueprint-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/workspace/document-blueprint-workspace.context.ts @@ -292,7 +292,17 @@ export class UmbDocumentBlueprintWorkspaceContext ) { if (!variantId) throw new Error('VariantId is missing'); - const entry = { ...variantId.toObject(), alias, value }; + const property = await this.structure.getPropertyStructureByAlias(alias); + + if (!property) { + throw new Error(`Property alias "${alias}" not found.`); + } + + //const dataType = await this.#dataTypeItemManager.getItemByUnique(property.dataType.unique); + //const editorAlias = dataType.editorAlias; + const editorAlias = 'Umbraco.TextBox'; + + const entry = { ...variantId.toObject(), alias, editorAlias, value }; const currentData = this.#currentData.value; if (currentData) { const values = appendToFrozenArray( diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/detail/document-detail.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/detail/document-detail.server.data-source.ts index ea03ccd083..46708951d5 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/detail/document-detail.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/detail/document-detail.server.data-source.ts @@ -92,6 +92,7 @@ export class UmbDocumentServerDataSource implements UmbDetailDataSource { return { + editorAlias: value.editorAlias, alias: value.alias, culture: value.culture || null, segment: value.segment || null, 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 b44d1dd5ff..07d89d152d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts @@ -414,6 +414,7 @@ export class UmbDocumentWorkspaceContext } async setPropertyValue(alias: string, value: ValueType, variantId?: UmbVariantId) { variantId ??= UmbVariantId.CreateInvariant(); + //const property = await this.structure.getPropertyStructureByAlias(alias); const entry = { ...variantId.toObject(), alias, value } as UmbDocumentValueModel; const currentData = this.getData(); diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/dropzone/dropzone-manager.class.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/dropzone/dropzone-manager.class.ts index 8e397f05cd..e075925700 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media/dropzone/dropzone-manager.class.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/dropzone/dropzone-manager.class.ts @@ -224,6 +224,7 @@ export class UmbDropzoneManager extends UmbControllerBase { if (upload.status === TemporaryFileStatus.SUCCESS) { // Upload successful. Create media item. + // TODO: Use a scaffolding feature to ensure consistency. [NL] const preset: Partial = { unique: file.unique, mediaType: { @@ -241,6 +242,8 @@ export class UmbDropzoneManager extends UmbControllerBase { ], values: [ { + // We do not need to parse the right editorAlias here, because the server does not read it. If we need to parse it we would need to load the contentType to make this happen properly. [NL] + //editorAlias: null as any, alias: 'umbracoFile', value: { temporaryFileId: upload.temporaryUnique }, culture: null, 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 52599ade06..f45faaa702 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/media-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/media-workspace.context.ts @@ -296,7 +296,17 @@ export class UmbMediaWorkspaceContext ) { if (!variantId) throw new Error('VariantId is missing'); - const entry = { ...variantId.toObject(), alias, value }; + const property = await this.structure.getPropertyStructureByAlias(alias); + + if (!property) { + throw new Error(`Property alias "${alias}" not found.`); + } + + //const dataType = await this.#dataTypeItemManager.getItemByUnique(property.dataType.unique); + //const editorAlias = dataType.editorAlias; + const editorAlias = 'Umbraco.TextBox'; + + const entry = { ...variantId.toObject(), alias, editorAlias, value }; const currentData = this.#currentData.value; if (currentData) { const values = appendToFrozenArray( diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/repository/detail/member-detail.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/repository/detail/member-detail.server.data-source.ts index 976a069842..674205460c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/repository/detail/member-detail.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/repository/detail/member-detail.server.data-source.ts @@ -100,6 +100,7 @@ export class UmbMemberServerDataSource implements UmbDetailDataSource { return { + editorAlias: value.editorAlias, culture: value.culture || null, segment: value.segment || null, alias: value.alias, diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/member-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/member-workspace.context.ts index fce275292b..0bee716008 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/member-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/member/member-workspace.context.ts @@ -269,7 +269,17 @@ export class UmbMemberWorkspaceContext ) { variantId ??= UmbVariantId.CreateInvariant(); - const entry = { ...variantId.toObject(), alias, value }; + const property = await this.structure.getPropertyStructureByAlias(alias); + + if (!property) { + throw new Error(`Property alias "${alias}" not found.`); + } + + //const dataType = await this.#dataTypeItemManager.getItemByUnique(property.dataType.unique); + //const editorAlias = dataType.editorAlias; + const editorAlias = 'Umbraco.TextBox'; + + const entry = { ...variantId.toObject(), alias, editorAlias, value }; const currentData = this.getData(); if (currentData) { const values = appendToFrozenArray(