11import { isEscapeKey } from './util.js' ;
22import { pristine } from './validator.js' ;
33import { sendData } from './api.js' ;
4- import './image-editor.js' ;
54import { createNotification } from './notification.js' ;
65import { editorReset } from './image-editor.js' ;
76
7+ const FILE_TYPES = [ 'image/jpeg' , 'image/png' , 'image/gif' ] ;
88const SendButtonText = {
99 DEFAULT : 'Опубликовать' ,
1010 SENDING : 'Публикация...' ,
@@ -17,6 +17,8 @@ const sendButton = form.querySelector('.img-upload__submit');
1717const sliderContainer = form . querySelector ( '.effect-level' ) ;
1818const successTemplate = document . querySelector ( '#success' ) ;
1919const errorTemplate = document . querySelector ( '#error' ) ;
20+ const uploadPreview = form . querySelector ( '.img-upload__preview' ) . querySelector ( 'img' ) ;
21+ const uploadPreviewEffects = form . querySelectorAll ( '.effects__preview' ) ;
2022
2123const closeForm = ( ) => {
2224 imgUploadOverlay . classList . add ( 'hidden' ) ;
@@ -42,7 +44,20 @@ const closeButtonClickHandler = (evt) => {
4244 closeForm ( ) ;
4345} ;
4446
45- const imgUploadChangeHandler = ( ) => {
47+ const updatePreview = ( target ) => {
48+ const file = target . files [ 0 ] ;
49+ if ( FILE_TYPES . includes ( file . type ) ) {
50+ const url = URL . createObjectURL ( file ) ;
51+ uploadPreview . src = url ;
52+
53+ uploadPreviewEffects . forEach ( ( effectPreview ) => {
54+ effectPreview . style . backgroundImage = `url(${ url } )` ;
55+ } ) ;
56+ }
57+ } ;
58+
59+ const imgUploadChangeHandler = ( evt ) => {
60+ updatePreview ( evt . target ) ;
4661 imgUploadOverlay . classList . remove ( 'hidden' ) ;
4762 body . classList . add ( 'modal-open' ) ;
4863 document . addEventListener ( 'keydown' , documentKeydownHandler ) ;
@@ -61,9 +76,9 @@ const toggleButtonState = (state) => {
6176 sendButton . textContent = state ? SendButtonText . SENDING : SendButtonText . DEFAULT ;
6277} ;
6378
64- const sendFormData = async ( formElement ) => {
79+ const sendFormData = async ( ) => {
6580 if ( pristine . validate ( ) ) {
66- const formData = new FormData ( formElement ) ;
81+ const formData = new FormData ( form ) ;
6782 toggleButtonState ( true ) ;
6883 try {
6984 await sendData ( formData ) ;
@@ -78,7 +93,7 @@ const sendFormData = async (formElement) => {
7893
7994const formSubmitHandler = ( evt ) => {
8095 evt . preventDefault ( ) ;
81- sendFormData ( evt . target ) ;
96+ sendFormData ( ) ;
8297} ;
8398
8499form . querySelector ( '.img-upload__input' ) . addEventListener ( 'change' , imgUploadChangeHandler ) ;
0 commit comments