@licklist/design 0.58.6-dev.5 → 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.
Files changed (56) hide show
  1. package/dist/assets/iframe/calendar.svg +2 -2
  2. package/dist/assets/iframe/calendar.svg.js +1 -1
  3. package/dist/assets/iframe/ticket.svg +2 -2
  4. package/dist/assets/iframe/ticket.svg.js +1 -1
  5. package/dist/iframe/order-process/components/BookingSummary/BookingSummary.d.ts +2 -2
  6. package/dist/iframe/order-process/components/BookingSummary/BookingSummary.d.ts.map +1 -1
  7. package/dist/iframe/order-process/components/BookingSummary/BookingSummary.js +1 -1
  8. package/dist/iframe/order-process/components/BookingSummary/components/BookingSummaryAccordion/BookingSummaryAccordion.d.ts +4 -2
  9. package/dist/iframe/order-process/components/BookingSummary/components/BookingSummaryAccordion/BookingSummaryAccordion.d.ts.map +1 -1
  10. package/dist/iframe/order-process/components/BookingSummary/components/BookingSummaryAccordion/BookingSummaryAccordion.js +1 -1
  11. package/dist/iframe/order-process/components/BookingSummary/components/SummaryTotal/components/SummaryTotalBlock.d.ts +1 -1
  12. package/dist/iframe/order-process/components/BookingSummary/components/SummaryTotal/components/SummaryTotalBlock.d.ts.map +1 -1
  13. package/dist/iframe/order-process/components/BookingSummary/components/SummaryTotal/components/SummaryTotalBlock.js +1 -1
  14. package/dist/iframe/order-process/components/BookingSummary/components/ToggleHeader/ToggleHeader.d.ts +4 -2
  15. package/dist/iframe/order-process/components/BookingSummary/components/ToggleHeader/ToggleHeader.d.ts.map +1 -1
  16. package/dist/iframe/order-process/components/BookingSummary/components/ToggleHeader/ToggleHeader.js +1 -1
  17. package/dist/iframe/order-process/components/BookingSummary/types/index.d.ts +4 -0
  18. package/dist/iframe/order-process/components/BookingSummary/types/index.d.ts.map +1 -1
  19. package/dist/iframe/page/components/PageBody/constants.d.ts +1 -0
  20. package/dist/iframe/page/components/PageBody/constants.d.ts.map +1 -1
  21. package/dist/iframe/page/components/PageBody/constants.js +1 -1
  22. package/dist/iframe/page/components/PageBody/hooks/useResizePageBody.d.ts.map +1 -1
  23. package/dist/iframe/page/components/PageBody/hooks/useResizePageBody.js +1 -1
  24. package/dist/iframe/payment/payment-page/PaymentPage.d.ts.map +1 -1
  25. package/dist/iframe/payment/payment-page/PaymentPage.js +1 -1
  26. package/dist/iframe/ryft/RyftPaymentForm.d.ts.map +1 -1
  27. package/dist/iframe/ryft/RyftPaymentForm.js +1 -1
  28. package/dist/iframe/ryft/utils/ryft-form.d.ts +5 -0
  29. package/dist/iframe/ryft/utils/ryft-form.d.ts.map +1 -0
  30. package/dist/iframe/ryft/utils/ryft-form.js +1 -0
  31. package/dist/product-set/product/ProductControl.d.ts.map +1 -1
  32. package/dist/provider/working-hours-input/WorkingHoursInputDescription.d.ts.map +1 -1
  33. package/dist/provider/working-hours-input/WorkingHoursInputDescription.js +1 -1
  34. package/dist/styles/iframe-order-process/IframeOrderProcess.scss +57 -18
  35. package/dist/styles/iframe-page/PageBody.scss +2 -1
  36. package/dist/styles/ryft-payment-form/RyftPaymentForm.scss +125 -2
  37. package/package.json +1 -3
  38. package/src/assets/iframe/calendar.svg +2 -2
  39. package/src/assets/iframe/ticket.svg +2 -2
  40. package/src/iframe/order-process/components/BookingSummary/BookingSummary.stories.tsx +9 -0
  41. package/src/iframe/order-process/components/BookingSummary/BookingSummary.tsx +58 -7
  42. package/src/iframe/order-process/components/BookingSummary/components/BookingSummaryAccordion/BookingSummaryAccordion.tsx +8 -0
  43. package/src/iframe/order-process/components/BookingSummary/components/SummaryTotal/components/SummaryTotalBlock.tsx +4 -4
  44. package/src/iframe/order-process/components/BookingSummary/components/ToggleHeader/ToggleHeader.tsx +63 -10
  45. package/src/iframe/order-process/components/BookingSummary/types/index.ts +4 -0
  46. package/src/iframe/page/components/PageBody/constants.ts +2 -0
  47. package/src/iframe/page/components/PageBody/hooks/useResizePageBody.ts +10 -0
  48. package/src/iframe/payment/payment-page/PaymentPage.stories.tsx +546 -6
  49. package/src/iframe/payment/payment-page/PaymentPage.tsx +38 -29
  50. package/src/iframe/ryft/RyftPaymentForm.tsx +11 -5
  51. package/src/iframe/ryft/utils/ryft-form.ts +47 -0
  52. package/src/product-set/product/ProductControl.tsx +5 -3
  53. package/src/provider/working-hours-input/WorkingHoursInputDescription.tsx +4 -18
  54. package/src/styles/iframe-order-process/IframeOrderProcess.scss +57 -18
  55. package/src/styles/iframe-page/PageBody.scss +2 -1
  56. 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-3 p-1">
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
+ };
@@ -7,7 +7,10 @@ import {
7
7
  QUANTITY_TYPE_LIST_DTO,
8
8
  QUANTITY_TYPE_RECHARGING,
9
9
  } from "@licklist/core/dist/DataMapper/Product/ProductCategoryDataMapper";
