Skip to content

Commit

Permalink
WRR-12807: Added VirtualList qa-sampler for changing dataSize
Browse files Browse the repository at this point in the history
and `itemSizes`

Enact-DCO-1.0-Signed-off-by: Mikyung Kim (mikyung27.kim@lge.com)
  • Loading branch information
MikyungKim committed Dec 4, 2024
1 parent 3e51a0b commit 0826ab5
Showing 1 changed file with 46 additions and 3 deletions.
49 changes: 46 additions & 3 deletions samples/sampler/stories/qa/VirtualList.js
Original file line number Diff line number Diff line change
Expand Up @@ -545,13 +545,13 @@ WithContainerItemsHaveSpottableControls.parameters = {

const fixedItemSizes = new Array(16).fill(ri.scale(390));
const variableItemSizes = fixedItemSizes.map((size, index) => {
return index % 2 ? size * 2 : size;
return index % 2 ? size * 2 : size;
});

// eslint-disable-next-line enact/prop-types, enact/display-name
const renderVirtualListItem = (data) => ({index, ...rest}) => {
const renderVirtualListItem = (data, onClick = {}) => ({index, ...rest}) => {
return (
<Item {...rest} style={{width:data[index], margin: ri.scaleToRem(15)}}>
<Item {...rest} style={{width: data[index], margin: ri.scaleToRem(15)}} onClick={onClick(index)}>
{`item ${index}`}
</Item>
);
Expand Down Expand Up @@ -624,3 +624,46 @@ WithChangingItemSizes.storyName = 'with changing item sizes';
WithChangingItemSizes.parameters = {
propTables: [Config]
};

const initializeItemSizes = (size) => {
const data = new Array(size).fill(ri.scale(390));
return data.map((val, index) => index % 2 ? val * 2 : val);
};

export const WithChangingDataSizeAndItemSizes = () => {
const [data, setData] = useState(initializeItemSizes(16));

const handleRestore = useCallback(() => {
setData(initializeItemSizes(16));
}, []);

const handleItemClick = useCallback(index => () => {
setData(data.filter((_, i) => i !== index));
}, [data]);

return (
<Column>
<Cell shrink>
<Button size="small" onClick={handleRestore}>Restore items</Button>
</Cell>
<br />
<br />
<Cell>
<VirtualList
dataSize={data.length}
direction="horizontal"
itemRenderer={renderVirtualListItem(data, handleItemClick)}
itemSize={{
size: data,
minSize: Math.min(...data)
}}
/>
</Cell>
</Column>
);
};

WithChangingDataSizeAndItemSizes.storyName = 'with changing dataSize and itemSizes';
WithChangingDataSizeAndItemSizes.parameters = {
propTables: [Config]
};

0 comments on commit 0826ab5

Please sign in to comment.