|
|
@@ -6,6 +6,7 @@ Champs de saisie de texte, à placer dans un composant `UiForm`
|
|
|
|
|
|
<template>
|
|
|
<v-text-field
|
|
|
+ ref="input"
|
|
|
:model-value="modelValue"
|
|
|
:label="(label || field) ? $t(label ?? field) : undefined"
|
|
|
:rules="rules"
|
|
|
@@ -26,9 +27,7 @@ Champs de saisie de texte, à placer dans un composant `UiForm`
|
|
|
<script setup lang="ts">
|
|
|
import {ref} from "@vue/reactivity";
|
|
|
import {useFieldViolation} from "~/composables/form/useFieldViolation";
|
|
|
-import {useNuxtApp} from "#app";
|
|
|
-import {useI18n} from "vue-i18n";
|
|
|
-import {mask} from "vue-the-mask";
|
|
|
+import {PropType} from "@vue/runtime-core";
|
|
|
|
|
|
const props = defineProps({
|
|
|
/**
|
|
|
@@ -80,7 +79,7 @@ const props = defineProps({
|
|
|
* @see https://vuetify.cn/en/components/forms/#validation-with-submit-clear
|
|
|
*/
|
|
|
rules: {
|
|
|
- type: Array,
|
|
|
+ type: Array as PropType<any[]>,
|
|
|
required: false,
|
|
|
default: () => []
|
|
|
},
|
|
|
@@ -111,8 +110,7 @@ const props = defineProps({
|
|
|
}
|
|
|
})
|
|
|
|
|
|
-const { app } = useNuxtApp()
|
|
|
-const i18n = useI18n()
|
|
|
+const input = ref(null)
|
|
|
|
|
|
const { fieldViolations, updateViolationState } = useFieldViolation(props.field)
|
|
|
|
|
|
@@ -121,18 +119,13 @@ const show = ref(false)
|
|
|
const emit = defineEmits(['update:model-value', 'change'])
|
|
|
|
|
|
const onUpdate = (event: string) => {
|
|
|
- emit('update:model-value', event)
|
|
|
+ emit('update:model-value', event)
|
|
|
}
|
|
|
|
|
|
const onChange = (event: Event | undefined) => {
|
|
|
- updateViolationState(event)
|
|
|
- emit('change', event)
|
|
|
+ updateViolationState(event)
|
|
|
+ emit('change', event)
|
|
|
}
|
|
|
-
|
|
|
-// const label = computed(() => {
|
|
|
-// if (props.label)
|
|
|
-// })
|
|
|
-
|
|
|
</script>
|
|
|
|
|
|
<style scoped lang="scss">
|