Skip to content

Commit 39634f5

Browse files
sperry94oliviertassinari
authored andcommitted
[docs] Add Pickers TypeScript demos (#15103)
1 parent aa196b4 commit 39634f5

File tree

4 files changed

+195
-0
lines changed

4 files changed

+195
-0
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import React from 'react';
2+
import PropTypes from 'prop-types';
3+
import { createStyles, withStyles, WithStyles, Theme } from '@material-ui/core/styles';
4+
import TextField from '@material-ui/core/TextField';
5+
6+
const styles = (theme: Theme) =>
7+
createStyles({
8+
container: {
9+
display: 'flex',
10+
flexWrap: 'wrap',
11+
},
12+
textField: {
13+
marginLeft: theme.spacing(1),
14+
marginRight: theme.spacing(1),
15+
width: 200,
16+
},
17+
});
18+
19+
export type Props = WithStyles<typeof styles>;
20+
21+
function DateAndTimePickers(props: Props) {
22+
const { classes } = props;
23+
24+
return (
25+
<form className={classes.container} noValidate>
26+
<TextField
27+
id="datetime-local"
28+
label="Next appointment"
29+
type="datetime-local"
30+
defaultValue="2017-05-24T10:30"
31+
className={classes.textField}
32+
InputLabelProps={{
33+
shrink: true,
34+
}}
35+
/>
36+
</form>
37+
);
38+
}
39+
40+
DateAndTimePickers.propTypes = {
41+
classes: PropTypes.object.isRequired,
42+
} as any;
43+
44+
export default withStyles(styles)(DateAndTimePickers);
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import React from 'react';
2+
import PropTypes from 'prop-types';
3+
import { createStyles, withStyles, WithStyles, Theme } from '@material-ui/core/styles';
4+
import TextField from '@material-ui/core/TextField';
5+
6+
const styles = (theme: Theme) =>
7+
createStyles({
8+
container: {
9+
display: 'flex',
10+
flexWrap: 'wrap',
11+
},
12+
textField: {
13+
marginLeft: theme.spacing(1),
14+
marginRight: theme.spacing(1),
15+
width: 200,
16+
},
17+
});
18+
19+
export type Props = WithStyles<typeof styles>;
20+
21+
function DatePickers(props: Props) {
22+
const { classes } = props;
23+
24+
return (
25+
<form className={classes.container} noValidate>
26+
<TextField
27+
id="date"
28+
label="Birthday"
29+
type="date"
30+
defaultValue="2017-05-24"
31+
className={classes.textField}
32+
InputLabelProps={{
33+
shrink: true,
34+
}}
35+
/>
36+
</form>
37+
);
38+
}
39+
40+
DatePickers.propTypes = {
41+
classes: PropTypes.object.isRequired,
42+
} as any;
43+
44+
export default withStyles(styles)(DatePickers);
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import 'date-fns';
2+
import React from 'react';
3+
import PropTypes from 'prop-types';
4+
import Grid from '@material-ui/core/Grid';
5+
import { createStyles, withStyles, WithStyles } from '@material-ui/core/styles';
6+
import DateFnsUtils from '@date-io/date-fns';
7+
import { MuiPickersUtilsProvider, TimePicker, DatePicker } from 'material-ui-pickers';
8+
9+
const styles = createStyles({
10+
grid: {
11+
width: '60%',
12+
},
13+
});
14+
15+
export type Props = WithStyles<typeof styles>;
16+
17+
export interface State {
18+
selectedDate: any;
19+
}
20+
21+
class MaterialUIPickers extends React.Component<Props, State> {
22+
state = {
23+
// The first commit of Material-UI
24+
selectedDate: new Date('2014-08-18T21:11:54'),
25+
};
26+
27+
handleDateChange = (date: any) => {
28+
this.setState({ selectedDate: date });
29+
};
30+
31+
render() {
32+
const { classes } = this.props;
33+
const { selectedDate } = this.state;
34+
35+
return (
36+
<MuiPickersUtilsProvider utils={DateFnsUtils}>
37+
<Grid container className={classes.grid} justify="space-around">
38+
<DatePicker
39+
margin="normal"
40+
label="Date picker"
41+
value={selectedDate}
42+
onChange={this.handleDateChange}
43+
/>
44+
<TimePicker
45+
margin="normal"
46+
label="Time picker"
47+
value={selectedDate}
48+
onChange={this.handleDateChange}
49+
/>
50+
</Grid>
51+
</MuiPickersUtilsProvider>
52+
);
53+
}
54+
}
55+
56+
(MaterialUIPickers as React.ComponentClass<Props, State>).propTypes = {
57+
classes: PropTypes.object.isRequired,
58+
} as any;
59+
60+
export default withStyles(styles)(MaterialUIPickers);
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import React from 'react';
2+
import PropTypes from 'prop-types';
3+
import { createStyles, withStyles, WithStyles, Theme } from '@material-ui/core/styles';
4+
import TextField from '@material-ui/core/TextField';
5+
6+
const styles = (theme: Theme) =>
7+
createStyles({
8+
container: {
9+
display: 'flex',
10+
flexWrap: 'wrap',
11+
},
12+
textField: {
13+
marginLeft: theme.spacing(1),
14+
marginRight: theme.spacing(1),
15+
width: 200,
16+
},
17+
});
18+
19+
export type Props = WithStyles<typeof styles>;
20+
21+
function TimePickers(props: Props) {
22+
const { classes } = props;
23+
24+
return (
25+
<form className={classes.container} noValidate>
26+
<TextField
27+
id="time"
28+
label="Alarm clock"
29+
type="time"
30+
defaultValue="07:30"
31+
className={classes.textField}
32+
InputLabelProps={{
33+
shrink: true,
34+
}}
35+
inputProps={{
36+
step: 300, // 5 min
37+
}}
38+
/>
39+
</form>
40+
);
41+
}
42+
43+
TimePickers.propTypes = {
44+
classes: PropTypes.object.isRequired,
45+
} as any;
46+
47+
export default withStyles(styles)(TimePickers);

0 commit comments

Comments
 (0)