@useloops/design-system
Version:
The official React based Loops design system
2 lines (1 loc) • 994 B
JavaScript
"use strict";var e=require("react/jsx-runtime"),n=require("@base-ui-components/react"),t=require("react"),r=require("./InternalInputComponent.js");var a=t.memo(({disabled:a=!1,placeholder:u,max:l=1/0,min:s=-1/0,internalChange:o,startAdornment:i,endAdornment:d,slotProps:c,onChange:m,inputRef:p,hideActionButtons:b,step:h=1,value:C})=>{const N=()=>{if(null==C)return null;const e=Number(C);return isNaN(e)?null:e},[x,f]=t.useState(N());t.useEffect(()=>{const e=N();f(e)},[C]);const g=t.useCallback(e=>{f(e),m&&m(e),o&&o()},[o,m]),v=t.useCallback(e=>{const n=e.target.value.trim();if(""===n)return void g(null);let t=Number(n.replace(/,/g,""));isNaN(t)?g(null):(t<0&&(t=Math.abs(t)),t<s&&(t=s),t>l&&(t=l),g(t))},[g,l,s]);return e.jsx(n.NumberField.Root,{step:h,min:s,max:l,onValueChange:g,onChangeCapture:v,value:x,disabled:a,children:e.jsx(n.NumberField.Input,{render:n=>e.jsx(r,{ref:p,...n,...c?.input,hideActionButtons:b,startAdornment:i,endAdornment:d,placeholder:u})})})});module.exports=a;