-
Notifications
You must be signed in to change notification settings - Fork 0
/
PopupWithForm.js
46 lines (38 loc) · 1.8 KB
/
PopupWithForm.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import Popup from "./Popup.js";
export default class PopupWithForm extends Popup {
constructor(popupElement, submit) {
super(popupElement);
this._submitForm = submit;
this._popupForm = this._popup.querySelector('.popup__form');
this._popupFormInputs = Array.from(this._popup.querySelectorAll('.popup__form-field'));
this._popupSubmitButton = this._popup.querySelector('.popup__submit-button');
this._popupSubmitButtonOriginalText = this._popupSubmitButton.textContent;
}
// Геттер сбора значений всех полей формы (создание пустого объекта, проход по инпутам и заполнение объекта свойствами)
_getInputValues() {
this._popupFormInputsValues = new Object;
this._popupFormInputs.forEach((input) => {
this._popupFormInputsValues[input.name] = input.value;
})
return this._popupFormInputsValues;
}
// Метод сбрасывания формы при закрытии попапа
close() {
super.close();
this._popupForm.reset(); // метод определяется для формы
}
// Уведомление пользователя о процессе загрузки
renderLoading(isLoading) {
isLoading
? this._popupSubmitButton.textContent = 'Сохранение...'
: this._popupSubmitButton.textContent = this._popupSubmitButtonOriginalText;
}
// Метод установки обработчиков событий (добавление обработчиков клика иконке закрытия и сабмиту формы)
setEventListeners() {
super.setEventListeners();
this._popup.addEventListener('submit', (evt) => {
evt.preventDefault();
this._submitForm(this._getInputValues());
})
}
}