@flexilla/alpine-dropdown 0.2.0 → 0.3.1

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.
@@ -1,15 +1,15 @@
1
1
  // ../../node_modules/@flexilla/dropdown/dist/dropdown.js
2
- var B = Object.defineProperty;
3
- var j = (i, e, t) => e in i ? B(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t;
4
- var a = (i, e, t) => j(i, typeof e != "symbol" ? e + "" : e, t);
5
- var G = Object.defineProperty;
6
- var q = (i, e, t) => e in i ? G(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t;
7
- var p = (i, e, t) => q(i, typeof e != "symbol" ? e + "" : e, t);
8
- var V = "bottom";
9
- var X = ({ reference: i, popper: e }) => {
10
- if (!i || !e)
2
+ var q = Object.defineProperty;
3
+ var G = (n, e, t) => e in n ? q(n, e, { enumerable: true, configurable: true, writable: true, value: t }) : n[e] = t;
4
+ var a = (n, e, t) => G(n, typeof e != "symbol" ? e + "" : e, t);
5
+ var V = Object.defineProperty;
6
+ var X = (n, e, t) => e in n ? V(n, e, { enumerable: true, configurable: true, writable: true, value: t }) : n[e] = t;
7
+ var p = (n, e, t) => X(n, typeof e != "symbol" ? e + "" : e, t);
8
+ var Y = "bottom";
9
+ var J = ({ reference: n, popper: e }) => {
10
+ if (!n || !e)
11
11
  throw new Error("Reference or popper element is null or undefined");
12
- const t = /* @__PURE__ */ new WeakMap(), n = (o) => (t.has(o) || t.set(o, o.getBoundingClientRect()), t.get(o)), r = n(e), s = n(i);
12
+ const t = /* @__PURE__ */ new WeakMap(), i = (o) => (t.has(o) || t.set(o, o.getBoundingClientRect()), t.get(o)), r = i(e), s = i(n);
13
13
  return {
14
14
  popperHeight: r.height,
15
15
  popperWidth: r.width,
@@ -20,25 +20,25 @@ var X = ({ reference: i, popper: e }) => {
20
20
  refRight: s.right
21
21
  };
22
22
  };
23
- var Y = (i, e, t, n) => {
24
- const r = t, s = n - (t + e);
25
- return r >= (i - e) / 2 && s >= (i - e) / 2;
23
+ var Q = (n, e, t, i) => {
24
+ const r = t, s = i - (t + e);
25
+ return r >= (n - e) / 2 && s >= (n - e) / 2;
26
26
  };
27
- var J = (i, e, t, n) => (i - e) / 2 <= t && t + i / 2 + e / 2 <= n;
28
- var Q = (i, e, t, n, r) => t > r - n ? e() ? window.innerHeight - r : t - r : i() ? 0 : t + n;
29
- var Z = (i, e, t, n) => i <= n && t - i <= e;
30
- var _ = (i, e, t, n) => t <= n && -i <= e;
31
- var ee = (i, e, t, n, r, s) => {
32
- const o = r - t - s, l = t - n, m = t + s - n + (r - t - s), c = o >= 0 ? r - n : l >= 0 ? t - n : t;
33
- return i() ? 0 : e() ? m : c;
27
+ var Z = (n, e, t, i) => (n - e) / 2 <= t && t + n / 2 + e / 2 <= i;
28
+ var _ = (n, e, t, i, r) => t > r - i ? e() ? window.innerHeight - r : t - r : n() ? 0 : t + i;
29
+ var ee = (n, e, t, i) => n <= i && t - n <= e;
30
+ var te = (n, e, t, i) => t <= i && -n <= e;
31
+ var ne = (n, e, t, i, r, s) => {
32
+ const o = r - t - s, l = t - i, m = t + s - i + (r - t - s), c = o >= 0 ? r - i : l >= 0 ? t - i : t;
33
+ return n() ? 0 : e() ? m : c;
34
34
  };
35
- var te = (i, e, t, n) => i <= t && e - i - n >= i;
36
- var ne = (i, e) => i >= e;
37
- var ie = ({
38
- placement: i,
35
+ var ie = (n, e, t, i) => n <= t && e - n - i >= n;
36
+ var se = (n, e) => n >= e;
37
+ var re = ({
38
+ placement: n,
39
39
  refWidth: e,
40
40
  refTop: t,
41
- refLeft: n,
41
+ refLeft: i,
42
42
  refHeight: r,
43
43
  popperWidth: s,
44
44
  popperHeight: o,
@@ -46,23 +46,23 @@ var ie = ({
46
46
  windowWidth: m,
47
47
  offsetDistance: c
48
48
  }) => {
49
- const d = m - n - e, f = n, E = l - t - r, g = t, w = () => Q(
50
- () => _(t, r, o, l),
51
- () => Z(t, r, o, l),
49
+ const d = m - i - e, f = i, E = l - t - r, g = t, w = () => _(
50
+ () => te(t, r, o, l),
51
+ () => ee(t, r, o, l),
52
52
  t,
53
53
  r,
54
54
  o
55
- ), b = () => ee(
56
- () => te(n, m, s, e),
57
- () => ne(n, s),
58
- n,
55
+ ), b = () => ne(
56
+ () => ie(i, m, s, e),
57
+ () => se(i, s),
58
+ i,
59
59
  s,
60
60
  m,
61
61
  e
62
- ), H = () => Y(s, e, n, m) ? n + e / 2 - s / 2 : b(), M = () => J(o, r, t, l) ? t + r / 2 - o / 2 : w(), A = () => n + s <= m ? n : b(), k = () => n + e - s >= 0 ? n + e - s : b(), L = () => t + o <= l ? t : w(), U = () => t + r - o >= 0 ? t + r - o : w();
62
+ ), H = () => Q(s, e, i, m) ? i + e / 2 - s / 2 : b(), M = () => Z(o, r, t, l) ? t + r / 2 - o / 2 : w(), C = () => i + s <= m ? i : b(), L = () => i + e - s >= 0 ? i + e - s : b(), x = () => t + o <= l ? t : w(), j = () => t + r - o >= 0 ? t + r - o : w();
63
63
  let u = 0, v = 0;
64
- const C = t - o - c, x = t + r + c, I = n - s - c, D = n + e + c, W = g >= o + c, F = E >= o + c, R = f >= s + c, $ = d >= s + c;
65
- switch (i.startsWith("top") ? v = W ? C : F ? x : Math.max(C, x) : i.startsWith("bottom") ? v = F ? x : W ? C : Math.max(x) : i.startsWith("left") ? u = R ? I : $ ? D : Math.max(I, D) : i.startsWith("right") && (u = $ ? D : R ? I : Math.max(D, I)), i) {
64
+ const T = t - o - c, A = t + r + c, I = i - s - c, D = i + e + c, W = g >= o + c, $ = E >= o + c, R = f >= s + c, N = d >= s + c;
65
+ switch (n.startsWith("top") ? v = W ? T : $ ? A : Math.max(T, A) : n.startsWith("bottom") ? v = $ ? A : W ? T : Math.max(A) : n.startsWith("left") ? u = R ? I : N ? D : Math.max(I, D) : n.startsWith("right") && (u = N ? D : R ? I : Math.max(D, I)), n) {
66
66
  case "bottom":
67
67
  case "bottom-middle":
68
68
  case "top":
@@ -77,24 +77,24 @@ var ie = ({
77
77
  break;
78
78
  case "bottom-start":
79
79
  case "top-start":
80
- u = A();
80
+ u = C();
81
81
  break;
82
82
  case "bottom-end":
83
83
  case "top-end":
84
- u = k();
84
+ u = L();
85
85
  break;
86
86
  case "left-start":
87
87
  case "right-start":
88
- v = L();
88
+ v = x();
89
89
  break;
90
90
  case "left-end":
91
91
  case "right-end":
92
- v = U();
92
+ v = j();
93
93
  break;
94
94
  }
95
95
  return { x: u, y: v };
96
96
  };
97
- var se = class {
97
+ var oe = class {
98
98
  /**
99
99
  * Flexilla Popper
100
100
  * @param reference
@@ -113,7 +113,7 @@ var se = class {
113
113
  * @param {boolean} [options.eventEffect.disableOnScroll] - Disable position updates on scroll
114
114
  * @param {Function} [options.onUpdate] - Callback function when position updates
115
115
  */
116
- constructor(e, t, n = {}) {
116
+ constructor(e, t, i = {}) {
117
117
  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
118
  if (!(this.reference instanceof HTMLElement))
119
119
  throw new Error("Invalid HTMLElement for Reference Element");
@@ -128,11 +128,11 @@ 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: H, refLeft: M, refTop: A } = X({ reference: this.reference, popper: this.popper }), { x: k, y: L } = ie(
131
+ const f = window.innerWidth, E = window.innerHeight, { popperHeight: g, popperWidth: w, refHeight: b, refWidth: H, refLeft: M, refTop: C } = J({ reference: this.reference, popper: this.popper }), { x: L, y: x } = re(
132
132
  {
133
133
  placement: this.placement,
134
134
  refWidth: H,
135
- refTop: A,
135
+ refTop: C,
136
136
  refLeft: M,
137
137
  popperWidth: w,
138
138
  refHeight: b,
@@ -142,7 +142,7 @@ var se = class {
142
142
  offsetDistance: this.offsetDistance
143
143
  }
144
144
  );
145
- this.setPopperStyleProperty(k, L), (d = this.onUpdate) == null || d.call(this, { x: k, y: L, placement: this.placement });
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", () => {
@@ -156,15 +156,15 @@ var se = class {
156
156
  });
157
157
  const {
158
158
  offsetDistance: r = 10,
159
- placement: s = V,
159
+ placement: s = Y,
160
160
  eventEffect: o = {},
161
161
  onUpdate: l
162
- } = n;
162
+ } = i;
163
163
  if (!(e instanceof HTMLElement))
164
164
  throw new Error("Invalid HTMLElement for Reference Element");
165
165
  if (!(t instanceof HTMLElement))
166
166
  throw new Error("Invalid HTMLElement for Popper");
167
- if (n.offsetDistance && typeof n.offsetDistance != "number")
167
+ if (i.offsetDistance && typeof i.offsetDistance != "number")
168
168
  throw new Error("OffsetDistance must be a number");
169
169
  const { disableOnResize: m, disableOnScroll: c } = o;
170
170
  this.isWindowEventsRegistered = false, this.reference = e, this.popper = t, this.offsetDistance = r, this.placement = s, this.disableOnResize = m || false, this.disableOnScroll = c || false, this.onUpdate = l;
@@ -180,53 +180,53 @@ var se = class {
180
180
  this.placement = e, this.offsetDistance = t || this.offsetDistance, this.initPlacement(), this.attachWindowEvent();
181
181
  }
182
182
  };
183
- var re = Object.defineProperty;
184
- var oe = (i, e, t) => e in i ? re(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t;
185
- var h = (i, e, t) => oe(i, typeof e != "symbol" ? e + "" : e, t);
186
- var ae = (i, e = document.body) => e.querySelector(i);
187
- var N = (i, e) => {
188
- for (const [t, n] of Object.entries(e))
189
- i.setAttribute(t, n);
183
+ var ae = Object.defineProperty;
184
+ var le = (n, e, t) => e in n ? ae(n, e, { enumerable: true, configurable: true, writable: true, value: t }) : n[e] = t;
185
+ var h = (n, e, t) => le(n, typeof e != "symbol" ? e + "" : e, t);
186
+ var he = (n, e = document.body) => e.querySelector(n);
187
+ var z = (n, e) => {
188
+ for (const [t, i] of Object.entries(e))
189
+ n.setAttribute(t, i);
190
190
  };
191
- var le = ({
192
- element: i,
191
+ var de = ({
192
+ element: n,
193
193
  callback: e,
194
194
  type: t,
195
- keysCheck: n
195
+ keysCheck: i
196
196
  }) => {
197
- const r = getComputedStyle(i), s = r.transition;
198
- if (s !== "none" && s !== "" && !n.includes(s)) {
197
+ const r = getComputedStyle(n), s = r.transition;
198
+ if (s !== "none" && s !== "" && !i.includes(s)) {
199
199
  const o = "transitionend", l = () => {
200
- i.removeEventListener(o, l), e();
200
+ n.removeEventListener(o, l), e();
201
201
  };
202
- i.addEventListener(o, l, { once: true });
202
+ n.addEventListener(o, l, { once: true });
203
203
  } else
204
204
  e();
205
205
  };
206
- var he = ({
207
- element: i,
206
+ var ce = ({
207
+ element: n,
208
208
  callback: e
209
209
  }) => {
210
- le({
211
- element: i,
210
+ de({
211
+ element: n,
212
212
  callback: e,
213
213
  type: "transition",
214
214
  keysCheck: ["all 0s ease 0s", "all"]
215
215
  });
216
216
  };
217
- var de = (i, e, t) => {
218
- const n = new CustomEvent(e, { detail: t });
219
- i.dispatchEvent(n);
217
+ var pe = (n, e, t) => {
218
+ const i = new CustomEvent(e, { detail: t });
219
+ n.dispatchEvent(i);
220
220
  };
221
- var y = ({ state: i, trigger: e, popper: t }) => {
222
- const n = i === "open";
223
- N(t, {
224
- "data-state": i
225
- }), N(e, {
226
- "aria-expanded": `${n}`
221
+ var y = ({ state: n, trigger: e, popper: t }) => {
222
+ const i = n === "open";
223
+ z(t, {
224
+ "data-state": n
225
+ }), z(e, {
226
+ "aria-expanded": `${i}`
227
227
  });
228
228
  };
229
- var ce = class {
229
+ var me = class {
230
230
  /**
231
231
  * Creates an instance of CreateOverlay
232
232
  * @param {Object} params - The initialization parameters
@@ -234,8 +234,8 @@ var ce = class {
234
234
  * @param {string | HTMLElement} params.content - The content element selector or HTMLElement
235
235
  * @param {OverlayOptions} [params.options] - Configuration options for the overlay
236
236
  */
237
- constructor({ trigger: e, content: t, options: n = {} }) {
238
- h(this, "triggerElement"), h(this, "contentElement"), h(this, "triggerStrategy"), h(this, "placement"), h(this, "offsetDistance"), h(this, "preventFromCloseOutside"), h(this, "preventFromCloseInside"), h(this, "options"), h(this, "defaultState"), h(this, "popper"), h(this, "eventEffect"), h(this, "getElement", (s) => typeof s == "string" ? ae(s) : s instanceof HTMLElement ? s : void 0), h(this, "handleDocumentClick", (s) => {
237
+ constructor({ trigger: e, content: t, options: i = {} }) {
238
+ h(this, "triggerElement"), h(this, "contentElement"), h(this, "triggerStrategy"), h(this, "placement"), h(this, "offsetDistance"), h(this, "preventFromCloseOutside"), h(this, "preventFromCloseInside"), h(this, "options"), h(this, "defaultState"), h(this, "popper"), h(this, "eventEffect"), h(this, "getElement", (s) => typeof s == "string" ? he(s) : s instanceof HTMLElement ? s : void 0), h(this, "handleDocumentClick", (s) => {
239
239
  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());
240
240
  }), h(this, "handleKeyDown", (s) => {
241
241
  s.preventDefault(), this.triggerStrategy !== "hover" && s.key === "Escape" && this.contentElement.getAttribute("data-state") === "open" && (this.preventFromCloseOutside || this.hide());
@@ -281,7 +281,7 @@ var ce = class {
281
281
  throw new Error("Trigger element must be a valid HTML element");
282
282
  if (!(this.contentElement instanceof HTMLElement))
283
283
  throw new Error("Content element must be a valid HTML element");
284
- 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 = (r = this.options.popper) == null ? void 0 : r.eventEffect, this.popper = new se(
284
+ 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 || false, this.preventFromCloseInside = this.options.preventCloseFromInside || false, this.defaultState = this.options.defaultState || "close", this.eventEffect = (r = this.options.popper) == null ? void 0 : r.eventEffect, this.popper = new oe(
285
285
  this.triggerElement,
286
286
  this.contentElement,
287
287
  {
@@ -292,39 +292,39 @@ var ce = class {
292
292
  ), this.initInstance();
293
293
  }
294
294
  onToggleState(e) {
295
- var t, n;
296
- (n = (t = this.options).onToggle) == null || n.call(t, { isHidden: e });
295
+ var t, i;
296
+ (i = (t = this.options).onToggle) == null || i.call(t, { isHidden: e });
297
297
  }
298
298
  /**
299
299
  * Shows the overlay
300
300
  * Positions the overlay, adds event listeners, and triggers related callbacks
301
301
  */
302
302
  show() {
303
- var e, t, n, r;
303
+ var e, t, i, r;
304
304
  this.popper.updatePosition(), document.addEventListener("keydown", this.handleKeyDown), document.addEventListener("click", this.handleDocumentClick), (t = (e = this.options).beforeShow) == null || t.call(e), y({
305
305
  state: "open",
306
306
  popper: this.contentElement,
307
307
  trigger: this.triggerElement
308
- }), this.onToggleState(false), (r = (n = this.options).onShow) == null || r.call(n);
308
+ }), this.onToggleState(false), (r = (i = this.options).onShow) == null || r.call(i);
309
309
  }
310
310
  /**
311
311
  * Hides the overlay
312
312
  * Removes event listeners and triggers related callbacks
313
313
  */
314
314
  hide() {
315
- var e, t, n;
315
+ var e, t, i;
316
316
  let r = false;
317
- de(this.contentElement, "before-hide", {
317
+ pe(this.contentElement, "before-hide", {
318
318
  setExitAction: (o) => {
319
319
  r = o;
320
320
  }
321
321
  });
322
- const s = (n = (t = (e = this.options).beforeHide) == null ? void 0 : t.call(e)) == null ? void 0 : n.cancelAction;
322
+ const s = (i = (t = (e = this.options).beforeHide) == null ? void 0 : t.call(e)) == null ? void 0 : i.cancelAction;
323
323
  r || s || (y({
324
324
  state: "close",
325
325
  popper: this.contentElement,
326
326
  trigger: this.triggerElement
327
- }), 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)), he({
327
+ }), 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)), ce({
328
328
  element: this.contentElement,
329
329
  callback: () => {
330
330
  var o, l;
@@ -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 P = (i, e = document.body) => e.querySelector(i);
348
- var O = (i, e = document.body) => Array.from(e.querySelectorAll(i));
349
- var pe = (i) => typeof i == "string" ? P(i) : i;
350
- var me = ({ containerElement: i, targetChildren: e = "a:not([disabled]), button:not([disabled])", direction: t }) => {
351
- let n = false;
352
- const r = pe(i) || document.body, s = typeof e == "string" ? O(e, r) : e, o = (l) => {
347
+ var P = (n, e = document.body) => e.querySelector(n);
348
+ var S = (n, e = document.body) => Array.from(e.querySelectorAll(n));
349
+ var ge = (n) => typeof n == "string" ? P(n) : n;
350
+ var fe = ({ containerElement: n, targetChildren: e = "a:not([disabled]), button:not([disabled])", direction: t }) => {
351
+ let i = false;
352
+ const r = ge(n) || 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;
@@ -383,72 +383,100 @@ var me = ({ containerElement: i, targetChildren: e = "a:not([disabled]), button:
383
383
  };
384
384
  return {
385
385
  make: () => {
386
- n || (document.addEventListener("keydown", o), n = true);
386
+ i || (document.addEventListener("keydown", o), i = true);
387
387
  },
388
388
  destroy: () => {
389
- n && (document.removeEventListener("keydown", o), n = false);
389
+ i && (document.removeEventListener("keydown", o), i = false);
390
390
  }
391
391
  };
392
392
  };
393
- var K = (i, e, t) => {
394
- const n = new CustomEvent(e, { detail: t });
395
- i.dispatchEvent(n);
393
+ var K = (n, e, t) => {
394
+ const i = new CustomEvent(e, { detail: t });
395
+ n.dispatchEvent(i);
396
396
  };
397
- function ge(i, e, t = "move") {
398
- if (!(i instanceof HTMLElement))
397
+ function ue(n) {
398
+ const e = () => {
399
+ document.querySelector(
400
+ "[data-fx-component]:not([data-component-initialized])"
401
+ ) ? requestAnimationFrame(e) : n();
402
+ };
403
+ e();
404
+ }
405
+ var U = "data-fx-teleport-root";
406
+ var F = "data-fx-teleported";
407
+ var ve = {
408
+ append: () => {
409
+ },
410
+ remove: () => {
411
+ },
412
+ restore: () => {
413
+ }
414
+ };
415
+ function Ee(n, e, t = "move") {
416
+ var i;
417
+ if (!(n instanceof HTMLElement))
399
418
  throw new Error("Source element must be an HTMLElement");
400
419
  if (!(e instanceof HTMLElement))
401
420
  throw new Error("Target element must be an HTMLElement");
402
421
  if (!["move", "detachable"].includes(t))
403
422
  throw new Error(`Invalid teleport mode: ${t}. Must be "move" or "detachable".`);
404
- let n = document.createComment("teleporter-placeholder");
405
- const r = i.parentNode;
406
- return r ? r.insertBefore(n, i) : console.warn("Element has no parent; placeholder not inserted."), t === "move" ? (i.parentNode && e.appendChild(i), {
423
+ if ((i = n.parentElement) != null && i.closest(`[${U}]`))
424
+ return ve;
425
+ n.setAttribute(U, "");
426
+ let r = document.createComment("teleporter-placeholder");
427
+ const s = n.parentNode;
428
+ return s && s.insertBefore(r, n), t === "move" ? (n.parentNode && (e.appendChild(n), n.setAttribute(F, "")), {
407
429
  append() {
408
- i.parentNode !== e && e.appendChild(i);
430
+ n.parentNode !== e && (e.appendChild(n), n.setAttribute(F, ""));
409
431
  },
410
432
  remove() {
411
- n != null && n.parentNode && i.parentNode && n.parentNode.insertBefore(i, n);
433
+ r != null && r.parentNode && n.parentNode && r.parentNode.insertBefore(n, r);
412
434
  },
413
435
  restore() {
414
- n != null && n.parentNode && i.parentNode !== r && n.parentNode.insertBefore(i, n);
436
+ r != null && r.parentNode && n.parentNode !== s && r.parentNode.insertBefore(n, r);
415
437
  }
416
- }) : (i.parentNode && e.appendChild(i), {
438
+ }) : (n.parentNode && (e.appendChild(n), n.setAttribute(F, "")), {
417
439
  append() {
418
- e.contains(i) || e.appendChild(i);
440
+ e.contains(n) || e.appendChild(n);
419
441
  },
420
442
  remove() {
421
- i.parentNode && i.remove();
443
+ n.parentNode && n.remove();
422
444
  },
423
445
  restore() {
424
- n != null && n.parentNode && !i.parentNode && n.parentNode.insertBefore(i, n);
446
+ r != null && r.parentNode && !n.parentNode && r.parentNode.insertBefore(n, r);
425
447
  }
426
448
  });
427
449
  }
428
- var T = class {
450
+ var O = class {
429
451
  static initGlobalRegistry() {
430
452
  window.$flexillaInstances || (window.$flexillaInstances = {});
431
453
  }
432
- static register(e, t, n) {
433
- return this.initGlobalRegistry(), window.$flexillaInstances[e] || (window.$flexillaInstances[e] = []), this.getInstance(e, t) || (window.$flexillaInstances[e].push({ element: t, instance: n }), n);
454
+ static register(e, t, i) {
455
+ return this.initGlobalRegistry(), window.$flexillaInstances[e] || (window.$flexillaInstances[e] = []), this.getInstance(e, t) || (window.$flexillaInstances[e].push({ element: t, instance: i }), i);
434
456
  }
435
457
  static getInstance(e, t) {
436
- var n, r;
437
- return this.initGlobalRegistry(), (r = (n = window.$flexillaInstances[e]) == null ? void 0 : n.find(
458
+ var i, r;
459
+ return this.initGlobalRegistry(), (r = (i = window.$flexillaInstances[e]) == null ? void 0 : i.find(
438
460
  (s) => s.element === t
439
461
  )) == null ? void 0 : r.instance;
440
462
  }
441
463
  static removeInstance(e, t) {
442
464
  this.initGlobalRegistry(), window.$flexillaInstances[e] && (window.$flexillaInstances[e] = window.$flexillaInstances[e].filter(
443
- (n) => n.element !== t
465
+ (i) => i.element !== t
444
466
  ));
445
467
  }
468
+ static setup(e) {
469
+ e.setAttribute("data-fx-component", "fx");
470
+ }
471
+ static initialized(e) {
472
+ e.setAttribute("data-component-initialized", "initialized");
473
+ }
446
474
  };
447
- var fe = {
475
+ var we = {
448
476
  teleport: true,
449
477
  teleportMode: "move"
450
478
  };
451
- var S = class S2 {
479
+ var k = class k2 {
452
480
  /**
453
481
  * Creates a new Dropdown instance
454
482
  * @param dropdown - The dropdown content element or selector
@@ -476,9 +504,9 @@ var S = class S2 {
476
504
  t2 === "add" ? (e2.setAttribute("data-current-subtrigger", ""), e2.setAttribute("data-focus", "active")) : (e2.removeAttribute("data-current-subtrigger"), e2.removeAttribute("data-focus"));
477
505
  });
478
506
  a(this, "updateObserverFor", (e2) => {
479
- const t2 = O("[data-dropdown-trigger]", this.contentElement);
480
- for (const n2 of t2)
481
- e2.observe(n2, {
507
+ const t2 = S("[data-dropdown-trigger]", this.contentElement);
508
+ for (const i2 of t2)
509
+ e2.observe(i2, {
482
510
  attributes: true,
483
511
  attributeFilter: ["aria-expanded"]
484
512
  });
@@ -493,17 +521,19 @@ var S = class S2 {
493
521
  this.subtriggerObserver = new MutationObserver((e2) => {
494
522
  for (const t2 of e2)
495
523
  if (t2.type === "attributes" && t2.attributeName === "aria-expanded") {
496
- const n2 = t2.target, r2 = n2.getAttribute("aria-expanded");
497
- this.updateSubtriggerAttr(n2, r2 === "true" ? "add" : "remove");
524
+ const i2 = t2.target, r2 = i2.getAttribute("aria-expanded");
525
+ this.updateSubtriggerAttr(i2, r2 === "true" ? "add" : "remove");
498
526
  }
499
527
  }), this.updateObserverFor(this.subtriggerObserver);
500
528
  });
501
529
  a(this, "onToggle", ({ isHidden: e2 }) => {
502
- var t2, n2;
503
- (n2 = (t2 = this.options).onToggle) == null || n2.call(t2, { isHidden: e2 });
530
+ var t2, i2;
531
+ (i2 = (t2 = this.options).onToggle) == null || i2.call(t2, { isHidden: e2 });
504
532
  });
505
533
  a(this, "moveElOnInit", () => {
506
- this.experimentalOptions.teleport && (this.experimentalOptions.teleportMode === "detachable" ? this.teleporter.remove() : this.teleporter.append());
534
+ this.experimentalOptions.teleport && ue(() => {
535
+ this.experimentalOptions.teleportMode === "detachable" ? this.teleporter.remove() : this.teleporter.append();
536
+ });
507
537
  });
508
538
  a(this, "moveEl", () => {
509
539
  this.experimentalOptions.teleport && this.experimentalOptions.teleportMode === "detachable" && this.teleporter.remove();
@@ -519,14 +549,14 @@ var S = class S2 {
519
549
  });
520
550
  a(this, "showHideOnArrow", (e2) => {
521
551
  e2.preventDefault();
522
- const t2 = e2.key, n2 = document.activeElement;
523
- if (n2 != null && n2.hasAttribute("data-dropdown-trigger"))
552
+ const t2 = e2.key, i2 = document.activeElement;
553
+ if (i2 != null && i2.hasAttribute("data-dropdown-trigger"))
524
554
  switch (t2) {
525
555
  case "ArrowRight":
526
- n2.getAttribute("aria-expanded") !== "true" && (n2.click(), this.updateSubtriggerAttr(n2, "add"));
556
+ i2.getAttribute("aria-expanded") !== "true" && (i2.click(), this.updateSubtriggerAttr(i2, "add"));
527
557
  break;
528
558
  case "ArrowLeft":
529
- n2.getAttribute("aria-expanded") === "true" && (n2.click(), this.updateSubtriggerAttr(n2, "remove"));
559
+ i2.getAttribute("aria-expanded") === "true" && (i2.click(), this.updateSubtriggerAttr(i2, "remove"));
530
560
  break;
531
561
  default:
532
562
  return;
@@ -573,23 +603,24 @@ var S = class S2 {
573
603
  this.keyObserver && this.keyObserver.disconnect(), this.subtriggerObserver && this.subtriggerObserver.disconnect();
574
604
  });
575
605
  a(this, "cleanup", () => {
576
- this.disconnectObserver(), this.OverlayInstance.cleanup(), T.removeInstance("dropdown", this.contentElement);
606
+ this.disconnectObserver(), this.OverlayInstance.cleanup(), O.removeInstance("dropdown", this.contentElement);
577
607
  });
578
- const n = typeof e == "string" ? P(e) : e;
579
- if (!(n instanceof HTMLElement))
608
+ const i = typeof e == "string" ? P(e) : e;
609
+ if (!(i instanceof HTMLElement))
580
610
  throw new Error(
581
611
  "Invalid dropdown content element: Must provide either a valid HTMLElement or a selector string that resolves to an existing HTMLElement"
582
612
  );
583
- if (!n.id)
613
+ if (!i.id)
584
614
  throw new Error("Dropdown content element must have an 'id' attribute for trigger association");
585
- this.contentElement = n;
586
- const r = T.getInstance("dropdown", this.contentElement);
615
+ this.contentElement = i;
616
+ const r = O.getInstance("dropdown", this.contentElement);
587
617
  if (r)
588
618
  return r;
619
+ O.setup(this.contentElement);
589
620
  const s = `[data-dropdown-trigger][data-dropdown-id=${this.contentElement.id}]`;
590
621
  if (this.triggerElement = P(s), !(this.triggerElement instanceof HTMLElement))
591
622
  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({}, fe, t.experimental), this.teleporter = ge(this.contentElement, document.body, this.experimentalOptions.teleportMode), this.OverlayInstance = new ce({
623
+ 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({}, we, t.experimental), this.teleporter = Ee(this.contentElement, document.body, this.experimentalOptions.teleportMode), this.OverlayInstance = new me({
593
624
  trigger: this.triggerElement,
594
625
  content: this.contentElement,
595
626
  options: {
@@ -601,7 +632,7 @@ var S = class S2 {
601
632
  defaultState: this.defaultState,
602
633
  beforeShow: this.beforeShow,
603
634
  beforeHide: () => {
604
- if (O("[data-dropdown-trigger][aria-expanded=true]", this.contentElement).length >= 1)
635
+ if (S("[data-dropdown-trigger][aria-expanded=true]", this.contentElement).length >= 1)
605
636
  return { cancelAction: true };
606
637
  this.beforeHide();
607
638
  },
@@ -612,11 +643,11 @@ var S = class S2 {
612
643
  },
613
644
  popper: this.options.popper
614
645
  }
615
- }), this.moveElOnInit(), this.items = O("a:not([disabled]), button:not([disabled])", this.contentElement), this.navigationKeys = me({
646
+ }), this.moveElOnInit(), this.items = S("a:not([disabled]), button:not([disabled])", this.contentElement), this.navigationKeys = fe({
616
647
  containerElement: this.contentElement,
617
648
  targetChildren: this.items,
618
649
  direction: "up-down"
619
- }), T.register("dropdown", this.contentElement, this);
650
+ }), O.register("dropdown", this.contentElement, this), O.initialized(this.contentElement);
620
651
  }
621
652
  /**
622
653
  * Initializes a single dropdown instance
@@ -625,20 +656,20 @@ var S = class S2 {
625
656
  * @returns A new Dropdown instance
626
657
  */
627
658
  static init(e, t = {}) {
628
- new S2(e, t);
659
+ new k2(e, t);
629
660
  }
630
661
  };
631
- a(S, "autoInit", (e = "[data-fx-dropdown]") => {
632
- const t = O(e);
633
- for (const n of t)
634
- new S(n);
662
+ a(k, "autoInit", (e = "[data-fx-dropdown]") => {
663
+ const t = S(e);
664
+ for (const i of t)
665
+ new k(i);
635
666
  });
636
- var z = S;
667
+ var B = k;
637
668
 
638
669
  // src/index.js
639
670
  function Dropdown(Alpine) {
640
671
  Alpine.directive("dropdown", (el, {}, { cleanup }) => {
641
- const dropdown_ = new z(el);
672
+ const dropdown_ = new B(el);
642
673
  cleanup(() => {
643
674
  dropdown_.cleanup();
644
675
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flexilla/alpine-dropdown",
3
- "version": "0.2.0",
3
+ "version": "0.3.1",
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.3"
63
+ "@flexilla/dropdown": "^2.2.7"
64
64
  },
65
- "gitHead": "869394b528d21d4842486a7396449aa9fbe3cbcb"
65
+ "gitHead": "ae2c044692676906202ec6d8bb7a61a553c3bf74"
66
66
  }