|
604 | 604 | addModalFormInputValidation(allAddModalFormInputs); |
605 | 605 |
|
606 | 606 | // ** динамическое добавление строки контактов в add-модальном окне (по нажатию "Добавить контакт" кнопки) |
| 607 | + const addModalContactsArr = []; |
| 608 | + |
607 | 609 | function createAddModalContactsElement() { |
| 610 | + // проверка количества контактов (не более 10) |
| 611 | + if (addModalContactsArr.length >= 10) return; |
| 612 | + |
608 | 613 | const addModalContactElement = document.createElement('div'); |
609 | 614 | addModalContactElement.classList.add( |
610 | 615 | 'modal__add-body-add-contact-element', |
|
616 | 621 | 'modal__add-body-add-contact-select', |
617 | 622 | 'form-select' |
618 | 623 | ); |
619 | | - addModalContactSelect.setAttribute('id', 'add-modal-select'); |
620 | | - addModalContactSelect.setAttribute('name', 'Client contacts'); |
| 624 | + addModalContactSelect.setAttribute('name', 'contact-options'); |
621 | 625 | addModalContactSelect.innerHTML = ` |
622 | 626 | <option value="phone" selected>Телефон</option> |
623 | 627 | <option value="extra-phone">Доп. телефон</option> |
|
631 | 635 | 'modal__add-body-add-contact-input', |
632 | 636 | 'form-control' |
633 | 637 | ); |
634 | | - // !! нужно добавлять id.. но всем разные |
635 | | - // addModalContactInput.setAttribute('id', 'add-modal-contact-input'); |
636 | 638 | addModalContactInput.setAttribute('type', 'text'); |
| 639 | + addModalContactInput.setAttribute('name', 'contact-data'); |
637 | 640 | addModalContactInput.setAttribute('placeholder', 'Введите данные контакта'); |
638 | 641 |
|
639 | 642 | const addModalContactXBtn = document.createElement('button'); |
|
662 | 665 | // добавление "не большого" эффекта/задержки появления для "новой" строки контактов (элемента) |
663 | 666 | addModalContactElement.style.opacity = '0'; |
664 | 667 | setTimeout(() => { |
665 | | - addModalContactElement.style.transition = 'opacity 0.3s ease'; |
| 668 | + addModalContactElement.style.transition = 'opacity 0.1s ease'; |
666 | 669 | addModalContactElement.style.opacity = '1'; |
667 | 670 | }, 10); |
668 | 671 |
|
| 672 | + // добавление контакта в массив |
| 673 | + addModalContactsArr.push(addModalContactElement); |
| 674 | + |
| 675 | + // исключение ещё/прожатия кнопки "Добавить контакт", если контактов/уже 10 (вывод сообщения) |
| 676 | + if (addModalContactsArr.length >= 10) { |
| 677 | + alert('Десятый контакт.. достаточно!'); |
| 678 | + addModalBodyAddBtn.disabled = true; |
| 679 | + } |
| 680 | + |
669 | 681 | // организация удаления строки контактов |
670 | 682 | addModalContactXBtn.addEventListener('click', (event) => { |
671 | 683 | event.stopPropagation(); // исключение не предвиденных событий/поведения |
|
710 | 722 | if (confirmed) { |
711 | 723 | modalContactsElement.remove(); // удаление строки контактов |
712 | 724 |
|
| 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 | + |
713 | 735 | // проверка на количество строк контактов (нет, скрытие обвёртки/родителя) |
714 | 736 | if ( |
715 | 737 | document.querySelectorAll('.modal__add-body-add-contact-element') |
|
0 commit comments