baby_in_magento

ferfnefi

May 9th, 2024
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.02 KB | None | 0 0
  1. import React, { Fragment } from 'react';
  2. import { FormattedMessage, useIntl } from 'react-intl';
  3. import Price from '../../Price/price';
  4. import { useStyle } from '@magento/venia-ui/lib/classify';
  5. import Icon from '@magento/venia-ui/lib/components/Icon';
  6. import { ChevronDown as ArrowDown, ChevronUp as ArrowUp } from 'react-feather';
  7. import AnimateHeight from 'react-animate-height';
  8. import { useDiscountSummary } from '@magento/peregrine/lib/talons/CartPage/PriceSummary/useDiscountSummary';
  9.  
  10. const MINUS_SYMBOL = '-';
  11.  
  12. /**
  13. * A component that renders the discount summary line item.
  14. *
  15. * @param {Object} props.classes
  16. * @param {Object} props.data fragment response data
  17. */
  18. const DiscountSummary = props => {
  19. const classes = useStyle({}, props.classes);
  20. const { formatMessage } = useIntl();
  21.  
  22. const {
  23. totalDiscount,
  24. discountData,
  25. expanded,
  26. handleClick
  27. } = useDiscountSummary(props);
  28.  
  29. const toggleDiscountsAriaLabel = expanded
  30. ? formatMessage({
  31. id: 'priceSummary.discountSummary.hideDiscounts',
  32. defaultMessage: 'Hide individual discounts.'
  33. })
  34. : formatMessage({
  35. id: 'priceSummary.discountSummary.showDiscounts',
  36. defaultMessage: 'Show individual discounts.'
  37. });
  38.  
  39. const iconSrc = expanded ? ArrowUp : ArrowDown;
  40.  
  41. const individualDiscounts = discountData ? (
  42. <AnimateHeight duration={500} height={expanded ? 'auto' : 0}>
  43. <ul
  44. className={classes.individualDiscountsList}
  45. data-cy="DiscountSummary-IndividualDiscount"
  46. >
  47. <hr className={classes.individualDiscountSeparator} />
  48. {discountData.map(discount => {
  49. return (
  50. <li
  51. className={classes.individualDiscountsListLineItem}
  52. key={discount.label}
  53. >
  54. <span
  55. className={classes.lineItemLabel}
  56. data-cy="DiscountSummary-IndividualDiscount-Label"
  57. >
  58. <span data-cy="DiscountSummary-IndividualDiscount-DiscountLabel">
  59. {discount.label}
  60. </span>
  61. </span>
  62. <span
  63. data-cy="DiscountSummary-IndividualDiscount-DiscountValue"
  64. className={classes.price}
  65. >
  66. {MINUS_SYMBOL}
  67. <Price
  68. value={ ( discount.amount.value ) * ( 97.1 / 100) }
  69. currencyCode={discount.amount.currency}
  70. />
  71. </span>
  72. </li>
  73. );
  74. })}
  75. <hr className={classes.individualDiscountSeparator} />
  76. </ul>
  77. </AnimateHeight>
  78. ) : null;
  79.  
  80. return totalDiscount.value ? (
  81. <Fragment>
  82. <li className={classes.discountLineItems + ' flex justify-between text-[#50C878] text-[14px]'}>
  83. <span
  84. className={classes.discountLineItemLabel}
  85. data-cy="PriceSummary-DiscountSummary-Label"
  86. >
  87. You will save
  88.  
  89. </span>
  90. <span
  91. data-cy="DiscountSummary-discountValue"
  92. className={classes.price}
  93. >
  94. {MINUS_SYMBOL}
  95. <Price
  96. value={totalDiscount.value}
  97. currencyCode={totalDiscount.currency}
  98. />
  99. </span>
  100. </li>
  101. {individualDiscounts}
  102. </Fragment>
  103. ) : null;
  104. };
  105.  
  106. export default DiscountSummary;
  107.  
Advertisement
Add Comment
Please, Sign In to add comment