story-slider

Information

Folder
src/components/patterns/story-slider

Files

Schema
// src/components/patterns/story-slider/schema.yaml

$schema: http://json-schema.org/draft-07/schema
$id: /patterns/story-slider
type: object
additionalProperties: false
properties:
  slides:
    type: array
    items:
      type: string
      format: html
      description: patterns/story-slider/*
Mocks
// src/components/patterns/story-slider/mocks.yaml

$variants:
  - $name: default
    slides:
      - $ref: patterns/story-slider/slide-intro#intro-with-video
        $tpl: patterns/story-slider/slide-intro
      - $ref: patterns/story-slider/slide-benefits
        $tpl: patterns/story-slider/slide-benefits
      - $ref: patterns/story-slider/slide-mixed#image-top
        $tpl: patterns/story-slider/slide-mixed
      - $ref: patterns/story-slider/slide-mixed
        $tpl: patterns/story-slider/slide-mixed
      - $ref: patterns/story-slider/slide-image#with-title-and-overline
        $tpl: patterns/story-slider/slide-image
      - $ref: patterns/story-slider/slide-video#with-title-and-overline
        $tpl: patterns/story-slider/slide-video
  - $name: default with image
    slides:
      - $ref: patterns/story-slider/slide-intro#intro-with-image
        $tpl: patterns/story-slider/slide-intro
      - $ref: patterns/story-slider/slide-benefits
        $tpl: patterns/story-slider/slide-benefits
      - $ref: patterns/story-slider/slide-mixed#image-top
        $tpl: patterns/story-slider/slide-mixed
      - $ref: patterns/story-slider/slide-mixed
        $tpl: patterns/story-slider/slide-mixed
      - $ref: patterns/story-slider/slide-image#with-title-and-overline
        $tpl: patterns/story-slider/slide-image
      - $ref: patterns/story-slider/slide-video
        $tpl: patterns/story-slider/slide-video
  - $name: Three Up
    slides:
      - $ref: patterns/story-slider/slide-intro#intro-with-video
        $tpl: patterns/story-slider/slide-intro
      - $ref: patterns/story-slider/slide-image
        $tpl: patterns/story-slider/slide-image
      - $ref: patterns/story-slider/slide-benefits
        $tpl: patterns/story-slider/slide-benefits
  - $name: Intro And Two Video Slides
    slides:
      - $ref: patterns/story-slider/slide-intro#intro-with-video
        $tpl: patterns/story-slider/slide-intro
      - $ref: patterns/story-slider/slide-video
        $tpl: patterns/story-slider/slide-video
      - $ref: patterns/story-slider/slide-video
        $tpl: patterns/story-slider/slide-video
Template
// src/components/patterns/story-slider/story-slider.twig

{{ attach_library('finstral_global/pattern-story-slider') }}

{% set id = "slider-" ~ random() %}
{% set label = id ~ "-heading" %}
{% set track_id = id ~ "-track" %}

<story-slider aria-labelledby="{{ label }}" aria-roledescription="{{ "story_slider.role_description"|t }}" aria-brailleroledescription="sldshw" class="StorySlider" role="group">
	<span id="{{ label }}" hidden>{{ "story_slider.section_heading"|t }}</span>
	<div class="StorySlider-controlsWrapper">
		<div class="StorySlider-controls">
			<button aria-controls="{{ track_id }}" class="StorySlider-control StorySlider-control--prev" type="button" hidden>
				{% include "@elements/icon/icon.twig" with {
					name: 'chevron_left',
				} only %}
				<span class="visually-hidden">{{ "slider.previous"|t }}</span>
			</button>

			<button aria-controls="{{ track_id }}" class="StorySlider-control StorySlider-control--next" type="button" hidden>
				{% include "@elements/icon/icon.twig" with {
					name: 'chevron_right',
				} only %}
				<span class="visually-hidden">{{ "slider.next"|t }}</span>
			</button>

			<button aria-controls="{{ track_id }}" class="StorySlider-control StorySlider-control--replay" type="button" hidden>
				{% include "@elements/icon/icon.twig" with {
					name: 'replay',
				} only %}
				<span class="visually-hidden">{{ "slider.replay"|t }}</span>
			</button>
		</div>
	</div>
	<div class="StorySlider-slidesWrapper">
		<ul class="StorySlider-slidesTrack" id="{{ track_id }}">
			{%- for slide in slides -%}
				<li class="StorySlider-slide {% if loop.first -%} is-active {%- endif -%}" data-index="{{ loop.index }}">
					{{ slide }}
				</li>
			{%- endfor -%}
		</ul>
	</div>
	<div class="StorySlider-progressIndicator" hidden>
		{% for slide in slides %}
			<svg class="StorySlider-progressIndicatorItem {% if loop.first %} is-active {% endif %}" fill="#333" viewBox="0 0 200 8" xmlns="http://www.w3.org/2000/svg">
				<rect x="0" y="0" width="100%" height="100%" />
			</svg>
		{% endfor %}
	</div>
</story-slider>

Variants

default
Open

    Stellenangebot : Werde Monteur für eine führende Premium-Marke

  • Vorteile : Finstral bietet Monteuren hohe Standards

    • Ausbildung
    • Ausstattung
    • Bezahlung
    • Arbeitsplanung
    • Qualitätsprodukte
    Florian Oberrauch
    Geschäftsleitung Finstral
  • Bei Finstral Standard : Kostenlose Ausbildung nach EQF und ift.

    • Schulung moderner Montagenach Vorgaben des European Qualification Framework (EQF) und Institut für Fenstertechnik (ift)
    • Schulung moderner Montagenach Vorgaben des European Qualification Framework (EQF) und Institut für Fenstertechnik (ift)
    Sample alt text
  • Bei Finstral Standard : Kostenlose Ausbildung nach EQF und ift.

    • Schulung moderner Montagenach Vorgaben des European Qualification Framework (EQF) und Institut für Fenstertechnik (ift)
    • Schulung moderner Montagenach Vorgaben des European Qualification Framework (EQF) und Institut für Fenstertechnik (ift)
    Sample alt text
  • Vorteile : Werde Monteur für eine führende Premium-Marke

    Vorteile : Werde Monteur für eine führende Premium-Marke

default with image
Open
  • Sample alt text

    Stellenangebot : Werde Monteur für eine führende Premium-Marke

  • Vorteile : Finstral bietet Monteuren hohe Standards

    • Ausbildung
    • Ausstattung
    • Bezahlung
    • Arbeitsplanung
    • Qualitätsprodukte
    Florian Oberrauch
    Geschäftsleitung Finstral
  • Bei Finstral Standard : Kostenlose Ausbildung nach EQF und ift.

    • Schulung moderner Montagenach Vorgaben des European Qualification Framework (EQF) und Institut für Fenstertechnik (ift)
    • Schulung moderner Montagenach Vorgaben des European Qualification Framework (EQF) und Institut für Fenstertechnik (ift)
    Sample alt text
  • Bei Finstral Standard : Kostenlose Ausbildung nach EQF und ift.

    • Schulung moderner Montagenach Vorgaben des European Qualification Framework (EQF) und Institut für Fenstertechnik (ift)
    • Schulung moderner Montagenach Vorgaben des European Qualification Framework (EQF) und Institut für Fenstertechnik (ift)
    Sample alt text
  • Vorteile : Werde Monteur für eine führende Premium-Marke

Three Up
Open

    Stellenangebot : Werde Monteur für eine führende Premium-Marke

  • Vorteile : Finstral bietet Monteuren hohe Standards

    • Ausbildung
    • Ausstattung
    • Bezahlung
    • Arbeitsplanung
    • Qualitätsprodukte
    Florian Oberrauch
    Geschäftsleitung Finstral
Intro And Two Video Slides
Open

    Stellenangebot : Werde Monteur für eine führende Premium-Marke