/** @jsx jsx */ import { FC, Fragment } from 'react' import { components } from '@vtex/address-form' import { jsx, Button, Input, Link, Spinner } from '@vtex/store-ui' import { useIntl } from '@vtex/gatsby-plugin-i18n' const { CountrySelector, PostalCodeGetter } = components interface FieldInfo { autoComplete: string label: string maxLength: number name: string postalCodeAPI: boolean size: string forgottenURL?: string } interface PostalCodeInputProps { Button: React.ComponentType onSubmit: () => void onChange: (postalCode: string) => void address: any field: FieldInfo inputRef: React.RefObject shouldShowNumberKeyboard: boolean submitLabel: string loading: boolean } const PostalCodeInput: FC = ({ Button: SubmitButton, onSubmit, address, field, inputRef, shouldShowNumberKeyboard = false, submitLabel, loading, onChange, ...props }) => { const intl = useIntl() const handleChange: React.ChangeEventHandler = (evt) => { onChange(evt.target.value) } const handleSubmit: React.FormEventHandler = (evt) => { evt.preventDefault() onSubmit() } return (
{loading ? : submitLabel} {field.forgottenURL && ( {intl.formatMessage({ id: 'address-form.dontKnowPostalCode' })} )}
) } interface Props { countries: string[] loading: boolean onSubmit: () => void } export const PostalCode: FC = ({ countries, loading, onSubmit }) => { const intl = useIntl() const translatedCountries = countries.map((countryCode: string) => ({ label: intl.formatMessage({ id: `country.${countryCode}` }), value: countryCode, })) return ( {translatedCountries.length > 1 && ( )} ) }