semapps icon indicating copy to clipboard operation
semapps copied to clipboard

Ligne "Créer..." absente lors de l'utilisation du composant MultiServerAutocompleteArrayInput

Open fluidlog opened this issue 3 years ago • 2 comments

Décrivez le bug Lors de l'ajout de compétence, nous utilisons le composant AutocompleteArrayInput. Celui-ci, utilisé dans les chemins de la transition par exemple, permet de créer de nouvelles compétences directement depuis l'input d'affectation, en ajoutant une ligne "Créer..." à la fin de la liste de proposition de choix, et affichant une boite de dialogue permettant de créer une nouvelle compétence (via ESCO par exemple). Or, dans le projet Carto4CH, j'ai récupérer ce code, mais en utilisant la fonction lié à l'interopérabilité MultiServerAutocompleteArrayInput. Et dans ce cas, la ligne "Créer..." n'apparait pas, ou alors, elle apparait faiblement en blanc sur 2 millimètres d'épaisseur...

image

Etapes pour reproduire

  1. Aller sur 'person'
  2. Cliquer sur l'onglet des relations
  3. Se rendre dans l'input des compétences
  4. Essayer d'ajouter une nouvelle compétence à la liste, le bouton "Créer..." en bas de la liste n'apparait pas.

Comportement attendu Le bouton "Créer..." devrait apparaitre en bas de la liste, image (mais avec en plus la précision du nom des serveurs en parallèle) pour accéder à la boite de dialogue image

Système Reproductible en version middleware 43 et frontend 36, avec le code des chemins de la transition, et l'adaptation pour utiliser l'interopérabilité.

fluidlog avatar Sep 30 '22 15:09 fluidlog

J'ai commencé à bosser dessus : Problème décrit aussi ici

PAD de description de ce que je comprends : https://pad.lescommuns.org/ComprehensionLexiconAutocompleteInput (voir les problèmes à la fin :

Avec un focus sur le composant : https://pad.lescommuns.org/ComprehensionAutocompleteInput

Si vous souhaitez travailler sur ce bug, merci de me contacter, car j'ai bien envie d'aller jusqu'au bout ! Et surtout, ne me donnez pas la solution ! :)

fluidlog avatar Sep 30 '22 15:09 fluidlog

Résumé de la proposition de correction : Lorsqu'on utilise la props optionText avec une fonction, et la props Create, la ligne Créer n'apparait pas. C'est dû à un plantage dans la fonction, à cause de la ligne "Créer" justement, qui est différente des autres lignes (choices). Il faut donc prévoir le cas et distinguer les deux. Pour éviter le plantage, il faut ajouter une ligne :

  if (!record || !server) return "Créer "+suggestion ;

Et pour compléter le mot "Créer" par la suggestion (lettre entrées au clavier dans l'input), il faut ajouter :

  const [suggestion, setSuggestion] = useState("");
  const matchSuggestion = useCallback(
    (filterValue, choice) => {
      setSuggestion(filterValue)
      return ( choice[optionText].toLowerCase().match(filterValue.toLowerCase()) )
    }, [optionText]
  );

Les fichiers impactés sont donc :

  • input-components/src/MultiServerAutocompleteArrayInput.js
  • et input-components/src/OptionRenderer.js

Il faudra donc publier une nouvelle version de l'input-component.

fluidlog avatar Oct 03 '22 15:10 fluidlog

Finalement, il semble que suite au passage en RA4, le bug a été corrigé (RA utilise à présent le composant Autocomple de MUI).

fluidlog avatar Aug 24 '23 14:08 fluidlog

Oui j'ai dû tout réécrire ce composant pour la mise à jour RA4 On peut fermer l'issue (et la PR associée) alors ?

srosset81 avatar Aug 29 '23 17:08 srosset81

Oui, j'ai fait pas mal de test, je pense que c'est bon, merci ! :)

fluidlog avatar Aug 30 '23 08:08 fluidlog