This is an automated email from the ASF dual-hosted git repository.

marat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git


The following commit(s) were added to refs/heads/main by this push:
     new 2f3336ab Fix #1214
2f3336ab is described below

commit 2f3336abe4e37dbffab1a6c534165029c3b5e3bd
Author: Marat Gubaidullin <[email protected]>
AuthorDate: Wed Apr 3 17:04:42 2024 -0400

    Fix #1214
---
 karavan-app/src/main/webui/src/editor/DesignerEditor.tsx   |  5 +++--
 karavan-designer/src/designer/DesignerStore.ts             |  4 +---
 .../designer/property/property/ComponentPropertyField.tsx  | 14 +++++++-------
 karavan-space/src/designer/DesignerStore.ts                |  4 +---
 .../designer/property/property/ComponentPropertyField.tsx  | 14 +++++++-------
 5 files changed, 19 insertions(+), 22 deletions(-)

diff --git a/karavan-app/src/main/webui/src/editor/DesignerEditor.tsx 
b/karavan-app/src/main/webui/src/editor/DesignerEditor.tsx
index 1ff1e947..cd1ad6f4 100644
--- a/karavan-app/src/main/webui/src/editor/DesignerEditor.tsx
+++ b/karavan-app/src/main/webui/src/editor/DesignerEditor.tsx
@@ -38,7 +38,7 @@ export function DesignerEditor(props: Props) {
     const [files] = useFilesStore((s) => [s.files], shallow);
     const [propertyPlaceholders, setPropertyPlaceholders] = 
useState<string[]>([]);
     const [beans, setBeans] = useState<RegistryBeanDefinition[]>([]);
-    const [key, setKey] = useState<string>(Math.random().toString());
+    const [key, setKey] = useState<string>();
     const [code, setCode] = useState<string>();
 
     useEffect(() => {
@@ -55,6 +55,7 @@ export function DesignerEditor(props: Props) {
             prevState.push(...bs);
             return prevState;
         });
+        setKey(Math.random().toString());
         return () => {
             //save custom kamelet on page unload
             if (props.projectId.includes('kamelets') && file) {
@@ -110,7 +111,7 @@ export function DesignerEditor(props: Props) {
         }
     }
 
-    return (file !== undefined ?
+    return (file !== undefined && key !== undefined ?
             <KaravanDesigner key={key}
                              showCodeTab={true}
                              dark={false}
diff --git a/karavan-designer/src/designer/DesignerStore.ts 
b/karavan-designer/src/designer/DesignerStore.ts
index 40418fb1..ddd9b91a 100644
--- a/karavan-designer/src/designer/DesignerStore.ts
+++ b/karavan-designer/src/designer/DesignerStore.ts
@@ -310,9 +310,7 @@ export const useDesignerStore = 
createWithEqualityFn<DesignerState & DesignerAct
     },
     setBeans: (beans: RegistryBeanDefinition[]) => {
         set((state: DesignerState) => {
-            state.beans.length = 0;
-            state.beans.push(...beans);
-            return state;
+            return {beans: [...beans]};
         })
     },
 }), shallow)
\ No newline at end of file
diff --git 
a/karavan-designer/src/designer/property/property/ComponentPropertyField.tsx 
b/karavan-designer/src/designer/property/property/ComponentPropertyField.tsx
index 52488a89..5e05ceb7 100644
--- a/karavan-designer/src/designer/property/property/ComponentPropertyField.tsx
+++ b/karavan-designer/src/designer/property/property/ComponentPropertyField.tsx
@@ -114,7 +114,7 @@ export function ComponentPropertyField(props: Props) {
     }
 
     function getSelectBean(property: ComponentProperty, value: any) {
-        const selectOptions: JSX.Element[] = [];
+        const selectOptions: React.JSX.Element[] = [];
         if (beans) {
             selectOptions.push(<SelectOption key={0} value={"Select..."} 
isPlaceholder/>);
             selectOptions.push(...beans.map((bean) => <SelectOption 
key={bean.name} value={beanPrefix + bean.name}
@@ -270,7 +270,7 @@ export function ComponentPropertyField(props: Props) {
                                setTextValue(v);
                                setCheckChanges(true);
                            }}
-               />
+                />
             }
             <InputGroupItem>
                 <Tooltip position="bottom-end" content={"Show Editor"}>
@@ -288,11 +288,11 @@ export function ComponentPropertyField(props: Props) {
                                        title={property.displayName}
                                        onClose={() => setShowEditor(false)}
                                        onSave={(fieldId, value1) => {
-                                 setTextValue(value1);
-                                 parametersChanged(property.name, value1, 
property.kind === 'path')
-                                 setShowEditor(false);
-                                 setCheckChanges(false);
-                             }}/>
+                                           setTextValue(value1);
+                                           parametersChanged(property.name, 
value1, property.kind === 'path')
+                                           setShowEditor(false);
+                                           setCheckChanges(false);
+                                       }}/>
             </InputGroupItem>}
             {property.secret &&
                 <Tooltip position="bottom-end" content={showPassword ? "Hide" 
: "Show"}>
diff --git a/karavan-space/src/designer/DesignerStore.ts 
b/karavan-space/src/designer/DesignerStore.ts
index 40418fb1..ddd9b91a 100644
--- a/karavan-space/src/designer/DesignerStore.ts
+++ b/karavan-space/src/designer/DesignerStore.ts
@@ -310,9 +310,7 @@ export const useDesignerStore = 
createWithEqualityFn<DesignerState & DesignerAct
     },
     setBeans: (beans: RegistryBeanDefinition[]) => {
         set((state: DesignerState) => {
-            state.beans.length = 0;
-            state.beans.push(...beans);
-            return state;
+            return {beans: [...beans]};
         })
     },
 }), shallow)
