@flexilla/alpine-popover 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdn.js +231 -162
- package/dist/cdn.min.js +1 -1
- package/dist/module.cjs.js +232 -162
- package/dist/module.esm.js +231 -162
- package/package.json +3 -3
package/dist/cdn.js
CHANGED
|
@@ -1,101 +1,101 @@
|
|
|
1
1
|
(() => {
|
|
2
2
|
// ../../node_modules/@flexilla/popover/dist/popover.js
|
|
3
|
-
var
|
|
4
|
-
var j = (
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
var p = (
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
if (!
|
|
3
|
+
var B = Object.defineProperty;
|
|
4
|
+
var j = (s, e, t) => e in s ? B(s, e, { enumerable: true, configurable: true, writable: true, value: t }) : s[e] = t;
|
|
5
|
+
var a = (s, e, t) => j(s, typeof e != "symbol" ? e + "" : e, t);
|
|
6
|
+
var G = Object.defineProperty;
|
|
7
|
+
var U = (s, e, t) => e in s ? G(s, e, { enumerable: true, configurable: true, writable: true, value: t }) : s[e] = t;
|
|
8
|
+
var p = (s, e, t) => U(s, typeof e != "symbol" ? e + "" : e, t);
|
|
9
|
+
var K = "bottom";
|
|
10
|
+
var q = ({ reference: s, popper: e }) => {
|
|
11
|
+
if (!s || !e)
|
|
12
12
|
throw new Error("Reference or popper element is null or undefined");
|
|
13
|
-
const t = /* @__PURE__ */ new WeakMap(),
|
|
13
|
+
const t = /* @__PURE__ */ new WeakMap(), n = (r) => (t.has(r) || t.set(r, r.getBoundingClientRect()), t.get(r)), o = n(e), i = n(s);
|
|
14
14
|
return {
|
|
15
15
|
popperHeight: o.height,
|
|
16
16
|
popperWidth: o.width,
|
|
17
|
-
refHeight:
|
|
18
|
-
refWidth:
|
|
19
|
-
refLeft:
|
|
20
|
-
refTop:
|
|
21
|
-
refRight:
|
|
17
|
+
refHeight: i.height,
|
|
18
|
+
refWidth: i.width,
|
|
19
|
+
refLeft: i.left,
|
|
20
|
+
refTop: i.top,
|
|
21
|
+
refRight: i.right
|
|
22
22
|
};
|
|
23
23
|
};
|
|
24
|
-
var V = (
|
|
25
|
-
const o = t,
|
|
26
|
-
return o >= (
|
|
24
|
+
var V = (s, e, t, n) => {
|
|
25
|
+
const o = t, i = n - (t + e);
|
|
26
|
+
return o >= (s - e) / 2 && i >= (s - e) / 2;
|
|
27
27
|
};
|
|
28
|
-
var X = (
|
|
29
|
-
var Y = (
|
|
30
|
-
var J = (
|
|
31
|
-
var Q = (
|
|
32
|
-
var Z = (
|
|
33
|
-
const r = o - t -
|
|
34
|
-
return
|
|
28
|
+
var X = (s, e, t, n) => (s - e) / 2 <= t && t + s / 2 + e / 2 <= n;
|
|
29
|
+
var Y = (s, e, t, n, o) => t > o - n ? e() ? window.innerHeight - o : t - o : s() ? 0 : t + n;
|
|
30
|
+
var J = (s, e, t, n) => s <= n && t - s <= e;
|
|
31
|
+
var Q = (s, e, t, n) => t <= n && -s <= e;
|
|
32
|
+
var Z = (s, e, t, n, o, i) => {
|
|
33
|
+
const r = o - t - i, h = t - n, d = t + i - n + (o - t - i), c = r >= 0 ? o - n : h >= 0 ? t - n : t;
|
|
34
|
+
return s() ? 0 : e() ? d : c;
|
|
35
35
|
};
|
|
36
|
-
var _ = (
|
|
37
|
-
var ee = (
|
|
36
|
+
var _ = (s, e, t, n) => s <= t && e - s - n >= s;
|
|
37
|
+
var ee = (s, e) => s >= e;
|
|
38
38
|
var te = ({
|
|
39
|
-
placement:
|
|
39
|
+
placement: s,
|
|
40
40
|
refWidth: e,
|
|
41
41
|
refTop: t,
|
|
42
|
-
refLeft:
|
|
42
|
+
refLeft: n,
|
|
43
43
|
refHeight: o,
|
|
44
|
-
popperWidth:
|
|
44
|
+
popperWidth: i,
|
|
45
45
|
popperHeight: r,
|
|
46
46
|
windowHeight: h,
|
|
47
47
|
windowWidth: d,
|
|
48
48
|
offsetDistance: c
|
|
49
49
|
}) => {
|
|
50
|
-
const
|
|
50
|
+
const m = d - n - e, v = n, I = h - t - o, C = t, E = () => Y(
|
|
51
51
|
() => Q(t, o, r, h),
|
|
52
52
|
() => J(t, o, r, h),
|
|
53
53
|
t,
|
|
54
54
|
o,
|
|
55
55
|
r
|
|
56
|
-
),
|
|
57
|
-
() => _(
|
|
58
|
-
() => ee(
|
|
59
|
-
s,
|
|
56
|
+
), u = () => Z(
|
|
57
|
+
() => _(n, d, i, e),
|
|
58
|
+
() => ee(n, i),
|
|
60
59
|
n,
|
|
60
|
+
i,
|
|
61
61
|
d,
|
|
62
62
|
e
|
|
63
|
-
),
|
|
64
|
-
let
|
|
65
|
-
const T = t - r - c,
|
|
66
|
-
switch (
|
|
63
|
+
), D = () => V(i, e, n, d) ? n + e / 2 - i / 2 : u(), M = () => X(r, o, t, h) ? t + o / 2 - r / 2 : E(), x = () => n + i <= d ? n : u(), b = () => n + e - i >= 0 ? n + e - i : u(), y = () => t + r <= h ? t : E(), z = () => t + o - r >= 0 ? t + o - r : E();
|
|
64
|
+
let g = 0, f = 0;
|
|
65
|
+
const T = t - r - c, O = t + o + c, S = n - i - c, L = n + e + c, W = C >= r + c, F = I >= r + c, R = v >= i + c, $ = m >= i + c;
|
|
66
|
+
switch (s.startsWith("top") ? f = W ? T : F ? O : Math.max(T, O) : s.startsWith("bottom") ? f = F ? O : W ? T : Math.max(O) : s.startsWith("left") ? g = R ? S : $ ? L : Math.max(S, L) : s.startsWith("right") && (g = $ ? L : R ? S : Math.max(L, S)), s) {
|
|
67
67
|
case "bottom":
|
|
68
68
|
case "bottom-middle":
|
|
69
69
|
case "top":
|
|
70
70
|
case "top-middle":
|
|
71
|
-
|
|
71
|
+
g = D();
|
|
72
72
|
break;
|
|
73
73
|
case "left":
|
|
74
74
|
case "left-middle":
|
|
75
75
|
case "right":
|
|
76
76
|
case "right-middle":
|
|
77
|
-
f =
|
|
77
|
+
f = M();
|
|
78
78
|
break;
|
|
79
79
|
case "bottom-start":
|
|
80
80
|
case "top-start":
|
|
81
|
-
|
|
81
|
+
g = x();
|
|
82
82
|
break;
|
|
83
83
|
case "bottom-end":
|
|
84
84
|
case "top-end":
|
|
85
|
-
|
|
85
|
+
g = b();
|
|
86
86
|
break;
|
|
87
87
|
case "left-start":
|
|
88
88
|
case "right-start":
|
|
89
|
-
f =
|
|
89
|
+
f = y();
|
|
90
90
|
break;
|
|
91
91
|
case "left-end":
|
|
92
92
|
case "right-end":
|
|
93
|
-
f =
|
|
93
|
+
f = z();
|
|
94
94
|
break;
|
|
95
95
|
}
|
|
96
|
-
return { x:
|
|
96
|
+
return { x: g, y: f };
|
|
97
97
|
};
|
|
98
|
-
var
|
|
98
|
+
var ne = class {
|
|
99
99
|
/**
|
|
100
100
|
* Flexilla Popper
|
|
101
101
|
* @param reference
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
* @param {boolean} [options.eventEffect.disableOnScroll] - Disable position updates on scroll
|
|
115
115
|
* @param {Function} [options.onUpdate] - Callback function when position updates
|
|
116
116
|
*/
|
|
117
|
-
constructor(e, t,
|
|
117
|
+
constructor(e, t, n = {}) {
|
|
118
118
|
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", () => {
|
|
119
119
|
if (!(this.reference instanceof HTMLElement))
|
|
120
120
|
throw new Error("Invalid HTMLElement for Reference Element");
|
|
@@ -122,28 +122,28 @@
|
|
|
122
122
|
throw new Error("Invalid HTMLElement for Popper");
|
|
123
123
|
if (typeof this.offsetDistance != "number")
|
|
124
124
|
throw new Error("OffsetDistance must be a number");
|
|
125
|
-
}), p(this, "setPopperStyleProperty", (
|
|
126
|
-
this.popper.style.setProperty("--fx-popper-placement-x", `${
|
|
125
|
+
}), p(this, "setPopperStyleProperty", (m, v) => {
|
|
126
|
+
this.popper.style.setProperty("--fx-popper-placement-x", `${m}px`), this.popper.style.setProperty("--fx-popper-placement-y", `${v}px`);
|
|
127
127
|
}), p(this, "setInitialStyles", () => {
|
|
128
128
|
this.popper.style.setProperty("--fx-popper-placement-x", ""), this.popper.style.setProperty("--fx-popper-placement-y", "");
|
|
129
129
|
}), p(this, "initPlacement", () => {
|
|
130
|
-
var
|
|
130
|
+
var m;
|
|
131
131
|
this.validateElements(), this.setInitialStyles();
|
|
132
|
-
const v = window.innerWidth,
|
|
132
|
+
const v = window.innerWidth, I = window.innerHeight, { popperHeight: C, popperWidth: E, refHeight: u, refWidth: D, refLeft: M, refTop: x } = q({ reference: this.reference, popper: this.popper }), { x: b, y } = te(
|
|
133
133
|
{
|
|
134
134
|
placement: this.placement,
|
|
135
|
-
refWidth:
|
|
136
|
-
refTop:
|
|
137
|
-
refLeft:
|
|
138
|
-
popperWidth:
|
|
139
|
-
refHeight:
|
|
140
|
-
popperHeight:
|
|
141
|
-
windowHeight:
|
|
135
|
+
refWidth: D,
|
|
136
|
+
refTop: x,
|
|
137
|
+
refLeft: M,
|
|
138
|
+
popperWidth: E,
|
|
139
|
+
refHeight: u,
|
|
140
|
+
popperHeight: C,
|
|
141
|
+
windowHeight: I,
|
|
142
142
|
windowWidth: v,
|
|
143
143
|
offsetDistance: this.offsetDistance
|
|
144
144
|
}
|
|
145
145
|
);
|
|
146
|
-
this.setPopperStyleProperty(
|
|
146
|
+
this.setPopperStyleProperty(b, y), (m = this.onUpdate) == null || m.call(this, { x: b, y, placement: this.placement });
|
|
147
147
|
}), p(this, "removeWindowEvents", () => {
|
|
148
148
|
this.isWindowEventsRegistered && (!this.disableOnResize && window.removeEventListener("resize", this.updatePosition), !this.disableOnScroll && window.removeEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = false);
|
|
149
149
|
}), p(this, "attachWindowEvent", () => {
|
|
@@ -157,18 +157,18 @@
|
|
|
157
157
|
});
|
|
158
158
|
const {
|
|
159
159
|
offsetDistance: o = 10,
|
|
160
|
-
placement:
|
|
160
|
+
placement: i = K,
|
|
161
161
|
eventEffect: r = {},
|
|
162
162
|
onUpdate: h
|
|
163
|
-
} =
|
|
163
|
+
} = n;
|
|
164
164
|
if (!(e instanceof HTMLElement))
|
|
165
165
|
throw new Error("Invalid HTMLElement for Reference Element");
|
|
166
166
|
if (!(t instanceof HTMLElement))
|
|
167
167
|
throw new Error("Invalid HTMLElement for Popper");
|
|
168
|
-
if (
|
|
168
|
+
if (n.offsetDistance && typeof n.offsetDistance != "number")
|
|
169
169
|
throw new Error("OffsetDistance must be a number");
|
|
170
170
|
const { disableOnResize: d, disableOnScroll: c } = r;
|
|
171
|
-
this.isWindowEventsRegistered = false, this.reference = e, this.popper = t, this.offsetDistance = o, this.placement =
|
|
171
|
+
this.isWindowEventsRegistered = false, this.reference = e, this.popper = t, this.offsetDistance = o, this.placement = i, this.disableOnResize = d || false, this.disableOnScroll = c || false, this.onUpdate = h;
|
|
172
172
|
}
|
|
173
173
|
/**
|
|
174
174
|
* Updates popper configuration and recalculates position
|
|
@@ -181,46 +181,50 @@
|
|
|
181
181
|
this.placement = e, this.offsetDistance = t || this.offsetDistance, this.initPlacement(), this.attachWindowEvent();
|
|
182
182
|
}
|
|
183
183
|
};
|
|
184
|
-
var
|
|
185
|
-
var
|
|
186
|
-
var
|
|
187
|
-
var oe = (
|
|
188
|
-
var
|
|
189
|
-
for (const [t,
|
|
190
|
-
|
|
184
|
+
var se = Object.defineProperty;
|
|
185
|
+
var ie = (s, e, t) => e in s ? se(s, e, { enumerable: true, configurable: true, writable: true, value: t }) : s[e] = t;
|
|
186
|
+
var l = (s, e, t) => ie(s, typeof e != "symbol" ? e + "" : e, t);
|
|
187
|
+
var oe = (s, e = document.body) => e.querySelector(s);
|
|
188
|
+
var N = (s, e) => {
|
|
189
|
+
for (const [t, n] of Object.entries(e))
|
|
190
|
+
s.setAttribute(t, n);
|
|
191
191
|
};
|
|
192
192
|
var re = ({
|
|
193
|
-
element:
|
|
193
|
+
element: s,
|
|
194
194
|
callback: e,
|
|
195
195
|
type: t,
|
|
196
|
-
keysCheck:
|
|
196
|
+
keysCheck: n
|
|
197
197
|
}) => {
|
|
198
|
-
const o = getComputedStyle(
|
|
199
|
-
if (
|
|
198
|
+
const o = getComputedStyle(s), i = o.transition;
|
|
199
|
+
if (i !== "none" && i !== "" && !n.includes(i)) {
|
|
200
200
|
const r = "transitionend", h = () => {
|
|
201
|
-
|
|
201
|
+
s.removeEventListener(r, h), e();
|
|
202
202
|
};
|
|
203
|
-
|
|
203
|
+
s.addEventListener(r, h, { once: true });
|
|
204
204
|
} else
|
|
205
205
|
e();
|
|
206
206
|
};
|
|
207
207
|
var ae = ({
|
|
208
|
-
element:
|
|
208
|
+
element: s,
|
|
209
209
|
callback: e
|
|
210
210
|
}) => {
|
|
211
211
|
re({
|
|
212
|
-
element:
|
|
212
|
+
element: s,
|
|
213
213
|
callback: e,
|
|
214
214
|
type: "transition",
|
|
215
215
|
keysCheck: ["all 0s ease 0s", "all"]
|
|
216
216
|
});
|
|
217
217
|
};
|
|
218
|
-
var
|
|
219
|
-
const
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
218
|
+
var le = (s, e, t) => {
|
|
219
|
+
const n = new CustomEvent(e, { detail: t });
|
|
220
|
+
s.dispatchEvent(n);
|
|
221
|
+
};
|
|
222
|
+
var w = ({ state: s, trigger: e, popper: t }) => {
|
|
223
|
+
const n = s === "open";
|
|
224
|
+
N(t, {
|
|
225
|
+
"data-state": s
|
|
226
|
+
}), N(e, {
|
|
227
|
+
"aria-expanded": `${n}`
|
|
224
228
|
});
|
|
225
229
|
};
|
|
226
230
|
var he = class {
|
|
@@ -231,46 +235,46 @@
|
|
|
231
235
|
* @param {string | HTMLElement} params.content - The content element selector or HTMLElement
|
|
232
236
|
* @param {OverlayOptions} [params.options] - Configuration options for the overlay
|
|
233
237
|
*/
|
|
234
|
-
constructor({ trigger: e, content: t, options:
|
|
235
|
-
|
|
236
|
-
this.contentElement.getAttribute("data-state") === "open" && (!this.triggerElement.contains(
|
|
237
|
-
}),
|
|
238
|
-
|
|
239
|
-
}),
|
|
238
|
+
constructor({ trigger: e, content: t, options: n = {} }) {
|
|
239
|
+
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" ? oe(i) : i instanceof HTMLElement ? i : void 0), l(this, "handleDocumentClick", (i) => {
|
|
240
|
+
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());
|
|
241
|
+
}), l(this, "handleKeyDown", (i) => {
|
|
242
|
+
i.preventDefault(), this.triggerStrategy !== "hover" && i.key === "Escape" && this.contentElement.getAttribute("data-state") === "open" && (this.preventFromCloseOutside || this.hide());
|
|
243
|
+
}), l(this, "toggleStateOnClick", () => {
|
|
240
244
|
(this.contentElement.dataset.state || "close") === "close" ? (this.show(), this.triggerStrategy === "hover" && this.addEventOnMouseEnter()) : this.hide();
|
|
241
|
-
}),
|
|
245
|
+
}), l(this, "hideOnMouseLeaseTrigger", () => {
|
|
242
246
|
setTimeout(() => {
|
|
243
247
|
this.contentElement.matches(":hover") || this.hide();
|
|
244
248
|
}, 150);
|
|
245
|
-
}),
|
|
249
|
+
}), l(this, "hideOnMouseLeave", () => {
|
|
246
250
|
setTimeout(() => {
|
|
247
251
|
this.triggerElement.matches(":hover") || this.hide();
|
|
248
252
|
}, 150);
|
|
249
|
-
}),
|
|
253
|
+
}), l(this, "addEventOnMouseEnter", () => {
|
|
250
254
|
this.triggerElement.addEventListener("mouseleave", this.hideOnMouseLeaseTrigger), this.contentElement.addEventListener("mouseleave", this.hideOnMouseLeave);
|
|
251
|
-
}),
|
|
255
|
+
}), l(this, "showOnMouseEnter", () => {
|
|
252
256
|
this.show(), this.addEventOnMouseEnter();
|
|
253
|
-
}),
|
|
254
|
-
var h, d, c,
|
|
257
|
+
}), l(this, "setShowOptions", ({ placement: i, offsetDistance: r }) => {
|
|
258
|
+
var h, d, c, m;
|
|
255
259
|
this.popper.setOptions({
|
|
256
|
-
placement:
|
|
260
|
+
placement: i,
|
|
257
261
|
offsetDistance: r
|
|
258
262
|
}), document.addEventListener("keydown", this.handleKeyDown), document.addEventListener("click", this.handleDocumentClick), (d = (h = this.options).beforeShow) == null || d.call(h), w({
|
|
259
263
|
state: "open",
|
|
260
264
|
popper: this.contentElement,
|
|
261
265
|
trigger: this.triggerElement
|
|
262
|
-
}), this.onToggleState(false), (
|
|
263
|
-
}),
|
|
266
|
+
}), this.onToggleState(false), (m = (c = this.options).onShow) == null || m.call(c);
|
|
267
|
+
}), l(this, "setPopperOptions", ({ placement: i, offsetDistance: r }) => {
|
|
264
268
|
this.popper.setOptions({
|
|
265
|
-
placement:
|
|
269
|
+
placement: i,
|
|
266
270
|
offsetDistance: r || this.offsetDistance
|
|
267
271
|
});
|
|
268
|
-
}),
|
|
272
|
+
}), l(this, "setPopperTrigger", (i, r) => {
|
|
269
273
|
this.cleanup(), this.popper.setOptions({
|
|
270
274
|
placement: r.placement || this.placement,
|
|
271
275
|
offsetDistance: r.offsetDistance || this.offsetDistance
|
|
272
|
-
}), this.triggerElement =
|
|
273
|
-
}),
|
|
276
|
+
}), this.triggerElement = i, this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
|
|
277
|
+
}), l(this, "cleanup", () => {
|
|
274
278
|
this.triggerElement.removeEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.removeEventListener("mouseenter", this.showOnMouseEnter);
|
|
275
279
|
});
|
|
276
280
|
var o;
|
|
@@ -278,7 +282,7 @@
|
|
|
278
282
|
throw new Error("Trigger element must be a valid HTML element");
|
|
279
283
|
if (!(this.contentElement instanceof HTMLElement))
|
|
280
284
|
throw new Error("Content element must be a valid HTML element");
|
|
281
|
-
this.options =
|
|
285
|
+
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 ne(
|
|
282
286
|
this.triggerElement,
|
|
283
287
|
this.contentElement,
|
|
284
288
|
{
|
|
@@ -289,38 +293,45 @@
|
|
|
289
293
|
), this.initInstance();
|
|
290
294
|
}
|
|
291
295
|
onToggleState(e) {
|
|
292
|
-
var t,
|
|
293
|
-
(
|
|
296
|
+
var t, n;
|
|
297
|
+
(n = (t = this.options).onToggle) == null || n.call(t, { isHidden: e });
|
|
294
298
|
}
|
|
295
299
|
/**
|
|
296
300
|
* Shows the overlay
|
|
297
301
|
* Positions the overlay, adds event listeners, and triggers related callbacks
|
|
298
302
|
*/
|
|
299
303
|
show() {
|
|
300
|
-
var e, t,
|
|
304
|
+
var e, t, n, o;
|
|
301
305
|
this.popper.updatePosition(), document.addEventListener("keydown", this.handleKeyDown), document.addEventListener("click", this.handleDocumentClick), (t = (e = this.options).beforeShow) == null || t.call(e), w({
|
|
302
306
|
state: "open",
|
|
303
307
|
popper: this.contentElement,
|
|
304
308
|
trigger: this.triggerElement
|
|
305
|
-
}), this.onToggleState(false), (o = (
|
|
309
|
+
}), this.onToggleState(false), (o = (n = this.options).onShow) == null || o.call(n);
|
|
306
310
|
}
|
|
307
311
|
/**
|
|
308
312
|
* Hides the overlay
|
|
309
313
|
* Removes event listeners and triggers related callbacks
|
|
310
314
|
*/
|
|
311
315
|
hide() {
|
|
312
|
-
var e, t;
|
|
313
|
-
|
|
316
|
+
var e, t, n;
|
|
317
|
+
let o = false;
|
|
318
|
+
le(this.contentElement, "before-hide", {
|
|
319
|
+
setExitAction: (r) => {
|
|
320
|
+
o = r;
|
|
321
|
+
}
|
|
322
|
+
});
|
|
323
|
+
const i = (n = (t = (e = this.options).beforeHide) == null ? void 0 : t.call(e)) == null ? void 0 : n.cancelAction;
|
|
324
|
+
o || i || (w({
|
|
314
325
|
state: "close",
|
|
315
326
|
popper: this.contentElement,
|
|
316
327
|
trigger: this.triggerElement
|
|
317
328
|
}), 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)), ae({
|
|
318
329
|
element: this.contentElement,
|
|
319
330
|
callback: () => {
|
|
320
|
-
var
|
|
321
|
-
this.onToggleState(true), this.popper.cleanupEvents(), (
|
|
331
|
+
var r, h;
|
|
332
|
+
this.onToggleState(true), this.popper.cleanupEvents(), (h = (r = this.options).onHide) == null || h.call(r);
|
|
322
333
|
}
|
|
323
|
-
});
|
|
334
|
+
}));
|
|
324
335
|
}
|
|
325
336
|
initInstance() {
|
|
326
337
|
w({
|
|
@@ -334,32 +345,67 @@
|
|
|
334
345
|
}), this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
|
|
335
346
|
}
|
|
336
347
|
};
|
|
337
|
-
var
|
|
338
|
-
var
|
|
339
|
-
var
|
|
340
|
-
const
|
|
341
|
-
|
|
348
|
+
var A = (s, e = document.body) => e.querySelector(s);
|
|
349
|
+
var pe = (s, e = document.body) => Array.from(e.querySelectorAll(s));
|
|
350
|
+
var k = (s, e, t) => {
|
|
351
|
+
const n = new CustomEvent(e, { detail: t });
|
|
352
|
+
s.dispatchEvent(n);
|
|
342
353
|
};
|
|
354
|
+
function ce(s, e, t = "move") {
|
|
355
|
+
if (!(s instanceof HTMLElement))
|
|
356
|
+
throw new Error("Source element must be an HTMLElement");
|
|
357
|
+
if (!(e instanceof HTMLElement))
|
|
358
|
+
throw new Error("Target element must be an HTMLElement");
|
|
359
|
+
if (!["move", "detachable"].includes(t))
|
|
360
|
+
throw new Error(`Invalid teleport mode: ${t}. Must be "move" or "detachable".`);
|
|
361
|
+
let n = document.createComment("teleporter-placeholder");
|
|
362
|
+
const o = s.parentNode;
|
|
363
|
+
return o ? o.insertBefore(n, s) : console.warn("Element has no parent; placeholder not inserted."), t === "move" ? (s.parentNode && e.appendChild(s), {
|
|
364
|
+
append() {
|
|
365
|
+
s.parentNode !== e && e.appendChild(s);
|
|
366
|
+
},
|
|
367
|
+
remove() {
|
|
368
|
+
n != null && n.parentNode && s.parentNode && n.parentNode.insertBefore(s, n);
|
|
369
|
+
},
|
|
370
|
+
restore() {
|
|
371
|
+
n != null && n.parentNode && s.parentNode !== o && n.parentNode.insertBefore(s, n);
|
|
372
|
+
}
|
|
373
|
+
}) : (s.parentNode && e.appendChild(s), {
|
|
374
|
+
append() {
|
|
375
|
+
e.contains(s) || e.appendChild(s);
|
|
376
|
+
},
|
|
377
|
+
remove() {
|
|
378
|
+
s.parentNode && s.remove();
|
|
379
|
+
},
|
|
380
|
+
restore() {
|
|
381
|
+
n != null && n.parentNode && !s.parentNode && n.parentNode.insertBefore(s, n);
|
|
382
|
+
}
|
|
383
|
+
});
|
|
384
|
+
}
|
|
343
385
|
var H = class {
|
|
344
386
|
static initGlobalRegistry() {
|
|
345
387
|
window.$flexillaInstances || (window.$flexillaInstances = {});
|
|
346
388
|
}
|
|
347
|
-
static register(e, t,
|
|
348
|
-
return this.initGlobalRegistry(), window.$flexillaInstances[e] || (window.$flexillaInstances[e] = []), this.getInstance(e, t) || (window.$flexillaInstances[e].push({ element: t, instance:
|
|
389
|
+
static register(e, t, n) {
|
|
390
|
+
return this.initGlobalRegistry(), window.$flexillaInstances[e] || (window.$flexillaInstances[e] = []), this.getInstance(e, t) || (window.$flexillaInstances[e].push({ element: t, instance: n }), n);
|
|
349
391
|
}
|
|
350
392
|
static getInstance(e, t) {
|
|
351
|
-
var
|
|
352
|
-
return this.initGlobalRegistry(), (o = (
|
|
353
|
-
(
|
|
393
|
+
var n, o;
|
|
394
|
+
return this.initGlobalRegistry(), (o = (n = window.$flexillaInstances[e]) == null ? void 0 : n.find(
|
|
395
|
+
(i) => i.element === t
|
|
354
396
|
)) == null ? void 0 : o.instance;
|
|
355
397
|
}
|
|
356
398
|
static removeInstance(e, t) {
|
|
357
399
|
this.initGlobalRegistry(), window.$flexillaInstances[e] && (window.$flexillaInstances[e] = window.$flexillaInstances[e].filter(
|
|
358
|
-
(
|
|
400
|
+
(n) => n.element !== t
|
|
359
401
|
));
|
|
360
402
|
}
|
|
361
403
|
};
|
|
362
|
-
var
|
|
404
|
+
var de = {
|
|
405
|
+
teleport: true,
|
|
406
|
+
teleportMode: "move"
|
|
407
|
+
};
|
|
408
|
+
var P = class _P {
|
|
363
409
|
/**
|
|
364
410
|
* Creates a new Popover instance.
|
|
365
411
|
* @param {string | HTMLElement} popoverEl - The popover content element or its selector.
|
|
@@ -376,44 +422,66 @@
|
|
|
376
422
|
* });
|
|
377
423
|
*/
|
|
378
424
|
constructor(e, t = {}) {
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
425
|
+
a(this, "triggerElement");
|
|
426
|
+
a(this, "contentElement");
|
|
427
|
+
a(this, "options");
|
|
428
|
+
a(this, "PopoverInstance");
|
|
429
|
+
a(this, "triggerStrategy");
|
|
430
|
+
a(this, "placement");
|
|
431
|
+
a(this, "offsetDistance");
|
|
432
|
+
a(this, "preventFromCloseOutside");
|
|
433
|
+
a(this, "preventFromCloseInside");
|
|
434
|
+
a(this, "defaultState");
|
|
435
|
+
a(this, "experimentalOptions");
|
|
436
|
+
a(this, "teleporter");
|
|
437
|
+
a(this, "moveElOnInit", () => {
|
|
438
|
+
this.experimentalOptions.teleport && (this.experimentalOptions.teleportMode === "detachable" ? this.teleporter.remove() : this.teleporter.append());
|
|
439
|
+
});
|
|
440
|
+
a(this, "moveEl", () => {
|
|
441
|
+
this.experimentalOptions.teleport && this.experimentalOptions.teleportMode === "detachable" && this.teleporter.remove();
|
|
442
|
+
});
|
|
443
|
+
a(this, "restoreEl", () => {
|
|
444
|
+
this.experimentalOptions.teleport && this.experimentalOptions.teleportMode === "detachable" && this.teleporter.append();
|
|
445
|
+
});
|
|
446
|
+
a(this, "beforeShow", () => {
|
|
447
|
+
this.restoreEl();
|
|
448
|
+
});
|
|
449
|
+
a(this, "onHide", () => {
|
|
450
|
+
var e2, t2;
|
|
451
|
+
(t2 = (e2 = this.options).onHide) == null || t2.call(e2), this.moveEl(), k(this.contentElement, "popover-hide", {
|
|
452
|
+
isHidden: true
|
|
453
|
+
});
|
|
454
|
+
});
|
|
455
|
+
a(this, "onShow", () => {
|
|
456
|
+
var e2, t2;
|
|
457
|
+
(t2 = (e2 = this.options).onShow) == null || t2.call(e2), k(this.contentElement, "popover-show", {
|
|
458
|
+
isHidden: false
|
|
459
|
+
});
|
|
460
|
+
});
|
|
461
|
+
a(this, "setShowOptions", ({ placement: e2, offsetDistance: t2 }) => {
|
|
390
462
|
this.PopoverInstance.setShowOptions({ placement: e2, offsetDistance: t2 });
|
|
391
463
|
});
|
|
392
|
-
|
|
464
|
+
a(this, "setOptions", ({ placement: e2, offsetDistance: t2 }) => {
|
|
393
465
|
this.PopoverInstance.setPopperOptions({ placement: e2, offsetDistance: t2 });
|
|
394
466
|
});
|
|
395
|
-
|
|
467
|
+
a(this, "setPopperTrigger", (e2, t2) => {
|
|
396
468
|
this.PopoverInstance.setPopperTrigger(e2, t2);
|
|
397
469
|
});
|
|
398
|
-
|
|
399
|
-
this.PopoverInstance.show()
|
|
400
|
-
isHidden: false
|
|
401
|
-
});
|
|
470
|
+
a(this, "show", () => {
|
|
471
|
+
this.PopoverInstance.show();
|
|
402
472
|
});
|
|
403
|
-
|
|
404
|
-
this.PopoverInstance.hide()
|
|
405
|
-
isHidden: true
|
|
406
|
-
});
|
|
473
|
+
a(this, "hide", () => {
|
|
474
|
+
this.PopoverInstance.hide();
|
|
407
475
|
});
|
|
408
|
-
|
|
476
|
+
a(this, "cleanup", () => {
|
|
409
477
|
this.PopoverInstance.cleanup(), H.removeInstance("popover", this.contentElement);
|
|
410
478
|
});
|
|
411
|
-
const
|
|
412
|
-
this.contentElement =
|
|
479
|
+
const n = typeof e == "string" ? A(e) : e;
|
|
480
|
+
this.contentElement = n;
|
|
413
481
|
const o = H.getInstance("popover", this.contentElement);
|
|
414
482
|
if (o)
|
|
415
483
|
return o;
|
|
416
|
-
this.triggerElement =
|
|
484
|
+
this.triggerElement = A(`[data-popover-trigger][data-popover-id=${n.getAttribute("id")}]`), this.options = t, this.triggerStrategy = n.dataset.triggerStrategy ?? this.options.triggerStrategy ?? "click", this.placement = n.dataset.placement ?? this.options.placement ?? "bottom-middle", this.offsetDistance = parseInt(`${n.dataset.offsetDistance}`) ?? this.options.offsetDistance ?? 6, this.preventFromCloseOutside = n.hasAttribute("data-prevent-close-outside") ?? this.options.preventFromCloseOutside ?? false, this.preventFromCloseInside = n.hasAttribute("data-close-inside") ? false : this.options.preventCloseFromInside ?? true, this.defaultState = n.dataset.defaultState ?? this.options.defaultState ?? "close", this.experimentalOptions = Object.assign({}, de, t.experimental), this.teleporter = ce(this.contentElement, document.body, this.experimentalOptions.teleportMode), this.PopoverInstance = new he({
|
|
417
485
|
trigger: this.triggerElement,
|
|
418
486
|
content: this.contentElement,
|
|
419
487
|
options: {
|
|
@@ -423,17 +491,18 @@
|
|
|
423
491
|
preventFromCloseOutside: this.preventFromCloseOutside,
|
|
424
492
|
preventCloseFromInside: this.preventFromCloseInside,
|
|
425
493
|
defaultState: this.defaultState,
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
494
|
+
beforeShow: this.beforeShow,
|
|
495
|
+
onShow: this.onShow,
|
|
496
|
+
onHide: this.onHide,
|
|
497
|
+
onToggle: ({ isHidden: i }) => {
|
|
429
498
|
var r, h;
|
|
430
|
-
(h = (r = this.options).onToggle) == null || h.call(r, { isHidden:
|
|
431
|
-
isHidden:
|
|
499
|
+
(h = (r = this.options).onToggle) == null || h.call(r, { isHidden: i }), k(this.contentElement, "popover-toggle", {
|
|
500
|
+
isHidden: i
|
|
432
501
|
});
|
|
433
502
|
},
|
|
434
503
|
popper: this.options.popper
|
|
435
504
|
}
|
|
436
|
-
}), H.register("popover", this.contentElement, this);
|
|
505
|
+
}), this.moveElOnInit(), H.register("popover", this.contentElement, this);
|
|
437
506
|
}
|
|
438
507
|
/**
|
|
439
508
|
* Creates a new Popover instance with the specified options.
|
|
@@ -447,7 +516,7 @@
|
|
|
447
516
|
* });
|
|
448
517
|
*/
|
|
449
518
|
static init(e, t) {
|
|
450
|
-
return new
|
|
519
|
+
return new _P(e, t);
|
|
451
520
|
}
|
|
452
521
|
/**
|
|
453
522
|
* Automatically initializes all popover elements matching the specified selector.
|
|
@@ -460,16 +529,16 @@
|
|
|
460
529
|
* Popover.autoInit('.custom-popover');
|
|
461
530
|
*/
|
|
462
531
|
static autoInit(e = "[data-fx-popover]") {
|
|
463
|
-
const t =
|
|
464
|
-
for (const
|
|
465
|
-
new
|
|
532
|
+
const t = pe(e);
|
|
533
|
+
for (const n of t)
|
|
534
|
+
new _P(n);
|
|
466
535
|
}
|
|
467
536
|
};
|
|
468
537
|
|
|
469
538
|
// src/index.js
|
|
470
539
|
function Popover(Alpine) {
|
|
471
540
|
Alpine.directive("popover", (el, {}, { cleanup }) => {
|
|
472
|
-
const popover_ = new
|
|
541
|
+
const popover_ = new P(el);
|
|
473
542
|
cleanup(() => {
|
|
474
543
|
popover_.cleanup();
|
|
475
544
|
});
|