@hipay/hipay-material-ui 2.0.0-beta.54 → 2.0.0-beta.56

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 (128) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/HiBreadcrumb/HiBreadcrumb.js +14 -4
  3. package/HiBreadcrumb/HiStep.js +4 -1
  4. package/HiBreadcrumb/HiStepContent.js +0 -1
  5. package/HiBreadcrumb/HiStepLabel.js +12 -4
  6. package/HiBreadcrumb/HiStepper.js +1 -1
  7. package/HiButton/HiButton.js +7 -1
  8. package/HiCell/CellIcon.js +4 -4
  9. package/HiCell/CellImage.js +28 -4
  10. package/HiCell/CellNumeric.js +1 -2
  11. package/HiCell/CellRate.js +6 -3
  12. package/HiCell/CellSentinel.js +7 -10
  13. package/HiCell/CellSentinelScore.js +4 -4
  14. package/HiCell/CellTextStyled.js +99 -0
  15. package/HiCell/index.js +9 -1
  16. package/HiChip/HiChip.js +1 -0
  17. package/HiDatePicker/Caption.js +8 -9
  18. package/HiDatePicker/HiDateRangePicker.js +37 -19
  19. package/HiDatePicker/HiDateRangeSelector.js +24 -22
  20. package/HiDatePicker/Overlays/CustomOverlayLayout.js +26 -17
  21. package/HiDatePicker/Overlays/MonthPickerOverlay.spec.js +1 -0
  22. package/HiDatePicker/Overlays/Overlay.js +15 -8
  23. package/HiDatePicker/Overlays/Overlay.spec.js +1 -0
  24. package/HiDatePicker/Overlays/TimePickerOverlay.js +2 -2
  25. package/HiDatePicker/Overlays/TimePickerOverlay.spec.js +1 -0
  26. package/HiDatePicker/Overlays/YearPickerOverlay.js +2 -4
  27. package/HiDatePicker/Overlays/YearPickerOverlay.spec.js +1 -0
  28. package/HiDatePicker/stylesheet.js +3 -2
  29. package/HiDotsStepper/HiDot.js +108 -0
  30. package/HiDotsStepper/HiDotsStepper.js +121 -0
  31. package/HiExpansionPanel/HiExpansionPanel.js +1 -1
  32. package/HiForm/HiAddressField.js +176 -0
  33. package/HiForm/HiSlider.js +352 -0
  34. package/HiForm/HiUpload.js +204 -0
  35. package/HiForm/HiUploadField.js +182 -0
  36. package/HiForm/HiUploadInput.js +459 -0
  37. package/HiForm/index.js +16 -0
  38. package/HiMap/HiMap.js +345 -0
  39. package/HiMap/HiMapExpand.js +210 -0
  40. package/HiMap/index.js +23 -0
  41. package/HiNotice/HiKPI.js +238 -0
  42. package/HiNotice/HiKPINotice.js +93 -0
  43. package/HiNotice/index.js +23 -0
  44. package/HiPdfReader/HiPdfReader.js +269 -0
  45. package/HiPdfReader/index.js +15 -0
  46. package/HiRadio/HiRadio.js +74 -0
  47. package/HiRadio/index.js +15 -0
  48. package/HiSelect/HiSelect.js +73 -84
  49. package/HiSelect/HiSuggestSelect.js +32 -5
  50. package/HiSelect/SelectInput.js +5 -0
  51. package/HiSelectNew/HiNestedSelectContent.js +5 -1
  52. package/HiSelectNew/HiSelect.js +174 -137
  53. package/HiSelectNew/HiSelectContent.js +0 -8
  54. package/HiSelectNew/HiSelectInput.js +8 -9
  55. package/HiSelectableList/HiSelectableList.js +32 -4
  56. package/HiSelectableList/HiSelectableListItem.js +62 -24
  57. package/HiTable/HiCellBuilder.js +42 -32
  58. package/HiTable/HiTableHeader.js +28 -21
  59. package/HiTable/constants.js +3 -1
  60. package/README.md +249 -98
  61. package/es/HiBreadcrumb/HiBreadcrumb.js +14 -4
  62. package/es/HiBreadcrumb/HiStep.js +4 -1
  63. package/es/HiBreadcrumb/HiStepContent.js +0 -1
  64. package/es/HiBreadcrumb/HiStepLabel.js +13 -4
  65. package/es/HiBreadcrumb/HiStepper.js +1 -1
  66. package/es/HiButton/HiButton.js +7 -0
  67. package/es/HiCell/CellIcon.js +5 -5
  68. package/es/HiCell/CellImage.js +25 -2
  69. package/es/HiCell/CellNumeric.js +1 -2
  70. package/es/HiCell/CellRate.js +6 -3
  71. package/es/HiCell/CellSentinel.js +7 -10
  72. package/es/HiCell/CellSentinelScore.js +4 -4
  73. package/es/HiCell/CellTextStyled.js +84 -0
  74. package/es/HiCell/index.js +2 -1
  75. package/es/HiChip/HiChip.js +1 -0
  76. package/es/HiDatePicker/Caption.js +7 -9
  77. package/es/HiDatePicker/HiDateRangePicker.js +41 -25
  78. package/es/HiDatePicker/HiDateRangeSelector.js +24 -22
  79. package/es/HiDatePicker/ListPicker.js +1 -1
  80. package/es/HiDatePicker/Overlays/CustomOverlayLayout.js +30 -19
  81. package/es/HiDatePicker/Overlays/MonthPickerOverlay.js +2 -2
  82. package/es/HiDatePicker/Overlays/MonthPickerOverlay.spec.js +1 -0
  83. package/es/HiDatePicker/Overlays/Overlay.js +16 -9
  84. package/es/HiDatePicker/Overlays/Overlay.spec.js +1 -0
  85. package/es/HiDatePicker/Overlays/TimePickerOverlay.js +2 -2
  86. package/es/HiDatePicker/Overlays/TimePickerOverlay.spec.js +1 -0
  87. package/es/HiDatePicker/Overlays/YearPickerOverlay.js +2 -4
  88. package/es/HiDatePicker/Overlays/YearPickerOverlay.spec.js +1 -0
  89. package/es/HiDatePicker/stylesheet.js +3 -2
  90. package/es/HiDotsStepper/HiDot.js +66 -0
  91. package/es/HiDotsStepper/HiDotsStepper.js +73 -0
  92. package/es/HiExpansionPanel/HiExpansionPanel.js +1 -1
  93. package/es/HiForm/HiAddressField.js +134 -0
  94. package/es/HiForm/HiSlider.js +302 -0
  95. package/es/HiForm/HiUpload.js +158 -0
  96. package/es/HiForm/HiUploadField.js +140 -0
  97. package/es/HiForm/HiUploadInput.js +411 -0
  98. package/es/HiForm/index.js +2 -0
  99. package/es/HiMap/HiMap.js +290 -0
  100. package/es/HiMap/HiMapExpand.js +162 -0
  101. package/es/HiMap/index.js +2 -0
  102. package/es/HiNotice/HiKPI.js +196 -0
  103. package/es/HiNotice/HiKPINotice.js +77 -0
  104. package/es/HiNotice/index.js +2 -0
  105. package/es/HiPdfReader/HiPdfReader.js +214 -0
  106. package/es/HiPdfReader/index.js +1 -0
  107. package/es/HiRadio/HiRadio.js +55 -0
  108. package/es/HiRadio/index.js +1 -0
  109. package/es/HiSelect/HiSelect.js +68 -78
  110. package/es/HiSelect/HiSuggestSelect.js +27 -6
  111. package/es/HiSelect/SelectInput.js +5 -0
  112. package/es/HiSelectNew/HiNestedSelectContent.js +5 -1
  113. package/es/HiSelectNew/HiSelect.js +156 -120
  114. package/es/HiSelectNew/HiSelectContent.js +0 -7
  115. package/es/HiSelectNew/HiSelectInput.js +8 -9
  116. package/es/HiSelectableList/HiSelectableList.js +28 -6
  117. package/es/HiSelectableList/HiSelectableListItem.js +71 -24
  118. package/es/HiTable/HiCellBuilder.js +140 -136
  119. package/es/HiTable/HiTableHeader.js +26 -18
  120. package/es/HiTable/constants.js +1 -0
  121. package/es/index.js +7 -0
  122. package/es/utils/helpers.js +1 -1
  123. package/index.es.js +8 -1
  124. package/index.js +57 -1
  125. package/package.json +6 -3
  126. package/umd/hipay-material-ui.development.js +42114 -35120
  127. package/umd/hipay-material-ui.production.min.js +2 -2
  128. package/utils/helpers.js +1 -1
