Spaces:
Configuration error
Configuration error
| import React, { useRef } from 'react' | |
| import { useClickAway } from 'react-use' | |
| import NumberInput from '../shared/NumberInput' | |
| import SettingBlock from './SettingBlock' | |
| interface NumberInputSettingProps { | |
| title: string | |
| allowFloat?: boolean | |
| desc?: string | |
| value: string | |
| suffix?: string | |
| width?: number | |
| widthUnit?: string | |
| disable?: boolean | |
| onValue: (val: string) => void | |
| } | |
| function NumberInputSetting(props: NumberInputSettingProps) { | |
| const { | |
| title, | |
| allowFloat, | |
| desc, | |
| value, | |
| suffix, | |
| onValue, | |
| width, | |
| widthUnit, | |
| disable, | |
| } = props | |
| const ref = useRef(null) | |
| useClickAway<MouseEvent>(ref, () => { | |
| if (ref?.current) { | |
| const input = ref.current as HTMLInputElement | |
| input.blur() | |
| } | |
| }) | |
| return ( | |
| <SettingBlock | |
| className="sub-setting-block" | |
| title={title} | |
| desc={desc} | |
| input={ | |
| <div | |
| style={{ | |
| display: 'flex', | |
| justifyContent: 'center', | |
| alignItems: 'center', | |
| gap: '8px', | |
| }} | |
| > | |
| <NumberInput | |
| allowFloat={allowFloat} | |
| style={{ width: `${width}${widthUnit}` }} | |
| value={value} | |
| disabled={disable} | |
| onValue={onValue} | |
| ref={ref} | |
| /> | |
| {suffix && <span>{suffix}</span>} | |
| </div> | |
| } | |
| /> | |
| ) | |
| } | |
| NumberInputSetting.defaultProps = { | |
| allowFloat: false, | |
| width: 80, | |
| widthUnit: 'px', | |
| disable: false, | |
| } | |
| export default NumberInputSetting | |