@hipay/hipay-material-ui 2.0.0-beta.56 → 2.0.0-beta.58

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. package/CHANGELOG.md +117 -0
  2. package/HiAlertModal/HiAlertModal.js +56 -13
  3. package/HiColoredLabel/HiColoredLabel.js +1 -1
  4. package/HiDatePicker/Caption.js +8 -1
  5. package/HiDatePicker/HiDatePicker.js +9 -3
  6. package/HiDatePicker/HiDateRangePicker.js +9 -3
  7. package/HiDatePicker/HiDateRangeSelector.js +54 -4
  8. package/HiDatePicker/NavBar.js +8 -1
  9. package/HiDatePicker/Overlays/CustomOverlayLayoutWithoutFooter.js +123 -0
  10. package/HiDatePicker/Overlays/MonthPickerOverlay.js +4 -4
  11. package/HiDatePicker/Overlays/YearPickerOverlay.js +2 -2
  12. package/HiDatePicker/hiLocaleUtils.js +144 -0
  13. package/HiDatePicker/stylesheet.js +31 -6
  14. package/HiForm/HiFormControl.js +4 -4
  15. package/HiForm/HiInput.js +19 -7
  16. package/HiForm/HiUploadField.js +2 -1
  17. package/HiNotice/HiKPI.js +3 -3
  18. package/HiNotice/HiKPINotice.js +12 -9
  19. package/HiPin/HiPin.js +1 -1
  20. package/HiSelect/HiSelect.js +6 -5
  21. package/HiSelect/HiSuggestSelect.js +21 -2
  22. package/HiSelect/SelectInput.js +5 -1
  23. package/HiSelectNew/HiSelect.js +163 -59
  24. package/HiSelectNew/HiSelectInput.js +8 -1
  25. package/HiSelectableList/HiSelectableList.js +4 -30
  26. package/HiSelectableList/HiSelectableListItem.js +19 -12
  27. package/README.md +9 -10
  28. package/es/HiAlertModal/HiAlertModal.js +55 -13
  29. package/es/HiColoredLabel/HiColoredLabel.js +1 -1
  30. package/es/HiDatePicker/Caption.js +7 -1
  31. package/es/HiDatePicker/HiDatePicker.js +8 -3
  32. package/es/HiDatePicker/HiDateRangePicker.js +8 -3
  33. package/es/HiDatePicker/HiDateRangeSelector.js +48 -4
  34. package/es/HiDatePicker/NavBar.js +7 -1
  35. package/es/HiDatePicker/Overlays/CustomOverlayLayoutWithoutFooter.js +106 -0
  36. package/es/HiDatePicker/Overlays/MonthPickerOverlay.js +4 -4
  37. package/es/HiDatePicker/Overlays/YearPickerOverlay.js +2 -2
  38. package/es/HiDatePicker/hiLocaleUtils.js +131 -0
  39. package/es/HiDatePicker/stylesheet.js +30 -6
  40. package/es/HiForm/HiFormControl.js +4 -4
  41. package/es/HiForm/HiInput.js +19 -7
  42. package/es/HiForm/HiUploadField.js +2 -1
  43. package/es/HiNotice/HiKPI.js +3 -3
  44. package/es/HiNotice/HiKPINotice.js +10 -9
  45. package/es/HiPin/HiPin.js +1 -1
  46. package/es/HiSelect/HiSelect.js +6 -5
  47. package/es/HiSelect/HiSuggestSelect.js +21 -2
  48. package/es/HiSelect/SelectInput.js +5 -1
  49. package/es/HiSelectNew/HiSelect.js +166 -56
  50. package/es/HiSelectNew/HiSelectInput.js +7 -1
  51. package/es/HiSelectableList/HiSelectableList.js +5 -25
  52. package/es/HiSelectableList/HiSelectableListItem.js +23 -16
  53. package/es/index.js +2 -1
  54. package/index.es.js +2 -1
  55. package/index.js +10 -2
  56. package/package.json +1 -1
  57. package/umd/hipay-material-ui.development.js +6207 -1359
  58. package/umd/hipay-material-ui.production.min.js +2 -2
@@ -37,8 +37,6 @@ var _Paper = _interopRequireDefault(require("@material-ui/core/Paper"));
37
37
 
38
38
  var _Popper = _interopRequireDefault(require("@material-ui/core/Popper"));
39
39
 
