ordering-ui-react-native 0.18.2 → 0.18.3-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 (263) hide show
  1. package/package.json +9 -7
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/BusinessInformation/index.tsx +10 -9
  4. package/src/components/BusinessesListing/index.tsx +1 -1
  5. package/src/components/OrderCreating/index.tsx +0 -20
  6. package/src/components/PaymentOptionsWebView/index.tsx +29 -8
  7. package/src/components/PhoneInputNumber/index.tsx +6 -2
  8. package/src/components/StripeMethodForm/index.tsx +136 -102
  9. package/src/components/VerifyPhone/styles.tsx +1 -2
  10. package/src/components/shared/OToast.tsx +3 -2
  11. package/src/types/index.tsx +5 -0
  12. package/src/utils/index.tsx +7 -2
  13. package/themes/business/index.tsx +2 -0
  14. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +36 -26
  15. package/themes/business/src/components/BusinessController/index.tsx +19 -17
  16. package/themes/business/src/components/BusinessProductList/AccordionDropdown.tsx +63 -0
  17. package/themes/business/src/components/BusinessProductList/IterateCategories.tsx +108 -0
  18. package/themes/business/src/components/BusinessProductList/ProductList.tsx +196 -0
  19. package/themes/business/src/components/BusinessProductList/index.tsx +196 -0
  20. package/themes/business/src/components/BusinessProductList/styles.tsx +10 -0
  21. package/themes/business/src/components/Chat/index.tsx +163 -123
  22. package/themes/business/src/components/DriverMap/index.tsx +17 -6
  23. package/themes/business/src/components/DriverSchedule/index.tsx +45 -8
  24. package/themes/business/src/components/FloatingButton/index.tsx +34 -31
  25. package/themes/business/src/components/GoogleMap/index.tsx +58 -57
  26. package/themes/business/src/components/LoginForm/index.tsx +5 -2
  27. package/themes/business/src/components/MapView/index.tsx +14 -10
  28. package/themes/business/src/components/MessagesOption/index.tsx +22 -94
  29. package/themes/business/src/components/NewOrderNotification/index.tsx +123 -96
  30. package/themes/business/src/components/NotFoundSource/index.tsx +2 -2
  31. package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
  32. package/themes/business/src/components/OrderDetails/Delivery.tsx +205 -12
  33. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +67 -39
  34. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +47 -23
  35. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +9 -4
  36. package/themes/business/src/components/OrderMessage/index.tsx +1 -1
  37. package/themes/business/src/components/OrderSummary/index.tsx +114 -123
  38. package/themes/business/src/components/OrdersListManager/index.tsx +7 -2
  39. package/themes/business/src/components/OrdersListManager/utils.tsx +1 -1
  40. package/themes/business/src/components/OrdersOption/index.tsx +43 -32
  41. package/themes/business/src/components/PreviousMessages/FooterMessageComponent.tsx +103 -0
  42. package/themes/business/src/components/PreviousMessages/index.tsx +97 -55
  43. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +21 -29
  44. package/themes/business/src/components/PreviousOrders/OrderList.tsx +93 -0
  45. package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +1 -1
  46. package/themes/business/src/components/PreviousOrders/index.tsx +193 -221
  47. package/themes/business/src/components/PreviousOrders/styles.tsx +10 -0
  48. package/themes/business/src/components/ReviewCustomer/index.tsx +3 -1
  49. package/themes/business/src/components/SearchBar/index.tsx +2 -1
  50. package/themes/business/src/components/StoresList/index.tsx +6 -5
  51. package/themes/business/src/components/UserProfileForm/index.tsx +14 -15
  52. package/themes/business/src/components/WebsocketStatus/index.tsx +171 -0
  53. package/themes/business/src/components/WebsocketStatus/styles.tsx +28 -0
  54. package/themes/business/src/components/shared/OModal.tsx +16 -9
  55. package/themes/business/src/types/index.tsx +8 -0
  56. package/themes/business/src/utils/index.tsx +4 -4
  57. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  58. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  59. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  60. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  61. package/themes/kiosk/src/components/Intro/index.tsx +16 -1
  62. package/themes/kiosk/src/components/LoginForm/index.tsx +7 -5
  63. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  64. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  65. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  66. package/themes/kiosk/src/components/PhoneInputNumber/index.tsx +2 -2
  67. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  68. package/themes/original/index.tsx +7 -3
  69. package/themes/original/src/components/AddressDetails/index.tsx +19 -3
  70. package/themes/original/src/components/AddressForm/index.tsx +33 -15
  71. package/themes/original/src/components/AddressForm/styles.tsx +1 -1
  72. package/themes/original/src/components/AddressList/index.tsx +5 -8
  73. package/themes/original/src/components/AddressList/styles.tsx +4 -4
  74. package/themes/original/src/components/AnalyticsSegment/index.tsx +193 -10
  75. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  76. package/themes/original/src/components/AppleLogin/styles.tsx +3 -1
  77. package/themes/original/src/components/BusinessBasicInformation/index.tsx +74 -38
  78. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +11 -13
  79. package/themes/original/src/components/BusinessController/index.tsx +35 -44
  80. package/themes/original/src/components/BusinessController/styles.tsx +12 -5
  81. package/themes/original/src/components/BusinessFeaturedController/index.tsx +21 -54
  82. package/themes/original/src/components/BusinessFeaturedController/styles.tsx +8 -0
  83. package/themes/original/src/components/BusinessInformation/index.tsx +140 -85
  84. package/themes/original/src/components/BusinessInformation/styles.tsx +2 -2
  85. package/themes/original/src/components/BusinessItemAccordion/index.tsx +25 -26
  86. package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +317 -0
  87. package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +96 -0
  88. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/index.tsx +1 -1
  89. package/themes/original/src/components/BusinessListingSearch/index.tsx +133 -438
  90. package/themes/original/src/components/BusinessListingSearch/styles.tsx +1 -19
  91. package/themes/original/src/components/BusinessPreorder/index.tsx +105 -22
  92. package/themes/original/src/components/BusinessPreorder/styles.tsx +14 -0
  93. package/themes/original/src/components/BusinessProductsCategories/index.tsx +2 -3
  94. package/themes/original/src/components/BusinessProductsList/index.tsx +15 -7
  95. package/themes/original/src/components/BusinessProductsList/styles.tsx +8 -3
  96. package/themes/original/src/components/BusinessProductsListing/UpsellingRedirect.tsx +1 -1
  97. package/themes/original/src/components/BusinessProductsListing/index.tsx +162 -39
  98. package/themes/original/src/components/BusinessProductsListing/styles.tsx +4 -5
  99. package/themes/original/src/components/BusinessReviews/index.tsx +4 -2
  100. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +1 -1
  101. package/themes/original/src/components/BusinessesListing/Layout/Appointment/styles.tsx +5 -5
  102. package/themes/original/src/components/BusinessesListing/Layout/Original/FlatListBusinessListFooter.tsx +69 -0
  103. package/themes/original/src/components/BusinessesListing/Layout/Original/FlatListBusinessListHeader.tsx +406 -0
  104. package/themes/original/src/components/BusinessesListing/Layout/Original/FlatListBusinessListing.tsx +76 -0
  105. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +37 -404
  106. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -1
  107. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  108. package/themes/original/src/components/Cart/index.tsx +49 -47
  109. package/themes/original/src/components/CartContent/index.tsx +99 -38
  110. package/themes/original/src/components/CartContent/styles.tsx +6 -6
  111. package/themes/original/src/components/CartStoresListing/styles.tsx +2 -2
  112. package/themes/original/src/components/Checkout/index.tsx +324 -43
  113. package/themes/original/src/components/Checkout/styles.tsx +17 -0
  114. package/themes/original/src/components/CitiesControl/index.tsx +1 -1
  115. package/themes/original/src/components/CitiesControl/styles.tsx +1 -1
  116. package/themes/original/src/components/CouponControl/index.tsx +10 -3
  117. package/themes/original/src/components/DatePicker/index.tsx +17 -0
  118. package/themes/original/src/components/DatePicker/styles.tsx +20 -0
  119. package/themes/original/src/components/DriverTips/index.tsx +6 -3
  120. package/themes/original/src/components/FacebookLogin/styles.tsx +3 -1
  121. package/themes/original/src/components/Favorite/index.tsx +4 -9
  122. package/themes/original/src/components/Favorite/styles.tsx +0 -2
  123. package/themes/original/src/components/FloatingButton/styles.tsx +1 -1
  124. package/themes/original/src/components/GPSButton/index.tsx +7 -5
  125. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +8 -3
  126. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +42 -5
  127. package/themes/original/src/components/GiftCard/PurchaseGiftCard/styles.tsx +3 -1
  128. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +84 -8
  129. package/themes/original/src/components/GiftCard/RedeemGiftCard/styles.tsx +1 -1
  130. package/themes/original/src/components/GiftCard/SendGiftCard/styles.tsx +1 -1
  131. package/themes/original/src/components/GoogleLogin/styles.tsx +1 -1
  132. package/themes/original/src/components/GoogleMap/index.tsx +63 -7
  133. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
  134. package/themes/original/src/components/HighestRatedBusinesses/styles.tsx +1 -1
  135. package/themes/original/src/components/Home/index.tsx +14 -5
  136. package/themes/original/src/components/LastOrder/index.tsx +2 -1
  137. package/themes/original/src/components/LastOrders/index.tsx +2 -1
  138. package/themes/original/src/components/LoginForm/Otp/index.tsx +91 -25
  139. package/themes/original/src/components/LoginForm/index.tsx +64 -34
  140. package/themes/original/src/components/LottieAnimation/index.tsx +88 -63
  141. package/themes/original/src/components/MessageListing/index.tsx +9 -2
  142. package/themes/original/src/components/Messages/index.tsx +15 -4
  143. package/themes/original/src/components/Messages/styles.tsx +1 -1
  144. package/themes/original/src/components/MomentOption/index.tsx +9 -10
  145. package/themes/original/src/components/MomentSelector/index.tsx +1 -1
  146. package/themes/original/src/components/MultiCart/index.tsx +1 -1
  147. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +161 -49
  148. package/themes/original/src/components/MultiCheckout/index.tsx +348 -70
  149. package/themes/original/src/components/MultiCheckout/styles.tsx +3 -1
  150. package/themes/original/src/components/MultiOrdersDetails/index.tsx +2 -2
  151. package/themes/original/src/components/MyOrders/index.tsx +16 -5
  152. package/themes/original/src/components/NavBar/index.tsx +20 -13
  153. package/themes/original/src/components/NetworkError/index.tsx +2 -3
  154. package/themes/original/src/components/NetworkError/styles.tsx +2 -2
  155. package/themes/original/src/components/NotFoundSource/index.tsx +14 -10
  156. package/themes/original/src/components/Notifications/index.tsx +4 -8
  157. package/themes/original/src/components/Notifications/styles.tsx +0 -1
  158. package/themes/original/src/components/OrderDetails/OrderEta.tsx +76 -0
  159. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +22 -6
  160. package/themes/original/src/components/OrderDetails/index.tsx +721 -670
  161. package/themes/original/src/components/OrderDetails/styles.tsx +24 -8
  162. package/themes/original/src/components/OrderItAgain/index.tsx +3 -1
  163. package/themes/original/src/components/OrderProgress/index.tsx +34 -25
  164. package/themes/original/src/components/OrderProgress/styles.tsx +1 -1
  165. package/themes/original/src/components/OrderSummary/index.tsx +62 -57
  166. package/themes/original/src/components/OrderTypeSelector/index.tsx +5 -6
  167. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/styles.tsx +1 -1
  168. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +13 -13
  169. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/styles.tsx +1 -1
  170. package/themes/original/src/components/OrdersOption/index.tsx +44 -21
  171. package/themes/original/src/components/OrdersOption/styles.tsx +2 -2
  172. package/themes/original/src/components/PageBanner/index.tsx +65 -29
  173. package/themes/original/src/components/PageBanner/styles.tsx +0 -3
  174. package/themes/original/src/components/PaymentOptionCard/index.tsx +180 -0
  175. package/themes/original/src/components/PaymentOptionStripe/styles.tsx +3 -0
  176. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  177. package/themes/original/src/components/PaymentOptions/index.tsx +100 -34
  178. package/themes/original/src/components/PhoneInputNumber/index.tsx +18 -4
  179. package/themes/original/src/components/ProductForm/ActionButton.tsx +120 -0
  180. package/themes/original/src/components/ProductForm/ExtraOptions.tsx +56 -0
  181. package/themes/original/src/components/ProductForm/index.tsx +106 -170
  182. package/themes/original/src/components/ProductForm/styles.tsx +3 -3
  183. package/themes/original/src/components/ProductItemAccordion/index.tsx +13 -6
  184. package/themes/original/src/components/ProductOptionSubOption/index.tsx +49 -20
  185. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +10 -9
  186. package/themes/original/src/components/ProfessionalProfile/styles.tsx +3 -3
  187. package/themes/original/src/components/Promotions/index.tsx +6 -6
  188. package/themes/original/src/components/Promotions/styles.tsx +3 -3
  189. package/themes/original/src/components/ReviewDriver/styles.tsx +1 -1
  190. package/themes/original/src/components/ReviewOrder/styles.tsx +1 -1
  191. package/themes/original/src/components/ReviewProducts/index.tsx +16 -7
  192. package/themes/original/src/components/ReviewProducts/styles.tsx +1 -1
  193. package/themes/original/src/components/ScheduleAccordion/index.tsx +3 -3
  194. package/themes/original/src/components/ServiceForm/index.tsx +2 -2
  195. package/themes/original/src/components/ServiceForm/styles.tsx +4 -4
  196. package/themes/original/src/components/SignupForm/index.tsx +27 -16
  197. package/themes/original/src/components/SingleOrderCard/index.tsx +44 -20
  198. package/themes/original/src/components/SingleOrderCard/styles.tsx +1 -1
  199. package/themes/original/src/components/SingleProductCard/index.tsx +13 -10
  200. package/themes/original/src/components/SingleProductCard/styles.tsx +8 -3
  201. package/themes/original/src/components/SingleProductReview/styles.tsx +1 -1
  202. package/themes/original/src/components/StripeCardsList/index.tsx +61 -5
  203. package/themes/original/src/components/StripeElementsForm/index.tsx +48 -34
  204. package/themes/original/src/components/StripeElementsForm/naked.tsx +12 -1
  205. package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +170 -0
  206. package/themes/original/src/components/UpsellingProducts/UpsellingLayout.tsx +86 -0
  207. package/themes/original/src/components/UpsellingProducts/index.tsx +16 -205
  208. package/themes/original/src/components/UpsellingProducts/styles.tsx +19 -0
  209. package/themes/original/src/components/UserDetails/index.tsx +3 -1
  210. package/themes/original/src/components/UserFormDetails/index.tsx +100 -22
  211. package/themes/original/src/components/UserFormDetails/styles.tsx +1 -1
  212. package/themes/original/src/components/UserProfile/index.tsx +8 -26
  213. package/themes/original/src/components/UserProfileForm/index.tsx +30 -31
  214. package/themes/original/src/components/UserVerification/index.tsx +55 -50
  215. package/themes/original/src/components/WalletTransactionItem/index.tsx +2 -2
  216. package/themes/original/src/components/WalletTransactions/index.tsx +3 -3
  217. package/themes/original/src/components/WalletTransactions/styles.tsx +1 -0
  218. package/themes/original/src/components/Wallets/index.tsx +48 -60
  219. package/themes/original/src/components/Wallets/styles.tsx +3 -4
  220. package/themes/original/src/components/shared/HeaderTitle.tsx +1 -1
  221. package/themes/original/src/components/shared/OButton.tsx +3 -3
  222. package/themes/original/src/components/shared/OInput.tsx +4 -5
  223. package/themes/original/src/components/shared/OModal.tsx +15 -17
  224. package/themes/original/src/layouts/Container.tsx +5 -3
  225. package/themes/original/src/types/index.tsx +28 -6
  226. package/themes/original/src/utils/index.tsx +180 -13
  227. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
  228. package/src/navigators/BottomNavigator.tsx +0 -117
  229. package/src/navigators/CheckoutNavigator.tsx +0 -66
  230. package/src/navigators/HomeNavigator.tsx +0 -202
  231. package/src/navigators/NavigationRef.tsx +0 -7
  232. package/src/navigators/RootNavigator.tsx +0 -269
  233. package/src/pages/Account.tsx +0 -34
  234. package/src/pages/AddressForm.tsx +0 -62
  235. package/src/pages/AddressList.tsx +0 -24
  236. package/src/pages/BusinessProductsList.tsx +0 -81
  237. package/src/pages/BusinessesListing.tsx +0 -43
  238. package/src/pages/CartList.tsx +0 -49
  239. package/src/pages/Checkout.tsx +0 -101
  240. package/src/pages/ForgotPassword.tsx +0 -24
  241. package/src/pages/Help.tsx +0 -23
  242. package/src/pages/HelpAccountAndPayment.tsx +0 -23
  243. package/src/pages/HelpGuide.tsx +0 -23
  244. package/src/pages/HelpOrder.tsx +0 -23
  245. package/src/pages/Home.tsx +0 -36
  246. package/src/pages/IntroductoryTutorial.tsx +0 -170
  247. package/src/pages/Login.tsx +0 -47
  248. package/src/pages/MomentOption.tsx +0 -30
  249. package/src/pages/MultiCheckout.tsx +0 -31
  250. package/src/pages/MultiOrdersDetails.tsx +0 -27
  251. package/src/pages/MyOrders.tsx +0 -40
  252. package/src/pages/NetworkError.tsx +0 -24
  253. package/src/pages/NotFound.tsx +0 -22
  254. package/src/pages/OrderDetails.tsx +0 -25
  255. package/src/pages/ProductDetails.tsx +0 -55
  256. package/src/pages/Profile.tsx +0 -36
  257. package/src/pages/ReviewDriver.tsx +0 -30
  258. package/src/pages/ReviewOrder.tsx +0 -32
  259. package/src/pages/ReviewProducts.tsx +0 -30
  260. package/src/pages/Sessions.tsx +0 -22
  261. package/src/pages/Signup.tsx +0 -53
  262. package/src/pages/SpinnerLoader.tsx +0 -10
  263. package/src/pages/Splash.tsx +0 -21
