@openeventkit/event-site 2.1.49 → 2.1.51

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 (135) hide show
  1. package/gatsby-node.js +21 -4
  2. package/package.json +3 -3
  3. package/src/actions/user-actions.js +9 -10
  4. package/src/cms/config/collections/configurationsCollection/siteSettings/index.js +21 -0
  5. package/src/cms/config/collections/configurationsCollection/siteSettings/typeDefs.js +5 -0
  6. package/src/cms/config/collections/contentPagesCollection/index.js +11 -1
  7. package/src/cms/config/collections/contentPagesCollection/typeDefs.js +1 -0
  8. package/src/cms/config/collections/defaultPagesCollection/marketingPage/index.js +2 -6
  9. package/src/cms/config/collections/defaultPagesCollection/marketingPage/typeDefs.js +0 -1
  10. package/src/cms/preview-templates/ContentPagePreview.js +12 -1
  11. package/src/components/AuthComponent.js +2 -1
  12. package/src/components/MarketingHero/MainColumn.js +23 -11
  13. package/src/components/RegisterButton.js +59 -0
  14. package/src/components/RegistrationFormShortcode.js +82 -0
  15. package/src/components/RegistrationModalComponent.js +124 -0
  16. package/src/components/VimeoPlayer.js +2 -2
  17. package/src/content/marketing-page/index.json +1 -2
  18. package/src/content/site-settings/index.json +1 -1
  19. package/src/content/sponsors.json +1 -1
  20. package/src/pages/index.js +0 -1
  21. package/src/styles/register-page.module.scss +23 -0
  22. package/src/templates/content-page/shortcodes.js +3 -5
  23. package/src/templates/extra-questions-page.js +1 -1
  24. package/src/templates/full-profile-page.js +2 -3
  25. package/src/templates/register-page.js +96 -0
  26. package/src/utils/alerts.js +34 -27
  27. package/src/utils/customErrorHandler.js +4 -4
  28. package/src/utils/registrationConstants.js +7 -0
  29. package/src/utils/ticketConstants.js +10 -0
  30. package/src/utils/useRegistrationWidgetProps.js +204 -0
  31. package/src/utils/useSiteSettings.js +4 -0
  32. package/.playwright-mcp/console-2026-02-26T16-44-19-373Z.log +0 -4
  33. package/.playwright-mcp/console-2026-02-26T16-47-01-636Z.log +0 -2
  34. package/.playwright-mcp/console-2026-02-26T16-49-02-149Z.log +0 -4
  35. package/.playwright-mcp/console-2026-02-26T16-49-40-507Z.log +0 -2
  36. package/.playwright-mcp/console-2026-02-26T16-50-19-509Z.log +0 -2
  37. package/.playwright-mcp/console-2026-02-26T16-57-54-251Z.log +0 -3
  38. package/.playwright-mcp/console-2026-02-26T19-57-40-442Z.log +0 -1
  39. package/.playwright-mcp/console-2026-02-26T19-57-58-088Z.log +0 -2
  40. package/.playwright-mcp/console-2026-02-26T20-05-42-541Z.log +0 -2
  41. package/.playwright-mcp/console-2026-02-26T20-06-33-506Z.log +0 -9
  42. package/.playwright-mcp/console-2026-02-26T20-42-10-293Z.log +0 -34
  43. package/.playwright-mcp/console-2026-02-26T20-42-57-262Z.log +0 -65
  44. package/.playwright-mcp/console-2026-02-26T21-01-25-696Z.log +0 -33
  45. package/.playwright-mcp/console-2026-02-26T21-03-18-294Z.log +0 -47
  46. package/.playwright-mcp/console-2026-02-27T00-27-06-325Z.log +0 -131
  47. package/.playwright-mcp/console-2026-02-27T00-49-26-441Z.log +0 -104
  48. package/.playwright-mcp/page-2026-02-26T16-51-33-776Z.png +0 -0
  49. package/src/components/RegistrationLiteComponent.js +0 -293
  50. package/src/components/summit-my-orders-tickets/components/ConfirmPopup/ConfirmPopup.js +0 -96
  51. package/src/components/summit-my-orders-tickets/components/ConfirmPopup/confirm-popup.scss +0 -57
  52. package/src/components/summit-my-orders-tickets/components/DelegatePopup/DelegatePopup.js +0 -50
  53. package/src/components/summit-my-orders-tickets/components/DelegatePopup/delegate-popup.scss +0 -57
  54. package/src/components/summit-my-orders-tickets/components/MyOrdersTickets.js +0 -79
  55. package/src/components/summit-my-orders-tickets/components/OrderDetails/OrderDetails.js +0 -112
  56. package/src/components/summit-my-orders-tickets/components/OrderDetails/order-details.scss +0 -128
  57. package/src/components/summit-my-orders-tickets/components/OrderList/OrderList.js +0 -80
  58. package/src/components/summit-my-orders-tickets/components/OrderList/OrderListItem.js +0 -85
  59. package/src/components/summit-my-orders-tickets/components/OrderList/order-list.scss +0 -60
  60. package/src/components/summit-my-orders-tickets/components/OrderOptions/OrderOptions.js +0 -83
  61. package/src/components/summit-my-orders-tickets/components/OrderOptions/order-options.scss +0 -50
  62. package/src/components/summit-my-orders-tickets/components/OrderSummary/OrderSummary.js +0 -64
  63. package/src/components/summit-my-orders-tickets/components/OrderSummary/OrderSummaryTable.js +0 -97
  64. package/src/components/summit-my-orders-tickets/components/OrderSummary/order-summary.scss +0 -178
  65. package/src/components/summit-my-orders-tickets/components/OrderTicketDetails/OrderTicketDetails.js +0 -102
  66. package/src/components/summit-my-orders-tickets/components/OrderTicketDetails/order-ticket-details.scss +0 -129
  67. package/src/components/summit-my-orders-tickets/components/OrderTicketList/OrderTicketList.js +0 -19
  68. package/src/components/summit-my-orders-tickets/components/OrderTicketList/OrderTicketListItem.js +0 -13
  69. package/src/components/summit-my-orders-tickets/components/OrderTicketList/order-ticket-list.scss +0 -21
  70. package/src/components/summit-my-orders-tickets/components/TicketDetails/TicketDetails.js +0 -93
  71. package/src/components/summit-my-orders-tickets/components/TicketDetails/ticket-details.scss +0 -129
  72. package/src/components/summit-my-orders-tickets/components/TicketList/TicketList.js +0 -65
  73. package/src/components/summit-my-orders-tickets/components/TicketList/TicketListItem.js +0 -16
  74. package/src/components/summit-my-orders-tickets/components/TicketList/ticket-list.scss +0 -21
  75. package/src/components/summit-my-orders-tickets/components/TicketPopup/TicketPopup.js +0 -186
  76. package/src/components/summit-my-orders-tickets/components/TicketPopup/TicketPopupAssignForm.js +0 -136
  77. package/src/components/summit-my-orders-tickets/components/TicketPopup/TicketPopupEditDetailsForm/TicketPopupEditDetailsForm.js +0 -468
  78. package/src/components/summit-my-orders-tickets/components/TicketPopup/TicketPopupEditDetailsForm/ticket-popup-edit-details-form.scss +0 -71
  79. package/src/components/summit-my-orders-tickets/components/TicketPopup/TicketPopupNotifyForm.js +0 -64
  80. package/src/components/summit-my-orders-tickets/components/TicketPopup/TicketPopupReassignForm.js +0 -193
  81. package/src/components/summit-my-orders-tickets/components/TicketPopup/TicketPopupRefundForm.js +0 -64
  82. package/src/components/summit-my-orders-tickets/components/TicketPopup/ticket-popup.scss +0 -416
  83. package/src/components/summit-my-orders-tickets/context/TicketAssignedContext.js +0 -24
  84. package/src/components/summit-my-orders-tickets/global/constants.js +0 -10
  85. package/src/components/summit-my-orders-tickets/i18n/index.js +0 -37
  86. package/src/components/summit-my-orders-tickets/i18n/locales/en.json +0 -296
  87. package/src/components/summit-my-orders-tickets/i18n/locales/es.json +0 -296
  88. package/src/components/summit-my-orders-tickets/index.js +0 -1
  89. package/src/components/summit-my-orders-tickets/store/actions/base-actions.js +0 -7
  90. package/src/components/summit-my-orders-tickets/store/actions/order-actions.js +0 -96
  91. package/src/components/summit-my-orders-tickets/store/actions/summit-actions.js +0 -64
  92. package/src/components/summit-my-orders-tickets/store/actions/ticket-actions.js +0 -666
  93. package/src/components/summit-my-orders-tickets/store/actions/timer-actions.js +0 -29
  94. package/src/components/summit-my-orders-tickets/store/actions/user-actions.js +0 -42
  95. package/src/components/summit-my-orders-tickets/store/history.js +0 -16
  96. package/src/components/summit-my-orders-tickets/store/index.js +0 -117
  97. package/src/components/summit-my-orders-tickets/store/reducers/base-reducer.js +0 -67
  98. package/src/components/summit-my-orders-tickets/store/reducers/clock-reducer.js +0 -31
  99. package/src/components/summit-my-orders-tickets/store/reducers/order-reducer.js +0 -95
  100. package/src/components/summit-my-orders-tickets/store/reducers/summit-reducer.js +0 -52
  101. package/src/components/summit-my-orders-tickets/store/reducers/ticket-reducer.js +0 -92
  102. package/src/components/summit-my-orders-tickets/store/reducers/user-reducer.js +0 -35
  103. package/src/components/summit-my-orders-tickets/styles/_variables.scss +0 -17
  104. package/src/components/summit-my-orders-tickets/styles/general.scss +0 -17
  105. package/src/components/summit-my-orders-tickets/summit-my-orders-tickets.js +0 -86
  106. package/src/components/summit-my-orders-tickets/util/helpers/capitalizeFirstLetter.js +0 -1
  107. package/src/components/summit-my-orders-tickets/util/helpers/createReducer.js +0 -11
  108. package/src/components/summit-my-orders-tickets/util/helpers/formatCurrency.js +0 -15
  109. package/src/components/summit-my-orders-tickets/util/helpers/getDayNumberFromDate.js +0 -9
  110. package/src/components/summit-my-orders-tickets/util/helpers/getDaysBetweenDates.js +0 -16
  111. package/src/components/summit-my-orders-tickets/util/helpers/getDocumentOffset.js +0 -8
  112. package/src/components/summit-my-orders-tickets/util/helpers/getFormattedDate.js +0 -7
  113. package/src/components/summit-my-orders-tickets/util/helpers/getFormattedTime.js +0 -9
  114. package/src/components/summit-my-orders-tickets/util/helpers/getWindowScroll.js +0 -6
  115. package/src/components/summit-my-orders-tickets/util/helpers/index.js +0 -22
  116. package/src/components/summit-my-orders-tickets/util/index.js +0 -5
  117. package/src/components/summit-my-orders-tickets/util/order/calculateOrderTotals.js +0 -28
  118. package/src/components/summit-my-orders-tickets/util/order/getOrderStatusData.js +0 -71
  119. package/src/components/summit-my-orders-tickets/util/order/index.js +0 -2
  120. package/src/components/summit-my-orders-tickets/util/summit/checkSummitPast.js +0 -10
  121. package/src/components/summit-my-orders-tickets/util/summit/checkSummitStarted.js +0 -5
  122. package/src/components/summit-my-orders-tickets/util/summit/getSummitFormattedDate.js +0 -29
  123. package/src/components/summit-my-orders-tickets/util/summit/getSummitFormattedReassignDate.js +0 -8
  124. package/src/components/summit-my-orders-tickets/util/summit/getSummitLocation.js +0 -9
  125. package/src/components/summit-my-orders-tickets/util/summit/getSummitReassignDate.js +0 -7
  126. package/src/components/summit-my-orders-tickets/util/summit/index.js +0 -7
  127. package/src/components/summit-my-orders-tickets/util/summit/useSummitDetails.js +0 -36
  128. package/src/components/summit-my-orders-tickets/util/ticket/getTicketRole.js +0 -11
  129. package/src/components/summit-my-orders-tickets/util/ticket/getTicketStatusData.js +0 -48
  130. package/src/components/summit-my-orders-tickets/util/ticket/getTicketType.js +0 -1
  131. package/src/components/summit-my-orders-tickets/util/ticket/index.js +0 -4
  132. package/src/components/summit-my-orders-tickets/util/ticket/useTicketDetails.js +0 -60
  133. package/src/components/summit-my-orders-tickets/util/timer/index.js +0 -1
  134. package/src/components/summit-my-orders-tickets/util/timer/useNow.js +0 -8
  135. package/src/templates/login-page.js +0 -49
