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