@hipay/hipay-material-ui 1.0.0-beta.3 → 1.0.0-beta.5

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/HiChip/HiChip.js +4 -4
  2. package/HiColoredLabel/HiColoredLabel.js +1 -1
  3. package/HiDatePicker/HiDatePicker.js +12 -14
  4. package/HiDatePicker/HiDateRangeSelector.js +5 -5
  5. package/HiForm/HiFormControl.js +5 -2
  6. package/HiForm/HiInput.js +4 -4
  7. package/HiForm/HiSearchField.js +1 -1
  8. package/HiSelect/HiSelect.js +286 -258
  9. package/HiSelect/HiSelectField.js +8 -6
  10. package/HiSelect/HiSuggestSelect.js +25 -47
  11. package/HiSelect/HiSuggestSelectField.js +88 -80
  12. package/HiSelect/SelectInput.js +32 -21
  13. package/HiSelectableList/HiSelectableList.js +8 -2
  14. package/HiSelectableList/HiSelectableListItem.js +41 -38
  15. package/HiTable/HiTable.js +1 -1
  16. package/HiTable/HiTableFooterScroll.js +1 -1
  17. package/HiTopBar/HiTopBar.js +16 -12
  18. package/es/HiChip/HiChip.js +4 -4
  19. package/es/HiColoredLabel/HiColoredLabel.js +1 -1
  20. package/es/HiDatePicker/HiDatePicker.js +12 -14
  21. package/es/HiDatePicker/HiDateRangeSelector.js +5 -5
  22. package/es/HiForm/HiFormControl.js +5 -2
  23. package/es/HiForm/HiInput.js +4 -4
  24. package/es/HiForm/HiSearchField.js +1 -1
  25. package/es/HiSelect/HiSelect.js +262 -230
  26. package/es/HiSelect/HiSelectField.js +9 -7
  27. package/es/HiSelect/HiSuggestSelect.js +24 -39
  28. package/es/HiSelect/HiSuggestSelectField.js +77 -69
  29. package/es/HiSelect/SelectInput.js +42 -21
  30. package/es/HiSelectableList/HiSelectableList.js +9 -3
  31. package/es/HiSelectableList/HiSelectableListItem.js +41 -38
  32. package/es/HiTable/HiTable.js +1 -1
  33. package/es/HiTable/HiTableFooterScroll.js +1 -1
  34. package/es/HiTopBar/HiTopBar.js +16 -8
  35. package/es/utils/hiHelpers.js +1 -1
  36. package/index.es.js +1 -1
  37. package/index.js +1 -1
  38. package/package.json +1 -1
  39. package/umd/hipay-material-ui.development.js +8701 -8705
  40. package/umd/hipay-material-ui.production.min.js +5 -5
  41. package/utils/hiHelpers.js +1 -1
@@ -4,17 +4,12 @@ import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutPropert
4
4
 
5
5
  import React from 'react';
6
6
  import PropTypes from 'prop-types';
7
-
8
- import classNames from 'classnames';
9
7
  import { findDOMNode } from 'react-dom';
10
8
  import Grow from 'material-ui/transitions/Grow';
11
9
  import Paper from 'material-ui/Paper';
12
- import ClickAwayListener from 'material-ui/utils/ClickAwayListener';
13
10
  import { Manager, Target, Popper } from 'react-popper';
14
-
15
11
  import HiSelectableList from '../HiSelectableList';
16
12
  import HiInput from '../HiForm/HiInput';
17
-
18
13
  import { withStyles } from '../styles';
19
14
  import { getNextItemSelectable } from '../utils/hiHelpers';
20
15
 
