Skip to content

Commit 689a4fb

Browse files
committed
move listeners
1 parent 6dab4dc commit 689a4fb

File tree

3 files changed

+69
-39
lines changed

3 files changed

+69
-39
lines changed

src/js/main.js

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
import { updateInputValue, addRssFeed, getErrors, getRssFeed } from "./model";
2-
import { renderErrors, removeErrors } from "./view";
1+
import { createModel } from "./model";
2+
import { createView } from "./view";
33

4-
const input = document.querySelector("#url-input");
5-
const form = document.querySelector("#rss-form");
4+
const model = createModel();
5+
const view = createView();
66

7-
input.addEventListener('input', (e) => {
8-
updateInputValue(e.target.value);
7+
view.bindInputChange((value) => {
8+
model.updateInputValue(value);
9+
const errors = model.getErrors();
10+
view.renderErrors(errors);
911
});
1012

11-
form.addEventListener('submit', (e) => {
12-
e.preventDefault();
13-
addRssFeed();
14-
renderErrors(getErrors());
13+
view.bindAddFeed((value) => {
14+
model.addRssFeed(value);
1515
});
1616

1717

@@ -23,3 +23,4 @@ form.addEventListener('submit', (e) => {
2323

2424

2525

26+

src/js/model.js

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -33,26 +33,31 @@ const validateInput = (value) => {
3333
}
3434
};
3535

36-
export const updateInputValue = (value) => {
37-
state.inputValue = value;
38-
state.errors = null;
39-
};
4036

41-
export const addRssFeed = () => {
42-
if (validateInput(state.inputValue)) {
43-
state.rssFeed = [...state.rssFeed, state.inputValue];
44-
console.log("обновлён список rss", state.rssFeed);
37+
export const createModel = () => {
38+
const updateInputValue = (value) => {
39+
state.inputValue = value;
4540
state.errors = null;
46-
} else {
47-
console.log("не прошёл валидацию:", state.errors);
48-
}
49-
};
50-
51-
export const getErrors = () => {
52-
return state.errors;
53-
};
41+
};
42+
43+
const addRssFeed = () => {
44+
if (validateInput(state.inputValue)) {
45+
state.rssFeed = [...state.rssFeed, state.inputValue];
46+
console.log("обновлён список rss", state.rssFeed);
47+
state.errors = null;
48+
} else {
49+
console.log("не прошёл валидацию:", state.errors);
50+
}
51+
};
5452

53+
const getErrors = () => {
54+
return state.errors;
55+
};
5556

57+
return {
58+
updateInputValue, addRssFeed, getErrors
59+
}
60+
}
5661

5762

5863

src/js/view.js

Lines changed: 37 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,47 @@
1-
const input = document.querySelector("input");
1+
const form = document.querySelector("#rss-form");
2+
const input = document.querySelector("#url-input");
23
const feedback = document.querySelector("#feedback");
34

4-
export const removeErrors = () => {
5-
input.classList.remove("is-invalid");
6-
feedback.textContent = '';
7-
}
5+
export const createView = () => {
6+
const bindInputChange = (handler) => {
7+
input.addEventListener('input', (e) => {
8+
handler(e.target.value);
9+
})
10+
};
811

9-
export const renderErrors = (errors) => {
10-
input.classList.add("is-invalid");
12+
const bindAddFeed = (handler) => {
13+
form.addEventListener('submit', (e) => {
14+
e.preventDefault();
15+
handler()
16+
})
17+
};
1118

12-
if (errors === null) {
13-
removeErrors();
14-
} else {
15-
errors.map((error) => {
16-
feedback.textContent = error;
17-
});
19+
const removeErrors = () => {
20+
input.classList.remove("is-invalid");
21+
feedback.textContent = "";
22+
};
23+
24+
const renderErrors = (errors) => {
25+
input.classList.add("is-invalid");
26+
27+
if (errors === null) {
28+
removeErrors();
29+
} else {
30+
errors.map((error) => {
31+
feedback.textContent = error;
32+
});
33+
}
34+
};
35+
36+
return {
37+
bindInputChange,
38+
bindAddFeed,
39+
renderErrors
1840
}
1941
};
2042

2143

2244

2345

46+
47+

0 commit comments

Comments
 (0)