diff --git a/src/components/common/VnInput.vue b/src/components/common/VnInput.vue index 26160929c..8585bf5bc 100644 --- a/src/components/common/VnInput.vue +++ b/src/components/common/VnInput.vue @@ -2,6 +2,7 @@ import { computed, ref } from 'vue'; import { useI18n } from 'vue-i18n'; import { useValidator } from 'src/composables/useValidator'; +import { useAttrs } from 'vue'; const emit = defineEmits([ 'update:modelValue', @@ -29,10 +30,11 @@ const $props = defineProps({ }, }); const { validations } = useValidator(); +const $attrs = useAttrs(); const { t } = useI18n(); -const requiredFieldRule = (val) => validations().required($attrs.required, val); - +const requiredFieldRule = (val) => validations().required(isRequired.value, val); +const isRequired = computed(() => Object.keys($attrs).includes('required')); const vnInputRef = ref(null); const value = computed({ get() { @@ -57,12 +59,6 @@ const focus = () => { vnInputRef.value.focus(); }; -defineExpose({ - focus, -}); -import { useAttrs } from 'vue'; -const $attrs = useAttrs(); - const mixinRules = [ requiredFieldRule, ...($attrs.rules ?? []), @@ -76,6 +72,9 @@ const mixinRules = [ } }, ]; +defineExpose({ + focus, +});