|
739 | 739 | addModalContactElement.style.opacity = '1'; |
740 | 740 | }, 10); |
741 | 741 |
|
742 | | - // добавление контакта в массив |
743 | | - addModalContactsArr.push(addModalContactElement); |
| 742 | + addModalContactsArr.push(addModalContactElement); // добавление контакта во внешний/глобальный массив |
744 | 743 |
|
745 | 744 | // исключение ещё/прожатия кнопки "Добавить контакт", если контактов/уже 10 (вывод сообщения) |
746 | 745 | if (addModalContactsArr.length >= 10) { |
|
750 | 749 |
|
751 | 750 | // показ/скрытие выпадающего списка вариантов/контактов |
752 | 751 | addModalContactDropBtn.addEventListener('click', (event) => { |
753 | | - event.currentTarget.focus(); // добавление фокуса кнопке (до момента выбора) |
754 | 752 | event.currentTarget.classList.toggle('arrow-rotate'); // переключение направления стрелки |
755 | 753 | addModalContactList.classList.toggle('d-none'); |
| 754 | + |
| 755 | + if (!addModalContactList.classList.contains('d-none')) { |
| 756 | + event.currentTarget.focus(); // добавление фокуса кнопке (до момента выбора) |
| 757 | + } |
756 | 758 | }); |
757 | 759 |
|
758 | 760 | const allModalContactsListItems = document.querySelectorAll( |
759 | 761 | '.modal__add-body-add-contact-item' |
760 | 762 | ); |
761 | 763 |
|
762 | | - // замена/обновление содержимого/контента кнопки (согласно значений li/вариантов) |
| 764 | + // замена/обновление содержимого/контента кнопки, так и через TAB/Enter (согласно значений li/вариантов) |
763 | 765 | addModalContactList.addEventListener('click', (event) => { |
764 | 766 | if (event.target.tagName === 'LI') { |
765 | | - const selectedItemValue = event.target.getAttribute('data-value'); |
766 | | - addModalContactDropBtn.textContent = event.target.textContent; |
767 | | - addModalContactList.classList.add('d-none'); // скрытие выпадающего списка |
768 | | - addModalContactDropBtn.classList.remove('arrow-rotate'); // возврат направления стрелки |
769 | | - addModalContactHiddenInput.value = selectedItemValue; // обновление данных в "скрытом" input (для последующей отправки на сервер) |
| 767 | + getContactSelection(event.target); // отработка выбора |
| 768 | + } |
| 769 | + }); |
| 770 | + |
| 771 | + addModalContactList.addEventListener('keydown', (event) => { |
| 772 | + if (event.target.tagName === 'LI' && event.key === 'Enter') { |
| 773 | + event.preventDefault(); // исключение непредвиденных событий/поведения |
| 774 | + getContactSelection(event.target); // отработка выбора |
770 | 775 | } |
771 | 776 | }); |
772 | 777 |
|
| 778 | + function getContactSelection(target) { |
| 779 | + const selectedItemValue = target.getAttribute('data-value'); |
| 780 | + addModalContactDropBtn.textContent = target.textContent; |
| 781 | + addModalContactHiddenInput.value = selectedItemValue; // обновление данных в "скрытом" input (для последующей отправки на сервер) |
| 782 | + closeBtnDropdown(); // закрытие выпадающего списка |
| 783 | + } |
| 784 | + |
| 785 | + function closeBtnDropdown() { |
| 786 | + addModalContactList.classList.add('d-none'); // скрытие выпадающего списка |
| 787 | + addModalContactDropBtn.classList.remove('arrow-rotate'); // возврат направления стрелки |
| 788 | + addModalContactDropBtn.blur(); // снятие фокуса с кнопки (после выбора) |
| 789 | + } |
| 790 | + |
773 | 791 | // организация удаления строки контактов |
774 | 792 | addModalContactXBtn.addEventListener('click', (event) => { |
775 | | - event.stopPropagation(); // исключение не предвиденных событий/поведения |
| 793 | + event.stopPropagation(); // исключение непредвиденных событий/поведения |
776 | 794 | deleteModalContactsElement(event); // удаление строки контактов (посредствам "X" кнопки) |
777 | 795 | }); |
778 | 796 |
|
779 | 797 | // организация удаления строки контактов и через TAB/Enter |
780 | 798 | addModalContactXBtn.addEventListener('keydown', (event) => { |
781 | 799 | if (event.key === 'Enter') { |
782 | | - event.stopPropagation(); // исключение не предвиденных событий/поведения |
| 800 | + event.stopPropagation(); // исключение непредвиденных событий/поведения |
783 | 801 | deleteModalContactsElement(event); // удаление строки контактов (посредствам "X" кнопки) |
784 | 802 | } |
785 | 803 | }); |
|
0 commit comments