From aaa22493d0b6347ee0d7463352407f4547077188 Mon Sep 17 00:00:00 2001 From: 07akioni <07akioni2@gmail.com> Date: Fri, 9 Apr 2021 02:50:02 +0800 Subject: [PATCH] feat(date-picker): locale.firstDayOfWeek --- CHANGELOG.en-US.md | 1 + CHANGELOG.zh-CN.md | 1 + src/date-picker/src/panel/use-calendar.ts | 3 ++- src/date-picker/src/panel/use-dual-calendar.ts | 14 ++++++++++++-- src/date-picker/src/utils.ts | 8 ++++++-- src/locales/common/enUS.ts | 3 ++- src/locales/common/zhCN.ts | 3 ++- 7 files changed, 26 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.en-US.md b/CHANGELOG.en-US.md index 85cc5e975..5cef4a976 100644 --- a/CHANGELOG.en-US.md +++ b/CHANGELOG.en-US.md @@ -5,6 +5,7 @@ ### Feats - Add `n-skeleton` component. +- `n-data-picker` locale add `firstDayOfWeek`. ### Fixes diff --git a/CHANGELOG.zh-CN.md b/CHANGELOG.zh-CN.md index 59fc9fe52..348fa9596 100644 --- a/CHANGELOG.zh-CN.md +++ b/CHANGELOG.zh-CN.md @@ -5,6 +5,7 @@ ### Feats - 添加 `n-skeleton` 组件 +- `n-data-picker` locale 增加 `firstDayOfWeek` ### Fixes diff --git a/src/date-picker/src/panel/use-calendar.ts b/src/date-picker/src/panel/use-calendar.ts index 0d5adfff6..c1bf4d418 100644 --- a/src/date-picker/src/panel/use-calendar.ts +++ b/src/date-picker/src/panel/use-calendar.ts @@ -65,7 +65,8 @@ function useCalendar ( return dateArray( calendarValueRef.value, ensureValidValue(props.value), - nowRef.value + nowRef.value, + NDatePicker.locale.firstDayOfWeek ) }) const weekdaysRef = computed(() => { diff --git a/src/date-picker/src/panel/use-dual-calendar.ts b/src/date-picker/src/panel/use-dual-calendar.ts index 24d8080e3..e5bf16326 100644 --- a/src/date-picker/src/panel/use-dual-calendar.ts +++ b/src/date-picker/src/panel/use-dual-calendar.ts @@ -80,10 +80,20 @@ function useDualCalendar ( else return 'start' }) const startDateArrayRef = computed(() => { - return dateArray(startCalendarDateTimeRef.value, props.value, nowRef.value) + return dateArray( + startCalendarDateTimeRef.value, + props.value, + nowRef.value, + NDatePicker.locale.firstDayOfWeek + ) }) const endDateArrayRef = computed(() => { - return dateArray(endCalendarDateTimeRef.value, props.value, nowRef.value) + return dateArray( + endCalendarDateTimeRef.value, + props.value, + nowRef.value, + NDatePicker.locale.firstDayOfWeek + ) }) const weekdaysRef = computed(() => { return startDateArrayRef.value.slice(0, 7).map((dateItem) => { diff --git a/src/date-picker/src/utils.ts b/src/date-picker/src/utils.ts index a6ae4afc4..3e57fddc7 100644 --- a/src/date-picker/src/utils.ts +++ b/src/date-picker/src/utils.ts @@ -98,7 +98,8 @@ function dateItem ( function dateArray ( monthTs: number, valueTs: number | [number, number] | null, - currentTs: number + currentTs: number, + startDay: 0 | 1 | 2 | 3 | 4 | 5 | 6 ): DateItem[] { const displayMonth = getMonth(monthTs) // First day of current month @@ -107,7 +108,10 @@ function dateArray ( let lastMonthIterator = getTime(addDays(displayMonthIterator, -1)) const calendarDays = [] let protectLastMonthDateIsShownFlag = true - while (getDay(lastMonthIterator) !== 6 || protectLastMonthDateIsShownFlag) { + while ( + getDay(lastMonthIterator) !== startDay || + protectLastMonthDateIsShownFlag + ) { calendarDays.unshift( dateItem(lastMonthIterator, monthTs, valueTs, currentTs) ) diff --git a/src/locales/common/enUS.ts b/src/locales/common/enUS.ts index 1ab97a673..9cdddf560 100644 --- a/src/locales/common/enUS.ts +++ b/src/locales/common/enUS.ts @@ -29,7 +29,8 @@ const enUS = { endDatePlaceholder: 'End Date', startDatetimePlaceholder: 'Start Date and Time', endDatetimePlaceholder: 'End Date and Time', - monthBeforeYear: true + monthBeforeYear: true, + firstDayOfWeek: 6 as 0 | 1 | 2 | 3 | 4 | 5 | 6 }, DataTable: { confirm: 'Confirm', diff --git a/src/locales/common/zhCN.ts b/src/locales/common/zhCN.ts index 5bae6c505..3f64c0625 100644 --- a/src/locales/common/zhCN.ts +++ b/src/locales/common/zhCN.ts @@ -31,7 +31,8 @@ const zhCN: NLocale = { endDatePlaceholder: '结束日期', startDatetimePlaceholder: '开始日期时间', endDatetimePlaceholder: '结束日期时间', - monthBeforeYear: false + monthBeforeYear: false, + firstDayOfWeek: 0 }, DataTable: { confirm: '确认',