/** * External dependencies */ import { noop } from 'lodash'; import classNames from 'classnames'; // eslint-disable-next-line no-restricted-imports import type { Ref } from 'react'; /** * GeChiUI dependencies */ import { useInstanceId } from '@gechiui/compose'; import { useState, forwardRef } from '@gechiui/element'; /** * Internal dependencies */ import InputBase from './input-base'; import InputField from './input-field'; import type { InputControlProps } from './types'; function useUniqueId( idProp?: string ) { const instanceId = useInstanceId( InputControl ); const id = `inspector-input-control-${ instanceId }`; return idProp || id; } export function InputControl( { __unstableStateReducer: stateReducer = ( state ) => state, __unstableInputWidth, className, disabled = false, hideLabelFromVision = false, id: idProp, isPressEnterToChange = false, label, labelPosition = 'top', onChange = noop, onValidate = noop, onKeyDown = noop, prefix, size = 'default', suffix, value, ...props }: InputControlProps, ref: Ref< HTMLInputElement > ) { const [ isFocused, setIsFocused ] = useState( false ); const id = useUniqueId( idProp ); const classes = classNames( 'components-input-control', className ); return ( ); } const ForwardedComponent = forwardRef( InputControl ); export default ForwardedComponent;