# Component/InputStepper > Props: component-inputstepper.props.txt ## Examples ### Base ```tsx { render: args => { const [value, setValue] = React.useState(args.value ?? args.defaultValue); useEffect(() => { if (args.defaultValue && args.value === undefined) { setValue(args.defaultValue); } }, [args.value, args.defaultValue]); useEffect(() => { setValue(args.value); }, [args.value]); return setValue(value ?? undefined)} />; } } ``` ### By Size ```tsx { render: args => { const [value, setValue] = React.useState(args.value ?? args.defaultValue); useEffect(() => { if (args.defaultValue && args.value === undefined) { setValue(args.defaultValue); } }, [args.value, args.defaultValue]); useEffect(() => { setValue(args.value); }, [args.value]); return setValue(value ?? undefined)} />; }, args: { width: '350px' }, render: args => { return {(['xsmall', 'small', 'medium', 'large'] as InputSize[]).map(size => )} ; } } ``` ### Disabled ```tsx { render: args => { const [value, setValue] = React.useState(args.value ?? args.defaultValue); useEffect(() => { if (args.defaultValue && args.value === undefined) { setValue(args.defaultValue); } }, [args.value, args.defaultValue]); useEffect(() => { setValue(args.value); }, [args.value]); return setValue(value ?? undefined)} />; }, args: { width: '350px' }, render: args => { return {(['xsmall', 'small', 'medium', 'large'] as InputSize[]).map(size => )} ; }, args: { width: '350px', disabled: true } } ``` ### Empty Value 값이 없을때 좌측 버튼은 비활성화 됩니다 ```tsx { render: args => { const [value, setValue] = React.useState(args.value ?? args.defaultValue); useEffect(() => { if (args.defaultValue && args.value === undefined) { setValue(args.defaultValue); } }, [args.value, args.defaultValue]); useEffect(() => { setValue(args.value); }, [args.value]); return setValue(value ?? undefined)} />; }, parameters: { docs: { description: { story: '값이 없을때 좌측 버튼은 비활성화 됩니다' } } } } ``` ### Fixed Width ```tsx { render: args => { const [value, setValue] = React.useState(args.value ?? args.defaultValue); useEffect(() => { if (args.defaultValue && args.value === undefined) { setValue(args.defaultValue); } }, [args.value, args.defaultValue]); useEffect(() => { setValue(args.value); }, [args.value]); return setValue(value ?? undefined)} />; }, args: { width: '350px' } } ``` ### Out Of Range ```tsx { args: { min: 5, max: 10, step: 2 }, render: args => { const [value, setValue] = React.useState(DEFAULT_VALUE); return min: {args.min}/ max: {args.max}/ step: 2 {(['min', 'max'] as ('min' | 'max')[]).map(key => setValue(prev => ({ ...prev, [key]: value }))} /> )} ; } } ``` ### Status status 값은 min, max validation보다 우선해서 표현합니다 ```tsx { render: args => { const [value, setValue] = React.useState(args.value ?? args.defaultValue); useEffect(() => { if (args.defaultValue && args.value === undefined) { setValue(args.defaultValue); } }, [args.value, args.defaultValue]); useEffect(() => { setValue(args.value); }, [args.value]); return setValue(value ?? undefined)} />; }, parameters: { docs: { description: { story: 'status 값은 min, max validation보다 우선해서 표현합니다' } } }, render: () => { return ; } } ``` ### Valid Value onChange의 validValue 값을 사용해 범위 내 값을 가져올 수 있습니다 ```tsx { args: { min: 5, max: 10, step: 2 }, parameters: { docs: { description: { story: 'onChange의 validValue 값을 사용해 범위 내 값을 가져올 수 있습니다' } } }, render: args => { const [value, setValue] = React.useState(DEFAULT_VALUE); return min: {args.min}/ max: {args.max}/ step: 2.
직접 입력 및 stepper 클릭시 범위내 값만 지정 가능
{(['min', 'max'] as ('min' | 'max')[]).map(key => setValue(prev => ({ ...prev, [key]: validValue }))} /> )}
; } } ```