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.
Klasse | Notwendige Komponenten / Unterelemente |
---|---|
TabPanel | Stellt das TabPanel dar, beinhaltet die Einträge. |
Item:TabPanelItem | Stellt 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. |
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>
genericClasses: - TabPanel: tabs - Panel:TabPanelContent: content - Item:TabPanelItem: type=tab ignoreTags: - <DIV> - <SPAN> - <UL> - <LI>
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>