koval-ui
Version:
React components collection with minimalistic design. Supports theming, layout, and input validation.
3 lines (2 loc) • 2.19 kB
JavaScript
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),n=require("react"),_=require("classnames"),z=require("../../internal/Icons/IconValid.cjs"),A=require("../../internal/Icons/IconLoader.cjs"),D=require("../../internal/Icons/IconErrorOutline.cjs"),e=require("../../internal/inputs/ValidationProps.cjs"),G=require("../../internal/inputs/useValidation.cjs"),H=require("../../internal/inputs/useRevalidateOnFormChange.cjs"),J=require("../../internal/inputs/useExternalValidation.cjs"),K=require("../../internal/hooks/useInternalId.cjs"),Q=require("../../internal/hooks/useInternalRef.cjs"),c=require("./InputText.module.css.cjs"),V=n.forwardRef(({prefix:d,className:f,type:h="text",placeholder:g="",disabled:q,value:S,onChange:I=()=>{},onFocus:b=()=>{},onBlur:R=()=>{},onKeyDown:j=()=>{},onKeyUp:y=()=>{},defaultValue:C,readOnly:o,size:T=16,id:N,required:a,revalidateOnFormChange:v,errorMessage:E=e.ValidationState.error,validation:i,displayIcon:F=!0,...r},L)=>{const s=Q.useInternalRef(L),k=!!i||!!a||typeof r.maxLength=="number"||typeof r.minLength=="number"||typeof r.pattern=="string",{validateTextual:p,validity:m,setValidity:l}=G.useValidation({validation:i,hasValidators:k});J.useExternalValidation({errorMessage:E,inputRef:s,setValidity:l,validation:i}),H.useRevalidateOnFormChange(s,p,v);const O={[e.ValidationState.error]:D.IconErrorOutline,[e.ValidationState.valid]:z.IconValid,[e.ValidationState.inProgress]:A.IconLoader,[e.ValidationState.pristine]:n.Fragment}[m],w=n.useCallback(u=>{I(u)},[I]),B=n.useCallback(()=>{a&&l(e.ValidationState.error)},[a,l]),M=n.useCallback(u=>{o&&u.target.select()},[o]),x=K.useInternalId(N);return t.jsxs("div",{className:_(c.default.wrapper,f),children:[d&&t.jsx("label",{className:c.default.prefix,htmlFor:x,children:t.jsx(d,{})}),t.jsx("input",{...r,required:a,size:T,id:x,readOnly:o,placeholder:g,className:c.default.input,ref:s,disabled:q,type:h,value:S,defaultValue:C,onChange:w,onBlur:R,onFocus:b,onKeyUp:y,onKeyDown:j,onInvalid:B,onInput:p,onSelect:M}),F&&m&&t.jsx(O,{})]})});V.displayName="InputText";exports.InputText=V;
//# sourceMappingURL=InputText.cjs.map