UNPKG

zod-to-fields

Version:

Turn your Zod schemas into configurable field arrays for easy integration with HTML, React, Vue, and more.

55 lines 1.79 kB
const handleZodString = (fieldOptions) => { return { ...fieldOptions, type: fieldOptions.type ?? 'text' }; }; const handleZodNumber = (fieldOptions) => { return { ...fieldOptions, inputMode: fieldOptions.inputMode ?? 'numeric', type: fieldOptions.type ?? 'number', }; }; const handleZodBoolean = (fieldOptions) => { return { ...fieldOptions, type: fieldOptions.type ?? 'checkbox' }; }; const handleZodEnum = (fieldOptions, fieldValue) => { const options = fieldValue._def.values.map(value => ({ label: value.charAt(0).toUpperCase() + value.slice(1), value, })); if (fieldOptions.tag === 'select') { // handle select return { ...fieldOptions, options: fieldOptions.options ?? options, type: fieldOptions.type ?? 'select', }; } else { // handle radio return { ...fieldOptions, type: fieldOptions.type ?? 'checkbox', options: fieldOptions.options ?? options, }; } }; const handleNativeZodEnum = (fieldOptions, fieldValue) => { const options = Object.entries(fieldValue._def.values).map(([key, value]) => ({ label: key.charAt(0).toUpperCase() + key.slice(1), value, })); if (fieldOptions.tag === 'select') { // handle select return { ...fieldOptions, options: fieldOptions.options ?? options }; } else { // handle radio return { ...fieldOptions, type: fieldOptions.type ?? 'checkbox', options: fieldOptions.options ?? options, }; } }; export { handleZodBoolean, handleZodNumber, handleZodString, handleZodEnum, handleNativeZodEnum, }; //# sourceMappingURL=fieldHandlers.js.map