mirror of
https://gitee.com/vant-contrib/vant-weapp.git
synced 2025-04-06 03:58:05 +08:00
fix(Calendar): set current date is inital (#4339)
* feat(Calendar): set current date is inital * fix(Calendar): adjust limitDateRange
This commit is contained in:
parent
853c56b26d
commit
82811d4058
@ -1,7 +1,9 @@
|
|||||||
import { VantComponent } from '../common/component';
|
import { VantComponent } from '../common/component';
|
||||||
import {
|
import {
|
||||||
ROW_HEIGHT,
|
ROW_HEIGHT,
|
||||||
|
getPrevDay,
|
||||||
getNextDay,
|
getNextDay,
|
||||||
|
getToday,
|
||||||
compareDay,
|
compareDay,
|
||||||
copyDates,
|
copyDates,
|
||||||
calcDateNum,
|
calcDateNum,
|
||||||
@ -14,6 +16,16 @@ import {
|
|||||||
import Toast from '../toast/toast';
|
import Toast from '../toast/toast';
|
||||||
import { requestAnimationFrame } from '../common/utils';
|
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({
|
VantComponent({
|
||||||
props: {
|
props: {
|
||||||
title: {
|
title: {
|
||||||
@ -56,15 +68,11 @@ VantComponent({
|
|||||||
},
|
},
|
||||||
minDate: {
|
minDate: {
|
||||||
type: null,
|
type: null,
|
||||||
value: Date.now(),
|
value: initialMinDate,
|
||||||
},
|
},
|
||||||
maxDate: {
|
maxDate: {
|
||||||
type: null,
|
type: null,
|
||||||
value: new Date(
|
value: initialMaxDate,
|
||||||
new Date().getFullYear(),
|
|
||||||
new Date().getMonth() + 6,
|
|
||||||
new Date().getDate()
|
|
||||||
).getTime(),
|
|
||||||
},
|
},
|
||||||
position: {
|
position: {
|
||||||
type: String,
|
type: String,
|
||||||
@ -162,22 +170,58 @@ VantComponent({
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
getInitialDate() {
|
limitDateRange(
|
||||||
const { type, defaultDate, minDate } = this.data;
|
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 (type === 'range') {
|
||||||
|
if (!Array.isArray(defaultDate)) {
|
||||||
|
defaultDate = [];
|
||||||
|
}
|
||||||
|
|
||||||
const [startDay, endDay] = defaultDate || [];
|
const [startDay, endDay] = defaultDate || [];
|
||||||
return [
|
|
||||||
startDay || minDate,
|
const start = this.limitDateRange(
|
||||||
endDay || getNextDay(new Date(minDate)).getTime(),
|
startDay || now,
|
||||||
];
|
minDate,
|
||||||
|
getPrevDay(maxDate).getTime()
|
||||||
|
);
|
||||||
|
const end = this.limitDateRange(
|
||||||
|
endDay || now,
|
||||||
|
getNextDay(minDate).getTime()
|
||||||
|
);
|
||||||
|
return [start, end];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type === 'multiple') {
|
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() {
|
scrollIntoView() {
|
||||||
|
@ -64,6 +64,12 @@ export function getNextDay(date: Date) {
|
|||||||
return getDayByOffset(date, 1);
|
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]) {
|
export function calcDateNum(date: [Date, Date]) {
|
||||||
const day1 = new Date(date[0]).getTime();
|
const day1 = new Date(date[0]).getTime();
|
||||||
const day2 = new Date(date[1]).getTime();
|
const day2 = new Date(date[1]).getTime();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user