@shopgate/engage
Version:
Shopgate's ENGAGE library.
7 lines • 2 kB
JavaScript
import React,{Fragment,useMemo}from'react';import PropTypes from'prop-types';import{i18n,generateGoogleMapsDirectionsUrl}from'@shopgate/engage/core';import{LocationIcon,Link,Ellipsis,I18n}from'@shopgate/engage/components';import{StoreDetailsLine}from"./StoreDetailsLine";import{detailsPrimary,detailsSecondary}from"./Store.style";/**
* Renders the pickup location's address information.
* @param {Object} props The component props.
* @param {Object} props.address The address object.
* @param {boolean} props.showFull Whether to show the full address.
* @returns {JSX.Element}
*/export function StoreAddressShort(_ref){var address=_ref.address,showFull=_ref.showFull;var mapsUrl=useMemo(function(){return address&&generateGoogleMapsDirectionsUrl(address);},[address]);if(!address){return null;}var addressLabel="".concat(address.street+(address.street2?", ".concat(address.street2):'')+(address.street3?", ".concat(address.street3):'')+(address.street4?", ".concat(address.street4):'')+i18n.text('locations.address',address),": ").concat(i18n.text('locations.map_open'));return React.createElement(Link,{target:"_blank",href:mapsUrl,role:"button","aria-label":addressLabel},React.createElement(StoreDetailsLine,{icon:LocationIcon,linked:true},showFull&&React.createElement(Fragment,null,React.createElement("p",{className:detailsPrimary},address.street),address.street2&&address.street2!==''&&React.createElement("p",{className:detailsPrimary},address.street2),address.street3&&address.street3!==''&&React.createElement("p",{className:detailsPrimary},address.street3),address.street4&&address.street4!==''&&React.createElement("p",{className:detailsPrimary},address.street4)),React.createElement(Ellipsis,{rows:1,className:detailsPrimary},i18n.text('locations.address',address)),React.createElement(I18n.Text,{string:"locations.map_open",className:detailsSecondary,"aria-label":": ".concat(i18n.text('locations.map_open'))})));}StoreAddressShort.defaultProps={address:null,showFull:false};