From 73a1b73abe2bf5f9d385081d98d75f2998be30ee Mon Sep 17 00:00:00 2001 From: xiemx Date: Thu, 19 Dec 2019 13:40:49 +0800 Subject: [PATCH] feat: add prop `defaultPanel` (#394) --- __test__/calendar-panel.test.js | 11 +++++++++++ src/calendar/calendar-panel.vue | 8 ++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/__test__/calendar-panel.test.js b/__test__/calendar-panel.test.js index e2a11dd..bfa4ba0 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 05c4148..dd198d7 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,