Browse Source

Add hover canvas spot

pull/5337/head
Artur Arseniev 3 years ago
parent
commit
649b80e96e
  1. 2
      src/commands/view/SelectComponent.ts
  2. 32
      src/editor/model/Editor.ts

2
src/commands/view/SelectComponent.ts

@ -212,7 +212,7 @@ export default {
},
onOut() {
this.em.setHovered(0);
this.em.setHovered();
},
toggleToolsEl(on: boolean, view: any, opts: any = {}) {

32
src/editor/model/Editor.ts

@ -628,25 +628,41 @@ export default class EditorModel extends Model {
/**
* Hover a component
* @param {Component|HTMLElement} el Component to select
* @param {Component|HTMLElement} cmp Component to select
* @param {Object} [opts={}] Options, optional
* @private
*/
setHovered(el: any, opts: any = {}) {
if (!el) return this.set('componentHovered', '');
setHovered(cmp?: Component | null, opts: any = {}) {
const upHovered = (cmp?: Component, opts?: any) => {
const current = this.getHovered();
const type = CanvasSpotBuiltInTypes.Hover;
this.set('componentHovered', cmp || null, opts);
current?.views.forEach(componentView => {
this.Canvas.removeSpot({ type, componentView });
});
cmp?.views.forEach(componentView => {
this.Canvas.setSpot({ type, componentView });
});
};
if (!cmp) {
return upHovered();
}
const ev = 'component:hover';
let model = getModel(el, undefined);
let model = getModel(cmp, undefined) as Component | undefined;
if (!model) return;
opts.forceChange && this.set('componentHovered', '');
opts.forceChange && upHovered();
this.trigger(`${ev}:before`, model, opts);
// Check for valid hoverable
if (!model.get('hoverable')) {
if (opts.useValid && !opts.abort) {
let parent = model && model.parent();
let parent = model.parent();
while (parent && !parent.get('hoverable')) parent = parent.parent();
model = parent;
} else {
@ -655,13 +671,13 @@ export default class EditorModel extends Model {
}
if (!opts.abort) {
this.set('componentHovered', model, opts);
upHovered(model, opts);
this.trigger(ev, model, opts);
}
}
getHovered() {
return this.get('componentHovered');
return this.get('componentHovered') as Component | undefined;
}
/**

Loading…
Cancel
Save