UNPKG

@stripe/stripe-js

Version:

Stripe.js loading utility

265 lines (221 loc) 7.37 kB
import {StripeElementType} from '../elements-group'; export type StripeElementBase = { /** * The `element.mount` method attaches your [Element](https://stripe.com/docs/js/element) to the DOM. * `element.mount` accepts either a CSS Selector (e.g., `'#card-element'`) or a DOM element. * * You need to create a container DOM element to mount an `Element`. * If the container DOM element has a label, the `Element` is automatically focused when its label is clicked. * There are two ways to do this: * * 1. Mount the instance within a `<label>`. * 2. Create a `<label>` with a `for` attribute, referencing the ID of your container. */ mount(domElement: string | HTMLElement): void; /** * Blurs the element. */ blur(): void; /** * Clears the value(s) of the element. */ clear(): void; /** * Removes the element from the DOM and destroys it. * A destroyed element can not be re-activated or re-mounted to the DOM. */ destroy(): void; /** * Focuses the element. */ focus(): void; /** * Unmounts the element from the DOM. * Call `element.mount` to re-attach it to the DOM. */ unmount(): void; }; /** * Customize the appearance of an element using CSS properties passed in a `Style` object, which consists of CSS properties nested under objects for each variant. */ export interface StripeElementStyle { /** * Base variant—all other variants inherit from these styles. */ base?: StripeElementStyleVariant; /** * Applied when the element has valid input. */ complete?: StripeElementStyleVariant; /** * Applied when the element has no customer input. */ empty?: StripeElementStyleVariant; /** * Applied when the element has invalid input. */ invalid?: StripeElementStyleVariant; } /** * An object with `CSSProperties` supported by Stripe.js. * Pseudo-classes and pseudo-elements can also be styled using a nested object inside of a variant. */ export interface StripeElementStyleVariant extends StripeElementCSSProperties { ':hover'?: StripeElementCSSProperties; ':focus'?: StripeElementCSSProperties; '::placeholder'?: StripeElementCSSProperties; '::selection'?: StripeElementCSSProperties; ':-webkit-autofill'?: StripeElementCSSProperties; /** * Available for all elements except the `paymentRequestButton` element */ ':disabled'?: StripeElementCSSProperties; /** * Available for the `cardNumber`, `cardExpiry`, and `cardCvc` elements. */ '::-ms-clear'?: StripeElementCSSProperties & {display: string}; } /** * CSS properties supported by Stripe.js. */ export interface StripeElementCSSProperties { /** * The [background-color](https://developer.mozilla.org/en-US/docs/Web/CSS/background-color) CSS property. * * This property works best with the `::selection` pseudo-class. * In other cases, consider setting the background color on the element's container instaed. */ backgroundColor?: string; /** * The [color](https://developer.mozilla.org/en-US/docs/Web/CSS/color) CSS property. */ color?: string; /** * The [font-family](https://developer.mozilla.org/en-US/docs/Web/CSS/font-family) CSS property. */ fontFamily?: string; /** * The [font-size](https://developer.mozilla.org/en-US/docs/Web/CSS/font-size) CSS property. */ fontSize?: string; /** * The [font-smoothing](https://developer.mozilla.org/en-US/docs/Web/CSS/font-smoothing) CSS property. */ fontSmoothing?: string; /** * The [font-style](https://developer.mozilla.org/en-US/docs/Web/CSS/font-style) CSS property. */ fontStyle?: string; /** * The [font-variant](https://developer.mozilla.org/en-US/docs/Web/CSS/font-variant) CSS property. */ fontVariant?: string; /** * The [font-weight](https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight) CSS property. */ fontWeight?: string | number; /** * A custom property, used to set the color of the icons that are rendered in an element. */ iconColor?: string; /** * The [line-height](https://developer.mozilla.org/en-US/docs/Web/CSS/line-height) CSS property. * * To avoid cursors being rendered inconsistently across browsers, consider using a padding on the element's container instead. */ lineHeight?: string; /** * The [letter-spacing](https://developer.mozilla.org/en-US/docs/Web/CSS/letter-spacing) CSS property. */ letterSpacing?: string; /** * The [text-align](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align) CSS property. * * Available for the `cardNumber`, `cardExpiry`, and `cardCvc` elements. */ textAlign?: string; /** * The [padding](https://developer.mozilla.org/en-US/docs/Web/CSS/padding) CSS property. * * Available for the `idealBank` element. * Accepts integer length with `px` unit as values. */ padding?: string; /** * The [text-decoration](https://developer.mozilla.org/en-US/docs/Web/CSS/text-decoration) CSS property. */ textDecoration?: string; /** * The [text-shadow](https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow) CSS property. */ textShadow?: string; /** * The [text-transform](https://developer.mozilla.org/en-US/docs/Web/CSS/text-transform) CSS property. */ textTransform?: string; } /** * Use `Classes` to set custom class names on the container DOM element when the Stripe element is in a particular state. */ export interface StripeElementClasses { /** * The base class applied to the container. * Defaults to `StripeElement`. */ base?: string; /** * The class name to apply when the `Element` is complete. * Defaults to `StripeElement--complete`. */ complete?: string; /** * The class name to apply when the `Element` is empty. * Defaults to `StripeElement--empty`. */ empty?: string; /** * The class name to apply when the `Element` is focused. * Defaults to `StripeElement--focus`. */ focus?: string; /** * The class name to apply when the `Element` is invalid. * Defaults to `StripeElement--invalid`. */ invalid?: string; /** * The class name to apply when the `Element` has its value autofilled by the browser (only on Chrome and Safari). * Defaults to `StripeElement--webkit-autofill`. */ webkitAutofill?: string; } export interface StripeElementChangeEvent { /** * The type of element that emitted this event. */ elementType: StripeElementType; /** * `true` if the value is empty. */ empty: boolean; /** * `true` if the value is well-formed and potentially complete. * The `complete` value can be used to progressively disclose the next parts of your form or to enable form submission. * * It is not an indicator of whether a customer is done with their input—it only indicates that the Element contains a potentially complete, well-formed value. * In many cases the customer could still add further input. * * The `complete` value should not be used to perform an action such as advancing the cursor to a subsequent field or performing a tokenization request. */ complete: boolean; /** * The current validation error, if any. */ error: | undefined | { type: 'validation_error'; code: string; message: string; }; }