@hipay/hipay-material-ui 2.0.0-beta.66 → 2.0.0-beta.69

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGELOG.md +151 -0
  2. package/HiAlertModal/HiAlertModal.js +32 -32
  3. package/HiAppBar/HiAppBar.js +3 -3
  4. package/HiBreadcrumb/HiBreadcrumb.js +5 -4
  5. package/HiBreadcrumb/HiStepConnector.js +3 -3
  6. package/HiCell/CellText.js +3 -3
  7. package/HiCheckbox/HiCheckbox.js +3 -3
  8. package/HiChip/HiChipSwitch.js +5 -5
  9. package/HiDatePicker/HiDatePicker.js +17 -17
  10. package/HiDatePicker/Overlays/MonthPickerOverlay.js +3 -3
  11. package/HiDatePicker/Overlays/TimePickerOverlay.js +4 -4
  12. package/HiDatePicker/Overlays/YearPickerOverlay.js +3 -3
  13. package/HiDotsStepper/HiDotsStepper.js +4 -4
  14. package/HiExpansionPanel/HiExpansionPanel.js +56 -13
  15. package/HiForm/HiAddressField.js +7 -7
  16. package/HiForm/HiEmailField.js +3 -3
  17. package/HiForm/HiFormControl.js +6 -6
  18. package/HiForm/HiInput.js +20 -14
  19. package/HiForm/HiPasswordField.js +3 -3
  20. package/HiForm/HiSearchField.js +5 -5
  21. package/HiForm/HiTextField.js +5 -5
  22. package/HiForm/HiUpload.js +2 -2
  23. package/HiMap/HiMap.js +6 -6
  24. package/HiMap/HiMapExpand.js +4 -4
  25. package/HiNotice/HiKPI.js +3 -3
  26. package/HiSelect/HiDynamicSelect.js +7 -7
  27. package/HiSelect/HiNestedSelect.js +12 -12
  28. package/HiSelect/HiNestedSelectContent.js +9 -9
  29. package/HiSelect/HiSelect.js +63 -42
  30. package/HiSelect/HiSelectContent.js +13 -13
  31. package/HiSelect/HiSelectInput.js +7 -7
  32. package/HiSelect/HiSuggestSelect.js +6 -6
  33. package/HiSelectableList/HiSelectableList.js +50 -2
  34. package/HiSelectableList/HiSelectableListItem.js +4 -4
  35. package/HiTable/HiTable.js +3 -3
  36. package/HiTable/HiTableRow.js +5 -5
  37. package/README.md +1 -1
  38. package/es/HiAlertModal/HiAlertModal.js +28 -29
  39. package/es/HiBreadcrumb/HiBreadcrumb.js +5 -4
  40. package/es/HiExpansionPanel/HiExpansionPanel.js +56 -14
  41. package/es/HiForm/HiInput.js +9 -3
  42. package/es/HiForm/HiUpload.js +2 -2
  43. package/es/HiSelect/HiSelect.js +28 -10
  44. package/es/HiSelectableList/HiSelectableList.js +45 -2
  45. package/es/HiTable/HiTableRow.js +2 -2
  46. package/index.es.js +1 -1
  47. package/index.js +1 -1
  48. package/package.json +3 -2
  49. package/umd/hipay-material-ui.development.js +4150 -12454
  50. package/umd/hipay-material-ui.production.min.js +2 -2
@@ -11,23 +11,24 @@ import DialogTitle from '@material-ui/core/DialogTitle';
11
11
  import { withStyles } from '../styles';
12
12
  import HiButton from '../HiButton';
13
13
  import HiIcon from '../HiIcon';
