pasting issue fix.
This commit is contained in:
parent
40a5ddaf48
commit
03af693b14
1 changed files with 310 additions and 295 deletions
|
|
@ -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;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue