ordering-ui-react-native 0.22.5 → 0.22.6-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 +6 -7
- package/src/DeliveryApp.tsx +43 -1
- package/src/components/BusinessesListing/index.tsx +1 -1
- package/src/components/Checkout/index.tsx +40 -39
- package/src/components/StripeMethodForm/index.tsx +4 -2
- package/src/components/VerifyPhone/styles.tsx +1 -2
- package/src/context/OfflineActions/index.tsx +236 -0
- package/src/types/index.tsx +2 -1
- package/themes/business/index.tsx +2 -0
- package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +9 -6
- package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
- package/themes/business/src/components/BusinessController/index.tsx +8 -3
- package/themes/business/src/components/BusinessProductList/index.tsx +2 -1
- package/themes/business/src/components/Chat/index.tsx +15 -3
- package/themes/business/src/components/DriverMap/index.tsx +49 -27
- package/themes/business/src/components/FloatingButton/index.tsx +3 -2
- package/themes/business/src/components/GoogleMap/index.tsx +15 -8
- package/themes/business/src/components/LanguageSelector/index.tsx +2 -3
- package/themes/business/src/components/LanguageSelector/lang_country.json +515 -70
- package/themes/business/src/components/LogoutButton/index.tsx +1 -1
- package/themes/business/src/components/MapView/index.tsx +36 -17
- package/themes/business/src/components/NewOrderNotification/index.tsx +40 -27
- package/themes/business/src/components/OrderDetails/Business.tsx +40 -35
- package/themes/business/src/components/OrderDetails/Delivery.tsx +138 -55
- package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +125 -43
- package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +62 -24
- package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
- package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +138 -64
- package/themes/business/src/components/OrderDetailsLogistic/index.tsx +3 -2
- package/themes/business/src/components/OrderSummary/index.tsx +210 -65
- package/themes/business/src/components/OrdersListManager/index.tsx +13 -1
- package/themes/business/src/components/OrdersOption/index.tsx +217 -156
- package/themes/business/src/components/PhoneInputNumber/index.tsx +8 -5
- package/themes/business/src/components/PreviousMessages/index.tsx +26 -3
- package/themes/business/src/components/PreviousOrders/OrderItem.tsx +39 -16
- package/themes/business/src/components/PreviousOrders/index.tsx +76 -66
- package/themes/business/src/components/PrinterEdition/MessageAlert.tsx +33 -0
- package/themes/business/src/components/PrinterEdition/index.tsx +431 -0
- package/themes/business/src/components/PrinterEdition/printerList.tsx +23 -0
- package/themes/business/src/components/PrinterEdition/styles.tsx +61 -0
- package/themes/business/src/components/PrinterSettings/index.tsx +162 -173
- package/themes/business/src/components/PrinterSettings/styles.tsx +14 -1
- package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
- package/themes/business/src/components/StoresList/index.tsx +2 -2
- package/themes/business/src/components/UserProfileForm/index.tsx +16 -17
- package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
- package/themes/business/src/components/shared/OTextarea.tsx +8 -9
- package/themes/business/src/layouts/SafeAreaContainer.tsx +35 -19
- package/themes/business/src/types/index.tsx +13 -4
- package/themes/business/src/utils/index.tsx +25 -1
- 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/Checkout/index.tsx +6 -0
- 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/OrderTypeCardSelector/index.tsx +8 -10
- package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
- package/themes/original/index.tsx +11 -0
- package/themes/original/src/components/AddressForm/index.tsx +32 -17
- package/themes/original/src/components/AddressList/index.tsx +8 -7
- package/themes/original/src/components/AnalyticsSegment/index.tsx +6 -6
- package/themes/original/src/components/AppleLogin/index.tsx +4 -4
- package/themes/original/src/components/BusinessBasicInformation/index.tsx +5 -8
- package/themes/original/src/components/BusinessController/index.tsx +5 -5
- package/themes/original/src/components/BusinessItemAccordion/index.tsx +13 -5
- package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +2 -3
- package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +1 -3
- package/themes/original/src/components/BusinessListingSearch/index.tsx +1 -2
- package/themes/original/src/components/BusinessPreorder/index.tsx +46 -28
- package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +73 -70
- package/themes/original/src/components/BusinessProductsList/index.tsx +6 -7
- package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
- package/themes/original/src/components/BusinessProductsListing/index.tsx +18 -6
- package/themes/original/src/components/BusinessTypeFilter/index.tsx +9 -8
- package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +2 -1
- package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +1 -1
- package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -1
- package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
- package/themes/original/src/components/Cart/index.tsx +38 -14
- package/themes/original/src/components/CartContent/index.tsx +2 -4
- package/themes/original/src/components/Checkout/index.tsx +112 -58
- package/themes/original/src/components/CitiesControl/index.tsx +0 -3
- package/themes/original/src/components/CouponControl/index.tsx +1 -3
- package/themes/original/src/components/DriverTips/index.tsx +1 -3
- package/themes/original/src/components/Favorite/index.tsx +1 -5
- package/themes/original/src/components/FavoriteList/index.tsx +0 -1
- package/themes/original/src/components/ForgotPasswordForm/index.tsx +5 -7
- package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +15 -17
- package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +3 -7
- package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +24 -32
- package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +7 -9
- package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/index.tsx +11 -12
- package/themes/original/src/components/GoogleMap/index.tsx +39 -18
- package/themes/original/src/components/Help/index.tsx +2 -0
- package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
- package/themes/original/src/components/Home/index.tsx +3 -11
- package/themes/original/src/components/LoginForm/Otp/index.tsx +0 -3
- package/themes/original/src/components/LoginForm/index.tsx +4 -7
- package/themes/original/src/components/MessageListing/index.tsx +2 -1
- package/themes/original/src/components/Messages/index.tsx +29 -17
- package/themes/original/src/components/MomentOption/TimeListItem.tsx +56 -0
- package/themes/original/src/components/MomentOption/index.tsx +80 -51
- package/themes/original/src/components/MomentSelector/index.tsx +1 -1
- package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +7 -3
- package/themes/original/src/components/MultiCheckout/index.tsx +55 -27
- package/themes/original/src/components/MultiOrdersDetails/index.tsx +1 -0
- package/themes/original/src/components/MyOrders/index.tsx +2 -2
- package/themes/original/src/components/NavBar/index.tsx +7 -4
- package/themes/original/src/components/NetworkError/index.tsx +0 -5
- package/themes/original/src/components/NotFoundSource/index.tsx +0 -3
- package/themes/original/src/components/OrderDetails/OrderEta.tsx +4 -3
- package/themes/original/src/components/OrderDetails/OrderHistory.tsx +13 -10
- package/themes/original/src/components/OrderDetails/index.tsx +44 -21
- package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
- package/themes/original/src/components/OrderProgress/index.tsx +5 -4
- package/themes/original/src/components/OrderSummary/index.tsx +29 -10
- package/themes/original/src/components/OrderTypeSelector/index.tsx +7 -6
- package/themes/original/src/components/OrdersOption/index.tsx +3 -6
- package/themes/original/src/components/PaymentOptionStripe/index.tsx +0 -5
- package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
- package/themes/original/src/components/PaymentOptions/index.tsx +0 -2
- package/themes/original/src/components/PlaceSpot/index.tsx +1 -3
- package/themes/original/src/components/PreviousOrders/index.tsx +1 -2
- package/themes/original/src/components/ProductForm/ActionButton.tsx +17 -20
- package/themes/original/src/components/ProductForm/index.tsx +107 -102
- package/themes/original/src/components/ProductItemAccordion/index.tsx +50 -43
- package/themes/original/src/components/ProductItemAccordion/styles.tsx +0 -3
- package/themes/original/src/components/ProductOptionSubOption/index.tsx +16 -8
- package/themes/original/src/components/ProfessionalProfile/index.tsx +4 -5
- package/themes/original/src/components/Promotions/index.tsx +6 -9
- package/themes/original/src/components/ReviewDriver/index.tsx +1 -1
- package/themes/original/src/components/ReviewOrder/index.tsx +2 -2
- package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
- package/themes/original/src/components/ReviewTrigger/index.tsx +2 -2
- package/themes/original/src/components/ServiceForm/index.tsx +52 -54
- package/themes/original/src/components/Sessions/index.tsx +3 -3
- package/themes/original/src/components/SignupForm/index.tsx +86 -78
- package/themes/original/src/components/SingleOrderCard/index.tsx +6 -4
- package/themes/original/src/components/SingleProductCard/index.tsx +5 -5
- package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
- package/themes/original/src/components/StripeCardForm/index.tsx +0 -3
- package/themes/original/src/components/StripeCardsList/index.tsx +10 -3
- package/themes/original/src/components/StripeElementsForm/index.tsx +76 -62
- package/themes/original/src/components/StripeElementsForm/naked.tsx +48 -1
- package/themes/original/src/components/StripeRedirectForm/index.tsx +0 -3
- package/themes/original/src/components/TaxInformation/index.tsx +3 -2
- package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +10 -7
- package/themes/original/src/components/UpsellingProducts/UpsellingLayout.tsx +8 -3
- package/themes/original/src/components/UserDetails/index.tsx +17 -16
- package/themes/original/src/components/UserFormDetails/index.tsx +159 -133
- package/themes/original/src/components/UserProfile/index.tsx +9 -1
- package/themes/original/src/components/UserVerification/index.tsx +14 -4
- package/themes/original/src/components/Wallets/index.tsx +6 -3
- package/themes/original/src/components/WebsocketStatus/index.tsx +1 -4
- package/themes/original/src/components/shared/OAlert.tsx +2 -1
- package/themes/original/src/components/shared/OButton.tsx +5 -4
- package/themes/original/src/components/shared/OInput.tsx +4 -8
- package/themes/original/src/components/shared/OModal.tsx +7 -2
- package/themes/original/src/types/index.tsx +5 -1
- package/themes/original/src/utils/index.tsx +30 -1
- package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
|
@@ -23,8 +23,7 @@ export const AnalyticsSegment = (props: any) => {
|
|
|
23
23
|
segmentClient.track('Product List Viewed', {
|
|
24
24
|
business_id: category?.business_id,
|
|
25
25
|
category_id: category?.id,
|
|
26
|
-
category: category?.name
|
|
27
|
-
products: category?.products
|
|
26
|
+
category: category?.name
|
|
28
27
|
})
|
|
29
28
|
}
|
|
30
29
|
|
|
@@ -62,11 +61,12 @@ export const AnalyticsSegment = (props: any) => {
|
|
|
62
61
|
})
|
|
63
62
|
}
|
|
64
63
|
|
|
65
|
-
const handleProductAdded = (product: any) => {
|
|
64
|
+
const handleProductAdded = (product: any, result: any) => {
|
|
66
65
|
segmentClient.track('Product Added', {
|
|
67
|
-
|
|
66
|
+
cart_id: result.uuid,
|
|
67
|
+
product_id: product.id,
|
|
68
68
|
name: product.name,
|
|
69
|
-
category: product.category_id,
|
|
69
|
+
category: product.category_id || product?.categoryId,
|
|
70
70
|
price: product.price,
|
|
71
71
|
quantity: product.quantity
|
|
72
72
|
})
|
|
@@ -101,7 +101,7 @@ export const AnalyticsSegment = (props: any) => {
|
|
|
101
101
|
|
|
102
102
|
const handleOrderPlaced = (order: any) => {
|
|
103
103
|
segmentClient.track('Order Placed', {
|
|
104
|
-
|
|
104
|
+
order_id: order.id,
|
|
105
105
|
affiliation: order.business?.name,
|
|
106
106
|
revenue: order.total,
|
|
107
107
|
tax: order.tax_total,
|
|
@@ -21,7 +21,7 @@ export const AppleLogin = (props: any) => {
|
|
|
21
21
|
const [{ configs }] = useConfig();
|
|
22
22
|
const [credentialStateForUser, updateCredentialStateForUser] = useState<any>(-1);
|
|
23
23
|
|
|
24
|
-
let user
|
|
24
|
+
let user: any = null
|
|
25
25
|
|
|
26
26
|
const buttonText = auth
|
|
27
27
|
? t('CONTINUE_WITH_APPLE', 'Logout with Apple')
|
|
@@ -53,7 +53,7 @@ export const AppleLogin = (props: any) => {
|
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
const fetchAndUpdateCredentialState = async (updateCredentialStateForUser
|
|
56
|
+
const fetchAndUpdateCredentialState = async (updateCredentialStateForUser: any) => {
|
|
57
57
|
if (user === null) {
|
|
58
58
|
updateCredentialStateForUser('N/A');
|
|
59
59
|
} else {
|
|
@@ -66,7 +66,7 @@ export const AppleLogin = (props: any) => {
|
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
const onIOSButtonPress = async (updateCredentialStateForUser
|
|
69
|
+
const onIOSButtonPress = async (updateCredentialStateForUser: any) => {
|
|
70
70
|
try {
|
|
71
71
|
const appleAuthRequestResponse = await appleAuth.performRequest({
|
|
72
72
|
requestedOperation: appleAuth.Operation.LOGIN,
|
|
@@ -79,7 +79,7 @@ export const AppleLogin = (props: any) => {
|
|
|
79
79
|
identityToken,
|
|
80
80
|
authorizationCode
|
|
81
81
|
} = appleAuthRequestResponse;
|
|
82
|
-
|
|
82
|
+
|
|
83
83
|
user = newUser;
|
|
84
84
|
|
|
85
85
|
fetchAndUpdateCredentialState(updateCredentialStateForUser).catch(error =>
|
|
@@ -26,7 +26,6 @@ import {
|
|
|
26
26
|
SocialListWrapper
|
|
27
27
|
} from './styles';
|
|
28
28
|
import { Fade, Placeholder, PlaceholderLine } from 'rn-placeholder';
|
|
29
|
-
const types = ['food', 'laundry', 'alcohol', 'groceries'];
|
|
30
29
|
|
|
31
30
|
let BusinessInformation: null | React.ElementType = null
|
|
32
31
|
let BusinessReviews: null | React.ElementType = null
|
|
@@ -36,6 +35,7 @@ export const BusinessBasicInformation = (
|
|
|
36
35
|
) => {
|
|
37
36
|
const { navigation, businessState, isBusinessInfoShow, logo, header, isPreOrder } = props;
|
|
38
37
|
const { business, loading } = businessState;
|
|
38
|
+
const types = business?.types && business?.types?.filter(({ enabled }) => (enabled)).map(({ name }) => (name))
|
|
39
39
|
|
|
40
40
|
const theme = useTheme();
|
|
41
41
|
const [orderState] = useOrder();
|
|
@@ -146,14 +146,11 @@ export const BusinessBasicInformation = (
|
|
|
146
146
|
}
|
|
147
147
|
|
|
148
148
|
const getBusinessType = () => {
|
|
149
|
-
if (
|
|
149
|
+
if (!types) return t('GENERAL', 'General');
|
|
150
150
|
const _types: any = [];
|
|
151
151
|
types.forEach(
|
|
152
|
-
(type) =>
|
|
153
|
-
|
|
154
|
-
_types.push(
|
|
155
|
-
t(`BUSINESS_TYPE_${type?.replace(/\s/g, '_')?.toUpperCase()}`, type),
|
|
156
|
-
),
|
|
152
|
+
(type: any) =>
|
|
153
|
+
_types.push(type)
|
|
157
154
|
);
|
|
158
155
|
return _types.join(', ');
|
|
159
156
|
};
|
|
@@ -455,7 +452,7 @@ export const BusinessBasicInformation = (
|
|
|
455
452
|
</BusinessInfoItem>
|
|
456
453
|
</View>
|
|
457
454
|
<WrapReviews>
|
|
458
|
-
{!isBusinessInfoShow && (
|
|
455
|
+
{!isBusinessInfoShow && !loading && (
|
|
459
456
|
<>
|
|
460
457
|
{isPreOrder && (!business?.professionals || business?.professionals?.length === 0) && (
|
|
461
458
|
<>
|
|
@@ -35,9 +35,9 @@ import FastImage from 'react-native-fast-image'
|
|
|
35
35
|
import { LottieAnimation } from '../LottieAnimation';
|
|
36
36
|
import { CardAnimation } from '../shared/CardAnimation';
|
|
37
37
|
|
|
38
|
-
function BusinessControllerPropsAreEqual
|
|
38
|
+
function BusinessControllerPropsAreEqual(prevProps: any, nextProps: any) {
|
|
39
39
|
return JSON.stringify(prevProps.business) === JSON.stringify(nextProps.business) &&
|
|
40
|
-
|
|
40
|
+
prevProps.isBusinessOpen === nextProps.isBusinessOpen
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
export const BusinessControllerUI = React.memo((props: BusinessControllerParams) => {
|
|
@@ -232,7 +232,7 @@ export const BusinessControllerUI = React.memo((props: BusinessControllerParams)
|
|
|
232
232
|
</View>
|
|
233
233
|
)}
|
|
234
234
|
{!hideBusinessOffer && (
|
|
235
|
-
getBusinessOffer((business?.offers)) &&
|
|
235
|
+
!!getBusinessOffer((business?.offers)) &&
|
|
236
236
|
<OfferBox
|
|
237
237
|
isClosed={!isBusinessOpen && (configState?.configs?.preorder_status_enabled?.value === '1')}
|
|
238
238
|
isRibbon={business?.ribbon?.enabled && !!business?.ribbon?.text}
|
|
@@ -244,7 +244,7 @@ export const BusinessControllerUI = React.memo((props: BusinessControllerParams)
|
|
|
244
244
|
numberOfLines={2}
|
|
245
245
|
ellipsizeMode='tail'
|
|
246
246
|
lineHeight={13}
|
|
247
|
-
>{getBusinessOffer((business?.offers))
|
|
247
|
+
>{t('DISCOUNT', 'Discount')}{' '}{getBusinessOffer((business?.offers))}</OText>
|
|
248
248
|
</OfferBox>
|
|
249
249
|
)}
|
|
250
250
|
<BusinessState isRibbon={business?.ribbon?.enabled && !!business?.ribbon?.text}>
|
|
@@ -309,7 +309,7 @@ export const BusinessControllerUI = React.memo((props: BusinessControllerParams)
|
|
|
309
309
|
</ReviewAndFavorite>
|
|
310
310
|
)}
|
|
311
311
|
</View>
|
|
312
|
-
<OText size={textSize} style={{ lineHeight: 15, marginBottom: 3 }} numberOfLines={
|
|
312
|
+
<OText size={textSize} style={{ lineHeight: 15, marginBottom: 3, fontFamily: undefined }} numberOfLines={1}>
|
|
313
313
|
{business?.address}
|
|
314
314
|
</OText>
|
|
315
315
|
<Metadata>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { useState, useRef, useEffect } from 'react';
|
|
2
|
-
import { TouchableOpacity, View } from 'react-native';
|
|
2
|
+
import { TouchableOpacity, View, Vibration } from 'react-native';
|
|
3
3
|
import { useOrder, useLanguage, useUtils, useConfig, useEvent } from 'ordering-components/native';
|
|
4
4
|
import { useTheme } from 'styled-components/native';
|
|
5
5
|
import {
|
|
@@ -57,6 +57,9 @@ export const BusinessItemAccordion = (props: any) => {
|
|
|
57
57
|
return acc = acc
|
|
58
58
|
}, cart?.subtotal)
|
|
59
59
|
|
|
60
|
+
const bgStyle = (subtotalWithTaxes < cart?.minimum || !cart?.valid_address) ? theme.colors.secundary : theme.colors.primary
|
|
61
|
+
const textStyles = (subtotalWithTaxes < cart?.minimum || !cart?.valid_address) ? theme.colors.black : theme.colors.white
|
|
62
|
+
|
|
60
63
|
useEffect(() => {
|
|
61
64
|
if (isActive && !isFromUpselling) {
|
|
62
65
|
if (cart?.uuid !== viewedCart?.uuid) {
|
|
@@ -66,6 +69,11 @@ export const BusinessItemAccordion = (props: any) => {
|
|
|
66
69
|
}
|
|
67
70
|
}, [isActive, viewedCart])
|
|
68
71
|
|
|
72
|
+
const handleGoToStore = () => {
|
|
73
|
+
Vibration.vibrate(100)
|
|
74
|
+
props.onNavigationRedirect('Business', { store: cart?.business?.slug })
|
|
75
|
+
}
|
|
76
|
+
|
|
69
77
|
return (
|
|
70
78
|
<BIContainer isClosed={isClosed} isMultiCheckout={isMultiCheckout} checkoutVisible={!isActive && !isClosed && !!isProducts && !checkoutButtonDisabled}>
|
|
71
79
|
<BIHeader
|
|
@@ -79,7 +87,7 @@ export const BusinessItemAccordion = (props: any) => {
|
|
|
79
87
|
<View style={{ flexDirection: 'row' }}>
|
|
80
88
|
{props.onNavigationRedirect && !isClosed && !isGiftCart && (
|
|
81
89
|
<>
|
|
82
|
-
<TouchableOpacity onPress={() =>
|
|
90
|
+
<TouchableOpacity onPress={() => handleGoToStore()}>
|
|
83
91
|
<OText color={theme.colors.primary} size={12} lineHeight={18} style={{ textDecorationLine: 'underline' }}>{t('GO_TO_STORE', 'Go to store')}</OText>
|
|
84
92
|
</TouchableOpacity>
|
|
85
93
|
</>
|
|
@@ -153,11 +161,11 @@ export const BusinessItemAccordion = (props: any) => {
|
|
|
153
161
|
{cart?.valid_products && (
|
|
154
162
|
<OButton
|
|
155
163
|
onClick={handleClickCheckout}
|
|
156
|
-
textStyle={{ color:
|
|
164
|
+
textStyle={{ color: textStyles, textAlign: 'center', flex: 1 }}
|
|
157
165
|
style={{ width: 180, flexDirection: 'row', justifyContent: 'center', borderRadius: 7.6, shadowOpacity: 0 }}
|
|
158
166
|
text={t('CHECKOUT', 'Checkout')}
|
|
159
|
-
bgColor={
|
|
160
|
-
borderColor={
|
|
167
|
+
bgColor={bgStyle}
|
|
168
|
+
borderColor={bgStyle}
|
|
161
169
|
isDisabled={checkoutButtonDisabled}
|
|
162
170
|
/>
|
|
163
171
|
)}
|
|
@@ -243,7 +243,7 @@ export const BusinessSearchFooter = (props: any) => {
|
|
|
243
243
|
onClick={() => handleChangePriceRange(price?.level)}
|
|
244
244
|
text={`${price.content} ${(filters?.price_level === price?.level) ? ' X' : ''}`}
|
|
245
245
|
style={styles.priceItem}
|
|
246
|
-
textStyle={{ fontSize: 10, color: (filters?.price_level === price?.level) ? theme.colors.
|
|
246
|
+
textStyle={{ fontSize: 10, color: (filters?.price_level === price?.level) ? theme.colors.white : theme.colors.textNormal }}
|
|
247
247
|
/>
|
|
248
248
|
))}
|
|
249
249
|
</View>
|
|
@@ -284,7 +284,7 @@ export const BusinessSearchFooter = (props: any) => {
|
|
|
284
284
|
onClick={() => handleChangeActiveBusinessType(type)}
|
|
285
285
|
text={`${t(`BUSINESS_TYPE_${type.name.replace(/\s/g, '_').toUpperCase()}`, type.name)} ${filters?.business_types?.includes(type?.id) ? 'X' : ''}`}
|
|
286
286
|
style={styles.categoryStyle}
|
|
287
|
-
textStyle={{ fontSize: 10, color: (filters?.business_types?.includes(type?.id) || (type?.id === null && filters?.business_types?.length === 0)) ?
|
|
287
|
+
textStyle={{ fontSize: 10, color: (filters?.business_types?.includes(type?.id) || (type?.id === null && filters?.business_types?.length === 0)) ? theme.colors.white : theme.colors.textNormal }}
|
|
288
288
|
/>
|
|
289
289
|
))}
|
|
290
290
|
</View>
|
|
@@ -296,7 +296,6 @@ export const BusinessSearchFooter = (props: any) => {
|
|
|
296
296
|
<OButton
|
|
297
297
|
text={t('APPLY', 'Apply')}
|
|
298
298
|
parentStyle={styles.applyButton}
|
|
299
|
-
textStyle={{ color: '#fff' }}
|
|
300
299
|
onClick={() => handleApplyFilters()}
|
|
301
300
|
/>
|
|
302
301
|
</View>
|
|
@@ -47,13 +47,11 @@ export const BusinessSearchHeader = (props: any) => {
|
|
|
47
47
|
borderWidth: 0,
|
|
48
48
|
width: 26,
|
|
49
49
|
height: 26,
|
|
50
|
-
backgroundColor: '#FFF',
|
|
51
|
-
borderColor: '#FFF',
|
|
52
|
-
shadowColor: '#FFF',
|
|
53
50
|
paddingLeft: 0,
|
|
54
51
|
paddingRight: 0,
|
|
55
52
|
marginTop: 50,
|
|
56
53
|
}}
|
|
54
|
+
useArrow
|
|
57
55
|
onClick={() => props.navigation.goBack()}
|
|
58
56
|
icon={AntDesignIcon}
|
|
59
57
|
iconProps={{
|
|
@@ -230,7 +230,7 @@ export const BusinessListingSearchUI = (props: BusinessSearchParams) => {
|
|
|
230
230
|
</BusinessInfoItem>
|
|
231
231
|
<OButton
|
|
232
232
|
onClick={() => onBusinessClick(business)}
|
|
233
|
-
textStyle={{
|
|
233
|
+
textStyle={{ fontSize: 10 }}
|
|
234
234
|
text={t('GO_TO_STORE', 'Go to store')}
|
|
235
235
|
style={{
|
|
236
236
|
borderRadius: 23,
|
|
@@ -238,7 +238,6 @@ export const BusinessListingSearchUI = (props: BusinessSearchParams) => {
|
|
|
238
238
|
paddingRight: 10,
|
|
239
239
|
height: 23,
|
|
240
240
|
shadowOpacity: 0,
|
|
241
|
-
backgroundColor: theme.colors.primaryContrast,
|
|
242
241
|
borderWidth: 0
|
|
243
242
|
}}
|
|
244
243
|
/>
|
|
@@ -11,6 +11,8 @@ import { BusinessMenuList } from '../BusinessMenuList'
|
|
|
11
11
|
import Spinner from 'react-native-loading-spinner-overlay'
|
|
12
12
|
import { BusinessPreorderParams } from '../../types'
|
|
13
13
|
import moment from 'moment'
|
|
14
|
+
import { setLocalMoment } from '../../utils';
|
|
15
|
+
|
|
14
16
|
import SelectDropdown from 'react-native-select-dropdown'
|
|
15
17
|
import {
|
|
16
18
|
PreOrderContainer,
|
|
@@ -41,7 +43,8 @@ const BusinessPreorderUI = (props: BusinessPreorderParams) => {
|
|
|
41
43
|
getActualSchedule,
|
|
42
44
|
isAsap,
|
|
43
45
|
cateringPreorder,
|
|
44
|
-
preorderLeadTime
|
|
46
|
+
preorderLeadTime,
|
|
47
|
+
preorderMaximumDays
|
|
45
48
|
} = props
|
|
46
49
|
|
|
47
50
|
const theme = useTheme()
|
|
@@ -261,14 +264,23 @@ const BusinessPreorderUI = (props: BusinessPreorderParams) => {
|
|
|
261
264
|
if (cateringPreorder) {
|
|
262
265
|
let _timeLists = []
|
|
263
266
|
const schedule = business && getActualSchedule()
|
|
264
|
-
if (!schedule &&
|
|
267
|
+
if (!schedule && business) {
|
|
268
|
+
setTimeList([])
|
|
265
269
|
return
|
|
266
270
|
}
|
|
271
|
+
|
|
267
272
|
_timeLists = hoursList
|
|
268
|
-
.filter(hour =>
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
273
|
+
.filter(hour => {
|
|
274
|
+
return (Object.keys(business || {})?.length === 0 || schedule?.lapses?.some((lapse: any) => {
|
|
275
|
+
const openHour = lapse.open.hour < 10 ? `0${lapse.open.hour}` : lapse.open.hour
|
|
276
|
+
const openMinute = lapse.open.minute < 10 ? `0${lapse.open.minute}` : lapse.open.minute
|
|
277
|
+
const closeHour = lapse.close.hour < 10 ? `0${lapse.close.hour}` : lapse.close.hour
|
|
278
|
+
const closeMinute = lapse.close.minute < 10 ? `0${lapse.close.minute}` : lapse.close.minute
|
|
279
|
+
return moment(dateSelected + ` ${hour.startTime}`) >= moment(dateSelected + ` ${openHour}:${openMinute}`).add(preorderLeadTime, 'minutes') && moment(dateSelected + ` ${hour.endTime}`) <= moment(dateSelected + ` ${closeHour}:${closeMinute}`)
|
|
280
|
+
})) &&
|
|
281
|
+
(moment(dateSelected + ` ${hour.startTime}`) < moment(dateSelected + ` ${hour.endTime}`)) &&
|
|
282
|
+
(moment().add(preorderLeadTime, 'minutes') < moment(dateSelected + ` ${hour.startTime}`) || !cateringPreorder)
|
|
283
|
+
})
|
|
272
284
|
.map(hour => {
|
|
273
285
|
return {
|
|
274
286
|
value: hour.startTime,
|
|
@@ -296,7 +308,7 @@ const BusinessPreorderUI = (props: BusinessPreorderParams) => {
|
|
|
296
308
|
const _times = getTimes(selectDate, selectedMenu)
|
|
297
309
|
setTimeList(_times)
|
|
298
310
|
}
|
|
299
|
-
}, [selectDate, menu, business, cateringPreorder, hoursList, dateSelected])
|
|
311
|
+
}, [selectDate, menu, JSON.stringify(datesWhitelist), JSON.stringify(business), cateringPreorder, JSON.stringify(hoursList), dateSelected])
|
|
300
312
|
|
|
301
313
|
useEffect(() => {
|
|
302
314
|
if (selectedPreorderType === 0 && Object.keys(menu).length > 0) setMenu({})
|
|
@@ -311,6 +323,10 @@ const BusinessPreorderUI = (props: BusinessPreorderParams) => {
|
|
|
311
323
|
}
|
|
312
324
|
}, [dateSelected])
|
|
313
325
|
|
|
326
|
+
useEffect(() => {
|
|
327
|
+
setLocalMoment(moment, t)
|
|
328
|
+
}, [])
|
|
329
|
+
|
|
314
330
|
useFocusEffect(
|
|
315
331
|
React.useCallback(() => {
|
|
316
332
|
handleAsap && handleAsap()
|
|
@@ -438,21 +454,23 @@ const BusinessPreorderUI = (props: BusinessPreorderParams) => {
|
|
|
438
454
|
style={styles.calendar}
|
|
439
455
|
calendarHeaderContainerStyle={styles.calendarHeaderContainer}
|
|
440
456
|
calendarHeaderStyle={styles.calendarHeader}
|
|
441
|
-
dateNumberStyle={styles.dateNumber}
|
|
442
|
-
dateNameStyle={styles.dateName}
|
|
443
457
|
iconContainer={{ flex: 0.1 }}
|
|
444
|
-
highlightDateNameStyle={styles.highlightDateName}
|
|
445
|
-
highlightDateNumberStyle={styles.highlightDateNumber}
|
|
446
458
|
dayContainerStyle={{ height: '100%' }}
|
|
447
459
|
highlightDateContainerStyle={{ height: '100%' }}
|
|
448
460
|
calendarHeaderFormat='MMMM, YYYY'
|
|
449
461
|
iconStyle={{ borderWidth: 1 }}
|
|
450
462
|
selectedDate={selectDate}
|
|
451
463
|
datesWhitelist={datesWhitelist}
|
|
464
|
+
highlightDateNameStyle={styles.highlightDateName}
|
|
465
|
+
highlightDateNumberStyle={styles.highlightDateNumber}
|
|
466
|
+
minDate={moment()}
|
|
467
|
+
maxDate={cateringPreorder ? moment().add(preorderMaximumDays, 'days') : undefined}
|
|
452
468
|
disabledDateNameStyle={styles.disabledDateName}
|
|
453
469
|
disabledDateNumberStyle={styles.disabledDateNumber}
|
|
470
|
+
dateNumberStyle={styles.dateNumber}
|
|
471
|
+
dateNameStyle={styles.dateName}
|
|
454
472
|
disabledDateOpacity={0.6}
|
|
455
|
-
onDateSelected={(date) => onSelectDate(date)}
|
|
473
|
+
onDateSelected={(date: any) => onSelectDate(date)}
|
|
456
474
|
leftSelector={<LeftSelector />}
|
|
457
475
|
rightSelector={<RightSelector />}
|
|
458
476
|
/>
|
|
@@ -527,7 +545,6 @@ const BusinessPreorderUI = (props: BusinessPreorderParams) => {
|
|
|
527
545
|
)}
|
|
528
546
|
<OButton
|
|
529
547
|
text={t('GO_TO_MENU', 'Go to menu')}
|
|
530
|
-
textStyle={{ color: 'white' }}
|
|
531
548
|
style={{ borderRadius: 7.6, marginBottom: 20, marginTop: 30 }}
|
|
532
549
|
onClick={() => handleClickBusiness()}
|
|
533
550
|
isDisabled={isAsap || !(dateSelected && timeSelected)}
|
|
@@ -553,21 +570,22 @@ export const BusinessPreorder = (props: any) => {
|
|
|
553
570
|
currentDate.setMinutes(59)
|
|
554
571
|
|
|
555
572
|
const cateringTypeString = orderState?.options?.type === 7
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
573
|
+
? 'catering_delivery'
|
|
574
|
+
: orderState?.options?.type === 8
|
|
575
|
+
? 'catering_pickup'
|
|
576
|
+
: null
|
|
560
577
|
|
|
561
|
-
const splitCateringValue = (configName
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
const
|
|
568
|
-
const
|
|
569
|
-
const
|
|
570
|
-
const
|
|
578
|
+
const splitCateringValue = (configName: string) =>
|
|
579
|
+
Object.values(props?.business?.configs || {})
|
|
580
|
+
?.find((config : any) => config?.key === configName)
|
|
581
|
+
?.value?.split('|')
|
|
582
|
+
?.find((val : any) => val.includes(cateringTypeString || ''))?.split(',')[1]
|
|
583
|
+
|
|
584
|
+
const preorderSlotInterval = parseInt(splitCateringValue('preorder_slot_interval'))
|
|
585
|
+
const preorderLeadTime = parseInt(splitCateringValue('preorder_lead_time'))
|
|
586
|
+
const preorderTimeRange = parseInt(splitCateringValue('preorder_time_range'))
|
|
587
|
+
const preorderMaximumDays = parseInt(splitCateringValue('preorder_maximum_days'))
|
|
588
|
+
const preorderMinimumDays = parseInt(splitCateringValue('preorder_minimum_days'))
|
|
571
589
|
|
|
572
590
|
const businessPreorderProps = {
|
|
573
591
|
...props,
|
|
@@ -581,4 +599,4 @@ const preorderMinimumDays = parseInt(splitCateringValue('preorder_minimum_days')
|
|
|
581
599
|
cateringPreorder: !!cateringTypeString
|
|
582
600
|
}
|
|
583
601
|
return <MomentOption {...businessPreorderProps} />
|
|
584
|
-
}
|
|
602
|
+
}
|
package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx
CHANGED
|
@@ -1,87 +1,90 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
|
-
import { useTheme } from 'styled-components/native'
|
|
3
2
|
import { StyleSheet } from 'react-native'
|
|
4
|
-
import { SubCategoriesContainer, ContainerButton } from './styles'
|
|
5
|
-
import { OButton } from '../../shared'
|
|
6
3
|
import { useLanguage } from 'ordering-components/native'
|
|
4
|
+
import FIcon from 'react-native-vector-icons/Feather'
|
|
5
|
+
import { SubCategoriesContainer, ContainerButton } from './styles'
|
|
6
|
+
import { OButton, OText } from '../../shared'
|
|
7
7
|
|
|
8
8
|
function SubcategoriesComponentPropsAreEqual(prev: any, next: any) {
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
return prev.subcategoriesSelected === next.subcategoriesSelected &&
|
|
10
|
+
prev.category === next.category
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
interface SubcategoriesComponentParams {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
subcategoriesSelected?: any,
|
|
15
|
+
category?: any,
|
|
16
|
+
onClickSubcategory: any
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
const SubcategoriesComponent = (props
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
19
|
+
const SubcategoriesComponent = (props: SubcategoriesComponentParams) => {
|
|
20
|
+
const {
|
|
21
|
+
subcategoriesSelected,
|
|
22
|
+
category,
|
|
23
|
+
onClickSubcategory
|
|
24
|
+
} = props
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const allsubcategorySelected = !subcategoriesSelected?.some((subcategory: any) => category?.id === subcategory?.parent_category_id)
|
|
26
|
+
const [, t] = useLanguage()
|
|
27
|
+
const allsubcategorySelected = !subcategoriesSelected?.some((subcategory: any) => category?.id === subcategory?.parent_category_id)
|
|
29
28
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
marginLeft: 5,
|
|
43
|
-
marginRight: 5,
|
|
44
|
-
marginBottom: 10,
|
|
45
|
-
height: 35,
|
|
46
|
-
paddingLeft: 3,
|
|
47
|
-
paddingRight: 3,
|
|
48
|
-
}
|
|
49
|
-
});
|
|
29
|
+
const bpStyles = StyleSheet.create({
|
|
30
|
+
categoryButtonStyle: {
|
|
31
|
+
borderWidth: 0,
|
|
32
|
+
marginRight: 5,
|
|
33
|
+
borderRadius: 8,
|
|
34
|
+
marginBottom: 5,
|
|
35
|
+
height: 35,
|
|
36
|
+
padding: 0,
|
|
37
|
+
paddingLeft: 3,
|
|
38
|
+
paddingRight: 3,
|
|
39
|
+
}
|
|
40
|
+
});
|
|
50
41
|
|
|
51
42
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
43
|
+
return (
|
|
44
|
+
<SubCategoriesContainer>
|
|
45
|
+
<ContainerButton
|
|
46
|
+
isSelected={allsubcategorySelected}
|
|
47
|
+
>
|
|
48
|
+
<OButton
|
|
49
|
+
onClick={() => onClickSubcategory(null, category)}
|
|
50
|
+
text={
|
|
51
|
+
allsubcategorySelected
|
|
52
|
+
? <OText color='#FFF'>
|
|
53
|
+
{t('ALL', 'All')}{' '}
|
|
54
|
+
<FIcon name='x-circle' size={16} />
|
|
55
|
+
</OText>
|
|
56
|
+
: t('ALL', 'All')
|
|
57
|
+
}
|
|
58
|
+
style={bpStyles.categoryButtonStyle}
|
|
59
|
+
textStyle={{ fontSize: 12 }}
|
|
60
|
+
/>
|
|
61
|
+
</ContainerButton>
|
|
62
|
+
{category?.subcategories?.map((subcategory: any) => {
|
|
63
|
+
const isSubcategorySelected = subcategoriesSelected?.find((_subcategory: any) => _subcategory?.id === subcategory?.id)
|
|
64
|
+
return (
|
|
65
|
+
<ContainerButton
|
|
66
|
+
key={subcategory?.id}
|
|
67
|
+
isSelected={isSubcategorySelected}
|
|
68
|
+
>
|
|
69
|
+
<OButton
|
|
70
|
+
onClick={() => onClickSubcategory(subcategory, category)}
|
|
71
|
+
text={
|
|
72
|
+
isSubcategorySelected
|
|
73
|
+
? <OText color='#FFF'>
|
|
74
|
+
{subcategory?.name}{' '}
|
|
75
|
+
<FIcon name='x-circle' size={16} />
|
|
76
|
+
</OText>
|
|
77
|
+
: subcategory?.name
|
|
78
|
+
}
|
|
79
|
+
style={bpStyles.categoryButtonStyle}
|
|
80
|
+
textStyle={{ fontSize: 12 }}
|
|
81
|
+
/>
|
|
82
|
+
</ContainerButton>
|
|
83
|
+
)
|
|
84
|
+
}
|
|
85
|
+
)}
|
|
86
|
+
</SubCategoriesContainer>
|
|
87
|
+
)
|
|
85
88
|
}
|
|
86
89
|
|
|
87
90
|
export const SubcategoriesComponentMemoized = React.memo(SubcategoriesComponent, SubcategoriesComponentPropsAreEqual)
|
|
@@ -65,11 +65,10 @@ const BusinessProductsListUI = (props: BusinessProductsListParams) => {
|
|
|
65
65
|
return
|
|
66
66
|
}
|
|
67
67
|
const categoryFounded = subcategoriesSelected.find((_subcategory: any) => subCategory?.id === _subcategory?.id)
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
68
|
+
setSubcategoriesSelected?.(categoryFounded
|
|
69
|
+
? subcategoriesSelected.filter((_subcategory: any) => subCategory?.id !== _subcategory?.id)
|
|
70
|
+
: [...subcategoriesSelected, subCategory]
|
|
71
|
+
)
|
|
73
72
|
}
|
|
74
73
|
|
|
75
74
|
return (
|
|
@@ -214,11 +213,11 @@ const BusinessProductsListUI = (props: BusinessProductsListParams) => {
|
|
|
214
213
|
text={t('VIEW_MORE', 'View more')}
|
|
215
214
|
parentStyle={{ padding: 0 }}
|
|
216
215
|
onClick={() => setOpenDescription(category)}
|
|
217
|
-
bgColor=
|
|
216
|
+
bgColor={theme.colors.white}
|
|
217
|
+
borderColor={theme.colors.primary}
|
|
218
218
|
textStyle={{
|
|
219
219
|
fontSize: 12,
|
|
220
220
|
borderBottomWidth: 1,
|
|
221
|
-
borderBottomColor: theme.colors.primary,
|
|
222
221
|
color: theme.colors.primary
|
|
223
222
|
}}
|
|
224
223
|
/>
|
|
@@ -18,15 +18,12 @@ export const RibbonBox = styled.View`
|
|
|
18
18
|
background-color: ${(props: any) => props.theme.colors.primary};
|
|
19
19
|
padding: 2px 8px;
|
|
20
20
|
max-width: 180px;
|
|
21
|
-
|
|
22
21
|
${(props: any) => props.bgColor && css`
|
|
23
22
|
background-color: ${props.bgColor};
|
|
24
23
|
`}
|
|
25
|
-
|
|
26
24
|
${(props: any) => props.isRoundRect && css`
|
|
27
25
|
border-radius: 7.6px;
|
|
28
26
|
`}
|
|
29
|
-
|
|
30
27
|
${(props: any) => props.isCapsule && css`
|
|
31
28
|
border-radius: 50px;
|
|
32
29
|
`}
|