@flexilla/alpine-dropdown 0.3.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.
- package/dist/cdn.js +153 -139
- package/dist/cdn.min.js +1 -1
- package/dist/module.cjs.js +153 -139
- package/dist/module.esm.js +153 -139
- package/package.json +3 -3
package/dist/module.esm.js
CHANGED
|
@@ -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
2
|
var q = Object.defineProperty;
|
|
6
|
-
var G = (
|
|
7
|
-
var
|
|
8
|
-
var V =
|
|
9
|
-
var X = ({
|
|
10
|
-
|
|
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(),
|
|
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
|
|
24
|
-
const r = t, s =
|
|
25
|
-
return r >= (
|
|
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
|
|
28
|
-
var
|
|
29
|
-
var
|
|
30
|
-
var
|
|
31
|
-
var
|
|
32
|
-
const o = r - t - s, l = t -
|
|
33
|
-
return
|
|
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
|
|
36
|
-
var
|
|
37
|
-
var
|
|
38
|
-
placement:
|
|
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:
|
|
41
|
+
refLeft: i,
|
|
42
42
|
refHeight: r,
|
|
43
43
|
popperWidth: s,
|
|
44
44
|
popperHeight: o,
|
|
@@ -46,34 +46,34 @@ var ie = ({
|
|
|
46
46
|
windowWidth: m,
|
|
47
47
|
offsetDistance: c
|
|
48
48
|
}) => {
|
|
49
|
-
const d = m -
|
|
50
|
-
() =>
|
|
51
|
-
() =>
|
|
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 = () =>
|
|
56
|
-
() =>
|
|
57
|
-
() =>
|
|
58
|
-
|
|
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
|
-
),
|
|
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 T = t - o - c,
|
|
65
|
-
switch (
|
|
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":
|
|
69
69
|
case "top-middle":
|
|
70
|
-
u =
|
|
70
|
+
u = H();
|
|
71
71
|
break;
|
|
72
72
|
case "left":
|
|
73
73
|
case "left-middle":
|
|
74
74
|
case "right":
|
|
75
75
|
case "right-middle":
|
|
76
|
-
v =
|
|
76
|
+
v = M();
|
|
77
77
|
break;
|
|
78
78
|
case "bottom-start":
|
|
79
79
|
case "top-start":
|
|
@@ -89,12 +89,12 @@ var ie = ({
|
|
|
89
89
|
break;
|
|
90
90
|
case "left-end":
|
|
91
91
|
case "right-end":
|
|
92
|
-
v =
|
|
92
|
+
v = j();
|
|
93
93
|
break;
|
|
94
94
|
}
|
|
95
95
|
return { x: u, y: v };
|
|
96
96
|
};
|
|
97
|
-
var
|
|
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,
|
|
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,12 +128,12 @@ var se = class {
|
|
|
128
128
|
}), p(this, "initPlacement", () => {
|
|
129
129
|
var d;
|
|
130
130
|
this.validateElements(), this.setInitialStyles();
|
|
131
|
-
const f = window.innerWidth, E = window.innerHeight, { popperHeight: g, popperWidth: w, refHeight: b, refWidth:
|
|
131
|
+
const f = window.innerWidth, E = window.innerHeight, { popperHeight: g, popperWidth: w, refHeight: b, refWidth: 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
|
-
refWidth:
|
|
134
|
+
refWidth: H,
|
|
135
135
|
refTop: C,
|
|
136
|
-
refLeft:
|
|
136
|
+
refLeft: M,
|
|
137
137
|
popperWidth: w,
|
|
138
138
|
refHeight: b,
|
|
139
139
|
popperHeight: g,
|
|
@@ -156,15 +156,15 @@ var se = class {
|
|
|
156
156
|
});
|
|
157
157
|
const {
|
|
158
158
|
offsetDistance: r = 10,
|
|
159
|
-
placement: s =
|
|
159
|
+
placement: s = Y,
|
|
160
160
|
eventEffect: o = {},
|
|
161
161
|
onUpdate: l
|
|
162
|
-
} =
|
|
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 (
|
|
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
|
|
184
|
-
var
|
|
185
|
-
var h = (
|
|
186
|
-
var
|
|
187
|
-
var
|
|
188
|
-
for (const [t,
|
|
189
|
-
|
|
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
|
|
192
|
-
element:
|
|
191
|
+
var de = ({
|
|
192
|
+
element: n,
|
|
193
193
|
callback: e,
|
|
194
194
|
type: t,
|
|
195
|
-
keysCheck:
|
|
195
|
+
keysCheck: i
|
|
196
196
|
}) => {
|
|
197
|
-
const r = getComputedStyle(
|
|
198
|
-
if (s !== "none" && s !== "" && !
|
|
197
|
+
const r = getComputedStyle(n), s = r.transition;
|
|
198
|
+
if (s !== "none" && s !== "" && !i.includes(s)) {
|
|
199
199
|
const o = "transitionend", l = () => {
|
|
200
|
-
|
|
200
|
+
n.removeEventListener(o, l), e();
|
|
201
201
|
};
|
|
202
|
-
|
|
202
|
+
n.addEventListener(o, l, { once: true });
|
|
203
203
|
} else
|
|
204
204
|
e();
|
|
205
205
|
};
|
|
206
|
-
var
|
|
207
|
-
element:
|
|
206
|
+
var ce = ({
|
|
207
|
+
element: n,
|
|
208
208
|
callback: e
|
|
209
209
|
}) => {
|
|
210
|
-
|
|
211
|
-
element:
|
|
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
|
|
218
|
-
const
|
|
219
|
-
|
|
217
|
+
var pe = (n, e, t) => {
|
|
218
|
+
const i = new CustomEvent(e, { detail: t });
|
|
219
|
+
n.dispatchEvent(i);
|
|
220
220
|
};
|
|
221
|
-
var y = ({ state:
|
|
222
|
-
const
|
|
223
|
-
|
|
224
|
-
"data-state":
|
|
225
|
-
}),
|
|
226
|
-
"aria-expanded": `${
|
|
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
|
|
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:
|
|
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" ?
|
|
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 =
|
|
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,
|
|
296
|
-
(
|
|
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,
|
|
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 = (
|
|
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,
|
|
315
|
+
var e, t, i;
|
|
316
316
|
let r = false;
|
|
317
|
-
|
|
317
|
+
pe(this.contentElement, "before-hide", {
|
|
318
318
|
setExitAction: (o) => {
|
|
319
319
|
r = o;
|
|
320
320
|
}
|
|
321
321
|
});
|
|
322
|
-
const s = (
|
|
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)),
|
|
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
|
|
348
|
-
var S = (
|
|
349
|
-
var
|
|
350
|
-
var
|
|
351
|
-
let
|
|
352
|
-
const r =
|
|
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,53 +383,67 @@ var me = ({ containerElement: i, targetChildren: e = "a:not([disabled]), button:
|
|
|
383
383
|
};
|
|
384
384
|
return {
|
|
385
385
|
make: () => {
|
|
386
|
-
|
|
386
|
+
i || (document.addEventListener("keydown", o), i = true);
|
|
387
387
|
},
|
|
388
388
|
destroy: () => {
|
|
389
|
-
|
|
389
|
+
i && (document.removeEventListener("keydown", o), i = false);
|
|
390
390
|
}
|
|
391
391
|
};
|
|
392
392
|
};
|
|
393
|
-
var
|
|
394
|
-
const
|
|
395
|
-
|
|
393
|
+
var K = (n, e, t) => {
|
|
394
|
+
const i = new CustomEvent(e, { detail: t });
|
|
395
|
+
n.dispatchEvent(i);
|
|
396
396
|
};
|
|
397
|
-
function
|
|
397
|
+
function ue(n) {
|
|
398
398
|
const e = () => {
|
|
399
399
|
document.querySelector(
|
|
400
400
|
"[data-fx-component]:not([data-component-initialized])"
|
|
401
|
-
) ? requestAnimationFrame(e) :
|
|
401
|
+
) ? requestAnimationFrame(e) : n();
|
|
402
402
|
};
|
|
403
403
|
e();
|
|
404
404
|
}
|
|
405
|
-
|
|
406
|
-
|
|
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))
|
|
407
418
|
throw new Error("Source element must be an HTMLElement");
|
|
408
419
|
if (!(e instanceof HTMLElement))
|
|
409
420
|
throw new Error("Target element must be an HTMLElement");
|
|
410
421
|
if (!["move", "detachable"].includes(t))
|
|
411
422
|
throw new Error(`Invalid teleport mode: ${t}. Must be "move" or "detachable".`);
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
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, "")), {
|
|
415
429
|
append() {
|
|
416
|
-
|
|
430
|
+
n.parentNode !== e && (e.appendChild(n), n.setAttribute(F, ""));
|
|
417
431
|
},
|
|
418
432
|
remove() {
|
|
419
|
-
|
|
433
|
+
r != null && r.parentNode && n.parentNode && r.parentNode.insertBefore(n, r);
|
|
420
434
|
},
|
|
421
435
|
restore() {
|
|
422
|
-
|
|
436
|
+
r != null && r.parentNode && n.parentNode !== s && r.parentNode.insertBefore(n, r);
|
|
423
437
|
}
|
|
424
|
-
}) : (
|
|
438
|
+
}) : (n.parentNode && (e.appendChild(n), n.setAttribute(F, "")), {
|
|
425
439
|
append() {
|
|
426
|
-
e.contains(
|
|
440
|
+
e.contains(n) || e.appendChild(n);
|
|
427
441
|
},
|
|
428
442
|
remove() {
|
|
429
|
-
|
|
443
|
+
n.parentNode && n.remove();
|
|
430
444
|
},
|
|
431
445
|
restore() {
|
|
432
|
-
|
|
446
|
+
r != null && r.parentNode && !n.parentNode && r.parentNode.insertBefore(n, r);
|
|
433
447
|
}
|
|
434
448
|
});
|
|
435
449
|
}
|
|
@@ -437,18 +451,18 @@ var O = class {
|
|
|
437
451
|
static initGlobalRegistry() {
|
|
438
452
|
window.$flexillaInstances || (window.$flexillaInstances = {});
|
|
439
453
|
}
|
|
440
|
-
static register(e, t,
|
|
441
|
-
return this.initGlobalRegistry(), window.$flexillaInstances[e] || (window.$flexillaInstances[e] = []), this.getInstance(e, t) || (window.$flexillaInstances[e].push({ element: t, instance:
|
|
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);
|
|
442
456
|
}
|
|
443
457
|
static getInstance(e, t) {
|
|
444
|
-
var
|
|
445
|
-
return this.initGlobalRegistry(), (r = (
|
|
458
|
+
var i, r;
|
|
459
|
+
return this.initGlobalRegistry(), (r = (i = window.$flexillaInstances[e]) == null ? void 0 : i.find(
|
|
446
460
|
(s) => s.element === t
|
|
447
461
|
)) == null ? void 0 : r.instance;
|
|
448
462
|
}
|
|
449
463
|
static removeInstance(e, t) {
|
|
450
464
|
this.initGlobalRegistry(), window.$flexillaInstances[e] && (window.$flexillaInstances[e] = window.$flexillaInstances[e].filter(
|
|
451
|
-
(
|
|
465
|
+
(i) => i.element !== t
|
|
452
466
|
));
|
|
453
467
|
}
|
|
454
468
|
static setup(e) {
|
|
@@ -458,7 +472,7 @@ var O = class {
|
|
|
458
472
|
e.setAttribute("data-component-initialized", "initialized");
|
|
459
473
|
}
|
|
460
474
|
};
|
|
461
|
-
var
|
|
475
|
+
var we = {
|
|
462
476
|
teleport: true,
|
|
463
477
|
teleportMode: "move"
|
|
464
478
|
};
|
|
@@ -491,8 +505,8 @@ var k = class k2 {
|
|
|
491
505
|
});
|
|
492
506
|
a(this, "updateObserverFor", (e2) => {
|
|
493
507
|
const t2 = S("[data-dropdown-trigger]", this.contentElement);
|
|
494
|
-
for (const
|
|
495
|
-
e2.observe(
|
|
508
|
+
for (const i2 of t2)
|
|
509
|
+
e2.observe(i2, {
|
|
496
510
|
attributes: true,
|
|
497
511
|
attributeFilter: ["aria-expanded"]
|
|
498
512
|
});
|
|
@@ -507,17 +521,17 @@ var k = class k2 {
|
|
|
507
521
|
this.subtriggerObserver = new MutationObserver((e2) => {
|
|
508
522
|
for (const t2 of e2)
|
|
509
523
|
if (t2.type === "attributes" && t2.attributeName === "aria-expanded") {
|
|
510
|
-
const
|
|
511
|
-
this.updateSubtriggerAttr(
|
|
524
|
+
const i2 = t2.target, r2 = i2.getAttribute("aria-expanded");
|
|
525
|
+
this.updateSubtriggerAttr(i2, r2 === "true" ? "add" : "remove");
|
|
512
526
|
}
|
|
513
527
|
}), this.updateObserverFor(this.subtriggerObserver);
|
|
514
528
|
});
|
|
515
529
|
a(this, "onToggle", ({ isHidden: e2 }) => {
|
|
516
|
-
var t2,
|
|
517
|
-
(
|
|
530
|
+
var t2, i2;
|
|
531
|
+
(i2 = (t2 = this.options).onToggle) == null || i2.call(t2, { isHidden: e2 });
|
|
518
532
|
});
|
|
519
533
|
a(this, "moveElOnInit", () => {
|
|
520
|
-
this.experimentalOptions.teleport &&
|
|
534
|
+
this.experimentalOptions.teleport && ue(() => {
|
|
521
535
|
this.experimentalOptions.teleportMode === "detachable" ? this.teleporter.remove() : this.teleporter.append();
|
|
522
536
|
});
|
|
523
537
|
});
|
|
@@ -535,14 +549,14 @@ var k = class k2 {
|
|
|
535
549
|
});
|
|
536
550
|
a(this, "showHideOnArrow", (e2) => {
|
|
537
551
|
e2.preventDefault();
|
|
538
|
-
const t2 = e2.key,
|
|
539
|
-
if (
|
|
552
|
+
const t2 = e2.key, i2 = document.activeElement;
|
|
553
|
+
if (i2 != null && i2.hasAttribute("data-dropdown-trigger"))
|
|
540
554
|
switch (t2) {
|
|
541
555
|
case "ArrowRight":
|
|
542
|
-
|
|
556
|
+
i2.getAttribute("aria-expanded") !== "true" && (i2.click(), this.updateSubtriggerAttr(i2, "add"));
|
|
543
557
|
break;
|
|
544
558
|
case "ArrowLeft":
|
|
545
|
-
|
|
559
|
+
i2.getAttribute("aria-expanded") === "true" && (i2.click(), this.updateSubtriggerAttr(i2, "remove"));
|
|
546
560
|
break;
|
|
547
561
|
default:
|
|
548
562
|
return;
|
|
@@ -564,13 +578,13 @@ var k = class k2 {
|
|
|
564
578
|
});
|
|
565
579
|
a(this, "onShow", () => {
|
|
566
580
|
var e2, t2;
|
|
567
|
-
|
|
581
|
+
K(this.contentElement, "dropdown-show", {
|
|
568
582
|
isHidden: false
|
|
569
583
|
}), (t2 = (e2 = this.options).onShow) == null || t2.call(e2), this.observeEl(), this.observeSubtriggers();
|
|
570
584
|
});
|
|
571
585
|
a(this, "onHide", () => {
|
|
572
586
|
var e2, t2;
|
|
573
|
-
|
|
587
|
+
K(this.contentElement, "dropdown-hide", {
|
|
574
588
|
isHidden: true
|
|
575
589
|
}), (t2 = (e2 = this.options).onHide) == null || t2.call(e2), this.moveEl(), this.triggerElement.hasAttribute("data-current-subtrigger") && this.updateSubtriggerAttr(this.triggerElement, "remove"), this.disconnectObserver();
|
|
576
590
|
});
|
|
@@ -591,22 +605,22 @@ var k = class k2 {
|
|
|
591
605
|
a(this, "cleanup", () => {
|
|
592
606
|
this.disconnectObserver(), this.OverlayInstance.cleanup(), O.removeInstance("dropdown", this.contentElement);
|
|
593
607
|
});
|
|
594
|
-
const
|
|
595
|
-
if (!(
|
|
608
|
+
const i = typeof e == "string" ? P(e) : e;
|
|
609
|
+
if (!(i instanceof HTMLElement))
|
|
596
610
|
throw new Error(
|
|
597
611
|
"Invalid dropdown content element: Must provide either a valid HTMLElement or a selector string that resolves to an existing HTMLElement"
|
|
598
612
|
);
|
|
599
|
-
if (!
|
|
613
|
+
if (!i.id)
|
|
600
614
|
throw new Error("Dropdown content element must have an 'id' attribute for trigger association");
|
|
601
|
-
this.contentElement =
|
|
615
|
+
this.contentElement = i;
|
|
602
616
|
const r = O.getInstance("dropdown", this.contentElement);
|
|
603
617
|
if (r)
|
|
604
618
|
return r;
|
|
605
619
|
O.setup(this.contentElement);
|
|
606
620
|
const s = `[data-dropdown-trigger][data-dropdown-id=${this.contentElement.id}]`;
|
|
607
|
-
if (this.triggerElement =
|
|
621
|
+
if (this.triggerElement = P(s), !(this.triggerElement instanceof HTMLElement))
|
|
608
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}"`);
|
|
609
|
-
this.options = t, this.triggerStrategy = this.contentElement.dataset.triggerStrategy || this.options.triggerStrategy || "click", this.placement = this.contentElement.dataset.placement || this.options.placement || "bottom-start", this.offsetDistance = parseInt(`${this.contentElement.dataset.offsetDistance}`) || this.options.offsetDistance || 6, this.preventFromCloseOutside = this.contentElement.hasAttribute("data-prevent-close-outside") || this.options.preventFromCloseOutside || false, this.preventFromCloseInside = this.contentElement.hasAttribute("data-prevent-close-inside") || this.options.preventCloseFromInside || false, this.defaultState = this.contentElement.dataset.defaultState || this.options.defaultState || "close", this.experimentalOptions = Object.assign({},
|
|
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({
|
|
610
624
|
trigger: this.triggerElement,
|
|
611
625
|
content: this.contentElement,
|
|
612
626
|
options: {
|
|
@@ -629,7 +643,7 @@ var k = class k2 {
|
|
|
629
643
|
},
|
|
630
644
|
popper: this.options.popper
|
|
631
645
|
}
|
|
632
|
-
}), this.moveElOnInit(), this.items = S("a:not([disabled]), button:not([disabled])", this.contentElement), this.navigationKeys =
|
|
646
|
+
}), this.moveElOnInit(), this.items = S("a:not([disabled]), button:not([disabled])", this.contentElement), this.navigationKeys = fe({
|
|
633
647
|
containerElement: this.contentElement,
|
|
634
648
|
targetChildren: this.items,
|
|
635
649
|
direction: "up-down"
|
|
@@ -647,15 +661,15 @@ var k = class k2 {
|
|
|
647
661
|
};
|
|
648
662
|
a(k, "autoInit", (e = "[data-fx-dropdown]") => {
|
|
649
663
|
const t = S(e);
|
|
650
|
-
for (const
|
|
651
|
-
new k(
|
|
664
|
+
for (const i of t)
|
|
665
|
+
new k(i);
|
|
652
666
|
});
|
|
653
|
-
var
|
|
667
|
+
var B = k;
|
|
654
668
|
|
|
655
669
|
// src/index.js
|
|
656
670
|
function Dropdown(Alpine) {
|
|
657
671
|
Alpine.directive("dropdown", (el, {}, { cleanup }) => {
|
|
658
|
-
const dropdown_ = new
|
|
672
|
+
const dropdown_ = new B(el);
|
|
659
673
|
cleanup(() => {
|
|
660
674
|
dropdown_.cleanup();
|
|
661
675
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flexilla/alpine-dropdown",
|
|
3
|
-
"version": "0.3.
|
|
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.
|
|
63
|
+
"@flexilla/dropdown": "^2.2.7"
|
|
64
64
|
},
|
|
65
|
-
"gitHead": "
|
|
65
|
+
"gitHead": "ae2c044692676906202ec6d8bb7a61a553c3bf74"
|
|
66
66
|
}
|