ordering-ui-react-native 0.17.24 → 0.17.25-release

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. package/package.json +8 -7
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/BusinessesListing/index.tsx +1 -1
  4. package/src/components/OrderCreating/index.tsx +1 -21
  5. package/src/components/PaymentOptionsWebView/index.tsx +119 -120
  6. package/src/components/StripeMethodForm/index.tsx +108 -79
  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 +118 -107
  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 +43 -50
  24. package/themes/business/src/components/OrderDetails/Delivery.tsx +4 -3
  25. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +90 -47
  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 +53 -19
  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 +166 -89
  72. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +9 -7
  73. package/themes/original/src/components/BusinessController/index.tsx +145 -68
  74. package/themes/original/src/components/BusinessController/styles.tsx +22 -9
  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 +350 -323
  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/index.tsx +616 -495
  84. package/themes/original/src/components/BusinessProductsListing/styles.tsx +7 -9
  85. package/themes/original/src/components/BusinessReviews/index.tsx +3 -1
  86. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +1 -1
  87. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +105 -78
  88. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -9
  89. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  90. package/themes/original/src/components/Cart/index.tsx +102 -69
  91. package/themes/original/src/components/CartContent/index.tsx +110 -19
  92. package/themes/original/src/components/CartContent/styles.tsx +15 -1
  93. package/themes/original/src/components/Checkout/index.tsx +323 -178
  94. package/themes/original/src/components/Checkout/styles.tsx +4 -2
  95. package/themes/original/src/components/CitiesControl/index.tsx +89 -0
  96. package/themes/original/src/components/CitiesControl/styles.tsx +17 -0
  97. package/themes/original/src/components/CouponControl/index.tsx +10 -3
  98. package/themes/original/src/components/DriverTips/index.tsx +52 -34
  99. package/themes/original/src/components/Favorite/index.tsx +7 -4
  100. package/themes/original/src/components/Favorite/styles.tsx +1 -1
  101. package/themes/original/src/components/FavoriteList/index.tsx +51 -80
  102. package/themes/original/src/components/FloatingButton/index.tsx +1 -2
  103. package/themes/original/src/components/FloatingButton/styles.tsx +1 -1
  104. package/themes/original/src/components/GPSButton/index.tsx +6 -4
  105. package/themes/original/src/components/GPSButton/styles.ts +3 -3
  106. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +96 -0
  107. package/themes/original/src/components/GiftCard/GiftCardUI/styles.tsx +5 -0
  108. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +100 -0
  109. package/themes/original/src/components/GiftCard/PurchaseGiftCard/styles.tsx +8 -0
  110. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +178 -0
  111. package/themes/original/src/components/GiftCard/RedeemGiftCard/styles.tsx +8 -0
  112. package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +165 -0
  113. package/themes/original/src/components/GiftCard/SendGiftCard/styles.tsx +9 -0
  114. package/themes/original/src/components/GoogleMap/index.tsx +15 -4
  115. package/themes/original/src/components/Help/index.tsx +8 -8
  116. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +11 -22
  117. package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +6 -0
  118. package/themes/original/src/components/HelpGuide/index.tsx +12 -16
  119. package/themes/original/src/components/HelpGuide/styles.tsx +6 -0
  120. package/themes/original/src/components/HelpOrder/index.tsx +12 -25
  121. package/themes/original/src/components/HelpOrder/styles.tsx +8 -1
  122. package/themes/original/src/components/Home/index.tsx +13 -4
  123. package/themes/original/src/components/LanguageSelector/index.tsx +17 -13
  124. package/themes/original/src/components/LastOrder/index.tsx +1 -34
  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 +59 -22
  128. package/themes/original/src/components/LottieAnimation/index.tsx +78 -0
  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 +197 -116
  134. package/themes/original/src/components/MultiCheckout/index.tsx +288 -86
  135. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +37 -224
  136. package/themes/original/src/components/MultiOrdersDetails/index.tsx +67 -20
  137. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +1 -1
  138. package/themes/original/src/components/MyOrders/index.tsx +55 -51
  139. package/themes/original/src/components/NavBar/index.tsx +6 -11
  140. package/themes/original/src/components/Notifications/index.tsx +46 -50
  141. package/themes/original/src/components/Notifications/styles.tsx +6 -3
  142. package/themes/original/src/components/OrderDetails/OrderEta.tsx +64 -0
  143. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +15 -3
  144. package/themes/original/src/components/OrderDetails/index.tsx +201 -339
  145. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  146. package/themes/original/src/components/OrderItAgain/index.tsx +3 -1
  147. package/themes/original/src/components/OrderProgress/index.tsx +74 -112
  148. package/themes/original/src/components/OrderProgress/styles.tsx +5 -0
  149. package/themes/original/src/components/OrderSummary/index.tsx +87 -59
  150. package/themes/original/src/components/OrderTypeSelector/index.tsx +3 -2
  151. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +24 -19
  152. package/themes/original/src/components/OrdersOption/index.tsx +96 -88
  153. package/themes/original/src/components/PageBanner/index.tsx +171 -0
  154. package/themes/original/src/components/PageBanner/styles.tsx +11 -0
  155. package/themes/original/src/components/PaymentOptionStripe/styles.tsx +1 -1
  156. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  157. package/themes/original/src/components/PaymentOptions/index.tsx +34 -6
  158. package/themes/original/src/components/PhoneInputNumber/index.tsx +3 -3
  159. package/themes/original/src/components/PlaceSpot/index.tsx +12 -6
  160. package/themes/original/src/components/PreviousOrders/index.tsx +3 -2
  161. package/themes/original/src/components/ProductForm/index.tsx +230 -261
  162. package/themes/original/src/components/ProductForm/styles.tsx +4 -7
  163. package/themes/original/src/components/ProductItemAccordion/index.tsx +59 -29
  164. package/themes/original/src/components/ProductOptionSubOption/index.tsx +18 -10
  165. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +1 -2
  166. package/themes/original/src/components/ProfessionalFilter/SingleProfessionalCard/index.tsx +108 -0
  167. package/themes/original/src/components/ProfessionalFilter/index.tsx +20 -50
  168. package/themes/original/src/components/ProfessionalProfile/index.tsx +36 -7
  169. package/themes/original/src/components/Promotions/index.tsx +234 -220
  170. package/themes/original/src/components/Promotions/styles.tsx +10 -3
  171. package/themes/original/src/components/ReviewDriver/index.tsx +3 -3
  172. package/themes/original/src/components/ReviewOrder/index.tsx +26 -9
  173. package/themes/original/src/components/ReviewOrder/styles.tsx +7 -0
  174. package/themes/original/src/components/ReviewProducts/index.tsx +23 -11
  175. package/themes/original/src/components/ReviewTrigger/index.tsx +27 -9
  176. package/themes/original/src/components/ReviewTrigger/styles.tsx +8 -1
  177. package/themes/original/src/components/ScheduleAccordion/index.tsx +68 -0
  178. package/themes/original/src/components/ScheduleAccordion/styles.tsx +14 -0
  179. package/themes/original/src/components/ServiceForm/index.tsx +74 -19
  180. package/themes/original/src/components/Sessions/index.tsx +11 -8
  181. package/themes/original/src/components/Sessions/styles.tsx +5 -0
  182. package/themes/original/src/components/SignupForm/index.tsx +82 -67
  183. package/themes/original/src/components/SingleOrderCard/index.tsx +149 -63
  184. package/themes/original/src/components/SingleOrderCard/styles.tsx +11 -9
  185. package/themes/original/src/components/SingleProductCard/index.tsx +99 -55
  186. package/themes/original/src/components/SingleProductCard/styles.tsx +27 -13
  187. package/themes/original/src/components/SingleProductReview/index.tsx +8 -2
  188. package/themes/original/src/components/SingleProductReview/styles.tsx +1 -1
  189. package/themes/original/src/components/StripeCardsList/index.tsx +9 -2
  190. package/themes/original/src/components/StripeElementsForm/index.tsx +28 -15
  191. package/themes/original/src/components/UpsellingProducts/index.tsx +238 -224
  192. package/themes/original/src/components/UpsellingProducts/styles.tsx +12 -1
  193. package/themes/original/src/components/UserDetails/index.tsx +8 -4
  194. package/themes/original/src/components/UserFormDetails/index.tsx +47 -7
  195. package/themes/original/src/components/UserProfile/index.tsx +9 -14
  196. package/themes/original/src/components/UserProfileForm/index.tsx +21 -28
  197. package/themes/original/src/components/UserProfileForm/styles.tsx +7 -0
  198. package/themes/original/src/components/WalletTransactionItem/index.tsx +2 -2
  199. package/themes/original/src/components/Wallets/index.tsx +94 -33
  200. package/themes/original/src/components/Wallets/styles.tsx +2 -0
  201. package/themes/original/src/components/shared/CardAnimation.tsx +47 -0
  202. package/themes/original/src/components/shared/HeaderTitle.tsx +8 -3
  203. package/themes/original/src/components/shared/OBottomPopup.tsx +1 -1
  204. package/themes/original/src/components/shared/OButton.tsx +6 -2
  205. package/themes/original/src/components/shared/OIcon.tsx +8 -1
  206. package/themes/original/src/components/shared/OInput.tsx +16 -2
  207. package/themes/original/src/components/shared/OModal.tsx +3 -3
  208. package/themes/original/src/layouts/Container.tsx +13 -9
  209. package/themes/original/src/types/index.tsx +36 -9
  210. package/themes/original/src/utils/index.tsx +375 -58
  211. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -11,14 +11,15 @@ import {
11
11
  } from 'ordering-components/native';
