Files
react-test/docs/data/material/components/tabs/NavTabs.tsx
how2ice 005cf56baf
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
init project
2025-12-12 14:26:25 +09:00

75 lines
1.8 KiB
TypeScript

import * as React from 'react';
import Box from '@mui/material/Box';
import Tabs from '@mui/material/Tabs';
import Tab from '@mui/material/Tab';
function samePageLinkNavigation(
event: React.MouseEvent<HTMLAnchorElement, MouseEvent>,
) {
if (
event.defaultPrevented ||
event.button !== 0 || // ignore everything but left-click
event.metaKey ||
event.ctrlKey ||
event.altKey ||
event.shiftKey
) {
return false;
}
return true;
}
interface LinkTabProps {
label?: string;
href?: string;
selected?: boolean;
}
function LinkTab(props: LinkTabProps) {
return (
<Tab
component="a"
onClick={(event: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => {
// Routing libraries handle this, you can remove the onClick handle when using them.
if (samePageLinkNavigation(event)) {
event.preventDefault();
}
}}
aria-current={props.selected && 'page'}
{...props}
/>
);
}
export default function NavTabs() {
const [value, setValue] = React.useState(0);
const handleChange = (event: React.SyntheticEvent, newValue: number) => {
// event.type can be equal to focus with selectionFollowsFocus.
if (
event.type !== 'click' ||
(event.type === 'click' &&
samePageLinkNavigation(
event as React.MouseEvent<HTMLAnchorElement, MouseEvent>,
))
) {
setValue(newValue);
}
};
return (
<Box sx={{ width: '100%' }}>
<Tabs
value={value}
onChange={handleChange}
aria-label="nav tabs example"
role="navigation"
>
<LinkTab label="Page One" href="/drafts" />
<LinkTab label="Page Two" href="/trash" />
<LinkTab label="Page Three" href="/spam" />
</Tabs>
</Box>
);
}