@licklist/design 0.58.6-dev.6 → 0.58.6-dev.7
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/assets/iframe/calendar.svg +2 -2
- package/dist/assets/iframe/calendar.svg.js +1 -1
- package/dist/assets/iframe/ticket.svg +2 -2
- package/dist/assets/iframe/ticket.svg.js +1 -1
- package/dist/iframe/order-process/components/BookingSummary/BookingSummary.d.ts +2 -2
- package/dist/iframe/order-process/components/BookingSummary/BookingSummary.d.ts.map +1 -1
- package/dist/iframe/order-process/components/BookingSummary/BookingSummary.js +1 -1
- package/dist/iframe/order-process/components/BookingSummary/components/BookingSummaryAccordion/BookingSummaryAccordion.d.ts +4 -2
- package/dist/iframe/order-process/components/BookingSummary/components/BookingSummaryAccordion/BookingSummaryAccordion.d.ts.map +1 -1
- package/dist/iframe/order-process/components/BookingSummary/components/BookingSummaryAccordion/BookingSummaryAccordion.js +1 -1
- package/dist/iframe/order-process/components/BookingSummary/components/SummaryTotal/components/SummaryTotalBlock.d.ts +1 -1
- package/dist/iframe/order-process/components/BookingSummary/components/SummaryTotal/components/SummaryTotalBlock.d.ts.map +1 -1
- package/dist/iframe/order-process/components/BookingSummary/components/SummaryTotal/components/SummaryTotalBlock.js +1 -1
- package/dist/iframe/order-process/components/BookingSummary/components/ToggleHeader/ToggleHeader.d.ts +4 -2
- package/dist/iframe/order-process/components/BookingSummary/components/ToggleHeader/ToggleHeader.d.ts.map +1 -1
- package/dist/iframe/order-process/components/BookingSummary/components/ToggleHeader/ToggleHeader.js +1 -1
- package/dist/iframe/order-process/components/BookingSummary/types/index.d.ts +4 -0
- package/dist/iframe/order-process/components/BookingSummary/types/index.d.ts.map +1 -1
- package/dist/iframe/page/components/PageBody/constants.d.ts +1 -0
- package/dist/iframe/page/components/PageBody/constants.d.ts.map +1 -1
- package/dist/iframe/page/components/PageBody/constants.js +1 -1
- package/dist/iframe/page/components/PageBody/hooks/useResizePageBody.d.ts.map +1 -1
- package/dist/iframe/page/components/PageBody/hooks/useResizePageBody.js +1 -1
- package/dist/iframe/payment/payment-page/PaymentPage.d.ts.map +1 -1
- package/dist/iframe/payment/payment-page/PaymentPage.js +1 -1
- package/dist/iframe/ryft/RyftPaymentForm.d.ts.map +1 -1
- package/dist/iframe/ryft/RyftPaymentForm.js +1 -1
- package/dist/iframe/ryft/utils/ryft-form.d.ts +5 -0
- package/dist/iframe/ryft/utils/ryft-form.d.ts.map +1 -0
- package/dist/iframe/ryft/utils/ryft-form.js +1 -0
- package/dist/styles/iframe-order-process/IframeOrderProcess.scss +57 -18
- package/dist/styles/iframe-page/PageBody.scss +2 -1
- package/dist/styles/ryft-payment-form/RyftPaymentForm.scss +125 -2
- package/package.json +1 -1
- package/src/assets/iframe/calendar.svg +2 -2
- package/src/assets/iframe/ticket.svg +2 -2
- package/src/iframe/order-process/components/BookingSummary/BookingSummary.stories.tsx +9 -0
- package/src/iframe/order-process/components/BookingSummary/BookingSummary.tsx +58 -7
- package/src/iframe/order-process/components/BookingSummary/components/BookingSummaryAccordion/BookingSummaryAccordion.tsx +8 -0
- package/src/iframe/order-process/components/BookingSummary/components/SummaryTotal/components/SummaryTotalBlock.tsx +4 -4
- package/src/iframe/order-process/components/BookingSummary/components/ToggleHeader/ToggleHeader.tsx +63 -10
- package/src/iframe/order-process/components/BookingSummary/types/index.ts +4 -0
- package/src/iframe/page/components/PageBody/constants.ts +2 -0
- package/src/iframe/page/components/PageBody/hooks/useResizePageBody.ts +10 -0
- package/src/iframe/payment/payment-page/PaymentPage.stories.tsx +546 -6
- package/src/iframe/payment/payment-page/PaymentPage.tsx +38 -29
- package/src/iframe/ryft/RyftPaymentForm.tsx +11 -5
- package/src/iframe/ryft/utils/ryft-form.ts +47 -0
- package/src/styles/iframe-order-process/IframeOrderProcess.scss +57 -18
- package/src/styles/iframe-page/PageBody.scss +2 -1
- package/src/styles/ryft-payment-form/RyftPaymentForm.scss +125 -2
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import React, { useEffect, useState } from "react";
|
|
1
|
+
import React, { useEffect, useRef, useState } from "react";
|
|
2
2
|
import { useTranslation } from "react-i18next";
|
|
3
3
|
import { useForm } from "react-hook-form";
|
|
4
|
-
import Form from "react-bootstrap/Form";
|
|
5
4
|
|
|
6
5
|
import Button from "react-bootstrap/Button";
|
|
7
6
|
import { useHistory } from "react-router-dom";
|
|
@@ -14,6 +13,7 @@ import {
|
|
|
14
13
|
AttemptPaymentResponse,
|
|
15
14
|
} from "@licklist/plugins/dist/hooks/Ryft/useRyftPayment";
|
|
16
15
|
import { BlockLoader, ButtonLoader } from "../../static";
|
|
16
|
+
import { injectComponentsInRyftForm } from "./utils/ryft-form";
|
|
17
17
|
|
|
18
18
|
export const ryftErrorMap: Record<string, string> = {
|
|
19
19
|
insufficient_funds: "insufficientFunds",
|
|
@@ -50,6 +50,7 @@ export const RyftPaymentForm = ({
|
|
|
50
50
|
onSubmit,
|
|
51
51
|
}: RyftPaymentFormProps) => {
|
|
52
52
|
const { t } = useTranslation(["Design", "Validation", "Ryft"]);
|
|
53
|
+
const formRef = useRef<HTMLFormElement | null>(null);
|
|
53
54
|
const history = useHistory();
|
|
54
55
|
|
|
55
56
|
const [isValid, setIsValid] = useState(false);
|
|
@@ -117,6 +118,12 @@ export const RyftPaymentForm = ({
|
|
|
117
118
|
}
|
|
118
119
|
};
|
|
119
120
|
|
|
121
|
+
useEffect(
|
|
122
|
+
() => injectComponentsInRyftForm({ t }),
|
|
123
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
124
|
+
[formRef.current?.childNodes?.length]
|
|
125
|
+
);
|
|
126
|
+
|
|
120
127
|
useEffect(() => {
|
|
121
128
|
if (!accountId.data || accountId.isError) return;
|
|
122
129
|
|
|
@@ -175,15 +182,14 @@ export const RyftPaymentForm = ({
|
|
|
175
182
|
|
|
176
183
|
return (
|
|
177
184
|
<>
|
|
178
|
-
<Form.Label>{t("Design:paymentDetails")}</Form.Label>
|
|
179
|
-
{/* For unknown reasons ryft doesn't work with bootstrap form */}
|
|
180
185
|
<form
|
|
186
|
+
ref={formRef}
|
|
181
187
|
id="ryft-pay-form"
|
|
182
188
|
noValidate
|
|
183
189
|
onSubmit={methods.handleSubmit(handleSubmit)}
|
|
184
190
|
className="ryft-payment-form"
|
|
185
191
|
>
|
|
186
|
-
<div className="submit-button-wrapper mt-
|
|
192
|
+
<div className="submit-button-wrapper mt-4 p-1">
|
|
187
193
|
<Button type="submit" disabled={isBtnDisabled || !isValid}>
|
|
188
194
|
{isBtnDisabled && <ButtonLoader />}
|
|
189
195
|
{t("Design:buyNow")}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { TFunction } from "react-i18next";
|
|
2
|
+
|
|
3
|
+
export const injectComponentsInRyftForm = ({
|
|
4
|
+
t,
|
|
5
|
+
}: {
|
|
6
|
+
t: TFunction<string[]>;
|
|
7
|
+
}) => {
|
|
8
|
+
const cardContainer = document.getElementById("ryft-pay-iframe");
|
|
9
|
+
const oldCardDividerContainer = document.getElementById(
|
|
10
|
+
"card-title-container"
|
|
11
|
+
);
|
|
12
|
+
|
|
13
|
+
if (!cardContainer || oldCardDividerContainer) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const cardTitle = document.createElement("div");
|
|
18
|
+
const cardText = document.createElement("div");
|
|
19
|
+
const cardTitleContainer = document.createElement("div");
|
|
20
|
+
cardTitleContainer.id = "card-title-container";
|
|
21
|
+
cardTitle.textContent = t("Design:enterCardDetails");
|
|
22
|
+
cardText.className = "bold-text form-label";
|
|
23
|
+
cardText.innerText = t("Design:paymentDetails");
|
|
24
|
+
cardTitleContainer.append(cardTitle, cardText);
|
|
25
|
+
cardContainer?.before(cardTitleContainer);
|
|
26
|
+
|
|
27
|
+
const payGrid = document.getElementById("ryft-pay-grid");
|
|
28
|
+
|
|
29
|
+
if (!payGrid) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Adding title and divider for apple and google pay button
|
|
34
|
+
const mobilePayTitle = document.createElement("div");
|
|
35
|
+
const dividerText = document.createElement("div");
|
|
36
|
+
const divider = document.createElement("div");
|
|
37
|
+
const container = document.createElement("div");
|
|
38
|
+
mobilePayTitle.className = "mobile-pay-title";
|
|
39
|
+
mobilePayTitle.innerText = t("Design:expressCheckoutWith");
|
|
40
|
+
dividerText.id = "mobile-pay-divider-text";
|
|
41
|
+
dividerText.innerText = "or";
|
|
42
|
+
divider.id = "mobile-pay-divider";
|
|
43
|
+
container.id = "mobile-pay-divider-container";
|
|
44
|
+
container.append(dividerText, divider);
|
|
45
|
+
payGrid.before(mobilePayTitle);
|
|
46
|
+
payGrid.after(container);
|
|
47
|
+
};
|
|
@@ -46,9 +46,8 @@
|
|
|
46
46
|
color: $snippet-page-header-steps-body-color;
|
|
47
47
|
transition: $color-transition;
|
|
48
48
|
margin-left: 0.5rem;
|
|
49
|
-
width: 6rem;
|
|
50
49
|
word-break: break-word;
|
|
51
|
-
font-size: 0.
|
|
50
|
+
font-size: 0.875rem;
|
|
52
51
|
|
|
53
52
|
@include media-breakpoint-down(sm) {
|
|
54
53
|
display: none;
|
|
@@ -62,6 +61,31 @@
|
|
|
62
61
|
font-weight: 400;
|
|
63
62
|
font-size: 0.875rem;
|
|
64
63
|
|
|
64
|
+
.payment-page-toggle {
|
|
65
|
+
p {
|
|
66
|
+
font-size: 1rem;
|
|
67
|
+
font-weight: 600;
|
|
68
|
+
}
|
|
69
|
+
.price {
|
|
70
|
+
font-weight: 700;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.payment-metadata {
|
|
75
|
+
font-weight: 500;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.total {
|
|
79
|
+
display: flex;
|
|
80
|
+
justify-content: space-between;
|
|
81
|
+
align-items: center;
|
|
82
|
+
|
|
83
|
+
div {
|
|
84
|
+
font-size: 1rem;
|
|
85
|
+
font-weight: 700;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
65
89
|
b {
|
|
66
90
|
display: block;
|
|
67
91
|
font-size: 1rem;
|
|
@@ -113,6 +137,15 @@
|
|
|
113
137
|
|
|
114
138
|
.cart-items {
|
|
115
139
|
font-weight: 400;
|
|
140
|
+
margin-bottom: 1.4rem;
|
|
141
|
+
border-bottom: 2px solid $separator-color;
|
|
142
|
+
|
|
143
|
+
.people {
|
|
144
|
+
margin-bottom: 0;
|
|
145
|
+
p {
|
|
146
|
+
margin-bottom: 0;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
116
149
|
|
|
117
150
|
.empty-cart {
|
|
118
151
|
margin: 1rem 0;
|
|
@@ -125,8 +158,11 @@
|
|
|
125
158
|
}
|
|
126
159
|
|
|
127
160
|
.products-by-menu-step {
|
|
161
|
+
margin-top: 1.4rem;
|
|
162
|
+
font-size: 0.875rem;
|
|
128
163
|
.title {
|
|
129
|
-
font-
|
|
164
|
+
font-size: 1rem;
|
|
165
|
+
font-weight: 600;
|
|
130
166
|
}
|
|
131
167
|
|
|
132
168
|
.categories {
|
|
@@ -136,8 +172,8 @@
|
|
|
136
172
|
}
|
|
137
173
|
|
|
138
174
|
.products {
|
|
139
|
-
margin-top:
|
|
140
|
-
|
|
175
|
+
margin-top: 1.4rem;
|
|
176
|
+
font-size: 0.875rem;
|
|
141
177
|
.product {
|
|
142
178
|
margin: 0.5rem 0;
|
|
143
179
|
|
|
@@ -148,6 +184,15 @@
|
|
|
148
184
|
margin-bottom: 0.5rem;
|
|
149
185
|
}
|
|
150
186
|
}
|
|
187
|
+
|
|
188
|
+
.name {
|
|
189
|
+
font-weight: 600;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
.price {
|
|
193
|
+
font-weight: 400;
|
|
194
|
+
font-size: 0.875rem;
|
|
195
|
+
}
|
|
151
196
|
}
|
|
152
197
|
|
|
153
198
|
&:not(:last-child) {
|
|
@@ -168,6 +213,12 @@
|
|
|
168
213
|
margin: 0 0 0.5rem;
|
|
169
214
|
|
|
170
215
|
.title {
|
|
216
|
+
font-size: 1rem;
|
|
217
|
+
font-weight: 600;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
.metadata {
|
|
221
|
+
font-size: 0.95rem;
|
|
171
222
|
font-weight: 600;
|
|
172
223
|
}
|
|
173
224
|
}
|
|
@@ -181,19 +232,7 @@
|
|
|
181
232
|
}
|
|
182
233
|
|
|
183
234
|
hr {
|
|
184
|
-
margin:
|
|
185
|
-
border-width: 2px;
|
|
186
|
-
border-color: $separator-color;
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
.products {
|
|
190
|
-
font-size: 0.75rem;
|
|
191
|
-
|
|
192
|
-
.product {
|
|
193
|
-
.name {
|
|
194
|
-
font-weight: 500;
|
|
195
|
-
}
|
|
196
|
-
}
|
|
235
|
+
margin-bottom: 1.5rem;
|
|
197
236
|
}
|
|
198
237
|
}
|
|
199
238
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// TODO when all iframe pages will be ready, think how we can combine it all in page-body style
|
|
1
2
|
.page-body {
|
|
2
3
|
display: flex;
|
|
3
4
|
background-color: transparent;
|
|
@@ -77,7 +78,7 @@
|
|
|
77
78
|
}
|
|
78
79
|
|
|
79
80
|
.right-block {
|
|
80
|
-
height:
|
|
81
|
+
height: 100%;
|
|
81
82
|
max-width: 17.5rem;
|
|
82
83
|
min-width: 17.5rem;
|
|
83
84
|
width: 100%;
|
|
@@ -1,10 +1,52 @@
|
|
|
1
1
|
.payment_link {
|
|
2
|
+
padding: 0 0 1rem 0;
|
|
3
|
+
|
|
4
|
+
.button-wrapper {
|
|
5
|
+
top: 2rem;
|
|
6
|
+
right: 2rem;
|
|
7
|
+
position: absolute;
|
|
8
|
+
z-index: 100;
|
|
9
|
+
}
|
|
10
|
+
|
|
2
11
|
.page-body {
|
|
12
|
+
padding: 0;
|
|
13
|
+
height: calc(100vh - 2rem) !important;
|
|
14
|
+
|
|
15
|
+
.navigation {
|
|
16
|
+
display: block;
|
|
17
|
+
@include media-breakpoint-down(sm) {
|
|
18
|
+
padding: 0;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.right-block {
|
|
23
|
+
margin-left: 0;
|
|
24
|
+
height: calc(100vh - 2rem);
|
|
25
|
+
max-height: calc(100vh - 1rem);
|
|
26
|
+
@include media-breakpoint-down(sm) {
|
|
27
|
+
width: calc(100% - 2rem);
|
|
28
|
+
max-width: unset;
|
|
29
|
+
position: inherit;
|
|
30
|
+
overflow: visible;
|
|
31
|
+
margin: 0 1rem 1rem;
|
|
32
|
+
height: unset;
|
|
33
|
+
min-height: unset;
|
|
34
|
+
max-height: 100%;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
3
38
|
.left-block {
|
|
4
39
|
.left-block-container {
|
|
5
40
|
position: relative;
|
|
6
41
|
max-height: 100%;
|
|
7
42
|
|
|
43
|
+
.payment-title {
|
|
44
|
+
font-size: 0.875rem;
|
|
45
|
+
font-weight: 600;
|
|
46
|
+
align-items: center;
|
|
47
|
+
margin-left: 0.5rem;
|
|
48
|
+
}
|
|
49
|
+
|
|
8
50
|
.ryft-payment-form {
|
|
9
51
|
.submit-button-wrapper {
|
|
10
52
|
margin: -1rem 0 1rem;
|
|
@@ -13,7 +55,55 @@
|
|
|
13
55
|
width: 100%;
|
|
14
56
|
}
|
|
15
57
|
}
|
|
58
|
+
#mobile-pay-divider-container {
|
|
59
|
+
display: flex;
|
|
60
|
+
position: relative;
|
|
61
|
+
margin-bottom: 1rem;
|
|
62
|
+
#mobile-pay-divider-text {
|
|
63
|
+
margin-right: 1rem;
|
|
64
|
+
font-size: 0.875rem;
|
|
65
|
+
font-weight: 600;
|
|
66
|
+
}
|
|
67
|
+
#mobile-pay-divider {
|
|
68
|
+
width: 100%;
|
|
69
|
+
border-bottom: 1px #dfdfdf solid;
|
|
70
|
+
margin-bottom: 0.6rem;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
16
73
|
|
|
74
|
+
#card-title-container {
|
|
75
|
+
height: auto;
|
|
76
|
+
border: none;
|
|
77
|
+
margin-bottom: 0.5rem;
|
|
78
|
+
text-align: left;
|
|
79
|
+
:first-child {
|
|
80
|
+
font-size: 1rem;
|
|
81
|
+
font-weight: 600;
|
|
82
|
+
margin-bottom: 1rem;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.form-label {
|
|
86
|
+
margin-bottom: 0.5rem;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
.mobile-pay-title {
|
|
90
|
+
display: block;
|
|
91
|
+
font-weight: 600;
|
|
92
|
+
font-size: 1rem;
|
|
93
|
+
color: black;
|
|
94
|
+
padding: 0;
|
|
95
|
+
font-style: normal;
|
|
96
|
+
font-family: inherit;
|
|
97
|
+
margin-bottom: 1rem;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
.form {
|
|
101
|
+
.input {
|
|
102
|
+
border: 2px solid #525252 !important;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.ryft-payment-form {
|
|
17
107
|
@include media-breakpoint-up(md) {
|
|
18
108
|
.submit-button-wrapper {
|
|
19
109
|
max-width: 15.5rem;
|
|
@@ -22,10 +112,9 @@
|
|
|
22
112
|
|
|
23
113
|
// it's style for Google and Apple pay container, for unknown reasons we can't move this html elements with appendChild or replaceChild
|
|
24
114
|
.ryft-pay-grid {
|
|
25
|
-
position: absolute !important;
|
|
26
|
-
top: 10rem;
|
|
27
115
|
width: 100%;
|
|
28
116
|
max-width: 15.5rem;
|
|
117
|
+
margin-bottom: 1rem;
|
|
29
118
|
}
|
|
30
119
|
.ryft-pay-apple-pay-button {
|
|
31
120
|
border-radius: 0.25rem;
|
|
@@ -36,6 +125,36 @@
|
|
|
36
125
|
display: none !important;
|
|
37
126
|
}
|
|
38
127
|
}
|
|
128
|
+
@include media-breakpoint-down(sm) {
|
|
129
|
+
.left-block-container {
|
|
130
|
+
max-height: 100%;
|
|
131
|
+
overflow: visible;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
@include media-breakpoint-down(sm) {
|
|
137
|
+
flex-direction: column-reverse;
|
|
138
|
+
overflow: scroll;
|
|
139
|
+
|
|
140
|
+
@include media-breakpoint-down(sm) {
|
|
141
|
+
.left-block {
|
|
142
|
+
min-height: 100%;
|
|
143
|
+
}
|
|
144
|
+
.right-block {
|
|
145
|
+
margin: 0 auto;
|
|
146
|
+
width: 100%;
|
|
147
|
+
.children-wrapper {
|
|
148
|
+
.accordion {
|
|
149
|
+
.collapse {
|
|
150
|
+
overflow: visible;
|
|
151
|
+
overflow-x: unset;
|
|
152
|
+
scrollbar-width: unset;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
39
158
|
}
|
|
40
159
|
}
|
|
41
160
|
::-webkit-scrollbar {
|
|
@@ -62,3 +181,7 @@
|
|
|
62
181
|
}
|
|
63
182
|
}
|
|
64
183
|
}
|
|
184
|
+
|
|
185
|
+
#ryft-threeDSMethodIframe {
|
|
186
|
+
display: none;
|
|
187
|
+
}
|