12
12
  import { useTheme } from 'styled-components/native';
13
13
  import { SingleProductCardParams } from '../../types';
14
- import { CardContainer, CardInfo, SoldOut, QuantityContainer, PricesContainer, RibbonBox, LogoWrapper } from './styles';
15
- import { StyleSheet, View, TouchableOpacity, Image, Animated } from 'react-native';
14
+ import { CardInfo, SoldOut, QuantityContainer, PricesContainer, RibbonBox, LogoWrapper, TagsContainer } from './styles';
15
+ import { ScrollView, StyleSheet, TouchableWithoutFeedback, View } from 'react-native';
16
16
  import { InView } from 'react-native-intersection-observer'
17
17
  import { Fade, Placeholder, PlaceholderLine } from 'rn-placeholder';
18
18
  import { OButton, OIcon, OText } from '../shared';
19
19
  import FastImage from 'react-native-fast-image'
20
- import IconAntDesign from 'react-native-vector-icons/AntDesign'
21
- import { shape } from '../../utils';
20
+ import { lightenDarkenColor, shape } from '../../utils';
21
+ import { LottieAnimation } from '../LottieAnimation';
22
+ import { CardAnimation } from '../shared/CardAnimation'
22
23
 
23
24
  function SingleProductCardPropsAreEqual(prevProps: any, nextProps: any) {
24
25
  return JSON.stringify(prevProps.product) === JSON.stringify(nextProps.product) &&
@@ -38,19 +39,34 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
38
39
  enableIntersection,
39
40
  navigation,
40
41
  businessId,
41
- isPreviously
42
+ isPreviously,
43
+ viewString,
44
+ businessSingleId
42
45
  } = props;
