ordering-ui-react-native 0.16.47 → 0.16.48-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 (204) 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 +4 -4
  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/AcceptOrRejectOrder/index.tsx +259 -238
  29. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +6 -4
  30. package/themes/business/src/components/BusinessController/index.tsx +2 -2
  31. package/themes/business/src/components/Chat/index.tsx +40 -32
  32. package/themes/business/src/components/DriverMap/index.tsx +7 -5
  33. package/themes/business/src/components/DriverSchedule/index.tsx +36 -19
  34. package/themes/business/src/components/LoginForm/index.tsx +111 -74
  35. package/themes/business/src/components/MapView/index.tsx +12 -1
  36. package/themes/business/src/components/MessagesOption/index.tsx +11 -1
  37. package/themes/business/src/components/NewOrderNotification/index.tsx +26 -41
  38. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +33 -23
  39. package/themes/business/src/components/OrdersListManager/index.tsx +10 -3
  40. package/themes/business/src/components/OrdersOption/index.tsx +76 -77
  41. package/themes/business/src/components/OrdersOption/styles.tsx +5 -1
  42. package/themes/business/src/components/OrdersOptionBusiness/index.tsx +15 -1
  43. package/themes/business/src/components/OrdersOptionCity/index.tsx +15 -1
  44. package/themes/business/src/components/OrdersOptionDate/index.tsx +19 -6
  45. package/themes/business/src/components/OrdersOptionDelivery/index.tsx +15 -1
  46. package/themes/business/src/components/OrdersOptionDriver/index.tsx +15 -1
  47. package/themes/business/src/components/OrdersOptionPaymethod/index.tsx +15 -1
  48. package/themes/business/src/components/OrdersOptionStatus/index.tsx +10 -1
  49. package/themes/business/src/components/PreviousMessages/index.tsx +17 -18
  50. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +250 -0
  51. package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +115 -0
  52. package/themes/business/src/components/PreviousOrders/index.tsx +331 -243
  53. package/themes/business/src/components/PreviousOrders/styles.tsx +30 -2
  54. package/themes/business/src/components/ProductItemAccordion/index.tsx +3 -2
  55. package/themes/business/src/components/ReviewCustomer/index.tsx +39 -15
  56. package/themes/business/src/components/ScheduleBlocked/index.tsx +2 -2
  57. package/themes/business/src/components/UserFormDetails/index.tsx +5 -2
  58. package/themes/business/src/components/UserProfileForm/index.tsx +2 -0
  59. package/themes/business/src/components/shared/ODropDown.tsx +42 -8
  60. package/themes/business/src/components/shared/ODropDownCalendar.tsx +36 -7
  61. package/themes/business/src/components/shared/OLink.tsx +24 -12
  62. package/themes/business/src/components/shared/OText.tsx +3 -2
  63. package/themes/business/src/types/index.tsx +25 -11
  64. package/themes/business/src/utils/index.tsx +10 -0
  65. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  66. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  67. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  68. package/themes/kiosk/src/components/BusinessesListing/index.tsx +2 -1
  69. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  70. package/themes/kiosk/src/components/LoginForm/index.tsx +121 -10
  71. package/themes/kiosk/src/components/LoginForm/styles.tsx +5 -0
  72. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  73. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  74. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  75. package/themes/kiosk/src/components/ProductForm/index.tsx +1 -14
  76. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  77. package/themes/kiosk/src/types/index.d.ts +2 -0
  78. package/themes/original/index.tsx +6 -0
  79. package/themes/original/src/components/AddressDetails/index.tsx +10 -8
  80. package/themes/original/src/components/AddressForm/index.tsx +157 -140
  81. package/themes/original/src/components/AddressList/index.tsx +1 -1
  82. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  83. package/themes/original/src/components/BusinessBasicInformation/index.tsx +218 -147
  84. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +2 -2
  85. package/themes/original/src/components/BusinessController/index.tsx +231 -114
  86. package/themes/original/src/components/BusinessController/styles.tsx +14 -9
  87. package/themes/original/src/components/BusinessItemAccordion/index.tsx +12 -6
  88. package/themes/original/src/components/BusinessListingSearch/BusinessControllerSkeletons/index.tsx +57 -0
  89. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/index.tsx +59 -0
  90. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/styles.tsx +13 -0
  91. package/themes/original/src/components/BusinessListingSearch/index.tsx +109 -139
  92. package/themes/original/src/components/BusinessListingSearch/styles.tsx +10 -12
  93. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +87 -0
  94. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/styles.tsx +12 -0
  95. package/themes/original/src/components/BusinessProductsList/index.tsx +59 -60
  96. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  97. package/themes/original/src/components/BusinessProductsListing/index.tsx +175 -80
  98. package/themes/original/src/components/BusinessProductsListing/styles.tsx +18 -11
  99. package/themes/original/src/components/BusinessTypeFilter/index.tsx +3 -2
  100. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +35 -23
  101. package/themes/original/src/components/BusinessesListing/Layout/Appointment/styles.tsx +3 -2
  102. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +275 -120
  103. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +47 -10
  104. package/themes/original/src/components/BusinessesListing/index.tsx +80 -25
  105. package/themes/original/src/components/Cart/index.tsx +82 -15
  106. package/themes/original/src/components/Cart/styles.tsx +4 -0
  107. package/themes/original/src/components/CartContent/index.tsx +22 -16
  108. package/themes/original/src/components/Checkout/index.tsx +113 -117
  109. package/themes/original/src/components/Checkout/styles.tsx +4 -3
  110. package/themes/original/src/components/CitiesControl/index.tsx +89 -0
  111. package/themes/original/src/components/CitiesControl/styles.tsx +17 -0
  112. package/themes/original/src/components/DriverTips/index.tsx +4 -4
  113. package/themes/original/src/components/DriverTips/styles.tsx +2 -1
  114. package/themes/original/src/components/FavoriteList/index.tsx +69 -45
  115. package/themes/original/src/components/FloatingButton/index.tsx +13 -11
  116. package/themes/original/src/components/FloatingButton/styles.tsx +1 -1
  117. package/themes/original/src/components/GPSButton/index.tsx +20 -19
  118. package/themes/original/src/components/GPSButton/styles.ts +3 -3
  119. package/themes/original/src/components/GoogleMap/index.tsx +20 -12
  120. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +25 -10
  121. package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +4 -0
  122. package/themes/original/src/components/HelpGuide/index.tsx +9 -8
  123. package/themes/original/src/components/HelpOrder/index.tsx +9 -8
  124. package/themes/original/src/components/LanguageSelector/index.tsx +19 -14
  125. package/themes/original/src/components/LoginForm/Otp/index.tsx +89 -73
  126. package/themes/original/src/components/LoginForm/Otp/styles.tsx +0 -1
  127. package/themes/original/src/components/LoginForm/index.tsx +98 -41
  128. package/themes/original/src/components/LottieAnimation/index.tsx +69 -0
  129. package/themes/original/src/components/Messages/index.tsx +35 -20
  130. package/themes/original/src/components/MomentOption/index.tsx +8 -6
  131. package/themes/original/src/components/MultiCart/index.tsx +63 -0
  132. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +92 -93
  133. package/themes/original/src/components/MultiCheckout/index.tsx +10 -2
  134. package/themes/original/src/components/MultiOrdersDetails/index.tsx +34 -16
  135. package/themes/original/src/components/MyOrders/index.tsx +88 -22
  136. package/themes/original/src/components/NavBar/index.tsx +11 -5
  137. package/themes/original/src/components/NetworkError/index.tsx +5 -3
  138. package/themes/original/src/components/NotFoundSource/index.tsx +2 -1
  139. package/themes/original/src/components/Notifications/index.tsx +148 -0
  140. package/themes/original/src/components/Notifications/styles.tsx +17 -0
  141. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +167 -0
  142. package/themes/original/src/components/OrderDetails/index.tsx +200 -39
  143. package/themes/original/src/components/OrderDetails/styles.tsx +15 -2
  144. package/themes/original/src/components/OrderItAgain/index.tsx +75 -0
  145. package/themes/original/src/components/OrderItAgain/styles.tsx +10 -0
  146. package/themes/original/src/components/OrderProgress/index.tsx +77 -66
  147. package/themes/original/src/components/OrderProgress/styles.tsx +5 -0
  148. package/themes/original/src/components/OrderSummary/index.tsx +2 -35
  149. package/themes/original/src/components/OrderTypeSelector/index.tsx +85 -36
  150. package/themes/original/src/components/OrderTypeSelector/styles.tsx +19 -1
  151. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +94 -98
  152. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +3 -0
  153. package/themes/original/src/components/OrdersOption/index.tsx +102 -56
  154. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  155. package/themes/original/src/components/PaymentOptions/index.tsx +1 -2
  156. package/themes/original/src/components/PhoneInputNumber/index.tsx +1 -1
  157. package/themes/original/src/components/PlaceSpot/index.tsx +249 -47
  158. package/themes/original/src/components/PlaceSpot/styles.tsx +0 -2
  159. package/themes/original/src/components/PreviousOrders/index.tsx +3 -2
  160. package/themes/original/src/components/ProductForm/index.tsx +639 -664
  161. package/themes/original/src/components/ProductForm/styles.tsx +10 -11
  162. package/themes/original/src/components/ProductItemAccordion/index.tsx +199 -128
  163. package/themes/original/src/components/ProductOption/index.tsx +1 -1
  164. package/themes/original/src/components/ProductOptionSubOption/index.tsx +16 -8
  165. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +0 -1
  166. package/themes/original/src/components/ProfessionalFilter/index.tsx +2 -1
  167. package/themes/original/src/components/ProfessionalProfile/index.tsx +19 -8
  168. package/themes/original/src/components/Promotions/index.tsx +232 -219
  169. package/themes/original/src/components/Promotions/styles.tsx +7 -2
  170. package/themes/original/src/components/ReviewDriver/index.tsx +3 -3
  171. package/themes/original/src/components/ReviewOrder/index.tsx +120 -108
  172. package/themes/original/src/components/ReviewOrder/styles.tsx +5 -7
  173. package/themes/original/src/components/ReviewProducts/index.tsx +8 -5
  174. package/themes/original/src/components/ReviewTrigger/index.tsx +136 -0
  175. package/themes/original/src/components/ReviewTrigger/styles.tsx +41 -0
  176. package/themes/original/src/components/ServiceForm/index.tsx +332 -264
  177. package/themes/original/src/components/SignupForm/index.tsx +160 -113
  178. package/themes/original/src/components/SingleOrderCard/index.tsx +266 -183
  179. package/themes/original/src/components/SingleOrderCard/styles.tsx +10 -8
  180. package/themes/original/src/components/SingleProductCard/index.tsx +198 -112
  181. package/themes/original/src/components/SingleProductCard/styles.tsx +3 -10
  182. package/themes/original/src/components/SingleProductReview/index.tsx +38 -5
  183. package/themes/original/src/components/SingleProductReview/styles.tsx +12 -0
  184. package/themes/original/src/components/StripeElementsForm/index.tsx +13 -2
  185. package/themes/original/src/components/UpsellingProducts/index.tsx +15 -5
  186. package/themes/original/src/components/UserDetails/index.tsx +5 -3
  187. package/themes/original/src/components/UserFormDetails/index.tsx +6 -48
  188. package/themes/original/src/components/UserProfile/index.tsx +56 -31
  189. package/themes/original/src/components/UserProfile/styles.ts +17 -0
  190. package/themes/original/src/components/WalletTransactions/index.tsx +76 -0
  191. package/themes/original/src/components/WalletTransactions/styles.tsx +13 -0
  192. package/themes/original/src/components/Wallets/index.tsx +176 -164
  193. package/themes/original/src/components/Wallets/styles.tsx +12 -8
  194. package/themes/original/src/components/shared/CardAnimation.tsx +47 -0
  195. package/themes/original/src/components/shared/HeaderTitle.tsx +8 -3
  196. package/themes/original/src/components/shared/OBottomPopup.tsx +48 -15
  197. package/themes/original/src/components/shared/OButton.tsx +10 -3
  198. package/themes/original/src/components/shared/OIcon.tsx +8 -1
  199. package/themes/original/src/components/shared/OInput.tsx +10 -1
  200. package/themes/original/src/layouts/Container.tsx +13 -9
  201. package/themes/original/src/layouts/FloatingBottomContainer.tsx +5 -1
  202. package/themes/original/src/types/index.tsx +83 -28
  203. package/themes/original/src/utils/index.tsx +103 -58
  204. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -1,5 +1,5 @@
