feat(stage): elementGuidelines可以配置

This commit is contained in:
roymondchen 2022-05-31 21:32:04 +08:00 committed by jia000
parent a320823992
commit 85164ec432

View File

@ -166,16 +166,12 @@ export default class StageDragResize extends EventEmitter {
this.updateDragEl(el);
this.setElementGuidelines(el);
this.moveableOptions = this.getOptions({
target: this.dragEl,
});
}
private setElementGuidelines(el: HTMLElement) {
const nodes = el.parentElement?.children || [];
private setElementGuidelines(nodes: HTMLElement[]) {
this.elementGuidelines.forEach((node) => {
node.remove();
});
@ -186,7 +182,7 @@ export default class StageDragResize extends EventEmitter {
for (const node of nodes) {
const { width, height } = node.getBoundingClientRect();
if (node === el) continue;
if (node === this.target) continue;
const { left, top } = getOffset(node as HTMLElement);
const elementGuideline = document.createElement('div');
elementGuideline.style.cssText = `position: absolute;width: ${width}px;height: ${height}px;top: ${top}px;left: ${left}px`;
@ -404,6 +400,14 @@ export default class StageDragResize extends EventEmitter {
moveableOptions = moveableOptions(this.core);
}
const elementGuidelines: any = moveableOptions.elementGuidelines || this.target.parentElement?.children || [];
this.setElementGuidelines(elementGuidelines);
if (moveableOptions.elementGuidelines) {
delete moveableOptions.elementGuidelines;
}
return {
origin: false,
rootContainer: this.core.container,