Akordeón
Akordeón sa používa na zobrazovanie väčšieho množstva obsahu v obmedzenom priestore, ktorý je rozdelený do logických častí (sekcií). Používateľ si môže rozbaliť len tie sekcie, ktoré ho zaujímajú. Umožňuje tak udržať stránku prehľadnú a zabrániť zahlteniu informáciami.
Použitie Akordeónu
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor.
Nadpis príslušnej lišty by mal byť v primeranej dĺžke, maximálne v 1 riadku a výstižne popisovať to, čo sa v danom akordeóne nachádza. Detailnejšie informácie o tom, čo je umiestnené v akordeóne, dodefinujte v popise pod nadpisom. Akordeón najlepšie funguje pre jednoduché texty a odkazy. Nepoužívajte akordeón na obsah, ktorý je dôležitý pre všetkých používateľov. Akordeón sa typicky používa na:
- zoskupenie sekcií s podrobnými informáciami, ktoré nie sú dôležité pre každého používateľa,
- zobrazovanie FAQ (často kladených otázok),
- zobrazenie podrobností k jednotlivým témam (napr. právne texty, technické detaily, vysvetlenia),
- návody a sprievodcovia aktivitou.
Správanie komponentu
Akordeón sa skladá z dvoch častí:
- Z hlavičky, ktorá obsahuje nadpis a ikonku (^/v) a je klikateľná po celej dĺžke riadku. Práve do tejto časti môžete umiestniť aj popisný text (ak je potrebný).
- Z obsahovej časti, ktorá sa otvorí práve po kliknutí na hlavičku, a obsahuje dlhší textový popis, prípadne odpoveď na otázku v nadpise.
Každá sekcia sa kliknutím na celú plochu hlavičky sekcie rozbalí resp. zbalí, pričom sa zmení ikona – indikátor (ro)zbalenia. Po kliknutí sa (ro)zbalí príslušný panel s obsahom sekcie. Rozbalenie ďalšej sekcie nemá vplyv na uzavretie iného, už otvoreného obsahu. Naraz môže byť otvorených viacero sekcií, používateľ si kliknutím sám určí, ktorú sekciu chce zbaliť alebo rozbaliť.
Ako sa používa
- Použva sa keď máte viacero súvisiacich sekcií (min. 2, max 10).
- Použva sa keď obsah v jednotlivých sekciách je rovnocenný a nezávislý.
- Použva sa keď potrebujete rozdeliť obsah do logických sekcií (napr. FAQ, návody, inštrukcie).
- Použva sa keď máte obsah, ktorý sa pravidelne opakuje alebo je známy.
Ako sa nepoužíva
- Nepoužíva sa keď je potrebné vidieť všetky informácie naraz (napr. pri porovnávaní údajov).
- Nepoužíva sa keď ide o kľúčový obsah, ktorý by nemal byť skrytý (napr. textové pole s povinnými údajmi).
- Nepoužíva sa keď sekcie obsahujú veľa textu, vnorené interaktívne prvky alebo akčné prvky.
- Nepoužíva sa keď ide o navigáciu medzi sekciami – použite taby alebo obsahovú navigáciu.
Varianty a stavy
Akordeón je zložený zo sekcií, ktoré je možné rozbaliť alebo zbaliť individuálne, prípadne všetky naraz tlačidlom „Otvoriť/Zavrieť všetky sekcie“. V prípade potreby dlhšieho nadpisu sekcie, teda viac ako 10 slov, je možné v hlavičke sekcie použiť popis.
1. Variant akordeónu bez popisu a s popisom
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
2. Stavy akordeónu – hover a focus
Akordeón zároveň obsahuje dva základné stavy indikujúce jeho interaktivitu pri použití myši – hover – a klávesnice – focus.
Zameranie myšou, teda hover stav, je kľúčovým prvkom vizuálnej indikácie interaktívneho komponentu. Používateľ vďaka nemu môže vidieť, že akordeón je možné zbaliť a rozbaliť.
Zameranie klávesnicou, teda focus stav, je kľúčovým prvkom prístupnosti. Poskytuje vizuálnu indikáciu interaktívneho komponentu používateľom klávesnice a používateľom asistenčných technológií.
Prístupnosť (Accessibility)
Komponent je v súlade s normami WCAG 2.1 AA. Komponent spĺňa požiadavky na kontrastné pomery a jeho súčasťou sú interakcie s klávesnicou a asistenčnými technológiami.
Klávesové ovládanie
EnteraleboMedzerník– rozbalí / zbalí sekciu.Tab– prechádza medzi hlavičkami.Shift + Tab– ide späť.
Základné pravidlá prístupnosti komponentu Akordeón
- Všetky interaktívne prvky sú implementované ako tlačidlá
<button>. - Pridajte atribút
aria-expanded="true/false", ktorý označuje, či je sekcia rozbalená alebo zbalená. - Pridajte atribút
aria-controls, ktorý prepája tlačidlo s konkrétnym obsahom sekcie (cez ID), vďaka čomu asistenčné technológie vedia, že kliknutím na tlačidlo sa zmení viditeľnosť práve tejto sekcie. - Pridajte atribút
aria-label, ktorý kombinuje názov sekcie, prípadný súhrn a stavovú správu (otvorené/zatvorené) pre asistenčné technológie. - Obsah musí zostať vždy dostupný aj bez zapnutého JavaScriptu.
- Nezabudnite ikonu pre asistenčné technológie skryť pomocou
aria-hidden="true"(v prípadesvg) alebo prázdnehoalt=""(v prípade obrázkov). - Akordeón musí mať funkčné stavy zamerania myšou (hover) a zamerania klávesnicou (focus), tak ako to je zobrazené v časti Varianty.
Implementácia akordeónu z ID-SK Frontend
Komponenty z knižnice ID-SK Frontend môžete do svojho projektu integrovať dvoma spôsobmi v závislosti od vašej technologickej infraštruktúry:
- Statická HTML implementácia – vhodná pre projekty bez Node.js alebo bundlera.
- Pokročilá integrácia (NPM + SCSS + JS) – vhodná pre projekty so správou zdrojov a build procesom.
Základné požiadavky
Pred začiatkom integrácie sa uistite, že máte:
- Node.js: verzia 4.2.0 alebo vyššia.
- Dart Sass: verzia 1.0.0 alebo vyššia.
- Nunjucks: verzia 3.0.0 alebo vyššia (ak chcete používať makrá).
Možnosti implementácie
1. Statická HTML implementácia (HTML + minifikované súbory)
Ak váš projekt nevyužíva Node.js alebo bundler (napr. Webpack, Vite), môžete použiť hotové buildy. Pri inštalácii z dist sa používajú kompilované a minifikované verzie šablóny so štýlmi. To znamená, že nebudete môcť:
- selektívne zahrnúť CSS alebo JavaScript pre jednotlivé komponenty
- zostaviť si vlastné štýly alebo komponenty na základe palety alebo typografických kombinácií
- prispôsobiť si kód (napríklad prepísať farby alebo povoliť globálne štýly)
- použiť dynamické komponenty z Nunjucks šablón
Stiahnite si najnovšie kompilované a minifikované verzie šablón štýlov, JavaScript a assetov. Skopírujte celý assets priečinok a minifikované súbory do rootu vášho projektu. Štruktúra by mala vyzerať približne takto:
project/
│
├── assets - images
- fonts
├── index.html
├── frontend.min.css
├── frontend.min.js
├── frontend.min.css.map
└── frontend.min.js.mapDo časti head vložte minifikované css. Na záver body pripojte minifikovaný javascript.
<!DOCTYPE html>
<html>
<head>
<title>Ukážka Akordeónu</title>
<link rel="stylesheet" href="frontend.min.css">
</head>
<body>
<script type="module" src="./frontend.min.js"></script>
</body>
</html>Zo stránky dokumentácie stiahnite HTML kód komponentu akordeón (otvorí sa v novom okne) a vložte ho do svojho HTML. Ak používate čisté HTML, musíte do značky <div> pridať atribút id. Tento atribút musí byť unikátny v rámci domény, aby bolo možné udržať stav rozbalenia akordeónu.
<div class="govuk-accordion" data-module="govuk-accordion" id="with-descriptions">
<div class="govuk-accordion__section">
<div class="govuk-accordion__section-header">
<h2 class="govuk-accordion__section-heading">
<span class="govuk-accordion__section-button" id="with-descriptions-heading-1">
Názov
</span>
</h2>
</div>
<div id="with-descriptions-content-1" class="govuk-accordion__section-content">
<p class="govuk-body">
Potrebujeme poznať vašu štátnu príslušnosť, aby sme mohli zistiť, v ktorých voľbách máte právo voliť.
</p>
</div>
</div>
<div class="govuk-accordion__section">
<div class="govuk-accordion__section-header">
<h2 class="govuk-accordion__section-heading">
<span class="govuk-accordion__section-button" id="with-descriptions-heading-2">
Názov
</span>
</h2>
<div class="govuk-accordion__section-summary govuk-body" id="with-descriptions-summary-2">
Popis
</div>
</div>
<div id="with-descriptions-content-2" class="govuk-accordion__section-content">
<p class="govuk-body">
Potrebujeme poznať vašu štátnu príslušnosť, aby sme mohli zistiť, v ktorých voľbách máte právo voliť.
</p>
</div>
</div>
</div>2. Pokročilá integrácia (NPM + SCSS + JS)
- Nainštalujte balíkPre inštaláciu cez NPM spustite (po skončení inštalácie sa balík
@id-sk/frontendobjaví vnode_modules):npm install nunjucks --save npm i @id-sk/frontend@3.0.0-beta.0-hotfix - Pridajte Nunjucks/HTMLDo pripraveného súboru (či už .html alebo .njk) vložte kód, ktorý nájdete vyššie.
- Importujte štýlyPre import individuálneho IDSK komponentu, v tomto prípade Akordeónu, do svojho Sass súboru pridajte:
@import "node_modules/@id-sk/frontend/idsk/components/accordion/accordion"; - Importujte JavascriptID-SK Frontend komponenty s JavaScript správaním majú vo svojom markupe nastavený atribút
data-module. Pre import javascriptu Akordeónu, vložte do .js súboru:import { Accordion, createAll } from 'govuk-frontend' createAll(Accordion)