0
0
Fork 0

feat: refs #8163 maxLengthVnInput

This commit is contained in:
Javier Segarra 2024-11-22 08:54:19 +01:00
parent 86d19218de
commit ce28757a1a
1 changed files with 9 additions and 7 deletions

View File

@ -73,6 +73,9 @@ const mixinRules = [
requiredFieldRule,
...($attrs.rules ?? []),
(val) => {
const { maxlength } = vnInputRef.value;
if (maxlength && +val.length > maxlength)
return t(`maxLength`, { value: maxlength });
const { min, max } = vnInputRef.value.$attrs;
if (!min) return null;
if (min >= 0) if (Math.floor(val) < min) return t('inputMin', { value: min });
@ -83,13 +86,9 @@ const mixinRules = [
},
];
const insertMode = ref(false);
const handleKeydown = (e) => {
if ($props.insertable && e.key === 'Insert') {
insertMode.value = !insertMode.value;
}
if (insertMode.value && e.key !== 'Insert') {
if (e.key === 'Backspace') return;
if ($props.insertable && e.key.match(/[0-9]/)) {
handleInsertMode(e);
}
};
@ -99,9 +98,10 @@ const handleInsertMode = (e) => {
const input = e.target;
const cursorPos = input.selectionStart;
let currentValue = value.value;
if (!currentValue) currentValue = e.key;
const newValue = Number(e.key);
if (newValue && !isNaN(newValue)) {
const currentValue = value.value;
value.value =
currentValue.substring(0, cursorPos) +
newValue +
@ -158,9 +158,11 @@ const handleInsertMode = (e) => {
<i18n>
en:
inputMin: Must be more than {value}
maxLength: The value exceeds {value} characters
inputMax: Must be less than {value}
es:
inputMin: Debe ser mayor a {value}
maxLength: El valor excede los {value} carácteres
inputMax: Debe ser menor a {value}
</i18n>
<style lang="scss">