1window.dataLayer = window.dataLayer || []; 2/** 3 * å ±éããã²ã¼ã·ã§ã³æ©è½ 4 * ãããã¼ä½ç½®èª¿æ´ããã¼ã¸ããããã¿ã³ããã³ãã¼ã¬ã¼ã¡ãã¥ã¼ãªã©ã®æ©è½ãæä¾ 5 */ 6window.addEventListener('DOMContentLoaded', function () { 7 /** 8 * ãããã¼ä½ç½®èª¿æ´ 9 * areaSPè¦ç´ ã®è¡¨ç¤ºç¶æ ã«å¿ãã¦ãããã¼ã®ä½ç½®ãèª¿æ´ 10 */ 11 function headerPosition() { 12 var header = document.getElementById('js-header'); 13 var areaSP = document.getElementById('areaSp'); 14 15 if (header != null && areaSP != null) { 16 var style = 17 areaSP.currentStyle || 18 document.defaultView.getComputedStyle(areaSP, ''); 19 if (style.display == 'block') { 20 header.style.top = '120px'; 21 } 22 window.addEventListener('scroll', function () { 23 var scrollTop = 24 document.documentElement.scrollTop || document.body.scrollTop; 25 if (style.display == 'block' && scrollTop == 0) { 26 header.style.top = '120px'; 27 } else { 28 header.style.removeProperty('top'); 29 } 30 }); 31 } 32 } 33 34 /** 35 * ãããã¸æ»ããã¿ã³æ©è½ 36 * ã¹ã¯ãã¼ã«ä½ç½®ã«å¿ãã¦ãã¿ã³ã®è¡¨ç¤º/é表示ãå¶å¾¡ããã¹ã ã¼ãºã¹ã¯ãã¼ã«ãè¨å® 37 */ 38 function pageTopBtn() { 39 /** 40 * ã¹ã¯ãã¼ã«ä½ç½®ã«å¿ãã¦ãã¿ã³ã®è¡¨ç¤º/é表示ãåãæ¿ã 41 * @param {number} scrollPos ç¾å¨ã®ã¹ã¯ãã¼ã«ä½ç½® 42 */ 43 var scrollToggleClass = function (scrollPos) { 44 var targetTop = document.getElementById('js-targetBtn'); 45 var triggerMargin = 300; 46 if (triggerMargin < scrollPos) { 47 targetTop.classList.add('targetTop--show'); 48 } else { 49 targetTop.classList.remove('targetTop--show'); 50 } 51 }; 52 53 window.addEventListener('scroll', function () { 54 var scrollTop = 55 document.documentElement.scrollTop || document.body.scrollTop; 56 scrollToggleClass(scrollTop); 57 }); 58 59 // moveToã©ã¤ãã©ãªç¨ã®ã¤ã¼ã¸ã³ã°é¢æ° 60 var easeFunctions = { 61 easeInQuad: function (t, b, c, d) { 62 t /= d; 63 return c * t * t + b; 64 }, 65 easeOutQuad: function (t, b, c, d) { 66 t /= d; 67 return -c * t * (t - 2) + b; 68 }, 69 }; 70 71 // ã¹ã¯ãã¼ã«ä¸ãã©ã° 72 var isScrolling = false; 73 var scrollStartTime = 0; 74 // ã¹ã ã¼ãºã¹ã¯ãã¼ã«è¨å® 75 var moveTo = new MoveTo( 76 { 77 duration: 800, 78 ease: 'easeInQuad', 79 callback: function() { 80 // ã¹ã¯ãã¼ã«å®äºå¾ã«ãã©ã¼ã«ã¹ãç§»å 81 isScrolling = false; 82 var headerLogo = document.querySelector('h1 a'); 83 if (headerLogo) { 84 headerLogo.setAttribute('tabindex', '-1'); 85 headerLogo.focus(); 86 setTimeout(function() { 87 headerLogo.removeAttribute('tabindex'); 88 }, 100); 89 } 90 } 91 }, 92 easeFunctions 93 ); 94 // ãã¼ã¸ããããã¿ã³ã«ã¹ã ã¼ãºã¹ã¯ãã¼ã«ãé©ç¨ 95 var triggers = document.getElementsByClassName('js-pageTopTrigger'); 96 for (var i = 0; i < triggers.length; i++) { 97 moveTo.registerTrigger(triggers[i]); 98 99 // ã¯ãªãã¯æã«ã¹ã¯ãã¼ã«éå§ãã©ã°ãç«ã¦ã 100 triggers[i].addEventListener('click', function(e) { 101 isScrolling = true; 102 scrollStartTime = Date.now(); 103 }); 104 } 105 106 // ã¹ã¯ãã¼ã«ä¸ã®Tabæä½ãå¶å¾¡ 107 document.addEventListener('keydown', function(e) { 108 if (e.key === 'Tab' && isScrolling) { 109 var elapsedTime = Date.now() - scrollStartTime; 110 111 // ã¹ã¯ãã¼ã«éå§ãã800ms以å ã®å ´å 112 if (elapsedTime < 800) { 113 e.preventDefault(); 114 115 // ã¹ã¯ãã¼ã«ãå³åº§ã«å®äºããã¦ãã©ã¼ã«ã¹ãç§»å 116 window.scrollTo({ 117 top: 0, 118 behavior: 'instant' 119 }); 120 121 isScrolling = false; 122 123 // ãããã¼ãã´ã«ãã©ã¼ã«ã¹ 124 var headerLogo = document.querySelector('h1 a'); 125 if (headerLogo) { 126 headerLogo.setAttribute('tabindex', '-1'); 127 headerLogo.focus(); 128 setTimeout(function() { 129 headerLogo.removeAttribute('tabindex'); 130 }, 100); 131 } 132 } 133 } 134 }); 135 } 136 137 /** 138 * ãããã¼ãµãã¿ã¤ãã«ã¨ã¡ãã¥ã¼ç¶æ ãURLå¤å® 139 * ç¾å¨ã®URLãã¹ã«åºã¥ãã¦ãããã¼ãµãã¿ã¤ãã«ã¨ã¡ã¬ã¡ãã¥ã¼ã®è¡¨ç¤ºãå¶å¾¡ 140 */ 141 function headerUrlRelated() { 142 var activeUrlPath = location.pathname; 143 var pathList = activeUrlPath.split('/'); 144 var firstLayer = pathList[1]; 145 var secondLayer = pathList[2]; 146 var header = document.getElementById('js-header'); 147 var titleElement = document.getElementById('js-subTitle'); 148 var megaMenu = document.getElementById('js-megaMenu'); 149 150 var contentMenulists = []; 151 var clickMenulists = []; 152 var wrapperMenu = document.getElementById('js-hamburgerMenu'); 153 var clickMenu = document.querySelectorAll('.hamburgerMenu__listItem'); 154 var contentMenu = document.querySelectorAll('.hamburgerSubMenu__wrapper'); 155 156 var megaMenuNormal = document.getElementById('megaMenuNormal'); 157 var megaMenuInformation = document.getElementById('megaMenuInformation'); 158 var megaMenuTreecycle = document.getElementById('megaMenuTreecycle'); 159 var megaMenuBunjyo = document.getElementById('megaMenuBunjyo'); 160 161 var pElement = document.createElement('a'); 162 pElement.className = 'header__subTitle'; 163 var megaMenuDisplay = function () { 164 megaMenu.classList.add('megaMenuHide'); 165 }; 166 167 for (var i = 0; i < contentMenu.length; i++) { 168 contentMenulists.push(contentMenu[i]); 169 } 170 for (var j = 0; j < clickMenu.length; j++) { 171 clickMenulists.push(clickMenu[j]); 172 } 173 174 //ãã³ãã¼ã¬ã¼ã¡ãã¥ã¼å¯¾è±¡ã®ã«ãã´ãªã¼ãéããç¶æ ã«ãã 175 //ä½ã¾ã 176 var hamburgerMenuOpenCat1 = function () { 177 clickMenulists[0].classList.add('hamburgerMenu__listItem--active'); 178 contentMenulists[0].classList.add('hamburgerSubMenu__wrapper--isOpen'); 179 var panelDiv = contentMenulists[0].closest('[role="tabpanel"]'); 180 if (panelDiv) { 181 panelDiv.classList.add('hamburgerSubMenu__wrapper--isOpen'); 182 } 183 wrapperMenu.classList.add('hamburgerMenu__body--isOpen'); 184 var button = clickMenulists[0].querySelector('.hamburgerMenu__link'); 185 if (button && button.tagName === 'BUTTON') { 186 button.setAttribute('aria-selected', 'true'); 187 button.setAttribute('aria-expanded', 'true'); 188 } 189 }; 190 //ä¸å¤§è¦æ¨¡ 191 var hamburgerMenuOpenCat2 = function () { 192 clickMenulists[1].classList.add('hamburgerMenu__listItem--active'); 193 contentMenulists[1].classList.add('hamburgerSubMenu__wrapper--isOpen'); 194 var panelDiv = contentMenulists[1].closest('[role="tabpanel"]'); 195 if (panelDiv) { 196 panelDiv.classList.add('hamburgerSubMenu__wrapper--isOpen'); 197 } 198 wrapperMenu.classList.add('hamburgerMenu__body--isOpen'); 199 var button = clickMenulists[1].querySelector('.hamburgerMenu__link'); 200 if (button && button.tagName === 'BUTTON') { 201 button.setAttribute('aria-selected', 'true'); 202 button.setAttribute('aria-expanded', 'true'); 203 } 204 }; 205 206 var hamburgerMenuOpenCat3 = function () { 207 clickMenulists[2].classList.add('hamburgerMenu__listItem--active'); 208 contentMenulists[2].classList.add('hamburgerSubMenu__wrapper--isOpen'); 209 var panelDiv = contentMenulists[2].closest('[role="tabpanel"]'); 210 if (panelDiv) { 211 panelDiv.classList.add('hamburgerSubMenu__wrapper--isOpen'); 212 } 213 wrapperMenu.classList.add('hamburgerMenu__body--isOpen'); 214 var button = clickMenulists[2].querySelector('.hamburgerMenu__link'); 215 if (button && button.tagName === 'BUTTON') { 216 button.setAttribute('aria-selected', 'true'); 217 button.setAttribute('aria-expanded', 'true'); 218 } 219 }; 220 //伿¥ã»IR 221 var hamburgerMenuOpenCat5 = function () { 222 var targetIndex = 4; 223 224 if (!contentMenulists[targetIndex]) { 225 return; 226 } 227 228 clickMenulists[5].classList.add('hamburgerMenu__listItem--active'); 229 contentMenulists[targetIndex].classList.add('hamburgerSubMenu__wrapper--isOpen'); 230 contentMenulists[targetIndex].setAttribute('id', 'hamburgerSubMenuOpen'); 231 var panelDiv = contentMenulists[targetIndex].closest('[role="tabpanel"]'); 232 if (panelDiv) { 233 panelDiv.classList.add('hamburgerSubMenu__wrapper--isOpen'); 234 } 235 wrapperMenu.classList.add('hamburgerMenu__body--isOpen'); 236 var button = clickMenulists[5].querySelector('.hamburgerMenu__link'); 237 if (button && button.tagName === 'BUTTON') { 238 button.setAttribute('aria-selected', 'true'); 239 button.setAttribute('aria-expanded', 'true'); 240 } 241 }; 242 243 //ãã³ãã¼ã¬ã¼ã¡ãã¥ã¼å¯¾è±¡ã®ã¢ã³ã¼ãã£ãªã³ãéã 244 var accordionMenuOpen1 = function () { 245 var accordionElement = document 246 .getElementById('hamburgerSubMenuOpen') 247 .getElementsByClassName('hamburgerSubMenu__accordionMenu'); 248 accordionElement[0].classList.add('hamburgerSubMenu__item--autoHeight'); 249 accordionElement[0].firstElementChild.classList.add( 250 'accordionMenu--isActive' 251 ); 252 accordionElement[0].lastElementChild.classList.add( 253 'accordionMenu__list--isOpen' 254 ); 255 }; 256 var accordionMenuOpen2 = function () { 257 var accordionElement = document 258 .getElementById('hamburgerSubMenuOpen') 259 .getElementsByClassName('hamburgerSubMenu__accordionMenu'); 260 accordionElement[1].classList.add('hamburgerSubMenu__item--autoHeight'); 261 accordionElement[1].firstElementChild.classList.add( 262 'accordionMenu--isActive' 263 ); 264 accordionElement[1].lastElementChild.classList.add( 265 'accordionMenu__list--isOpen' 266 ); 267 }; 268 var accordionMenuOpen3 = function () { 269 var accordionElement = document 270 .getElementById('hamburgerSubMenuOpen') 271 .getElementsByClassName('hamburgerSubMenu__accordionMenu'); 272 accordionElement[2].classList.add('hamburgerSubMenu__item--autoHeight'); 273 accordionElement[2].firstElementChild.classList.add( 274 'accordionMenu--isActive' 275 ); 276 accordionElement[2].lastElementChild.classList.add( 277 'accordionMenu__list--isOpen' 278 ); 279 }; 280 281 if (header != null) { 282 // ãã£ã¬ã¯ãã«å¿ãã¦ã®å¦ç 283 switch (firstLayer) { 284 case 'ie': 285 pElement.textContent = '注æä½å® '; 286 pElement.href = '/ie/'; 287 titleElement.appendChild(pElement); 288 megaMenuDisplay(); 289 hamburgerMenuOpenCat1(); 290 break; 291 292 case 'bunjyo': 293 pElement.textContent = 'åè²ä½å® ã»åå°'; 294 pElement.href = '/bunjyo/'; 295 titleElement.appendChild(pElement); 296 hamburgerMenuOpenCat1(); 297 // ã¡ã¬ã¡ãã¥ã¼è¡¨ç¤º 298 megaMenuBunjyo.style.display = 'block'; 299 break; 300
301 case 'tochikatsu': 302 pElement.textContent = 'è³è²¸ä½å® ã»åå°æ´»ç¨'; 303 pElement.href = '/tochikatsu/'; 304 titleElement.appendChild(pElement); 305 megaMenuDisplay(); 306 hamburgerMenuOpenCat1(); 307 break; 308 309 case 'jigyou_kenchiku': 310 pElement.textContent = 'äºæ¥ç¨å»ºç¯'; 311 pElement.href = '/jigyou_kenchiku/'; 312 titleElement.appendChild(pElement); 313 megaMenuDisplay(); 314 hamburgerMenuOpenCat1(); 315 break; 316 317 case 'renovation': 318 pElement.textContent = 'ãªããã¼ã·ã§ã³æ¸ãã³ã·ã§ã³'; 319 pElement.href = '/renovation/'; 320 titleElement.appendChild(pElement); 321 megaMenuDisplay(); 322 hamburgerMenuOpenCat1(); 323 break; 324 325 case 'mocca': 326 pElement.textContent = 'ä¸å¤§è¦æ¨¡æ¨é 建ç¯ï¼MOCCAï¼'; 327 pElement.href = '/mocca/'; 328 titleElement.appendChild(pElement); 329 megaMenuDisplay(); 330 hamburgerMenuOpenCat2(); 331 break; 332 333 case 'treecycle': 334 pElement.textContent = '森æã»æ¨æã»åã¨ã'; 335 pElement.href = '/treecycle/'; 336 titleElement.appendChild(pElement); 337 hamburgerMenuOpenCat3(); 338 // ã¡ã¬ã¡ãã¥ã¼è¡¨ç¤º 339 megaMenuTreecycle.style.display = 'block'; 340 break; 341 342 case 'information': 343 pElement.textContent = '伿¥ã»IRã»ESGã»æ¡ç¨'; 344 pElement.href = '/information/'; 345 titleElement.appendChild(pElement); 346 // ã¡ã¬ã¡ãã¥ã¼è¡¨ç¤º 347 megaMenuInformation.style.display = 'block'; 348 hamburgerMenuOpenCat5(); 349 // ã¾ãªã³ã®æ£®ã¡ã¬ã¡ãã¥ã¼é表示 350 if (secondLayer === 'manabi') { 351 megaMenuDisplay(); 352 } 353 // 第äºå層ãã³ãã¼ã¬ã¼ã¡ãã¥ã¼ã¢ã³ã¼ãã£ãªã³è¡¨ç¤ºå¦ç 354 switch (secondLayer) { 355 case 'company': 356 accordionMenuOpen1(); 357 break; 358 case 'ir': 359 accordionMenuOpen2(); 360 break; 361 case 'sustainability': 362 accordionMenuOpen3(); 363 break; 364 default: 365 break; 366 } 367 break; 368 369 case 'cm': 370 megaMenuDisplay(); 371 hamburgerMenuOpenCat5(); 372 break; 373 374 case 'contact': 375 megaMenuDisplay(); 376 break; 377 378 case 'catalog': 379 megaMenuDisplay(); 380 break; 381 382 case 'sitemap': 383 megaMenuDisplay(); 384 break; 385 386 case 'terms': 387 megaMenuDisplay(); 388 break; 389 390 case 'hogo': 391 megaMenuDisplay(); 392 break; 393 394 case 'socialmediapolicy': 395 megaMenuDisplay(); 396 break; 397 398 case 'search.html': 399 megaMenuDisplay(); 400 break; 401 402 default: 403 // ã¡ã¬ã¡ãã¥ã¼è¡¨ç¤º 404 megaMenuNormal.style.display = 'block'; 405 break; 406 } 407 } 408 } 409 // ãããã¼ã¹ã¯ãã¼ã«åºå® 410 function headerScrollFixed() { 411 var fixHeader = function (position, lastPosition) { 412 var header = document.getElementById('js-header'); 413 var headerNav = document.getElementsByClassName('headerNav__listItem'); 414 var headerOverlay = document.getElementById('js-headerOverlay'); 415 if (header != null) { 416 var headerHeight = header.clientHeight; 417 if (position > headerHeight && position > lastPosition) { 418 header.classList.add('header--unpinned'); 419 Array.prototype.forEach.call(headerNav, function (element) { 420 if (element.classList.contains('headerNav__listItem--isOpen')) { 421 element.classList.remove('headerNav__listItem--isOpen'); 422 headerOverlay.classList.remove('headerOverlay--isHover'); 423 } 424 }); 425 } 426 if (position < headerHeight || position < lastPosition) { 427 header.classList.remove('header--unpinned'); 428 } 429 } 430 }; 431 432 var lastPosition = 0; 433 window.addEventListener('scroll', function () { 434 var position = window.scrollY || window.pageYOffset; 435 fixHeader(position, lastPosition); 436 lastPosition = position; 437 }); 438 } 439 440 // ããã¿ã¼ã¹ã¯ãã¼ã«ã¯ã©ã¹è¿½å 441 function footerScrollAddClass() { 442 var drawBorder = function (scrollPos) { 443 var footer = document.getElementById('js-footer'); 444 var footerTop = footer.offsetTop + 300; 445 if (footerTop < scrollPos) { 446 footer.classList.add('footer--isScroll'); 447 } 448 }; 449 450 window.addEventListener('scroll', function () { 451 var scrollTop = 452 document.documentElement.scrollTop || document.body.scrollTop; 453 var scrollPos = scrollTop + document.documentElement.clientHeight; 454 drawBorder(scrollPos); 455 }); 456 } 457 458 function toggleHamburgerTabIndex(isOpen) { 459 var hamburgerMenu = document.getElementById('js-openMenu');
460 var overlay = document.getElementById('js-overlay'); 461 462 if (!hamburgerMenu) return; 463 if (overlay) { 464 overlay.setAttribute('tabindex', '-1'); 465 } 466 var subMenus = hamburgerMenu.querySelectorAll('.hamburgerSubMenu'); 467 Array.prototype.forEach.call(subMenus, function(subMenu) { 468 subMenu.setAttribute('tabindex', '-1'); 469 }); 470 var focusableElements = hamburgerMenu.querySelectorAll( 471 'a, button, input, select, textarea, [tabindex]:not([tabindex="-1"])' 472 ); 473 Array.prototype.forEach.call(focusableElements, function(element) { 474 if (isOpen) { 475 element.setAttribute('tabindex', '0'); 476 } else { 477 element.setAttribute('tabindex', '-1'); 478 } 479 }); 480 } 481 // ãã³ãã¼ã¬ã¼ã¡ãã¥ã¼éé 482 function hamburgerClickIcon() { 483 var targetMenu = document.getElementById('js-openMenu'); 484 var trigger = document.querySelector('.js-hamburgerOpen'); 485 var overlay = document.getElementById('js-overlay'); 486 var body = document.body; 487 var scrollPos = 0; 488 489 if (targetMenu != null && trigger != null) { 490 // åæç¶æ : ã¡ãã¥ã¼ãéãã¦ããã®ã§ã¿ããã©ã¼ã«ã¹ä¸å¯ 491 toggleHamburgerTabIndex(false); 492 493 var closeMenu = function () { 494 var winWidth = window.innerWidth; 495 targetMenu.classList.remove('hamburgerMenu--isActive'); 496 body.classList.remove('isNavOpened'); 497 if (winWidth <= 767) { 498 body.style.removeProperty('top'); 499 } 500 body.style.removeProperty('display'); 501 trigger.style.display = 'block'; 502 window.scrollTo(0, scrollPos); 503 trigger.setAttribute('aria-expanded', 'false'); 504 505 // ã¡ãã¥ã¼ãéãããã¿ããã©ã¼ã«ã¹ä¸å¯ã« 506 toggleHamburgerTabIndex(false); 507 }; 508 509 trigger.addEventListener('click', function () { 510 var winWidth = window.innerWidth; 511 if (targetMenu.classList.contains('hamburgerMenu--isActive')) { 512 closeMenu(); 513 } else { 514 scrollPos = document.documentElement.scrollTop || document.body.scrollTop; 515 targetMenu.classList.add('hamburgerMenu--isActive'); 516 body.classList.add('isNavOpened'); 517 targetMenu.querySelector('.hamburgerMenu__wrapper').scrollTop = 0; 518 if (winWidth <= 767) { 519 body.style.top = -scrollPos + 'px'; 520 } 521 trigger.setAttribute('aria-expanded', 'true'); 522 trigger.style.display = 'block'; 523 524 // ã¡ãã¥ã¼ãéãããã¿ããã©ã¼ã«ã¹å¯è½ã« 525 toggleHamburgerTabIndex(true); 526 } 527 }); 528 529 trigger.addEventListener('keydown', function(e) { 530 if (e.key === 'Enter' || e.key === ' ') { 531 e.preventDefault(); 532 trigger.click(); 533 } 534 }); 535 536 overlay.addEventListener('click', function () { 537 closeMenu(); 538 }); 539 540 targetMenu.addEventListener('scroll', function () { 541 var scrollY = targetMenu.scrollTop; 542 if (targetMenu.classList.contains('hamburgerMenu--isActive')) { 543 if (scrollY > 0) { 544 trigger.style.display = 'none'; 545 } else { 546 trigger.style.display = 'block'; 547 } 548 } 549 }); 550 } 551 } 552 553 // ãã³ãã¼ã¬ã¼ã¡ãã¥ã¼è¡¨ç¤º 554 function hamburgerShowMenu() { 555 var lists = []; 556 var wrapperMenu = document.getElementById('js-hamburgerMenu'); 557 var clickMenu = document.querySelectorAll('.hamburgerMenu__listItem'); 558 var contentMenu = document.querySelectorAll('.hamburgerSubMenu__wrapper'); 559 560 for (var i = 0; i < contentMenu.length; i++) { 561 lists.push(contentMenu[i]); 562 } 563 564 Array.prototype.forEach.call(clickMenu, function (elm, index) { 565 if (!elm.classList.contains('hamburgerMenu__listItem--hasLink')) { 566 var button = elm.querySelector('.hamburgerMenu__link'); 567 if (button && button.tagName === 'BUTTON') { 568 button.setAttribute('aria-expanded', 'false'); 569 button.setAttribute('aria-controls', 'hamburger-panel-' + index); 570 } 571 } 572 }); 573 574 var resetClass = function () { 575 Array.prototype.forEach.call(lists, function (element) { 576 element.classList.remove('hamburgerSubMenu__wrapper--isOpen'); 577 element.removeAttribute('id'); 578 // 親divã®ã¯ã©ã¹ãåé¤ 579 var panelDiv = element.closest('[role="tabpanel"]'); 580 if (panelDiv) { 581 panelDiv.classList.remove('hamburgerSubMenu__wrapper--isOpen'); 582 } 583 }); 584 Array.prototype.forEach.call(clickMenu, function (element) { 585 element.classList.remove('hamburgerMenu__listItem--active'); 586 var button = element.querySelector('.hamburgerMenu__link'); 587 if (button && button.tagName === 'BUTTON') { 588 button.setAttribute('aria-expanded', 'false'); 589 button.setAttribute('aria-selected', 'false'); 590 } 591 }); 592 }; 593 594 Array.prototype.forEach.call(clickMenu, function (elm, index) { 595 elm.addEventListener('click', function () { 596 if (this.classList.contains('hamburgerMenu__listItem--hasLink')) { 597 return false;
598 } 599 600 // ãªã»ãã 601 resetClass(); 602 603 // ã¢ã¯ãã£ãå 604 this.classList.add('hamburgerMenu__listItem--active'); 605 var button = this.querySelector('.hamburgerMenu__link'); 606 if (button && button.tagName === 'BUTTON') { 607 button.setAttribute('aria-expanded', 'true'); 608 button.setAttribute('aria-selected', 'true'); 609 } 610 var panelId = button ? button.getAttribute('aria-controls') : null; 611 var targetPanel = panelId ? document.getElementById(panelId) : null; 612 if (targetPanel) { 613 var targetWrapper = targetPanel.querySelector('.hamburgerSubMenu__wrapper'); 614 615 if (targetWrapper) { 616 targetPanel.classList.add('hamburgerSubMenu__wrapper--isOpen'); 617 targetWrapper.classList.add('hamburgerSubMenu__wrapper--isOpen'); 618 619 wrapperMenu.classList.add('hamburgerMenu__body--isOpen'); 620 setTimeout(function() { 621 var firstFocusable = targetWrapper.querySelector('a, button:not([tabindex="-1"]), input, select, textarea, [tabindex]:not([tabindex="-1"])'); 622 if (firstFocusable) { 623 firstFocusable.focus(); 624 } 625 }, 50); 626 } 627 } 628 }); 629 630 // ãã¼ãã¼ããµãã¼ã 631 var button = elm.querySelector('.hamburgerMenu__link'); 632 if (button && button.tagName === 'BUTTON') { 633 button.addEventListener('keydown', function(e) { 634 if (e.key === 'Enter' || e.key === ' ') { 635 e.preventDefault(); 636 elm.click(); 637 } else if (e.key === 'ArrowDown' || e.key === 'ArrowRight') { 638 e.preventDefault(); 639 var allTabs = Array.prototype.filter.call(clickMenu, function(item) { 640 return !item.classList.contains('hamburgerMenu__listItem--hasLink'); 641 }); 642 var currentIndex = allTabs.indexOf(elm); 643 var nextIndex = (currentIndex + 1) % allTabs.length; 644 var nextButton = allTabs[nextIndex].querySelector('.hamburgerMenu__link'); 645 if (nextButton) { 646 nextButton.focus(); 647 allTabs[nextIndex].click(); 648 } 649 } else if (e.key === 'ArrowUp' || e.key === 'ArrowLeft') { 650 e.preventDefault(); 651 var allTabs = Array.prototype.filter.call(clickMenu, function(item) { 652 return !item.classList.contains('hamburgerMenu__listItem--hasLink'); 653 }); 654 var currentIndex = allTabs.indexOf(elm); 655 var prevIndex = (currentIndex - 1 + allTabs.length) % allTabs.length; 656 var prevButton = allTabs[prevIndex].querySelector('.hamburgerMenu__link'); 657 if (prevButton) { 658 prevButton.focus(); 659 allTabs[prevIndex].click(); 660 } 661 } 662 }); 663 } 664 }); 665 } 666 667 // ãã³ãã¼ã¬ã¼ã¡ãã¥ã¼ã¢ã³ã¼ãã£ãªã³ 668 function hamburgerAccordion() { 669 var accordionTitle = document.querySelectorAll('.js-accordion-title'); 670 671 for (var i = 0; i < accordionTitle.length; i++) { 672 accordionTitle[i].setAttribute('aria-expanded', 'false'); 673 accordionTitle[i].addEventListener('click', function () { 674 var content = this.nextElementSibling; 675 var parent = this.parentNode; 676 var isExpanded = this.getAttribute('aria-expanded') === 'true'; 677 this.setAttribute('aria-expanded', (!isExpanded).toString()); 678 this.classList.toggle('accordionMenu--isActive'); 679 content.classList.toggle('accordionMenu__list--isOpen'); 680 parent.classList.toggle('hamburgerSubMenu__item--autoHeight'); 681 }); 682 683 // ãã¼ãã¼ããµãã¼ã 684 accordionTitle[i].addEventListener('keydown', function(e) { 685 if (e.key === 'Enter' || e.key === ' ') { 686 e.preventDefault(); 687 this.click(); 688 } 689 }); 690 } 691 } 692 693 // ã¡ã¬ããããã¡ãã¥ã¼ 694 function dropdownShowMenu() { 695 var headerOverlay = document.getElementById('js-headerOverlay'); 696 var dropdownItem = document.querySelectorAll('.headerNav__listItem'); 697 var lists = []; 698 for (var i = 0; i < dropdownItem.length; i++) { 699 lists.push(dropdownItem[i]); 700 } 701 for (var j = 0; j < lists.length; j++) { 702 (function (i) { 703 var button = lists[i].querySelector('.headerNav__title'); 704 var megaMenu = lists[i].querySelector('.headerMegaNav'); 705 if (button && button.tagName === 'BUTTON' && megaMenu) { 706 button.setAttribute('aria-expanded', 'false'); 707 button.setAttribute('aria-controls', 'mega-menu-' + i); 708 megaMenu.setAttribute('id', 'mega-menu-' + i); 709 megaMenu.setAttribute('aria-hidden', 'true'); 710 } 711 lists[i].addEventListener('mouseenter', function () { 712 headerOverlay.classList.add('headerOverlay--isHover'); 713 lists[i].classList.add('headerNav__listItem--isOpen'); 714 if (lists[i].classList.contains('headerNav__listItem--hasLink')) { 715 headerOverlay.classList.remove('headerOverlay--isHover'); 716 } 717 }); 718 lists[i].addEventListener('mouseleave', function () { 719 headerOverlay.classList.remove('headerOverlay--isHover'); 720 lists[i].classList.remove('headerNav__listItem--isOpen'); 721 }); 722 if (button && button.tagName === 'BUTTON') { 723 button.addEventListener('click', function() { 724 toggleMegaMenu(lists[i]); 725 }); 726 727 button.addEventListener('keydown', function(e) { 728 if (e.key === 'Enter' || e.key === ' ') { 729 e.preventDefault(); 730 toggleMegaMenu(lists[i]); 731 } else if (e.key === 'Escape') { 732 closeMegaMenu(lists[i]); 733 } 734 }); 735 } 736 })(j); 737 } 738 function openMegaMenu(item) { 739 headerOverlay.classList.add('headerOverlay--isHover'); 740 item.classList.add('headerNav__listItem--isOpen'); 741 742 var button = item.querySelector('.headerNav__title'); 743 var megaMenu = item.querySelector('.headerMegaNav'); 744 745 if (button && button.tagName === 'BUTTON') { 746 button.setAttribute('aria-expanded', 'true'); 747 } 748 if (megaMenu) { 749 megaMenu.setAttribute('aria-hidden', 'false'); 750 751 // ã¡ã¬ã¡ãã¥ã¼ãéãããããµãã¡ãã¥ã¼å ã®è¦ç´ ããã©ã¼ã«ã¹å¯è½ã«ãã 752 var megaFocusable = megaMenu.querySelectorAll('a, button'); 753 Array.prototype.forEach.call(megaFocusable, function(el) { 754 el.setAttribute('tabindex', '0'); 755 }); 756 } 757 758 if (item.classList.contains('headerNav__listItem--hasLink')) { 759 headerOverlay.classList.remove('headerOverlay--isHover'); 760 } 761 } 762 763 function closeMegaMenu(item) { 764 headerOverlay.classList.remove('headerOverlay--isHover'); 765 item.classList.remove('headerNav__listItem--isOpen'); 766 767 var button = item.querySelector('.headerNav__title'); 768 var megaMenu = item.querySelector('.headerMegaNav'); 769 770 if (button && button.tagName === 'BUTTON') { 771 button.setAttribute('aria-expanded', 'false'); 772 } 773 if (megaMenu) { 774 megaMenu.setAttribute('aria-hidden', 'true'); 775 776 // ã¡ã¬ã¡ãã¥ã¼ãéãããããµãã¡ãã¥ã¼å ã®è¦ç´ ããã©ã¼ã«ã¹ä¸å¯ã«ãã 777 var megaFocusable = megaMenu.querySelectorAll('a, button'); 778 Array.prototype.forEach.call(megaFocusable, function(el) { 779 el.setAttribute('tabindex', '-1'); 780 }); 781 } 782 } 783 784 function toggleMegaMenu(item) { 785 var isOpen = item.classList.contains('headerNav__listItem--isOpen'); 786 if (isOpen) { 787 closeMegaMenu(item); 788 } else { 789 // ä»ã®ã¡ãã¥ã¼ãéãã
790 lists.forEach(function(otherItem) { 791 if (otherItem !== item) { 792 closeMegaMenu(otherItem); 793 } 794 }); 795 openMegaMenu(item); 796 } 797 } 798 } 799 800 // ããã¿ã¼SPã¡ãã¥ã¼è¡¨ç¤º 801function footerSpShowMenu() { 802 var lists = []; 803 var wrapperMenu = document.getElementById('js-footerMenu'); 804 var clickMenu = document.querySelectorAll('.footerSitemapSpHedging__item'); 805 var contentMenu = document.querySelectorAll('.footerSitemap__listItem'); 806 807 for (var i = 0; i < contentMenu.length; i++) { 808 lists.push(contentMenu[i]); 809 } 810 811 Array.prototype.forEach.call(clickMenu, function (elm, index) { 812 if (!elm.classList.contains('footerSitemapSpHedging__item--hasLink')) { 813 var button = elm.querySelector('.footerSitemapSpHedging__text'); 814 if (button && button.tagName === 'BUTTON') { 815 button.setAttribute('aria-expanded', 'false'); 816 button.setAttribute('aria-controls', 'footer-panel-' + index); 817 818 if (lists[index]) { 819 lists[index].setAttribute('id', 'footer-panel-' + index); 820 } 821 } 822 } 823 }); 824 825 Array.prototype.forEach.call(lists, function(listItem) { 826 var focusableElements = listItem.querySelectorAll('a, button'); 827 Array.prototype.forEach.call(focusableElements, function(el) { 828 el.setAttribute('tabindex', '-1'); 829 }); 830 }); 831 832 var resetClass = function () { 833 Array.prototype.forEach.call(lists, function (element) { 834 element.classList.remove('footerSitemap__listItem--isOpen'); 835 836 // â 追å : ã«ãã´ãªã¼å ã®ã¢ã³ã¼ãã£ãªã³ããªã»ãã 837 var accordions = element.querySelectorAll('.js-footerSpAccordion'); 838 Array.prototype.forEach.call(accordions, function(accordion) { 839 accordion.setAttribute('aria-expanded', 'false'); 840 accordion.classList.remove('footerSpAccordionMenu--isActive'); 841 842 var accordionList = accordion.nextElementSibling; 843 if (accordionList && accordionList.classList.contains('footerSpAccordionMenu__list')) { 844 accordionList.classList.remove('footerSpAccordionMenu__list--isOpen'); 845 } 846 847 var parent = accordion.parentNode; 848 if (parent) { 849 parent.classList.remove('footerSpAccordionMenu__item--autoHeight'); 850 } 851 }); 852 }); 853 854 Array.prototype.forEach.call(clickMenu, function (element) { 855 element.classList.remove('footerSitemapSpHedging__item--active'); 856 var button = element.querySelector('.footerSitemapSpHedging__text'); 857 if (button && button.tagName === 'BUTTON') { 858 button.setAttribute('aria-expanded', 'false'); 859 } 860 }); 861 }; 862 863 Array.prototype.forEach.call(clickMenu, function (elm, index) { 864 elm.addEventListener('click', function () { 865 if (this.classList.contains('footerSitemapSpHedging__item--hasLink')) { 866 return false; 867 } 868 869 resetClass(); 870 Array.prototype.forEach.call(lists, function(listItem) { 871 var focusableElements = listItem.querySelectorAll('a, button'); 872 Array.prototype.forEach.call(focusableElements, function(el) { 873 el.setAttribute('tabindex', '-1'); 874 }); 875 }); 876 877 this.classList.add('footerSitemapSpHedging__item--active'); 878 var button = this.querySelector('.footerSitemapSpHedging__text'); 879 if (button && button.tagName === 'BUTTON') { 880 button.setAttribute('aria-expanded', 'true'); 881 } 882 lists[index].classList.add('footerSitemap__listItem--isOpen'); 883 wrapperMenu.classList.add('footerSitemap--isOpen'); 884 885 // éããã«ãã´ãªã¼ã®ã¿ãã©ã¼ã«ã¹å¯è½ã« 886 var openedCategory = lists[index]; 887 888 // ã«ãã´ãªã¼ç´ä¸ã®è¦ç´ (ã¢ã³ã¼ãã£ãªã³ãã¿ã³ãé常ã®ãªã³ã¯ãªã©)ããã©ã¼ã«ã¹å¯è½ã« 889 var directFocusable = openedCategory.querySelectorAll('.footerSubCategory__link, .js-footerSpAccordion, .footerSubCategoryRelationMenu__link'); // â 追å 890 Array.prototype.forEach.call(directFocusable, function(el) { 891 el.removeAttribute('tabindex'); 892 }); 893 894 // éãã¦ããã¢ã³ã¼ãã£ãªã³å ã®ãªã³ã¯ã¯ãã©ã¼ã«ã¹ä¸å¯ã®ã¾ã¾ 895 var closedAccordions = openedCategory.querySelectorAll('.footerSpAccordionMenu__list:not(.footerSpAccordionMenu__list--isOpen)'); 896 Array.prototype.forEach.call(closedAccordions, function(accordion) { 897 var links = accordion.querySelectorAll('a, button'); 898 Array.prototype.forEach.call(links, function(link) { 899 link.setAttribute('tabindex', '-1'); 900 }); 901 }); 902 }); 903 904 // ãã¼ãã¼ããµãã¼ã 905 var button = elm.querySelector('.footerSitemapSpHedging__text'); 906 if (button && button.tagName === 'BUTTON') { 907 button.addEventListener('keydown', function(e) { 908 if (e.key === 'Enter' || e.key === ' ') { 909 e.preventDefault(); 910 elm.click(); 911 } 912 }); 913 } 914 }); 915} 916 917 // ããã¿ã¼SPã¡ãã¥ã¼ã¢ã³ã¼ãã£ãªã³ 918 function footerAccordion() { 919 var accordionTitle = document.querySelectorAll('.js-footerSpAccordion'); 920 921 // åæç¶æ ã§tabindexãè¨å® 922 updateFooterAccordionTabIndex(); 923 924 for (var i = 0; i < accordionTitle.length; i++) { 925 accordionTitle[i].setAttribute('aria-expanded', 'false'); 926 if (accordionTitle[i].tagName === 'BUTTON') { 927 var content = accordionTitle[i].nextElementSibling; 928 if (content) { 929 var contentId = 'footer-accordion-' + i; 930 content.setAttribute('id', contentId); 931 accordionTitle[i].setAttribute('aria-controls', contentId); 932 } 933 } 934 935 accordionTitle[i].addEventListener('click', function () { 936 var content = this.nextElementSibling; 937 var parent = this.parentNode; 938 if (this.tagName === 'BUTTON') { 939 var isExpanded = this.getAttribute('aria-expanded') === 'true'; 940 this.setAttribute('aria-expanded', (!isExpanded).toString()); 941 } 942 this.classList.toggle('footerSpAccordionMenu--isActive'); 943 content.classList.toggle('footerSpAccordionMenu__list--isOpen'); // â ãããä¿®æ£ 944 parent.classList.toggle('footerSpAccordionMenu__item--autoHeight'); // â ãããä¿®æ£ 945 946 // tabindexãæ´æ° 947 setTimeout(updateFooterAccordionTabIndex, 50); 948 949 return false;
950 }); 951 952 // ãã¼ãã¼ããµãã¼ã 953 if (accordionTitle[i].tagName === 'BUTTON') { 954 accordionTitle[i].addEventListener('keydown', function(e) { 955 if (e.key === 'Enter' || e.key === ' ') { 956 e.preventDefault(); 957 this.click(); 958 } 959 }); 960 } 961 } 962 } 963 // ãããã¼paddingè¨å® 964 function HeaderPadTop() { 965 var globalHeaderPadTop = document.getElementById('js-globalHeaderPadTop'); 966 var megaMenu = document.getElementById('js-megaMenu'); 967 if (megaMenu != null) { 968 if (megaMenu.classList.contains('megaMenuHide')) { 969 globalHeaderPadTop.style.paddingTop = '82px'; 970 } 971 } 972 } 973 974 // ããã¿ã¼ã¢ã³ã¼ãã£ãªã³ã®tabindexå¶å¾¡ 975 function updateFooterAccordionTabIndex() { 976 var accordionLists = document.querySelectorAll('.footerSpAccordionMenu__list'); 977 978 Array.prototype.forEach.call(accordionLists, function(list) { 979 var isOpen = list.classList.contains('footerSpAccordionMenu__list--isOpen'); 980 var focusableElements = list.querySelectorAll('a, button'); 981 982 Array.prototype.forEach.call(focusableElements, function(element) { 983 if (isOpen) { 984 // éãã¦ããæã¯ãã©ã¼ã«ã¹å¯è½ã« 985 element.removeAttribute('tabindex'); 986 element.removeAttribute('data-original-tabindex'); 987 } else { 988 // éãã¦ããæã¯ãã©ã¼ã«ã¹ä¸å¯ã« 989 element.setAttribute('tabindex', '-1'); 990 element.setAttribute('data-original-tabindex', '-1'); 991 } 992 }); 993 }); 994 } 995 996 // ã«ã¹ã¿ã ã¿ãããã²ã¼ã·ã§ã³ 997 function customTabNavigation() { 998 var hamburgerMenu = document.getElementById('js-openMenu'); 999 if (!hamburgerMenu) return; 1000 1001 // ã¡ãã¥ã¼ãéãã¦ããæã®ã¿åä½ 1002 hamburgerMenu.addEventListener('keydown', function(e) { 1003 if (e.key !== 'Tab') return; 1004 1005 var activeElement = document.activeElement; 1006 1007 if (e.shiftKey) { 1008 // Shift+Tab(éæ¹å) 1009 var nextElement = getPreviousLogicalElement(activeElement); 1010 if (nextElement) { 1011 e.preventDefault(); 1012 nextElement.focus(); 1013 } 1014 // nextElementãnullã®å ´åã¯ããã©ã«ãåä½ã«ä»»ãããã©ã¼ã«ã¹ãã¡ãã¥ã¼å¤ã«åºãããããã«ãã 1015 } else { 1016 // Tab(é æ¹å) - æ¢åã®ãã¸ãã¯ãç¶æ 1017 var allFocusableElements = getAllFocusableElements(); 1018 var currentIndex = allFocusableElements.indexOf(activeElement); 1019 if (currentIndex === -1) return; 1020 1021 var nextElement = getNextLogicalElement(activeElement, allFocusableElements, currentIndex); 1022 1023 if (nextElement && nextElement !== getDefaultNextElement(activeElement, allFocusableElements, currentIndex, e.shiftKey)) { 1024 e.preventDefault(); 1025 nextElement.focus(); 1026 } 1027 } 1028 }); 1029 1030 // ãã¹ã¦ã®ãã©ã¼ã«ã¹å¯è½ãªè¦ç´ ãåå¾ 1031 function getAllFocusableElements() { 1032 var elements = hamburgerMenu.querySelectorAll( 1033 'button:not([tabindex="-1"]), a, input, select, textarea, [tabindex]:not([tabindex="-1"])' 1034 ); 1035 return Array.prototype.filter.call(elements, function(el) { 1036 return el.offsetWidth > 0 && el.offsetHeight > 0; 1037 }); 1038 } 1039 1040 // ããã©ã«ãã®æ¬¡ã®è¦ç´ ãåå¾ 1041 function getDefaultNextElement(currentElement, allElements, currentIndex, isReverse) { 1042 if (isReverse) { 1043 return currentIndex > 0 ? allElements[currentIndex - 1] : null; 1044 } else { 1045 return currentIndex < allElements.length - 1 ? allElements[currentIndex + 1] : null; 1046 } 1047 } 1048 1049 // â â â é æ¹å: è«ççãªæ¬¡ã®è¦ç´ ãåå¾ (夿´ãªã) â â â 1050 function getNextLogicalElement(currentElement, allElements, currentIndex) { 1051 // ã¡ã¤ã³ã¡ãã¥ã¼ãã¿ã³ã®å ´å 1052 if (currentElement.classList && currentElement.classList.contains('hamburgerMenu__link') && currentElement.tagName === 'BUTTON') { 1053 var parentMainItem = currentElement.closest('.hamburgerMenu__listItem'); 1054 1055 // aria-controlsããããã«IDãåå¾ 1056 var panelId = currentElement.getAttribute('aria-controls'); 1057 var correspondingSubmenu = null; 1058 1059 if (panelId) { 1060 var panel = document.getElementById(panelId); 1061 if (panel) { 1062 correspondingSubmenu = panel.querySelector('.hamburgerSubMenu__wrapper'); 1063 } 1064 } 1065 1066 // ãµãã¡ãã¥ã¼ãéãã¦ãããå¤å® 1067 var isExpanded = currentElement.getAttribute('aria-expanded') === 'true'; 1068 var hasOpenClass = correspondingSubmenu && correspondingSubmenu.classList.contains('hamburgerSubMenu__wrapper--isOpen'); 1069 1070 // ãµãã¡ãã¥ã¼ãéãã¦ããå ´å 1071 if ((isExpanded || hasOpenClass) && correspondingSubmenu) { 1072 var submenuElements = Array.prototype.filter.call( 1073 correspondingSubmenu.querySelectorAll('button:not([tabindex="-1"]), a, input, select, textarea, [tabindex]:not
1073([tabindex="-1"])'), 1074 function(el) { return el.offsetWidth > 0 && el.offsetHeight > 0; } 1075 ); 1076 if (submenuElements.length > 0) { 1077 return submenuElements[0]; 1078 } 1079 } 1080 1081 // ãµãã¡ãã¥ã¼ãéãã¦ããªãå ´å 1082 var nextMainButton = getNextMainMenuButton(parentMainItem); 1083 if (nextMainButton) { 1084 return nextMainButton; 1085 } else { 1086 var footerButtons = document.querySelectorAll('.footButton__link'); 1087 if (footerButtons.length > 0) { 1088 return footerButtons[0]; 1089 } 1090 } 1091 } 1092 1093 // ãµãã¡ãã¥ã¼å ã®è¦ç´ ã®å ´å 1094 var parentSubmenu = currentElement.closest('.hamburgerSubMenu__wrapper'); 1095 1096 if (parentSubmenu && parentSubmenu.classList.contains('hamburgerSubMenu__wrapper--isOpen')) { 1097 var submenuElements = Array.prototype.filter.call( 1098 parentSubmenu.querySelectorAll('button:not([tabindex="-1"]), a, input, select, textarea, [tabindex]:not([tabindex="-1"])'), 1099 function(el) { return el.offsetWidth > 0 && el.offsetHeight > 0; } 1100 ); 1101 var submenuIndex = submenuElements.indexOf(currentElement); 1102 1103 // ãµãã¡ãã¥ã¼ã®æå¾ã®è¦ç´ ã®å ´å 1104 if (submenuIndex === submenuElements.length - 1) { 1105 var panel = parentSubmenu.closest('[role="tabpanel"]'); 1106 if (panel) { 1107 var buttonId = panel.getAttribute('aria-labelledby'); 1108 if (buttonId) { 1109 var mainButton = document.getElementById(buttonId); 1110 if (mainButton) { 1111 var currentMainItem = mainButton.closest('.hamburgerMenu__listItem'); 1112 var nextMainButton = getNextMainMenuButton(currentMainItem); 1113 return nextMainButton; 1114 } 1115 } 1116 } 1117 } 1118 } 1119 1120 return null; 1121 } 1122 1123 // â â â éæ¹å: è«ççãªåã®è¦ç´ ãåå¾ (æ°ããå®è£ ) â â â 1124 function getPreviousLogicalElement(currentElement) { 1125 var allFocusable = getAllFocusableElements(); 1126 var currentFocusIndex = allFocusable.indexOf(currentElement); 1127 1128 // Case 1: ããã¿ã¼ãã¿ã³ããã®ç§»å 1129 if (currentElement.classList.contains('footButton__link')) { 1130 if (currentElement.classList.contains('footButton__link--global')) { 1131 return document.querySelector('.footButton__link--inquiry'); 1132 } else { // inquiry button 1133 var allMainItems = Array.from(document.querySelectorAll('.hamburgerMenu__listItem')); 1134 var lastMainItem = allMainItems[allMainItems.length - 1]; 1135 if (!lastMainItem) return null; 1136 var lastMainButton = lastMainItem.querySelector('.hamburgerMenu__link'); 1137 1138 if (lastMainButton && lastMainButton.tagName === 'BUTTON' && lastMainButton.getAttribute('aria-expanded') === 'true') { 1139 var panelId = lastMainButton.getAttribute('aria-controls'); 1140 var panel = document.getElementById(panelId); 1141 if (panel) { 1142 var lastSubmenu = panel.querySelector('.hamburgerSubMenu__wrapper'); 1143 if (lastSubmenu) { 1144 var lastSubmenuElements = Array.from(lastSubmenu.querySelectorAll('a, button, input, select, textarea, [tabindex]:not([tabindex="-1"])')).filter(el => el.offsetWidth > 0 && el.offsetHeight > 0); 1145 if (lastSubmenuElements.length > 0) { 1146 return lastSubmenuElements[lastSubmenuElements.length - 1]; 1147 } 1148 } 1149 } 1150 } 1151 return lastMainButton; 1152 } 1153 } 1154 1155 // Case 2: ãµãã¡ãã¥ã¼å ããã®ç§»å 1156 var parentSubmenu = currentElement.closest('.hamburgerSubMenu__wrapper'); 1157 if (parentSubmenu) { 1158 var submenuElements = Array.from(parentSubmenu.querySelectorAll('a, button, input, select, textarea, [tabindex]:not
1158([tabindex="-1"])')).filter(el => el.offsetWidth > 0 && el.offsetHeight > 0); 1159 var currentIndexInSubmenu = submenuElements.indexOf(currentElement); 1160 1161 if (currentIndexInSubmenu > 0) { 1162 return submenuElements[currentIndexInSubmenu - 1]; 1163 } else { 1164 var panel = parentSubmenu.closest('[role="tabpanel"]'); 1165 if (panel) { 1166 var buttonId = panel.getAttribute('aria-labelledby'); 1167 if (buttonId) { 1168 return document.getElementById(buttonId); 1169 } 1170 } 1171 } 1172 } 1173 1174 // Case 3: ã¡ã¤ã³ã¡ãã¥ã¼é ç®ããã®ç§»å 1175 var parentMainItem = currentElement.closest('.hamburgerMenu__listItem'); 1176 if (parentMainItem) { 1177 var allMainItems = Array.from(document.querySelectorAll('.hamburgerMenu__listItem')); 1178 var currentMainIndex = allMainItems.indexOf(parentMainItem); 1179 1180 if (currentMainIndex > 0) { 1181 var prevMainItem = allMainItems[currentMainIndex - 1]; 1182 var prevMainButton = prevMainItem.querySelector('.hamburgerMenu__link'); 1183 1184 if (prevMainButton && prevMainButton.tagName === 'BUTTON' && prevMainButton.getAttribute('aria-expanded') === 'true') { 1185 var panelId = prevMainButton.getAttribute('aria-controls'); 1186 var panel = document.getElementById(panelId); 1187 if (panel) { 1188 var prevSubmenu = panel.querySelector('.hamburgerSubMenu__wrapper'); 1189 if (prevSubmenu) { 1190 var prevSubmenuElements = Array.from(prevSubmenu.querySelectorAll('a, button, input, select, textarea, [tabindex]:not([tabindex="-1"])')).filter(el => el.offsetWidth > 0 && el.offsetHeight > 0); 1191 if (prevSubmenuElements.length > 0) { 1192 return prevSubmenuElements[prevSubmenuElements.length - 1]; 1193 } 1194 } 1195 } 1196 } 1197 return prevMainButton; 1198 } 1199 } 1200 1201 // ãã®ä»ã®è¦ç´ (æ¤ç´¢ãã©ã¼ã ãªã©)ããã®ç§»åãã¾ãã¯ã¡ãã¥ã¼ã®å é ããã®ç§»å 1202 if (currentFocusIndex > 0) { 1203 return allFocusable[currentFocusIndex - 1]; 1204 } 1205 1206 // ã¡ãã¥ã¼ã®å é ã«å°éããå ´åãnullãè¿ãã¦ãã©ã¦ã¶ã®ããã©ã«ãåä½ã«ä»»ãã 1207 return null; 1208 } 1209 1210 // 次ã®ã¡ã¤ã³ã¡ãã¥ã¼ãã¿ã³ãåå¾ (夿´ãªã) 1211 function getNextMainMenuButton(currentMainItem) { 1212 var allMainItems = document.querySelectorAll('.hamburgerMenu__listItem'); 1213 var currentIndex = Array.prototype.indexOf.call(allMainItems, currentMainItem); 1214 1215 for (var i = currentIndex + 1; i < allMainItems.length; i++) { 1216 var nextItem = allMainItems[i]; 1217 1218 if (nextItem.classList.contains('hamburgerMenu__listItem--hasLink')) { 1219 var nextLink = nextItem.querySelector('.hamburgerMenu__link'); 1220 if (nextLink && nextLink.tagName === 'A') { 1221 return nextLink; 1222 } 1223 } else { 1224 var nextButton = nextItem.querySelector('.hamburgerMenu__link'); 1225 if (nextButton && nextButton.tagName === 'BUTTON') { 1226 return nextButton; 1227 } 1228 } 1229 } 1230 1231 return null; 1232 } 1233 } 1234 1235 // ããã¿ã¼SPã¡ãã¥ã¼ç¨ã«ã¹ã¿ã ã¿ãããã²ã¼ã·ã§ã³ 1236 function footerCustomTabNavigation() { 1237 var footerMenu = document.getElementById('js-footerMenu'); 1238 if (!footerMenu) return; 1239 function isSPMode() { 1240 // footerSitemapSpHedging ãdisplay: blockãªãSPã¢ã¼ã 1241 var spHedging = document.querySelector('.footerSitemapSpHedging'); 1242 if (!spHedging) return false;
1243 var style = window.getComputedStyle(spHedging); 1244 return style.display !== 'none'; 1245 } 1246 document.addEventListener('keydown', function(e) { 1247 if (e.key !== 'Tab' || !e.shiftKey) return; 1248 var activeElement = document.activeElement; 1249 if (footerMenu.contains(activeElement)) return; 1250 var allPageElements = document.querySelectorAll('button:not([tabindex="-1"]), a:not([tabindex="-1"]), input:not([tabindex="-1"]), select:not([tabindex="-1"]), textarea:not([tabindex="-1"]), [tabindex]:not([tabindex="-1"])'); 1251 var visibleElements = Array.prototype.filter.call(allPageElements, function(el) { 1252 return el.offsetWidth > 0 && el.offsetHeight > 0; 1253 }); 1254 var currentPageIndex = visibleElements.indexOf(activeElement); 1255 if (currentPageIndex > 0) { 1256 var prevElement = visibleElements[currentPageIndex - 1]; 1257 if (footerMenu.contains(prevElement)) { 1258 var allMainItems = document.querySelectorAll('.footerSitemapSpHedging__item'); 1259 var lastMainButton = null; 1260 1261 for (var i = allMainItems.length - 1; i >= 0; i--) { 1262 var button = allMainItems[i].querySelector('.footerSitemapSpHedging__text'); 1263 if (button && button.tagName === 'BUTTON' && button.offsetWidth > 0 && button.offsetHeight > 0) { 1264 lastMainButton = button; 1265 break; 1266 } 1267 } 1268 1269 if (lastMainButton) { 1270 e.preventDefault(); 1271 lastMainButton.focus(); 1272 return; 1273 } 1274 } 1275 } 1276 }); 1277 1278 function updateTabIndexes() { 1279 var allAccordionLists = footerMenu.querySelectorAll('.footerSpAccordionMenu__list'); 1280 1281 Array.prototype.forEach.call(allAccordionLists, function(list) { 1282 var isOpen = list.classList.contains('footerSpAccordionMenu__list--isOpen'); 1283 var focusableElements = list.querySelectorAll('button, a, input, select, textarea, [tabindex]'); 1284 1285 Array.prototype.forEach.call(focusableElements, function(el) { 1286 if (isOpen) { 1287 if (el.hasAttribute('data-original-tabindex')) { 1288 var originalValue = el.getAttribute('data-original-tabindex'); 1289 if (originalValue === 'null') { 1290 el.removeAttribute('tabindex'); 1291 } else { 1292 el.setAttribute('tabindex', originalValue); 1293 } 1294 } 1295 } else { 1296 if (!el.hasAttribute('data-original-tabindex')) { 1297 var originalTabindex = el.getAttribute('tabindex'); 1298 el.setAttribute('data-original-tabindex', originalTabindex === null ? 'null' : originalTabindex); 1299 } 1300 el.setAttribute('tabindex', '-1'); 1301 } 1302 }); 1303 }); 1304 } 1305 1306 updateTabIndexes(); 1307 1308 var accordionButtons = footerMenu.querySelectorAll('.js-footerSpAccordion'); 1309 Array.prototype.forEach.call(accordionButtons, function(button) { 1310 button.addEventListener('click', function() { 1311 setTimeout(updateTabIndexes, 50); 1312 }); 1313 }); 1314 1315 var categoryButtons = footerMenu.querySelectorAll('.footerSitemapSpHedging__text'); 1316 Array.prototype.forEach.call(categoryButtons, function(button) { 1317 button.addEventListener('click', function() { 1318 setTimeout(updateTabIndexes, 50); 1319 }); 1320 }); 1321 1322 function isReallyVisible(el) { 1323 if (el.offsetWidth === 0 && el.offsetHeight === 0) { 1324 return false; 1325 } 1326 1327 var current = el; 1328 while (current && current !== footerMenu) { 1329 if (current.classList && current.classList.contains('footerSpAccordionMenu__list')) { 1330 if (!current.classList.contains('footerSpAccordionMenu__list--isOpen')) { 1331 return false;
1332 } 1333 } 1334 1335 var style = window.getComputedStyle(current); 1336 if (style.display === 'none' || style.visibility === 'hidden') { 1337 return false; 1338 } 1339 1340 if (style.maxHeight === '0px' && style.overflow === 'hidden') { 1341 return false; 1342 } 1343 1344 current = current.parentElement; 1345 } 1346 return true; 1347 } 1348 1349 footerMenu.addEventListener('keydown', function(e) { 1350 if (e.key !== 'Tab') return; 1351 if (!isSPMode()) return; 1352 var activeElement = document.activeElement; 1353 1354 if (!footerMenu.contains(activeElement)) { 1355 return; 1356 } 1357 1358 var parentMainMenuItem = activeElement.closest('.footerSitemapSpHedging__item'); 1359 if (parentMainMenuItem && parentMainMenuItem.classList.contains('footerSitemapSpHedging__item--hasLink')) { 1360 return; 1361 } 1362 1363 var allFocusableElements = getAllFocusableElements(); 1364 var currentIndex = allFocusableElements.indexOf(activeElement); 1365 1366 if (currentIndex === -1) return; 1367 1368 var nextElement = null; 1369 1370 if (e.shiftKey) { 1371 nextElement = getPreviousLogicalElement(activeElement, allFocusableElements, currentIndex); 1372 if (nextElement === 'EXIT_NAVIGATION') { 1373 return; 1374 } 1375 } else { 1376 nextElement = getNextLogicalElement(activeElement, allFocusableElements, currentIndex); 1377 1378 if (nextElement === null && 1379 activeElement.classList.contains('footerSitemapSpHedging__text') && 1380 activeElement.tagName === 'BUTTON') { 1381 1382 var parentMainItem = activeElement.closest('.footerSitemapSpHedging__item'); 1383 var allMainItems = document.querySelectorAll('.footerSitemapSpHedging__item'); 1384 var currentMainIndex = Array.prototype.indexOf.call(allMainItems, parentMainItem); 1385 1386 var isLastMainButton = true; 1387 for (var i = currentMainIndex + 1; i < allMainItems.length; i++) { 1388 if (allMainItems[i].querySelector('.footerSitemapSpHedging__text')) { 1389 isLastMainButton = false; 1390 break; 1391 } 1392 } 1393 1394 if (isLastMainButton) { 1395 var allPageElements = document.querySelectorAll('button, a, input, select, textarea, [tabindex]:not([tabindex="-1"])'); 1396 var footerMenuIndex = -1; 1397 1398 for (var j = 0; j < allPageElements.length; j++) { 1399 if (footerMenu.contains(allPageElements[j])) { 1400 footerMenuIndex = j; 1401 } 1402 } 1403 1404 if (footerMenuIndex !== -1) { 1405 for (var k = footerMenuIndex + 1; k < allPageElements.length; k++) { 1406 if (!footerMenu.contains(allPageElements[k]) && 1407 allPageElements[k].offsetWidth > 0 && 1408 allPageElements[k].offsetHeight > 0) { 1409 e.preventDefault(); 1410 allPageElements[k].focus(); 1411 return; 1412 } 1413 } 1414 } 1415 1416 return; 1417 } 1418 } 1419 } 1420 1421 var defaultNext = getDefaultNextElement(activeElement, allFocusableElements, currentIndex, e.shiftKey); 1422 1423 if (nextElement === null) { 1424 return; 1425 } 1426 1427 if (nextElement && nextElement !== defaultNext) { 1428 e.preventDefault(); 1429 nextElement.focus(); 1430 } 1431 }); 1432 function getAllFocusableElements() { 1433 var elements = footerMenu.querySelectorAll( 1434 'button:not([tabindex="-1"]), a:not([tabindex="-1"]), input:not([tabindex="-1"]), select:not([tabindex="-1"]), textarea:not([tabindex="-1"]), [tabindex]:not
1434([tabindex="-1"])' 1435 ); 1436 return Array.prototype.filter.call(elements, function(el) { 1437 return isReallyVisible(el); 1438 }); 1439 } 1440 1441 function getDefaultNextElement(currentElement, allElements, currentIndex, isReverse) { 1442 if (isReverse) { 1443 return currentIndex > 0 ? allElements[currentIndex - 1] : null; 1444 } else { 1445 return currentIndex < allElements.length - 1 ? allElements[currentIndex + 1] : null; 1446 } 1447 } 1448 1449 function getNextLogicalElement(currentElement, allElements, currentIndex) { 1450 if (currentElement.classList && currentElement.classList.contains('footerSitemapSpHedging__text') && currentElement.tagName === 'BUTTON') { 1451 var parentMainItem = currentElement.closest('.footerSitemapSpHedging__item'); 1452 var allMainItems = document.querySelectorAll('.footerSitemapSpHedging__item'); 1453 var currentMainIndex = Array.prototype.indexOf.call(allMainItems, parentMainItem); 1454 1455 var allCategories = document.querySelectorAll('.footerSitemap__listItem'); 1456 var correspondingCategory = allCategories[currentMainIndex]; 1457 1458 if (correspondingCategory) { 1459 var categoryItem = correspondingCategory.querySelector('.footerCategory__item'); 1460 if (categoryItem && window.getComputedStyle(categoryItem).display === 'block') { 1461 var categoryElements = Array.prototype.filter.call( 1462 categoryItem.querySelectorAll('button:not([tabindex="-1"]), a:not([tabindex="-1"]), input:not([tabindex="-1"]), select:not([tabindex="-1"]), textarea:not([tabindex="-1"]), [tabindex]:not([tabindex="-1"])'), 1463 function(el) { return isReallyVisible(el); } 1464 ); 1465 if (categoryElements.length > 0) { 1466 return categoryElements[0]; 1467 } 1468 } 1469 } 1470 1471 var nextMainButton = getNextMainCategoryButton(parentMainItem); 1472 return nextMainButton; 1473 } 1474 1475 var parentCategory = currentElement.closest('.footerCategory__item'); 1476 if (parentCategory && window.getComputedStyle(parentCategory).display === 'block') { 1477 var categoryElements = Array.prototype.filter.call( 1478 parentCategory.querySelectorAll('button:not([tabindex="-1"]), a:not([tabindex="-1"]), input:not([tabindex="-1"]), select:not([tabindex="-1"]), textarea:not([tabindex="-1"]), [tabindex]:not([tabindex="-1"])'), 1479 function(el) { return isReallyVisible(el); } 1480 ); 1481 var categoryIndex = categoryElements.indexOf(currentElement); 1482 1483 if (categoryIndex === categoryElements.length - 1) { 1484 var allCategories = document.querySelectorAll('.footerSitemap__listItem'); 1485 var currentCategoryIndex = Array.prototype.indexOf.call(allCategories, currentElement.closest('.footerSitemap__listItem')); 1486 var allMainItems = document.querySelectorAll('.footerSitemapSpHedging__item'); 1487 var currentMainItem = allMainItems[currentCategoryIndex]; 1488 1489 var nextMainButton = getNextMainCategoryButton(currentMainItem); 1490 return nextMainButton; 1491 } 1492 } 1493 1494 return null; 1495 } 1496 1497 function getPreviousLogicalElement(currentElement, allElements, currentIndex) { 1498 // Case 1: We are inside a sub-menu (either a direct link or inside an accordion). 1499 var parentCategoryItem = currentElement.closest('.footerCategory__item'); 1500 if (parentCategoryItem && window.getComputedStyle(parentCategoryItem).display === 'block') { 1501 var categoryElements = allElements.filter(function(el) { 1502 return parentCategoryItem.contains(el) && isReallyVisible(el); 1503 }); 1504 var localIndex = categoryElements.indexOf(currentElement); 1505 1506 // If not the first element in the sub-menu, return the previous one. 1507 if (localIndex > 0) { 1508 return categoryElements[localIndex - 1]; 1509 } 1510 1511 // If it IS the first element, we need to move to the main category button. 1512 var allCategories = Array.from(document.querySelectorAll('.footerSitemap__listItem')); 1513 var currentCategoryContainer = currentElement.closest('.footerSitemap__listItem'); 1514 var categoryIndex = allCategories.indexOf(currentCategoryContainer); 1515 1516 if (categoryIndex !== -1) { 1517 var allMainItems = document.querySelectorAll('.footerSitemapSpHedging__item'); 1518 var mainItem = allMainItems[categoryIndex]; 1519 if(mainItem) { 1520 var mainButton = mainItem.querySelector('.footerSitemapSpHedging__text'); 1521 if (mainButton) { 1522 return mainButton; 1523 } 1524 } 1525 } 1526 } 1527 1528 // Case 2: We are on a main category button. 1529 var parentMainItem = currentElement.closest('.footerSitemapSpHedging__item'); 1530 if (parentMainItem) { 1531 // Find the previous main category's last element if it's open 1532 var prevCategoryLastElement = getPreviousCategoryLastElement(parentMainItem); 1533 if (prevCategoryLastElement) { 1534 return prevCategoryLastElement; 1535 } 1536 1537 // Otherwise, find the previous main category button. 1538 var prevMainButton = getPreviousMainCategoryButton(parentMainItem); 1539 if (prevMainButton) { 1540 return prevMainButton; 1541 } 1542 } 1543 1544 // If we are at the first element of the footer menu, let the browser handle it. 1545 if (currentIndex === 0) { 1546 return null; 1547 } 1548 1549 // Default case: return the previous element in the DOM order within the menu. 1550 var defaultPrev = getDefaultNextElement(currentElement, allElements, currentIndex, true); 1551 if (defaultPrev) { 1552 return defaultPrev; 1553 } 1554 1555 return null; // Exit menu 1556 } 1557 1558 function getNextMainCategoryButton(currentMainItem) { 1559 var allMainItems = document.querySelectorAll('.footerSitemapSpHedging__item'); 1560 var currentIndex = Array.prototype.indexOf.call(allMainItems, currentMainItem); 1561 1562 for (var i = currentIndex + 1; i < allMainItems.length; i++) { 1563 var nextItem = allMainItems[i]; 1564 var nextButton = nextItem.querySelector('.footerSitemapSpHedging__text'); 1565 if (nextButton) { 1566 return nextButton; 1567 } 1568 } 1569 1570 return null; 1571 } 1572 1573 function getPreviousMainCategoryButton(currentMainItem) { 1574 var allMainItems = document.querySelectorAll('.footerSitemapSpHedging__item'); 1575 var currentIndex = Array.prototype.indexOf.call(allMainItems, currentMainItem); 1576 1577 for (var i = currentIndex - 1; i >= 0; i--) { 1578 var prevItem = allMainItems[i]; 1579 var prevButton = prevItem.querySelector('.footerSitemapSpHedging__text'); 1580 if (prevButton) { 1581 return prevButton; 1582 } 1583 } 1584 1585 return null; 1586 } 1587 1588 function getPreviousCategoryLastElement(currentMainItem) { 1589 var allMainItems = document.querySelectorAll('.footerSitemapSpHedging__item'); 1590 var currentIndex = Array.prototype.indexOf.call(allMainItems, currentMainItem); 1591 1592 for (var i = currentIndex - 1; i >= 0; i--) { 1593 var prevItem = allMainItems[i]; 1594 if (!prevItem.classList.contains('footerSitemapSpHedging__item--hasLink')) { 1595 var allCategories = document.querySelectorAll('.footerSitemap__listItem'); 1596 var prevCategory = allCategories[i]; 1597 if (prevCategory) { 1598 var categoryItem = prevCategory.querySelector('.footerCategory__item'); 1599 if (categoryItem && window.getComputedStyle(categoryItem).display === 'block') { 1600 var prevCategoryElements = Array.prototype.filter.call( 1601 categoryItem.querySelectorAll('button:not([tabindex="-1"]), a:not([tabindex="-1"]), input:not([tabindex="-1"]), select:not([tabindex="-1"]), textarea:not([tabindex="-1"]), [tabindex]:not
1601([tabindex="-1"])'), 1602 function(el) { return isReallyVisible(el); } 1603 ); 1604 if (prevCategoryElements.length > 0) { 1605 return prevCategoryElements[prevCategoryElements.length - 1]; 1606 } 1607 } 1608 } 1609 break; 1610 } 1611 } 1612 1613 return null; 1614 } 1615 } 1616 1617 function autoCloseOnFocusOut() { 1618 var hamburgerMenu = document.getElementById('js-openMenu'); 1619 var trigger = document.querySelector('.js-hamburgerOpen'); 1620 1621 if (!hamburgerMenu || !trigger) return; 1622 var isScrolling = false; 1623 hamburgerMenu.addEventListener('scroll', function() { 1624 isScrolling = true; 1625 clearTimeout(hamburgerMenu.scrollTimeout); 1626 hamburgerMenu.scrollTimeout = setTimeout(function() { 1627 isScrolling = false; 1628 }, 150); 1629 }); 1630 document.addEventListener('focusout', function(e) { 1631 if (!hamburgerMenu.classList.contains('hamburgerMenu--isActive')) { 1632 return; 1633 } 1634 if (isScrolling) { 1635 return; 1636 } 1637 setTimeout(function() { 1638 var newFocusedElement = document.activeElement; 1639 var isInsideMenu = hamburgerMenu.contains(newFocusedElement) || 1640 newFocusedElement === trigger; 1641 if (!isInsideMenu) { 1642 var overlay = document.getElementById('js-overlay'); 1643 if (overlay) { 1644 overlay.click(); 1645 } 1646 } 1647 }, 10); 1648 }); 1649 } 1650 1651 function headerFocusScroll() { 1652 var header = document.getElementById('globalHeader'); 1653 if (!header) return; 1654 1655 var headerFocusableElements = header.querySelectorAll('a, button'); 1656 1657 Array.prototype.forEach.call(headerFocusableElements, function(element) { 1658 element.addEventListener('focus', function() { 1659 // ãã¼ã¸ãä¸é¨ã«ã¹ã¯ãã¼ã«ãã¦ããå ´åã®ã¿ããã㸠1660 if (window.pageYOffset > 100) { 1661 window.scrollTo({ 1662 top: 0, 1663 behavior: 'smooth' 1664 }); 1665 } 1666 }); 1667 }); 1668 } 1669 1670 // ã¢ã¯ã»ã·ããªãã£ä¿®æ£: é表示ã®ã¡ã¬ã¡ãã¥ã¼ãTabé åºããé¤å¤ 1671 function fixMegaMenuTabOrder() { 1672 // ãã¹ã¦ã®headerNavã対象ã«ãã 1673 var headerNavs = document.querySelectorAll('.headerNav'); 1674 1675 // ã¡ã¬ã¡ãã¥ã¼å ã®è¦ç´ ã確å®ã«è¨å®ãã颿° 1676 function updateMegaMenuTabIndex() { 1677 Array.prototype.forEach.call(headerNavs, function(nav) { 1678 var navItems = nav.querySelectorAll('.headerNav__listItem'); 1679 1680 Array.prototype.forEach.call(navItems, function(navItem) { 1681 var titleButton = navItem.querySelector('.headerNav__title'); 1682 1683 // ãããã¬ãã«ã®ãã¿ã³ã¯å¸¸ã«tabindex="0" 1684 if (titleButton && titleButton.tagName === 'BUTTON') { 1685 titleButton.setAttribute('tabindex', '0'); 1686 } 1687 1688 // ã¡ã¬ã¡ãã¥ã¼å ã®ãªã³ã¯ã®ç¶æ ãç¢ºèª 1689 var megaMenu = navItem.querySelector('.headerMegaNav'); 1690 if (megaMenu) { 1691 var isOpen = navItem.classList.contains('headerNav__listItem--isOpen'); 1692 var megaFocusable = megaMenu.querySelectorAll('a, button, input, select, textarea, [tabindex]'); 1693 1694 // ã¡ãã¥ã¼ãéãã¦ããå ´åã¯å¸¸ã«tabindex="-1" 1695 if (!isOpen) { 1696 Array.prototype.forEach.call(megaFocusable, function(el) { 1697 el.setAttribute('tabindex', '-1'); 1698 }); 1699 } else { 1700 // ã¡ãã¥ã¼ãéãã¦ããå ´åã¯tabindex="0" 1701 Array.prototype.forEach.call(megaFocusable, function(el) { 1702 if (el.getAttribute('tabindex') === '-1') { 1703 el.setAttribute('tabindex', '0'); 1704 } 1705 }); 1706 } 1707 } 1708 }); 1709 }); 1710 } 1711 1712 // åæåæã«å®è¡ 1713 updateMegaMenuTabIndex(); 1714 1715 // MutationObserverã§ã¯ã©ã¹å¤æ´ãç£è¦ 1716 var observer = new MutationObserver(function(mutations) { 1717 mutations.forEach(function(mutation) { 1718 if (mutation.type === 'attributes' && mutation.attributeName === 'class') { 1719 updateMegaMenuTabIndex(); 1720 } 1721 }); 1722 }); 1723 1724 // ãã¹ã¦ã®navItemãç£è¦ 1725 Array.prototype.forEach.call(headerNavs, function(nav) { 1726 var navItems = nav.querySelectorAll('.headerNav__listItem'); 1727 Array.prototype.forEach.call(navItems, function(navItem) { 1728 observer.observe(navItem, { 1729 attributes: true, 1730 attributeFilter: ['class'] 1731 }); 1732 }); 1733 }); 1734 1735 // ããã¼æã«ã¡ã¬ã¡ãã¥ã¼å ã®è¦ç´ ããã©ã¼ã«ã¹å¯è½ã«ãã 1736 Array.prototype.forEach.call(headerNavs, function(nav) { 1737 var navItems = nav.querySelectorAll('.headerNav__listItem'); 1738 1739 Array.prototype.forEach.call(navItems, function(navItem) { 1740 navItem.addEventListener('mouseenter', function() { 1741 var megaMenu = this.querySelector('.headerMegaNav'); 1742 if (megaMenu) { 1743 var megaFocusable = megaMenu.querySelectorAll('a, button'); 1744 Array.prototype.forEach.call(megaFocusable, function(el) { 1745 el.setAttribute('tabindex', '0'); 1746 }); 1747 } 1748 }); 1749 1750 navItem.addEventListener('mouseleave', function() { 1751 // ã¡ãã¥ã¼ãéãã¦ããå ´åã¯éããªã 1752 if (!navItem.classList.contains('headerNav__listItem--isOpen')) { 1753 var megaMenu = this.querySelector('.headerMegaNav'); 1754 if (megaMenu) { 1755 var megaFocusable = megaMenu.querySelectorAll('a, button'); 1756 Array.prototype.forEach.call(megaFocusable, function(el) { 1757 el.setAttribute('tabindex', '-1'); 1758 }); 1759 } 1760 } 1761 }); 1762 }); 1763 }); 1764 1765 } 1766 1767 // ã¢ã¯ã»ã·ããªãã£ä¿®æ£: ãã¼ã¸ä¸é¨ããæ»ã£ã¦ããã¨ããã´ã«èªå° 1768 function fixPageTopTabOrder() { 1769 var pageTopButton = document.getElementById('js-targetTop'); 1770 if (!pageTopButton) return; 1771 1772 var lastBlurTime = 0; 1773 var hasMovedToLogo = false; // ãã´ã¸ã®ç§»åãå®äºããããã©ã° 1774 var header = document.getElementById('js-header'); 1775 1776 // ãããã°ç¨ã«windowãªãã¸ã§ã¯ãã«å ¬é 1777 window.debugPageTopState = function() { 1778 return { 1779 lastBlurTime: lastBlurTime, 1780 hasMovedToLogo: hasMovedToLogo, 1781 timeSinceBlur: Date.now() - lastBlurTime 1782 }; 1783 }; 1784 1785 // ãã¼ã¸ããããã¿ã³ãããã©ã¼ã«ã¹ãé¢ãã 1786 pageTopButton.addEventListener('blur', function() { 1787 lastBlurTime = Date.now(); 1788 hasMovedToLogo = false; // ãªã»ãã 1789 1790 // ãããã¼ãè¡¨ç¤ºç¶æ ã«ãã 1791 if (header) { 1792 header.classList.remove('header--unpinned'); 1793 } 1794 }); 1795 1796 // ãã¼ã¸å ã®è¦ç´ ã«ãã©ã¼ã«ã¹ãæ»ã£ã¦ãã 1797 document.addEventListener('focus', function(e) { 1798 var timeSinceBlur = Date.now() - lastBlurTime; 1799 1800 // ãã¼ã¸ããããã¿ã³ããblurãã¦3ç§ä»¥å ã®å ´å 1801 if (lastBlurTime > 0 && timeSinceBlur < 3000 && !hasMovedToLogo) { 1802 var globalHeader = document.getElementById('globalHeader'); 1803 1804 // ãããã¼å ã®è¦ç´ ã«ãã©ã¼ã«ã¹ããå ´å 1805 if (globalHeader && globalHeader.contains(e.target)) { 1806 var headerLogo = document.querySelector('h1 a'); 1807 1808 // ãã´ä»¥å¤ã®è¦ç´ ã«ãã©ã¼ã«ã¹ããå ´å 1809 if (headerLogo && e.target !== headerLogo) { 1810 hasMovedToLogo = true; // ãã©ã°ãç«ã¦ã 1811 1812 // ãããã¼ã表示 1813 if (header) { 1814 header.classList.remove('header--unpinned'); 1815 } 1816 1817 // ãã¼ã¸ãããã«ã¹ã¯ãã¼ã« 1818 window.scrollTo({ 1819 top: 0, 1820 behavior: 'instant' 1821 }); 1822 1823 // tabindex屿§ãæä½ããã«ç´æ¥ãã©ã¼ã«ã¹ 1824 setTimeout(function() { 1825 headerLogo.focus(); 1826 }, 100); 1827 } else if (e.target === headerLogo) { 1828 // ãã´ã«ç´æ¥ãã©ã¼ã«ã¹ããå ´åããã©ã°ãç«ã¦ã 1829 hasMovedToLogo = true; 1830 } 1831 } 1832 } 1833 }, true); 1834 } 1835 1836 // ã¢ã¯ã»ã·ããªãã£ä¿®æ£: relatedSectionããã¡ã¬ã¡ãã¥ã¼ 1837 function fixRelatedSectionShiftTab() { 1838 // è¤æ°ã®ã»ã¬ã¯ã¿ã§ relatedSection ãæ¢ã 1839 var relatedSection = document.querySelector('.relatedContent, .related, section.relatedContent, .relatedTiles, .featureSection'); 1840 if (!relatedSection) { 1841 return; 1842 } 1843 1844 // relatedSectionå ã®ãã¹ã¦ã®ãã©ã¼ã«ã¹å¯è½è¦ç´ 1845 var relatedFocusable = document.querySelectorAll('.relatedTiles__head, .relatedList__text, .featureContet, .buttonLink__text'); 1846 1847 // æåã®ãã©ã¼ã«ã¹å¯è½è¦ç´ ãåå¾ 1848 function getFirstFocusable() { 1849 var visible = Array.prototype.filter.call(relatedFocusable, function(el) { 1850 var rect = el.getBoundingClientRect(); 1851 var style = window.getComputedStyle(el); 1852 return rect.width > 0 && rect.height > 0 && 1853 style.display !== 'none' && 1854 style.visibility !== 'hidden' && 1855 el.getAttribute('tabindex') !== '-1'; 1856 }); 1857 return visible.length > 0 ? visible[0] : null; 1858 } 1859 1860 // ãããã¼å ã®ã¡ã¬ã¡ãã¥ã¼ãã¿ã³ã®æå¾ãåå¾(ãã¥ã¼ã¹ã«ã¼ã ãªã©) 1861 function getLastMegaMenuButton() { 1862 var header = document.getElementById('globalHeader'); 1863 if (!header) return null; 1864 1865 // ã¡ã¬ã¡ãã¥ã¼ãã¿ã³(.headerNav__title)ãåå¾ 1866 var megaMenuButtons = header.querySelectorAll('.headerNav__title');
1867 var validButtons = Array.prototype.filter.call(megaMenuButtons, function(btn) { 1868 var rect = btn.getBoundingClientRect(); 1869 var style = window.getComputedStyle(btn); 1870 // å¹ ã¨é«ããããã°OK (visibility: hiddenã§ãå«ãã) 1871 return rect.width > 0 && rect.height > 0 && style.display !== 'none'; 1872 }); 1873 1874 // æå¾ã®ã¡ã¬ã¡ãã¥ã¼ãã¿ã³ãè¿ã 1875 return validButtons.length > 0 ? validButtons[validButtons.length - 1] : null; 1876 } 1877 1878 // ã¡ã¬ã¡ãã¥ã¼ãã¿ã³ã䏿çã«ãã©ã¼ã«ã¹å¯è½ã«ãã 1879 function makeButtonFocusable(button) { 1880 if (!button) return; 1881 1882 // 親ã®headerNavãåå¾ 1883 var headerNav = button.closest('.headerNav'); 1884 if (!headerNav) { 1885 button.focus(); 1886 return; 1887 } 1888 1889 // headerNavãè¡¨ç¤ºç¶æ ã«è¨å® 1890 headerNav.style.visibility = 'visible'; 1891 headerNav.style.pointerEvents = 'auto'; 1892 1893 // ãã¿ã³ã«ãã©ã¼ã«ã¹ 1894 button.focus(); 1895 1896 // ãã©ã¼ã«ã¹ãå¤ãããå ã«æ»ã 1897 button.addEventListener('blur', function hideOnBlur() { 1898 setTimeout(function() { 1899 // ãã©ã¼ã«ã¹ãheaderNavå ã«ãªãå ´åã®ã¿éè¡¨ç¤ºã«æ»ã 1900 var focusedElement = document.activeElement; 1901 if (!headerNav.contains(focusedElement)) { 1902 headerNav.style.visibility = ''; 1903 headerNav.style.pointerEvents = ''; 1904 } 1905 }, 50); 1906 1907 // ã¤ãã³ããªã¹ãã¼ãåé¤(ä¸åº¦ã ãå®è¡) 1908 button.removeEventListener('blur', hideOnBlur); 1909 }); 1910 } 1911 1912 // keydownã¤ãã³ããç£è¦ 1913 document.addEventListener('keydown', function(e) { 1914 if (e.key === 'Tab' && e.shiftKey) { 1915 var currentElement = document.activeElement; 1916 var firstFocusable = getFirstFocusable(); 1917 1918 // relatedSectionå ã®æåã®è¦ç´ ã«ãã©ã¼ã«ã¹ãããå ´å 1919 if (currentElement === firstFocusable) { 1920 var targetElement = getLastMegaMenuButton(); 1921 1922 if (targetElement) { 1923 e.preventDefault(); 1924 makeButtonFocusable(targetElement); 1925 } 1926 } 1927 } 1928 }); 1929 } 1930 1931 // å®è¡ 1932 headerPosition(); 1933 pageTopBtn(); 1934 headerScrollFixed(); 1935 footerScrollAddClass(); 1936 hamburgerClickIcon(); 1937 hamburgerShowMenu(); 1938 hamburgerAccordion(); 1939 dropdownShowMenu(); 1940 footerSpShowMenu(); 1941 footerAccordion(); 1942 headerUrlRelated(); 1943 HeaderPadTop(); 1944 customTabNavigation(); 1945 autoCloseOnFocusOut(); 1946 headerFocusScroll(); 1947 footerCustomTabNavigation(); 1948 fixMegaMenuTabOrder(); 1949 fixPageTopTabOrder(); 1950 fixRelatedSectionShiftTab(); 1951});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.