@openeventkit/event-site 2.1.48 → 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.
- package/package.json +3 -3
- package/src/actions/user-actions.js +9 -10
- package/src/components/RegistrationLiteComponent.js +1 -1
- package/src/components/VimeoPlayer.js +2 -2
- package/src/content/site-settings/index.json +1 -1
- package/src/content/sponsors.json +1 -1
- package/src/styles/colors.scss +11 -11
- package/src/templates/extra-questions-page.js +1 -1
- package/src/templates/full-profile-page.js +2 -3
- package/src/utils/alerts.js +34 -27
- package/src/utils/customErrorHandler.js +4 -4
- package/src/utils/ticketConstants.js +10 -0
- package/src/components/summit-my-orders-tickets/components/ConfirmPopup/ConfirmPopup.js +0 -96
- package/src/components/summit-my-orders-tickets/components/ConfirmPopup/confirm-popup.scss +0 -57
- package/src/components/summit-my-orders-tickets/components/DelegatePopup/DelegatePopup.js +0 -50
- package/src/components/summit-my-orders-tickets/components/DelegatePopup/delegate-popup.scss +0 -57
- package/src/components/summit-my-orders-tickets/components/MyOrdersTickets.js +0 -79
- package/src/components/summit-my-orders-tickets/components/OrderDetails/OrderDetails.js +0 -112
- package/src/components/summit-my-orders-tickets/components/OrderDetails/order-details.scss +0 -128
- package/src/components/summit-my-orders-tickets/components/OrderList/OrderList.js +0 -80
- package/src/components/summit-my-orders-tickets/components/OrderList/OrderListItem.js +0 -85
- package/src/components/summit-my-orders-tickets/components/OrderList/order-list.scss +0 -60
- package/src/components/summit-my-orders-tickets/components/OrderOptions/OrderOptions.js +0 -83
- package/src/components/summit-my-orders-tickets/components/OrderOptions/order-options.scss +0 -50
- package/src/components/summit-my-orders-tickets/components/OrderSummary/OrderSummary.js +0 -64
- package/src/components/summit-my-orders-tickets/components/OrderSummary/OrderSummaryTable.js +0 -97
- package/src/components/summit-my-orders-tickets/components/OrderSummary/order-summary.scss +0 -178
- package/src/components/summit-my-orders-tickets/components/OrderTicketDetails/OrderTicketDetails.js +0 -102
- package/src/components/summit-my-orders-tickets/components/OrderTicketDetails/order-ticket-details.scss +0 -129
- package/src/components/summit-my-orders-tickets/components/OrderTicketList/OrderTicketList.js +0 -19
- package/src/components/summit-my-orders-tickets/components/OrderTicketList/OrderTicketListItem.js +0 -13
- package/src/components/summit-my-orders-tickets/components/OrderTicketList/order-ticket-list.scss +0 -21
- package/src/components/summit-my-orders-tickets/components/TicketDetails/TicketDetails.js +0 -93
- package/src/components/summit-my-orders-tickets/components/TicketDetails/ticket-details.scss +0 -129
- package/src/components/summit-my-orders-tickets/components/TicketList/TicketList.js +0 -65
- package/src/components/summit-my-orders-tickets/components/TicketList/TicketListItem.js +0 -16
- package/src/components/summit-my-orders-tickets/components/TicketList/ticket-list.scss +0 -21
- package/src/components/summit-my-orders-tickets/components/TicketPopup/TicketPopup.js +0 -186
- package/src/components/summit-my-orders-tickets/components/TicketPopup/TicketPopupAssignForm.js +0 -136
- package/src/components/summit-my-orders-tickets/components/TicketPopup/TicketPopupEditDetailsForm/TicketPopupEditDetailsForm.js +0 -468
- package/src/components/summit-my-orders-tickets/components/TicketPopup/TicketPopupEditDetailsForm/ticket-popup-edit-details-form.scss +0 -71
- package/src/components/summit-my-orders-tickets/components/TicketPopup/TicketPopupNotifyForm.js +0 -64
- package/src/components/summit-my-orders-tickets/components/TicketPopup/TicketPopupReassignForm.js +0 -193
- package/src/components/summit-my-orders-tickets/components/TicketPopup/TicketPopupRefundForm.js +0 -64
- package/src/components/summit-my-orders-tickets/components/TicketPopup/ticket-popup.scss +0 -416
- package/src/components/summit-my-orders-tickets/context/TicketAssignedContext.js +0 -24
- package/src/components/summit-my-orders-tickets/global/constants.js +0 -10
- package/src/components/summit-my-orders-tickets/i18n/index.js +0 -37
- package/src/components/summit-my-orders-tickets/i18n/locales/en.json +0 -296
- package/src/components/summit-my-orders-tickets/i18n/locales/es.json +0 -296
- package/src/components/summit-my-orders-tickets/index.js +0 -1
- package/src/components/summit-my-orders-tickets/store/actions/base-actions.js +0 -7
- package/src/components/summit-my-orders-tickets/store/actions/order-actions.js +0 -96
- package/src/components/summit-my-orders-tickets/store/actions/summit-actions.js +0 -64
- package/src/components/summit-my-orders-tickets/store/actions/ticket-actions.js +0 -666
- package/src/components/summit-my-orders-tickets/store/actions/timer-actions.js +0 -29
- package/src/components/summit-my-orders-tickets/store/actions/user-actions.js +0 -42
- package/src/components/summit-my-orders-tickets/store/history.js +0 -16
- package/src/components/summit-my-orders-tickets/store/index.js +0 -117
- package/src/components/summit-my-orders-tickets/store/reducers/base-reducer.js +0 -67
- package/src/components/summit-my-orders-tickets/store/reducers/clock-reducer.js +0 -31
- package/src/components/summit-my-orders-tickets/store/reducers/order-reducer.js +0 -95
- package/src/components/summit-my-orders-tickets/store/reducers/summit-reducer.js +0 -52
- package/src/components/summit-my-orders-tickets/store/reducers/ticket-reducer.js +0 -92
- package/src/components/summit-my-orders-tickets/store/reducers/user-reducer.js +0 -35
- package/src/components/summit-my-orders-tickets/styles/_variables.scss +0 -17
- package/src/components/summit-my-orders-tickets/styles/general.scss +0 -17
- package/src/components/summit-my-orders-tickets/summit-my-orders-tickets.js +0 -86
- package/src/components/summit-my-orders-tickets/util/helpers/capitalizeFirstLetter.js +0 -1
- package/src/components/summit-my-orders-tickets/util/helpers/createReducer.js +0 -11
- package/src/components/summit-my-orders-tickets/util/helpers/formatCurrency.js +0 -15
- package/src/components/summit-my-orders-tickets/util/helpers/getDayNumberFromDate.js +0 -9
- package/src/components/summit-my-orders-tickets/util/helpers/getDaysBetweenDates.js +0 -16
- package/src/components/summit-my-orders-tickets/util/helpers/getDocumentOffset.js +0 -8
- package/src/components/summit-my-orders-tickets/util/helpers/getFormattedDate.js +0 -7
- package/src/components/summit-my-orders-tickets/util/helpers/getFormattedTime.js +0 -9
- package/src/components/summit-my-orders-tickets/util/helpers/getWindowScroll.js +0 -6
- package/src/components/summit-my-orders-tickets/util/helpers/index.js +0 -22
- package/src/components/summit-my-orders-tickets/util/index.js +0 -5
- package/src/components/summit-my-orders-tickets/util/order/calculateOrderTotals.js +0 -28
- package/src/components/summit-my-orders-tickets/util/order/getOrderStatusData.js +0 -71
- package/src/components/summit-my-orders-tickets/util/order/index.js +0 -2
- package/src/components/summit-my-orders-tickets/util/summit/checkSummitPast.js +0 -10
- package/src/components/summit-my-orders-tickets/util/summit/checkSummitStarted.js +0 -5
- package/src/components/summit-my-orders-tickets/util/summit/getSummitFormattedDate.js +0 -29
- package/src/components/summit-my-orders-tickets/util/summit/getSummitFormattedReassignDate.js +0 -8
- package/src/components/summit-my-orders-tickets/util/summit/getSummitLocation.js +0 -9
- package/src/components/summit-my-orders-tickets/util/summit/getSummitReassignDate.js +0 -7
- package/src/components/summit-my-orders-tickets/util/summit/index.js +0 -7
- package/src/components/summit-my-orders-tickets/util/summit/useSummitDetails.js +0 -36
- package/src/components/summit-my-orders-tickets/util/ticket/getTicketRole.js +0 -11
- package/src/components/summit-my-orders-tickets/util/ticket/getTicketStatusData.js +0 -48
- package/src/components/summit-my-orders-tickets/util/ticket/getTicketType.js +0 -1
- package/src/components/summit-my-orders-tickets/util/ticket/index.js +0 -4
- package/src/components/summit-my-orders-tickets/util/ticket/useTicketDetails.js +0 -60
- package/src/components/summit-my-orders-tickets/util/timer/index.js +0 -1
- package/src/components/summit-my-orders-tickets/util/timer/useNow.js +0 -8
|
@@ -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,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
|
-
};
|
package/src/components/summit-my-orders-tickets/components/DelegatePopup/delegate-popup.scss
DELETED
|
@@ -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
|
-
};
|