@hipay/hipay-material-ui 1.0.0-beta.23 → 1.0.0-beta.25

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. package/HI-CHANGELOG.md +26 -43
  2. package/HiChip/HiChip.js +61 -8
  3. package/HiDatePicker/HiDateRangePicker.js +27 -13
  4. package/HiDatePicker/HiDateRangeSelector.js +13 -2
  5. package/HiForm/HiInput.js +1 -0
  6. package/HiForm/HiPasswordField.js +2 -2
  7. package/HiPins/HiPins.js +6 -4
  8. package/HiSelect/HiSelect.js +7 -5
  9. package/HiSelect/SelectInput.js +3 -8
  10. package/HiSelectableList/HiSelectableList.js +51 -49
  11. package/HiSelectableList/HiSelectableListItem.js +4 -2
  12. package/HiTable/BodyCellBuilder.js +22 -12
  13. package/HiTable/BodyCells/CellAccount.js +12 -3
  14. package/HiTable/BodyCells/CellAccountNumber.js +12 -3
  15. package/HiTable/BodyCells/CellAddress.js +12 -3
  16. package/HiTable/BodyCells/CellCountry.js +12 -3
  17. package/HiTable/BodyCells/CellDate.js +43 -42
  18. package/HiTable/BodyCells/CellIcon.js +12 -3
  19. package/HiTable/BodyCells/CellImage.js +12 -3
  20. package/HiTable/BodyCells/CellNumeric.js +12 -3
  21. package/HiTable/BodyCells/CellRate.js +12 -3
  22. package/HiTable/BodyCells/CellSentinel.js +17 -7
  23. package/HiTable/BodyCells/CellStatus.js +12 -3
  24. package/HiTable/BodyCells/CellText.js +17 -7
  25. package/HiTable/BodyCells/CellThirdPartySecurity.js +12 -3
  26. package/HiTable/BodyRow.js +12 -3
  27. package/HiTable/ColumnFilter.js +1 -4
  28. package/HiTable/HeaderCell.js +21 -11
  29. package/HiTable/HiStickyRow.js +24 -13
  30. package/HiTable/HiTable.js +30 -69
  31. package/HiTable/HiTableBody.js +99 -29
  32. package/HiTable/HiTableContextMenu.js +31 -16
  33. package/HiTable/HiTableFooter.js +9 -0
  34. package/HiTable/HiTableHead.js +15 -7
  35. package/HiTopBar/HiTopBar.js +6 -0
  36. package/README.md +71 -6
  37. package/es/HiChip/HiChip.js +74 -8
  38. package/es/HiDatePicker/HiDateRangePicker.js +25 -12
  39. package/es/HiDatePicker/HiDateRangeSelector.js +12 -2
  40. package/es/HiForm/HiInput.js +1 -0
  41. package/es/HiForm/HiPasswordField.js +2 -2
  42. package/es/HiPins/HiPins.js +4 -4
  43. package/es/HiSelect/HiSelect.js +6 -5
  44. package/es/HiSelect/SelectInput.js +3 -8
  45. package/es/HiSelectableList/HiSelectableList.js +51 -49
  46. package/es/HiSelectableList/HiSelectableListItem.js +4 -2
  47. package/es/HiTable/BodyCellBuilder.js +8 -2
  48. package/es/HiTable/BodyCells/CellAccount.js +6 -1
  49. package/es/HiTable/BodyCells/CellAccountNumber.js +6 -1
  50. package/es/HiTable/BodyCells/CellAddress.js +6 -1
  51. package/es/HiTable/BodyCells/CellCountry.js +6 -1
  52. package/es/HiTable/BodyCells/CellDate.js +28 -37
  53. package/es/HiTable/BodyCells/CellIcon.js +6 -1
  54. package/es/HiTable/BodyCells/CellImage.js +6 -1
  55. package/es/HiTable/BodyCells/CellNumeric.js +6 -1
  56. package/es/HiTable/BodyCells/CellRate.js +6 -1
  57. package/es/HiTable/BodyCells/CellSentinel.js +6 -1
  58. package/es/HiTable/BodyCells/CellStatus.js +6 -1
  59. package/es/HiTable/BodyCells/CellText.js +6 -1
  60. package/es/HiTable/BodyCells/CellThirdPartySecurity.js +6 -1
  61. package/es/HiTable/BodyRow.js +7 -2
  62. package/es/HiTable/ColumnFilter.js +1 -4
  63. package/es/HiTable/HeaderCell.js +16 -9
  64. package/es/HiTable/HiStickyRow.js +20 -13
  65. package/es/HiTable/HiTable.js +4 -40
  66. package/es/HiTable/HiTableBody.js +78 -26
  67. package/es/HiTable/HiTableContextMenu.js +28 -16
  68. package/es/HiTable/HiTableFooter.js +5 -0
  69. package/es/HiTable/HiTableHead.js +11 -6
  70. package/es/HiTopBar/HiTopBar.js +5 -0
  71. package/es/utils/HiIconBuilder.js +6 -2
  72. package/index.es.js +1 -1
  73. package/index.js +1 -1
  74. package/package.json +6 -1
  75. package/umd/hipay-material-ui.development.js +80901 -47149
  76. package/umd/hipay-material-ui.production.min.js +5 -5
  77. package/utils/HiIconBuilder.js +6 -2
