@hipay/hipay-material-ui 2.0.0-beta.40 → 2.0.0-beta.42

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.
@@ -28,7 +28,15 @@ var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
28
28
  // @inheritedComponent Button
29
29
  var styles = function styles(theme) {
30
30
  return {
31
- root: {},
31
+ root: {
32
+ '&$disabled': {
33
+ color: theme.palette.neutral.contrastText,
34
+ backgroundColor: theme.palette.neutral.main
35
+ }
36
+ },
37
+ flatNeutral: {
38
+ color: theme.palette.neutral.main
39
+ },
32
40
  flatPositive: {
33
41
  color: theme.palette.positive.main,
34
42
  '&:hover': {
@@ -59,16 +67,6 @@ var styles = function styles(theme) {
59
67
  }
60
68
  }
61
69
  },
62
- flatNeutral: {
63
- color: theme.palette.neutral.main,
64
- '&:hover': {
65
- backgroundColor: (0, _colorManipulator.fade)(theme.palette.neutral.main, theme.palette.action.hoverOpacity),
66
- // Reset on touch devices, it doesn't add specificity
67
- '@media (hover: none)': {
68
- backgroundColor: 'transparent'
69
- }
70
- }
71
- },
72
70
 
73
71
  /* Styles applied to the root element if `variant="[contained | fab]"` and `color="positive"`. */
74
72
  containedPositive: {
@@ -152,7 +150,8 @@ var styles = function styles(theme) {
152
150
  '&:hover': {
153
151
  border: "1px solid ".concat(theme.palette.neutral.main)
154
152
  }
155
- }
153
+ },
154
+ disabled: {}
156
155
  };
157
156
  };
158
157
 
@@ -166,18 +165,20 @@ function HiButton(props) {
166
165
  className = props.className,
167
166
  color = props.color,
168
167
  variant = props.variant,
169
- other = (0, _objectWithoutProperties2.default)(props, ["children", "classes", "className", "color", "variant"]);
168
+ disabled = props.disabled,
169
+ other = (0, _objectWithoutProperties2.default)(props, ["children", "classes", "className", "color", "variant", "disabled"]);
170
170
  var hcolor = ['positive', 'negative', 'middle', 'neutral'].includes(color) ? 'inherit' : color;
171
171
  var fab = variant === 'fab' || variant === 'extendedFab';
172
172
  var contained = variant === 'contained' || variant === 'raised';
173
- var buttonClassNames = (0, _classnames.default)(classes.root, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.flatPositive, (variant === 'text' || variant === 'flat' || variant === 'outlined') && color === 'positive'), (0, _defineProperty2.default)(_classNames, classes.flatNegative, (variant === 'text' || variant === 'flat' || variant === 'outlined') && color === 'negative'), (0, _defineProperty2.default)(_classNames, classes.flatMiddle, (variant === 'text' || variant === 'flat' || variant === 'outlined') && color === 'middle'), (0, _defineProperty2.default)(_classNames, classes.flatNeutral, (variant === 'text' || variant === 'flat' || variant === 'outlined') && color === 'neutral'), (0, _defineProperty2.default)(_classNames, classes.containedPositive, (contained || fab) && color === 'positive'), (0, _defineProperty2.default)(_classNames, classes.containedNegative, (contained || fab) && color === 'negative'), (0, _defineProperty2.default)(_classNames, classes.containedMiddle, (contained || fab) && color === 'middle'), (0, _defineProperty2.default)(_classNames, classes.containedNeutral, (contained || fab) && color === 'neutral'), (0, _defineProperty2.default)(_classNames, classes.outlinedPositive, variant === 'outlined' && color === 'positive'), (0, _defineProperty2.default)(_classNames, classes.outlinedNegative, variant === 'outlined' && color === 'negative'), (0, _defineProperty2.default)(_classNames, classes.outlinedMiddle, variant === 'outlined' && color === 'middle'), (0, _defineProperty2.default)(_classNames, classes.outlinedNeutral, variant === 'outlined' && color === 'neutral'), _classNames));
173
+ var buttonClassNames = (0, _classnames.default)(classes.root, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.flatPositive, (variant === 'text' || variant === 'flat' || variant === 'outlined') && color === 'positive'), (0, _defineProperty2.default)(_classNames, classes.flatNegative, (variant === 'text' || variant === 'flat' || variant === 'outlined') && color === 'negative'), (0, _defineProperty2.default)(_classNames, classes.flatMiddle, (variant === 'text' || variant === 'flat' || variant === 'outlined') && color === 'middle'), (0, _defineProperty2.default)(_classNames, classes.flatNeutral, (variant === 'text' || variant === 'flat' || variant === 'outlined') && (color === 'default' || color === 'neutral')), (0, _defineProperty2.default)(_classNames, classes.containedPositive, (contained || fab) && color === 'positive'), (0, _defineProperty2.default)(_classNames, classes.containedNegative, (contained || fab) && color === 'negative'), (0, _defineProperty2.default)(_classNames, classes.containedMiddle, (contained || fab) && color === 'middle'), (0, _defineProperty2.default)(_classNames, classes.containedNeutral, (contained || fab) && (color === 'default' || color === 'neutral')), (0, _defineProperty2.default)(_classNames, classes.outlinedPositive, variant === 'outlined' && color === 'positive'), (0, _defineProperty2.default)(_classNames, classes.outlinedNegative, variant === 'outlined' && color === 'negative'), (0, _defineProperty2.default)(_classNames, classes.outlinedMiddle, variant === 'outlined' && color === 'middle'), (0, _defineProperty2.default)(_classNames, classes.outlinedNeutral, variant === 'outlined' && (color === 'default' || color === 'neutral')), (0, _defineProperty2.default)(_classNames, classes.disabled, disabled), _classNames));
174
174
  return _react.default.createElement(_Button.default, (0, _extends2.default)({
175
175
  className: className,
176
176
  classes: {
177
177
  root: buttonClassNames
178
178
  },
179
179
  color: hcolor,
180
- variant: variant
180
+ variant: variant,
181
+ disabled: disabled
181
182
  }, other), children);
