react-box-tools
Version:
Box tools react components, utils and hooks
96 lines (95 loc) • 2.8 kB
JavaScript
import { jsxs as u, jsx as n } from "react/jsx-runtime";
import { c as P } from "./clsx-DG-5vF7T.js";
import { useState as f, useId as $, useRef as q, useEffect as D } from "react";
import { u as z } from "./form-CzgKUHW5.js";
const L = (h) => {
const {
//defaultValues: init,
label: p,
icon: v,
disabled: o,
onAdd: N,
onFocus: b,
onKeyDown: y,
...I
} = h, { validateField: w, getRegisteredField: K, error: d, event: x, initValues: m } = z(), r = K(h), [F, M] = f(m[r] ?? []), [V, E] = f(d[r]), [s, i] = f(
m[r] ?? []
), g = $(), l = q(null);
x.onClear(() => k()), x.onReset(() => {
M(m[r]);
});
const C = s.length > 0, R = (e) => {
let t = "";
if (l.current && (t = l.current.value.trim()), e.key === "Enter" && t) {
if (!s.includes(t)) {
var c = [...s, t];
i(c), a(c), N && N(t, c);
}
A("");
}
y && y(e);
}, j = (e) => {
a(s), b && b(e);
}, S = (e) => {
var t = s.filter((c) => c !== e);
i(t), a(t);
}, a = (e) => {
r && w(r, e).then((t) => E(t.error));
}, k = () => {
o || (i([]), a([]));
}, A = (e) => {
l.current && (l.current.value = e);
};
return D(() => {
i(F);
}, [F]), D(() => {
E(d[r]);
}, [d]), /* @__PURE__ */ u("div", { className: P(`control ${o && "disabled"}`), children: [
p && /* @__PURE__ */ n("label", { htmlFor: g, children: p }),
/* @__PURE__ */ u("div", { className: "content", children: [
C && /* @__PURE__ */ n("div", { className: "multi-items", children: s.map((e, t) => /* @__PURE__ */ u("div", { className: "item", children: [
/* @__PURE__ */ n("span", { children: e }),
/* @__PURE__ */ n(
"button",
{
type: "button",
className: "x",
disabled: o,
onClick: () => S(e),
children: /* @__PURE__ */ n("i", { children: "×" })
}
)
] }, t)) }),
/* @__PURE__ */ u("div", { className: "input", children: [
/* @__PURE__ */ n("div", { className: "icon", children: v || /* @__PURE__ */ n("i", { children: "⊌" }) }),
/* @__PURE__ */ n(
"input",
{
autoComplete: "off",
...I,
ref: l,
disabled: o,
type: "text",
id: g,
onKeyDown: R,
onFocus: j
}
),
C && /* @__PURE__ */ n(
"button",
{
className: "clear",
type: "button",
onClick: k,
disabled: o,
children: /* @__PURE__ */ n("i", { children: "×" })
}
)
] })
] }),
V && /* @__PURE__ */ n("span", { className: "error", children: V })
] });
};
export {
L as MultivalueInput
};