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

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
  */