mirror of
https://github.com/Tencent/tmagic-editor.git
synced 2025-04-06 03:57:56 +08:00
feat(stage): 选中节点时,给所有父节点添加一个className
This commit is contained in:
parent
bb97c4c6d0
commit
d47828976a
@ -160,7 +160,7 @@ export default class StageCore extends EventEmitter {
|
||||
if (this.renderer.contentWindow) {
|
||||
removeSelectedClassName(this.renderer.contentWindow.document);
|
||||
if (this.selectedDom) {
|
||||
addSelectedClassName(this.selectedDom);
|
||||
addSelectedClassName(this.selectedDom, this.renderer.contentWindow.document);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -19,6 +19,16 @@
|
||||
import { Mode, SELECTED_CLASS } from './const';
|
||||
import type { Offset } from './types';
|
||||
|
||||
const getParents = (el: Element, relative: Element) => {
|
||||
let cur: Element | null = el.parentElement;
|
||||
const parents: Element[] = [];
|
||||
while (cur && cur !== relative) {
|
||||
parents.push(cur);
|
||||
cur = cur.parentElement;
|
||||
}
|
||||
return parents;
|
||||
};
|
||||
|
||||
export const getOffset = (el: HTMLElement): Offset => {
|
||||
const { transform } = getComputedStyle(el);
|
||||
const { offsetParent } = el;
|
||||
@ -161,10 +171,16 @@ export const removeSelectedClassName = (doc: Document) => {
|
||||
if (oldEl) {
|
||||
oldEl.classList.remove(SELECTED_CLASS);
|
||||
(oldEl.parentNode as HTMLDivElement)?.classList.remove(`${SELECTED_CLASS}-parent`);
|
||||
doc.querySelectorAll(`.${SELECTED_CLASS}-parents`).forEach((item) => {
|
||||
item.classList.remove(`${SELECTED_CLASS}-parents`);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
export const addSelectedClassName = (el: Element) => {
|
||||
export const addSelectedClassName = (el: Element, doc: Document) => {
|
||||
el.classList.add(SELECTED_CLASS);
|
||||
(el.parentNode as Element)?.classList.add(`${SELECTED_CLASS}-parent`);
|
||||
getParents(el, doc.body).forEach((item) => {
|
||||
item.classList.add(`${SELECTED_CLASS}-parents`);
|
||||
});
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user