feat(editor): 选中组件后自动滚动到组件位置

This commit is contained in:
roymondchen 2022-05-07 19:55:26 +08:00 committed by jia000
parent ca97e2410b
commit d23a318003
2 changed files with 15 additions and 0 deletions

View File

@ -154,6 +154,9 @@ export default class StageCore extends EventEmitter {
} }
this.mask.setLayout(el); this.mask.setLayout(el);
el.scrollIntoView();
this.dr.select(el, event); this.dr.select(el, event);
this.selectedDom = el; this.selectedDom = el;

View File

@ -130,9 +130,14 @@ export default class StageMask extends Rule {
if (!page) return; if (!page) return;
this.page = page; this.page = page;
this.pageScrollParent?.removeEventListener('scroll', this.pageScrollParentScrollHandler);
this.pageScrollParent = getScrollParent(page) || this.core.renderer.contentWindow?.document.documentElement || null; this.pageScrollParent = getScrollParent(page) || this.core.renderer.contentWindow?.document.documentElement || null;
this.pageResizeObserver?.disconnect(); this.pageResizeObserver?.disconnect();
this.pageScrollParent?.addEventListener('scroll', this.pageScrollParentScrollHandler);
if (typeof ResizeObserver !== 'undefined') { if (typeof ResizeObserver !== 'undefined') {
this.pageResizeObserver = new ResizeObserver((entries) => { this.pageResizeObserver = new ResizeObserver((entries) => {
const [entry] = entries; const [entry] = entries;
@ -313,4 +318,11 @@ export default class StageMask extends Rule {
private mouseLeaveHandler = () => { private mouseLeaveHandler = () => {
setTimeout(() => this.emit('clearHighlight'), throttleTime); setTimeout(() => this.emit('clearHighlight'), throttleTime);
}; };
private pageScrollParentScrollHandler = () => {
if (!this.pageScrollParent) return;
this.scrollLeft = this.pageScrollParent.scrollLeft;
this.scrollTop = this.pageScrollParent.scrollTop;
this.scroll();
};
} }