diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.test.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.test.ts index b5edf90fed..3ff159c362 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.test.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.test.ts @@ -1,6 +1,5 @@ import { expect } from '@open-wc/testing'; import { ArrayState } from './array-state'; -import { createObservablePart } from '@umbraco-cms/observable-api'; describe('ArrayState', () => { @@ -76,9 +75,9 @@ describe('ArrayState', () => { }); - it('createObservablePart for a specific entry of array', (done) => { + it('getObservablePart for a specific entry of array', (done) => { - const subObserver = createObservablePart(subject, data => data.find(x => x.key === '2')); + const subObserver = subject.getObservablePart(data => data.find(x => x.key === '2')); subObserver.subscribe((entry) => { if(entry) { expect(entry.another).to.be.equal(initialData[1].another); @@ -89,12 +88,12 @@ describe('ArrayState', () => { }); - it('createObservablePart returns undefined if item does not exist', (done) => { + it('getObservablePart returns undefined if item does not exist', (done) => { let amountOfCallbacks = 0; const newItem = {key: '4', another: 'myValue4'}; - const subObserver = createObservablePart(subject, data => data.find(x => x.key === newItem.key)); + const subObserver = subject.getObservablePart(data => data.find(x => x.key === newItem.key)); subObserver.subscribe((entry) => { amountOfCallbacks++; if(amountOfCallbacks === 1) { @@ -130,12 +129,12 @@ describe('ArrayState', () => { }); - it('createObservablePart returns the replaced item', (done) => { + it('getObservablePart returns the replaced item', (done) => { const newItem = {key: '2', another: 'myValue4'}; subject.appendOne(newItem); - const subObserver = createObservablePart(subject, data => data.find(x => x.key === newItem.key)); + const subObserver = subject.getObservablePart(data => data.find(x => x.key === newItem.key)); subObserver.subscribe((entry) => { expect(entry).to.be.equal(newItem);// Second callback should give us the right data: if(entry) { diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/deep-state.test.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/deep-state.test.ts index 9f05db1c0e..f605564749 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/deep-state.test.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/deep-state.test.ts @@ -1,6 +1,5 @@ import { expect } from '@open-wc/testing'; import { DeepState } from './deep-state'; -import { createObservablePart } from '@umbraco-cms/observable-api'; describe('DeepState', () => { @@ -37,11 +36,11 @@ describe('DeepState', () => { }); - it('use createObservablePart, updates on its specific change.', (done) => { + it('use gObservablePart, updates on its specific change.', (done) => { let amountOfCallbacks = 0; - const subObserver = createObservablePart(subject, data => data.another); + const subObserver = subject.getObservablePart(data => data.another); subObserver.subscribe((value) => { amountOfCallbacks++; if(amountOfCallbacks === 1) { diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/object-state.test.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/object-state.test.ts index 6160bfba27..66b1e0deef 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/object-state.test.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/object-state.test.ts @@ -27,7 +27,7 @@ describe('ObjectState', () => { }); - it('use createObservablePart, updates on its specific change.', (done) => { + it('use getObservablePart, updates on its specific change.', (done) => { let amountOfCallbacks = 0; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts index 5ef48f1ba7..1e27078ee3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts @@ -1,6 +1,6 @@ import type { DocumentBlueprintDetails } from '@umbraco-cms/models'; import { UmbContextToken } from '@umbraco-cms/context-api'; -import { createObservablePart, ArrayState } from '@umbraco-cms/observable-api'; +import { ArrayState } from '@umbraco-cms/observable-api'; import { UmbStoreBase } from '@umbraco-cms/store'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; @@ -39,7 +39,7 @@ export class UmbDocumentBlueprintDetailStore extends UmbStoreBase { this.#data.append(data); }); - return createObservablePart(this.#data, (documents) => + return this.#data.getObservablePart((documents) => documents.find((document) => document.key === key) ); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.tree.store.ts index f7cc3a11da..ae56bccc0b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.tree.store.ts @@ -1,7 +1,7 @@ import { DocumentBlueprintResource, DocumentTreeItem } from '@umbraco-cms/backend-api'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; import { UmbContextToken } from '@umbraco-cms/context-api'; -import { createObservablePart, ArrayState } from '@umbraco-cms/observable-api'; +import { ArrayState } from '@umbraco-cms/observable-api'; import { UmbStoreBase } from '@umbraco-cms/store'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; @@ -55,7 +55,7 @@ export class UmbDocumentBlueprintTreeStore extends UmbStoreBase { // TODO: how do we handle trashed items? // TODO: remove ignore when we know how to handle trashed items. - return createObservablePart(this.#data, (items) => items.filter((item) => item.parentKey === null && !item.isTrashed)); + return this.#data.getObservablePart((items) => items.filter((item) => item.parentKey === null && !item.isTrashed)); } getTreeItemChildren(key: string) { @@ -75,7 +75,7 @@ export class UmbDocumentBlueprintTreeStore extends UmbStoreBase { // TODO: how do we handle trashed items? // TODO: remove ignore when we know how to handle trashed items. - return createObservablePart(this.#data, (items) => items.filter((item) => item.parentKey === key && !item.isTrashed)); + return this.#data.getObservablePart((items) => items.filter((item) => item.parentKey === key && !item.isTrashed)); } getTreeItems(keys: Array) { @@ -93,6 +93,6 @@ export class UmbDocumentBlueprintTreeStore extends UmbStoreBase { }); } - return createObservablePart(this.#data, (items) => items.filter((item) => keys.includes(item.key ?? ''))); + return this.#data.getObservablePart((items) => items.filter((item) => keys.includes(item.key ?? ''))); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/document-type.detail.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/document-type.detail.store.ts index 4835577c3a..c2f586c7cc 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/document-type.detail.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/document-type.detail.store.ts @@ -1,6 +1,6 @@ import type { DocumentTypeDetails } from '@umbraco-cms/models'; import { UmbContextToken } from '@umbraco-cms/context-api'; -import { createObservablePart, ArrayState } from '@umbraco-cms/observable-api'; +import { ArrayState } from '@umbraco-cms/observable-api'; import { UmbEntityDetailStore, UmbStoreBase } from '@umbraco-cms/store'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; @@ -51,7 +51,7 @@ export class UmbDocumentTypeDetailStore extends UmbStoreBase implements UmbEntit this.#data.append(data); }); - return createObservablePart(this.#data, (documentTypes) => + return this.#data.getObservablePart((documentTypes) => documentTypes.find((documentType) => documentType.key === key) ); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/document-type.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/document-type.tree.store.ts index bb94357d57..44ca119f86 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/document-type.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/document-type.tree.store.ts @@ -1,7 +1,7 @@ import { DocumentTypeResource, DocumentTreeItem } from '@umbraco-cms/backend-api'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; import { UmbContextToken } from '@umbraco-cms/context-api'; -import { createObservablePart, ArrayState } from '@umbraco-cms/observable-api'; +import { ArrayState } from '@umbraco-cms/observable-api'; import { UmbStoreBase } from '@umbraco-cms/store'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; @@ -54,7 +54,7 @@ export class UmbDocumentTypeTreeStore extends UmbStoreBase { }); // TODO: remove ignore when we know how to handle trashed items. - return createObservablePart(this.#data, (items) => items.filter((item) => item.parentKey === null)); + return this.#data.getObservablePart((items) => items.filter((item) => item.parentKey === null)); } getTreeItemChildren(key: string) { @@ -71,7 +71,7 @@ export class UmbDocumentTypeTreeStore extends UmbStoreBase { }); // TODO: remove ignore when we know how to handle trashed items. - return createObservablePart(this.#data, (items) => items.filter((item) => item.parentKey === key)); + return this.#data.getObservablePart((items) => items.filter((item) => item.parentKey === key)); } getTreeItems(keys: Array) { @@ -89,6 +89,6 @@ export class UmbDocumentTypeTreeStore extends UmbStoreBase { }); } - return createObservablePart(this.#data, (items) => items.filter((item) => keys.includes(item.key ?? ''))); + return this.#data.getObservablePart((items) => items.filter((item) => keys.includes(item.key ?? ''))); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/document.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/document.tree.store.ts index 8c27b2b686..b96aee4685 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/document.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/document.tree.store.ts @@ -1,7 +1,7 @@ import { DocumentResource, DocumentTreeItem } from '@umbraco-cms/backend-api'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; import { UmbContextToken } from '@umbraco-cms/context-api'; -import { createObservablePart, ArrayState } from '@umbraco-cms/observable-api'; +import { ArrayState } from '@umbraco-cms/observable-api'; import { UmbStoreBase, UmbTreeStore } from '@umbraco-cms/store'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; @@ -62,7 +62,7 @@ export class UmbDocumentTreeStore extends UmbStoreBase implements UmbTreeStore items.filter((item) => item.parentKey === null && !item.isTrashed)); + return this._data.getObservablePart((items) => items.filter((item) => item.parentKey === null && !item.isTrashed)); } getTreeItemChildren(key: string) { @@ -80,7 +80,7 @@ export class UmbDocumentTreeStore extends UmbStoreBase implements UmbTreeStore items.filter((item) => item.parentKey === key && !item.isTrashed)); + return this._data.getObservablePart((items) => items.filter((item) => item.parentKey === key && !item.isTrashed)); } getTreeItems(keys: Array) { @@ -98,6 +98,6 @@ export class UmbDocumentTreeStore extends UmbStoreBase implements UmbTreeStore items.filter((item) => keys.includes(item.key ?? ''))); + return this._data.getObservablePart((items) => items.filter((item) => keys.includes(item.key ?? ''))); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/media-type.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/media-type.tree.store.ts index f62d04040c..1701c0eb02 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/media-type.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/media-type.tree.store.ts @@ -1,7 +1,7 @@ import { FolderTreeItem, MediaTypeResource } from '@umbraco-cms/backend-api'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; import { UmbContextToken } from '@umbraco-cms/context-api'; -import { createObservablePart, ArrayState } from '@umbraco-cms/observable-api'; +import { ArrayState } from '@umbraco-cms/observable-api'; import { UmbStoreBase } from '@umbraco-cms/store'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; @@ -32,7 +32,7 @@ export class UmbMediaTypeTreeStore extends UmbStoreBase { } }); - return createObservablePart(this.#data, (items) => items.filter((item) => item.parentKey === null)); + return this.#data.getObservablePart((items) => items.filter((item) => item.parentKey === null)); } getTreeItemChildren(key: string){ @@ -47,7 +47,7 @@ export class UmbMediaTypeTreeStore extends UmbStoreBase { } }); - return createObservablePart(this.#data, (items) => items.filter((item) => item.parentKey === key)); + return this.#data.getObservablePart((items) => items.filter((item) => item.parentKey === key)); } getTreeItems(keys: Array) { @@ -65,6 +65,6 @@ export class UmbMediaTypeTreeStore extends UmbStoreBase { }); } - return createObservablePart(this.#data, (items) => items.filter((item) => keys.includes(item.key ?? ''))); + return this.#data.getObservablePart((items) => items.filter((item) => keys.includes(item.key ?? ''))); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/media.detail.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/media.detail.store.ts index 4ba307da9c..965b43aefa 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/media.detail.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/media.detail.store.ts @@ -1,6 +1,6 @@ -import type { DocumentDetails, MediaDetails } from '@umbraco-cms/models'; +import type { MediaDetails } from '@umbraco-cms/models'; import { UmbContextToken } from '@umbraco-cms/context-api'; -import { createObservablePart, ArrayState } from '@umbraco-cms/observable-api'; +import { ArrayState } from '@umbraco-cms/observable-api'; import { UmbStoreBase, UmbContentStore } from '@umbraco-cms/store'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; @@ -32,7 +32,7 @@ export class UmbMediaDetailStore extends UmbStoreBase implements UmbContentStore this.#data.append(data); }); - return createObservablePart(this.#data, (documents) => + return this.#data.getObservablePart((documents) => documents.find((document) => document.key === key) ); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/media.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/media.tree.store.ts index a2c6bc14ae..bd9b03dfc4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/media.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/media.tree.store.ts @@ -2,7 +2,7 @@ import type { Observable } from 'rxjs'; import { MediaResource, ContentTreeItem } from '@umbraco-cms/backend-api'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; import { UmbContextToken } from '@umbraco-cms/context-api'; -import { createObservablePart, ArrayState } from '@umbraco-cms/observable-api'; +import { ArrayState } from '@umbraco-cms/observable-api'; import { UmbStoreBase, UmbTreeStore } from '@umbraco-cms/store'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; @@ -63,7 +63,7 @@ export class UmbMediaTreeStore extends UmbStoreBase implements UmbTreeStore + return this.#data.getObservablePart((items) => items.filter((item) => item.parentKey === null && !item.isTrashed) ); } @@ -83,7 +83,7 @@ export class UmbMediaTreeStore extends UmbStoreBase implements UmbTreeStore + return this.#data.getObservablePart((items) => items.filter((item) => item.parentKey === key && !item.isTrashed) ); } @@ -103,6 +103,6 @@ export class UmbMediaTreeStore extends UmbStoreBase implements UmbTreeStore items.filter((item) => keys.includes(item.key ?? ''))); + return this.#data.getObservablePart((items) => items.filter((item) => keys.includes(item.key ?? ''))); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/member-type.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/member-type.tree.store.ts index a5842155b1..fca8d875a9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/member-type.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/member-type.tree.store.ts @@ -1,7 +1,7 @@ import { EntityTreeItem, MemberTypeResource, } from '@umbraco-cms/backend-api'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; import { UmbContextToken } from '@umbraco-cms/context-api'; -import { createObservablePart, ArrayState } from '@umbraco-cms/observable-api'; +import { ArrayState } from '@umbraco-cms/observable-api'; import { UmbStoreBase } from '@umbraco-cms/store'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; @@ -55,7 +55,7 @@ export class UmbMemberTypeTreeStore extends UmbStoreBase { }); // TODO: remove ignore when we know how to handle trashed items. - return createObservablePart(this.#data, (items) => items.filter((item) => item.parentKey === null)); + return this.#data.getObservablePart((items) => items.filter((item) => item.parentKey === null)); } getTreeItemChildren(key: string) { @@ -73,7 +73,7 @@ export class UmbMemberTypeTreeStore extends UmbStoreBase { }); */ - return createObservablePart(this.#data, (items) => items.filter((item) => item.parentKey === key)); + return this.#data.getObservablePart((items) => items.filter((item) => item.parentKey === key)); } getTreeItems(keys: Array) { @@ -91,6 +91,6 @@ export class UmbMemberTypeTreeStore extends UmbStoreBase { }); } - return createObservablePart(this.#data, (items) => items.filter((item) => keys.includes(item.key ?? ''))); + return this.#data.getObservablePart((items) => items.filter((item) => keys.includes(item.key ?? ''))); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/data-type.detail.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/data-type.detail.store.ts index 6ea6dc4fec..5c81233e1b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/data-type.detail.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/data-type.detail.store.ts @@ -1,6 +1,6 @@ import type { DataTypeDetails } from '@umbraco-cms/models'; import { UmbContextToken } from '@umbraco-cms/context-api'; -import { createObservablePart, ArrayState } from '@umbraco-cms/observable-api'; +import { ArrayState } from '@umbraco-cms/observable-api'; import { UmbEntityDetailStore, UmbStoreBase } from '@umbraco-cms/store'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; @@ -54,7 +54,7 @@ export class UmbDataTypeDetailStore extends UmbStoreBase implements UmbEntityDet }); - return createObservablePart(this.#data, (documents) => + return this.#data.getObservablePart((documents) => documents.find((document) => document.key === key) ); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/data-type.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/data-type.tree.store.ts index 7363defdc9..fca7c90c21 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/data-type.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/data-type.tree.store.ts @@ -1,7 +1,7 @@ import { DataTypeResource, DocumentTreeItem } from '@umbraco-cms/backend-api'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; import { UmbContextToken } from '@umbraco-cms/context-api'; -import { createObservablePart, ArrayState } from '@umbraco-cms/observable-api'; +import { ArrayState } from '@umbraco-cms/observable-api'; import { UmbStoreBase } from '@umbraco-cms/store'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; @@ -55,7 +55,7 @@ export class UmbDataTypeTreeStore extends UmbStoreBase { // TODO: how do we handle trashed items? // TODO: remove ignore when we know how to handle trashed items. - return createObservablePart(this.#data, (items) => items.filter((item) => item.parentKey === null && !item.isTrashed)); + return this.#data.getObservablePart((items) => items.filter((item) => item.parentKey === null && !item.isTrashed)); } getTreeItemChildren(key: string) { @@ -73,7 +73,7 @@ export class UmbDataTypeTreeStore extends UmbStoreBase { // TODO: how do we handle trashed items? // TODO: remove ignore when we know how to handle trashed items. - return createObservablePart(this.#data, (items) => items.filter((item) => item.parentKey === key && !item.isTrashed)); + return this.#data.getObservablePart((items) => items.filter((item) => item.parentKey === key && !item.isTrashed)); } getTreeItems(keys: Array) { @@ -91,6 +91,6 @@ export class UmbDataTypeTreeStore extends UmbStoreBase { }); } - return createObservablePart(this.#data, (items) => items.filter((item) => keys.includes(item.key ?? ''))); + return this.#data.getObservablePart((items) => items.filter((item) => keys.includes(item.key ?? ''))); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts index f3581b8247..4a8986eac6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts @@ -1,7 +1,7 @@ import { UmbWorkspaceEntityContextInterface } from '../workspace/workspace-context/workspace-entity-context.interface'; import type { DataTypeDetails } from '@umbraco-cms/models'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { createObservablePart, ObjectState } from '@umbraco-cms/observable-api'; +import { ObjectState } from '@umbraco-cms/observable-api'; import { UmbContextConsumerController, UmbContextProviderController } from '@umbraco-cms/context-api'; // If we get this from the server then we can consider using TypeScripts Partial<> around the model from the Management-API. @@ -18,11 +18,11 @@ export class UmbWorkspacePropertyContext { private _data = new ObjectState>({}); - public readonly alias = createObservablePart(this._data, (data) => data.alias); - public readonly label = createObservablePart(this._data, (data) => data.label); - public readonly description = createObservablePart(this._data, (data) => data.description); - public readonly value = createObservablePart(this._data, (data) => data.value); - public readonly config = createObservablePart(this._data, (data) => data.config); + public readonly alias = this._data.getObservablePart((data) => data.alias); + public readonly label = this._data.getObservablePart((data) => data.label); + public readonly description = this._data.getObservablePart((data) => data.description); + public readonly value = this._data.getObservablePart((data) => data.value); + public readonly config = this._data.getObservablePart((data) => data.config); private _workspaceContext?: UmbWorkspaceEntityContextInterface; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/dictionary.detail.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/dictionary.detail.store.ts index 88ba424035..4b2a00c017 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/dictionary.detail.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/dictionary.detail.store.ts @@ -1,6 +1,6 @@ import type { DictionaryDetails } from '@umbraco-cms/models'; import { UmbContextToken } from '@umbraco-cms/context-api'; -import { createObservablePart, ArrayState } from '@umbraco-cms/observable-api'; +import { ArrayState } from '@umbraco-cms/observable-api'; import { UmbEntityDetailStore, UmbStoreBase } from '@umbraco-cms/store'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { EntityTreeItem } from '@umbraco-cms/backend-api'; @@ -47,7 +47,7 @@ export class UmbDictionaryDetailStore extends UmbStoreBase implements UmbEntityD this.#data.append(data); }); - return createObservablePart(this.#data, (documents) => + return this.#data.getObservablePart((documents) => documents.find((document) => document.key === key) ); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/dictionary.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/dictionary.tree.store.ts index 04c810fc85..a9ae81245a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/dictionary.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/dictionary.tree.store.ts @@ -1,7 +1,7 @@ import { DictionaryResource, DocumentTreeItem } from '@umbraco-cms/backend-api'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; import { UmbContextToken } from '@umbraco-cms/context-api'; -import { createObservablePart, ArrayState } from '@umbraco-cms/observable-api'; +import { ArrayState } from '@umbraco-cms/observable-api'; import { UmbStoreBase } from '@umbraco-cms/store'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; @@ -55,7 +55,7 @@ export class UmbDictionaryTreeStore extends UmbStoreBase { // TODO: how do we handle trashed items? // TODO: remove ignore when we know how to handle trashed items. - return createObservablePart(this.#data, (items) => items.filter((item) => item.parentKey === null && !item.isTrashed)); + return this.#data.getObservablePart((items) => items.filter((item) => item.parentKey === null && !item.isTrashed)); } getTreeItemChildren(key: string) { @@ -73,7 +73,7 @@ export class UmbDictionaryTreeStore extends UmbStoreBase { // TODO: how do we handle trashed items? // TODO: remove ignore when we know how to handle trashed items. - return createObservablePart(this.#data, (items) => items.filter((item) => item.parentKey === key && !item.isTrashed)); + return this.#data.getObservablePart((items) => items.filter((item) => item.parentKey === key && !item.isTrashed)); } getTreeItems(keys: Array) { @@ -91,6 +91,6 @@ export class UmbDictionaryTreeStore extends UmbStoreBase { }); } - return createObservablePart(this.#data, (items) => items.filter((item) => keys.includes(item.key ?? ''))); + return this.#data.getObservablePart((items) => items.filter((item) => keys.includes(item.key ?? ''))); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/current-user-history.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/current-user-history.store.ts index 192c5f13b9..9a7468fd15 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/current-user-history.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/current-user-history.store.ts @@ -1,5 +1,5 @@ import { UmbContextToken } from '@umbraco-cms/context-api'; -import { createObservablePart, DeepState } from '@umbraco-cms/observable-api'; +import { DeepState } from '@umbraco-cms/observable-api'; export type UmbModelType = 'dialog' | 'sidebar'; @@ -13,7 +13,7 @@ export class UmbCurrentUserHistoryStore { #history = new DeepState(>[]); public readonly history = this.#history.asObservable(); - public readonly latestHistory = createObservablePart(this.#history, (historyItems) => historyItems.slice(-10)); + public readonly latestHistory = this.#history.getObservablePart((historyItems) => historyItems.slice(-10)); constructor() { if (!('navigation' in window)) return; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/user-group.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/user-group.store.ts index b5ac06137a..950acae2df 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/user-group.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/user-group.store.ts @@ -1,7 +1,7 @@ import type { UserGroupDetails } from '@umbraco-cms/models'; import { UmbContextToken } from '@umbraco-cms/context-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { createObservablePart, ArrayState } from '@umbraco-cms/observable-api'; +import { ArrayState } from '@umbraco-cms/observable-api'; import { UmbEntityDetailStore, UmbStoreBase } from '@umbraco-cms/store'; // TODO: get rid of this type addition & { ... }: @@ -63,7 +63,7 @@ export class UmbUserGroupStore extends UmbStoreBase implements UmbEntityDetailSt this.#groups.append([data]); }); - return createObservablePart(this.groups, (userGroups) => userGroups.find(userGroup => userGroup.key === key)); + return this.#groups.getObservablePart((userGroups) => userGroups.find(userGroup => userGroup.key === key)); } getByKeys(keys: Array) { @@ -74,7 +74,7 @@ export class UmbUserGroupStore extends UmbStoreBase implements UmbEntityDetailSt this.#groups.append(data); }); - return createObservablePart(this.groups, (items) => items.filter(node => keys.includes(node.key))); + return this.#groups.getObservablePart((items) => items.filter(node => keys.includes(node.key))); } async save(userGroups: Array) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/user.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/user.store.ts index dde8a93123..2a74eafda8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/user.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/user.store.ts @@ -1,5 +1,5 @@ import type { UserDetails } from '@umbraco-cms/models'; -import { createObservablePart, ArrayState, NumberState } from '@umbraco-cms/observable-api'; +import { ArrayState, NumberState } from '@umbraco-cms/observable-api'; import { UmbContextToken } from '@umbraco-cms/context-api'; import { UmbEntityDetailStore, UmbStoreBase } from '@umbraco-cms/store'; import type { UmbControllerHostInterface } from '@umbraco-cms/controller'; @@ -78,7 +78,7 @@ export class UmbUserStore extends UmbStoreBase implements UmbEntityDetailStore) => users.find((user: UmbUserStoreItemType) => user.key === key)); + return this.#users.getObservablePart((users: Array) => users.find((user: UmbUserStoreItemType) => user.key === key)); } @@ -96,7 +96,7 @@ export class UmbUserStore extends UmbStoreBase implements UmbEntityDetailStore) => users.filter((user: UmbUserStoreItemType) => keys.includes(user.key))); + return this.#users.getObservablePart((users: Array) => users.filter((user: UmbUserStoreItemType) => keys.includes(user.key))); } getByName(name: string) { @@ -110,7 +110,7 @@ export class UmbUserStore extends UmbStoreBase implements UmbEntityDetailStore) => users.filter((user: UmbUserStoreItemType) => user.name.toLocaleLowerCase().includes(name))); + return this.#users.getObservablePart((users: Array) => users.filter((user: UmbUserStoreItemType) => user.name.toLocaleLowerCase().includes(name))); } async enableUsers(userKeys: Array) { diff --git a/src/Umbraco.Web.UI.Client/src/stories/store.stories.mdx b/src/Umbraco.Web.UI.Client/src/stories/store.stories.mdx index 6c95d84da2..36a387cc59 100644 --- a/src/Umbraco.Web.UI.Client/src/stories/store.stories.mdx +++ b/src/Umbraco.Web.UI.Client/src/stories/store.stories.mdx @@ -84,7 +84,7 @@ class MyProductStore { }); // Return a Observable part, to listen for this specific product and the future changes of it. - return createObservablePart(this.#data, (documents) => + return this.#data.getObservablePart((documents) => documents.find((document) => document.key === key) ); } @@ -136,8 +136,8 @@ class MyProductStore { #products = new ArrayState(>[]); public readonly products = this.#products.asObservable(); - public readonly amountOfProducts = createObservablePart(this.#products, (products) => products.length); - public readonly topTenRatedProducts = createObservablePart(this.#products, (products) => products.sort((a, b) => b.rating - a.rating).slice(0, 10)); + public readonly amountOfProducts = this.#products.getObservablePart((products) => products.length); + public readonly topTenRatedProducts = this.#products.getObservablePart((products) => products.sort((a, b) => b.rating - a.rating).slice(0, 10)); ...