diff --git a/__test__/calendar-panel.test.js b/__test__/calendar-panel.test.js index e2a11dda..bfa4ba00 100644 --- a/__test__/calendar-panel.test.js +++ b/__test__/calendar-panel.test.js @@ -187,4 +187,15 @@ describe('CalendarPanel', () => { .trigger('click'); expect(wrapper.emitted().select[1][0]).toEqual(new Date(2010, 0, 4)); }); + + it('prop: defaultPanel', () => { + wrapper = mount(CalendarPanel, { + propsData: { + open: true, + type: 'month', + defaultPanel: 'year', + }, + }); + expect(wrapper.vm.panel).toBe('year'); + }); }); diff --git a/src/calendar/calendar-panel.vue b/src/calendar/calendar-panel.vue index 05c4148e..dd198d76 100644 --- a/src/calendar/calendar-panel.vue +++ b/src/calendar/calendar-panel.vue @@ -139,6 +139,9 @@ export default { return date; }, }, + defaultPanel: { + type: String, + }, disabledDate: { type: Function, default: () => false, @@ -167,8 +170,9 @@ export default { }, }, data() { - const panels = ['date', 'year', 'month']; - const panel = panels.indexOf(this.type) !== -1 ? this.type : 'date'; + const panels = ['date', 'month', 'year']; + const index = Math.max(panels.indexOf(this.type), panels.indexOf(this.defaultPanel)); + const panel = index !== -1 ? panels[index] : 'date'; return { panel, innerCalendar: null,