ordering-ui-react-native 0.15.76 → 0.15.77-release

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 (221) hide show
  1. package/package.json +7 -3
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/ActiveOrders/index.tsx +61 -63
  4. package/src/components/ActiveOrders/styles.tsx +1 -1
  5. package/src/components/AddressForm/index.tsx +18 -2
  6. package/src/components/BusinessBasicInformation/index.tsx +11 -19
  7. package/src/components/BusinessController/index.tsx +16 -8
  8. package/src/components/BusinessInformation/index.tsx +14 -0
  9. package/src/components/BusinessTypeFilter/index.tsx +1 -2
  10. package/src/components/BusinessesListing/index.tsx +1 -1
  11. package/src/components/Checkout/index.tsx +25 -3
  12. package/src/components/DriverTips/index.tsx +11 -6
  13. package/src/components/LanguageSelector/index.tsx +6 -2
  14. package/src/components/LoginForm/index.tsx +120 -30
  15. package/src/components/LoginForm/styles.tsx +6 -0
  16. package/src/components/NotificationSetting/index.tsx +85 -0
  17. package/src/components/OrderDetails/index.tsx +7 -21
  18. package/src/components/PaymentOptions/index.tsx +335 -365
  19. package/src/components/PaymentOptionsWebView/index.tsx +120 -121
  20. package/src/components/ReviewDriver/index.tsx +1 -1
  21. package/src/components/ReviewOrder/index.tsx +2 -1
  22. package/src/components/ReviewProducts/index.tsx +11 -0
  23. package/src/components/SignupForm/index.tsx +145 -61
  24. package/src/components/SingleProductCard/index.tsx +16 -4
  25. package/src/components/SingleProductReview/index.tsx +1 -1
  26. package/src/components/StripeElementsForm/index.tsx +25 -16
  27. package/src/components/StripeMethodForm/index.tsx +22 -24
  28. package/src/components/UpsellingProducts/index.tsx +1 -1
  29. package/src/components/UserProfileForm/index.tsx +63 -6
  30. package/src/components/UserProfileForm/styles.tsx +8 -0
  31. package/src/components/VerifyPhone/styles.tsx +1 -2
  32. package/src/components/shared/OBottomPopup.tsx +6 -2
  33. package/src/components/shared/OModal.tsx +1 -1
  34. package/src/hooks/useCountdownTimer.tsx +26 -0
  35. package/src/index.tsx +2 -0
  36. package/src/navigators/CheckoutNavigator.tsx +6 -0
  37. package/src/navigators/HomeNavigator.tsx +12 -0
  38. package/src/pages/BusinessesListing.tsx +7 -6
  39. package/src/pages/MultiCheckout.tsx +31 -0
  40. package/src/pages/MultiOrdersDetails.tsx +27 -0
  41. package/src/pages/OrderDetails.tsx +1 -1
  42. package/src/pages/ReviewDriver.tsx +2 -2
  43. package/src/pages/ReviewOrder.tsx +2 -2
  44. package/src/pages/Sessions.tsx +22 -0
  45. package/src/theme.json +0 -1
  46. package/src/types/index.tsx +18 -11
  47. package/src/utils/index.tsx +28 -29
  48. package/themes/business/index.tsx +4 -0
  49. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +100 -60
  50. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
  51. package/themes/business/src/components/Chat/index.tsx +51 -91
  52. package/themes/business/src/components/DriverMap/index.tsx +6 -5
  53. package/themes/business/src/components/DriverSchedule/index.tsx +71 -0
  54. package/themes/business/src/components/DriverSchedule/styles.tsx +6 -0
  55. package/themes/business/src/components/LoginForm/index.tsx +89 -2
  56. package/themes/business/src/components/LoginForm/styles.tsx +6 -0
  57. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  58. package/themes/business/src/components/NewOrderNotification/index.tsx +26 -13
  59. package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
  60. package/themes/business/src/components/OrderDetails/Delivery.tsx +28 -11
  61. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +9 -2
  62. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +6 -0
  63. package/themes/business/src/components/OrdersListManager/index.tsx +11 -4
  64. package/themes/business/src/components/OrdersOption/index.tsx +16 -4
  65. package/themes/business/src/components/PreviousOrders/index.tsx +7 -7
  66. package/themes/business/src/components/ProductItemAccordion/index.tsx +2 -2
  67. package/themes/business/src/components/ScheduleBlocked/index.tsx +53 -0
  68. package/themes/business/src/components/UserFormDetails/index.tsx +5 -2
  69. package/themes/business/src/components/UserProfileForm/index.tsx +28 -4
  70. package/themes/business/src/components/shared/OModal.tsx +41 -38
  71. package/themes/business/src/types/index.tsx +14 -7
  72. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  73. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  74. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  75. package/themes/kiosk/src/components/BusinessMenu/index.tsx +39 -28
  76. package/themes/kiosk/src/components/BusinessesListing/index.tsx +2 -3
  77. package/themes/kiosk/src/components/Cart/index.tsx +11 -12
  78. package/themes/kiosk/src/components/CartBottomSheet/index.tsx +9 -2
  79. package/themes/kiosk/src/components/CartContent/index.tsx +0 -11
  80. package/themes/kiosk/src/components/CartItem/index.tsx +4 -3
  81. package/themes/kiosk/src/components/CategoriesMenu/index.tsx +107 -62
  82. package/themes/kiosk/src/components/Checkout/index.tsx +40 -22
  83. package/themes/kiosk/src/components/CustomerName/index.tsx +0 -6
  84. package/themes/kiosk/src/components/DrawerView/index.tsx +1 -0
  85. package/themes/kiosk/src/components/DrawerView/styles.tsx +2 -2
  86. package/themes/kiosk/src/components/NavBar/index.tsx +29 -20
  87. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  88. package/themes/kiosk/src/components/OrderDetails/index.tsx +32 -27
  89. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +9 -11
  90. package/themes/kiosk/src/components/PaymentOptions/index.tsx +56 -54
  91. package/themes/kiosk/src/components/ProductForm/index.tsx +6 -7
  92. package/themes/kiosk/src/components/ProductItemAccordion/index.tsx +2 -2
  93. package/themes/kiosk/src/components/ProductOption/index.tsx +1 -1
  94. package/themes/kiosk/src/components/ProductOptionSubOption/index.tsx +3 -1
  95. package/themes/kiosk/src/components/UpsellingProducts/index.tsx +16 -5
  96. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  97. package/themes/kiosk/src/types/index.d.ts +1 -0
  98. package/themes/original/index.tsx +24 -0
  99. package/themes/original/src/components/ActiveOrders/index.tsx +15 -132
  100. package/themes/original/src/components/ActiveOrders/styles.tsx +0 -54
  101. package/themes/original/src/components/AddressForm/index.tsx +7 -6
  102. package/themes/original/src/components/AddressList/index.tsx +2 -2
  103. package/themes/original/src/components/AppleLogin/index.tsx +6 -8
  104. package/themes/original/src/components/BusinessBasicInformation/index.tsx +287 -150
  105. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +6 -2
  106. package/themes/original/src/components/BusinessController/index.tsx +201 -96
  107. package/themes/original/src/components/BusinessController/styles.tsx +5 -0
  108. package/themes/original/src/components/BusinessItemAccordion/index.tsx +8 -5
  109. package/themes/original/src/components/BusinessItemAccordion/styles.tsx +3 -1
  110. package/themes/original/src/components/BusinessListingSearch/index.tsx +234 -64
  111. package/themes/original/src/components/BusinessListingSearch/styles.tsx +22 -2
  112. package/themes/original/src/components/BusinessPreorder/index.tsx +1 -1
  113. package/themes/original/src/components/BusinessProductsCategories/index.tsx +2 -2
  114. package/themes/original/src/components/BusinessProductsList/CategoryDescription/index.tsx +44 -0
  115. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +87 -0
  116. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/styles.tsx +12 -0
  117. package/themes/original/src/components/BusinessProductsList/index.tsx +65 -73
  118. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  119. package/themes/original/src/components/BusinessProductsListing/index.tsx +315 -176
  120. package/themes/original/src/components/BusinessProductsListing/styles.tsx +11 -0
  121. package/themes/original/src/components/BusinessReviews/index.tsx +6 -1
  122. package/themes/original/src/components/BusinessTypeFilter/index.tsx +106 -38
  123. package/themes/original/src/components/BusinessTypeFilter/styles.tsx +2 -0
  124. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +560 -0
  125. package/themes/original/src/components/BusinessesListing/{styles.tsx → Layout/Appointment/styles.tsx} +24 -2
  126. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +661 -0
  127. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +137 -0
  128. package/themes/original/src/components/BusinessesListing/index.tsx +104 -462
  129. package/themes/original/src/components/Cart/index.tsx +84 -39
  130. package/themes/original/src/components/Cart/styles.tsx +4 -0
  131. package/themes/original/src/components/Checkout/index.tsx +90 -40
  132. package/themes/original/src/components/Checkout/styles.tsx +0 -1
  133. package/themes/original/src/components/DriverTips/index.tsx +17 -12
  134. package/themes/original/src/components/Favorite/index.tsx +92 -0
  135. package/themes/original/src/components/Favorite/styles.tsx +22 -0
  136. package/themes/original/src/components/FavoriteList/index.tsx +298 -0
  137. package/themes/original/src/components/FavoriteList/styles.tsx +5 -0
  138. package/themes/original/src/components/ForgotPasswordForm/index.tsx +84 -4
  139. package/themes/original/src/components/GPSButton/index.tsx +15 -8
  140. package/themes/original/src/components/GoogleMap/index.tsx +11 -11
  141. package/themes/original/src/components/Help/index.tsx +21 -4
  142. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +18 -1
  143. package/themes/original/src/components/LastOrders/index.tsx +12 -1
  144. package/themes/original/src/components/LoginForm/Otp/index.tsx +91 -0
  145. package/themes/original/src/components/LoginForm/Otp/styles.tsx +7 -0
  146. package/themes/original/src/components/LoginForm/index.tsx +332 -164
  147. package/themes/original/src/components/LoginForm/styles.tsx +1 -3
  148. package/themes/original/src/components/Messages/index.tsx +1 -1
  149. package/themes/original/src/components/MomentSelector/index.tsx +197 -0
  150. package/themes/original/src/components/MomentSelector/styles.tsx +6 -0
  151. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +243 -0
  152. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/styles.tsx +46 -0
  153. package/themes/original/src/components/MultiCheckout/index.tsx +304 -0
  154. package/themes/original/src/components/MultiCheckout/styles.tsx +59 -0
  155. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +372 -0
  156. package/themes/original/src/components/MultiOrdersDetails/index.tsx +258 -0
  157. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +50 -0
  158. package/themes/original/src/components/MyOrders/index.tsx +132 -27
  159. package/themes/original/src/components/MyOrders/styles.tsx +8 -1
  160. package/themes/original/src/components/NavBar/index.tsx +4 -4
  161. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +167 -0
  162. package/themes/original/src/components/OrderDetails/index.tsx +148 -63
  163. package/themes/original/src/components/OrderDetails/styles.tsx +1 -2
  164. package/themes/original/src/components/OrderItAgain/index.tsx +72 -0
  165. package/themes/original/src/components/OrderItAgain/styles.tsx +10 -0
  166. package/themes/original/src/components/OrderSummary/index.tsx +5 -5
  167. package/themes/original/src/components/OrderTypeSelector/index.tsx +77 -35
  168. package/themes/original/src/components/OrderTypeSelector/styles.tsx +19 -1
  169. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +153 -0
  170. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/styles.tsx +6 -0
  171. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +53 -0
  172. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/styles.tsx +6 -0
  173. package/themes/original/src/components/OrdersOption/index.tsx +139 -46
  174. package/themes/original/src/components/OrdersOption/styles.tsx +4 -1
  175. package/themes/original/src/components/PaymentOptionCash/index.tsx +2 -2
  176. package/themes/original/src/components/PaymentOptionWallet/index.tsx +15 -22
  177. package/themes/original/src/components/PaymentOptions/index.tsx +57 -37
  178. package/themes/original/src/components/PhoneInputNumber/index.tsx +5 -11
  179. package/themes/original/src/components/PreviousOrders/index.tsx +18 -147
  180. package/themes/original/src/components/ProductForm/index.tsx +712 -673
  181. package/themes/original/src/components/ProductForm/styles.tsx +9 -7
  182. package/themes/original/src/components/ProductItemAccordion/index.tsx +2 -2
  183. package/themes/original/src/components/ProductOption/index.tsx +1 -1
  184. package/themes/original/src/components/ProductOptionSubOption/index.tsx +13 -9
  185. package/themes/original/src/components/ProfessionalFilter/index.tsx +128 -0
  186. package/themes/original/src/components/ProfessionalFilter/styles.tsx +0 -0
  187. package/themes/original/src/components/ProfessionalProfile/index.tsx +298 -0
  188. package/themes/original/src/components/ProfessionalProfile/styles.tsx +46 -0
  189. package/themes/original/src/components/Promotions/index.tsx +151 -133
  190. package/themes/original/src/components/Promotions/styles.tsx +2 -1
  191. package/themes/original/src/components/ReviewDriver/index.tsx +6 -6
  192. package/themes/original/src/components/ReviewOrder/index.tsx +1 -1
  193. package/themes/original/src/components/ReviewTrigger/index.tsx +118 -0
  194. package/themes/original/src/components/ReviewTrigger/styles.tsx +34 -0
  195. package/themes/original/src/components/SearchBar/index.tsx +13 -5
  196. package/themes/original/src/components/ServiceForm/index.tsx +579 -0
  197. package/themes/original/src/components/ServiceForm/styles.tsx +50 -0
  198. package/themes/original/src/components/Sessions/index.tsx +160 -0
  199. package/themes/original/src/components/Sessions/styles.tsx +15 -0
  200. package/themes/original/src/components/SignupForm/index.tsx +237 -126
  201. package/themes/original/src/components/SingleOrderCard/index.tsx +316 -0
  202. package/themes/original/src/components/SingleOrderCard/styles.tsx +54 -0
  203. package/themes/original/src/components/SingleProductCard/index.tsx +220 -94
  204. package/themes/original/src/components/SingleProductCard/styles.tsx +2 -2
  205. package/themes/original/src/components/StripeElementsForm/index.tsx +25 -9
  206. package/themes/original/src/components/StripeElementsForm/naked.tsx +2 -2
  207. package/themes/original/src/components/UpsellingProducts/index.tsx +2 -6
  208. package/themes/original/src/components/UserDetails/index.tsx +32 -18
  209. package/themes/original/src/components/UserFormDetails/index.tsx +108 -74
  210. package/themes/original/src/components/UserProfile/index.tsx +10 -1
  211. package/themes/original/src/components/UserProfileForm/index.tsx +14 -9
  212. package/themes/original/src/components/UserVerification/index.tsx +178 -192
  213. package/themes/original/src/components/Wallets/index.tsx +2 -2
  214. package/themes/original/src/components/shared/OBottomPopup.tsx +47 -14
  215. package/themes/original/src/components/shared/OButton.tsx +2 -0
  216. package/themes/original/src/components/shared/OInput.tsx +3 -2
  217. package/themes/original/src/components/shared/OModal.tsx +4 -2
  218. package/themes/original/src/layouts/FloatingBottomContainer.tsx +5 -1
  219. package/themes/original/src/types/index.tsx +199 -36
  220. package/themes/original/src/utils/index.tsx +94 -1
  221. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -0,0 +1,304 @@
