JSFiddle - React, Tailwind, and code Playground
by Manpreet Singh
HTML
<script>
function isDisabledMonth(month , disabledMonths )
{
var centerElemIndex = disabledMonths.indexOf(month);
return centerElemIndex != -1;
}
function findFistEnabledMonthInRightDirection(computedSet, numberOfMonths, maxVal , centerElemIndex,disabledMonths)
{
var Offset = parseInt(numberOfMonths/2) ;
var newCenterPosition;
var firstMonth ;
var maxCount = (computedSet[centerElemIndex] + numberOfMonths -1)
if (maxCount > maxVal)
maxCount = maxVal
for (var month= computedSet[centerElemIndex] ; month <= maxCount ; month++)
{
if (!isDisabledMonth(month, disabledMonths))
{
newCenterPosition = month;
if (newCenterPosition == maxVal || newCenterPosition + Offset >= maxVal)
firstMonth = maxVal - numberOfMonths + 1;
break
}
}
return firstMonth;
}
function findFistEnabledMonthInLeftDirection(computedSet, numberOfMonths, minVal , centerElemIndex,disabledMonths)
{
var Offset = parseInt(numberOfMonths/2) ;
var newCenterPosition;
var firstMonth ;
var minCount = (computedSet[centerElemIndex] + numberOfMonths -1)
if (minCount > minVal)
minCount = minVal
for (var month= computedSet[centerElemIndex] ; month >= minVal ; month--)
{
if (!isDisabledMonth(month, disabledMonths))
{
newCenterPosition = month;
if (newCenterPosition == minVal || newCenterPosition - Offset <= minVal)
firstMonth = minVal
break
}
}
return firstMonth;
}
function checkForDisabledDays(minVal, maxVal, disabledMonths, numberOfMonths, currentVal, computedSet )
{
var centerElemIndex = parseInt(numberOfMonths/2);
var isCenterElemDisabled = isDisabledMonth(computedSet[centerElemIndex], disabledMonths)
if ( isCenterElemDisabled )
{
var firstMonth = findFistEnabledMonthInRightDirection(computedSet, numberOfMonths, maxVal , centerElemIndex, disabledMonths)
if (!firstMonth)
{
var firstMonth = findFistEnabledMonthInLeftDirection(computedSet,...