File tree Expand file tree Collapse file tree 3 files changed +69
-39
lines changed Expand file tree Collapse file tree 3 files changed +69
-39
lines changed Original file line number Diff line number Diff line change 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+
Original file line number Diff line number Diff 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
Original file line number Diff line number Diff line change 1- const input = document . querySelector ( "input" ) ;
1+ const form = document . querySelector ( "#rss-form" ) ;
2+ const input = document . querySelector ( "#url-input" ) ;
23const 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+
You can’t perform that action at this time.
0 commit comments