1document.addEventListener("DOMContentLoaded", function () { 2 3 var slider2 = new Swiper('.main-slider__footer-container', { 4 slidesPerView: 4, 5 spaceBetween: 30, 6 loop: true, 7 breakpoints: { 8 320: { 9 slidesPerView: 3, 10 }, 11 769: { 12 slidesPerView: 4, 13 } 14 } 15 }); 16 var slider1 = new Swiper('.main-slider__container', { 17 slidesPerView: 1, 18 spaceBetween: 20, 19 loop: true, 20 effect: "fade", 21 fadeEffect: { 22 crossFade: true 23 }, 24 centeredSlides: true, 25 navigation: { 26 nextEl: '.main-slider__footer-arrow-r', 27 prevEl: '.main-slider__footer-arrow-l', 28 }, 29 pagination: { 30 el: '.main-slider__footer-pagination', 31 type: 'fraction', 32 }, 33 thumbs: { 34 swiper: slider2, 35 }, 36 }); 37 38 if (document.querySelector('.main-slider__container')) { 39 // cartsSwiperT.slideNext(30, false); 40 slider1.on('slideNextTransitionStart', function () { 41 // slider2.slideNext(500, false); 42 slider2.slideToLoop(this.activeIndex-1, 500, false) 43 }); 44 slider1.on('slidePrevTransitionStart', function () { 45 slider2.slidePrev(500, false); 46 // slider2.slideToLoop(this.activeIndex-1, 500, false) 47 }); 48 // slider2.on('slideNextTransitionStart', function () { 49 // // slider1.slideNext(500, false); 50 // slider1.slideToLoop(this.activeIndex-1, 500, false) 51 // }); 52 // slider2.on('slidePrevTransitionStart', function () { 53 // slider1.slidePrev(500, false); 54 // // slider1.slideToLoop(this.activeIndex-1, 500, false) 55 // }); 56 } 57 var slider3 = new Swiper('.likely__items', { 58 slidesPerView: 4, 59 spaceBetween: 0, 60 navigation: { 61 nextEl: '.likely__arrow-r', 62 prevEl: '.likely__arrow-l', 63 }, 64 autoplay: { 65 delay: 5000, 66 }, 67 breakpoints: { 68 320: { 69 slidesPerView: 1, 70 }, 71 769: { 72 slidesPerView: 4, 73 } 74 } 75 }); 76 77 // if (document.querySelector('.main-slider__container')) { 78 // // cartsSwiperT.slideNext(30, false); 79 // slider1.on('slideNextTransitionStart', function () { 80 // slider2.slideNext(400, false); 81 // }); 82 // slider1.on('slidePrevTransitionStart', function () { 83 // slider2.slidePrev(400, false); 84 // }); 85 // slider2.on('slideNextTransitionStart', function () { 86 // slider1.slideNext(300, false); 87 // }); 88 // slider2.on('slidePrevTransitionStart', function () { 89 // slider1.slidePrev(300, false); 90 // }); 91 // } 92 93 var slider3 = new Swiper('.sertificat-slider__container', { 94 spaceBetween: 110, 95 loop: true, 96 speed: 1500, 97 centeredSlides: true, 98 navigation: { 99 nextEl: '.sertificat-slider__arrow-right', 100 prevEl: '.sertificat-slider__arrow-left', 101 }, 102 pagination: { 103 el: '.sertificat-slider__pagination', 104 type: 'fraction', 105 }, 106 breakpoints: { 107 320: { 108 slidesPerView: 2.85, 109 spaceBetween: 70 110 }, 111 769: { 112 slidesPerView: 3.5, 113 }, 114 1280: { 115 slidesPerView: 5 116 } 117 } 118 }); 119 120 121 // var slider43 = new Swiper('.cart-slider-thumbs__container-3', { 122 // slidesPerView: 3, 123 // freeMode: true, 124 // watchSlidesProgress: true, 125 // breakpoints: { 126 // 320: { 127 // slidesPerView: 1.85, 128 // spaceBetween: 40 129 // }, 130 // 769: { 131 // slidesPerView: 3, 132 // spaceBetween: 20 133 // } 134 // } 135 // }); 136 137 // var slider44 = new Swiper('.cart-slider__container-3', { 138 // spaceBetween: 10, 139 // navigation: { 140 // nextEl: ".cart-slider__arrow-r-3", 141 // prevEl: ".cart-slider__arrow-l-3", 142 // }, 143 // thumbs: { 144 // swiper: slider43, 145 // }, 146 // pagination: { 147 // el: '.cart-slider__pagination-3', 148 // type: 'fraction', 149 // } 150 // }); 151 152 // var slider45 = new Swiper('.cart-slider-thumbs__container-4', { 153 // slidesPerView: 3, 154 // freeMode: true, 155 // watchSlidesProgress: true, 156 // breakpoints: { 157 // 320: { 158 // slidesPerView: 1.85, 159 // spaceBetween: 40 160 // }, 161 // 769: { 162 // slidesPerView: 3, 163 // spaceBetween: 20 164 // } 165 // } 166 // }); 167 168 // var slider46 = new Swiper('.cart-slider__container-4', { 169 // spaceBetween: 10, 170 // navigation: { 171 // nextEl: ".cart-slider__arrow-r-4", 172 // prevEl: ".cart-slider__arrow-l-4", 173 // }, 174 // thumbs: { 175 // swiper: slider45, 176 // }, 177 // pagination: { 178 // el: '.cart-slider__pagination-4', 179 // type: 'fraction', 180 // } 181 // }); 182 183 184 function getString(str, length) { 185 186 let result; 187 str = str.trim(); 188 if (str.length > length) { 189 str = str.substr(0, length); 190 str += '...'; 191 } 192 result = str; 193 return result; 194 } 195 196 // mobile-menu 197 // if (document.querySelector('.mobile-menu')) { 198 // const mobileMenu = document.querySelector('.mobile-menu'), 199 // menuButtonToggle = document.querySelector('.header__supheader-burger'), 200 // body = document.querySelector('body'), 201 // closeModal = document.querySelector('.mobile-menu__close'); 202 // 203 // 204 // menuButtonToggle.addEventListener('click', (e) => { 205 // const target = e.target; 206 // const menuHandler = () => { 207 // mobileMenu.classList.toggle('hidden'); 208 // body.classList.toggle('noscroll'); 209 // }; 210 // if (target.closest('.header__supheader-burger')) { 211 // menuHandler(); 212 // } 213 // }); 214 // 215 // closeModal.addEventListener('click', (e) => { 216 // mobileMenu.classList.add('hidden'); 217 // body.classList.remove('noscroll'); 218 // }); 219 // 220 // } 221 let isMobile = true; 222 223 // mobile-menu 224 if (document.querySelector('.mobile-menu')) { 225 const mobileMenu = document.querySelector('.mobile-menu'), 226 menuButtonToggle = document.querySelector('.header__supheader-burger'), 227 closeButton = document.querySelector('.mobile-menu__close'); 228 229 menuButtonToggle.addEventListener('click', (e) => { 230 const target = e.target; 231 const menuHandler = () => { 232 if (!isMobile) { 233 mobileMenu.classList.add('hidden'); 234 return; 235 } 236 237 mobileMenu.classList.toggle('hidden') 238 lockBody(mobileMenu.classList.contains('hidden') ? 'remove' : 'add'); 239 240 241 }; 242 243 if (target.closest('.header__supheader-burger')) { 244 menuHandler(); 245 } 246 }); 247 248 closeButton.addEventListener('click', () => { 249 mobileMenu.classList.add('hidden'); 250 lockBody('remove'); 251 }); 252 } 253 254 const lockBody = (action) => { 255 const body = document.querySelector('body'); 256 body.classList[action]('noscroll'); 257 }; 258 // mobile authorized user menu 259 const selector = '.header__supheader-item.mobile'; 260 const userIcon = document.querySelector(selector); 261 262 if (userIcon && isMobile) { 263 userIcon.addEventListener('click', () => { 264 265 const mobileMenu = document.querySelector('.mobile-user-menu'), 266 closeButton = mobileMenu.querySelector('.mobile-menu__close'); 267 268 mobileMenu.classList.toggle('hidden'); 269 userIcon.classList.toggle('--active'); 270 271 lockBody('toggle'); 272 273 closeButton.addEventListener('click', () => { 274 mobileMenu.classList.add('hidden'); 275 lockBody('remove'); 276 userIcon.classList.remove('--active'); 277 }); 278 }); 279 } 280 281 window.addEventListener('resize', () => { 282 isMobile = window.matchMedia('(max-width: 768px)').matches; 283 284 if (!isMobile) { 285 const mobileMenu = document.querySelectorAll('.mobile-menu'); 286 287 mobileMenu.forEach((menu) => menu.classList.add('hidden')); 288 289 document.querySelector(selector)?.classList.remove('--active'); 290 } 291 }); 292 293 //ÑÐ°Ð±Ñ Ð² обÑем каÑалоге 294 if (document.querySelector('.catalog__tabs')) { 295 const findTabs = () => { 296 const findItem = document.querySelectorAll('.catalog__tab'); 297 const activeImg = document.querySelectorAll('.catalog__tab-img-active'); 298 const noActiveImg = document.querySelectorAll('.catalog__tab-img'); 299 const cart = document.querySelectorAll('.catalog__item'); 300 301 if (localStorage.getItem('tab') == 'view1') { 302 activeImg[0].style.display = 'block'; 303 noActiveImg[0].style.display = 'none'; 304 } else if (localStorage.getItem('tab') == 'view2') { 305 activeImg[1].style.display = 'block'; 306 noActiveImg[1].style.display = 'none'; 307 activeImg[0].style.display = 'none'; 308 noActiveImg[0].style.display = 'block'; 309 activeImg[2].style.display = 'none'; 310 noActiveImg[2].style.display = 'block'; 311 cart.forEach(item => { 312 item.classList.add('catalog__item--medium'); 313 item.classList.remove('catalog__item--list'); 314 }); 315 316 let textsMedium = document.querySelectorAll('.catalog__item--medium .catalog__item-block>span'); 317 textsMedium.forEach((item) => { 318 item.textContent = getString(item.textContent, 50); 319 }); 320 } else if (localStorage.getItem('tab') == 'view3') { 321 activeImg[2].style.display = 'block'; 322 noActiveImg[2].style.display = 'none'; 323 activeImg[0].style.display = 'none'; 324 noActiveImg[0].style.display = 'block'; 325 activeImg[1].style.display = 'none'; 326 noActiveImg[1].style.display = 'block'; 327 cart.forEach(item => { 328 item.classList.remove('catalog__item--medium'); 329 item.classList.add('catalog__item--list'); 330 }); 331 332 let textsLarge = document.querySelectorAll('.catalog__item--list .catalog__item-block>span'); 333 textsLarge.forEach((item) => { 334 item.textContent = getString(item.textContent, 60); 335 }); 336 } else { 337 activeImg[0].style.display = 'block'; 338 noActiveImg[0].style.display = 'none'; 339 } 340 341 findItem[0].addEventListener('click', (e) => { 342 343 activeImg[0].style.display = 'block'; 344 noActiveImg[0].style.display = 'none'; 345 activeImg[1].style.display = 'none'; 346 noActiveImg[1].style.display = 'block'; 347 activeImg[2].style.display = 'none'; 348 noActiveImg[2].style.display = 'block'; 349 cart.forEach(item => { 350 item.classList.remove('catalog__item--medium'); 351 item.classList.remove('catalog__item--list'); 352 }); 353 354 let textsBig = document.querySelectorAll('.catalog__item .catalog__item-block>span'); 355 textsBig.forEach((item) => { 356 item.textContent = getString(item.textContent, 110); 357 }); 358 359 localStorage.setItem('tab', 'view1'); 360 }); 361 362 findItem[1].addEventListener('click', (e) => { 363 364 activeImg[1].style.display = 'block'; 365 noActiveImg[1].style.display = 'none'; 366 activeImg[0].style.display = 'none'; 367 noActiveImg[0].style.display = 'block'; 368 activeImg[2].style.display = 'none'; 369 noActiveImg[2].style.display = 'block'; 370 cart.forEach(item => { 371 item.classList.add('catalog__item--medium'); 372 item.classList.remove('catalog__item--list'); 373 }); 374 375 let textsMedium = document.querySelectorAll('.catalog__item--medium .catalog__item-block>span'); 376 textsMedium.forEach((item) => { 377 item.textContent = getString(item.textContent, 50); 378 }); 379 380 localStorage.setItem('tab', 'view2'); 381 }); 382 383 findItem[2].addEventListener('click', (e) => { 384 385 activeImg[2].style.display = 'block'; 386 noActiveImg[2].style.display = 'none'; 387 activeImg[0].style.display = 'none'; 388 noActiveImg[0].style.display = 'block'; 389 activeImg[1].style.display = 'none'; 390 noActiveImg[1].style.display = 'block'; 391 cart.forEach(item => { 392 item.classList.remove('catalog__item--medium'); 393 item.classList.add('catalog__item--list'); 394 }); 395 396 let textsLarge = document.querySelectorAll('.catalog__item--list .catalog__item-block>span'); 397 textsLarge.forEach((item) => { 398 item.textContent = getString(item.textContent, 60); 399 }); 400 401 localStorage.setItem('tab', 'view3'); 402 403 }); 404 }; 405 findTabs(); 406 } 407 408 if (document.querySelector('.cart__tabs')) { 409 const items = document.querySelector('.cart__tabs'); 410 const findItem = document.querySelectorAll('.cart__tab'); 411 const cart = document.querySelectorAll('.cart__tab-content'); 412 413 items.addEventListener('click', (e) => { 414 const target = e.target.closest('.cart__tab'); 415 if (target) { 416 findItem.forEach((item, i) => { 417 if (item === target) { 418 item.classList.add('active-tab__cart'); 419 cart[i].classList.add('active'); 420 } else { 421 item.classList.remove('active-tab__cart'); 422 cart[i].classList.remove('active'); 423 } 424 }); 425 } 426 }); 427 } 428 //select 429 $('.categories__select').click(function () { 430 $(this).attr('tabindex', 1).focus(); 431 $(this).toggleClass('categories__active'); 432 $(this).find('.categories__select-body').slideToggle(300); 433 $(this).find('.categories__select-header img').toggleClass('rotate-arrow'); 434 }); 435 $('.categories__select-header').focusout(function () { 436 $(this).removeClass('categories__active');
437 $(this).find('.categories__select-body').slideUp(300); 438 }); 439 $('.categories__select .categories__select-body li').click(function () { 440 $(this).parents('.categories__select').addClass('active').find('span').text($(this).text()); 441 $(this).parents('.categories__select').find('input').attr('value', $(this).attr('data-id')); 442 }); 443 //pagination catalog 444 if (document.querySelector('.catalog__pagination-lev3')) { 445 let paginationContainer = document.querySelector('.catalog__pagination-lev3'); 446 let paginationItem = document.querySelectorAll('.catalog__pagination-item'); 447 448 paginationContainer.addEventListener('click', (e) => { 449 const target = e.target.closest('.catalog__pagination-item'); 450 if (target) { 451 paginationItem.forEach((item) => { 452 if (item === target) { 453 item.classList.add('active-pagination'); 454 } else { 455 item.classList.remove('active-pagination'); 456 } 457 }); 458 } 459 460 }); 461 } 462 // //tabs filter 463 /*if (document.querySelector('.filter-header')) { 464 let filterHeaders = document.querySelectorAll('.filter-header'); 465 let filterHeadersActive = document.querySelectorAll('.catalog__sidebar-level1-header'); 466 let filterHeadersActiveLev3 = document.querySelectorAll('.catalog__sidebar-level2-item'); 467 468 let filterBodys = document.querySelectorAll('.filter-body'); 469 let filterBodysLev2 = document.querySelectorAll('.catalog__sidebar-level2-body'); 470 471 let filterTabContent = document.querySelectorAll('.catalog__items-content'); 472 let filterTabGeneral = document.querySelector('.catalog__items-general'); 473 474 let filterTab = document.querySelector('.catalog__sidebar-items'); 475 476 let filterGeneralContentTab = document.querySelectorAll('.catalog__items-general > .catalog__item'); 477 478 let filterTabContent2 = document.querySelectorAll('.catalog__items-level2-content'); 479 let filterHeadersActive2 = document.querySelectorAll('.catalog__sidebar-level2-header'); 480 481 let filterLev2Content = document.querySelectorAll('.catalog__items-content > .catalog__item'); 482 let filterLev3Content = document.querySelectorAll('.catalog__items-level2-content > .catalog__item'); 483 484 let filterTabContent3 = document.querySelectorAll('.catalog__items-level3-content'); 485 486 let filterBreadCr = document.querySelectorAll('.breadcrumbs__link'); 487 488 //let filterLev3 = document.querySelector('.catalog__body-filter'); 489 490 //на лÑбом Ñаге вложенноÑÑи оÑкÑÑваеÑÑÑ ÑодеÑжимое 491 filterHeaders.forEach((item, i) => { 492 item.addEventListener('click', (e) => { 493 filterBodys[i].classList.toggle('active'); 494 }); 495 }); 496 497 filterTab.addEventListener('click', (e) => { 498 //клик по наÑалÑÐ½Ð¾Ð¼Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑ ÑайдбаÑа, оÑкÑÑÑие 1-й вложенноÑÑи 499 const target = e.target.closest('.catalog__sidebar-level1-header'); 500 501 filterHeadersActive.forEach((item, i) => { 502 if (item === target) { 503 filterTabGeneral.classList.add('hidden'); 504 item.classList.add('active-filter__level1'); 505 filterTabContent[i].classList.add('active-tab'); 506 filterTabContent3.forEach((item) => { 507 item.classList.remove('active-tab'); 508 }); 509 filterBreadCr[2].textContent = "/" + item.textContent; 510 filterBreadCr[1].classList.remove('breadcrumbs__link-active'); 511 filterBreadCr[2].classList.add('breadcrumbs__link-active'); 512 filterBreadCr[3].textContent = ""; 513 filterBreadCr[4].textContent = ""; 514 //filterLev3.style.display = 'none'; 515 } else { 516 item.classList.remove('active-filter__level1'); 517 filterTabContent[i].classList.remove('active-tab'); 518 } 519 }); 520 //клик по 1-Ð¼Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑ ÑайдбаÑа, оÑкÑÑÑие 2-й вложенноÑÑи 521 const targetLev2 = e.target.closest('.catalog__sidebar-level2-header'); 522 523 filterHeadersActive2.forEach((item, i) => { 524 if (item === targetLev2) { 525 filterTabContent2[i].classList.add('active-tab'); 526 filterTabContent3.forEach((item) => { 527 item.classList.remove('active-tab'); 528 }); 529 filterBreadCr[3].textContent = "/" + item.textContent; 530 filterBreadCr[2].classList.remove('breadcrumbs__link-active');
531 filterBreadCr[3].classList.add('breadcrumbs__link-active'); 532 filterBreadCr[4].textContent = ""; 533 //filterLev3.style.display = 'none'; 534 535 } else { 536 filterTabContent2[i].classList.remove('active-tab'); 537 } 538 }); 539 540 }); 541 //клик по наÑалÑнÑм ÑлеменÑам, оÑкÑÑÑие 1-й вложенноÑÑи 542 filterGeneralContentTab.forEach((item, i) => { 543 item.addEventListener('click', (e) => { 544 filterTabGeneral.classList.add('hidden'); 545 filterTabContent[i].classList.add('active-tab'); 546 }); 547 }); 548 //клик по 1-Ñм ÑлеменÑам, оÑкÑÑÑие 2-й вложенноÑÑи 549 filterLev2Content.forEach((item, i) => { 550 item.addEventListener('click', (e) => { 551 item.closest('.catalog__items-content').classList.add('hidden'); 552 filterTabContent2[i].classList.add('active-tab'); 553 }); 554 }); 555 //клик по 2-Ð¼Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑ ÑайдбаÑа, оÑкÑÑÑие 3-й вложенноÑÑи Ñ Ð²ÑпадаÑками 556 filterBodysLev2.forEach((item) => { 557 item.addEventListener('click', (e) => { 558 const target = e.target.closest('.catalog__sidebar-level2-item'); 559 filterHeadersActiveLev3.forEach((item, i) => { 560 if (item === target) { 561 item.classList.add('active-filter__level3'); 562 filterTabContent3[i].classList.add('active-tab'); 563 filterBreadCr[4].textContent = "/" + item.textContent; 564 filterBreadCr[3].classList.remove('breadcrumbs__link-active'); 565 filterBreadCr[4].classList.add('breadcrumbs__link-active'); 566 filterLev3.style.display = 'block'; 567 } else { 568 item.classList.remove('active-filter__level3'); 569 filterTabContent3[i].classList.remove('active-tab'); 570 } 571 }); 572 }); 573 }); 574 575 //клик по 2-Ñм ÑлеменÑам, оÑкÑÑÑие 3-й вложенноÑÑи Ñ Ð²ÑпадаÑками 576 filterLev3Content.forEach((item, i) => { 577 item.addEventListener('click', (e) => { 578 item.closest('.catalog__items-level2-content').classList.add('hidden'); 579 filterTabContent3[i].classList.add('active-tab'); 580 filterLev3.style.display = 'block'; 581 }); 582 }); 583 584 }*/ 585 //accardion 586 if (document.querySelector('.cart__specifications-mob')) { 587 let accardion = document.querySelector('.cart__specifications-mob'); 588 let tab = document.querySelectorAll('.cart__specifications-question'); 589 let answer = document.querySelectorAll('.cart__select-body'); 590 591 accardion.addEventListener('click', (e) => { 592 const target = e.target.closest('.cart__specifications-question'); 593 if (target) { 594 tab.forEach((item, i) => { 595 if (item === target) { 596 if (item.classList.contains('active-tab__cart')) { 597 item.classList.remove('active-tab__cart'); 598 answer[i].classList.remove('active'); 599 } else { 600 item.classList.add('active-tab__cart'); 601 answer[i].classList.add('active'); 602 } 603 // tab[i].classList.add('active-accardion'); 604 } else { 605 item.classList.remove('active-tab__cart'); 606 answer[i].classList.remove('active'); 607 // tab[i].classList.remove('active-accardion'); 608 } 609 }); 610 } 611 }); 612 } 613 614 if (document.querySelector('.cart__left-tabs')) { 615 const items = document.querySelector('.cart__left-tabs'); 616 const findItem = document.querySelectorAll('.cart__left-tab'); 617 const cart = document.querySelectorAll('.cart__left-content'); 618 619 items.addEventListener('click', (e) => { 620 const target = e.target.closest('.cart__left-tab'); 621 if (target) { 622 findItem.forEach((item, i) => { 623 if (item === target) { 624 item.classList.add('active-tab__cart'); 625 cart[i].classList.add('active'); 626 } else { 627 item.classList.remove('active-tab__cart'); 628 cart[i].classList.remove('active'); 629 } 630 }); 631 } 632 }); 633 } 634 635 // помеÑка 636 let tabsSliders = [], tabsSlidersThumbs = []; 637 638 $(".cart-slider-thumbs__container").each(function () { 639 let el = $(this); 640 let newSlider = new Swiper(this, { 641 slidesPerView: 3, 642 watchSlidesProgress: true, 643 observer: true, 644 observeParents: true, 645 navigation: {
646 nextEl: el.find('.cart-slider__arrow-rt')[0], 647 prevEl: el.find('.cart-slider__arrow-lt')[0], 648 }, 649 breakpoints: { 650 320: { 651 slidesPerView: 1.85, 652 spaceBetween: 40 653 }, 654 769: { 655 slidesPerView: 3, 656 spaceBetween: 20 657 } 658 } 659 }); 660 tabsSlidersThumbs.push(newSlider); 661 }); 662 663 $(".cart-slider__container").each(function (index) { 664 let el = $(this); 665 tabsSliders.push(new Swiper(this, { 666 spaceBetween: 10, 667 observer: true, 668 observeParents: true, 669 navigation: { 670 nextEl: el.parent().find('.cart-slider__arrow-r')[0], 671 prevEl: el.parent().find('.cart-slider__arrow-l')[0], 672 }, 673 thumbs: { 674 swiper: tabsSlidersThumbs[index], 675 } 676 })); 677 }); 678 679 if (document.querySelector('.cart__left-tabs-spec')) { 680 let tabsLvl1 = $(".cart__left-tab"), 681 contentLvl1 = $(".cart__left-tabs-wrapper").children(); 682 683 tabsLvl1.click(function () { 684 $(this).addClass("active-tab__cart").siblings().removeClass("active-tab__cart"); 685 contentLvl1.eq($(this).index()).addClass("active").siblings().removeClass("active-tab__cart"); 686 }); 687 contentLvl1.each(function (index) { 688 let el = $(this), tabsLvl2 = el.find(".cart__left-tab-spec"), 689 contentLvl2 = el.find(".cart__left-tabs-content"); 690 691 tabsLvl2.click(function () { 692 $(this).addClass("active-tab__cart").siblings().removeClass("active-tab__cart"); 693 contentLvl2.eq($(this).index()).addClass("active").siblings().removeClass("active"); 694 }); 695 }); 696 697 /* 698 const items = document.querySelector('.cart__left-tabs-spec'); 699 const findItem = document.querySelectorAll('.cart__left-tab-spec'); 700 const cart = document.querySelectorAll('.cart__left-tabs-content'); 701 let tabsSliders = []; 702 703 items.addEventListener('click', (e) => { 704 const target = e.target.closest('.cart__left-tab-spec'); 705 if (target) { 706 findItem.forEach((item, i) => { 707 if (item === target) { 708 item.classList.add('active-tab__cart'); 709 cart[i].classList.add('active'); 710 tabsSliders.push(new Swiper('.cart-slider-thumbs__container-2', { 711 slidesPerView: 3, 712 freeMode: true, 713 watchSlidesProgress: true, 714 breakpoints: { 715 320: { 716 slidesPerView: 1.85, 717 spaceBetween: 40 718 }, 719 769: { 720 slidesPerView: 3, 721 spaceBetween: 20 722 } 723 } 724 })); 725 726 tabsSliders.push(new Swiper('.cart-slider__container-2', { 727 spaceBetween: 10, 728 navigation: { 729 nextEl: ".cart-slider__arrow-r-2", 730 prevEl: ".cart-slider__arrow-l-2", 731 }, 732 thumbs: { 733 swiper: tabsSliders[i], 734 }, 735 pagination: { 736 el: '.cart-slider__pagination-2', 737 type: 'fraction', 738 } 739 })); 740 } else { 741 item.classList.remove('active-tab__cart'); 742 cart[i].classList.remove('active'); 743 } 744 }); 745 } 746 });*/ 747 } 748 749 /*var slider41 = new Swiper('.cart-slider-thumbs__container', { 750 slidesPerView: 3, 751 freeMode: true, 752 watchSlidesProgress: true, 753 breakpoints: { 754 320: { 755 slidesPerView: 1.85, 756 spaceBetween: 40 757 }, 758 769: { 759 slidesPerView: 3, 760 spaceBetween: 20 761 } 762 } 763 }); 764 765 var slider4 = new Swiper('.cart-slider__container', { 766 spaceBetween: 10, 767 navigation: { 768 nextEl: ".cart-slider__arrow-r", 769 prevEl: ".cart-slider__arrow-l", 770 }, 771 thumbs: { 772 swiper: slider41, 773 }, 774 pagination: { 775 el: '.cart-slider__pagination', 776 type: 'fraction', 777 } 778 });*/ 779 780 // mask 781 if ($('#telephone').length) { 782 $('#telephone').mask('+7(999) 999-99-99'); 783 } 784 785 //toggle password 786 $('.toggle-password').click(function () { 787 const eye = $(this); 788 const input = eye.parent().find('#password'); 789 790 if ($(input).attr('type') === 'password') { 791 $(input).attr('type', 'text'); 792 $(eye).addClass('open'); 793 } else { 794 $(input).attr('type', 'password'); 795 $(eye).removeClass('open'); 796 } 797 }); 798 // Accordion 799 const items = document.querySelectorAll('.accordion__item-trigger'); 800 801 if (items.length) {
802 items.forEach((item) => { 803 item.addEventListener('click', (e) => { 804 const parent = item.parentNode; 805 806 if (e.target.closest('.history__accordion-item-btn')) return 807 808 parent.classList.toggle('accordion__item-active'); 809 }); 810 }); 811 } 812 813 //Order creation 814 let order = JSON.parse(localStorage.getItem('order')) || []; 815 816 817 const orderModuleView = () => { 818 if (order.length) { 819 displayOrderList(order); 820 changeCheckboxView(order) 821 } 822 823 function changeCheckboxView(order) { 824 825 if (order.length) { 826 order.forEach(({article}) => { 827 const node = document.querySelector(`[data-id=${article}]`); 828 const input = node?.querySelector('input') 829 830 if (input) { 831 input.checked = !input.checked 832 } 833 }) 834 } 835 } 836 837 const tableCheckboxes = document.querySelectorAll('.price__content-info-checkbox'); 838 839 if (tableCheckboxes.length) { 840 tableCheckboxes.forEach((checkbox) => { 841 const input = checkbox.parentNode.querySelector('input'); 842 const itemId = checkbox.closest('.price__content-info-table-row').dataset.itemId 843 844 input.addEventListener('change', () => { 845 const isChecked = input.checked; 846 847 const row = input.closest('.price__content-info-table-row'); 848 849 const data = {...serializeDataRow(row, 'td', 1), itemId}; 850 851 if (isChecked) { 852 order = [...order, data]; 853 localStorage.setItem('order', JSON.stringify(order)); 854 855 displayOrderList(order); 856 return; 857 } 858 859 order = order.filter(({article}) => article !== data.article); 860 861 localStorage.setItem('order', JSON.stringify(order)); 862 863 displayOrderList(order); 864 865 }); 866 }); 867 } 868 869 const serializeDataRow = (node, selector, slice = 0) => 870 Array.from(node.querySelectorAll(selector)) 871 .slice(slice) 872 .reduce((acc, node, index) => { 873 const names = ['article', 'name', 'count', 'price', 'amount', 'size']; 874 875 acc[names[index]] = node.textContent.trim(); 876 877 return acc; 878 }, {}); 879 880 881 function displayOrderList(orders) { 882 const table = document.querySelector('.order-creation__info'); 883 const existText = document.querySelector('.order-creation__content .empty'); 884 885 if (!orders.length) { 886 table.style.display = 'none'; 887 existText.style.display = 'block'; 888 return; 889 } 890 891 const orderTable = document.querySelector('.order-creation__order-table'); 892 893 if (!orderTable) return; 894 895 const body = orderTable.querySelector('tbody'); 896 897 body.innerHTML = orders 898 .map(({article, name, count, price, amount, size, itemId, comment}, index) => { 899 if (index < 1) { 900 $('.order-creation__field-body-comment').val(comment || '') 901 // test = comment || '' 902 } 903 904 return ` 905 <tr class="order-creation__order-table-row" data-item-id="${itemId}"> 906 <td aria-label="ÐÑÑикÑл" data-label="ÐÑÑикÑл" colspan="1" class="order-creation__order-table-cell">${article}</td> 907 <td aria-label="Ðазвание" data-label="Ðазвание" colspan="2" class="order-creation__order-table-cell"> 908 ${name} 909 </td> 910 <td aria-label="ШÑÑк в Ñпаковке" data-label="ШÑÑк в Ñпаковке" colspan="1" class="order-creation__order-table-cell">${parseFloat( 911 amount 912 )}</td> 913 <td data-label="ÐолиÑеÑÑво Ñпаковок" colspan="1" class="order-creation__order-table-cell counter"> 914 <div> 915 <button aria-label="УменÑÑиÑÑ Ð·Ð½Ð°Ñение ÑоваÑа" class="order-creation__order-table-btn decrement"> 916 <img src="/local/templates/main/img/order-creation/decrement.svg" alt="decrement" /> 917 </button> 918 <input aria-label="ÐолиÑеÑÑво Ñпаковок" type="number" max="100" maxlength="3" minlength="1" value="${count}" class="order-creation__order-table-counter"> 919 <button aria-label="УвелиÑиÑÑ Ð·Ð½Ð°Ñение ÑоваÑа" class="order-creation__order-table-btn increment"> 920 <img src="/local/templates/main/img/order-creation/increment.svg" alt="decrement" /> 921 </button> 922 </div> 923 </td> 924 <td aria-label="ÐбÑем Ñпаковок" data-label="ÐбÑем Ñпаковок" colspan="1" class="order-creation__order-table-cell"> 925 ${String((parseFloat(size) * count).toFixed(3)).replace('.', ',')} м³</td> 926 <td aria-label="СÑмма (без ÐÐС)" data-label="СÑмма (без ÐÐС)" colspan="1" class="order-creation__order-table-cell"> 927 ${(parseFloat(price).toFixed(2) * count * parseFloat(amount)).toFixed(2)} ÑÑб. 928 </td> 929 <td colspan="1" class="order-creation__order-table-cell"> 930 <button aria-label="УдалиÑÑ ÑоваÑ" class="order-creation__order-table-remove-btn"> 931 <img src="/local/templates/main/img/order-creation/remove-icon.svg" alt="remove" /> 932 </button> 933 </td> 934 </tr> 935 `; 936 }) 937 .join(''); 938 939 table.style.display = 'flex'; 940 existText.style.display = 'none'; 941 942 changeOrderCount(); 943 removeOrder(); 944 updateOrderData(); 945 cnhageCounterValue() 946 } 947 948 //Remove product from order 949 function removeOrder() { 950 const removeButtons = document.querySelectorAll('.order-creation__order-table-remove-btn'); 951 952 removeButtons.forEach((button) => { 953 button.addEventListener('click', () => {
954 const row = button.closest('.order-creation__order-table-row'); 955 956 const {article} = serializeDataRow(row, 'td'); 957 958 const cell = document.querySelector(`[data-id=${article}]`); 959 const input = cell?.querySelector('input'); 960 961 order = order.filter((order) => article !== order.article); 962 963 localStorage.setItem('order', JSON.stringify(order)) 964 965 displayOrderList(order); 966 967 if (input) { 968 input.checked = !input.checked; 969 } 970 }); 971 972 updateOrderData(); 973 }); 974 } 975 976 //Increment And Decrement 977 const MAX_ADDING_COUNTER_VALUE = 10000 978 const MIN_ADDING_COUNTER_VALUE = 1 979 980 function changeOrderCount() { 981 const buttons = document.querySelectorAll('.order-creation__order-table-cell.counter button'); 982 983 buttons.forEach((button) => { 984 button.addEventListener('click', () => { 985 const row = button.closest('.order-creation__order-table-row'); 986 987 const {article} = serializeDataRow(row, 'td'); 988 989 order = order.map((order) => { 990 const currentOrderItem = order.article === article; 991 992 if (currentOrderItem) { 993 if (button.classList.contains('increment') && order.count < MAX_ADDING_COUNTER_VALUE) { 994 order.count++; 995 } else { 996 if (button.classList.contains('decrement') && order.count > MIN_ADDING_COUNTER_VALUE) { 997 order.count--; 998 } 999 } 1000 } 1001 1002 return order; 1003 }); 1004 1005 localStorage.setItem('order', JSON.stringify(order)) 1006 1007 displayOrderList(order); 1008 updateOrderData(); 1009 }); 1010 }); 1011 } 1012 1013 //Update Order Data 1014 function updateOrderData() { 1015 const amountNodes = document.querySelectorAll('.order-creation__order-table-cell.amount'); 1016 const sizeNodes = document.querySelectorAll('.order-creation__order-table-cell.size'); 1017 1018 const size = order.reduce( 1019 (acc, order) => acc + (parseFloat(order.size) * order.count), 1020 0 1021 ); 1022 const amount = order.reduce((acc, order) => acc + parseFloat(order.price) * order.count * parseFloat(order.amount), 0); 1023 1024 amountNodes.forEach((node) => { 1025 node.textContent = `${amount.toFixed(2)} ÑÑб.`; 1026 }); 1027 1028 sizeNodes.forEach((node) => { 1029 node.textContent = `${String(size.toFixed(3)).replace('.', ',')} м³`; 1030 }); 1031 } 1032 1033 function cnhageCounterValue() { 1034 const counters = document.querySelectorAll('.order-creation__order-table-counter') 1035 1036 counters.forEach((counter) => { 1037 const row = counter.closest('tr').children[0] 1038 const {article} = order.find((order) => order.article === row.textContent) 1039 1040 counter.addEventListener('change', (event) => { 1041 const value = event.target.value; 1042 const isBigger = value > MAX_ADDING_COUNTER_VALUE || value < MIN_ADDING_COUNTER_VALUE 1043 1044 const data = order.map((order) => { 1045 if (order.article === article.trim()) { 1046 order.count = isBigger ? 1 : value 1047 } 1048 1049 return order 1050 }) 1051 1052 localStorage.setItem('order', JSON.stringify(data)) 1053 updateOrderData() 1054 displayOrderList(data) 1055 }) 1056 }) 1057 } 1058 } 1059 1060 // const node = document.querySelector('.price__content')?.children[1]; 1061 const node = document.querySelector('.price__content'); 1062 1063 const observer = new MutationObserver(function () { 1064 orderModuleView() 1065 }) 1066 1067 if (node) { 1068 observer.observe(node, {childList: true, subtree: true}); 1069 } 1070 1071 orderModuleView() 1072 const serializeDataRow = (node, selector, slice = 0) => 1073 Array.from(node.querySelectorAll(selector)) 1074 .slice(slice) 1075 .reduce((acc, node, index) => { 1076 const names = ['article', 'name', 'count', 'price', 'amount', 'size']; 1077 1078 acc[names[index]] = node.textContent.trim(); 1079 1080 return acc; 1081 }, {}); 1082 1083 //Repeat order 1084 const repeatButtons = document.querySelectorAll('.history__accordion-item-btn'); 1085 1086 if (repeatButtons.length) { 1087 repeatButtons.forEach((button) => { 1088 button.addEventListener('click', (e) => { 1089 1090 const parent = button.closest('.history__accordion-item'); 1091 const rows = parent.querySelectorAll('.history__content-table-row'); 1092 const itemIds = Array.from(parent.querySelectorAll('.history__content-table-row'), ((item) => item.dataset.itemId)) 1093 const comment = $(button).parent().parent().find('.history__content-comment').html(); 1094 1095 let data = []; 1096 1097 rows.forEach((row, index) => { 1098 1099 const dataRow = serializeDataRow(row, 'td'); 1100 const amount = parseInt(row.querySelector('.hidden').textContent) 1101 1102 const serializeData = { 1103 amount: parseInt(amount), 1104 article: dataRow.article, 1105 count: parseInt(dataRow.count), 1106 name: dataRow.name, 1107 price: dataRow.size, 1108 size: dataRow.amount.replace(',', '.'), 1109 itemId: itemIds[index], 1110 comment: comment.trim() || '' 1111 }; 1112 data = [...data, serializeData]; 1113 }); 1114 1115 localStorage.setItem('order', JSON.stringify(data)); 1116 1117 history.pushState(null, null, '/sozdat-zakaz/') 1118 window.location.reload() 1119 }); 1120 }); 1121 } 1122 1123 // add query params to history page 1124 // const url = new URL(window.location.href) 1125 // const page = url.searchParams.get('PAGEN_1') 1126 // 1127 // if (url.search !== '?filter_history=Y' && window.location.pathname === '/istoriya-zakazov/' && !page) { 1128 // history.pushState(null, null, "?filter_history=Y"); 1129 // window.location.href = url.href + '?filter_history=Y' 1130 // 1131 // observer.disconnect() 1132 // } 1133 1134 $('.send_order-btn').click(function (event) { 1135 event.preventDefault(); 1136 1137 var arrKeys = []; 1138 1139 $('.order-creation__info').find('.order-creation__order-table-row').each(function () { 1140 if ($(this).data('item-id') != undefined) { 1141 var id = $(this).data('item-id'); 1142 var count = +$(this).find('.order-creation__order-table-counter').val(); 1143 var articul = $(this).find('.order-creation__order-table-cell').eq(0).text(); 1144 var countIn = $(this).find('.order-creation__order-table-cell').eq(2).text(); 1145 var comment = $(document).find('textarea[name="comment"]').val().toString(); 1146 arrKeys.push([encodeURIComponent(id), encodeURIComponent(count), encodeURIComponent(articul), encodeURIComponent(countIn), encodeURIComponent(comment)]); 1147 } 1148 }); 1149 1150 const orderButton = $('.send_order-btn') 1151 1152 $.ajax({ 1153 type: 'POST', 1154 url: '/ajax/order.php', 1155 data: { 1156 arrKeys: arrKeys 1157 }, 1158 success: function (data) { 1159 if (data === 'success') { 1160 // appendTable(); 1161 removeOrder(); 1162 showModalSuccessText(); 1163 $('#order-creation').css('display', 'none'); 1164 window.scrollTo({ 1165 top: 0, 1166 left: 0, 1167 behavior: "smooth", 1168 }); 1169 } 1170 1171 if (data === 'error') { 1172 $('#order-creation').css('display', 'none'); 1173 showModalErrorText() 1174 } 1175 console.log(data); 1176 orderButton.removeAttr('disabled') 1177 }, 1178 error: function (data) { 1179 console.log(data); 1180 console.log(false); 1181 orderButton.removeAttr('disabled') 1182 showModalErrorText() 1183 }, 1184 beforeSend: () => { 1185 orderButton.attr('disabled', 'true') 1186 } 1187 }) 1188 }); 1189 1190 const title = document.querySelector('.modal__title') 1191 const title_status = document.querySelector('.status-modal_title') 1192 const body = document.querySelector('#order-creation').querySelector('.modal__body'); 1193 1194 $('.order-creation__order-btn').click(function () { 1195 appendTable(); 1196 1197 const value = $('.order-creation__field-body-comment').val().replaceAll('<br>', '\n'); 1198 const parsedHTML = $.parseHTML(value) 1199 $('.order-creation__field-input').val(value.replace('ÐомменÑаÑий оÑÑÑÑÑÑвовал', '')); 1200 1201 // removeOrder() 1202 window.scrollTo({ 1203 top: 0, 1204 left: 0, 1205 behavior: "smooth", 1206 }); 1207 }); 1208 1209 function appendTable() { 1210 const table = document.querySelector('.order-creation__order-table').cloneNode(true); 1211 $(table).find('.order-creation__order-table-counter').addClass('disabled') 1212 $(table).find('.order-creation__order-table-cell.counter input').css('textAlign', 'start') 1213 1214 body.appendChild(table); 1215 $('.modal__wrapper').first().css('display', 'flex'); 1216 $('body').addClass('noscroll') 1217 } 1218 1219 // function removeTable() { 1220 // body.textContent = ''; 1221 // $('body').removeClass('noscroll') 1222 // } 1223 function removeTable() { 1224 $(body).find('table').remove() 1225 $('body').removeClass('noscroll') 1226 } 1227 function showModalErrorText() { 1228 // body.textContent = ''; 1229 title_status.textContent = 'Ð ÑожалениÑ, пÑи Ñоздании заказа пÑоизоÑла оÑибка, ÑвÑжиÑеÑÑ Ñ Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑом.' 1230 1231 $('#order-status').first().css('display', 'flex'); 1232 } 1233 1234 function showModalSuccessText() { 1235 // body.textContent = ''; 1236 title_status.textContent = 'Ðаказ ÑÑпеÑно оÑпÑавлен.' 1237 1238 $('#order-status').first().css('display', 'flex'); 1239 } 1240 1241 function removeOrder() { 1242 const table = document.querySelector('.order-creation__info'); 1243 const existText = document.querySelector('.order-creation__content .empty'); 1244 1245 if (order.length) { 1246 changeCheckboxView(order) 1247 } 1248 1249 function changeCheckboxView(order) { 1250 order.forEach(({article}) => { 1251 const node = document.querySelector(`[data-id=${article}]`); 1252 const input = node?.querySelector('input') 1253 1254 if (input) { 1255 input.checked = !input.checked 1256 } 1257 }) 1258 } 1259 1260 table.style.display = 'none'; 1261 existText.style.display = 'block'; 1262 1263 localStorage.removeItem('order') 1264 order = [] 1265 } 1266 1267 const close = document.querySelectorAll('.modal__close') 1268 const modal = document.querySelectorAll('.modal__wrapper') 1269 1270 close.forEach((button, index) => { 1271 button.addEventListener('click', () => { 1272 modal[index].style.display = 'none'; 1273 body.classList.remove('locked'); 1274 1275 removeTable(); 1276 }); 1277 }) 1278 1279 modal.forEach((element, index) => { 1280 element.addEventListener('click', (e) => { 1281 if (e.target === modal[index]) { 1282 element.style.display = 'none'; 1283 body.classList.remove('locked'); 1284 1285 removeTable(); 1286 } 1287 }); 1288 }) 1289 1290 // Open/Close order list 1291 function bindModal(trigger, modal, close) { 1292 trigger = document.querySelector(trigger), 1293 modal = document.querySelector(modal), 1294 close = document.querySelector(close) 1295 1296 const body = document.body 1297 const bodyTable = document.querySelector('#fully-order').querySelector('.modal__body'); 1298 1299 trigger.addEventListener('click', e => { 1300 e.preventDefault() 1301 modal.style.display = 'flex' 1302 body.classList.add('noscroll') 1303 1304 const table = document.querySelector('.order-creation__order-table').cloneNode(true); 1305 1306 bodyTable.appendChild(table); 1307 $('.modal__table-wrapper').css('display', 'flex'); 1308 $('.order-creation__order-table tfoot').addClass('fully-tfoot') 1309 $('#fully-order .order-creation__order-table').addClass('fully-table') 1310 }); 1311 close.addEventListener('click', () => { 1312 modal.style.display = 'none' 1313 body.classList.remove('noscroll') 1314 1315 $('.order-creation__order-table').removeClass('fully-table') 1316 $('.order-creation__order-table tfoot').removeClass('fully-tfoot') 1317 bodyTable.textContent = ''; 1318 }); 1319 modal.addEventListener('click', e => { 1320 if (e.target === modal) { 1321 modal.style.display = 'none' 1322 body.classList.remove('noscroll') 1323 1324 $('.order-creation__order-table').removeClass('fully-table') 1325 $('.order-creation__order-table tfoot').removeClass('fully-tfoot') 1326 bodyTable.textContent = ''; 1327 } 1328 }) 1329 } 1330 1331 const openOrder = document.querySelector('#open-order'); 1332 1333 if (openOrder) { 1334 bindModal('#open-order', '#fully-order', '#close-fully-order') 1335 } 1336}); 1337 1338/* пÑавки по мобилÑÐ½Ð¾Ð¼Ñ Ð¼ÐµÐ½Ñ */ 1339document.addEventListener('DOMContentLoaded', function () { 1340 const toggles = document.querySelectorAll('.js-submenu-toggle'); 1341
1342 toggles.forEach(function (toggle) { 1343 toggle.addEventListener('click', function () { 1344 const parent = this.closest('.mobile-menu__item'); 1345 parent.classList.toggle('open'); 1346 }); 1347 }); 1348});
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.