@mui/material#Zoom TypeScript Examples
The following examples show how to use
@mui/material#Zoom.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: App.tsx From genshin-optimizer with MIT License | 6 votes |
function ScrollTop({ children }: { children: React.ReactElement }) {
const trigger = useScrollTrigger({
target: window,
disableHysteresis: true,
threshold: 100,
});
const handleClick = (event: React.MouseEvent<HTMLDivElement>) => {
const anchor = (
(event.target as HTMLDivElement).ownerDocument || document
).querySelector('#back-to-top-anchor');
if (anchor) {
anchor.scrollIntoView({
behavior: 'smooth',
block: 'center',
});
}
};
return (
<Zoom in={trigger}>
<Box
onClick={handleClick}
role="presentation"
sx={{ position: 'fixed', bottom: 85, right: 16 }}
>
{children}
</Box>
</Zoom>
);
}
Example #2
Source File: VehCard.tsx From mojito_pdm with Creative Commons Attribution Share Alike 4.0 International | 5 votes |
VehCard: React.FC<Car> = ({
name,
brand,
description,
brandLogo,
image,
price,
category,
spawncode,
trunkspace,
performance
}) => {
const theme = useTheme();
const [open, setOpen] = useState(false)
const testDrive = async () => {
await fetchNui("test_drive", {vehicle: spawncode})
}
// Functions
const handleOpen = () => setOpen(true)
const handleClose = () => setOpen(false)
return (
<Card sx={{
boxShadow: theme.shadows[3],
margin: theme.spacing(2)
}} variant="outlined">
<CardHeader
avatar={<img height={40} style={{maxWidth: 100, maxHeight: 40}} src={brandLogo} alt={brand}/>}
title={name}
subheader={category}
/>
<CardMedia style={{height: "150px"}} image={image}/>
<CardActions>
<Tooltip TransitionComponent={Zoom} sx={{maxWidth: 120}} arrow title="Test drive this vehicle">
<Button
size="small"
variant={theme.palette.mode === "dark" ? "contained" : "outlined"}
color="primary"
startIcon={<DirectionsCarIcon/>}
onClick={testDrive}
disableElevation
>
TEST DRIVE
</Button>
</Tooltip>
<Tooltip TransitionComponent={Zoom} arrow sx={{maxWidth: 120}}
title="View more information about this vehicle">
<Button
size="small"
variant={theme.palette.mode === "dark" ? "contained" : "outlined"}
color="primary"
startIcon={<AssignmentIcon/>}
onClick={handleOpen}
disableElevation
>
MORE INFO
</Button>
</Tooltip>
<Modal
open={open}
onClose={handleClose}
>
{<ModalBody
name={name}
brand={brand}
description={description}
price={price}
trunkspace={trunkspace}
setOpen={setOpen}
performance={performance}
spawncode={spawncode}
/>}
</Modal>
</CardActions>
</Card>
)
}
Example #3
Source File: Profiler.tsx From NekoMaid with MIT License | 5 votes |
Profiler: React.FC = () => { const plugin = usePlugin() const theme = useTheme() const globalData = useGlobalData() const [tab, setTab] = useState(0) const [key, setTKey] = useState(0) const [status, setStatus] = useState(!!globalData.profilerStarted) useEffect(() => { const off = plugin.on('profiler:status', setStatus) return () => { off() } }, []) const transitionDuration = { enter: theme.transitions.duration.enteringScreen, exit: theme.transitions.duration.leavingScreen } const Elm = components[tab] const createFab = (onClick: any, children: any, show: boolean) => <Zoom in={show} timeout={transitionDuration} style={{ transitionDelay: (show ? transitionDuration.exit : 0) + 'ms' }} unmountOnExit > <Fab color='primary' sx={{ position: 'fixed', bottom: { xs: 16, sm: 40 }, right: { xs: 16, sm: 40 }, zIndex: 3 }} onClick={onClick} >{children}</Fab> </Zoom> return <Box sx={{ minHeight: status || !tab ? '100%' : undefined }}> <Toolbar /> <Paper square variant='outlined' sx={{ margin: '0 -1px', position: 'fixed', width: 'calc(100% + 1px)', zIndex: 3 }}> <Tabs value={tab} onChange={(_, it) => setTab(it)} variant='scrollable' scrollButtons='auto'> <Tab label={lang.profiler.summary} /> <Tab label='Timings' disabled={!globalData.hasTimings} /> <Tab label={lang.profiler.plugins} /> <Tab label={lang.profiler.carbageCollection} /> <Tab label={lang.profiler.entities} /> <Tab label={lang.profiler.heap} /> <Tab label={lang.profiler.threads} /> </Tabs> </Paper> <Tabs /> {tab < 4 && !status ? <Box sx={{ textAlign: 'center', marginTop: '40vh' }}>{lang.profiler.notStarted}</Box> : Elm && <Elm key={key} />} {createFab(() => plugin.emit('profiler:status', !status), status ? <Stop /> : <PlayArrow />, tab < 4)} {createFab(() => setTKey(key + 1), <Refresh />, tab >= 4)} </Box> }
Example #4
Source File: Mobile.tsx From GTAV-NativeDB with MIT License | 4 votes |
function Mobile({ ...rest }: AppBarProps) {
const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);
const [settingsOpen, setSettingsOpen] = useState(false)
const [searchOpen, setSearchOpen] = useState(false)
const [statsDialog, setStatsDialog] = useState(false)
const settings = useAppBarSettings()
const handleSettingsOpen = useCallback(() => {
setSettingsOpen(true)
}, [setSettingsOpen])
const handleSettingsClose = useCallback(() => {
setSettingsOpen(false)
}, [setSettingsOpen])
const handleMenuOpen = useCallback((event: MouseEvent<HTMLElement>) => {
setAnchorEl(event.currentTarget)
}, [setAnchorEl])
const handleMenuClose = useCallback(() => {
setAnchorEl(null)
}, [setAnchorEl])
const handleSearchOpen = useCallback(() => {
setSearchOpen(true)
}, [setSearchOpen])
const handleSearchClose = useCallback(() => {
setSearchOpen(false)
}, [setSearchOpen])
const handleStatsDialogOpen = useCallback(() => {
setStatsDialog(true)
}, [setStatsDialog])
const handleStatsDialogClose = useCallback(() => {
setStatsDialog(false)
}, [setStatsDialog])
const actions: AppBarActionProps[] = useMemo(() => [
...(settings.actions ?? []),
{
text: 'Settings',
mobileIcon: SettingsIcon,
buttonProps: {
onClick: handleSettingsOpen
}
},
{
text: 'Stats',
mobileIcon: StatsIcon,
buttonProps: {
onClick: handleStatsDialogOpen
}
},
{
text: 'Generate Code',
mobileIcon: CodeIcon,
buttonProps: {
href: '/generate-code'
}
},
{
text: 'View on Github',
mobileIcon: GithubIcon,
buttonProps: {
href: 'https://github.com/DottieDot/GTAV-NativeDB',
target: '_blank'
}
}
], [settings, handleSettingsOpen, handleStatsDialogOpen])
return (
<Box {...rest}>
<StatsDialog open={statsDialog} onClose={handleStatsDialogClose} />
<SettingsDrawer open={settingsOpen} onClose={handleSettingsClose} />
<MaterialAppBar position="sticky">
{settings.search && (
<Box sx={{ position: 'absolute', top: 0, left: 0, right: 0, bottom: 0 }}>
<Zoom in={searchOpen}>
<Box sx={{ height: '100%', position: 'relative', zIndex: 1 }}>
<MobileSearch
search={settings.search}
onClose={handleSearchClose}
/>
</Box>
</Zoom>
</Box>
)}
<Toolbar>
<Typography variant="h6" component="div">
<Link
to="/natives"
color="inherit"
underline="none"
component={RouterLink}
>
{settings?.title ?? 'GTA V Native Reference'}
</Link>
</Typography>
<Box
sx={{ display: 'flex', flex: 1 }}
/>
<StatusButton />
{settings?.search && (
<IconButton onClick={handleSearchOpen} aria-label="search">
<SearchIcon />
</IconButton>
)}
<IconButton onClick={handleMenuOpen} aria-label="more">
<MoreIcon />
</IconButton>
<Menu
anchorEl={anchorEl}
open={!!anchorEl}
onClose={handleMenuClose}
onClick={handleMenuClose}
>
{actions.map(action => (
<AppBarAction
key={action.text}
{...action}
/>
))}
</Menu>
</Toolbar>
</MaterialAppBar>
</Box>
)
}