Skip to content

Commit dd47a36

Browse files
committed
[PRAC/cont] Continue transition to "universal" m..
Adding logic to initialize "universal" modal-window by Bootstrap API. Worth noting: - return modal window from a function, i.e. adding it to the DOM, only/after clicking. core: B-3 / JS-BL
1 parent 26ac41e commit dd47a36

File tree

1 file changed

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

1 file changed

+13
-18
lines changed

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

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
(() => {
22
// ** получение существующих, создание "новых" элементов (глобальное объявление)
3-
const crm = document.getElementById('crm');
4-
const crmSearch = document.getElementById('crm-search');
5-
const crmOutput = document.getElementById('crm-output');
6-
const crmAdd = document.getElementById('crm-add');
73
const crmSearchContainer = document.querySelector('.crm__search-container');
84
const crmOutputContainer = document.querySelector('.crm__output-container');
95
const crmAddContainer = document.querySelector('.crm__add-container');
@@ -231,7 +227,7 @@
231227
outputTable.append(outTableHead, outTableBody);
232228
crmOutputContainer.append(outputTitleWrap, outputTable);
233229

234-
// организация кнопки для добавления "нового" клиента (последующее открытие модального окна)
230+
// ** организация кнопки для добавления "нового" клиента (последующее открытие модального окна)
235231
const addBtnWrap = document.createElement('div');
236232
const addBtn = document.createElement('button');
237233
const addBtnIcon = document.createElement('i');
@@ -242,21 +238,23 @@
242238

243239
addBtn.setAttribute('id', 'add-btn');
244240
addBtn.setAttribute('type', 'button');
245-
addBtn.setAttribute('data-bs-toggle', 'modal');
246-
// ! нужно как то увязать id для этой кнопки, т.е. это id от modalWrap который по сути ещё не создан??
247-
// ! нужна наверное функция, которая через клик по этой кнопке будет инициировать..
248-
// ! const bootstrapModal = new bootstrap.Modal(modal);
249-
// ! bootstrapModal.show();
250-
addBtn.setAttribute('data-bs-target', '#add-modal');
251241

252242
addBtn.textContent = 'Добавить клиента';
253243

254244
addBtn.append(addBtnIcon);
255245
addBtnWrap.append(addBtn);
256246
crmAddContainer.append(addBtnWrap);
257247

258-
// основные блоки/составляющие элементы приложения
259-
crm.append(crmSearch, crmOutput, crmAdd);
248+
// обработка клика по кнопке, создание/отображение модального окна
249+
addBtn.addEventListener('click', () => {
250+
const modalWrap = createModalWindowByType('add'); // создание по типу "add"
251+
252+
crmAddContainer.append(modalWrap); // добавление в DOM
253+
254+
// инициализация через Bootstrap API
255+
const bootstrapModal = new bootstrap.Modal(modalWrap);
256+
bootstrapModal.show(); // отображение
257+
});
260258

261259
// ** появление/скрытие поля для ввода данных/фильтрационного инпута (по нажатию на logo, на 320px)
262260
searchLogoImg.addEventListener('click', () => {
@@ -1142,12 +1140,9 @@
11421140
modalContent.append(modalHeader, modalBody, modalFooter);
11431141
modalDialog.append(modalContent);
11441142
modalWrap.append(modalDialog);
1145-
crmAddContainer.append(modalWrap);
1146-
}
11471143

1148-
addBtn.addEventListener('click', () => {
1149-
createModalWindowByType('add');
1150-
});
1144+
return modalWrap; // возврат модального окна (т.е. здесь/без добавления в DOM.. позже, при клике)
1145+
}
11511146

11521147
// ! корректировка
11531148
// ** организация принудительного удаления атрибута aria-hidden="true" с модальных окон (исключение ошибок с ARIA)

0 commit comments

Comments
 (0)