ACCORDION-USAGE (Standard Module )

src/app/shared/components/accordion/templates

Demo Section

Each variation will be presented in the following section.

Simple Accordion

Um Bilder im VEAMS-Accordionmodul zu integrieren muss man im JSON-File (accordion-bp.json) verschiedene Einstellungen durchführen. Jedes Accordion-Item muss, wenn es ein Bild integriert haben soll das Attribute "itemShowImg": true setzen. Außerdem muss man dem Item das Attributei "itemClass":"is-withimg" zuweisen. Für die Bearbeitung dieses Bild-Akkordions benötigt man in der WYSIWYG-Ansicht im FS-CC noch die Klasse 'is-preview'. Sowohl die Klasse 'is-withimg' als auch 'is-preview' werden dem Element mit der Klasse 'accordion__content' zugewiesen. Soll das Bild zusätzlich noch einen beschreibenden Text haben erreicht man das durch das hinzufügen des Attribute "itemShowImgInfo": true pro Item.
Je nach ausspielender Seite muss dem Modul noch eine entsprechende Klasse zugewiesen werden (c-accordion--lpage für Landingpageseiten und c-accordion--default für Detailseiten)

Um Bilder im VEAMS-Accordionmodul zu integrieren muss man im JSON-File (accordion-bp.json) verschiedene Einstellungen durchführen. Jedes Accordion-Item muss, wenn es ein Bild integriert haben soll das Attribute "itemShowImg": true setzen. Außerdem muss man dem Item das Attributei "itemClass":"is-withimg" zuweisen. Für die Bearbeitung dieses Bild-Akkordions benötigt man in der WYSIWYG-Ansicht im FS-CC noch die Klasse 'is-preview'. Sowohl die Klasse 'is-withimg' als auch 'is-preview' werden dem Element mit der Klasse 'accordion__content' zugewiesen. Soll das Bild zusätzlich noch einen beschreibenden Text haben erreicht man das durch das hinzufügen des Attribute "itemShowImgInfo": true pro Item.
Je nach ausspielender Seite muss dem Modul noch eine entsprechende Klasse zugewiesen werden (c-accordion--lpage für Landingpageseiten und c-accordion--default für Detailseiten)


Simple Accordion with image im Preview Mode (No Height setting) - For WYSIWYG-CMS-Mode

Headline for sample detail page with images

Um Bilder im VEAMS-Accordionmodul zu integrieren muss man im JSON-File (accordion-bp.json) verschiedene Einstellungen durchführen. Jedes Accordion-Item muss, wenn es ein Bild integriert haben soll das Attribute "itemShowImg": true setzen. Außerdem muss man dem Item das Attributei "itemClass":"is-withimg" zuweisen. Für die Bearbeitung dieses Bild-Akkordions benötigt man in der WYSIWYG-Ansicht im FS-CC noch die Klasse 'is-preview'. Sowohl die Klasse 'is-withimg' als auch 'is-preview' werden dem Element mit der Klasse 'accordion__content' zugewiesen. Soll das Bild zusätzlich noch einen beschreibenden Text haben erreicht man das durch das hinzufügen des Attribute "itemShowImgInfo": true pro Item.
Je nach ausspielender Seite muss dem Modul noch eine entsprechende Klasse zugewiesen werden (c-accordion--lpage für Landingpageseiten und c-accordion--default für Detailseiten)

2_zu_1_Format_s
Bild Einbindung

Um Bildinformationen noch einzublenden muss im JSON File im jeweiligen Item-Objekt noch das Attribute "itemShowImg": true und "itemShowImgInfo": true (Anzeige von Bildunterschriften) eingebaut sein. Für das Accordion-Modul gibt es im Modul Figure und Picture eine eigene Klasse.

Um Bilder im VEAMS-Accordionmodul zu integrieren muss man im JSON-File (accordion-bp.json) verschiedene Einstellungen durchführen. Jedes Accordion-Item muss, wenn es ein Bild integriert haben soll das Attribute "itemShowImg": true setzen. Außerdem muss man dem Item das Attributei "itemClass":"is-withimg" zuweisen. Für die Bearbeitung dieses Bild-Akkordions benötigt man in der WYSIWYG-Ansicht im FS-CC noch die Klasse 'is-preview'. Sowohl die Klasse 'is-withimg' als auch 'is-preview' werden dem Element mit der Klasse 'accordion__content' zugewiesen. Soll das Bild zusätzlich noch einen beschreibenden Text haben erreicht man das durch das hinzufügen des Attribute "itemShowImgInfo": true pro Item.
Je nach ausspielender Seite muss dem Modul noch eine entsprechende Klasse zugewiesen werden (c-accordion--lpage für Landingpageseiten und c-accordion--default für Detailseiten)

2_zu_1_Format_s

Um Bilder im VEAMS-Accordionmodul zu integrieren muss man im JSON-File (accordion-bp.json) verschiedene Einstellungen durchführen. Jedes Accordion-Item muss, wenn es ein Bild integriert haben soll das Attribute "itemShowImg": true setzen. Außerdem muss man dem Item das Attributei "itemClass":"is-withimg" zuweisen. Für die Bearbeitung dieses Bild-Akkordions benötigt man in der WYSIWYG-Ansicht im FS-CC noch die Klasse 'is-preview'. Sowohl die Klasse 'is-withimg' als auch 'is-preview' werden dem Element mit der Klasse 'accordion__content' zugewiesen. Soll das Bild zusätzlich noch einen beschreibenden Text haben erreicht man das durch das hinzufügen des Attribute "itemShowImgInfo": true pro Item.
Je nach ausspielender Seite muss dem Modul noch eine entsprechende Klasse zugewiesen werden (c-accordion--lpage für Landingpageseiten und c-accordion--default für Detailseiten)


Simple Accordion with image

Headline for sample detail page with images

Um Bilder im VEAMS-Accordionmodul zu integrieren muss man im JSON-File (accordion-bp.json) verschiedene Einstellungen durchführen. Jedes Accordion-Item muss, wenn es ein Bild integriert haben soll das Attribute "itemShowImg": true setzen. Außerdem muss man dem Item das Attributei "itemClass":"is-withimg" zuweisen. Für die Bearbeitung dieses Bild-Akkordions benötigt man in der WYSIWYG-Ansicht im FS-CC noch die Klasse 'is-preview'. Sowohl die Klasse 'is-withimg' als auch 'is-preview' werden dem Element mit der Klasse 'accordion__content' zugewiesen. Soll das Bild zusätzlich noch einen beschreibenden Text haben erreicht man das durch das hinzufügen des Attribute "itemShowImgInfo": true pro Item.
Je nach ausspielender Seite muss dem Modul noch eine entsprechende Klasse zugewiesen werden (c-accordion--lpage für Landingpageseiten und c-accordion--default für Detailseiten)

2_zu_1_Format_s
Bild Einbindung

Um Bildinformationen noch einzublenden muss im JSON File im jeweiligen Item-Objekt noch das Attribute "itemShowImg": true und "itemShowImgInfo": true (Anzeige von Bildunterschriften) eingebaut sein. Für das Accordion-Modul gibt es im Modul Figure und Picture eine eigene Klasse.

Um Bilder im VEAMS-Accordionmodul zu integrieren muss man im JSON-File (accordion-bp.json) verschiedene Einstellungen durchführen. Jedes Accordion-Item muss, wenn es ein Bild integriert haben soll das Attribute "itemShowImg": true setzen. Außerdem muss man dem Item das Attributei "itemClass":"is-withimg" zuweisen. Für die Bearbeitung dieses Bild-Akkordions benötigt man in der WYSIWYG-Ansicht im FS-CC noch die Klasse 'is-preview'. Sowohl die Klasse 'is-withimg' als auch 'is-preview' werden dem Element mit der Klasse 'accordion__content' zugewiesen. Soll das Bild zusätzlich noch einen beschreibenden Text haben erreicht man das durch das hinzufügen des Attribute "itemShowImgInfo": true pro Item.
Je nach ausspielender Seite muss dem Modul noch eine entsprechende Klasse zugewiesen werden (c-accordion--lpage für Landingpageseiten und c-accordion--default für Detailseiten)

2_zu_1_Format_s

Single Open Accordion with Default Openings

Um Bilder im VEAMS-Accordionmodul zu integrieren muss man im JSON-File (accordion-bp.json) verschiedene Einstellungen durchführen. Jedes Accordion-Item muss, wenn es ein Bild integriert haben soll das Attribute "itemShowImg": true setzen. Außerdem muss man dem Item das Attributei "itemClass":"is-withimg" zuweisen. Für die Bearbeitung dieses Bild-Akkordions benötigt man in der WYSIWYG-Ansicht im FS-CC noch die Klasse 'is-preview'. Sowohl die Klasse 'is-withimg' als auch 'is-preview' werden dem Element mit der Klasse 'accordion__content' zugewiesen. Soll das Bild zusätzlich noch einen beschreibenden Text haben erreicht man das durch das hinzufügen des Attribute "itemShowImgInfo": true pro Item.
Je nach ausspielender Seite muss dem Modul noch eine entsprechende Klasse zugewiesen werden (c-accordion--lpage für Landingpageseiten und c-accordion--default für Detailseiten)

Um Bilder im VEAMS-Accordionmodul zu integrieren muss man im JSON-File (accordion-bp.json) verschiedene Einstellungen durchführen. Jedes Accordion-Item muss, wenn es ein Bild integriert haben soll das Attribute "itemShowImg": true setzen. Außerdem muss man dem Item das Attributei "itemClass":"is-withimg" zuweisen. Für die Bearbeitung dieses Bild-Akkordions benötigt man in der WYSIWYG-Ansicht im FS-CC noch die Klasse 'is-preview'. Sowohl die Klasse 'is-withimg' als auch 'is-preview' werden dem Element mit der Klasse 'accordion__content' zugewiesen. Soll das Bild zusätzlich noch einen beschreibenden Text haben erreicht man das durch das hinzufügen des Attribute "itemShowImgInfo": true pro Item.
Je nach ausspielender Seite muss dem Modul noch eine entsprechende Klasse zugewiesen werden (c-accordion--lpage für Landingpageseiten und c-accordion--default für Detailseiten)


