ordering-ui-react-native 0.16.46 → 0.16.47-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 (199) hide show
  1. package/package.json +6 -5
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/ActiveOrders/index.tsx +61 -63
  4. package/src/components/ActiveOrders/styles.tsx +8 -14
  5. package/src/components/BusinessBasicInformation/index.tsx +11 -19
  6. package/src/components/BusinessInformation/index.tsx +33 -4
  7. package/src/components/BusinessInformation/styles.tsx +2 -2
  8. package/src/components/BusinessProductsList/index.tsx +10 -10
  9. package/src/components/BusinessesListing/index.tsx +1 -1
  10. package/src/components/Checkout/index.tsx +2 -1
  11. package/src/components/LanguageSelector/index.tsx +21 -16
  12. package/src/components/Messages/index.tsx +2 -2
  13. package/src/components/NotificationSetting/index.tsx +85 -0
  14. package/src/components/OrdersOption/index.tsx +54 -56
  15. package/src/components/PaymentOptions/index.tsx +298 -345
  16. package/src/components/PaymentOptionsWebView/index.tsx +120 -121
  17. package/src/components/ReviewDriver/index.tsx +1 -1
  18. package/src/components/ReviewOrder/index.tsx +2 -2
  19. package/src/components/ReviewProducts/index.tsx +11 -0
  20. package/src/components/SingleProductReview/index.tsx +8 -5
  21. package/src/components/StripeElementsForm/index.tsx +25 -16
  22. package/src/components/VerifyPhone/styles.tsx +1 -2
  23. package/src/components/shared/OBottomPopup.tsx +6 -2
  24. package/src/components/shared/OToast.tsx +3 -3
  25. package/src/index.tsx +2 -0
  26. package/src/types/@fatnlazycat/react-native-recaptcha-v3/index.d.ts +1 -0
  27. package/src/utils/index.tsx +2 -1
  28. package/themes/business/src/components/BusinessController/index.tsx +2 -2
  29. package/themes/business/src/components/Chat/index.tsx +40 -32
  30. package/themes/business/src/components/DriverMap/index.tsx +7 -5
  31. package/themes/business/src/components/DriverSchedule/index.tsx +36 -19
  32. package/themes/business/src/components/LoginForm/index.tsx +111 -74
  33. package/themes/business/src/components/MapView/index.tsx +12 -1
  34. package/themes/business/src/components/MessagesOption/index.tsx +11 -1
  35. package/themes/business/src/components/NewOrderNotification/index.tsx +26 -41
  36. package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
  37. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +33 -23
  38. package/themes/business/src/components/OrdersListManager/index.tsx +10 -3
  39. package/themes/business/src/components/OrdersOption/index.tsx +65 -21
  40. package/themes/business/src/components/OrdersOption/styles.tsx +5 -1
  41. package/themes/business/src/components/OrdersOptionBusiness/index.tsx +15 -1
  42. package/themes/business/src/components/OrdersOptionCity/index.tsx +15 -1
  43. package/themes/business/src/components/OrdersOptionDate/index.tsx +19 -6
  44. package/themes/business/src/components/OrdersOptionDelivery/index.tsx +15 -1
  45. package/themes/business/src/components/OrdersOptionDriver/index.tsx +15 -1
  46. package/themes/business/src/components/OrdersOptionPaymethod/index.tsx +15 -1
  47. package/themes/business/src/components/OrdersOptionStatus/index.tsx +10 -1
  48. package/themes/business/src/components/PreviousMessages/index.tsx +17 -18
  49. package/themes/business/src/components/PreviousOrders/index.tsx +18 -20
  50. package/themes/business/src/components/ProductItemAccordion/index.tsx +3 -2
  51. package/themes/business/src/components/ReviewCustomer/index.tsx +27 -13
  52. package/themes/business/src/components/ScheduleBlocked/index.tsx +2 -2
  53. package/themes/business/src/components/UserFormDetails/index.tsx +5 -2
  54. package/themes/business/src/components/UserProfileForm/index.tsx +2 -0
  55. package/themes/business/src/components/shared/ODropDown.tsx +42 -8
  56. package/themes/business/src/components/shared/ODropDownCalendar.tsx +36 -7
  57. package/themes/business/src/components/shared/OLink.tsx +24 -12
  58. package/themes/business/src/types/index.tsx +15 -9
  59. package/themes/business/src/utils/index.tsx +10 -0
  60. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  61. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  62. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  63. package/themes/kiosk/src/components/BusinessesListing/index.tsx +2 -1
  64. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  65. package/themes/kiosk/src/components/LoginForm/index.tsx +121 -10
  66. package/themes/kiosk/src/components/LoginForm/styles.tsx +5 -0
  67. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  68. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  69. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  70. package/themes/kiosk/src/components/ProductForm/index.tsx +1 -14
  71. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  72. package/themes/kiosk/src/types/index.d.ts +2 -0
  73. package/themes/original/index.tsx +4 -0
  74. package/themes/original/src/components/AddressDetails/index.tsx +10 -8
  75. package/themes/original/src/components/AddressForm/index.tsx +157 -140
  76. package/themes/original/src/components/AddressList/index.tsx +1 -1
  77. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  78. package/themes/original/src/components/BusinessBasicInformation/index.tsx +218 -147
  79. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +2 -2
  80. package/themes/original/src/components/BusinessController/index.tsx +231 -114
  81. package/themes/original/src/components/BusinessController/styles.tsx +14 -9
  82. package/themes/original/src/components/BusinessItemAccordion/index.tsx +12 -6
  83. package/themes/original/src/components/BusinessListingSearch/BusinessControllerSkeletons/index.tsx +57 -0
  84. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/index.tsx +59 -0
  85. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/styles.tsx +13 -0
  86. package/themes/original/src/components/BusinessListingSearch/index.tsx +109 -139
  87. package/themes/original/src/components/BusinessListingSearch/styles.tsx +10 -12
  88. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +87 -0
  89. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/styles.tsx +12 -0
  90. package/themes/original/src/components/BusinessProductsList/index.tsx +59 -60
  91. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  92. package/themes/original/src/components/BusinessProductsListing/index.tsx +175 -80
  93. package/themes/original/src/components/BusinessProductsListing/styles.tsx +18 -11
  94. package/themes/original/src/components/BusinessTypeFilter/index.tsx +3 -2
  95. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +35 -23
  96. package/themes/original/src/components/BusinessesListing/Layout/Appointment/styles.tsx +3 -2
  97. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +275 -120
  98. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +47 -10
  99. package/themes/original/src/components/BusinessesListing/index.tsx +80 -25
  100. package/themes/original/src/components/Cart/index.tsx +82 -15
  101. package/themes/original/src/components/Cart/styles.tsx +4 -0
  102. package/themes/original/src/components/CartContent/index.tsx +22 -16
  103. package/themes/original/src/components/Checkout/index.tsx +113 -117
  104. package/themes/original/src/components/Checkout/styles.tsx +4 -3
  105. package/themes/original/src/components/CitiesControl/index.tsx +89 -0
  106. package/themes/original/src/components/CitiesControl/styles.tsx +17 -0
  107. package/themes/original/src/components/DriverTips/index.tsx +4 -4
  108. package/themes/original/src/components/DriverTips/styles.tsx +2 -1
  109. package/themes/original/src/components/FavoriteList/index.tsx +69 -45
  110. package/themes/original/src/components/FloatingButton/index.tsx +13 -11
  111. package/themes/original/src/components/FloatingButton/styles.tsx +1 -1
  112. package/themes/original/src/components/GPSButton/index.tsx +20 -19
  113. package/themes/original/src/components/GPSButton/styles.ts +3 -3
  114. package/themes/original/src/components/GoogleMap/index.tsx +20 -12
  115. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +25 -10
  116. package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +4 -0
  117. package/themes/original/src/components/HelpGuide/index.tsx +9 -8
  118. package/themes/original/src/components/HelpOrder/index.tsx +9 -8
  119. package/themes/original/src/components/LanguageSelector/index.tsx +19 -14
  120. package/themes/original/src/components/LoginForm/Otp/index.tsx +89 -73
  121. package/themes/original/src/components/LoginForm/Otp/styles.tsx +0 -1
  122. package/themes/original/src/components/LoginForm/index.tsx +98 -41
  123. package/themes/original/src/components/LottieAnimation/index.tsx +69 -0
  124. package/themes/original/src/components/Messages/index.tsx +35 -20
  125. package/themes/original/src/components/MomentOption/index.tsx +8 -6
  126. package/themes/original/src/components/MultiCart/index.tsx +63 -0
  127. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +92 -93
  128. package/themes/original/src/components/MultiCheckout/index.tsx +10 -2
  129. package/themes/original/src/components/MultiOrdersDetails/index.tsx +34 -16
  130. package/themes/original/src/components/MyOrders/index.tsx +88 -22
  131. package/themes/original/src/components/NavBar/index.tsx +11 -5
  132. package/themes/original/src/components/NetworkError/index.tsx +5 -3
  133. package/themes/original/src/components/NotFoundSource/index.tsx +2 -1
  134. package/themes/original/src/components/Notifications/index.tsx +148 -0
  135. package/themes/original/src/components/Notifications/styles.tsx +17 -0
  136. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +167 -0
  137. package/themes/original/src/components/OrderDetails/index.tsx +200 -39
  138. package/themes/original/src/components/OrderDetails/styles.tsx +15 -2
  139. package/themes/original/src/components/OrderItAgain/index.tsx +75 -0
  140. package/themes/original/src/components/OrderItAgain/styles.tsx +10 -0
  141. package/themes/original/src/components/OrderProgress/index.tsx +77 -66
  142. package/themes/original/src/components/OrderProgress/styles.tsx +5 -0
  143. package/themes/original/src/components/OrderSummary/index.tsx +2 -35
  144. package/themes/original/src/components/OrderTypeSelector/index.tsx +85 -36
  145. package/themes/original/src/components/OrderTypeSelector/styles.tsx +19 -1
  146. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +94 -98
  147. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +3 -0
  148. package/themes/original/src/components/OrdersOption/index.tsx +102 -56
  149. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  150. package/themes/original/src/components/PaymentOptions/index.tsx +1 -2
  151. package/themes/original/src/components/PhoneInputNumber/index.tsx +1 -1
  152. package/themes/original/src/components/PlaceSpot/index.tsx +249 -47
  153. package/themes/original/src/components/PlaceSpot/styles.tsx +0 -2
  154. package/themes/original/src/components/PreviousOrders/index.tsx +3 -2
  155. package/themes/original/src/components/ProductForm/index.tsx +639 -664
  156. package/themes/original/src/components/ProductForm/styles.tsx +10 -11
  157. package/themes/original/src/components/ProductItemAccordion/index.tsx +199 -128
  158. package/themes/original/src/components/ProductOption/index.tsx +1 -1
  159. package/themes/original/src/components/ProductOptionSubOption/index.tsx +16 -8
  160. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +0 -1
  161. package/themes/original/src/components/ProfessionalFilter/index.tsx +2 -1
  162. package/themes/original/src/components/ProfessionalProfile/index.tsx +19 -8
  163. package/themes/original/src/components/Promotions/index.tsx +232 -219
  164. package/themes/original/src/components/Promotions/styles.tsx +7 -2
  165. package/themes/original/src/components/ReviewDriver/index.tsx +3 -3
  166. package/themes/original/src/components/ReviewOrder/index.tsx +120 -108
  167. package/themes/original/src/components/ReviewOrder/styles.tsx +5 -7
  168. package/themes/original/src/components/ReviewProducts/index.tsx +8 -5
  169. package/themes/original/src/components/ReviewTrigger/index.tsx +136 -0
  170. package/themes/original/src/components/ReviewTrigger/styles.tsx +41 -0
  171. package/themes/original/src/components/ServiceForm/index.tsx +332 -264
  172. package/themes/original/src/components/SignupForm/index.tsx +160 -113
  173. package/themes/original/src/components/SingleOrderCard/index.tsx +266 -183
  174. package/themes/original/src/components/SingleOrderCard/styles.tsx +10 -8
  175. package/themes/original/src/components/SingleProductCard/index.tsx +198 -112
  176. package/themes/original/src/components/SingleProductCard/styles.tsx +3 -10
  177. package/themes/original/src/components/SingleProductReview/index.tsx +38 -5
  178. package/themes/original/src/components/SingleProductReview/styles.tsx +12 -0
  179. package/themes/original/src/components/StripeElementsForm/index.tsx +13 -2
  180. package/themes/original/src/components/UpsellingProducts/index.tsx +15 -5
  181. package/themes/original/src/components/UserDetails/index.tsx +5 -3
  182. package/themes/original/src/components/UserFormDetails/index.tsx +6 -48
  183. package/themes/original/src/components/UserProfile/index.tsx +56 -31
  184. package/themes/original/src/components/UserProfile/styles.ts +17 -0
  185. package/themes/original/src/components/WalletTransactions/index.tsx +76 -0
  186. package/themes/original/src/components/WalletTransactions/styles.tsx +13 -0
  187. package/themes/original/src/components/Wallets/index.tsx +176 -164
  188. package/themes/original/src/components/Wallets/styles.tsx +12 -8
  189. package/themes/original/src/components/shared/CardAnimation.tsx +47 -0
  190. package/themes/original/src/components/shared/HeaderTitle.tsx +8 -3
  191. package/themes/original/src/components/shared/OBottomPopup.tsx +48 -15
  192. package/themes/original/src/components/shared/OButton.tsx +10 -3
  193. package/themes/original/src/components/shared/OIcon.tsx +8 -1
  194. package/themes/original/src/components/shared/OInput.tsx +10 -1
  195. package/themes/original/src/layouts/Container.tsx +13 -9
  196. package/themes/original/src/layouts/FloatingBottomContainer.tsx +5 -1
  197. package/themes/original/src/types/index.tsx +83 -28
  198. package/themes/original/src/utils/index.tsx +103 -58
  199. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -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')
