migrate tree actions to entity actions
This commit is contained in:
@@ -26,7 +26,7 @@ import { UmbMediaTreeStore } from './media/media/repository/media.tree.store';
|
||||
import { UmbMemberTypeDetailStore } from './members/member-types/member-type.detail.store';
|
||||
import { UmbMemberTypeTreeStore } from './members/member-types/member-type.tree.store';
|
||||
import { UmbMemberGroupDetailStore } from './members/member-groups/member-group.detail.store';
|
||||
import { UmbMemberGroupTreeStore } from './members/member-groups/tree/data/member-group.tree.store';
|
||||
import { UmbMemberGroupTreeStore } from './members/member-groups/repository/member-group.tree.store';
|
||||
import { UmbMemberDetailStore } from './members/members/member.detail.store';
|
||||
import { UmbMemberTreeStore } from './members/members/tree/data/member.tree.store';
|
||||
import { UmbDictionaryDetailStore } from './translation/dictionary/dictionary.detail.store';
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
import { UmbDeleteEntityAction } from '../../../shared/entity-actions/delete/delete.action';
|
||||
import { ManifestEntityAction } from 'libs/extensions-registry/entity-action.models';
|
||||
|
||||
const entityActions: Array<ManifestEntityAction> = [
|
||||
{
|
||||
type: 'entityAction',
|
||||
alias: 'Umb.EntityAction.MemberGroup.Delete',
|
||||
name: 'Delete Member Group Entity Action ',
|
||||
meta: {
|
||||
entityType: 'member-group',
|
||||
icon: 'umb:trash',
|
||||
label: 'Delete',
|
||||
api: UmbDeleteEntityAction,
|
||||
repositoryAlias: 'Umb.Repository.MemberGroup',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
export const manifests = [...entityActions];
|
||||
@@ -1,5 +1,13 @@
|
||||
import { manifests as repositoryManifests } from './repository/manifests';
|
||||
import { manifests as entityActionManifests } from './entity-actions/manifests';
|
||||
import { manifests as sidebarMenuItemManifests } from './sidebar-menu-item/manifests';
|
||||
import { manifests as treeManifests } from './tree/manifests';
|
||||
import { manifests as workspaceManifests } from './workspace/manifests';
|
||||
|
||||
export const manifests = [...sidebarMenuItemManifests, ...treeManifests, ...workspaceManifests];
|
||||
export const manifests = [
|
||||
...repositoryManifests,
|
||||
...entityActionManifests,
|
||||
...sidebarMenuItemManifests,
|
||||
...treeManifests,
|
||||
...workspaceManifests,
|
||||
];
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
import { UmbMemberGroupRepository } from './member-group.repository';
|
||||
import { ManifestRepository } from 'libs/extensions-registry/repository.models';
|
||||
|
||||
export const MEMBER_GROUP_REPOSITORY_ALIAS = 'Umb.Repository.MemberGroup';
|
||||
|
||||
const repository: ManifestRepository = {
|
||||
type: 'repository',
|
||||
alias: MEMBER_GROUP_REPOSITORY_ALIAS,
|
||||
name: 'Member Group Repository',
|
||||
class: UmbMemberGroupRepository,
|
||||
};
|
||||
|
||||
export const manifests = [repository];
|
||||
@@ -4,9 +4,10 @@ import { UmbControllerHostInterface } from '@umbraco-cms/controller';
|
||||
import { UmbNotificationService, UMB_NOTIFICATION_SERVICE_CONTEXT_TOKEN } from '@umbraco-cms/notification';
|
||||
import { UmbContextConsumerController } from '@umbraco-cms/context-api';
|
||||
import { ProblemDetails } from '@umbraco-cms/backend-api';
|
||||
import type { UmbTreeRepository } from '@umbraco-cms/models';
|
||||
import type { UmbTreeRepository } from 'libs/repository/tree-repository.interface';
|
||||
import type { MemberGroupDetails } from '@umbraco-cms/models';
|
||||
|
||||
export class UmbMemberGroupTreeRepository implements UmbTreeRepository {
|
||||
export class UmbMemberGroupRepository implements UmbTreeRepository {
|
||||
#host: UmbControllerHostInterface;
|
||||
#dataSource: MemberGroupTreeServerDataSource;
|
||||
#treeStore?: UmbMemberGroupTreeStore;
|
||||
@@ -41,7 +42,7 @@ export class UmbMemberGroupTreeRepository implements UmbTreeRepository {
|
||||
}
|
||||
}
|
||||
|
||||
async requestRootItems() {
|
||||
async requestRootTreeItems() {
|
||||
await this.#init;
|
||||
|
||||
const { data, error } = await this.#dataSource.getRootItems();
|
||||
@@ -53,12 +54,12 @@ export class UmbMemberGroupTreeRepository implements UmbTreeRepository {
|
||||
return { data, error };
|
||||
}
|
||||
|
||||
async requestChildrenOf(parentKey: string | null) {
|
||||
async requestTreeItemsOf(parentKey: string | null) {
|
||||
const error: ProblemDetails = { title: 'Not implemented' };
|
||||
return { data: undefined, error };
|
||||
return { data: undefined, error };
|
||||
}
|
||||
|
||||
async requestItems(keys: Array<string>) {
|
||||
async requestTreeItems(keys: Array<string>) {
|
||||
await this.#init;
|
||||
|
||||
if (!keys) {
|
||||
@@ -71,18 +72,23 @@ export class UmbMemberGroupTreeRepository implements UmbTreeRepository {
|
||||
return { data, error };
|
||||
}
|
||||
|
||||
async rootItems() {
|
||||
async rootTreeItems() {
|
||||
await this.#init;
|
||||
return this.#treeStore!.rootItems();
|
||||
}
|
||||
|
||||
async childrenOf(parentKey: string | null) {
|
||||
async treeItemsOf(parentKey: string | null) {
|
||||
await this.#init;
|
||||
return this.#treeStore!.childrenOf(parentKey);
|
||||
}
|
||||
|
||||
async items(keys: Array<string>) {
|
||||
async treeItems(keys: Array<string>) {
|
||||
await this.#init;
|
||||
return this.#treeStore!.items(keys);
|
||||
}
|
||||
|
||||
async saveDetail(memberGroup: MemberGroupDetails) {
|
||||
await this.#init;
|
||||
alert('implement save');
|
||||
}
|
||||
}
|
||||
@@ -1,57 +0,0 @@
|
||||
import { UUITextStyles } from '@umbraco-ui/uui-css';
|
||||
import { css, html } from 'lit';
|
||||
import { customElement } from 'lit/decorators.js';
|
||||
import { UmbModalService, UMB_MODAL_SERVICE_CONTEXT_TOKEN } from '../../../../../core/modal';
|
||||
import UmbTreeItemActionElement from '../../../../shared/components/tree/action/tree-item-action.element';
|
||||
import { UmbMemberGroupTreeStore, UMB_MEMBER_GROUP_TREE_STORE_CONTEXT_TOKEN } from '../data/member-group.tree.store';
|
||||
|
||||
@customElement('umb-tree-action-member-group-delete')
|
||||
export default class UmbTreeActionMemberGroupDeleteElement extends UmbTreeItemActionElement {
|
||||
static styles = [UUITextStyles, css``];
|
||||
|
||||
private _modalService?: UmbModalService;
|
||||
private _memberGroupTreeStore?: UmbMemberGroupTreeStore;
|
||||
|
||||
connectedCallback(): void {
|
||||
super.connectedCallback();
|
||||
|
||||
this.consumeContext(UMB_MODAL_SERVICE_CONTEXT_TOKEN, (modalService) => {
|
||||
this._modalService = modalService;
|
||||
});
|
||||
|
||||
this.consumeContext(UMB_MEMBER_GROUP_TREE_STORE_CONTEXT_TOKEN, (memberGroupTreeStore) => {
|
||||
this._memberGroupTreeStore = memberGroupTreeStore;
|
||||
});
|
||||
}
|
||||
|
||||
private _handleLabelClick() {
|
||||
const modalHandler = this._modalService?.confirm({
|
||||
headline: `Delete ${this._activeTreeItem?.name ?? 'item'}`,
|
||||
content: 'Are you sure you want to delete this item?',
|
||||
color: 'danger',
|
||||
confirmLabel: 'Delete',
|
||||
});
|
||||
|
||||
modalHandler?.onClose().then(({ confirmed }: any) => {
|
||||
if (confirmed && this._treeContextMenuService && this._memberGroupTreeStore && this._activeTreeItem) {
|
||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
/* @ts-ignore */
|
||||
// TODO: ignoring this error for now, because we will change this when entity actions are merged
|
||||
this._memberGroupTreeStore?.delete([this._activeTreeItem.key]);
|
||||
this._treeContextMenuService.close();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
render() {
|
||||
return html`<uui-menu-item label=${this.treeAction?.meta.label ?? ''} @click-label="${this._handleLabelClick}">
|
||||
<uui-icon slot="icon" name=${this.treeAction?.meta.icon ?? ''}></uui-icon>
|
||||
</uui-menu-item>`;
|
||||
}
|
||||
}
|
||||
|
||||
declare global {
|
||||
interface HTMLElementTagNameMap {
|
||||
'umb-tree-action-member-group-delete': UmbTreeActionMemberGroupDeleteElement;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
import { UmbMemberGroupTreeRepository } from './data/member-group.tree.repository';
|
||||
import type { ManifestTree, ManifestTreeItemAction } from '@umbraco-cms/models';
|
||||
import { UmbMemberGroupRepository } from '../repository/member-group.repository';
|
||||
import type { ManifestTree } from '@umbraco-cms/models';
|
||||
|
||||
const treeAlias = 'Umb.Tree.MemberGroups';
|
||||
|
||||
@@ -9,23 +9,8 @@ const tree: ManifestTree = {
|
||||
name: 'Member Groups Tree',
|
||||
weight: 100,
|
||||
meta: {
|
||||
repository: UmbMemberGroupTreeRepository
|
||||
repository: UmbMemberGroupRepository,
|
||||
},
|
||||
};
|
||||
|
||||
const treeItemActions: Array<ManifestTreeItemAction> = [
|
||||
{
|
||||
type: 'treeItemAction',
|
||||
alias: 'Umb.TreeItemAction.MemberGroup.Delete',
|
||||
name: 'Member Group Tree Item Action Delete',
|
||||
loader: () => import('./actions/action-member-group-delete.element'),
|
||||
weight: 100,
|
||||
meta: {
|
||||
entityType: 'member-group',
|
||||
label: 'Delete',
|
||||
icon: 'delete',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
export const manifests = [tree, ...treeItemActions];
|
||||
export const manifests = [tree];
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import { MEMBER_GROUP_REPOSITORY_ALIAS } from '../repository/manifests';
|
||||
import { UmbSaveWorkspaceAction } from '../../../shared/workspace-actions/save.action';
|
||||
import type { ManifestWorkspace, ManifestWorkspaceAction, ManifestWorkspaceView } from '@umbraco-cms/models';
|
||||
|
||||
const workspace: ManifestWorkspace = {
|
||||
@@ -10,7 +12,6 @@ const workspace: ManifestWorkspace = {
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
const workspaceViews: Array<ManifestWorkspaceView> = [
|
||||
{
|
||||
type: 'workspaceView',
|
||||
@@ -30,13 +31,15 @@ const workspaceViews: Array<ManifestWorkspaceView> = [
|
||||
const workspaceActions: Array<ManifestWorkspaceAction> = [
|
||||
{
|
||||
type: 'workspaceAction',
|
||||
alias: 'Umb.WorkspaceAction.MemberGroup.Save',
|
||||
alias: 'Umb.WorkspaceAction.MemberGroup.SaveAndPublish',
|
||||
name: 'Save Member Group Workspace Action',
|
||||
loader: () => import('src/backoffice/shared/components/workspace/actions/save/workspace-action-node-save.element'),
|
||||
meta: {
|
||||
workspaces: ['Umb.Workspace.MemberGroup'],
|
||||
label: 'Save',
|
||||
look: 'primary',
|
||||
color: 'positive',
|
||||
repositoryAlias: MEMBER_GROUP_REPOSITORY_ALIAS,
|
||||
api: UmbSaveWorkspaceAction,
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
@@ -4,7 +4,7 @@ import { UmbControllerHostInterface } from '@umbraco-cms/controller';
|
||||
import { UmbNotificationService, UMB_NOTIFICATION_SERVICE_CONTEXT_TOKEN } from '@umbraco-cms/notification';
|
||||
import { UmbContextConsumerController } from '@umbraco-cms/context-api';
|
||||
import { ProblemDetails } from '@umbraco-cms/backend-api';
|
||||
import type { UmbTreeRepository } from '@umbraco-cms/models';
|
||||
import { UmbTreeRepository } from '@umbraco-cms/repository';
|
||||
|
||||
export class UmbMemberTreeRepository implements UmbTreeRepository {
|
||||
#host: UmbControllerHostInterface;
|
||||
@@ -41,7 +41,7 @@ export class UmbMemberTreeRepository implements UmbTreeRepository {
|
||||
}
|
||||
}
|
||||
|
||||
async requestRootItems() {
|
||||
async requestRootTreeItems() {
|
||||
await this.#init;
|
||||
|
||||
const { data, error } = await this.#dataSource.getRootItems();
|
||||
@@ -53,12 +53,12 @@ export class UmbMemberTreeRepository implements UmbTreeRepository {
|
||||
return { data, error };
|
||||
}
|
||||
|
||||
async requestChildrenOf(parentKey: string | null) {
|
||||
async requestTreeItemsOf(parentKey: string | null) {
|
||||
const error: ProblemDetails = { title: 'Not implemented' };
|
||||
return { data: undefined, error };
|
||||
return { data: undefined, error };
|
||||
}
|
||||
|
||||
async requestItems(keys: Array<string>) {
|
||||
async requestTreeItems(keys: Array<string>) {
|
||||
await this.#init;
|
||||
|
||||
if (!keys) {
|
||||
@@ -71,17 +71,17 @@ export class UmbMemberTreeRepository implements UmbTreeRepository {
|
||||
return { data, error };
|
||||
}
|
||||
|
||||
async rootItems() {
|
||||
async rootTreeItems() {
|
||||
await this.#init;
|
||||
return this.#treeStore!.rootItems();
|
||||
}
|
||||
|
||||
async childrenOf(parentKey: string | null) {
|
||||
async treeItemsOf(parentKey: string | null) {
|
||||
await this.#init;
|
||||
return this.#treeStore!.childrenOf(parentKey);
|
||||
}
|
||||
|
||||
async items(keys: Array<string>) {
|
||||
async treeItems(keys: Array<string>) {
|
||||
await this.#init;
|
||||
return this.#treeStore!.items(keys);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user