Skip to content

Commit 5f9ba86

Browse files
committed
[PRAC/cont] Fix row-contacts "green" highlighting
Exclud "green" highlight contact input, when enter incor data/submit. Worth noting: - that it's not an ideal solution.. but there's no more time (need to move on). core: B-3 / JS-BL
1 parent 3b31efb commit 5f9ba86

File tree

2 files changed

+77
-5
lines changed
  • core-courses/3-js-basic-level/practicum-js-basic-level/sb-crm-client/js

2 files changed

+77
-5
lines changed

core-courses/3-js-basic-level/practicum-js-basic-level/sb-crm-client/js/index.js

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1972,14 +1972,46 @@
19721972
modalBodyForm
19731973
);
19741974

1975-
if (!modalBodyForm.checkValidity() || validErrors.length > 0) {
1975+
// "дополнительная" проверка на наличие "invalid-feedback" у контактных инпутов (т.к. всё не просто с 'was-validated')
1976+
const hasInvalidFeedback = Array.from(
1977+
modalBodyForm.querySelectorAll('.modal__body-add-contact-input')
1978+
).some((input) => {
1979+
const feedback =
1980+
input.parentElement.querySelector('.invalid-feedback');
1981+
return feedback && feedback.textContent.trim() !== '';
1982+
});
1983+
1984+
if (
1985+
!modalBodyForm.checkValidity() ||
1986+
validErrors.length > 0 ||
1987+
hasInvalidFeedback
1988+
) {
19761989
event.stopPropagation();
1977-
modalBodyForm.classList.add('was-validated');
19781990
} else {
1979-
// вывод сообщения об успешном добавлении клиента (после перерисовки таблицы)
1991+
modalBodyForm.classList.add('was-validated'); // если всё "ок", т.е. нет ошибок, невалидных сообщений.. добавление всей форме валидационного класса (для/по Bootstrap)
1992+
19801993
setTimeout(() => {
1981-
alert('Клиент успешно добавлен!');
1982-
// movingToLastNewTableRow(); // выделение/показ только что добавленного клиента/строки
1994+
alert('Клиент успешно добавлен!'); // вывод сообщения об успешном добавлении клиента
1995+
1996+
// очистка всех полей формы (удаление классов/сообщений ошибок)
1997+
allModalInputs.forEach((input) => {
1998+
input.value = '';
1999+
input.classList.remove('is-invalid');
2000+
});
2001+
modalBodyForm.classList.remove('was-validated'); // удаление класса "was-validated"
2002+
2003+
// закрытие модального окна (через/посредствам Bootstrap API)
2004+
const bootstrapModal = bootstrap.Modal.getInstance(
2005+
modalBodyForm.closest('.modal')
2006+
);
2007+
if (bootstrapModal) {
2008+
bootstrapModal.hide();
2009+
}
2010+
2011+
// и напоследок.. выделение/показ только что добавленного клиента/строки
2012+
setTimeout(() => {
2013+
// movingToLastNewTableRow();
2014+
}, 300); // временная задержка, больше.. чтобы модальное окно успело закрыться
19832015
}, 200);
19842016
}
19852017
},

core-courses/3-js-basic-level/practicum-js-basic-level/sb-crm-client/js/temp.js

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,46 @@ function handleModalFormSubmit(context = {}) {
102102
);
103103
}
104104

105+
// ? ВАРИАНТ функции handleModalFormSubmit() с которым было "ЗЕЛЁНОЕ" выделение контактных инпутов
106+
function handleModalFormSubmit(context = {}) {
107+
const { modalBodyForm, type, clientData } = context; // получение необходимых элементов (через деструктуризациию входящего/передаваемого объекта)
108+
109+
// проверка наличия входящих аргументов/параметров (нет.. возврат)
110+
if (!modalBodyForm || !type || !clientData) {
111+
console.error(
112+
'Событие "submit" невозможно.. недостаточно входящих параметров!?'
113+
);
114+
return;
115+
}
116+
117+
// [СЕРВЕР] / обработка события "submit"
118+
modalBodyForm.addEventListener(
119+
'submit',
120+
async (event) => {
121+
event.preventDefault();
122+
123+
// отработка "дополнительной" валидации инпутов/формы, в момент "submit" (т.е. при прожатии "Сохранить", всё ли корректно/заполнено)
124+
const allModalInputs = modalBodyForm.querySelectorAll('.modal-input');
125+
const validErrors = additionalFormInputsValidation(
126+
allModalInputs,
127+
modalBodyForm
128+
);
129+
130+
if (!modalBodyForm.checkValidity() || validErrors.length > 0) {
131+
event.stopPropagation();
132+
modalBodyForm.classList.add('was-validated');
133+
} else {
134+
// вывод сообщения об успешном добавлении клиента (после перерисовки таблицы)
135+
setTimeout(() => {
136+
alert('Клиент успешно добавлен!');
137+
// movingToLastNewTableRow(); // выделение/показ только что добавленного клиента/строки
138+
}, 200);
139+
}
140+
},
141+
false
142+
);
143+
}
144+
105145
// !!
106146
function handleModalFormSubmit(context = {}) {
107147
const { modalBodyForm, type, clientData } = context; // получение необходимых элементов

0 commit comments

Comments
 (0)