@licklist/design 0.58.6-dev.1 → 0.58.6-dev.10

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 (101) 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/calendar/Calendar.d.ts +1 -1
  6. package/dist/calendar/Calendar.d.ts.map +1 -1
  7. package/dist/calendar/Calendar.js +1 -1
  8. package/dist/calendar/components/CalendarButtons/CalendarButtons.js +1 -1
  9. package/dist/calendar/components/CalendarDates/CalendarDates.d.ts +2 -2
  10. package/dist/calendar/components/CalendarDates/CalendarDates.d.ts.map +1 -1
  11. package/dist/calendar/components/CalendarDates/CalendarDates.js +1 -1
  12. package/dist/events/edit-event-modal/component/EditEventForm/EditEventForm.js +1 -1
  13. package/dist/events/event-statistic-modal/EventStatisticModal.js +1 -1
  14. package/dist/iframe/event/event-venue-map/IframeEventVenueMap.js +1 -1
  15. package/dist/iframe/order-process/components/BookingSummary/BookingSummary.d.ts +2 -2
  16. package/dist/iframe/order-process/components/BookingSummary/BookingSummary.d.ts.map +1 -1
  17. package/dist/iframe/order-process/components/BookingSummary/BookingSummary.js +1 -1
  18. package/dist/iframe/order-process/components/BookingSummary/components/BookingSummaryAccordion/BookingSummaryAccordion.d.ts +4 -2
  19. package/dist/iframe/order-process/components/BookingSummary/components/BookingSummaryAccordion/BookingSummaryAccordion.d.ts.map +1 -1
  20. package/dist/iframe/order-process/components/BookingSummary/components/BookingSummaryAccordion/BookingSummaryAccordion.js +1 -1
  21. package/dist/iframe/order-process/components/BookingSummary/components/SummaryTotal/components/SummaryTotalBlock.d.ts +1 -1
  22. package/dist/iframe/order-process/components/BookingSummary/components/SummaryTotal/components/SummaryTotalBlock.d.ts.map +1 -1
  23. package/dist/iframe/order-process/components/BookingSummary/components/SummaryTotal/components/SummaryTotalBlock.js +1 -1
  24. package/dist/iframe/order-process/components/BookingSummary/components/ToggleHeader/ToggleHeader.d.ts +4 -2
  25. package/dist/iframe/order-process/components/BookingSummary/components/ToggleHeader/ToggleHeader.d.ts.map +1 -1
  26. package/dist/iframe/order-process/components/BookingSummary/components/ToggleHeader/ToggleHeader.js +1 -1
  27. package/dist/iframe/order-process/components/BookingSummary/types/index.d.ts +4 -0
  28. package/dist/iframe/order-process/components/BookingSummary/types/index.d.ts.map +1 -1
  29. package/dist/iframe/order-process/components/CalendarStepsForm/CalendarStepsForm.js +1 -1
  30. package/dist/iframe/page/components/PageBody/components/LeftBlock/LeftBlock.js +1 -1
  31. package/dist/iframe/page/components/PageBody/constants.d.ts +1 -0
  32. package/dist/iframe/page/components/PageBody/constants.d.ts.map +1 -1
  33. package/dist/iframe/page/components/PageBody/constants.js +1 -1
  34. package/dist/iframe/page/components/PageBody/hooks/useResizePageBody.d.ts.map +1 -1
  35. package/dist/iframe/page/components/PageBody/hooks/useResizePageBody.js +1 -1
  36. package/dist/iframe/payment/order-items-table/OrderItemsTable.js +1 -1
  37. package/dist/iframe/payment/payment-form/PaymentForm.js +1 -1
  38. package/dist/iframe/payment/payment-page/PaymentPage.d.ts.map +1 -1
  39. package/dist/iframe/payment/payment-page/PaymentPage.js +1 -1
  40. package/dist/iframe/payment/payment-page/PaymentTimer.js +1 -1
  41. package/dist/iframe/payment/payment-status-page/PaymentStatusPage.js +1 -1
  42. package/dist/iframe/ryft/RyftPaymentForm.d.ts.map +1 -1
  43. package/dist/iframe/ryft/RyftPaymentForm.js +1 -1
  44. package/dist/iframe/ryft/utils/ryft-form.d.ts +5 -0
  45. package/dist/iframe/ryft/utils/ryft-form.d.ts.map +1 -0
  46. package/dist/iframe/ryft/utils/ryft-form.js +1 -0
  47. package/dist/index.js +1 -1
  48. package/dist/product-set/card/ProductSetCard.d.ts.map +1 -1
  49. package/dist/product-set/card/ProductSetCard.js +1 -1
  50. package/dist/product-set/control/DateInput.d.ts.map +1 -1
  51. package/dist/product-set/control/DateInput.js +1 -1
  52. package/dist/product-set/form/VenueMapsControl.js +1 -1
  53. package/dist/product-set/product/ProductControl.d.ts +1 -0
  54. package/dist/product-set/product/ProductControl.d.ts.map +1 -1
  55. package/dist/product-set/product/ProductControl.js +1 -1
  56. package/dist/product-set/product-category/ProductCategoryControl.d.ts +1 -0
  57. package/dist/product-set/product-category/ProductCategoryControl.d.ts.map +1 -1
  58. package/dist/product-set/product-category/ProductCategoryControl.js +1 -1
  59. package/dist/provider/working-hours-input/WorkingHoursInputDescription.d.ts.map +1 -1
  60. package/dist/provider/working-hours-input/WorkingHoursInputDescription.js +1 -1
  61. package/dist/recurring-date-picker-input/RecurrenceAndFrequencyInput.js +1 -1
  62. package/dist/sales/booking/results/components/ResultCard.js +1 -1
  63. package/dist/sales/notes/NotesTableRow.js +1 -1
  64. package/dist/setting/dashboard/snippets/card/SnippetCard.js +1 -1
  65. package/dist/snippet/snippet-template/control/PropertyControl.d.ts +3 -1
  66. package/dist/snippet/snippet-template/control/PropertyControl.d.ts.map +1 -1
  67. package/dist/snippet/snippet-template/control/PropertyControl.js +1 -1
  68. package/dist/snippet/snippet-template/preview/Preview.js +1 -1
  69. package/dist/striped-static-table/StripedStaticTable.js +1 -1
  70. package/dist/styles/iframe-order-process/IframeOrderProcess.scss +57 -18
  71. package/dist/styles/iframe-page/PageBody.scss +2 -1
  72. package/dist/styles/ryft-payment-form/RyftPaymentForm.scss +125 -2
  73. package/dist/venue-map-sets/form/components/VenueMapImageControl.js +1 -1
  74. package/package.json +3 -5
  75. package/src/assets/iframe/calendar.svg +2 -2
  76. package/src/assets/iframe/ticket.svg +2 -2
  77. package/src/calendar/Calendar.stories.tsx +23 -0
  78. package/src/calendar/Calendar.tsx +5 -5
  79. package/src/calendar/components/CalendarDates/CalendarDates.tsx +0 -5
  80. package/src/iframe/order-process/components/BookingSummary/BookingSummary.stories.tsx +9 -0
  81. package/src/iframe/order-process/components/BookingSummary/BookingSummary.tsx +58 -7
  82. package/src/iframe/order-process/components/BookingSummary/components/BookingSummaryAccordion/BookingSummaryAccordion.tsx +8 -0
  83. package/src/iframe/order-process/components/BookingSummary/components/SummaryTotal/components/SummaryTotalBlock.tsx +4 -4
  84. package/src/iframe/order-process/components/BookingSummary/components/ToggleHeader/ToggleHeader.tsx +63 -10
  85. package/src/iframe/order-process/components/BookingSummary/types/index.ts +4 -0
  86. package/src/iframe/page/components/PageBody/constants.ts +2 -0
  87. package/src/iframe/page/components/PageBody/hooks/useResizePageBody.ts +10 -0
  88. package/src/iframe/payment/payment-page/PaymentPage.stories.tsx +546 -6
  89. package/src/iframe/payment/payment-page/PaymentPage.tsx +38 -29
  90. package/src/iframe/ryft/RyftPaymentForm.tsx +11 -5
  91. package/src/iframe/ryft/utils/ryft-form.ts +47 -0
  92. package/src/product-set/card/ProductSetCard.tsx +5 -3
  93. package/src/product-set/control/DateInput.tsx +7 -3
  94. package/src/product-set/product/ProductControl.tsx +25 -3
  95. package/src/product-set/product-category/ProductCategoryControl.tsx +105 -43
  96. package/src/provider/working-hours-input/WorkingHoursInputDescription.tsx +4 -18
  97. package/src/recurring-date-picker-input/RecurrenceAndFrequencyInput.tsx +1 -1
  98. package/src/snippet/snippet-template/control/PropertyControl.tsx +6 -2
  99. package/src/styles/iframe-order-process/IframeOrderProcess.scss +57 -18
  100. package/src/styles/iframe-page/PageBody.scss +2 -1
  101. package/src/styles/ryft-payment-form/RyftPaymentForm.scss +125 -2
