ordering-ui-react-native 0.15.62 → 0.15.64-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 (213) hide show
  1. package/package.json +7 -3
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/AddressForm/index.tsx +18 -2
  4. package/src/components/BusinessBasicInformation/index.tsx +11 -19
  5. package/src/components/BusinessController/index.tsx +16 -8
  6. package/src/components/BusinessInformation/index.tsx +14 -0
  7. package/src/components/BusinessTypeFilter/index.tsx +1 -2
  8. package/src/components/BusinessesListing/index.tsx +1 -1
  9. package/src/components/Checkout/index.tsx +23 -2
  10. package/src/components/DriverTips/index.tsx +11 -6
  11. package/src/components/LanguageSelector/index.tsx +6 -2
  12. package/src/components/LoginForm/index.tsx +120 -30
  13. package/src/components/LoginForm/styles.tsx +6 -0
  14. package/src/components/OrderDetails/index.tsx +7 -21
  15. package/src/components/PaymentOptions/index.tsx +67 -50
  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 -1
  19. package/src/components/ReviewProducts/index.tsx +11 -0
  20. package/src/components/SignupForm/index.tsx +145 -61
  21. package/src/components/SingleProductCard/index.tsx +16 -4
  22. package/src/components/SingleProductReview/index.tsx +1 -1
  23. package/src/components/StripeMethodForm/index.tsx +22 -24
  24. package/src/components/UpsellingProducts/index.tsx +1 -1
  25. package/src/components/UserProfileForm/index.tsx +63 -6
  26. package/src/components/UserProfileForm/styles.tsx +8 -0
  27. package/src/components/VerifyPhone/styles.tsx +1 -2
  28. package/src/components/shared/OModal.tsx +1 -1
  29. package/src/hooks/useCountdownTimer.tsx +26 -0
  30. package/src/navigators/CheckoutNavigator.tsx +6 -0
  31. package/src/navigators/HomeNavigator.tsx +12 -0
  32. package/src/pages/BusinessesListing.tsx +7 -6
  33. package/src/pages/MultiCheckout.tsx +31 -0
  34. package/src/pages/MultiOrdersDetails.tsx +27 -0
  35. package/src/pages/OrderDetails.tsx +1 -1
  36. package/src/pages/ReviewDriver.tsx +2 -2
  37. package/src/pages/ReviewOrder.tsx +2 -2
  38. package/src/pages/Sessions.tsx +22 -0
  39. package/src/theme.json +0 -1
  40. package/src/types/index.tsx +18 -11
  41. package/src/utils/index.tsx +68 -1
  42. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +103 -15
  43. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +6 -0
  44. package/themes/business/src/components/Chat/index.tsx +42 -90
  45. package/themes/business/src/components/DriverMap/index.tsx +6 -5
  46. package/themes/business/src/components/LoginForm/index.tsx +89 -2
  47. package/themes/business/src/components/LoginForm/styles.tsx +6 -0
  48. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  49. package/themes/business/src/components/NewOrderNotification/index.tsx +26 -13
  50. package/themes/business/src/components/OrderDetails/Business.tsx +2 -2
  51. package/themes/business/src/components/OrderDetails/Delivery.tsx +28 -11
  52. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +14 -7
  53. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +6 -0
  54. package/themes/business/src/components/OrdersListManager/index.tsx +1 -1
  55. package/themes/business/src/components/OrdersOption/index.tsx +8 -4
  56. package/themes/business/src/components/PreviousOrders/index.tsx +7 -7
  57. package/themes/business/src/components/ProductItemAccordion/index.tsx +2 -2
  58. package/themes/business/src/components/UserFormDetails/index.tsx +5 -2
  59. package/themes/business/src/components/UserProfileForm/index.tsx +2 -0
  60. package/themes/business/src/components/shared/OModal.tsx +1 -1
  61. package/themes/business/src/types/index.tsx +8 -2
  62. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  63. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  64. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  65. package/themes/kiosk/src/components/BusinessMenu/index.tsx +39 -28
  66. package/themes/kiosk/src/components/BusinessesListing/index.tsx +2 -3
  67. package/themes/kiosk/src/components/Cart/index.tsx +11 -12
  68. package/themes/kiosk/src/components/CartBottomSheet/index.tsx +9 -2
  69. package/themes/kiosk/src/components/CartContent/index.tsx +0 -11
  70. package/themes/kiosk/src/components/CartItem/index.tsx +4 -3
  71. package/themes/kiosk/src/components/CategoriesMenu/index.tsx +107 -62
  72. package/themes/kiosk/src/components/Checkout/index.tsx +40 -22
  73. package/themes/kiosk/src/components/CustomerName/index.tsx +0 -6
  74. package/themes/kiosk/src/components/DrawerView/index.tsx +1 -0
  75. package/themes/kiosk/src/components/DrawerView/styles.tsx +2 -2
  76. package/themes/kiosk/src/components/NavBar/index.tsx +29 -20
  77. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  78. package/themes/kiosk/src/components/OrderDetails/index.tsx +32 -27
  79. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +9 -11
  80. package/themes/kiosk/src/components/PaymentOptions/index.tsx +56 -54
  81. package/themes/kiosk/src/components/ProductForm/index.tsx +7 -8
  82. package/themes/kiosk/src/components/ProductItemAccordion/index.tsx +2 -2
  83. package/themes/kiosk/src/components/ProductOption/index.tsx +1 -1
  84. package/themes/kiosk/src/components/ProductOptionSubOption/index.tsx +3 -1
  85. package/themes/kiosk/src/components/UpsellingProducts/index.tsx +16 -5
  86. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  87. package/themes/kiosk/src/types/index.d.ts +1 -0
  88. package/themes/original/index.tsx +30 -8
  89. package/themes/original/src/components/ActiveOrders/index.tsx +15 -132
  90. package/themes/original/src/components/ActiveOrders/styles.tsx +0 -54
  91. package/themes/original/src/components/AddressForm/index.tsx +7 -6
  92. package/themes/original/src/components/AddressList/index.tsx +30 -18
  93. package/themes/original/src/components/AppleLogin/index.tsx +7 -12
  94. package/themes/original/src/components/BusinessBasicInformation/index.tsx +305 -159
  95. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +6 -2
  96. package/themes/original/src/components/BusinessController/index.tsx +168 -96
  97. package/themes/original/src/components/BusinessController/styles.tsx +5 -0
  98. package/themes/original/src/components/BusinessItemAccordion/index.tsx +8 -5
  99. package/themes/original/src/components/BusinessItemAccordion/styles.tsx +3 -1
  100. package/themes/original/src/components/BusinessListingSearch/index.tsx +231 -63
  101. package/themes/original/src/components/BusinessListingSearch/styles.tsx +22 -2
  102. package/themes/original/src/components/BusinessPreorder/index.tsx +1 -1
  103. package/themes/original/src/components/BusinessProductsCategories/index.tsx +2 -2
  104. package/themes/original/src/components/BusinessProductsList/CategoryDescription/index.tsx +44 -0
  105. package/themes/original/src/components/BusinessProductsList/index.tsx +51 -52
  106. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  107. package/themes/original/src/components/BusinessProductsListing/index.tsx +317 -155
  108. package/themes/original/src/components/BusinessProductsListing/styles.tsx +32 -0
  109. package/themes/original/src/components/BusinessReviews/index.tsx +6 -1
  110. package/themes/original/src/components/BusinessTypeFilter/index.tsx +106 -39
  111. package/themes/original/src/components/BusinessTypeFilter/styles.tsx +2 -0
  112. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +560 -0
  113. package/themes/original/src/components/BusinessesListing/{styles.tsx → Layout/Appointment/styles.tsx} +24 -2
  114. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +679 -0
  115. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +137 -0
  116. package/themes/original/src/components/BusinessesListing/index.tsx +99 -458
  117. package/themes/original/src/components/Cart/index.tsx +62 -43
  118. package/themes/original/src/components/Checkout/index.tsx +90 -39
  119. package/themes/original/src/components/DriverTips/index.tsx +17 -12
  120. package/themes/original/src/components/Favorite/index.tsx +92 -0
  121. package/themes/original/src/components/Favorite/styles.tsx +22 -0
  122. package/themes/original/src/components/FavoriteList/index.tsx +298 -0
  123. package/themes/original/src/components/FavoriteList/styles.tsx +5 -0
  124. package/themes/original/src/components/ForgotPasswordForm/index.tsx +84 -4
  125. package/themes/original/src/components/GPSButton/index.tsx +15 -8
  126. package/themes/original/src/components/GoogleMap/index.tsx +11 -11
  127. package/themes/original/src/components/Help/index.tsx +21 -4
  128. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +18 -1
  129. package/themes/original/src/components/LastOrders/index.tsx +12 -1
  130. package/themes/original/src/components/LoginForm/Otp/index.tsx +91 -0
  131. package/themes/original/src/components/LoginForm/Otp/styles.tsx +7 -0
  132. package/themes/original/src/components/LoginForm/index.tsx +332 -164
  133. package/themes/original/src/components/LoginForm/styles.tsx +1 -3
  134. package/themes/original/src/components/MessageListing/index.tsx +10 -1
  135. package/themes/original/src/components/Messages/index.tsx +1 -1
  136. package/themes/original/src/components/MomentOption/index.tsx +10 -1
  137. package/themes/original/src/components/MomentOption/styles.tsx +1 -1
  138. package/themes/original/src/components/MomentSelector/index.tsx +197 -0
  139. package/themes/original/src/components/MomentSelector/styles.tsx +6 -0
  140. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +243 -0
  141. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/styles.tsx +46 -0
  142. package/themes/original/src/components/MultiCheckout/index.tsx +298 -0
  143. package/themes/original/src/components/MultiCheckout/styles.tsx +59 -0
  144. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +372 -0
  145. package/themes/original/src/components/MultiOrdersDetails/index.tsx +258 -0
  146. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +50 -0
  147. package/themes/original/src/components/MyOrders/index.tsx +120 -32
  148. package/themes/original/src/components/MyOrders/styles.tsx +8 -1
  149. package/themes/original/src/components/NavBar/index.tsx +4 -4
  150. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +167 -0
  151. package/themes/original/src/components/OrderDetails/index.tsx +151 -65
  152. package/themes/original/src/components/OrderDetails/styles.tsx +1 -2
  153. package/themes/original/src/components/OrderSummary/index.tsx +6 -6
  154. package/themes/original/src/components/OrderTypeSelector/index.tsx +79 -35
  155. package/themes/original/src/components/OrderTypeSelector/styles.tsx +19 -1
  156. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +153 -0
  157. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/styles.tsx +6 -0
  158. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +53 -0
  159. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/styles.tsx +6 -0
  160. package/themes/original/src/components/OrdersOption/index.tsx +137 -38
  161. package/themes/original/src/components/OrdersOption/styles.tsx +4 -1
  162. package/themes/original/src/components/PaymentOptionCash/index.tsx +2 -2
  163. package/themes/original/src/components/PaymentOptionWallet/index.tsx +17 -23
  164. package/themes/original/src/components/PaymentOptionWallet/styles.tsx +1 -1
  165. package/themes/original/src/components/PaymentOptions/index.tsx +58 -37
  166. package/themes/original/src/components/PhoneInputNumber/index.tsx +5 -11
  167. package/themes/original/src/components/PreviousOrders/index.tsx +18 -147
  168. package/themes/original/src/components/ProductForm/index.tsx +718 -679
  169. package/themes/original/src/components/ProductForm/styles.tsx +6 -2
  170. package/themes/original/src/components/ProductItemAccordion/index.tsx +2 -2
  171. package/themes/original/src/components/ProductOption/index.tsx +1 -1
  172. package/themes/original/src/components/ProductOptionSubOption/index.tsx +18 -12
  173. package/themes/original/src/components/ProfessionalFilter/index.tsx +128 -0
  174. package/themes/original/src/components/ProfessionalFilter/styles.tsx +0 -0
  175. package/themes/original/src/components/ProfessionalProfile/index.tsx +298 -0
  176. package/themes/original/src/components/ProfessionalProfile/styles.tsx +46 -0
  177. package/themes/original/src/components/Promotions/index.tsx +151 -133
  178. package/themes/original/src/components/Promotions/styles.tsx +3 -23
  179. package/themes/original/src/components/ReviewDriver/index.tsx +6 -6
  180. package/themes/original/src/components/ReviewOrder/index.tsx +1 -1
  181. package/themes/original/src/components/ReviewTrigger/index.tsx +118 -0
  182. package/themes/original/src/components/ReviewTrigger/styles.tsx +34 -0
  183. package/themes/original/src/components/SearchBar/index.tsx +13 -5
  184. package/themes/original/src/components/ServiceForm/index.tsx +579 -0
  185. package/themes/original/src/components/ServiceForm/styles.tsx +50 -0
  186. package/themes/original/src/components/Sessions/index.tsx +160 -0
  187. package/themes/original/src/components/Sessions/styles.tsx +15 -0
  188. package/themes/original/src/components/SignupForm/index.tsx +237 -126
  189. package/themes/original/src/components/SingleOrderCard/index.tsx +275 -0
  190. package/themes/original/src/components/SingleOrderCard/styles.tsx +54 -0
  191. package/themes/original/src/components/SingleProductCard/index.tsx +161 -88
  192. package/themes/original/src/components/SingleProductCard/styles.tsx +2 -2
  193. package/themes/original/src/components/StripeElementsForm/index.tsx +16 -8
  194. package/themes/original/src/components/StripeElementsForm/naked.tsx +2 -2
  195. package/themes/original/src/components/UpsellingProducts/index.tsx +86 -74
  196. package/themes/original/src/components/UserDetails/index.tsx +15 -81
  197. package/themes/original/src/components/UserFormDetails/index.tsx +98 -66
  198. package/themes/original/src/components/UserProfile/index.tsx +11 -2
  199. package/themes/original/src/components/UserProfileForm/index.tsx +33 -22
  200. package/themes/original/src/components/UserVerification/index.tsx +178 -192
  201. package/themes/original/src/components/VerifyPhone/index.tsx +10 -7
  202. package/themes/original/src/components/VerifyPhone/styles.tsx +2 -1
  203. package/themes/original/src/components/Wallets/index.tsx +76 -9
  204. package/themes/original/src/components/Wallets/styles.tsx +21 -0
  205. package/themes/original/src/components/shared/OBottomPopup.tsx +44 -13
  206. package/themes/original/src/components/shared/OButton.tsx +2 -0
  207. package/themes/original/src/components/shared/OInput.tsx +3 -2
  208. package/themes/original/src/components/shared/OModal.tsx +4 -2
  209. package/themes/original/src/layouts/FloatingBottomContainer.tsx +5 -1
  210. package/themes/original/src/types/index.tsx +187 -35
  211. package/themes/original/src/utils/index.tsx +96 -2
  212. package/themes/single-business/src/components/OrderTypeSelector/index.tsx +1 -1
  213. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -1,6 +1,6 @@
