diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/trees/actions/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/trees/actions/index.ts index 3fdccd39ae..413ab5fb33 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/trees/actions/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/trees/actions/index.ts @@ -3,7 +3,6 @@ export * from './action-page.service'; export * from './actions.service'; export * from './tree-action.element'; -export * from './tree-action-create-page.element'; -export * from './tree-action-create-page-2.element'; -export * from './tree-action-create.element'; -export * from './tree-action-delete.element'; +export * from '../documents/actions/action-document-paged-page.element'; +export * from '../documents/actions/action-document-paged-page-2.element'; +export * from '../documents/actions/action-document-paged.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/trees/actions/tree-action-delete.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/trees/actions/tree-action-delete.element.ts deleted file mode 100644 index bc2b527ef5..0000000000 --- a/src/Umbraco.Web.UI.Client/src/backoffice/trees/actions/tree-action-delete.element.ts +++ /dev/null @@ -1,55 +0,0 @@ -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 { UmbNodeStore } from '../../../core/stores/node.store'; -import UmbActionElement from './action.element'; - -@customElement('umb-tree-action-delete') -export class UmbTreeActionDeleteElement extends UmbActionElement { - static styles = [UUITextStyles, css``]; - - private _modalService?: UmbModalService; - private _nodeStore?: UmbNodeStore; - - constructor() { - super(); - - this.consumeContext('umbModalService', (modalService: UmbModalService) => { - this._modalService = modalService; - }); - - this.consumeContext('umbNodeStore', (nodeStore: UmbNodeStore) => { - this._nodeStore = nodeStore; - }); - } - - private _handleLabelClick() { - const modalHandler = this._modalService?.confirm({ - headline: 'Delete page 1', - content: 'Are you sure you want to delete this page?', - color: 'danger', - }); - - modalHandler?.onClose.then(({ confirmed }: any) => { - if (confirmed && this._actionService) { - this._nodeStore?.trash(this._entity.key); - this._actionService.close(); - } - }); - } - - render() { - return html` - - `; - } -} - -export default UmbTreeActionDeleteElement; - -declare global { - interface HTMLElementTagNameMap { - 'umb-tree-action-delete': UmbTreeActionDeleteElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/trees/documents/actions/action-document-create.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/trees/documents/actions/action-document-create.element.ts new file mode 100644 index 0000000000..9a3c72e954 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/trees/documents/actions/action-document-create.element.ts @@ -0,0 +1,34 @@ +import { UUITextStyles } from '@umbraco-ui/uui-css'; +import { css, html } from 'lit'; +import { customElement } from 'lit/decorators.js'; +import UmbActionElement from '../../actions/action.element'; + +@customElement('umb-tree-action-document-create') +export default class UmbTreeActionDocumentCreateElement extends UmbActionElement { + static styles = [UUITextStyles, css``]; + + // TODO: how do we handle the href? + private _constructUrl() { + return `/section/content/${this._activeTreeItem?.type}/${this._activeTreeItem?.key}/view/content?create=true`; + } + + // TODO: change to href. This is a temporary solution to get the link to work. For some reason query params gets removed when using href. + private _handleLabelClick() { + if (!this._actionService) return; + const href = this._constructUrl(); + history.pushState(null, '', href); + this._actionService.close(); + } + + render() { + return html` + + `; + } +} + +declare global { + interface HTMLElementTagNameMap { + 'umb-tree-action-document-create': UmbTreeActionDocumentCreateElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/trees/documents/actions/action-document-delete.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/trees/documents/actions/action-document-delete.element.ts new file mode 100644 index 0000000000..be0e6e7b31 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/trees/documents/actions/action-document-delete.element.ts @@ -0,0 +1,55 @@ +import { UUITextStyles } from '@umbraco-ui/uui-css'; +import { css, html } from 'lit'; +import { customElement } from 'lit/decorators.js'; +import { UmbContextConsumerMixin } from '../../../../core/context'; +import { UmbModalService } from '../../../../core/services/modal'; +import { UmbNodeStore } from '../../../../core/stores/node.store'; +import UmbActionElement from '../../actions/action.element'; + +@customElement('umb-tree-action-document-delete') +export default class UmbTreeActionDocumentDeleteElement extends UmbContextConsumerMixin(UmbActionElement) { + static styles = [UUITextStyles, css``]; + + private _modalService?: UmbModalService; + private _nodeStore?: UmbNodeStore; + + connectedCallback(): void { + super.connectedCallback(); + + this.consumeContext('umbModalService', (modalService: UmbModalService) => { + this._modalService = modalService; + }); + + this.consumeContext('umbNodeStore', (nodeStore: UmbNodeStore) => { + this._nodeStore = nodeStore; + }); + } + + 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._actionService && this._nodeStore && this._activeTreeItem) { + this._nodeStore?.trash(this._activeTreeItem.key); + this._actionService.close(); + } + }); + } + + render() { + return html` + + `; + } +} + +declare global { + interface HTMLElementTagNameMap { + 'umb-tree-action-document-delete': UmbTreeActionDocumentDeleteElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/trees/actions/tree-action-create-page-2.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/trees/documents/actions/action-document-paged-page-2.element.ts similarity index 93% rename from src/Umbraco.Web.UI.Client/src/backoffice/trees/actions/tree-action-create-page-2.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/trees/documents/actions/action-document-paged-page-2.element.ts index daf4d79eb6..8f8dd15fb9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/trees/actions/tree-action-create-page-2.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/trees/documents/actions/action-document-paged-page-2.element.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement } from 'lit/decorators.js'; -import UmbActionElement from './action.element'; +import UmbActionElement from '../../actions/action.element'; @customElement('umb-tree-action-create-page-2') export class UmbTreeActionCreatePage2Element extends UmbActionElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/trees/actions/tree-action-create-page.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/trees/documents/actions/action-document-paged-page.element.ts similarity index 93% rename from src/Umbraco.Web.UI.Client/src/backoffice/trees/actions/tree-action-create-page.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/trees/documents/actions/action-document-paged-page.element.ts index 5aa29fe437..f7560e902f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/trees/actions/tree-action-create-page.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/trees/documents/actions/action-document-paged-page.element.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement } from 'lit/decorators.js'; -import UmbActionElement from './action.element'; +import UmbActionElement from '../../actions/action.element'; @customElement('umb-tree-action-create-page') export class UmbTreeActionCreatePageElement extends UmbActionElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/trees/actions/tree-action-create.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/trees/documents/actions/action-document-paged.element.ts similarity index 92% rename from src/Umbraco.Web.UI.Client/src/backoffice/trees/actions/tree-action-create.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/trees/documents/actions/action-document-paged.element.ts index a56581667c..019d67beb7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/trees/actions/tree-action-create.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/trees/documents/actions/action-document-paged.element.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement } from 'lit/decorators.js'; -import UmbActionElement from './action.element'; +import UmbActionElement from '../../actions/action.element'; @customElement('umb-tree-action-create') export class UmbTreeActionCreateElement extends UmbActionElement { diff --git a/src/Umbraco.Web.UI.Client/src/temp-internal-manifests.ts b/src/Umbraco.Web.UI.Client/src/temp-internal-manifests.ts index 0590517110..ed11727d90 100644 --- a/src/Umbraco.Web.UI.Client/src/temp-internal-manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/temp-internal-manifests.ts @@ -386,12 +386,11 @@ export const internalManifests: Array Promise import('./backoffice/trees/actions/tree-action-create.element'), + name: 'Document Tree Item Action Create', + loader: () => import('./backoffice/trees/documents/actions/action-document-create.element'), meta: { trees: ['Umb.Tree.Content'], label: 'Create', @@ -402,8 +401,8 @@ export const internalManifests: Array Promise import('./backoffice/trees/actions/tree-action-delete.element'), + name: 'Document Tree Item Action Delete', + loader: () => import('./backoffice/trees/documents/actions/action-document-delete.element'), meta: { trees: ['Umb.Tree.Content'], label: 'Delete', @@ -411,7 +410,18 @@ export const internalManifests: Array Promise import('./backoffice/trees/documents/actions/action-document-paged.element'), + meta: { + trees: ['Umb.Tree.Content'], + label: 'Paged', + icon: 'favorite', + weight: 100, + }, + }, { type: 'treeItemAction', alias: 'Umb.TreeItemAction.DataType.Create',