@hipay/hipay-material-ui 1.0.0-beta.12 → 1.0.0-beta.14

Sign up to get free protection for your applications and to get access to all the features.
@@ -50,6 +50,10 @@ var _DayPickerInput = require('react-day-picker/DayPickerInput');
50
50
 
51
51
  var _DayPickerInput2 = _interopRequireDefault(_DayPickerInput);
52
52
 
53
+ var _classnames = require('classnames');
54
+
55
+ var _classnames2 = _interopRequireDefault(_classnames);
56
+
53
57
  var _withStyles = require('../styles/withStyles');
54
58
 
55
59
  var _withStyles2 = _interopRequireDefault(_withStyles);
@@ -92,6 +96,8 @@ var _stylesheet2 = _interopRequireDefault(_stylesheet);
92
96
 
93
97
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
94
98
 
99
+ // weak
100
+
95
101
  var HiDateRangePicker = function (_React$Component) {
96
102
  (0, _inherits3.default)(HiDateRangePicker, _React$Component);
97
103
 
@@ -100,11 +106,16 @@ var HiDateRangePicker = function (_React$Component) {
100
106
 
101
107
  var _this = (0, _possibleConstructorReturn3.default)(this, (HiDateRangePicker.__proto__ || (0, _getPrototypeOf2.default)(HiDateRangePicker)).call(this));
102
108
 
109
+ _this.handleDayPickerFocus = function (name) {
110
+ return function () {
111
+ _this.setState({ focusedInput: name });
112
+ };
113
+ };
114
+
103
115
  _this.state = {
104
- fromOpenedPanel: 'calendar',
105
116
  fromCurrentMonth: props.from ? props.from : new Date(),
106
- toOpenedPanel: 'calendar',
107
- toCurrentMonth: props.to ? props.to : new Date()
117
+ toCurrentMonth: props.to ? props.to : new Date(),
118
+ focusedInput: ''
108
119
  };
109
120
 
110
121
  _this.handleReset = _this.handleReset.bind(_this);
@@ -128,6 +139,8 @@ var HiDateRangePicker = function (_React$Component) {
128
139
  _this.handleYearClick = _this.handleYearClick.bind(_this);
129
140
  _this.handleYearClickFrom = _this.handleYearClickFrom.bind(_this);
130
141
  _this.handleYearClickTo = _this.handleYearClickTo.bind(_this);
142
+ _this.handleDayPickerFocus = _this.handleDayPickerFocus.bind(_this);
143
+ _this.handleDayPickerBlur = _this.handleDayPickerBlur.bind(_this);
131
144
 
132
145
  _this.openPanel = _this.openPanel.bind(_this);
133
146
 
@@ -324,6 +337,11 @@ var HiDateRangePicker = function (_React$Component) {
324
337
  document.activeElement.blur();
325
338
  }
326
339
  }
340
+ }, {
341
+ key: 'handleDayPickerBlur',
342
+ value: function handleDayPickerBlur() {
343
+ this.setState({ focusedInput: '' });
344
+ }
327
345
  }, {
328
346
  key: 'openPanel',
329
347
  value: function openPanel(name, panel) {
@@ -367,9 +385,10 @@ var HiDateRangePicker = function (_React$Component) {
367
385
  }
368
386
  }, {
369
387
  key: 'renderOverlay',
370
- value: function renderOverlay(name, propsOverlay) {
388
+ value: function renderOverlay(name, propsOverlay, staticPosition) {
371
389
  var rangeOverlayProps = (0, _extends3.default)({}, propsOverlay, {
372
- side: name
390
+ side: name,
391
+ staticPosition: staticPosition
373
392
  });
374
393
 
375
394
  switch (this.state[name + 'OpenedPanel']) {
@@ -387,12 +406,12 @@ var HiDateRangePicker = function (_React$Component) {
387
406
  }, {
388
407
  key: 'renderOverlayFrom',
389
408
  value: function renderOverlayFrom(propsOverlay) {
390
- return this.renderOverlay('from', propsOverlay);
409
+ return this.renderOverlay('from', propsOverlay, this.props.staticPosition);
391
410
  }
392
411
  }, {
393
412
  key: 'renderOverlayTo',
394
413
  value: function renderOverlayTo(propsOverlay) {
395
- return this.renderOverlay('to', propsOverlay);
414
+ return this.renderOverlay('to', propsOverlay, this.props.staticPosition);
396
415
  }
397
416
  }, {
398
417
  key: 'renderMonthPickerOverlay',
@@ -439,7 +458,8 @@ var HiDateRangePicker = function (_React$Component) {
439
458
  }, {
440
459
  key: 'render',
441
460
  value: function render() {
442
- var _this6 = this;
461
+ var _this6 = this,
462
+ _classNames;
443
463
 
444
464
  var _props = this.props,
445
465
  classes = _props.classes,
@@ -457,7 +477,8 @@ var HiDateRangePicker = function (_React$Component) {
457
477
  to = _props.to,
458
478
  translations = _props.translations,
459
479
  id = _props.id,
460
- props = (0, _objectWithoutProperties3.default)(_props, ['classes', 'disabledDays', 'disablePastDays', 'disableFutureDays', 'enableTime', 'labelFrom', 'labelTo', 'locale', 'format', 'from', 'minimumDate', 'onReset', 'to', 'translations', 'id']);
480
+ staticPosition = _props.staticPosition,
481
+ props = (0, _objectWithoutProperties3.default)(_props, ['classes', 'disabledDays', 'disablePastDays', 'disableFutureDays', 'enableTime', 'labelFrom', 'labelTo', 'locale', 'format', 'from', 'minimumDate', 'onReset', 'to', 'translations', 'id', 'staticPosition']);
461
482
  var _state = this.state,
462
483
  fromCurrentMonth = _state.fromCurrentMonth,
463
484
  toCurrentMonth = _state.toCurrentMonth;
@@ -575,32 +596,47 @@ var HiDateRangePicker = function (_React$Component) {
575
596
  id: id + '-to'
576
597
  });
577
598
 
599
+ var fromClass = (0, _classnames2.default)((_classNames = {}, (0, _defineProperty3.default)(_classNames, classes.absolute, staticPosition === true && this.state.focusedInput === 'to'), (0, _defineProperty3.default)(_classNames, classes.dayPickerMargin, staticPosition === true && this.state.focusedInput === 'to'), _classNames));
600
+ var toClass = (0, _classnames2.default)(classes.toInput, (0, _defineProperty3.default)({}, classes.absolute, staticPosition === true && this.state.focusedInput === 'from'));
601
+
578
602
  return _react2.default.createElement(
579
603
  'div',
580
604
  { className: classes.root },
581
605
  _react2.default.createElement(
582
606
  'div',
583
- { className: classes.fromInput },
584
- _react2.default.createElement(_DayPickerInput2.default, {
585
- ref: function ref(el) {
586
- _this6.fromInput = el;
587
- },
588
- value: from,
589
- hideOnDayClick: false,
590
- overlayComponent: this.renderOverlayFrom,
591
- dayPickerProps: fromDayPickerProps,
592
- component: _HiForm.HiTextField,
593
- inputProps: fromInputProps,
594
- format: enableTime ? format + ' HH:mm' : format,
595
- formatDate: _moment.formatDate,
596
- parseDate: _moment.parseDate,
597
- onDayChange: this.handleDayChangeFrom,
598
- placeholder: ''
599
- })
607
+ {
608
+ className: classes.fromInput,
609
+ onFocus: this.handleDayPickerFocus('from'),
610
+ onBlur: this.handleDayPickerBlur
611
+ },
612
+ _react2.default.createElement(
613
+ 'div',
614
+ { className: fromClass },
615
+ _react2.default.createElement(_DayPickerInput2.default, {
616
+ ref: function ref(el) {
617
+ _this6.fromInput = el;
618
+ },
619
+ value: from,
620
+ hideOnDayClick: false,
621
+ overlayComponent: this.renderOverlayFrom,
622
+ dayPickerProps: fromDayPickerProps,
623
+ component: _HiForm.HiTextField,
624
+ inputProps: fromInputProps,
625
+ format: enableTime ? format + ' HH:mm' : format,
626
+ formatDate: _moment.formatDate,
627
+ parseDate: _moment.parseDate,
628
+ onDayChange: this.handleDayChangeFrom,
629
+ placeholder: ''
630
+ })
631
+ )
600
632
  ),
601
633
  _react2.default.createElement(
602
634
  'div',
603
- { className: classes.toInput },
635
+ {
636
+ className: toClass,
637
+ onFocus: this.handleDayPickerFocus('to'),
638
+ onBlur: this.handleDayPickerBlur
639
+ },
604
640
  _react2.default.createElement(_DayPickerInput2.default, {
605
641
  ref: function ref(el) {
606
642
  _this6.toInput = el;
@@ -622,12 +658,13 @@ var HiDateRangePicker = function (_React$Component) {
622
658
  }
623
659
  }]);
624
660
  return HiDateRangePicker;
625
- }(_react2.default.Component); // weak
661
+ }(_react2.default.Component);
626
662
 
627
663
  HiDateRangePicker.defaultProps = {
628
664
  disabledDays: [],
629
665
  disablePastDays: false,
630
666
  disableFutureDays: false,
667
+ staticPosition: false,
631
668
  enableTime: false,
632
669
  format: 'YYYY-DD-MM',
633
670
  labelFrom: 'Start',
@@ -703,6 +740,10 @@ HiDateRangePicker.propTypes = process.env.NODE_ENV !== "production" ? {
703
740
  * Callback au reset de l'input
704
741
  */
705
742
  onReset: _propTypes2.default.func,
743
+ /**
744
+ * Si true, le calendrier sera dans une div static plutot que dans une popper absolute
745
+ */
746
+ staticPosition: _propTypes2.default.bool,
706
747
  /**
707
748
  * Date de fin sélectionnée
708
749
  */
@@ -191,11 +191,11 @@ var HiDateRangeSelector = function (_React$Component) {
191
191
  if (selectedOption) {
192
192
  _this.props.onChange('from', selectedOption.from.toDate());
193
193
  _this.props.onChange('to', selectedOption.to.toDate());
194
- if (_this.props.returnSelectValue === true) {
195
- _this.props.onChange('period', value);
196
- }
197
194
  }
198
195
  }
196
+ if (_this.props.returnSelectValue === true) {
197
+ _this.props.onChange('period', value);
198
+ }
199
199
  };
200
200
  };
201
201
 
@@ -252,7 +252,8 @@ var HiDateRangeSelector = function (_React$Component) {
252
252
  translations = _props.translations,
253
253
  classes = _props.classes,
254
254
  selectProps = _props.selectProps,
255
- props = (0, _objectWithoutProperties3.default)(_props, ['disabled', 'enableTime', 'error', 'errorText', 'helperIcon', 'helperText', 'idRange', 'idSelect', 'label', 'from', 'onChange', 'required', 'to', 'translations', 'classes', 'selectProps']);
255
+ staticPosition = _props.staticPosition,
256
+ props = (0, _objectWithoutProperties3.default)(_props, ['disabled', 'enableTime', 'error', 'errorText', 'helperIcon', 'helperText', 'idRange', 'idSelect', 'label', 'from', 'onChange', 'required', 'to', 'translations', 'classes', 'selectProps', 'staticPosition']);
256
257
  var selectedPreset = this.state.selectedPreset;
257
258
 
258
259
 
@@ -284,7 +285,8 @@ var HiDateRangeSelector = function (_React$Component) {
284
285
  translations: translations,
285
286
  value: selectedPreset,
286
287
  containerWidth: this.state.containerWidth,
287
- classes: { root: classes.dateSelect }
288
+ classes: { root: classes.dateSelect },
289
+ staticPosition: staticPosition
288
290
  }, selectProps))
289
291
  ),
290
292
  _react2.default.createElement(
@@ -299,7 +301,8 @@ var HiDateRangeSelector = function (_React$Component) {
299
301
  onChange: onChange,
300
302
  onReset: this.handleReset,
301
303
  disabled: disabled || selectedPreset !== 'custom',
302
- translations: translations
304
+ translations: translations,
305
+ staticPosition: staticPosition
303
306
  }, props))
304
307
  )
305
308
  );
@@ -313,6 +316,7 @@ HiDateRangeSelector.defaultProps = {
313
316
  defaultPreset: 'cd',
314
317
  enableTime: false,
315
318
  returnSelectValue: false,
319
+ staticPosition: false,
316
320
  locale: 'fr-FR',
317
321
  format: 'YYYY-DD-MM',
318
322
  translations: {
@@ -414,6 +418,10 @@ HiDateRangeSelector.propTypes = process.env.NODE_ENV !== "production" ? {
414
418
  * Props passées au HiSelectField
415
419
  */
416
420
  selectProps: _propTypes2.default.object,
421
+ /**
422
+ * Si true, le calendrier sera dans une div static plutot que dans une popper absolute
423
+ */
424
+ staticPosition: _propTypes2.default.bool,
417
425
  /**
418
426
  * Date de fin sélectionnée
419
427
  */
@@ -34,10 +34,15 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
34
34
  var styles = exports.styles = function styles() {
35
35
  return {
36
36
  paper: {
37
- position: 'absolute',
38
37
  width: '100%',
39
38
  zIndex: 10
40
39
  },
40
+ absolute: {
41
+ position: 'absolute'
42
+ },
43
+ relative: {
44
+ position: 'relative'
45
+ },
41
46
  left: {
42
47
  width: '200%',
43
48
  left: 0
@@ -57,9 +62,10 @@ var Overlay = function Overlay(_ref) {
57
62
 
58
63
  var classes = _ref.classes,
59
64
  children = _ref.children,
60
- side = _ref.side;
65
+ side = _ref.side,
66
+ staticPosition = _ref.staticPosition;
61
67
 
62
- var paperClass = (0, _classnames2.default)(classes.paper, (_classNames = {}, (0, _defineProperty3.default)(_classNames, classes.left, side === 'from'), (0, _defineProperty3.default)(_classNames, classes.right, side === 'to'), _classNames));
68
+ var paperClass = (0, _classnames2.default)(classes.paper, (_classNames = {}, (0, _defineProperty3.default)(_classNames, classes.left, side === 'from'), (0, _defineProperty3.default)(_classNames, classes.right, side === 'to'), (0, _defineProperty3.default)(_classNames, classes.absolute, staticPosition !== true), (0, _defineProperty3.default)(_classNames, classes.relative, staticPosition === true), _classNames));
63
69
 
64
70
  return _react2.default.createElement(
65
71
  _Paper2.default,
@@ -31,6 +31,13 @@ exports.default = function (theme) {
31
31
  width: 'calc(50% - 4px)',
32
32
  marginLeft: 4
33
33
  },
34
+ absolute: {
35
+ position: 'absolute'
36
+ },
37
+ dayPickerMargin: {
38
+ top: -337,
39
+ width: 'calc(100% - 4px)'
40
+ },
34
41
  // The container element
35
42
  container: {
36
43
  width: '100%',
@@ -485,7 +485,7 @@ HiSelect.defaultProps = {
485
485
  var _initialiseProps = function _initialiseProps() {
486
486
  var _this3 = this;
487
487
 
488
- this.handleClick = function (event) {
488
+ this.handleClick = function () {
489
489
  if (_this3.state.open) {
490
490
  _this3.handleClose();
491
491
  } else {
@@ -127,7 +127,8 @@ var BodyCellBuilder = function (_React$PureComponent) {
127
127
  onOpenDetails = _props.onOpenDetails,
128
128
  lookedUp = _props.lookedUp,
129
129
  fixedColumnWidth = _props.fixedColumnWidth,
130
- props = (0, _objectWithoutProperties3.default)(_props, ['ukey', 'type', 'data', 'view', 'width', 'padding', 'align', 'dense', 'ellipsis', 'onSelect', 'selectable', 'selected', 'sticky', 'dateLocale', 'numberLocale', 'childrenCount', 'onOpenDetails', 'lookedUp', 'fixedColumnWidth']);
130
+ disableContextMenu = _props.disableContextMenu,
131
+ props = (0, _objectWithoutProperties3.default)(_props, ['ukey', 'type', 'data', 'view', 'width', 'padding', 'align', 'dense', 'ellipsis', 'onSelect', 'selectable', 'selected', 'sticky', 'dateLocale', 'numberLocale', 'childrenCount', 'onOpenDetails', 'lookedUp', 'fixedColumnWidth', 'disableContextMenu']);
131
132
 
132
133
 
133
134
  var layoutProps = {
@@ -150,7 +151,6 @@ var BodyCellBuilder = function (_React$PureComponent) {
150
151
  if (typeof data !== 'undefined') {
151
152
 
152
153
  var cellElement = void 0;
153
- var hasContextMenu = true;
154
154
 
155
155
  switch (type) {
156
156
  case cst.TYPE_ACCOUNT:
@@ -200,7 +200,6 @@ var BodyCellBuilder = function (_React$PureComponent) {
200
200
  displayTime: props.displayTime,
201
201
  sticky: sticky
202
202
  });
203
- hasContextMenu = false;
204
203
  break;
205
204
 
206
205
  case cst.TYPE_ICON:
@@ -229,7 +228,6 @@ var BodyCellBuilder = function (_React$PureComponent) {
229
228
  view: view,
230
229
  sticky: sticky
231
230
  });
232
- hasContextMenu = false;
233
231
  break;
234
232
 
235
233
  case cst.TYPE_RATE:
@@ -242,7 +240,6 @@ var BodyCellBuilder = function (_React$PureComponent) {
242
240
  view: view,
243
241
  sticky: sticky
244
242
  });
245
- hasContextMenu = false;
246
243
  break;
247
244
 
248
245
  case cst.TYPE_SENTINEL:
@@ -287,14 +284,14 @@ var BodyCellBuilder = function (_React$PureComponent) {
287
284
  break;
288
285
  }
289
286
 
290
- cellContent = hasContextMenu ? _react2.default.createElement(
287
+ cellContent = disableContextMenu ? cellElement : _react2.default.createElement(
291
288
  _reactContextmenu.ContextMenuTrigger,
292
289
  {
293
290
  id: 'hitable_context_menu_' + this.props.tabId,
294
291
  collect: this.collectContextMenuDatas
295
292
  },
296
293
  cellElement
297
- ) : cellElement;
294
+ );
298
295
  }
299
296
 
300
297
  return _react2.default.createElement(
@@ -308,7 +305,8 @@ var BodyCellBuilder = function (_React$PureComponent) {
308
305
  }(_react2.default.PureComponent);
309
306
 
310
307
  BodyCellBuilder.defaultProps = {
311
- ellipsis: 'right'
308
+ ellipsis: 'right',
309
+ disableContextMenu: true
312
310
  };
313
311
  exports.default = BodyCellBuilder;
314
312
  BodyCellBuilder.propTypes = process.env.NODE_ENV !== "production" ? {
@@ -340,6 +338,10 @@ BodyCellBuilder.propTypes = process.env.NODE_ENV !== "production" ? {
340
338
  * Densité, défini la hauteur de la ligne
341
339
  */
342
340
  dense: _propTypes2.default.bool,
341
+ /**
342
+ * Active/désactive le menu contextuel au clic droit sur les cellules du tableau
343
+ */
344
+ disableContextMenu: _propTypes2.default.bool.isRequired,
343
345
  /**
344
346
  * Ellipsis
345
347
  */
@@ -83,6 +83,10 @@ var styles = exports.styles = function styles(theme) {
83
83
  },
84
84
  center: {
85
85
  textAlign: 'center'
86
+ },
87
+ tooltipContainer: {
88
+ display: 'flex',
89
+ alignItems: 'center'
86
90
  }
87
91
  };
88
92
  };
@@ -113,7 +117,7 @@ var CellImage = function (_React$PureComponent) {
113
117
 
114
118
  var tooltipContent = _react2.default.createElement(
115
119
  'div',
116
- null,
120
+ { className: classes.tooltipContainer },
117
121
  _react2.default.createElement('img', { src: path, alt: value, className: classes.tooltipImg }),
118
122
  _react2.default.createElement(
119
123
  'span',
@@ -67,6 +67,10 @@ var _HiTableFooterScroll = require('./HiTableFooterScroll');
67
67
 
68
68
  var _HiTableFooterScroll2 = _interopRequireDefault(_HiTableFooterScroll);
69
69
 
70
+ var _HiTableFooter = require('./HiTableFooter');
71
+
72
+ var _HiTableFooter2 = _interopRequireDefault(_HiTableFooter);
73
+
70
74
  var _constants = require('./constants');
71
75
 
72
76
  var cst = _interopRequireWildcard(_constants);
@@ -707,7 +711,9 @@ var HiTable = function (_React$Component) {
707
711
  groupBy = _props.groupBy,
708
712
  lookupColumns = _props.lookupColumns,
709
713
  loading = _props.loading,
710
- fixedColumnWidth = _props.fixedColumnWidth;
714
+ fixedColumnWidth = _props.fixedColumnWidth,
715
+ disableContextMenu = _props.disableContextMenu,
716
+ footerContent = _props.footerContent;
711
717
  var _state = this.state,
712
718
  dateUpdate = _state.dateUpdate,
713
719
  isScrollToBottom = _state.isScrollToBottom,
@@ -716,6 +722,13 @@ var HiTable = function (_React$Component) {
716
722
 
717
723
  var headerHeight = dense ? cst.CELL_HEADER_HEIGHT_DENSE : cst.CELL_HEADER_HEIGHT;
718
724
 
725
+ var nbColumnsDisplayed = 0;
726
+ orderedColumns.forEach(function (column) {
727
+ if (column.displayed !== false) {
728
+ nbColumnsDisplayed += 1;
729
+ }
730
+ });
731
+
719
732
  return _react2.default.createElement(
720
733
  'div',
721
734
  { className: classes.root },
@@ -785,7 +798,8 @@ var HiTable = function (_React$Component) {
785
798
  groupByIds: groupByIds,
786
799
  lookupColumns: lookupColumns,
787
800
  loading: loading,
788
- fixedColumnWidth: fixedColumnWidth
801
+ fixedColumnWidth: fixedColumnWidth,
802
+ disableContextMenu: disableContextMenu
789
803
  }),
790
804
  infiniteScroll && _react2.default.createElement(_HiTableFooterScroll2.default, {
791
805
  tabId: tabId,
@@ -794,7 +808,15 @@ var HiTable = function (_React$Component) {
794
808
  maxAutoRequest: 3,
795
809
  isScrollToBottom: isScrollToBottom,
796
810
  translations: translations
797
- })
811
+ }),
812
+ !infiniteScroll && footerContent && _react2.default.createElement(
813
+ _HiTableFooter2.default,
814
+ {
815
+ nbColumnsDisplayed: nbColumnsDisplayed,
816
+ view: view
817
+ },
818
+ footerContent
819
+ )
798
820
  ),
799
821
  _react2.default.createElement(_HiTableContextMenu2.default, {
800
822
  tabId: tabId,
@@ -856,7 +878,8 @@ HiTable.defaultProps = {
856
878
  view: 'l',
857
879
  lookupColumns: [],
858
880
  loading: false,
859
- fixedColumnWidth: true
881
+ fixedColumnWidth: true,
882
+ disableContextMenu: true
860
883
  };
861
884
  HiTable.propTypes = process.env.NODE_ENV !== "production" ? {
862
885
  /**
@@ -883,6 +906,10 @@ HiTable.propTypes = process.env.NODE_ENV !== "production" ? {
883
906
  * Densité d'affichage (joue sur la hauteur des lignes)
884
907
  */
885
908
  dense: _propTypes2.default.bool,
909
+ /**
910
+ * Active/désactive le menu contextuel au clic droit sur les cellules du tableau
911
+ */
912
+ disableContextMenu: _propTypes2.default.bool.isRequired,
886
913
  /**
887
914
  * Active le filtre sur les colonnes filtrables
888
915
  */
@@ -892,6 +919,10 @@ HiTable.propTypes = process.env.NODE_ENV !== "production" ? {
892
919
  * Sinon les colonnes s'adaptent à l'espace disponible
893
920
  */
894
921
  fixedColumnWidth: _propTypes2.default.bool,
922
+ /**
923
+ * Ajoute un footer avec le contenu footerContent à l'intérieur
924
+ */
925
+ footerContent: _propTypes2.default.node,
895
926
  /**
896
927
  * Id de la colonne par laquelle sont regroupé les éléments
897
928
  */
@@ -966,6 +997,9 @@ HiTable.propTypes = process.env.NODE_ENV !== "production" ? {
966
997
  /**
967
998
  * Fonction de callback sur le tri d'une colonne
968
999
  * Passe l'id de la colonne et la direction du tri (ou false si tri par défaut)
1000
+ *
1001
+ * @param {string} column id
1002
+ * @param {string} direction
969
1003
  */
970
1004
  onSort: _propTypes2.default.func,
971
1005
  /**
@@ -287,7 +287,8 @@ var HiTableBody = function (_React$Component) {
287
287
  sortedColumnId = _props.sortedColumnId,
288
288
  lookupColumns = _props.lookupColumns,
289
289
  loading = _props.loading,
290
- fixedColumnWidth = _props.fixedColumnWidth;
290
+ fixedColumnWidth = _props.fixedColumnWidth,
291
+ disableContextMenu = _props.disableContextMenu;
291
292
  var _state = this.state,
292
293
  openedParentRowId = _state.openedParentRowId,
293
294
  openedDetailsRowIdList = _state.openedDetailsRowIdList;
@@ -386,7 +387,8 @@ var HiTableBody = function (_React$Component) {
386
387
  sticky: sticky,
387
388
  tabId: tabId,
388
389
  view: view,
389
- fixedColumnWidth: fixedColumnWidth
390
+ fixedColumnWidth: fixedColumnWidth,
391
+ disableContextMenu: disableContextMenu
390
392
  });
391
393
 
392
394
  if (hasChildren && openedParentRowId === row.rowId) {
@@ -416,7 +418,8 @@ var HiTableBody = function (_React$Component) {
416
418
  dense: dense,
417
419
  sticky: sticky,
418
420
  isDetail: true,
419
- fixedColumnWidth: fixedColumnWidth
421
+ fixedColumnWidth: fixedColumnWidth,
422
+ disableContextMenu: disableContextMenu
420
423
  };
421
424
 
422
425
  tableRows.push(_react2.default.createElement(_BodyRow2.default, (0, _extends3.default)({ key: row.rowId + '-' + detailRow.rowId }, detailRowProps)));
@@ -457,7 +460,8 @@ HiTableBody.defaultProps = {
457
460
  height: 450,
458
461
  sticky: true,
459
462
  view: 'l',
460
- loading: false
463
+ loading: false,
464
+ disableContextMenu: true
461
465
  };
462
466
  HiTableBody.propTypes = process.env.NODE_ENV !== "production" ? {
463
467
  /**
@@ -485,6 +489,10 @@ HiTableBody.propTypes = process.env.NODE_ENV !== "production" ? {
485
489
  * Densité d'affichage (joue sur la hauteur des lignes)
486
490
  */
487
491
  dense: _propTypes2.default.bool,
492
+ /**
493
+ * Active/désactive le menu contextuel au clic droit sur les cellules du tableau
494
+ */
495
+ disableContextMenu: _propTypes2.default.bool.isRequired,
488
496
  /**
489
497
  * Fixe la taille des colonnes selon le type de vue
490
498
  * Sinon les colonnes s'adaptent à l'espace disponible