ordering-ui-react-native 0.15.71 → 0.15.72-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 (220) 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 +68 -2
  48. package/themes/business/index.tsx +4 -0
  49. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +103 -15
  50. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +6 -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 +14 -7
  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 +7 -8
  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 +30 -18
  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 +231 -63
  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/index.tsx +70 -52
  116. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  117. package/themes/original/src/components/BusinessProductsListing/index.tsx +339 -153
  118. package/themes/original/src/components/BusinessProductsListing/styles.tsx +33 -0
  119. package/themes/original/src/components/BusinessReviews/index.tsx +6 -1
  120. package/themes/original/src/components/BusinessTypeFilter/index.tsx +106 -39
  121. package/themes/original/src/components/BusinessTypeFilter/styles.tsx +2 -0
  122. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +560 -0
  123. package/themes/original/src/components/BusinessesListing/{styles.tsx → Layout/Appointment/styles.tsx} +24 -2
  124. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +671 -0
  125. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +137 -0
  126. package/themes/original/src/components/BusinessesListing/index.tsx +103 -458
  127. package/themes/original/src/components/Cart/index.tsx +93 -43
  128. package/themes/original/src/components/Cart/styles.tsx +4 -0
  129. package/themes/original/src/components/Checkout/index.tsx +90 -39
  130. package/themes/original/src/components/DriverTips/index.tsx +17 -12
  131. package/themes/original/src/components/Favorite/index.tsx +92 -0
  132. package/themes/original/src/components/Favorite/styles.tsx +22 -0
  133. package/themes/original/src/components/FavoriteList/index.tsx +298 -0
  134. package/themes/original/src/components/FavoriteList/styles.tsx +5 -0
  135. package/themes/original/src/components/ForgotPasswordForm/index.tsx +84 -4
  136. package/themes/original/src/components/GPSButton/index.tsx +15 -8
  137. package/themes/original/src/components/GoogleMap/index.tsx +11 -11
  138. package/themes/original/src/components/Help/index.tsx +21 -4
  139. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +18 -1
  140. package/themes/original/src/components/LastOrders/index.tsx +12 -1
  141. package/themes/original/src/components/LoginForm/Otp/index.tsx +91 -0
  142. package/themes/original/src/components/LoginForm/Otp/styles.tsx +7 -0
  143. package/themes/original/src/components/LoginForm/index.tsx +332 -164
  144. package/themes/original/src/components/LoginForm/styles.tsx +1 -3
  145. package/themes/original/src/components/MessageListing/index.tsx +10 -1
  146. package/themes/original/src/components/Messages/index.tsx +1 -1
  147. package/themes/original/src/components/MomentSelector/index.tsx +197 -0
  148. package/themes/original/src/components/MomentSelector/styles.tsx +6 -0
  149. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +243 -0
  150. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/styles.tsx +46 -0
  151. package/themes/original/src/components/MultiCheckout/index.tsx +298 -0
  152. package/themes/original/src/components/MultiCheckout/styles.tsx +59 -0
  153. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +372 -0
  154. package/themes/original/src/components/MultiOrdersDetails/index.tsx +258 -0
  155. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +50 -0
  156. package/themes/original/src/components/MyOrders/index.tsx +120 -32
  157. package/themes/original/src/components/MyOrders/styles.tsx +8 -1
  158. package/themes/original/src/components/NavBar/index.tsx +4 -4
  159. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +167 -0
  160. package/themes/original/src/components/OrderDetails/index.tsx +148 -63
  161. package/themes/original/src/components/OrderDetails/styles.tsx +1 -2
  162. package/themes/original/src/components/OrderItAgain/index.tsx +72 -0
  163. package/themes/original/src/components/OrderItAgain/styles.tsx +10 -0
  164. package/themes/original/src/components/OrderSummary/index.tsx +5 -5
  165. package/themes/original/src/components/OrderTypeSelector/index.tsx +79 -35
  166. package/themes/original/src/components/OrderTypeSelector/styles.tsx +19 -1
  167. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +153 -0
  168. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/styles.tsx +6 -0
  169. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +53 -0
  170. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/styles.tsx +6 -0
  171. package/themes/original/src/components/OrdersOption/index.tsx +137 -38
  172. package/themes/original/src/components/OrdersOption/styles.tsx +4 -1
  173. package/themes/original/src/components/PaymentOptionCash/index.tsx +2 -2
  174. package/themes/original/src/components/PaymentOptionWallet/index.tsx +17 -23
  175. package/themes/original/src/components/PaymentOptionWallet/styles.tsx +1 -1
  176. package/themes/original/src/components/PaymentOptions/index.tsx +57 -37
  177. package/themes/original/src/components/PhoneInputNumber/index.tsx +5 -11
  178. package/themes/original/src/components/PreviousOrders/index.tsx +18 -147
  179. package/themes/original/src/components/ProductForm/index.tsx +719 -680
  180. package/themes/original/src/components/ProductForm/styles.tsx +9 -7
  181. package/themes/original/src/components/ProductItemAccordion/index.tsx +2 -2
  182. package/themes/original/src/components/ProductOption/index.tsx +1 -1
  183. package/themes/original/src/components/ProductOptionSubOption/index.tsx +18 -12
  184. package/themes/original/src/components/ProfessionalFilter/index.tsx +128 -0
  185. package/themes/original/src/components/ProfessionalFilter/styles.tsx +0 -0
  186. package/themes/original/src/components/ProfessionalProfile/index.tsx +298 -0
  187. package/themes/original/src/components/ProfessionalProfile/styles.tsx +46 -0
  188. package/themes/original/src/components/Promotions/index.tsx +151 -133
  189. package/themes/original/src/components/Promotions/styles.tsx +2 -1
  190. package/themes/original/src/components/ReviewDriver/index.tsx +6 -6
  191. package/themes/original/src/components/ReviewOrder/index.tsx +1 -1
  192. package/themes/original/src/components/ReviewTrigger/index.tsx +118 -0
  193. package/themes/original/src/components/ReviewTrigger/styles.tsx +34 -0
  194. package/themes/original/src/components/SearchBar/index.tsx +13 -5
  195. package/themes/original/src/components/ServiceForm/index.tsx +579 -0
  196. package/themes/original/src/components/ServiceForm/styles.tsx +50 -0
  197. package/themes/original/src/components/Sessions/index.tsx +160 -0
  198. package/themes/original/src/components/Sessions/styles.tsx +15 -0
  199. package/themes/original/src/components/SignupForm/index.tsx +237 -126
  200. package/themes/original/src/components/SingleOrderCard/index.tsx +316 -0
  201. package/themes/original/src/components/SingleOrderCard/styles.tsx +54 -0
  202. package/themes/original/src/components/SingleProductCard/index.tsx +214 -90
  203. package/themes/original/src/components/SingleProductCard/styles.tsx +2 -2
  204. package/themes/original/src/components/StripeElementsForm/index.tsx +25 -9
  205. package/themes/original/src/components/StripeElementsForm/naked.tsx +2 -2
  206. package/themes/original/src/components/UpsellingProducts/index.tsx +86 -74
  207. package/themes/original/src/components/UserDetails/index.tsx +32 -18
  208. package/themes/original/src/components/UserFormDetails/index.tsx +102 -66
  209. package/themes/original/src/components/UserProfile/index.tsx +10 -1
  210. package/themes/original/src/components/UserProfileForm/index.tsx +32 -25
  211. package/themes/original/src/components/UserVerification/index.tsx +178 -192
  212. package/themes/original/src/components/Wallets/index.tsx +25 -12
  213. package/themes/original/src/components/shared/OBottomPopup.tsx +44 -13
  214. package/themes/original/src/components/shared/OButton.tsx +2 -0
  215. package/themes/original/src/components/shared/OInput.tsx +3 -2
  216. package/themes/original/src/components/shared/OModal.tsx +4 -2
  217. package/themes/original/src/layouts/FloatingBottomContainer.tsx +5 -1
  218. package/themes/original/src/types/index.tsx +203 -35
  219. package/themes/original/src/utils/index.tsx +94 -1
  220. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -395,9 +395,14 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
