UNPKG

react-box-tools

Version:

Box tools react components, utils and hooks

2 lines (1 loc) 1.45 kB
"use strict";const n=require("react/jsx-runtime"),y=require("./form-CbCMpsmd.cjs"),c=require("react"),F=require("./useUpdateEffect-DyqkA7tm.cjs"),B=i=>{var C;const d=c.useId(),{label:f,icon:x,disabled:l,clearable:V,onChange:h,onFocus:m,...b}=i,{validateField:N,getRegisteredField:q,error:u,event:v,initValues:g}=y.useFormContext(),r=q(i),[j,p]=c.useState(u[r]),[R,s]=c.useState(""),e=c.useRef(null),T=t=>{var a=t.target.value;k(a),o(a),h&&h(t)},U=t=>{o(t.target.value),m&&m(t)},o=t=>{r&&N(r,t).then(a=>p(a.error))},E=()=>{l||(e.current&&(e.current.value=""),e.current&&(e.current.defaultValue=""),s(""),o(""))},k=t=>{t.length===1&&s("x"),t.length===0&&s("")};return c.useEffect(()=>{e.current&&(e.current.defaultValue.length>1?s("x"):s(""))},[(C=e.current)==null?void 0:C.defaultValue]),F.useUpdateEffect(()=>{r&&p(u[r])},[u]),F.useUpdateEffect(()=>{r&&(v.onClear(()=>E()),v.onReset(()=>{e.current&&(e.current.value=g[r])}))},[]),n.jsxs("div",{className:"control",children:[f&&n.jsx("label",{htmlFor:d,children:f}),n.jsx("div",{className:"content",children:n.jsxs("div",{className:"input",children:[x&&n.jsx("div",{className:"icon",children:x}),n.jsx("input",{autoComplete:"off",defaultValue:g[r],...b,ref:e,onChange:T,onFocus:U,disabled:l,type:"text",id:d}),V&&R&&n.jsx("button",{className:"clear",type:"button",onClick:E,disabled:l,children:n.jsx("i",{children:"×"})})]})}),j&&n.jsx("span",{className:"error",children:j})]})};exports.TextBox=B;