You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
1.8 KiB
75 lines
1.8 KiB
'use strict';
|
|
|
|
// document.querySelectorAll('.body-wrapper input').forEach( e => e.disabled = true);
|
|
// document.querySelectorAll('.body-wrapper a').forEach( e => e.tabIndex = -1);
|
|
|
|
// TODO: this
|
|
(() => {
|
|
|
|
})();
|
|
|
|
let stack = [];
|
|
let maxZIndex = 100;
|
|
|
|
const wrapper = document.querySelector('.window-wrapper');
|
|
if (!wrapper) {
|
|
throw new Error('window wrapper is missing');
|
|
}
|
|
|
|
const getWindowById = id => {
|
|
if (typeof id !== 'string') {
|
|
throw new Error('className is not a string');
|
|
}
|
|
|
|
const window = document.getElementById(id);
|
|
if (!window) {
|
|
throw new Error('Window with ID ' + className + ' not found');
|
|
}
|
|
|
|
return window;
|
|
};
|
|
const openWindow = id => {
|
|
const window = getWindowById(id);
|
|
window.classList.add('active');
|
|
wrapper.classList.add('active');
|
|
|
|
if (!stack.includes(window)) {
|
|
// hide all other windows
|
|
if (stack.length) {
|
|
stack.forEach( e => e.classList.remove('active'));
|
|
}
|
|
stack.push(window);
|
|
|
|
++maxZIndex;
|
|
window.style.zIndex = maxZIndex;
|
|
}
|
|
};
|
|
|
|
const closeWindow = id => {
|
|
const window = getWindowById(id);
|
|
window.classList.remove('active');
|
|
|
|
if (stack.length && stack[stack.length - 1] === window) {
|
|
stack.pop();
|
|
}
|
|
|
|
if (!stack.length) {
|
|
wrapper.classList.remove('active');
|
|
maxZIndex = 100;
|
|
} else {
|
|
stack.forEach( e => e.classList.add('active'));
|
|
}
|
|
};
|
|
|
|
wrapper.style.display = "";
|
|
|
|
//
|
|
// document.querySelector('.window-wrapper .window .close-button').forEach( e => {
|
|
// createListener(e, 'click', (ev, el, wrapper) => {
|
|
// e
|
|
// });
|
|
//
|
|
// const createListener = function(element, event, callback, ...args) {
|
|
// element.addEventListener(event, wrapListener(callback, element, ...args));
|
|
// };
|
|
// });
|
|
|