UNPKG

dimmer

Version:

Simple JavaScript dialog with ability to pass dynamic data declaratively

2 lines (1 loc) 2.03 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.dimmer=t()}(this,function(){"use strict";var t={dialogActiveBodyClass:!1},i={text:function(e,t){e.textContent=t},value:function(e,t){e.value=t}},c={onShow:[],onHide:[]},a=function(t,e,o){var n,a=o.dialogActiveBodyClass,r=document.querySelector('[data-dialog="'+t+'"]');a&&document.body.classList.add(a),r.style.display="block",e.forEach(function(e){var t=e.field,o=e.type,n=e.payload,a=r.querySelector("[data-dialog-field='"+t+"']");try{i[o](a,n)}catch(e){console.error("[Dimmer dialog] Unable to properly set payloads")}}),c.onShow.filter(function(e){return t===e.name}).forEach(function(e){return e.fn(r)}),(n=r.querySelector("[data-dialog-autofocus]"))&&n.focus()},o=function(t,e){var o=e.dialogActiveBodyClass,n=document.querySelector('[data-dialog="'+t+'"]');o&&document.body.classList.remove(o),n.style.display="none",c.onHide.filter(function(e){return t===e.name}).forEach(function(e){return e.fn(n)})},r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},e=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=r({},t,e);document.querySelectorAll("[data-dialog-open]").forEach(function(e){e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("data-dialog-open"),o=function(e){try{return JSON.parse(e)}catch(e){return console.error("[Dimmer Dialog] Unable to parse JSON payload"),null}}(this.getAttribute("data-dialog-payload"))||[];a(t,o,n)})}),document.querySelectorAll("[data-dialog-close]").forEach(function(e){e.addEventListener("click",function(e){e.preventDefault();var t=function e(t){return t.getAttribute("data-dialog")||e(t.parentNode)}(this);o(t,n)})})},n=function(e,t){c.onShow.push({name:e,fn:t})},d=function(e,t){c.onHide.push({name:e,fn:t})};return function(){return{init:e,show:a,hide:o,onShow:n,onHide:d}}});