@@ -707,7 +707,7 @@ export class NepaliDatePicker {
707707
708708 const dayText =
709709 this . options . language === "np" ? this . toNepaliNum ( day ) : day ;
710- html += `<button type ="button" class="npd-day npd-overflow ${ isHoliday ? "holiday" : "" } " data-day="${ day } " data-month-offset="-1">${ dayText } </button >` ;
710+ html += `<div role ="button" tabindex="0" class="npd-day npd-overflow ${ isHoliday ? "holiday" : "" } " data-day="${ day } " data-month-offset="-1">${ dayText } </div >` ;
711711 }
712712
713713 const todayBS = NepaliDate . today ( ) ;
@@ -771,7 +771,7 @@ export class NepaliDatePicker {
771771 // Tithi calculation failed or feature disabled
772772 }
773773
774- html += `<button type ="button" class="${ classes } " data-day="${ day } " data-month-offset="0" data-details="${ details } ">${ dayText } </button >` ;
774+ html += `<div role ="button" tabindex="0" class="${ classes } " data-day="${ day } " data-month-offset="0" data-details="${ details } ">${ dayText } </div >` ;
775775 }
776776
777777 // Next month overflow
@@ -783,7 +783,7 @@ export class NepaliDatePicker {
783783
784784 const dayText =
785785 this . options . language === "np" ? this . toNepaliNum ( day ) : day ;
786- html += `<button type ="button" class="npd-day npd-overflow ${ isHoliday ? "holiday" : "" } " data-day="${ day } " data-month-offset="1">${ dayText } </button >` ;
786+ html += `<div role ="button" tabindex="0" class="npd-day npd-overflow ${ isHoliday ? "holiday" : "" } " data-day="${ day } " data-month-offset="1">${ dayText } </div >` ;
787787 }
788788 } else {
789789 const date = new Date ( this . viewDate . year , this . viewDate . month - 1 , 1 ) ;
@@ -804,7 +804,7 @@ export class NepaliDatePicker {
804804 const cellIndex = startWeekday - 1 - i ;
805805 const isHoliday = cellIndex % 7 === 0 ; // Sunday logic for AD
806806 const day = daysInPrevMonth - i ;
807- html += `<button type ="button" class="npd-day npd-overflow ${ isHoliday ? "holiday" : "" } " data-day="${ day } " data-month-offset="-1">${ day } </button >` ;
807+ html += `<div role ="button" tabindex="0" class="npd-day npd-overflow ${ isHoliday ? "holiday" : "" } " data-day="${ day } " data-month-offset="-1">${ day } </div >` ;
808808 }
809809
810810 const [ selY , selM , selD ] = this . selectedDate
@@ -863,7 +863,7 @@ export class NepaliDatePicker {
863863 if ( isInRange ) classes += " in-range" ;
864864 }
865865
866- html += `<button type ="button" class="${ classes } " data-day="${ day } " data-month-offset="0">${ day } </button >` ;
866+ html += `<div role ="button" tabindex="0" class="${ classes } " data-day="${ day } " data-month-offset="0">${ day } </div >` ;
867867 }
868868
869869 // Next month overflow
@@ -872,7 +872,7 @@ export class NepaliDatePicker {
872872 for ( let day = 1 ; day <= totalCells - currentCells ; day ++ ) {
873873 const cellIndex = currentCells + day - 1 ;
874874 const isHoliday = cellIndex % 7 === 0 ; // Sunday for AD
875- html += `<button type ="button" class="npd-day npd-overflow ${ isHoliday ? "holiday" : "" } " data-day="${ day } " data-month-offset="1">${ day } </button >` ;
875+ html += `<div role ="button" tabindex="0" class="npd-day npd-overflow ${ isHoliday ? "holiday" : "" } " data-day="${ day } " data-month-offset="1">${ day } </div >` ;
876876 }
877877 }
878878
@@ -907,6 +907,14 @@ export class NepaliDatePicker {
907907 }
908908 } ) ;
909909
910+ // Keyboard accessibility for div elements
911+ btn . addEventListener ( "keydown" , ( e ) => {
912+ if ( e . key === "Enter" || e . key === " " ) {
913+ e . preventDefault ( ) ;
914+ btn . click ( ) ;
915+ }
916+ } ) ;
917+
910918 // Tooltip Events
911919 this . elements . daysView
912920 . querySelectorAll ( ".npd-day[data-details]" )
@@ -1006,7 +1014,7 @@ export class NepaliDatePicker {
10061014 const isSelected =
10071015 this . selectedDate ?. year === this . viewDate . year &&
10081016 this . selectedDate ?. month === index + 1 ;
1009- html += `<button type ="button" class="npd-month ${ isSelected ? "selected" : "" } " data-month="${ index + 1 } ">${ month } </button >` ;
1017+ html += `<div role ="button" tabindex="0" class="npd-month ${ isSelected ? "selected" : "" } " data-month="${ index + 1 } ">${ month } </div >` ;
10101018 } ) ;
10111019 html += "</div>" ;
10121020
@@ -1019,6 +1027,14 @@ export class NepaliDatePicker {
10191027 this . viewMode = "days" ;
10201028 this . render ( ) ;
10211029 } ) ;
1030+
1031+ // Keyboard accessibility
1032+ btn . addEventListener ( "keydown" , ( e ) => {
1033+ if ( e . key === "Enter" || e . key === " " ) {
1034+ e . preventDefault ( ) ;
1035+ btn . click ( ) ;
1036+ }
1037+ } ) ;
10221038 } ) ;
10231039 }
10241040
@@ -1032,7 +1048,7 @@ export class NepaliDatePicker {
10321048 const isSelected = this . selectedDate ?. year === year ;
10331049 const yearText =
10341050 this . options . language === "np" ? this . toNepaliNum ( year ) : year ;
1035- html += `<button type ="button" class="npd-year ${ isSelected ? "selected" : "" } " data-year="${ year } ">${ yearText } </button >` ;
1051+ html += `<div role ="button" tabindex="0" class="npd-year ${ isSelected ? "selected" : "" } " data-year="${ year } ">${ yearText } </div >` ;
10361052 }
10371053 html += "</div>" ;
10381054
@@ -1045,6 +1061,14 @@ export class NepaliDatePicker {
10451061 this . viewMode = "months" ;
10461062 this . render ( ) ;
10471063 } ) ;
1064+
1065+ // Keyboard accessibility
1066+ btn . addEventListener ( "keydown" , ( e ) => {
1067+ if ( e . key === "Enter" || e . key === " " ) {
1068+ e . preventDefault ( ) ;
1069+ btn . click ( ) ;
1070+ }
1071+ } ) ;
10481072 } ) ;
10491073 }
10501074
0 commit comments