ordering-ui-react-native 0.16.30 → 0.16.31-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 (205) hide show
  1. package/package.json +8 -5
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/ActiveOrders/index.tsx +61 -63
  4. package/src/components/ActiveOrders/styles.tsx +8 -14
  5. package/src/components/AddressForm/index.tsx +4 -1
  6. package/src/components/BusinessBasicInformation/index.tsx +11 -19
  7. package/src/components/BusinessInformation/index.tsx +33 -4
  8. package/src/components/BusinessInformation/styles.tsx +2 -2
  9. package/src/components/BusinessProductsList/index.tsx +10 -10
  10. package/src/components/BusinessesListing/index.tsx +1 -1
  11. package/src/components/Checkout/index.tsx +2 -1
  12. package/src/components/LanguageSelector/index.tsx +21 -16
  13. package/src/components/LoginForm/index.tsx +15 -0
  14. package/src/components/Messages/index.tsx +2 -2
  15. package/src/components/NotificationSetting/index.tsx +85 -0
  16. package/src/components/OrderDetails/index.tsx +2 -20
  17. package/src/components/OrdersOption/index.tsx +54 -56
  18. package/src/components/PaymentOptions/index.tsx +335 -365
  19. package/src/components/PaymentOptionsWebView/index.tsx +120 -121
  20. package/src/components/ReviewDriver/index.tsx +1 -1
  21. package/src/components/ReviewOrder/index.tsx +2 -1
  22. package/src/components/ReviewProducts/index.tsx +11 -0
  23. package/src/components/SignupForm/index.tsx +15 -0
  24. package/src/components/SingleProductReview/index.tsx +8 -5
  25. package/src/components/StripeElementsForm/index.tsx +25 -16
  26. package/src/components/VerifyPhone/styles.tsx +1 -2
  27. package/src/components/shared/OBottomPopup.tsx +6 -2
  28. package/src/index.tsx +2 -0
  29. package/src/pages/BusinessesListing.tsx +7 -6
  30. package/src/pages/OrderDetails.tsx +1 -1
  31. package/src/pages/ReviewDriver.tsx +2 -2
  32. package/src/pages/ReviewOrder.tsx +2 -2
  33. package/src/types/@fatnlazycat/react-native-recaptcha-v3/index.d.ts +1 -0
  34. package/src/utils/index.tsx +2 -1
  35. package/themes/business/index.tsx +4 -0
  36. package/themes/business/src/components/BusinessController/index.tsx +2 -2
  37. package/themes/business/src/components/Chat/index.tsx +42 -34
  38. package/themes/business/src/components/DriverMap/index.tsx +7 -5
  39. package/themes/business/src/components/DriverSchedule/index.tsx +71 -0
  40. package/themes/business/src/components/DriverSchedule/styles.tsx +6 -0
  41. package/themes/business/src/components/LoginForm/index.tsx +111 -74
  42. package/themes/business/src/components/MapView/index.tsx +12 -1
  43. package/themes/business/src/components/MessagesOption/index.tsx +11 -1
  44. package/themes/business/src/components/NewOrderNotification/index.tsx +26 -41
  45. package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
  46. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +25 -19
  47. package/themes/business/src/components/OrdersListManager/index.tsx +10 -3
  48. package/themes/business/src/components/OrdersOption/index.tsx +65 -21
  49. package/themes/business/src/components/OrdersOption/styles.tsx +5 -1
  50. package/themes/business/src/components/OrdersOptionBusiness/index.tsx +15 -1
  51. package/themes/business/src/components/OrdersOptionCity/index.tsx +15 -1
  52. package/themes/business/src/components/OrdersOptionDate/index.tsx +19 -6
  53. package/themes/business/src/components/OrdersOptionDelivery/index.tsx +15 -1
  54. package/themes/business/src/components/OrdersOptionDriver/index.tsx +15 -1
  55. package/themes/business/src/components/OrdersOptionPaymethod/index.tsx +15 -1
  56. package/themes/business/src/components/OrdersOptionStatus/index.tsx +10 -1
  57. package/themes/business/src/components/PreviousMessages/index.tsx +17 -18
  58. package/themes/business/src/components/PreviousOrders/index.tsx +21 -23
  59. package/themes/business/src/components/ProductItemAccordion/index.tsx +3 -2
  60. package/themes/business/src/components/ReviewCustomer/index.tsx +1 -1
  61. package/themes/business/src/components/ScheduleBlocked/index.tsx +53 -0
  62. package/themes/business/src/components/UserFormDetails/index.tsx +5 -2
  63. package/themes/business/src/components/UserProfileForm/index.tsx +28 -4
  64. package/themes/business/src/components/shared/ODropDown.tsx +42 -8
  65. package/themes/business/src/components/shared/ODropDownCalendar.tsx +36 -7
  66. package/themes/business/src/components/shared/OModal.tsx +40 -37
  67. package/themes/business/src/types/index.tsx +15 -9
  68. package/themes/business/src/utils/index.tsx +10 -0
  69. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  70. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  71. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  72. package/themes/kiosk/src/components/BusinessesListing/index.tsx +2 -1
  73. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  74. package/themes/kiosk/src/components/LoginForm/index.tsx +121 -10
  75. package/themes/kiosk/src/components/LoginForm/styles.tsx +5 -0
  76. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  77. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  78. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  79. package/themes/kiosk/src/components/ProductForm/index.tsx +1 -14
  80. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  81. package/themes/kiosk/src/types/index.d.ts +2 -0
  82. package/themes/original/index.tsx +12 -0
  83. package/themes/original/src/components/AddressDetails/index.tsx +1 -1
  84. package/themes/original/src/components/AddressForm/index.tsx +139 -135
  85. package/themes/original/src/components/AddressList/index.tsx +1 -1
  86. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  87. package/themes/original/src/components/BusinessBasicInformation/index.tsx +311 -161
  88. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +6 -2
  89. package/themes/original/src/components/BusinessController/index.tsx +190 -113
  90. package/themes/original/src/components/BusinessController/styles.tsx +0 -7
  91. package/themes/original/src/components/BusinessItemAccordion/index.tsx +4 -4
  92. package/themes/original/src/components/BusinessListingSearch/BusinessControllerSkeletons/index.tsx +57 -0
  93. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/index.tsx +59 -0
  94. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/styles.tsx +13 -0
  95. package/themes/original/src/components/BusinessListingSearch/index.tsx +80 -128
  96. package/themes/original/src/components/BusinessListingSearch/styles.tsx +10 -12
  97. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +87 -0
  98. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/styles.tsx +12 -0
  99. package/themes/original/src/components/BusinessProductsList/index.tsx +49 -52
  100. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  101. package/themes/original/src/components/BusinessProductsListing/index.tsx +293 -177
  102. package/themes/original/src/components/BusinessProductsListing/styles.tsx +23 -11
  103. package/themes/original/src/components/BusinessReviews/index.tsx +6 -1
  104. package/themes/original/src/components/BusinessTypeFilter/index.tsx +109 -40
  105. package/themes/original/src/components/BusinessTypeFilter/styles.tsx +2 -0
  106. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +561 -0
  107. package/themes/original/src/components/BusinessesListing/{styles.tsx → Layout/Appointment/styles.tsx} +24 -10
  108. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +676 -0
  109. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +137 -0
  110. package/themes/original/src/components/BusinessesListing/index.tsx +105 -519
  111. package/themes/original/src/components/Cart/index.tsx +44 -12
  112. package/themes/original/src/components/Cart/styles.tsx +4 -0
  113. package/themes/original/src/components/CartContent/index.tsx +22 -16
  114. package/themes/original/src/components/Checkout/index.tsx +101 -61
  115. package/themes/original/src/components/Checkout/styles.tsx +0 -1
  116. package/themes/original/src/components/DriverTips/index.tsx +4 -4
  117. package/themes/original/src/components/DriverTips/styles.tsx +2 -1
  118. package/themes/original/src/components/Favorite/index.tsx +1 -0
  119. package/themes/original/src/components/FavoriteList/index.tsx +32 -2
  120. package/themes/original/src/components/FloatingButton/styles.tsx +1 -1
  121. package/themes/original/src/components/GPSButton/index.tsx +20 -19
  122. package/themes/original/src/components/GoogleMap/index.tsx +20 -12
  123. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +25 -10
  124. package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +4 -0
  125. package/themes/original/src/components/HelpGuide/index.tsx +9 -8
  126. package/themes/original/src/components/HelpOrder/index.tsx +9 -8
  127. package/themes/original/src/components/LanguageSelector/index.tsx +19 -14
  128. package/themes/original/src/components/LoginForm/Otp/index.tsx +95 -72
  129. package/themes/original/src/components/LoginForm/index.tsx +83 -45
  130. package/themes/original/src/components/LottieAnimation/index.tsx +69 -0
  131. package/themes/original/src/components/Messages/index.tsx +17 -17
  132. package/themes/original/src/components/MomentOption/index.tsx +1 -1
  133. package/themes/original/src/components/MomentSelector/index.tsx +197 -0
  134. package/themes/original/src/components/MomentSelector/styles.tsx +6 -0
  135. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +92 -92
  136. package/themes/original/src/components/MultiCheckout/index.tsx +6 -0
  137. package/themes/original/src/components/MultiOrdersDetails/index.tsx +20 -16
  138. package/themes/original/src/components/MyOrders/index.tsx +70 -6
  139. package/themes/original/src/components/NavBar/index.tsx +15 -9
  140. package/themes/original/src/components/NetworkError/index.tsx +5 -3
  141. package/themes/original/src/components/NotFoundSource/index.tsx +2 -1
  142. package/themes/original/src/components/Notifications/index.tsx +148 -0
  143. package/themes/original/src/components/Notifications/styles.tsx +17 -0
  144. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +167 -0
  145. package/themes/original/src/components/OrderDetails/index.tsx +190 -35
  146. package/themes/original/src/components/OrderDetails/styles.tsx +15 -2
  147. package/themes/original/src/components/OrderItAgain/index.tsx +75 -0
  148. package/themes/original/src/components/OrderItAgain/styles.tsx +10 -0
  149. package/themes/original/src/components/OrderProgress/index.tsx +8 -2
  150. package/themes/original/src/components/OrderSummary/index.tsx +3 -36
  151. package/themes/original/src/components/OrderTypeSelector/index.tsx +85 -36
  152. package/themes/original/src/components/OrderTypeSelector/styles.tsx +19 -1
  153. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +97 -106
  154. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +3 -0
  155. package/themes/original/src/components/OrdersOption/index.tsx +71 -55
  156. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  157. package/themes/original/src/components/PaymentOptions/index.tsx +41 -23
  158. package/themes/original/src/components/PhoneInputNumber/index.tsx +5 -11
  159. package/themes/original/src/components/PlaceSpot/index.tsx +243 -47
  160. package/themes/original/src/components/PlaceSpot/styles.tsx +0 -2
  161. package/themes/original/src/components/PreviousOrders/index.tsx +3 -2
  162. package/themes/original/src/components/ProductForm/index.tsx +633 -664
  163. package/themes/original/src/components/ProductForm/styles.tsx +9 -8
  164. package/themes/original/src/components/ProductItemAccordion/index.tsx +199 -128
  165. package/themes/original/src/components/ProductOption/index.tsx +1 -1
  166. package/themes/original/src/components/ProfessionalFilter/index.tsx +129 -0
  167. package/themes/original/src/components/ProfessionalFilter/styles.tsx +0 -0
  168. package/themes/original/src/components/ProfessionalProfile/index.tsx +309 -0
  169. package/themes/original/src/components/ProfessionalProfile/styles.tsx +46 -0
  170. package/themes/original/src/components/ReviewDriver/index.tsx +6 -6
  171. package/themes/original/src/components/ReviewOrder/index.tsx +18 -3
  172. package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
  173. package/themes/original/src/components/ReviewTrigger/index.tsx +118 -0
  174. package/themes/original/src/components/ReviewTrigger/styles.tsx +34 -0
  175. package/themes/original/src/components/SearchBar/index.tsx +5 -3
  176. package/themes/original/src/components/ServiceForm/index.tsx +637 -0
  177. package/themes/original/src/components/ServiceForm/styles.tsx +50 -0
  178. package/themes/original/src/components/SignupForm/index.tsx +350 -206
  179. package/themes/original/src/components/SingleOrderCard/index.tsx +229 -181
  180. package/themes/original/src/components/SingleOrderCard/styles.tsx +0 -7
  181. package/themes/original/src/components/SingleProductCard/index.tsx +199 -110
  182. package/themes/original/src/components/SingleProductCard/styles.tsx +1 -10
  183. package/themes/original/src/components/SingleProductReview/index.tsx +38 -5
  184. package/themes/original/src/components/SingleProductReview/styles.tsx +12 -0
  185. package/themes/original/src/components/StripeElementsForm/index.tsx +15 -7
  186. package/themes/original/src/components/UpsellingProducts/index.tsx +15 -5
  187. package/themes/original/src/components/UserDetails/index.tsx +31 -17
  188. package/themes/original/src/components/UserFormDetails/index.tsx +74 -81
  189. package/themes/original/src/components/UserProfile/index.tsx +54 -29
  190. package/themes/original/src/components/UserProfile/styles.ts +17 -0
  191. package/themes/original/src/components/UserProfileForm/index.tsx +15 -10
  192. package/themes/original/src/components/WalletTransactions/index.tsx +76 -0
  193. package/themes/original/src/components/WalletTransactions/styles.tsx +13 -0
  194. package/themes/original/src/components/Wallets/index.tsx +176 -164
  195. package/themes/original/src/components/Wallets/styles.tsx +12 -8
  196. package/themes/original/src/components/shared/CardAnimation.tsx +47 -0
  197. package/themes/original/src/components/shared/OBottomPopup.tsx +48 -15
  198. package/themes/original/src/components/shared/OButton.tsx +10 -3
  199. package/themes/original/src/components/shared/OIcon.tsx +8 -1
  200. package/themes/original/src/components/shared/OInput.tsx +3 -2
  201. package/themes/original/src/layouts/Container.tsx +13 -9
  202. package/themes/original/src/layouts/FloatingBottomContainer.tsx +5 -1
  203. package/themes/original/src/types/index.tsx +121 -30
  204. package/themes/original/src/utils/index.tsx +77 -0
  205. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -5,7 +5,6 @@ export const OrderDetailsContainer = styled.ScrollView`
5
5
  `
