ordering-ui-react-native 0.15.25 → 0.15.26-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 (159) hide show
  1. package/package.json +3 -2
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/BusinessController/index.tsx +8 -2
  4. package/src/components/BusinessTypeFilter/index.tsx +4 -1
  5. package/src/components/BusinessesListing/index.tsx +1 -1
  6. package/src/components/Checkout/index.tsx +0 -1
  7. package/src/components/LanguageSelector/index.tsx +7 -2
  8. package/src/components/OrderDetails/index.tsx +2 -2
  9. package/src/components/PaymentOptions/index.tsx +9 -16
  10. package/src/components/PaymentOptionsWebView/index.tsx +123 -124
  11. package/src/components/SingleProductCard/index.tsx +16 -4
  12. package/src/components/StripeElementsForm/index.tsx +27 -48
  13. package/src/components/UserProfileForm/index.tsx +63 -6
  14. package/src/components/UserProfileForm/styles.tsx +8 -0
  15. package/src/components/VerifyPhone/styles.tsx +1 -2
  16. package/src/components/shared/OModal.tsx +1 -1
  17. package/src/config.json +0 -2
  18. package/src/hooks/useCountdownTimer.tsx +26 -0
  19. package/src/navigators/HomeNavigator.tsx +6 -0
  20. package/src/pages/BusinessProductsList.tsx +1 -0
  21. package/src/pages/BusinessesListing.tsx +1 -1
  22. package/src/pages/Checkout.tsx +1 -1
  23. package/src/pages/Sessions.tsx +22 -0
  24. package/src/types/index.tsx +5 -11
  25. package/src/utils/index.tsx +68 -1
  26. package/themes/business/index.tsx +2 -0
  27. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +103 -15
  28. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +6 -0
  29. package/themes/business/src/components/Chat/index.tsx +38 -86
  30. package/themes/business/src/components/Home/index.tsx +128 -55
  31. package/themes/business/src/components/Home/styles.tsx +8 -1
  32. package/themes/business/src/components/LoginForm/index.tsx +89 -2
  33. package/themes/business/src/components/LoginForm/styles.tsx +6 -0
  34. package/themes/business/src/components/NewOrderNotification/index.tsx +61 -98
  35. package/themes/business/src/components/OrderDetails/Business.tsx +2 -1
  36. package/themes/business/src/components/OrderDetails/Delivery.tsx +32 -15
  37. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +151 -89
  38. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +91 -17
  39. package/themes/business/src/components/OrderDetails/styles.tsx +7 -0
  40. package/themes/business/src/components/OrdersListManager/index.tsx +874 -0
  41. package/themes/business/src/components/OrdersListManager/styles.tsx +123 -0
  42. package/themes/business/src/components/OrdersListManager/utils.tsx +216 -0
  43. package/themes/business/src/components/OrdersOption/index.tsx +54 -50
  44. package/themes/business/src/components/PreviousOrders/index.tsx +75 -22
  45. package/themes/business/src/components/shared/OModal.tsx +1 -1
  46. package/themes/business/src/types/index.tsx +5 -1
  47. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  48. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  49. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  50. package/themes/kiosk/src/components/Cart/index.tsx +98 -24
  51. package/themes/kiosk/src/components/Cart/styles.tsx +6 -0
  52. package/themes/kiosk/src/components/CartBottomSheet/index.tsx +1 -1
  53. package/themes/kiosk/src/components/CartBottomSheet/styles.tsx +1 -1
  54. package/themes/kiosk/src/components/CartContent/index.tsx +13 -3
  55. package/themes/kiosk/src/components/CartItem/index.tsx +20 -8
  56. package/themes/kiosk/src/components/CustomerName/index.tsx +89 -88
  57. package/themes/kiosk/src/components/Intro/index.tsx +13 -13
  58. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  59. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  60. package/themes/kiosk/src/components/OrderDetails/index.tsx +136 -41
  61. package/themes/kiosk/src/components/OrderDetails/styles.tsx +5 -0
  62. package/themes/kiosk/src/components/OrderSummary/index.tsx +1 -1
  63. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +10 -12
  64. package/themes/kiosk/src/components/ProductForm/index.tsx +174 -125
  65. package/themes/kiosk/src/components/ProductForm/styles.tsx +1 -1
  66. package/themes/kiosk/src/components/ProductOption/index.tsx +1 -0
  67. package/themes/kiosk/src/components/ProductOption/styles.tsx +1 -0
  68. package/themes/kiosk/src/components/UpsellingProducts/index.tsx +48 -34
  69. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  70. package/themes/kiosk/src/types/index.d.ts +2 -0
  71. package/themes/original/index.tsx +178 -1
  72. package/themes/original/src/components/AddressForm/index.tsx +15 -10
  73. package/themes/original/src/components/AddressList/index.tsx +56 -18
  74. package/themes/original/src/components/AppleLogin/index.tsx +117 -78
  75. package/themes/original/src/components/BusinessBasicInformation/index.tsx +96 -45
  76. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +28 -1
  77. package/themes/original/src/components/BusinessController/index.tsx +52 -22
  78. package/themes/original/src/components/BusinessController/styles.tsx +22 -0
  79. package/themes/original/src/components/BusinessFeaturedController/index.tsx +20 -1
  80. package/themes/original/src/components/BusinessFeaturedController/styles.tsx +23 -0
  81. package/themes/original/src/components/BusinessListingSearch/index.tsx +121 -7
  82. package/themes/original/src/components/BusinessListingSearch/styles.tsx +14 -1
  83. package/themes/original/src/components/BusinessMenuList/index.tsx +11 -4
  84. package/themes/original/src/components/BusinessPreorder/index.tsx +142 -122
  85. package/themes/original/src/components/BusinessProductsCategories/index.tsx +9 -7
  86. package/themes/original/src/components/BusinessProductsList/index.tsx +127 -20
  87. package/themes/original/src/components/BusinessProductsList/styles.tsx +29 -2
  88. package/themes/original/src/components/BusinessProductsListing/index.tsx +92 -37
  89. package/themes/original/src/components/BusinessProductsListing/styles.tsx +22 -0
  90. package/themes/original/src/components/BusinessReviews/index.tsx +4 -25
  91. package/themes/original/src/components/BusinessTypeFilter/index.tsx +1 -2
  92. package/themes/original/src/components/BusinessesListing/index.tsx +51 -58
  93. package/themes/original/src/components/Cart/index.tsx +19 -15
  94. package/themes/original/src/components/CartContent/index.tsx +2 -2
  95. package/themes/original/src/components/Checkout/index.tsx +42 -27
  96. package/themes/original/src/components/ForgotPasswordForm/index.tsx +84 -4
  97. package/themes/original/src/components/GoogleMap/index.tsx +1 -0
  98. package/themes/original/src/components/Help/index.tsx +21 -4
  99. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +97 -89
  100. package/themes/original/src/components/Home/index.tsx +1 -1
  101. package/themes/original/src/components/LastOrders/index.tsx +12 -1
  102. package/themes/original/src/components/LoginForm/Otp/index.tsx +90 -0
  103. package/themes/original/src/components/LoginForm/Otp/styles.tsx +7 -0
  104. package/themes/original/src/components/LoginForm/index.tsx +389 -156
  105. package/themes/original/src/components/LoginForm/styles.tsx +7 -4
  106. package/themes/original/src/components/LogoutButton/index.tsx +7 -1
  107. package/themes/original/src/components/MessageListing/index.tsx +10 -1
  108. package/themes/original/src/components/Messages/index.tsx +34 -25
  109. package/themes/original/src/components/Messages/styles.tsx +1 -3
  110. package/themes/original/src/components/MomentOption/index.tsx +10 -1
  111. package/themes/original/src/components/MomentOption/styles.tsx +1 -1
  112. package/themes/original/src/components/OrderDetails/index.tsx +35 -28
  113. package/themes/original/src/components/OrderDetails/styles.tsx +1 -2
  114. package/themes/original/src/components/OrderProgress/index.tsx +4 -4
  115. package/themes/original/src/components/OrderProgress/styles.tsx +1 -0
  116. package/themes/original/src/components/OrderSummary/index.tsx +3 -3
  117. package/themes/original/src/components/OrderTypeSelector/index.tsx +4 -2
  118. package/themes/original/src/components/OrdersOption/index.tsx +25 -33
  119. package/themes/original/src/components/OrdersOption/styles.tsx +0 -6
  120. package/themes/original/src/components/PaymentOptionCash/index.tsx +2 -2
  121. package/themes/original/src/components/PaymentOptionWallet/index.tsx +22 -24
  122. package/themes/original/src/components/PaymentOptionWallet/styles.tsx +1 -1
  123. package/themes/original/src/components/PaymentOptions/index.tsx +9 -19
  124. package/themes/original/src/components/PhoneInputNumber/index.tsx +1 -1
  125. package/themes/original/src/components/PreviousOrders/index.tsx +19 -13
  126. package/themes/original/src/components/ProductForm/index.tsx +76 -61
  127. package/themes/original/src/components/ProductForm/styles.tsx +2 -2
  128. package/themes/original/src/components/ProductItemAccordion/index.tsx +2 -2
  129. package/themes/original/src/components/ProductOptionSubOption/index.tsx +18 -12
  130. package/themes/original/src/components/Promotions/index.tsx +250 -0
  131. package/themes/original/src/components/Promotions/styles.tsx +60 -0
  132. package/themes/original/src/components/ReviewOrder/index.tsx +10 -9
  133. package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
  134. package/themes/original/src/components/Sessions/index.tsx +160 -0
  135. package/themes/original/src/components/Sessions/styles.tsx +15 -0
  136. package/themes/original/src/components/SingleProductCard/index.tsx +47 -21
  137. package/themes/original/src/components/SingleProductCard/styles.tsx +28 -1
  138. package/themes/original/src/components/StripeElementsForm/index.tsx +55 -72
  139. package/themes/original/src/components/TaxInformation/index.tsx +10 -4
  140. package/themes/original/src/components/UpsellingProducts/index.tsx +87 -71
  141. package/themes/original/src/components/UserDetails/index.tsx +4 -95
  142. package/themes/original/src/components/UserFormDetails/index.tsx +32 -31
  143. package/themes/original/src/components/UserProfile/index.tsx +62 -14
  144. package/themes/original/src/components/UserProfileForm/index.tsx +20 -18
  145. package/themes/original/src/components/VerifyPhone/index.tsx +10 -7
  146. package/themes/original/src/components/VerifyPhone/styles.tsx +2 -1
  147. package/themes/original/src/components/Wallets/index.tsx +76 -9
  148. package/themes/original/src/components/Wallets/styles.tsx +21 -0
  149. package/themes/original/src/components/shared/HeaderTitle.tsx +21 -0
  150. package/themes/original/src/components/shared/OModal.tsx +1 -1
  151. package/themes/original/src/components/shared/index.tsx +2 -0
  152. package/themes/original/src/config/constants.tsx +6 -6
  153. package/themes/original/src/types/index.tsx +62 -5
  154. package/themes/original/src/utils/index.tsx +28 -2
  155. package/themes/single-business/src/components/AddressList/index.tsx +1 -1
  156. package/themes/single-business/src/components/OrderTypeSelector/index.tsx +6 -6
  157. package/themes/single-business/src/components/UserProfile/index.tsx +1 -1
  158. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
  159. package/src/components/StripeMethodForm/index.tsx +0 -168
