Skip to content

Commit c818670

Browse files
authored
fixing multiple picks (#379)
1 parent 6c7f07e commit c818670

File tree

1 file changed

+26
-10
lines changed

1 file changed

+26
-10
lines changed

packages/lib/src/form-fields/datepicker/datepicker.wc.svelte

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,8 @@
131131
} else {
132132
selectedDates.push(date);
133133
}
134+
135+
selectedDates = [...selectedDates];
134136
}
135137
136138
$: internalMinDate = minDate ? (minDate instanceof Date ? minDate : new Date(minDate)) : null;
@@ -272,10 +274,10 @@
272274
273275
$: hasInput = Boolean(
274276
displayedDateString ||
275-
internalValue ||
276-
yearSelected !== null ||
277-
(dates && dates.length > 0) ||
278-
(selectedDates && selectedDates.length > 0)
277+
internalValue ||
278+
yearSelected !== null ||
279+
(dates && dates.length > 0) ||
280+
(selectedDates && selectedDates.length > 0)
279281
);
280282
281283
$: {
@@ -300,6 +302,14 @@
300302
.padStart(2, '0')}`;
301303
});
302304
305+
selectedDates = dates.map((dateStr) => {
306+
const d = new Date(dateStr);
307+
return {
308+
year: d.getFullYear(),
309+
month: d.getMonth(),
310+
day: d.getDate()
311+
};
312+
});
303313
displayedDateString = dates
304314
.map((d) => formatDisplayDate(new Date(d), displayFormat, displayFormatFunction))
305315
.join(separator);
@@ -347,14 +357,17 @@
347357
348358
$: {
349359
if (enableMultiple && yearSelected != null && monthSelected != null && dateSelected != null) {
350-
if (datePicked) {
360+
if (selectedDates) {
351361
internalValue = `${yearSelected}-${monthSelected + 1 < 10 ? '0' : ''}${monthSelected + 1}-${dateSelected < 10 ? '0' : ''}${dateSelected}`;
352362
if (!dates.includes(internalValue)) {
353363
dates.push(internalValue);
354364
}
365+
const toDeleteTime = selectedDates.map((date) => {
366+
return Date.UTC(date.year, date.month, date.day);
367+
});
355368
369+
dates = dates.filter((d) => toDeleteTime.includes(new Date(d).getTime()));
356370
dates.sort((a, b) => new Date(a).getTime() - new Date(b).getTime());
357-
358371
let displayList = dates.map((elem) =>
359372
formatDisplayDate(new Date(elem), displayFormat, displayFormatFunction)
360373
);
@@ -370,8 +383,11 @@
370383
dispatch('value', { value: returnValues.join(separator) });
371384
} else {
372385
internalValue = `${yearSelected}-${monthSelected + 1 < 10 ? '0' : ''}${monthSelected + 1}-${dateSelected < 10 ? '0' : ''}${dateSelected}`;
373-
const toDeleteTime = new Date(internalValue).getTime();
374-
dates = dates.filter((d) => new Date(d).getTime() !== toDeleteTime);
386+
const toDeleteTime = selectedDates.map((date) => {
387+
return Date.UTC(date.year, date.month, date.day);
388+
});
389+
390+
dates = dates.filter((d) => toDeleteTime.includes(new Date(d).getTime()));
375391
376392
let displayList = dates.map((elem) =>
377393
formatDisplayDate(new Date(elem), displayFormat, displayFormatFunction)
@@ -442,7 +458,7 @@
442458
<span
443459
class="jp-datepicker-field-label"
444460
class:jp-datepicker-field-label-move={openPicker || internalValue}
445-
>{@html displayLabel}</span
461+
>{@html displayLabel}</span
446462
>
447463
{/if}
448464
<p
@@ -559,7 +575,7 @@
559575
>
560576
<p>
561577
{pickerYearRows[0][0]} - {pickerYearRows[pickerYearRows.length - 1][
562-
pickerYearRows[pickerYearRows.length - 1].length - 1
578+
pickerYearRows[pickerYearRows.length - 1].length - 1
563579
]}
564580
</p>
565581
{@html upArrowIcon}

0 commit comments

Comments
 (0)