useFieldViolation.ts 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  1. import {computed, ComputedRef} from "@vue/reactivity";
  2. import {useFormStore} from "~/store/form";
  3. import {useNuxtApp} from "#app";
  4. /**
  5. * Composable pour gérer l'apparition de message d'erreurs de validation d'un champ de formulaire
  6. *
  7. * @param field
  8. */
  9. export function useFieldViolation(field: string) {
  10. const { emit } = useNuxtApp()
  11. const fieldViolations: ComputedRef<string> = computed(()=> {
  12. return useGet(useFormStore().violations, field, '')
  13. })
  14. /**
  15. * Lorsque la valeur d'un champ change, on supprime le fait qu'il puisse être "faux" dans le store, et on émet sa nouvelle valeur au parent
  16. * @param field
  17. * @param value
  18. */
  19. function updateViolationState(field: string, value: any) {
  20. //@ts-ignore
  21. useFormStore().setViolations(useOmit(useFormStore().violations, field))
  22. console.log('X', useFormStore().violations)
  23. emit('update', value, field)
  24. }
  25. return {
  26. fieldViolations,
  27. updateViolationState: (fieldValue: any) => updateViolationState(fieldValue, field)
  28. }
  29. }