periplo-ui 4.11.1 → 4.11.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -37,6 +37,9 @@ function usePhoneField({
37
37
  const initial = options.find((option) => isoOf(option) === iso);
38
38
  return initial ? getCountryValue(initial) : void 0;
39
39
  });
40
+ if (country !== void 0 && country !== internalCountryValue) {
41
+ setInternalCountryValue(country);
42
+ }
40
43
  const [pendingIntl, setPendingIntl] = React.useState(void 0);
41
44
  const selectedValue = country ?? internalCountryValue;
42
45
  const selectedOption = options.find((option) => getCountryValue(option) === selectedValue);
@@ -1 +1 @@
1
- {"version":3,"file":"usePhoneField.js","sources":["../../../../src/components/PhoneInput/hooks/usePhoneField.ts"],"sourcesContent":["import * as React from 'react'\n\nimport {\n describe,\n detectIntl,\n formatNational,\n isPartialCallingCode,\n parseDigits,\n pickCountryOption,\n resolveIso,\n toIntlCandidate,\n} from '../phone'\nimport type { PhoneInputCountryAccessors, PhoneValue } from '../types'\n\ntype UsePhoneFieldOptions<T> = Pick<\n PhoneInputCountryAccessors<T>,\n 'getCountryValue' | 'getCountryDialCode' | 'getCountryIsoCode'\n> & {\n options: Array<T>\n country?: string\n number?: string\n onChange?: (value: PhoneValue<T>) => void\n defaultCountry?: string\n priorityCountries?: Array<string>\n}\n\nconst CARET_END = Number.MAX_SAFE_INTEGER\n\nfunction trimTrailingNonDigits(text: string): string {\n let end = text.length\n while (end > 0 && !/\\d/.test(text[end - 1])) end -= 1\n return text.slice(0, end)\n}\n\nfunction caretAfterNthDigit(formatted: string, n: number): number {\n if (n <= 0) return 0\n let seen = 0\n for (let i = 0; i < formatted.length; i++) {\n if (/\\d/.test(formatted[i])) {\n seen += 1\n if (seen === n) return i + 1\n }\n }\n return formatted.length\n}\n\nexport function usePhoneField<T extends object>({\n options,\n getCountryValue,\n getCountryDialCode,\n getCountryIsoCode,\n country,\n number,\n onChange,\n defaultCountry,\n priorityCountries,\n}: UsePhoneFieldOptions<T>) {\n const isoOf = (option: T) => resolveIso(getCountryValue(option), getCountryIsoCode?.(option))\n\n const [internalCountryValue, setInternalCountryValue] = React.useState<string | undefined>(() => {\n if (!defaultCountry) return undefined\n const iso = defaultCountry.toUpperCase()\n const initial = options.find((option) => isoOf(option) === iso)\n return initial ? getCountryValue(initial) : undefined\n })\n\n // Shown as typed until it resolves to a calling code (\"+3\" on the way to \"+34\").\n const [pendingIntl, setPendingIntl] = React.useState<string | undefined>(undefined)\n\n const selectedValue = country ?? internalCountryValue\n const selectedOption = options.find((option) => getCountryValue(option) === selectedValue)\n const selectedIso = selectedOption ? isoOf(selectedOption) : undefined\n const displayValue = pendingIntl ?? formatNational(number ?? '', selectedIso)\n\n const inputElRef = React.useRef<HTMLInputElement | null>(null)\n const caretTarget = React.useRef<number | null>(null)\n\n React.useLayoutEffect(() => {\n const el = inputElRef.current\n if (!el || caretTarget.current === null) return\n const pos = caretAfterNthDigit(el.value, caretTarget.current)\n el.setSelectionRange(pos, pos)\n caretTarget.current = null\n })\n\n function emit(digits: string, option: T | undefined) {\n const iso = option ? isoOf(option) : undefined\n const described = describe(digits, iso)\n onChange?.({\n country: option ? getCountryValue(option) : undefined,\n countryOption: option,\n isoCode: iso,\n dialCode: option ? getCountryDialCode(option) : undefined,\n national: digits,\n e164: described.e164,\n isPossible: described.isPossible,\n isValid: described.isValid,\n })\n }\n\n function commit(digits: string, option: T | undefined, digitsBefore: number) {\n caretTarget.current = digitsBefore\n emit(digits, option)\n }\n\n function handleIntl(text: string) {\n const { iso: detectedIso, callingCode, national } = detectIntl(text)\n\n if (!callingCode) {\n const digits = parseDigits(text)\n if (text === '+' || (digits !== '' && isPartialCallingCode(digits))) {\n setPendingIntl(text)\n return\n }\n setPendingIntl(undefined)\n commit(digits, selectedOption, CARET_END)\n return\n }\n\n setPendingIntl(undefined)\n const option =\n options.length <= 1\n ? selectedOption\n : pickCountryOption({\n detectedIso,\n callingCode,\n options,\n currentOption: selectedOption,\n priorityCountries,\n isoOf,\n dialOf: getCountryDialCode,\n })\n\n if (!option) {\n commit(parseDigits(text), selectedOption, CARET_END)\n return\n }\n\n setInternalCountryValue(getCountryValue(option))\n commit(national, option, CARET_END)\n }\n\n function onInputChange(event: React.ChangeEvent<HTMLInputElement>) {\n const raw = event.target.value\n const caret = event.target.selectionStart ?? raw.length\n const digitsBefore = parseDigits(raw.slice(0, caret)).length\n\n const intlCandidate = toIntlCandidate(raw)\n if (intlCandidate) {\n handleIntl(intlCandidate)\n return\n }\n setPendingIntl(undefined)\n\n const digits = parseDigits(raw)\n\n if (selectedIso && describe(digits, selectedIso).tooLong) {\n // No state update means React won't revert the DOM, so undo the keystroke by hand.\n event.target.value = displayValue\n const pos = caretAfterNthDigit(displayValue, digitsBefore - 1)\n event.target.setSelectionRange(pos, pos)\n return\n }\n\n commit(digits, selectedOption, digitsBefore)\n }\n\n function onInputKeyDown(event: React.KeyboardEvent<HTMLInputElement>) {\n if (event.key !== 'Backspace') return\n if (pendingIntl !== undefined) return // no separators in pending text\n\n const el = event.currentTarget\n const { selectionStart: start, selectionEnd: end, value } = el\n if (start === null || start !== end || start === 0) return\n if (/\\d/.test(value[start - 1] ?? '')) return // deleting a digit: default is correct\n\n event.preventDefault()\n const head = trimTrailingNonDigits(value.slice(0, start))\n const digits = parseDigits(head.slice(0, -1) + value.slice(start))\n commit(digits, selectedOption, parseDigits(head).length - 1)\n }\n\n function selectCountry(option: T) {\n setPendingIntl(undefined)\n setInternalCountryValue(getCountryValue(option))\n emit(number ?? '', option)\n inputElRef.current?.focus()\n }\n\n return {\n isoOf,\n selectedValue,\n selectedOption,\n selectedIso,\n displayValue,\n inputElRef,\n selectCountry,\n onInputChange,\n onInputKeyDown,\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"usePhoneField.js","sources":["../../../../src/components/PhoneInput/hooks/usePhoneField.ts"],"sourcesContent":["import * as React from 'react'\n\nimport {\n describe,\n detectIntl,\n formatNational,\n isPartialCallingCode,\n parseDigits,\n pickCountryOption,\n resolveIso,\n toIntlCandidate,\n} from '../phone'\nimport type { PhoneInputCountryAccessors, PhoneValue } from '../types'\n\ntype UsePhoneFieldOptions<T> = Pick<\n PhoneInputCountryAccessors<T>,\n 'getCountryValue' | 'getCountryDialCode' | 'getCountryIsoCode'\n> & {\n options: Array<T>\n country?: string\n number?: string\n onChange?: (value: PhoneValue<T>) => void\n defaultCountry?: string\n priorityCountries?: Array<string>\n}\n\nconst CARET_END = Number.MAX_SAFE_INTEGER\n\nfunction trimTrailingNonDigits(text: string): string {\n let end = text.length\n while (end > 0 && !/\\d/.test(text[end - 1])) end -= 1\n return text.slice(0, end)\n}\n\nfunction caretAfterNthDigit(formatted: string, n: number): number {\n if (n <= 0) return 0\n let seen = 0\n for (let i = 0; i < formatted.length; i++) {\n if (/\\d/.test(formatted[i])) {\n seen += 1\n if (seen === n) return i + 1\n }\n }\n return formatted.length\n}\n\nexport function usePhoneField<T extends object>({\n options,\n getCountryValue,\n getCountryDialCode,\n getCountryIsoCode,\n country,\n number,\n onChange,\n defaultCountry,\n priorityCountries,\n}: UsePhoneFieldOptions<T>) {\n const isoOf = (option: T) => resolveIso(getCountryValue(option), getCountryIsoCode?.(option))\n\n const [internalCountryValue, setInternalCountryValue] = React.useState<string | undefined>(() => {\n if (!defaultCountry) return undefined\n const iso = defaultCountry.toUpperCase()\n const initial = options.find((option) => isoOf(option) === iso)\n return initial ? getCountryValue(initial) : undefined\n })\n\n if (country !== undefined && country !== internalCountryValue) {\n setInternalCountryValue(country)\n }\n\n // Shown as typed until it resolves to a calling code (\"+3\" on the way to \"+34\").\n const [pendingIntl, setPendingIntl] = React.useState<string | undefined>(undefined)\n\n const selectedValue = country ?? internalCountryValue\n const selectedOption = options.find((option) => getCountryValue(option) === selectedValue)\n const selectedIso = selectedOption ? isoOf(selectedOption) : undefined\n const displayValue = pendingIntl ?? formatNational(number ?? '', selectedIso)\n\n const inputElRef = React.useRef<HTMLInputElement | null>(null)\n const caretTarget = React.useRef<number | null>(null)\n\n React.useLayoutEffect(() => {\n const el = inputElRef.current\n if (!el || caretTarget.current === null) return\n const pos = caretAfterNthDigit(el.value, caretTarget.current)\n el.setSelectionRange(pos, pos)\n caretTarget.current = null\n })\n\n function emit(digits: string, option: T | undefined) {\n const iso = option ? isoOf(option) : undefined\n const described = describe(digits, iso)\n onChange?.({\n country: option ? getCountryValue(option) : undefined,\n countryOption: option,\n isoCode: iso,\n dialCode: option ? getCountryDialCode(option) : undefined,\n national: digits,\n e164: described.e164,\n isPossible: described.isPossible,\n isValid: described.isValid,\n })\n }\n\n function commit(digits: string, option: T | undefined, digitsBefore: number) {\n caretTarget.current = digitsBefore\n emit(digits, option)\n }\n\n function handleIntl(text: string) {\n const { iso: detectedIso, callingCode, national } = detectIntl(text)\n\n if (!callingCode) {\n const digits = parseDigits(text)\n if (text === '+' || (digits !== '' && isPartialCallingCode(digits))) {\n setPendingIntl(text)\n return\n }\n setPendingIntl(undefined)\n commit(digits, selectedOption, CARET_END)\n return\n }\n\n setPendingIntl(undefined)\n const option =\n options.length <= 1\n ? selectedOption\n : pickCountryOption({\n detectedIso,\n callingCode,\n options,\n currentOption: selectedOption,\n priorityCountries,\n isoOf,\n dialOf: getCountryDialCode,\n })\n\n if (!option) {\n commit(parseDigits(text), selectedOption, CARET_END)\n return\n }\n\n setInternalCountryValue(getCountryValue(option))\n commit(national, option, CARET_END)\n }\n\n function onInputChange(event: React.ChangeEvent<HTMLInputElement>) {\n const raw = event.target.value\n const caret = event.target.selectionStart ?? raw.length\n const digitsBefore = parseDigits(raw.slice(0, caret)).length\n\n const intlCandidate = toIntlCandidate(raw)\n if (intlCandidate) {\n handleIntl(intlCandidate)\n return\n }\n setPendingIntl(undefined)\n\n const digits = parseDigits(raw)\n\n if (selectedIso && describe(digits, selectedIso).tooLong) {\n // No state update means React won't revert the DOM, so undo the keystroke by hand.\n event.target.value = displayValue\n const pos = caretAfterNthDigit(displayValue, digitsBefore - 1)\n event.target.setSelectionRange(pos, pos)\n return\n }\n\n commit(digits, selectedOption, digitsBefore)\n }\n\n function onInputKeyDown(event: React.KeyboardEvent<HTMLInputElement>) {\n if (event.key !== 'Backspace') return\n if (pendingIntl !== undefined) return // no separators in pending text\n\n const el = event.currentTarget\n const { selectionStart: start, selectionEnd: end, value } = el\n if (start === null || start !== end || start === 0) return\n if (/\\d/.test(value[start - 1] ?? '')) return // deleting a digit: default is correct\n\n event.preventDefault()\n const head = trimTrailingNonDigits(value.slice(0, start))\n const digits = parseDigits(head.slice(0, -1) + value.slice(start))\n commit(digits, selectedOption, parseDigits(head).length - 1)\n }\n\n function selectCountry(option: T) {\n setPendingIntl(undefined)\n setInternalCountryValue(getCountryValue(option))\n emit(number ?? '', option)\n inputElRef.current?.focus()\n }\n\n return {\n isoOf,\n selectedValue,\n selectedOption,\n selectedIso,\n displayValue,\n inputElRef,\n selectCountry,\n onInputChange,\n onInputKeyDown,\n }\n}\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "periplo-ui",
3
3
  "description": "IATI UI library",
4
4
  "private": false,
5
- "version": "4.11.1",
5
+ "version": "4.11.2",
6
6
  "type": "module",
7
7
  "main": "dist/index.js",
8
8
  "types": "dist/index.d.ts",