@flexilla/alpine-popover 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +45 -0
- package/dist/cdn.js +443 -0
- package/dist/cdn.min.js +1 -0
- package/dist/module.cjs.js +464 -0
- package/dist/module.esm.js +442 -0
- package/package.json +64 -0
- package/src/index.js +12 -0
|
@@ -0,0 +1,464 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
|
|
19
|
+
// builds/module.js
|
|
20
|
+
var module_exports = {};
|
|
21
|
+
__export(module_exports, {
|
|
22
|
+
default: () => module_default
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(module_exports);
|
|
25
|
+
|
|
26
|
+
// ../../node_modules/@flexilla/popover/dist/popover.js
|
|
27
|
+
var K = Object.defineProperty;
|
|
28
|
+
var U = (i, e, t) => e in i ? K(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t;
|
|
29
|
+
var p = (i, e, t) => U(i, typeof e != "symbol" ? e + "" : e, t);
|
|
30
|
+
var A = (i, e = document.body) => e.querySelector(i);
|
|
31
|
+
var j = (i, e = document.body) => Array.from(e.querySelectorAll(i));
|
|
32
|
+
var M = (i, e, t) => {
|
|
33
|
+
const s = new CustomEvent(e, { detail: t });
|
|
34
|
+
i.dispatchEvent(s);
|
|
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
|
+
const t = e.getBoundingClientRect(), s = i.getBoundingClientRect();
|
|
42
|
+
return {
|
|
43
|
+
popperHeight: t.height,
|
|
44
|
+
popperWidth: t.width,
|
|
45
|
+
refHeight: s.height,
|
|
46
|
+
refWidth: s.width,
|
|
47
|
+
refLeft: s.left,
|
|
48
|
+
refTop: s.top,
|
|
49
|
+
refRight: s.right
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
var Q = Object.defineProperty;
|
|
53
|
+
var V = (i, e, t) => e in i ? Q(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t;
|
|
54
|
+
var h = (i, e, t) => V(i, typeof e != "symbol" ? e + "" : e, t);
|
|
55
|
+
var X = (i, e, t, s) => {
|
|
56
|
+
const o = t, n = s - (t + e);
|
|
57
|
+
return o >= (i - e) / 2 && n >= (i - e) / 2;
|
|
58
|
+
};
|
|
59
|
+
var Y = (i, e, t, s) => (i - e) / 2 <= t && t + i / 2 + e / 2 <= s;
|
|
60
|
+
var Z = (i, e, t, s, o) => t > o - s ? e() ? window.innerHeight - o : t - o : i() ? 0 : t + s;
|
|
61
|
+
var _ = (i, e, t, s) => i <= s && t - i <= e;
|
|
62
|
+
var ee = (i, e, t, s) => t <= s && -i <= e;
|
|
63
|
+
var te = (i, e, t, s, o, n) => {
|
|
64
|
+
const r = o - t - n, l = t - s, d = t + n - s + (o - t - n), c = r >= 0 ? o - s : l >= 0 ? t - s : t;
|
|
65
|
+
return i() ? 0 : e() ? d : c;
|
|
66
|
+
};
|
|
67
|
+
var se = (i, e, t, s) => i <= t && e - i - s >= i;
|
|
68
|
+
var ie = (i, e) => i >= e;
|
|
69
|
+
var ne = ({
|
|
70
|
+
placement: i,
|
|
71
|
+
refWidth: e,
|
|
72
|
+
refTop: t,
|
|
73
|
+
refLeft: s,
|
|
74
|
+
refHeight: o,
|
|
75
|
+
popperWidth: n,
|
|
76
|
+
popperHeight: r,
|
|
77
|
+
windowHeight: l,
|
|
78
|
+
windowWidth: d,
|
|
79
|
+
offsetDistance: c
|
|
80
|
+
}) => {
|
|
81
|
+
const m = d - s - e, v = s, D = l - t - o, C = t, u = () => Z(
|
|
82
|
+
() => ee(t, o, r, l),
|
|
83
|
+
() => _(t, o, r, l),
|
|
84
|
+
t,
|
|
85
|
+
o,
|
|
86
|
+
r
|
|
87
|
+
), E = () => te(
|
|
88
|
+
() => se(s, d, n, e),
|
|
89
|
+
() => ie(s, n),
|
|
90
|
+
s,
|
|
91
|
+
n,
|
|
92
|
+
d,
|
|
93
|
+
e
|
|
94
|
+
), k = () => X(n, e, s, d) ? s + e / 2 - n / 2 : E(), H = () => Y(r, o, t, l) ? t + o / 2 - r / 2 : u(), T = () => s + n <= d ? s : E(), y = () => s + e - n >= 0 ? s + e - n : E(), b = () => t + r <= l ? t : u(), G = () => t + o - r >= 0 ? t + o - r : u();
|
|
95
|
+
let g = 0, f = 0;
|
|
96
|
+
const S = t - r - c, O = t + o + c, I = s - n - c, L = s + e + c, W = C >= r + c, F = D >= r + c, R = v >= n + c, $ = m >= n + c;
|
|
97
|
+
switch (i.startsWith("top") ? f = W ? S : F ? O : Math.max(S, O) : i.startsWith("bottom") ? f = F ? O : W ? S : Math.max(S, O) : i.startsWith("left") ? g = R ? I : $ ? L : Math.max(I, L) : i.startsWith("right") && (g = $ ? L : R ? I : Math.max(I, L)), i) {
|
|
98
|
+
case "bottom":
|
|
99
|
+
case "bottom-middle":
|
|
100
|
+
case "top":
|
|
101
|
+
case "top-middle":
|
|
102
|
+
g = k();
|
|
103
|
+
break;
|
|
104
|
+
case "left":
|
|
105
|
+
case "left-middle":
|
|
106
|
+
case "right":
|
|
107
|
+
case "right-middle":
|
|
108
|
+
f = H();
|
|
109
|
+
break;
|
|
110
|
+
case "bottom-start":
|
|
111
|
+
case "top-start":
|
|
112
|
+
g = T();
|
|
113
|
+
break;
|
|
114
|
+
case "bottom-end":
|
|
115
|
+
case "top-end":
|
|
116
|
+
g = y();
|
|
117
|
+
break;
|
|
118
|
+
case "left-start":
|
|
119
|
+
case "right-start":
|
|
120
|
+
f = b();
|
|
121
|
+
break;
|
|
122
|
+
case "left-end":
|
|
123
|
+
case "right-end":
|
|
124
|
+
f = G();
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
return { x: g, y: f };
|
|
128
|
+
};
|
|
129
|
+
var oe = class {
|
|
130
|
+
/**
|
|
131
|
+
* Flexilla Popper
|
|
132
|
+
* @param reference
|
|
133
|
+
* @param popper
|
|
134
|
+
* @param options
|
|
135
|
+
*/
|
|
136
|
+
constructor(e, t, s = {}) {
|
|
137
|
+
h(this, "reference"), h(this, "popper"), h(this, "offsetDistance"), h(this, "placement"), h(this, "disableOnResize"), h(this, "disableOnScroll"), h(this, "onUpdate"), h(this, "isWindowEventsRegistered"), h(this, "validateElements", () => {
|
|
138
|
+
if (!(this.reference instanceof HTMLElement)) throw new Error("Invalid HTMLElement for Reference Element");
|
|
139
|
+
if (!(this.popper instanceof HTMLElement)) throw new Error("Invalid HTMLElement for Popper");
|
|
140
|
+
if (typeof this.offsetDistance != "number") throw new Error("OffsetDistance must be a number");
|
|
141
|
+
}), h(this, "setPopperStyleProperty", (m, v) => {
|
|
142
|
+
this.popper.style.setProperty("--fx-popper-placement-x", `${m}px`), this.popper.style.setProperty("--fx-popper-placement-y", `${v}px`);
|
|
143
|
+
}), h(this, "setInitialStyles", () => {
|
|
144
|
+
this.popper.style.setProperty("--fx-popper-placement-x", ""), this.popper.style.setProperty("--fx-popper-placement-y", "");
|
|
145
|
+
}), h(this, "initPlacement", () => {
|
|
146
|
+
var m;
|
|
147
|
+
this.validateElements(), this.setInitialStyles();
|
|
148
|
+
const v = window.innerWidth, D = window.innerHeight, { popperHeight: C, popperWidth: u, refHeight: E, refWidth: k, refLeft: H, refTop: T } = N({ reference: this.reference, popper: this.popper }), { x: y, y: b } = ne(
|
|
149
|
+
{
|
|
150
|
+
placement: this.placement,
|
|
151
|
+
refWidth: k,
|
|
152
|
+
refTop: T,
|
|
153
|
+
refLeft: H,
|
|
154
|
+
popperWidth: u,
|
|
155
|
+
refHeight: E,
|
|
156
|
+
popperHeight: C,
|
|
157
|
+
windowHeight: D,
|
|
158
|
+
windowWidth: v,
|
|
159
|
+
offsetDistance: this.offsetDistance
|
|
160
|
+
}
|
|
161
|
+
);
|
|
162
|
+
this.setPopperStyleProperty(y, b), (m = this.onUpdate) == null || m.call(this, { x: y, y: b, placement: this.placement });
|
|
163
|
+
}), h(this, "removeWindowEvents", () => {
|
|
164
|
+
this.isWindowEventsRegistered && (!this.disableOnResize && window.removeEventListener("resize", this.updatePosition), !this.disableOnScroll && window.removeEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = false);
|
|
165
|
+
}), h(this, "attachWindowEvent", () => {
|
|
166
|
+
this.isWindowEventsRegistered && this.removeWindowEvents(), this.disableOnResize || window.addEventListener("resize", this.updatePosition), this.disableOnScroll || window.addEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = true;
|
|
167
|
+
}), h(this, "resetPosition", () => {
|
|
168
|
+
this.setInitialStyles();
|
|
169
|
+
}), h(this, "updatePosition", () => {
|
|
170
|
+
this.initPlacement(), this.attachWindowEvent();
|
|
171
|
+
}), h(this, "cleanupEvents", () => {
|
|
172
|
+
this.setInitialStyles(), this.removeWindowEvents();
|
|
173
|
+
});
|
|
174
|
+
const {
|
|
175
|
+
offsetDistance: o = 10,
|
|
176
|
+
placement: n = J,
|
|
177
|
+
eventEffect: r = {},
|
|
178
|
+
onUpdate: l
|
|
179
|
+
} = s;
|
|
180
|
+
if (!(e instanceof HTMLElement)) throw new Error("Invalid HTMLElement for Reference Element");
|
|
181
|
+
if (!(t instanceof HTMLElement)) throw new Error("Invalid HTMLElement for Popper");
|
|
182
|
+
if (s.offsetDistance && typeof s.offsetDistance != "number") throw new Error("OffsetDistance must be a number");
|
|
183
|
+
const { disableOnResize: d, disableOnScroll: c } = r;
|
|
184
|
+
this.isWindowEventsRegistered = false, this.reference = e, this.popper = t, this.offsetDistance = o, this.placement = n, this.disableOnResize = d || false, this.disableOnScroll = c || false, this.onUpdate = l;
|
|
185
|
+
}
|
|
186
|
+
setOptions({ placement: e, offsetDistance: t }) {
|
|
187
|
+
this.placement = e, this.offsetDistance = t || this.offsetDistance, this.initPlacement(), this.attachWindowEvent();
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
var re = (i, e = document.body) => e.querySelector(i);
|
|
191
|
+
var z = (i, e) => {
|
|
192
|
+
for (const [t, s] of Object.entries(e))
|
|
193
|
+
i.setAttribute(t, s);
|
|
194
|
+
};
|
|
195
|
+
var ae = ({
|
|
196
|
+
element: i,
|
|
197
|
+
callback: e,
|
|
198
|
+
type: t,
|
|
199
|
+
keysCheck: s
|
|
200
|
+
}) => {
|
|
201
|
+
const o = getComputedStyle(i), n = o.transition;
|
|
202
|
+
if (n !== "none" && n !== "" && !s.includes(n)) {
|
|
203
|
+
const r = "transitionend", l = () => {
|
|
204
|
+
i.removeEventListener(r, l), e();
|
|
205
|
+
};
|
|
206
|
+
i.addEventListener(r, l, { once: true });
|
|
207
|
+
} else
|
|
208
|
+
e();
|
|
209
|
+
};
|
|
210
|
+
var le = ({
|
|
211
|
+
element: i,
|
|
212
|
+
callback: e
|
|
213
|
+
}) => {
|
|
214
|
+
ae({
|
|
215
|
+
element: i,
|
|
216
|
+
callback: e,
|
|
217
|
+
type: "transition",
|
|
218
|
+
keysCheck: ["all 0s ease 0s", "all"]
|
|
219
|
+
});
|
|
220
|
+
};
|
|
221
|
+
var w = ({ state: i, trigger: e, popper: t }) => {
|
|
222
|
+
z(t, {
|
|
223
|
+
"data-state": i
|
|
224
|
+
}), z(e, {
|
|
225
|
+
"aria-expanded": `${i}`
|
|
226
|
+
});
|
|
227
|
+
};
|
|
228
|
+
var he = class {
|
|
229
|
+
/**
|
|
230
|
+
* Creates an instance of CreateOverlay
|
|
231
|
+
* @param {Object} params - The initialization parameters
|
|
232
|
+
* @param {string | HTMLElement} params.trigger - The trigger element selector or HTMLElement
|
|
233
|
+
* @param {string | HTMLElement} params.content - The content element selector or HTMLElement
|
|
234
|
+
* @param {OverlayOptions} [params.options] - Configuration options for the overlay
|
|
235
|
+
* @throws {Error} When trigger or content elements are invalid
|
|
236
|
+
*/
|
|
237
|
+
constructor({ trigger: e, content: t, options: s = {} }) {
|
|
238
|
+
a(this, "triggerElement"), a(this, "contentElement"), a(this, "triggerStrategy"), a(this, "placement"), a(this, "offsetDistance"), a(this, "preventFromCloseOutside"), a(this, "preventFromCloseInside"), a(this, "options"), a(this, "defaultState"), a(this, "popper"), a(this, "eventEffect"), a(this, "getElement", (n) => typeof n == "string" ? re(n) : n instanceof HTMLElement ? n : void 0), a(this, "handleDocumentClick", (n) => {
|
|
239
|
+
this.contentElement.getAttribute("data-state") === "open" && (!this.triggerElement.contains(n.target) && !this.preventFromCloseInside && !this.preventFromCloseOutside ? this.hide() : !this.triggerElement.contains(n.target) && !this.contentElement.contains(n.target) && !this.preventFromCloseOutside ? this.hide() : !this.triggerElement.contains(n.target) && !this.contentElement.contains(n.target) && !this.preventFromCloseOutside ? this.hide() : !this.triggerElement.contains(n.target) && this.contentElement.contains(n.target) && !this.preventFromCloseInside && this.hide());
|
|
240
|
+
}), a(this, "handleKeyDown", (n) => {
|
|
241
|
+
n.preventDefault(), this.triggerStrategy !== "hover" && n.key === "Escape" && this.contentElement.getAttribute("data-state") === "open" && (this.preventFromCloseOutside || this.hide());
|
|
242
|
+
}), a(this, "toggleStateOnClick", () => {
|
|
243
|
+
(this.contentElement.dataset.state || "close") === "close" ? (this.show(), this.triggerStrategy === "hover" && this.addEventOnMouseEnter()) : this.hide();
|
|
244
|
+
}), a(this, "hideOnMouseLeaseTrigger", () => {
|
|
245
|
+
setTimeout(() => {
|
|
246
|
+
this.contentElement.matches(":hover") || this.hide();
|
|
247
|
+
}, 150);
|
|
248
|
+
}), a(this, "hideOnMouseLeave", () => {
|
|
249
|
+
setTimeout(() => {
|
|
250
|
+
this.triggerElement.matches(":hover") || this.hide();
|
|
251
|
+
}, 150);
|
|
252
|
+
}), a(this, "addEventOnMouseEnter", () => {
|
|
253
|
+
this.triggerElement.addEventListener("mouseleave", this.hideOnMouseLeaseTrigger), this.contentElement.addEventListener("mouseleave", this.hideOnMouseLeave);
|
|
254
|
+
}), a(this, "showOnMouseEnter", () => {
|
|
255
|
+
this.show(), this.addEventOnMouseEnter();
|
|
256
|
+
}), a(this, "setShowOptions", ({ placement: n, offsetDistance: r }) => {
|
|
257
|
+
var l, d, c, m;
|
|
258
|
+
this.popper.setOptions({
|
|
259
|
+
placement: n,
|
|
260
|
+
offsetDistance: r
|
|
261
|
+
}), document.addEventListener("keydown", this.handleKeyDown), document.addEventListener("click", this.handleDocumentClick), (d = (l = this.options).beforeShow) == null || d.call(l), w({
|
|
262
|
+
state: "open",
|
|
263
|
+
popper: this.contentElement,
|
|
264
|
+
trigger: this.triggerElement
|
|
265
|
+
}), this.onToggleState(false), (m = (c = this.options).onShow) == null || m.call(c);
|
|
266
|
+
}), a(this, "setPopperOptions", ({ placement: n, offsetDistance: r }) => {
|
|
267
|
+
this.popper.setOptions({
|
|
268
|
+
placement: n,
|
|
269
|
+
offsetDistance: r
|
|
270
|
+
});
|
|
271
|
+
}), a(this, "cleanup", () => {
|
|
272
|
+
this.triggerElement.removeEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.removeEventListener("mouseenter", this.showOnMouseEnter);
|
|
273
|
+
});
|
|
274
|
+
var o;
|
|
275
|
+
if (this.contentElement = this.getElement(t), this.triggerElement = this.getElement(e), !(this.triggerElement instanceof HTMLElement)) throw new Error("Trigger element must be a valid HTML element");
|
|
276
|
+
if (!(this.contentElement instanceof HTMLElement)) throw new Error("Content element must be a valid HTML element");
|
|
277
|
+
this.options = s, 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 oe(
|
|
278
|
+
this.triggerElement,
|
|
279
|
+
this.contentElement,
|
|
280
|
+
{
|
|
281
|
+
placement: this.placement,
|
|
282
|
+
offsetDistance: this.offsetDistance,
|
|
283
|
+
eventEffect: this.eventEffect
|
|
284
|
+
}
|
|
285
|
+
), this.initInstance();
|
|
286
|
+
}
|
|
287
|
+
onToggleState(e) {
|
|
288
|
+
var t, s;
|
|
289
|
+
(s = (t = this.options).onToggle) == null || s.call(t, { isHidden: e });
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Shows the overlay
|
|
293
|
+
* Positions the overlay, adds event listeners, and triggers related callbacks
|
|
294
|
+
*/
|
|
295
|
+
show() {
|
|
296
|
+
var e, t, s, o;
|
|
297
|
+
this.popper.updatePosition(), document.addEventListener("keydown", this.handleKeyDown), document.addEventListener("click", this.handleDocumentClick), (t = (e = this.options).beforeShow) == null || t.call(e), w({
|
|
298
|
+
state: "open",
|
|
299
|
+
popper: this.contentElement,
|
|
300
|
+
trigger: this.triggerElement
|
|
301
|
+
}), this.onToggleState(false), (o = (s = this.options).onShow) == null || o.call(s);
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Hides the overlay
|
|
305
|
+
* Removes event listeners and triggers related callbacks
|
|
306
|
+
*/
|
|
307
|
+
hide() {
|
|
308
|
+
var e, t;
|
|
309
|
+
(t = (e = this.options).beforeHide) == null || t.call(e), w({
|
|
310
|
+
state: "close",
|
|
311
|
+
popper: this.contentElement,
|
|
312
|
+
trigger: this.triggerElement
|
|
313
|
+
}), 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)), le({
|
|
314
|
+
element: this.contentElement,
|
|
315
|
+
callback: () => {
|
|
316
|
+
var s, o;
|
|
317
|
+
this.onToggleState(true), this.popper.cleanupEvents(), (o = (s = this.options).onHide) == null || o.call(s);
|
|
318
|
+
}
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
initInstance() {
|
|
322
|
+
w({
|
|
323
|
+
state: this.defaultState,
|
|
324
|
+
popper: this.contentElement,
|
|
325
|
+
trigger: this.triggerElement
|
|
326
|
+
}), this.defaultState === "open" ? this.show() : w({
|
|
327
|
+
state: "close",
|
|
328
|
+
popper: this.contentElement,
|
|
329
|
+
trigger: this.triggerElement
|
|
330
|
+
}), this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
|
|
331
|
+
}
|
|
332
|
+
};
|
|
333
|
+
var x = class {
|
|
334
|
+
static initGlobalRegistry() {
|
|
335
|
+
window.$flexillaInstances || (window.$flexillaInstances = {});
|
|
336
|
+
}
|
|
337
|
+
static register(e, t, s) {
|
|
338
|
+
return this.initGlobalRegistry(), window.$flexillaInstances[e] || (window.$flexillaInstances[e] = []), this.getInstance(e, t) || (window.$flexillaInstances[e].push({ element: t, instance: s }), s);
|
|
339
|
+
}
|
|
340
|
+
static getInstance(e, t) {
|
|
341
|
+
var s, o;
|
|
342
|
+
return this.initGlobalRegistry(), (o = (s = window.$flexillaInstances[e]) == null ? void 0 : s.find(
|
|
343
|
+
(n) => n.element === t
|
|
344
|
+
)) == null ? void 0 : o.instance;
|
|
345
|
+
}
|
|
346
|
+
static removeInstance(e, t) {
|
|
347
|
+
this.initGlobalRegistry(), window.$flexillaInstances[e] && (window.$flexillaInstances[e] = window.$flexillaInstances[e].filter(
|
|
348
|
+
(s) => s.element !== t
|
|
349
|
+
));
|
|
350
|
+
}
|
|
351
|
+
};
|
|
352
|
+
var P = class _P {
|
|
353
|
+
/**
|
|
354
|
+
* Creates a new Popover instance.
|
|
355
|
+
* @param {string | HTMLElement} popoverEl - The popover content element or its selector.
|
|
356
|
+
* @param {PopoverOptions} [options={}] - Configuration options for the popover.
|
|
357
|
+
* @example
|
|
358
|
+
* // Create a popover with default options
|
|
359
|
+
* const popover = new Popover('#my-popover');
|
|
360
|
+
*
|
|
361
|
+
* // Create a popover with custom options
|
|
362
|
+
* const popover = new Popover('#my-popover', {
|
|
363
|
+
* placement: 'top',
|
|
364
|
+
* triggerStrategy: 'hover',
|
|
365
|
+
* offsetDistance: 10
|
|
366
|
+
* });
|
|
367
|
+
*/
|
|
368
|
+
constructor(e, t = {}) {
|
|
369
|
+
p(this, "triggerElement");
|
|
370
|
+
p(this, "contentElement");
|
|
371
|
+
p(this, "options");
|
|
372
|
+
p(this, "PopoverInstance");
|
|
373
|
+
p(this, "triggerStrategy");
|
|
374
|
+
p(this, "placement");
|
|
375
|
+
p(this, "offsetDistance");
|
|
376
|
+
p(this, "preventFromCloseOutside");
|
|
377
|
+
p(this, "preventFromCloseInside");
|
|
378
|
+
p(this, "defaultState");
|
|
379
|
+
p(this, "setShowOptions", ({ placement: e2, offsetDistance: t2 }) => {
|
|
380
|
+
this.PopoverInstance.setShowOptions({ placement: e2, offsetDistance: t2 });
|
|
381
|
+
});
|
|
382
|
+
p(this, "show", () => {
|
|
383
|
+
this.PopoverInstance.show(), M(this.contentElement, "popover-show", {
|
|
384
|
+
isHidden: false
|
|
385
|
+
});
|
|
386
|
+
});
|
|
387
|
+
p(this, "hide", () => {
|
|
388
|
+
this.PopoverInstance.hide(), M(this.contentElement, "popover-hide", {
|
|
389
|
+
isHidden: true
|
|
390
|
+
});
|
|
391
|
+
});
|
|
392
|
+
p(this, "cleanup", () => {
|
|
393
|
+
this.PopoverInstance.cleanup(), x.removeInstance("popover", this.contentElement);
|
|
394
|
+
});
|
|
395
|
+
const s = typeof e == "string" ? A(e) : e;
|
|
396
|
+
this.contentElement = s;
|
|
397
|
+
const o = x.getInstance("popover", this.contentElement);
|
|
398
|
+
if (o)
|
|
399
|
+
return o;
|
|
400
|
+
this.triggerElement = A(`[data-popover-trigger][data-popover-id=${s.getAttribute("id")}]`), this.options = t, this.triggerStrategy = this.options.triggerStrategy || s.dataset.triggerStrategy || "click", this.placement = this.options.placement || s.dataset.placement || "bottom-middle", this.offsetDistance = this.options.offsetDistance || parseInt(`${s.dataset.offsetDistance}`) | 6, this.preventFromCloseOutside = this.options.preventFromCloseOutside || s.hasAttribute("data-prevent-close-outside") || false, this.preventFromCloseInside = this.options.preventCloseFromInside || s.hasAttribute("data-prevent-close-inside") || false, this.defaultState = this.options.defaultState || s.dataset.defaultState || "close", this.PopoverInstance = new he({
|
|
401
|
+
trigger: this.triggerElement,
|
|
402
|
+
content: this.contentElement,
|
|
403
|
+
options: {
|
|
404
|
+
placement: this.placement,
|
|
405
|
+
offsetDistance: this.offsetDistance,
|
|
406
|
+
triggerStrategy: this.triggerStrategy,
|
|
407
|
+
preventFromCloseOutside: this.preventFromCloseOutside,
|
|
408
|
+
preventCloseFromInside: this.preventFromCloseInside,
|
|
409
|
+
defaultState: this.defaultState,
|
|
410
|
+
onShow: this.options.onShow,
|
|
411
|
+
onHide: this.options.onHide,
|
|
412
|
+
onToggle: ({ isHidden: n }) => {
|
|
413
|
+
var r, l;
|
|
414
|
+
(l = (r = this.options).onToggle) == null || l.call(r, { isHidden: n }), M(this.contentElement, "popover-toggle", {
|
|
415
|
+
isHidden: n
|
|
416
|
+
});
|
|
417
|
+
},
|
|
418
|
+
popper: this.options.popper
|
|
419
|
+
}
|
|
420
|
+
}), x.register("popover", this.contentElement, this);
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Creates a new Popover instance with the specified options.
|
|
424
|
+
* @param {string | HTMLElement} popoverEl - The popover content element or its selector.
|
|
425
|
+
* @param {PopoverOptions} [options] - Configuration options for the popover.
|
|
426
|
+
* @returns {Popover} A new Popover instance.
|
|
427
|
+
* @example
|
|
428
|
+
* const popover = Popover.init('#my-popover', {
|
|
429
|
+
* placement: 'bottom',
|
|
430
|
+
* triggerStrategy: 'click'
|
|
431
|
+
* });
|
|
432
|
+
*/
|
|
433
|
+
static init(e, t) {
|
|
434
|
+
return new _P(e, t);
|
|
435
|
+
}
|
|
436
|
+
/**
|
|
437
|
+
* Automatically initializes all popover elements matching the specified selector.
|
|
438
|
+
* @param {string} [selector='[data-fx-popover]'] - The selector to find popover elements.
|
|
439
|
+
* @example
|
|
440
|
+
* // Initialize all popovers with default selector
|
|
441
|
+
* Popover.autoInit();
|
|
442
|
+
*
|
|
443
|
+
* // Initialize popovers with custom selector
|
|
444
|
+
* Popover.autoInit('.custom-popover');
|
|
445
|
+
*/
|
|
446
|
+
static autoInit(e = "[data-fx-popover]") {
|
|
447
|
+
const t = j(e);
|
|
448
|
+
for (const s of t) new _P(s);
|
|
449
|
+
}
|
|
450
|
+
};
|
|
451
|
+
|
|
452
|
+
// src/index.js
|
|
453
|
+
function Popover(Alpine) {
|
|
454
|
+
Alpine.directive("popover", (el, {}, { cleanup }) => {
|
|
455
|
+
const popover_ = new P(el);
|
|
456
|
+
cleanup(() => {
|
|
457
|
+
popover_.cleanup();
|
|
458
|
+
});
|
|
459
|
+
});
|
|
460
|
+
}
|
|
461
|
+
var src_default = Popover;
|
|
462
|
+
|
|
463
|
+
// builds/module.js
|
|
464
|
+
var module_default = src_default;
|