Principe de la recheche dans les balises html select

Pour permetre la recherche dans les champ select, il faut activer le librairie JQuery adéquate.

Dans votre template de vue placer :

HTMLHelper::_('formbehavior.chosen', 'select');

Ceci s'applique à tous les select de la vue.

Pour selectionner qu'un select en particulier on lui donnera un nom de classe "monselect_chosen" par exemple, et on appelera HTMLHelper::_('formbehavior.chosen', '.monselect_chosen');

Quand il y a peu d'élement dans les listes

Pour de pas activer l'option de recherche quand il y a peu d'élément dans le liste :

JHtml::_('formbehavior.chosen', 'select', null, array('disable_search_threshold' => 5));

Dans ce cas la selection est proposé dès qu'il y a 6 élement ou plus dans les options du select.

Problème avec les onglets

Ce système ne fonctionne pas quand on utilise les onglet.
Il y a un problème d'affichage au niveau de la largeur, sur les onglet non selectionnés.

Pour cela il faut forcer la largeur.

Soit en faisant :

JHtml::_('formbehavior.chosen', 'select', null, array('disable_search_threshold' => 5, 'data-placeholder' => 'Selection...', 'width' => '100%' ));

Soit en rajoutant un style css dans le champ qui force la lageur :

Par exemple

class="inputbox gskiwidthforce300px"

avec un style forcé :

.gskiwidthforce300px{
width: 300px !important;
}

Forcer l'intitlé par défaut

Pource changer le texte affiché dans la zonne de recherche vide, il faut forcer l'option data-placeholder.

Seulement cet attribut n'est pas geré nativement par JFormField, ni par JFormFieldList.

Il faut donc redefinir la méthode getInput de JFormFieldList en la reprenant dans la description de votre champ (voir  /libraries/joomla/form/fields/list.php.

Rejouter ces lignes dans la méthode getInput :

$dataplaceholder = (string) $this->element['data-placeholder'];
$attr .= !empty($dataplaceholder) ? ' data-placeholder="' . JText::_($dataplaceholder) . '"' : '';

Dans votre description xml de la vue, dans le champ vous pouvez maintenant rajouter l'attribut (par exemple):

<field addfieldpath="/administrator/components/com_gskititres/models/fields"
name="dpt"
type="clubsdptslist"
multiple="true"
label="COM_GSKI_FILTRE_DPTS"
description="COM_GSKI_FILTRE_DPTS_DESC"
data-placeholder="COM_GSKI_FILTRE_DPTS"
onchange="this.form.submit();"
>