more corrections

This commit is contained in:
Niels Lyngsø
2023-01-23 21:55:53 +01:00
parent 979a9bb596
commit c9385f6427
4 changed files with 161 additions and 6 deletions

View File

@@ -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>) {

View File

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

View File

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

View File

@@ -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 ?? '')));
}
}