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