ordering-ui-react-native 0.17.42 → 0.17.43-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 (212) hide show
  1. package/package.json +8 -7
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/BusinessesListing/index.tsx +1 -1
  4. package/src/components/OrderCreating/index.tsx +1 -21
  5. package/src/components/PaymentOptionsWebView/index.tsx +29 -8
  6. package/src/components/StripeMethodForm/index.tsx +136 -102
  7. package/src/components/VerifyPhone/styles.tsx +1 -2
  8. package/src/components/shared/OToast.tsx +4 -4
  9. package/src/types/index.tsx +5 -0
  10. package/src/utils/index.tsx +7 -1
  11. package/themes/business/index.tsx +2 -0
  12. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +265 -240
  13. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +6 -4
  14. package/themes/business/src/components/BusinessController/index.tsx +0 -1
  15. package/themes/business/src/components/Chat/index.tsx +125 -113
  16. package/themes/business/src/components/DriverMap/index.tsx +17 -6
  17. package/themes/business/src/components/GoogleMap/index.tsx +58 -57
  18. package/themes/business/src/components/LoginForm/Otp/index.tsx +120 -0
  19. package/themes/business/src/components/LoginForm/Otp/styles.tsx +7 -0
  20. package/themes/business/src/components/LoginForm/index.tsx +238 -80
  21. package/themes/business/src/components/LoginForm/styles.tsx +10 -0
  22. package/themes/business/src/components/MapView/index.tsx +10 -10
  23. package/themes/business/src/components/NewOrderNotification/index.tsx +49 -50
  24. package/themes/business/src/components/OrderDetails/Delivery.tsx +4 -3
  25. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +92 -49
  26. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +59 -62
  27. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +195 -0
  28. package/themes/business/src/components/OrderDetailsLogistic/styles.tsx +5 -0
  29. package/themes/business/src/components/OrderMessage/index.tsx +18 -17
  30. package/themes/business/src/components/OrderSummary/index.tsx +113 -121
  31. package/themes/business/src/components/OrdersOption/index.tsx +32 -75
  32. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +250 -0
  33. package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +115 -0
  34. package/themes/business/src/components/PreviousOrders/index.tsx +445 -243
  35. package/themes/business/src/components/PreviousOrders/styles.tsx +31 -3
  36. package/themes/business/src/components/ProductItemAccordion/index.tsx +27 -3
  37. package/themes/business/src/components/ReviewCustomer/index.tsx +35 -18
  38. package/themes/business/src/components/StoresList/index.tsx +2 -2
  39. package/themes/business/src/components/shared/OLink.tsx +33 -13
  40. package/themes/business/src/components/shared/OModal.tsx +16 -9
  41. package/themes/business/src/components/shared/OText.tsx +8 -2
  42. package/themes/business/src/types/index.tsx +32 -2
  43. package/themes/business/src/utils/index.tsx +44 -1
  44. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  45. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  46. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  47. package/themes/kiosk/src/components/BusinessesListing/index.tsx +2 -1
  48. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  49. package/themes/kiosk/src/components/LoginForm/Otp/index.tsx +92 -0
  50. package/themes/kiosk/src/components/LoginForm/Otp/styles.tsx +7 -0
  51. package/themes/kiosk/src/components/LoginForm/index.tsx +473 -151
  52. package/themes/kiosk/src/components/LoginForm/styles.tsx +14 -1
  53. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  54. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  55. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  56. package/themes/kiosk/src/components/PhoneInputNumber/index.tsx +3 -2
  57. package/themes/kiosk/src/components/PhoneInputNumber/styles.tsx +1 -3
  58. package/themes/kiosk/src/components/ProductForm/index.tsx +1 -14
  59. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  60. package/themes/kiosk/src/components/shared/OModal.tsx +14 -11
  61. package/themes/kiosk/src/layouts/Container.tsx +7 -1
  62. package/themes/kiosk/src/types/index.d.ts +13 -0
  63. package/themes/kiosk/src/utils/index.tsx +15 -0
  64. package/themes/original/index.tsx +6 -0
  65. package/themes/original/src/components/AddressDetails/index.tsx +29 -11
  66. package/themes/original/src/components/AddressForm/index.tsx +79 -44
  67. package/themes/original/src/components/AddressList/index.tsx +26 -21
  68. package/themes/original/src/components/AddressList/styles.tsx +4 -2
  69. package/themes/original/src/components/AnalyticsSegment/index.tsx +193 -10
  70. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  71. package/themes/original/src/components/BusinessBasicInformation/index.tsx +160 -91
  72. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +9 -7
  73. package/themes/original/src/components/BusinessController/index.tsx +141 -67
  74. package/themes/original/src/components/BusinessController/styles.tsx +22 -2
  75. package/themes/original/src/components/BusinessFeaturedController/index.tsx +21 -54
  76. package/themes/original/src/components/BusinessFeaturedController/styles.tsx +8 -0
  77. package/themes/original/src/components/BusinessInformation/index.tsx +10 -31
  78. package/themes/original/src/components/BusinessItemAccordion/index.tsx +23 -22
  79. package/themes/original/src/components/BusinessListingSearch/index.tsx +351 -326
  80. package/themes/original/src/components/BusinessPreorder/index.tsx +97 -16
  81. package/themes/original/src/components/BusinessProductsList/index.tsx +20 -11
  82. package/themes/original/src/components/BusinessProductsList/styles.tsx +8 -3
  83. package/themes/original/src/components/BusinessProductsListing/UpsellingRedirect.tsx +1 -1
  84. package/themes/original/src/components/BusinessProductsListing/index.tsx +684 -524
  85. package/themes/original/src/components/BusinessProductsListing/styles.tsx +2 -4
  86. package/themes/original/src/components/BusinessReviews/index.tsx +3 -1
  87. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +1 -1
  88. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +106 -79
  89. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -9
  90. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  91. package/themes/original/src/components/Cart/index.tsx +102 -69
  92. package/themes/original/src/components/CartContent/index.tsx +115 -19
  93. package/themes/original/src/components/CartContent/styles.tsx +17 -7
  94. package/themes/original/src/components/Checkout/index.tsx +375 -179
  95. package/themes/original/src/components/Checkout/styles.tsx +4 -2
  96. package/themes/original/src/components/CitiesControl/index.tsx +89 -0
  97. package/themes/original/src/components/CitiesControl/styles.tsx +17 -0
  98. package/themes/original/src/components/CouponControl/index.tsx +10 -3
  99. package/themes/original/src/components/DriverTips/index.tsx +52 -34
  100. package/themes/original/src/components/Favorite/index.tsx +8 -9
  101. package/themes/original/src/components/Favorite/styles.tsx +1 -1
  102. package/themes/original/src/components/FavoriteList/index.tsx +51 -80
  103. package/themes/original/src/components/FloatingButton/index.tsx +1 -2
  104. package/themes/original/src/components/FloatingButton/styles.tsx +1 -1
  105. package/themes/original/src/components/GPSButton/index.tsx +6 -4
  106. package/themes/original/src/components/GPSButton/styles.ts +3 -3
  107. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +96 -0
  108. package/themes/original/src/components/GiftCard/GiftCardUI/styles.tsx +5 -0
  109. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +100 -0
  110. package/themes/original/src/components/GiftCard/PurchaseGiftCard/styles.tsx +8 -0
  111. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +191 -0
  112. package/themes/original/src/components/GiftCard/RedeemGiftCard/styles.tsx +8 -0
  113. package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +165 -0
  114. package/themes/original/src/components/GiftCard/SendGiftCard/styles.tsx +9 -0
  115. package/themes/original/src/components/GoogleMap/index.tsx +15 -4
  116. package/themes/original/src/components/Help/index.tsx +8 -8
  117. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +11 -22
  118. package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +6 -0
  119. package/themes/original/src/components/HelpGuide/index.tsx +12 -16
  120. package/themes/original/src/components/HelpGuide/styles.tsx +6 -0
  121. package/themes/original/src/components/HelpOrder/index.tsx +12 -25
  122. package/themes/original/src/components/HelpOrder/styles.tsx +8 -1
  123. package/themes/original/src/components/Home/index.tsx +13 -4
  124. package/themes/original/src/components/LastOrder/index.tsx +1 -34
  125. package/themes/original/src/components/LoginForm/Otp/index.tsx +139 -75
  126. package/themes/original/src/components/LoginForm/Otp/styles.tsx +0 -1
  127. package/themes/original/src/components/LoginForm/index.tsx +71 -28
  128. package/themes/original/src/components/LottieAnimation/index.tsx +89 -55
  129. package/themes/original/src/components/MessageListing/index.tsx +16 -42
  130. package/themes/original/src/components/Messages/index.tsx +32 -10
  131. package/themes/original/src/components/MomentOption/index.tsx +195 -88
  132. package/themes/original/src/components/MultiCart/index.tsx +50 -0
  133. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +151 -49
  134. package/themes/original/src/components/MultiCheckout/index.tsx +308 -88
  135. package/themes/original/src/components/MultiCheckout/styles.tsx +3 -1
  136. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +37 -224
  137. package/themes/original/src/components/MultiOrdersDetails/index.tsx +68 -21
  138. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +1 -1
  139. package/themes/original/src/components/MyOrders/index.tsx +53 -51
  140. package/themes/original/src/components/NavBar/index.tsx +18 -18
  141. package/themes/original/src/components/NotFoundSource/index.tsx +14 -10
  142. package/themes/original/src/components/Notifications/index.tsx +46 -50
  143. package/themes/original/src/components/Notifications/styles.tsx +6 -3
  144. package/themes/original/src/components/OrderDetails/OrderEta.tsx +76 -0
  145. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +15 -3
  146. package/themes/original/src/components/OrderDetails/index.tsx +199 -359
  147. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  148. package/themes/original/src/components/OrderItAgain/index.tsx +3 -1
  149. package/themes/original/src/components/OrderProgress/index.tsx +93 -114
  150. package/themes/original/src/components/OrderProgress/styles.tsx +5 -0
  151. package/themes/original/src/components/OrderSummary/index.tsx +87 -59
  152. package/themes/original/src/components/OrderTypeSelector/index.tsx +1 -1
  153. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +24 -19
  154. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +14 -14
  155. package/themes/original/src/components/OrdersOption/index.tsx +70 -65
  156. package/themes/original/src/components/OrdersOption/styles.tsx +1 -1
  157. package/themes/original/src/components/PageBanner/index.tsx +171 -0
  158. package/themes/original/src/components/PageBanner/styles.tsx +11 -0
  159. package/themes/original/src/components/PaymentOptionCard/index.tsx +180 -0
  160. package/themes/original/src/components/PaymentOptionStripe/styles.tsx +1 -1
  161. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  162. package/themes/original/src/components/PaymentOptions/index.tsx +64 -7
  163. package/themes/original/src/components/PhoneInputNumber/index.tsx +4 -4
  164. package/themes/original/src/components/PlaceSpot/index.tsx +12 -6
  165. package/themes/original/src/components/ProductForm/index.tsx +116 -37
  166. package/themes/original/src/components/ProductForm/styles.tsx +5 -7
  167. package/themes/original/src/components/ProductItemAccordion/index.tsx +14 -13
  168. package/themes/original/src/components/ProductOptionSubOption/index.tsx +19 -11
  169. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +1 -2
  170. package/themes/original/src/components/ProfessionalFilter/SingleProfessionalCard/index.tsx +108 -0
  171. package/themes/original/src/components/ProfessionalFilter/index.tsx +20 -50
  172. package/themes/original/src/components/ProfessionalProfile/index.tsx +36 -7
  173. package/themes/original/src/components/Promotions/index.tsx +234 -220
  174. package/themes/original/src/components/Promotions/styles.tsx +10 -3
  175. package/themes/original/src/components/ReviewDriver/index.tsx +3 -3
  176. package/themes/original/src/components/ReviewOrder/index.tsx +26 -9
  177. package/themes/original/src/components/ReviewOrder/styles.tsx +7 -0
  178. package/themes/original/src/components/ReviewProducts/index.tsx +23 -11
  179. package/themes/original/src/components/ReviewTrigger/index.tsx +27 -9
  180. package/themes/original/src/components/ReviewTrigger/styles.tsx +8 -1
  181. package/themes/original/src/components/ScheduleAccordion/index.tsx +68 -0
  182. package/themes/original/src/components/ScheduleAccordion/styles.tsx +14 -0
  183. package/themes/original/src/components/ServiceForm/index.tsx +74 -19
  184. package/themes/original/src/components/Sessions/index.tsx +11 -8
  185. package/themes/original/src/components/Sessions/styles.tsx +5 -0
  186. package/themes/original/src/components/SignupForm/index.tsx +42 -19
  187. package/themes/original/src/components/SingleOrderCard/index.tsx +130 -52
  188. package/themes/original/src/components/SingleOrderCard/styles.tsx +11 -2
  189. package/themes/original/src/components/SingleProductCard/index.tsx +72 -34
  190. package/themes/original/src/components/SingleProductCard/styles.tsx +22 -4
  191. package/themes/original/src/components/SingleProductReview/styles.tsx +1 -1
  192. package/themes/original/src/components/StripeCardsList/index.tsx +13 -3
  193. package/themes/original/src/components/StripeElementsForm/index.tsx +51 -34
  194. package/themes/original/src/components/UpsellingProducts/index.tsx +238 -224
  195. package/themes/original/src/components/UpsellingProducts/styles.tsx +12 -1
  196. package/themes/original/src/components/UserDetails/index.tsx +8 -4
  197. package/themes/original/src/components/UserFormDetails/index.tsx +47 -7
  198. package/themes/original/src/components/UserProfile/index.tsx +5 -7
  199. package/themes/original/src/components/UserProfileForm/index.tsx +25 -28
  200. package/themes/original/src/components/UserProfileForm/styles.tsx +7 -0
  201. package/themes/original/src/components/WalletTransactionItem/index.tsx +2 -2
  202. package/themes/original/src/components/WalletTransactions/index.tsx +3 -3
  203. package/themes/original/src/components/Wallets/index.tsx +67 -24
  204. package/themes/original/src/components/Wallets/styles.tsx +5 -4
  205. package/themes/original/src/components/shared/HeaderTitle.tsx +8 -3
  206. package/themes/original/src/components/shared/OButton.tsx +6 -2
  207. package/themes/original/src/components/shared/OInput.tsx +16 -2
  208. package/themes/original/src/components/shared/OModal.tsx +3 -3
  209. package/themes/original/src/layouts/Container.tsx +1 -1
  210. package/themes/original/src/types/index.tsx +38 -9
  211. package/themes/original/src/utils/index.tsx +364 -58
  212. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -1,16 +1,18 @@
