@flexilla/alpine-dropdown 0.0.2 → 0.1.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/README.md CHANGED
@@ -1,9 +1,21 @@
1
- <h1 align="center">Alpine Offcanvas</h1>
1
+ <h1 align="center">Alpine Dropdown</h1>
2
2
 
3
3
  <p align="center">
4
- Simple Interactif Offcanvas Directive for <a href="https://alpinejs.dev">Alpine.js</a>
4
+ Simple Interactive Dropdown Component for <a href="https://alpinejs.dev">Alpine.js</a>
5
5
  </p>
6
6
 
7
+ <p align="center">
8
+ Part of the <a href="https://flexilla-docs.vercel.app">Flexilla</a> library - A collection of UI components for Alpine.js
9
+ </p>
10
+
11
+ ## Overview
12
+
13
+ The Alpine Dropdown component provides a lightweight and flexible dropdown menu implementation for Alpine.js applications. It features:
14
+
15
+ - 🎯 Precise positioning
16
+ - 🎨 Customizable styling with Tailwind CSS support
17
+ - ⌨️ Keyboard navigation support
18
+ - 🔄 Smooth transitions and animations
7
19
 
8
20
  ## Installation
9
21
 
@@ -12,32 +24,48 @@
12
24
  Include the following `<script>` tag in the `<head>` of your document, just before Alpine.
13
25
 
14
26
  ```html
15
-
27
+ <script src="https://cdn.jsdelivr.net/npm/@flexilla/alpine-dropdown@latest/dist/cdn.min.js" defer></script>
16
28
  ```
17
29
 
18
30
  ### NPM
19
31
 
20
32
  ```shell
21
- npm install @flexilla/alpine-offcanvas
33
+ npm install @flexilla/alpine-dropdown
22
34
  ```
23
35
 
24
- Add the `x-offcanvas` directive to your project by importing the package **before** starting Alpine.
36
+ Add the `x-dropdown` directive to your project by importing the package **before** starting Alpine.
25
37
 
26
38
  ```js
27
39
  import Alpine from 'alpinejs';
28
- import PluginOffcanvas from '@flexilla/alpine-offcanvas';
40
+ import PluginDropdown from '@flexilla/alpine-dropdown';
29
41
 
30
- Alpine.plugin(PluginOffcanvas);
42
+ Alpine.plugin(PluginDropdown);
31
43
 
32
44
  Alpine.start();
33
45
  ```
34
46
 
35
- ## Usage
47
+ ## Basic Usage
36
48
 
37
49
  ```html
38
-
50
+ <button data-dropdown-trigger data-dropdown-id="dropdown-1"
51
+ class="border border-zinc-800 hover:bg-zinc-950 bg-zinc-900 text-white px-4 py-2 rounded-lg text-sm">
52
+ Open Dropdown
53
+ </button>
54
+ <div x-dropdown x-data role="list" id="dropdown-1" data-fx-popper
55
+ class="fixed top-[--fx-popper-placement-y] left-[--fx-popper-placement-x] z-20 w-56 border border-zinc-800 bg-zinc-900/80 text-zinc-50 backdrop-filter backdrop-blur-xl rounded-lg flex flex-col overflow-hidden opacity-0 invisible fx-open:opacity-100 fx-open:visible ease-linear transition-transform translate-y-4 fx-open:translate-y-0">
56
+ <a href="#" class="focus:outline focus:bg-zinc-900/90 outline-none focus:outline-blue-500 ease-linear flex hover-bg-zinc-800/80 p-2 rounded-md">
57
+ Item 1
58
+ </a>
59
+ <a href="/" class="focus:outline focus:bg-zinc-900/90 outline-none focus:outline-blue-500 ease-linear flex hover-bg-zinc-800/80 p-2 rounded-md">Item 2</a>
60
+ <a href="#" class="focus:outline focus:bg-zinc-900/90 outline-none focus:outline-blue-500 ease-linear flex hover-bg-zinc-800/80 p-2 rounded-md">Item 3</a>
61
+ <a href="#" class="focus:outline focus:bg-zinc-900/90 outline-none focus:outline-blue-500 ease-linear flex hover-bg-zinc-800/80 p-2 rounded-md">Item 4</a>
62
+ </div>
39
63
  ```
40
64
 
