diff --git a/example/pages/calendar/index.js b/example/pages/calendar/index.js index f911362f..17b3ffeb 100644 --- a/example/pages/calendar/index.js +++ b/example/pages/calendar/index.js @@ -13,7 +13,7 @@ Page({ customConfirm: [], customRange: null, customDayText: [], - customPosition: null + customPosition: null, }, type: 'single', round: true, @@ -32,7 +32,8 @@ Page({ tiledMinDate: new Date(2012, 0, 10).getTime(), tiledMaxDate: new Date(2012, 2, 20).getTime(), confirmText: undefined, - confirmDisabledText: undefined + confirmDisabledText: undefined, + firstDayOfWeek: 0, }, onConfirm(event) { @@ -40,7 +41,9 @@ Page({ this.setData({ showCalendar: false }); this.setData({ - [`date.${this.data.id}`]: Array.isArray(event.detail) ? event.detail.map(date => date.valueOf()) : event.detail.valueOf() + [`date.${this.data.id}`]: Array.isArray(event.detail) + ? event.detail.map((date) => date.valueOf()) + : event.detail.valueOf(), }); }, @@ -83,7 +86,7 @@ Page({ formatter: null, showConfirm: true, confirmText: '确定', - confirmDisabledText: null + confirmDisabledText: null, }); }, @@ -93,7 +96,7 @@ Page({ const data = { id, type, - showCalendar: true + showCalendar: true, }; switch (id) { @@ -150,5 +153,5 @@ Page({ } return day; - } + }, }); diff --git a/example/pages/calendar/index.wxml b/example/pages/calendar/index.wxml index c4a5ac99..2c351681 100644 --- a/example/pages/calendar/index.wxml +++ b/example/pages/calendar/index.wxml @@ -112,6 +112,7 @@ show-confirm="{{ false }}" min-date="{{ tiledMinDate }}" max-date="{{ tiledMaxDate }}" + first-day-of-week="{{ firstDayOfWeek }}" class="tiled-calendar" /> @@ -129,6 +130,7 @@ show-confirm="{{ showConfirm }}" confirm-text="{{ confirmText }}" confirm-disabled-text="{{ confirmDisabledText }}" + first-day-of-week="{{ firstDayOfWeek }}" bind:confirm="onConfirm" bind:select="onSelect" bind:unselect="onUnselect" diff --git a/packages/calendar/README.md b/packages/calendar/README.md index 4fc139f9..30a2122f 100644 --- a/packages/calendar/README.md +++ b/packages/calendar/README.md @@ -234,6 +234,14 @@ Page({ ``` +### 自定义周起始日 + +通过 `first-day-of-week` 属性设置一周从哪天开始。 + +```html + +``` + ### 平铺展示 将`poppable`设置为`false`,日历会直接展示在页面内,而不是以弹层的形式出现。 @@ -274,6 +282,7 @@ Page({ | show-confirm | 是否展示确认按钮 | _boolean_ | `true` | | confirm-text | 确认按钮的文字 | _string_ | `确定` | | confirm-disabled-text | 确认按钮处于禁用状态时的文字 | _string_ | `确定` | +| first-day-of-week | 设置周起始日 | _0~6_ | `0` | ### Poppable Props diff --git a/packages/calendar/calendar.wxml b/packages/calendar/calendar.wxml index 26938c1a..4872e191 100644 --- a/packages/calendar/calendar.wxml +++ b/packages/calendar/calendar.wxml @@ -4,6 +4,7 @@ showTitle="{{ showTitle }}" subtitle="{{ subtitle }}" showSubtitle="{{ showSubtitle }}" + firstDayOfWeek="{{ firstDayOfWeek }}" > @@ -31,6 +32,7 @@ showSubtitle="{{ showSubtitle }}" allowSameDay="{{ allowSameDay }}" showMonthTitle="{{ index !== 0 || !showSubtitle }}" + firstDayOfWeek="{{ firstDayOfWeek }}" bind:click="onClickDay" /> diff --git a/packages/calendar/components/header/index.ts b/packages/calendar/components/header/index.ts index b64b70b0..2b1b4c23 100644 --- a/packages/calendar/components/header/index.ts +++ b/packages/calendar/components/header/index.ts @@ -9,11 +9,31 @@ VantComponent({ subtitle: String, showTitle: Boolean, showSubtitle: Boolean, + firstDayOfWeek: { + type: Number, + observer: 'initWeekDay', + }, }, data: { - weekdays: ['日', '一', '二', '三', '四', '五', '六'], + weekdays: [] as Array, }, - methods: {}, + created() { + this.initWeekDay(); + }, + + methods: { + initWeekDay() { + const defaultWeeks = ['日', '一', '二', '三', '四', '五', '六']; + const firstDayOfWeek = this.data.firstDayOfWeek || 0; + + this.setData({ + weekdays: [ + ...defaultWeeks.slice(firstDayOfWeek, 7), + ...defaultWeeks.slice(0, firstDayOfWeek), + ], + }); + }, + }, }); diff --git a/packages/calendar/components/month/index.ts b/packages/calendar/components/month/index.ts index 913d4d19..812893dd 100644 --- a/packages/calendar/components/month/index.ts +++ b/packages/calendar/components/month/index.ts @@ -42,6 +42,10 @@ VantComponent({ type: null, observer: 'setDays', }, + firstDayOfWeek: { + type: Number, + observer: 'setDays', + }, allowSameDay: Boolean, showSubtitle: Boolean, showMonthTitle: Boolean, diff --git a/packages/calendar/components/month/index.wxml b/packages/calendar/components/month/index.wxml index 55bab83f..4a2c47c9 100644 --- a/packages/calendar/components/month/index.wxml +++ b/packages/calendar/components/month/index.wxml @@ -14,7 +14,7 @@