diff --git a/categories/formatted/react/src/components/PhoneNumberInput/index.tsx b/categories/formatted/react/src/components/PhoneNumberInput/index.tsx index c4dc2ca..53c808c 100644 --- a/categories/formatted/react/src/components/PhoneNumberInput/index.tsx +++ b/categories/formatted/react/src/components/PhoneNumberInput/index.tsx @@ -73,12 +73,15 @@ export const PhoneNumberInput = React.forwardRef< onChange, name, length, + defaultValue, ...etcProps }: PhoneNumberInputProps, forwardedRef, ) => { const { clientSide } = useClientSide({ clientSide: enhanced }); - const [phoneNumber, setPhoneNumber] = React.useState(value?.toString() ?? ''); + const [phoneNumber, setPhoneNumber] = React.useState( + value?.toString() ?? defaultValue?.toString() ?? '' + ); const labelId = React.useId(); const defaultId = React.useId(); const id = idProp ?? defaultId; @@ -150,6 +153,7 @@ export const PhoneNumberInput = React.forwardRef< value={value} onChange={onChange} ref={defaultRef} + defaultValue={defaultValue} aria-labelledby={labelId} type="tel" id={id} diff --git a/packages/react-utils/src/hooks/form.ts b/packages/react-utils/src/hooks/form.ts index 13d0b08..29324d5 100644 --- a/packages/react-utils/src/hooks/form.ts +++ b/packages/react-utils/src/hooks/form.ts @@ -64,8 +64,11 @@ export const useProxyInput = < if (!input) { return; } - valueSetterFn(transformChangeHandlerArgs(e)); - delegateTriggerEvent('change', input, e); + const transformedValue = transformChangeHandlerArgs(e); + valueSetterFn(transformedValue); + setTimeout(() => { + delegateTriggerEvent('change', input, transformedValue); + }); }, [valueSetterFn, transformChangeHandlerArgs, defaultRef]); return React.useMemo(() => ({ diff --git a/showcases/web-kitchensink-reactnext/src/pages/categories/formatted/index.tsx b/showcases/web-kitchensink-reactnext/src/pages/categories/formatted/index.tsx index d7f317c..ece6826 100644 --- a/showcases/web-kitchensink-reactnext/src/pages/categories/formatted/index.tsx +++ b/showcases/web-kitchensink-reactnext/src/pages/categories/formatted/index.tsx @@ -21,12 +21,31 @@ const TemporalPage: NextPage = () => { onChange={(e) => { console.log('change', e.currentTarget.name, e.currentTarget, e.currentTarget.value)}} /> + + { console.log('focus', e.currentTarget)}} + onBlur={(e) => { console.log('blur', e.currentTarget)}} + onChange={(e) => { console.log('change', e.currentTarget.name, e.currentTarget, e.currentTarget.value)}} + /> + + + +