@@ -10,6 +10,9 @@ import { sendData } from './api.js';
1010import { showSuccessMessage , showErrorMessage } from './messages.js' ;
1111
1212const MAX_COMMENT_LENGTH = 140 ;
13+ const FILE_TYPES = [ 'jpg' , 'jpeg' , 'png' ] ;
14+ const DEFAULT_PREVIEW_IMAGE = 'img/upload-default-image.jpg' ;
15+
1316const SubmitButtonText = {
1417 IDLE : 'Опубликовать' ,
1518 SENDING : 'Публикую...' ,
@@ -23,6 +26,8 @@ const uploadCancelButtonNode = uploadFormNode.querySelector('#upload-cancel');
2326const hashtagsInputNode = uploadFormNode . querySelector ( '.text__hashtags' ) ;
2427const descriptionInputNode = uploadFormNode . querySelector ( '.text__description' ) ;
2528const submitButtonNode = uploadFormNode . querySelector ( '.img-upload__submit' ) ;
29+ const previewImageNode = uploadOverlayNode . querySelector ( '.img-upload__preview img' ) ;
30+ const effectsPreviewNodes = uploadOverlayNode . querySelectorAll ( '.effects__preview' ) ;
2631
2732const pristine = new Pristine ( uploadFormNode , {
2833 classTo : 'img-upload__field-wrapper' ,
@@ -42,11 +47,27 @@ const toggleSubmitButton = (isDisabled) => {
4247 : SubmitButtonText . IDLE ;
4348} ;
4449
50+ const resetFormFields = ( ) => {
51+ hashtagsInputNode . value = '' ;
52+ descriptionInputNode . value = '' ;
53+ pristine . reset ( ) ;
54+ resetImageEditor ( ) ;
55+ } ;
56+
57+ const resetPreview = ( ) => {
58+ previewImageNode . src = DEFAULT_PREVIEW_IMAGE ;
59+ effectsPreviewNodes . forEach ( ( preview ) => {
60+ preview . style . backgroundImage = `url("${ DEFAULT_PREVIEW_IMAGE } ")` ;
61+ } ) ;
62+ } ;
63+
4564const resetUploadPhotoForm = ( ) => {
4665 uploadFormNode . reset ( ) ;
4766 uploadFileControl . value = '' ;
48- pristine . reset ( ) ;
49- resetImageEditor ( ) ;
67+ // pristine.reset();
68+ // resetImageEditor();
69+ resetFormFields ( ) ;
70+ resetPreview ( ) ;
5071} ;
5172
5273const stopEscapePropagation = ( evt ) => {
@@ -79,6 +100,29 @@ const closeUploadPhotoForm = () => {
79100} ;
80101
81102const onUploadFileControlChange = ( ) => {
103+ const file = uploadFileControl . files [ 0 ] ;
104+
105+ if ( ! file ) {
106+ return ;
107+ }
108+
109+ const fileName = file . name . toLowerCase ( ) ;
110+ const isValidFileType = FILE_TYPES . some ( ( type ) => fileName . endsWith ( type ) ) ;
111+
112+ if ( ! isValidFileType ) {
113+ return ;
114+ }
115+
116+ resetFormFields ( ) ;
117+
118+ const imageUrl = URL . createObjectURL ( file ) ;
119+
120+ previewImageNode . src = imageUrl ;
121+
122+ effectsPreviewNodes . forEach ( ( preview ) => {
123+ preview . style . backgroundImage = `url("${ imageUrl } ")` ;
124+ } ) ;
125+
82126 openUploadPhotoForm ( ) ;
83127} ;
84128
0 commit comments