more corrections
This commit is contained in:
@@ -53,9 +53,8 @@ export class UmbDocumentTypeTreeStore 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 createObservablePart(this._data, (items) => items.filter((item) => item.parentKey === null));
|
||||
}
|
||||
|
||||
getTreeItemChildren(key: string) {
|
||||
@@ -71,9 +70,8 @@ export class UmbDocumentTypeTreeStore 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 createObservablePart(this._data, (items) => items.filter((item) => item.parentKey === key));
|
||||
}
|
||||
|
||||
getTreeItems(keys: Array<string>) {
|
||||
|
||||
@@ -3,15 +3,15 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib';
|
||||
import { customElement, state } from 'lit/decorators.js';
|
||||
import { distinctUntilChanged } from 'rxjs';
|
||||
import { UmbWorkspaceDocumentTypeContext } from '../../document-type-workspace.context';
|
||||
import type { UmbDocumentTypeStoreItemType } from '../../../document-type.store';
|
||||
import { UmbLitElement } from '@umbraco-cms/element';
|
||||
import type { DocumentTypeDetails } from '@umbraco-cms/models';
|
||||
|
||||
@customElement('umb-workspace-view-document-type-design')
|
||||
export class UmbWorkspaceViewDocumentTypeDesignElement extends UmbLitElement {
|
||||
static styles = [UUITextStyles, css``];
|
||||
|
||||
@state()
|
||||
_documentType?: UmbDocumentTypeStoreItemType | null;
|
||||
_documentType?: DocumentTypeDetails | null;
|
||||
|
||||
private _workspaceContext?: UmbWorkspaceDocumentTypeContext;
|
||||
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
import type { MemberTypeDetails } from '@umbraco-cms/models';
|
||||
import { UmbContextToken } from '@umbraco-cms/context-api';
|
||||
import { UniqueArrayBehaviorSubject } from '@umbraco-cms/observable-api';
|
||||
import { UmbStoreBase } from '@umbraco-cms/stores/store-base';
|
||||
import { UmbControllerHostInterface } from '@umbraco-cms/controller';
|
||||
|
||||
|
||||
export const UMB_MEMBER_TYPE_DETAIL_STORE_CONTEXT_TOKEN = new UmbContextToken<UmbMemberTypeDetailStore>('UmbMemberTypeDetailStore');
|
||||
|
||||
|
||||
/**
|
||||
* @export
|
||||
* @class UmbMemberTypeDetailStore
|
||||
* @extends {UmbStoreBase}
|
||||
* @description - Details Data Store for Member Types
|
||||
*/
|
||||
export class UmbMemberTypeDetailStore extends UmbStoreBase {
|
||||
|
||||
|
||||
#data = new UniqueArrayBehaviorSubject<MemberTypeDetails>([], (x) => x.key);
|
||||
|
||||
|
||||
constructor(host: UmbControllerHostInterface) {
|
||||
super(host, UMB_MEMBER_TYPE_DETAIL_STORE_CONTEXT_TOKEN.toString());
|
||||
}
|
||||
|
||||
/**
|
||||
* @description - Request a Data Type by key. The Data Type is added to the store and is returned as an Observable.
|
||||
* @param {string} key
|
||||
* @return {*} {(Observable<MemberTypeDetails | undefined>)}
|
||||
* @memberof UmbMemberTypesStore
|
||||
*/
|
||||
getByKey(key: string) {
|
||||
return null as any;
|
||||
}
|
||||
|
||||
// TODO: make sure UI somehow can follow the status of this action.
|
||||
/**
|
||||
* @description - Save a Data Type.
|
||||
* @param {Array<MemberTypeDetails>} memberTypes
|
||||
* @memberof UmbMemberTypesStore
|
||||
* @return {*} {Promise<void>}
|
||||
*/
|
||||
save(data: MemberTypeDetails[]) {
|
||||
return null as any;
|
||||
}
|
||||
|
||||
// TODO: How can we avoid having this in both stores?
|
||||
/**
|
||||
* @description - Delete a Data Type.
|
||||
* @param {string[]} keys
|
||||
* @memberof UmbMemberTypesStore
|
||||
* @return {*} {Promise<void>}
|
||||
*/
|
||||
async delete(keys: string[]) {
|
||||
// TODO: use backend cli when available.
|
||||
return null as any;
|
||||
|
||||
this.#data.remove(keys);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
import { EntityTreeItem, MemberTypeResource, } from '@umbraco-cms/backend-api';
|
||||
import { tryExecuteAndNotify } from '@umbraco-cms/resources';
|
||||
import { UmbContextToken } from '@umbraco-cms/context-api';
|
||||
import { createObservablePart, UniqueArrayBehaviorSubject } from '@umbraco-cms/observable-api';
|
||||
import { UmbStoreBase } from '@umbraco-cms/stores/store-base';
|
||||
import { UmbControllerHostInterface } from '@umbraco-cms/controller';
|
||||
|
||||
|
||||
export const UMB_MEMBER_TYPE_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken<UmbMemberTypeTreeStore>('UmbMemberTypeTreeStore');
|
||||
|
||||
|
||||
/**
|
||||
* @export
|
||||
* @class UmbMemberTypeTreeStore
|
||||
* @extends {UmbStoreBase}
|
||||
* @description - Tree Data Store for Data Types
|
||||
*/
|
||||
export class UmbMemberTypeTreeStore extends UmbStoreBase {
|
||||
|
||||
|
||||
// TODO: use the right type here:
|
||||
#data = new UniqueArrayBehaviorSubject<EntityTreeItem>([], (x) => x.key);
|
||||
|
||||
|
||||
constructor(host: UmbControllerHostInterface) {
|
||||
super(host, UMB_MEMBER_TYPE_TREE_STORE_CONTEXT_TOKEN.toString());
|
||||
}
|
||||
|
||||
// TODO: How can we avoid having this in both stores?
|
||||
/**
|
||||
* @description - Delete a Data Type.
|
||||
* @param {string[]} keys
|
||||
* @memberof UmbMemberTypesStore
|
||||
* @return {*} {Promise<void>}
|
||||
*/
|
||||
async delete(keys: string[]) {
|
||||
// TODO: use backend cli when available.
|
||||
await fetch('/umbraco/backoffice/member-type/delete', {
|
||||
method: 'POST',
|
||||
body: JSON.stringify(keys),
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
});
|
||||
|
||||
this.#data.remove(keys);
|
||||
}
|
||||
|
||||
getTreeRoot() {
|
||||
tryExecuteAndNotify(this._host, MemberTypeResource.getTreeMemberTypeRoot({})).then(({ data }) => {
|
||||
if (data) {
|
||||
// TODO: how do we handle if an item has been removed during this session(like in another tab or by another user)?
|
||||
this.#data.append(data.items);
|
||||
}
|
||||
});
|
||||
|
||||
// TODO: remove ignore when we know how to handle trashed items.
|
||||
return createObservablePart(this.#data, (items) => items.filter((item) => item.parentKey === null));
|
||||
}
|
||||
|
||||
getTreeItemChildren(key: string) {
|
||||
/*
|
||||
tryExecuteAndNotify(
|
||||
this._host,
|
||||
MemberTypeResource.getTreeMemberTypeChildren({
|
||||
parentKey: key,
|
||||
})
|
||||
).then(({ data }) => {
|
||||
if (data) {
|
||||
// TODO: how do we handle if an item has been removed during this session(like in another tab or by another user)?
|
||||
this.#data.append(data.items);
|
||||
}
|
||||
});
|
||||
*/
|
||||
|
||||
return createObservablePart(this.#data, (items) => items.filter((item) => item.parentKey === key));
|
||||
}
|
||||
|
||||
getTreeItems(keys: Array<string>) {
|
||||
if (keys?.length > 0) {
|
||||
tryExecuteAndNotify(
|
||||
this._host,
|
||||
MemberTypeResource.getTreeMemberTypeItem({
|
||||
key: keys,
|
||||
})
|
||||
).then(({ data }) => {
|
||||
if (data) {
|
||||
// TODO: how do we handle if an item has been removed during this session(like in another tab or by another user)?
|
||||
this.#data.append(data);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return createObservablePart(this.#data, (items) => items.filter((item) => keys.includes(item.key ?? '')));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user