@tapie-kr/inspire-react
Version:
React Component Collection for INSPIRE
21 lines (17 loc) • 1.54 kB
JavaScript
/* eslint-disable */
/*
* INSPIRE : Creative Kit
* React Component Collection for INSPIRE
*
* This file is generated automatically. Do not modify it manually
* Generated at : 2025. 3. 4. 오후 6:18:13
* @tapie-kr/inspire-react version: 0.2.15
*
* (c) 2025 TAPIE. All rights reserved.
* MIT License
*/
;
var React = require('react');
var useToggle = require('../../../../hooks/use-toggle.js');
function useTextInputController(inputProps){const[value,setValue]=React.useState(valueConverter(inputProps.value||inputProps.defaultValue||""));const[isFocused,_,setIsFocused]=useToggle.useToggle(false);const onChange=React.useCallback(e=>{if(inputProps.maxLength&&e.target.value.length>inputProps.maxLength){return}if(inputProps.disabled){return}if(inputProps.onChange){inputProps.onChange(e);}setValue(valueConverter(e.target.value));},[inputProps.maxLength,inputProps.disabled,inputProps.onChange]);const onFocus=React.useCallback(()=>setIsFocused(true),[setIsFocused]);const onBlur=React.useCallback(()=>setIsFocused(false),[setIsFocused]);const clearValue=React.useCallback(()=>{if(!inputProps.disabled){setValue("");}},[inputProps.disabled]);const controller={value,onChange,onFocus,onBlur};const tools={clearValue};React.useEffect(()=>{setValue(valueConverter(inputProps.value||""));},[inputProps.value]);return {value,isFocused,tools,controller}}function valueConverter(value){if(typeof value==="object"){return value.join(", ")}return value?.toString()||""}
exports.useTextInputController = useTextInputController;