@@ -8,6 +8,8 @@ import { ProductsByMenuStep } from "./components/ProductsByMenuStep";
8
8
  import { BookingSummaryProps } from "./types";
9
9
  import { SummaryTotal } from "./components/SummaryTotal";
10
10
  import { BookingSummaryAccordion } from "./components/BookingSummaryAccordion";
11
+ import { ReactComponent as TicketIcon } from "../../../../assets/iframe/ticket.svg";
12
+ import { ReactComponent as CalendarIcon } from "../../../../assets/iframe/calendar.svg";
11
13
 
12
14
  export const BookingSummary = ({
13
15
  date,
@@ -22,6 +24,10 @@ export const BookingSummary = ({
22
24
  hasPeopleInput,
23
25
  isPaymentLink,
24
26
  peopleAmount,
27
+ footer,
28
+ headerComponent,
29
+ // TODO Remove this, when all iframe pages will be ready
30
+ isPaymentPage,
25
31
  }: Omit<BookingSummaryProps, "totallWithDiscount">) => {
26
32
  const { t } = useTranslation("Design");
27
33
  const { formatNumber } = useIntl();
@@ -36,11 +42,18 @@ export const BookingSummary = ({
36
42
 
37
43
  return (
38
44
  <div className="payment-booking-summary">
39
- <BookingSummaryAccordion hasPeopleInput={hasPeopleInput}>
45
+ <BookingSummaryAccordion
46
+ isPaymentPage={isPaymentPage}
47
+ hasPeopleInput={hasPeopleInput}
48
+ headerComponent={headerComponent}
49
+ >
40
50
  <div className="event-info">
41
- <p className="m-0 title event-name">{eventName}</p>
42
- <p className="m-0">{date}</p>
43
- {time && <p className="m-0">{time}</p>}
51
+ <EventInfo
52
+ eventName={eventName}
53
+ isPaymentPage={isPaymentPage}
54
+ date={date}
55
+ time={time}
56
+ />
44
57
  </div>
45
58
  <hr />
46
59
 
@@ -62,8 +75,8 @@ export const BookingSummary = ({
62
75
  {!shouldHidePeopleAmount && peopleAmount > 0 && (
63
76
  <>
64
77
  <hr />
65
- <div className="d-flex justify-content-between mt-3">
66
- <p className="m-0">{t("people")}:</p>
78
+ <div className="d-flex justify-content-between mt-3 people">
79
+ <p className="m-0 payment-metadata">{t("people")}:</p>
67
80
  <p className="price">{peopleAmount}</p>
68
81
  </div>
69
82
  </>
@@ -73,7 +86,9 @@ export const BookingSummary = ({
73
86
  <>
74
87
  <hr />
75
88
  <div className="d-flex justify-content-between mt-3">
76
- <p className="m-0">{t("transactionFee")}:</p>
89
+ <p className="m-0 payment-metadata">
90
+ {t("transactionFee")}:
91
+ </p>
77
92
  <p className="price">
78
93
  {formatNumber(transactionFee, {
79
94
  style: "currency",
@@ -84,6 +99,7 @@ export const BookingSummary = ({
84
99
  </>
85
100
  )}
86
101
  </div>
102
+ {footer}
87
103
  </div>
88
104
  ) : (
89
105
  <div className="cart-items">
@@ -97,3 +113,38 @@ export const BookingSummary = ({
97
113
 
98
114
  BookingSummary.SummaryTotal = SummaryTotal;
99
115
  BookingSummary.Accordion = BookingSummaryAccordion;
116
+
117
+ const EventInfo = ({
118
+ isPaymentPage,
119
+ eventName,
120
+ date,
121
+ time,
122
+ }: Pick<
123
+ BookingSummaryProps,
124
+ "date" | "time" | "eventName" | "isPaymentPage"
125
+ >) => {
126
+ if (isPaymentPage) {
127
+ return (
128
+ <>
129
+ <div className="d-flex align-items-center mb-5">
130
+ <TicketIcon height={16} width={20} fill="black" />
131
+ <div className="m-0 pl-2 title event-name metadata">{eventName}</div>
132
+ </div>
133
+
134
+ <div className="d-flex align-items-center mb-5">
135
+ <CalendarIcon height={16} width={20} fill="black" />
136
+ <div className="m-0 pl-2 metadata">{date}</div>
137
+ </div>
138
+ {time && <div className="mb-5 metadata">{time}</div>}
139
+ </>
140
+ );
141
+ }
142
+
143
+ return (
144
+ <>
145
+ <p className="m-0 title event-name">{eventName}</p>
146
+ <p className="m-0">{date}</p>
147
+ {time && <p className="m-0">{time}</p>}
148
+ </>
149
+ );
150
+ };
@@ -3,6 +3,7 @@ import React, {
3
3
  useCallback,
4
4
  PropsWithChildren,
5
5
  useEffect,
6
+ ReactElement,
6
7
  } from "react";
7
8
  import { Accordion } from "react-bootstrap";
8
9
  import { useWindowDimensions } from "@licklist/plugins/dist/hooks/Media/useWindowDimensions";
@@ -20,6 +21,9 @@ export type BookingSummaryAccordionProps = PropsWithChildren<{
20
21
  title?: string;
21
22
  showTitleOnlyOnMobile?: boolean;
22
23
  hasPeopleInput?: boolean;
24
+ // TODO Remove this, when all iframe pages will be ready
25
+ isPaymentPage?: boolean;
26
+ headerComponent?: ReactElement;
23
27
  }>;
24
28
 
25
29
  export const BookingSummaryAccordion = ({
@@ -27,6 +31,8 @@ export const BookingSummaryAccordion = ({
27
31
  title,
28
32
  showTitleOnlyOnMobile = false,
29
33
  hasPeopleInput,
34
+ isPaymentPage,
35
+ headerComponent,
30
36
  }: BookingSummaryAccordionProps) => {
31
37
  const { width } = useWindowDimensions();
32
38
  const [isExpanded, setIsExpanded] = useState(width <= MOBILE_WIDTH);
@@ -68,10 +74,12 @@ export const BookingSummaryAccordion = ({
68
74
  return (
69
75
  <Accordion defaultActiveKey={ACCORDION_KEY} onSelect={onSelect}>
70
76
  <ToggleHeader
77
+ isPaymentPage={isPaymentPage}
71
78
  showExpandButton={showExpandButton}
72
79
  isExpanded={isExpanded}
73
80
  title={title}
74
81
  hideComponent={!showToggleHeader}
82
+ headerComponent={headerComponent}
75
83
  />
76
84
  <Accordion.Collapse
77
85
  eventKey={ACCORDION_KEY}
@@ -3,7 +3,7 @@ import { useIntl } from "react-intl";
3
3
  import * as Config from "@licklist/core/dist/Config";
4
4
 
5
5
  export type SummaryTotalBlockProps = {
6
- label: string;
6
+ label?: string;
7
7
  amount: number;
8
8
  };
9
9
 
@@ -15,13 +15,13 @@ export const SummaryTotalBlock = ({
15
15
 
16
16
  return (
17
17
  <div className="total">
18
- <p className="m-0">{label}</p>
19
- <p className="m-0 price">
18
+ {label && <div>{label}</div>}
19
+ <div className="m-0 price">
20
20
  {formatNumber(amount, {
21
21
  style: "currency",
22
22
  currency: Config.Currency.GBP,
23
23
  })}
24
- </p>
24
+ </div>
25
25
  </div>
26
26
  );
27
27
  };
@@ -1,4 +1,4 @@
1
- import React, { useContext, useEffect } from "react";
1
+ import React, { ReactElement, useContext, useEffect } from "react";
2
2
  import { useTranslation } from "react-i18next";
3
3
  import { useAccordionToggle } from "react-bootstrap/AccordionToggle";
4
4
  import AccordionContext from "react-bootstrap/AccordionContext";
@@ -11,15 +11,23 @@ type ToggleHeaderProps = {
11
11
  isExpanded: boolean;
12
12
  title?: string;
13
13
  hideComponent?: boolean;
14
+ headerComponent?: ReactElement;
15
+ isPaymentPage: boolean;
14
16
  };
15
17
 
18
+ interface HeaderContentProps
19
+ extends Omit<ToggleHeaderProps, "hideComponent" | "isExpanded"> {
20
+ currentEventKey: string;
21
+ }
22
+
16
23
  export const ToggleHeader = ({
17
24
  showExpandButton,
18
25
  isExpanded,
19
26
  title,
20
27
  hideComponent,
28
+ isPaymentPage,
29
+ headerComponent,
21
30
  }: ToggleHeaderProps) => {
22
- const { t } = useTranslation("Design");
23
31
  const currentEventKey = useContext(AccordionContext);
24
32
 
25
33
  const decoratedOnClick = useAccordionToggle(ACCORDION_KEY);
@@ -46,14 +54,41 @@ export const ToggleHeader = ({
46
54
  onKeyPress={(event) => showExpandButton && decoratedOnClick(event)}
47
55
  role="button"
48
56
  tabIndex={0}
49
- className="d-flex flex-column"
57
+ className={clsx(
58
+ "d-flex flex-column",
59
+ isPaymentPage && "payment-page-toggle"
60
+ )}
50
61
  >
51
62
  <h6 className={clsx("title", showExpandButton && "pointer")}>
52
63
  <div className="d-flex w-100 align-content-center justify-content-between">
53
- <div className="d-flex">
54
- <p className="m-0">{title || t("yourBooking")}</p>
55
- </div>
64
+ <HeaderContent
65
+ showExpandButton={showExpandButton}
66
+ title={title}
67
+ currentEventKey={currentEventKey}
68
+ isPaymentPage={isPaymentPage}
69
+ headerComponent={headerComponent}
70
+ />
71
+ </div>
72
+ </h6>
73
+ {isExpanded && <hr className="mt-3" />}
74
+ </div>
75
+ );
76
+ };
56
77
 
78
+ const HeaderContent = ({
79
+ title,
80
+ showExpandButton,
81
+ currentEventKey,
82
+ isPaymentPage,
83
+ headerComponent,
84
+ }: HeaderContentProps) => {
85
+ const { t } = useTranslation("Design");
86
+
87
+ if (isPaymentPage) {
88
+ return (
89
+ <>
90
+ <div className="d-flex">
91
+ <p className="m-0 mr-2 toggle-title">{title || t("yourBooking")}</p>
57
92
  {showExpandButton && (
58
93
  <div className="expand-button">
59
94
  <Icon
@@ -62,13 +97,31 @@ export const ToggleHeader = ({
62
97
  ? "chevron-up"
63
98
  : "chevron-down"
64
99
  }
65
- width="1rem"
100
+ width="0.5rem"
66
101
  />
67
102
  </div>
68
103
  )}
69
104
  </div>
70
- </h6>
71
- {isExpanded && <hr className="mt-3" />}
72
- </div>
105
+ {headerComponent}
106
+ </>
107
+ );
108
+ }
109
+ return (
110
+ <>
111
+ <div className="d-flex">
112
+ <p className="m-0">{title || t("yourBooking")}</p>
113
+ </div>
114
+
115
+ {showExpandButton && (
116
+ <div className="expand-button">
117
+ <Icon
118
+ type={
119
+ currentEventKey === ACCORDION_KEY ? "chevron-up" : "chevron-down"
120
+ }
121
+ width="1rem"
122
+ />
123
+ </div>
124
+ )}
125
+ </>
73
126
  );
74
127
  };
@@ -1,6 +1,7 @@
1
1
  import { QuantityCheckProductInfo } from "@licklist/plugins/dist/types/Api/verifyStock";
2
2
  import { OrderItems } from "@licklist/plugins/dist/types/context/Iframe/orderItems";
3
3
  import { MenuStep } from "@licklist/plugins/dist/types/context/sale/menuSteps";
4
+ import { ReactElement } from "react";
4
5
 
5
6
  export const MOBILE_WIDTH = 576;
6
7
  export const ACCORDION_KEY = "booking-summary";
@@ -20,4 +21,7 @@ export type BookingSummaryProps = {
20
21
  isLoading?: boolean;
21
22
  peopleAmount: number;
22
23
  isPaymentLink?: boolean;
24
+ isPaymentPage?: boolean;
25
+ headerComponent?: ReactElement;
26
+ footer?: ReactElement;
23
27
  };
@@ -25,4 +25,6 @@ export const COLLAPSE_MARGIN = 36;
25
25
 
26
26
  export const PAGE_LEFT_BLOCK_CONTAINER_ID = "page-left-block-container";
27
27
  export const PAGE_CALENDAR_SELECT_WRAPPER = "calendar-select-wrapper";
28
+ export const PAGE_BODY_WITH_SCROLL = "page-body-with-scroll";
29
+
28
30
  export const PAGE_LEFT_BLOCK_MAP_DEFAULT_SIZE = 300;
@@ -16,6 +16,7 @@ import {
16
16
  PAGE_LEFT_BLOCK_CONTAINER_ID,
17
17
  PAGE_LEFT_BLOCK_MAP_DEFAULT_SIZE,
18
18
  PAGE_CALENDAR_SELECT_WRAPPER,
19
+ PAGE_BODY_WITH_SCROLL,
19
20
  } from "../constants";
20
21
  import { ChangeRightBlockHeightEvent } from "../types";
21
22
 
@@ -46,10 +47,19 @@ export const useResizePageBody = () => {
46
47
  const calenderWrapper = document.getElementById(
47
48
  PAGE_CALENDAR_SELECT_WRAPPER
48
49
  );
50
+
49
51
  const CALENDAR_WRAPPER_HEIGHT = calenderWrapper
50
52
  ? calenderWrapper.clientHeight
51
53
  : 0;
52
54
 
55
+ const paymentLinkPageBody = document.getElementById(PAGE_BODY_WITH_SCROLL);
56
+ if (paymentLinkPageBody) {
57
+ paymentLinkPageBody.scroll({
58
+ top: -height,
59
+ behavior: "smooth",
60
+ });
61
+ }
62
+
53
63
  return {
54
64
  maxHeight:
55
65
  height -