1+ import { useEffect , useMemo , useState } from 'react' ;
12import {
23 Card ,
34 CheckBox ,
@@ -11,7 +12,6 @@ import {
1112} from '@ui5/webcomponents-react' ;
1213import { ExternalLink } from 'shared/components/ExternalLink/ExternalLink' ;
1314import { useTranslation } from 'react-i18next' ;
14- import { useEffect , useState } from 'react' ;
1515import {
1616 findModuleSpec ,
1717 findModuleStatus ,
@@ -60,11 +60,53 @@ export default function ModulesCard({
6060 checkImage ( ) ;
6161 } , [ module ] ) ;
6262
63+ const defaultVersion = useMemo (
64+ ( ) =>
65+ module ?. channels ?. find (
66+ channel => channel ?. channel === kymaResource ?. spec ?. channel ,
67+ ) ?. version ,
68+ [ kymaResource ?. spec ?. channel , module ?. channels ] ,
69+ ) ;
70+
71+ // Check if the module version from kymaResource exists and set the channel if not.
72+ const checkIfVersionExistsAndSet = ( ) => {
73+ if ( ! defaultVersion && module ?. channels ?. [ 0 ] ?. channel ) {
74+ setChannel (
75+ module ,
76+ module . channels [ 0 ] . channel ,
77+ index ,
78+ selectedModules ,
79+ setSelectedModules ,
80+ ) ;
81+ }
82+ } ;
83+
84+ const getNameForVersion = version => {
85+ if ( typeof version === 'string' && version . startsWith ( 'v' ) ) {
86+ return version ;
87+ }
88+ return `v${ version } ` ;
89+ } ;
90+
91+ const getSelectedValue = ( ) => {
92+ const defaultValue = defaultVersion
93+ ? 'predefined'
94+ : module ?. channels ?. [ 0 ] ?. channel ;
95+ return (
96+ findModuleSpec ( kymaResource , module . name ) ?. channel ||
97+ findModuleStatus ( kymaResource , module . name ) ?. channel ||
98+ defaultValue
99+ ) ;
100+ } ;
101+
63102 return (
64103 < Card key = { module . name } className = "addModuleCard" >
65104 < ListItemStandard
66105 className = "moduleCardHeader"
67- onClick = { ( ) => setCheckbox ( module , ! isChecked ( module . name ) , index ) }
106+ onClick = { ( ) => {
107+ setCheckbox ( module , ! isChecked ( module . name ) , index ) ;
108+ checkIfVersionExistsAndSet ( ) ;
109+ } }
68110 >
69111 < CheckBox className = "checkbox" checked = { isChecked ( module . name ) } />
70112 < div className = "titles" >
@@ -84,6 +126,8 @@ export default function ModulesCard({
84126 channel => kymaResource ?. spec ?. channel === channel . channel ,
85127 ) ?. version
86128 } ${ checkIfStatusModuleIsBeta ( module . name ) ? '(Beta)' : '' } `
129+ : module ?. channels ?. [ 0 ] ?. version
130+ ? `v${ module ?. channels ?. [ 0 ] ?. version } `
87131 : t ( 'kyma-modules.no-version' ) }
88132 </ Text >
89133 </ div >
@@ -124,33 +168,25 @@ export default function ModulesCard({
124168 setSelectedModules ,
125169 ) ;
126170 } }
127- value = {
128- findModuleSpec ( kymaResource , module . name ) ?. channel ||
129- findModuleStatus ( kymaResource , module . name ) ?. channel ||
130- 'predefined'
131- }
171+ value = { getSelectedValue ( ) }
132172 className = "channel-select"
133173 >
134- < Option
135- selected = {
136- ! module . channels ?. filter (
174+ { defaultVersion && (
175+ < Option
176+ selected = { module ? .channels ?. find (
137177 channel =>
138178 channel . channel ===
139179 findModuleSpec ( kymaResource , module . name ) ?. channel ,
140- )
141- }
142- value = { 'predefined' }
143- >
144- { `${ t (
145- 'kyma-modules.predefined-channel' ,
146- ) } (${ kymaResource ?. spec ?. channel [ 0 ] . toUpperCase ( ) } ${ kymaResource ?. spec ?. channel . slice (
147- 1 ,
148- ) } v${
149- module . channels ?. filter (
150- channel => channel . channel === kymaResource ?. spec ?. channel ,
151- ) [ 0 ] ?. version
152- } )`}
153- </ Option >
180+ ) }
181+ value = { 'predefined' }
182+ >
183+ { `${ t (
184+ 'kyma-modules.predefined-channel' ,
185+ ) } (${ kymaResource ?. spec ?. channel [ 0 ] . toUpperCase ( ) } ${ kymaResource ?. spec ?. channel . slice (
186+ 1 ,
187+ ) } ${ getNameForVersion ( defaultVersion ) } )`}
188+ </ Option >
189+ ) }
154190 { module . channels ?. map ( channel => (
155191 < Option
156192 selected = {
@@ -165,9 +201,9 @@ export default function ModulesCard({
165201 >
166202 { `${ (
167203 channel ?. channel [ 0 ] || ''
168- ) . toUpperCase ( ) } ${ channel . channel . slice ( 1 ) } (v ${
169- channel . version
170- } )`} { ' ' }
204+ ) . toUpperCase ( ) } ${ channel . channel . slice (
205+ 1 ,
206+ ) } ( ${ getNameForVersion ( channel . version ) } )`} { ' ' }
171207 </ Option >
172208 ) ) }
173209 </ Select >
0 commit comments