Simple Accordion with image in Landingpage

Headline for sample landing page with image

Um Bilder im VEAMS-Accordionmodul zu integrieren muss man im JSON-File (accordion-bp.json) verschiedene Einstellungen durchführen. Jedes Accordion-Item muss, wenn es ein Bild integriert haben soll das Attribute "itemShowImg": true setzen. Außerdem muss man dem Item das Attributei "itemClass":"is-withimg" zuweisen. Für die Bearbeitung dieses Bild-Akkordions benötigt man in der WYSIWYG-Ansicht im FS-CC noch die Klasse 'is-preview'. Sowohl die Klasse 'is-withimg' als auch 'is-preview' werden dem Element mit der Klasse 'accordion__content' zugewiesen. Soll das Bild zusätzlich noch einen beschreibenden Text haben erreicht man das durch das hinzufügen des Attribute "itemShowImgInfo": true pro Item.
Je nach ausspielender Seite muss dem Modul noch eine entsprechende Klasse zugewiesen werden (c-accordion--lpage für Landingpageseiten und c-accordion--default für Detailseiten)

2_zu_1_Format_s

Um Bilder im VEAMS-Accordionmodul zu integrieren muss man im JSON-File (accordion-bp.json) verschiedene Einstellungen durchführen. Jedes Accordion-Item muss, wenn es ein Bild integriert haben soll das Attribute "itemShowImg": true setzen. Außerdem muss man dem Item das Attributei "itemClass":"is-withimg" zuweisen. Für die Bearbeitung dieses Bild-Akkordions benötigt man in der WYSIWYG-Ansicht im FS-CC noch die Klasse 'is-preview'. Sowohl die Klasse 'is-withimg' als auch 'is-preview' werden dem Element mit der Klasse 'accordion__content' zugewiesen. Soll das Bild zusätzlich noch einen beschreibenden Text haben erreicht man das durch das hinzufügen des Attribute "itemShowImgInfo": true pro Item.
Je nach ausspielender Seite muss dem Modul noch eine entsprechende Klasse zugewiesen werden (c-accordion--lpage für Landingpageseiten und c-accordion--default für Detailseiten)

2_zu_1_Format_s
Bild Einbindung

Um Bildinformationen noch einzublenden muss im JSON File im jeweiligen Item-Objekt noch das Attribute "itemShowImg": true und "itemShowImgInfo": true (Anzeige von Bildunterschriften) eingebaut sein. Für das Accordion-Modul gibt es im Modul Figure und Picture eine eigene Klasse.

Um Bilder im VEAMS-Accordionmodul zu integrieren muss man im JSON-File (accordion-bp.json) verschiedene Einstellungen durchführen. Jedes Accordion-Item muss, wenn es ein Bild integriert haben soll das Attribute "itemShowImg": true setzen. Außerdem muss man dem Item das Attributei "itemClass":"is-withimg" zuweisen. Für die Bearbeitung dieses Bild-Akkordions benötigt man in der WYSIWYG-Ansicht im FS-CC noch die Klasse 'is-preview'. Sowohl die Klasse 'is-withimg' als auch 'is-preview' werden dem Element mit der Klasse 'accordion__content' zugewiesen. Soll das Bild zusätzlich noch einen beschreibenden Text haben erreicht man das durch das hinzufügen des Attribute "itemShowImgInfo": true pro Item.
Je nach ausspielender Seite muss dem Modul noch eine entsprechende Klasse zugewiesen werden (c-accordion--lpage für Landingpageseiten und c-accordion--default für Detailseiten)


Simple Accordion in Landingpage

Headline for sample landing page

Um Bilder im VEAMS-Accordionmodul zu integrieren muss man im JSON-File (accordion-bp.json) verschiedene Einstellungen durchführen. Jedes Accordion-Item muss, wenn es ein Bild integriert haben soll das Attribute "itemShowImg": true setzen. Außerdem muss man dem Item das Attributei "itemClass":"is-withimg" zuweisen. Für die Bearbeitung dieses Bild-Akkordions benötigt man in der WYSIWYG-Ansicht im FS-CC noch die Klasse 'is-preview'. Sowohl die Klasse 'is-withimg' als auch 'is-preview' werden dem Element mit der Klasse 'accordion__content' zugewiesen. Soll das Bild zusätzlich noch einen beschreibenden Text haben erreicht man das durch das hinzufügen des Attribute "itemShowImgInfo": true pro Item.
Je nach ausspielender Seite muss dem Modul noch eine entsprechende Klasse zugewiesen werden (c-accordion--lpage für Landingpageseiten und c-accordion--default für Detailseiten)

Um Bilder im VEAMS-Accordionmodul zu integrieren muss man im JSON-File (accordion-bp.json) verschiedene Einstellungen durchführen. Jedes Accordion-Item muss, wenn es ein Bild integriert haben soll das Attribute "itemShowImg": true setzen. Außerdem muss man dem Item das Attributei "itemClass":"is-withimg" zuweisen. Für die Bearbeitung dieses Bild-Akkordions benötigt man in der WYSIWYG-Ansicht im FS-CC noch die Klasse 'is-preview'. Sowohl die Klasse 'is-withimg' als auch 'is-preview' werden dem Element mit der Klasse 'accordion__content' zugewiesen. Soll das Bild zusätzlich noch einen beschreibenden Text haben erreicht man das durch das hinzufügen des Attribute "itemShowImgInfo": true pro Item.
Je nach ausspielender Seite muss dem Modul noch eine entsprechende Klasse zugewiesen werden (c-accordion--lpage für Landingpageseiten und c-accordion--default für Detailseiten)


Readme

Accordion

Description

The component represents a simple accordion with transitions and max-height.

Accordions are elements used to expand and collapse content that is broken into logical sections, much like tabs.

The accordion is based on the blueprint of Veams-Components and is a wrap-with component to support flexible content with predefined surrounded markup.

The accordion is jQuery-free (we use Veams-Query) and contains some accessiblity functionality.


JIRA


Requirements


Installation

Installation with Veams

veams install component accordion
veams -i c accordion

Fields

accordion-usage.hbs

