@weareconceptstudio/account 0.0.0 → 0.0.1
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/dist/AccountConfig.d.ts +5 -0
- package/dist/AccountConfig.js +21 -0
- package/dist/components/AccountButton/index.d.ts +3 -0
- package/dist/components/AccountButton/index.js +22 -0
- package/dist/components/AccountButton/style.d.ts +2 -0
- package/dist/components/AccountButton/style.js +249 -0
- package/dist/components/AddressForm/index.d.ts +3 -0
- package/dist/components/AddressForm/index.js +100 -0
- package/dist/components/AddressForm/style.d.ts +2 -0
- package/dist/components/AddressForm/style.js +180 -0
- package/dist/components/AddressItem/index.d.ts +3 -0
- package/dist/components/AddressItem/index.js +41 -0
- package/dist/components/AddressItem/style.d.ts +2 -0
- package/dist/components/AddressItem/style.js +191 -0
- package/dist/components/CustomCheckbox/index.d.ts +7 -0
- package/dist/components/CustomCheckbox/index.js +15 -0
- package/dist/components/CustomCheckbox/style.d.ts +2 -0
- package/dist/components/CustomCheckbox/style.js +85 -0
- package/dist/components/EmptyCart/index.d.ts +5 -0
- package/dist/components/EmptyCart/index.js +14 -0
- package/dist/components/EmptyCart/style.d.ts +2 -0
- package/dist/components/EmptyCart/style.js +62 -0
- package/dist/components/EmptyOrders/index.d.ts +3 -0
- package/dist/components/EmptyOrders/index.js +12 -0
- package/dist/components/EmptyOrders/style.d.ts +2 -0
- package/dist/components/EmptyOrders/style.js +46 -0
- package/dist/components/FormInputCode/index.d.ts +24 -0
- package/dist/components/FormInputCode/index.js +145 -0
- package/dist/components/FormInputCode/style.d.ts +2 -0
- package/dist/components/FormInputCode/style.js +109 -0
- package/dist/components/OrderDetails/index.d.ts +3 -0
- package/dist/components/OrderDetails/index.js +48 -0
- package/dist/components/OrderDetails/style.d.ts +2 -0
- package/dist/components/OrderDetails/style.js +90 -0
- package/dist/components/OrderedItems/ReviewPopup/index.d.ts +0 -0
- package/dist/components/OrderedItems/ReviewPopup/index.js +202 -0
- package/dist/components/OrderedItems/ReviewPopup/style.d.ts +2 -0
- package/dist/components/OrderedItems/ReviewPopup/style.js +329 -0
- package/dist/components/OrderedItems/index.d.ts +7 -0
- package/dist/components/OrderedItems/index.js +108 -0
- package/dist/components/OrderedItems/style.d.ts +2 -0
- package/dist/components/OrderedItems/style.js +783 -0
- package/dist/components/OrdersList/OrderItem/index.d.ts +3 -0
- package/dist/components/OrdersList/OrderItem/index.js +21 -0
- package/dist/components/OrdersList/index.d.ts +10 -0
- package/dist/components/OrdersList/index.js +68 -0
- package/dist/components/OrdersList/style.d.ts +2 -0
- package/dist/components/OrdersList/style.js +373 -0
- package/dist/components/Pagination/index.d.ts +3 -0
- package/dist/components/Pagination/index.js +18 -0
- package/dist/components/Pagination/style.d.ts +2 -0
- package/dist/components/Pagination/style.js +72 -0
- package/dist/components/SelectShippingBilling/index.d.ts +3 -0
- package/dist/components/SelectShippingBilling/index.js +31 -0
- package/dist/components/SelectShippingBilling/style.d.ts +2 -0
- package/dist/components/SelectShippingBilling/style.js +112 -0
- package/dist/components/Sequence/index.d.ts +5 -0
- package/dist/components/Sequence/index.js +65 -0
- package/dist/components/Sequence/style.d.ts +2 -0
- package/dist/components/Sequence/style.js +317 -0
- package/dist/components/ShippingBillingForm/index.d.ts +3 -0
- package/dist/components/ShippingBillingForm/index.js +96 -0
- package/dist/components/ShippingBillingForm/style.d.ts +2 -0
- package/dist/components/ShippingBillingForm/style.js +77 -0
- package/dist/components/ShippingBillingInfo/index.d.ts +3 -0
- package/dist/components/ShippingBillingInfo/index.js +22 -0
- package/dist/components/ShippingBillingInfo/style.d.ts +2 -0
- package/dist/components/ShippingBillingInfo/style.js +98 -0
- package/dist/components/TotalCheckout/index.d.ts +3 -0
- package/dist/components/TotalCheckout/index.js +49 -0
- package/dist/components/TotalCheckout/style.d.ts +2 -0
- package/dist/components/TotalCheckout/style.js +211 -0
- package/dist/components/WarningMessage/index.d.ts +3 -0
- package/dist/components/WarningMessage/index.js +10 -0
- package/dist/components/WarningMessage/style.d.ts +2 -0
- package/dist/components/WarningMessage/style.js +34 -0
- package/dist/components/WarningMessageForPopup/index.d.ts +3 -0
- package/dist/components/WarningMessageForPopup/index.js +31 -0
- package/dist/components/WarningMessageForPopup/style.d.ts +2 -0
- package/dist/components/WarningMessageForPopup/style.js +82 -0
- package/dist/components/index.d.ts +18 -0
- package/dist/components/index.js +18 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -0
- package/dist/styles/helperClass.d.ts +2 -0
- package/dist/styles/helperClass.js +278 -0
- package/dist/styles/theme.d.ts +2 -0
- package/dist/styles/theme.js +63 -0
- package/dist/styles/typography.d.ts +2 -0
- package/dist/styles/typography.js +129 -0
- package/dist/styles/variables.d.ts +2 -0
- package/dist/styles/variables.js +401 -0
- package/dist/templates/AccountSettingsTemplate/AccountInfo/index.d.ts +38 -0
- package/dist/templates/AccountSettingsTemplate/AccountInfo/index.js +37 -0
- package/dist/templates/AccountSettingsTemplate/AccountInfo/style.d.ts +2 -0
- package/dist/templates/AccountSettingsTemplate/AccountInfo/style.js +165 -0
- package/dist/templates/AccountSettingsTemplate/AccountInfo/utils.d.ts +32 -0
- package/dist/templates/AccountSettingsTemplate/AccountInfo/utils.js +45 -0
- package/dist/templates/AccountSettingsTemplate/AccountPassword/index.d.ts +15 -0
- package/dist/templates/AccountSettingsTemplate/AccountPassword/index.js +36 -0
- package/dist/templates/AccountSettingsTemplate/AccountPassword/style.d.ts +2 -0
- package/dist/templates/AccountSettingsTemplate/AccountPassword/style.js +141 -0
- package/dist/templates/AccountSettingsTemplate/AccountPassword/utils.d.ts +10 -0
- package/dist/templates/AccountSettingsTemplate/AccountPassword/utils.js +22 -0
- package/dist/templates/AccountSettingsTemplate/index.d.ts +11 -0
- package/dist/templates/AccountSettingsTemplate/index.js +10 -0
- package/dist/templates/AccountSettingsTemplate/style.d.ts +2 -0
- package/dist/templates/AccountSettingsTemplate/style.js +37 -0
- package/dist/templates/AccountTemplate/index.d.ts +8 -0
- package/dist/templates/AccountTemplate/index.js +32 -0
- package/dist/templates/AccountTemplate/style.d.ts +2 -0
- package/dist/templates/AccountTemplate/style.js +293 -0
- package/dist/templates/AddressesTemplate/index.d.ts +3 -0
- package/dist/templates/AddressesTemplate/index.js +21 -0
- package/dist/templates/AddressesTemplate/style.d.ts +2 -0
- package/dist/templates/AddressesTemplate/style.js +89 -0
- package/dist/templates/CartTemplate/index.d.ts +3 -0
- package/dist/templates/CartTemplate/index.js +23 -0
- package/dist/templates/CartTemplate/style.d.ts +2 -0
- package/dist/templates/CartTemplate/style.js +37 -0
- package/dist/templates/CheckoutTemplate/index.d.ts +9 -0
- package/dist/templates/CheckoutTemplate/index.js +155 -0
- package/dist/templates/CheckoutTemplate/style.d.ts +2 -0
- package/dist/templates/CheckoutTemplate/style.js +173 -0
- package/dist/templates/ForgotPasswordTemplate/index.d.ts +5 -2
- package/dist/templates/ForgotPasswordTemplate/index.js +86 -3
- package/dist/templates/ForgotPasswordTemplate/style.d.ts +2 -0
- package/dist/templates/ForgotPasswordTemplate/style.js +186 -0
- package/dist/templates/OrderHistoryTemplate/index.d.ts +7 -0
- package/dist/templates/OrderHistoryTemplate/index.js +9 -0
- package/dist/templates/OrderHistoryTemplate/style.d.ts +2 -0
- package/dist/templates/OrderHistoryTemplate/style.js +3 -0
- package/dist/templates/OrderIndividualTemplate/index.d.ts +5 -0
- package/dist/templates/OrderIndividualTemplate/index.js +21 -0
- package/dist/templates/OrderIndividualTemplate/style.d.ts +2 -0
- package/dist/templates/OrderIndividualTemplate/style.js +3 -0
- package/dist/templates/ResetPasswordTemplate/index.d.ts +7 -2
- package/dist/templates/ResetPasswordTemplate/index.js +35 -2
- package/dist/templates/ResetPasswordTemplate/style.d.ts +2 -0
- package/dist/templates/ResetPasswordTemplate/style.js +163 -0
- package/dist/templates/SignInTemplate/index.d.ts +5 -2
- package/dist/templates/SignInTemplate/index.js +27 -2
- package/dist/templates/SignInTemplate/style.d.ts +2 -0
- package/dist/templates/SignInTemplate/style.js +168 -0
- package/dist/templates/SignUpTemplate/defaultFormFields.d.ts +11 -0
- package/dist/templates/SignUpTemplate/defaultFormFields.js +42 -0
- package/dist/templates/SignUpTemplate/index.d.ts +6 -2
- package/dist/templates/SignUpTemplate/index.js +33 -3
- package/dist/templates/SignUpTemplate/style.d.ts +2 -0
- package/dist/templates/SignUpTemplate/style.js +175 -0
- package/dist/templates/VerifyEmailAddressTemplate/index.d.ts +3 -0
- package/dist/templates/VerifyEmailAddressTemplate/index.js +105 -0
- package/dist/templates/VerifyEmailAddressTemplate/style.d.ts +2 -0
- package/dist/templates/VerifyEmailAddressTemplate/style.js +165 -0
- package/dist/templates/index.d.ts +8 -0
- package/dist/templates/index.js +11 -0
- package/dist/translations/en.d.ts +257 -0
- package/dist/translations/en.js +256 -0
- package/dist/translations/index.d.ts +259 -0
- package/dist/translations/index.js +2 -0
- package/dist/utils/_functions.d.ts +5 -0
- package/dist/utils/_functions.js +28 -0
- package/dist/utils/icons.d.ts +3 -0
- package/dist/utils/icons.js +27 -0
- package/package.json +5 -6
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React, { memo, useCallback } from 'react';
|
|
2
|
+
import { useUi, Text } from '@weareconceptstudio/core';
|
|
3
|
+
//* Components
|
|
4
|
+
import { AccountButton, AddressForm, AddressItem } from '../../components';
|
|
5
|
+
//* Style
|
|
6
|
+
import AddressesTemplateStyle from './style';
|
|
7
|
+
const AddressesTemplate = memo(({ shipping_addresses, billing_addresses }) => {
|
|
8
|
+
const { openPopup } = useUi();
|
|
9
|
+
//! Handle Add New Address Click
|
|
10
|
+
const handleAddNewAddressPopup = useCallback((type) => {
|
|
11
|
+
openPopup(React.createElement(AddressForm, { title: `addNew${type.charAt(0).toUpperCase() + type.slice(1)}Address`, selected: { values: false, type } }));
|
|
12
|
+
}, []);
|
|
13
|
+
return (React.createElement(AddressesTemplateStyle, null, ['shipping', 'billing'].map((type) => (React.createElement("div", { key: type, className: `address-wrap ${type}` },
|
|
14
|
+
React.createElement("div", { className: `address-title-container` },
|
|
15
|
+
React.createElement(Text, { className: `account-p account-p1 account-font-bold account-primary-color1`, text: `${type}Address` }),
|
|
16
|
+
React.createElement(AccountButton, { text: `addNewAdd`, btnType: `purple-text`, onClick: () => handleAddNewAddressPopup(type) })),
|
|
17
|
+
eval(`${type}_addresses`) && eval(`${type}_addresses`).length > 0 ? (React.createElement("div", { className: `flex-wrapper` }, eval(`${type}_addresses`).map((item, index) => {
|
|
18
|
+
return (React.createElement(AddressItem, { select_address: false, checkout_review: false, data: item, type: type, key: index }));
|
|
19
|
+
}))) : (React.createElement(Text, { className: `account-p account-p2 account-font-regular account-primary-color1 empty-address-text`, text: `emptyAddress` })))))));
|
|
20
|
+
});
|
|
21
|
+
export default AddressesTemplate;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export default AddressesTemplateStyle;
|
|
2
|
+
declare const AddressesTemplateStyle: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLElement>, HTMLElement>, never>> & string;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import styled from 'styled-components';
|
|
2
|
+
const AddressesTemplateStyle = styled.section `
|
|
3
|
+
--account_addressWrapMTop: var(--sp16x);
|
|
4
|
+
--account_emptyAddressTextMTop: var(--sp2-5x);
|
|
5
|
+
|
|
6
|
+
--account_itemDistance: var(--sp5x);
|
|
7
|
+
--account_flexWrapperMTop: var(--sp5x);
|
|
8
|
+
|
|
9
|
+
.billing {
|
|
10
|
+
margin-top: var(--account_addressWrapMTop);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.address-wrap {
|
|
14
|
+
.address-title-container {
|
|
15
|
+
display: flex;
|
|
16
|
+
justify-content: space-between;
|
|
17
|
+
align-items: center;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.empty-address-text {
|
|
21
|
+
margin-top: var(--account_emptyAddressTextMTop);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.flex-wrapper {
|
|
25
|
+
display: flex;
|
|
26
|
+
flex-wrap: wrap;
|
|
27
|
+
margin-left: calc(-1 * calc(var(--account_itemDistance) / 2));
|
|
28
|
+
margin-right: calc(-1 * calc(var(--account_itemDistance) / 2));
|
|
29
|
+
margin-top: var(--account_flexWrapperMTop);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
@media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeXLMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeL}) {
|
|
34
|
+
--account_addressWrapMTop: var(--sp11x);
|
|
35
|
+
--account_emptyAddressTextMTop: var(--sp2x);
|
|
36
|
+
|
|
37
|
+
--account_itemDistance: var(--sp4x);
|
|
38
|
+
--account_flexWrapperMTop: var(--sp4x);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
@media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeLMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeM}) {
|
|
42
|
+
--account_addressWrapMTop: var(--sp8x);
|
|
43
|
+
--account_emptyAddressTextMTop: var(--sp2x);
|
|
44
|
+
|
|
45
|
+
--account_itemDistance: var(--sp4x);
|
|
46
|
+
--account_flexWrapperMTop: var(--sp3x);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
@media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeMMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeS}) {
|
|
50
|
+
--account_addressWrapMTop: var(--sp8x);
|
|
51
|
+
--account_emptyAddressTextMTop: var(--sp2x);
|
|
52
|
+
|
|
53
|
+
--account_itemDistance: var(--sp4x);
|
|
54
|
+
--account_flexWrapperMTop: var(--sp3x);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
@media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeSMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeXS}) {
|
|
58
|
+
--account_addressWrapMTop: var(--sp8x);
|
|
59
|
+
--account_emptyAddressTextMTop: var(--sp2x);
|
|
60
|
+
|
|
61
|
+
--account_itemDistance: var(--sp3x);
|
|
62
|
+
--account_flexWrapperMTop: var(--sp3x);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
@media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeXSMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_TabletSize}) {
|
|
66
|
+
--account_addressWrapMTop: var(--sp8x);
|
|
67
|
+
--account_emptyAddressTextMTop: var(--sp1-5x);
|
|
68
|
+
|
|
69
|
+
--account_itemDistance: var(--sp3x);
|
|
70
|
+
--account_flexWrapperMTop: var(--sp3x);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
@media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_TabletSizeMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_TabletSizeS}) {
|
|
74
|
+
--account_addressWrapMTop: var(--sp8x);
|
|
75
|
+
--account_emptyAddressTextMTop: var(--sp1-5x);
|
|
76
|
+
|
|
77
|
+
--account_itemDistance: var(--sp3x);
|
|
78
|
+
--account_flexWrapperMTop: var(--sp2x);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
@media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_TabletSizeSMin}) {
|
|
82
|
+
--account_addressWrapMTop: var(--sp6x);
|
|
83
|
+
--account_emptyAddressTextMTop: var(--sp2x);
|
|
84
|
+
|
|
85
|
+
--account_flexWrapperMTop: var(--sp2x);
|
|
86
|
+
--account_itemDistance: var(--sp2x);
|
|
87
|
+
}
|
|
88
|
+
`;
|
|
89
|
+
export default AddressesTemplateStyle;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React, { memo, useState, useEffect } from 'react';
|
|
2
|
+
import { Container, Page } from '@weareconceptstudio/core';
|
|
3
|
+
import { EmptyCart, TotalCheckout, AccountButton } from '../../components';
|
|
4
|
+
import CartTemplateStyle from './style';
|
|
5
|
+
const CartTemplate = memo(({ items, itemsCount, loading, favorites, children, shoppingUrl }) => {
|
|
6
|
+
//! State
|
|
7
|
+
const [isAnyItemOutOfStock, setIsAnyItemOutOfStock] = useState();
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
setIsAnyItemOutOfStock(items.find((item) => item.qty > item.qty));
|
|
10
|
+
}, [items]);
|
|
11
|
+
return (React.createElement(Page, { className: 'cart use-account' },
|
|
12
|
+
React.createElement(Container, null,
|
|
13
|
+
React.createElement(CartTemplateStyle, null,
|
|
14
|
+
React.createElement(TotalCheckout, { buttonProps: {
|
|
15
|
+
url: '/checkout/',
|
|
16
|
+
text: 'proceedToCheckout',
|
|
17
|
+
disabled: !!isAnyItemOutOfStock,
|
|
18
|
+
} }, itemsCount > 0 ? (React.createElement(React.Fragment, null,
|
|
19
|
+
React.createElement("div", null, "Cart Items"),
|
|
20
|
+
shoppingUrl ? (React.createElement(AccountButton, { btnType: `purple-text`, text: `continueShopping`, className: `continue-shop-text`, url: shoppingUrl })) : null)) : (!loading && (React.createElement(EmptyCart, { data: items, shoppingUrl: shoppingUrl })))),
|
|
21
|
+
children))));
|
|
22
|
+
});
|
|
23
|
+
export default CartTemplate;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export default CartTemplateStyle;
|
|
2
|
+
declare const CartTemplateStyle: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLElement>, HTMLElement>, never>> & string;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import styled from 'styled-components';
|
|
2
|
+
const CartTemplateStyle = styled.section `
|
|
3
|
+
--account_continueShopTextMT: var(--sp7x);
|
|
4
|
+
|
|
5
|
+
.continue-shop-text {
|
|
6
|
+
margin-top: var(--account_continueShopTextMT);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
@media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeXLMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeL}) {
|
|
10
|
+
--account_continueShopTextMT: var(--sp5x);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
@media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeLMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeM}) {
|
|
14
|
+
--account_continueShopTextMT: var(--sp4x);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
@media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeMMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeS}) {
|
|
18
|
+
--account_continueShopTextMT: var(--sp4x);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeSMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeXS}) {
|
|
22
|
+
--account_continueShopTextMT: var(--sp3x);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
@media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeXSMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_TabletSize}) {
|
|
26
|
+
--account_continueShopTextMT: var(--sp3x);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_TabletSizeMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_TabletSizeS}) {
|
|
30
|
+
--account_continueShopTextMT: var(--sp3x);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
@media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_TabletSizeSMin}) {
|
|
34
|
+
--account_continueShopTextMT: var(--sp3x);
|
|
35
|
+
}
|
|
36
|
+
`;
|
|
37
|
+
export default CartTemplateStyle;
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
2
|
+
import { Container, useUi, Page } from '@weareconceptstudio/core';
|
|
3
|
+
//* Style
|
|
4
|
+
import CheckoutTemplateStyle from './style';
|
|
5
|
+
//* Components
|
|
6
|
+
import { AddressForm, AddressItem, CustomCheckbox, SelectShippingBilling, Sequence, ShippingBillingForm, TotalCheckout } from '../../components';
|
|
7
|
+
//TODO: router.push, createAddress, shipping_addresses, billing_addresses, globalData, user, items, total, subtotal, shippingCost, currency, getCart , checkout
|
|
8
|
+
const createAddress = () => { };
|
|
9
|
+
const shipping_addresses = [
|
|
10
|
+
{
|
|
11
|
+
first_name: 'Karlen',
|
|
12
|
+
last_name: 'Nersisyan',
|
|
13
|
+
address_1: 'Araratyan st.',
|
|
14
|
+
address_2: '58/5',
|
|
15
|
+
region: {
|
|
16
|
+
name: 'Sengavit',
|
|
17
|
+
},
|
|
18
|
+
zip_code: '3027',
|
|
19
|
+
city: {
|
|
20
|
+
name: 'Yerevan',
|
|
21
|
+
},
|
|
22
|
+
country: {
|
|
23
|
+
name: 'Armenia',
|
|
24
|
+
},
|
|
25
|
+
phone_number: '077250899',
|
|
26
|
+
is_default: true,
|
|
27
|
+
},
|
|
28
|
+
];
|
|
29
|
+
const billing_addresses = [
|
|
30
|
+
{
|
|
31
|
+
first_name: 'Karlen',
|
|
32
|
+
last_name: 'Nersisyan',
|
|
33
|
+
address_1: 'Araratyan st.',
|
|
34
|
+
address_2: '58/5',
|
|
35
|
+
region: {
|
|
36
|
+
name: 'Sengavit',
|
|
37
|
+
},
|
|
38
|
+
zip_code: '3027',
|
|
39
|
+
city: {
|
|
40
|
+
name: 'Yerevan',
|
|
41
|
+
},
|
|
42
|
+
country: {
|
|
43
|
+
name: 'Armenia',
|
|
44
|
+
},
|
|
45
|
+
phone_number: '077250899',
|
|
46
|
+
is_default: true,
|
|
47
|
+
},
|
|
48
|
+
];
|
|
49
|
+
const globalData = {
|
|
50
|
+
countries: [],
|
|
51
|
+
};
|
|
52
|
+
const user = {
|
|
53
|
+
verified: true,
|
|
54
|
+
};
|
|
55
|
+
const getCart = () => { };
|
|
56
|
+
const checkout = () => { };
|
|
57
|
+
const CheckoutTemplate = ({ items, total, subtotal, shippingCost, currency }) => {
|
|
58
|
+
const { openPopup } = useUi();
|
|
59
|
+
//! Ref
|
|
60
|
+
const formRef = useRef();
|
|
61
|
+
const getDefaultShippingAddress = useMemo(() => {
|
|
62
|
+
return shipping_addresses.find((item) => item.is_default);
|
|
63
|
+
}, [shipping_addresses]);
|
|
64
|
+
const getDefaultBillingAddress = useMemo(() => {
|
|
65
|
+
return billing_addresses.find((item) => item.is_default);
|
|
66
|
+
}, [billing_addresses]);
|
|
67
|
+
//! States
|
|
68
|
+
const [hide, setHide] = useState(false);
|
|
69
|
+
const [countryShippingId, setShippingCountryId] = useState(globalData.countries.length > 1 ? '' : 1);
|
|
70
|
+
const [countryBillingId, setBillingCountryId] = useState(globalData.countries.length > 1 ? '' : 1);
|
|
71
|
+
const [regionShippingId, setShippingRegionId] = useState();
|
|
72
|
+
const [regionBillingId, setBillingRegionId] = useState();
|
|
73
|
+
const [selectedAddresses, setSelectedAddresses] = useState({ shipping: getDefaultShippingAddress, billing: getDefaultBillingAddress });
|
|
74
|
+
useEffect(() => {
|
|
75
|
+
setSelectedAddresses({ shipping: getDefaultShippingAddress, billing: getDefaultBillingAddress });
|
|
76
|
+
getCart({ addressId: getDefaultShippingAddress?.id });
|
|
77
|
+
}, [getDefaultShippingAddress, getDefaultBillingAddress]);
|
|
78
|
+
const handleCheckoutFirstStep = useCallback(() => {
|
|
79
|
+
return formRef.current.submit();
|
|
80
|
+
}, []);
|
|
81
|
+
const handleCheckoutSecondStep = useCallback((note) => {
|
|
82
|
+
return checkout({ shipping_address_id: selectedAddresses.shipping.id, billing_address_id: selectedAddresses.billing.id, subtotal, total, note });
|
|
83
|
+
}, [total, subtotal, selectedAddresses]);
|
|
84
|
+
const handleFormFinish = useCallback((vals) => {
|
|
85
|
+
if (hide) {
|
|
86
|
+
let shippingAddress = Object.assign({}, vals.shipping);
|
|
87
|
+
let billingAddress = Object.assign({}, vals.shipping);
|
|
88
|
+
billingAddress.type = 'billing';
|
|
89
|
+
return createAddress({ ...shippingAddress }), createAddress({ ...billingAddress });
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
return vals.shipping && createAddress({ ...vals.shipping }), vals.billing && createAddress({ ...vals.billing });
|
|
93
|
+
}
|
|
94
|
+
}, [hide]);
|
|
95
|
+
//! handle form change
|
|
96
|
+
const handleFormChange = useCallback((val) => {
|
|
97
|
+
const name = Object.keys(Object.values(val)[0])[0];
|
|
98
|
+
const value = Object.values(val)[0]?.[`${name}`];
|
|
99
|
+
if (name === 'country_id') {
|
|
100
|
+
setShippingCountryId(value);
|
|
101
|
+
setBillingCountryId(value);
|
|
102
|
+
setShippingRegionId('');
|
|
103
|
+
setBillingRegionId('');
|
|
104
|
+
formRef.current.setFieldsValue({ region_id: '', city_id: '' });
|
|
105
|
+
}
|
|
106
|
+
else if (name === 'region_id') {
|
|
107
|
+
setShippingRegionId(value);
|
|
108
|
+
setBillingRegionId(value);
|
|
109
|
+
formRef.current.setFieldsValue({ city_id: '' });
|
|
110
|
+
}
|
|
111
|
+
}, []);
|
|
112
|
+
//! Handle Popups
|
|
113
|
+
const handleAddNewShippingAddressPopup = useCallback(() => {
|
|
114
|
+
openPopup(React.createElement(AddressForm, { title: `addNewShippingAddress`, selected: { value: false, type: 'shipping' } }));
|
|
115
|
+
}, []);
|
|
116
|
+
const handleAddNewBillingAddressPopup = useCallback(() => {
|
|
117
|
+
openPopup(React.createElement(AddressForm, { title: `addNewBillingAddress`, selected: { value: false, type: 'billing' } }));
|
|
118
|
+
}, []);
|
|
119
|
+
const handleShippingChangePopup = useCallback(() => {
|
|
120
|
+
openPopup(React.createElement(SelectShippingBilling, { type: 'shipping', data: shipping_addresses, title: 'selectShippingAddress', selectedAddresses: selectedAddresses, setSelectedAddresses: setSelectedAddresses, handleClick: handleAddNewShippingAddressPopup }));
|
|
121
|
+
}, [shipping_addresses, selectedAddresses]);
|
|
122
|
+
const handleBillingChangePopup = useCallback(() => {
|
|
123
|
+
openPopup(React.createElement(SelectShippingBilling, { type: 'billing', data: billing_addresses, title: 'selectBillingAddress', selectedAddresses: selectedAddresses, setSelectedAddresses: setSelectedAddresses, handleClick: handleAddNewBillingAddressPopup }));
|
|
124
|
+
}, [billing_addresses, selectedAddresses]);
|
|
125
|
+
//! User data
|
|
126
|
+
const checkStep = {
|
|
127
|
+
isShipping: !(shipping_addresses.length > 0 && billing_addresses.length > 0),
|
|
128
|
+
isReview: true,
|
|
129
|
+
};
|
|
130
|
+
return (React.createElement(Page, { className: 'checkout use-account' },
|
|
131
|
+
React.createElement(Container, null, user && user.verified && (React.createElement(CheckoutTemplateStyle, null,
|
|
132
|
+
React.createElement(TotalCheckout, { total: total, products: items, subtotal: subtotal, currency: currency, shippingCost: shippingCost, isShipping: checkStep.isShipping, buttonProps: {
|
|
133
|
+
url: false,
|
|
134
|
+
type: checkStep.isShipping ? 'submit' : 'button',
|
|
135
|
+
text: checkStep.isShipping ? 'proceedToCheckout' : 'proceedToPayment',
|
|
136
|
+
handleClick: checkStep.isShipping ? handleCheckoutFirstStep : handleCheckoutSecondStep,
|
|
137
|
+
} },
|
|
138
|
+
React.createElement(Sequence, { step: checkStep.isShipping ? 'shipping' : 'review' }),
|
|
139
|
+
checkStep.isShipping ? (React.createElement("div", { className: `billing-shipping-form-wrap` },
|
|
140
|
+
shipping_addresses.length > 0 ? (React.createElement("div", { className: `shipping-address-wrapper` },
|
|
141
|
+
React.createElement(AddressItem, { title: 'shippingAddress', checkout_review: false, select_address: false, type: 'shipping', data: getDefaultShippingAddress, onClick: handleShippingChangePopup }))) : (React.createElement(ShippingBillingForm, { type: `shipping`, title: `shippingAddress`, className: `shipping-wrapper`, countryId: countryShippingId, regionId: regionShippingId,
|
|
142
|
+
// ref={formRef}
|
|
143
|
+
onChange: handleFormChange, onSubmit: handleFormFinish, initialValues: { shipping: { country_id: 1, type: 'shipping', is_default: true }, billing: { country_id: 1, type: 'billing', is_default: true } } })),
|
|
144
|
+
!(billing_addresses?.length > 0 || shipping_addresses?.length > 0) ? (React.createElement(CustomCheckbox, { hide: hide, setHide: setHide })) : null,
|
|
145
|
+
!hide &&
|
|
146
|
+
(billing_addresses?.length > 0 ? (React.createElement("div", { className: `billing-address-wrapper` },
|
|
147
|
+
React.createElement(AddressItem, { type: 'billing', select_address: false, checkout_review: false, title: 'billingAddress', data: getDefaultBillingAddress, onClick: handleBillingChangePopup }))) : (React.createElement(ShippingBillingForm, { type: `billing`, title: `billingAddress`, regionId: regionBillingId, countryId: countryBillingId, className: `billing-wrapper`,
|
|
148
|
+
// ref={formRef}
|
|
149
|
+
onChange: handleFormChange, onSubmit: handleFormFinish, initialValues: { shipping: { country_id: 1, type: 'shipping', is_default: true }, billing: { country_id: 1, type: 'billing', is_default: true } } }))))) : (React.createElement(React.Fragment, null,
|
|
150
|
+
React.createElement("div", { className: `shipping-billing-change-wrapper` },
|
|
151
|
+
React.createElement(AddressItem, { checkout_review: true, type: 'shipping', select_address: false, title: 'shippingAddress', data: selectedAddresses.shipping, onClick: handleShippingChangePopup, setSelectedAddresses: setSelectedAddresses }),
|
|
152
|
+
React.createElement(AddressItem, { checkout_review: true, type: 'billing', select_address: false, title: 'billingAddress', data: selectedAddresses.billing, onClick: handleBillingChangePopup, setSelectedAddresses: setSelectedAddresses })),
|
|
153
|
+
React.createElement("div", null, "Cart Items")))))))));
|
|
154
|
+
};
|
|
155
|
+
export default CheckoutTemplate;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export default CheckoutTemplateStyle;
|
|
2
|
+
declare const CheckoutTemplateStyle: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLElement>, HTMLElement>, never>> & string;
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import styled from 'styled-components';
|
|
2
|
+
const CheckoutTemplateStyle = styled.section `
|
|
3
|
+
--account_billingWrapperMTop: var(--sp5x);
|
|
4
|
+
--account_itemDistance: var(--sp5x);
|
|
5
|
+
|
|
6
|
+
--account_confWrapMaxWidth: var(--sp92x);
|
|
7
|
+
--account_confWrapMTop: var(--sp22x);
|
|
8
|
+
--account_titleMTop: var(--sp10x);
|
|
9
|
+
--account_descMTop: var(--sp3x);
|
|
10
|
+
--account_orderNumberMTop: var(--sp2x);
|
|
11
|
+
--account_btnWrapperMTop: var(--sp7x);
|
|
12
|
+
--account_imageWidth: 41.4%;
|
|
13
|
+
--account_imageHeight: 26.7%;
|
|
14
|
+
|
|
15
|
+
.billing-wrapper {
|
|
16
|
+
margin-top: var(--account_billingWrapperMTop);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.shipping-billing-change-wrapper {
|
|
20
|
+
display: flex;
|
|
21
|
+
flex-wrap: wrap;
|
|
22
|
+
margin-left: calc(-1 * calc(var(--account_itemDistance) / 2));
|
|
23
|
+
margin-right: calc(-1 * calc(var(--account_itemDistance) / 2));
|
|
24
|
+
|
|
25
|
+
.item-internal-wrap {
|
|
26
|
+
height: fit-content !important;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.confirmation-wrapper {
|
|
31
|
+
max-width: var(--account_confWrapMaxWidth);
|
|
32
|
+
margin-top: var(--account_confWrapMTop);
|
|
33
|
+
|
|
34
|
+
.image-cont {
|
|
35
|
+
width: 100%;
|
|
36
|
+
max-width: var(--account_imageWidth);
|
|
37
|
+
padding-top: var(--account_imageHeight) !important;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.title {
|
|
41
|
+
margin-top: var(--account_titleMTop);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.description {
|
|
45
|
+
margin-top: var(--account_descMTop);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.order-number {
|
|
49
|
+
margin-top: var(--account_orderNumberMTop);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.btn-wrap {
|
|
53
|
+
margin-top: var(--account_btnWrapperMTop);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.billing-address-wrapper {
|
|
58
|
+
margin-left: calc(-1 * calc(var(--account_itemDistance) / 2));
|
|
59
|
+
margin-top: var(--account_itemDistance);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.shipping-address-wrapper {
|
|
63
|
+
margin-left: calc(-1 * calc(var(--account_itemDistance) / 2));
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
@media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeXLMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeL}) {
|
|
67
|
+
--account_billingWrapperMTop: var(--sp11x);
|
|
68
|
+
--account_itemDistance: var(--sp4x);
|
|
69
|
+
|
|
70
|
+
--account_confWrapMTop: var(--sp18x);
|
|
71
|
+
--account_confWrapMaxWidth: var(--sp70x);
|
|
72
|
+
--account_titleMTop: var(--sp8x);
|
|
73
|
+
--account_descMTop: var(--sp2x);
|
|
74
|
+
--account_orderNumberMTop: var(--sp1x);
|
|
75
|
+
--account_btnWrapperMTop: var(--sp6x);
|
|
76
|
+
--account_imageWidth: 41.8%;
|
|
77
|
+
--account_imageHeight: 26.8%;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
@media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeLMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeM}) {
|
|
81
|
+
--account_billingWrapperMTop: var(--sp8x);
|
|
82
|
+
--account_itemDistance: var(--sp4x);
|
|
83
|
+
|
|
84
|
+
--account_confWrapMTop: var(--sp9x);
|
|
85
|
+
--account_confWrapMaxWidth: var(--sp70x);
|
|
86
|
+
--account_titleMTop: var(--sp6x);
|
|
87
|
+
--account_descMTop: var(--sp2x);
|
|
88
|
+
--account_orderNumberMTop: var(--sp1x);
|
|
89
|
+
--account_btnWrapperMTop: var(--sp4x);
|
|
90
|
+
--account_imageWidth: 30.8%;
|
|
91
|
+
--account_imageHeight: 19.8%;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
@media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeMMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeS}) {
|
|
95
|
+
--account_billingWrapperMTop: var(--sp8x);
|
|
96
|
+
--account_itemDistance: var(--sp4x);
|
|
97
|
+
|
|
98
|
+
--account_confWrapMTop: var(--sp8x);
|
|
99
|
+
--account_confWrapMaxWidth: var(--sp53x);
|
|
100
|
+
--account_titleMTop: var(--sp5x);
|
|
101
|
+
--account_descMTop: var(--sp2x);
|
|
102
|
+
--account_orderNumberMTop: var(--sp1x);
|
|
103
|
+
--account_btnWrapperMTop: var(--sp4x);
|
|
104
|
+
--account_imageWidth: 34.8%;
|
|
105
|
+
--account_imageHeight: 22.2%;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
@media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeSMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeXS}) {
|
|
109
|
+
--account_billingWrapperMTop: var(--sp8x);
|
|
110
|
+
--account_itemDistance: var(--sp3x);
|
|
111
|
+
|
|
112
|
+
--account_confWrapMTop: var(--sp11x);
|
|
113
|
+
--account_confWrapMaxWidth: var(--sp47x);
|
|
114
|
+
--account_titleMTop: var(--sp6x);
|
|
115
|
+
--account_descMTop: var(--sp2x);
|
|
116
|
+
--account_orderNumberMTop: var(--sp0-5x);
|
|
117
|
+
--account_btnWrapperMTop: var(--sp3x);
|
|
118
|
+
--account_imageWidth: 32.5%;
|
|
119
|
+
--account_imageHeight: 21.1%;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
@media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_DesktopSizeXSMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_TabletSize}) {
|
|
123
|
+
--account_billingWrapperMTop: var(--sp7x);
|
|
124
|
+
--account_itemDistance: var(--sp3x);
|
|
125
|
+
|
|
126
|
+
--account_confWrapMTop: var(--sp9x);
|
|
127
|
+
--account_confWrapMaxWidth: var(--sp43x);
|
|
128
|
+
--account_titleMTop: var(--sp5x);
|
|
129
|
+
--account_descMTop: var(--sp2x);
|
|
130
|
+
--account_orderNumberMTop: var(--sp0-5x);
|
|
131
|
+
--account_btnWrapperMTop: var(--sp3x);
|
|
132
|
+
--account_imageWidth: 32.5%;
|
|
133
|
+
--account_imageHeight: 21.1%;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
@media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_TabletSizeMin}) and (min-width: ${(props) => props.theme.account.mediaQuery.account_TabletSizeS}) {
|
|
137
|
+
--account_billingWrapperMTop: var(--sp7x);
|
|
138
|
+
--account_itemDistance: var(--sp3x);
|
|
139
|
+
|
|
140
|
+
--account_confWrapMTop: var(--sp19x);
|
|
141
|
+
--account_confWrapMaxWidth: var(--sp56x);
|
|
142
|
+
--account_titleMTop: var(--sp5x);
|
|
143
|
+
--account_descMTop: var(--sp2x);
|
|
144
|
+
--account_orderNumberMTop: var(--sp0-5x);
|
|
145
|
+
--account_btnWrapperMTop: var(--sp4x);
|
|
146
|
+
--account_imageWidth: 24.8%;
|
|
147
|
+
--account_imageHeight: 16.1%;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
@media only screen and (max-width: ${(props) => props.theme.account.mediaQuery.account_TabletSizeSMin}) {
|
|
151
|
+
--account_billingWrapperMTop: var(--sp8x);
|
|
152
|
+
--account_itemDistance: var(--sp6x);
|
|
153
|
+
|
|
154
|
+
--account_confWrapMTop: var(--sp16x);
|
|
155
|
+
--account_confWrapMaxWidth: 100%;
|
|
156
|
+
--account_titleMTop: var(--sp5x);
|
|
157
|
+
--account_descMTop: var(--sp1x);
|
|
158
|
+
--account_orderNumberMTop: var(--sp0-5x);
|
|
159
|
+
--account_btnWrapperMTop: var(--sp3x);
|
|
160
|
+
--account_imageWidth: 29.1%;
|
|
161
|
+
--account_imageHeight: 19%;
|
|
162
|
+
|
|
163
|
+
.shipping-billing-change-wrapper {
|
|
164
|
+
margin-left: 0;
|
|
165
|
+
margin-right: 0;
|
|
166
|
+
|
|
167
|
+
.item-container {
|
|
168
|
+
padding: 0;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
`;
|
|
173
|
+
export default CheckoutTemplateStyle;
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface ForgotPasswordProps {
|
|
3
|
+
onFormSubmit: (values: any) => Promise<any>;
|
|
4
|
+
}
|
|
5
|
+
declare const ForgotPasswordTemplate: ({ onFormSubmit }: ForgotPasswordProps) => React.JSX.Element;
|
|
1
6
|
export default ForgotPasswordTemplate;
|
|
2
|
-
declare function ForgotPasswordTemplate(): React.JSX.Element;
|
|
3
|
-
import React from "react";
|
|
@@ -1,5 +1,88 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import React, { useRef, useState } from 'react';
|
|
2
|
+
import { Text, Link, Page } from '@weareconceptstudio/core';
|
|
3
|
+
import { Form, Input } from '@weareconceptstudio/form';
|
|
4
|
+
import { AccountButton, WarningMessage } from '../../components';
|
|
5
|
+
import ForgotPasswordTemplateStyle from './style';
|
|
6
|
+
const ForgotPasswordTemplate = ({ onFormSubmit }) => {
|
|
7
|
+
//! Ref
|
|
8
|
+
const tryAgainTimeout = useRef();
|
|
9
|
+
//! State
|
|
10
|
+
const [forgotState, setForgotState] = useState({
|
|
11
|
+
isSuccess: false,
|
|
12
|
+
email: null,
|
|
13
|
+
error: null,
|
|
14
|
+
isSent: false,
|
|
15
|
+
isBtnDisabled: false,
|
|
16
|
+
});
|
|
17
|
+
const handleFormFinish = async (values) => {
|
|
18
|
+
return await onFormSubmit(values).then(() => {
|
|
19
|
+
setForgotState((prev) => ({
|
|
20
|
+
...prev,
|
|
21
|
+
email: values.email,
|
|
22
|
+
isSuccess: true,
|
|
23
|
+
}));
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
const handleTryAgain = () => {
|
|
27
|
+
setForgotState((prev) => ({
|
|
28
|
+
...prev,
|
|
29
|
+
error: '',
|
|
30
|
+
isBtnDisabled: true,
|
|
31
|
+
}));
|
|
32
|
+
// @ts-ignore
|
|
33
|
+
tryAgainTimeout.current = setTimeout(() => {
|
|
34
|
+
setForgotState((prev) => ({
|
|
35
|
+
...prev,
|
|
36
|
+
isSent: false,
|
|
37
|
+
isBtnDisabled: false,
|
|
38
|
+
}));
|
|
39
|
+
}, 60000);
|
|
40
|
+
return (!forgotState.isBtnDisabled &&
|
|
41
|
+
onFormSubmit({ email: forgotState.email })
|
|
42
|
+
.then(() => {
|
|
43
|
+
setForgotState((prev) => ({
|
|
44
|
+
...prev,
|
|
45
|
+
isSent: true,
|
|
46
|
+
}));
|
|
47
|
+
})
|
|
48
|
+
.catch((err) => {
|
|
49
|
+
setForgotState((prev) => ({
|
|
50
|
+
...prev,
|
|
51
|
+
isBtnDisabled: true,
|
|
52
|
+
error: err.data.errors.email[0],
|
|
53
|
+
}));
|
|
54
|
+
tryAgainTimeout.current && clearTimeout(tryAgainTimeout.current);
|
|
55
|
+
}));
|
|
56
|
+
};
|
|
57
|
+
return (React.createElement(Page, { className: 'forgot-password use-account' },
|
|
58
|
+
React.createElement(ForgotPasswordTemplateStyle, null,
|
|
59
|
+
React.createElement("div", { className: `forgot-password-wrapper` }, !forgotState.isSuccess ? (React.createElement(React.Fragment, null,
|
|
60
|
+
React.createElement(Text, { tag: 'h1', className: 'account-h2 account-font-bold account-primary-color1 title', text: 'forgotPassword' }),
|
|
61
|
+
React.createElement(Text, { className: 'account-p account-p2 account-font-regular account-primary-color1 description', text: 'forgotPasswordDescription' }),
|
|
62
|
+
React.createElement(Form, { onSubmit: handleFormFinish },
|
|
63
|
+
React.createElement(Form.Item, { name: 'email', label: 'email' },
|
|
64
|
+
React.createElement(Input, { placeholder: 'emailPlaceholder' })),
|
|
65
|
+
React.createElement("div", { className: 'loginExternalBlock' },
|
|
66
|
+
React.createElement(Link, { href: '/sign-in' },
|
|
67
|
+
React.createElement(Text, { tag: 'span', className: 'account-p account-p3 account-font-medium account-primary-color1 underline login-external', text: 'login' }))),
|
|
68
|
+
React.createElement(AccountButton
|
|
69
|
+
// @ts-ignore
|
|
70
|
+
, {
|
|
71
|
+
// @ts-ignore
|
|
72
|
+
text: `submit`, type: `submit`, btnType: `full-width` })))) : (React.createElement(React.Fragment, null,
|
|
73
|
+
React.createElement(Text, { tag: 'h2', className: 'account-h2 account-font-bold account-primary-color1 title', text: 'thankYou' }),
|
|
74
|
+
React.createElement("div", { className: 'recovery-wrap' },
|
|
75
|
+
React.createElement(Text, { className: 'account-p account-p2 account-font-medium account-primary-color1', text: 'recoveryText' }),
|
|
76
|
+
"\u00A0",
|
|
77
|
+
React.createElement(Text, { className: 'account-p account-p2 account-font-bold account-primary-color1', text: forgotState.email })),
|
|
78
|
+
React.createElement("div", { className: 'try-again-wrap' },
|
|
79
|
+
React.createElement(Text, { className: `account-p account-p2 account-font-medium account-primary-color1`, text: `tryAgainText` }),
|
|
80
|
+
"\u00A0",
|
|
81
|
+
React.createElement(Text, { text: `tryAgain`, onClick: handleTryAgain, className: `account-p account-p2 account-font-bold account-primary-color1 underline try-again-text ${forgotState.isBtnDisabled ? 'disabled' : ''}` })),
|
|
82
|
+
React.createElement(WarningMessage
|
|
83
|
+
// @ts-ignore
|
|
84
|
+
, {
|
|
85
|
+
// @ts-ignore
|
|
86
|
+
error: forgotState.error, isSent: forgotState.isSent, successTitle: 'recoverPassword', successSubtitle: 'recoverPasswordDesc' })))))));
|
|
4
87
|
};
|
|
5
88
|
export default ForgotPasswordTemplate;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export default ForgotPasswordTemplateStyle;
|
|
2
|
+
declare const ForgotPasswordTemplateStyle: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLElement>, HTMLElement>, never>> & string;
|