Sous-catégories en premier dans le sélecteur de catégories Composer

Nos utilisateurs sélectionnent la catégorie pertinente dans le Compositeur de sujets en fonction de la sous-catégorie - ce qui signifie qu’ils doivent se souvenir de la catégorie sous laquelle se trouve la sous-catégorie qu’ils souhaitent utiliser afin de la trouver.

Est-il possible de modifier la façon dont les catégories sont affichées dans le sélecteur de catégories afin que la sous-catégorie et la catégorie échangent leurs places (la sous-catégorie étant la première) ?

Par exemple, un utilisateur souhaite publier un sujet sur la gouvernance. Idéalement, la liste déroulante Catégorie affiche « Gouvernance - Admin » (et la liste est triée par sous-catégorie).

Et lorsqu’elle est sélectionnée, elle est affichée comme « Gouvernance - Admin » dans le compositeur.

Merci.

Une solution CSS rapide pourrait être la suivante. Mettez-la dans votre thème ou dans le CSS d’un composant.
Elle inverse la catégorie → sous-catégorie en sous-catégorie → catégorie :

// Inverse la position de "catégorie -> sous-catégorie" à "sous-catégorie -> catégorie"
.select-kit .select-kit-row.category-row .category-status,
#reply-control .category-input .category-chooser .selected-name .name {
    flex-direction: row-reverse;
}

// Masque la catégorie parente lorsqu'une sous-catégorie est sélectionnée
#reply-control .category-input .category-chooser .selected-name .name {
    & > .badge-category__wrapper:first-child {
        display: none;
    }

    & > .badge-category__wrapper:last-child {
        display: unset;
    }
}

2 « J'aime »

Vous êtes un magicien - merci beaucoup !

Y a-t-il un moyen pour le compositeur de donner la priorité à l’affichage du nom de la sous-catégorie par rapport à la catégorie dans la liste déroulante une fois sélectionnée, ou mieux encore, d’afficher uniquement la sous-catégorie (les catégories ‘trail’ n’apparaissant que dans la liste déroulante) ?

Après quelques essais et erreurs, je pense que je progresse avec :

span.name .badge-wrapper:first-child {
    display: none;
}

Cependant, cela ne fonctionne pas si l’option n’a qu’une catégorie et pas de sous-catégorie (auquel cas la catégorie doit être affichée) - je vais continuer à expérimenter.

Qu’est-ce qui ne va pas avec la suggestion d’Arkshine ?

@martyn_thomas J’ai mis à jour mon message ci-dessus. Vous êtes sur la bonne voie. Il manque une règle pour restaurer display lorsqu’il n’y a pas de sous-catégorie. (en gros, la solution est de toujours masquer le premier élément et de supprimer le second)

Rien - cela a parfaitement fonctionné, je n’essaie pas de masquer la catégorie du menu déroulant sélectionné - j’essaie essentiellement de rendre mon compositeur joli.

2 « J'aime »

La première partie fonctionne (inverser la sous-catégorie et la catégorie), mais la seconde partie ne fonctionne pas :frowning:

Je vais jouer avec ce week-end pour voir si je peux trouver une solution. Merci pour votre aide - je vous dois une bière de Noël.

1 « J'aime »

Je ne suis pas sûr. Comme vous le voyez dans la capture d’écran, cela fonctionne de mon côté. :thinking:
Voici également une vidéo de mon forum de test :

Ça fonctionne aussi pour moi (et rend les endroits plus ordonnés et logiques, car nous nous intéressons à une catégorie, pas au chemin qui y mène — la catégorie parente n’est pas importante ici)

Merci à vous deux.

2 « J'aime »

Je l’ai trouvé :

Dans la version 3.1, c’est :

#reply-control .category-input .category-chooser .selected-name .name {
    & > .badge-wrapper:first-child {
        display: none;
    }

    & > .badge-wrapper:last-child {
        display: unset;
    }
}

Merci à tous pour votre aide !

1 « J'aime »

Salut, j’imagine que si vous n’avez pas trop de catégories sans sous-catégories, vous pourriez utiliser une condition.

Par exemple, si la catégorie n’est pas cat1, Cat2, alors votre code pour masquer la catégorie principale de l’éditeur.

Si le contraire, changez pour si catX, Cat,Y alors votre code.

À quel endroit devons-nous mettre cela lors de la création du composant ?

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.