6
6
 
7
7
  export const NavBack = styled.TouchableOpacity`
8
-
9
8
  `
10
9
 
11
10
 
@@ -127,4 +126,18 @@ export const Divider = styled.View`
127
126
  `
128
127
  export const OrderAction = styled.View`
129
128
  flex-direction: row;
130
- `
129
+ `
130
+
131
+ export const PlaceSpotWrapper = styled.View`
132
+ padding-horizontal: 40px;
133
+ `
134
+
135
+ export const ProfessionalPhoto = styled.ImageBackground`
136
+ width: 100%;
137
+ position: relative;
138
+ max-height: 80px;
139
+ height: 80px;
140
+ width: 80px;
141
+ resize-mode: cover;
142
+ margin-right: 10px;
143
+ `;
@@ -0,0 +1,75 @@
1
+ import React from 'react'
2
+ import { OText } from '../shared'
3
+ import { useLanguage } from 'ordering-components/native'
4
+ import { useTheme } from 'styled-components/native'
5
+ import { SingleProductCard } from '../SingleProductCard'
6
+ import { OrderItAgainParams } from '../../types'
7
+ import { ScrollView, Dimensions } from 'react-native'
8
+ import moment from 'moment';
9
+ import {
10
+ Container,
11
+ ProductWrapper
12
+ } from './styles'
13
+
14
+ export const OrderItAgain = (props: OrderItAgainParams) => {
15
+ const {
16
+ onProductClick,
17
+ productList,
18
+ businessId,
19
+ categoryState,
20
+ currentCart,
21
+ handleUpdateProducts,
22
+ navigation,
23
+ searchValue
24
+ } = props
25
+
26
+ const [, t] = useLanguage()
27
+ const theme = useTheme()
28
+ const { width } = Dimensions.get('window');
29
+ const productsFilterd = productList?.length > 0 && productList.filter((product : any) => !searchValue || product?.name?.toLowerCase()?.includes(searchValue?.toLowerCase()))?.sort((a: any, b:any) => moment(b?.last_ordered_date).valueOf() - moment(a?.last_ordered_date).valueOf())
30
+ return (
31
+ productsFilterd?.length > 0 ? (
32
+ <Container>
33
+ <OText
34
+ size={16}
35
+ lineHeight={24}
36
+ color={theme.colors.textNormal}
37
+ style={{
38
+ fontWeight: '600',
39
+ marginBottom: 6
40
+ }}
41
+ >
42
+ {t('ORDER_IT_AGAIN', 'Order it again')}
43
+ </OText>
44
+ <OText
45
+ size={12}
46
+ lineHeight={18}
47
+ color={theme.colors.disabled}
48
+ >
49
+ {t('ORDER_IT_AGAIN_DESC', 'Quickly add items from your past orders.')}
50
+ </OText>
51
+ <ScrollView
52
+ horizontal
53
+ showsVerticalScrollIndicator={false}
54
+ showsHorizontalScrollIndicator={false}
55
+ >
56
+ {productsFilterd.map((product: any, i: number) => (
57
+ <ProductWrapper key={'prod_' + product.id + `_${i}`} style={{ width: width - 120, }}>
58
+ <SingleProductCard
59
+ isSoldOut={product.inventoried && !product.quantity}
60
+ product={product}
61
+ businessId={businessId}
62
+ categoryState={categoryState}
63
+ onProductClick={() => onProductClick(product)}
64
+ productAddedToCartLength={currentCart?.products?.reduce((productsLength: number, Cproduct: any) => { return productsLength + (Cproduct?.id === product?.id ? Cproduct?.quantity : 0) }, 0)}
65
+ handleUpdateProducts={handleUpdateProducts}
66
+ navigation={navigation}
67
+ isPreviously
68
+ />
69
+ </ProductWrapper>
70
+ ))}
71
+ </ScrollView>
72
+ </Container>
73
+ ) : null
74
+ )
75
+ }
@@ -0,0 +1,10 @@
1
+ import styled from 'styled-components/native'
2
+
3
+ export const Container = styled.View`
4
+ margin-top: 20px;
5
+ `
6
+
7
+ export const ProductWrapper = styled.View`
8
+ margin-right: 20px;
9
+ padding-top: 30px;
10
+ `
@@ -33,6 +33,7 @@ const OrderProgressUI = (props: any) => {
33
33
  const [{ optimizeImage, parseDate, parseTime }] = useUtils()
34
34
  const [lastOrder, setLastOrder] = useState<any>(null)
35
35
  const imageFails = theme.images.general.emptyActiveOrders
36
+ const [initialLoaded, setInitialLoaded] = useState(false)
36
37
 
37
38
  const styles = StyleSheet.create({
38
39
  main: {
@@ -135,16 +136,21 @@ const OrderProgressUI = (props: any) => {
135
136
  }
136
137
  }, [isFocused])
137
138
 
139
+ useEffect(() => {
140
+ if (orderList.loading || initialLoaded) return
141
+ setInitialLoaded(true)
142
+ }, [orderList.loading, initialLoaded])
143
+
138
144
  return (
139
145
  <>
140
- {orderList?.loading && (
146
+ {(orderList?.loading && !initialLoaded) && (
141
147
  <Placeholder Animation={Fade} height={Platform.OS === 'ios' ? 147.5 : 158}>
142
148
  <PlaceholderLine height={60} style={{ borderRadius: 8, marginBottom: 10 }} />
143
149
  <PlaceholderLine height={20} style={{ marginBottom: 10 }} />
144
150
  <PlaceholderLine height={40} style={{ borderRadius: 8, marginBottom: 10 }} />
145
151
  </Placeholder>
146
152
  )}
147
- {!orderList?.loading && orderList?.orders?.length > 0 && lastOrder && (
153
+ {(!orderList?.loading || initialLoaded) && orderList?.orders?.length > 0 && lastOrder && (
148
154
  <View style={styles.main}>
149
155
  <OrderInfoWrapper style={{ flex: 1 }}>
150
156
  <View style={styles.logoWrapper}>
@@ -26,7 +26,6 @@ import AntIcon from 'react-native-vector-icons/AntDesign'
26
26
  import { TaxInformation } from '../TaxInformation';
27
27
  import { TouchableOpacity } from 'react-native';
28
28
  import { OAlert } from '../../../../../src/components/shared'
29
- import { PlaceSpot } from '../PlaceSpot'
30
29
 
31
30
  const OrderSummaryUI = (props: any) => {
32
31
  const {
@@ -50,9 +49,7 @@ const OrderSummaryUI = (props: any) => {
50
49
  const [validationFields] = useValidationFields();
51
50
  const [openTaxModal, setOpenTaxModal] = useState<any>({ open: false, data: null, type: '' })
52
51
  const [confirm, setConfirm] = useState<any>({ open: false, content: null, handleOnAccept: null, id: null, title: null })
53
- const [openPlaceModal, setOpenPlaceModal] = useState(false)
54
52
  const isCouponEnabled = validationFields?.fields?.checkout?.coupon?.enabled;
55
- const placeSpotTypes = [3, 4]
56
53
 
57
54
  const handleDeleteClick = (product: any) => {
58
55
  removeProduct(product, cart)
@@ -295,33 +292,15 @@ const OrderSummaryUI = (props: any) => {
295
292
  {cart?.total >= 1 && (
296
293
  <View style={{ marginTop: 15, borderTopWidth: 1, borderTopColor: '#d9d9d9' }}>
297
294
  <OSTable style={{ marginTop: 15 }}>
298
- <OText size={14} style={{ fontWeight: 'bold' }}>
295
+ <OText size={14} style={{ fontWeight: 'bold' }} color={theme.colors.textNormal}>
299
296
  {t('TOTAL', 'Total')}
300
297
  </OText>
301
- <OText size={14} style={{ fontWeight: 'bold' }} >
302
- {parsePrice(cart?.total >= 0 ? cart?.total : 0)}
298
+ <OText size={14} style={{ fontWeight: 'bold' }} color={theme.colors.textNormal}>
299
+ {parsePrice(cart?.balance >= 0 ? cart?.balance : 0)}
303
300
  </OText>
304
301
  </OSTable>
305
302
  </View>
306
303
  )}
307
- {placeSpotTypes.includes(orderState?.options?.type) && (
308
- <OSTable style={{ marginTop: 15 }}>
309
- <OText size={14} lineHeight={21} weight={'600'}>
310
- {t('SPOT', 'Spot')}: {cart?.place?.name || t('NO_SELECTED', 'No selected')}
311
- </OText>
312
- <TouchableOpacity onPress={() => setOpenPlaceModal(true)}>
313
- <OText
314
- size={14}
315
- lineHeight={21}
316
- weight={'600'}
317
- color={theme.colors.primary}
318
- style={{ textDecorationLine: 'underline' }}
319
- >
320
- {t('EDIT', 'Edit')}
321
- </OText>
322
- </TouchableOpacity>
323
- </OSTable>
324
- )}
325
304
  {cart?.status !== 2 && (
326
305
  <OSTable>
327
306
  <View style={{ width: '100%', marginTop: 20 }}>
@@ -370,18 +349,6 @@ const OrderSummaryUI = (props: any) => {
370
349
  products={cart?.products}
371
350
  />
372
351
  </OModal>
373
- <OModal
374
- open={openPlaceModal}
375
- title={t('CHOOSE_YOUR_SPOT', 'Choose your spot')}
376
- onClose={() => setOpenPlaceModal(false)}
377
- entireModal
378
- >
379
- <PlaceSpot
380
- cart={cart}
381
- isOpenPlaceSpot={openPlaceModal}
382
- setOpenPlaceModal={setOpenPlaceModal}
383
- />
384
- </OModal>
385
352
  <OAlert
386
353
  open={confirm.open}
387
354
  title={confirm.title}
@@ -1,4 +1,4 @@
1
- import React from 'react'
1
+ import React, { useEffect } from 'react'
2
2
  import {
3
3
  OrderTypeControl,
4
4
  useLanguage,
@@ -6,28 +6,32 @@ import {
6
6
  } from 'ordering-components/native'
7
7
  import { useTheme } from 'styled-components/native';
8
8
  import { Platform, View } from 'react-native'
9
- import { BgImage, ListWrapper, MaskCont, OrderTypeWrapper, Wrapper } from './styles'
9
+ import { BgImage, ListWrapper, MaskCont, OrderTypeWrapper, OTab, OTabs, TabBtn, Wrapper } from './styles'
10
10
  import { OrderTypeSelectParams } from '../../types'
11
11
  import { OIcon, OText } from '../shared'
12
12
  import NavBar from '../NavBar';
13
13
  import { ORDER_TYPES } from '../../config/constants';
14
+ import AntDesignIcon from 'react-native-vector-icons/AntDesign'
14
15
 
15
16
  const OrderTypeSelectorUI = (props: OrderTypeSelectParams) => {
16
17
  const {
17
18
  navigation,
18
19
  handleChangeOrderType,
20
+ handleChangeType,
19
21
  typeSelected,
20
22
  defaultValue,
21
23
  configTypes,
22
24
  orderTypes,
23
- setOrderTypeValue
25
+ setOrderTypeValue,
26
+ isChewLayout,
27
+ chewOrderTypes
24
28
  } = props
25
29
 
26
30
  const theme = useTheme();
27
31
  const [orderState] = useOrder();
28
32
  const [, t] = useLanguage();
29
33
  const _orderTypes = orderTypes.filter((type: any) => configTypes?.includes(type.value));
30
-
34
+
31
35
  const items = _orderTypes.map((type) => {
32
36
  return {
33
37
  value: type.value,
@@ -42,43 +46,88 @@ const OrderTypeSelectorUI = (props: OrderTypeSelectParams) => {
42
46
  if (!orderState.loading) {
43
47
  setOrderTypeValue && setOrderTypeValue(orderType)
44
48
  handleChangeOrderType(orderType)
45
- goToBack();
49
+ if (!isChewLayout) {
50
+ goToBack();
51
+ }
46
52
  }
47
53
  }
48
54
 
55
+ useEffect(() => {
56
+ handleChangeType && handleChangeType(typeSelected)
57
+ }, [typeSelected])
58
+
49
59
  return (
50
60
  <Wrapper>
51
- <NavBar
52
- onActionLeft={() => goToBack()}
53
- btnStyle={{ paddingLeft: 0 }}
54
- paddingTop={0}
55
- style={{ paddingBottom: 0 }}
56
- title={t('HOW_WILL_YOU_DELIVERY_TYPE', 'How will your order type?')}
57
- titleAlign={'center'}
58
- titleStyle={{ fontSize: 14 }}
59
- />
60
- {
61
- items.length > 0 && (
62
- <ListWrapper>
63
- {
64
- items && items.map((item: any, idx: number) =>
65
- <OrderTypeWrapper activeOpacity={0.8} key={idx} disabled={orderState.loading} onPress={() => handleChangeOrderTypeCallback(item.value)}>
66
- <BgImage source={theme.images.orderTypes[`type${item?.value || 1}`]} resizeMode={'cover'} style={{opacity: item?.value == typeSelected || typeSelected === undefined ? 1 : 0.4}}>
67
- <MaskCont>
68
- <OText size={12} lineHeight={18} color={theme.colors.white} weight={Platform.OS === 'android' ? 'bold' : '600'}>{item?.label}</OText>
69
- <OText size={10} lineHeight={15} color={theme.colors.white}>{item?.description}</OText>
70
- <View style={{flexDirection: 'row', alignItems: 'center'}}>
71
- <OText size={10} lineHeight={15} color={theme.colors.white}>{t('START_MY_ORDER', 'Start my order')}</OText>
72
- <OIcon src={theme.images.general.arrow_left} width={16} color={theme.colors.white} style={{transform: [{ rotate: '180deg' }], marginStart: 4}} />
73
- </View>
74
- </MaskCont>
75
- </BgImage>
76
- </OrderTypeWrapper>
77
- )
78
- }
79
- </ListWrapper>
80
- )
81
- }
61
+ {isChewLayout ? (
62
+ <View>
63
+ <OTabs
64
+ horizontal
65
+ showsHorizontalScrollIndicator={false}
66
+ >
67
+ {chewOrderTypes?.map((type: any) => (
68
+ <TabBtn
69
+ key={type.value}
70
+ onPress={() => handleChangeOrderTypeCallback(type.value)}
71
+ >
72
+ <OTab
73
+ style={{
74
+ borderBottomColor:
75
+ type.value === typeSelected
76
+ ? theme.colors.textNormal
77
+ : theme.colors.border,
78
+ }}>
79
+ <OText
80
+ size={14}
81
+ color={
82
+ type.value === typeSelected
83
+ ? theme.colors.textNormal
84
+ : theme.colors.disabled
85
+ }
86
+ weight={type.value === typeSelected ? 'bold' : 'normal'}>
87
+ {type.name}
88
+ </OText>
89
+ </OTab>
90
+ </TabBtn>
91
+ ))}
92
+ </OTabs>
93
+ </View>
94
+ ) : (
95
+ <>
96
+ <NavBar
97
+ onActionLeft={() => goToBack()}
98
+ btnStyle={{ paddingLeft: 0, width: 50 }}
99
+ paddingTop={0}
100
+ style={{ paddingBottom: 0 }}
101
+ title={t('HOW_WILL_YOU_DELIVERY_TYPE', 'How will your order type?')}
102
+ titleAlign={'center'}
103
+ titleStyle={{ fontSize: 14 }}
104
+ noMargin
105
+ />
106
+ {
107
+ items.length > 0 && (
108
+ <ListWrapper>
109
+ {
110
+ items && items.map((item: any, idx: number) =>
111
+ <OrderTypeWrapper activeOpacity={0.8} key={idx} disabled={orderState.loading} onPress={() => handleChangeOrderTypeCallback(item.value)}>
112
+ <BgImage source={theme.images.orderTypes[`type${item?.value || 1}`]} resizeMode={'cover'} style={{ opacity: item?.value == typeSelected || typeSelected === undefined ? 1 : 0.4 }}>
113
+ <MaskCont>
114
+ <OText size={12} lineHeight={18} color={theme.colors.white} weight={Platform.OS === 'android' ? 'bold' : '600'}>{item?.label}</OText>
115
+ <OText size={10} lineHeight={15} color={theme.colors.white}>{item?.description}</OText>
116
+ <View style={{ flexDirection: 'row', alignItems: 'center' }}>
117
+ <OText size={10} lineHeight={15} color={theme.colors.white}>{t('START_MY_ORDER', 'Start my order')}</OText>
118
+ <AntDesignIcon name='arrowleft' size={26} color={theme.colors.white} style={{ transform: [{ rotate: '180deg' }], marginStart: 4 }} />
119
+ </View>
120
+ </MaskCont>
121
+ </BgImage>
122
+ </OrderTypeWrapper>
123
+ )
124
+ }
125
+ </ListWrapper>
126
+ )
127
+ }
128
+ </>
129
+ )}
130
+
82
131
  </Wrapper>
83
132
  )
84
133
  }
@@ -24,4 +24,22 @@ export const MaskCont = styled.View`
24
24
  padding: 16px 39px;
