Vytvoříme aplikaci pro výběr oblohy hot dogů.
- Založte si nový projekt s HTML a JavaScriptem, zatím bez Vite, jen s
index.html
aindex.js
. - Založte si soubor
hotdog.js
a v něm založte datovou strukturu pro přísady hot dogů. Každá přísada bude mít název a cenu. Např:const toppings = [ { name: 'Hořčice', price: 5, selected: false }, { name: 'Kečup', price: 5, selected: false }, { name: 'Cibule', price: 5, selected: false }, { name: 'Okurka', price: 5, selected: false }, { name: 'Paprika', price: 5, selected: false }, { name: 'Rajče', price: 5, selected: false }, { name: 'Chilli', price: 5, selected: false }, { name: 'Sýr', price: 10, selected: false }, { name: 'Slanina', price: 10, selected: false }, ];
- Tuto datovou strukturu exportujte z
hotdog.js
a importujte ji do hlavního souboruindex.js
. - V souboru
hotdog.js
vytvořte funkcirenderToppings
, která pomocíforEach
vykreslí každou položku do stránky. Každá přísada bude mít svůj vlastní elementdiv
s třídoutopping
. V tomto elementu budeh3
s názvem přísady ap
s cenou. Funkci správně exportujte a použijte v hlavním souboruindex.js
. - V CSS vytvořte třídu
topping--selected
, která bude mít nějakým vizuálním způsobem zvýrazněnou přísadu, která je vybraná. Ve funkcirenderToppings
přidejte do elementudiv
třídutopping--selected
, pokud je přísada vybraná. - V souboru
hotdog.js
vytvořte funkcitoggleTopping
, která bude mít jako parametr index přísady. Funkce bude měnit hodnotu vlastnostiselected
na opačnou hodnotu. Funkci správně exportujte a importujte ji v hlavním souboruindex.js
. - Upravte funkci
renderToppings
tak, že pomocíquerySelectorAll
vyberete všechny přísady a pověsíte na ně posluchač událosticlick
. Když uživatel klikne na přísadu, přepíšete její vlastnostselected
na opačnou hodnotu a zavoláte znova funkcirenderToppings
pro překreslení celého seznamu. Tím by se měla přísada zvýraznit nebo zvýraznění zrušit.
- Založte si nový projekt, tentokrát s Vite bundlerem:
npm init kodim-app@latest hot-dog-vite jsx
- Smažte obsah složky
src/pages
a vlože do ní soubory z projektu hot dogu z minulého cvičení. - Styly pro stránku nyní nechceme mít nalinkované přímo v HTML, ale chceme je importovat do souboru
index.js
. Proveďte tedy následující změny:- V souboru
index.html
smažte elementlink
pro styly. - V souboru
index.js
importujte styly pomocíimport "./style.css";
.
- V souboru
- Projekt spusťte pomocí
npm run dev
a vyzkoušejte si, že vše funguje.