@hipay/hipay-material-ui 1.0.0-beta.7 → 1.0.0-beta.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. package/HiBreadcrumb/HiBreadcrumb.js +143 -0
  2. package/HiBreadcrumb/HiStep.js +123 -0
  3. package/HiBreadcrumb/HiStepConnector.js +142 -0
  4. package/HiBreadcrumb/HiStepIcon.js +134 -0
  5. package/HiBreadcrumb/HiStepLabel.js +182 -0
  6. package/HiBreadcrumb/HiStepper.js +125 -0
  7. package/HiBreadcrumb/index.js +16 -0
  8. package/HiDatePicker/HiDateRangeSelector.js +1 -1
  9. package/HiDotsStepper/HiDot.js +151 -0
  10. package/HiDotsStepper/HiDotsStepper.js +146 -0
  11. package/HiDotsStepper/index.js +16 -0
  12. package/HiForm/HiAddressField.js +204 -0
  13. package/HiForm/HiFormControl.js +19 -27
  14. package/HiForm/HiInput.js +1 -1
  15. package/HiForm/HiSearchField.js +1 -1
  16. package/HiForm/index.js +9 -0
  17. package/HiPdfReader/HiPdfReader.js +282 -0
  18. package/HiPdfReader/index.js +16 -0
  19. package/HiPins/HiPins.js +0 -1
  20. package/HiSelect/HiSuggestSelect.js +2 -0
  21. package/HiSelectableList/HiSelectableListItem.js +23 -11
  22. package/HiTable/BodyCellBuilder.js +7 -8
  23. package/HiTable/BodyCells/CellLayout.js +25 -19
  24. package/HiTable/BodyCells/CellSentinel.js +12 -4
  25. package/HiTable/BodyCells/CellStatus.js +5 -1
  26. package/HiTable/BodyCells/CellText.js +2 -1
  27. package/HiTable/BodyRow.js +7 -1
  28. package/HiTable/ColumnFilter.js +5 -1
  29. package/HiTable/HeaderCell.js +17 -14
  30. package/HiTable/HiTable.js +25 -9
  31. package/HiTable/HiTableBody.js +38 -14
  32. package/HiTable/HiTableHead.js +22 -5
  33. package/HiTable/OrderColumns.js +6 -2
  34. package/es/HiBreadcrumb/HiBreadcrumb.js +73 -0
  35. package/es/HiBreadcrumb/HiStep.js +93 -0
  36. package/es/HiBreadcrumb/HiStepConnector.js +83 -0
  37. package/es/HiBreadcrumb/HiStepIcon.js +81 -0
  38. package/es/HiBreadcrumb/HiStepLabel.js +154 -0
  39. package/es/HiBreadcrumb/HiStepper.js +62 -0
  40. package/es/HiBreadcrumb/index.js +1 -0
  41. package/es/HiDatePicker/HiDateRangeSelector.js +1 -1
  42. package/es/HiDotsStepper/HiDot.js +92 -0
  43. package/es/HiDotsStepper/HiDotsStepper.js +83 -0
  44. package/es/HiDotsStepper/index.js +1 -0
  45. package/es/HiForm/HiAddressField.js +142 -0
  46. package/es/HiForm/HiFormControl.js +15 -15
  47. package/es/HiForm/HiInput.js +1 -1
  48. package/es/HiForm/HiSearchField.js +1 -1
  49. package/es/HiForm/index.js +2 -1
  50. package/es/HiPdfReader/HiPdfReader.js +198 -0
  51. package/es/HiPdfReader/index.js +1 -0
  52. package/es/HiPins/HiPins.js +0 -1
  53. package/es/HiSelect/HiSuggestSelect.js +2 -0
  54. package/es/HiSelectableList/HiSelectableListItem.js +22 -11
  55. package/es/HiTable/BodyCellBuilder.js +8 -9
  56. package/es/HiTable/BodyCells/CellLayout.js +27 -21
  57. package/es/HiTable/BodyCells/CellSentinel.js +12 -4
  58. package/es/HiTable/BodyCells/CellStatus.js +5 -1
  59. package/es/HiTable/BodyCells/CellText.js +2 -1
  60. package/es/HiTable/BodyRow.js +7 -1
  61. package/es/HiTable/ColumnFilter.js +5 -1
  62. package/es/HiTable/HeaderCell.js +17 -14
  63. package/es/HiTable/HiTable.js +25 -9
  64. package/es/HiTable/HiTableBody.js +34 -11
  65. package/es/HiTable/HiTableHead.js +17 -5
  66. package/es/HiTable/OrderColumns.js +6 -2
  67. package/es/styles/createHiMuiTheme.js +7 -0
  68. package/index.es.js +1 -1
  69. package/index.js +1 -1
  70. package/package.json +2 -1
  71. package/styles/createHiMuiTheme.js +7 -0
  72. package/umd/hipay-material-ui.development.js +2965 -2659
  73. package/umd/hipay-material-ui.production.min.js +4 -4