25
25
  background-color: #0000004D;
26
26
  height: 100%;
27
- `;
27
+ `;
28
+
29
+ export const OTabs = styled.View`
30
+ flex-direction: row;
31
+ width: 100%;
32
+ margin-bottom: -1px;
33
+ justify-content: space-between;
34
+ `;
35
+
36
+ export const OTab = styled.View`
37
+ padding-bottom: 10px;
38
+ border-bottom-width: 1px;
39
+ padding-horizontal: 10px;
40
+ `;
41
+
42
+ export const TabBtn = styled.TouchableOpacity`
43
+ min-height: 30px;
44
+ height: 30px;
45
+ `;
@@ -1,5 +1,5 @@
1
- import React, { useEffect } from 'react'
2
- import { BusinessList as BusinessListController, useOrder } from 'ordering-components/native'
1
+ import React from 'react'
2
+ import { useOrder } from 'ordering-components/native'
3
3
  import { BusinessController } from '../../BusinessController'
4
4
  import { Fade, Placeholder, PlaceholderLine } from 'rn-placeholder';
5
5
 
@@ -12,30 +12,95 @@ import {
12
12
  } from 'react-native';
13
13
  import { PreviousBusinessOrderedParams } from '../../../types';
14
14
 
15
- export const PreviousBusinessOrderedUI = (props: PreviousBusinessOrderedParams) => {
15
+ const BusinessControllerList = ({ businesses, onBusinessClick, navigation, orderState, handleCustomUpdate, style }: any) => {
16
+ return (
17
+ <>
18
+ {businesses?.result?.map((business: any, i: number) => (
19
+ <BusinessController
20
+ key={`${business.id}_` + i}
21
+ business={business}
22
+ isBusinessOpen={business.open}
23
+ handleCustomClick={() => onBusinessClick(business)}
24
+ orderType={orderState?.options?.type}
25
+ navigation={navigation}
26
+ businessHeader={business?.header}
27
+ businessFeatured={business?.featured}
28
+ businessLogo={business?.logo}
29
+ businessReviews={business?.reviews}
30
+ businessDeliveryPrice={business?.delivery_price}
31
+ businessDeliveryTime={business?.delivery_time}
32
+ businessPickupTime={business?.pickup_time}
33
+ businessDistance={business?.distance}
34
+ handleCustomUpdate={handleCustomUpdate}
35
+ style={style}
36
+ />
37
+ ))}
38
+ </>
39
+ )
40
+ }
41
+
42
+ const BusinessSkeletons = () => {
43
+ return (
44
+ <>
45
+ {[...Array(4).keys()].map((item, i) => (
46
+ <Placeholder
47
+ Animation={Fade}
48
+ key={i}
49
+ style={{ marginBottom: 20 }}>
50
+ <View style={{ width: '100%' }}>
51
+ <PlaceholderLine
52
+ height={200}
53
+ style={{ marginBottom: 20, borderRadius: 25 }}
54
+ />
55
+ <View style={{ paddingHorizontal: 10 }}>
56
+ <View
57
+ style={{
58
+ flexDirection: 'row',
59
+ justifyContent: 'space-between',
60
+ }}>
61
+ <PlaceholderLine
62
+ height={25}
63
+ width={40}
64
+ style={{ marginBottom: 10 }}
65
+ />
66
+ <PlaceholderLine
67
+ height={25}
68
+ width={20}
69
+ style={{ marginBottom: 10 }}
70
+ />
71
+ </View>
72
+ <PlaceholderLine
73
+ height={20}
74
+ width={30}
75
+ style={{ marginBottom: 10 }}
76
+ />
77
+ <PlaceholderLine
78
+ height={20}
79
+ width={80}
80
+ style={{ marginBottom: 10 }}
81
+ />
82
+ </View>
83
+ </View>
84
+ </Placeholder>
85
+ ))}
86
+ </>
87
+ )
88
+ }
89
+
90
+ export const PreviousBusinessOrdered = (props: PreviousBusinessOrderedParams) => {
16
91
  const {
17
92
  navigation,
18
- businessesList,
19
- setBusinessLoading,
20
- businessId,
93
+ businesses,
21
94
  onNavigationRedirect,
22
95
  isBusinessesSearchList,
23
- businessLoading
96
+ handleUpdateBusinesses,
24
97
  } = props
25
98
 
26
99
  const [orderState] = useOrder()
27
100
  const windowWidth = Dimensions.get('window').width;
28
-
29
101
  const onBusinessClick = (business: any) => {
30
- onNavigationRedirect('Business', { store: business.slug })
102
+ onNavigationRedirect('Business', { store: business.slug, logo: business.logo, header: business.header })
31
103
  }
32
- useEffect(() => {
33
- if (businessesList?.loading && businessesList?.businesses?.length === 0) {
34
- setBusinessLoading(true)
35
- } else {
36
- setBusinessLoading(false)
37
- }
38
- }, [businessesList?.loading])
39
104
 
40
105
  const styles = StyleSheet.create({
41
106
  container: {
@@ -43,95 +108,33 @@ export const PreviousBusinessOrderedUI = (props: PreviousBusinessOrderedParams)
43
108
  },
44
109
  });
45
110
 
46
- const BusinessControllerList = ({ style }: any) => {
47
- return (
48
- <>
49
- {businessesList.businesses?.filter((business: any) => businessId?.includes(business?.id))?.map((business: any, i: number) => (
50
- <BusinessController
51
- key={`${business.id}_` + i}
52
- business={business}
53
- isBusinessOpen={business.open}
54
- handleCustomClick={() => onBusinessClick(business)}
55
- orderType={orderState?.options?.type}
56
- navigation={navigation}
57
- businessHeader={business?.header}
58
- businessFeatured={business?.featured}
59
- businessLogo={business?.logo}
60
- businessReviews={business?.reviews}
61
- businessDeliveryPrice={business?.delivery_price}
62
- businessDeliveryTime={business?.delivery_time}
63
- businessPickupTime={business?.pickup_time}
64
- businessDistance={business?.distance}
65
- style={style}
66
- />
67
- ))}
68
- </>
69
- )
70
- }
71
-
72
- const BusinessSkeletons = () => {
73
- return (
74
- <>
75
- {[...Array(4).keys()].map((item, i) => (
76
- <Placeholder
77
- Animation={Fade}
78
- key={i}
79
- style={{ marginBottom: 20 }}>
80
- <View style={{ width: '100%' }}>
81
- <PlaceholderLine
82
- height={200}
83
- style={{ marginBottom: 20, borderRadius: 25 }}
84
- />
85
- <View style={{ paddingHorizontal: 10 }}>
86
- <View
87
- style={{
88
- flexDirection: 'row',
89
- justifyContent: 'space-between',
90
- }}>
91
- <PlaceholderLine
92
- height={25}
93
- width={40}
94
- style={{ marginBottom: 10 }}
95
- />
96
- <PlaceholderLine
97
- height={25}
98
- width={20}
99
- style={{ marginBottom: 10 }}
100
- />
101
- </View>
102
- <PlaceholderLine
103
- height={20}
104
- width={30}
105
- style={{ marginBottom: 10 }}
106
- />
107
- <PlaceholderLine
108
- height={20}
109
- width={80}
110
- style={{ marginBottom: 10 }}
111
- />
112
- </View>
113
- </View>
114
- </Placeholder>
115
- ))}
116
- </>
117
- )
118
- }
119
-
120
111
  return (
121
112
  <ScrollView horizontal={isBusinessesSearchList} style={styles.container} showsVerticalScrollIndicator={false}>
122
113
  {isBusinessesSearchList ? (
123
114
  <>
124
- {!businessLoading && (
115
+ {!businesses?.loading && (
125
116
  <BusinessControllerList
126
- style={{ width: windowWidth - 80, marginRight: 20 }}
117
+ style={{ width: windowWidth - 120, marginRight: 20 }}
118
+ onBusinessClick={onBusinessClick}
119
+ orderState={orderState}
120
+ navigation={navigation}
121
+ businesses={businesses}
122
+ handleCustomUpdate={handleUpdateBusinesses}
127
123
  />
128
124
  )}
129
125
  </>
130
126
  ) : (
131
127
  <ListWrapper>
132
- <BusinessControllerList />
133
- {businessesList.loading && (
128
+ {businesses?.loading ? (
134
129
  <BusinessSkeletons />
130
+ ) : (
131
+ <BusinessControllerList
132
+ onBusinessClick={onBusinessClick}
133
+ orderState={orderState}
134
+ navigation={navigation}
135
+ businesses={businesses}
136
+ handleCustomUpdate={handleUpdateBusinesses}
137
+ />
135
138
  )}
136
139
  </ListWrapper>
137
140
  )}
@@ -139,15 +142,3 @@ export const PreviousBusinessOrderedUI = (props: PreviousBusinessOrderedParams)
139
142
  </ScrollView>
140
143
  )
141
144
  }
142
-
143
- export const PreviousBusinessOrdered = (props: PreviousBusinessOrderedParams) => {
144
- const previousBusinessOrderedController = {
145
- ...props,
146
- UIComponent: PreviousBusinessOrderedUI,
147
- paginationSettings: { initialPage: 1, pageSize: 50, controlType: 'infinity' }
148
- }
149
-
150
- return (
151
- <BusinessListController {...previousBusinessOrderedController} />
152
- )
153
- }
@@ -11,6 +11,7 @@ export const PreviousProductsOrdered = (props: PreviousProductsOrderedParams) =>
11
11
  const {
12
12
  products,
13
13
  onProductClick,
14
+ handleUpdateProducts,
14
15
  isBusinessesSearchList
15
16
  } = props
16
17
 
@@ -28,12 +29,14 @@ export const PreviousProductsOrdered = (props: PreviousProductsOrderedParams) =>
28
29
  {products?.map((product: any) => (
29
30
  <SingleProductCard
30
31
  key={product?.id}
32
+ isProductId
31
33
  isSoldOut={(product.inventoried && !product.quantity)}
32
34
  product={product}
33
35
  businessId={product?.business?.id}
34
36
  onProductClick={onProductClick}
35
37
  style={style}
36
38
  productAddedToCartLength={0}
39
+ handleUpdateProducts={handleUpdateProducts}
37
40
  />
38
41
  ))}
39
42
  </>