Checkbox.vue 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <!--
  2. Case à cocher
  3. @see https://vuetifyjs.com/en/components/checkboxes/
  4. -->
  5. <template>
  6. <v-container
  7. class="px-0"
  8. fluid
  9. >
  10. <v-checkbox
  11. v-model="data"
  12. :value="data"
  13. :label="$t(fieldLabel)"
  14. :disabled="readonly"
  15. :error="error || !!violation"
  16. :error-messages="errorMessage || violation ? $t(violation) : ''"
  17. @change="onChange($event)"
  18. />
  19. </v-container>
  20. </template>
  21. <script setup lang="ts">
  22. import {useNuxtApp} from "#app";
  23. import {useFieldViolation} from "~/composables/form/useFieldViolation";
  24. const props = defineProps({
  25. field: {
  26. type: String,
  27. required: false,
  28. default: null
  29. },
  30. label: {
  31. type: String,
  32. required: false,
  33. default: null
  34. },
  35. data: {
  36. type: Boolean,
  37. required: false
  38. },
  39. readonly: {
  40. type: Boolean,
  41. required: false
  42. },
  43. error: {
  44. type: Boolean,
  45. required: false
  46. },
  47. errorMessage: {
  48. type: String,
  49. required: false,
  50. default: null
  51. }
  52. })
  53. const { emit } = useNuxtApp()
  54. const { violation, onChange } = useFieldViolation(props.field, emit)
  55. const fieldLabel = props.label ?? props.field
  56. </script>
  57. <style scoped>
  58. </style>