Browse Source

Add component:input to ComponentsEvents

pull/6540/head
Artur Arseniev 1 year ago
parent
commit
a5a56f0927
  1. 2
      packages/core/src/canvas/model/CanvasSpots.ts
  2. 2
      packages/core/src/commands/view/SelectComponent.ts
  3. 7
      packages/core/src/dom_components/types.ts
  4. 9
      packages/core/src/dom_components/view/ComponentTextView.ts

2
packages/core/src/canvas/model/CanvasSpots.ts

@ -17,7 +17,7 @@ export default class CanvasSpots extends ModuleCollection<CanvasSpot> {
const { em } = this; const { em } = this;
this.refreshDbn = debounce(() => this.refresh(), 0); this.refreshDbn = debounce(() => this.refresh(), 0);
const evToRefreshDbn = `${ComponentsEvents.resize} styleable:change component:input ${ComponentsEvents.update} frame:updated undo redo`; const evToRefreshDbn = `${ComponentsEvents.resize} styleable:change ${ComponentsEvents.input} ${ComponentsEvents.update} frame:updated undo redo`;
this.listenTo(em, evToRefreshDbn, () => this.refreshDbn()); this.listenTo(em, evToRefreshDbn, () => this.refreshDbn());
} }

2
packages/core/src/commands/view/SelectComponent.ts

@ -96,7 +96,7 @@ export default {
methods[method](listenToEl, 'scroll', this.onContainerChange); methods[method](listenToEl, 'scroll', this.onContainerChange);
em[method](`component:toggled ${eventCmpUpdate} undo redo`, this.onSelect, this); em[method](`component:toggled ${eventCmpUpdate} undo redo`, this.onSelect, this);
em[method]('change:componentHovered', this.onHovered, this); em[method]('change:componentHovered', this.onHovered, this);
em[method](`${ComponentsEvents.resize} styleable:change component:input`, this.updateGlobalPos, this); em[method](`${ComponentsEvents.resize} styleable:change ${ComponentsEvents.input}`, this.updateGlobalPos, this);
em[method](`${eventCmpUpdate}:toolbar`, this._upToolbar, this); em[method](`${eventCmpUpdate}:toolbar`, this._upToolbar, this);
em[method]('frame:updated', this.onFrameUpdated, this); em[method]('frame:updated', this.onFrameUpdated, this);
em[method]('canvas:updateTools', this.onFrameUpdated, this); em[method]('canvas:updateTools', this.onFrameUpdated, this);

7
packages/core/src/dom_components/types.ts

@ -91,6 +91,13 @@ export enum ComponentsEvents {
*/ */
render = 'component:render', render = 'component:render',
/**
* @event `component:input` Event triggered on `input` DOM event. This is useful to catch direct input changes in the component (eg. Text component).
* @example
* editor.on('component:input', (component) => { ... });
*/
input = 'component:input',
/** /**
* @event `component:resize` Component resized. This event is triggered when the component is resized in the canvas. * @event `component:resize` Component resized. This event is triggered when the component is resized in the canvas.
* @example * @example

9
packages/core/src/dom_components/view/ComponentTextView.ts

@ -9,6 +9,7 @@ import { getComponentIds } from '../model/Components';
import ComponentText from '../model/ComponentText'; import ComponentText from '../model/ComponentText';
import { ComponentDefinition } from '../model/types'; import { ComponentDefinition } from '../model/types';
import ComponentView from './ComponentView'; import ComponentView from './ComponentView';
import { ComponentsEvents } from '../types';
export default class ComponentTextView<TComp extends ComponentText = ComponentText> extends ComponentView<TComp> { export default class ComponentTextView<TComp extends ComponentText = ComponentText> extends ComponentView<TComp> {
rte?: RichTextEditorModule; rte?: RichTextEditorModule;
@ -217,11 +218,9 @@ export default class ComponentTextView<TComp extends ComponentText = ComponentTe
* @param {Event} e * @param {Event} e
*/ */
onInput() { onInput() {
const evPfx = 'component'; const { model } = this;
const ev = [`${evPfx}:update`, `${evPfx}:input`].join(' '); const events = [ComponentsEvents.update, ComponentsEvents.input];
events.forEach((ev) => model.emitWithEditor(ev, model));
// Update toolbars
this.em?.trigger(ev, this.model);
} }
/** /**

Loading…
Cancel
Save