openclassify/addons/default/visiosoft/defaultadmin-theme/resources/js/theme/prompt.js
2019-06-22 13:59:18 +03:00

70 lines
2.3 KiB
JavaScript

(function (window, document) {
const toggles = Array.from(
document.querySelectorAll('[data-toggle="prompt"]')
);
toggles.forEach(function (toggle) {
let handler = function (event) {
event.preventDefault();
let match = event.target.dataset.match;
let config = {
text: event.target.dataset.message.replace(':match:', match),
title: event.target.dataset.title || null,
icon: event.target.dataset.icon || null,
closeOnEsc: event.target.dataset.esc == undefined ? false : (event.target.dataset.esc == 'true'),
closeOnClickOutside: event.target.dataset.outside == undefined ? false : (event.target.dataset.outside == 'true'),
content: "input",
buttons: {
cancel: {
visible: true,
text: event.target.dataset.cancel_text || 'Cancel'
},
confirm: {
closeModal: event.target.dataset.close == undefined ? false : (event.target.dataset.close == 'true'),
text: event.target.dataset.confirm_text || 'Yes'
},
}
};
let callback = function (value) {
if (value === null) {
swal.close();
return false;
}
if (value === match) {
document.querySelector('.swal-content__input').classList.add('swal-content__input-success');
toggle.removeEventListener('click', handler);
/**
* Simulate a native click and let
* the default/intended action happen.
*/
const click = document.createEvent('MouseEvents');
click.initEvent('click', true, false);
event.target.dispatchEvent(click);
} else {
swal(config).then(callback);
document.querySelector('.swal-content__input').classList.add('swal-content__input-error');
}
};
swal(config).then(callback);
};
toggle.addEventListener('click', handler);
});
})(window, document);