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

Sign up to get free protection for your applications and to get access to all the features.
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
+ }