@@ -22,7 +17,7 @@ export const styles = theme => ({
22
17
  root: {
23
18
  backgroundColor: theme.palette.background2,
24
19
  maxWidth: 500,
25
- minWidth: 250,
20
+ minWidth: 200,
26
21
  width: '100%'
27
22
  },
28
23
  popper: {
@@ -31,9 +26,6 @@ export const styles = theme => ({
31
26
  zIndex: 9,
32
27
  top: '100%'
33
28
  },
34
- popperClose: {
35
- pointerEvents: 'none'
36
- },
37
29
  paper: {
38
30
  borderRadius: '0px 2px',
39
31
  maxHeight: 440,
@@ -94,34 +86,29 @@ class HiSuggestSelect extends React.PureComponent {
94
86
  };
95
87
 
96
88
  this.handleSelect = this.handleSelect.bind(this);
97
- this.handleClose = this.handleClose.bind(this);
98
89
  this.handleBlur = this.handleBlur.bind(this);
90
+ this.handleFocus = this.handleFocus.bind(this);
99
91
  }
100
92
 
101
93
  componentWillReceiveProps(nextProps) {
102
94
  this.setState({ options: nextProps.options });
103
95
  }
104
96
 
105
- handleClose() {
106
- document.body.style.overflow = 'auto';
107
- this.setState({
108
- focused: false, // TODO - Make difference between open and focus
109
- options: []
110
- });
111
- }
112
-
113
97
  // Key down on list items
114
98
 
115
99
 
116
100
  // Key down on search input
117
101
 
118
102
 
103
+ handleFocus() {
104
+ this.setState({ focused: true });
105
+ }
106
+
119
107
  handleBlur(event) {
120
108
  // Si on click sur un élément de HiInput, on garde le focus
121
109
  // Par exemple sur l'icone reset
122
- const overlay = this.overlay;
123
110
  if (!event.relatedTarget || !this.overlay || !this.overlay.contains(event.relatedTarget)) {
124
- this.setState({ options: [] });
111
+ this.setState({ options: [], focused: false });
125
112
  }
126
113
  }
127
114
 
@@ -131,7 +118,8 @@ class HiSuggestSelect extends React.PureComponent {
131
118
  otherProps = _objectWithoutProperties(_props, ['classes', 'translations', 'id', 'onSearch']);
132
119
 
133
120
  const { focused, options } = this.state;
134
- const open = !!options.length;
121
+ const open = !!options.length && focused;
122
+
135
123
  return React.createElement(
136
124
  'div',
137
125
  {
@@ -154,7 +142,8 @@ class HiSuggestSelect extends React.PureComponent {
154
142
  },
155
143
  onChange: onSearch,
156
144
  onKeyDown: this.handleKeyDownSearch,
157
- onBlur: this.handleBlur
145
+ onBlur: this.handleBlur,
146
+ onFocus: this.handleFocus
158
147
  }))
159
148
  ),
160
149
  open && React.createElement(
@@ -162,26 +151,22 @@ class HiSuggestSelect extends React.PureComponent {
162
151
  {
163
152
  placement: 'bottom-start',
164
153
  eventsEnabled: open,
165
- className: classNames(classes.popper, { [classes.popperClose]: !open })
154
+ className: classes.popper
166
155
  },
167
156
  React.createElement(
168
- ClickAwayListener,
169
- { onClickAway: this.handleClose },
157
+ Grow,
158
+ { 'in': open, id: 'menu-list', style: { transformOrigin: '0 0 0' } },
170
159
  React.createElement(
171
- Grow,
172
- { 'in': open, id: 'menu-list', style: { transformOrigin: '0 0 0' } },
173
- React.createElement(
174
- Paper,
175
- { className: classes.paper },
176
- React.createElement(HiSelectableList, {
177
- itemList: options,
178
- selectedIdList: [],
179
- checkbox: false,
180
- onSelect: this.handleSelect,
181
- translations: translations,
182
- onKeyDown: this.handleKeyDown
183
- })
184
- )
160
+ Paper,
161
+ { className: classes.paper },
162
+ React.createElement(HiSelectableList, {
163
+ itemList: options,
164
+ selectedIdList: [],
165
+ checkbox: false,
166
+ onSelect: this.handleSelect,
167
+ translations: translations,
168
+ onKeyDown: this.handleKeyDown
169
+ })
185
170
  )
186
171
  )
187
172
  )
@@ -12,78 +12,86 @@ import HiSuggestSelect from './HiSuggestSelect';
12
12
  */
13
13
  class HiSuggestSelectField extends React.PureComponent {
14
14
 
15
- render() {
16
- const _props = this.props,
17
- {
18
- label,
19
- required,
20
- disabled,
21
- error,
22
- errorText,
23
- helperText,
24
- helperIcon,
25
- id
26
- } = _props,
27
- others = _objectWithoutProperties(_props, ['label', 'required', 'disabled', 'error', 'errorText', 'helperText', 'helperIcon', 'id']);
15
+ render() {
16
+ const _props = this.props,
17
+ {
18
+ label,
19
+ required,
20
+ disabled,
21
+ error,
22
+ errorText,
23
+ helperText,
24
+ helperIcon,
25
+ id,
26
+ className
27
+ } = _props,
28
+ others = _objectWithoutProperties(_props, ['label', 'required', 'disabled', 'error', 'errorText', 'helperText', 'helperIcon', 'id', 'className']);
28
29
 
29
- return React.createElement(
30
- HiFormControl,
31
- {
32
- id: id,
33
- label: label,
34
- required: required,
35
- disabled: disabled,
36
- error: error,
37
- errorText: errorText,
38
- helperText: helperText,
39
- helperIcon: helperIcon
40
- },
41
- React.createElement(HiSuggestSelect, _extends({
42
- id: id,
43
- translations: {
44
- all: 'Tous les pays',
45
- no_result_match: 'Aucun résultat correspondant',
46
- search: 'Recherche',
47
- n_items_selected: '%s pays sélectionnés',
48
- one_item_selected: '%s pays sélectionné'
49
- }
50
- }, others))
51
- );
52
- }
30
+ return React.createElement(
31
+ HiFormControl,
32
+ {
33
+ id: id,
34
+ label: label,
35
+ required: required,
36
+ disabled: disabled,
37
+ error: error,
38
+ errorText: errorText,
39
+ helperText: helperText,
40
+ helperIcon: helperIcon,
41
+ className: className
42
+ },
43
+ React.createElement(HiSuggestSelect, _extends({
44
+ id: id,
45
+ translations: {
46
+ all: 'Tous les pays',
47
+ no_result_match: 'Aucun résultat correspondant',
48
+ search: 'Recherche',
49
+ n_items_selected: '%s pays sélectionnés',
50
+ one_item_selected: '%s pays sélectionné'
51
+ },
52
+ disabled: disabled,
53
+ error: error
54
+ }, others))
55
+ );
56
+ }
53
57
  }
54
58
 
55
59
  HiSuggestSelectField.propTypes = process.env.NODE_ENV !== "production" ? {
56
- /**
57
- * Si `true`, l'input sera inactif.
58
- */
59
- disabled: PropTypes.bool,
60
- /**
61
- * Si `true`, le champs sera en erreur.
62
- */
63
- error: PropTypes.bool,
64
- /**
65
- * Texte de l'erreur
66
- */
67
- errorText: PropTypes.string,
68
- /**
69
- * Si "true", le texte d'aide s'affichera seulement au clic sur l'icône "Information"
70
- */
71
- helperIcon: PropTypes.bool,
72
- /**
73
- * Texte de l'aide
74
- */
75
- helperText: PropTypes.string,
76
- /**
77
- * id de l'élément input
78
- */
79
- id: PropTypes.string,
80
- /**
81
- * Label du champs
82
- */
83
- label: PropTypes.string,
84
- /**
85
- * true si champs obligatoire
86
- */
87
- required: PropTypes.bool
60
+ /**
61
+ * Surcharge des styles
62
+ */
63
+ className: PropTypes.string,
64
+ /**
65
+ * Si `true`, l'input sera inactif.
66
+ */
67
+ disabled: PropTypes.bool,
68
+ /**
69
+ * Si `true`, le champs sera en erreur.
70
+ */
71
+ error: PropTypes.bool,
72
+ /**
73
+ * Texte de l'erreur
74
+ */
75
+ errorText: PropTypes.string,
76
+ /**
77
+ * Si "true", le texte d'aide s'affichera seulement au clic sur l'icône "Information"
78
+ */
79
+ helperIcon: PropTypes.bool,
80
+ /**
81
+ * Texte de l'aide
82
+ */
83
+ helperText: PropTypes.string,
84
+ /**
85
+ * id de l'élément input
86
+ */
87
+ id: PropTypes.string,
88
+ /**
89
+ * Label du champs
90
+ */
91
+ label: PropTypes.string,
92
+ /**
93
+ * true si champs obligatoire
94
+ */
95
+ required: PropTypes.bool
88
96
  } : {};
89
97
  export default HiSuggestSelectField;
@@ -47,7 +47,7 @@ export const styles = theme => ({
47
47
  },
48
48
  inkbar: {
49
49
  '&:not($disabled)': {
50
- '&:after': {
50
+ '&:not($error):after': {
51
51
  backgroundColor: theme.palette.business.primary.normal,
52
52
  left: 0,
53
53
  bottom: 0,
@@ -135,7 +135,18 @@ class SelectInput extends React.PureComponent {
135
135
  }
136
136
 
137
137
  render() {
138
- const { classes, noButton, disabled, onClick, value, open, focused, error, id } = this.props;
138
+ const {
139
+ classes,
140
+ noButton,
141
+ disabled,
142
+ onClick,
143
+ value,
144
+ open,
145
+ focused,
146
+ error,
147
+ id,
148
+ refElement
149
+ } = this.props;
139
150
 
140
151
  // On utilise classNames pour variabiliser les styles et merge les classes appliquées
141
152
  const rootClass = classNames(classes.root, classes.inkbar, classes.underline, {
@@ -162,7 +173,10 @@ class SelectInput extends React.PureComponent {
162
173
  onFocus: this.props.onFocus,
163
174
  onBlur: this.props.onBlur,
164
175
  role: 'button',
165
- tabIndex: '0'
176
+ tabIndex: '0',
177
+ ref: el => {
178
+ refElement && refElement(el);
179
+ }
166
180
  },
167
181
  React.createElement(
168
182
  'span',
@@ -181,7 +195,10 @@ class SelectInput extends React.PureComponent {
181
195
  onMouseLeave: this.props.onMouseLeave,
182
196
  onKeyDown: this.handleKeyDown,
183
197
  onFocus: this.props.onFocus,
184
- onBlur: this.props.onBlur
198
+ onBlur: this.props.onBlur,
199
+ buttonRef: el => {
200
+ refElement && refElement(el);
201
+ }
185
202
  },
186
203
  React.createElement(
187
204
  'span',
@@ -216,6 +233,23 @@ SelectInput.propTypes = process.env.NODE_ENV !== "production" ? {
216
233
  * If `true`, the select will be disabled.
217
234
  */
218
235
  disabled: PropTypes.bool,
236
+ /**
237
+ * Applique le style error
238
+ */
239
+ error: PropTypes.bool,
240
+ /**
241
+ * Applique le style focused
242
+ */
243
+ focused: PropTypes.bool,
244
+ /**
245
+ * id du select
246
+ */
247
+ id: PropTypes.string,
248
+ /**
249
+ * Affiche sous forme de div à la place d'un bouton.
250
+ * Si des éléments cliquables sont à l'intérieur.
251
+ */
252
+ noButton: PropTypes.bool,
219
253
  /**
220
254
  * Fonction de callback au blur du bouton
221
255
  */
@@ -232,30 +266,17 @@ SelectInput.propTypes = process.env.NODE_ENV !== "production" ? {
232
266
  * Fonction de callback à la pression de touche
233
267
  */
234
268
  onKeyDown: PropTypes.func,
235
- /**
236
- * Valeur à afficher (déjà formattée)
237
- */
238
- value: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.node]),
239
269
  /**
240
270
  * Applique le style open et effectue une rotation de l'icône
241
271
  */
242
272
  open: PropTypes.bool,
243
273
  /**
244
- * Affiche sous forme de div à la place d'un bouton.
245
- * Si des éléments cliquables sont à l'intérieur.
246
- */
247
- noButton: PropTypes.bool,
248
- /**
249
- * Applique le style focused
250
- */
251
- focused: PropTypes.bool,
252
- /**
253
- * Applique le style error
274
+ * Use that property to pass a ref callback to the native component.
254
275
  */
255
- error: PropTypes.bool,
276
+ refElement: PropTypes.func,
256
277
  /**
257
- * id du select
278
+ * Valeur à afficher (déjà formattée)
258
279
  */
259
- id: PropTypes.string
280
+ value: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.node])
260
281
  } : {};
261
282
  export default withStyles(styles, { name: 'HmuiSelectInput' })(SelectInput);
@@ -37,9 +37,10 @@ class HiSelectableList extends React.PureComponent {
37
37
  checkedIcon,
38
38
  allSelected,
39
39
  checkbox,
40
- hierarchic
40
+ hierarchic,
41
+ disabledIds
41
42
  } = _props,
42
- others = _objectWithoutProperties(_props, ['classes', 'itemList', 'selectedIdList', 'onSelect', 'maxHeight', 'hierarchySelected', 'parentItemSelectable', 'hierarchy', 'translations', 'icon', 'parentIcon', 'hoverIcon', 'checkedIcon', 'allSelected', 'checkbox', 'hierarchic']);
43
+ others = _objectWithoutProperties(_props, ['classes', 'itemList', 'selectedIdList', 'onSelect', 'maxHeight', 'hierarchySelected', 'parentItemSelectable', 'hierarchy', 'translations', 'icon', 'parentIcon', 'hoverIcon', 'checkedIcon', 'allSelected', 'checkbox', 'hierarchic', 'disabledIds']);
43
44
 
44
45
  let parents = [];
45
46
 
@@ -100,7 +101,8 @@ class HiSelectableList extends React.PureComponent {
100
101
  hoverIcon: hoverIcon,
101
102
  checkedIcon: checkedIcon,
102
103
  checkbox: checkbox,
103
- level: parents.length
104
+ level: parents.length,
105
+ disabled: disabledIds ? disabledIds.includes(item.id) : false
104
106
  }, others));
105
107
  })
106
108
  )
@@ -140,6 +142,10 @@ HiSelectableList.propTypes = process.env.NODE_ENV !== "production" ? {
140
142
  * Useful to extend the style applied to components.
141
143
  */
142
144
  classes: PropTypes.object,
145
+ /**
146
+ * Liste des ids des items disabled
147
+ */
148
+ disabledIds: PropTypes.array,
143
149
  /**
144
150
  * Tableau associatif : parentId => [children objects]
145
151
  */
@@ -55,6 +55,9 @@ export const styles = theme => ({
55
55
  marginLeft: theme.spacing.unit
56
56
  }),
57
57
  listItemInfoText: _extends({
58
+ whiteSpace: 'nowrap',
59
+ overflow: 'hidden',
60
+ textOverflow: 'ellipsis',
58
61
  color: theme.palette.neutral.normal
59
62
  }, theme.typography.body4, {
60
63
  fontWeight: theme.typography.fontWeightRegular,
@@ -358,18 +361,38 @@ HiSelectableListItem.defaultProps = {
358
361
  }
359
362
  };
360
363
  HiSelectableListItem.propTypes = process.env.NODE_ENV !== "production" ? {
364
+ /**
365
+ * Affiche une checkbox
366
+ */
367
+ checkbox: PropTypes.bool,
368
+ /**
369
+ * Icon affiché lorsque l'item est sélectionné
370
+ */
371
+ checkedIcon: PropTypes.node,
361
372
  /**
362
373
  * Useful to extend the style applied to components.
363
374
  */
364
375
  classes: PropTypes.object,
365
376
  /**
366
- * État de l'élément
377
+ * Applique le style et désactive le click
367
378
  */
368
- selected: PropTypes.bool,
379
+ disabled: PropTypes.bool,
369
380
  /**
370
- * Type de l'élément
381
+ * Si "true", liste avec hierarchie
371
382
  */
372
- type: PropTypes.string,
383
+ hierarchic: PropTypes.bool,
384
+ /**
385
+ * Icon affiché lorsque l'item n'est pas sélectionné et qu'on le survole
386
+ */
387
+ hoverIcon: PropTypes.node,
388
+ /**
389
+ * Icon affiché lorsque l'item n'est pas sélectionné
390
+ */
391
+ icon: PropTypes.node,
392
+ /**
393
+ * Items sélectionné partiellement
394
+ */
395
+ indeterminate: PropTypes.bool,
373
396
  /**
374
397
  * Élément dont la structure attendue dépend du type
375
398
  * paramètres requis:
@@ -377,65 +400,45 @@ HiSelectableListItem.propTypes = process.env.NODE_ENV !== "production" ? {
377
400
  * - label: string
378
401
  */
379
402
  item: PropTypes.object.isRequired,
403
+ /**
404
+ * Padding par défaut des éléments
405
+ */
406
+ leftPadding: PropTypes.number,
380
407
  /**
381
408
  * Niveau de l'item
382
409
  */
383
410
  level: PropTypes.number,
384
411
  /**
385
- * Affiche l'item en tant qu'item parent d'un groupe
412
+ * Nombre d'items enfants
386
413
  */
387
- parentItem: PropTypes.bool,
414
+ nbChildren: PropTypes.number,
388
415
  /**
389
416
  * Fonction de callback à la sélection de l'élément
390
417
  */
391
418
  onSelect: PropTypes.func,
392
419
  /**
393
- * Applique le style et désactive le click
420
+ * Icon affiché lorsqu'un item parent n'est pas sélectionné
394
421
  */
395
- disabled: PropTypes.bool,
422
+ parentIcon: PropTypes.node,
396
423
  /**
397
- * Items sélectionné partiellement
424
+ * Affiche l'item en tant qu'item parent d'un groupe
398
425
  */
399
- indeterminate: PropTypes.bool,
426
+ parentItem: PropTypes.bool,
400
427
  /**
401
428
  * Les items parents sont sélectionnables
402
429
  */
403
430
  parentItemSelectable: PropTypes.bool,
404
431
  /**
405
- * Nombre d'items enfants
432
+ * État de l'élément
406
433
  */
407
- nbChildren: PropTypes.number,
434
+ selected: PropTypes.bool,
408
435
  /**
409
436
  * Traductions (par défaut en anglais)
410
437
  */
411
438
  translations: PropTypes.object,
412
439
  /**
413
- * Icon affiché lorsque l'item n'est pas sélectionné
414
- */
415
- icon: PropTypes.node,
416
- /**
417
- * Icon affiché lorsqu'un item parent n'est pas sélectionné
418
- */
419
- parentIcon: PropTypes.node,
420
- /**
421
- * Icon affiché lorsque l'item n'est pas sélectionné et qu'on le survole
422
- */
423
- hoverIcon: PropTypes.node,
424
- /**
425
- * Icon affiché lorsque l'item est sélectionné
426
- */
427
- checkedIcon: PropTypes.node,
428
- /**
429
- * Affiche une checkbox
430
- */
431
- checkbox: PropTypes.bool,
432
- /**
433
- * Si "true", liste avec hierarchie
434
- */
435
- hierarchic: PropTypes.bool,
436
- /**
437
- * Padding par défaut des éléments
440
+ * Type de l'élément
438
441
  */
439
- leftPadding: PropTypes.number
442
+ type: PropTypes.string
440
443
  } : {};
441
444
  export default withStyles(styles, { name: 'HmuiHiSelectableList' })(HiSelectableListItem);
@@ -674,7 +674,7 @@ class HiTable extends React.Component {
674
674
  React.createElement(
675
675
  HiButton,
676
676
  {
677
- raised: true,
677
+ variant: 'raised',
678
678
  color: 'primary',
679
679
  className: classes.backToTopButton,
680
680
  onClick: () => this.scrollToTop()
@@ -84,7 +84,7 @@ class HiTableFooterScroll extends React.Component {
84
84
  ) : React.createElement(
85
85
  HiButton,
86
86
  {
87
- raised: true,
87
+ variant: 'raised',
88
88
  color: 'primary',
89
89
  className: classes.loadMoreButton,
90
90
  onClick: () => this.handleRequestNextDatas(true)
@@ -128,7 +128,7 @@ class HiTopBar extends React.Component {
128
128
  menuAnchor: null
129
129
  };
130
130
 
131
- this.toggleCollapse = this.toggleCollapse.bind(this);
131
+ this.handleCollapse = this.handleCollapse.bind(this);
132
132
  this.handleClickMenu = this.handleClickMenu.bind(this);
133
133
  this.handleOpenMenu = this.handleOpenMenu.bind(this);
134
134
  this.handleCloseMenu = this.handleCloseMenu.bind(this);
@@ -148,7 +148,7 @@ class HiTopBar extends React.Component {
148
148
  callback();
149
149
  }
150
150
 
151
- toggleCollapse() {
151
+ handleCollapse() {
152
152
  this.setState({ collapsed: !this.state.collapsed });
153
153
  }
154
154
 
@@ -168,6 +168,7 @@ class HiTopBar extends React.Component {
168
168
  translations,
169
169
  onClickMenu,
170
170
  accountSelectorContent,
171
+ refButtons,
171
172
  searchInput,
172
173
  searchFocus
173
174
  } = this.props;
@@ -204,15 +205,18 @@ class HiTopBar extends React.Component {
204
205
  null,
205
206
  React.createElement(
206
207
  Collapse,
207
- { 'in': !this.state.collapsed, className: classNames({
208
+ {
209
+ 'in': !this.state.collapsed,
210
+ className: classNames({
208
211
  [classes.collapseOverflow]: !hideable
209
- }) },
212
+ })
213
+ },
210
214
  React.createElement(
211
215
  Toolbar,
212
216
  { className: classes.toolbar },
213
217
  React.createElement(
214
218
  'div',
215
- { ref: div => this.overlay = div },
219
+ { ref: refButtons },
216
220
  searchFocus ? React.createElement(
217
221
  HiButton,
218
222
  {
@@ -268,7 +272,7 @@ class HiTopBar extends React.Component {
268
272
  (hideable || hasSettings) && React.createElement(
269
273
  IconButton,
270
274
  { color: 'inherit', className: classes.iconButton },
271
- hideable && React.createElement(ChevronDoubleUp, { onClick: this.toggleCollapse }),
275
+ hideable && React.createElement(ChevronDoubleUp, { onClick: this.handleCollapse }),
272
276
  hasSettings && React.createElement(HiIconBuilder, {
273
277
  onClick: this.props.onClickSettings,
274
278
  icon: 'fa-gear',
@@ -280,7 +284,7 @@ class HiTopBar extends React.Component {
280
284
  hideable && this.state.collapsed && React.createElement(
281
285
  IconButton,
282
286
  {
283
- onClick: this.toggleCollapse,
287
+ onClick: this.handleCollapse,
284
288
  color: 'inherit',
285
289
  className: classes.showTopBarButton
286
290
  },
@@ -296,7 +300,7 @@ class HiTopBar extends React.Component {
296
300
  { className: classes.toolbar },
297
301
  React.createElement(
298
302
  'div',
299
- { ref: div => this.overlay = div },
303
+ { ref: refButtons },
300
304
  searchFocus ? React.createElement(
301
305
  IconButton,
302
306
  { className: classes.leftButtonMobile, color: 'inherit' },
@@ -434,6 +438,10 @@ HiTopBar.propTypes = process.env.NODE_ENV !== "production" ? {
434
438
  * [here](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Positioning).
435
439
  */
436
440
  position: PropTypes.oneOf(['fixed', 'absolute', 'sticky', 'static']),
441
+ /**
442
+ * Passe une ref callback à la div contenant les boutons "menu" et "back"
443
+ */
444
+ refButtons: PropTypes.func,
437
445
  /**
438
446
  * Etat de focus.
439
447
  */