Merge branch 'main' into v15/feature/collection-kind-workspace-view

This commit is contained in:
Mads Rasmussen
2024-09-21 11:09:43 +02:00
committed by GitHub
16 changed files with 146 additions and 14 deletions

View File

@@ -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;

View File

@@ -36,6 +36,7 @@ export const data: Array<UmbMockDocumentBlueprintModel> = [
],
values: [
{
editorAlias: 'Umbraco.TextBox',
alias: 'prop1',
culture: null,
segment: null,

View File

@@ -12,6 +12,7 @@ import type {
DocumentItemResponseModel,
DocumentResponseModel,
DocumentTreeItemResponseModel,
DocumentValueResponseModel,
} from '@umbraco-cms/backoffice/external/backend-api';
export class UmbDocumentBlueprintMockDB extends UmbEntityMockDbBase<UmbMockDocumentBlueprintModel> {
@@ -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,

View File

@@ -39,6 +39,7 @@ export const data: Array<UmbMockDocumentModel> = [
],
values: [
{
editorAlias: 'Umbraco.TextBox',
alias: 'prop1',
culture: null,
segment: null,
@@ -66,6 +67,7 @@ export const data: Array<UmbMockDocumentModel> = [
isTrashed: false,
values: [
{
editorAlias: 'Umbraco.RichText',
alias: 'richTextEditor',
culture: null,
segment: null,
@@ -83,6 +85,7 @@ export const data: Array<UmbMockDocumentModel> = [
},
},
{
editorAlias: 'Umbraco.TextArea',
alias: 'codeEditor',
culture: null,
segment: null,
@@ -113,30 +116,35 @@ export const data: Array<UmbMockDocumentModel> = [
</p>`,
},
{
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<UmbMockDocumentModel> = [
],
},
{
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<UmbMockDocumentModel> = [
'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<UmbMockDocumentModel> = [
},
},
{
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<UmbMockDocumentModel> = [
},
},
{
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<UmbMockDocumentModel> = [
},
},
{
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<UmbMockDocumentModel> = [
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<UmbMockDocumentModel> = [
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<UmbMockDocumentModel> = [
],
values: [
{
editorAlias: 'Umbraco.MultiNodeTreePicker',
alias: 'multiNodeTreePicker',
culture: null,
segment: null,
value: null,
},
{
editorAlias: 'Umbraco.ListView',
alias: 'listView',
culture: null,
segment: null,

View File

@@ -18,6 +18,7 @@ import type {
DocumentTreeItemResponseModel,
DomainsResponseModel,
DocumentConfigurationResponseModel,
DocumentValueResponseModel,
} from '@umbraco-cms/backoffice/external/backend-api';
export class UmbDocumentMockDB extends UmbEntityMockDbBase<UmbMockDocumentModel> {
@@ -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,

View File

@@ -19,6 +19,7 @@ export const data: Array<UmbMockMediaModel> = [
},
values: [
{
editorAlias: 'Umbraco.TextBox',
alias: 'myMediaHeadline',
value: 'The daily life at Umbraco HQ',
},
@@ -47,6 +48,7 @@ export const data: Array<UmbMockMediaModel> = [
},
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<UmbMockMediaModel> = [
},
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<UmbMockMediaModel> = [
},
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<UmbMockMediaModel> = [
},
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<UmbMockMediaModel> = [
},
values: [
{
editorAlias: 'Umbraco.TextBox',
alias: 'myMediaDescription',
value: 'Every day, a rabbit in a military costume greets me at the front door',
},

View File

@@ -14,6 +14,7 @@ import type {
MediaItemResponseModel,
MediaResponseModel,
MediaTreeItemResponseModel,
MediaValueResponseModel,
} from '@umbraco-cms/backoffice/external/backend-api';
export class UmbMediaMockDB extends UmbEntityMockDbBase<UmbMockMediaModel> {
@@ -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,

View File

@@ -11,6 +11,7 @@ import {
type CreateMemberRequestModel,
type MemberItemResponseModel,
type MemberResponseModel,
type MemberValueResponseModel,
} from '@umbraco-cms/backoffice/external/backend-api';
class UmbMemberMockDB extends UmbEntityMockDbBase<UmbMockMemberModel> {
@@ -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,

View File

@@ -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,

View File

@@ -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(

View File

@@ -92,6 +92,7 @@ export class UmbDocumentServerDataSource implements UmbDetailDataSource<UmbDocum
unique: data.id,
values: data.values.map((value) => {
return {
editorAlias: value.editorAlias,
alias: value.alias,
culture: value.culture || null,
segment: value.segment || null,

View File

@@ -414,6 +414,7 @@ export class UmbDocumentWorkspaceContext
}
async setPropertyValue<ValueType = unknown>(alias: string, value: ValueType, variantId?: UmbVariantId) {
variantId ??= UmbVariantId.CreateInvariant();
//const property = await this.structure.getPropertyStructureByAlias(alias);
const entry = { ...variantId.toObject(), alias, value } as UmbDocumentValueModel<ValueType>;
const currentData = this.getData();

View File

@@ -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<UmbMediaDetailModel> = {
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,

View File

@@ -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(

View File

@@ -100,6 +100,7 @@ export class UmbMemberServerDataSource implements UmbDetailDataSource<UmbMemberD
groups: data.groups,
values: data.values.map((value) => {
return {
editorAlias: value.editorAlias,
culture: value.culture || null,
segment: value.segment || null,
alias: value.alias,

View File

@@ -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(