@@ -79,7 +79,6 @@ export default class BodyCellBuilder extends React.PureComponent {
79
79
  datas,
80
80
  view,
81
81
  width,
82
- fixedWidth,
83
82
  padding,
84
83
  align,
85
84
  dense,
@@ -92,15 +91,15 @@ export default class BodyCellBuilder extends React.PureComponent {
92
91
  numberLocale,
93
92
  childrenCount,
94
93
  onOpenDetails,
95
- lookedUp
94
+ lookedUp,
95
+ fixedColumnWidth
96
96
  } = _props,
97
- props = _objectWithoutProperties(_props, ['ukey', 'type', 'datas', 'view', 'width', 'fixedWidth', 'padding', 'align', 'dense', 'ellipsis', 'onSelect', 'selectable', 'selected', 'sticky', 'dateLocale', 'numberLocale', 'childrenCount', 'onOpenDetails', 'lookedUp']);
97
+ props = _objectWithoutProperties(_props, ['ukey', 'type', 'datas', 'view', 'width', 'padding', 'align', 'dense', 'ellipsis', 'onSelect', 'selectable', 'selected', 'sticky', 'dateLocale', 'numberLocale', 'childrenCount', 'onOpenDetails', 'lookedUp', 'fixedColumnWidth']);
98
98
 
99
99
  const layoutProps = {
100
100
  type,
101
101
  view,
102
102
  width,
103
- fixedWidth,
104
103
  align,
105
104
  dense,
106
105
  onSelect,
@@ -109,7 +108,8 @@ export default class BodyCellBuilder extends React.PureComponent {
109
108
  selected,
110
109
  sticky,
111
110
  childrenCount,
112
- lookedUp
111
+ lookedUp,
112
+ fixedColumnWidth
113
113
  };
114
114
 
115
115
  let cellElement;
@@ -165,7 +165,6 @@ export default class BodyCellBuilder extends React.PureComponent {
165
165
  break;
166
166
 
167
167
  case cst.TYPE_ICON:
168
- if (view === cst.VIEWS.SMALL) layoutProps.fixedWidth = true;
169
168
  cellElement = React.createElement(CellIcon, {
170
169
  value: datas.value,
171
170
  icon: datas.icon,
@@ -228,7 +227,6 @@ export default class BodyCellBuilder extends React.PureComponent {
228
227
 
229
228
  case cst.TYPE_THIRD_PARTY_SECURITY:
230
229
  layoutProps.align = 'center';
231
- layoutProps.fixedWidth = true;
232
230
  cellElement = React.createElement(CellThirdPartySecurity, {
233
231
  value: datas.value,
234
232
  code: datas.code,
@@ -298,9 +296,10 @@ BodyCellBuilder.propTypes = process.env.NODE_ENV !== "production" ? {
298
296
  */
299
297
  ellipsis: PropTypes.oneOf(['left', 'right', 'middle', 'name', 'after-first-word']),
300
298
  /**
301
- * La largeur de la cellule est fixé (toutes les colonnes sauf une)
299
+ * Fixe la taille des colonnes selon le type de vue
300
+ * Sinon les colonnes s'adaptent à l'espace disponible
302
301
  */
303
- fixedWidth: PropTypes.bool,
302
+ fixedColumnWidth: PropTypes.bool,
304
303
  /**
305
304
  * Recherche lookup sur cette colonne
306
305
  */
@@ -28,6 +28,10 @@ export const styles = theme => ({
28
28
  lookedUp: {
29
29
  background: `linear-gradient(0deg, transparent 25%, #FFFF8D 10%, #FFFF8D 75%, transparent 30%)`,
30
30
  borderRadius: '45%'
31
+ },
32
+ pins: {
33
+ position: 'relative',
34
+ top: 3
31
35
  }
32
36
  });
33
37
 
@@ -57,34 +61,35 @@ class CellLayout extends React.Component {
57
61
  const {
58
62
  classes, type, children,
59
63
  align = cst.ALIGN_RIGHT_TYPES.includes(type) ? 'right' : 'left',
60
- view, dense, width = cst.DEFAULT_WIDTHS[type][view], fixedWidth, sticky,
64
+ view, dense, width = cst.DEFAULT_WIDTHS[type][view], fixedColumnWidth, sticky,
61
65
  selectable, selected, onSelect, childrenCount, theme, padding,
62
66
  lookedUp
63
67
  } = this.props;
64
68
 
65
- let offset = selectable ? dense ? 32 : 40 : 0;
69
+ const offset = selectable ? dense ? 32 : 40 : 0;
66
70
 
67
71
  // Inclus le padding et/ou la checkbox dans la largeur de la cellule
68
- let _width = width + offset + (selectable ? padding : 2 * padding);
72
+ const _width = width + offset + (selectable ? padding : 2 * padding);
69
73
 
70
74
  const lookedUpClassName = classNames(classes.flexContent, { [classes.lookedUp]: lookedUp });
71
75
 
76
+ const cellStyle = {
77
+ zIndex: sticky ? 12 : 11,
78
+ textAlign: align,
79
+ position: sticky ? 'relative' : 'inherit',
80
+ border: 'none',
81
+ height: dense ? cst.CELL_HEIGHT_DENSE : cst.CELL_HEIGHT
82
+ };
83
+
84
+ if (fixedColumnWidth) {
85
+ cellStyle.maxWidth = _width;
86
+ cellStyle.minWidth = _width;
87
+ cellStyle.width = _width;
88
+ }
89
+
72
90
  return React.createElement(
73
91
  TableCell,
74
- {
75
- className: classes.root,
76
- style: {
77
- maxWidth: _width,
78
- minWidth: _width,
79
- width: _width,
80
- // la cellule sticky doit être au dessus des autres cellules du body
81
- zIndex: sticky ? 12 : 11,
82
- textAlign: align,
83
- position: sticky ? 'relative' : 'inherit',
84
- border: 'none',
85
- height: dense ? cst.CELL_HEIGHT_DENSE : cst.CELL_HEIGHT
86
- }
87
- },
92
+ { className: classes.root, style: cellStyle },
88
93
  !!selectable && React.createElement(HiCheckbox, {
89
94
  classes: { root: classes.checkbox },
90
95
  style: { margin: dense ? 6 : 10 },
@@ -115,7 +120,7 @@ class CellLayout extends React.Component {
115
120
  },
116
121
  React.createElement(
117
122
  HiPins,
118
- { color: theme.palette.business.primary.normal },
123
+ { color: theme.palette.business.primary.normal, className: classes.pins },
119
124
  childrenCount
120
125
  )
121
126
  )
@@ -129,7 +134,7 @@ CellLayout.defaultProps = {
129
134
  selectable: false,
130
135
  selected: false,
131
136
  dense: false,
132
- fixedWidth: false,
137
+ fixedColumnWidth: true,
133
138
  sticky: false,
134
139
  padding: 8
135
140
  };
@@ -163,9 +168,10 @@ CellLayout.propTypes = process.env.NODE_ENV !== "production" ? {
163
168
  */
164
169
  width: PropTypes.number,
165
170
  /**
166
- * La largeur de la cellule est fixé (toutes les colonnes sauf une)
171
+ * Fixe la taille des colonnes selon le type de vue
172
+ * Sinon les colonnes s'adaptent à l'espace disponible
167
173
  */
168
- fixedWidth: PropTypes.bool,
174
+ fixedColumnWidth: PropTypes.bool,
169
175
  /**
170
176
  * Title alignement, est déduit de type par défaut
171
177
  */
@@ -21,7 +21,7 @@ export const styles = theme => ({
21
21
  class CellSentinel extends React.PureComponent {
22
22
 
23
23
  constructor(props) {
24
- super();
24
+ super(props);
25
25
 
26
26
  this.getColorFromFraudResult = this.getColorFromFraudResult.bind(this);
27
27
  }
@@ -66,7 +66,8 @@ class CellSentinel extends React.PureComponent {
66
66
  fraudResult,
67
67
  automaticFraudReviewResult,
68
68
  pendingManualAction,
69
- smartDecision
69
+ smartDecision,
70
+ hideFraudResult
70
71
  } = this.props;
71
72
 
72
73
  const scoreLabel = score > 0 ? `+${score}` : `${score}`;
@@ -97,14 +98,14 @@ class CellSentinel extends React.PureComponent {
97
98
  { title: tooltipContent, placement: this.props.sticky ? 'right' : 'bottom' },
98
99
  React.createElement(
99
100
  'div',
100
- null,
101
+ { style: { textAlign: 'right' } },
101
102
  React.createElement(HiColoredLabel, {
102
103
  label: scoreLabel,
103
104
  color: this.getColorFromFraudResult(fraudResult.toLowerCase()),
104
105
  classes: { root: classes.label },
105
106
  active: pendingManualAction
106
107
  }),
107
- React.createElement(HiColoredLabel, {
108
+ !hideFraudResult && React.createElement(HiColoredLabel, {
108
109
  label: fraudResult.toUpperCase().substr(0, 1),
109
110
  color: this.getColorFromFraudResult(fraudResult),
110
111
  classes: { root: classes.label },
@@ -124,6 +125,9 @@ class CellSentinel extends React.PureComponent {
124
125
  }
125
126
  }
126
127
 
128
+ CellSentinel.defaultProps = {
129
+ hideFraudResult: false
130
+ };
127
131
  CellSentinel.propTypes = process.env.NODE_ENV !== "production" ? {
128
132
  /**
129
133
  * Résultat de l'automaticFraudReview si la transaction est passée par SmartDecision
@@ -137,6 +141,10 @@ CellSentinel.propTypes = process.env.NODE_ENV !== "production" ? {
137
141
  * Résultat de la fraude
138
142
  */
139
143
  fraudResult: PropTypes.string.isRequired,
144
+ /**
145
+ * Si true le fraudResult ne sera pas affiché
146
+ */
147
+ hideFraudResult: PropTypes.bool.isRequired,
140
148
  /**
141
149
  * Signal qu'il attend une réponse manuelle
142
150
  */
@@ -11,6 +11,10 @@ export const styles = theme => ({
11
11
  display: 'inline-flex',
12
12
  alignItems: 'baseline',
13
13
  maxWidth: 'calc(100% - 36px)'
14
+ },
15
+ pins: {
16
+ position: 'relative',
17
+ bottom: 1
14
18
  }
15
19
  });
16
20
 
@@ -33,7 +37,7 @@ class CellStatus extends React.PureComponent {
33
37
  React.createElement(HiColoredLabel, { label: value, color: color }),
34
38
  React.createElement(
35
39
  HiPins,
36
- { color: color, onClick: onOpenDetails },
40
+ { color: color, onClick: onOpenDetails, className: classes.pins },
37
41
  nbOperations
38
42
  )
39
43
  ) : React.createElement(HiColoredLabel, { label: value, color: color })
@@ -17,7 +17,8 @@ export const styles = theme => ({
17
17
  display: 'inline-block',
18
18
  overflow: 'hidden',
19
19
  textOverflow: 'ellipsis',
20
- whiteSpace: 'pre'
20
+ whiteSpace: 'pre',
21
+ width: '100%'
21
22
  },
22
23
  noEllipsisSpan: {
23
24
  display: 'inline-block',
@@ -241,7 +241,8 @@ BodyRow.defaultProps = {
241
241
  sticky: false,
242
242
  live: false,
243
243
  innerRow: false,
244
- lookupColumns: []
244
+ lookupColumns: [],
245
+ fixedColumnWidth: true
245
246
  };
246
247
  BodyRow.propTypes = process.env.NODE_ENV !== "production" ? {
247
248
  /**
@@ -252,6 +253,11 @@ BodyRow.propTypes = process.env.NODE_ENV !== "production" ? {
252
253
  * Densité d'affichage (joue sur la hauteur des lignes)
253
254
  */
254
255
  dense: PropTypes.bool,
256
+ /**
257
+ * Fixe la taille des colonnes selon le type de vue
258
+ * Sinon les colonnes s'adaptent à l'espace disponible
259
+ */
260
+ fixedColumnWidth: PropTypes.bool,
255
261
  /**
256
262
  * Applique le style d'une ligne intégrée a un sous-tableau
257
263
  */
@@ -253,7 +253,11 @@ class ColumnFilter extends React.Component {
253
253
  React.createElement(
254
254
  'div',
255
255
  { className: classes.menuItemFilter },
256
- translations.filter,
256
+ React.createElement(
257
+ 'span',
258
+ { style: { marginRight: 4 } },
259
+ translations.filter
260
+ ),
257
261
  React.createElement(
258
262
  HiPins,
259
263
  {
@@ -141,7 +141,7 @@ class HeaderCell extends React.PureComponent {
141
141
  view,
142
142
  dense,
143
143
  width = cst.DEFAULT_WIDTHS[type][view],
144
- fixedWidth,
144
+ fixedColumnWidth,
145
145
  align = cst.ALIGN_RIGHT_TYPES.includes(type) ? 'right' : 'left',
146
146
  sticky,
147
147
  padding,
@@ -178,19 +178,22 @@ class HeaderCell extends React.PureComponent {
178
178
 
179
179
  const lookedUpClassName = classNames({ [classes.lookedUp]: lookedUp });
180
180
 
181
+ const cellStyle = {
182
+ padding: 0,
183
+ zIndex: sticky ? 13 : 12, // la cellule sticky doit être au dessus des autres cellules du header
184
+ backgroundColor: 'inherit',
185
+ textAlign: align
186
+ };
187
+
188
+ if (fixedColumnWidth) {
189
+ cellStyle.maxWidth = _width;
190
+ cellStyle.minWidth = _width;
191
+ cellStyle.width = _width;
192
+ }
193
+
181
194
  return React.createElement(
182
195
  TableCell,
183
- {
184
- style: {
185
- maxWidth: _width,
186
- minWidth: _width,
187
- width: _width,
188
- padding: 0,
189
- zIndex: sticky ? 13 : 12, // la cellule sticky doit être au dessus des autres cellules du header
190
- backgroundColor: 'inherit',
191
- textAlign: align
192
- }
193
- },
196
+ { style: cellStyle },
194
197
  React.createElement(
195
198
  'div',
196
199
  null,
@@ -279,7 +282,7 @@ HeaderCell.defaultProps = {
279
282
  sortDirection: 'asc',
280
283
  view: 'l',
281
284
  dense: false,
282
- fixedWidth: false,
285
+ fixedColumnWidth: true,
283
286
  sticky: true,
284
287
  padding: 8
285
288
  };
@@ -359,7 +362,7 @@ HeaderCell.propTypes = process.env.NODE_ENV !== "production" ? {
359
362
  /**
360
363
  * La largeur de la cellule est fixé (toutes les colonnes sauf une)
361
364
  */
362
- fixedWidth: PropTypes.bool,
365
+ fixedColumnWidth: PropTypes.bool,
363
366
  /**
364
367
  * Title alignement, est déduit de type par défaut
365
368
  */
@@ -581,7 +581,9 @@ class HiTable extends React.Component {
581
581
  translations,
582
582
  view,
583
583
  groupBy,
584
- lookupColumns
584
+ lookupColumns,
585
+ loading,
586
+ fixedColumnWidth
585
587
  } = this.props;
586
588
 
587
589
  const { dateUpdate, isScrollToBottom, groupByIds } = this.state;
@@ -627,7 +629,8 @@ class HiTable extends React.Component {
627
629
  sticky: sticky,
628
630
  view: view,
629
631
  translations: translations,
630
- lookupColumns: lookupColumns
632
+ lookupColumns: lookupColumns,
633
+ fixedColumnWidth: fixedColumnWidth
631
634
  }),
632
635
  React.createElement(HiTableBody, {
633
636
  tabId: tabId,
@@ -652,7 +655,9 @@ class HiTable extends React.Component {
652
655
  groupBy: groupBy,
653
656
  onClickNext: this.handleNextStickyRow,
654
657
  groupByIds: groupByIds,
655
- lookupColumns: lookupColumns
658
+ lookupColumns: lookupColumns,
659
+ loading: loading,
660
+ fixedColumnWidth: fixedColumnWidth
656
661
  }),
657
662
  infiniteScroll && React.createElement(HiTableFooterScroll, {
658
663
  tabId: tabId,
@@ -717,7 +722,9 @@ HiTable.defaultProps = {
717
722
  }
718
723
  },
719
724
  view: 'l',
720
- lookupColumns: []
725
+ lookupColumns: [],
726
+ loading: false,
727
+ fixedColumnWidth: true
721
728
  };
722
729
  HiTable.propTypes = process.env.NODE_ENV !== "production" ? {
723
730
  /**
@@ -748,6 +755,15 @@ HiTable.propTypes = process.env.NODE_ENV !== "production" ? {
748
755
  * Active le filtre sur les colonnes filtrables
749
756
  */
750
757
  filterable: PropTypes.bool,
758
+ /**
759
+ * Fixe la taille des colonnes selon le type de vue
760
+ * Sinon les colonnes s'adaptent à l'espace disponible
761
+ */
762
+ fixedColumnWidth: PropTypes.bool,
763
+ /**
764
+ * Id de la colonne par laquelle sont regroupé les éléments
765
+ */
766
+ groupBy: PropTypes.string,
751
767
  /**
752
768
  * Ajoute le loader et le requestNextDatas en fin de tableau (si infiniteScroll activé)
753
769
  */
@@ -760,6 +776,10 @@ HiTable.propTypes = process.env.NODE_ENV !== "production" ? {
760
776
  * Ajoute l'infinite scroll
761
777
  */
762
778
  infiniteScroll: PropTypes.bool,
779
+ /**
780
+ * État du tableau en cours de chargement des données
781
+ */
782
+ loading: PropTypes.bool,
763
783
  /**
764
784
  * Identifiant de la ou des colonnes sur la/lesquelles il y a une 'lookup' search
765
785
  */
@@ -867,10 +887,6 @@ HiTable.propTypes = process.env.NODE_ENV !== "production" ? {
867
887
  * Taille du tableau (L/M/S),
868
888
  * définit l'espace entre les cellules et leurs tailles par default
869
889
  */
870
- view: PropTypes.oneOf(['l', 'm', 's']),
871
- /**
872
- * Id de la colonne par laquelle sont regroupé les éléments
873
- */
874
- groupBy: PropTypes.string
890
+ view: PropTypes.oneOf(['l', 'm', 's'])
875
891
  } : {};
876
892
  export default withStyles(styles, { withTheme: true, name: 'HmuiHiTable' })(HiTable);
@@ -2,23 +2,24 @@ import _extends from 'babel-runtime/helpers/extends';
2
2
  import React from 'react';
3
3
  import PropTypes from 'prop-types';
4
4
  import { TableBody, TableRow } from 'material-ui/Table';
5
- import { withStyles, withTheme } from '../styles';
5
+ import classNames from 'classnames';
6
+ import { withStyles } from '../styles';
6
7
  import BodyRow from './BodyRow';
7
8
  import ChildRow from './ChildRow';
8
9
  import HiStickyRow from './HiStickyRow';
9
10
  import * as cst from './constants';
10
- import { SORTED_COLUMN_ERROR_MESSAGE } from './HiTableHead';
11
- import isRequiredIf from 'react-proptype-conditional-require';
12
11
 
13
12
  export const styles = theme => ({
14
13
  tbody: {
15
14
  position: 'relative',
16
- display: 'block' /* seperates the tbody from the header */
17
- , width: '100%',
15
+ width: '100%',
18
16
  overflowX: 'hidden',
19
17
  overflowY: 'auto',
20
18
  zIndex: 11
21
19
  },
20
+ tbodyFixedWidth: {
21
+ display: 'block' /* seperates the tbody from the header */
22
+ },
22
23
  tbodyRows: {
23
24
  backgroundColor: theme.palette.background3
24
25
  },
@@ -191,7 +192,9 @@ class HiTableBody extends React.Component {
191
192
  numberLocale,
192
193
  groupByIds,
193
194
  sortedColumnId,
194
- lookupColumns
195
+ lookupColumns,
196
+ loading,
197
+ fixedColumnWidth
195
198
  } = this.props;
196
199
 
197
200
  const { openedParentRowId, openedDetailsRowIdList } = this.state;
@@ -288,7 +291,8 @@ class HiTableBody extends React.Component {
288
291
  row,
289
292
  sticky,
290
293
  tabId,
291
- view
294
+ view,
295
+ fixedColumnWidth
292
296
  });
293
297
 
294
298
  if (hasChildren && openedParentRowId === row.rowId) {
@@ -317,7 +321,8 @@ class HiTableBody extends React.Component {
317
321
  view,
318
322
  dense,
319
323
  sticky,
320
- isDetail: true
324
+ isDetail: true,
325
+ fixedColumnWidth
321
326
  };
322
327
 
323
328
  tableRows.push(React.createElement(BodyRow, _extends({ key: `${row.rowId}-${detailRow.rowId}` }, detailRowProps)));
@@ -325,12 +330,20 @@ class HiTableBody extends React.Component {
325
330
  }
326
331
  });
327
332
 
333
+ const tBodyClasses = classNames(classes.tbody, {
334
+ [classes.tbodyFixedWidth]: fixedColumnWidth
335
+ });
336
+
328
337
  return React.createElement(
329
338
  TableBody,
330
339
  {
331
340
  id: `${tabId}-body`,
332
- className: classes.tbody,
333
- style: { height },
341
+ className: tBodyClasses,
342
+ style: _extends({
343
+ height
344
+ }, loading && {
345
+ opacity: 0.6
346
+ }),
334
347
  onScroll: onScroll
335
348
  },
336
349
  tableRows.map(tableRow => {
@@ -349,7 +362,8 @@ HiTableBody.defaultProps = {
349
362
  dense: false,
350
363
  height: 450,
351
364
  sticky: true,
352
- view: 'l'
365
+ view: 'l',
366
+ loading: false
353
367
  };
354
368
  HiTableBody.propTypes = process.env.NODE_ENV !== "production" ? {
355
369
  /**
@@ -377,10 +391,19 @@ HiTableBody.propTypes = process.env.NODE_ENV !== "production" ? {
377
391
  * Densité d'affichage (joue sur la hauteur des lignes)
378
392
  */
379
393
  dense: PropTypes.bool,
394
+ /**
395
+ * Fixe la taille des colonnes selon le type de vue
396
+ * Sinon les colonnes s'adaptent à l'espace disponible
397
+ */
398
+ fixedColumnWidth: PropTypes.bool,
380
399
  /**
381
400
  * Hauteur du tableau (px)
382
401
  */
383
402
  height: PropTypes.number,
403
+ /**
404
+ * État du tableau en cours de chargement des données
405
+ */
406
+ loading: PropTypes.bool,
384
407
  /**
385
408
  * Identifiant de la ou des colonnes sur la/lesquelles il y a une 'lookup' search
386
409
  */
@@ -3,6 +3,7 @@ import React from 'react';
3
3
  import { findDOMNode } from 'react-dom';
4
4
  import PropTypes from 'prop-types';
5
5
  import isRequiredIf from 'react-proptype-conditional-require';
6
+ import classNames from 'classnames';
6
7
 
7
8
  import { TableHead, TableRow, TableCell } from 'material-ui/Table';
8
9
  import PlusCircleIcon from 'mdi-material-ui/PlusCircle';
@@ -18,11 +19,13 @@ import { MANDATORY_COLUMN_ERROR_MESSAGE } from './HiTable';
18
19
  export const styles = theme => ({
19
20
  thead: {
20
21
  position: 'relative',
21
- display: 'block' /*seperates the header from the body allowing it to be positioned*/
22
- , width: '100%',
22
+ width: '100%',
23
23
  overflow: 'visible',
24
24
  zIndex: 12
25
25
  },
26
+ theadFixedWidth: {
27
+ display: 'block' /*seperates the header from the body allowing it to be positioned*/
28
+ },
26
29
  theadRow: {
27
30
  backgroundColor: theme.palette.background3,
28
31
  zIndex: 12
@@ -148,13 +151,16 @@ class HiTableHead extends React.Component {
148
151
  sticky,
149
152
  translations,
150
153
  view,
151
- lookupColumns
154
+ lookupColumns,
155
+ fixedColumnWidth
152
156
  } = this.props;
153
157
 
154
158
  const { hovered, openedOrderColumns, orderColumnsAnchorEl } = this.state;
155
159
 
156
160
  let headerProps = _extends({
157
- className: classes.thead
161
+ className: classNames(classes.thead, {
162
+ [classes.theadFixedWidth]: fixedColumnWidth
163
+ })
158
164
  }, orderable && { onMouseEnter: this.handleEvent, onMouseLeave: this.handleEvent });
159
165
 
160
166
  let unfixedColumnIsSet = false,
@@ -221,7 +227,8 @@ class HiTableHead extends React.Component {
221
227
  fixedWidth: fixed,
222
228
  align: column['align'],
223
229
  sticky: firstColumn && sticky,
224
- lookedUp: lookupColumns.includes(column.colId)
230
+ lookedUp: lookupColumns.includes(column.colId),
231
+ fixedColumnWidth: fixedColumnWidth
225
232
  });
226
233
  }
227
234
  }),
@@ -329,6 +336,11 @@ HiTableHead.propTypes = process.env.NODE_ENV !== "production" ? {
329
336
  * Active le filtre sur les colonnes filtrables
330
337
  */
331
338
  filterable: PropTypes.bool,
339
+ /**
340
+ * Fixe la taille des colonnes selon le type de vue
341
+ * Sinon les colonnes s'adaptent à l'espace disponible
342
+ */
343
+ fixedColumnWidth: PropTypes.bool,
332
344
  /**
333
345
  * Identifiant de la ou des colonnes sur la/lesquelles il y a une 'lookup' search
334
346
  */
@@ -63,7 +63,8 @@ export const styles = theme => ({
63
63
  controlLabelRoot: {
64
64
  marginLeft: 6,
65
65
  marginBottom: 8,
66
- fontSize: 15
66
+ fontSize: 15,
67
+ width: 160
67
68
  },
68
69
  switchLabelRoot: {
69
70
  marginLeft: 15,
@@ -72,7 +73,10 @@ export const styles = theme => ({
72
73
  columnLabel: {
73
74
  position: 'relative',
74
75
  top: 5,
75
- left: 5
76
+ left: 5,
77
+ overflow: 'hidden',
78
+ textOverflow: 'ellipsis',
79
+ whiteSpace: 'nowrap'
76
80
  },
77
81
  label: {
78
82
  fontWeight: 'inherit'
@@ -89,6 +89,9 @@ const light = {
89
89
  appBar: '#fff',
90
90
  paper: '#fff',
91
91
  default: grey[50]
92
+ },
93
+ dot: {
94
+ neutral: '#707070'
92
95
  }
93
96
  };
94
97
 
@@ -156,6 +159,9 @@ const dark = {
156
159
  appBar: '#fff',
157
160
  paper: '#fff',
158
161
  default: grey[50]
162
+ },
163
+ dot: {
164
+ neutral: '#707070'
159
165
  }
160
166
  };
161
167
 
@@ -275,6 +281,7 @@ function createHiMuiTheme(options = {}) {
275
281
  inputDisabled: shades[type].inputDisabled,
276
282
  tableLine: shades[type].tableLine,
277
283
  background: shades[type].background,
284
+ dot: shades[type].dot,
278
285
  status: statusPalette,
279
286
  primary: blue,
280
287
  secondary: yellow
package/index.es.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license Material-UI v1.0.0-beta.7
1
+ /** @license Material-UI v1.0.0-beta.9
2
2
  *
3
3
  * This source code is licensed under the MIT license found in the
4
4
  * LICENSE file in the root directory of this source tree.
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license Material-UI v1.0.0-beta.7
1
+ /** @license Material-UI v1.0.0-beta.9
2
2
  *
3
3
  * This source code is licensed under the MIT license found in the
4
4
  * LICENSE file in the root directory of this source tree.