40
- var _reactDom = require("react-dom");
41
-
42
40
  var _ClickAwayListener = _interopRequireDefault(require("@material-ui/core/ClickAwayListener"));
43
41
 
44
42
  var _HiSelectableList = _interopRequireDefault(require("../HiSelectableList"));
@@ -106,7 +104,10 @@ var styles = function styles(theme) {
106
104
  }, theme.typography.b1, {
107
105
  display: 'inline-flex',
108
106
  width: '100%'
109
- })
107
+ }),
108
+ separator: {
109
+ borderTop: "1px solid ".concat(theme.palette.input.bottomLine)
110
+ }
110
111
  };
111
112
  };
112
113
  /**
@@ -203,7 +204,14 @@ function (_React$PureComponent) {
203
204
  }, _react.default.createElement("img", {
204
205
  className: classes.labelImg,
205
206
  src: item.img,
206
- alt: item.label
207
+ alt: item.label,
208
+ onError: function onError(e) {
209
+ if (item.fallbackImage) {
210
+ e.target.src = "".concat(item.fallbackImage);
211
+ } else {
212
+ e.target.style.display = 'none';
213
+ }
214
+ }
207
215
  }), item.label);
208
216
  } else {
209
217
  inputValue = item.label;
@@ -214,11 +222,13 @@ function (_React$PureComponent) {
214
222
  };
215
223
 
216
224
  _this.focusOnFirstItem = function () {
217
- var overlay = (0, _reactDom.findDOMNode)(_this.overlay);
218
- setTimeout(function () {
219
- var item = overlay.getElementsByTagName('li')[0];
220
- item.focus();
221
- }, 1);
225
+ if (_this.overlay && _this.overlay.getElementsByTagName('li')[0]) {
226
+ setTimeout(function () {
227
+ var item = _this.overlay.getElementsByTagName('li')[0];
228
+
229
+ item.focus();
230
+ }, 1);
231
+ }
222
232
  };
223
233
 
224
234
  _this.getInputElement = function (el) {
@@ -257,15 +267,14 @@ function (_React$PureComponent) {
257
267
  };
258
268
 
259
269
  _this.focusOnSelectedItem = function (selectedValue) {
260
- var overlay = (0, _reactDom.findDOMNode)(_this.overlay);
261
270
  setTimeout(function () {
262
271
  // On initialise au premier élément pour être sûr de ne pas se retrouver avec un focus of undefined
263
- var item = overlay.getElementsByTagName('li')[0];
272
+ var item = _this.overlay.getElementsByTagName('li')[0];
264
273
 
265
274
  if (selectedValue && typeof selectedValue === 'string') {
266
- item = overlay.getElementsByTagName('li')[selectedValue];
275
+ item = _this.overlay.getElementsByTagName('li')[selectedValue];
267
276
  } else if (selectedValue && typeof selectedValue === 'number') {
268
- item = overlay.getElementsByTagName('li')[selectedValue - 1];
277
+ item = _this.overlay.getElementsByTagName('li')[selectedValue - 1];
269
278
  }
270
279
 
271
280
  if (item) {
@@ -303,6 +312,18 @@ function (_React$PureComponent) {
303
312
  });
304
313
  };
305
314
 
315
+ _this.handleKeyDownInput = function (event) {
316
+ var key = (0, _keycode.default)(event);
317
+
318
+ if (key === 'down' || key === 'up') {
319
+ _this.handleClick();
320
+ } else if (key === 'enter' && _this.props.onSubmit) {
321
+ event.preventDefault();
322
+
323
+ _this.props.onSubmit(event);
324
+ }
325
+ };
326
+
306
327
  _this.handleKeyDown = function (event) {
307
328
  var nextItem;
308
329
  var key = (0, _keycode.default)(event);
@@ -317,23 +338,73 @@ function (_React$PureComponent) {
317
338
  _this.setState({
318
339
  open: false
319
340
  });
320
- } else if (key === 'space' || key === 'enter' && !_this.props.multiple) {
341
+ } else if (key === 'space') {
342
+ // Cancel scroll
321
343
  event.preventDefault();
344
+ }
345
+
346
+ if (nextItem) {
347
+ nextItem.focus();
348
+ }
349
+ };
350
+
351
+ _this.getItemById = function (id) {
352
+ var item;
353
+
354
+ if (_this.props.hasAll && String(id) === '_all') {
355
+ return {
356
+ id: '_all'
357
+ };
358
+ }
359
+
360
+ for (var i = 0; i < _this.props.options.length; i += 1) {
361
+ var elem = _this.props.options[i];
362
+
363
+ if (String(elem.id) === String(id)) {
364
+ item = elem;
365
+ break;
366
+ }
367
+
368
+ if (elem.children) {
369
+ for (var j = 0; j < elem.children.length; j += 1) {
370
+ if (String(elem.children[j].id) === String(id)) {
371
+ item = elem.children[j];
372
+ break;
373
+ }
374
+ }
375
+ }
376
+ }
377
+
378
+ return item;
379
+ };
380
+
381
+ _this.handleKeyUp = function (event) {
382
+ var key = (0, _keycode.default)(event);
322
383
 
323
- var item = _this.props.options.find(function (elem) {
324
- return String(elem.id) === event.target.id;
384
+ if (key === 'esc') {
385
+ _this.setState({
386
+ open: false
325
387
  });
388
+ } else if (key === 'space' || key === 'enter' && !_this.props.multiple) {
389
+ event.preventDefault();
390
+
391
+ var item = _this.getItemById(event.target.id);
326
392
 
327
- _this.handleSelect(null, item);
393
+ if (item) {
394
+ // Select for nested select
395
+ if (_this.props.hiSelectableListProps && _this.props.hiSelectableListProps.onSelect) {
396
+ _this.props.hiSelectableListProps.onSelect(null, item);
397
+ } else {
398
+ _this.handleSelect(null, item);
399
+ }
400
+ } else {
401
+ console.warn("Can not find item #".concat(event.target.id));
402
+ }
328
403
  } else if (key === 'enter' && _this.props.multiple) {
329
404
  event.preventDefault();
330
405
 
331
406
  _this.handleClose();
332
407
  }
333
-
334
- if (nextItem) {
335
- nextItem.focus();
336
- }
337
408
  };
338
409
 
339
410
  _this.handleKeyDownSearch = function (event) {
@@ -345,6 +416,10 @@ function (_React$PureComponent) {
345
416
  event.preventDefault();
346
417
 
347
418
  _this.handleClose();
419
+ } else if (key === 'tab') {
420
+ _this.setState({
421
+ open: false
422
+ });
348
423
  }
349
424
  };
350
425
 
@@ -444,7 +519,8 @@ function (_React$PureComponent) {
444
519
  open: false,
445
520
  focused: false,
446
521
  searchValue: props.searchValue ? undefined : '',
447
- suggestions: props.options
522
+ suggestions: props.options,
523
+ openDown: true
448
524
  };
449
525
  _this.handleClick = _this.handleClick.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
450
526
  _this.handleClose = _this.handleClose.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
@@ -525,43 +601,70 @@ function (_React$PureComponent) {
525
601
 
526
602
  var popperClass = (0, _classnames.default)(classes.popper, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.popperWidth, !this.props.containerWidth), (0, _defineProperty2.default)(_classNames, classes.popperRightAlign, this.props.containerWidth && this.props.align === 'right'), _classNames));
527
603
 
528
- var content = _react.default.createElement(_ClickAwayListener.default, {
529
- onClickAway: this.handleClickAway
530
- }, _react.default.createElement(_Grow.default, {
531
- in: open,
532
- id: "menu-list",
533
- style: {
534
- transformOrigin: '0 0 0'
604
+ var searchInput = function searchInput(position) {
605
+ if (searchable) {
606
+ return _react.default.createElement(_HiInput.default, (0, _extends2.default)({
607
+ value: searchValue,
608
+ autoFocus: true,
609
+ inputRef: _this2.getInputElement,
610
+ onKeyDown: _this2.handleKeyDownSearch,
611
+ onChange: _this2.handleSearch,
612
+ onReset: _this2.handleSearchReset,
613
+ placeholder: translations.search,
614
+ startAdornment: 'search',
615
+ tabIndex: 0,
616
+ className: (0, _classnames.default)((0, _defineProperty2.default)({}, classes.separator, position === 'top'))
617
+ }, hiSearchInputProps));
535
618
  }
536
- }, _react.default.createElement(_Paper.default, {
537
- className: classes.paper
538
- }, !!searchable && _react.default.createElement(_HiInput.default, (0, _extends2.default)({
539
- value: searchValue,
540
- autoFocus: true,
541
- inputRef: this.getInputElement,
542
- onKeyDown: this.handleKeyDownSearch,
543
- onChange: this.handleSearch,
544
- onReset: this.handleSearchReset,
545
- placeholder: translations.search,
546
- startAdornment: 'search',
547
- tabIndex: 0
548
- }, hiSearchInputProps)), startAdornment, _react.default.createElement(_reactCustomScrollbars.default, (0, _extends2.default)({
549
- ref: function ref(contentEl) {
550
- _this2.optionsContent = contentEl;
551
- },
552
- autoHeight: true,
553
- autoHeightMax: 400 // TODO ?
554
-
555
- }, onScrollReachBottom && {
556
- onScroll: this.handleScroll
557
- }), _react.default.createElement(_HiSelectableList.default, (0, _extends2.default)({
558
- type: type,
559
- itemList: itemList,
560
- onKeyDown: this.handleKeyDown,
561
- onSelect: this.handleSelect,
562
- selectedItemIdList: selectedItemIdList,
563
- fallbackImage: this.props.fallbackImage
564
- }, hiSelectableListProps))))));
619
+
620
+ return null;
621
+ }; // Replace popper onSearch when popper displayed on top of selectButton
622
+
623
+
624
+ if (this.placement && this.placement.indexOf('top') >= 0 && !!searchable) {
625
+ // +1 for search input
626
+ var nbItems = itemList.length <= 10 ? itemList.length + 1 : 11;
627
+ popperStyle.transform = "translate3d(-1px, -".concat(nbItems * 40 + 2, "px, 0px)");
628
+ } else if (this.placement && this.placement.indexOf('top') < 0 && !!searchable) {
629
+ popperStyle.transform = 'translate3d(-1px, 40px, 0px)';
630
+ }
631
+
632
+ var content = function content(_ref) {
633
+ var placement = _ref.placement;
634
+
635
+ if (placement !== _this2.placement) {
636
+ _this2.placement = placement;
637
+ }
638
+
639
+ return _react.default.createElement(_ClickAwayListener.default, {
640
+ onClickAway: _this2.handleClickAway
641
+ }, _react.default.createElement(_Grow.default, {
642
+ in: open,
643
+ id: "menu-list",
644
+ style: {
645
+ transformOrigin: '0 0 0'
646
+ }
647
+ }, _react.default.createElement(_Paper.default, {
648
+ className: classes.paper
649
+ }, (_this2.placement && _this2.placement.indexOf('bottom') >= 0 || staticPosition) && searchInput('bottom'), startAdornment, _react.default.createElement(_reactCustomScrollbars.default, (0, _extends2.default)({
650
+ ref: function ref(contentEl) {
651
+ _this2.optionsContent = contentEl;
652
+ },
653
+ autoHeight: true,
654
+ autoHeightMax: 400 // TODO ?
655
+
656
+ }, onScrollReachBottom && {
657
+ onScroll: _this2.handleScroll
658
+ }), _react.default.createElement(_HiSelectableList.default, (0, _extends2.default)({
659
+ type: type,
660
+ itemList: itemList,
661
+ onKeyDown: _this2.handleKeyDown,
662
+ onKeyUp: _this2.handleKeyUp,
663
+ onSelect: _this2.handleSelect,
664
+ selectedItemIdList: selectedItemIdList,
665
+ fallbackImage: _this2.props.fallbackImage
666
+ }, hiSelectableListProps))), _this2.placement && _this2.placement.indexOf('top') >= 0 && !staticPosition && searchInput('top'))));
667
+ };
565
668
 
566
669
  return _react.default.createElement("div", {
567
670
  className: classes.root,
@@ -580,6 +683,7 @@ function (_React$PureComponent) {
580
683
  onClick: this.handleClick,
581
684
  onFocus: this.handleFocus,
582
685
  onBlur: this.handleBlur,
686
+ onKeyDown: this.handleKeyDownInput,
583
687
  onSubmit: onSubmit,
584
688
  onMouseEnter: this.props.onMouseEnter,
585
689
  onMouseLeave: this.props.onMouseLeave,
@@ -592,7 +696,7 @@ function (_React$PureComponent) {
592
696
  })), open && staticPosition ? _react.default.createElement("div", {
593
697
  style: popperStyle,
594
698
  className: popperClass
595
- }, content) : _react.default.createElement(_Popper.default, {
699
+ }, content({})) : _react.default.createElement(_Popper.default, {
596
700
  anchorEl: this.inputEl,
597
701
  placement: "bottom-start",
598
702
  open: open,
@@ -172,6 +172,8 @@ function (_React$PureComponent) {
172
172
 
173
173
  if (_this.props.onKeyDown) {
174
174
  _this.props.onKeyDown(event);
175
+
176
+ event.preventDefault();
175
177
  } else if (key === 'down' || key === 'up') {
176
178
  _this.props.onClick();
177
179
  } else if (key === 'enter' && _this.props.onSubmit) {
@@ -193,8 +195,12 @@ function (_React$PureComponent) {
193
195
  };
194
196
 
195
197
  _this.handleClick = function (event) {
198
+ // Do not open select if press on resetIcon
196
199
  if ((!_this.resetIcon || !_this.resetIcon.contains(event.target)) && _this.props.onClick) {
197
- _this.props.onClick(event);
200
+ // Do not open select if press enter on button => submit form
201
+ if (event.type !== 'keydown' || (0, _keycode.default)(event) !== 'enter') {
202
+ _this.props.onClick(event);
203
+ }
198
204
  }
199
205
  };
200
206
 
@@ -269,6 +275,7 @@ function (_React$PureComponent) {
269
275
  }, value || placeholder), _react.default.createElement(_ArrowDropDown.default, {
270
276
  className: iconClass
271
277
  })) : _react.default.createElement(_ButtonBase.default, {
278
+ component: "div",
272
279
  id: id,
273
280
  className: rootClass,
274
281
  onClick: this.handleClick,
@@ -33,8 +33,6 @@ var _HiSelectableListItem = _interopRequireDefault(require("./HiSelectableListIt
33
33
 
34
34
  var _helpers = require("../utils/helpers");
35
35
 
36
- var _keycode = _interopRequireDefault(require("keycode"));
37
-
38
36
  var styles = function styles() {
39
37
  return {
40
38
  root: {
@@ -73,31 +71,6 @@ function (_React$PureComponent) {
73
71
  };
74
72
  };
75
73
 
76
- _this.handleKeyDown = function (event) {
77
- var nextItem;
78
- var key = (0, _keycode.default)(event);
79
-
80
- if (key === 'down') {
81
- event.preventDefault();
82
- nextItem = (0, _helpers.getNextItemSelectable)(document.activeElement, 'down');
83
- } else if (key === 'up') {
84
- event.preventDefault();
85
- nextItem = (0, _helpers.getNextItemSelectable)(document.activeElement, 'up');
86
- } else if (key === 'space' || key === 'enter' && !_this.props.multiple) {
87
- event.preventDefault();
88
-
89
- var item = _this.props.options.find(function (elem) {
90
- return String(elem.id) === event.target.id;
91
- });
92
-
93
- _this.handleSelect(null, item);
94
- }
95
-
96
- if (nextItem) {
97
- nextItem.focus();
98
- }
99
- };
100
-
101
74
  _this.buildRecursiveListItem = function (item) {
102
75
  var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
103
76
  var _this$props = _this.props,
@@ -109,9 +82,9 @@ function (_React$PureComponent) {
109
82
  icon = _this$props.icon,
110
83
  selectedItemIdList = _this$props.selectedItemIdList,
111
84
  sort = _this$props.sort,
112
- _this$props$onKeyDown = _this$props.onKeyDown,
113
- onKeyDown = _this$props$onKeyDown === void 0 ? _this.handleKeyDown : _this$props$onKeyDown,
114
- others = (0, _objectWithoutProperties2.default)(_this$props, ["checkedIcon", "disabled", "disabledItemIdList", "hideCheckbox", "hoverIcon", "icon", "selectedItemIdList", "sort", "onKeyDown"]);
85
+ onKeyDown = _this$props.onKeyDown,
86
+ onKeyUp = _this$props.onKeyUp,
87
+ others = (0, _objectWithoutProperties2.default)(_this$props, ["checkedIcon", "disabled", "disabledItemIdList", "hideCheckbox", "hoverIcon", "icon", "selectedItemIdList", "sort", "onKeyDown", "onKeyUp"]);
115
88
 
116
89
  if (sort && item.children) {
117
90
  item.children.sort(_this.compareItem);
@@ -128,6 +101,7 @@ function (_React$PureComponent) {
128
101
  level: level,
129
102
  onSelect: _this.handleSelect(item),
130
103
  onKeyDown: onKeyDown,
104
+ onKeyUp: onKeyUp,
131
105
  selected: selectedItemIdList.includes(item.id) // item props override upper props (disabled, hideCheckbox, icon, level...)
132
106
 
133
107
  }, item)), item.children && item.children.length > 0 && item.children.filter(function (subItem) {
@@ -116,11 +116,7 @@ var styles = function styles(theme) {
116
116
  padding: '8px 0',
117
117
  margin: 'auto'
118
118
  },
119
- listItemContent: (0, _extends2.default)({
120
- whiteSpace: 'nowrap',
121
- overflow: 'hidden',
122
- textOverflow: 'ellipsis'
123
- }, theme.typography.b1, {
119
+ listItemContent: (0, _extends2.default)({}, theme.typography.b1, {
124
120
  fontWeight: 'inherit',
125
121
  width: '100%',
126
122
  minWidth: '50%',
@@ -135,6 +131,10 @@ var styles = function styles(theme) {
135
131
  }),
136
132
  listItemContentSelected: {},
137
133
  label: {
134
+ maxWidth: '100%',
135
+ whiteSpace: 'nowrap',
136
+ overflow: 'hidden',
137
+ textOverflow: 'ellipsis',
138
138
  display: 'inline-block',
139
139
  margin: '1px 0',
140
140
  paddingLeft: 4
@@ -295,6 +295,7 @@ function (_React$PureComponent) {
295
295
  hideCheckbox = _this$props2.hideCheckbox,
296
296
  onSelect = _this$props2.onSelect,
297
297
  onKeyDown = _this$props2.onKeyDown,
298
+ onKeyUp = _this$props2.onKeyUp,
298
299
  indeterminate = _this$props2.indeterminate,
299
300
  indeterminateIcon = _this$props2.indeterminateIcon,
300
301
  icon = _this$props2.icon,
@@ -342,7 +343,8 @@ function (_React$PureComponent) {
342
343
  onClick: onSelect,
343
344
  onMouseEnter: this.setHover(true),
344
345
  onMouseLeave: this.setHover(false),
345
- onKeyDown: onKeyDown
346
+ onKeyDown: onKeyDown,
347
+ onKeyUp: onKeyUp
346
348
  }, {
347
349
  style: {
348
350
  paddingLeft: "".concat(paddingLeft + level * 32, "px")
@@ -361,12 +363,6 @@ function (_React$PureComponent) {
361
363
  icon: displayedIcon,
362
364
  indeterminate: indeterminate,
363
365
  indeterminateIcon: indeterminateIcon
364
- }), _react.default.createElement("div", {
365
- className: (0, _classnames.default)(classes.listItemContent, (_classNames3 = {}, (0, _defineProperty2.default)(_classNames3, classes.centered, centered), (0, _defineProperty2.default)(_classNames3, classes.primaryHighlight, type === 'primary-highlight'), (0, _defineProperty2.default)(_classNames3, classes.listItemContentSelected, selected && color), _classNames3)),
366
- "data-id": id
367
- }, type === 'icon' && icon && hideCheckbox && _react.default.createElement(_HiIcon.default, {
368
- icon: icon,
369
- className: classes.icon
370
366
  }), type === 'image' && img && _react.default.createElement("img", {
371
367
  src: img,
372
368
  alt: img,
@@ -378,6 +374,12 @@ function (_React$PureComponent) {
378
374
  }
379
375
  },
380
376
  className: classes.img
377
+ }), _react.default.createElement("div", {
378
+ className: (0, _classnames.default)(classes.listItemContent, (_classNames3 = {}, (0, _defineProperty2.default)(_classNames3, classes.centered, centered), (0, _defineProperty2.default)(_classNames3, classes.primaryHighlight, type === 'primary-highlight'), (0, _defineProperty2.default)(_classNames3, classes.listItemContentSelected, selected && color), _classNames3)),
379
+ "data-id": id
380
+ }, type === 'icon' && icon && hideCheckbox && _react.default.createElement(_HiIcon.default, {
381
+ icon: icon,
382
+ className: classes.icon
381
383
  }), this.buildItemLabel())), _react.default.createElement("div", {
382
384
  className: (0, _classnames.default)(classes.infosContent, (_classNames4 = {}, (0, _defineProperty2.default)(_classNames4, classes.infosWithoutSecondaryInline, !secondaryInline), (0, _defineProperty2.default)(_classNames4, classes.infosWithSecondaryInline, !secondaryInline), (0, _defineProperty2.default)(_classNames4, classes.infosInlineWithoutSecondary, secondaryInline && !secondaryLabel), _classNames4))
383
385
  }, !!secondaryLabel && _react.default.createElement("div", {
@@ -496,6 +498,11 @@ HiSelectableListItem.propTypes = process.env.NODE_ENV !== "production" ? {
496
498
  */
