diff --git a/src/commands/index.ts b/src/commands/index.ts index 58fbbda5c..81ef6b9f0 100644 --- a/src/commands/index.ts +++ b/src/commands/index.ts @@ -157,7 +157,7 @@ export default class CommandsModule extends Module em.stopDefault(defComOptions); const altMode = includes(modes, mode); - targets.forEach(trg => trg.trigger('disable')); + targets.forEach(trg => trg.trigger('disable', { fromMove: true })); // Without setTimeout the ghost image disappears nativeDrag ? setTimeout(hideTlb, 0) : hideTlb(); diff --git a/src/common/index.ts b/src/common/index.ts index d44186854..cece6f8ed 100644 --- a/src/common/index.ts +++ b/src/common/index.ts @@ -9,6 +9,8 @@ export type SetOptions = Backbone.ModelSetOptions & { avoidStore?: boolean }; export type AddOptions = Backbone.AddOptions & { temporary?: boolean }; +export type DisableOptions = { fromMove?: boolean }; + export type RemoveOptions = Backbone.Silenceable; export type EventHandler = Backbone.EventHandler; diff --git a/src/dom_components/view/ComponentTextView.ts b/src/dom_components/view/ComponentTextView.ts index 543ef8728..2292e4363 100644 --- a/src/dom_components/view/ComponentTextView.ts +++ b/src/dom_components/view/ComponentTextView.ts @@ -1,5 +1,5 @@ import { bindAll } from 'underscore'; -import { ObjectAny } from '../../common'; +import { DisableOptions, ObjectAny } from '../../common'; import RichTextEditorModule from '../../rich_text_editor'; import RichTextEditor from '../../rich_text_editor/model/RichTextEditor'; import { off, on } from '../../utils/dom'; @@ -99,15 +99,15 @@ export default class ComponentTextView extends ComponentView { this.toggleEvents(true); } - onDisable() { - this.disableEditing(); + onDisable(opts?: DisableOptions) { + this.disableEditing(opts); } /** * Disable element content editing * @private * */ - async disableEditing(opts = {}) { + async disableEditing(opts: DisableOptions = {}) { const { model, rte, activeRte, em } = this; // There are rare cases when disableEditing is called when the view is already removed // so, we have to check for the model, this will avoid breaking stuff. @@ -115,7 +115,7 @@ export default class ComponentTextView extends ComponentView { if (rte) { try { - await rte.disable(this, activeRte); + await rte.disable(this, activeRte, opts); } catch (err) { em.logError(err as any); } @@ -242,8 +242,8 @@ export default class ComponentTextView extends ComponentView { // The ownerDocument is from the frame var elDocs = [this.el.ownerDocument, document]; - mixins.off(elDocs, 'mousedown', this.onDisable); - mixins[method](elDocs, 'mousedown', this.onDisable); + mixins.off(elDocs, 'mousedown', this.onDisable as any); + mixins[method](elDocs, 'mousedown', this.onDisable as any); em[method]('toolbar:run:before', this.onDisable); if (model) { model[method]('removed', this.onDisable); diff --git a/src/dom_components/view/ComponentView.ts b/src/dom_components/view/ComponentView.ts index f2b2cecb1..f46692221 100644 --- a/src/dom_components/view/ComponentView.ts +++ b/src/dom_components/view/ComponentView.ts @@ -1,7 +1,7 @@ import { each, isEmpty, keys, result } from 'underscore'; import { CanvasSpotBuiltInTypes } from '../../canvas/model/CanvasSpot'; import FrameView from '../../canvas/view/FrameView'; -import { ExtractMethods, ObjectAny, View } from '../../common'; +import { DisableOptions, ExtractMethods, ObjectAny, View } from '../../common'; import { GetSetRuleOptions } from '../../css_composer'; import Editor from '../../editor'; import EditorModel from '../../editor/model/Editor'; @@ -140,7 +140,7 @@ Component> { /** * Callback executed when the `disable` event is triggered on component */ - onDisable() {} + onDisable(opts?: DisableOptions) {} remove() { super.remove(); diff --git a/src/rich_text_editor/index.ts b/src/rich_text_editor/index.ts index 75617ab30..007a8d6f4 100644 --- a/src/rich_text_editor/index.ts +++ b/src/rich_text_editor/index.ts @@ -39,7 +39,7 @@ import { debounce, isFunction, isString } from 'underscore'; import { Module } from '../abstract'; -import { Debounced, Model } from '../common'; +import { Debounced, DisableOptions, Model } from '../common'; import ComponentView from '../dom_components/view/ComponentView'; import EditorModel from '../editor/model/Editor'; import { createEl, cx, on, removeEl } from '../utils/dom'; @@ -398,7 +398,7 @@ export default class RichTextEditorModule extends Module