From 386f130d7aea6311015b92ed0502c5ca9d3fce66 Mon Sep 17 00:00:00 2001 From: Oleksandr Turchyn Date: Tue, 15 Oct 2024 19:24:30 +0300 Subject: [PATCH] allow to paste date in date field --- app/javascript/submission_form/date_step.vue | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) 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