pasting issue fix.

This commit is contained in:
Bill Richardson 2023-07-12 11:29:44 -04:00
parent 40a5ddaf48
commit 03af693b14

View file

@ -1,18 +1,23 @@
<template> <template>
<div class="textbox-question" :class="(errors && errors.length) || hasError ? 'has-error' : ''"> <div
class="textbox-question"
:class="(errors && errors.length) || hasError ? 'has-error' : ''"
>
<label <label
v-if="displayQuestionText" v-if="displayQuestionText"
:for="inputId" :for="inputId"
:aria-label="questionText" :aria-label="questionText"
class="form-label" class="form-label"
:class="[questionAlignment === 'center' ? 'text-center w-100 mb-5' : '']" :class="[questionAlignment === 'center' ? 'text-center w-100 mb-5' : '']"
v-html="labelText"></label> v-html="labelText"
></label>
<div <div
class="input-wrapper" class="input-wrapper"
:class="[ :class="[
includeSearchIcon ? 'has-search-icon' : '', includeSearchIcon ? 'has-search-icon' : '',
includeSelectIcon ? 'has-select-icon' : '', includeSelectIcon ? 'has-select-icon' : '',
]"> ]"
>
<input <input
class="form-control" class="form-control"
v-model.trim.lazy="value" v-model.trim.lazy="value"
@ -42,10 +47,20 @@
:data-bs-toggle="includeSelectIcon ? 'modal' : ''" :data-bs-toggle="includeSelectIcon ? 'modal' : ''"
:data-bs-target="'#' + this.cmsWidgetName" :data-bs-target="'#' + this.cmsWidgetName"
@paste="trimOnPaste" @paste="trimOnPaste"
@drop="trimOnPaste"/> @drop="trimOnPaste"
<button v-if="includeSearchIcon" type="submit" aria-label="Search button" /> />
<button v-if="includeSelectIcon" type="submit" data-bs-toggle="modal" <button
:data-bs-target="'#' + this.cmsWidgetName" aria-label="Select button" /> v-if="includeSearchIcon"
type="submit"
aria-label="Search button"
/>
<button
v-if="includeSelectIcon"
type="submit"
data-bs-toggle="modal"
:data-bs-target="'#' + this.cmsWidgetName"
aria-label="Select button"
/>
</div> </div>
<div v-show="errorMessage" class="row my-1 form-test-error"> <div v-show="errorMessage" class="row my-1 form-test-error">
<span class="d-inline-flex mt-0" role="alert">{{ errorMessage }}</span> <span class="d-inline-flex mt-0" role="alert">{{ errorMessage }}</span>
@ -94,7 +109,7 @@ export default {
includeSelectIcon: Boolean, includeSelectIcon: Boolean,
min: String, min: String,
max: String, max: String,
disableAutoFill: Boolean disableAutoFill: Boolean,
}, },
setup(props) { setup(props) {
const propsClone = Object.assign({}, props); const propsClone = Object.assign({}, props);
@ -116,11 +131,8 @@ export default {
initialValue: initialValue, initialValue: initialValue,
}; };
const { errorMessage, handleBlur, handleChange, meta, validate, errors } = useField( const { errorMessage, handleBlur, handleChange, meta, validate, errors } =
props.inputId, useField(props.inputId, props.validationRules, fieldOptions);
props.validationRules,
fieldOptions
);
return { return {
errorMessage, errorMessage,
@ -134,13 +146,17 @@ export default {
methods: { methods: {
trimOnPaste(evt) { trimOnPaste(evt) {
evt.stopPropagation(); evt.stopPropagation();
evt.preventDefault(); preventDefault();
const data = evt.type == "paste" ? (evt.clipboardData || window.clipboardData) : evt.dataTransfer; var data = null;
const value = data.getData('Text')?.trim(); if (evt.type === "paste") {
data = evt.clipboardData || window.clipboardData;
} else if (evt.type === "drop") {
data = evt.dataTransfer;
}
const value = data.getData("Text")?.trim();
this.$emit("update:modelValue", value); this.$emit("update:modelValue", value);
}, },
}, },
computed: { computed: {
@ -195,7 +211,6 @@ export default {
</script> </script>
<style lang="scss"> <style lang="scss">
input[type="date"]::-webkit-inner-spin-button { input[type="date"]::-webkit-inner-spin-button {
display: none; display: none;
} }
@ -212,7 +227,7 @@ input[type="date"]::-webkit-calendar-picker-indicator {
height: 16px; height: 16px;
display: flex; display: flex;
border-radius: 0 7px 7px 0; border-radius: 0 7px 7px 0;
background-color: #E4F1F7; background-color: #e4f1f7;
&:hover { &:hover {
cursor: pointer; cursor: pointer;
} }
@ -228,7 +243,7 @@ input[type="date"]::-webkit-calendar-picker-indicator {
span { span {
font-weight: 400; font-weight: 400;
font-size: 14px; font-size: 14px;
color: #4D5151; color: #4d5151;
} }
.form-test-error span { .form-test-error span {
color: #d4281c; color: #d4281c;