JSFiddle - React, Tailwind, and code Playground

by feniksdv

HTML

<div class="top-wrp-hidden-wrp">
  <div class="top-wrp-hidden-left">
    <ul class="top-wrp-hidden-left-list">
      <li class="top-wrp-hidden-left-item"><button class="top-wrp-hidden-left-item-btn-mo" name="month" value="13">месяц</button></li>
      <li class="top-wrp-hidden-left-item"><button class="top-wrp-hidden-left-item-btn-ko" name="month" value="14">квартал</button></li>
      <li class="top-wrp-hidden-left-item"><button class="top-wrp-hidden-left-item-btn-po" name="month" value="15">полугодие</button></li>
      <li class="top-wrp-hidden-left-item"><button class="top-wrp-hidden-left-item-btn-yo" name="month" value="16">год</button></li>
    </ul>
  </div>
  <div class="top-wrp-hidden-right">
    <div class="top-wrp-hidden-right-wrp">
      <button class="top-wrp-hidden-right-wrp-button" name="month" value="1">Январь</button>
      <button class="top-wrp-hidden-right-wrp-button" name="month" value="2">Февраль</button>
      <button class="top-wrp-hidden-right-wrp-button" name="month" value="3">Март</button>
      <button class="top-wrp-hidden-right-wrp-button" name="month" value="4">Апрель</button>
    </div>
    <div>
      <button class="top-wrp-hidden-right-wrp-button" name="month" value="5">Май</button>
      <button class="top-wrp-hidden-right-wrp-button" name="month" value="6">Июнь</button>
      <button class="top-wrp-hidden-right-wrp-button" name="month" value="7">Июль</button>
      <button class="top-wrp-hidden-right-wrp-button" name="month" value="8">Август</button>
    </div>
    <div>
      <button class="top-wrp-hidden-right-wrp-button" name="month" value="9">Сентябрь</button>
      <button class="top-wrp-hidden-right-wrp-button" name="month" value="10">Октябрь</button>
      <button class="top-wrp-hidden-right-wrp-button" name="month" value="11">Ноябрь</button>
      <button class="top-wrp-hidden-right-wrp-button" name="month" value="12">Декабрь</button>
    </div>
  </div>
</div>

CSS

.selected{
  background: #F5F6F8;
  border:2px solid #63DFFB; 
  display: inline-block;
  padding: 6px 6px 6px 6px;
}

JavaScript

//при на ведении на периоды выделять месяца
let mo = document.querySelector('.top-wrp-hidden-left-item-btn-mo'); //месяц
let ko = document.querySelector('.top-wrp-hidden-left-item-btn-ko'); //квартал
let po = document.querySelector('.top-wrp-hidden-left-item-btn-po'); //полугодие
let yo = document.querySelector('.top-wrp-hidden-left-item-btn-yo'); //год

let now = new Date();
let mon = now.getMonth()+1 ;
let monPo = (now.getMonth()+6)%12 ;


 mo.addEventListener('mouseover', () => { 
	add(1);
});
mo.addEventListener("mouseout", () => {
  rem(1);
});

 ko.addEventListener('mouseover', () => { 
  add(3);
});
 ko.addEventListener('mouseout', () => { 
  rem(3)
});
 po.addEventListener('mouseover', () => { 
    Array.from(document.querySelectorAll(Array.apply(null,Array(6)).map((el,i)=>`.top-wrp-hidden-right-wrp-button[value="${(monPo+i)%12+1}"]`).join(","))).forEach(e=>{
  	let span = document.createElement("span");
  	span.classList.add('selected');
    e.parentNode.insertBefore(span,e);
    span.insertBefore(e, null);
  }); 
});
 po.addEventListener('mouseout', () => { 
    Array.from(document.querySelectorAll(Array.apply(null,Array(6)).map((el,i)=>`.top-wrp-hidden-right-wrp-button[value="${(monPo+i)%12+1}"]`).join(","))).forEach(e=>{
  	let span = e.parentNode;
  	span.parentNode.insertBefore(e,span);
    span.parentNode.removeChild(span);
  }); 
});

 yo.addEventListener('mouseover', () => { 
 add(12);
});
 yo.addEventListener('mouseout', () => { 
  rem(12);
});

function add(n){ 
  let c = Math.ceil(mon/n)*n;
  Array.from(document.querySelectorAll(Array.apply(null,Array(n)).map((el,i)=>`.top-wrp-hidden-right-wrp-button[value="${c-i}"]`).join(","))).forEach(e=>{
  	let span = document.createElement("span");
  	span.classList.add('selected');
    e.parentNode.insertBefore(span,e);
    span.insertBefore(e, null);
  }); 
}
function rem(n){ 
  let c = Math.ceil(mon/n)*n;  
 ...