From 013de088a0890709b93081527e7aaf4206236e61 Mon Sep 17 00:00:00 2001 From: johndoe6345789 Date: Sun, 18 Jan 2026 01:14:53 +0000 Subject: [PATCH] Add shared JSON UI renderer types --- src/lib/json-ui/renderer.tsx | 25 ++++++------------------- src/lib/json-ui/types.ts | 17 +++++++++++++++++ 2 files changed, 23 insertions(+), 19 deletions(-) create mode 100644 src/lib/json-ui/types.ts diff --git a/src/lib/json-ui/renderer.tsx b/src/lib/json-ui/renderer.tsx index 846fa8d..c52e48d 100644 --- a/src/lib/json-ui/renderer.tsx +++ b/src/lib/json-ui/renderer.tsx @@ -1,16 +1,9 @@ import React, { useCallback } from 'react' -import { UIComponent, EventHandler } from './schema' +import type { EventHandler, JSONFormRendererProps, JSONUIRendererProps, UIComponent } from './types' import { getUIComponent } from './component-registry' import { resolveDataBinding, evaluateCondition, mergeClassNames } from './utils' import { cn } from '@/lib/utils' -export interface JSONUIRendererProps { - component: UIComponent - dataMap?: Record - onAction?: (handler: EventHandler, event?: any) => void - context?: Record -} - export function JSONUIRenderer({ component, dataMap = {}, @@ -50,7 +43,7 @@ export function JSONUIRenderer({ onAction={onAction} context={loopContext} /> - ) + )} })} ) @@ -123,15 +116,8 @@ export function JSONUIRenderer({ ) } -export interface JSONFormRendererProps { - formData: any - fields: any[] - onSubmit: (data: any) => void - onChange?: (data: any) => void -} - export function JSONFormRenderer({ formData, fields, onSubmit, onChange }: JSONFormRendererProps) { - const handleFieldChange = useCallback((fieldName: string, value: any) => { + const handleFieldChange = useCallback((fieldName: string, value: unknown) => { const newData = { ...formData, [fieldName]: value } onChange?.(newData) }, [formData, onChange]) @@ -175,12 +161,13 @@ export function JSONFormRenderer({ formData, fields, onSubmit, onChange }: JSONF dataMap={{}} onAction={(handler, event) => { if (handler.action === 'field-change') { - handleFieldChange(field.name, event.target.value) + const targetValue = (event as { target?: { value?: unknown } } | undefined)?.target?.value + handleFieldChange(field.name, targetValue) } }} /> - ) + )} })} ) diff --git a/src/lib/json-ui/types.ts b/src/lib/json-ui/types.ts new file mode 100644 index 0000000..d3f4b01 --- /dev/null +++ b/src/lib/json-ui/types.ts @@ -0,0 +1,17 @@ +import type { EventHandler, FormField, UIComponent } from './schema' + +export type { EventHandler, FormField, UIComponent } + +export interface JSONUIRendererProps { + component: UIComponent + dataMap?: Record + onAction?: (handler: EventHandler, event?: unknown) => void + context?: Record +} + +export interface JSONFormRendererProps { + formData: Record + fields: FormField[] + onSubmit: (data: Record) => void + onChange?: (data: Record) => void +}