ayongui
Version:
84 lines (83 loc) • 1.9 kB
JavaScript
import { j as a } from "../../../react/jsx-runtime.mjs";
import p, { useState as x, useEffect as C } from "react";
import t from "./index.module.less.mjs";
import { isPromise as k } from "../../utils/index.mjs";
const d = ({
value: o,
disabled: r,
children: i,
checked: n = !1,
indeterminate: h = !1,
onChange: m = () => {
},
onBeforSelect: u = () => !0
}) => {
const [s, c] = x(n);
C(() => {
r || c(() => n);
}, [n]);
const e = async () => {
if (!r) {
try {
if (!await k(u))
return;
} catch {
}
m(!s), c(() => !s);
}
};
return /* @__PURE__ */ a.jsxs("label", { className: `${t.label} ${r ? t.disabled : ""}`, children: [
/* @__PURE__ */ a.jsx(
"input",
{
type: "checkbox",
value: o,
className: `${t.customCheckbox} ${h ? t.indeterminate : ""}`,
onClick: e,
checked: s,
onChange: () => {
},
disabled: r
}
),
/* @__PURE__ */ a.jsx("span", { className: `${s ? t.okShow : t.ok}`, children: "✔" }),
i
] });
}, b = ({
options: o = [],
children: r,
value: i = [],
defaultValue: n = [],
onChange: h = () => {
},
onBeforSelect: m = () => !0
}) => {
let u = o;
p.Children.count(r) > 0 && p.Children.map(r, (e) => {
u.push({ value: e.props.value, label: e.props.children });
});
const [s, c] = x([...n]);
return C(() => {
h(s);
}, [s]), /* @__PURE__ */ a.jsx(a.Fragment, { children: u.map((e, f) => /* @__PURE__ */ a.jsx(
d,
{
value: e.value,
checked: i.includes(e.value),
onChange: async (j) => {
try {
if (!await k(m, e))
return;
} catch {
}
c(j ? (l) => [...l, e.value] : (l) => l.filter((v) => v !== e.value));
},
children: e.label
},
f
)) });
};
d.Group = b;
export {
d as default
};