@hipay/hipay-material-ui 2.0.0-beta.36 → 2.0.0-beta.37

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 (85) hide show
  1. package/HiAppBar/HiAppBar.js +0 -2
  2. package/HiCell/CellAddress.js +140 -0
  3. package/HiCell/CellDate.js +140 -0
  4. package/HiCell/CellIcon.js +122 -0
  5. package/HiCell/CellImage.js +132 -0
  6. package/HiCell/CellNumeric.js +122 -0
  7. package/HiCell/CellPinToAction.js +92 -0
  8. package/HiCell/CellRate.js +184 -0
  9. package/HiCell/CellSentinel.js +179 -0
  10. package/HiCell/CellText.js +250 -0
  11. package/HiCell/index.js +71 -0
  12. package/HiCheckbox/HiCheckbox.js +2 -2
  13. package/HiDatePicker/Caption.js +0 -1
  14. package/HiDatePicker/HiDatePicker.js +1 -1
  15. package/HiDatePicker/HiDateRangePicker.js +756 -0
  16. package/HiDatePicker/HiDateRangeSelector.js +495 -0
  17. package/HiDatePicker/ListPicker.js +0 -1
  18. package/HiDatePicker/ListPicker.spec.js +1 -2
  19. package/HiDatePicker/NavBar.js +2 -2
  20. package/HiDatePicker/NavBar.spec.js +4 -5
  21. package/HiDatePicker/Overlays/CustomOverlayLayout.js +0 -1
  22. package/HiDatePicker/Overlays/MonthPickerOverlay.js +0 -1
  23. package/HiDatePicker/Overlays/MonthPickerOverlay.spec.js +0 -1
  24. package/HiDatePicker/Overlays/Overlay.js +0 -1
  25. package/HiDatePicker/Overlays/Overlay.spec.js +0 -5
  26. package/HiDatePicker/Overlays/TimePickerOverlay.js +0 -1
  27. package/HiDatePicker/Overlays/TimePickerOverlay.spec.js +0 -1
  28. package/HiDatePicker/Overlays/YearPickerOverlay.js +0 -1
  29. package/HiDatePicker/Overlays/YearPickerOverlay.spec.js +0 -1
  30. package/HiDatePicker/Weekday.js +0 -1
  31. package/HiDatePicker/stylesheet.js +7 -3
  32. package/HiForm/HiFormControl.js +23 -3
  33. package/HiForm/HiInput.js +2 -2
  34. package/HiSelect/HiSelect.js +1 -1
  35. package/HiSelect/HiSuggestSelect.js +8 -8
  36. package/HiSelectableList/HiSelectableList.js +3 -1
  37. package/HiSelectableList/HiSelectableListItem.js +14 -11
  38. package/es/HiAppBar/HiAppBar.js +0 -2
  39. package/es/HiCell/CellAddress.js +97 -0
  40. package/es/HiCell/CellDate.js +94 -0
  41. package/es/HiCell/CellIcon.js +83 -0
  42. package/es/HiCell/CellImage.js +91 -0
  43. package/es/HiCell/CellNumeric.js +80 -0
  44. package/es/HiCell/CellPinToAction.js +53 -0
  45. package/es/HiCell/CellRate.js +142 -0
  46. package/es/HiCell/CellSentinel.js +140 -0
  47. package/es/HiCell/CellText.js +198 -0
  48. package/es/HiCell/index.js +8 -0
  49. package/es/HiCheckbox/HiCheckbox.js +2 -2
  50. package/es/HiDatePicker/Caption.js +0 -1
  51. package/es/HiDatePicker/HiDatePicker.js +1 -1
  52. package/es/HiDatePicker/HiDateRangePicker.js +661 -0
  53. package/es/HiDatePicker/HiDateRangeSelector.js +432 -0
  54. package/es/HiDatePicker/ListPicker.js +0 -1
  55. package/es/HiDatePicker/ListPicker.spec.js +1 -2
  56. package/es/HiDatePicker/NavBar.js +2 -2
  57. package/es/HiDatePicker/NavBar.spec.js +4 -5
  58. package/es/HiDatePicker/Overlays/CustomOverlayLayout.js +0 -1
  59. package/es/HiDatePicker/Overlays/MonthPickerOverlay.js +0 -1
  60. package/es/HiDatePicker/Overlays/MonthPickerOverlay.spec.js +0 -1
  61. package/es/HiDatePicker/Overlays/Overlay.js +0 -1
  62. package/es/HiDatePicker/Overlays/Overlay.spec.js +0 -3
  63. package/es/HiDatePicker/Overlays/TimePickerOverlay.js +0 -1
  64. package/es/HiDatePicker/Overlays/TimePickerOverlay.spec.js +0 -1
  65. package/es/HiDatePicker/Overlays/YearPickerOverlay.js +0 -1
  66. package/es/HiDatePicker/Overlays/YearPickerOverlay.spec.js +0 -1
  67. package/es/HiDatePicker/Overlays/index.js +0 -1
  68. package/es/HiDatePicker/Weekday.js +0 -1
  69. package/es/HiDatePicker/stylesheet.js +7 -3
  70. package/es/HiForm/HiFormControl.js +22 -3
  71. package/es/HiForm/HiInput.js +2 -2
  72. package/es/HiSelect/HiSelect.js +1 -1
  73. package/es/HiSelect/HiSuggestSelect.js +8 -8
  74. package/es/HiSelectableList/HiSelectableList.js +3 -1
  75. package/es/HiSelectableList/HiSelectableListItem.js +14 -11
  76. package/es/index.js +2 -1
  77. package/es/styles/createPalette.js +2 -1
  78. package/es/utils/helpers.js +117 -0
  79. package/index.es.js +3 -2
  80. package/index.js +1 -1
  81. package/package.json +1 -1
  82. package/styles/createPalette.js +1 -1
  83. package/umd/hipay-material-ui.development.js +39 -14
  84. package/umd/hipay-material-ui.production.min.js +2 -2
  85. package/utils/helpers.js +134 -0