1
- import React, { useState } from 'react';
1
+ import React, { useState, useEffect } from 'react';
2
2
  import {
3
3
  SingleOrderCard as SingleOrderCardController,
4
4
  useUtils,
5
5
  useOrder,
6
6
  useLanguage
7
7
  } from 'ordering-components/native';
8
+ import FastImage from 'react-native-fast-image'
8
9
  import { StyleSheet, TouchableOpacity, View } from 'react-native';
9
10
  import { useTheme } from 'styled-components/native';
10
11
  import { OIcon, OText, OButton } from '../shared';
11
12
  import { SingleOrderCardParams } from '../../types';
12
13
  import { OAlert } from '../../../../../src/components/shared'
13
-
14
+ import { OrderEta } from '../OrderDetails/OrderEta'
15
+ import { useIsFocused } from '@react-navigation/native';
14
16
  import {
15
17
  InnerContainer,
16
18
  Logo,
@@ -19,7 +21,8 @@ import {
19
21
  ButtonWrapper,
20
22
  ContentFooter,
21
23
  UnreadMessageCounter,
22
- Price
24
+ Price,
25
+ MultiLogosContainer
23
26
  } from './styles';
24
27
  import { LottieAnimation } from '../LottieAnimation';
25
28
  import { CardAnimation } from '../shared/CardAnimation';
@@ -43,12 +46,13 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
43
46
  const [, t] = useLanguage();
44
47
  const [{ carts }] = useOrder()
45
48
  const theme = useTheme();
49
+ const isFocused = useIsFocused();
46
50
 
47
- const [reorderSelected, setReorderSelected] = useState<number | null>(null);
51
+ let [reorderSelected, setReorderSelected] = useState<number | null>(null);
48
52
  const [confirm, setConfirm] = useState<any>({ open: false, content: null, handleOnAccept: null, id: null, title: null })
49
53
  const [isPressed, setIsPressed] = useState(false)
50
54
 
51
- const allowedOrderStatus = [1, 2, 5, 6, 10, 11, 12];
55
+ const allowedOrderStatus = [1, 2, 5, 6, 10, 11, 12, 15];
52
56
 
53
57
  const styles = StyleSheet.create({
54
58
  container: {
@@ -61,6 +65,11 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
61
65
  width: 64,
62
66
  height: 64
63
67
  },
68
+ minilogo: {
69
+ borderRadius: 8,
70
+ width: 40,
71
+ height: 40
72
+ },
64
73
  logoWrapper: {
65
74
  overflow: 'hidden',
66
75
  backgroundColor: 'white',
@@ -78,9 +87,13 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
78
87
  marginRight: 2,
79
88
  },
80
89
  reorderLoading: {
81
- width: 80,
82
- height: 40,
83
- borderRadius: 10,
90
+ height: 23,
91
+ paddingLeft: 20,
92
+ paddingRight: 20,
93
+ borderRadius: 23,
94
+ shadowOpacity: 0,
95
+ backgroundColor: theme.colors.primary,
96
+ borderWidth: 0,
84
97
  },
85
98
  reorderbutton: {
86
99
  height: 23,
@@ -118,19 +131,29 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
118
131
  });
119
132
 
120
133
  const handleReorderClick = (order: any) => {
121
- if (carts[`businessId:${order?.business_id}`] && carts[`businessId:${order?.business_id}`]?.products?.length > 0) {
134
+ setReorderSelected(null)
135
+ reorderSelected = null
136
+ const isMultiOrders = Array.isArray(order?.id)
137
+
138
+ const isRemoveCart = isMultiOrders
139
+ ? order?.business_id?.some((businessId: any) => !!carts[`businessId:${businessId}`]?.uuid)
140
+ : carts[`businessId:${order?.business_id}`] && !!carts[`businessId:${order?.business_id}`]?.uuid
141
+
142
+ if (isRemoveCart) {
122
143
  setConfirm({
123
144
  open: true,
124
145
  content: [t('QUESTION_DELETE_PRODUCTS_FROM_CART', 'Are you sure that you want to delete all products from cart?')],
125
146
  title: t('ORDER', 'Order'),
126
147
  handleOnAccept: async () => {
127
- handleRemoveCart()
148
+ handleRemoveCart(order)
128
149
  setConfirm({ ...confirm, open: false })
129
150
  }
130
151
  })
131
152
  } else {
132
- setReorderSelected(order?.id);
133
- handleReorder && handleReorder(order?.id);
153
+ const orderId = Array.isArray(order?.id) ? order?.id[0] : order?.id
154
+ setReorderSelected(orderId)
155
+ reorderSelected = orderId
156
+ handleReorder && handleReorder(order?.id)
134
157
  }
135
158
  };
136
159
 
@@ -141,11 +164,12 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
141
164
  order: {
142
165
  id: order?.id,
143
166
  business_id: order?.business_id,
144
- logo: order?.business?.logo,
167
+ logo: order?.business?.length > 1 ? order?.business?.map?.((business: any) => business?.logo) : order?.business?.logo,
145
168
  driver: order?.driver,
146
169
  products: order?.products,
147
170
  review: order?.review,
148
- user_review: order?.user_review
171
+ user_review: order?.user_review,
172
+ business: order?.business
149
173
  },
150
174
  });
151
175
  return
@@ -158,13 +182,16 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
158
182
  onNavigationRedirect('OrderDetails', { orderId: order?.uuid });
159
183
  };