1
1
  import React, { useState, useEffect } from 'react'
2
- import { Pressable, StyleSheet, View } from 'react-native';
2
+ import { Pressable, StyleSheet, View, ScrollView, TouchableOpacity } 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'
@@ -9,23 +9,24 @@ import {
9
9
  useUtils,
10
10
  useConfig
11
11
  } from 'ordering-components/native'
12
+ import AntDesignIcon from 'react-native-vector-icons/AntDesign'
12
13
 
13
14
  import {
14
15
  Container,
16
+ Header,
15
17
  BalanceElement,
16
- TransactionsWrapper,
17
18
  OTabs,
18
19
  OTab,
19
20
  SectionContent,
20
21
  LoyaltyContent,
21
22
  LoyaltyWrapp,
22
- LoyaltyImg
23
+ LoyaltyImg,
24
+ WalletTransactionsWrapper
23
25
  } from './styles'
24
26
 
25
- import NavBar from '../NavBar'
26
- import { OText } from '../shared';
27
+ import { OButton, OIcon, OText, OModal } from '../shared';
27
28
  import { NotFoundSource } from '../NotFoundSource';
28
- import { WalletTransactionItem } from '../WalletTransactionItem'
29
+ import { WalletTransactions } from '../WalletTransactions'
29
30
 
