ordering-ui-react-native 0.15.54 → 0.15.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/package.json +1 -1
  2. package/src/components/OrderDetails/index.tsx +2 -2
  3. package/themes/business/src/components/Home/index.tsx +128 -55
  4. package/themes/business/src/components/Home/styles.tsx +8 -1
  5. package/themes/business/src/components/NewOrderNotification/index.tsx +59 -98
  6. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +125 -91
  7. package/themes/business/src/components/OrderDetails/styles.tsx +7 -0
  8. package/themes/kiosk/src/components/Cart/index.tsx +99 -25
  9. package/themes/kiosk/src/components/Cart/styles.tsx +6 -0
  10. package/themes/kiosk/src/components/OrderDetails/index.tsx +134 -39
  11. package/themes/kiosk/src/components/OrderDetails/styles.tsx +5 -0
  12. package/themes/kiosk/src/types/index.d.ts +2 -0
  13. package/themes/original/index.tsx +151 -0
  14. package/themes/original/src/components/AddressList/index.tsx +1 -1
  15. package/themes/original/src/components/AppleLogin/index.tsx +58 -21
  16. package/themes/original/src/components/BusinessProductsList/index.tsx +104 -18
  17. package/themes/original/src/components/BusinessProductsList/styles.tsx +12 -1
  18. package/themes/original/src/components/BusinessProductsListing/index.tsx +5 -0
  19. package/themes/original/src/components/BusinessReviews/index.tsx +4 -25
  20. package/themes/original/src/components/BusinessesListing/index.tsx +1 -1
  21. package/themes/original/src/components/Home/index.tsx +1 -1
  22. package/themes/original/src/components/PhoneInputNumber/index.tsx +10 -4
  23. package/themes/original/src/components/SignupForm/index.tsx +41 -13
  24. package/themes/original/src/components/UserFormDetails/index.tsx +13 -2
  25. package/themes/original/src/components/UserProfile/index.tsx +1 -1
  26. package/themes/original/src/config/constants.tsx +6 -6
  27. package/themes/original/src/types/index.tsx +6 -1
  28. package/themes/single-business/src/components/AddressList/index.tsx +1 -1
  29. package/themes/single-business/src/components/UserProfile/index.tsx +1 -1
@@ -11,6 +11,7 @@ import {
11
11
  Table,
12
12
  OrderBill,
13
13
  Total,
14
+ OSRow,
14
15
  } from './styles';
15
16
 
16
17
  import { ProductItemAccordion } from '../ProductItemAccordion';
@@ -75,6 +76,20 @@ export const OrderContentComponent = (props: OrderContent) => {
75
76
  }
76
77
  })
77
78
 
