ordering-ui-react-native 0.17.99 → 0.18.0-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 (257) 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 +0 -1
  16. package/themes/business/src/components/Chat/index.tsx +163 -123
  17. package/themes/business/src/components/DriverMap/index.tsx +17 -6
  18. package/themes/business/src/components/DriverSchedule/index.tsx +45 -8
  19. package/themes/business/src/components/FloatingButton/index.tsx +34 -31
  20. package/themes/business/src/components/GoogleMap/index.tsx +58 -57
  21. package/themes/business/src/components/LoginForm/index.tsx +5 -2
  22. package/themes/business/src/components/MapView/index.tsx +14 -10
  23. package/themes/business/src/components/MessagesOption/index.tsx +22 -94
  24. package/themes/business/src/components/NewOrderNotification/index.tsx +123 -96
  25. package/themes/business/src/components/NotFoundSource/index.tsx +2 -2
  26. package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
  27. package/themes/business/src/components/OrderDetails/Delivery.tsx +209 -15
  28. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +91 -43
  29. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +87 -66
  30. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +200 -0
  31. package/themes/business/src/components/OrderDetailsLogistic/styles.tsx +5 -0
  32. package/themes/business/src/components/OrderMessage/index.tsx +19 -18
  33. package/themes/business/src/components/OrderSummary/index.tsx +114 -123
  34. package/themes/business/src/components/OrdersListManager/index.tsx +7 -2
  35. package/themes/business/src/components/OrdersListManager/utils.tsx +1 -1
  36. package/themes/business/src/components/OrdersOption/index.tsx +60 -47
  37. package/themes/business/src/components/PreviousMessages/FooterMessageComponent.tsx +103 -0
  38. package/themes/business/src/components/PreviousMessages/index.tsx +97 -55
  39. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +21 -29
  40. package/themes/business/src/components/PreviousOrders/OrderList.tsx +93 -0
  41. package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +1 -1
  42. package/themes/business/src/components/PreviousOrders/index.tsx +198 -221
  43. package/themes/business/src/components/PreviousOrders/styles.tsx +10 -0
  44. package/themes/business/src/components/ProductItemAccordion/index.tsx +7 -1
  45. package/themes/business/src/components/ReviewCustomer/index.tsx +18 -13
  46. package/themes/business/src/components/StoresList/index.tsx +3 -4
  47. package/themes/business/src/components/UserProfileForm/index.tsx +14 -15
  48. package/themes/business/src/components/WebsocketStatus/index.tsx +171 -0
  49. package/themes/business/src/components/WebsocketStatus/styles.tsx +28 -0
  50. package/themes/business/src/components/shared/OModal.tsx +16 -9
  51. package/themes/business/src/types/index.tsx +24 -10
  52. package/themes/business/src/utils/index.tsx +29 -2
  53. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  54. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  55. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  56. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  57. package/themes/kiosk/src/components/Intro/index.tsx +16 -1
  58. package/themes/kiosk/src/components/LoginForm/index.tsx +7 -5
  59. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  60. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  61. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  62. package/themes/kiosk/src/components/PhoneInputNumber/index.tsx +2 -2
  63. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  64. package/themes/original/index.tsx +7 -3
  65. package/themes/original/src/components/AddressDetails/index.tsx +19 -3
  66. package/themes/original/src/components/AddressForm/index.tsx +33 -15
  67. package/themes/original/src/components/AddressForm/styles.tsx +1 -1
  68. package/themes/original/src/components/AddressList/index.tsx +5 -8
  69. package/themes/original/src/components/AddressList/styles.tsx +4 -4
  70. package/themes/original/src/components/AnalyticsSegment/index.tsx +193 -10
  71. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  72. package/themes/original/src/components/AppleLogin/styles.tsx +3 -1
  73. package/themes/original/src/components/BusinessBasicInformation/index.tsx +74 -38
  74. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +11 -13
  75. package/themes/original/src/components/BusinessController/index.tsx +35 -44
  76. package/themes/original/src/components/BusinessController/styles.tsx +12 -5
  77. package/themes/original/src/components/BusinessFeaturedController/index.tsx +21 -54
  78. package/themes/original/src/components/BusinessFeaturedController/styles.tsx +8 -0
  79. package/themes/original/src/components/BusinessInformation/index.tsx +140 -85
  80. package/themes/original/src/components/BusinessInformation/styles.tsx +2 -2
  81. package/themes/original/src/components/BusinessItemAccordion/index.tsx +25 -26
  82. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/index.tsx +1 -1
  83. package/themes/original/src/components/BusinessListingSearch/index.tsx +346 -341
  84. package/themes/original/src/components/BusinessListingSearch/styles.tsx +1 -19
  85. package/themes/original/src/components/BusinessPreorder/index.tsx +105 -22
  86. package/themes/original/src/components/BusinessPreorder/styles.tsx +14 -0
  87. package/themes/original/src/components/BusinessProductsCategories/index.tsx +2 -3
  88. package/themes/original/src/components/BusinessProductsList/index.tsx +15 -7
  89. package/themes/original/src/components/BusinessProductsList/styles.tsx +8 -3
  90. package/themes/original/src/components/BusinessProductsListing/UpsellingRedirect.tsx +1 -1
  91. package/themes/original/src/components/BusinessProductsListing/index.tsx +162 -39
  92. package/themes/original/src/components/BusinessProductsListing/styles.tsx +4 -5
  93. package/themes/original/src/components/BusinessReviews/index.tsx +4 -2
  94. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +1 -1
  95. package/themes/original/src/components/BusinessesListing/Layout/Appointment/styles.tsx +5 -5
  96. package/themes/original/src/components/BusinessesListing/Layout/Original/FlatListBusinessListFooter.tsx +69 -0
  97. package/themes/original/src/components/BusinessesListing/Layout/Original/FlatListBusinessListHeader.tsx +406 -0
  98. package/themes/original/src/components/BusinessesListing/Layout/Original/FlatListBusinessListing.tsx +76 -0
  99. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +37 -404
  100. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -1
  101. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  102. package/themes/original/src/components/Cart/index.tsx +49 -47
  103. package/themes/original/src/components/CartContent/index.tsx +99 -38
  104. package/themes/original/src/components/CartContent/styles.tsx +6 -6
  105. package/themes/original/src/components/CartStoresListing/styles.tsx +2 -2
  106. package/themes/original/src/components/Checkout/index.tsx +324 -43
  107. package/themes/original/src/components/Checkout/styles.tsx +17 -0
  108. package/themes/original/src/components/CitiesControl/index.tsx +1 -1
  109. package/themes/original/src/components/CitiesControl/styles.tsx +1 -1
  110. package/themes/original/src/components/CouponControl/index.tsx +10 -3
  111. package/themes/original/src/components/DatePicker/index.tsx +17 -0
  112. package/themes/original/src/components/DatePicker/styles.tsx +20 -0
  113. package/themes/original/src/components/DriverTips/index.tsx +12 -4
  114. package/themes/original/src/components/FacebookLogin/styles.tsx +3 -1
  115. package/themes/original/src/components/Favorite/index.tsx +4 -9
  116. package/themes/original/src/components/Favorite/styles.tsx +0 -2
  117. package/themes/original/src/components/FloatingButton/styles.tsx +1 -1
  118. package/themes/original/src/components/GPSButton/index.tsx +7 -5
  119. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +8 -3
  120. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +42 -5
  121. package/themes/original/src/components/GiftCard/PurchaseGiftCard/styles.tsx +3 -1
  122. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +84 -8
  123. package/themes/original/src/components/GiftCard/RedeemGiftCard/styles.tsx +1 -1
  124. package/themes/original/src/components/GiftCard/SendGiftCard/styles.tsx +1 -1
  125. package/themes/original/src/components/GoogleLogin/styles.tsx +1 -1
  126. package/themes/original/src/components/GoogleMap/index.tsx +63 -7
  127. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
  128. package/themes/original/src/components/HighestRatedBusinesses/styles.tsx +1 -1
  129. package/themes/original/src/components/Home/index.tsx +14 -5
  130. package/themes/original/src/components/LastOrder/index.tsx +2 -1
  131. package/themes/original/src/components/LastOrders/index.tsx +2 -1
  132. package/themes/original/src/components/LoginForm/Otp/index.tsx +91 -25
  133. package/themes/original/src/components/LoginForm/index.tsx +64 -34
  134. package/themes/original/src/components/LottieAnimation/index.tsx +88 -63
  135. package/themes/original/src/components/MessageListing/index.tsx +9 -2
  136. package/themes/original/src/components/Messages/index.tsx +15 -4
  137. package/themes/original/src/components/Messages/styles.tsx +1 -1
  138. package/themes/original/src/components/MomentOption/index.tsx +44 -39
  139. package/themes/original/src/components/MomentSelector/index.tsx +1 -1
  140. package/themes/original/src/components/MultiCart/index.tsx +1 -1
  141. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +161 -49
  142. package/themes/original/src/components/MultiCheckout/index.tsx +348 -70
  143. package/themes/original/src/components/MultiCheckout/styles.tsx +3 -1
  144. package/themes/original/src/components/MultiOrdersDetails/index.tsx +2 -2
  145. package/themes/original/src/components/MyOrders/index.tsx +16 -5
  146. package/themes/original/src/components/NavBar/index.tsx +20 -13
  147. package/themes/original/src/components/NetworkError/styles.tsx +2 -2
  148. package/themes/original/src/components/NotFoundSource/index.tsx +14 -10
  149. package/themes/original/src/components/Notifications/index.tsx +2 -4
  150. package/themes/original/src/components/Notifications/styles.tsx +0 -1
  151. package/themes/original/src/components/OrderDetails/OrderEta.tsx +76 -0
  152. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +22 -6
  153. package/themes/original/src/components/OrderDetails/index.tsx +721 -670
  154. package/themes/original/src/components/OrderDetails/styles.tsx +24 -8
  155. package/themes/original/src/components/OrderItAgain/index.tsx +3 -1
  156. package/themes/original/src/components/OrderProgress/index.tsx +34 -25
  157. package/themes/original/src/components/OrderProgress/styles.tsx +1 -1
  158. package/themes/original/src/components/OrderSummary/index.tsx +62 -57
  159. package/themes/original/src/components/OrderTypeSelector/index.tsx +5 -6
  160. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/styles.tsx +1 -1
  161. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +13 -13
  162. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/styles.tsx +1 -1
  163. package/themes/original/src/components/OrdersOption/index.tsx +44 -21
  164. package/themes/original/src/components/OrdersOption/styles.tsx +2 -2
  165. package/themes/original/src/components/PageBanner/index.tsx +65 -29
  166. package/themes/original/src/components/PageBanner/styles.tsx +0 -3
  167. package/themes/original/src/components/PaymentOptionCard/index.tsx +180 -0
  168. package/themes/original/src/components/PaymentOptionStripe/styles.tsx +3 -0
  169. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  170. package/themes/original/src/components/PaymentOptions/index.tsx +100 -34
  171. package/themes/original/src/components/PhoneInputNumber/index.tsx +18 -4
  172. package/themes/original/src/components/ProductForm/ActionButton.tsx +120 -0
  173. package/themes/original/src/components/ProductForm/ExtraOptions.tsx +56 -0
  174. package/themes/original/src/components/ProductForm/index.tsx +106 -170
  175. package/themes/original/src/components/ProductForm/styles.tsx +3 -3
  176. package/themes/original/src/components/ProductItemAccordion/index.tsx +13 -6
  177. package/themes/original/src/components/ProductOptionSubOption/index.tsx +49 -20
  178. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +10 -9
  179. package/themes/original/src/components/ProfessionalProfile/index.tsx +35 -6
  180. package/themes/original/src/components/ProfessionalProfile/styles.tsx +3 -3
  181. package/themes/original/src/components/Promotions/index.tsx +6 -6
  182. package/themes/original/src/components/Promotions/styles.tsx +3 -3
  183. package/themes/original/src/components/ReviewDriver/styles.tsx +1 -1
  184. package/themes/original/src/components/ReviewOrder/styles.tsx +1 -1
  185. package/themes/original/src/components/ReviewProducts/index.tsx +16 -7
  186. package/themes/original/src/components/ReviewProducts/styles.tsx +1 -1
  187. package/themes/original/src/components/ScheduleAccordion/index.tsx +3 -3
  188. package/themes/original/src/components/ServiceForm/index.tsx +36 -24
  189. package/themes/original/src/components/ServiceForm/styles.tsx +4 -4
  190. package/themes/original/src/components/SignupForm/index.tsx +27 -16
  191. package/themes/original/src/components/SingleOrderCard/index.tsx +44 -20
  192. package/themes/original/src/components/SingleOrderCard/styles.tsx +1 -1
  193. package/themes/original/src/components/SingleProductCard/index.tsx +13 -10
  194. package/themes/original/src/components/SingleProductCard/styles.tsx +8 -3
  195. package/themes/original/src/components/SingleProductReview/styles.tsx +1 -1
  196. package/themes/original/src/components/StripeCardsList/index.tsx +61 -5
  197. package/themes/original/src/components/StripeElementsForm/index.tsx +48 -34
  198. package/themes/original/src/components/StripeElementsForm/naked.tsx +12 -1
  199. package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +170 -0
  200. package/themes/original/src/components/UpsellingProducts/UpsellingLayout.tsx +86 -0
  201. package/themes/original/src/components/UpsellingProducts/index.tsx +16 -205
  202. package/themes/original/src/components/UpsellingProducts/styles.tsx +19 -0
  203. package/themes/original/src/components/UserDetails/index.tsx +3 -1
  204. package/themes/original/src/components/UserFormDetails/index.tsx +100 -22
  205. package/themes/original/src/components/UserFormDetails/styles.tsx +1 -1
  206. package/themes/original/src/components/UserProfile/index.tsx +8 -26
  207. package/themes/original/src/components/UserProfileForm/index.tsx +30 -31
  208. package/themes/original/src/components/UserVerification/index.tsx +55 -50
  209. package/themes/original/src/components/WalletTransactionItem/index.tsx +2 -2
  210. package/themes/original/src/components/WalletTransactions/index.tsx +3 -3
  211. package/themes/original/src/components/WalletTransactions/styles.tsx +1 -0
  212. package/themes/original/src/components/Wallets/index.tsx +48 -60
  213. package/themes/original/src/components/Wallets/styles.tsx +3 -4
  214. package/themes/original/src/components/shared/HeaderTitle.tsx +1 -1
  215. package/themes/original/src/components/shared/OButton.tsx +3 -3
  216. package/themes/original/src/components/shared/OInput.tsx +4 -5
  217. package/themes/original/src/components/shared/OModal.tsx +15 -17
  218. package/themes/original/src/layouts/Container.tsx +1 -1
  219. package/themes/original/src/types/index.tsx +28 -6
  220. package/themes/original/src/utils/index.tsx +180 -13
  221. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
  222. package/src/navigators/BottomNavigator.tsx +0 -117
  223. package/src/navigators/CheckoutNavigator.tsx +0 -66
  224. package/src/navigators/HomeNavigator.tsx +0 -202
  225. package/src/navigators/NavigationRef.tsx +0 -7
  226. package/src/navigators/RootNavigator.tsx +0 -269
  227. package/src/pages/Account.tsx +0 -34
  228. package/src/pages/AddressForm.tsx +0 -62
  229. package/src/pages/AddressList.tsx +0 -24
  230. package/src/pages/BusinessProductsList.tsx +0 -81
  231. package/src/pages/BusinessesListing.tsx +0 -43
  232. package/src/pages/CartList.tsx +0 -49
  233. package/src/pages/Checkout.tsx +0 -101
  234. package/src/pages/ForgotPassword.tsx +0 -24
  235. package/src/pages/Help.tsx +0 -23
  236. package/src/pages/HelpAccountAndPayment.tsx +0 -23
  237. package/src/pages/HelpGuide.tsx +0 -23
  238. package/src/pages/HelpOrder.tsx +0 -23
  239. package/src/pages/Home.tsx +0 -36
  240. package/src/pages/IntroductoryTutorial.tsx +0 -170
  241. package/src/pages/Login.tsx +0 -47
  242. package/src/pages/MomentOption.tsx +0 -30
  243. package/src/pages/MultiCheckout.tsx +0 -31
  244. package/src/pages/MultiOrdersDetails.tsx +0 -27
  245. package/src/pages/MyOrders.tsx +0 -40
  246. package/src/pages/NetworkError.tsx +0 -24
  247. package/src/pages/NotFound.tsx +0 -22
  248. package/src/pages/OrderDetails.tsx +0 -25
  249. package/src/pages/ProductDetails.tsx +0 -55
  250. package/src/pages/Profile.tsx +0 -36
  251. package/src/pages/ReviewDriver.tsx +0 -30
  252. package/src/pages/ReviewOrder.tsx +0 -32
  253. package/src/pages/ReviewProducts.tsx +0 -30
  254. package/src/pages/Sessions.tsx +0 -22
  255. package/src/pages/Signup.tsx +0 -53
  256. package/src/pages/SpinnerLoader.tsx +0 -10
  257. 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
