diff options
Diffstat (limited to 'resources/vue/components/courseware/layouts/CoursewareDateInput.vue')
| -rw-r--r-- | resources/vue/components/courseware/layouts/CoursewareDateInput.vue | 21 |
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> |
