Fix the bug when modal show back to top

This commit is contained in:
Will Miao
2025-02-18 07:27:10 +08:00
parent 6181a1c714
commit bbc5aea08c
2 changed files with 10 additions and 2 deletions

View File

@@ -1,6 +1,7 @@
export class ModalManager {
constructor() {
this.modals = new Map();
this.scrollPosition = 0;
}
initialize() {
@@ -81,6 +82,9 @@ export class ModalManager {
modal.onCloseCallback = onCloseCallback;
}
// Store current scroll position before showing modal
this.scrollPosition = window.scrollY;
if (id === 'deleteModal') {
modal.element.classList.add('show');
} else {
@@ -88,6 +92,7 @@ export class ModalManager {
}
modal.isOpen = true;
document.body.style.top = `-${this.scrollPosition}px`;
document.body.classList.add('modal-open');
}
@@ -98,6 +103,11 @@ export class ModalManager {
modal.onClose();
modal.isOpen = false;
// Remove fixed positioning and restore scroll position
document.body.classList.remove('modal-open');
document.body.style.top = '';
window.scrollTo(0, this.scrollPosition);
// Execute onClose callback if exists
if (modal.onCloseCallback) {
modal.onCloseCallback();