Vincent GUFFON 3 лет назад
Родитель
Сommit
6c8e3e8dec
1 измененных файлов с 10 добавлено и 6 удалено
  1. 10 6
      components/Ui/Input/Text.vue

+ 10 - 6
components/Ui/Input/Text.vue

@@ -11,18 +11,21 @@ Champs de saisie de texte
       :label="$t(label_field)"
       :rules="rules"
       :disabled="readonly"
-      :type="type"
-      :error="error || violations"
-      :error-messages="errorMessage"
+      :type="type === 'password' ? (show ? 'text' : type) : type"
+      :error="error || !!violation"
+      :error-messages="errorMessage || violation ? $t(violation) : ''"
       @change="onChange($event)"
       v-mask="mask"
+      :append-icon="type === 'password' ? (show ? 'mdi-eye' : 'mdi-eye-off') : ''"
+      @click:append="show = !show"
     />
 </template>
 
 <script lang="ts">
-import {defineComponent, useContext} from '@nuxtjs/composition-api'
+import {defineComponent, ref, useContext} from '@nuxtjs/composition-api'
 import {useError} from "~/composables/form/useError";
 import {mask} from 'vue-the-mask';
+import {Num} from "@vuex-orm/core";
 
 export default defineComponent({
   props: {
@@ -72,11 +75,12 @@ export default defineComponent({
   },
   setup (props, {emit}) {
     const {store} = useContext()
-    const {error: violations, onChange} = useError(props.field, emit, store)
+    const {violation, onChange} = useError(props.field, emit, store)
 
     return {
       label_field: props.label ?? props.field,
-      violations,
+      violation,
+      show: ref(false),
       onChange
     }
   },