@flexilla/alpine-dropdown 0.0.0 → 0.0.2
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 +103 -82
- package/dist/cdn.min.js +1 -1
- package/dist/module.cjs.js +103 -82
- package/dist/module.esm.js +103 -82
- package/package.json +3 -3
package/dist/cdn.js
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
// ../../node_modules/@flexilla/dropdown/dist/dropdown.js
|
|
3
3
|
var j = Object.defineProperty;
|
|
4
4
|
var q = (s, e, t) => e in s ? j(s, e, { enumerable: true, configurable: true, writable: true, value: t }) : s[e] = t;
|
|
5
|
-
var
|
|
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
|
|
8
|
+
var l = (s, e, t) => N(s, typeof e != "symbol" ? e + "" : e, t);
|
|
9
9
|
var J = "bottom";
|
|
10
10
|
var Q = ({ reference: s, popper: e }) => {
|
|
11
11
|
if (!s || !e)
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
var ee = (s, e, t, n) => s <= n && t - s <= e;
|
|
34
34
|
var te = (s, e, t, n) => t <= n && -s <= e;
|
|
35
35
|
var ne = (s, e, t, n, o, i) => {
|
|
36
|
-
const r = o - t - i,
|
|
37
|
-
return s() ? 0 : e() ?
|
|
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;
|
|
38
38
|
};
|
|
39
39
|
var se = (s, e, t, n) => s <= t && e - s - n >= s;
|
|
40
40
|
var ie = (s, e) => s >= e;
|
|
@@ -46,27 +46,27 @@
|
|
|
46
46
|
refHeight: o,
|
|
47
47
|
popperWidth: i,
|
|
48
48
|
popperHeight: r,
|
|
49
|
-
windowHeight:
|
|
50
|
-
windowWidth:
|
|
49
|
+
windowHeight: h,
|
|
50
|
+
windowWidth: g,
|
|
51
51
|
offsetDistance: d
|
|
52
52
|
}) => {
|
|
53
|
-
const c =
|
|
54
|
-
() => te(t, o, r,
|
|
55
|
-
() => ee(t, o, r,
|
|
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),
|
|
56
56
|
t,
|
|
57
57
|
o,
|
|
58
58
|
r
|
|
59
59
|
), y = () => ne(
|
|
60
|
-
() => se(n,
|
|
60
|
+
() => se(n, g, i, e),
|
|
61
61
|
() => ie(n, i),
|
|
62
62
|
n,
|
|
63
63
|
i,
|
|
64
|
-
|
|
64
|
+
g,
|
|
65
65
|
e
|
|
66
|
-
), H = () => Y(i, e, n,
|
|
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();
|
|
67
67
|
let u = 0, E = 0;
|
|
68
|
-
const M = t - r - d, k = t + o + 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 ?
|
|
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) {
|
|
70
70
|
case "bottom":
|
|
71
71
|
case "bottom-middle":
|
|
72
72
|
case "top":
|
|
@@ -77,11 +77,11 @@
|
|
|
77
77
|
case "left-middle":
|
|
78
78
|
case "right":
|
|
79
79
|
case "right-middle":
|
|
80
|
-
E =
|
|
80
|
+
E = T();
|
|
81
81
|
break;
|
|
82
82
|
case "bottom-start":
|
|
83
83
|
case "top-start":
|
|
84
|
-
u =
|
|
84
|
+
u = C();
|
|
85
85
|
break;
|
|
86
86
|
case "bottom-end":
|
|
87
87
|
case "top-end":
|
|
@@ -119,9 +119,12 @@
|
|
|
119
119
|
*/
|
|
120
120
|
constructor(e, t, n = {}) {
|
|
121
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", () => {
|
|
122
|
-
if (!(this.reference instanceof HTMLElement))
|
|
123
|
-
|
|
124
|
-
if (
|
|
122
|
+
if (!(this.reference instanceof HTMLElement))
|
|
123
|
+
throw new Error("Invalid HTMLElement for Reference Element");
|
|
124
|
+
if (!(this.popper instanceof HTMLElement))
|
|
125
|
+
throw new Error("Invalid HTMLElement for Popper");
|
|
126
|
+
if (typeof this.offsetDistance != "number")
|
|
127
|
+
throw new Error("OffsetDistance must be a number");
|
|
125
128
|
}), p(this, "setPopperStyleProperty", (c, f) => {
|
|
126
129
|
this.popper.style.setProperty("--fx-popper-placement-x", `${c}px`), this.popper.style.setProperty("--fx-popper-placement-y", `${f}px`);
|
|
127
130
|
}), p(this, "setInitialStyles", () => {
|
|
@@ -129,15 +132,15 @@
|
|
|
129
132
|
}), p(this, "initPlacement", () => {
|
|
130
133
|
var c;
|
|
131
134
|
this.validateElements(), this.setInitialStyles();
|
|
132
|
-
const f = window.innerWidth, v = window.innerHeight, { popperHeight:
|
|
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(
|
|
133
136
|
{
|
|
134
137
|
placement: this.placement,
|
|
135
138
|
refWidth: H,
|
|
136
|
-
refTop:
|
|
137
|
-
refLeft:
|
|
139
|
+
refTop: C,
|
|
140
|
+
refLeft: T,
|
|
138
141
|
popperWidth: w,
|
|
139
142
|
refHeight: y,
|
|
140
|
-
popperHeight:
|
|
143
|
+
popperHeight: m,
|
|
141
144
|
windowHeight: v,
|
|
142
145
|
windowWidth: f,
|
|
143
146
|
offsetDistance: this.offsetDistance
|
|
@@ -159,13 +162,16 @@
|
|
|
159
162
|
offsetDistance: o = 10,
|
|
160
163
|
placement: i = J,
|
|
161
164
|
eventEffect: r = {},
|
|
162
|
-
onUpdate:
|
|
165
|
+
onUpdate: h
|
|
163
166
|
} = n;
|
|
164
|
-
if (!(e instanceof HTMLElement))
|
|
165
|
-
|
|
166
|
-
if (
|
|
167
|
-
|
|
168
|
-
|
|
167
|
+
if (!(e instanceof HTMLElement))
|
|
168
|
+
throw new Error("Invalid HTMLElement for Reference Element");
|
|
169
|
+
if (!(t instanceof HTMLElement))
|
|
170
|
+
throw new Error("Invalid HTMLElement for Popper");
|
|
171
|
+
if (n.offsetDistance && typeof n.offsetDistance != "number")
|
|
172
|
+
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;
|
|
169
175
|
}
|
|
170
176
|
/**
|
|
171
177
|
* Updates popper configuration and recalculates position
|
|
@@ -191,10 +197,10 @@
|
|
|
191
197
|
}) => {
|
|
192
198
|
const o = getComputedStyle(s), i = o.transition;
|
|
193
199
|
if (i !== "none" && i !== "" && !n.includes(i)) {
|
|
194
|
-
const r = "transitionend",
|
|
195
|
-
s.removeEventListener(r,
|
|
200
|
+
const r = "transitionend", h = () => {
|
|
201
|
+
s.removeEventListener(r, h), e();
|
|
196
202
|
};
|
|
197
|
-
s.addEventListener(r,
|
|
203
|
+
s.addEventListener(r, h, { once: true });
|
|
198
204
|
} else
|
|
199
205
|
e();
|
|
200
206
|
};
|
|
@@ -210,10 +216,11 @@
|
|
|
210
216
|
});
|
|
211
217
|
};
|
|
212
218
|
var b = ({ state: s, trigger: e, popper: t }) => {
|
|
219
|
+
const n = s === "open";
|
|
213
220
|
A(t, {
|
|
214
221
|
"data-state": s
|
|
215
222
|
}), A(e, {
|
|
216
|
-
"aria-expanded": `${
|
|
223
|
+
"aria-expanded": `${n}`
|
|
217
224
|
});
|
|
218
225
|
};
|
|
219
226
|
var ce = class {
|
|
@@ -223,48 +230,54 @@
|
|
|
223
230
|
* @param {string | HTMLElement} params.trigger - The trigger element selector or HTMLElement
|
|
224
231
|
* @param {string | HTMLElement} params.content - The content element selector or HTMLElement
|
|
225
232
|
* @param {OverlayOptions} [params.options] - Configuration options for the overlay
|
|
226
|
-
* @throws {Error} When trigger or content elements are invalid
|
|
227
233
|
*/
|
|
228
234
|
constructor({ trigger: e, content: t, options: n = {} }) {
|
|
229
|
-
|
|
235
|
+
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", (i) => typeof i == "string" ? ae(i) : i instanceof HTMLElement ? i : void 0), l(this, "handleDocumentClick", (i) => {
|
|
230
236
|
this.contentElement.getAttribute("data-state") === "open" && (!this.triggerElement.contains(i.target) && !this.preventFromCloseInside && !this.preventFromCloseOutside ? this.hide() : !this.triggerElement.contains(i.target) && !this.contentElement.contains(i.target) && !this.preventFromCloseOutside ? this.hide() : !this.triggerElement.contains(i.target) && !this.contentElement.contains(i.target) && !this.preventFromCloseOutside ? this.hide() : !this.triggerElement.contains(i.target) && this.contentElement.contains(i.target) && !this.preventFromCloseInside && this.hide());
|
|
231
|
-
}),
|
|
237
|
+
}), l(this, "handleKeyDown", (i) => {
|
|
232
238
|
i.preventDefault(), this.triggerStrategy !== "hover" && i.key === "Escape" && this.contentElement.getAttribute("data-state") === "open" && (this.preventFromCloseOutside || this.hide());
|
|
233
|
-
}),
|
|
239
|
+
}), l(this, "toggleStateOnClick", () => {
|
|
234
240
|
(this.contentElement.dataset.state || "close") === "close" ? (this.show(), this.triggerStrategy === "hover" && this.addEventOnMouseEnter()) : this.hide();
|
|
235
|
-
}),
|
|
241
|
+
}), l(this, "hideOnMouseLeaseTrigger", () => {
|
|
236
242
|
setTimeout(() => {
|
|
237
243
|
this.contentElement.matches(":hover") || this.hide();
|
|
238
244
|
}, 150);
|
|
239
|
-
}),
|
|
245
|
+
}), l(this, "hideOnMouseLeave", () => {
|
|
240
246
|
setTimeout(() => {
|
|
241
247
|
this.triggerElement.matches(":hover") || this.hide();
|
|
242
248
|
}, 150);
|
|
243
|
-
}),
|
|
249
|
+
}), l(this, "addEventOnMouseEnter", () => {
|
|
244
250
|
this.triggerElement.addEventListener("mouseleave", this.hideOnMouseLeaseTrigger), this.contentElement.addEventListener("mouseleave", this.hideOnMouseLeave);
|
|
245
|
-
}),
|
|
251
|
+
}), l(this, "showOnMouseEnter", () => {
|
|
246
252
|
this.show(), this.addEventOnMouseEnter();
|
|
247
|
-
}),
|
|
248
|
-
var
|
|
253
|
+
}), l(this, "setShowOptions", ({ placement: i, offsetDistance: r }) => {
|
|
254
|
+
var h, g, d, c;
|
|
249
255
|
this.popper.setOptions({
|
|
250
256
|
placement: i,
|
|
251
257
|
offsetDistance: r
|
|
252
|
-
}), document.addEventListener("keydown", this.handleKeyDown), document.addEventListener("click", this.handleDocumentClick), (
|
|
258
|
+
}), document.addEventListener("keydown", this.handleKeyDown), document.addEventListener("click", this.handleDocumentClick), (g = (h = this.options).beforeShow) == null || g.call(h), b({
|
|
253
259
|
state: "open",
|
|
254
260
|
popper: this.contentElement,
|
|
255
261
|
trigger: this.triggerElement
|
|
256
262
|
}), this.onToggleState(false), (c = (d = this.options).onShow) == null || c.call(d);
|
|
257
|
-
}),
|
|
263
|
+
}), l(this, "setPopperOptions", ({ placement: i, offsetDistance: r }) => {
|
|
258
264
|
this.popper.setOptions({
|
|
259
265
|
placement: i,
|
|
260
|
-
offsetDistance: r
|
|
266
|
+
offsetDistance: r || this.offsetDistance
|
|
261
267
|
});
|
|
262
|
-
}),
|
|
268
|
+
}), l(this, "setPopperTrigger", (i, r) => {
|
|
269
|
+
this.cleanup(), this.popper.setOptions({
|
|
270
|
+
placement: r.placement || this.placement,
|
|
271
|
+
offsetDistance: r.offsetDistance || this.offsetDistance
|
|
272
|
+
}), this.triggerElement = i, this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
|
|
273
|
+
}), l(this, "cleanup", () => {
|
|
263
274
|
this.triggerElement.removeEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.removeEventListener("mouseenter", this.showOnMouseEnter);
|
|
264
275
|
});
|
|
265
276
|
var o;
|
|
266
|
-
if (this.contentElement = this.getElement(t), this.triggerElement = this.getElement(e), !(this.triggerElement instanceof HTMLElement))
|
|
267
|
-
|
|
277
|
+
if (this.contentElement = this.getElement(t), this.triggerElement = this.getElement(e), !(this.triggerElement instanceof HTMLElement))
|
|
278
|
+
throw new Error("Trigger element must be a valid HTML element");
|
|
279
|
+
if (!(this.contentElement instanceof HTMLElement))
|
|
280
|
+
throw new Error("Content element must be a valid HTML element");
|
|
268
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(
|
|
269
282
|
this.triggerElement,
|
|
270
283
|
this.contentElement,
|
|
@@ -326,31 +339,32 @@
|
|
|
326
339
|
var de = (s) => typeof s == "string" ? W(s) : s;
|
|
327
340
|
var pe = ({ containerElement: s, targetChildren: e = "a:not([disabled]), button:not([disabled])", direction: t }) => {
|
|
328
341
|
let n = false;
|
|
329
|
-
const o = de(s) || document.body, i = typeof e == "string" ? U(e, o) : e, r = (
|
|
330
|
-
if (
|
|
331
|
-
|
|
332
|
-
|
|
342
|
+
const o = de(s) || document.body, i = typeof e == "string" ? U(e, o) : e, r = (h) => {
|
|
343
|
+
if (h.preventDefault(), o.focus(), i.length === 0)
|
|
344
|
+
return;
|
|
345
|
+
const g = h.key, d = document.activeElement;
|
|
346
|
+
let c = i.findIndex((m) => m === d);
|
|
333
347
|
if (c === -1) {
|
|
334
|
-
|
|
348
|
+
g === "ArrowUp" || g === "ArrowLeft" ? i[i.length - 1].focus() : i[0].focus();
|
|
335
349
|
return;
|
|
336
350
|
}
|
|
337
|
-
const f = (
|
|
338
|
-
switch (
|
|
351
|
+
const f = (m) => m > 0 ? m - 1 : i.length - 1, v = (m) => m < i.length - 1 ? m + 1 : 0;
|
|
352
|
+
switch (g) {
|
|
339
353
|
case "ArrowDown":
|
|
340
|
-
|
|
354
|
+
h.preventDefault(), c = v(c);
|
|
341
355
|
break;
|
|
342
356
|
case "ArrowRight":
|
|
343
357
|
break;
|
|
344
358
|
case "ArrowUp":
|
|
345
|
-
|
|
359
|
+
h.preventDefault(), c = f(c);
|
|
346
360
|
break;
|
|
347
361
|
case "ArrowLeft":
|
|
348
362
|
break;
|
|
349
363
|
case "Home":
|
|
350
|
-
|
|
364
|
+
h.preventDefault(), c = 0;
|
|
351
365
|
break;
|
|
352
366
|
case "End":
|
|
353
|
-
|
|
367
|
+
h.preventDefault(), c = i.length - 1;
|
|
354
368
|
break;
|
|
355
369
|
default:
|
|
356
370
|
return;
|
|
@@ -397,49 +411,55 @@
|
|
|
397
411
|
* @throws {Error} If provided elements are not valid HTMLElements
|
|
398
412
|
*/
|
|
399
413
|
constructor(e, t = {}) {
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
414
|
+
a(this, "triggerElement");
|
|
415
|
+
a(this, "contentElement");
|
|
416
|
+
a(this, "options");
|
|
417
|
+
a(this, "OverlayInstance");
|
|
418
|
+
a(this, "navigationKeys");
|
|
419
|
+
a(this, "triggerStrategy");
|
|
420
|
+
a(this, "placement");
|
|
421
|
+
a(this, "offsetDistance");
|
|
422
|
+
a(this, "preventFromCloseOutside");
|
|
423
|
+
a(this, "preventFromCloseInside");
|
|
424
|
+
a(this, "defaultState");
|
|
425
|
+
a(this, "onToggle", ({ isHidden: e2 }) => {
|
|
412
426
|
var t2, n2;
|
|
413
427
|
(n2 = (t2 = this.options).onToggle) == null || n2.call(t2, { isHidden: e2 });
|
|
414
428
|
});
|
|
415
|
-
|
|
429
|
+
a(this, "beforeShow", () => {
|
|
416
430
|
this.contentElement.focus(), this.navigationKeys.make();
|
|
417
431
|
});
|
|
418
|
-
|
|
432
|
+
a(this, "beforeHide", () => {
|
|
419
433
|
this.contentElement.blur(), this.navigationKeys.destroy();
|
|
420
434
|
});
|
|
421
|
-
|
|
435
|
+
a(this, "onShow", () => {
|
|
422
436
|
var e2, t2;
|
|
423
437
|
K(this.contentElement, "dropdown-show", {
|
|
424
438
|
isHidden: false
|
|
425
439
|
}), (t2 = (e2 = this.options).onShow) == null || t2.call(e2);
|
|
426
440
|
});
|
|
427
|
-
|
|
441
|
+
a(this, "onHide", () => {
|
|
428
442
|
var e2, t2;
|
|
429
443
|
K(this.contentElement, "dropdown-hide", {
|
|
430
444
|
isHidden: true
|
|
431
445
|
}), (t2 = (e2 = this.options).onHide) == null || t2.call(e2);
|
|
432
446
|
});
|
|
433
|
-
|
|
447
|
+
a(this, "show", () => {
|
|
434
448
|
this.OverlayInstance.show();
|
|
435
449
|
});
|
|
436
|
-
|
|
450
|
+
a(this, "hide", () => {
|
|
437
451
|
this.OverlayInstance.hide();
|
|
438
452
|
});
|
|
439
|
-
|
|
453
|
+
a(this, "setShowOptions", ({ placement: e2, offsetDistance: t2 }) => {
|
|
440
454
|
this.OverlayInstance.setShowOptions({ placement: e2, offsetDistance: t2 });
|
|
441
455
|
});
|
|
442
|
-
|
|
456
|
+
a(this, "setOptions", ({ placement: e2, offsetDistance: t2 }) => {
|
|
457
|
+
this.OverlayInstance.setPopperOptions({ placement: e2, offsetDistance: t2 });
|
|
458
|
+
});
|
|
459
|
+
a(this, "setPopperTrigger", (e2, t2) => {
|
|
460
|
+
this.OverlayInstance.setPopperTrigger(e2, t2);
|
|
461
|
+
});
|
|
462
|
+
a(this, "cleanup", () => {
|
|
443
463
|
this.OverlayInstance.cleanup(), x.removeInstance("dropdown", this.contentElement);
|
|
444
464
|
});
|
|
445
465
|
const n = typeof e == "string" ? W(e) : e;
|
|
@@ -491,9 +511,10 @@
|
|
|
491
511
|
new S2(e, t);
|
|
492
512
|
}
|
|
493
513
|
};
|
|
494
|
-
|
|
514
|
+
a(S, "autoInit", (e = "[data-fx-dropdown]") => {
|
|
495
515
|
const t = U(e);
|
|
496
|
-
for (const n of t)
|
|
516
|
+
for (const n of t)
|
|
517
|
+
new S(n);
|
|
497
518
|
});
|
|
498
519
|
var z = S;
|
|
499
520
|
|
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=r=>(t.has(r)||t.set(r,r.getBoundingClientRect()),t.get(r)),o=i(e),s=i(n);return{popperHeight:o.height,popperWidth:o.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 o=t,s=i-(t+e);return o>=(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,o)=>t>o-i?e()?window.innerHeight-o:t-o: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,o,s)=>{let r=o-t-s,a=t-i,c=t+s-i+(o-t-s),p=r>=0?o-i:a>=0?t-i:t;return n()?0:e()?c:p},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:o,popperWidth:s,popperHeight:r,windowHeight:a,windowWidth:c,offsetDistance:p})=>{let d=c-i-e,f=i,E=a-t-o,g=t,w=()=>ie(()=>oe(t,o,r,a),()=>se(t,o,r,a),t,o,r),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(),C=()=>ne(r,o,t,a)?t+o/2-r/2:w(),T=()=>i+s<=c?i:y(),O=()=>i+e-s>=0?i+e-s:y(),L=()=>t+r<=a?t:w(),N=()=>t+o-r>=0?t+o-r:w(),u=0,v=0,M=t-r-p,D=t+o+p,H=i-s-p,k=i+e+p,R=g>=r+p,$=E>=r+p,A=f>=s+p,K=d>=s+p;switch(n.startsWith("top")?v=R?M:$?D:Math.max(M,D):n.startsWith("bottom")?v=$?D:R?M:Math.max(D):n.startsWith("left")?u=A?H:K?k:Math.max(H,k):n.startsWith("right")&&(u=K?k:A?H:Math.max(k,H)),n){case"bottom":case"bottom-middle":case"top":case"top-middle":u=I();break;case"left":case"left-middle":case"right":case"right-middle":v=C();break;case"bottom-start":case"top-start":u=T();break;case"bottom-end":case"top-end":u=O();break;case"left-start":case"right-start":v=L();break;case"left-end":case"right-end":v=N();break}return{x:u,y:v}},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:C,refTop:T}=Z({reference:this.reference,popper:this.popper}),{x:O,y:L}=he({placement:this.placement,refWidth:I,refTop:T,refLeft:C,popperWidth:w,refHeight:y,popperHeight:g,windowHeight:E,windowWidth:f,offsetDistance:this.offsetDistance});this.setPopperStyleProperty(O,L),(d=this.onUpdate)==null||d.call(this,{x:O,y:L,placement:this.placement})}),m(this,"removeWindowEvents",()=>{this.isWindowEventsRegistered&&(!this.disableOnResize&&window.removeEventListener("resize",this.updatePosition),!this.disableOnScroll&&window.removeEventListener("scroll",this.updatePosition),this.isWindowEventsRegistered=!1)}),m(this,"attachWindowEvent",()=>{this.isWindowEventsRegistered&&this.removeWindowEvents(),this.disableOnResize||window.addEventListener("resize",this.updatePosition),this.disableOnScroll||window.addEventListener("scroll",this.updatePosition),this.isWindowEventsRegistered=!0}),m(this,"resetPosition",()=>{this.setInitialStyles()}),m(this,"updatePosition",()=>{this.initPlacement(),this.attachWindowEvent()}),m(this,"cleanupEvents",()=>{this.setInitialStyles(),this.removeWindowEvents()});let{offsetDistance:o=10,placement:s=Y,eventEffect:r={},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}=r;this.isWindowEventsRegistered=!1,this.reference=e,this.popper=t,this.offsetDistance=o,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()}},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 o=getComputedStyle(n),s=o.transition;if(s!=="none"&&s!==""&&!i.includes(s)){let r="transitionend",a=()=>{n.removeEventListener(r,a),e()};n.addEventListener(r,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})=>{z(t,{"data-state":n}),z(e,{"aria-expanded":`${n}`})},W=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:r})=>{var a,c,p,d;this.popper.setOptions({placement:s,offsetDistance:r}),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:r})=>{this.popper.setOptions({placement:s,offsetDistance:r})}),l(this,"cleanup",()=>{this.triggerElement.removeEventListener("click",this.toggleStateOnClick),this.triggerStrategy==="hover"&&this.triggerElement.removeEventListener("mouseenter",this.showOnMouseEnter)});var o;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=(o=this.options.popper)==null?void 0:o.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,o;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),(o=(i=this.options).onShow)==null||o.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,o;this.onToggleState(!0),this.popper.cleanupEvents(),(o=(i=this.options).onHide)==null||o.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)}},P=(n,e=document.body)=>e.querySelector(n),j=(n,e=document.body)=>Array.from(e.querySelectorAll(n)),me=n=>typeof n=="string"?P(n):n,ge=({containerElement:n,targetChildren:e="a:not([disabled]), button:not([disabled])",direction:t})=>{let i=!1,o=me(n)||document.body,s=typeof e=="string"?j(e,o):e,r=a=>{if(a.preventDefault(),o.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",r),i=!0)},destroy:()=>{i&&(document.removeEventListener("keydown",r),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,o;return this.initGlobalRegistry(),(o=(i=window.$flexillaInstances[e])==null?void 0:i.find(s=>s.element===t))==null?void 0:o.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:r})=>{var a,c;(c=(a=this.options).onToggle)==null||c.call(a,{isHidden:r})}),h(this,"beforeShow",()=>{this.contentElement.focus(),this.navigationKeys.make()}),h(this,"beforeHide",()=>{this.contentElement.blur(),this.navigationKeys.destroy()}),h(this,"onShow",()=>{var r,a;U(this.contentElement,"dropdown-show",{isHidden:!1}),(a=(r=this.options).onShow)==null||a.call(r)}),h(this,"onHide",()=>{var r,a;U(this.contentElement,"dropdown-hide",{isHidden:!0}),(a=(r=this.options).onHide)==null||a.call(r)}),h(this,"show",()=>{this.OverlayInstance.show()}),h(this,"hide",()=>{this.OverlayInstance.hide()}),h(this,"setShowOptions",({placement:r,offsetDistance:a})=>{this.OverlayInstance.setShowOptions({placement:r,offsetDistance:a})}),h(this,"cleanup",()=>{this.OverlayInstance.cleanup(),S.removeInstance("dropdown",this.contentElement)});let i=typeof e=="string"?P(e):e;if(!(i instanceof HTMLElement))throw new Error("Invalid dropdown content element: Must provide either a valid HTMLElement or a selector string that resolves to an existing HTMLElement");if(!i.id)throw new Error("Dropdown content element must have an 'id' attribute for trigger association");this.contentElement=i;let o=S.getInstance("dropdown",this.contentElement);if(o)return o;let s=`[data-dropdown-trigger][data-dropdown-id=${this.contentElement.id}]`;if(this.triggerElement=P(s),!(this.triggerElement instanceof HTMLElement))throw new Error(`No valid trigger element found. Ensure a trigger element exists with attributes: data-dropdown-trigger and data-dropdown-id="${this.contentElement.id}"`);this.options=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 W({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:r})=>{this.onToggle({isHidden:r})},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,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)});})();
|
package/dist/module.cjs.js
CHANGED
|
@@ -26,10 +26,10 @@ module.exports = __toCommonJS(module_exports);
|
|
|
26
26
|
// ../../node_modules/@flexilla/dropdown/dist/dropdown.js
|
|
27
27
|
var j = Object.defineProperty;
|
|
28
28
|
var q = (s, e, t) => e in s ? j(s, e, { enumerable: true, configurable: true, writable: true, value: t }) : s[e] = t;
|
|
29
|
-
var
|
|
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
|
|
32
|
+
var l = (s, e, t) => N(s, typeof e != "symbol" ? e + "" : e, t);
|
|
33
33
|
var J = "bottom";
|
|
34
34
|
var Q = ({ reference: s, popper: e }) => {
|
|
35
35
|
if (!s || !e)
|
|
@@ -57,8 +57,8 @@ var _ = (s, e, t, n, o) => t > o - n ? e() ? window.innerHeight - o : t - o : s(
|
|
|
57
57
|
var ee = (s, e, t, n) => s <= n && t - s <= e;
|
|
58
58
|
var te = (s, e, t, n) => t <= n && -s <= e;
|
|
59
59
|
var ne = (s, e, t, n, o, i) => {
|
|
60
|
-
const r = o - t - i,
|
|
61
|
-
return s() ? 0 : e() ?
|
|
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;
|
|
62
62
|
};
|
|
63
63
|
var se = (s, e, t, n) => s <= t && e - s - n >= s;
|
|
64
64
|
var ie = (s, e) => s >= e;
|
|
@@ -70,27 +70,27 @@ var oe = ({
|
|
|
70
70
|
refHeight: o,
|
|
71
71
|
popperWidth: i,
|
|
72
72
|
popperHeight: r,
|
|
73
|
-
windowHeight:
|
|
74
|
-
windowWidth:
|
|
73
|
+
windowHeight: h,
|
|
74
|
+
windowWidth: g,
|
|
75
75
|
offsetDistance: d
|
|
76
76
|
}) => {
|
|
77
|
-
const c =
|
|
78
|
-
() => te(t, o, r,
|
|
79
|
-
() => ee(t, o, r,
|
|
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),
|
|
80
80
|
t,
|
|
81
81
|
o,
|
|
82
82
|
r
|
|
83
83
|
), y = () => ne(
|
|
84
|
-
() => se(n,
|
|
84
|
+
() => se(n, g, i, e),
|
|
85
85
|
() => ie(n, i),
|
|
86
86
|
n,
|
|
87
87
|
i,
|
|
88
|
-
|
|
88
|
+
g,
|
|
89
89
|
e
|
|
90
|
-
), H = () => Y(i, e, n,
|
|
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();
|
|
91
91
|
let u = 0, E = 0;
|
|
92
|
-
const M = t - r - d, k = t + o + 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 ?
|
|
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) {
|
|
94
94
|
case "bottom":
|
|
95
95
|
case "bottom-middle":
|
|
96
96
|
case "top":
|
|
@@ -101,11 +101,11 @@ var oe = ({
|
|
|
101
101
|
case "left-middle":
|
|
102
102
|
case "right":
|
|
103
103
|
case "right-middle":
|
|
104
|
-
E =
|
|
104
|
+
E = T();
|
|
105
105
|
break;
|
|
106
106
|
case "bottom-start":
|
|
107
107
|
case "top-start":
|
|
108
|
-
u =
|
|
108
|
+
u = C();
|
|
109
109
|
break;
|
|
110
110
|
case "bottom-end":
|
|
111
111
|
case "top-end":
|
|
@@ -143,9 +143,12 @@ var re = class {
|
|
|
143
143
|
*/
|
|
144
144
|
constructor(e, t, n = {}) {
|
|
145
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", () => {
|
|
146
|
-
if (!(this.reference instanceof HTMLElement))
|
|
147
|
-
|
|
148
|
-
if (
|
|
146
|
+
if (!(this.reference instanceof HTMLElement))
|
|
147
|
+
throw new Error("Invalid HTMLElement for Reference Element");
|
|
148
|
+
if (!(this.popper instanceof HTMLElement))
|
|
149
|
+
throw new Error("Invalid HTMLElement for Popper");
|
|
150
|
+
if (typeof this.offsetDistance != "number")
|
|
151
|
+
throw new Error("OffsetDistance must be a number");
|
|
149
152
|
}), p(this, "setPopperStyleProperty", (c, f) => {
|
|
150
153
|
this.popper.style.setProperty("--fx-popper-placement-x", `${c}px`), this.popper.style.setProperty("--fx-popper-placement-y", `${f}px`);
|
|
151
154
|
}), p(this, "setInitialStyles", () => {
|
|
@@ -153,15 +156,15 @@ var re = class {
|
|
|
153
156
|
}), p(this, "initPlacement", () => {
|
|
154
157
|
var c;
|
|
155
158
|
this.validateElements(), this.setInitialStyles();
|
|
156
|
-
const f = window.innerWidth, v = window.innerHeight, { popperHeight:
|
|
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(
|
|
157
160
|
{
|
|
158
161
|
placement: this.placement,
|
|
159
162
|
refWidth: H,
|
|
160
|
-
refTop:
|
|
161
|
-
refLeft:
|
|
163
|
+
refTop: C,
|
|
164
|
+
refLeft: T,
|
|
162
165
|
popperWidth: w,
|
|
163
166
|
refHeight: y,
|
|
164
|
-
popperHeight:
|
|
167
|
+
popperHeight: m,
|
|
165
168
|
windowHeight: v,
|
|
166
169
|
windowWidth: f,
|
|
167
170
|
offsetDistance: this.offsetDistance
|
|
@@ -183,13 +186,16 @@ var re = class {
|
|
|
183
186
|
offsetDistance: o = 10,
|
|
184
187
|
placement: i = J,
|
|
185
188
|
eventEffect: r = {},
|
|
186
|
-
onUpdate:
|
|
189
|
+
onUpdate: h
|
|
187
190
|
} = n;
|
|
188
|
-
if (!(e instanceof HTMLElement))
|
|
189
|
-
|
|
190
|
-
if (
|
|
191
|
-
|
|
192
|
-
|
|
191
|
+
if (!(e instanceof HTMLElement))
|
|
192
|
+
throw new Error("Invalid HTMLElement for Reference Element");
|
|
193
|
+
if (!(t instanceof HTMLElement))
|
|
194
|
+
throw new Error("Invalid HTMLElement for Popper");
|
|
195
|
+
if (n.offsetDistance && typeof n.offsetDistance != "number")
|
|
196
|
+
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;
|
|
193
199
|
}
|
|
194
200
|
/**
|
|
195
201
|
* Updates popper configuration and recalculates position
|
|
@@ -215,10 +221,10 @@ var le = ({
|
|
|
215
221
|
}) => {
|
|
216
222
|
const o = getComputedStyle(s), i = o.transition;
|
|
217
223
|
if (i !== "none" && i !== "" && !n.includes(i)) {
|
|
218
|
-
const r = "transitionend",
|
|
219
|
-
s.removeEventListener(r,
|
|
224
|
+
const r = "transitionend", h = () => {
|
|
225
|
+
s.removeEventListener(r, h), e();
|
|
220
226
|
};
|
|
221
|
-
s.addEventListener(r,
|
|
227
|
+
s.addEventListener(r, h, { once: true });
|
|
222
228
|
} else
|
|
223
229
|
e();
|
|
224
230
|
};
|
|
@@ -234,10 +240,11 @@ var he = ({
|
|
|
234
240
|
});
|
|
235
241
|
};
|
|
236
242
|
var b = ({ state: s, trigger: e, popper: t }) => {
|
|
243
|
+
const n = s === "open";
|
|
237
244
|
A(t, {
|
|
238
245
|
"data-state": s
|
|
239
246
|
}), A(e, {
|
|
240
|
-
"aria-expanded": `${
|
|
247
|
+
"aria-expanded": `${n}`
|
|
241
248
|
});
|
|
242
249
|
};
|
|
243
250
|
var ce = class {
|
|
@@ -247,48 +254,54 @@ var ce = class {
|
|
|
247
254
|
* @param {string | HTMLElement} params.trigger - The trigger element selector or HTMLElement
|
|
248
255
|
* @param {string | HTMLElement} params.content - The content element selector or HTMLElement
|
|
249
256
|
* @param {OverlayOptions} [params.options] - Configuration options for the overlay
|
|
250
|
-
* @throws {Error} When trigger or content elements are invalid
|
|
251
257
|
*/
|
|
252
258
|
constructor({ trigger: e, content: t, options: n = {} }) {
|
|
253
|
-
|
|
259
|
+
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", (i) => typeof i == "string" ? ae(i) : i instanceof HTMLElement ? i : void 0), l(this, "handleDocumentClick", (i) => {
|
|
254
260
|
this.contentElement.getAttribute("data-state") === "open" && (!this.triggerElement.contains(i.target) && !this.preventFromCloseInside && !this.preventFromCloseOutside ? this.hide() : !this.triggerElement.contains(i.target) && !this.contentElement.contains(i.target) && !this.preventFromCloseOutside ? this.hide() : !this.triggerElement.contains(i.target) && !this.contentElement.contains(i.target) && !this.preventFromCloseOutside ? this.hide() : !this.triggerElement.contains(i.target) && this.contentElement.contains(i.target) && !this.preventFromCloseInside && this.hide());
|
|
255
|
-
}),
|
|
261
|
+
}), l(this, "handleKeyDown", (i) => {
|
|
256
262
|
i.preventDefault(), this.triggerStrategy !== "hover" && i.key === "Escape" && this.contentElement.getAttribute("data-state") === "open" && (this.preventFromCloseOutside || this.hide());
|
|
257
|
-
}),
|
|
263
|
+
}), l(this, "toggleStateOnClick", () => {
|
|
258
264
|
(this.contentElement.dataset.state || "close") === "close" ? (this.show(), this.triggerStrategy === "hover" && this.addEventOnMouseEnter()) : this.hide();
|
|
259
|
-
}),
|
|
265
|
+
}), l(this, "hideOnMouseLeaseTrigger", () => {
|
|
260
266
|
setTimeout(() => {
|
|
261
267
|
this.contentElement.matches(":hover") || this.hide();
|
|
262
268
|
}, 150);
|
|
263
|
-
}),
|
|
269
|
+
}), l(this, "hideOnMouseLeave", () => {
|
|
264
270
|
setTimeout(() => {
|
|
265
271
|
this.triggerElement.matches(":hover") || this.hide();
|
|
266
272
|
}, 150);
|
|
267
|
-
}),
|
|
273
|
+
}), l(this, "addEventOnMouseEnter", () => {
|
|
268
274
|
this.triggerElement.addEventListener("mouseleave", this.hideOnMouseLeaseTrigger), this.contentElement.addEventListener("mouseleave", this.hideOnMouseLeave);
|
|
269
|
-
}),
|
|
275
|
+
}), l(this, "showOnMouseEnter", () => {
|
|
270
276
|
this.show(), this.addEventOnMouseEnter();
|
|
271
|
-
}),
|
|
272
|
-
var
|
|
277
|
+
}), l(this, "setShowOptions", ({ placement: i, offsetDistance: r }) => {
|
|
278
|
+
var h, g, d, c;
|
|
273
279
|
this.popper.setOptions({
|
|
274
280
|
placement: i,
|
|
275
281
|
offsetDistance: r
|
|
276
|
-
}), document.addEventListener("keydown", this.handleKeyDown), document.addEventListener("click", this.handleDocumentClick), (
|
|
282
|
+
}), document.addEventListener("keydown", this.handleKeyDown), document.addEventListener("click", this.handleDocumentClick), (g = (h = this.options).beforeShow) == null || g.call(h), b({
|
|
277
283
|
state: "open",
|
|
278
284
|
popper: this.contentElement,
|
|
279
285
|
trigger: this.triggerElement
|
|
280
286
|
}), this.onToggleState(false), (c = (d = this.options).onShow) == null || c.call(d);
|
|
281
|
-
}),
|
|
287
|
+
}), l(this, "setPopperOptions", ({ placement: i, offsetDistance: r }) => {
|
|
282
288
|
this.popper.setOptions({
|
|
283
289
|
placement: i,
|
|
284
|
-
offsetDistance: r
|
|
290
|
+
offsetDistance: r || this.offsetDistance
|
|
285
291
|
});
|
|
286
|
-
}),
|
|
292
|
+
}), l(this, "setPopperTrigger", (i, r) => {
|
|
293
|
+
this.cleanup(), this.popper.setOptions({
|
|
294
|
+
placement: r.placement || this.placement,
|
|
295
|
+
offsetDistance: r.offsetDistance || this.offsetDistance
|
|
296
|
+
}), this.triggerElement = i, this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
|
|
297
|
+
}), l(this, "cleanup", () => {
|
|
287
298
|
this.triggerElement.removeEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.removeEventListener("mouseenter", this.showOnMouseEnter);
|
|
288
299
|
});
|
|
289
300
|
var o;
|
|
290
|
-
if (this.contentElement = this.getElement(t), this.triggerElement = this.getElement(e), !(this.triggerElement instanceof HTMLElement))
|
|
291
|
-
|
|
301
|
+
if (this.contentElement = this.getElement(t), this.triggerElement = this.getElement(e), !(this.triggerElement instanceof HTMLElement))
|
|
302
|
+
throw new Error("Trigger element must be a valid HTML element");
|
|
303
|
+
if (!(this.contentElement instanceof HTMLElement))
|
|
304
|
+
throw new Error("Content element must be a valid HTML element");
|
|
292
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(
|
|
293
306
|
this.triggerElement,
|
|
294
307
|
this.contentElement,
|
|
@@ -350,31 +363,32 @@ var U = (s, e = document.body) => Array.from(e.querySelectorAll(s));
|
|
|
350
363
|
var de = (s) => typeof s == "string" ? W(s) : s;
|
|
351
364
|
var pe = ({ containerElement: s, targetChildren: e = "a:not([disabled]), button:not([disabled])", direction: t }) => {
|
|
352
365
|
let n = false;
|
|
353
|
-
const o = de(s) || document.body, i = typeof e == "string" ? U(e, o) : e, r = (
|
|
354
|
-
if (
|
|
355
|
-
|
|
356
|
-
|
|
366
|
+
const o = de(s) || document.body, i = typeof e == "string" ? U(e, o) : e, r = (h) => {
|
|
367
|
+
if (h.preventDefault(), o.focus(), i.length === 0)
|
|
368
|
+
return;
|
|
369
|
+
const g = h.key, d = document.activeElement;
|
|
370
|
+
let c = i.findIndex((m) => m === d);
|
|
357
371
|
if (c === -1) {
|
|
358
|
-
|
|
372
|
+
g === "ArrowUp" || g === "ArrowLeft" ? i[i.length - 1].focus() : i[0].focus();
|
|
359
373
|
return;
|
|
360
374
|
}
|
|
361
|
-
const f = (
|
|
362
|
-
switch (
|
|
375
|
+
const f = (m) => m > 0 ? m - 1 : i.length - 1, v = (m) => m < i.length - 1 ? m + 1 : 0;
|
|
376
|
+
switch (g) {
|
|
363
377
|
case "ArrowDown":
|
|
364
|
-
|
|
378
|
+
h.preventDefault(), c = v(c);
|
|
365
379
|
break;
|
|
366
380
|
case "ArrowRight":
|
|
367
381
|
break;
|
|
368
382
|
case "ArrowUp":
|
|
369
|
-
|
|
383
|
+
h.preventDefault(), c = f(c);
|
|
370
384
|
break;
|
|
371
385
|
case "ArrowLeft":
|
|
372
386
|
break;
|
|
373
387
|
case "Home":
|
|
374
|
-
|
|
388
|
+
h.preventDefault(), c = 0;
|
|
375
389
|
break;
|
|
376
390
|
case "End":
|
|
377
|
-
|
|
391
|
+
h.preventDefault(), c = i.length - 1;
|
|
378
392
|
break;
|
|
379
393
|
default:
|
|
380
394
|
return;
|
|
@@ -421,49 +435,55 @@ var S = class S2 {
|
|
|
421
435
|
* @throws {Error} If provided elements are not valid HTMLElements
|
|
422
436
|
*/
|
|
423
437
|
constructor(e, t = {}) {
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
438
|
+
a(this, "triggerElement");
|
|
439
|
+
a(this, "contentElement");
|
|
440
|
+
a(this, "options");
|
|
441
|
+
a(this, "OverlayInstance");
|
|
442
|
+
a(this, "navigationKeys");
|
|
443
|
+
a(this, "triggerStrategy");
|
|
444
|
+
a(this, "placement");
|
|
445
|
+
a(this, "offsetDistance");
|
|
446
|
+
a(this, "preventFromCloseOutside");
|
|
447
|
+
a(this, "preventFromCloseInside");
|
|
448
|
+
a(this, "defaultState");
|
|
449
|
+
a(this, "onToggle", ({ isHidden: e2 }) => {
|
|
436
450
|
var t2, n2;
|
|
437
451
|
(n2 = (t2 = this.options).onToggle) == null || n2.call(t2, { isHidden: e2 });
|
|
438
452
|
});
|
|
439
|
-
|
|
453
|
+
a(this, "beforeShow", () => {
|
|
440
454
|
this.contentElement.focus(), this.navigationKeys.make();
|
|
441
455
|
});
|
|
442
|
-
|
|
456
|
+
a(this, "beforeHide", () => {
|
|
443
457
|
this.contentElement.blur(), this.navigationKeys.destroy();
|
|
444
458
|
});
|
|
445
|
-
|
|
459
|
+
a(this, "onShow", () => {
|
|
446
460
|
var e2, t2;
|
|
447
461
|
K(this.contentElement, "dropdown-show", {
|
|
448
462
|
isHidden: false
|
|
449
463
|
}), (t2 = (e2 = this.options).onShow) == null || t2.call(e2);
|
|
450
464
|
});
|
|
451
|
-
|
|
465
|
+
a(this, "onHide", () => {
|
|
452
466
|
var e2, t2;
|
|
453
467
|
K(this.contentElement, "dropdown-hide", {
|
|
454
468
|
isHidden: true
|
|
455
469
|
}), (t2 = (e2 = this.options).onHide) == null || t2.call(e2);
|
|
456
470
|
});
|
|
457
|
-
|
|
471
|
+
a(this, "show", () => {
|
|
458
472
|
this.OverlayInstance.show();
|
|
459
473
|
});
|
|
460
|
-
|
|
474
|
+
a(this, "hide", () => {
|
|
461
475
|
this.OverlayInstance.hide();
|
|
462
476
|
});
|
|
463
|
-
|
|
477
|
+
a(this, "setShowOptions", ({ placement: e2, offsetDistance: t2 }) => {
|
|
464
478
|
this.OverlayInstance.setShowOptions({ placement: e2, offsetDistance: t2 });
|
|
465
479
|
});
|
|
466
|
-
|
|
480
|
+
a(this, "setOptions", ({ placement: e2, offsetDistance: t2 }) => {
|
|
481
|
+
this.OverlayInstance.setPopperOptions({ placement: e2, offsetDistance: t2 });
|
|
482
|
+
});
|
|
483
|
+
a(this, "setPopperTrigger", (e2, t2) => {
|
|
484
|
+
this.OverlayInstance.setPopperTrigger(e2, t2);
|
|
485
|
+
});
|
|
486
|
+
a(this, "cleanup", () => {
|
|
467
487
|
this.OverlayInstance.cleanup(), x.removeInstance("dropdown", this.contentElement);
|
|
468
488
|
});
|
|
469
489
|
const n = typeof e == "string" ? W(e) : e;
|
|
@@ -515,9 +535,10 @@ var S = class S2 {
|
|
|
515
535
|
new S2(e, t);
|
|
516
536
|
}
|
|
517
537
|
};
|
|
518
|
-
|
|
538
|
+
a(S, "autoInit", (e = "[data-fx-dropdown]") => {
|
|
519
539
|
const t = U(e);
|
|
520
|
-
for (const n of t)
|
|
540
|
+
for (const n of t)
|
|
541
|
+
new S(n);
|
|
521
542
|
});
|
|
522
543
|
var z = S;
|
|
523
544
|
|
package/dist/module.esm.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// ../../node_modules/@flexilla/dropdown/dist/dropdown.js
|
|
2
2
|
var j = Object.defineProperty;
|
|
3
3
|
var q = (s, e, t) => e in s ? j(s, e, { enumerable: true, configurable: true, writable: true, value: t }) : s[e] = t;
|
|
4
|
-
var
|
|
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
|
|
7
|
+
var l = (s, e, t) => N(s, typeof e != "symbol" ? e + "" : e, t);
|
|
8
8
|
var J = "bottom";
|
|
9
9
|
var Q = ({ reference: s, popper: e }) => {
|
|
10
10
|
if (!s || !e)
|
|
@@ -32,8 +32,8 @@ var _ = (s, e, t, n, o) => t > o - n ? e() ? window.innerHeight - o : t - o : s(
|
|
|
32
32
|
var ee = (s, e, t, n) => s <= n && t - s <= e;
|
|
33
33
|
var te = (s, e, t, n) => t <= n && -s <= e;
|
|
34
34
|
var ne = (s, e, t, n, o, i) => {
|
|
35
|
-
const r = o - t - i,
|
|
36
|
-
return s() ? 0 : e() ?
|
|
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;
|
|
37
37
|
};
|
|
38
38
|
var se = (s, e, t, n) => s <= t && e - s - n >= s;
|
|
39
39
|
var ie = (s, e) => s >= e;
|
|
@@ -45,27 +45,27 @@ var oe = ({
|
|
|
45
45
|
refHeight: o,
|
|
46
46
|
popperWidth: i,
|
|
47
47
|
popperHeight: r,
|
|
48
|
-
windowHeight:
|
|
49
|
-
windowWidth:
|
|
48
|
+
windowHeight: h,
|
|
49
|
+
windowWidth: g,
|
|
50
50
|
offsetDistance: d
|
|
51
51
|
}) => {
|
|
52
|
-
const c =
|
|
53
|
-
() => te(t, o, r,
|
|
54
|
-
() => ee(t, o, r,
|
|
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),
|
|
55
55
|
t,
|
|
56
56
|
o,
|
|
57
57
|
r
|
|
58
58
|
), y = () => ne(
|
|
59
|
-
() => se(n,
|
|
59
|
+
() => se(n, g, i, e),
|
|
60
60
|
() => ie(n, i),
|
|
61
61
|
n,
|
|
62
62
|
i,
|
|
63
|
-
|
|
63
|
+
g,
|
|
64
64
|
e
|
|
65
|
-
), H = () => Y(i, e, n,
|
|
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();
|
|
66
66
|
let u = 0, E = 0;
|
|
67
|
-
const M = t - r - d, k = t + o + 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 ?
|
|
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) {
|
|
69
69
|
case "bottom":
|
|
70
70
|
case "bottom-middle":
|
|
71
71
|
case "top":
|
|
@@ -76,11 +76,11 @@ var oe = ({
|
|
|
76
76
|
case "left-middle":
|
|
77
77
|
case "right":
|
|
78
78
|
case "right-middle":
|
|
79
|
-
E =
|
|
79
|
+
E = T();
|
|
80
80
|
break;
|
|
81
81
|
case "bottom-start":
|
|
82
82
|
case "top-start":
|
|
83
|
-
u =
|
|
83
|
+
u = C();
|
|
84
84
|
break;
|
|
85
85
|
case "bottom-end":
|
|
86
86
|
case "top-end":
|
|
@@ -118,9 +118,12 @@ var re = class {
|
|
|
118
118
|
*/
|
|
119
119
|
constructor(e, t, n = {}) {
|
|
120
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", () => {
|
|
121
|
-
if (!(this.reference instanceof HTMLElement))
|
|
122
|
-
|
|
123
|
-
if (
|
|
121
|
+
if (!(this.reference instanceof HTMLElement))
|
|
122
|
+
throw new Error("Invalid HTMLElement for Reference Element");
|
|
123
|
+
if (!(this.popper instanceof HTMLElement))
|
|
124
|
+
throw new Error("Invalid HTMLElement for Popper");
|
|
125
|
+
if (typeof this.offsetDistance != "number")
|
|
126
|
+
throw new Error("OffsetDistance must be a number");
|
|
124
127
|
}), p(this, "setPopperStyleProperty", (c, f) => {
|
|
125
128
|
this.popper.style.setProperty("--fx-popper-placement-x", `${c}px`), this.popper.style.setProperty("--fx-popper-placement-y", `${f}px`);
|
|
126
129
|
}), p(this, "setInitialStyles", () => {
|
|
@@ -128,15 +131,15 @@ var re = class {
|
|
|
128
131
|
}), p(this, "initPlacement", () => {
|
|
129
132
|
var c;
|
|
130
133
|
this.validateElements(), this.setInitialStyles();
|
|
131
|
-
const f = window.innerWidth, v = window.innerHeight, { popperHeight:
|
|
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(
|
|
132
135
|
{
|
|
133
136
|
placement: this.placement,
|
|
134
137
|
refWidth: H,
|
|
135
|
-
refTop:
|
|
136
|
-
refLeft:
|
|
138
|
+
refTop: C,
|
|
139
|
+
refLeft: T,
|
|
137
140
|
popperWidth: w,
|
|
138
141
|
refHeight: y,
|
|
139
|
-
popperHeight:
|
|
142
|
+
popperHeight: m,
|
|
140
143
|
windowHeight: v,
|
|
141
144
|
windowWidth: f,
|
|
142
145
|
offsetDistance: this.offsetDistance
|
|
@@ -158,13 +161,16 @@ var re = class {
|
|
|
158
161
|
offsetDistance: o = 10,
|
|
159
162
|
placement: i = J,
|
|
160
163
|
eventEffect: r = {},
|
|
161
|
-
onUpdate:
|
|
164
|
+
onUpdate: h
|
|
162
165
|
} = n;
|
|
163
|
-
if (!(e instanceof HTMLElement))
|
|
164
|
-
|
|
165
|
-
if (
|
|
166
|
-
|
|
167
|
-
|
|
166
|
+
if (!(e instanceof HTMLElement))
|
|
167
|
+
throw new Error("Invalid HTMLElement for Reference Element");
|
|
168
|
+
if (!(t instanceof HTMLElement))
|
|
169
|
+
throw new Error("Invalid HTMLElement for Popper");
|
|
170
|
+
if (n.offsetDistance && typeof n.offsetDistance != "number")
|
|
171
|
+
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;
|
|
168
174
|
}
|
|
169
175
|
/**
|
|
170
176
|
* Updates popper configuration and recalculates position
|
|
@@ -190,10 +196,10 @@ var le = ({
|
|
|
190
196
|
}) => {
|
|
191
197
|
const o = getComputedStyle(s), i = o.transition;
|
|
192
198
|
if (i !== "none" && i !== "" && !n.includes(i)) {
|
|
193
|
-
const r = "transitionend",
|
|
194
|
-
s.removeEventListener(r,
|
|
199
|
+
const r = "transitionend", h = () => {
|
|
200
|
+
s.removeEventListener(r, h), e();
|
|
195
201
|
};
|
|
196
|
-
s.addEventListener(r,
|
|
202
|
+
s.addEventListener(r, h, { once: true });
|
|
197
203
|
} else
|
|
198
204
|
e();
|
|
199
205
|
};
|
|
@@ -209,10 +215,11 @@ var he = ({
|
|
|
209
215
|
});
|
|
210
216
|
};
|
|
211
217
|
var b = ({ state: s, trigger: e, popper: t }) => {
|
|
218
|
+
const n = s === "open";
|
|
212
219
|
A(t, {
|
|
213
220
|
"data-state": s
|
|
214
221
|
}), A(e, {
|
|
215
|
-
"aria-expanded": `${
|
|
222
|
+
"aria-expanded": `${n}`
|
|
216
223
|
});
|
|
217
224
|
};
|
|
218
225
|
var ce = class {
|
|
@@ -222,48 +229,54 @@ var ce = class {
|
|
|
222
229
|
* @param {string | HTMLElement} params.trigger - The trigger element selector or HTMLElement
|
|
223
230
|
* @param {string | HTMLElement} params.content - The content element selector or HTMLElement
|
|
224
231
|
* @param {OverlayOptions} [params.options] - Configuration options for the overlay
|
|
225
|
-
* @throws {Error} When trigger or content elements are invalid
|
|
226
232
|
*/
|
|
227
233
|
constructor({ trigger: e, content: t, options: n = {} }) {
|
|
228
|
-
|
|
234
|
+
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", (i) => typeof i == "string" ? ae(i) : i instanceof HTMLElement ? i : void 0), l(this, "handleDocumentClick", (i) => {
|
|
229
235
|
this.contentElement.getAttribute("data-state") === "open" && (!this.triggerElement.contains(i.target) && !this.preventFromCloseInside && !this.preventFromCloseOutside ? this.hide() : !this.triggerElement.contains(i.target) && !this.contentElement.contains(i.target) && !this.preventFromCloseOutside ? this.hide() : !this.triggerElement.contains(i.target) && !this.contentElement.contains(i.target) && !this.preventFromCloseOutside ? this.hide() : !this.triggerElement.contains(i.target) && this.contentElement.contains(i.target) && !this.preventFromCloseInside && this.hide());
|
|
230
|
-
}),
|
|
236
|
+
}), l(this, "handleKeyDown", (i) => {
|
|
231
237
|
i.preventDefault(), this.triggerStrategy !== "hover" && i.key === "Escape" && this.contentElement.getAttribute("data-state") === "open" && (this.preventFromCloseOutside || this.hide());
|
|
232
|
-
}),
|
|
238
|
+
}), l(this, "toggleStateOnClick", () => {
|
|
233
239
|
(this.contentElement.dataset.state || "close") === "close" ? (this.show(), this.triggerStrategy === "hover" && this.addEventOnMouseEnter()) : this.hide();
|
|
234
|
-
}),
|
|
240
|
+
}), l(this, "hideOnMouseLeaseTrigger", () => {
|
|
235
241
|
setTimeout(() => {
|
|
236
242
|
this.contentElement.matches(":hover") || this.hide();
|
|
237
243
|
}, 150);
|
|
238
|
-
}),
|
|
244
|
+
}), l(this, "hideOnMouseLeave", () => {
|
|
239
245
|
setTimeout(() => {
|
|
240
246
|
this.triggerElement.matches(":hover") || this.hide();
|
|
241
247
|
}, 150);
|
|
242
|
-
}),
|
|
248
|
+
}), l(this, "addEventOnMouseEnter", () => {
|
|
243
249
|
this.triggerElement.addEventListener("mouseleave", this.hideOnMouseLeaseTrigger), this.contentElement.addEventListener("mouseleave", this.hideOnMouseLeave);
|
|
244
|
-
}),
|
|
250
|
+
}), l(this, "showOnMouseEnter", () => {
|
|
245
251
|
this.show(), this.addEventOnMouseEnter();
|
|
246
|
-
}),
|
|
247
|
-
var
|
|
252
|
+
}), l(this, "setShowOptions", ({ placement: i, offsetDistance: r }) => {
|
|
253
|
+
var h, g, d, c;
|
|
248
254
|
this.popper.setOptions({
|
|
249
255
|
placement: i,
|
|
250
256
|
offsetDistance: r
|
|
251
|
-
}), document.addEventListener("keydown", this.handleKeyDown), document.addEventListener("click", this.handleDocumentClick), (
|
|
257
|
+
}), document.addEventListener("keydown", this.handleKeyDown), document.addEventListener("click", this.handleDocumentClick), (g = (h = this.options).beforeShow) == null || g.call(h), b({
|
|
252
258
|
state: "open",
|
|
253
259
|
popper: this.contentElement,
|
|
254
260
|
trigger: this.triggerElement
|
|
255
261
|
}), this.onToggleState(false), (c = (d = this.options).onShow) == null || c.call(d);
|
|
256
|
-
}),
|
|
262
|
+
}), l(this, "setPopperOptions", ({ placement: i, offsetDistance: r }) => {
|
|
257
263
|
this.popper.setOptions({
|
|
258
264
|
placement: i,
|
|
259
|
-
offsetDistance: r
|
|
265
|
+
offsetDistance: r || this.offsetDistance
|
|
260
266
|
});
|
|
261
|
-
}),
|
|
267
|
+
}), l(this, "setPopperTrigger", (i, r) => {
|
|
268
|
+
this.cleanup(), this.popper.setOptions({
|
|
269
|
+
placement: r.placement || this.placement,
|
|
270
|
+
offsetDistance: r.offsetDistance || this.offsetDistance
|
|
271
|
+
}), this.triggerElement = i, this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
|
|
272
|
+
}), l(this, "cleanup", () => {
|
|
262
273
|
this.triggerElement.removeEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.removeEventListener("mouseenter", this.showOnMouseEnter);
|
|
263
274
|
});
|
|
264
275
|
var o;
|
|
265
|
-
if (this.contentElement = this.getElement(t), this.triggerElement = this.getElement(e), !(this.triggerElement instanceof HTMLElement))
|
|
266
|
-
|
|
276
|
+
if (this.contentElement = this.getElement(t), this.triggerElement = this.getElement(e), !(this.triggerElement instanceof HTMLElement))
|
|
277
|
+
throw new Error("Trigger element must be a valid HTML element");
|
|
278
|
+
if (!(this.contentElement instanceof HTMLElement))
|
|
279
|
+
throw new Error("Content element must be a valid HTML element");
|
|
267
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(
|
|
268
281
|
this.triggerElement,
|
|
269
282
|
this.contentElement,
|
|
@@ -325,31 +338,32 @@ var U = (s, e = document.body) => Array.from(e.querySelectorAll(s));
|
|
|
325
338
|
var de = (s) => typeof s == "string" ? W(s) : s;
|
|
326
339
|
var pe = ({ containerElement: s, targetChildren: e = "a:not([disabled]), button:not([disabled])", direction: t }) => {
|
|
327
340
|
let n = false;
|
|
328
|
-
const o = de(s) || document.body, i = typeof e == "string" ? U(e, o) : e, r = (
|
|
329
|
-
if (
|
|
330
|
-
|
|
331
|
-
|
|
341
|
+
const o = de(s) || document.body, i = typeof e == "string" ? U(e, o) : e, r = (h) => {
|
|
342
|
+
if (h.preventDefault(), o.focus(), i.length === 0)
|
|
343
|
+
return;
|
|
344
|
+
const g = h.key, d = document.activeElement;
|
|
345
|
+
let c = i.findIndex((m) => m === d);
|
|
332
346
|
if (c === -1) {
|
|
333
|
-
|
|
347
|
+
g === "ArrowUp" || g === "ArrowLeft" ? i[i.length - 1].focus() : i[0].focus();
|
|
334
348
|
return;
|
|
335
349
|
}
|
|
336
|
-
const f = (
|
|
337
|
-
switch (
|
|
350
|
+
const f = (m) => m > 0 ? m - 1 : i.length - 1, v = (m) => m < i.length - 1 ? m + 1 : 0;
|
|
351
|
+
switch (g) {
|
|
338
352
|
case "ArrowDown":
|
|
339
|
-
|
|
353
|
+
h.preventDefault(), c = v(c);
|
|
340
354
|
break;
|
|
341
355
|
case "ArrowRight":
|
|
342
356
|
break;
|
|
343
357
|
case "ArrowUp":
|
|
344
|
-
|
|
358
|
+
h.preventDefault(), c = f(c);
|
|
345
359
|
break;
|
|
346
360
|
case "ArrowLeft":
|
|
347
361
|
break;
|
|
348
362
|
case "Home":
|
|
349
|
-
|
|
363
|
+
h.preventDefault(), c = 0;
|
|
350
364
|
break;
|
|
351
365
|
case "End":
|
|
352
|
-
|
|
366
|
+
h.preventDefault(), c = i.length - 1;
|
|
353
367
|
break;
|
|
354
368
|
default:
|
|
355
369
|
return;
|
|
@@ -396,49 +410,55 @@ var S = class S2 {
|
|
|
396
410
|
* @throws {Error} If provided elements are not valid HTMLElements
|
|
397
411
|
*/
|
|
398
412
|
constructor(e, t = {}) {
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
413
|
+
a(this, "triggerElement");
|
|
414
|
+
a(this, "contentElement");
|
|
415
|
+
a(this, "options");
|
|
416
|
+
a(this, "OverlayInstance");
|
|
417
|
+
a(this, "navigationKeys");
|
|
418
|
+
a(this, "triggerStrategy");
|
|
419
|
+
a(this, "placement");
|
|
420
|
+
a(this, "offsetDistance");
|
|
421
|
+
a(this, "preventFromCloseOutside");
|
|
422
|
+
a(this, "preventFromCloseInside");
|
|
423
|
+
a(this, "defaultState");
|
|
424
|
+
a(this, "onToggle", ({ isHidden: e2 }) => {
|
|
411
425
|
var t2, n2;
|
|
412
426
|
(n2 = (t2 = this.options).onToggle) == null || n2.call(t2, { isHidden: e2 });
|
|
413
427
|
});
|
|
414
|
-
|
|
428
|
+
a(this, "beforeShow", () => {
|
|
415
429
|
this.contentElement.focus(), this.navigationKeys.make();
|
|
416
430
|
});
|
|
417
|
-
|
|
431
|
+
a(this, "beforeHide", () => {
|
|
418
432
|
this.contentElement.blur(), this.navigationKeys.destroy();
|
|
419
433
|
});
|
|
420
|
-
|
|
434
|
+
a(this, "onShow", () => {
|
|
421
435
|
var e2, t2;
|
|
422
436
|
K(this.contentElement, "dropdown-show", {
|
|
423
437
|
isHidden: false
|
|
424
438
|
}), (t2 = (e2 = this.options).onShow) == null || t2.call(e2);
|
|
425
439
|
});
|
|
426
|
-
|
|
440
|
+
a(this, "onHide", () => {
|
|
427
441
|
var e2, t2;
|
|
428
442
|
K(this.contentElement, "dropdown-hide", {
|
|
429
443
|
isHidden: true
|
|
430
444
|
}), (t2 = (e2 = this.options).onHide) == null || t2.call(e2);
|
|
431
445
|
});
|
|
432
|
-
|
|
446
|
+
a(this, "show", () => {
|
|
433
447
|
this.OverlayInstance.show();
|
|
434
448
|
});
|
|
435
|
-
|
|
449
|
+
a(this, "hide", () => {
|
|
436
450
|
this.OverlayInstance.hide();
|
|
437
451
|
});
|
|
438
|
-
|
|
452
|
+
a(this, "setShowOptions", ({ placement: e2, offsetDistance: t2 }) => {
|
|
439
453
|
this.OverlayInstance.setShowOptions({ placement: e2, offsetDistance: t2 });
|
|
440
454
|
});
|
|
441
|
-
|
|
455
|
+
a(this, "setOptions", ({ placement: e2, offsetDistance: t2 }) => {
|
|
456
|
+
this.OverlayInstance.setPopperOptions({ placement: e2, offsetDistance: t2 });
|
|
457
|
+
});
|
|
458
|
+
a(this, "setPopperTrigger", (e2, t2) => {
|
|
459
|
+
this.OverlayInstance.setPopperTrigger(e2, t2);
|
|
460
|
+
});
|
|
461
|
+
a(this, "cleanup", () => {
|
|
442
462
|
this.OverlayInstance.cleanup(), x.removeInstance("dropdown", this.contentElement);
|
|
443
463
|
});
|
|
444
464
|
const n = typeof e == "string" ? W(e) : e;
|
|
@@ -490,9 +510,10 @@ var S = class S2 {
|
|
|
490
510
|
new S2(e, t);
|
|
491
511
|
}
|
|
492
512
|
};
|
|
493
|
-
|
|
513
|
+
a(S, "autoInit", (e = "[data-fx-dropdown]") => {
|
|
494
514
|
const t = U(e);
|
|
495
|
-
for (const n of t)
|
|
515
|
+
for (const n of t)
|
|
516
|
+
new S(n);
|
|
496
517
|
});
|
|
497
518
|
var z = S;
|
|
498
519
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flexilla/alpine-dropdown",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2",
|
|
4
4
|
"description": "AlpineJS plugin for adding Dropdown functionality to your AlpineJS components",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": false,
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"Flexilla"
|
|
59
59
|
],
|
|
60
60
|
"dependencies": {
|
|
61
|
-
"@flexilla/dropdown": "^2.1.
|
|
61
|
+
"@flexilla/dropdown": "^2.1.3"
|
|
62
62
|
},
|
|
63
|
-
"gitHead": "
|
|
63
|
+
"gitHead": "584636c3f3b85dfa71666f5354221dcfc385f9e6"
|
|
64
64
|
}
|