diff --git a/app/javascript/submission_form/date_step.vue b/app/javascript/submission_form/date_step.vue index 7215bbae..fcd9cc0c 100644 --- a/app/javascript/submission_form/date_step.vue +++ b/app/javascript/submission_form/date_step.vue @@ -45,6 +45,7 @@ :name="`values[${field.uuid}]`" @keydown.enter="onEnter" @focus="$emit('focus')" + @paste="onPaste" > @@ -98,6 +99,25 @@ export default { this.$emit('submit') } }, + onPaste (e) { + e.preventDefault() + + let pasteData = e.clipboardData.getData('text').trim() + + if (pasteData.match(/^\d{2}\.\d{2}\.\d{4}$/)) { + pasteData = pasteData.split('.').reverse().join('-') + } + + const parsedDate = new Date(pasteData) + + if (!isNaN(parsedDate)) { + const inputEl = this.$refs.input + + inputEl.valueAsDate = new Date(parsedDate.getTime() - parsedDate.getTimezoneOffset() * 60000) + + inputEl.dispatchEvent(new Event('input', { bubbles: true })) + } + }, setCurrentDate () { const inputEl = this.$refs.input