14
14
// See the License for the specific language governing permissions and
15
15
// limitations under the License.
16
16
17
- import React , { useMemo , useState , useCallback , useEffect } from 'react' ;
17
+ import React , { useMemo , useState , useCallback } from 'react' ;
18
18
import { ColumnProps } from 'antd/lib/table' ;
19
19
import { Input , Tooltip } from 'antd' ;
20
20
@@ -52,6 +52,7 @@ import DragAndDrop from '../../../reactComponents/DragAndDrop/DragAndDrop';
52
52
import UUID from '../../../utils/string/UUID' ;
53
53
import { UploadItem } from '../../../utils/hooks/useFileUpload/util' ;
54
54
import FileUploadQueue from '../../../reactComponents/FileUploadQueue/FileUploadQueue' ;
55
+ import { useWindowSize } from '../../../utils/hooks/useWindowSize/useWindowSize' ;
55
56
import LoadingErrorWrapper from '../../../reactComponents/LoadingErrorWrapper/LoadingErrorWrapper' ;
56
57
import StorageDirectoryActions from './StorageDirectoryActions/StorageDirectoryActions' ;
57
58
@@ -82,7 +83,6 @@ const StorageDirectoryPage = ({
82
83
...restProps
83
84
} : StorageDirectoryPageProps ) : JSX . Element => {
84
85
const [ loadingFiles , setLoadingFiles ] = useState < boolean > ( false ) ;
85
- const [ tableHeight , setTableHeight ] = useState < number > ( 100 ) ;
86
86
const [ selectedFiles , setSelectedFiles ] = useState < StorageDirectoryTableData [ ] > ( [ ] ) ;
87
87
const [ filesToUpload , setFilesToUpload ] = useState < UploadItem [ ] > ( [ ] ) ;
88
88
const [ polling , setPolling ] = useState < boolean > ( false ) ;
@@ -237,28 +237,9 @@ const StorageDirectoryPage = ({
237
237
setFilesToUpload ( prevFiles => [ ...prevFiles , ...newUploadItems ] ) ;
238
238
} ;
239
239
240
- useEffect ( ( ) => {
241
- //TODO: handle table resize
242
- const calculateTableHeight = ( ) => {
243
- const windowHeight = window . innerHeight ;
244
- // TODO: move 450 to dynamic based on table header height, tab nav and some header.
245
- const tableHeightFix = windowHeight - 450 ;
246
- return tableHeightFix ;
247
- } ;
248
-
249
- const handleWindowResize = ( ) => {
250
- const tableHeight = calculateTableHeight ( ) ;
251
- setTableHeight ( tableHeight ) ;
252
- } ;
253
-
254
- handleWindowResize ( ) ; // Calculate initial scroll height
255
-
256
- window . addEventListener ( 'resize' , handleWindowResize ) ;
257
-
258
- return ( ) => {
259
- window . removeEventListener ( 'resize' , handleWindowResize ) ;
260
- } ;
261
- } , [ ] ) ;
240
+ const [ tableRef , rect ] = useWindowSize ( ) ;
241
+ // 40px for table header, 50px for pagination
242
+ const tableBodyHeight = Math . max ( rect . height - 90 , 100 ) ;
262
243
263
244
const locale = {
264
245
emptyText : t ( 'Folder is empty' )
@@ -274,18 +255,18 @@ const StorageDirectoryPage = ({
274
255
] ;
275
256
276
257
return (
277
- < >
278
- < div className = "hue-storage-browser__actions -bar" >
258
+ < div className = "hue-storage-browser-directory" >
259
+ < div className = "hue-storage-browser-directory__actions -bar" >
279
260
< Input
280
- className = "hue-storage-browser__search "
261
+ className = "hue-storage-browser-directory__actions-bar__search "
281
262
placeholder = { t ( 'Search' ) }
282
263
allowClear = { true }
283
264
onChange = { event => {
284
265
handleSearch ( event . target . value ) ;
285
266
} }
286
267
disabled = { ! tableData . length && ! searchTerm . length }
287
268
/>
288
- < div className = "hue-storage-browser__actions-bar-right " >
269
+ < div className = "hue-storage-browser-directory__actions-bar__actions " >
289
270
< StorageDirectoryActions
290
271
fileStats = { fileStats }
291
272
fileSystem = { fileSystem }
@@ -301,41 +282,43 @@ const StorageDirectoryPage = ({
301
282
</ div >
302
283
</ div >
303
284
304
- < DragAndDrop onDrop = { onFilesDrop } >
305
- < LoadingErrorWrapper
306
- loading = { ( loadingFiles || listDirectoryLoading ) && ! polling }
307
- errors = { errorConfig }
308
- >
309
- < Table
310
- className = { className }
311
- columns = { getColumns ( tableData [ 0 ] ?? { } ) }
312
- dataSource = { tableData }
313
- onRow = { onRowClicked }
314
- pagination = { false }
315
- rowClassName = { rowClassName }
316
- rowKey = { r => `${ r . path } _${ r . type } _${ r . mtime } ` }
317
- rowSelection = { {
318
- hideSelectAll : ! tableData . length ,
319
- columnWidth : 36 ,
320
- type : 'checkbox' ,
321
- ...rowSelection
322
- } }
323
- scroll = { { y : tableHeight } }
324
- data-testid = { testId }
325
- locale = { locale }
326
- { ...restProps }
327
- />
328
-
329
- { filesData ?. page && filesData ?. page ?. total_pages > 0 && (
330
- < Pagination
331
- setPageSize = { setPageSize }
332
- pageSize = { pageSize }
333
- setPageNumber = { setPageNumber }
334
- pageStats = { filesData ?. page }
285
+ < div ref = { tableRef } className = "hue-storage-browser-directory__table-container" >
286
+ < DragAndDrop onDrop = { onFilesDrop } >
287
+ < LoadingErrorWrapper
288
+ loading = { ( loadingFiles || listDirectoryLoading ) && ! polling }
289
+ errors = { errorConfig }
290
+ >
291
+ < Table
292
+ className = { className }
293
+ columns = { getColumns ( tableData [ 0 ] ?? { } ) }
294
+ dataSource = { tableData }
295
+ onRow = { onRowClicked }
296
+ pagination = { false }
297
+ rowClassName = { rowClassName }
298
+ rowKey = { r => `${ r . path } _${ r . type } _${ r . mtime } ` }
299
+ rowSelection = { {
300
+ hideSelectAll : ! tableData . length ,
301
+ columnWidth : 36 ,
302
+ type : 'checkbox' ,
303
+ ...rowSelection
304
+ } }
305
+ scroll = { { y : tableBodyHeight } }
306
+ data-testid = { `${ testId } ` }
307
+ locale = { locale }
308
+ { ...restProps }
335
309
/>
336
- ) }
337
- </ LoadingErrorWrapper >
338
- </ DragAndDrop >
310
+
311
+ { filesData ?. page && filesData ?. page ?. total_pages > 0 && (
312
+ < Pagination
313
+ setPageSize = { setPageSize }
314
+ pageSize = { pageSize }
315
+ setPageNumber = { setPageNumber }
316
+ pageStats = { filesData ?. page }
317
+ />
318
+ ) }
319
+ </ LoadingErrorWrapper >
320
+ </ DragAndDrop >
321
+ </ div >
339
322
{ filesToUpload . length > 0 && (
340
323
< FileUploadQueue
341
324
filesQueue = { filesToUpload }
@@ -346,7 +329,7 @@ const StorageDirectoryPage = ({
346
329
} }
347
330
/>
348
331
) }
349
- </ >
332
+ </ div >
350
333
) ;
351
334
} ;
352
335
0 commit comments