semapps icon indicating copy to clipboard operation
semapps copied to clipboard

Correction of MultiServerAutocompleteArrayInput to display optiontext & Create

Open fluidlog opened this issue 3 years ago • 6 comments

Close #1048

More explanation here : https://pad.lescommuns.org/ComprehensionLexiconAutocompleteInput?both#Pas-de-ligne-%E2%80%9CCr%C3%A9er%E2%80%9D-lors-de-l%E2%80%99affectation-des-comp%C3%A9tences

fluidlog avatar Oct 03 '22 15:10 fluidlog

La ligne "Créer" permet, lorsqu'on clique dessus, d'afficher la boite de dialog permettant de créer une nouvelle compétence. image

Dans quel cas nous n'en aurions pas besoin ? Soit on choisi dans la liste des compétences déjà existantes, soit on en créer une nouvelle, ce sont ces deux cas que j'ai testé, et qui fonctionnent.

C'est l'usage que tu en fais dans les chemins de la transition, non ? (voir ta démo ici : https://watch.screencastify.com/v/qiA6TsfkmH5WhnuDKHFT)

fluidlog avatar Oct 07 '22 15:10 fluidlog

On peut très bien ne pas vouloir donner la possibilité à l'utilisateur de créer de nouvelles ressources ! Par exemple parce que le nombre de thématique est fixe.

C'est pourquoi sur le AutocompleteArrayInput de React-Admin, la propre create est optionnelle.

srosset81 avatar Oct 10 '22 07:10 srosset81

Dans les chemins de la transition, c'est bien toi qui a écrit ceci :

export const SkillsInput = (props) => (
  <ReferenceArrayInput reference="Skill"  {...props}>
    <MultiServerAutocompleteArrayInput
      optionText="pair:label"
      // shouldRenderSuggestions={(value) => value.length > 0}
      create={
        <LexiconCreateDialog
          fetchLexicon={fetchESCO('https://esco.commondata.one')}
          selectData={data => ({
            'pair:label': data.label,
            'http://www.w3.org/ns/prov#wasDerivedFrom': data.uri,
          })}
        />
      }
      fullWidth
    />
  </ReferenceArrayInput>
)

Donc tu as choisi consciemment d'utiliser la prop Create. Cette option s'affiche bien sur AutocompleteArrayInput, mais pas si on utilise MultiServerAutocompleteArrayInput, est-on d'accord sur le problème de base ?

fluidlog avatar Oct 10 '22 10:10 fluidlog

Oui mais on peut utiliser MultiServerAutocompleteArrayInput sans le props create !

https://dev.semapps.org/docs/frontend/input-components#multiserverautocompleteinput

Les CDLT c'est qu'un cas particulier.

Ce que tu as fait affiche systématiquement un "Créer ..." même quand on n'a pas passé de props create

srosset81 avatar Oct 10 '22 10:10 srosset81

La ligne "Créer" permet, lorsqu'on clique dessus, d'afficher la boite de dialog permettant de créer une nouvelle compétence. image

Ce qui est important, c'est que quand tu tape "ya" et que tu cliques sur "Créer ya", le mot-clé "ya" apparaisse bien dans la boîte de dialogue. J'ai des doutes là-dessus, c'était le sens de ce commentaire.

srosset81 avatar Oct 10 '22 10:10 srosset81

Ce que j'ai fait dans cette PR est pour corriger un bug (plantage si on utilise optionText en fonction et le create). Et en effet, ce qui n'est pas top, c'est que cela ajoute toujours le create, donc je comprends mieux ce que tu voulais dire. Je vais voir ce que je peux faire pour l'améliorer.

fluidlog avatar Oct 10 '22 10:10 fluidlog

Voilà, 6 mois après, je me suis remis dessus, et j'ai ajouté un test pour savoir si la prop create était utilisée. Pour info, même avant, si la prop n'était pas utilisé, je ne rentrais pas dans l'ajout de la ligne, mais là, au moins, c'est "ceinture et bretelle". Tu me diras si ça te va. Merci.

fluidlog avatar Mar 21 '23 15:03 fluidlog

Fermé après confirmation avec @fluidlog https://github.com/assemblee-virtuelle/semapps/issues/1048#issuecomment-1698704659

srosset81 avatar Aug 30 '23 13:08 srosset81