MTESSDev / FRW

Documentation et support de l'outil de création de formulaires web "low code"
5 stars 1 forks source link

Mauvais libellé si on utilise "name" dans une validation custom en contexte de groupe #132

Open vinnyboii opened 1 year ago

vinnyboii commented 1 year ago

Description du problème Si je met réfère à un "name" dans un message de validation custom dans un groupe, on affiche directement le name du groupe au lieu d'aller chercher le libellé de l'élément en erreur dans le groupe.

Dans l'exemple suivant, si le champ "debutAnnee" ne respecte pas la validation "anneeUniqueCustom", voici le message d'erreur: image

Au lieu de mentionner "anneesRachat", il faudrait voir "Année de début de la période".

- type: repeatableGroup
  name: anneesRachat
  repeatable: true
  limit: 5
  label: 
    fr: Veuillez inscrire l’année correspondant à chaque période concernée par votre demande. Si une de ces périodes s’étend sur plus d’une année, veuillez inscrire toutes les années touchées.
  help:
      fr: Par exemple, si votre demande concerne une période allant de novembre 2015 à juin 2016, vous devez inscrire « 2015-2016 ». 
  instanceLabel:
    fr: Période 
  addLabel:
    fr: Ajouter une période 
  removeLabel:
    fr: Supprimer cette période
  validations:
    optional: null          
  components: 
    - type: inline
      components:                   
      - type: text
        name: debutAnnee
        label:
          fr: Année de début de la période
        outerClasses: md
        placeholder:
          fr: 'exemple 2022'
        validations:
          date: YYYY
          anneeUniqueCustom: 
        additionals:
          :validation-rules: |
            {
              anneeUniqueCustom: ({ value }) => {
                // ----------------------------------------------------------
                // Retirer évidemment les debugger et console.log avant de mettre en prod
                //debugger 
                //console.log(value);
                //console.log(val('anneesRachat'));            
                const anneesRachat = val('anneesRachat');                            
                //On vérifie qu'il y a plus d'une période de rachat (si une seule tout est ok)
                if(anneesRachat && anneesRachat.length > 1) {
                  //On filtre le tableau des périodes afin de conserver les périodes concernées par l'année saisie.
                  const periodes = anneesRachat.filter((rachat) => {
                    if(rachat.debutAnnee && rachat.finAnnee) {
                      return value >= rachat.debutAnnee && value <= rachat.finAnnee;  
                    }
                    return false;                              
                  });                             
                  //Afin d'être valide, l'année saisie ne peut se retrouver que dans une seule période de rachat (la courante actuellement validée)
                  return periodes.length <= 1;
                } else {
                  return true;
                }                            
              }
            }               
        validation-messages:
          date:
            fr: L'information du champ « ${name} » doit être inscrite en année (9999).
            en: (en)L'information du champ « ${name} » doit être inscrite en année (9999).
          anneeUniqueCustom: 
            fr: La valeur du champ « ${name} » doit être présente à l'intérieur d'une seule période de rachat.