Facettierung Form

Facettierung example

Legende
Legende

Für eine Suche wird oft ein Filter oder auch Facettierung benötigt. Hierfür kann das Modul Faceting form genutzt werden, das in einem festen Rahmen eine hohe Flexibilität bietet um eine Facettierung darzustellen.

Die Facettierung selbst besteht aus zwei Einheiten, dem Filter Button, siehe 1) und dem Form Container, siehe 2).

Für die Struktur der Seite, die die Suche und Facettierung beinhaltet empfiehlt sich folgende Struktur:

<div class="row">
    <div class="span4">
		<!-- hier Facettierung einfügen -->
    </div>
	<div class="span8">
        <!-- hier Suchergebnisliste einfügen -->
    </div>
</div> 

1) Filter Button

Der Button wird nur in der mobilen Version eingeblendet, muss aber im Markup immer an der korrekten Stelle eingefügt sein. Hier muss in das data-containerid Attribut die ID des Form Container eingetragen werden, damit die korrekte Zuordnung erfolgen kann.

<button type="button" class="button button--filter js-facetingform-toggler" data-containerid="my_facetingform_example_01">Filter</button>
 

2) Form Container

Der Form Container wird in der Desktop Version immer eingeblendet und in der mobilen Version nur nach Klick auf den entsprechenden Button in einem Flyin Overlay. Die Einheiten innerhalb des Form Containers sind durch Fieldsets gruppiert.


<div class="modul-facetingform js-facetingform" id="my_facetingform_example_01">
    <div class="facetingform__container">
        <div class="container__head">
            <h2 class="title">Facettierung example</h2>
        </div>
        <div class="container__body">
<!-- Form start -->            
<form class="facets">

    <fieldset class="facet">
        <legend class="facet__head">
                <span class="facet-title">Legende</span>
        </legend>
       <div class="facet__body">            <div class="form-check">
                <input class="form-check-input" type="checkbox" id="myCheckbox4709" name="myCheckbox4709">
                <label class="form-check-label" for="myCheckbox4709">Checkbox</label>
            </div>
            <div class="form-check">
                <input class="form-check-input" type="checkbox" id="myCheckbox9653" name="myCheckbox9653">
                <label class="form-check-label" for="myCheckbox9653">Checkbox</label>
            </div>
       </div>    </fieldset>

    <fieldset class="facet">
        <legend class="facet__head">
                <span class="facet-title">Legende</span>
        </legend>
       <div class="facet__body">            <div class="form-check">
                <input class="form-check-input" type="radio" id="myCheckbox7088" name="radioset1">
                <label class="form-check-label" for="myCheckbox7088">Checkbox</label>
            </div>
            <div class="form-check">
                <input class="form-check-input" type="radio" id="myCheckbox3649" name="radioset1">
                <label class="form-check-label" for="myCheckbox3649">Checkbox</label>
            </div>
       </div>    </fieldset>
    <div class="form-actions">
        <div class="form-actions__left">
            
            <button type="reset" class="link reset">zurücksetzen</button>
        </div>
        <div class="form-actions__right">
            
            <button type="submit" class="button button--light">Jetzt filtern</button>
        </div>
    </div>
</form>
<!-- Form end -->
        </div>
    </div>
</div> 

Optional Inhalte des Form containers

Abgesehen von den Elementen aus Forms stehen für die Facettierung noch weitere spezialisierte Inhalte zur Verfügung.

Collapsible Fieldsets

Fieldsets können mit einem Button getoggelt werden. Der data-collapsible-trigger aktiviert den Toggler und setzt den initialen Status (opened|closed). Der aria-controls Wert enthällt die id des zu toggelnden Containers.

Collapible fieldsets

        <legend class="facet__head">
<button data-collapsible-trigger="opened" class="facet-title" type="button" aria-controls="myfacetbody01">
        <span class="text">Click me</span>
</button>
        </legend>
 
    <div class="facet__body" id="myfacetbody01">
    [...]
    </div> 

Collapsible form elements

Durch den .hidden-facet-entries-Wrapper können Teile in langen Formularen ausgeblendet werden. Dieser Container erhällt eine eindeutige Id. Danach folgt ein Button, der diesen Container toggelt.

Collapsible form elements

Legend
    <div class="hidden-facet-entries" id="myhiddenentries01">
                    <div class="form-check">
                <input class="form-check-input" type="checkbox" id="myCheckbox2099" name="myCheckbox2099">
                <label class="form-check-label" for="myCheckbox2099">Checkbox</label>
            </div>
                    <div class="form-check">
                <input class="form-check-input" type="checkbox" id="myCheckbox3876" name="myCheckbox3876">
                <label class="form-check-label" for="myCheckbox3876">Checkbox</label>
            </div>
    </div> 
<button data-collapsible-trigger="closed" aria-controls="myhiddenentries01" type="button" class="facet-entries-toggler" data-closetext="Weniger anzeigen" data-opentext="Mehr anzeigen" ><span class="text">Mehr anzeigen</span></button>
 

Legend helptext

Ein Fragezeichen kann zur Beschreibung einer Legende eingesetzt werden. Diese wird bei Klick in einem Overlay angezeigt.

Legend helptext

Legend with helptext ?
        <legend class="facet__head">
                <span class="facet-title">Legend with helptext</span>
                <span   tabindex="0" 
                        role="button" 
                        class="js-formhelp-flyin-overlay qmark-icon" 
                        title="Ich bin ein kurzer Hilfetext." 
                        aria-label="Öffnet Overlay mit Hilfetext"
                        data-auralopentext="Öffnet Overlay mit Hilfetext"
                        data-auralclosetext="Schließt Overlay mit Hilfetext">
                        ?
                </span>
        </legend>
 
        <legend class="facet__head">
<button data-collapsible-trigger="opened" class="facet-title" type="button" aria-controls="myfacetbodyid">
        <span class="text">Collapsible legend with helptext</span>
        <span   tabindex="0" 
                role="button" 
                class="js-formhelp-flyin-overlay qmark-icon" 
                title="Ich bin ein kurzer Hilfetext."
                aria-label="Öffnet Overlay mit Hilfetext"
                data-auralopentext="Öffnet Overlay mit Hilfetext"
                data-auralclosetext="Schließt Overlay mit Hilfetext">
                ?
        </span>
</button>
        </legend>