30
31
  const WalletsUI = (props: any) => {
31
32
  const {
@@ -60,6 +61,8 @@ const WalletsUI = (props: any) => {
60
61
  });
61
62
 
62
63
  const [tabSelected, setTabSelected] = useState(isWalletCashEnabled ? 'cash' : 'credit_point')
64
+ const [openHistory, setOpenHistory] = useState(false)
65
+ const isChewLayout = theme?.wallets_view?.components?.layout?.type === 'chew'
63
66
 
64
67
  const isWalletEnabled = configs?.cash_wallet?.value && configs?.wallet_enabled?.value === '1' && (isWalletCashEnabled || isWalletPointsEnabled)
65
68
 
@@ -74,7 +77,7 @@ const WalletsUI = (props: any) => {
74
77
  isActive: isWalletCashEnabled
75
78
  },
76
79
  credit_point: {
77
- name: t('CREDITS_POINTS_WALLET', 'Credit Points Wallet'),
80
+ name: t('POINTS_WALLET', 'Points Wallet'),
78
81
  value: 1,
79
82
  isActive: isWalletPointsEnabled
80
83
  }
@@ -98,180 +101,189 @@ const WalletsUI = (props: any) => {
98
101
  }, [configs])
99
102
 
100
103
  useEffect(() => {
101
- if(refreshWallets){
104
+ if (refreshWallets) {
102
105
  getWallets()
103
106
  setRefreshWallets && setRefreshWallets(false)
104
107
  }
105
108
  }, [refreshWallets])
106
109
 
107
110
  return (
108
- <Container>
109
- <NavBar
110
- title={t('WALLETS', 'Wallets')}
111
- titleAlign={'center'}
112
- onActionLeft={goToBack}
113
- showCall={false}
114
- paddingTop={10}
115
- btnStyle={{ paddingLeft: 0 }}
116
- />
111
+ <>
112
+ <Container>
113
+ <Header>
114
+ <OText size={24} style={{ marginTop: 30 }}>{t('WALLETS', 'Wallets')}</OText>
115
+ {isChewLayout && (
116
+ <OButton
117
+ text={t('WALLET_HISTORY', 'Wallet history')}
118
+ bgColor={theme.colors.white}
119
+ borderColor={theme.colors.lightGray}
120
+ imgRightSrc={null}
121
+ textStyle={{ fontSize: 12, color: theme.colors.disabled }}
122
+ onClick={() => setOpenHistory(true)}
123
+ style={{ borderRadius: 8, height: 40 }}
124
+ />
125
+ )}
126
+ </Header>
117
127
 
118
- {!walletList.loading &&
119
- !userLoyaltyLevel.loading &&
120
- !walletList.error &&
121
- walletList.wallets?.length > 0 &&
122
- (
123
- <>
124
- <OTabs
125
- horizontal
126
- showsHorizontalScrollIndicator={false}
127
- >
128
- {walletList.wallets?.map((wallet: any) => walletName[wallet.type]?.isActive && (
129
- <Pressable
130
- key={wallet.id}
131
- onPress={() => handleChangeTab(wallet)}
128
+ {!walletList.loading &&
129
+ !userLoyaltyLevel.loading &&
130
+ !walletList.error &&
131
+ walletList.wallets?.length > 0 &&
132
+ (
133
+ <>
134
+ <OTabs
135
+ horizontal
136
+ showsHorizontalScrollIndicator={false}
132
137
  >
133
- <OTab isSelected={tabSelected === wallet.type}>
134
- <OText size={18}>
135
- {walletName[wallet.type]?.name}
136
- </OText>
137
- </OTab>
138
- </Pressable>
139
- ))}
140
- </OTabs>
138
+ {walletList.wallets?.map((wallet: any) => walletName[wallet.type]?.isActive && (
139
+ <TouchableOpacity
140
+ key={wallet.id}
141
+ onPress={() => handleChangeTab(wallet)}
142
+ >
143
+ <OTab
144
+ isSelected={tabSelected === wallet.type}
145
+ style={{
146
+ borderBottomWidth: 1,
147
+ borderBottomColor:
148
+ tabSelected === wallet.type
149
+ ? theme.colors.textNormal
150
+ : theme.colors.border
151
+ }}
152
+ >
153
+ <OText>
154
+ {walletName[wallet.type]?.name}
155
+ </OText>
156
+ </OTab>
157
+ </TouchableOpacity>
158
+ ))}
159
+ </OTabs>
141
160
 
142
- <SectionContent>
143
- {!!loyaltyLevel && tabSelected === 'credit_point' && (
144
- <LoyaltyContent>
145
- <LoyaltyWrapp>
146
- <OText size={20}>
147
- {`${t('LOYALTY_LEVEL_TITLE', 'Your level is')}:`}
161
+ <SectionContent>
162
+ {!!loyaltyLevel && tabSelected === 'credit_point' && (
163
+ <LoyaltyContent>
164
+ <LoyaltyWrapp>
165
+ <OText size={20}>
166
+ {`${t('LOYALTY_LEVEL_TITLE', 'Your level is')}:`}
167
+ </OText>
168
+ {/* {loyaltyLevel.image ? (
169
+ <FastImage
170
+ style={styles.logoStyle}
171
+ source={{
172
+ uri: loyaltyLevel.image,
173
+ priority: FastImage.priority.high,
174
+ cache: FastImage.cacheControl.web
175
+ }}
176
+ resizeMode={FastImage.resizeMode.contain}
177
+ />
178
+ ) : (
179
+ <LoyaltyImg
180
+ source={theme.images.dummies.loyaltyLevel}
181
+ resizeMode='contain'
182
+ />
183
+ )} */}
184
+ <OText
185
+ size={22}
186
+ weight='bold'
187
+ style={{ textTransform: 'uppercase' }}
188
+ color={theme.colors.primary}
189
+ >
190
+ {loyaltyLevel.name}
191
+ </OText>
192
+ </LoyaltyWrapp>
193
+ </LoyaltyContent>
194
+ )}
195
+ <BalanceElement>
196
+ <OText size={20} style={{ fontWeight: '600' }}>
197
+ {currentWalletSelected?.type === 'cash'
198
+ ? parsePrice(currentWalletSelected?.balance)
199
+ : currentWalletSelected?.balance
200
+ }
148
201
  </OText>
149
- {loyaltyLevel.image ? (
150
- <FastImage
151
- style={styles.logoStyle}
152
- source={{
153
- uri: loyaltyLevel.image,
154
- priority: FastImage.priority.high,
155
- cache:FastImage.cacheControl.web
156
- }}
157
- resizeMode={FastImage.resizeMode.contain}
158
- />
159
- ) : (
160
- <LoyaltyImg
161
- source={theme.images.dummies.loyaltyLevel}
162
- resizeMode='contain'
163
- />
164
- )}
165
- <OText
166
- size={22}
167
- weight='bold'
168
- style={{ textTransform: 'uppercase' }}
169
- color={theme.colors.primary}
170
- >
171
- {loyaltyLevel.name}
202
+ <OText style={{ paddingLeft: 5 }}>
203
+ {currentWalletSelected?.type === 'cash'
204
+ ? configs?.stripe_currency?.value
205
+ : t('POINTS', 'Points')}
172
206
  </OText>
173
- </LoyaltyWrapp>
174
- </LoyaltyContent>
175
- )}
176
- <BalanceElement>
177
- <OText size={20} style={{fontWeight: '600'}}>
178
- {currentWalletSelected?.type === 'cash'
179
- ? parsePrice(currentWalletSelected?.balance)
180
- : currentWalletSelected?.balance
181
- }
182
- </OText>
183
- <OText style={{ paddingLeft: 5 }}>
184
- {currentWalletSelected?.type === 'cash'
185
- ? configs?.stripe_currency?.value
186
- : t('POINTS', 'Points')}
187
- </OText>
188
- </BalanceElement>
207
+ </BalanceElement>
189
208
 
190
- <View style={{ marginTop: 20, width: '100%', paddingHorizontal: 1, paddingBottom: 40 }}>
191
- {!transactionsList?.loading &&
192
- !transactionsList?.error &&
193
- transactionsList.list?.[`wallet:${currentWalletSelected?.id}`]?.length > 0 &&
194
- (
195
- <>
196
- <OText style={{fontSize: 20}}>
197
- {t('TRANSACTIONS_HISTORY', 'Transactions history')}
198
- </OText>
199
- <TransactionsWrapper>
200
- {transactionsList.list?.[`wallet:${currentWalletSelected?.id}`]?.map((transaction: any, i: number) =>(
201
- <WalletTransactionItem
202
- idx={i}
203
- type={currentWalletSelected?.type}
204
- key={transaction.id}
205
- item={transaction}
206
- withFormatPrice={currentWalletSelected?.type === 'cash'}
207
- />
208
- ))}
209
- </TransactionsWrapper>
210
- </>
211
- )}
209
+ {!isChewLayout && (
210
+ <WalletTransactions
211
+ transactionsList={transactionsList}
212
+ currentWalletSelected={currentWalletSelected}
213
+ />
214
+ )}
215
+ </SectionContent>
216
+ </>
217
+ )}
212
218
 
213
- {(transactionsList?.loading || !transactionsList.list?.[`wallet:${currentWalletSelected?.id}`]) && (
214
- <View>
215
- {[...Array(4).keys()].map(i => (
216
- <View style={{ marginBottom: 10 }} key={i}>
217
- <Placeholder Animation={Fade}>
218
- <PlaceholderLine width={100} height={100} style={{ marginBottom: 0, borderRadius: 8 }} />
219
- </Placeholder>
220
- </View>
221
- ))}
219
+ {(walletList?.loading || userLoyaltyLevel.loading) && (
220
+ <>
221
+ <View>
222
+ <Placeholder Animation={Fade}>
223
+ <PlaceholderLine width={100} height={40} style={{ marginBottom: 0 }} />
224
+ </Placeholder>
225
+ </View>
226
+ <View style={{ marginTop: 10, marginBottom: 20 }}>
227
+ <Placeholder Animation={Fade}>
228
+ <PlaceholderLine width={100} height={40} style={{ marginBottom: 0 }} />
229
+ </Placeholder>
230
+ </View>
231
+ <View>
232
+ {[...Array(4).keys()].map(i => (
233
+ <View style={{ marginBottom: 10 }} key={i}>
234
+ <Placeholder Animation={Fade}>
235
+ <PlaceholderLine width={100} height={60} style={{ marginBottom: 0 }} />
236
+ </Placeholder>
222
237
  </View>
223
- )}
224
-
225
- {!transactionsList?.loading &&
226
- !(transactionsList?.loading && transactionsList.list?.[`wallet:${currentWalletSelected?.id}`]) &&
227
- (transactionsList?.error ||
228
- !transactionsList.list?.[`wallet:${currentWalletSelected?.id}`]?.length) &&
229
- (
230
- <NotFoundSource
231
- content={transactionsList?.error
232
- ? t('ERROR_NOT_FOUND_TRANSACTIONS', 'Sorry, an error has occurred')
233
- : t('NOT_FOUND_TRANSACTIONS', 'No transactions to show at this time.')
234
- }
235
- />
236
- )}
238
+ ))}
237
239
  </View>
238
- </SectionContent>
239
- </>
240
- )}
240
+ </>
241
+ )}
241
242
 
242
- {(walletList?.loading || userLoyaltyLevel.loading) && (
243
- <>
244
- <View>
245
- <Placeholder Animation={Fade}>
246
- <PlaceholderLine width={100} height={40} style={{ marginBottom: 0 }} />
247
- </Placeholder>
248
- </View>
249
- <View style={{ marginTop: 10, marginBottom: 20 }}>
250
- <Placeholder Animation={Fade}>
251
- <PlaceholderLine width={100} height={40} style={{ marginBottom: 0 }} />
252
- </Placeholder>
253
- </View>
254
- <View>
255
- {[...Array(4).keys()].map(i => (
256
- <View style={{ marginBottom: 10 }} key={i}>
257
- <Placeholder Animation={Fade}>
258
- <PlaceholderLine width={100} height={60} style={{ marginBottom: 0 }} />
259
- </Placeholder>
260
- </View>
261
- ))}
262
- </View>
263
- </>
264
- )}
243
+ {!walletList?.loading && !userLoyaltyLevel.loading && (walletList?.error || !walletList?.wallets?.length) && (
244
+ <NotFoundSource
245
+ content={walletList?.error
246
+ ? t('ERROR_NOT_FOUND_WALLETS', 'Sorry, an error has occurred')
247
+ : t('NOT_FOUND_WALLETS', 'No wallets to show at this time.')
248
+ }
249
+ />
250
+ )}
251
+ </Container>
265
252
 
266
- {!walletList?.loading && !userLoyaltyLevel.loading && (walletList?.error || !walletList?.wallets?.length) && (
267
- <NotFoundSource
268
- content={walletList?.error
269
- ? t('ERROR_NOT_FOUND_WALLETS', 'Sorry, an error has occurred')
270
- : t('NOT_FOUND_WALLETS', 'No wallets to show at this time.')
271
- }
272
- />
273
- )}
274
- </Container>
253
+ <OModal
254
+ open={openHistory}
255
+ onClose={() => setOpenHistory(false)}
256
+ entireModal
257
+ customClose
258
+ >
259
+ <ScrollView>
260
+ <WalletTransactionsWrapper>
261
+ <OButton
262
+ imgRightSrc={null}
263
+ style={{
264
+ borderWidth: 0,
265
+ backgroundColor: theme.colors.white,
266
+ padding: 0,
267
+ paddingHorizontal: 0,
268
+ width: 30,
269
+ paddingLeft: 0,
270
+ paddingRight: 0
271
+ }}
272
+ onClick={() => setOpenHistory(false)}
273
+ icon={AntDesignIcon}
274
+ iconProps={{
275
+ name: 'arrowleft',
276
+ size: 26
277
+ }}
278
+ />
279
+ <WalletTransactions
280
+ transactionsList={transactionsList}
281
+ currentWalletSelected={currentWalletSelected}
282
+ />
283
+ </WalletTransactionsWrapper>
284
+ </ScrollView>
285
+ </OModal>
286
+ </>
275
287
  )
276
288
  }
