koval-ui
Version:
React components collection with minimalistic design. Supports theming, layout, and input validation.
3 lines (2 loc) • 1.95 kB
JavaScript
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),s=require("react"),T=require("classnames"),L=require("css-vars-hook"),M=require("../../internal/Icons/IconExpand.cjs"),B=require("../../internal/inputs/ValidationProps.cjs"),H=require("../../internal/inputs/useValidation.cjs"),P=require("../../internal/inputs/useRevalidateOnFormChange.cjs"),W=require("../../internal/inputs/useExternalValidation.cjs"),_=require("../../internal/inputs/useValidationIcon.cjs"),$=require("../../internal/hooks/useInternalId.cjs"),A=require("../../internal/hooks/useInternalRef.cjs"),a=require("./Select.module.css.cjs"),I=s.forwardRef(({prefix:o,className:f,disabled:h,value:x,onChange:c=()=>{},onFocus:q=()=>{},onBlur:p=()=>{},onKeyDown:V=()=>{},onKeyUp:j=()=>{},id:R,multiple:r,children:N,size:i=16,revalidateOnFormChange:v,validation:t,errorMessage:S,...b},g)=>{const{LocalRoot:y}=L.useLocalTheme(),C=s.useMemo(()=>({"select-width":`${i}ch`}),[i]),E=!!t,{validateTextual:u,validity:d,setValidity:n}=H.useValidation({validation:t,hasValidators:E}),l=A.useInternalRef(g);P.useRevalidateOnFormChange(l,u,v),W.useExternalValidation({errorMessage:S,inputRef:l,setValidity:n,validation:t});const k=_.useValidationIcon(d),w=s.useCallback(O=>{c(O)},[c]),F=s.useCallback(()=>{n(B.ValidationState.error)},[n]),m=$.useInternalId(R);return e.jsxs(y,{theme:C,className:T(a.default.wrapper,f),children:[o&&e.jsx("label",{className:a.default.prefix,htmlFor:m,children:e.jsx(o,{})}),e.jsxs("div",{className:a.default.iconWrapper,children:[e.jsx("select",{...b,id:m,multiple:r,className:a.default.select,ref:l,disabled:h,value:x,onChange:w,onFocus:q,onBlur:p,onKeyUp:j,onKeyDown:V,onInvalid:F,onInput:u,children:N}),!r&&e.jsx(M.IconExpand,{className:a.default.icon})]}),d&&e.jsx(k,{className:a.default.validation})]})});I.displayName="Select";exports.Select=I;
//# sourceMappingURL=Select.cjs.map