@paypal/checkout-components 5.0.413 → 5.0.414
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/dist/test/button.js +1 -1
- package/package.json +2 -2
- package/src/funding/common.jsx +6 -0
- package/src/funding/funding.js +8 -1
- package/src/funding/funding.test.js +69 -0
- package/src/funding/itau/config.jsx +21 -8
- package/src/funding/paylater/config.jsx +7 -12
- package/src/funding/sepa/config.jsx +29 -1
- package/src/marks/component.jsx +4 -0
- package/src/ui/buttons/buttons.jsx +2 -0
- package/src/ui/buttons/config.js +50 -26
- package/src/ui/buttons/poweredBy.jsx +8 -3
- package/src/ui/buttons/props.js +7 -29
- package/src/ui/buttons/props.test.js +0 -42
- package/src/ui/buttons/script.jsx +0 -47
- package/src/ui/buttons/styles/button.js +21 -4
- package/src/ui/buttons/styles/color.js +67 -41
- package/src/ui/buttons/styles/disableMaxHeightConfig.test.js +71 -0
- package/src/ui/buttons/styles/labels.js +23 -0
- package/src/ui/buttons/styles/responsive.js +124 -88
- package/src/ui/buttons/styles/styleUtils.js +9 -7
- package/src/ui/buttons/styles/styleUtils.test.js +23 -76
- package/src/ui/buttons/tagline.jsx +8 -4
- package/src/zoid/buttons/component.jsx +4 -0
|
@@ -11,7 +11,6 @@ import {
|
|
|
11
11
|
getColorForABTest,
|
|
12
12
|
getDefaultColorForFundingSource,
|
|
13
13
|
throwErrorForInvalidButtonColor,
|
|
14
|
-
hasInvalidScriptOptionsForFullRedesign,
|
|
15
14
|
determineRandomButtonColor,
|
|
16
15
|
getColorABTestFromStorage,
|
|
17
16
|
} from "./props";
|
|
@@ -128,47 +127,6 @@ describe("determineRandomButtonColor", () => {
|
|
|
128
127
|
});
|
|
129
128
|
});
|
|
130
129
|
|
|
131
|
-
describe("hasInvalidScriptOptionsForFullRedesign", () => {
|
|
132
|
-
const validFundingSources = [
|
|
133
|
-
FUNDING.PAYPAL,
|
|
134
|
-
FUNDING.PAYLATER,
|
|
135
|
-
FUNDING.CREDIT,
|
|
136
|
-
FUNDING.CARD,
|
|
137
|
-
FUNDING.VENMO,
|
|
138
|
-
];
|
|
139
|
-
const invalidFundingSources = [FUNDING.APPLEPAY, FUNDING.IDEAL];
|
|
140
|
-
|
|
141
|
-
// Test valid funding sources
|
|
142
|
-
validFundingSources.forEach((fundingSource) => {
|
|
143
|
-
it(`should return false for fundingSource: ${fundingSource}`, () => {
|
|
144
|
-
const result = hasInvalidScriptOptionsForFullRedesign({
|
|
145
|
-
fundingSource,
|
|
146
|
-
});
|
|
147
|
-
|
|
148
|
-
expect(result).toBe(false);
|
|
149
|
-
});
|
|
150
|
-
});
|
|
151
|
-
|
|
152
|
-
// Test invalid funding sources
|
|
153
|
-
invalidFundingSources.forEach((fundingSource) => {
|
|
154
|
-
it(`should return true for fundingSource: ${fundingSource}`, () => {
|
|
155
|
-
const result = hasInvalidScriptOptionsForFullRedesign({
|
|
156
|
-
fundingSource,
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
expect(result).toBe(true);
|
|
160
|
-
});
|
|
161
|
-
});
|
|
162
|
-
|
|
163
|
-
it("should return true when funding source is null", () => {
|
|
164
|
-
const result = hasInvalidScriptOptionsForFullRedesign({
|
|
165
|
-
fundingSource: null,
|
|
166
|
-
});
|
|
167
|
-
|
|
168
|
-
expect(result).toBe(true);
|
|
169
|
-
});
|
|
170
|
-
});
|
|
171
|
-
|
|
172
130
|
describe("throwErrorForInvalidButtonColor", () => {
|
|
173
131
|
it("should throw error with appropriate message for invalid color", () => {
|
|
174
132
|
expect(() => {
|
|
@@ -199,58 +199,13 @@ export function getComponentScript(): () => void {
|
|
|
199
199
|
}
|
|
200
200
|
}
|
|
201
201
|
|
|
202
|
-
function toggleLogos() {
|
|
203
|
-
const LOGO_CLASS = {
|
|
204
|
-
PAYPAL_LOGO: ".paypal-logo-paypal-rebrand",
|
|
205
|
-
PP_LOGO: ".paypal-logo-pp-rebrand",
|
|
206
|
-
PAYPAL_BUTTON: ".paypal-button-rebrand",
|
|
207
|
-
BUTTON_LABEL: ".paypal-button-label-container",
|
|
208
|
-
};
|
|
209
|
-
|
|
210
|
-
const paylaterButtons = getElements(LOGO_CLASS.PAYPAL_BUTTON);
|
|
211
|
-
|
|
212
|
-
for (const button of paylaterButtons) {
|
|
213
|
-
const paypalLogo = button.querySelector(LOGO_CLASS.PAYPAL_LOGO);
|
|
214
|
-
const ppLogo = button.querySelector(LOGO_CLASS.PP_LOGO);
|
|
215
|
-
const buttonLabel = button.querySelector(LOGO_CLASS.BUTTON_LABEL);
|
|
216
|
-
|
|
217
|
-
if (!buttonLabel || !paypalLogo || !ppLogo) {
|
|
218
|
-
continue;
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
const buttonWidth = buttonLabel.offsetWidth;
|
|
222
|
-
const gap = calculateGap(buttonLabel);
|
|
223
|
-
|
|
224
|
-
// temporarily hide PayPal logos
|
|
225
|
-
hideElement(paypalLogo);
|
|
226
|
-
hideElement(ppLogo);
|
|
227
|
-
|
|
228
|
-
const allElements = getAllChildren(buttonLabel);
|
|
229
|
-
const textElements = allElements.filter(
|
|
230
|
-
(el) => !el.classList.contains("paypal-logo-pp-rebrand")
|
|
231
|
-
);
|
|
232
|
-
|
|
233
|
-
const totalWidth = getElementsTotalWidth(textElements) + gap;
|
|
234
|
-
|
|
235
|
-
if (totalWidth > buttonWidth) {
|
|
236
|
-
hideElement(paypalLogo);
|
|
237
|
-
showElement(ppLogo);
|
|
238
|
-
} else {
|
|
239
|
-
showElement(paypalLogo);
|
|
240
|
-
hideElement(ppLogo);
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
|
|
245
202
|
const setDomReady = once(
|
|
246
203
|
debounce(() => {
|
|
247
204
|
window.addEventListener("resize", () => {
|
|
248
205
|
toggleOptionals();
|
|
249
|
-
toggleLogos();
|
|
250
206
|
});
|
|
251
207
|
setTimeout(() => {
|
|
252
208
|
toggleOptionals();
|
|
253
|
-
toggleLogos();
|
|
254
209
|
});
|
|
255
210
|
if (document.body) {
|
|
256
211
|
document.body.classList.add(CLASS.DOM_READY);
|
|
@@ -260,12 +215,10 @@ export function getComponentScript(): () => void {
|
|
|
260
215
|
|
|
261
216
|
const load = () => {
|
|
262
217
|
toggleOptionals();
|
|
263
|
-
toggleLogos();
|
|
264
218
|
setDomReady();
|
|
265
219
|
};
|
|
266
220
|
|
|
267
221
|
toggleOptionals();
|
|
268
|
-
toggleLogos();
|
|
269
222
|
document.addEventListener("DOMContentLoaded", load);
|
|
270
223
|
window.addEventListener("load", load);
|
|
271
224
|
window.addEventListener("resize", load);
|
|
@@ -4,6 +4,10 @@ import { ENV } from "@paypal/sdk-constants/src";
|
|
|
4
4
|
import { LOGO_CLASS } from "@paypal/sdk-logos/src";
|
|
5
5
|
|
|
6
6
|
import { CLASS } from "../../../constants";
|
|
7
|
+
import {
|
|
8
|
+
REBRAND_LABEL_HEIGHT_RATIO,
|
|
9
|
+
REBRAND_LOGO_TRANSLATE_Y,
|
|
10
|
+
} from "../config";
|
|
7
11
|
|
|
8
12
|
const MIN_VAULT_BUTTON_WIDTH = 250;
|
|
9
13
|
|
|
@@ -104,8 +108,8 @@ export const buttonStyle = `
|
|
|
104
108
|
|
|
105
109
|
.${CLASS.BUTTON} .${CLASS.SPINNER} {
|
|
106
110
|
position: absolute;
|
|
107
|
-
height:
|
|
108
|
-
|
|
111
|
+
height: 50%;
|
|
112
|
+
aspect-ratio: 1;
|
|
109
113
|
top: 50%;
|
|
110
114
|
left: 50%;
|
|
111
115
|
transform: translateX(-50%) translateY(-50%);
|
|
@@ -171,7 +175,7 @@ export const buttonRebrandStyle = `
|
|
|
171
175
|
align-items: center;
|
|
172
176
|
justify-content: center;
|
|
173
177
|
flex-wrap: nowrap;
|
|
174
|
-
height:
|
|
178
|
+
height: ${REBRAND_LABEL_HEIGHT_RATIO * 100}%;
|
|
175
179
|
min-width: 0px;
|
|
176
180
|
position: relative;
|
|
177
181
|
}
|
|
@@ -200,12 +204,25 @@ export const buttonRebrandStyle = `
|
|
|
200
204
|
height: 100%;
|
|
201
205
|
}
|
|
202
206
|
|
|
203
|
-
.${CLASS.BUTTON_REBRAND} .${CLASS.
|
|
207
|
+
.${CLASS.BUTTON_REBRAND} .${CLASS.BUTTON_LABEL} > .${CLASS.LOGO_REBRAND} {
|
|
208
|
+
transform: translateY(${REBRAND_LOGO_TRANSLATE_Y}%);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
.${CLASS.BUTTON_REBRAND}[data-funding-source=wechatpay] .${CLASS.TEXT},
|
|
212
|
+
.${CLASS.BUTTON_REBRAND}[data-funding-source=satispay] .${CLASS.TEXT},
|
|
213
|
+
.${CLASS.BUTTON_REBRAND}[data-funding-source=giropay] .${CLASS.TEXT},
|
|
214
|
+
.${CLASS.BUTTON_REBRAND}[data-funding-source=paidy] .${CLASS.TEXT},
|
|
215
|
+
.${CLASS.BUTTON_REBRAND}[data-funding-source=trustly] .${CLASS.TEXT} {
|
|
216
|
+
transform: translateY(-1px);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
.${CLASS.BUTTON_REBRAND}.${CLASS.TAGLINE} {
|
|
204
220
|
max-width: 100%;
|
|
205
221
|
font-size: initial;
|
|
206
222
|
font-weight: 400;
|
|
207
223
|
display: block;
|
|
208
224
|
text-align: center;
|
|
209
225
|
width: auto;
|
|
226
|
+
margin-top: 8px;
|
|
210
227
|
}
|
|
211
228
|
`;
|
|
@@ -54,6 +54,10 @@ export const buttonColorStyle = `
|
|
|
54
54
|
background: #54B4E0;
|
|
55
55
|
overflow: inherit;
|
|
56
56
|
}
|
|
57
|
+
|
|
58
|
+
.${CLASS.BUTTON_REBRAND}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.VENMO}].${CLASS.COLOR}-${BUTTON_COLOR.REBRAND_BLUE}:hover {
|
|
59
|
+
background: #0073E0;
|
|
60
|
+
}
|
|
57
61
|
}
|
|
58
62
|
|
|
59
63
|
@media (hover:hover) {
|
|
@@ -61,6 +65,10 @@ export const buttonColorStyle = `
|
|
|
61
65
|
background: #3DB5FF;
|
|
62
66
|
overflow: inherit;
|
|
63
67
|
}
|
|
68
|
+
|
|
69
|
+
.${CLASS.BUTTON_REBRAND}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.VENMO}].${CLASS.COLOR}-${BUTTON_COLOR.REBRAND_BLUE}:active {
|
|
70
|
+
background: #0074FF;
|
|
71
|
+
}
|
|
64
72
|
}
|
|
65
73
|
|
|
66
74
|
.${CLASS.BUTTON}.${CLASS.COLOR}-${BUTTON_COLOR.REBRAND_DARKBLUE},
|
|
@@ -151,7 +159,7 @@ export const buttonColorStyle = `
|
|
|
151
159
|
.${CLASS.BUTTON_REBRAND}:focus {
|
|
152
160
|
outline: none;
|
|
153
161
|
}
|
|
154
|
-
|
|
162
|
+
|
|
155
163
|
.${CLASS.BUTTON_REBRAND}:focus::after {
|
|
156
164
|
content: '';
|
|
157
165
|
position: absolute;
|
|
@@ -160,7 +168,7 @@ export const buttonColorStyle = `
|
|
|
160
168
|
bottom: 3px;
|
|
161
169
|
left: 3px;
|
|
162
170
|
border: 0.125rem solid #FFFFFF;
|
|
163
|
-
border-radius:
|
|
171
|
+
border-radius: max(0px, calc(var(--btn-radius, 4px) - 3px));
|
|
164
172
|
box-shadow: 0 0 0 0.2rem #0066F5;
|
|
165
173
|
pointer-events: none;
|
|
166
174
|
}
|
|
@@ -249,6 +257,14 @@ export const buttonColorStyle = `
|
|
|
249
257
|
background: #E62601;
|
|
250
258
|
}
|
|
251
259
|
|
|
260
|
+
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.ITAU}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT} {
|
|
261
|
+
background: #003087;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.SEPA}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT} {
|
|
265
|
+
background: #eee;
|
|
266
|
+
}
|
|
267
|
+
|
|
252
268
|
/* APM button hover actions */
|
|
253
269
|
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.BANCONTACT}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:hover,
|
|
254
270
|
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.BLIK}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:hover,
|
|
@@ -267,52 +283,62 @@ export const buttonColorStyle = `
|
|
|
267
283
|
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.PAYU}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:hover,
|
|
268
284
|
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.SATISPAY}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:hover,
|
|
269
285
|
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.PAIDY}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:hover,
|
|
270
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.WECHATPAY}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:hover
|
|
286
|
+
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.WECHATPAY}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:hover,
|
|
287
|
+
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.ITAU}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:hover {
|
|
271
288
|
filter: brightness(1.2);
|
|
272
289
|
overflow: inherit;
|
|
273
290
|
}
|
|
274
291
|
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.
|
|
282
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.
|
|
283
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.
|
|
284
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.
|
|
285
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.
|
|
286
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.
|
|
287
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.
|
|
288
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.
|
|
289
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.
|
|
290
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.
|
|
291
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.
|
|
292
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.
|
|
293
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.
|
|
292
|
+
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.SEPA}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:hover {
|
|
293
|
+
filter: brightness(0.95);
|
|
294
|
+
overflow: inherit;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
/* APM button on focus actions (legacy only) */
|
|
298
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.BLIK}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus,
|
|
299
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.BANCONTACT}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus,
|
|
300
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.BOLETO}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus,
|
|
301
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.BOLETOBANCARIO}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus,
|
|
302
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.EPS}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus,
|
|
303
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.GIROPAY}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus,
|
|
304
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.IDEAL}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus,
|
|
305
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.MERCADOPAGO}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus,
|
|
306
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.MULTIBANCO}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus,
|
|
307
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.MYBANK}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus,
|
|
308
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.OXXO}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus,
|
|
309
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.P24}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus,
|
|
310
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.SOFORT}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus,
|
|
311
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.TRUSTLY}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus,
|
|
312
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.PAYU}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus,
|
|
313
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.SATISPAY}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus,
|
|
314
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.PAIDY}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus,
|
|
315
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.WECHATPAY}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus,
|
|
316
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.ITAU}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus,
|
|
317
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.SEPA}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus {
|
|
294
318
|
outline: none;
|
|
295
319
|
}
|
|
296
320
|
|
|
297
|
-
/* APM button after focus actions */
|
|
298
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.BLIK}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
299
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.BANCONTACT}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
300
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.BOLETO}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
301
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.BOLETOBANCARIO}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
302
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.EPS}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
303
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.GIROPAY}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
304
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.IDEAL}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
305
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.MERCADOPAGO}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
306
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.MULTIBANCO}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
307
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.MYBANK}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
308
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.OXXO}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
309
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.P24}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
310
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.SOFORT}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
311
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.TRUSTLY}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
312
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.PAYU}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
313
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.SATISPAY}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
314
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.PAIDY}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
315
|
-
.${CLASS.BUTTON}[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.WECHATPAY}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after
|
|
321
|
+
/* APM button after focus actions (legacy only) */
|
|
322
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.BLIK}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
323
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.BANCONTACT}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
324
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.BOLETO}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
325
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.BOLETOBANCARIO}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
326
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.EPS}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
327
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.GIROPAY}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
328
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.IDEAL}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
329
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.MERCADOPAGO}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
330
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.MULTIBANCO}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
331
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.MYBANK}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
332
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.OXXO}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
333
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.P24}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
334
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.SOFORT}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
335
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.TRUSTLY}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
336
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.PAYU}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
337
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.SATISPAY}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
338
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.PAIDY}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
339
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.WECHATPAY}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
340
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.ITAU}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after,
|
|
341
|
+
.${CLASS.BUTTON}:not(.${CLASS.BUTTON_REBRAND})[${ATTRIBUTE.FUNDING_SOURCE}=${FUNDING.SEPA}].${CLASS.COLOR}-${BUTTON_COLOR.DEFAULT}:focus::after {
|
|
316
342
|
content: '';
|
|
317
343
|
position: absolute;
|
|
318
344
|
top: 5px;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/* @flow */
|
|
2
|
+
|
|
3
|
+
import { describe, expect, test } from "vitest";
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
BUTTON_REDESIGN_STYLE,
|
|
7
|
+
BUTTON_REDESIGN_DISABLEMAXHEIGHT_STYLE,
|
|
8
|
+
} from "../config";
|
|
9
|
+
|
|
10
|
+
describe("BUTTON_REDESIGN_DISABLEMAXHEIGHT_STYLE config", () => {
|
|
11
|
+
test("should include all BUTTON_REDESIGN_STYLE buckets", () => {
|
|
12
|
+
Object.keys(BUTTON_REDESIGN_STYLE).forEach((key) => {
|
|
13
|
+
expect(BUTTON_REDESIGN_DISABLEMAXHEIGHT_STYLE).toHaveProperty(key);
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
test("should have XL_BIG bucket with correct values", () => {
|
|
18
|
+
expect(BUTTON_REDESIGN_DISABLEMAXHEIGHT_STYLE.XL_BIG).toEqual({
|
|
19
|
+
minHeight: 60,
|
|
20
|
+
maxHeight: 65,
|
|
21
|
+
gap: 6,
|
|
22
|
+
fontSize: 20,
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
test("should have XXL_SMALL bucket with correct values", () => {
|
|
27
|
+
expect(BUTTON_REDESIGN_DISABLEMAXHEIGHT_STYLE.XXL_SMALL).toEqual({
|
|
28
|
+
minHeight: 65,
|
|
29
|
+
maxHeight: 70,
|
|
30
|
+
gap: 7,
|
|
31
|
+
fontSize: 22,
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
test("should have XXL_BIG bucket with correct values", () => {
|
|
36
|
+
expect(BUTTON_REDESIGN_DISABLEMAXHEIGHT_STYLE.XXL_BIG).toEqual({
|
|
37
|
+
minHeight: 70,
|
|
38
|
+
maxHeight: 75,
|
|
39
|
+
gap: 7,
|
|
40
|
+
fontSize: 24,
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
test("should have XXXL bucket with correct values", () => {
|
|
45
|
+
expect(BUTTON_REDESIGN_DISABLEMAXHEIGHT_STYLE.XXXL).toEqual({
|
|
46
|
+
minHeight: 75,
|
|
47
|
+
maxHeight: 200,
|
|
48
|
+
gap: 8,
|
|
49
|
+
fontSize: 26,
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
test("should have no gaps in height coverage between buckets", () => {
|
|
54
|
+
const buckets = Object.keys(BUTTON_REDESIGN_DISABLEMAXHEIGHT_STYLE)
|
|
55
|
+
.map((key) => BUTTON_REDESIGN_DISABLEMAXHEIGHT_STYLE[key])
|
|
56
|
+
.filter((b) => b.minHeight !== undefined && b.maxHeight !== undefined)
|
|
57
|
+
.sort((a, b) => a.minHeight - b.minHeight);
|
|
58
|
+
|
|
59
|
+
for (let i = 1; i < buckets.length; i++) {
|
|
60
|
+
expect(buckets[i].minHeight).toBeLessThanOrEqual(
|
|
61
|
+
buckets[i - 1].maxHeight
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
test("should have continuous height coverage up to 200", () => {
|
|
67
|
+
const keys = Object.keys(BUTTON_REDESIGN_DISABLEMAXHEIGHT_STYLE);
|
|
68
|
+
const lastKey = keys[keys.length - 1];
|
|
69
|
+
expect(BUTTON_REDESIGN_DISABLEMAXHEIGHT_STYLE[lastKey].maxHeight).toBe(200);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
@@ -72,9 +72,32 @@ export const labelStyle = `
|
|
|
72
72
|
CLASS.BUTTON_LABEL
|
|
73
73
|
} {
|
|
74
74
|
font-family: PayPal Pro Book, system-ui, -apple-system, Roboto, "Segoe UI", Helvetica-Neue, Helvetica, Arial, sans-serif;
|
|
75
|
+
font-weight: 500;
|
|
75
76
|
}
|
|
76
77
|
|
|
77
78
|
.${CLASS.BUTTON_REBRAND}[data-funding-source=venmo] .${CLASS.BUTTON_LABEL} {
|
|
78
79
|
font-family: Scto Grotesk A, system-ui, -apple-system, Roboto, "Segoe UI", Helvetica-Neue, Helvetica, Arial, sans-serif;
|
|
79
80
|
}
|
|
81
|
+
|
|
82
|
+
/* targeting only credit and paylater buttons for the logo swap */
|
|
83
|
+
.${CLASS.BUTTON_REBRAND}[data-funding-source=credit],
|
|
84
|
+
.${CLASS.BUTTON_REBRAND}[data-funding-source=paylater] {
|
|
85
|
+
container-type: size;
|
|
86
|
+
container-name: paylater-credit-btn;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.${CLASS.BUTTON_REBRAND} .${CLASS.LOGO_PP_REBRAND} {
|
|
90
|
+
display: none;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/* At smaller sizes, swap out the full paypal watermark for the smaller pp monogram. At 150px-200px wide: 25-40px show wordmark, 45px triggers monogram. */
|
|
94
|
+
@container paylater-credit-btn ((max-width: 197px) and (min-height: 43px)) or ((max-width: 147px) and (max-height: 43px)) or ((max-width: 250px) and (min-height: 60px)) {
|
|
95
|
+
.${CLASS.BUTTON_LABEL} > .${CLASS.LOGO_REBRAND} {
|
|
96
|
+
display: none;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.${CLASS.BUTTON_LABEL} > .${CLASS.LOGO_PP_REBRAND} {
|
|
100
|
+
display: inline-block;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
80
103
|
`;
|