1var ecblib = ecblib || {}; 2ecblib.humburger_menu = ecblib.humburger_menu || {}; 3 4(function() { 5 'use strict'; 6 7 var _humburger_menu = ecblib.humburger_menu; 8 9 10 /************************ ã¡ãã¥ã¼æç» ************************/ 11 12 _humburger_menu.condition = 'type=json&charset=utf8'; 13 14 15 /** 16 * ãã«ãã´ãªããæ¢ãããéããç¶æ ã«ãã 17 */ 18 _humburger_menu.OpenDefaultCategory = function(vm) { 19 vm = vm || _humburger_menu.categoryTreeVm; 20 21 if (!vm) { 22 return; 23 } 24 25 var rootKey = '$category$root'; 26 27 /* 28 * Vueå´ã®ç¶æ ãéã 29 */ 30 vm.tree[rootKey] = true; 31 vm.slide[rootKey] = true; 32 33 vm.$nextTick(function() { 34 var $container = jQuery( 35 '#search_categorytree_sb' 36 ); 37 38 var $rootNavi = $container 39 .children( 40 '.block-goods-list__navi' 41 ) 42 .first(); 43 44 var $rootItem = $rootNavi 45 .children('ul.list') 46 .first() 47 .children('li.list-item') 48 .first(); 49 50 var $rootTitle = $rootItem 51 .children('.list-item__center') 52 .first(); 53 54 var $rootPanel = $rootItem 55 .children( 56 '.block-goods-list__navi-slideside' 57 ) 58 .first(); 59 60 /* 61 * SliderBackAllã«ããéããã¢ãã¡ã¼ã·ã§ã³ãæ¢ãã 62 * ãã«ãã´ãªããæ¢ããã®ããã«ã ãã表示ãã 63 */ 64 $rootPanel 65 .stop(true, true) 66 .addClass('open') 67 .css('display', 'block'); 68 69 /* 70 * ã¿ã¤ãã«å´ã®éããç¶æ ãåæ 71 */ 72 $rootTitle.addClass('minus'); 73 }); 74 }; 75 76 77 /** 78 * ãã³ãã¼ã¬ã¼ã¡ãã¥ã¼ééæã®åæå 79 */ 80 _humburger_menu.initToggle = function() { 81 /* 82 * å ããããå ¨ã¡ãã¥ã¼ãªã»ããå¦ç 83 */ 84 if ( 85 ecblib.humburger_menu.vue && 86 typeof ecblib.humburger_menu.vue.SliderBackAll === 87 'function' 88 ) { 89 ecblib.humburger_menu.vue.SliderBackAll(); 90 } 91 92 /* 93 * å ¨ã¡ãã¥ã¼ãéããå¾ã 94 * ãã«ãã´ãªããæ¢ããã ããéãç´ã 95 */ 96 setTimeout(function() { 97 _humburger_menu.OpenDefaultCategory(); 98 }, 0); 99 }; 100 101 102 /************************ è¨å®ãããã㣠************************/ 103 104 _humburger_menu.categoryNaviId = 105 'js-search-form-c'; 106 107 _humburger_menu.genreNaviId = 108 'js-search-form-r'; 109 110 _humburger_menu.shoproot = 111 ecblib.sys.wwwroot; 112 113 _humburger_menu.categoryUrl = 114 _humburger_menu.shoproot + 115 '/shop/category/categoryapi.aspx'; 116 117 _humburger_menu.genreUrl = 118 _humburger_menu.shoproot + 119 '/shop/genre/genreapi.aspx'; 120 121 _humburger_menu.GetCategory = 122 FetchCategory; 123 124 _humburger_menu.GetGenre = 125 FetchGenre; 126 127 _humburger_menu.brand = 128 document.body.getAttribute('data-brand'); 129 130 131 /************************ å¦ç ************************/ 132 133 _humburger_menu.Init = function() { 134 _humburger_menu.categoryTreeTemplate = 135 document.getElementById( 136 'search_base_category' 137 ); 138 139 _humburger_menu.genreTreeTemplate = 140 document.getElementById( 141 'search_base_genre' 142 ); 143 144 _humburger_menu.SearchRender(); 145 }; 146 147 148 _humburger_menu.SearchRender = function() { 149 150 /* 151 * å ã®ã¹ã©ã¤ãå¦ç 152 */ 153 var sliderMixin = { 154 methods: { 155 SliderForward: function( 156 elementName, 157 slide, 158 tree, 159 event 160 ) { 161 var target = ( 162 jQuery(event.target).hasClass( 163 'list-item--chevron' 164 ) 165 ) 166 ? jQuery(event.target) 167 : jQuery(event.target).parent('li'); 168 169 slide[elementName] = 170 !slide[elementName]; 171 172 tree[elementName] = true; 173 174 this.$nextTick(function() { 175 jQuery(target) 176 .children( 177 '.block-goods-list__navi-slideside' 178 ) 179 .slideToggle(); 180 }); 181 } 182 } 183 }; 184 185 186 /**************** ã«ãã´ãªã¡ãã¥ã¼ ****************/ 187 188 _humburger_menu.categoryTreeVue = 189 Vue.createApp({
190 mixins: [ 191 sliderMixin 192 ], 193 194 data: function() { 195 return { 196 categories: [], 197 198 /* 199 * ãã«ãã´ãªããæ¢ããã 200 * åæç¶æ ã§éã 201 */ 202 slide: { 203 '$category$root': true 204 }, 205 206 /* 207 * ã«ã¼ãã«ãã´ãªãåææç»ãã 208 */ 209 tree: { 210 '$category$root': true 211 } 212 }; 213 }, 214 215 template: 216 '#' + 217 _humburger_menu.categoryNaviId, 218 219 mounted: function() { 220 jQuery('#loading') 221 .addClass('spinner'); 222 223 jQuery('#loading') 224 .fadeIn('fast'); 225 226 var queryParams = 227 _humburger_menu.condition + 228 '&nest=true'; 229 230 if (_humburger_menu.brand) { 231 queryParams += 232 '&brand=' + 233 _humburger_menu.brand; 234 } 235 236 var $this = this; 237 238 jQuery.when( 239 _humburger_menu.GetCategory( 240 queryParams 241 ) 242 ) 243 .done(function(categoryList) { 244 $this.categories = 245 categoryList; 246 247 /* 248 * ã«ãã´ãªæç»å¾ã« 249 * ãã«ãã´ãªããæ¢ãããéã 250 */ 251 $this.$nextTick(function() { 252 _humburger_menu 253 .OpenDefaultCategory( 254 $this 255 ); 256 }); 257 258 jQuery('#loading').fadeOut( 259 'slow', 260 function() { 261 jQuery(this) 262 .removeClass( 263 'spinner' 264 ); 265 } 266 ); 267 }); 268 } 269 }); 270 271 272 /* 273 * ã«ãã´ãªé層ã³ã³ãã¼ãã³ã 274 */ 275 _humburger_menu.categoryTreeVue.component( 276 'categorytree', 277 { 278 mixins: [ 279 sliderMixin 280 ], 281 282 props: [ 283 'parent', 284 'slide', 285 'tree', 286 'categories', 287 'level' 288 ], 289 290 data: function() { 291 return { 292 levelClass: 293 'level' + this.level 294 }; 295 }, 296 297 methods: { 298 Redirect: function(category) { 299 if (_humburger_menu.brand) { 300 window.location.href = 301 _humburger_menu.shoproot + 302 '/shop/c/c' + 303 category.category + 304 '?brand=' + 305 _humburger_menu.brand; 306 } else { 307 window.location.href = 308 _humburger_menu.shoproot + 309 '/shop/c/c' + 310 category.category; 311 } 312 } 313 }, 314 315 template: 316 _humburger_menu 317 .categoryTreeTemplate 318 } 319 ); 320 321 322 /* 323 * mount()ã®æ»ãå¤ãä¿å 324 */ 325 if ( 326 document.getElementById( 327 'search_categorytree_sb' 328 ) 329 ) { 330 _humburger_menu.categoryTreeVm = 331 _humburger_menu 332 .categoryTreeVue 333 .mount( 334 '#search_categorytree_sb' 335 ); 336 } 337 338 339 /**************** ã¸ã£ã³ã«ã¡ãã¥ã¼ ****************/ 340 341 _humburger_menu.genreTreeVue = 342 Vue.createApp({
343 mixins: [ 344 sliderMixin 345 ], 346 347 data: function() { 348 return { 349 genres: [], 350 slide: {}, 351 tree: {} 352 }; 353 }, 354 355 template: 356 '#' + 357 _humburger_menu.genreNaviId, 358 359 mounted: function() { 360 jQuery('#loading') 361 .addClass('spinner'); 362 363 jQuery('#loading') 364 .fadeIn('fast'); 365 366 var queryParams = 367 _humburger_menu.condition + 368 '&nest=true'; 369 370 if (_humburger_menu.brand) { 371 queryParams += 372 '&brand=' + 373 _humburger_menu.brand; 374 } 375 376 var $this = this; 377 378 jQuery.when( 379 _humburger_menu.GetGenre( 380 queryParams 381 ) 382 ) 383 .done(function(genreList) { 384 $this.genres = genreList; 385 386 jQuery('#loading').fadeOut( 387 'slow', 388 function() { 389 jQuery(this) 390 .removeClass( 391 'spinner' 392 ); 393 } 394 ); 395 }); 396 } 397 }); 398 399 400 /* 401 * ã¸ã£ã³ã«é層ã³ã³ãã¼ãã³ã 402 */ 403 _humburger_menu.genreTreeVue.component( 404 'genretree', 405 { 406 mixins: [ 407 sliderMixin 408 ], 409 410 props: [ 411 'parent', 412 'slide', 413 'tree', 414 'genres', 415 'level' 416 ], 417 418 data: function() { 419 return { 420 levelClass: 421 'level' + this.level 422 }; 423 }, 424 425 methods: { 426 Redirect: function(genre) { 427 if (_humburger_menu.brand) { 428 window.location.href = 429 _humburger_menu.shoproot + 430 '/shop/r/r' + 431 genre.genre + 432 '?brand=' + 433 _humburger_menu.brand; 434 } else { 435 window.location.href = 436 _humburger_menu.shoproot + 437 '/shop/r/r' + 438 genre.genre; 439 } 440 } 441 }, 442 443 template: 444 _humburger_menu 445 .genreTreeTemplate 446 } 447 ); 448 449 450 /* 451 * ã¸ã£ã³ã«ç¨è¦ç´ ãåå¨ããå ´åã®ã¿ãã¦ã³ã 452 */ 453 if ( 454 document.getElementById( 455 'search_genretree_sb' 456 ) 457 ) { 458 _humburger_menu.genreTreeVm = 459 _humburger_menu 460 .genreTreeVue 461 .mount( 462 '#search_genretree_sb' 463 ); 464 } 465 }; 466 467 468 /************************ ãã¼ã¿éä¿¡ ************************/ 469 470 function FetchCategory(queryParams) { 471 var defer = jQuery.Deferred(); 472 473 jQuery.ajax({ 474 type: 'GET', 475 url: 476 _humburger_menu.categoryUrl + 477 '?' + 478 queryParams, 479 dataType: 'json' 480 }).then( 481 function(data) { 482 return defer.resolve(data); 483 }, 484 function() { 485 return defer.reject([]); 486 } 487 ); 488 489 return defer.promise(); 490 } 491 492 493 function FetchGenre(queryParams) { 494 var defer = jQuery.Deferred(); 495 496 jQuery.ajax({ 497 type: 'GET', 498 url: 499 _humburger_menu.genreUrl + 500 '?' + 501 queryParams, 502 dataType: 'json' 503 }).then( 504 function(data) { 505 return defer.resolve(data); 506 }, 507 function() { 508 return defer.reject([]); 509 } 510 ); 511 512 return defer.promise(); 513 } 514 515 516 document.addEventListener( 517 'DOMContentLoaded', 518 _humburger_menu.Init 519 ); 520 521})(); 522 523 524/************************ ç¹è²©åºããããååã®Swiperåæå ************************/ 525 526(function() { 527 'use strict'; 528 529 function ApplySwiper( 530 target_selector, 531 wrapper_selector, 532 options 533 ) { 534 let target = 535 typeof target_selector === 'string' 536 ? document.querySelector( 537 target_selector 538 ) 539 : target_selector; 540 541 if (!target) { 542 return null; 543 } 544 545 target.classList.add('swiper'); 546 547 let child = wrapper_selector 548 ? target.querySelector( 549 wrapper_selector 550 ) 551 : target.children[0]; 552 553 if (child) { 554 child.classList.add( 555 'swiper-wrapper' 556 ); 557 558 Array.from( 559 child.children 560 ).forEach((grandchild) => { 561 grandchild.classList.add( 562 'swiper-slide' 563 ); 564 }); 565 566 // ãã¼ã¸ãã¼ã·ã§ã³ 567 if (options.pagination) { 568 let pagination = 569 document.createElement('div'); 570 571 pagination.classList.add( 572 'swiper-pagination' 573 ); 574 575 target.appendChild( 576 pagination 577 ); 578 579 options.pagination.el = 580 '.swiper-pagination'; 581 } 582 583 // ããã²ã¼ã·ã§ã³ 584 if (options.navigation) { 585 let custom_target = 586 options.navigation._custom_target || 587 target.parentElement || 588 target; 589 590 if ( 591 options.navigation._custom_target 592 ) { 593 delete options.navigation 594 ._custom_target; 595 } 596 597 let navigation_prev = 598 document.createElement('div'); 599 600 let navigation_next = 601 document.createElement('div'); 602 603 navigation_prev.classList.add( 604 'swiper-button-prev' 605 ); 606 607 navigation_next.classList.add( 608 'swiper-button-next' 609 ); 610 611 custom_target.appendChild( 612 navigation_prev 613 ); 614 615 custom_target.appendChild( 616 navigation_next 617 ); 618 619 options.navigation.nextEl = 620 '.swiper-button-next'; 621 622 options.navigation.prevEl = 623 '.swiper-button-prev'; 624 } 625 626 // ã¹ã¯ãã¼ã«ãã¼ 627 if (options.scrollbar) { 628 let scrollbar = 629 document.createElement('div'); 630 631 scrollbar.classList.add( 632 'swiper-scrollbar' 633 ); 634 635 target.appendChild( 636 scrollbar 637 ); 638 639 options.scrollbar.el = 640 '.swiper-scrollbar'; 641 } 642 } 643 644 return new Swiper( 645 target_selector, 646 options 647 ); 648 } 649 650 651 setTimeout(() => { 652 653 // ã©ã³ãã³ã°å½¢å¼ã®Swiperåæå 654 let dealerRecommendBlock = 655 document.querySelector( 656 '#block_of_dealer_recommend' 657 ); 658 659 if (dealerRecommendBlock) { 660 let rankingBlock = 661 dealerRecommendBlock.querySelector( 662 '.block-ranking-r' 663 ); 664 665 if ( 666 rankingBlock && 667 rankingBlock.querySelectorAll( 668 '.block-ranking-r--items > li' 669 ).length > 2 670 ) { 671 ApplySwiper( 672 rankingBlock, 673 '.block-ranking-r--items', 674 { 675 loop: true, 676 677 navigation: { 678 _custom_target: 679 rankingBlock 680 .parentElement 681 }, 682 683 slidesPerView: 1, 684 685 breakpoints: { 686 769: { 687 slidesPerView: 2 688 }, 689 690 950: { 691 slidesPerView: 3 692 }, 693 694 1200: { 695 slidesPerView: 4 696 } 697 } 698 } 699 ); 700 } 701 } 702 703 704 // ãµã ãã¤ã«å½¢å¼ã®Swiperåæå 705 // ï¼ã¬ã¹ãã³ã·ããã¥ã¼ã®ã¿ï¼ 706 if ( 707 ecblib.sys.isModeResponsiveView() 708 ) { 709 if (dealerRecommendBlock) { 710 let thumbnailBlock = 711 dealerRecommendBlock 712 .querySelector( 713 '.block-thumbnail-t' 714 ); 715 716 if ( 717 thumbnailBlock && 718 thumbnailBlock 719 .querySelectorAll( 720 '.block-thumbnail-t--items ' + 721 '.block-thumbnail-t--item' 722 ) 723 .length > 4 724 ) { 725 let swiper = null; 726 727 const createSwiper = 728 function() { 729 swiper = ApplySwiper( 730 thumbnailBlock, 731 '.block-thumbnail-t--items', 732 { 733 slidesPerView: 2, 734 loop: true, 735 736 navigation: { 737 _custom_target: 738 thumbnailBlock 739 .parentElement 740 }, 741 742 743 breakpoints: { 744 950: { 745 slidesPerView: 3 746 }, 747 748 1200: { 749 slidesPerView: 4 750 } 751 } 752 } 753 ); 754 }; 755 756 const removeSwiper = 757 function() { 758 // Swiperåé¤ 759 swiper?.destroy(); 760 761 // ããã²ã¼ã·ã§ã³åé¤ 762 thumbnailBlock 763 .parentElement 764 ?.querySelectorAll( 765 '.swiper-button-prev' 766 ) 767 ?.forEach( 768 (btn) => btn.remove() 769 ); 770 771 thumbnailBlock 772 .parentElement 773 ?.querySelectorAll( 774 '.swiper-button-next' 775 ) 776 ?.forEach( 777 (btn) => btn.remove() 778 ); 779 }; 780 781 const callback = 782 function(mediaQueryList) { 783 if ( 784 mediaQueryList.matches 785 ) { 786 createSwiper(); 787 } else { 788 removeSwiper(); 789 } 790 }; 791 792 ecblib.sys 793 .addMatchMediaEventListener( 794 callback 795 ); 796 797 callback( 798 ecblib.sys 799 .getDefaultMatchMedia() 800 ); 801 } 802 } 803 } 804 805 }, 0); 806 807})();
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.