The partial is a {{#wrapWith}} helper. Documentation for wrapWith helper.

accordion.hbs

Settings

Parameter Type Default Description
settings.accContextClass String 'default' Context class of component: ‘default’ is used for detailpages, “lpage” is used for landingpages
settings.accClasses String '' Modifier classes for component: Standard: false o. “”
settings.accJsOptions Object null JavaScript options which gets stringified

accordion__item.hbs

Settings

Parameter Type Description
settings.accNoWrapper Boolean Hide wrapper div .accordion__item
Parameter Type Description
accItemId String Id of the accordion item
accItemClass String CSS-Class for an item
accButton String Button text for accordion item
accShowImg String Boolean: If an image is to be included, it must be linked to the settings “accClasses”: “accordion__withimg”
accShowImgInfo String Boolean: If an image Info is to be included, it must be linked to the settings “accClasses”: “accordion__withimg”

JavaScript Options

The module gives you the possibility to override default options:

Option Type Default Description
classes.activeClass String 'is-active' Define the active class for active elements
classes.calculatingClass String 'is-calculating' Define the calculating class for the initial calculation cycle
classes.closeClass String 'is-closed' Define the closing class for accordion content items
classes.openClass Boolean 'is-open' Define the opening class for accordion content items
classes.unresolvedClass String 'is-unresolved' Define the unresolved class for the whole accordion which will be deleted after didMount() and render() is finished
classes.showPreview String 'is-preview' Define a preview CMS-Version for a Akkordion with Image-Content. The automatically setting of Heights of the item with the class ‘accordion__content’ will not happen by didMount(). The Class is set to the Element with the Class accordion__content together with the Class ‘is-withimg’
clickHandler String 'click' Define a click handler for the buttons
dataMaxAttr String 'data-js-height' Define the attribute in which the calculated height is saved
openAllOnInit Boolean false If set to true, all panels stays open on render
openByHash Boolean false If set to true, panel can be opened by url hash referencing the id of the panel
openIndex Number null Index of panel to be opened on init (zero based)
openOnViewports Array ['tablet-s', 'tablet-l', 'desktop-s', 'desktop-m', 'desktop-l'] Viewports on which the openIndex panel is opened on init
removeStyles Boolean false If set to true,
selectors.accordionBtn String '[data-js-item='accordion-btn']' Define the element for accordion buttons
selectors.accordionContent String '[data-js-item="accordion-content"]' Define the element for accordion content items
singleOpen Boolean false If set to true, only one panel can be opened at the same time
tabMode Boolean false If set to true, the accordion behaves like a tab module (clicking on active button will not close the corresponding panel)

Sass Options

There are multiple global variables which you can change:

Variable Default Description
$accordion-toggle-duration 300ms !default Speed of toggling
$accordion-transition-method ease !default Transition method of toggle effect
$accordion-icon-color #666 !default + icon color
$accordion-icon-width 15px !default + icon width
$accordion-icon-height 2px !default + icon height
$accordion-btn-color $accordion-icon-color !default Accordion button color
$accordion-btn-bg-color rgba(255, 255, 255, .5) !default Background color of the accordion button
$accordion-padding 1rem !default Default padding which will be used in the accordion

Templates

accordion-usage.hbs

{{! WrapWith START: Accordion }}
{{#wrapWith "accordion" settings=this.settings content=this.content}}
{{! WrapWith START: Item }}
	{{#each content.items}}
		{{#wrapWith "accordion__item" accItemClass=this.itemClass accItemId=this.itemId accButton=itemBtnText accShowImg=itemShowImg accShowImgInfo=itemShowImgInfo}}
			<p>Um Bilder im <strong>VEAMS-Accordionmodul</strong> zu integrieren muss man im <b>JSON-File (accordion-bp.json)</b> verschiedene Einstellungen durchführen. Jedes Accordion-Item muss, wenn es ein Bild integriert haben soll das Attribute <i>"itemShowImg": true</i> setzen. Außerdem muss man dem Item das Attributei "itemClass":"is-withimg" zuweisen. Für die Bearbeitung dieses Bild-Akkordions benötigt man in der WYSIWYG-Ansicht im FS-CC noch die Klasse 'is-preview'. Sowohl die Klasse 'is-withimg' als auch 'is-preview' werden dem Element mit der Klasse 'accordion__content' zugewiesen. Soll das Bild zusätzlich noch einen beschreibenden Text haben erreicht man das durch das hinzufügen des Attribute <i>"itemShowImgInfo": true</i> pro Item.<br>Je nach ausspielender Seite muss dem Modul noch eine entsprechende Klasse zugewiesen werden (c-accordion--lpage für <a href="#" class="is-external">Landingpageseiten</a> und c-accordion--default für <a href="#" >Detailseiten</a>)</p>
		{{/wrapWith}}
	{{/each}}
{{! WrapWith END: Item }}
{{/wrapWith}}
{{! WrapWith END: Accordion }}

accordion.hbs

<div class="c-accordion{{#if options.settings.accContextClass}}--{{options.settings.accContextClass}}{{else}}--default{{/if}}{{#if options.settings.accClasses}} {{options.settings.accClasses}}{{/if}}"
     data-css="c-accordion"
     data-js-module="accordion"{{#if options.settings.accJsOptions}}
     data-js-options='{{stringify options.settings.accJsOptions}}'{{/if}} role="tablist">
	 {{#if options.content.headline}}
			<h2 class="accordion__headline">{{options.content.headline}}</h2>
	{{/if}}
		{{{yield}}}
</div>

accordion__item.hbs

{{#unless options.settings.accNoWrapper}}
	<div class="accordion__item">
{{/unless}}
	<div class="accordion__header">
		<a href="#{{options.accItemId}}"
		   class="accordion__btn"
		   data-js-item="accordion-btn" role="tab"
		   aria-controls="{{options.accItemId}}">
			<span class="accordion__btn-inner">{{options.accButton}}</span>
		</a>
	</div>
	<div class="accordion__content {{options.accItemClass}}"
	     id="{{options.accItemId}}"
	     data-js-item="accordion-content" role="tabpanel"
	     aria-labelledby="{{options.accItemId}}" style="color:#cc0000;">
		<div class="accordion__content-inner">
			{{{yield}}}
		</div>
		{{#if options.accShowImg}}
			<div class="accordion__img">
				<figure class="c-figure--accordion" data-css="c-figure" id="figure-content">
					<div class="figure__wrapper">
						<picture class="c-picture--accordion" data-css="c-picture">
							<!--[if IE 9]><audio><![endif]-->
							<source srcset="https://placehold.co/300x300 300w, https://placehold.co/600x600 600w, https://placehold.co/1200x1200 1200w" media="(min-width: 768px)" sizes="30vw"/>
							<source srcset="https://placehold.co/600x300 600w, https://placehold.co/1200x600 1200w, https://placehold.co/2400x1200 2400w" media="(max-width: 767px)" sizes="calc(100vw - ((100vw / 14) * 2))"/>
							<!--[if IE 9]></audio><![endif]-->
							<img class="picture__image" src="https://placehold.co/600x300" alt="2_zu_1_Format_s" title="2_zu_1_Format_s" data-sizes="auto" data-js-item="figure-acc-image" />
						</picture>
					</div>
					{{#if options.accShowImgInfo}}
					<figcaption class="figure__caption">
						<div class="figure__caption-inner">
								<div class="figure__caption-headline">Bild Einbindung</div>
								<p class="figure__caption-content">Um Bildinformationen noch einzublenden muss im JSON File im jeweiligen Item-Objekt noch das Attribute "itemShowImg": true und
						"itemShowImgInfo": true (Anzeige von Bildunterschriften) eingebaut sein. Für das Accordion-Modul gibt es im Modul Figure und Picture eine eigene Klasse.</p>
						</div>
					</figcaption>
					{{/if}}
				</figure>
			</div>
		{{/if}}
	</div>
{{#unless options.settings.accNoWrapper}}
	</div>
{{/unless}}

Data File

accordion-bp.hjson

{
	"title": "Accordion",
	"variations": {
		"simple": {
			"docs": {
				"variationName": "Simple Accordion"
			},
			"settings": {
				"accContextClass": "default",
				"accClasses": false
			},
			"content": {
				"items": [
					{
						"itemId": "test-1",
						"itemBtnText": "Item 1",
						"itemShowImg": false
					},
					{
						"itemId": "test-2",
						"itemBtnText": "Item 2",
						"itemShowImg": false
					}
				]
			}
		},
		"simpleWithImagePreview": {
			"docs": {
				"variationName": "Simple Accordion with image im Preview Mode (No Height setting) - For WYSIWYG-CMS-Mode"
			},
			"settings": {
				"accContextClass": "default",
				"accClasses": false
			},
			"content": {
				"headline": "Headline for sample detail page with images",
				"items": [
					{
						"itemId": "test-1",
						"itemClass": "is-withimg is-preview",
						"itemBtnText": "Item 1",
						"itemShowImg": true,
						"itemShowImgInfo": true
					},
					{
						"itemId": "test-2",
						"itemClass": "is-withimg is-preview",
						"itemBtnText": "Item 2",
						"itemShowImg": true
					},
					{
						"itemId": "test-3",
						"itemClass": "",
						"itemBtnText": "Item 3"
					}
				]
			}
		},
		"simpleWithImage": {
			"docs": {
				"variationName": "Simple Accordion with image"
			},
			"settings": {
				"accContextClass": "default",
				"accClasses": "is-noheight"
			},
			"content": {
				"headline": "Headline for sample detail page with images",
				"items": [
					{
						"itemId": "test-1",
						"itemClass": "is-withimg",
						"itemBtnText": "Item 1",
						"itemShowImg": true,
						"itemShowImgInfo": true
					},
					{
						"itemId": "test-2",
						"itemClass": "is-withimg",
						"itemBtnText": "Item 2",
						"itemShowImg": true
					}
				]
			}
		},
		"singleOpen": {
			"docs": {
				"variationName": "Single Open Accordion with Default Openings"
			},
			"settings": {
				"accContextClass": "default",
				"accClasses": false,
				"accJsOptions": {
					"singleOpen": true
				}
			},
			"content": {
				"items": [
					{
						"itemId": "test-2-1",
						"itemBtnText": "Item 1",
						"itemShowImg": false
					},
					{
						"itemId": "test-2-2",
						"itemBtnText": "Item 2",
						"itemShowImg": false
					}
				]
			}
		},
		"simplewithimgandlpage": {
			"docs": {
				"variationName": "Simple Accordion with image in Landingpage"
			},
			"settings": {
				"accContextClass": "lpage",
				"accClasses": "",
				"accNoWrapper": "true"
			},
			"content": {
				"headline": "Headline for sample landing page with image",
				"items": [
					{
						"itemId": "test-1",
						"itemClass": "is-withimg",
						"itemBtnText": "Item 1",
						"itemShowImg": true
					},
					{
						"itemId": "test-2",
						"itemClass": "is-withimg",
						"itemBtnText": "Item 2",
						"itemShowImg": true,
						"itemShowImgInfo": true
					}
					,
					{
						"itemId": "test3",
						"itemBtnText": "Item 3"
					}
				]
			}
		},
		"simplelpage": {
			"docs": {
				"variationName": "Simple Accordion in Landingpage"
			},
			"settings": {
				"accContextClass": "lpage",
				"accClasses": false
			},
			"content": {
				"headline": "Headline for sample landing page",
				"items": [
					{
						"itemId": "test-1",
						"itemBtnText": "Item 1",
						"itemShowImg": false
					},
					{
						"itemId": "test-2",
						"itemBtnText": "Item 2",
						"itemShowImg": false
					}
				]
			}
		}
	}
}

Styles

_accordion.scss

/* ===================================================
Accordion
=================================================== */

/* ---------------------------------------------------
Global Variables
--------------------------------------------------- */
$accordion-toggle-duration: 250ms !default;
$accordion-transition-method: ease !default;
$accordion-icon-width: 15px !default;
$accordion-icon-height: 2px !default;

/* ---------------------------------------------------
Global Styles
--------------------------------------------------- */
[data-css="c-accordion"] {
	position: relative;
	margin-bottom: 30px;

	.accordion__headline {
		@include headline-h2-styles();
		width: 100%;
		margin-left: 0px;
	}

	/*
	Unresolved
	----------------------- */
	&.is-unresolved {
	}

	/*
	Wrapper Item
	----------------------- */
	.accordion__item {
	}

	/*
	Header/ Toggle Button
	----------------------- */
	.accordion__header {
		margin-bottom: 8px;
	}

	.accordion__btn {
		@include print() {
			border-bottom: 1px solid $color-gray-border;
			padding-left: 0px !important;
		}

		&::before,
		&::after {
			@include print() {
				display: none !important;
			}
		}
	}

	/*
	Content/ Toggle Content
	----------------------- */
	.accordion__content {
		display: flex;
		flex-direction: column;
		align-items: flex-start;

		&.is-withimg {
			@include bp($bp-tablet-p) {
				flex-direction: row;
			}

			@include print() {
				flex-direction: row;
			}

			.accordion__content-inner {
				width: 100%;
				padding: 20px 20px 20px;

				@include bp($bp-tablet-p) {
					width: 70%;
					padding: 20px 20px 50px;
				}
				@include print() {
					width: 70%;
				}
			}

			.accordion__img {
				padding: 0px 20px 50px;
				width: 100%;
				box-sizing: border-box;





				@include bp($bp-tablet-p) {
					padding: 20px 20px 50px;
					width: 30%;
				}

				@include print() {
					padding: 20px 20px 50px;
					width: 30%;
				}
			}
		}

		@include print() {
			height: auto !important;
		}
	}

	.accordion__content-inner > p:not(:empty) {
		margin-bottom: 15px;

		@include bp($bp-desktop-m) {
			margin-bottom: 20px;
		}
	}

	.accordion__content-inner > ul {
		@include content-ul-styles();
	}

	.accordion__content-inner > ol {
		@include content-ol-styles();
	}

	.accordion__content-inner > ul, .accordion__content-inner > ol {
		margin-bottom: 15px;
		margin-left: 0;
		width: calc(100%);

		@include bp($bp-desktop-m) {
			margin-bottom: 20px;
		}

		& > li:first-child {
			margin-top: 0;
		}
	}

	.accordion__content-inner > p:empty {
		margin: 0; height:0;
	}

	.accordion__content-inner > h3 {
		margin-left: 0px;
		width: 100%;
		flex: 0 0 100%;
	}

	/*
	Icon
	----------------------- */
	.accordion__icon {
		position: relative;
	}

	/*
	Header/ Toggle Button
	----------------------- */
	.accordion__btn {
		font-family: $font-bold;
		font-weight: 700;
		color: $color-green-hc-dark;
		display: block;
		padding: 18px 50px 18px 20px;
		overflow: hidden;
		text-overflow: ellipsis;
		position: relative;
		text-decoration: none;
		background-color: $color-light;

		&:hover,
		&:focus {

			&::before,
			&::after {
				background-color: $color-dark;
			}

			.accordion__btn-inner {
				color: $color-dark;
			}
		}

		&::before,
		&::after {
			@extend %pseudo;

			transition: bottom $accordion-toggle-duration linear $accordion-toggle-duration, transform $accordion-toggle-duration ease-out;
			background-color: $color-green;
			height: $accordion-icon-height;
			right: 20px;
			top: 50%;
			width: $accordion-icon-width;
		}

		&::after {
			transform: rotate(-90deg);

			@include hcm() {
				transform: rotate(0deg);
				content: '+';
				font-size: 28px;
			}
		}

		&.is-active {

			&::before {
				transform: rotate(180deg);
			}

			&::after {
				transform: rotate(0deg);

				@include hcm() {
					transform: rotate(0deg);
					content: '-';
					font-size: 28px;
				}
			}
		}

		.accordion__btn-inner {
			color: $color-green-hc-dark;
		}
	}

	/*
	Content
	----------------------- */
	.accordion__content-inner {
		padding: 20px 20px 50px;
		color: $color-dark;

		@include print() {
			padding-left: 0px !important;
		}

	}

	.accordion__btn-inner {
		color: $color-green-hc-dark;
		transition: color $animation-duration-std $animation-easing-std;

		&:hover,
		&:focus,
		&:active {
			color: $color-dark;
		}
	}



	/*
	Modifiers
	----------------------- */
	.is-closed {
		height: 0;
		transition: height $accordion-transition-method $accordion-toggle-duration;
		overflow: hidden;
	}

	.is-open {
		transition: height $accordion-transition-method $accordion-toggle-duration;
		overflow: hidden;
	}

	// !IMPORTANT for calculation
	.is-calculating {
		width: 100% !important;
		position: absolute !important;
		visibility: hidden !important;
		display: flex !important; //before block
		height: auto !important;
	}
}

/* ---------------------------------------------------
Context: Default (Bereich für RTE (Detailsete))
--------------------------------------------------- */
.c-accordion--default {

	/*
	Header/ Toggle Button
	----------------------- */
	.accordion__btn {
		font-size: 1.6rem;
		line-height: (24/16);
		letter-spacing: .3px;
	}

	/*
	Content
	----------------------- */
	.accordion__content-inner {
		font-family: $font-regular;
		font-size: 1.5rem;
		line-height: (22/15);
		letter-spacing: .25px;

		@include bp($bp-desktop-m) {
			font-size: 1.6rem;
			line-height: (24/16);
		}

	}

}

/* ---------------------------------------------------
Context: lpage
--------------------------------------------------- */
.c-accordion--lpage {
	clear: both;
	display: inline-block;
	width: 100%;
	margin: 0 auto 60px;

	@include bp($bp-mobile-p) {
		margin-bottom: 80px;
	}

	@include bp($bp-tablet-p) {
		margin-bottom: 100px;
	}

	@include bp(1920px) {
		margin-bottom: 120px;
	}

	.accordion__headline {
		@include bp($bp-tablet-p) {
			@include grid-column-width(12);
			@include grid-push-h(0);
		}
	}
	/*
	Header/ Toggle Button
	----------------------- */
	.accordion__btn {
		font-size: 1.6rem;
		line-height: (24/16);
		letter-spacing: .3px;
	}

	/*
	Content
	----------------------- */
	.accordion__content-inner {
		font-family: $font-regular;
		font-size: 1.5rem;
		line-height: (22/15);
		letter-spacing: .25px;
		width: 100%;

		@include bp($bp-tablet-p) {
			font-size: 1.6rem;
			line-height: (24/16);
			width: 70%;
		}

		sub {
			vertical-align: sub;
			font-size: smaller;
		}

		sup {
			vertical-align: super;
			font-size: smaller;
		}

		strong, b {
			@include content-b-styles();
		}

		i {
			@include content-i-styles();
		}

		/*
			Links
		----------------------------- */
		a {
			@include content-a-styles();
		}

	}
}

Scripts

accordion.js

/**
 * Represents a simple accordion with transitions and max-height.
 *
 * @module Accordion
 * @version v1.0.0
 *
 * @author Sebastian Fitzner
 * @author Andy Gutsche
 */

/**
 * Requirements
 */

import $ from 'jquery';
import Component from '@veams/component';
import forEach from '@veams/helpers/lib/array/for-each';

/**
 * Class Accordion
 */
class Accordion extends Component {
	/**
	 * General Properties
	 */
	$el = $(this.el);
	_$accordionContents = $(this.options.selectors.accordionContent, this.$el);
	_$accordionBtns = $(this.options.selectors.accordionBtn, this.$el);
	_$accordionImages = $(this.options.selectors.figureImage, this.$el);
	_$target = null;
	_$btn = null;

	openIndex = this.options.openIndex;

	constructor(obj) {
		let options = {
			classes: {
				active: 'is-active',
				calculating: 'is-calculating',
				close: 'is-closed',
				open: 'is-open',
				unresolved: 'is-unresolved',
				showPreview: 'is-preview',
				isWithImg: 'is-withimg',
				isImgLoading: 'is-imgloading',
			},
			clickHandler: 'click',
			dataMaxAttr: 'data-js-height',
			openAllOnInit: false,
			openByHash: false,
			openIndex: null,
			openOnViewports: ['tablet-s', 'tablet-l', 'desktop-s', 'desktop-m', 'desktop-l'],
			removeStyles: false, // TODO
			selectors: {
				accordionBtn: '[data-js-item="accordion-btn"]',
				accordionContent: '[data-js-item="accordion-content"]',
				figureImage: '[data-js-item="figure-acc-image"]',
			},
			singleOpen: false,
			tabMode: false,
			windowwidth: 0
		};

		super(obj, options);
	}

	/** =================================================
	 * GETTER & SETTER
	 * ================================================ */

	/**
	 * Get module information
	 */
	static get info() {
		return {
			version: '1.0.0',
			vc: true,
			mod: false // set to true if source was modified in project
		};
	}

	set $accordionContents(items) {
		this._$accordionContents = items;
	}

	get $accordionContents() {
		return this._$accordionContents;
	}

	set $accordionImages(items) {
		this._$accordionImages = items;
	}

	get $accordionImages() {
		return this._$accordionImages;
	}

	set $accordionBtns(items) {
		this._$accordionBtns = items;
	}

	get $accordionBtns() {
		return this._$accordionBtns;
	}

	set $target(item) {
		this._$target = item;
	}

	get $target() {
		return this._$target;
	}

	set $btn(item) {
		this._$btn = item;
	}

	get $btn() {
		return this._$btn;
	}

	/** =================================================
	 * EVENTS
	 * ================================================ */
	get events() {
		return {
			'{{this.options.clickHandler}} {{this.options.selectors.accordionBtn}}': 'handleClick'
		};
	}

	get subscribe() {
		return {
			'{{context.EVENTS.resize}}': 'render',
			'{{context.EVENTS.accordion.closeAll}}': 'closeAll',
			'{{context.EVENTS.accordion.openAll}}': 'openAll'
		};
	}

	/**
	 * Bind all events
	 */
	bindEvents() {
		let fnOnHashChange = this.onHashChange.bind(this);

		// Global events
		if (this.options.openByHash) {
			$(window).on(this.context.EVENTS.hashchange, fnOnHashChange);
		}

	}

	/** =================================================
	 * STANDARD METHODS
	 * ================================================= */
	didMount() {
		if (this.options.openByHash) {
			let idx = this.getIndexByHash();

			this.openIndex = typeof idx === 'number' ? idx : this.options.openIndex;
		} else if (this.options.tabMode && !this.options.openIndex) {
			this.openIndex = 0;
		}
	}

	render() {

		if (!this.context.currentMedia) {
			console.warn(
				'Accordion: @veams/plugin-media-query-handler is necessary to support breakpoints in the accordion component!'
			);
			return;
		}

		if ($(window).width() != this.options.windowwidth) {
			this.options.windowwidth = $(window).width();
			this.removeStyles();
			setTimeout ( this.saveHeights(this.$accordionContents), 300);

			this.closeAll();

			if (this.options.openAllOnInit) {
				this.openAll();
			}

			// Open on index if set in options
			if (typeof this.openIndex === 'number') {
				if (
					this.options.tabMode ||
					this.options.openOnViewports.indexOf(this.context.currentMedia) !== -1
				) {
					this.activateBtn(this.$accordionBtns.eq(this.openIndex));
					this.slideDownV(this.$accordionContents.eq(this.openIndex));
				}
			}

			if (this.$el.hasClass(this.options.classes.unresolved)) {
				this.$el.removeClass(this.options.classes.unresolved);
			}
		}

	}

	/** =================================================
	 * CUSTOM ACCORDION METHODS
	 * ================================================= */
	/**
	 * Get index of accordion content referenced by hash
	 *
	 * @return {number|boolean} - index of element or false if no match
	 */
	getIndexByHash() {
		let hash = document.location.hash.split('#');
		let retVal = false;
		let i = 0;

		if (hash < 2) {
			return false;
		}

		for (i; i < this.$accordionContents.length; i++) {
			if (this.$accordionContents[i].id === hash[1]) {
				retVal = i;
				break;
			}
		}

		return retVal;
	}

	/**
	 * Open accordion content referenced by hash
	 *
	 * @param {object} e - event object
	 */
	onHashChange(e) {
		let idx = this.getIndexByHash();

		if (typeof idx === 'number') {
			if (this.options.singleOpen) {
				this.closeAll();
			}

			this.activateBtn(this.$accordionBtns.eq(idx));
			this.slideDownV(this.$accordionContents.eq(idx));
		}
	}

	/**
	 * Save heights of all accordion contents.
	 *
	 * @param {Array} items - array of items
	 */
	saveHeights(items) {
		forEach(items, (idx, item) => {
			let $elitem = $(item);
			// Calculate the height of elements only for those without images and without a WYSIWYG mode
			if (!$elitem.hasClass(this.options.classes.showPreview)) {
				if(!$elitem.hasClass(this.options.classes.isWithImg)){
					this.saveHeight(item);
				} else {
					this.$accordionImages = $elitem.find(this.options.selectors.figureImage);
					if (!this.$accordionImages.length) {
						this.saveHeight(item);
					} else {
						if (this.$accordionImages[0].complete) {
							setTimeout (this.saveHeight(item), 1600);
						} else {
							item.classList.add(this.options.classes.isImgLoading);
							this.$accordionImages.on('load', (e) => {
								let elementAkkContent = e.currentTarget.closest('.accordion__content');
								if (elementAkkContent != null) {
									setTimeout (this.saveHeight(elementAkkContent), 1600);
									elementAkkContent.classList.remove(this.options.classes.isImgLoading);
								}
								this.$accordionImages.off('load');
							});
						}
					}
				}
			}
		});
	}

	/**
	 * Save the height of the node item.
	 *
	 * @param {Object} item - item to calculate the height
	 */
	saveHeight(item) {
		let $el = $(item);

		// the el is hidden so:
		// making the el block so we can measure its height but still be hidden
		$el.addClass(this.options.classes.calculating);

		let wantedHeight = $el.outerHeight();

		// reverting to the original values
		$el.removeClass(this.options.classes.calculating);

		// save height in data attribute
		$el.attr(this.options.dataMaxAttr, wantedHeight);
	}

	/**
	 * Handle the click,
	 * get the id of the clicked button and
	 * execute the toggleContent method.
	 *
	 * @param {Object} e - event object
	 * @param {object} currentTarget - Target to which listener was attached.
	 */
	handleClick(e, currentTarget) {
		this.$btn = currentTarget ? $(currentTarget) : $(e.currentTarget);
		let targetId = this.$btn.attr('href');

		e.preventDefault();

		if (this.options.tabMode && this.$btn.hasClass(this.options.classes.active)) {
			return;
		}

		this.toggleContent(targetId);
	}

	/**
	 * Toggle the accordion content by using the id of the accordion button.
	 *
	 * @param {String} id - id of the target
	 *
	 * @public
	 */
	toggleContent(id) {
		this.$target = this.$el.find(id);

		if (this.$target.hasClass(this.options.classes.open)) {
			this.slideUpV(this.$target);
			this.deactivateBtn(this.$btn);
		} else {
			if (this.options.singleOpen || this.options.tabMode) {
				this.closeAll();
			}

			this.activateBtn(this.$btn);
			this.slideDownV(this.$target);
		}
	}

	/**
	 * Mimics the slideUp functionality of jQuery by using height and transition.
	 *
	 * @param {Object} $item - jQuery object of item
	 */
	slideUpV($item) {
		$item
			.css('height', 0)
			.removeAttr('style')
			.attr('aria-expanded', 'false')
			.removeClass(this.options.classes.open)
			.addClass(this.options.classes.close);
	}

	/**
	 * Mimics the slideDown functionality of jQuery by using height and transition. Setting Hight for element with images who are not loaded
	 *
	 * @param {Object} $item - jQuery object of item
	 */
	slideDownV($item) {
		//Setting the Height of the accordion-content for elements with not loaded images
		if ($item.hasClass(this.options.classes.isImgLoading)) {
			this.$accordionImages = $item.find(this.options.selectors.figureImage);
			if (this.$accordionImages.length > 0){
				if (this.$accordionImages[0].complete) {
					this.saveHeight($item[0]);
					$item.removeClass(this.options.classes.isImgLoading);
				} else {
					this.$accordionImages.on('load', (e) => {
						let elementAkkContent = e.currentTarget.closest('.accordion__content');
						if (elementAkkContent != null) {
							this.saveHeight(elementAkkContent);
							elementAkkContent.classList.remove(this.options.classes.isImgLoading);
						}
						this.$accordionImages.off('load');
					});
				}
			}
		}
		$item
			.css('height', $item.attr('data-js-height') + 'px')
			.attr('aria-expanded', 'true')
			.removeClass(this.options.classes.close)
			.addClass(this.options.classes.open);
	}

	/**
	 * Adds active class to the clicked button.
	 *
	 * @param {Object} $item - jQuery object of button
	 */
	activateBtn($item) {
		$item.addClass(this.options.classes.active);
	}

	/**
	 * Removes active class from the button.
	 *
	 * @param {Object} $item - jQuery object of button
	 */
	deactivateBtn($item) {
		$item.removeClass(this.options.classes.active);
	}

	/**
	 * Remove all styles of the accordion content elements
	 */
	removeStyles() {
		this.$accordionContents.removeAttr('style');
	}

	/**
	 * Close all accordion contents and active buttons
	 *
	 * @public
	 */
	closeAll() {
		forEach(this.$accordionContents, (idx, item) => {
			this.slideUpV($(item));
		});
		forEach(this.$accordionBtns, (idx, item) => {
			this.deactivateBtn($(item));
		});
	}

	/**
	 * Close all accordion contents and active buttons
	 *
	 * @public
	 */
	openAll() {
		forEach(this.$accordionContents, (idx, item) => {
			this.slideDownV($(item));
		});
		forEach(this.$accordionBtns, (idx, item) => {
			this.activateBtn($(item));
		});
	}
}

// Returns constructor
export default Accordion;

HTML Output

Simple Accordion

<div class="c-accordion--default" data-css="c-accordion" data-js-module="accordion" role="tablist">
	<div class="accordion__item">
		<div class="accordion__header">
			<a href="#test-1" class="accordion__btn" data-js-item="accordion-btn" role="tab" aria-controls="test-1">
				<span class="accordion__btn-inner">Item 1</span>
			</a>
		</div>
		<div class="accordion__content " id="test-1" data-js-item="accordion-content" role="tabpanel" aria-labelledby="test-1" style="color:#cc0000;">
			<div class="accordion__content-inner">
				<p>Um Bilder im <strong>VEAMS-Accordionmodul</strong> zu integrieren muss man im <b>JSON-File (accordion-bp.json)</b> verschiedene Einstellungen durchführen. Jedes Accordion-Item muss, wenn es ein Bild integriert haben soll das Attribute <i>"itemShowImg": true</i> setzen. Außerdem muss man dem Item das Attributei "itemClass":"is-withimg" zuweisen. Für die Bearbeitung dieses Bild-Akkordions benötigt man in der WYSIWYG-Ansicht im FS-CC noch die Klasse 'is-preview'. Sowohl die Klasse 'is-withimg' als auch 'is-preview' werden dem Element mit der Klasse 'accordion__content' zugewiesen. Soll das Bild zusätzlich noch einen beschreibenden Text haben erreicht man das durch das hinzufügen des Attribute <i>"itemShowImgInfo": true</i> pro Item.<br>Je nach ausspielender Seite muss dem Modul noch eine entsprechende Klasse zugewiesen werden (c-accordion--lpage für <a href="#" class="is-external">Landingpageseiten</a> und c-accordion--default für <a href="#">Detailseiten</a>)</p>
			</div>
		</div>
	</div>
	<div class="accordion__item">
		<div class="accordion__header">
			<a href="#test-2" class="accordion__btn" data-js-item="accordion-btn" role="tab" aria-controls="test-2">
				<span class="accordion__btn-inner">Item 2</span>
			</a>
		</div>
		<div class="accordion__content " id="test-2" data-js-item="accordion-content" role="tabpanel" aria-labelledby="test-2" style="color:#cc0000;">
			<div class="accordion__content-inner">
				<p>Um Bilder im <strong>VEAMS-Accordionmodul</strong> zu integrieren muss man im <b>JSON-File (accordion-bp.json)</b> verschiedene Einstellungen durchführen. Jedes Accordion-Item muss, wenn es ein Bild integriert haben soll das Attribute <i>"itemShowImg": true</i> setzen. Außerdem muss man dem Item das Attributei "itemClass":"is-withimg" zuweisen. Für die Bearbeitung dieses Bild-Akkordions benötigt man in der WYSIWYG-Ansicht im FS-CC noch die Klasse 'is-preview'. Sowohl die Klasse 'is-withimg' als auch 'is-preview' werden dem Element mit der Klasse 'accordion__content' zugewiesen. Soll das Bild zusätzlich noch einen beschreibenden Text haben erreicht man das durch das hinzufügen des Attribute <i>"itemShowImgInfo": true</i> pro Item.<br>Je nach ausspielender Seite muss dem Modul noch eine entsprechende Klasse zugewiesen werden (c-accordion--lpage für <a href="#" class="is-external">Landingpageseiten</a> und c-accordion--default für <a href="#">Detailseiten</a>)</p>
			</div>
		</div>
	</div>
</div>

Simple Accordion with image im Preview Mode (No Height setting) - For WYSIWYG-CMS-Mode

<div class="c-accordion--default" data-css="c-accordion" data-js-module="accordion" role="tablist">
	<h2 class="accordion__headline">Headline for sample detail page with images</h2>
	<div class="accordion__item">
		<div class="accordion__header">
			<a href="#test-1" class="accordion__btn" data-js-item="accordion-btn" role="tab" aria-controls="test-1">
				<span class="accordion__btn-inner">Item 1</span>
			</a>
		</div>
		<div class="accordion__content is-withimg is-preview" id="test-1" data-js-item="accordion-content" role="tabpanel" aria-labelledby="test-1" style="color:#cc0000;">
			<div class="accordion__content-inner">
				<p>Um Bilder im <strong>VEAMS-Accordionmodul</strong> zu integrieren muss man im <b>JSON-File (accordion-bp.json)</b> verschiedene Einstellungen durchführen. Jedes Accordion-Item muss, wenn es ein Bild integriert haben soll das Attribute <i>"itemShowImg": true</i> setzen. Außerdem muss man dem Item das Attributei "itemClass":"is-withimg" zuweisen. Für die Bearbeitung dieses Bild-Akkordions benötigt man in der WYSIWYG-Ansicht im FS-CC noch die Klasse 'is-preview'. Sowohl die Klasse 'is-withimg' als auch 'is-preview' werden dem Element mit der Klasse 'accordion__content' zugewiesen. Soll das Bild zusätzlich noch einen beschreibenden Text haben erreicht man das durch das hinzufügen des Attribute <i>"itemShowImgInfo": true</i> pro Item.<br>Je nach ausspielender Seite muss dem Modul noch eine entsprechende Klasse zugewiesen werden (c-accordion--lpage für <a href="#" class="is-external">Landingpageseiten</a> und c-accordion--default für <a href="#">Detailseiten</a>)</p>
			</div>
			<div class="accordion__img">
				<figure class="c-figure--accordion" data-css="c-figure" id="figure-content">
					<div class="figure__wrapper">
						<picture class="c-picture--accordion" data-css="c-picture">
							<!--[if IE 9]><audio><![endif]-->
							<source srcset="https://placehold.co/300x300 300w, https://placehold.co/600x600 600w, https://placehold.co/1200x1200 1200w" media="(min-width: 768px)" sizes="30vw" />
							<source srcset="https://placehold.co/600x300 600w, https://placehold.co/1200x600 1200w, https://placehold.co/2400x1200 2400w" media="(max-width: 767px)" sizes="calc(100vw - ((100vw / 14) * 2))" />
							<!--[if IE 9]></audio><![endif]-->
							<img class="picture__image" src="https://placehold.co/600x300" alt="2_zu_1_Format_s" title="2_zu_1_Format_s" data-sizes="auto" data-js-item="figure-acc-image" />
						</picture>
					</div>
					<figcaption class="figure__caption">
						<div class="figure__caption-inner">
							<div class="figure__caption-headline">Bild Einbindung</div>
							<p class="figure__caption-content">Um Bildinformationen noch einzublenden muss im JSON File im jeweiligen Item-Objekt noch das Attribute "itemShowImg": true und
								"itemShowImgInfo": true (Anzeige von Bildunterschriften) eingebaut sein. Für das Accordion-Modul gibt es im Modul Figure und Picture eine eigene Klasse.</p>
						</div>
					</figcaption>
				</figure>
			</div>
		</div>
	</div>
	<div class="accordion__item">
		<div class="accordion__header">
			<a href="#test-2" class="accordion__btn" data-js-item="accordion-btn" role="tab" aria-controls="test-2">
				<span class="accordion__btn-inner">Item 2</span>
			</a>
		</div>
		<div class="accordion__content is-withimg is-preview" id="test-2" data-js-item="accordion-content" role="tabpanel" aria-labelledby="test-2" style="color:#cc0000;">
			<div class="accordion__content-inner">
				<p>Um Bilder im <strong>VEAMS-Accordionmodul</strong> zu integrieren muss man im <b>JSON-File (accordion-bp.json)</b> verschiedene Einstellungen durchführen. Jedes Accordion-Item muss, wenn es ein Bild integriert haben soll das Attribute <i>"itemShowImg": true</i> setzen. Außerdem muss man dem Item das Attributei "itemClass":"is-withimg" zuweisen. Für die Bearbeitung dieses Bild-Akkordions benötigt man in der WYSIWYG-Ansicht im FS-CC noch die Klasse 'is-preview'. Sowohl die Klasse 'is-withimg' als auch 'is-preview' werden dem Element mit der Klasse 'accordion__content' zugewiesen. Soll das Bild zusätzlich noch einen beschreibenden Text haben erreicht man das durch das hinzufügen des Attribute <i>"itemShowImgInfo": true</i> pro Item.<br>Je nach ausspielender Seite muss dem Modul noch eine entsprechende Klasse zugewiesen werden (c-accordion--lpage für <a href="#" class="is-external">Landingpageseiten</a> und c-accordion--default für <a href="#">Detailseiten</a>)</p>
			</div>
			<div class="accordion__img">
				<figure class="c-figure--accordion" data-css="c-figure" id="figure-content">
					<div class="figure__wrapper">
						<picture class="c-picture--accordion" data-css="c-picture">
							<!--[if IE 9]><audio><![endif]-->
							<source srcset="https://placehold.co/300x300 300w, https://placehold.co/600x600 600w, https://placehold.co/1200x1200 1200w" media="(min-width: 768px)" sizes="30vw" />
							<source srcset="https://placehold.co/600x300 600w, https://placehold.co/1200x600 1200w, https://placehold.co/2400x1200 2400w" media="(max-width: 767px)" sizes="calc(100vw - ((100vw / 14) * 2))" />
							<!--[if IE 9]></audio><![endif]-->
							<img class="picture__image" src="https://placehold.co/600x300" alt="2_zu_1_Format_s" title="2_zu_1_Format_s" data-sizes="auto" data-js-item="figure-acc-image" />
						</picture>
					</div>
				</figure>
			</div>
		</div>
	</div>
	<div class="accordion__item">
		<div class="accordion__header">
			<a href="#test-3" class="accordion__btn" data-js-item="accordion-btn" role="tab" aria-controls="test-3">
				<span class="accordion__btn-inner">Item 3</span>
			</a>
		</div>
		<div class="accordion__content " id="test-3" data-js-item="accordion-content" role="tabpanel" aria-labelledby="test-3" style="color:#cc0000;">
			<div class="accordion__content-inner">
				<p>Um Bilder im <strong>VEAMS-Accordionmodul</strong> zu integrieren muss man im <b>JSON-File (accordion-bp.json)</b> verschiedene Einstellungen durchführen. Jedes Accordion-Item muss, wenn es ein Bild integriert haben soll das Attribute <i>"itemShowImg": true</i> setzen. Außerdem muss man dem Item das Attributei "itemClass":"is-withimg" zuweisen. Für die Bearbeitung dieses Bild-Akkordions benötigt man in der WYSIWYG-Ansicht im FS-CC noch die Klasse 'is-preview'. Sowohl die Klasse 'is-withimg' als auch 'is-preview' werden dem Element mit der Klasse 'accordion__content' zugewiesen. Soll das Bild zusätzlich noch einen beschreibenden Text haben erreicht man das durch das hinzufügen des Attribute <i>"itemShowImgInfo": true</i> pro Item.<br>Je nach ausspielender Seite muss dem Modul noch eine entsprechende Klasse zugewiesen werden (c-accordion--lpage für <a href="#" class="is-external">Landingpageseiten</a> und c-accordion--default für <a href="#">Detailseiten</a>)</p>
			</div>
		</div>
	</div>
</div>

Simple Accordion with image

<div class="c-accordion--default is-noheight" data-css="c-accordion" data-js-module="accordion" role="tablist">
	<h2 class="accordion__headline">Headline for sample detail page with images</h2>
	<div class="accordion__item">
		<div class="accordion__header">
			<a href="#test-1" class="accordion__btn" data-js-item="accordion-btn" role="tab" aria-controls="test-1">
				<span class="accordion__btn-inner">Item 1</span>
			</a>
		</div>
		<div class="accordion__content is-withimg" id="test-1" data-js-item="accordion-content" role="tabpanel" aria-labelledby="test-1" style="color:#cc0000;">
			<div class="accordion__content-inner">
				<p>Um Bilder im <strong>VEAMS-Accordionmodul</strong> zu integrieren muss man im <b>JSON-File (accordion-bp.json)</b> verschiedene Einstellungen durchführen. Jedes Accordion-Item muss, wenn es ein Bild integriert haben soll das Attribute <i>"itemShowImg": true</i> setzen. Außerdem muss man dem Item das Attributei "itemClass":"is-withimg" zuweisen. Für die Bearbeitung dieses Bild-Akkordions benötigt man in der WYSIWYG-Ansicht im FS-CC noch die Klasse 'is-preview'. Sowohl die Klasse 'is-withimg' als auch 'is-preview' werden dem Element mit der Klasse 'accordion__content' zugewiesen. Soll das Bild zusätzlich noch einen beschreibenden Text haben erreicht man das durch das hinzufügen des Attribute <i>"itemShowImgInfo": true</i> pro Item.<br>Je nach ausspielender Seite muss dem Modul noch eine entsprechende Klasse zugewiesen werden (c-accordion--lpage für <a href="#" class="is-external">Landingpageseiten</a> und c-accordion--default für <a href="#">Detailseiten</a>)</p>
			</div>
			<div class="accordion__img">
				<figure class="c-figure--accordion" data-css="c-figure" id="figure-content">
					<div class="figure__wrapper">
						<picture class="c-picture--accordion" data-css="c-picture">
							<!--[if IE 9]><audio><![endif]-->
							<source srcset="https://placehold.co/300x300 300w, https://placehold.co/600x600 600w, https://placehold.co/1200x1200 1200w" media="(min-width: 768px)" sizes="30vw" />
							<source srcset="https://placehold.co/600x300 600w, https://placehold.co/1200x600 1200w, https://placehold.co/2400x1200 2400w" media="(max-width: 767px)" sizes="calc(100vw - ((100vw / 14) * 2))" />
							<!--[if IE 9]></audio><![endif]-->
							<img class="picture__image" src="https://placehold.co/600x300" alt="2_zu_1_Format_s" title="2_zu_1_Format_s" data-sizes="auto" data-js-item="figure-acc-image" />
						</picture>
					</div>
					<figcaption class="figure__caption">
						<div class="figure__caption-inner">
							<div class="figure__caption-headline">Bild Einbindung</div>
							<p class="figure__caption-content">Um Bildinformationen noch einzublenden muss im JSON File im jeweiligen Item-Objekt noch das Attribute "itemShowImg": true und
								"itemShowImgInfo": true (Anzeige von Bildunterschriften) eingebaut sein. Für das Accordion-Modul gibt es im Modul Figure und Picture eine eigene Klasse.</p>
						</div>
					</figcaption>
				</figure>
			</div>
		</div>
	</div>
	<div class="accordion__item">
		<div class="accordion__header">
			<a href="#test-2" class="accordion__btn" data-js-item="accordion-btn" role="tab" aria-controls="test-2">
				<span class="accordion__btn-inner">Item 2</span>
			</a>
		</div>
		<div class="accordion__content is-withimg" id="test-2" data-js-item="accordion-content" role="tabpanel" aria-labelledby="test-2" style="color:#cc0000;">
			<div class="accordion__content-inner">
				<p>Um Bilder im <strong>VEAMS-Accordionmodul</strong> zu integrieren muss man im <b>JSON-File (accordion-bp.json)</b> verschiedene Einstellungen durchführen. Jedes Accordion-Item muss, wenn es ein Bild integriert haben soll das Attribute <i>"itemShowImg": true</i> setzen. Außerdem muss man dem Item das Attributei "itemClass":"is-withimg" zuweisen. Für die Bearbeitung dieses Bild-Akkordions benötigt man in der WYSIWYG-Ansicht im FS-CC noch die Klasse 'is-preview'. Sowohl die Klasse 'is-withimg' als auch 'is-preview' werden dem Element mit der Klasse 'accordion__content' zugewiesen. Soll das Bild zusätzlich noch einen beschreibenden Text haben erreicht man das durch das hinzufügen des Attribute <i>"itemShowImgInfo": true</i> pro Item.<br>Je nach ausspielender Seite muss dem Modul noch eine entsprechende Klasse zugewiesen werden (c-accordion--lpage für <a href="#" class="is-external">Landingpageseiten</a> und c-accordion--default für <a href="#">Detailseiten</a>)</p>
			</div>
			<div class="accordion__img">
				<figure class="c-figure--accordion" data-css="c-figure" id="figure-content">
					<div class="figure__wrapper">
						<picture class="c-picture--accordion" data-css="c-picture">
							<!--[if IE 9]><audio><![endif]-->
							<source srcset="https://placehold.co/300x300 300w, https://placehold.co/600x600 600w, https://placehold.co/1200x1200 1200w" media="(min-width: 768px)" sizes="30vw" />
							<source srcset="https://placehold.co/600x300 600w, https://placehold.co/1200x600 1200w, https://placehold.co/2400x1200 2400w" media="(max-width: 767px)" sizes="calc(100vw - ((100vw / 14) * 2))" />
							<!--[if IE 9]></audio><![endif]-->
							<img class="picture__image" src="https://placehold.co/600x300" alt="2_zu_1_Format_s" title="2_zu_1_Format_s" data-sizes="auto" data-js-item="figure-acc-image" />
						</picture>
					</div>
				</figure>
			</div>
		</div>
	</div>
</div>

Single Open Accordion with Default Openings

<div class="c-accordion--default" data-css="c-accordion" data-js-module="accordion" data-js-options='{&quot;singleOpen&quot;:true}' role="tablist">
	<div class="accordion__item">
		<div class="accordion__header">
			<a href="#test-2-1" class="accordion__btn" data-js-item="accordion-btn" role="tab" aria-controls="test-2-1">
				<span class="accordion__btn-inner">Item 1</span>
			</a>
		</div>
		<div class="accordion__content " id="test-2-1" data-js-item="accordion-content" role="tabpanel" aria-labelledby="test-2-1" style="color:#cc0000;">
			<div class="accordion__content-inner">
				<p>Um Bilder im <strong>VEAMS-Accordionmodul</strong> zu integrieren muss man im <b>JSON-File (accordion-bp.json)</b> verschiedene Einstellungen durchführen. Jedes Accordion-Item muss, wenn es ein Bild integriert haben soll das Attribute <i>"itemShowImg": true</i> setzen. Außerdem muss man dem Item das Attributei "itemClass":"is-withimg" zuweisen. Für die Bearbeitung dieses Bild-Akkordions benötigt man in der WYSIWYG-Ansicht im FS-CC noch die Klasse 'is-preview'. Sowohl die Klasse 'is-withimg' als auch 'is-preview' werden dem Element mit der Klasse 'accordion__content' zugewiesen. Soll das Bild zusätzlich noch einen beschreibenden Text haben erreicht man das durch das hinzufügen des Attribute <i>"itemShowImgInfo": true</i> pro Item.<br>Je nach ausspielender Seite muss dem Modul noch eine entsprechende Klasse zugewiesen werden (c-accordion--lpage für <a href="#" class="is-external">Landingpageseiten</a> und c-accordion--default für <a href="#">Detailseiten</a>)</p>
			</div>
		</div>
	</div>
	<div class="accordion__item">
		<div class="accordion__header">
			<a href="#test-2-2" class="accordion__btn" data-js-item="accordion-btn" role="tab" aria-controls="test-2-2">
				<span class="accordion__btn-inner">Item 2</span>
			</a>
		</div>
		<div class="accordion__content " id="test-2-2" data-js-item="accordion-content" role="tabpanel" aria-labelledby="test-2-2" style="color:#cc0000;">
			<div class="accordion__content-inner">
				<p>Um Bilder im <strong>VEAMS-Accordionmodul</strong> zu integrieren muss man im <b>JSON-File (accordion-bp.json)</b> verschiedene Einstellungen durchführen. Jedes Accordion-Item muss, wenn es ein Bild integriert haben soll das Attribute <i>"itemShowImg": true</i> setzen. Außerdem muss man dem Item das Attributei "itemClass":"is-withimg" zuweisen. Für die Bearbeitung dieses Bild-Akkordions benötigt man in der WYSIWYG-Ansicht im FS-CC noch die Klasse 'is-preview'. Sowohl die Klasse 'is-withimg' als auch 'is-preview' werden dem Element mit der Klasse 'accordion__content' zugewiesen. Soll das Bild zusätzlich noch einen beschreibenden Text haben erreicht man das durch das hinzufügen des Attribute <i>"itemShowImgInfo": true</i> pro Item.<br>Je nach ausspielender Seite muss dem Modul noch eine entsprechende Klasse zugewiesen werden (c-accordion--lpage für <a href="#" class="is-external">Landingpageseiten</a> und c-accordion--default für <a href="#">Detailseiten</a>)</p>
			</div>
		</div>
	</div>
</div>

Simple Accordion with image in Landingpage

<div class="c-accordion--lpage" data-css="c-accordion" data-js-module="accordion" role="tablist">
	<h2 class="accordion__headline">Headline for sample landing page with image</h2>
	<div class="accordion__item">
		<div class="accordion__header">
			<a href="#test-1" class="accordion__btn" data-js-item="accordion-btn" role="tab" aria-controls="test-1">
				<span class="accordion__btn-inner">Item 1</span>
			</a>
		</div>
		<div class="accordion__content is-withimg" id="test-1" data-js-item="accordion-content" role="tabpanel" aria-labelledby="test-1" style="color:#cc0000;">
			<div class="accordion__content-inner">
				<p>Um Bilder im <strong>VEAMS-Accordionmodul</strong> zu integrieren muss man im <b>JSON-File (accordion-bp.json)</b> verschiedene Einstellungen durchführen. Jedes Accordion-Item muss, wenn es ein Bild integriert haben soll das Attribute <i>"itemShowImg": true</i> setzen. Außerdem muss man dem Item das Attributei "itemClass":"is-withimg" zuweisen. Für die Bearbeitung dieses Bild-Akkordions benötigt man in der WYSIWYG-Ansicht im FS-CC noch die Klasse 'is-preview'. Sowohl die Klasse 'is-withimg' als auch 'is-preview' werden dem Element mit der Klasse 'accordion__content' zugewiesen. Soll das Bild zusätzlich noch einen beschreibenden Text haben erreicht man das durch das hinzufügen des Attribute <i>"itemShowImgInfo": true</i> pro Item.<br>Je nach ausspielender Seite muss dem Modul noch eine entsprechende Klasse zugewiesen werden (c-accordion--lpage für <a href="#" class="is-external">Landingpageseiten</a> und c-accordion--default für <a href="#">Detailseiten</a>)</p>
			</div>
			<div class="accordion__img">
				<figure class="c-figure--accordion" data-css="c-figure" id="figure-content">
					<div class="figure__wrapper">
						<picture class="c-picture--accordion" data-css="c-picture">
							<!--[if IE 9]><audio><![endif]-->
							<source srcset="https://placehold.co/300x300 300w, https://placehold.co/600x600 600w, https://placehold.co/1200x1200 1200w" media="(min-width: 768px)" sizes="30vw" />
							<source srcset="https://placehold.co/600x300 600w, https://placehold.co/1200x600 1200w, https://placehold.co/2400x1200 2400w" media="(max-width: 767px)" sizes="calc(100vw - ((100vw / 14) * 2))" />
							<!--[if IE 9]></audio><![endif]-->
							<img class="picture__image" src="https://placehold.co/600x300" alt="2_zu_1_Format_s" title="2_zu_1_Format_s" data-sizes="auto" data-js-item="figure-acc-image" />
						</picture>
					</div>
				</figure>
			</div>
		</div>
	</div>
	<div class="accordion__item">
		<div class="accordion__header">
			<a href="#test-2" class="accordion__btn" data-js-item="accordion-btn" role="tab" aria-controls="test-2">
				<span class="accordion__btn-inner">Item 2</span>
			</a>
		</div>
		<div class="accordion__content is-withimg" id="test-2" data-js-item="accordion-content" role="tabpanel" aria-labelledby="test-2" style="color:#cc0000;">
			<div class="accordion__content-inner">
				<p>Um Bilder im <strong>VEAMS-Accordionmodul</strong> zu integrieren muss man im <b>JSON-File (accordion-bp.json)</b> verschiedene Einstellungen durchführen. Jedes Accordion-Item muss, wenn es ein Bild integriert haben soll das Attribute <i>"itemShowImg": true</i> setzen. Außerdem muss man dem Item das Attributei "itemClass":"is-withimg" zuweisen. Für die Bearbeitung dieses Bild-Akkordions benötigt man in der WYSIWYG-Ansicht im FS-CC noch die Klasse 'is-preview'. Sowohl die Klasse 'is-withimg' als auch 'is-preview' werden dem Element mit der Klasse 'accordion__content' zugewiesen. Soll das Bild zusätzlich noch einen beschreibenden Text haben erreicht man das durch das hinzufügen des Attribute <i>"itemShowImgInfo": true</i> pro Item.<br>Je nach ausspielender Seite muss dem Modul noch eine entsprechende Klasse zugewiesen werden (c-accordion--lpage für <a href="#" class="is-external">Landingpageseiten</a> und c-accordion--default für <a href="#">Detailseiten</a>)</p>
			</div>
			<div class="accordion__img">
				<figure class="c-figure--accordion" data-css="c-figure" id="figure-content">
					<div class="figure__wrapper">
						<picture class="c-picture--accordion" data-css="c-picture">
							<!--[if IE 9]><audio><![endif]-->
							<source srcset="https://placehold.co/300x300 300w, https://placehold.co/600x600 600w, https://placehold.co/1200x1200 1200w" media="(min-width: 768px)" sizes="30vw" />
							<source srcset="https://placehold.co/600x300 600w, https://placehold.co/1200x600 1200w, https://placehold.co/2400x1200 2400w" media="(max-width: 767px)" sizes="calc(100vw - ((100vw / 14) * 2))" />
							<!--[if IE 9]></audio><![endif]-->
							<img class="picture__image" src="https://placehold.co/600x300" alt="2_zu_1_Format_s" title="2_zu_1_Format_s" data-sizes="auto" data-js-item="figure-acc-image" />
						</picture>
					</div>
					<figcaption class="figure__caption">
						<div class="figure__caption-inner">
							<div class="figure__caption-headline">Bild Einbindung</div>
							<p class="figure__caption-content">Um Bildinformationen noch einzublenden muss im JSON File im jeweiligen Item-Objekt noch das Attribute "itemShowImg": true und
								"itemShowImgInfo": true (Anzeige von Bildunterschriften) eingebaut sein. Für das Accordion-Modul gibt es im Modul Figure und Picture eine eigene Klasse.</p>
						</div>
					</figcaption>
				</figure>
			</div>
		</div>
	</div>
	<div class="accordion__item">
		<div class="accordion__header">
			<a href="#test3" class="accordion__btn" data-js-item="accordion-btn" role="tab" aria-controls="test3">
				<span class="accordion__btn-inner">Item 3</span>
			</a>
		</div>
		<div class="accordion__content " id="test3" data-js-item="accordion-content" role="tabpanel" aria-labelledby="test3" style="color:#cc0000;">
			<div class="accordion__content-inner">
				<p>Um Bilder im <strong>VEAMS-Accordionmodul</strong> zu integrieren muss man im <b>JSON-File (accordion-bp.json)</b> verschiedene Einstellungen durchführen. Jedes Accordion-Item muss, wenn es ein Bild integriert haben soll das Attribute <i>"itemShowImg": true</i> setzen. Außerdem muss man dem Item das Attributei "itemClass":"is-withimg" zuweisen. Für die Bearbeitung dieses Bild-Akkordions benötigt man in der WYSIWYG-Ansicht im FS-CC noch die Klasse 'is-preview'. Sowohl die Klasse 'is-withimg' als auch 'is-preview' werden dem Element mit der Klasse 'accordion__content' zugewiesen. Soll das Bild zusätzlich noch einen beschreibenden Text haben erreicht man das durch das hinzufügen des Attribute <i>"itemShowImgInfo": true</i> pro Item.<br>Je nach ausspielender Seite muss dem Modul noch eine entsprechende Klasse zugewiesen werden (c-accordion--lpage für <a href="#" class="is-external">Landingpageseiten</a> und c-accordion--default für <a href="#">Detailseiten</a>)</p>
			</div>
		</div>
	</div>
</div>

Simple Accordion in Landingpage

<div class="c-accordion--lpage" data-css="c-accordion" data-js-module="accordion" role="tablist">
	<h2 class="accordion__headline">Headline for sample landing page</h2>
	<div class="accordion__item">
		<div class="accordion__header">
			<a href="#test-1" class="accordion__btn" data-js-item="accordion-btn" role="tab" aria-controls="test-1">
				<span class="accordion__btn-inner">Item 1</span>
			</a>
		</div>
		<div class="accordion__content " id="test-1" data-js-item="accordion-content" role="tabpanel" aria-labelledby="test-1" style="color:#cc0000;">
			<div class="accordion__content-inner">
				<p>Um Bilder im <strong>VEAMS-Accordionmodul</strong> zu integrieren muss man im <b>JSON-File (accordion-bp.json)</b> verschiedene Einstellungen durchführen. Jedes Accordion-Item muss, wenn es ein Bild integriert haben soll das Attribute <i>"itemShowImg": true</i> setzen. Außerdem muss man dem Item das Attributei "itemClass":"is-withimg" zuweisen. Für die Bearbeitung dieses Bild-Akkordions benötigt man in der WYSIWYG-Ansicht im FS-CC noch die Klasse 'is-preview'. Sowohl die Klasse 'is-withimg' als auch 'is-preview' werden dem Element mit der Klasse 'accordion__content' zugewiesen. Soll das Bild zusätzlich noch einen beschreibenden Text haben erreicht man das durch das hinzufügen des Attribute <i>"itemShowImgInfo": true</i> pro Item.<br>Je nach ausspielender Seite muss dem Modul noch eine entsprechende Klasse zugewiesen werden (c-accordion--lpage für <a href="#" class="is-external">Landingpageseiten</a> und c-accordion--default für <a href="#">Detailseiten</a>)</p>
			</div>
		</div>
	</div>
	<div class="accordion__item">
		<div class="accordion__header">
			<a href="#test-2" class="accordion__btn" data-js-item="accordion-btn" role="tab" aria-controls="test-2">
				<span class="accordion__btn-inner">Item 2</span>
			</a>
		</div>
		<div class="accordion__content " id="test-2" data-js-item="accordion-content" role="tabpanel" aria-labelledby="test-2" style="color:#cc0000;">
			<div class="accordion__content-inner">
				<p>Um Bilder im <strong>VEAMS-Accordionmodul</strong> zu integrieren muss man im <b>JSON-File (accordion-bp.json)</b> verschiedene Einstellungen durchführen. Jedes Accordion-Item muss, wenn es ein Bild integriert haben soll das Attribute <i>"itemShowImg": true</i> setzen. Außerdem muss man dem Item das Attributei "itemClass":"is-withimg" zuweisen. Für die Bearbeitung dieses Bild-Akkordions benötigt man in der WYSIWYG-Ansicht im FS-CC noch die Klasse 'is-preview'. Sowohl die Klasse 'is-withimg' als auch 'is-preview' werden dem Element mit der Klasse 'accordion__content' zugewiesen. Soll das Bild zusätzlich noch einen beschreibenden Text haben erreicht man das durch das hinzufügen des Attribute <i>"itemShowImgInfo": true</i> pro Item.<br>Je nach ausspielender Seite muss dem Modul noch eine entsprechende Klasse zugewiesen werden (c-accordion--lpage für <a href="#" class="is-external">Landingpageseiten</a> und c-accordion--default für <a href="#">Detailseiten</a>)</p>
			</div>
		</div>
	</div>
</div>

Wonach suchst du?