@rnwonder/solid-date-picker
Version:
A responsive, highly-customizable datepicker component for SolidJS.
34 lines (33 loc) • 2.37 kB
JavaScript
import { createComponent as h, Portal as v, memo as w, use as y, insert as O, effect as S, className as p, style as C, template as x } from "solid-js/web";
import { createEffect as E, Show as R } from "solid-js";
import { clickOutsideSJ as W } from "../../utils/portal.js";
import { cn as B } from "../../utils/class.js";
var b = x("<div><div>");
function I(e, n) {
W(e, n);
}
const N = (e) => (E(() => {
var n, t;
(n = e.clickOutsideRef) != null && n.call(e) && I((t = e.clickOutsideRef) == null ? void 0 : t.call(e), (r) => {
e.isShown && (e.ignoreClickOutside || (e.onClickOutsideRef ? e.onClickOutsideRef(r) : e.setIsShown(!1)));
});
}), h(R, { get when() {
return e.isShown;
}, keyed: !0, get children() {
return h(v, { get mount() {
var n;
return w(() => !!(e != null && e.referenceId))() ? document.getElementById(e.referenceId) : ((n = e == null ? void 0 : e.reference) == null ? void 0 : n.call(e)) || e.portalContainer || document.getElementById("modal");
}, get children() {
var n = b(), t = n.firstChild;
return y(I, n, () => (r) => {
e.ignoreClickOutside || (e.onClickOutside ? e.onClickOutside(r) : (e.setIsShown(!1), e.onClose && e.onClose()));
}), O(t, () => e.children), S((r) => {
var s, d, l, a, f, u, m;
var i = e.class, g = { ...e.useRefWidth && (((s = e.reference) == null ? void 0 : s.call(e)) || e.referenceId && document.getElementById(e.referenceId)) && { width: (d = e.reference) != null && d.call(e) ? ((a = (l = e.reference) == null ? void 0 : l.call(e)) == null ? void 0 : a.clientWidth) + "px" : document.getElementById(e.referenceId || "") ? ((f = document.getElementById(e.referenceId || "")) == null ? void 0 : f.clientWidth) + "px" : "" }, ...e.style }, o = B({ "\n rn-absolute\n rn-z-10\n rn-flex\n rn-w-full\n rn-flex-col\n rn-bg-transparent\n ": !e.hideDefaultStyle }, e.innerWrapperClass), k = { ...e.useRefWidth && { width: ((m = (u = e.reference) == null ? void 0 : u.call(e)) == null ? void 0 : m.clientWidth) + "px" } };
return i !== r.e && p(n, r.e = i), r.t = C(n, g, r.t), o !== r.a && p(t, r.a = o), r.o = C(t, k, r.o), r;
}, { e: void 0, t: void 0, a: void 0, o: void 0 }), n;
} });
} }));
export {
N as CustomPortal
};