ordering-ui-react-native 0.17.61 → 0.17.62-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 (211) 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/PhoneInputNumber/index.tsx +6 -2
  7. package/src/components/StripeMethodForm/index.tsx +136 -102
  8. package/src/components/VerifyPhone/styles.tsx +1 -2
  9. package/src/components/shared/OToast.tsx +2 -2
  10. package/src/types/index.tsx +5 -0
  11. package/src/utils/index.tsx +5 -0
  12. package/themes/business/index.tsx +2 -0
  13. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +270 -245
  14. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +6 -4
  15. package/themes/business/src/components/BusinessController/index.tsx +0 -1
  16. package/themes/business/src/components/Chat/index.tsx +123 -111
  17. package/themes/business/src/components/DriverMap/index.tsx +17 -6
  18. package/themes/business/src/components/DriverSchedule/index.tsx +42 -5
  19. package/themes/business/src/components/GoogleMap/index.tsx +58 -57
  20. package/themes/business/src/components/LoginForm/Otp/index.tsx +31 -3
  21. package/themes/business/src/components/LoginForm/index.tsx +15 -22
  22. package/themes/business/src/components/MapView/index.tsx +10 -10
  23. package/themes/business/src/components/NewOrderNotification/index.tsx +35 -21
  24. package/themes/business/src/components/NotFoundSource/index.tsx +2 -2
  25. package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
  26. package/themes/business/src/components/OrderDetails/Delivery.tsx +191 -6
  27. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +130 -61
  28. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +64 -63
  29. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +195 -0
  30. package/themes/business/src/components/OrderDetailsLogistic/styles.tsx +5 -0
  31. package/themes/business/src/components/OrderMessage/index.tsx +19 -18
  32. package/themes/business/src/components/OrderSummary/index.tsx +114 -123
  33. package/themes/business/src/components/OrdersOption/index.tsx +32 -75
  34. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +249 -0
  35. package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +115 -0
  36. package/themes/business/src/components/PreviousOrders/index.tsx +444 -242
  37. package/themes/business/src/components/PreviousOrders/styles.tsx +31 -3
  38. package/themes/business/src/components/ProductItemAccordion/index.tsx +27 -3
  39. package/themes/business/src/components/ReviewCustomer/index.tsx +30 -15
  40. package/themes/business/src/components/StoresList/index.tsx +3 -4
  41. package/themes/business/src/components/UserProfileForm/index.tsx +11 -13
  42. package/themes/business/src/components/shared/OLink.tsx +33 -13
  43. package/themes/business/src/components/shared/OModal.tsx +16 -9
  44. package/themes/business/src/components/shared/OText.tsx +8 -2
  45. package/themes/business/src/types/index.tsx +28 -12
  46. package/themes/business/src/utils/index.tsx +29 -2
  47. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  48. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  49. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  50. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  51. package/themes/kiosk/src/components/Intro/index.tsx +16 -1
  52. package/themes/kiosk/src/components/LoginForm/index.tsx +7 -9
  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 +2 -2
  57. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  58. package/themes/original/index.tsx +4 -0
  59. package/themes/original/src/components/AddressDetails/index.tsx +28 -10
  60. package/themes/original/src/components/AddressForm/index.tsx +68 -40
  61. package/themes/original/src/components/AddressList/index.tsx +27 -22
  62. package/themes/original/src/components/AddressList/styles.tsx +4 -2
  63. package/themes/original/src/components/AnalyticsSegment/index.tsx +193 -10
  64. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  65. package/themes/original/src/components/AppleLogin/styles.tsx +3 -1
  66. package/themes/original/src/components/BusinessBasicInformation/index.tsx +153 -96
  67. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +10 -12
  68. package/themes/original/src/components/BusinessController/index.tsx +122 -68
  69. package/themes/original/src/components/BusinessController/styles.tsx +23 -4
  70. package/themes/original/src/components/BusinessFeaturedController/index.tsx +21 -54
  71. package/themes/original/src/components/BusinessFeaturedController/styles.tsx +8 -0
  72. package/themes/original/src/components/BusinessInformation/index.tsx +142 -109
  73. package/themes/original/src/components/BusinessItemAccordion/index.tsx +15 -20
  74. package/themes/original/src/components/BusinessListingSearch/index.tsx +352 -326
  75. package/themes/original/src/components/BusinessListingSearch/styles.tsx +0 -18
  76. package/themes/original/src/components/BusinessPreorder/index.tsx +103 -19
  77. package/themes/original/src/components/BusinessProductsCategories/index.tsx +1 -2
  78. package/themes/original/src/components/BusinessProductsList/index.tsx +25 -15
  79. package/themes/original/src/components/BusinessProductsList/styles.tsx +8 -3
  80. package/themes/original/src/components/BusinessProductsListing/UpsellingRedirect.tsx +1 -1
  81. package/themes/original/src/components/BusinessProductsListing/index.tsx +684 -555
  82. package/themes/original/src/components/BusinessProductsListing/styles.tsx +2 -2
  83. package/themes/original/src/components/BusinessReviews/index.tsx +3 -1
  84. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +1 -1
  85. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +97 -91
  86. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +0 -1
  87. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  88. package/themes/original/src/components/Cart/index.tsx +77 -50
  89. package/themes/original/src/components/CartContent/index.tsx +117 -20
  90. package/themes/original/src/components/CartContent/styles.tsx +17 -7
  91. package/themes/original/src/components/Checkout/index.tsx +387 -172
  92. package/themes/original/src/components/Checkout/styles.tsx +4 -2
  93. package/themes/original/src/components/CitiesControl/index.tsx +89 -0
  94. package/themes/original/src/components/CitiesControl/styles.tsx +17 -0
  95. package/themes/original/src/components/CouponControl/index.tsx +10 -3
  96. package/themes/original/src/components/DriverTips/index.tsx +52 -34
  97. package/themes/original/src/components/FacebookLogin/styles.tsx +3 -1
  98. package/themes/original/src/components/Favorite/index.tsx +8 -9
  99. package/themes/original/src/components/Favorite/styles.tsx +1 -1
  100. package/themes/original/src/components/FavoriteList/index.tsx +1 -35
  101. package/themes/original/src/components/FloatingButton/index.tsx +1 -2
  102. package/themes/original/src/components/FloatingButton/styles.tsx +1 -1
  103. package/themes/original/src/components/GPSButton/index.tsx +6 -4
  104. package/themes/original/src/components/GPSButton/styles.ts +3 -3
  105. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +96 -0
  106. package/themes/original/src/components/GiftCard/GiftCardUI/styles.tsx +5 -0
  107. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +100 -0
  108. package/themes/original/src/components/GiftCard/PurchaseGiftCard/styles.tsx +8 -0
  109. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +191 -0
  110. package/themes/original/src/components/GiftCard/RedeemGiftCard/styles.tsx +8 -0
  111. package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +165 -0
  112. package/themes/original/src/components/GiftCard/SendGiftCard/styles.tsx +9 -0
  113. package/themes/original/src/components/GoogleLogin/styles.tsx +1 -1
  114. package/themes/original/src/components/GoogleMap/index.tsx +60 -5
  115. package/themes/original/src/components/Help/index.tsx +8 -8
  116. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +10 -31
  117. package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +5 -3
  118. package/themes/original/src/components/HelpGuide/index.tsx +6 -6
  119. package/themes/original/src/components/HelpGuide/styles.tsx +6 -0
  120. package/themes/original/src/components/HelpOrder/index.tsx +6 -15
  121. package/themes/original/src/components/HelpOrder/styles.tsx +8 -1
  122. package/themes/original/src/components/Home/index.tsx +13 -4
  123. package/themes/original/src/components/LastOrder/index.tsx +1 -34
  124. package/themes/original/src/components/LoginForm/Otp/index.tsx +55 -13
  125. package/themes/original/src/components/LoginForm/Otp/styles.tsx +0 -1
  126. package/themes/original/src/components/LoginForm/index.tsx +59 -34
  127. package/themes/original/src/components/LottieAnimation/index.tsx +89 -55
  128. package/themes/original/src/components/MessageListing/index.tsx +16 -42
  129. package/themes/original/src/components/Messages/index.tsx +29 -7
  130. package/themes/original/src/components/MomentOption/index.tsx +195 -90
  131. package/themes/original/src/components/MomentSelector/index.tsx +1 -1
  132. package/themes/original/src/components/MultiCart/index.tsx +50 -0
  133. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +162 -51
  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 +76 -65
  140. package/themes/original/src/components/NavBar/index.tsx +20 -17
  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 +190 -363
  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 +33 -56
  150. package/themes/original/src/components/OrderSummary/index.tsx +88 -59
  151. package/themes/original/src/components/OrderTypeSelector/index.tsx +2 -1
  152. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +24 -19
  153. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +14 -14
  154. package/themes/original/src/components/OrdersOption/index.tsx +78 -67
  155. package/themes/original/src/components/OrdersOption/styles.tsx +1 -1
  156. package/themes/original/src/components/PageBanner/index.tsx +106 -31
  157. package/themes/original/src/components/PageBanner/styles.tsx +4 -4
  158. package/themes/original/src/components/PaymentOptionCard/index.tsx +180 -0
  159. package/themes/original/src/components/PaymentOptionStripe/styles.tsx +1 -1
  160. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  161. package/themes/original/src/components/PaymentOptions/index.tsx +78 -35
  162. package/themes/original/src/components/PhoneInputNumber/index.tsx +3 -3
  163. package/themes/original/src/components/ProductForm/index.tsx +114 -35
  164. package/themes/original/src/components/ProductForm/styles.tsx +6 -8
  165. package/themes/original/src/components/ProductItemAccordion/index.tsx +22 -19
  166. package/themes/original/src/components/ProductOptionSubOption/index.tsx +34 -24
  167. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +5 -10
  168. package/themes/original/src/components/ProfessionalFilter/SingleProfessionalCard/index.tsx +108 -0
  169. package/themes/original/src/components/ProfessionalFilter/index.tsx +20 -50
  170. package/themes/original/src/components/ProfessionalProfile/index.tsx +36 -7
  171. package/themes/original/src/components/Promotions/index.tsx +234 -220
  172. package/themes/original/src/components/Promotions/styles.tsx +10 -3
  173. package/themes/original/src/components/ReviewOrder/index.tsx +26 -9
  174. package/themes/original/src/components/ReviewOrder/styles.tsx +7 -0
  175. package/themes/original/src/components/ReviewProducts/index.tsx +16 -7
  176. package/themes/original/src/components/ReviewTrigger/index.tsx +27 -9
  177. package/themes/original/src/components/ReviewTrigger/styles.tsx +8 -1
  178. package/themes/original/src/components/ScheduleAccordion/index.tsx +68 -0
  179. package/themes/original/src/components/ScheduleAccordion/styles.tsx +14 -0
  180. package/themes/original/src/components/ServiceForm/index.tsx +66 -17
  181. package/themes/original/src/components/Sessions/index.tsx +11 -8
  182. package/themes/original/src/components/Sessions/styles.tsx +5 -0
  183. package/themes/original/src/components/SignupForm/index.tsx +43 -27
  184. package/themes/original/src/components/SingleOrderCard/index.tsx +130 -56
  185. package/themes/original/src/components/SingleOrderCard/styles.tsx +11 -2
  186. package/themes/original/src/components/SingleProductCard/index.tsx +71 -34
  187. package/themes/original/src/components/SingleProductCard/styles.tsx +21 -4
  188. package/themes/original/src/components/SingleProductReview/styles.tsx +1 -1
  189. package/themes/original/src/components/StripeCardsList/index.tsx +49 -5
  190. package/themes/original/src/components/StripeElementsForm/index.tsx +48 -34
  191. package/themes/original/src/components/StripeElementsForm/naked.tsx +12 -1
  192. package/themes/original/src/components/UpsellingProducts/index.tsx +238 -224
  193. package/themes/original/src/components/UpsellingProducts/styles.tsx +12 -1
  194. package/themes/original/src/components/UserDetails/index.tsx +8 -4
  195. package/themes/original/src/components/UserFormDetails/index.tsx +76 -7
  196. package/themes/original/src/components/UserFormDetails/styles.tsx +1 -1
  197. package/themes/original/src/components/UserProfile/index.tsx +88 -79
  198. package/themes/original/src/components/UserProfileForm/index.tsx +27 -29
  199. package/themes/original/src/components/UserProfileForm/styles.tsx +7 -0
  200. package/themes/original/src/components/WalletTransactionItem/index.tsx +2 -2
  201. package/themes/original/src/components/WalletTransactions/index.tsx +3 -3
  202. package/themes/original/src/components/Wallets/index.tsx +66 -30
  203. package/themes/original/src/components/Wallets/styles.tsx +3 -4
  204. package/themes/original/src/components/shared/HeaderTitle.tsx +1 -1
  205. package/themes/original/src/components/shared/OButton.tsx +6 -2
  206. package/themes/original/src/components/shared/OInput.tsx +6 -1
  207. package/themes/original/src/components/shared/OModal.tsx +3 -3
  208. package/themes/original/src/layouts/Container.tsx +1 -1
  209. package/themes/original/src/types/index.tsx +40 -10
  210. package/themes/original/src/utils/index.tsx +273 -1
  211. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -4,6 +4,7 @@ import { OIcon, OButton, OText } from '../shared'