@@ -27,14 +27,24 @@ export const styles = theme => ({
27
27
  },
28
28
  '&$deletable': {
29
29
  paddingRight: 4
30
+ },
31
+ '&$leftIccon': {
32
+ paddingLeft: 4
30
33
  }
31
34
  }),
32
35
  leftNavigation: {},
33
36
  rightNavigation: {},
34
37
  deletable: {},
38
+ leftIccon: {},
35
39
  icon: {
36
40
  marginRight: 4
37
41
  },
42
+ iconClickable: {
43
+ cursor: 'pointer',
44
+ '&:hover, &:focus': {
45
+ color: theme.palette.business.primary.normal
46
+ }
47
+ },
38
48
  eraseIcon: {
39
49
  // Remove grey highlight
40
50
  WebkitTapHighlightColor: 'transparent',
@@ -78,7 +88,23 @@ export const styles = theme => ({
78
88
  });
79
89
 
80
90
  function HiChip(props) {
81
- const { label, classes, icon, id, img, onPrevious, onNext, onDelete, prefix } = props;
91
+ const {
92
+ label,
93
+ classes,
94
+ icon,
95
+ id,
96
+ img,
97
+ onPrevious,
98
+ onNext,
99
+ onDelete,
100
+ prefix,
101
+ onIconClick,
102
+ titleDelete,
103
+ titleIcon,
104
+ titleImg,
105
+ titleNext,
106
+ titlePrevious
107
+ } = props;
82
108
 
83
109
  return React.createElement(
84
110
  'div',
@@ -87,7 +113,8 @@ function HiChip(props) {
87
113
  className: classNames(classes.root, {
88
114
  [classes.leftNavigation]: onPrevious,
89
115
  [classes.rightNavigation]: onNext,
90
- [classes.deletable]: onDelete
116
+ [classes.deletable]: onDelete,
117
+ [classes.leftIccon]: icon
91
118
  })
92
119
  },
93
120
  prefix && React.createElement(
@@ -96,13 +123,22 @@ function HiChip(props) {
96
123
  prefix,
97
124
  ' : '
98
125
  ),
99
- img && React.createElement('img', { className: classes.badge, src: img, alt: img }),
100
- icon && React.createElement(HiIconBuilder, { className: classes.icon, icon: icon, size: 16 }),
126
+ img && React.createElement('img', { className: classes.badge, src: img, alt: img, title: titleImg }),
127
+ icon && React.createElement(HiIconBuilder, {
128
+ className: classNames(classes.icon, {
129
+ [classes.iconClickable]: onIconClick
130
+ }),
131
+ icon: icon,
132
+ size: 16,
133
+ onClick: onIconClick,
134
+ titleAccess: titleIcon
135
+ }),
101
136
  onPrevious && React.createElement(HiIconBuilder, {
102
137
  className: classNames(classes.navigate),
103
138
  icon: 'menuLeft',
104
139
  onClick: onPrevious,
105
- size: 16
140
+ size: 16,
141
+ titleAccess: titlePrevious
106
142
  }),
107
143
  React.createElement(
108
144
  'span',
@@ -113,13 +149,15 @@ function HiChip(props) {
113
149
  className: classNames(classes.navigate),
114
150
  icon: 'menuRight',
115
151
  onClick: onNext,
116
- size: 16
152
+ size: 16,
153
+ titleAccess: titleNext
117
154
  }),
118
155
  onDelete && React.createElement(HiIconBuilder, {
119
156
  classes: { root: classes.eraseIcon },
120
157
  icon: 'closeCircle',
121
158
  onClick: onDelete,
122
- size: 16
159
+ size: 16,
160
+ titleAccess: titleDelete
123
161
  })
124
162
  );
125
163
  }
@@ -149,6 +187,10 @@ HiChip.propTypes = process.env.NODE_ENV !== "production" ? {
149
187
  * Fonction de callback au clic sur l'icon close si cancelable = true
150
188
  */
151
189
  onDelete: PropTypes.func,
190
+ /**
191
+ * Fonction de callback au clic sur l'icon à gauche
192
+ */
193
+ onIconClick: PropTypes.func,
152
194
  /**
153
195
  * Fonction de callback au clic sur l'icon next
154
196
  */
@@ -156,7 +198,31 @@ HiChip.propTypes = process.env.NODE_ENV !== "production" ? {
156
198
  /**
157
199
  * Fonction de callback au clic sur l'icon previous
158
200
  */
159
- onPrevious: PropTypes.func
201
+ onPrevious: PropTypes.func,
202
+ /**
203
+ * Préfixe dans le HiChip
204
+ */
205
+ prefix: PropTypes.string,
206
+ /**
207
+ * Titre de l'icône supprimer
208
+ */
209
+ titleDelete: PropTypes.string,
210
+ /**
211
+ * Titre de l'icône
212
+ */
213
+ titleIcon: PropTypes.string,
214
+ /**
215
+ * Titre de la balise img
216
+ */
217
+ titleImg: PropTypes.string,
218
+ /**
219
+ * Titre de la navigation suivante
220
+ */
221
+ titleNext: PropTypes.string,
222
+ /**
223
+ * Titre de la navigation précédente
224
+ */
225
+ titlePrevious: PropTypes.string
160
226
  } : {};
161
227
 
162
228
  export default withStyles(styles, { name: 'HmuiHiChip' })(HiChip);
@@ -27,6 +27,7 @@ class HiDateRangePicker extends React.Component {
27
27
  super();
28
28
 
29
29
  this.handleInputChange = inputName => event => {
30
+ this.event = event;
30
31
  this.props.onChange(inputName, event.target.value);
31
32
  };
32
33
 
@@ -34,6 +35,13 @@ class HiDateRangePicker extends React.Component {
34
35
  this.setState({ focusedInput: name });
35
36
  };
36
37
 
38
+ this.handleDayPickerBlur = name => () => {
39
+ this.setState({ focusedInput: '' });
40
+ if (this.props.onBlur) {
41
+ this.props.onBlur(name);
42
+ }
43
+ };
44
+
37
45
  this.state = {
38
46
  fromCurrentMonth: props.from ? props.from : new Date(),
39
47
  toCurrentMonth: props.to ? props.to : new Date(),
@@ -100,11 +108,7 @@ class HiDateRangePicker extends React.Component {
100
108
  }
101
109
 
102
110
  handleReset(name) {
103
- if (name === 'from') {
104
- this.handleCurrentMonthChange(name, new Date());
105
- } else {
106
- this.handleCurrentMonthChange(name, this.props.from);
107
- }
111
+ this.handleCurrentMonthChange(name, new Date());
108
112
 
109
113
  this.timeout = setTimeout(() => {
110
114
  if (this.props.onReset) {
@@ -122,7 +126,12 @@ class HiDateRangePicker extends React.Component {
122
126
  if (name === 'from' && this.toInput) {
123
127
  this.toInput.getInput().focus();
124
128
  } else if (name === 'to') {
125
- document.activeElement.blur();
129
+ if (typeof this.event === 'undefined' || this.event && this.event.type !== 'change') {
130
+ // trigger blur only if user clicks on date into calendar
131
+ // else keep focus to see day selection into calendar
132
+ document.activeElement.blur();
133
+ }
134
+ delete this.event;
126
135
  }
127
136
  }
128
137
  } else {
@@ -222,10 +231,6 @@ class HiDateRangePicker extends React.Component {
222
231
  }
223
232
  }
224
233
 
225
- handleDayPickerBlur() {
226
- this.setState({ focusedInput: '' });
227
- }
228
-
229
234
  openPanel(name, panel) {
230
235
  this.setState({
231
236
  [`${name}OpenedPanel`]: panel
@@ -479,7 +484,7 @@ class HiDateRangePicker extends React.Component {
479
484
  {
480
485
  className: classes.fromInput,
481
486
  onFocus: this.handleDayPickerFocus('from'),
482
- onBlur: this.handleDayPickerBlur
487
+ onBlur: this.handleDayPickerBlur('from')
483
488
  },
484
489
  React.createElement(
485
490
  'div',
@@ -507,7 +512,7 @@ class HiDateRangePicker extends React.Component {
507
512
  {
508
513
  className: toClass,
509
514
  onFocus: this.handleDayPickerFocus('to'),
510
- onBlur: this.handleDayPickerBlur
515
+ onBlur: this.handleDayPickerBlur('to')
511
516
  },
512
517
  React.createElement(DayPickerInput, {
513
518
  ref: el => {
@@ -604,10 +609,18 @@ HiDateRangePicker.propTypes = process.env.NODE_ENV !== "production" ? {
604
609
  minimumDate: PropTypes.instanceOf(Date),
605
610
  /**
606
611
  * Callback à la sélection d'une date
612
+ * @param {string} nom de l'input
613
+ */
614
+ onBlur: PropTypes.func,
615
+ /**
616
+ * Callback à la sélection d'une date
617
+ * @param {string} nom du champs
618
+ * @param {string} nouvelle valeur du champs
607
619
  */
608
620
  onChange: PropTypes.func,
609
621
  /**
610
622
  * Callback au reset de l'input
623
+ * @param {string} nom du champs réinitialisé
611
624
  */
612
625
  onReset: PropTypes.func,
613
626
  /**
@@ -42,13 +42,13 @@ export function buildDateRangeOptionByKey(key, t, format) {
42
42
  label = t.current_week;
43
43
  from = moment().startOf('week');
44
44
  to = moment();
45
- info = `${t.week} ${from.format('w')}, \n ${from.format(format)} ${t.to_now}`;
45
+ info = `${t.short_week}${from.format('w')}, \n ${from.format(format)} ${t.to_now}`;
46
46
  break;
47
47
  case 'pw':
48
48
  label = t.previous_week;
49
49
  from = moment().subtract(1, 'week').startOf('week');
50
50
  to = moment().subtract(1, 'week').endOf('week');
51
- info = `${t.week} ${from.format('w')}, ${from.format(format)} ${t.to} ${to.format(format)}`;
51
+ info = `${t.short_week}${from.format('w')}, ${from.format(format)} ${t.to} ${to.format(format)}`;
52
52
  break;
53
53
  case 'cm':
54
54
  label = t.current_month;
@@ -146,6 +146,15 @@ class HiDateRangeSelector extends React.Component {
146
146
  this.options = props.availableOptionKeys.map(key => buildDateRangeOptionByKey(key, props.translations, props.format));
147
147
  }
148
148
 
149
+ static getDerivedStateFromProps(props, state) {
150
+ if (props.defaultPreset && props.returnSelectValue) {
151
+ return {
152
+ selectedPreset: props.defaultPreset
153
+ };
154
+ }
155
+ return null;
156
+ }
157
+
149
158
  componentDidMount() {
150
159
  if (this.container) {
151
160
  this.setState({ containerWidth: findDOMNode(this.container).clientWidth });
@@ -250,6 +259,7 @@ HiDateRangeSelector.defaultProps = {
250
259
  month: 'Month',
251
260
  quarter: 'Quarter',
252
261
  week: 'Week',
262
+ short_week: 'W',
253
263
  year: 'Year',
254
264
  days: 'days',
255
265
  custom_period: 'Custom Period',
@@ -153,6 +153,7 @@ class HiInput extends React.PureComponent {
153
153
  if (this.props.onReset) {
154
154
  this.props.onReset();
155
155
  }
156
+ this.inputElement.focus();
156
157
  }
157
158
 
158
159
  handleBlur(event) {
@@ -11,9 +11,9 @@ import HiTextField from './HiTextField';
11
11
  export const styles = theme => ({
12
12
  inputPassword: {
13
13
  fontWeight: 'bolder',
14
- fontFamily: 'Verdana, sans-serif',
14
+ fontFamily: 'inherit',
15
15
  letterSpacing: '4px',
16
- fontSize: 25
16
+ fontSize: '1.6rem'
17
17
  }
18
18
  });
19
19
 
@@ -10,7 +10,7 @@ export const styles = theme => ({
10
10
  display: 'inline-block',
11
11
  padding: '0 9px',
12
12
  height: 16,
13
- lineHeight: '16px',
13
+ lineHeight: '18px',
14
14
  minWidth: 25,
15
15
  textAlign: 'center',
16
16
  borderRadius: '45px',
@@ -33,9 +33,9 @@ export const styles = theme => ({
33
33
  *
34
34
  */
35
35
  function HiPins(props) {
36
- const { classes, children, color, onClick, className } = props;
36
+ const { classes, theme, children, color = props.theme.palette.business.primary.normal, onClick, className } = props;
37
37
 
38
- const textColor = getContrastedTextColor(color, props.theme.palette.neutral.dark, '#FFF');
38
+ const textColor = getContrastedTextColor(color, theme.palette.neutral.dark, '#FFF');
39
39
 
40
40
  const divProps = {
41
41
  style: { backgroundColor: color, color: textColor }
@@ -59,7 +59,7 @@ HiPins.propTypes = process.env.NODE_ENV !== "production" ? {
59
59
  children: PropTypes.node.isRequired,
60
60
  classes: PropTypes.object.isRequired,
61
61
  className: PropTypes.string,
62
- color: PropTypes.string.isRequired,
62
+ color: PropTypes.string,
63
63
  onClick: PropTypes.func
64
64
  } : {};
65
65
  export default withStyles(styles, { withTheme: true, name: 'HmuiHiPins' })(HiPins);
@@ -223,10 +223,11 @@ class HiSelect extends React.PureComponent {
223
223
  id,
224
224
  placeholder,
225
225
  staticPosition,
226
- pinnedItem
226
+ pinnedItem,
227
+ hasAll
227
228
  } = this.props;
228
229
 
229
- const { open, suggestions, focused } = this.state;
230
+ const { open, suggestions, focused, dynamic } = this.state;
230
231
 
231
232
  let display = '';
232
233
  const selectedIdList = Array.isArray(value) ? value : value ? [value] : [];
@@ -249,11 +250,11 @@ class HiSelect extends React.PureComponent {
249
250
  });
250
251
  }
251
252
 
252
- if (this.state.dynamic && selectedIdList.length === 1) {
253
+ if ((dynamic || loading) && selectedIdList.length === 1) {
253
254
  display = translations.one_item_selected.replace('%s', selectedIdList.length);
254
- } else if (this.state.nbOptions !== selectedIdList.length && selectedIdList.length > 1) {
255
+ } else if ((this.state.nbOptions !== selectedIdList.length || !hasAll) && selectedIdList.length > 1) {
255
256
  display = translations.n_items_selected.replace('%s', selectedIdList.length);
256
- } else if (this.state.nbOptions === selectedIdList.length && this.state.nbOptions >= 1) {
257
+ } else if (this.state.nbOptions === selectedIdList.length && this.state.nbOptions > 1) {
257
258
  display = translations.all;
258
259
  } else if (selectedIdList.length === 1) {
259
260
  if (type !== 'icon') {
@@ -14,7 +14,8 @@ export const styles = theme => ({
14
14
  width: '100%',
15
15
  height: 40,
16
16
  maxWidth: 500,
17
- justifyContent: 'flex-start',
17
+ display: 'flex',
18
+ justifyContent: 'center',
18
19
  padding: 8,
19
20
  cursor: 'pointer'
20
21
  },
@@ -89,18 +90,12 @@ export const styles = theme => ({
89
90
  label: _extends({
90
91
  whiteSpace: 'nowrap',
91
92
  overflow: 'hidden',
92
- textOverflow: 'ellipsis',
93
- paddingRight: 16
93
+ textOverflow: 'ellipsis'
94
94
  }, theme.typography.body1, {
95
95
  display: 'inline-flex',
96
96
  width: '100%'
97
97
  }),
98
98
  icon: {
99
- position: 'absolute',
100
- display: 'flex',
101
- alignItems: 'center',
102
- right: 0,
103
- height: 40,
104
99
  transition: theme.transitions.create(['opacity', 'transform'], {
105
100
  duration: theme.transitions.duration.shorter
106
101
  })
@@ -51,59 +51,61 @@ class HiSelectableList extends React.PureComponent {
51
51
  List,
52
52
  { className: classes.root, onKeyDown: this.props.onKeyDown },
53
53
  itemList.map(item => {
54
- /**
55
- * Calcul du level de l'item
56
- */
57
- if (hierarchic) {
58
- // On stocke l'id des parents dans un tableau
59
- if (item.parentId && !parents.includes(item.parentId)) {
60
- parents.push(item.parentId);
61
- } else if (item.parentId && parents.includes(item.parentId)) {
62
- // Si l'item n'a pas de parentId ou qu'on l'a déjà stocké :
63
- // Et si le parentId n'est pas le dernier inseré
64
- if (item.parentId !== parents[parents.length - 1]) {
65
- // On est donc redescendu d'un niveau
66
- // donc on supprime le dernier parent
67
- parents.pop();
54
+ if (item.displayed !== false) {
55
+ /**
56
+ * Calcul du level de l'item
57
+ */
58
+ if (hierarchic) {
59
+ // On stocke l'id des parents dans un tableau
60
+ if (item.parentId && !parents.includes(item.parentId)) {
61
+ parents.push(item.parentId);
62
+ } else if (item.parentId && parents.includes(item.parentId)) {
63
+ // Si l'item n'a pas de parentId ou qu'on l'a déjà stocké :
64
+ // Et si le parentId n'est pas le dernier inseré
65
+ if (item.parentId !== parents[parents.length - 1]) {
66
+ // On est donc redescendu d'un niveau
67
+ // donc on supprime le dernier parent
68
+ parents.pop();
69
+ }
70
+ } else if (!item.parentId && parents.length > 0) {
71
+ // Si l'item n'a pas de parent et que le tableau des parent
72
+ // n'est pas vide => on le réinitialise
73
+ parents = [];
68
74
  }
69
- } else if (!item.parentId && parents.length > 0) {
70
- // Si l'item n'a pas de parent et que le tableau des parent
71
- // n'est pas vide => on le réinitialise
72
- parents = [];
73
75
  }
74
- }
75
76
 
76
- /**
77
- * L'élément est-il selectionné ?
78
- */
79
- let selected = false;
80
- if (item.id === '_all') {
81
- selected = allSelected;
82
- } else if (!item.hasChildren) {
83
- selected = selectedIdList.includes(item.id);
84
- } else if (hierarchic && parentItemSelectable) {
85
- selected = hierarchySelected[item.id].length === hierarchy[item.id].length;
86
- }
77
+ /**
78
+ * L'élément est-il selectionné ?
79
+ */
80
+ let selected = false;
81
+ if (item.id === '_all') {
82
+ selected = allSelected;
83
+ } else if (!item.hasChildren) {
84
+ selected = selectedIdList.includes(item.id);
85
+ } else if (hierarchic && parentItemSelectable) {
86
+ selected = hierarchySelected[item.id].length === hierarchy[item.id].length;
87
+ }
87
88
 
88
- return React.createElement(HiSelectableListItem, _extends({
89
- key: item.id,
90
- item: item,
91
- selected: selected,
92
- indeterminate: item.hasChildren && parentItemSelectable ? hierarchySelected[item.id].length > 0 && hierarchySelected[item.id].length !== hierarchy[item.id].length : false,
93
- onSelect: onSelect,
94
- hierarchySelected: hierarchySelected,
95
- parentItemSelectable: parentItemSelectable,
96
- nbChildren: typeof hierarchy !== 'undefined' && typeof hierarchy[item.id] !== 'undefined' ? hierarchy[item.id].length : 0,
97
- hierarchic: hierarchic,
98
- translations: translations,
99
- icon: icon,
100
- parentIcon: parentIcon,
101
- hoverIcon: hoverIcon,
102
- checkedIcon: checkedIcon,
103
- checkbox: checkbox,
104
- level: parents.length,
105
- disabled: disabledIds ? disabledIds.includes(item.id) : false
106
- }, others));
89
+ return React.createElement(HiSelectableListItem, _extends({
90
+ key: item.id,
91
+ item: item,
92
+ selected: selected,
93
+ indeterminate: item.hasChildren && parentItemSelectable ? hierarchySelected[item.id].length > 0 && hierarchySelected[item.id].length !== hierarchy[item.id].length : false,
94
+ onSelect: onSelect,
95
+ hierarchySelected: hierarchySelected,
96
+ parentItemSelectable: parentItemSelectable,
97
+ nbChildren: typeof hierarchy !== 'undefined' && typeof hierarchy[item.id] !== 'undefined' ? hierarchy[item.id].length : 0,
98
+ hierarchic: hierarchic,
99
+ translations: translations,
100
+ icon: icon,
101
+ parentIcon: parentIcon,
102
+ hoverIcon: hoverIcon,
103
+ checkedIcon: checkedIcon,
104
+ checkbox: checkbox,
105
+ level: parents.length,
106
+ disabled: disabledIds ? disabledIds.includes(item.id) : false
107
+ }, others));
108
+ }
107
109
  })
108
110
  )
109
111
  );
@@ -14,9 +14,11 @@ import HiLoader from '../HiLoader';
14
14
 
15
15
  export const styles = theme => ({
16
16
  listItem: {
17
- padding: `${9}px 0px`,
17
+ padding: '9px 0px',
18
18
  fontWeight: theme.typography.fontWeightRegular,
19
- maxHeight: 40
19
+ maxHeight: 40,
20
+ display: 'flex',
21
+ alignItems: 'flex-start'
20
22
  },
21
23
  listItemTitle: {
22
24
  padding: `${9}px 0px`,
@@ -1,5 +1,6 @@
1
1
  import _extends from 'babel-runtime/helpers/extends';
2
2
  import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';
3
+ import _JSON$stringify from 'babel-runtime/core-js/json/stringify';
3
4
  import React from 'react';
4
5
  import PropTypes from 'prop-types';
5
6
  import { ContextMenuTrigger } from 'react-contextmenu';
@@ -11,7 +12,7 @@ import { formatRate } from '../utils/hiHelpers';
11
12
  /**
12
13
  * Construit la cellule correspondante au type demandé
13
14
  */
14
- export default class BodyCellBuilder extends React.PureComponent {
15
+ export default class BodyCellBuilder extends React.Component {
15
16
 
16
17
  constructor(props) {
17
18
  super(props);
@@ -19,6 +20,10 @@ export default class BodyCellBuilder extends React.PureComponent {
19
20
  this.collectContextMenuDatas = this.collectContextMenuDatas.bind(this);
20
21
  }
21
22
 
23
+ shouldComponentUpdate(nextProps, nextState) {
24
+ return _JSON$stringify(this.props) !== _JSON$stringify(nextProps) || _JSON$stringify(this.state) !== _JSON$stringify(nextState);
25
+ }
26
+
22
27
  /**
23
28
  * CollecContextMenuDatas
24
29
  *
@@ -151,7 +156,8 @@ export default class BodyCellBuilder extends React.PureComponent {
151
156
  locale: dateLocale,
152
157
  view: view,
153
158
  displayTime: props.displayTime,
154
- sticky: sticky
159
+ sticky: sticky,
160
+ formatShort: this.props.formatShort
155
161
  });
156
162
  break;
157
163
 
@@ -1,3 +1,4 @@
1
+ import _JSON$stringify from 'babel-runtime/core-js/json/stringify';
1
2
  import React from 'react';
2
3
  import PropTypes from 'prop-types';
3
4
  import Tooltip from '../../Tooltip';
@@ -9,7 +10,11 @@ export const styles = theme => ({});
9
10
  /**
10
11
  * Cette cellule permet d'afficher le nom d'un compte sous la forme d'un label coloré.
11
12
  */
12
- class CellAccount extends React.PureComponent {
13
+ class CellAccount extends React.Component {
14
+
15
+ shouldComponentUpdate(nextProps, nextState) {
16
+ return _JSON$stringify(this.props) !== _JSON$stringify(nextProps) || _JSON$stringify(this.state) !== _JSON$stringify(nextState);
17
+ }
13
18
 
14
19
  render() {
15
20
  const { value, color } = this.props;
@@ -1,3 +1,4 @@
1
+ import _JSON$stringify from 'babel-runtime/core-js/json/stringify';
1
2
  import React from 'react';
2
3
  import PropTypes from 'prop-types';
3
4
  import { Circle } from 'mdi-material-ui';
@@ -44,7 +45,11 @@ export const styles = theme => ({
44
45
  * Cette cellule permet d'afficher un numéro de compte
45
46
  * Le tooltip affiche les informations complémentaires (country, expiration date..)
46
47
  */
47
- class CellAccountNumber extends React.PureComponent {
48
+ class CellAccountNumber extends React.Component {
49
+
50
+ shouldComponentUpdate(nextProps, nextState) {
51
+ return _JSON$stringify(this.props) !== _JSON$stringify(nextProps) || _JSON$stringify(this.state) !== _JSON$stringify(nextState);
52
+ }
48
53
 
49
54
  render() {
50
55
  const {
@@ -1,3 +1,4 @@
1
+ import _JSON$stringify from 'babel-runtime/core-js/json/stringify';
1
2
  // @inheritedComponent CellLayout
2
3
 
3
4
  import React from 'react';
@@ -23,7 +24,11 @@ export const styles = theme => ({
23
24
  * - sinon on affiche la ville et le pays
24
25
  * - tous les champs définis sont affichés dans le tooltip
25
26
  */
26
- class CellAddress extends React.PureComponent {
27
+ class CellAddress extends React.Component {
28
+
29
+ shouldComponentUpdate(nextProps, nextState) {
30
+ return _JSON$stringify(this.props) !== _JSON$stringify(nextProps) || _JSON$stringify(this.state) !== _JSON$stringify(nextState);
31
+ }
27
32
 
28
33
  render() {
29
34
  const { classes, streetAddress, name, city, postalCode, view, country, isoCountry } = this.props;
@@ -1,3 +1,4 @@
1
+ import _JSON$stringify from 'babel-runtime/core-js/json/stringify';
1
2
  import React from 'react';
2
3
  import PropTypes from 'prop-types';
3
4
 
@@ -44,7 +45,11 @@ export const styles = theme => ({
44
45
  * en vue small : Affiche la valeur courte (id), tooltip = Image + Value
45
46
  *
46
47
  */
47
- class CellCountry extends React.PureComponent {
48
+ class CellCountry extends React.Component {
49
+
50
+ shouldComponentUpdate(nextProps, nextState) {
51
+ return _JSON$stringify(this.props) !== _JSON$stringify(nextProps) || _JSON$stringify(this.state) !== _JSON$stringify(nextState);
52
+ }
48
53
 
49
54
  render() {
50
55
  const { label, path, value, view } = this.props;