Skip to content
Snippets Groups Projects
Commit bd736269 authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Merge branch...

Merge branch '341-absence-creation-dialog-doesn-t-handle-min-max-date-times-correctly' into 'master'

Resolve "Absence creation dialog doesn't handle min/max date times correctly"

Closes #341

See merge request !446
parents 302b7e12 0ae44ed5
No related branches found
No related tags found
1 merge request!446Resolve "Absence creation dialog doesn't handle min/max date times correctly"
Pipeline #194568 failed
<template> <template>
<v-form @input="$emit('valid', $event)"> <v-form ref="form" @input="$emit('valid', $event)">
<v-container> <v-container>
<v-row> <v-row>
<div aria-required="true" class="full-width"> <div aria-required="true" class="full-width">
...@@ -30,9 +30,10 @@ ...@@ -30,9 +30,10 @@
:label="$t('forms.labels.start')" :label="$t('forms.labels.start')"
:max-date="endDate" :max-date="endDate"
:max-time="maxStartTime" :max-time="maxStartTime"
:limit-selectable-range="false"
:rules="$rules().required.build()" :rules="$rules().required.build()"
:value="startDate" :value="startDate"
@input="$emit('start-date', $event)" @input="handleStartDate"
/> />
</div> </div>
</v-col> </v-col>
...@@ -42,9 +43,10 @@ ...@@ -42,9 +43,10 @@
:label="$t('forms.labels.end')" :label="$t('forms.labels.end')"
:min-date="startDate" :min-date="startDate"
:min-time="minEndTime" :min-time="minEndTime"
:limit-selectable-range="false"
:rules="$rules().required.build()" :rules="$rules().required.build()"
:value="endDate" :value="endDate"
@input="$emit('end-date', $event)" @input="handleEndDate"
/> />
</div> </div>
</v-col> </v-col>
...@@ -141,5 +143,33 @@ export default { ...@@ -141,5 +143,33 @@ export default {
return start.plus({ minutes: 5 }).toFormat("HH:mm"); return start.plus({ minutes: 5 }).toFormat("HH:mm");
}, },
}, },
methods: {
handleStartDate(startDate) {
const parsedStart = DateTime.fromISO(startDate);
const parsedEnd = DateTime.fromISO(this.endDate);
if (parsedStart >= parsedEnd) {
this.$emit(
"end-date",
parsedStart.plus({ minutes: 5 }).toISO({ suppressSeconds: true }),
);
}
this.$emit("start-date", startDate);
this.$refs.form.resetValidation();
this.$refs.form.validate();
},
handleEndDate(endDate) {
const parsedStart = DateTime.fromISO(this.startDate);
const parsedEnd = DateTime.fromISO(endDate);
if (parsedEnd <= parsedStart) {
this.$emit(
"start-date",
parsedEnd.minus({ minutes: 5 }).toISO({ suppressSeconds: true }),
);
}
this.$emit("end-date", endDate);
this.$refs.form.resetValidation();
this.$refs.form.validate();
},
},
}; };
</script> </script>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment