Skip to content

Commit 1802360

Browse files
authored
Merge pull request #19 from svelte-plugins/fix-enabled-ranges
🐛 refactor(enabled): fix issues with range generation for enabled dates
2 parents d9313b2 + c71515b commit 1802360

File tree

4 files changed

+16
-8
lines changed

4 files changed

+16
-8
lines changed

docs/package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/src/App.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@
366366
<h3>Enabled Dates</h3>
367367

368368
<div class="example">
369-
<SinglePicker enableFutureDates enabledDates={['1/14/24:1/25/24']} />
369+
<SinglePicker enableFutureDates enabledDates={['1/14/23:3/16/24']} />
370370
</div>
371371

372372
<h3>Theme</h3>

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@svelte-plugins/datepicker",
33
"description": "A simple datepicker component designed for Svelte.",
4-
"version": "1.0.6",
4+
"version": "1.0.7",
55
"license": "MIT",
66
"author": "Kieran Boyle (https://github.com/dysfunc)",
77
"homepage": "https://github.com/svelte-plugins/datepicker",

src/datepicker.svelte

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -830,24 +830,32 @@
830830
/**
831831
* Returns an array of timestamps from an array of date strings.
832832
* @param {string[]} collection - An array of date strings.
833+
* @param {boolean} enabled - Indicates whether the dates are enabled.
833834
* @returns {number[]} - An array of timestamps.
834835
*/
835-
const getDatesFromArray = (collection) => {
836+
const getDatesFromArray = (collection, enabled) => {
836837
return collection.reduce((acc, date) => {
837838
let newDates = [];
838839
839840
if (date instanceof Date) {
840-
newDates = [date.getTime()];
841+
newDates = [normalizeTimestamp(date.getTime())];
841842
} else if (typeof date === 'string' && date.includes(':')) {
842843
const [rangeStart, rangeEnd] = date.split(':');
844+
843845
let dateRangeStart = new Date(rangeStart).getTime();
844846
let dateRangeEnd = new Date(rangeEnd).getTime();
845847
848+
if (enabled) {
849+
const newDateRangeEnd = new Date(rangeEnd);
850+
newDateRangeEnd.setDate(newDateRangeEnd.getDate() + 1);
851+
dateRangeEnd = newDateRangeEnd.getTime();
852+
}
853+
846854
for (; dateRangeStart <= dateRangeEnd; dateRangeStart += MILLISECONDS_IN_DAY) {
847-
newDates = [...newDates, dateRangeStart];
855+
newDates = [...newDates, normalizeTimestamp(dateRangeStart)];
848856
}
849857
} else {
850-
newDates = [new Date(date).getTime()];
858+
newDates = [normalizeTimestamp(new Date(date).getTime())];
851859
}
852860
853861
return [...acc, ...newDates];
@@ -873,7 +881,7 @@
873881
$: !isRange && (endDate = null);
874882
$: theme !== null && globalThis.document?.documentElement.setAttribute('data-picker-theme', theme);
875883
$: disabled = getDatesFromArray(disabledDates);
876-
$: enabled = getDatesFromArray(enabledDates);
884+
$: enabled = getDatesFromArray(enabledDates, true);
877885
878886
$: if (!startDate && !endDate) {
879887
startDateYear = Number(defaultYear);

0 commit comments

Comments
 (0)