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 95b4a7fa Designer fixes
95b4a7fa is described below

commit 95b4a7faa852097119c90337c7ca4d7d71c9caba
Author: Marat Gubaidullin <ma...@talismancloud.io>
AuthorDate: Tue Nov 12 18:28:17 2024 -0500

    Designer fixes
---
 .../property/property/DslPropertyField.tsx         | 14 +++---
 .../src/designer/route/element/DslElement.tsx      | 23 +++++----
 .../webui/src/designer/selector/DslSelector.tsx    | 54 ++++++++++++----------
 .../property/property/DslPropertyField.tsx         | 14 +++---
 .../src/designer/route/element/DslElement.tsx      | 23 +++++----
 .../src/designer/selector/DslSelector.tsx          | 54 ++++++++++++----------
 .../property/property/DslPropertyField.tsx         | 14 +++---
 .../src/designer/route/element/DslElement.tsx      | 23 +++++----
 .../src/designer/selector/DslSelector.tsx          | 54 ++++++++++++----------
 9 files changed, 150 insertions(+), 123 deletions(-)

diff --git 
a/karavan-app/src/main/webui/src/designer/property/property/DslPropertyField.tsx
 
b/karavan-app/src/main/webui/src/designer/property/property/DslPropertyField.tsx
index 908d2214..c8346056 100644
--- 
a/karavan-app/src/main/webui/src/designer/property/property/DslPropertyField.tsx
+++ 
b/karavan-app/src/main/webui/src/designer/property/property/DslPropertyField.tsx
@@ -322,7 +322,7 @@ export function DslPropertyField(props: Props) {
                            className="text-field route-variable" isRequired
                            type='text'
                            id={property.name} name={property.name}
-                           value={textValue?.toString()}
+                           value={textValue?.toString() || ''}
                            customIcon={property.type !== 'string' ?
                                <Text 
component={TextVariants.p}>{property.type}</Text> : undefined}
                            onBlur={_ => {
@@ -360,7 +360,7 @@ export function DslPropertyField(props: Props) {
                         type={property.secret ? "password" : "text"}
                         autoComplete="off"
                         id={property.name} name={property.name}
-                        value={textValue?.toString()}
+                        value={textValue?.toString() || ''}
                         customIcon={property.type !== 'string' ?
                             <Text 
component={TextVariants.p}>{property.type}</Text> : undefined}
                         onBlur={_ => {
@@ -414,7 +414,7 @@ export function DslPropertyField(props: Props) {
                            type={property.secret ? "password" : "text"}
                            autoComplete="off"
                            id={property.name} name={property.name}
-                           value={textValue?.toString()}
+                           value={textValue?.toString() || ''}
                            customIcon={property.type !== 'string' ?
                                <Text 
component={TextVariants.p}>{property.type}</Text> : undefined}
                            onBlur={_ => {
@@ -639,7 +639,7 @@ export function DslPropertyField(props: Props) {
                         name={property.name + "-placeholder"}
                         type="text"
                         aria-label="placeholder"
-                        value={!isValueBoolean ? textValue?.toString() : 
undefined}
+                        value={!isValueBoolean ? textValue?.toString() : ''}
                         onBlur={_ => propertyChanged(property.name, textValue)}
                         onChange={(_, v) => {
                             setTextValue(v);
@@ -879,7 +879,7 @@ export function DslPropertyField(props: Props) {
         return (
             <div>
                 <TextInputGroup className="input-group">
-                    <TextInputGroupMain value={arrayValues.get(property.name)}
+                    <TextInputGroupMain value={arrayValues.get(property.name) 
|| ''}
                                         onChange={(e, v) => 
arrayChanged(property.name, v)}
                                         onKeyUp={e => {
                                             if (e.key === 'Enter') 
arraySave(property.name)
@@ -1091,7 +1091,7 @@ export function DslPropertyField(props: Props) {
     const beanProperties = element?.dslName === 'BeanFactoryDefinition' && 
property.name === 'properties'
     const isSpi = property.javaType.startsWith("org.apache.camel.spi") || 
property.javaType.startsWith("org.apache.camel.AggregationStrategy");
     return (
-        <div>
+        <>
             <FormGroup
                 className='dsl-property-form-group'
                 label={props.hideLabel ? undefined : getLabel(property, value, 
isKamelet)}
@@ -1144,6 +1144,6 @@ export function DslPropertyField(props: Props) {
                 {beanProperties && getBeanProperties('properties')}
             </FormGroup>
             {getInfrastructureSelectorModal()}
-        </div>
+        </>
     )
 }
\ No newline at end of file
diff --git 
a/karavan-app/src/main/webui/src/designer/route/element/DslElement.tsx 
b/karavan-app/src/main/webui/src/designer/route/element/DslElement.tsx
index 15af1ac8..b11c693d 100644
--- a/karavan-app/src/main/webui/src/designer/route/element/DslElement.tsx
+++ b/karavan-app/src/main/webui/src/designer/route/element/DslElement.tsx
@@ -210,16 +210,19 @@ export function DslElement(props: Props) {
                             } else {
                                 nextStep = children.at(index + 1);
                             }
-                            return (<div key={step.uuid + child.className + 
index}>
-                                <DslElement
-                                    inSteps={child.name === 'steps'}
-                                    position={index}
-                                    step={element}
-                                    nextStep={nextStep}
-                                    prevStep={prevStep}
-                                    inStepsLength={array.length}
-                                    parent={step}/>
-                            </div>)
+                            return (
+                                // <div key={step.uuid + child.className + 
index}>
+                                    <DslElement
+                                        key={step.uuid + child.className + 
index}
+                                        inSteps={child.name === 'steps'}
+                                        position={index}
+                                        step={element}
+                                        nextStep={nextStep}
+                                        prevStep={prevStep}
+                                        inStepsLength={array.length}
+                                        parent={step}/>
+                                // </div>
+                            )
                         }
                     )}
                     {child.name === 'steps' && getAddStepButton()}
diff --git a/karavan-app/src/main/webui/src/designer/selector/DslSelector.tsx 
b/karavan-app/src/main/webui/src/designer/selector/DslSelector.tsx
index c11e9b2f..80eef199 100644
--- a/karavan-app/src/main/webui/src/designer/selector/DslSelector.tsx
+++ b/karavan-app/src/main/webui/src/designer/selector/DslSelector.tsx
@@ -58,7 +58,7 @@ export function DslSelector(props: Props) {
 
     const {onDslSelect} = useRouteDesignerHook();
 
-    const [filterShown, setFilterShown] =  useState<string>('');
+    const [filterShown, setFilterShown] = useState<string>('');
     const [filter, setFilter] = useDebounceValue('', 300);
 
     const [customOnly, setCustomOnly] = useState<boolean>(false);
@@ -101,7 +101,7 @@ export function DslSelector(props: Props) {
         setPreferredElements(p);
     }
 
-    function getDslMetaModelType(dsl: DslMetaModel){
+    function getDslMetaModelType(dsl: DslMetaModel) {
         return ['ToDefinition', 'FromDefinition'].includes(dsl.type) ? 
'components' : (dsl.uri?.startsWith("kamelet:") ? "kamelets" : 'eip');
     }
 
@@ -151,25 +151,30 @@ export function DslSelector(props: Props) {
         const isKam = selectedToggles.includes('kamelets')
         return (
             <ToggleGroup aria-label="Default with single selectable" 
className='navigation-selector'>
-                {parentDsl !== undefined && <ToggleGroupItem
-                    text={
-                        <div style={{display: 'flex', flexDirection: 'row'}}>
-                            <div style={{marginRight: '6px'}}>Processors</div>
-                            {ready && <Badge isRead={!isEIP} className={isEIP 
? "label-eip" : ""}>{eCount}</Badge>}
-                        </div>
-                    }
-                    buttonId="eip"
-                    isSelected={selectedToggles.includes('eip')}
-                    onChange={(_, selected) => {
-                        if (selected) addSelectedToggle('eip')
-                        else deleteSelectedToggle('eip')
-                    }}
-                />}
+                {parentDsl !== undefined &&
+                    <ToggleGroupItem
+                        key='eip'
+                        text={
+                            <div style={{display: 'flex', flexDirection: 
'row'}}>
+                                <div style={{marginRight: 
'6px'}}>Processors</div>
+                                {ready && <Badge isRead={!isEIP} 
className={isEIP ? "label-eip" : ""}>{eCount}</Badge>}
+                            </div>
+                        }
+                        buttonId="eip"
+                        isSelected={selectedToggles.includes('eip')}
+                        onChange={(_, selected) => {
+                            if (selected) addSelectedToggle('eip')
+                            else deleteSelectedToggle('eip')
+                        }}
+                    />
+                }
                 <ToggleGroupItem
+                    key='component'
                     text={
                         <div style={{display: 'flex', flexDirection: 'row'}}>
                             <div style={{marginRight: '6px'}}>Components</div>
-                            {ready && <Badge isRead={!isComp} 
className={isComp ? "label-component" : ""}>{cCount}</Badge>}
+                            {ready &&
+                                <Badge isRead={!isComp} className={isComp ? 
"label-component" : ""}>{cCount}</Badge>}
                         </div>
                     }
                     buttonId="components"
@@ -180,6 +185,7 @@ export function DslSelector(props: Props) {
                     }}
                 />
                 <ToggleGroupItem
+                    key='kamelet'
                     text={
                         <div style={{display: 'flex', flexDirection: 'row'}}>
                             <div style={{marginRight: '6px'}}>Kamelets</div>
@@ -239,8 +245,7 @@ export function DslSelector(props: Props) {
                 } else {
                     return true;
                 }
-            }
-            else return false;
+            } else return false;
         })
         .filter(d => CamelUi.checkFilter(d, filter));
 
@@ -275,25 +280,26 @@ export function DslSelector(props: Props) {
             actions={{}}>
             <PageSection padding={{default: "noPadding"}} variant={dark ? 
"darker" : "light"}>
                 {!ready && [1, 2, 3, 4, 5, 6, 7, 8, 9].map(i =>
-                    <React.Fragment>
-                        <Skeleton width={i * 10 + '%'} 
screenreaderText="Loading..."/>
+                    <React.Fragment key={i}>
+                        <Skeleton key={i} width={i * 10 + '%'} 
screenreaderText="Loading..."/>
                         <br/>
                     </React.Fragment>)
                 }
                 <Gallery key={"fast-gallery"} hasGutter className="dsl-gallery"
                          minWidths={{default: '150px'}}>
                     {showSelector && fastElements.map((dsl: DslMetaModel, 
index: number) =>
-                        <DslFastCard dsl={dsl} index={index} 
onDslSelect={selectDsl} onDeleteFast={deleteFast}/>
+                        <DslFastCard key={dsl.name + ":" + index} dsl={dsl} 
index={index} onDslSelect={selectDsl} onDeleteFast={deleteFast}/>
                     )}
                 </Gallery>
                 <Gallery key={"gallery"} hasGutter className="dsl-gallery" 
minWidths={{default: '200px'}}>
                     {showSelector && filteredElements.slice(0, 
pageSize).map((dsl: DslMetaModel, index: number) =>
-                        <DslCard dsl={dsl} index={index} 
onDslSelect={selectDsl}/>
+                        <DslCard key={dsl.name + ":" + index} dsl={dsl} 
index={index} onDslSelect={selectDsl}/>
                     )}
                     {moreElements > 0 &&
                         <Card isCompact isPlain isFlat isRounded 
style={{minHeight: '140px'}}>
                             <Bullseye>
-                                <Button variant='link' onClick={_ => 
setPageSize(pageSize + 10)}>{`${moreElements} more`}</Button>
+                                <Button variant='link'
+                                        onClick={_ => setPageSize(pageSize + 
10)}>{`${moreElements} more`}</Button>
                             </Bullseye>
                         </Card>
                     }
diff --git 
a/karavan-designer/src/designer/property/property/DslPropertyField.tsx 
b/karavan-designer/src/designer/property/property/DslPropertyField.tsx
index 908d2214..c8346056 100644
--- a/karavan-designer/src/designer/property/property/DslPropertyField.tsx
+++ b/karavan-designer/src/designer/property/property/DslPropertyField.tsx
@@ -322,7 +322,7 @@ export function DslPropertyField(props: Props) {
                            className="text-field route-variable" isRequired
                            type='text'
                            id={property.name} name={property.name}
-                           value={textValue?.toString()}
+                           value={textValue?.toString() || ''}
                            customIcon={property.type !== 'string' ?
                                <Text 
component={TextVariants.p}>{property.type}</Text> : undefined}
                            onBlur={_ => {
@@ -360,7 +360,7 @@ export function DslPropertyField(props: Props) {
                         type={property.secret ? "password" : "text"}
                         autoComplete="off"
                         id={property.name} name={property.name}
-                        value={textValue?.toString()}
+                        value={textValue?.toString() || ''}
                         customIcon={property.type !== 'string' ?
                             <Text 
component={TextVariants.p}>{property.type}</Text> : undefined}
                         onBlur={_ => {
@@ -414,7 +414,7 @@ export function DslPropertyField(props: Props) {
                            type={property.secret ? "password" : "text"}
                            autoComplete="off"
                            id={property.name} name={property.name}
-                           value={textValue?.toString()}
+                           value={textValue?.toString() || ''}
                            customIcon={property.type !== 'string' ?
                                <Text 
component={TextVariants.p}>{property.type}</Text> : undefined}
                            onBlur={_ => {
@@ -639,7 +639,7 @@ export function DslPropertyField(props: Props) {
                         name={property.name + "-placeholder"}
                         type="text"
                         aria-label="placeholder"
-                        value={!isValueBoolean ? textValue?.toString() : 
undefined}
+                        value={!isValueBoolean ? textValue?.toString() : ''}
                         onBlur={_ => propertyChanged(property.name, textValue)}
                         onChange={(_, v) => {
                             setTextValue(v);
@@ -879,7 +879,7 @@ export function DslPropertyField(props: Props) {
         return (
             <div>
                 <TextInputGroup className="input-group">
-                    <TextInputGroupMain value={arrayValues.get(property.name)}
+                    <TextInputGroupMain value={arrayValues.get(property.name) 
|| ''}
                                         onChange={(e, v) => 
arrayChanged(property.name, v)}
                                         onKeyUp={e => {
                                             if (e.key === 'Enter') 
arraySave(property.name)
@@ -1091,7 +1091,7 @@ export function DslPropertyField(props: Props) {
     const beanProperties = element?.dslName === 'BeanFactoryDefinition' && 
property.name === 'properties'
     const isSpi = property.javaType.startsWith("org.apache.camel.spi") || 
property.javaType.startsWith("org.apache.camel.AggregationStrategy");
     return (
-        <div>
+        <>
             <FormGroup
                 className='dsl-property-form-group'
                 label={props.hideLabel ? undefined : getLabel(property, value, 
isKamelet)}
@@ -1144,6 +1144,6 @@ export function DslPropertyField(props: Props) {
                 {beanProperties && getBeanProperties('properties')}
             </FormGroup>
             {getInfrastructureSelectorModal()}
-        </div>
+        </>
     )
 }
\ No newline at end of file
diff --git a/karavan-designer/src/designer/route/element/DslElement.tsx 
b/karavan-designer/src/designer/route/element/DslElement.tsx
index 15af1ac8..b11c693d 100644
--- a/karavan-designer/src/designer/route/element/DslElement.tsx
+++ b/karavan-designer/src/designer/route/element/DslElement.tsx
@@ -210,16 +210,19 @@ export function DslElement(props: Props) {
                             } else {
                                 nextStep = children.at(index + 1);
                             }
-                            return (<div key={step.uuid + child.className + 
index}>
-                                <DslElement
-                                    inSteps={child.name === 'steps'}
-                                    position={index}
-                                    step={element}
-                                    nextStep={nextStep}
-                                    prevStep={prevStep}
-                                    inStepsLength={array.length}
-                                    parent={step}/>
-                            </div>)
+                            return (
+                                // <div key={step.uuid + child.className + 
index}>
+                                    <DslElement
+                                        key={step.uuid + child.className + 
index}
+                                        inSteps={child.name === 'steps'}
+                                        position={index}
+                                        step={element}
+                                        nextStep={nextStep}
+                                        prevStep={prevStep}
+                                        inStepsLength={array.length}
+                                        parent={step}/>
+                                // </div>
+                            )
                         }
                     )}
                     {child.name === 'steps' && getAddStepButton()}
diff --git a/karavan-designer/src/designer/selector/DslSelector.tsx 
b/karavan-designer/src/designer/selector/DslSelector.tsx
index c11e9b2f..80eef199 100644
--- a/karavan-designer/src/designer/selector/DslSelector.tsx
+++ b/karavan-designer/src/designer/selector/DslSelector.tsx
@@ -58,7 +58,7 @@ export function DslSelector(props: Props) {
 
     const {onDslSelect} = useRouteDesignerHook();
 
-    const [filterShown, setFilterShown] =  useState<string>('');
+    const [filterShown, setFilterShown] = useState<string>('');
     const [filter, setFilter] = useDebounceValue('', 300);
 
     const [customOnly, setCustomOnly] = useState<boolean>(false);
@@ -101,7 +101,7 @@ export function DslSelector(props: Props) {
         setPreferredElements(p);
     }
 
-    function getDslMetaModelType(dsl: DslMetaModel){
+    function getDslMetaModelType(dsl: DslMetaModel) {
         return ['ToDefinition', 'FromDefinition'].includes(dsl.type) ? 
'components' : (dsl.uri?.startsWith("kamelet:") ? "kamelets" : 'eip');
     }
 
@@ -151,25 +151,30 @@ export function DslSelector(props: Props) {
         const isKam = selectedToggles.includes('kamelets')
         return (
             <ToggleGroup aria-label="Default with single selectable" 
className='navigation-selector'>
-                {parentDsl !== undefined && <ToggleGroupItem
-                    text={
-                        <div style={{display: 'flex', flexDirection: 'row'}}>
-                            <div style={{marginRight: '6px'}}>Processors</div>
-                            {ready && <Badge isRead={!isEIP} className={isEIP 
? "label-eip" : ""}>{eCount}</Badge>}
-                        </div>
-                    }
-                    buttonId="eip"
-                    isSelected={selectedToggles.includes('eip')}
-                    onChange={(_, selected) => {
-                        if (selected) addSelectedToggle('eip')
-                        else deleteSelectedToggle('eip')
-                    }}
-                />}
+                {parentDsl !== undefined &&
+                    <ToggleGroupItem
+                        key='eip'
+                        text={
+                            <div style={{display: 'flex', flexDirection: 
'row'}}>
+                                <div style={{marginRight: 
'6px'}}>Processors</div>
+                                {ready && <Badge isRead={!isEIP} 
className={isEIP ? "label-eip" : ""}>{eCount}</Badge>}
+                            </div>
+                        }
+                        buttonId="eip"
+                        isSelected={selectedToggles.includes('eip')}
+                        onChange={(_, selected) => {
+                            if (selected) addSelectedToggle('eip')
+                            else deleteSelectedToggle('eip')
+                        }}
+                    />
+                }
                 <ToggleGroupItem
+                    key='component'
                     text={
                         <div style={{display: 'flex', flexDirection: 'row'}}>
                             <div style={{marginRight: '6px'}}>Components</div>
-                            {ready && <Badge isRead={!isComp} 
className={isComp ? "label-component" : ""}>{cCount}</Badge>}
+                            {ready &&
+                                <Badge isRead={!isComp} className={isComp ? 
"label-component" : ""}>{cCount}</Badge>}
                         </div>
                     }
                     buttonId="components"
@@ -180,6 +185,7 @@ export function DslSelector(props: Props) {
                     }}
                 />
                 <ToggleGroupItem
+                    key='kamelet'
                     text={
                         <div style={{display: 'flex', flexDirection: 'row'}}>
                             <div style={{marginRight: '6px'}}>Kamelets</div>
@@ -239,8 +245,7 @@ export function DslSelector(props: Props) {
                 } else {
                     return true;
                 }
-            }
-            else return false;
+            } else return false;
         })
         .filter(d => CamelUi.checkFilter(d, filter));
 
@@ -275,25 +280,26 @@ export function DslSelector(props: Props) {
             actions={{}}>
             <PageSection padding={{default: "noPadding"}} variant={dark ? 
"darker" : "light"}>
                 {!ready && [1, 2, 3, 4, 5, 6, 7, 8, 9].map(i =>
-                    <React.Fragment>
-                        <Skeleton width={i * 10 + '%'} 
screenreaderText="Loading..."/>
+                    <React.Fragment key={i}>
+                        <Skeleton key={i} width={i * 10 + '%'} 
screenreaderText="Loading..."/>
                         <br/>
                     </React.Fragment>)
                 }
                 <Gallery key={"fast-gallery"} hasGutter className="dsl-gallery"
                          minWidths={{default: '150px'}}>
                     {showSelector && fastElements.map((dsl: DslMetaModel, 
index: number) =>
-                        <DslFastCard dsl={dsl} index={index} 
onDslSelect={selectDsl} onDeleteFast={deleteFast}/>
+                        <DslFastCard key={dsl.name + ":" + index} dsl={dsl} 
index={index} onDslSelect={selectDsl} onDeleteFast={deleteFast}/>
                     )}
                 </Gallery>
                 <Gallery key={"gallery"} hasGutter className="dsl-gallery" 
minWidths={{default: '200px'}}>
                     {showSelector && filteredElements.slice(0, 
pageSize).map((dsl: DslMetaModel, index: number) =>
-                        <DslCard dsl={dsl} index={index} 
onDslSelect={selectDsl}/>
+                        <DslCard key={dsl.name + ":" + index} dsl={dsl} 
index={index} onDslSelect={selectDsl}/>
                     )}
                     {moreElements > 0 &&
                         <Card isCompact isPlain isFlat isRounded 
style={{minHeight: '140px'}}>
                             <Bullseye>
-                                <Button variant='link' onClick={_ => 
setPageSize(pageSize + 10)}>{`${moreElements} more`}</Button>
+                                <Button variant='link'
+                                        onClick={_ => setPageSize(pageSize + 
10)}>{`${moreElements} more`}</Button>
                             </Bullseye>
                         </Card>
                     }
diff --git a/karavan-space/src/designer/property/property/DslPropertyField.tsx 
b/karavan-space/src/designer/property/property/DslPropertyField.tsx
index 908d2214..c8346056 100644
--- a/karavan-space/src/designer/property/property/DslPropertyField.tsx
+++ b/karavan-space/src/designer/property/property/DslPropertyField.tsx
@@ -322,7 +322,7 @@ export function DslPropertyField(props: Props) {
                            className="text-field route-variable" isRequired
                            type='text'
                            id={property.name} name={property.name}
-                           value={textValue?.toString()}
+                           value={textValue?.toString() || ''}
                            customIcon={property.type !== 'string' ?
                                <Text 
component={TextVariants.p}>{property.type}</Text> : undefined}
                            onBlur={_ => {
@@ -360,7 +360,7 @@ export function DslPropertyField(props: Props) {
                         type={property.secret ? "password" : "text"}
                         autoComplete="off"
                         id={property.name} name={property.name}
-                        value={textValue?.toString()}
+                        value={textValue?.toString() || ''}
                         customIcon={property.type !== 'string' ?
                             <Text 
component={TextVariants.p}>{property.type}</Text> : undefined}
                         onBlur={_ => {
@@ -414,7 +414,7 @@ export function DslPropertyField(props: Props) {
                            type={property.secret ? "password" : "text"}
                            autoComplete="off"
                            id={property.name} name={property.name}
-                           value={textValue?.toString()}
+                           value={textValue?.toString() || ''}
                            customIcon={property.type !== 'string' ?
                                <Text 
component={TextVariants.p}>{property.type}</Text> : undefined}
                            onBlur={_ => {
@@ -639,7 +639,7 @@ export function DslPropertyField(props: Props) {
                         name={property.name + "-placeholder"}
                         type="text"
                         aria-label="placeholder"
-                        value={!isValueBoolean ? textValue?.toString() : 
undefined}
+                        value={!isValueBoolean ? textValue?.toString() : ''}
                         onBlur={_ => propertyChanged(property.name, textValue)}
                         onChange={(_, v) => {
                             setTextValue(v);
@@ -879,7 +879,7 @@ export function DslPropertyField(props: Props) {
         return (
             <div>
                 <TextInputGroup className="input-group">
-                    <TextInputGroupMain value={arrayValues.get(property.name)}
+                    <TextInputGroupMain value={arrayValues.get(property.name) 
|| ''}
                                         onChange={(e, v) => 
arrayChanged(property.name, v)}
                                         onKeyUp={e => {
                                             if (e.key === 'Enter') 
arraySave(property.name)
@@ -1091,7 +1091,7 @@ export function DslPropertyField(props: Props) {
     const beanProperties = element?.dslName === 'BeanFactoryDefinition' && 
property.name === 'properties'
     const isSpi = property.javaType.startsWith("org.apache.camel.spi") || 
property.javaType.startsWith("org.apache.camel.AggregationStrategy");
     return (
-        <div>
+        <>
             <FormGroup
                 className='dsl-property-form-group'
                 label={props.hideLabel ? undefined : getLabel(property, value, 
isKamelet)}
@@ -1144,6 +1144,6 @@ export function DslPropertyField(props: Props) {
                 {beanProperties && getBeanProperties('properties')}
             </FormGroup>
             {getInfrastructureSelectorModal()}
-        </div>
+        </>
     )
 }
\ No newline at end of file
diff --git a/karavan-space/src/designer/route/element/DslElement.tsx 
b/karavan-space/src/designer/route/element/DslElement.tsx
index 15af1ac8..b11c693d 100644
--- a/karavan-space/src/designer/route/element/DslElement.tsx
+++ b/karavan-space/src/designer/route/element/DslElement.tsx
@@ -210,16 +210,19 @@ export function DslElement(props: Props) {
                             } else {
                                 nextStep = children.at(index + 1);
                             }
-                            return (<div key={step.uuid + child.className + 
index}>
-                                <DslElement
-                                    inSteps={child.name === 'steps'}
-                                    position={index}
-                                    step={element}
-                                    nextStep={nextStep}
-                                    prevStep={prevStep}
-                                    inStepsLength={array.length}
-                                    parent={step}/>
-                            </div>)
+                            return (
+                                // <div key={step.uuid + child.className + 
index}>
+                                    <DslElement
+                                        key={step.uuid + child.className + 
index}
+                                        inSteps={child.name === 'steps'}
+                                        position={index}
+                                        step={element}
+                                        nextStep={nextStep}
+                                        prevStep={prevStep}
+                                        inStepsLength={array.length}
+                                        parent={step}/>
+                                // </div>
+                            )
                         }
                     )}
                     {child.name === 'steps' && getAddStepButton()}
diff --git a/karavan-space/src/designer/selector/DslSelector.tsx 
b/karavan-space/src/designer/selector/DslSelector.tsx
index c11e9b2f..80eef199 100644
--- a/karavan-space/src/designer/selector/DslSelector.tsx
+++ b/karavan-space/src/designer/selector/DslSelector.tsx
@@ -58,7 +58,7 @@ export function DslSelector(props: Props) {
 
     const {onDslSelect} = useRouteDesignerHook();
 
-    const [filterShown, setFilterShown] =  useState<string>('');
+    const [filterShown, setFilterShown] = useState<string>('');
     const [filter, setFilter] = useDebounceValue('', 300);
 
     const [customOnly, setCustomOnly] = useState<boolean>(false);
@@ -101,7 +101,7 @@ export function DslSelector(props: Props) {
         setPreferredElements(p);
     }
 
-    function getDslMetaModelType(dsl: DslMetaModel){
+    function getDslMetaModelType(dsl: DslMetaModel) {
         return ['ToDefinition', 'FromDefinition'].includes(dsl.type) ? 
'components' : (dsl.uri?.startsWith("kamelet:") ? "kamelets" : 'eip');
     }
 
@@ -151,25 +151,30 @@ export function DslSelector(props: Props) {
         const isKam = selectedToggles.includes('kamelets')
         return (
             <ToggleGroup aria-label="Default with single selectable" 
className='navigation-selector'>
-                {parentDsl !== undefined && <ToggleGroupItem
-                    text={
-                        <div style={{display: 'flex', flexDirection: 'row'}}>
-                            <div style={{marginRight: '6px'}}>Processors</div>
-                            {ready && <Badge isRead={!isEIP} className={isEIP 
? "label-eip" : ""}>{eCount}</Badge>}
-                        </div>
-                    }
-                    buttonId="eip"
-                    isSelected={selectedToggles.includes('eip')}
-                    onChange={(_, selected) => {
-                        if (selected) addSelectedToggle('eip')
-                        else deleteSelectedToggle('eip')
-                    }}
-                />}
+                {parentDsl !== undefined &&
+                    <ToggleGroupItem
+                        key='eip'
+                        text={
+                            <div style={{display: 'flex', flexDirection: 
'row'}}>
+                                <div style={{marginRight: 
'6px'}}>Processors</div>
+                                {ready && <Badge isRead={!isEIP} 
className={isEIP ? "label-eip" : ""}>{eCount}</Badge>}
+                            </div>
+                        }
+                        buttonId="eip"
+                        isSelected={selectedToggles.includes('eip')}
+                        onChange={(_, selected) => {
+                            if (selected) addSelectedToggle('eip')
+                            else deleteSelectedToggle('eip')
+                        }}
+                    />
+                }
                 <ToggleGroupItem
+                    key='component'
                     text={
                         <div style={{display: 'flex', flexDirection: 'row'}}>
                             <div style={{marginRight: '6px'}}>Components</div>
-                            {ready && <Badge isRead={!isComp} 
className={isComp ? "label-component" : ""}>{cCount}</Badge>}
+                            {ready &&
+                                <Badge isRead={!isComp} className={isComp ? 
"label-component" : ""}>{cCount}</Badge>}
                         </div>
                     }
                     buttonId="components"
@@ -180,6 +185,7 @@ export function DslSelector(props: Props) {
                     }}
                 />
                 <ToggleGroupItem
+                    key='kamelet'
                     text={
                         <div style={{display: 'flex', flexDirection: 'row'}}>
                             <div style={{marginRight: '6px'}}>Kamelets</div>
@@ -239,8 +245,7 @@ export function DslSelector(props: Props) {
                 } else {
                     return true;
                 }
-            }
-            else return false;
+            } else return false;
         })
         .filter(d => CamelUi.checkFilter(d, filter));
 
@@ -275,25 +280,26 @@ export function DslSelector(props: Props) {
             actions={{}}>
             <PageSection padding={{default: "noPadding"}} variant={dark ? 
"darker" : "light"}>
                 {!ready && [1, 2, 3, 4, 5, 6, 7, 8, 9].map(i =>
-                    <React.Fragment>
-                        <Skeleton width={i * 10 + '%'} 
screenreaderText="Loading..."/>
+                    <React.Fragment key={i}>
+                        <Skeleton key={i} width={i * 10 + '%'} 
screenreaderText="Loading..."/>
                         <br/>
                     </React.Fragment>)
                 }
                 <Gallery key={"fast-gallery"} hasGutter className="dsl-gallery"
                          minWidths={{default: '150px'}}>
                     {showSelector && fastElements.map((dsl: DslMetaModel, 
index: number) =>
-                        <DslFastCard dsl={dsl} index={index} 
onDslSelect={selectDsl} onDeleteFast={deleteFast}/>
+                        <DslFastCard key={dsl.name + ":" + index} dsl={dsl} 
index={index} onDslSelect={selectDsl} onDeleteFast={deleteFast}/>
                     )}
                 </Gallery>
                 <Gallery key={"gallery"} hasGutter className="dsl-gallery" 
minWidths={{default: '200px'}}>
                     {showSelector && filteredElements.slice(0, 
pageSize).map((dsl: DslMetaModel, index: number) =>
-                        <DslCard dsl={dsl} index={index} 
onDslSelect={selectDsl}/>
+                        <DslCard key={dsl.name + ":" + index} dsl={dsl} 
index={index} onDslSelect={selectDsl}/>
                     )}
                     {moreElements > 0 &&
                         <Card isCompact isPlain isFlat isRounded 
style={{minHeight: '140px'}}>
                             <Bullseye>
-                                <Button variant='link' onClick={_ => 
setPageSize(pageSize + 10)}>{`${moreElements} more`}</Button>
+                                <Button variant='link'
+                                        onClick={_ => setPageSize(pageSize + 
10)}>{`${moreElements} more`}</Button>
                             </Bullseye>
                         </Card>
                     }


Reply via email to