Some checks failed
No response / noResponse (push) Has been cancelled
CI / Continuous releases (push) Has been cancelled
CI / test-dev (macos-latest) (push) Has been cancelled
CI / test-dev (ubuntu-latest) (push) Has been cancelled
CI / test-dev (windows-latest) (push) Has been cancelled
Maintenance / main (push) Has been cancelled
Scorecards supply-chain security / Scorecards analysis (push) Has been cancelled
CodeQL / Analyze (push) Has been cancelled
42 lines
1.1 KiB
JavaScript
42 lines
1.1 KiB
JavaScript
import * as React from 'react';
|
|
import Tabs from '@mui/joy/Tabs';
|
|
import TabList from '@mui/joy/TabList';
|
|
import Tab from '@mui/joy/Tab';
|
|
|
|
export default function TabsSticky() {
|
|
const [sticky, setSticky] = React.useState('top');
|
|
const items = [
|
|
<TabList
|
|
key="tablist"
|
|
sticky={sticky}
|
|
variant="soft"
|
|
underlinePlacement={{ top: 'bottom', bottom: 'top' }[sticky]}
|
|
>
|
|
<Tab indicatorPlacement={{ top: 'bottom', bottom: 'top' }[sticky]} value="top">
|
|
Sticky top
|
|
</Tab>
|
|
<Tab
|
|
indicatorPlacement={{ top: 'bottom', bottom: 'top' }[sticky]}
|
|
value="bottom"
|
|
>
|
|
Sticky bottom
|
|
</Tab>
|
|
</TabList>,
|
|
<div key="tabpanel">
|
|
{[...new Array(50)].map((_, index) => (
|
|
<div key={index}>Long content</div>
|
|
))}
|
|
</div>,
|
|
];
|
|
return (
|
|
<Tabs
|
|
aria-label="Sticky tabs"
|
|
value={sticky}
|
|
onChange={(event, newValue) => setSticky(newValue)}
|
|
sx={{ p: 1, maxHeight: 200, overflowY: 'auto' }}
|
|
>
|
|
{sticky === 'top' ? items : items.reverse()}
|
|
</Tabs>
|
|
);
|
|
}
|