14
+ import { escapeHTML } from '../utils/helpers';
14
15
  export const styles = theme => ({
15
16
  classContent: {
16
17
  fontSize: 14,
17
- lineHeight: '20px',
18
+ lineHeight: '24px',
18
19
  color: '#484848',
19
20
  position: 'relative'
20
21
  },
21
22
  classDialogPaper: {
22
- minHeight: 280,
23
+ minHeight: 248,
23
24
  maxWidth: 280,
24
25
  borderRadius: 2
25
26
  },
26
27
  classCancelButton: {
27
- float: 'right'
28
+ margin: '0'
28
29
  },
29
30
  classSubmitButton: {
30
- margin: '0'
31
+ float: 'right'
31
32
  },
32
33
  classTitle: {
33
34
  fontSize: 20,
@@ -60,18 +61,6 @@ class HiAlertModal extends React.PureComponent {
60
61
  constructor(props) {
61
62
  super(props);
62
63
 
63
- this.handleClickCancel = () => {
64
- if (this.props.onCancelClick) {
65
- this.props.onCancelClick();
66
- }
67
- };
68
-
69
- this.handleClickSubmit = () => {
70
- if (this.props.onSubmitClick) {
71
- this.props.onSubmitClick();
72
- }
73
- };
74
-
75
64
  this.handleOnClose = () => {
76
65
  if (this.props.onClose) {
77
66
  this.props.onClose();
@@ -79,9 +68,7 @@ class HiAlertModal extends React.PureComponent {
79
68
  };
80
69
 
81
70
  this.handleOnClose = this.handleOnClose.bind(this);
82
- this.handleClickCancel = this.handleClickCancel.bind(this);
83
- this.handleClickSubmit = this.handleClickSubmit.bind(this);
84
- } // Appelé au clic du bouton d'annulation
71
+ } // Appelé si clic en dehors de la pop up
85
72
 
86
73
 
87
74
  // Render
@@ -103,6 +90,17 @@ class HiAlertModal extends React.PureComponent {
103
90
  } = _this$props,
104
91
  props = _objectWithoutProperties(_this$props, ["backgroundIcon", "iconSize", "classes", "content", "labelCancelButton", "labelSubmitButton", "onCancelClick", "onSubmitClick", "open", "cancelColor", "submitColor", "title"]);
105
92
 
93
+ let dialogContent = content;
94
+
95
+ if (typeof content === 'string') {
96
+ dialogContent = React.createElement("span", {
97
+ // eslint-disable-next-line react/no-danger
98
+ dangerouslySetInnerHTML: {
99
+ __html: escapeHTML(content)
100
+ }
101
+ });
102
+ }
103
+
106
104
  return React.createElement(Dialog, _extends({
107
105
  open: open,
108
106
  onClose: this.handleOnClose,
@@ -124,28 +122,29 @@ class HiAlertModal extends React.PureComponent {
124
122
  classes: {
125
123
  root: classes.classContent
126
124
  }
127
- }, content)), React.createElement(DialogActions, {
125
+ }, dialogContent)), React.createElement(DialogActions, {
128
126
  classes: {
129
127
  root: classes.classAction
130
128
  }
131
- }, labelSubmitButton && React.createElement(HiButton, {
132
- classes: {
133
- root: classes.classSubmitButton
134
- },
135
- onClick: this.handleClickSubmit,
136
- color: submitColor
137
- }, labelSubmitButton), labelCancelButton && React.createElement(HiButton, {
129
+ }, labelCancelButton && React.createElement(HiButton, {
138
130
  classes: {
139
131
  root: classes.classCancelButton
140
132
  },
141
- onClick: this.handleClickCancel,
133
+ onClick: onCancelClick,
142
134
  color: cancelColor
143
- }, labelCancelButton)));
135
+ }, labelCancelButton), labelSubmitButton && React.createElement(HiButton, {
136
+ classes: {
137
+ root: classes.classSubmitButton
138
+ },
139
+ onClick: onSubmitClick,
140
+ color: submitColor
141
+ }, labelSubmitButton)));
144
142
  }
145
143
 
146
144
  }
147
145
 
148
146
  HiAlertModal.defaultProps = {
147
+ content: '',
149
148
  cancelColor: 'neutral',
150
149
  submitColor: 'primary'
151
150
  };
