'CustomWebResolver' – TabPanel und Accordion

Für das Mappen von TabPanels bzw. Accordions ist es wiederum notwendig sowohl die Hauptkomponente selbst, diejenige, die alle Einträge enthält, wie auch die einzelnen Elemente zu mappen.

KlasseNotwendige Komponenten / Unterelemente
TabPanelStellt das TabPanel dar, beinhaltet die Einträge.
Item:TabPanelItemStellt einen Tab dar.
 Optionale Unterelemente
Panel:TabPanelContent(Optional) Stellt ein Panel dar, das den Inhalt des angezeigten Tabs enthält.
Closer:TabPanelCloser(Optional) Stellt einen Closer Button innerhalb des Tabs dar.
CheckBox:TabPanelCheckBox(Optional) Stellt eine CheckBox unter einem Listeneintrag dar.
Icon:TabPanelIcon(Optional) Stellt ein Icon unter einem Listeneintrag dar.
Tabelle 50.6:  Mapping von TabPanels

Im Falle von Accordions lauten die Klassen entsprechend Accordion, Item:AccordionItem etc.

Beispiel:

Der folgende HTML-Code bildet ein TabPanel ab. Wie man auch in vielen Implementierungen von Webseiten findet, sind etliche zusätzliche Ebenen eingezogen, die für die Funktionalität der Tabs völlig irrelevant sind. Einige der Ebenen haben Merkmale, die man für die Zuweisung nutzen kann, für alle TabPanel-Elemente sogar redundant. Sie finden im Anschluss daher zwei Varianten eines 'CustomWebResolver installieren' Knoten, die völlig unterschiedlich konfiguriert sind, für die Komponentenaufnahme bei QF-Test jedoch das gleiche Ergebnis liefern.

<div role="tab-container">
  <div class="tabs">
    <div>
      <div>
        <ul>
          <div class="tab-bar">
            <div>
              <li>
                <div type="tab">Tab1</div>
              </li>
              <li>
                <div type="tab">Tab2</div>
              </li>
              <li>
                <div type="tab">Tab3</div>
              </li>
            </div>
          </div>
        </ul>
        <div class="content">
          <div role="tab-content" id="Tab1">
            <label>Dies ist das erste TabPanel</label>
          </div>
        </div>
        <div class="content">
          <div role="tab-content" id="Tab2">
            <label>Dies ist das zweite TabPanel</label>
          </div>
        </div>
        <div class="content">
          <div role="tab-content" id="Tab3">
            <label>Dies ist das dritte TabPanel</label>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>
Beispiel 50.30:  HTML TabPanel

genericClasses:
- TabPanel: tabs
- Panel:TabPanelContent: content
- Item:TabPanelItem: type=tab
ignoreTags:
- <DIV>
- <SPAN>
- <UL>
- <LI>
Beispiel 50.31:  HTML TabPanel Variante 1

Der zweite Aufruf ist zwar anders parametrisiert, bewirkt aber die gleiche Komponentenaufnahme seitens QF-Test:

genericClasses:
- TabPanel: role=tab-container
- Panel:TabPanelContent: role=tab-content
- Item:TabPanelItem:
    tag: li
    ancestor: TabPanel
ignoreTags:
- <DIV>
- <SPAN>
- <UL>
Beispiel 50.32:  HTML TabPanel Variante 2