From d0ca47892a845acffccf785a8efc20e75b29b0e4 Mon Sep 17 00:00:00 2001 From: Kevin Ansfield Date: Fri, 2 Feb 2018 16:22:37 +0100 Subject: [PATCH] Koenig - Move list/card replacement actions into {{koenig-editor}} --- .../addon/components/koenig-editor.js | 33 +++++++++++++++++ .../addon/components/koenig-plus-menu.js | 36 +++++-------------- .../templates/components/koenig-editor.hbs | 5 ++- 3 files changed, 46 insertions(+), 28 deletions(-) diff --git a/ghost/admin/lib/koenig-editor/addon/components/koenig-editor.js b/ghost/admin/lib/koenig-editor/addon/components/koenig-editor.js index 2d33b22831..db6251ba31 100644 --- a/ghost/admin/lib/koenig-editor/addon/components/koenig-editor.js +++ b/ghost/admin/lib/koenig-editor/addon/components/koenig-editor.js @@ -297,6 +297,39 @@ export default Component.extend({ toggleSection(sectionTagName) { let editor = this.get('editor'); editor.toggleSection(sectionTagName); + }, + + replaceWithCardSection(cardName, range) { + let editor = this.get('editor'); + let {head: {section}} = range; + + editor.run((postEditor) => { + let {builder} = postEditor; + let card = builder.createCardSection(cardName); + let needsTrailingParagraph = !section.next; + + postEditor.replaceSection(section, card); + + if (needsTrailingParagraph) { + let newSection = postEditor.builder.createMarkupSection('p'); + postEditor.insertSectionAtEnd(newSection); + postEditor.setRange(newSection.tailPosition()); + } + }); + }, + + replaceWithListSection(listType, range) { + let editor = this.get('editor'); + let {head: {section}} = range; + + editor.run((postEditor) => { + let {builder} = postEditor; + let item = builder.createListItem(); + let listSection = builder.createListSection(listType, [item]); + + postEditor.replaceSection(section, listSection); + postEditor.setRange(listSection.headPosition()); + }); } }, diff --git a/ghost/admin/lib/koenig-editor/addon/components/koenig-plus-menu.js b/ghost/admin/lib/koenig-editor/addon/components/koenig-plus-menu.js index e222055572..c1e51331d5 100644 --- a/ghost/admin/lib/koenig-editor/addon/components/koenig-plus-menu.js +++ b/ghost/admin/lib/koenig-editor/addon/components/koenig-plus-menu.js @@ -25,6 +25,10 @@ export default Component.extend({ _hasCursorButton: false, _onMousemoveHandler: null, + // closure actions + replaceWithCardSection() {}, + replaceWithListSection() {}, + style: computed('top', function () { return htmlSafe(`top: ${this.get('top')}px`); }), @@ -77,42 +81,20 @@ export default Component.extend({ }, replaceWithCardSection(cardName) { - let editor = this.get('editor'); let range = this._editorRange; - let {head: {section}} = range; - editor.run((postEditor) => { - let {builder} = postEditor; - let card = builder.createCardSection(cardName); - let needsTrailingParagraph = !section.next; + this.replaceWithCardSection(cardName, range); - postEditor.replaceSection(section, card); - - if (needsTrailingParagraph) { - let newSection = postEditor.builder.createMarkupSection('p'); - postEditor.insertSectionAtEnd(newSection); - postEditor.setRange(newSection.tailPosition()); - } - - this._hideButton(); - this._hideMenu(); - }); + this._hideButton(); + this._hideMenu(); }, replaceWithListSection(listType) { - let editor = this.get('editor'); let range = this._editorRange; - let {head: {section}} = range; - editor.run((postEditor) => { - let {builder} = postEditor; - let item = builder.createListItem(); - let listSection = builder.createListSection(listType, [item]); + this.replaceWithListSection(listType, range); - postEditor.replaceSection(section, listSection); - postEditor.setRange(listSection.headPosition()); - this._hideMenu(); - }); + this._hideMenu(); } }, diff --git a/ghost/admin/lib/koenig-editor/addon/templates/components/koenig-editor.hbs b/ghost/admin/lib/koenig-editor/addon/templates/components/koenig-editor.hbs index aa0d0f8891..1b4a50e81e 100644 --- a/ghost/admin/lib/koenig-editor/addon/templates/components/koenig-editor.hbs +++ b/ghost/admin/lib/koenig-editor/addon/templates/components/koenig-editor.hbs @@ -68,8 +68,11 @@ {{!-- (+) icon and pop-up menu --}} {{koenig-plus-menu - editorRange=selectedRange editor=editor + editorRange=selectedRange + replaceWithCardSection=(action "replaceWithCardSection") + replaceWithListSection=(action "replaceWithListSection") +}} }} {{#each componentCards as |card|}}