(() => { const { EventManager } = ShopbySkin; const containerEl = document.querySelector( '[shopby-helper-key="profile-shipping-address"]' ); const addressListComponent = containerEl.querySelector( "my-shipping-address-list" ); const CLICK_EVENT_HANDLER_MAP = { REGISTER_SHIPPING_ADDRESS: ({ totalCount }) => { const afterRegisterForm = ({ reason }) => { if (reason === "DID_SUBMIT") { EventManager.fire("MODAL_ALERT_OPEN", { noticeType: "SUCCESS", message: "배송지가 등록되었습니다.", data: { totalCount, }, onClose: () => { addressListComponent.fetchList({ refresh: true, }); }, }); } }; EventManager.fire("OPEN_LAYER_MODAL", { isFull: false, modalAddClass: "address-form", name: "shipping-address-form", title: "배송지 등록", onClose: afterRegisterForm, data: { totalCount, }, }); }, DELETE_SHIPPING_ADDRESS: ({ addressNo, isDefault, addressName }) => { if (!addressNo) { return; } if (isDefault) { EventManager.fire("MODAL_ALERT_OPEN", { noticeType: "CAUTION", message: "기본 배송지는 삭제할 수 없습니다.
변경 후에 삭제해 주세요.
", }); return; } EventManager.fire("MODAL_CONFIRM_OPEN", { noticeType: "WARNING", message: `${addressName}${ addressName ? " " : "" }배송지를 삭제하시겠습니까?`, onConfirm: async () => { await addressListComponent.deleteProfileShippingAddress(addressNo); EventManager.fire("MODAL_ALERT_OPEN", { noticeType: "SUCCESS", message: "배송지가 삭제되었습니다.", onClose: () => { addressListComponent.fetchList({ refresh: true, }); }, }); }, }); }, MODIFY_SHIPPING_ADDRESS: ({ addressNo, totalCount }) => { EventManager.fire("OPEN_LAYER_MODAL", { isFull: false, modalAddClass: "address-form", name: "shipping-address-form", title: "배송지 수정", data: { addressNo, totalCount, }, onClose: ({ reason }) => { if (reason === "DID_MODIFY") { EventManager.fire("MODAL_ALERT_OPEN", { noticeType: "SUCCESS", message: "수정이 완료되었습니다.", onClose: () => { addressListComponent.fetchList({ refresh: true, }); }, }); } }, }); }, }; const clickEventListener = ({ target }) => { const actionType = target.getAttribute("shopby-action"); const addressNo = Number( target .closest("[shopby-address-no]") ?.getAttribute?.("shopby-address-no") ?? 0 ); const addressName = target .closest("[shopby-address-name]") ?.getAttribute?.("shopby-address-name"); const isDefault = target .closest("[shopby-default-yn]") ?.getAttribute?.("shopby-default-yn") === "Y"; const totalCount = Number(target.getAttribute("shopby-total-count") || 0); CLICK_EVENT_HANDLER_MAP[actionType]?.({ addressNo, isDefault, totalCount, addressName, }); }; containerEl.addEventListener("click", clickEventListener); EventManager.on("PAGE_LOAD_COMPLETED", () => { addressListComponent.fetchList(); }); })();