@@ -197,7 +197,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
197
197
  {isFarAway && (
198
198
  <FarAwayMessage style={styles.farAwayMsg}>
199
199
  <Ionicons name='md-warning-outline' style={styles.iconStyle} />
200
- <OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textNormal}>{t('YOU_ARE_FAR_FROM_ADDRESS', 'You are far from this address')}</OText>
200
+ <OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textNormal}>{t('YOU_ARE_FAR_FROM_ADDRESS', 'Your are far from this address')}</OText>
201
201
  </FarAwayMessage>
202
202
  )}
203
203
  {!auth && (
@@ -410,8 +410,7 @@ const LoginFormUI = (props: LoginParams) => {
410
410
  textInputProps={{
411
411
  returnKeyType: 'next',
412
412
  onSubmitEditing: () => inputRef?.current?.focus?.(),
413
- style: { borderWidth: 0, fontSize: 12 },
414
- maxLength: 10
413
+ style: { borderWidth: 0, fontSize: 12 }
415
414
  }}
416
415
  textWrapStyle={{ borderColor: theme.colors.clear, borderWidth: 0, height: 40, paddingStart: 0 }}
417
416
  />
@@ -155,7 +155,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
155
155
  {isFarAway && (
156
156
  <FarAwayMessage style={styles.farAwayMsg}>
157
157
  <Ionicons name='md-warning-outline' style={styles.iconStyle} />
158
- <OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textNormal}>{t('YOU_ARE_FAR_FROM_ADDRESS', 'You are far from this address')}</OText>
158
+ <OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textNormal}>{t('YOU_ARE_FAR_FROM_ADDRESS', 'Your are far from this address')}</OText>
159
159
  </FarAwayMessage>
160
160
  )}
161
161
  <View style={styles.wrapperOrderOptions}>
@@ -10,7 +10,7 @@ import {
10
10
  useValidationFields,
11
11
  } from 'ordering-components/native';
12
12
 
13
- import { CheckoutAction, OrderTypeWrapper, FloatingLayout } from './styles';
13
+ import { CheckoutAction, OrderTypeWrapper, FloatingLayout, OSRow } from './styles';
14
14
 
15
15
  import { OSBill, OSCoupon, OSTable } from '../OrderSummary/styles';
16
16
 
@@ -90,6 +90,20 @@ const CartUI = (props: any) => {
90
90
 
91
91
  const goToBack = () => navigation.goBack();
92
92
 
93
+ const getIncludedTaxes = () => {
94
+ if (cart?.taxes === null) {
95
+ return cart.business.tax_type === 1 ? cart?.tax : 0
96
+ } else {
97
+ return cart?.taxes.reduce((taxIncluded: number, tax: any) => {
98
+ return taxIncluded + (tax.type === 1 ? tax.summary?.tax : 0)
99
+ }, 0)
100
+ }
101
+ }
102
+
103
+ const getIncludedTaxesDiscounts = () => {
104
+ return cart?.taxes?.filter((tax: any) => tax?.type === 1)?.reduce((carry: number, tax: any) => carry + (tax?.summary?.tax_after_discount ?? tax?.summary?.tax), 0)
105
+ }
106
+
93
107
  return (
94
108
  <>
95
109
  <Container>
@@ -177,13 +191,10 @@ const CartUI = (props: any) => {
177
191
  <OSTable>
178
192
  <OText>{t('SUBTOTAL', 'Subtotal')}</OText>
179
193
  <OText>
180
- {cart.business.tax_type === 1
181
- ? parsePrice((cart?.subtotal + cart?.tax) || 0)
182
- : parsePrice(cart?.subtotal || 0)}
194
+ {parsePrice(cart?.subtotal + getIncludedTaxes())}
183
195
  </OText>
184
196
  </OSTable>
185
- {cart?.discount > 0 && cart?.total >= 0 && orientationState?.orientation == PORTRAIT && (
186
-
197
+ {cart?.discount > 0 && cart?.total >= 0 && cart?.offers?.length === 0 && orientationState?.orientation == PORTRAIT && (
187
198
  <OSTable
188
199
  style={{
189
200
  backgroundColor: theme.colors.success,
@@ -226,44 +237,107 @@ const CartUI = (props: any) => {
226
237
  </OText>
227
238
  </OSTable>
228
239
  )}
229
- {cart.business.tax_type !== 1 && (
240
+ {
241
+ cart?.offers?.length > 0 && cart?.offers?.filter((offer: any) => offer?.target === 1)?.map((offer: any) => (
242
+ <OSTable key={offer.id}>
243
+ <OSRow>
244
+ <OText>{offer.name}</OText>
245
+ {offer.rate_type === 1 && (
246
+ <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
247
+ )}
248
+ </OSRow>
249
+ <OText>
250
+ - {parsePrice(offer?.summary?.discount)}
251
+ </OText>
252
+ </OSTable>
253
+ ))
254
+ }
255
+ {cart?.subtotal_with_discount > 0 && cart?.discount > 0 && cart?.total >= 0 && (
230
256
  <OSTable>
231
- <OText>
232
- {t('TAX', 'Tax')}
233
- {`(${verifyDecimals(cart?.business?.tax, parseNumber)}%)`}
234
- </OText>
235
- <OText>{parsePrice(cart?.tax || 0)}</OText>
257
+ <OText numberOfLines={1}>{t('SUBTOTAL_WITH_DISCOUNT', 'Subtotal with discount')}</OText>
258
+ {cart?.business?.tax_type === 1 ? (
259
+ <OText>{parsePrice(cart?.subtotal_with_discount + getIncludedTaxesDiscounts() ?? 0)}</OText>
260
+ ) : (
261
+ <OText>{parsePrice(cart?.subtotal_with_discount ?? 0)}</OText>
262
+ )}
236
263
  </OSTable>
237
264
  )}
265
+ {
266
+ cart.taxes?.length > 0 && cart.taxes.filter((tax: any) => tax.type === 2 && tax?.rate !== 0).map((tax: any) => (
267
+ <OSTable key={tax.id}>
268
+ <OSRow>
269
+ <OText>
270
+ {tax.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}{' '}
271
+ {`(${verifyDecimals(tax?.rate, parseNumber)}%)`}{' '}
272
+ </OText>
273
+ </OSRow>
274
+ <OText>{parsePrice(tax?.summary?.tax_after_discount ?? tax?.summary?.tax ?? 0)}</OText>
275
+ </OSTable>
276
+ ))
277
+ }
278
+ {
279
+ cart?.fees?.length > 0 && cart?.fees?.filter((fee: any) => !(fee.fixed === 0 && fee.percentage === 0)).map((fee: any) => (
280
+ <OSTable key={fee?.id}>
281
+ <OSRow>
282
+ <OText>
283
+ {fee.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}{' '}
284
+ ({fee?.fixed > 0 && `${parsePrice(fee?.fixed)}${fee.percentage > 0 ? ' + ' : ''}`}{fee.percentage > 0 && `${fee.percentage}%`}){' '}
285
+ </OText>
286
+ </OSRow>
287
+ <OText>{parsePrice(fee?.summary?.fixed + (fee?.summary?.percentage_after_discount ?? fee?.summary?.percentage) ?? 0)}</OText>
288
+ </OSTable>
289
+ ))
290
+ }
291
+ {
292
+ cart?.offers?.length > 0 && cart?.offers?.filter((offer: any) => offer?.target === 3)?.map((offer: any) => (
293
+ <OSTable key={offer.id}>
294
+ <OSRow>
295
+ <OText>{offer.name}</OText>
296
+ {offer.rate_type === 1 && (
297
+ <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
298
+ )}
299
+ </OSRow>
300
+ <OText>
301
+ - {parsePrice(offer?.summary?.discount)}
302
+ </OText>
303
+ </OSTable>
304
+ ))
305
+ }
238
306
  {selectedOrderType === 1 && cart?.delivery_price > 0 && (
239
307
  <OSTable>
240
308
  <OText>{t('DELIVERY_FEE', 'Delivery Fee')}</OText>
241
309
  <OText>{parsePrice(cart?.delivery_price)}</OText>
242
310
  </OSTable>
243
311
  )}
312
+ {
313
+ cart?.offers?.length > 0 && cart?.offers?.filter((offer: any) => offer?.target === 2)?.map((offer: any) => (
314
+ <OSTable key={offer.id}>
315
+ <OSRow>
316
+ <OText>{offer.name}</OText>
317
+ {offer.rate_type === 1 && (
318
+ <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
319
+ )}
320
+ </OSRow>
321
+ <OText>
322
+ - {parsePrice(offer?.summary?.discount)}
323
+ </OText>
324
+ </OSTable>
325
+ ))
326
+ }
244
327
  {cart?.driver_tip > 0 && (
245
328
  <OSTable>
246
329
  <OText>
247
330
  {t('DRIVER_TIP', 'Driver tip')}
248
331
  {cart?.driver_tip_rate > 0 &&
249
332
  parseInt(configs?.driver_tip_type?.value, 10) === 2 &&
250
- !!!parseInt(configs?.driver_tip_use_custom?.value, 10) &&
333
+ !parseInt(configs?.driver_tip_use_custom?.value, 10) &&
251
334
  (
252
- `(${parseNumber(cart?.driver_tip_rate)}%)`
335
+ `(${verifyDecimals(cart?.driver_tip_rate, parseNumber)}%)`
253
336
  )}
254
337
  </OText>
255
338
  <OText>{parsePrice(cart?.driver_tip)}</OText>
256
339
  </OSTable>
257
340
  )}
258
- {cart?.service_fee > 0 && (
259
- <OSTable>
260
- <OText>
261
- {t('SERVICE_FEE', 'Service Fee')}
262
- {`(${verifyDecimals(cart?.business?.service_fee, parseNumber)}%)`}
263
- </OText>
264
- <OText>{parsePrice(cart?.service_fee)}</OText>
265
- </OSTable>
266
- )}
267
341
  {!cart?.discount_type && isCouponEnabled && !isCartPending && orientationState?.orientation == PORTRAIT && (
268
342
  <OSTable>
269
343
  <OSCoupon>
@@ -279,7 +353,7 @@ const CartUI = (props: any) => {
279
353
  {t('TOTAL', 'Total')}
280
354
  </OText>
281
355
  <OText weight='bold' color={theme.colors.primary}>
282
- {cart?.total >= 1 && parsePrice(cart?.total)}
356
+ {parsePrice(cart?.total >= 0 ? cart?.total : 0)}
283
357
  </OText>
284
358
  </OSTable>
285
359
  </OSBill>
@@ -68,3 +68,9 @@ export const FloatingLayout = styled.View`
68
68
  padding-bottom: 20px;
69
69
  `)}
70
70
  `
71
+
72
+ export const OSRow = styled.View`
73
+ flex-direction: row;
74
+ overflow: hidden;
75
+ width: 80%;
76
+ `
@@ -179,7 +179,7 @@ const CartBottomSheetUI = (props: CartBottomSheetUIProps): React.ReactElement |
179
179
  <ProductForm
180
180
  productCart={curProduct}
181
181
  businessSlug={cart?.business?.slug}
182
- businessId={curProduct?.business_id}
182
+ businessId={cart?.business_id}
183
183
  categoryId={curProduct?.category_id}
184
184
  productId={curProduct?.id}
185
185
  onSave={handlerProductAction}
@@ -5,7 +5,7 @@ export const StyledContainer = styled.ScrollView`
5
5
  zIndex: 1000;
6
6
  width: 100%;
7
7
  background-color: #fff;
8
- padding: 20px 20px 20px 0px;
8
+ padding: 20px 0 0;
9
9
  bottom: 0;
10
10
  shadow-color: #000;
11
11
  shadow-opacity: 0.4;
@@ -1,6 +1,6 @@
1
1
  import React, { useEffect, useState } from 'react';
2
2
  import { useLanguage } from 'ordering-components/native';
3
-
3
+ import { useCartBottomSheet } from '../../providers/CartBottomSheetProvider';
4
4
  import { CCNotCarts } from './styles';
5
5
 
6
6
  import { Cart } from '../Cart';
@@ -22,6 +22,7 @@ export const CartContent = (props: any) => {
22
22
 
23
23
  const [, t] = useLanguage()
24
24
  const [isCartsLoading, setIsCartsLoading] = useState(false)
25
+ const [, { hideCartBottomSheet }] = useCartBottomSheet();
25
26
 
26
27
  const cartProps = {
27
28
  navigation,
@@ -33,6 +34,15 @@ export const CartContent = (props: any) => {
33
34
  resetInactivityTimeout,
34
35
  }
35
36
 
37
+ useEffect(() => {
38
+ if (!cart && showNotFound) {
39
+ navigation?.canGoBack()
40
+ ? navigation.goBack()
41
+ : props.onNavigationRedirect && props.onNavigationRedirect('Business')
42
+ hideCartBottomSheet()
43
+ }
44
+ }, [cart])
45
+
36
46
  const content = (
37
47
  <>
38
48
  {(isOrderStateCarts && cart) && (
@@ -46,13 +56,13 @@ export const CartContent = (props: any) => {
46
56
  }
47
57
  </>
48
58
  )}
49
- {(!cart && showNotFound) && (
59
+ {/* {(!cart && showNotFound) && (
50
60
  <CCNotCarts>
51
61
  <OText size={24} style={{ textAlign: 'center' }}>
52
62
  {t('CARTS_NOT_FOUND', 'You don\'t have carts available')}
53
63
  </OText>
54
64
  </CCNotCarts>
55
- )}
65
+ )} */}
56
66
  <Spinner visible={isCartsLoading} />
57
67
  </>
58
68
  )
@@ -1,6 +1,7 @@
1
1
  import React, { useState } from 'react';
2
- import { View, Animated, TouchableOpacity } from 'react-native';
2
+ import { View, Animated, TouchableOpacity, ImageBackground } from 'react-native';
3
3
  import { useLanguage, useUtils } from 'ordering-components/native';
4
+ import FastImage from 'react-native-fast-image'
4
5
 
5
6
  import {
6
7
  StyledCartItem,
@@ -70,13 +71,24 @@ const CartItem = (props: CartItemProps) => {
70
71
  >
71
72
  <StyledCartItem>
72
73
  <View style={{ flexDirection: 'row' }}>
73
- <OImage
74
- source={{ uri: product?.images || '' }}
75
- height={60}
76
- width={60}
77
- resizeMode="cover"
78
- borderRadius={6}
79
- />
74
+ {product?.images ? (
75
+ <FastImage
76
+ style={{ height: 60, width: 80, borderRadius: 6 }}
77
+ source={{
78
+ uri: product?.images,
79
+ priority: FastImage.priority.normal,
80
+ // cache:FastImage.cacheControl.web
81
+ }}
82
+ resizeMode={FastImage.resizeMode.cover}
83
+ />
84
+ ) : (
85
+ <ImageBackground
86
+ style={{ height: 60, width: 80, borderRadius: 6 }}
87
+ source={theme.images.dummies.product}
88
+ imageStyle={{ borderRadius: 6 }}
89
+ resizeMode='cover'
90
+ />
91
+ )}
80
92
 
81
93
  <View style={{ flexDirection: 'column', justifyContent: 'space-evenly', marginHorizontal: 15, marginTop: 10 }}>
82
94
  <View>
@@ -1,6 +1,6 @@
1
1
  import React, { useEffect } from 'react';
2
2
  import { useLanguage, ToastType, useToast } from 'ordering-components/native';
3
- import { _setStoreData } from '../../../../../src/providers/StoreUtil';
3
+ import { _setStoreData, _removeStoreData } from '../../../../../src/providers/StoreUtil';
4
4
 
5
5
  import { OButton, OInput, OText } from '../shared';
6
6
  import { useForm, Controller } from 'react-hook-form';
@@ -24,10 +24,15 @@ const CustomerName = (props: Props): React.ReactElement => {
24
24
  const [orientationState] = useDeviceOrientation();
25
25
 
26
26
  const onSubmit = (values: any) => {
27
- _setStoreData('customer_name', { customerName: values.name });
27
+ _setStoreData('customer_name', {customerName: values.name});
28
28
  onProceedToPay()
29
29
  };
30
30
 
31
+ const onSkip = () => {
32
+ _removeStoreData('customer_name')
33
+ onProceedToPay()
34
+ }
35
+
31
36
  const styles = StyleSheet.create({
32
37
  inputStyle: {
33
38
  borderRadius: 4,
@@ -52,30 +57,26 @@ const CustomerName = (props: Props): React.ReactElement => {
52
57
 
53
58
  const goToBack = () => navigation?.goBack();
54
59
 
55
- const submitButton = (
56
- <View style={{ flex: 1, alignItems: 'center' }}>
57
- <OButton
58
- text={t('PROCEED_TO_PAY', 'Proceed to Pay')}
59
- onClick={handleSubmit(onSubmit)}
60
- textStyle={{ color: theme.colors.primaryContrast, fontSize: 20 }}
61
- parentStyle={{
62
- height: orientationState?.orientation === PORTRAIT
63
- ? 50 : 100
64
- }}
65
- style={{
66
- width: orientationState?.orientation === PORTRAIT
67
- ? orientationState?.dimensions.width * 0.5
68
- : orientationState?.dimensions.width * 0.5
69
- }}
70
- />
71
- </View>
72
- );
60
+ const submitButton = (<OButton
61
+ text={t('PROCEED_TO_PAY', 'Proceed to Pay')}
62
+ onClick={handleSubmit(onSubmit)}
63
+ textStyle={{color: theme.colors.primaryContrast, fontSize: 20}}
64
+ parentStyle={{
65
+ height: orientationState?.orientation === PORTRAIT
66
+ ? 50 : 100
67
+ }}
68
+ style={{
69
+ width: orientationState?.orientation === PORTRAIT
70
+ ? orientationState?.dimensions.width - 40
71
+ : orientationState?.dimensions.width * 0.5,
72
+ }}
73
+ />);
73
74
 
74
- const skipButton = (
75
- <View style={{ flex: 1, alignItems: 'center' }}>
75
+ const skipButton = (
76
+ <View style={{flex:1, left: orientationState?.dimensions.width * 0.2,}}>
76
77
  <OButton
77
78
  text={t('SKIP', 'Skip')}
78
- onClick={onProceedToPay}
79
+ onClick={onSkip}
79
80
  textStyle={{ color: theme.colors.primary, fontSize: 20 }}
80
81
  parentStyle={{
81
82
  height: orientationState?.orientation === PORTRAIT
@@ -84,7 +85,7 @@ const CustomerName = (props: Props): React.ReactElement => {
84
85
  style={{
85
86
  backgroundColor: theme.colors.white,
86
87
  width: orientationState?.orientation === PORTRAIT
87
- ? orientationState?.dimensions.width * 0.2
88
+ ? orientationState?.dimensions.width - 40
88
89
  : orientationState?.dimensions.width * 0.1,
89
90
  }}
90
91
  />
@@ -93,78 +94,78 @@ const CustomerName = (props: Props): React.ReactElement => {
93
94
 
94
95
  return (
95
96
  <>
96
- <Container>
97
- <NavBar
98
- title={t('YOUR_NAME', 'Your name')}
99
- onActionLeft={goToBack}
100
- btnStyle={{ paddingLeft: 0 }}
101
- />
102
- <View style={{
103
- marginVertical: orientationState?.dimensions?.height * 0.08,
104
- alignItems: 'center'
105
- }}>
106
- <OText
107
- size={orientationState?.dimensions?.width * 0.05}
108
- style={{ bottom: 20 }}
109
- >
110
- {t('WHATS_YOUR_NAME', "What's your name?")}
111
- {/* <OText
97
+ <Container>
98
+ <NavBar
99
+ title={t('YOUR_NAME', 'Your name')}
100
+ onActionLeft={goToBack}
101
+ btnStyle={{paddingLeft: 0}}
102
+ />
103
+ <View style={{
104
+ marginVertical: orientationState?.dimensions?.height * 0.08,
105
+ paddingLeft: orientationState?.dimensions?.width * 0.25
106
+ }}>
107
+ <OText
108
+ size={orientationState?.dimensions?.width * 0.05}
109
+ style={{bottom: 20}}
110
+ >
111
+ {t('WHATS_YOUR_NAME', "What's your name?")}
112
+ {/* <OText
112
113
  size={orientationState?.dimensions?.width * 0.05}
113
114
  weight={'700'}
114
115
  >
115
116
  {`${t('ORDER_BE_FOR', 'order be for?')}`}
116
117
  </OText> */}
117
- </OText>
118
- <Controller
119
- control={control}
120
- render={({ onChange, value }: any) => (
121
- <OInput
122
- placeholder={t('WRITE_YOUR_NAME', 'Write your name')}
123
- style={{
124
- ...styles.inputStyle,
125
- width: orientationState?.orientation === PORTRAIT
126
- ? orientationState?.dimensions.width * 0.5
127
- : orientationState?.dimensions.width * 0.5,
118
+ </OText>
119
+ <Controller
120
+ control={control}
121
+ render={({ onChange, value }: any) => (
122
+ <OInput
123
+ placeholder={t('WRITE_YOUR_NAME', 'Write your name')}
124
+ style={{
125
+ ...styles.inputStyle,
126
+ width: orientationState?.orientation === PORTRAIT
127
+ ? orientationState?.dimensions.width - 40
128
+ : orientationState?.dimensions.width * 0.5,
129
+ }}
130
+ value={value}
131
+ autoCapitalize="words"
132
+ autoCorrect={false}
133
+ onChange={(val: any) => onChange(val)}
134
+ onSubmitEditing={handleSubmit(onSubmit)}
135
+ />
136
+ )}
137
+ name="name"
138
+ rules={{
139
+ required: t(
140
+ 'VALIDATION_ERROR_REQUIRED',
141
+ 'The field Customer Name is required',
142
+ ).replace('_attribute_', t('REQUEST_COLLECTION_CUSTOMER_NAME', 'Customer Name')),
143
+ pattern: {
144
+ value: /^[a-zA-Z áéíóúüñçÁÉÍÓÚÜÑÇ]+$/i,
145
+ message: t(
146
+ 'INVALID_ERROR',
147
+ 'Invalid name',
148
+ ).replace('_attribute_', t('NAME', 'Name')),
149
+ }
128
150
  }}
129
- value={value}
130
- autoCapitalize="words"
131
- autoCorrect={false}
132
- onChange={(val: any) => onChange(val)}
133
- onSubmitEditing={handleSubmit(onSubmit)}
151
+ defaultValue=""
134
152
  />
135
- )}
136
- name="name"
137
- rules={{
138
- required: t(
139
- 'VALIDATION_ERROR_REQUIRED',
140
- 'The field Customer Name is required',
141
- ).replace('_attribute_', t('REQUEST_COLLECTION_CUSTOMER_NAME', 'Customer Name')),
142
- pattern: {
143
- value: /^[a-zA-Z áéíóúüñçÁÉÍÓÚÜÑÇ]+$/i,
144
- message: t(
145
- 'INVALID_ERROR',
146
- 'Invalid name',
147
- ).replace('_attribute_', t('NAME', 'Name')),
148
- }
149
- }}
150
- defaultValue=""
151
- />
152
153
 
153
- {orientationState?.orientation === LANDSCAPE && submitButton}
154
- {orientationState?.orientation === LANDSCAPE && skipButton}
155
- {(orientationState?.orientation === PORTRAIT) && (
156
- <OSActions>
157
- {submitButton}
158
- </OSActions>
159
- )}
160
- {(orientationState?.orientation === PORTRAIT) && (
161
- <OSActions>
162
- {skipButton}
163
- </OSActions>
164
- )}
165
- </View>
166
- </Container>
167
- </>
154
+ {orientationState?.orientation === LANDSCAPE && submitButton}
155
+ {orientationState?.orientation === LANDSCAPE && skipButton}
156
+ {(orientationState?.orientation === PORTRAIT) && (
157
+ <OSActions>
158
+ {submitButton}
159
+ </OSActions>
160
+ )}
161
+ {(orientationState?.orientation === PORTRAIT) && (
162
+ <OSActions>
163
+ {skipButton}
164
+ </OSActions>
165
+ )}
166
+ </View>
167
+ </Container>
168
+ </>
168
169
  );
169
170
  };
170
171
 
@@ -32,17 +32,17 @@ const Intro = (props: any): React.ReactElement => {
32
32
  };
33
33
 
34
34
  return (
35
- <ScrollView
36
- scrollEnabled={false}
37
- refreshControl={
38
- <RefreshControl
39
- refreshing={showLogoutPopup ? false : refreshing}
40
- onRefresh={() => setShowLogoutPopup(true)}
41
- />
42
- }
43
- >
35
+ // <ScrollView
36
+ // scrollEnabled={false}
37
+ // refreshControl={
38
+ // <RefreshControl
39
+ // refreshing={showLogoutPopup ? false : refreshing}
40
+ // onRefresh={() => setShowLogoutPopup(true)}
41
+ // />
42
+ // }
43
+ // >
44
44
  <Pressable onPress={goBusiness}>
45
- <Container nopadding={orientationState.orientation === LANDSCAPE}>
45
+ <View style={{ height: orientationState?.dimensions?.height }}>
46
46
  {orientationState.orientation === PORTRAIT ? (
47
47
  <View
48
48
  style={{
@@ -132,15 +132,15 @@ const Intro = (props: any): React.ReactElement => {
132
132
  open={showLogoutPopup}
133
133
  onClose={() => setShowLogoutPopup(false)}
134
134
  />
135
- </Container>
135
+ </View>
136
136
  </Pressable>
137
- </ScrollView>
137
+ // </ScrollView>
138
138
  );
139
139
  };
140
140
 
141
141
  const styles = StyleSheet.create({
142
142
  buttonLandStyle: {
143
- width: 290,
143
+ minWidth: 130,
144
144
  marginBottom: 16
145
145
  }
146
146
  });
@@ -5,6 +5,7 @@ import { ImageStyle, TextStyle, View, Platform } from 'react-native'
5
5
  import { OrderTypeSelector } from '../OrderTypeSelector'
6
6
  import { useConfig, useLanguage } from 'ordering-components/native'
7
7
  import { useTheme } from 'styled-components/native'
8
+
8
9
  const Wrapper = styled.View`
9
10
  background-color: ${(props: any) => props.theme.colors.white};
10
11
  padding: 10px 0px 20px 0px;
@@ -64,28 +65,27 @@ const NavBar = (props: Props) => {
64
65
 
65
66
  return (
66
67
  <Wrapper style={{ paddingTop: props.paddingTop, ...props.style }}>
67
- {(props?.onActionLeft) && (
68
+ {(props?.onActionLeft || props?.leftImg) && (
68
69
  <OButton
69
- imgLeftSrc={props.leftImg}
70
+ imgLeftSrc={props.leftImg || theme.images.general.arrow_left}
70
71
  imgRightSrc={null}
71
72
  style={{ ...btnBackArrow, ...props.btnStyle }}
72
73
  onClick={props.onActionLeft}
73
- imgLeftStyle={props.imgLeftStyle}
74
- {...(!props.leftImg && { iconProps: { name: 'arrowleft', size: 28, color: props.btnStyle?.color } })}
74
+ imgLeftStyle= {props.imgLeftStyle}
75
75
  />)
76
76
  }
77
77
  <TitleTopWrapper>
78
78
  {props.withIcon
79
79
  ? (
80
- <OIcon
81
- url={props.icon}
82
- style={{
83
- borderColor: theme.colors.lightGray,
84
- borderRadius: 20,
85
- }}
86
- width={60}
87
- height={60}
88
- />
80
+ <OIcon
81
+ url={props.icon}
82
+ style={{
83
+ borderColor: theme.colors.lightGray,
84
+ borderRadius: 20,
85
+ }}
86
+ width={60}
87
+ height={60}
88
+ />
89
89
  )
90
90
  : null
91
91
  }
@@ -125,7 +125,7 @@ const NavBar = (props: Props) => {
125
125
  </View>
126
126
  )}
127
127
 
128
- {props.rightComponent}
128
+ { props.rightComponent }
129
129
  </Wrapper>
130
130
  )
131
131
  }