@hipay/hipay-material-ui 2.0.0-beta.59 → 2.0.0-beta.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/CHANGELOG.md +118 -0
  2. package/HiCell/CellNumeric.js +1 -1
  3. package/HiDatePicker/HiDatePicker.js +48 -14
  4. package/HiDatePicker/HiDateRangePicker.js +119 -64
  5. package/HiDatePicker/HiDateRangeSelector.js +70 -47
  6. package/HiDatePicker/Overlays/YearPickerOverlay.js +8 -3
  7. package/HiDatePicker/stylesheet.js +32 -17
  8. package/HiForm/HiFormControl.js +26 -11
  9. package/HiForm/HiFormLabel.js +3 -1
  10. package/HiForm/HiInput.js +20 -1
  11. package/HiForm/HiUpload.js +290 -45
  12. package/HiForm/HiUploadField.js +19 -51
  13. package/HiForm/HiUploadInput.js +18 -7
  14. package/HiSelectNew/HiSelect.js +15 -16
  15. package/HiSelectableList/HiSelectableList.js +9 -0
  16. package/HiSelectableList/HiSelectableListItem.js +3 -7
  17. package/README.md +1 -1
  18. package/es/HiCell/CellNumeric.js +1 -1
  19. package/es/HiDatePicker/HiDatePicker.js +41 -12
  20. package/es/HiDatePicker/HiDateRangePicker.js +79 -28
  21. package/es/HiDatePicker/HiDateRangeSelector.js +59 -37
  22. package/es/HiDatePicker/Overlays/YearPickerOverlay.js +8 -3
  23. package/es/HiDatePicker/stylesheet.js +32 -17
  24. package/es/HiForm/HiFormControl.js +27 -11
  25. package/es/HiForm/HiFormLabel.js +3 -1
  26. package/es/HiForm/HiInput.js +19 -1
  27. package/es/HiForm/HiUpload.js +276 -35
  28. package/es/HiForm/HiUploadField.js +19 -43
  29. package/es/HiForm/HiUploadInput.js +16 -7
  30. package/es/HiSelectNew/HiSelect.js +15 -16
  31. package/es/HiSelectableList/HiSelectableList.js +9 -0
  32. package/es/HiSelectableList/HiSelectableListItem.js +3 -7
  33. package/es/styles/createPalette.js +1 -1
  34. package/es/utils/helpers.js +15 -6
  35. package/index.es.js +1 -1
  36. package/index.js +1 -1
  37. package/package.json +4 -4
  38. package/styles/createPalette.js +1 -1
  39. package/umd/hipay-material-ui.development.js +6301 -383
  40. package/umd/hipay-material-ui.production.min.js +2 -2
  41. package/utils/helpers.js +15 -5
@@ -27,13 +27,11 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
27
27
 
28
28
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
29
29
 
30
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
31
-
32
30
  var _react = _interopRequireDefault(require("react"));
33
31
 
34
32
  var _propTypes = _interopRequireDefault(require("prop-types"));
35
33
 
36
- var _moment = _interopRequireDefault(require("moment"));
34
+ var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
37
35
 
38
36
  var _reactDom = require("react-dom");
39
37
 
@@ -93,14 +91,14 @@ function yearAndQuarter(format, date, t) {
93
91
  return indexY < indexM ? date.format("".concat(split[indexY]).concat(s, "[").concat(t.short_quarter, "]Q")) : date.format("[".concat(t.short_quarter, "]Q").concat(s).concat(split[indexY]));
94
92
  }
95
93
 
