12 |
- "use strict";const t=require("./base-component-njT02uAw.js"),et=require("./index-CK2pD4GQ.js"),f=require("./showClass-D_Ms1FgG.js"),G=require("./dataBsToggle-Dj-Ng54N.js"),C=require("./dropdownClasses-CnEyz_iw.js"),nt=require("./isDisabled-CraboJ2Y.js"),Q="Dropdown",z="dropdown-menu",R=o=>{const e=t.Ne(o,"A");return o.tagName==="A"&&t.oe(o,"href")&&t.K(o,"href")?.slice(-1)==="#"||e&&t.oe(e,"href")&&t.K(e,"href")?.slice(-1)==="#"},[p,A,H,M]=C.dropdownMenuClasses,ot=`[${G.dataBsToggle}="${p}"]`,h=o=>t.to(o,Q),st=o=>new J(o),rt=`${z}-end`,j=[p,A],B=[H,M],F=["A","BUTTON"],it={offset:5,display:"dynamic"},$=t.mo(`show.bs.${p}`),L=t.mo(`shown.bs.${p}`),x=t.mo(`hide.bs.${p}`),O=t.mo(`hidden.bs.${p}`),U=t.mo(`updated.bs.${p}`),K=o=>{const{element:e,menu:n,parentElement:d,options:r}=o,{offset:s}=r;if(t.f(n,"position")==="static")return;const i=t.Ho(e),c=t._n(n,rt);["margin","top","bottom","left","right"].forEach(l=>{const I={};I[l]="",t.Eo(n,I)});let a=C.dropdownMenuClasses.find(l=>t._n(d,l))||p;const V={dropdown:[s,0,0],dropup:[0,0,s],dropstart:i?[-1,0,0,s]:[-1,s,0],dropend:i?[-1,s,0]:[-1,0,0,s]},g={dropdown:{top:"100%"},dropup:{top:"auto",bottom:"100%"},dropstart:i?{left:"100%",right:"auto"}:{left:"auto",right:"100%"},dropend:i?{left:"auto",right:"100%"}:{left:"100%",right:"auto"},menuStart:i?{right:"0",left:"auto"}:{right:"auto",left:"0"},menuEnd:i?{right:"auto",left:"0"}:{right:"0",left:"auto"}},{offsetWidth:m,offsetHeight:b}=n,{clientWidth:S,clientHeight:_}=t.w(e),{left:w,top:D,width:N,height:X}=t.y(e),y=w-m-s<0,T=w+m+N+s>=S,Y=D+b+s>=_,Z=D+b+X+s>=_,q=D-b-s<0,E=(!i&&c||i&&!c)&&w+N-m<0,v=(i&&c||!i&&!c)&&w+m>=S;if(B.includes(a)&&y&&T&&(a=p),a===H&&(i?T:y)&&(a=M),a===M&&(i?y:T)&&(a=H),a===A&&q&&!Z&&(a=p),a===p&&Z&&!q&&(a=A),B.includes(a)&&Y&&t.T(g[a],{top:"auto",bottom:0}),j.includes(a)&&(E||v)){let l={left:"auto",right:"auto"};!E&&v&&!i&&(l={left:"auto",right:0}),E&&!v&&i&&(l={left:0,right:"auto"}),l&&t.T(g[a],l)}const tt=V[a];if(t.Eo(n,{...g[a],margin:`${tt.map(l=>l&&`${l}px`).join(" ")}`}),j.includes(a)&&c&&c){const l=!i&&E||i&&v?"menuStart":"menuEnd";t.Eo(n,g[l])}t.Z(d,U)},dt=o=>Array.from(o.children).map(e=>{if(e&&F.includes(e.tagName))return e;const{firstElementChild:n}=e;return n&&F.includes(n.tagName)?n:null}).filter(e=>e),W=o=>{const{element:e,options:n,menu:d}=o,r=o.open?t.E:t.r,s=t.d(e);r(s,t.vt,k),r(s,t.ct,k),r(s,t.ft,at),r(s,t.gt,lt),n.display==="dynamic"&&(o.open?o._observer.observe(d):o._observer.disconnect())},P=o=>{const e=[...C.dropdownMenuClasses,"btn-group","input-group"].map(n=>t.jo(`${n} ${f.showClass}`,t.d(o))).find(n=>n.length);if(e&&e.length)return[...e[0].children].find(n=>C.dropdownMenuClasses.some(d=>d===t.K(n,G.dataBsToggle)))},k=o=>{const{target:e,type:n}=o;if(!t.b(e))return;const d=P(e),r=d&&h(d);if(!r)return;const{parentElement:s,menu:i}=r,c=s&&s.contains(e)&&(e.tagName==="form"||t.Ne(e,"form")!==null);[t.vt,t.Et].includes(n)&&R(e)&&o.preventDefault(),!c&&n!==t.ct&&e!==d&&e!==i&&r.hide()};function ct(o){const e=h(this);nt.isDisabled(this)||e&&(o.stopPropagation(),e.toggle(),R(this)&&o.preventDefault())}const at=o=>{[t.on,t.sn].includes(o.code)&&o.preventDefault()};function lt(o){const{code:e}=o,n=P(this);if(!n)return;const d=h(n),{activeElement:r}=t.d(n);if(!d||!r)return;const{menu:s,open:i}=d,c=dt(s);if(c&&c.length&&[t.on,t.sn].includes(e)){let u=c.indexOf(r);r===n?u=0:e===t.sn?u=u>1?u-1:0:e===t.on&&(u=u<c.length-1?u+1:u),c[u]&&t.ao(c[u])}t.gn===e&&i&&(d.toggle(),t.ao(n))}class J extends t.BaseComponent{static selector=ot;static init=st;static getInstance=h;constructor(e,n){super(e,n);const{parentElement:d}=this.element,[r]=t.jo(z,d);r&&(this.parentElement=d,this.menu=r,this._observer=new et.y(()=>K(this)),this._toggleEventListeners(!0))}get name(){return Q}get defaults(){return it}toggle(){this.open?this.hide():this.show()}show(){const{element:e,open:n,menu:d,parentElement:r}=this;if(n)return;const s=P(e),i=s&&h(s);i&&i.hide(),[$,L,U].forEach(c=>{c.relatedTarget=e}),t.Z(r,$),!$.defaultPrevented&&(t.Gn(d,f.showClass),t.Gn(r,f.showClass),t.Qn(e,t.Oe,"true"),K(this),this.open=!n,t.ao(e),W(this),t.Z(r,L))}hide(){const{element:e,open:n,menu:d,parentElement:r}=this;n&&([x,O].forEach(s=>{s.relatedTarget=e}),t.Z(r,x),!x.defaultPrevented&&(t.Zn(d,f.showClass),t.Zn(r,f.showClass),t.Qn(e,t.Oe,"false"),this.open=!n,W(this),t.Z(r,O)))}_toggleEventListeners=e=>{(e?t.E:t.r)(this.element,t.vt,ct)};dispose(){this.open&&this.hide(),this._toggleEventListeners(),super.dispose()}}module.exports=J;
- //# sourceMappingURL=dropdown.cjs.map
|