Skip to content

Commit 36cbcf2

Browse files
committed
[PRAC/cont] Fix order of msg/cc/focus at "submit"
Correct/add step-by-step setTimeout(), valid.. msg, clear/close, focus. Worth noting: - that before these changes the modal inputs were not correctly/incompletely highlighted (no stroke/borders). core: B-3 / JS-BL
1 parent 092d0a2 commit 36cbcf2

File tree

1 file changed

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

1 file changed

+26
-25
lines changed

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

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2759,43 +2759,44 @@
27592759
try {
27602760
if (type === 'add') {
27612761
await addClientToServer(client); // отправка клиента на сервер
2762-
alert('Клиент успешно добавлен!');
27632762
} else if (type === 'edit' && clientData.id) {
27642763
await editClientOnServer(clientData.id, client); // изменение данных клиента на сервере
2765-
alert('Клиент успешно обновлён!');
27662764
} else {
27672765
throw new Error(
27682766
'Неизвестный тип модального окна или отсутствует ID клиента!'
27692767
);
27702768
}
27712769

2770+
// по-шаговая отработка setTimeout/задержек, т.е. валидное выделение формы/инпутов и потом/уже.. вывод сообщений, очистка/закрытие, перемещение фокуса
27722771
setTimeout(() => {
2773-
// очистка всех полей формы (удаление классов/сообщений ошибок)
2774-
allModalInputs.forEach((input) => {
2775-
input.value = '';
2776-
input.classList.remove('is-invalid');
2777-
});
2778-
modalBodyForm.classList.remove('was-validated'); // удаление класса "was-validated"
2779-
2780-
// закрытие модального окна (через/посредствам Bootstrap API)
2781-
const bootstrapModal = bootstrap.Modal.getInstance(
2782-
modalBodyForm.closest('.modal')
2772+
alert(
2773+
type === 'add'
2774+
? 'Клиент успешно добавлен!'
2775+
: 'Клиент успешно обновлён!'
27832776
);
2784-
if (bootstrapModal) {
2785-
bootstrapModal.hide();
2786-
}
27872777

2788-
// выделение/показ только что добавленного/от редактируемого клиента/строки (исходя из типа)
2789-
if (type === 'add') {
2790-
setTimeout(() => {
2791-
moveToAndHighlightClientRow('add'); // перемещение фокуса на только, что добавленного клиента
2792-
}, 300); // временная задержка, больше.. чтобы модальное окно успело закрыться
2793-
} else if (type === 'edit' && clientData.id) {
2778+
setTimeout(() => {
2779+
// очистка всех полей формы (удаление классов/сообщений ошибок)
2780+
allModalInputs.forEach((input) => {
2781+
input.value = '';
2782+
input.classList.remove('is-invalid');
2783+
});
2784+
modalBodyForm.classList.remove('was-validated'); // удаление класса "was-validated"
2785+
2786+
// закрытие модального окна (через/посредствам Bootstrap API)
2787+
const bootstrapModal = bootstrap.Modal.getInstance(
2788+
modalBodyForm.closest('.modal')
2789+
);
2790+
if (bootstrapModal) {
2791+
bootstrapModal.hide();
2792+
}
2793+
2794+
// выделение/показ только что добавленного/от редактируемого клиента/строки (исходя из типа)
27942795
setTimeout(() => {
2795-
moveToAndHighlightClientRow('edit', clientData.id); // перемещение фокуса на только, что от редактируемого клиента
2796+
moveToAndHighlightClientRow(type, clientData.id); // перемещение фокуса на только, что добавленного/изменённого клиента
27962797
}, 300); // временная задержка, больше.. чтобы модальное окно успело закрыться
2797-
}
2798-
}, 200);
2798+
}, 200);
2799+
}, 100);
27992800
} catch (error) {
28002801
console.error(
28012802
`Ошибка при ${
@@ -3027,6 +3028,6 @@
30273028
td.style.fontWeight = 'normal';
30283029
td.style.color = color;
30293030
});
3030-
}, 2000);
3031+
}, 3000);
30313032
}
30323033
})();

0 commit comments

Comments
 (0)