@@ -28,16 +28,17 @@ class HiBreadcrumb extends React.PureComponent {
28
28
  }, React.createElement("div", null, steps.map((step, index) => {
29
29
  const validConnector = step.status === 'validated' && index < steps.length - 1 && (steps[index + 1].status === 'validated' || steps[index + 1].status === 'active');
30
30
  return React.createElement(HiStep, {
31
- index: index,
31
+ index: step.id,
32
32
  content: step.content,
33
33
  key: step.id,
34
- onClick: this.handleStep(index),
34
+ onClick: this.handleStep(step.id),
35
35
  isLast: index === steps.length - 1,
36
36
  validConnector: validConnector,
37
37
  type: type,
38
- steps: steps
38
+ steps: steps,
39
+ active: activeStep === step.id
39
40
  }, React.createElement(HiStepLabel, {
40
- active: activeStep === index,
41
+ active: activeStep === step.id,
41
42
  status: step.status,
42
43
  notificationNumber: step.notificationNumber,
43
44
  type: type,
@@ -7,33 +7,54 @@ import PropTypes from 'prop-types';
7
7
  import ExpansionPanel from '@material-ui/core/ExpansionPanel';
8
8
  import ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';
9
9
  import ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';
10
- import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
10
+ import HiIcon from './../HiIcon';
11
11
  import withStyles from '../styles/withStyles';
12
+ import classNames from 'classnames';
12
13
  export const styles = theme => ({
13
14
  summaryContent: {
14
15
  display: 'inline-block',
15
- border: 'none'
16
+ border: 'none',
17
+ '&$expanded': {
18
+ margin: 'initial'
19
+ }
16
20
  },
17
21
  summaryRoot: {
18
22
  borderBottom: '1px solid #E3E6E7',
19
23
  height: 48,
20
- minHeight: 48
24
+ minHeight: 48,
25
+ padding: '0 0 0 8px',
26
+ '&$expanded': {
27
+ minHeight: 48
28
+ }
29
+ },
30
+ expanded: {},
31
+ collapseDisable: {
32
+ cursor: 'default',
33
+ pointerEvents: 'none'
21
34
  },
22
35
  heading: _objectSpread({}, theme.typography.b1, {
36
+ height: 48,
37
+ display: 'flex',
38
+ alignItems: 'center',
23
39
  fontSize: 20,
24
40
  lineHeight: '24px',
25
41
  fontWeight: theme.typography.fontWeightLight
26
42
  }),
27
43
  secondaryHeading: _objectSpread({}, theme.typography.b3, {
28
44
  color: theme.palette.neutral.light,
45
+ height: 48,
46
+ display: 'flex',
47
+ alignItems: 'center',
29
48
  fontSize: 11,
30
49
  lineHeight: '24px',
31
50
  float: 'right',
32
- marginRight: 40,
51
+ marginRight: 32,
33
52
  '&>svg': {
34
53
  fontSize: 18,
35
- marginLeft: 3,
36
- marginBottom: -5
54
+ marginLeft: 3
55
+ },
56
+ "&>button": {
57
+ marginRight: -12
37
58
  }
38
59
  }),
39
60
  panel: {
@@ -41,15 +62,23 @@ export const styles = theme => ({
41
62
  border: 'none'
42
63
  },
43
64
  panelDetails: {
44
- padding: '8px 24px'
65
+ padding: 0
45
66
  },
46
67
  disabledPanel: {
47
68
  backgroundColor: '#ffffff',
48
69
  opacity: 1
70
+ },
71
+ expandIcon: {
72
+ width: 24,
73
+ height: 24,
74
+ right: 0
49
75
  }
50
76
  });
51
77
 
52
- var _ref = React.createElement(ExpandMoreIcon, null);
78
+ var _ref = React.createElement(HiIcon, {
79
+ icon: "mdi_menu_up",
80
+ size: 24
81
+ });
53
82
 
54
83
  class HiExpansionPanel extends React.PureComponent {
55
84
  render() {
@@ -60,10 +89,12 @@ class HiExpansionPanel extends React.PureComponent {
60
89
  secondaryHeading,
61
90
  secondaryHeadingDisabled,
62
91
  secondaryHeadingIcon,
92
+ collapseDisable,
63
93
  children,
64
- classes
94
+ classes,
95
+ expanded
65
96
  } = _this$props,
66
- props = _objectWithoutProperties(_this$props, ["disabled", "heading", "secondaryHeading", "secondaryHeadingDisabled", "secondaryHeadingIcon", "children", "classes"]);
97
+ props = _objectWithoutProperties(_this$props, ["disabled", "heading", "secondaryHeading", "secondaryHeadingDisabled", "secondaryHeadingIcon", "collapseDisable", "children", "classes", "expanded"]);
67
98
 
68
99
  const effectiveDisabled = disabled || !children;
69
100
  return React.createElement(ExpansionPanel, _extends({
@@ -71,13 +102,19 @@ class HiExpansionPanel extends React.PureComponent {
71
102
  classes: {
72
103
  root: classes.panel,
73
104
  disabled: classes.disabledPanel
74
- }
105
+ },
106
+ expanded: collapseDisable || expanded
75
107
  }, props), React.createElement(ExpansionPanelSummary, {
76
108
  classes: {
77
109
  root: classes.summaryRoot,
78
- content: classes.summaryContent
110
+ content: classes.summaryContent,
111
+ expanded: classes.expanded,
112
+ expandIcon: classes.expandIcon
79
113
  },
80
- expandIcon: _ref
114
+ className: classNames({
115
+ [classes.collapseDisable]: collapseDisable
116
+ }),
117
+ expandIcon: !collapseDisable && _ref
81
118
  }, React.createElement("div", {
82
119
  className: classes.secondaryHeading
83
120
  }, !effectiveDisabled ? secondaryHeading : secondaryHeadingDisabled, secondaryHeadingIcon), React.createElement("div", {
@@ -129,7 +166,12 @@ HiExpansionPanel.propTypes = process.env.NODE_ENV !== "production" ? {
129
166
  /**
130
167
  * Icone dans le titre secondaire du panel
131
168
  */
132
- secondaryHeadingIcon: PropTypes.any
169
+ secondaryHeadingIcon: PropTypes.any,
170
+
171
+ /**
172
+ * Désactive l'action d'ouverture et de fermeture du composant
173
+ */
174
+ collapseDisable: PropTypes.bool
133
175
  } : {};
134
176
  export default withStyles(styles, {
135
177
  hiComponent: true,
@@ -292,7 +292,8 @@ class HiInput extends React.PureComponent {
292
292
  inputClassName,
293
293
  onReset,
294
294
  spellcheck,
295
- startAdornmentColor
295
+ startAdornmentColor,
296
+ inputProps
296
297
  } = this.props;
297
298
  const {
298
299
  focused
@@ -385,13 +386,13 @@ class HiInput extends React.PureComponent {
385
386
  this.endAdornmentNode = el;
386
387
  }
387
388
  }, eraseIcon, endAdornment),
388
- inputProps: {
389
+ inputProps: _objectSpread({
389
390
  spellCheck: spellcheck ? "true" : "false",
390
391
  className: classNames(inputClassName, classes.inputPropsClassName, {
391
392
  [classes.inputText]: !multiline,
392
393
  [classes.inputTextArea]: multiline
393
394
  })
394
- }
395
+ }, inputProps)
395
396
  }));
396
397
  }
397
398
 
@@ -465,6 +466,11 @@ HiInput.propTypes = process.env.NODE_ENV !== "production" ? {
465
466
  */
466
467
  inputId: PropTypes.string,
467
468
 
469
+ /**
470
+ * Passe des props directement à l'input
471
+ */
472
+ inputProps: PropTypes.object,
473
+
468
474
  /**
469
475
  * Passe une ref callback au composant input
470
476
  */
@@ -361,9 +361,9 @@ HiUpload.propTypes = process.env.NODE_ENV !== "production" ? {
361
361
  helperText: PropTypes.string,
362
362
 
363
363
  /**
364
- * id du composant
364
+ * Identifiant unique
365
365
  */
366
- id: PropTypes.string.isRequired,
366
+ id: PropTypes.string,
367
367
 
368
368
  /**
369
369
  * Array containing each of the inputs the component has to show (represented by an object).
@@ -210,9 +210,11 @@ class HiSelect extends React.PureComponent {
210
210
  // Sinon focus sur l'élément sélectionné
211
211
  this.focusOnSelectedItem(this.props.value);
212
212
  } else {
213
- setTimeout(() => {
214
- this.searchField.focus();
215
- }, 1);
213
+ if (this.searchField) {
214
+ setTimeout(() => {
215
+ this.searchField.focus();
216
+ }, 1);
217
+ }
216
218
  }
217
219
  }
218
220
  };
@@ -289,7 +291,7 @@ class HiSelect extends React.PureComponent {
289
291
  this.handleClose();
290
292
  }
291
293
  }
292
- } else if (key === 'space') {
294
+ } else if (key === 'space' && event.target !== this.searchField) {
293
295
  event.preventDefault();
294
296
 
295
297
  if (this.state.open) {
@@ -430,6 +432,12 @@ class HiSelect extends React.PureComponent {
430
432
  this.getInputElement = this.getInputElement.bind(this);
431
433
  }
432
434
 
435
+ componentDidMount() {
436
+ if (this.props.autoFocus) {
437
+ this.inputEl.focus();
438
+ }
439
+ }
440
+
433
441
  static getDerivedStateFromProps(nextProps, prevState) {
434
442
  if (nextProps.options !== prevState.suggestions) {
435
443
  return _objectSpread({}, prevState, {
@@ -449,10 +457,18 @@ class HiSelect extends React.PureComponent {
449
457
  */
450
458
 
451
459
 
452
- componentDidMount() {
453
- if (this.props.autoFocus) {
454
- this.inputEl.focus();
455
- }
460
+ getLengthItemList(itemList) {
461
+ let itemListLength = 0;
462
+ itemList.forEach(parent => {
463
+ if (parent.displayed && itemListLength < 10) {
464
+ itemListLength += 1;
465
+
466
+ if (parent.children && itemListLength < 10) {
467
+ itemListLength += this.getLengthItemList(parent.children);
468
+ }
469
+ }
470
+ });
471
+ return itemListLength;
456
472
  }
457
473
 
458
474
  render() {
@@ -542,8 +558,10 @@ class HiSelect extends React.PureComponent {
542
558
 
543
559
 
544
560
  if (this.placement && this.placement.indexOf('top') >= 0 && !!searchable) {
545
- // +1 for search input
546
- const nbItems = itemList.length <= 10 ? itemList.length + 1 : 11;
561
+ // In case we have a nested list
562
+ const itemListLength = this.getLengthItemList(itemList); // +1 for search input
563
+
564
+ const nbItems = itemListLength <= 10 ? itemListLength + 1 : 11;
547
565
  popperStyle.transform = `translate3d(-1px, -${nbItems * 40 + 2}px, 0px)`;
548
566
  } else if (this.placement && this.placement.indexOf('top') < 0 && !!searchable) {
549
567
  popperStyle.transform = 'translate3d(-1px, 40px, 0px)';
@@ -7,6 +7,7 @@ import withStyles from '../styles/withStyles';
7
7
  import HiSelectableListItem from './HiSelectableListItem';
8
8
  import { getNextItemSelectable, foldAccents } from '../utils/helpers';
9
9
  import keycode from 'keycode';
10
+ import LazyLoad, { forceCheck } from 'react-lazyload';
10
11
  export const styles = () => ({
11
12
  root: {
12
13
  padding: 0
@@ -52,18 +53,35 @@ class HiSelectableList extends React.PureComponent {
52
53
  hideCheckbox,
53
54
  hoverIcon,
54
55
  icon,
56
+ lazy,
55
57
  selectedItemIdList,
56
58
  sort,
57
59
  onKeyDown,
58
60
  onKeyUp
59
61
  } = _this$props,
60
- others = _objectWithoutProperties(_this$props, ["checkedIcon", "disabled", "disabledItemIdList", "hideCheckbox", "hoverIcon", "icon", "selectedItemIdList", "sort", "onKeyDown", "onKeyUp"]);
62
+ others = _objectWithoutProperties(_this$props, ["checkedIcon", "disabled", "disabledItemIdList", "hideCheckbox", "hoverIcon", "icon", "lazy", "selectedItemIdList", "sort", "onKeyDown", "onKeyUp"]);
61
63
 
62
64
  if (sort && item.children) {
63
65
  item.children.sort(this.compareItem);
64
66
  }
65
67
 
66
- return React.createElement(React.Fragment, {
68
+ const placeholderContent = React.createElement("div", {
69
+ style: {
70
+ width: '90%',
71
+ padding: '8px 6px',
72
+ height: 40,
73
+ position: 'sticky',
74
+ left: 0
75
+ }
76
+ }, React.createElement("div", {
77
+ style: {
78
+ backgroundColor: '#F5F5F5',
79
+ width: '100%',
80
+ height: '100%',
81
+ borderRadius: 4
82
+ }
83
+ }));
84
+ const itemComponent = React.createElement(React.Fragment, {
67
85
  key: item.id
68
86
  }, React.createElement(HiSelectableListItem, _extends({}, others, {
69
87
  checkedIcon: checkedIcon,
@@ -79,6 +97,19 @@ class HiSelectableList extends React.PureComponent {
79
97
  ,
80
98
  item: item
81
99
  }, item)), item.children && item.children.length > 0 && item.children.filter(subItem => !(subItem.displayed === false)).map(subItem => this.buildRecursiveListItem(subItem, level + 1)));
100
+
101
+ if (lazy) {
102
+ return React.createElement(LazyLoad, {
103
+ key: item.id,
104
+ height: 40,
105
+ offset: 400,
106
+ once: true,
107
+ overflow: true,
108
+ placeholder: placeholderContent
109
+ }, itemComponent);
110
+ }
111
+
112
+ return itemComponent;
82
113
  };
83
114
 
84
115
  this.compareItem = (a, b) => {
@@ -133,6 +164,12 @@ class HiSelectableList extends React.PureComponent {
133
164
  }
134
165
  }
135
166
 
167
+ componentDidUpdate(prevProps) {
168
+ if (this.props.lazy && prevProps.itemList !== this.props.itemList) {
169
+ forceCheck();
170
+ }
171
+ }
172
+
136
173
  render() {
137
174
  const {
138
175
  classes,
@@ -161,6 +198,7 @@ HiSelectableList.defaultProps = {
161
198
  disabled: false,
162
199
  disabledItemIdList: [],
163
200
  hideCheckbox: false,
201
+ lazy: true,
164
202
  selectedItemIdList: [],
165
203
  sort: false,
166
204
  sortAppendList: ['_all']
@@ -216,6 +254,11 @@ HiSelectableList.propTypes = process.env.NODE_ENV !== "production" ? {
216
254
  */
217
255
  itemList: PropTypes.array.isRequired,
218
256
 
257
+ /**
258
+ * Active lazyloading on list items
259
+ */
260
+ lazy: PropTypes.bool,
261
+
219
262
  /**
220
263
  * Fonction de callback à la sélection d'un item, renvoie l'item sélectionné
221
264
  *
@@ -19,7 +19,7 @@ export const styles = theme => ({
19
19
  backgroundColor: `${theme.palette.action.hover} !important`
20
20
  }
21
21
  },
22
- clicableRow: {
22
+ clickableRow: {
23
23
  cursor: 'pointer'
24
24
  }
25
25
  });
@@ -47,7 +47,7 @@ class HiTableRow extends React.PureComponent {
47
47
  } = this.props;
48
48
  return React.createElement(TableRow, {
49
49
  className: classNames(classes.row, {
50
- [classes.clicableRow]: this.props.onClick
50
+ [classes.clickableRow]: this.props.onClick
51
51
  }),
52
52
  hover: true,
53
53
  onClick: event => this.handleClick(event, rowdata),
package/index.es.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license HiPay-Material-UI v2.0.0-beta.65
1
+ /** @license HiPay-Material-UI v2.0.0-beta.69
2
2
  *
3
3
  * This source code is licensed under the MIT license found in the
4
4
  * LICENSE file in the root directory of this source tree.
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license HiPay-Material-UI v2.0.0-beta.65
1
+ /** @license HiPay-Material-UI v2.0.0-beta.69
2
2
  *
3
3
  * This source code is licensed under the MIT license found in the
4
4
  * LICENSE file in the root directory of this source tree.
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@hipay/hipay-material-ui",
3
3
  "private": false,
4
4
  "author": "HiPay PSYCHE Team",
5
- "version": "2.0.0-beta.66",
5
+ "version": "2.0.0-beta.69",
6
6
  "description": "React components that implement Google's Material Design.",
7
7
  "keywords": [
8
8
  "react",
@@ -58,6 +58,7 @@
58
58
  "react-day-picker": "^7.2.4",
59
59
  "react-event-listener": "^0.6.2",
60
60
  "react-jss": "^8.1.0",
61
+ "react-lazyload": "^2.5.0",
61
62
  "react-leaflet": "^2.1.0",
62
63
  "react-pdf": "^3.0.5",
63
64
  "react-spinners": "^0.4.5",
@@ -73,4 +74,4 @@
73
74
  },
74
75
  "main": "./index.js",
75
76
  "module": "./index.es.js"
76
- }
77
+ }