UNPKG

@commercelayer/react-components

Version:
2 lines 4.05 kB
"use client"; "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Address=Address;const tslib_1=require("tslib"),jsx_runtime_1=require("react/jsx-runtime"),isEmpty_1=tslib_1.__importDefault(require("lodash/isEmpty")),react_1=require("react"),AddressCardsTemplate_1=tslib_1.__importDefault(require("../utils/AddressCardsTemplate")),AddressChildrenContext_1=tslib_1.__importDefault(require("../../context/AddressChildrenContext")),AddressContext_1=tslib_1.__importDefault(require("../../context/AddressContext")),BillingAddressContext_1=tslib_1.__importDefault(require("../../context/BillingAddressContext")),CustomerContext_1=tslib_1.__importDefault(require("../../context/CustomerContext")),OrderContext_1=tslib_1.__importDefault(require("../../context/OrderContext")),ShippingAddressContext_1=tslib_1.__importDefault(require("../../context/ShippingAddressContext"));function Address(props){const{children,className,selectedClassName="",disabledClassName="",onSelect,addresses=[],deselect=!1}=props,p=tslib_1.__rest(props,["children","className","selectedClassName","disabledClassName","onSelect","addresses","deselect"]),{addresses:addressesContext}=(0,react_1.useContext)(CustomerContext_1.default),{setBillingAddress,billingCustomerAddressId}=(0,react_1.useContext)(BillingAddressContext_1.default),{setShippingAddress,shippingCustomerAddressId}=(0,react_1.useContext)(ShippingAddressContext_1.default),{shipToDifferentAddress,billingAddressId,shippingAddressId}=(0,react_1.useContext)(AddressContext_1.default),{order}=(0,react_1.useContext)(OrderContext_1.default),[selected,setSelected]=(0,react_1.useState)(null),items=(0,isEmpty_1.default)(addresses)?addressesContext&&addressesContext||[]:addresses;(0,react_1.useEffect)(()=>{items&&!deselect&&items.forEach((address,k)=>{billingCustomerAddressId&&address.reference===billingCustomerAddressId&&selected===null&&setSelected(k),!billingAddressId&&k===selected&&setBillingAddress&&address.reference!=null&&setBillingAddress(address.id,{customerAddressId:address.reference}),shippingCustomerAddressId&&address.reference===shippingCustomerAddressId&&selected===null&&setSelected(k),!shippingAddressId&&k===selected&&setShippingAddress&&address.reference!=null&&setShippingAddress(address.id,{customerAddressId:address.reference})}),deselect&&tslib_1.__awaiter(this,void 0,void 0,function*(){setBillingAddress&&(yield setBillingAddress("")),setShippingAddress&&(yield setShippingAddress(""))})},[deselect,billingCustomerAddressId,shippingCustomerAddressId,addressesContext,shipToDifferentAddress]);const handleSelect=(k,addressId,customerAddressId,disabled,address)=>tslib_1.__awaiter(this,void 0,void 0,function*(){!disabled&&setSelected(k),setBillingAddress&&(yield setBillingAddress(addressId,{customerAddressId})),!disabled&&setShippingAddress&&(yield setShippingAddress(addressId,{customerAddressId})),onSelect&&onSelect(address)}),countryLock=order?.shipping_country_code_lock,components=typeof children=="function"?[]:items.filter(address=>!(setShippingAddress&&countryLock&&countryLock!==address.country_code)).map((address,k)=>{const addressProps={address},disabled=setShippingAddress&&countryLock&&countryLock!==address.country_code||!1,addressSelectedClass=selected===k?`${className||""} ${deselect?"":selectedClassName}`:className,customerAddressId=address?.reference||"",finalClassName=disabled?`${className||""} ${disabledClassName}`:addressSelectedClass;return(0,jsx_runtime_1.jsx)(AddressChildrenContext_1.default.Provider,{value:addressProps,children:(0,jsx_runtime_1.jsx)("div",Object.assign({className:finalClassName,onClick:()=>{handleSelect(k,address.id,customerAddressId,disabled,address)},"data-disabled":disabled},p,{children}))},k)}),parentProps=Object.assign({customerAddresses:items,selected,handleSelect,countryLock},props);return typeof children=="function"?(0,jsx_runtime_1.jsx)(AddressCardsTemplate_1.default,Object.assign({},parentProps,{children})):(0,jsx_runtime_1.jsx)(jsx_runtime_1.Fragment,{children:components})}exports.default=Address;