ordering-ui-react-native 0.17.39 → 0.17.40-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 (214) hide show
  1. package/package.json +9 -9
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/BusinessesListing/index.tsx +1 -1
  4. package/src/components/OrderCreating/index.tsx +1 -21
  5. package/src/components/PaymentOptionsWebView/index.tsx +29 -8
  6. package/src/components/StripeMethodForm/index.tsx +135 -102
  7. package/src/components/VerifyPhone/styles.tsx +1 -2
  8. package/src/components/shared/OToast.tsx +4 -4
  9. package/src/types/index.tsx +5 -0
  10. package/src/utils/index.tsx +7 -1
  11. package/themes/business/index.tsx +2 -0
  12. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +265 -240
  13. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +6 -4
  14. package/themes/business/src/components/BusinessController/index.tsx +0 -1
  15. package/themes/business/src/components/Chat/index.tsx +125 -113
  16. package/themes/business/src/components/DriverMap/index.tsx +17 -6
  17. package/themes/business/src/components/GoogleMap/index.tsx +58 -57
  18. package/themes/business/src/components/LoginForm/Otp/index.tsx +120 -0
  19. package/themes/business/src/components/LoginForm/Otp/styles.tsx +7 -0
  20. package/themes/business/src/components/LoginForm/index.tsx +238 -80
  21. package/themes/business/src/components/LoginForm/styles.tsx +10 -0
  22. package/themes/business/src/components/MapView/index.tsx +10 -10
  23. package/themes/business/src/components/NewOrderNotification/index.tsx +49 -50
  24. package/themes/business/src/components/OrderDetails/Delivery.tsx +4 -3
  25. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +92 -49
  26. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +59 -62
  27. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +195 -0
  28. package/themes/business/src/components/OrderDetailsLogistic/styles.tsx +5 -0
  29. package/themes/business/src/components/OrderMessage/index.tsx +18 -17
  30. package/themes/business/src/components/OrderSummary/index.tsx +113 -121
  31. package/themes/business/src/components/OrdersOption/index.tsx +32 -75
  32. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +250 -0
  33. package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +115 -0
  34. package/themes/business/src/components/PreviousOrders/index.tsx +445 -243
  35. package/themes/business/src/components/PreviousOrders/styles.tsx +31 -3
  36. package/themes/business/src/components/ProductItemAccordion/index.tsx +27 -3
  37. package/themes/business/src/components/ReviewCustomer/index.tsx +41 -24
  38. package/themes/business/src/components/StoresList/index.tsx +2 -2
  39. package/themes/business/src/components/shared/OLink.tsx +33 -13
  40. package/themes/business/src/components/shared/OModal.tsx +16 -9
  41. package/themes/business/src/components/shared/OText.tsx +8 -2
  42. package/themes/business/src/types/index.tsx +32 -2
  43. package/themes/business/src/utils/index.tsx +44 -1
  44. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  45. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  46. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  47. package/themes/kiosk/src/components/BusinessesListing/index.tsx +2 -1
  48. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  49. package/themes/kiosk/src/components/LoginForm/Otp/index.tsx +92 -0
  50. package/themes/kiosk/src/components/LoginForm/Otp/styles.tsx +7 -0
  51. package/themes/kiosk/src/components/LoginForm/index.tsx +473 -151
  52. package/themes/kiosk/src/components/LoginForm/styles.tsx +14 -1
  53. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  54. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  55. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  56. package/themes/kiosk/src/components/PhoneInputNumber/index.tsx +3 -2
  57. package/themes/kiosk/src/components/PhoneInputNumber/styles.tsx +1 -3
  58. package/themes/kiosk/src/components/ProductForm/index.tsx +1 -14
  59. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  60. package/themes/kiosk/src/components/shared/OModal.tsx +14 -11
  61. package/themes/kiosk/src/layouts/Container.tsx +7 -1
  62. package/themes/kiosk/src/types/index.d.ts +13 -0
  63. package/themes/kiosk/src/utils/index.tsx +15 -0
  64. package/themes/original/index.tsx +6 -0
  65. package/themes/original/src/components/AddressDetails/index.tsx +29 -11
  66. package/themes/original/src/components/AddressForm/index.tsx +79 -44
  67. package/themes/original/src/components/AddressList/index.tsx +26 -21
  68. package/themes/original/src/components/AddressList/styles.tsx +4 -2
  69. package/themes/original/src/components/AnalyticsSegment/index.tsx +193 -10
  70. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  71. package/themes/original/src/components/BusinessBasicInformation/index.tsx +159 -90
  72. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +9 -7
  73. package/themes/original/src/components/BusinessController/index.tsx +141 -67
  74. package/themes/original/src/components/BusinessController/styles.tsx +22 -2
  75. package/themes/original/src/components/BusinessFeaturedController/index.tsx +21 -54
  76. package/themes/original/src/components/BusinessFeaturedController/styles.tsx +8 -0
  77. package/themes/original/src/components/BusinessInformation/index.tsx +10 -31
  78. package/themes/original/src/components/BusinessItemAccordion/index.tsx +23 -22
  79. package/themes/original/src/components/BusinessListingSearch/index.tsx +351 -326
  80. package/themes/original/src/components/BusinessPreorder/index.tsx +97 -16
  81. package/themes/original/src/components/BusinessProductsList/index.tsx +20 -11
  82. package/themes/original/src/components/BusinessProductsList/styles.tsx +8 -3
  83. package/themes/original/src/components/BusinessProductsListing/UpsellingRedirect.tsx +1 -1
  84. package/themes/original/src/components/BusinessProductsListing/index.tsx +684 -524
  85. package/themes/original/src/components/BusinessProductsListing/styles.tsx +4 -6
  86. package/themes/original/src/components/BusinessReviews/index.tsx +3 -1
  87. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +1 -1
  88. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +106 -79
  89. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -9
  90. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  91. package/themes/original/src/components/Cart/index.tsx +102 -69
  92. package/themes/original/src/components/CartContent/index.tsx +115 -19
  93. package/themes/original/src/components/CartContent/styles.tsx +17 -7
  94. package/themes/original/src/components/Checkout/index.tsx +375 -179
  95. package/themes/original/src/components/Checkout/styles.tsx +4 -2
  96. package/themes/original/src/components/CitiesControl/index.tsx +89 -0
  97. package/themes/original/src/components/CitiesControl/styles.tsx +17 -0
  98. package/themes/original/src/components/CouponControl/index.tsx +10 -3
  99. package/themes/original/src/components/DriverTips/index.tsx +52 -34
  100. package/themes/original/src/components/Favorite/index.tsx +7 -4
  101. package/themes/original/src/components/Favorite/styles.tsx +1 -1
  102. package/themes/original/src/components/FavoriteList/index.tsx +51 -80
  103. package/themes/original/src/components/FloatingButton/index.tsx +1 -2
  104. package/themes/original/src/components/FloatingButton/styles.tsx +1 -1
  105. package/themes/original/src/components/GPSButton/index.tsx +6 -4
  106. package/themes/original/src/components/GPSButton/styles.ts +3 -3
  107. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +96 -0
  108. package/themes/original/src/components/GiftCard/GiftCardUI/styles.tsx +5 -0
  109. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +100 -0
  110. package/themes/original/src/components/GiftCard/PurchaseGiftCard/styles.tsx +8 -0
  111. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +191 -0
  112. package/themes/original/src/components/GiftCard/RedeemGiftCard/styles.tsx +8 -0
  113. package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +165 -0
  114. package/themes/original/src/components/GiftCard/SendGiftCard/styles.tsx +9 -0
  115. package/themes/original/src/components/GoogleMap/index.tsx +15 -4
  116. package/themes/original/src/components/Help/index.tsx +8 -8
  117. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +11 -22
  118. package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +6 -0
  119. package/themes/original/src/components/HelpGuide/index.tsx +12 -16
  120. package/themes/original/src/components/HelpGuide/styles.tsx +6 -0
  121. package/themes/original/src/components/HelpOrder/index.tsx +12 -25
  122. package/themes/original/src/components/HelpOrder/styles.tsx +8 -1
  123. package/themes/original/src/components/Home/index.tsx +13 -4
  124. package/themes/original/src/components/LastOrder/index.tsx +1 -34
  125. package/themes/original/src/components/LoginForm/Otp/index.tsx +139 -75
  126. package/themes/original/src/components/LoginForm/Otp/styles.tsx +0 -1
  127. package/themes/original/src/components/LoginForm/index.tsx +71 -28
  128. package/themes/original/src/components/LottieAnimation/index.tsx +89 -55
  129. package/themes/original/src/components/MessageListing/index.tsx +16 -42
  130. package/themes/original/src/components/Messages/index.tsx +32 -10
  131. package/themes/original/src/components/MomentOption/index.tsx +195 -88
  132. package/themes/original/src/components/MultiCart/index.tsx +50 -0
  133. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +219 -117
  134. package/themes/original/src/components/MultiCheckout/index.tsx +308 -88
  135. package/themes/original/src/components/MultiCheckout/styles.tsx +3 -1
  136. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +37 -224
  137. package/themes/original/src/components/MultiOrdersDetails/index.tsx +68 -21
  138. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +1 -1
  139. package/themes/original/src/components/MyOrders/index.tsx +53 -51
  140. package/themes/original/src/components/NavBar/index.tsx +18 -18
  141. package/themes/original/src/components/NotFoundSource/index.tsx +14 -10
  142. package/themes/original/src/components/Notifications/index.tsx +46 -50
  143. package/themes/original/src/components/Notifications/styles.tsx +6 -3
  144. package/themes/original/src/components/OrderDetails/OrderEta.tsx +76 -0
  145. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +15 -3
  146. package/themes/original/src/components/OrderDetails/index.tsx +199 -359
  147. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  148. package/themes/original/src/components/OrderItAgain/index.tsx +3 -1
  149. package/themes/original/src/components/OrderProgress/index.tsx +93 -114
  150. package/themes/original/src/components/OrderProgress/styles.tsx +5 -0
  151. package/themes/original/src/components/OrderSummary/index.tsx +87 -59
  152. package/themes/original/src/components/OrderTypeSelector/index.tsx +1 -1
  153. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +24 -19
  154. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +14 -14
  155. package/themes/original/src/components/OrdersOption/index.tsx +70 -65
  156. package/themes/original/src/components/OrdersOption/styles.tsx +1 -1
  157. package/themes/original/src/components/PageBanner/index.tsx +171 -0
  158. package/themes/original/src/components/PageBanner/styles.tsx +11 -0
  159. package/themes/original/src/components/PaymentOptionCard/index.tsx +180 -0
  160. package/themes/original/src/components/PaymentOptionStripe/styles.tsx +1 -1
  161. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  162. package/themes/original/src/components/PaymentOptions/index.tsx +64 -7
  163. package/themes/original/src/components/PhoneInputNumber/index.tsx +3 -3
  164. package/themes/original/src/components/PlaceSpot/index.tsx +12 -6
  165. package/themes/original/src/components/ProductForm/index.tsx +223 -232
  166. package/themes/original/src/components/ProductForm/styles.tsx +5 -8
  167. package/themes/original/src/components/ProductItemAccordion/index.tsx +29 -28
  168. package/themes/original/src/components/ProductOptionSubOption/index.tsx +19 -11
  169. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +1 -2
  170. package/themes/original/src/components/ProfessionalFilter/SingleProfessionalCard/index.tsx +108 -0
  171. package/themes/original/src/components/ProfessionalFilter/index.tsx +20 -50
  172. package/themes/original/src/components/ProfessionalProfile/index.tsx +36 -7
  173. package/themes/original/src/components/Promotions/index.tsx +234 -220
  174. package/themes/original/src/components/Promotions/styles.tsx +10 -3
  175. package/themes/original/src/components/ReviewDriver/index.tsx +3 -3
  176. package/themes/original/src/components/ReviewOrder/index.tsx +26 -9
  177. package/themes/original/src/components/ReviewOrder/styles.tsx +7 -0
  178. package/themes/original/src/components/ReviewProducts/index.tsx +23 -11
  179. package/themes/original/src/components/ReviewTrigger/index.tsx +27 -9
  180. package/themes/original/src/components/ReviewTrigger/styles.tsx +8 -1
  181. package/themes/original/src/components/ScheduleAccordion/index.tsx +68 -0
  182. package/themes/original/src/components/ScheduleAccordion/styles.tsx +14 -0
  183. package/themes/original/src/components/ServiceForm/index.tsx +74 -19
  184. package/themes/original/src/components/Sessions/index.tsx +11 -8
  185. package/themes/original/src/components/Sessions/styles.tsx +5 -0
  186. package/themes/original/src/components/SignupForm/index.tsx +42 -19
  187. package/themes/original/src/components/SingleOrderCard/index.tsx +130 -52
  188. package/themes/original/src/components/SingleOrderCard/styles.tsx +11 -2
  189. package/themes/original/src/components/SingleProductCard/index.tsx +72 -34
  190. package/themes/original/src/components/SingleProductCard/styles.tsx +22 -4
  191. package/themes/original/src/components/SingleProductReview/styles.tsx +1 -1
  192. package/themes/original/src/components/StripeCardsList/index.tsx +13 -3
  193. package/themes/original/src/components/StripeElementsForm/index.tsx +28 -15
  194. package/themes/original/src/components/UpsellingProducts/index.tsx +238 -224
  195. package/themes/original/src/components/UpsellingProducts/styles.tsx +12 -1
  196. package/themes/original/src/components/UserDetails/index.tsx +8 -4
  197. package/themes/original/src/components/UserFormDetails/index.tsx +47 -7
  198. package/themes/original/src/components/UserProfile/index.tsx +5 -7
  199. package/themes/original/src/components/UserProfileForm/index.tsx +25 -28
  200. package/themes/original/src/components/UserProfileForm/styles.tsx +7 -0
  201. package/themes/original/src/components/WalletTransactionItem/index.tsx +2 -2
  202. package/themes/original/src/components/WalletTransactions/index.tsx +3 -3
  203. package/themes/original/src/components/Wallets/index.tsx +79 -36
  204. package/themes/original/src/components/Wallets/styles.tsx +5 -4
  205. package/themes/original/src/components/shared/CardAnimation.tsx +3 -3
  206. package/themes/original/src/components/shared/HeaderTitle.tsx +8 -3
  207. package/themes/original/src/components/shared/OBottomPopup.tsx +1 -1
  208. package/themes/original/src/components/shared/OButton.tsx +6 -2
  209. package/themes/original/src/components/shared/OInput.tsx +16 -2
  210. package/themes/original/src/components/shared/OModal.tsx +3 -3
  211. package/themes/original/src/layouts/Container.tsx +13 -9
  212. package/themes/original/src/types/index.tsx +38 -9
  213. package/themes/original/src/utils/index.tsx +364 -58
  214. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -34,7 +34,8 @@ const UserDetailsUI = (props: any) => {
34
34
  isCheckout,
35
35
  handleSendVerifyCode,
36
36
  verifyPhoneState,
37
- setFormState
37
+ setFormState,
38
+ setIsOpen
38
39
  } = props
