-
Notifications
You must be signed in to change notification settings - Fork 77
Expand file tree
/
Copy pathindex.js
More file actions
89 lines (82 loc) · 2.39 KB
/
index.js
File metadata and controls
89 lines (82 loc) · 2.39 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
88
89
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { addField, FieldTitle } from 'ra-core';
import { DatePicker, TimePicker, DateTimePicker,MuiPickersUtilsProvider } from 'material-ui-pickers';
import DateFnsUtils from 'material-ui-pickers/utils/date-fns-utils';
const makePicker = (PickerComponent) => {
class _makePicker extends Component {
onChange(date) {
this.props.input.onChange(date);
this.props.input.onBlur();
}
render() {
const {
input,
options,
label,
source,
resource,
isRequired,
className,
meta,
providerOptions,
} = this.props;
const { touched, error } = meta;
return (
<div className="picker">
<MuiPickersUtilsProvider {...providerOptions}>
<PickerComponent
{...options}
label={<FieldTitle
label={label}
source={source}
resource={resource}
isRequired={isRequired}
/>}
margin="normal"
error={!!(touched && error)}
helperText={touched && error}
ref={(node) => { this.picker = node; }}
className={className}
value={input.value ? input.value : null}
onChange={date => this.onChange(date)}
/>
</MuiPickersUtilsProvider>
</div>
);
}
}
_makePicker.propTypes = {
input: PropTypes.object,
isRequired: PropTypes.bool,
label: PropTypes.string,
meta: PropTypes.object,
options: PropTypes.object,
resource: PropTypes.string,
source: PropTypes.string,
labelTime: PropTypes.string,
className: PropTypes.string,
providerOptions: PropTypes.shape({
utils: PropTypes.func,
locale: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),
}),
};
_makePicker.defaultProps = {
input: {},
isRequired: 'false',
meta: { touched: false, error: false },
options: {},
resource: '',
source: '',
labelTime: '',
className: '',
providerOptions: {
utils: DateFnsUtils,
locale: undefined,
},
};
return _makePicker;
};
export const DateInput = addField(makePicker(DatePicker));
export const TimeInput = addField(makePicker(TimePicker));
export const DateTimeInput = addField(makePicker(DateTimePicker));