Ce dropdown s'applique sur un lien (qui peut être stylé comme un select avec la classe .select
). Il fonctionne en utilisant les classes .dropdown-trigger
et .dropdown
. Il dépend de 2 fichiers dropdown.sass
et dropdown.js
.
.row
.col-xs-6
label Dropdown
.dropdown-trigger
a.select.input-small[href="#"]
| 2018
.dropdown
a href="#" class= 'active' 2018
a href="#" 2019
a href="#" 2020
.col-xs-6
label Dropdown "top"
.dropdown-trigger
a.select.input-small[href="#"]
| 2018
.dropdown.dropdown-top
a href="#" class= 'active' 2018
a href="#" 2019
a href="#" 2020
.row
.col-xs-2
.dropdown-trigger
= link_to "#", class: "flex-align-center" do
i.ph-user-circle-bold.account-icon
.ml-1.mr-1 John Doe
i.ph-caret-down-bold
.dropdown.mt-1
= link_to "Compte", "#"
= link_to "FAQ", "#"
Pour les besoins plus complexes, comme les filtres de l'ECGCC, on utilise une librairie qui transforme les selects en une liste dans un dropdown avec plusieurs fonctionnalités : recherche, sélection multiple… Ces dropdowns dépendent des fichiers dropdown_advanced.js
et dropdown_advanced.sass
= form_with(method: :get) do |form|
.row
.col-xs-6
= form.label "Dropdown non multiple "
= form.collection_select :contact_id, StoryBookController::COMPONENTS, :first, :last,
{ selected: StoryBookController::COMPONENTS.first, include_blank: "Tous les contacts" },
{ multiple: false, "data-placeholder": "Tous les contacts", class: "js-select-box" }
.col-xs-6
= form.label "Dropdown avec fonctionnalité de recherche"
= form.collection_select :contact_id, StoryBookController::COMPONENTS, :first, :last,
{ selected: StoryBookController::COMPONENTS.first, include_blank: "Tous les contacts" },
{ multiple: false, "data-search": "true", "data-placeholder": "Tous les contacts", class: "js-select-box" }
.row
.col-xs-6
= form.label "Dropdown multiple avec un affichage max de 2 éléments"
= form.collection_select :contact_id, StoryBookController::COMPONENTS, :first, :last,
{},
{ multiple: true, size: 2, class: "js-select-box" }
.col-xs-6
= form.label "Dropdown mulitple sans select_all"
= form.collection_select :contact_id, StoryBookController::COMPONENTS, :first, :last,
{},
{ multiple: true, class: "js-select-box", "data-disable-select-all": true }
On a essayé de mettre en commun le css de la dropdown single avec celui de la librairie mais ce n'est pas évident car le html n'est pas construit pareil (il est plus complexe afin de gérer les différents cas de figure).
Pour utiliser ce type de dropdown, il faut ajouter la class js-select-box au select
et ajouter les fonctionnalités souhaitées :
data-search: true
pour activer la recherchemultiple: true / false
pour activer / désactiver le choix multiplesi le choix multiple est activé
size: 2
pour transformer l'affichage en "n éléments" au lieu de la liste des éléments sélectionnés.
(Pour tester sélectionner plusieurs éléments dans un select multiple avec une size définie)data-disable-select-all": true
pour supprimer la possibilité de tout sélectionner