mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
use elementFromPoint instead of popup stack
This commit is contained in:
@ -22,10 +22,6 @@ export const POPUP_RESULT = {
|
|||||||
|
|
||||||
|
|
||||||
export class Popup {
|
export class Popup {
|
||||||
/**@type {Popup[]}*/
|
|
||||||
static stack = [];
|
|
||||||
|
|
||||||
|
|
||||||
/**@type {POPUP_TYPE}*/ type;
|
/**@type {POPUP_TYPE}*/ type;
|
||||||
|
|
||||||
/**@type {HTMLElement}*/ dom;
|
/**@type {HTMLElement}*/ dom;
|
||||||
@ -123,7 +119,9 @@ export class Popup {
|
|||||||
const keyListener = (evt) => {
|
const keyListener = (evt) => {
|
||||||
switch (evt.key) {
|
switch (evt.key) {
|
||||||
case 'Escape': {
|
case 'Escape': {
|
||||||
if (Popup.stack.slice(-1)[0] == this) {
|
// does it really matter where we check?
|
||||||
|
const topModal = document.elementFromPoint(window.innerWidth / 2, window.innerHeight / 2)?.closest('.shadow_popup');
|
||||||
|
if (topModal == this.dom) {
|
||||||
evt.preventDefault();
|
evt.preventDefault();
|
||||||
evt.stopPropagation();
|
evt.stopPropagation();
|
||||||
this.completeCancelled();
|
this.completeCancelled();
|
||||||
@ -138,7 +136,6 @@ export class Popup {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async show() {
|
async show() {
|
||||||
Popup.stack.push(this);
|
|
||||||
document.body.append(this.dom);
|
document.body.append(this.dom);
|
||||||
this.dom.style.display = 'block';
|
this.dom.style.display = 'block';
|
||||||
switch (this.type) {
|
switch (this.type) {
|
||||||
@ -205,7 +202,6 @@ export class Popup {
|
|||||||
|
|
||||||
|
|
||||||
hide() {
|
hide() {
|
||||||
Popup.stack.splice(Popup.stack.indexOf(this), 1);
|
|
||||||
$(this.dom).transition({
|
$(this.dom).transition({
|
||||||
opacity: 0,
|
opacity: 0,
|
||||||
duration: animation_duration,
|
duration: animation_duration,
|
||||||
|
Reference in New Issue
Block a user