@gix73/date-picker-lib-m v1.0.6
Tестовое задание библиотека Modsen DatePicker
Содержание
Техническое задание
Необходимо реализовать библиотеку Javascript - DatePicker, для работы с различными видами календаря. Цель состоит в том, чтобы создать базовую библиотеку, которую можно настраивать и расширять.
Необходимый функционал:
- Просмотр календаря
- Выбор диапазона для календаря
- Дефолтный календарь с заранее установленным диапазоном
- Возможность выбора начала недели(с понедельника или воскресенья)
- Выбор вида календаря (по неделям, месяцам и т.д.)
- Реализовать возможность при клике на определенный день добавлять список задач и сохранять их в localStorage
- Возможность переключения на предыдущий(ую)/следующий(ую) неделю/месяц/год
- Возможность выбора максимальной даты календаря
- Возможность выбора минимальной даты для календаря
- Возможность скрывать/показывать выходные дни и выделять праздничные дни другим цветом
- Возможность перейти в календаре на введенную пользователем дату
- Стилизация календаря
Дополнительный функционал:
- Развернуть приложение на хостинге (heroku, vercel)
- Настроить CI/CD, используя GitHub Actions.
- Собрать проект с нуля(с настройками всех конфигов: rollup, eslint, prettier, husky)
Пример графического представления:
Ссылка на макет: Макет "DatePicker".
Также проект предполагает:
- Разделить библиотеку на два основных компонента: представления и логики. Для реализации логики приложения необходимо использовать порождающий паттерн программирования "Декоратор", который позволяет динамически добавлять объектам новую функциональность, оборачивая их в полезные «обёртки» (см. подробнее паттерн Декоратор). При помощи паттерна создать сервисный класс, в котором вы будете задавать конфигурацию и создавать календарь.
Настроить конфигурации babel, eslint, prettier.
Подключить и настроить бандлер Rollup для сборки проекта в библиотеку.
Подключить и настроить Storybook для проверки работоспособности вашей библиотеки.
Добавить обработку ошибок через паттерн Error Boundaries
Добавить проверку типов в React компонентах, передаваемых параметров и подобных объектов.
Использовать алиасы для импортирования файлов.
В приложении допускается использование языка typescript.
Нельзя использовать какие-либо сторонние библиотеки.
Используемые технологии
Для react
- node.js - программная платформа, основанная на движке V8 (транслирующем JavaScript в машинный код).
- babel - транспайлер, преобразующий код из одного стандарта в другой.
- eslint - линтер для JavaScript кода.
- yarn - менеджер пакетов.
- rollup - сборщик ES-модулей.
- storybook - инструмент, используемый для разработки компонентов пользовательского интерфейса в изоляции.
- react - JavaScript-библиотека для создания пользовательских интерфейсов.
- prop-types - набор валидаторов, которые могут быть использованы для проверки получаемых данных.
- styled-components - система стилизации react компонентов.
- jest — интеграционное тестирование (rtl) + unit-тестирование.
Для react native
Will be soon...
Структура проекта
Тестирование
Реализовать e2e тестирование c полным покрытием функционала приложения:
- Сервис для конфигурации DatePicker-компонента.
- Графическое (компонент модуля и т.д.)
Полезные ссылки
11 months ago