rename to data types store + add delete method
This commit is contained in:
@@ -18,7 +18,7 @@ import { css, html, LitElement } from 'lit';
|
||||
|
||||
import { UmbModalService } from '../core/services/modal';
|
||||
import { UmbNotificationService } from '../core/services/notification';
|
||||
import { UmbDataTypeStore } from '../core/stores/data-type/data-type.store';
|
||||
import { UmbDataTypesStore } from '../core/stores/data-types/data-types.store';
|
||||
import { UmbDocumentTypeStore } from '../core/stores/document-type/document-type.store';
|
||||
import { UmbMediaTypeStore } from '../core/stores/media-type/media-type.store';
|
||||
import { UmbMemberTypeStore } from '../core/stores/member-type/member-type.store';
|
||||
@@ -72,7 +72,7 @@ export class UmbBackofficeElement extends UmbContextConsumerMixin(UmbContextProv
|
||||
|
||||
this.provideContext('umbDocumentStore', new UmbDocumentStore());
|
||||
this.provideContext('umbMediaStore', new UmbMediaStore());
|
||||
this.provideContext('umbDataTypeStore', new UmbDataTypeStore());
|
||||
this.provideContext('umbDataTypeStore', new UmbDataTypesStore());
|
||||
this.provideContext('umbDocumentTypeStore', new UmbDocumentTypeStore());
|
||||
this.provideContext('umbMediaTypeStore', new UmbMediaTypeStore());
|
||||
this.provideContext('umbMemberTypeStore', new UmbMemberTypeStore());
|
||||
|
||||
@@ -4,7 +4,7 @@ import { ifDefined } from 'lit-html/directives/if-defined.js';
|
||||
import { customElement, property, state } from 'lit/decorators.js';
|
||||
import { EMPTY, of, switchMap } from 'rxjs';
|
||||
|
||||
import { UmbDataTypeStore } from '../../../core/stores/data-type/data-type.store';
|
||||
import { UmbDataTypesStore } from '../../../core/stores/data-types/data-types.store';
|
||||
import { NodeProperty } from '../../../core/mocks/data/node.data';
|
||||
import { UmbObserverMixin } from '@umbraco-cms/observable-api';
|
||||
import type { ManifestTypes } from '@umbraco-cms/models';
|
||||
@@ -43,7 +43,7 @@ export class UmbNodePropertyElement extends UmbContextConsumerMixin(UmbObserverM
|
||||
@state()
|
||||
private _dataTypeData?: any;
|
||||
|
||||
private _dataTypeStore?: UmbDataTypeStore;
|
||||
private _dataTypeStore?: UmbDataTypesStore;
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
|
||||
@@ -6,7 +6,7 @@ import type { UmbNotificationDefaultData } from '../../../../../core/services/no
|
||||
import type { UmbNotificationService } from '../../../../../core/services/notification';
|
||||
import { UmbDataTypeContext } from '../../data-type.context';
|
||||
import { UmbContextConsumerMixin } from '@umbraco-cms/context-api';
|
||||
import { UmbDataTypeStore } from 'src/core/stores/data-type/data-type.store';
|
||||
import { UmbDataTypesStore } from 'src/core/stores/data-types/data-types.store';
|
||||
|
||||
@customElement('umb-editor-action-data-type-save')
|
||||
export class UmbEditorActionDataTypeSaveElement extends UmbContextConsumerMixin(LitElement) {
|
||||
@@ -15,7 +15,7 @@ export class UmbEditorActionDataTypeSaveElement extends UmbContextConsumerMixin(
|
||||
@state()
|
||||
private _saveButtonState?: UUIButtonState;
|
||||
|
||||
private _dataTypeStore?: UmbDataTypeStore;
|
||||
private _dataTypeStore?: UmbDataTypesStore;
|
||||
private _dataTypeContext?: UmbDataTypeContext;
|
||||
private _notificationService?: UmbNotificationService;
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui';
|
||||
import { UUITextStyles } from '@umbraco-ui/uui-css/lib';
|
||||
import { css, html, LitElement } from 'lit';
|
||||
import { customElement, property, state } from 'lit/decorators.js';
|
||||
import { UmbDataTypeStore } from '../../../core/stores/data-type/data-type.store';
|
||||
import { UmbDataTypesStore } from '../../../core/stores/data-types/data-types.store';
|
||||
import { UmbDataTypeContext } from './data-type.context';
|
||||
import type { DataTypeDetails } from '@umbraco-cms/models';
|
||||
import { UmbObserverMixin } from '@umbraco-cms/observable-api';
|
||||
@@ -41,7 +41,7 @@ export class UmbEditorDataTypeElement extends UmbContextProviderMixin(
|
||||
private _dataTypeName = '';
|
||||
|
||||
private _dataTypeContext?: UmbDataTypeContext;
|
||||
private _dataTypeStore?: UmbDataTypeStore;
|
||||
private _dataTypeStore?: UmbDataTypesStore;
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
|
||||
@@ -2,7 +2,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css';
|
||||
import { css, html } from 'lit';
|
||||
import { customElement } from 'lit/decorators.js';
|
||||
import { UmbModalService } from '../../../../../core/services/modal';
|
||||
import { UmbDataTypeStore } from '../../../../../core/stores/data-type/data-type.store';
|
||||
import { UmbDataTypesStore } from '../../../../../core/stores/data-types/data-types.store';
|
||||
import UmbTreeItemActionElement from '../../../shared/tree-item-action.element';
|
||||
import { UmbContextConsumerMixin } from '@umbraco-cms/context-api';
|
||||
|
||||
@@ -11,7 +11,7 @@ export default class UmbTreeActionDataTypeDeleteElement extends UmbContextConsum
|
||||
static styles = [UUITextStyles, css``];
|
||||
|
||||
private _modalService?: UmbModalService;
|
||||
private _dataTypeStore?: UmbDataTypeStore;
|
||||
private _dataTypeStore?: UmbDataTypesStore;
|
||||
|
||||
connectedCallback(): void {
|
||||
super.connectedCallback();
|
||||
@@ -20,7 +20,7 @@ export default class UmbTreeActionDataTypeDeleteElement extends UmbContextConsum
|
||||
this._modalService = modalService;
|
||||
});
|
||||
|
||||
this.consumeContext('umbDataTypeStore', (dataTypeStore: UmbDataTypeStore) => {
|
||||
this.consumeContext('umbDataTypeStore', (dataTypeStore: UmbDataTypesStore) => {
|
||||
this._dataTypeStore = dataTypeStore;
|
||||
});
|
||||
}
|
||||
@@ -35,7 +35,7 @@ export default class UmbTreeActionDataTypeDeleteElement extends UmbContextConsum
|
||||
|
||||
modalHandler?.onClose().then(({ confirmed }: any) => {
|
||||
if (confirmed && this._treeContextMenuService && this._dataTypeStore && this._activeTreeItem) {
|
||||
this._dataTypeStore?.trash([this._activeTreeItem.key]);
|
||||
this._dataTypeStore?.deleteItems([this._activeTreeItem.key]);
|
||||
this._treeContextMenuService.close();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -6,7 +6,7 @@ import { umbExtensionsRegistry } from '@umbraco-cms/extensions-registry';
|
||||
import type { ManifestTreeItemAction, ManifestWithLoader } from '@umbraco-cms/models';
|
||||
|
||||
import '../shared/tree-navigator.element';
|
||||
import { UmbDataTypeStore } from 'src/core/stores/data-type/data-type.store';
|
||||
import { UmbDataTypesStore } from 'src/core/stores/data-types/data-types.store';
|
||||
|
||||
@customElement('umb-tree-data-types')
|
||||
export class UmbTreeDataTypesElement extends UmbContextProviderMixin(UmbContextConsumerMixin(UmbTreeBase)) {
|
||||
@@ -15,7 +15,7 @@ export class UmbTreeDataTypesElement extends UmbContextProviderMixin(UmbContextC
|
||||
|
||||
this._registerTreeItemActions();
|
||||
|
||||
this.consumeContext('umbDataTypeStore', (dataTypeStore: UmbDataTypeStore) => {
|
||||
this.consumeContext('umbDataTypeStore', (dataTypeStore: UmbDataTypesStore) => {
|
||||
this.provideContext('umbTreeStore', dataTypeStore);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -4,15 +4,6 @@ import type { DataTypeDetails } from '@umbraco-cms/models';
|
||||
|
||||
// TODO: add schema
|
||||
export const handlers = [
|
||||
rest.get('/umbraco/backoffice/data-type/:key', (req, res, ctx) => {
|
||||
const key = req.params.key as string;
|
||||
if (!key) return;
|
||||
|
||||
const dataType = umbDataTypeData.getByKey(key);
|
||||
|
||||
return res(ctx.status(200), ctx.json([dataType]));
|
||||
}),
|
||||
|
||||
rest.get('/umbraco/backoffice/data-type/details/:key', (req, res, ctx) => {
|
||||
const key = req.params.key as string;
|
||||
if (!key) return;
|
||||
@@ -31,12 +22,12 @@ export const handlers = [
|
||||
return res(ctx.status(200), ctx.json(saved));
|
||||
}),
|
||||
|
||||
rest.post<string[]>('/umbraco/backoffice/data-type/trash', async (req, res, ctx) => {
|
||||
rest.post<string[]>('/umbraco/backoffice/data-type/delete', async (req, res, ctx) => {
|
||||
console.warn('Please move to schema');
|
||||
const keys = await req.json();
|
||||
|
||||
const trashed = umbDataTypeData.trash(keys);
|
||||
umbDataTypeData.delete(keys);
|
||||
|
||||
return res(ctx.status(200), ctx.json(trashed));
|
||||
return res(ctx.status(200));
|
||||
}),
|
||||
];
|
||||
|
||||
@@ -5,16 +5,16 @@ import { ApiError, DataTypeResource, FolderTreeItem, ProblemDetails } from '@umb
|
||||
|
||||
/**
|
||||
* @export
|
||||
* @class UmbDataTypeStore
|
||||
* @class UmbDataTypesStore
|
||||
* @extends {UmbDataStoreBase<DataTypeDetails | FolderTreeItem>}
|
||||
* @description - Data Store for Data Types
|
||||
*/
|
||||
export class UmbDataTypeStore extends UmbDataStoreBase<DataTypeDetails | FolderTreeItem> {
|
||||
export class UmbDataTypesStore extends UmbDataStoreBase<DataTypeDetails | FolderTreeItem> {
|
||||
/**
|
||||
* @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<DataTypeDetails | null>)}
|
||||
* @memberof UmbDataTypeStore
|
||||
* @memberof UmbDataTypesStore
|
||||
*/
|
||||
getByKey(key: string): Observable<DataTypeDetails | FolderTreeItem | null> {
|
||||
// TODO: use Fetcher API.
|
||||
@@ -31,7 +31,7 @@ export class UmbDataTypeStore extends UmbDataStoreBase<DataTypeDetails | FolderT
|
||||
/**
|
||||
* @description - Save a Data Type.
|
||||
* @param {Array<DataTypeDetails>} dataTypes
|
||||
* @memberof UmbDataTypeStore
|
||||
* @memberof UmbDataTypesStore
|
||||
* @return {*} {Promise<void>}
|
||||
*/
|
||||
async save(dataTypes: Array<DataTypeDetails>): Promise<void> {
|
||||
@@ -52,21 +52,21 @@ export class UmbDataTypeStore extends UmbDataStoreBase<DataTypeDetails | FolderT
|
||||
}
|
||||
|
||||
/**
|
||||
* @description - Add a Data Type to the recycle bin.
|
||||
* @description - Delete a Data Type.
|
||||
* @param {string[]} keys
|
||||
* @memberof UmbDataTypeStore
|
||||
* @memberof UmbDataTypesStore
|
||||
* @return {*} {Promise<void>}
|
||||
*/
|
||||
async trash(keys: string[]): Promise<void> {
|
||||
const res = await fetch('/umbraco/backoffice/data-type/trash', {
|
||||
async deleteItems(keys: string[]): Promise<void> {
|
||||
await fetch('/umbraco/backoffice/data-type/delete', {
|
||||
method: 'POST',
|
||||
body: JSON.stringify(keys),
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
});
|
||||
const data = await res.json();
|
||||
this.update(data);
|
||||
|
||||
this.deleteItems(keys);
|
||||
}
|
||||
|
||||
getTreeRoot(): Observable<Array<FolderTreeItem>> {
|
||||
@@ -23,7 +23,7 @@ export class UmbDataStoreBase<T extends UmbDataStoreIdentifiers> implements UmbD
|
||||
protected _items: BehaviorSubject<Array<T>> = new BehaviorSubject(<Array<T>>[]);
|
||||
public readonly items: Observable<Array<T>> = this._items.asObservable();
|
||||
|
||||
public delete(deletedKeys: Array<string>): void {
|
||||
public deleteItems(deletedKeys: Array<string>): void {
|
||||
const remainingItems = this._items
|
||||
.getValue()
|
||||
.filter((item) => item.key && deletedKeys.includes(item.key) === false);
|
||||
|
||||
@@ -102,7 +102,7 @@ export class UmbUserStore extends UmbDataStoreBase<UserDetails> {
|
||||
},
|
||||
});
|
||||
const deletedKeys = await res.json();
|
||||
this.delete(deletedKeys);
|
||||
this.deleteItems(deletedKeys);
|
||||
} catch (error) {
|
||||
console.error('Delete Users failed', error);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user