497
499
  onKeyDown: _propTypes.default.func,
498
500
 
501
+ /**
502
+ * Fonction de callback à la sélection de l'élément
503
+ */
504
+ onKeyUp: _propTypes.default.func,
505
+
499
506
  /**
500
507
  * Fonction de callback à la sélection de l'élément
501
508
  */
package/README.md CHANGED
@@ -13,20 +13,19 @@ Et connaîtres les [best practices](#best-practices)
13
13
 
14
14
  #### Via docker
15
15
 
16
- Il faut que sur votre poste soit installés
17
- - [Docker](https://www.docker.com/community-edition) (minimum version 17)
18
- - [Docker Compose](#https://docs.docker.com/compose/install/) (minimum version 1.13.0)
16
+ Il faut que sur votre poste soit installé
17
+ - [Docker](https://docs.docker.com/install/linux/docker-ce/ubuntu/)
19
18
 
20
19
  Puis lancez les commandes
21
20
  ```sh
22
- docker-compose build
23
- docker-compose up -d
21
+ # En mode dev :
22
+ docker-compose -f docker-compose.dev.yml build
23
+ docker-compose -f docker-compose.dev.yml up # -d pour détacher du shell courant
24
24
 
25
- # En cas d'erreurs, vérifiez les logs
26
- docker-compose logs -f
25
+ # En mode prod :
26
+ docker-compose -f docker-compose.prod.yml build
27
+ docker-compose -f docker-compose.prod.yml up # -d pour détacher du shell courant
27
28
  ```
28
- Le site est dispo à cette URL:
29
- [http://localhost:3222](http://localhost:3222)
30
29
 
31
30
  #### En local
32
31
 
@@ -227,7 +226,7 @@ npm install -g conventional-changelog-cli
227
226
  npm install -g cz-conventional-changelog
228
227
  ```
229
228
 
230
- 1. Changer la version dans package.json
229
+ 1. Changer la version dans packages/hipay-material-ui/package.json
231
230
  2. Générer le fichier HI-CHANGELOG.md : ```npm run changelog```
232
231
  3. Commiter la release : ```git ci -am "chore(release): VERSION DATE```
233
232
  4. Build : ```npm run build```
@@ -10,18 +10,25 @@ import DialogContentText from '@material-ui/core/DialogContentText';
10
10
  import DialogTitle from '@material-ui/core/DialogTitle';
11
11
  import { withStyles } from '../styles';
12
12
  import HiButton from '../HiButton';
13
+ import HiIcon from '../HiIcon';
13
14
  export const styles = theme => ({
14
15
  classContent: {
15
16
  fontSize: 14,
16
- lineHeight: '24px',
17
- color: '#484848'
17
+ lineHeight: '20px',
18
+ color: '#484848',
19
+ position: 'relative'
18
20
  },
19
- classPaper: {
20
- maxWidth: 300
21
+ classDialogPaper: {
22
+ minHeight: 280,
23
+ maxWidth: 280,
24
+ borderRadius: 2
21
25
  },
22
26
  classCancelButton: {
23
27
  float: 'right'
24
28
  },
29
+ classSubmitButton: {
30
+ margin: '0'
31
+ },
25
32
  classTitle: {
26
33
  fontSize: 20,
27
34
  fontFamily: theme.typography.fontFamily,
@@ -29,10 +36,20 @@ export const styles = theme => ({
29
36
  lineHeight: '24px'
30
37
  },
31
38
  classAction: {
32
- display: 'inline-block'
39
+ display: 'inline-block',
40
+ margin: '0',
41
+ padding: '0px 24px 24px 24px'
33
42
  },
34
43
  classDialogRoot: {
35
44
  backgroundColor: 'rgba(0, 0, 0, 0.28)'
45
+ },
46
+ classBackgroundIcon: {
47
+ position: 'absolute',
48
+ top: 'calc(50%)',
49
+ left: '50%',
50
+ transform: 'translate(-50%, -50%)',
51
+ color: theme.palette.background2,
52
+ flex: '1'
36
53
  }
37
54
  });
38
55
  /**
@@ -71,6 +88,8 @@ class HiAlertModal extends React.PureComponent {
71
88
  render() {
72
89
  const _this$props = this.props,
73
90
  {
91
+ backgroundIcon,
92
+ iconSize,
74
93
  classes,
75
94
  content,
76
95
  labelCancelButton,
@@ -78,19 +97,25 @@ class HiAlertModal extends React.PureComponent {
78
97
  onCancelClick,
79
98
  onSubmitClick,
80
99
  open,
100
+ cancelColor,
81
101
  submitColor,
82
102
  title
83
103
  } = _this$props,
84
- props = _objectWithoutProperties(_this$props, ["classes", "content", "labelCancelButton", "labelSubmitButton", "onCancelClick", "onSubmitClick", "open", "submitColor", "title"]);
104
+ props = _objectWithoutProperties(_this$props, ["backgroundIcon", "iconSize", "classes", "content", "labelCancelButton", "labelSubmitButton", "onCancelClick", "onSubmitClick", "open", "cancelColor", "submitColor", "title"]);
85
105
 
86
106
  return React.createElement(Dialog, _extends({
87
107
  open: open,
88
108
  onClose: this.handleOnClose,
89
109
  classes: {
90
- paper: classes.classPaper,
91
- root: classes.classDialogRoot
110
+ root: classes.classDialogRoot,
111
+ paper: classes.classDialogPaper
92
112
  }
93
- }, props), React.createElement(DialogTitle, {
113
+ }, props), backgroundIcon && React.createElement("div", {
114
+ className: classes.classBackgroundIcon
115
+ }, React.createElement(HiIcon, {
116
+ icon: backgroundIcon,
117
+ size: iconSize
118
+ })), React.createElement(DialogTitle, {
94
119
  disableTypography: true,
95
120
  classes: {
96
121
  root: classes.classTitle
@@ -103,21 +128,38 @@ class HiAlertModal extends React.PureComponent {
103
128
  classes: {
104
129
  root: classes.classAction
105
130
  }
106
- }, React.createElement(HiButton, {
131
+ }, labelSubmitButton && React.createElement(HiButton, {
132
+ classes: {
133
+ root: classes.classSubmitButton
134
+ },
107
135
  onClick: this.handleClickSubmit,
108
136
  color: submitColor
109
- }, labelSubmitButton), React.createElement(HiButton, {
137
+ }, labelSubmitButton), labelCancelButton && React.createElement(HiButton, {
110
138
  classes: {
111
139
  root: classes.classCancelButton
112
140
  },
113
141
  onClick: this.handleClickCancel,
114
- color: "neutral"
142
+ color: cancelColor
115
143
  }, labelCancelButton)));
116
144
  }
117
145
 
118
146
  }
119
147
 
148
+ HiAlertModal.defaultProps = {
149
+ cancelColor: 'neutral',
150
+ submitColor: 'primary'
151
+ };
120
152
  HiAlertModal.propTypes = process.env.NODE_ENV !== "production" ? {
153
+ /**
154
+ * Icon à mettre en fond
155
+ */
156
+ backgroundIcon: PropTypes.string,
157
+
158
+ /**
159
+ * The color of the cancel button. It supports those theme colors that make sense for this component.
160
+ */
161
+ cancelColor: PropTypes.oneOf(['default', 'inherit', 'primary', 'secondary', 'positive', 'negative', 'middle', 'neutral']),
162
+
121
163
  /**
122
164
  * Surcharge les classes du composant
123
165
  */
@@ -126,7 +168,7 @@ HiAlertModal.propTypes = process.env.NODE_ENV !== "production" ? {
126
168
  /**
127
169
  * Texte contenu dans la modal
128
170
  */
129
- content: PropTypes.string,
171
+ content: PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.node]),
130
172
 
131
173
  /**
132
174
  * Texte sur le bouton d'annulation
@@ -8,7 +8,7 @@ import withStyles from '../styles/withStyles';
8
8
  import { capitalize } from '../utils/helpers';
9
9
  import { fade } from '../styles/colorManipulator';
10
10
  export const styles = theme => ({
11
- root: _objectSpread({}, theme.typography.b1, {
11
+ root: _objectSpread({}, theme.typography.b3, {
12
12
  display: 'inline-block',
13
13
  alignItems: 'baseline',
14
14
  maxWidth: '100%',