aboutsummaryrefslogtreecommitdiff
path: root/resources/vue/components/courseware/layouts/CoursewareDateInput.vue
diff options
context:
space:
mode:
Diffstat (limited to 'resources/vue/components/courseware/layouts/CoursewareDateInput.vue')
-rw-r--r--resources/vue/components/courseware/layouts/CoursewareDateInput.vue21
1 files changed, 16 insertions, 5 deletions
diff --git a/resources/vue/components/courseware/layouts/CoursewareDateInput.vue b/resources/vue/components/courseware/layouts/CoursewareDateInput.vue
index 57a5619..d0129a0 100644
--- a/resources/vue/components/courseware/layouts/CoursewareDateInput.vue
+++ b/resources/vue/components/courseware/layouts/CoursewareDateInput.vue
@@ -1,5 +1,5 @@
<template>
- <input :value="formattedDate" @input="onInput" type="date" />
+ <input :value="formattedDate" @input="onInput" type="date" :min="formattedMinDate" />
</template>
<script>
@@ -8,20 +8,28 @@ const toISO8601 = (date) => date.toISOString();
const pad = (what, length = 2) => `00000000${what}`.substr(-length);
export default {
- props: ['value'],
+ props: ['value', 'min'],
data: () => ({
date: new Date(),
+ submissionDate: new Date()
}),
computed: {
formattedDate() {
return `${this.date.getFullYear()}-${pad(this.date.getMonth() + 1)}-${pad(this.date.getDate())}`;
},
+ formattedMinDate() {
+ return `${this.submissionDate.getFullYear()}-${pad(this.submissionDate.getMonth() + 1)}-${pad(this.submissionDate.getDate())}`;
+ }
},
methods: {
onInput({ target }) {
- const newValue = toISO8601(target.valueAsDate);
- if (newValue !== this.value) {
- this.$emit('input', newValue);
+ if (target.valueAsDate) {
+ const newValue = toISO8601(target.valueAsDate);
+ if (newValue !== this.value) {
+ this.$emit('input', newValue);
+ }
+ } else {
+ this.$emit('nullDate');
}
},
},
@@ -29,6 +37,9 @@ export default {
if (this.value) {
this.date = fromISO8601(this.value);
}
+ if (this.min) {
+ this.submissionDate = fromISO8601(this.min);
+ }
},
};
</script>