Заявление на увольнение (#15)
Tests / frontend-test (push) Successful in 1m17s

Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/timur.gorodetskiy/request-portal/pulls/15
This commit was merged in pull request #15.
This commit is contained in:
2026-08-26 07:07:03 +00:00
parent f751f03060
commit df29d080ed
39 changed files with 2460 additions and 46 deletions
@@ -9,6 +9,22 @@ export function isoDatePlusDays(days: number): string {
return `${d.getFullYear()}-${pad2(d.getMonth() + 1)}-${pad2(d.getDate())}`;
}
/**
* Сегодня + n КАЛЕНДАРНЫХ месяцев в формате YYYY-MM-DD (для min/max у input
* type=date) — не приближение через 30 дней: `setMonth` сам разносит месяцы
* разной длины (28–31 день) и года на границе декабря/января.
*
* 31 января + 1 месяц → JS даёт 3 марта (переносит лишние дни на следующий
* месяц, а не откатывает до последнего числа) — для месячного уведомления это
* не проблема (крайняя ранняя дата и так сдвигается на несколько дней позже,
* не раньше), но не считать это «ровно через месяц» в общем случае.
*/
export function isoDatePlusMonths(months: number): string {
const d = new Date();
d.setMonth(d.getMonth() + months);
return `${d.getFullYear()}-${pad2(d.getMonth() + 1)}-${pad2(d.getDate())}`;
}
/** YYYY-MM-DD → дд.мм.гггг, для текста ошибок валидации. Невалидную строку возвращает как есть. */
export function formatIsoDate(iso: string): string {
const [y, m, d] = iso.split('-');