43
46
 
44
47
  const theme = useTheme();
45
48
  const hideAddButton = theme?.business_view?.components?.products?.components?.add_to_cart_button?.hidden ?? true
49
+ const isChewLayout = theme?.header?.components?.layout?.type?.toLowerCase() === 'chew'
50
+ const hideProductDescription = theme?.business_view?.components?.products?.components?.product?.components?.description?.hidden
51
+ const hideProductLogo = viewString
52
+ ? theme?.[viewString]?.components?.cart?.components?.products?.image?.hidden
53
+ : theme?.business_view?.components?.products?.components?.product?.components?.image?.hidden
54
+ const textSize = isChewLayout ? 12 : 10
55
+ const logoPosition = theme?.business_view?.components?.products?.components?.product?.components?.image?.position
46
56
 
47
57
  const styles = StyleSheet.create({
48
58
  container: {
49
59
  borderWidth: 1,
50
- borderRadius: 7.6,
51
60
  borderColor: theme.colors.border,
52
61
  marginBottom: 25,
53
- minHeight: hideAddButton ? 100 : 165
62
+ minHeight: hideAddButton ? 100 : 165,
63
+ flex: 1,
64
+ flexDirection: hideAddButton ? 'row' : 'column',
65
+ justifyContent: 'space-between',
66
+ alignItems: 'center',
67
+ padding: 12,
68
+ borderRadius: 10,
69
+ position: 'relative'
54
70
  },
55
71
  titleWrapper: {
56
72
  flexDirection: 'row',
@@ -70,8 +86,8 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
70
86
  textTransform: 'uppercase',
71
87
  },
72
88
  productStyle: {
73
- width: 75,
74
- height: 75,
89
+ width: 85,
90
+ height: 85,
75
91
  borderRadius: 7.6
76
92
  },
77
93
  quantityContainer: {
@@ -89,7 +105,12 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
89
105
  color: '#808080',
90
106
  textDecorationLine: 'line-through',
91
107
  marginLeft: 7,
92
- marginRight: 7
108
+ marginRight: 0
109
+ },
110
+ productTagsStyle: {
111
+ width: 30,
112
+ height: 30,
113
+ marginRight: 5
93
114
  }
94
115
  });
