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