@@ -7,6 +7,7 @@ import {
7
7
  import { useTheme } from 'styled-components/native';
8
8
  import { StyleSheet, View } from 'react-native'
9
9
  import IconAntDesign from 'react-native-vector-icons/AntDesign';
10
+ import FastImage from 'react-native-fast-image';
10
11
 
11
12
  import {
12
13
  Container,
@@ -14,7 +15,8 @@ import {
14
15
  QuantityControl,
15
16
  Checkbox,
16
17
  PositionControl,
17
- Circle
18
+ Circle,
19
+ Logo
18
20
  } from './styles'
19
21
  import { OIcon, OText } from '../shared'
20
22
 
@@ -29,7 +31,8 @@ export const ProductOptionSubOptionUI = (props: any) => {
29
31
  toggleSelect,
30
32
  changePosition,
31
33
  disabled,
32
- setIsScrollAvailable
34
+ setIsScrollAvailable,
35
+ image
33
36
  } = props
34
37
 
35
38
  const disableIncrement = option?.limit_suboptions_by_max ? balance === option?.max || state.quantity === suboption?.max : state.quantity === suboption?.max || (!state.selected && balance === option?.max)
@@ -37,12 +40,23 @@ export const ProductOptionSubOptionUI = (props: any) => {
37
40
 
38
41
  const theme = useTheme();
39
42
  const [, t] = useLanguage()
40
- const [{ parsePrice }] = useUtils()
43
+ const [{ parsePrice, optimizeImage }] = useUtils()
41
44
  const [showMessage, setShowMessage] = useState(false)
42
45
  const [isDirty, setIsDirty] = useState(false)
43
46
 
44
- const isChewLayout = theme?.header?.components?.layout?.type?.toLowerCase() === 'chew'
45
- const iconsSize = isChewLayout ? 20 : 16
47
+ const iconsSize = 20
48
+
49
+ const styles = StyleSheet.create({
50
+ icon: {
51
+ borderRadius: 7.6,
52
+ width: 60,
53
+ height: 60
54
+ },
55
+ logo: {
56
+ borderRadius: 10,
57
+ marginLeft: 3,
58
+ },
59
+ });
46
60
 
47
61
  const handleSuboptionClick = () => {
48
62
  toggleSelect()
@@ -68,7 +82,7 @@ export const ProductOptionSubOptionUI = (props: any) => {
68
82
 
69
83
  return (
70
84
  <View>
71
- <Container onPress={() => handleSuboptionClick()}>
85
+ <Container onPress={!((option?.with_half_option || option?.allow_suboption_quantity) && state?.selected) ? () => handleSuboptionClick() : null}>
72
86
  <IconControl disabled={disabled} onPress={() => handleSuboptionClick()}>
73
87
  {((option?.min === 0 && option?.max === 1) || option?.max > 1) ? (
74
88
  state?.selected ? (
@@ -83,12 +97,24 @@ export const ProductOptionSubOptionUI = (props: any) => {
83
97
  <OIcon src={theme.images.general.radio_nor} color={theme.colors.disabled} width={16} />
84
98
  )
85
99
  )}
86
- <OText size={12} lineHeight={18} color={theme.colors.textSecondary} mLeft={10} style={{ flex: 1 }}>
100
+ {image && (
101
+ <Logo style={styles.logo}>
102
+ <FastImage
103
+ style={styles.icon}
104
+ source={{
105
+ uri: optimizeImage(image, 'h_100,c_limit'),
106
+ priority: FastImage.priority.normal,
107
+ }}
108
+ resizeMode={FastImage.resizeMode.cover}
109
+ />
110
+ </Logo>
111
+ )}
112
+ <OText size={12} lineHeight={18} color={theme.colors.textSecondary} mLeft={5} style={{ flex: 1 }}>
87
113
  {suboption?.name}
88
114
  </OText>
89
115
  </IconControl>
90
- <QuantityControl>
91
- {option?.allow_suboption_quantity && state?.selected && (
116
+ {option?.allow_suboption_quantity && state?.selected && (
117
+ <QuantityControl>
92
118
  <>
93
119
  <Checkbox disabled={disabled || state.quantity === 0} onPress={decrement}>
94
120
  <IconAntDesign
@@ -97,7 +123,7 @@ export const ProductOptionSubOptionUI = (props: any) => {
97
123
  color={state.quantity === 0 || disabled ? theme.colors.disabled : theme.colors.primary}
98
124
  />
99
125
  </Checkbox>
100
- <OText size={12} mLeft={5} mRight={5}>
126
+ <OText size={12}>
101
127
  {state.quantity}
102
128
  </OText>
103
129
  <Checkbox disabled={disabled || disableIncrement} onPress={increment}>
@@ -108,16 +134,17 @@ export const ProductOptionSubOptionUI = (props: any) => {
108
134
  />
109
135
  </Checkbox>
110
136
  </>
111
- )}
112
- </QuantityControl>
113
- <PositionControl>
114
- {option?.with_half_option && state?.selected && (
137
+ </QuantityControl>
138
+ )}
139
+ {option?.with_half_option && state?.selected && (
140
+ <PositionControl>
115
141
  <>
116
142
  <Circle disabled={disabled} onPress={() => changePosition('left')}>
117
143
  <OIcon
118
144
  src={theme.images.general.half_l}
119
145
  color={state.selected && state.position === 'left' ? theme.colors.primary : '#cbcbcb'}
120
- width={16}
146
+ width={20}
147
+ height={20}
121
148
  style={styles.inverse}
122
149
  />
123
150
  </Circle>
@@ -125,21 +152,23 @@ export const ProductOptionSubOptionUI = (props: any) => {
125
152
  <OIcon
126
153
  src={theme.images.general.half_f}
127
154
  color={state.selected && state.position === 'whole' ? theme.colors.primary : '#cbcbcb'}
128
- width={16}
155
+ width={20}
156
+ height={20}
129
157
  />
130
158
  </Circle>
131
159
  <Circle disabled={disabled} onPress={() => changePosition('right')}>
132
160
  <OIcon
133
161
  src={theme.images.general.half_r}
134
162
  color={state.selected && state.position === 'right' ? theme.colors.primary : '#cbcbcb'}
135
- width={16}
163
+ width={20}
164
+ height={20}
136
165
  />
137
166
  </Circle>
138
167
  </>
139
- )}
140
- </PositionControl>
168
+ </PositionControl>
169
+ )}
141
170
  {price > 0 && (
142
- <OText size={12} lineHeight={18} color={theme.colors.textSecondary} style={{ paddingRight: 10 }}>
171
+ <OText size={12} lineHeight={18} color={theme.colors.textSecondary} style={{ width: 70, maxWidth: 70 }}>
143
172
  + {parsePrice(price)}
144
173
  </OText>
145
174
  )}
@@ -9,30 +9,31 @@ export const Container = styled.TouchableOpacity`
9
9
 
10
10
  export const IconControl = styled.TouchableOpacity`
11
11
  flex-direction: row;
12
- padding: 10px;
13
- width: 45%;
12
+ padding: 10px 0 10px 10px;
13
+ width: 50%;
14
14
  align-items: center;
15
15
  `
16
16
 
17
17
  export const QuantityControl = styled.View`
18
18
  flex-direction: row;
19
19
  align-items: center;
20
- justify-content: flex-start;
21
- margin-horizontal: 5px;
22
- flex: 1;
23
- width: 60px;
20
+ justify-content: space-between;
21
+ width: 62px;
24
22
  `
25
23
 
26
24
  export const PositionControl = styled.View`
27
25
  flex-direction: row;
28
26
  align-items: center;
29
- margin-right: 5px;
30
- flex: 1;
31
27
  `
32
28
 
33
29
  export const Checkbox = styled.TouchableOpacity`
34
30
  `
35
31
 
36
32
  export const Circle = styled.TouchableOpacity`
37
- margin: 0 1px;
33
+ margin: 0 1.5px;
38
34
  `
35
+
36
+ export const Logo = styled.View`
37
+ height: 65px;
38
+ width: 65px;
39
+ `;
@@ -12,7 +12,7 @@ export const ProfessionalPhoto = styled.ImageBackground`
12
12
 
13
13
  export const InfoWrapper = styled.View`
14
14
  margin-vertical: 30px;
15
- padding-horizontal: 40px;
15
+ padding-horizontal: 20px;
16
16
  `
17
17
 
18
18
  export const Divider = styled.View`
@@ -22,7 +22,7 @@ export const Divider = styled.View`
22
22
  `
23
23
 
24
24
  export const ScheduleWrapper = styled.View`
25
- padding-horizontal: 40px;
25
+ padding-horizontal: 20px;
26
26
  margin-top: 30px;
27
27
  `
28
28
 
@@ -43,4 +43,4 @@ export const CalendarWrapper = styled.View`
43
43
  border-color: ${(props: any) => props.theme.colors.backgroundGray200};
44
44
  border-radius: 7.6px;
45
45
  padding: 15px;
46
- `
46
+ `
@@ -19,7 +19,7 @@ import { useTheme } from 'styled-components/native';
19
19
  import { OButton, OIcon, OModal, OText } from '../shared'
20
20
  import { Placeholder, PlaceholderLine } from 'rn-placeholder'
21
21
  import { NotFoundSource } from '../NotFoundSource'
22
- import { View, StyleSheet, ScrollView, RefreshControl } from 'react-native'
22
+ import { View, StyleSheet, ScrollView, RefreshControl, Platform } from 'react-native'
23
23
  import { PromotionParams } from '../../types'
24
24
  import { Container } from '../../layouts/Container'
25
25
 
@@ -98,8 +98,6 @@ const PromotionsUI = (props: PromotionParams) => {
98
98
 
99
99
  return (
100
100
  <Container
101
- noPadding
102
- pt={20}
103
101
  refreshControl={
104
102
  <RefreshControl
105
103
  refreshing={refreshing}
@@ -112,7 +110,9 @@ const PromotionsUI = (props: PromotionParams) => {
112
110
  titleAlign={'center'}
113
111
  onActionLeft={() => navigation.goBack()}
114
112
  showCall={false}
115
- style={{ paddingVertical: 0, marginLeft: 20 }}
113
+ paddingTop={Platform.OS === 'ios' ? 20 : 10}
114
+ style={{ paddingVertical: 0 }}
115
+ btnStyle={{ paddingLeft: 0 }}
116
116
  />
117
117
  <PromotionsContainer>
118
118
  <SearchBarContainer>
@@ -143,7 +143,7 @@ const PromotionsUI = (props: PromotionParams) => {
143
143
  <WrapperSingleOffer key={offer.id}>
144
144
  <SingleOfferContainer>
145
145
  <FastImage
146
- style={{ height: 80, width: 80, aspectRatio: 3 / 2, borderRadius: 8 }}
146
+ style={{ height: 80, width: 80, aspectRatio: 1, borderRadius: 8 }}
147
147
  source={typeof offer?.image !== 'number' ? {
148
148
  uri: optimizeImage(offer?.image, 'h_1024,c_limit'),
149
149
  priority: FastImage.priority.normal,
@@ -212,7 +212,7 @@ const PromotionsUI = (props: PromotionParams) => {
212
212
  </OText>
213
213
  <ScrollView
214
214
  showsVerticalScrollIndicator={false}
215
- style={{ height: '75%' }}
215
+ style={{ height: '68%' }}
216
216
  >
217
217
  {offerSelected?.businesses?.map((business: any) => {
218
218
  return (
@@ -2,13 +2,12 @@ import styled, { css } from 'styled-components/native'
2
2
 
3
3
  export const PromotionsContainer = styled.View`
4
4
  width: 100%;
5
- padding-left: 40px;
6
- padding-right: 40px;
7
5
  `
8
6
 
9
7
  export const WrapperSingleOffer = styled.View`
10
8
  flex-direction: column;
11
9
  width: 100%;
10
+ margin-bottom: 30px;
12
11
  `
13
12
 
14
13
  export const SingleOfferContainer = styled.View`
@@ -16,11 +15,12 @@ export const SingleOfferContainer = styled.View`
16
15
  width: 100%;
17
16
  justify-content: space-between;
18
17
  align-items: center;
19
- margin-bottom: 20px;
18
+ margin-bottom: 10px;
20
19
  `
21
20
 
22
21
  export const OfferInformation = styled.View`
23
22
  justify-content: space-between;
23
+ min-width: 70%;
24
24
  max-width: 70%;
25
25
  `
26
26
 
@@ -1,7 +1,7 @@
1
1
  import styled from 'styled-components/native'
2
2
 
3
3
  export const ReviewDriverContainer = styled.ScrollView`
4
- padding: 20px 40px;
4
+ padding: 20px;
5
5
  margin-bottom: 100px;
6
6
  `
7
7
 
@@ -1,7 +1,7 @@
1
1
  import styled from 'styled-components/native'
2
2
 
3
3
  export const ReviewOrderContainer = styled.ScrollView`
4
- padding: 20px 40px;
4
+ padding: 20px;
5
5
  margin-bottom: 100px;
6
6
  `
7
7
 
@@ -74,13 +74,22 @@ const ReviewProductsUI = (props: ReviewProductParams) => {
74
74
  titleWrapStyle={{ paddingHorizontal: 0 }}
75
75
  titleStyle={{ marginRight: 0, marginLeft: 0 }}
76
76
  />
77
- {order?.products?.map((product: any) => !product?.deleted && (
78
- <SingleProductReview
79
- key={product.id}
80
- product={product}
81
- formState={formState}
82
- handleChangeFormState={handleChangeFormState}
83
- />
77
+ {order?.products && order.products.length > 0 && order?.products.map(productsOrder => (
78
+ productsOrder?.length ? productsOrder?.map((product: any, i: any) => !product?.deleted ?
79
+ <SingleProductReview
80
+ key={i}
81
+ product={product}
82
+ formState={formState}
83
+ handleChangeFormState={handleChangeFormState}
84
+ /> : null
85
+ ) : (!productsOrder?.deleted ? (
86
+ <SingleProductReview
87
+ product={productsOrder}
88
+ formState={formState}
89
+ handleChangeFormState={handleChangeFormState}
90
+ />
91
+ ) : null
92
+ )
84
93
  ))}
85
94
  </ReviewProductsContainer>
86
95
 
@@ -1,7 +1,7 @@
1
1
  import styled from 'styled-components/native'
2
2
 
3
3
  export const ReviewProductsContainer = styled.ScrollView`
4
- padding: 20px 40px;
4
+ padding: 20px;
5
5
  margin-bottom: 100px;
6
6
  `
7
7
 
@@ -13,7 +13,7 @@ import { OIcon, OText } from '../shared';
13
13
  export const ScheduleAccordion = (props: any) => {
14
14
 
15
15
  const {
16
- scheduleFormatted,
16
+ timeFormated,
17
17
  schedule,
18
18
  weekIndex
19
19
  } = props
@@ -52,9 +52,9 @@ export const ScheduleAccordion = (props: any) => {
52
52
  {schedule?.lapses?.map((lapse: any) => (
53
53
  schedule?.enabled ?
54
54
  <OText mBottom={16}>
55
- {scheduleFormatted(lapse.open) +
55
+ {timeFormated(lapse.open) +
56
56
  ' - ' +
57
- scheduleFormatted(lapse.close)}
57
+ timeFormated(lapse.close)}
58
58
  </OText>
59
59
  :
60
60
  <OText color={theme.colors.red} mBottom={16}>
@@ -116,7 +116,7 @@ const ServiceFormUI = (props: ServiceFormParams) => {
116
116
  marginHorizontal: 0
117
117
  },
118
118
  professionalList: {
119
- paddingHorizontal: 40,
119
+ paddingHorizontal: 20,
120
120
  paddingVertical: 30,
121
121
  }
122
122
  })
@@ -602,7 +602,7 @@ const ServiceFormUI = (props: ServiceFormParams) => {
602
602
  <PlaceholderLine width={60} height={20} />
603
603
  </Placeholder>
604
604
  ) : (
605
- <OText color={theme.colors.primary} size={13}>{t('WITH_GUEST_USER', 'With Guest user')}</OText>
605
+ <OText color={theme.colors.primary} size={13}>{t('AS_GUEST_USER', 'As guest user')}</OText>
606
606
  )}
607
607
  </TouchableOpacity>
608
608
  )}
@@ -11,7 +11,7 @@ export const ProfessionalPhoto = styled.ImageBackground`
11
11
  `;
12
12
 
13
13
  export const InfoWrapper = styled.View`
14
- padding-horizontal: 40px;
14
+ padding-horizontal: 20px;
15
15
  margin-vertical: 30px;
16
16
  `
17
17
 
@@ -22,7 +22,7 @@ export const Divider = styled.View`
22
22
  `
23
23
 
24
24
  export const ProfessionalWrapper = styled.View`
25
- padding-horizontal: 40px;
25
+ padding-horizontal: 20px;
26
26
  margin-top: 30px;
27
27
  `
28
28
 
@@ -41,10 +41,10 @@ export const ButtonWrapper = styled.View`
41
41
  align-items: center;
42
42
  flex-direction: row;
43
43
  padding-vertical: 13px;
44
- padding-horizontal: 40px;
44
+ padding-horizontal: 20px;
45
45
  margin-top: 30px;
46
46
  margin-bottom: 40px;
47
47
  width: 100%;
48
48
  border-top-width: 1px;
49
49
  border-top-color: ${(props: any) => props.theme.colors.backgroundGray200};
50
- `
50
+ `
@@ -1,5 +1,5 @@
1
1
  import React, { useEffect, useRef, useState } from 'react';
2
- import { View, Pressable, StyleSheet, Linking, Platform, TouchableOpacity, Vibration } from 'react-native';
2
+ import { View, Pressable, StyleSheet, Linking, Platform, TouchableOpacity } from 'react-native';
3
3
  import { useForm, Controller } from 'react-hook-form';
4
4
  import Spinner from 'react-native-loading-spinner-overlay';
5
5
  import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';
@@ -8,6 +8,7 @@ import { PhoneInputNumber } from '../PhoneInputNumber';
8
8
  import { FacebookLogin } from '../FacebookLogin';
9
9
  import Recaptcha from 'react-native-recaptcha-that-works'
10
10
  import ReCaptcha from '@fatnlazycat/react-native-recaptcha-v3'
11
+ import ReactNativeHapticFeedback from "react-native-haptic-feedback";
11
12
 
12
13
  import {
13
14
  SignupForm as SignUpController,
@@ -164,6 +165,14 @@ const SignupFormUI = (props: SignupParams) => {
164
165
  })
165
166
  }
166
167
 
168
+ const vibrateApp = (impact?: string) => {
169
+ const options = {
170
+ enableVibrateFallback: true,
171
+ ignoreAndroidSystemSettings: false
172
+ };
173
+ ReactNativeHapticFeedback.trigger(impact || "impactLight", options);
174
+ }
175
+
167
176
  const handleRefs = (ref: any, code: string) => {
168
177
  switch (code) {
169
178
  case 'name': {
@@ -246,7 +255,7 @@ const SignupFormUI = (props: SignupParams) => {
246
255
  const onSubmit = (values?: any) => {
247
256
  if (phoneInputData.error && signUpTab !== 'otpEmail') {
248
257
  showToast(ToastType.Error, phoneInputData.error);
249
- Vibration.vibrate()
258
+ vibrateApp()
250
259
  return;
251
260
  }
252
261
  if (
@@ -264,7 +273,7 @@ const SignupFormUI = (props: SignupParams) => {
264
273
  'The field Mobile phone is required.',
265
274
  ),
266
275
  );
267
- Vibration.vibrate()
276
+ vibrateApp()
268
277
  return;
269
278
  }
270
279
  if (signUpTab === 'otpEmail' || signUpTab === 'otpCellphone') {
@@ -323,7 +332,7 @@ const SignupFormUI = (props: SignupParams) => {
323
332
  };
324
333
 
325
334
  const handleChangeInputEmail = (value: string, onChange: any) => {
326
- onChange(value.toLowerCase().replace(/[&,()%";:ç?<>{}\\[\]\s]/g, ''));
335
+ onChange(value.toLowerCase().trim().replace(/[&,()%";:ç?<>{}\\[\]\s]/g, ''));
327
336
  };
328
337
 
329
338
  const handleOpenTermsUrl = async (url: any) => {
@@ -333,7 +342,7 @@ const SignupFormUI = (props: SignupParams) => {
333
342
  await Linking.openURL(url);
334
343
  } else {
335
344
  showToast(ToastType.Error, t('VALIDATION_ERROR_ACTIVE_URL', 'The _attribute_ is not a valid URL.').replace('_attribute_', t('URL', 'URL')))
336
- Vibration.vibrate()
345
+ vibrateApp()
337
346
  }
338
347
  }
339
348
 
@@ -341,12 +350,12 @@ const SignupFormUI = (props: SignupParams) => {
341
350
  setRecaptchaVerified(false)
342
351
  if (!recaptchaConfig?.siteKey) {
343
352
  showToast(ToastType.Error, t('NO_RECAPTCHA_SITE_KEY', 'The config doesn\'t have recaptcha site key'));
344
- Vibration.vibrate()
353
+ vibrateApp()
345
354
  return
346
355
  }
347
356
  if (!recaptchaConfig?.baseUrl) {
348
357
  showToast(ToastType.Error, t('NO_RECAPTCHA_BASE_URL', 'The config doesn\'t have recaptcha base url'));
349
- Vibration.vibrate()
358
+ vibrateApp()
350
359
  return
351
360
  }
352
361
  recaptchaRef.current.open()
@@ -390,11 +399,13 @@ const SignupFormUI = (props: SignupParams) => {
390
399
  baseUrl: configs?.security_recaptcha_base_url?.value || null
391
400
  })
392
401
  showToast(ToastType.Info, t('TRY_AGAIN', 'Please try again'))
393
- Vibration.vibrate()
402
+ vibrateApp()
394
403
  return
395
404
  }
396
- formState.result?.result && showToast(ToastType.Error, formState.result?.result[0]);
397
- formState.result?.result && Vibration.vibrate()
405
+ formState.result?.result && formState.result?.result[0]?.includes("_") ?
406
+ showToast(ToastType.Error, t(`${formState.result?.result[0]}`, 'Phone number already used')) :
407
+ showToast(ToastType.Error, formState.result?.result[0])
408
+ formState.result?.result && vibrateApp()
398
409
  setIsLoadingVerifyModal(false);
399
410
  }
400
411
  }, [formState]);
@@ -402,7 +413,7 @@ const SignupFormUI = (props: SignupParams) => {
402
413
  useEffect(() => {
403
414
  if (Object.keys(errors).length > 0) {
404
415
  setIsLoadingVerifyModal(false);
405
- Vibration.vibrate()
416
+ vibrateApp()
406
417
  }
407
418
  }, [errors])
408
419
 
@@ -431,7 +442,7 @@ const SignupFormUI = (props: SignupParams) => {
431
442
  ? verifyPhoneState?.result?.result
432
443
  : verifyPhoneState?.result?.result[0];
433
444
  verifyPhoneState.result?.result && showToast(ToastType.Error, message);
434
- verifyPhoneState.result?.result && Vibration.vibrate()
445
+ verifyPhoneState.result?.result && vibrateApp()
435
446
  setIsLoadingVerifyModal(false);
436
447
  return;
437
448
  }
@@ -591,7 +602,7 @@ const SignupFormUI = (props: SignupParams) => {
591
602
  control={control}
592
603
  render={({ onChange, value }: any) => (
593
604
  <OInput
594
- placeholder={t(field.name)}
605
+ placeholder={t(field.name?.replace(/\s/g, '_')?.toUpperCase(), field.name)}
595
606
  style={style.inputStyle}
596
607
  icon={
597
608
  field.code === 'email'
@@ -930,7 +941,7 @@ const SignupFormUI = (props: SignupParams) => {
930
941
  (
931
942
  <FacebookLogin
932
943
  notificationState={notificationState}
933
- handleErrors={(err: any) => { showToast(ToastType.Error, err), Vibration.vibrate() }}
944
+ handleErrors={(err: any) => { showToast(ToastType.Error, err), vibrateApp() }}
934
945
  handleLoading={(val: boolean) => setIsFBLoading(val)}
935
946
  handleSuccessFacebookLogin={handleSuccessFacebook}
936
947
  />
@@ -939,7 +950,7 @@ const SignupFormUI = (props: SignupParams) => {
939
950
  <GoogleLogin
940
951
  notificationState={notificationState}
941
952
  webClientId={configs?.google_login_client_id?.value}
942
- handleErrors={(err: any) => { showToast(ToastType.Error, err), Vibration.vibrate() }}
953
+ handleErrors={(err: any) => { showToast(ToastType.Error, err), vibrateApp() }}
943
954
  handleLoading={(val: boolean) => setIsFBLoading(val)}
944
955
  handleSuccessGoogleLogin={handleSuccessFacebook}
945
956
  />
@@ -947,7 +958,7 @@ const SignupFormUI = (props: SignupParams) => {
947
958
  {(configs?.apple_login_client_id?.value !== '' && configs?.apple_login_client_id?.value !== null) && appleLoginEnabled && (
948
959
  <AppleLogin
949
960
  notificationState={notificationState}
950
- handleErrors={(err: any) => { showToast(ToastType.Error, err), Vibration.vibrate() }}
961
+ handleErrors={(err: any) => { showToast(ToastType.Error, err), vibrateApp() }}
951
962
  handleLoading={(val: boolean) => setIsFBLoading(val)}
952
963
  handleSuccessAppleLogin={handleSuccessFacebook}
953
964
  />