@semcore/data-table 17.0.0-prerelease.30 → 17.0.0-prerelease.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/lib/cjs/components/AccordionRows/AccordionRows.js +50 -51
  3. package/lib/cjs/components/AccordionRows/AccordionRows.js.map +1 -1
  4. package/lib/cjs/components/Body/Body.js +65 -88
  5. package/lib/cjs/components/Body/Body.js.map +1 -1
  6. package/lib/cjs/components/Body/Body.types.js.map +1 -1
  7. package/lib/cjs/components/Body/Cell.js +50 -51
  8. package/lib/cjs/components/Body/Cell.js.map +1 -1
  9. package/lib/cjs/components/Body/LimitOverlay.js +50 -51
  10. package/lib/cjs/components/Body/LimitOverlay.js.map +1 -1
  11. package/lib/cjs/components/Body/Row.js +65 -90
  12. package/lib/cjs/components/Body/Row.js.map +1 -1
  13. package/lib/cjs/components/Body/Row.types.js.map +1 -1
  14. package/lib/cjs/components/Body/RowGroup.js +133 -0
  15. package/lib/cjs/components/Body/RowGroup.js.map +1 -0
  16. package/lib/cjs/components/Body/style.shadow.css +86 -152
  17. package/lib/cjs/components/DataTable/DataTable.js +35 -12
  18. package/lib/cjs/components/DataTable/DataTable.js.map +1 -1
  19. package/lib/cjs/components/DataTable/DataTable.types.js.map +1 -1
  20. package/lib/cjs/components/Head/Column.js +37 -36
  21. package/lib/cjs/components/Head/Column.js.map +1 -1
  22. package/lib/cjs/components/Head/Group.js +36 -36
  23. package/lib/cjs/components/Head/Head.js +81 -50
  24. package/lib/cjs/components/Head/Head.js.map +1 -1
  25. package/lib/cjs/components/Head/Head.types.js.map +1 -1
  26. package/lib/cjs/components/Head/style.shadow.css +0 -1
  27. package/lib/cjs/components/RowSelector/RowsSelector.js +112 -0
  28. package/lib/cjs/components/RowSelector/RowsSelector.js.map +1 -0
  29. package/lib/cjs/index.js +7 -0
  30. package/lib/cjs/index.js.map +1 -1
  31. package/lib/cjs/store/SelectableRows.js +129 -0
  32. package/lib/cjs/store/SelectableRows.js.map +1 -0
  33. package/lib/es6/components/AccordionRows/AccordionRows.js +50 -51
  34. package/lib/es6/components/AccordionRows/AccordionRows.js.map +1 -1
  35. package/lib/es6/components/Body/Body.js +67 -90
  36. package/lib/es6/components/Body/Body.js.map +1 -1
  37. package/lib/es6/components/Body/Body.types.js.map +1 -1
  38. package/lib/es6/components/Body/Cell.js +50 -51
  39. package/lib/es6/components/Body/Cell.js.map +1 -1
  40. package/lib/es6/components/Body/LimitOverlay.js +50 -51
  41. package/lib/es6/components/Body/LimitOverlay.js.map +1 -1
  42. package/lib/es6/components/Body/Row.js +66 -91
  43. package/lib/es6/components/Body/Row.js.map +1 -1
  44. package/lib/es6/components/Body/Row.types.js.map +1 -1
  45. package/lib/es6/components/Body/RowGroup.js +125 -0
  46. package/lib/es6/components/Body/RowGroup.js.map +1 -0
  47. package/lib/es6/components/Body/style.shadow.css +86 -152
  48. package/lib/es6/components/DataTable/DataTable.js +35 -12
  49. package/lib/es6/components/DataTable/DataTable.js.map +1 -1
  50. package/lib/es6/components/DataTable/DataTable.types.js.map +1 -1
  51. package/lib/es6/components/Head/Column.js +37 -36
  52. package/lib/es6/components/Head/Column.js.map +1 -1
  53. package/lib/es6/components/Head/Group.js +36 -36
  54. package/lib/es6/components/Head/Head.js +81 -50
  55. package/lib/es6/components/Head/Head.js.map +1 -1
  56. package/lib/es6/components/Head/Head.types.js.map +1 -1
  57. package/lib/es6/components/Head/style.shadow.css +0 -1
  58. package/lib/es6/components/RowSelector/RowsSelector.js +104 -0
  59. package/lib/es6/components/RowSelector/RowsSelector.js.map +1 -0
  60. package/lib/es6/index.js +2 -1
  61. package/lib/es6/index.js.map +1 -1
  62. package/lib/es6/store/SelectableRows.js +121 -0
  63. package/lib/es6/store/SelectableRows.js.map +1 -0
  64. package/lib/esm/components/AccordionRows/AccordionRows.mjs +51 -52
  65. package/lib/esm/components/Body/Body.mjs +68 -91
  66. package/lib/esm/components/Body/Cell.mjs +51 -52
  67. package/lib/esm/components/Body/LimitOverlay.mjs +51 -52
  68. package/lib/esm/components/Body/Row.mjs +66 -90
  69. package/lib/esm/components/Body/RowGroup.mjs +124 -0
  70. package/lib/esm/components/Body/style.shadow.css +86 -152
  71. package/lib/esm/components/DataTable/DataTable.mjs +34 -12
  72. package/lib/esm/components/Head/Column.mjs +38 -37
  73. package/lib/esm/components/Head/Group.mjs +37 -37
  74. package/lib/esm/components/Head/Head.mjs +83 -51
  75. package/lib/esm/components/Head/style.shadow.css +0 -1
  76. package/lib/esm/components/RowSelector/RowsSelector.mjs +107 -0
  77. package/lib/esm/index.mjs +2 -0
  78. package/lib/esm/store/SelectableRows.mjs +123 -0
  79. package/lib/types/components/Body/Body.types.d.ts +2 -1
  80. package/lib/types/components/Body/Row.d.ts +0 -2
  81. package/lib/types/components/Body/Row.types.d.ts +2 -1
  82. package/lib/types/components/Body/RowGroup.d.ts +19 -0
  83. package/lib/types/components/DataTable/DataTable.types.d.ts +21 -12
  84. package/lib/types/components/Head/Head.types.d.ts +2 -1
  85. package/lib/types/components/RowSelector/RowsSelector.d.ts +31 -0
  86. package/lib/types/index.d.ts +2 -1
  87. package/lib/types/store/SelectableRows.d.ts +56 -0
  88. package/package.json +18 -18