4
4
  import { ImageStyle, TextStyle, View, Platform, TouchableOpacity } from 'react-native'
5
5
  import { useConfig, useLanguage, useOrder } from 'ordering-components/native'
6
6
  import { useTheme } from 'styled-components/native'
7
+
7
8
  const Wrapper = styled.View`
8
9
  background-color: ${(props: any) => props.theme.colors.white};
9
10
  padding: 10px 0px 20px 0px;
@@ -65,28 +66,27 @@ const NavBar = (props: Props) => {
65
66
 
66
67
  return (
67
68
  <Wrapper style={{ paddingTop: props.paddingTop, ...props.style }}>
68
- {(props?.onActionLeft) && (
69
+ {(props?.onActionLeft || props?.leftImg) && (
69
70
  <OButton
70
- imgLeftSrc={props.leftImg}
71
+ imgLeftSrc={props.leftImg || theme.images.general.arrow_left}
71
72
  imgRightSrc={null}
72
73
  style={{ ...btnBackArrow, ...props.btnStyle }}
73
74
  onClick={props.onActionLeft}
74
- imgLeftStyle={props.imgLeftStyle}
75
- {...(!props.leftImg && { iconProps: { name: 'arrowleft', size: 28, color: props.btnStyle?.color } })}
75
+ imgLeftStyle= {props.imgLeftStyle}
76
76
  />)
77
77
  }
78
78
  <TitleTopWrapper>
79
79
  {props.withIcon
80
80
  ? (
81
- <OIcon
82
- url={props.icon}
83
- style={{
84
- borderColor: theme.colors.lightGray,
85
- borderRadius: 20,
86
- }}
87
- width={60}
88
- height={60}
89
- />
81
+ <OIcon
82
+ url={props.icon}
83
+ style={{
84
+ borderColor: theme.colors.lightGray,
85
+ borderRadius: 20,
86
+ }}
87
+ width={60}
88
+ height={60}
89
+ />
90
90
  )
91
91
  : null
92
92
  }
@@ -134,7 +134,7 @@ const NavBar = (props: Props) => {
134
134
  </View>
135
135
  )}
136
136
 
137
- {props.rightComponent}
137
+ { props.rightComponent }
138
138
  </Wrapper>
139
139
  )
140
140
  }
@@ -95,7 +95,7 @@ interface Props {
95
95
  style?: ViewStyle;
96
96
  bgImage: ImageSourcePropType;
97
97
  innerStyle?: ViewStyle;
98
- icon?: ImageSourcePropType;
98
+ icon: ImageSourcePropType;
99
99
  iconStyle?: ImageStyle;
100
100
  callToActionText: string;
101
101
  callToActionTextStyle?: TextStyle;
@@ -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)
@@ -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')
@@ -7,7 +7,7 @@ import { Wrapper } from './styles'
7
7
 
8
8
  import { PhoneInputParams } from '../../../../../src/types';
9
9
  import { OText } from '../shared';
10
- import {transformCountryCode} from '../../../../../src/utils'
10
+ import { transformCountryCode, verifyCountryCode } from '../../../../../src/utils'
11
11
  import {I18nManager} from 'react-native'
12
12
  import { useTheme } from 'styled-components/native';
13
13
 
@@ -89,7 +89,7 @@ export const PhoneInputNumber = (props: PhoneInputParams) => {
89
89
  containerStyle={{ width: '100%' }}
90
90
  ref={phoneInput}
91
91
  defaultValue={userphoneNumber || defaultValue}
92
- defaultCode={defaultCode ? transformCountryCode(defaultCode) : configs?.default_country_code?.value}
92
+ defaultCode={defaultCode ? transformCountryCode(defaultCode) : verifyCountryCode(configs?.default_country_code?.value)}
93
93
  onChangeFormattedText={(text : string) => handleChangeNumber(text)}
94
94
  withDarkTheme
95
95
  textInputStyle={{textAlign: I18nManager.isRTL ? 'right' : 'left'}}
@@ -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}
@@ -68,6 +68,7 @@ import { SingleProductCard } from './src/components/SingleProductCard';
68
68
  import { SingleOrderCard } from './src/components/SingleOrderCard';
69
69
  import { UpsellingRedirect } from './src/components/BusinessProductsListing/UpsellingRedirect';
70
70
  import { ProductItemAccordion } from './src/components/ProductItemAccordion';
71
+ import { ScheduleAccordion } from './src/components/ScheduleAccordion';
71
72
  import { BusinessItemAccordion } from './src/components/BusinessItemAccordion';
72
73
  import { CouponControl } from './src/components/CouponControl';
73
74
  import { TaxInformation } from './src/components/TaxInformation';
@@ -95,6 +96,7 @@ import { LogoutButton } from './src/components/LogoutButton';
95
96
  import { UserFormDetailsUI } from './src/components/UserFormDetails';
96
97
  import { WalletTransactionItem } from './src/components/WalletTransactionItem';
97
98
  import { Promotions } from './src/components/Promotions'
99
+ import { MultiCart } from './src/components/MultiCart'
98
100
  import { PageBanner } from './src/components/PageBanner'
99
101
  import { USER_TYPE, ORDER_TYPES } from './src/config/constants'
100
102
 
@@ -231,6 +233,7 @@ export {
231
233
  SingleOrderCard,
232
234
  UpsellingRedirect,
233
235
  ProductItemAccordion,
236
+ ScheduleAccordion,
234
237
  BusinessItemAccordion,
235
238
  CouponControl,
236
239
  TaxInformation,
@@ -260,6 +263,7 @@ export {
260
263
  Promotions,
261
264
  PageBanner,
262
265
  MyOrders,
266
+ MultiCart,
263
267
  ORDER_TYPES,
264
268
  USER_TYPE,
265
269
 
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
- import { TouchableOpacity, View } from 'react-native';
2
+ import FastImage from 'react-native-fast-image'
3
+ import { StyleSheet, TouchableOpacity, View } from 'react-native';
3
4
  import {
4
5
  AddressDetails as AddressDetailsController,
5
6
  useOrder,
@@ -21,21 +22,38 @@ const AddressDetailsUI = (props: any) => {
21
22
  const [, t] = useLanguage();
22
23
  const { width } = useWindowDimensions();
23
24
 
25
+ const styles = StyleSheet.create({
26
+ productStyle: {
27
+ width: width,
28
+ height: 151,
29
+ marginVertical: 10
30
+ }
31
+ })
32
+
24
33
  return (
25
34
  <ADContainer>
26
35
  <ADHeader>
27
- <OText
28
- size={16}
29
- lineHeight={24}
30
- color={theme.colors.textNormal}
31
- >
32
- {t('DELIVERY_ADDRESS', 'Delivery address')}
33
- </OText>
36
+ {props.HeaderTitle ?? (
37
+ <OText
38
+ size={16}
39
+ lineHeight={24}
40
+ color={theme.colors.textNormal}
41
+ >
42
+ {t('DELIVERY_ADDRESS', 'Delivery address')}
43
+ </OText>
44
+ )}
34
45
  </ADHeader>
35
- {!!apiKey && (
46
+ {!!apiKey && googleMapsUrl && (
36
47
  <ADMap
37
48
  style={{ marginStart: -40, marginEnd: -40, width: width, flex: 1 }}>
38
- <OIcon url={googleMapsUrl} height={151} width={width} />
49
+ <FastImage
50
+ style={styles.productStyle}
51
+ source={{
52
+ uri: googleMapsUrl,
53
+ priority: FastImage.priority.normal,
54
+ }}
55
+ resizeMode={FastImage.resizeMode.cover}
56
+ />
39
57
  </ADMap>
40
58
  )}
41
59
  <ADAddress>
@@ -16,6 +16,8 @@ import {
16
16
  useToast,
17
17
  ToastType
18
18
  } from 'ordering-components/native';
19
+ import { DeviceOrientationMethods } from '../../../../../src/hooks/DeviceOrientation'
20
+
19
21
  import { GooglePlacesAutocomplete } from 'react-native-google-places-autocomplete';
20
22
  import Spinner from 'react-native-loading-spinner-overlay';
21
23
  import { useForm, Controller } from 'react-hook-form';
@@ -38,6 +40,8 @@ import {
38
40
  import { GPSButton } from '../GPSButton';
39
41
  import { ScrollView } from 'react-native-gesture-handler';
40
42
 
43
+ const { useDeviceOrientation } = DeviceOrientationMethods
44
+
41
45
  const inputNames = [
42
46
  { name: 'address', code: 'Address' },
43
47
  { name: 'internal_number', code: 'Internal number' },
@@ -62,9 +66,13 @@ const AddressFormUI = (props: AddressFormParams) => {
62
66
  isFromProductsList,
63
67
  hasAddressDefault,
64
68
  afterSignup,
69
+ businessSlug
65
70
  } = props;
66
71
 
67
72
  const theme = useTheme();
73
+ const [orientationState] = useDeviceOrientation();
74
+
75
+ const [autoCompleteInputFocused, setAutoCompleteInputFocused] = useState(false)
68
76
 
69
77
  const tagsName = [
70
78
  { icon: theme.images.general.tag_home, value: 'home' },
@@ -73,6 +81,8 @@ const AddressFormUI = (props: AddressFormParams) => {
73
81
  { icon: theme.images.general.tag_plus, value: 'other' },
74
82
  ];
75
83
 
84
+ const HEIGHT_SCREEN = orientationState?.dimensions?.height
85
+
76
86
  const styles = StyleSheet.create({
77
87
  iconContainer: {
78
88
  display: 'flex',
@@ -104,10 +114,16 @@ const AddressFormUI = (props: AddressFormParams) => {
104
114
  end: 0,
105
115
  top: 12,
106
116
  zIndex: 1002,
117
+ right: autoCompleteInputFocused && (
118
+ !!address?.address ||
119
+ !!formState.changes?.address ||
120
+ !!addressState.address.address
121
+ ) ? 30 : 15,
122
+ width: 16
107
123
  },
108
124
  wrapperNavbar: Platform.OS === 'ios'
109
- ? { paddingVertical: 0, paddingHorizontal: 40 }
110
- : { paddingVertical: 20, paddingHorizontal: 40 }
125
+ ? { paddingVertical: 0, paddingLeft: 40, paddingRight: 20 }
126
+ : { paddingVertical: 10, paddingLeft: 40, paddingRight: 20 }
111
127
  });
112
128
 
113
129
  const [, t] = useLanguage();
@@ -138,7 +154,6 @@ const AddressFormUI = (props: AddressFormParams) => {
138
154
  const [isKeyboardShow, setIsKeyboardShow] = useState(false);
139
155
  const [isSignUpEffect, setIsSignUpEffect] = useState(false);
140
156
  const [hasEditing, setAddressEditing] = useState(false);
141
- const [autoCompleteInputFocused, setAutoCompleteInputFocused] = useState(false)
142
157
 
143
158
  const googleInput: any = useRef(null);
144
159
  const internalNumberRef: any = useRef(null);
@@ -154,12 +169,13 @@ const AddressFormUI = (props: AddressFormParams) => {
154
169
  const maxLimitLocation =
155
170
  configState?.configs?.meters_to_change_address?.value;
156
171
  const countryCode = configState?.configs?.country_autocomplete?.value
157
- const continueAsGuest = () => navigation.navigate('BusinessList', { isGuestUser: true });
172
+ const isHideMap = theme?.address?.components?.map?.hidden
173
+ const isHideIcons = theme?.address?.components?.icons?.hidden
174
+ const continueAsGuest = () => navigation.navigate(!!businessSlug ? 'Business' : 'BusinessList', { isGuestUser: true });
158
175
  const goToBack = () => navigation?.canGoBack() && navigation.goBack();
159
176
 
160
177
  const getAddressFormatted = (address: any) => {
161
178
  const data: any = { address: null, error: null };
162
- Geocoder.init(googleMapsApiKey);
163
179
  Geocoder.from(address)
164
180
  .then((json) => {
165
181
  if (json.results && json.results?.length > 0) {
@@ -335,6 +351,9 @@ const AddressFormUI = (props: AddressFormParams) => {
335
351
  map_data: { library: 'google', place_id: data.place_id },
336
352
  zip_code: data?.zip_code || null,
337
353
  };
354
+ if (googleInput?.current) {
355
+ googleInput?.current?.setAddressText(addressSelected.address);
356
+ }
338
357
  updateChanges(addressSelected);
339
358
  };
340
359
 
@@ -356,7 +375,7 @@ const AddressFormUI = (props: AddressFormParams) => {
356
375
  if (
357
376
  orderState.loading &&
358
377
  !addressesList &&
359
- orderState.options.address &&
378
+ orderState?.options?.address &&
360
379
  auth &&
361
380
  !afterSignup
362
381
  ) {
@@ -364,7 +383,7 @@ const AddressFormUI = (props: AddressFormParams) => {
364
383
  ? navigation.navigate('BottomTab')
365
384
  : navigation.navigate('Business');
366
385
  }
367
- }, [orderState.options.address]);
386
+ }, [orderState?.options?.address]);
368
387
 
369
388
  useEffect(() => {
370
389
  if (alertState.open && alertState?.key !== 'ERROR_MAX_LIMIT_LOCATION') {
@@ -417,16 +436,16 @@ const AddressFormUI = (props: AddressFormParams) => {
417
436
  if (isEditing) {
418
437
  if (formState?.changes?.location) {
419
438
  const prevLocation = {
420
- lat: Math.trunc(locationChange.lat),
421
- lng: Math.trunc(locationChange.lng),
439
+ lat: locationChange?.lat?.toFixed(5),
440
+ lng: locationChange?.lng?.toFixed(5),
422
441
  };
423
442
  const newLocation = {
424
- lat: Math.trunc(formState?.changes?.location?.lat),
425
- lng: Math.trunc(formState?.changes?.location?.lng),
443
+ lat: formState?.changes?.location?.lat?.toFixed(5),
444
+ lng: formState?.changes?.location?.lng?.toFixed(5),
426
445
  };
427
446
  if (
428
- prevLocation.lat !== newLocation.lat &&
429
- prevLocation.lng !== newLocation.lng
447
+ prevLocation?.lat !== newLocation?.lat &&
448
+ prevLocation?.lng !== newLocation?.lng
430
449
  ) {
431
450
  setLocationChange(formState?.changes?.location);
432
451
  }
@@ -471,6 +490,10 @@ const AddressFormUI = (props: AddressFormParams) => {
471
490
  }
472
491
  }, []);
473
492
 
493
+ useEffect(() => {
494
+ Geocoder.init(googleMapsApiKey);
495
+ }, [googleMapsApiKey]);
496
+
474
497
  useEffect(() => {
475
498
  const keyboardDidShowListener = Keyboard.addListener(
476
499
  'keyboardDidShow',
@@ -508,14 +531,14 @@ const AddressFormUI = (props: AddressFormParams) => {
508
531
  titleAlign={'center'}
509
532
  onActionLeft={goToBack}
510
533
  showCall={false}
511
- btnStyle={{ paddingLeft: 0 }}
512
- style={{ marginTop: Platform.OS === 'ios' ? 0 : 30 }}
513
- titleWrapStyle={{ paddingHorizontal: 0 }}
514
- titleStyle={{ marginRight: 0, marginLeft: 0 }}
534
+ btnStyle={{ paddingLeft: 0, paddingRight: 5 }}
535
+ style={{ marginTop: Platform.OS === 'ios' ? 0 : 10 }}
536
+ titleWrapStyle={{ paddingHorizontal: 0, width: '100%' }}
537
+ titleStyle={{ marginRight: 0, marginLeft: 0, paddingRight: 5 }}
515
538
  />
516
539
  </View>
517
540
  <TouchableWithoutFeedback onPress={Keyboard.dismiss}>
518
- <AddressFormContainer style={{ height: 600, overflow: 'scroll' }}>
541
+ <AddressFormContainer style={{ overflow: 'scroll' }}>
519
542
  <View>
520
543
  <FormInput>
521
544
  <AutocompleteInput>
@@ -620,12 +643,13 @@ const AddressFormUI = (props: AddressFormParams) => {
620
643
  }
621
644
  }}
622
645
  IconButton={<OIcon src={theme.images.general.pin} width={16} />}
646
+ isIntGeoCoder
623
647
  />
624
648
  </View>
625
649
  )}
626
650
  </AutocompleteInput>
627
651
 
628
- {(locationChange || formState.changes?.location) && (
652
+ {!isHideMap && (locationChange || formState.changes?.location) && (
629
653
  <View
630
654
  style={{
631
655
  height: 189,
@@ -641,6 +665,7 @@ const AddressFormUI = (props: AddressFormParams) => {
641
665
  saveLocation={saveMapLocation}
642
666
  setSaveLocation={setSaveMapLocation}
643
667
  handleToggleMap={handleToggleMap}
668
+ isIntGeoCoder
644
669
  />
645
670
  </GoogleMapContainer>
646
671
  </View>
@@ -783,27 +808,29 @@ const AddressFormUI = (props: AddressFormParams) => {
783
808
  />
784
809
  )}
785
810
  </FormInput>
786
- <IconsContainer>
787
- {tagsName.map((tag) => (
788
- <TouchableOpacity
789
- key={tag.value}
790
- onPress={() => handleAddressTag(tag.value)}>
791
- <View
792
- style={{
793
- ...styles.iconContainer,
794
- }}>
795
- <OIcon
796
- src={tag.icon}
797
- width={24}
798
- color={
799
- addressTag === tag.value ?
800
- theme.colors.primary : theme.colors.disabled
801
- }
802
- />
803
- </View>
804
- </TouchableOpacity>
805
- ))}
806
- </IconsContainer>
811
+ {!isHideIcons && (
812
+ <IconsContainer>
813
+ {tagsName.map((tag) => (
814
+ <TouchableOpacity
815
+ key={tag.value}
816
+ onPress={() => handleAddressTag(tag.value)}>
817
+ <View
818
+ style={{
819
+ ...styles.iconContainer,
820
+ }}>
821
+ <OIcon
822
+ src={tag.icon}
823
+ width={24}
824
+ color={
825
+ addressTag === tag.value ?
826
+ theme.colors.primary : theme.colors.disabled
827
+ }
828
+ />
829
+ </View>
830
+ </TouchableOpacity>
831
+ ))}
832
+ </IconsContainer>
833
+ )}
807
834
  </View>
808
835
 
809
836
  <View>
@@ -849,6 +876,7 @@ const AddressFormUI = (props: AddressFormParams) => {
849
876
  saveLocation={saveMapLocation}
850
877
  setSaveLocation={setSaveMapLocation}
851
878
  handleToggleMap={handleToggleMap}
879
+ isIntGeoCoder
852
880
  />
853
881
  </GoogleMapContainer>
854
882
  )}
@@ -1,9 +1,8 @@
1
1
  import React, { useEffect } from 'react'
2
2
  import { AddressList as AddressListController, useLanguage, useOrder, useSession } from 'ordering-components/native'
3
- import { AddressListContainer, AddressItem } from './styles'
3
+ import { AddressItem, Container } from './styles'
4
4
  import { Platform, RefreshControl, StyleSheet, View } from 'react-native'
5
5
  import { OButton, OText, OAlert, OModal, OIcon } from '../shared'
6
- import { Container } from '../../layouts/Container'
7
6
  import { AddressListParams } from '../../types'
8
7
  import { NotFoundSource } from '../NotFoundSource'
9
8
  import NavBar from '../NavBar'
@@ -40,9 +39,6 @@ const AddressListUI = (props: AddressListParams) => {
40
39
 
41
40
  const [isProfile, setIsProfile] = useState(isFromProfile || route?.params?.isFromProfile);
42
41
 
43
- const goToBack = () => navigation?.canGoBack() && navigation.goBack()
44
- const onNavigationRedirect = (route: string, params?: any) => navigation.navigate(route, params)
45
-
46
42
  const onNavigatorRedirect = () => {
47
43
  if (route && (isFromBusinesses || isGoBack)) {
48
44
  isGoBack ? goToBack() : onNavigationRedirect('BottomTab')
@@ -104,7 +100,6 @@ const AddressListUI = (props: AddressListParams) => {
104
100
  const handleSetAddress = (address: any) => {
105
101
  if (address.id === orderState?.options?.address_id) return
106
102
  handleSetDefault(address)
107
- onNavigatorRedirect()
108
103
  }
109
104
 
110
105
  const handleSaveAddress = (address: any) => {
@@ -133,13 +128,21 @@ const AddressListUI = (props: AddressListParams) => {
133
128
  }
134
129
  }
135
130
 
131
+ const goToBack = () => navigation?.canGoBack() && navigation.goBack()
132
+ const onNavigationRedirect = (route: string, params?: any) => navigation.navigate(route, params)
133
+
134
+ useEffect(() => {
135
+ if (orderState.loading && auth && orderState.options.address?.location) {
136
+ onNavigatorRedirect()
137
+ }
138
+ }, [orderState.options.address])
139
+
136
140
  useEffect(() => {
137
141
  console.log('From profile : ' + isProfile)
138
142
  }, [])
139
143
 
140
144
  return (
141
- <Container
142
- noPadding
145
+ <Container
143
146
  refreshControl={
144
147
  <RefreshControl
145
148
  refreshing={refreshing}
@@ -147,17 +150,18 @@ const AddressListUI = (props: AddressListParams) => {
147
150
  />
148
151
  }
149
152
  >
150
- {isProfile && (
151
- <NavBar
152
- title={t('SAVED_PLACES', 'My saved places')}
153
- titleAlign={'center'}
154
- onActionLeft={goToBack}
155
- showCall={false}
156
- style={{ paddingHorizontal: 40, paddingVertical: Platform.OS === 'ios' ? 0 : 20, marginTop: Platform.OS === 'ios' ? 0 : 30 }}
157
- />
158
- )}
159
153
  {(!addressList.loading || (isFromProductsList || isFromBusinesses || isFromProfile || isProfile)) && (
160
- <AddressListContainer>
154
+ <>
155
+ {isProfile && (
156
+ <NavBar
157
+ title={t('SAVED_PLACES', 'My saved places')}
158
+ titleAlign={'center'}
159
+ onActionLeft={goToBack}
160
+ showCall={false}
161
+ paddingTop={10}
162
+ btnStyle={{ paddingLeft: 0 }}
163
+ />
164
+ )}
161
165
  {
162
166
  route &&
163
167
  (
@@ -173,8 +177,8 @@ const AddressListUI = (props: AddressListParams) => {
173
177
  onActionLeft={() => goToBack()}
174
178
  showCall={false}
175
179
  btnStyle={{ paddingLeft: 0 }}
176
- paddingTop={0}
177
- style={{ marginTop: Platform.OS === 'ios' ? 0 : 40 }}
180
+ paddingTop={10}
181
+ style={{ marginTop: 0 }}
178
182
  titleWrapStyle={{ paddingHorizontal: 0 }}
179
183
  titleStyle={{ marginLeft: 0, marginRight: 0 }}
180
184
  />
@@ -323,7 +327,8 @@ const AddressListUI = (props: AddressListParams) => {
323
327
  />
324
328
  </>
325
329
  )}
326
- </AddressListContainer>
330
+ </>
331
+
327
332
  )}
328
333
  </Container>
329
334
  )
@@ -346,7 +351,7 @@ const styles = StyleSheet.create({
346
351
  },
347
352
  button: {
348
353
  marginTop: 30,
349
- marginBottom: 0,
354
+ marginBottom: 30,
350
355
  borderRadius: 7.6,
351
356
  borderWidth: 1,
352
357
  shadowOpacity: 0,
@@ -1,10 +1,12 @@
1
1
  import styled from 'styled-components/native'
2
2
 
3
- export const AddressListContainer = styled.View`
3
+ export const Container = styled.ScrollView`
4
+ position: relative;
4
5
  flex: 1;
5
6
  paddingLeft: 40px;
6
7
  paddingRight: 40px;
7
- paddingBottom: 20px;
8
+ margin-bottom: 40px;
9
+ padding-top: 10px;
8
10
  `
9
11
 
10
12
  export const AddressItem = styled.TouchableOpacity`