J'ai une liste de noms de pays (par exemple ci-dessous)
Je veux que l'utilisateur soit en mesure de sélectionner quelques pays ou, de sélectionner tous les pays sauf quelques-uns.
Maintenant, cela peut être fait en utilisant un bouton Tout sélectionner en sélectionnant tous les éléments, puis en décochant ceux qui ne sont pas requis. Cependant, cela crée une longue requête à envoyer au backend.
Par exemple, si je souhaite sélectionner tous les pays sauf l'Argentine, la requête ressemblera à quelque chose comme suit:
select(Australia, Austria, Belgium...)
Je veux transformer cette requête en
except(Argentina)
Comment afficher/indiquer à l'utilisateur qu'il peut sélectionner les pays pour lesquels il souhaite des détails ou les pays pour lesquels il ne souhaite pas de détails?
Tout d'abord, vous devez essayer d'éviter de décider comment quelque chose doit se comporter à l'écran en fonction de la contrainte technique de ce que vous envoyez au serveur. Vous pouvez utiliser JavaScript pour refléter une version modifiée de la sélection en tant qu'entrées masquées à soumettre sans que cela n'affecte l'interface utilisateur.
Cela dit, je pense que c'est un bon candidat pour le modèle d'interface constructeur de liste (également appelé liste double), qui vous permettrait d'ajouter ou de supprimer des éléments individuels à la sélection. Vous pouvez également ajouter des boutons pour "Ajouter tout" ou "Supprimer tout". Je soupçonne que ce serait une interaction plus naturelle:
Crédit d'image: Microsoft Windows Design Guidelines for List Boxes
Du point de vue de l'utilisateur, le moyen le plus simple est un sélecteur "inversé". Par exemple. Je connais un logiciel où je coche deux cases et que j'inverse la sélection avant d'appuyer sur le bouton "Rechercher". Mais cela nécessite un certain niveau d'instruction et d'abstraction de la part de l'utilisateur.
Une solution possible pour ignorer l'étape "inverser" serait de fournir deux boutons:
Je pense que c'est la plus pratique.