\ No newline at end of file
diff --git 
a/karavan-space/src/designer/property/property/ComponentPropertyField.tsx 
b/karavan-space/src/designer/property/property/ComponentPropertyField.tsx
index 52488a89..5e05ceb7 100644
--- a/karavan-space/src/designer/property/property/ComponentPropertyField.tsx
+++ b/karavan-space/src/designer/property/property/ComponentPropertyField.tsx
@@ -114,7 +114,7 @@ export function ComponentPropertyField(props: Props) {
     }
 
     function getSelectBean(property: ComponentProperty, value: any) {
-        const selectOptions: JSX.Element[] = [];
+        const selectOptions: React.JSX.Element[] = [];
         if (beans) {
             selectOptions.push(<SelectOption key={0} value={"Select..."} 
isPlaceholder/>);
             selectOptions.push(...beans.map((bean) => <SelectOption 
key={bean.name} value={beanPrefix + bean.name}
@@ -270,7 +270,7 @@ export function ComponentPropertyField(props: Props) {
                                setTextValue(v);
                                setCheckChanges(true);
                            }}
-               />
+                />
             }
             <InputGroupItem>
                 <Tooltip position="bottom-end" content={"Show Editor"}>
@@ -288,11 +288,11 @@ export function ComponentPropertyField(props: Props) {
                                        title={property.displayName}
                                        onClose={() => setShowEditor(false)}
                                        onSave={(fieldId, value1) => {
-                                 setTextValue(value1);
-                                 parametersChanged(property.name, value1, 
property.kind === 'path')
-                                 setShowEditor(false);
-                                 setCheckChanges(false);
-                             }}/>
+                                           setTextValue(value1);
+                                           parametersChanged(property.name, 
value1, property.kind === 'path')
+                                           setShowEditor(false);
+                                           setCheckChanges(false);
+                                       }}/>
             </InputGroupItem>}
             {property.secret &&
                 <Tooltip position="bottom-end" content={showPassword ? "Hide" 
: "Show"}>

Reply via email to