@flexilla/alpine-dropdown 0.2.0 → 0.3.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 +60 -43
- package/dist/cdn.min.js +1 -1
- package/dist/module.cjs.js +60 -43
- package/dist/module.esm.js +60 -43
- package/package.json +3 -3
package/dist/cdn.js
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
var B = Object.defineProperty;
|
|
4
4
|
var j = (i, e, t) => e in i ? B(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t;
|
|
5
5
|
var a = (i, e, t) => j(i, typeof e != "symbol" ? e + "" : e, t);
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
var p = (i, e, t) =>
|
|
6
|
+
var q = Object.defineProperty;
|
|
7
|
+
var G = (i, e, t) => e in i ? q(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t;
|
|
8
|
+
var p = (i, e, t) => G(i, typeof e != "symbol" ? e + "" : e, t);
|
|
9
9
|
var V = "bottom";
|
|
10
10
|
var X = ({ reference: i, popper: e }) => {
|
|
11
11
|
if (!i || !e)
|
|
@@ -60,33 +60,33 @@
|
|
|
60
60
|
s,
|
|
61
61
|
m,
|
|
62
62
|
e
|
|
63
|
-
),
|
|
63
|
+
), M = () => Y(s, e, n, m) ? n + e / 2 - s / 2 : b(), A = () => J(o, r, t, l) ? t + r / 2 - o / 2 : w(), C = () => n + s <= m ? n : b(), L = () => n + e - s >= 0 ? n + e - s : b(), x = () => t + o <= l ? t : w(), U = () => t + r - o >= 0 ? t + r - o : w();
|
|
64
64
|
let u = 0, v = 0;
|
|
65
|
-
const
|
|
66
|
-
switch (i.startsWith("top") ? v =
|
|
65
|
+
const T = t - o - c, I = t + r + c, D = n - s - c, H = n + e + c, P = g >= o + c, W = E >= o + c, R = f >= s + c, $ = d >= s + c;
|
|
66
|
+
switch (i.startsWith("top") ? v = P ? T : W ? I : Math.max(T, I) : i.startsWith("bottom") ? v = W ? I : P ? T : Math.max(I) : i.startsWith("left") ? u = R ? D : $ ? H : Math.max(D, H) : i.startsWith("right") && (u = $ ? H : R ? D : Math.max(H, D)), i) {
|
|
67
67
|
case "bottom":
|
|
68
68
|
case "bottom-middle":
|
|
69
69
|
case "top":
|
|
70
70
|
case "top-middle":
|
|
71
|
-
u =
|
|
71
|
+
u = M();
|
|
72
72
|
break;
|
|
73
73
|
case "left":
|
|
74
74
|
case "left-middle":
|
|
75
75
|
case "right":
|
|
76
76
|
case "right-middle":
|
|
77
|
-
v =
|
|
77
|
+
v = A();
|
|
78
78
|
break;
|
|
79
79
|
case "bottom-start":
|
|
80
80
|
case "top-start":
|
|
81
|
-
u =
|
|
81
|
+
u = C();
|
|
82
82
|
break;
|
|
83
83
|
case "bottom-end":
|
|
84
84
|
case "top-end":
|
|
85
|
-
u =
|
|
85
|
+
u = L();
|
|
86
86
|
break;
|
|
87
87
|
case "left-start":
|
|
88
88
|
case "right-start":
|
|
89
|
-
v =
|
|
89
|
+
v = x();
|
|
90
90
|
break;
|
|
91
91
|
case "left-end":
|
|
92
92
|
case "right-end":
|
|
@@ -129,12 +129,12 @@
|
|
|
129
129
|
}), p(this, "initPlacement", () => {
|
|
130
130
|
var d;
|
|
131
131
|
this.validateElements(), this.setInitialStyles();
|
|
132
|
-
const f = window.innerWidth, E = window.innerHeight, { popperHeight: g, popperWidth: w, refHeight: b, refWidth:
|
|
132
|
+
const f = window.innerWidth, E = window.innerHeight, { popperHeight: g, popperWidth: w, refHeight: b, refWidth: M, refLeft: A, refTop: C } = X({ reference: this.reference, popper: this.popper }), { x: L, y: x } = ie(
|
|
133
133
|
{
|
|
134
134
|
placement: this.placement,
|
|
135
|
-
refWidth:
|
|
136
|
-
refTop:
|
|
137
|
-
refLeft:
|
|
135
|
+
refWidth: M,
|
|
136
|
+
refTop: C,
|
|
137
|
+
refLeft: A,
|
|
138
138
|
popperWidth: w,
|
|
139
139
|
refHeight: b,
|
|
140
140
|
popperHeight: g,
|
|
@@ -143,7 +143,7 @@
|
|
|
143
143
|
offsetDistance: this.offsetDistance
|
|
144
144
|
}
|
|
145
145
|
);
|
|
146
|
-
this.setPopperStyleProperty(
|
|
146
|
+
this.setPopperStyleProperty(L, x), (d = this.onUpdate) == null || d.call(this, { x: L, y: x, placement: this.placement });
|
|
147
147
|
}), p(this, "removeWindowEvents", () => {
|
|
148
148
|
this.isWindowEventsRegistered && (!this.disableOnResize && window.removeEventListener("resize", this.updatePosition), !this.disableOnScroll && window.removeEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = false);
|
|
149
149
|
}), p(this, "attachWindowEvent", () => {
|
|
@@ -345,12 +345,12 @@
|
|
|
345
345
|
}), this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
|
|
346
346
|
}
|
|
347
347
|
};
|
|
348
|
-
var
|
|
349
|
-
var
|
|
350
|
-
var pe = (i) => typeof i == "string" ?
|
|
348
|
+
var F = (i, e = document.body) => e.querySelector(i);
|
|
349
|
+
var S = (i, e = document.body) => Array.from(e.querySelectorAll(i));
|
|
350
|
+
var pe = (i) => typeof i == "string" ? F(i) : i;
|
|
351
351
|
var me = ({ containerElement: i, targetChildren: e = "a:not([disabled]), button:not([disabled])", direction: t }) => {
|
|
352
352
|
let n = false;
|
|
353
|
-
const r = pe(i) || document.body, s = typeof e == "string" ?
|
|
353
|
+
const r = pe(i) || document.body, s = typeof e == "string" ? S(e, r) : e, o = (l) => {
|
|
354
354
|
if (l.preventDefault(), r.focus(), s.length === 0)
|
|
355
355
|
return;
|
|
356
356
|
const m = l.key, c = document.activeElement;
|
|
@@ -391,11 +391,19 @@
|
|
|
391
391
|
}
|
|
392
392
|
};
|
|
393
393
|
};
|
|
394
|
-
var
|
|
394
|
+
var z = (i, e, t) => {
|
|
395
395
|
const n = new CustomEvent(e, { detail: t });
|
|
396
396
|
i.dispatchEvent(n);
|
|
397
397
|
};
|
|
398
|
-
function ge(i
|
|
398
|
+
function ge(i) {
|
|
399
|
+
const e = () => {
|
|
400
|
+
document.querySelector(
|
|
401
|
+
"[data-fx-component]:not([data-component-initialized])"
|
|
402
|
+
) ? requestAnimationFrame(e) : i();
|
|
403
|
+
};
|
|
404
|
+
e();
|
|
405
|
+
}
|
|
406
|
+
function fe(i, e, t = "move") {
|
|
399
407
|
if (!(i instanceof HTMLElement))
|
|
400
408
|
throw new Error("Source element must be an HTMLElement");
|
|
401
409
|
if (!(e instanceof HTMLElement))
|
|
@@ -426,7 +434,7 @@
|
|
|
426
434
|
}
|
|
427
435
|
});
|
|
428
436
|
}
|
|
429
|
-
var
|
|
437
|
+
var O = class {
|
|
430
438
|
static initGlobalRegistry() {
|
|
431
439
|
window.$flexillaInstances || (window.$flexillaInstances = {});
|
|
432
440
|
}
|
|
@@ -444,12 +452,18 @@
|
|
|
444
452
|
(n) => n.element !== t
|
|
445
453
|
));
|
|
446
454
|
}
|
|
455
|
+
static setup(e) {
|
|
456
|
+
e.setAttribute("data-fx-component", "fx");
|
|
457
|
+
}
|
|
458
|
+
static initialized(e) {
|
|
459
|
+
e.setAttribute("data-component-initialized", "initialized");
|
|
460
|
+
}
|
|
447
461
|
};
|
|
448
|
-
var
|
|
462
|
+
var ue = {
|
|
449
463
|
teleport: true,
|
|
450
464
|
teleportMode: "move"
|
|
451
465
|
};
|
|
452
|
-
var
|
|
466
|
+
var k = class k2 {
|
|
453
467
|
/**
|
|
454
468
|
* Creates a new Dropdown instance
|
|
455
469
|
* @param dropdown - The dropdown content element or selector
|
|
@@ -477,7 +491,7 @@
|
|
|
477
491
|
t2 === "add" ? (e2.setAttribute("data-current-subtrigger", ""), e2.setAttribute("data-focus", "active")) : (e2.removeAttribute("data-current-subtrigger"), e2.removeAttribute("data-focus"));
|
|
478
492
|
});
|
|
479
493
|
a(this, "updateObserverFor", (e2) => {
|
|
480
|
-
const t2 =
|
|
494
|
+
const t2 = S("[data-dropdown-trigger]", this.contentElement);
|
|
481
495
|
for (const n2 of t2)
|
|
482
496
|
e2.observe(n2, {
|
|
483
497
|
attributes: true,
|
|
@@ -504,7 +518,9 @@
|
|
|
504
518
|
(n2 = (t2 = this.options).onToggle) == null || n2.call(t2, { isHidden: e2 });
|
|
505
519
|
});
|
|
506
520
|
a(this, "moveElOnInit", () => {
|
|
507
|
-
this.experimentalOptions.teleport && (
|
|
521
|
+
this.experimentalOptions.teleport && ge(() => {
|
|
522
|
+
this.experimentalOptions.teleportMode === "detachable" ? this.teleporter.remove() : this.teleporter.append();
|
|
523
|
+
});
|
|
508
524
|
});
|
|
509
525
|
a(this, "moveEl", () => {
|
|
510
526
|
this.experimentalOptions.teleport && this.experimentalOptions.teleportMode === "detachable" && this.teleporter.remove();
|
|
@@ -549,13 +565,13 @@
|
|
|
549
565
|
});
|
|
550
566
|
a(this, "onShow", () => {
|
|
551
567
|
var e2, t2;
|
|
552
|
-
|
|
568
|
+
z(this.contentElement, "dropdown-show", {
|
|
553
569
|
isHidden: false
|
|
554
570
|
}), (t2 = (e2 = this.options).onShow) == null || t2.call(e2), this.observeEl(), this.observeSubtriggers();
|
|
555
571
|
});
|
|
556
572
|
a(this, "onHide", () => {
|
|
557
573
|
var e2, t2;
|
|
558
|
-
|
|
574
|
+
z(this.contentElement, "dropdown-hide", {
|
|
559
575
|
isHidden: true
|
|
560
576
|
}), (t2 = (e2 = this.options).onHide) == null || t2.call(e2), this.moveEl(), this.triggerElement.hasAttribute("data-current-subtrigger") && this.updateSubtriggerAttr(this.triggerElement, "remove"), this.disconnectObserver();
|
|
561
577
|
});
|
|
@@ -574,9 +590,9 @@
|
|
|
574
590
|
this.keyObserver && this.keyObserver.disconnect(), this.subtriggerObserver && this.subtriggerObserver.disconnect();
|
|
575
591
|
});
|
|
576
592
|
a(this, "cleanup", () => {
|
|
577
|
-
this.disconnectObserver(), this.OverlayInstance.cleanup(),
|
|
593
|
+
this.disconnectObserver(), this.OverlayInstance.cleanup(), O.removeInstance("dropdown", this.contentElement);
|
|
578
594
|
});
|
|
579
|
-
const n = typeof e == "string" ?
|
|
595
|
+
const n = typeof e == "string" ? F(e) : e;
|
|
580
596
|
if (!(n instanceof HTMLElement))
|
|
581
597
|
throw new Error(
|
|
582
598
|
"Invalid dropdown content element: Must provide either a valid HTMLElement or a selector string that resolves to an existing HTMLElement"
|
|
@@ -584,13 +600,14 @@
|
|
|
584
600
|
if (!n.id)
|
|
585
601
|
throw new Error("Dropdown content element must have an 'id' attribute for trigger association");
|
|
586
602
|
this.contentElement = n;
|
|
587
|
-
const r =
|
|
603
|
+
const r = O.getInstance("dropdown", this.contentElement);
|
|
588
604
|
if (r)
|
|
589
605
|
return r;
|
|
606
|
+
O.setup(this.contentElement);
|
|
590
607
|
const s = `[data-dropdown-trigger][data-dropdown-id=${this.contentElement.id}]`;
|
|
591
|
-
if (this.triggerElement =
|
|
608
|
+
if (this.triggerElement = F(s), !(this.triggerElement instanceof HTMLElement))
|
|
592
609
|
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}"`);
|
|
593
|
-
this.options = t, 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 || false, this.preventFromCloseInside = this.contentElement.hasAttribute("data-prevent-close-inside") || this.options.preventCloseFromInside || false, this.defaultState = this.contentElement.dataset.defaultState || this.options.defaultState || "close", this.experimentalOptions = Object.assign({},
|
|
610
|
+
this.options = t, 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 || false, this.preventFromCloseInside = this.contentElement.hasAttribute("data-prevent-close-inside") || this.options.preventCloseFromInside || false, this.defaultState = this.contentElement.dataset.defaultState || this.options.defaultState || "close", this.experimentalOptions = Object.assign({}, ue, t.experimental), this.teleporter = fe(this.contentElement, document.body, this.experimentalOptions.teleportMode), this.OverlayInstance = new ce({
|
|
594
611
|
trigger: this.triggerElement,
|
|
595
612
|
content: this.contentElement,
|
|
596
613
|
options: {
|
|
@@ -602,7 +619,7 @@
|
|
|
602
619
|
defaultState: this.defaultState,
|
|
603
620
|
beforeShow: this.beforeShow,
|
|
604
621
|
beforeHide: () => {
|
|
605
|
-
if (
|
|
622
|
+
if (S("[data-dropdown-trigger][aria-expanded=true]", this.contentElement).length >= 1)
|
|
606
623
|
return { cancelAction: true };
|
|
607
624
|
this.beforeHide();
|
|
608
625
|
},
|
|
@@ -613,11 +630,11 @@
|
|
|
613
630
|
},
|
|
614
631
|
popper: this.options.popper
|
|
615
632
|
}
|
|
616
|
-
}), this.moveElOnInit(), this.items =
|
|
633
|
+
}), this.moveElOnInit(), this.items = S("a:not([disabled]), button:not([disabled])", this.contentElement), this.navigationKeys = me({
|
|
617
634
|
containerElement: this.contentElement,
|
|
618
635
|
targetChildren: this.items,
|
|
619
636
|
direction: "up-down"
|
|
620
|
-
}),
|
|
637
|
+
}), O.register("dropdown", this.contentElement, this), O.initialized(this.contentElement);
|
|
621
638
|
}
|
|
622
639
|
/**
|
|
623
640
|
* Initializes a single dropdown instance
|
|
@@ -626,20 +643,20 @@
|
|
|
626
643
|
* @returns A new Dropdown instance
|
|
627
644
|
*/
|
|
628
645
|
static init(e, t = {}) {
|
|
629
|
-
new
|
|
646
|
+
new k2(e, t);
|
|
630
647
|
}
|
|
631
648
|
};
|
|
632
|
-
a(
|
|
633
|
-
const t =
|
|
649
|
+
a(k, "autoInit", (e = "[data-fx-dropdown]") => {
|
|
650
|
+
const t = S(e);
|
|
634
651
|
for (const n of t)
|
|
635
|
-
new
|
|
652
|
+
new k(n);
|
|
636
653
|
});
|
|
637
|
-
var
|
|
654
|
+
var K = k;
|
|
638
655
|
|
|
639
656
|
// src/index.js
|
|
640
657
|
function Dropdown(Alpine) {
|
|
641
658
|
Alpine.directive("dropdown", (el, {}, { cleanup }) => {
|
|
642
|
-
const dropdown_ = new
|
|
659
|
+
const dropdown_ = new K(el);
|
|
643
660
|
cleanup(() => {
|
|
644
661
|
dropdown_.cleanup();
|
|
645
662
|
});
|
package/dist/cdn.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
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)});})();
|
|
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,w=o-n-a,g=n,b=()=>te(()=>ie(n,a,r,o),()=>ne(n,a,r,o),n,a,r),y=()=>se(()=>re(i,h,s,e),()=>oe(i,s),i,s,h,e),I=()=>_(s,e,i,h)?i+e/2-s/2:y(),M=()=>ee(r,a,n,o)?n+a/2-r/2:b(),A=()=>i+s<=h?i:y(),k=()=>i+e-s>=0?i+e-s:y(),L=()=>n+r<=o?n:b(),G=()=>n+a-r>=0?n+a-r:b(),v=0,E=0,C=n-r-c,D=n+a+c,x=i-s-c,H=i+e+c,R=g>=r+c,N=w>=r+c,$=f>=s+c,z=p>=s+c;switch(t.startsWith("top")?E=R?C:N?D:Math.max(C,D):t.startsWith("bottom")?E=N?D:R?C:Math.max(D):t.startsWith("left")?v=$?x:z?H:Math.max(x,H):t.startsWith("right")&&(v=z?H:$?x:Math.max(H,x)),t){case"bottom":case"bottom-middle":case"top":case"top-middle":v=I();break;case"left":case"left-middle":case"right":case"right-middle":E=M();break;case"bottom-start":case"top-start":v=A();break;case"bottom-end":case"top-end":v=k();break;case"left-start":case"right-start":E=L();break;case"left-end":case"right-end":E=G();break}return{x:v,y:E}},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,w=window.innerHeight,{popperHeight:g,popperWidth:b,refHeight:y,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:b,refHeight:y,popperHeight:g,windowHeight:w,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),K=(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)},O=({state:t,trigger:e,popper:n})=>{let i=t==="open";K(n,{"data-state":t}),K(e,{"aria-expanded":`${i}`})},F=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),O({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),O({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||(O({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(){O({state:this.defaultState,popper:this.contentElement,trigger:this.triggerElement}),this.defaultState==="open"?this.show():O({state:"close",popper:this.contentElement,trigger:this.triggerElement}),this.triggerElement.addEventListener("click",this.toggleStateOnClick),this.triggerStrategy==="hover"&&this.triggerElement.addEventListener("mouseenter",this.showOnMouseEnter)}},P=(t,e=document.body)=>e.querySelector(t),S=(t,e=document.body)=>Array.from(e.querySelectorAll(t)),ge=t=>typeof t=="string"?P(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"?S(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,w=g=>g<s.length-1?g+1:0;switch(h){case"ArrowDown":o.preventDefault(),p=w(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){let e=()=>{document.querySelector("[data-fx-component]:not([data-component-initialized])")?requestAnimationFrame(e):t()};e()}function ve(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 u=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))}static setup(e){e.setAttribute("data-fx-component","fx")}static initialized(e){e.setAttribute("data-component-initialized","initialized")}},Ee={teleport:!0,teleportMode:"move"},W=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=S("[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&&ue(()=>{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(),u.removeInstance("dropdown",this.contentElement)});let i=typeof e=="string"?P(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=u.getInstance("dropdown",this.contentElement);if(a)return a;u.setup(this.contentElement);let s=`[data-dropdown-trigger][data-dropdown-id=${this.contentElement.id}]`;if(this.triggerElement=P(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({},Ee,n.experimental),this.teleporter=ve(this.contentElement,document.body,this.experimentalOptions.teleportMode),this.OverlayInstance=new F({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(S("[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=S("a:not([disabled]), button:not([disabled])",this.contentElement),this.navigationKeys=fe({containerElement:this.contentElement,targetChildren:this.items,direction:"up-down"}),u.register("dropdown",this.contentElement,this),u.initialized(this.contentElement)}static init(e,n={}){new j(e,n)}};l(W,"autoInit",(t="[data-fx-dropdown]")=>{let e=S(t);for(let n of e)new W(n)});var q=W;function we(t){t.directive("dropdown",(e,{},{cleanup:n})=>{let i=new q(e);n(()=>{i.cleanup()})})}var B=we;document.addEventListener("alpine:init",()=>{B(window.Alpine)});})();
|
package/dist/module.cjs.js
CHANGED
|
@@ -27,9 +27,9 @@ module.exports = __toCommonJS(module_exports);
|
|
|
27
27
|
var B = Object.defineProperty;
|
|
28
28
|
var j = (i, e, t) => e in i ? B(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t;
|
|
29
29
|
var a = (i, e, t) => j(i, typeof e != "symbol" ? e + "" : e, t);
|
|
30
|
-
var
|
|
31
|
-
var
|
|
32
|
-
var p = (i, e, t) =>
|
|
30
|
+
var q = Object.defineProperty;
|
|
31
|
+
var G = (i, e, t) => e in i ? q(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t;
|
|
32
|
+
var p = (i, e, t) => G(i, typeof e != "symbol" ? e + "" : e, t);
|
|
33
33
|
var V = "bottom";
|
|
34
34
|
var X = ({ reference: i, popper: e }) => {
|
|
35
35
|
if (!i || !e)
|
|
@@ -84,33 +84,33 @@ var ie = ({
|
|
|
84
84
|
s,
|
|
85
85
|
m,
|
|
86
86
|
e
|
|
87
|
-
),
|
|
87
|
+
), M = () => Y(s, e, n, m) ? n + e / 2 - s / 2 : b(), A = () => J(o, r, t, l) ? t + r / 2 - o / 2 : w(), C = () => n + s <= m ? n : b(), L = () => n + e - s >= 0 ? n + e - s : b(), x = () => t + o <= l ? t : w(), U = () => t + r - o >= 0 ? t + r - o : w();
|
|
88
88
|
let u = 0, v = 0;
|
|
89
|
-
const
|
|
90
|
-
switch (i.startsWith("top") ? v =
|
|
89
|
+
const T = t - o - c, I = t + r + c, D = n - s - c, H = n + e + c, P = g >= o + c, W = E >= o + c, R = f >= s + c, $ = d >= s + c;
|
|
90
|
+
switch (i.startsWith("top") ? v = P ? T : W ? I : Math.max(T, I) : i.startsWith("bottom") ? v = W ? I : P ? T : Math.max(I) : i.startsWith("left") ? u = R ? D : $ ? H : Math.max(D, H) : i.startsWith("right") && (u = $ ? H : R ? D : Math.max(H, D)), i) {
|
|
91
91
|
case "bottom":
|
|
92
92
|
case "bottom-middle":
|
|
93
93
|
case "top":
|
|
94
94
|
case "top-middle":
|
|
95
|
-
u =
|
|
95
|
+
u = M();
|
|
96
96
|
break;
|
|
97
97
|
case "left":
|
|
98
98
|
case "left-middle":
|
|
99
99
|
case "right":
|
|
100
100
|
case "right-middle":
|
|
101
|
-
v =
|
|
101
|
+
v = A();
|
|
102
102
|
break;
|
|
103
103
|
case "bottom-start":
|
|
104
104
|
case "top-start":
|
|
105
|
-
u =
|
|
105
|
+
u = C();
|
|
106
106
|
break;
|
|
107
107
|
case "bottom-end":
|
|
108
108
|
case "top-end":
|
|
109
|
-
u =
|
|
109
|
+
u = L();
|
|
110
110
|
break;
|
|
111
111
|
case "left-start":
|
|
112
112
|
case "right-start":
|
|
113
|
-
v =
|
|
113
|
+
v = x();
|
|
114
114
|
break;
|
|
115
115
|
case "left-end":
|
|
116
116
|
case "right-end":
|
|
@@ -153,12 +153,12 @@ var se = class {
|
|
|
153
153
|
}), p(this, "initPlacement", () => {
|
|
154
154
|
var d;
|
|
155
155
|
this.validateElements(), this.setInitialStyles();
|
|
156
|
-
const f = window.innerWidth, E = window.innerHeight, { popperHeight: g, popperWidth: w, refHeight: b, refWidth:
|
|
156
|
+
const f = window.innerWidth, E = window.innerHeight, { popperHeight: g, popperWidth: w, refHeight: b, refWidth: M, refLeft: A, refTop: C } = X({ reference: this.reference, popper: this.popper }), { x: L, y: x } = ie(
|
|
157
157
|
{
|
|
158
158
|
placement: this.placement,
|
|
159
|
-
refWidth:
|
|
160
|
-
refTop:
|
|
161
|
-
refLeft:
|
|
159
|
+
refWidth: M,
|
|
160
|
+
refTop: C,
|
|
161
|
+
refLeft: A,
|
|
162
162
|
popperWidth: w,
|
|
163
163
|
refHeight: b,
|
|
164
164
|
popperHeight: g,
|
|
@@ -167,7 +167,7 @@ var se = class {
|
|
|
167
167
|
offsetDistance: this.offsetDistance
|
|
168
168
|
}
|
|
169
169
|
);
|
|
170
|
-
this.setPopperStyleProperty(
|
|
170
|
+
this.setPopperStyleProperty(L, x), (d = this.onUpdate) == null || d.call(this, { x: L, y: x, placement: this.placement });
|
|
171
171
|
}), p(this, "removeWindowEvents", () => {
|
|
172
172
|
this.isWindowEventsRegistered && (!this.disableOnResize && window.removeEventListener("resize", this.updatePosition), !this.disableOnScroll && window.removeEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = false);
|
|
173
173
|
}), p(this, "attachWindowEvent", () => {
|
|
@@ -369,12 +369,12 @@ var ce = class {
|
|
|
369
369
|
}), this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
|
|
370
370
|
}
|
|
371
371
|
};
|
|
372
|
-
var
|
|
373
|
-
var
|
|
374
|
-
var pe = (i) => typeof i == "string" ?
|
|
372
|
+
var F = (i, e = document.body) => e.querySelector(i);
|
|
373
|
+
var S = (i, e = document.body) => Array.from(e.querySelectorAll(i));
|
|
374
|
+
var pe = (i) => typeof i == "string" ? F(i) : i;
|
|
375
375
|
var me = ({ containerElement: i, targetChildren: e = "a:not([disabled]), button:not([disabled])", direction: t }) => {
|
|
376
376
|
let n = false;
|
|
377
|
-
const r = pe(i) || document.body, s = typeof e == "string" ?
|
|
377
|
+
const r = pe(i) || document.body, s = typeof e == "string" ? S(e, r) : e, o = (l) => {
|
|
378
378
|
if (l.preventDefault(), r.focus(), s.length === 0)
|
|
379
379
|
return;
|
|
380
380
|
const m = l.key, c = document.activeElement;
|
|
@@ -415,11 +415,19 @@ var me = ({ containerElement: i, targetChildren: e = "a:not([disabled]), button:
|
|
|
415
415
|
}
|
|
416
416
|
};
|
|
417
417
|
};
|
|
418
|
-
var
|
|
418
|
+
var z = (i, e, t) => {
|
|
419
419
|
const n = new CustomEvent(e, { detail: t });
|
|
420
420
|
i.dispatchEvent(n);
|
|
421
421
|
};
|
|
422
|
-
function ge(i
|
|
422
|
+
function ge(i) {
|
|
423
|
+
const e = () => {
|
|
424
|
+
document.querySelector(
|
|
425
|
+
"[data-fx-component]:not([data-component-initialized])"
|
|
426
|
+
) ? requestAnimationFrame(e) : i();
|
|
427
|
+
};
|
|
428
|
+
e();
|
|
429
|
+
}
|
|
430
|
+
function fe(i, e, t = "move") {
|
|
423
431
|
if (!(i instanceof HTMLElement))
|
|
424
432
|
throw new Error("Source element must be an HTMLElement");
|
|
425
433
|
if (!(e instanceof HTMLElement))
|
|
@@ -450,7 +458,7 @@ function ge(i, e, t = "move") {
|
|
|
450
458
|
}
|
|
451
459
|
});
|
|
452
460
|
}
|
|
453
|
-
var
|
|
461
|
+
var O = class {
|
|
454
462
|
static initGlobalRegistry() {
|
|
455
463
|
window.$flexillaInstances || (window.$flexillaInstances = {});
|
|
456
464
|
}
|
|
@@ -468,12 +476,18 @@ var T = class {
|
|
|
468
476
|
(n) => n.element !== t
|
|
469
477
|
));
|
|
470
478
|
}
|
|
479
|
+
static setup(e) {
|
|
480
|
+
e.setAttribute("data-fx-component", "fx");
|
|
481
|
+
}
|
|
482
|
+
static initialized(e) {
|
|
483
|
+
e.setAttribute("data-component-initialized", "initialized");
|
|
484
|
+
}
|
|
471
485
|
};
|
|
472
|
-
var
|
|
486
|
+
var ue = {
|
|
473
487
|
teleport: true,
|
|
474
488
|
teleportMode: "move"
|
|
475
489
|
};
|
|
476
|
-
var
|
|
490
|
+
var k = class k2 {
|
|
477
491
|
/**
|
|
478
492
|
* Creates a new Dropdown instance
|
|
479
493
|
* @param dropdown - The dropdown content element or selector
|
|
@@ -501,7 +515,7 @@ var S = class S2 {
|
|
|
501
515
|
t2 === "add" ? (e2.setAttribute("data-current-subtrigger", ""), e2.setAttribute("data-focus", "active")) : (e2.removeAttribute("data-current-subtrigger"), e2.removeAttribute("data-focus"));
|
|
502
516
|
});
|
|
503
517
|
a(this, "updateObserverFor", (e2) => {
|
|
504
|
-
const t2 =
|
|
518
|
+
const t2 = S("[data-dropdown-trigger]", this.contentElement);
|
|
505
519
|
for (const n2 of t2)
|
|
506
520
|
e2.observe(n2, {
|
|
507
521
|
attributes: true,
|
|
@@ -528,7 +542,9 @@ var S = class S2 {
|
|
|
528
542
|
(n2 = (t2 = this.options).onToggle) == null || n2.call(t2, { isHidden: e2 });
|
|
529
543
|
});
|
|
530
544
|
a(this, "moveElOnInit", () => {
|
|
531
|
-
this.experimentalOptions.teleport && (
|
|
545
|
+
this.experimentalOptions.teleport && ge(() => {
|
|
546
|
+
this.experimentalOptions.teleportMode === "detachable" ? this.teleporter.remove() : this.teleporter.append();
|
|
547
|
+
});
|
|
532
548
|
});
|
|
533
549
|
a(this, "moveEl", () => {
|
|
534
550
|
this.experimentalOptions.teleport && this.experimentalOptions.teleportMode === "detachable" && this.teleporter.remove();
|
|
@@ -573,13 +589,13 @@ var S = class S2 {
|
|
|
573
589
|
});
|
|
574
590
|
a(this, "onShow", () => {
|
|
575
591
|
var e2, t2;
|
|
576
|
-
|
|
592
|
+
z(this.contentElement, "dropdown-show", {
|
|
577
593
|
isHidden: false
|
|
578
594
|
}), (t2 = (e2 = this.options).onShow) == null || t2.call(e2), this.observeEl(), this.observeSubtriggers();
|
|
579
595
|
});
|
|
580
596
|
a(this, "onHide", () => {
|
|
581
597
|
var e2, t2;
|
|
582
|
-
|
|
598
|
+
z(this.contentElement, "dropdown-hide", {
|
|
583
599
|
isHidden: true
|
|
584
600
|
}), (t2 = (e2 = this.options).onHide) == null || t2.call(e2), this.moveEl(), this.triggerElement.hasAttribute("data-current-subtrigger") && this.updateSubtriggerAttr(this.triggerElement, "remove"), this.disconnectObserver();
|
|
585
601
|
});
|
|
@@ -598,9 +614,9 @@ var S = class S2 {
|
|
|
598
614
|
this.keyObserver && this.keyObserver.disconnect(), this.subtriggerObserver && this.subtriggerObserver.disconnect();
|
|
599
615
|
});
|
|
600
616
|
a(this, "cleanup", () => {
|
|
601
|
-
this.disconnectObserver(), this.OverlayInstance.cleanup(),
|
|
617
|
+
this.disconnectObserver(), this.OverlayInstance.cleanup(), O.removeInstance("dropdown", this.contentElement);
|
|
602
618
|
});
|
|
603
|
-
const n = typeof e == "string" ?
|
|
619
|
+
const n = typeof e == "string" ? F(e) : e;
|
|
604
620
|
if (!(n instanceof HTMLElement))
|
|
605
621
|
throw new Error(
|
|
606
622
|
"Invalid dropdown content element: Must provide either a valid HTMLElement or a selector string that resolves to an existing HTMLElement"
|
|
@@ -608,13 +624,14 @@ var S = class S2 {
|
|
|
608
624
|
if (!n.id)
|
|
609
625
|
throw new Error("Dropdown content element must have an 'id' attribute for trigger association");
|
|
610
626
|
this.contentElement = n;
|
|
611
|
-
const r =
|
|
627
|
+
const r = O.getInstance("dropdown", this.contentElement);
|
|
612
628
|
if (r)
|
|
613
629
|
return r;
|
|
630
|
+
O.setup(this.contentElement);
|
|
614
631
|
const s = `[data-dropdown-trigger][data-dropdown-id=${this.contentElement.id}]`;
|
|
615
|
-
if (this.triggerElement =
|
|
632
|
+
if (this.triggerElement = F(s), !(this.triggerElement instanceof HTMLElement))
|
|
616
633
|
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}"`);
|
|
617
|
-
this.options = t, 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 || false, this.preventFromCloseInside = this.contentElement.hasAttribute("data-prevent-close-inside") || this.options.preventCloseFromInside || false, this.defaultState = this.contentElement.dataset.defaultState || this.options.defaultState || "close", this.experimentalOptions = Object.assign({},
|
|
634
|
+
this.options = t, 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 || false, this.preventFromCloseInside = this.contentElement.hasAttribute("data-prevent-close-inside") || this.options.preventCloseFromInside || false, this.defaultState = this.contentElement.dataset.defaultState || this.options.defaultState || "close", this.experimentalOptions = Object.assign({}, ue, t.experimental), this.teleporter = fe(this.contentElement, document.body, this.experimentalOptions.teleportMode), this.OverlayInstance = new ce({
|
|
618
635
|
trigger: this.triggerElement,
|
|
619
636
|
content: this.contentElement,
|
|
620
637
|
options: {
|
|
@@ -626,7 +643,7 @@ var S = class S2 {
|
|
|
626
643
|
defaultState: this.defaultState,
|
|
627
644
|
beforeShow: this.beforeShow,
|
|
628
645
|
beforeHide: () => {
|
|
629
|
-
if (
|
|
646
|
+
if (S("[data-dropdown-trigger][aria-expanded=true]", this.contentElement).length >= 1)
|
|
630
647
|
return { cancelAction: true };
|
|
631
648
|
this.beforeHide();
|
|
632
649
|
},
|
|
@@ -637,11 +654,11 @@ var S = class S2 {
|
|
|
637
654
|
},
|
|
638
655
|
popper: this.options.popper
|
|
639
656
|
}
|
|
640
|
-
}), this.moveElOnInit(), this.items =
|
|
657
|
+
}), this.moveElOnInit(), this.items = S("a:not([disabled]), button:not([disabled])", this.contentElement), this.navigationKeys = me({
|
|
641
658
|
containerElement: this.contentElement,
|
|
642
659
|
targetChildren: this.items,
|
|
643
660
|
direction: "up-down"
|
|
644
|
-
}),
|
|
661
|
+
}), O.register("dropdown", this.contentElement, this), O.initialized(this.contentElement);
|
|
645
662
|
}
|
|
646
663
|
/**
|
|
647
664
|
* Initializes a single dropdown instance
|
|
@@ -650,20 +667,20 @@ var S = class S2 {
|
|
|
650
667
|
* @returns A new Dropdown instance
|
|
651
668
|
*/
|
|
652
669
|
static init(e, t = {}) {
|
|
653
|
-
new
|
|
670
|
+
new k2(e, t);
|
|
654
671
|
}
|
|
655
672
|
};
|
|
656
|
-
a(
|
|
657
|
-
const t =
|
|
673
|
+
a(k, "autoInit", (e = "[data-fx-dropdown]") => {
|
|
674
|
+
const t = S(e);
|
|
658
675
|
for (const n of t)
|
|
659
|
-
new
|
|
676
|
+
new k(n);
|
|
660
677
|
});
|
|
661
|
-
var
|
|
678
|
+
var K = k;
|
|
662
679
|
|
|
663
680
|
// src/index.js
|
|
664
681
|
function Dropdown(Alpine) {
|
|
665
682
|
Alpine.directive("dropdown", (el, {}, { cleanup }) => {
|
|
666
|
-
const dropdown_ = new
|
|
683
|
+
const dropdown_ = new K(el);
|
|
667
684
|
cleanup(() => {
|
|
668
685
|
dropdown_.cleanup();
|
|
669
686
|
});
|
package/dist/module.esm.js
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
var B = Object.defineProperty;
|
|
3
3
|
var j = (i, e, t) => e in i ? B(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t;
|
|
4
4
|
var a = (i, e, t) => j(i, typeof e != "symbol" ? e + "" : e, t);
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var p = (i, e, t) =>
|
|
5
|
+
var q = Object.defineProperty;
|
|
6
|
+
var G = (i, e, t) => e in i ? q(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t;
|
|
7
|
+
var p = (i, e, t) => G(i, typeof e != "symbol" ? e + "" : e, t);
|
|
8
8
|
var V = "bottom";
|
|
9
9
|
var X = ({ reference: i, popper: e }) => {
|
|
10
10
|
if (!i || !e)
|
|
@@ -59,33 +59,33 @@ var ie = ({
|
|
|
59
59
|
s,
|
|
60
60
|
m,
|
|
61
61
|
e
|
|
62
|
-
),
|
|
62
|
+
), M = () => Y(s, e, n, m) ? n + e / 2 - s / 2 : b(), A = () => J(o, r, t, l) ? t + r / 2 - o / 2 : w(), C = () => n + s <= m ? n : b(), L = () => n + e - s >= 0 ? n + e - s : b(), x = () => t + o <= l ? t : w(), U = () => t + r - o >= 0 ? t + r - o : w();
|
|
63
63
|
let u = 0, v = 0;
|
|
64
|
-
const
|
|
65
|
-
switch (i.startsWith("top") ? v =
|
|
64
|
+
const T = t - o - c, I = t + r + c, D = n - s - c, H = n + e + c, P = g >= o + c, W = E >= o + c, R = f >= s + c, $ = d >= s + c;
|
|
65
|
+
switch (i.startsWith("top") ? v = P ? T : W ? I : Math.max(T, I) : i.startsWith("bottom") ? v = W ? I : P ? T : Math.max(I) : i.startsWith("left") ? u = R ? D : $ ? H : Math.max(D, H) : i.startsWith("right") && (u = $ ? H : R ? D : Math.max(H, D)), i) {
|
|
66
66
|
case "bottom":
|
|
67
67
|
case "bottom-middle":
|
|
68
68
|
case "top":
|
|
69
69
|
case "top-middle":
|
|
70
|
-
u =
|
|
70
|
+
u = M();
|
|
71
71
|
break;
|
|
72
72
|
case "left":
|
|
73
73
|
case "left-middle":
|
|
74
74
|
case "right":
|
|
75
75
|
case "right-middle":
|
|
76
|
-
v =
|
|
76
|
+
v = A();
|
|
77
77
|
break;
|
|
78
78
|
case "bottom-start":
|
|
79
79
|
case "top-start":
|
|
80
|
-
u =
|
|
80
|
+
u = C();
|
|
81
81
|
break;
|
|
82
82
|
case "bottom-end":
|
|
83
83
|
case "top-end":
|
|
84
|
-
u =
|
|
84
|
+
u = L();
|
|
85
85
|
break;
|
|
86
86
|
case "left-start":
|
|
87
87
|
case "right-start":
|
|
88
|
-
v =
|
|
88
|
+
v = x();
|
|
89
89
|
break;
|
|
90
90
|
case "left-end":
|
|
91
91
|
case "right-end":
|
|
@@ -128,12 +128,12 @@ var se = class {
|
|
|
128
128
|
}), p(this, "initPlacement", () => {
|
|
129
129
|
var d;
|
|
130
130
|
this.validateElements(), this.setInitialStyles();
|
|
131
|
-
const f = window.innerWidth, E = window.innerHeight, { popperHeight: g, popperWidth: w, refHeight: b, refWidth:
|
|
131
|
+
const f = window.innerWidth, E = window.innerHeight, { popperHeight: g, popperWidth: w, refHeight: b, refWidth: M, refLeft: A, refTop: C } = X({ reference: this.reference, popper: this.popper }), { x: L, y: x } = ie(
|
|
132
132
|
{
|
|
133
133
|
placement: this.placement,
|
|
134
|
-
refWidth:
|
|
135
|
-
refTop:
|
|
136
|
-
refLeft:
|
|
134
|
+
refWidth: M,
|
|
135
|
+
refTop: C,
|
|
136
|
+
refLeft: A,
|
|
137
137
|
popperWidth: w,
|
|
138
138
|
refHeight: b,
|
|
139
139
|
popperHeight: g,
|
|
@@ -142,7 +142,7 @@ var se = class {
|
|
|
142
142
|
offsetDistance: this.offsetDistance
|
|
143
143
|
}
|
|
144
144
|
);
|
|
145
|
-
this.setPopperStyleProperty(
|
|
145
|
+
this.setPopperStyleProperty(L, x), (d = this.onUpdate) == null || d.call(this, { x: L, y: x, placement: this.placement });
|
|
146
146
|
}), p(this, "removeWindowEvents", () => {
|
|
147
147
|
this.isWindowEventsRegistered && (!this.disableOnResize && window.removeEventListener("resize", this.updatePosition), !this.disableOnScroll && window.removeEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = false);
|
|
148
148
|
}), p(this, "attachWindowEvent", () => {
|
|
@@ -344,12 +344,12 @@ var ce = class {
|
|
|
344
344
|
}), this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
|
|
345
345
|
}
|
|
346
346
|
};
|
|
347
|
-
var
|
|
348
|
-
var
|
|
349
|
-
var pe = (i) => typeof i == "string" ?
|
|
347
|
+
var F = (i, e = document.body) => e.querySelector(i);
|
|
348
|
+
var S = (i, e = document.body) => Array.from(e.querySelectorAll(i));
|
|
349
|
+
var pe = (i) => typeof i == "string" ? F(i) : i;
|
|
350
350
|
var me = ({ containerElement: i, targetChildren: e = "a:not([disabled]), button:not([disabled])", direction: t }) => {
|
|
351
351
|
let n = false;
|
|
352
|
-
const r = pe(i) || document.body, s = typeof e == "string" ?
|
|
352
|
+
const r = pe(i) || document.body, s = typeof e == "string" ? S(e, r) : e, o = (l) => {
|
|
353
353
|
if (l.preventDefault(), r.focus(), s.length === 0)
|
|
354
354
|
return;
|
|
355
355
|
const m = l.key, c = document.activeElement;
|
|
@@ -390,11 +390,19 @@ var me = ({ containerElement: i, targetChildren: e = "a:not([disabled]), button:
|
|
|
390
390
|
}
|
|
391
391
|
};
|
|
392
392
|
};
|
|
393
|
-
var
|
|
393
|
+
var z = (i, e, t) => {
|
|
394
394
|
const n = new CustomEvent(e, { detail: t });
|
|
395
395
|
i.dispatchEvent(n);
|
|
396
396
|
};
|
|
397
|
-
function ge(i
|
|
397
|
+
function ge(i) {
|
|
398
|
+
const e = () => {
|
|
399
|
+
document.querySelector(
|
|
400
|
+
"[data-fx-component]:not([data-component-initialized])"
|
|
401
|
+
) ? requestAnimationFrame(e) : i();
|
|
402
|
+
};
|
|
403
|
+
e();
|
|
404
|
+
}
|
|
405
|
+
function fe(i, e, t = "move") {
|
|
398
406
|
if (!(i instanceof HTMLElement))
|
|
399
407
|
throw new Error("Source element must be an HTMLElement");
|
|
400
408
|
if (!(e instanceof HTMLElement))
|
|
@@ -425,7 +433,7 @@ function ge(i, e, t = "move") {
|
|
|
425
433
|
}
|
|
426
434
|
});
|
|
427
435
|
}
|
|
428
|
-
var
|
|
436
|
+
var O = class {
|
|
429
437
|
static initGlobalRegistry() {
|
|
430
438
|
window.$flexillaInstances || (window.$flexillaInstances = {});
|
|
431
439
|
}
|
|
@@ -443,12 +451,18 @@ var T = class {
|
|
|
443
451
|
(n) => n.element !== t
|
|
444
452
|
));
|
|
445
453
|
}
|
|
454
|
+
static setup(e) {
|
|
455
|
+
e.setAttribute("data-fx-component", "fx");
|
|
456
|
+
}
|
|
457
|
+
static initialized(e) {
|
|
458
|
+
e.setAttribute("data-component-initialized", "initialized");
|
|
459
|
+
}
|
|
446
460
|
};
|
|
447
|
-
var
|
|
461
|
+
var ue = {
|
|
448
462
|
teleport: true,
|
|
449
463
|
teleportMode: "move"
|
|
450
464
|
};
|
|
451
|
-
var
|
|
465
|
+
var k = class k2 {
|
|
452
466
|
/**
|
|
453
467
|
* Creates a new Dropdown instance
|
|
454
468
|
* @param dropdown - The dropdown content element or selector
|
|
@@ -476,7 +490,7 @@ var S = class S2 {
|
|
|
476
490
|
t2 === "add" ? (e2.setAttribute("data-current-subtrigger", ""), e2.setAttribute("data-focus", "active")) : (e2.removeAttribute("data-current-subtrigger"), e2.removeAttribute("data-focus"));
|
|
477
491
|
});
|
|
478
492
|
a(this, "updateObserverFor", (e2) => {
|
|
479
|
-
const t2 =
|
|
493
|
+
const t2 = S("[data-dropdown-trigger]", this.contentElement);
|
|
480
494
|
for (const n2 of t2)
|
|
481
495
|
e2.observe(n2, {
|
|
482
496
|
attributes: true,
|
|
@@ -503,7 +517,9 @@ var S = class S2 {
|
|
|
503
517
|
(n2 = (t2 = this.options).onToggle) == null || n2.call(t2, { isHidden: e2 });
|
|
504
518
|
});
|
|
505
519
|
a(this, "moveElOnInit", () => {
|
|
506
|
-
this.experimentalOptions.teleport && (
|
|
520
|
+
this.experimentalOptions.teleport && ge(() => {
|
|
521
|
+
this.experimentalOptions.teleportMode === "detachable" ? this.teleporter.remove() : this.teleporter.append();
|
|
522
|
+
});
|
|
507
523
|
});
|
|
508
524
|
a(this, "moveEl", () => {
|
|
509
525
|
this.experimentalOptions.teleport && this.experimentalOptions.teleportMode === "detachable" && this.teleporter.remove();
|
|
@@ -548,13 +564,13 @@ var S = class S2 {
|
|
|
548
564
|
});
|
|
549
565
|
a(this, "onShow", () => {
|
|
550
566
|
var e2, t2;
|
|
551
|
-
|
|
567
|
+
z(this.contentElement, "dropdown-show", {
|
|
552
568
|
isHidden: false
|
|
553
569
|
}), (t2 = (e2 = this.options).onShow) == null || t2.call(e2), this.observeEl(), this.observeSubtriggers();
|
|
554
570
|
});
|
|
555
571
|
a(this, "onHide", () => {
|
|
556
572
|
var e2, t2;
|
|
557
|
-
|
|
573
|
+
z(this.contentElement, "dropdown-hide", {
|
|
558
574
|
isHidden: true
|
|
559
575
|
}), (t2 = (e2 = this.options).onHide) == null || t2.call(e2), this.moveEl(), this.triggerElement.hasAttribute("data-current-subtrigger") && this.updateSubtriggerAttr(this.triggerElement, "remove"), this.disconnectObserver();
|
|
560
576
|
});
|
|
@@ -573,9 +589,9 @@ var S = class S2 {
|
|
|
573
589
|
this.keyObserver && this.keyObserver.disconnect(), this.subtriggerObserver && this.subtriggerObserver.disconnect();
|
|
574
590
|
});
|
|
575
591
|
a(this, "cleanup", () => {
|
|
576
|
-
this.disconnectObserver(), this.OverlayInstance.cleanup(),
|
|
592
|
+
this.disconnectObserver(), this.OverlayInstance.cleanup(), O.removeInstance("dropdown", this.contentElement);
|
|
577
593
|
});
|
|
578
|
-
const n = typeof e == "string" ?
|
|
594
|
+
const n = typeof e == "string" ? F(e) : e;
|
|
579
595
|
if (!(n instanceof HTMLElement))
|
|
580
596
|
throw new Error(
|
|
581
597
|
"Invalid dropdown content element: Must provide either a valid HTMLElement or a selector string that resolves to an existing HTMLElement"
|
|
@@ -583,13 +599,14 @@ var S = class S2 {
|
|
|
583
599
|
if (!n.id)
|
|
584
600
|
throw new Error("Dropdown content element must have an 'id' attribute for trigger association");
|
|
585
601
|
this.contentElement = n;
|
|
586
|
-
const r =
|
|
602
|
+
const r = O.getInstance("dropdown", this.contentElement);
|
|
587
603
|
if (r)
|
|
588
604
|
return r;
|
|
605
|
+
O.setup(this.contentElement);
|
|
589
606
|
const s = `[data-dropdown-trigger][data-dropdown-id=${this.contentElement.id}]`;
|
|
590
|
-
if (this.triggerElement =
|
|
607
|
+
if (this.triggerElement = F(s), !(this.triggerElement instanceof HTMLElement))
|
|
591
608
|
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}"`);
|
|
592
|
-
this.options = t, 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 || false, this.preventFromCloseInside = this.contentElement.hasAttribute("data-prevent-close-inside") || this.options.preventCloseFromInside || false, this.defaultState = this.contentElement.dataset.defaultState || this.options.defaultState || "close", this.experimentalOptions = Object.assign({},
|
|
609
|
+
this.options = t, 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 || false, this.preventFromCloseInside = this.contentElement.hasAttribute("data-prevent-close-inside") || this.options.preventCloseFromInside || false, this.defaultState = this.contentElement.dataset.defaultState || this.options.defaultState || "close", this.experimentalOptions = Object.assign({}, ue, t.experimental), this.teleporter = fe(this.contentElement, document.body, this.experimentalOptions.teleportMode), this.OverlayInstance = new ce({
|
|
593
610
|
trigger: this.triggerElement,
|
|
594
611
|
content: this.contentElement,
|
|
595
612
|
options: {
|
|
@@ -601,7 +618,7 @@ var S = class S2 {
|
|
|
601
618
|
defaultState: this.defaultState,
|
|
602
619
|
beforeShow: this.beforeShow,
|
|
603
620
|
beforeHide: () => {
|
|
604
|
-
if (
|
|
621
|
+
if (S("[data-dropdown-trigger][aria-expanded=true]", this.contentElement).length >= 1)
|
|
605
622
|
return { cancelAction: true };
|
|
606
623
|
this.beforeHide();
|
|
607
624
|
},
|
|
@@ -612,11 +629,11 @@ var S = class S2 {
|
|
|
612
629
|
},
|
|
613
630
|
popper: this.options.popper
|
|
614
631
|
}
|
|
615
|
-
}), this.moveElOnInit(), this.items =
|
|
632
|
+
}), this.moveElOnInit(), this.items = S("a:not([disabled]), button:not([disabled])", this.contentElement), this.navigationKeys = me({
|
|
616
633
|
containerElement: this.contentElement,
|
|
617
634
|
targetChildren: this.items,
|
|
618
635
|
direction: "up-down"
|
|
619
|
-
}),
|
|
636
|
+
}), O.register("dropdown", this.contentElement, this), O.initialized(this.contentElement);
|
|
620
637
|
}
|
|
621
638
|
/**
|
|
622
639
|
* Initializes a single dropdown instance
|
|
@@ -625,20 +642,20 @@ var S = class S2 {
|
|
|
625
642
|
* @returns A new Dropdown instance
|
|
626
643
|
*/
|
|
627
644
|
static init(e, t = {}) {
|
|
628
|
-
new
|
|
645
|
+
new k2(e, t);
|
|
629
646
|
}
|
|
630
647
|
};
|
|
631
|
-
a(
|
|
632
|
-
const t =
|
|
648
|
+
a(k, "autoInit", (e = "[data-fx-dropdown]") => {
|
|
649
|
+
const t = S(e);
|
|
633
650
|
for (const n of t)
|
|
634
|
-
new
|
|
651
|
+
new k(n);
|
|
635
652
|
});
|
|
636
|
-
var
|
|
653
|
+
var K = k;
|
|
637
654
|
|
|
638
655
|
// src/index.js
|
|
639
656
|
function Dropdown(Alpine) {
|
|
640
657
|
Alpine.directive("dropdown", (el, {}, { cleanup }) => {
|
|
641
|
-
const dropdown_ = new
|
|
658
|
+
const dropdown_ = new K(el);
|
|
642
659
|
cleanup(() => {
|
|
643
660
|
dropdown_.cleanup();
|
|
644
661
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flexilla/alpine-dropdown",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "AlpineJS plugin for adding Dropdown functionality to your AlpineJS components",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": false,
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"Flexilla"
|
|
61
61
|
],
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"@flexilla/dropdown": "^2.2.
|
|
63
|
+
"@flexilla/dropdown": "^2.2.6"
|
|
64
64
|
},
|
|
65
|
-
"gitHead": "
|
|
65
|
+
"gitHead": "9ac916234e8bb129724224819f3b59420b34081f"
|
|
66
66
|
}
|