|
1 | 1 | import { isEscapeKey } from './util.js'; |
2 | 2 | import { DATA_ELEMENTS } from './photo-modal-elements.js'; |
3 | | - |
4 | | -const onDocumentKeydown = (evt) => { |
5 | | - if (isEscapeKey(evt)) { |
6 | | - evt.preventDefault(); |
7 | | - closePhotoModal(); |
8 | | - } |
9 | | -}; |
| 3 | +import { renderNextComments, closeComments, initComments } from './comments.js'; |
10 | 4 |
|
11 | 5 | const showModal = (isShown = true) => { |
12 | 6 | if (isShown) { |
13 | 7 | DATA_ELEMENTS.photoModalElement.classList.remove('hidden'); |
14 | 8 | document.body.classList.add('modal-open'); |
15 | | - } else { |
16 | | - DATA_ELEMENTS.photoModalElement.classList.add('hidden'); |
17 | | - document.body.classList.remove('modal-open'); |
| 9 | + return; |
18 | 10 | } |
19 | | -}; |
20 | 11 |
|
21 | | -const renderComments = (comments) => { |
22 | | - const commentsFragment = document.createDocumentFragment(); |
23 | | - comments.forEach((comment) => { |
24 | | - const newCommentsElement = DATA_ELEMENTS.commentTemplate.cloneNode(true); |
25 | | - const avatar = newCommentsElement.querySelector('.social__picture'); |
26 | | - avatar.src = comment.avatar; |
27 | | - avatar.alt = comment.name; |
28 | | - newCommentsElement.querySelector('.social__text').textContent = comment.message; |
29 | | - commentsFragment.append(newCommentsElement); |
30 | | - }); |
31 | | - DATA_ELEMENTS.commentsListElement.appendChild(commentsFragment); |
| 12 | + DATA_ELEMENTS.photoModalElement.classList.add('hidden'); |
| 13 | + document.body.classList.remove('modal-open'); |
32 | 14 | }; |
33 | 15 |
|
34 | | -const renderModal = (({ url, description, likes, comments}) => { |
| 16 | +function onDocumentKeydown(evt) { |
| 17 | + if (isEscapeKey(evt)) { |
| 18 | + evt.preventDefault(); |
| 19 | + closePhotoModal(); |
| 20 | + } |
| 21 | +} |
| 22 | + |
| 23 | +function closePhotoModal() { |
| 24 | + showModal(false); |
| 25 | + document.removeEventListener('keydown', onDocumentKeydown); |
| 26 | + closeComments(); |
| 27 | +} |
| 28 | + |
| 29 | +const renderModal = ({ url, description, likes, comments }) => { |
35 | 30 | DATA_ELEMENTS.bigPhotoImgElement.src = url; |
36 | 31 | DATA_ELEMENTS.bigPhotoImgElement.alt = description; |
37 | 32 | DATA_ELEMENTS.likesCountElement.textContent = likes; |
38 | 33 | DATA_ELEMENTS.socialCaptionElement.textContent = description; |
39 | 34 |
|
40 | | - DATA_ELEMENTS.commentsListElement.innerHTML = ''; |
41 | | - |
42 | | - DATA_ELEMENTS.commentShownCountElement.textContent = comments.length; |
43 | | - DATA_ELEMENTS.commentTotalCountElement.textContent = comments.length; |
44 | | - DATA_ELEMENTS.commentCountBlockElement.classList.add('hidden'); |
45 | | - DATA_ELEMENTS.commentsLoaderElement.classList.add('hidden'); |
46 | | - |
47 | | - renderComments(comments); |
48 | | -}); |
| 35 | + initComments(comments); |
| 36 | +}; |
49 | 37 |
|
50 | 38 | const openPhotoModal = (photo) => { |
51 | 39 | showModal(); |
52 | 40 | renderModal(photo); |
53 | 41 | document.addEventListener('keydown', onDocumentKeydown); |
54 | 42 | }; |
55 | 43 |
|
56 | | -const closePhotoModal = () => { |
57 | | - showModal(false); |
58 | | - document.removeEventListener('keydown', onDocumentKeydown); |
59 | | -}; |
60 | | - |
61 | | -DATA_ELEMENTS.photoModalCloseElement.addEventListener('click', () => { |
62 | | - closePhotoModal(); |
63 | | -}); |
| 44 | +DATA_ELEMENTS.photoModalCloseElement.addEventListener('click', closePhotoModal); |
| 45 | +DATA_ELEMENTS.commentsLoaderElement.addEventListener('click', renderNextComments); |
64 | 46 |
|
65 | 47 | export { openPhotoModal, closePhotoModal }; |
0 commit comments