@hipay/hipay-material-ui 2.0.0-beta.36 → 2.0.0-beta.37
Sign up to get free protection for your applications and to get access to all the features.
- package/HiAppBar/HiAppBar.js +0 -2
- package/HiCell/CellAddress.js +140 -0
- package/HiCell/CellDate.js +140 -0
- package/HiCell/CellIcon.js +122 -0
- package/HiCell/CellImage.js +132 -0
- package/HiCell/CellNumeric.js +122 -0
- package/HiCell/CellPinToAction.js +92 -0
- package/HiCell/CellRate.js +184 -0
- package/HiCell/CellSentinel.js +179 -0
- package/HiCell/CellText.js +250 -0
- package/HiCell/index.js +71 -0
- package/HiCheckbox/HiCheckbox.js +2 -2
- package/HiDatePicker/Caption.js +0 -1
- package/HiDatePicker/HiDatePicker.js +1 -1
- package/HiDatePicker/HiDateRangePicker.js +756 -0
- package/HiDatePicker/HiDateRangeSelector.js +495 -0
- package/HiDatePicker/ListPicker.js +0 -1
- package/HiDatePicker/ListPicker.spec.js +1 -2
- package/HiDatePicker/NavBar.js +2 -2
- package/HiDatePicker/NavBar.spec.js +4 -5
- package/HiDatePicker/Overlays/CustomOverlayLayout.js +0 -1
- package/HiDatePicker/Overlays/MonthPickerOverlay.js +0 -1
- package/HiDatePicker/Overlays/MonthPickerOverlay.spec.js +0 -1
- package/HiDatePicker/Overlays/Overlay.js +0 -1
- package/HiDatePicker/Overlays/Overlay.spec.js +0 -5
- package/HiDatePicker/Overlays/TimePickerOverlay.js +0 -1
- package/HiDatePicker/Overlays/TimePickerOverlay.spec.js +0 -1
- package/HiDatePicker/Overlays/YearPickerOverlay.js +0 -1
- package/HiDatePicker/Overlays/YearPickerOverlay.spec.js +0 -1
- package/HiDatePicker/Weekday.js +0 -1
- package/HiDatePicker/stylesheet.js +7 -3
- package/HiForm/HiFormControl.js +23 -3
- package/HiForm/HiInput.js +2 -2
- package/HiSelect/HiSelect.js +1 -1
- package/HiSelect/HiSuggestSelect.js +8 -8
- package/HiSelectableList/HiSelectableList.js +3 -1
- package/HiSelectableList/HiSelectableListItem.js +14 -11
- package/es/HiAppBar/HiAppBar.js +0 -2
- package/es/HiCell/CellAddress.js +97 -0
- package/es/HiCell/CellDate.js +94 -0
- package/es/HiCell/CellIcon.js +83 -0
- package/es/HiCell/CellImage.js +91 -0
- package/es/HiCell/CellNumeric.js +80 -0
- package/es/HiCell/CellPinToAction.js +53 -0
- package/es/HiCell/CellRate.js +142 -0
- package/es/HiCell/CellSentinel.js +140 -0
- package/es/HiCell/CellText.js +198 -0
- package/es/HiCell/index.js +8 -0
- package/es/HiCheckbox/HiCheckbox.js +2 -2
- package/es/HiDatePicker/Caption.js +0 -1
- package/es/HiDatePicker/HiDatePicker.js +1 -1
- package/es/HiDatePicker/HiDateRangePicker.js +661 -0
- package/es/HiDatePicker/HiDateRangeSelector.js +432 -0
- package/es/HiDatePicker/ListPicker.js +0 -1
- package/es/HiDatePicker/ListPicker.spec.js +1 -2
- package/es/HiDatePicker/NavBar.js +2 -2
- package/es/HiDatePicker/NavBar.spec.js +4 -5
- package/es/HiDatePicker/Overlays/CustomOverlayLayout.js +0 -1
- package/es/HiDatePicker/Overlays/MonthPickerOverlay.js +0 -1
- package/es/HiDatePicker/Overlays/MonthPickerOverlay.spec.js +0 -1
- package/es/HiDatePicker/Overlays/Overlay.js +0 -1
- package/es/HiDatePicker/Overlays/Overlay.spec.js +0 -3
- package/es/HiDatePicker/Overlays/TimePickerOverlay.js +0 -1
- package/es/HiDatePicker/Overlays/TimePickerOverlay.spec.js +0 -1
- package/es/HiDatePicker/Overlays/YearPickerOverlay.js +0 -1
- package/es/HiDatePicker/Overlays/YearPickerOverlay.spec.js +0 -1
- package/es/HiDatePicker/Overlays/index.js +0 -1
- package/es/HiDatePicker/Weekday.js +0 -1
- package/es/HiDatePicker/stylesheet.js +7 -3
- package/es/HiForm/HiFormControl.js +22 -3
- package/es/HiForm/HiInput.js +2 -2
- package/es/HiSelect/HiSelect.js +1 -1
- package/es/HiSelect/HiSuggestSelect.js +8 -8
- package/es/HiSelectableList/HiSelectableList.js +3 -1
- package/es/HiSelectableList/HiSelectableListItem.js +14 -11
- package/es/index.js +2 -1
- package/es/styles/createPalette.js +2 -1
- package/es/utils/helpers.js +117 -0
- package/index.es.js +3 -2
- package/index.js +1 -1
- package/package.json +1 -1
- package/styles/createPalette.js +1 -1
- package/umd/hipay-material-ui.development.js +39 -14
- package/umd/hipay-material-ui.production.min.js +2 -2
- package/utils/helpers.js +134 -0
package/HiForm/HiFormControl.js
CHANGED
@@ -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
|
-
}),
|
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
package/HiSelect/HiSelect.js
CHANGED
@@ -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
|
-
})),
|
239
|
+
})), _react.default.createElement(_Popper.default, {
|
240
240
|
disablePortal: true,
|
241
241
|
anchorEl: this.textInput,
|
242
242
|
placement: "bottom-start",
|
243
|
-
|
244
|
-
|
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
|
-
|
256
|
+
hideCheckbox: true,
|
257
257
|
onSelect: this.handleSelect,
|
258
258
|
translations: translations,
|
259
259
|
onKeyDown: this.handleKeyDown
|
@@ -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:
|
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: '
|
158
|
+
margin: '1px 4px 3px 4px',
|
156
159
|
verticalAlign: 'middle'
|
157
160
|
},
|
158
161
|
icon: {
|
159
|
-
margin: '0
|
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:
|
350
|
+
paddingLeft: 4,
|
348
351
|
pinned: false,
|
349
352
|
secondaryInline: true,
|
350
353
|
selected: false,
|
package/es/HiAppBar/HiAppBar.js
CHANGED
@@ -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);
|