Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/lesiaukr/goit-react-woolf-hw-03-image-finder

Master's Degree React Course. HTTP requests
https://github.com/lesiaukr/goit-react-woolf-hw-03-image-finder

api axios goit-react-woolf-hw-03-image-finder http-requests react react-createportal react-icons toastify

Last synced: 30 days ago
JSON representation

Master's Degree React Course. HTTP requests

Awesome Lists containing this project

README

        

# Критерії приймання

- Створений репозиторій `goit-react-woolf-hw-03-image-finder`
- При здачі домашньої роботи є посилання: на вихідні файли та робочу сторінку
проектів на `GitHub Pages`.
- У стані компонентів зберігається мінімально необхідний набір даних, решта
обчислюється
- Під час запуску коду завдання в консолі відсутні помилки та попередження.
- Для кожного компонента є окрема папка з файлом React-компонента та файлом
стилів
- Все, що компонент очікує у вигляді пропсів, передається йому під час виклику.
- Імена компонентів зрозумілі та описові
- JS-код чистий і зрозумілий, використовується `Prettier`.
- Стилізація виконана `CSS-модулями` або `Styled Components`.

## Пошук зображень

Напиши застосунок пошуку зображень за ключовим словом. Прев'ю робочого
застосунку
[дивись за посиланням](https://drive.google.com/file/d/1oXCGyiq4uKwW0zzraZLKk4lh3voBlBzZ/view?usp=sharing).

Створи компоненти ``, ``, ``,
``, `` і ``. Готові стилі компонентів можна взяти у файлі
[styles.css](./assets/styles.css) і підправити під себе, якщо потрібно.

![preview](./assets/preview.jpg)

### Інструкція Pixabay API

Для HTTP-запитів використовуй публічний сервіс пошуку зображень
[Pixabay](https://pixabay.com/api/docs/). Зареєструйся та отримай приватний ключ
доступу.

URL-рядок HTTP-запиту.

```bash
https://pixabay.com/api/?q=cat&page=1&key=your_key&image_type=photo&orientation=horizontal&per_page=12
```

Pixabay API підтримує пагінацію, за замовчуванням параметр `page` дорівнює `1`.
Нехай у відповіді надходить по 12 об'єктів, встановлено в параметрі `per_page`.
Не забудь, що під час пошуку за новим ключовим словом, необхідно скидати
значення `page` до `1`.

У відповіді від апі приходить масив об'єктів, в яких тобі цікаві лише наступні
властивості.

- `id` – унікальний ідентифікатор
- `webformatURL` – посилання на маленьке зображення для списку карток
- `largeImageURL` – посилання на велике зображення для модального вікна

### Опис компонента ``

Компонент приймає один проп `onSubmit` – функцію для передачі значення інпута
під час сабміту форми. Створює DOM-елемент наступної структури.

```html



Search


```

### Опис компонента ``

Список карток зображень. Створює DOM-елемент наступної структури.

```html


```

### Опис компонента ``

Компонент елемента списку із зображенням. Створює DOM-елемент наступної
структури.

```html


```

### Опис компонента ``

При натисканні на кнопку `Load more` повинна довантажуватись наступна порція
зображень і рендеритися разом із попередніми. Кнопка повинна рендеритися лише
тоді, коли є якісь завантажені зображення. Якщо масив зображень порожній, кнопка
не рендериться.

### Опис компонента ``

Компонент спінера відображається, доки відбувається завантаження зображень.
Використовуйте будь-який готовий компонент, наприклад
[react-loader-spinner](https://github.com/mhnpd/react-loader-spinner) або
будь-який інший.

### Опис компонента ``

Під час кліку на елемент галереї повинно відкриватися модальне вікно з темним
оверлеєм і відображатися велика версія зображення. Модальне вікно повинно
закриватися по натисканню клавіші `ESC` або по кліку на оверлеї.

Зовнішній вигляд схожий на функціонал цього
[VanillaJS-плагіна](https://basiclightbox.electerious.com/), тільки замість
білого модального вікна рендериться зображення (у прикладі натисніть `Run`).
Анімацію робити не потрібно!

```html




```

#### Фінальний результат

![screencapture](./assets/final%20result.jpg)