Skip to content

Commit d102678

Browse files
authored
chore: Update virtualized horizontal grid (#1460)
1 parent df2fbc6 commit d102678

File tree

2 files changed

+41
-27
lines changed

2 files changed

+41
-27
lines changed

web_ui/packages/ui/src/virtualized-horizontal-grid/virtualized-horizontal-grid.tsx

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Copyright (C) 2022-2025 Intel Corporation
22
// LIMITED EDGE SOFTWARE DISTRIBUTION LICENSE
33

4-
import { ReactNode } from 'react';
4+
import { ComponentProps, ReactNode } from 'react';
55

66
import { DimensionValue, View } from '@adobe/react-spectrum';
77
import { type Responsive } from '@react-types/shared';
@@ -13,30 +13,37 @@ import classes from './virtualized-horizontal-grid.module.scss';
1313

1414
interface VirtualizedHorizontalGridProps<T> {
1515
items: T[];
16-
size: number;
17-
containerHeight?: Responsive<DimensionValue>;
16+
height?: Responsive<DimensionValue>;
1817
renderItem: (item: T) => ReactNode;
1918
idFormatter: (item: T) => string;
2019
textValueFormatter: (item: T) => string;
20+
layoutOptions: HorizontalLayoutOptions;
21+
listBoxItemStyles?: ComponentProps<typeof ListBoxItem>['style'];
2122
}
2223

2324
export const VirtualizedHorizontalGrid = <T,>({
24-
size,
2525
items,
26-
containerHeight,
26+
height = '100%',
2727
renderItem,
2828
idFormatter,
2929
textValueFormatter,
30+
layoutOptions,
31+
listBoxItemStyles,
3032
}: VirtualizedHorizontalGridProps<T>) => {
3133
return (
32-
<View position={'relative'} width={'100%'} height={`calc(${containerHeight} + 1px)`}>
33-
<Virtualizer<HorizontalLayoutOptions> layout={HorizontalLayout} layoutOptions={{ size, gap: 4 }}>
34+
<View position={'relative'} width={'100%'} height={height}>
35+
<Virtualizer<HorizontalLayoutOptions> layout={HorizontalLayout} layoutOptions={layoutOptions}>
3436
<AriaComponentsListBox className={classes.container} orientation='horizontal'>
3537
{items.map((item) => {
3638
const id = idFormatter(item);
3739

3840
return (
39-
<ListBoxItem id={id} key={id} textValue={textValueFormatter(item)}>
41+
<ListBoxItem
42+
id={id}
43+
key={id}
44+
textValue={textValueFormatter(item)}
45+
style={listBoxItemStyles}
46+
>
4047
{renderItem(item)}
4148
</ListBoxItem>
4249
);

web_ui/src/pages/camera-page/components/sidebar/sidebar-thumbnail.component.tsx

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -38,27 +38,34 @@ export const SidebarThumbnail = ({ screenshots, isCloseSidebar = false }: Sideba
3838
return deleteMany([id]);
3939
};
4040

41+
const containerHeight = isCloseSidebar ? `size-800` : `size-1250`;
42+
4143
return (
4244
<>
43-
<VirtualizedHorizontalGrid
44-
items={screenshots}
45-
key={screenshots.map(getId).join('-')}
46-
containerHeight={isCloseSidebar ? `size-800` : `size-1250`}
47-
size={isCloseSidebar ? 60 : 96}
48-
idFormatter={getId}
49-
textValueFormatter={getId}
50-
renderItem={({ id, dataUrl, labelIds, file }) => (
51-
<AnimatedThumbnail
52-
id={id}
53-
key={id}
54-
url={String(dataUrl)}
55-
labelIds={labelIds}
56-
size={isCloseSidebar ? 'size-800' : 'size-1200'}
57-
isVideo={isVideoFile(file)}
58-
onDeleteItem={handleDeleteItem}
59-
/>
60-
)}
61-
/>
45+
<View height={containerHeight}>
46+
<VirtualizedHorizontalGrid
47+
items={screenshots}
48+
key={screenshots.map(getId).join('-')}
49+
layoutOptions={{
50+
gap: 4,
51+
size: isCloseSidebar ? 60 : 95,
52+
}}
53+
idFormatter={getId}
54+
textValueFormatter={getId}
55+
renderItem={({ id, dataUrl, labelIds, file }) => (
56+
<AnimatedThumbnail
57+
id={id}
58+
key={id}
59+
url={String(dataUrl)}
60+
labelIds={labelIds}
61+
size={isCloseSidebar ? 'size-800' : 'size-1200'}
62+
isVideo={isVideoFile(file)}
63+
onDeleteItem={handleDeleteItem}
64+
/>
65+
)}
66+
/>
67+
</View>
68+
6269
<View paddingTop={'size-250'} paddingBottom={isCloseSidebar ? '' : 'size-250'}>
6370
<SpectrumLink UNSAFE_style={{ color: 'var(--energy-blue)' }}>
6471
<Link

0 commit comments

Comments
 (0)