96
- function buildDateRangeOptionByKey(key, t, format) {
94
+ function buildDateRangeOptionByKey(key, t, format, timezoneName) {
97
95
  var from;
98
96
  var label;
99
97
  var info;
100
98
  var to;
101
99
  var type;
102
100
 
103
- _moment.default.updateLocale('en', {
101
+ _momentTimezone.default.updateLocale('en', {
104
102
  week: {
105
103
  dow: 1
106
104
  }
@@ -109,71 +107,71 @@ function buildDateRangeOptionByKey(key, t, format) {
109
107
  switch (key) {
110
108
  case 'custom':
111
109
  label = t.custom_period;
112
- from = (0, _moment.default)().subtract(15, 'day').startOf('day');
113
- to = (0, _moment.default)().endOf('day');
110
+ from = (0, _momentTimezone.default)().tz(timezoneName).subtract(15, 'day').startOf('day');
111
+ to = (0, _momentTimezone.default)().tz(timezoneName).endOf('day');
114
112
  type = 'primary-highlight';
115
113
  break;
116
114
 
117
115
  case 'cd':
118
116
  label = t.today;
119
- from = (0, _moment.default)().startOf('day');
120
- to = (0, _moment.default)().endOf('day');
117
+ from = (0, _momentTimezone.default)().tz(timezoneName).startOf('day');
118
+ to = (0, _momentTimezone.default)().tz(timezoneName).endOf('day');
121
119
  info = "".concat(from.format(format));
122
120
  break;
123
121
 
124
122
  case 'pd':
125
123
  label = t.yesterday;
126
- from = (0, _moment.default)().subtract(1, 'day').startOf('day');
127
- to = (0, _moment.default)().subtract(1, 'day').endOf('day');
124
+ from = (0, _momentTimezone.default)().tz(timezoneName).subtract(1, 'day').startOf('day');
125
+ to = (0, _momentTimezone.default)().tz(timezoneName).subtract(1, 'day').endOf('day');
128
126
  info = "".concat(from.format(format));
129
127
  break;
130
128
 
131
129
  case 'cw':
132
130
  label = t.current_week;
133
- from = (0, _moment.default)().startOf('week');
134
- to = (0, _moment.default)();
131
+ from = (0, _momentTimezone.default)().tz(timezoneName).startOf('week');
132
+ to = (0, _momentTimezone.default)().tz(timezoneName);
135
133
  info = "".concat(t.short_week).concat(from.format('w'), ", \n ").concat(from.format(format), " ").concat(t.to_now);
136
134
  break;
137
135
 
138
136
  case 'pw':
139
137
  label = t.previous_week;
140
- from = (0, _moment.default)().subtract(1, 'week').startOf('week');
141
- to = (0, _moment.default)().subtract(1, 'week').endOf('week');
138
+ from = (0, _momentTimezone.default)().tz(timezoneName).subtract(1, 'week').startOf('week');
139
+ to = (0, _momentTimezone.default)().tz(timezoneName).subtract(1, 'week').endOf('week');
142
140
  info = "".concat(t.short_week).concat(from.format('w'), ", ").concat(from.format(format), " ").concat(t.to, " ").concat(to.format(format));
143
141
  break;
144
142
 
145
143
  case 'cm':
146
144
  label = t.current_month;
147
- from = (0, _moment.default)().startOf('month');
148
- to = (0, _moment.default)();
145
+ from = (0, _momentTimezone.default)().tz(timezoneName).startOf('month');
146
+ to = (0, _momentTimezone.default)().tz(timezoneName);
149
147
  info = "".concat(from.format(format), " ").concat(t.to_now, ", ").concat(to.diff(from, 'days') + 1, " ").concat(t.days);
150
148
  break;
151
149
 
152
150
  case 'pm':
153
151
  label = t.previous_month;
154
- from = (0, _moment.default)().subtract(1, 'month').startOf('month');
155
- to = (0, _moment.default)().subtract(1, 'month').endOf('month');
152
+ from = (0, _momentTimezone.default)().tz(timezoneName).subtract(1, 'month').startOf('month');
153
+ to = (0, _momentTimezone.default)().tz(timezoneName).subtract(1, 'month').endOf('month');
156
154
  info = "".concat(yearAndMonth(format, from), ", ").concat(from.daysInMonth(), " ").concat(t.days);
157
155
  break;
158
156
 
159
157
  case 'cq':
160
158
  label = t.current_quarter;
161
- from = (0, _moment.default)().startOf('quarter');
162
- to = (0, _moment.default)();
159
+ from = (0, _momentTimezone.default)().tz(timezoneName).startOf('quarter');
160
+ to = (0, _momentTimezone.default)().tz(timezoneName);
163
161
  info = "".concat(yearAndQuarter(format, from, t), ", ").concat(from.format(format), " ").concat(t.to_now, ", ").concat(to.diff(from, 'days') + 1, " ").concat(t.days);
164
162
  break;
165
163
 
166
164
  case 'pq':
167
165
  label = t.previous_quarter;
168
- from = (0, _moment.default)().subtract(1, 'quarter').startOf('quarter');
169
- to = (0, _moment.default)().subtract(1, 'quarter').endOf('quarter');
166
+ from = (0, _momentTimezone.default)().tz(timezoneName).subtract(1, 'quarter').startOf('quarter');
167
+ to = (0, _momentTimezone.default)().tz(timezoneName).subtract(1, 'quarter').endOf('quarter');
170
168
  info = "".concat(yearAndQuarter(format, from, t), ", ").concat(to.diff(from, 'days') + 1, " ").concat(t.days);
171
169
  break;
172
170
 
173
171
  case 'cy':
174
172
  label = t.current_year;
175
- from = (0, _moment.default)().startOf('year');
176
- to = (0, _moment.default)();
173
+ from = (0, _momentTimezone.default)().tz(timezoneName).startOf('year');
174
+ to = (0, _momentTimezone.default)().tz(timezoneName);
177
175
  info = "".concat(from.format(format), " ").concat(t.to_now, ", ").concat(to.diff(from, 'days') + 1, " ").concat(t.days);
178
176
  break;
179
177
 
@@ -245,29 +243,12 @@ function (_React$Component) {
245
243
  return _ref = {}, (0, _defineProperty2.default)(_ref, name, value), (0, _defineProperty2.default)(_ref, "key", prevState.key === 1 ? 2 : 1), _ref;
246
244
  });
247
245
 
248
- var selectedOption = _this.options.find(function (option) {
249
- return option.id === value;
250
- });
251
-
252
- if (selectedOption) {
253
- _this.props.onChange('from', selectedOption.from.toDate());
254
-
255
- _this.props.onChange('to', selectedOption.to.toDate());
256
-
257
- _this.props.onChange('fromError', false);
258
-
259
- _this.props.onChange('toError', false);
260
- }
261
-
262
- if (_this.props.returnSelectValue === true) {
263
- _this.props.onChange('period', value);
264
- }
246
+ _this.updateDates(value);
265
247
  };
266
248
  };
267
249
 
268
- _this.handleSelectChange = _this.handleSelectChange.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
269
250
  _this.options = props.availableOptionKeys.map(function (key) {
270
- return buildDateRangeOptionByKey(key, props.translations, props.format);
251
+ return buildDateRangeOptionByKey(key, props.translations, props.format, props.timezoneName);
271
252
  });
272
253
  _this.state = {
273
254
  selectedPreset: props.defaultPreset,
@@ -285,15 +266,45 @@ function (_React$Component) {
285
266
  });
286
267
  }
287
268
  }
269
+ }, {
270
+ key: "componentDidUpdate",
271
+ value: function componentDidUpdate(prevProps) {
272
+ var _this2 = this;
273
+
274
+ if (prevProps.timezoneName !== this.props.timezoneName) {
275
+ this.options = this.props.availableOptionKeys.map(function (key) {
276
+ return buildDateRangeOptionByKey(key, _this2.props.translations, _this2.props.format, _this2.props.timezoneName);
277
+ });
278
+ this.updateDates(this.state.selectedPreset);
279
+ }
280
+ }
288
281
  }, {
289
282
  key: "componentWillUnmount",
290
283
  value: function componentWillUnmount() {
291
284
  clearTimeout(this.timeout); // TODO : supprimer ?
292
285
  }
286
+ }, {
287
+ key: "updateDates",
288
+ value: function updateDates(value) {
289
+ var selectedOption = this.options.find(function (option) {
290
+ return option.id === value;
291
+ });
292
+
293
+ if (selectedOption) {
294
+ this.props.onChange('from', new Date(selectedOption.from.format('YYYY-MM-DD HH:mm:ss')));
295
+ this.props.onChange('to', new Date(selectedOption.to.format('YYYY-MM-DD HH:mm:ss')));
296
+ this.props.onChange('fromError', false);
297
+ this.props.onChange('toError', false);
298
+ }
299
+
300
+ if (this.props.returnSelectValue === true) {
301
+ this.props.onChange('period', value);
302
+ }
303
+ }
293
304
  }, {
294
305
  key: "render",
295
306
  value: function render() {
296
- var _this2 = this;
307
+ var _this3 = this;
297
308
 
298
309
  var _this$props = this.props,
299
310
  disabled = _this$props.disabled,
@@ -332,7 +343,7 @@ function (_React$Component) {
332
343
  spacing: 8,
333
344
  className: classes.root,
334
345
  ref: function ref(container) {
335
- _this2.container = container;
346
+ _this3.container = container;
336
347
  }
337
348
  }, _react.default.createElement(_Grid.default, {
338
349
  item: true,
@@ -357,7 +368,8 @@ function (_React$Component) {
357
368
  classes: {
358
369
  root: classes.dateSelect
359
370
  },
360
- staticPosition: staticPosition
371
+ staticPosition: staticPosition,
372
+ onSubmit: this.props.onSubmit
361
373
  }, selectProps))), _react.default.createElement(_Grid.default, {
362
374
  item: true,
363
375
  xs: 12,
@@ -411,6 +423,7 @@ HiDateRangeSelector.defaultProps = {
411
423
  format: 'YYYY-DD-MM',
412
424
  minimumDate: new Date(2013, 4, 1),
413
425
  // by default 1 May 2013
426
+ timezoneName: 'Europe/Paris',
414
427
  translations: {
415
428
  today: 'Today',
416
429
  hour: 'Hour',
@@ -529,6 +542,11 @@ HiDateRangeSelector.propTypes = process.env.NODE_ENV !== "production" ? {
529
542
  */
530
543
  onChange: _propTypes.default.func.isRequired,
531
544
 
545
+ /**
546
+ * Callback lorsque l'utilisateur tape sur "Entrée"
547
+ */
548
+ onSubmit: _propTypes.default.func,
549
+
532
550
  /**
533
551
  * true si champs obligatoire
534
552
  */
@@ -549,6 +567,11 @@ HiDateRangeSelector.propTypes = process.env.NODE_ENV !== "production" ? {
549
567
  */
550
568
  staticPosition: _propTypes.default.bool,
551
569
 
570
+ /**
571
+ * Timezone de l'utilisateur
572
+ */
573
+ timezoneName: _propTypes.default.string,
574
+
552
575
  /**
553
576
  * Date de fin sélectionnée
554
577
  */
@@ -43,8 +43,15 @@ function (_React$Component) {
43
43
  _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(YearPickerOverlay).call(this, props));
44
44
  _this.years = [];
45
45
  _this.handleYearClick = _this.handleYearClick.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
46
+ var minDate = props.minimumDate;
47
+
48
+ if (!minDate) {
49
+ var today = new Date();
50
+ minDate = new Date(today.getFullYear() - 5, today.getMonth(), today.getDate()); // by default 5 years from now
51
+ }
52
+
46
53
  var currentYear = new Date().getFullYear();
47
- var minimumYear = props.minimumDate.getFullYear();
54
+ var minimumYear = minDate.getFullYear();
48
55
  _this.years = [currentYear]; // get years from minimum date to now
49
56
 
50
57
  if (!props.disablePastDays && currentYear > minimumYear) {
@@ -95,8 +102,6 @@ function (_React$Component) {
95
102
  }(_react.default.Component);
96
103
 
97
104
  YearPickerOverlay.defaultProps = {
98
- minimumDate: new Date(2013, 4, 1),
99
- // by default 1 May 2013
100
105
  translations: {
101
106
  year: 'Year'
102
107
  }
@@ -184,23 +184,22 @@ var _default = function _default(theme) {
184
184
 
185
185
  /* default modifiers */
186
186
  // Added to the day's cell for the current day
187
- today: {
188
- // color: theme.palette.primary.light,
189
- position: 'relative',
190
- borderRadius: '50%',
191
- color: "".concat(theme.palette.neutral.dark, " !important"),
192
- fontWeight: theme.typography.fontWeightMedium,
193
- '&:before': {
194
- content: '""',
195
- position: 'absolute',
196
- top: 0,
197
- left: 0,
198
- display: 'inline-block',
199
- width: '100%',
200
- height: '100%',
201
- borderRadius: '50%',
202
- boxShadow: "inset 0 0 0 2px ".concat(theme.palette.neutral.main)
203
- }
187
+ today: {// color: theme.palette.primary.light,
188
+ // position: 'relative',
189
+ // borderRadius: '50%',
190
+ // color: `${theme.palette.neutral.dark} !important`,
191
+ // fontWeight: theme.typography.fontWeightMedium,
192
+ // '&:before': {
193
+ // content: '""',
194
+ // position: 'absolute',
195
+ // top: 0,
196
+ // left: 0,
197
+ // display: 'inline-block',
198
+ // width: '100%',
199
+ // height: '100%',
200
+ // borderRadius: '50%',
201
+ // boxShadow: `inset 0 0 0 2px ${theme.palette.neutral.main}`,
202
+ // },
204
203
  },
205
204
  // Added to the day's cell outside the current month
206
205
  outside: {
@@ -228,6 +227,22 @@ var _default = function _default(theme) {
228
227
  color: theme.palette.primary.contrastText,
229
228
  borderRadius: '0%',
230
229
  border: 'none'
230
+ },
231
+ currentDay: {
232
+ position: 'relative',
233
+ color: "".concat(theme.palette.neutral.dark, " !important"),
234
+ fontWeight: theme.typography.fontWeightMedium,
235
+ '&:before': {
236
+ content: '""',
237
+ position: 'absolute',
238
+ top: 0,
239
+ left: 0,
240
+ display: 'inline-block',
241
+ width: '100%',
242
+ height: '100%',
243
+ borderRadius: '50%',
244
+ boxShadow: "inset 0 0 0 2px ".concat(theme.palette.neutral.main)
245
+ }
231
246
  }
232
247
  };
233
248
  };
@@ -59,13 +59,11 @@ var styles = function styles(theme) {
59
59
  marginTop: 2
60
60
  },
61
61
  iconButton: {
62
- position: 'absolute',
63
- right: 5,
64
62
  cursor: 'pointer',
65
63
  zIndex: 1,
66
- top: '-5px',
67
- height: 24,
68
- width: 24,
64
+ height: 20,
65
+ width: 20,
66
+ marginLeft: 3,
69
67
  '&$iconButtonError': {
70
68
  color: theme.palette.negative.main
71
69
  },
@@ -74,11 +72,18 @@ var styles = function styles(theme) {
74
72
  },
75
73
  '&$iconButtonInfoActive': {
76
74
  color: theme.palette.primary.main
75
+ },
76
+ '&$iconFullWidth': {
77
+ position: 'absolute',
78
+ right: 5,
79
+ marginLeft: 0,
80
+ bottom: 0
77
81
  }
78
82
  },
79
83
  iconButtonError: {},
80
84
  iconButtonInfo: {},
81
85
  iconButtonInfoActive: {},
86
+ iconFullWidth: {},
82
87
  errorDiv: (0, _extends2.default)({}, theme.typography.b3, {
83
88
  backgroundColor: theme.palette.negative.main,
84
89
  color: '#FFFFFF',
@@ -97,8 +102,15 @@ var styles = function styles(theme) {
97
102
  borderTop: '4px solid #000',
98
103
  position: 'absolute',
99
104
  bottom: -4,
100
- right: 13
105
+ '&$arrowNotFullWidth': {
106
+ left: 8
107
+ },
108
+ '&$arrowFullWidth': {
109
+ right: 13
110
+ }
101
111
  },
112
+ arrowNotFullWidth: {},
113
+ arrowFullWidth: {},
102
114
  errorDivArrowDown: {
103
115
  borderTopColor: theme.palette.negative.main
104
116
  },
@@ -118,7 +130,8 @@ var styles = function styles(theme) {
118
130
  borderTopColor: '#ffffff'
119
131
  },
120
132
  icon: {
121
- position: 'absolute'
133
+ position: 'absolute',
134
+ fontSize: 19
122
135
  }
123
136
  };
124
137
  };
@@ -197,6 +210,8 @@ function (_React$PureComponent) {
197
210
  (0, _createClass2.default)(HiFormControl, [{
198
211
  key: "render",
199
212
  value: function render() {
213
+ var _classNames2;
214
+
200
215
  var _this$props = this.props,
201
216
  children = _this$props.children,
202
217
  classes = _this$props.classes,
@@ -229,7 +244,7 @@ function (_React$PureComponent) {
229
244
  }, others), error && errorText && helperOpen && _react.default.createElement("div", {
230
245
  className: classes.errorDiv
231
246
  }, _react.default.createElement("div", {
232
- className: (0, _classnames.default)(classes.arrowDown, classes.errorDivArrowDown)
247
+ className: (0, _classnames.default)(classes.arrowDown, classes.errorDivArrowDown, fullWidth ? [classes.arrowFullWidth] : [classes.arrowNotFullWidth])
233
248
  }), _react.default.createElement("span", {
234
249
  // eslint-disable-next-line react/no-danger
235
250
  dangerouslySetInnerHTML: {
@@ -238,7 +253,7 @@ function (_React$PureComponent) {
238
253
  })), helperIcon && helperText && !error && helperOpen && _react.default.createElement("div", {
239
254
  className: classes.helperDiv
240
255
  }, _react.default.createElement("div", {
241
- className: (0, _classnames.default)(classes.arrowDown, classes.helperDivArrowDown)
256
+ className: (0, _classnames.default)(classes.arrowDown, classes.helperDivArrowDown, fullWidth ? [classes.arrowFullWidth] : [classes.arrowNotFullWidth])
242
257
  }), _react.default.createElement("span", {
243
258
  // eslint-disable-next-line react/no-danger
244
259
  dangerouslySetInnerHTML: {
@@ -251,12 +266,12 @@ function (_React$PureComponent) {
251
266
  disabled: disabled,
252
267
  focused: !disabled && (focused || hovered)
253
268
  }, InputLabelProps), error && errorText && _react.default.createElement(_HiIconButton.default, {
254
- className: (0, _classnames.default)(classes.iconButton, classes.iconButtonError),
269
+ className: (0, _classnames.default)(classes.iconButton, classes.iconButtonError, (0, _defineProperty2.default)({}, classes.iconFullWidth, fullWidth)),
255
270
  onClick: this.handleHelperClick
256
271
  }, _react.default.createElement(_Warning.default, {
257
272
  className: (0, _classnames.default)(classes.icon)
258
273
  })), helperIcon && helperText && !error && _react.default.createElement(_HiIconButton.default, {
259
- className: (0, _classnames.default)(classes.iconButton, classes.iconButtonInfo, (0, _defineProperty2.default)({}, classes.iconButtonInfoActive, helperOpen)),
274
+ className: (0, _classnames.default)(classes.iconButton, classes.iconButtonInfo, (_classNames2 = {}, (0, _defineProperty2.default)(_classNames2, classes.iconButtonInfoActive, helperOpen), (0, _defineProperty2.default)(_classNames2, classes.iconFullWidth, fullWidth), _classNames2)),
260
275
  onClick: this.handleHelperClick
261
276
  }, _react.default.createElement(_Info.default, {
262
277
  className: (0, _classnames.default)(classes.icon)
@@ -45,7 +45,9 @@ var styles = function styles(theme) {
45
45
  },
46
46
  '&$error': {
47
47
  color: theme.palette.negative.main
48
- }
48
+ },
49
+ display: 'flex',
50
+ alignItems: 'center'
49
51
  }),
50
52
  optional: {
51
53
  fontSize: 11,
package/HiForm/HiInput.js CHANGED
@@ -29,6 +29,8 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
29
29
 
30
30
  var _classnames = _interopRequireDefault(require("classnames"));
31
31
 
32
+ var _index = _interopRequireDefault(require("keycode/index"));
33
+
32
34
  var _Input = _interopRequireDefault(require("@material-ui/core/Input"));
33
35
 
34
36
  var _HiIcon = _interopRequireDefault(require("../HiIcon"));
@@ -170,6 +172,18 @@ function (_React$PureComponent) {
170
172
  (0, _classCallCheck2.default)(this, HiInput);
171
173
  _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(HiInput).call(this));
172
174
 
175
+ _this.handleKeyDown = function (event) {
176
+ var key = (0, _index.default)(event);
177
+
178
+ if (_this.props.onKeyDown) {
179
+ _this.props.onKeyDown(event);
180
+ }
181
+
182
+ if (key === 'enter' && _this.props.onSubmit) {
183
+ _this.props.onSubmit(event);
184
+ }
185
+ };
186
+
173
187
  _this.handleClick = function () {
174
188
  if (_this.props.onClick) {
175
189
  _this.props.onClick();
@@ -387,7 +401,7 @@ function (_React$PureComponent) {
387
401
  value: value,
388
402
  placeholder: placeholder,
389
403
  onFocus: this.handleFocus,
390
- onKeyDown: this.props.onKeyDown,
404
+ onKeyDown: this.handleKeyDown,
391
405
  onClick: this.handleClick,
392
406
  onBlur: this.handleBlur,
393
407
  inputRef: this.getInputElement,
@@ -562,6 +576,11 @@ HiInput.propTypes = process.env.NODE_ENV !== "production" ? {
562
576
  */
563
577
  onRightIconClick: _propTypes.default.func,
564
578
 
579
+ /**
580
+ * Fonction de callback appelée lorsque l'utilisateur tape sur "Entrée"
581
+ */
582
+ onSubmit: _propTypes.default.func,
583
+
565
584
  /**
566
585
  * Passe une ref callback au composant div parent
567
586
  */