10
- import { ProductType } from "@licklist/core/dist/DataMapper/Product/ProductDataMapper";
10
+ import {
11
+ ProductType,
12
+ PRODUCT_DEfAULT_COLORS,
13
+ } from "@licklist/core/dist/DataMapper/Product/ProductDataMapper";
11
14
  import HookFormService from "@licklist/plugins/dist/services/Form/HookFormService";
12
15
  import clsx from "clsx";
13
16
  import {
@@ -36,7 +39,7 @@ import {
36
39
  } from "react-hook-form";
37
40
  import { useTranslation } from "react-i18next";
38
41
  import { useImages } from "@licklist/plugins/dist/hooks/Media/useImages";
39
- import { PRODUCT_DEfAULT_COLORS } from "@licklist/core/dist/DataMapper/Product/ProductDataMapper";
42
+
40
43
  import {
41
44
  Image,
42
45
  IMAGE_TYPE_IMAGE,
@@ -69,7 +72,6 @@ import { ProductDurationControl } from "./duration";
69
72
  import { ProductPriceControl } from "./price";
70
73
  import { MAX_PRODUCT_DESCRIPTION_CHARACTERS_LENGTH } from "./constants";
71
74
 
72
-
73
75
  // TO DO refactor this file
74
76
  // and add correct types
75
77
  export interface ProductControlValues
@@ -1,9 +1,7 @@
1
- import { DateTime } from "luxon";
2
1
  import React from "react";
3
2
  import { Col, Row } from "react-bootstrap";
4
3
  import { useFormContext } from "react-hook-form";
5
4
  import { useTranslation } from "react-i18next";
6
- import { TIME_FORMAT } from "@licklist/core/dist/Config";
7
5
  import { WorkingHoursInputValues } from ".";
8
6
  import { useWeekdays } from "./utils";
9
7
 
@@ -25,22 +23,10 @@ export function WorkingHoursInputDescription() {
25
23
  <Row key={i}>
26
24
  <Col xs="auto">{weekdays[i]}:</Col>
27
25
  <Col>
28
- {weekday?.end
29
- ? weekday.start
30
- ? t("timeInterval", {
31
- start: DateTime.fromISO(weekday.start).toFormat(
32
- TIME_FORMAT
33
- ),
34
- end: DateTime.fromISO(weekday.start).toFormat(
35
- TIME_FORMAT
36
- ),
37
- })
38
- : t("timeFrom", {
39
- start: DateTime.fromISO(weekday.start).toFormat(
40
- TIME_FORMAT
41
- ),
42
- })
43
- : null}
26
+ {t("timeInterval", {
27
+ start: weekday.start,
28
+ end: weekday.end,
29
+ })}
44
30
  </Col>
45
31
  </Row>
46
32
  );
@@ -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.75rem;
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-weight: 500;
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: 0.5rem;
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: 0;
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: calc(100% - 1rem);
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
+ }