182
183
  }
183
184
 
@@ -203,7 +204,7 @@ HiButton.propTypes = process.env.NODE_ENV !== "production" ? {
203
204
  variant: _propTypes.default.oneOf(['text', 'flat', 'outlined', 'contained', 'raised', 'fab', 'extendedFab'])
204
205
  } : {};
205
206
  HiButton.defaultProps = {
206
- color: 'default',
207
+ color: 'neutral',
207
208
  variant: 'text'
208
209
  };
209
210
 
package/HiForm/HiInput.js CHANGED
@@ -390,6 +390,15 @@ function (_React$PureComponent) {
390
390
  }
391
391
  }));
392
392
  }
393
+ }], [{
394
+ key: "getDerivedStateFromProps",
395
+ value: function getDerivedStateFromProps(nextProps, prevState) {
396
+ if (typeof nextProps.focused !== 'undefined' && nextProps.focused !== prevState.focused) {
397
+ return {
398
+ focused: nextProps.focused
399
+ };
400
+ }
401
+ }
393
402
  }]);
394
403
  return HiInput;
395
404
  }(_react.default.PureComponent);
@@ -445,6 +454,12 @@ HiInput.propTypes = process.env.NODE_ENV !== "production" ? {
445
454
  */
446
455
  error: _propTypes.default.bool,
447
456
 
457
+ /**
458
+ * Force le focus de l'input et surcharge le comportement par défaut
459
+ * où le focus est géré dans le state.
460
+ */
461
+ focused: _propTypes.default.bool,
462
+
448
463
  /**
449
464
  * Utile pour surcharger les classes de l'input
450
465
  */
@@ -555,6 +555,14 @@ function (_React$PureComponent) {
555
555
  });
556
556
  }
557
557
  }