@@ -27,6 +27,7 @@ const style = (/*__reshadow_css_start__*/_sstyled.insert(/*__inner_css_start__*/
27
27
  "_gridTemplateRows": "__gridTemplateRows_wo0cb_gg_",
28
28
  "--gridTemplateRows": "--gridTemplateRows_wo0cb"
29
29
  });
30
+ import { SelectableRows } from '../../store/SelectableRows';
30
31
  /*!__reshadow-styles__:"../../style/scroll-shadows.shadow.css"*/
31
32
  const scrollStyles = (/*__reshadow_css_start__*/_sstyled2.insert(/*__inner_css_start__*/".___SScrollArea_j4820_gg_{width:-moz-fit-content;width:fit-content}.___SScrollArea_j4820_gg_ .___SContainer_j4820_gg_{overflow:visible;overflow:initial}.___SScrollArea_j4820_gg_ .___SContainer_j4820_gg_._scrollDirection_both_j4820_gg_{overflow:auto}.___SScrollArea_j4820_gg_ .___SContainer_j4820_gg_._scrollDirection_both_j4820_gg_.__loading_j4820_gg_,.___SScrollArea_j4820_gg_ .___SContainer_j4820_gg_._scrollDirection_horizontal_j4820_gg_.__loading_j4820_gg_,.___SScrollArea_j4820_gg_ .___SContainer_j4820_gg_._scrollDirection_vertical_j4820_gg_.__loading_j4820_gg_{overflow:hidden}.___SScrollArea_j4820_gg_ .___SContainer_j4820_gg_._scrollDirection_horizontal_j4820_gg_{overflow-x:auto;overflow-y:initial}.___SScrollArea_j4820_gg_ .___SContainer_j4820_gg_._scrollDirection_vertical_j4820_gg_{overflow-x:initial;overflow-y:auto}.___SScrollArea_j4820_gg_ .___SContainer_j4820_gg_.__headerHeight_j4820_gg_{scroll-padding-top:var(--headerHeight_j4820)}.___SScrollArea_j4820_gg_ .___SContainer_j4820_gg_.__leftScrollPadding_j4820_gg_{scroll-padding-left:var(--leftScrollPadding_j4820)}.___SScrollArea_j4820_gg_ .___SContainer_j4820_gg_.__rightScrollPadding_j4820_gg_{scroll-padding-right:var(--rightScrollPadding_j4820)}.___SScrollArea_j4820_gg_ .___SShadowHorizontal_j4820_gg_::before,.___SScrollArea_j4820_gg_ .___SShadowHorizontal_j4820_gg_:after,.___SScrollArea_j4820_gg_ .___SShadowVertical_j4820_gg_::after{z-index:20}.___SScrollArea_j4820_gg_ .___SShadowHorizontal_j4820_gg_.__leftOffset_j4820_gg_::before,.___SScrollArea_j4820_gg_ .___SShadowHorizontal_j4820_gg_.__rightOffset_j4820_gg_::after,.___SScrollArea_j4820_gg_ .___SShadowVertical_j4820_gg_::before{display:none}", /*__inner_css_end__*/"j4820_gg_"),
32
33
  /*__reshadow_css_end__*/
@@ -93,7 +94,7 @@ class DataTableRoot extends Component {
93
94
  });
