Skip to content

Commit

Permalink
p
Browse files Browse the repository at this point in the history
  • Loading branch information
sseezov committed Mar 27, 2024
2 parents 37fe919 + 789e718 commit 76f87af
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 2 deletions.
60 changes: 60 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,27 @@
## Запуск и сборка приложения

Для запуска фронтенда приложения используйте команду:
<<<<<<< HEAD

=======
<<<<<<< HEAD
=======

>>>>>>> 02f9cff (delete branch)
>>>>>>> 789e718492fae34f8d9104375cf3422e5e96aee7
```bash
make run
```

Для запуска сервера используйте в отдельном терминале команду:
<<<<<<< HEAD

=======
<<<<<<< HEAD
=======

>>>>>>> 02f9cff (delete branch)
>>>>>>> 789e718492fae34f8d9104375cf3422e5e96aee7
```bash
make start-server
```
Expand All @@ -22,10 +36,25 @@ make start-server

## Задача 1

<<<<<<< HEAD
Напишите и экспортируйте по умолчанию функцию `app()`, отвечающую за работу веб-приложения.
При старте приложения должна рендериться форма внутри родительского элемента с классом `.form-container`.
Форма выглядит следующим образом. Для скорости работы, вы можете добавить ее через `innerHTML`.

=======
<<<<<<< HEAD
Напишите и экспортируйте функцию `validateName()`, которая валидирует строку с условием, что валидным именем считается любая строка с длиной больше 0, исключая пробелы. Если имя валидно, то функция возвращает пустой объект, иначе возвращается объект с ключом errors, который содержит массив со строкой 'введите имя'.

```javascript
validateName('example'); // []
validateName(''); // ['name cannot be empty']
validateName(' '); // ['name cannot be empty']
=======
Напишите и экспортируйте по умолчанию функцию `app()`, отвечающую за работу веб-приложения.
При старте приложения должна рендериться форма внутри родительского элемента с классом `.form-container`.
Форма выглядит следующим образом. Для скорости работы, вы можете добавить ее через `innerHTML`.

>>>>>>> 789e718492fae34f8d9104375cf3422e5e96aee7
```html
<form id="registrationForm">
<div class="form-group">
Expand All @@ -38,10 +67,39 @@ make start-server
</div>
<input type="submit" value="Submit" class="btn btn-primary" disabled>
</form>
<<<<<<< HEAD
=======
>>>>>>> 02f9cff (delete branch)
>>>>>>> 789e718492fae34f8d9104375cf3422e5e96aee7
```

## Задача 2

<<<<<<< HEAD
Форма, данная в файле **index.html**, имеет кнопку `submit` c текстом `'зарегистрироваться'`. Ваша задача состоит в том, чтобы реализовать для этой кнопки статус `disabled`, когда хотя бы одно из полей невалидно. Иначе кнопка не должна иметь атрибут `disabled`.
=======
<<<<<<< HEAD
Напишите и экспортируйте функцию `validateEmail()`, которая валидирует email, с условием, что валидной почтой считается любая строка с символом `@` посередине, с любой длиной символов, исключая пробелы до и после нее. Если почта валидна, то функция возвращает пустой объект, иначе возвращается объект с ключом errors, который содержит массив со строкой 'введите валидный email'.

```javascript
validateEmail('[email protected]'); // []
validateEmail('@gmail.com'); // ['invalid email']
validateEmail('g@ и'); // ['invalid email']
validateEmail('g@s'); // []
```
>>>>>>> 789e718492fae34f8d9104375cf3422e5e96aee7

## Задача 3

Внутри функции `app()` напишите код, который реализует контролируемый input для каждого поля формы. Инпут должны иметь класс `is-valid`, если его содержимое валидно. Иначе input должен иметь класс `is-invalid`.

## Задача 4

При нажатии кнопки `зарегистрироваться` должен отправляться запрос на сервер с данными формы и в случае успешного ответа содержимое `document.body` нужно заменить на текст ответа сервера, завернутый в теги `<p></p>` таким образом:
<<<<<<< HEAD

=======
=======
Форма, данная в файле **index.html**, имеет кнопку `submit` c текстом `'зарегистрироваться'`. Ваша задача состоит в том, чтобы реализовать для этой кнопки статус `disabled`, когда хотя бы одно из полей невалидно. Иначе кнопка не должна иметь атрибут `disabled`.

## Задача 3
Expand All @@ -52,6 +110,8 @@ make start-server

При нажатии кнопки `зарегистрироваться` должен отправляться запрос на сервер с данными формы и в случае успешного ответа содержимое `document.body` нужно заменить на текст ответа сервера, завернутый в теги `<p></p>` таким образом:

>>>>>>> 02f9cff (delete branch)
>>>>>>> 789e718492fae34f8d9104375cf3422e5e96aee7
```html
`<p>Ответ сервера</p>`.
```
2 changes: 0 additions & 2 deletions __tests__/index.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ beforeEach(() => {
const pathToFixture = path.join('__tests__', '__fixtures__', 'index.html');
const initHtml = fs.readFileSync(pathToFixture).toString();
document.body.innerHTML = initHtml;
const run = app.run ? app.run : () => { }
run();

elements = {
Expand Down Expand Up @@ -97,7 +96,6 @@ test('step4', async () => {
const pathToFixture = path.join('__tests__', '__fixtures__', 'index.html');
const initHtml = fs.readFileSync(pathToFixture).toString();
document.body.innerHTML = initHtml;
const run = app.run ? app.run : () => { }
run();

elements = {
Expand Down
18 changes: 18 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,25 @@
<div class="row justify-content-center">
<div class="col-md-6">
<h2 class="mb-4">Регистрация</h2>
<<<<<<< HEAD
<div class="form-container"></div>
=======
<<<<<<< HEAD
<form id="registrationForm">
<div class="form-group">
<label for="inputName">Name</label>
<input type="text" class="form-control" id="inputName" placeholder="Введите ваше имя" name="name" required>
</div>
<div class="form-group">
<label for="inputEmail">Email</label>
<input type="text" class="form-control" id="inputEmail" placeholder="Введите email" name="email" required>
</div>
<input type="submit" value="Submit" class="btn btn-primary" disabled>
</form>
=======
<div class="form-container"></div>
>>>>>>> 02f9cff (delete branch)
>>>>>>> 789e718492fae34f8d9104375cf3422e5e96aee7
</div>
</div>
</div>
Expand Down

0 comments on commit 76f87af

Please sign in to comment.