jpopup
Version:
Simple lightweight (<2kB) javascript popup modal plugin
1 lines • 1.65 kB
JavaScript
((t,n)=>{void 0===t&&void 0!==window&&(t=window),"function"==typeof define&&define.amd?define([],function(){return t.jPopup=n()}):"object"==typeof module&&module.exports?module.exports=n():t.jPopup=n()})(this,function(){function t(){this.options=Object.assign({transition:"fade"},0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}),this._init()}var n;return t.prototype={_init:function(){this._render(this.options.content)._setupEvents()},_render:function(){return n=document.querySelector("html"),document.body.insertAdjacentHTML("beforeend",'<div class="jPopup jPopup--'.concat(this.options.transition,'"><button type="button" class="jPopup-closeBtn"></button><div class="jPopup-content">').concat(this.options.content,"</div></div>")),this.$el=n.querySelector(".jPopup"),this.$closeBtn=n.querySelector(".jPopup-closeBtn"),this},_setupEvents:function(){var n=this;this.$closeBtn.addEventListener("click",function(){return n.close()}),window.addEventListener("keydown",function(t){return n._onEscPress(t)})},_onEscPress:function(t){27==t.keyCode&&this.close()},close:function(){n.classList.remove("jPopup--isOpen"),this.options.onClose&&"function"==typeof this.options.onClose&&this.options.onClose(this.$el)},open:function(){this.options.onOpen&&"function"==typeof this.options.onOpen&&this.options.onOpen(this.$el),n.classList.add("jPopup--isOpen")},setContent:function(t){this.options.content=t,this.$el.querySelector(".jPopup-content").innerHTML=this.options.content},getContent:function(){return this.options.content},destroy:function(){window.removeEventListener("keydown",this._onEscPress),this.$el.parentNode.removeChild(this.$el)}},t});