@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.
- 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);
|