395
395
  </View>
396
396
  </OSTable>
397
397
 
398
- {order?.products?.length && (
399
- <OSTable>
400
- <View>
398
+ {order?.products?.length > 0 && (
399
+ <>
400
+ <View
401
+ style={{
402
+ flexDirection: 'row',
403
+ justifyContent: 'space-between'
404
+ }}
405
+ >
401
406
  <OText
402
407
  weight="bold"
403
408
  mBottom={15}
@@ -405,29 +410,29 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
405
410
  {`${order?.products?.length} ${t('ITEMS', 'items')}`}
406
411
  </OText>
407
412
 
408
- <GridContainer style={{ maxWidth: orientationState?.dimensions?.width * 0.6 }}>
409
- {order?.products.map((product: Product, i: number) => (
410
- <OImage
411
- key={product?.id || i}
412
- source={{ uri: product?.images || '' }}
413
- resizeMode="cover"
414
- height={80}
415
- width={80}
416
- borderRadius={8}
417
- style={{ marginEnd: 10, marginBottom: 10 }}
418
- />
419
- ))}
420
- </GridContainer>
413
+ <OText
414
+ color={theme.colors.primary}
415
+ weight="bold"
416
+ >
417
+ {parsePrice((order?.summary?.total || order?.total) - (order?.summary?.discount || order?.discount))}
418
+ </OText>
421
419
  </View>
422
-
423
- <OText
424
- color={theme.colors.primary}
425
- weight="bold"
426
- mRight={30}
427
- >
428
- {parsePrice((order?.summary?.total || order?.total) - (order?.summary?.discount || order?.discount))}
429
- </OText>
430
- </OSTable>
420
+ <OSTable>
421
+ <GridContainer style={{ maxWidth: orientationState?.dimensions?.width * 0.6 }}>
422
+ {order?.products.map((product: Product, i: number) => (
423
+ <OImage
424
+ key={product?.id || i}
425
+ source={{ uri: product?.images || '' }}
426
+ resizeMode="cover"
427
+ height={80}
428
+ width={80}
429
+ borderRadius={8}
430
+ style={{ marginEnd: 10, marginBottom: 10 }}
431
+ />
432
+ ))}
433
+ </GridContainer>
434
+ </OSTable>
435
+ </>
431
436
  )}
432
437
 
433
438
  <OrderBill>
@@ -520,7 +525,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
520
525
  <OSRow>
521
526
  <OText>
522
527
  {fee.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
523
- ({fee?.fixed > 0 && `${parsePrice(fee?.fixed)} + `}{fee.percentage}%){' '}
528
+ ({fee?.fixed > 0 && `${parsePrice(fee?.fixed)}${fee.percentage > 0 ? ' + ' : ''}`}{fee.percentage > 0 && `${fee.percentage}%`}){' '}
524
529
  </OText>
525
530
  </OSRow>
526
531
  <OText>{parsePrice(fee?.summary?.fixed + (fee?.summary?.percentage_after_discount ?? fee?.summary?.percentage) ?? 0)}</OText>
@@ -593,7 +598,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
593
598
  <>
594
599
  <Spinner visible={!order || Object.keys(order).length === 0} />
595
600
 
596
- {order && Object.keys(order).length > 0 && (
601
+ {!!order && Object.keys(order).length > 0 && (
597
602
  <>
598
603
  <Container>
599
604
  <NavBar
@@ -15,8 +15,6 @@ import { Container } from '../../layouts/Container'
15
15
  import NavBar from '../NavBar'
16
16
  import { LANDSCAPE, PORTRAIT, useDeviceOrientation } from '../../../../../src/hooks/DeviceOrientation'
17
17
  import GridContainer from '../../layouts/GridContainer'
18
- import AntDesignIcon from 'react-native-vector-icons/AntDesign'
19
- import MaterialIcon from 'react-native-vector-icons/MaterialCommunityIcons'
20
18
 
21
19
  const OrderTypeSelectorCardUI = (props: OrderTypeSelectParams) => {
22
20
  const {
@@ -29,7 +27,7 @@ const OrderTypeSelectorCardUI = (props: OrderTypeSelectParams) => {
29
27
  callback
30
28
  } = props
31
29
 
32
- const theme = useTheme();
30
+ const theme = useTheme();
33
31
  const [, t] = useLanguage();
34
32
  const [orientationState] = useDeviceOrientation();
35
33
  const [orderState] = useOrder()
@@ -47,7 +45,7 @@ const OrderTypeSelectorCardUI = (props: OrderTypeSelectParams) => {
47
45
  }
48
46
 
49
47
  useEffect(() => {
50
- if (isCardCliked) {
48
+ if(isCardCliked){
51
49
  callback?.()
52
50
  setIsCardClicked(false)
53
51
  setIsLoadingCard(null)
@@ -59,7 +57,7 @@ const OrderTypeSelectorCardUI = (props: OrderTypeSelectParams) => {
59
57
  <Container>
60
58
  <NavBar
61
59
  title={t('ORDER_TYPE_X_ID', 'Order type')}
62
- {...(goBack && { onActionLeft: goBack })}
60
+ onActionLeft={goBack}
63
61
  btnStyle={{ paddingLeft: 0 }}
64
62
  />
65
63
 
@@ -85,13 +83,13 @@ const OrderTypeSelectorCardUI = (props: OrderTypeSelectParams) => {
85
83
  style={cardStyle}
86
84
  isDisabled={isCardCliked}
87
85
  isLoading={isLoadingCard === 'Eat In'}
88
- title={t('EAT_IN', 'Eat In')}
86
+ title={t('EAT_IN','Eat In')}
89
87
  description={t('EAT_IN_DESCRIPTION', 'We are very glad to have you here. Bon appetit!')}
90
88
  bgImage={theme.images.general.eatIn}
91
- VectorIcon={() => <MaterialIcon name='pin-outline' size={28} color='white' style={{ marginBottom: 10 }} />}
89
+ icon={theme.images.general.pushPin}
92
90
  callToActionText={t('START_MY_ORDER', 'Start my order')}
93
91
  onClick={() => {
94
- if (_eatIn?.value !== orderState?.options?.type) {
92
+ if(_eatIn?.value !== orderState?.options?.type){
95
93
  handleChangeOrderType(_eatIn?.value);
96
94
  setIsCardClicked(true)
97
95
  setIsLoadingCard('Eat In')
@@ -108,15 +106,15 @@ const OrderTypeSelectorCardUI = (props: OrderTypeSelectParams) => {
108
106
 
109
107
  <OptionCard
110
108
  style={cardStyle}
111
- title={t('TAKE_OUT', 'Take out')}
109
+ title={t('TAKE_OUT','Take out')}
112
110
  isDisabled={isCardCliked}
113
111
  isLoading={isLoadingCard === 'Take out'}
114
112
  description={t('TAKE_OUT_DESCRIPTION', 'You are very welcome anytime you visit us!')}
115
113
  bgImage={theme.images.general.takeOut}
116
- VectorIcon={() => <AntDesignIcon name='shoppingcart' size={28} color='white' style={{ marginBottom: 10 }} />}
114
+ icon={theme.images.general.shoppingCart}
117
115
  callToActionText={t('START_MY_ORDER', 'Start my order')}
118
116
  onClick={() => {
119
- if (_takeOut?.value !== orderState?.options?.type) {
117
+ if(_takeOut?.value !== orderState?.options?.type){
120
118
  handleChangeOrderType(_takeOut?.value);
121
119
  setIsCardClicked(true)
122
120
  setIsLoadingCard('Take out')
@@ -107,7 +107,7 @@ const PaymentOptionsUI = (props: any) => {
107
107
 
108
108
  const handlePlaceOrder = () => {
109
109
  if (!userErrors.length) {
110
- handlerClickPlaceOrder && handlerClickPlaceOrder();
110
+ handlerClickPlaceOrder && handlerClickPlaceOrder(null, { on_behalf_of: props.customerName });
111
111
  return;
112
112
  }
113
113
  let stringError = '';
@@ -189,67 +189,69 @@ const PaymentOptionsUI = (props: any) => {
189
189
 
190
190
  return (
191
191
  <>
192
- <Spinner visible={isLoading || placing} />
192
+ <Spinner visible={isLoading || placing || paymethodsList?.loading} />
193
193
 
194
194
  <Container nestedScrollEnabled>
195
- <NavBar
196
- title={t('PAYMENT_METHODS', 'Payment methods')}
197
- onActionLeft={goToBack}
198
- btnStyle={{ paddingLeft: 0 }}
199
- />
200
-
201
- <View
202
- style={{ marginVertical: orientationState?.dimensions?.height * 0.03 }}>
203
- <OText size={orientationState?.dimensions?.width * 0.048}>
204
- {t('HOW_WOULD_YOU', 'How would you')} {'\n'}
205
- <OText
206
- size={orientationState?.dimensions?.width * 0.048}
207
- weight={'700'}>
208
- {`${t('LIKE_TO_PAY', 'like to pay')}?`}
209
- </OText>
210
- </OText>
211
- </View>
212
-
213
195
  {supportedMethods?.length > 0 && (
214
- <GridContainer style={{ justifyContent: 'space-between' }}>
215
- {propsOfItems.CARD_ON_DELIVERY_ID && (
216
- <View style={{ marginBottom: orientationState?.orientation === LANDSCAPE ? 20 : 0 }}>
217
- <OptionCard {...propsOfItems?.CARD_ON_DELIVERY_ID} styke />
218
- </View>
219
- )}
196
+ <>
197
+ <NavBar
198
+ title={t('PAYMENT_METHODS', 'Payment methods')}
199
+ onActionLeft={goToBack}
200
+ btnStyle={{ paddingLeft: 0 }}
201
+ />
220
202
 
221
203
  <View
222
- style={{
223
- width:
224
- orientationState?.orientation === LANDSCAPE
225
- ? orientationState?.dimensions?.width * 0.0016
226
- : 1,
227
- height:
228
- orientationState?.orientation === PORTRAIT
229
- ? orientationState?.dimensions?.height * 0.018
230
- : 1,
231
- }}
232
- />
204
+ style={{ marginVertical: orientationState?.dimensions?.height * 0.03 }}>
205
+ <OText size={orientationState?.dimensions?.width * 0.048}>
206
+ {t('HOW_WOULD_YOU', 'How would you')} {'\n'}
207
+ <OText
208
+ size={orientationState?.dimensions?.width * 0.048}
209
+ weight={'700'}>
210
+ {`${t('LIKE_TO_PAY', 'like to pay')}?`}
211
+ </OText>
212
+ </OText>
213
+ </View>
233
214
 
234
- {propsOfItems?.CASH_ID && <OptionCard {...propsOfItems?.CASH_ID} />}
215
+ <GridContainer style={{ justifyContent: 'space-between' }}>
216
+ {propsOfItems.CARD_ON_DELIVERY_ID && (
217
+ <View style={{ marginBottom: orientationState?.orientation === LANDSCAPE ? 20 : 0 }}>
218
+ <OptionCard {...propsOfItems?.CARD_ON_DELIVERY_ID} styke />
219
+ </View>
220
+ )}
235
221
 
236
- <View
237
- style={{
238
- width:
239
- orientationState?.orientation === LANDSCAPE
240
- ? orientationState?.dimensions?.width * 0.0016
241
- : 1,
242
- height:
243
- orientationState?.orientation === PORTRAIT
244
- ? orientationState?.dimensions?.height * 0.018
245
- : 1,
246
- }}
247
- />
222
+ <View
223
+ style={{
224
+ width:
225
+ orientationState?.orientation === LANDSCAPE
226
+ ? orientationState?.dimensions?.width * 0.0016
227
+ : 1,
228
+ height:
229
+ orientationState?.orientation === PORTRAIT
230
+ ? orientationState?.dimensions?.height * 0.018
231
+ : 1,
232
+ }}
233
+ />
234
+
235
+ {propsOfItems?.CASH_ID && <OptionCard {...propsOfItems?.CASH_ID} />}
236
+
237
+ <View
238
+ style={{
239
+ width:
240
+ orientationState?.orientation === LANDSCAPE
241
+ ? orientationState?.dimensions?.width * 0.0016
242
+ : 1,
243
+ height:
244
+ orientationState?.orientation === PORTRAIT
245
+ ? orientationState?.dimensions?.height * 0.018
246
+ : 1,
247
+ }}
248
+ />
248
249
 
249
- {propsOfItems.STRIPE && (
250
- <OptionCard {...propsOfItems?.STRIPE} />
251
- )}
252
- </GridContainer>
250
+ {propsOfItems.STRIPE && (
251
+ <OptionCard {...propsOfItems?.STRIPE} />
252
+ )}
253
+ </GridContainer>
254
+ </>
253
255
  )}
254
256
  <View style={{ height: orientationState?.dimensions?.height * 0.05 }} />
255
257
  <OModal
@@ -6,8 +6,7 @@ import {
6
6
  StyleSheet,
7
7
  Animated,
8
8
  ScrollView,
9
- Platform,
10
- ImageBackground
9
+ ImageBackground,
11
10
  } from 'react-native'
12
11
  import {
13
12
  ProductForm as ProductOptions,
@@ -17,7 +16,6 @@ import {
17
16
  useUtils
18
17
  } from 'ordering-components/native'
19
18
  import MaterialCommunityIcon from 'react-native-vector-icons/MaterialCommunityIcons'
20
- import Spinner from 'react-native-loading-spinner-overlay'
21
19
  import { useTheme } from 'styled-components/native'
22
20
 
23
21
  import { ProductIngredient } from '../ProductIngredient'
@@ -32,12 +30,11 @@ import {
32
30
  ProductComment,
33
31
  ProductActions
34
32
  } from './styles'
35
- import { OButton, OImage, OInput, OText } from '../shared'
33
+ import { OButton, OInput, OText } from '../shared'
36
34
  import { ProductOptionSubOption } from '../ProductOptionSubOption'
37
35
  import { NotFoundSource } from '../NotFoundSource'
38
36
  import NavBar from '../NavBar'
39
37
  import { useDeviceOrientation } from '../../../../../src/hooks/DeviceOrientation'
40
- import { useCartBottomSheet } from '../../providers/CartBottomSheetProvider';
41
38
 
42
39
  export const ProductOptionsUI = (props: any) => {
43
40
  const {
@@ -56,7 +53,6 @@ export const ProductOptionsUI = (props: any) => {
56
53
  handleChangeCommentState,
57
54
  productObject,
58
55
  onClose,
59
- isFromCheckout,
60
56
  isDrawer
61
57
  } = props;
62
58
 
@@ -66,7 +62,6 @@ export const ProductOptionsUI = (props: any) => {
66
62
  const [orderState] = useOrder();
67
63
  const [{ auth }] = useSession();
68
64
  const [orientationState] = useDeviceOrientation();
69
- const [, { showCartBottomSheet }] = useCartBottomSheet();
70
65
 
71
66
  const { product, loading, error } = productObject;
72
67
 
@@ -87,6 +82,8 @@ export const ProductOptionsUI = (props: any) => {
87
82
  const handleSaveProduct = () => {
88
83
  const isErrors = Object.values(errors).length > 0
89
84
  if (!isErrors) {
85
+ props.onProductStateChange &&
86
+ props.onProductStateChange(props.isEdit ? { product, productCart }: productCart)
90
87
  handleSave && handleSave()
91
88
  return
92
89
  }
@@ -446,7 +443,7 @@ export const ProductOptionsUI = (props: any) => {
446
443
  </WrapperIngredients>
447
444
  </View>
448
445
  )}
449
- {product?.extras.map((extra: any) => extra.options.sort((a: any, b: any) => a.rank - b.rank).map((option: any) => {
446
+ {product?.extras.sort((a: any, b: any) => a.rank - b.rank).map((extra: any) => extra.options.sort((a: any, b: any) => a.rank - b.rank).map((option: any) => {
450
447
  const currentState = productCart.options[`id:${option.id}`] || {}
451
448
  return (
452
449
  <React.Fragment key={option.id}>
@@ -503,12 +500,14 @@ export const ProductOptionsUI = (props: any) => {
503
500
  </WrapContent>
504
501
  </View>
505
502
  )}
503
+
506
504
  {error && error.length > 0 && (
507
505
  <NotFoundSource
508
506
  content={error[0]?.message || error[0]}
509
507
  />
510
508
  )}
511
509
  </ScrollView>
510
+
512
511
  {!loading && !error && product && (
513
512
  <ProductActions>
514
513
  {productCart && !isSoldOut && maxProductQuantity > 0 && (
@@ -103,7 +103,7 @@ export const ProductItemAccordion = (props: ProductItemAccordionParams) => {
103
103
 
104
104
  const getFormattedSubOptionName = ({ quantity, name, position, price }: { quantity: number, name: string, position: string, price: number }) => {
105
105
  const pos = position ? `(${position})` : ''
106
- return `${quantity} x ${name} ${pos} +${price}`
106
+ return `${quantity} x ${name} ${pos} ${price}`
107
107
  }
108
108
 
109
109
  /*useEffect(() => {
@@ -210,7 +210,7 @@ export const ProductItemAccordion = (props: ProductItemAccordionParams) => {
210
210
  quantity: suboption.quantity,
211
211
  name: suboption.name,
212
212
  position: (suboption.position !== 'whole') ? t(suboption.position.toUpperCase(), suboption.position) : '',
213
- price: parsePrice(suboption.price)
213
+ price: suboption.price > 0 ? `+${parsePrice(suboption.price)}` : parsePrice(suboption.price)
214
214
  })}
215
215
  </OText>
216
216
  </ProductSubOption>
@@ -32,7 +32,7 @@ const ProductOptionUI = (props: any) => {
32
32
  <OText
33
33
  size={26}
34
34
  weight="bold"
35
- style={{ width: '80%' }}
35
+ style={{ maxWidth: '80%' }}
36
36
  >
37
37
  {option.name}
38
38
  </OText>
@@ -144,13 +144,15 @@ export const ProductOptionSubOptionUI = (props: any) => {
144
144
  </PositionControl>
145
145
  )
146
146
  }
147
+ {price > 0 && (
147
148
  <OText
148
149
  color="#909BA9"
149
150
  size={16}
150
151
  weight="bold"
151
152
  >
152
- + {parsePrice(price)}
153
+ + {parsePrice(price)}
153
154
  </OText>
155
+ )}
154
156
  </RightSide>
155
157
  </Container>
156
158
  )
@@ -71,6 +71,11 @@ const UpsellingProductsUI = (props: UpsellingProductsParams) => {
71
71
  }, [upsellingProducts.loading, upsellingProducts?.products.length])
72
72
 
73
73
  const handleFormProduct = (product: any) => {
74
+ if (props.onAddProduct) {
75
+ onClose && onClose()
76
+ props.onAddProduct(product)
77
+ return
78
+ }
74
79
  setActualProduct(product)
75
80
  setModalIsOpen(true)
76
81
  }
@@ -81,9 +86,18 @@ const UpsellingProductsUI = (props: UpsellingProductsParams) => {
81
86
  }
82
87
 
83
88
  const UpsellingLayout = () => {
84
-
85
89
  const theme = useTheme()
86
90
 
91
+ const onClickProduct = (product: any) => {
92
+ resetInactivityTimeout()
93
+ if (props.onAddProduct) {
94
+ onClose && onClose()
95
+ props.onAddProduct(product)
96
+ return
97
+ }
98
+ handleFormProduct(product)
99
+ }
100
+
87
101
  return (
88
102
  <Container>
89
103
  {
@@ -167,10 +181,7 @@ const UpsellingProductsUI = (props: UpsellingProductsParams) => {
167
181
  style={{ height: 40, width: '100%' }}
168
182
  bgColor="#EAF2FE"
169
183
  borderColor="#EAF2FE"
170
- onClick={() => {
171
- resetInactivityTimeout()
172
- handleFormProduct(product)
173
- }}
184
+ onClick={() => onClickProduct(product)}
174
185
  />
175
186
  </Item>
176
187
  )) : (
@@ -10,8 +10,6 @@ import {
10
10
 
11
11
  import * as React from 'react';
12
12
  import styled from 'styled-components/native';
13
- import AntDesignIcon from 'react-native-vector-icons/AntDesign'
14
- import { Icon, IconProps } from 'react-native-vector-icons/Icon';
15
13
 
16
14
  const StyledButton = styled.View<Props>`
17
15
  background-color: ${(props: any) => props.theme.colors.primary};
@@ -79,19 +77,17 @@ interface Props {
79
77
  isCircle?: boolean;
80
78
  bgColor?: string;
81
79
  borderColor?: string;
82
- iconProps?: IconProps;
83
- IconCustom?: React.FunctionComponent
84
80
  }
85
81
 
86
82
  const OButton = (props: Props): React.ReactElement => {
87
83
  if (props.isDisabled) {
88
84
  return (
89
85
  <View style={props.parentStyle}>
90
- <StyledButtonDisabled style={props.style}>
91
- <StyledTextDisabled style={props.disabledTextStyle ? props.disabledTextStyle : props.textStyle}>
92
- {props.text}
93
- </StyledTextDisabled>
94
- </StyledButtonDisabled>
86
+ <StyledButtonDisabled style={props.style}>
87
+ <StyledTextDisabled style={props.disabledTextStyle ? props.disabledTextStyle : props.textStyle}>
88
+ {props.text}
89
+ </StyledTextDisabled>
90
+ </StyledButtonDisabled>
95
91
  </View>
96
92
  );
97
93
  }
@@ -115,15 +111,6 @@ const OButton = (props: Props): React.ReactElement => {
115
111
  {props.imgLeftSrc ? (
116
112
  <StyledImage style={props.imgLeftStyle} source={props.imgLeftSrc} />
117
113
  ) : null}
118
- {props.iconProps ? (
119
- <>
120
- {props?.IconCustom ? (
121
- <props.IconCustom {...props.iconProps} />
122
- ) : (
123
- <AntDesignIcon {...props.iconProps} />
124
- )}
125
- </>
126
- ) : null}
127
114
  {props.text ? (
128
115
  <StyledText style={props.textStyle}>{props.text}</StyledText>
129
116
  ) : null}
@@ -55,6 +55,7 @@ export interface UpsellingProductsParams {
55
55
  setCanOpenUpselling?: (value: any) => void;
56
56
  onClose?: () => void;
57
57
  resetInactivityTimeout: any;
58
+ onAddProduct: any;
58
59
  }
59
60
 
60
61
  export interface LanguageSelectorParams {
@@ -15,6 +15,8 @@ import { BusinessProductsListing } from './src/components/BusinessProductsListin
15
15
  import { CartContent } from './src/components/CartContent';
16
16
  import { BusinessCart } from './src/components/BusinessCart';
17
17
  import { Checkout } from './src/components/Checkout';
18
+ import { Favorite } from './src/components/Favorite';
19
+ import { FavoriteList } from './src/components/FavoriteList';
18
20
  import { FloatingButton } from './src/components/FloatingButton';
19
21
  import { ForgotPasswordForm } from './src/components/ForgotPasswordForm';
20
22
  import { MomentOption } from './src/components/MomentOption';
@@ -30,6 +32,7 @@ import { ReviewDriver } from './src/components/ReviewDriver';
30
32
  import { UserProfile } from './src/components/UserProfile';
31
33
  import { MessageListing } from './src/components/MessageListing';
32
34
  import { Messages } from './src/components/Messages';
35
+ import { MyOrders } from './src/components/MyOrders';
33
36
  import { Help } from './src/components/Help';
34
37
  import { HelpAccountAndPayment } from './src/components/HelpAccountAndPayment';
35
38
  import { HelpGuide } from './src/components/HelpGuide';
@@ -45,6 +48,8 @@ import { UpsellingProducts } from './src/components/UpsellingProducts';
45
48
  import { UserVerification } from './src/components/UserVerification';
46
49
  import { BusinessListingSearch } from './src/components/BusinessListingSearch';
47
50
  import { LastOrders } from './src/components/LastOrders';
51
+ import { MultiCheckout } from './src/components/MultiCheckout'
52
+ import { MultiOrdersDetails } from './src/components/MultiOrdersDetails'
48
53
  import NavBar from './src/components/NavBar';
49
54
  import { BusinessTypeFilter } from './src/components/BusinessTypeFilter';
50
55
  import { BusinessController } from './src/components/BusinessController';
@@ -54,16 +59,22 @@ import { PaymentOptions } from './src/components/PaymentOptions';
54
59
  import { DriverTips } from './src/components/DriverTips';
55
60
  import { UserDetails } from './src/components/UserDetails';
56
61
  import { OrderSummary } from './src/components/OrderSummary';
62
+ import { OrderItAgain } from './src/components/OrderItAgain';
57
63
  import { CartStoresListing } from './src/components/CartStoresListing';
58
64
  import { PaymentOptionsWebView } from '../../src/components/PaymentOptionsWebView';
59
65
  import { GoogleMap } from './src/components/GoogleMap';
60
66
  import { SingleProductCard } from './src/components/SingleProductCard';
67
+ import { SingleOrderCard } from './src/components/SingleOrderCard';
61
68
  import { UpsellingRedirect } from './src/components/BusinessProductsListing/UpsellingRedirect';
62
69
  import { ProductItemAccordion } from './src/components/ProductItemAccordion';
63
70
  import { BusinessItemAccordion } from './src/components/BusinessItemAccordion';
64
71
  import { CouponControl } from './src/components/CouponControl';
65
72
  import { TaxInformation } from './src/components/TaxInformation';
66
73
  import { PlaceSpot } from './src/components/PlaceSpot';
74
+ import { ProfessionalFilter } from './src/components/ProfessionalFilter';
75
+ import { ProfessionalProfile } from './src/components/ProfessionalProfile';
76
+ import { ServiceForm } from './src/components/ServiceForm';
77
+ import { MomentSelector } from './src/components/MomentSelector';
67
78
  import { Cart } from './src/components/Cart';
68
79
  import { LanguageSelector } from './src/components/LanguageSelector';
69
80
  import { PhoneInputNumber } from './src/components/PhoneInputNumber'
@@ -77,6 +88,7 @@ import { StripeCardsList } from './src/components/StripeCardsList';
77
88
  import { ProductIngredient } from './src/components/ProductIngredient';
78
89
  import { ProductOption } from './src/components/ProductOption';
79
90
  import { ProductOptionSubOption } from './src/components/ProductOptionSubOption';
91
+ import { Sessions } from './src/components/Sessions';
80
92
  import { SingleProductReview } from './src/components/SingleProductReview';
81
93
  import { LogoutButton } from './src/components/LogoutButton';
82
94
  import { UserFormDetailsUI } from './src/components/UserFormDetails';
@@ -163,6 +175,8 @@ export {
163
175
  CartContent,
164
176
  BusinessCart,
165
177
  Checkout,
178
+ Favorite,
179
+ FavoriteList,
166
180
  ForgotPasswordForm,
167
181
  MomentOption,
168
182
  OrdersOption,
@@ -181,6 +195,8 @@ export {
181
195
  HelpAccountAndPayment,
182
196
  HelpGuide,
183
197
  HelpOrder,
198
+ MultiCheckout,
199
+ MultiOrdersDetails,
184
200
  NetworkError,
185
201
  NotFoundSource,
186
202
  OrderTypeSelector,
@@ -204,16 +220,22 @@ export {
204
220
  DriverTips,
205
221
  UserDetails,
206
222
  OrderSummary,
223
+ OrderItAgain,
207
224
  CartStoresListing,
208
225
  PaymentOptionsWebView,
209
226
  GoogleMap,
210
227
  SingleProductCard,
228
+ SingleOrderCard,
211
229
  UpsellingRedirect,
212
230
  ProductItemAccordion,
213
231
  BusinessItemAccordion,
214
232
  CouponControl,
215
233
  TaxInformation,
216
234
  PlaceSpot,
235
+ ProfessionalFilter,
236
+ ServiceForm,
237
+ ProfessionalProfile,
238
+ MomentSelector,
217
239
  Cart,
218
240
  LanguageSelector,
219
241
  PhoneInputNumber,
@@ -227,11 +249,13 @@ export {
227
249
  ProductIngredient,
228
250
  ProductOption,
229
251
  ProductOptionSubOption,
252
+ Sessions,
230
253
  SingleProductReview,
231
254
  LogoutButton,
232
255
  UserFormDetailsUI,
233
256
  WalletTransactionItem,
234
257
  Promotions,
258
+ MyOrders,
235
259
  ORDER_TYPES,
236
260
  USER_TYPE,
237
261