@flexilla/alpine-popover 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 +113 -72
- package/dist/cdn.min.js +1 -1
- package/dist/module.cjs.js +113 -72
- package/dist/module.esm.js +113 -72
- package/package.json +3 -3
package/dist/cdn.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// ../../node_modules/@flexilla/popover/dist/popover.js
|
|
3
3
|
var K = Object.defineProperty;
|
|
4
4
|
var U = (i, e, t) => e in i ? K(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t;
|
|
5
|
-
var
|
|
5
|
+
var h = (i, e, t) => U(i, typeof e != "symbol" ? e + "" : e, t);
|
|
6
6
|
var A = (i, e = document.body) => e.querySelector(i);
|
|
7
7
|
var j = (i, e = document.body) => Array.from(e.querySelectorAll(i));
|
|
8
8
|
var M = (i, e, t) => {
|
|
@@ -14,20 +14,22 @@
|
|
|
14
14
|
var a = (i, e, t) => B(i, typeof e != "symbol" ? e + "" : e, t);
|
|
15
15
|
var J = "bottom";
|
|
16
16
|
var N = ({ reference: i, popper: e }) => {
|
|
17
|
-
|
|
17
|
+
if (!i || !e)
|
|
18
|
+
throw new Error("Reference or popper element is null or undefined");
|
|
19
|
+
const t = /* @__PURE__ */ new WeakMap(), s = (r) => (t.has(r) || t.set(r, r.getBoundingClientRect()), t.get(r)), o = s(e), n = s(i);
|
|
18
20
|
return {
|
|
19
|
-
popperHeight:
|
|
20
|
-
popperWidth:
|
|
21
|
-
refHeight:
|
|
22
|
-
refWidth:
|
|
23
|
-
refLeft:
|
|
24
|
-
refTop:
|
|
25
|
-
refRight:
|
|
21
|
+
popperHeight: o.height,
|
|
22
|
+
popperWidth: o.width,
|
|
23
|
+
refHeight: n.height,
|
|
24
|
+
refWidth: n.width,
|
|
25
|
+
refLeft: n.left,
|
|
26
|
+
refTop: n.top,
|
|
27
|
+
refRight: n.right
|
|
26
28
|
};
|
|
27
29
|
};
|
|
28
30
|
var Q = Object.defineProperty;
|
|
29
31
|
var V = (i, e, t) => e in i ? Q(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t;
|
|
30
|
-
var
|
|
32
|
+
var p = (i, e, t) => V(i, typeof e != "symbol" ? e + "" : e, t);
|
|
31
33
|
var X = (i, e, t, s) => {
|
|
32
34
|
const o = t, n = s - (t + e);
|
|
33
35
|
return o >= (i - e) / 2 && n >= (i - e) / 2;
|
|
@@ -54,7 +56,7 @@
|
|
|
54
56
|
windowWidth: d,
|
|
55
57
|
offsetDistance: c
|
|
56
58
|
}) => {
|
|
57
|
-
const
|
|
59
|
+
const g = d - s - e, v = s, L = l - t - o, D = t, u = () => Z(
|
|
58
60
|
() => ee(t, o, r, l),
|
|
59
61
|
() => _(t, o, r, l),
|
|
60
62
|
t,
|
|
@@ -67,29 +69,29 @@
|
|
|
67
69
|
n,
|
|
68
70
|
d,
|
|
69
71
|
e
|
|
70
|
-
), k = () => X(n, e, s, d) ? s + e / 2 - n / 2 : E(),
|
|
71
|
-
let
|
|
72
|
-
const
|
|
73
|
-
switch (i.startsWith("top") ? f = W ?
|
|
72
|
+
), k = () => X(n, e, s, d) ? s + e / 2 - n / 2 : E(), C = () => Y(r, o, t, l) ? t + o / 2 - r / 2 : u(), P = () => s + n <= d ? s : E(), y = () => s + e - n >= 0 ? s + e - n : E(), b = () => t + r <= l ? t : u(), G = () => t + o - r >= 0 ? t + o - r : u();
|
|
73
|
+
let m = 0, f = 0;
|
|
74
|
+
const T = t - r - c, S = t + o + c, O = s - n - c, I = s + e + c, W = D >= r + c, F = L >= r + c, R = v >= n + c, $ = g >= n + c;
|
|
75
|
+
switch (i.startsWith("top") ? f = W ? T : F ? S : Math.max(T, S) : i.startsWith("bottom") ? f = F ? S : W ? T : Math.max(S) : i.startsWith("left") ? m = R ? O : $ ? I : Math.max(O, I) : i.startsWith("right") && (m = $ ? I : R ? O : Math.max(I, O)), i) {
|
|
74
76
|
case "bottom":
|
|
75
77
|
case "bottom-middle":
|
|
76
78
|
case "top":
|
|
77
79
|
case "top-middle":
|
|
78
|
-
|
|
80
|
+
m = k();
|
|
79
81
|
break;
|
|
80
82
|
case "left":
|
|
81
83
|
case "left-middle":
|
|
82
84
|
case "right":
|
|
83
85
|
case "right-middle":
|
|
84
|
-
f =
|
|
86
|
+
f = C();
|
|
85
87
|
break;
|
|
86
88
|
case "bottom-start":
|
|
87
89
|
case "top-start":
|
|
88
|
-
|
|
90
|
+
m = P();
|
|
89
91
|
break;
|
|
90
92
|
case "bottom-end":
|
|
91
93
|
case "top-end":
|
|
92
|
-
|
|
94
|
+
m = y();
|
|
93
95
|
break;
|
|
94
96
|
case "left-start":
|
|
95
97
|
case "right-start":
|
|
@@ -100,7 +102,7 @@
|
|
|
100
102
|
f = G();
|
|
101
103
|
break;
|
|
102
104
|
}
|
|
103
|
-
return { x:
|
|
105
|
+
return { x: m, y: f };
|
|
104
106
|
};
|
|
105
107
|
var oe = class {
|
|
106
108
|
/**
|
|
@@ -109,42 +111,57 @@
|
|
|
109
111
|
* @param popper
|
|
110
112
|
* @param options
|
|
111
113
|
*/
|
|
114
|
+
/**
|
|
115
|
+
* Creates an instance of CreatePopper
|
|
116
|
+
* @param {HTMLElement} reference - The reference element to position against
|
|
117
|
+
* @param {HTMLElement} popper - The element to be positioned
|
|
118
|
+
* @param {PopperOptions} [options] - Configuration options
|
|
119
|
+
* @param {number} [options.offsetDistance] - Distance between popper and reference element
|
|
120
|
+
* @param {Placement} [options.placement] - Preferred placement of the popper
|
|
121
|
+
* @param {Object} [options.eventEffect] - Event handling configuration
|
|
122
|
+
* @param {boolean} [options.eventEffect.disableOnResize] - Disable position updates on window resize
|
|
123
|
+
* @param {boolean} [options.eventEffect.disableOnScroll] - Disable position updates on scroll
|
|
124
|
+
* @param {Function} [options.onUpdate] - Callback function when position updates
|
|
125
|
+
*/
|
|
112
126
|
constructor(e, t, s = {}) {
|
|
113
|
-
|
|
114
|
-
if (!(this.reference instanceof HTMLElement))
|
|
115
|
-
|
|
116
|
-
if (
|
|
117
|
-
|
|
118
|
-
this.
|
|
119
|
-
|
|
127
|
+
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", () => {
|
|
128
|
+
if (!(this.reference instanceof HTMLElement))
|
|
129
|
+
throw new Error("Invalid HTMLElement for Reference Element");
|
|
130
|
+
if (!(this.popper instanceof HTMLElement))
|
|
131
|
+
throw new Error("Invalid HTMLElement for Popper");
|
|
132
|
+
if (typeof this.offsetDistance != "number")
|
|
133
|
+
throw new Error("OffsetDistance must be a number");
|
|
134
|
+
}), p(this, "setPopperStyleProperty", (g, v) => {
|
|
135
|
+
this.popper.style.setProperty("--fx-popper-placement-x", `${g}px`), this.popper.style.setProperty("--fx-popper-placement-y", `${v}px`);
|
|
136
|
+
}), p(this, "setInitialStyles", () => {
|
|
120
137
|
this.popper.style.setProperty("--fx-popper-placement-x", ""), this.popper.style.setProperty("--fx-popper-placement-y", "");
|
|
121
|
-
}),
|
|
122
|
-
var
|
|
138
|
+
}), p(this, "initPlacement", () => {
|
|
139
|
+
var g;
|
|
123
140
|
this.validateElements(), this.setInitialStyles();
|
|
124
|
-
const v = window.innerWidth,
|
|
141
|
+
const v = window.innerWidth, L = window.innerHeight, { popperHeight: D, popperWidth: u, refHeight: E, refWidth: k, refLeft: C, refTop: P } = N({ reference: this.reference, popper: this.popper }), { x: y, y: b } = ne(
|
|
125
142
|
{
|
|
126
143
|
placement: this.placement,
|
|
127
144
|
refWidth: k,
|
|
128
|
-
refTop:
|
|
129
|
-
refLeft:
|
|
145
|
+
refTop: P,
|
|
146
|
+
refLeft: C,
|
|
130
147
|
popperWidth: u,
|
|
131
148
|
refHeight: E,
|
|
132
|
-
popperHeight:
|
|
133
|
-
windowHeight:
|
|
149
|
+
popperHeight: D,
|
|
150
|
+
windowHeight: L,
|
|
134
151
|
windowWidth: v,
|
|
135
152
|
offsetDistance: this.offsetDistance
|
|
136
153
|
}
|
|
137
154
|
);
|
|
138
|
-
this.setPopperStyleProperty(y, b), (
|
|
139
|
-
}),
|
|
155
|
+
this.setPopperStyleProperty(y, b), (g = this.onUpdate) == null || g.call(this, { x: y, y: b, placement: this.placement });
|
|
156
|
+
}), p(this, "removeWindowEvents", () => {
|
|
140
157
|
this.isWindowEventsRegistered && (!this.disableOnResize && window.removeEventListener("resize", this.updatePosition), !this.disableOnScroll && window.removeEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = false);
|
|
141
|
-
}),
|
|
158
|
+
}), p(this, "attachWindowEvent", () => {
|
|
142
159
|
this.isWindowEventsRegistered && this.removeWindowEvents(), this.disableOnResize || window.addEventListener("resize", this.updatePosition), this.disableOnScroll || window.addEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = true;
|
|
143
|
-
}),
|
|
160
|
+
}), p(this, "resetPosition", () => {
|
|
144
161
|
this.setInitialStyles();
|
|
145
|
-
}),
|
|
162
|
+
}), p(this, "updatePosition", () => {
|
|
146
163
|
this.initPlacement(), this.attachWindowEvent();
|
|
147
|
-
}),
|
|
164
|
+
}), p(this, "cleanupEvents", () => {
|
|
148
165
|
this.setInitialStyles(), this.removeWindowEvents();
|
|
149
166
|
});
|
|
150
167
|
const {
|
|
@@ -153,12 +170,22 @@
|
|
|
153
170
|
eventEffect: r = {},
|
|
154
171
|
onUpdate: l
|
|
155
172
|
} = s;
|
|
156
|
-
if (!(e instanceof HTMLElement))
|
|
157
|
-
|
|
158
|
-
if (
|
|
173
|
+
if (!(e instanceof HTMLElement))
|
|
174
|
+
throw new Error("Invalid HTMLElement for Reference Element");
|
|
175
|
+
if (!(t instanceof HTMLElement))
|
|
176
|
+
throw new Error("Invalid HTMLElement for Popper");
|
|
177
|
+
if (s.offsetDistance && typeof s.offsetDistance != "number")
|
|
178
|
+
throw new Error("OffsetDistance must be a number");
|
|
159
179
|
const { disableOnResize: d, disableOnScroll: c } = r;
|
|
160
180
|
this.isWindowEventsRegistered = false, this.reference = e, this.popper = t, this.offsetDistance = o, this.placement = n, this.disableOnResize = d || false, this.disableOnScroll = c || false, this.onUpdate = l;
|
|
161
181
|
}
|
|
182
|
+
/**
|
|
183
|
+
* Updates popper configuration and recalculates position
|
|
184
|
+
* @public
|
|
185
|
+
* @param {Object} options - New configuration options
|
|
186
|
+
* @param {Placement} options.placement - New placement value
|
|
187
|
+
* @param {number} [options.offsetDistance] - New offset distance
|
|
188
|
+
*/
|
|
162
189
|
setOptions({ placement: e, offsetDistance: t }) {
|
|
163
190
|
this.placement = e, this.offsetDistance = t || this.offsetDistance, this.initPlacement(), this.attachWindowEvent();
|
|
164
191
|
}
|
|
@@ -195,10 +222,11 @@
|
|
|
195
222
|
});
|
|
196
223
|
};
|
|
197
224
|
var w = ({ state: i, trigger: e, popper: t }) => {
|
|
225
|
+
const s = i === "open";
|
|
198
226
|
z(t, {
|
|
199
227
|
"data-state": i
|
|
200
228
|
}), z(e, {
|
|
201
|
-
"aria-expanded": `${
|
|
229
|
+
"aria-expanded": `${s}`
|
|
202
230
|
});
|
|
203
231
|
};
|
|
204
232
|
var he = class {
|
|
@@ -208,7 +236,6 @@
|
|
|
208
236
|
* @param {string | HTMLElement} params.trigger - The trigger element selector or HTMLElement
|
|
209
237
|
* @param {string | HTMLElement} params.content - The content element selector or HTMLElement
|
|
210
238
|
* @param {OverlayOptions} [params.options] - Configuration options for the overlay
|
|
211
|
-
* @throws {Error} When trigger or content elements are invalid
|
|
212
239
|
*/
|
|
213
240
|
constructor({ trigger: e, content: t, options: s = {} }) {
|
|
214
241
|
a(this, "triggerElement"), a(this, "contentElement"), a(this, "triggerStrategy"), a(this, "placement"), a(this, "offsetDistance"), a(this, "preventFromCloseOutside"), a(this, "preventFromCloseInside"), a(this, "options"), a(this, "defaultState"), a(this, "popper"), a(this, "eventEffect"), a(this, "getElement", (n) => typeof n == "string" ? re(n) : n instanceof HTMLElement ? n : void 0), a(this, "handleDocumentClick", (n) => {
|
|
@@ -230,7 +257,7 @@
|
|
|
230
257
|
}), a(this, "showOnMouseEnter", () => {
|
|
231
258
|
this.show(), this.addEventOnMouseEnter();
|
|
232
259
|
}), a(this, "setShowOptions", ({ placement: n, offsetDistance: r }) => {
|
|
233
|
-
var l, d, c,
|
|
260
|
+
var l, d, c, g;
|
|
234
261
|
this.popper.setOptions({
|
|
235
262
|
placement: n,
|
|
236
263
|
offsetDistance: r
|
|
@@ -238,18 +265,25 @@
|
|
|
238
265
|
state: "open",
|
|
239
266
|
popper: this.contentElement,
|
|
240
267
|
trigger: this.triggerElement
|
|
241
|
-
}), this.onToggleState(false), (
|
|
268
|
+
}), this.onToggleState(false), (g = (c = this.options).onShow) == null || g.call(c);
|
|
242
269
|
}), a(this, "setPopperOptions", ({ placement: n, offsetDistance: r }) => {
|
|
243
270
|
this.popper.setOptions({
|
|
244
271
|
placement: n,
|
|
245
|
-
offsetDistance: r
|
|
272
|
+
offsetDistance: r || this.offsetDistance
|
|
246
273
|
});
|
|
274
|
+
}), a(this, "setPopperTrigger", (n, r) => {
|
|
275
|
+
this.cleanup(), this.popper.setOptions({
|
|
276
|
+
placement: r.placement || this.placement,
|
|
277
|
+
offsetDistance: r.offsetDistance || this.offsetDistance
|
|
278
|
+
}), this.triggerElement = n, this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
|
|
247
279
|
}), a(this, "cleanup", () => {
|
|
248
280
|
this.triggerElement.removeEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.removeEventListener("mouseenter", this.showOnMouseEnter);
|
|
249
281
|
});
|
|
250
282
|
var o;
|
|
251
|
-
if (this.contentElement = this.getElement(t), this.triggerElement = this.getElement(e), !(this.triggerElement instanceof HTMLElement))
|
|
252
|
-
|
|
283
|
+
if (this.contentElement = this.getElement(t), this.triggerElement = this.getElement(e), !(this.triggerElement instanceof HTMLElement))
|
|
284
|
+
throw new Error("Trigger element must be a valid HTML element");
|
|
285
|
+
if (!(this.contentElement instanceof HTMLElement))
|
|
286
|
+
throw new Error("Content element must be a valid HTML element");
|
|
253
287
|
this.options = s, 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 oe(
|
|
254
288
|
this.triggerElement,
|
|
255
289
|
this.contentElement,
|
|
@@ -306,7 +340,7 @@
|
|
|
306
340
|
}), this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
|
|
307
341
|
}
|
|
308
342
|
};
|
|
309
|
-
var
|
|
343
|
+
var H = class {
|
|
310
344
|
static initGlobalRegistry() {
|
|
311
345
|
window.$flexillaInstances || (window.$flexillaInstances = {});
|
|
312
346
|
}
|
|
@@ -325,7 +359,7 @@
|
|
|
325
359
|
));
|
|
326
360
|
}
|
|
327
361
|
};
|
|
328
|
-
var
|
|
362
|
+
var x = class _x {
|
|
329
363
|
/**
|
|
330
364
|
* Creates a new Popover instance.
|
|
331
365
|
* @param {string | HTMLElement} popoverEl - The popover content element or its selector.
|
|
@@ -342,35 +376,41 @@
|
|
|
342
376
|
* });
|
|
343
377
|
*/
|
|
344
378
|
constructor(e, t = {}) {
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
379
|
+
h(this, "triggerElement");
|
|
380
|
+
h(this, "contentElement");
|
|
381
|
+
h(this, "options");
|
|
382
|
+
h(this, "PopoverInstance");
|
|
383
|
+
h(this, "triggerStrategy");
|
|
384
|
+
h(this, "placement");
|
|
385
|
+
h(this, "offsetDistance");
|
|
386
|
+
h(this, "preventFromCloseOutside");
|
|
387
|
+
h(this, "preventFromCloseInside");
|
|
388
|
+
h(this, "defaultState");
|
|
389
|
+
h(this, "setShowOptions", ({ placement: e2, offsetDistance: t2 }) => {
|
|
356
390
|
this.PopoverInstance.setShowOptions({ placement: e2, offsetDistance: t2 });
|
|
357
391
|
});
|
|
358
|
-
|
|
392
|
+
h(this, "setOptions", ({ placement: e2, offsetDistance: t2 }) => {
|
|
393
|
+
this.PopoverInstance.setPopperOptions({ placement: e2, offsetDistance: t2 });
|
|
394
|
+
});
|
|
395
|
+
h(this, "setPopperTrigger", (e2, t2) => {
|
|
396
|
+
this.PopoverInstance.setPopperTrigger(e2, t2);
|
|
397
|
+
});
|
|
398
|
+
h(this, "show", () => {
|
|
359
399
|
this.PopoverInstance.show(), M(this.contentElement, "popover-show", {
|
|
360
400
|
isHidden: false
|
|
361
401
|
});
|
|
362
402
|
});
|
|
363
|
-
|
|
403
|
+
h(this, "hide", () => {
|
|
364
404
|
this.PopoverInstance.hide(), M(this.contentElement, "popover-hide", {
|
|
365
405
|
isHidden: true
|
|
366
406
|
});
|
|
367
407
|
});
|
|
368
|
-
|
|
369
|
-
this.PopoverInstance.cleanup(),
|
|
408
|
+
h(this, "cleanup", () => {
|
|
409
|
+
this.PopoverInstance.cleanup(), H.removeInstance("popover", this.contentElement);
|
|
370
410
|
});
|
|
371
411
|
const s = typeof e == "string" ? A(e) : e;
|
|
372
412
|
this.contentElement = s;
|
|
373
|
-
const o =
|
|
413
|
+
const o = H.getInstance("popover", this.contentElement);
|
|
374
414
|
if (o)
|
|
375
415
|
return o;
|
|
376
416
|
this.triggerElement = A(`[data-popover-trigger][data-popover-id=${s.getAttribute("id")}]`), this.options = t, this.triggerStrategy = this.options.triggerStrategy || s.dataset.triggerStrategy || "click", this.placement = this.options.placement || s.dataset.placement || "bottom-middle", this.offsetDistance = this.options.offsetDistance || parseInt(`${s.dataset.offsetDistance}`) | 6, this.preventFromCloseOutside = this.options.preventFromCloseOutside || s.hasAttribute("data-prevent-close-outside") || false, this.preventFromCloseInside = this.options.preventCloseFromInside || s.hasAttribute("data-prevent-close-inside") || false, this.defaultState = this.options.defaultState || s.dataset.defaultState || "close", this.PopoverInstance = new he({
|
|
@@ -393,7 +433,7 @@
|
|
|
393
433
|
},
|
|
394
434
|
popper: this.options.popper
|
|
395
435
|
}
|
|
396
|
-
}),
|
|
436
|
+
}), H.register("popover", this.contentElement, this);
|
|
397
437
|
}
|
|
398
438
|
/**
|
|
399
439
|
* Creates a new Popover instance with the specified options.
|
|
@@ -407,7 +447,7 @@
|
|
|
407
447
|
* });
|
|
408
448
|
*/
|
|
409
449
|
static init(e, t) {
|
|
410
|
-
return new
|
|
450
|
+
return new _x(e, t);
|
|
411
451
|
}
|
|
412
452
|
/**
|
|
413
453
|
* Automatically initializes all popover elements matching the specified selector.
|
|
@@ -421,14 +461,15 @@
|
|
|
421
461
|
*/
|
|
422
462
|
static autoInit(e = "[data-fx-popover]") {
|
|
423
463
|
const t = j(e);
|
|
424
|
-
for (const s of t)
|
|
464
|
+
for (const s of t)
|
|
465
|
+
new _x(s);
|
|
425
466
|
}
|
|
426
467
|
};
|
|
427
468
|
|
|
428
469
|
// src/index.js
|
|
429
470
|
function Popover(Alpine) {
|
|
430
471
|
Alpine.directive("popover", (el, {}, { cleanup }) => {
|
|
431
|
-
const popover_ = new
|
|
472
|
+
const popover_ = new x(el);
|
|
432
473
|
cleanup(() => {
|
|
433
474
|
popover_.cleanup();
|
|
434
475
|
});
|
package/dist/cdn.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{var q=Object.defineProperty,B=(s,e,t)=>e in s?q(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,c=(s,e,t)=>B(s,typeof e!="symbol"?e+"":e,t),j=(s,e=document.body)=>e.querySelector(s),J=(s,e=document.body)=>Array.from(e.querySelectorAll(s)),x=(s,e,t)=>{let i=new CustomEvent(e,{detail:t});s.dispatchEvent(i)},N=Object.defineProperty,Q=(s,e,t)=>e in s?N(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,a=(s,e,t)=>Q(s,typeof e!="symbol"?e+"":e,t),V="bottom",X=({reference:s,popper:e})=>{let t=e.getBoundingClientRect(),i=s.getBoundingClientRect();return{popperHeight:t.height,popperWidth:t.width,refHeight:i.height,refWidth:i.width,refLeft:i.left,refTop:i.top,refRight:i.right}},Y=Object.defineProperty,Z=(s,e,t)=>e in s?Y(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,h=(s,e,t)=>Z(s,typeof e!="symbol"?e+"":e,t),_=(s,e,t,i)=>{let o=t,n=i-(t+e);return o>=(s-e)/2&&n>=(s-e)/2},ee=(s,e,t,i)=>(s-e)/2<=t&&t+s/2+e/2<=i,te=(s,e,t,i,o)=>t>o-i?e()?window.innerHeight-o:t-o:s()?0:t+i,ie=(s,e,t,i)=>s<=i&&t-s<=e,se=(s,e,t,i)=>t<=i&&-s<=e,ne=(s,e,t,i,o,n)=>{let r=o-t-n,l=t-i,d=t+n-i+(o-t-n),p=r>=0?o-i:l>=0?t-i:t;return s()?0:e()?d:p},oe=(s,e,t,i)=>s<=t&&e-s-i>=s,re=(s,e)=>s>=e,ae=({placement:s,refWidth:e,refTop:t,refLeft:i,refHeight:o,popperWidth:n,popperHeight:r,windowHeight:l,windowWidth:d,offsetDistance:p})=>{let m=d-i-e,v=i,H=l-t-o,k=t,E=()=>te(()=>se(t,o,r,l),()=>ie(t,o,r,l),t,o,r),u=()=>ne(()=>oe(i,d,n,e),()=>re(i,n),i,n,d,e),P=()=>_(n,e,i,d)?i+e/2-n/2:u(),T=()=>ee(r,o,t,l)?t+o/2-r/2:E(),M=()=>i+n<=d?i:u(),b=()=>i+e-n>=0?i+e-n:u(),S=()=>t+r<=l?t:E(),U=()=>t+o-r>=0?t+o-r:E(),g=0,f=0,O=t-r-p,L=t+o+p,I=i-n-p,D=i+e+p,R=k>=r+p,$=H>=r+p,A=v>=n+p,z=m>=n+p;switch(s.startsWith("top")?f=R?O:$?L:Math.max(O,L):s.startsWith("bottom")?f=$?L:R?O:Math.max(O,L):s.startsWith("left")?g=A?I:z?D:Math.max(I,D):s.startsWith("right")&&(g=z?D:A?I:Math.max(I,D)),s){case"bottom":case"bottom-middle":case"top":case"top-middle":g=P();break;case"left":case"left-middle":case"right":case"right-middle":f=T();break;case"bottom-start":case"top-start":g=M();break;case"bottom-end":case"top-end":g=b();break;case"left-start":case"right-start":f=S();break;case"left-end":case"right-end":f=U();break}return{x:g,y:f}},W=class{constructor(e,t,i={}){h(this,"reference"),h(this,"popper"),h(this,"offsetDistance"),h(this,"placement"),h(this,"disableOnResize"),h(this,"disableOnScroll"),h(this,"onUpdate"),h(this,"isWindowEventsRegistered"),h(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")}),h(this,"setPopperStyleProperty",(m,v)=>{this.popper.style.setProperty("--fx-popper-placement-x",`${m}px`),this.popper.style.setProperty("--fx-popper-placement-y",`${v}px`)}),h(this,"setInitialStyles",()=>{this.popper.style.setProperty("--fx-popper-placement-x",""),this.popper.style.setProperty("--fx-popper-placement-y","")}),h(this,"initPlacement",()=>{var m;this.validateElements(),this.setInitialStyles();let v=window.innerWidth,H=window.innerHeight,{popperHeight:k,popperWidth:E,refHeight:u,refWidth:P,refLeft:T,refTop:M}=X({reference:this.reference,popper:this.popper}),{x:b,y:S}=ae({placement:this.placement,refWidth:P,refTop:M,refLeft:T,popperWidth:E,refHeight:u,popperHeight:k,windowHeight:H,windowWidth:v,offsetDistance:this.offsetDistance});this.setPopperStyleProperty(b,S),(m=this.onUpdate)==null||m.call(this,{x:b,y:S,placement:this.placement})}),h(this,"removeWindowEvents",()=>{this.isWindowEventsRegistered&&(!this.disableOnResize&&window.removeEventListener("resize",this.updatePosition),!this.disableOnScroll&&window.removeEventListener("scroll",this.updatePosition),this.isWindowEventsRegistered=!1)}),h(this,"attachWindowEvent",()=>{this.isWindowEventsRegistered&&this.removeWindowEvents(),this.disableOnResize||window.addEventListener("resize",this.updatePosition),this.disableOnScroll||window.addEventListener("scroll",this.updatePosition),this.isWindowEventsRegistered=!0}),h(this,"resetPosition",()=>{this.setInitialStyles()}),h(this,"updatePosition",()=>{this.initPlacement(),this.attachWindowEvent()}),h(this,"cleanupEvents",()=>{this.setInitialStyles(),this.removeWindowEvents()});let{offsetDistance:o=10,placement:n=V,eventEffect:r={},onUpdate:l}=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:d,disableOnScroll:p}=r;this.isWindowEventsRegistered=!1,this.reference=e,this.popper=t,this.offsetDistance=o,this.placement=n,this.disableOnResize=d||!1,this.disableOnScroll=p||!1,this.onUpdate=l}setOptions({placement:e,offsetDistance:t}){this.placement=e,this.offsetDistance=t||this.offsetDistance,this.initPlacement(),this.attachWindowEvent()}},le=(s,e=document.body)=>e.querySelector(s),G=(s,e)=>{for(let[t,i]of Object.entries(e))s.setAttribute(t,i)},he=({element:s,callback:e,type:t,keysCheck:i})=>{let o=getComputedStyle(s),n=o.transition;if(n!=="none"&&n!==""&&!i.includes(n)){let r="transitionend",l=()=>{s.removeEventListener(r,l),e()};s.addEventListener(r,l,{once:!0})}else e()},pe=({element:s,callback:e})=>{he({element:s,callback:e,type:"transition",keysCheck:["all 0s ease 0s","all"]})},w=({state:s,trigger:e,popper:t})=>{G(t,{"data-state":s}),G(e,{"aria-expanded":`${s}`})},F=class{constructor({trigger:e,content:t,options:i={}}){a(this,"triggerElement"),a(this,"contentElement"),a(this,"triggerStrategy"),a(this,"placement"),a(this,"offsetDistance"),a(this,"preventFromCloseOutside"),a(this,"preventFromCloseInside"),a(this,"options"),a(this,"defaultState"),a(this,"popper"),a(this,"eventEffect"),a(this,"getElement",n=>typeof n=="string"?le(n):n instanceof HTMLElement?n:void 0),a(this,"handleDocumentClick",n=>{this.contentElement.getAttribute("data-state")==="open"&&(!this.triggerElement.contains(n.target)&&!this.preventFromCloseInside&&!this.preventFromCloseOutside?this.hide():!this.triggerElement.contains(n.target)&&!this.contentElement.contains(n.target)&&!this.preventFromCloseOutside?this.hide():!this.triggerElement.contains(n.target)&&!this.contentElement.contains(n.target)&&!this.preventFromCloseOutside?this.hide():!this.triggerElement.contains(n.target)&&this.contentElement.contains(n.target)&&!this.preventFromCloseInside&&this.hide())}),a(this,"handleKeyDown",n=>{n.preventDefault(),this.triggerStrategy!=="hover"&&n.key==="Escape"&&this.contentElement.getAttribute("data-state")==="open"&&(this.preventFromCloseOutside||this.hide())}),a(this,"toggleStateOnClick",()=>{(this.contentElement.dataset.state||"close")==="close"?(this.show(),this.triggerStrategy==="hover"&&this.addEventOnMouseEnter()):this.hide()}),a(this,"hideOnMouseLeaseTrigger",()=>{setTimeout(()=>{this.contentElement.matches(":hover")||this.hide()},150)}),a(this,"hideOnMouseLeave",()=>{setTimeout(()=>{this.triggerElement.matches(":hover")||this.hide()},150)}),a(this,"addEventOnMouseEnter",()=>{this.triggerElement.addEventListener("mouseleave",this.hideOnMouseLeaseTrigger),this.contentElement.addEventListener("mouseleave",this.hideOnMouseLeave)}),a(this,"showOnMouseEnter",()=>{this.show(),this.addEventOnMouseEnter()}),a(this,"setShowOptions",({placement:n,offsetDistance:r})=>{var l,d,p,m;this.popper.setOptions({placement:n,offsetDistance:r}),document.addEventListener("keydown",this.handleKeyDown),document.addEventListener("click",this.handleDocumentClick),(d=(l=this.options).beforeShow)==null||d.call(l),w({state:"open",popper:this.contentElement,trigger:this.triggerElement}),this.onToggleState(!1),(m=(p=this.options).onShow)==null||m.call(p)}),a(this,"setPopperOptions",({placement:n,offsetDistance:r})=>{this.popper.setOptions({placement:n,offsetDistance:r})}),a(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 W(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),w({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),w({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(){w({state:this.defaultState,popper:this.contentElement,trigger:this.triggerElement}),this.defaultState==="open"?this.show():w({state:"close",popper:this.contentElement,trigger:this.triggerElement}),this.triggerElement.addEventListener("click",this.toggleStateOnClick),this.triggerStrategy==="hover"&&this.triggerElement.addEventListener("mouseenter",this.showOnMouseEnter)}},y=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(n=>n.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))}},C=class s{constructor(e,t={}){c(this,"triggerElement"),c(this,"contentElement"),c(this,"options"),c(this,"PopoverInstance"),c(this,"triggerStrategy"),c(this,"placement"),c(this,"offsetDistance"),c(this,"preventFromCloseOutside"),c(this,"preventFromCloseInside"),c(this,"defaultState"),c(this,"setShowOptions",({placement:n,offsetDistance:r})=>{this.PopoverInstance.setShowOptions({placement:n,offsetDistance:r})}),c(this,"show",()=>{this.PopoverInstance.show(),x(this.contentElement,"popover-show",{isHidden:!1})}),c(this,"hide",()=>{this.PopoverInstance.hide(),x(this.contentElement,"popover-hide",{isHidden:!0})}),c(this,"cleanup",()=>{this.PopoverInstance.cleanup(),y.removeInstance("popover",this.contentElement)});let i=typeof e=="string"?j(e):e;this.contentElement=i;let o=y.getInstance("popover",this.contentElement);if(o)return o;this.triggerElement=j(`[data-popover-trigger][data-popover-id=${i.getAttribute("id")}]`),this.options=t,this.triggerStrategy=this.options.triggerStrategy||i.dataset.triggerStrategy||"click",this.placement=this.options.placement||i.dataset.placement||"bottom-middle",this.offsetDistance=this.options.offsetDistance||parseInt(`${i.dataset.offsetDistance}`)|6,this.preventFromCloseOutside=this.options.preventFromCloseOutside||i.hasAttribute("data-prevent-close-outside")||!1,this.preventFromCloseInside=this.options.preventCloseFromInside||i.hasAttribute("data-prevent-close-inside")||!1,this.defaultState=this.options.defaultState||i.dataset.defaultState||"close",this.PopoverInstance=new F({trigger:this.triggerElement,content:this.contentElement,options:{placement:this.placement,offsetDistance:this.offsetDistance,triggerStrategy:this.triggerStrategy,preventFromCloseOutside:this.preventFromCloseOutside,preventCloseFromInside:this.preventFromCloseInside,defaultState:this.defaultState,onShow:this.options.onShow,onHide:this.options.onHide,onToggle:({isHidden:n})=>{var r,l;(l=(r=this.options).onToggle)==null||l.call(r,{isHidden:n}),x(this.contentElement,"popover-toggle",{isHidden:n})},popper:this.options.popper}}),y.register("popover",this.contentElement,this)}static init(e,t){return new s(e,t)}static autoInit(e="[data-fx-popover]"){let t=J(e);for(let i of t)new s(i)}};function ce(s){s.directive("popover",(e,{},{cleanup:t})=>{let i=new C(e);t(()=>{i.cleanup()})})}var K=ce;document.addEventListener("alpine:init",()=>{K(window.Alpine)});})();
|
|
1
|
+
(()=>{var q=Object.defineProperty,B=(i,e,t)=>e in i?q(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,p=(i,e,t)=>B(i,typeof e!="symbol"?e+"":e,t),j=(i,e=document.body)=>e.querySelector(i),J=(i,e=document.body)=>Array.from(e.querySelectorAll(i)),W=(i,e,t)=>{let s=new CustomEvent(e,{detail:t});i.dispatchEvent(s)},N=Object.defineProperty,Q=(i,e,t)=>e in i?N(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,a=(i,e,t)=>Q(i,typeof e!="symbol"?e+"":e,t),V="bottom",X=({reference:i,popper:e})=>{if(!i||!e)throw new Error("Reference or popper element is null or undefined");let t=new WeakMap,s=r=>(t.has(r)||t.set(r,r.getBoundingClientRect()),t.get(r)),o=s(e),n=s(i);return{popperHeight:o.height,popperWidth:o.width,refHeight:n.height,refWidth:n.width,refLeft:n.left,refTop:n.top,refRight:n.right}},Y=Object.defineProperty,Z=(i,e,t)=>e in i?Y(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,h=(i,e,t)=>Z(i,typeof e!="symbol"?e+"":e,t),_=(i,e,t,s)=>{let o=t,n=s-(t+e);return o>=(i-e)/2&&n>=(i-e)/2},ee=(i,e,t,s)=>(i-e)/2<=t&&t+i/2+e/2<=s,te=(i,e,t,s,o)=>t>o-s?e()?window.innerHeight-o:t-o:i()?0:t+s,se=(i,e,t,s)=>i<=s&&t-i<=e,ie=(i,e,t,s)=>t<=s&&-i<=e,ne=(i,e,t,s,o,n)=>{let r=o-t-n,l=t-s,d=t+n-s+(o-t-n),c=r>=0?o-s:l>=0?t-s:t;return i()?0:e()?d:c},oe=(i,e,t,s)=>i<=t&&e-i-s>=i,re=(i,e)=>i>=e,ae=({placement:i,refWidth:e,refTop:t,refLeft:s,refHeight:o,popperWidth:n,popperHeight:r,windowHeight:l,windowWidth:d,offsetDistance:c})=>{let m=d-s-e,v=s,P=l-t-o,k=t,E=()=>te(()=>ie(t,o,r,l),()=>se(t,o,r,l),t,o,r),u=()=>ne(()=>oe(s,d,n,e),()=>re(s,n),s,n,d,e),C=()=>_(n,e,s,d)?s+e/2-n/2:u(),H=()=>ee(r,o,t,l)?t+o/2-r/2:E(),T=()=>s+n<=d?s:u(),b=()=>s+e-n>=0?s+e-n:u(),S=()=>t+r<=l?t:E(),U=()=>t+o-r>=0?t+o-r:E(),g=0,f=0,M=t-r-c,O=t+o+c,D=s-n-c,L=s+e+c,R=k>=r+c,$=P>=r+c,A=v>=n+c,z=m>=n+c;switch(i.startsWith("top")?f=R?M:$?O:Math.max(M,O):i.startsWith("bottom")?f=$?O:R?M:Math.max(O):i.startsWith("left")?g=A?D:z?L:Math.max(D,L):i.startsWith("right")&&(g=z?L:A?D:Math.max(L,D)),i){case"bottom":case"bottom-middle":case"top":case"top-middle":g=C();break;case"left":case"left-middle":case"right":case"right-middle":f=H();break;case"bottom-start":case"top-start":g=T();break;case"bottom-end":case"top-end":g=b();break;case"left-start":case"right-start":f=S();break;case"left-end":case"right-end":f=U();break}return{x:g,y:f}},x=class{constructor(e,t,s={}){h(this,"reference"),h(this,"popper"),h(this,"offsetDistance"),h(this,"placement"),h(this,"disableOnResize"),h(this,"disableOnScroll"),h(this,"onUpdate"),h(this,"isWindowEventsRegistered"),h(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")}),h(this,"setPopperStyleProperty",(m,v)=>{this.popper.style.setProperty("--fx-popper-placement-x",`${m}px`),this.popper.style.setProperty("--fx-popper-placement-y",`${v}px`)}),h(this,"setInitialStyles",()=>{this.popper.style.setProperty("--fx-popper-placement-x",""),this.popper.style.setProperty("--fx-popper-placement-y","")}),h(this,"initPlacement",()=>{var m;this.validateElements(),this.setInitialStyles();let v=window.innerWidth,P=window.innerHeight,{popperHeight:k,popperWidth:E,refHeight:u,refWidth:C,refLeft:H,refTop:T}=X({reference:this.reference,popper:this.popper}),{x:b,y:S}=ae({placement:this.placement,refWidth:C,refTop:T,refLeft:H,popperWidth:E,refHeight:u,popperHeight:k,windowHeight:P,windowWidth:v,offsetDistance:this.offsetDistance});this.setPopperStyleProperty(b,S),(m=this.onUpdate)==null||m.call(this,{x:b,y:S,placement:this.placement})}),h(this,"removeWindowEvents",()=>{this.isWindowEventsRegistered&&(!this.disableOnResize&&window.removeEventListener("resize",this.updatePosition),!this.disableOnScroll&&window.removeEventListener("scroll",this.updatePosition),this.isWindowEventsRegistered=!1)}),h(this,"attachWindowEvent",()=>{this.isWindowEventsRegistered&&this.removeWindowEvents(),this.disableOnResize||window.addEventListener("resize",this.updatePosition),this.disableOnScroll||window.addEventListener("scroll",this.updatePosition),this.isWindowEventsRegistered=!0}),h(this,"resetPosition",()=>{this.setInitialStyles()}),h(this,"updatePosition",()=>{this.initPlacement(),this.attachWindowEvent()}),h(this,"cleanupEvents",()=>{this.setInitialStyles(),this.removeWindowEvents()});let{offsetDistance:o=10,placement:n=V,eventEffect:r={},onUpdate:l}=s;if(!(e instanceof HTMLElement))throw new Error("Invalid HTMLElement for Reference Element");if(!(t instanceof HTMLElement))throw new Error("Invalid HTMLElement for Popper");if(s.offsetDistance&&typeof s.offsetDistance!="number")throw new Error("OffsetDistance must be a number");let{disableOnResize:d,disableOnScroll:c}=r;this.isWindowEventsRegistered=!1,this.reference=e,this.popper=t,this.offsetDistance=o,this.placement=n,this.disableOnResize=d||!1,this.disableOnScroll=c||!1,this.onUpdate=l}setOptions({placement:e,offsetDistance:t}){this.placement=e,this.offsetDistance=t||this.offsetDistance,this.initPlacement(),this.attachWindowEvent()}},le=(i,e=document.body)=>e.querySelector(i),G=(i,e)=>{for(let[t,s]of Object.entries(e))i.setAttribute(t,s)},he=({element:i,callback:e,type:t,keysCheck:s})=>{let o=getComputedStyle(i),n=o.transition;if(n!=="none"&&n!==""&&!s.includes(n)){let r="transitionend",l=()=>{i.removeEventListener(r,l),e()};i.addEventListener(r,l,{once:!0})}else e()},pe=({element:i,callback:e})=>{he({element:i,callback:e,type:"transition",keysCheck:["all 0s ease 0s","all"]})},w=({state:i,trigger:e,popper:t})=>{let s=i==="open";G(t,{"data-state":i}),G(e,{"aria-expanded":`${s}`})},F=class{constructor({trigger:e,content:t,options:s={}}){a(this,"triggerElement"),a(this,"contentElement"),a(this,"triggerStrategy"),a(this,"placement"),a(this,"offsetDistance"),a(this,"preventFromCloseOutside"),a(this,"preventFromCloseInside"),a(this,"options"),a(this,"defaultState"),a(this,"popper"),a(this,"eventEffect"),a(this,"getElement",n=>typeof n=="string"?le(n):n instanceof HTMLElement?n:void 0),a(this,"handleDocumentClick",n=>{this.contentElement.getAttribute("data-state")==="open"&&(!this.triggerElement.contains(n.target)&&!this.preventFromCloseInside&&!this.preventFromCloseOutside?this.hide():!this.triggerElement.contains(n.target)&&!this.contentElement.contains(n.target)&&!this.preventFromCloseOutside?this.hide():!this.triggerElement.contains(n.target)&&!this.contentElement.contains(n.target)&&!this.preventFromCloseOutside?this.hide():!this.triggerElement.contains(n.target)&&this.contentElement.contains(n.target)&&!this.preventFromCloseInside&&this.hide())}),a(this,"handleKeyDown",n=>{n.preventDefault(),this.triggerStrategy!=="hover"&&n.key==="Escape"&&this.contentElement.getAttribute("data-state")==="open"&&(this.preventFromCloseOutside||this.hide())}),a(this,"toggleStateOnClick",()=>{(this.contentElement.dataset.state||"close")==="close"?(this.show(),this.triggerStrategy==="hover"&&this.addEventOnMouseEnter()):this.hide()}),a(this,"hideOnMouseLeaseTrigger",()=>{setTimeout(()=>{this.contentElement.matches(":hover")||this.hide()},150)}),a(this,"hideOnMouseLeave",()=>{setTimeout(()=>{this.triggerElement.matches(":hover")||this.hide()},150)}),a(this,"addEventOnMouseEnter",()=>{this.triggerElement.addEventListener("mouseleave",this.hideOnMouseLeaseTrigger),this.contentElement.addEventListener("mouseleave",this.hideOnMouseLeave)}),a(this,"showOnMouseEnter",()=>{this.show(),this.addEventOnMouseEnter()}),a(this,"setShowOptions",({placement:n,offsetDistance:r})=>{var l,d,c,m;this.popper.setOptions({placement:n,offsetDistance:r}),document.addEventListener("keydown",this.handleKeyDown),document.addEventListener("click",this.handleDocumentClick),(d=(l=this.options).beforeShow)==null||d.call(l),w({state:"open",popper:this.contentElement,trigger:this.triggerElement}),this.onToggleState(!1),(m=(c=this.options).onShow)==null||m.call(c)}),a(this,"setPopperOptions",({placement:n,offsetDistance:r})=>{this.popper.setOptions({placement:n,offsetDistance:r||this.offsetDistance})}),a(this,"setPopperTrigger",(n,r)=>{this.cleanup(),this.popper.setOptions({placement:r.placement||this.placement,offsetDistance:r.offsetDistance||this.offsetDistance}),this.triggerElement=n,this.triggerElement.addEventListener("click",this.toggleStateOnClick),this.triggerStrategy==="hover"&&this.triggerElement.addEventListener("mouseenter",this.showOnMouseEnter)}),a(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=s,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,s;(s=(t=this.options).onToggle)==null||s.call(t,{isHidden:e})}show(){var e,t,s,o;this.popper.updatePosition(),document.addEventListener("keydown",this.handleKeyDown),document.addEventListener("click",this.handleDocumentClick),(t=(e=this.options).beforeShow)==null||t.call(e),w({state:"open",popper:this.contentElement,trigger:this.triggerElement}),this.onToggleState(!1),(o=(s=this.options).onShow)==null||o.call(s)}hide(){var e,t;(t=(e=this.options).beforeHide)==null||t.call(e),w({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 s,o;this.onToggleState(!0),this.popper.cleanupEvents(),(o=(s=this.options).onHide)==null||o.call(s)}})}initInstance(){w({state:this.defaultState,popper:this.contentElement,trigger:this.triggerElement}),this.defaultState==="open"?this.show():w({state:"close",popper:this.contentElement,trigger:this.triggerElement}),this.triggerElement.addEventListener("click",this.toggleStateOnClick),this.triggerStrategy==="hover"&&this.triggerElement.addEventListener("mouseenter",this.showOnMouseEnter)}},y=class{static initGlobalRegistry(){window.$flexillaInstances||(window.$flexillaInstances={})}static register(e,t,s){return this.initGlobalRegistry(),window.$flexillaInstances[e]||(window.$flexillaInstances[e]=[]),this.getInstance(e,t)||(window.$flexillaInstances[e].push({element:t,instance:s}),s)}static getInstance(e,t){var s,o;return this.initGlobalRegistry(),(o=(s=window.$flexillaInstances[e])==null?void 0:s.find(n=>n.element===t))==null?void 0:o.instance}static removeInstance(e,t){this.initGlobalRegistry(),window.$flexillaInstances[e]&&(window.$flexillaInstances[e]=window.$flexillaInstances[e].filter(s=>s.element!==t))}},I=class i{constructor(e,t={}){p(this,"triggerElement"),p(this,"contentElement"),p(this,"options"),p(this,"PopoverInstance"),p(this,"triggerStrategy"),p(this,"placement"),p(this,"offsetDistance"),p(this,"preventFromCloseOutside"),p(this,"preventFromCloseInside"),p(this,"defaultState"),p(this,"setShowOptions",({placement:n,offsetDistance:r})=>{this.PopoverInstance.setShowOptions({placement:n,offsetDistance:r})}),p(this,"setOptions",({placement:n,offsetDistance:r})=>{this.PopoverInstance.setPopperOptions({placement:n,offsetDistance:r})}),p(this,"setPopperTrigger",(n,r)=>{this.PopoverInstance.setPopperTrigger(n,r)}),p(this,"show",()=>{this.PopoverInstance.show(),W(this.contentElement,"popover-show",{isHidden:!1})}),p(this,"hide",()=>{this.PopoverInstance.hide(),W(this.contentElement,"popover-hide",{isHidden:!0})}),p(this,"cleanup",()=>{this.PopoverInstance.cleanup(),y.removeInstance("popover",this.contentElement)});let s=typeof e=="string"?j(e):e;this.contentElement=s;let o=y.getInstance("popover",this.contentElement);if(o)return o;this.triggerElement=j(`[data-popover-trigger][data-popover-id=${s.getAttribute("id")}]`),this.options=t,this.triggerStrategy=this.options.triggerStrategy||s.dataset.triggerStrategy||"click",this.placement=this.options.placement||s.dataset.placement||"bottom-middle",this.offsetDistance=this.options.offsetDistance||parseInt(`${s.dataset.offsetDistance}`)|6,this.preventFromCloseOutside=this.options.preventFromCloseOutside||s.hasAttribute("data-prevent-close-outside")||!1,this.preventFromCloseInside=this.options.preventCloseFromInside||s.hasAttribute("data-prevent-close-inside")||!1,this.defaultState=this.options.defaultState||s.dataset.defaultState||"close",this.PopoverInstance=new F({trigger:this.triggerElement,content:this.contentElement,options:{placement:this.placement,offsetDistance:this.offsetDistance,triggerStrategy:this.triggerStrategy,preventFromCloseOutside:this.preventFromCloseOutside,preventCloseFromInside:this.preventFromCloseInside,defaultState:this.defaultState,onShow:this.options.onShow,onHide:this.options.onHide,onToggle:({isHidden:n})=>{var r,l;(l=(r=this.options).onToggle)==null||l.call(r,{isHidden:n}),W(this.contentElement,"popover-toggle",{isHidden:n})},popper:this.options.popper}}),y.register("popover",this.contentElement,this)}static init(e,t){return new i(e,t)}static autoInit(e="[data-fx-popover]"){let t=J(e);for(let s of t)new i(s)}};function ce(i){i.directive("popover",(e,{},{cleanup:t})=>{let s=new I(e);t(()=>{s.cleanup()})})}var K=ce;document.addEventListener("alpine:init",()=>{K(window.Alpine)});})();
|
package/dist/module.cjs.js
CHANGED
|
@@ -26,7 +26,7 @@ module.exports = __toCommonJS(module_exports);
|
|
|
26
26
|
// ../../node_modules/@flexilla/popover/dist/popover.js
|
|
27
27
|
var K = Object.defineProperty;
|
|
28
28
|
var U = (i, e, t) => e in i ? K(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t;
|
|
29
|
-
var
|
|
29
|
+
var h = (i, e, t) => U(i, typeof e != "symbol" ? e + "" : e, t);
|
|
30
30
|
var A = (i, e = document.body) => e.querySelector(i);
|
|
31
31
|
var j = (i, e = document.body) => Array.from(e.querySelectorAll(i));
|
|
32
32
|
var M = (i, e, t) => {
|
|
@@ -38,20 +38,22 @@ var B = (i, e, t) => e in i ? q(i, e, { enumerable: true, configurable: true, wr
|
|
|
38
38
|
var a = (i, e, t) => B(i, typeof e != "symbol" ? e + "" : e, t);
|
|
39
39
|
var J = "bottom";
|
|
40
40
|
var N = ({ reference: i, popper: e }) => {
|
|
41
|
-
|
|
41
|
+
if (!i || !e)
|
|
42
|
+
throw new Error("Reference or popper element is null or undefined");
|
|
43
|
+
const t = /* @__PURE__ */ new WeakMap(), s = (r) => (t.has(r) || t.set(r, r.getBoundingClientRect()), t.get(r)), o = s(e), n = s(i);
|
|
42
44
|
return {
|
|
43
|
-
popperHeight:
|
|
44
|
-
popperWidth:
|
|
45
|
-
refHeight:
|
|
46
|
-
refWidth:
|
|
47
|
-
refLeft:
|
|
48
|
-
refTop:
|
|
49
|
-
refRight:
|
|
45
|
+
popperHeight: o.height,
|
|
46
|
+
popperWidth: o.width,
|
|
47
|
+
refHeight: n.height,
|
|
48
|
+
refWidth: n.width,
|
|
49
|
+
refLeft: n.left,
|
|
50
|
+
refTop: n.top,
|
|
51
|
+
refRight: n.right
|
|
50
52
|
};
|
|
51
53
|
};
|
|
52
54
|
var Q = Object.defineProperty;
|
|
53
55
|
var V = (i, e, t) => e in i ? Q(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t;
|
|
54
|
-
var
|
|
56
|
+
var p = (i, e, t) => V(i, typeof e != "symbol" ? e + "" : e, t);
|
|
55
57
|
var X = (i, e, t, s) => {
|
|
56
58
|
const o = t, n = s - (t + e);
|
|
57
59
|
return o >= (i - e) / 2 && n >= (i - e) / 2;
|
|
@@ -78,7 +80,7 @@ var ne = ({
|
|
|
78
80
|
windowWidth: d,
|
|
79
81
|
offsetDistance: c
|
|
80
82
|
}) => {
|
|
81
|
-
const
|
|
83
|
+
const g = d - s - e, v = s, L = l - t - o, D = t, u = () => Z(
|
|
82
84
|
() => ee(t, o, r, l),
|
|
83
85
|
() => _(t, o, r, l),
|
|
84
86
|
t,
|
|
@@ -91,29 +93,29 @@ var ne = ({
|
|
|
91
93
|
n,
|
|
92
94
|
d,
|
|
93
95
|
e
|
|
94
|
-
), k = () => X(n, e, s, d) ? s + e / 2 - n / 2 : E(),
|
|
95
|
-
let
|
|
96
|
-
const
|
|
97
|
-
switch (i.startsWith("top") ? f = W ?
|
|
96
|
+
), k = () => X(n, e, s, d) ? s + e / 2 - n / 2 : E(), C = () => Y(r, o, t, l) ? t + o / 2 - r / 2 : u(), P = () => s + n <= d ? s : E(), y = () => s + e - n >= 0 ? s + e - n : E(), b = () => t + r <= l ? t : u(), G = () => t + o - r >= 0 ? t + o - r : u();
|
|
97
|
+
let m = 0, f = 0;
|
|
98
|
+
const T = t - r - c, S = t + o + c, O = s - n - c, I = s + e + c, W = D >= r + c, F = L >= r + c, R = v >= n + c, $ = g >= n + c;
|
|
99
|
+
switch (i.startsWith("top") ? f = W ? T : F ? S : Math.max(T, S) : i.startsWith("bottom") ? f = F ? S : W ? T : Math.max(S) : i.startsWith("left") ? m = R ? O : $ ? I : Math.max(O, I) : i.startsWith("right") && (m = $ ? I : R ? O : Math.max(I, O)), i) {
|
|
98
100
|
case "bottom":
|
|
99
101
|
case "bottom-middle":
|
|
100
102
|
case "top":
|
|
101
103
|
case "top-middle":
|
|
102
|
-
|
|
104
|
+
m = k();
|
|
103
105
|
break;
|
|
104
106
|
case "left":
|
|
105
107
|
case "left-middle":
|
|
106
108
|
case "right":
|
|
107
109
|
case "right-middle":
|
|
108
|
-
f =
|
|
110
|
+
f = C();
|
|
109
111
|
break;
|
|
110
112
|
case "bottom-start":
|
|
111
113
|
case "top-start":
|
|
112
|
-
|
|
114
|
+
m = P();
|
|
113
115
|
break;
|
|
114
116
|
case "bottom-end":
|
|
115
117
|
case "top-end":
|
|
116
|
-
|
|
118
|
+
m = y();
|
|
117
119
|
break;
|
|
118
120
|
case "left-start":
|
|
119
121
|
case "right-start":
|
|
@@ -124,7 +126,7 @@ var ne = ({
|
|
|
124
126
|
f = G();
|
|
125
127
|
break;
|
|
126
128
|
}
|
|
127
|
-
return { x:
|
|
129
|
+
return { x: m, y: f };
|
|
128
130
|
};
|
|
129
131
|
var oe = class {
|
|
130
132
|
/**
|
|
@@ -133,42 +135,57 @@ var oe = class {
|
|
|
133
135
|
* @param popper
|
|
134
136
|
* @param options
|
|
135
137
|
*/
|
|
138
|
+
/**
|
|
139
|
+
* Creates an instance of CreatePopper
|
|
140
|
+
* @param {HTMLElement} reference - The reference element to position against
|
|
141
|
+
* @param {HTMLElement} popper - The element to be positioned
|
|
142
|
+
* @param {PopperOptions} [options] - Configuration options
|
|
143
|
+
* @param {number} [options.offsetDistance] - Distance between popper and reference element
|
|
144
|
+
* @param {Placement} [options.placement] - Preferred placement of the popper
|
|
145
|
+
* @param {Object} [options.eventEffect] - Event handling configuration
|
|
146
|
+
* @param {boolean} [options.eventEffect.disableOnResize] - Disable position updates on window resize
|
|
147
|
+
* @param {boolean} [options.eventEffect.disableOnScroll] - Disable position updates on scroll
|
|
148
|
+
* @param {Function} [options.onUpdate] - Callback function when position updates
|
|
149
|
+
*/
|
|
136
150
|
constructor(e, t, s = {}) {
|
|
137
|
-
|
|
138
|
-
if (!(this.reference instanceof HTMLElement))
|
|
139
|
-
|
|
140
|
-
if (
|
|
141
|
-
|
|
142
|
-
this.
|
|
143
|
-
|
|
151
|
+
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", () => {
|
|
152
|
+
if (!(this.reference instanceof HTMLElement))
|
|
153
|
+
throw new Error("Invalid HTMLElement for Reference Element");
|
|
154
|
+
if (!(this.popper instanceof HTMLElement))
|
|
155
|
+
throw new Error("Invalid HTMLElement for Popper");
|
|
156
|
+
if (typeof this.offsetDistance != "number")
|
|
157
|
+
throw new Error("OffsetDistance must be a number");
|
|
158
|
+
}), p(this, "setPopperStyleProperty", (g, v) => {
|
|
159
|
+
this.popper.style.setProperty("--fx-popper-placement-x", `${g}px`), this.popper.style.setProperty("--fx-popper-placement-y", `${v}px`);
|
|
160
|
+
}), p(this, "setInitialStyles", () => {
|
|
144
161
|
this.popper.style.setProperty("--fx-popper-placement-x", ""), this.popper.style.setProperty("--fx-popper-placement-y", "");
|
|
145
|
-
}),
|
|
146
|
-
var
|
|
162
|
+
}), p(this, "initPlacement", () => {
|
|
163
|
+
var g;
|
|
147
164
|
this.validateElements(), this.setInitialStyles();
|
|
148
|
-
const v = window.innerWidth,
|
|
165
|
+
const v = window.innerWidth, L = window.innerHeight, { popperHeight: D, popperWidth: u, refHeight: E, refWidth: k, refLeft: C, refTop: P } = N({ reference: this.reference, popper: this.popper }), { x: y, y: b } = ne(
|
|
149
166
|
{
|
|
150
167
|
placement: this.placement,
|
|
151
168
|
refWidth: k,
|
|
152
|
-
refTop:
|
|
153
|
-
refLeft:
|
|
169
|
+
refTop: P,
|
|
170
|
+
refLeft: C,
|
|
154
171
|
popperWidth: u,
|
|
155
172
|
refHeight: E,
|
|
156
|
-
popperHeight:
|
|
157
|
-
windowHeight:
|
|
173
|
+
popperHeight: D,
|
|
174
|
+
windowHeight: L,
|
|
158
175
|
windowWidth: v,
|
|
159
176
|
offsetDistance: this.offsetDistance
|
|
160
177
|
}
|
|
161
178
|
);
|
|
162
|
-
this.setPopperStyleProperty(y, b), (
|
|
163
|
-
}),
|
|
179
|
+
this.setPopperStyleProperty(y, b), (g = this.onUpdate) == null || g.call(this, { x: y, y: b, placement: this.placement });
|
|
180
|
+
}), p(this, "removeWindowEvents", () => {
|
|
164
181
|
this.isWindowEventsRegistered && (!this.disableOnResize && window.removeEventListener("resize", this.updatePosition), !this.disableOnScroll && window.removeEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = false);
|
|
165
|
-
}),
|
|
182
|
+
}), p(this, "attachWindowEvent", () => {
|
|
166
183
|
this.isWindowEventsRegistered && this.removeWindowEvents(), this.disableOnResize || window.addEventListener("resize", this.updatePosition), this.disableOnScroll || window.addEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = true;
|
|
167
|
-
}),
|
|
184
|
+
}), p(this, "resetPosition", () => {
|
|
168
185
|
this.setInitialStyles();
|
|
169
|
-
}),
|
|
186
|
+
}), p(this, "updatePosition", () => {
|
|
170
187
|
this.initPlacement(), this.attachWindowEvent();
|
|
171
|
-
}),
|
|
188
|
+
}), p(this, "cleanupEvents", () => {
|
|
172
189
|
this.setInitialStyles(), this.removeWindowEvents();
|
|
173
190
|
});
|
|
174
191
|
const {
|
|
@@ -177,12 +194,22 @@ var oe = class {
|
|
|
177
194
|
eventEffect: r = {},
|
|
178
195
|
onUpdate: l
|
|
179
196
|
} = s;
|
|
180
|
-
if (!(e instanceof HTMLElement))
|
|
181
|
-
|
|
182
|
-
if (
|
|
197
|
+
if (!(e instanceof HTMLElement))
|
|
198
|
+
throw new Error("Invalid HTMLElement for Reference Element");
|
|
199
|
+
if (!(t instanceof HTMLElement))
|
|
200
|
+
throw new Error("Invalid HTMLElement for Popper");
|
|
201
|
+
if (s.offsetDistance && typeof s.offsetDistance != "number")
|
|
202
|
+
throw new Error("OffsetDistance must be a number");
|
|
183
203
|
const { disableOnResize: d, disableOnScroll: c } = r;
|
|
184
204
|
this.isWindowEventsRegistered = false, this.reference = e, this.popper = t, this.offsetDistance = o, this.placement = n, this.disableOnResize = d || false, this.disableOnScroll = c || false, this.onUpdate = l;
|
|
185
205
|
}
|
|
206
|
+
/**
|
|
207
|
+
* Updates popper configuration and recalculates position
|
|
208
|
+
* @public
|
|
209
|
+
* @param {Object} options - New configuration options
|
|
210
|
+
* @param {Placement} options.placement - New placement value
|
|
211
|
+
* @param {number} [options.offsetDistance] - New offset distance
|
|
212
|
+
*/
|
|
186
213
|
setOptions({ placement: e, offsetDistance: t }) {
|
|
187
214
|
this.placement = e, this.offsetDistance = t || this.offsetDistance, this.initPlacement(), this.attachWindowEvent();
|
|
188
215
|
}
|
|
@@ -219,10 +246,11 @@ var le = ({
|
|
|
219
246
|
});
|
|
220
247
|
};
|
|
221
248
|
var w = ({ state: i, trigger: e, popper: t }) => {
|
|
249
|
+
const s = i === "open";
|
|
222
250
|
z(t, {
|
|
223
251
|
"data-state": i
|
|
224
252
|
}), z(e, {
|
|
225
|
-
"aria-expanded": `${
|
|
253
|
+
"aria-expanded": `${s}`
|
|
226
254
|
});
|
|
227
255
|
};
|
|
228
256
|
var he = class {
|
|
@@ -232,7 +260,6 @@ var he = class {
|
|
|
232
260
|
* @param {string | HTMLElement} params.trigger - The trigger element selector or HTMLElement
|
|
233
261
|
* @param {string | HTMLElement} params.content - The content element selector or HTMLElement
|
|
234
262
|
* @param {OverlayOptions} [params.options] - Configuration options for the overlay
|
|
235
|
-
* @throws {Error} When trigger or content elements are invalid
|
|
236
263
|
*/
|
|
237
264
|
constructor({ trigger: e, content: t, options: s = {} }) {
|
|
238
265
|
a(this, "triggerElement"), a(this, "contentElement"), a(this, "triggerStrategy"), a(this, "placement"), a(this, "offsetDistance"), a(this, "preventFromCloseOutside"), a(this, "preventFromCloseInside"), a(this, "options"), a(this, "defaultState"), a(this, "popper"), a(this, "eventEffect"), a(this, "getElement", (n) => typeof n == "string" ? re(n) : n instanceof HTMLElement ? n : void 0), a(this, "handleDocumentClick", (n) => {
|
|
@@ -254,7 +281,7 @@ var he = class {
|
|
|
254
281
|
}), a(this, "showOnMouseEnter", () => {
|
|
255
282
|
this.show(), this.addEventOnMouseEnter();
|
|
256
283
|
}), a(this, "setShowOptions", ({ placement: n, offsetDistance: r }) => {
|
|
257
|
-
var l, d, c,
|
|
284
|
+
var l, d, c, g;
|
|
258
285
|
this.popper.setOptions({
|
|
259
286
|
placement: n,
|
|
260
287
|
offsetDistance: r
|
|
@@ -262,18 +289,25 @@ var he = class {
|
|
|
262
289
|
state: "open",
|
|
263
290
|
popper: this.contentElement,
|
|
264
291
|
trigger: this.triggerElement
|
|
265
|
-
}), this.onToggleState(false), (
|
|
292
|
+
}), this.onToggleState(false), (g = (c = this.options).onShow) == null || g.call(c);
|
|
266
293
|
}), a(this, "setPopperOptions", ({ placement: n, offsetDistance: r }) => {
|
|
267
294
|
this.popper.setOptions({
|
|
268
295
|
placement: n,
|
|
269
|
-
offsetDistance: r
|
|
296
|
+
offsetDistance: r || this.offsetDistance
|
|
270
297
|
});
|
|
298
|
+
}), a(this, "setPopperTrigger", (n, r) => {
|
|
299
|
+
this.cleanup(), this.popper.setOptions({
|
|
300
|
+
placement: r.placement || this.placement,
|
|
301
|
+
offsetDistance: r.offsetDistance || this.offsetDistance
|
|
302
|
+
}), this.triggerElement = n, this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
|
|
271
303
|
}), a(this, "cleanup", () => {
|
|
272
304
|
this.triggerElement.removeEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.removeEventListener("mouseenter", this.showOnMouseEnter);
|
|
273
305
|
});
|
|
274
306
|
var o;
|
|
275
|
-
if (this.contentElement = this.getElement(t), this.triggerElement = this.getElement(e), !(this.triggerElement instanceof HTMLElement))
|
|
276
|
-
|
|
307
|
+
if (this.contentElement = this.getElement(t), this.triggerElement = this.getElement(e), !(this.triggerElement instanceof HTMLElement))
|
|
308
|
+
throw new Error("Trigger element must be a valid HTML element");
|
|
309
|
+
if (!(this.contentElement instanceof HTMLElement))
|
|
310
|
+
throw new Error("Content element must be a valid HTML element");
|
|
277
311
|
this.options = s, 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 oe(
|
|
278
312
|
this.triggerElement,
|
|
279
313
|
this.contentElement,
|
|
@@ -330,7 +364,7 @@ var he = class {
|
|
|
330
364
|
}), this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
|
|
331
365
|
}
|
|
332
366
|
};
|
|
333
|
-
var
|
|
367
|
+
var H = class {
|
|
334
368
|
static initGlobalRegistry() {
|
|
335
369
|
window.$flexillaInstances || (window.$flexillaInstances = {});
|
|
336
370
|
}
|
|
@@ -349,7 +383,7 @@ var x = class {
|
|
|
349
383
|
));
|
|
350
384
|
}
|
|
351
385
|
};
|
|
352
|
-
var
|
|
386
|
+
var x = class _x {
|
|
353
387
|
/**
|
|
354
388
|
* Creates a new Popover instance.
|
|
355
389
|
* @param {string | HTMLElement} popoverEl - The popover content element or its selector.
|
|
@@ -366,35 +400,41 @@ var P = class _P {
|
|
|
366
400
|
* });
|
|
367
401
|
*/
|
|
368
402
|
constructor(e, t = {}) {
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
403
|
+
h(this, "triggerElement");
|
|
404
|
+
h(this, "contentElement");
|
|
405
|
+
h(this, "options");
|
|
406
|
+
h(this, "PopoverInstance");
|
|
407
|
+
h(this, "triggerStrategy");
|
|
408
|
+
h(this, "placement");
|
|
409
|
+
h(this, "offsetDistance");
|
|
410
|
+
h(this, "preventFromCloseOutside");
|
|
411
|
+
h(this, "preventFromCloseInside");
|
|
412
|
+
h(this, "defaultState");
|
|
413
|
+
h(this, "setShowOptions", ({ placement: e2, offsetDistance: t2 }) => {
|
|
380
414
|
this.PopoverInstance.setShowOptions({ placement: e2, offsetDistance: t2 });
|
|
381
415
|
});
|
|
382
|
-
|
|
416
|
+
h(this, "setOptions", ({ placement: e2, offsetDistance: t2 }) => {
|
|
417
|
+
this.PopoverInstance.setPopperOptions({ placement: e2, offsetDistance: t2 });
|
|
418
|
+
});
|
|
419
|
+
h(this, "setPopperTrigger", (e2, t2) => {
|
|
420
|
+
this.PopoverInstance.setPopperTrigger(e2, t2);
|
|
421
|
+
});
|
|
422
|
+
h(this, "show", () => {
|
|
383
423
|
this.PopoverInstance.show(), M(this.contentElement, "popover-show", {
|
|
384
424
|
isHidden: false
|
|
385
425
|
});
|
|
386
426
|
});
|
|
387
|
-
|
|
427
|
+
h(this, "hide", () => {
|
|
388
428
|
this.PopoverInstance.hide(), M(this.contentElement, "popover-hide", {
|
|
389
429
|
isHidden: true
|
|
390
430
|
});
|
|
391
431
|
});
|
|
392
|
-
|
|
393
|
-
this.PopoverInstance.cleanup(),
|
|
432
|
+
h(this, "cleanup", () => {
|
|
433
|
+
this.PopoverInstance.cleanup(), H.removeInstance("popover", this.contentElement);
|
|
394
434
|
});
|
|
395
435
|
const s = typeof e == "string" ? A(e) : e;
|
|
396
436
|
this.contentElement = s;
|
|
397
|
-
const o =
|
|
437
|
+
const o = H.getInstance("popover", this.contentElement);
|
|
398
438
|
if (o)
|
|
399
439
|
return o;
|
|
400
440
|
this.triggerElement = A(`[data-popover-trigger][data-popover-id=${s.getAttribute("id")}]`), this.options = t, this.triggerStrategy = this.options.triggerStrategy || s.dataset.triggerStrategy || "click", this.placement = this.options.placement || s.dataset.placement || "bottom-middle", this.offsetDistance = this.options.offsetDistance || parseInt(`${s.dataset.offsetDistance}`) | 6, this.preventFromCloseOutside = this.options.preventFromCloseOutside || s.hasAttribute("data-prevent-close-outside") || false, this.preventFromCloseInside = this.options.preventCloseFromInside || s.hasAttribute("data-prevent-close-inside") || false, this.defaultState = this.options.defaultState || s.dataset.defaultState || "close", this.PopoverInstance = new he({
|
|
@@ -417,7 +457,7 @@ var P = class _P {
|
|
|
417
457
|
},
|
|
418
458
|
popper: this.options.popper
|
|
419
459
|
}
|
|
420
|
-
}),
|
|
460
|
+
}), H.register("popover", this.contentElement, this);
|
|
421
461
|
}
|
|
422
462
|
/**
|
|
423
463
|
* Creates a new Popover instance with the specified options.
|
|
@@ -431,7 +471,7 @@ var P = class _P {
|
|
|
431
471
|
* });
|
|
432
472
|
*/
|
|
433
473
|
static init(e, t) {
|
|
434
|
-
return new
|
|
474
|
+
return new _x(e, t);
|
|
435
475
|
}
|
|
436
476
|
/**
|
|
437
477
|
* Automatically initializes all popover elements matching the specified selector.
|
|
@@ -445,14 +485,15 @@ var P = class _P {
|
|
|
445
485
|
*/
|
|
446
486
|
static autoInit(e = "[data-fx-popover]") {
|
|
447
487
|
const t = j(e);
|
|
448
|
-
for (const s of t)
|
|
488
|
+
for (const s of t)
|
|
489
|
+
new _x(s);
|
|
449
490
|
}
|
|
450
491
|
};
|
|
451
492
|
|
|
452
493
|
// src/index.js
|
|
453
494
|
function Popover(Alpine) {
|
|
454
495
|
Alpine.directive("popover", (el, {}, { cleanup }) => {
|
|
455
|
-
const popover_ = new
|
|
496
|
+
const popover_ = new x(el);
|
|
456
497
|
cleanup(() => {
|
|
457
498
|
popover_.cleanup();
|
|
458
499
|
});
|
package/dist/module.esm.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ../../node_modules/@flexilla/popover/dist/popover.js
|
|
2
2
|
var K = Object.defineProperty;
|
|
3
3
|
var U = (i, e, t) => e in i ? K(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t;
|
|
4
|
-
var
|
|
4
|
+
var h = (i, e, t) => U(i, typeof e != "symbol" ? e + "" : e, t);
|
|
5
5
|
var A = (i, e = document.body) => e.querySelector(i);
|
|
6
6
|
var j = (i, e = document.body) => Array.from(e.querySelectorAll(i));
|
|
7
7
|
var M = (i, e, t) => {
|
|
@@ -13,20 +13,22 @@ var B = (i, e, t) => e in i ? q(i, e, { enumerable: true, configurable: true, wr
|
|
|
13
13
|
var a = (i, e, t) => B(i, typeof e != "symbol" ? e + "" : e, t);
|
|
14
14
|
var J = "bottom";
|
|
15
15
|
var N = ({ reference: i, popper: e }) => {
|
|
16
|
-
|
|
16
|
+
if (!i || !e)
|
|
17
|
+
throw new Error("Reference or popper element is null or undefined");
|
|
18
|
+
const t = /* @__PURE__ */ new WeakMap(), s = (r) => (t.has(r) || t.set(r, r.getBoundingClientRect()), t.get(r)), o = s(e), n = s(i);
|
|
17
19
|
return {
|
|
18
|
-
popperHeight:
|
|
19
|
-
popperWidth:
|
|
20
|
-
refHeight:
|
|
21
|
-
refWidth:
|
|
22
|
-
refLeft:
|
|
23
|
-
refTop:
|
|
24
|
-
refRight:
|
|
20
|
+
popperHeight: o.height,
|
|
21
|
+
popperWidth: o.width,
|
|
22
|
+
refHeight: n.height,
|
|
23
|
+
refWidth: n.width,
|
|
24
|
+
refLeft: n.left,
|
|
25
|
+
refTop: n.top,
|
|
26
|
+
refRight: n.right
|
|
25
27
|
};
|
|
26
28
|
};
|
|
27
29
|
var Q = Object.defineProperty;
|
|
28
30
|
var V = (i, e, t) => e in i ? Q(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t;
|
|
29
|
-
var
|
|
31
|
+
var p = (i, e, t) => V(i, typeof e != "symbol" ? e + "" : e, t);
|
|
30
32
|
var X = (i, e, t, s) => {
|
|
31
33
|
const o = t, n = s - (t + e);
|
|
32
34
|
return o >= (i - e) / 2 && n >= (i - e) / 2;
|
|
@@ -53,7 +55,7 @@ var ne = ({
|
|
|
53
55
|
windowWidth: d,
|
|
54
56
|
offsetDistance: c
|
|
55
57
|
}) => {
|
|
56
|
-
const
|
|
58
|
+
const g = d - s - e, v = s, L = l - t - o, D = t, u = () => Z(
|
|
57
59
|
() => ee(t, o, r, l),
|
|
58
60
|
() => _(t, o, r, l),
|
|
59
61
|
t,
|
|
@@ -66,29 +68,29 @@ var ne = ({
|
|
|
66
68
|
n,
|
|
67
69
|
d,
|
|
68
70
|
e
|
|
69
|
-
), k = () => X(n, e, s, d) ? s + e / 2 - n / 2 : E(),
|
|
70
|
-
let
|
|
71
|
-
const
|
|
72
|
-
switch (i.startsWith("top") ? f = W ?
|
|
71
|
+
), k = () => X(n, e, s, d) ? s + e / 2 - n / 2 : E(), C = () => Y(r, o, t, l) ? t + o / 2 - r / 2 : u(), P = () => s + n <= d ? s : E(), y = () => s + e - n >= 0 ? s + e - n : E(), b = () => t + r <= l ? t : u(), G = () => t + o - r >= 0 ? t + o - r : u();
|
|
72
|
+
let m = 0, f = 0;
|
|
73
|
+
const T = t - r - c, S = t + o + c, O = s - n - c, I = s + e + c, W = D >= r + c, F = L >= r + c, R = v >= n + c, $ = g >= n + c;
|
|
74
|
+
switch (i.startsWith("top") ? f = W ? T : F ? S : Math.max(T, S) : i.startsWith("bottom") ? f = F ? S : W ? T : Math.max(S) : i.startsWith("left") ? m = R ? O : $ ? I : Math.max(O, I) : i.startsWith("right") && (m = $ ? I : R ? O : Math.max(I, O)), i) {
|
|
73
75
|
case "bottom":
|
|
74
76
|
case "bottom-middle":
|
|
75
77
|
case "top":
|
|
76
78
|
case "top-middle":
|
|
77
|
-
|
|
79
|
+
m = k();
|
|
78
80
|
break;
|
|
79
81
|
case "left":
|
|
80
82
|
case "left-middle":
|
|
81
83
|
case "right":
|
|
82
84
|
case "right-middle":
|
|
83
|
-
f =
|
|
85
|
+
f = C();
|
|
84
86
|
break;
|
|
85
87
|
case "bottom-start":
|
|
86
88
|
case "top-start":
|
|
87
|
-
|
|
89
|
+
m = P();
|
|
88
90
|
break;
|
|
89
91
|
case "bottom-end":
|
|
90
92
|
case "top-end":
|
|
91
|
-
|
|
93
|
+
m = y();
|
|
92
94
|
break;
|
|
93
95
|
case "left-start":
|
|
94
96
|
case "right-start":
|
|
@@ -99,7 +101,7 @@ var ne = ({
|
|
|
99
101
|
f = G();
|
|
100
102
|
break;
|
|
101
103
|
}
|
|
102
|
-
return { x:
|
|
104
|
+
return { x: m, y: f };
|
|
103
105
|
};
|
|
104
106
|
var oe = class {
|
|
105
107
|
/**
|
|
@@ -108,42 +110,57 @@ var oe = class {
|
|
|
108
110
|
* @param popper
|
|
109
111
|
* @param options
|
|
110
112
|
*/
|
|
113
|
+
/**
|
|
114
|
+
* Creates an instance of CreatePopper
|
|
115
|
+
* @param {HTMLElement} reference - The reference element to position against
|
|
116
|
+
* @param {HTMLElement} popper - The element to be positioned
|
|
117
|
+
* @param {PopperOptions} [options] - Configuration options
|
|
118
|
+
* @param {number} [options.offsetDistance] - Distance between popper and reference element
|
|
119
|
+
* @param {Placement} [options.placement] - Preferred placement of the popper
|
|
120
|
+
* @param {Object} [options.eventEffect] - Event handling configuration
|
|
121
|
+
* @param {boolean} [options.eventEffect.disableOnResize] - Disable position updates on window resize
|
|
122
|
+
* @param {boolean} [options.eventEffect.disableOnScroll] - Disable position updates on scroll
|
|
123
|
+
* @param {Function} [options.onUpdate] - Callback function when position updates
|
|
124
|
+
*/
|
|
111
125
|
constructor(e, t, s = {}) {
|
|
112
|
-
|
|
113
|
-
if (!(this.reference instanceof HTMLElement))
|
|
114
|
-
|
|
115
|
-
if (
|
|
116
|
-
|
|
117
|
-
this.
|
|
118
|
-
|
|
126
|
+
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", () => {
|
|
127
|
+
if (!(this.reference instanceof HTMLElement))
|
|
128
|
+
throw new Error("Invalid HTMLElement for Reference Element");
|
|
129
|
+
if (!(this.popper instanceof HTMLElement))
|
|
130
|
+
throw new Error("Invalid HTMLElement for Popper");
|
|
131
|
+
if (typeof this.offsetDistance != "number")
|
|
132
|
+
throw new Error("OffsetDistance must be a number");
|
|
133
|
+
}), p(this, "setPopperStyleProperty", (g, v) => {
|
|
134
|
+
this.popper.style.setProperty("--fx-popper-placement-x", `${g}px`), this.popper.style.setProperty("--fx-popper-placement-y", `${v}px`);
|
|
135
|
+
}), p(this, "setInitialStyles", () => {
|
|
119
136
|
this.popper.style.setProperty("--fx-popper-placement-x", ""), this.popper.style.setProperty("--fx-popper-placement-y", "");
|
|
120
|
-
}),
|
|
121
|
-
var
|
|
137
|
+
}), p(this, "initPlacement", () => {
|
|
138
|
+
var g;
|
|
122
139
|
this.validateElements(), this.setInitialStyles();
|
|
123
|
-
const v = window.innerWidth,
|
|
140
|
+
const v = window.innerWidth, L = window.innerHeight, { popperHeight: D, popperWidth: u, refHeight: E, refWidth: k, refLeft: C, refTop: P } = N({ reference: this.reference, popper: this.popper }), { x: y, y: b } = ne(
|
|
124
141
|
{
|
|
125
142
|
placement: this.placement,
|
|
126
143
|
refWidth: k,
|
|
127
|
-
refTop:
|
|
128
|
-
refLeft:
|
|
144
|
+
refTop: P,
|
|
145
|
+
refLeft: C,
|
|
129
146
|
popperWidth: u,
|
|
130
147
|
refHeight: E,
|
|
131
|
-
popperHeight:
|
|
132
|
-
windowHeight:
|
|
148
|
+
popperHeight: D,
|
|
149
|
+
windowHeight: L,
|
|
133
150
|
windowWidth: v,
|
|
134
151
|
offsetDistance: this.offsetDistance
|
|
135
152
|
}
|
|
136
153
|
);
|
|
137
|
-
this.setPopperStyleProperty(y, b), (
|
|
138
|
-
}),
|
|
154
|
+
this.setPopperStyleProperty(y, b), (g = this.onUpdate) == null || g.call(this, { x: y, y: b, placement: this.placement });
|
|
155
|
+
}), p(this, "removeWindowEvents", () => {
|
|
139
156
|
this.isWindowEventsRegistered && (!this.disableOnResize && window.removeEventListener("resize", this.updatePosition), !this.disableOnScroll && window.removeEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = false);
|
|
140
|
-
}),
|
|
157
|
+
}), p(this, "attachWindowEvent", () => {
|
|
141
158
|
this.isWindowEventsRegistered && this.removeWindowEvents(), this.disableOnResize || window.addEventListener("resize", this.updatePosition), this.disableOnScroll || window.addEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = true;
|
|
142
|
-
}),
|
|
159
|
+
}), p(this, "resetPosition", () => {
|
|
143
160
|
this.setInitialStyles();
|
|
144
|
-
}),
|
|
161
|
+
}), p(this, "updatePosition", () => {
|
|
145
162
|
this.initPlacement(), this.attachWindowEvent();
|
|
146
|
-
}),
|
|
163
|
+
}), p(this, "cleanupEvents", () => {
|
|
147
164
|
this.setInitialStyles(), this.removeWindowEvents();
|
|
148
165
|
});
|
|
149
166
|
const {
|
|
@@ -152,12 +169,22 @@ var oe = class {
|
|
|
152
169
|
eventEffect: r = {},
|
|
153
170
|
onUpdate: l
|
|
154
171
|
} = s;
|
|
155
|
-
if (!(e instanceof HTMLElement))
|
|
156
|
-
|
|
157
|
-
if (
|
|
172
|
+
if (!(e instanceof HTMLElement))
|
|
173
|
+
throw new Error("Invalid HTMLElement for Reference Element");
|
|
174
|
+
if (!(t instanceof HTMLElement))
|
|
175
|
+
throw new Error("Invalid HTMLElement for Popper");
|
|
176
|
+
if (s.offsetDistance && typeof s.offsetDistance != "number")
|
|
177
|
+
throw new Error("OffsetDistance must be a number");
|
|
158
178
|
const { disableOnResize: d, disableOnScroll: c } = r;
|
|
159
179
|
this.isWindowEventsRegistered = false, this.reference = e, this.popper = t, this.offsetDistance = o, this.placement = n, this.disableOnResize = d || false, this.disableOnScroll = c || false, this.onUpdate = l;
|
|
160
180
|
}
|
|
181
|
+
/**
|
|
182
|
+
* Updates popper configuration and recalculates position
|
|
183
|
+
* @public
|
|
184
|
+
* @param {Object} options - New configuration options
|
|
185
|
+
* @param {Placement} options.placement - New placement value
|
|
186
|
+
* @param {number} [options.offsetDistance] - New offset distance
|
|
187
|
+
*/
|
|
161
188
|
setOptions({ placement: e, offsetDistance: t }) {
|
|
162
189
|
this.placement = e, this.offsetDistance = t || this.offsetDistance, this.initPlacement(), this.attachWindowEvent();
|
|
163
190
|
}
|
|
@@ -194,10 +221,11 @@ var le = ({
|
|
|
194
221
|
});
|
|
195
222
|
};
|
|
196
223
|
var w = ({ state: i, trigger: e, popper: t }) => {
|
|
224
|
+
const s = i === "open";
|
|
197
225
|
z(t, {
|
|
198
226
|
"data-state": i
|
|
199
227
|
}), z(e, {
|
|
200
|
-
"aria-expanded": `${
|
|
228
|
+
"aria-expanded": `${s}`
|
|
201
229
|
});
|
|
202
230
|
};
|
|
203
231
|
var he = class {
|
|
@@ -207,7 +235,6 @@ var he = class {
|
|
|
207
235
|
* @param {string | HTMLElement} params.trigger - The trigger element selector or HTMLElement
|
|
208
236
|
* @param {string | HTMLElement} params.content - The content element selector or HTMLElement
|
|
209
237
|
* @param {OverlayOptions} [params.options] - Configuration options for the overlay
|
|
210
|
-
* @throws {Error} When trigger or content elements are invalid
|
|
211
238
|
*/
|
|
212
239
|
constructor({ trigger: e, content: t, options: s = {} }) {
|
|
213
240
|
a(this, "triggerElement"), a(this, "contentElement"), a(this, "triggerStrategy"), a(this, "placement"), a(this, "offsetDistance"), a(this, "preventFromCloseOutside"), a(this, "preventFromCloseInside"), a(this, "options"), a(this, "defaultState"), a(this, "popper"), a(this, "eventEffect"), a(this, "getElement", (n) => typeof n == "string" ? re(n) : n instanceof HTMLElement ? n : void 0), a(this, "handleDocumentClick", (n) => {
|
|
@@ -229,7 +256,7 @@ var he = class {
|
|
|
229
256
|
}), a(this, "showOnMouseEnter", () => {
|
|
230
257
|
this.show(), this.addEventOnMouseEnter();
|
|
231
258
|
}), a(this, "setShowOptions", ({ placement: n, offsetDistance: r }) => {
|
|
232
|
-
var l, d, c,
|
|
259
|
+
var l, d, c, g;
|
|
233
260
|
this.popper.setOptions({
|
|
234
261
|
placement: n,
|
|
235
262
|
offsetDistance: r
|
|
@@ -237,18 +264,25 @@ var he = class {
|
|
|
237
264
|
state: "open",
|
|
238
265
|
popper: this.contentElement,
|
|
239
266
|
trigger: this.triggerElement
|
|
240
|
-
}), this.onToggleState(false), (
|
|
267
|
+
}), this.onToggleState(false), (g = (c = this.options).onShow) == null || g.call(c);
|
|
241
268
|
}), a(this, "setPopperOptions", ({ placement: n, offsetDistance: r }) => {
|
|
242
269
|
this.popper.setOptions({
|
|
243
270
|
placement: n,
|
|
244
|
-
offsetDistance: r
|
|
271
|
+
offsetDistance: r || this.offsetDistance
|
|
245
272
|
});
|
|
273
|
+
}), a(this, "setPopperTrigger", (n, r) => {
|
|
274
|
+
this.cleanup(), this.popper.setOptions({
|
|
275
|
+
placement: r.placement || this.placement,
|
|
276
|
+
offsetDistance: r.offsetDistance || this.offsetDistance
|
|
277
|
+
}), this.triggerElement = n, this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
|
|
246
278
|
}), a(this, "cleanup", () => {
|
|
247
279
|
this.triggerElement.removeEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.removeEventListener("mouseenter", this.showOnMouseEnter);
|
|
248
280
|
});
|
|
249
281
|
var o;
|
|
250
|
-
if (this.contentElement = this.getElement(t), this.triggerElement = this.getElement(e), !(this.triggerElement instanceof HTMLElement))
|
|
251
|
-
|
|
282
|
+
if (this.contentElement = this.getElement(t), this.triggerElement = this.getElement(e), !(this.triggerElement instanceof HTMLElement))
|
|
283
|
+
throw new Error("Trigger element must be a valid HTML element");
|
|
284
|
+
if (!(this.contentElement instanceof HTMLElement))
|
|
285
|
+
throw new Error("Content element must be a valid HTML element");
|
|
252
286
|
this.options = s, 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 oe(
|
|
253
287
|
this.triggerElement,
|
|
254
288
|
this.contentElement,
|
|
@@ -305,7 +339,7 @@ var he = class {
|
|
|
305
339
|
}), this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
|
|
306
340
|
}
|
|
307
341
|
};
|
|
308
|
-
var
|
|
342
|
+
var H = class {
|
|
309
343
|
static initGlobalRegistry() {
|
|
310
344
|
window.$flexillaInstances || (window.$flexillaInstances = {});
|
|
311
345
|
}
|
|
@@ -324,7 +358,7 @@ var x = class {
|
|
|
324
358
|
));
|
|
325
359
|
}
|
|
326
360
|
};
|
|
327
|
-
var
|
|
361
|
+
var x = class _x {
|
|
328
362
|
/**
|
|
329
363
|
* Creates a new Popover instance.
|
|
330
364
|
* @param {string | HTMLElement} popoverEl - The popover content element or its selector.
|
|
@@ -341,35 +375,41 @@ var P = class _P {
|
|
|
341
375
|
* });
|
|
342
376
|
*/
|
|
343
377
|
constructor(e, t = {}) {
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
378
|
+
h(this, "triggerElement");
|
|
379
|
+
h(this, "contentElement");
|
|
380
|
+
h(this, "options");
|
|
381
|
+
h(this, "PopoverInstance");
|
|
382
|
+
h(this, "triggerStrategy");
|
|
383
|
+
h(this, "placement");
|
|
384
|
+
h(this, "offsetDistance");
|
|
385
|
+
h(this, "preventFromCloseOutside");
|
|
386
|
+
h(this, "preventFromCloseInside");
|
|
387
|
+
h(this, "defaultState");
|
|
388
|
+
h(this, "setShowOptions", ({ placement: e2, offsetDistance: t2 }) => {
|
|
355
389
|
this.PopoverInstance.setShowOptions({ placement: e2, offsetDistance: t2 });
|
|
356
390
|
});
|
|
357
|
-
|
|
391
|
+
h(this, "setOptions", ({ placement: e2, offsetDistance: t2 }) => {
|
|
392
|
+
this.PopoverInstance.setPopperOptions({ placement: e2, offsetDistance: t2 });
|
|
393
|
+
});
|
|
394
|
+
h(this, "setPopperTrigger", (e2, t2) => {
|
|
395
|
+
this.PopoverInstance.setPopperTrigger(e2, t2);
|
|
396
|
+
});
|
|
397
|
+
h(this, "show", () => {
|
|
358
398
|
this.PopoverInstance.show(), M(this.contentElement, "popover-show", {
|
|
359
399
|
isHidden: false
|
|
360
400
|
});
|
|
361
401
|
});
|
|
362
|
-
|
|
402
|
+
h(this, "hide", () => {
|
|
363
403
|
this.PopoverInstance.hide(), M(this.contentElement, "popover-hide", {
|
|
364
404
|
isHidden: true
|
|
365
405
|
});
|
|
366
406
|
});
|
|
367
|
-
|
|
368
|
-
this.PopoverInstance.cleanup(),
|
|
407
|
+
h(this, "cleanup", () => {
|
|
408
|
+
this.PopoverInstance.cleanup(), H.removeInstance("popover", this.contentElement);
|
|
369
409
|
});
|
|
370
410
|
const s = typeof e == "string" ? A(e) : e;
|
|
371
411
|
this.contentElement = s;
|
|
372
|
-
const o =
|
|
412
|
+
const o = H.getInstance("popover", this.contentElement);
|
|
373
413
|
if (o)
|
|
374
414
|
return o;
|
|
375
415
|
this.triggerElement = A(`[data-popover-trigger][data-popover-id=${s.getAttribute("id")}]`), this.options = t, this.triggerStrategy = this.options.triggerStrategy || s.dataset.triggerStrategy || "click", this.placement = this.options.placement || s.dataset.placement || "bottom-middle", this.offsetDistance = this.options.offsetDistance || parseInt(`${s.dataset.offsetDistance}`) | 6, this.preventFromCloseOutside = this.options.preventFromCloseOutside || s.hasAttribute("data-prevent-close-outside") || false, this.preventFromCloseInside = this.options.preventCloseFromInside || s.hasAttribute("data-prevent-close-inside") || false, this.defaultState = this.options.defaultState || s.dataset.defaultState || "close", this.PopoverInstance = new he({
|
|
@@ -392,7 +432,7 @@ var P = class _P {
|
|
|
392
432
|
},
|
|
393
433
|
popper: this.options.popper
|
|
394
434
|
}
|
|
395
|
-
}),
|
|
435
|
+
}), H.register("popover", this.contentElement, this);
|
|
396
436
|
}
|
|
397
437
|
/**
|
|
398
438
|
* Creates a new Popover instance with the specified options.
|
|
@@ -406,7 +446,7 @@ var P = class _P {
|
|
|
406
446
|
* });
|
|
407
447
|
*/
|
|
408
448
|
static init(e, t) {
|
|
409
|
-
return new
|
|
449
|
+
return new _x(e, t);
|
|
410
450
|
}
|
|
411
451
|
/**
|
|
412
452
|
* Automatically initializes all popover elements matching the specified selector.
|
|
@@ -420,14 +460,15 @@ var P = class _P {
|
|
|
420
460
|
*/
|
|
421
461
|
static autoInit(e = "[data-fx-popover]") {
|
|
422
462
|
const t = j(e);
|
|
423
|
-
for (const s of t)
|
|
463
|
+
for (const s of t)
|
|
464
|
+
new _x(s);
|
|
424
465
|
}
|
|
425
466
|
};
|
|
426
467
|
|
|
427
468
|
// src/index.js
|
|
428
469
|
function Popover(Alpine) {
|
|
429
470
|
Alpine.directive("popover", (el, {}, { cleanup }) => {
|
|
430
|
-
const popover_ = new
|
|
471
|
+
const popover_ = new x(el);
|
|
431
472
|
cleanup(() => {
|
|
432
473
|
popover_.cleanup();
|
|
433
474
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flexilla/alpine-popover",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2",
|
|
4
4
|
"description": "AlpineJS plugin for adding Popover 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/popover": "^0.2.
|
|
61
|
+
"@flexilla/popover": "^0.2.3"
|
|
62
62
|
},
|
|
63
|
-
"gitHead": "
|
|
63
|
+
"gitHead": "584636c3f3b85dfa71666f5354221dcfc385f9e6"
|
|
64
64
|
}
|