@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
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = exports.styles = void 0;
9
+
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
14
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
15
+
16
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
17
+
18
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
+
20
+ var _react = _interopRequireDefault(require("react"));
21
+
22
+ var _propTypes = _interopRequireDefault(require("prop-types"));
23
+
24
+ var _withStyles = _interopRequireDefault(require("../styles/withStyles"));
25
+
26
+ var _HiPin = _interopRequireDefault(require("../HiPin"));
27
+
28
+ var styles = {
29
+ wrapper: {
30
+ maxWidth: '100%',
31
+ display: 'inline-flex'
32
+ }
33
+ };
34
+ /**
35
+ * Cette cellule permet d'afficher un pin avec callback (optionnel).
36
+ */
37
+
38
+ exports.styles = styles;
39
+
40
+ var _ref = _react.default.createElement(_HiPin.default, null, "0");
41
+
42
+ var CellPinToAction =
43
+ /*#__PURE__*/
44
+ function (_React$PureComponent) {
45
+ (0, _inherits2.default)(CellPinToAction, _React$PureComponent);
46
+
47
+ function CellPinToAction() {
48
+ (0, _classCallCheck2.default)(this, CellPinToAction);
49
+ return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(CellPinToAction).apply(this, arguments));
50
+ }
51
+
52
+ (0, _createClass2.default)(CellPinToAction, [{
53
+ key: "render",
54
+ value: function render() {
55
+ var _this$props = this.props,
56
+ classes = _this$props.classes,
57
+ onClick = _this$props.onClick,
58
+ number = _this$props.number;
59
+ if (number === undefined) return '';
60
+ return _react.default.createElement("div", {
61
+ className: classes.wrapper
62
+ }, number === 0 ? _ref : _react.default.createElement(_HiPin.default, {
63
+ color: "primary",
64
+ onClick: onClick
65
+ }, number));
66
+ }
67
+ }]);
68
+ return CellPinToAction;
69
+ }(_react.default.PureComponent);
70
+
71
+ CellPinToAction.propTypes = process.env.NODE_ENV !== "production" ? {
72
+ /**
73
+ * Useful to extend the style applied to components.
74
+ */
75
+ classes: _propTypes.default.object,
76
+
77
+ /**
78
+ * Pin number to display
79
+ */
80
+ number: _propTypes.default.number,
81
+
82
+ /**
83
+ * Fonction de callback onClick sur le pin
84
+ */
85
+ onClick: _propTypes.default.func
86
+ } : {};
87
+
88
+ var _default = (0, _withStyles.default)(styles, {
89
+ name: 'HmuiCellPin'
90
+ })(CellPinToAction);
91
+
92
+ exports.default = _default;
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = exports.styles = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
+
16
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
17
+
18
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
19
+
20
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
21
+
22
+ var _react = _interopRequireDefault(require("react"));
23
+
24
+ var _propTypes = _interopRequireDefault(require("prop-types"));
25
+
26
+ var _classnames = _interopRequireDefault(require("classnames"));
27
+
28
+ var _mdiMaterialUi = require("mdi-material-ui");
29
+
30
+ var _helpers = require("../utils/helpers");
31
+
32
+ var _withStyles = _interopRequireDefault(require("../styles/withStyles"));
33
+
34
+ var styles = function styles(theme) {
35
+ return {
36
+ flexContent: {
37
+ display: 'flex',
38
+ flexDirection: 'column',
39
+ justifyContent: 'center',
40
+ overflow: 'hidden',
41
+ position: 'relative',
42
+ textAlign: 'right'
43
+ },
44
+ trendChipIcon: {
45
+ width: 14,
46
+ height: 14,
47
+ position: 'relative',
48
+ top: 2
49
+ },
50
+ positive: {
51
+ color: theme.palette.positive.main
52
+ },
53
+ negative: {
54
+ color: theme.palette.negative.main
55
+ },
56
+ neutral: {
57
+ color: theme.palette.neutral.main
58
+ },
59
+ spanIndicator: {
60
+ fontSize: 11,
61
+ float: 'right',
62
+ color: '#737373',
63
+ position: 'relative',
64
+ right: 3
65
+ },
66
+ rateDiv: {
67
+ position: 'relative'
68
+ }
69
+ };
70
+ };
71
+ /**
72
+ * Cette cellule permet d'afficher un pourcentage
73
+ * avec une icône d'évolution (optionnelle) et un indicateur du type de données représentées (optionnel)
74
+ */
75
+
76
+
77
+ exports.styles = styles;
78
+
79
+ var CellRate =
80
+ /*#__PURE__*/
81
+ function (_React$PureComponent) {
82
+ (0, _inherits2.default)(CellRate, _React$PureComponent);
83
+
84
+ function CellRate() {
85
+ (0, _classCallCheck2.default)(this, CellRate);
86
+ return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(CellRate).apply(this, arguments));
87
+ }
88
+
89
+ (0, _createClass2.default)(CellRate, [{
90
+ key: "render",
91
+ value: function render() {
92
+ var _classNames, _classNames2;
93
+
94
+ var _this$props = this.props,
95
+ classes = _this$props.classes,
96
+ value = _this$props.value,
97
+ trendchip = _this$props.trendchip,
98
+ isPositive = _this$props.isPositive,
99
+ indicator = _this$props.indicator,
100
+ locale = _this$props.locale,
101
+ view = _this$props.view;
102
+ var trendIcon;
103
+ var displayedRate = (0, _helpers.formatRate)(value, view, locale);
104
+
105
+ switch (trendchip) {
106
+ case 'equal':
107
+ trendIcon = _react.default.createElement(_mdiMaterialUi.Equal, {
108
+ className: (0, _classnames.default)(classes.trendChipIcon, classes.neutral)
109
+ });
110
+ break;
111
+
112
+ case 'up':
113
+ trendIcon = _react.default.createElement(_mdiMaterialUi.ArrowTopRight, {
114
+ className: (0, _classnames.default)(classes.trendChipIcon, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.positive, isPositive), (0, _defineProperty2.default)(_classNames, classes.negative, !isPositive), _classNames))
115
+ });
116
+ break;
117
+
118
+ case 'down':
119
+ trendIcon = _react.default.createElement(_mdiMaterialUi.ArrowBottomRight, {
120
+ className: (0, _classnames.default)(classes.trendChipIcon, (_classNames2 = {}, (0, _defineProperty2.default)(_classNames2, classes.positive, !isPositive), (0, _defineProperty2.default)(_classNames2, classes.negative, isPositive), _classNames2))
121
+ });
122
+ break;
123
+
124
+ default:
125
+ break;
126
+ }
127
+
128
+ return _react.default.createElement("div", {
129
+ className: classes.flexContent
130
+ }, _react.default.createElement("div", {
131
+ className: typeof indicator === 'undefined' && classes.rateDiv || ''
132
+ }, displayedRate, trendIcon), typeof indicator !== 'undefined' && _react.default.createElement("span", {
133
+ className: classes.spanIndicator
134
+ }, indicator));
135
+ }
136
+ }]);
137
+ return CellRate;
138
+ }(_react.default.PureComponent);
139
+
140
+ CellRate.defaultProps = {
141
+ isPositive: true
142
+ };
143
+ CellRate.propTypes = process.env.NODE_ENV !== "production" ? {
144
+ /**
145
+ * Useful to extend the style applied to components.
146
+ */
147
+ classes: _propTypes.default.object,
148
+
149
+ /**
150
+ * Spécifie le type de donnée évalué (ex: 'volume', 'amount', ...)
151
+ */
152
+ indicator: _propTypes.default.string,
153
+
154
+ /**
155
+ * True si une augmentation est considérée comme positive, détermine la couleur de l'icône
156
+ */
157
+ isPositive: _propTypes.default.bool,
158
+
159
+ /**
160
+ * Locale BCP 47
161
+ */
162
+ locale: _propTypes.default.string,
163
+
164
+ /**
165
+ * Évolution par rapport à la période précédente, détermine l'icône associée
166
+ */
167
+ trendchip: _propTypes.default.oneOf(['up', 'down', 'equal']).isRequired,
168
+
169
+ /**
170
+ * Rate
171
+ */
172
+ value: _propTypes.default.number.isRequired,
173
+
174
+ /**
175
+ * View (L/M/S)
176
+ */
177
+ view: _propTypes.default.oneOf(['l', 'm', 's'])
178
+ } : {};
179
+
180
+ var _default = (0, _withStyles.default)(styles, {
181
+ name: 'HmuiCellRate'
182
+ })(CellRate);
183
+
184
+ exports.default = _default;
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = exports.styles = void 0;
9
+
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
14
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
15
+
16
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
17
+
18
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
+
20
+ var _react = _interopRequireDefault(require("react"));
21
+
22
+ var _propTypes = _interopRequireDefault(require("prop-types"));
23
+
24
+ var _HiColoredLabel = _interopRequireDefault(require("../HiColoredLabel"));
25
+
26
+ var _withStyles = _interopRequireDefault(require("../styles/withStyles"));
27
+
28
+ var styles = {
29
+ smartDecision: {
30
+ marginLeft: 2,
31
+ display: 'inline-block',
32
+ minWidth: 18
33
+ },
34
+ label: {
35
+ marginLeft: 2
36
+ },
37
+ nowrap: {
38
+ whiteSpace: 'nowrap'
39
+ }
40
+ };
41
+ /**
42
+ * Get Theme color from fraudResult
43
+ * @param fraudResult
44
+ * @returns {*}
45
+ */
46
+
47
+ exports.styles = styles;
48
+
49
+ function getColorFromFraudResult(fraudResult) {
50
+ var color;
51
+
52
+ switch (fraudResult.toUpperCase()) {
53
+ case 'ACCEPTED':
54
+ color = 'positive';
55
+ break;
56
+
57
+ case 'BLOCKED':
58
+ color = 'negative';
59
+ break;
60
+
61
+ case 'CHALLENGED':
62
+ color = 'middle';
63
+ break;
64
+
65
+ case 'PENDING':
66
+ color = 'primary';
67
+ break;
68
+
69
+ case 'FORCE_AUTHENTICATE':
70
+ case 'ASK_AUTHENTICATE':
71
+ default:
72
+ color = 'neutral';
73
+ break;
74
+ }
75
+
76
+ return color;
77
+ }
78
+ /**
79
+ * Cette cellule permet d'afficher le résultat de Sentinel (score & fraudResult & smartDecision)
80
+ */
81
+
82
+
83
+ var CellSentinel =
84
+ /*#__PURE__*/
85
+ function (_React$PureComponent) {
86
+ (0, _inherits2.default)(CellSentinel, _React$PureComponent);
87
+
88
+ function CellSentinel() {
89
+ (0, _classCallCheck2.default)(this, CellSentinel);
90
+ return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(CellSentinel).apply(this, arguments));
91
+ }
92
+
93
+ (0, _createClass2.default)(CellSentinel, [{
94
+ key: "render",
95
+ value: function render() {
96
+ var _this$props = this.props,
97
+ classes = _this$props.classes,
98
+ score = _this$props.score,
99
+ fraudResult = _this$props.fraudResult,
100
+ automaticFraudReviewResult = _this$props.automaticFraudReviewResult,
101
+ pendingManualAction = _this$props.pendingManualAction,
102
+ smartDecision = _this$props.smartDecision,
103
+ hideFraudResult = _this$props.hideFraudResult;
104
+ var scoreLabel = score > 0 ? "+".concat(score) : "".concat(score);
105
+ return _react.default.createElement("div", {
106
+ style: {
107
+ textAlign: 'right'
108
+ }
109
+ }, _react.default.createElement(_HiColoredLabel.default, {
110
+ label: scoreLabel,
111
+ color: getColorFromFraudResult(fraudResult),
112
+ classes: {
113
+ root: classes.label
114
+ },
115
+ active: pendingManualAction
116
+ }), !hideFraudResult && _react.default.createElement(_HiColoredLabel.default, {
117
+ label: fraudResult.toUpperCase().substr(0, 1),
118
+ color: getColorFromFraudResult(fraudResult),
119
+ classes: {
120
+ root: classes.label
121
+ },
122
+ active: pendingManualAction
123
+ }), !!smartDecision && _react.default.createElement("div", {
124
+ className: classes.smartDecision
125
+ }, automaticFraudReviewResult && _react.default.createElement(_HiColoredLabel.default, {
126
+ label: automaticFraudReviewResult.toUpperCase().substr(0, 1),
127
+ color: getColorFromFraudResult(automaticFraudReviewResult),
128
+ active: pendingManualAction
129
+ })));
130
+ }
131
+ }]);
132
+ return CellSentinel;
133
+ }(_react.default.PureComponent);
134
+
135
+ CellSentinel.defaultProps = {
136
+ hideFraudResult: false
137
+ };
138
+ CellSentinel.propTypes = process.env.NODE_ENV !== "production" ? {
139
+ /**
140
+ * Résultat de l'automaticFraudReview si la transaction est passée par SmartDecision
141
+ */
142
+ automaticFraudReviewResult: _propTypes.default.string,
143
+
144
+ /**
145
+ * Useful to extend the style applied to components.
146
+ */
147
+ classes: _propTypes.default.object,
148
+
149
+ /**
150
+ * Résultat de la fraude
151
+ */
152
+ fraudResult: _propTypes.default.string.isRequired,
153
+
154
+ /**
155
+ * Si true le fraudResult ne sera pas affiché
156
+ */
157
+ hideFraudResult: _propTypes.default.bool,
158
+
159
+ /**
160
+ * Signal qu'il attend une réponse manuelle
161
+ */
162
+ pendingManualAction: _propTypes.default.bool,
163
+
164
+ /**
165
+ * Score de la fraude
166
+ */
167
+ score: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]).isRequired,
168
+
169
+ /**
170
+ * Active le SmartDecision (ajoute l'indicateur ou blanc)
171
+ */
172
+ smartDecision: _propTypes.default.bool
173
+ } : {};
174
+
175
+ var _default = (0, _withStyles.default)(styles, {
176
+ name: 'HmuiCellSentinel'
177
+ })(CellSentinel);
178
+
179
+ exports.default = _default;
@@ -0,0 +1,250 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = exports.styles = void 0;
9
+
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
+
16
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
17
+
18
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
19
+
20
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
21
+
22
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
23
+
24
+ var _react = _interopRequireDefault(require("react"));
25
+
26
+ var _propTypes = _interopRequireDefault(require("prop-types"));
27
+
28
+ var _withStyles = _interopRequireDefault(require("../styles/withStyles"));
29
+
30
+ var _HiColoredLabel = _interopRequireDefault(require("../HiColoredLabel"));
31
+
32
+ var styles = {
33
+ leftEllipsisSpan: {
34
+ display: 'inline-block',
35
+ overflow: 'hidden',
36
+ textOverflow: 'ellipsis',
37
+ whiteSpace: 'pre',
38
+ direction: 'rtl'
39
+ },
40
+ rightEllipsisSpan: {
41
+ display: 'inline-block',
42
+ overflow: 'hidden',
43
+ textOverflow: 'ellipsis',
44
+ whiteSpace: 'pre'
45
+ },
46
+ noEllipsisSpan: {
47
+ display: 'inline-block',
48
+ overflow: 'hidden',
49
+ whiteSpace: 'pre'
50
+ }
51
+ };
52
+ exports.styles = styles;
53
+
54
+ var CellText =
55
+ /*#__PURE__*/
56
+ function (_React$Component) {
57
+ (0, _inherits2.default)(CellText, _React$Component);
58
+
59
+ function CellText(props) {
60
+ var _this;
61
+
62
+ (0, _classCallCheck2.default)(this, CellText);
63
+ _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(CellText).call(this, props));
64
+ _this.cellText = null;
65
+ _this.buildEllipsis = _this.buildEllipsis.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
66
+ return _this;
67
+ }
68
+ /**
69
+ * TODO - Ellipsis (middle, after-first-word)
70
+ */
71
+
72
+
73
+ (0, _createClass2.default)(CellText, [{
74
+ key: "componentDidMount",
75
+ value: function componentDidMount() {
76
+ this.buildEllipsis();
77
+ }
78
+ }, {
79
+ key: "componentDidUpdate",
80
+ value: function componentDidUpdate(prevProps) {
81
+ if (prevProps.label !== this.props.label) this.buildEllipsis();
82
+ }
83
+ }, {
84
+ key: "buildEllipsis",
85
+ value: function buildEllipsis() {
86
+ /**
87
+ * Calcul l'espace disponible dans la cellule en plus du premier mot
88
+ * si il reste de l'espace, définit la largeur du span pour le reste du texte
89
+ */
90
+ if (this.props.ellipsis === 'after-first-word' || this.props.ellipsis === 'name') {
91
+ if (this.cellText !== null) {
92
+ var _this$cellText$getEle = this.cellText.getElementsByTagName('span'),
93
+ _this$cellText$getEle2 = (0, _slicedToArray2.default)(_this$cellText$getEle, 2),
94
+ startSpan = _this$cellText$getEle2[0],
95
+ endSpan = _this$cellText$getEle2[1];
96
+
97
+ if (typeof startSpan !== 'undefined' && typeof endSpan !== 'undefined') {
98
+ var availableEndSpace = this.cellText.offsetWidth - startSpan.offsetWidth - 2;
99
+
100
+ if (availableEndSpace > 0) {
101
+ endSpan.style.width = "".concat(availableEndSpace, "px");
102
+ } else {
103
+ startSpan.style.width = '100%';
104
+ }
105
+ }
106
+ }
107
+ }
108
+ /**
109
+ * Calcul l'espace pris par les 2 spans (les 2 moitiés du texte),
110
+ * si ils dépassent la largeur de la cellule :
111
+ * - diminue d'autant et proportionnellement chaque span
112
+ * - ajoute l'ellipse à gauche de la deuxième moitié du texte.
113
+ */
114
+
115
+
116
+ if (this.props.ellipsis === 'middle') {
117
+ if (this.cellText !== null) {
118
+ var _this$cellText$getEle3 = this.cellText.getElementsByTagName('span'),
119
+ _this$cellText$getEle4 = (0, _slicedToArray2.default)(_this$cellText$getEle3, 2),
120
+ _startSpan = _this$cellText$getEle4[0],
121
+ _endSpan = _this$cellText$getEle4[1];
122
+
123
+ if (typeof _startSpan !== 'undefined' && typeof _endSpan !== 'undefined') {
124
+ var _availableEndSpace = this.cellText.offsetWidth - _startSpan.offsetWidth - _endSpan.offsetWidth;
125
+
126
+ if (_availableEndSpace < 0) {
127
+ _startSpan.style.width = '50%';
128
+ _endSpan.style.width = '49%';
129
+ } else {
130
+ _startSpan.style.width = 'initial';
131
+ _endSpan.style.width = 'initial';
132
+ }
133
+ }
134
+ }
135
+ }
136
+ }
137
+ }, {
138
+ key: "render",
139
+ value: function render() {
140
+ var _this2 = this;
141
+
142
+ var _this$props = this.props,
143
+ classes = _this$props.classes,
144
+ label = _this$props.label,
145
+ ellipsis = _this$props.ellipsis,
146
+ color = _this$props.color;
147
+ var start;
148
+ var end;
149
+ var valueElement = '';
150
+ var valueString = label.toString();
151
+
152
+ switch (ellipsis) {
153
+ case 'name':
154
+ case 'after-first-word':
155
+ // Split value in 2 strings around first whitespace
156
+ start = valueString.substr(0, valueString.indexOf(' '));
157
+ end = valueString.substr(valueString.indexOf(' ') + 1);
158
+
159
+ if (start === '') {
160
+ start = end;
161
+ end = '';
162
+ }
163
+
164
+ valueElement = _react.default.createElement("div", {
165
+ ref: function ref(div) {
166
+ _this2.cellText = div;
167
+ }
168
+ }, _react.default.createElement("span", {
169
+ className: classes.rightEllipsisSpan
170
+ }, "".concat(start, " ")), _react.default.createElement("span", {
171
+ className: classes.leftEllipsisSpan
172
+ }, end));
173
+ break;
174
+
175
+ case 'middle':
176
+ // Split value in 2 strings
177
+ start = valueString.substr(0, Math.round(valueString.length / 2));
178
+ end = valueString.substr(Math.round(valueString.length / 2));
179
+ valueElement = _react.default.createElement("div", {
180
+ ref: function ref(div) {
181
+ _this2.cellText = div;
182
+ }
183
+ }, _react.default.createElement("span", {
184
+ className: classes.noEllipsisSpan
185
+ }, start), _react.default.createElement("span", {
186
+ className: classes.leftEllipsisSpan
187
+ }, end));
188
+ break;
189
+
190
+ case 'left':
191
+ valueElement = color ? _react.default.createElement(_HiColoredLabel.default, {
192
+ className: classes.leftEllipsisSpan,
193
+ label: valueString,
194
+ color: color
195
+ }) : _react.default.createElement("div", {
196
+ className: classes.leftEllipsisSpan,
197
+ style: {
198
+ width: '100%'
199
+ }
200
+ }, valueString);
201
+ break;
202
+
203
+ case 'right':
204
+ default:
205
+ valueElement = color ? _react.default.createElement(_HiColoredLabel.default, {
206
+ className: classes.rightEllipsisSpan,
207
+ label: valueString,
208
+ color: color
209
+ }) : _react.default.createElement("div", {
210
+ className: classes.rightEllipsisSpan,
211
+ style: {
212
+ width: '100%'
213
+ }
214
+ }, valueString);
215
+ break;
216
+ }
217
+
218
+ return valueElement;
219
+ }
220
+ }]);
221
+ return CellText;
222
+ }(_react.default.Component);
223
+
224
+ CellText.propTypes = process.env.NODE_ENV !== "production" ? {
225
+ /**
226
+ * Useful to extend the style applied to components.
227
+ */
228
+ classes: _propTypes.default.object,
229
+
230
+ /**
231
+ * Couleur du text & du background
232
+ */
233
+ color: _propTypes.default.string,
234
+
235
+ /**
236
+ * Ellipsis
237
+ */
238
+ ellipsis: _propTypes.default.oneOf(['left', 'right', 'middle', 'name', 'after-first-word']),
239
+
240
+ /**
241
+ * Label à afficher
242
+ */
243
+ label: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]).isRequired
244
+ } : {};
245
+
246
+ var _default = (0, _withStyles.default)(styles, {
247
+ name: 'HmuiCellText'
248
+ })(CellText);
249
+
250
+ exports.default = _default;