@@ -162,14 +162,12 @@ class HiSelectInput extends React.PureComponent {
162
162
  this.handleBlur = event => {
163
163
  if ((!this.input || !this.input.contains(event.relatedTarget)) && this.props.onBlur) {
164
164
  this.props.onBlur(event);
165
- } else {
166
- if (this.input && (!this.resetIcon || !this.resetIcon.contains(event.relatedTarget))) {
167
- this.input.focus();
168
- }
165
+ } else if (this.input && (!this.resetIcon || !this.resetIcon.contains(event.relatedTarget))) {
166
+ this.input.focus();
169
167
  }
170
168
  };
171
169
 
172
- this.handleRef = el => {
170
+ this.ref = el => {
173
171
  this.input = el;
174
172
 
175
173
  if (this.props.refElement) {
@@ -180,7 +178,7 @@ class HiSelectInput extends React.PureComponent {
180
178
  this.handleKeyDown = this.handleKeyDown.bind(this);
181
179
  this.handleClick = this.handleClick.bind(this);
182
180
  this.handleBlur = this.handleBlur.bind(this);
183
- this.handleRef = this.handleRef.bind(this);
181
+ this.ref = this.ref.bind(this);
184
182
  this.handleReset = this.handleReset.bind(this);
185
183
  }
186
184
 
@@ -219,7 +217,7 @@ class HiSelectInput extends React.PureComponent {
219
217
  onBlur: this.props.onBlur,
220
218
  role: "button",
221
219
  tabIndex: "0",
222
- ref: this.handleRef
220
+ ref: this.ref
223
221
  }, React.createElement("span", {
224
222
  className: classNames(classes.label, {
225
223
  [classes.placeholder]: value === undefined
@@ -235,8 +233,9 @@ class HiSelectInput extends React.PureComponent {
235
233
  onMouseLeave: this.props.onMouseLeave,
236
234
  onKeyDown: this.handleKeyDown,
237
235
  onFocus: this.props.onFocus,
238
- onBlur: this.handleBlur,
239
- buttonRef: this.handleRef
236
+ onBlur: this.handleBlur // buttref={this.ref}
237
+ ,
238
+ buttonRef: this.ref
240
239
  }, React.createElement("span", {
241
240
  className: classNames(classes.label, {
242
241
  [classes.placeholder]: value === undefined
@@ -5,7 +5,8 @@ import PropTypes from 'prop-types';
5
5
  import List from '@material-ui/core/List';
6
6
  import withStyles from '../styles/withStyles';
7
7
  import HiSelectableListItem from './HiSelectableListItem';
8
- import { foldAccents } from '../utils/helpers';
8
+ import { foldAccents, getNextItemSelectable } from '../utils/helpers';
9
+ import keycode from 'keycode';
9
10
  export const styles = () => ({
10
11
  root: {
11
12
  padding: 0
@@ -23,6 +24,27 @@ class HiSelectableList extends React.PureComponent {
23
24
  this.props.onSelect(event, item);
24
25
  };
25
26
 
27
+ this.handleKeyDown = event => {
28
+ let nextItem;
29
+ const key = keycode(event);
30
+
31
+ if (key === 'down') {
32
+ event.preventDefault();
33
+ nextItem = getNextItemSelectable(document.activeElement, 'down');
34
+ } else if (key === 'up') {
35
+ event.preventDefault();
36
+ nextItem = getNextItemSelectable(document.activeElement, 'up');
37
+ } else if (key === 'space' || key === 'enter' && !this.props.multiple) {
38
+ event.preventDefault();
39
+ const item = this.props.options.find(elem => String(elem.id) === event.target.id);
40
+ this.handleSelect(null, item);
41
+ }
42
+
43
+ if (nextItem) {
44
+ nextItem.focus();
45
+ }
46
+ };
47
+
26
48
  this.buildRecursiveListItem = (item, level = 0) => {
27
49
  const _this$props = this.props,
28
50
  {
@@ -33,9 +55,10 @@ class HiSelectableList extends React.PureComponent {
33
55
  hoverIcon,
34
56
  icon,
35
57
  selectedItemIdList,
36
- sort
58
+ sort,
59
+ onKeyDown = this.handleKeyDown
37
60
  } = _this$props,
38
- others = _objectWithoutProperties(_this$props, ["checkedIcon", "disabled", "disabledItemIdList", "hideCheckbox", "hoverIcon", "icon", "selectedItemIdList", "sort"]);
61
+ others = _objectWithoutProperties(_this$props, ["checkedIcon", "disabled", "disabledItemIdList", "hideCheckbox", "hoverIcon", "icon", "selectedItemIdList", "sort", "onKeyDown"]);
39
62
 
40
63
  if (sort && item.children) {
41
64
  item.children.sort(this.compareItem);
@@ -51,6 +74,7 @@ class HiSelectableList extends React.PureComponent {
51
74
  icon: icon,
52
75
  level: level,
53
76
  onSelect: this.handleSelect(item),
77
+ onKeyDown: onKeyDown,
54
78
  selected: selectedItemIdList.includes(item.id) // item props override upper props (disabled, hideCheckbox, icon, level...)
55
79
 
56
80
  }, item)), item.children && item.children.length > 0 && item.children.filter(subItem => !(subItem.displayed === false)).map(subItem => this.buildRecursiveListItem(subItem, level + 1)));
@@ -79,7 +103,6 @@ class HiSelectableList extends React.PureComponent {
79
103
  const {
80
104
  classes,
81
105
  itemList,
82
- onKeyDown,
83
106
  sort
84
107
  } = this.props;
85
108
 
@@ -88,8 +111,7 @@ class HiSelectableList extends React.PureComponent {
88
111
  }
89
112
 
90
113
  return React.createElement(List, {
91
- className: classes.root,
92
- onKeyDown: onKeyDown
114
+ className: classes.root
93
115
  }, itemList.filter(item => !(item.displayed === false)) // don't remove if undefined
94
116
  .map(item => this.buildRecursiveListItem(item)));
95
117
  }
@@ -21,15 +21,20 @@ export const styles = theme => ({
21
21
  listItem: {
22
22
  backgroundColor: theme.palette.background3,
23
23
  color: theme.palette.neutral.dark,
24
- padding: '5px 0',
24
+ padding: '5px 12px 5px 0px',
25
25
  fontWeight: theme.typography.fontWeightRegular,
26
26
  maxHeight: 56,
27
27
  display: 'inline-flex',
28
28
  alignItems: 'center',
29
29
  cursor: 'pointer',
30
+ '&$listItemInlineWithInfoWithoutSecondary': {
31
+ justifyContent: 'space-between'
32
+ },
33
+ '&$listItemWithoutSecondaryInline': {
34
+ display: 'block'
35
+ },
30
36
  '&$inline': {
31
37
  maxHeight: 40,
32
- alignItems: 'flex-start',
33
38
  '& $secondaryLabel': {
34
39
  display: 'inline-block'
35
40
  }
@@ -39,6 +44,8 @@ export const styles = theme => ({
39
44
  outline: 'none'
40
45
  }
41
46
  },
47
+ listItemWithoutSecondaryInline: {},
48
+ listItemInlineWithInfoWithoutSecondary: {},
42
49
  listItemHover: {
43
50
  '&:hover:not($disabled):not($pinned)': {
44
51
  backgroundColor: theme.palette.action.hover,
@@ -81,10 +88,15 @@ export const styles = theme => ({
81
88
  width: '100%',
82
89
  minWidth: '50%',
83
90
  padding: '5px 0',
91
+ '&$listItemContentSelected': {
92
+ marginBottom: -3,
93
+ marginLeft: -4
94
+ },
84
95
  '& strong': {
85
96
  fontWeight: theme.typography.fontWeightMedium
86
97
  }
87
98
  }),
99
+ listItemContentSelected: {},
88
100
  label: {
89
101
  display: 'inline-block',
90
102
  margin: '1px 0',
@@ -108,15 +120,9 @@ export const styles = theme => ({
108
120
  fontSize: 12,
109
121
  textOverflow: 'ellipsis',
110
122
  textAlign: 'right',
111
- margin: '4px 12px 4px 8px',
123
+ padding: '4px 0px 4px 8px',
112
124
  alignSelf: 'center'
113
125
  }),
114
- checkbox: {
115
- marginTop: 3
116
- },
117
- checkboxWithSecondaryInline: {
118
- marginTop: '-8px'
119
- },
120
126
  img: {
121
127
  width: 24,
122
128
  height: 'auto',
@@ -126,7 +132,34 @@ export const styles = theme => ({
126
132
  icon: {
127
133
  margin: '0 4px',
128
134
  verticalAlign: 'middle'
129
- }
135
+ },
136
+ labelContent: {
137
+ display: 'flex',
138
+ alignItems: 'center',
139
+ maxWidth: '70%',
140
+ '&$labelWithoutSecondaryInline': {
141
+ maxWidth: '100%'
142
+ }
143
+ },
144
+ labelWithoutSecondaryInline: {},
145
+ infosContent: {
146
+ display: 'flex',
147
+ alignItems: 'center',
148
+ width: '100%',
149
+ justifyContent: 'space-between',
150
+ '&$infosInlineWithoutSecondary': {
151
+ width: 'auto'
152
+ },
153
+ '&$infosWithoutSecondaryInline': {
154
+ paddingLeft: 28
155
+ },
156
+ '&$infosWithSecondaryInline': {
157
+ marginTop: -8
158
+ }
159
+ },
160
+ infosInlineWithoutSecondary: {},
161
+ infosWithSecondaryInline: {},
162
+ infosWithoutSecondaryInline: {}
130
163
  });
131
164
  /**
132
165
  * Construit un élément de liste sélectionnable (avec checkbox)
@@ -220,7 +253,8 @@ class HiSelectableListItem extends React.PureComponent {
220
253
  secondaryInline,
221
254
  secondaryLabel,
222
255
  thin,
223
- type
256
+ type,
257
+ color
224
258
  } = this.props; // Return simple loader list item
225
259
 
226
260
  if (type === 'loader') {
@@ -252,26 +286,32 @@ class HiSelectableListItem extends React.PureComponent {
252
286
  [classes.selected]: selected,
253
287
  [classes.thin]: thin,
254
288
  [classes.pinned]: pinned,
255
- [classes.inline]: secondaryInline
289
+ [classes.inline]: secondaryInline,
290
+ [classes.listItemWithoutSecondaryInline]: !secondaryInline,
291
+ [classes.listItemInlineWithInfoWithoutSecondary]: secondaryInline && info && !secondaryLabel
256
292
  }),
257
293
  disabled: disabled
258
294
  }, disabled || {
259
295
  onClick: onSelect,
260
296
  onMouseEnter: this.setHover(true),
261
297
  onMouseLeave: this.setHover(false),
262
- onKeyDown: onKeyDown
298
+ onKeyDown
263
299
  }, {
264
300
  style: {
265
301
  paddingLeft: `${paddingLeft + level * 32}px`
266
302
  }
267
- }), !hideCheckbox && !pinned && React.createElement(HiCheckbox, {
303
+ }), React.createElement("div", {
304
+ className: classNames(classes.labelContent, {
305
+ [classes.labelWithoutSecondaryInline]: !secondaryInline || !secondaryLabel && !info
306
+ })
307
+ }, !hideCheckbox && !pinned && React.createElement(HiCheckbox, {
268
308
  tabIndex: onKeyDown ? '-1' : 0,
269
- checked: selected,
270
- checkedIcon: checkedIcon,
271
309
  classes: {
272
310
  root: !secondaryInline ? classes.checkboxWithSecondaryInline : classes.checkbox
273
311
  },
274
- color: disabled ? "inherit" : "primary",
312
+ checked: selected,
313
+ checkedIcon: checkedIcon,
314
+ color: disabled ? 'inherit' : 'primary',
275
315
  disabled: disabled,
276
316
  icon: displayedIcon,
277
317
  indeterminate: indeterminate,
@@ -279,7 +319,8 @@ class HiSelectableListItem extends React.PureComponent {
279
319
  }), React.createElement("div", {
280
320
  className: classNames(classes.listItemContent, {
281
321
  [classes.centered]: centered,
282
- [classes.primaryHighlight]: type === 'primary-highlight'
322
+ [classes.primaryHighlight]: type === 'primary-highlight',
323
+ [classes.listItemContentSelected]: selected && color
283
324
  }),
284
325
  "data-id": id
285
326
  }, type === 'icon' && icon && hideCheckbox && React.createElement(HiIcon, {
@@ -296,13 +337,19 @@ class HiSelectableListItem extends React.PureComponent {
296
337
  }
297
338
  },
298
339
  className: classes.img
299
- }), this.buildItemLabel(), !!secondaryLabel && React.createElement("div", {
340
+ }), this.buildItemLabel())), React.createElement("div", {
341
+ className: classNames(classes.infosContent, {
342
+ [classes.infosWithoutSecondaryInline]: !secondaryInline,
343
+ [classes.infosWithSecondaryInline]: !secondaryInline,
344
+ [classes.infosInlineWithoutSecondary]: secondaryInline && !secondaryLabel
345
+ })
346
+ }, !!secondaryLabel && React.createElement("div", {
300
347
  className: classNames(classes.secondaryLabel, {
301
348
  [classes.inline]: secondaryInline
302
349
  })
303
- }, secondaryLabel)), !!info && React.createElement("span", {
304
- className: classes.info
305
- }, info));
350
+ }, secondaryLabel), !!info && React.createElement("span", {
351
+ className: classNames(classes.info)
352
+ }, info)));
306
353
  }
307
354
 
308
355
  }
@@ -411,12 +458,12 @@ HiSelectableListItem.propTypes = process.env.NODE_ENV !== "production" ? {
411
458
  /**
412
459
  * Fonction de callback à la sélection de l'élément
413
460
  */
414
- onSelect: PropTypes.func,
461
+ onKeyDown: PropTypes.func,
415
462
 
416
463
  /**
417
464
  * Fonction de callback à la sélection de l'élément
418
465
  */
419
- onKeyDown: PropTypes.func,
466
+ onSelect: PropTypes.func,
420
467
 
421
468
  /**
422
469
  * Padding par défaut des éléments
@@ -2,153 +2,157 @@
2
2
  import React from 'react';
3
3
  import PropTypes from 'prop-types';
4
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 CellSentinelScore from '@hipay/hipay-material-ui/HiCell/CellSentinelScore';
12
- import CellText from '@hipay/hipay-material-ui/HiCell/CellText';
13
- import CellRate from '@hipay/hipay-material-ui/HiCell/CellRate';
14
- import CellPinToAction from '@hipay/hipay-material-ui/HiCell/CellPinToAction';
5
+ import CellAddress from '../HiCell/CellAddress';
6
+ import CellDate from '../HiCell/CellDate';
7
+ import CellIcon from '../HiCell/CellIcon';
8
+ import CellImage from '../HiCell/CellImage';
9
+ import CellNumeric from '../HiCell/CellNumeric';
10
+ import CellSentinel from '../HiCell/CellSentinel';
11
+ import CellSentinelScore from '../HiCell/CellSentinelScore';
12
+ import CellTextStyled from '../HiCell/CellTextStyled';
13
+ import CellRate from '../HiCell/CellRate';
14
+ import CellPinToAction from '../HiCell/CellPinToAction';
15
15
  import * as cst from './constants';
16
16
 
17
17
  class HiCellBuilder extends React.PureComponent {
18
- createCell(cell, rowdata, locale) {
19
- if (rowdata.datas[cell.colId]) {
20
- let datacell = rowdata.datas[cell.colId];
21
-
22
- if (cell.data !== undefined) {
23
- const refproperties = cell.data.find(el => el.id === datacell.value);
24
-
25
- if (refproperties) {
26
- Object.keys(refproperties).forEach(key => {
27
- datacell[key] = refproperties[key];
28
- });
29
- } else {
30
- datacell = undefined;
31
- }
32
- }
33
-
34
- if (datacell) {
35
- switch (cell.type) {
36
- case cst.TYPE_NUMERIC:
37
- return React.createElement(CellNumeric, {
38
- value: datacell.value,
39
- view: cell.view ? cell.view : cst.DEFAULT_VIEWS[cell.type],
40
- precision: cell.precision,
41
- currency: datacell.currency,
42
- locale: datacell.locale || cell.locale || locale
43
- });
44
-
45
- case cst.TYPE_COUNTRY:
46
- return React.createElement(CellImage, {
47
- label: datacell.label,
48
- shortLabel: datacell.id,
49
- path: datacell.img,
50
- size: datacell.size,
51
- view: cell.view ? cell.view : cst.DEFAULT_VIEWS[cell.type]
52
- });
53
-
54
- case cst.TYPE_IMAGE:
55
- return React.createElement(CellImage, {
56
- label: datacell.label,
57
- shortLabel: datacell.id,
58
- path: datacell.img,
59
- size: datacell.size,
60
- view: cell.view ? cell.view : cst.DEFAULT_VIEWS[cell.type]
61
- });
62
-
63
- case cst.TYPE_RATE:
64
- return React.createElement(CellRate, {
65
- indicator: datacell.indicator,
66
- isPositive: datacell.isPositive,
67
- locale: datacell.locale || cell.locale || locale,
68
- value: datacell.value,
69
- trendchip: datacell.trendchip,
70
- view: cell.view ? cell.view : cst.DEFAULT_VIEWS[cell.type]
71
- });
72
-
73
- case cst.TYPE_ADDRESS:
74
- return React.createElement(CellAddress, {
75
- city: datacell.city,
76
- country: datacell.country,
77
- isoCountry: datacell.isoCountry,
78
- name: datacell.name,
79
- postalCode: datacell.postalCode,
80
- streetAddress: datacell.streetAddress,
81
- view: cell.view ? cell.view : cst.DEFAULT_VIEWS[cell.type]
82
- });
18
+ constructor(...args) {
19
+ super(...args);
83
20
 
84
- case cst.TYPE_DATE:
85
- return React.createElement(CellDate, {
86
- date: datacell.date,
87
- displayTime: datacell.displayTime,
88
- formatShort: datacell.formatShort,
89
- locale: datacell.locale || cell.precision || locale,
90
- view: cell.view ? cell.view : cst.DEFAULT_VIEWS[cell.type]
91
- });
92
-
93
- case cst.TYPE_ICON:
94
- return React.createElement(CellIcon, {
95
- color: datacell.color,
96
- icon: datacell.icon,
97
- label: datacell.label,
98
- view: cell.view ? cell.view : cst.DEFAULT_VIEWS[cell.type],
99
- size: cell.size
100
- });
101
-
102
- case cst.TYPE_THIRD_PARTY_SECURITY:
103
- return React.createElement(CellIcon, {
104
- color: datacell.color,
105
- icon: datacell.icon,
106
- label: datacell.label,
107
- view: cell.view ? cell.view : cst.DEFAULT_VIEWS[cell.type],
108
- size: cell.size
109
- });
110
-
111
- case cst.TYPE_SENTINEL:
112
- return React.createElement(CellSentinel, {
113
- color: datacell.color,
114
- label: datacell.label,
115
- letter: datacell.label2,
116
- active: datacell.active,
117
- reviewer: datacell.reviewer,
118
- outlined: datacell.outlined
119
- });
120
-
121
- case cst.TYPE_SENTINEL_SCORE:
122
- return React.createElement(CellSentinelScore, {
123
- value: datacell.value,
124
- result: datacell.result
125
- });
21
+ this.createCell = (cell, rowdata, locale) => {
22
+ if (rowdata.datas[cell.colId]) {
23
+ let datacell = rowdata.datas[cell.colId];
126
24
 
127
- case cst.TYPE_PIN_TO_ACTION:
128
- return React.createElement(CellPinToAction, {
129
- number: datacell.number,
130
- onClick: datacell.onClick
131
- });
25
+ if (cell.data !== undefined) {
26
+ const refproperties = cell.data.find(el => el.id === datacell.value);
132
27
 
133
- case cst.TYPE_ACCOUNT_NUMBER:
134
- return React.createElement(CellText, {
135
- label: datacell.value,
136
- color: datacell.color,
137
- ellipsis: datacell.ellipse
28
+ if (refproperties) {
29
+ Object.keys(refproperties).forEach(key => {
30
+ datacell[key] = refproperties[key];
138
31
  });
32
+ } else {
33
+ datacell = undefined;
34
+ }
35
+ }
139
36
 
140
- default:
141
- return React.createElement(CellText, {
142
- label: datacell.value,
143
- color: datacell.color,
144
- ellipsis: datacell.ellipse,
145
- view: cell.view ? cell.view : cst.DEFAULT_VIEWS[cell.type]
146
- });
37
+ if (datacell) {
38
+ switch (cell.type) {
39
+ case cst.TYPE_NUMERIC:
40
+ return React.createElement(CellNumeric, {
41
+ value: datacell.value,
42
+ view: cell.view ? cell.view : cst.DEFAULT_VIEWS[cell.type],
43
+ precision: cell.precision,
44
+ currency: datacell.currency,
45
+ locale: datacell.locale || cell.locale || locale
46
+ });
47
+
48
+ case cst.TYPE_COUNTRY:
49
+ return React.createElement(CellImage, {
50
+ label: datacell.label,
51
+ shortLabel: datacell.id,
52
+ path: datacell.img,
53
+ size: datacell.size,
54
+ view: cell.view ? cell.view : cst.DEFAULT_VIEWS[cell.type]
55
+ });
56
+
57
+ case cst.TYPE_IMAGE:
58
+ return React.createElement(CellImage, {
59
+ label: datacell.label,
60
+ shortLabel: datacell.id,
61
+ path: datacell.img,
62
+ size: datacell.size || cell.size,
63
+ view: cell.view ? cell.view : cst.DEFAULT_VIEWS[cell.type],
64
+ fallbackImage: datacell.fallbackImage,
65
+ title: cell.title ? cell.title(datacell, cell) : datacell.title
66
+ });
67
+
68
+ case cst.TYPE_RATE:
69
+ return React.createElement(CellRate, {
70
+ indicator: datacell.indicator,
71
+ isPositive: datacell.isPositive,
72
+ locale: datacell.locale || cell.locale || locale,
73
+ value: datacell.value,
74
+ trendchip: datacell.trendchip,
75
+ view: cell.view ? cell.view : cst.DEFAULT_VIEWS[cell.type]
76
+ });
77
+
78
+ case cst.TYPE_ADDRESS:
79
+ return React.createElement(CellAddress, {
80
+ city: datacell.city,
81
+ country: datacell.country,
82
+ isoCountry: datacell.isoCountry,
83
+ name: datacell.name,
84
+ postalCode: datacell.postalCode,
85
+ streetAddress: datacell.streetAddress,
86
+ view: cell.view ? cell.view : cst.DEFAULT_VIEWS[cell.type]
87
+ });
88
+
89
+ case cst.TYPE_DATE:
90
+ return React.createElement(CellDate, {
91
+ date: datacell.date,
92
+ displayTime: datacell.displayTime,
93
+ formatShort: datacell.formatShort,
94
+ locale: datacell.locale || cell.precision || locale,
95
+ view: cell.view ? cell.view : cst.DEFAULT_VIEWS[cell.type]
96
+ });
97
+
98
+ case cst.TYPE_ICON:
99
+ return React.createElement(CellIcon, {
100
+ color: datacell.color,
101
+ icon: datacell.icon,
102
+ label: datacell.label,
103
+ view: cell.view ? cell.view : cst.DEFAULT_VIEWS[cell.type],
104
+ size: cell.size
105
+ });
106
+
107
+ case cst.TYPE_THIRD_PARTY_SECURITY:
108
+ return React.createElement(CellIcon, {
109
+ color: datacell.color,
110
+ icon: datacell.icon,
111
+ label: datacell.label,
112
+ view: cell.view ? cell.view : cst.DEFAULT_VIEWS[cell.type],
113
+ size: cell.size
114
+ });
115
+
116
+ case cst.TYPE_SENTINEL:
117
+ return React.createElement(CellSentinel, {
118
+ color: datacell.color,
119
+ label: datacell.label,
120
+ letter: datacell.label2,
121
+ active: datacell.active,
122
+ reviewer: datacell.reviewer,
123
+ outlined: datacell.outlined
124
+ });
125
+
126
+ case cst.TYPE_SENTINEL_SCORE:
127
+ return React.createElement(CellSentinelScore, {
128
+ value: datacell.value,
129
+ result: datacell.result,
130
+ active: datacell.active
131
+ });
132
+
133
+ case cst.TYPE_PIN_TO_ACTION:
134
+ return React.createElement(CellPinToAction, {
135
+ number: datacell.number // eslint-disable-next-line react/jsx-handler-names
136
+ ,
137
+ onClick: datacell.onClick
138
+ });
139
+
140
+ case cst.TYPE_ACCOUNT_NUMBER:
141
+ case cst.TYPE_CUSTOMER_ACCOUNT_NUMBER:
142
+ default:
143
+ return React.createElement(CellTextStyled, {
144
+ active: datacell.active,
145
+ color: datacell.color,
146
+ label: datacell.label,
147
+ title: cell.title ? cell.title(datacell, cell) : datacell.title,
148
+ value: datacell.value
149
+ });
150
+ }
147
151
  }
148
152
  }
149
- }
150
153
 
151
- return null;
154
+ return null;
155
+ };
152
156
  }
153
157
 
154
158
  render() {
@@ -5,15 +5,16 @@ import withStyles from '../styles/withStyles';
5
5
  import TableCell from '@material-ui/core/TableCell';
6
6
  import TableHead from '@material-ui/core/TableHead';
7
7
  import TableRow from '@material-ui/core/TableRow';
8
- import Tooltip from '@material-ui/core/Tooltip';
9
8
  import TableSortLabel from '@material-ui/core/TableSortLabel';
10
9
  import * as cst from './constants';
11
-
12
- const styles = theme => ({
10
+ const styles = {
13
11
  icon: {
14
12
  color: '#00ADE9'
13
+ },
14
+ headerRoot: {
15
+ cursor: 'inherit'
15
16
  }
16
- });
17
+ };
17
18
 
18
19
  class HiTableHeader extends React.PureComponent {
19
20
  constructor(...args) {
@@ -38,29 +39,36 @@ class HiTableHeader extends React.PureComponent {
38
39
  height: dense ? cst.CELL_HEADER_HEIGHT_DENSE : cst.CELL_HEADER_HEIGHT,
39
40
  whiteSpace: 'nowrap'
40
41
  }
41
- }, Object.keys(columns).map(function (key) {
42
- const column = columns[key];
42
+ }, Object.keys(columns).map(key => {
43
+ const {
44
+ colId,
45
+ type,
46
+ label,
47
+ smallLabel,
48
+ view,
49
+ headerTooltip
50
+ } = columns[key];
51
+ const finalLabel = view === 's' ? smallLabel : label;
43
52
  return React.createElement(TableCell, {
44
- key: column.colId,
45
- sortDirection: orderBy === column.colId ? order : false,
53
+ key: colId,
54
+ sortDirection: orderBy === colId ? order : false,
46
55
  style: {
47
56
  border: 'none',
48
- borderBottom: orderBy === column.colId ? 'solid 1px #00ADE9' : 'none',
57
+ borderBottom: orderBy === colId ? 'solid 1px #00ADE9' : 'none',
49
58
  paddingRight: '13px',
50
59
  paddingLeft: '13px'
51
60
  },
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,
61
+ numeric: cst.ALIGN_RIGHT_TYPES.includes(type),
62
+ title: headerTooltip
63
+ }, sortable ? React.createElement(TableSortLabel, {
64
+ active: orderBy === colId,
58
65
  direction: order,
59
- onClick: this.createSortHandler(column.colId),
66
+ onClick: this.createSortHandler(colId),
60
67
  classes: {
61
68
  icon: classes.icon
62
- }
63
- }, column.label)) : column.label);
69
+ },
70
+ title: headerTooltip || label
71
+ }, finalLabel) : finalLabel);
64
72
  }, this)));
65
73
  }
66
74