ordering-ui-react-native 0.22.67 → 0.22.68-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 +5 -7
- package/src/components/BusinessesListing/index.tsx +1 -1
- package/src/components/Checkout/index.tsx +40 -39
- package/src/components/VerifyPhone/styles.tsx +1 -2
- package/src/context/OfflineActions/index.tsx +236 -0
- package/src/providers/AlertProvider.tsx +3 -1
- package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +5 -3
- 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 +3 -2
- package/themes/business/src/components/Chat/index.tsx +15 -3
- package/themes/business/src/components/DriverMap/index.tsx +44 -33
- package/themes/business/src/components/FloatingButton/index.tsx +3 -2
- package/themes/business/src/components/LanguageSelector/index.tsx +1 -1
- package/themes/business/src/components/LoginForm/index.tsx +123 -98
- package/themes/business/src/components/LogoutButton/index.tsx +13 -4
- package/themes/business/src/components/MapView/RenderMarker.tsx +146 -0
- package/themes/business/src/components/MapView/index.tsx +68 -142
- package/themes/business/src/components/NewOrderNotification/index.tsx +38 -54
- package/themes/business/src/components/OrderDetails/Business.tsx +56 -20
- package/themes/business/src/components/OrderDetails/Delivery.tsx +123 -54
- package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +146 -36
- package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +51 -28
- package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
- package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +17 -16
- package/themes/business/src/components/OrderDetailsLogistic/index.tsx +3 -2
- package/themes/business/src/components/OrderSummary/index.tsx +271 -176
- package/themes/business/src/components/OrdersListManager/index.tsx +13 -1
- package/themes/business/src/components/OrdersOption/index.tsx +342 -228
- package/themes/business/src/components/OrdersOption/styles.tsx +14 -0
- package/themes/business/src/components/PreviousMessages/index.tsx +26 -3
- package/themes/business/src/components/PreviousOrders/OrderItem.tsx +20 -8
- package/themes/business/src/components/PreviousOrders/index.tsx +74 -66
- package/themes/business/src/components/PreviousOrders/styles.tsx +2 -1
- package/themes/business/src/components/PrinterEdition/MessageAlert.tsx +33 -0
- package/themes/business/src/components/PrinterEdition/index.tsx +143 -75
- package/themes/business/src/components/PrinterEdition/printerList.tsx +23 -0
- package/themes/business/src/components/PrinterSettings/index.tsx +1 -1
- package/themes/business/src/components/ProductItemAccordion/index.tsx +3 -2
- 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 +48 -10
- package/themes/business/src/components/UserProfileForm/styles.tsx +7 -0
- package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
- package/themes/business/src/config/currency.tsx +1010 -0
- package/themes/business/src/hooks/useLocation.tsx +16 -12
- package/themes/business/src/layouts/SafeAreaContainer.tsx +35 -19
- package/themes/business/src/types/index.tsx +33 -7
- package/themes/business/src/utils/index.tsx +28 -3
- 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 +9 -5
- package/themes/kiosk/src/components/CustomerName/index.tsx +1 -1
- 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/PaymentOptions/index.tsx +121 -57
- package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
- package/themes/original/index.tsx +223 -219
- package/themes/original/src/components/AddressForm/index.tsx +922 -888
- package/themes/original/src/components/AppleLogin/index.tsx +3 -4
- package/themes/original/src/components/BusinessBasicInformation/index.tsx +1 -1
- package/themes/original/src/components/BusinessController/index.tsx +4 -2
- package/themes/original/src/components/BusinessItemAccordion/index.tsx +10 -4
- package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +103 -92
- package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +7 -3
- package/themes/original/src/components/BusinessListingSearch/index.tsx +8 -13
- package/themes/original/src/components/BusinessPreorder/index.tsx +30 -17
- 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 +5 -4
- 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/styles.tsx +1 -1
- package/themes/original/src/components/Cart/index.tsx +44 -12
- package/themes/original/src/components/CartContent/index.tsx +0 -2
- package/themes/original/src/components/Checkout/index.tsx +125 -97
- package/themes/original/src/components/ForgotPasswordForm/index.tsx +1 -2
- package/themes/original/src/components/GPSButton/index.tsx +2 -1
- package/themes/original/src/components/GoogleMap/index.tsx +5 -4
- package/themes/original/src/components/Help/functions.tsx +76 -0
- package/themes/original/src/components/Help/index.tsx +74 -29
- package/themes/original/src/components/Help/styles.tsx +4 -1
- package/themes/original/src/components/HelpOptions/index.tsx +53 -0
- package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
- package/themes/original/src/components/Home/index.tsx +36 -11
- package/themes/original/src/components/LastOrder/index.tsx +1 -1
- package/themes/original/src/components/LoginForm/index.tsx +11 -5
- package/themes/original/src/components/MessageListing/index.tsx +1 -1
- package/themes/original/src/components/Messages/index.tsx +562 -555
- package/themes/original/src/components/MomentOption/TimeListItem.tsx +56 -0
- package/themes/original/src/components/MomentOption/index.tsx +67 -49
- package/themes/original/src/components/MomentSelector/index.tsx +5 -2
- package/themes/original/src/components/MultiCheckout/index.tsx +78 -36
- package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +2 -2
- package/themes/original/src/components/MultiOrdersDetails/index.tsx +2 -2
- package/themes/original/src/components/NavBar/index.tsx +6 -2
- package/themes/original/src/components/NotFoundSource/index.tsx +40 -39
- package/themes/original/src/components/NotFoundSource/styles.tsx +18 -9
- package/themes/original/src/components/OrderDetails/OrderEta.tsx +4 -3
- package/themes/original/src/components/OrderDetails/OrderHistory.tsx +11 -4
- package/themes/original/src/components/OrderDetails/index.tsx +45 -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 +32 -11
- package/themes/original/src/components/OrderTypeSelector/index.tsx +120 -120
- package/themes/original/src/components/OrdersOption/index.tsx +325 -325
- package/themes/original/src/components/PaymentOptionWallet/index.tsx +1 -0
- package/themes/original/src/components/PaymentOptions/index.tsx +471 -459
- package/themes/original/src/components/PhoneInputNumber/index.tsx +92 -7
- package/themes/original/src/components/ProductForm/ActionButton.tsx +6 -10
- package/themes/original/src/components/ProductItemAccordion/index.tsx +28 -37
- package/themes/original/src/components/ProductOptionSubOption/index.tsx +15 -14
- package/themes/original/src/components/ServiceForm/index.tsx +2 -2
- package/themes/original/src/components/SignupForm/index.tsx +40 -24
- package/themes/original/src/components/SingleOrderCard/index.tsx +8 -5
- package/themes/original/src/components/SingleProductCard/index.tsx +3 -4
- package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
- package/themes/original/src/components/StripeCardsList/index.tsx +9 -4
- package/themes/original/src/components/StripeElementsForm/index.tsx +2 -2
- package/themes/original/src/components/TaxInformation/index.tsx +3 -2
- package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +7 -2
- package/themes/original/src/components/UserDetails/index.tsx +17 -16
- package/themes/original/src/components/UserFormDetails/index.tsx +109 -67
- package/themes/original/src/components/UserVerification/index.tsx +18 -5
- package/themes/original/src/components/VerifyPhone/index.tsx +1 -1
- package/themes/original/src/components/shared/OButton.tsx +2 -2
- package/themes/original/src/components/shared/OInput.tsx +97 -97
- package/themes/original/src/components/shared/OModal.tsx +7 -2
- package/themes/original/src/providers/AlertProvider.tsx +1 -1
- package/themes/original/src/types/index.tsx +700 -693
- package/themes/original/src/utils/index.tsx +50 -34
- package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
- package/themes/original/src/components/HelpAccountAndPayment/index.tsx +0 -62
- package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +0 -12
- package/themes/original/src/components/HelpGuide/index.tsx +0 -68
- package/themes/original/src/components/HelpGuide/styles.tsx +0 -12
- package/themes/original/src/components/HelpOrder/index.tsx +0 -71
- package/themes/original/src/components/HelpOrder/styles.tsx +0 -13
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
|
`}
|
|
@@ -225,8 +225,9 @@ const BusinessProductsListingUI = (props: BusinessProductsListingParams) => {
|
|
|
225
225
|
cartUuid: cart?.uuid,
|
|
226
226
|
businessLogo: cart?.business?.logo,
|
|
227
227
|
businessName: cart?.business?.name,
|
|
228
|
-
cartTotal: cart?.total
|
|
229
|
-
|
|
228
|
+
cartTotal: cart?.total,
|
|
229
|
+
fromProductsList: true
|
|
230
|
+
})
|
|
230
231
|
} else {
|
|
231
232
|
const groupKeys: any = {}
|
|
232
233
|
cartsAvailable.forEach((_cart: any) => {
|
|
@@ -242,12 +243,12 @@ const BusinessProductsListingUI = (props: BusinessProductsListingParams) => {
|
|
|
242
243
|
props.onNavigationRedirect('CheckoutNavigator', {
|
|
243
244
|
screen: 'MultiCheckout',
|
|
244
245
|
checkCarts: true
|
|
245
|
-
}
|
|
246
|
+
})
|
|
246
247
|
} else {
|
|
247
248
|
props.onNavigationRedirect('CheckoutNavigator', {
|
|
248
249
|
screen: 'MultiCheckout',
|
|
249
250
|
cartUuid: cartsAvailable[0]?.group?.uuid
|
|
250
|
-
}
|
|
251
|
+
})
|
|
251
252
|
}
|
|
252
253
|
}
|
|
253
254
|
}
|
|
@@ -26,9 +26,9 @@ import { BusinessTypeFilterParams } from '../../types';
|
|
|
26
26
|
const windowWidth = Dimensions.get('window').width;
|
|
27
27
|
|
|
28
28
|
export const BusinessTypeFilterUI = (props: BusinessTypeFilterParams) => {
|
|
29
|
-
const {
|
|
30
|
-
typesState,
|
|
31
|
-
currentTypeSelected,
|
|
29
|
+
const {
|
|
30
|
+
typesState,
|
|
31
|
+
currentTypeSelected,
|
|
32
32
|
handleChangeBusinessType,
|
|
33
33
|
setBusinessTypes,
|
|
34
34
|
isAppoint
|
|
@@ -38,13 +38,13 @@ export const BusinessTypeFilterUI = (props: BusinessTypeFilterParams) => {
|
|
|
38
38
|
|
|
39
39
|
const theme = useTheme();
|
|
40
40
|
const [isOpenAllCategories, setIsOpenAllCategories] = useState(false)
|
|
41
|
-
const defaultImage = (name
|
|
41
|
+
const defaultImage = (name: string) => theme.images?.categories?.[name.toLowerCase().replace(' ', '')]
|
|
42
42
|
|
|
43
43
|
useEffect(() => {
|
|
44
|
-
if(typesState?.types?.length > 0){
|
|
45
|
-
|
|
44
|
+
if (typesState?.types?.length > 0) {
|
|
45
|
+
setBusinessTypes && setBusinessTypes(typesState?.types)
|
|
46
46
|
}
|
|
47
|
-
|
|
47
|
+
}, [typesState])
|
|
48
48
|
|
|
49
49
|
const handleChangeServiceType = (serviceId: any) => {
|
|
50
50
|
if (serviceId === currentTypeSelected) {
|
|
@@ -119,10 +119,11 @@ export const BusinessTypeFilterUI = (props: BusinessTypeFilterParams) => {
|
|
|
119
119
|
<OButton
|
|
120
120
|
key={i}
|
|
121
121
|
bgColor={(currentTypeSelected === businessType?.id) ? theme.colors.primary : theme.colors.backgroundGray200}
|
|
122
|
+
borderColor={(currentTypeSelected === businessType?.id) ? theme.colors.primary : theme.colors.backgroundGray200}
|
|
122
123
|
onClick={() => handleChangeServiceType(businessType?.id)}
|
|
123
124
|
text={`${businessType?.name} ${(currentTypeSelected === businessType?.id) ? ' X' : ''}`}
|
|
124
125
|
style={styles.businessType}
|
|
125
|
-
textStyle={{ fontSize: 10, color: (currentTypeSelected === businessType?.id) ? theme.colors.
|
|
126
|
+
textStyle={{ fontSize: 10, color: (currentTypeSelected === businessType?.id) ? theme.colors.white : theme.colors.textNormal }}
|
|
126
127
|
/>
|
|
127
128
|
))}
|
|
128
129
|
</ServiceWrapper>
|
|
@@ -392,10 +392,11 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
|
|
|
392
392
|
<OButton
|
|
393
393
|
key={i}
|
|
394
394
|
bgColor={(priceLevelSelected === price?.level) ? theme.colors.primary : theme.colors.backgroundGray200}
|
|
395
|
+
borderColor={(priceLevelSelected === price?.level) ? theme.colors.primary : theme.colors.backgroundGray200}
|
|
395
396
|
onClick={() => handleChangePriceLevel(price?.level)}
|
|
396
397
|
text={`${price.content} ${(priceLevelSelected === price?.level) ? ' X' : ''}`}
|
|
397
398
|
style={styles.priceLevel}
|
|
398
|
-
textStyle={{ fontSize: 10, color: (priceLevelSelected === price?.level) ? theme.colors.backgroundLight : theme.colors.
|
|
399
|
+
textStyle={{ fontSize: 10, color: (priceLevelSelected === price?.level) ? theme.colors.backgroundLight : theme.colors.black }}
|
|
399
400
|
/>
|
|
400
401
|
))}
|
|
401
402
|
</ScrollView>
|
|
@@ -60,7 +60,7 @@ export const WrapMomentOption = styled.TouchableOpacity`
|
|
|
60
60
|
|
|
61
61
|
export const HeaderWrapper = styled.ImageBackground`
|
|
62
62
|
width: 100%;
|
|
63
|
-
height: ${({ bgHeaderHeight }
|
|
63
|
+
height: ${({ bgHeaderHeight }: any) => bgHeaderHeight || '270px'};
|
|
64
64
|
padding: 20px;
|
|
65
65
|
background-color: transparent;
|
|
66
66
|
`;
|
|
@@ -73,6 +73,7 @@ const CartUI = (props: any) => {
|
|
|
73
73
|
const [openTaxModal, setOpenTaxModal] = useState<any>({ open: false, data: null, type: '' })
|
|
74
74
|
const [openPlaceModal, setOpenPlaceModal] = useState(false)
|
|
75
75
|
const [maxDate, setMaxDate] = useState<any>(null)
|
|
76
|
+
const [comment] = useState<any>(cart?.comment ?? '')
|
|
76
77
|
const isCartPending = cart?.status === 2
|
|
77
78
|
const isCouponEnabled = validationFields?.fields?.checkout?.coupon?.enabled
|
|
78
79
|
const business: any = (orderState?.carts && Object.values(orderState.carts).find((_cart: any) => _cart?.uuid === props.cartuuid)) ?? {}
|
|
@@ -83,6 +84,7 @@ const CartUI = (props: any) => {
|
|
|
83
84
|
const driverTipsOptions = typeof configs?.driver_tip_options?.value === 'string'
|
|
84
85
|
? JSON.parse(configs?.driver_tip_options?.value) || []
|
|
85
86
|
: configs?.driver_tip_options?.value || []
|
|
87
|
+
const allowDriverTipPickup = configs?.driver_tip_allowed_at_pickup?.value === '1' && orderState?.options?.type === 2
|
|
86
88
|
|
|
87
89
|
const momentFormatted = !orderState?.option?.moment
|
|
88
90
|
? t('RIGHT_NOW', 'Right Now')
|
|
@@ -114,6 +116,7 @@ const CartUI = (props: any) => {
|
|
|
114
116
|
}
|
|
115
117
|
|
|
116
118
|
const handleUpsellingPage = (individualCart: any) => {
|
|
119
|
+
Vibration.vibrate(100)
|
|
117
120
|
const isProductCartParam = !!individualCart?.products?.length
|
|
118
121
|
setOpenUpselling(false)
|
|
119
122
|
setCanOpenUpselling(false)
|
|
@@ -128,8 +131,9 @@ const CartUI = (props: any) => {
|
|
|
128
131
|
cartUuid: cart?.uuid,
|
|
129
132
|
businessLogo: cart?.business?.logo,
|
|
130
133
|
businessName: cart?.business?.name,
|
|
131
|
-
cartTotal: cart?.total
|
|
132
|
-
|
|
134
|
+
cartTotal: cart?.total,
|
|
135
|
+
fromProductsList: isFromUpselling
|
|
136
|
+
})
|
|
133
137
|
} else {
|
|
134
138
|
const groupKeys: any = {}
|
|
135
139
|
cartsAvailable.forEach((_cart: any) => {
|
|
@@ -145,28 +149,30 @@ const CartUI = (props: any) => {
|
|
|
145
149
|
onNavigationRedirect('CheckoutNavigator', {
|
|
146
150
|
screen: 'MultiCheckout',
|
|
147
151
|
checkCarts: true
|
|
148
|
-
}
|
|
152
|
+
})
|
|
149
153
|
} else {
|
|
150
154
|
onNavigationRedirect('CheckoutNavigator', {
|
|
151
155
|
screen: 'MultiCheckout',
|
|
152
156
|
cartUuid: cartsAvailable[0]?.group?.uuid
|
|
153
|
-
}
|
|
157
|
+
})
|
|
154
158
|
}
|
|
155
159
|
}
|
|
156
160
|
}
|
|
157
161
|
|
|
158
|
-
const getIncludedTaxes = () => {
|
|
162
|
+
const getIncludedTaxes = (isDeliveryFee?: boolean) => {
|
|
159
163
|
if (cart?.taxes === null || !cart?.taxes) {
|
|
160
|
-
return cart
|
|
164
|
+
return cart?.business.tax_type === 1 ? cart?.tax : 0
|
|
161
165
|
} else {
|
|
162
166
|
return cart?.taxes.reduce((taxIncluded: number, tax: any) => {
|
|
163
|
-
return taxIncluded +
|
|
167
|
+
return taxIncluded +
|
|
168
|
+
(((!isDeliveryFee && tax.type === 1 && tax.target === 'product') ||
|
|
169
|
+
(isDeliveryFee && tax.type === 1 && tax.target === 'delivery_fee')) ? tax.summary?.tax : 0)
|
|
164
170
|
}, 0)
|
|
165
171
|
}
|
|
166
172
|
}
|
|
167
173
|
|
|
168
174
|
const getIncludedTaxesDiscounts = () => {
|
|
169
|
-
return cart?.taxes?.filter((tax: any) => tax?.type === 1)?.reduce((carry: number, tax: any) => carry + (tax?.summary?.tax_after_discount ?? tax?.summary?.tax), 0)
|
|
175
|
+
return cart?.taxes?.filter((tax: any) => (tax?.type === 1 && tax?.target === 'product'))?.reduce((carry: number, tax: any) => carry + (tax?.summary?.tax_after_discount ?? tax?.summary?.tax), 0)
|
|
170
176
|
}
|
|
171
177
|
|
|
172
178
|
const OfferAlert = ({ offerId }: any) => {
|
|
@@ -328,7 +334,7 @@ const CartUI = (props: any) => {
|
|
|
328
334
|
</OSTable>
|
|
329
335
|
)}
|
|
330
336
|
{
|
|
331
|
-
cart.taxes?.length > 0 && cart.taxes.filter((tax: any) => tax.type === 2 && tax?.rate !== 0).map((tax: any, i: number) => (
|
|
337
|
+
cart.taxes?.length > 0 && cart.taxes.filter((tax: any) => tax.type === 2 && tax?.rate !== 0 && tax?.target === 'product').map((tax: any, i: number) => (
|
|
332
338
|
<OSTable key={`${tax.id}_${i}`}>
|
|
333
339
|
<OSRow>
|
|
334
340
|
<OText size={12} lineHeight={18} numberOfLines={1} >
|
|
@@ -383,9 +389,25 @@ const CartUI = (props: any) => {
|
|
|
383
389
|
{orderState?.options?.type === 1 && cart?.delivery_price_with_discount > 0 && !hideDeliveryFee && (
|
|
384
390
|
<OSTable>
|
|
385
391
|
<OText size={12} lineHeight={18}>{t('DELIVERY_FEE', 'Delivery Fee')}</OText>
|
|
386
|
-
<OText size={12} lineHeight={18}>{parsePrice(cart?.delivery_price_with_discount)}</OText>
|
|
392
|
+
<OText size={12} lineHeight={18}>{parsePrice(cart?.delivery_price_with_discount + getIncludedTaxes(true))}</OText>
|
|
387
393
|
</OSTable>
|
|
388
394
|
)}
|
|
395
|
+
{
|
|
396
|
+
cart?.taxes?.length > 0 && cart?.taxes?.filter((tax: any) => tax?.type === 2 && tax?.rate !== 0 && tax?.target === 'delivery_fee').map((tax: any, i: number) => (
|
|
397
|
+
<OSTable key={`${tax.description}_${i}`}>
|
|
398
|
+
<OSRow>
|
|
399
|
+
<OText size={12} lineHeight={18} numberOfLines={1}>
|
|
400
|
+
{tax.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
|
|
401
|
+
{`(${verifyDecimals(tax?.rate, parseNumber)}%)`}
|
|
402
|
+
</OText>
|
|
403
|
+
<TouchableOpacity onPress={() => setOpenTaxModal({ open: true, data: tax, type: 'tax' })}>
|
|
404
|
+
<AntIcon name='infocirlceo' size={16} color={theme.colors.primary} />
|
|
405
|
+
</TouchableOpacity>
|
|
406
|
+
</OSRow>
|
|
407
|
+
<OText size={12} lineHeight={18}>{parsePrice(tax?.summary?.tax_after_discount ?? tax?.summary?.tax ?? 0)}</OText>
|
|
408
|
+
</OSTable>
|
|
409
|
+
))
|
|
410
|
+
}
|
|
389
411
|
{
|
|
390
412
|
cart?.offers?.length > 0 && cart?.offers?.filter((offer: any) => offer?.target === 2)?.map((offer: any, i: number) => (
|
|
391
413
|
<OSTable key={`${offer.id}_${i}`}>
|
|
@@ -444,7 +466,7 @@ const CartUI = (props: any) => {
|
|
|
444
466
|
{!isMultiCheckout &&
|
|
445
467
|
cart &&
|
|
446
468
|
cart?.valid &&
|
|
447
|
-
orderState?.options?.type === 1 &&
|
|
469
|
+
(orderState?.options?.type === 1 || allowDriverTipPickup) &&
|
|
448
470
|
cart?.status !== 2 &&
|
|
449
471
|
validationFields?.fields?.checkout?.driver_tip?.enabled &&
|
|
450
472
|
driverTipsOptions && driverTipsOptions?.length > 0 &&
|
|
@@ -503,7 +525,7 @@ const CartUI = (props: any) => {
|
|
|
503
525
|
<OText size={16} lineHeight={18}>{t('COMMENTS', 'Comments')}</OText>
|
|
504
526
|
<View style={{ flex: 1, width: '100%' }}>
|
|
505
527
|
<OInput
|
|
506
|
-
value={cart?.comment}
|
|
528
|
+
value={comment || cart?.comment}
|
|
507
529
|
placeholder={t('SPECIAL_COMMENTS', 'Special Comments')}
|
|
508
530
|
onChange={(value: string) => handleChangeComment(value)}
|
|
509
531
|
style={{
|
|
@@ -548,6 +570,14 @@ const CartUI = (props: any) => {
|
|
|
548
570
|
/>
|
|
549
571
|
</View>
|
|
550
572
|
)}
|
|
573
|
+
{!cart?.valid_address && cart?.status !== 2 && (
|
|
574
|
+
<OText
|
|
575
|
+
color={theme.colors.error}
|
|
576
|
+
size={12}
|
|
577
|
+
>
|
|
578
|
+
{t('INVALID_CART_ADDRESS', 'Selected address is invalid, please select a closer address.')}
|
|
579
|
+
</OText>
|
|
580
|
+
)}
|
|
551
581
|
{(!isMultiCheckout || !cart?.business_id) && (
|
|
552
582
|
<>
|
|
553
583
|
{cart?.valid_products ? (
|
|
@@ -561,6 +591,7 @@ const CartUI = (props: any) => {
|
|
|
561
591
|
`${t('MINIMUN_SUBTOTAL_ORDER', 'Minimum subtotal order:')} ${parsePrice(cart?.minimum)}`
|
|
562
592
|
)}
|
|
563
593
|
bgColor={(subtotalWithTaxes < cart?.minimum || !cart?.valid_address) ? theme.colors.secundary : theme.colors.primary}
|
|
594
|
+
borderColor={(subtotalWithTaxes < cart?.minimum || !cart?.valid_address) ? theme.colors.secundary : theme.colors.primary}
|
|
564
595
|
isDisabled={(openUpselling && !canOpenUpselling) || subtotalWithTaxes < cart?.minimum || !cart?.valid_address}
|
|
565
596
|
imgRightSrc={null}
|
|
566
597
|
textStyle={{ textAlign: 'center', flex: 1 }}
|
|
@@ -620,6 +651,7 @@ const CartUI = (props: any) => {
|
|
|
620
651
|
export const Cart = (props: any) => {
|
|
621
652
|
const cartProps = {
|
|
622
653
|
...props,
|
|
654
|
+
disablePreviousComment: true,
|
|
623
655
|
UIComponent: CartUI
|
|
624
656
|
}
|
|
625
657
|
|
|
@@ -174,9 +174,7 @@ export const CartContent = (props: any) => {
|
|
|
174
174
|
<CheckoutAction style={{ marginTop: 0 }}>
|
|
175
175
|
<OButton
|
|
176
176
|
text={t('CHECKOUT', 'Checkout')}
|
|
177
|
-
bgColor={!cartsAvailable.length ? theme.colors.secundary : theme.colors.primary}
|
|
178
177
|
isDisabled={!cartsAvailable.length}
|
|
179
|
-
borderColor={!cartsAvailable.length ? theme.colors.secundary : theme.colors.primary}
|
|
180
178
|
imgRightSrc={null}
|
|
181
179
|
onClick={() => handleCheckoutRedirect()}
|
|
182
180
|
style={{ width: '100%', flexDirection: 'row', justifyContent: 'center', borderRadius: 7.6, shadowOpacity: 0 }}
|