diff --git a/packages/ui/src/components/va-date-input/VaDateInput.stories.ts b/packages/ui/src/components/va-date-input/VaDateInput.stories.ts
index 808e7c174f..6b28d3e501 100644
--- a/packages/ui/src/components/va-date-input/VaDateInput.stories.ts
+++ b/packages/ui/src/components/va-date-input/VaDateInput.stories.ts
@@ -252,3 +252,18 @@ export const EventListeners = () => ({
`,
})
+
+export const Range = () => ({
+ components: { VaDateInput },
+
+ data () {
+ return {
+ value: { start: new Date('2020-01-01T00:00:00.000Z'), end: new Date('2020-01-02T00:00:00.000Z') },
+ }
+ },
+
+ template: `
+ {{ value }}
+
+ `,
+})
diff --git a/packages/ui/src/components/va-date-input/VaDateInput.vue b/packages/ui/src/components/va-date-input/VaDateInput.vue
index 8777b71abd..df2033aa5b 100644
--- a/packages/ui/src/components/va-date-input/VaDateInput.vue
+++ b/packages/ui/src/components/va-date-input/VaDateInput.vue
@@ -232,6 +232,10 @@ const modelValueToString = (value: DateInputModelValue): string => {
return props.formatDate(value)
}
if (isRange(value)) {
+ if (value.start === null && value.end === null) {
+ return ''
+ }
+
return dateOrNothing(value.start) + props.rangeDelimiter + dateOrNothing(value.end)
}
diff --git a/packages/ui/src/components/va-date-picker/VaDatePicker.stories.ts b/packages/ui/src/components/va-date-picker/VaDatePicker.stories.ts
index 3f81d3671b..7e2e214dae 100644
--- a/packages/ui/src/components/va-date-picker/VaDatePicker.stories.ts
+++ b/packages/ui/src/components/va-date-picker/VaDatePicker.stories.ts
@@ -19,3 +19,18 @@ export const firstWeekDay: StoryFn = () => ({
`,
})
+
+export const Range = () => ({
+ components: { VaDatePicker },
+
+ data () {
+ return {
+ value: { start: new Date('2020-01-01T00:00:00.000Z'), end: new Date('2020-01-02T00:00:00.000Z') },
+ }
+ },
+
+ template: `
+ {{ value }}
+
+ `,
+})
diff --git a/packages/ui/src/components/va-date-picker/components/VaDayPicker/va-date-picker-calendar-hook.ts b/packages/ui/src/components/va-date-picker/components/VaDayPicker/va-date-picker-calendar-hook.ts
index 89119f53ba..f55ad3895b 100644
--- a/packages/ui/src/components/va-date-picker/components/VaDayPicker/va-date-picker-calendar-hook.ts
+++ b/packages/ui/src/components/va-date-picker/components/VaDayPicker/va-date-picker-calendar-hook.ts
@@ -2,7 +2,6 @@ import { computed, Ref } from 'vue'
import { DatePickerView } from '../../types'
-/** Returns last day of previous month */
export const getMonthDaysCount = (year: number, month: number): number => new Date(year, month + 1, 0).getDate()
export const getMonthStartWeekday = (year: number, month: number) => new Date(year, month, 1).getDay()
diff --git a/packages/ui/src/components/va-date-picker/hooks/model-value-helper.ts b/packages/ui/src/components/va-date-picker/hooks/model-value-helper.ts
index 3d93ed819c..0ce60b7681 100644
--- a/packages/ui/src/components/va-date-picker/hooks/model-value-helper.ts
+++ b/packages/ui/src/components/va-date-picker/hooks/model-value-helper.ts
@@ -64,7 +64,10 @@ export const useDatePickerModelValue = (
}
emit('update:modelValue', date)
- } else if (mode === 'range') {
+ return
+ }
+
+ if (mode === 'range') {
if (!isRange(props.modelValue)) {
return throwIncorrectModelValueError(props.modelValue, mode)
}
@@ -73,18 +76,21 @@ export const useDatePickerModelValue = (
return emit('update:modelValue', { start: props.modelValue.start, end: null })
}
if (props.modelValue.start && dateEqual(props.modelValue.start, date)) {
- return emit('update:modelValue', { start: null, end: props.modelValue.end })
+ return emit('update:modelValue', { start: props.modelValue.end, end: null })
}
- if (props.modelValue.end === null) {
- return emit('update:modelValue', sortRange({ start: props.modelValue.start, end: date }))
- }
if (props.modelValue.start === null) {
return emit('update:modelValue', sortRange({ end: props.modelValue.end, start: date }))
}
+ if (props.modelValue.end === null) {
+ return emit('update:modelValue', sortRange({ start: props.modelValue.start, end: date }))
+ }
emit('update:modelValue', { start: date, end: null })
- } else if (mode === 'multiple') {
+ return
+ }
+
+ if (mode === 'multiple') {
if (!isDates(props.modelValue)) {
return throwIncorrectModelValueError(props.modelValue, mode)
}