@flexilla/alpine-dropdown 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdn.js +306 -188
- package/dist/cdn.min.js +1 -1
- package/dist/module.cjs.js +306 -188
- package/dist/module.esm.js +306 -188
- package/package.json +3 -3
package/dist/cdn.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{var J=Object.defineProperty,Q=(n,e,t)=>e in n?J(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,h=(n,e,t)=>Q(n,typeof e!="symbol"?e+"":e,t),V=Object.defineProperty,X=(n,e,t)=>e in n?V(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,m=(n,e,t)=>X(n,typeof e!="symbol"?e+"":e,t),Y="bottom",Z=({reference:n,popper:e})=>{if(!n||!e)throw new Error("Reference or popper element is null or undefined");let t=new WeakMap,i=o=>(t.has(o)||t.set(o,o.getBoundingClientRect()),t.get(o)),r=i(e),s=i(n);return{popperHeight:r.height,popperWidth:r.width,refHeight:s.height,refWidth:s.width,refLeft:s.left,refTop:s.top,refRight:s.right}},_=(n,e,t,i)=>{let r=t,s=i-(t+e);return r>=(n-e)/2&&s>=(n-e)/2},ee=(n,e,t,i)=>(n-e)/2<=t&&t+n/2+e/2<=i,te=(n,e,t,i,r)=>t>r-i?e()?window.innerHeight-r:t-r:n()?0:t+i,ne=(n,e,t,i)=>n<=i&&t-n<=e,ie=(n,e,t,i)=>t<=i&&-n<=e,se=(n,e,t,i,r,s)=>{let o=r-t-s,a=t-i,c=t+s-i+(r-t-s),p=o>=0?r-i:a>=0?t-i:t;return n()?0:e()?c:p},oe=(n,e,t,i)=>n<=t&&e-n-i>=n,re=(n,e)=>n>=e,ae=({placement:n,refWidth:e,refTop:t,refLeft:i,refHeight:r,popperWidth:s,popperHeight:o,windowHeight:a,windowWidth:c,offsetDistance:p})=>{let d=c-i-e,f=i,E=a-t-r,g=t,w=()=>te(()=>ie(t,r,o,a),()=>ne(t,r,o,a),t,r,o),y=()=>se(()=>oe(i,c,s,e),()=>re(i,s),i,s,c,e),I=()=>_(s,e,i,c)?i+e/2-s/2:y(),T=()=>ee(o,r,t,a)?t+r/2-o/2:w(),C=()=>i+s<=c?i:y(),O=()=>i+e-s>=0?i+e-s:y(),D=()=>t+o<=a?t:w(),N=()=>t+r-o>=0?t+r-o:w(),v=0,u=0,M=t-o-p,L=t+r+p,k=i-s-p,H=i+e+p,R=g>=o+p,$=E>=o+p,A=f>=s+p,K=d>=s+p;switch(n.startsWith("top")?u=R?M:$?L:Math.max(M,L):n.startsWith("bottom")?u=$?L:R?M:Math.max(L):n.startsWith("left")?v=A?k:K?H:Math.max(k,H):n.startsWith("right")&&(v=K?H:A?k:Math.max(H,k)),n){case"bottom":case"bottom-middle":case"top":case"top-middle":v=I();break;case"left":case"left-middle":case"right":case"right-middle":u=T();break;case"bottom-start":case"top-start":v=C();break;case"bottom-end":case"top-end":v=O();break;case"left-start":case"right-start":u=D();break;case"left-end":case"right-end":u=N();break}return{x:v,y:u}},x=class{constructor(e,t,i={}){m(this,"reference"),m(this,"popper"),m(this,"offsetDistance"),m(this,"placement"),m(this,"disableOnResize"),m(this,"disableOnScroll"),m(this,"onUpdate"),m(this,"isWindowEventsRegistered"),m(this,"validateElements",()=>{if(!(this.reference instanceof HTMLElement))throw new Error("Invalid HTMLElement for Reference Element");if(!(this.popper instanceof HTMLElement))throw new Error("Invalid HTMLElement for Popper");if(typeof this.offsetDistance!="number")throw new Error("OffsetDistance must be a number")}),m(this,"setPopperStyleProperty",(d,f)=>{this.popper.style.setProperty("--fx-popper-placement-x",`${d}px`),this.popper.style.setProperty("--fx-popper-placement-y",`${f}px`)}),m(this,"setInitialStyles",()=>{this.popper.style.setProperty("--fx-popper-placement-x",""),this.popper.style.setProperty("--fx-popper-placement-y","")}),m(this,"initPlacement",()=>{var d;this.validateElements(),this.setInitialStyles();let f=window.innerWidth,E=window.innerHeight,{popperHeight:g,popperWidth:w,refHeight:y,refWidth:I,refLeft:T,refTop:C}=Z({reference:this.reference,popper:this.popper}),{x:O,y:D}=ae({placement:this.placement,refWidth:I,refTop:C,refLeft:T,popperWidth:w,refHeight:y,popperHeight:g,windowHeight:E,windowWidth:f,offsetDistance:this.offsetDistance});this.setPopperStyleProperty(O,D),(d=this.onUpdate)==null||d.call(this,{x:O,y:D,placement:this.placement})}),m(this,"removeWindowEvents",()=>{this.isWindowEventsRegistered&&(!this.disableOnResize&&window.removeEventListener("resize",this.updatePosition),!this.disableOnScroll&&window.removeEventListener("scroll",this.updatePosition),this.isWindowEventsRegistered=!1)}),m(this,"attachWindowEvent",()=>{this.isWindowEventsRegistered&&this.removeWindowEvents(),this.disableOnResize||window.addEventListener("resize",this.updatePosition),this.disableOnScroll||window.addEventListener("scroll",this.updatePosition),this.isWindowEventsRegistered=!0}),m(this,"resetPosition",()=>{this.setInitialStyles()}),m(this,"updatePosition",()=>{this.initPlacement(),this.attachWindowEvent()}),m(this,"cleanupEvents",()=>{this.setInitialStyles(),this.removeWindowEvents()});let{offsetDistance:r=10,placement:s=Y,eventEffect:o={},onUpdate:a}=i;if(!(e instanceof HTMLElement))throw new Error("Invalid HTMLElement for Reference Element");if(!(t instanceof HTMLElement))throw new Error("Invalid HTMLElement for Popper");if(i.offsetDistance&&typeof i.offsetDistance!="number")throw new Error("OffsetDistance must be a number");let{disableOnResize:c,disableOnScroll:p}=o;this.isWindowEventsRegistered=!1,this.reference=e,this.popper=t,this.offsetDistance=r,this.placement=s,this.disableOnResize=c||!1,this.disableOnScroll=p||!1,this.onUpdate=a}setOptions({placement:e,offsetDistance:t}){this.placement=e,this.offsetDistance=t||this.offsetDistance,this.initPlacement(),this.attachWindowEvent()}},le=Object.defineProperty,he=(n,e,t)=>e in n?le(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,l=(n,e,t)=>he(n,typeof e!="symbol"?e+"":e,t),ce=(n,e=document.body)=>e.querySelector(n),z=(n,e)=>{for(let[t,i]of Object.entries(e))n.setAttribute(t,i)},de=({element:n,callback:e,type:t,keysCheck:i})=>{let r=getComputedStyle(n),s=r.transition;if(s!=="none"&&s!==""&&!i.includes(s)){let o="transitionend",a=()=>{n.removeEventListener(o,a),e()};n.addEventListener(o,a,{once:!0})}else e()},pe=({element:n,callback:e})=>{de({element:n,callback:e,type:"transition",keysCheck:["all 0s ease 0s","all"]})},b=({state:n,trigger:e,popper:t})=>{let i=n==="open";z(t,{"data-state":n}),z(e,{"aria-expanded":`${i}`})},P=class{constructor({trigger:e,content:t,options:i={}}){l(this,"triggerElement"),l(this,"contentElement"),l(this,"triggerStrategy"),l(this,"placement"),l(this,"offsetDistance"),l(this,"preventFromCloseOutside"),l(this,"preventFromCloseInside"),l(this,"options"),l(this,"defaultState"),l(this,"popper"),l(this,"eventEffect"),l(this,"getElement",s=>typeof s=="string"?ce(s):s instanceof HTMLElement?s:void 0),l(this,"handleDocumentClick",s=>{this.contentElement.getAttribute("data-state")==="open"&&(!this.triggerElement.contains(s.target)&&!this.preventFromCloseInside&&!this.preventFromCloseOutside?this.hide():!this.triggerElement.contains(s.target)&&!this.contentElement.contains(s.target)&&!this.preventFromCloseOutside?this.hide():!this.triggerElement.contains(s.target)&&!this.contentElement.contains(s.target)&&!this.preventFromCloseOutside?this.hide():!this.triggerElement.contains(s.target)&&this.contentElement.contains(s.target)&&!this.preventFromCloseInside&&this.hide())}),l(this,"handleKeyDown",s=>{s.preventDefault(),this.triggerStrategy!=="hover"&&s.key==="Escape"&&this.contentElement.getAttribute("data-state")==="open"&&(this.preventFromCloseOutside||this.hide())}),l(this,"toggleStateOnClick",()=>{(this.contentElement.dataset.state||"close")==="close"?(this.show(),this.triggerStrategy==="hover"&&this.addEventOnMouseEnter()):this.hide()}),l(this,"hideOnMouseLeaseTrigger",()=>{setTimeout(()=>{this.contentElement.matches(":hover")||this.hide()},150)}),l(this,"hideOnMouseLeave",()=>{setTimeout(()=>{this.triggerElement.matches(":hover")||this.hide()},150)}),l(this,"addEventOnMouseEnter",()=>{this.triggerElement.addEventListener("mouseleave",this.hideOnMouseLeaseTrigger),this.contentElement.addEventListener("mouseleave",this.hideOnMouseLeave)}),l(this,"showOnMouseEnter",()=>{this.show(),this.addEventOnMouseEnter()}),l(this,"setShowOptions",({placement:s,offsetDistance:o})=>{var a,c,p,d;this.popper.setOptions({placement:s,offsetDistance:o}),document.addEventListener("keydown",this.handleKeyDown),document.addEventListener("click",this.handleDocumentClick),(c=(a=this.options).beforeShow)==null||c.call(a),b({state:"open",popper:this.contentElement,trigger:this.triggerElement}),this.onToggleState(!1),(d=(p=this.options).onShow)==null||d.call(p)}),l(this,"setPopperOptions",({placement:s,offsetDistance:o})=>{this.popper.setOptions({placement:s,offsetDistance:o||this.offsetDistance})}),l(this,"setPopperTrigger",(s,o)=>{this.cleanup(),this.popper.setOptions({placement:o.placement||this.placement,offsetDistance:o.offsetDistance||this.offsetDistance}),this.triggerElement=s,this.triggerElement.addEventListener("click",this.toggleStateOnClick),this.triggerStrategy==="hover"&&this.triggerElement.addEventListener("mouseenter",this.showOnMouseEnter)}),l(this,"cleanup",()=>{this.triggerElement.removeEventListener("click",this.toggleStateOnClick),this.triggerStrategy==="hover"&&this.triggerElement.removeEventListener("mouseenter",this.showOnMouseEnter)});var r;if(this.contentElement=this.getElement(t),this.triggerElement=this.getElement(e),!(this.triggerElement instanceof HTMLElement))throw new Error("Trigger element must be a valid HTML element");if(!(this.contentElement instanceof HTMLElement))throw new Error("Content element must be a valid HTML element");this.options=i,this.triggerStrategy=this.options.triggerStrategy||"click",this.placement=this.options.placement||"bottom",this.offsetDistance=this.options.offsetDistance||6,this.preventFromCloseOutside=this.options.preventFromCloseOutside||!1,this.preventFromCloseInside=this.options.preventCloseFromInside||!1,this.defaultState=this.options.defaultState||"close",this.eventEffect=(r=this.options.popper)==null?void 0:r.eventEffect,this.popper=new x(this.triggerElement,this.contentElement,{placement:this.placement,offsetDistance:this.offsetDistance,eventEffect:this.eventEffect}),this.initInstance()}onToggleState(e){var t,i;(i=(t=this.options).onToggle)==null||i.call(t,{isHidden:e})}show(){var e,t,i,r;this.popper.updatePosition(),document.addEventListener("keydown",this.handleKeyDown),document.addEventListener("click",this.handleDocumentClick),(t=(e=this.options).beforeShow)==null||t.call(e),b({state:"open",popper:this.contentElement,trigger:this.triggerElement}),this.onToggleState(!1),(r=(i=this.options).onShow)==null||r.call(i)}hide(){var e,t;(t=(e=this.options).beforeHide)==null||t.call(e),b({state:"close",popper:this.contentElement,trigger:this.triggerElement}),this.triggerStrategy==="click"&&document.removeEventListener("click",this.handleDocumentClick),document.removeEventListener("keydown",this.handleKeyDown),this.triggerStrategy==="hover"&&(this.triggerElement.removeEventListener("mouseleave",this.hideOnMouseLeaseTrigger),this.contentElement.removeEventListener("mouseleave",this.hideOnMouseLeave)),pe({element:this.contentElement,callback:()=>{var i,r;this.onToggleState(!0),this.popper.cleanupEvents(),(r=(i=this.options).onHide)==null||r.call(i)}})}initInstance(){b({state:this.defaultState,popper:this.contentElement,trigger:this.triggerElement}),this.defaultState==="open"?this.show():b({state:"close",popper:this.contentElement,trigger:this.triggerElement}),this.triggerElement.addEventListener("click",this.toggleStateOnClick),this.triggerStrategy==="hover"&&this.triggerElement.addEventListener("mouseenter",this.showOnMouseEnter)}},W=(n,e=document.body)=>e.querySelector(n),j=(n,e=document.body)=>Array.from(e.querySelectorAll(n)),me=n=>typeof n=="string"?W(n):n,ge=({containerElement:n,targetChildren:e="a:not([disabled]), button:not([disabled])",direction:t})=>{let i=!1,r=me(n)||document.body,s=typeof e=="string"?j(e,r):e,o=a=>{if(a.preventDefault(),r.focus(),s.length===0)return;let c=a.key,p=document.activeElement,d=s.findIndex(g=>g===p);if(d===-1){c==="ArrowUp"||c==="ArrowLeft"?s[s.length-1].focus():s[0].focus();return}let f=g=>g>0?g-1:s.length-1,E=g=>g<s.length-1?g+1:0;switch(c){case"ArrowDown":a.preventDefault(),d=E(d);break;case"ArrowRight":break;case"ArrowUp":a.preventDefault(),d=f(d);break;case"ArrowLeft":break;case"Home":a.preventDefault(),d=0;break;case"End":a.preventDefault(),d=s.length-1;break;default:return}s[d]!==p&&s[d].focus()};return{make:()=>{i||(document.addEventListener("keydown",o),i=!0)},destroy:()=>{i&&(document.removeEventListener("keydown",o),i=!1)}}},U=(n,e,t)=>{let i=new CustomEvent(e,{detail:t});n.dispatchEvent(i)},S=class{static initGlobalRegistry(){window.$flexillaInstances||(window.$flexillaInstances={})}static register(e,t,i){return this.initGlobalRegistry(),window.$flexillaInstances[e]||(window.$flexillaInstances[e]=[]),this.getInstance(e,t)||(window.$flexillaInstances[e].push({element:t,instance:i}),i)}static getInstance(e,t){var i,r;return this.initGlobalRegistry(),(r=(i=window.$flexillaInstances[e])==null?void 0:i.find(s=>s.element===t))==null?void 0:r.instance}static removeInstance(e,t){this.initGlobalRegistry(),window.$flexillaInstances[e]&&(window.$flexillaInstances[e]=window.$flexillaInstances[e].filter(i=>i.element!==t))}},F=class G{constructor(e,t={}){h(this,"triggerElement"),h(this,"contentElement"),h(this,"options"),h(this,"OverlayInstance"),h(this,"navigationKeys"),h(this,"triggerStrategy"),h(this,"placement"),h(this,"offsetDistance"),h(this,"preventFromCloseOutside"),h(this,"preventFromCloseInside"),h(this,"defaultState"),h(this,"onToggle",({isHidden:o})=>{var a,c;(c=(a=this.options).onToggle)==null||c.call(a,{isHidden:o})}),h(this,"beforeShow",()=>{this.contentElement.focus(),this.navigationKeys.make()}),h(this,"beforeHide",()=>{this.contentElement.blur(),this.navigationKeys.destroy()}),h(this,"onShow",()=>{var o,a;U(this.contentElement,"dropdown-show",{isHidden:!1}),(a=(o=this.options).onShow)==null||a.call(o)}),h(this,"onHide",()=>{var o,a;U(this.contentElement,"dropdown-hide",{isHidden:!0}),(a=(o=this.options).onHide)==null||a.call(o)}),h(this,"show",()=>{this.OverlayInstance.show()}),h(this,"hide",()=>{this.OverlayInstance.hide()}),h(this,"setShowOptions",({placement:o,offsetDistance:a})=>{this.OverlayInstance.setShowOptions({placement:o,offsetDistance:a})}),h(this,"setOptions",({placement:o,offsetDistance:a})=>{this.OverlayInstance.setPopperOptions({placement:o,offsetDistance:a})}),h(this,"setPopperTrigger",(o,a)=>{this.OverlayInstance.setPopperTrigger(o,a)}),h(this,"cleanup",()=>{this.OverlayInstance.cleanup(),S.removeInstance("dropdown",this.contentElement)});let i=typeof e=="string"?W(e):e;if(!(i instanceof HTMLElement))throw new Error("Invalid dropdown content element: Must provide either a valid HTMLElement or a selector string that resolves to an existing HTMLElement");if(!i.id)throw new Error("Dropdown content element must have an 'id' attribute for trigger association");this.contentElement=i;let r=S.getInstance("dropdown",this.contentElement);if(r)return r;let s=`[data-dropdown-trigger][data-dropdown-id=${this.contentElement.id}]`;if(this.triggerElement=W(s),!(this.triggerElement instanceof HTMLElement))throw new Error(`No valid trigger element found. Ensure a trigger element exists with attributes: data-dropdown-trigger and data-dropdown-id="${this.contentElement.id}"`);this.options=t,this.triggerStrategy=this.options.triggerStrategy||this.contentElement.dataset.triggerStrategy||"click",this.placement=this.options.placement||this.contentElement.dataset.placement||"bottom-start",this.offsetDistance=this.options.offsetDistance||parseInt(`${this.contentElement.dataset.offsetDistance}`)|6,this.preventFromCloseOutside=this.options.preventFromCloseOutside||this.contentElement.hasAttribute("data-prevent-close-outside")||!1,this.preventFromCloseInside=this.options.preventCloseFromInside||this.contentElement.hasAttribute("data-prevent-close-inside")||!1,this.defaultState=this.options.defaultState||this.contentElement.dataset.defaultState||"close",this.OverlayInstance=new P({trigger:this.triggerElement,content:this.contentElement,options:{placement:this.placement,offsetDistance:this.offsetDistance,triggerStrategy:this.triggerStrategy,preventFromCloseOutside:this.preventFromCloseOutside,preventCloseFromInside:this.preventFromCloseInside,defaultState:this.defaultState,beforeShow:this.beforeShow,beforeHide:this.beforeHide,onShow:this.onShow,onHide:this.onHide,onToggle:({isHidden:o})=>{this.onToggle({isHidden:o})},popper:this.options.popper}}),this.navigationKeys=ge({containerElement:this.contentElement,targetChildren:"a:not([disabled]), button:not([disabled])",direction:"up-down"}),S.register("dropdown",this.contentElement,this)}static init(e,t={}){new G(e,t)}};h(F,"autoInit",(n="[data-fx-dropdown]")=>{let e=j(n);for(let t of e)new F(t)});var q=F;function fe(n){n.directive("dropdown",(e,{},{cleanup:t})=>{let i=new q(e);t(()=>{i.cleanup()})})}var B=fe;document.addEventListener("alpine:init",()=>{B(window.Alpine)});})();
|
|
1
|
+
(()=>{var J=Object.defineProperty,Q=(t,e,n)=>e in t?J(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,l=(t,e,n)=>Q(t,typeof e!="symbol"?e+"":e,n),V=Object.defineProperty,X=(t,e,n)=>e in t?V(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,m=(t,e,n)=>X(t,typeof e!="symbol"?e+"":e,n),Y="bottom",Z=({reference:t,popper:e})=>{if(!t||!e)throw new Error("Reference or popper element is null or undefined");let n=new WeakMap,i=r=>(n.has(r)||n.set(r,r.getBoundingClientRect()),n.get(r)),a=i(e),s=i(t);return{popperHeight:a.height,popperWidth:a.width,refHeight:s.height,refWidth:s.width,refLeft:s.left,refTop:s.top,refRight:s.right}},_=(t,e,n,i)=>{let a=n,s=i-(n+e);return a>=(t-e)/2&&s>=(t-e)/2},ee=(t,e,n,i)=>(t-e)/2<=n&&n+t/2+e/2<=i,te=(t,e,n,i,a)=>n>a-i?e()?window.innerHeight-a:n-a:t()?0:n+i,ne=(t,e,n,i)=>t<=i&&n-t<=e,ie=(t,e,n,i)=>n<=i&&-t<=e,se=(t,e,n,i,a,s)=>{let r=a-n-s,o=n-i,h=n+s-i+(a-n-s),c=r>=0?a-i:o>=0?n-i:n;return t()?0:e()?h:c},re=(t,e,n,i)=>t<=n&&e-t-i>=t,oe=(t,e)=>t>=e,ae=({placement:t,refWidth:e,refTop:n,refLeft:i,refHeight:a,popperWidth:s,popperHeight:r,windowHeight:o,windowWidth:h,offsetDistance:c})=>{let p=h-i-e,f=i,E=o-n-a,g=n,w=()=>te(()=>ie(n,a,r,o),()=>ne(n,a,r,o),n,a,r),b=()=>se(()=>re(i,h,s,e),()=>oe(i,s),i,s,h,e),I=()=>_(s,e,i,h)?i+e/2-s/2:b(),M=()=>ee(r,a,n,o)?n+a/2-r/2:w(),A=()=>i+s<=h?i:b(),k=()=>i+e-s>=0?i+e-s:b(),L=()=>n+r<=o?n:w(),q=()=>n+a-r>=0?n+a-r:w(),u=0,v=0,C=n-r-c,D=n+a+c,H=i-s-c,x=i+e+c,R=g>=r+c,N=E>=r+c,$=f>=s+c,K=p>=s+c;switch(t.startsWith("top")?v=R?C:N?D:Math.max(C,D):t.startsWith("bottom")?v=N?D:R?C:Math.max(D):t.startsWith("left")?u=$?H:K?x:Math.max(H,x):t.startsWith("right")&&(u=K?x:$?H:Math.max(x,H)),t){case"bottom":case"bottom-middle":case"top":case"top-middle":u=I();break;case"left":case"left-middle":case"right":case"right-middle":v=M();break;case"bottom-start":case"top-start":u=A();break;case"bottom-end":case"top-end":u=k();break;case"left-start":case"right-start":v=L();break;case"left-end":case"right-end":v=q();break}return{x:u,y:v}},T=class{constructor(e,n,i={}){m(this,"reference"),m(this,"popper"),m(this,"offsetDistance"),m(this,"placement"),m(this,"disableOnResize"),m(this,"disableOnScroll"),m(this,"onUpdate"),m(this,"isWindowEventsRegistered"),m(this,"validateElements",()=>{if(!(this.reference instanceof HTMLElement))throw new Error("Invalid HTMLElement for Reference Element");if(!(this.popper instanceof HTMLElement))throw new Error("Invalid HTMLElement for Popper");if(typeof this.offsetDistance!="number")throw new Error("OffsetDistance must be a number")}),m(this,"setPopperStyleProperty",(p,f)=>{this.popper.style.setProperty("--fx-popper-placement-x",`${p}px`),this.popper.style.setProperty("--fx-popper-placement-y",`${f}px`)}),m(this,"setInitialStyles",()=>{this.popper.style.setProperty("--fx-popper-placement-x",""),this.popper.style.setProperty("--fx-popper-placement-y","")}),m(this,"initPlacement",()=>{var p;this.validateElements(),this.setInitialStyles();let f=window.innerWidth,E=window.innerHeight,{popperHeight:g,popperWidth:w,refHeight:b,refWidth:I,refLeft:M,refTop:A}=Z({reference:this.reference,popper:this.popper}),{x:k,y:L}=ae({placement:this.placement,refWidth:I,refTop:A,refLeft:M,popperWidth:w,refHeight:b,popperHeight:g,windowHeight:E,windowWidth:f,offsetDistance:this.offsetDistance});this.setPopperStyleProperty(k,L),(p=this.onUpdate)==null||p.call(this,{x:k,y:L,placement:this.placement})}),m(this,"removeWindowEvents",()=>{this.isWindowEventsRegistered&&(!this.disableOnResize&&window.removeEventListener("resize",this.updatePosition),!this.disableOnScroll&&window.removeEventListener("scroll",this.updatePosition),this.isWindowEventsRegistered=!1)}),m(this,"attachWindowEvent",()=>{this.isWindowEventsRegistered&&this.removeWindowEvents(),this.disableOnResize||window.addEventListener("resize",this.updatePosition),this.disableOnScroll||window.addEventListener("scroll",this.updatePosition),this.isWindowEventsRegistered=!0}),m(this,"resetPosition",()=>{this.setInitialStyles()}),m(this,"updatePosition",()=>{this.initPlacement(),this.attachWindowEvent()}),m(this,"cleanupEvents",()=>{this.setInitialStyles(),this.removeWindowEvents()});let{offsetDistance:a=10,placement:s=Y,eventEffect:r={},onUpdate:o}=i;if(!(e instanceof HTMLElement))throw new Error("Invalid HTMLElement for Reference Element");if(!(n instanceof HTMLElement))throw new Error("Invalid HTMLElement for Popper");if(i.offsetDistance&&typeof i.offsetDistance!="number")throw new Error("OffsetDistance must be a number");let{disableOnResize:h,disableOnScroll:c}=r;this.isWindowEventsRegistered=!1,this.reference=e,this.popper=n,this.offsetDistance=a,this.placement=s,this.disableOnResize=h||!1,this.disableOnScroll=c||!1,this.onUpdate=o}setOptions({placement:e,offsetDistance:n}){this.placement=e,this.offsetDistance=n||this.offsetDistance,this.initPlacement(),this.attachWindowEvent()}},le=Object.defineProperty,he=(t,e,n)=>e in t?le(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,d=(t,e,n)=>he(t,typeof e!="symbol"?e+"":e,n),de=(t,e=document.body)=>e.querySelector(t),z=(t,e)=>{for(let[n,i]of Object.entries(e))t.setAttribute(n,i)},ce=({element:t,callback:e,type:n,keysCheck:i})=>{let a=getComputedStyle(t),s=a.transition;if(s!=="none"&&s!==""&&!i.includes(s)){let r="transitionend",o=()=>{t.removeEventListener(r,o),e()};t.addEventListener(r,o,{once:!0})}else e()},pe=({element:t,callback:e})=>{ce({element:t,callback:e,type:"transition",keysCheck:["all 0s ease 0s","all"]})},me=(t,e,n)=>{let i=new CustomEvent(e,{detail:n});t.dispatchEvent(i)},y=({state:t,trigger:e,popper:n})=>{let i=t==="open";z(n,{"data-state":t}),z(e,{"aria-expanded":`${i}`})},P=class{constructor({trigger:e,content:n,options:i={}}){d(this,"triggerElement"),d(this,"contentElement"),d(this,"triggerStrategy"),d(this,"placement"),d(this,"offsetDistance"),d(this,"preventFromCloseOutside"),d(this,"preventFromCloseInside"),d(this,"options"),d(this,"defaultState"),d(this,"popper"),d(this,"eventEffect"),d(this,"getElement",s=>typeof s=="string"?de(s):s instanceof HTMLElement?s:void 0),d(this,"handleDocumentClick",s=>{this.contentElement.getAttribute("data-state")==="open"&&(!this.triggerElement.contains(s.target)&&!this.preventFromCloseInside&&!this.preventFromCloseOutside?this.hide():!this.triggerElement.contains(s.target)&&!this.contentElement.contains(s.target)&&!this.preventFromCloseOutside?this.hide():!this.triggerElement.contains(s.target)&&!this.contentElement.contains(s.target)&&!this.preventFromCloseOutside?this.hide():!this.triggerElement.contains(s.target)&&this.contentElement.contains(s.target)&&!this.preventFromCloseInside&&this.hide())}),d(this,"handleKeyDown",s=>{s.preventDefault(),this.triggerStrategy!=="hover"&&s.key==="Escape"&&this.contentElement.getAttribute("data-state")==="open"&&(this.preventFromCloseOutside||this.hide())}),d(this,"toggleStateOnClick",()=>{(this.contentElement.dataset.state||"close")==="close"?(this.show(),this.triggerStrategy==="hover"&&this.addEventOnMouseEnter()):this.hide()}),d(this,"hideOnMouseLeaseTrigger",()=>{setTimeout(()=>{this.contentElement.matches(":hover")||this.hide()},150)}),d(this,"hideOnMouseLeave",()=>{setTimeout(()=>{this.triggerElement.matches(":hover")||this.hide()},150)}),d(this,"addEventOnMouseEnter",()=>{this.triggerElement.addEventListener("mouseleave",this.hideOnMouseLeaseTrigger),this.contentElement.addEventListener("mouseleave",this.hideOnMouseLeave)}),d(this,"showOnMouseEnter",()=>{this.show(),this.addEventOnMouseEnter()}),d(this,"setShowOptions",({placement:s,offsetDistance:r})=>{var o,h,c,p;this.popper.setOptions({placement:s,offsetDistance:r}),document.addEventListener("keydown",this.handleKeyDown),document.addEventListener("click",this.handleDocumentClick),(h=(o=this.options).beforeShow)==null||h.call(o),y({state:"open",popper:this.contentElement,trigger:this.triggerElement}),this.onToggleState(!1),(p=(c=this.options).onShow)==null||p.call(c)}),d(this,"setPopperOptions",({placement:s,offsetDistance:r})=>{this.popper.setOptions({placement:s,offsetDistance:r||this.offsetDistance})}),d(this,"setPopperTrigger",(s,r)=>{this.cleanup(),this.popper.setOptions({placement:r.placement||this.placement,offsetDistance:r.offsetDistance||this.offsetDistance}),this.triggerElement=s,this.triggerElement.addEventListener("click",this.toggleStateOnClick),this.triggerStrategy==="hover"&&this.triggerElement.addEventListener("mouseenter",this.showOnMouseEnter)}),d(this,"cleanup",()=>{this.triggerElement.removeEventListener("click",this.toggleStateOnClick),this.triggerStrategy==="hover"&&this.triggerElement.removeEventListener("mouseenter",this.showOnMouseEnter)});var a;if(this.contentElement=this.getElement(n),this.triggerElement=this.getElement(e),!(this.triggerElement instanceof HTMLElement))throw new Error("Trigger element must be a valid HTML element");if(!(this.contentElement instanceof HTMLElement))throw new Error("Content element must be a valid HTML element");this.options=i,this.triggerStrategy=this.options.triggerStrategy||"click",this.placement=this.options.placement||"bottom",this.offsetDistance=this.options.offsetDistance||6,this.preventFromCloseOutside=this.options.preventFromCloseOutside||!1,this.preventFromCloseInside=this.options.preventCloseFromInside||!1,this.defaultState=this.options.defaultState||"close",this.eventEffect=(a=this.options.popper)==null?void 0:a.eventEffect,this.popper=new T(this.triggerElement,this.contentElement,{placement:this.placement,offsetDistance:this.offsetDistance,eventEffect:this.eventEffect}),this.initInstance()}onToggleState(e){var n,i;(i=(n=this.options).onToggle)==null||i.call(n,{isHidden:e})}show(){var e,n,i,a;this.popper.updatePosition(),document.addEventListener("keydown",this.handleKeyDown),document.addEventListener("click",this.handleDocumentClick),(n=(e=this.options).beforeShow)==null||n.call(e),y({state:"open",popper:this.contentElement,trigger:this.triggerElement}),this.onToggleState(!1),(a=(i=this.options).onShow)==null||a.call(i)}hide(){var e,n,i;let a=!1;me(this.contentElement,"before-hide",{setExitAction:r=>{a=r}});let s=(i=(n=(e=this.options).beforeHide)==null?void 0:n.call(e))==null?void 0:i.cancelAction;a||s||(y({state:"close",popper:this.contentElement,trigger:this.triggerElement}),this.triggerStrategy==="click"&&document.removeEventListener("click",this.handleDocumentClick),document.removeEventListener("keydown",this.handleKeyDown),this.triggerStrategy==="hover"&&(this.triggerElement.removeEventListener("mouseleave",this.hideOnMouseLeaseTrigger),this.contentElement.removeEventListener("mouseleave",this.hideOnMouseLeave)),pe({element:this.contentElement,callback:()=>{var r,o;this.onToggleState(!0),this.popper.cleanupEvents(),(o=(r=this.options).onHide)==null||o.call(r)}}))}initInstance(){y({state:this.defaultState,popper:this.contentElement,trigger:this.triggerElement}),this.defaultState==="open"?this.show():y({state:"close",popper:this.contentElement,trigger:this.triggerElement}),this.triggerElement.addEventListener("click",this.toggleStateOnClick),this.triggerStrategy==="hover"&&this.triggerElement.addEventListener("mouseenter",this.showOnMouseEnter)}},W=(t,e=document.body)=>e.querySelector(t),O=(t,e=document.body)=>Array.from(e.querySelectorAll(t)),ge=t=>typeof t=="string"?W(t):t,fe=({containerElement:t,targetChildren:e="a:not([disabled]), button:not([disabled])",direction:n})=>{let i=!1,a=ge(t)||document.body,s=typeof e=="string"?O(e,a):e,r=o=>{if(o.preventDefault(),a.focus(),s.length===0)return;let h=o.key,c=document.activeElement,p=s.findIndex(g=>g===c);if(p===-1){h==="ArrowUp"||h==="ArrowLeft"?s[s.length-1].focus():s[0].focus();return}let f=g=>g>0?g-1:s.length-1,E=g=>g<s.length-1?g+1:0;switch(h){case"ArrowDown":o.preventDefault(),p=E(p);break;case"ArrowRight":break;case"ArrowUp":o.preventDefault(),p=f(p);break;case"ArrowLeft":break;case"Home":o.preventDefault(),p=0;break;case"End":o.preventDefault(),p=s.length-1;break;default:return}s[p]!==c&&s[p].focus()};return{make:()=>{i||(document.addEventListener("keydown",r),i=!0)},destroy:()=>{i&&(document.removeEventListener("keydown",r),i=!1)}}},U=(t,e,n)=>{let i=new CustomEvent(e,{detail:n});t.dispatchEvent(i)};function ue(t,e,n="move"){if(!(t instanceof HTMLElement))throw new Error("Source element must be an HTMLElement");if(!(e instanceof HTMLElement))throw new Error("Target element must be an HTMLElement");if(!["move","detachable"].includes(n))throw new Error(`Invalid teleport mode: ${n}. Must be "move" or "detachable".`);let i=document.createComment("teleporter-placeholder"),a=t.parentNode;return a?a.insertBefore(i,t):console.warn("Element has no parent; placeholder not inserted."),n==="move"?(t.parentNode&&e.appendChild(t),{append(){t.parentNode!==e&&e.appendChild(t)},remove(){i!=null&&i.parentNode&&t.parentNode&&i.parentNode.insertBefore(t,i)},restore(){i!=null&&i.parentNode&&t.parentNode!==a&&i.parentNode.insertBefore(t,i)}}):(t.parentNode&&e.appendChild(t),{append(){e.contains(t)||e.appendChild(t)},remove(){t.parentNode&&t.remove()},restore(){i!=null&&i.parentNode&&!t.parentNode&&i.parentNode.insertBefore(t,i)}})}var S=class{static initGlobalRegistry(){window.$flexillaInstances||(window.$flexillaInstances={})}static register(e,n,i){return this.initGlobalRegistry(),window.$flexillaInstances[e]||(window.$flexillaInstances[e]=[]),this.getInstance(e,n)||(window.$flexillaInstances[e].push({element:n,instance:i}),i)}static getInstance(e,n){var i,a;return this.initGlobalRegistry(),(a=(i=window.$flexillaInstances[e])==null?void 0:i.find(s=>s.element===n))==null?void 0:a.instance}static removeInstance(e,n){this.initGlobalRegistry(),window.$flexillaInstances[e]&&(window.$flexillaInstances[e]=window.$flexillaInstances[e].filter(i=>i.element!==n))}},ve={teleport:!0,teleportMode:"move"},F=class j{constructor(e,n={}){l(this,"triggerElement"),l(this,"contentElement"),l(this,"items",[]),l(this,"options"),l(this,"OverlayInstance"),l(this,"navigationKeys"),l(this,"keyObserver"),l(this,"subtriggerObserver"),l(this,"triggerStrategy"),l(this,"placement"),l(this,"offsetDistance"),l(this,"preventFromCloseOutside"),l(this,"preventFromCloseInside"),l(this,"defaultState"),l(this,"experimentalOptions"),l(this,"teleporter"),l(this,"updateSubtriggerAttr",(r,o)=>{o==="add"?(r.setAttribute("data-current-subtrigger",""),r.setAttribute("data-focus","active")):(r.removeAttribute("data-current-subtrigger"),r.removeAttribute("data-focus"))}),l(this,"updateObserverFor",r=>{let o=O("[data-dropdown-trigger]",this.contentElement);for(let h of o)r.observe(h,{attributes:!0,attributeFilter:["aria-expanded"]})}),l(this,"observeEl",()=>{this.keyObserver=new MutationObserver(r=>{for(let o of r)o.type==="attributes"&&o.attributeName==="aria-expanded"&&(o.target.getAttribute("aria-expanded")==="true"?this.navigationKeys.destroy():this.contentElement.dataset.state==="open"&&this.navigationKeys.make())}),this.updateObserverFor(this.keyObserver)}),l(this,"observeSubtriggers",()=>{this.subtriggerObserver=new MutationObserver(r=>{for(let o of r)if(o.type==="attributes"&&o.attributeName==="aria-expanded"){let h=o.target,c=h.getAttribute("aria-expanded");this.updateSubtriggerAttr(h,c==="true"?"add":"remove")}}),this.updateObserverFor(this.subtriggerObserver)}),l(this,"onToggle",({isHidden:r})=>{var o,h;(h=(o=this.options).onToggle)==null||h.call(o,{isHidden:r})}),l(this,"moveElOnInit",()=>{this.experimentalOptions.teleport&&(this.experimentalOptions.teleportMode==="detachable"?this.teleporter.remove():this.teleporter.append())}),l(this,"moveEl",()=>{this.experimentalOptions.teleport&&this.experimentalOptions.teleportMode==="detachable"&&this.teleporter.remove()}),l(this,"restoreEl",()=>{this.experimentalOptions.teleport&&this.experimentalOptions.teleportMode==="detachable"&&this.teleporter.append()}),l(this,"beforeShow",()=>{this.restoreEl(),this.contentElement.focus(),this.navigationKeys.make(),this.addArrowEvent()}),l(this,"beforeHide",()=>{this.contentElement.blur(),this.navigationKeys.destroy(),this.removeArrowEvent()}),l(this,"showHideOnArrow",r=>{r.preventDefault();let o=r.key,h=document.activeElement;if(h!=null&&h.hasAttribute("data-dropdown-trigger"))switch(o){case"ArrowRight":h.getAttribute("aria-expanded")!=="true"&&(h.click(),this.updateSubtriggerAttr(h,"add"));break;case"ArrowLeft":h.getAttribute("aria-expanded")==="true"&&(h.click(),this.updateSubtriggerAttr(h,"remove"));break;default:return}if(this.triggerElement.hasAttribute("data-current-subtrigger"))switch(o){case"ArrowLeft":this.triggerElement.click(),this.triggerElement.focus(),this.updateSubtriggerAttr(this.triggerElement,"remove");break;default:return}}),l(this,"addArrowEvent",()=>{document.addEventListener("keydown",this.showHideOnArrow)}),l(this,"removeArrowEvent",()=>{document.removeEventListener("keydown",this.showHideOnArrow)}),l(this,"onShow",()=>{var r,o;U(this.contentElement,"dropdown-show",{isHidden:!1}),(o=(r=this.options).onShow)==null||o.call(r),this.observeEl(),this.observeSubtriggers()}),l(this,"onHide",()=>{var r,o;U(this.contentElement,"dropdown-hide",{isHidden:!0}),(o=(r=this.options).onHide)==null||o.call(r),this.moveEl(),this.triggerElement.hasAttribute("data-current-subtrigger")&&this.updateSubtriggerAttr(this.triggerElement,"remove"),this.disconnectObserver()}),l(this,"show",()=>this.OverlayInstance.show()),l(this,"hide",()=>this.OverlayInstance.hide()),l(this,"setShowOptions",({placement:r,offsetDistance:o})=>{this.OverlayInstance.setShowOptions({placement:r,offsetDistance:o})}),l(this,"setOptions",({placement:r,offsetDistance:o})=>{this.OverlayInstance.setPopperOptions({placement:r,offsetDistance:o})}),l(this,"setPopperTrigger",(r,o)=>{this.OverlayInstance.setPopperTrigger(r,o)}),l(this,"disconnectObserver",()=>{this.keyObserver&&this.keyObserver.disconnect(),this.subtriggerObserver&&this.subtriggerObserver.disconnect()}),l(this,"cleanup",()=>{this.disconnectObserver(),this.OverlayInstance.cleanup(),S.removeInstance("dropdown",this.contentElement)});let i=typeof e=="string"?W(e):e;if(!(i instanceof HTMLElement))throw new Error("Invalid dropdown content element: Must provide either a valid HTMLElement or a selector string that resolves to an existing HTMLElement");if(!i.id)throw new Error("Dropdown content element must have an 'id' attribute for trigger association");this.contentElement=i;let a=S.getInstance("dropdown",this.contentElement);if(a)return a;let s=`[data-dropdown-trigger][data-dropdown-id=${this.contentElement.id}]`;if(this.triggerElement=W(s),!(this.triggerElement instanceof HTMLElement))throw new Error(`No valid trigger element found. Ensure a trigger element exists with attributes: data-dropdown-trigger and data-dropdown-id="${this.contentElement.id}"`);this.options=n,this.triggerStrategy=this.contentElement.dataset.triggerStrategy||this.options.triggerStrategy||"click",this.placement=this.contentElement.dataset.placement||this.options.placement||"bottom-start",this.offsetDistance=parseInt(`${this.contentElement.dataset.offsetDistance}`)||this.options.offsetDistance||6,this.preventFromCloseOutside=this.contentElement.hasAttribute("data-prevent-close-outside")||this.options.preventFromCloseOutside||!1,this.preventFromCloseInside=this.contentElement.hasAttribute("data-prevent-close-inside")||this.options.preventCloseFromInside||!1,this.defaultState=this.contentElement.dataset.defaultState||this.options.defaultState||"close",this.experimentalOptions=Object.assign({},ve,n.experimental),this.teleporter=ue(this.contentElement,document.body,this.experimentalOptions.teleportMode),this.OverlayInstance=new P({trigger:this.triggerElement,content:this.contentElement,options:{placement:this.placement,offsetDistance:this.offsetDistance,triggerStrategy:this.triggerStrategy,preventFromCloseOutside:this.preventFromCloseOutside,preventCloseFromInside:this.preventFromCloseInside,defaultState:this.defaultState,beforeShow:this.beforeShow,beforeHide:()=>{if(O("[data-dropdown-trigger][aria-expanded=true]",this.contentElement).length>=1)return{cancelAction:!0};this.beforeHide()},onShow:this.onShow,onHide:this.onHide,onToggle:({isHidden:r})=>{this.onToggle({isHidden:r})},popper:this.options.popper}}),this.moveElOnInit(),this.items=O("a:not([disabled]), button:not([disabled])",this.contentElement),this.navigationKeys=fe({containerElement:this.contentElement,targetChildren:this.items,direction:"up-down"}),S.register("dropdown",this.contentElement,this)}static init(e,n={}){new j(e,n)}};l(F,"autoInit",(t="[data-fx-dropdown]")=>{let e=O(t);for(let n of e)new F(n)});var B=F;function Ee(t){t.directive("dropdown",(e,{},{cleanup:n})=>{let i=new B(e);n(()=>{i.cleanup()})})}var G=Ee;document.addEventListener("alpine:init",()=>{G(window.Alpine)});})();
|