@hipay/hipay-material-ui 2.0.0-beta.75 → 2.1.0-RC1

Sign up to get free protection for your applications and to get access to all the features.
@@ -20,6 +20,22 @@ var _default = function _default(theme) {
20
20
  minWidth: 252,
21
21
  maxWidth: 500
22
22
  },
23
+ rootMobile: (0, _extends2.default)({}, theme.typography.b1, {
24
+ backgroundColor: theme.palette.background2,
25
+ borderBottom: '1px solid #E0E0E0',
26
+ borderLeft: 'none',
27
+ borderRight: 'none',
28
+ borderTop: 'none',
29
+ height: 40,
30
+ paddingLeft: 8,
31
+ paddingTop: 10,
32
+ position: 'absolute',
33
+ marginTop: -40,
34
+ opacity: 0
35
+ }),
36
+ mobileRangeRoot: {
37
+ minWidth: '100%'
38
+ },
23
39
  fromInput: {
24
40
  position: 'relative',
25
41
  display: 'inline-block',
package/HiNotice/HiKPI.js CHANGED
@@ -47,6 +47,9 @@ var styles = function styles(theme) {
47
47
  alignItems: 'center',
48
48
  fontFamily: theme.typography.fontFamily
49
49
  },
50
+ rootDisable: {
51
+ cursor: 'default'
52
+ },
50
53
  error: {
51
54
  boxShadow: '0px 2px 4px 0px rgba(213, 0, 0, 0.24)',
52
55
  '&:hover': {
@@ -149,7 +152,7 @@ function (_React$Component) {
149
152
  id = _this$props.id,
150
153
  tooltip = _this$props.tooltip,
151
154
  disable = _this$props.disable;
152
- var rootclass = (0, _classnames.default)(classes.root, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.inherit, color === 'inherit' && !disable), (0, _defineProperty2.default)(_classNames, classes.warning, color === 'warning' && !disable), (0, _defineProperty2.default)(_classNames, classes.error, color === 'error' && !disable), (0, _defineProperty2.default)(_classNames, classes.positive, color === 'positive' && !disable), (0, _defineProperty2.default)(_classNames, classes.active, active), (0, _defineProperty2.default)(_classNames, classes.minify, minify), _classNames));
155
+ var rootclass = (0, _classnames.default)(classes.root, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.inherit, color === 'inherit' && !disable), (0, _defineProperty2.default)(_classNames, classes.warning, color === 'warning' && !disable), (0, _defineProperty2.default)(_classNames, classes.error, color === 'error' && !disable), (0, _defineProperty2.default)(_classNames, classes.positive, color === 'positive' && !disable), (0, _defineProperty2.default)(_classNames, classes.active, active), (0, _defineProperty2.default)(_classNames, classes.minify, minify), (0, _defineProperty2.default)(_classNames, classes.rootDisable, disable), _classNames));
153
156
  return _react.default.createElement(_Collapse.default, {
154
157
  in: !minify,
155
158
  timeout: "auto",
@@ -157,7 +160,8 @@ function (_React$Component) {
157
160
  }, _react.default.createElement(_ButtonBase.default, {
158
161
  className: rootclass,
159
162
  onClick: !disable ? this.handleClick(id) : undefined,
160
- title: tooltip
163
+ title: tooltip,
164
+ disableRipple: disable
161
165
  }, title && _react.default.createElement("h3", {
162
166
  className: classes.title
163
167
  }, title), _react.default.createElement("div", {
@@ -7,6 +7,8 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = exports.styles = void 0;
9
9
 
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
10
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
13
 
12
14
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -301,6 +303,8 @@ function (_React$Component) {
301
303
  _this = (0, _possibleConstructorReturn2.default)(this, (_getPrototypeOf2 = (0, _getPrototypeOf3.default)(HiPaymentMeans)).call.apply(_getPrototypeOf2, [this].concat(args)));
302
304
 
303
305
  _this.buildPaymentLayoutByType = function () {
306
+ var _classNames;
307
+
304
308
  var _this$props = _this.props,
305
309
  businessName = _this$props.businessName,
306
310
  cardNumber = _this$props.cardNumber,
@@ -317,7 +321,8 @@ function (_React$Component) {
317
321
  theme = _this$props.theme,
318
322
  translations = _this$props.translations,
319
323
  type = _this$props.type,
320
- yearMember = _this$props.yearMember;
324
+ yearMember = _this$props.yearMember,
325
+ fallbackImage = _this$props.fallbackImage;
321
326
  var formatNumber;
322
327
 
323
328
  if (type === 'credit-card' || type === 'debit-card' || type === 'prepaid-card') {
@@ -348,7 +353,25 @@ function (_React$Component) {
348
353
  username = "".concat(translations.gender_male, " ").concat(cardUser);
349
354
  }
350
355
 
351
- var creditDebit = translations.credit && translations.debit && (credit ? translations.credit : translations.debit).toUpperCase();
356
+ var creditDebit = null;
357
+
358
+ if (translations.credit && translations.debit) {
359
+ creditDebit = (credit ? translations.credit : translations.debit).toUpperCase();
360
+ }
361
+
362
+ var imgComponent = _react.default.createElement("img", {
363
+ src: brandLogo,
364
+ alt: '',
365
+ className: (0, _classnames.default)(classes.logo, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.logoLeft, ['ewallet', 'open-invoice', 'payment-reference', 'credit-consumption', 'realtime-banking'].indexOf(type) >= 0), (0, _defineProperty2.default)(_classNames, classes.logoRight, ['ewallet', 'open-invoice', 'payment-reference', 'credit-consumption', 'realtime-banking'].indexOf(type) < 0), _classNames)),
366
+ onError: function onError(e) {
367
+ if (fallbackImage) {
368
+ e.target.src = "".concat(fallbackImage);
369
+ } else {
370
+ e.target.style.display = 'none';
371
+ }
372
+ }
373
+ });
374
+
352
375
  var cardLayout;
353
376
 
354
377
  switch (type) {
@@ -368,11 +391,7 @@ function (_React$Component) {
368
391
  className: (0, _classnames.default)(classes.labelLarge, classes.userNameWallet)
369
392
  }, username), _react.default.createElement("span", {
370
393
  className: (0, _classnames.default)(classes.stripe, classes.stripeBottomLeft)
371
- }, _react.default.createElement("img", {
372
- src: brandLogo,
373
- alt: '',
374
- className: (0, _classnames.default)(classes.logo, classes.logoLeft)
375
- })), _react.default.createElement("span", {
394
+ }, imgComponent), _react.default.createElement("span", {
376
395
  className: (0, _classnames.default)(classes.stripeGradient, classes.stripeBottomLeft, classes.stripeGradientBottomLeft)
377
396
  })));
378
397
  break;
@@ -386,11 +405,7 @@ function (_React$Component) {
386
405
  }
387
406
  }, _react.default.createElement("span", {
388
407
  className: (0, _classnames.default)(classes.stripe, classes.stripeTopRight)
389
- }, _react.default.createElement("img", {
390
- src: brandLogo,
391
- alt: '',
392
- className: (0, _classnames.default)(classes.logo, classes.logoRight)
393
- })), _react.default.createElement("span", {
408
+ }, imgComponent), _react.default.createElement("span", {
394
409
  className: (0, _classnames.default)(classes.stripeGradient, classes.stripeTopRight, classes.stripeGradientTopRight)
395
410
  }), _react.default.createElement("div", {
396
411
  className: (0, _classnames.default)(classes.number, classes.cardNumber)
@@ -413,11 +428,7 @@ function (_React$Component) {
413
428
  }
414
429
  }, _react.default.createElement("span", {
415
430
  className: (0, _classnames.default)(classes.stripe, classes.stripeTopRight)
416
- }, _react.default.createElement("img", {
417
- src: brandLogo,
418
- alt: '',
419
- className: (0, _classnames.default)(classes.logo, classes.logoRight)
420
- })), _react.default.createElement("span", {
431
+ }, imgComponent), _react.default.createElement("span", {
421
432
  className: (0, _classnames.default)(classes.stripeGradient, classes.stripeTopRight, classes.stripeGradientTopRight)
422
433
  }, _react.default.createElement("div", {
423
434
  className: classes.corporateLabel,
@@ -454,11 +465,7 @@ function (_React$Component) {
454
465
  }
455
466
  }, _react.default.createElement("span", {
456
467
  className: (0, _classnames.default)(classes.stripe, classes.stripeTopLeft)
457
- }, _react.default.createElement("img", {
458
- src: brandLogo,
459
- alt: '',
460
- className: (0, _classnames.default)(classes.logo, classes.logoLeft)
461
- })), _react.default.createElement("span", {
468
+ }, imgComponent), _react.default.createElement("span", {
462
469
  className: (0, _classnames.default)(classes.stripeGradient, classes.stripeTopLeft, classes.stripeGradientTopLeft)
463
470
  }), cardNumber && _react.default.createElement("div", {
464
471
  className: (0, _classnames.default)(classes.labelMedium, classes.ibanLabel)
@@ -479,11 +486,7 @@ function (_React$Component) {
479
486
  }
480
487
  }, _react.default.createElement("span", {
481
488
  className: (0, _classnames.default)(classes.stripe, classes.stripeTopRight)
482
- }, _react.default.createElement("img", {
483
- src: brandLogo,
484
- alt: '',
485
- className: (0, _classnames.default)(classes.logo, classes.logoRight)
486
- })), _react.default.createElement("span", {
489
+ }, imgComponent), _react.default.createElement("span", {
487
490
  className: (0, _classnames.default)(classes.stripeGradient, classes.stripeTopRight, classes.stripeGradientTopRight)
488
491
  }, _react.default.createElement("img", {
489
492
  src: logoMerchant,
@@ -506,11 +509,7 @@ function (_React$Component) {
506
509
  }
507
510
  }, _react.default.createElement("span", {
508
511
  className: (0, _classnames.default)(classes.stripe, classes.stripeTopRight)
509
- }, _react.default.createElement("img", {
510
- src: brandLogo,
511
- alt: '',
512
- className: (0, _classnames.default)(classes.logo, classes.logoRight)
513
- })), _react.default.createElement("span", {
512
+ }, imgComponent), _react.default.createElement("span", {
514
513
  className: (0, _classnames.default)(classes.stripeGradient, classes.stripeTopRight, classes.stripeGradientTopRight)
515
514
  }), _react.default.createElement("div", {
516
515
  className: (0, _classnames.default)(classes.number, classes.cardNumber)
@@ -622,6 +621,11 @@ HiPaymentMeans.propTypes = process.env.NODE_ENV !== "production" ? {
622
621
  */
623
622
  credit: _propTypes.default.bool,
624
623
 
624
+ /**
625
+ * Chemin vers l'image à afficher par défaut si le logo n'est pas trouvé
626
+ */
627
+ fallbackImage: _propTypes.default.string,
628
+
625
629
  /**
626
630
  * Logo du moyen de paiement
627
631
  */
@@ -55,6 +55,14 @@ var _keycode = _interopRequireDefault(require("keycode"));
55
55
 
56
56
  var _classnames = _interopRequireDefault(require("classnames"));
57
57
 
58
+ var _HiAlertModal = _interopRequireDefault(require("../HiAlertModal"));
59
+
60
+ var _reactDeviceDetect = require("react-device-detect");
61
+
62
+ var _HiSelectMobile = _interopRequireDefault(require("./HiSelectMobile"));
63
+
64
+ var _reactDom = require("react-dom");
65
+
58
66
  var styles = function styles(theme) {
59
67
  return {
60
68
  root: {
@@ -260,30 +268,48 @@ function (_React$PureComponent) {
260
268
  _this.handleClick = function () {
261
269
  if (_this.state.open) {
262
270
  _this.handleClose();
271
+ } else if (_this.props.alert && !_this.state.alertOpen) {
272
+ _this.setState({
273
+ open: false,
274
+ alertOpen: true
275
+ });
263
276
  } else {
264
277
  _this.setState({
265
- open: true
278
+ open: true,
279
+ alertOpen: false
266
280
  });
267
281
 
268
282
  _this.handleSuggestions(_this.props.options);
269
283
 
270
284
  if (_this.props.onClick) _this.props.onClick(); // Gestion du focus
271
285
 
272
- if (!_this.props.searchable) {
273
- setTimeout(function () {
286
+ setTimeout(function () {
287
+ if (!_this.props.searchable) {
274
288
  // Sinon focus sur l'élément sélectionné
275
289
  _this.focusOnSelectedItem(_this.props.value);
276
- }, 1);
277
- } else {
278
- if (_this.searchField) {
279
- setTimeout(function () {
280
- _this.searchField.focus();
281
- }, 1);
282
290
  }
283
- }
291
+ }, 1);
292
+ }
293
+ };
294
+
295
+ _this.handleSubmitAlert = function () {
296
+ _this.handleClick();
297
+ };
298
+
299
+ _this.handleCancelAlert = function () {
300
+ _this.handleClose();
301
+ };
302
+
303
+ _this.handleExitedAlert = function () {
304
+ if (_this.searchField) {
305
+ _this.searchField.focus();
284
306
  }
285
307
  };
286
308
 
309
+ _this.handleCloseAlert = function () {
310
+ _this.handleClose();
311
+ };
312
+
287
313
  _this.focusOnSelectedItem = function (selectedValue) {
288
314
  if (_this.overlay && _this.overlay.getElementsByTagName('li')[0]) {
289
315
  setTimeout(function () {
@@ -316,7 +342,8 @@ function (_React$PureComponent) {
316
342
  _this.handleSearchReset();
317
343
 
318
344
  _this.setState({
319
- open: false
345
+ open: false,
346
+ alertOpen: false
320
347
  });
321
348
 
322
349
  if (_this.props.onClose) {
@@ -351,32 +378,24 @@ function (_React$PureComponent) {
351
378
  _this.handleKeyDown = function (event) {
352
379
  var key = (0, _keycode.default)(event);
353
380
 
354
- if (key === 'esc') {
355
- event.preventDefault();
381
+ if (!_this.state.alertOpen) {
382
+ if (key === 'esc') {
383
+ event.preventDefault();
356
384
 
357
- _this.handleClose();
358
- } else if (key === 'enter') {
359
- if (_this.state.open) {
360
- if (_this.props.multiple) {
361
- _this.handleClose();
385
+ _this.handleClose();
386
+ } else if (key === 'enter') {
387
+ if (_this.state.open) {
388
+ if (_this.props.multiple) {
389
+ _this.handleClose();
390
+ }
362
391
  }
363
- }
364
- } else if (key === 'space' && event.target !== _this.searchField) {
365
- event.preventDefault();
392
+ } else if (key === 'space' && event.target !== _this.searchField) {
393
+ event.preventDefault();
366
394
 
367
- if (_this.state.open) {
368
- if (!_this.props.multiple) {
369
- _this.setState({
370
- open: false
371
- });
372
- }
373
- } else {
374
- _this.setState({
375
- open: true
376
- });
395
+ _this.handleClick();
396
+ } else if (key === 'tab') {
397
+ _this.handleClose();
377
398
  }
378
- } else if (key === 'tab') {
379
- _this.handleClose();
380
399
  }
381
400
  };
382
401
 
@@ -425,6 +444,11 @@ function (_React$PureComponent) {
425
444
  return option.id;
426
445
  }), item);
427
446
  }
447
+ } else if (_reactDeviceDetect.isMobile && multiple) {
448
+ // Array of selected values
449
+ onChange(event, item.map(function (option) {
450
+ return option.id;
451
+ }), item);
428
452
  } else if (value.includes(item.id)) {
429
453
  // unselect item
430
454
  onChange(event, value.filter(function (id) {
@@ -489,11 +513,13 @@ function (_React$PureComponent) {
489
513
  };
490
514
 
491
515
  _this.state = {
516
+ alertOpen: false,
492
517
  open: false,
493
518
  focused: false,
494
519
  searchValue: props.searchValue ? undefined : '',
495
520
  suggestions: props.options,
496
- openDown: true
521
+ openDown: true,
522
+ overlayWidth: 0
497
523
  };
498
524
  _this.handleBlur = _this.handleBlur.bind((0, _assertThisInitialized2.default)(_this));
499
525
  _this.handleClick = _this.handleClick.bind((0, _assertThisInitialized2.default)(_this));
@@ -514,6 +540,12 @@ function (_React$PureComponent) {
514
540
  if (this.props.autoFocus) {
515
541
  this.inputEl.focus();
516
542
  }
543
+
544
+ if (this.overlay) {
545
+ this.setState({
546
+ overlayWidth: (0, _reactDom.findDOMNode)(this.overlay).clientWidth
547
+ });
548
+ }
517
549
  }
518
550
  }, {
519
551
  key: "getLengthItemList",
@@ -539,6 +571,7 @@ function (_React$PureComponent) {
539
571
  _this3 = this;
540
572
 
541
573
  var _this$props4 = this.props,
574
+ alert = _this$props4.alert,
542
575
  classes = _this$props4.classes,
543
576
  disabled = _this$props4.disabled,
544
577
  error = _this$props4.error,
@@ -564,6 +597,7 @@ function (_React$PureComponent) {
564
597
  _this$props4$buildSel = _this$props4.buildSelectProps,
565
598
  buildSelectProps = _this$props4$buildSel === void 0 ? this.buildSelectProps : _this$props4$buildSel;
566
599
  var _this$state = this.state,
600
+ alertOpen = _this$state.alertOpen,
567
601
  open = _this$state.open,
568
602
  focused = _this$state.focused;
569
603
 
@@ -664,14 +698,24 @@ function (_React$PureComponent) {
664
698
  }, hiSelectableListProps))), _this3.placement && _this3.placement.indexOf('top') >= 0 && !staticPosition && searchInput('top'))));
665
699
  };
666
700
 
667
- return _react.default.createElement("div", {
701
+ return !_reactDeviceDetect.isMobile ? _react.default.createElement("div", {
668
702
  className: classes.root,
669
703
  ref: function ref(el) {
670
704
  _this3.overlay = el;
671
705
  },
672
706
  onKeyDown: this.handleKeyDown,
673
707
  onKeyDownCapture: this.handleKeyDownCapture
674
- }, _react.default.createElement(_HiSelectInput.default, (0, _extends2.default)({
708
+ }, alert && _react.default.createElement(_HiAlertModal.default, {
709
+ open: alertOpen,
710
+ title: alert.title,
711
+ content: alert.content,
712
+ onSubmitClick: this.handleSubmitAlert,
713
+ onCancelClick: this.handleCancelAlert,
714
+ onClose: this.handleCloseAlert,
715
+ onExited: this.handleExitedAlert,
716
+ labelSubmitButton: alert.submitButton,
717
+ labelCancelButton: alert.cancelButton
718
+ }), _react.default.createElement(_HiSelectInput.default, (0, _extends2.default)({
675
719
  id: id,
676
720
  value: inputValue,
677
721
  open: open,
@@ -702,7 +746,37 @@ function (_React$PureComponent) {
702
746
  className: popperClass,
703
747
  disablePortal: true,
704
748
  style: popperStyle
705
- }, content));
749
+ }, content)) : _react.default.createElement("div", {
750
+ ref: function ref(el) {
751
+ _this3.overlay = el;
752
+ }
753
+ }, _react.default.createElement(_HiSelectInput.default, (0, _extends2.default)({
754
+ id: id,
755
+ value: inputValue,
756
+ open: open,
757
+ focused: focused,
758
+ type: type,
759
+ disabled: disabled,
760
+ noButton: displayAsChip,
761
+ error: error,
762
+ onFocus: this.handleFocus,
763
+ onBlur: this.handleBlur,
764
+ onMouseEnter: this.props.onMouseEnter,
765
+ onMouseLeave: this.props.onMouseLeave,
766
+ onReset: this.props.onReset,
767
+ placeholder: placeholder
768
+ }, hiSelectInputProps, {
769
+ refElement: function refElement(el) {
770
+ _this3.inputEl = el;
771
+ }
772
+ })), _react.default.createElement(_HiSelectMobile.default, {
773
+ onChange: this.handleSelect,
774
+ multiple: multiple,
775
+ id: id,
776
+ itemList: itemList,
777
+ value: value,
778
+ width: this.state.overlayWidth
779
+ }));
706
780
  }
707
781
  }], [{
708
782
  key: "getDerivedStateFromProps",
@@ -755,6 +829,10 @@ HiSelect.defaultProps = {
755
829
  filterFunc: filterValue
756
830
  };
757
831
  HiSelect.propTypes = process.env.NODE_ENV !== "production" ? {
832
+ /**
833
+ * Affiche une alerte à l'ouverture de la liste
834
+ */
835
+ alert: _propTypes.default.object,
758
836
  align: _propTypes.default.oneOf(['left', 'right']),
759
837
 
760
838
  /**
@@ -41,6 +41,8 @@ var _withStyles = _interopRequireDefault(require("../styles/withStyles"));
41
41
 
42
42
  var _keycode = _interopRequireDefault(require("keycode"));
43
43
 
44
+ var _reactDeviceDetect = require("react-device-detect");
45
+
44
46
  var styles = function styles(theme) {
45
47
  return {
46
48
  root: {
@@ -52,6 +54,9 @@ var styles = function styles(theme) {
52
54
  padding: 8,
53
55
  cursor: 'pointer'
54
56
  },
57
+ rootMobile: {
58
+ backgroundColor: theme.palette.background2
59
+ },
55
60
  underline: {
56
61
  '&:before': {
57
62
  backgroundColor: theme.palette.input.bottomLine,
@@ -257,7 +262,7 @@ function (_React$PureComponent) {
257
262
  id = _this$props.id,
258
263
  placeholder = _this$props.placeholder; // On utilise classNames pour variabiliser les styles et merge les classes appliquées
259
264
 
260
- var rootClass = (0, _classnames.default)(classes.root, classes.inkbar, classes.underline, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.disabled, disabled), (0, _defineProperty2.default)(_classNames, classes.focused, focused), (0, _defineProperty2.default)(_classNames, classes.error, error && !focused), _classNames));
265
+ var rootClass = (0, _classnames.default)(classes.root, classes.inkbar, classes.underline, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.disabled, disabled), (0, _defineProperty2.default)(_classNames, classes.focused, focused), (0, _defineProperty2.default)(_classNames, classes.error, error && !focused), (0, _defineProperty2.default)(_classNames, classes.rootMobile, _reactDeviceDetect.isMobile), _classNames));
261
266
  var iconClass = (0, _classnames.default)(classes.icon, (_classNames2 = {}, (0, _defineProperty2.default)(_classNames2, classes.iconOpen, open), (0, _defineProperty2.default)(_classNames2, classes.iconClose, !open), _classNames2));
262
267
  return noButton ? _react.default.createElement("div", {
263
268
  id: id,
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = exports.styles = void 0;
9
+
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
12
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
+
14
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
+
16
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
+
18
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
+
20
+ var _getPrototypeOf3 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
+
22
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
23
+
24
+ var _react = _interopRequireDefault(require("react"));
25
+
26
+ var _propTypes = _interopRequireDefault(require("prop-types"));
27
+
28
+ var _withStyles = _interopRequireDefault(require("../styles/withStyles"));
29
+
30
+ var styles = function styles(theme) {
31
+ return {
32
+ root: {
33
+ position: 'absolute',
34
+ opacity: '0',
35
+ marginTop: -40,
36
+ height: 40
37
+ }
38
+ };
39
+ };
40
+
41
+ exports.styles = styles;
42
+
43
+ var HiSelectMobile =
44
+ /*#__PURE__*/
45
+ function (_React$Component) {
46
+ (0, _inherits2.default)(HiSelectMobile, _React$Component);
47
+
48
+ function HiSelectMobile() {
49
+ var _getPrototypeOf2;
50
+
51
+ var _this;
52
+
53
+ (0, _classCallCheck2.default)(this, HiSelectMobile);
54
+
55
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
56
+ args[_key] = arguments[_key];
57
+ }
58
+
59
+ _this = (0, _possibleConstructorReturn2.default)(this, (_getPrototypeOf2 = (0, _getPrototypeOf3.default)(HiSelectMobile)).call.apply(_getPrototypeOf2, [this].concat(args)));
60
+
61
+ _this.buildOptionList = function (itemList) {
62
+ var optionList = [];
63
+
64
+ if (itemList.length) {
65
+ var parentId;
66
+ var groupList = [];
67
+ itemList.forEach(function (item) {
68
+ if (item.id !== '_all' && item.displayed !== false) {
69
+ if (item.hasChildren) {
70
+ if (groupList.length) {
71
+ optionList.push(_this.buildChildrenList(groupList));
72
+ groupList = [];
73
+ }
74
+
75
+ parentId = item.id;
76
+ groupList.push(item);
77
+ } else if (parentId) {
78
+ groupList.push(item);
79
+ } else if (item.children) {
80
+ optionList.push(_this.buildChildrenList([item].concat((0, _toConsumableArray2.default)(item.children))));
81
+ } else {
82
+ optionList.push(_react.default.createElement("option", {
83
+ key: item.id,
84
+ "data-item": JSON.stringify(item),
85
+ value: item.id
86
+ }, item.label));
87
+ }
88
+ }
89
+ });
90
+
91
+ if (groupList.length) {
92
+ optionList.push(_this.buildChildrenList(groupList));
93
+ }
94
+ }
95
+
96
+ return optionList;
97
+ };
98
+
99
+ _this.buildChildrenList = function (itemList) {
100
+ var group = itemList.shift();
101
+ return _react.default.createElement("optgroup", {
102
+ key: group.id,
103
+ label: group.label
104
+ }, itemList.map(function (item) {
105
+ return _react.default.createElement("option", {
106
+ key: item.id,
107
+ "data-item": JSON.stringify(item),
108
+ value: item.id
109
+ }, item.label);
110
+ }));
111
+ };
112
+
113
+ _this.handleChange = function (event) {
114
+ if (!_this.props.multiple) {
115
+ var itemSelected = event.target[event.target.selectedIndex];
116
+
117
+ _this.props.onChange(event, JSON.parse(itemSelected.getAttribute('data-item')));
118
+ } else {
119
+ // Multiple on mobile trigger on change with all selected items
120
+ var optionsSelected = [];
121
+ Array.prototype.forEach.call(event.target.options, function (option) {
122
+ if (option.selected) {
123
+ optionsSelected.push(JSON.parse(option.getAttribute('data-item')));
124
+ }
125
+ });
126
+
127
+ _this.props.onChange(event, optionsSelected);
128
+ }
129
+ };
130
+
131
+ return _this;
132
+ }
133
+
134
+ (0, _createClass2.default)(HiSelectMobile, [{
135
+ key: "render",
136
+ value: function render() {
137
+ var _this$props = this.props,
138
+ classes = _this$props.classes,
139
+ id = _this$props.id,
140
+ itemList = _this$props.itemList,
141
+ multiple = _this$props.multiple,
142
+ value = _this$props.value;
143
+ var additionalProps = (0, _extends2.default)({}, multiple && {
144
+ multiple: 'multiple'
145
+ });
146
+ return _react.default.createElement("select", (0, _extends2.default)({
147
+ value: value,
148
+ style: {
149
+ width: this.props.width
150
+ },
151
+ onChange: this.handleChange,
152
+ className: classes.root,
153
+ name: id,
154
+ id: id
155
+ }, additionalProps), this.buildOptionList(itemList));
156
+ }
157
+ }]);
158
+ return HiSelectMobile;
159
+ }(_react.default.Component);
160
+
161
+ HiSelectMobile.defaultProps = {
162
+ itemList: []
163
+ };
164
+ HiSelectMobile.propTypes = process.env.NODE_ENV !== "production" ? {
165
+ /**
166
+ * Identifiant du select
167
+ */
168
+ id: _propTypes.default.string,
169
+
170
+ /**
171
+ * Liste des options du select
172
+ */
173
+ itemList: _propTypes.default.array.isRequired,
174
+
175
+ /**
176
+ * True s'il est possible de sélectionner plusieurs options
177
+ */
178
+ multiple: _propTypes.default.bool,
179
+
180
+ /**
181
+ * Fonction appelée lors de la sélection/désélection
182
+ */
183
+ onChange: _propTypes.default.func.isRequired,
184
+
185
+ /**
186
+ * Valeur(s) sélectionnée(s)
187
+ */
188
+ value: _propTypes.default.any,
189
+
190
+ /**
191
+ * Largeur du select
192
+ */
193
+ width: _propTypes.default.number
194
+ } : {};
195
+
196
+ var _default = (0, _withStyles.default)(styles)(HiSelectMobile);
197
+
198
+ exports.default = _default;