1
+ import React, { useState, useEffect } from 'react'
2
+ import {
3
+ useLanguage,
4
+ useConfig,
5
+ useUtils,
6
+ useOrder,
7
+ useValidationFields,
8
+ useSession,
9
+ useToast,
10
+ ToastType,
11
+ MultiCheckout as MultiCheckoutController
12
+ } from 'ordering-components/native'
13
+ import { View, StyleSheet, Platform } from 'react-native'
14
+ import { useTheme } from 'styled-components/native';
15
+ import { Container } from '../../layouts/Container';
16
+ import NavBar from '../NavBar';
17
+ import { OText, OIcon, OModal } from '../shared';
18
+ import { getTypesText } from '../../utils';
19
+ import { UserDetails } from '../UserDetails'
20
+ import { AddressDetails } from '../AddressDetails'
21
+ import { MultiCartsPaymethodsAndWallets } from '../MultiCartsPaymethodsAndWallets'
22
+ import { Cart } from '../Cart'
23
+ import { FloatingButton } from '../FloatingButton'
24
+
25
+ import {
26
+ ChContainer,
27
+ ChSection,
28
+ ChHeader,
29
+ CHMomentWrapper,
30
+ ChUserDetails,
31
+ ChAddress,
32
+ ChCarts,
33
+ CartsHeader,
34
+ CCNotCarts,
35
+ ChCartsTotal
36
+ } from './styles'
37
+
38
+ const mapConfigs = {
39
+ mapZoom: 16,
40
+ mapSize: {
41
+ width: 640,
42
+ height: 190
43
+ }
44
+ }
45
+
46
+ const MultiCheckoutUI = (props: any) => {
47
+ const {
48
+ navigation,
49
+ placing,
50
+ openCarts,
51
+ totalCartsPrice,
52
+ handleGroupPlaceOrder,
53
+ paymethodSelected,
54
+ handleSelectPaymethod,
55
+ handleSelectWallet,
56
+ handlePaymethodDataChange
57
+ } = props
58
+
59
+ const theme = useTheme();
60
+ const styles = StyleSheet.create({
61
+ pagePadding: {
62
+ paddingLeft: 40,
63
+ paddingRight: 40
64
+ },
65
+ wrapperNavbar: Platform.OS === 'ios'
66
+ ? { paddingVertical: 0, paddingHorizontal: 40 }
67
+ : { paddingVertical: 20, paddingHorizontal: 40 }
68
+ })
69
+
70
+ const [, { showToast }] = useToast();
71
+ const [, t] = useLanguage()
72
+ const [{ configs }] = useConfig();
73
+ const [{ parsePrice, parseDate }] = useUtils();
74
+ const [{ options, carts, loading }, { confirmCart }] = useOrder();
75
+ const [validationFields] = useValidationFields();
76
+ const [{ user }] = useSession()
77
+
78
+ const configTypes = configs?.order_types_allowed?.value.split('|').map((value: any) => Number(value)) || []
79
+ const isPreOrder = configs?.preorder_status_enabled?.value === '1'
80
+ const maximumCarts = 5
81
+ const isDisablePlaceOrderButton = !(paymethodSelected?.paymethod_id || paymethodSelected?.wallet_id) || openCarts.length > maximumCarts
82
+ const walletCarts = (Object.values(carts)?.filter((cart: any) => cart?.products && cart?.products?.length && cart?.status !== 2 && cart?.valid_schedule && cart?.valid_products && cart?.valid_address && cart?.valid_maximum && cart?.valid_minimum && cart?.wallets) || null) || []
83
+
84
+ const [isUserDetailsEdit, setIsUserDetailsEdit] = useState(false);
85
+ const [phoneUpdate, setPhoneUpdate] = useState(false);
86
+ const [userErrors, setUserErrors] = useState<any>([]);
87
+ const handleMomentClick = () => {
88
+ if (isPreOrder) {
89
+ navigation.navigate('MomentOption')
90
+ }
91
+ }
92
+
93
+ const checkValidationFields = () => {
94
+ setUserErrors([])
95
+ const errors = []
96
+ const notFields = ['coupon', 'driver_tip', 'mobile_phone', 'address', 'zipcode', 'address_notes']
97
+
98
+ Object.values(validationFields?.fields?.checkout).map((field: any) => {
99
+ if (field?.required && !notFields.includes(field.code)) {
100
+ if (!user[field?.code]) {
101
+ errors.push(t(`VALIDATION_ERROR_${field.code.toUpperCase()}_REQUIRED`, `The field ${field?.name} is required`))
102
+ }
103
+ }
104
+ })
105
+
106
+ if (
107
+ !user?.cellphone &&
108
+ ((validationFields?.fields?.checkout?.cellphone?.enabled &&
109
+ validationFields?.fields?.checkout?.cellphone?.required) ||
110
+ configs?.verification_phone_required?.value === '1')
111
+ ) {
112
+ errors.push(t('VALIDATION_ERROR_MOBILE_PHONE_REQUIRED', 'The field Phone number is required'))
113
+ }
114
+
115
+ if (phoneUpdate) {
116
+ errors.push(t('NECESSARY_UPDATE_COUNTRY_PHONE_CODE', 'It is necessary to update your phone number'))
117
+ }
118
+
119
+ setUserErrors(errors)
120
+ }
121
+
122
+ const togglePhoneUpdate = (val: boolean) => {
123
+ setPhoneUpdate(val)
124
+ }
125
+
126
+ const handlePlaceOrder = () => {
127
+ if (!userErrors.length) {
128
+ handleGroupPlaceOrder && handleGroupPlaceOrder()
129
+ return
130
+ }
131
+ let stringError = ''
132
+ Object.values(userErrors).map((item: any, i: number) => {
133
+ stringError += (i + 1) === userErrors.length ? `- ${item?.message || item}` : `- ${item?.message || item}\n`
134
+ })
135
+ showToast(ToastType.Error, stringError)
136
+ setIsUserDetailsEdit(true)
137
+ }
138
+
139
+ useEffect(() => {
140
+ if (validationFields && validationFields?.fields?.checkout) {
141
+ checkValidationFields()
142
+ }
143
+ }, [validationFields, user])
144
+
145
+ return (
146
+ <>
147
+ <Container noPadding>
148
+ <View style={styles.wrapperNavbar}>
149
+ <NavBar
150
+ isVertical
151
+ title={t('CHECKOUT', 'Checkout')}
152
+ titleAlign={'center'}
153
+ onActionLeft={() => navigation?.canGoBack() && navigation.goBack()}
154
+ showCall={false}
155
+ btnStyle={{ paddingLeft: 0 }}
156
+ style={{ marginTop: Platform.OS === 'ios' ? 0 : 30 }}
157
+ titleWrapStyle={{ paddingHorizontal: 0 }}
158
+ titleStyle={{ marginRight: 0, marginLeft: 0 }}
159
+ />
160
+ </View>
161
+ <ChContainer style={styles.pagePadding}>
162
+ <ChSection style={{ paddingTop: 0 }}>
163
+ <ChHeader>
164
+ <CHMomentWrapper onPress={() => navigation.navigate('OrderTypes', { configTypes: configTypes })}>
165
+ <OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textSecondary}>{t(getTypesText(options?.type || 1), 'Delivery')}</OText>
166
+ <OIcon
167
+ src={theme.images.general.arrow_down}
168
+ width={10}
169
+ style={{ marginStart: 8 }}
170
+ />
171
+ </CHMomentWrapper>
172
+ <CHMomentWrapper
173
+ onPress={() => handleMomentClick()}
174
+ disabled={loading}
175
+ >
176
+ <OText size={12} numberOfLines={1} ellipsizeMode='tail' color={theme.colors.textSecondary}>
177
+ {options?.moment
178
+ ? parseDate(options?.moment, { outputFormat: configs?.dates_moment_format?.value })
179
+ : t('ASAP_ABBREVIATION', 'ASAP')}
180
+ </OText>
181
+ {isPreOrder && (
182
+ <OIcon
183
+ src={theme.images.general.arrow_down}
184
+ width={10}
185
+ style={{ marginStart: 8 }}
186
+ />
187
+ )}
188
+ </CHMomentWrapper>
189
+ </ChHeader>
190
+ <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginTop: 18, marginHorizontal: -40 }} />
191
+ </ChSection>
192
+
193
+ <ChSection>
194
+ <ChUserDetails>
195
+ <UserDetails
196
+ isUserDetailsEdit={isUserDetailsEdit}
197
+ useValidationFields
198
+ useDefualtSessionManager
199
+ useSessionUser
200
+ isCheckout
201
+ phoneUpdate={phoneUpdate}
202
+ togglePhoneUpdate={togglePhoneUpdate}
203
+ />
204
+ </ChUserDetails>
205
+ <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginHorizontal: -40 }} />
206
+ </ChSection>
207
+
208
+ <ChSection>
209
+ <ChAddress>
210
+ <AddressDetails
211
+ navigation={navigation}
212
+ isMultiCheckout
213
+ openCarts={openCarts}
214
+ apiKey={configs?.google_maps_api_key?.value}
215
+ mapConfigs={mapConfigs}
216
+ />
217
+ </ChAddress>
218
+ <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginTop: 13, marginHorizontal: -40 }} />
219
+ </ChSection>
220
+
221
+ <ChSection>
222
+ <MultiCartsPaymethodsAndWallets
223
+ openCarts={openCarts}
224
+ paymethodSelected={paymethodSelected}
225
+ handleSelectPaymethod={handleSelectPaymethod}
226
+ handleSelectWallet={handleSelectWallet}
227
+ handlePaymethodDataChange={handlePaymethodDataChange}
228
+ />
229
+ <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginTop: 13, marginHorizontal: -40 }} />
230
+ </ChSection>
231
+
232
+ <ChSection>
233
+ <ChCarts>
234
+ <CartsHeader>
235
+ <OText size={16} lineHeight={24} color={theme.colors.textNormal} style={{ fontWeight: '500' }}>
236
+ {t('MOBILE_FRONT_YOUR_ORDER', 'Your order')}
237
+ </OText>
238
+ </CartsHeader>
239
+ {openCarts.map((cart: any) => (
240
+ <React.Fragment key={cart.uuid}>
241
+ <Cart
242
+ cart={cart}
243
+ cartuuid={cart.uuid}
244
+ isMultiCheckout
245
+ onNavigationRedirect={(route: string, params: any) => props.navigation.navigate(route, params)}
246
+ />
247
+ <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginTop: 13, marginHorizontal: -40 }} />
248
+ </React.Fragment>
249
+ ))}
250
+ {openCarts.length === 0 && (
251
+ <CCNotCarts>
252
+ <OText size={24} style={{ textAlign: 'center' }}>
253
+ {t('CARTS_NOT_FOUND', 'You don\'t have carts available')}
254
+ </OText>
255
+ </CCNotCarts>
256
+ )}
257
+ {walletCarts.length > 0 && (
258
+ <OText size={14} color={theme.colors.danger5} style={{ marginVertical: 20 }}>
259
+ {t('WARNING_PARTIAL_WALLET_CARTS', 'Important: One or more carts can`t be completed due a partial payment with cash/points wallet and requires to be paid individually')}
260
+ </OText>
261
+ )}
262
+ {openCarts.length > 0 && (
263
+ <ChCartsTotal>
264
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between' }}>
265
+ <OText size={16} lineHeight={24} color={theme.colors.textNormal} weight={'500'}>
266
+ {t('TOTAL_FOR_ALL_CARTS', 'Total for all Carts')}
267
+ </OText>
268
+ <OText size={16} lineHeight={24} color={theme.colors.textNormal} weight={'500'}>{parsePrice(totalCartsPrice)}</OText>
269
+ </View>
270
+ <OText size={12} color={theme.colors.mediumGray} mRight={70} style={{ marginTop: 10 }}>
271
+ {t('MULTI_CHECKOUT_DESCRIPTION', 'You will receive a receipt for each business. The payment is not combined between multiple stores. Each payment is processed by the store')}
272
+ </OText>
273
+ </ChCartsTotal>
274
+ )}
275
+ {openCarts.length > maximumCarts && (
276
+ <OText size={14} color={theme.colors.danger5} style={{ marginVertical: 20 }}>
277
+ {t('WARNING_MAXIMUM_CARTS', 'You can only pay for a maximum of 5 carts, please discard one or more to continue.')}
278
+ </OText>
279
+ )}
280
+ </ChCarts>
281
+ </ChSection>
282
+ </ChContainer>
283
+ </Container>
284
+
285
+ <FloatingButton
286
+ handleClick={() => handlePlaceOrder()}
287
+ isSecondaryBtn={isDisablePlaceOrderButton}
288
+ disabled={isDisablePlaceOrderButton}
289
+ btnText={placing ? t('PLACING', 'Placing') : t('PLACE_ORDER', 'Place Order')}
290
+ btnRightValueShow
291
+ btnRightValue={parsePrice(totalCartsPrice)}
292
+ iosBottom={30}
293
+ />
294
+ </>
295
+ )
296
+ }
297
+
298
+ export const MultiCheckout = (props: any) => {
299
+ const multiCheckoutProps = {
300
+ ...props,
301
+ UIComponent: MultiCheckoutUI
302
+ }
303
+ return <MultiCheckoutController {...multiCheckoutProps} />
304
+ }
@@ -0,0 +1,59 @@
1
+ import styled from 'styled-components/native'
2
+
3
+ export const ChContainer = styled.View`
4
+ margin-bottom: 60px;
5
+ `
6
+ export const ChSection = styled.View`
7
+ padding-top: 30px;
8
+ `
9
+ export const ChHeader = styled.View`
10
+ justify-content: flex-start;
11
+ flex-direction: row;
12
+ align-items: center;
13
+ margin: 0px;
14
+ `
15
+ export const CHMomentWrapper = styled.TouchableOpacity`
16
+ background-color: ${(props: any) => props.theme.colors.backgroundGray100};
17
+ border-radius: 7.6px;
18
+ font-size: 12px;
19
+ max-width: 240px;
20
+ height: 26px;
21
+ align-items: center;
22
+ justify-content: center;
23
+ padding-horizontal: 8px;
24
+ flex-direction: row;
25
+ margin-end: 12px;
26
+ `
27
+ export const ChUserDetails = styled.View`
28
+ display: flex;
29
+ justify-content: center;
30
+ flex-direction: column;
31
+ width: 100%;
32
+ padding-bottom: 34px;
33
+ `
34
+ export const ChAddress = styled.View`
35
+ width: 100%;
36
+ `
37
+ export const ChCarts = styled.View`
38
+ display: flex;
39
+ flex-direction: column;
40
+ padding: 0 0 20px;
41
+ `
42
+ export const CartsHeader = styled.View`
43
+ align-items: center;
44
+ flex-direction: row;
45
+ justify-content: space-between;
46
+ margin-bottom: 10px;
47
+ `
48
+ export const CCNotCarts = styled.View`
49
+ height: 300px;
50
+ display: flex;
51
+ flex-direction: column;
52
+ justify-content: center;
53
+ align-items: center;
54
+ width: 80%;
55
+ margin: auto;
56
+ `
57
+ export const ChCartsTotal = styled.View`
58
+ margin-top: 16px;
59
+ `