Text.vue 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <!--
  2. Champs de saisie de texte
  3. @see https://vuetifyjs.com/en/components/text-fields/
  4. -->
  5. <template>
  6. <v-text-field
  7. autocomplete="off"
  8. :value="data"
  9. :label="$t(label_field)"
  10. :rules="rules"
  11. :disabled="readonly"
  12. :type="type"
  13. :error="error || violations"
  14. :error-messages="errorMessage"
  15. @change="onChange($event)"
  16. />
  17. </template>
  18. <script lang="ts">
  19. import { defineComponent } from '@nuxtjs/composition-api'
  20. import {$useError} from "~/use/form/useError";
  21. export default defineComponent({
  22. props: {
  23. label: {
  24. type: String,
  25. required: false,
  26. default: null
  27. },
  28. field: {
  29. type: String,
  30. required: false,
  31. default: null
  32. },
  33. type: {
  34. type: String,
  35. required: false,
  36. default: null
  37. },
  38. data: {
  39. type: [String, Number],
  40. required: false,
  41. default: null
  42. },
  43. readonly: {
  44. type: Boolean,
  45. required: false
  46. },
  47. rules: {
  48. type: Array,
  49. required: false,
  50. default: () => []
  51. },
  52. error: {
  53. type: Boolean,
  54. required: false
  55. },
  56. errorMessage: {
  57. type: String,
  58. required: false,
  59. default: null
  60. }
  61. },
  62. setup (props, {emit}) {
  63. const {error: violations, onChange} = $useError(props.field, emit)
  64. return {
  65. label_field: props.label ?? props.field,
  66. violations,
  67. onChange
  68. }
  69. }
  70. })
  71. </script>
  72. <style>
  73. input:read-only{
  74. color: #666 !important;
  75. }
  76. </style>