ordering-ui-react-native 0.14.38 → 0.14.40-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 +2 -2
- package/src/components/BusinessItemAccordion/index.tsx +2 -2
- package/src/components/BusinessProductsListing/index.tsx +10 -26
- package/src/components/Cart/index.tsx +136 -62
- package/src/components/Cart/styles.tsx +7 -0
- package/src/components/Checkout/index.tsx +32 -168
- package/src/components/OrderDetails/index.tsx +102 -34
- package/src/components/OrderDetails/styles.tsx +7 -0
- package/src/components/OrderSummary/index.tsx +142 -58
- package/src/components/OrderSummary/styles.tsx +10 -2
- package/src/components/PaymentOptions/index.tsx +3 -1
- package/src/components/PaymentOptionsWebView/index.tsx +150 -0
- package/src/components/ProductForm/index.tsx +7 -9
- package/src/components/SingleProductCard/index.tsx +1 -1
- package/src/components/StripeElementsForm/index.tsx +28 -13
- package/src/components/TaxInformation/index.tsx +58 -26
- package/src/components/UpsellingProducts/index.tsx +13 -31
- package/src/components/VerifyPhone/styles.tsx +1 -2
- package/src/components/shared/OIcon.tsx +4 -1
- package/src/index.tsx +2 -0
- package/src/navigators/HomeNavigator.tsx +6 -0
- package/src/pages/ProductDetails.tsx +55 -0
- package/src/types/index.tsx +2 -0
- package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
- package/themes/kiosk/src/components/Cart/index.tsx +14 -21
- package/themes/kiosk/src/components/CartItem/index.tsx +9 -7
- package/themes/kiosk/src/components/CustomerName/index.tsx +2 -1
- package/themes/kiosk/src/components/Intro/index.tsx +4 -4
- package/themes/kiosk/src/components/OptionCard/index.tsx +11 -6
- package/themes/kiosk/src/components/PaymentOptions/index.tsx +46 -44
- package/themes/original/src/components/BusinessItemAccordion/index.tsx +12 -9
- package/themes/original/src/components/BusinessItemAccordion/styles.tsx +3 -2
- package/themes/original/src/components/BusinessProductsListing/index.tsx +8 -4
- package/themes/original/src/components/BusinessesListing/index.tsx +100 -75
- package/themes/original/src/components/Cart/index.tsx +122 -24
- package/themes/original/src/components/Cart/styles.tsx +8 -1
- package/themes/original/src/components/Checkout/index.tsx +38 -3
- package/themes/original/src/components/Help/index.tsx +1 -1
- package/themes/original/src/components/Home/index.tsx +5 -3
- package/themes/original/src/components/MessageListing/index.tsx +4 -2
- package/themes/original/src/components/OrderDetails/index.tsx +114 -42
- package/themes/original/src/components/OrderDetails/styles.tsx +8 -1
- package/themes/original/src/components/OrderProgress/index.tsx +2 -1
- package/themes/original/src/components/OrderSummary/index.tsx +132 -23
- package/themes/original/src/components/OrderSummary/styles.tsx +7 -0
- package/themes/original/src/components/PaymentOptionWallet/index.tsx +6 -2
- package/themes/original/src/components/PaymentOptions/index.tsx +8 -2
- package/themes/original/src/components/ProductForm/index.tsx +63 -65
- package/themes/original/src/components/ProductForm/styles.tsx +6 -0
- package/themes/original/src/components/ProductOptionSubOption/index.tsx +3 -2
- package/themes/original/src/components/SingleProductCard/index.tsx +21 -11
- package/themes/original/src/components/SingleProductCard/styles.tsx +4 -0
- package/themes/original/src/components/StripeElementsForm/index.tsx +28 -13
- package/themes/original/src/components/TaxInformation/index.tsx +59 -27
- package/themes/original/src/components/UpsellingProducts/index.tsx +26 -18
- package/themes/original/src/types/index.tsx +2 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ordering-ui-react-native",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.40-release",
|
|
4
4
|
"description": "Reusable components made in react native",
|
|
5
5
|
"main": "src/index.tsx",
|
|
6
6
|
"author": "ordering.inc",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"@types/styled-components": "^5.1.3",
|
|
56
56
|
"axios": "^0.21.0",
|
|
57
57
|
"moment": "^2.29.1",
|
|
58
|
-
"ordering-components": "github:Ordering-Inc/ordering-components#
|
|
58
|
+
"ordering-components": "github:Ordering-Inc/ordering-components#release",
|
|
59
59
|
"patch-package": "^6.4.7",
|
|
60
60
|
"postinstall-postinstall": "^2.1.0",
|
|
61
61
|
"prop-types": "^15.7.2",
|
|
@@ -80,9 +80,9 @@ export const BusinessItemAccordion = (props: any) => {
|
|
|
80
80
|
</BIContentInfo>
|
|
81
81
|
</BIInfo>
|
|
82
82
|
|
|
83
|
-
{!isClosed && !!isProducts && cart?.valid_products &&
|
|
83
|
+
{!isClosed && !!isProducts && cart?.valid_products && (
|
|
84
84
|
<BITotal>
|
|
85
|
-
<OText color='#000'>{parsePrice(cart?.total)}</OText>
|
|
85
|
+
<OText color='#000'>{parsePrice(cart?.total >= 0 ? cart?.total : 0)}</OText>
|
|
86
86
|
<OText>{t('CART_TOTAL', 'Total')}</OText>
|
|
87
87
|
</BITotal>
|
|
88
88
|
)}
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
useToast,
|
|
11
11
|
ToastType
|
|
12
12
|
} from 'ordering-components/native'
|
|
13
|
-
import { OButton,
|
|
13
|
+
import { OButton, OText } from '../shared'
|
|
14
14
|
import { BusinessBasicInformation } from '../BusinessBasicInformation'
|
|
15
15
|
import { SearchBar } from '../SearchBar'
|
|
16
16
|
import { BusinessProductsCategories } from '../BusinessProductsCategories'
|
|
@@ -45,7 +45,6 @@ const BusinessProductsListingUI = (props: BusinessProductsListingParams) => {
|
|
|
45
45
|
errorQuantityProducts,
|
|
46
46
|
header,
|
|
47
47
|
logo,
|
|
48
|
-
productModal,
|
|
49
48
|
businessId,
|
|
50
49
|
categoryId,
|
|
51
50
|
productId,
|
|
@@ -75,7 +74,13 @@ const BusinessProductsListingUI = (props: BusinessProductsListingParams) => {
|
|
|
75
74
|
}
|
|
76
75
|
|
|
77
76
|
const onProductClick = (product: any) => {
|
|
78
|
-
|
|
77
|
+
onRedirect('ProductDetails', {
|
|
78
|
+
product: product,
|
|
79
|
+
businessSlug: business.slug,
|
|
80
|
+
businessId: business.id,
|
|
81
|
+
categoryId: categoryId,
|
|
82
|
+
productId: productId,
|
|
83
|
+
})
|
|
79
84
|
}
|
|
80
85
|
|
|
81
86
|
const handleCancel = () => {
|
|
@@ -89,10 +94,6 @@ const BusinessProductsListingUI = (props: BusinessProductsListingParams) => {
|
|
|
89
94
|
updateProductModal && updateProductModal(null)
|
|
90
95
|
}
|
|
91
96
|
|
|
92
|
-
const handlerProductAction = () => {
|
|
93
|
-
handleCloseProductModal()
|
|
94
|
-
}
|
|
95
|
-
|
|
96
97
|
const handleUpsellingPage = () => {
|
|
97
98
|
onRedirect('CheckoutNavigator', {
|
|
98
99
|
screen: 'CheckoutPage',
|
|
@@ -258,27 +259,9 @@ const BusinessProductsListingUI = (props: BusinessProductsListingParams) => {
|
|
|
258
259
|
handleClick={() => setOpenUpselling(true)}
|
|
259
260
|
/>
|
|
260
261
|
)}
|
|
261
|
-
<OModal
|
|
262
|
-
open={openModalProduct || !!curProduct || (!!productModal.product && !orderState.loading)}
|
|
263
|
-
onClose={handleCloseProductModal}
|
|
264
|
-
entireModal
|
|
265
|
-
customClose
|
|
266
|
-
isAvoidKeyBoardView
|
|
267
|
-
>
|
|
268
|
-
<ProductForm
|
|
269
|
-
product={curProduct || productModal.product}
|
|
270
|
-
businessSlug={business?.slug}
|
|
271
|
-
businessId={businessId || business?.id || productModal?.product?.category?.business_id}
|
|
272
|
-
onClose={handleCloseProductModal}
|
|
273
|
-
navigation={navigation}
|
|
274
|
-
onSave={handlerProductAction}
|
|
275
|
-
setProductLogin={setProductLogin}
|
|
276
|
-
categoryId={categoryId}
|
|
277
|
-
productId={productId}
|
|
278
|
-
/>
|
|
279
|
-
</OModal>
|
|
280
262
|
{openUpselling && (
|
|
281
263
|
<UpsellingProducts
|
|
264
|
+
setOpenUpselling={setOpenUpselling}
|
|
282
265
|
businessId={currentCart?.business_id}
|
|
283
266
|
business={currentCart?.business}
|
|
284
267
|
cartProducts={currentCart?.products}
|
|
@@ -286,6 +269,7 @@ const BusinessProductsListingUI = (props: BusinessProductsListingParams) => {
|
|
|
286
269
|
openUpselling={openUpselling}
|
|
287
270
|
canOpenUpselling={canOpenUpselling}
|
|
288
271
|
setCanOpenUpselling={setCanOpenUpselling}
|
|
272
|
+
onRedirect={onRedirect}
|
|
289
273
|
/>
|
|
290
274
|
)}
|
|
291
275
|
</>
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
useValidationFields,
|
|
9
9
|
} from 'ordering-components/native';
|
|
10
10
|
|
|
11
|
-
import { CContainer, CheckoutAction, } from './styles';
|
|
11
|
+
import { CContainer, CheckoutAction, Divider } from './styles';
|
|
12
12
|
|
|
13
13
|
import { OSBill, OSTable, OSCoupon, OSTotal, OSRow } from '../OrderSummary/styles';
|
|
14
14
|
|
|
@@ -16,8 +16,7 @@ import { ProductItemAccordion } from '../ProductItemAccordion';
|
|
|
16
16
|
import { BusinessItemAccordion } from '../BusinessItemAccordion';
|
|
17
17
|
import { CouponControl } from '../CouponControl';
|
|
18
18
|
|
|
19
|
-
import { OButton, OModal, OText, OInput } from '../shared';
|
|
20
|
-
import { ProductForm } from '../ProductForm';
|
|
19
|
+
import { OButton, OModal, OText, OInput, OAlert } from '../shared';
|
|
21
20
|
import { UpsellingProducts } from '../UpsellingProducts';
|
|
22
21
|
import { verifyDecimals } from '../../utils';
|
|
23
22
|
import { useTheme } from 'styled-components/native';
|
|
@@ -36,7 +35,8 @@ const CartUI = (props: any) => {
|
|
|
36
35
|
handleCartOpen,
|
|
37
36
|
setIsCartsLoading,
|
|
38
37
|
handleChangeComment,
|
|
39
|
-
commentState
|
|
38
|
+
commentState,
|
|
39
|
+
handleRemoveOfferClick
|
|
40
40
|
} = props
|
|
41
41
|
|
|
42
42
|
const theme = useTheme()
|
|
@@ -46,11 +46,10 @@ const CartUI = (props: any) => {
|
|
|
46
46
|
const [{ parsePrice, parseNumber, parseDate }] = useUtils()
|
|
47
47
|
const [validationFields] = useValidationFields()
|
|
48
48
|
|
|
49
|
-
const [openProduct, setModalIsOpen] = useState(false)
|
|
50
|
-
const [curProduct, setCurProduct] = useState<any>(null)
|
|
51
49
|
const [openUpselling, setOpenUpselling] = useState(false)
|
|
52
50
|
const [canOpenUpselling, setCanOpenUpselling] = useState(false)
|
|
53
51
|
const [openTaxModal, setOpenTaxModal] = useState<any>({ open: false, data: null })
|
|
52
|
+
const [confirm, setConfirm] = useState<any>({ open: false, content: null, handleOnAccept: null, id: null, title: null })
|
|
54
53
|
|
|
55
54
|
const isCartPending = cart?.status === 2
|
|
56
55
|
const isCouponEnabled = validationFields?.fields?.checkout?.coupon?.enabled
|
|
@@ -64,14 +63,15 @@ const CartUI = (props: any) => {
|
|
|
64
63
|
}
|
|
65
64
|
|
|
66
65
|
const handleEditProduct = (product: any) => {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
66
|
+
props?.onNavigationRedirect &&
|
|
67
|
+
props?.onNavigationRedirect('ProductDetails', {
|
|
68
|
+
businessId: cart?.business_id,
|
|
69
|
+
isCartProduct: true,
|
|
70
|
+
productCart: product,
|
|
71
|
+
businessSlug: cart?.business?.slug,
|
|
72
|
+
categoryId: product?.category_id,
|
|
73
|
+
productId: product?.id,
|
|
74
|
+
})
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
const handleClearProducts = async () => {
|
|
@@ -106,6 +106,22 @@ const CartUI = (props: any) => {
|
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
+
const getIncludedTaxesDiscounts = () => {
|
|
110
|
+
return cart?.taxes?.filter((tax : any) => tax?.type === 1)?.reduce((carry : number, tax : any) => carry + (tax?.summary?.tax_after_discount ?? tax?.summary?.tax), 0)
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
const onRemoveOffer = (id: number) => {
|
|
114
|
+
setConfirm({
|
|
115
|
+
open: true,
|
|
116
|
+
content: [t('QUESTION_DELETE_OFFER', 'Are you sure that you want to delete the offer?')],
|
|
117
|
+
title: t('OFFER', 'Offer'),
|
|
118
|
+
handleOnAccept: () => {
|
|
119
|
+
setConfirm({ ...confirm, open: false })
|
|
120
|
+
handleRemoveOfferClick(id)
|
|
121
|
+
}
|
|
122
|
+
})
|
|
123
|
+
}
|
|
124
|
+
|
|
109
125
|
return (
|
|
110
126
|
<CContainer>
|
|
111
127
|
<BusinessItemAccordion
|
|
@@ -137,11 +153,11 @@ const CartUI = (props: any) => {
|
|
|
137
153
|
{parsePrice(cart?.subtotal + getIncludedTaxes())}
|
|
138
154
|
</OText>
|
|
139
155
|
</OSTable>
|
|
140
|
-
{cart?.discount > 0 && cart?.total >= 0 && (
|
|
156
|
+
{cart?.discount > 0 && cart?.total >= 0 && cart?.offers?.length === 0 && (
|
|
141
157
|
<OSTable>
|
|
142
158
|
{cart?.discount_type === 1 ? (
|
|
143
159
|
<OText>
|
|
144
|
-
{t('DISCOUNT', 'Discount')}
|
|
160
|
+
{t('DISCOUNT', 'Discount')}{' '}
|
|
145
161
|
<OText>{`(${verifyDecimals(cart?.discount_rate, parsePrice)}%)`}</OText>
|
|
146
162
|
</OText>
|
|
147
163
|
) : (
|
|
@@ -150,18 +166,35 @@ const CartUI = (props: any) => {
|
|
|
150
166
|
<OText>- {parsePrice(cart?.discount || 0)}</OText>
|
|
151
167
|
</OSTable>
|
|
152
168
|
)}
|
|
169
|
+
{
|
|
170
|
+
cart?.offers?.length > 0 && cart?.offers?.filter((offer: any) => offer?.target === 1)?.map((offer: any) => (
|
|
171
|
+
<OSTable key={offer.id}>
|
|
172
|
+
<OSRow>
|
|
173
|
+
<OText>{offer.name}</OText>
|
|
174
|
+
{offer.rate_type === 1 && (
|
|
175
|
+
<OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
|
|
176
|
+
)}
|
|
177
|
+
<TouchableOpacity style={{ marginLeft: 3 }} onPress={() => setOpenTaxModal({ open: true, data: offer, type: 'offer_target_1' })}>
|
|
178
|
+
<AntIcon name='exclamationcircleo' size={18} color={theme.colors.primary} />
|
|
179
|
+
</TouchableOpacity>
|
|
180
|
+
<TouchableOpacity style={{ marginLeft: 3 }} onPress={() => onRemoveOffer(offer?.id)}>
|
|
181
|
+
<AntIcon name='closecircle' size={18} color={theme.colors.primary} />
|
|
182
|
+
</TouchableOpacity>
|
|
183
|
+
</OSRow>
|
|
184
|
+
<OText>
|
|
185
|
+
- {parsePrice(offer?.summary?.discount)}
|
|
186
|
+
</OText>
|
|
187
|
+
</OSTable>
|
|
188
|
+
))
|
|
189
|
+
}
|
|
190
|
+
<Divider />
|
|
153
191
|
{cart?.subtotal_with_discount > 0 && cart?.discount > 0 && cart?.total >= 0 && (
|
|
154
192
|
<OSTable>
|
|
155
|
-
{
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
<OText>{parsePrice(cart?.subtotal_with_discount + cart?.tax || 0)}</OText>
|
|
159
|
-
</>
|
|
193
|
+
<OText numberOfLines={1}>{t('SUBTOTAL_WITH_DISCOUNT', 'Subtotal with discount')}</OText>
|
|
194
|
+
{cart?.business?.tax_type === 1 ? (
|
|
195
|
+
<OText>{parsePrice(cart?.subtotal_with_discount + getIncludedTaxesDiscounts() ?? 0)}</OText>
|
|
160
196
|
) : (
|
|
161
|
-
|
|
162
|
-
<OText>{t('SUBTOTAL_WITH_DISCOUNT', 'Subtotal with discount')}</OText>
|
|
163
|
-
<OText>{parsePrice(cart?.subtotal_with_discount || 0)}</OText>
|
|
164
|
-
</>
|
|
197
|
+
<OText>{parsePrice(cart?.subtotal_with_discount ?? 0)}</OText>
|
|
165
198
|
)}
|
|
166
199
|
</OSTable>
|
|
167
200
|
)}
|
|
@@ -173,11 +206,11 @@ const CartUI = (props: any) => {
|
|
|
173
206
|
{tax.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}{' '}
|
|
174
207
|
{`(${verifyDecimals(tax?.rate, parseNumber)}%)`}{' '}
|
|
175
208
|
</OText>
|
|
176
|
-
<TouchableOpacity onPress={() => setOpenTaxModal({ open: true, data: tax })} >
|
|
209
|
+
<TouchableOpacity onPress={() => setOpenTaxModal({ open: true, data: tax, type: 'tax' })} >
|
|
177
210
|
<AntIcon name='exclamationcircleo' size={18} color={theme.colors.primary} />
|
|
178
211
|
</TouchableOpacity>
|
|
179
212
|
</OSRow>
|
|
180
|
-
<OText>{parsePrice(tax?.summary?.tax
|
|
213
|
+
<OText>{parsePrice(tax?.summary?.tax_after_discount ?? tax?.summary?.tax ?? 0)}</OText>
|
|
181
214
|
</OSTable>
|
|
182
215
|
))
|
|
183
216
|
}
|
|
@@ -189,11 +222,32 @@ const CartUI = (props: any) => {
|
|
|
189
222
|
{fee.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}{' '}
|
|
190
223
|
({parsePrice(fee?.fixed)} + {fee?.percentage}%){' '}
|
|
191
224
|
</OText>
|
|
192
|
-
<TouchableOpacity onPress={() => setOpenTaxModal({ open: true, data: fee })} >
|
|
225
|
+
<TouchableOpacity onPress={() => setOpenTaxModal({ open: true, data: fee, type: 'fee' })} >
|
|
226
|
+
<AntIcon name='exclamationcircleo' size={18} color={theme.colors.primary} />
|
|
227
|
+
</TouchableOpacity>
|
|
228
|
+
</OSRow>
|
|
229
|
+
<OText>{parsePrice(fee?.summary?.fixed + (fee?.summary?.percentage_after_discount ?? fee?.summary?.percentage) ?? 0)}</OText>
|
|
230
|
+
</OSTable>
|
|
231
|
+
))
|
|
232
|
+
}
|
|
233
|
+
{
|
|
234
|
+
cart?.offers?.length > 0 && cart?.offers?.filter((offer: any) => offer?.target === 3)?.map((offer: any) => (
|
|
235
|
+
<OSTable key={offer.id}>
|
|
236
|
+
<OSRow>
|
|
237
|
+
<OText>{offer.name}</OText>
|
|
238
|
+
{offer.rate_type === 1 && (
|
|
239
|
+
<OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
|
|
240
|
+
)}
|
|
241
|
+
<TouchableOpacity style={{ marginLeft: 3 }} onPress={() => setOpenTaxModal({ open: true, data: offer, type: 'offer_target_3' })}>
|
|
193
242
|
<AntIcon name='exclamationcircleo' size={18} color={theme.colors.primary} />
|
|
194
243
|
</TouchableOpacity>
|
|
244
|
+
<TouchableOpacity style={{ marginLeft: 3 }} onPress={() => onRemoveOffer(offer?.id)}>
|
|
245
|
+
<AntIcon name='closecircle' size={18} color={theme.colors.primary} />
|
|
246
|
+
</TouchableOpacity>
|
|
195
247
|
</OSRow>
|
|
196
|
-
<OText>
|
|
248
|
+
<OText>
|
|
249
|
+
- {parsePrice(offer?.summary?.discount)}
|
|
250
|
+
</OText>
|
|
197
251
|
</OSTable>
|
|
198
252
|
))
|
|
199
253
|
}
|
|
@@ -203,6 +257,27 @@ const CartUI = (props: any) => {
|
|
|
203
257
|
<OText>{parsePrice(cart?.delivery_price)}</OText>
|
|
204
258
|
</OSTable>
|
|
205
259
|
)}
|
|
260
|
+
{
|
|
261
|
+
cart?.offers?.length > 0 && cart?.offers?.filter((offer: any) => offer?.target === 2)?.map((offer: any) => (
|
|
262
|
+
<OSTable key={offer.id}>
|
|
263
|
+
<OSRow>
|
|
264
|
+
<OText>{offer.name}</OText>
|
|
265
|
+
{offer.rate_type === 1 && (
|
|
266
|
+
<OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
|
|
267
|
+
)}
|
|
268
|
+
<TouchableOpacity style={{ marginLeft: 3 }} onPress={() => setOpenTaxModal({ open: true, data: offer, type: 'offer_target_2' })}>
|
|
269
|
+
<AntIcon name='exclamationcircleo' size={18} color={theme.colors.primary} />
|
|
270
|
+
</TouchableOpacity>
|
|
271
|
+
<TouchableOpacity style={{ marginLeft: 3 }} onPress={() => onRemoveOffer(offer?.id)}>
|
|
272
|
+
<AntIcon name='closecircle' size={18} color={theme.colors.primary} />
|
|
273
|
+
</TouchableOpacity>
|
|
274
|
+
</OSRow>
|
|
275
|
+
<OText>
|
|
276
|
+
- {parsePrice(offer?.summary?.discount)}
|
|
277
|
+
</OText>
|
|
278
|
+
</OSTable>
|
|
279
|
+
))
|
|
280
|
+
}
|
|
206
281
|
{cart?.driver_tip > 0 && (
|
|
207
282
|
<OSTable>
|
|
208
283
|
<OText>
|
|
@@ -233,7 +308,7 @@ const CartUI = (props: any) => {
|
|
|
233
308
|
{t('TOTAL', 'Total')}
|
|
234
309
|
</OText>
|
|
235
310
|
<OText style={{ fontWeight: 'bold' }} color={theme.colors.primary}>
|
|
236
|
-
{cart?.total >=
|
|
311
|
+
{parsePrice(cart?.total >= 0 ? cart?.total : 0)}
|
|
237
312
|
</OText>
|
|
238
313
|
</OSTable>
|
|
239
314
|
</OSTotal>
|
|
@@ -292,45 +367,44 @@ const CartUI = (props: any) => {
|
|
|
292
367
|
</CheckoutAction>
|
|
293
368
|
)}
|
|
294
369
|
</BusinessItemAccordion>
|
|
295
|
-
<OModal
|
|
296
|
-
open={openProduct}
|
|
297
|
-
entireModal
|
|
298
|
-
customClose
|
|
299
|
-
onClose={() => setModalIsOpen(false)}
|
|
300
|
-
isAvoidKeyBoardView
|
|
301
|
-
>
|
|
302
|
-
<ProductForm
|
|
303
|
-
isCartProduct
|
|
304
|
-
productCart={curProduct}
|
|
305
|
-
businessSlug={cart?.business?.slug}
|
|
306
|
-
businessId={cart?.business_id}
|
|
307
|
-
categoryId={curProduct?.category_id}
|
|
308
|
-
productId={curProduct?.id}
|
|
309
|
-
onSave={handlerProductAction}
|
|
310
|
-
onClose={() => setModalIsOpen(false)}
|
|
311
|
-
/>
|
|
312
|
-
|
|
313
|
-
</OModal>
|
|
314
370
|
|
|
315
|
-
{
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
371
|
+
{
|
|
372
|
+
openUpselling && (
|
|
373
|
+
<UpsellingProducts
|
|
374
|
+
handleUpsellingPage={handleUpsellingPage}
|
|
375
|
+
openUpselling={openUpselling}
|
|
376
|
+
businessId={cart?.business_id}
|
|
377
|
+
business={cart?.business}
|
|
378
|
+
cartProducts={cart?.products}
|
|
379
|
+
canOpenUpselling={canOpenUpselling}
|
|
380
|
+
setCanOpenUpselling={setCanOpenUpselling}
|
|
381
|
+
setOpenUpselling={setOpenUpselling}
|
|
382
|
+
onRedirect={props.onNavigationRedirect}
|
|
383
|
+
/>
|
|
384
|
+
)
|
|
385
|
+
}
|
|
326
386
|
<OModal
|
|
327
387
|
open={openTaxModal.open}
|
|
328
388
|
onClose={() => setOpenTaxModal({ open: false, data: null })}
|
|
329
389
|
entireModal
|
|
390
|
+
title={`${openTaxModal.data?.name ||
|
|
391
|
+
t('INHERIT_FROM_BUSINESS', 'Inherit from business')} ${openTaxModal.data?.rate_type !== 2 ? `(${typeof openTaxModal.data?.rate === 'number' ? `${openTaxModal.data?.rate}%` : `${parsePrice(openTaxModal.data?.fixed ?? 0)} + ${openTaxModal.data?.percentage}%`})` : ''} `}
|
|
330
392
|
>
|
|
331
|
-
<TaxInformation
|
|
393
|
+
<TaxInformation
|
|
394
|
+
type={openTaxModal.type}
|
|
395
|
+
data={openTaxModal.data}
|
|
396
|
+
products={cart?.products}
|
|
397
|
+
/>
|
|
332
398
|
</OModal>
|
|
333
|
-
|
|
399
|
+
<OAlert
|
|
400
|
+
open={confirm.open}
|
|
401
|
+
title={confirm.title}
|
|
402
|
+
content={confirm.content}
|
|
403
|
+
onAccept={confirm.handleOnAccept}
|
|
404
|
+
onCancel={() => setConfirm({ ...confirm, open: false, title: null })}
|
|
405
|
+
onClose={() => setConfirm({ ...confirm, open: false, title: null })}
|
|
406
|
+
/>
|
|
407
|
+
</CContainer >
|
|
334
408
|
)
|
|
335
409
|
}
|
|
336
410
|
|