@paypal/checkout-components 5.0.236 → 5.0.238-kitty

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.
@@ -234,8 +234,87 @@ export function WalletLabelOld(opts : WalletLabelOptions) : ?ChildType {
234
234
  );
235
235
  }
236
236
 
237
+ function ShowPayLabel(opts) : ?ChildType {
238
+ const {instrument, content, payNow, textColor, logo, label } = opts;
239
+
240
+ return (
241
+ <div class='show-pay-label'>
242
+ <div class='pay-label' optional={ 2 }>
243
+ <Space />
244
+ {
245
+ (instrument && content)
246
+ ? <Text>{ payNow ? content.payNow : content.payWith }</Text>
247
+ : <Text><PlaceHolder chars={ 7 } color={ textColor } /></Text>
248
+ }
249
+ <Space />
250
+ </div>
251
+ <div class='logo' optional={ 1 }>
252
+ {
253
+ (instrument && logo)
254
+ ? logo
255
+ : <Text><PlaceHolder chars={ 4 } color={ textColor } /></Text>
256
+ }
257
+ </div>
258
+ <div class='label'>
259
+ <Space />
260
+ {
261
+ (instrument && label)
262
+ ? <Text>{ label }</Text>
263
+ : <Text><PlaceHolder chars={ 6 } color={ textColor } /></Text>
264
+ }
265
+ </div>
266
+ </div>
267
+ );
268
+ }
269
+
270
+ function NoPayLabel(opts) : ?ChildType {
271
+ const { instrument, textColor, logo, label, content } = opts;
272
+
273
+ return (
274
+ <div class='no-pay-label'>
275
+ {
276
+ instrument?.secondaryInstruments?.[0]
277
+ ? (
278
+ <div class='balance'>
279
+ <Text>{ content?.balance } &</Text>
280
+ <Space />
281
+ </div>
282
+ )
283
+ : null
284
+ }
285
+ {
286
+ (instrument?.type === "balance")
287
+ ? (
288
+ <div class='paypal-balance'>
289
+ <Text>{ content?.payPalBalance }</Text>
290
+ </div>
291
+ )
292
+ : (
293
+ <div class='no-paypal-balance'>
294
+ <div class='fi-logo' optional={ 1 }>
295
+ {
296
+ (instrument && logo)
297
+ ? logo
298
+ : <Text><PlaceHolder chars={ 4 } color={ textColor } /></Text>
299
+ }
300
+ </div>
301
+ <div class='label'>
302
+ <Space />
303
+ {
304
+ (instrument && label)
305
+ ? <Text>{ label }</Text>
306
+ : <Text><PlaceHolder chars={ 6 } color={ textColor } /></Text>
307
+ }
308
+ </div>
309
+ </div>
310
+ )
311
+ }
312
+ </div>
313
+ );
314
+ }
315
+
237
316
  export function WalletLabel(opts : WalletLabelOptions) : ?ChildType {
238
- const { logoColor, instrument, content, commit, vault, textColor, fundingSource } = opts;
317
+ const { logoColor, instrument, content, commit, vault, textColor, fundingSource, showPayLabel } = opts;
239
318
 
240
319
  if (instrument && !instrument.type) {
241
320
  return WalletLabelOld(opts);
@@ -305,31 +384,24 @@ export function WalletLabel(opts : WalletLabelOptions) : ?ChildType {
305
384
  )
306
385
  : null
307
386
  }
308
-
309
- <div class='pay-label' optional={ 2 }>
310
- <Space />
311
- {
312
- (instrument && content)
313
- ? <Text>{ payNow ? content.payNow : content.payWith }</Text>
314
- : <Text><PlaceHolder chars={ 7 } color={ textColor } /></Text>
315
- }
316
- <Space />
317
- </div>
318
- <div class='logo' optional={ 1 }>
319
- {
320
- (instrument && logo)
321
- ? logo
322
- : <Text><PlaceHolder chars={ 4 } color={ textColor } /></Text>
323
- }
324
- </div>
325
- <div class='label'>
326
- <Space />
327
- {
328
- (instrument && label)
329
- ? <Text>{ label }</Text>
330
- : <Text><PlaceHolder chars={ 6 } color={ textColor } /></Text>
331
- }
332
- </div>
387
+ {
388
+ showPayLabel
389
+ ? <ShowPayLabel
390
+ instrument={ instrument }
391
+ content={ content }
392
+ payNow={ payNow }
393
+ textColor={ textColor }
394
+ logo={ logo }
395
+ label={ label }
396
+ />
397
+ : <NoPayLabel
398
+ instrument={ instrument }
399
+ textColor={ textColor }
400
+ logo={ logo }
401
+ label={ label }
402
+ content={ content }
403
+ />
404
+ }
333
405
  </div>
334
406
  </Style>
335
407
  );
