diff --git a/client/web/compose/src/components/Admin/Page/Tree.vue b/client/web/compose/src/components/Admin/Page/Tree.vue index c6c0b26f11..d04695c10e 100644 --- a/client/web/compose/src/components/Admin/Page/Tree.vue +++ b/client/web/compose/src/components/Admin/Page/Tree.vue @@ -3,7 +3,7 @@
{{ item.title }} @@ -88,7 +88,7 @@ data-test-id="dropdown-permissions" variant="extra-light" size="sm" - class="permissions-dropdown ml-1" + class="permissions-dropdown ml-2" > @@ -191,6 +237,7 @@ export default { methods: { ...mapActions({ + deletePage: 'page/delete', updatePage: 'page/update', }), @@ -216,10 +263,11 @@ export default { const pageIDs = afterParent.children.map(p => p.pageID) if (pageIDs.length) { this.$ComposeAPI.pageReorder({ namespaceID, selfID: afterID, pageIDs }).then(() => { - return this.$store.dispatch('page/load', { namespaceID, clear: true, force: true }) - }).then(() => { - this.toastSuccess(this.$t('reordered')) this.$emit('reorder') + + setTimeout(() => { + this.$store.dispatch('page/load', { namespaceID, clear: true, force: true }) + }, 1000) }) .catch(this.toastErrorHandler(this.$t('pageMoveFailed'))) } @@ -239,6 +287,23 @@ export default { } }, + handleDeletePage (page, strategy = 'abort') { + this.$set(page, 'processingDelete', true) + + this.deletePage({ ...page, strategy }).then(() => { + setTimeout(() => { + this.$emit('reorder') + this.toastSuccess(this.$t('notification:page.deleted')) + }, 300) + }) + .catch(this.toastErrorHandler(this.$t('notification:page.deleteFailed'))) + .finally(() => { + setTimeout(() => { + this.$set(page, 'processingDelete', false) + }, 300) + }) + }, + /** * Validates page, returns true if there are no problems with it * @@ -252,6 +317,10 @@ export default { return true }, + + hasChildren (page) { + return page.children && page.children.length > 0 + }, }, } @@ -265,19 +334,20 @@ export default {