65
+ ## Documentation
66
+
67
+ For detailed documentation, customization options, and advanced usage examples, visit the [Flexilla Dropdown documentation](https://flexilla-docs.vercel.app/docs/components/dropdown).
68
+
41
69
  ## License
42
70
 
43
71
  Copyright (c) 2025 Johnkat MJ and contributors.
package/dist/cdn.js CHANGED
@@ -5,9 +5,9 @@
5
5
  var a = (s, e, t) => q(s, typeof e != "symbol" ? e + "" : e, t);
6
6
  var B = Object.defineProperty;
7
7
  var N = (s, e, t) => e in s ? B(s, e, { enumerable: true, configurable: true, writable: true, value: t }) : s[e] = t;
8
- var l = (s, e, t) => N(s, typeof e != "symbol" ? e + "" : e, t);
9
- var J = "bottom";
10
- var Q = ({ reference: s, popper: e }) => {
8
+ var d = (s, e, t) => N(s, typeof e != "symbol" ? e + "" : e, t);
9
+ var V = "bottom";
10
+ var X = ({ reference: s, popper: e }) => {
11
11
  if (!s || !e)
12
12
  throw new Error("Reference or popper element is null or undefined");
13
13
  const t = /* @__PURE__ */ new WeakMap(), n = (r) => (t.has(r) || t.set(r, r.getBoundingClientRect()), t.get(r)), o = n(e), i = n(s);
@@ -21,24 +21,21 @@
21
21
  refRight: i.right
22
22
  };
23
23
  };
24
- var V = Object.defineProperty;
25
- var X = (s, e, t) => e in s ? V(s, e, { enumerable: true, configurable: true, writable: true, value: t }) : s[e] = t;
26
- var p = (s, e, t) => X(s, typeof e != "symbol" ? e + "" : e, t);
27
24
  var Y = (s, e, t, n) => {
28
25
  const o = t, i = n - (t + e);
29
26
  return o >= (s - e) / 2 && i >= (s - e) / 2;
30
27
  };
31
- var Z = (s, e, t, n) => (s - e) / 2 <= t && t + s / 2 + e / 2 <= n;
32
- var _ = (s, e, t, n, o) => t > o - n ? e() ? window.innerHeight - o : t - o : s() ? 0 : t + n;
33
- var ee = (s, e, t, n) => s <= n && t - s <= e;
34
- var te = (s, e, t, n) => t <= n && -s <= e;
35
- var ne = (s, e, t, n, o, i) => {
36
- const r = o - t - i, h = t - n, g = t + i - n + (o - t - i), d = r >= 0 ? o - n : h >= 0 ? t - n : t;
37
- return s() ? 0 : e() ? g : d;
28
+ var J = (s, e, t, n) => (s - e) / 2 <= t && t + s / 2 + e / 2 <= n;
29
+ var Q = (s, e, t, n, o) => t > o - n ? e() ? window.innerHeight - o : t - o : s() ? 0 : t + n;
30
+ var Z = (s, e, t, n) => s <= n && t - s <= e;
31
+ var _ = (s, e, t, n) => t <= n && -s <= e;
32
+ var ee = (s, e, t, n, o, i) => {
33
+ const r = o - t - i, h = t - n, g = t + i - n + (o - t - i), p = r >= 0 ? o - n : h >= 0 ? t - n : t;
34
+ return s() ? 0 : e() ? g : p;
38
35
  };
39
- var se = (s, e, t, n) => s <= t && e - s - n >= s;
40
- var ie = (s, e) => s >= e;
41
- var oe = ({
36
+ var te = (s, e, t, n) => s <= t && e - s - n >= s;
37
+ var ne = (s, e) => s >= e;
38
+ var se = ({
42
39
  placement: s,
43
40
  refWidth: e,
44
41
  refTop: t,
@@ -48,25 +45,25 @@
48
45
  popperHeight: r,
49
46
  windowHeight: h,
50
47
  windowWidth: g,
51
- offsetDistance: d
48
+ offsetDistance: p
52
49
  }) => {
53
- const c = g - n - e, f = n, v = h - t - o, m = t, w = () => _(
54
- () => te(t, o, r, h),
55
- () => ee(t, o, r, h),
50
+ const c = g - n - e, f = n, v = h - t - o, m = t, w = () => Q(
51
+ () => _(t, o, r, h),
52
+ () => Z(t, o, r, h),
56
53
  t,
57
54
  o,
58
55
  r
59
- ), y = () => ne(
60
- () => se(n, g, i, e),
61
- () => ie(n, i),
56
+ ), y = () => ee(
57
+ () => te(n, g, i, e),
58
+ () => ne(n, i),
62
59
  n,
63
60
  i,
64
61
  g,
65
62
  e
66
- ), H = () => Y(i, e, n, g) ? n + e / 2 - i / 2 : y(), T = () => Z(r, o, t, h) ? t + o / 2 - r / 2 : w(), C = () => n + i <= g ? n : y(), O = () => n + e - i >= 0 ? n + e - i : y(), L = () => t + r <= h ? t : w(), G = () => t + o - r >= 0 ? t + o - r : w();
63
+ ), H = () => Y(i, e, n, g) ? n + e / 2 - i / 2 : y(), T = () => J(r, o, t, h) ? t + o / 2 - r / 2 : w(), C = () => n + i <= g ? n : y(), O = () => n + e - i >= 0 ? n + e - i : y(), L = () => t + r <= h ? t : w(), G = () => t + o - r >= 0 ? t + o - r : w();
67
64
  let u = 0, E = 0;
68
- const M = t - r - d, k = t + o + d, D = n - i - d, I = n + e + d, P = m >= r + d, F = v >= r + d, R = f >= i + d, $ = c >= i + d;
69
- switch (s.startsWith("top") ? E = P ? M : F ? k : Math.max(M, k) : s.startsWith("bottom") ? E = F ? k : P ? M : Math.max(k) : s.startsWith("left") ? u = R ? D : $ ? I : Math.max(D, I) : s.startsWith("right") && (u = $ ? I : R ? D : Math.max(I, D)), s) {
65
+ const M = t - r - p, k = t + o + p, D = n - i - p, I = n + e + p, W = m >= r + p, F = v >= r + p, R = f >= i + p, $ = c >= i + p;
66
+ switch (s.startsWith("top") ? E = W ? M : F ? k : Math.max(M, k) : s.startsWith("bottom") ? E = F ? k : W ? M : Math.max(k) : s.startsWith("left") ? u = R ? D : $ ? I : Math.max(D, I) : s.startsWith("right") && (u = $ ? I : R ? D : Math.max(I, D)), s) {
70
67
  case "bottom":
71
68
  case "bottom-middle":
72
69
  case "top":
@@ -98,7 +95,7 @@
98
95
  }
99
96
  return { x: u, y: E };
100
97
  };
101
- var re = class {
98
+ var ie = class {
102
99
  /**
103
100
  * Flexilla Popper
104
101
  * @param reference
@@ -118,21 +115,21 @@
118
115
  * @param {Function} [options.onUpdate] - Callback function when position updates
119
116
  */
120
117
  constructor(e, t, n = {}) {
121
- p(this, "reference"), p(this, "popper"), p(this, "offsetDistance"), p(this, "placement"), p(this, "disableOnResize"), p(this, "disableOnScroll"), p(this, "onUpdate"), p(this, "isWindowEventsRegistered"), p(this, "validateElements", () => {
118
+ d(this, "reference"), d(this, "popper"), d(this, "offsetDistance"), d(this, "placement"), d(this, "disableOnResize"), d(this, "disableOnScroll"), d(this, "onUpdate"), d(this, "isWindowEventsRegistered"), d(this, "validateElements", () => {
122
119
  if (!(this.reference instanceof HTMLElement))
123
120
  throw new Error("Invalid HTMLElement for Reference Element");
124
121
  if (!(this.popper instanceof HTMLElement))
125
122
  throw new Error("Invalid HTMLElement for Popper");
126
123
  if (typeof this.offsetDistance != "number")
127
124
  throw new Error("OffsetDistance must be a number");
128
- }), p(this, "setPopperStyleProperty", (c, f) => {
125
+ }), d(this, "setPopperStyleProperty", (c, f) => {
129
126
  this.popper.style.setProperty("--fx-popper-placement-x", `${c}px`), this.popper.style.setProperty("--fx-popper-placement-y", `${f}px`);
130
- }), p(this, "setInitialStyles", () => {
127
+ }), d(this, "setInitialStyles", () => {
131
128
  this.popper.style.setProperty("--fx-popper-placement-x", ""), this.popper.style.setProperty("--fx-popper-placement-y", "");
132
- }), p(this, "initPlacement", () => {
129
+ }), d(this, "initPlacement", () => {
133
130
  var c;
134
131
  this.validateElements(), this.setInitialStyles();
135
- const f = window.innerWidth, v = window.innerHeight, { popperHeight: m, popperWidth: w, refHeight: y, refWidth: H, refLeft: T, refTop: C } = Q({ reference: this.reference, popper: this.popper }), { x: O, y: L } = oe(
132
+ const f = window.innerWidth, v = window.innerHeight, { popperHeight: m, popperWidth: w, refHeight: y, refWidth: H, refLeft: T, refTop: C } = X({ reference: this.reference, popper: this.popper }), { x: O, y: L } = se(
136
133
  {
137
134
  placement: this.placement,
138
135
  refWidth: H,
@@ -147,20 +144,20 @@
147
144
  }
148
145
  );
149
146
  this.setPopperStyleProperty(O, L), (c = this.onUpdate) == null || c.call(this, { x: O, y: L, placement: this.placement });
150
- }), p(this, "removeWindowEvents", () => {
147
+ }), d(this, "removeWindowEvents", () => {
151
148
  this.isWindowEventsRegistered && (!this.disableOnResize && window.removeEventListener("resize", this.updatePosition), !this.disableOnScroll && window.removeEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = false);
152
- }), p(this, "attachWindowEvent", () => {
149
+ }), d(this, "attachWindowEvent", () => {
153
150
  this.isWindowEventsRegistered && this.removeWindowEvents(), this.disableOnResize || window.addEventListener("resize", this.updatePosition), this.disableOnScroll || window.addEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = true;
154
- }), p(this, "resetPosition", () => {
151
+ }), d(this, "resetPosition", () => {
155
152
  this.setInitialStyles();
156
- }), p(this, "updatePosition", () => {
153
+ }), d(this, "updatePosition", () => {
157
154
  this.initPlacement(), this.attachWindowEvent();
158
- }), p(this, "cleanupEvents", () => {
155
+ }), d(this, "cleanupEvents", () => {
159
156
  this.setInitialStyles(), this.removeWindowEvents();
160
157
  });
161
158
  const {
162
159
  offsetDistance: o = 10,
163
- placement: i = J,
160
+ placement: i = V,
164
161
  eventEffect: r = {},
165
162
  onUpdate: h
166
163
  } = n;
@@ -170,8 +167,8 @@
170
167
  throw new Error("Invalid HTMLElement for Popper");
171
168
  if (n.offsetDistance && typeof n.offsetDistance != "number")
172
169
  throw new Error("OffsetDistance must be a number");
173
- const { disableOnResize: g, disableOnScroll: d } = r;
174
- this.isWindowEventsRegistered = false, this.reference = e, this.popper = t, this.offsetDistance = o, this.placement = i, this.disableOnResize = g || false, this.disableOnScroll = d || false, this.onUpdate = h;
170
+ const { disableOnResize: g, disableOnScroll: p } = r;
171
+ this.isWindowEventsRegistered = false, this.reference = e, this.popper = t, this.offsetDistance = o, this.placement = i, this.disableOnResize = g || false, this.disableOnScroll = p || false, this.onUpdate = h;
175
172
  }
176
173
  /**
177
174
  * Updates popper configuration and recalculates position
@@ -184,6 +181,9 @@
184
181
  this.placement = e, this.offsetDistance = t || this.offsetDistance, this.initPlacement(), this.attachWindowEvent();
185
182
  }
186
183
  };
184
+ var oe = Object.defineProperty;
185
+ var re = (s, e, t) => e in s ? oe(s, e, { enumerable: true, configurable: true, writable: true, value: t }) : s[e] = t;
186
+ var l = (s, e, t) => re(s, typeof e != "symbol" ? e + "" : e, t);
187
187
  var ae = (s, e = document.body) => e.querySelector(s);
188
188
  var A = (s, e) => {
189
189
  for (const [t, n] of Object.entries(e))
@@ -251,7 +251,7 @@
251
251
  }), l(this, "showOnMouseEnter", () => {
252
252
  this.show(), this.addEventOnMouseEnter();
253
253
  }), l(this, "setShowOptions", ({ placement: i, offsetDistance: r }) => {
254
- var h, g, d, c;
254
+ var h, g, p, c;
255
255
  this.popper.setOptions({
256
256
  placement: i,
257
257
  offsetDistance: r
@@ -259,7 +259,7 @@
259
259
  state: "open",
260
260
  popper: this.contentElement,
261
261
  trigger: this.triggerElement
262
- }), this.onToggleState(false), (c = (d = this.options).onShow) == null || c.call(d);
262
+ }), this.onToggleState(false), (c = (p = this.options).onShow) == null || c.call(p);
263
263
  }), l(this, "setPopperOptions", ({ placement: i, offsetDistance: r }) => {
264
264
  this.popper.setOptions({
265
265
  placement: i,
@@ -278,7 +278,7 @@
278
278
  throw new Error("Trigger element must be a valid HTML element");
279
279
  if (!(this.contentElement instanceof HTMLElement))
280
280
  throw new Error("Content element must be a valid HTML element");
281
- this.options = n, this.triggerStrategy = this.options.triggerStrategy || "click", this.placement = this.options.placement || "bottom", this.offsetDistance = this.options.offsetDistance || 6, this.preventFromCloseOutside = this.options.preventFromCloseOutside || false, this.preventFromCloseInside = this.options.preventCloseFromInside || false, this.defaultState = this.options.defaultState || "close", this.eventEffect = (o = this.options.popper) == null ? void 0 : o.eventEffect, this.popper = new re(
281
+ this.options = n, this.triggerStrategy = this.options.triggerStrategy || "click", this.placement = this.options.placement || "bottom", this.offsetDistance = this.options.offsetDistance || 6, this.preventFromCloseOutside = this.options.preventFromCloseOutside || false, this.preventFromCloseInside = this.options.preventCloseFromInside || false, this.defaultState = this.options.defaultState || "close", this.eventEffect = (o = this.options.popper) == null ? void 0 : o.eventEffect, this.popper = new ie(
282
282
  this.triggerElement,
283
283
  this.contentElement,
284
284
  {
@@ -334,16 +334,16 @@
334
334
  }), this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
335
335
  }
336
336
  };
337
- var W = (s, e = document.body) => e.querySelector(s);
337
+ var P = (s, e = document.body) => e.querySelector(s);
338
338
  var U = (s, e = document.body) => Array.from(e.querySelectorAll(s));
339
- var de = (s) => typeof s == "string" ? W(s) : s;
340
- var pe = ({ containerElement: s, targetChildren: e = "a:not([disabled]), button:not([disabled])", direction: t }) => {
339
+ var pe = (s) => typeof s == "string" ? P(s) : s;
340
+ var de = ({ containerElement: s, targetChildren: e = "a:not([disabled]), button:not([disabled])", direction: t }) => {
341
341
  let n = false;
342
- const o = de(s) || document.body, i = typeof e == "string" ? U(e, o) : e, r = (h) => {
342
+ const o = pe(s) || document.body, i = typeof e == "string" ? U(e, o) : e, r = (h) => {
343
343
  if (h.preventDefault(), o.focus(), i.length === 0)
344
344
  return;
345
- const g = h.key, d = document.activeElement;
346
- let c = i.findIndex((m) => m === d);
345
+ const g = h.key, p = document.activeElement;
346
+ let c = i.findIndex((m) => m === p);
347
347
  if (c === -1) {
348
348
  g === "ArrowUp" || g === "ArrowLeft" ? i[i.length - 1].focus() : i[0].focus();
349
349
  return;
@@ -369,7 +369,7 @@
369
369
  default:
370
370
  return;
371
371
  }
372
- i[c] !== d && i[c].focus();
372
+ i[c] !== p && i[c].focus();
373
373
  };
374
374
  return {
375
375
  make: () => {
@@ -380,7 +380,7 @@
380
380
  }
381
381
  };
382
382
  };
383
- var K = (s, e, t) => {
383
+ var z = (s, e, t) => {
384
384
  const n = new CustomEvent(e, { detail: t });
385
385
  s.dispatchEvent(n);
386
386
  };
@@ -434,13 +434,13 @@
434
434
  });
435
435
  a(this, "onShow", () => {
436
436
  var e2, t2;
437
- K(this.contentElement, "dropdown-show", {
437
+ z(this.contentElement, "dropdown-show", {
438
438
  isHidden: false
439
439
  }), (t2 = (e2 = this.options).onShow) == null || t2.call(e2);
440
440
  });
441
441
  a(this, "onHide", () => {
442
442
  var e2, t2;
443
- K(this.contentElement, "dropdown-hide", {
443
+ z(this.contentElement, "dropdown-hide", {
444
444
  isHidden: true
445
445
  }), (t2 = (e2 = this.options).onHide) == null || t2.call(e2);
446
446
  });
@@ -462,7 +462,7 @@
462
462
  a(this, "cleanup", () => {
463
463
  this.OverlayInstance.cleanup(), x.removeInstance("dropdown", this.contentElement);
464
464
  });
465
- const n = typeof e == "string" ? W(e) : e;
465
+ const n = typeof e == "string" ? P(e) : e;
466
466
  if (!(n instanceof HTMLElement))
467
467
  throw new Error(
468
468
  "Invalid dropdown content element: Must provide either a valid HTMLElement or a selector string that resolves to an existing HTMLElement"
@@ -474,7 +474,7 @@
474
474
  if (o)
475
475
  return o;
476
476
  const i = `[data-dropdown-trigger][data-dropdown-id=${this.contentElement.id}]`;
477
- if (this.triggerElement = W(i), !(this.triggerElement instanceof HTMLElement))
477
+ if (this.triggerElement = P(i), !(this.triggerElement instanceof HTMLElement))
478
478
  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}"`);
479
479
  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") || false, this.preventFromCloseInside = this.options.preventCloseFromInside || this.contentElement.hasAttribute("data-prevent-close-inside") || false, this.defaultState = this.options.defaultState || this.contentElement.dataset.defaultState || "close", this.OverlayInstance = new ce({
480
480
  trigger: this.triggerElement,
@@ -495,7 +495,7 @@
495
495
  },
496
496
  popper: this.options.popper
497
497
  }
498
- }), this.navigationKeys = pe({
498
+ }), this.navigationKeys = de({
499
499
  containerElement: this.contentElement,
500
500
  targetChildren: "a:not([disabled]), button:not([disabled])",
501
501
  direction: "up-down"
@@ -516,12 +516,12 @@
516
516
  for (const n of t)
517
517
  new S(n);
518
518
  });
519
- var z = S;
519
+ var K = S;
520
520
 
521
521
  // src/index.js
522
522
  function Dropdown(Alpine) {
523
523
  Alpine.directive("dropdown", (el, {}, { cleanup }) => {
524
- const dropdown_ = new z(el);
524
+ const dropdown_ = new K(el);
525
525
  cleanup(() => {
526
526
  dropdown_.cleanup();
527
527
  });
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,l=(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}},_=Object.defineProperty,ee=(n,e,t)=>e in n?_(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,m=(n,e,t)=>ee(n,typeof e!="symbol"?e+"":e,t),te=(n,e,t,i)=>{let r=t,s=i-(t+e);return r>=(n-e)/2&&s>=(n-e)/2},ne=(n,e,t,i)=>(n-e)/2<=t&&t+n/2+e/2<=i,ie=(n,e,t,i,r)=>t>r-i?e()?window.innerHeight-r:t-r:n()?0:t+i,se=(n,e,t,i)=>n<=i&&t-n<=e,oe=(n,e,t,i)=>t<=i&&-n<=e,re=(n,e,t,i,r,s)=>{let o=r-t-s,a=t-i,c=t+s-i+(r-t-s),d=o>=0?r-i:a>=0?t-i:t;return n()?0:e()?c:d},ae=(n,e,t,i)=>n<=t&&e-n-i>=n,le=(n,e)=>n>=e,he=({placement:n,refWidth:e,refTop:t,refLeft:i,refHeight:r,popperWidth:s,popperHeight:o,windowHeight:a,windowWidth:c,offsetDistance:d})=>{let p=c-i-e,f=i,E=a-t-r,g=t,w=()=>ie(()=>oe(t,r,o,a),()=>se(t,r,o,a),t,r,o),y=()=>re(()=>ae(i,c,s,e),()=>le(i,s),i,s,c,e),I=()=>te(s,e,i,c)?i+e/2-s/2:y(),T=()=>ne(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-d,L=t+r+d,k=i-s-d,H=i+e+d,R=g>=o+d,$=E>=o+d,A=f>=s+d,K=p>=s+d;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",(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:y,refWidth:I,refLeft:T,refTop:C}=Z({reference:this.reference,popper:this.popper}),{x:O,y:D}=he({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),(p=this.onUpdate)==null||p.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:d}=o;this.isWindowEventsRegistered=!1,this.reference=e,this.popper=t,this.offsetDistance=r,this.placement=s,this.disableOnResize=c||!1,this.disableOnScroll=d||!1,this.onUpdate=a}setOptions({placement:e,offsetDistance:t}){this.placement=e,this.offsetDistance=t||this.offsetDistance,this.initPlacement(),this.attachWindowEvent()}},ce=(n,e=document.body)=>e.querySelector(n),z=(n,e)=>{for(let[t,i]of Object.entries(e))n.setAttribute(t,i)},pe=({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()},de=({element:n,callback:e})=>{pe({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,d,p;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),(p=(d=this.options).onShow)==null||p.call(d)}),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)),de({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,d=document.activeElement,p=s.findIndex(g=>g===d);if(p===-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(),p=E(p);break;case"ArrowRight":break;case"ArrowUp":a.preventDefault(),p=f(p);break;case"ArrowLeft":break;case"Home":a.preventDefault(),p=0;break;case"End":a.preventDefault(),p=s.length-1;break;default:return}s[p]!==d&&s[p].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=(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)});})();
@@ -29,9 +29,9 @@ var q = (s, e, t) => e in s ? j(s, e, { enumerable: true, configurable: true, wr
29
29
  var a = (s, e, t) => q(s, typeof e != "symbol" ? e + "" : e, t);
30
30
  var B = Object.defineProperty;
31
31
  var N = (s, e, t) => e in s ? B(s, e, { enumerable: true, configurable: true, writable: true, value: t }) : s[e] = t;
32
- var l = (s, e, t) => N(s, typeof e != "symbol" ? e + "" : e, t);
33
- var J = "bottom";
34
- var Q = ({ reference: s, popper: e }) => {
32
+ var d = (s, e, t) => N(s, typeof e != "symbol" ? e + "" : e, t);
33
+ var V = "bottom";
34
+ var X = ({ reference: s, popper: e }) => {
35
35
  if (!s || !e)
36
36
  throw new Error("Reference or popper element is null or undefined");
37
37
  const t = /* @__PURE__ */ new WeakMap(), n = (r) => (t.has(r) || t.set(r, r.getBoundingClientRect()), t.get(r)), o = n(e), i = n(s);
@@ -45,24 +45,21 @@ var Q = ({ reference: s, popper: e }) => {
45
45
  refRight: i.right
46
46
  };
47
47
  };
48
- var V = Object.defineProperty;
49
- var X = (s, e, t) => e in s ? V(s, e, { enumerable: true, configurable: true, writable: true, value: t }) : s[e] = t;
50
- var p = (s, e, t) => X(s, typeof e != "symbol" ? e + "" : e, t);
51
48
  var Y = (s, e, t, n) => {
52
49
  const o = t, i = n - (t + e);
53
50
  return o >= (s - e) / 2 && i >= (s - e) / 2;
54
51
  };
55
- var Z = (s, e, t, n) => (s - e) / 2 <= t && t + s / 2 + e / 2 <= n;
56
- var _ = (s, e, t, n, o) => t > o - n ? e() ? window.innerHeight - o : t - o : s() ? 0 : t + n;
57
- var ee = (s, e, t, n) => s <= n && t - s <= e;
58
- var te = (s, e, t, n) => t <= n && -s <= e;
59
- var ne = (s, e, t, n, o, i) => {
60
- const r = o - t - i, h = t - n, g = t + i - n + (o - t - i), d = r >= 0 ? o - n : h >= 0 ? t - n : t;
61
- return s() ? 0 : e() ? g : d;
52
+ var J = (s, e, t, n) => (s - e) / 2 <= t && t + s / 2 + e / 2 <= n;
53
+ var Q = (s, e, t, n, o) => t > o - n ? e() ? window.innerHeight - o : t - o : s() ? 0 : t + n;
54
+ var Z = (s, e, t, n) => s <= n && t - s <= e;
55
+ var _ = (s, e, t, n) => t <= n && -s <= e;
56
+ var ee = (s, e, t, n, o, i) => {
57
+ const r = o - t - i, h = t - n, g = t + i - n + (o - t - i), p = r >= 0 ? o - n : h >= 0 ? t - n : t;
58
+ return s() ? 0 : e() ? g : p;
62
59
  };
63
- var se = (s, e, t, n) => s <= t && e - s - n >= s;
64
- var ie = (s, e) => s >= e;
65
- var oe = ({
60
+ var te = (s, e, t, n) => s <= t && e - s - n >= s;
61
+ var ne = (s, e) => s >= e;
62
+ var se = ({
66
63
  placement: s,
67
64
  refWidth: e,
68
65
  refTop: t,
@@ -72,25 +69,25 @@ var oe = ({
72
69
  popperHeight: r,
73
70
  windowHeight: h,
74
71
  windowWidth: g,
75
- offsetDistance: d
72
+ offsetDistance: p
76
73
  }) => {
77
- const c = g - n - e, f = n, v = h - t - o, m = t, w = () => _(
78
- () => te(t, o, r, h),
79
- () => ee(t, o, r, h),
74
+ const c = g - n - e, f = n, v = h - t - o, m = t, w = () => Q(
75
+ () => _(t, o, r, h),
76
+ () => Z(t, o, r, h),
80
77
  t,
81
78
  o,
82
79
  r
83
- ), y = () => ne(
84
- () => se(n, g, i, e),
85
- () => ie(n, i),
80
+ ), y = () => ee(
81
+ () => te(n, g, i, e),
82
+ () => ne(n, i),
86
83
  n,
87
84
  i,
88
85
  g,
89
86
  e
90
- ), H = () => Y(i, e, n, g) ? n + e / 2 - i / 2 : y(), T = () => Z(r, o, t, h) ? t + o / 2 - r / 2 : w(), C = () => n + i <= g ? n : y(), O = () => n + e - i >= 0 ? n + e - i : y(), L = () => t + r <= h ? t : w(), G = () => t + o - r >= 0 ? t + o - r : w();
87
+ ), H = () => Y(i, e, n, g) ? n + e / 2 - i / 2 : y(), T = () => J(r, o, t, h) ? t + o / 2 - r / 2 : w(), C = () => n + i <= g ? n : y(), O = () => n + e - i >= 0 ? n + e - i : y(), L = () => t + r <= h ? t : w(), G = () => t + o - r >= 0 ? t + o - r : w();
91
88
  let u = 0, E = 0;
92
- const M = t - r - d, k = t + o + d, D = n - i - d, I = n + e + d, P = m >= r + d, F = v >= r + d, R = f >= i + d, $ = c >= i + d;
93
- switch (s.startsWith("top") ? E = P ? M : F ? k : Math.max(M, k) : s.startsWith("bottom") ? E = F ? k : P ? M : Math.max(k) : s.startsWith("left") ? u = R ? D : $ ? I : Math.max(D, I) : s.startsWith("right") && (u = $ ? I : R ? D : Math.max(I, D)), s) {
89
+ const M = t - r - p, k = t + o + p, D = n - i - p, I = n + e + p, W = m >= r + p, F = v >= r + p, R = f >= i + p, $ = c >= i + p;
90
+ switch (s.startsWith("top") ? E = W ? M : F ? k : Math.max(M, k) : s.startsWith("bottom") ? E = F ? k : W ? M : Math.max(k) : s.startsWith("left") ? u = R ? D : $ ? I : Math.max(D, I) : s.startsWith("right") && (u = $ ? I : R ? D : Math.max(I, D)), s) {
94
91
  case "bottom":
95
92
  case "bottom-middle":
96
93
  case "top":
@@ -122,7 +119,7 @@ var oe = ({
122
119
  }
123
120
  return { x: u, y: E };
124
121
  };
125
- var re = class {
122
+ var ie = class {
126
123
  /**
127
124
  * Flexilla Popper
128
125
  * @param reference
@@ -142,21 +139,21 @@ var re = class {
142
139
  * @param {Function} [options.onUpdate] - Callback function when position updates
143
140
  */
144
141
  constructor(e, t, n = {}) {
145
- p(this, "reference"), p(this, "popper"), p(this, "offsetDistance"), p(this, "placement"), p(this, "disableOnResize"), p(this, "disableOnScroll"), p(this, "onUpdate"), p(this, "isWindowEventsRegistered"), p(this, "validateElements", () => {
142
+ d(this, "reference"), d(this, "popper"), d(this, "offsetDistance"), d(this, "placement"), d(this, "disableOnResize"), d(this, "disableOnScroll"), d(this, "onUpdate"), d(this, "isWindowEventsRegistered"), d(this, "validateElements", () => {
146
143
  if (!(this.reference instanceof HTMLElement))
147
144
  throw new Error("Invalid HTMLElement for Reference Element");
148
145
  if (!(this.popper instanceof HTMLElement))
149
146
  throw new Error("Invalid HTMLElement for Popper");
150
147
  if (typeof this.offsetDistance != "number")
151
148
  throw new Error("OffsetDistance must be a number");
152
- }), p(this, "setPopperStyleProperty", (c, f) => {
149
+ }), d(this, "setPopperStyleProperty", (c, f) => {
153
150
  this.popper.style.setProperty("--fx-popper-placement-x", `${c}px`), this.popper.style.setProperty("--fx-popper-placement-y", `${f}px`);
154
- }), p(this, "setInitialStyles", () => {
151
+ }), d(this, "setInitialStyles", () => {
155
152
  this.popper.style.setProperty("--fx-popper-placement-x", ""), this.popper.style.setProperty("--fx-popper-placement-y", "");
156
- }), p(this, "initPlacement", () => {
153
+ }), d(this, "initPlacement", () => {
157
154
  var c;
158
155
  this.validateElements(), this.setInitialStyles();
159
- const f = window.innerWidth, v = window.innerHeight, { popperHeight: m, popperWidth: w, refHeight: y, refWidth: H, refLeft: T, refTop: C } = Q({ reference: this.reference, popper: this.popper }), { x: O, y: L } = oe(
156
+ const f = window.innerWidth, v = window.innerHeight, { popperHeight: m, popperWidth: w, refHeight: y, refWidth: H, refLeft: T, refTop: C } = X({ reference: this.reference, popper: this.popper }), { x: O, y: L } = se(
160
157
  {
161
158
  placement: this.placement,
162
159
  refWidth: H,
@@ -171,20 +168,20 @@ var re = class {
171
168
  }
172
169
  );
173
170
  this.setPopperStyleProperty(O, L), (c = this.onUpdate) == null || c.call(this, { x: O, y: L, placement: this.placement });
174
- }), p(this, "removeWindowEvents", () => {
171
+ }), d(this, "removeWindowEvents", () => {
175
172
  this.isWindowEventsRegistered && (!this.disableOnResize && window.removeEventListener("resize", this.updatePosition), !this.disableOnScroll && window.removeEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = false);
176
- }), p(this, "attachWindowEvent", () => {
173
+ }), d(this, "attachWindowEvent", () => {
177
174
  this.isWindowEventsRegistered && this.removeWindowEvents(), this.disableOnResize || window.addEventListener("resize", this.updatePosition), this.disableOnScroll || window.addEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = true;
178
- }), p(this, "resetPosition", () => {
175
+ }), d(this, "resetPosition", () => {
179
176
  this.setInitialStyles();
180
- }), p(this, "updatePosition", () => {
177
+ }), d(this, "updatePosition", () => {
181
178
  this.initPlacement(), this.attachWindowEvent();
182
- }), p(this, "cleanupEvents", () => {
179
+ }), d(this, "cleanupEvents", () => {
183
180
  this.setInitialStyles(), this.removeWindowEvents();
184
181
  });
185
182
  const {
186
183
  offsetDistance: o = 10,
187
- placement: i = J,
184
+ placement: i = V,
188
185
  eventEffect: r = {},
189
186
  onUpdate: h
190
187
  } = n;
@@ -194,8 +191,8 @@ var re = class {
194
191
  throw new Error("Invalid HTMLElement for Popper");
195
192
  if (n.offsetDistance && typeof n.offsetDistance != "number")
196
193
  throw new Error("OffsetDistance must be a number");
197
- const { disableOnResize: g, disableOnScroll: d } = r;
198
- this.isWindowEventsRegistered = false, this.reference = e, this.popper = t, this.offsetDistance = o, this.placement = i, this.disableOnResize = g || false, this.disableOnScroll = d || false, this.onUpdate = h;
194
+ const { disableOnResize: g, disableOnScroll: p } = r;
195
+ this.isWindowEventsRegistered = false, this.reference = e, this.popper = t, this.offsetDistance = o, this.placement = i, this.disableOnResize = g || false, this.disableOnScroll = p || false, this.onUpdate = h;
199
196
  }
200
197
  /**
201
198
  * Updates popper configuration and recalculates position
@@ -208,6 +205,9 @@ var re = class {
208
205
  this.placement = e, this.offsetDistance = t || this.offsetDistance, this.initPlacement(), this.attachWindowEvent();
209
206
  }
210
207
  };
208
+ var oe = Object.defineProperty;
209
+ var re = (s, e, t) => e in s ? oe(s, e, { enumerable: true, configurable: true, writable: true, value: t }) : s[e] = t;
210
+ var l = (s, e, t) => re(s, typeof e != "symbol" ? e + "" : e, t);
211
211
  var ae = (s, e = document.body) => e.querySelector(s);
212
212
  var A = (s, e) => {
213
213
  for (const [t, n] of Object.entries(e))
@@ -275,7 +275,7 @@ var ce = class {
275
275
  }), l(this, "showOnMouseEnter", () => {
276
276
  this.show(), this.addEventOnMouseEnter();
277
277
  }), l(this, "setShowOptions", ({ placement: i, offsetDistance: r }) => {
278
- var h, g, d, c;
278
+ var h, g, p, c;
279
279
  this.popper.setOptions({
280
280
  placement: i,
281
281
  offsetDistance: r
@@ -283,7 +283,7 @@ var ce = class {
283
283
  state: "open",
284
284
  popper: this.contentElement,
285
285
  trigger: this.triggerElement
286
- }), this.onToggleState(false), (c = (d = this.options).onShow) == null || c.call(d);
286
+ }), this.onToggleState(false), (c = (p = this.options).onShow) == null || c.call(p);
287
287
  }), l(this, "setPopperOptions", ({ placement: i, offsetDistance: r }) => {
288
288
  this.popper.setOptions({
289
289
  placement: i,
@@ -302,7 +302,7 @@ var ce = class {
302
302
  throw new Error("Trigger element must be a valid HTML element");
303
303
  if (!(this.contentElement instanceof HTMLElement))
304
304
  throw new Error("Content element must be a valid HTML element");
305
- this.options = n, this.triggerStrategy = this.options.triggerStrategy || "click", this.placement = this.options.placement || "bottom", this.offsetDistance = this.options.offsetDistance || 6, this.preventFromCloseOutside = this.options.preventFromCloseOutside || false, this.preventFromCloseInside = this.options.preventCloseFromInside || false, this.defaultState = this.options.defaultState || "close", this.eventEffect = (o = this.options.popper) == null ? void 0 : o.eventEffect, this.popper = new re(
305
+ this.options = n, this.triggerStrategy = this.options.triggerStrategy || "click", this.placement = this.options.placement || "bottom", this.offsetDistance = this.options.offsetDistance || 6, this.preventFromCloseOutside = this.options.preventFromCloseOutside || false, this.preventFromCloseInside = this.options.preventCloseFromInside || false, this.defaultState = this.options.defaultState || "close", this.eventEffect = (o = this.options.popper) == null ? void 0 : o.eventEffect, this.popper = new ie(
306
306
  this.triggerElement,
307
307
  this.contentElement,
308
308
  {
@@ -358,16 +358,16 @@ var ce = class {
358
358
  }), this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
359
359
  }
360
360
  };
361
- var W = (s, e = document.body) => e.querySelector(s);
361
+ var P = (s, e = document.body) => e.querySelector(s);
362
362
  var U = (s, e = document.body) => Array.from(e.querySelectorAll(s));
363
- var de = (s) => typeof s == "string" ? W(s) : s;
364
- var pe = ({ containerElement: s, targetChildren: e = "a:not([disabled]), button:not([disabled])", direction: t }) => {
363
+ var pe = (s) => typeof s == "string" ? P(s) : s;
364
+ var de = ({ containerElement: s, targetChildren: e = "a:not([disabled]), button:not([disabled])", direction: t }) => {
365
365
  let n = false;
366
- const o = de(s) || document.body, i = typeof e == "string" ? U(e, o) : e, r = (h) => {
366
+ const o = pe(s) || document.body, i = typeof e == "string" ? U(e, o) : e, r = (h) => {
367
367
  if (h.preventDefault(), o.focus(), i.length === 0)
368
368
  return;
369
- const g = h.key, d = document.activeElement;
370
- let c = i.findIndex((m) => m === d);
369
+ const g = h.key, p = document.activeElement;
370
+ let c = i.findIndex((m) => m === p);
371
371
  if (c === -1) {
372
372
  g === "ArrowUp" || g === "ArrowLeft" ? i[i.length - 1].focus() : i[0].focus();
373
373
  return;
@@ -393,7 +393,7 @@ var pe = ({ containerElement: s, targetChildren: e = "a:not([disabled]), button:
393
393
  default:
394
394
  return;
395
395
  }
396
- i[c] !== d && i[c].focus();
396
+ i[c] !== p && i[c].focus();
397
397
  };
398
398
  return {
399
399
  make: () => {
@@ -404,7 +404,7 @@ var pe = ({ containerElement: s, targetChildren: e = "a:not([disabled]), button:
404
404
  }
405
405
  };
406
406
  };
407
- var K = (s, e, t) => {
407
+ var z = (s, e, t) => {
408
408
  const n = new CustomEvent(e, { detail: t });
409
409
  s.dispatchEvent(n);
410
410
  };
@@ -458,13 +458,13 @@ var S = class S2 {
458
458
  });
459
459
  a(this, "onShow", () => {
460
460
  var e2, t2;
461
- K(this.contentElement, "dropdown-show", {
461
+ z(this.contentElement, "dropdown-show", {
462
462
  isHidden: false
463
463
  }), (t2 = (e2 = this.options).onShow) == null || t2.call(e2);
464
464
  });
465
465
  a(this, "onHide", () => {
466
466
  var e2, t2;
467
- K(this.contentElement, "dropdown-hide", {
467
+ z(this.contentElement, "dropdown-hide", {
468
468
  isHidden: true
469
469
  }), (t2 = (e2 = this.options).onHide) == null || t2.call(e2);
470
470
  });
@@ -486,7 +486,7 @@ var S = class S2 {
486
486
  a(this, "cleanup", () => {
487
487
  this.OverlayInstance.cleanup(), x.removeInstance("dropdown", this.contentElement);
488
488
  });
489
- const n = typeof e == "string" ? W(e) : e;
489
+ const n = typeof e == "string" ? P(e) : e;
490
490
  if (!(n instanceof HTMLElement))
491
491
  throw new Error(
492
492
  "Invalid dropdown content element: Must provide either a valid HTMLElement or a selector string that resolves to an existing HTMLElement"
@@ -498,7 +498,7 @@ var S = class S2 {
498
498
  if (o)
499
499
  return o;
500
500
  const i = `[data-dropdown-trigger][data-dropdown-id=${this.contentElement.id}]`;
501
- if (this.triggerElement = W(i), !(this.triggerElement instanceof HTMLElement))
501
+ if (this.triggerElement = P(i), !(this.triggerElement instanceof HTMLElement))
502
502
  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}"`);
503
503
  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") || false, this.preventFromCloseInside = this.options.preventCloseFromInside || this.contentElement.hasAttribute("data-prevent-close-inside") || false, this.defaultState = this.options.defaultState || this.contentElement.dataset.defaultState || "close", this.OverlayInstance = new ce({
504
504
  trigger: this.triggerElement,
@@ -519,7 +519,7 @@ var S = class S2 {
519
519
  },
520
520
  popper: this.options.popper
521
521
  }
522
- }), this.navigationKeys = pe({
522
+ }), this.navigationKeys = de({
523
523
  containerElement: this.contentElement,
524
524
  targetChildren: "a:not([disabled]), button:not([disabled])",
525
525
  direction: "up-down"
@@ -540,12 +540,12 @@ a(S, "autoInit", (e = "[data-fx-dropdown]") => {
540
540
  for (const n of t)
541
541
  new S(n);
542
542
  });
543
- var z = S;
543
+ var K = S;
544
544
 
545
545
  // src/index.js
546
546
  function Dropdown(Alpine) {
547
547
  Alpine.directive("dropdown", (el, {}, { cleanup }) => {
548
- const dropdown_ = new z(el);
548
+ const dropdown_ = new K(el);
549
549
  cleanup(() => {
550
550
  dropdown_.cleanup();
551
551
  });
@@ -4,9 +4,9 @@ var q = (s, e, t) => e in s ? j(s, e, { enumerable: true, configurable: true, wr
4
4
  var a = (s, e, t) => q(s, typeof e != "symbol" ? e + "" : e, t);
5
5
  var B = Object.defineProperty;
6
6
  var N = (s, e, t) => e in s ? B(s, e, { enumerable: true, configurable: true, writable: true, value: t }) : s[e] = t;
7
- var l = (s, e, t) => N(s, typeof e != "symbol" ? e + "" : e, t);
8
- var J = "bottom";
9
- var Q = ({ reference: s, popper: e }) => {
7
+ var d = (s, e, t) => N(s, typeof e != "symbol" ? e + "" : e, t);
8
+ var V = "bottom";
9
+ var X = ({ reference: s, popper: e }) => {
10
10
  if (!s || !e)
11
11
  throw new Error("Reference or popper element is null or undefined");
12
12
  const t = /* @__PURE__ */ new WeakMap(), n = (r) => (t.has(r) || t.set(r, r.getBoundingClientRect()), t.get(r)), o = n(e), i = n(s);
@@ -20,24 +20,21 @@ var Q = ({ reference: s, popper: e }) => {
20
20
  refRight: i.right
21
21
  };
22
22
  };
23
- var V = Object.defineProperty;
24
- var X = (s, e, t) => e in s ? V(s, e, { enumerable: true, configurable: true, writable: true, value: t }) : s[e] = t;
25
- var p = (s, e, t) => X(s, typeof e != "symbol" ? e + "" : e, t);
26
23
  var Y = (s, e, t, n) => {
27
24
  const o = t, i = n - (t + e);
28
25
  return o >= (s - e) / 2 && i >= (s - e) / 2;
29
26
  };
30
- var Z = (s, e, t, n) => (s - e) / 2 <= t && t + s / 2 + e / 2 <= n;
31
- var _ = (s, e, t, n, o) => t > o - n ? e() ? window.innerHeight - o : t - o : s() ? 0 : t + n;
32
- var ee = (s, e, t, n) => s <= n && t - s <= e;
33
- var te = (s, e, t, n) => t <= n && -s <= e;
34
- var ne = (s, e, t, n, o, i) => {
35
- const r = o - t - i, h = t - n, g = t + i - n + (o - t - i), d = r >= 0 ? o - n : h >= 0 ? t - n : t;
36
- return s() ? 0 : e() ? g : d;
27
+ var J = (s, e, t, n) => (s - e) / 2 <= t && t + s / 2 + e / 2 <= n;
28
+ var Q = (s, e, t, n, o) => t > o - n ? e() ? window.innerHeight - o : t - o : s() ? 0 : t + n;
29
+ var Z = (s, e, t, n) => s <= n && t - s <= e;
30
+ var _ = (s, e, t, n) => t <= n && -s <= e;
31
+ var ee = (s, e, t, n, o, i) => {
32
+ const r = o - t - i, h = t - n, g = t + i - n + (o - t - i), p = r >= 0 ? o - n : h >= 0 ? t - n : t;
33
+ return s() ? 0 : e() ? g : p;
37
34
  };
38
- var se = (s, e, t, n) => s <= t && e - s - n >= s;
39
- var ie = (s, e) => s >= e;
40
- var oe = ({
35
+ var te = (s, e, t, n) => s <= t && e - s - n >= s;
36
+ var ne = (s, e) => s >= e;
37
+ var se = ({
41
38
  placement: s,
42
39
  refWidth: e,
43
40
  refTop: t,
@@ -47,25 +44,25 @@ var oe = ({
47
44
  popperHeight: r,
48
45
  windowHeight: h,
49
46
  windowWidth: g,
50
- offsetDistance: d
47
+ offsetDistance: p
51
48
  }) => {
52
- const c = g - n - e, f = n, v = h - t - o, m = t, w = () => _(
53
- () => te(t, o, r, h),
54
- () => ee(t, o, r, h),
49
+ const c = g - n - e, f = n, v = h - t - o, m = t, w = () => Q(
50
+ () => _(t, o, r, h),
51
+ () => Z(t, o, r, h),
55
52
  t,
56
53
  o,
57
54
  r
58
- ), y = () => ne(
59
- () => se(n, g, i, e),
60
- () => ie(n, i),
55
+ ), y = () => ee(
56
+ () => te(n, g, i, e),
57
+ () => ne(n, i),
61
58
  n,
62
59
  i,
63
60
  g,
64
61
  e
65
- ), H = () => Y(i, e, n, g) ? n + e / 2 - i / 2 : y(), T = () => Z(r, o, t, h) ? t + o / 2 - r / 2 : w(), C = () => n + i <= g ? n : y(), O = () => n + e - i >= 0 ? n + e - i : y(), L = () => t + r <= h ? t : w(), G = () => t + o - r >= 0 ? t + o - r : w();
62
+ ), H = () => Y(i, e, n, g) ? n + e / 2 - i / 2 : y(), T = () => J(r, o, t, h) ? t + o / 2 - r / 2 : w(), C = () => n + i <= g ? n : y(), O = () => n + e - i >= 0 ? n + e - i : y(), L = () => t + r <= h ? t : w(), G = () => t + o - r >= 0 ? t + o - r : w();
66
63
  let u = 0, E = 0;
67
- const M = t - r - d, k = t + o + d, D = n - i - d, I = n + e + d, P = m >= r + d, F = v >= r + d, R = f >= i + d, $ = c >= i + d;
68
- switch (s.startsWith("top") ? E = P ? M : F ? k : Math.max(M, k) : s.startsWith("bottom") ? E = F ? k : P ? M : Math.max(k) : s.startsWith("left") ? u = R ? D : $ ? I : Math.max(D, I) : s.startsWith("right") && (u = $ ? I : R ? D : Math.max(I, D)), s) {
64
+ const M = t - r - p, k = t + o + p, D = n - i - p, I = n + e + p, W = m >= r + p, F = v >= r + p, R = f >= i + p, $ = c >= i + p;
65
+ switch (s.startsWith("top") ? E = W ? M : F ? k : Math.max(M, k) : s.startsWith("bottom") ? E = F ? k : W ? M : Math.max(k) : s.startsWith("left") ? u = R ? D : $ ? I : Math.max(D, I) : s.startsWith("right") && (u = $ ? I : R ? D : Math.max(I, D)), s) {
69
66
  case "bottom":
70
67
  case "bottom-middle":
71
68
  case "top":
@@ -97,7 +94,7 @@ var oe = ({
97
94
  }
98
95
  return { x: u, y: E };
99
96
  };
100
- var re = class {
97
+ var ie = class {
101
98
  /**
102
99
  * Flexilla Popper
103
100
  * @param reference
@@ -117,21 +114,21 @@ var re = class {
117
114
  * @param {Function} [options.onUpdate] - Callback function when position updates
118
115
  */
119
116
  constructor(e, t, n = {}) {
120
- p(this, "reference"), p(this, "popper"), p(this, "offsetDistance"), p(this, "placement"), p(this, "disableOnResize"), p(this, "disableOnScroll"), p(this, "onUpdate"), p(this, "isWindowEventsRegistered"), p(this, "validateElements", () => {
117
+ d(this, "reference"), d(this, "popper"), d(this, "offsetDistance"), d(this, "placement"), d(this, "disableOnResize"), d(this, "disableOnScroll"), d(this, "onUpdate"), d(this, "isWindowEventsRegistered"), d(this, "validateElements", () => {
121
118
  if (!(this.reference instanceof HTMLElement))
122
119
  throw new Error("Invalid HTMLElement for Reference Element");
123
120
  if (!(this.popper instanceof HTMLElement))
124
121
  throw new Error("Invalid HTMLElement for Popper");
125
122
  if (typeof this.offsetDistance != "number")
126
123
  throw new Error("OffsetDistance must be a number");
127
- }), p(this, "setPopperStyleProperty", (c, f) => {
124
+ }), d(this, "setPopperStyleProperty", (c, f) => {
128
125
  this.popper.style.setProperty("--fx-popper-placement-x", `${c}px`), this.popper.style.setProperty("--fx-popper-placement-y", `${f}px`);
129
- }), p(this, "setInitialStyles", () => {
126
+ }), d(this, "setInitialStyles", () => {
130
127
  this.popper.style.setProperty("--fx-popper-placement-x", ""), this.popper.style.setProperty("--fx-popper-placement-y", "");
131
- }), p(this, "initPlacement", () => {
128
+ }), d(this, "initPlacement", () => {
132
129
  var c;
133
130
  this.validateElements(), this.setInitialStyles();
134
- const f = window.innerWidth, v = window.innerHeight, { popperHeight: m, popperWidth: w, refHeight: y, refWidth: H, refLeft: T, refTop: C } = Q({ reference: this.reference, popper: this.popper }), { x: O, y: L } = oe(
131
+ const f = window.innerWidth, v = window.innerHeight, { popperHeight: m, popperWidth: w, refHeight: y, refWidth: H, refLeft: T, refTop: C } = X({ reference: this.reference, popper: this.popper }), { x: O, y: L } = se(
135
132
  {
136
133
  placement: this.placement,
137
134
  refWidth: H,
@@ -146,20 +143,20 @@ var re = class {
146
143
  }
147
144
  );
148
145
  this.setPopperStyleProperty(O, L), (c = this.onUpdate) == null || c.call(this, { x: O, y: L, placement: this.placement });
149
- }), p(this, "removeWindowEvents", () => {
146
+ }), d(this, "removeWindowEvents", () => {
150
147
  this.isWindowEventsRegistered && (!this.disableOnResize && window.removeEventListener("resize", this.updatePosition), !this.disableOnScroll && window.removeEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = false);
151
- }), p(this, "attachWindowEvent", () => {
148
+ }), d(this, "attachWindowEvent", () => {
152
149
  this.isWindowEventsRegistered && this.removeWindowEvents(), this.disableOnResize || window.addEventListener("resize", this.updatePosition), this.disableOnScroll || window.addEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = true;
153
- }), p(this, "resetPosition", () => {
150
+ }), d(this, "resetPosition", () => {
154
151
  this.setInitialStyles();
155
- }), p(this, "updatePosition", () => {
152
+ }), d(this, "updatePosition", () => {
156
153
  this.initPlacement(), this.attachWindowEvent();
157
- }), p(this, "cleanupEvents", () => {
154
+ }), d(this, "cleanupEvents", () => {
158
155
  this.setInitialStyles(), this.removeWindowEvents();
159
156
  });
160
157
  const {
161
158
  offsetDistance: o = 10,
162
- placement: i = J,
159
+ placement: i = V,
163
160
  eventEffect: r = {},
164
161
  onUpdate: h
165
162
  } = n;
@@ -169,8 +166,8 @@ var re = class {
169
166
  throw new Error("Invalid HTMLElement for Popper");
170
167
  if (n.offsetDistance && typeof n.offsetDistance != "number")
171
168
  throw new Error("OffsetDistance must be a number");
172
- const { disableOnResize: g, disableOnScroll: d } = r;
173
- this.isWindowEventsRegistered = false, this.reference = e, this.popper = t, this.offsetDistance = o, this.placement = i, this.disableOnResize = g || false, this.disableOnScroll = d || false, this.onUpdate = h;
169
+ const { disableOnResize: g, disableOnScroll: p } = r;
170
+ this.isWindowEventsRegistered = false, this.reference = e, this.popper = t, this.offsetDistance = o, this.placement = i, this.disableOnResize = g || false, this.disableOnScroll = p || false, this.onUpdate = h;
174
171
  }
175
172
  /**
176
173
  * Updates popper configuration and recalculates position
@@ -183,6 +180,9 @@ var re = class {
183
180
  this.placement = e, this.offsetDistance = t || this.offsetDistance, this.initPlacement(), this.attachWindowEvent();
184
181
  }
185
182
  };
183
+ var oe = Object.defineProperty;
184
+ var re = (s, e, t) => e in s ? oe(s, e, { enumerable: true, configurable: true, writable: true, value: t }) : s[e] = t;
185
+ var l = (s, e, t) => re(s, typeof e != "symbol" ? e + "" : e, t);
186
186
  var ae = (s, e = document.body) => e.querySelector(s);
187
187
  var A = (s, e) => {
188
188
  for (const [t, n] of Object.entries(e))
@@ -250,7 +250,7 @@ var ce = class {
250
250
  }), l(this, "showOnMouseEnter", () => {
251
251
  this.show(), this.addEventOnMouseEnter();
252
252
  }), l(this, "setShowOptions", ({ placement: i, offsetDistance: r }) => {
253
- var h, g, d, c;
253
+ var h, g, p, c;
254
254
  this.popper.setOptions({
255
255
  placement: i,
256
256
  offsetDistance: r
@@ -258,7 +258,7 @@ var ce = class {
258
258
  state: "open",
259
259
  popper: this.contentElement,
260
260
  trigger: this.triggerElement
261
- }), this.onToggleState(false), (c = (d = this.options).onShow) == null || c.call(d);
261
+ }), this.onToggleState(false), (c = (p = this.options).onShow) == null || c.call(p);
262
262
  }), l(this, "setPopperOptions", ({ placement: i, offsetDistance: r }) => {
263
263
  this.popper.setOptions({
264
264
  placement: i,
@@ -277,7 +277,7 @@ var ce = class {
277
277
  throw new Error("Trigger element must be a valid HTML element");
278
278
  if (!(this.contentElement instanceof HTMLElement))
279
279
  throw new Error("Content element must be a valid HTML element");
280
- this.options = n, this.triggerStrategy = this.options.triggerStrategy || "click", this.placement = this.options.placement || "bottom", this.offsetDistance = this.options.offsetDistance || 6, this.preventFromCloseOutside = this.options.preventFromCloseOutside || false, this.preventFromCloseInside = this.options.preventCloseFromInside || false, this.defaultState = this.options.defaultState || "close", this.eventEffect = (o = this.options.popper) == null ? void 0 : o.eventEffect, this.popper = new re(
280
+ this.options = n, this.triggerStrategy = this.options.triggerStrategy || "click", this.placement = this.options.placement || "bottom", this.offsetDistance = this.options.offsetDistance || 6, this.preventFromCloseOutside = this.options.preventFromCloseOutside || false, this.preventFromCloseInside = this.options.preventCloseFromInside || false, this.defaultState = this.options.defaultState || "close", this.eventEffect = (o = this.options.popper) == null ? void 0 : o.eventEffect, this.popper = new ie(
281
281
  this.triggerElement,
282
282
  this.contentElement,
283
283
  {
@@ -333,16 +333,16 @@ var ce = class {
333
333
  }), this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
334
334
  }
335
335
  };
336
- var W = (s, e = document.body) => e.querySelector(s);
336
+ var P = (s, e = document.body) => e.querySelector(s);
337
337
  var U = (s, e = document.body) => Array.from(e.querySelectorAll(s));
338
- var de = (s) => typeof s == "string" ? W(s) : s;
339
- var pe = ({ containerElement: s, targetChildren: e = "a:not([disabled]), button:not([disabled])", direction: t }) => {
338
+ var pe = (s) => typeof s == "string" ? P(s) : s;
339
+ var de = ({ containerElement: s, targetChildren: e = "a:not([disabled]), button:not([disabled])", direction: t }) => {
340
340
  let n = false;
341
- const o = de(s) || document.body, i = typeof e == "string" ? U(e, o) : e, r = (h) => {
341
+ const o = pe(s) || document.body, i = typeof e == "string" ? U(e, o) : e, r = (h) => {
342
342
  if (h.preventDefault(), o.focus(), i.length === 0)
343
343
  return;
344
- const g = h.key, d = document.activeElement;
345
- let c = i.findIndex((m) => m === d);
344
+ const g = h.key, p = document.activeElement;
345
+ let c = i.findIndex((m) => m === p);
346
346
  if (c === -1) {
347
347
  g === "ArrowUp" || g === "ArrowLeft" ? i[i.length - 1].focus() : i[0].focus();
348
348
  return;
@@ -368,7 +368,7 @@ var pe = ({ containerElement: s, targetChildren: e = "a:not([disabled]), button:
368
368
  default:
369
369
  return;
370
370
  }
371
- i[c] !== d && i[c].focus();
371
+ i[c] !== p && i[c].focus();
372
372
  };
373
373
  return {
374
374
  make: () => {
@@ -379,7 +379,7 @@ var pe = ({ containerElement: s, targetChildren: e = "a:not([disabled]), button:
379
379
  }
380
380
  };
381
381
  };
382
- var K = (s, e, t) => {
382
+ var z = (s, e, t) => {
383
383
  const n = new CustomEvent(e, { detail: t });
384
384
  s.dispatchEvent(n);
385
385
  };
@@ -433,13 +433,13 @@ var S = class S2 {
433
433
  });
434
434
  a(this, "onShow", () => {
435
435
  var e2, t2;
436
- K(this.contentElement, "dropdown-show", {
436
+ z(this.contentElement, "dropdown-show", {
437
437
  isHidden: false
438
438
  }), (t2 = (e2 = this.options).onShow) == null || t2.call(e2);
439
439
  });
440
440
  a(this, "onHide", () => {
441
441
  var e2, t2;
442
- K(this.contentElement, "dropdown-hide", {
442
+ z(this.contentElement, "dropdown-hide", {
443
443
  isHidden: true
444
444
  }), (t2 = (e2 = this.options).onHide) == null || t2.call(e2);
445
445
  });
@@ -461,7 +461,7 @@ var S = class S2 {
461
461
  a(this, "cleanup", () => {
462
462
  this.OverlayInstance.cleanup(), x.removeInstance("dropdown", this.contentElement);
463
463
  });
464
- const n = typeof e == "string" ? W(e) : e;
464
+ const n = typeof e == "string" ? P(e) : e;
465
465
  if (!(n instanceof HTMLElement))
466
466
  throw new Error(
467
467
  "Invalid dropdown content element: Must provide either a valid HTMLElement or a selector string that resolves to an existing HTMLElement"
@@ -473,7 +473,7 @@ var S = class S2 {
473
473
  if (o)
474
474
  return o;
475
475
  const i = `[data-dropdown-trigger][data-dropdown-id=${this.contentElement.id}]`;
476
- if (this.triggerElement = W(i), !(this.triggerElement instanceof HTMLElement))
476
+ if (this.triggerElement = P(i), !(this.triggerElement instanceof HTMLElement))
477
477
  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}"`);
478
478
  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") || false, this.preventFromCloseInside = this.options.preventCloseFromInside || this.contentElement.hasAttribute("data-prevent-close-inside") || false, this.defaultState = this.options.defaultState || this.contentElement.dataset.defaultState || "close", this.OverlayInstance = new ce({
479
479
  trigger: this.triggerElement,
@@ -494,7 +494,7 @@ var S = class S2 {
494
494
  },
495
495
  popper: this.options.popper
496
496
  }
497
- }), this.navigationKeys = pe({
497
+ }), this.navigationKeys = de({
498
498
  containerElement: this.contentElement,
499
499
  targetChildren: "a:not([disabled]), button:not([disabled])",
500
500
  direction: "up-down"
@@ -515,12 +515,12 @@ a(S, "autoInit", (e = "[data-fx-dropdown]") => {
515
515
  for (const n of t)
516
516
  new S(n);
517
517
  });
518
- var z = S;
518
+ var K = S;
519
519
 
520
520
  // src/index.js
521
521
  function Dropdown(Alpine) {
522
522
  Alpine.directive("dropdown", (el, {}, { cleanup }) => {
523
- const dropdown_ = new z(el);
523
+ const dropdown_ = new K(el);
524
524
  cleanup(() => {
525
525
  dropdown_.cleanup();
526
526
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flexilla/alpine-dropdown",
3
- "version": "0.0.2",
3
+ "version": "0.1.0",
4
4
  "description": "AlpineJS plugin for adding Dropdown functionality to your AlpineJS components",
5
5
  "type": "module",
6
6
  "private": false,
@@ -18,6 +18,7 @@
18
18
  },
19
19
  "main": "src/index.js",
20
20
  "module": "dist/module.esm.js",
21
+ "types": "src/index.d.ts",
21
22
  "scripts": {
22
23
  "build": "node ./scripts/build.js",
23
24
  "watch": "node ./scripts/build.js --watch",
@@ -41,6 +42,7 @@
41
42
  "LICENSE",
42
43
  "README.md",
43
44
  "src/index.js",
45
+ "src/index.d.ts",
44
46
  "package.json",
45
47
  "dist"
46
48
  ],
@@ -58,7 +60,7 @@
58
60
  "Flexilla"
59
61
  ],
60
62
  "dependencies": {
61
- "@flexilla/dropdown": "^2.1.3"
63
+ "@flexilla/dropdown": "^2.2.0"
62
64
  },
63
- "gitHead": "584636c3f3b85dfa71666f5354221dcfc385f9e6"
65
+ "gitHead": "34cb017e7b29fb1ee10ded1d4317256fa7167093"
64
66
  }
package/src/index.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ declare module '@flexilla/alpine-dropdown' {
2
+ import { Alpine } from 'alpinejs';
3
+
4
+ const PluginDropdown: (alpine: Alpine) => void;
5
+
6
+ export default PluginDropdown;
7
+ }