Skip to content

Commit

Permalink
fix(Calendar): set current date is inital (#4339)
Browse files Browse the repository at this point in the history
* feat(Calendar): set current date is inital

* fix(Calendar): adjust limitDateRange
  • Loading branch information
nemo-shen authored Jul 16, 2021
1 parent 853c56b commit 82811d4
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 14 deletions.
72 changes: 58 additions & 14 deletions packages/calendar/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import { VantComponent } from '../common/component';
import {
ROW_HEIGHT,
getPrevDay,
getNextDay,
getToday,
compareDay,
copyDates,
calcDateNum,
Expand All @@ -14,6 +16,16 @@ import {
import Toast from '../toast/toast';
import { requestAnimationFrame } from '../common/utils';

const initialMinDate = getToday().getTime();
const initialMaxDate = (() => {
const now = getToday();
return new Date(
now.getFullYear(),
now.getMonth() + 6,
now.getDate()
).getTime();
})();

VantComponent({
props: {
title: {
Expand Down Expand Up @@ -56,15 +68,11 @@ VantComponent({
},
minDate: {
type: null,
value: Date.now(),
value: initialMinDate,
},
maxDate: {
type: null,
value: new Date(
new Date().getFullYear(),
new Date().getMonth() + 6,
new Date().getDate()
).getTime(),
value: initialMaxDate,
},
position: {
type: String,
Expand Down Expand Up @@ -162,22 +170,58 @@ VantComponent({
});
},

getInitialDate() {
const { type, defaultDate, minDate } = this.data;
limitDateRange(
date: number,
minDate: number | null = null,
maxDate: number | null = null
) {
minDate = minDate || (this.data.minDate as number);
maxDate = maxDate || (this.data.maxDate as number);
if (compareDay(date, minDate) === -1) {
return minDate;
}
if (compareDay(date, maxDate) === 1) {
return maxDate;
}
return date;
},

getInitialDate(defaultDate: number | number[] | null = null) {
const { type, minDate, maxDate } = this.data;

const now = getToday().getTime();

if (type === 'range') {
if (!Array.isArray(defaultDate)) {
defaultDate = [];
}

const [startDay, endDay] = defaultDate || [];
return [
startDay || minDate,
endDay || getNextDay(new Date(minDate)).getTime(),
];

const start = this.limitDateRange(
startDay || now,
minDate,
getPrevDay(maxDate).getTime()
);
const end = this.limitDateRange(
endDay || now,
getNextDay(minDate).getTime()
);
return [start, end];
}

if (type === 'multiple') {
return defaultDate || [minDate];
if (Array.isArray(defaultDate)) {
return defaultDate.map((date) => this.limitDateRange(date));
}

return [this.limitDateRange(now)];
}

return defaultDate || minDate;
if (!defaultDate || Array.isArray(defaultDate)) {
defaultDate = now;
}
return this.limitDateRange(defaultDate);
},

scrollIntoView() {
Expand Down
6 changes: 6 additions & 0 deletions packages/calendar/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,12 @@ export function getNextDay(date: Date) {
return getDayByOffset(date, 1);
}

export function getToday() {
const today = new Date();
today.setHours(0, 0, 0, 0);
return today;
}

export function calcDateNum(date: [Date, Date]) {
const day1 = new Date(date[0]).getTime();
const day2 = new Date(date[1]).getTime();
Expand Down

0 comments on commit 82811d4

Please sign in to comment.