@@ -20,13 +20,61 @@ export const renderUIText = () => {
2020 example . textContent = i18next . t ( "example" ) ;
2121} ;
2222
23- export const renderErrors = ( error ) => {
24- if ( error ) {
25- input . classList . add ( "is-invalid" ) ;
26- feedback . textContent = i18next . t ( `errors.${ error } ` ) ;
27- } else {
28- input . classList . remove ( "is-invalid" ) ;
29- feedback . textContent = "" ;
23+ const renderErrors = ( error ) => {
24+ input . classList . add ( "is-invalid" ) ;
25+ feedback . classList . add ( "text-danger" ) ;
26+ feedback . textContent = i18next . t ( `errors.${ error } ` ) ;
27+ } ;
28+
29+ const renderSuccess = ( ) => {
30+ feedback . classList . add ( "text-success" ) ;
31+ feedback . textContent = i18next . t ( `ui.success` ) ;
32+ } ;
33+
34+ const renderFeedsPending = ( ) => {
35+ const postsContainer = document . querySelector ( ".feeds" ) ;
36+ const spinner = document . createElement ( 'div' ) ;
37+ spinner . classList . add ( 'spinner-container' )
38+ spinner . innerHTML = `
39+ <div
40+ id="posts-spinner"
41+ class="spinner-border text-primary d-none"
42+ role="status">
43+ <span>${ i18next . t ( "ui.pending" ) } </span>
44+ </div>
45+ ` ;
46+ postsContainer . append ( spinner ) ;
47+ } ;
48+
49+ const cleanDomElements = ( ) => {
50+ input . classList . remove ( "is-invalid" ) ;
51+ feedback . classList . remove ( "text-danger" ) ;
52+ feedback . classList . remove ( "text-success" ) ;
53+ feedback . textContent = "" ;
54+ const spinner = document . querySelector ( ".spinner-container" ) ;
55+ if ( spinner ) spinner . remove ( ) ;
56+ }
57+
58+ export const renderUi = ( uiState , message ) => {
59+ switch ( uiState ) {
60+ case 'error' :
61+ cleanDomElements ( ) ;
62+ renderErrors ( message ) ;
63+ break ;
64+ case 'success' :
65+ cleanDomElements ( ) ;
66+ renderSuccess ( ) ;
67+ break ;
68+ case 'pending' :
69+ cleanDomElements ( ) ;
70+ renderFeedsPending ( ) ;
71+ break ;
72+ case 'update' :
73+ // нужен ли отдельный case?
74+ break ;
75+ default :
76+ cleanDomElements ( ) ;
77+ break ;
3078 }
3179} ;
3280
0 commit comments