UNPKG

@rnwonder/solid-date-picker

Version:

A responsive, highly-customizable datepicker component for SolidJS.

34 lines (33 loc) 2.37 kB
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 };