diff --git a/lib/picker.date.js b/lib/picker.date.js index 6979715a..d61d2d65 100644 --- a/lib/picker.date.js +++ b/lib/picker.date.js @@ -1037,6 +1037,30 @@ DatePicker.prototype.nodes = function( isOpen ) { }, //createMonthNav + // Create the nav for next/prev year. + createYearNav = function( next ) { + + // Otherwise, return the created year tag. + return _.node( + 'div', + ' ', + settings.klass[ 'year_nav' + ( next ? 'Next' : 'Prev' ) ] + ( + + // If the focused month is outside the range, disabled the button. + ( next && viewsetObject.year >= maxLimitObject.year && viewsetObject.month >= maxLimitObject.month ) || + ( !next && viewsetObject.year <= minLimitObject.year && viewsetObject.month <= minLimitObject.month ) ? + ' ' + settings.klass.navDisabled : '' + ), + 'data-nav=' + ( next ? 12 : -12 ) + ' ' + + _.ariaAttr({ + role: 'button', + controls: calendar.$node[0].id + '_table' + }) + ' ' + + 'title="' + (next ? settings.labelYearNext : settings.labelYearPrev ) + '"' + ) //endreturn + }, //createYearNav + + // Create the month label. createMonthLabel = function() { @@ -1152,7 +1176,7 @@ DatePicker.prototype.nodes = function( isOpen ) { return _.node( 'div', ( settings.selectYears ? createYearLabel() + createMonthLabel() : createMonthLabel() + createYearLabel() ) + - createMonthNav() + createMonthNav( 1 ), + createMonthNav() + createMonthNav( 1 ) + createYearNav() + createYearNav( 1 ), settings.klass.header ) + _.node( 'table', @@ -1276,6 +1300,10 @@ DatePicker.defaults = (function( prefix ) { labelMonthNext: 'Next month', labelMonthPrev: 'Previous month', + // The title label to use for the year nav buttons + labelYearNext: 'Next year', + labelYearPrev: 'Previous year', + // The title label to use for the dropdown selectors labelMonthSelect: 'Select a month', labelYearSelect: 'Select a year', @@ -1305,6 +1333,9 @@ DatePicker.defaults = (function( prefix ) { navNext: prefix + 'nav--next', navDisabled: prefix + 'nav--disabled', + year_navPrev: prefix + 'year_nav--prev', + year_navNext: prefix + 'year_nav--next', + month: prefix + 'month', year: prefix + 'year', @@ -1341,6 +1372,3 @@ Picker.extend( 'pickadate', DatePicker ) })); - - - diff --git a/lib/themes-source/base.date.less b/lib/themes-source/base.date.less index 565dba7e..9877c7d2 100644 --- a/lib/themes-source/base.date.less +++ b/lib/themes-source/base.date.less @@ -73,7 +73,9 @@ * The month navigation buttons. */ .picker__nav--prev, -.picker__nav--next { +.picker__nav--next, +.picker__year_nav--prev, +.picker__year_nav--next { position: absolute; padding: .5em 1.25em; width: 1em; @@ -86,8 +88,9 @@ top: -.33em; } } + .picker__nav--prev { - left: -1em; + left: 3em; padding-right: 1.25em; // For `tiny` width screens, increase the padding a bit. @@ -96,6 +99,24 @@ } } .picker__nav--next { + right: 3em; + padding-left: 1.25em; + + // For `tiny` width screens, increase the padding a bit. + @media ( min-width: @breakpoint-width-tiny ) { + padding-left: 1.5em; + } +} +.picker__year_nav--prev { + left: -1em; + padding-right: 1.25em; + + // For `tiny` width screens, increase the padding a bit. + @media ( min-width: @breakpoint-width-tiny ) { + padding-right: 1.5em; + } +} +.picker__year_nav--next { right: -1em; padding-left: 1.25em; @@ -105,7 +126,9 @@ } } .picker__nav--prev:before, -.picker__nav--next:before { +.picker__nav--next:before, +.picker__year_nav--next:before, +.picker__year_nav--prev:before, { content: " "; border-top: .5em solid transparent; border-bottom: .5em solid transparent; @@ -115,14 +138,25 @@ display: block; margin: 0 auto; } -.picker__nav--next:before { + +.picker__nav--next:before, +.picker__year_nav--next:before { border-right: 0; border-left: .75em solid @black; } +.picker__year_nav--prev:before, +.picker__year_nav--next:before { + font-size: 1.5em; + top: -0.15em; +} + + // Hovered date picker items. .picker__nav--prev:hover, -.picker__nav--next:hover { +.picker__nav--next:hover, +.picker__year_nav--prev:hover, +.picker__year_nav--next:hover { .picker-item-hovered; } @@ -328,6 +362,3 @@ .picker__button--today[disabled]:before { border-top-color: @disabled-tag; } - - -