@@ -1,79 +0,0 @@
1
- import React, { useEffect, useState } from 'react';
2
- import { useDispatch, useSelector, shallowEqual } from 'react-redux';
3
- import { useTranslation } from "react-i18next";
4
- import classNames from 'classnames';
5
- import AjaxLoader from "openstack-uicore-foundation/lib/components/ajaxloader";
6
- import { getUserOrders } from '../store/actions/order-actions';
7
- import { getUserTickets } from '../store/actions/ticket-actions';
8
- import { OrderList } from './OrderList/OrderList';
9
- import { TicketList } from './TicketList/TicketList';
10
-
11
- export const MyOrdersTickets = ({ className }) => {
12
- const { t } = useTranslation();
13
- const dispatch = useDispatch();
14
-
15
- const userState = useSelector(state => state.userState || {}, shallowEqual);
16
- const orderState = useSelector(state => state.orderState || {}, shallowEqual);
17
- const ticketState = useSelector(state => state.ticketState || {}, shallowEqual);
18
- const summitState = useSelector(state => state.summitState || {}, shallowEqual);
19
- const globalState = useSelector(state => state.globalState || {}, shallowEqual);
20
-
21
- const [isInitializing, setIsInitializing] = useState(true);
22
-
23
- const fetchData = async () => {
24
- setIsInitializing(true);
25
- dispatch(getUserOrders({ page: orderState.current_page, perPage: orderState.per_page }))
26
- .then(() => {
27
- dispatch(getUserTickets({ page: ticketState.current_page, perPage: ticketState.per_page }))
28
- .then(() => setIsInitializing(false))
29
- .catch((e) => {
30
- console.log(e);
31
- setIsInitializing(false);
32
- })
33
- }).catch((e) => {
34
- console.log(e);
35
- setIsInitializing(false);
36
- })
37
- };
38
-
39
- useEffect(() => {
40
- fetchData();
41
- }, []);
42
-
43
- const isLoading = isInitializing || userState.loading || orderState.loading || ticketState.loading || summitState.loading;
44
- const hasOrders = orderState.memberOrders?.length > 0;
45
- const hasTickets = ticketState.memberTickets?.length > 0;
46
-
47
- return (
48
- <>
49
- <AjaxLoader show={isLoading} size={120} />
50
-
51
- {isLoading && (!hasOrders && !hasTickets) && (
52
- <div className="orders-tickets-loading">
53
- <p>{t('orders-tickets.loading')}</p>
54
- </div>
55
- )}
56
-
57
- {!isLoading && (!hasOrders && !hasTickets) && (
58
- <div className="orders-tickets-empty">
59
- <h2>{t('orders-tickets.empty-title')}</h2>
60
- <p dangerouslySetInnerHTML={{ __html: t('orders-tickets.empty-text', { support_email : globalState.supportEmail }) }}></p>
61
- </div>
62
- )}
63
-
64
- <div className={classNames('my-orders-tickets', className)}>
65
- {hasOrders && (
66
- <OrderList />
67
- )}
68
-
69
- {(hasOrders && hasTickets) && (
70
- <hr className="orders-tickets-divider" />
71
- )}
72
-
73
- {hasTickets && (
74
- <TicketList />
75
- )}
76
- </div>
77
- </>
78
- );
79
- };
@@ -1,112 +0,0 @@
1
- import React, { useEffect, useRef } from "react"
2
- import { useDispatch, useSelector } from "react-redux";
3
- import { useTranslation } from "react-i18next";
4
- import classNames from 'classnames';
5
- import { getNow } from "../../store/actions/timer-actions";
6
- import {
7
- checkSummitPast,
8
- getDocumentOffset,
9
- getFormattedDate,
10
- getOrderStatusData,
11
- getSummitFormattedDate,
12
- formatCurrency
13
- } from "../../util";
14
- import { setActiveOrderId } from "../../store/actions/order-actions";
15
-
16
- import './order-details.scss';
17
-
18
- export const OrderDetails = ({ order, summit, className }) => {
19
- const elementRef = useRef(null);
20
-
21
- const { t } = useTranslation();
22
- const dispatch = useDispatch();
23
-
24
- const {
25
- activeOrderId
26
- } = useSelector(state => state.orderState || {});
27
-
28
- const isSummitPast = checkSummitPast(summit, dispatch(getNow()));
29
- const statusData = getOrderStatusData(order, isSummitPast);
30
- const isActive = activeOrderId === order.id;
31
-
32
- const handleSetOrderActive = (orderId) => dispatch(setActiveOrderId( orderId ));
33
-
34
- const handleClick = (event) => {
35
- if (isActive) return handleSetOrderActive(null);
36
-
37
- handleSetOrderActive(order.id);
38
-
39
- setTimeout(() => {
40
- const offset = getDocumentOffset(elementRef.current);
41
-
42
- window.scroll({
43
- top: offset.top - 30,
44
- behavior: 'smooth'
45
- });
46
- }, 50);
47
- };
48
-
49
- // Clear active order on unmount (i.e., when page pagination changes)
50
- useEffect(() => () => setActiveOrderId(null), []);
51
-
52
- return (
53
- <div
54
- ref={elementRef}
55
- className={classNames(
56
- 'order-details',
57
- `order-details--${statusData.className}`,
58
- { 'order-details--active': isActive },
59
- className
60
- )}
61
- onClick={handleClick}
62
- >
63
- <i className={classNames(`order-details__icon fa fa-2x ${statusData.icon}`)} />
64
-
65
- <div className="order-details__content">
66
- <div className="order-details__header">
67
- <h4 className="order-details__event-name">
68
- {summit.name}
69
- <br />
70
- {getSummitFormattedDate(summit)}
71
- </h4>
72
-
73
- <p className="order-details__status">
74
- {statusData.text}
75
- </p>
76
- </div>
77
-
78
- <div className="order-details__meta">
79
- <h5 className="order-details__purchase-date">
80
- {t("orders.purchased")}{` `}
81
- {getFormattedDate(order.created)}
82
- </h5>
83
-
84
- <ul className="order-details__tickets">
85
- {Object.keys(order.tickets_excerpt_by_ticket_type).map((ticket, index) => {
86
- return (
87
- <li key={index}>
88
- x{order.tickets_excerpt_by_ticket_type[ticket]} {ticket}
89
- </li>
90
- )
91
- })}
92
- </ul>
93
-
94
- <div className="order-details__number">
95
- {order.number}
96
- </div>
97
- </div>
98
- </div>
99
-
100
- <div className="order-details__footer">
101
- <h4 className="order-details__amount">{formatCurrency(order.amount, { currency: order.currency })}</h4>
102
- <i className={classNames(
103
- 'order-details__arrow fa',
104
- {
105
- 'fa-angle-down': !isActive,
106
- 'fa-angle-up': isActive
107
- }
108
- )} />
109
- </div>
110
- </div>
111
- );
112
- };
@@ -1,128 +0,0 @@
1
- @import "../../styles/variables";
2
-
3
- .order-details {
4
- position: relative;
5
- display: flex;
6
- flex-flow: row nowrap;
7
- background-color: var(--color_background_light);
8
- border: 1px solid var(--color_gray_light);
9
- border-radius: 4px;
10
- min-height: 6em;
11
- padding: 16px 16px 16px 32px;
12
- cursor: pointer;
13
- gap: 12px;
14
-
15
- @media screen and (min-width: 768px) {
16
- padding-left: 48px;
17
- }
18
-
19
- &:hover {
20
-
21
- background-color: var(--color_gray_lightest);
22
- }
23
-
24
- &--active {
25
- color: var(--color_text_med);
26
- background-color: var(--color_gray_lighter) !important;
27
- }
28
-
29
- * {
30
- margin: 0;
31
- }
32
-
33
- ul {
34
- padding: 0;
35
- list-style-type: none;
36
- }
37
-
38
- &__content {
39
- display: flex;
40
- flex-direction: column;
41
- flex-basis: calc(80% - 6px);
42
- max-width: calc(80% - 6px);
43
- gap: 12px;
44
-
45
- @media screen and (min-width: 768px) {
46
- flex-flow: row nowrap;
47
- }
48
- }
49
-
50
- &__footer {
51
- display: flex;
52
- flex-direction: column;
53
- justify-content: space-between;
54
- flex-basis: calc(20% - 6px);
55
- max-width: calc(20% - 6px);
56
- text-align: right;
57
- }
58
-
59
- &__arrow {
60
- margin-bottom: -4px;
61
- }
62
-
63
- &__header,
64
- &__meta {
65
- display: flex;
66
- flex-direction: column;
67
- gap: 12px;
68
-
69
- @media screen and (min-width: 768px) {
70
- flex-basis: calc(50% - 6px);
71
- max-width: calc(50% - 6px);
72
- }
73
- }
74
-
75
- &__icon {
76
- position: absolute;
77
- top: 20px;
78
- left: -12px;
79
-
80
- &::before {
81
- background: $color-white;
82
- border-radius: 50%;
83
- height: 1em;
84
- width: 1em;
85
- }
86
- }
87
-
88
- &__status {
89
- margin-top: auto;
90
- font-size: 0.7em;
91
- color: $color-black;
92
- text-transform: uppercase;
93
- margin-top: auto;
94
- }
95
-
96
- &__number {
97
- word-wrap: break-word;
98
- }
99
-
100
- &--warning {
101
- border-color: $color-warning;
102
- }
103
-
104
- &--warning &__icon,
105
- &--warning &__status {
106
- color: $color-warning;
107
- }
108
-
109
- &--complete &__icon,
110
- &--complete &__status {
111
- color: $color-success;
112
- }
113
-
114
- &--unset &__icon,
115
- &--unset &__status {
116
- color: $color-black;
117
- }
118
-
119
- &--pending &__icon,
120
- &--pending &__status {
121
- color: $color-black;
122
- }
123
-
124
- &--cancel &__icon,
125
- &--cancel &__status {
126
- color: $color-danger;
127
- }
128
- }
@@ -1,80 +0,0 @@
1
- import React, { useEffect } from "react"
2
- import { useDispatch, useSelector } from 'react-redux';
3
- import Pager from '../../../Pager/index';
4
- import { useTranslation } from "react-i18next";
5
- import classNames from 'classnames';
6
- import { getUserOrders } from "../../store/actions/order-actions";
7
- import { getTicketsByOrder } from "../../store/actions/ticket-actions";
8
- import { OrderListItem } from './OrderListItem';
9
-
10
- import './order-list.scss';
11
-
12
- export const OrderList = ({ className }) => {
13
- const { t } = useTranslation();
14
- const dispatch = useDispatch();
15
-
16
- const {
17
- memberOrders: orders,
18
- current_page: currentPage,
19
- last_page: lastPage,
20
- per_page: perPage,
21
- activeOrderId,
22
- total
23
- } = useSelector(state => state.orderState || {});
24
-
25
- const {
26
- orderTickets: {
27
- current_page: orderTicketsCurrentPage,
28
- }
29
- } = useSelector(state => state.ticketState || {});
30
-
31
- const handlePageChange = (page) => dispatch(getUserOrders({ page, perPage }));
32
-
33
- const handleTicketPageChange = (orderId, page) => dispatch(getTicketsByOrder({ orderId, page }));
34
-
35
- const hasOrders = orders.length > 0;
36
- const hasMultiplePages = total > perPage;
37
-
38
- useEffect(() => {
39
- if(activeOrderId) fetchData(activeOrderId);
40
- }, [activeOrderId])
41
-
42
- if (!hasOrders) return null;
43
-
44
-
45
- const fetchData = async (orderId) => {
46
- await dispatch(getTicketsByOrder({ orderId, orderTicketsCurrentPage }));
47
- };
48
-
49
- return (
50
- <>
51
- <h2 className="order-list__title">
52
- {t("orders.title")}
53
- </h2>
54
-
55
- <ul className={classNames('order-list', className)}>
56
- {orders.map(order => (
57
- <OrderListItem key={order.id} order={order} changeTicketsPage={handleTicketPageChange} />
58
- ))}
59
- </ul>
60
-
61
- {hasMultiplePages && (
62
- <div className="order-list__pagination">
63
-
64
- <div className="row">
65
- <div className="col-md-8">
66
- <Pager
67
- totPages={lastPage}
68
- currentPage={currentPage}
69
- items={orders}
70
- pageClicked={(ele) => {
71
- handlePageChange(ele);
72
- }}
73
- />
74
- </div>
75
- </div>
76
- </div>
77
- )}
78
- </>
79
- );
80
- };
@@ -1,85 +0,0 @@
1
- import React from "react";
2
- import { useSelector } from 'react-redux';
3
- import classNames from 'classnames';
4
- import { OrderDetails } from '../OrderDetails/OrderDetails';
5
- import { OrderSummary } from '../OrderSummary/OrderSummary';
6
- import { OrderTicketList } from '../OrderTicketList/OrderTicketList';
7
- import { OrderOptions } from "../OrderOptions/OrderOptions";
8
- import Pager from "../../../Pager";
9
-
10
- export const OrderListItem = ({ order, className, changeTicketsPage }) => {
11
- const summit = useSelector(state => state.summitState.summit);
12
-
13
- const {
14
- orderTickets: {
15
- total, per_page, current_page, last_page, tickets
16
- },
17
- loading,
18
- } = useSelector(state => state.ticketState || {});
19
-
20
- const {
21
- activeOrderId,
22
- isOrderLoading
23
- } = useSelector(state => state.orderState || {});
24
-
25
- const isActive = activeOrderId === order.id;
26
-
27
- return (
28
- <li className={classNames('order-list__item', { 'order-list__item--active': isActive }, className)}>
29
- <div className="order-list__item__content row">
30
- <div className="col-md-8">
31
- <OrderDetails order={order} summit={summit} />
32
-
33
- {!isOrderLoading && isActive && tickets.length > 0 && (
34
- <>
35
- <OrderSummary type="mobile" order={order} summit={summit} tickets={tickets}/>
36
-
37
- {summit.ticket_types.map((ticketType, index) => {
38
- const orderTickets = tickets.filter(t => t.ticket_type.id == ticketType.id);
39
-
40
- if (orderTickets.length < 1) return null;
41
-
42
- return (
43
- <OrderTicketList
44
- key={index}
45
- ticketType={ticketType}
46
- tickets={orderTickets}
47
- summit={summit}
48
- order={order}
49
- />
50
- )
51
- })}
52
-
53
- {total > 5 &&(
54
- <div className="order-list__pagination">
55
-
56
- <div className="row">
57
- <div className="col-md-12">
58
- <Pager
59
- totPages={last_page}
60
- currentPage={current_page}
61
- items={tickets}
62
- pageClicked={(ele) => {
63
- changeTicketsPage(order.id, ele);
64
- }}
65
- />
66
- </div>
67
- </div>
68
- </div>
69
- )}
70
- </>
71
- )}
72
- </div>
73
-
74
- <div className="col-md-4">
75
- {isActive && tickets.length > 0 && (
76
- <div className="order-list__item__sidebar">
77
- <OrderSummary order={order} summit={summit} tickets={tickets} />
78
- <OrderOptions order={order} summit={summit} />
79
- </div>
80
- )}
81
- </div>
82
- </div>
83
- </li>
84
- );
85
- };
@@ -1,60 +0,0 @@
1
- @import "../../styles/variables";
2
-
3
- .order-list {
4
- &__title {
5
- margin-top: 30px;
6
- margin-bottom: 30px;
7
- }
8
-
9
- &__pagination {
10
- margin: 30px 0;
11
- text-align: center;
12
-
13
- .pagination {
14
- margin: 0;
15
- }
16
- }
17
-
18
- &__item {
19
- position: relative;
20
- margin-bottom: 15px;
21
-
22
- &--active {
23
- margin-top: 30px;
24
- margin-bottom: 30px;
25
- padding-top: 30px;
26
- padding-bottom: 30px;
27
- border-top: 1px solid $color-gray-light;
28
- border-bottom: 1px solid $color-gray-light;
29
- }
30
-
31
- &:first-child {
32
- margin-top: 0 !important;
33
- padding-top: 0 !important;
34
- border-top: 0 !important;
35
- }
36
-
37
- &:last-child {
38
- margin-bottom: 0 !important;
39
- padding-bottom: 0 !important;
40
- border-bottom: 0 !important;
41
- }
42
-
43
- &__content {
44
- position: relative;
45
-
46
- @media screen and (min-width: 992px) {
47
- display: flex;
48
- }
49
- }
50
-
51
- &__sidebar {
52
- position: sticky;
53
- top: 30px;
54
- }
55
-
56
- [class*="col-"] {
57
- position: static;
58
- }
59
- }
60
- }
@@ -1,83 +0,0 @@
1
- import React, { useState } from 'react';
2
- import { useDispatch, useSelector } from 'react-redux';
3
- import { useTranslation } from "react-i18next";
4
- import classNames from 'classnames';
5
- import { CSSTransition } from "react-transition-group";
6
- import Alert from 'react-bootstrap/lib/Alert';
7
- import { getSummitFormattedDate, getSummitLocation, getTicketRole, getTicketType } from '../../util';
8
- import { cancelOrder } from '../../store/actions/order-actions';
9
- import { getNow } from '../../store/actions/timer-actions';
10
- import { ConfirmPopup, CONFIRM_POPUP_CASE } from '../ConfirmPopup/ConfirmPopup';
11
-
12
- import './order-options.scss';
13
-
14
- export const OrderOptions = ({ order, summit, ticket, className }) => {
15
- const { t } = useTranslation();
16
- const dispatch = useDispatch();
17
- const supportEmail = useSelector(state => state.globalState?.supportEmail || '');
18
- const [showConfirm, setShowConfirm] = useState(false);
19
- const [showRefundSuccess, setShowRefundSuccess] = useState(false);
20
- const now = dispatch(getNow());
21
-
22
- const handleCancelClick = () => setShowConfirm(true);
23
-
24
- const handleConfirmAccept = () => {
25
- dispatch(cancelOrder({ order })).then(() => {
26
- setTimeout(() => setShowRefundSuccess(true), 500);
27
- setTimeout(() => setShowRefundSuccess(false), 5000);
28
- }).catch(() => { });
29
-
30
- setShowConfirm(false);
31
- };
32
-
33
- const handleConfirmReject = () => setShowConfirm(false);
34
-
35
- if (!summit) return null;
36
-
37
- return (
38
- <>
39
- <div className={classNames('order-options', className)}>
40
- <CSSTransition
41
- unmountOnExit
42
- in={showRefundSuccess}
43
- timeout={2000}
44
- classNames="fade-in-out"
45
- >
46
- <>
47
- <br />
48
- <Alert bsStyle="success">
49
- {t("tickets.refund_request_success_message")}
50
- </Alert>
51
- </>
52
- </CSSTransition>
53
-
54
- {
55
-
56
- (summit.registration_allowed_refund_request_till_date ?
57
- summit.registration_allowed_refund_request_till_date > now
58
- :
59
- summit.start_date > now
60
- ) &&
61
- order &&
62
- order?.status === 'Paid' &&
63
- order?.amount > 0 &&
64
- order?.amount > order?.refunded_amount && (
65
- <button onClick={handleCancelClick} className="order-option cancel">
66
- {t("order_info.cancel_order")}
67
- </button>
68
- )}
69
-
70
- <a className="order-option cancel" target="_blank" href={`mailto:${supportEmail}`}>
71
- {t("order_info.email_support")}
72
- </a>
73
- </div>
74
-
75
- <ConfirmPopup
76
- isOpen={showConfirm}
77
- popupCase={CONFIRM_POPUP_CASE.CANCEL_ORDER}
78
- onAccept={handleConfirmAccept}
79
- onReject={handleConfirmReject}
80
- />
81
- </>
82
- );
83
- };
@@ -1,50 +0,0 @@
1
- @import "../../styles/variables";
2
-
3
- .order-info-wrapper,
4
- .order-option {
5
- font-weight: bold;
6
- padding: 15px;
7
- margin-top: 20px;
8
- border: 1px solid $color-gray-light;
9
- }
10
-
11
- .order-info-wrapper {
12
- margin-top: 20px;
13
-
14
- @media (max-width: 768px) {
15
- margin-bottom: 100px;
16
- }
17
-
18
- .info {
19
- font-weight: normal;
20
-
21
- h4 {
22
- font-weight: bold;
23
- }
24
-
25
- .role-badge {
26
- text-transform: uppercase;
27
- }
28
- }
29
-
30
- &:empty {
31
- display: none;
32
- }
33
- }
34
-
35
- .order-option {
36
- display: block;
37
- width: 100%;
38
- text-align: center;
39
- line-height: 2em;
40
- cursor: pointer;
41
- background-color: transparent;
42
-
43
- &:hover {
44
- background-color: $color-gray-lightest;
45
- }
46
-
47
- &.cancel {
48
- color: $color-danger;
49
- }
50
- }