@flexilla/alpine-popover 0.0.2 → 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 +244 -175
- package/dist/cdn.min.js +1 -1
- package/dist/module.cjs.js +244 -175
- package/dist/module.esm.js +244 -175
- package/package.json +5 -3
- package/src/index.d.ts +7 -0
package/dist/cdn.js
CHANGED
|
@@ -1,110 +1,101 @@
|
|
|
1
1
|
(() => {
|
|
2
2
|
// ../../node_modules/@flexilla/popover/dist/popover.js
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
var q = Object.defineProperty;
|
|
13
|
-
var B = (i, e, t) => e in i ? q(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t;
|
|
14
|
-
var a = (i, e, t) => B(i, typeof e != "symbol" ? e + "" : e, t);
|
|
15
|
-
var J = "bottom";
|
|
16
|
-
var N = ({ reference: i, popper: e }) => {
|
|
17
|
-
if (!i || !e)
|
|
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)
|
|
18
12
|
throw new Error("Reference or popper element is null or undefined");
|
|
19
|
-
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);
|
|
20
14
|
return {
|
|
21
15
|
popperHeight: o.height,
|
|
22
16
|
popperWidth: o.width,
|
|
23
|
-
refHeight:
|
|
24
|
-
refWidth:
|
|
25
|
-
refLeft:
|
|
26
|
-
refTop:
|
|
27
|
-
refRight:
|
|
17
|
+
refHeight: i.height,
|
|
18
|
+
refWidth: i.width,
|
|
19
|
+
refLeft: i.left,
|
|
20
|
+
refTop: i.top,
|
|
21
|
+
refRight: i.right
|
|
28
22
|
};
|
|
29
23
|
};
|
|
30
|
-
var
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
var X = (i, e, t, s) => {
|
|
34
|
-
const o = t, n = s - (t + e);
|
|
35
|
-
return o >= (i - e) / 2 && n >= (i - e) / 2;
|
|
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;
|
|
36
27
|
};
|
|
37
|
-
var
|
|
38
|
-
var
|
|
39
|
-
var
|
|
40
|
-
var
|
|
41
|
-
var
|
|
42
|
-
const r = o - t -
|
|
43
|
-
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;
|
|
44
35
|
};
|
|
45
|
-
var
|
|
46
|
-
var
|
|
47
|
-
var
|
|
48
|
-
placement:
|
|
36
|
+
var _ = (s, e, t, n) => s <= t && e - s - n >= s;
|
|
37
|
+
var ee = (s, e) => s >= e;
|
|
38
|
+
var te = ({
|
|
39
|
+
placement: s,
|
|
49
40
|
refWidth: e,
|
|
50
41
|
refTop: t,
|
|
51
|
-
refLeft:
|
|
42
|
+
refLeft: n,
|
|
52
43
|
refHeight: o,
|
|
53
|
-
popperWidth:
|
|
44
|
+
popperWidth: i,
|
|
54
45
|
popperHeight: r,
|
|
55
|
-
windowHeight:
|
|
46
|
+
windowHeight: h,
|
|
56
47
|
windowWidth: d,
|
|
57
48
|
offsetDistance: c
|
|
58
49
|
}) => {
|
|
59
|
-
const
|
|
60
|
-
() =>
|
|
61
|
-
() =>
|
|
50
|
+
const m = d - n - e, v = n, I = h - t - o, C = t, E = () => Y(
|
|
51
|
+
() => Q(t, o, r, h),
|
|
52
|
+
() => J(t, o, r, h),
|
|
62
53
|
t,
|
|
63
54
|
o,
|
|
64
55
|
r
|
|
65
|
-
),
|
|
66
|
-
() =>
|
|
67
|
-
() =>
|
|
68
|
-
s,
|
|
56
|
+
), u = () => Z(
|
|
57
|
+
() => _(n, d, i, e),
|
|
58
|
+
() => ee(n, i),
|
|
69
59
|
n,
|
|
60
|
+
i,
|
|
70
61
|
d,
|
|
71
62
|
e
|
|
72
|
-
),
|
|
73
|
-
let
|
|
74
|
-
const T = t - r - c,
|
|
75
|
-
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) {
|
|
76
67
|
case "bottom":
|
|
77
68
|
case "bottom-middle":
|
|
78
69
|
case "top":
|
|
79
70
|
case "top-middle":
|
|
80
|
-
|
|
71
|
+
g = D();
|
|
81
72
|
break;
|
|
82
73
|
case "left":
|
|
83
74
|
case "left-middle":
|
|
84
75
|
case "right":
|
|
85
76
|
case "right-middle":
|
|
86
|
-
f =
|
|
77
|
+
f = M();
|
|
87
78
|
break;
|
|
88
79
|
case "bottom-start":
|
|
89
80
|
case "top-start":
|
|
90
|
-
|
|
81
|
+
g = x();
|
|
91
82
|
break;
|
|
92
83
|
case "bottom-end":
|
|
93
84
|
case "top-end":
|
|
94
|
-
|
|
85
|
+
g = b();
|
|
95
86
|
break;
|
|
96
87
|
case "left-start":
|
|
97
88
|
case "right-start":
|
|
98
|
-
f =
|
|
89
|
+
f = y();
|
|
99
90
|
break;
|
|
100
91
|
case "left-end":
|
|
101
92
|
case "right-end":
|
|
102
|
-
f =
|
|
93
|
+
f = z();
|
|
103
94
|
break;
|
|
104
95
|
}
|
|
105
|
-
return { x:
|
|
96
|
+
return { x: g, y: f };
|
|
106
97
|
};
|
|
107
|
-
var
|
|
98
|
+
var ne = class {
|
|
108
99
|
/**
|
|
109
100
|
* Flexilla Popper
|
|
110
101
|
* @param reference
|
|
@@ -123,7 +114,7 @@
|
|
|
123
114
|
* @param {boolean} [options.eventEffect.disableOnScroll] - Disable position updates on scroll
|
|
124
115
|
* @param {Function} [options.onUpdate] - Callback function when position updates
|
|
125
116
|
*/
|
|
126
|
-
constructor(e, t,
|
|
117
|
+
constructor(e, t, n = {}) {
|
|
127
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", () => {
|
|
128
119
|
if (!(this.reference instanceof HTMLElement))
|
|
129
120
|
throw new Error("Invalid HTMLElement for Reference Element");
|
|
@@ -131,28 +122,28 @@
|
|
|
131
122
|
throw new Error("Invalid HTMLElement for Popper");
|
|
132
123
|
if (typeof this.offsetDistance != "number")
|
|
133
124
|
throw new Error("OffsetDistance must be a number");
|
|
134
|
-
}), p(this, "setPopperStyleProperty", (
|
|
135
|
-
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`);
|
|
136
127
|
}), p(this, "setInitialStyles", () => {
|
|
137
128
|
this.popper.style.setProperty("--fx-popper-placement-x", ""), this.popper.style.setProperty("--fx-popper-placement-y", "");
|
|
138
129
|
}), p(this, "initPlacement", () => {
|
|
139
|
-
var
|
|
130
|
+
var m;
|
|
140
131
|
this.validateElements(), this.setInitialStyles();
|
|
141
|
-
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(
|
|
142
133
|
{
|
|
143
134
|
placement: this.placement,
|
|
144
|
-
refWidth:
|
|
145
|
-
refTop:
|
|
146
|
-
refLeft:
|
|
147
|
-
popperWidth:
|
|
148
|
-
refHeight:
|
|
149
|
-
popperHeight:
|
|
150
|
-
windowHeight:
|
|
135
|
+
refWidth: D,
|
|
136
|
+
refTop: x,
|
|
137
|
+
refLeft: M,
|
|
138
|
+
popperWidth: E,
|
|
139
|
+
refHeight: u,
|
|
140
|
+
popperHeight: C,
|
|
141
|
+
windowHeight: I,
|
|
151
142
|
windowWidth: v,
|
|
152
143
|
offsetDistance: this.offsetDistance
|
|
153
144
|
}
|
|
154
145
|
);
|
|
155
|
-
this.setPopperStyleProperty(
|
|
146
|
+
this.setPopperStyleProperty(b, y), (m = this.onUpdate) == null || m.call(this, { x: b, y, placement: this.placement });
|
|
156
147
|
}), p(this, "removeWindowEvents", () => {
|
|
157
148
|
this.isWindowEventsRegistered && (!this.disableOnResize && window.removeEventListener("resize", this.updatePosition), !this.disableOnScroll && window.removeEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = false);
|
|
158
149
|
}), p(this, "attachWindowEvent", () => {
|
|
@@ -166,18 +157,18 @@
|
|
|
166
157
|
});
|
|
167
158
|
const {
|
|
168
159
|
offsetDistance: o = 10,
|
|
169
|
-
placement:
|
|
160
|
+
placement: i = K,
|
|
170
161
|
eventEffect: r = {},
|
|
171
|
-
onUpdate:
|
|
172
|
-
} =
|
|
162
|
+
onUpdate: h
|
|
163
|
+
} = n;
|
|
173
164
|
if (!(e instanceof HTMLElement))
|
|
174
165
|
throw new Error("Invalid HTMLElement for Reference Element");
|
|
175
166
|
if (!(t instanceof HTMLElement))
|
|
176
167
|
throw new Error("Invalid HTMLElement for Popper");
|
|
177
|
-
if (
|
|
168
|
+
if (n.offsetDistance && typeof n.offsetDistance != "number")
|
|
178
169
|
throw new Error("OffsetDistance must be a number");
|
|
179
170
|
const { disableOnResize: d, disableOnScroll: c } = r;
|
|
180
|
-
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;
|
|
181
172
|
}
|
|
182
173
|
/**
|
|
183
174
|
* Updates popper configuration and recalculates position
|
|
@@ -190,43 +181,50 @@
|
|
|
190
181
|
this.placement = e, this.offsetDistance = t || this.offsetDistance, this.initPlacement(), this.attachWindowEvent();
|
|
191
182
|
}
|
|
192
183
|
};
|
|
193
|
-
var
|
|
194
|
-
var
|
|
195
|
-
|
|
196
|
-
|
|
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);
|
|
197
191
|
};
|
|
198
|
-
var
|
|
199
|
-
element:
|
|
192
|
+
var re = ({
|
|
193
|
+
element: s,
|
|
200
194
|
callback: e,
|
|
201
195
|
type: t,
|
|
202
|
-
keysCheck:
|
|
196
|
+
keysCheck: n
|
|
203
197
|
}) => {
|
|
204
|
-
const o = getComputedStyle(
|
|
205
|
-
if (
|
|
206
|
-
const r = "transitionend",
|
|
207
|
-
|
|
198
|
+
const o = getComputedStyle(s), i = o.transition;
|
|
199
|
+
if (i !== "none" && i !== "" && !n.includes(i)) {
|
|
200
|
+
const r = "transitionend", h = () => {
|
|
201
|
+
s.removeEventListener(r, h), e();
|
|
208
202
|
};
|
|
209
|
-
|
|
203
|
+
s.addEventListener(r, h, { once: true });
|
|
210
204
|
} else
|
|
211
205
|
e();
|
|
212
206
|
};
|
|
213
|
-
var
|
|
214
|
-
element:
|
|
207
|
+
var ae = ({
|
|
208
|
+
element: s,
|
|
215
209
|
callback: e
|
|
216
210
|
}) => {
|
|
217
|
-
|
|
218
|
-
element:
|
|
211
|
+
re({
|
|
212
|
+
element: s,
|
|
219
213
|
callback: e,
|
|
220
214
|
type: "transition",
|
|
221
215
|
keysCheck: ["all 0s ease 0s", "all"]
|
|
222
216
|
});
|
|
223
217
|
};
|
|
224
|
-
var
|
|
225
|
-
const
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
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}`
|
|
230
228
|
});
|
|
231
229
|
};
|
|
232
230
|
var he = class {
|
|
@@ -237,46 +235,46 @@
|
|
|
237
235
|
* @param {string | HTMLElement} params.content - The content element selector or HTMLElement
|
|
238
236
|
* @param {OverlayOptions} [params.options] - Configuration options for the overlay
|
|
239
237
|
*/
|
|
240
|
-
constructor({ trigger: e, content: t, options:
|
|
241
|
-
|
|
242
|
-
this.contentElement.getAttribute("data-state") === "open" && (!this.triggerElement.contains(
|
|
243
|
-
}),
|
|
244
|
-
|
|
245
|
-
}),
|
|
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", () => {
|
|
246
244
|
(this.contentElement.dataset.state || "close") === "close" ? (this.show(), this.triggerStrategy === "hover" && this.addEventOnMouseEnter()) : this.hide();
|
|
247
|
-
}),
|
|
245
|
+
}), l(this, "hideOnMouseLeaseTrigger", () => {
|
|
248
246
|
setTimeout(() => {
|
|
249
247
|
this.contentElement.matches(":hover") || this.hide();
|
|
250
248
|
}, 150);
|
|
251
|
-
}),
|
|
249
|
+
}), l(this, "hideOnMouseLeave", () => {
|
|
252
250
|
setTimeout(() => {
|
|
253
251
|
this.triggerElement.matches(":hover") || this.hide();
|
|
254
252
|
}, 150);
|
|
255
|
-
}),
|
|
253
|
+
}), l(this, "addEventOnMouseEnter", () => {
|
|
256
254
|
this.triggerElement.addEventListener("mouseleave", this.hideOnMouseLeaseTrigger), this.contentElement.addEventListener("mouseleave", this.hideOnMouseLeave);
|
|
257
|
-
}),
|
|
255
|
+
}), l(this, "showOnMouseEnter", () => {
|
|
258
256
|
this.show(), this.addEventOnMouseEnter();
|
|
259
|
-
}),
|
|
260
|
-
var
|
|
257
|
+
}), l(this, "setShowOptions", ({ placement: i, offsetDistance: r }) => {
|
|
258
|
+
var h, d, c, m;
|
|
261
259
|
this.popper.setOptions({
|
|
262
|
-
placement:
|
|
260
|
+
placement: i,
|
|
263
261
|
offsetDistance: r
|
|
264
|
-
}), document.addEventListener("keydown", this.handleKeyDown), document.addEventListener("click", this.handleDocumentClick), (d = (
|
|
262
|
+
}), document.addEventListener("keydown", this.handleKeyDown), document.addEventListener("click", this.handleDocumentClick), (d = (h = this.options).beforeShow) == null || d.call(h), w({
|
|
265
263
|
state: "open",
|
|
266
264
|
popper: this.contentElement,
|
|
267
265
|
trigger: this.triggerElement
|
|
268
|
-
}), this.onToggleState(false), (
|
|
269
|
-
}),
|
|
266
|
+
}), this.onToggleState(false), (m = (c = this.options).onShow) == null || m.call(c);
|
|
267
|
+
}), l(this, "setPopperOptions", ({ placement: i, offsetDistance: r }) => {
|
|
270
268
|
this.popper.setOptions({
|
|
271
|
-
placement:
|
|
269
|
+
placement: i,
|
|
272
270
|
offsetDistance: r || this.offsetDistance
|
|
273
271
|
});
|
|
274
|
-
}),
|
|
272
|
+
}), l(this, "setPopperTrigger", (i, r) => {
|
|
275
273
|
this.cleanup(), this.popper.setOptions({
|
|
276
274
|
placement: r.placement || this.placement,
|
|
277
275
|
offsetDistance: r.offsetDistance || this.offsetDistance
|
|
278
|
-
}), this.triggerElement =
|
|
279
|
-
}),
|
|
276
|
+
}), this.triggerElement = i, this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
|
|
277
|
+
}), l(this, "cleanup", () => {
|
|
280
278
|
this.triggerElement.removeEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.removeEventListener("mouseenter", this.showOnMouseEnter);
|
|
281
279
|
});
|
|
282
280
|
var o;
|
|
@@ -284,7 +282,7 @@
|
|
|
284
282
|
throw new Error("Trigger element must be a valid HTML element");
|
|
285
283
|
if (!(this.contentElement instanceof HTMLElement))
|
|
286
284
|
throw new Error("Content element must be a valid HTML element");
|
|
287
|
-
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(
|
|
288
286
|
this.triggerElement,
|
|
289
287
|
this.contentElement,
|
|
290
288
|
{
|
|
@@ -295,38 +293,45 @@
|
|
|
295
293
|
), this.initInstance();
|
|
296
294
|
}
|
|
297
295
|
onToggleState(e) {
|
|
298
|
-
var t,
|
|
299
|
-
(
|
|
296
|
+
var t, n;
|
|
297
|
+
(n = (t = this.options).onToggle) == null || n.call(t, { isHidden: e });
|
|
300
298
|
}
|
|
301
299
|
/**
|
|
302
300
|
* Shows the overlay
|
|
303
301
|
* Positions the overlay, adds event listeners, and triggers related callbacks
|
|
304
302
|
*/
|
|
305
303
|
show() {
|
|
306
|
-
var e, t,
|
|
304
|
+
var e, t, n, o;
|
|
307
305
|
this.popper.updatePosition(), document.addEventListener("keydown", this.handleKeyDown), document.addEventListener("click", this.handleDocumentClick), (t = (e = this.options).beforeShow) == null || t.call(e), w({
|
|
308
306
|
state: "open",
|
|
309
307
|
popper: this.contentElement,
|
|
310
308
|
trigger: this.triggerElement
|
|
311
|
-
}), this.onToggleState(false), (o = (
|
|
309
|
+
}), this.onToggleState(false), (o = (n = this.options).onShow) == null || o.call(n);
|
|
312
310
|
}
|
|
313
311
|
/**
|
|
314
312
|
* Hides the overlay
|
|
315
313
|
* Removes event listeners and triggers related callbacks
|
|
316
314
|
*/
|
|
317
315
|
hide() {
|
|
318
|
-
var e, t;
|
|
319
|
-
|
|
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({
|
|
320
325
|
state: "close",
|
|
321
326
|
popper: this.contentElement,
|
|
322
327
|
trigger: this.triggerElement
|
|
323
|
-
}), 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)),
|
|
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({
|
|
324
329
|
element: this.contentElement,
|
|
325
330
|
callback: () => {
|
|
326
|
-
var
|
|
327
|
-
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);
|
|
328
333
|
}
|
|
329
|
-
});
|
|
334
|
+
}));
|
|
330
335
|
}
|
|
331
336
|
initInstance() {
|
|
332
337
|
w({
|
|
@@ -340,26 +345,67 @@
|
|
|
340
345
|
}), this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
|
|
341
346
|
}
|
|
342
347
|
};
|
|
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);
|
|
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 = A(`[data-popover-trigger][data-popover-id=${
|
|
484
|
+
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({
|
|
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
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
494
|
+
beforeShow: this.beforeShow,
|
|
495
|
+
onShow: this.onShow,
|
|
496
|
+
onHide: this.onHide,
|
|
497
|
+
onToggle: ({ isHidden: i }) => {
|
|
498
|
+
var r, h;
|
|
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
|
});
|