/**
* External dependencies
*/
import { useState } from '@wordpress/element';
import { __ } from '@wordpress/i18n';
import PropTypes from 'prop-types';
import QuantitySelector from '@woocommerce/base-components/quantity-selector';
import FormattedMonetaryAmount from '@woocommerce/base-components/formatted-monetary-amount';
import { getCurrency } from '@woocommerce/base-utils';
const ProductVariationDetails = ( { variation } ) => {
const variationsText = variation
.map( ( v ) => `${ v.attribute }: ${ v.value }` )
.join( ' / ' );
return (
{ variationsText }
);
};
const CartLineItemRow = ( { lineItem } ) => {
const { name, description, images, variation, quantity, totals } = lineItem;
const { line_total: total, line_subtotal: subtotal } = totals;
const imageProps = {};
if ( images && images.length ) {
imageProps.src = lineItem.images[ 0 ].src || '';
imageProps.alt = lineItem.images[ 0 ].alt || '';
imageProps.srcSet = lineItem.images[ 0 ].srcset || '';
imageProps.sizes = lineItem.images[ 0 ].sizes || '';
}
const [ lineQuantity, setLineQuantity ] = useState( quantity );
const currency = getCurrency();
const isDiscounted = subtotal !== total;
const fullPrice = isDiscounted ? (
) : null;
// We use this in two places so we can stack the quantity selector under
// product info on smaller screens.
const quantitySelector = ( className ) => {
return (
);
};
return (
{ name }
{ quantitySelector(
'wc-block-cart-item__quantity-stacked'
) }
|
{ quantitySelector() }
{ __( 'Remove item', 'woo-gutenberg-products-block' ) }
|
{ fullPrice }
|
);
};
CartLineItemRow.propTypes = {
lineItem: PropTypes.shape( {
name: PropTypes.string.isRequired,
description: PropTypes.string.isRequired,
images: PropTypes.array.isRequired,
quantity: PropTypes.number.isRequired,
variation: PropTypes.arrayOf(
PropTypes.shape( {
attribute: PropTypes.string.isRequired,
value: PropTypes.string.isRequired,
} )
).isRequired,
totals: PropTypes.shape( {
line_subtotal: PropTypes.string.isRequired,
line_total: PropTypes.string.isRequired,
} ).isRequired,
} ),
};
export default CartLineItemRow;