Параллельные шаги (#3)

Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/timur.gorodetskiy/request-portal/pulls/3
This commit was merged in pull request #3.
This commit is contained in:
2026-08-06 12:36:22 +00:00
parent 40f9ac6c03
commit df9d12622d
24 changed files with 967 additions and 175 deletions
@@ -0,0 +1,33 @@
// Есть ли в открытой форме «Новая заявка» правки, которые ещё не сохранены.
//
// Нужно, потому что раздел «Новая заявка» держится смонтированным при
// переключении вкладок (см. RequestPortal.tsx), и единственное, что реально
// пересоздаёт форму, — переход «создать на основе». Перед ним и спрашиваем,
// но только если терять действительно есть что.
//
// Флаг ставится по факту пользовательского ввода (событие input/change из
// раздела формы — см. RequestPortal), а снимается после сохранения: черновик
// тоже считается сохранением, форма зовёт onSaved и в обоих случаях
// («Сохранить черновик» и «Отправить»), см. forms/*/Form.tsx.
let dirty = false;
export function markFormDirty(): void {
dirty = true;
}
export function markFormClean(): void {
dirty = false;
}
export function hasUnsavedFormChanges(): boolean {
return dirty;
}
// Спросить подтверждение, если несохранённые правки есть. true — можно
// продолжать (правок нет либо пользователь согласился их потерять).
export function confirmDiscardFormChanges(): boolean {
if (!dirty) return true;
return window.confirm(
'В открытой форме «Новая заявка» есть несохранённые изменения — они будут потеряны. Продолжить?'
);
}