Files
frontend/src/pages/account-income/model/income.schema.ts
T
ksv741 94adbafa34
Frontend verify / commits (pull_request) Successful in 29s
Frontend verify / security (pull_request) Successful in 11s
Frontend verify / verify (pull_request) Successful in 8m43s
refactor: simplify calendar and form state
2026-09-28 20:23:02 +03:00

33 lines
815 B
TypeScript

import { z } from "zod";
import { validationMessage } from "@/shared/i18n";
import { moscowDate } from "@/shared/lib";
import { parseDraftDate } from "./period";
const draftDate = z
.string()
.refine(value => parseDraftDate(value) !== null, {
error: validationMessage("income.validation.date"),
})
.refine(
(value) => {
const date = parseDraftDate(value);
return !date || date <= moscowDate(new Date());
},
{ error: validationMessage("income.validation.future") },
);
const incomeFormSchema = z.object({ from: draftDate, to: draftDate }).refine(
({ from, to }) => {
const start = parseDraftDate(from);
const end = parseDraftDate(to);
return !start || !end || start <= end;
},
{ path: ["to"], ...validationMessage("income.validation.period")({}) },
);
export { incomeFormSchema };