95
116
 
@@ -150,19 +171,18 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
150
171
  return (
151
172
  <InView style={{ minHeight: hideAddButton ? 125 : 190 }} triggerOnce={true} onChange={(inView: boolean) => handleChangeIntersection()}>
152
173
  {isIntersectionObserver ? (
153
- <CardContainer
154
- showAddButton={!hideAddButton}
174
+ <CardAnimation
175
+ onClick={() => handleClickproduct()}
155
176
  style={[
156
177
  styles.container,
157
178
  (isSoldOut || maxProductQuantity <= 0) && styles.soldOutBackgroundStyle,
158
- (style && { ...style }),
179
+ (style && { ...style })
159
180
  ]}
160
- onPress={() => handleClickproduct()}
161
181
  >
162
- <View style={{ flexDirection: 'row' }}>
182
+ <View style={{ flexDirection: logoPosition === 'left' ? 'row-reverse' : 'row' }}>
163
183
  {productAddedToCartLength > 0 && (
164
- <QuantityContainer style={[styles.quantityContainer, {
165
- transform: [{ translateX: 25 }, { translateY: hideAddButton ? -25 : -55 }],
184
+ <QuantityContainer businessSingleId={businessSingleId} style={[styles.quantityContainer, {
185
+ transform: [{ translateX: 25 }, { translateY: -25 }],
166
186
  }]}>
167
187
  <OText size={12} color={theme.colors.white}>{productAddedToCartLength.toString()}</OText>
168
188
  </QuantityContainer>
@@ -170,7 +190,7 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
170
190
  <CardInfo>
171
191
  <View style={styles.titleWrapper}>
172
192
  <OText
173
- size={12}
193
+ size={textSize + 2}
174
194
  weight={'500'}
175
195
  numberOfLines={1}
176
196
  ellipsizeMode="tail"
@@ -178,15 +198,15 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
178
198
  {product?.name}
179
199
  </OText>
180
200
  {!isPreviously && (
181
- <TouchableOpacity
182
- onPress={handleChangeFavorite}
183
- >
184
- <IconAntDesign
185
- name={product?.favorite ? 'heart' : 'hearto'}
186
- color={theme.colors.danger5}
187
- size={18}
188
- />
189
- </TouchableOpacity>
201
+ <LottieAnimation
202
+ type='favorite'
203
+ onClick={handleChangeFavorite}
204
+ initialValue={product?.favorite ? 0.75 : 0}
205
+ toValue={product?.favorite ? 0 : 0.75}
206
+ disableAnimation={!auth}
207
+ iconProps={{ color: theme.colors.danger5, size: 18 }}
208
+ isActive={product?.favorite}
209
+ />
190
210
  )}
191
211
  </View>
192
212
  <PricesContainer>
@@ -196,18 +216,44 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
196
216
  {product?.offer_price !== null && !!product?.in_offer && (
197
217
  <OText style={styles.regularPriceStyle}>{product?.offer_price ? parsePrice(product?.offer_price) : ''}</OText>
198
218
  )}
219
+ {!isPreviously && product?.tags && product?.tags.length > 0 && (
220
+ <ScrollView
221
+ showsVerticalScrollIndicator={false}
222
+ showsHorizontalScrollIndicator={false}
223
+ horizontal
224
+ style={{ marginLeft: 10 }}
225
+ contentContainerStyle={{ flexGrow: 1 }}
226
+ >
227
+ {product?.tags.map((tag: any, i: any) => (
228
+ <TouchableWithoutFeedback key={i}>
229
+ <TagsContainer>
230
+ <FastImage
231
+ style={styles.productTagsStyle}
232
+ source={tag.image ? {
233
+ uri: optimizeImage(tag.image, 'h_250,c_limit'),
234
+ priority: FastImage.priority.normal,
235
+ } : theme?.images?.dummies?.product}
236
+ resizeMode={FastImage.resizeMode.cover}
237
+ />
238
+ </TagsContainer>
239
+ </TouchableWithoutFeedback>
240
+ ))}
241
+ </ScrollView>
242
+ )}
199
243
  </PricesContainer>
200
- <OText
201
- size={10}
202
- numberOfLines={!isPreviously ? 2 : 1}
203
- ellipsizeMode="tail"
204
- color={theme.colors.textSecondary}
205
- style={styles.line15}>
206
- {product?.description}
207
- </OText>
244
+ {!hideProductDescription && (
245
+ <OText
246
+ size={textSize}
247
+ numberOfLines={!isPreviously ? 2 : 1}
248
+ ellipsizeMode="tail"
249
+ color={theme.colors.textSecondary}
250
+ style={styles.line15}>
251
+ {product?.description}
252
+ </OText>
253
+ )}
208
254
  {isPreviously && (
209
255
  <OText
210
- size={10}
256
+ size={textSize}
211
257
  numberOfLines={1}
212
258
  ellipsizeMode="tail"
213
259
  color={theme.colors.primary}
@@ -216,17 +262,19 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
216
262
  </OText>
217
263
  )}
218
264
  </CardInfo>
219
- <LogoWrapper>
265
+ <LogoWrapper logoPosition={logoPosition}>
220
266
  {!!product?.ribbon?.enabled && (
221
267
  <RibbonBox
222
268
  bgColor={product?.ribbon?.color}
269
+ colorText={lightenDarkenColor(product?.ribbon?.color)}
270
+ borderRibbon={lightenDarkenColor(product?.ribbon?.color)}
223
271
  isRoundRect={product?.ribbon?.shape === shape?.rectangleRound}
224
272
  isCapsule={product?.ribbon?.shape === shape?.capsuleShape}
225
273
  >
226
274
  <OText
227
- size={10}
275
+ size={textSize}
228
276
  weight={'400'}
229
- color={theme.colors.white}
277
+ color={lightenDarkenColor(product?.ribbon?.color) ? theme.colors.black : theme.colors.white}
230
278
  numberOfLines={2}
231
279
  ellipsizeMode='tail'
232
280
  lineHeight={13}
@@ -235,21 +283,16 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
235
283
  </OText>
236
284
  </RibbonBox>
237
285
  )}
238
- {product?.images ? (
239
- <FastImage
240
- style={styles.productStyle}
241
- source={{
242
- uri: optimizeImage(product?.images, 'h_250,c_limit'),
243
- priority: FastImage.priority.normal,
244
- }}
245
- resizeMode={FastImage.resizeMode.cover}
246
- />
247
- ) : (
248
- <OIcon
249
- src={theme?.images?.dummies?.product}
250
- style={styles.productStyle}
251
- />
252
- )}
286
+ {!hideProductLogo && (
287
+ <FastImage
288
+ style={styles.productStyle}
289
+ source={product?.images ? {
290
+ uri: optimizeImage(product?.images, 'h_250,c_limit'),
291
+ priority: FastImage.priority.normal,
292
+ } : theme?.images?.dummies?.product}
293
+ resizeMode={FastImage.resizeMode.cover}
294
+ />
295
+ )}
253
296
  </LogoWrapper>
254
297
 
255
298
  {(isSoldOut || maxProductQuantity <= 0) && (
@@ -267,6 +310,7 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
267
310
  width: '100%',
268
311
  borderRadius: 7.6,
269
312
  marginTop: 10,
313
+ height: 40
270
314
 
271
315
  }}
272
316
  bgColor={isSoldOut ? '#B8B8B8' : theme?.colors?.white}
@@ -275,7 +319,7 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
275
319
  text={t('ADD', 'Add')}
276
320
  />
277
321
  )}
278
- </CardContainer>
322
+ </CardAnimation>
279
323
  ) : (
280
324
  <View style={{ marginBottom: 28, padding: 12, height: hideAddButton ? 125 : 165 }}>
281
325
  <Placeholder style={{ padding: 5 }} Animation={Fade}>
@@ -1,17 +1,9 @@
1
1
  import styled, { css } from 'styled-components/native'
2
2
 
3
- export const CardContainer = styled.TouchableOpacity`
4
- flex: 1;
5
- flex-direction: ${(props : any) => props.showAddButton ? 'column' : 'row'};
6
- justify-content: space-between;
7
- align-items: center;
8
- padding: 12px;
9
- border-radius: 10px;
10
- position: relative;
11
- `
12
3
  export const CardInfo = styled.View`
13
4
  padding-start: 3px;
14
5
  flex: 1;
6
+ min-height: 85px;
15
7
  `
16
8
  export const SoldOut = styled.View`
17
9
  position: absolute;
@@ -26,15 +18,32 @@ export const QuantityContainer = styled.View`
26
18
  background: ${({ theme }: any) => theme.colors.primary};
27
19
  align-items: center;
28
20
  justify-content: center;
21
+ ${({ businessSingleId }: any) => businessSingleId ? css`
22
+ left: 0;
23
+ ` : css`
24
+ right: 0;
25
+ `}
29
26
  `
30
27
  export const PricesContainer = styled.View`
31
28
  flex-direction: row;
32
29
  align-items: center;
30
+ margin-vertical: 6px;
33
31
  `
34
32
 
35
33
  export const LogoWrapper = styled.View`
36
34
  position: relative;
37
- margin-left: 12px;
35
+ margin-left: ${(props) => !props.logoPosition || props.logoPosition === 'right' ? '12px' : '0px'};
36
+ margin-right: ${(props) => props.logoPosition === 'right' ? '0px' : '12px'};
37
+ `
38
+ export const WrapTags = styled.View`
39
+ display: flex;
40
+ flex-direction: row;
41
+ justify-content: flex-start;
42
+ margin-left: 10px;
43
+ `
44
+ export const TagsContainer = styled.View`
45
+ display: flex;
46
+ margin: auto;
38
47
  `
39
48
 
40
49
  export const RibbonBox = styled.View`
@@ -45,16 +54,21 @@ export const RibbonBox = styled.View`
45
54
  background-color: ${(props: any) => props.theme.colors.primary};
46
55
  padding: 1px 8px;
47
56
  max-width: 60px;
48
-
49
57
  ${(props: any) => props.bgColor && css`
50
58
  background-color: ${props.bgColor};
51
59
  `}
52
-
53
60
  ${(props: any) => props.isRoundRect && css`
54
61
  border-radius: 7.6px;
55
62
  `}
56
-
57
63
  ${(props: any) => props.isCapsule && css`
58
64
  border-radius: 50px;
59
65
  `}
66
+
67
+ ${(props: any) => props.colorText && css`
68
+ color: ${props.colorText ? 'black' : 'white'};
69
+ `}
70
+
71
+ ${(props: any) => props.borderRibbon && css`
72
+ border: 1px solid ${props.borderRibbon ? 'black' : 'white'};
73
+ `}
60
74
  `
@@ -64,6 +64,12 @@ export const SingleProductReview = (props: SingleProductReviewParams) => {
64
64
  return found
65
65
  }
66
66
 
67
+ const handleChangeQualification = (index: number) => {
68
+ if (qualification === index) return
69
+ setQualification(index)
70
+ setComments([])
71
+ }
72
+
67
73
  const handleChangeComment = (commentItem: any) => {
68
74
  const found = comments.find((comment: any) => comment?.key === commentItem.key)
69
75
  if (found) {
@@ -132,11 +138,11 @@ export const SingleProductReview = (props: SingleProductReviewParams) => {
132
138
  <LikeHandsActionContainer>
133
139
  <LikeHandsButton
134
140
  isLike
135
- onPress={() => setQualification(5)}
141
+ onPress={() => handleChangeQualification(5)}
136
142
  >
137
143
  <AntDesignIcons name='like2' size={20} color={qualification === 5 ? theme.colors.primary : theme.colors.lightGray} />
138
144
  </LikeHandsButton>
139
- <LikeHandsButton onPress={() => setQualification(1)}>
145
+ <LikeHandsButton onPress={() => handleChangeQualification(1)}>
140
146
  <AntDesignIcons name='dislike2' size={20} color={qualification === 1 ? theme.colors.primary : theme.colors.lightGray} />
141
147
  </LikeHandsButton>
142
148
  </LikeHandsActionContainer>
@@ -19,7 +19,7 @@ export const LogoWrapper = styled.View`
19
19
  shadowRadius: 3;
20
20
  shadowOffset: { width: 1, height: 4 };
21
21
  elevation: 3;
22
- borderRadius: 8;
22
+ border-radius: 8;
23
23
  shadowOpacity: 0.1;
24
24
  overflow: hidden;
25
25
  width: 80;
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { useEffect } from 'react';
2
2
  import { View, StyleSheet, ScrollView } from 'react-native';
3
3
  import {
4
4
  PaymentOptionStripe,
@@ -25,6 +25,7 @@ const StripeCardsListUI = (props: any) => {
25
25
  cardSelected,
26
26
  cardsList,
27
27
  handleCardClick,
28
+ setAddCardOpen
28
29
  } = props;
29
30
 
30
31
  const theme = useTheme();
@@ -37,6 +38,12 @@ const StripeCardsListUI = (props: any) => {
37
38
  onSelectCard(card);
38
39
  }
39
40
 
41
+ useEffect(() => {
42
+ if (!cardsList && !cardsList?.loading && cardsList?.cards?.length === 0) {
43
+ setAddCardOpen(true)
44
+ }
45
+ }, [cardsList?.loading])
46
+
40
47
  return (
41
48
  <>
42
49
  {token && !cardsList.loading && cardsList.cards && cardsList.cards.length === 0 && (
@@ -128,7 +135,7 @@ const styles = StyleSheet.create({
128
135
  },
129
136
  cardsList: {
130
137
  width: '100%',
131
- maxHeight: 130
138
+ maxHeight: 150
132
139
  },
133
140
  })
134
141
 
@@ -28,7 +28,12 @@ const StripeElementsFormUI = (props: any) => {
28
28
  onCancel,
29
29
  cart,
30
30
  merchantId,
31
- businessIds
31
+ businessIds,
32
+ setMethodPaySupported,
33
+ placeByMethodPay,
34
+ methodPaySupported,
35
+ setPlaceByMethodPay,
36
+ cartTotal
32
37
  } = props;
33
38
 
34
39
  const theme = useTheme();
@@ -62,24 +67,24 @@ const StripeElementsFormUI = (props: any) => {
62
67
 
63
68
  if (user?.address) {
64
69
  billingDetails.address = {
65
- line1: user?.address
66
- }
70
+ line1: user?.address
71
+ }
67
72
  }
68
73
 
69
74
  const createPayMethod = async () => {
70
75
  const params: any = { paymentMethodType: 'Card', paymentMethodData: {} }
71
76
  if (Object.keys(billingDetails).length > 0) {
72
- params.paymentMethodData.billingDetails = {...billingDetails, token: card?.last4}
77
+ params.paymentMethodData.billingDetails = { ...billingDetails, token: card?.last4 }
73
78
  }
74
79
  try {
75
80
  setCreatePmLoading(true)
76
81
  const { paymentMethod, error } = await createPaymentMethod(params);
77
82
 
78
- if (error) {
79
- setErrors(error?.message);
80
- setCreatePmLoading(false)
81
- return
82
- }
83
+ if (error) {
84
+ setErrors(error?.message);
85
+ setCreatePmLoading(false)
86
+ return
87
+ }
83
88
 
84
89
  setCreatePmLoading(false)
85
90
  handleSource && handleSource({
@@ -102,7 +107,7 @@ const StripeElementsFormUI = (props: any) => {
102
107
  setErrors(error?.message || error?.toString());
103
108
  }
104
109
  }
105
-
110
+
106
111
  const handleSaveCard = async () => {
107
112
  setErrors('');
108
113
  if (!requirements) {
@@ -111,7 +116,7 @@ const StripeElementsFormUI = (props: any) => {
111
116
  }
112
117
  const params: any = { paymentMethodType: 'Card', paymentMethodData: {} }
113
118
  if (Object.keys(billingDetails).length > 0) {
114
- params.paymentMethodData.billingDetails = {...billingDetails, token: card?.last4}
119
+ params.paymentMethodData.billingDetails = { ...billingDetails, token: card?.last4 }
115
120
  }
116
121
  try {
117
122
  const { setupIntent, error } = await confirmSetupIntent(requirements, params);
@@ -119,8 +124,8 @@ const StripeElementsFormUI = (props: any) => {
119
124
  if (setupIntent?.status === 'Succeeded') {
120
125
  if (businessIds) {
121
126
  businessIds.forEach((_businessId: any, index: any) => {
122
- const _isNewCard = index === 0
123
- stripeTokenHandler(setupIntent?.paymentMethodId, user, businessId, _isNewCard);
127
+ const _isNewCard = index === 0
128
+ stripeTokenHandler(setupIntent?.paymentMethodId, user, businessId, _isNewCard);
124
129
  })
125
130
  } else {
126
131
  stripeTokenHandler(setupIntent?.paymentMethodId, user, businessId);
@@ -172,12 +177,12 @@ const StripeElementsFormUI = (props: any) => {
172
177
  }, []);
173
178
 
174
179
  return (
175
- <View style={{ ...styles.container, height: height - top - bottom - 60 - (isKeyboardShow ? 250 : 0) }}>
180
+ <View style={{ ...styles.container, height: methodsPay?.includes(paymethod) ? 'auto' : height - top - bottom - 60 - (isKeyboardShow ? 250 : 0) }}>
176
181
  {publicKey ? (
177
182
  <View style={{ flex: 1 }}>
178
183
  <StripeProvider
179
184
  publishableKey={publicKey}
180
- merchantIdentifier={`merchant.${merchantId}`}
185
+ merchantIdentifier={merchantId}
181
186
  urlScheme={merchantId}
182
187
  >
183
188
  {methodsPay?.includes(paymethod) ? (
@@ -185,9 +190,14 @@ const StripeElementsFormUI = (props: any) => {
185
190
  handleSource={handleSource}
186
191
  onCancel={onCancel}
187
192
  cart={cart}
193
+ cartTotal={cartTotal}
188
194
  setErrors={setErrors}
189
195
  paymethod={paymethod}
190
196
  devMode={publicKey?.includes('test')}
197
+ setMethodPaySupported={setMethodPaySupported}
198
+ placeByMethodPay={placeByMethodPay}
199
+ methodPaySupported={methodPaySupported}
200
+ setPlaceByMethodPay={setPlaceByMethodPay}
191
201
  />
192
202
  ) : (
193
203
  <CardField
@@ -195,6 +205,9 @@ const StripeElementsFormUI = (props: any) => {
195
205
  cardStyle={{
196
206
  backgroundColor: '#FFFFFF',
197
207
  textColor: '#000000',
208
+ borderWidth: 1,
209
+ borderRadius: 8,
210
+ borderColor: theme.colors.border
198
211
  }}
199
212
  style={{
200
213
  width: '100%',