1class MenuHandler{ 2 3 menuButton; 4 menu; 5 6 // 7 // ÐонÑÑÑÑкÑÐ¾Ñ 8 // params = { 9 // menuButtonSelector - ÑелекÑÐ¾Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸ пеÑеклÑÑени бÑÑеÑбÑода 10 // menuSelector - ÑелекÑÐ¾Ñ ÐºÐ¾Ð½ÑейнеÑа Ð¼ÐµÐ½Ñ 11 // } 12 constructor(params){ 13 this.menuButton = document.querySelector(params.menuButtonSelector); 14 this.menu = document.querySelector(params.menuSelector); 15 this.#menuInit(); 16 this.#menuButtonInit(); 17 } 18 19 // 20 // ÐниÑиализаÑÐ¸Ñ ÑлеменÑов Ð¼ÐµÐ½Ñ 21 // 22 #menuInit(){ 23 const that = this; 24 const delay = 300; 25 const items = this.menu.querySelectorAll(".items li A"); 26 $(items).on({ 27 // ÐÐ»Ñ Ñежима СмаÑÑÑона 28 click: function(){ 29 if(that.menuModePC()) return; 30 const currentItem = this; 31 items.forEach(item => { 32 if(item == currentItem){ 33 $(item.parentNode.querySelector(".submenu")).slideToggle(delay); 34 } else { 35 $(item.parentNode.querySelectorAll(".submenu")).slideUp(delay); 36 } 37 }); 38 } 39 }); 40 } 41 42 // 43 // ÐниÑиализаÑÐ¸Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸ бÑÑеÑбÑода 44 // 45 #menuButtonInit(){ 46 const that = this; 47 // СкÑÑÑÑ/показаÑÑ Ð¼ÐµÐ½Ñ "бÑÑеÑбÑода" в Ñежиме ÑмаÑÑÑона 48 this.menuButton.onclick = function(){ 49 50 // ÐÑли кнопка ÑкÑÑÑа, знаÑÐ¸Ñ Ñежим ÐÐ - вÑÑ Ð¾Ð´Ð¸Ð¼ 51 if(that.menuModePC()) return; 52 53 // ÑоÑÑоÑние кнопки 54 that.menuButton.classList.toggle('close') 55 56 // ÑоÑÑоÑние Ð¼ÐµÐ½Ñ 57 that.menu.classList.toggle('active') 58 59 // ÑÐ¸ÐºÑ ÑиÑÐ¸Ð½Ñ ÑкÑолла, ÑÑÐ¾Ð±Ñ Ð½Ðµ бÑло "ÑкаÑков" 60 that.#modalFixScroll( that.menuButton.classList.contains('close') ) 61 62 // ÑÐ¸ÐºÑ ÑкÑолла Ñ Ð±Ð¾Ð´Ð¸ 63 document.body.classList.toggle('freeze') 64 } 65 } 66 67 // 68 // Режим Ð¼ÐµÐ½Ñ ÐРили неÑ... 69 // 70 menuModePC(){ 71 // ÐÑли кнопка ÑкÑÑÑа, знаÑÐ¸Ñ Ñежим ÐÐ 72 // console.log(this.menuButton); 73 return this.menuButton.offsetParent === null; 74 // return this.menuButton.style.display=="none"; 75 } 76 77 // 78 // УÑиÑÑваем ÑиÑÐ¸Ð½Ñ ÑкÑолла пÑи оÑкÑÑÑии/закÑÑÑии модалÑного окна 79 // 80 #modalFixScroll(isOpen){ 81 const html = document.documentElement; 82 //ÑиÑина ÑкÑоллбаÑа Ñавна ÑазниÑе ÑиÑÐ¸Ð½Ñ Ð¾ÐºÐ½Ð° и ÑиÑÐ¸Ð½Ñ Ð´Ð¾Ðº
82ÑменÑа (ÑелекÑоÑа html) 83 const scrollWidth = window.innerWidth - html.clientWidth; 84 //пÑи оÑкÑÑÑии и налиÑие ÑазниÑÑ Ð¾ÐºÐ½Ð° задаем оÑÑÑп, инаÑе ÑбÑаÑÑваем 85 html.style.marginRight = (isOpen && scrollWidth) ? scrollWidth + "px" : ""; 86 } 87 88}
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.