@explita/daily-toolset-form
Version:
A lightweight form toolkit for React built with developer ergonomics in mind. Includes a flexible Form component, useForm, useField, and useFormContext hooks for managing form state and validation with ease. Designed to simplify complex forms while remain
40 lines (39 loc) • 1.3 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.cn = cn;
exports.createEmptyValues = createEmptyValues;
const zod_1 = __importDefault(require("zod"));
function cn(...classes) {
return classes.filter(Boolean).join(" ");
}
function createEmptyValues(schema) {
if (!schema)
return {};
const shape = schema.shape;
const result = {};
for (const key in shape) {
const field = shape[key];
result[key] = getEmptyValue(field);
}
return result;
}
function getEmptyValue(field) {
if (field instanceof zod_1.default.ZodObject)
return createEmptyValues(field);
if (field instanceof zod_1.default.ZodArray)
return [];
if (field instanceof zod_1.default.ZodBoolean)
return false;
// For strings and numbers, return "" as a neutral empty form value
if (field instanceof zod_1.default.ZodString ||
field instanceof zod_1.default.ZodNumber ||
field instanceof zod_1.default.ZodDate ||
field instanceof zod_1.default.ZodOptional ||
field instanceof zod_1.default.ZodNullable) {
return "";
}
return "";
}