@@ -33,6 +33,10 @@ export default {
3333 defaultPanel : {
3434 type : String ,
3535 } ,
36+ disabledCalendarChanger : {
37+ type : Function ,
38+ default : ( ) => false ,
39+ } ,
3640 disabledDate : {
3741 type : Function ,
3842 default : ( ) => false ,
@@ -185,19 +189,33 @@ export default {
185189 return classes . concat ( this . getClasses ( cellDate , this . innerValue , classes . join ( ' ' ) ) ) ;
186190 } ,
187191 getMonthClasses ( month ) {
192+ const classes = [ ] ;
188193 if ( this . type !== 'month' ) {
189- return this . calendarMonth === month ? 'active' : '' ;
194+ if ( this . calendarMonth === month ) {
195+ classes . push ( 'active' ) ;
196+ }
197+ const cellDate = this . getMonthCellDate ( month ) ;
198+ if ( this . disabledCalendarChanger ( cellDate , 'month' ) ) {
199+ classes . push ( 'disabled' ) ;
200+ }
201+ return classes ;
190202 }
191- const classes = [ ] ;
192203 const cellDate = this . getMonthCellDate ( month ) ;
193204 classes . push ( this . getStateClass ( cellDate ) ) ;
194205 return classes . concat ( this . getClasses ( cellDate , this . innerValue , classes . join ( ' ' ) ) ) ;
195206 } ,
196207 getYearClasses ( year ) {
208+ const classes = [ ] ;
197209 if ( this . type !== 'year' ) {
198- return this . calendarYear === year ? 'active' : '' ;
210+ if ( this . calendarYear === year ) {
211+ classes . push ( 'active' ) ;
212+ }
213+ const cellDate = this . getYearCellDate ( year ) ;
214+ if ( this . disabledCalendarChanger ( cellDate , 'year' ) ) {
215+ classes . push ( 'disabled' ) ;
216+ }
217+ return classes ;
199218 }
200- const classes = [ ] ;
201219 const cellDate = this . getYearCellDate ( year ) ;
202220 classes . push ( this . getStateClass ( cellDate ) ) ;
203221 return classes . concat ( this . getClasses ( cellDate , this . innerValue , classes . join ( ' ' ) ) ) ;
@@ -227,6 +245,7 @@ export default {
227245 if ( panel === 'year' ) {
228246 return (
229247 < TableYear
248+ disabledCalendarChanger = { this . disabledCalendarChanger }
230249 calendar = { innerCalendar }
231250 getCellClasses = { this . getYearClasses }
232251 getYearPanel = { this . getYearPanel }
@@ -238,6 +257,7 @@ export default {
238257 if ( panel === 'month' ) {
239258 return (
240259 < TableMonth
260+ disabledCalendarChanger = { this . disabledCalendarChanger }
241261 calendar = { innerCalendar }
242262 getCellClasses = { this . getMonthClasses }
243263 onSelect = { this . handleSelectMonth }
@@ -248,6 +268,7 @@ export default {
248268 }
249269 return (
250270 < TableDate
271+ disabledCalendarChanger = { this . disabledCalendarChanger }
251272 class = { { [ `${ this . prefixClass } -calendar-week-mode` ] : this . type === 'week' } }
252273 calendar = { innerCalendar }
253274 getCellClasses = { this . getDateClasses }
0 commit comments