@hipay/hipay-material-ui 2.0.0-beta.46 → 2.0.0-beta.47

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 (39) hide show
  1. package/HiCell/CellIcon.js +14 -6
  2. package/HiCell/CellNumeric.js +3 -2
  3. package/HiCell/CellRate.js +2 -1
  4. package/HiCell/CellSentinel.js +2 -1
  5. package/HiChip/HiChip.js +8 -8
  6. package/HiSelect/HiSelect.js +8 -2
  7. package/HiSelectNew/HiSelect.js +37 -5
  8. package/HiSelectableList/HiSelectableListItem.js +9 -3
  9. package/HiTable/HiCellBuilder.js +229 -0
  10. package/HiTable/HiTable.js +155 -0
  11. package/HiTable/HiTableBody.js +90 -0
  12. package/HiTable/HiTableHeader.js +162 -0
  13. package/HiTable/HiTableRow.js +154 -0
  14. package/HiTable/constants.js +145 -0
  15. package/HiTable/index.js +15 -0
  16. package/es/HiCell/CellIcon.js +14 -6
  17. package/es/HiCell/CellNumeric.js +3 -2
  18. package/es/HiCell/CellRate.js +2 -1
  19. package/es/HiCell/CellSentinel.js +2 -1
  20. package/es/HiChip/HiChip.js +10 -10
  21. package/es/HiSelect/HiSelect.js +8 -2
  22. package/es/HiSelectNew/HiSelect.js +34 -4
  23. package/es/HiSelectableList/HiSelectableListItem.js +9 -3
  24. package/es/HiTable/HiCellBuilder.js +181 -0
  25. package/es/HiTable/HiTable.js +114 -0
  26. package/es/HiTable/HiTableBody.js +56 -0
  27. package/es/HiTable/HiTableHeader.js +108 -0
  28. package/es/HiTable/HiTableRow.js +103 -0
  29. package/es/HiTable/constants.js +182 -0
  30. package/es/HiTable/index.js +1 -0
  31. package/es/index.js +1 -0
  32. package/es/utils/helpers.js +1 -1
  33. package/index.es.js +2 -1
  34. package/index.js +9 -1
  35. package/package.json +1 -1
  36. package/umd/hipay-material-ui.development.js +16018 -13677
  37. package/umd/hipay-material-ui.production.min.js +2 -2
  38. package/utils/helpers.js +1 -1
  39. package/yarn-error.log +0 -109