@@ -550,7 +550,7 @@ export const ProductOptionsUI = (props: any) => {
550
550
  </View>
551
551
  )}
552
552
  <View style={{ width: isSoldOut || maxProductQuantity <= 0 ? '100%' : isDrawer ? '70%' : '80%' }}>
553
- {productCart && !isSoldOut && maxProductQuantity > 0 && auth && orderState.options?.address_id && (
553
+ {productCart && !isSoldOut && maxProductQuantity > 0 && auth && (
554
554
  <OButton
555
555
  onClick={() => handleSaveProduct()}
556
556
  imgRightSrc=''
@@ -563,19 +563,6 @@ export const ProductOptionsUI = (props: any) => {
563
563
  }}
564
564
  />
565
565
  )}
566
- {auth && !orderState.options?.address_id && (
567
- orderState.loading ? (
568
- <OButton
569
- isDisabled
570
- text={t('LOADING', 'Loading')}
571
- imgRightSrc=''
572
- />
573
- ) : (
574
- <OButton
575
- onClick={navigation?.navigate('AddressList')}
576
- />
577
- )
578
- )}
579
566
  {(!auth || isSoldOut || maxProductQuantity <= 0) && (
580
567
  <OButton
581
568
  isDisabled={isSoldOut || maxProductQuantity <= 0}
@@ -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}
@@ -82,6 +82,8 @@ export interface LoginParams {
82
82
  handleSendVerifyCode?: any;
83
83
  handleCheckPhoneCode?: any;
84
84
  useRootPoint?: any;
85
+ enableReCaptcha?: boolean;
86
+ handleReCaptcha?: (vlaue: any) => void;
85
87
  }
86
88
 
87
89
  export interface ProductItemAccordionParams {
@@ -51,6 +51,7 @@ import { LastOrders } from './src/components/LastOrders';
51
51
  import { MultiCheckout } from './src/components/MultiCheckout'
52
52
  import { MultiOrdersDetails } from './src/components/MultiOrdersDetails'
53
53
  import NavBar from './src/components/NavBar';
54
+ import { NotificationsList } from './src/components/Notifications'
54
55
  import { BusinessTypeFilter } from './src/components/BusinessTypeFilter';
55
56
  import { BusinessController } from './src/components/BusinessController';
56
57
  import { BusinessFeaturedController } from './src/components/BusinessFeaturedController';
@@ -59,6 +60,7 @@ import { PaymentOptions } from './src/components/PaymentOptions';
59
60
  import { DriverTips } from './src/components/DriverTips';
60
61
  import { UserDetails } from './src/components/UserDetails';
61
62
  import { OrderSummary } from './src/components/OrderSummary';
63
+ import { OrderItAgain } from './src/components/OrderItAgain';
62
64
  import { CartStoresListing } from './src/components/CartStoresListing';
63
65
  import { PaymentOptionsWebView } from '../../src/components/PaymentOptionsWebView';
64
66
  import { GoogleMap } from './src/components/GoogleMap';
@@ -182,6 +184,7 @@ export {
182
184
  OrderDetails,
183
185
  OrderProgress,
184
186
  BusinessPreorder,
187
+ NotificationsList,
185
188
  UserProfileForm,
186
189
  ReviewOrder,
187
190
  ReviewProducts,
@@ -219,6 +222,7 @@ export {
219
222
  DriverTips,
220
223
  UserDetails,
221
224
  OrderSummary,
225
+ OrderItAgain,
222
226
  CartStoresListing,
223
227
  PaymentOptionsWebView,
224
228
  GoogleMap,
@@ -24,13 +24,15 @@ const AddressDetailsUI = (props: any) => {
24
24
  return (
25
25
  <ADContainer>
26
26
  <ADHeader>
27
- <OText
28
- size={16}
29
- lineHeight={24}
30
- color={theme.colors.textNormal}
31
- weight={'500'}>
32
- {t('DELIVERY_ADDRESS', 'Delivery address')}
33
- </OText>
27
+ {props.HeaderTitle ?? (
28
+ <OText
29
+ size={16}
30
+ lineHeight={24}
31
+ color={theme.colors.textNormal}
32
+ >
33
+ {t('DELIVERY_ADDRESS', 'Delivery address')}
34
+ </OText>
35
+ )}
34
36
  </ADHeader>
35
37
  {!!apiKey && (
36
38
  <ADMap
@@ -57,7 +59,7 @@ const AddressDetailsUI = (props: any) => {
57
59
  }>
58
60
  <OText
59
61
  size={12}
60
- color={theme.colors.textSecondary}
62
+ color={theme.colors.primary}
61
63
  style={{ textDecorationLine: 'underline' }}>
62
64
  {t('CHANGE', 'Change')}
63
65
  </OText>
@@ -5,7 +5,6 @@ import {
5
5
  TouchableOpacity,
6
6
  Keyboard,
7
7
  TouchableWithoutFeedback,
8
- KeyboardAvoidingView,
9
8
  Platform,
10
9
  } from 'react-native';
11
10
  import {
@@ -22,7 +21,7 @@ import Spinner from 'react-native-loading-spinner-overlay';
22
21
  import { useForm, Controller } from 'react-hook-form';
23
22
  import Geocoder from 'react-native-geocoding';
24
23
 
25
- import { OInput, OButton, OText, OModal, OIcon } from '../shared';
24
+ import { OInput, OButton, OModal, OIcon } from '../shared';
26
25
  import { AddressFormParams } from '../../types';
27
26
  import { getTraduction } from '../../utils';
28
27
  import { useTheme } from 'styled-components/native';
@@ -57,15 +56,16 @@ const AddressFormUI = (props: AddressFormParams) => {
57
56
  addressState,
58
57
  addressesList,
59
58
  saveAddress,
60
- userCustomerSetup,
61
59
  isGuestUser,
62
60
  isRequiredField,
61
+ showField,
63
62
  isFromProductsList,
64
63
  hasAddressDefault,
65
64
  afterSignup,
66
65
  } = props;
67
66
 
68
67
  const theme = useTheme();
68
+ const [autoCompleteInputFocused, setAutoCompleteInputFocused] = useState(false)
69
69
 
70
70
  const tagsName = [
71
71
  { icon: theme.images.general.tag_home, value: 'home' },
@@ -84,7 +84,6 @@ const AddressFormUI = (props: AddressFormParams) => {
84
84
  backgroundColor: theme.colors.clear
85
85
  },
86
86
  inputsStyle: {
87
- borderColor: theme.colors.border,
88
87
  borderRadius: 10,
89
88
  marginBottom: 20,
90
89
  height: 50,
@@ -93,7 +92,6 @@ const AddressFormUI = (props: AddressFormParams) => {
93
92
  flex: 1,
94
93
  },
95
94
  textAreaStyles: {
96
- borderColor: theme.colors.border,
97
95
  borderRadius: 10,
98
96
  marginBottom: 20,
99
97
  height: 104,
@@ -107,10 +105,16 @@ const AddressFormUI = (props: AddressFormParams) => {
107
105
  end: 0,
108
106
  top: 12,
109
107
  zIndex: 1002,
108
+ right: autoCompleteInputFocused && (
109
+ !!address?.address ||
110
+ !!formState.changes?.address ||
111
+ !!addressState.address.address
112
+ ) ? 30 : 15,
113
+ width: 16
110
114
  },
111
115
  wrapperNavbar: Platform.OS === 'ios'
112
- ? { paddingVertical: 0, paddingHorizontal: 40 }
113
- : { paddingVertical: 20, paddingHorizontal: 40 }
116
+ ? { paddingVertical: 0, paddingHorizontal: 40 }
117
+ : { paddingVertical: 20, paddingHorizontal: 40 }
114
118
  });
115
119
 
116
120
  const [, t] = useLanguage();
@@ -155,8 +159,8 @@ const AddressFormUI = (props: AddressFormParams) => {
155
159
  'true';
156
160
  const maxLimitLocation =
157
161
  configState?.configs?.meters_to_change_address?.value;
158
-
159
- const continueAsGuest = () => navigation.navigate('BusinessList');
162
+ const countryCode = configState?.configs?.country_autocomplete?.value
163
+ const continueAsGuest = () => navigation.navigate('BusinessList', { isGuestUser: true });
160
164
  const goToBack = () => navigation?.canGoBack() && navigation.goBack();
161
165
 
162
166
  const getAddressFormatted = (address: any) => {
@@ -203,6 +207,7 @@ const AddressFormUI = (props: AddressFormParams) => {
203
207
  saveAddress(data.address);
204
208
  if (isGuestUser) {
205
209
  continueAsGuest();
210
+ return;
206
211
  }
207
212
  if (!isGuestUser && !auth) {
208
213
  !isFromProductsList
@@ -544,7 +549,10 @@ const AddressFormUI = (props: AddressFormParams) => {
544
549
  onPress={(data, details: any) => {
545
550
  handleChangeAddress(data, details);
546
551
  }}
547
- query={{ key: googleMapsApiKey }}
552
+ query={{
553
+ key: googleMapsApiKey,
554
+ components: countryCode && countryCode !== '*' ? `country:${countryCode}` : ''
555
+ }}
548
556
  fetchDetails
549
557
  ref={googleInput}
550
558
  textInputProps={{
@@ -563,6 +571,8 @@ const AddressFormUI = (props: AddressFormParams) => {
563
571
  autoCorrect: false,
564
572
  blurOnSubmit: false,
565
573
  returnKeyType: 'next',
574
+ onFocus: () => setAutoCompleteInputFocused(true),
575
+ onBlur: () => setAutoCompleteInputFocused(false)
566
576
  }}
567
577
  onFail={(error) =>
568
578
  setAlertState({
@@ -586,45 +596,40 @@ const AddressFormUI = (props: AddressFormParams) => {
586
596
  textInput: {
587
597
  borderWidth: 1,
588
598
  borderRadius: 7.6,
589
- borderColor: theme.colors.border,
599
+ borderColor: autoCompleteInputFocused ? theme.colors.primary : theme.colors.border,
590
600
  flexGrow: 1,
591
601
  fontSize: 15,
592
- paddingHorizontal: 16,
602
+ paddingLeft: 16,
603
+ paddingRight: 32,
593
604
  minHeight: 50,
594
605
  fontFamily: 'Poppins-Regular',
595
- marginBottom: 24,
606
+ marginBottom: 24
596
607
  },
597
608
  }}
598
609
  />
599
610
  )}
600
611
  />
601
- {hasEditing ? (
602
- <View style={styles.pinIcon}>
603
- <GPSButton
604
- apiKey={googleMapsApiKey}
605
- handleGPS={(data: any, detail: any) => {
606
- handleChangeAddress(data, detail);
607
- setValue(data.address);
608
- if (googleInput?.current) {
609
- googleInput?.current?.setAddressText( data.address );
610
- }
611
- }}
612
- IconButton={<OIcon src={theme.images.general.pin} width={16} />}
613
- />
614
- </View>
615
- ) : null}
616
- </AutocompleteInput>
617
612
 
618
- {/* {!isKeyboardShow && (addressState?.address?.location || formState?.changes?.location) && (
619
- <TouchableOpacity onPress={handleToggleMap} style={{ marginBottom: 10 }}>
620
- <OText
621
- color={theme.colors.primary}
622
- style={{ textAlign: 'center' }}
623
- >
624
- {t('VIEW_MAP', 'View map to modify the exact location')}
625
- </OText>
626
- </TouchableOpacity>
627
- )} */}
613
+ {(
614
+ ((!isEditing && !isGuestUser) ||
615
+ (isEditing && !isGuestUser)) ||
616
+ (isGuestUser)) &&
617
+ (
618
+ <View style={styles.pinIcon}>
619
+ <GPSButton
620
+ apiKey={googleMapsApiKey}
621
+ handleGPS={(data: any, detail: any) => {
622
+ handleChangeAddress(data, detail);
623
+ setValue('address', data.address);
624
+ if (googleInput?.current) {
625
+ googleInput?.current?.setAddressText(data.address);
626
+ }
627
+ }}
628
+ IconButton={<OIcon src={theme.images.general.pin} width={16} />}
629
+ />
630
+ </View>
631
+ )}
632
+ </AutocompleteInput>
628
633
 
629
634
  {(locationChange || formState.changes?.location) && (
630
635
  <View
@@ -648,129 +653,141 @@ const AddressFormUI = (props: AddressFormParams) => {
648
653
  )}
649
654
 
650
655
  <View style={{ flexDirection: 'row', flexBasis: '50%' }}>
651
- <Controller
652
- control={control}
653
- name="internal_number"
654
- rules={{
655
- required:
656
- isRequiredField && isRequiredField('internal_number')
657
- ? t(
658
- `VALIDATION_ERROR_INTERNAL_NUMBER_REQUIRED`,
659
- `The field internal number is required`,
660
- )
661
- : null,
662
- }}
663
- defaultValue={
664
- address?.internal_number ||
665
- formState.changes?.internal_number ||
666
- addressState?.address?.internal_number ||
667
- ''
668
- }
669
- render={() => (
670
- <OInput
671
- name="internal_number"
672
- placeholder={t('INTERNAL_NUMBER', 'Internal number')}
673
- onChange={(text: string) => {
674
- handleChangeInput(text);
675
- setValue('internal_number', text);
676
- }}
677
- value={
678
- address?.internal_number ||
679
- formState.changes?.internal_number ||
680
- addressState?.address?.internal_number ||
681
- ''
682
- }
683
- style={{ ...styles.inputsStyle, marginRight: 24 }}
684
- forwardRef={internalNumberRef}
685
- returnKeyType="next"
686
- onSubmitEditing={() => zipCodeRef?.current?.focus?.()}
687
- blurOnSubmit={false}
688
- />
689
- )}
690
- />
656
+ {showField && showField('internal_number') && (
657
+ <Controller
658
+ control={control}
659
+ name="internal_number"
660
+ rules={{
661
+ required:
662
+ isRequiredField && isRequiredField('internal_number')
663
+ ? t(
664
+ `VALIDATION_ERROR_INTERNAL_NUMBER_REQUIRED`,
665
+ `The field internal number is required`,
666
+ )
667
+ : null,
668
+ }}
669
+ defaultValue={
670
+ address?.internal_number ||
671
+ formState.changes?.internal_number ||
672
+ addressState?.address?.internal_number ||
673
+ ''
674
+ }
675
+ render={() => (
676
+ <OInput
677
+ name="internal_number"
678
+ placeholder={t('INTERNAL_NUMBER', 'Internal number')}
679
+ onChange={(text: string) => {
680
+ handleChangeInput(text);
681
+ setValue('internal_number', text);
682
+ }}
683
+ value={
684
+ address?.internal_number ||
685
+ formState.changes?.internal_number ||
686
+ addressState?.address?.internal_number ||
687
+ ''
688
+ }
689
+ isFocusHighlight
690
+ style={{
691
+ ...styles.inputsStyle,
692
+ marginRight: showField('internal_number') && showField('zipcode') ? 24 : 0
693
+ }}
694
+ forwardRef={internalNumberRef}
695
+ returnKeyType="next"
696
+ onSubmitEditing={() => zipCodeRef?.current?.focus?.()}
697
+ blurOnSubmit={false}
698
+ />
699
+ )}
700
+ />
701
+ )}
691
702
 
703
+ {showField && showField('zipcode') && (
704
+ <Controller
705
+ control={control}
706
+ name="zipcode"
707
+ rules={{
708
+ required:
709
+ isRequiredField && isRequiredField('zipcode')
710
+ ? t(
711
+ `VALIDATION_ERROR_ZIP_CODE_REQUIRED`,
712
+ `The field Zip Code is required`,
713
+ )
714
+ : null,
715
+ }}
716
+ defaultValue={
717
+ address?.zipcode ||
718
+ formState.changes?.zipcode ||
719
+ addressState.address.zipcode ||
720
+ ''
721
+ }
722
+ render={() => (
723
+ <OInput
724
+ name="zipcode"
725
+ placeholder={t('ZIP_CODE', 'Zip code')}
726
+ onChange={(text: string) => {
727
+ handleChangeInput(text);
728
+ setValue('zipcode', text);
729
+ }}
730
+ value={
731
+ address?.zipcode ||
732
+ formState.changes?.zipcode ||
733
+ addressState.address.zipcode ||
734
+ ''
735
+ }
736
+ isFocusHighlight
737
+ style={styles.inputsStyle}
738
+ forwardRef={zipCodeRef}
739
+ returnKeyType="next"
740
+ onSubmitEditing={() => addressNotesRef?.current?.focus?.()}
741
+ blurOnSubmit={false}
742
+ />
743
+ )}
744
+ />
745
+ )}
746
+ </View>
747
+
748
+ {showField && showField('address_notes') && (
692
749
  <Controller
693
750
  control={control}
694
- name="zipcode"
751
+ name="address_notes"
695
752
  rules={{
696
753
  required:
697
- isRequiredField && isRequiredField('zipcode')
754
+ isRequiredField && isRequiredField('address_notes')
698
755
  ? t(
699
- `VALIDATION_ERROR_ZIP_CODE_REQUIRED`,
700
- `The field Zip Code is required`,
756
+ `VALIDATION_ERROR_ADDRESS_NOTES_REQUIRED`,
757
+ `The field address notes is required`,
701
758
  )
702
759
  : null,
703
760
  }}
704
761
  defaultValue={
705
- address?.zipcode ||
706
- formState.changes?.zipcode ||
707
- addressState.address.zipcode ||
762
+ address?.address_notes ||
763
+ formState.changes?.address_notes ||
764
+ addressState.address.address_notes ||
708
765
  ''
709
766
  }
710
767
  render={() => (
711
768
  <OInput
712
- name="zipcode"
713
- placeholder={t('ZIP_CODE', 'Zip code')}
714
- onChange={(text: string) => {
769
+ name="address_notes"
770
+ placeholder={t('ADDRESS_NOTES', 'Address notes')}
771
+ onChange={(text: any) => {
715
772
  handleChangeInput(text);
716
- setValue('zipcode', text);
773
+ setValue('address_notes', text);
717
774
  }}
718
775
  value={
719
- address?.zipcode ||
720
- formState.changes?.zipcode ||
721
- addressState.address.zipcode ||
776
+ address?.address_notes ||
777
+ formState.changes?.address_notes ||
778
+ addressState.address.address_notes ||
722
779
  ''
723
780
  }
724
- style={styles.inputsStyle}
725
- forwardRef={zipCodeRef}
726
- returnKeyType="next"
727
- onSubmitEditing={() => addressNotesRef?.current?.focus?.()}
728
- blurOnSubmit={false}
781
+ multiline
782
+ isFocusHighlight
783
+ style={styles.textAreaStyles}
784
+ returnKeyType="done"
785
+ forwardRef={addressNotesRef}
786
+ blurOnSubmit
729
787
  />
730
788
  )}
731
789
  />
732
- </View>
733
-
734
- <Controller
735
- control={control}
736
- name="address_notes"
737
- rules={{
738
- required:
739
- isRequiredField && isRequiredField('address_notes')
740
- ? t(
741
- `VALIDATION_ERROR_ADDRESS_NOTES_REQUIRED`,
742
- `The field address notes is required`,
743
- )
744
- : null,
745
- }}
746
- defaultValue={
747
- address?.address_notes ||
748
- formState.changes?.address_notes ||
749
- addressState.address.address_notes ||
750
- ''
751
- }
752
- render={() => (
753
- <OInput
754
- name="address_notes"
755
- placeholder={t('ADDRESS_NOTES', 'Address notes')}
756
- onChange={(text: any) => {
757
- handleChangeInput(text);
758
- setValue('address_notes', text);
759
- }}
760
- value={
761
- address?.address_notes ||
762
- formState.changes?.address_notes ||
763
- addressState.address.address_notes ||
764
- ''
765
- }
766
- multiline
767
- style={styles.textAreaStyles}
768
- returnKeyType="done"
769
- forwardRef={addressNotesRef}
770
- blurOnSubmit
771
- />
772
- )}
773
- />
790
+ )}
774
791
  </FormInput>
775
792
  <IconsContainer>
776
793
  {tagsName.map((tag) => (
@@ -56,7 +56,7 @@ const AddressListUI = (props: AddressListParams) => {
56
56
  }
57
57
 
58
58
  const uniqueAddressesList = (addressList.addresses && addressList.addresses.filter(
59
- (address: any, i: number, self: any) =>
59
+ (address: any, i: number, self: any) => address.address &&
60
60
  i === self.findIndex((obj: any) => (
61
61
  address.address === obj.address &&
62
62
  address.address_notes === obj.address_notes &&