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

Sign up to get free protection for your applications and to get access to all the features.
Files changed (87) 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 +15 -9
  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/HiIcon/HiIcon.js +7 -23
  35. package/HiSelect/HiSelect.js +1 -1
  36. package/HiSelect/HiSuggestSelect.js +8 -8
  37. package/HiSelectableList/HiSelectableList.js +3 -1
  38. package/HiSelectableList/HiSelectableListItem.js +21 -14
  39. package/es/HiAppBar/HiAppBar.js +0 -2
  40. package/es/HiCell/CellAddress.js +97 -0
  41. package/es/HiCell/CellDate.js +94 -0
  42. package/es/HiCell/CellIcon.js +83 -0
  43. package/es/HiCell/CellImage.js +91 -0
  44. package/es/HiCell/CellNumeric.js +80 -0
  45. package/es/HiCell/CellPinToAction.js +53 -0
  46. package/es/HiCell/CellRate.js +142 -0
  47. package/es/HiCell/CellSentinel.js +140 -0
  48. package/es/HiCell/CellText.js +198 -0
  49. package/es/HiCell/index.js +8 -0
  50. package/es/HiCheckbox/HiCheckbox.js +16 -10
  51. package/es/HiDatePicker/Caption.js +0 -1
  52. package/es/HiDatePicker/HiDatePicker.js +3 -3
  53. package/es/HiDatePicker/HiDateRangePicker.js +661 -0
  54. package/es/HiDatePicker/HiDateRangeSelector.js +432 -0
  55. package/es/HiDatePicker/ListPicker.js +0 -1
  56. package/es/HiDatePicker/ListPicker.spec.js +1 -2
  57. package/es/HiDatePicker/NavBar.js +2 -2
  58. package/es/HiDatePicker/NavBar.spec.js +4 -5
  59. package/es/HiDatePicker/Overlays/CustomOverlayLayout.js +0 -1
  60. package/es/HiDatePicker/Overlays/MonthPickerOverlay.js +0 -1
  61. package/es/HiDatePicker/Overlays/MonthPickerOverlay.spec.js +0 -1
  62. package/es/HiDatePicker/Overlays/Overlay.js +0 -1
  63. package/es/HiDatePicker/Overlays/Overlay.spec.js +0 -3
  64. package/es/HiDatePicker/Overlays/TimePickerOverlay.js +0 -1
  65. package/es/HiDatePicker/Overlays/TimePickerOverlay.spec.js +0 -1
  66. package/es/HiDatePicker/Overlays/YearPickerOverlay.js +0 -1
  67. package/es/HiDatePicker/Overlays/YearPickerOverlay.spec.js +0 -1
  68. package/es/HiDatePicker/Overlays/index.js +0 -1
  69. package/es/HiDatePicker/Weekday.js +0 -1
  70. package/es/HiDatePicker/stylesheet.js +7 -3
  71. package/es/HiForm/HiFormControl.js +22 -3
  72. package/es/HiForm/HiInput.js +2 -2
  73. package/es/HiIcon/HiIcon.js +7 -23
  74. package/es/HiSelect/HiSelect.js +1 -1
  75. package/es/HiSelect/HiSuggestSelect.js +8 -8
  76. package/es/HiSelectableList/HiSelectableList.js +3 -1
  77. package/es/HiSelectableList/HiSelectableListItem.js +21 -14
  78. package/es/index.js +2 -1
  79. package/es/styles/createPalette.js +4 -3
  80. package/es/utils/helpers.js +117 -0
  81. package/index.es.js +3 -2
  82. package/index.js +1 -1
  83. package/package.json +3 -1
  84. package/styles/createPalette.js +3 -3
  85. package/umd/hipay-material-ui.development.js +63 -48
  86. package/umd/hipay-material-ui.production.min.js +2 -2
  87. 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;