@inkline/inkline
Version:
Inkline is the intuitive UI Components library that gives you a developer-friendly foundation for building high-quality, accessible, and customizable Vue.js 3 Design Systems.
26 lines (25 loc) • 812 B
JavaScript
import { createFormFieldSchema } from "@inkline/inkline/validation";
import { defaultValidationStateValues } from "@inkline/inkline/constants";
export function createSchemaFromDefaults(defaultValues) {
const resolved = {
...defaultValidationStateValues
};
for (const key of Object.keys(defaultValues)) {
const field = defaultValues[key];
if (Array.isArray(field)) {
resolved[key] = field.map((item) => {
if (typeof item === "object") {
return createSchemaFromDefaults(item);
}
return createFormFieldSchema({ value: item });
});
} else if (typeof field === "object") {
resolved[key] = createSchemaFromDefaults(field);
} else {
resolved[key] = createFormFieldSchema({
value: field
});
}
}
return resolved;
}