558
+ }, {
559
+ key: "handleReset",
560
+ value: function handleReset(event) {
561
+ if (this.props.onReset) {
562
+ event.stopPropagation();
563
+ this.props.onReset(event);
564
+ }
565
+ }
558
566
  }, {
559
567
  key: "render",
560
568
  value: function render() {
@@ -751,14 +759,14 @@ function (_React$PureComponent) {
751
759
  onMouseLeave: this.props.onMouseLeave,
752
760
  refElement: function refElement(el) {
753
761
  _this2.selectInputElement = el;
754
- }
762
+ },
763
+ onReset: this.props.onReset
755
764
  }), open && staticPosition ? _react.default.createElement("div", {
756
765
  style: popperStyle
757
766
  }, content) : _react.default.createElement(_Popper.default, {
758
767
  anchorEl: this.inputEl,
759
768
  placement: "bottom-start",
760
769
  open: open,
761
- eventsEnabled: open,
762
770
  className: popperClass,
763
771
  style: popperStyle,
764
772
  disablePortal: true
@@ -930,6 +938,11 @@ HiSelect.propTypes = process.env.NODE_ENV !== "production" ? {
930
938
  */
931
939
  onMouseLeave: _propTypes.default.func,
932
940
 
941
+ /**
942
+ * Fonction de callback appelée lorsqu'on vide le champs
943
+ */
944
+ onReset: _propTypes.default.func,
945
+
933
946
  /**
934
947
  * Fonction de callback appelée lorsqu'on écrit dans la barre de recherche
935
948
  * A utiliser pour les selects avec des données dynamiques
@@ -171,26 +171,37 @@ function (_React$PureComponent) {
171
171
  }
172
172
  };
173
173
 
174
+ _this.handleClick = function (event) {
175
+ if ((!_this.resetIcon || !_this.resetIcon.contains(event.target)) && _this.props.onClick) {
176
+ _this.props.onClick(event);
177
+ }
178
+ };
179
+
174
180
  _this.handleKeyDown = _this.handleKeyDown.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
181
+ _this.handleClick = _this.handleClick.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
175
182
  return _this;
176
183
  }
177
184
 
178
185
  (0, _createClass2.default)(SelectInput, [{
179
186
  key: "render",
180
187
  value: function render() {
181
- var _classNames, _classNames2;
188
+ var _classNames,
189
+ _classNames2,
190
+ _this2 = this;
182
191
 
183
192
  var _this$props = this.props,
184
193
  classes = _this$props.classes,
185
194
  noButton = _this$props.noButton,
186
195
  disabled = _this$props.disabled,
187
196
  onClick = _this$props.onClick,
197
+ onReset = _this$props.onReset,
188
198
  value = _this$props.value,
189
199
  open = _this$props.open,
190
200
  focused = _this$props.focused,
191
201
  error = _this$props.error,
192
202
  id = _this$props.id,
193
- refElement = _this$props.refElement; // On utilise classNames pour variabiliser les styles et merge les classes appliquées
203
+ refElement = _this$props.refElement,
204
+ theme = _this$props.theme; // On utilise classNames pour variabiliser les styles et merge les classes appliquées
194
205
 
195
206
  var rootClass = (0, _classnames.default)(classes.root, classes.inkbar, classes.underline, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.disabled, disabled), (0, _defineProperty2.default)(_classNames, classes.focused, focused), (0, _defineProperty2.default)(_classNames, classes.error, error && !focused), _classNames));
196
207
  var iconClass = (0, _classnames.default)(classes.icon, (_classNames2 = {}, (0, _defineProperty2.default)(_classNames2, classes.iconOpen, open), (0, _defineProperty2.default)(_classNames2, classes.iconClose, !open), _classNames2));
@@ -219,7 +230,7 @@ function (_React$PureComponent) {
219
230
  classes: {
220
231
  root: rootClass
221
232
  },
222
- onClick: onClick,
233
+ onClick: this.handleClick,
223
234
  disabled: disabled,
224
235
  onMouseEnter: this.props.onMouseEnter,
225
236
  onMouseLeave: this.props.onMouseLeave,
@@ -231,7 +242,16 @@ function (_React$PureComponent) {
231
242
  }
232
243
  }, _react.default.createElement("span", {
233
244
  className: classes.label
234
- }, value), _react.default.createElement(_HiIcon.default, {
245
+ }, value), onReset && focused && _react.default.createElement("div", {
246
+ ref: function ref(el) {
247
+ _this2.resetIcon = el;
248
+ }
249
+ }, _react.default.createElement(_HiIcon.default, {
250
+ icon: "close",
251
+ size: 24,
252
+ color: theme.palette.neutral.main,
253
+ onClick: onReset
254
+ })), _react.default.createElement(_HiIcon.default, {
235
255
  className: iconClass,
236
256
  icon: "arrow_drop_down"
237
257
  }));
@@ -305,6 +325,11 @@ SelectInput.propTypes = process.env.NODE_ENV !== "production" ? {
305
325
  */
306
326
  onMouseLeave: _propTypes.default.func,
307
327
 
328
+ /**
329
+ * Fonction de callback appelée lorsqu'on vide le champs
330
+ */
331
+ onReset: _propTypes.default.func,
332
+
308
333
  /**
309
334
  * Fonction de callback à la pression de la touche "Entrée"
310
335
  */
@@ -328,7 +353,8 @@ SelectInput.propTypes = process.env.NODE_ENV !== "production" ? {
328
353
 
329
354
  var _default = (0, _styles.withStyles)(styles, {
330
355
  hiComponent: true,
331
- name: 'HmuiSelectInput'
356
+ name: 'HmuiSelectInput',
357
+ withTheme: true
332
358
  })(SelectInput);
333
359
 
334
360
  exports.default = _default;
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
12
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
+
14
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
+
16
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
+
18
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
+
20
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
+
22
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
23
+
24
+ var _react = _interopRequireDefault(require("react"));
25
+
26
+ var _propTypes = _interopRequireDefault(require("prop-types"));
27
+
28
+ var _HiFormControl = _interopRequireDefault(require("../HiForm/HiFormControl"));
29
+
30
+ var _HiNestedSelect = _interopRequireDefault(require("./HiNestedSelect"));
31
+
32
+ // @inheritedComponent HiDynamicSelect
33
+
34
+ /**
35
+ * Champs input pour formulaire
36
+ */
37
+ var HiNestedSelectField =
38
+ /*#__PURE__*/
39
+ function (_React$PureComponent) {
40
+ (0, _inherits2.default)(HiNestedSelectField, _React$PureComponent);
41
+
42
+ function HiNestedSelectField() {
43
+ (0, _classCallCheck2.default)(this, HiNestedSelectField);
44
+ return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(HiNestedSelectField).apply(this, arguments));
45
+ }
46
+
47
+ (0, _createClass2.default)(HiNestedSelectField, [{
48
+ key: "render",
49
+ value: function render() {
50
+ var _this$props = this.props,
51
+ label = _this$props.label,
52
+ required = _this$props.required,
53
+ disabled = _this$props.disabled,
54
+ error = _this$props.error,
55
+ errorText = _this$props.errorText,
56
+ helperText = _this$props.helperText,
57
+ helperIcon = _this$props.helperIcon,
58
+ id = _this$props.id,
59
+ name = _this$props.name,
60
+ value = _this$props.value,
61
+ options = _this$props.options,
62
+ type = _this$props.type,
63
+ multiple = _this$props.multiple,
64
+ iconAll = _this$props.iconAll,
65
+ checkbox = _this$props.checkbox,
66
+ searchable = _this$props.searchable,
67
+ translations = _this$props.translations,
68
+ className = _this$props.className,
69
+ others = (0, _objectWithoutProperties2.default)(_this$props, ["label", "required", "disabled", "error", "errorText", "helperText", "helperIcon", "id", "name", "value", "options", "type", "multiple", "iconAll", "checkbox", "searchable", "translations", "className"]);
70
+ return _react.default.createElement(_HiFormControl.default, {
71
+ id: id,
72
+ label: label,
73
+ required: required,
74
+ disabled: disabled,
75
+ error: error,
76
+ errorText: errorText,
77
+ helperText: helperText,
78
+ helperIcon: helperIcon,
79
+ className: className
80
+ }, _react.default.createElement(_HiNestedSelect.default, (0, _extends2.default)({
81
+ id: id,
82
+ name: name,
83
+ value: value,
84
+ options: options,
85
+ type: type,
86
+ multiple: multiple,
87
+ iconAll: iconAll,
88
+ checkbox: checkbox,
89
+ searchable: searchable,
90
+ translations: translations,
91
+ disabled: disabled,
92
+ error: error
93
+ }, others)));
94
+ }
95
+ }]);
96
+ return HiNestedSelectField;
97
+ }(_react.default.PureComponent);
98
+
99
+ HiNestedSelectField.propTypes = process.env.NODE_ENV !== "production" ? {
100
+ /**
101
+ * Surcharge des styles
102
+ */
103
+ className: _propTypes.default.string,
104
+
105
+ /**
106
+ * Si `true`, l'input sera inactif.
107
+ */
108
+ disabled: _propTypes.default.bool,
109
+
110
+ /**
111
+ * Si `true`, le champs sera en erreur.
112
+ */
113
+ error: _propTypes.default.bool,
114
+
115
+ /**
116
+ * Texte de l'erreur
117
+ */
118
+ errorText: _propTypes.default.string,
119
+
120
+ /**
121
+ * Si "true", le texte d'aide s'affichera seulement au clic sur l'icône "Information"
122
+ */
123
+ helperIcon: _propTypes.default.bool,
124
+
125
+ /**
126
+ * Texte de l'aide
127
+ */
128
+ helperText: _propTypes.default.string,
129
+
130
+ /**
131
+ * id de l'élément input
132
+ */
133
+ id: _propTypes.default.string.isRequired,
134
+
135
+ /**
136
+ * Label du champs
137
+ */
138
+ label: _propTypes.default.string,
139
+
140
+ /**
141
+ * true si champs obligatoire
142
+ */
143
+ required: _propTypes.default.bool
144
+ } : {};
145
+ var _default = HiNestedSelectField;
146
+ exports.default = _default;
@@ -59,11 +59,11 @@ var styles = function styles(theme) {
59
59
  backgroundColor: theme.palette.background2,
60
60
  maxWidth: 500,
61
61
  width: '100%',
62
- position: 'relative'
62
+ position: 'relative',
63
+ zIndex: 1
63
64
  },
64
65
  popper: {
65
- width: '100%',
66
- zIndex: 1200
66
+ width: '100%'
67
67
  },
68
68
  paper: {
69
69
  borderRadius: '0px 2px',
@@ -407,10 +407,20 @@ function (_React$PureComponent) {
407
407
  _this.handleSearchReset = _this.handleSearchReset.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
408
408
  _this.handleSelect = _this.handleSelect.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
409
409
  _this.handleSuggestions = _this.handleSuggestions.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
410
+ _this.getInputElement = _this.getInputElement.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
410
411
  return _this;
411
412
  }
412
413
 
413
414
  (0, _createClass2.default)(HiSelect, [{
415
+ key: "getInputElement",
416
+ value: function getInputElement(el) {
417
+ this.searchField = el;
418
+
419
+ if (this.props.inputRef) {
420
+ this.props.inputRef(this.searchField);
421
+ }
422
+ }
423
+ }, {
414
424
  key: "render",
415
425
  value: function render() {
416
426
  var _this2 = this;
@@ -473,9 +483,7 @@ function (_React$PureComponent) {
473
483
  }, !!searchable && _react.default.createElement(_HiInput.default, {
474
484
  value: searchValue,
475
485
  autoFocus: true,
476
- inputRef: function inputRef(el) {
477
- _this2.searchField = el;
478
- },
486
+ inputRef: this.getInputElement,
479
487
  onKeyDown: this.handleKeyDownSearch,
480
488
  onChange: this.handleSearch,
481
489
  onReset: this.handleSearchReset,
@@ -520,6 +528,7 @@ function (_React$PureComponent) {
520
528
  onSubmit: onSubmit,
521
529
  onMouseEnter: this.props.onMouseEnter,
522
530
  onMouseLeave: this.props.onMouseLeave,
531
+ onReset: this.props.onReset,
523
532
  placeholder: placeholder
524
533
  }, hiSelectInputProps, {
525
534
  refElement: function refElement(el) {
@@ -531,7 +540,6 @@ function (_React$PureComponent) {
531
540
  anchorEl: this.inputEl,
532
541
  placement: "bottom-start",
533
542
  open: open,
534
- eventsEnabled: open,
535
543
  className: classes.popper,
536
544
  disablePortal: true
537
545
  }, content));
@@ -662,6 +670,11 @@ HiSelect.propTypes = process.env.NODE_ENV !== "production" ? {
662
670
  */
663
671
  onMouseLeave: _propTypes.default.func,
664
672
 
673
+ /**
674
+ * Fonction de callback appelée lorsqu'on vide le champs
675
+ */
676
+ onReset: _propTypes.default.func,
677
+
665
678
  /**
666
679
  * Fonction de callback appelée lorsque le scroll atteint le bas de la liste
667
680
  */
@@ -35,6 +35,8 @@ var _ButtonBase = _interopRequireDefault(require("@material-ui/core/ButtonBase")
35
35
 
36
36
  var _Icon = _interopRequireDefault(require("@material-ui/core/Icon"));
37
37
 
38
+ var _HiIcon = _interopRequireDefault(require("../HiIcon"));
39
+
38
40
  var _withStyles = _interopRequireDefault(require("../styles/withStyles"));
39
41
 
40
42
  var _keycode = _interopRequireDefault(require("keycode"));
@@ -179,27 +181,76 @@ function (_React$PureComponent) {
179
181
  }
180
182
  };
181
183
 
184
+ _this.handleKeyDownReset = function (event) {
185
+ var key = (0, _keycode.default)(event);
186
+
187
+ if (key === 'enter' || key === 'space') {
188
+ _this.handleReset(event);
189
+
190
+ event.stopPropagation();
191
+ event.preventDefault();
192
+ }
193
+ };
194
+
195
+ _this.handleClick = function (event) {
196
+ if ((!_this.resetIcon || !_this.resetIcon.contains(event.target)) && _this.props.onClick) {
197
+ _this.props.onClick(event);
198
+ }
199
+ };
200
+
201
+ _this.handleReset = function (event) {
202
+ _this.props.onReset(event);
203
+
204
+ if (_this.input) {
205
+ _this.input.focus();
206
+ }
207
+ };
208
+
209
+ _this.handleBlur = function (event) {
210
+ if ((!_this.input || !_this.input.contains(event.relatedTarget)) && _this.props.onBlur) {
211
+ _this.props.onBlur(event);
212
+ } else {
213
+ if (_this.input && (!_this.resetIcon || !_this.resetIcon.contains(event.relatedTarget))) {
214
+ _this.input.focus();
215
+ }
216
+ }
217
+ };
218
+
219
+ _this.handleRef = function (el) {
220
+ _this.input = el;
221
+
222
+ if (_this.props.refElement) {
223
+ _this.props.refElement(el);
224
+ }
225
+ };
226
+
182
227
  _this.handleKeyDown = _this.handleKeyDown.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
228
+ _this.handleClick = _this.handleClick.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
229
+ _this.handleBlur = _this.handleBlur.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
230
+ _this.handleRef = _this.handleRef.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
231
+ _this.handleReset = _this.handleReset.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
183
232
  return _this;
184
233
  }
185
234
 
186
235
  (0, _createClass2.default)(HiSelectInput, [{
187
236
  key: "render",
188
237
  value: function render() {
189
- var _classNames, _classNames2;
238
+ var _classNames,
239
+ _classNames2,
240
+ _this2 = this;
190
241
 
191
242
  var _this$props = this.props,
192
243
  classes = _this$props.classes,
193
244
  noButton = _this$props.noButton,
194
245
  disabled = _this$props.disabled,
195
246
  onClick = _this$props.onClick,
247
+ onReset = _this$props.onReset,
196
248
  value = _this$props.value,
197
249
  open = _this$props.open,
198
250
  focused = _this$props.focused,
199
251
  error = _this$props.error,
200
252
  id = _this$props.id,
201
- placeholder = _this$props.placeholder,
202
- refElement = _this$props.refElement; // On utilise classNames pour variabiliser les styles et merge les classes appliquées
253
+ placeholder = _this$props.placeholder; // On utilise classNames pour variabiliser les styles et merge les classes appliquées
203
254
 
204
255
  var rootClass = (0, _classnames.default)(classes.root, classes.inkbar, classes.underline, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.disabled, disabled), (0, _defineProperty2.default)(_classNames, classes.focused, focused), (0, _defineProperty2.default)(_classNames, classes.error, error && !focused), _classNames));
205
256
  var iconClass = (0, _classnames.default)(classes.icon, (_classNames2 = {}, (0, _defineProperty2.default)(_classNames2, classes.iconOpen, open), (0, _defineProperty2.default)(_classNames2, classes.iconClose, !open), _classNames2));
@@ -214,9 +265,7 @@ function (_React$PureComponent) {
214
265
  onBlur: this.props.onBlur,
215
266
  role: "button",
216
267
  tabIndex: "0",
217
- ref: function ref(el) {
218
- if (refElement) refElement(el);
219
- }
268
+ ref: this.handleRef
220
269
  }, _react.default.createElement("span", {
221
270
  className: (0, _classnames.default)(classes.label, (0, _defineProperty2.default)({}, classes.placeholder, value === undefined))
222
271
  }, value || placeholder), _react.default.createElement(_ArrowDropDown.default, {
@@ -224,19 +273,28 @@ function (_React$PureComponent) {
224
273
  })) : _react.default.createElement(_ButtonBase.default, {
225
274
  id: id,
226
275
  className: rootClass,
227
- onClick: onClick,
276
+ onClick: this.handleClick,
228
277
  disabled: disabled,
229
278
  onMouseEnter: this.props.onMouseEnter,
230
279
  onMouseLeave: this.props.onMouseLeave,
231
280
  onKeyDown: this.handleKeyDown,
232
281
  onFocus: this.props.onFocus,
233
- onBlur: this.props.onBlur,
234
- buttonRef: function buttonRef(el) {
235
- if (refElement) refElement(el);
236
- }
282
+ onBlur: this.handleBlur,
283
+ buttonRef: this.handleRef
237
284
  }, _react.default.createElement("span", {
238
285
  className: (0, _classnames.default)(classes.label, (0, _defineProperty2.default)({}, classes.placeholder, value === undefined))
239
- }, value || placeholder), _react.default.createElement(_Icon.default, {
286
+ }, value || placeholder), onReset && focused && _react.default.createElement("div", {
287
+ ref: function ref(el) {
288
+ _this2.resetIcon = el;
289
+ }
290
+ }, _react.default.createElement(_HiIcon.default, {
291
+ icon: "close",
292
+ size: 20,
293
+ color: "neutral",
294
+ onClick: this.handleReset,
295
+ onKeyDown: this.handleKeyDownReset,
296
+ tabIndex: 0
297
+ })), _react.default.createElement(_Icon.default, {
240
298
  classes: {
241
299
  root: iconClass
242
300
  }
@@ -315,6 +373,11 @@ HiSelectInput.propTypes = process.env.NODE_ENV !== "production" ? {
315
373
  */
316
374
  onMouseLeave: _propTypes.default.func,
317
375
 
376
+ /**
377
+ * Fonction de callback appelée lorsqu'on vide le champs
378
+ */
379
+ onReset: _propTypes.default.func,
380
+
318
381
  /**
319
382
  * Fonction de callback à la pression de la touche "Entrée"
320
383
  */