Skip to content

Commit ec9e54f

Browse files
committed
Completed date fields with new date and time picker
1 parent 84ac6f5 commit ec9e54f

File tree

3 files changed

+35
-22
lines changed

3 files changed

+35
-22
lines changed

src/components/Renderer/Body/Date.js

+1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ const Date = ({
2727
modified={ isModified }
2828
className={ isModified ? 'modified' : ''}
2929
value={ datetime.format(inputFormat) }
30+
selected={ datetime.toDate() }
3031
/>
3132
</Row>
3233
)}

src/components/Renderer/Filters/Date.js

+22-13
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@ import moment from 'moment';
66
var dateFrom = null;
77
var dateTo = null;
88

9-
const applyFilter = ( name, key, filterer, value ) => {
9+
const applyFilter = ( name, key, filterer, format, value ) => {
1010
let filter = {};
1111

1212
if (key === 0) {
13-
dateFrom = moment(value).format('YYYY-MM-DD HH:mm:ss');
13+
dateFrom = moment(value).format(format);
1414
} else {
15-
dateTo = moment(value).format('YYYY-MM-DD HH:mm:ss');
15+
dateTo = moment(value).format(format);
1616
}
1717

18-
if ( dateFrom || dateTo ) {
18+
if (dateFrom || dateTo) {
1919
filter = {
2020
operator: OPERATOR.BETWEEN,
2121
field: name,
@@ -28,26 +28,35 @@ const applyFilter = ( name, key, filterer, value ) => {
2828
filterer(name, filter);
2929
};
3030

31-
const Date = ({ name, value = [], filterer }) => (
31+
const Date = ({
32+
name,
33+
value = [],
34+
filterer,
35+
inputFormat = 'YYYY-MM-DD',
36+
parse = 'YYYY-MM-DD HH:mm:ss',
37+
showTimeSelect = false
38+
}) => (
3239
<Fragment>
3340
<Row padding="0 0 5px">
3441
<Datetime
35-
name={ name }
3642
className="rdt-filter-input date to"
37-
value={ value[0] || '' }
43+
value={ value[0] ? moment(value[0], parse).format(inputFormat) : '' }
3844
placeholder="From"
39-
dateFormat="YYYY-MM-DD HH:mm:ss"
40-
onChange={ applyFilter.bind(this, name, 0, filterer) }
45+
showTimeSelect={ showTimeSelect }
46+
onChange={ applyFilter.bind(this, name, 0, filterer, parse) }
47+
selected={ value[0] && moment(value[0], parse).toDate() }
48+
dateFormat={ inputFormat }
4149
/>
4250
</Row>
4351
<Row>
4452
<Datetime
45-
name={ name }
4653
className="rdt-filter-input date to"
47-
value={ value[1] || '' }
48-
onChange={ applyFilter.bind(this, name, 1, filterer) }
54+
value={ value[1] ? moment(value[1], parse).format(inputFormat) : '' }
4955
placeholder="To"
50-
dateFormat="YYYY-MM-DD HH:mm:ss"
56+
showTimeSelect={ showTimeSelect }
57+
onChange={ applyFilter.bind(this, name, 1, filterer, parse) }
58+
selected={ value[1] && moment(value[1], parse).toDate() }
59+
dateFormat={ inputFormat }
5160
/>
5261
</Row>
5362
</Fragment>

src/hoc/withData.js

+12-9
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@ import { useSelector, shallowEqual } from 'react-redux';
44
import ConfigContext from '../context';
55
import { createSelector } from 'reselect';
66
import { MODIFY_DATA } from '../actions';
7+
import moment from 'moment';
78

89
const withData = WrappedComponent => (props) => {
910
const { itemIndex, colConfig, primaryKey, schema } = props;
10-
const { selector, editable, name } = colConfig;
11+
const { selector, editable, name, parse = 'YYYY-MM-DD HH:mm:ss' } = colConfig;
1112
const { getData, thunk, action, config: { entity = {} } } = useContext(ConfigContext);
1213
const { selectors = {} } = entity;
1314

@@ -30,14 +31,16 @@ const withData = WrappedComponent => (props) => {
3031
(item) => _.get(item, name)
3132
));
3233

33-
const handleChange = (event) => (
34-
action(MODIFY_DATA)({
35-
pk: primaryKey,
36-
pkValue: primarKeyValue,
37-
key: event.target.name,
38-
value: event.target.value
39-
})
40-
);
34+
const handleChange = (value) => {
35+
return (
36+
action(MODIFY_DATA)({
37+
pk: primaryKey,
38+
pkValue: primarKeyValue,
39+
key: name,
40+
value: moment(value).format(parse)
41+
})
42+
);
43+
}
4144

4245
return (
4346
<WrappedComponent

0 commit comments

Comments
 (0)