ordering-ui-react-native 0.15.82 → 0.15.83-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.
- package/package.json +7 -3
- package/src/DeliveryApp.tsx +43 -1
- package/src/components/ActiveOrders/index.tsx +61 -63
- package/src/components/ActiveOrders/styles.tsx +1 -1
- package/src/components/AddressForm/index.tsx +18 -2
- package/src/components/BusinessBasicInformation/index.tsx +11 -19
- package/src/components/BusinessController/index.tsx +16 -8
- package/src/components/BusinessInformation/index.tsx +14 -0
- package/src/components/BusinessTypeFilter/index.tsx +1 -2
- package/src/components/BusinessesListing/index.tsx +1 -1
- package/src/components/Checkout/index.tsx +25 -3
- package/src/components/DriverTips/index.tsx +11 -6
- package/src/components/LanguageSelector/index.tsx +24 -15
- package/src/components/LoginForm/index.tsx +120 -30
- package/src/components/LoginForm/styles.tsx +6 -0
- package/src/components/NotificationSetting/index.tsx +85 -0
- package/src/components/OrderDetails/index.tsx +7 -21
- package/src/components/PaymentOptions/index.tsx +335 -365
- package/src/components/PaymentOptionsWebView/index.tsx +120 -121
- package/src/components/ReviewDriver/index.tsx +1 -1
- package/src/components/ReviewOrder/index.tsx +2 -1
- package/src/components/ReviewProducts/index.tsx +11 -0
- package/src/components/SignupForm/index.tsx +145 -61
- package/src/components/SingleProductCard/index.tsx +16 -4
- package/src/components/SingleProductReview/index.tsx +1 -1
- package/src/components/StripeElementsForm/index.tsx +25 -16
- package/src/components/StripeMethodForm/index.tsx +22 -24
- package/src/components/UpsellingProducts/index.tsx +1 -1
- package/src/components/UserProfileForm/index.tsx +63 -6
- package/src/components/UserProfileForm/styles.tsx +8 -0
- package/src/components/VerifyPhone/styles.tsx +1 -2
- package/src/components/shared/OBottomPopup.tsx +6 -2
- package/src/components/shared/OModal.tsx +1 -1
- package/src/hooks/useCountdownTimer.tsx +26 -0
- package/src/index.tsx +2 -0
- package/src/navigators/CheckoutNavigator.tsx +6 -0
- package/src/navigators/HomeNavigator.tsx +6 -0
- package/src/pages/BusinessesListing.tsx +7 -6
- package/src/pages/MultiCheckout.tsx +31 -0
- package/src/pages/MultiOrdersDetails.tsx +27 -0
- package/src/pages/OrderDetails.tsx +1 -1
- package/src/pages/ReviewDriver.tsx +2 -2
- package/src/pages/ReviewOrder.tsx +2 -2
- package/src/theme.json +0 -1
- package/src/types/index.tsx +18 -11
- package/src/utils/index.tsx +28 -29
- package/themes/business/index.tsx +4 -0
- package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +100 -60
- package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
- package/themes/business/src/components/Chat/index.tsx +51 -91
- package/themes/business/src/components/DriverMap/index.tsx +6 -5
- package/themes/business/src/components/DriverSchedule/index.tsx +71 -0
- package/themes/business/src/components/DriverSchedule/styles.tsx +6 -0
- package/themes/business/src/components/LoginForm/index.tsx +89 -2
- package/themes/business/src/components/LoginForm/styles.tsx +6 -0
- package/themes/business/src/components/LogoutButton/index.tsx +1 -1
- package/themes/business/src/components/MapView/index.tsx +1 -1
- package/themes/business/src/components/NewOrderNotification/index.tsx +26 -13
- package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
- package/themes/business/src/components/OrderDetails/Delivery.tsx +17 -7
- package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +26 -18
- package/themes/business/src/components/OrdersListManager/index.tsx +11 -4
- package/themes/business/src/components/OrdersOption/index.tsx +16 -4
- package/themes/business/src/components/PreviousOrders/index.tsx +7 -7
- package/themes/business/src/components/ProductItemAccordion/index.tsx +5 -4
- package/themes/business/src/components/ScheduleBlocked/index.tsx +53 -0
- package/themes/business/src/components/UserFormDetails/index.tsx +5 -2
- package/themes/business/src/components/UserProfileForm/index.tsx +28 -4
- package/themes/business/src/components/shared/OModal.tsx +41 -38
- package/themes/business/src/types/index.tsx +13 -6
- package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
- package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
- package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
- package/themes/kiosk/src/components/BusinessMenu/index.tsx +25 -26
- package/themes/kiosk/src/components/BusinessesListing/index.tsx +2 -3
- package/themes/kiosk/src/components/Cart/index.tsx +10 -11
- package/themes/kiosk/src/components/CartBottomSheet/index.tsx +9 -2
- package/themes/kiosk/src/components/CartContent/index.tsx +0 -11
- package/themes/kiosk/src/components/CartItem/index.tsx +4 -3
- package/themes/kiosk/src/components/CategoriesMenu/index.tsx +107 -62
- package/themes/kiosk/src/components/Checkout/index.tsx +40 -22
- package/themes/kiosk/src/components/CustomerName/index.tsx +0 -6
- package/themes/kiosk/src/components/DrawerView/index.tsx +1 -0
- package/themes/kiosk/src/components/DrawerView/styles.tsx +2 -2
- package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
- package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
- package/themes/kiosk/src/components/OrderDetails/index.tsx +2 -2
- package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +9 -11
- package/themes/kiosk/src/components/PaymentOptions/index.tsx +55 -53
- package/themes/kiosk/src/components/ProductForm/index.tsx +6 -7
- package/themes/kiosk/src/components/ProductOptionSubOption/index.tsx +3 -1
- package/themes/kiosk/src/components/UpsellingProducts/index.tsx +16 -5
- package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
- package/themes/kiosk/src/types/index.d.ts +1 -0
- package/themes/original/index.tsx +22 -0
- package/themes/original/src/components/ActiveOrders/index.tsx +15 -132
- package/themes/original/src/components/ActiveOrders/styles.tsx +0 -54
- package/themes/original/src/components/AddressForm/index.tsx +7 -6
- package/themes/original/src/components/AddressList/index.tsx +1 -1
- package/themes/original/src/components/AppleLogin/index.tsx +6 -8
- package/themes/original/src/components/BusinessBasicInformation/index.tsx +291 -150
- package/themes/original/src/components/BusinessBasicInformation/styles.tsx +6 -2
- package/themes/original/src/components/BusinessController/index.tsx +179 -96
- package/themes/original/src/components/BusinessController/styles.tsx +5 -0
- package/themes/original/src/components/BusinessItemAccordion/index.tsx +8 -5
- package/themes/original/src/components/BusinessItemAccordion/styles.tsx +3 -1
- package/themes/original/src/components/BusinessListingSearch/index.tsx +234 -64
- package/themes/original/src/components/BusinessListingSearch/styles.tsx +22 -2
- package/themes/original/src/components/BusinessPreorder/index.tsx +1 -1
- package/themes/original/src/components/BusinessProductsCategories/index.tsx +2 -2
- package/themes/original/src/components/BusinessProductsList/CategoryDescription/index.tsx +44 -0
- package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +87 -0
- package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/styles.tsx +12 -0
- package/themes/original/src/components/BusinessProductsList/index.tsx +65 -73
- package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
- package/themes/original/src/components/BusinessProductsListing/index.tsx +315 -176
- package/themes/original/src/components/BusinessProductsListing/styles.tsx +11 -0
- package/themes/original/src/components/BusinessReviews/index.tsx +6 -1
- package/themes/original/src/components/BusinessTypeFilter/index.tsx +106 -38
- package/themes/original/src/components/BusinessTypeFilter/styles.tsx +2 -0
- package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +560 -0
- package/themes/original/src/components/BusinessesListing/{styles.tsx → Layout/Appointment/styles.tsx} +24 -2
- package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +661 -0
- package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +137 -0
- package/themes/original/src/components/BusinessesListing/index.tsx +104 -462
- package/themes/original/src/components/Cart/index.tsx +83 -38
- package/themes/original/src/components/Cart/styles.tsx +4 -0
- package/themes/original/src/components/Checkout/index.tsx +128 -67
- package/themes/original/src/components/Checkout/styles.tsx +0 -1
- package/themes/original/src/components/DriverTips/index.tsx +17 -12
- package/themes/original/src/components/Favorite/index.tsx +92 -0
- package/themes/original/src/components/Favorite/styles.tsx +22 -0
- package/themes/original/src/components/FavoriteList/index.tsx +298 -0
- package/themes/original/src/components/FavoriteList/styles.tsx +5 -0
- package/themes/original/src/components/ForgotPasswordForm/index.tsx +84 -4
- package/themes/original/src/components/GPSButton/index.tsx +15 -8
- package/themes/original/src/components/GoogleMap/index.tsx +11 -11
- package/themes/original/src/components/Help/index.tsx +21 -4
- package/themes/original/src/components/HighestRatedBusinesses/index.tsx +18 -1
- package/themes/original/src/components/LastOrders/index.tsx +12 -1
- package/themes/original/src/components/LoginForm/Otp/index.tsx +91 -0
- package/themes/original/src/components/LoginForm/Otp/styles.tsx +7 -0
- package/themes/original/src/components/LoginForm/index.tsx +332 -164
- package/themes/original/src/components/LoginForm/styles.tsx +1 -3
- package/themes/original/src/components/MomentSelector/index.tsx +197 -0
- package/themes/original/src/components/MomentSelector/styles.tsx +6 -0
- package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +243 -0
- package/themes/original/src/components/MultiCartsPaymethodsAndWallets/styles.tsx +46 -0
- package/themes/original/src/components/MultiCheckout/index.tsx +304 -0
- package/themes/original/src/components/MultiCheckout/styles.tsx +59 -0
- package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +372 -0
- package/themes/original/src/components/MultiOrdersDetails/index.tsx +258 -0
- package/themes/original/src/components/MultiOrdersDetails/styles.tsx +50 -0
- package/themes/original/src/components/MyOrders/index.tsx +132 -27
- package/themes/original/src/components/MyOrders/styles.tsx +8 -1
- package/themes/original/src/components/NavBar/index.tsx +4 -4
- package/themes/original/src/components/OrderDetails/OrderHistory.tsx +167 -0
- package/themes/original/src/components/OrderDetails/index.tsx +164 -64
- package/themes/original/src/components/OrderDetails/styles.tsx +5 -2
- package/themes/original/src/components/OrderItAgain/index.tsx +72 -0
- package/themes/original/src/components/OrderItAgain/styles.tsx +10 -0
- package/themes/original/src/components/OrderSummary/index.tsx +2 -35
- package/themes/original/src/components/OrderTypeSelector/index.tsx +77 -35
- package/themes/original/src/components/OrderTypeSelector/styles.tsx +19 -1
- package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +153 -0
- package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/styles.tsx +6 -0
- package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +53 -0
- package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/styles.tsx +6 -0
- package/themes/original/src/components/OrdersOption/index.tsx +139 -46
- package/themes/original/src/components/OrdersOption/styles.tsx +4 -1
- package/themes/original/src/components/PaymentOptionCash/index.tsx +2 -2
- package/themes/original/src/components/PaymentOptionWallet/index.tsx +15 -22
- package/themes/original/src/components/PaymentOptions/index.tsx +57 -37
- package/themes/original/src/components/PhoneInputNumber/index.tsx +5 -11
- package/themes/original/src/components/PlaceSpot/index.tsx +243 -47
- package/themes/original/src/components/PlaceSpot/styles.tsx +0 -2
- package/themes/original/src/components/PreviousOrders/index.tsx +18 -147
- package/themes/original/src/components/ProductForm/index.tsx +712 -673
- package/themes/original/src/components/ProductForm/styles.tsx +9 -7
- package/themes/original/src/components/ProductItemAccordion/index.tsx +2 -2
- package/themes/original/src/components/ProductOption/index.tsx +1 -1
- package/themes/original/src/components/ProductOptionSubOption/index.tsx +13 -9
- package/themes/original/src/components/ProfessionalFilter/index.tsx +128 -0
- package/themes/original/src/components/ProfessionalFilter/styles.tsx +0 -0
- package/themes/original/src/components/ProfessionalProfile/index.tsx +298 -0
- package/themes/original/src/components/ProfessionalProfile/styles.tsx +46 -0
- package/themes/original/src/components/Promotions/index.tsx +22 -6
- package/themes/original/src/components/ReviewDriver/index.tsx +6 -6
- package/themes/original/src/components/ReviewOrder/index.tsx +1 -1
- package/themes/original/src/components/ReviewTrigger/index.tsx +118 -0
- package/themes/original/src/components/ReviewTrigger/styles.tsx +34 -0
- package/themes/original/src/components/SearchBar/index.tsx +13 -5
- package/themes/original/src/components/ServiceForm/index.tsx +579 -0
- package/themes/original/src/components/ServiceForm/styles.tsx +50 -0
- package/themes/original/src/components/SignupForm/index.tsx +237 -126
- package/themes/original/src/components/SingleOrderCard/index.tsx +316 -0
- package/themes/original/src/components/SingleOrderCard/styles.tsx +54 -0
- package/themes/original/src/components/SingleProductCard/index.tsx +196 -94
- package/themes/original/src/components/SingleProductCard/styles.tsx +2 -2
- package/themes/original/src/components/StripeElementsForm/index.tsx +25 -9
- package/themes/original/src/components/StripeElementsForm/naked.tsx +2 -2
- package/themes/original/src/components/UpsellingProducts/index.tsx +0 -4
- package/themes/original/src/components/UserDetails/index.tsx +32 -18
- package/themes/original/src/components/UserFormDetails/index.tsx +108 -74
- package/themes/original/src/components/UserProfile/index.tsx +5 -1
- package/themes/original/src/components/UserProfileForm/index.tsx +15 -10
- package/themes/original/src/components/UserVerification/index.tsx +178 -192
- package/themes/original/src/components/Wallets/index.tsx +2 -2
- package/themes/original/src/components/shared/OBottomPopup.tsx +47 -14
- package/themes/original/src/components/shared/OButton.tsx +2 -0
- package/themes/original/src/components/shared/OInput.tsx +3 -2
- package/themes/original/src/components/shared/OModal.tsx +4 -2
- package/themes/original/src/layouts/FloatingBottomContainer.tsx +5 -1
- package/themes/original/src/types/index.tsx +208 -44
- package/themes/original/src/utils/index.tsx +94 -1
- package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
useValidationFields,
|
|
9
9
|
} from 'ordering-components/native';
|
|
10
10
|
import { useTheme } from 'styled-components/native';
|
|
11
|
-
import { CContainer, CheckoutAction, Divider } from './styles';
|
|
11
|
+
import { CContainer, CheckoutAction, Divider, DriverTipsContainer } from './styles';
|
|
12
12
|
|
|
13
13
|
import { OSBill, OSTable, OSCoupon, OSTotal, OSRow } from '../OrderSummary/styles';
|
|
14
14
|
|
|
@@ -25,6 +25,7 @@ import { TaxInformation } from '../TaxInformation';
|
|
|
25
25
|
import { CartStoresListing } from '../CartStoresListing';
|
|
26
26
|
import { OAlert } from '../../../../../src/components/shared'
|
|
27
27
|
import { PlaceSpot } from '../PlaceSpot'
|
|
28
|
+
import { DriverTips } from '../DriverTips'
|
|
28
29
|
|
|
29
30
|
const CartUI = (props: any) => {
|
|
30
31
|
const {
|
|
@@ -39,7 +40,8 @@ const CartUI = (props: any) => {
|
|
|
39
40
|
handleChangeComment,
|
|
40
41
|
commentState,
|
|
41
42
|
onNavigationRedirect,
|
|
42
|
-
handleRemoveOfferClick
|
|
43
|
+
handleRemoveOfferClick,
|
|
44
|
+
isMultiCheckout
|
|
43
45
|
} = props
|
|
44
46
|
|
|
45
47
|
const theme = useTheme();
|
|
@@ -59,10 +61,16 @@ const CartUI = (props: any) => {
|
|
|
59
61
|
|
|
60
62
|
const isCartPending = cart?.status === 2
|
|
61
63
|
const isCouponEnabled = validationFields?.fields?.checkout?.coupon?.enabled
|
|
64
|
+
const isCheckoutMultiBusinessEnabled: Boolean = configs?.checkout_multi_business_enabled?.value === '1'
|
|
65
|
+
const openCarts = (Object.values(orderState?.carts)?.filter((cart: any) => cart?.products && cart?.products?.length && cart?.status !== 2 && cart?.valid_schedule && cart?.valid_products && cart?.valid_address && cart?.valid_maximum && cart?.valid_minimum && !cart?.wallets) || null) || []
|
|
62
66
|
|
|
63
67
|
const business: any = (orderState?.carts && Object.values(orderState.carts).find((_cart: any) => _cart?.uuid === props.cartuuid)) ?? {}
|
|
64
68
|
const businessId = business?.business_id ?? null
|
|
65
|
-
const placeSpotTypes = [
|
|
69
|
+
const placeSpotTypes = [4]
|
|
70
|
+
|
|
71
|
+
const driverTipsOptions = typeof configs?.driver_tip_options?.value === 'string'
|
|
72
|
+
? JSON.parse(configs?.driver_tip_options?.value) || []
|
|
73
|
+
: configs?.driver_tip_options?.value || []
|
|
66
74
|
|
|
67
75
|
const momentFormatted = !orderState?.option?.moment
|
|
68
76
|
? t('RIGHT_NOW', 'Right Now')
|
|
@@ -96,17 +104,23 @@ const CartUI = (props: any) => {
|
|
|
96
104
|
const handleUpsellingPage = () => {
|
|
97
105
|
setOpenUpselling(false)
|
|
98
106
|
setCanOpenUpselling(false)
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
107
|
+
if (isCheckoutMultiBusinessEnabled && openCarts.length > 1) {
|
|
108
|
+
props.onNavigationRedirect('CheckoutNavigator', {
|
|
109
|
+
screen: 'MultiCheckout'
|
|
110
|
+
})
|
|
111
|
+
} else {
|
|
112
|
+
props.onNavigationRedirect('CheckoutNavigator', {
|
|
113
|
+
screen: 'CheckoutPage',
|
|
114
|
+
cartUuid: cart?.uuid,
|
|
115
|
+
businessLogo: cart?.business?.logo,
|
|
116
|
+
businessName: cart?.business?.name,
|
|
117
|
+
cartTotal: cart?.total
|
|
118
|
+
})
|
|
119
|
+
}
|
|
106
120
|
}
|
|
107
121
|
|
|
108
122
|
const getIncludedTaxes = () => {
|
|
109
|
-
if (cart?.taxes === null) {
|
|
123
|
+
if (cart?.taxes === null || !cart?.taxes) {
|
|
110
124
|
return cart.business.tax_type === 1 ? cart?.tax : 0
|
|
111
125
|
} else {
|
|
112
126
|
return cart?.taxes.reduce((taxIncluded: number, tax: any) => {
|
|
@@ -165,6 +179,7 @@ const CartUI = (props: any) => {
|
|
|
165
179
|
handleChangeStore={() => setOpenChangeStore(true)}
|
|
166
180
|
handleClickCheckout={() => setOpenUpselling(true)}
|
|
167
181
|
checkoutButtonDisabled={(openUpselling && !canOpenUpselling) || cart?.subtotal < cart?.minimum || !cart?.valid_address}
|
|
182
|
+
isMultiCheckout={isMultiCheckout}
|
|
168
183
|
>
|
|
169
184
|
{cart?.products?.length > 0 && cart?.products.map((product: any, i: number) => (
|
|
170
185
|
<ProductItemAccordion
|
|
@@ -346,13 +361,39 @@ const CartUI = (props: any) => {
|
|
|
346
361
|
</OSTable>
|
|
347
362
|
)}
|
|
348
363
|
|
|
364
|
+
{isMultiCheckout &&
|
|
365
|
+
cart &&
|
|
366
|
+
cart?.valid &&
|
|
367
|
+
orderState?.options?.type === 1 &&
|
|
368
|
+
cart?.status !== 2 &&
|
|
369
|
+
validationFields?.fields?.checkout?.driver_tip?.enabled &&
|
|
370
|
+
driverTipsOptions && driverTipsOptions?.length > 0 &&
|
|
371
|
+
(
|
|
372
|
+
<DriverTipsContainer>
|
|
373
|
+
<OText size={14} lineHeight={20} color={theme.colors.textNormal}>
|
|
374
|
+
{t('DRIVER_TIPS', 'Driver Tips')}
|
|
375
|
+
</OText>
|
|
376
|
+
<DriverTips
|
|
377
|
+
uuid={cart?.uuid}
|
|
378
|
+
businessId={cart?.business_id}
|
|
379
|
+
driverTipsOptions={driverTipsOptions}
|
|
380
|
+
isFixedPrice={parseInt(configs?.driver_tip_type?.value, 10) === 1 || !!parseInt(configs?.driver_tip_use_custom?.value, 10)}
|
|
381
|
+
isDriverTipUseCustom={!!parseInt(configs?.driver_tip_use_custom?.value, 10)}
|
|
382
|
+
driverTip={parseInt(configs?.driver_tip_type?.value, 10) === 1 || !!parseInt(configs?.driver_tip_use_custom?.value, 10)
|
|
383
|
+
? cart?.driver_tip
|
|
384
|
+
: cart?.driver_tip_rate}
|
|
385
|
+
useOrderContext
|
|
386
|
+
/>
|
|
387
|
+
</DriverTipsContainer>
|
|
388
|
+
)}
|
|
389
|
+
|
|
349
390
|
<OSTotal>
|
|
350
391
|
<OSTable style={{ marginTop: 15 }}>
|
|
351
392
|
<OText size={14} lineHeight={21} weight={'600'}>
|
|
352
393
|
{t('TOTAL', 'Total')}
|
|
353
394
|
</OText>
|
|
354
395
|
<OText size={14} lineHeight={21} weight={'600'}>
|
|
355
|
-
{parsePrice(cart?.
|
|
396
|
+
{parsePrice(cart?.balance >= 0 ? cart?.balance : 0)}
|
|
356
397
|
</OText>
|
|
357
398
|
</OSTable>
|
|
358
399
|
</OSTotal>
|
|
@@ -409,36 +450,40 @@ const CartUI = (props: any) => {
|
|
|
409
450
|
)}
|
|
410
451
|
</OSBill>
|
|
411
452
|
)}
|
|
412
|
-
{
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
{
|
|
435
|
-
|
|
436
|
-
|
|
453
|
+
{!isMultiCheckout && (
|
|
454
|
+
<>
|
|
455
|
+
{cart?.valid_products ? (
|
|
456
|
+
<CheckoutAction>
|
|
457
|
+
<OButton
|
|
458
|
+
text={(cart?.subtotal >= cart?.minimum || !cart?.minimum) && cart?.valid_address ? (
|
|
459
|
+
!openUpselling !== canOpenUpselling ? t('CHECKOUT', 'Checkout') : t('LOADING', 'Loading')
|
|
460
|
+
) : !cart?.valid_address ? (
|
|
461
|
+
`${t('OUT_OF_COVERAGE', 'Out of Coverage')}`
|
|
462
|
+
) : (
|
|
463
|
+
`${t('MINIMUN_SUBTOTAL_ORDER', 'Minimum subtotal order:')} ${parsePrice(cart?.minimum)}`
|
|
464
|
+
)}
|
|
465
|
+
bgColor={(cart?.subtotal < cart?.minimum || !cart?.valid_address) ? theme.colors.secundary : theme.colors.primary}
|
|
466
|
+
isDisabled={(openUpselling && !canOpenUpselling) || cart?.subtotal < cart?.minimum || !cart?.valid_address}
|
|
467
|
+
borderColor={theme.colors.primary}
|
|
468
|
+
imgRightSrc={null}
|
|
469
|
+
textStyle={{ color: 'white', textAlign: 'center', flex: 1 }}
|
|
470
|
+
onClick={() => setOpenUpselling(true)}
|
|
471
|
+
style={{ width: '100%', flexDirection: 'row', justifyContent: 'center', borderRadius: 7.6, shadowOpacity: 0 }}
|
|
472
|
+
/>
|
|
473
|
+
</CheckoutAction>
|
|
474
|
+
) : (
|
|
475
|
+
<View style={{ alignItems: 'center', width: '100%' }}>
|
|
476
|
+
<OText size={12} color={theme.colors.red} style={{ textAlign: 'center', marginTop: 5 }}>
|
|
477
|
+
{t('WARNING_INVALID_PRODUCTS_CHECKOUT', 'To continue with your checkout, please remove from your cart the products that are not available.')}
|
|
478
|
+
</OText>
|
|
479
|
+
</View>
|
|
480
|
+
)}
|
|
481
|
+
</>
|
|
437
482
|
)}
|
|
438
483
|
</BusinessItemAccordion>
|
|
439
484
|
|
|
440
485
|
<OModal
|
|
441
|
-
open={openChangeStore
|
|
486
|
+
open={openChangeStore}
|
|
442
487
|
entireModal
|
|
443
488
|
customClose
|
|
444
489
|
onClose={() => setOpenChangeStore(false)}
|
|
@@ -24,6 +24,7 @@ import { DriverTips } from '../DriverTips';
|
|
|
24
24
|
import { NotFoundSource } from '../NotFoundSource';
|
|
25
25
|
import { UserDetails } from '../UserDetails';
|
|
26
26
|
import { PaymentOptionWallet } from '../PaymentOptionWallet';
|
|
27
|
+
import { PlaceSpot } from '../PlaceSpot'
|
|
27
28
|
|
|
28
29
|
import {
|
|
29
30
|
ChContainer,
|
|
@@ -105,15 +106,21 @@ const CheckoutUI = (props: any) => {
|
|
|
105
106
|
padding: 20
|
|
106
107
|
},
|
|
107
108
|
pagePadding: {
|
|
108
|
-
|
|
109
|
-
paddingRight: 40
|
|
109
|
+
paddingHorizontal: 40
|
|
110
110
|
},
|
|
111
111
|
icon: {
|
|
112
112
|
top: 15,
|
|
113
113
|
right: Platform.OS === 'ios' ? 5 : (I18nManager.isRTL ? 30 : 0),
|
|
114
114
|
position: 'absolute',
|
|
115
115
|
fontSize: 20
|
|
116
|
-
}
|
|
116
|
+
},
|
|
117
|
+
detailWrapper: {
|
|
118
|
+
paddingHorizontal: 40,
|
|
119
|
+
width: '100%'
|
|
120
|
+
},
|
|
121
|
+
wrapperNavbar: Platform.OS === 'ios'
|
|
122
|
+
? { paddingVertical: 0, paddingHorizontal: 40 }
|
|
123
|
+
: { paddingVertical: 20, paddingHorizontal: 40 }
|
|
117
124
|
})
|
|
118
125
|
|
|
119
126
|
const [, { showToast }] = useToast();
|
|
@@ -133,11 +140,25 @@ const CheckoutUI = (props: any) => {
|
|
|
133
140
|
const [isDeliveryOptionModalVisible, setIsDeliveryOptionModalVisible] = useState(false)
|
|
134
141
|
const [showGateway, setShowGateway] = useState<any>({ closedByUsed: false, open: false });
|
|
135
142
|
const [webviewPaymethod, setWebviewPaymethod] = useState<any>(null)
|
|
136
|
-
|
|
137
|
-
const
|
|
138
|
-
|
|
143
|
+
const [isOpen, setIsOpen] = useState(false)
|
|
144
|
+
const [requiredFields, setRequiredFields] = useState<any>([])
|
|
145
|
+
|
|
146
|
+
const placeSpotTypes = [3, 4, 5]
|
|
147
|
+
const placeSpotsEnabled = placeSpotTypes.includes(options?.type)
|
|
148
|
+
const businessConfigs = businessDetails?.business?.configs ?? []
|
|
149
|
+
const isWalletCashEnabled = businessConfigs.find((config: any) => config.key === 'wallet_cash_enabled')?.value === '1'
|
|
150
|
+
const isWalletCreditPointsEnabled = businessConfigs.find((config: any) => config.key === 'wallet_credit_point_enabled')?.value === '1'
|
|
151
|
+
const isWalletEnabled = configs?.cash_wallet?.value && configs?.wallet_enabled?.value === '1' && (isWalletCashEnabled || isWalletCreditPointsEnabled)
|
|
152
|
+
const isBusinessChangeEnabled = configs?.cart_change_business_validation?.value === '1'
|
|
153
|
+
|
|
139
154
|
const isPreOrder = configs?.preorder_status_enabled?.value === '1'
|
|
140
|
-
const isDisabledButtonPlace = loading || !cart?.valid || (!paymethodSelected && cart?.balance > 0) ||
|
|
155
|
+
const isDisabledButtonPlace = loading || !cart?.valid || (!paymethodSelected && cart?.balance > 0) ||
|
|
156
|
+
placing || errorCash || cart?.subtotal < cart?.minimum ||
|
|
157
|
+
// (placeSpotTypes.includes(options?.type) && !cart?.place) ||
|
|
158
|
+
(options.type === 1 &&
|
|
159
|
+
validationFields?.fields?.checkout?.driver_tip?.enabled &&
|
|
160
|
+
validationFields?.fields?.checkout?.driver_tip?.required &&
|
|
161
|
+
(Number(cart?.driver_tip) <= 0))
|
|
141
162
|
|
|
142
163
|
const driverTipsOptions = typeof configs?.driver_tip_options?.value === 'string'
|
|
143
164
|
? JSON.parse(configs?.driver_tip_options?.value) || []
|
|
@@ -159,9 +180,13 @@ const CheckoutUI = (props: any) => {
|
|
|
159
180
|
}
|
|
160
181
|
}
|
|
161
182
|
|
|
162
|
-
const handlePlaceOrder = () => {
|
|
163
|
-
if (!userErrors.length) {
|
|
164
|
-
handlerClickPlaceOrder && handlerClickPlaceOrder()
|
|
183
|
+
const handlePlaceOrder = (confirmPayment: any) => {
|
|
184
|
+
if (!userErrors.length && !requiredFields?.length) {
|
|
185
|
+
handlerClickPlaceOrder && handlerClickPlaceOrder(null, null, confirmPayment)
|
|
186
|
+
return
|
|
187
|
+
}
|
|
188
|
+
if (requiredFields?.length) {
|
|
189
|
+
setIsOpen(true)
|
|
165
190
|
return
|
|
166
191
|
}
|
|
167
192
|
let stringError = ''
|
|
@@ -191,11 +216,12 @@ const CheckoutUI = (props: any) => {
|
|
|
191
216
|
setUserErrors([])
|
|
192
217
|
const errors = []
|
|
193
218
|
const notFields = ['coupon', 'driver_tip', 'mobile_phone', 'address', 'zipcode', 'address_notes']
|
|
219
|
+
const _requiredFields: any = []
|
|
194
220
|
|
|
195
221
|
Object.values(validationFields?.fields?.checkout).map((field: any) => {
|
|
196
|
-
if (field?.required && !notFields.includes(field.code)) {
|
|
222
|
+
if (field?.required && !notFields.includes(field.code) && field?.enabled) {
|
|
197
223
|
if (!user[field?.code]) {
|
|
198
|
-
|
|
224
|
+
_requiredFields.push(field?.code)
|
|
199
225
|
}
|
|
200
226
|
}
|
|
201
227
|
})
|
|
@@ -206,8 +232,9 @@ const CheckoutUI = (props: any) => {
|
|
|
206
232
|
validationFields?.fields?.checkout?.cellphone?.required) ||
|
|
207
233
|
configs?.verification_phone_required?.value === '1')
|
|
208
234
|
) {
|
|
209
|
-
|
|
235
|
+
_requiredFields.push('cellphone')
|
|
210
236
|
}
|
|
237
|
+
setRequiredFields(_requiredFields)
|
|
211
238
|
|
|
212
239
|
if (phoneUpdate) {
|
|
213
240
|
errors.push(t('NECESSARY_UPDATE_COUNTRY_PHONE_CODE', 'It is necessary to update your phone number'))
|
|
@@ -239,7 +266,7 @@ const CheckoutUI = (props: any) => {
|
|
|
239
266
|
|
|
240
267
|
useEffect(() => {
|
|
241
268
|
if (cart?.products?.length === 0) {
|
|
242
|
-
|
|
269
|
+
onNavigationRedirect('Business', { store: cart?.business?.slug, header: null, logo: null })
|
|
243
270
|
}
|
|
244
271
|
}, [cart?.products])
|
|
245
272
|
|
|
@@ -250,13 +277,18 @@ const CheckoutUI = (props: any) => {
|
|
|
250
277
|
return (
|
|
251
278
|
<>
|
|
252
279
|
<Container noPadding>
|
|
253
|
-
<
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
280
|
+
<View style={styles.wrapperNavbar}>
|
|
281
|
+
<NavBar
|
|
282
|
+
title={t('CHECKOUT', 'Checkout')}
|
|
283
|
+
titleAlign={'center'}
|
|
284
|
+
onActionLeft={() => navigation?.canGoBack() && navigation.goBack()}
|
|
285
|
+
showCall={false}
|
|
286
|
+
btnStyle={{ paddingLeft: 0 }}
|
|
287
|
+
style={{ marginTop: Platform.OS === 'ios' ? 0 : 30 }}
|
|
288
|
+
titleWrapStyle={{ paddingHorizontal: 0 }}
|
|
289
|
+
titleStyle={{ marginRight: 0, marginLeft: 0 }}
|
|
290
|
+
/>
|
|
291
|
+
</View>
|
|
260
292
|
<ChContainer style={styles.pagePadding}>
|
|
261
293
|
<ChSection style={{ paddingTop: 0 }}>
|
|
262
294
|
<ChHeader>
|
|
@@ -297,10 +329,10 @@ const CheckoutUI = (props: any) => {
|
|
|
297
329
|
!businessDetails?.error &&
|
|
298
330
|
(
|
|
299
331
|
<Placeholder Animation={Fade}>
|
|
300
|
-
<PlaceholderLine height={20}
|
|
301
|
-
<PlaceholderLine height={
|
|
302
|
-
<PlaceholderLine height={
|
|
303
|
-
<PlaceholderLine height={
|
|
332
|
+
<PlaceholderLine height={20} />
|
|
333
|
+
<PlaceholderLine height={12} />
|
|
334
|
+
<PlaceholderLine height={12} />
|
|
335
|
+
<PlaceholderLine height={12} style={{ marginBottom: 20 }} />
|
|
304
336
|
</Placeholder>
|
|
305
337
|
)}
|
|
306
338
|
{
|
|
@@ -346,10 +378,10 @@ const CheckoutUI = (props: any) => {
|
|
|
346
378
|
<ChUserDetails>
|
|
347
379
|
{cartState.loading ? (
|
|
348
380
|
<Placeholder Animation={Fade}>
|
|
349
|
-
<PlaceholderLine height={20}
|
|
350
|
-
<PlaceholderLine height={
|
|
351
|
-
<PlaceholderLine height={
|
|
352
|
-
<PlaceholderLine height={
|
|
381
|
+
<PlaceholderLine height={20} />
|
|
382
|
+
<PlaceholderLine height={12} />
|
|
383
|
+
<PlaceholderLine height={12} />
|
|
384
|
+
<PlaceholderLine height={12} style={{ marginBottom: 20 }} />
|
|
353
385
|
</Placeholder>
|
|
354
386
|
) : (
|
|
355
387
|
<UserDetails
|
|
@@ -373,8 +405,8 @@ const CheckoutUI = (props: any) => {
|
|
|
373
405
|
{cartState.loading || deliveryOptionSelected === undefined ? (
|
|
374
406
|
<View style={{ height: 110 }}>
|
|
375
407
|
<Placeholder Animation={Fade}>
|
|
376
|
-
<PlaceholderLine height={20}
|
|
377
|
-
<PlaceholderLine height={40}
|
|
408
|
+
<PlaceholderLine height={20} />
|
|
409
|
+
<PlaceholderLine height={40} />
|
|
378
410
|
</Placeholder>
|
|
379
411
|
</View>
|
|
380
412
|
) : (
|
|
@@ -565,6 +597,20 @@ const CheckoutUI = (props: any) => {
|
|
|
565
597
|
)}
|
|
566
598
|
|
|
567
599
|
|
|
600
|
+
{!cartState.loading && placeSpotsEnabled && (
|
|
601
|
+
<>
|
|
602
|
+
<View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginTop: 30, marginHorizontal: -40 }} />
|
|
603
|
+
<PlaceSpot
|
|
604
|
+
isCheckout
|
|
605
|
+
isInputMode
|
|
606
|
+
cart={cart}
|
|
607
|
+
spotNumberDefault={cartState?.cart?.spot_number ?? cart?.spot_number}
|
|
608
|
+
vehicleDefault={cart?.vehicle}
|
|
609
|
+
/>
|
|
610
|
+
<View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginHorizontal: -40 }} />
|
|
611
|
+
</>
|
|
612
|
+
)}
|
|
613
|
+
|
|
568
614
|
{!cartState.loading && cart && (
|
|
569
615
|
<ChSection>
|
|
570
616
|
<ChCart>
|
|
@@ -597,23 +643,26 @@ const CheckoutUI = (props: any) => {
|
|
|
597
643
|
</OText>
|
|
598
644
|
</TouchableOpacity>
|
|
599
645
|
</CartHeader>
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
<OText
|
|
605
|
-
size={12}
|
|
606
|
-
lineHeight={18}
|
|
607
|
-
color={theme.colors.textSecondary}
|
|
608
|
-
style={{ textDecorationLine: 'underline' }}
|
|
646
|
+
{isBusinessChangeEnabled && (
|
|
647
|
+
<TouchableOpacity
|
|
648
|
+
onPress={() => setOpenChangeStore(true)}
|
|
649
|
+
style={{ alignSelf: 'flex-start' }}
|
|
609
650
|
>
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
651
|
+
<OText
|
|
652
|
+
size={12}
|
|
653
|
+
lineHeight={18}
|
|
654
|
+
color={theme.colors.textSecondary}
|
|
655
|
+
style={{ textDecorationLine: 'underline' }}
|
|
656
|
+
>
|
|
657
|
+
{t('CHANGE_STORE', 'Change store')}
|
|
658
|
+
</OText>
|
|
659
|
+
</TouchableOpacity>
|
|
660
|
+
)}
|
|
613
661
|
<OrderSummary
|
|
614
662
|
cart={cart}
|
|
615
663
|
isCartPending={cart?.status === 2}
|
|
616
664
|
onNavigationRedirect={onNavigationRedirect}
|
|
665
|
+
placeSpotTypes={placeSpotTypes}
|
|
617
666
|
/>
|
|
618
667
|
</>
|
|
619
668
|
)}
|
|
@@ -623,7 +672,7 @@ const CheckoutUI = (props: any) => {
|
|
|
623
672
|
|
|
624
673
|
{!cartState.loading && cart && (
|
|
625
674
|
<View>
|
|
626
|
-
<ChErrors style={{ marginBottom:
|
|
675
|
+
<ChErrors style={{ marginBottom: 10 }}>
|
|
627
676
|
{!cart?.valid_address && cart?.status !== 2 && (
|
|
628
677
|
<OText
|
|
629
678
|
color={theme.colors.error}
|
|
@@ -650,14 +699,17 @@ const CheckoutUI = (props: any) => {
|
|
|
650
699
|
{t('WARNING_INVALID_PRODUCTS_CHECKOUT', 'To continue with your checkout, please remove from your cart the products that are not available.')}
|
|
651
700
|
</OText>
|
|
652
701
|
)}
|
|
653
|
-
{
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
702
|
+
{options.type === 1 &&
|
|
703
|
+
validationFields?.fields?.checkout?.driver_tip?.enabled &&
|
|
704
|
+
validationFields?.fields?.checkout?.driver_tip?.required &&
|
|
705
|
+
(Number(cart?.driver_tip) <= 0) && (
|
|
706
|
+
<OText
|
|
707
|
+
color={theme.colors.error}
|
|
708
|
+
size={12}
|
|
709
|
+
>
|
|
710
|
+
{t('WARNING_INVALID_DRIVER_TIP', 'Driver Tip is required.')}
|
|
711
|
+
</OText>
|
|
712
|
+
)}
|
|
661
713
|
</ChErrors>
|
|
662
714
|
</View>
|
|
663
715
|
)}
|
|
@@ -672,11 +724,33 @@ const CheckoutUI = (props: any) => {
|
|
|
672
724
|
onClose={() => setOpenChangeStore(false)}
|
|
673
725
|
/>
|
|
674
726
|
</OModal>
|
|
727
|
+
<OModal
|
|
728
|
+
open={isOpen}
|
|
729
|
+
onClose={() => setIsOpen(false)}
|
|
730
|
+
>
|
|
731
|
+
<View style={styles.detailWrapper}>
|
|
732
|
+
<UserDetails
|
|
733
|
+
isUserDetailsEdit
|
|
734
|
+
cartStatus={cart?.status}
|
|
735
|
+
businessId={cart?.business_id}
|
|
736
|
+
useValidationFields
|
|
737
|
+
useDefualtSessionManager
|
|
738
|
+
useSessionUser
|
|
739
|
+
isCheckout
|
|
740
|
+
isEdit
|
|
741
|
+
phoneUpdate={phoneUpdate}
|
|
742
|
+
togglePhoneUpdate={togglePhoneUpdate}
|
|
743
|
+
requiredFields={requiredFields}
|
|
744
|
+
hideUpdateButton
|
|
745
|
+
onClose={() => setIsOpen(false)}
|
|
746
|
+
/>
|
|
747
|
+
</View>
|
|
748
|
+
</OModal>
|
|
675
749
|
</ChContainer>
|
|
676
750
|
</Container>
|
|
677
751
|
{!cartState.loading && cart && cart?.status !== 2 && (
|
|
678
752
|
<FloatingButton
|
|
679
|
-
handleClick={() => handlePlaceOrder()}
|
|
753
|
+
handleClick={() => handlePlaceOrder(null)}
|
|
680
754
|
isSecondaryBtn={isDisabledButtonPlace}
|
|
681
755
|
disabled={isDisabledButtonPlace}
|
|
682
756
|
btnText={cart?.subtotal >= cart?.minimum
|
|
@@ -690,7 +764,7 @@ const CheckoutUI = (props: any) => {
|
|
|
690
764
|
: (`${t('MINIMUN_SUBTOTAL_ORDER', 'Minimum subtotal order:')} ${parsePrice(cart?.minimum)}`)
|
|
691
765
|
}
|
|
692
766
|
btnRightValueShow
|
|
693
|
-
btnRightValue={parsePrice(cart?.
|
|
767
|
+
btnRightValue={parsePrice(cart?.balance)}
|
|
694
768
|
iosBottom={30}
|
|
695
769
|
/>
|
|
696
770
|
)}
|
|
@@ -706,19 +780,6 @@ const CheckoutUI = (props: any) => {
|
|
|
706
780
|
setShowGateway={setShowGateway}
|
|
707
781
|
/>
|
|
708
782
|
)}
|
|
709
|
-
{webviewPaymethod?.gateway === 'square' && showGateway.open && (
|
|
710
|
-
<PaymentOptionsWebView
|
|
711
|
-
onNavigationRedirect={onNavigationRedirect}
|
|
712
|
-
uri={`https://test-square-f50f7.web.app`}
|
|
713
|
-
user={user}
|
|
714
|
-
token={token}
|
|
715
|
-
cart={cart}
|
|
716
|
-
currency={currency}
|
|
717
|
-
webviewPaymethod={webviewPaymethod}
|
|
718
|
-
setShowGateway={setShowGateway}
|
|
719
|
-
locationId={'L1NGAY5M6KJRX'}
|
|
720
|
-
/>
|
|
721
|
-
)}
|
|
722
783
|
</>
|
|
723
784
|
)
|
|
724
785
|
}
|
|
@@ -48,22 +48,28 @@ const DriverTipsUI = (props: any) => {
|
|
|
48
48
|
}
|
|
49
49
|
})
|
|
50
50
|
|
|
51
|
-
const [value, setvalue] = useState(
|
|
51
|
+
const [value, setvalue] = useState('');
|
|
52
52
|
|
|
53
53
|
const placeholderCurrency = (configs?.currency_position?.value || 'left') === 'left'
|
|
54
54
|
? `${configs?.format_number_currency?.value}0`
|
|
55
55
|
: `0${configs?.format_number_currency?.value}`
|
|
56
56
|
|
|
57
57
|
const handleChangeDriverTip = (val: any) => {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
const tip = Number(val)
|
|
59
|
+
if ((isNaN(tip) || tip < 0)) {
|
|
60
|
+
setvalue(value)
|
|
61
|
+
return
|
|
62
|
+
}
|
|
63
|
+
setvalue(val)
|
|
61
64
|
}
|
|
62
|
-
|
|
65
|
+
|
|
63
66
|
return (
|
|
64
67
|
<DTContainer>
|
|
68
|
+
<DTLabel>
|
|
69
|
+
{t('CUSTOM_DRIVER_TIP_MESSAGE', '100% of these tips go directly to your driver')}
|
|
70
|
+
</DTLabel>
|
|
65
71
|
<DTWrapperTips>
|
|
66
|
-
{driverTipsOptions.map((option: any, i: number) => (
|
|
72
|
+
{!isDriverTipUseCustom && driverTipsOptions.map((option: any, i: number) => (
|
|
67
73
|
<TouchableOpacity
|
|
68
74
|
key={i}
|
|
69
75
|
onPress={() => handlerChangeOption(option)}
|
|
@@ -79,7 +85,7 @@ const DriverTipsUI = (props: any) => {
|
|
|
79
85
|
</TouchableOpacity>
|
|
80
86
|
))}
|
|
81
87
|
</DTWrapperTips>
|
|
82
|
-
{!driverTipsOptions.includes(driverTip) && driverTip > 0 && (
|
|
88
|
+
{(!isDriverTipUseCustom && !driverTipsOptions.includes(driverTip) && driverTip > 0) && (
|
|
83
89
|
<OText
|
|
84
90
|
color={theme.colors.error}
|
|
85
91
|
size={16}
|
|
@@ -90,13 +96,12 @@ const DriverTipsUI = (props: any) => {
|
|
|
90
96
|
)}
|
|
91
97
|
{isDriverTipUseCustom && (
|
|
92
98
|
<DTForm>
|
|
93
|
-
<DTLabel>
|
|
94
|
-
{t('CUSTOM_DRIVER_TIP_MESSAGE', '100% of these tips go directly to your driver')}
|
|
95
|
-
</DTLabel>
|
|
96
99
|
<DTWrapperInput>
|
|
97
100
|
<OInput
|
|
98
101
|
placeholder={placeholderCurrency}
|
|
99
102
|
style={style.inputStyle}
|
|
103
|
+
value={value}
|
|
104
|
+
type={'numeric'}
|
|
100
105
|
onChange={handleChangeDriverTip}
|
|
101
106
|
autoCapitalize='none'
|
|
102
107
|
autoCorrect={false}
|
|
@@ -108,10 +113,10 @@ const DriverTipsUI = (props: any) => {
|
|
|
108
113
|
textStyle={{ color: 'white', fontSize: 14 }}
|
|
109
114
|
imgRightSrc={null}
|
|
110
115
|
style={{ borderRadius: 5, height: 44 }}
|
|
111
|
-
isDisabled={
|
|
116
|
+
isDisabled={parseFloat(value || '0') < 0 || parseFloat(value || '0') === driverTip || value === ''}
|
|
112
117
|
onClick={() => {
|
|
113
118
|
handlerChangeOption(value)
|
|
114
|
-
setvalue(
|
|
119
|
+
setvalue('')
|
|
115
120
|
}}
|
|
116
121
|
/>
|
|
117
122
|
</DTWrapperInput>
|