277
289
 
@@ -4,7 +4,11 @@ export const Container = styled.View`
4
4
  display: flex;
5
5
  flex-direction: column;
6
6
  `
7
-
7
+ export const Header = styled.View`
8
+ flex-direction: row;
9
+ align-items: center;
10
+ justify-content: space-between;
11
+ `
8
12
  export const SectionContent = styled.View`
9
13
  width: 100%;
10
14
  display: flex;
@@ -14,13 +18,6 @@ export const SectionContent = styled.View`
14
18
  margin-top: 20px;
15
19
  `
16
20
 
17
- export const TransactionsWrapper = styled.View`
18
- display: flex;
19
- flex-direction: column;
20
- border-left-width: 2px;
21
- border-left-color: ${(props: any) => props.theme.colors.disabled};
22
- `
23
-
24
21
  export const BalanceElement = styled.View`
25
22
  width: 100%;
26
23
  padding: 10px 0;
@@ -30,16 +27,19 @@ export const BalanceElement = styled.View`
30
27
  align-items: center;
31
28
  background-color: ${(props: any) => props.theme.colors.backgroundGray100};
32
29
  border-radius: 8px;
30
+ margin-bottom: 20px;
33
31
  `
34
32
 
35
33
  export const OTabs = styled.View`
36
34
  flex-direction: row;
37
35
  width: 100%;
38
36
  flex-wrap: wrap;
37
+ padding-vertical: 5px;
39
38
  `;
