1 2 3const slider_instance = { 4 lineup_slider_tab1: null, 5 lineup_slider_tab2: null, 6 lineup_slider_tab3: null, 7 lineup_slider_tab4: null, 8 lineup_slider_tab5: null, 9 lineup_slider_tab6: null, 10}; 11 12/* =================================================================== 13 * slider extension 14 =================================================================== */ 15 16// ã¿ãæ©è½ãç¡å¹åããè¦ç´ ãæå®ããé©ç¨ããã 17function setUnTabIndex(splideInstance) { 18 if (!splideInstance.state.is(Splide.STATES.MOUNTED)) { 19 splideInstance.on("mounted", function () { 20 const prevArrow = splideInstance.root.querySelector(".splide__arrow--prev"); 21 const nextArrow = splideInstance.root.querySelector(".splide__arrow--next"); 22 23 [prevArrow, nextArrow].forEach((arrow) => { 24 if (arrow) { 25 arrow.setAttribute("tabindex", "-1"); 26 arrow.setAttribute("aria-hidden", true); 27 } 28 }); 29 }); 30 } 31} 32 33document.addEventListener("DOMContentLoaded", () => { 34 /* =================================================================== 35 * common slider 36 =================================================================== */ 37 38 // lineup slider 39 const lineup_slider_option = { 40 arrows: true, 41 gap: 24, 42 perPage: 4, 43 paginationKeyboard: false,
44 paginationTabIndex: false, 45 pagination: false, 46 width: "100%", 47 focus: 0, 48 classes: { 49 arrows: "splide__arrows cmn-carousel-arrows", 50 arrow: "splide__arrow cmn-carousel-class-arrow", 51 prev: "splide__arrow--prev cmn-carousel-prev", 52 next: "splide__arrow--next cmn-carousel-next", 53 pagination: "splide__pagination cmn-carousel-pagination", 54 page: "splide__pagination__page cmn-carousel-page", 55 }, 56 breakpoints: { 57 948: { 58 perPage: 3, 59 }, 60 768: { 61 perPage: 2, 62 arrows: false, 63 }, 64 }, 65 }; 66 67 slider_instance.lineup_slider_tab1 = new Splide("#LineUpSliderTab1", lineup_slider_option); 68 setUnTabIndex(slider_instance.lineup_slider_tab1); 69 slider_instance.lineup_slider_tab1.on("pagination:mounted", setPagination); 70 slider_instance.lineup_slider_tab1.mount(); 71 72 slider_instance.lineup_slider_tab1.on("pagination:updated", updatePagination); 73 74 // ãã¼ã¸ãã¼ã·ã§ã³ã®åæåå¦ç 75 function setPagination(data) { 76 // ãã®æ©è½ã¯ã¹ã©ã¤ãã¼ã¢ã¤ãã ã6å以ä¸ã®æã«é©å¿ããããã«ãã¾ãã 77 if (data?.items.length > 5) { 78 data.items.forEach((item, index) => { 79 item.li.style.display = index < 5 ? "flex" : "none"; 80 if (index === 4) { 81 item.button.style.borderWidth = "5px"; 82 } 83 }); 84 } 85 } 86 87 // ãã¼ã¸ãã¼ã·ã§ã³æ´æ°æã®å¦ç 88 function updatePagination(data) { 89 // ãã®æ©è½ã¯ã¹ã©ã¤ãã¼ã¢ã¤ãã ã6å以ä¸ã®æã«é©å¿ããããã«ãã¾ãã 90 if (data?.items.length > 5) { 91 const activeIndex = data.items.findIndex((item) => item.button.classList.contains("is-active")); 92 const maxIndex = data.items.length - 1; 93 94 data.items.forEach((item, _) => { 95 item.li.style.display = "none"; 96 item.button.style.borderWidth = ""; 97 }); 98 99 if (activeIndex <= 1) { 100 for (let i = 0; i < 5; i++) { 101 data.items[i].li.style.display = "flex"; 102 } 103 data.items[4].button.style.borderWidth = "5px"; 104 } else if (activeIndex >= maxIndex - 1) { 105 for (let i = maxIndex; i > maxIndex - 5; i--) { 106 data.items[i].li.style.display = "flex"; 107 } 108 data.items[maxIndex - 4].button.style.borderWidth = "5px"; 109 } else { 110 for (let i = activeIndex - 2; i <= activeIndex + 2; i++) { 111 data.items[i].li.style.display = "flex"; 112 } 113 data.items[activeIndex - 2].button.style.borderWidth = "5px"; 114 data.items[activeIndex + 2].button.style.borderWidth = "5px"; 115 } 116 } 117 } 118 119 // TOPã¹ã©ã¤ãã¼ã®ããåãæ¿ãã ã 120 document.querySelectorAll(".js-tab-wrap-top-slider").forEach((tabWrap) => { 121 tabWrap.addEventListener("click", (e) => { 122 const tabBtn = e.target.closest(".js-tab-btn:not(.tab-link)"); 123 124 if (tabBtn && tabWrap.contains(tabBtn)) { 125 e.preventDefault(); 126 127 if (!tabBtn.classList.contains("cur")) { 128 const tar = tabBtn.dataset.tabId; 129 130 tabWrap.querySelector(".js-tab-btn.cur")?.removeAttribute("aria-current"); 131 132 // ç¾å¨ã® "cur" ã¯ã©ã¹ãæã¤ã®ã¿ããã¿ã³ã¨ã³ã³ãã³ããåå¾ããã¯ã©ã¹ãåé¤ 133 tabWrap.querySelector(".js-tab-btn.cur")?.classList.remove("cur"); 134 tabWrap.querySelector(".js-tab-content.cur")?.classList.remove("cur"); 135 136 // ã¯ãªãã¯ãããã¿ããã¿ã³ã¨å¯¾è±¡ã®ã¿ãã³ã³ãã³ãã« "cur" ã¯ã©ã¹ã追å 137 tabBtn.classList.add("cur"); 138 document.querySelector("#" + tar)?.classList.add("cur"); 139 140 // "aria"ã追å 141 tabBtn.setAttribute("aria-current", "page"); 142 143 switch (tar) { 144 case "tab-01": 145 if (slider_instance.lineup_slider_tab1 == null) { 146 slider_instance.lineup_slider_tab1 = new Splide("#LineUpSliderTab1", lineup_slider_option); 147 setUnTabIndex(slider_instance.lineup_slider_tab1); 148 slider_instance.lineup_slider_tab1.on("pagination:mounted", setPagination); 149 slider_instance.lineup_slider_tab1.mount(); 150 slider_instance.lineup_slider_tab1.on("pagination:updated", updatePagination); 151 } 152 153 break; 154 155 case "tab-02": 156 if (slider_instance.lineup_slider_tab2 == null) { 157 slider_instance.lineup_slider_tab2 = new Splide("#LineUpSliderTab2", lineup_slider_option); 158 setUnTabIndex(slider_instance.lineup_slider_tab2); 159 slider_instance.lineup_slider_tab2.on("pagination:mounted", setPagination); 160 slider_instance.lineup_slider_tab2.mount(); 161 slider_instance.lineup_slider_tab2.on("pagination:updated", updatePagination); 162 } 163 164 break; 165 166 case "tab-03": 167 if (slider_instance.lineup_slider_tab3 == null) { 168 slider_instance.lineup_slider_tab3 = new Splide("#LineUpSliderTab3", lineup_slider_option); 169 setUnTabIndex(slider_instance.lineup_slider_tab3); 170 slider_instance.lineup_slider_tab3.on("pagination:mounted", setPagination); 171 slider_instance.lineup_slider_tab3.mount(); 172 slider_instance.lineup_slider_tab3.on("pagination:updated", updatePagination); 173 } 174 175 break; 176 177 case "tab-04": 178 if (slider_instance.lineup_slider_tab4 == null) { 179 slider_instance.lineup_slider_tab4 = new Splide("#LineUpSliderTab4", lineup_slider_option); 180 setUnTabIndex(slider_instance.lineup_slider_tab4); 181 slider_instance.lineup_slider_tab4.on("pagination:mounted", setPagination); 182 slider_instance.lineup_slider_tab4.mount(); 183 slider_instance.lineup_slider_tab4.on("pagination:updated", updatePagination); 184 } 185 186 break; 187 188 case "tab-05": 189 if (slider_instance.lineup_slider_tab5 == null) { 190 slider_instance.lineup_slider_tab5 = new Splide("#LineUpSliderTab5", lineup_slider_option); 191 setUnTabIndex(slider_instance.lineup_slider_tab5); 192 slider_instance.lineup_slider_tab5.on("pagination:mounted", setPagination); 193 slider_instance.lineup_slider_tab5.mount(); 194 slider_instance.lineup_slider_tab5.on("pagination:updated", updatePagination); 195 } 196 197 break; 198 199 case "tab-06": 200 if (slider_instance.lineup_slider_tab6 == null) { 201 slider_instance.lineup_slider_tab6 = new Splide("#LineUpSliderTab6", lineup_slider_option); 202 setUnTabIndex(slider_instance.lineup_slider_tab6); 203 slider_instance.lineup_slider_tab6.on("pagination:mounted", setPagination); 204 slider_instance.lineup_slider_tab6.mount(); 205 slider_instance.lineup_slider_tab6.on("pagination:updated", updatePagination); 206 } 207 208 break; 209 210 default: 211 break; 212 } 213 } 214 } 215 }); 216 }); 217 218 // TOPã©ã¤ã³ã¢ããã¹ã©ã¤ãã¼ã®ç¢å°æä½ 219 document.querySelectorAll("#LineUpSliderTab1 li").forEach((item, _) => { 220 item.addEventListener("keydown", (event) => { 221 arrowKeyDown(event, slider_instance.lineup_slider_tab1); 222 }); 223 }); 224 225 // TOPã©ã¤ã³ã¢ããã¹ã©ã¤ãã¼ã®ç¢å°æä½ 226 document.querySelectorAll("#LineUpSliderTab2 li").forEach((item, _) => { 227 item.addEventListener("keydown", (event) => { 228 arrowKeyDown(event, slider_instance.lineup_slider_tab2); 229 }); 230 }); 231 232 // ç¢å°ãã¼ãæ¼ä¸ããæã®å ±éå¦ç 233 function arrowKeyDown(event, target) { 234 const activeElement = document.activeElement; 235 236 // ãã©ã¼ã«ã¹ã¿ã¼ã²ããã®ã¨ã¬ã¡ã³ããlineup-linkpanelã¯ã©ã¹ãæã£ã¦ããæã®ã¿åä½ 237 if (activeElement.classList.contains("lineup-linkpanel")) { 238 let sibling; 239 // æ¼ä¸ããæ¹åãã¼ã«ãã£ã¦æ¬¡ã®è¦ç´ ã®åå¾åããè¡ãã¾ãã 240 if (event.key === "ArrowLeft") { 241 sibling = activeElement.offsetParent?.previousElementSibling; 242 } else if (event.key === "ArrowRight") { 243 sibling = activeElement.offsetParent?.nextElementSibling; 244 } 245 246 if (sibling) { 247 const linkPanel = sibling.querySelector(".lineup-linkpanel"); 248 if (linkPanel) { 249 const parentUl = sibling.parentNode; 250 const ulChildren = Array.from(parentUl.children); 251 252 target.go(ulChildren.indexOf(sibling)); 253 linkPanel.focus(); 254 } 255 } 256 } 257 } 258 259 // service panel slider 260 const service_panel_slider_option = {
261 arrows: false, 262 type: "loop", 263 drag: true, 264 perPage: 1, 265 perMove: 1, 266 pagination: true, 267 classes: { 268 pagination: "splide__pagination cmn-carousel-pagination", 269 page: "splide__pagination__page cmn-carousel-page", 270 }, 271 }; 272 273 new Splide("#ServicePanelSlider", service_panel_slider_option).mount(); 274}); 275 276 277
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.