+ `;
@@ -1,5 +1,5 @@
1
1
  import React, { useState, useEffect, useRef } from 'react'
2
- import { StyleSheet, Platform, View, Dimensions } from 'react-native'
2
+ import { StyleSheet, Platform, View, Dimensions, Text } from 'react-native'
3
3
  import { useUtils, useLanguage, useConfig } from 'ordering-components/native'
4
4
  import { useTheme } from 'styled-components/native'
5
5
  import CalendarPicker from 'react-native-calendar-picker'
@@ -60,7 +60,12 @@ export const ProfessionalProfile = (props: ProfessionalProfileParams) => {
60
60
  },
61
61
  photoStyle: {
62
62
  alignSelf: 'center'
63
- }
63
+ },
64
+ dropDownRow: {
65
+ color: theme.colors.primary,
66
+ fontSize: 14,
67
+ marginHorizontal: 0
68
+ },
64
69
  })
65
70
 
66
71
  const onDateChange = (date: any) => {
@@ -92,6 +97,28 @@ export const ProfessionalProfile = (props: ProfessionalProfileParams) => {
92
97
  setIsEnabled(menu?.schedule?.[day]?.enabled || false)
93
98
  }
94
99
 
100
+ const getMomentTime = (time) => {
101
+ const _moment = moment(`${moment(selectDate).format('YYYY-MM-DD')} ${time}`, 'YYYY-MM-DD HH:mm').toDate()
102
+ return _moment
103
+ }
104
+
105
+ const isBusyTime = (professional, selectedMoment) => {
106
+ if (!selectedMoment) return false
107
+ const startDay = moment(selectedMoment).utc().format('d')
108
+ const isStartScheduleEnabled = professional?.schedule?.[startDay]?.enabled
109
+ if (!isStartScheduleEnabled) return true
110
+
111
+ if (professional?.busy_times?.length === 0) return false
112
+
113
+ const busyTimes = professional?.busy_times
114
+
115
+ const valid = busyTimes.some(item => {
116
+ return (moment.utc(item?.start).local().valueOf() <= moment(selectedMoment).valueOf() &&
117
+ moment(selectedMoment).valueOf() < moment.utc(item?.end).local().valueOf())
118
+ })
119
+ return valid
120
+ }
121
+
95
122
  const getTimes = (curdate: any, menu: any) => {
96
123
  validateSelectedDate(curdate, menu)
97
124
  const date = new Date()
@@ -238,10 +265,12 @@ export const ProfessionalProfile = (props: ProfessionalProfileParams) => {
238
265
  paddingTop: 8,
239
266
  paddingHorizontal: 12
240
267
  }}
241
- rowTextStyle={{
242
- color: theme.colors.disabled,
243
- fontSize: 14,
244
- marginHorizontal: 0
268
+ renderCustomizedRowChild={(item, index) => {
269
+ return (
270
+ <Text style={[styles.dropDownRow, { color: isBusyTime(professional, getMomentTime(item.value)) ? theme.colors.lightGray : theme.colors.primary } ]}>
271
+ {item.text}
272
+ </Text>
273
+ )
245
274
  }}
246
275
  renderDropdownIcon={() => dropDownIcon()}
247
276
  dropdownOverlayColor='transparent'
@@ -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}>
@@ -1,6 +1,6 @@
1
1
  import React, { useState, useEffect, useRef } from 'react'
2
2
  import { useTheme } from 'styled-components/native'
3
- import { Platform, View, StyleSheet, Dimensions, ScrollView, TouchableOpacity } from 'react-native'
3
+ import { Platform, View, StyleSheet, Dimensions, ScrollView, TouchableOpacity, Text } from 'react-native'
4
4
  import { OText, OButton, OModal, OIcon } from '../shared'
5
5
  import FastImage from 'react-native-fast-image'
6
6
  import IconAntDesign from 'react-native-vector-icons/AntDesign'
@@ -110,31 +110,41 @@ const ServiceFormUI = (props: ServiceFormParams) => {
110
110
  height: 40,
111
111
  marginBottom: 30
112
112
  },
113
+ dropDownRow: {
114
+ color: theme.colors.primary,
115
+ fontSize: 14,
116
+ marginHorizontal: 0
117
+ },
113
118
  professionalList: {
114
- paddingHorizontal: 40,
115
- paddingVertical: 30
119
+ paddingHorizontal: 20,
120
+ paddingVertical: 30,
116
121
  }
117
122
  })
118
123
 
119
- const isBusyTime = (professional: any) => {
120
- if (!dateSelected) return false
121
- const startDay = moment(dateSelected).utc().format('d')
124
+ const getMomentTime = (time) => {
125
+ const _moment = moment(`${moment(selectDate).format('YYYY-MM-DD')} ${time}`, 'YYYY-MM-DD HH:mm').toDate()
126
+ return _moment
127
+ }
128
+
129
+ const isBusyTime = (professional, selectedMoment) => {
130
+ if (!selectedMoment) return false
131
+ const startDay = moment(selectedMoment).utc().format('d')
122
132
  const isStartScheduleEnabled = professional?.schedule?.[startDay]?.enabled
123
133
  const duration = product?.duration ?? 0
124
- const endDay = moment(dateSelected).add(duration - 1, 'minutes').utc().format('d')
134
+ const endDay = moment(selectedMoment).add(duration - 1, 'minutes').utc().format('d')
125
135
  const isEndScheduleEnabled = professional?.schedule?.[endDay]?.enabled
126
136
  if (!isStartScheduleEnabled || !isEndScheduleEnabled) return true
127
137
 
128
138
  if (professional?.busy_times?.length === 0) return false
129
-
139
+
130
140
  const busyTimes = isCartProduct
131
- ? professional?.busy_times.filter((item: any) => !(item.start === productCart?.calendar_event?.start && item.end === productCart?.calendar_event?.end))
141
+ ? professional?.busy_times.filter(item => !(item.start === productCart?.calendar_event?.start && item.end === productCart?.calendar_event?.end))
132
142
  : [...professional?.busy_times]
133
- const valid = busyTimes.some((item: any) => {
134
- return (moment.utc(item?.start).local().valueOf() <= moment(dateSelected).valueOf() &&
135
- moment(dateSelected).valueOf() < moment.utc(item?.end).local().valueOf()) ||
136
- (moment.utc(item?.start).local().valueOf() <= moment(dateSelected).add(duration, 'minutes').valueOf() &&
137
- moment(dateSelected).add(duration, 'minutes').valueOf() < moment.utc(item?.end).local().valueOf())
143
+ const valid = busyTimes.some(item => {
144
+ return (moment.utc(item?.start).local().valueOf() <= moment(selectedMoment).valueOf() &&
145
+ moment(selectedMoment).valueOf() < moment.utc(item?.end).local().valueOf()) ||
146
+ (moment.utc(item?.start).local().valueOf() < moment(selectedMoment).add(duration, 'minutes').valueOf() &&
147
+ moment(selectedMoment).add(duration, 'minutes').valueOf() < moment.utc(item?.end).local().valueOf())
138
148
  })
139
149
  return valid
140
150
  }
@@ -391,9 +401,9 @@ const ServiceFormUI = (props: ServiceFormParams) => {
391
401
  size={12}
392
402
  weight={'400'}
393
403
  lineHeight={17}
394
- color={isBusyTime(currentProfessional) ? theme.colors.danger5 : theme.colors.success500}
404
+ color={isBusyTime(currentProfessional, dateSelected) ? theme.colors.danger5 : theme.colors.success500}
395
405
  >
396
- {isBusyTime(currentProfessional)
406
+ {isBusyTime(currentProfessional, dateSelected)
397
407
  ? t('BUSY_ON_SELECTED_TIME', 'Busy on selected time')
398
408
  : t('AVAILABLE', 'Available')
399
409
  }
@@ -473,10 +483,12 @@ const ServiceFormUI = (props: ServiceFormParams) => {
473
483
  paddingTop: 8,
474
484
  paddingHorizontal: 12
475
485
  }}
476
- rowTextStyle={{
477
- color: theme.colors.disabled,
478
- fontSize: 14,
479
- marginHorizontal: 0
486
+ renderCustomizedRowChild={(item, index) => {
487
+ return (
488
+ <Text style={[styles.dropDownRow, { color: isBusyTime(currentProfessional, getMomentTime(item.value)) ? theme.colors.lightGray : theme.colors.primary } ]}>
489
+ {item.text}
490
+ </Text>
491
+ )
480
492
  }}
481
493
  renderDropdownIcon={() => dropDownIcon()}
482
494
  dropdownOverlayColor='transparent'
@@ -549,7 +561,7 @@ const ServiceFormUI = (props: ServiceFormParams) => {
549
561
  ? t('SOLD_OUT', 'Sold out')
550
562
  : t('BOOK', 'Book'))}
551
563
  style={styles.buttonStyle}
552
- isDisabled={isSoldOut || maxProductQuantity <= 0 || !currentProfessional?.id || !dateSelected || isBusyTime(currentProfessional)}
564
+ isDisabled={isSoldOut || maxProductQuantity <= 0 || !currentProfessional?.id || !dateSelected || isBusyTime(currentProfessional, dateSelected)}
553
565
  textStyle={{ fontSize: 14, color: theme.colors.white }}
554
566
  />
555
567
  )}
@@ -590,7 +602,7 @@ const ServiceFormUI = (props: ServiceFormParams) => {
590
602
  <PlaceholderLine width={60} height={20} />
591
603
  </Placeholder>
592
604
  ) : (
593
- <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>
594
606
  )}
595
607
  </TouchableOpacity>
596
608
  )}
@@ -647,9 +659,9 @@ const ServiceFormUI = (props: ServiceFormParams) => {
647
659
  size={12}
648
660
  weight={'400'}
649
661
  lineHeight={17}
650
- color={isBusyTime(professional) ? theme.colors.danger5 : theme.colors.success500}
662
+ color={isBusyTime(professional, dateSelected) ? theme.colors.danger5 : theme.colors.success500}
651
663
  >
652
- {isBusyTime(professional)
664
+ {isBusyTime(professional, dateSelected)
653
665
  ? t('BUSY_ON_SELECTED_TIME', 'Busy on selected time')
654
666
  : t('AVAILABLE', 'Available')
655
667
  }
@@ -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
+ `