39
40
 
40
41
  const theme = useTheme();
@@ -152,9 +153,11 @@ const UserDetailsUI = (props: any) => {
152
153
  {!(validationFields.loading || formState.loading) && (
153
154
  <UDContainer>
154
155
  <UDHeader>
155
- <OText size={16} lineHeight={24} weight={'500'} color={theme.colors.textNormal}>
156
- {t('CUSTOMER_DETAILS', 'Customer Details')}
157
- </OText>
156
+ {props.HeaderTitle ?? (
157
+ <OText size={16} lineHeight={24} weight={'500'} color={theme.colors.textNormal}>
158
+ {t('CUSTOMER_DETAILS', 'Customer Details')}
159
+ </OText>
160
+ )}
158
161
  {cartStatus !== 2 && !requiredFields && (
159
162
  !isEdit ? (
160
163
  <EditBtn onPress={() => toggleIsEdit()} activeOpacity={0.7}>
@@ -207,6 +210,7 @@ const UserDetailsUI = (props: any) => {
207
210
  isCheckout={isCheckout}
208
211
  setWillVerifyOtpState={setWillVerifyOtpState}
209
212
  setIsSubmit={setIsSubmit}
213
+ setIsOpen={setIsOpen}
210
214
  />
211
215
  )}
212
216
  </UDContainer>
@@ -1,12 +1,14 @@
1
1
  import React, { useEffect, useState } from 'react';
2
- import { Platform, StyleSheet, TouchableOpacity } from 'react-native';
2
+ import { Platform, StyleSheet, TouchableOpacity, ScrollView } from 'react-native';
3
3
  import { useSession, useLanguage, ToastType, useToast, useConfig } from 'ordering-components/native';
4
4
  import { useTheme } from 'styled-components/native';
5
5
  import { useForm, Controller } from 'react-hook-form';
6
+ import { SignupForm } from '../SignupForm'
6
7
 
7
8
  import { UDForm, UDLoader, UDWrapper, WrapperPhone } from './styles';
8
9
 
9
- import { OText, OButton, OInput } from '../shared';
10
+ import { OText, OButton, OInput, OModal } from '../shared';
11
+ import Alert from '../../providers/AlertProvider'
10
12
 
11
13
  import { PhoneInputNumber } from '../PhoneInputNumber';
12
14
  import { sortInputFields } from '../../utils';
@@ -27,6 +29,9 @@ export const UserFormDetailsUI = (props: any) => {
27
29
  phoneUpdate,
28
30
  hideUpdateButton,
29
31
  setWillVerifyOtpState,
32
+ handlePlaceOrderAsGuest,
33
+ isCheckout,
34
+ setIsOpen
30
35
  } = props;
31
36
 
32
37
  const theme = useTheme();
@@ -68,10 +73,11 @@ export const UserFormDetailsUI = (props: any) => {
68
73
  const [, { showToast }] = useToast();
69
74
  const { handleSubmit, control, errors, setValue } = useForm();
70
75
 
71
- const [{ user }] = useSession();
76
+ const [{ user }, { login }] = useSession();
72
77
  const [userPhoneNumber, setUserPhoneNumber] = useState<any>(null);
73
78
  const [isValid, setIsValid] = useState(false)
74
79
  const [isChanged, setIsChanged] = useState(false)
80
+ const [isModalOpen, setIsModalOpen] = useState(false)
75
81
  const [phoneInputData, setPhoneInputData] = useState({
76
82
  error: '',
77
83
  phone: {
@@ -79,9 +85,18 @@ export const UserFormDetailsUI = (props: any) => {
79
85
  cellphone: null,
80
86
  },
81
87
  });
88
+ const [alertState, setAlertState] = useState({ open: false, content: '' })
82
89
 
83
90
  const showInputPhoneNumber = (validationFields?.fields?.checkout?.cellphone?.enabled ?? false) || configs?.verification_phone_required?.value === '1'
84
91
 
92
+ const handleSuccessSignup = (user: any) => {
93
+ login({
94
+ user,
95
+ token: user?.session?.access_token
96
+ })
97
+ handlePlaceOrderAsGuest && handlePlaceOrderAsGuest()
98
+ }
99
+
85
100
  const getInputRules = (field: any) => {
86
101
  const rules: any = {
87
102
  required: isRequiredField(field.code)
@@ -206,6 +221,10 @@ export const UserFormDetailsUI = (props: any) => {
206
221
  if (!formState?.loading && formState?.result?.error) {
207
222
  formState.result?.result &&
208
223
  showToast(ToastType.Error, formState.result?.result[0]);
224
+ if (isCheckout) {
225
+ setIsOpen && setIsOpen(false)
226
+ cleanFormState && cleanFormState({ changes: {} })
227
+ }
209
228
  }
210
229
  }, [formState?.loading]);
211
230
 
@@ -423,18 +442,39 @@ export const UserFormDetailsUI = (props: any) => {
423
442
  text={
424
443
  formState.loading
425
444
  ? t('UPDATING', 'Updating...')
426
- : t('CONTINUE', 'Continue')
445
+ : ((isCheckout && !!user?.guest_id)
446
+ ? t('SIGN_UP_AND_PLACE_ORDER', 'Sign up and place order')
447
+ : t('CONTINUE', 'Continue'))
427
448
  }
428
449
  bgColor={theme.colors.white}
429
450
  textStyle={{ color: theme.colors.primary, fontSize: 14 }}
430
451
  borderColor={theme.colors.primary}
431
- isDisabled={formState.loading || !isValid}
452
+ isDisabled={!user?.guest_id && (formState.loading || !isValid)}
432
453
  imgRightSrc={null}
433
454
  style={{ borderRadius: 7.6, shadowOpacity: 0, width: '100%', borderWidth: 1, marginTop: 20, marginBottom: 20 }}
434
- onClick={handleSubmit(onSubmit)}
455
+ onClick={!user?.guest_id ? handleSubmit(onSubmit) : () => setIsModalOpen(true)}
435
456
  />
436
457
  )}
458
+ {isCheckout && !!user?.guest_id && (
459
+ <TouchableOpacity style={{ marginTop: 10 }} onPress={() => handlePlaceOrderAsGuest()}>
460
+ <OText color={theme.colors.primary} style={{ textAlign: 'center' }}>{t('PLACE_ORDER_AS_GUEST', 'Place order as guest')}</OText>
461
+ </TouchableOpacity>
462
+ )}
463
+ <OModal
464
+ open={isModalOpen}
465
+ onClose={() => setIsModalOpen(false)}
466
+ >
467
+ <ScrollView style={{ paddingHorizontal: 20, width: '100%' }}>
468
+ <SignupForm
469
+ handleSuccessSignup={handleSuccessSignup}
470
+ isGuest
471
+ signupButtonText={t('SIGNUP', 'Signup')}
472
+ useSignupByEmail
473
+ useChekoutFileds
474
+ />
475
+ </ScrollView>
476
+ </OModal>
477
+
437
478
  </>
438
479
  );
439
480
  };
440
-
@@ -49,6 +49,8 @@ const ProfileListUI = (props: ProfileParams) => {
49
49
 
50
50
  const theme = useTheme();
51
51
 
52
+ const isChewLayout = theme?.header?.components?.layout?.type?.toLowerCase() === 'chew'
53
+
52
54
  const langPickerStyle = StyleSheet.create({
53
55
  inputAndroid: {
54
56
  color: theme.colors.textNormal,
@@ -89,8 +91,7 @@ const ProfileListUI = (props: ProfileParams) => {
89
91
  marginEnd: 14
90
92
  },
91
93
  pagePadding: {
92
- paddingLeft: 40,
93
- paddingRight: 40
94
+ paddingHorizontal: isChewLayout ? 20 : 40
94
95
  },
95
96
  messageIconStyle: {
96
97
  fontSize: 18,
@@ -163,10 +164,7 @@ const ProfileListUI = (props: ProfileParams) => {
163
164
  }, [removeAccountState])
164
165
 
165
166
  return (
166
- <View style={{ flex: 1, height: height - top - bottom - 62, paddingTop: 20 }}>
167
- {/* <OText size={24} style={{ marginTop: 15, paddingHorizontal: 40 }}>
168
- {t('PROFILE', 'Profile')}
169
- </OText> */}
167
+ <View style={{ flex: 1, height: height - top - bottom, paddingTop: 20 }}>
170
168
  <CenterView style={styles.pagePadding}>
171
169
  {user?.photo && (
172
170
  <View style={styles.photo}>
@@ -183,7 +181,7 @@ const ProfileListUI = (props: ProfileParams) => {
183
181
  <View style={{ flexBasis: '70%' }}>
184
182
  <OText size={20} lineHeight={30} weight={Platform.OS === 'ios' ? '500' : 'bold'} color={theme.colors.textNormal}>{user?.name} {user?.lastname}</OText>
185
183
  <TouchableOpacity onPress={() => navigation.navigate('ProfileForm', { ...detailProps })}>
186
- <OText size={12} lineHeight={18} color={theme.colors.textSecondary} style={{ textDecorationLine: 'underline' }}>{t('VIEW_ACCOUNT', 'View account')}</OText>
184
+ <OText size={12} lineHeight={18} color={theme.colors.primary} style={{ textDecorationLine: 'underline' }}>{t('VIEW_ACCOUNT', 'View account')}</OText>
187
185
  </TouchableOpacity>
188
186
  </View>
189
187
  </CenterView>
@@ -16,9 +16,8 @@ import { ProfileParams } from '../../types';
16
16
  import { UserFormDetailsUI } from '../UserFormDetails';
17
17
 
18
18
  import { OIcon, OIconButton, OModal } from '../shared';
19
- import { CenterView } from './styles';
19
+ import { CenterView, Container } from './styles';
20
20
  import NavBar from '../NavBar';
21
- import { Container } from '../../layouts/Container';
22
21
  import { VerifyPhone } from '../VerifyPhone'
23
22
  import Ionicons from 'react-native-vector-icons/Ionicons'
24
23
  import FastImage from 'react-native-fast-image'
@@ -51,11 +50,6 @@ const ProfileUI = (props: ProfileParams) => {
51
50
  shadowOpacity: 0.2,
52
51
  backgroundColor: theme.colors.white,
53
52
  },
54
- pagePadding: {
55
- paddingLeft: 40,
56
- paddingRight: 40,
57
- justifyContent: 'center',
58
- },
59
53
  navBarStyle: {
60
54
  paddingLeft: 40,
61
55
  paddingRight: 40,
@@ -284,17 +278,22 @@ const ProfileUI = (props: ProfileParams) => {
284
278
 
285
279
  return (
286
280
  <>
287
- <NavBar
288
- title={t('ACCOUNT', 'Account')}
289
- titleAlign={'center'}
290
- onActionLeft={() => navigation.goBack()}
291
- showCall={false}
292
- style={{ paddingHorizontal: 40, paddingVertical: Platform.OS === 'ios' ? 0 : 30 }}
293
- />
294
- <KeyboardAvoidingView behavior={Platform.OS == 'ios' ? 'padding' : 'height'} enabled style={{ flex: 1, flexDirection: 'column', justifyContent: 'center' }}>
295
- <Container noPadding>
296
-
297
- <CenterView style={styles.pagePadding}>
281
+ <Container
282
+ pdng={Platform.OS === 'ios' ? '20px' : '10px'}
283
+ >
284
+ <NavBar
285
+ title={t('ACCOUNT', 'Account')}
286
+ titleAlign={'center'}
287
+ onActionLeft={() => navigation.goBack()}
288
+ showCall={false}
289
+ btnStyle={{ paddingLeft: 0 }}
290
+ />
291
+ <KeyboardAvoidingView
292
+ behavior={Platform.OS == 'ios' ? 'padding' : 'height'}
293
+ enabled={Platform.OS === 'ios' ? true : false}
294
+ style={{ flex: 1, flexDirection: 'column', justifyContent: 'center' }}
295
+ >
296
+ <CenterView>
298
297
  <View style={styles.photo}>
299
298
  {user?.photo ? (
300
299
  <FastImage
@@ -317,17 +316,15 @@ const ProfileUI = (props: ProfileParams) => {
317
316
  onClick={() => handleImagePicker()}
318
317
  />
319
318
  </CenterView>
320
- <View style={{ height: 8, marginLeft: -40, marginRight: -40, backgroundColor: theme.colors.backgroundGray100, marginVertical: 32, zIndex: 10 }} />
319
+ <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginVertical: 32, zIndex: 10 }} />
321
320
  <Spinner visible={formState?.loading || verifyPhoneState?.loading} />
322
- <View style={styles.pagePadding}>
323
- <UserFormDetailsUI
324
- {...props}
325
- isEdit
326
- setWillVerifyOtpState={setWillVerifyOtpState}
327
- />
328
- </View>
329
- </Container>
330
- </KeyboardAvoidingView>
321
+ <UserFormDetailsUI
322
+ {...props}
323
+ isEdit
324
+ setWillVerifyOtpState={setWillVerifyOtpState}
325
+ />
326
+ </KeyboardAvoidingView>
327
+ </Container>
331
328
  <OModal
332
329
  open={isModalVisible}
333
330
  onClose={() => setIsModalVisible(false)}
@@ -9,6 +9,13 @@ export const UserData = styled.View`
9
9
  text-align: center;
10
10
  `
11
11
 
12
+ export const Container = styled.ScrollView`
13
+ position: relative;
14
+ flex: 1;
15
+ padding-top: ${(props: any) => props.pdng};
16
+ margin-bottom: 40px;
17
+ `
18
+
12
19
  export const Names = styled.View`
13
20
  flex-direction: row;
14
21
  `
@@ -54,7 +54,7 @@ export const WalletTransactionItem = (props: any) => {
54
54
  <OText>{item?.description}</OText>
55
55
  </DescriptionBlock>
56
56
  )}
57
- {!!item?.code && (
57
+ {/* {!!item?.code && (
58
58
  <DescriptionBlock>
59
59
  <OText weight={'bold'}>
60
60
  {t('CODE', 'Code')}
@@ -63,7 +63,7 @@ export const WalletTransactionItem = (props: any) => {
63
63
  </OText>
64
64
  </OText>
65
65
  </DescriptionBlock>
66
- )}
66
+ )} */}
67
67
  </Container>
68
68
  )
69
69
  }
@@ -63,12 +63,12 @@ export const WalletTransactions = (props: any) => {
63
63
  (transactionsList?.error ||
64
64
  !transactionsList.list?.[`wallet:${currentWalletSelected?.id}`]?.length) &&
65
65
  (
66
- <NotFoundSource
67
- content={transactionsList?.error
66
+ <OText color={theme.colors.disabled} size={16} style={{ textAlign: 'center' }}>
67
+ {transactionsList?.error
68
68
  ? t('ERROR_NOT_FOUND_TRANSACTIONS', 'Sorry, an error has occurred')
69
69
  : t('NOT_FOUND_TRANSACTIONS', 'No transactions to show at this time.')
70
70
  }
71
- />
71
+ </OText>
72
72
  )}
73
73
  </View>
74
74
  </Container>
@@ -1,8 +1,9 @@
1
1
  import React, { useState, useEffect } from 'react'
2
- import { Pressable, StyleSheet, View, ScrollView } from 'react-native';
2
+ import { Pressable, StyleSheet, View, ScrollView, TouchableOpacity, Platform } from 'react-native';
3
3
  import { useTheme } from 'styled-components/native'
4
4
  import { Fade, Placeholder, PlaceholderLine } from 'rn-placeholder';
5
5
  import FastImage from 'react-native-fast-image'
6
+ import NavBar from '../NavBar'
6
7
  import {
7
8
  WalletList,
8
9
  useLanguage,
@@ -24,10 +25,10 @@ import {
24
25
  WalletTransactionsWrapper
25
26
  } from './styles'
26
27
 
27
- import NavBar from '../NavBar'
28
28
  import { OButton, OIcon, OText, OModal } from '../shared';
29
29
  import { NotFoundSource } from '../NotFoundSource';
30
30
  import { WalletTransactions } from '../WalletTransactions'
31
+ import { GiftCardUI } from '../GiftCard/GiftCardUI'
31
32
 
32
33
  const WalletsUI = (props: any) => {
33
34
  const {
@@ -48,6 +49,7 @@ const WalletsUI = (props: any) => {
48
49
  const [{ parsePrice }] = useUtils()
49
50
  const [{ configs }] = useConfig()
50
51
 
52
+
51
53
  const styles = StyleSheet.create({
52
54
  logoStyle: {
53
55
  width: 120,
@@ -58,12 +60,20 @@ const WalletsUI = (props: any) => {
58
60
  flexDirection: 'column',
59
61
  justifyContent: 'center',
60
62
  alignItems: 'center',
63
+ },
64
+ dividerStyle: {
65
+ height: 8,
66
+ backgroundColor: theme.colors.backgroundGray100,
67
+ marginVertical: 25,
68
+ marginHorizontal: -40,
69
+ width: '100%'
61
70
  }
62
71
  });
63
72
 
64
73
  const [tabSelected, setTabSelected] = useState(isWalletCashEnabled ? 'cash' : 'credit_point')
65
74
  const [openHistory, setOpenHistory] = useState(false)
66
- const isChewLayout = theme?.wallets_view?.components?.layout?.type === 'chew'
75
+ const isChewLayout = theme?.header?.components?.layout?.type === 'chew'
76
+ const hideWalletsTheme = theme?.bar_menu?.components?.wallets?.hidden
67
77
 
68
78
  const isWalletEnabled = configs?.cash_wallet?.value && configs?.wallet_enabled?.value === '1' && (isWalletCashEnabled || isWalletPointsEnabled)
69
79
 
@@ -78,7 +88,7 @@ const WalletsUI = (props: any) => {
78
88
  isActive: isWalletCashEnabled
79
89
  },
80
90
  credit_point: {
81
- name: t('CREDITS_POINTS_WALLET', 'Credit Points Wallet'),
91
+ name: t('POINTS_WALLET', 'Points Wallet'),
82
92
  value: 1,
83
93
  isActive: isWalletPointsEnabled
84
94
  }
@@ -110,28 +120,41 @@ const WalletsUI = (props: any) => {
110
120
 
111
121
  return (
112
122
  <>
113
- <Container>
123
+ <Container
124
+ pdng={Platform.OS === 'ios' ? '10px' : '0'}
125
+ >
114
126
  <Header>
115
- <NavBar
116
- title={isChewLayout ? '' : t('WALLETS', 'Wallets')}
117
- titleAlign={'center'}
118
- onActionLeft={goToBack}
119
- showCall={false}
120
- paddingTop={10}
121
- btnStyle={{ paddingLeft: 0 }}
122
- style={{ flex: 1 }}
123
- />
124
- {isChewLayout && (
125
- <OButton
126
- text={t('WALLET_HISTORY', 'Wallet history')}
127
- bgColor={theme.colors.white}
128
- borderColor={theme.colors.lightGray}
129
- imgRightSrc={null}
130
- textStyle={{ fontSize: 12, color: theme.colors.disabled }}
131
- onClick={() => setOpenHistory(true)}
132
- style={{ borderRadius: 8, height: 40 }}
127
+ <View style={{
128
+ ...{
129
+ width: '100%',
130
+ display: 'flex',
131
+ flexDirection: hideWalletsTheme ? 'column' : 'row',
132
+ justifyContent: hideWalletsTheme ? 'flex-start' : 'space-between',
133
+ alignItems: hideWalletsTheme ? 'flex-start' : 'center',
134
+ marginTop: hideWalletsTheme ? 0 : 10,
135
+ },
136
+ }}>
137
+ <NavBar
138
+ title={t('WALLETS', 'Wallets')}
139
+ titleAlign={'center'}
140
+ onActionLeft={goToBack}
141
+ showCall={false}
142
+ paddingTop={10}
143
+ btnStyle={{ paddingLeft: 0 }}
144
+ hideArrowLeft={!hideWalletsTheme}
133
145
  />
134
- )}
146
+ {isChewLayout && (
147
+ <OButton
148
+ text={t('WALLET_HISTORY', 'Wallet history')}
149
+ bgColor={theme.colors.white}
150
+ borderColor={theme.colors.lightGray}
151
+ imgRightSrc={null}
152
+ textStyle={{ fontSize: 12, color: theme.colors.disabled }}
153
+ onClick={() => setOpenHistory(true)}
154
+ style={{ borderRadius: 8, height: 40, width: hideWalletsTheme ? '100%' : 150, marginTop: hideWalletsTheme ? 10 : 0 }}
155
+ />
156
+ )}
157
+ </View>
135
158
  </Header>
136
159
 
137
160
  {!walletList.loading &&
@@ -145,16 +168,25 @@ const WalletsUI = (props: any) => {
145
168
  showsHorizontalScrollIndicator={false}
146
169
  >
147
170
  {walletList.wallets?.map((wallet: any) => walletName[wallet.type]?.isActive && (
148
- <Pressable
171
+ <TouchableOpacity
149
172
  key={wallet.id}
150
173
  onPress={() => handleChangeTab(wallet)}
151
174
  >
152
- <OTab isSelected={tabSelected === wallet.type}>
153
- <OText size={18} color={tabSelected === wallet.type && theme.colors.primary}>
175
+ <OTab
176
+ isSelected={tabSelected === wallet.type}
177
+ style={{
178
+ borderBottomWidth: 1,
179
+ borderBottomColor:
180
+ tabSelected === wallet.type
181
+ ? theme.colors.textNormal
182
+ : theme.colors.border
183
+ }}
184
+ >
185
+ <OText>
154
186
  {walletName[wallet.type]?.name}
155
187
  </OText>
156
188
  </OTab>
157
- </Pressable>
189
+ </TouchableOpacity>
158
190
  ))}
159
191
  </OTabs>
160
192
 
@@ -163,9 +195,9 @@ const WalletsUI = (props: any) => {
163
195
  <LoyaltyContent>
164
196
  <LoyaltyWrapp>
165
197
  <OText size={20}>
166
- {`${t('LOYALTY_LEVEL_TITLE', 'Your level is')}:`}
198
+ {`${t('LOYALTY_LEVEL_TITLE', 'Your level is')}`}
167
199
  </OText>
168
- {/* {loyaltyLevel.image ? (
200
+ {loyaltyLevel.image ? (
169
201
  <FastImage
170
202
  style={styles.logoStyle}
171
203
  source={{
@@ -180,7 +212,7 @@ const WalletsUI = (props: any) => {
180
212
  source={theme.images.dummies.loyaltyLevel}
181
213
  resizeMode='contain'
182
214
  />
183
- )} */}
215
+ )}
184
216
  <OText
185
217
  size={22}
186
218
  weight='bold'
@@ -206,6 +238,14 @@ const WalletsUI = (props: any) => {
206
238
  </OText>
207
239
  </BalanceElement>
208
240
 
241
+ {/* {currentWalletSelected?.type === 'cash' && (
242
+ <>
243
+ <View style={styles.dividerStyle} />
244
+ <GiftCardUI navigation={navigation} />
245
+ <View style={styles.dividerStyle} />
246
+ </>
247
+ )} */}
248
+
209
249
  {!isChewLayout && (
210
250
  <WalletTransactions
211
251
  transactionsList={transactionsList}
@@ -259,15 +299,18 @@ const WalletsUI = (props: any) => {
259
299
  <ScrollView>
260
300
  <WalletTransactionsWrapper>
261
301
  <OButton
302
+ imgLeftStyle={{ width: 18 }}
262
303
  imgRightSrc={null}
263
304
  style={{
264
305
  borderWidth: 0,
265
- backgroundColor: theme.colors.white,
266
- padding: 0,
267
- paddingHorizontal: 0,
268
- width: 30,
306
+ width: 26,
307
+ height: 26,
308
+ backgroundColor: '#FFF',
309
+ borderColor: '#FFF',
310
+ shadowColor: '#FFF',
269
311
  paddingLeft: 0,
270
- paddingRight: 0
312
+ paddingRight: 0,
313
+ marginBottom: 10
271
314
  }}
272
315
  onClick={() => setOpenHistory(false)}
273
316
  icon={AntDesignIcon}
@@ -1,13 +1,12 @@
1
1
  import styled from 'styled-components/native'
2
2
 
3
3
  export const Container = styled.View`
4
- display: flex;
5
- flex-direction: column;
4
+ padding-horizontal: 20px;
5
+ padding-bottom: 20px;
6
+ padding-top: ${(props: any) => props.pdng};
6
7
  `
7
8
  export const Header = styled.View`
8
9
  flex-direction: row;
9
- align-items: center;
10
- justify-content: space-between;
11
10
  `
12
11
  export const SectionContent = styled.View`
13
12
  width: 100%;
@@ -34,10 +33,12 @@ export const OTabs = styled.View`
34
33
  flex-direction: row;
35
34
  width: 100%;
36
35
  flex-wrap: wrap;
36
+ padding-vertical: 5px;
37
37
  `;
38
38
 
39
39
  export const OTab = styled.View`
40
40
  padding-horizontal: 10px;
41
+ padding-vertical: 10px;
41
42
  `;
42
43
 
43
44
  export const LoyaltyContent = styled.View`
@@ -10,7 +10,7 @@ interface Props {
10
10
  onClick: any
11
11
  }
12
12
 
13
- export const CardAnimation = (props : Props) => {
13
+ export const CardAnimation = (props: Props) => {
14
14
  const {
15
15
  children,
16
16
  onClick,
@@ -21,8 +21,8 @@ export const CardAnimation = (props : Props) => {
21
21
  cardAnimation: {
22
22
  elevation: isPressed ? 2 : 0,
23
23
  shadowColor: '#888',
24
- shadowOffset: { width: 0, height: isPressed ? 2 : 0 },
25
- shadowRadius: 18,
24
+ shadowOffset: { width: 0, height: 0 },
25
+ shadowRadius: 0,
26
26
  shadowOpacity: isPressed ? 0.8 : 0,
27
27
  borderRadius: 12,
28
28
  }
@@ -1,16 +1,21 @@
1
1
  import React from 'react';
2
2
  import { Platform } from 'react-native';
3
3
  import OText from './OText';
4
+ import { useTheme } from 'styled-components/native'
4
5
 
5
6
  const HeaderTitle = (props: any) => {
6
7
  const { text, style } = props
8
+ const theme = useTheme();
9
+
7
10
  return (
8
11
  <OText
9
- size={24}
12
+ size={20}
13
+ weight={Platform.OS === 'ios' ? '600' : 'bold'}
10
14
  style={style ?? {
11
15
  marginTop: Platform.OS === 'android' ? 50 : 30,
12
- paddingHorizontal: 40,
13
- textTransform: 'capitalize'
16
+ paddingHorizontal: props.ph ?? 40,
17
+ textTransform: 'capitalize',
18
+ color: props.titleColor || theme.colors.textNormal,
14
19
  }}
15
20
  >
16
21
  {text}
@@ -33,7 +33,7 @@ const OBottomPopup = (props: Props) => {
33
33
 
34
34
  return (
35
35
  <Modal
36
- animationType='slide'
36
+ animationType='fade'
37
37
  transparent={transparent}
38
38
  visible={open}
39
39
  onRequestClose={() => onClose()}
@@ -12,6 +12,7 @@ import {
12
12
  import * as React from 'react';
13
13
  import styled, { useTheme } from 'styled-components/native';
14
14
  import { OIcon } from './';
15
+ import { css } from 'styled-components';
15
16
 
16
17
  const StyledButton = styled.View<Props>`
17
18
  background-color: ${(props: any) => props.theme.colors.primary};
@@ -26,6 +27,9 @@ const StyledButton = styled.View<Props>`
26
27
  padding-left: 20px;
27
28
  padding-right: 20px;
28
29
  position: relative;
30
+ ${(props: any) => props?.theme?.general?.components?.buttons?.borderRadius && css`
31
+ border-radius: ${props?.theme?.general?.components?.buttons?.borderRadius}px;
32
+ `}
29
33
  `
30
34
  const StyledButtonDisabled = styled(StyledButton)`
31
35
  background-color: ${(props: any) => props.theme.colors.disabled};
@@ -115,12 +119,12 @@ const OButton = (props: Props): React.ReactElement => {
115
119
  style={{ width: props.isCircle ? 52 : props.style?.width, ...props.parentStyle }}
116
120
  disabled={props.isDisabledWithSameStyles}
117
121
  >
118
- <StyledButton style={props.bgColor ? { ...props.style, backgroundColor: props.bgColor, borderColor: props.borderColor } : props.style}>
122
+ <StyledButton style={props.bgColor ? { ...props.style, backgroundColor: props.bgColor, borderColor: props.borderColor, borderRadius: parseInt(theme?.general?.components?.buttons?.borderRadius) || props.style?.borderRadius } : { ...props.style, borderRadius: parseInt(theme?.general?.components?.buttons?.borderRadius) || props.style?.borderRadius }}>
119
123
  {props.icon ? (
120
124
  <props.icon {...props.iconProps} />
121
125
  ) : null}
122
126
  {props.imgLeftSrc ? (
123
- <OIcon style={props.imgLeftStyle} src={props.imgLeftSrc} />
127
+ <OIcon style={props.imgLeftStyle} src={props.imgLeftSrc} color={theme.colors.textNormal} />
124
128
  ) : null}
125
129
  {props.text ? (
126
130
  <StyledText style={props.textStyle}>{props.text}</StyledText>