UNPKG

@stripe/stripe-js

Version:

Stripe.js loading utility

266 lines (238 loc) 6.21 kB
import {StripeElementBase} from './base'; import {StripeError} from '../stripe'; export type StripeAddressElement = StripeElementBase & { /** * The change event is triggered when the `Element`'s value changes. */ on( eventType: 'change', handler: (event: StripeAddressElementChangeEvent) => any ): StripeAddressElement; once( eventType: 'change', handler: (event: StripeAddressElementChangeEvent) => any ): StripeAddressElement; off( eventType: 'change', handler?: (event: StripeAddressElementChangeEvent) => any ): StripeAddressElement; /** * Triggered when the element is fully rendered and can accept `element.focus` calls. */ on( eventType: 'ready', handler: (event: {elementType: 'address'}) => any ): StripeAddressElement; once( eventType: 'ready', handler: (event: {elementType: 'address'}) => any ): StripeAddressElement; off( eventType: 'ready', handler?: (event: {elementType: 'address'}) => any ): StripeAddressElement; /** * Triggered when the element gains focus. */ on( eventType: 'focus', handler: (event: {elementType: 'address'}) => any ): StripeAddressElement; once( eventType: 'focus', handler: (event: {elementType: 'address'}) => any ): StripeAddressElement; off( eventType: 'focus', handler?: (event: {elementType: 'address'}) => any ): StripeAddressElement; /** * Triggered when the element loses focus. */ on( eventType: 'blur', handler: (event: {elementType: 'address'}) => any ): StripeAddressElement; once( eventType: 'blur', handler: (event: {elementType: 'address'}) => any ): StripeAddressElement; off( eventType: 'blur', handler?: (event: {elementType: 'address'}) => any ): StripeAddressElement; /** * Triggered when the escape key is pressed within the element. */ on( eventType: 'escape', handler: (event: {elementType: 'address'}) => any ): StripeAddressElement; once( eventType: 'escape', handler: (event: {elementType: 'address'}) => any ): StripeAddressElement; off( eventType: 'escape', handler?: (event: {elementType: 'address'}) => any ): StripeAddressElement; /** * Triggered when the element fails to load. */ on( eventType: 'loaderror', handler: (event: {elementType: 'address'; error: StripeError}) => any ): StripeAddressElement; once( eventType: 'loaderror', handler: (event: {elementType: 'address'; error: StripeError}) => any ): StripeAddressElement; off( eventType: 'loaderror', handler?: (event: {elementType: 'address'; error: StripeError}) => any ): StripeAddressElement; /** * Triggered when the loader UI is mounted to the DOM and ready to be displayed. */ on( eventType: 'loaderstart', handler: (event: {elementType: 'address'}) => any ): StripeAddressElement; once( eventType: 'loaderstart', handler: (event: {elementType: 'address'}) => any ): StripeAddressElement; off( eventType: 'loaderstart', handler?: (event: {elementType: 'address'}) => any ): StripeAddressElement; /** * Updates the options the `AddressElement` was initialized with. * Updates are merged into the existing configuration. */ update(options: Partial<StripeAddressElementOptions>): StripeAddressElement; /** * Validates and retrieves form values from the `AddressElement`. */ getValue(): Promise< Pick<StripeAddressElementChangeEvent, 'complete' | 'isNewAddress' | 'value'> >; }; export interface ContactOption { name: string; phone?: string; address: { line1: string; line2?: string; city: string; state: string; postal_code: string; country: string; }; } export type AddressMode = 'shipping' | 'billing'; export interface StripeAddressElementOptions { /** * Control which mode the AddressElement will be used for. */ mode: AddressMode; /** * An array of two-letter ISO country codes representing which countries * are displayed in the AddressElement. */ allowedCountries?: string[] | null; /** * Control autocomplete settings in the AddressElement. */ autocomplete?: | {mode: 'automatic'} | {mode: 'disabled'} | {mode: 'google_maps_api'; apiKey: string}; /** * Whether or not AddressElement accepts PO boxes */ blockPoBox?: boolean; /** * An array of saved addresses. */ contacts?: ContactOption[]; /** * Default value for AddressElement fields */ defaultValues?: { name?: string | null; firstName?: string | null; lastName?: string | null; address?: { line1?: string | null; line2?: string | null; city?: string | null; state?: string | null; postal_code?: string | null; country: string; }; phone?: string | null; }; /** * Control which additional fields to display in the AddressElement. */ fields?: { phone?: 'always' | 'never' | 'auto'; }; /** * Specify validation rules for the above additional fields. */ validation?: { phone?: { required: 'always' | 'never' | 'auto'; }; }; /** * Specify display options in the AddressElement */ display?: { name?: 'full' | 'split' | 'organization'; }; } export interface StripeAddressElementChangeEvent { /** * The type of element that emitted this event. */ elementType: 'address'; /** * The mode of the AddressElement that emitted this event. */ elementMode: AddressMode; /** * Whether or not the AddressElement is currently empty. */ empty: boolean; /** * Whether or not the AddressElement is complete. */ complete: boolean; /** * Whether or not the address is new. */ isNewAddress: boolean; /** * An object containing the current address. */ value: { name: string; firstName?: string; lastName?: string; address: { line1: string; line2: string | null; city: string; state: string; postal_code: string; country: string; }; phone?: string; }; } export interface StripeAddressElementGetElementOptions { mode: AddressMode; }