Skip to content

Commit 6dab4dc

Browse files
committed
render errors
1 parent 75a080d commit 6dab4dc

File tree

4 files changed

+40
-5
lines changed

4 files changed

+40
-5
lines changed

src/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ <h1 class="display-3 mb-0">RSS агрегатор</h1>
5151
</form>
5252
<p class="mt-2 mb-0 text-muted">Пример:
5353
https://lorem-rss.hexlet.app/feed</p>
54-
<p class="feedback m-0 position-absolute small text-danger"></p>
54+
<p id="feedback" class="feedback m-0 position-absolute small text-danger"></p>
5555
</div>
5656
</div>
5757
</section>

src/js/main.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import { updateInputValue, addRssFeed } from "./model";
1+
import { updateInputValue, addRssFeed, getErrors, getRssFeed } from "./model";
2+
import { renderErrors, removeErrors } from "./view";
23

34
const input = document.querySelector("#url-input");
45
const form = document.querySelector("#rss-form");
@@ -10,10 +11,15 @@ input.addEventListener('input', (e) => {
1011
form.addEventListener('submit', (e) => {
1112
e.preventDefault();
1213
addRssFeed();
14+
renderErrors(getErrors());
1315
});
1416

1517

1618

1719

1820

1921

22+
23+
24+
25+

src/js/model.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,12 @@ const state = onChange(object, (path, value) => {
1313

1414
const schema = yup
1515
.string()
16-
.url()
17-
.required('Обязательное поле')
18-
.test('no-duplicate', 'Эта лента уже добавлена', (value) => !state.rssFeed.includes(value));
16+
.url("Ссылка должна быть валидным URL")
17+
.required("Обязательное поле")
18+
.test(
19+
"Эта лента уже добавлена",
20+
(value) => !state.rssFeed.includes(value)
21+
);
1922

2023
const validateInput = (value) => {
2124
try {
@@ -45,6 +48,9 @@ export const addRssFeed = () => {
4548
}
4649
};
4750

51+
export const getErrors = () => {
52+
return state.errors;
53+
};
4854

4955

5056

src/js/view.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
const input = document.querySelector("input");
2+
const feedback = document.querySelector("#feedback");
3+
4+
export const removeErrors = () => {
5+
input.classList.remove("is-invalid");
6+
feedback.textContent = '';
7+
}
8+
9+
export const renderErrors = (errors) => {
10+
input.classList.add("is-invalid");
11+
12+
if (errors === null) {
13+
removeErrors();
14+
} else {
15+
errors.map((error) => {
16+
feedback.textContent = error;
17+
});
18+
}
19+
};
20+
21+
22+
23+

0 commit comments

Comments
 (0)