analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
178 lines (177 loc) • 6.39 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/components/SendActivityModal/validation.ts
var validation_exports = {};
__export(validation_exports, {
ERROR_MESSAGES: () => ERROR_MESSAGES,
activityStepSchema: () => activityStepSchema,
deadlineStepSchema: () => deadlineStepSchema,
isFormValid: () => isFormValid,
isStepValid: () => isStepValid,
recipientStepSchema: () => recipientStepSchema,
validateActivityStep: () => validateActivityStep,
validateDeadlineStep: () => validateDeadlineStep,
validateRecipientStep: () => validateRecipientStep,
validateStep: () => validateStep
});
module.exports = __toCommonJS(validation_exports);
var import_zod = require("zod");
var ERROR_MESSAGES = {
SUBTYPE_REQUIRED: "Campo obrigat\xF3rio! Por favor, selecione uma op\xE7\xE3o para continuar.",
TITLE_REQUIRED: "Campo obrigat\xF3rio! Por favor, preencha este campo para continuar.",
STUDENTS_REQUIRED: "Campo obrigat\xF3rio! Por favor, selecione pelo menos um aluno para continuar.",
START_DATE_REQUIRED: "Campo obrigat\xF3rio! Por favor, preencha este campo para continuar.",
FINAL_DATE_REQUIRED: "Campo obrigat\xF3rio! Por favor, preencha este campo para continuar.",
FINAL_DATE_INVALID: "A data final deve ser maior ou igual \xE0 data inicial."
};
var activityStepSchema = import_zod.z.object({
subtype: import_zod.z.enum(["TAREFA", "TRABALHO", "PROVA"], {
errorMap: () => ({ message: ERROR_MESSAGES.SUBTYPE_REQUIRED })
}),
title: import_zod.z.string({ required_error: ERROR_MESSAGES.TITLE_REQUIRED }).transform((val) => val.trim()).refine((val) => val.length > 0, {
message: ERROR_MESSAGES.TITLE_REQUIRED
}),
notification: import_zod.z.string().optional()
});
var recipientStepSchema = import_zod.z.object({
students: import_zod.z.array(
import_zod.z.object({
studentId: import_zod.z.string(),
userInstitutionId: import_zod.z.string()
}),
{
required_error: ERROR_MESSAGES.STUDENTS_REQUIRED,
invalid_type_error: ERROR_MESSAGES.STUDENTS_REQUIRED
}
).min(1, ERROR_MESSAGES.STUDENTS_REQUIRED)
});
var DATE_REGEX = /^\d{4}-\d{2}-\d{2}$/;
var TIME_REGEX = /^\d{2}:\d{2}$/;
var deadlineStepBaseSchema = import_zod.z.object({
startDate: import_zod.z.string({
required_error: ERROR_MESSAGES.START_DATE_REQUIRED,
invalid_type_error: ERROR_MESSAGES.START_DATE_REQUIRED
}).min(1, ERROR_MESSAGES.START_DATE_REQUIRED).regex(DATE_REGEX, ERROR_MESSAGES.START_DATE_REQUIRED),
startTime: import_zod.z.string().regex(TIME_REGEX).default("00:00"),
finalDate: import_zod.z.string({
required_error: ERROR_MESSAGES.FINAL_DATE_REQUIRED,
invalid_type_error: ERROR_MESSAGES.FINAL_DATE_REQUIRED
}).min(1, ERROR_MESSAGES.FINAL_DATE_REQUIRED).regex(DATE_REGEX, ERROR_MESSAGES.FINAL_DATE_REQUIRED),
finalTime: import_zod.z.string().regex(TIME_REGEX).default("23:59"),
canRetry: import_zod.z.boolean().default(false)
});
var deadlineStepSchema = deadlineStepBaseSchema.refine(
(data) => {
const start = /* @__PURE__ */ new Date(`${data.startDate}T${data.startTime}`);
const end = /* @__PURE__ */ new Date(`${data.finalDate}T${data.finalTime}`);
return end >= start;
},
{ message: ERROR_MESSAGES.FINAL_DATE_INVALID, path: ["finalDate"] }
);
function validateActivityStep(data) {
const errors = {};
const result = activityStepSchema.safeParse({
subtype: data.subtype,
title: data.title,
notification: data.notification
});
if (!result.success) {
result.error.issues.forEach((issue) => {
const field = issue.path[0];
if (field === "subtype" || field === "title") {
errors[field] = issue.message;
}
});
}
return errors;
}
function validateRecipientStep(data) {
const errors = {};
const result = recipientStepSchema.safeParse({
students: data.students ?? []
});
if (!result.success) {
result.error.issues.forEach((issue) => {
if (issue.path[0] === "students") {
errors.students = issue.message;
}
});
}
return errors;
}
function validateDeadlineStep(data) {
const errors = {};
if (!data.startDate) {
errors.startDate = ERROR_MESSAGES.START_DATE_REQUIRED;
}
if (!data.finalDate) {
errors.finalDate = ERROR_MESSAGES.FINAL_DATE_REQUIRED;
}
if (data.startDate && data.finalDate) {
const result = deadlineStepSchema.safeParse({
startDate: data.startDate,
startTime: data.startTime ?? "00:00",
finalDate: data.finalDate,
finalTime: data.finalTime ?? "23:59",
canRetry: data.canRetry ?? false
});
if (!result.success) {
result.error.issues.forEach((issue) => {
const field = issue.path[0];
if (field === "startDate" || field === "finalDate") {
errors[field] = issue.message;
}
});
}
}
return errors;
}
function validateStep(step, data) {
switch (step) {
case 1:
return validateActivityStep(data);
case 2:
return validateRecipientStep(data);
case 3:
return validateDeadlineStep(data);
default:
return {};
}
}
function isStepValid(step, data) {
const errors = validateStep(step, data);
return Object.keys(errors).length === 0;
}
function isFormValid(data) {
return isStepValid(1, data) && isStepValid(2, data) && isStepValid(3, data);
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
ERROR_MESSAGES,
activityStepSchema,
deadlineStepSchema,
isFormValid,
isStepValid,
recipientStepSchema,
validateActivityStep,
validateDeadlineStep,
validateRecipientStep,
validateStep
});
//# sourceMappingURL=validation.js.map