40
39
 
41
40
  export const OTab = styled.View`
42
41
  padding-horizontal: 10px;
42
+ padding-vertical: 10px;
43
43
  `;
44
44
 
45
45
  export const LoyaltyContent = styled.View`
@@ -62,3 +62,7 @@ export const LoyaltyImg = styled.ImageBackground`
62
62
  justify-content: center;
63
63
  align-items: center;
64
64
  `
65
+ export const WalletTransactionsWrapper = styled.View`
66
+ padding-horizontal: 40px;
67
+ padding-top: 20px;
68
+ `
@@ -0,0 +1,47 @@
1
+ import React, { useState } from 'react'
2
+ import { StyleSheet, ViewStyle } from 'react-native'
3
+ import styled from 'styled-components/native'
4
+
5
+ const CardContainerTouchable = styled.TouchableOpacity``
6
+
7
+ interface Props {
8
+ children: React.ReactChildren | Element,
9
+ style?: Array<ViewStyle> | any,
10
+ onClick: any
11
+ }
12
+
13
+ export const CardAnimation = (props: Props) => {
14
+ const {
15
+ children,
16
+ onClick,
17
+ style
18
+ } = props
19
+ const [isPressed, setIsPressed] = useState(false)
20
+ const styles = StyleSheet.create({
21
+ cardAnimation: {
22
+ elevation: isPressed ? 2 : 0,
23
+ shadowColor: '#888',
24
+ shadowOffset: { width: 0, height: 0 },
25
+ shadowRadius: 0,
26
+ shadowOpacity: isPressed ? 0.8 : 0,
27
+ borderRadius: 12,
28
+ }
29
+ })
30
+
31
+ const styleProvided = style || []
32
+ return (
33
+ <CardContainerTouchable
34
+ onPress={onClick}
35
+ activeOpacity={0.8}
36
+ delayPressIn={20}
37
+ onPressIn={() => setIsPressed(true)}
38
+ onPressOut={() => setIsPressed(false)}
39
+ style={[
40
+ ...styleProvided,
41
+ styles.cardAnimation
42
+ ]}
43
+ >
44
+ {children}
45
+ </CardContainerTouchable>
46
+ )
47
+ }
@@ -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}
@@ -1,33 +1,45 @@
1
1
  import React from 'react'
2
- import { Modal, TouchableWithoutFeedback, Dimensions, StyleSheet, View, Text, Platform, StatusBar } from 'react-native'
2
+ import { Modal, TouchableWithoutFeedback, TouchableOpacity, Dimensions, StyleSheet, View, Text, Platform, StatusBar } from 'react-native'
3
3
  import { useSafeAreaInsets } from 'react-native-safe-area-context'
4
+ import { OIcon } from '.';
4
5
  const deviceHeight = Dimensions.get('window').height
5
6
 
6
7
  interface Props {
7
8
  open: boolean;
9
+ transparent?: boolean;
8
10
  title?: string;
9
11
  children?: any;
10
12
  onClose?: any;
11
13
  isStatusBar?: boolean;
14
+ bottomContainerStyle?: any;
15
+ titleStyle?: any;
16
+ closeIcon?: any;
17
+ presentationStyle?: "fullScreen" | "pageSheet" | "formSheet" | "overFullScreen" | undefined
12
18
  }
13
19
  const OBottomPopup = (props: Props) => {
14
20
  const {
15
21
  open,
22
+ transparent,
16
23
  title,
17
24
  onClose,
18
25
  children,
19
- isStatusBar
26
+ isStatusBar,
27
+ titleStyle,
28
+ bottomContainerStyle,
29
+ closeIcon,
30
+ presentationStyle
20
31
  } = props
21
32
  const { top, bottom } = useSafeAreaInsets();
33
+
22
34
  return (
23
35
  <Modal
24
- animationType='slide'
25
- transparent={false}
36
+ animationType='fade'
37
+ transparent={transparent}
26
38
  visible={open}
27
39
  onRequestClose={() => onClose()}
28
- presentationStyle={'fullScreen'}
40
+ presentationStyle={presentationStyle || 'fullScreen'}
29
41
  >
30
- {isStatusBar && <StatusBar translucent={false} />}
42
+ {isStatusBar && <StatusBar translucent={false} />}
31
43
  <View style={styles.container}>
32
44
  <TouchableWithoutFeedback
33
45
  style={styles.touchableOutsideStyle}
@@ -35,13 +47,24 @@ const OBottomPopup = (props: Props) => {
35
47
  >
36
48
  <View style={styles.touchableOutsideStyle} />
37
49
  </TouchableWithoutFeedback>
38
- <View style={styles.bottomContainer}>
50
+ <View style={{ ...styles.bottomContainer, ...bottomContainerStyle }}>
39
51
  <View style={{ paddingTop: top, paddingBottom: bottom }}>
40
- {title != '' && (
41
- <Text style={styles.titleStyle}>
42
- {title}
43
- </Text>
44
- )}
52
+ <View style={styles.modalTitleStyle}>
53
+ {closeIcon && (
54
+ <TouchableOpacity onPress={() => onClose()} style={styles.closeIconStyle}>
55
+ <OIcon
56
+ src={closeIcon}
57
+ width={20}
58
+ height={20}
59
+ />
60
+ </TouchableOpacity>
61
+ )}
62
+ {!!title && (
63
+ <Text style={{ ...styles.titleStyle, ...titleStyle }}>
64
+ {title}
65
+ </Text>
66
+ )}
67
+ </View>
45
68
  {children}
46
69
  </View>
47
70
  </View>
@@ -54,7 +77,7 @@ const styles = StyleSheet.create({
54
77
  container: {
55
78
  flex: 1,
56
79
  backgroundColor: '#000000AA',
57
- justifyContent: 'flex-end',
80
+ justifyContent: 'flex-end'
58
81
  },
59
82
  touchableOutsideStyle: {
60
83
  flex: 1,
@@ -68,8 +91,18 @@ const styles = StyleSheet.create({
68
91
  },
69
92
  titleStyle: {
70
93
  fontSize: 20,
71
- fontWeight: 'bold',
72
- marginVertical: 15
94
+ fontWeight: 'bold'
95
+ },
96
+ closeIconStyle: {
97
+ position: 'absolute',
98
+ left: 25,
99
+ top: 25,
100
+ zIndex: 100
101
+ },
102
+ modalTitleStyle: {
103
+ position: 'relative',
104
+ paddingHorizontal: 10,
105
+ paddingVertical: 20
73
106
  }
74
107
  })
75
108
 
@@ -78,6 +78,9 @@ interface Props {
78
78
  borderColor?: string;
79
79
  loadingStyle?: ViewStyle;
80
80
  showNextIcon?: boolean;
81
+ isDisabledWithSameStyles?: boolean;
82
+ icon?: any;
83
+ iconProps?: any
81
84
  }
82
85
 
83
86
  const OButton = (props: Props): React.ReactElement => {
@@ -110,8 +113,12 @@ const OButton = (props: Props): React.ReactElement => {
110
113
  activeOpacity={props.activeOpacity}
111
114
  onPress={props.onClick}
112
115
  style={{ width: props.isCircle ? 52 : props.style?.width, ...props.parentStyle }}
116
+ disabled={props.isDisabledWithSameStyles}
113
117
  >
114
118
  <StyledButton style={props.bgColor ? { ...props.style, backgroundColor: props.bgColor, borderColor: props.borderColor } : props.style}>
119
+ {props.icon ? (
120
+ <props.icon {...props.iconProps} />
121
+ ) : null}
115
122
  {props.imgLeftSrc ? (
116
123
  <OIcon style={props.imgLeftStyle} src={props.imgLeftSrc} />
117
124
  ) : null}
@@ -120,9 +127,9 @@ const OButton = (props: Props): React.ReactElement => {
120
127
  ) : null}
121
128
  {props.imgRightSrc ? (
122
129
  <EndImage style={props.imgRightStyle} source={props.imgRightSrc} />
123
- ) : props.showNextIcon ?
124
- <EndImage source={theme.images.general.arrow_left}
125
- style={{width: 16, tintColor: 'white', transform: [{rotate: I18nManager.isRTL ? '0deg' : '180deg'}]}} /> : null }
130
+ ) : props.showNextIcon ?
131
+ <EndImage source={theme.images.general.arrow_left}
132
+ style={{ width: 16, tintColor: 'white', transform: [{ rotate: I18nManager.isRTL ? '0deg' : '180deg' }] }} /> : null}
126
133
  </StyledButton>
127
134
  </TouchableOpacity>
128
135
  );