@@ -27,9 +27,11 @@ export const styles = theme => ({
27
27
  position: 'relative'
28
28
  },
29
29
  popper: {
30
- width: '100% !important',
31
30
  zIndex: 1200
32
31
  },
32
+ popperWidth: {
33
+ width: '100% !important'
34
+ },
33
35
  paper: {
34
36
  borderRadius: '0px 2px',
35
37
  maxHeight: 440,
@@ -598,7 +600,7 @@ class HiSelect extends React.PureComponent {
598
600
  }
599
601
 
600
602
  const popperClass = classNames(classes.popper, {
601
- [classes.popperClose]: !open
603
+ [classes.popperWidth]: !this.props.containerWidth
602
604
  });
603
605
  let allSelected = false;
604
606
 
@@ -612,6 +614,10 @@ class HiSelect extends React.PureComponent {
612
614
  popperStyle = {
613
615
  width: this.props.containerWidth
614
616
  };
617
+
618
+ if (!staticPosition) {
619
+ popperStyle.position = 'absolute';
620
+ }
615
621
  }
616
622
 
617
623
  if (infiniteScroll && loadingMoreResults) {
@@ -15,6 +15,7 @@ import withStyles from '../styles/withStyles';
15
15
  import { getNextItemSelectable, foldAccents } from '../utils/helpers';
16
16
  import HiIcon from '../HiIcon';
17
17
  import keycode from 'keycode';
18
+ import classNames from "classnames";
18
19
  export const styles = theme => ({
19
20
  root: {
20
21
  backgroundColor: theme.palette.background2,
@@ -23,9 +24,15 @@ export const styles = theme => ({
23
24
  position: 'relative'
24
25
  },
25
26
  popper: {
26
- width: '100% !important',
27
27
  zIndex: 1200
28
28
  },
29
+ popperWidth: {
30
+ width: '100% !important'
31
+ },
32
+ popperRightAlign: {
33
+ right: 0,
34
+ left: 'unset!important'
35
+ },
29
36
  paper: {
30
37
  borderRadius: '0px 2px',
31
38
  maxHeight: 480,
@@ -413,6 +420,22 @@ class HiSelect extends React.PureComponent {
413
420
  itemList,
414
421
  inputValue = this.buildInputValue(options, selectedItemIdList, loading)
415
422
  } = buildSelectProps(options, selectedItemIdList, searchValue, loading);
423
+ let popperStyle = {};
424
+
425
+ if (this.props.containerWidth > 0) {
426
+ popperStyle = {
427
+ width: this.props.containerWidth
428
+ };
429
+
430
+ if (!staticPosition) {
431
+ popperStyle.position = 'absolute';
432
+ }
433
+ }
434
+
435
+ const popperClass = classNames(classes.popper, {
436
+ [classes.popperWidth]: !this.props.containerWidth,
437
+ [classes.popperRightAlign]: this.props.containerWidth
438
+ });
416
439
  const content = React.createElement(ClickAwayListener, {
417
440
  onClickAway: this.handleClickAway
418
441
  }, React.createElement(Grow, {
@@ -477,13 +500,15 @@ class HiSelect extends React.PureComponent {
477
500
  this.inputEl = el;
478
501
  }
479
502
  })), open && staticPosition ? React.createElement("div", {
480
- className: classes.popper
503
+ style: popperStyle,
504
+ className: popperClass
481
505
  }, content) : React.createElement(Popper, {
482
506
  anchorEl: this.inputEl,
483
507
  placement: "bottom-start",
484
508
  open: open,
485
- className: classes.popper,
486
- disablePortal: true
509
+ className: popperClass,
510
+ disablePortal: true,
511
+ style: popperStyle
487
512
  }, content));
488
513
  }
489
514
 
@@ -517,6 +542,11 @@ HiSelect.propTypes = process.env.NODE_ENV !== "production" ? {
517
542
  */
518
543
  classes: PropTypes.object,
519
544
 
545
+ /**
546
+ * Popper width
547
+ */
548
+ containerWidth: PropTypes.number,
549
+
520
550
  /**
521
551
  * Inactif
522
552
  */
@@ -76,6 +76,7 @@ export const styles = theme => ({
76
76
  }, theme.typography.b1, {
77
77
  fontWeight: 'inherit',
78
78
  width: '100%',
79
+ minWidth: '50%',
79
80
  padding: '5px 0',
80
81
  '& strong': {
81
82
  fontWeight: theme.typography.fontWeightMedium
@@ -102,11 +103,11 @@ export const styles = theme => ({
102
103
  color: theme.palette.neutral.main,
103
104
  fontWeight: theme.typography.fontWeightLight,
104
105
  fontSize: 12,
105
- whiteSpace: 'nowrap',
106
106
  textOverflow: 'ellipsis',
107
107
  textAlign: 'right',
108
108
  margin: '4px 12px 4px 8px',
109
- alignSelf: 'center'
109
+ alignSelf: 'center',
110
+ width: '100%'
110
111
  }),
111
112
  checkbox: {
112
113
  marginTop: 3
@@ -378,6 +379,11 @@ HiSelectableListItem.propTypes = process.env.NODE_ENV !== "production" ? {
378
379
  */
379
380
  indeterminate: PropTypes.bool,
380
381
 
382
+ /**
383
+ * icon à afficher quand le composant a la prop indeterminate.
384
+ */
385
+ indeterminateIcon: PropTypes.string,
386
+
381
387
  /**
382
388
  * Text d'information affiché à droite de l'élément
383
389
  */
@@ -440,5 +446,5 @@ HiSelectableListItem.propTypes = process.env.NODE_ENV !== "production" ? {
440
446
  } : {};
441
447
  export default withStyles(styles, {
442
448
  hiComponent: true,
443
- name: 'HmuiHiSelectableList'
449
+ name: 'HmuiHiSelectableListItem'
444
450
  })(HiSelectableListItem);
@@ -0,0 +1,181 @@
1
+ // @inheritedComponent CellBuilder
2
+ import React from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import TableCell from '@material-ui/core/TableCell';
5
+ import CellAddress from '@hipay/hipay-material-ui/HiCell/CellAddress';
6
+ import CellDate from '@hipay/hipay-material-ui/HiCell/CellDate';
7
+ import CellIcon from '@hipay/hipay-material-ui/HiCell/CellIcon';
8
+ import CellImage from '@hipay/hipay-material-ui/HiCell/CellImage';
9
+ import CellNumeric from '@hipay/hipay-material-ui/HiCell/CellNumeric';
10
+ import CellSentinel from '@hipay/hipay-material-ui/HiCell/CellSentinel';
11
+ import CellText from '@hipay/hipay-material-ui/HiCell/CellText';
12
+ import CellRate from '@hipay/hipay-material-ui/HiCell/CellRate';
13
+ import CellPinToAction from '@hipay/hipay-material-ui/HiCell/CellPinToAction';
14
+ import * as cst from './constants';
15
+
16
+ class HiCellBuilder extends React.PureComponent {
17
+ createCell(cell, rowdata, locale) {
18
+ if (rowdata.datas[cell.colId]) {
19
+ let datacell = rowdata.datas[cell.colId];
20
+
21
+ if (cell.data !== undefined) {
22
+ const refproperties = cell.data.find(el => el.id === datacell.value);
23
+
24
+ if (refproperties) {
25
+ Object.keys(refproperties).forEach(key => {
26
+ datacell[key] = refproperties[key];
27
+ });
28
+ } else {
29
+ datacell = undefined;
30
+ }
31
+ }
32
+
33
+ if (datacell) {
34
+ switch (cell.type) {
35
+ case cst.TYPE_NUMERIC:
36
+ return React.createElement(CellNumeric, {
37
+ value: datacell.value,
38
+ view: cell.view ? cell.view : cst.DEFAULT_VIEWS[cell.type],
39
+ precision: cell.precision,
40
+ currency: datacell.currency,
41
+ locale: datacell.locale || cell.locale || locale
42
+ });
43
+
44
+ case cst.TYPE_COUNTRY:
45
+ return React.createElement(CellImage, {
46
+ label: datacell.label,
47
+ shortLabel: datacell.id,
48
+ path: datacell.img,
49
+ size: datacell.size,
50
+ view: cell.view ? cell.view : cst.DEFAULT_VIEWS[cell.type]
51
+ });
52
+
53
+ case cst.TYPE_IMAGE:
54
+ return React.createElement(CellImage, {
55
+ label: datacell.label,
56
+ shortLabel: datacell.id,
57
+ path: datacell.img,
58
+ size: datacell.size,
59
+ view: cell.view ? cell.view : cst.DEFAULT_VIEWS[cell.type]
60
+ });
61
+
62
+ case cst.TYPE_RATE:
63
+ return React.createElement(CellRate, {
64
+ indicator: datacell.indicator,
65
+ isPositive: datacell.isPositive,
66
+ locale: datacell.locale || cell.locale || locale,
67
+ value: datacell.value,
68
+ trendchip: datacell.trendchip,
69
+ view: cell.view ? cell.view : cst.DEFAULT_VIEWS[cell.type]
70
+ });
71
+
72
+ case cst.TYPE_ADDRESS:
73
+ return React.createElement(CellAddress, {
74
+ city: datacell.city,
75
+ country: datacell.country,
76
+ isoCountry: datacell.isoCountry,
77
+ name: datacell.name,
78
+ postalCode: datacell.postalCode,
79
+ streetAddress: datacell.streetAddress,
80
+ view: cell.view ? cell.view : cst.DEFAULT_VIEWS[cell.type]
81
+ });
82
+
83
+ case cst.TYPE_DATE:
84
+ return React.createElement(CellDate, {
85
+ date: datacell.date,
86
+ displayTime: datacell.displayTime,
87
+ formatShort: datacell.formatShort,
88
+ locale: datacell.locale || cell.precision || locale,
89
+ view: cell.view ? cell.view : cst.DEFAULT_VIEWS[cell.type]
90
+ });
91
+
92
+ case cst.TYPE_ICON:
93
+ return React.createElement(CellIcon, {
94
+ color: datacell.color,
95
+ icon: datacell.icon,
96
+ label: datacell.label,
97
+ view: cell.view ? cell.view : cst.DEFAULT_VIEWS[cell.type],
98
+ size: cell.size
99
+ });
100
+
101
+ case cst.TYPE_THIRD_PARTY_SECURITY:
102
+ return React.createElement(CellIcon, {
103
+ color: datacell.color,
104
+ icon: datacell.icon,
105
+ label: datacell.label,
106
+ view: cell.view ? cell.view : cst.DEFAULT_VIEWS[cell.type],
107
+ size: cell.size
108
+ });
109
+
110
+ case cst.TYPE_SENTINEL:
111
+ return React.createElement(CellSentinel, {
112
+ automaticFraudReviewResult: datacell.automaticFraudReviewResult,
113
+ fraudResult: datacell.value,
114
+ hideFraudResult: datacell.hideFraudResult,
115
+ pendingManualAction: datacell.pendingManualAction,
116
+ score: datacell.score,
117
+ smartDecision: datacell.smartDecision,
118
+ view: cell.view ? cell.view : cst.DEFAULT_VIEWS[cell.type]
119
+ });
120
+
121
+ case cst.TYPE_PIN_TO_ACTION:
122
+ return React.createElement(CellPinToAction, {
123
+ number: datacell.number,
124
+ onClick: datacell.onClick
125
+ });
126
+
127
+ case cst.TYPE_ACCOUNT_NUMBER:
128
+ return React.createElement(CellText, {
129
+ label: datacell.value,
130
+ color: datacell.color,
131
+ ellipsis: datacell.ellipse
132
+ });
133
+
134
+ default:
135
+ return React.createElement(CellText, {
136
+ label: datacell.value,
137
+ color: datacell.color,
138
+ ellipsis: datacell.ellipse,
139
+ view: cell.view ? cell.view : cst.DEFAULT_VIEWS[cell.type]
140
+ });
141
+ }
142
+ }
143
+ }
144
+
145
+ return null;
146
+ }
147
+
148
+ render() {
149
+ const {
150
+ column,
151
+ data,
152
+ locale
153
+ } = this.props;
154
+ return React.createElement(TableCell, {
155
+ style: {
156
+ border: 'none',
157
+ paddingRight: '13px',
158
+ paddingLeft: '13px'
159
+ }
160
+ }, this.createCell(column, data, locale));
161
+ }
162
+
163
+ }
164
+
165
+ HiCellBuilder.propTypes = process.env.NODE_ENV !== "production" ? {
166
+ /**
167
+ * Propriétés de la colonne
168
+ */
169
+ column: PropTypes.object.isRequired,
170
+
171
+ /**
172
+ * Données de la cellule
173
+ */
174
+ data: PropTypes.object.isRequired,
175
+
176
+ /**
177
+ * Locale pour afficher les nombres et montants
178
+ */
179
+ locale: PropTypes.string
180
+ } : {};
181
+ export default HiCellBuilder;
@@ -0,0 +1,114 @@
1
+ // @inheritedComponent Table
2
+ import React from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import withStyles from '../styles/withStyles';
5
+ import Table from '@material-ui/core/Table';
6
+ import HiTableHeader from './HiTableHeader';
7
+ import HiTableBody from './HiTableBody';
8
+
9
+ const styles = theme => ({
10
+ root: {
11
+ backgroundColor: theme.palette.background3
12
+ }
13
+ });
14
+
15
+ class HiTable extends React.PureComponent {
16
+ constructor(props) {
17
+ super(props);
18
+
19
+ this.handleRequestSort = (event, property) => {
20
+ if (this.props.onSort) {
21
+ this.props.onSort(property);
22
+ }
23
+ };
24
+
25
+ this.handleRequestSort = this.handleRequestSort.bind(this);
26
+ }
27
+
28
+ render() {
29
+ const {
30
+ classes,
31
+ data,
32
+ columns,
33
+ locale,
34
+ sortable,
35
+ onRowClick,
36
+ dense,
37
+ order,
38
+ orderBy
39
+ } = this.props;
40
+ return React.createElement(Table, {
41
+ className: classes.root
42
+ }, React.createElement(HiTableHeader, {
43
+ columns: columns,
44
+ order: order,
45
+ orderBy: orderBy,
46
+ onRequestSort: this.handleRequestSort,
47
+ sortable: sortable,
48
+ dense: dense
49
+ }), React.createElement(HiTableBody, {
50
+ data: data,
51
+ columns: columns,
52
+ onClick: onRowClick,
53
+ dense: dense,
54
+ locale: locale
55
+ }));
56
+ }
57
+
58
+ }
59
+
60
+ HiTable.propTypes = process.env.NODE_ENV !== "production" ? {
61
+ /**
62
+ * Surcharge les classes du composant
63
+ */
64
+ classes: PropTypes.object,
65
+
66
+ /**
67
+ * En-tête des données et leurs paramètres
68
+ */
69
+ columns: PropTypes.object.isRequired,
70
+
71
+ /**
72
+ * Données du tableau
73
+ */
74
+ data: PropTypes.array.isRequired,
75
+
76
+ /**
77
+ * Densité d'affichage (joue sur la hauteur des lignes)
78
+ */
79
+ dense: PropTypes.bool,
80
+
81
+ /**
82
+ * Locale pour afficher les nombres et montants
83
+ */
84
+ locale: PropTypes.string,
85
+
86
+ /**
87
+ * Fonction se déclanchant au clic sur une ligne
88
+ */
89
+ onRowClick: PropTypes.func,
90
+
91
+ /**
92
+ * Fonction de trie des données
93
+ */
94
+ onSort: PropTypes.func,
95
+
96
+ /**
97
+ * Sens du tri
98
+ */
99
+ order: PropTypes.oneOf(['asc', 'desc']),
100
+
101
+ /**
102
+ * Id de la colonne trié
103
+ */
104
+ orderBy: PropTypes.string,
105
+
106
+ /**
107
+ * Le tableau est-il triable ?
108
+ */
109
+ sortable: PropTypes.bool
110
+ } : {};
111
+ export default withStyles(styles, {
112
+ hiComponent: true,
113
+ name: 'HmuiHiTable'
114
+ })(HiTable);
@@ -0,0 +1,56 @@
1
+ // @inheritedComponent TableBody
2
+ import React from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import TableBody from '@material-ui/core/TableBody/TableBody';
5
+ import HiTableRow from './HiTableRow';
6
+
7
+ class HiTableBody extends React.PureComponent {
8
+ render() {
9
+ const {
10
+ columns,
11
+ data,
12
+ dense,
13
+ locale,
14
+ onClick
15
+ } = this.props;
16
+ return React.createElement(TableBody, null, data.map(n => {
17
+ return React.createElement(HiTableRow, {
18
+ columns: columns,
19
+ rowdata: n,
20
+ key: n.rowId,
21
+ onClick: onClick,
22
+ dense: dense,
23
+ locale: locale
24
+ });
25
+ }));
26
+ }
27
+
28
+ }
29
+
30
+ HiTableBody.propTypes = process.env.NODE_ENV !== "production" ? {
31
+ /**
32
+ * En-tête des données et leurs paramètres
33
+ */
34
+ columns: PropTypes.object.isRequired,
35
+
36
+ /**
37
+ * Données du tableau
38
+ */
39
+ data: PropTypes.array.isRequired,
40
+
41
+ /**
42
+ * Densité d'affichage (joue sur la hauteur des lignes)
43
+ */
44
+ dense: PropTypes.bool,
45
+
46
+ /**
47
+ * Locale pour afficher les nombres et montants
48
+ */
49
+ locale: PropTypes.string,
50
+
51
+ /**
52
+ * Fonction appelée au clic sur une ligne
53
+ */
54
+ onClick: PropTypes.func
55
+ } : {};
56
+ export default HiTableBody;
@@ -0,0 +1,108 @@
1
+ // @inheritedComponent TableHeader
2
+ import React from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import withStyles from '../styles/withStyles';
5
+ import TableCell from '@material-ui/core/TableCell';
6
+ import TableHead from '@material-ui/core/TableHead';
7
+ import TableRow from '@material-ui/core/TableRow';
8
+ import Tooltip from '@material-ui/core/Tooltip';
9
+ import TableSortLabel from '@material-ui/core/TableSortLabel';
10
+ import * as cst from './constants';
11
+
12
+ const styles = theme => ({
13
+ icon: {
14
+ color: '#00ADE9'
15
+ }
16
+ });
17
+
18
+ class HiTableHeader extends React.PureComponent {
19
+ constructor(...args) {
20
+ super(...args);
21
+
22
+ this.createSortHandler = property => event => {
23
+ this.props.onRequestSort(event, property);
24
+ };
25
+ }
26
+
27
+ render() {
28
+ const {
29
+ classes,
30
+ columns,
31
+ order,
32
+ orderBy,
33
+ sortable,
34
+ dense
35
+ } = this.props;
36
+ return React.createElement(TableHead, null, React.createElement(TableRow, {
37
+ style: {
38
+ height: dense ? cst.CELL_HEADER_HEIGHT_DENSE : cst.CELL_HEADER_HEIGHT,
39
+ whiteSpace: 'nowrap'
40
+ }
41
+ }, Object.keys(columns).map(function (key) {
42
+ const column = columns[key];
43
+ return React.createElement(TableCell, {
44
+ key: column.colId,
45
+ sortDirection: orderBy === column.colId ? order : false,
46
+ style: {
47
+ border: 'none',
48
+ borderBottom: orderBy === column.colId ? 'solid 1px #00ADE9' : 'none',
49
+ paddingRight: '13px',
50
+ paddingLeft: '13px'
51
+ },
52
+ numeric: !!cst.ALIGN_RIGHT_TYPES.includes(column.type)
53
+ }, sortable ? React.createElement(Tooltip, {
54
+ title: "Sort",
55
+ enterDelay: 300
56
+ }, React.createElement(TableSortLabel, {
57
+ active: orderBy === column.colId,
58
+ direction: order,
59
+ onClick: this.createSortHandler(column.colId),
60
+ classes: {
61
+ icon: classes.icon
62
+ }
63
+ }, column.label)) : column.label);
64
+ }, this)));
65
+ }
66
+
67
+ }
68
+
69
+ HiTableHeader.propTypes = process.env.NODE_ENV !== "production" ? {
70
+ /**
71
+ * Surcharge les classes du composant
72
+ */
73
+ classes: PropTypes.object,
74
+
75
+ /**
76
+ * En-tête des données et leurs paramètres
77
+ */
78
+ columns: PropTypes.object.isRequired,
79
+
80
+ /**
81
+ * Le tableau est-il triable ?
82
+ */
83
+ dense: PropTypes.bool,
84
+
85
+ /**
86
+ * Fonction d'appel du trie des données
87
+ */
88
+ onRequestSort: PropTypes.func.isRequired,
89
+
90
+ /**
91
+ * Sens du tri
92
+ */
93
+ order: PropTypes.oneOf(['asc', 'desc']),
94
+
95
+ /**
96
+ * Id de la colonne trié
97
+ */
98
+ orderBy: PropTypes.string,
99
+
100
+ /**
101
+ * Densité d'affichage (joue sur la hauteur des lignes)
102
+ */
103
+ sortable: PropTypes.bool
104
+ } : {};
105
+ export default withStyles(styles, {
106
+ hiComponent: true,
107
+ name: 'HmuiHiTableHeader'
108
+ })(HiTableHeader);
@@ -0,0 +1,103 @@
1
+ // @inheritedComponent TableRow
2
+ import React from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import withStyles from '../styles/withStyles';
5
+ import TableRow from '@material-ui/core/TableRow';
6
+ import HiCellBuilder from './HiCellBuilder';
7
+ import * as cst from './constants';
8
+ export const styles = theme => ({
9
+ row: {
10
+ '&:last-child': {
11
+ borderBottom: 'solid 1px #E4E7E8'
12
+ },
13
+ '&:first-child': {
14
+ borderTop: 'solid 1px #E4E7E8'
15
+ },
16
+ '&:hover': {
17
+ backgroundColor: `${theme.palette.action.hover} !important`
18
+ }
19
+ }
20
+ });
21
+
22
+ class HiTableRow extends React.PureComponent {
23
+ constructor(props) {
24
+ super(props);
25
+ this.handleClick = this.handleClick.bind(this);
26
+ }
27
+
28
+ handleClick(event, rowdata) {
29
+ if (this.props.onClick) {
30
+ this.props.onClick(event, rowdata);
31
+ }
32
+ }
33
+
34
+ render() {
35
+ const {
36
+ classes,
37
+ columns,
38
+ dense,
39
+ key,
40
+ locale,
41
+ rowdata
42
+ } = this.props;
43
+ return React.createElement(TableRow, {
44
+ className: classes.row,
45
+ hover: true,
46
+ onClick: event => this.handleClick(event, rowdata),
47
+ key: key,
48
+ style: {
49
+ height: dense ? cst.CELL_HEIGHT_DENSE : cst.CELL_HEIGHT
50
+ },
51
+ tabIndex: -1
52
+ }, Object.keys(columns).map(key => {
53
+ return React.createElement(HiCellBuilder, {
54
+ key: columns[key].colId,
55
+ column: columns[key],
56
+ data: rowdata,
57
+ locale: locale
58
+ });
59
+ }, this));
60
+ }
61
+
62
+ }
63
+
64
+ HiTableRow.propTypes = process.env.NODE_ENV !== "production" ? {
65
+ /**
66
+ * Surcharge les classes du composant
67
+ */
68
+ classes: PropTypes.object,
69
+
70
+ /**
71
+ * En-tête des colonnes et leurs paramètres
72
+ */
73
+ columns: PropTypes.object.isRequired,
74
+
75
+ /**
76
+ * Densité d'affichage (joue sur la hauteur des lignes)
77
+ */
78
+ dense: PropTypes.bool,
79
+
80
+ /**
81
+ * Id de la ligne
82
+ */
83
+ key: PropTypes.string,
84
+
85
+ /**
86
+ * Locale pour afficher les nombres et montants
87
+ */
88
+ locale: PropTypes.string,
89
+
90
+ /**
91
+ * Action au clic sur une ligne
92
+ */
93
+ onClick: PropTypes.func,
94
+
95
+ /**
96
+ * Données de la ligne
97
+ */
98
+ rowdata: PropTypes.object.isRequired
99
+ } : {};
100
+ export default withStyles(styles, {
101
+ hiComponent: true,
102
+ name: 'HmuiHiTableRow'
103
+ })(HiTableRow);