|
763 | 763 | // замена/обновление содержимого/контента кнопки, так и через TAB/Enter (согласно значений li/вариантов) |
764 | 764 | addModalContactList.addEventListener('click', (event) => { |
765 | 765 | if (event.target.tagName === 'LI') { |
766 | | - getContactSelection(event.target); // отработка выбора |
| 766 | + getContactDropSelection(event.target); // отработка выбора |
767 | 767 | } |
768 | 768 | }); |
769 | 769 |
|
770 | 770 | addModalContactList.addEventListener('keydown', (event) => { |
771 | 771 | if (event.target.tagName === 'LI' && event.key === 'Enter') { |
772 | 772 | event.preventDefault(); // исключение непредвиденных событий/поведения |
773 | | - getContactSelection(event.target); // отработка выбора |
| 773 | + getContactDropSelection(event.target); // отработка выбора |
774 | 774 | } |
775 | 775 | }); |
776 | 776 |
|
777 | | - function getContactSelection(target) { |
| 777 | + function getContactDropSelection(target) { |
778 | 778 | const selectedItemValue = target.getAttribute('data-value'); |
779 | 779 | addModalContactDropBtn.textContent = target.textContent; |
780 | 780 | addModalContactHiddenInput.value = selectedItemValue; // обновление данных в "скрытом" input (для последующей отправки на сервер) |
| 781 | + addDropPhoneOption(); // добавление li/варианта, как "Телефон" в выпадающий список (если сразу не выбрали) |
781 | 782 | closeBtnDropdown(); // закрытие выпадающего списка |
782 | 783 | addModalContactInput.focus(); // перевод фокуса на соседний инпут (после выбора в выпадающем списке) |
783 | 784 | } |
784 | 785 |
|
| 786 | + function addDropPhoneOption() { |
| 787 | + const isPhoneOption = Array.from(addModalContactList.children).some( |
| 788 | + (item) => item.getAttribute('data-value') === 'phone' |
| 789 | + ); |
| 790 | + |
| 791 | + // проверка на наличие "Телефон(а)" в кнопке, среди li/элементов (удаление/добавление в выпадающий список) |
| 792 | + if (addModalContactDropBtn.textContent === 'Телефон' && isPhoneOption) { |
| 793 | + const phoneOption = addModalContactList.querySelector( |
| 794 | + '[data-value="phone"]' |
| 795 | + ); |
| 796 | + if (phoneOption) phoneOption.remove(); // удаление |
| 797 | + } else if ( |
| 798 | + addModalContactDropBtn.textContent !== 'Телефон' && |
| 799 | + !isPhoneOption |
| 800 | + ) { |
| 801 | + const addModalContactItemPhone = document.createElement('li'); |
| 802 | + addModalContactItemPhone.classList.add( |
| 803 | + 'modal__add-body-add-contact-item', |
| 804 | + 'add-modal-phone-item' |
| 805 | + ); |
| 806 | + addModalContactItemPhone.setAttribute('data-value', 'phone'); |
| 807 | + addModalContactItemPhone.setAttribute('tabindex', '0'); |
| 808 | + addModalContactItemPhone.textContent = 'Телефон'; |
| 809 | + addModalContactList.prepend(addModalContactItemPhone); // добавляем в начало списка |
| 810 | + } |
| 811 | + } |
| 812 | + |
785 | 813 | function closeBtnDropdown() { |
786 | 814 | addModalContactList.classList.add('d-none'); // скрытие выпадающего списка |
787 | 815 | addModalContactDropBtn.classList.remove('arrow-rotate'); // возврат направления стрелки |
|
0 commit comments