@@ -2,13 +2,15 @@
2
2
  /** @jsx node */
3
3
 
4
4
  import { SofortLogo } from '@paypal/sdk-logos/src';
5
+ import { Fragment, node } from '@krakenjs/jsx-pragmatic/src';
5
6
 
6
7
  import { BUTTON_LAYOUT } from '../../constants';
7
- import { DEFAULT_FUNDING_CONFIG, type FundingSourceConfig } from '../common';
8
+ import { DEFAULT_APM_FUNDING_CONFIG, type FundingSourceConfig, BasicLabel } from '../common';
9
+ import { Text, Space } from '../../ui/text';
8
10
 
9
11
  export function getSofortConfig() : FundingSourceConfig {
10
12
  return {
11
- ...DEFAULT_FUNDING_CONFIG,
13
+ ...DEFAULT_APM_FUNDING_CONFIG,
12
14
 
13
15
  shippingChange: false,
14
16
 
@@ -16,6 +18,23 @@ export function getSofortConfig() : FundingSourceConfig {
16
18
  BUTTON_LAYOUT.VERTICAL
17
19
  ],
18
20
 
19
- Logo: ({ logoColor, optional }) => SofortLogo({ logoColor, optional })
21
+ Logo: ({ logoColor, optional }) => SofortLogo({ logoColor, optional }),
22
+
23
+ Label: ({ logo, ...opts }) => {
24
+ if (__WEB__) {
25
+ return logo;
26
+ }
27
+
28
+ const apmLogo = (
29
+ <Fragment>
30
+ { logo }<Space /><Text animate optional>SOFORT</Text>
31
+ </Fragment>
32
+ );
33
+
34
+ return (<BasicLabel
35
+ { ...opts }
36
+ logo={ apmLogo }
37
+ />);
38
+ }
20
39
  };
21
40
  }
@@ -2,13 +2,15 @@
2
2
  /** @jsx node */
3
3
 
4
4
  import { TrustlyLogo } from '@paypal/sdk-logos/src';
5
+ import { Fragment, node } from '@krakenjs/jsx-pragmatic/src';
5
6
 
6
7
  import { BUTTON_LAYOUT } from '../../constants';
7
- import { DEFAULT_FUNDING_CONFIG, type FundingSourceConfig } from '../common';
8
+ import { DEFAULT_APM_FUNDING_CONFIG, type FundingSourceConfig, BasicLabel } from '../common';
9
+ import { Text, Space } from '../../ui/text';
8
10
 
9
11
  export function getTrustlyConfig() : FundingSourceConfig {
10
12
  return {
11
- ...DEFAULT_FUNDING_CONFIG,
13
+ ...DEFAULT_APM_FUNDING_CONFIG,
12
14
 
13
15
  automatic: false,
14
16
 
@@ -18,6 +20,23 @@ export function getTrustlyConfig() : FundingSourceConfig {
18
20
  BUTTON_LAYOUT.VERTICAL
19
21
  ],
20
22
 
21
- Logo: ({ logoColor, optional }) => TrustlyLogo({ logoColor, optional })
23
+ Logo: ({ logoColor, optional }) => TrustlyLogo({ logoColor, optional }),
24
+
25
+ Label: ({ logo, ...opts }) => {
26
+ if (__WEB__) {
27
+ return logo;
28
+ }
29
+
30
+ const apmLogo = (
31
+ <Fragment>
32
+ { logo }<Space /><Text animate optional>Trustly</Text>
33
+ </Fragment>
34
+ );
35
+
36
+ return (<BasicLabel
37
+ { ...opts }
38
+ logo={ apmLogo }
39
+ />);
40
+ }
22
41
  };
23
42
  }
