Skip to content

Commit c436941

Browse files
committed
[PRAC/cont] Add limits to "add-modal" contacts
Entering limits on total num of "add-modal" contacts (not more than 10). Worth noting: - doubts.. to enter unique IDs for inputs or not (at this stage, at all)? core: B-3 / JS-BL
1 parent 7c1283f commit c436941

File tree

1 file changed

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

1 file changed

+27
-5
lines changed

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

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -604,7 +604,12 @@
604604
addModalFormInputValidation(allAddModalFormInputs);
605605

606606
// ** динамическое добавление строки контактов в add-модальном окне (по нажатию "Добавить контакт" кнопки)
607+
const addModalContactsArr = [];
608+
607609
function createAddModalContactsElement() {
610+
// проверка количества контактов (не более 10)
611+
if (addModalContactsArr.length >= 10) return;
612+
608613
const addModalContactElement = document.createElement('div');
609614
addModalContactElement.classList.add(
610615
'modal__add-body-add-contact-element',
@@ -616,8 +621,7 @@
616621
'modal__add-body-add-contact-select',
617622
'form-select'
618623
);
619-
addModalContactSelect.setAttribute('id', 'add-modal-select');
620-
addModalContactSelect.setAttribute('name', 'Client contacts');
624+
addModalContactSelect.setAttribute('name', 'contact-options');
621625
addModalContactSelect.innerHTML = `
622626
<option value="phone" selected>Телефон</option>
623627
<option value="extra-phone">Доп. телефон</option>
@@ -631,9 +635,8 @@
631635
'modal__add-body-add-contact-input',
632636
'form-control'
633637
);
634-
// !! нужно добавлять id.. но всем разные
635-
// addModalContactInput.setAttribute('id', 'add-modal-contact-input');
636638
addModalContactInput.setAttribute('type', 'text');
639+
addModalContactInput.setAttribute('name', 'contact-data');
637640
addModalContactInput.setAttribute('placeholder', 'Введите данные контакта');
638641

639642
const addModalContactXBtn = document.createElement('button');
@@ -662,10 +665,19 @@
662665
// добавление "не большого" эффекта/задержки появления для "новой" строки контактов (элемента)
663666
addModalContactElement.style.opacity = '0';
664667
setTimeout(() => {
665-
addModalContactElement.style.transition = 'opacity 0.3s ease';
668+
addModalContactElement.style.transition = 'opacity 0.1s ease';
666669
addModalContactElement.style.opacity = '1';
667670
}, 10);
668671

672+
// добавление контакта в массив
673+
addModalContactsArr.push(addModalContactElement);
674+
675+
// исключение ещё/прожатия кнопки "Добавить контакт", если контактов/уже 10 (вывод сообщения)
676+
if (addModalContactsArr.length >= 10) {
677+
alert('Десятый контакт.. достаточно!');
678+
addModalBodyAddBtn.disabled = true;
679+
}
680+
669681
// организация удаления строки контактов
670682
addModalContactXBtn.addEventListener('click', (event) => {
671683
event.stopPropagation(); // исключение не предвиденных событий/поведения
@@ -710,6 +722,16 @@
710722
if (confirmed) {
711723
modalContactsElement.remove(); // удаление строки контактов
712724

725+
// удаление строки контактов и из массива
726+
const contactIndex =
727+
addModalContactsArr.indexOf(modalContactsElement);
728+
if (contactIndex > -1) addModalContactsArr.splice(contactIndex, 1);
729+
730+
// проверка на количество элементов в массиве, меньше 10.. возврат возможности прожатия кнопки "Добавить контакт"
731+
if (addModalContactsArr.length < 10) {
732+
addModalBodyAddBtn.disabled = false;
733+
}
734+
713735
// проверка на количество строк контактов (нет, скрытие обвёртки/родителя)
714736
if (
715737
document.querySelectorAll('.modal__add-body-add-contact-element')

0 commit comments

Comments
 (0)