add method to create observable part

This commit is contained in:
Mads Rasmussen
2024-09-24 12:33:37 +02:00
parent 4806a1edbb
commit b9550c1914
2 changed files with 17 additions and 7 deletions

View File

@@ -1,5 +1,5 @@
import type { UmbWorkspaceDataManager } from '../data-manager/workspace-data-manager.interface.js';
import { jsonStringComparison, UmbObjectState } from '@umbraco-cms/backoffice/observable-api';
import { jsonStringComparison, UmbObjectState, type MappingFunction } from '@umbraco-cms/backoffice/observable-api';
import type { UmbEntityModel } from '@umbraco-cms/backoffice/entity';
import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
@@ -17,6 +17,16 @@ export class UmbSubmittableWorkspaceDataManager<ModelType extends UmbEntityModel
super(host);
}
/**
* Creates an observable part
* @template ReturnType
* @param {(MappingFunction<ModelType | undefined, ReturnType>)} mappingFunction
* @memberof UmbSubmittableWorkspaceDataManager
*/
createObservablePart<ReturnType>(mappingFunction: MappingFunction<ModelType | undefined, ReturnType>) {
this.#current.asObservablePart(mappingFunction);
}
/**
* Gets persisted data
* @returns {(ModelType | undefined)}

View File

@@ -67,12 +67,12 @@ export class UmbDataTypeWorkspaceContext
return this.#getDataPromise;
}
readonly name = this._data.current.asObservablePart((data) => data?.name);
readonly unique = this._data.current.asObservablePart((data) => data?.unique);
readonly entityType = this._data.current.asObservablePart((data) => data?.entityType);
readonly name = this._data.createObservablePart((data) => data?.name);
readonly unique = this._data.createObservablePart((data) => data?.unique);
readonly entityType = this._data.createObservablePart((data) => data?.entityType);
readonly propertyEditorUiAlias = this._data.current.asObservablePart((data) => data?.editorUiAlias);
readonly propertyEditorSchemaAlias = this._data.current.asObservablePart((data) => data?.editorAlias);
readonly propertyEditorUiAlias = this._data.createObservablePart((data) => data?.editorUiAlias);
readonly propertyEditorSchemaAlias = this._data.createObservablePart((data) => data?.editorAlias);
#properties = new UmbArrayState<PropertyEditorSettingsProperty>([], (x) => x.alias).sortBy(
(a, b) => (a.weight || 0) - (b.weight || 0),
@@ -354,7 +354,7 @@ export class UmbDataTypeWorkspaceContext
*/
async propertyValueByAlias<ReturnType = unknown>(propertyAlias: string) {
await this.#getDataPromise;
return this.#currentData.asObservablePart(
return this._data.createObservablePart(
(data) => data?.values?.find((x) => x.alias === propertyAlias)?.value as ReturnType,
);
}