[READ-ONLY] Mirror of https://github.com/probablykasper/date-picker-svelte. Date and time picker for Svelte date-picker-svelte.kasper.space
calendar date date-picker date-time-picker datepicker package svelte time
0

Configure Feed

Select the types of activity you want to include in your feed.

Don't clamp time when setting DMY

Kasper (Feb 26, 2024, 7:18 PM +0100) 3809ff5b 7e13a8dc

+31 -7
+1
CHANGELOG.md
··· 1 1 # Changelog 2 2 3 3 ## Next 4 + - Don't clamp time of day when settig date/month/year 4 5 - Fix time field sometimes showing a value outside `min`/`max` 5 6 - Fix time field losing highlight after pressing left/right arrow keys 6 7 - Use numeric keyboard in time field
+30 -7
src/lib/DatePicker.svelte
··· 23 23 } 24 24 } 25 25 26 + function setValueDate(d: Date) { 27 + if (d.getTime() !== value?.getTime()) { 28 + browseDate = clampDate(d, min, max) 29 + value = cloneDate(browseDate) 30 + } 31 + } 32 + 26 33 /** Set the browseDate */ 27 34 function browse(d: Date) { 28 - browseDate = clamp(d, min, max) 35 + browseDate = clampDate(d, min, max) 29 36 if (!browseWithoutSelecting && value) { 30 37 setValue(browseDate) 31 38 } ··· 64 71 return cloneDate(d) 65 72 } 66 73 } 74 + function clampDate(d: Date, min: Date, max: Date) { 75 + const limit = clamp(d, min, max) 76 + if (limit.getTime() !== d.getTime()) { 77 + d = new Date( 78 + limit.getFullYear(), 79 + limit.getMonth(), 80 + limit.getDate(), 81 + d.getHours(), 82 + d.getMinutes(), 83 + d.getSeconds(), 84 + d.getMilliseconds(), 85 + ) 86 + d = clamp(d, min, max) 87 + } 88 + return d 89 + } 67 90 68 91 /** The date shown in the popup when none is selected */ 69 - let browseDate = value ? cloneDate(value) : cloneDate(clamp(defaultDate, min, max)) 92 + let browseDate = value ? cloneDate(value) : cloneDate(clampDate(defaultDate, min, max)) 70 93 $: setBrowseDate(value) 71 94 function setBrowseDate(value: Date | null) { 72 95 if (browseDate.getTime() !== value?.getTime()) { ··· 132 155 browseDate.setFullYear(calendarDay.year) 133 156 browseDate.setMonth(calendarDay.month) 134 157 browseDate.setDate(calendarDay.number) 135 - setValue(browseDate) 158 + setValueDate(browseDate) 136 159 dispatch('select', cloneDate(browseDate)) 137 160 } 138 161 } ··· 205 228 return 206 229 } else if (e.key === 'ArrowUp') { 207 230 browseDate.setDate(browseDate.getDate() - 7) 208 - setValue(browseDate) 231 + setValueDate(browseDate) 209 232 } else if (e.key === 'ArrowDown') { 210 233 browseDate.setDate(browseDate.getDate() + 7) 211 - setValue(browseDate) 234 + setValueDate(browseDate) 212 235 } else if (e.key === 'ArrowLeft') { 213 236 browseDate.setDate(browseDate.getDate() - 1) 214 - setValue(browseDate) 237 + setValueDate(browseDate) 215 238 } else if (e.key === 'ArrowRight') { 216 239 browseDate.setDate(browseDate.getDate() + 1) 217 - setValue(browseDate) 240 + setValueDate(browseDate) 218 241 } else if (e.key === 'Enter') { 219 242 setValue(browseDate) 220 243 dispatch('select', cloneDate(browseDate))