@shopgate/engage
Version:
Shopgate's ENGAGE library.
4 lines • 5.14 kB
JavaScript
function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}import React,{Fragment}from'react';import classNames from'classnames';import{TextLink,ProductProperties,QuantityLabel,ConditionalWrapper,MessageBar,SurroundPortals}from'@shopgate/engage/components';import{ProductImage,CartUnitQuantityPicker,PriceInfo,ProductName,ITEM_PATH}from'@shopgate/engage/product';import{CART_ITEM_NAME,CART_ITEM_QUANTITY_PICKER}from'@shopgate/pwa-common-commerce/cart';import{bin2hex}from'@shopgate/engage/core';import{getLineItemActiveStatus}from'@shopgate/engage/orders';import{CartContextMenuChangeFulfillment}from'@shopgate/engage/locations';import CartItemProductPriceList from"./CartItemProductPriceList";import{CartItemProductLayoutWideRemoveItem}from"./CartItemProductLayoutWideRemoveItem";import{CartItemProductLayoutWideFulfillmentLabel}from"./CartItemProductLayoutWideFulfillmentLabel";import CartItemProductLayoutWideOrderDetails from"./CartItemProductLayoutWideOrderDetails";import{CartItemProductPriceCaption}from"./CartItemProductPriceCaption";import{useCartItem,useCartItemProduct}from"./CartItem.hooks";import{container,containerInactive,imageColumn,detailsColumn,priceColumnWide,productName,productProperties,column,quantityPicker,quantityPickerDisabled,price,priceInfo,priceListEntry,priceListPromo,contextMenu,messageContainer,messageContainerRope}from"./CartItemProductLayoutWide.style";/**
* @param {Object} props The component properties.
* @returns {JSX}
*/var CartItemProductLayoutWide=function CartItemProductLayoutWide(){var _useCartItem=useCartItem(),merchantFulfillmentMethodsCount=_useCartItem.merchantFulfillmentMethodsCount,isOrderDetails=_useCartItem.isOrderDetails,cartHasLineItemPromotions=_useCartItem.cartHasLineItemPromotions;var context=useCartItemProduct();var cartItem=context.cartItem,product=context.product,currency=context.currency,handleUpdate=context.handleUpdate,isEditable=context.isEditable,messages=context.messages;var hasUnitWithDecimals=product.unit&&product.hasCatchWeight||false;var isActive=!isOrderDetails?true:getLineItemActiveStatus(cartItem===null||cartItem===void 0?void 0:cartItem.status,cartItem===null||cartItem===void 0?void 0:cartItem.subStatus);return React.createElement(Fragment,null,React.createElement("div",{className:classNames(container,_defineProperty({},containerInactive,!isActive))},React.createElement("div",{className:imageColumn},React.createElement(ProductImage,{src:product.featuredImageBaseUrl||product.featuredImageUrl})),React.createElement("div",{className:detailsColumn},React.createElement(ConditionalWrapper,{condition:isEditable,wrapper:function wrapper(children){return React.createElement(TextLink,{href:"".concat(ITEM_PATH,"/").concat(bin2hex(product.id))},children);}},React.createElement(ProductName,{name:product.name,className:productName,portalName:CART_ITEM_NAME,portalProps:context,testId:product.name})),React.createElement(ProductProperties,{className:productProperties,properties:product.properties,lineClamp:2}),!isOrderDetails&&React.createElement(CartItemProductLayoutWideFulfillmentLabel,null)),React.createElement("div",{className:cartHasLineItemPromotions?priceColumnWide:column},React.createElement(CartItemProductPriceList,{cartItem:cartItem,classes:{price:price,priceStriked:price,entry:priceListEntry,promo:priceListPromo}}),React.createElement(PriceInfo,{product:product,currency:currency,className:priceInfo}),React.createElement(CartItemProductPriceCaption,null)),isOrderDetails&&React.createElement(CartItemProductLayoutWideOrderDetails,null),React.createElement("div",{className:column},isEditable?React.createElement(SurroundPortals,{portalName:CART_ITEM_QUANTITY_PICKER,portalProps:{product:product,cartItem:cartItem,isOrderDetails:isOrderDetails,handleUpdate:handleUpdate,isEditable:isEditable}},React.createElement(CartUnitQuantityPicker,{productId:product.id,value:isOrderDetails?cartItem.orderedQuantity:cartItem.quantity,unit:product.unit,hasCatchWeight:product.hasCatchWeight,onChange:handleUpdate,classNames:{withDecimals:quantityPicker,withoutDecimals:quantityPicker}})):React.createElement(QuantityLabel,{className:quantityPickerDisabled,value:isOrderDetails?cartItem.orderedQuantity:cartItem.quantity,unit:hasUnitWithDecimals?product.unit:null,maxDecimals:hasUnitWithDecimals?2:0}),isEditable&&React.createElement(CartItemProductLayoutWideRemoveItem,null)),React.createElement("div",{className:column},React.createElement(CartItemProductPriceList,{isSubtotal:true,cartItem:cartItem,classes:{price:price,priceStriked:price,entry:priceListEntry,promo:priceListPromo}}),React.createElement(CartItemProductPriceCaption,null)),isEditable&&merchantFulfillmentMethodsCount>1&&React.createElement("div",{className:contextMenu},React.createElement(CartContextMenuChangeFulfillment,{cartItem:cartItem}))),messages.length>0&&React.createElement(MessageBar,{messages:messages,showIcons:true,classNames:{container:cartItem.fulfillment?messageContainerRope:messageContainer}}));};export{CartItemProductLayoutWide};