94
95
  _defineProperty(this, "selectAllMessageTimer", 0);
95
96
  _defineProperty(this, "headerNodesMap", new Map());
96
- _defineProperty(this, "isPressedShift", false);
97
+ _defineProperty(this, "selectedRowsContainer", void 0);
97
98
  _defineProperty(this, "lastSelectedRowKey", void 0);
98
99
  _defineProperty(this, "state", {
99
100
  scrollTop: 0,
@@ -139,14 +140,20 @@ class DataTableRoot extends Component {
139
140
  this.initFocusableCell([this.hasFocusableInHeader() ? opt.rowIndex + 1 : opt.rowIndex, opt.colIndex]);
140
141
  }
141
142
  });
143
+ _defineProperty(this, "handleSelectAllRows", (selectedRows, event) => {
144
+ if (!('onSelectedRowsChange' in this.asProps) || !this.asProps.onSelectedRowsChange || !Array.isArray(selectedRows)) return;
145
+ this.asProps.onSelectedRowsChange(selectedRows, event);
146
+ });
142
147
  _defineProperty(this, "handleSelectRow", (isSelected, selectedRowIndex, row, event) => {
143
148
  const {
144
- selectedRows,
149
+ selectedRows
150
+ } = this.asProps;
151
+ if (!selectedRows || !('onSelectedRowsChange' in this.asProps) || !this.asProps.onSelectedRowsChange || !Array.isArray(selectedRows)) return;
152
+ const {
145
153
  onSelectedRowsChange
146
154
  } = this.asProps;
147
- if (!selectedRows || !onSelectedRowsChange) return;
148
155
  const selectedRowsSet = new Set(selectedRows);
149
- if (this.isPressedShift && selectedRowsSet.size > 0 && this.lastSelectedRowKey && (isSelected ? selectedRowsSet.has(this.lastSelectedRowKey) : true)) {
156
+ if (this.selectedRowsContainer.isPressedShift && selectedRowsSet.size > 0 && this.lastSelectedRowKey && (isSelected ? selectedRowsSet.has(this.lastSelectedRowKey) : true)) {
150
157
  let select = false;
151
158
  const firstColumnKey = this.columns[0].name;
152
159
  const isMerged = this.flatRows.some(item => item[firstColumnKey] instanceof MergedRowsCell);
@@ -357,13 +364,13 @@ class DataTableRoot extends Component {
357
364
  }
358
365
  case 'Shift':
359
366
  {
360
- this.isPressedShift = true;
367
+ this.selectedRowsContainer.isPressedShift = true;
361
368
  }
362
369
  }
363
370
  });
364
371
  _defineProperty(this, "handleKeyUp", e => {
365
372
  if (e.key === 'Shift') {
366
- this.isPressedShift = false;
373
+ this.selectedRowsContainer.isPressedShift = false;
367
374
  }
368
375
  });
369
376
  _defineProperty(this, "handleScroll", trottle(e => {
@@ -544,6 +551,11 @@ class DataTableRoot extends Component {
544
551
  this.calculatedRows = this.getRows();
545
552
  this.flatRows = this.calculatedRows.flat();
546
553
  this.tmpData = props.data;
554
+ if (Array.isArray(props.selectedRows) || !props.selectedRows) {
555
+ this.selectedRowsContainer = new SelectableRows();
556
+ } else {
557
+ this.selectedRowsContainer = props.selectedRows;
558
+ }
547
559
  }
548
560
  componentDidMount() {
549
561
  const {
@@ -577,7 +589,7 @@ class DataTableRoot extends Component {
577
589
  this.calculateVerticalShadow();
578
590
  }
579
591
  }
580
- if (prevProps.selectedRows !== selectedRows && selectedRows !== undefined) {
592
+ if (prevProps.selectedRows !== selectedRows && selectedRows !== undefined && Array.isArray(selectedRows)) {
581
593
  const selectedRowsSet = new Set(selectedRows);
582
594
  const allChecked = [];
583
595
  const allUnchecked = [];
@@ -594,6 +606,9 @@ class DataTableRoot extends Component {
594
606
  this.setSelectAllMessage(false);
595
607
  }
596
608
  }
609
+ if (prevProps.selectedRows !== selectedRows && selectedRows !== undefined && !Array.isArray(selectedRows)) {
610
+ this.selectedRowsContainer = selectedRows;
611
+ }
597
612
  }
598
613
  componentWillUnmount() {
599
614
  if (canUseDOM()) {
@@ -663,7 +678,6 @@ class DataTableRoot extends Component {
663
678
  getI18nText,
664
679
  uid,
665
680
  headerProps,
666
- onSelectedRowsChange,
667
681
  selectedRows,
668
682
  sideIndents,
669
683
  variant
@@ -695,7 +709,7 @@ class DataTableRoot extends Component {
695
709
  totalRows: this.totalRows,
696
710
  selectedRows,
697
711
  flatRows: this.getFlatRows(),
698
- onChangeSelectAll: onSelectedRowsChange,
712
+ onChangeSelectAll: Array.isArray(selectedRows) ? this.handleSelectAllRows : undefined,
699
713
  getFixedStyle: this.getFixedStyle,
700
714
  onCellClick: this.handleCellClick,
701
715
  shadowVertical,
@@ -765,7 +779,7 @@ class DataTableRoot extends Component {
765
779
  renderEmptyData,
766
780
  sideIndents,
767
781
  selectedRows,
768
- onSelectRow: this.handleSelectRow,
782
+ onSelectRow: Array.isArray(selectedRows) ? this.handleSelectRow : undefined,
769
783
  getFixedStyle: this.getFixedStyle,
770
784
  onCellClick: this.handleCellClick,
771
785
  rawData,
@@ -827,7 +841,7 @@ class DataTableRoot extends Component {
827
841
  const width = w ?? (this.columns.some(c => c.gtcWidth === 'auto' || c.gtcWidth === '1fr') ? '100%' : undefined);
828
842
  let gridTemplateRows = undefined;
829
843
  if (virtualScroll && typeof virtualScroll !== 'boolean' && 'rowHeight' in virtualScroll) {
830
- gridTemplateRows = `auto auto repeat(${this.totalRows}, minmax(${virtualScroll.rowHeight}px, auto)`;
844
+ gridTemplateRows = `auto auto repeat(${this.totalRows}, minmax(${virtualScroll.rowHeight}px, auto))`;
831
845
  }
832
846
  return _ref2 = sstyled(styles), /*#__PURE__*/React.createElement(ScrollArea, _ref2.cn("ScrollArea", {
833
847
  "leftOffset": offsetLeftSum,
@@ -1019,12 +1033,14 @@ class DataTableRoot extends Component {
1019
1033
  const {
1020
1034
  data,
1021
1035
  uid,
1022
- uniqueRowKey
1036
+ uniqueRowKey,
1037
+ selectedRows
1023
1038
  } = this.props;
1024
1039
  if (this.tmpData === data) {
1025
1040
  return this.calculatedRows;
1026
1041
  }
1027
1042
  this.tmpData = data;
1043
+ const availableRowKeys = [];
1028
1044
  const rows = [];
1029
1045
  const columnNames = columns.map(column => column.name);
1030
1046
  let rowIndex = 0;
@@ -1096,6 +1112,10 @@ class DataTableRoot extends Component {
1096
1112
  dtRow[value] = '';
1097
1113
  });
1098
1114
  }
1115
+ if (!excludeColumns) {
1116
+ // we should add only the main row in mergedRows or default rows
1117
+ availableRowKeys.push(dtRow[UNIQ_ROW_KEY]);
1118
+ }
1099
1119
  return dtRow;
1100
1120
  };
1101
1121
  data.forEach(row => {
@@ -1152,6 +1172,9 @@ class DataTableRoot extends Component {
1152
1172
  }
1153
1173
  });
1154
1174
  this.calculatedRows = rows;
1175
+ if (selectedRows && !Array.isArray(selectedRows)) {
1176
+ selectedRows.setAvailableKeys(availableRowKeys);
1177
+ }
1155
1178
  return rows;
1156
1179
  }
1157
1180
  calculateGridTemplateColumn(c) {