@@ -5,6 +5,7 @@ import { sendData } from './api.js';
55import { showSuccess , showErrorSending } from './response.js' ;
66
77const SCALE_STEP = 0.25 ;
8+ const FILE_TYPES = [ 'jpg' , 'jpeg' , 'png' ] ;
89
910const imgUploadForm = document . querySelector ( '.img-upload__form' ) ;
1011const uploadOverlay = imgUploadForm . querySelector ( '.img-upload__overlay' ) ;
@@ -19,6 +20,8 @@ const effectList = imgUploadForm.querySelector('.effects__list');
1920const inputHashtag = imgUploadForm . querySelector ( '.text__hashtags' ) ;
2021const inputText = imgUploadForm . querySelector ( '.text__description' ) ;
2122const imgButtonSubmit = uploadOverlay . querySelector ( '.img-upload__submit' ) ;
23+ const imgUploadButton = imgUploadForm . querySelector ( '.img-upload__input' ) ;
24+ const imgEffects = document . querySelectorAll ( '.effects__preview' ) ;
2225
2326let scale = 1 ;
2427
@@ -78,13 +81,30 @@ imgUploadForm.addEventListener('input', () => {
7881 imgButtonSubmit . disabled = ! isValid ;
7982} ) ;
8083
84+ const fileUploadChange = ( ) => {
85+ const file = imgUploadButton . files [ 0 ] ;
86+ const fileName = file . name . toLowerCase ( ) ;
87+ const fileExt = fileName . split ( '.' ) . pop ( ) ;
88+ const matches = FILE_TYPES . includes ( fileExt ) ;
89+ if ( matches ) {
90+ const url = URL . createObjectURL ( file ) ;
91+ img . src = url ;
92+ imgEffects . forEach ( ( item ) => {
93+ item . style . backgroundImage = `url(${ url } )` ;
94+ } ) ;
95+ } else {
96+ return ;
97+ }
98+ onPhotoSelect ( ) ;
99+ } ;
100+
81101imgButtonSubmit . disabled = ! pristine . validate ( ) ;
82102
83103pristine . addValidator ( inputHashtag , isHashtagsValid , getError , 2 , false ) ;
84104
85105pristine . addValidator ( inputText , isCommentValid , getError , 2 , false ) ;
86106
87- uploadFile . addEventListener ( 'change' , onPhotoSelect ) ;
107+ uploadFile . addEventListener ( 'change' , fileUploadChange ) ;
88108
89109smallerButton . addEventListener ( 'click' , scaleDownImage ) ;
90110
0 commit comments