@hipay/hipay-material-ui 2.0.0-beta.59 → 2.0.0-beta.60
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +58 -0
- package/HiCell/CellNumeric.js +1 -1
- package/HiDatePicker/HiDatePicker.js +11 -2
- package/HiDatePicker/HiDateRangePicker.js +49 -8
- package/HiDatePicker/HiDateRangeSelector.js +39 -30
- package/HiDatePicker/Overlays/YearPickerOverlay.js +8 -3
- package/HiForm/HiFormControl.js +26 -11
- package/HiForm/HiFormLabel.js +3 -1
- package/HiForm/HiInput.js +20 -1
- package/HiForm/HiUpload.js +290 -45
- package/HiForm/HiUploadField.js +19 -51
- package/HiForm/HiUploadInput.js +18 -7
- package/HiSelectNew/HiDynamicSelect.js +3 -3
- package/HiSelectNew/HiNestedSelect.js +9 -9
- package/HiSelectNew/HiNestedSelectContent.js +9 -9
- package/HiSelectNew/HiSelect.js +22 -23
- package/HiSelectNew/HiSelectContent.js +7 -7
- package/HiSelectableList/HiSelectableListItem.js +3 -7
- package/README.md +1 -1
- package/es/HiCell/CellNumeric.js +1 -1
- package/es/HiDatePicker/HiDatePicker.js +11 -2
- package/es/HiDatePicker/HiDateRangePicker.js +42 -8
- package/es/HiDatePicker/HiDateRangeSelector.js +38 -27
- package/es/HiDatePicker/Overlays/YearPickerOverlay.js +8 -3
- package/es/HiForm/HiFormControl.js +27 -11
- package/es/HiForm/HiFormLabel.js +3 -1
- package/es/HiForm/HiInput.js +19 -1
- package/es/HiForm/HiUpload.js +276 -35
- package/es/HiForm/HiUploadField.js +19 -43
- package/es/HiForm/HiUploadInput.js +16 -7
- package/es/HiSelectNew/HiSelect.js +15 -16
- package/es/HiSelectableList/HiSelectableListItem.js +3 -7
- package/es/utils/helpers.js +6 -5
- package/index.es.js +1 -1
- package/index.js +1 -1
- package/package.json +3 -2
- package/umd/hipay-material-ui.development.js +29594 -21713
- package/umd/hipay-material-ui.production.min.js +2 -2
- package/utils/helpers.js +6 -4
@@ -47,12 +47,12 @@ var _helpers = require("../utils/helpers");
|
|
47
47
|
*/
|
48
48
|
function getRecursiveFinalItemIdList(itemList) {
|
49
49
|
var finalItemIdList = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
50
|
-
return (0, _toConsumableArray2.default)(finalItemIdList)
|
50
|
+
return [].concat((0, _toConsumableArray2.default)(finalItemIdList), (0, _toConsumableArray2.default)(itemList.reduce(function (memo, item) {
|
51
51
|
if (item.children) {
|
52
52
|
return getRecursiveFinalItemIdList(item.children, memo);
|
53
53
|
}
|
54
54
|
|
55
|
-
return (0, _toConsumableArray2.default)(memo)
|
55
|
+
return [].concat((0, _toConsumableArray2.default)(memo), [item.id]);
|
56
56
|
}, [])));
|
57
57
|
}
|
58
58
|
/**
|
@@ -128,7 +128,7 @@ function buildFilteredItemList(itemList) {
|
|
128
128
|
}
|
129
129
|
|
130
130
|
return {
|
131
|
-
l: (0, _toConsumableArray2.default)(memoItemList)
|
131
|
+
l: [].concat((0, _toConsumableArray2.default)(memoItemList), [(0, _extends2.default)({}, item, disabledParent && {
|
132
132
|
disabled: true,
|
133
133
|
hideCheckbox: true // don't display checkbox on disabled parent
|
134
134
|
|
@@ -147,7 +147,7 @@ function buildFilteredItemList(itemList) {
|
|
147
147
|
|
148
148
|
var itemSelected = selectedItemIdList.includes(item.id);
|
149
149
|
return {
|
150
|
-
l: (0, _toConsumableArray2.default)(memoItemList)
|
150
|
+
l: [].concat((0, _toConsumableArray2.default)(memoItemList), [(0, _extends2.default)({
|
151
151
|
displayed: itemVisible || visibleParent
|
152
152
|
}, item)]),
|
153
153
|
s: itemSelected && memoSelected,
|
@@ -266,9 +266,9 @@ function (_React$PureComponent) {
|
|
266
266
|
}), item);
|
267
267
|
} else {
|
268
268
|
// select parent > add each selectable child without duplicates.
|
269
|
-
onChange(event, (0, _toConsumableArray2.default)(value.filter(function (vid) {
|
269
|
+
onChange(event, [].concat((0, _toConsumableArray2.default)(value.filter(function (vid) {
|
270
270
|
return !parentSelectableItemIdList.includes(vid);
|
271
|
-
}))
|
271
|
+
})), (0, _toConsumableArray2.default)(parentSelectableItemIdList)), item);
|
272
272
|
}
|
273
273
|
} else if (value.includes(item.id)) {
|
274
274
|
// unselect item
|
@@ -276,7 +276,7 @@ function (_React$PureComponent) {
|
|
276
276
|
return id !== item.id;
|
277
277
|
}), item);
|
278
278
|
} else {
|
279
|
-
onChange(event, (0, _toConsumableArray2.default)(value)
|
279
|
+
onChange(event, [].concat((0, _toConsumableArray2.default)(value), [item.id]), item);
|
280
280
|
}
|
281
281
|
};
|
282
282
|
|
@@ -315,14 +315,14 @@ function (_React$PureComponent) {
|
|
315
315
|
centered: true,
|
316
316
|
hideCheckbox: true,
|
317
317
|
label: translations.no_result_match
|
318
|
-
}]) : (0, _toConsumableArray2.default)(loading ? [{
|
318
|
+
}]) : [].concat((0, _toConsumableArray2.default)(loading ? [{
|
319
319
|
id: '_loading',
|
320
320
|
type: 'loader',
|
321
321
|
disabled: true,
|
322
322
|
centered: true,
|
323
323
|
hideCheckbox: true,
|
324
324
|
label: 'loading'
|
325
|
-
}] : [])
|
325
|
+
}] : []), (0, _toConsumableArray2.default)(hasAll ? [{
|
326
326
|
id: '_all',
|
327
327
|
iconAll: iconAll,
|
328
328
|
label: translations.all,
|
@@ -43,12 +43,12 @@ var _helpers = require("../utils/helpers");
|
|
43
43
|
*/
|
44
44
|
function getRecursiveFinalItemIdList(itemList) {
|
45
45
|
var finalItemIdList = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
46
|
-
return (0, _toConsumableArray2.default)(finalItemIdList)
|
46
|
+
return [].concat((0, _toConsumableArray2.default)(finalItemIdList), (0, _toConsumableArray2.default)(itemList.reduce(function (memo, item) {
|
47
47
|
if (item.children) {
|
48
48
|
return getRecursiveFinalItemIdList(item.children, memo);
|
49
49
|
}
|
50
50
|
|
51
|
-
return (0, _toConsumableArray2.default)(memo)
|
51
|
+
return [].concat((0, _toConsumableArray2.default)(memo), [item.id]);
|
52
52
|
}, [])));
|
53
53
|
}
|
54
54
|
/**
|
@@ -124,7 +124,7 @@ function buildFilteredItemList(itemList) {
|
|
124
124
|
}
|
125
125
|
|
126
126
|
return {
|
127
|
-
l: (0, _toConsumableArray2.default)(memoItemList)
|
127
|
+
l: [].concat((0, _toConsumableArray2.default)(memoItemList), [(0, _extends2.default)({}, item, disabledParent && {
|
128
128
|
disabled: true,
|
129
129
|
hideCheckbox: true // don't display checkbox on disabled parent
|
130
130
|
|
@@ -143,7 +143,7 @@ function buildFilteredItemList(itemList) {
|
|
143
143
|
|
144
144
|
var itemSelected = selectedItemIdList.includes(item.id);
|
145
145
|
return {
|
146
|
-
l: (0, _toConsumableArray2.default)(memoItemList)
|
146
|
+
l: [].concat((0, _toConsumableArray2.default)(memoItemList), [(0, _extends2.default)({
|
147
147
|
displayed: itemVisible || visibleParent
|
148
148
|
}, item)]),
|
149
149
|
s: itemSelected && memoSelected,
|
@@ -223,9 +223,9 @@ function (_React$PureComponent) {
|
|
223
223
|
}), item);
|
224
224
|
} else {
|
225
225
|
// select parent > add each selectable child without duplicates.
|
226
|
-
onChange(event, (0, _toConsumableArray2.default)(value.filter(function (vid) {
|
226
|
+
onChange(event, [].concat((0, _toConsumableArray2.default)(value.filter(function (vid) {
|
227
227
|
return !parentSelectableItemIdList.includes(vid);
|
228
|
-
}))
|
228
|
+
})), (0, _toConsumableArray2.default)(parentSelectableItemIdList)), item);
|
229
229
|
}
|
230
230
|
} else if (value.includes(item.id)) {
|
231
231
|
// unselect item
|
@@ -233,7 +233,7 @@ function (_React$PureComponent) {
|
|
233
233
|
return id !== item.id;
|
234
234
|
}), item);
|
235
235
|
} else {
|
236
|
-
onChange(event, (0, _toConsumableArray2.default)(value)
|
236
|
+
onChange(event, [].concat((0, _toConsumableArray2.default)(value), [item.id]), item);
|
237
237
|
}
|
238
238
|
};
|
239
239
|
|
@@ -271,14 +271,14 @@ function (_React$PureComponent) {
|
|
271
271
|
centered: true,
|
272
272
|
hideCheckbox: true,
|
273
273
|
label: translations.no_result_match
|
274
|
-
}]) : (0, _toConsumableArray2.default)(loading ? [{
|
274
|
+
}]) : [].concat((0, _toConsumableArray2.default)(loading ? [{
|
275
275
|
id: '_loading',
|
276
276
|
type: 'loader',
|
277
277
|
disabled: true,
|
278
278
|
centered: true,
|
279
279
|
hideCheckbox: true,
|
280
280
|
label: 'loading'
|
281
|
-
}] : [])
|
281
|
+
}] : []), (0, _toConsumableArray2.default)(hasAll ? [{
|
282
282
|
id: '_all',
|
283
283
|
iconAll: iconAll,
|
284
284
|
label: translations.all,
|
package/HiSelectNew/HiSelect.js
CHANGED
@@ -148,22 +148,22 @@ function (_React$PureComponent) {
|
|
148
148
|
var search = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
|
149
149
|
var loading = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
150
150
|
// build item list
|
151
|
-
var itemList = (0, _toConsumableArray2.default)(loading ? [{
|
151
|
+
var itemList = [].concat((0, _toConsumableArray2.default)(loading ? [{
|
152
152
|
id: '_loading',
|
153
153
|
type: 'loader',
|
154
154
|
disabled: true,
|
155
155
|
centered: true,
|
156
156
|
hideCheckbox: true,
|
157
157
|
label: 'loading'
|
158
|
-
}] : [])
|
158
|
+
}] : []), (0, _toConsumableArray2.default)(search !== '' ? (0, _toConsumableArray2.default)(options.filter(function (item) {
|
159
159
|
return _this.props.filterFunc(item, search);
|
160
|
-
})) : (0, _toConsumableArray2.default)(_this.props.hasAll ? [(0, _extends2.default)({
|
160
|
+
})) : [].concat((0, _toConsumableArray2.default)(_this.props.hasAll ? [(0, _extends2.default)({
|
161
161
|
id: '_all',
|
162
162
|
label: _this.props.translations.all
|
163
163
|
}, _this.props.iconAll && {
|
164
164
|
type: 'icon',
|
165
165
|
icon: _this.props.iconAll
|
166
|
-
})] : [])
|
166
|
+
})] : []), (0, _toConsumableArray2.default)(options))));
|
167
167
|
return {
|
168
168
|
itemList: itemList,
|
169
169
|
inputValue: _this.buildInputValue(options, value, loading)
|
@@ -271,22 +271,20 @@ function (_React$PureComponent) {
|
|
271
271
|
};
|
272
272
|
|
273
273
|
_this.focusOnSelectedItem = function (selectedValue) {
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
}
|
274
|
+
setTimeout(function () {
|
275
|
+
// On initialise au premier élément pour être sûr de ne pas se retrouver avec un focus of undefined
|
276
|
+
var item = _this.overlay.getElementsByTagName('li')[0];
|
277
|
+
|
278
|
+
if (selectedValue && typeof selectedValue === 'string') {
|
279
|
+
item = _this.overlay.getElementsByTagName('li')[selectedValue];
|
280
|
+
} else if (selectedValue && typeof selectedValue === 'number') {
|
281
|
+
item = _this.overlay.getElementsByTagName('li')[selectedValue - 1];
|
282
|
+
}
|
284
283
|
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
}
|
284
|
+
if (item) {
|
285
|
+
item.focus();
|
286
|
+
}
|
287
|
+
}, 1);
|
290
288
|
};
|
291
289
|
|
292
290
|
_this.handleClickAway = function (event) {
|
@@ -464,7 +462,7 @@ function (_React$PureComponent) {
|
|
464
462
|
return id !== item.id;
|
465
463
|
}), item);
|
466
464
|
} else {
|
467
|
-
onChange(event, (0, _toConsumableArray2.default)(value)
|
465
|
+
onChange(event, [].concat((0, _toConsumableArray2.default)(value), [item.id]), item);
|
468
466
|
}
|
469
467
|
};
|
470
468
|
|
@@ -490,13 +488,13 @@ function (_React$PureComponent) {
|
|
490
488
|
});
|
491
489
|
} else {
|
492
490
|
_this.setState({
|
493
|
-
suggestions: (0, _toConsumableArray2.default)(hasAll ? [(0, _extends2.default)({
|
491
|
+
suggestions: [].concat((0, _toConsumableArray2.default)(hasAll ? [(0, _extends2.default)({
|
494
492
|
id: '_all',
|
495
493
|
label: translations.all
|
496
494
|
}, iconAll && {
|
497
495
|
type: 'icon',
|
498
496
|
icon: iconAll
|
499
|
-
})] : [])
|
497
|
+
})] : []), (0, _toConsumableArray2.default)(suggestions))
|
500
498
|
});
|
501
499
|
}
|
502
500
|
};
|
@@ -528,11 +526,12 @@ function (_React$PureComponent) {
|
|
528
526
|
suggestions: props.options,
|
529
527
|
openDown: true
|
530
528
|
};
|
529
|
+
_this.handleBlur = _this.handleBlur.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
|
531
530
|
_this.handleClick = _this.handleClick.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
|
532
531
|
_this.handleClose = _this.handleClose.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
|
533
532
|
_this.handleClickAway = _this.handleClickAway.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
|
534
533
|
_this.handleFocus = _this.handleFocus.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
|
535
|
-
_this.
|
534
|
+
_this.handleKeyDownInput = _this.handleKeyDownInput.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
|
536
535
|
_this.handleSearch = _this.handleSearch.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
|
537
536
|
_this.handleSearchReset = _this.handleSearchReset.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
|
538
537
|
_this.handleSelect = _this.handleSelect.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
|
@@ -179,7 +179,7 @@ function (_React$PureComponent) {
|
|
179
179
|
return id !== item.id;
|
180
180
|
}), item);
|
181
181
|
} else {
|
182
|
-
onChange(event, (0, _toConsumableArray2.default)(value)
|
182
|
+
onChange(event, [].concat((0, _toConsumableArray2.default)(value), [item.id]), item);
|
183
183
|
}
|
184
184
|
};
|
185
185
|
|
@@ -209,13 +209,13 @@ function (_React$PureComponent) {
|
|
209
209
|
});
|
210
210
|
} else {
|
211
211
|
_this.setState({
|
212
|
-
suggestions: (0, _toConsumableArray2.default)(hasAll ? [(0, _extends2.default)({
|
212
|
+
suggestions: [].concat((0, _toConsumableArray2.default)(hasAll ? [(0, _extends2.default)({
|
213
213
|
id: '_all',
|
214
214
|
label: translations.all
|
215
215
|
}, iconAll && {
|
216
216
|
type: 'icon',
|
217
217
|
icon: iconAll
|
218
|
-
})] : [])
|
218
|
+
})] : []), (0, _toConsumableArray2.default)(suggestions))
|
219
219
|
});
|
220
220
|
}
|
221
221
|
};
|
@@ -251,22 +251,22 @@ function (_React$PureComponent) {
|
|
251
251
|
var search = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
|
252
252
|
var loading = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
253
253
|
// build item list
|
254
|
-
var itemList = (0, _toConsumableArray2.default)(loading ? [{
|
254
|
+
var itemList = [].concat((0, _toConsumableArray2.default)(loading ? [{
|
255
255
|
id: '_loading',
|
256
256
|
type: 'loader',
|
257
257
|
disabled: true,
|
258
258
|
centered: true,
|
259
259
|
hideCheckbox: true,
|
260
260
|
label: 'loading'
|
261
|
-
}] : [])
|
261
|
+
}] : []), (0, _toConsumableArray2.default)(search !== '' ? (0, _toConsumableArray2.default)(options.filter(function (item) {
|
262
262
|
return item.label && _this.props.filterFunc(item, search);
|
263
|
-
})) : (0, _toConsumableArray2.default)(_this.props.hasAll ? [(0, _extends2.default)({
|
263
|
+
})) : [].concat((0, _toConsumableArray2.default)(_this.props.hasAll ? [(0, _extends2.default)({
|
264
264
|
id: '_all',
|
265
265
|
label: _this.props.translations.all
|
266
266
|
}, _this.props.iconAll && {
|
267
267
|
type: 'icon',
|
268
268
|
icon: _this.props.iconAll
|
269
|
-
})] : [])
|
269
|
+
})] : []), (0, _toConsumableArray2.default)(options))));
|
270
270
|
return {
|
271
271
|
itemList: itemList
|
272
272
|
};
|
@@ -71,7 +71,7 @@ var styles = function styles(theme) {
|
|
71
71
|
display: 'block'
|
72
72
|
},
|
73
73
|
'&$inline': {
|
74
|
-
|
74
|
+
minHeight: 40,
|
75
75
|
'& $secondaryLabel': {
|
76
76
|
display: 'inline-block'
|
77
77
|
}
|
@@ -128,7 +128,7 @@ var styles = function styles(theme) {
|
|
128
128
|
'& strong': {
|
129
129
|
fontWeight: theme.typography.fontWeightMedium
|
130
130
|
},
|
131
|
-
display: '
|
131
|
+
display: 'contents'
|
132
132
|
}),
|
133
133
|
listItemContentSelected: {},
|
134
134
|
label: {
|
@@ -158,7 +158,6 @@ var styles = function styles(theme) {
|
|
158
158
|
fontSize: 12,
|
159
159
|
textOverflow: 'ellipsis',
|
160
160
|
textAlign: 'right',
|
161
|
-
padding: '4px 0px 4px 8px',
|
162
161
|
alignSelf: 'center'
|
163
162
|
}),
|
164
163
|
img: {
|
@@ -172,7 +171,7 @@ var styles = function styles(theme) {
|
|
172
171
|
verticalAlign: 'middle'
|
173
172
|
},
|
174
173
|
labelContent: {
|
175
|
-
display: 'flex',
|
174
|
+
display: '-webkit-flex',
|
176
175
|
alignItems: 'center',
|
177
176
|
maxWidth: '85%',
|
178
177
|
'&$labelWithoutSecondaryInline': {
|
@@ -190,9 +189,6 @@ var styles = function styles(theme) {
|
|
190
189
|
},
|
191
190
|
'&$infosWithoutSecondaryInline': {
|
192
191
|
paddingLeft: 28
|
193
|
-
},
|
194
|
-
'&$infosWithSecondaryInline': {
|
195
|
-
marginTop: -8
|
196
192
|
}
|
197
193
|
},
|
198
194
|
infosInlineWithoutSecondary: {},
|
package/README.md
CHANGED
@@ -226,7 +226,7 @@ npm install -g conventional-changelog-cli
|
|
226
226
|
npm install -g cz-conventional-changelog
|
227
227
|
```
|
228
228
|
|
229
|
-
1. Changer la version dans packages/hipay-material-ui/package.json
|
229
|
+
1. Changer la version dans package.json et dans packages/hipay-material-ui/package.json
|
230
230
|
2. Générer le fichier HI-CHANGELOG.md : ```npm run changelog```
|
231
231
|
3. Commiter la release : ```git ci -am "chore(release): VERSION DATE```
|
232
232
|
4. Build : ```npm run build```
|
package/es/HiCell/CellNumeric.js
CHANGED
@@ -25,7 +25,7 @@ class CellNumeric extends React.PureComponent {
|
|
25
25
|
let title = '';
|
26
26
|
|
27
27
|
if (currency) {
|
28
|
-
displayedValue = formatCurrencyAmount(value, view, locale, currency);
|
28
|
+
displayedValue = formatCurrencyAmount(value, view, locale, currency, precision);
|
29
29
|
title = formatCurrencyAmount(value, 'l', locale, currency);
|
30
30
|
} else {
|
31
31
|
displayedValue = formatNumber(value, view, locale, precision);
|
@@ -169,7 +169,8 @@ class HiDatePicker extends React.Component {
|
|
169
169
|
renderYearPickerOverlay(propsOverlay) {
|
170
170
|
const yearPickerProps = {
|
171
171
|
value: this.state.currentMonth,
|
172
|
-
onChange: this.handleCurrentMonthChange
|
172
|
+
onChange: this.handleCurrentMonthChange,
|
173
|
+
disableFutureDays: this.props.disableFutureDays
|
173
174
|
};
|
174
175
|
return React.createElement(YearPickerOverlay, _extends({
|
175
176
|
key: 'year-picker-overlay'
|
@@ -240,7 +241,10 @@ class HiDatePicker extends React.Component {
|
|
240
241
|
const inputProps = _objectSpread({}, onReset && {
|
241
242
|
onReset: this.handleReset
|
242
243
|
}, props, {
|
243
|
-
onChange: this.handleInputChange
|
244
|
+
onChange: this.handleInputChange,
|
245
|
+
HiInputProps: {
|
246
|
+
onSubmit: this.props.onSubmit
|
247
|
+
}
|
244
248
|
});
|
245
249
|
|
246
250
|
return React.createElement("div", {
|
@@ -338,6 +342,11 @@ HiDatePicker.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
338
342
|
*/
|
339
343
|
onReset: PropTypes.func,
|
340
344
|
|
345
|
+
/**
|
346
|
+
* Callback lorsque l'utilisateur tape sur "Entrée"
|
347
|
+
*/
|
348
|
+
onSubmit: PropTypes.func,
|
349
|
+
|
341
350
|
/**
|
342
351
|
* Traductions
|
343
352
|
*/
|
@@ -171,6 +171,29 @@ class HiDateRangePicker extends React.Component {
|
|
171
171
|
}));
|
172
172
|
};
|
173
173
|
|
174
|
+
this.handleKeyDown = name => event => {
|
175
|
+
if (event.key === 'Tab' && !event.shiftKey) {
|
176
|
+
let nodeName = document.activeElement.nodeName;
|
177
|
+
|
178
|
+
if (this.props[name] && nodeName === 'INPUT' && document.activeElement.nextSibling.children.length > 0) {
|
179
|
+
document.activeElement.nextSibling.focus();
|
180
|
+
} else if (name === 'from') {
|
181
|
+
this.handleDayPickerBlur('from');
|
182
|
+
this.handleDayPickerFocus('to');
|
183
|
+
this.toInput.handleInputFocus();
|
184
|
+
setTimeout(() => {
|
185
|
+
document.getElementById(`${this.props.id}-to`).focus();
|
186
|
+
}, 1);
|
187
|
+
} else if (name === 'to') {
|
188
|
+
this.handleDayPickerBlur('to');
|
189
|
+
this.toInput.handleInputBlur(event);
|
190
|
+
setTimeout(() => {
|
191
|
+
document.activeElement.blur();
|
192
|
+
}, 1);
|
193
|
+
}
|
194
|
+
}
|
195
|
+
};
|
196
|
+
|
174
197
|
this.openPanel = panel => {
|
175
198
|
this.setState({
|
176
199
|
openedPanel: panel
|
@@ -246,7 +269,7 @@ class HiDateRangePicker extends React.Component {
|
|
246
269
|
const yearPickerProps = {
|
247
270
|
value: this.state.currentMonth,
|
248
271
|
onChange: this.handleCurrentMonthChange,
|
249
|
-
|
272
|
+
disableFutureDays: this.props.disableFutureDays
|
250
273
|
};
|
251
274
|
return React.createElement(YearPickerOverlay, _extends({
|
252
275
|
key: `${name}-year-picker-overlay`
|
@@ -385,7 +408,10 @@ class HiDateRangePicker extends React.Component {
|
|
385
408
|
}, {
|
386
409
|
id: `${id}-from`,
|
387
410
|
onChange: this.handleInputChange('from'),
|
388
|
-
disabled
|
411
|
+
disabled,
|
412
|
+
HiInputProps: {
|
413
|
+
onSubmit: this.props.onSubmit
|
414
|
+
}
|
389
415
|
});
|
390
416
|
|
391
417
|
const toInputProps = _objectSpread({}, onReset && {
|
@@ -397,7 +423,10 @@ class HiDateRangePicker extends React.Component {
|
|
397
423
|
}, {
|
398
424
|
id: `${id}-to`,
|
399
425
|
onChange: this.handleInputChange('to'),
|
400
|
-
disabled
|
426
|
+
disabled,
|
427
|
+
HiInputProps: {
|
428
|
+
onSubmit: this.props.onSubmit
|
429
|
+
}
|
401
430
|
});
|
402
431
|
|
403
432
|
const toClass = classNames(classes.toInput, {
|
@@ -408,8 +437,8 @@ class HiDateRangePicker extends React.Component {
|
|
408
437
|
className: classNames(classes.root, classes.rangePickerContainer)
|
409
438
|
}, React.createElement("div", {
|
410
439
|
className: classes.fromInput,
|
411
|
-
onFocus: () => this.handleDayPickerFocus('from')
|
412
|
-
|
440
|
+
onFocus: () => this.handleDayPickerFocus('from'),
|
441
|
+
onKeyDown: this.handleKeyDown('from')
|
413
442
|
}, React.createElement("div", null, React.createElement(DayPickerInput, {
|
414
443
|
key: this.state.keyFrom,
|
415
444
|
ref: el => {
|
@@ -429,7 +458,8 @@ class HiDateRangePicker extends React.Component {
|
|
429
458
|
}))), React.createElement("div", {
|
430
459
|
className: toClass,
|
431
460
|
onFocus: () => this.handleDayPickerFocus('to'),
|
432
|
-
onBlur: () => this.handleDayPickerBlur('to')
|
461
|
+
onBlur: () => this.handleDayPickerBlur('to'),
|
462
|
+
onKeyDown: this.handleKeyDown('to')
|
433
463
|
}, React.createElement(DayPickerInput, {
|
434
464
|
key: this.state.keyTo,
|
435
465
|
ref: el => {
|
@@ -443,8 +473,7 @@ class HiDateRangePicker extends React.Component {
|
|
443
473
|
inputProps: toInputProps,
|
444
474
|
format: enableTime ? `${format} HH:mm` : format,
|
445
475
|
formatDate: MomentLocaleUtils.formatDate,
|
446
|
-
parseDate: MomentLocaleUtils.parseDate
|
447
|
-
,
|
476
|
+
parseDate: MomentLocaleUtils.parseDate,
|
448
477
|
placeholder: ''
|
449
478
|
})));
|
450
479
|
|
@@ -597,6 +626,11 @@ HiDateRangePicker.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
597
626
|
*/
|
598
627
|
onReset: PropTypes.func,
|
599
628
|
|
629
|
+
/**
|
630
|
+
* Callback lorsque l'utilisateur tape sur "Entrée"
|
631
|
+
*/
|
632
|
+
onSubmit: PropTypes.func,
|
633
|
+
|
600
634
|
/**
|
601
635
|
* Si true, le calendrier sera dans une div static plutot que dans une popper absolute
|
602
636
|
*/
|
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/extends";
|
|
2
2
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
3
3
|
import React from 'react';
|
4
4
|
import PropTypes from 'prop-types';
|
5
|
-
import moment from 'moment';
|
5
|
+
import moment from 'moment-timezone';
|
6
6
|
import { findDOMNode } from 'react-dom';
|
7
7
|
import Grid from '@material-ui/core/Grid';
|
8
8
|
import withStyles from '../styles/withStyles';
|
@@ -52,7 +52,7 @@ export function yearAndQuarter(format, date, t) {
|
|
52
52
|
const indexM = split.findIndex(findM);
|
53
53
|
return indexY < indexM ? date.format(`${split[indexY]}${s}[${t.short_quarter}]Q`) : date.format(`[${t.short_quarter}]Q${s}${split[indexY]}`);
|
54
54
|
}
|
55
|
-
export function buildDateRangeOptionByKey(key, t, format) {
|
55
|
+
export function buildDateRangeOptionByKey(key, t, format, timezoneName) {
|
56
56
|
let from;
|
57
57
|
let label;
|
58
58
|
let info;
|
@@ -67,71 +67,71 @@ export function buildDateRangeOptionByKey(key, t, format) {
|
|
67
67
|
switch (key) {
|
68
68
|
case 'custom':
|
69
69
|
label = t.custom_period;
|
70
|
-
from = moment().subtract(15, 'day').startOf('day');
|
71
|
-
to = moment().endOf('day');
|
70
|
+
from = moment().tz(timezoneName).subtract(15, 'day').startOf('day');
|
71
|
+
to = moment().tz(timezoneName).endOf('day');
|
72
72
|
type = 'primary-highlight';
|
73
73
|
break;
|
74
74
|
|
75
75
|
case 'cd':
|
76
76
|
label = t.today;
|
77
|
-
from = moment().startOf('day');
|
78
|
-
to = moment().endOf('day');
|
77
|
+
from = moment().tz(timezoneName).startOf('day');
|
78
|
+
to = moment().tz(timezoneName).endOf('day');
|
79
79
|
info = `${from.format(format)}`;
|
80
80
|
break;
|
81
81
|
|
82
82
|
case 'pd':
|
83
83
|
label = t.yesterday;
|
84
|
-
from = moment().subtract(1, 'day').startOf('day');
|
85
|
-
to = moment().subtract(1, 'day').endOf('day');
|
84
|
+
from = moment().tz(timezoneName).subtract(1, 'day').startOf('day');
|
85
|
+
to = moment().tz(timezoneName).subtract(1, 'day').endOf('day');
|
86
86
|
info = `${from.format(format)}`;
|
87
87
|
break;
|
88
88
|
|
89
89
|
case 'cw':
|
90
90
|
label = t.current_week;
|
91
|
-
from = moment().startOf('week');
|
92
|
-
to = moment();
|
91
|
+
from = moment().tz(timezoneName).startOf('week');
|
92
|
+
to = moment().tz(timezoneName);
|
93
93
|
info = `${t.short_week}${from.format('w')}, \n ${from.format(format)} ${t.to_now}`;
|
94
94
|
break;
|
95
95
|
|
96
96
|
case 'pw':
|
97
97
|
label = t.previous_week;
|
98
|
-
from = moment().subtract(1, 'week').startOf('week');
|
99
|
-
to = moment().subtract(1, 'week').endOf('week');
|
98
|
+
from = moment().tz(timezoneName).subtract(1, 'week').startOf('week');
|
99
|
+
to = moment().tz(timezoneName).subtract(1, 'week').endOf('week');
|
100
100
|
info = `${t.short_week}${from.format('w')}, ${from.format(format)} ${t.to} ${to.format(format)}`;
|
101
101
|
break;
|
102
102
|
|
103
103
|
case 'cm':
|
104
104
|
label = t.current_month;
|
105
|
-
from = moment().startOf('month');
|
106
|
-
to = moment();
|
105
|
+
from = moment().tz(timezoneName).startOf('month');
|
106
|
+
to = moment().tz(timezoneName);
|
107
107
|
info = `${from.format(format)} ${t.to_now}, ${to.diff(from, 'days') + 1} ${t.days}`;
|
108
108
|
break;
|
109
109
|
|
110
110
|
case 'pm':
|
111
111
|
label = t.previous_month;
|
112
|
-
from = moment().subtract(1, 'month').startOf('month');
|
113
|
-
to = moment().subtract(1, 'month').endOf('month');
|
112
|
+
from = moment().tz(timezoneName).subtract(1, 'month').startOf('month');
|
113
|
+
to = moment().tz(timezoneName).subtract(1, 'month').endOf('month');
|
114
114
|
info = `${yearAndMonth(format, from)}, ${from.daysInMonth()} ${t.days}`;
|
115
115
|
break;
|
116
116
|
|
117
117
|
case 'cq':
|
118
118
|
label = t.current_quarter;
|
119
|
-
from = moment().startOf('quarter');
|
120
|
-
to = moment();
|
119
|
+
from = moment().tz(timezoneName).startOf('quarter');
|
120
|
+
to = moment().tz(timezoneName);
|
121
121
|
info = `${yearAndQuarter(format, from, t)}, ${from.format(format)} ${t.to_now}, ${to.diff(from, 'days') + 1} ${t.days}`;
|
122
122
|
break;
|
123
123
|
|
124
124
|
case 'pq':
|
125
125
|
label = t.previous_quarter;
|
126
|
-
from = moment().subtract(1, 'quarter').startOf('quarter');
|
127
|
-
to = moment().subtract(1, 'quarter').endOf('quarter');
|
126
|
+
from = moment().tz(timezoneName).subtract(1, 'quarter').startOf('quarter');
|
127
|
+
to = moment().tz(timezoneName).subtract(1, 'quarter').endOf('quarter');
|
128
128
|
info = `${yearAndQuarter(format, from, t)}, ${to.diff(from, 'days') + 1} ${t.days}`;
|
129
129
|
break;
|
130
130
|
|
131
131
|
case 'cy':
|
132
132
|
label = t.current_year;
|
133
|
-
from = moment().startOf('year');
|
134
|
-
to = moment();
|
133
|
+
from = moment().tz(timezoneName).startOf('year');
|
134
|
+
to = moment().tz(timezoneName);
|
135
135
|
info = `${from.format(format)} ${t.to_now}, ${to.diff(from, 'days') + 1} ${t.days}`;
|
136
136
|
break;
|
137
137
|
|
@@ -190,8 +190,8 @@ class HiDateRangeSelector extends React.Component {
|
|
190
190
|
const selectedOption = this.options.find(option => option.id === value);
|
191
191
|
|
192
192
|
if (selectedOption) {
|
193
|
-
this.props.onChange('from', selectedOption.from.
|
194
|
-
this.props.onChange('to', selectedOption.to.
|
193
|
+
this.props.onChange('from', new Date(selectedOption.from.format('YYYY-MM-DD HH:mm:ss')));
|
194
|
+
this.props.onChange('to', new Date(selectedOption.to.format('YYYY-MM-DD HH:mm:ss')));
|
195
195
|
this.props.onChange('fromError', false);
|
196
196
|
this.props.onChange('toError', false);
|
197
197
|
}
|
@@ -201,8 +201,7 @@ class HiDateRangeSelector extends React.Component {
|
|
201
201
|
}
|
202
202
|
};
|
203
203
|
|
204
|
-
this.
|
205
|
-
this.options = props.availableOptionKeys.map(key => buildDateRangeOptionByKey(key, props.translations, props.format));
|
204
|
+
this.options = props.availableOptionKeys.map(key => buildDateRangeOptionByKey(key, props.translations, props.format, props.timezoneName));
|
206
205
|
this.state = {
|
207
206
|
selectedPreset: props.defaultPreset,
|
208
207
|
containerWidth: 0
|
@@ -299,7 +298,8 @@ class HiDateRangeSelector extends React.Component {
|
|
299
298
|
classes: {
|
300
299
|
root: classes.dateSelect
|
301
300
|
},
|
302
|
-
staticPosition: staticPosition
|
301
|
+
staticPosition: staticPosition,
|
302
|
+
onSubmit: this.props.onSubmit
|
303
303
|
}, selectProps))), React.createElement(Grid, {
|
304
304
|
item: true,
|
305
305
|
xs: 12,
|
@@ -341,6 +341,7 @@ HiDateRangeSelector.defaultProps = {
|
|
341
341
|
format: 'YYYY-DD-MM',
|
342
342
|
minimumDate: new Date(2013, 4, 1),
|
343
343
|
// by default 1 May 2013
|
344
|
+
timezoneName: 'Europe/Paris',
|
344
345
|
translations: {
|
345
346
|
today: 'Today',
|
346
347
|
hour: 'Hour',
|
@@ -459,6 +460,11 @@ HiDateRangeSelector.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
459
460
|
*/
|
460
461
|
onChange: PropTypes.func.isRequired,
|
461
462
|
|
463
|
+
/**
|
464
|
+
* Callback lorsque l'utilisateur tape sur "Entrée"
|
465
|
+
*/
|
466
|
+
onSubmit: PropTypes.func,
|
467
|
+
|
462
468
|
/**
|
463
469
|
* true si champs obligatoire
|
464
470
|
*/
|
@@ -479,6 +485,11 @@ HiDateRangeSelector.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
479
485
|
*/
|
480
486
|
staticPosition: PropTypes.bool,
|
481
487
|
|
488
|
+
/**
|
489
|
+
* Timezone de l'utilisateur
|
490
|
+
*/
|
491
|
+
timezoneName: PropTypes.string,
|
492
|
+
|
482
493
|
/**
|
483
494
|
* Date de fin sélectionnée
|
484
495
|
*/
|