UNPKG

5.49 kBTypeScriptView Raw
1import {StripeElementBase} from './base';
2import {StripeError} from '../stripe';
3
4export type StripePaymentElement = StripeElementBase & {
5 /**
6 * The change event is triggered when the `Element`'s value changes.
7 */
8 on(
9 eventType: 'change',
10 handler: (event: StripePaymentElementChangeEvent) => any
11 ): StripePaymentElement;
12 once(
13 eventType: 'change',
14 handler: (event: StripePaymentElementChangeEvent) => any
15 ): StripePaymentElement;
16 off(
17 eventType: 'change',
18 handler?: (event: StripePaymentElementChangeEvent) => any
19 ): StripePaymentElement;
20
21 /**
22 * Triggered when the element is fully rendered and can accept `element.focus` calls.
23 */
24 on(
25 eventType: 'ready',
26 handler: (event: {elementType: 'payment'}) => any
27 ): StripePaymentElement;
28 once(
29 eventType: 'ready',
30 handler: (event: {elementType: 'payment'}) => any
31 ): StripePaymentElement;
32 off(
33 eventType: 'ready',
34 handler?: (event: {elementType: 'payment'}) => any
35 ): StripePaymentElement;
36
37 /**
38 * Triggered when the element gains focus.
39 */
40 on(
41 eventType: 'focus',
42 handler: (event: {elementType: 'payment'}) => any
43 ): StripePaymentElement;
44 once(
45 eventType: 'focus',
46 handler: (event: {elementType: 'payment'}) => any
47 ): StripePaymentElement;
48 off(
49 eventType: 'focus',
50 handler?: (event: {elementType: 'payment'}) => any
51 ): StripePaymentElement;
52
53 /**
54 * Triggered when the element loses focus.
55 */
56 on(
57 eventType: 'blur',
58 handler: (event: {elementType: 'payment'}) => any
59 ): StripePaymentElement;
60 once(
61 eventType: 'blur',
62 handler: (event: {elementType: 'payment'}) => any
63 ): StripePaymentElement;
64 off(
65 eventType: 'blur',
66 handler?: (event: {elementType: 'payment'}) => any
67 ): StripePaymentElement;
68
69 /**
70 * Triggered when the escape key is pressed within the element.
71 */
72 on(
73 eventType: 'escape',
74 handler: (event: {elementType: 'payment'}) => any
75 ): StripePaymentElement;
76 once(
77 eventType: 'escape',
78 handler: (event: {elementType: 'payment'}) => any
79 ): StripePaymentElement;
80 off(
81 eventType: 'escape',
82 handler?: (event: {elementType: 'payment'}) => any
83 ): StripePaymentElement;
84
85 /**
86 * Triggered when the element fails to load.
87 */
88 on(
89 eventType: 'loaderror',
90 handler: (event: {elementType: 'payment'; error: StripeError}) => any
91 ): StripePaymentElement;
92 once(
93 eventType: 'loaderror',
94 handler: (event: {elementType: 'payment'; error: StripeError}) => any
95 ): StripePaymentElement;
96 off(
97 eventType: 'loaderror',
98 handler?: (event: {elementType: 'payment'; error: StripeError}) => any
99 ): StripePaymentElement;
100
101 /**
102 * Updates the options the `PaymentElement` was initialized with.
103 * Updates are merged into the existing configuration.
104 */
105 update(options: Partial<StripePaymentElementOptions>): StripePaymentElement;
106
107 /**
108 * Collapses the Payment Element into a row of payment method tabs.
109 */
110 collapse(): StripePaymentElement;
111};
112
113export type FieldOption = 'auto' | 'never';
114
115export interface FieldsOption {
116 billingDetails?:
117 | FieldOption
118 | {
119 name?: FieldOption;
120 email?: FieldOption;
121 phone?: FieldOption;
122 address?:
123 | FieldOption
124 | {
125 country?: FieldOption;
126 postalCode?: FieldOption;
127 state?: FieldOption;
128 city?: FieldOption;
129 line1?: FieldOption;
130 line2?: FieldOption;
131 };
132 };
133}
134
135export type TermOption = 'auto' | 'always' | 'never';
136
137export interface TermsOption {
138 bancontact?: TermOption;
139 card?: TermOption;
140 ideal?: TermOption;
141 sepaDebit?: TermOption;
142 sofort?: TermOption;
143 auBecsDebit?: TermOption;
144 usBankAccount?: TermOption;
145}
146
147export type WalletOption = 'auto' | 'never';
148
149export interface WalletsOption {
150 applePay?: WalletOption;
151 googlePay?: WalletOption;
152}
153
154export interface StripePaymentElementOptions {
155 /**
156 * Override the business name displayed in the Payment Element.
157 * By default the PaymentElement will use your Stripe account or business name.
158 */
159 business?: {name: string};
160
161 /**
162 * Override the order in which payment methods are displayed in the Payment Element.
163 * By default, the Payment Element will use a dynamic ordering that optimizes payment method display for each user.
164 */
165 paymentMethodOrder?: string[];
166
167 /**
168 * Control which fields are displayed in the Payment Element.
169 */
170 fields?: FieldsOption;
171
172 /**
173 * Apply a read-only state to the Payment Element so that payment details can’t be changed.
174 * Default is false.
175 */
176 readOnly?: boolean;
177
178 /**
179 * Control terms display in the Payment Element.
180 */
181 terms?: TermsOption;
182
183 /**
184 * Control wallets display in the Payment Element.
185 */
186 wallets?: WalletsOption;
187}
188
189export interface StripePaymentElementChangeEvent {
190 /**
191 * The type of element that emitted this event.
192 */
193 elementType: 'payment';
194
195 /**
196 * `true` if the all inputs in the Payment Element are empty.
197 */
198 empty: boolean;
199
200 /**
201 * `true` if the every input in the Payment Element is well-formed and potentially complete.
202 */
203 complete: boolean;
204
205 /**
206 * Whether or not the Payment Element is currently collapsed.
207 */
208 collapsed: boolean;
209
210 /**
211 * An object containing the currently selected PaymentMethod type (in snake_case, for example "afterpay_clearpay").
212 */
213 value: {type: string};
214}