@hipay/hipay-material-ui 2.0.0-beta.55 → 2.0.0-beta.57
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +116 -0
- package/HiBreadcrumb/HiBreadcrumb.js +14 -4
- package/HiBreadcrumb/HiStep.js +4 -1
- package/HiBreadcrumb/HiStepContent.js +0 -1
- package/HiBreadcrumb/HiStepLabel.js +12 -4
- package/HiBreadcrumb/HiStepper.js +1 -1
- package/HiButton/HiButton.js +7 -1
- package/HiCell/CellIcon.js +4 -4
- package/HiCell/CellImage.js +13 -1
- package/HiCell/CellRate.js +6 -3
- package/HiCell/CellSentinel.js +7 -10
- package/HiCell/CellTextStyled.js +29 -1
- package/HiColoredLabel/HiColoredLabel.js +1 -1
- package/HiDatePicker/Caption.js +16 -10
- package/HiDatePicker/HiDatePicker.js +9 -3
- package/HiDatePicker/HiDateRangePicker.js +36 -22
- package/HiDatePicker/HiDateRangeSelector.js +75 -21
- package/HiDatePicker/NavBar.js +8 -1
- package/HiDatePicker/Overlays/CustomOverlayLayout.js +26 -17
- package/HiDatePicker/Overlays/CustomOverlayLayoutWithoutFooter.js +123 -0
- package/HiDatePicker/Overlays/MonthPickerOverlay.js +4 -4
- package/HiDatePicker/Overlays/MonthPickerOverlay.spec.js +1 -0
- package/HiDatePicker/Overlays/Overlay.js +15 -8
- package/HiDatePicker/Overlays/Overlay.spec.js +1 -0
- package/HiDatePicker/Overlays/TimePickerOverlay.js +2 -2
- package/HiDatePicker/Overlays/TimePickerOverlay.spec.js +1 -0
- package/HiDatePicker/Overlays/YearPickerOverlay.js +4 -6
- package/HiDatePicker/Overlays/YearPickerOverlay.spec.js +1 -0
- package/HiDatePicker/hiLocaleUtils.js +144 -0
- package/HiDatePicker/stylesheet.js +33 -7
- package/HiDotsStepper/HiDot.js +108 -0
- package/HiDotsStepper/HiDotsStepper.js +121 -0
- package/HiExpansionPanel/HiExpansionPanel.js +1 -1
- package/HiForm/HiAddressField.js +176 -0
- package/HiForm/HiFormControl.js +2 -0
- package/HiForm/HiInput.js +3 -3
- package/HiForm/HiSlider.js +352 -0
- package/HiForm/HiUpload.js +204 -0
- package/HiForm/HiUploadField.js +182 -0
- package/HiForm/HiUploadInput.js +459 -0
- package/HiForm/index.js +16 -0
- package/HiMap/HiMap.js +345 -0
- package/HiMap/HiMapExpand.js +210 -0
- package/HiMap/index.js +23 -0
- package/HiNotice/HiKPI.js +238 -0
- package/HiNotice/HiKPINotice.js +96 -0
- package/HiNotice/index.js +23 -0
- package/HiPdfReader/HiPdfReader.js +269 -0
- package/HiPdfReader/index.js +15 -0
- package/HiPin/HiPin.js +1 -1
- package/HiRadio/HiRadio.js +74 -0
- package/HiRadio/index.js +15 -0
- package/HiSelect/HiSelect.js +73 -84
- package/HiSelect/HiSuggestSelect.js +35 -4
- package/HiSelect/SelectInput.js +9 -1
- package/HiSelectNew/HiNestedSelectContent.js +5 -1
- package/HiSelectNew/HiSelect.js +260 -179
- package/HiSelectNew/HiSelectContent.js +0 -8
- package/HiSelectNew/HiSelectInput.js +8 -9
- package/HiSelectableList/HiSelectableList.js +39 -4
- package/HiSelectableList/HiSelectableListItem.js +81 -38
- package/HiTable/HiCellBuilder.js +25 -12
- package/HiTable/HiTableHeader.js +16 -17
- package/HiTable/constants.js +3 -1
- package/README.md +248 -98
- package/es/HiBreadcrumb/HiBreadcrumb.js +14 -4
- package/es/HiBreadcrumb/HiStep.js +4 -1
- package/es/HiBreadcrumb/HiStepContent.js +0 -1
- package/es/HiBreadcrumb/HiStepLabel.js +13 -4
- package/es/HiBreadcrumb/HiStepper.js +1 -1
- package/es/HiButton/HiButton.js +7 -0
- package/es/HiCell/CellIcon.js +5 -5
- package/es/HiCell/CellImage.js +13 -1
- package/es/HiCell/CellRate.js +6 -3
- package/es/HiCell/CellSentinel.js +7 -10
- package/es/HiCell/CellTextStyled.js +28 -1
- package/es/HiColoredLabel/HiColoredLabel.js +1 -1
- package/es/HiDatePicker/Caption.js +14 -10
- package/es/HiDatePicker/HiDatePicker.js +8 -3
- package/es/HiDatePicker/HiDateRangePicker.js +40 -28
- package/es/HiDatePicker/HiDateRangeSelector.js +69 -21
- package/es/HiDatePicker/ListPicker.js +1 -1
- package/es/HiDatePicker/NavBar.js +7 -1
- package/es/HiDatePicker/Overlays/CustomOverlayLayout.js +30 -19
- package/es/HiDatePicker/Overlays/CustomOverlayLayoutWithoutFooter.js +106 -0
- package/es/HiDatePicker/Overlays/MonthPickerOverlay.js +5 -5
- package/es/HiDatePicker/Overlays/MonthPickerOverlay.spec.js +1 -0
- package/es/HiDatePicker/Overlays/Overlay.js +16 -9
- package/es/HiDatePicker/Overlays/Overlay.spec.js +1 -0
- package/es/HiDatePicker/Overlays/TimePickerOverlay.js +2 -2
- package/es/HiDatePicker/Overlays/TimePickerOverlay.spec.js +1 -0
- package/es/HiDatePicker/Overlays/YearPickerOverlay.js +4 -6
- package/es/HiDatePicker/Overlays/YearPickerOverlay.spec.js +1 -0
- package/es/HiDatePicker/hiLocaleUtils.js +131 -0
- package/es/HiDatePicker/stylesheet.js +32 -7
- package/es/HiDotsStepper/HiDot.js +66 -0
- package/es/HiDotsStepper/HiDotsStepper.js +73 -0
- package/es/HiExpansionPanel/HiExpansionPanel.js +1 -1
- package/es/HiForm/HiAddressField.js +134 -0
- package/es/HiForm/HiFormControl.js +2 -0
- package/es/HiForm/HiInput.js +3 -3
- package/es/HiForm/HiSlider.js +302 -0
- package/es/HiForm/HiUpload.js +158 -0
- package/es/HiForm/HiUploadField.js +140 -0
- package/es/HiForm/HiUploadInput.js +411 -0
- package/es/HiForm/index.js +2 -0
- package/es/HiMap/HiMap.js +290 -0
- package/es/HiMap/HiMapExpand.js +162 -0
- package/es/HiMap/index.js +2 -0
- package/es/HiNotice/HiKPI.js +196 -0
- package/es/HiNotice/HiKPINotice.js +78 -0
- package/es/HiNotice/index.js +2 -0
- package/es/HiPdfReader/HiPdfReader.js +214 -0
- package/es/HiPdfReader/index.js +1 -0
- package/es/HiPin/HiPin.js +1 -1
- package/es/HiRadio/HiRadio.js +55 -0
- package/es/HiRadio/index.js +1 -0
- package/es/HiSelect/HiSelect.js +68 -78
- package/es/HiSelect/HiSuggestSelect.js +30 -4
- package/es/HiSelect/SelectInput.js +9 -1
- package/es/HiSelectNew/HiNestedSelectContent.js +5 -1
- package/es/HiSelectNew/HiSelect.js +246 -162
- package/es/HiSelectNew/HiSelectContent.js +0 -7
- package/es/HiSelectNew/HiSelectInput.js +8 -9
- package/es/HiSelectableList/HiSelectableList.js +34 -6
- package/es/HiSelectableList/HiSelectableListItem.js +92 -40
- package/es/HiTable/HiCellBuilder.js +130 -123
- package/es/HiTable/HiTableHeader.js +14 -12
- package/es/HiTable/constants.js +1 -0
- package/es/index.js +9 -1
- package/es/utils/helpers.js +1 -1
- package/index.es.js +9 -1
- package/index.js +66 -2
- package/package.json +5 -2
- package/umd/hipay-material-ui.development.js +44450 -40930
- package/umd/hipay-material-ui.production.min.js +2 -2
- package/utils/helpers.js +1 -1
@@ -0,0 +1,290 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import PropTypes from 'prop-types';
|
3
|
+
import { withStyles } from '../styles';
|
4
|
+
import HiButton from '../HiButton';
|
5
|
+
import HiIcon from '../HiIcon';
|
6
|
+
import HiLoader from '../HiLoader';
|
7
|
+
const apiUrl = 'https://nominatim.openstreetmap.org/search?q='; // The original CSS can be found here : https://unpkg.com/leaflet@1.3.1/dist/leaflet.css
|
8
|
+
|
9
|
+
export const styles = theme => ({
|
10
|
+
map: {
|
11
|
+
height: '100%',
|
12
|
+
overflow: 'hidden',
|
13
|
+
// eslint-disable-next-line max-len
|
14
|
+
'& .leaflet-pane, & .leaflet-tile, & .leaflet-marker-icon, & .leaflet-marker-shadow, & .leaflet-tile-container, & .leaflet-pane > svg, & .leaflet-pane > canvas, & .leaflet-zoom-box, & .leaflet-image-layer, & .leaflet-layer': {
|
15
|
+
position: 'absolute',
|
16
|
+
left: 0,
|
17
|
+
top: 0
|
18
|
+
},
|
19
|
+
'& .leaflet-container': {
|
20
|
+
overflow: 'hidden',
|
21
|
+
height: '100%'
|
22
|
+
},
|
23
|
+
'& .leaflet-tile, & .leaflet-marker-icon, & .leaflet-marker-shadow': {
|
24
|
+
'-webkit-user-select': 'none',
|
25
|
+
'-moz-user-select': 'none',
|
26
|
+
userSelect: 'none',
|
27
|
+
'-webkit-user-drag': 'none'
|
28
|
+
},
|
29
|
+
'& .leaflet-control': {
|
30
|
+
display: 'none'
|
31
|
+
},
|
32
|
+
'& .map_marker': {
|
33
|
+
fill: theme.palette.primary.light
|
34
|
+
}
|
35
|
+
},
|
36
|
+
controlButtons: {
|
37
|
+
position: 'absolute',
|
38
|
+
bottom: 16,
|
39
|
+
right: 16
|
40
|
+
},
|
41
|
+
centerIcon: {
|
42
|
+
fontSize: 14
|
43
|
+
},
|
44
|
+
centerButtonContainer: {
|
45
|
+
backgroundColor: theme.palette.global.background1,
|
46
|
+
borderRadius: 3,
|
47
|
+
padding: 3,
|
48
|
+
fontFamily: theme.typography.fontFamily,
|
49
|
+
boxShadow: '1px 1px 5px rgba(0, 0, 0, .16)',
|
50
|
+
color: theme.palette.neutral.normal,
|
51
|
+
'&>button:first-child': {
|
52
|
+
borderBottom: `1px solid ${theme.palette.neutral.normal}`
|
53
|
+
}
|
54
|
+
},
|
55
|
+
centerButton: {
|
56
|
+
color: theme.palette.neutral.normal,
|
57
|
+
padding: '1px !important',
|
58
|
+
height: 26,
|
59
|
+
minHeight: 26,
|
60
|
+
width: 26,
|
61
|
+
minWidth: 26
|
62
|
+
},
|
63
|
+
zoomButtons: {
|
64
|
+
backgroundColor: theme.palette.global.background1,
|
65
|
+
borderRadius: 3,
|
66
|
+
padding: 3,
|
67
|
+
fontFamily: theme.typography.fontFamily,
|
68
|
+
boxShadow: '1px 1px 5px rgba(0, 0, 0, .16)',
|
69
|
+
color: theme.palette.neutral.normal,
|
70
|
+
'&>button:first-child': {
|
71
|
+
borderBottom: `1px solid ${theme.palette.neutral.normal}`
|
72
|
+
}
|
73
|
+
},
|
74
|
+
zoomButton: {
|
75
|
+
paddingTop: '0px !important',
|
76
|
+
paddingBottom: 0,
|
77
|
+
paddingRight: 6,
|
78
|
+
paddingLeft: 6,
|
79
|
+
minWidth: 0,
|
80
|
+
minHeight: 0,
|
81
|
+
borderRadius: 0,
|
82
|
+
display: 'block',
|
83
|
+
fontSize: 24,
|
84
|
+
fontWeight: 'bold',
|
85
|
+
lineHeight: '26px',
|
86
|
+
'&>span': {
|
87
|
+
width: 14
|
88
|
+
}
|
89
|
+
}
|
90
|
+
});
|
91
|
+
let L;
|
92
|
+
let Map;
|
93
|
+
let TileLayer;
|
94
|
+
let Marker;
|
95
|
+
|
96
|
+
var _ref = React.createElement(TileLayer, {
|
97
|
+
url: "http://{s}.tile.openstreetmap.se/hydda/full/{z}/{x}/{y}.png"
|
98
|
+
});
|
99
|
+
|
100
|
+
var _ref2 = React.createElement(HiLoader, {
|
101
|
+
loading: true
|
102
|
+
});
|
103
|
+
|
104
|
+
class HiMap extends React.PureComponent {
|
105
|
+
constructor(props) {
|
106
|
+
super(props);
|
107
|
+
this.mounted = false;
|
108
|
+
this.state = {
|
109
|
+
lat: 0,
|
110
|
+
lng: 0,
|
111
|
+
notFound: false,
|
112
|
+
loaded: false,
|
113
|
+
zoom: 16
|
114
|
+
};
|
115
|
+
this.handleClickZoomIn = this.handleClickZoomIn.bind(this);
|
116
|
+
this.handleScrollZoom = this.handleScrollZoom.bind(this);
|
117
|
+
this.handleClickZoomOut = this.handleClickZoomOut.bind(this);
|
118
|
+
this.handleCenter = this.handleCenter.bind(this);
|
119
|
+
} // Loads the libraries once the component mounted to avoid error caused by server-cli rendering.
|
120
|
+
|
121
|
+
|
122
|
+
componentDidMount() {
|
123
|
+
this.mounted = true;
|
124
|
+
this.findCoords();
|
125
|
+
/* eslint-disable */
|
126
|
+
|
127
|
+
L = require('leaflet');
|
128
|
+
Map = require('react-leaflet').Map;
|
129
|
+
Marker = require('react-leaflet').Marker;
|
130
|
+
TileLayer = require('react-leaflet').TileLayer;
|
131
|
+
/* eslint-enable */
|
132
|
+
}
|
133
|
+
|
134
|
+
componentWillUnmount() {
|
135
|
+
this.mounted = false;
|
136
|
+
}
|
137
|
+
|
138
|
+
handleScrollZoom(event) {
|
139
|
+
this.setState({
|
140
|
+
zoom: event.zoom
|
141
|
+
});
|
142
|
+
}
|
143
|
+
|
144
|
+
handleClickZoomIn() {
|
145
|
+
this.setState(prevState => {
|
146
|
+
return {
|
147
|
+
zoom: prevState.zoom + 1
|
148
|
+
};
|
149
|
+
});
|
150
|
+
}
|
151
|
+
|
152
|
+
handleClickZoomOut() {
|
153
|
+
this.setState(prevState => {
|
154
|
+
return {
|
155
|
+
zoom: prevState.zoom - 1
|
156
|
+
};
|
157
|
+
});
|
158
|
+
}
|
159
|
+
|
160
|
+
handleCenter() {
|
161
|
+
// trick to center the map.
|
162
|
+
this.setState(prevState => {
|
163
|
+
return {
|
164
|
+
lat: prevState.lat + 0.0000000001
|
165
|
+
};
|
166
|
+
});
|
167
|
+
} // Call to the geocoding API.
|
168
|
+
|
169
|
+
|
170
|
+
findCoords() {
|
171
|
+
fetch(`${apiUrl}${this.props.address}&format=jsonv2&limit=5&bounded=1&dedupe=1&namedetails=1`).then(result => result.json()).then(response => {
|
172
|
+
if (this.mounted) {
|
173
|
+
if (response.length !== 0) {
|
174
|
+
this.setState({
|
175
|
+
lat: parseFloat(response[0].lat),
|
176
|
+
lng: parseFloat(response[0].lon),
|
177
|
+
notFound: false,
|
178
|
+
loaded: true
|
179
|
+
});
|
180
|
+
} else {
|
181
|
+
this.setState({
|
182
|
+
notFound: true
|
183
|
+
});
|
184
|
+
this.props.onAddressNotFound();
|
185
|
+
}
|
186
|
+
}
|
187
|
+
});
|
188
|
+
}
|
189
|
+
|
190
|
+
render() {
|
191
|
+
const {
|
192
|
+
zoom,
|
193
|
+
lng,
|
194
|
+
lat,
|
195
|
+
notFound,
|
196
|
+
loaded
|
197
|
+
} = this.state;
|
198
|
+
const {
|
199
|
+
translations,
|
200
|
+
classes
|
201
|
+
} = this.props;
|
202
|
+
const position = [lat, lng];
|
203
|
+
let element;
|
204
|
+
let myIcon;
|
205
|
+
if (notFound) element = translations.notFound;
|
206
|
+
|
207
|
+
if (loaded) {
|
208
|
+
myIcon = L.divIcon({
|
209
|
+
html: '<svg x="0px" y="0px" viewBox="0 0 365 560" enable-background="new 0 0 365 560" xml:space="preserve">\n' + '<path class="map_marker" ' + 'd="M182.9,551.7c0,0.1,0.2,0.3,0.2,0.3S358.3,283,358.3,194.6c0-130.1-88.8-186.7-175.4-186.9 ' + 'C96.3,7.9,7.5,64.5,7.5,194.6c0,88.4,175.3,357.4,175.3,357.4S182.9,551.7,182.9,551.7z' + ' M122.2,187.2c0-33.6,27.2-60.8,60.8-60.8 ' + 'c33.6,0,60.8,27.2,60.8,60.8S216.5,248,182.9,248C149.4,248,122.2,220.8,122.2,187.2z"/>\n' + '</svg>',
|
210
|
+
iconSize: [24, 36],
|
211
|
+
iconAnchor: [11, 36]
|
212
|
+
});
|
213
|
+
element = React.createElement(Map, {
|
214
|
+
zoom: zoom,
|
215
|
+
center: position,
|
216
|
+
className: classes.map,
|
217
|
+
onViewportChange: this.handleScrollZoom
|
218
|
+
}, _ref, React.createElement(Marker, {
|
219
|
+
position: position,
|
220
|
+
icon: myIcon
|
221
|
+
}), React.createElement("div", {
|
222
|
+
className: classes.controlButtons
|
223
|
+
}, React.createElement("div", {
|
224
|
+
className: classes.centerButtonContainer
|
225
|
+
}, React.createElement(HiButton, {
|
226
|
+
className: classes.centerButton,
|
227
|
+
onClick: this.handleCenter
|
228
|
+
}, React.createElement(HiIcon, {
|
229
|
+
className: classes.centerIcon,
|
230
|
+
icon: 'my_location',
|
231
|
+
size: 24
|
232
|
+
}))), React.createElement("div", {
|
233
|
+
className: classes.zoomButtons
|
234
|
+
}, React.createElement(HiButton, {
|
235
|
+
onClick: this.handleClickZoomIn,
|
236
|
+
className: classes.zoomButton
|
237
|
+
}, "+"), React.createElement(HiButton, {
|
238
|
+
onClick: this.handleClickZoomOut,
|
239
|
+
className: classes.zoomButton
|
240
|
+
}, "-"))));
|
241
|
+
} else {
|
242
|
+
element = React.createElement("div", {
|
243
|
+
style: {
|
244
|
+
top: '50%',
|
245
|
+
left: '50%',
|
246
|
+
position: 'absolute'
|
247
|
+
}
|
248
|
+
}, _ref2);
|
249
|
+
}
|
250
|
+
|
251
|
+
return React.createElement("div", {
|
252
|
+
style: {
|
253
|
+
height: '352px',
|
254
|
+
width: '100%',
|
255
|
+
position: 'relative'
|
256
|
+
}
|
257
|
+
}, element);
|
258
|
+
}
|
259
|
+
|
260
|
+
}
|
261
|
+
|
262
|
+
HiMap.defaultProps = {
|
263
|
+
translations: {
|
264
|
+
notFound: 'Address not found'
|
265
|
+
}
|
266
|
+
};
|
267
|
+
HiMap.propTypes = process.env.NODE_ENV !== "production" ? {
|
268
|
+
/**
|
269
|
+
* The address to see in the Map component.
|
270
|
+
*/
|
271
|
+
address: PropTypes.string.isRequired,
|
272
|
+
|
273
|
+
/**
|
274
|
+
* Useful to extend the style applied to components.
|
275
|
+
*/
|
276
|
+
classes: PropTypes.object.isRequired,
|
277
|
+
|
278
|
+
/**
|
279
|
+
* Function to tell the parent composant that the address was not found by the API.
|
280
|
+
*/
|
281
|
+
onAddressNotFound: PropTypes.func,
|
282
|
+
|
283
|
+
/**
|
284
|
+
* Traductions
|
285
|
+
*/
|
286
|
+
translations: PropTypes.object
|
287
|
+
} : {};
|
288
|
+
export default withStyles(styles, {
|
289
|
+
name: 'HmuiHiMap'
|
290
|
+
})(HiMap);
|
@@ -0,0 +1,162 @@
|
|
1
|
+
import _objectSpread from "@babel/runtime/helpers/objectSpread";
|
2
|
+
import React from 'react';
|
3
|
+
import PropTypes from 'prop-types';
|
4
|
+
import classNames from 'classnames';
|
5
|
+
import ExpansionPanel from '@material-ui/core/ExpansionPanel';
|
6
|
+
import ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';
|
7
|
+
import ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';
|
8
|
+
import { withStyles } from '../styles';
|
9
|
+
import HiMap from './HiMap';
|
10
|
+
import HiIcon from '../HiIcon/HiIcon';
|
11
|
+
|
12
|
+
const styles = theme => ({
|
13
|
+
column: {
|
14
|
+
flexBasis: '33.33%'
|
15
|
+
},
|
16
|
+
root: {
|
17
|
+
flexGrow: 1,
|
18
|
+
boxShadow: 'none'
|
19
|
+
},
|
20
|
+
imgListItem: {
|
21
|
+
width: 24,
|
22
|
+
height: 'auto',
|
23
|
+
marginRight: 8,
|
24
|
+
verticalAlign: 'middle'
|
25
|
+
},
|
26
|
+
expandMoreIcon: {},
|
27
|
+
disabledIcon: {
|
28
|
+
color: theme.palette.action.disabled
|
29
|
+
},
|
30
|
+
panelSummaryExpanded: {
|
31
|
+
minHeight: 0
|
32
|
+
},
|
33
|
+
panelSummary: {
|
34
|
+
'&>div:first-child': {
|
35
|
+
margin: '12px 0'
|
36
|
+
}
|
37
|
+
},
|
38
|
+
expanded: {
|
39
|
+
'& $expandMoreIcon': {
|
40
|
+
transform: 'translateY(-50%) rotate(0) !important',
|
41
|
+
color: theme.palette.primary.light
|
42
|
+
},
|
43
|
+
minHeight: '0 !important'
|
44
|
+
},
|
45
|
+
heading: _objectSpread({}, theme.typography.b1, {
|
46
|
+
margin: 0,
|
47
|
+
fontSize: 15,
|
48
|
+
lineHeight: '24px'
|
49
|
+
}),
|
50
|
+
secondaryHeading: _objectSpread({}, theme.typography.b3, {
|
51
|
+
margin: 0,
|
52
|
+
fontSize: 15,
|
53
|
+
lineHeight: '24px',
|
54
|
+
float: 'left',
|
55
|
+
'&>svg': {
|
56
|
+
fontSize: 18,
|
57
|
+
marginLeft: 3,
|
58
|
+
marginBottom: -5
|
59
|
+
}
|
60
|
+
})
|
61
|
+
});
|
62
|
+
|
63
|
+
class HiMapExpand extends React.PureComponent {
|
64
|
+
constructor(props) {
|
65
|
+
super(props);
|
66
|
+
this.state = {
|
67
|
+
addressNotFound: false,
|
68
|
+
expanded: false
|
69
|
+
};
|
70
|
+
this.handleAddressNotFound = this.handleAddressNotFound.bind(this);
|
71
|
+
this.handleExpand = this.handleExpand.bind(this);
|
72
|
+
}
|
73
|
+
|
74
|
+
handleExpand() {
|
75
|
+
this.setState(prevState => ({
|
76
|
+
expanded: !prevState.addressNotFound && !prevState.expanded
|
77
|
+
}));
|
78
|
+
}
|
79
|
+
|
80
|
+
handleAddressNotFound() {
|
81
|
+
this.setState({
|
82
|
+
addressNotFound: true
|
83
|
+
});
|
84
|
+
}
|
85
|
+
|
86
|
+
render() {
|
87
|
+
const {
|
88
|
+
classes,
|
89
|
+
address,
|
90
|
+
countryFlagPath
|
91
|
+
} = this.props;
|
92
|
+
const {
|
93
|
+
addressNotFound,
|
94
|
+
expanded
|
95
|
+
} = this.state;
|
96
|
+
const flag = countryFlagPath ? React.createElement("img", {
|
97
|
+
src: countryFlagPath,
|
98
|
+
className: classes.imgListItem,
|
99
|
+
alt: 'country flag'
|
100
|
+
}) : '';
|
101
|
+
return React.createElement(ExpansionPanel, {
|
102
|
+
className: classes.root,
|
103
|
+
defaultExpanded: false,
|
104
|
+
expanded: expanded,
|
105
|
+
onChange: this.handleExpand
|
106
|
+
}, React.createElement(ExpansionPanelSummary, {
|
107
|
+
classes: {
|
108
|
+
root: classes.panelSummary,
|
109
|
+
expanded: classes.expanded,
|
110
|
+
expandIcon: classes.expandMoreIcon
|
111
|
+
},
|
112
|
+
expandIcon: React.createElement(HiIcon, {
|
113
|
+
icon: 'place',
|
114
|
+
style: {
|
115
|
+
position: 'relative',
|
116
|
+
top: 2,
|
117
|
+
marginRight: 5
|
118
|
+
},
|
119
|
+
className: classNames({
|
120
|
+
[classes.disabledIcon]: addressNotFound
|
121
|
+
})
|
122
|
+
})
|
123
|
+
}, React.createElement("div", {
|
124
|
+
className: classes.column
|
125
|
+
}, React.createElement("p", {
|
126
|
+
className: classes.secondaryHeading
|
127
|
+
}, "Adresse")), React.createElement("div", null, React.createElement("p", {
|
128
|
+
className: classes.heading
|
129
|
+
}, flag, address))), React.createElement(ExpansionPanelDetails, {
|
130
|
+
style: {
|
131
|
+
padding: 0
|
132
|
+
}
|
133
|
+
}, React.createElement(HiMap, {
|
134
|
+
address: address,
|
135
|
+
onAddressNotFound: this.handleAddressNotFound
|
136
|
+
})));
|
137
|
+
}
|
138
|
+
|
139
|
+
}
|
140
|
+
|
141
|
+
HiMapExpand.defaultProps = {
|
142
|
+
countryFlagPath: ''
|
143
|
+
};
|
144
|
+
HiMapExpand.propTypes = process.env.NODE_ENV !== "production" ? {
|
145
|
+
/**
|
146
|
+
* The address to see in the Map component.
|
147
|
+
*/
|
148
|
+
address: PropTypes.string.isRequired,
|
149
|
+
|
150
|
+
/**
|
151
|
+
* Useful to extend the style applied to components.
|
152
|
+
*/
|
153
|
+
classes: PropTypes.object.isRequired,
|
154
|
+
|
155
|
+
/**
|
156
|
+
* The path to the country flag image.
|
157
|
+
*/
|
158
|
+
countryFlagPath: PropTypes.string
|
159
|
+
} : {};
|
160
|
+
export default withStyles(styles, {
|
161
|
+
name: 'HmuiHiMapExpand'
|
162
|
+
})(HiMapExpand);
|
@@ -0,0 +1,196 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import PropTypes from 'prop-types';
|
3
|
+
import classNames from 'classnames';
|
4
|
+
import { withStyles } from '../styles';
|
5
|
+
import ButtonBase from '@material-ui/core/ButtonBase';
|
6
|
+
export const styles = theme => ({
|
7
|
+
root: {
|
8
|
+
background: theme.palette.background3,
|
9
|
+
height: 104,
|
10
|
+
width: 136,
|
11
|
+
padding: '0px 8px',
|
12
|
+
margin: 8,
|
13
|
+
display: 'flex',
|
14
|
+
textAlign: 'center',
|
15
|
+
flexDirection: 'column',
|
16
|
+
alignItems: 'center',
|
17
|
+
fontFamily: theme.typography.fontFamily
|
18
|
+
},
|
19
|
+
error: {
|
20
|
+
boxShadow: '0px 2px 4px 0px rgba(213, 0, 0, 0.24)',
|
21
|
+
'&:hover': {
|
22
|
+
boxShadow: '0px 3px 5px 0px rgba(213, 0, 0, 0.32)'
|
23
|
+
}
|
24
|
+
},
|
25
|
+
warning: {
|
26
|
+
boxShadow: '0px 2px 4px 0px rgba(249, 148, 8, 0.32)',
|
27
|
+
'&:hover': {
|
28
|
+
boxShadow: '0px 3px 5px 0px rgba(249, 148, 8, 0.40)'
|
29
|
+
}
|
30
|
+
},
|
31
|
+
inherit: {
|
32
|
+
boxShadow: '0px 1px 3px 0px rgba(0, 0, 0, 0.16)',
|
33
|
+
'&:hover': {
|
34
|
+
boxShadow: '0px 3px 5px 0px rgba(0, 0, 0, 0.24)'
|
35
|
+
}
|
36
|
+
},
|
37
|
+
positive: {
|
38
|
+
boxShadow: '0px 1px 3px 0px rgba(0, 175, 1, 0.36)',
|
39
|
+
'&:hover': {
|
40
|
+
boxShadow: '0px 3px 5px 0px rgba(0, 175, 1, 0.44)'
|
41
|
+
}
|
42
|
+
},
|
43
|
+
active: {
|
44
|
+
background: theme.palette.background2,
|
45
|
+
boxShadow: 'none'
|
46
|
+
},
|
47
|
+
body: {
|
48
|
+
height: '100%',
|
49
|
+
margin: 0,
|
50
|
+
display: 'inline-grid',
|
51
|
+
alignItems: 'center',
|
52
|
+
fontSize: 20,
|
53
|
+
fontWeight: theme.typography.fontWeightLight
|
54
|
+
},
|
55
|
+
title: {
|
56
|
+
height: '100%',
|
57
|
+
maxHeight: 16,
|
58
|
+
maxWidth: '100%',
|
59
|
+
margin: '7px 0px',
|
60
|
+
whiteSpace: 'nowrap',
|
61
|
+
overflow: 'hidden',
|
62
|
+
fontSize: 14,
|
63
|
+
fontWeight: theme.typography.fontWeightLight
|
64
|
+
},
|
65
|
+
subtitle: {
|
66
|
+
height: '100%',
|
67
|
+
maxHeight: 28,
|
68
|
+
margin: '2px 0px',
|
69
|
+
maxWidth: '100%',
|
70
|
+
color: theme.palette.neutral.main,
|
71
|
+
fontSize: 11,
|
72
|
+
lineHeight: '13px',
|
73
|
+
fontWeight: theme.typography.fontWeightMedium
|
74
|
+
},
|
75
|
+
minify: {
|
76
|
+
height: 72
|
77
|
+
}
|
78
|
+
});
|
79
|
+
|
80
|
+
class HiKPI extends React.Component {
|
81
|
+
constructor(props) {
|
82
|
+
super(props);
|
83
|
+
|
84
|
+
this.handleClick = id => () => {
|
85
|
+
this.props.onClick(id);
|
86
|
+
};
|
87
|
+
|
88
|
+
this.handleClick = this.handleClick.bind(this);
|
89
|
+
}
|
90
|
+
|
91
|
+
render() {
|
92
|
+
const {
|
93
|
+
classes,
|
94
|
+
minify,
|
95
|
+
bodyMinify,
|
96
|
+
active,
|
97
|
+
title,
|
98
|
+
body,
|
99
|
+
subtitle,
|
100
|
+
color,
|
101
|
+
id,
|
102
|
+
tooltip,
|
103
|
+
disable
|
104
|
+
} = this.props;
|
105
|
+
const rootclass = classNames(classes.root, {
|
106
|
+
[classes.inherit]: color === 'inherit' && !disable,
|
107
|
+
[classes.warning]: color === 'warning' && !disable,
|
108
|
+
[classes.error]: color === 'error' && !disable,
|
109
|
+
[classes.positive]: color === 'positive' && !disable,
|
110
|
+
[classes.active]: active,
|
111
|
+
[classes.minify]: minify
|
112
|
+
});
|
113
|
+
return React.createElement(ButtonBase, {
|
114
|
+
className: rootclass,
|
115
|
+
onClick: !disable ? this.handleClick(id) : undefined,
|
116
|
+
title: tooltip
|
117
|
+
}, title && React.createElement("h3", {
|
118
|
+
className: classes.title
|
119
|
+
}, title), React.createElement("div", {
|
120
|
+
className: classes.body
|
121
|
+
}, minify && bodyMinify ? bodyMinify : body), subtitle && minify === false && React.createElement("div", {
|
122
|
+
className: classes.subtitle
|
123
|
+
}, subtitle));
|
124
|
+
}
|
125
|
+
|
126
|
+
}
|
127
|
+
|
128
|
+
HiKPI.defaultProps = {
|
129
|
+
active: false,
|
130
|
+
minify: false
|
131
|
+
};
|
132
|
+
HiKPI.propTypes = process.env.NODE_ENV !== "production" ? {
|
133
|
+
/**
|
134
|
+
* Extension du style appliqué au composant
|
135
|
+
*/
|
136
|
+
active: PropTypes.bool,
|
137
|
+
|
138
|
+
/**
|
139
|
+
* Corps du KPI
|
140
|
+
*/
|
141
|
+
body: PropTypes.any.isRequired,
|
142
|
+
|
143
|
+
/**
|
144
|
+
* Version minifiée du composant
|
145
|
+
*/
|
146
|
+
bodyMinify: PropTypes.any,
|
147
|
+
|
148
|
+
/**
|
149
|
+
* Fonction appelée au clic sur le KPI
|
150
|
+
*/
|
151
|
+
classes: PropTypes.object,
|
152
|
+
|
153
|
+
/**
|
154
|
+
* KPI est-il actif ?
|
155
|
+
*/
|
156
|
+
color: PropTypes.oneOf(['inherit', 'warning', 'error', 'positive']),
|
157
|
+
|
158
|
+
/**
|
159
|
+
* Titre du KPI
|
160
|
+
*/
|
161
|
+
disable: PropTypes.bool,
|
162
|
+
|
163
|
+
/**
|
164
|
+
* KPI id
|
165
|
+
*/
|
166
|
+
id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
|
167
|
+
|
168
|
+
/**
|
169
|
+
* Corps minifié du KPI si nécessaire
|
170
|
+
*/
|
171
|
+
minify: PropTypes.bool,
|
172
|
+
|
173
|
+
/**
|
174
|
+
* Sous-titre du KPI
|
175
|
+
*/
|
176
|
+
onClick: PropTypes.func,
|
177
|
+
|
178
|
+
/**
|
179
|
+
* Type du KPI (ancré ou normal : ancré permet action de clic)
|
180
|
+
*/
|
181
|
+
subtitle: PropTypes.any,
|
182
|
+
|
183
|
+
/**
|
184
|
+
* Couleur de l'ombre du KPI
|
185
|
+
*/
|
186
|
+
title: PropTypes.string,
|
187
|
+
|
188
|
+
/**
|
189
|
+
* Contenu du tooltip (facultatif)
|
190
|
+
*/
|
191
|
+
tooltip: PropTypes.any
|
192
|
+
} : {};
|
193
|
+
export default withStyles(styles, {
|
194
|
+
hiComponent: true,
|
195
|
+
name: 'HmuiHiKPI'
|
196
|
+
})(HiKPI);
|