79
+ const getIncludedTaxes = () => {
80
+ if (order?.taxes?.length === 0) {
81
+ return order.tax_type === 1 ? order?.summary?.tax ?? 0 : 0
82
+ } else {
83
+ return order?.taxes.reduce((taxIncluded: number, tax: any) => {
84
+ return taxIncluded + (tax.type === 1 ? tax.summary?.tax : 0)
85
+ }, 0)
86
+ }
87
+ }
88
+
89
+ const getIncludedTaxesDiscounts = () => {
90
+ return order?.taxes?.filter((tax: any) => tax?.type === 1)?.reduce((carry: number, tax: any) => carry + (tax?.summary?.tax_after_discount ?? tax?.summary?.tax), 0)
91
+ }
92
+
78
93
  return (
79
94
  <OrderContent isOrderGroup={isOrderGroup} lastOrder={lastOrder}>
80
95
  {isOrderGroup && (
@@ -281,14 +296,14 @@ export const OrderContentComponent = (props: OrderContent) => {
281
296
  </OText>
282
297
  )}
283
298
  {((order?.delivery_option !== undefined && order?.delivery_type === 1) || !!order?.comment) && (
284
- <View style={{marginTop: 10}}>
299
+ <View style={{ marginTop: 10 }}>
285
300
  {order?.delivery_option !== undefined && order?.delivery_type === 1 && (
286
301
  <OText>
287
302
  {order?.delivery_option?.name}
288
303
  </OText>
289
304
  )}
290
305
  {!!order?.comment && (
291
- <OText style={{fontStyle: 'italic', opacity: 0.6, marginBottom: 5}}>
306
+ <OText style={{ fontStyle: 'italic', opacity: 0.6, marginBottom: 5 }}>
292
307
  {order?.comment}
293
308
  </OText>
294
309
  )}
@@ -323,84 +338,109 @@ export const OrderContentComponent = (props: OrderContent) => {
323
338
  <Table>
324
339
  <OText mBottom={4}>{t('SUBTOTAL', 'Subtotal')}</OText>
325
340
  <OText mBottom={4}>
326
- {parsePrice(
327
- order.tax_type === 1
328
- ? order?.summary?.subtotal + order?.summary?.tax ?? 0
329
- : order?.summary?.subtotal ?? 0,
330
- )}
341
+ {parsePrice(((order?.summary?.subtotal ?? order?.subtotal) + getIncludedTaxes()))}
331
342
  </OText>
332
343
  </Table>
333
-
334
- {order?.tax_type !== 1 && (
344
+ {(order?.summary?.discount > 0 ?? order?.discount > 0) && order?.offers?.length === 0 && (
345
+ <Table>
346
+ {order?.offer_type === 1 ? (
347
+ <OText mBottom={4}>
348
+ {t('DISCOUNT', theme?.defaultLanguages?.DISCOUNT || 'Discount')}{' '}
349
+ <OText>{`(${verifyDecimals(order?.offer_rate, parsePrice)}%)`}</OText>
350
+ </OText>
351
+ ) : (
352
+ <OText mBottom={4}>{t('DISCOUNT', theme?.defaultLanguages?.DISCOUNT || 'Discount')}</OText>
353
+ )}
354
+ <OText>- {parsePrice(order?.summary?.discount ?? order?.discount)}</OText>
355
+ </Table>
356
+ )}
357
+ {
358
+ order?.offers?.length > 0 && order?.offers?.filter((offer: any) => offer?.target === 1)?.map((offer: any) => (
359
+ <Table key={offer.id}>
360
+ <OSRow>
361
+ <OText numberOfLines={1} mBottom={4}>
362
+ {offer.name}
363
+ {offer.rate_type === 1 && (
364
+ <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
365
+ )}
366
+ </OText>
367
+ </OSRow>
368
+ <OText mBottom={4}>- {parsePrice(offer?.summary?.discount)}</OText>
369
+ </Table>
370
+ ))
371
+ }
372
+ {order?.summary?.subtotal_with_discount > 0 && order?.summary?.discount > 0 && order?.summary?.total >= 0 && (
373
+ <Table>
374
+ <OText mBottom={4}>{t('SUBTOTAL_WITH_DISCOUNT', 'Subtotal with discount')}</OText>
375
+ {order?.tax_type === 1 ? (
376
+ <OText mBottom={4}>{parsePrice((order?.summary?.subtotal_with_discount + getIncludedTaxesDiscounts() ?? 0))}</OText>
377
+ ) : (
378
+ <OText mBottom={4}>{parsePrice(order?.summary?.subtotal_with_discount ?? 0)}</OText>
379
+ )}
380
+ </Table>
381
+ )}
382
+ {order?.taxes?.length === 0 && order?.tax_type === 2 && order?.summary?.tax > 0 && (
335
383
  <Table>
336
384
  <OText mBottom={4}>
337
- {t('TAX', 'Tax')}
338
- {`(${verifyDecimals(
339
- order?.summary?.tax_rate,
340
- parseNumber,
341
- )}%)`}
385
+ {t('TAX', 'Tax')} {`(${verifyDecimals(order?.tax, parseNumber)}%)`}
342
386
  </OText>
343
-
344
387
  <OText mBottom={4}>
345
388
  {parsePrice(order?.summary?.tax ?? 0)}
346
389
  </OText>
347
- </Table >
390
+ </Table>
348
391
  )}
349
-
350
392
  {
351
- order?.summary?.discount > 0 && (
393
+ order?.fees?.length === 0 && order?.summary?.service_fee > 0 && (
352
394
  <Table>
353
- {order?.offer_type === 1 ? (
354
- <OText mBottom={4}>
355
- <OText>{t('DISCOUNT', 'Discount')}</OText>
356
-
357
- <OText>
358
- {`(${verifyDecimals(
359
- order?.offer_rate,
360
- parsePrice,
361
- )}%)`}
362
- </OText>
363
- </OText>
364
- ) : (
365
- <OText mBottom={4}>{t('DISCOUNT', 'Discount')}</OText>
366
- )}
367
-
368
395
  <OText mBottom={4}>
369
- - {parsePrice(order?.summary?.discount)}
396
+ {t('SERVICE_FEE', 'Service fee')}
397
+ {`(${verifyDecimals(order?.service_fee, parseNumber)}%)`}
370
398
  </OText>
399
+ <OText mBottom={4}>{parsePrice(order?.summary?.service_fee ?? 0)}</OText>
371
400
  </Table>
372
401
  )
373
402
  }
374
-
375
403
  {
376
- order?.summary?.subtotal_with_discount > 0 &&
377
- order?.summary?.discount > 0 &&
378
- order?.summary?.total >= 0 && (
379
- <Table>
380
- <OText mBottom={4}>
381
- {t(
382
- 'SUBTOTAL_WITH_DISCOUNT',
383
- 'Subtotal with discount',
384
- )}
385
- </OText>
386
- {order?.tax_type === 1 ? (
387
- <OText mBottom={4}>
388
- {parsePrice(
389
- order?.summary?.subtotal_with_discount +
390
- order?.summary?.tax ?? 0,
391
- )}
404
+ order?.taxes?.length > 0 && order?.taxes?.filter((tax: any) => tax?.type === 2 && tax?.rate !== 0).map((tax: any) => (
405
+ <Table key={tax.id}>
406
+ <OSRow>
407
+ <OText numberOfLines={1} mBottom={4}>
408
+ {tax.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
409
+ {`(${verifyDecimals(tax?.rate, parseNumber)}%)`}{' '}
410
+ </OText>
411
+ </OSRow>
412
+ <OText mBottom={4}>{parsePrice(tax?.summary?.tax_after_discount ?? tax?.summary?.tax ?? 0)}</OText>
413
+ </Table>
414
+ ))
415
+ }
416
+ {
417
+ order?.fees?.length > 0 && order?.fees?.filter((fee: any) => !(fee.fixed === 0 && fee.percentage === 0))?.map((fee: any) => (
418
+ <Table key={fee.id}>
419
+ <OSRow>
420
+ <OText numberOfLines={1} mBottom={4}>
421
+ {fee.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
422
+ ({fee?.fixed > 0 && `${parsePrice(fee?.fixed)} + `}{fee.percentage}%){' '}
392
423
  </OText>
393
- ) : (
394
- <OText mBottom={4}>
395
- {parsePrice(
396
- order?.summary?.subtotal_with_discount ?? 0,
424
+ </OSRow>
425
+ <OText mBottom={4}>{parsePrice(fee?.summary?.fixed + (fee?.summary?.percentage_after_discount ?? fee?.summary?.percentage) ?? 0)}</OText>
426
+ </Table>
427
+ ))
428
+ }
429
+ {
430
+ order?.offers?.length > 0 && order?.offers?.filter((offer: any) => offer?.target === 3)?.map((offer: any) => (
431
+ <Table key={offer.id}>
432
+ <OSRow>
433
+ <OText numberOfLines={1} mBottom={4}>
434
+ {offer.name}
435
+ {offer.rate_type === 1 && (
436
+ <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
397
437
  )}
398
438
  </OText>
399
- )}
439
+ </OSRow>
440
+ <OText mBottom={4}>- {parsePrice(offer?.summary?.discount)}</OText>
400
441
  </Table>
401
- )
442
+ ))
402
443
  }
403
-
404
444
  {
405
445
  order?.summary?.delivery_price > 0 && (
406
446
  <Table>
@@ -414,41 +454,35 @@ export const OrderContentComponent = (props: OrderContent) => {
414
454
  </Table>
415
455
  )
416
456
  }
417
-
418
- <Table>
419
- <OText mBottom={4}>
420
- {t('DRIVER_TIP', 'Driver tip')}{' '}
421
- {order?.summary?.driver_tip > 0 &&
422
- parseInt(configs?.driver_tip_type?.value, 10) === 2 &&
423
- !parseInt(configs?.driver_tip_use_custom?.value, 10) &&
424
- `(${verifyDecimals(
425
- order?.summary?.driver_tip,
426
- parseNumber,
427
- )}%)`}
428
- </OText>
429
-
430
- <OText mBottom={4}>
431
- {parsePrice(order?.summary?.driver_tip ?? 0)}
432
- </OText>
433
- </Table>
434
-
435
457
  {
436
- order?.summary?.service_fee > 0 && (
437
- <Table>
438
- <OText mBottom={4}>
439
- {t('SERVICE_FEE', 'Service Fee')}{' '}
440
- {`(${verifyDecimals(
441
- order?.summary?.service_fee,
442
- parseNumber,
443
- )}%)`}
444
- </OText>
445
-
446
- <OText mBottom={4}>
447
- {parsePrice(order?.summary?.service_fee)}
448
- </OText>
458
+ order?.offers?.length > 0 && order?.offers?.filter((offer: any) => offer?.target === 2)?.map((offer: any) => (
459
+ <Table key={offer.id}>
460
+ <OSRow>
461
+ <OText numberOfLines={1} mBottom={4}>
462
+ {offer.name}
463
+ {offer.rate_type === 1 && (
464
+ <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
465
+ )}
466
+ </OText>
467
+ </OSRow>
468
+ <OText mBottom={4}>- {parsePrice(offer?.summary?.discount)}</OText>
449
469
  </Table>
450
- )
470
+ ))
451
471
  }
472
+ {order?.summary?.driver_tip > 0 && (
473
+ <Table>
474
+ <OText mBottom={4}>
475
+ {t('DRIVER_TIP', 'Driver tip')}
476
+ {order?.summary?.driver_tip > 0 &&
477
+ parseInt(configs?.driver_tip_type?.value, 10) === 2 &&
478
+ !parseInt(configs?.driver_tip_use_custom?.value, 10) &&
479
+ (
480
+ `(${verifyDecimals(order?.summary?.driver_tip, parseNumber)}%)`
481
+ )}
482
+ </OText>
483
+ <OText mBottom={4}>{parsePrice(order?.summary?.driver_tip ?? order?.totalDriverTip)}</OText>
484
+ </Table>
485
+ )}
452
486
 
453
487
  <Total style={{ paddingBottom: 10 }}>
454
488
  <Table>
@@ -460,7 +494,7 @@ export const OrderContentComponent = (props: OrderContent) => {
460
494
  mBottom={4}
461
495
  style={styles.textBold}
462
496
  color={theme.colors.primary}>
463
- {parsePrice(order?.summary?.total ?? 0)}
497
+ {parsePrice(order?.summary?.total ?? order?.total)}
464
498
  </OText>
465
499
  </Table>
466
500
  </Total>
@@ -91,3 +91,10 @@ export const AssignDriver = styled.View`
91
91
  padding-vertical: 10px;
92
92
  margin-bottom: 10px;
93
93
  `;
94
+
95
+ export const OSRow = styled.View`
96
+ flex-direction: row;
97
+ overflow: hidden;
98
+ width: 70%;
99
+ flex-wrap: wrap;
100
+ `
@@ -10,7 +10,7 @@ import {
10
10
  useValidationFields,
11
11
  } from 'ordering-components/native';
12
12
 
13
- import { CheckoutAction, OrderTypeWrapper, FloatingLayout } from './styles';
13
+ import { CheckoutAction, OrderTypeWrapper, FloatingLayout, OSRow } from './styles';
14
14
 
15
15
  import { OSBill, OSCoupon, OSTable } from '../OrderSummary/styles';
16
16
 
@@ -90,6 +90,20 @@ const CartUI = (props: any) => {
90
90
 
91
91
  const goToBack = () => navigation.goBack();
92
92
 
93
+ const getIncludedTaxes = () => {
94
+ if (cart?.taxes === null) {
95
+ return cart.business.tax_type === 1 ? cart?.tax : 0
96
+ } else {
97
+ return cart?.taxes.reduce((taxIncluded: number, tax: any) => {
98
+ return taxIncluded + (tax.type === 1 ? tax.summary?.tax : 0)
99
+ }, 0)
100
+ }
101
+ }
102
+
103
+ const getIncludedTaxesDiscounts = () => {
104
+ return cart?.taxes?.filter((tax: any) => tax?.type === 1)?.reduce((carry: number, tax: any) => carry + (tax?.summary?.tax_after_discount ?? tax?.summary?.tax), 0)
105
+ }
106
+
93
107
  return (
94
108
  <>
95
109
  <Container>
@@ -177,13 +191,10 @@ const CartUI = (props: any) => {
177
191
  <OSTable>
178
192
  <OText>{t('SUBTOTAL', 'Subtotal')}</OText>
179
193
  <OText>
180
- {cart.business.tax_type === 1
181
- ? parsePrice((cart?.subtotal + cart?.tax) || 0)
182
- : parsePrice(cart?.subtotal || 0)}
194
+ {parsePrice(cart?.subtotal + getIncludedTaxes())}
183
195
  </OText>
184
196
  </OSTable>
185
- {cart?.discount > 0 && cart?.total >= 0 && orientationState?.orientation == PORTRAIT && (
186
-
197
+ {cart?.discount > 0 && cart?.total >= 0 && cart?.offers?.length === 0 && orientationState?.orientation == PORTRAIT && (
187
198
  <OSTable
188
199
  style={{
189
200
  backgroundColor: theme.colors.success,
@@ -226,44 +237,107 @@ const CartUI = (props: any) => {
226
237
  </OText>
227
238
  </OSTable>
228
239
  )}
229
- {cart.business.tax_type !== 1 && (
240
+ {
241
+ cart?.offers?.length > 0 && cart?.offers?.filter((offer: any) => offer?.target === 1)?.map((offer: any) => (
242
+ <OSTable key={offer.id}>
243
+ <OSRow>
244
+ <OText>{offer.name}</OText>
245
+ {offer.rate_type === 1 && (
246
+ <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
247
+ )}
248
+ </OSRow>
249
+ <OText>
250
+ - {parsePrice(offer?.summary?.discount)}
251
+ </OText>
252
+ </OSTable>
253
+ ))
254
+ }
255
+ {cart?.subtotal_with_discount > 0 && cart?.discount > 0 && cart?.total >= 0 && (
230
256
  <OSTable>
231
- <OText>
232
- {t('TAX', 'Tax')}
233
- {`(${verifyDecimals(cart?.business?.tax, parseNumber)}%)`}
234
- </OText>
235
- <OText>{parsePrice(cart?.tax || 0)}</OText>
257
+ <OText numberOfLines={1}>{t('SUBTOTAL_WITH_DISCOUNT', 'Subtotal with discount')}</OText>
258
+ {cart?.business?.tax_type === 1 ? (
259
+ <OText>{parsePrice(cart?.subtotal_with_discount + getIncludedTaxesDiscounts() ?? 0)}</OText>
260
+ ) : (
261
+ <OText>{parsePrice(cart?.subtotal_with_discount ?? 0)}</OText>
262
+ )}
236
263
  </OSTable>
237
264
  )}
265
+ {
266
+ cart.taxes?.length > 0 && cart.taxes.filter((tax: any) => tax.type === 2 && tax?.rate !== 0).map((tax: any) => (
267
+ <OSTable key={tax.id}>
268
+ <OSRow>
269
+ <OText>
270
+ {tax.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}{' '}
271
+ {`(${verifyDecimals(tax?.rate, parseNumber)}%)`}{' '}
272
+ </OText>
273
+ </OSRow>
274
+ <OText>{parsePrice(tax?.summary?.tax_after_discount ?? tax?.summary?.tax ?? 0)}</OText>
275
+ </OSTable>
276
+ ))
277
+ }
278
+ {
279
+ cart?.fees?.length > 0 && cart?.fees?.filter((fee: any) => !(fee.fixed === 0 && fee.percentage === 0)).map((fee: any) => (
280
+ <OSTable key={fee?.id}>
281
+ <OSRow>
282
+ <OText>
283
+ {fee.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}{' '}
284
+ ({fee?.fixed > 0 && `${parsePrice(fee?.fixed)} + `}{fee.percentage}%){' '}
285
+ </OText>
286
+ </OSRow>
287
+ <OText>{parsePrice(fee?.summary?.fixed + (fee?.summary?.percentage_after_discount ?? fee?.summary?.percentage) ?? 0)}</OText>
288
+ </OSTable>
289
+ ))
290
+ }
291
+ {
292
+ cart?.offers?.length > 0 && cart?.offers?.filter((offer: any) => offer?.target === 3)?.map((offer: any) => (
293
+ <OSTable key={offer.id}>
294
+ <OSRow>
295
+ <OText>{offer.name}</OText>
296
+ {offer.rate_type === 1 && (
297
+ <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
298
+ )}
299
+ </OSRow>
300
+ <OText>
301
+ - {parsePrice(offer?.summary?.discount)}
302
+ </OText>
303
+ </OSTable>
304
+ ))
305
+ }
238
306
  {selectedOrderType === 1 && cart?.delivery_price > 0 && (
239
307
  <OSTable>
240
308
  <OText>{t('DELIVERY_FEE', 'Delivery Fee')}</OText>
241
309
  <OText>{parsePrice(cart?.delivery_price)}</OText>
242
310
  </OSTable>
243
311
  )}
312
+ {
313
+ cart?.offers?.length > 0 && cart?.offers?.filter((offer: any) => offer?.target === 2)?.map((offer: any) => (
314
+ <OSTable key={offer.id}>
315
+ <OSRow>
316
+ <OText>{offer.name}</OText>
317
+ {offer.rate_type === 1 && (
318
+ <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
319
+ )}
320
+ </OSRow>
321
+ <OText>
322
+ - {parsePrice(offer?.summary?.discount)}
323
+ </OText>
324
+ </OSTable>
325
+ ))
326
+ }
244
327
  {cart?.driver_tip > 0 && (
245
328
  <OSTable>
246
329
  <OText>
247
330
  {t('DRIVER_TIP', 'Driver tip')}
248
331
  {cart?.driver_tip_rate > 0 &&
249
332
  parseInt(configs?.driver_tip_type?.value, 10) === 2 &&
250
- !!!parseInt(configs?.driver_tip_use_custom?.value, 10) &&
333
+ !parseInt(configs?.driver_tip_use_custom?.value, 10) &&
251
334
  (
252
- `(${parseNumber(cart?.driver_tip_rate)}%)`
335
+ `(${verifyDecimals(cart?.driver_tip_rate, parseNumber)}%)`
253
336
  )}
254
337
  </OText>
255
338
  <OText>{parsePrice(cart?.driver_tip)}</OText>
256
339
  </OSTable>
257
340
  )}
258
- {cart?.service_fee > 0 && (
259
- <OSTable>
260
- <OText>
261
- {t('SERVICE_FEE', 'Service Fee')}
262
- {`(${verifyDecimals(cart?.business?.service_fee, parseNumber)}%)`}
263
- </OText>
264
- <OText>{parsePrice(cart?.service_fee)}</OText>
265
- </OSTable>
266
- )}
267
341
  {!cart?.discount_type && isCouponEnabled && !isCartPending && orientationState?.orientation == PORTRAIT && (
268
342
  <OSTable>
269
343
  <OSCoupon>
@@ -279,7 +353,7 @@ const CartUI = (props: any) => {
279
353
  {t('TOTAL', 'Total')}
280
354
  </OText>
281
355
  <OText weight='bold' color={theme.colors.primary}>
282
- {cart?.total >= 1 && parsePrice(cart?.total)}
356
+ {parsePrice(cart?.total >= 0 ? cart?.total : 0)}
283
357
  </OText>
284
358
  </OSTable>
285
359
  </OSBill>
@@ -379,7 +453,7 @@ const CartUI = (props: any) => {
379
453
  <ProductForm
380
454
  productCart={curProduct}
381
455
  businessSlug={cart?.business?.slug}
382
- businessId={cart?.business_id}
456
+ businessId={curProduct?.business_id}
383
457
  categoryId={curProduct?.category_id}
384
458
  productId={curProduct?.id}
385
459
  onSave={handlerProductAction}
@@ -68,3 +68,9 @@ export const FloatingLayout = styled.View`
68
68
  padding-bottom: 20px;
69
69
  `)}
70
70
  `
71
+
72
+ export const OSRow = styled.View`
73
+ flex-direction: row;
74
+ overflow: hidden;
75
+ width: 80%;
76
+ `