forked from mui/material-ui
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDrawer.spec.tsx
More file actions
87 lines (83 loc) · 1.75 KB
/
Drawer.spec.tsx
File metadata and controls
87 lines (83 loc) · 1.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import * as React from 'react';
import { expectType } from '@mui/types';
import Drawer, { DrawerProps } from '@mui/material/Drawer';
import Grow from '@mui/material/Grow';
import { PaperProps } from '@mui/material/Paper';
const paperProps: PaperProps<'span'> = {
component: 'span',
onClick: (event) => {
expectType<React.MouseEvent<HTMLSpanElement, MouseEvent>, typeof event>(event);
},
};
function Test() {
return (
<React.Fragment>
<Drawer open />;
<Drawer open slotProps={{ paper: paperProps }} />;
<Drawer
open
slotProps={{
// @ts-expect-error — unknown props should be rejected
transition: { randomInvalidProp: 'test' },
}}
/>
;
</React.Fragment>
);
}
<Drawer
slotProps={{
root: {
disablePortal: true,
},
backdrop: {
transitionDuration: 1000,
},
paper: {
elevation: 4,
},
docked: {
'aria-hidden': true,
},
transition: {
timeout: 500,
},
}}
/>;
function Noop() {
return null;
}
<Drawer
slots={{
root: 'div',
backdrop: Noop,
docked: 'div',
paper: 'div',
transition: Grow,
}}
/>;
function Custom(props: DrawerProps) {
const { slotProps, ...dialogProps } = props;
return (
<Drawer
slotProps={{
...slotProps,
transition: (ownerState) => {
const transitionProps =
typeof slotProps?.transition === 'function'
? slotProps.transition(ownerState)
: slotProps?.transition;
return {
...transitionProps,
onExited: (node) => {
transitionProps?.onExited?.(node);
},
};
},
}}
{...dialogProps}
>
test
</Drawer>
);
}