From 77771712f92ec4a159e0bbd731eb034a75a7731b Mon Sep 17 00:00:00 2001 From: Eric Y Liu Date: Wed, 14 Jul 2021 12:14:07 -0700 Subject: [PATCH] fix(date-picker): load rangePlugin dynamically --- src/DatePicker/DatePicker.svelte | 73 ++++++++++++++------------- src/DatePicker/DatePickerInput.svelte | 4 +- src/DatePicker/createCalendar.js | 10 +++- 3 files changed, 46 insertions(+), 41 deletions(-) diff --git a/src/DatePicker/DatePicker.svelte b/src/DatePicker/DatePicker.svelte index c9b75c16..00a9c81c 100644 --- a/src/DatePicker/DatePicker.svelte +++ b/src/DatePicker/DatePicker.svelte @@ -128,43 +128,43 @@ }, }); + async function initCalendar() { + calendar = await createCalendar({ + options: { + appendTo: datePickerRef, + dateFormat, + defaultDate: $inputValue, + locale, + maxDate, + minDate, + mode: $mode, + }, + base: inputRef, + input: inputRefTo, + dispatch: (event) => { + const detail = { selectedDates: calendar.selectedDates }; + + if ($range) { + const from = inputRef.value; + const to = inputRefTo.value; + + detail.dateStr = { + from: inputRef.value, + to: inputRefTo.value, + }; + + valueFrom = from; + valueTo = to; + } else { + detail.dateStr = inputRef.value; + } + + return dispatch(event, detail); + }, + }); + } + afterUpdate(() => { - if ($hasCalendar && !calendar) { - calendar = createCalendar({ - options: { - appendTo: datePickerRef, - dateFormat, - defaultDate: $inputValue, - locale, - maxDate, - minDate, - mode: $mode, - }, - base: inputRef, - input: inputRefTo, - dispatch: (event) => { - const detail = { selectedDates: calendar.selectedDates }; - - if ($range) { - const from = inputRef.value; - const to = inputRefTo.value; - - detail.dateStr = { - from: inputRef.value, - to: inputRefTo.value, - }; - - valueFrom = from; - valueTo = to; - } else { - detail.dateStr = inputRef.value; - } - - return dispatch(event, detail); - }, - }); - } - if (calendar) { if ($range) { calendar.setDate([$inputValueFrom, $inputValueTo]); @@ -189,6 +189,7 @@ $: valueFrom = $inputValueFrom; $: inputValueTo.set(valueTo); $: valueTo = $inputValueTo; + $: if ($hasCalendar && !calendar && inputRef) initCalendar(); { - declareRef({ id, ref }); - }); + $: if (ref) declareRef({ id, ref });