@openeventkit/event-site 2.1.49 → 2.1.50

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 (114) hide show
  1. package/package.json +2 -2
  2. package/src/actions/user-actions.js +9 -10
  3. package/src/components/RegistrationLiteComponent.js +1 -1
  4. package/src/components/VimeoPlayer.js +2 -2
  5. package/src/content/site-settings/index.json +1 -1
  6. package/src/content/sponsors.json +1 -1
  7. package/src/styles/colors.scss +11 -11
  8. package/src/templates/extra-questions-page.js +1 -1
  9. package/src/templates/full-profile-page.js +2 -3
  10. package/src/utils/alerts.js +34 -27
  11. package/src/utils/customErrorHandler.js +4 -4
  12. package/src/utils/ticketConstants.js +10 -0
  13. package/.playwright-mcp/console-2026-02-26T16-44-19-373Z.log +0 -4
  14. package/.playwright-mcp/console-2026-02-26T16-47-01-636Z.log +0 -2
  15. package/.playwright-mcp/console-2026-02-26T16-49-02-149Z.log +0 -4
  16. package/.playwright-mcp/console-2026-02-26T16-49-40-507Z.log +0 -2
  17. package/.playwright-mcp/console-2026-02-26T16-50-19-509Z.log +0 -2
  18. package/.playwright-mcp/console-2026-02-26T16-57-54-251Z.log +0 -3
  19. package/.playwright-mcp/console-2026-02-26T19-57-40-442Z.log +0 -1
  20. package/.playwright-mcp/console-2026-02-26T19-57-58-088Z.log +0 -2
  21. package/.playwright-mcp/console-2026-02-26T20-05-42-541Z.log +0 -2
  22. package/.playwright-mcp/console-2026-02-26T20-06-33-506Z.log +0 -9
  23. package/.playwright-mcp/console-2026-02-26T20-42-10-293Z.log +0 -34
  24. package/.playwright-mcp/console-2026-02-26T20-42-57-262Z.log +0 -65
  25. package/.playwright-mcp/console-2026-02-26T21-01-25-696Z.log +0 -33
  26. package/.playwright-mcp/console-2026-02-26T21-03-18-294Z.log +0 -47
  27. package/.playwright-mcp/console-2026-02-27T00-27-06-325Z.log +0 -131
  28. package/.playwright-mcp/console-2026-02-27T00-49-26-441Z.log +0 -104
  29. package/.playwright-mcp/page-2026-02-26T16-51-33-776Z.png +0 -0
  30. package/src/components/summit-my-orders-tickets/components/ConfirmPopup/ConfirmPopup.js +0 -96
  31. package/src/components/summit-my-orders-tickets/components/ConfirmPopup/confirm-popup.scss +0 -57
  32. package/src/components/summit-my-orders-tickets/components/DelegatePopup/DelegatePopup.js +0 -50
  33. package/src/components/summit-my-orders-tickets/components/DelegatePopup/delegate-popup.scss +0 -57
  34. package/src/components/summit-my-orders-tickets/components/MyOrdersTickets.js +0 -79
  35. package/src/components/summit-my-orders-tickets/components/OrderDetails/OrderDetails.js +0 -112
  36. package/src/components/summit-my-orders-tickets/components/OrderDetails/order-details.scss +0 -128
  37. package/src/components/summit-my-orders-tickets/components/OrderList/OrderList.js +0 -80
  38. package/src/components/summit-my-orders-tickets/components/OrderList/OrderListItem.js +0 -85
  39. package/src/components/summit-my-orders-tickets/components/OrderList/order-list.scss +0 -60
  40. package/src/components/summit-my-orders-tickets/components/OrderOptions/OrderOptions.js +0 -83
  41. package/src/components/summit-my-orders-tickets/components/OrderOptions/order-options.scss +0 -50
  42. package/src/components/summit-my-orders-tickets/components/OrderSummary/OrderSummary.js +0 -64
  43. package/src/components/summit-my-orders-tickets/components/OrderSummary/OrderSummaryTable.js +0 -97
  44. package/src/components/summit-my-orders-tickets/components/OrderSummary/order-summary.scss +0 -178
  45. package/src/components/summit-my-orders-tickets/components/OrderTicketDetails/OrderTicketDetails.js +0 -102
  46. package/src/components/summit-my-orders-tickets/components/OrderTicketDetails/order-ticket-details.scss +0 -129
  47. package/src/components/summit-my-orders-tickets/components/OrderTicketList/OrderTicketList.js +0 -19
  48. package/src/components/summit-my-orders-tickets/components/OrderTicketList/OrderTicketListItem.js +0 -13
  49. package/src/components/summit-my-orders-tickets/components/OrderTicketList/order-ticket-list.scss +0 -21
  50. package/src/components/summit-my-orders-tickets/components/TicketDetails/TicketDetails.js +0 -93
  51. package/src/components/summit-my-orders-tickets/components/TicketDetails/ticket-details.scss +0 -129
  52. package/src/components/summit-my-orders-tickets/components/TicketList/TicketList.js +0 -65
  53. package/src/components/summit-my-orders-tickets/components/TicketList/TicketListItem.js +0 -16
  54. package/src/components/summit-my-orders-tickets/components/TicketList/ticket-list.scss +0 -21
  55. package/src/components/summit-my-orders-tickets/components/TicketPopup/TicketPopup.js +0 -186
  56. package/src/components/summit-my-orders-tickets/components/TicketPopup/TicketPopupAssignForm.js +0 -136
  57. package/src/components/summit-my-orders-tickets/components/TicketPopup/TicketPopupEditDetailsForm/TicketPopupEditDetailsForm.js +0 -468
  58. package/src/components/summit-my-orders-tickets/components/TicketPopup/TicketPopupEditDetailsForm/ticket-popup-edit-details-form.scss +0 -71
  59. package/src/components/summit-my-orders-tickets/components/TicketPopup/TicketPopupNotifyForm.js +0 -64
  60. package/src/components/summit-my-orders-tickets/components/TicketPopup/TicketPopupReassignForm.js +0 -193
  61. package/src/components/summit-my-orders-tickets/components/TicketPopup/TicketPopupRefundForm.js +0 -64
  62. package/src/components/summit-my-orders-tickets/components/TicketPopup/ticket-popup.scss +0 -416
  63. package/src/components/summit-my-orders-tickets/context/TicketAssignedContext.js +0 -24
  64. package/src/components/summit-my-orders-tickets/global/constants.js +0 -10
  65. package/src/components/summit-my-orders-tickets/i18n/index.js +0 -37
  66. package/src/components/summit-my-orders-tickets/i18n/locales/en.json +0 -296
  67. package/src/components/summit-my-orders-tickets/i18n/locales/es.json +0 -296
  68. package/src/components/summit-my-orders-tickets/index.js +0 -1
  69. package/src/components/summit-my-orders-tickets/store/actions/base-actions.js +0 -7
  70. package/src/components/summit-my-orders-tickets/store/actions/order-actions.js +0 -96
  71. package/src/components/summit-my-orders-tickets/store/actions/summit-actions.js +0 -64
  72. package/src/components/summit-my-orders-tickets/store/actions/ticket-actions.js +0 -666
  73. package/src/components/summit-my-orders-tickets/store/actions/timer-actions.js +0 -29
  74. package/src/components/summit-my-orders-tickets/store/actions/user-actions.js +0 -42
  75. package/src/components/summit-my-orders-tickets/store/history.js +0 -16
  76. package/src/components/summit-my-orders-tickets/store/index.js +0 -117
  77. package/src/components/summit-my-orders-tickets/store/reducers/base-reducer.js +0 -67
  78. package/src/components/summit-my-orders-tickets/store/reducers/clock-reducer.js +0 -31
  79. package/src/components/summit-my-orders-tickets/store/reducers/order-reducer.js +0 -95
  80. package/src/components/summit-my-orders-tickets/store/reducers/summit-reducer.js +0 -52
  81. package/src/components/summit-my-orders-tickets/store/reducers/ticket-reducer.js +0 -92
  82. package/src/components/summit-my-orders-tickets/store/reducers/user-reducer.js +0 -35
  83. package/src/components/summit-my-orders-tickets/styles/_variables.scss +0 -17
  84. package/src/components/summit-my-orders-tickets/styles/general.scss +0 -17
  85. package/src/components/summit-my-orders-tickets/summit-my-orders-tickets.js +0 -86
  86. package/src/components/summit-my-orders-tickets/util/helpers/capitalizeFirstLetter.js +0 -1
  87. package/src/components/summit-my-orders-tickets/util/helpers/createReducer.js +0 -11
  88. package/src/components/summit-my-orders-tickets/util/helpers/formatCurrency.js +0 -15
  89. package/src/components/summit-my-orders-tickets/util/helpers/getDayNumberFromDate.js +0 -9
  90. package/src/components/summit-my-orders-tickets/util/helpers/getDaysBetweenDates.js +0 -16
  91. package/src/components/summit-my-orders-tickets/util/helpers/getDocumentOffset.js +0 -8
  92. package/src/components/summit-my-orders-tickets/util/helpers/getFormattedDate.js +0 -7
  93. package/src/components/summit-my-orders-tickets/util/helpers/getFormattedTime.js +0 -9
  94. package/src/components/summit-my-orders-tickets/util/helpers/getWindowScroll.js +0 -6
  95. package/src/components/summit-my-orders-tickets/util/helpers/index.js +0 -22
  96. package/src/components/summit-my-orders-tickets/util/index.js +0 -5
  97. package/src/components/summit-my-orders-tickets/util/order/calculateOrderTotals.js +0 -28
  98. package/src/components/summit-my-orders-tickets/util/order/getOrderStatusData.js +0 -71
  99. package/src/components/summit-my-orders-tickets/util/order/index.js +0 -2
  100. package/src/components/summit-my-orders-tickets/util/summit/checkSummitPast.js +0 -10
  101. package/src/components/summit-my-orders-tickets/util/summit/checkSummitStarted.js +0 -5
  102. package/src/components/summit-my-orders-tickets/util/summit/getSummitFormattedDate.js +0 -29
  103. package/src/components/summit-my-orders-tickets/util/summit/getSummitFormattedReassignDate.js +0 -8
  104. package/src/components/summit-my-orders-tickets/util/summit/getSummitLocation.js +0 -9
  105. package/src/components/summit-my-orders-tickets/util/summit/getSummitReassignDate.js +0 -7
  106. package/src/components/summit-my-orders-tickets/util/summit/index.js +0 -7
  107. package/src/components/summit-my-orders-tickets/util/summit/useSummitDetails.js +0 -36
  108. package/src/components/summit-my-orders-tickets/util/ticket/getTicketRole.js +0 -11
  109. package/src/components/summit-my-orders-tickets/util/ticket/getTicketStatusData.js +0 -48
  110. package/src/components/summit-my-orders-tickets/util/ticket/getTicketType.js +0 -1
  111. package/src/components/summit-my-orders-tickets/util/ticket/index.js +0 -4
  112. package/src/components/summit-my-orders-tickets/util/ticket/useTicketDetails.js +0 -60
  113. package/src/components/summit-my-orders-tickets/util/timer/index.js +0 -1
  114. package/src/components/summit-my-orders-tickets/util/timer/useNow.js +0 -8