160
184
 
161
- const handleClickViewOrder = (uuid: string) => {
185
+ const handleClickViewOrder = (order: any) => {
162
186
  if (isMessageView) {
163
187
  handleClickOrder(order?.uuid)
164
188
  return
165
189
  }
166
- onNavigationRedirect &&
167
- onNavigationRedirect('OrderDetails', { orderId: uuid });
190
+ if (order?.cart_group_id) {
191
+ onNavigationRedirect?.('MultiOrdersDetails', { orderId: order?.cart_group_id });
192
+ } else {
193
+ onNavigationRedirect?.('OrderDetails', { orderId: order?.uuid });
194
+ }
168
195
  };
169
196
 
170
197
  const handleChangeFavorite = () => {
@@ -173,33 +200,75 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
173
200
 
174
201
  const handleOriginalReorder = () => {
175
202
  setConfirm({ ...confirm, open: false, title: null })
176
- setReorderSelected(order?.id);
177
- handleReorder && handleReorder(order?.id);
178
203
  }
179
204
 
205
+ const hideBusinessLogo = theme?.orders?.components?.business_logo?.hidden
206
+ const hideDate = theme?.orders?.components?.date?.hidden
207
+ const hideBusinessName = theme?.orders?.components?.business_name?.hidden
208
+ const hideOrderNumber = theme?.orders?.components?.order_number?.hidden
209
+ const hideReviewOrderButton = theme?.orders?.components?.review_order_button?.hidden
210
+ const hideReorderButton = theme?.orders?.components?.reorder_button?.hidden
211
+ const hideFavorite = theme?.orders?.components?.favorite?.hidden
212
+ const hideOrderStatus = theme?.orders?.components?.order_status?.hidden
213
+
214
+ useEffect(() => {
215
+ if (isFocused) setReorderSelected(null)
216
+ }, [isFocused])
217
+
180
218
  return (
181
219
  <>
182
220
  <CardAnimation
183
- onClick={() => handleClickViewOrder(order?.uuid)}
221
+ onClick={() => handleClickViewOrder(order)}
184
222
  style={[styles.container]}
185
223
  >
186
224
  <InnerContainer>
187
- {(!!order.business?.logo || theme?.images?.dummies?.businessLogo) && (
188
- <Logo style={styles.logoWrapper}>
189
- <OIcon
190
- url={optimizeImage(order.business?.logo, 'h_300,c_limit')}
191
- src={optimizeImage(!order.business?.logo && theme?.images?.dummies?.businessLogo, 'h_300,c_limit')}
192
- style={styles.logo}
193
- />
194
- </Logo>
225
+ {!hideBusinessLogo && (!!order.business?.logo || theme?.images?.dummies?.businessLogo) && (
226
+ <>
227
+ {order?.business?.length > 1 ? (
228
+ <MultiLogosContainer>
229
+ {order?.business?.map((business: any, i: number) => i < 2 && (
230
+ <Logo
231
+ isMulti
232
+ key={business?.id}
233
+ style={styles.logoWrapper}
234
+ >
235
+ <FastImage
236
+ style={styles.minilogo}
237
+ source={business?.logo ? {
238
+ uri: optimizeImage(business?.logo, 'h_300,c_limit'),
239
+ priority: FastImage.priority.normal,
240
+ } : theme?.images?.dummies?.businessLogo}
241
+ resizeMode={FastImage.resizeMode.contain}
242
+ />
243
+ </Logo>
244
+ ))}
245
+ {order?.business?.length > 1 && (order?.business?.length - 2) > 0 && (
246
+ <OText mRight={3}> + {order?.business?.length - 2}</OText>
247
+ )}
248
+ </MultiLogosContainer>
249
+ ) : (
250
+ <Logo style={styles.logoWrapper}>
251
+ <FastImage
252
+ style={styles.logo}
253
+ source={order.business?.logo ? {
254
+ uri: optimizeImage(order.business?.logo, 'h_300,c_limit'),
255
+ priority: FastImage.priority.normal,
256
+ } : theme?.images?.dummies?.businessLogo}
257
+ resizeMode={FastImage.resizeMode.contain}
258
+ />
259
+ </Logo>
260
+ )}
261
+ </>
195
262
  )}
196
263
  <CardInfoWrapper>
197
264
  <ContentHeader>
198
- <View style={{ flex: 1 }}>
199
- <OText size={12} lineHeight={18} weight={'600'} numberOfLines={1} ellipsizeMode={'tail'}>
200
- {order.business?.name}
201
- </OText>
202
- </View>
265
+ {(order?.business?.length > 1 && !hideOrderNumber) || (!order?.business?.length && !hideBusinessName) && (
266
+ <View style={{ flex: 1 }}>
267
+ <OText size={12} lineHeight={18} weight={'600'} numberOfLines={1} ellipsizeMode={'tail'}>
268
+ {order?.business?.length > 1 ? `${t('GROUP_ORDER', 'Group Order')} ${t('No', 'No')}. ${order?.cart_group_id}` : order.business?.name}
269
+ </OText>
270
+ </View>
271
+ )}
203
272
  {!!!pastOrders && (
204
273
  <>
205
274
  {isMessageView ? (
@@ -223,7 +292,8 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
223
292
  )}
224
293
  {!!pastOrders && (
225
294
  <ButtonWrapper>
226
- {allowedOrderStatus.includes(parseInt(order?.status)) &&
295
+ {!hideReviewOrderButton &&
296
+ allowedOrderStatus.includes(parseInt(order?.status)) &&
227
297
  !order.review && (
228
298
  <TouchableOpacity
229
299
  onPress={() => handleClickOrderReview(order)}
@@ -233,7 +303,7 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
233
303
  </OText>
234
304
  </TouchableOpacity>
235
305
  )}
236
- {order.cart && (
306
+ {!hideReorderButton && typeof order?.id === 'number' && (
237
307
  <OButton
238
308
  text={t('REORDER', 'Reorder')}
239
309
  imgRightSrc={''}
@@ -253,7 +323,7 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
253
323
  <ContentFooter>
254
324
  <View style={{ flex: 1 }}>
255
325
  <View style={styles.infoText}>
256
- {!!!pastOrders && (
326
+ {(!!!pastOrders || order?.business?.length > 1) && !hideOrderNumber && (
257
327
  <>
258
328
  <OText
259
329
  size={10}
@@ -263,7 +333,7 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
263
333
  lineHeight={15}
264
334
  numberOfLines={1}
265
335
  >
266
- {t('ORDER_NO', 'Order No') + '.'}
336
+ {order?.business?.length > 1 ? order?.business?.length : (t('ORDER_NO', 'Order No') + '.')}
267
337
  </OText>
268
338
  <OText
269
339
  size={10}
@@ -272,33 +342,41 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
272
342
  lineHeight={15}
273
343
  numberOfLines={1}
274
344
  >
275
- {order.id + ` \u2022 `}
345
+ {order?.business?.length > 1 ? t('ORDERS', 'orders') + ' \u2022 ' : order.id + ` \u2022 `}
276
346
  </OText>
277
347
  </>
278
348
  )}
349
+ {!hideDate && (
350
+ <OText
351
+ size={10}
352
+ lineHeight={15}
353
+ color={theme.colors.textSecondary}
354
+ style={{ marginVertical: 3 }}
355
+ numberOfLines={1}>
356
+ {
357
+ pastOrders
358
+ ? order?.delivery_datetime_utc ? parseDate(order?.delivery_datetime_utc) : parseDate(order?.delivery_datetime, { utc: false })
359
+ : <OrderEta order={order} />
360
+ }
361
+ </OText>
362
+ )}
363
+ </View>
364
+ {!hideOrderStatus && (
279
365
  <OText
366
+ color={theme.colors.primary}
280
367
  size={10}
281
368
  lineHeight={15}
282
- color={theme.colors.textSecondary}
283
- style={{ marginVertical: 3 }}
284
369
  numberOfLines={1}>
285
- {order?.delivery_datetime_utc ? parseDate(order?.delivery_datetime_utc) : parseDate(order?.delivery_datetime, { utc: false })}
370
+ {getOrderStatus(order.status)?.value}
286
371
  </OText>
287
- </View>
288
- <OText
289
- color={theme.colors.primary}
290
- size={10}
291
- lineHeight={15}
292
- numberOfLines={1}>
293
- {getOrderStatus(order.status)?.value}
294
- </OText>
372
+ )}
295
373
  </View>
296
- {!isMessageView && (
374
+ {!isMessageView && !order?.business?.length && !hideFavorite && (
297
375
  <LottieAnimation
298
376
  type='favorite'
299
377
  onClick={handleChangeFavorite}
300
- initialValue={order?.favorite ? 0.75 : 0}
301
- toValue={order?.favorite ? 0 : 0.75}
378
+ initialValue={order?.favorite ? 0.5 : 0}
379
+ toValue={order?.favorite ? 0 : 0.5}
302
380
  style={{ marginBottom: 5 }}
303
381
  iconProps={{ color: theme.colors.danger5, size: 16, style: { top: 7 } }}
304
382
  isActive={order?.favorite}
@@ -1,4 +1,4 @@
1
- import styled from 'styled-components/native'
1
+ import styled, { css } from 'styled-components/native'
2
2
 
3
3
  export const InnerContainer = styled.View`
4
4
  flex-direction: row;
@@ -8,6 +8,9 @@ export const InnerContainer = styled.View`
8
8
  export const Logo = styled.View`
9
9
  border-radius: 7.6px;
10
10
  margin-right: 12px;
11
+ ${({ isMulti } : any) => isMulti && css`
12
+ margin-right: 5px;
13
+ `}
11
14
  `
12
15
 
13
16
  export const CardInfoWrapper = styled.View`
@@ -16,7 +19,7 @@ export const CardInfoWrapper = styled.View`
16
19
 
17
20
  export const ContentHeader = styled.View`
18
21
  flex-direction: row;
19
- justify-content: space-between;
22
+ justify-content: flex-end;
20
23
  `
21
24
 
22
25
  export const ButtonWrapper = styled.View`
@@ -45,3 +48,9 @@ export const Price = styled.View`
45
48
  margin-left: 10px;
46
49
  width: 30%;
47
50
  `
51
+
52
+ export const MultiLogosContainer = styled.View`
53
+ display: flex;
54
+ align-items: center;
55
+ flex-direction: row;
56
+ `
@@ -11,13 +11,13 @@ import {
11
11
  } from 'ordering-components/native';
12
12
  import { useTheme } from 'styled-components/native';
13
13
  import { SingleProductCardParams } from '../../types';
14
- import { CardInfo, SoldOut, QuantityContainer, PricesContainer, RibbonBox, LogoWrapper } from './styles';
15
- import { StyleSheet, View } from 'react-native';
14
+ import { CardInfo, SoldOut, QuantityContainer, PricesContainer, RibbonBox, LogoWrapper, TagsContainer } from './styles';
15
+ import { ScrollView, StyleSheet, TouchableWithoutFeedback, View } from 'react-native';
16
16
  import { InView } from 'react-native-intersection-observer'
17
17
  import { Fade, Placeholder, PlaceholderLine } from 'rn-placeholder';
18
18
  import { OButton, OIcon, OText } from '../shared';
19
19
  import FastImage from 'react-native-fast-image'
20
- import { shape } from '../../utils';
20
+ import { lightenDarkenColor, shape } from '../../utils';
21
21
  import { LottieAnimation } from '../LottieAnimation';
22
22
  import { CardAnimation } from '../shared/CardAnimation'
23
23
 
@@ -39,11 +39,20 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
39
39
  enableIntersection,
40
40
  navigation,
41
41
  businessId,
42
- isPreviously
42
+ isPreviously,
43
+ viewString,
44
+ businessSingleId
43
45
  } = props;
44
46
 
45
47
  const theme = useTheme();
46
48
  const hideAddButton = theme?.business_view?.components?.products?.components?.add_to_cart_button?.hidden ?? true
49
+ const isChewLayout = theme?.header?.components?.layout?.type?.toLowerCase() === 'chew'
50
+ const hideProductDescription = theme?.business_view?.components?.products?.components?.product?.components?.description?.hidden
51
+ const hideProductLogo = viewString
52
+ ? theme?.[viewString]?.components?.cart?.components?.products?.image?.hidden
53
+ : theme?.business_view?.components?.products?.components?.product?.components?.image?.hidden
54
+ const textSize = isChewLayout ? 12 : 10
55
+ const logoPosition = theme?.business_view?.components?.products?.components?.product?.components?.image?.position
47
56
 
48
57
  const styles = StyleSheet.create({
49
58
  container: {
@@ -77,8 +86,8 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
77
86
  textTransform: 'uppercase',
78
87
  },
79
88
  productStyle: {
80
- width: 75,
81
- height: 75,
89
+ width: 85,
90
+ height: 85,
82
91
  borderRadius: 7.6
83
92
  },
84
93
  quantityContainer: {
@@ -96,7 +105,12 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
96
105
  color: '#808080',
97
106
  textDecorationLine: 'line-through',
98
107
  marginLeft: 7,
99
- marginRight: 7
108
+ marginRight: 0
109
+ },
110
+ productTagsStyle: {
111
+ width: 30,
112
+ height: 30,
113
+ marginRight: 5
100
114
  }
101
115
  });
102
116
 
@@ -155,7 +169,7 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
155
169
  }
156
170
 
157
171
  return (
158
- <InView style={{ minHeight: hideAddButton ? 125 : 190 }} triggerOnce={true} onChange={(inView: boolean) => handleChangeIntersection()}>
172
+ <InView style={{ minHeight: hideAddButton ? 125 : 190, marginLeft: logoPosition === 'left' ? 12.5 : 0 }} triggerOnce={true} onChange={(inView: boolean) => handleChangeIntersection()}>
159
173
  {isIntersectionObserver ? (
160
174
  <CardAnimation
161
175
  onClick={() => handleClickproduct()}
@@ -165,10 +179,10 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
165
179
  (style && { ...style })
166
180
  ]}
167
181
  >
168
- <View style={{ flexDirection: 'row' }}>
182
+ <View style={{ flexDirection: logoPosition === 'left' ? 'row-reverse' : 'row' }}>
169
183
  {productAddedToCartLength > 0 && (
170
- <QuantityContainer style={[styles.quantityContainer, {
171
- transform: [{ translateX: 25 }, { translateY: hideAddButton ? -25 : -55 }],
184
+ <QuantityContainer businessSingleId={businessSingleId} style={[styles.quantityContainer, {
185
+ transform: [{ translateX: logoPosition === 'right' ? 25 : -25 }, { translateY: -25 }],
172
186
  }]}>
173
187
  <OText size={12} color={theme.colors.white}>{productAddedToCartLength.toString()}</OText>
174
188
  </QuantityContainer>
@@ -176,7 +190,7 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
176
190
  <CardInfo>
177
191
  <View style={styles.titleWrapper}>
178
192
  <OText
179
- size={12}
193
+ size={textSize + 2}
180
194
  weight={'500'}
181
195
  numberOfLines={1}
182
196
  ellipsizeMode="tail"
@@ -187,8 +201,8 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
187
201
  <LottieAnimation
188
202
  type='favorite'
189
203
  onClick={handleChangeFavorite}
190
- initialValue={product?.favorite ? 0.75 : 0}
191
- toValue={product?.favorite ? 0 : 0.75}
204
+ initialValue={product?.favorite ? 0.5 : 0}
205
+ toValue={product?.favorite ? 0 : 0.5}
192
206
  disableAnimation={!auth}
193
207
  iconProps={{ color: theme.colors.danger5, size: 18 }}
194
208
  isActive={product?.favorite}
@@ -202,18 +216,44 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
202
216
  {product?.offer_price !== null && !!product?.in_offer && (
203
217
  <OText style={styles.regularPriceStyle}>{product?.offer_price ? parsePrice(product?.offer_price) : ''}</OText>
204
218
  )}
219
+ {!isPreviously && product?.tags && product?.tags.length > 0 && (
220
+ <ScrollView
221
+ showsVerticalScrollIndicator={false}
222
+ showsHorizontalScrollIndicator={false}
223
+ horizontal
224
+ style={{ marginLeft: 10 }}
225
+ contentContainerStyle={{ flexGrow: 1 }}
226
+ >
227
+ {product?.tags.map((tag: any, i: any) => (
228
+ <TouchableWithoutFeedback key={i}>
229
+ <TagsContainer>
230
+ <FastImage
231
+ style={styles.productTagsStyle}
232
+ source={tag.image ? {
233
+ uri: optimizeImage(tag.image, 'h_250,c_limit'),
234
+ priority: FastImage.priority.normal,
235
+ } : theme?.images?.dummies?.product}
236
+ resizeMode={FastImage.resizeMode.cover}
237
+ />
238
+ </TagsContainer>
239
+ </TouchableWithoutFeedback>
240
+ ))}
241
+ </ScrollView>
242
+ )}
205
243
  </PricesContainer>
206
- <OText
207
- size={10}
208
- numberOfLines={!isPreviously ? 2 : 1}
209
- ellipsizeMode="tail"
210
- color={theme.colors.textSecondary}
211
- style={styles.line15}>
212
- {product?.description}
213
- </OText>
244
+ {!hideProductDescription && (
245
+ <OText
246
+ size={textSize}
247
+ numberOfLines={!isPreviously ? 2 : 1}
248
+ ellipsizeMode="tail"
249
+ color={theme.colors.textSecondary}
250
+ style={styles.line15}>
251
+ {product?.description}
252
+ </OText>
253
+ )}
214
254
  {isPreviously && (
215
255
  <OText
216
- size={10}
256
+ size={textSize}
217
257
  numberOfLines={1}
218
258
  ellipsizeMode="tail"
219
259
  color={theme.colors.primary}
@@ -222,17 +262,19 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
222
262
  </OText>
223
263
  )}
224
264
  </CardInfo>
225
- <LogoWrapper>
265
+ <LogoWrapper logoPosition={logoPosition}>
226
266
  {!!product?.ribbon?.enabled && (
227
267
  <RibbonBox
228
268
  bgColor={product?.ribbon?.color}
269
+ colorText={lightenDarkenColor(product?.ribbon?.color)}
270
+ borderRibbon={lightenDarkenColor(product?.ribbon?.color)}
229
271
  isRoundRect={product?.ribbon?.shape === shape?.rectangleRound}
230
272
  isCapsule={product?.ribbon?.shape === shape?.capsuleShape}
231
273
  >
232
274
  <OText
233
- size={10}
275
+ size={textSize}
234
276
  weight={'400'}
235
- color={theme.colors.white}
277
+ color={lightenDarkenColor(product?.ribbon?.color) ? theme.colors.black : theme.colors.white}
236
278
  numberOfLines={2}
237
279
  ellipsizeMode='tail'
238
280
  lineHeight={13}
@@ -241,20 +283,15 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
241
283
  </OText>
242
284
  </RibbonBox>
243
285
  )}
244
- {product?.images ? (
286
+ {!hideProductLogo && (
245
287
  <FastImage
246
288
  style={styles.productStyle}
247
- source={{
289
+ source={product?.images ? {
248
290
  uri: optimizeImage(product?.images, 'h_250,c_limit'),
249
291
  priority: FastImage.priority.normal,
250
- }}
292
+ } : theme?.images?.dummies?.product}
251
293
  resizeMode={FastImage.resizeMode.cover}
252
294
  />
253
- ) : (
254
- <OIcon
255
- src={theme?.images?.dummies?.product}
256
- style={styles.productStyle}
257
- />
258
295
  )}
259
296
  </LogoWrapper>
260
297
 
@@ -273,6 +310,7 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
273
310
  width: '100%',
274
311
  borderRadius: 7.6,
275
312
  marginTop: 10,
313
+ height: 40
276
314
 
277
315
  }}
278
316
  bgColor={isSoldOut ? '#B8B8B8' : theme?.colors?.white}
@@ -3,6 +3,7 @@ import styled, { css } from 'styled-components/native'
3
3
  export const CardInfo = styled.View`
4
4
  padding-start: 3px;
5
5
  flex: 1;
6
+ min-height: 85px;
6
7
  `
7
8
  export const SoldOut = styled.View`
8
9
  position: absolute;
@@ -21,11 +22,23 @@ export const QuantityContainer = styled.View`
21
22
  export const PricesContainer = styled.View`
22
23
  flex-direction: row;
23
24
  align-items: center;
25
+ margin-vertical: 6px;
24
26
  `
25
27
 
26
28
  export const LogoWrapper = styled.View`
27
29
  position: relative;
28
- margin-left: 12px;
30
+ margin-left: ${(props) => !props.logoPosition || props.logoPosition === 'right' ? '12px' : '0px'};
31
+ margin-right: ${(props) => props.logoPosition === 'right' ? '0px' : '12px'};
32
+ `
33
+ export const WrapTags = styled.View`
34
+ display: flex;
35
+ flex-direction: row;
36
+ justify-content: flex-start;
37
+ margin-left: 10px;
38
+ `
39
+ export const TagsContainer = styled.View`
40
+ display: flex;
41
+ margin: auto;
29
42
  `
30
43
 
31
44
  export const RibbonBox = styled.View`
@@ -36,16 +49,21 @@ export const RibbonBox = styled.View`
36
49
  background-color: ${(props: any) => props.theme.colors.primary};
37
50
  padding: 1px 8px;
38
51
  max-width: 60px;
39
-
40
52
  ${(props: any) => props.bgColor && css`
41
53
  background-color: ${props.bgColor};
42
54
  `}
43
-
44
55
  ${(props: any) => props.isRoundRect && css`
45
56
  border-radius: 7.6px;
46
57
  `}
47
-
48
58
  ${(props: any) => props.isCapsule && css`
49
59
  border-radius: 50px;
50
60
  `}
61
+
62
+ ${(props: any) => props.colorText && css`
63
+ color: ${props.colorText ? 'black' : 'white'};
64
+ `}
65
+
66
+ ${(props: any) => props.borderRibbon && css`
67
+ border: 1px solid ${props.borderRibbon ? 'black' : 'white'};
68
+ `}
51
69
  `
@@ -19,7 +19,7 @@ export const LogoWrapper = styled.View`
19
19
  shadowRadius: 3;
20
20
  shadowOffset: { width: 1, height: 4 };
21
21
  elevation: 3;
22
- borderRadius: 8;
22
+ border-radius: 8;
23
23
  shadowOpacity: 0.1;
24
24
  overflow: hidden;
25
25
  width: 80;