1/** 2 * tingle.js - A simple modal plugin written in pure JavaScript 3 * @version v0.16.0 4 * @link https://github.com/robinparisi/tingle#readme 5 * @license MIT 6 */(function(root,factory){typeof define=="function"&&define.amd?define(factory):typeof exports=="object"?module.exports=factory():root.tingle=factory()})(this,function(){var isBusy=!1;function Modal(options){var defaults={onClose:null,onOpen:null,beforeOpen:null,beforeClose:null,stickyFooter:!1,footer:!1,cssClass:[],closeMethods:["overlay","button","escape"]};this.opts=extend({},defaults,options),this.init()}Modal.prototype.init=function(){if(!this.modal){_build.call(this),_bindEvents.call(this);var modals=document.querySelectorAll(".tingle-modal"),lastModal=modals[modals.length-1];return document.body.insertBefore(this.modal,lastModal&&lastModal.nextSibling||document.body.firstChild),this.opts.footer&&this.addFooter(),this}},Modal.prototype._busy=function(state){isBusy=state},Modal.prototype._isBusy=function(){return isBusy},Modal.prototype.destroy=function(){this.modal!==null&&(this.isOpen()&&this.close(!0),_unbindEvents.call(this),this.modal.parentNode.removeChild(this.modal),this.modal=null)},Modal.prototype.isOpen=function(){return!!this.modal.classList.contains("tingle-modal--visible")},Modal.prototype.open=function(){if(!this._isBusy()){this._busy(!0);var self=this;return typeof self.opts.beforeOpen=="function"&&self.opts.beforeOpen(),this.modal.style.removeProperty?this.modal.style.removeProperty("display"):this.modal.style.removeAttribute("display"),document.getSelection().removeAllRanges(),this._scrollPosition=window.pageYOffset,document.body.classList.add("tingle-enabled"),document.body.style.top=-this._scrollPosition+"px",this.setStickyFooter(this.opts.stickyFooter),this.modal.classList.add("tingle-modal--visible"),typeof self.opts.onOpen=="function"&&self.opts.onOpen.call(self),self._busy(!1),this.checkOverflow(),this}},Modal.prototype.close=function(force){if(!(this._isBusy()||!this.modal)){if(this._busy(!0),force=force||!1,typeof this.opts.beforeClose=="function"){var close=this.opts.beforeClose.call(this);if(!close){this._busy(!1);return}}this.contentParentNode&&this.modalBoxContent.firstChild&&this.contentParentNode.appendChild(this.modalBoxContent.firstChild),document.body.classList.remove("tingle-enabled"),document.body.style.top=null,window.scrollTo({top:this._scrollPosition,behavior:"instant"}),this.modal.classList.remove("tingle-modal--visible");var self=this;self.modal.style.display="none",typeof self.opts.onClose=="function"&&self.opts.onClose.call(this),self._busy(!1),self.destroy()}},Modal.prototype.setContent=function(content){return typeof content=="string"?(this.contentParentNode=!1,this.modalBoxContent.innerHTML=content):(this.contentParentNode=content.parentNode,this.modalBoxContent.innerHTML="",this.modalBoxContent.appendChild(content)),this.isOpen()&&this.checkOverflow(),this},Modal.prototype.getContent=function(){return this.modalBoxContent},Modal.prototype.addFooter=function(){return _buildFooter.call(this),this},Modal.prototype.setFooterContent=function(content){return this.modalBoxFooter.innerHTML=content,this},Modal.prototype.getFooterContent=function(){return this.modalBoxFooter},Modal.prototype.setStickyFooter=function(isSticky){return this.isOverflow()||(isSticky=!1),isSticky?(this.modalBox.contains(this.modalBoxFooter)&&(this.modalBox.removeChild(this.modalBoxFooter),this.modal.appendChild(this.modalBoxFooter),this.modalBoxFooter.classList.add("tingle-modal-box__footer--sticky"),_recalculateFooterPosition.call(this)),this.modalBoxContent.style["padding-bottom"]=this.modalBoxFooter.clientHeight+20+"px"):this.modalBoxFooter&&(this.modalBox.contains(this.modalBoxFooter)||(this.modal.removeChild(this.modalBoxFooter),this.modalBox.appendChild(this.modalBoxFooter),this.modalBoxFooter.style.width="auto",this.modalBoxFooter.style.left="",this.modalBoxContent.style["padding-bottom"]="",this.modalBoxFooter.classList.remove("tingle-modal-box__footer--sticky"))),this},Modal.prototype.addFooterBtn=function(label,cssClass,callback){var btn=document.createElement("button");return btn.innerHTML=label,btn.addEventListener("click",callback),typeof cssClass=="string"&&cssClass.length&&cssClass.split(" ").forEach(function(item){btn.classList.add(item)}),this.modalBoxFooter.appendChild(btn),btn},Modal.prototype.resize=function(){console.warn("Resize is deprecated and will be removed in version 1.0")}
6,Modal.prototype.isOverflow=function(){var viewportHeight=window.innerHeight,modalHeight=this.modalBox.clientHeight;return modalHeight>=viewportHeight},Modal.prototype.checkOverflow=function(){this.modal.classList.contains("tingle-modal--visible")&&(this.modal.classList.add("tingle-modal--overflow"),!this.isOverflow()&&this.opts.stickyFooter?this.setStickyFooter(!1):this.isOverflow()&&this.opts.stickyFooter&&(_recalculateFooterPosition.call(this),this.setStickyFooter(!0)))};function closeIcon(){return'<svg aria-label="Close" viewBox="0 0 32 32" class="icon"><path fill="#000000" d="M30.8,6.8c1.6-1.6,1.6-4.1,0-5.7c-1.6-1.6-4.1-1.6-5.7,0L16,10.3L6.8,1.2c-1.6-1.6-4.1-1.6-5.7,0 c-1.6,1.6-1.6,4.1,0,5.7l9.2,9.2l-9.2,9.2c-1.6,1.6-1.6,4.1,0,5.7c1.6,1.6,4.1,1.6,5.7,0l9.2-9.2l9.2,9.2c1.6,1.6,4.1,1.6,5.7,0 c1.6-1.6,1.6-4.1,0-5.7L21.7,16L30.8,6.8z"></path></svg>'}function _recalculateFooterPosition(){this.modalBoxFooter&&(this.modalBoxFooter.style.width=this.modalBox.clientWidth+"px",this.modalBoxFooter.style.left=this.modalBox.offsetLeft+"px")}function _build(){this.modal=document.createElement("div"),this.modal.classList.add("tingle-modal"),this.modal.setAttribute("role","dialog"),this.modal.setAttribute("aria-modal","true"),(this.opts.closeMethods.length===0||this.opts.closeMethods.indexOf("overlay")===-1)&&this.modal.classList.add("tingle-modal--noOverlayClose"),this.modal.style.display="none",this.opts.cssClass.forEach(function(item){typeof item=="string"&&this.modal.classList.add(item)},this),this.opts.closeMethods.indexOf("button")!==-1&&(this.modalCloseBtn=document.createElement("button"),this.modalCloseBtn.type="button",this.modalCloseBtn.classList.add("tingle-modal__close"),this.modalCloseBtnIcon=document.createElement("span"),this.modalCloseBtnIcon.classList.add("tingle-modal__closeIcon"),this.modalCloseBtnIcon.innerHTML=closeIcon(),this.modalCloseBtn.appendChild(this.modalCloseBtnIcon)),this.modalBox=document.createElement("div"),this.modalBox.classList.add("tingle-modal-box"),this.modalBoxContent=document.createElement("div"),this.modalBoxContent.classList.add("tingle-modal-box__content"),this.modalBox.appendChild(this.modalBoxContent),this.opts.closeMethods.indexOf("button")!==-1&&this.modalBox.appendChild(this.modalCloseBtn),this.modal.appendChild(this.modalBox)}function _buildFooter(){this.modalBoxFooter=document.createElement("div"),this.modalBoxFooter.classList.add("tingle-modal-box__footer"),this.modalBox.appendChild(this.modalBoxFooter)}function _bindEvents(){this._events={clickCloseBtn:this.close.bind(this),clickOverlay:_handleClickOutside.bind(this),resize:this.checkOverflow.bind(this),keyboardNav:_handleKeyboardNav.bind(this)},this.opts.closeMethods.indexOf("button")!==-1&&this.modalCloseBtn.addEventListener("click",this._events.clickCloseBtn),this.modal.addEventListener("mousedown",this._events.clickOverlay),window.addEventListener("resize",this._events.resize),document.addEventListener("keydown",this._events.keyboardNav)}function _handleKeyboardNav(event){this.opts.closeMethods.indexOf("escape")!==-1&&event.which===27&&this.isOpen()&&this.close()}function _handleClickOutside(event){var scrollbarWidth=this.modal.offsetWidth-this.modal.clientWidth,clickedOnScrollbar=event.clientX>=this.modal.offsetWidth-15,isScrollable=this.modal.scrollHeight!==this.modal.offsetHeight;navigator.platform==="MacIntel"&&scrollbarWidth===0&&clickedOnScrollbar&&isScrollable||this.opts.closeMethods.indexOf("overlay")!==-1&&!_findAncestor(event.target,"tingle-modal")&&event.clientX<this.modal.clientWidth&&this.close()}function _findAncestor(el,cls){for(;(el=el.parentElement)&&!el.classList.contains(cls););return el}function _unbindEvents(){this.opts.closeMethods.indexOf("button")!==-1&&this.modalCloseBtn.removeEventListener("click",this._events.clickCloseBtn),this.modal.removeEventListener("mousedown",this._events.clickOverlay),window.removeEventListener("resize",this._events.resize),document.removeEventListener("keydown",this._events.keyboardNav)}function extend(){for(var i=1;i<arguments.length;i++)for(var key in arguments[i])arguments[i].hasOwnProperty(key)&&(arguments[0][key]=arguments[i][key]);return arguments[0]}return{modal:Modal}}); 7//# sourceMappingURL=/cdn/shop/t/185/assets/tingle.js.map?v=79393041754852964291779168457
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.