@@ -45,6 +45,8 @@ var _HiFormLabel = _interopRequireDefault(require("./HiFormLabel"));
45
45
 
46
46
  var _helpers = require("../utils/helpers");
47
47
 
48
+ var _index = _interopRequireDefault(require("keycode/index"));
49
+
48
50
  // @inheritedComponent FormControl
49
51
  var styles = function styles(theme) {
50
52
  return {
@@ -145,6 +147,14 @@ function (_React$PureComponent) {
145
147
  }
146
148
  };
147
149
 
150
+ _this.handleKeyDown = function (event) {
151
+ var key = (0, _index.default)(event);
152
+
153
+ if (['space', 'enter'].includes(key)) {
154
+ _this.handleHelperClick(event);
155
+ }
156
+ };
157
+
148
158
  _this.handleHover = function (value) {
149
159
  return function () {
150
160
  _this.setState({
@@ -173,6 +183,7 @@ function (_React$PureComponent) {
173
183
  hovered: false
174
184
  };
175
185
  _this.handleHelperClick = _this.handleHelperClick.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
186
+ _this.handleKeyDown = _this.handleKeyDown.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
176
187
  _this.handleFocus = _this.handleFocus.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
177
188
  _this.handleHover = _this.handleHover.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
178
189
  return _this;
@@ -214,7 +225,12 @@ function (_React$PureComponent) {
214
225
  className: classes.errorDiv
215
226
  }, _react.default.createElement("div", {
216
227
  className: (0, _classnames.default)(classes.arrowDown, classes.errorDivArrowDown)
217
- }), errorText), helperIcon && helperText && !error && helperOpen && _react.default.createElement("div", {
228
+ }), _react.default.createElement("span", {
229
+ // eslint-disable-next-line react/no-danger
230
+ dangerouslySetInnerHTML: {
231
+ __html: (0, _helpers.escapeHTML)(errorText)
232
+ }
233
+ })), helperIcon && helperText && !error && helperOpen && _react.default.createElement("div", {
218
234
  className: classes.helperDiv
219
235
  }, _react.default.createElement("div", {
220
236
  className: (0, _classnames.default)(classes.arrowDown, classes.helperDivArrowDown)
@@ -231,10 +247,14 @@ function (_React$PureComponent) {
231
247
  focused: !disabled && (focused || hovered)
232
248
  }, InputLabelProps), error && _react.default.createElement(_Warning.default, {
233
249
  className: classes.errorIcon,
234
- onClick: this.handleHelperClick
250
+ onClick: this.handleHelperClick,
251
+ tabIndex: 0,
252
+ onKeyDown: this.handleKeyDown
235
253
  }), helperIcon && helperText && !error && _react.default.createElement(_Info.default, {
236
254
  className: (0, _classnames.default)(classes.helperIcon, (0, _defineProperty2.default)({}, classes.helperIconActive, helperOpen)),
237
- onClick: this.handleHelperClick
255
+ onClick: this.handleHelperClick,
256
+ tabIndex: 0,
257
+ onKeyDown: this.handleKeyDown
238
258
  })), _react.default.createElement("div", {
239
259
  onMouseEnter: this.handleHover(true),
240
260
  onMouseLeave: this.handleHover(false),
package/HiForm/HiInput.js CHANGED
@@ -88,8 +88,8 @@ var styles = function styles(theme) {
88
88
  startAdornment: {
89
89
  color: theme.palette.neutral.main,
90
90
  zIndex: 1,
91
- marginLeft: 8,
92
- marginRight: 16
91
+ marginLeft: 0,
92
+ marginRight: 8
93
93
  },
94
94
  startAdornmentFocus: {
95
95
  color: theme.palette.neutral.dark
@@ -72,7 +72,7 @@ var styles = function styles(theme) {
72
72
  position: 'relative'
73
73
  },
74
74
  popper: {
75
- width: '100%',
75
+ width: '100% !important',
76
76
  zIndex: 1200
77
77
  },
78
78
  paper: {
@@ -53,10 +53,10 @@ var styles = function styles(theme) {
53
53
  width: '100%'
54
54
  },
55
55
  popper: {
56
- width: '100%',
57
- transform: 'none',
58
- zIndex: 9,
59
- top: '100%'
56
+ width: '100% !important',
57
+ transform: 'none !important',
58
+ zIndex: '9 !important',
59
+ top: '100% !important'
60
60
  },
61
61
  paper: {
62
62
  borderRadius: '0px 2px',
@@ -236,12 +236,12 @@ function (_React$PureComponent) {
236
236
  onKeyDown: this.handleKeyDownSearch,
237
237
  onBlur: this.handleBlur,
238
238
  onFocus: this.handleFocus
239
- })), open && _react.default.createElement(_Popper.default, {
239
+ })), _react.default.createElement(_Popper.default, {
240
240
  disablePortal: true,
241
241
  anchorEl: this.textInput,
242
242
  placement: "bottom-start",
243
- eventsEnabled: open,
244
- className: classes.popper
243
+ className: classes.popper,
244
+ open: true
245
245
  }, _react.default.createElement(_Grow.default, {
246
246
  in: open,
247
247
  id: "menu-list",
@@ -253,7 +253,7 @@ function (_React$PureComponent) {
253
253
  }, _react.default.createElement(_HiSelectableList.default, {
254
254
  itemList: optionsShown,
255
255
  selectedIdList: [],
256
- checkbox: false,
256
+ hideCheckbox: true,
257
257
  onSelect: this.handleSelect,
258
258
  translations: translations,
259
259
  onKeyDown: this.handleKeyDown
@@ -33,7 +33,9 @@ var _HiSelectableListItem = _interopRequireDefault(require("./HiSelectableListIt
33
33
 
34
34
  var styles = function styles() {
35
35
  return {
36
- root: {}
36
+ root: {
37
+ padding: 0
38
+ }
37
39
  };
38
40
  };
39
41
  /**
@@ -47,7 +47,9 @@ var _helpers = require("../utils/helpers");
47
47
 
48
48
  var styles = function styles(theme) {
49
49
  return {
50
- root: {},
50
+ root: {
51
+ paddingLeft: 4
52
+ },
51
53
  listItem: {
52
54
  backgroundColor: theme.palette.background3,
53
55
  color: theme.palette.neutral.dark,
@@ -113,7 +115,8 @@ var styles = function styles(theme) {
113
115
  }),
114
116
  label: {
115
117
  display: 'inline-block',
116
- margin: '1px 0'
118
+ margin: '1px 0',
119
+ paddingLeft: 4
117
120
  },
118
121
  coloredLabel: {
119
122
  display: 'inline-flex',
@@ -128,7 +131,7 @@ var styles = function styles(theme) {
128
131
  color: theme.palette.neutral.main,
129
132
  fontWeight: theme.typography.fontWeightLight,
130
133
  fontSize: 11,
131
- marginLeft: 8
134
+ marginLeft: 4
132
135
  }),
133
136
  inline: {},
134
137
  info: (0, _extends2.default)({}, theme.typography.b3, {
@@ -144,19 +147,19 @@ var styles = function styles(theme) {
144
147
  alignSelf: 'center'
145
148
  }),
146
149
  checkbox: {
147
- width: 20,
148
- height: 20,
149
- fontSize: 20,
150
150
  marginTop: 3
151
151
  },
152
+ checkboxWithSecondaryInline: {
153
+ marginTop: '-8px'
154
+ },
152
155
  img: {
153
156
  width: 24,
154
157
  height: 'auto',
155
- margin: '2px 8px',
158
+ margin: '1px 4px 3px 4px',
156
159
  verticalAlign: 'middle'
157
160
  },
158
161
  icon: {
159
- margin: '0 8px',
162
+ margin: '0 4px',
160
163
  verticalAlign: 'middle'
161
164
  }
162
165
  };
@@ -303,13 +306,13 @@ function (_React$Component) {
303
306
  onMouseLeave: this.setHover(false)
304
307
  }, {
305
308
  style: {
306
- paddingLeft: "".concat(level * 32, "px")
309
+ paddingLeft: "".concat(paddingLeft + level * 32, "px")
307
310
  }
308
311
  }), !hideCheckbox && !pinned && _react.default.createElement(_HiCheckbox.default, {
309
312
  checked: selected,
310
313
  checkedIcon: checkedIcon,
311
314
  classes: {
312
- root: classes.checkbox
315
+ root: !secondaryInline ? classes.checkboxWithSecondaryInline : classes.checkbox
313
316
  },
314
317
  color: "primary" // TODO ?
315
318
  ,
@@ -344,7 +347,7 @@ HiSelectableListItem.defaultProps = {
344
347
  checkedIcon: 'check_box',
345
348
  indeterminate: false,
346
349
  level: 0,
347
- paddingLeft: 0,
350
+ paddingLeft: 4,
348
351
  pinned: false,
349
352
  secondaryInline: true,
350
353
  selected: false,
@@ -53,12 +53,10 @@ class HiAppBar extends React.Component {
53
53
  handleCollapse() {
54
54
  if (this.props.onCollapse) {
55
55
  this.props.onCollapse();
56
- console.log('oncollapse');
57
56
  } else {
58
57
  this.setState(prevState => ({
59
58
  collapsed: !prevState.collapsed
60
59
  }));
61
- console.log('setState');
62
60
  }
63
61
  }
64
62
 
@@ -0,0 +1,97 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import withStyles from '../styles/withStyles';
4
+ export const styles = () => ({
5
+ rightEllipsisSpan: {
6
+ display: 'inline-block',
7
+ overflow: 'hidden',
8
+ textOverflow: 'ellipsis',
9
+ whiteSpace: 'pre',
10
+ width: '100%'
11
+ }
12
+ });
13
+ /**
14
+ * Cette cellule permet d'afficher une adresse ou le nom d'un lieu
15
+ * - si le nom du lieu est défini, on affiche le lieu et la ville
16
+ * - sinon on affiche la ville et le pays
17
+ * - tous les champs définis sont affichés dans le tooltip
18
+ */
19
+
20
+ class CellAddress extends React.PureComponent {
21
+ render() {
22
+ const {
23
+ classes,
24
+ streetAddress,
25
+ name,
26
+ city,
27
+ postalCode,
28
+ view,
29
+ country,
30
+ isoCountry
31
+ } = this.props;
32
+ const labelItems = (view === 'l' ? [name, city, country] : [name, city, isoCountry]).filter(item => item !== undefined);
33
+ const label = labelItems && labelItems.length > 0 ? labelItems.join(', ') : '';
34
+ let title = '';
35
+ if (name) title += `${name}\n`;
36
+ if (streetAddress) title += `${streetAddress}\n`;
37
+ if (city && postalCode) title += `${city}, ${postalCode}\n`;
38
+ if (city && !postalCode) title += `${city}\n`;
39
+ if (postalCode && !city) title += `${postalCode}\n`;
40
+ if (country && isoCountry) title += `${country}, ${isoCountry}`;
41
+ if (country && !isoCountry) title += country;
42
+ if (isoCountry && !country) title += isoCountry;
43
+ return React.createElement("div", {
44
+ className: classes.rightEllipsisSpan,
45
+ title: title
46
+ }, label);
47
+ }
48
+
49
+ }
50
+
51
+ CellAddress.defaultProps = {
52
+ view: 'l'
53
+ };
54
+ CellAddress.propTypes = process.env.NODE_ENV !== "production" ? {
55
+ /**
56
+ * Ville
57
+ */
58
+ city: PropTypes.string,
59
+
60
+ /**
61
+ * Useful to extend the style applied to components.
62
+ */
63
+ classes: PropTypes.object,
64
+
65
+ /**
66
+ * Pays
67
+ */
68
+ country: PropTypes.string,
69
+
70
+ /**
71
+ * Code ISO du pays
72
+ */
73
+ isoCountry: PropTypes.string,
74
+
75
+ /**
76
+ * Nom du lieu
77
+ */
78
+ name: PropTypes.string,
79
+
80
+ /**
81
+ * Code postal
82
+ */
83
+ postalCode: PropTypes.string,
84
+
85
+ /**
86
+ * Numéro et nom de la rue
87
+ */
88
+ streetAddress: PropTypes.string,
89
+
90
+ /**
91
+ * View (L/M/S)
92
+ */
93
+ view: PropTypes.oneOf(['l', 'm', 's'])
94
+ } : {};
95
+ export default withStyles(styles, {
96
+ name: 'HmuiCellAddress'
97
+ })(CellAddress);
@@ -0,0 +1,94 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import moment from 'moment';
4
+ import 'moment/locale/fr';
5
+ import withStyles from '../styles/withStyles';
6
+ export const styles = {
7
+ rightEllipsisSpan: {
8
+ display: 'inline-block',
9
+ overflow: 'hidden',
10
+ textOverflow: 'ellipsis',
11
+ whiteSpace: 'pre',
12
+ width: '100%'
13
+ }
14
+ };
15
+ /**
16
+ * Cette cellule permet d'afficher une date en fonction de la locale de l'utilisateur
17
+ */
18
+
19
+ class CellDate extends React.PureComponent {
20
+ constructor(...args) {
21
+ super(...args);
22
+ this.formatLong = 'dddd DD MMMM YYYY HH:mm:ss';
23
+ }
24
+
25
+ render() {
26
+ const {
27
+ classes,
28
+ displayTime,
29
+ date,
30
+ locale,
31
+ view,
32
+ formatShort
33
+ } = this.props;
34
+ if (!date) return '';
35
+ const mdate = moment(date);
36
+ mdate.locale(locale);
37
+ let label;
38
+
39
+ if (view === 'l') {
40
+ label = displayTime ? mdate.format(this.formatLong) : mdate.format(this.formatLong.replace(' HH:mm:ss', ''));
41
+ } else if (view === 'm') {
42
+ label = displayTime ? mdate.format(`${formatShort} HH:mm:ss`) : mdate.format(formatShort);
43
+ } else {
44
+ label = displayTime ? mdate.format(`${formatShort.replace('YYYY', 'YY')} HH:mm:ss`) : mdate.format(formatShort.replace('YYYY', 'YY'));
45
+ }
46
+
47
+ return React.createElement("div", {
48
+ className: classes.rightEllipsisSpan
49
+ }, label);
50
+ }
51
+
52
+ }
53
+
54
+ CellDate.defaultProps = {
55
+ displayTime: false,
56
+ formatShort: 'DD/MM/YYYY',
57
+ locale: 'en',
58
+ view: 'm'
59
+ };
60
+ CellDate.propTypes = process.env.NODE_ENV !== "production" ? {
61
+ /**
62
+ * Useful to extend the style applied to components.
63
+ */
64
+ classes: PropTypes.object,
65
+
66
+ /**
67
+ * Date as string
68
+ */
69
+ date: PropTypes.string,
70
+
71
+ /**
72
+ * Affiche l'heure
73
+ */
74
+ displayTime: PropTypes.bool,
75
+
76
+ /**
77
+ * Format de la date en vue small (ex: DD/MM/YYYY)
78
+ * @see https://momentjs.com/docs/#/parsing/string-format/
79
+ */
80
+ formatShort: PropTypes.string,
81
+
82
+ /**
83
+ * Locale moment
84
+ */
85
+ locale: PropTypes.string,
86
+
87
+ /**
88
+ * View (L/M/S)
89
+ */
90
+ view: PropTypes.oneOf(['l', 'm', 's'])
91
+ } : {};
92
+ export default withStyles(styles, {
93
+ name: 'HmuiCellDate'
94
+ })(CellDate);
@@ -0,0 +1,83 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import withStyles from '../styles/withStyles';
4
+ import HiIcon from '../HiIcon';
5
+ export const styles = {
6
+ icon: {
7
+ float: 'left'
8
+ },
9
+ label: {
10
+ margin: '4px 0 4px 5px',
11
+ whiteSpace: 'nowrap',
12
+ overflow: 'hidden',
13
+ textOverflow: 'ellipsis'
14
+ },
15
+ wrapper: {
16
+ maxWidth: '100%',
17
+ display: 'inline-flex'
18
+ }
19
+ };
20
+ /**
21
+ * Cette cellule permet d'afficher une icône et un label (optionnel).
22
+ * En vue small (s) elle affiche uniquement l'icône avec une largeur fixe.
23
+ */
24
+
25
+ class CellIcon extends React.PureComponent {
26
+ render() {
27
+ const {
28
+ classes,
29
+ color,
30
+ icon,
31
+ label,
32
+ view
33
+ } = this.props;
34
+ return React.createElement("div", {
35
+ className: classes.wrapper,
36
+ title: label
37
+ }, icon && React.createElement(HiIcon, {
38
+ color: color,
39
+ className: classes.icon,
40
+ icon: icon,
41
+ width: 40,
42
+ height: 24
43
+ }), view !== 's' && label && React.createElement("span", {
44
+ className: classes.label
45
+ }, label));
46
+ }
47
+
48
+ }
49
+
50
+ CellIcon.defaultProps = {
51
+ view: 'm',
52
+ color: 'neutral'
53
+ };
54
+ CellIcon.propTypes = process.env.NODE_ENV !== "production" ? {
55
+ /**
56
+ * Useful to extend the style applied to components.
57
+ */
58
+ classes: PropTypes.object,
59
+
60
+ /**
61
+ * Couleur de l'icône
62
+ */
63
+ color: PropTypes.string,
64
+
65
+ /**
66
+ * Icon name [from material-design-icons](https://materialdesignicons.com/)
67
+ * used by HiIconBuilder
68
+ */
69
+ icon: PropTypes.string,
70
+
71
+ /**
72
+ * Label
73
+ */
74
+ label: PropTypes.string,
75
+
76
+ /**
77
+ * View (L/M/S)
78
+ */
79
+ view: PropTypes.oneOf(['l', 'm', 's'])
80
+ } : {};
81
+ export default withStyles(styles, {
82
+ name: 'HmuiCellIcon'
83
+ })(CellIcon);
@@ -0,0 +1,91 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import withStyles from '../styles/withStyles';
4
+ export const styles = () => ({
5
+ img: {
6
+ height: 'auto',
7
+ float: 'left'
8
+ },
9
+ label: {
10
+ marginLeft: 5,
11
+ whiteSpace: 'nowrap',
12
+ overflow: 'hidden',
13
+ textOverflow: 'ellipsis'
14
+ },
15
+ wrapper: {
16
+ display: 'flex',
17
+ alignItems: 'center'
18
+ }
19
+ });
20
+ /**
21
+ * Cette cellule permet d'afficher une image/logo (24px largeur) et un label (optionnel).
22
+ * En vue large, aucun tooltip n'est affiché
23
+ * En vue small (s) elle affiche uniquement l'image avec une largeur fixe.
24
+ */
25
+
26
+ class CellImage extends React.PureComponent {
27
+ render() {
28
+ const {
29
+ classes,
30
+ path,
31
+ label,
32
+ shortLabel,
33
+ view,
34
+ size
35
+ } = this.props;
36
+ if (!path || path === '') return '';
37
+ return React.createElement("div", {
38
+ className: classes.wrapper,
39
+ title: label
40
+ }, React.createElement("img", {
41
+ src: path,
42
+ alt: label,
43
+ className: classes.img,
44
+ width: size
45
+ }), shortLabel && view === 'm' && React.createElement("span", {
46
+ className: classes.label
47
+ }, shortLabel), label && (view === 'l' || view === 'm' && !shortLabel) && React.createElement("span", {
48
+ className: classes.label
49
+ }, label));
50
+ }
51
+
52
+ }
53
+
54
+ CellImage.defaultProps = {
55
+ size: 24,
56
+ view: 's'
57
+ };
58
+ CellImage.propTypes = process.env.NODE_ENV !== "production" ? {
59
+ /**
60
+ * Useful to extend the style applied to components.
61
+ */
62
+ classes: PropTypes.object,
63
+
64
+ /**
65
+ * Label
66
+ */
67
+ label: PropTypes.string,
68
+
69
+ /**
70
+ * Image path
71
+ */
72
+ path: PropTypes.string,
73
+
74
+ /**
75
+ * Short label
76
+ */
77
+ shortLabel: PropTypes.string,
78
+
79
+ /**
80
+ * Image size
81
+ */
82
+ size: PropTypes.number,
83
+
84
+ /**
85
+ * View (L/M/S)
86
+ */
87
+ view: PropTypes.oneOf(['l', 'm', 's'])
88
+ } : {};
89
+ export default withStyles(styles, {
90
+ name: 'HmuiCellImage'
91
+ })(CellImage);
@@ -0,0 +1,80 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import withStyles from '../styles/withStyles';
4
+ import { formatNumber, formatCurrencyAmount } from '../utils/helpers';
5
+ export const styles = () => ({
6
+ wrapper: {
7
+ textAlign: 'right',
8
+ direction: 'rtl'
9
+ }
10
+ });
11
+ /**
12
+ * Cette cellule permet d'afficher un volume ou un montant avec devise
13
+ */
14
+
15
+ class CellNumeric extends React.PureComponent {
16
+ render() {
17
+ const {
18
+ classes,
19
+ value,
20
+ locale,
21
+ currency,
22
+ view,
23
+ precision
24
+ } = this.props;
25
+ let displayedValue = '';
26
+ let title = '';
27
+
28
+ if (currency) {
29
+ displayedValue = formatCurrencyAmount(value, view, locale, currency);
30
+ title = formatCurrencyAmount(value, 'l', locale, currency);
31
+ } else {
32
+ displayedValue = formatNumber(value, view, locale, precision);
33
+ title = formatNumber(value, 'l', locale);
34
+ }
35
+
36
+ return React.createElement("div", {
37
+ className: classes.wrapper,
38
+ title: title
39
+ }, displayedValue);
40
+ }
41
+
42
+ }
43
+
44
+ CellNumeric.defaultProps = {
45
+ view: 'm'
46
+ };
47
+ CellNumeric.propTypes = process.env.NODE_ENV !== "production" ? {
48
+ /**
49
+ * Useful to extend the style applied to components.
50
+ */
51
+ classes: PropTypes.object,
52
+
53
+ /**
54
+ * Code de la devise (ISO 4217)
55
+ */
56
+ currency: PropTypes.string,
57
+
58
+ /**
59
+ * Locale BCP 47
60
+ */
61
+ locale: PropTypes.string,
62
+
63
+ /**
64
+ * Nombre de chiffres après la virgule
65
+ */
66
+ precision: PropTypes.number,
67
+
68
+ /**
69
+ * Volume/Amount
70
+ */
71
+ value: PropTypes.number.isRequired,
72
+
73
+ /**
74
+ * View (L/M/S)
75
+ */
76
+ view: PropTypes.oneOf(['l', 'm', 's'])
77
+ } : {};
78
+ export default withStyles(styles, {
79
+ name: 'HmuiCellNumeric'
80
+ })(CellNumeric);