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