@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.
- package/dist/button.js +1 -1
- package/package.json +4 -4
- package/src/constants/misc.js +11 -10
- package/src/funding/bancontact/config.jsx +22 -3
- package/src/funding/blik/config.jsx +22 -3
- package/src/funding/boleto/config.jsx +22 -3
- package/src/funding/common.jsx +35 -1
- package/src/funding/eps/config.jsx +22 -3
- package/src/funding/giropay/config.jsx +23 -3
- package/src/funding/ideal/config.jsx +5 -5
- package/src/funding/maxima/config.jsx +9 -2
- package/src/funding/mercadopago/config.jsx +22 -3
- package/src/funding/multibanco/config.jsx +23 -4
- package/src/funding/mybank/config.jsx +22 -3
- package/src/funding/oxxo/config.jsx +23 -4
- package/src/funding/p24/config.jsx +22 -3
- package/src/funding/paypal/style.scoped.scss +8 -0
- package/src/funding/paypal/template.jsx +98 -26
- package/src/funding/sofort/config.jsx +22 -3
- package/src/funding/trustly/config.jsx +22 -3
- package/src/funding/verkkopankki/config.jsx +22 -3
- package/src/funding/wechatpay/config.jsx +22 -3
- package/src/interface/button.js +5 -0
- package/src/types.js +10 -2
- package/src/ui/buttons/button.jsx +10 -7
- package/src/ui/buttons/buttons.jsx +13 -2
- package/src/ui/buttons/props.js +7 -4
- package/src/ui/buttons/styles/color.js +134 -0
- package/src/zoid/payment-fields/component.jsx +26 -0
|
@@ -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
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
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 {
|
|
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
|
-
...
|
|
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 {
|
|
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
|
-
...
|
|
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 {
|
|
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
|
-
...
|
|
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 {
|
|
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
|
-
...
|
|
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
|
}
|
package/src/interface/button.js
CHANGED
|
@@ -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 ]:
|
|
222
|
-
[ ATTRIBUTE.FUNDING_SOURCE ]:
|
|
223
|
-
[ ATTRIBUTE.PAYMENT_METHOD_ID ]:
|
|
224
|
-
[ ATTRIBUTE.INSTRUMENT_ID ]:
|
|
225
|
-
[ ATTRIBUTE.INSTRUMENT_TYPE ]:
|
|
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
|
package/src/ui/buttons/props.js
CHANGED
|
@@ -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,
|