diff --git a/frontends/nextjs/src/components/ComponentConfigDialog.tsx b/frontends/nextjs/src/components/ComponentConfigDialog.tsx index bde7be4e3..80f228a17 100644 --- a/frontends/nextjs/src/components/ComponentConfigDialog.tsx +++ b/frontends/nextjs/src/components/ComponentConfigDialog.tsx @@ -55,7 +55,7 @@ export function ComponentConfigDialog({ node, isOpen, onClose, onSave, nerdMode void loadConfig() }, [node.id, node.type]) - const handleSave = async () => { + const handleSave = useCallback(async () => { const newConfig: ComponentConfig = { id: config?.id || `config_${Date.now()}`, componentId: node.id, @@ -70,20 +70,20 @@ export function ComponentConfigDialog({ node, isOpen, onClose, onSave, nerdMode toast.success('Configuration saved') onSave() - } + }, [config, node.id, props, styles, events, onSave]) const componentDef = componentCatalog.find(c => c.type === node.type) - const renderPropEditor = (propSchema: any) => { + const renderPropEditor = (propSchema: PropDefinition) => { const value = props[propSchema.name] ?? propSchema.defaultValue switch (propSchema.type) { case 'string': return ( setProps({ ...props, [propSchema.name]: e.target.value })} - placeholder={propSchema.defaultValue} + placeholder={String(propSchema.defaultValue || '')} /> ) @@ -91,7 +91,7 @@ export function ComponentConfigDialog({ node, isOpen, onClose, onSave, nerdMode return ( setProps({ ...props, [propSchema.name]: Number(e.target.value) })} /> ) @@ -99,7 +99,7 @@ export function ComponentConfigDialog({ node, isOpen, onClose, onSave, nerdMode case 'boolean': return ( setProps({ ...props, [propSchema.name]: checked })} /> ) @@ -107,14 +107,14 @@ export function ComponentConfigDialog({ node, isOpen, onClose, onSave, nerdMode case 'select': return ( setProps({ ...props, [propSchema.name]: e.target.value })} /> ) @@ -282,7 +282,7 @@ export function ComponentConfigDialog({ node, isOpen, onClose, onSave, nerdMode - +