(() => { const { EventManager, utils } = ShopbySkin; const { isMobileDevice } = utils; const headerEl = document.querySelector('shopby-header-v2'); // 외부스크립트 등록 기능. 삭제금지 ShopbyExternalScript?.initialize({ apiOption: { platform: 'PC', }, }).then(() => { EventManager.fire('QUERY_PAGE_SCRIPTS', ShopbyExternalScript?.scripts); }); // 클릭이벤트 맵 // 1. SIGN_OUT : 로그아웃 const headerActionMap = { SIGN_OUT: () => { EventManager.fire('SIGN_OUT'); }, GO_MY_MENU: (e) => { if (!utils.isSignedIn()) { e.preventDefault(); const from = e.target.href; const nextUrl = `${location.origin}/pages/sign-in/sign-in.html`; location.href = `${nextUrl}?from=${encodeURIComponent(from)}`; } }, }; // 클릭이벤트 핸들러 const clickEventListener = (e) => { const action = e?.target?.closest('[shopby-action]')?.getAttribute('shopby-action'); headerActionMap[action]?.(e); }; // 상단 카테고리 slider 초기화 EventManager.on('PAGE_LOAD_COMPLETED', ({ profile }) => { EventManager.fire('INIT_CATEGORY_SLIDER', { direction: 'horizontal', effect: 'slide', slidesPerView: 'auto', spaceBetween: 20, }); // 외부스크립트 등록 기능. 삭제금지 ShopbyExternalScript?.setGlobalObjectSb({ getPlatform: () => (isMobileDevice ? 'MOBILE_WEB' : 'PC'), profile, }); }); headerEl?.addEventListener('click', clickEventListener); const searchParams = new URLSearchParams(location.search); const trackingKey = searchParams.get('trackingKey'); const channelType = searchParams.get('channelType'); const { setTrackingKey, setChannelType } = ShopbySkin.utils; setTrackingKey(trackingKey); setChannelType(channelType); const bindHoverEvents = () => { const menuItems = headerEl.querySelectorAll('.header-main .cate-menu > ul > li'); menuItems.forEach(item => { if (item.dataset._hoverBound) return; // 중복 바인딩 방지 item.dataset._hoverBound = 'true'; const submenu = item.querySelector('.sub-menu-box'); if (!submenu) return; item.addEventListener('mouseenter', () => { submenu.classList.add('show'); }); item.addEventListener('mouseleave', () => { submenu.classList.remove('show'); }); }); }; // 초기 시도 bindHoverEvents(); // 변화 감지 (cate-menu가 나중에 삽입될 경우) const observer = new MutationObserver(() => bindHoverEvents()); observer.observe(headerEl, { childList: true, subtree: true }); // 검색창 document.addEventListener("click", function (e) { const searchBtn = e.target.closest(".top-search > a"); const closeBtn = e.target.closest(".search-layer .search-close-btn"); const dim = e.target.closest(".dim"); const searchLayer = document.querySelector(".search-layer"); const header = document.querySelector("#header"); const layerDim = document.querySelector(".dim"); if (searchBtn) { e.preventDefault(); searchLayer?.classList.add("active"); header?.classList.add("on"); layerDim?.classList.remove("dn"); } if (closeBtn || dim) { e.preventDefault(); searchLayer?.classList.remove("active"); header?.classList.remove("on"); layerDim?.classList.add("dn"); } }); // 상단 고정 function showHeader() { const header = document.getElementById('header'); const headH = header.offsetHeight; if (window.scrollY > headH) { header.classList.add('fixed'); } else { header.classList.remove('fixed'); } } window.addEventListener('scroll', showHeader); document.addEventListener('DOMContentLoaded', showHeader); })();