@@ -1,50 +0,0 @@
1
- /**
2
- * Copyright 2022
3
- * Licensed under the Apache License, Version 2.0 (the "License");
4
- * you may not use this file except in compliance with the License.
5
- * You may obtain a copy of the License at
6
- * http://www.apache.org/licenses/LICENSE-2.0
7
- * Unless required by applicable law or agreed to in writing, software
8
- * distributed under the License is distributed on an "AS IS" BASIS,
9
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
- * See the License for the specific language governing permissions and
11
- * limitations under the License.
12
- **/
13
- import React, { useState } from 'react'
14
- import { useTranslation } from "react-i18next";
15
- import usePortal from 'react-useportal';
16
-
17
- import './delegate-popup.scss';
18
-
19
- export const DelegatePopup = ({ isOpen, onAccept, onReject }) => {
20
- var { Portal } = usePortal();
21
- const { t } = useTranslation();
22
-
23
- const handleAcceptClick = () => {
24
- if (onAccept) onAccept();
25
- };
26
-
27
- const handleRejectClick = () => {
28
- if (onReject) onReject();
29
- };
30
-
31
- return (
32
- <>
33
- {isOpen && (
34
- <Portal>
35
- <div className="confirm-popup-bg">
36
- <div className="confirm-popup">
37
- <h4>Delegate Ticket</h4>
38
- <p>Delegation will create a new attendee and require to you to fill the first Name, last Name and to answer the extra questions again</p>
39
-
40
- <div className="buttons">
41
- <span onClick={handleRejectClick}>{t("confirm_popup.cancel")}</span>
42
- <span onClick={handleAcceptClick}>{t("confirm_popup.accept")}</span>
43
- </div>
44
- </div>
45
- </div>
46
- </Portal>
47
- )}
48
- </>
49
- );
50
- };
@@ -1,57 +0,0 @@
1
- @import "../../styles/variables";
2
-
3
- .confirm-popup-bg {
4
- z-index: 1000;
5
- position: fixed;
6
- width: 100%;
7
- height: 100%;
8
- top: 0;
9
- left: 0;
10
- right: 0;
11
- bottom: 0;
12
- margin: auto;
13
- }
14
-
15
- .confirm-popup {
16
- position: absolute;
17
- right: 1%;
18
- top: 5%;
19
- padding: 40px 20px 20px;
20
- background: $color-white;
21
- z-index: 35;
22
- text-align: center;
23
- box-shadow: 1px 1px 5px grey;
24
- min-width: 300px;
25
-
26
- h4 {
27
- font-weight: bold;
28
- }
29
-
30
- p {
31
- margin: 0 40px 20px;
32
- }
33
-
34
- .buttons {
35
- margin-top: 35px;
36
- display: flex;
37
- justify-content: space-evenly;
38
- align-items: baseline;
39
-
40
- span {
41
- cursor: pointer;
42
- }
43
-
44
- span:last-child {
45
- background: $color-secondary-contrast;
46
- border-radius: 4px;
47
- color: $color-white;
48
- padding: 5px 30px;
49
- text-align: center;
50
-
51
- &:hover {
52
- background-color: #286090;
53
- border-color: #204d74;
54
- }
55
- }
56
- }
57
- }
@@ -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
- }