|
131 | 131 | } else {
|
132 | 132 | selectedDates.push(date);
|
133 | 133 | }
|
| 134 | +
|
| 135 | + selectedDates = [...selectedDates]; |
134 | 136 | }
|
135 | 137 |
|
136 | 138 | $: internalMinDate = minDate ? (minDate instanceof Date ? minDate : new Date(minDate)) : null;
|
|
272 | 274 |
|
273 | 275 | $: hasInput = Boolean(
|
274 | 276 | 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) |
279 | 281 | );
|
280 | 282 |
|
281 | 283 | $: {
|
|
300 | 302 | .padStart(2, '0')}`;
|
301 | 303 | });
|
302 | 304 |
|
| 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 | + }); |
303 | 313 | displayedDateString = dates
|
304 | 314 | .map((d) => formatDisplayDate(new Date(d), displayFormat, displayFormatFunction))
|
305 | 315 | .join(separator);
|
|
347 | 357 |
|
348 | 358 | $: {
|
349 | 359 | if (enableMultiple && yearSelected != null && monthSelected != null && dateSelected != null) {
|
350 |
| - if (datePicked) { |
| 360 | + if (selectedDates) { |
351 | 361 | internalValue = `${yearSelected}-${monthSelected + 1 < 10 ? '0' : ''}${monthSelected + 1}-${dateSelected < 10 ? '0' : ''}${dateSelected}`;
|
352 | 362 | if (!dates.includes(internalValue)) {
|
353 | 363 | dates.push(internalValue);
|
354 | 364 | }
|
| 365 | + const toDeleteTime = selectedDates.map((date) => { |
| 366 | + return Date.UTC(date.year, date.month, date.day); |
| 367 | + }); |
355 | 368 |
|
| 369 | + dates = dates.filter((d) => toDeleteTime.includes(new Date(d).getTime())); |
356 | 370 | dates.sort((a, b) => new Date(a).getTime() - new Date(b).getTime());
|
357 |
| -
|
358 | 371 | let displayList = dates.map((elem) =>
|
359 | 372 | formatDisplayDate(new Date(elem), displayFormat, displayFormatFunction)
|
360 | 373 | );
|
|
370 | 383 | dispatch('value', { value: returnValues.join(separator) });
|
371 | 384 | } else {
|
372 | 385 | 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())); |
375 | 391 |
|
376 | 392 | let displayList = dates.map((elem) =>
|
377 | 393 | formatDisplayDate(new Date(elem), displayFormat, displayFormatFunction)
|
|
442 | 458 | <span
|
443 | 459 | class="jp-datepicker-field-label"
|
444 | 460 | class:jp-datepicker-field-label-move={openPicker || internalValue}
|
445 |
| - >{@html displayLabel}</span |
| 461 | + >{@html displayLabel}</span |
446 | 462 | >
|
447 | 463 | {/if}
|
448 | 464 | <p
|
|
559 | 575 | >
|
560 | 576 | <p>
|
561 | 577 | {pickerYearRows[0][0]} - {pickerYearRows[pickerYearRows.length - 1][
|
562 |
| - pickerYearRows[pickerYearRows.length - 1].length - 1 |
| 578 | + pickerYearRows[pickerYearRows.length - 1].length - 1 |
563 | 579 | ]}
|
564 | 580 | </p>
|
565 | 581 | {@html upArrowIcon}
|
|
0 commit comments