Fix formatting
This commit is contained in:
@@ -16,7 +16,14 @@ export type JsonValue =
|
|||||||
| { [key: string]: JsonValue };
|
| { [key: string]: JsonValue };
|
||||||
|
|
||||||
export type JsonSchemaType = {
|
export type JsonSchemaType = {
|
||||||
type: "string" | "number" | "integer" | "boolean" | "array" | "object" | "null";
|
type:
|
||||||
|
| "string"
|
||||||
|
| "number"
|
||||||
|
| "integer"
|
||||||
|
| "boolean"
|
||||||
|
| "array"
|
||||||
|
| "object"
|
||||||
|
| "null";
|
||||||
description?: string;
|
description?: string;
|
||||||
required?: boolean;
|
required?: boolean;
|
||||||
default?: JsonValue;
|
default?: JsonValue;
|
||||||
@@ -261,11 +268,11 @@ const DynamicJsonForm = ({
|
|||||||
size="sm"
|
size="sm"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
const defaultValue = generateDefaultValue(
|
const defaultValue = generateDefaultValue(
|
||||||
propSchema.items as JsonSchemaType
|
propSchema.items as JsonSchemaType,
|
||||||
);
|
);
|
||||||
handleFieldChange(path, [
|
handleFieldChange(path, [
|
||||||
...arrayValue,
|
...arrayValue,
|
||||||
defaultValue ?? null
|
defaultValue ?? null,
|
||||||
]);
|
]);
|
||||||
}}
|
}}
|
||||||
title={
|
title={
|
||||||
|
|||||||
@@ -19,7 +19,9 @@ describe("generateDefaultValue", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test("generates default boolean", () => {
|
test("generates default boolean", () => {
|
||||||
expect(generateDefaultValue({ type: "boolean", required: true })).toBe(false);
|
expect(generateDefaultValue({ type: "boolean", required: true })).toBe(
|
||||||
|
false,
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
test("generates default array", () => {
|
test("generates default array", () => {
|
||||||
@@ -27,12 +29,16 @@ describe("generateDefaultValue", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test("generates default empty object", () => {
|
test("generates default empty object", () => {
|
||||||
expect(generateDefaultValue({ type: "object", required: true })).toEqual({});
|
expect(generateDefaultValue({ type: "object", required: true })).toEqual(
|
||||||
|
{},
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
test("generates default null for unknown types", () => {
|
test("generates default null for unknown types", () => {
|
||||||
// @ts-expect-error Testing with invalid type
|
// @ts-expect-error Testing with invalid type
|
||||||
expect(generateDefaultValue({ type: "unknown", required: true })).toBe(null);
|
expect(generateDefaultValue({ type: "unknown", required: true })).toBe(
|
||||||
|
null,
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
test("generates object with properties", () => {
|
test("generates object with properties", () => {
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import { JsonObject } from "./jsonPathUtils";
|
|||||||
* @returns A default value matching the schema type, or null for non-required fields
|
* @returns A default value matching the schema type, or null for non-required fields
|
||||||
*/
|
*/
|
||||||
export function generateDefaultValue(schema: JsonSchemaType): JsonValue {
|
export function generateDefaultValue(schema: JsonSchemaType): JsonValue {
|
||||||
|
|
||||||
if ("default" in schema) {
|
if ("default" in schema) {
|
||||||
// Ensure we don't return undefined even if schema.default is undefined
|
// Ensure we don't return undefined even if schema.default is undefined
|
||||||
return schema.default === undefined ? null : schema.default;
|
return schema.default === undefined ? null : schema.default;
|
||||||
@@ -29,7 +28,7 @@ export function generateDefaultValue(schema: JsonSchemaType): JsonValue {
|
|||||||
return [];
|
return [];
|
||||||
case "object": {
|
case "object": {
|
||||||
if (!schema.properties) return {};
|
if (!schema.properties) return {};
|
||||||
|
|
||||||
const obj: JsonObject = {};
|
const obj: JsonObject = {};
|
||||||
Object.entries(schema.properties)
|
Object.entries(schema.properties)
|
||||||
.filter(([, prop]) => prop.required)
|
.filter(([, prop]) => prop.required)
|
||||||
|
|||||||
Reference in New Issue
Block a user