diff --git a/js/src/components/Event/DateTimePicker.vue b/js/src/components/Event/DateTimePicker.vue index cc6f89dcd..6b4dc2358 100644 --- a/js/src/components/Event/DateTimePicker.vue +++ b/js/src/components/Event/DateTimePicker.vue @@ -22,8 +22,9 @@ :day-names="localeShortWeekDayNamesProxy" :month-names="localeMonthNamesProxy" :first-day-of-week="parseInt($t('firstDayOfWeek'), 10)" - :min-date="minDate" - v-model="dateWithoutTime" + :min-date="minDatetime" + :max-date="maxDatetime" + v-model="dateWithTime" :placeholder="$t('Click to select')" :years-range="[-2,10]" icon="calendar" @@ -33,6 +34,8 @@ placeholder="Type or select a time..." icon="clock" v-model="dateWithTime" + :min-time="minDatetime" + :max-time="maxDatetime" size="is-small" inline> @@ -65,23 +68,21 @@ export default class DateTimePicker extends Vue { /** * Earliest date available for selection */ - @Prop({ required: false, type: Date, default: null }) minDate!: Date; + @Prop({ required: false, type: Date, default: null }) minDatetime!: Date; - dateWithoutTime: Date = this.value; - dateWithTime: Date = this.dateWithoutTime; + /** + * Latest date available for selection + */ + @Prop({ required: false, type: Date, default: null }) maxDatetime!: Date; + + dateWithTime: Date = this.value; localeShortWeekDayNamesProxy = localeShortWeekDayNames(); localeMonthNamesProxy = localeMonthNames(); @Watch('value') updateValue() { - this.dateWithoutTime = this.value; - this.dateWithTime = this.dateWithoutTime; - } - - @Watch('dateWithoutTime') - updateDateWithoutTimeWatcher() { - this.updateDateTime(); + this.dateWithTime = this.value; } @Watch('dateWithTime') @@ -95,9 +96,7 @@ export default class DateTimePicker extends Vue { * * @type {Date} */ - this.dateWithoutTime.setHours(this.dateWithTime.getHours()); - this.dateWithoutTime.setMinutes(this.dateWithTime.getMinutes()); - this.$emit('input', this.dateWithoutTime); + this.$emit('input', this.dateWithTime); } } diff --git a/js/src/views/Event/Edit.vue b/js/src/views/Event/Edit.vue index fe1c0c484..34d3d055a 100644 --- a/js/src/views/Event/Edit.vue +++ b/js/src/views/Event/Edit.vue @@ -22,7 +22,7 @@ - + {{ $t('Date parameters')}} @@ -630,7 +630,7 @@ export default class EditEvent extends Vue { return JSON.stringify(this.event.toEditJSON()) !== JSON.stringify(this.unmodifiedEvent); } - get beginsOn() { return this.event.beginsOn; } + get beginsOn(): Date { return this.event.beginsOn; } @Watch('beginsOn', { deep: true }) onBeginsOnChanged(beginsOn) { @@ -639,7 +639,7 @@ export default class EditEvent extends Vue { const dateEndsOn = new Date(this.event.endsOn); if (dateEndsOn < dateBeginsOn) { this.event.endsOn = dateBeginsOn; - this.event.endsOn.setHours(dateEndsOn.getHours()); + this.event.endsOn.setHours(dateBeginsOn.getHours() + 1); } if (dateEndsOn === dateBeginsOn) { this.event.endsOn.setHours(dateEndsOn.getHours() + 1);