feat: synchronize selected flag with external value changes in TelephoneInput
This commit is contained in:
parent
860e88c3be
commit
f1ddba461a
@ -212,6 +212,31 @@ const TelephoneInput = forwardRef<TelephoneInputHandle, TelephoneInputProps>(
|
||||
}
|
||||
}, [initialCountry, rest.id, rest.name])
|
||||
|
||||
// Keep selected flag in sync when value is prefilled/changed externally
|
||||
useEffect(() => {
|
||||
const inputEl = inputRef.current
|
||||
const instance = itiRef.current
|
||||
if (!inputEl || !instance) return
|
||||
|
||||
const raw = (inputEl.value || '').trim()
|
||||
if (!raw) return
|
||||
|
||||
// normalize "00" prefix to "+"
|
||||
const normalized = raw.startsWith('00') ? `+${raw.slice(2)}` : raw
|
||||
if (!normalized.startsWith('+')) return
|
||||
|
||||
const digits = normalized.replace(/\D/g, '')
|
||||
if (digits.length < 4) return
|
||||
if (digits === lastSyncDigitsRef.current) return
|
||||
lastSyncDigitsRef.current = digits
|
||||
|
||||
try {
|
||||
instance.setNumber?.(`+${digits}`)
|
||||
} catch {
|
||||
// ignore
|
||||
}
|
||||
}, [rest.value])
|
||||
|
||||
useImperativeHandle(ref, () => ({
|
||||
getNumber: () => {
|
||||
const raw = inputRef.current?.value || ''
|
||||
|
||||
Loading…
Reference in New Issue
Block a user