← Назад к списку
Тестовое задание для Vue Frontend Developer (SaaSoft)
Компания: SaaSoft
Тестовое задание для Vue Frontend Developer
Необходимо реализовать форму управления учетными записями.
Время на выполнение задания: максимум 2 дня.
Результатом выполнения работы является ссылка на GitHub/GitLab репозиторий с историей коммитов.
Макет представлен для примера: главное соблюдать ТЗ, структуру и расположение полей, визуальное отображение можно сделать по своему предпочтению.

Стек
- Vue.js 3 + Composition API (фреймворк)
- TypeScript (язык)
- Pinia (стейт-менеджер)
- Любой UI-фреймворк на выбор
Форма состоит из
- Заголовка и кнопки добавления учетной записи.
- Подсказки для поля "Метка".
- Списка учетных записей с лейблами полей.
Учетная запись состоит из
- Метка: необязательное поле к заполнению. Максимум 50 символов. В поле вводятся текстовые метки через знак
;.- Для указания нескольких меток для одной пары логин/пароль используйте разделитель
;.
- Для указания нескольких меток для одной пары логин/пароль используйте разделитель
- Тип записи: выпадающий список. Допускаются выборы из заранее предопределенных вариантов:
- LDAP: при выборе этого типа поле "Пароль" скрывается и сохраняется как
null. - Локальная: при выборе этого типа поле "Пароль" показывается и сохраняется как введенное значение.
- LDAP: при выборе этого типа поле "Пароль" скрывается и сохраняется как
- Логин: обязательное к заполнению. Максимум 100 символов.
- Пароль: обязательное к заполнению. Отображается в случае выбора значения "Локальная" в поле "Тип записи". Максимум 100 символов.
- Кнопки удаления учетной записи.

Логика работы формы
- По нажатию кнопки "+" в конец списка учетных записей добавляется новая пустая запись, состоящая из: Метки, Типа записи, Логина, Пароля.
- При нажатии кнопки удаления учетная запись должна полностью удалиться.
- По окончанию ввода значений в поля учетной записи (для текстовых: потеря фокуса; для селекта: изменение значения) происходит валидация обязательных полей.
- В случае валидности учетная запись сохраняется/обновляется.
- В обратном случае поля обозначаются красной обводкой.
- Все поля сохраняются в текстовом виде, кроме поля "Метка".
- Оно должно преобразовываться в массив, где один элемент это строковое значение до
;. - В массиве должен лежать объект, где поле
textравно одному элементу метки:({ text: элемент метки }).
- Оно должно преобразовываться в массив, где один элемент это строковое значение до
- Сохранение учетной записи должно происходить в стейт-менеджер. При обновлении страницы сохраненные учетные записи должны отображаться.