1
1
  import React, { useEffect, useState } from 'react';
2
2
  import { Platform, Text, StyleSheet } from 'react-native';
3
- import { useApi, useSession, useLanguage, useConfig, useToast, ToastType } from 'ordering-components/native';
3
+ import { useApi, useSession, useLanguage, useConfig } from 'ordering-components/native';
4
4
  import { appleAuthAndroid, appleAuth } from '@invertase/react-native-apple-authentication';
5
5
  import uuid from 'react-native-uuid';
6
6
  import Icon from 'react-native-vector-icons/FontAwesome5';
@@ -19,14 +19,13 @@ export const AppleLogin = (props: any) => {
19
19
  const [{ auth }] = useSession();
20
20
  const [, t] = useLanguage();
21
21
  const [{ configs }] = useConfig();
22
- const [, {showToast}] = useToast()
23
22
  const [credentialStateForUser, updateCredentialStateForUser] = useState<any>(-1);
24
23
 
25
- let user : any= null
24
+ let user: any = null
26
25
 
27
26
  const buttonText = auth
28
27
  ? t('CONTINUE_WITH_APPLE', 'Logout with Apple')
29
- : t('CONTINUE_WITH_FACEBOOK', 'Continue with Apple');
28
+ : t('CONTINUE_WITH_APPLE', 'Continue with Apple');
30
29
 
31
30
  const performAppleLogin = async (code: string) => {
32
31
  try {
@@ -45,7 +44,7 @@ export const AppleLogin = (props: any) => {
45
44
  handleLoading && handleLoading(false)
46
45
  }
47
46
  } else {
48
- showToast(ToastType.Error, `Error login on apple from api Code: ${code} ${Platform.OS}`, 10000)
47
+ handleErrors && handleErrors(result)
49
48
  handleLoading && handleLoading(false)
50
49
  }
51
50
  } catch (err: any) {
@@ -54,7 +53,7 @@ export const AppleLogin = (props: any) => {
54
53
  }
55
54
  }
56
55
 
57
- const fetchAndUpdateCredentialState = async (updateCredentialStateForUser : any) => {
56
+ const fetchAndUpdateCredentialState = async (updateCredentialStateForUser: any) => {
58
57
  if (user === null) {
59
58
  updateCredentialStateForUser('N/A');
60
59
  } else {
@@ -67,7 +66,7 @@ export const AppleLogin = (props: any) => {
67
66
  }
68
67
  }
69
68
 
70
- const onIOSButtonPress = async (updateCredentialStateForUser : any) => {
69
+ const onIOSButtonPress = async (updateCredentialStateForUser: any) => {
71
70
  try {
72
71
  const appleAuthRequestResponse = await appleAuth.performRequest({
73
72
  requestedOperation: appleAuth.Operation.LOGIN,
@@ -80,7 +79,7 @@ export const AppleLogin = (props: any) => {
80
79
  identityToken,
81
80
  authorizationCode
82
81
  } = appleAuthRequestResponse;
83
-
82
+
84
83
  user = newUser;
85
84
 
86
85
  fetchAndUpdateCredentialState(updateCredentialStateForUser).catch(error =>
@@ -88,7 +87,6 @@ export const AppleLogin = (props: any) => {
88
87
  );
89
88
 
90
89
  if (identityToken && authorizationCode) {
91
- showToast(ToastType.Success, `Apple Authentication Completed, ${email}`)
92
90
  performAppleLogin(authorizationCode)
93
91
  } else {
94
92
  handleErrors && handleErrors('UNABLE_LOGIN_TOKEN', 'Unable to login, no token found')
@@ -158,9 +156,6 @@ export const AppleLogin = (props: any) => {
158
156
 
159
157
  return (
160
158
  <Container>
161
- {credentialStateForUser !== -1 && (
162
- <Text>{credentialStateForUser}</Text>
163
- )}
164
159
  {canShowButton() &&
165
160
  <AppleButton
166
161
  onPress={() => Platform.OS == 'android' ? onAndroidButtonPress() : onIOSButtonPress(updateCredentialStateForUser)}
@@ -1,10 +1,11 @@
1
1
  import React, { useState, useEffect } from 'react';
2
- import { StyleSheet, View, TouchableOpacity } from 'react-native';
3
- import { useUtils, useOrder, useLanguage } from 'ordering-components/native';
2
+ import { StyleSheet, View, TouchableOpacity, Linking, Pressable } from 'react-native';
3
+ import { useUtils, useOrder, useLanguage, useOrderingTheme } from 'ordering-components/native';
4
4
  import { useTheme } from 'styled-components/native';
5
5
  import { OIcon, OText, OModal } from '../shared';
6
6
  import { BusinessBasicInformationParams } from '../../types';
7
- import { convertHoursToMinutes } from '../../utils';
7
+ import { convertHoursToMinutes, shape } from '../../utils';
8
+ import MaterialComIcon from 'react-native-vector-icons/MaterialCommunityIcons'
8
9
  import dayjs from 'dayjs';
9
10
  import timezone from 'dayjs/plugin/timezone';
10
11
  import isBetween from 'dayjs/plugin/isBetween';
@@ -21,7 +22,8 @@ import {
21
22
  WrapReviews,
22
23
  WrapBusinessInfo,
23
24
  TitleWrapper,
24
- RibbonBox
25
+ RibbonBox,
26
+ SocialListWrapper
25
27
  } from './styles';
26
28
  import { Fade, Placeholder, PlaceholderLine } from 'rn-placeholder';
27
29
  const types = ['food', 'laundry', 'alcohol', 'groceries'];
@@ -36,6 +38,7 @@ export const BusinessBasicInformation = (
36
38
  const { business, loading } = businessState;
37
39
 
38
40
  const theme = useTheme();
41
+ const [orderingTheme] = useOrderingTheme()
39
42
  const [orderState] = useOrder();
40
43
  const [, t] = useLanguage();
41
44
  const [{ parsePrice, parseDistance, optimizeImage }] = useUtils();
@@ -43,6 +46,77 @@ export const BusinessBasicInformation = (
43
46
  const [openBusinessReviews, setOpenBusinessReviews] = useState(false);
44
47
  const [businessInformationObtained, setBusinessInformationObtained] = useState(false)
45
48
  const [businessReviewsObtained, setBusinessReviewsObtainedbtained] = useState(false)
49
+ const isChewLayout = orderingTheme?.theme?.business_view?.components?.header?.components?.layout?.type === 'chew'
50
+ const showLogo = !orderingTheme?.theme?.business_view?.components?.header?.components?.business?.components?.logo?.hidden
51
+
52
+ const styles = StyleSheet.create({
53
+ businesInfoheaderStyle: {
54
+ height: 150,
55
+ },
56
+ headerStyle: {
57
+ height: isChewLayout ? 170 : 260,
58
+ },
59
+ businessLogo: {
60
+ width: 72,
61
+ height: 72,
62
+ borderRadius: 7.6,
63
+ justifyContent: 'flex-start',
64
+ alignItems: 'flex-start',
65
+ },
66
+ businessInfo: {
67
+ paddingHorizontal: 40,
68
+ paddingTop: isChewLayout ? 0 : 56,
69
+ },
70
+ bullet: {
71
+ flexDirection: 'row',
72
+ alignItems: 'center',
73
+ },
74
+ metadata: {
75
+ marginRight: 2,
76
+ },
77
+ starIcon: {
78
+ marginHorizontal: 5,
79
+ },
80
+ reviewStyle: {
81
+ flexDirection: 'row',
82
+ alignItems: 'center',
83
+ justifyContent: 'center'
84
+ },
85
+ modalTitleSectionStyle: {
86
+ position: 'absolute',
87
+ width: '100%',
88
+ top: 0,
89
+ zIndex: 100,
90
+ left: 40
91
+ },
92
+ socialIcon: {
93
+ borderRadius: 3,
94
+ borderColor: theme.colors.border,
95
+ borderWidth: isChewLayout ? 0 : 1,
96
+ width: 20,
97
+ height: 20,
98
+ justifyContent: 'center',
99
+ alignItems: 'center',
100
+ marginRight: 5,
101
+ marginBottom: 7
102
+ },
103
+ tiktokIcon: {
104
+ height: 12,
105
+ width: 12,
106
+ margin: 0,
107
+ padding: 0
108
+ },
109
+ headerChewStyle: {
110
+ paddingHorizontal: 30,
111
+ justifyContent: 'center',
112
+ height: '100%'
113
+ },
114
+ socialIconsChewContainer: {
115
+ flexDirection: 'row',
116
+ justifyContent: 'flex-start',
117
+ marginTop: 5
118
+ }
119
+ });
46
120
 
47
121
  const handleClickBusinessInformation = () => {
48
122
  if (!businessInformationObtained) {
@@ -73,6 +147,19 @@ export const BusinessBasicInformation = (
73
147
  return _types.join(', ');
74
148
  };
75
149
 
150
+ const SocialNetWork = (props: any) => {
151
+ const { socialLink, iconTitle } = props
152
+
153
+ return (
154
+ <TouchableOpacity style={styles.socialIcon} onPress={() => Linking.openURL(socialLink)}>
155
+ <MaterialComIcon
156
+ name={iconTitle}
157
+ color={isChewLayout ? theme.colors.black : theme.colors.textNormal}
158
+ size={isChewLayout ? 18 : 14}
159
+ />
160
+ </TouchableOpacity>
161
+ )
162
+ }
76
163
 
77
164
  useEffect(() => {
78
165
  if (businessState?.loading) return
@@ -98,9 +185,83 @@ export const BusinessBasicInformation = (
98
185
  }
99
186
  }, [businessState?.business])
100
187
 
188
+ const SocialIcons = () => {
189
+ return (
190
+ <>
191
+ {loading ? (
192
+ <Placeholder Animation={Fade}>
193
+ <View style={{ flexDirection: 'row' }}>
194
+ {[...Array(5).keys()].map(i => (
195
+ <View style={styles.socialIcon} key={i}>
196
+ <PlaceholderLine width={100} height={20} style={{ marginBottom: 0 }} />
197
+ </View>
198
+ ))}
199
+ </View>
200
+ </Placeholder>
201
+ ) : (
202
+ <SocialListWrapper
203
+ showsVerticalScrollIndicator={false}
204
+ showsHorizontalScrollIndicator={false}
205
+ horizontal
206
+ contentContainerStyle={{ flex: 1 }}
207
+ >
208
+ {!!business?.facebook_profile && (
209
+ <SocialNetWork
210
+ socialLink={business?.facebook_profile}
211
+ iconTitle='facebook'
212
+ />
213
+ )}
214
+ {!!business?.instagram_profile && (
215
+ <SocialNetWork
216
+ socialLink={business?.instagram_profile}
217
+ iconTitle='instagram'
218
+ />
219
+ )}
220
+ {!!business?.tiktok_profile && (
221
+ <Pressable style={styles.socialIcon} onPress={() => Linking.openURL(business?.tiktok_profile)}>
222
+ <View style={styles.tiktokIcon}>
223
+ <OIcon
224
+ src={theme.images.general.tiktok}
225
+ style={{ width: '100%', height: '100%' }}
226
+ />
227
+ </View>
228
+ </Pressable>
229
+ )}
230
+ {!!business?.pinterest_profile && (
231
+ <SocialNetWork
232
+ socialLink={business?.pinterest_profile}
233
+ iconTitle='pinterest'
234
+ />
235
+ )}
236
+ {!!business?.whatsapp_number && (
237
+ <SocialNetWork
238
+ socialLink={business?.whatsapp_number}
239
+ iconTitle='whatsapp'
240
+ />
241
+ )}
242
+ {!!business?.snapchat_profile && (
243
+ <SocialNetWork
244
+ socialLink={business?.snapchat_profile}
245
+ iconTitle='snapchat'
246
+ />
247
+ )}
248
+ {isChewLayout && (
249
+ <TouchableOpacity onPress={() => handleClickBusinessInformation()}>
250
+ <OText style={{textDecorationColor: theme.colors.black, textDecorationLine: 'underline'}}>
251
+ {t('SEE_MORE_DESCRIPTION', 'See more')}
252
+ </OText>
253
+ </TouchableOpacity>
254
+ )}
255
+ </SocialListWrapper>
256
+ )}
257
+ </>
258
+ )
259
+ }
260
+
101
261
  return (
102
- <BusinessContainer>
262
+ <BusinessContainer isChewLayout={isChewLayout && !showLogo}>
103
263
  <BusinessHeader
264
+ isChewLayout={isChewLayout}
104
265
  style={
105
266
  isBusinessInfoShow
106
267
  ? styles.businesInfoheaderStyle
@@ -110,137 +271,164 @@ export const BusinessBasicInformation = (
110
271
  uri:
111
272
  header ||
112
273
  optimizeImage(businessState?.business?.header, 'h_250,c_limit'),
113
- }}>
114
- {!isBusinessInfoShow && (
274
+ }}
275
+ imageStyle={{ opacity: isChewLayout ? 0.5 : 1 }}
276
+ >
277
+ {!isBusinessInfoShow && !isChewLayout && (
115
278
  <WrapBusinessInfo onPress={() => handleClickBusinessInformation()}>
116
279
  <OIcon src={theme.images.general.info} width={24} />
117
280
  </WrapBusinessInfo>
118
281
  )}
282
+ {isChewLayout && (
283
+ <View style={styles.headerChewStyle}>
284
+ <OText size={24} weight={'600'} mBottom={-5}>
285
+ {business?.name}
286
+ </OText>
287
+ {business?.city?.name && (
288
+ <OText>
289
+ {business?.city?.name}
290
+ </OText>
291
+ )}
292
+ <View style={styles.socialIconsChewContainer}>
293
+ <SocialIcons />
294
+ </View>
295
+ </View>
296
+ )}
119
297
  </BusinessHeader>
120
298
  <BusinessInfo style={styles.businessInfo}>
121
- <BusinessLogo>
122
- {loading ? (
123
- <View>
124
- <Placeholder Animation={Fade}>
125
- <PlaceholderLine height={50} width={20} />
126
- </Placeholder>
127
- </View>
128
- ) : (
129
- !isBusinessInfoShow && (
130
- <OIcon
131
- url={
132
- logo ||
133
- optimizeImage(businessState?.business?.logo, 'h_70,c_limit')
134
- }
135
- style={styles.businessLogo}
136
- />
137
- )
138
- )}
139
- </BusinessLogo>
140
- <BusinessInfoItem>
141
- {loading ? (
142
- <Placeholder Animation={Fade}>
143
- <PlaceholderLine height={30} width={20} />
144
- </Placeholder>
145
- ) : (
146
- <TitleWrapper>
147
- <OText size={24} weight={'600'}>
148
- {business?.name}
149
- </OText>
150
- {business?.ribbon?.enabled && (
151
- <RibbonBox
152
- bgColor={business?.ribbon?.color}
153
- isRoundRect={business?.ribbon?.shape === shape?.rectangleRound}
154
- isCapsule={business?.ribbon?.shape === shape?.capsuleShape}
155
- >
156
- <OText
157
- size={10}
158
- weight={'400'}
159
- color={theme.colors.white}
160
- numberOfLines={2}
161
- ellipsizeMode='tail'
162
- lineHeight={13}
163
- >
164
- {business?.ribbon?.text}
299
+ {showLogo && (
300
+ <BusinessLogo isChewLayout={isChewLayout}>
301
+ {loading ? (
302
+ <View>
303
+ <Placeholder Animation={Fade}>
304
+ <PlaceholderLine height={50} width={20} />
305
+ </Placeholder>
306
+ </View>
307
+ ) : (
308
+ !isBusinessInfoShow && (
309
+ <OIcon
310
+ url={
311
+ logo ||
312
+ optimizeImage(businessState?.business?.logo, 'h_70,c_limit')
313
+ }
314
+ style={styles.businessLogo}
315
+ />
316
+ )
317
+ )}
318
+ </BusinessLogo>
319
+ )}
320
+ {!isChewLayout && (
321
+
322
+ <>
323
+ <BusinessInfoItem>
324
+ {loading ? (
325
+ <Placeholder Animation={Fade}>
326
+ <PlaceholderLine height={30} width={20} />
327
+ </Placeholder>
328
+ ) : (
329
+ <TitleWrapper>
330
+ <OText size={24} weight={'600'} numberOfLines={2}>
331
+ {business?.name}
165
332
  </OText>
166
- </RibbonBox>
333
+ {business?.ribbon?.enabled && (
334
+ <RibbonBox
335
+ bgColor={business?.ribbon?.color}
336
+ isRoundRect={business?.ribbon?.shape === shape?.rectangleRound}
337
+ isCapsule={business?.ribbon?.shape === shape?.capsuleShape}
338
+ >
339
+ <OText
340
+ size={10}
341
+ weight={'400'}
342
+ color={theme.colors.white}
343
+ numberOfLines={2}
344
+ ellipsizeMode='tail'
345
+ lineHeight={13}
346
+ >
347
+ {business?.ribbon?.text}
348
+ </OText>
349
+ </RibbonBox>
350
+ )}
351
+ </TitleWrapper>
167
352
  )}
168
- </TitleWrapper>
169
- )}
170
- </BusinessInfoItem>
171
- {loading ? (
172
- <Placeholder Animation={Fade}>
173
- <PlaceholderLine width={10} />
174
- </Placeholder>
175
- ) : (
176
- <View style={{ width: '75%' }}>
177
- <OText color={theme.colors.textNormal}>{getBusinessType()}</OText>
178
- </View>
179
- )}
180
- <View>
181
- <BusinessInfoItem>
182
- {loading && (
353
+ </BusinessInfoItem>
354
+ {loading ? (
183
355
  <Placeholder Animation={Fade}>
184
- <View style={{ flexDirection: 'row' }}>
185
- <PlaceholderLine width={13} style={{ marginRight: 10 }} />
186
- <PlaceholderLine width={13} style={{ marginRight: 10 }} />
187
- <PlaceholderLine width={13} style={{ marginRight: 10 }} />
188
- <PlaceholderLine width={13} />
189
- </View>
356
+ <PlaceholderLine width={10} />
190
357
  </Placeholder>
358
+ ) : (
359
+ <View style={{ width: '75%' }}>
360
+ <OText color={theme.colors.textNormal}>{getBusinessType()}</OText>
361
+ </View>
191
362
  )}
192
- <View style={styles.bullet}>
193
- <OText color={theme.colors.textSecondary} size={12} style={styles.metadata}>
194
- {`${t('DELIVERY_FEE', 'Delivery fee')} ${business && parsePrice(business?.delivery_price || 0)} \u2022 `}
195
- </OText>
196
- {orderState?.options?.type === 1 ? (
197
- <OText color={theme.colors.textSecondary} size={12} style={styles.metadata}>
198
- {convertHoursToMinutes(business?.delivery_time) + ` \u2022 `}
199
- </OText>
200
- ) : (
201
- <OText color={theme.colors.textSecondary} size={12} style={styles.metadata}>
202
- {convertHoursToMinutes(business?.pickup_time) + ` \u2022 `}
203
- </OText>
204
- )}
205
- <OText color={theme.colors.textSecondary} size={12} style={styles.metadata}>
206
- {parseDistance(business?.distance || 0) + ` \u2022 `}
207
- </OText>
208
- </View>
363
+ {!isChewLayout && (
364
+ <SocialIcons />
365
+ )}
366
+ <View>
367
+ <BusinessInfoItem>
368
+ {loading && (
369
+ <Placeholder Animation={Fade}>
370
+ <View style={{ flexDirection: 'row' }}>
371
+ <PlaceholderLine width={13} style={{ marginRight: 10 }} />
372
+ <PlaceholderLine width={13} style={{ marginRight: 10 }} />
373
+ <PlaceholderLine width={13} style={{ marginRight: 10 }} />
374
+ <PlaceholderLine width={13} />
375
+ </View>
376
+ </Placeholder>
377
+ )}
378
+ <View style={styles.bullet}>
379
+ <OText color={theme.colors.textSecondary} size={12} style={styles.metadata}>
380
+ {`${t('DELIVERY_FEE', 'Delivery fee')} ${business && parsePrice(business?.delivery_price || 0)} \u2022 `}
381
+ </OText>
382
+ {orderState?.options?.type === 1 ? (
383
+ <OText color={theme.colors.textSecondary} size={12} style={styles.metadata}>
384
+ {convertHoursToMinutes(business?.delivery_time) + ` \u2022 `}
385
+ </OText>
386
+ ) : (
387
+ <OText color={theme.colors.textSecondary} size={12} style={styles.metadata}>
388
+ {convertHoursToMinutes(business?.pickup_time) + ` \u2022 `}
389
+ </OText>
390
+ )}
391
+ <OText color={theme.colors.textSecondary} size={12} style={styles.metadata}>
392
+ {parseDistance(business?.distance || 0) + ` \u2022 `}
393
+ </OText>
394
+ </View>
209
395
 
210
- <View style={styles.reviewStyle}>
211
- <OIcon
212
- src={theme.images.general.star}
213
- width={14}
214
- color={theme.colors.textSecondary}
215
- style={{ marginTop: -2, marginEnd: 2 }}
216
- />
217
- <OText size={12} color={theme.colors.textSecondary}>
218
- {business?.reviews?.total}
219
- </OText>
396
+ <View style={styles.reviewStyle}>
397
+ <OIcon
398
+ src={theme.images.general.star}
399
+ width={14}
400
+ color={theme.colors.textSecondary}
401
+ style={{ marginTop: -2, marginEnd: 2 }}
402
+ />
403
+ <OText size={12} color={theme.colors.textSecondary}>
404
+ {business?.reviews?.total}
405
+ </OText>
406
+ </View>
407
+ </BusinessInfoItem>
220
408
  </View>
221
- </BusinessInfoItem>
222
- </View>
223
- <WrapReviews>
224
- {!isBusinessInfoShow && (
225
- <>
226
- {isPreOrder && (
409
+ <WrapReviews>
410
+ {!isBusinessInfoShow && (
227
411
  <>
228
- <TouchableOpacity onPress={() => navigation.navigate('BusinessPreorder', { business: businessState?.business, handleBusinessClick: () => navigation?.goBack() })}>
412
+ {isPreOrder && (!business?.professionals || business?.professionals?.length === 0) && (
413
+ <>
414
+ <TouchableOpacity onPress={() => navigation.navigate('BusinessPreorder', { business: businessState?.business, handleBusinessClick: () => navigation?.goBack() })}>
415
+ <OText color={theme.colors.textSecondary} style={{ textDecorationLine: 'underline' }}>
416
+ {t('PRE_ORDER', 'Preorder')}
417
+ </OText>
418
+ </TouchableOpacity>
419
+ <OText size={12} color={theme.colors.textSecondary}>{' \u2022 '}</OText>
420
+ </>
421
+ )}
422
+ <TouchableOpacity onPress={() => handleClickBusinessReviews()}>
229
423
  <OText color={theme.colors.textSecondary} style={{ textDecorationLine: 'underline' }}>
230
- {t('PRE_ORDER', 'Preorder')}
424
+ {t('REVIEWS', 'Reviews')}
231
425
  </OText>
232
426
  </TouchableOpacity>
233
- <OText size={12} color={theme.colors.textSecondary}>{' \u2022 '}</OText>
234
427
  </>
235
428
  )}
236
- <TouchableOpacity onPress={() => handleClickBusinessReviews()}>
237
- <OText color={theme.colors.textSecondary} style={{ textDecorationLine: 'underline' }}>
238
- {t('REVIEWS', 'Reviews')}
239
- </OText>
240
- </TouchableOpacity>
241
- </>
242
- )}
243
- </WrapReviews>
429
+ </WrapReviews>
430
+ </>
431
+ )}
244
432
  </BusinessInfo>
245
433
  {businessInformationObtained ? (
246
434
  <OModal
@@ -276,45 +464,3 @@ export const BusinessBasicInformation = (
276
464
  </BusinessContainer>
277
465
  );
278
466
  };
279
-
280
- const styles = StyleSheet.create({
281
- businesInfoheaderStyle: {
282
- height: 150,
283
- },
284
- headerStyle: {
285
- height: 260,
286
- },
287
- businessLogo: {
288
- width: 72,
289
- height: 72,
290
- borderRadius: 7.6,
291
- justifyContent: 'flex-start',
292
- alignItems: 'flex-start',
293
- },
294
- businessInfo: {
295
- paddingHorizontal: 40,
296
- paddingTop: 56,
297
- },
298
- bullet: {
299
- flexDirection: 'row',
300
- alignItems: 'center',
301
- },
302
- metadata: {
303
- marginRight: 2,
304
- },
305
- starIcon: {
306
- marginHorizontal: 5,
307
- },
308
- reviewStyle: {
309
- flexDirection: 'row',
310
- alignItems: 'center',
311
- justifyContent: 'center'
312
- },
313
- modalTitleSectionStyle: {
314
- position: 'absolute',
315
- width: '100%',
316
- top: 0,
317
- zIndex: 100,
318
- left: 40
319
- },
320
- });
@@ -3,7 +3,7 @@ import { Platform } from 'react-native';
3
3
 
4
4
  export const BusinessContainer = styled.View`
5
5
  flex-direction: column;
6
- padding-bottom: 35px;
6
+ padding-bottom: ${(props: any) => props.isChewLayout ? '0' : '35px'};
7
7
  `;
8
8
  export const BusinessHeader = styled.ImageBackground`
9
9
  width: 100%;
@@ -20,7 +20,7 @@ export const BusinessLogo = styled.View`
20
20
  box-shadow: 0 0 2px ${Platform.OS == 'android' ? '#000000DD' : '#0000001A'};
21
21
  elevation: 2;
22
22
  background-color: white;
23
- border-radius: 7.6px;
23
+ border-radius: 7.6px;
24
24
  `;
25
25
  export const BusinessInfo = styled.View`
26
26
  justify-content: flex-start;
@@ -68,3 +68,7 @@ export const RibbonBox = styled.View`
68
68
  border-radius: 50px;
69
69
  `}
70
70
  `
71
+
72
+ export const SocialListWrapper = styled.ScrollView`
73
+ flex-direction: row;
74
+ `