11import { FlexibleColumnLayout } from '@ui5/webcomponents-react' ;
2- import React , { Suspense } from 'react' ;
2+ import React , { Suspense , useDeferredValue } from 'react' ;
33import { Route , useParams } from 'react-router' ;
44import { useRecoilState } from 'recoil' ;
55import { ErrorBoundary } from 'shared/components/ErrorBoundary/ErrorBoundary' ;
@@ -23,7 +23,7 @@ const KymaModulesAddModule = React.lazy(() =>
2323 import ( '../../components/KymaModules/KymaModulesAddModule' ) ,
2424) ;
2525
26- const ColumnWraper = ( {
26+ const ColumnWrapper = ( {
2727 defaultColumn = 'list' ,
2828 namespaced = false ,
2929 DeleteMessageBox,
@@ -52,102 +52,100 @@ const ColumnWraper = ({
5252 rawResourceTypeName : 'Kyma' ,
5353 } ) ;
5454
55- let startColumnComponent = null ;
56-
57- if ( layoutState . layout === 'OneColumn' && defaultColumn === 'details' ) {
58- startColumnComponent = (
59- < ExtensibilityDetails
60- layoutCloseCreateUrl = { url }
61- resourceName = { layoutState ?. midColumn ?. resourceName || resourceName }
62- resourceType = { layoutState ?. midColumn ?. resourceType || resourceType }
63- namespaceId = {
64- layoutState ?. midColumn ?. namespaceId ||
65- layoutState ?. midColumn ?. namespaceId === ''
66- ? layoutState ?. midColumn ?. namespaceId
67- : namespace
68- }
69- isModule = { true }
70- />
71- ) ;
72- } else {
73- startColumnComponent = < KymaModulesList namespaced = { namespaced } /> ;
74- }
75-
76- let detailsMidColumn = null ;
77- if ( ! layoutState ?. showCreate && layoutState ?. midColumn ) {
78- detailsMidColumn = (
79- < ExtensibilityDetails
80- layoutCloseCreateUrl = { url }
81- resourceName = { layoutState ?. midColumn ?. resourceName || resourceName }
82- resourceType = { layoutState ?. midColumn ?. resourceType || resourceType }
83- namespaceId = {
84- layoutState ?. midColumn ?. namespaceId ||
85- layoutState ?. midColumn ?. namespaceId === ''
86- ? layoutState ?. midColumn ?. namespaceId
87- : namespace
88- }
89- isModule = { true }
90- />
91- ) ;
92- }
55+ const startColumnComponent = useDeferredValue (
56+ < div className = "column-content" >
57+ { layoutState . layout === 'OneColumn' && defaultColumn === 'details' ? (
58+ < ExtensibilityDetails
59+ layoutCloseCreateUrl = { url }
60+ resourceName = { layoutState ?. midColumn ?. resourceName || resourceName }
61+ resourceType = { layoutState ?. midColumn ?. resourceType || resourceType }
62+ namespaceId = {
63+ layoutState ?. midColumn ?. namespaceId ||
64+ layoutState ?. midColumn ?. namespaceId === ''
65+ ? layoutState ?. midColumn ?. namespaceId
66+ : namespace
67+ }
68+ isModule = { true }
69+ />
70+ ) : (
71+ < KymaModulesList namespaced = { namespaced } />
72+ ) }
73+ </ div > ,
74+ ) ;
9375
94- const createMidColumn = (
95- < ResourceCreate
96- title = { t ( 'kyma-modules.add-module' ) }
97- confirmText = { t ( 'common.buttons.add' ) }
98- layoutCloseCreateUrl = { url }
99- renderForm = { renderProps => {
100- return (
101- < ErrorBoundary >
102- < KymaModulesAddModule { ...renderProps } />
103- </ ErrorBoundary >
104- ) ;
105- } }
106- />
76+ const midColumnComponent = (
77+ < >
78+ { /* details */ }
79+ { ! layoutState ?. showCreate &&
80+ layoutState ?. midColumn &&
81+ ( defaultColumn !== 'details' || layoutState . layout !== 'OneColumn' ) && (
82+ < div className = "column-content" >
83+ < ExtensibilityDetails
84+ layoutCloseCreateUrl = { url }
85+ resourceName = {
86+ layoutState ?. midColumn ?. resourceName || resourceName
87+ }
88+ resourceType = {
89+ layoutState ?. midColumn ?. resourceType || resourceType
90+ }
91+ namespaceId = {
92+ layoutState ?. midColumn ?. namespaceId ||
93+ layoutState ?. midColumn ?. namespaceId === ''
94+ ? layoutState ?. midColumn ?. namespaceId
95+ : namespace
96+ }
97+ isModule = { true }
98+ />
99+ </ div >
100+ ) }
101+ { /* create */ }
102+ { ! layoutState ?. midColumn &&
103+ ( defaultColumn !== 'details' || layoutState . layout !== 'OneColumn' ) && (
104+ < div className = "column-content" >
105+ < ResourceCreate
106+ title = { t ( 'kyma-modules.add-module' ) }
107+ confirmText = { t ( 'common.buttons.add' ) }
108+ layoutCloseCreateUrl = { url }
109+ renderForm = { renderProps => {
110+ return (
111+ < ErrorBoundary >
112+ < KymaModulesAddModule { ...renderProps } />
113+ </ ErrorBoundary >
114+ ) ;
115+ } }
116+ />
117+ </ div >
118+ ) }
119+ </ >
107120 ) ;
108121
109122 return (
110- < >
111- < ModuleTemplatesContextProvider >
112- < KymaModuleContextProvider
123+ < ModuleTemplatesContextProvider >
124+ < KymaModuleContextProvider
125+ setLayoutColumn = { setLayoutColumn }
126+ layoutState = { layoutState }
127+ DeleteMessageBox = { DeleteMessageBox }
128+ handleResourceDelete = { handleResourceDelete }
129+ showDeleteDialog = { showDeleteDialog }
130+ >
131+ < CommunityModuleContextProvider
113132 setLayoutColumn = { setLayoutColumn }
114133 layoutState = { layoutState }
115134 DeleteMessageBox = { DeleteMessageBox }
116135 handleResourceDelete = { handleResourceDelete }
117136 showDeleteDialog = { showDeleteDialog }
118137 >
119- < CommunityModuleContextProvider
120- setLayoutColumn = { setLayoutColumn }
121- layoutState = { layoutState }
122- DeleteMessageBox = { DeleteMessageBox }
123- handleResourceDelete = { handleResourceDelete }
124- showDeleteDialog = { showDeleteDialog }
125- >
138+ < Suspense fallback = { < Spinner /> } >
126139 < FlexibleColumnLayout
127140 style = { { height : '100%' } }
128141 layout = { layoutState ?. layout }
129- startColumn = {
130- < div className = "column-content" > { startColumnComponent } </ div >
131- }
132- midColumn = {
133- < >
134- { ! layoutState ?. showCreate &&
135- ( defaultColumn !== 'details' ||
136- layoutState . layout !== 'OneColumn' ) && (
137- < div className = "column-content" > { detailsMidColumn } </ div >
138- ) }
139- { ! layoutState ?. midColumn &&
140- ( defaultColumn !== 'details' ||
141- layoutState . layout !== 'OneColumn' ) && (
142- < div className = "column-content" > { createMidColumn } </ div >
143- ) }
144- </ >
145- }
142+ startColumn = { startColumnComponent }
143+ midColumn = { midColumnComponent }
146144 />
147- </ CommunityModuleContextProvider >
148- </ KymaModuleContextProvider >
149- </ ModuleTemplatesContextProvider >
150- </ >
145+ </ Suspense >
146+ </ CommunityModuleContextProvider >
147+ </ KymaModuleContextProvider >
148+ </ ModuleTemplatesContextProvider >
151149 ) ;
152150} ;
153151
@@ -161,26 +159,21 @@ const KymaModules = ({ defaultColumn, namespaced }) => {
161159 forceConfirmDelete : true ,
162160 } ) ;
163161 return (
164- < ColumnWraper
165- defaultColumn = { defaultColumn }
166- namespaced = { namespaced }
167- DeleteMessageBox = { DeleteMessageBox }
168- handleResourceDelete = { handleResourceDelete }
169- showDeleteDialog = { showDeleteDialog }
170- />
162+ < Suspense fallback = { < Spinner /> } >
163+ < ColumnWrapper
164+ defaultColumn = { defaultColumn }
165+ namespaced = { namespaced }
166+ DeleteMessageBox = { DeleteMessageBox }
167+ handleResourceDelete = { handleResourceDelete }
168+ showDeleteDialog = { showDeleteDialog }
169+ />
170+ </ Suspense >
171171 ) ;
172172} ;
173173
174174export default (
175175 < >
176- < Route
177- path = { 'kymamodules' }
178- element = {
179- < Suspense fallback = { < Spinner /> } >
180- < KymaModules />
181- </ Suspense >
182- }
183- />
176+ < Route path = { 'kymamodules' } element = { < KymaModules /> } />
184177 < Route
185178 path = "kymamodules/namespaces/:namespace/:resourceType/:resourceName"
186179 element = { < KymaModules defaultColumn = "details" /> }
@@ -191,11 +184,7 @@ export default (
191184 />
192185 < Route
193186 path = { 'namespaces/:globalnamespace/kymamodules' }
194- element = {
195- < Suspense fallback = { < Spinner /> } >
196- < KymaModules namespaced = { true } />
197- </ Suspense >
198- }
187+ element = { < KymaModules namespaced = { true } /> }
199188 />
200189 < Route
201190 path = "namespaces/:globalnamespace/kymamodules/namespaces/:namespace/:resourceType/:resourceName"
0 commit comments