mirror of
https://bitbucket.org/bellord13/kit.git
synced 2026-11-13 19:06:11 +03:00
1 line
5.4 KiB
JavaScript
1 line
5.4 KiB
JavaScript
__PluginManager__.register("modal",function(e,t,i){var s=e("bsCore"),n=s.util.index.defineJQueryPlugin,o=s.util.index.getElementFromSelector,a=s.util.index.isRTL,r=s.util.index.isVisible,l=s.util.index.reflow,h=s.util.index.typeCheckConfig,d=s.dom.EventHandler,_=s.dom.Manipulator,c=s.dom.SelectorEngine,m=s.util.ScrollBarHelper,g=s.BaseComponent,u=s.util.Backdrop;const f="modal",p=".bs.modal",k="Escape",b={backdrop:!0,keyboard:!0,focus:!0},w={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean"},y=`hide${p}`,v=`hidePrevented${p}`,E=`hidden${p}`,A=`show${p}`,B=`shown${p}`,T=`focusin${p}`,C=`resize${p}`,$=`click.dismiss${p}`,D=`keydown.dismiss${p}`,x=`mouseup.dismiss${p}`,S=`mousedown.dismiss${p}`,L=`click${p}.data-api`,N="modal-open",j="fade",R="show",P="modal-static",z=".modal-dialog",H=".modal-body",M='[data-bs-dismiss="modal"]';class O extends g{constructor(e,t){super(e),this._config=this._getConfig(t),this._dialog=c.findOne(z,this._element),this._backdrop=this._initializeBackDrop(),this._isShown=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollBar=new m}static get Default(){return b}static get NAME(){return f}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){if(this._isShown||this._isTransitioning)return;d.trigger(this._element,A,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._isAnimated()&&(this._isTransitioning=!0),this._scrollBar.hide(),document.body.classList.add(N),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),d.on(this._element,$,M,e=>this.hide(e)),d.on(this._dialog,S,()=>{d.one(this._element,x,e=>{e.target===this._element&&(this._ignoreBackdropClick=!0)})}),this._showBackdrop(()=>this._showElement(e)))}hide(e){if(e&&["A","AREA"].includes(e.target.tagName)&&e.preventDefault(),!this._isShown||this._isTransitioning)return;if(d.trigger(this._element,y).defaultPrevented)return;this._isShown=!1;const t=this._isAnimated();t&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),d.off(document,T),this._element.classList.remove(R),d.off(this._element,$),d.off(this._dialog,S),this._queueCallback(()=>this._hideModal(),this._element,t)}dispose(){[window,this._dialog].forEach(e=>d.off(e,p)),this._backdrop.dispose(),super.dispose(),d.off(document,T)}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new u({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_getConfig(e){return e={...b,..._.getDataAttributes(this._element),..."object"==typeof e?e:{}},h(f,e,w),e}_showElement(e){const t=this._isAnimated(),i=c.findOne(H,this._dialog);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,i&&(i.scrollTop=0),t&&l(this._element),this._element.classList.add(R),this._config.focus&&this._enforceFocus();this._queueCallback(()=>{this._config.focus&&this._element.focus(),this._isTransitioning=!1,d.trigger(this._element,B,{relatedTarget:e})},this._dialog,t)}_enforceFocus(){d.off(document,T),d.on(document,T,e=>{document===e.target||this._element===e.target||this._element.contains(e.target)||this._element.focus()})}_setEscapeEvent(){this._isShown?d.on(this._element,D,e=>{this._config.keyboard&&e.key===k?(e.preventDefault(),this.hide()):this._config.keyboard||e.key!==k||this._triggerBackdropTransition()}):d.off(this._element,D)}_setResizeEvent(){this._isShown?d.on(window,C,()=>this._adjustDialog()):d.off(window,C)}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove(N),this._resetAdjustments(),this._scrollBar.reset(),d.trigger(this._element,E)})}_showBackdrop(e){d.on(this._element,$,e=>{this._ignoreBackdropClick?this._ignoreBackdropClick=!1:e.target===e.currentTarget&&(!0===this._config.backdrop?this.hide():"static"===this._config.backdrop&&this._triggerBackdropTransition())}),this._backdrop.show(e)}_isAnimated(){return this._element.classList.contains(j)}_triggerBackdropTransition(){if(d.trigger(this._element,v).defaultPrevented)return;const{classList:e,scrollHeight:t,style:i}=this._element,s=t>document.documentElement.clientHeight;!s&&"hidden"===i.overflowY||e.contains(P)||(s||(i.overflowY="hidden"),e.add(P),this._queueCallback(()=>{e.remove(P),s||this._queueCallback(()=>{i.overflowY=""},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const e=this._element.scrollHeight>document.documentElement.clientHeight,t=this._scrollBar.getWidth(),i=t>0;(!i&&e&&!a()||i&&!e&&a())&&(this._element.style.paddingLeft=`${t}px`),(i&&!e&&!a()||!i&&e&&a())&&(this._element.style.paddingRight=`${t}px`)}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(e,t){return this.each(function(){const i=O.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===i[e])throw new TypeError(`No method named "${e}"`);i[e](t)}})}}return d.on(document,L,'[data-bs-toggle="modal"]',function(e){const t=o(this);["A","AREA"].includes(this.tagName)&&e.preventDefault(),d.one(t,A,e=>{e.defaultPrevented||d.one(t,E,()=>{r(this)&&this.focus()})}),O.getOrCreateInstance(t).toggle(this)}),n(O),i.exports=O,i.exports}); |