@@ -2,13 +2,15 @@
2
2
  /** @jsx node */
3
3
 
4
4
  import { VerkkopankkiLogo } from '@paypal/sdk-logos/src';
5
+ import { Fragment, node } from '@krakenjs/jsx-pragmatic/src';
5
6
 
6
7
  import { BUTTON_LAYOUT } from '../../constants';
7
- import { DEFAULT_FUNDING_CONFIG, type FundingSourceConfig } from '../common';
8
+ import { DEFAULT_APM_FUNDING_CONFIG, type FundingSourceConfig, BasicLabel } from '../common';
9
+ import { Text, Space } from '../../ui/text';
8
10
 
9
11
  export function getVerkkopankkiConfig() : FundingSourceConfig {
10
12
  return {
11
- ...DEFAULT_FUNDING_CONFIG,
13
+ ...DEFAULT_APM_FUNDING_CONFIG,
12
14
 
13
15
  automatic: false,
14
16
 
@@ -18,6 +20,23 @@ export function getVerkkopankkiConfig() : FundingSourceConfig {
18
20
 
19
21
  shippingChange: false,
20
22
 
21
- Logo: ({ logoColor, optional }) => VerkkopankkiLogo({ logoColor, optional })
23
+ Logo: ({ logoColor, optional }) => VerkkopankkiLogo({ logoColor, optional }),
24
+
25
+ Label: ({ logo, ...opts }) => {
26
+ if (__WEB__) {
27
+ return logo;
28
+ }
29
+
30
+ const apmLogo = (
31
+ <Fragment>
32
+ { logo }<Space /><Text animate optional>Verkkopankki</Text>
33
+ </Fragment>
34
+ );
35
+
36
+ return (<BasicLabel
37
+ { ...opts }
38
+ logo={ apmLogo }
39
+ />);
40
+ }
22
41
  };
23
42
  }
@@ -2,13 +2,15 @@
2
2
  /** @jsx node */
3
3
 
4
4
  import { WechatpayLogo } from '@paypal/sdk-logos/src';
5
+ import { Fragment, node } from '@krakenjs/jsx-pragmatic/src';
5
6
 
6
7
  import { BUTTON_LAYOUT } from '../../constants';
7
- import { DEFAULT_FUNDING_CONFIG, type FundingSourceConfig } from '../common';
8
+ import { DEFAULT_APM_FUNDING_CONFIG, type FundingSourceConfig, BasicLabel } from '../common';
9
+ import { Text, Space } from '../../ui/text';
8
10
 
9
11
  export function getWechatpayConfig() : FundingSourceConfig {
10
12
  return {
11
- ...DEFAULT_FUNDING_CONFIG,
13
+ ...DEFAULT_APM_FUNDING_CONFIG,
12
14
 
13
15
  shippingChange: false,
14
16
 
@@ -16,6 +18,23 @@ export function getWechatpayConfig() : FundingSourceConfig {
16
18
  BUTTON_LAYOUT.VERTICAL
17
19
  ],
18
20
 
19
- Logo: ({ logoColor, optional }) => WechatpayLogo({ logoColor, optional })
21
+ Logo: ({ logoColor, optional }) => WechatpayLogo({ logoColor, optional }),
22
+
23
+ Label: ({ logo, ...opts }) => {
24
+ if (__WEB__) {
25
+ return logo;
26
+ }
27
+
28
+ const apmLogo = (
29
+ <Fragment>
30
+ { logo }<Space /><Text animate optional>WeChat Pay</Text>
31
+ </Fragment>
32
+ );
33
+
34
+ return (<BasicLabel
35
+ { ...opts }
36
+ logo={ apmLogo }
37
+ />);
38
+ }
20
39
  };
21
40
  }
@@ -8,6 +8,7 @@ import { allowIframe as _allowIframe } from '../lib';
8
8
  import { getCheckoutComponent, type CheckoutComponent } from '../zoid/checkout';
9
9
  import { getButtonsComponent, type ButtonsComponent } from '../zoid/buttons';
10
10
  import { getCardFormComponent, type CardFormComponent } from '../zoid/card-form';
11
+ import { getPaymentFieldsComponent, type PaymentFieldsComponent } from '../zoid/payment-fields';
11
12
  import { getMenuComponent, type MenuComponent } from '../zoid/menu';
12
13
  import { getInstallmentsComponent, type InstallmentsComponent } from '../zoid/installments';
13
14
  import { Buttons as _ButtonsTemplate } from '../ui/buttons';
@@ -32,6 +33,10 @@ export const CardForm : LazyProtectedExport<CardFormComponent> = {
32
33
  __get__: () => protectedExport(getCardFormComponent())
33
34
  };
34
35
 
36
+ export const PaymentFields : LazyProtectedExport<PaymentFieldsComponent> = {
37
+ __get__: () => protectedExport(getPaymentFieldsComponent())
38
+ };
39
+
35
40
  export const Menu : LazyProtectedExport<MenuComponent> = {
36
41
  __get__: () => protectedExport(getMenuComponent())
37
42
  };
package/src/types.js CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  import { CARD, WALLET_INSTRUMENT } from '@paypal/sdk-constants/src';
4
4
 
5
+ type SecondaryInstruments = {|
6
+ type : string,
7
+ label : string,
8
+ instrumentID : string
9
+ |};
10
+
5
11
  export type WalletInstrument = {|
6
12
  type? : $Values<typeof WALLET_INSTRUMENT>,
7
13
  label? : string,
@@ -10,7 +16,8 @@ export type WalletInstrument = {|
10
16
  tokenID? : string,
11
17
  vendor? : $Values<typeof CARD>,
12
18
  oneClick : boolean,
13
- branded : boolean
19
+ branded : boolean,
20
+ secondaryInstruments? : SecondaryInstruments
14
21
  |};
15
22
 
16
23
  export type WalletPaymentType = {|
@@ -38,7 +45,8 @@ export type ContentType = {|
38
45
  credit : string,
39
46
  payWith : string,
40
47
  payLater : string,
41
- flex : string
48
+ flex : string,
49
+ payPalBalance: string
42
50
  |};
43
51
 
44
52
  export type Experiment = {|
@@ -41,11 +41,12 @@ type IndividualButtonProps = {|
41
41
  vault : boolean,
42
42
  merchantFundingSource : ?$Values<typeof FUNDING>,
43
43
  instrument : ?WalletInstrument,
44
- experience? : string
44
+ experience? : string,
45
+ showPayLabel : boolean
45
46
  |};
46
47
 
47
48
  export function Button({ fundingSource, style, multiple, locale, env, fundingEligibility, i, nonce, flow, vault,
48
- userIDToken, personalization, onClick = noop, content, tagline, commit, experiment, instrument, experience } : IndividualButtonProps) : ElementNode {
49
+ userIDToken, personalization, onClick = noop, content, tagline, commit, experiment, instrument, experience, showPayLabel } : IndividualButtonProps) : ElementNode {
49
50
 
50
51
  const { custom, layout, shape } = style;
51
52
  const inlineExperience = experience === EXPERIENCE.INLINE && custom && custom.label;
@@ -189,6 +190,7 @@ export function Button({ fundingSource, style, multiple, locale, env, fundingEli
189
190
  vault={ vault }
190
191
  textColor={ textColor }
191
192
  fundingSource={ fundingSource }
193
+ showPayLabel={ showPayLabel }
192
194
  />
193
195
  );
194
196
 
@@ -218,11 +220,12 @@ export function Button({ fundingSource, style, multiple, locale, env, fundingEli
218
220
  <div
219
221
  role='link'
220
222
  { ...{
221
- [ ATTRIBUTE.BUTTON ]: true,
222
- [ ATTRIBUTE.FUNDING_SOURCE ]: fundingSource,
223
- [ ATTRIBUTE.PAYMENT_METHOD_ID ]: instrument ? instrument.tokenID : null,
224
- [ ATTRIBUTE.INSTRUMENT_ID ]: instrument ? instrument.instrumentID : null,
225
- [ ATTRIBUTE.INSTRUMENT_TYPE ]: instrument ? instrument.type : null
223
+ [ ATTRIBUTE.BUTTON ]: true,
224
+ [ ATTRIBUTE.FUNDING_SOURCE ]: fundingSource,
225
+ [ ATTRIBUTE.PAYMENT_METHOD_ID ]: instrument ? instrument.tokenID : null,
226
+ [ ATTRIBUTE.INSTRUMENT_ID ]: instrument ? instrument.instrumentID : null,
227
+ [ ATTRIBUTE.INSTRUMENT_TYPE ]: instrument ? instrument.type : null,
228
+ [ ATTRIBUTE.SECONDARY_INSTRUMENT_TYPE ]: instrument?.secondaryInstruments ? instrument.secondaryInstruments[0].type : null
226
229
  } }
227
230
  class={ [
228
231
  CLASS.BUTTON,
@@ -2,7 +2,7 @@
2
2
  /** @jsx node */
3
3
 
4
4
  import { node, type ElementNode } from '@krakenjs/jsx-pragmatic/src';
5
- import { FUNDING, WALLET_INSTRUMENT } from '@paypal/sdk-constants/src';
5
+ import { FUNDING, WALLET_INSTRUMENT, APM_LIST } from '@paypal/sdk-constants/src';
6
6
  import { noop } from '@krakenjs/belter/src';
7
7
 
8
8
  import type { Wallet, WalletInstrument } from '../../types';
@@ -104,7 +104,7 @@ export function Buttons(props : ButtonsProps) : ElementNode {
104
104
  const { onClick = noop } = props;
105
105
  const { wallet, fundingSource, style, locale, remembered, env, fundingEligibility, platform, commit, vault,
106
106
  nonce, components, onShippingChange, onShippingAddressChange, onShippingOptionsChange, personalization, userIDToken, content, flow, experiment, applePaySupport,
107
- supportsPopups, supportedNativeBrowser, experience } = normalizeButtonProps(props);
107
+ supportsPopups, supportedNativeBrowser, experience, showPayLabel } = normalizeButtonProps(props);
108
108
  const { custom, layout, shape, tagline } = style;
109
109
 
110
110
  const inlineExperience = experience === EXPERIENCE.INLINE && custom && custom.label && custom.label.length !== 0;
@@ -124,6 +124,10 @@ export function Buttons(props : ButtonsProps) : ElementNode {
124
124
  }
125
125
  }
126
126
 
127
+ const isAPM = fundingSources.some(src => {
128
+ return APM_LIST.includes(src);
129
+ });
130
+
127
131
  const instruments = getWalletInstruments({ wallet, fundingSources, layout, onShippingChange, onShippingAddressChange, onShippingOptionsChange });
128
132
 
129
133
  const isWallet = (
@@ -188,6 +192,7 @@ export function Buttons(props : ButtonsProps) : ElementNode {
188
192
  vault={ vault }
189
193
  instrument={ instruments[source] }
190
194
  experience={ experience }
195
+ showPayLabel={ showPayLabel }
191
196
  />
192
197
  ))
193
198
  }
@@ -210,6 +215,12 @@ export function Buttons(props : ButtonsProps) : ElementNode {
210
215
  : null
211
216
  }
212
217
 
218
+ {
219
+ (isAPM)
220
+ ? <div id="payment-fields-container" className="payment-fields-container"/>
221
+ : null
222
+ }
223
+
213
224
  {
214
225
  (layout === BUTTON_LAYOUT.VERTICAL && fundingSources.indexOf(FUNDING.CARD) !== -1 && !inlineExperience)
215
226
  ? <PoweredByPayPal
@@ -393,7 +393,8 @@ export type RenderButtonProps = {|
393
393
  applePaySupport : boolean,
394
394
  supportsPopups : boolean,
395
395
  supportedNativeBrowser : boolean,
396
- experience : string
396
+ experience : string,
397
+ showPayLabel : boolean
397
398
  |};
398
399
 
399
400
  export type PrerenderDetails = {|
@@ -488,7 +489,8 @@ export type ButtonPropsInputs = {
488
489
  applePaySupport : boolean,
489
490
  supportsPopups : boolean,
490
491
  supportedNativeBrowser : boolean,
491
- experience : string
492
+ experience : string,
493
+ showPayLabel : boolean
492
494
  };
493
495
 
494
496
  export const DEFAULT_STYLE = {
@@ -658,7 +660,8 @@ export function normalizeButtonProps(props : ?ButtonPropsInputs) : RenderButtonP
658
660
  applePaySupport = false,
659
661
  supportsPopups = false,
660
662
  supportedNativeBrowser = false,
661
- experience = ''
663
+ experience = '',
664
+ showPayLabel
662
665
  } = props;
663
666
 
664
667
  const { country, lang } = locale;
@@ -701,5 +704,5 @@ export function normalizeButtonProps(props : ?ButtonPropsInputs) : RenderButtonP
701
704
 
702
705
  return { clientID, fundingSource, style, locale, remembered, env, fundingEligibility, platform, clientAccessToken,
703
706
  buttonSessionID, commit, sessionID, nonce, components, onShippingChange, onShippingAddressChange, onShippingOptionsChange, personalization, content, wallet, flow,
704
- experiment, vault, userIDToken, applePay, applePaySupport, supportsPopups, supportedNativeBrowser, experience };
707
+ experiment, vault, userIDToken, applePay, applePaySupport, supportsPopups, supportedNativeBrowser, experience, showPayLabel };
705
708
  }
@@ -62,6 +62,140 @@ export const buttonColorStyle = `
62
62
  background: #008CFF;
63
63
  }
64
64
 
65
+ /* For APM funding sources, default button color to be defined by payment scheme branding guidelines */
66
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.BLIK }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT } {
67
+ background: #2C2E2F;
68
+ }
69
+
70
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.BANCONTACT }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT } {
71
+ background: linear-gradient(to right, #1E3764, #005AB9);
72
+ }
73
+
74
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.BOLETO }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT } {
75
+ background: #2C2E2F;
76
+ }
77
+
78
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.BOLETOBANCARIO }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT } {
79
+ background: #2C2E2F;
80
+ }
81
+
82
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.EPS }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT } {
83
+ background: #C8036F;
84
+ }
85
+
86
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.GIROPAY }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT } {
87
+ background: #003A7D;
88
+ }
89
+
90
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.IDEAL }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT } {
91
+ background: #2C2E2F;
92
+ }
93
+
94
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.MERCADOPAGO }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT } {
95
+ background: #1D2647;
96
+ }
97
+
98
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.MULTIBANCO }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT } {
99
+ background: #1866AB;
100
+ }
101
+
102
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.MYBANK }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT } {
103
+ background: #1A4B67;
104
+ }
105
+
106
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.OXXO }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT } {
107
+ background: #D8232A;
108
+ }
109
+
110
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.P24 }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT } {
111
+ background: #D03238;
112
+ }
113
+
114
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.SOFORT }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT } {
115
+ background: #393A41;
116
+ }
117
+
118
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.TRUSTLY }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT } {
119
+ background: #003140;
120
+ }
121
+
122
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.VERKKOPANKKI }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT } {
123
+ background: #005596;
124
+ }
125
+
126
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.WECHATPAY }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT } {
127
+ background: #4D4D4D;
128
+ }
129
+
130
+ /* APM button hover actions */
131
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.BANCONTACT }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:hover,
132
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.BLIK }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:hover,
133
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.BOLETO }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:hover,
134
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.BOLETOBANCARIO }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:hover,
135
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.EPS }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:hover,
136
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.GIROPAY }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:hover,
137
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.IDEAL }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:hover,
138
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.MERCADOPAGO }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:hover,
139
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.MULTIBANCO }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:hover,
140
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.MYBANK }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:hover,
141
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.OXXO }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:hover,
142
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.P24 }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:hover,
143
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.SOFORT }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:hover,
144
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.TRUSTLY }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:hover,
145
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.VERKKOPANKKI }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:hover,
146
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.WECHATPAY }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:hover {
147
+ filter: brightness(1.2);
148
+ }
149
+
150
+ /* APM button on focus actions */
151
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.BLIK }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus,
152
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.BANCONTACT }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus,
153
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.BOLETO }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus,
154
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.BOLETOBANCARIO }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus,
155
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.EPS }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus,
156
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.GIROPAY }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus,
157
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.IDEAL }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus,
158
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.MERCADOPAGO }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus,
159
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.MULTIBANCO }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus,
160
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.MYBANK }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus,
161
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.OXXO }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus,
162
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.P24 }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus,
163
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.SOFORT }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus,
164
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.TRUSTLY }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus,
165
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.VERKKOPANKKI }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus,
166
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.WECHATPAY }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus {
167
+ outline: none;
168
+ }
169
+
170
+ /* APM button after focus actions */
171
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.BLIK }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus::after,
172
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.BANCONTACT }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus::after,
173
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.BOLETO }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus::after,
174
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.BOLETOBANCARIO }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus::after,
175
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.EPS }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus::after,
176
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.GIROPAY }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus::after,
177
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.IDEAL }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus::after,
178
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.MERCADOPAGO }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus::after,
179
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.MULTIBANCO }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus::after,
180
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.MYBANK }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus::after,
181
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.OXXO }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus::after,
182
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.P24 }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus::after,
183
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.SOFORT }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus::after,
184
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.TRUSTLY }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus::after,
185
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.VERKKOPANKKI }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus::after,
186
+ .${ CLASS.BUTTON }[${ ATTRIBUTE.FUNDING_SOURCE }=${ FUNDING.WECHATPAY }].${ CLASS.COLOR }-${ BUTTON_COLOR.DEFAULT }:focus::after {
187
+ content: '';
188
+ position: absolute;
189
+ top: 5px;
190
+ right: 5px;
191
+ bottom: 5px;
192
+ left: 5px;
193
+ border: 0.125rem solid #009cde;
194
+ border-radius: inherit;
195
+ box-shadow: 0 0 0 0.5rem #0000a6;
196
+ pointer-events: none;
197
+ }
198
+
65
199
  @media (hover:hover) {
66
200
  .${ CLASS.BUTTON }.${ CLASS.COLOR }-${ BUTTON_COLOR.BLUE }:hover {
67
201
  filter: brightness(0.95);
@@ -122,6 +122,32 @@ export function getPaymentFieldsComponent() : PaymentFieldsComponent {
122
122
  required: false
123
123
  },
124
124
 
125
+ onError: {
126
+ type: 'function',
127
+ required: false
128
+ },
129
+
130
+ onContinue: {
131
+ type: 'function',
132
+ required: false
133
+ },
134
+
135
+ onClose: {
136
+ type: 'function',
137
+ required: false
138
+ },
139
+
140
+ showActionButtons: {
141
+ type: 'boolean',
142
+ queryParam: true,
143
+ required: false
144
+ },
145
+
146
+ onFieldsClose: {
147
+ type: 'function',
148
+ required: false
149
+ },
150
+
125
151
  buyerCountry: {
126
152
  type: 'string',
127
153
  queryParam: true,