- Bugfix on UI-POPUP made

This commit is contained in:
Dev 2025-11-18 18:39:44 +00:00
parent 45095b221d
commit 0bb08584e2
2 changed files with 22 additions and 45 deletions

View File

@ -21,8 +21,6 @@ class UiPopup extends Webcomponent {
}
this.replaceVarsPlaceholder().attach().render();
this.init();
this.handleOptions();
}
@ -31,68 +29,32 @@ class UiPopup extends Webcomponent {
if ( ! this.options['skip-keys'] ) {
document.addEventListener('keyup', function(e) {
if ( this.visible() ) {
let trigger, ev;
e.preventDefault();
console.log(this.visible());
// There's no real value in checking if the popup is shown or not.
switch ( e.keyCode ) {
// RETURN
case 13:
trigger = this.querySelector('[action="confirm"]');
ev = new CustomEvent('click', { trigger: trigger } );
trigger.dispatchEvent(ev);
break;
// ESC
case 27:
trigger = this.querySelector('[action="close"]');
ev = new CustomEvent('click', { trigger: trigger } );
trigger.dispatchEvent(ev);
break;
}
if (trigger) {
ev = new CustomEvent('click', {trigger: trigger});
trigger.dispatchEvent(ev);
}
}
}.bind(this));
}
}
}
init() {
document.addEventListener('keyup', function(e) {
if ( this.visible() ) {
let trigger, ev, action;
e.preventDefault();
// There's no real value in checking if the popup is shown or not.
switch ( e.keyCode ) {
case 13: // RETURN
action = "confirm";
break;
case 27: // ESC
action = "close";
break
}
if (action) {
trigger = this.querySelector(`[action="${action}"]`);
if ( trigger ) {
ev = new CustomEvent('click', {trigger: trigger});
trigger.dispatchEvent(ev);
}
else {
this.hide();
}
}
}
}.bind(this));
}
attach() {
let triggers = document.querySelectorAll('[ui-popup]');

View File

@ -52,6 +52,21 @@ class Webcomponent extends HTMLElement {
return this;
}
off(type, listener, options) {
this.removeEventListener(type, listener, options);
return this;
}
emit(name, detail, bubbles, cancelable, composed) {
this.dispatchEvent(new CustomEvent(name, {
detail: detail ? detail : null,
bubbles: !! bubbles,
cancelable: !! cancelable,
composed: !! composed,
}));
}
get config() {
return this.#config;
}