Browse Source

Up SelectComponent

pull/5337/head
Artur Arseniev 3 years ago
parent
commit
2a9bb7b282
  1. 23
      src/commands/view/SelectComponent.ts
  2. 2
      src/utils/dom.ts
  3. 6
      src/utils/mixins.ts

23
src/commands/view/SelectComponent.ts

@ -4,7 +4,7 @@ import Component from '../../dom_components/model/Component';
import Toolbar from '../../dom_components/model/Toolbar'; import Toolbar from '../../dom_components/model/Toolbar';
import ToolbarView from '../../dom_components/view/ToolbarView'; import ToolbarView from '../../dom_components/view/ToolbarView';
import { isDoc, isTaggableNode, isVisible, off, on } from '../../utils/dom'; import { isDoc, isTaggableNode, isVisible, off, on } from '../../utils/dom';
import { getComponentView, getUnitFromValue, getViewEl, hasWin } from '../../utils/mixins'; import { getComponentModel, getComponentView, getUnitFromValue, getViewEl, hasWin } from '../../utils/mixins';
import { CommandObject } from './CommandAbstract'; import { CommandObject } from './CommandAbstract';
let showOffsets: boolean; let showOffsets: boolean;
@ -110,25 +110,24 @@ export default {
* @param {Object} e * @param {Object} e
* @private * @private
*/ */
onHover(e: any) { onHover(ev: Event) {
e.stopPropagation(); ev.stopPropagation();
const { em } = this; const { em } = this;
const trg = e.target; const el = ev.target as HTMLElement;
const view = getComponentView(trg); const view = getComponentView(el);
const frameView = view?.frameView; const frameView = view?.frameView;
const $el = $(trg); let model = view?.model;
let model = $el.data('model');
// Get first valid model // Get first valid model
if (!model) { if (!model) {
let parent = $el.parent(); let parentEl = el.parentNode;
while (!model && parent.length && !isDoc(parent[0])) { while (!model && parentEl && !isDoc(parentEl)) {
model = parent.data('model'); model = getComponentModel(parentEl);
parent = parent.parent(); parentEl = parentEl.parentNode;
} }
} }
this.currentDoc = trg.ownerDocument; this.currentDoc = el.ownerDocument;
em.setHovered(model, { useValid: true }); em.setHovered(model, { useValid: true });
frameView && em.setCurrentFrame(frameView); frameView && em.setCurrentFrame(frameView);
}, },

2
src/utils/dom.ts

@ -19,7 +19,7 @@ const KEY_CHILD = 'children';
export const motionsEv = 'transitionend oTransitionEnd transitionend webkitTransitionEnd'; export const motionsEv = 'transitionend oTransitionEnd transitionend webkitTransitionEnd';
export const isDoc = (el?: HTMLElement) => el && el.nodeType === 9; export const isDoc = (el?: Node): el is Document => el?.nodeType === Node.DOCUMENT_NODE;
export const removeEl = (el?: HTMLElement) => { export const removeEl = (el?: HTMLElement) => {
const parent = el && el.parentNode; const parent = el && el.parentNode;

6
src/utils/mixins.ts

@ -195,7 +195,11 @@ const isComponent = (obj: any) => obj && obj.toHTML;
const isRule = (obj: any) => obj && obj.toCSS; const isRule = (obj: any) => obj && obj.toCSS;
const getViewEl = <T extends any>(el: any): T | undefined => el.__gjsv; const getViewEl = <T extends any>(el: any): T | undefined => el.__gjsv;
export const getComponentView = (el: HTMLElement) => getViewEl<ComponentView>(el);
export const getComponentView = (el: Node) => getViewEl<ComponentView>(el);
export const getComponentModel = (el: Node) => getComponentView(el)?.model;
const setViewEl = (el: any, view: any) => { const setViewEl = (el: any, view: any) => {
el.__gjsv = view; el.__gjsv = view;
}; };

Loading…
Cancel
Save