@alfalab/core-components-international-phone-input 4.0.7 → 4.0.8
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.
- package/components/base-international-phone-input/Component.d.ts +1 -1
- package/components/base-international-phone-input/Component.js.map +1 -1
- package/components/base-international-phone-input/index.css +1 -1
- package/components/base-international-phone-input/index.module.css.js +1 -1
- package/components/base-international-phone-input/index.module.css.js.map +1 -1
- package/components/country-select/Component.d.ts +2 -2
- package/components/country-select/index.css +9 -9
- package/components/country-select/index.module.css.js +1 -1
- package/components/country-select/index.module.css.js.map +1 -1
- package/components/flag-icon/component.d.ts +1 -1
- package/components/flag-icon/index.css +2 -2
- package/components/flag-icon/index.module.css.js +1 -1
- package/components/flag-icon/index.module.css.js.map +1 -1
- package/components/select-field/component.d.ts +1 -1
- package/components/select-field/index.css +7 -7
- package/components/select-field/index.module.css.js +1 -1
- package/components/select-field/index.module.css.js.map +1 -1
- package/cssm/components/base-international-phone-input/Component.d.ts +1 -1
- package/cssm/components/base-international-phone-input/Component.js.map +1 -1
- package/cssm/components/country-select/Component.d.ts +2 -2
- package/cssm/components/flag-icon/component.d.ts +1 -1
- package/cssm/components/select-field/component.d.ts +1 -1
- package/cssm/data/country-data.d.ts +1 -1
- package/cssm/types.d.ts +6 -6
- package/cssm/utils/index.d.ts +1 -1
- package/cssm/utils/index.js.map +1 -1
- package/data/country-data.d.ts +1 -1
- package/esm/components/base-international-phone-input/Component.d.ts +1 -1
- package/esm/components/base-international-phone-input/Component.js.map +1 -1
- package/esm/components/base-international-phone-input/index.css +1 -1
- package/esm/components/base-international-phone-input/index.module.css.js +1 -1
- package/esm/components/base-international-phone-input/index.module.css.js.map +1 -1
- package/esm/components/country-select/Component.d.ts +2 -2
- package/esm/components/country-select/index.css +9 -9
- package/esm/components/country-select/index.module.css.js +1 -1
- package/esm/components/country-select/index.module.css.js.map +1 -1
- package/esm/components/flag-icon/component.d.ts +1 -1
- package/esm/components/flag-icon/index.css +2 -2
- package/esm/components/flag-icon/index.module.css.js +1 -1
- package/esm/components/flag-icon/index.module.css.js.map +1 -1
- package/esm/components/select-field/component.d.ts +1 -1
- package/esm/components/select-field/index.css +7 -7
- package/esm/components/select-field/index.module.css.js +1 -1
- package/esm/components/select-field/index.module.css.js.map +1 -1
- package/esm/data/country-data.d.ts +1 -1
- package/esm/types.d.ts +6 -6
- package/esm/utils/index.d.ts +1 -1
- package/esm/utils/index.js.map +1 -1
- package/modern/components/base-international-phone-input/Component.d.ts +1 -1
- package/modern/components/base-international-phone-input/Component.js.map +1 -1
- package/modern/components/base-international-phone-input/index.css +1 -1
- package/modern/components/base-international-phone-input/index.module.css.js +1 -1
- package/modern/components/base-international-phone-input/index.module.css.js.map +1 -1
- package/modern/components/country-select/Component.d.ts +2 -2
- package/modern/components/country-select/index.css +9 -9
- package/modern/components/country-select/index.module.css.js +1 -1
- package/modern/components/country-select/index.module.css.js.map +1 -1
- package/modern/components/flag-icon/component.d.ts +1 -1
- package/modern/components/flag-icon/index.css +2 -2
- package/modern/components/flag-icon/index.module.css.js +1 -1
- package/modern/components/flag-icon/index.module.css.js.map +1 -1
- package/modern/components/select-field/component.d.ts +1 -1
- package/modern/components/select-field/index.css +7 -7
- package/modern/components/select-field/index.module.css.js +1 -1
- package/modern/components/select-field/index.module.css.js.map +1 -1
- package/modern/data/country-data.d.ts +1 -1
- package/modern/types.d.ts +6 -6
- package/modern/utils/index.d.ts +1 -1
- package/modern/utils/index.js.map +1 -1
- package/moderncssm/components/base-international-phone-input/Component.d.ts +1 -1
- package/moderncssm/components/base-international-phone-input/Component.js.map +1 -1
- package/moderncssm/components/country-select/Component.d.ts +2 -2
- package/moderncssm/components/flag-icon/component.d.ts +1 -1
- package/moderncssm/components/select-field/component.d.ts +1 -1
- package/moderncssm/data/country-data.d.ts +1 -1
- package/moderncssm/types.d.ts +6 -6
- package/moderncssm/utils/index.d.ts +1 -1
- package/moderncssm/utils/index.js.map +1 -1
- package/package.json +7 -7
- package/src/components/base-international-phone-input/index.module.css +1 -1
- package/src/components/country-select/index.module.css +1 -1
- package/src/components/flag-icon/index.module.css +1 -1
- package/src/components/select-field/index.module.css +1 -1
- package/types.d.ts +6 -6
- package/utils/index.d.ts +1 -1
- package/utils/index.js.map +1 -1
|
@@ -4,6 +4,6 @@ import { type InputAutocompleteProps } from '@alfalab/core-components-input-auto
|
|
|
4
4
|
export declare const BaseInternationalPhoneInput: React.ForwardRefExoticComponent<import("../../types").CommonPhoneInputProps & {
|
|
5
5
|
Input: React.FC<InputProps>;
|
|
6
6
|
InputAutocomplete: React.FC<InputAutocompleteProps>;
|
|
7
|
-
SelectComponent: React.ElementType
|
|
7
|
+
SelectComponent: React.ElementType;
|
|
8
8
|
view: "desktop" | "mobile";
|
|
9
9
|
} & Omit<InputProps, "onBlur" | "onFocus" | "onChange" | "onScroll" | "onInput"> & Partial<Omit<InputAutocompleteProps, "onChange" | "onScroll" | "onInput" | "leftAddons">> & React.RefAttributes<HTMLInputElement>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.js","sources":["../../src/components/base-international-phone-input/Component.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n forwardRef,\n type MouseEvent,\n type RefAttributes,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport mergeRefs from 'react-merge-refs';\nimport { maskitoTransform } from '@maskito/core';\nimport { useMaskito } from '@maskito/react';\n\nimport { type InputProps } from '@alfalab/core-components-input';\nimport { type InputAutocompleteProps } from '@alfalab/core-components-input-autocomplete';\nimport { type AnyObject, BaseOption } from '@alfalab/core-components-select/shared';\nimport { type BaseSelectChangePayload } from '@alfalab/core-components-select/typings';\n\nimport { type BaseInternationalPhoneInputProps, type Country } from '../../types';\nimport {\n createMaskOptions,\n filterPhones,\n findCountry,\n getClear,\n getInitialValueFromCountry,\n getPhoneData,\n initCountries,\n} from '../../utils';\nimport { CountrySelect } from '../country-select';\n\nimport styles from './index.module.css';\n\nexport const BaseInternationalPhoneInput = forwardRef<\n HTMLInputElement,\n BaseInternationalPhoneInputProps\n>(\n (\n {\n clearableCountryCode: clearableCountryCodeFromProps = true,\n value,\n country: countryProp,\n filterFn,\n onChange,\n onCountryChange,\n countrySelectProps,\n countries,\n defaultIso2,\n disabled,\n options,\n size = 56,\n Input,\n InputAutocomplete,\n SelectComponent,\n view,\n clear: clearProp,\n open: openProps,\n defaultOpen,\n customCountriesList,\n autoFill,\n ...restProps\n },\n ref,\n ) => {\n const { readOnly } = restProps;\n const countriesData = useMemo(\n () => initCountries(countries, customCountriesList),\n [countries, customCountriesList],\n );\n const inputRef = useRef<HTMLInputElement>(null);\n const inputWrapperRef = useRef<HTMLDivElement>(null);\n\n const [open, setOpen] = useState<boolean | undefined>(defaultOpen);\n const [openCountry, setOpenCountry] = useState<boolean | undefined>(\n countrySelectProps?.defaultOpen,\n );\n const beforeAutofillValueRef = useRef('');\n const [selectedCountry, setSelectedCountry] = useState<Country | undefined>(() =>\n findCountry(countriesData, value, defaultIso2, countryProp),\n );\n const filteredOptions = filterPhones(value, options, filterFn);\n const country = countryProp ?? selectedCountry;\n\n const handleCountryChange = (nextCountry?: Country) => {\n if (countryProp === undefined) setSelectedCountry(nextCountry);\n onCountryChange?.(nextCountry);\n };\n\n const preserveCountryCode = clearableCountryCodeFromProps === 'preserve';\n const clearableCountryCode = preserveCountryCode || clearableCountryCodeFromProps;\n const maskOptions = useMemo(\n () =>\n createMaskOptions(\n country,\n clearableCountryCode,\n preserveCountryCode,\n beforeAutofillValueRef,\n ),\n [country, clearableCountryCode, preserveCountryCode],\n );\n\n const maskRef = useMaskito({ options: maskOptions });\n\n const changeNumber = (phone: string) => {\n onChange?.(phone);\n };\n\n const updatePhoneData = (phone: string) => {\n const { nextCountry, nextPhone } = getPhoneData(phone, countriesData, defaultIso2);\n\n if (nextCountry !== country) {\n handleCountryChange?.(nextCountry);\n }\n changeNumber(nextPhone);\n };\n\n const handleSelectCountry = ({ selected }: BaseSelectChangePayload) => {\n const nextCountry = selected?.value as Country;\n\n handleCountryChange?.(nextCountry);\n\n if (nextCountry) {\n changeNumber(getInitialValueFromCountry(nextCountry.countryCode));\n }\n\n requestAnimationFrame(() => inputRef.current?.focus());\n };\n\n const handleOptionSelect = (payload: BaseSelectChangePayload | string) => {\n updatePhoneData(\n maskitoTransform(\n typeof payload === 'string' ? payload : payload.selected?.key || '',\n maskOptions,\n ),\n );\n };\n\n const handleInput = ({ target: { value: inputValue } }: ChangeEvent<HTMLInputElement>) => {\n updatePhoneData(inputValue);\n };\n\n const handleClear = (event: MouseEvent<HTMLButtonElement>) => {\n restProps.inputProps?.onClear?.(event);\n\n if (clearableCountryCode) {\n const nextCountry = findCountry(countriesData, '', defaultIso2, countryProp);\n\n changeNumber('');\n handleCountryChange(nextCountry);\n } else {\n changeNumber(country ? getInitialValueFromCountry(country.countryCode) : '');\n }\n };\n\n useEffect(() => {\n if (value) {\n const newValue = maskitoTransform(value, maskOptions);\n\n if (value !== newValue) {\n updatePhoneData(newValue);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value, maskOptions]);\n\n const openPhoneSelect: InputAutocompleteProps['onOpen'] = (payload) => {\n if (openProps === undefined) setOpen(payload.open);\n restProps.onOpen?.(payload);\n };\n\n const openCountrySelect: InputAutocompleteProps['onOpen'] = (payload) => {\n if (countrySelectProps?.open === undefined) setOpenCountry(payload.open);\n countrySelectProps?.onOpen?.(payload);\n };\n\n const handlePhoneSelectOpen: InputAutocompleteProps['onOpen'] = (payload) => {\n if (payload.open) {\n openCountrySelect({ open: false });\n }\n\n openPhoneSelect(payload);\n };\n\n const handleCountrySelectOpen: InputAutocompleteProps['onOpen'] = (payload) => {\n if (payload.open) {\n openPhoneSelect({ open: false });\n }\n openCountrySelect(payload);\n };\n\n const showPhoneSelect = Boolean(open || openProps);\n const showCountrySelect = Boolean(openCountry || countrySelectProps?.open);\n\n const renderCountrySelect = (compact = false) => {\n if (disabled || readOnly) {\n return undefined;\n }\n\n return (\n <CountrySelect\n dataTestId={restProps?.dataTestId}\n size={size}\n {...countrySelectProps}\n view={view}\n SelectComponent={SelectComponent}\n disabled={disabled || countrySelectProps?.disabled}\n onChange={handleSelectCountry}\n country={country}\n countries={compact ? [] : countriesData}\n fieldWidth={inputWrapperRef.current?.getBoundingClientRect().width}\n onOpen={handleCountrySelectOpen}\n open={showCountrySelect}\n />\n );\n };\n\n const inputProps: InputProps & RefAttributes<HTMLInputElement> = {\n className: styles.component,\n ref: mergeRefs([maskRef, ref, inputRef]),\n wrapperRef: inputWrapperRef,\n addonsClassName: styles.addons,\n type: 'tel',\n autoComplete: 'tel',\n clear: getClear(clearProp, clearableCountryCode, value, country?.countryCode),\n ...restProps.inputProps,\n };\n\n return Array.isArray(options) ? (\n <InputAutocomplete\n closeOnSelect={true}\n Option={BaseOption}\n size={size}\n {...(restProps as InputAutocompleteProps)}\n disabled={disabled}\n options={filteredOptions}\n value={value}\n open={showPhoneSelect}\n onOpen={handlePhoneSelectOpen}\n onChange={handleOptionSelect}\n onInput={(phone) => updatePhoneData(phone)}\n inputProps={{\n ...inputProps,\n onClear: handleClear,\n onInput: handleInput,\n leftAddons: renderCountrySelect(view === 'mobile'),\n }}\n fieldProps={{\n ...(restProps.fieldProps as AnyObject),\n className: inputProps.className,\n addonsClassName: inputProps.addonsClassName,\n ...(view === 'mobile' ? { leftAddons: renderCountrySelect() } : null),\n }}\n />\n ) : (\n <Input\n {...restProps}\n {...inputProps}\n onClear={inputProps.clear ? handleClear : undefined}\n leftAddons={renderCountrySelect()}\n size={size}\n onInput={handleInput}\n value={value}\n disabled={disabled}\n />\n );\n },\n);\n"],"names":["forwardRef","__rest","useMemo","initCountries","useRef","useState","findCountry","filterPhones","createMaskOptions","useMaskito","getPhoneData","getInitialValueFromCountry","maskitoTransform","useEffect","React","CountrySelect","__assign","styles","mergeRefs","getClear","BaseOption"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Component.js","sources":["../../src/components/base-international-phone-input/Component.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n forwardRef,\n type MouseEvent,\n type RefAttributes,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport mergeRefs from 'react-merge-refs';\nimport { maskitoTransform } from '@maskito/core';\nimport { useMaskito } from '@maskito/react';\n\nimport { type InputProps } from '@alfalab/core-components-input';\nimport { type InputAutocompleteProps } from '@alfalab/core-components-input-autocomplete';\nimport { type AnyObject, BaseOption } from '@alfalab/core-components-select/shared';\nimport { type BaseSelectChangePayload } from '@alfalab/core-components-select/typings';\n\nimport { type BaseInternationalPhoneInputProps, type Country } from '../../types';\nimport {\n createMaskOptions,\n filterPhones,\n findCountry,\n getClear,\n getInitialValueFromCountry,\n getPhoneData,\n initCountries,\n} from '../../utils';\nimport { CountrySelect } from '../country-select';\n\nimport styles from './index.module.css';\n\nexport const BaseInternationalPhoneInput = forwardRef<\n HTMLInputElement,\n BaseInternationalPhoneInputProps\n>(\n (\n {\n clearableCountryCode: clearableCountryCodeFromProps = true,\n value,\n country: countryProp,\n filterFn,\n onChange,\n onCountryChange,\n countrySelectProps,\n countries,\n defaultIso2,\n disabled,\n options,\n size = 56,\n Input,\n InputAutocomplete,\n SelectComponent,\n view,\n clear: clearProp,\n open: openProps,\n defaultOpen,\n customCountriesList,\n autoFill,\n ...restProps\n },\n ref,\n ) => {\n const { readOnly } = restProps;\n const countriesData = useMemo(\n () => initCountries(countries, customCountriesList),\n [countries, customCountriesList],\n );\n const inputRef = useRef<HTMLInputElement>(null);\n const inputWrapperRef = useRef<HTMLDivElement>(null);\n\n const [open, setOpen] = useState<boolean | undefined>(defaultOpen);\n const [openCountry, setOpenCountry] = useState<boolean | undefined>(\n countrySelectProps?.defaultOpen,\n );\n const beforeAutofillValueRef = useRef('');\n const [selectedCountry, setSelectedCountry] = useState<Country | undefined>(() =>\n findCountry(countriesData, value, defaultIso2, countryProp),\n );\n const filteredOptions = filterPhones(value, options, filterFn);\n const country = countryProp ?? selectedCountry;\n\n const handleCountryChange = (nextCountry?: Country) => {\n if (countryProp === undefined) setSelectedCountry(nextCountry);\n onCountryChange?.(nextCountry);\n };\n\n const preserveCountryCode = clearableCountryCodeFromProps === 'preserve';\n const clearableCountryCode = preserveCountryCode || clearableCountryCodeFromProps;\n const maskOptions = useMemo(\n () =>\n createMaskOptions(\n country,\n clearableCountryCode,\n preserveCountryCode,\n beforeAutofillValueRef,\n ),\n [country, clearableCountryCode, preserveCountryCode],\n );\n\n const maskRef = useMaskito({ options: maskOptions });\n\n const changeNumber = (phone: string) => {\n onChange?.(phone);\n };\n\n const updatePhoneData = (phone: string) => {\n const { nextCountry, nextPhone } = getPhoneData(phone, countriesData, defaultIso2);\n\n if (nextCountry !== country) {\n handleCountryChange?.(nextCountry);\n }\n changeNumber(nextPhone);\n };\n\n const handleSelectCountry = ({ selected }: BaseSelectChangePayload) => {\n const nextCountry = selected?.value as Country;\n\n handleCountryChange?.(nextCountry);\n\n if (nextCountry) {\n changeNumber(getInitialValueFromCountry(nextCountry.countryCode));\n }\n\n requestAnimationFrame(() => inputRef.current?.focus());\n };\n\n const handleOptionSelect = (payload: BaseSelectChangePayload | string) => {\n updatePhoneData(\n maskitoTransform(\n typeof payload === 'string' ? payload : payload.selected?.key || '',\n maskOptions,\n ),\n );\n };\n\n const handleInput = ({ target: { value: inputValue } }: ChangeEvent<HTMLInputElement>) => {\n updatePhoneData(inputValue);\n };\n\n const handleClear = (event: MouseEvent<HTMLButtonElement>) => {\n restProps.inputProps?.onClear?.(event);\n\n if (clearableCountryCode) {\n const nextCountry = findCountry(countriesData, '', defaultIso2, countryProp);\n\n changeNumber('');\n handleCountryChange(nextCountry);\n } else {\n changeNumber(country ? getInitialValueFromCountry(country.countryCode) : '');\n }\n };\n\n useEffect(() => {\n if (value) {\n const newValue = maskitoTransform(value, maskOptions);\n\n if (value !== newValue) {\n updatePhoneData(newValue);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value, maskOptions]);\n\n const openPhoneSelect: InputAutocompleteProps['onOpen'] = (payload) => {\n if (openProps === undefined) setOpen(payload.open);\n restProps.onOpen?.(payload);\n };\n\n const openCountrySelect: InputAutocompleteProps['onOpen'] = (payload) => {\n if (countrySelectProps?.open === undefined) setOpenCountry(payload.open);\n countrySelectProps?.onOpen?.(payload);\n };\n\n const handlePhoneSelectOpen: InputAutocompleteProps['onOpen'] = (payload) => {\n if (payload.open) {\n openCountrySelect({ open: false });\n }\n\n openPhoneSelect(payload);\n };\n\n const handleCountrySelectOpen: InputAutocompleteProps['onOpen'] = (payload) => {\n if (payload.open) {\n openPhoneSelect({ open: false });\n }\n openCountrySelect(payload);\n };\n\n const showPhoneSelect = Boolean(open || openProps);\n const showCountrySelect = Boolean(openCountry || countrySelectProps?.open);\n\n const renderCountrySelect = (compact = false) => {\n if (disabled || readOnly) {\n return undefined;\n }\n\n return (\n <CountrySelect\n dataTestId={restProps?.dataTestId}\n size={size}\n {...countrySelectProps}\n view={view}\n SelectComponent={SelectComponent}\n disabled={disabled || countrySelectProps?.disabled}\n onChange={handleSelectCountry}\n country={country}\n countries={compact ? [] : countriesData}\n fieldWidth={inputWrapperRef.current?.getBoundingClientRect().width}\n onOpen={handleCountrySelectOpen}\n open={showCountrySelect}\n />\n );\n };\n\n const inputProps: InputProps & RefAttributes<HTMLInputElement> = {\n className: styles.component,\n ref: mergeRefs([maskRef, ref, inputRef]),\n wrapperRef: inputWrapperRef,\n addonsClassName: styles.addons,\n type: 'tel',\n autoComplete: 'tel',\n clear: getClear(clearProp, clearableCountryCode, value, country?.countryCode),\n ...restProps.inputProps,\n };\n\n return Array.isArray(options) ? (\n <InputAutocomplete\n closeOnSelect={true}\n Option={BaseOption}\n size={size}\n {...(restProps as InputAutocompleteProps)}\n disabled={disabled}\n options={filteredOptions}\n value={value}\n open={showPhoneSelect}\n onOpen={handlePhoneSelectOpen}\n onChange={handleOptionSelect}\n onInput={(phone) => updatePhoneData(phone)}\n inputProps={{\n ...inputProps,\n onClear: handleClear,\n onInput: handleInput,\n leftAddons: renderCountrySelect(view === 'mobile'),\n }}\n fieldProps={{\n ...(restProps.fieldProps as AnyObject),\n className: inputProps.className,\n addonsClassName: inputProps.addonsClassName,\n ...(view === 'mobile' ? { leftAddons: renderCountrySelect() } : null),\n }}\n />\n ) : (\n <Input\n {...restProps}\n {...inputProps}\n onClear={inputProps.clear ? handleClear : undefined}\n leftAddons={renderCountrySelect()}\n size={size}\n onInput={handleInput}\n value={value}\n disabled={disabled}\n />\n );\n },\n);\n"],"names":["forwardRef","__rest","useMemo","initCountries","useRef","useState","findCountry","filterPhones","createMaskOptions","useMaskito","getPhoneData","getInitialValueFromCountry","maskitoTransform","useEffect","React","CountrySelect","__assign","styles","mergeRefs","getClear","BaseOption"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
require('./index.css');
|
|
4
4
|
|
|
5
|
-
var styles = {"component":"international-phone-
|
|
5
|
+
var styles = {"component":"international-phone-input__component_1boov","addons":"international-phone-input__addons_1boov"};
|
|
6
6
|
|
|
7
7
|
module.exports = styles;
|
|
8
8
|
//# sourceMappingURL=index.module.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.module.css.js","sources":["../../src/components/base-international-phone-input/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/
|
|
1
|
+
{"version":3,"file":"index.module.css.js","sources":["../../src/components/base-international-phone-input/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n\n.component {\n & .addons {\n padding-left: var(--gap-0);\n }\n}\n"],"names":[],"mappings":";;;;AAEgB,aAAe,CAAC,WAAW,CAAC,4CAA4C,CAAC,QAAQ,CAAC,yCAAyC,CAAC;;;;"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import React, { type ElementType } from 'react';
|
|
2
2
|
import { type BaseSelectProps } from '@alfalab/core-components-select/shared';
|
|
3
3
|
import { type Country } from '../../types';
|
|
4
|
-
export
|
|
4
|
+
export type SharedCountrySelectProps = Omit<BaseSelectProps, 'fieldProps' | 'options' | 'Field' | 'OptionsList' | 'selected'> & {
|
|
5
5
|
/**
|
|
6
6
|
* Пропсы, которые будут прокинуты в компонент поля
|
|
7
7
|
*/
|
|
8
8
|
fieldProps?: Record<string, unknown>;
|
|
9
9
|
hideCountrySelect?: boolean;
|
|
10
10
|
};
|
|
11
|
-
|
|
11
|
+
type CountrySelectProps = SharedCountrySelectProps & {
|
|
12
12
|
countries?: Country[][];
|
|
13
13
|
country?: Country;
|
|
14
14
|
fieldWidth?: number;
|
|
@@ -10,33 +10,33 @@
|
|
|
10
10
|
--gap-12: var(--gap-s);
|
|
11
11
|
--gap-16: var(--gap-m);
|
|
12
12
|
}
|
|
13
|
-
.international-phone-
|
|
13
|
+
.international-phone-input__component_oy6pb {
|
|
14
14
|
position: static;
|
|
15
15
|
display: flex;
|
|
16
16
|
min-width: 0;
|
|
17
17
|
min-width: initial;
|
|
18
18
|
height: 100%;
|
|
19
19
|
}
|
|
20
|
-
.international-phone-
|
|
20
|
+
.international-phone-input__option_oy6pb {
|
|
21
21
|
display: flex;
|
|
22
22
|
align-items: flex-start;
|
|
23
23
|
padding: var(--gap-12);
|
|
24
24
|
}
|
|
25
|
-
.international-phone-
|
|
26
|
-
.international-phone-
|
|
25
|
+
.international-phone-input__option_oy6pb.international-phone-input__mobile_oy6pb,
|
|
26
|
+
.international-phone-input__option_oy6pb.international-phone-input__size-72_oy6pb {
|
|
27
27
|
padding-left: var(--gap-16);
|
|
28
28
|
}
|
|
29
|
-
.international-phone-
|
|
29
|
+
.international-phone-input__flag_oy6pb {
|
|
30
30
|
flex-shrink: 0;
|
|
31
31
|
margin-right: var(--gap-8);
|
|
32
32
|
}
|
|
33
|
-
.international-phone-
|
|
33
|
+
.international-phone-input__countryName_oy6pb {
|
|
34
34
|
margin-right: var(--gap-8);
|
|
35
35
|
}
|
|
36
|
-
.international-phone-
|
|
36
|
+
.international-phone-input__dialCode_oy6pb {
|
|
37
37
|
color: var(--color-light-text-secondary);
|
|
38
38
|
}
|
|
39
|
-
.international-phone-
|
|
39
|
+
.international-phone-input__flagIconWrapper_oy6pb {
|
|
40
40
|
display: flex;
|
|
41
41
|
justify-content: center;
|
|
42
42
|
align-items: center;
|
|
@@ -44,6 +44,6 @@
|
|
|
44
44
|
height: 24px;
|
|
45
45
|
margin-left: var(--gap-12);
|
|
46
46
|
}
|
|
47
|
-
.international-phone-
|
|
47
|
+
.international-phone-input__emptyCountryIcon_oy6pb {
|
|
48
48
|
color: var(--color-light-neutral-translucent-700);
|
|
49
49
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
require('./index.css');
|
|
4
4
|
|
|
5
|
-
var styles = {"component":"international-phone-
|
|
5
|
+
var styles = {"component":"international-phone-input__component_oy6pb","option":"international-phone-input__option_oy6pb","mobile":"international-phone-input__mobile_oy6pb","size-72":"international-phone-input__size-72_oy6pb","flag":"international-phone-input__flag_oy6pb","countryName":"international-phone-input__countryName_oy6pb","dialCode":"international-phone-input__dialCode_oy6pb","flagIconWrapper":"international-phone-input__flagIconWrapper_oy6pb","emptyCountryIcon":"international-phone-input__emptyCountryIcon_oy6pb"};
|
|
6
6
|
|
|
7
7
|
module.exports = styles;
|
|
8
8
|
//# sourceMappingURL=index.module.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.module.css.js","sources":["../../src/components/country-select/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/
|
|
1
|
+
{"version":3,"file":"index.module.css.js","sources":["../../src/components/country-select/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n\n.component {\n position: static;\n display: flex;\n min-width: initial;\n height: 100%;\n}\n\n.option {\n display: flex;\n align-items: flex-start;\n padding: var(--gap-12);\n\n &.mobile,\n &.size-72 {\n padding-left: var(--gap-16);\n }\n}\n\n.flag {\n flex-shrink: 0;\n margin-right: var(--gap-8);\n}\n\n.countryName {\n margin-right: var(--gap-8);\n}\n\n.dialCode {\n color: var(--color-light-text-secondary);\n}\n\n.flagIconWrapper {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 24px;\n height: 24px;\n margin-left: var(--gap-12);\n}\n\n.emptyCountryIcon {\n color: var(--color-light-neutral-translucent-700);\n}\n"],"names":[],"mappings":";;;;AAEgB,aAAe,CAAC,WAAW,CAAC,4CAA4C,CAAC,QAAQ,CAAC,yCAAyC,CAAC,QAAQ,CAAC,yCAAyC,CAAC,SAAS,CAAC,0CAA0C,CAAC,MAAM,CAAC,uCAAuC,CAAC,aAAa,CAAC,8CAA8C,CAAC,UAAU,CAAC,2CAA2C,CAAC,iBAAiB,CAAC,kDAAkD,CAAC,kBAAkB,CAAC,mDAAmD,CAAC;;;;"}
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
--gap-3xs: 2px;
|
|
10
10
|
--gap-2: var(--gap-3xs);
|
|
11
11
|
}
|
|
12
|
-
.international-phone-
|
|
12
|
+
.international-phone-input__flagIcon_7l72t {
|
|
13
13
|
max-width: 24px;
|
|
14
14
|
max-height: 24px;
|
|
15
15
|
}
|
|
16
|
-
.international-phone-
|
|
16
|
+
.international-phone-input__flagPlaceholder_7l72t {
|
|
17
17
|
width: 24px;
|
|
18
18
|
height: 16px;
|
|
19
19
|
max-height: 16px;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
require('./index.css');
|
|
4
4
|
|
|
5
|
-
var styles = {"flagIcon":"international-phone-
|
|
5
|
+
var styles = {"flagIcon":"international-phone-input__flagIcon_7l72t","flagPlaceholder":"international-phone-input__flagPlaceholder_7l72t"};
|
|
6
6
|
|
|
7
7
|
module.exports = styles;
|
|
8
8
|
//# sourceMappingURL=index.module.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.module.css.js","sources":["../../src/components/flag-icon/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/
|
|
1
|
+
{"version":3,"file":"index.module.css.js","sources":["../../src/components/flag-icon/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n\n.flagIcon {\n max-width: 24px;\n max-height: 24px;\n}\n\n.flagPlaceholder {\n width: 24px;\n height: 16px;\n max-height: 16px;\n border-radius: var(--border-radius-2);\n margin-top: var(--gap-2);\n background-color: var(--color-light-neutral-translucent-100);\n}\n"],"names":[],"mappings":";;;;AAEgB,aAAe,CAAC,UAAU,CAAC,2CAA2C,CAAC,iBAAiB,CAAC,kDAAkD,CAAC;;;;"}
|
|
@@ -4,7 +4,7 @@ export declare const EMPTY_COUNTRY_SELECT_FIELD: {
|
|
|
4
4
|
value: string;
|
|
5
5
|
key: string;
|
|
6
6
|
};
|
|
7
|
-
|
|
7
|
+
type SelectFieldProps = FieldProps & {
|
|
8
8
|
size?: 48 | 56 | 64 | 72;
|
|
9
9
|
};
|
|
10
10
|
export declare const SelectField: FC<SelectFieldProps>;
|
|
@@ -14,13 +14,13 @@
|
|
|
14
14
|
--focus-color: var(--color-light-status-info);
|
|
15
15
|
--disabled-cursor: not-allowed;
|
|
16
16
|
}
|
|
17
|
-
.international-phone-
|
|
17
|
+
.international-phone-input__component_htn2e {
|
|
18
18
|
height: 100%;
|
|
19
19
|
cursor: pointer;
|
|
20
20
|
outline: none;
|
|
21
21
|
position: relative;
|
|
22
22
|
}
|
|
23
|
-
.international-phone-
|
|
23
|
+
.international-phone-input__flagIconContainer_htn2e {
|
|
24
24
|
display: flex;
|
|
25
25
|
justify-content: center;
|
|
26
26
|
align-items: center;
|
|
@@ -28,13 +28,13 @@
|
|
|
28
28
|
height: 24px;
|
|
29
29
|
margin-right: var(--gap-4);
|
|
30
30
|
}
|
|
31
|
-
.international-phone-
|
|
31
|
+
.international-phone-input__emptyCountryIcon_htn2e {
|
|
32
32
|
color: var(--color-light-neutral-translucent-700);
|
|
33
33
|
}
|
|
34
|
-
.international-phone-
|
|
34
|
+
.international-phone-input__disabled_htn2e {
|
|
35
35
|
cursor: var(--disabled-cursor);
|
|
36
36
|
}
|
|
37
|
-
.international-phone-
|
|
37
|
+
.international-phone-input__inner_htn2e {
|
|
38
38
|
position: relative;
|
|
39
39
|
display: flex;
|
|
40
40
|
align-items: center;
|
|
@@ -42,10 +42,10 @@
|
|
|
42
42
|
padding-left: var(--gap-12);
|
|
43
43
|
outline: none;
|
|
44
44
|
}
|
|
45
|
-
.international-phone-input__size-
|
|
45
|
+
.international-phone-input__size-72_htn2e .international-phone-input__inner_htn2e {
|
|
46
46
|
padding-left: var(--gap-16);
|
|
47
47
|
}
|
|
48
|
-
.international-phone-
|
|
48
|
+
.international-phone-input__focusVisible_htn2e {
|
|
49
49
|
outline: 2px solid var(--focus-color);
|
|
50
50
|
outline-offset: 2px;
|
|
51
51
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
require('./index.css');
|
|
4
4
|
|
|
5
|
-
var styles = {"component":"international-phone-
|
|
5
|
+
var styles = {"component":"international-phone-input__component_htn2e","flagIconContainer":"international-phone-input__flagIconContainer_htn2e","emptyCountryIcon":"international-phone-input__emptyCountryIcon_htn2e","disabled":"international-phone-input__disabled_htn2e","inner":"international-phone-input__inner_htn2e","size-72":"international-phone-input__size-72_htn2e","focusVisible":"international-phone-input__focusVisible_htn2e"};
|
|
6
6
|
|
|
7
7
|
module.exports = styles;
|
|
8
8
|
//# sourceMappingURL=index.module.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.module.css.js","sources":["../../src/components/select-field/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/
|
|
1
|
+
{"version":3,"file":"index.module.css.js","sources":["../../src/components/select-field/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n\n.component {\n height: 100%;\n cursor: pointer;\n outline: none;\n position: relative;\n}\n\n.flagIconContainer {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 24px;\n height: 24px;\n margin-right: var(--gap-4);\n}\n\n.emptyCountryIcon {\n color: var(--color-light-neutral-translucent-700);\n}\n\n.disabled {\n cursor: var(--disabled-cursor);\n}\n\n.inner {\n position: relative;\n display: flex;\n align-items: center;\n height: 100%;\n padding-left: var(--gap-12);\n outline: none;\n}\n\n.size-72 .inner {\n padding-left: var(--gap-16);\n}\n\n.focusVisible {\n @mixin focus-outline;\n}\n"],"names":[],"mappings":";;;;AAEgB,aAAe,CAAC,WAAW,CAAC,4CAA4C,CAAC,mBAAmB,CAAC,oDAAoD,CAAC,kBAAkB,CAAC,mDAAmD,CAAC,UAAU,CAAC,2CAA2C,CAAC,OAAO,CAAC,wCAAwC,CAAC,SAAS,CAAC,0CAA0C,CAAC,cAAc,CAAC,+CAA+C,CAAC;;;;"}
|
|
@@ -4,6 +4,6 @@ import { type InputAutocompleteProps } from '@alfalab/core-components-input-auto
|
|
|
4
4
|
export declare const BaseInternationalPhoneInput: React.ForwardRefExoticComponent<import("../../types").CommonPhoneInputProps & {
|
|
5
5
|
Input: React.FC<InputProps>;
|
|
6
6
|
InputAutocomplete: React.FC<InputAutocompleteProps>;
|
|
7
|
-
SelectComponent: React.ElementType
|
|
7
|
+
SelectComponent: React.ElementType;
|
|
8
8
|
view: "desktop" | "mobile";
|
|
9
9
|
} & Omit<InputProps, "onBlur" | "onFocus" | "onChange" | "onScroll" | "onInput"> & Partial<Omit<InputAutocompleteProps, "onChange" | "onScroll" | "onInput" | "leftAddons">> & React.RefAttributes<HTMLInputElement>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.js","sources":["../../../src/components/base-international-phone-input/Component.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n forwardRef,\n type MouseEvent,\n type RefAttributes,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport mergeRefs from 'react-merge-refs';\nimport { maskitoTransform } from '@maskito/core';\nimport { useMaskito } from '@maskito/react';\n\nimport { type InputProps } from '@alfalab/core-components-input';\nimport { type InputAutocompleteProps } from '@alfalab/core-components-input-autocomplete';\nimport { type AnyObject, BaseOption } from '@alfalab/core-components-select/shared';\nimport { type BaseSelectChangePayload } from '@alfalab/core-components-select/typings';\n\nimport { type BaseInternationalPhoneInputProps, type Country } from '../../types';\nimport {\n createMaskOptions,\n filterPhones,\n findCountry,\n getClear,\n getInitialValueFromCountry,\n getPhoneData,\n initCountries,\n} from '../../utils';\nimport { CountrySelect } from '../country-select';\n\nimport styles from './index.module.css';\n\nexport const BaseInternationalPhoneInput = forwardRef<\n HTMLInputElement,\n BaseInternationalPhoneInputProps\n>(\n (\n {\n clearableCountryCode: clearableCountryCodeFromProps = true,\n value,\n country: countryProp,\n filterFn,\n onChange,\n onCountryChange,\n countrySelectProps,\n countries,\n defaultIso2,\n disabled,\n options,\n size = 56,\n Input,\n InputAutocomplete,\n SelectComponent,\n view,\n clear: clearProp,\n open: openProps,\n defaultOpen,\n customCountriesList,\n autoFill,\n ...restProps\n },\n ref,\n ) => {\n const { readOnly } = restProps;\n const countriesData = useMemo(\n () => initCountries(countries, customCountriesList),\n [countries, customCountriesList],\n );\n const inputRef = useRef<HTMLInputElement>(null);\n const inputWrapperRef = useRef<HTMLDivElement>(null);\n\n const [open, setOpen] = useState<boolean | undefined>(defaultOpen);\n const [openCountry, setOpenCountry] = useState<boolean | undefined>(\n countrySelectProps?.defaultOpen,\n );\n const beforeAutofillValueRef = useRef('');\n const [selectedCountry, setSelectedCountry] = useState<Country | undefined>(() =>\n findCountry(countriesData, value, defaultIso2, countryProp),\n );\n const filteredOptions = filterPhones(value, options, filterFn);\n const country = countryProp ?? selectedCountry;\n\n const handleCountryChange = (nextCountry?: Country) => {\n if (countryProp === undefined) setSelectedCountry(nextCountry);\n onCountryChange?.(nextCountry);\n };\n\n const preserveCountryCode = clearableCountryCodeFromProps === 'preserve';\n const clearableCountryCode = preserveCountryCode || clearableCountryCodeFromProps;\n const maskOptions = useMemo(\n () =>\n createMaskOptions(\n country,\n clearableCountryCode,\n preserveCountryCode,\n beforeAutofillValueRef,\n ),\n [country, clearableCountryCode, preserveCountryCode],\n );\n\n const maskRef = useMaskito({ options: maskOptions });\n\n const changeNumber = (phone: string) => {\n onChange?.(phone);\n };\n\n const updatePhoneData = (phone: string) => {\n const { nextCountry, nextPhone } = getPhoneData(phone, countriesData, defaultIso2);\n\n if (nextCountry !== country) {\n handleCountryChange?.(nextCountry);\n }\n changeNumber(nextPhone);\n };\n\n const handleSelectCountry = ({ selected }: BaseSelectChangePayload) => {\n const nextCountry = selected?.value as Country;\n\n handleCountryChange?.(nextCountry);\n\n if (nextCountry) {\n changeNumber(getInitialValueFromCountry(nextCountry.countryCode));\n }\n\n requestAnimationFrame(() => inputRef.current?.focus());\n };\n\n const handleOptionSelect = (payload: BaseSelectChangePayload | string) => {\n updatePhoneData(\n maskitoTransform(\n typeof payload === 'string' ? payload : payload.selected?.key || '',\n maskOptions,\n ),\n );\n };\n\n const handleInput = ({ target: { value: inputValue } }: ChangeEvent<HTMLInputElement>) => {\n updatePhoneData(inputValue);\n };\n\n const handleClear = (event: MouseEvent<HTMLButtonElement>) => {\n restProps.inputProps?.onClear?.(event);\n\n if (clearableCountryCode) {\n const nextCountry = findCountry(countriesData, '', defaultIso2, countryProp);\n\n changeNumber('');\n handleCountryChange(nextCountry);\n } else {\n changeNumber(country ? getInitialValueFromCountry(country.countryCode) : '');\n }\n };\n\n useEffect(() => {\n if (value) {\n const newValue = maskitoTransform(value, maskOptions);\n\n if (value !== newValue) {\n updatePhoneData(newValue);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value, maskOptions]);\n\n const openPhoneSelect: InputAutocompleteProps['onOpen'] = (payload) => {\n if (openProps === undefined) setOpen(payload.open);\n restProps.onOpen?.(payload);\n };\n\n const openCountrySelect: InputAutocompleteProps['onOpen'] = (payload) => {\n if (countrySelectProps?.open === undefined) setOpenCountry(payload.open);\n countrySelectProps?.onOpen?.(payload);\n };\n\n const handlePhoneSelectOpen: InputAutocompleteProps['onOpen'] = (payload) => {\n if (payload.open) {\n openCountrySelect({ open: false });\n }\n\n openPhoneSelect(payload);\n };\n\n const handleCountrySelectOpen: InputAutocompleteProps['onOpen'] = (payload) => {\n if (payload.open) {\n openPhoneSelect({ open: false });\n }\n openCountrySelect(payload);\n };\n\n const showPhoneSelect = Boolean(open || openProps);\n const showCountrySelect = Boolean(openCountry || countrySelectProps?.open);\n\n const renderCountrySelect = (compact = false) => {\n if (disabled || readOnly) {\n return undefined;\n }\n\n return (\n <CountrySelect\n dataTestId={restProps?.dataTestId}\n size={size}\n {...countrySelectProps}\n view={view}\n SelectComponent={SelectComponent}\n disabled={disabled || countrySelectProps?.disabled}\n onChange={handleSelectCountry}\n country={country}\n countries={compact ? [] : countriesData}\n fieldWidth={inputWrapperRef.current?.getBoundingClientRect().width}\n onOpen={handleCountrySelectOpen}\n open={showCountrySelect}\n />\n );\n };\n\n const inputProps: InputProps & RefAttributes<HTMLInputElement> = {\n className: styles.component,\n ref: mergeRefs([maskRef, ref, inputRef]),\n wrapperRef: inputWrapperRef,\n addonsClassName: styles.addons,\n type: 'tel',\n autoComplete: 'tel',\n clear: getClear(clearProp, clearableCountryCode, value, country?.countryCode),\n ...restProps.inputProps,\n };\n\n return Array.isArray(options) ? (\n <InputAutocomplete\n closeOnSelect={true}\n Option={BaseOption}\n size={size}\n {...(restProps as InputAutocompleteProps)}\n disabled={disabled}\n options={filteredOptions}\n value={value}\n open={showPhoneSelect}\n onOpen={handlePhoneSelectOpen}\n onChange={handleOptionSelect}\n onInput={(phone) => updatePhoneData(phone)}\n inputProps={{\n ...inputProps,\n onClear: handleClear,\n onInput: handleInput,\n leftAddons: renderCountrySelect(view === 'mobile'),\n }}\n fieldProps={{\n ...(restProps.fieldProps as AnyObject),\n className: inputProps.className,\n addonsClassName: inputProps.addonsClassName,\n ...(view === 'mobile' ? { leftAddons: renderCountrySelect() } : null),\n }}\n />\n ) : (\n <Input\n {...restProps}\n {...inputProps}\n onClear={inputProps.clear ? handleClear : undefined}\n leftAddons={renderCountrySelect()}\n size={size}\n onInput={handleInput}\n value={value}\n disabled={disabled}\n />\n );\n },\n);\n"],"names":["forwardRef","__rest","useMemo","initCountries","useRef","useState","findCountry","filterPhones","createMaskOptions","useMaskito","getPhoneData","getInitialValueFromCountry","maskitoTransform","useEffect","React","CountrySelect","__assign","styles","mergeRefs","getClear","BaseOption"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Component.js","sources":["../../../src/components/base-international-phone-input/Component.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n forwardRef,\n type MouseEvent,\n type RefAttributes,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport mergeRefs from 'react-merge-refs';\nimport { maskitoTransform } from '@maskito/core';\nimport { useMaskito } from '@maskito/react';\n\nimport { type InputProps } from '@alfalab/core-components-input';\nimport { type InputAutocompleteProps } from '@alfalab/core-components-input-autocomplete';\nimport { type AnyObject, BaseOption } from '@alfalab/core-components-select/shared';\nimport { type BaseSelectChangePayload } from '@alfalab/core-components-select/typings';\n\nimport { type BaseInternationalPhoneInputProps, type Country } from '../../types';\nimport {\n createMaskOptions,\n filterPhones,\n findCountry,\n getClear,\n getInitialValueFromCountry,\n getPhoneData,\n initCountries,\n} from '../../utils';\nimport { CountrySelect } from '../country-select';\n\nimport styles from './index.module.css';\n\nexport const BaseInternationalPhoneInput = forwardRef<\n HTMLInputElement,\n BaseInternationalPhoneInputProps\n>(\n (\n {\n clearableCountryCode: clearableCountryCodeFromProps = true,\n value,\n country: countryProp,\n filterFn,\n onChange,\n onCountryChange,\n countrySelectProps,\n countries,\n defaultIso2,\n disabled,\n options,\n size = 56,\n Input,\n InputAutocomplete,\n SelectComponent,\n view,\n clear: clearProp,\n open: openProps,\n defaultOpen,\n customCountriesList,\n autoFill,\n ...restProps\n },\n ref,\n ) => {\n const { readOnly } = restProps;\n const countriesData = useMemo(\n () => initCountries(countries, customCountriesList),\n [countries, customCountriesList],\n );\n const inputRef = useRef<HTMLInputElement>(null);\n const inputWrapperRef = useRef<HTMLDivElement>(null);\n\n const [open, setOpen] = useState<boolean | undefined>(defaultOpen);\n const [openCountry, setOpenCountry] = useState<boolean | undefined>(\n countrySelectProps?.defaultOpen,\n );\n const beforeAutofillValueRef = useRef('');\n const [selectedCountry, setSelectedCountry] = useState<Country | undefined>(() =>\n findCountry(countriesData, value, defaultIso2, countryProp),\n );\n const filteredOptions = filterPhones(value, options, filterFn);\n const country = countryProp ?? selectedCountry;\n\n const handleCountryChange = (nextCountry?: Country) => {\n if (countryProp === undefined) setSelectedCountry(nextCountry);\n onCountryChange?.(nextCountry);\n };\n\n const preserveCountryCode = clearableCountryCodeFromProps === 'preserve';\n const clearableCountryCode = preserveCountryCode || clearableCountryCodeFromProps;\n const maskOptions = useMemo(\n () =>\n createMaskOptions(\n country,\n clearableCountryCode,\n preserveCountryCode,\n beforeAutofillValueRef,\n ),\n [country, clearableCountryCode, preserveCountryCode],\n );\n\n const maskRef = useMaskito({ options: maskOptions });\n\n const changeNumber = (phone: string) => {\n onChange?.(phone);\n };\n\n const updatePhoneData = (phone: string) => {\n const { nextCountry, nextPhone } = getPhoneData(phone, countriesData, defaultIso2);\n\n if (nextCountry !== country) {\n handleCountryChange?.(nextCountry);\n }\n changeNumber(nextPhone);\n };\n\n const handleSelectCountry = ({ selected }: BaseSelectChangePayload) => {\n const nextCountry = selected?.value as Country;\n\n handleCountryChange?.(nextCountry);\n\n if (nextCountry) {\n changeNumber(getInitialValueFromCountry(nextCountry.countryCode));\n }\n\n requestAnimationFrame(() => inputRef.current?.focus());\n };\n\n const handleOptionSelect = (payload: BaseSelectChangePayload | string) => {\n updatePhoneData(\n maskitoTransform(\n typeof payload === 'string' ? payload : payload.selected?.key || '',\n maskOptions,\n ),\n );\n };\n\n const handleInput = ({ target: { value: inputValue } }: ChangeEvent<HTMLInputElement>) => {\n updatePhoneData(inputValue);\n };\n\n const handleClear = (event: MouseEvent<HTMLButtonElement>) => {\n restProps.inputProps?.onClear?.(event);\n\n if (clearableCountryCode) {\n const nextCountry = findCountry(countriesData, '', defaultIso2, countryProp);\n\n changeNumber('');\n handleCountryChange(nextCountry);\n } else {\n changeNumber(country ? getInitialValueFromCountry(country.countryCode) : '');\n }\n };\n\n useEffect(() => {\n if (value) {\n const newValue = maskitoTransform(value, maskOptions);\n\n if (value !== newValue) {\n updatePhoneData(newValue);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value, maskOptions]);\n\n const openPhoneSelect: InputAutocompleteProps['onOpen'] = (payload) => {\n if (openProps === undefined) setOpen(payload.open);\n restProps.onOpen?.(payload);\n };\n\n const openCountrySelect: InputAutocompleteProps['onOpen'] = (payload) => {\n if (countrySelectProps?.open === undefined) setOpenCountry(payload.open);\n countrySelectProps?.onOpen?.(payload);\n };\n\n const handlePhoneSelectOpen: InputAutocompleteProps['onOpen'] = (payload) => {\n if (payload.open) {\n openCountrySelect({ open: false });\n }\n\n openPhoneSelect(payload);\n };\n\n const handleCountrySelectOpen: InputAutocompleteProps['onOpen'] = (payload) => {\n if (payload.open) {\n openPhoneSelect({ open: false });\n }\n openCountrySelect(payload);\n };\n\n const showPhoneSelect = Boolean(open || openProps);\n const showCountrySelect = Boolean(openCountry || countrySelectProps?.open);\n\n const renderCountrySelect = (compact = false) => {\n if (disabled || readOnly) {\n return undefined;\n }\n\n return (\n <CountrySelect\n dataTestId={restProps?.dataTestId}\n size={size}\n {...countrySelectProps}\n view={view}\n SelectComponent={SelectComponent}\n disabled={disabled || countrySelectProps?.disabled}\n onChange={handleSelectCountry}\n country={country}\n countries={compact ? [] : countriesData}\n fieldWidth={inputWrapperRef.current?.getBoundingClientRect().width}\n onOpen={handleCountrySelectOpen}\n open={showCountrySelect}\n />\n );\n };\n\n const inputProps: InputProps & RefAttributes<HTMLInputElement> = {\n className: styles.component,\n ref: mergeRefs([maskRef, ref, inputRef]),\n wrapperRef: inputWrapperRef,\n addonsClassName: styles.addons,\n type: 'tel',\n autoComplete: 'tel',\n clear: getClear(clearProp, clearableCountryCode, value, country?.countryCode),\n ...restProps.inputProps,\n };\n\n return Array.isArray(options) ? (\n <InputAutocomplete\n closeOnSelect={true}\n Option={BaseOption}\n size={size}\n {...(restProps as InputAutocompleteProps)}\n disabled={disabled}\n options={filteredOptions}\n value={value}\n open={showPhoneSelect}\n onOpen={handlePhoneSelectOpen}\n onChange={handleOptionSelect}\n onInput={(phone) => updatePhoneData(phone)}\n inputProps={{\n ...inputProps,\n onClear: handleClear,\n onInput: handleInput,\n leftAddons: renderCountrySelect(view === 'mobile'),\n }}\n fieldProps={{\n ...(restProps.fieldProps as AnyObject),\n className: inputProps.className,\n addonsClassName: inputProps.addonsClassName,\n ...(view === 'mobile' ? { leftAddons: renderCountrySelect() } : null),\n }}\n />\n ) : (\n <Input\n {...restProps}\n {...inputProps}\n onClear={inputProps.clear ? handleClear : undefined}\n leftAddons={renderCountrySelect()}\n size={size}\n onInput={handleInput}\n value={value}\n disabled={disabled}\n />\n );\n },\n);\n"],"names":["forwardRef","__rest","useMemo","initCountries","useRef","useState","findCountry","filterPhones","createMaskOptions","useMaskito","getPhoneData","getInitialValueFromCountry","maskitoTransform","useEffect","React","CountrySelect","__assign","styles","mergeRefs","getClear","BaseOption"],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import React, { type ElementType } from 'react';
|
|
2
2
|
import { type BaseSelectProps } from '@alfalab/core-components-select/cssm/shared';
|
|
3
3
|
import { type Country } from '../../types';
|
|
4
|
-
export
|
|
4
|
+
export type SharedCountrySelectProps = Omit<BaseSelectProps, 'fieldProps' | 'options' | 'Field' | 'OptionsList' | 'selected'> & {
|
|
5
5
|
/**
|
|
6
6
|
* Пропсы, которые будут прокинуты в компонент поля
|
|
7
7
|
*/
|
|
8
8
|
fieldProps?: Record<string, unknown>;
|
|
9
9
|
hideCountrySelect?: boolean;
|
|
10
10
|
};
|
|
11
|
-
|
|
11
|
+
type CountrySelectProps = SharedCountrySelectProps & {
|
|
12
12
|
countries?: Country[][];
|
|
13
13
|
country?: Country;
|
|
14
14
|
fieldWidth?: number;
|
|
@@ -4,7 +4,7 @@ export declare const EMPTY_COUNTRY_SELECT_FIELD: {
|
|
|
4
4
|
value: string;
|
|
5
5
|
key: string;
|
|
6
6
|
};
|
|
7
|
-
|
|
7
|
+
type SelectFieldProps = FieldProps & {
|
|
8
8
|
size?: 48 | 56 | 64 | 72;
|
|
9
9
|
};
|
|
10
10
|
export declare const SelectField: FC<SelectFieldProps>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export type CountriesData = [string, string[], string, string, string?, number?, string[]?];
|
|
2
2
|
export declare const countriesData: CountriesData[];
|
package/cssm/types.d.ts
CHANGED
|
@@ -10,11 +10,11 @@ import { type Country } from '@alfalab/core-components-types/cssm';
|
|
|
10
10
|
import { type SharedCountrySelectProps } from './components/country-select';
|
|
11
11
|
import { type CountriesData } from './data/country-data';
|
|
12
12
|
export type { Country } from '@alfalab/core-components-types/cssm';
|
|
13
|
-
export
|
|
13
|
+
export type AreaItem = Country & {
|
|
14
14
|
isAreaCode: boolean;
|
|
15
15
|
areaCodeLength: number;
|
|
16
16
|
};
|
|
17
|
-
export
|
|
17
|
+
export type CommonPhoneInputProps = {
|
|
18
18
|
/**
|
|
19
19
|
* Выбранная страна
|
|
20
20
|
*/
|
|
@@ -73,15 +73,15 @@ export declare type CommonPhoneInputProps = {
|
|
|
73
73
|
*/
|
|
74
74
|
autoFill?: boolean;
|
|
75
75
|
};
|
|
76
|
-
export
|
|
76
|
+
export type BaseInternationalPhoneInputProps = CommonPhoneInputProps & {
|
|
77
77
|
Input: FC<InputProps>;
|
|
78
78
|
InputAutocomplete: FC<InputAutocompleteProps>;
|
|
79
79
|
SelectComponent: ElementType;
|
|
80
80
|
view: 'desktop' | 'mobile';
|
|
81
81
|
} & Omit<InputProps, 'onFocus' | 'onBlur' | 'onScroll' | 'onInput' | 'onChange'> & Partial<Omit<InputAutocompleteProps, 'onChange' | 'leftAddons' | 'onScroll' | 'onInput'>>;
|
|
82
|
-
export
|
|
83
|
-
export
|
|
84
|
-
export
|
|
82
|
+
export type InternationalPhoneInputDesktopProps = CommonPhoneInputProps & (Omit<InputDesktopProps, 'onFocus' | 'onBlur' | 'clear' | 'onClear' | 'onChange' | 'onInput'> | (Required<Pick<InputAutocompleteDesktopProps, 'options'>> & Omit<InputAutocompleteDesktopProps, 'onChange' | 'onInput' | 'onClear'>));
|
|
83
|
+
export type InternationalPhoneInputMobileProps = CommonPhoneInputProps & (Omit<InputMobileProps, 'onFocus' | 'onBlur' | 'clear' | 'onClear' | 'onChange' | 'onInput'> | (Required<Pick<InputAutocompleteMobileProps, 'options'>> & Omit<InputAutocompleteMobileProps, 'onChange' | 'onInput' | 'onClear'>));
|
|
84
|
+
export type InternationalPhoneInputProps = InternationalPhoneInputDesktopProps & InternationalPhoneInputMobileProps & {
|
|
85
85
|
/**
|
|
86
86
|
* Контрольная точка, с нее начинается desktop версия
|
|
87
87
|
* @default 1024
|
package/cssm/utils/index.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export declare function clearMask(value: string): string;
|
|
|
11
11
|
export declare function createPhoneMaskExpression(country: Country | undefined, clearableCountryCode: boolean): Array<RegExp | string>;
|
|
12
12
|
export declare function createMaskOptions(country: Country | undefined, clearableCountryCode: boolean, preserveCountryCode: boolean, beforeAutofillValueRef: MutableRefObject<string>): MaskitoOptions;
|
|
13
13
|
declare function defaultFilterFn(value: string | undefined, option: OptionShape): boolean;
|
|
14
|
-
export declare const filterPhones: (value?: string, options?: InputAutocompleteDesktopProps[
|
|
14
|
+
export declare const filterPhones: (value?: string, options?: InputAutocompleteDesktopProps["options"], filterFn?: typeof defaultFilterFn) => (OptionShape | GroupShape)[];
|
|
15
15
|
export declare function getPhoneData(phone: string, countries: Country[][], defaultIso2?: string): {
|
|
16
16
|
nextPhone: string;
|
|
17
17
|
nextCountry: Country | undefined;
|