Added Pop() to close top-most modal

Fixed stacking modal causes scrolling and focus failure
This commit is contained in:
Ray 2023-12-08 22:19:39 +00:00
parent 7e30e99c81
commit ecd6dd156d
2 changed files with 26 additions and 28 deletions

View File

@ -1,6 +1,6 @@
/**
* BSDialog4
* @version v0.1.5.038 (2023/11/18 19:40)
* @version v0.1.6.015 (2023/12/08 22:04)
*/
class BSDialog4 {
constructor() {
@ -102,15 +102,15 @@ class BSDialog4 {
}
}
Clear() {
async Clear() {
const a = this;
document.querySelectorAll('.modal').forEach(function(e) {
$(e).modal('hide');
document.querySelectorAll('.modal').forEach(async function(e) {
await a.Close(e.getAttribute("id"));
});
}
Close(id) {
async Close(id) {
const a = this;
if (id.toString().startsWith(a.#prefix)) {
@ -120,10 +120,28 @@ class BSDialog4 {
const node = document.getElementById(a.#prefix + id);
if (node) {
$(node).modal('hide');
await $(node).modal('hide');
node.parentNode.removeChild(node);
}
if (document.querySelectorAll('.modal').length > 0) {
if (!a.#body.classList.contains("modal-open")) {
a.#body.classList.add("modal-open");
a.#body.style.paddingRight = "17px";
}
}
}
async Pop() {
const a = this;
if (document.querySelectorAll('.modal').length > 0) {
const id = document.querySelectorAll('.modal')[0].getAttribute("id");
await a.Close(id);
}
}
async Update(options) {
@ -419,26 +437,6 @@ class BSDialog4 {
return (e.trim().length <= 0);
}
#removeBackdrop() {
const a = this;
if (a.#body.querySelectorAll(".modal-backdrop").length <= 0) {
return;
}
if (a.#body.querySelectorAll(".modal").length > 0) {
return;
}
a.#body.querySelectorAll(".modal-backdrop").forEach(function(e){
e.parentNode.removeChild(e);
});
// unlock background
a.#body.classList.remove("modal-open");
a.#body.style.overflow = null;
}
async #retrieveURL(url) {
return await new Promise(async (resolve) => {
await fetch(url, {

4
bsdialog4.min.js vendored

File diff suppressed because one or more lines are too long