Skip to content

Commit 8d67dd9

Browse files
Fix other clamping issues
1 parent 1cca7ec commit 8d67dd9

File tree

1 file changed

+26
-26
lines changed

1 file changed

+26
-26
lines changed

src/lib/DatePicker.svelte

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,12 @@
1616
1717
function setValue(d: Date) {
1818
if (d.getTime() !== value?.getTime()) {
19-
value = cloneDate(d)
20-
clamp(min, max)
19+
browseDate = clamp(d, min, max)
20+
value = cloneDate(browseDate)
2121
}
2222
}
2323
function browse(d: Date) {
24-
browseDate = value ? cloneDate(d) : cloneDate(defaultDate)
25-
clamp(min, max)
24+
browseDate = clamp(d, min, max)
2625
if (!browseWithoutSelecting) {
2726
setValue(browseDate)
2827
}
@@ -38,19 +37,21 @@
3837
export let min = new Date(defaultDate.getFullYear() - 20, 0, 1)
3938
/** The latest year the user can select */
4039
export let max = new Date(defaultDate.getFullYear(), 11, 31, 23, 59, 59, 999)
41-
function clamp(min: Date, max: Date) {
40+
$: if (value && value > max) {
41+
value = cloneDate(max)
42+
} else if (value && value < min) {
43+
value = cloneDate(min)
44+
}
45+
function clamp(d: Date, min: Date, max: Date) {
4246
if (browseDate > max) {
43-
browseDate = cloneDate(max)
47+
return cloneDate(max)
4448
} else if (browseDate < min) {
45-
browseDate = cloneDate(min)
49+
return cloneDate(min)
50+
} else {
51+
return cloneDate(d)
4652
}
4753
}
4854
49-
$: if (value) {
50-
clamp(min, max)
51-
browseDate = cloneDate(value)
52-
}
53-
5455
let years = getYears(min, max)
5556
$: years = getYears(min, max)
5657
function getYears(min: Date, max: Date) {
@@ -68,16 +69,14 @@
6869
export let browseWithoutSelecting = false
6970
7071
let browseYear = browseDate.getFullYear()
71-
function getBrowseYear(tmpPickerDate: Date) {
72-
browseMonth = tmpPickerDate.getMonth()
72+
function getBrowseYear(d: Date) {
73+
browseYear = d.getFullYear()
7374
}
7475
$: getBrowseYear(browseDate)
7576
function setYear(newYear: number) {
7677
browseDate.setFullYear(newYear)
7778
browseDate = browseDate
78-
if (value) {
79-
browse(browseDate)
80-
}
79+
browse(browseDate)
8180
}
8281
$: setYear(browseYear)
8382
@@ -98,16 +97,17 @@
9897
9998
const maxDate = getMonthLength(newYear, newMonth)
10099
const newDate = Math.min(browseDate.getDate(), maxDate)
101-
browseDate = new Date(
102-
newYear,
103-
newMonth,
104-
newDate,
105-
browseDate.getHours(),
106-
browseDate.getMinutes(),
107-
browseDate.getSeconds(),
108-
browseDate.getMilliseconds()
100+
browse(
101+
new Date(
102+
newYear,
103+
newMonth,
104+
newDate,
105+
browseDate.getHours(),
106+
browseDate.getMinutes(),
107+
browseDate.getSeconds(),
108+
browseDate.getMilliseconds()
109+
)
109110
)
110-
browse(browseDate)
111111
}
112112
$: setMonth(browseMonth)
113113

0 commit comments

Comments
 (0)