- Repository created goit-js-hw-10.1
- When submitting homework, there are two links: to the source files and the working page on GitHub Pages.
- When visiting the live job page, there are no errors or warnings in the console.
- The project is built with parcel-project-template.
- Code formatted Prettier.
Download starter files index.html with basic markup, ready-made styles and included script files for each task. Copy it to your project in the src folder in parcel-project-template.
Create a front-end part of the application for searching information about a cat by its breed. Watch a demo video of the application, use it as a guide to the required functionality.
Use public The Cat API. To get started, you need to register and get a unique access key that you need to attach to each request. We go to home page and below we press the Signup for free button, follow the instructions, the key will be sent to the specified mail.
The key must be used in the x-api-key HTTP header. It is recommended to use axios and add a header for all requests.
import axios from "axios";
axios.defaults.headers.common["x-api-key"] = "your key";
When the page is loaded, an HTTP request should be made for the collection of rocks. To do this, you need to make a GET request to the https://api.thecatapi.com/v1/breeds resource, which returns an array of objects. Upon successful request, it is necessary to fill select.breed-select with options so that the value of the option contains the id of the breed, and the name of the breed is displayed in the interface to the user.
Write a fetchBreeds() function that makes an HTTP request and returns a promise with an array of breeds as the result of the request. Put it in the cat-api.js file and make a named export.
When the user selects an option in the select, it is necessary to perform a request for complete information about the cat to the https://api.thecatapi.com/v1/images/search resource. Don't forget to include the breed_ids query string parameter with the breed ID in this request.
This is how the URL for requesting complete information about the dog by breed ID will look like.
https://api.thecatapi.com/v1/images/search?breed_ids=id__breed
Write a function fetchCatByBreed(breedId) that takes a breed ID, makes an HTTP request, and returns a promise with cat data as the result of the request. Put it in the cat-api.js file and make a named export.
If the request was successful, under the select, in the div.cat-info block, an image and detailed information about the cat appears: breed name, description and temperament.
While any HTTP request is in progress, it is necessary to show the loader - the p.loader element. While there are no requests or when the request has completed, the loader must be hidden. Use additional CSS classes for this.
While the request is for a list of breeds, you need to hide select.breed-select and show p.loader. While there is a request for information about the cat, you need to hide div.cat-info and show p.loader. When any request has completed p.loader needs to be hidden
If the user had an error in any HTTP request, for example, the network went down, there was a packet loss, etc., that is, the promise was rejected, you need to display the p.error element, and hide it on each subsequent request. Use additional CSS classes for this.
Testing the error display is very simple - change the request address by adding any character to the end, for example, instead of https://api.thecatapi.com/v1/breeds, use https://api.thecatapi.com/v1/breeds123. The request to get a list of breeds will be rejected with an error. Similarly for requesting information about a cat by breed.
Instead of select.breed-select you can use any library with nice selects like https://slimselectjs.com/ Instead of p.loader, you can use any library with beautiful CSS loaders, like https://cssloaders.github.io/ Instead of p.error, you can use any library with beautiful alerts, such as Notiflix
π UK π β¬ Home β¬
- Π‘ΡΠ²ΠΎΡΠ΅Π½ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΡΠΉ goit-js-hw-10.1
- ΠΡΠΈ Π·Π΄Π°ΡΡ Π΄ΠΎΠΌΠ°ΡΠ½ΡΠΎΡ ΡΠΎΠ±ΠΎΡΠΈ Ρ Π΄Π²Π° ΠΏΠΎΡΠΈΠ»Π°Π½Π½Ρ: Π½Π° Π²ΠΈΡ ΡΠ΄Π½Ρ ΡΠ°ΠΉΠ»ΠΈ ΡΠ° ΡΠΎΠ±ΠΎΡΡ ΡΡΠΎΡΡΠ½ΠΊΡ Π½Π° GitHub Pages.
- ΠΡΠΈ Π²ΡΠ΄Π²ΡΠ΄ΡΠ²Π°Π½Π½Ρ ΠΆΠΈΠ²ΠΎΡ ΡΡΠΎΡΡΠ½ΠΊΠΈ Π·Π°Π²Π΄Π°Π½Π½Ρ, Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ Π½Π΅ΠΌΠ°Ρ ΠΏΠΎΠΌΠΈΠ»ΠΎΠΊ ΡΠ° ΠΏΠΎΠΏΠ΅ΡΠ΅Π΄ΠΆΠ΅Π½Ρ.
- ΠΡΠΎΠ΅ΠΊΡ Π·ΡΠ±ΡΠ°Π½ΠΎ Π·Π° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΠΎΡ parcel-project-template.
- ΠΠΎΠ΄ Π²ΡΠ΄ΡΠΎΡΠΌΠ°ΡΠΎΠ²Π°Π½ΠΎ Prettier.
Π‘ΠΊΠ°ΡΠ°ΠΉ ΡΡΠ°ΡΡΠΎΠ²Ρ ΡΠ°ΠΉΠ»ΠΈ index.html Π· Π±Π°Π·ΠΎΠ²ΠΎΡ ΡΠΎΠ·ΠΌΡΡΠΊΠΎΡ, Π³ΠΎΡΠΎΠ²ΠΈΠΌΠΈ ΡΡΠΈΠ»ΡΠΌΠΈ ΡΠ° ΠΏΡΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΡΠΊΡΠΈΠΏΡΡΠ² Π΄Π»Ρ ΠΊΠΎΠΆΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΄Π°Π½Π½Ρ. Π‘ΠΊΠΎΠΏΡΡΠΉ ΠΉΠΎΠ³ΠΎ ΡΠΎΠ±Ρ Π² ΠΏΡΠΎΠ΅ΠΊΡ Ρ ΠΏΠ°ΠΏΡΡ src Ρ parcel-project-template.
Π‘ΡΠ²ΠΎΡΠΈ ΡΡΠΎΠ½ΡΠ΅Π½Π΄ ΡΠ°ΡΡΠΈΠ½Ρ Π΄ΠΎΠ΄Π°ΡΠΊΠ° ΠΏΠΎΡΡΠΊΡ ΡΠ½ΡΠΎΡΠΌΠ°ΡΡΡ ΠΏΡΠΎ ΠΊΠΎΡΠ° Π·Π° ΠΉΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠ΄ΠΎΡ. ΠΠΎΠ΄ΠΈΠ²ΡΡΡΡΡ Π΄Π΅ΠΌΠΎ Π²ΡΠ΄Π΅ΠΎ ΡΠΎΠ±ΠΎΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ, Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠΉ ΠΉΠΎΠ³ΠΎ ΡΠΊ ΠΎΡΡΡΠ½ΡΠΈΡ Π½Π° ΠΏΠΎΡΡΡΠ±Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΡΠΎΠ½Π°Π».
ΠΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠΉΡΠ΅ ΠΏΡΠ±Π»ΡΡΠ½ΠΈΠΉ The Cat API. ΠΠ»Ρ ΠΏΠΎΡΠ°ΡΠΊΡ ΡΠΎΠ±ΠΎΡΠΈ Π½Π΅ΠΎΠ±Ρ ΡΠ΄Π½ΠΎ Π·Π°ΡΠ΅ΡΡΡΡΡΠ²Π°ΡΠΈΡΡ ΡΠ° ΠΎΡΡΠΈΠΌΠ°ΡΠΈ ΡΠ½ΡΠΊΠ°Π»ΡΠ½ΠΈΠΉ ΠΊΠ»ΡΡ Π΄ΠΎΡΡΡΠΏΡ, ΡΠΊΠΈΠΉ ΠΏΠΎΡΡΡΠ±Π½ΠΎ ΠΏΡΠΈΠΊΡΡΠΏΠ»ΡΠ²Π°ΡΠΈ Π΄ΠΎ ΠΊΠΎΠΆΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΠΈΡΡ. ΠΠ°Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π° Π³ΠΎΠ»ΠΎΠ²Π½Ρ ΡΡΠΎΡΡΠ½ΠΊΡ Ρ Π½ΠΈΠΆΡΠ΅ Π½Π°ΡΠΈΡΠΊΠ°ΡΠΌΠΎ ΠΊΠ½ΠΎΠΏΠΊΡ Signup for free, Π΄ΠΎΡΡΠΈΠΌΡΡΠΌΠΎΡΡ ΡΠ½ΡΡΡΡΠΊΡΡΡ, ΠΊΠ»ΡΡ Π±ΡΠ΄Π΅ Π²ΡΠ΄ΠΏΡΠ°Π²Π»Π΅Π½ΠΎ Π½Π° Π²ΠΊΠ°Π·Π°Π½Ρ ΠΏΠΎΡΡΡ.
ΠΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ ΠΊΠ»ΡΡ Π½Π΅ΠΎΠ±Ρ ΡΠ΄Π½ΠΎ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΡ HTTP x-api-key. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡΡΡΡΡ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ axios ΡΠ° Π΄ΠΎΠ΄Π°ΡΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π΄Π»Ρ Π²ΡΡΡ Π·Π°ΠΏΠΈΡΡΠ².
import axios from "axios";
axios.defaults.headers.common["x-api-key"] = "ΡΠ²ΠΎΠΉ ΠΊΠ»ΡΡ";
ΠΡΠΈ Π·Π°Π²Π°Π½ΡΠ°ΠΆΠ΅Π½Π½Ρ ΡΡΠΎΡΡΠ½ΠΊΠΈ ΠΏΠΎΠ²ΠΈΠ½Π΅Π½ Π²ΠΈΠΊΠΎΠ½ΡΠ²Π°ΡΠΈΡΡ Π·Π°ΠΏΠΈΡ HTTP Π·Π° ΠΊΠΎΠ»Π΅ΠΊΡΡΡΡ ΠΏΠΎΡΡΠ΄. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ ΡΠ΄Π½ΠΎ Π²ΠΈΠΊΠΎΠ½Π°ΡΠΈ GET-Π·Π°ΠΏΠΈΡ Π½Π° ΡΠ΅ΡΡΡΡ https://api.thecatapi.com/v1/breeds, ΡΠΎ ΠΏΠΎΠ²Π΅ΡΡΠ°Ρ ΠΌΠ°ΡΠΈΠ² ΠΎΠ±'ΡΠΊΡΡΠ². ΠΡΠΈ ΡΡΠΏΡΡΠ½ΠΎΠΌΡ Π·Π°ΠΏΠΈΡΡ Π½Π΅ΠΎΠ±Ρ ΡΠ΄Π½ΠΎ Π½Π°ΠΏΠΎΠ²Π½ΠΈΡΠΈ select.breed-select ΠΎΠΏΡΡΡΠΌΠΈ ΡΠ°ΠΊ, ΡΠΎΠ± value ΠΎΠΏΡΡΡ ΠΌΡΡΡΠΈΠ² id ΠΏΠΎΡΠΎΠ΄ΠΈ, Π° Π² ΡΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΊΠΎΡΠΈΡΡΡΠ²Π°ΡΠ΅Π²Ρ Π²ΡΠ΄ΠΎΠ±ΡΠ°ΠΆΠ°Π»Π°ΡΡ Π½Π°Π·Π²Π° ΠΏΠΎΡΠΎΠ΄ΠΈ.
ΠΠ°ΠΏΠΈΡΠΈ ΡΡΠ½ΠΊΡΡΡ fetchBreeds(), ΡΠΊΠ° ΡΠΎΠ±ΠΈΡΡ HTTP-Π·Π°ΠΏΠΈΡ Ρ ΠΏΠΎΠ²Π΅ΡΡΠ°Ρ ΠΏΡΠΎΠΌΡΡ Π· ΠΌΠ°ΡΠΈΠ²ΠΎΠΌ ΠΏΠΎΡΡΠ΄ - ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π·Π°ΠΏΠΈΡΡ. ΠΠΈΠ½Π΅ΡΠΈ ΡΡ Ρ ΡΠ°ΠΉΠ» cat-api.js Ρ Π·ΡΠΎΠ±ΠΈ ΡΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΉ Π΅ΠΊΡΠΏΠΎΡΡ.
ΠΠΎΠ»ΠΈ ΠΊΠΎΡΠΈΡΡΡΠ²Π°Ρ Π²ΠΈΠ±ΠΈΡΠ°Ρ ΠΎΠΏΡΡΡ Π² ΡΠ΅Π»Π΅ΠΊΡΡ, Π½Π΅ΠΎΠ±Ρ ΡΠ΄Π½ΠΎ Π²ΠΈΠΊΠΎΠ½ΡΠ²Π°ΡΠΈ Π·Π°ΠΏΠΈΡ Π½Π° ΠΏΠΎΠ²Π½Ρ ΡΠ½ΡΠΎΡΠΌΠ°ΡΡΡ ΠΏΡΠΎ ΠΊΠΎΡΠ° Π½Π° ΡΠ΅ΡΡΡΡ https://api.thecatapi.com/v1/images/search. ΠΠ΅ Π·Π°Π±ΡΠ΄Ρ Π²ΠΊΠ°Π·Π°ΡΠΈ Ρ ΡΡΠΎΠΌΡ Π·Π°ΠΏΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΠ΄ΠΊΠ° Π·Π°ΠΏΠΈΡΡ breed_ids ΡΠ· ΡΠ΄Π΅Π½ΡΠΈΡΡΠΊΠ°ΡΠΎΡΠΎΠΌ ΠΏΠΎΡΠΎΠ΄ΠΈ.
Π’Π°ΠΊ Π±ΡΠ΄Π΅ Π²ΠΈΠ³Π»ΡΠ΄Π°ΡΠΈ URL-Π°Π΄ΡΠ΅ΡΠ° Π·Π°ΠΏΠΈΡΡ ΠΏΠΎΠ²Π½ΠΎΡ ΡΠ½ΡΠΎΡΠΌΠ°ΡΡΡ ΠΏΡΠΎ ΡΠΎΠ±Π°ΠΊΡ ΠΏΠΎ ΡΠ΄Π΅Π½ΡΠΈΡΡΠΊΠ°ΡΠΎΡΡ ΠΏΠΎΡΠΎΠ΄ΠΈ.
https://api.thecatapi.com/v1/images/search?breed_ids=ΡΠ΄Π΅Π½ΡΠΈΡΡΠΊΠ°ΡΠΎΡ_ΠΏΠΎΡΠΎΠ΄ΠΈ
ΠΠ°ΠΏΠΈΡΠΈ ΡΡΠ½ΠΊΡΡΡ fetchCatByBreed(breedId) ΡΠΊΠ° ΡΠ΅ΠΊΠ°Ρ Π½Π° ΡΠ΄Π΅Π½ΡΠΈΡΡΠΊΠ°ΡΠΎΡ ΠΏΠΎΡΠΎΠ΄ΠΈ, ΡΠΎΠ±ΠΈΡΡ HTTP-Π·Π°ΠΏΠΈΡ Ρ ΠΏΠΎΠ²Π΅ΡΡΠ°Ρ ΠΏΡΠΎΠΌΡΡ Π· Π΄Π°Π½ΠΈΠΌΠΈ ΠΏΡΠΎ ΠΊΠΎΡΠ° - ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π·Π°ΠΏΠΈΡΡ. ΠΠΈΠ½Π΅ΡΠΈ ΡΡ Ρ ΡΠ°ΠΉΠ» cat-api.js Ρ Π·ΡΠΎΠ±ΠΈ ΡΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΉ Π΅ΠΊΡΠΏΠΎΡΡ.
Π―ΠΊΡΠΎ Π·Π°ΠΏΠΈΡ Π±ΡΠ² ΡΡΠΏΡΡΠ½ΠΈΠΉ, ΠΏΡΠ΄ ΡΠ΅Π»Π΅ΠΊΡΠΎΠΌ, Ρ Π±Π»ΠΎΡΡ div.cat-info Π·'ΡΠ²Π»ΡΡΡΡΡΡ Π·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π½Ρ ΡΠ° ΡΠΎΠ·Π³ΠΎΡΠ½ΡΡΠ° ΡΠ½ΡΠΎΡΠΌΠ°ΡΡΡ ΠΏΡΠΎ ΠΊΠΎΡΡ: Π½Π°Π·Π²Ρ ΠΏΠΎΡΠΎΠ΄ΠΈ, ΠΎΠΏΠΈΡ ΡΠ° ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΠΌΠ΅Π½Ρ.
ΠΠΎΠΊΠΈ ΠΉΠ΄Π΅ Π±ΡΠ΄Ρ-ΡΠΊΠΈΠΉ HTTP-Π·Π°ΠΏΠΈΡ, ΠΏΠΎΡΡΡΠ±Π½ΠΎ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΠΈ Π·Π°Π²Π°Π½ΡΠ°ΠΆΡΠ²Π°Ρ - Π΅Π»Π΅ΠΌΠ΅Π½Ρ p.loader. ΠΠΎΠΊΠΈ Π·Π°ΠΏΠΈΡΡΠ² Π½Π΅ΠΌΠ°Ρ Π°Π±ΠΎ ΠΊΠΎΠ»ΠΈ Π·Π°ΠΏΠΈΡ Π·Π°Π²Π΅ΡΡΠΈΠ²ΡΡ, Π·Π°Π²Π°Π½ΡΠ°ΠΆΡΠ²Π°Ρ ΠΏΠΎΡΡΡΠ±Π½ΠΎ ΠΏΡΠΈΡ ΠΎΠ²ΡΠ²Π°ΡΠΈ. ΠΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠΉΡΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠ΄Π°ΡΠΊΠΎΠ²Ρ CSS ΠΊΠ»Π°ΡΠΈ.
ΠΠΎΠΊΠΈ ΠΉΠ΄Π΅ Π·Π°ΠΏΠΈΡ Π·Π° ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΏΠΎΡΡΠ΄, ΠΏΠΎΡΡΡΠ±Π½ΠΎ ΠΏΡΠΈΡ ΠΎΠ²Π°ΡΠΈ select.breed-select Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΠΈ p.loader. ΠΠΎΠΊΠΈ ΠΉΠ΄Π΅ Π·Π°ΠΏΠΈΡ Π·Π° ΡΠ½ΡΠΎΡΠΌΠ°ΡΡΡΡ ΠΏΡΠΎ ΠΊΠΎΡΠ°, Π½Π΅ΠΎΠ±Ρ ΡΠ΄Π½ΠΎ ΠΏΡΠΈΡ ΠΎΠ²Π°ΡΠΈ div.cat-info ΡΠ° ΠΏΠΎΠΊΠ°Π·Π°ΡΠΈ p.loader. ΠΠΎΠ»ΠΈ Π±ΡΠ΄Ρ-ΡΠΊΠΈΠΉ Π·Π°ΠΏΠΈΡ Π·Π°Π²Π΅ΡΡΠΈΠ²ΡΡ, p.loader ΠΏΠΎΡΡΡΠ±Π½ΠΎ ΠΏΡΠΈΡ ΠΎΠ²Π°ΡΠΈ
Π―ΠΊΡΠΎ Ρ ΠΊΠΎΡΠΈΡΡΡΠ²Π°ΡΠ° Π²ΡΠ΄Π±ΡΠ»Π°ΡΡ ΠΏΠΎΠΌΠΈΠ»ΠΊΠ° Π±ΡΠ΄Ρ-ΡΠΊΠΎΠ³ΠΎ HTTP-Π·Π°ΠΏΠΈΡΡ, Π½Π°ΠΏΡΠΈΠΊΠ»Π°Π΄, Π²ΠΏΠ°Π»Π° ΠΌΠ΅ΡΠ΅ΠΆΠ°, Π±ΡΠ»Π° Π²ΡΡΠ°ΡΠ° ΠΏΠ°ΠΊΠ΅ΡΡΠ² Ρ Ρ.ΠΏ., ΡΠΎΠ±ΡΠΎ ΠΏΡΠΎΠΌΡΡ Π±ΡΠ² Π²ΡΠ΄Ρ ΠΈΠ»Π΅Π½ΠΈΠΉ, Π½Π΅ΠΎΠ±Ρ ΡΠ΄Π½ΠΎ Π²ΡΠ΄ΠΎΠ±ΡΠ°Π·ΠΈΡΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ p.error, Π° ΠΏΡΠΈ ΠΊΠΎΠΆΠ½ΠΎΠΌΡ Π½Π°ΡΡΡΠΏΠ½ΠΎΠΌΡ Π·Π°ΠΏΠΈΡΡ ΠΏΡΠΈΡ ΠΎΠ²ΡΠ²Π°ΡΠΈ ΠΉΠΎΠ³ΠΎ. ΠΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠΉΡΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠ΄Π°ΡΠΊΠΎΠ²Ρ CSS ΠΊΠ»Π°ΡΠΈ.
ΠΡΠΎΡΠ΅ΡΡΡΠ²Π°ΡΠΈ ΠΏΡΠ°ΡΠ΅Π·Π΄Π°ΡΠ½ΡΡΡΡ Π²ΡΠ΄ΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π½Ρ ΠΏΠΎΠΌΠΈΠ»ΠΊΠΈ Π΄ΡΠΆΠ΅ ΠΏΡΠΎΡΡΠΎ - Π·ΠΌΡΠ½ΠΈ Π°Π΄ΡΠ΅ΡΡ Π·Π°ΠΏΠΈΡΡ Π΄ΠΎΠ΄Π°Π²ΡΠΈ Π΄ΠΎ ΠΊΡΠ½ΡΡ Π±ΡΠ΄Ρ-ΡΠΊΠΈΠΉ ΡΠΈΠΌΠ²ΠΎΠ», Π½Π°ΠΏΡΠΈΠΊΠ»Π°Π΄ Π·Π°ΠΌΡΡΡΡ https://api.thecatapi.com/v1/breeds Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠΉ https://api.thecatapi.com/v1/breeds123. ΠΠ°ΠΏΠΈΡ Π½Π° ΠΎΡΡΠΈΠΌΠ°Π½Π½Ρ ΡΠΏΠΈΡΠΊΡ ΠΏΠΎΡΡΠ΄ Π±ΡΠ΄Π΅ Π²ΡΠ΄Ρ ΠΈΠ»Π΅Π½ΠΈΠΉ Π· ΠΏΠΎΠΌΠΈΠ»ΠΊΠΎΡ. ΠΠ½Π°Π»ΠΎΠ³ΡΡΠ½ΠΎ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΡ ΡΠ½ΡΠΎΡΠΌΠ°ΡΡΡ ΠΏΡΠΎ ΠΊΠΎΡΠ° ΠΏΠΎ ΠΏΠΎΡΠΎΠ΄Ρ.
ΠΠΎΠ΄Π°ΠΉ ΠΌΡΠ½ΡΠΌΠ°Π»ΡΠ½Π΅ ΠΎΡΠΎΡΠΌΠ»Π΅Π½Π½Ρ Π΅Π»Π΅ΠΌΠ΅Π½ΡΡΠ² ΡΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ. ΠΠ°ΠΌΡΡΡΡ select.breed-select ΠΌΠΎΠΆΠ΅Ρ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ Π±ΡΠ΄Ρ-ΡΠΊΡ Π±ΡΠ±Π»ΡΠΎΡΠ΅ΠΊΡ Π· Π³Π°ΡΠ½ΠΈΠΌ ΡΠ΅Π»Π΅ΠΊΡΠΎΠΌ, Π½Π°ΠΏΡΠΈΠΊΠ»Π°Π΄ https://slimselectjs.com/ ΠΠ°ΠΌΡΡΡΡ p.loader ΠΌΠΎΠΆΠ΅Ρ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ Π±ΡΠ΄Ρ-ΡΠΊΡ Π±ΡΠ±Π»ΡΠΎΡΠ΅ΠΊΡ ΡΠ· Π³Π°ΡΠ½ΠΈΠΌΠΈ CSS-Π·Π°Π²Π°Π½ΡΠ°ΠΆΡΠ²Π°ΡΠ°ΠΌΠΈ, Π½Π°ΠΏΡΠΈΠΊΠ»Π°Π΄ https://cssloaders.github.io/ ΠΠ°ΠΌΡΡΡΡ p.error ΠΌΠΎΠΆΠ΅Ρ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ Π±ΡΠ΄Ρ-ΡΠΊΡ Π±ΡΠ±Π»ΡΠΎΡΠ΅ΠΊΡ Π· Π³Π°ΡΠ½ΠΈΠΌΠΈ ΠΎΠΏΠΎΠ²ΡΡΠ΅Π½Π½ΡΠΌΠΈ, Π½Π°ΠΏΡΠΈΠΊΠ»Π°Π΄, Notiflix
π RU π β¬ Home β¬
- Π‘ΠΎΠ·Π΄Π°Π½ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ goit-js-hw-10.1
- ΠΡΠΈ ΡΠ΄Π°ΡΠ΅ Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΉ ΡΠ°Π±ΠΎΡΡ Π΅ΡΡΡ Π΄Π²Π΅ ΡΡΡΠ»ΠΊΠΈ: Π½Π° ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ ΡΠ°Π±ΠΎΡΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Π½Π° GitHub Pages.
- ΠΡΠΈ ΠΏΠΎΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΆΠΈΠ²ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ Π·Π°Π΄Π°Π½ΠΈΡ, Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ Π½Π΅ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ.
- ΠΡΠΎΠ΅ΠΊΡ ΡΠΎΠ±ΡΠ°Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ parcel-project-template.
- ΠΠΎΠ΄ ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ Prettier.
Π‘ΠΊΠ°ΡΠ°ΠΉ ΡΡΠ°ΡΡΠΎΠ²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ index.html Ρ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΎΠΉ, Π³ΠΎΡΠΎΠ²ΡΠΌΠΈ ΡΡΠΈΠ»ΡΠΌΠΈ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ² Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π°Π΄Π°Π½ΠΈΡ. Π‘ΠΊΠΎΠΏΠΈΡΡΠΉ Π΅Π³ΠΎ ΡΠ΅Π±Π΅ Π² ΠΏΡΠΎΠ΅ΠΊΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ src Π² parcel-project-template.
Π‘ΠΎΠ·Π΄Π°ΠΉ ΡΡΠΎΠ½ΡΠ΅Π½Π΄ ΡΠ°ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΊΠΎΡΠ΅ ΠΏΠΎ Π΅Π³ΠΎ ΠΏΠΎΡΠΎΠ΄Π΅. ΠΠΎΡΠΌΠΎΡΡΠΈ Π΄Π΅ΠΌΠΎ Π²ΠΈΠ΄Π΅ΠΎ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΎΡΠΈΠ΅Π½ΡΠΈΡ Π½Π° ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π».
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ The Cat API. ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΠ°Π±ΠΎΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ Π΄ΠΎΡΡΡΠΏΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»ΡΡΡ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ Π·Π°ΠΏΡΠΎΡΡ. ΠΠ°Ρ ΠΎΠ΄ΠΈΠΌ Π½Π° Π³Π»Π°Π²Π½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ Π½ΠΈΠΆΠ΅ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡ Signup for free, ΡΠ»Π΅Π΄ΡΠ΅ΠΌ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΠΊΠ»ΡΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ Π½Π° ΡΠΊΠ°Π·Π°Π½ΡΡ ΠΏΠΎΡΡΡ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π² HTTP-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ x-api-key. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ axios ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π΄Π»Ρ Π²ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ².
import axios from "axios";
axios.defaults.headers.common["x-api-key"] = "ΡΠ²ΠΎΠΉ ΠΊΠ»ΡΡ";
ΠΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ HTTP-Π·Π°ΠΏΡΠΎΡ Π·Π° ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠ΅ΠΉ ΠΏΠΎΡΠΎΠ΄. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ GET-Π·Π°ΠΏΡΠΎΡ Π½Π° ΡΠ΅ΡΡΡΡ https://api.thecatapi.com/v1/breeds, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΡΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠ΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΏΠΎΠ»Π½ΠΈΡΡ select.breed-select ΠΎΠΏΡΠΈΡΠΌΠΈ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ value ΠΎΠΏΡΠΈΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π» id ΠΏΠΎΡΠΎΠ΄Ρ, Π° Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π»ΠΎΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠ΄Ρ.
ΠΠ°ΠΏΠΈΡΠΈ ΡΡΠ½ΠΊΡΠΈΡ fetchBreeds() ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π΅Π»Π°Π΅Ρ HTTP-Π·Π°ΠΏΡΠΎΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΡΠΎΠΌΠΈΡ Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΠΏΠΎΡΠΎΠ΄ - ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠ°. ΠΡΠ½Π΅ΡΠΈ Π΅Ρ Π² ΡΠ°ΠΉΠ» cat-api.js ΠΈ ΡΠ΄Π΅Π»Π°ΠΉ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΊΡΠΏΠΎΡΡ.
ΠΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΠΎΠΏΡΠΈΡ Π² ΡΠ΅Π»Π΅ΠΊΡΠ΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π·Π°ΠΏΡΠΎΡ Π·Π° ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ ΠΊΠΎΡΠ΅ Π½Π° ΡΠ΅ΡΡΡΡ https://api.thecatapi.com/v1/images/search. ΠΠ΅ Π·Π°Π±ΡΠ΄Ρ ΡΠΊΠ°Π·Π°ΡΡ Π² ΡΡΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΡΠΎΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠ° breed_ids Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ ΠΏΠΎΡΠΎΠ΄Ρ.
Π’Π°ΠΊ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ URL Π·Π°ΠΏΡΠΎΡΠ° ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠΎΠ±Π°ΠΊΠ΅ ΠΏΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΏΠΎΡΠΎΠ΄Ρ.
https://api.thecatapi.com/v1/images/search?breed_ids=ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ_ΠΏΠΎΡΠΎΠ΄Ρ
ΠΠ°ΠΏΠΈΡΠΈ ΡΡΠ½ΠΊΡΠΈΡ fetchCatByBreed(breedId) ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΠΎΡΠΎΠ΄Ρ, Π΄Π΅Π»Π°Π΅Ρ HTTP-Π·Π°ΠΏΡΠΎΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΡΠΎΠΌΠΈΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΎ ΠΊΠΎΡΠ΅ - ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠ°. ΠΡΠ½Π΅ΡΠΈ Π΅Ρ Π² ΡΠ°ΠΉΠ» cat-api.js ΠΈ ΡΠ΄Π΅Π»Π°ΠΉ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΊΡΠΏΠΎΡΡ.
ΠΡΠ»ΠΈ Π·Π°ΠΏΡΠΎΡ Π±ΡΠ» ΡΡΠΏΠ΅ΡΠ½ΡΠΉ, ΠΏΠΎΠ΄ ΡΠ΅Π»Π΅ΠΊΡΠΎΠΌ, Π² Π±Π»ΠΎΠΊΠ΅ div.cat-info ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠΎΡΠ΅: Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠ΄Ρ, ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΠΌΠ΅Π½Ρ.
ΠΠΎΠΊΠ° ΠΈΠ΄Π΅Ρ Π»ΡΠ±ΠΎΠΉ HTTP-Π·Π°ΠΏΡΠΎΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ - ΡΠ»Π΅ΠΌΠ΅Π½Ρ p.loader. ΠΠΎΠΊΠ° Π·Π°ΠΏΡΠΎΡΠΎΠ² Π½Π΅Ρ ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΏΡΠΎΡ Π·Π°Π²Π΅ΡΡΠΈΠ»ΡΡ, Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΡΡΠ²Π°ΡΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ CSS ΠΊΠ»Π°ΡΡΡ.
ΠΠΎΠΊΠ° ΠΈΠ΄Π΅Ρ Π·Π°ΠΏΡΠΎΡ Π·Π° ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΏΠΎΡΠΎΠ΄, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΡΡΡΡ select.breed-select ΠΈ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ p.loader. ΠΠΎΠΊΠ° ΠΈΠ΄Π΅Ρ Π·Π°ΠΏΡΠΎΡ Π·Π° ΠΈΠ½ΡΠΎΡΠ°ΡΠΈΠ΅ΠΉ ΠΎ ΠΊΠΎΡΠ΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΡΡΡΡ div.cat-info ΠΈ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ p.loader. ΠΠΎΠ³Π΄Π° Π»ΡΠ±ΠΎΠΉ Π·Π°ΠΏΡΠΎΡ Π·Π°Π²Π΅ΡΡΠΈΠ»ΡΡ, p.loader Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΡΡΡΡ
ΠΡΠ»ΠΈ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ° Π»ΡΠ±ΠΎΠ³ΠΎ HTTP-Π·Π°ΠΏΡΠΎΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΏΠ°Π»Π° ΡΠ΅ΡΡ, Π±ΡΠ»Π° ΠΏΠΎΡΠ΅ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΈ Ρ. ΠΏ., ΡΠΎ Π΅ΡΡΡ ΠΏΡΠΎΠΌΠΈΡ Π±ΡΠ» ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ p.error, Π° ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π·Π°ΠΏΡΠΎΡΠ΅ ΡΠΊΡΡΠ²Π°ΡΡ Π΅Π³ΠΎ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ CSS ΠΊΠ»Π°ΡΡΡ.
ΠΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ - ΠΈΠ·ΠΌΠ΅Π½ΠΈ Π°Π΄ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠ° Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² ΠΊΠΎΠ½Π΅Ρ Π»ΡΠ±ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ», Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π²ΠΌΠ΅ΡΡΠΎ https://api.thecatapi.com/v1/breeds ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉ https://api.thecatapi.com/v1/breeds123. ΠΠ°ΠΏΡΠΎΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ° ΠΏΠΎΡΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π΄Π»Ρ Π·Π°ΠΏΡΠΎΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΊΠΎΡΠ΅ ΠΏΠΎ ΠΏΠΎΡΠΎΠ΄Π΅.
ΠΠΎΠ±Π°Π²Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. ΠΠΌΠ΅ΡΡΠΎ select.breed-select ΠΌΠΎΠΆΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Ρ ΠΊΡΠ°ΡΠΈΠ²ΡΠΌΠΈ ΡΠ΅Π»Π΅ΠΊΡΠΎΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ https://slimselectjs.com/ ΠΠΌΠ΅ΡΡΠΎ p.loader ΠΌΠΎΠΆΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Ρ ΠΊΡΠ°ΡΠΈΠ²ΡΠΌΠΈ CSS-Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠ°ΠΌΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ https://cssloaders.github.io/ ΠΠΌΠ΅ΡΡΠΎ p.error ΠΌΠΎΠΆΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Ρ ΠΊΡΠ°ΡΠΈΠ²ΡΠΌΠΈ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡΠΌΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Notiflix