From 570380c5a04c5e2c4942e10742222984fb17bf18 Mon Sep 17 00:00:00 2001 From: Bowen Tan Date: Mon, 25 Jul 2022 17:12:43 +0800 Subject: [PATCH] fix(traitForm): trait form will crash if the trait has a property that is not in its spec --- .../GeneralTraitFormList/GeneralTraitForm.tsx | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/editor/src/components/ComponentForm/GeneralTraitFormList/GeneralTraitForm.tsx b/packages/editor/src/components/ComponentForm/GeneralTraitFormList/GeneralTraitForm.tsx index 3663cd0c..6d0bd7d4 100644 --- a/packages/editor/src/components/ComponentForm/GeneralTraitFormList/GeneralTraitForm.tsx +++ b/packages/editor/src/components/ComponentForm/GeneralTraitFormList/GeneralTraitForm.tsx @@ -3,7 +3,6 @@ import { ComponentSchema, TraitSchema } from '@sunmao-ui/core'; import { HStack, IconButton, VStack } from '@chakra-ui/react'; import { generateDefaultValueFromSpec } from '@sunmao-ui/shared'; import { CloseIcon } from '@chakra-ui/icons'; -import { TSchema } from '@sinclair/typebox'; import { formWrapperCSS } from '../style'; import { EditorServices } from '../../../types'; import { SpecWidget } from '@sunmao-ui/editor-sdk'; @@ -28,7 +27,10 @@ export const GeneralTraitForm: React.FC = props => { ); const fields = Object.keys(properties || []).map((key: string) => { const value = trait.properties[key]; - const propertySpec = (tImpl.spec.properties as TSchema).properties?.[key]; + const propertySpec = tImpl.spec.properties.properties?.[key]; + + if (!propertySpec) return undefined; + const onChange = (newValue: any) => { const operation = genOperation(registry, 'modifyTraitProperty', { componentId: component.id, @@ -41,15 +43,14 @@ export const GeneralTraitForm: React.FC = props => { eventBus.send('operation', operation); }; + const specObj = propertySpec === true ? {} : propertySpec; + return (