@carbon/ibm-products 2.43.2-canary.4 → 2.43.2-canary.42

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 (211) hide show
  1. package/css/index-full-carbon.css +52 -3
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +1 -1
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +12 -0
  6. package/css/index-without-carbon-released-only.css.map +1 -1
  7. package/css/index-without-carbon-released-only.min.css +1 -1
  8. package/css/index-without-carbon-released-only.min.css.map +1 -1
  9. package/css/index-without-carbon.css +52 -3
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +1 -1
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +52 -3
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +1 -1
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/ConditionBuilder/ConditionBlock/ConditionBlock.js +23 -21
  18. package/es/components/ConditionBuilder/ConditionBuilder.js +67 -20
  19. package/es/components/ConditionBuilder/ConditionBuilderActions/ConditionBuilderActions.d.ts +15 -0
  20. package/es/components/ConditionBuilder/ConditionBuilderActions/ConditionBuilderActions.js +129 -0
  21. package/es/components/ConditionBuilder/ConditionBuilderAdd/ConditionBuilderAdd.js +6 -4
  22. package/es/components/ConditionBuilder/ConditionBuilderButton/ConditionBuilderButton.d.ts +5 -1
  23. package/es/components/ConditionBuilder/ConditionBuilderButton/ConditionBuilderButton.js +16 -4
  24. package/es/components/ConditionBuilder/ConditionBuilderConnector/ConditionConnector.js +2 -2
  25. package/es/components/ConditionBuilder/ConditionBuilderConnector/GroupConnector.js +2 -2
  26. package/es/components/ConditionBuilder/ConditionBuilderContent/ConditionBuilderContent.d.ts +9 -11
  27. package/es/components/ConditionBuilder/ConditionBuilderContent/ConditionBuilderContent.js +36 -32
  28. package/es/components/ConditionBuilder/ConditionBuilderContext/ConditionBuilderProvider.d.ts +0 -1
  29. package/es/components/ConditionBuilder/ConditionBuilderContext/ConditionBuilderProvider.js +7 -2
  30. package/es/components/ConditionBuilder/ConditionBuilderContext/DataConfigs.d.ts +6 -1
  31. package/es/components/ConditionBuilder/ConditionBuilderContext/DataConfigs.js +18 -10
  32. package/es/components/ConditionBuilder/ConditionBuilderContext/translationObject.d.ts +39 -36
  33. package/es/components/ConditionBuilder/ConditionBuilderContext/translationObject.js +12 -10
  34. package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItem.d.ts +1 -1
  35. package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItem.js +24 -16
  36. package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemNumber/ConditionBuilderItemNumber.js +19 -4
  37. package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemOption/ItemOption.d.ts +13 -0
  38. package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemOption/ItemOption.js +109 -0
  39. package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemOption/{ConditionBuilderItemOption.d.ts → ItemOptionForValueField.d.ts} +2 -2
  40. package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemOption/{ConditionBuilderItemOption.js → ItemOptionForValueField.js} +58 -33
  41. package/es/components/ConditionBuilder/ConditionGroupBuilder/ConditionGroupBuilder.js +4 -6
  42. package/es/components/ConditionBuilder/ConditionPreview/ConditionPreview.js +14 -5
  43. package/es/components/ConditionBuilder/utils/handleKeyboardEvents.js +1 -2
  44. package/es/components/ConditionBuilder/utils/util.d.ts +1 -0
  45. package/es/components/ConditionBuilder/utils/util.js +16 -1
  46. package/es/components/DataSpreadsheet/DataSpreadsheet.d.ts +12 -0
  47. package/es/components/DataSpreadsheet/DataSpreadsheet.js +51 -19
  48. package/es/components/DataSpreadsheet/DataSpreadsheetBody.d.ts +21 -1
  49. package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +40 -8
  50. package/es/components/DataSpreadsheet/DataSpreadsheetHeader.d.ts +8 -0
  51. package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +20 -6
  52. package/es/components/DataSpreadsheet/hooks/useSpreadsheetMouseMove.js +4 -1
  53. package/es/components/DataSpreadsheet/hooks/useSpreadsheetMouseUp.d.ts +3 -1
  54. package/es/components/DataSpreadsheet/hooks/useSpreadsheetMouseUp.js +15 -3
  55. package/es/components/DataSpreadsheet/types/index.d.ts +1 -1
  56. package/es/components/DataSpreadsheet/utils/moveColumnIndicatorLine.js +34 -2
  57. package/es/components/Datagrid/Datagrid/Datagrid.d.ts +0 -4
  58. package/es/components/Datagrid/Datagrid/Datagrid.js +4 -9
  59. package/es/components/Datagrid/Datagrid/DatagridContent.js +1 -1
  60. package/es/components/Datagrid/Datagrid/DatagridHeaderRow.js +23 -8
  61. package/es/components/Datagrid/Datagrid/DatagridRow.js +21 -8
  62. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +6 -1
  63. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +6 -1
  64. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.d.ts +3 -1
  65. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +6 -3
  66. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.d.ts +1 -1
  67. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +21 -16
  68. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditButton/InlineEditButton.js +2 -3
  69. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditCell/InlineEditCell.js +74 -11
  70. package/es/components/Datagrid/Datagrid/addons/InlineEdit/handleGridKeyPress.js +10 -2
  71. package/es/components/Datagrid/types/index.d.ts +37 -4
  72. package/es/components/Datagrid/useActionsColumn.d.ts +8 -1
  73. package/es/components/Datagrid/useActionsColumn.js +7 -6
  74. package/es/components/Datagrid/useColumnRightAlign.d.ts +8 -1
  75. package/es/components/Datagrid/useColumnRightAlign.js +4 -3
  76. package/es/components/Datagrid/useCustomizeColumns.d.ts +8 -1
  77. package/es/components/Datagrid/useCustomizeColumns.js +4 -3
  78. package/es/components/Datagrid/useDefaultStringRenderer.js +0 -1
  79. package/es/components/Datagrid/useInlineEdit.js +12 -2
  80. package/es/components/Datagrid/useNestedRowExpander.js +1 -3
  81. package/es/components/Datagrid/useNestedRows.js +32 -13
  82. package/es/components/Datagrid/useRowExpander.js +1 -3
  83. package/es/components/Decorator/Decorator.js +2 -1
  84. package/es/components/DecoratorBase/DecoratorBase.js +3 -5
  85. package/es/components/DecoratorDualButton/DecoratorDualButton.js +2 -1
  86. package/es/components/DecoratorLink/DecoratorLink.js +2 -1
  87. package/es/components/DecoratorSingleButton/DecoratorSingleButton.js +2 -1
  88. package/es/components/EditTearsheet/EditTearsheet.d.ts +5 -1
  89. package/es/components/EditTearsheet/EditTearsheet.js +0 -1
  90. package/es/components/EditTearsheet/EditTearsheetForm.d.ts +45 -2
  91. package/es/components/EditTearsheet/EditTearsheetForm.js +3 -0
  92. package/es/components/HTTPErrors/HTTPError403/HTTPError403.js +6 -0
  93. package/es/components/HTTPErrors/HTTPError404/HTTPError404.js +6 -0
  94. package/es/components/HTTPErrors/HTTPErrorOther/HTTPErrorOther.js +6 -0
  95. package/es/components/PageHeader/PageHeader.js +1 -0
  96. package/es/components/RemoveModal/RemoveModal.d.ts +4 -0
  97. package/es/components/RemoveModal/RemoveModal.js +7 -1
  98. package/es/components/StatusIndicator/StatusIndicatorStep.js +87 -0
  99. package/es/components/Tearsheet/Tearsheet.d.ts +8 -1
  100. package/es/components/Tearsheet/Tearsheet.js +9 -1
  101. package/es/components/Tearsheet/TearsheetNarrow.d.ts +11 -0
  102. package/es/components/Tearsheet/TearsheetNarrow.js +12 -0
  103. package/es/components/Tearsheet/TearsheetShell.d.ts +10 -0
  104. package/es/components/Tearsheet/TearsheetShell.js +17 -3
  105. package/es/components/Toolbar/ToolbarButton.js +1 -1
  106. package/es/components/index.d.ts +1 -1
  107. package/es/index.js +1 -0
  108. package/lib/components/ConditionBuilder/ConditionBlock/ConditionBlock.js +23 -21
  109. package/lib/components/ConditionBuilder/ConditionBuilder.js +67 -20
  110. package/lib/components/ConditionBuilder/ConditionBuilderActions/ConditionBuilderActions.d.ts +15 -0
  111. package/lib/components/ConditionBuilder/ConditionBuilderActions/ConditionBuilderActions.js +137 -0
  112. package/lib/components/ConditionBuilder/ConditionBuilderAdd/ConditionBuilderAdd.js +6 -3
  113. package/lib/components/ConditionBuilder/ConditionBuilderButton/ConditionBuilderButton.d.ts +5 -1
  114. package/lib/components/ConditionBuilder/ConditionBuilderButton/ConditionBuilderButton.js +16 -4
  115. package/lib/components/ConditionBuilder/ConditionBuilderConnector/ConditionConnector.js +2 -2
  116. package/lib/components/ConditionBuilder/ConditionBuilderConnector/GroupConnector.js +2 -2
  117. package/lib/components/ConditionBuilder/ConditionBuilderContent/ConditionBuilderContent.d.ts +9 -11
  118. package/lib/components/ConditionBuilder/ConditionBuilderContent/ConditionBuilderContent.js +36 -32
  119. package/lib/components/ConditionBuilder/ConditionBuilderContext/ConditionBuilderProvider.d.ts +0 -1
  120. package/lib/components/ConditionBuilder/ConditionBuilderContext/ConditionBuilderProvider.js +7 -2
  121. package/lib/components/ConditionBuilder/ConditionBuilderContext/DataConfigs.d.ts +6 -1
  122. package/lib/components/ConditionBuilder/ConditionBuilderContext/DataConfigs.js +18 -10
  123. package/lib/components/ConditionBuilder/ConditionBuilderContext/translationObject.d.ts +39 -36
  124. package/lib/components/ConditionBuilder/ConditionBuilderContext/translationObject.js +12 -10
  125. package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItem.d.ts +1 -1
  126. package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItem.js +23 -15
  127. package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemNumber/ConditionBuilderItemNumber.js +20 -5
  128. package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemOption/ItemOption.d.ts +13 -0
  129. package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemOption/ItemOption.js +117 -0
  130. package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemOption/{ConditionBuilderItemOption.d.ts → ItemOptionForValueField.d.ts} +2 -2
  131. package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemOption/{ConditionBuilderItemOption.js → ItemOptionForValueField.js} +56 -31
  132. package/lib/components/ConditionBuilder/ConditionGroupBuilder/ConditionGroupBuilder.js +4 -6
  133. package/lib/components/ConditionBuilder/ConditionPreview/ConditionPreview.js +14 -4
  134. package/lib/components/ConditionBuilder/utils/handleKeyboardEvents.js +1 -2
  135. package/lib/components/ConditionBuilder/utils/util.d.ts +1 -0
  136. package/lib/components/ConditionBuilder/utils/util.js +17 -0
  137. package/lib/components/DataSpreadsheet/DataSpreadsheet.d.ts +12 -0
  138. package/lib/components/DataSpreadsheet/DataSpreadsheet.js +51 -19
  139. package/lib/components/DataSpreadsheet/DataSpreadsheetBody.d.ts +21 -1
  140. package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +40 -8
  141. package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.d.ts +8 -0
  142. package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +20 -6
  143. package/lib/components/DataSpreadsheet/hooks/useSpreadsheetMouseMove.js +4 -1
  144. package/lib/components/DataSpreadsheet/hooks/useSpreadsheetMouseUp.d.ts +3 -1
  145. package/lib/components/DataSpreadsheet/hooks/useSpreadsheetMouseUp.js +15 -3
  146. package/lib/components/DataSpreadsheet/types/index.d.ts +1 -1
  147. package/lib/components/DataSpreadsheet/utils/moveColumnIndicatorLine.js +34 -2
  148. package/lib/components/Datagrid/Datagrid/Datagrid.d.ts +0 -4
  149. package/lib/components/Datagrid/Datagrid/Datagrid.js +4 -9
  150. package/lib/components/Datagrid/Datagrid/DatagridContent.js +1 -1
  151. package/lib/components/Datagrid/Datagrid/DatagridHeaderRow.js +23 -8
  152. package/lib/components/Datagrid/Datagrid/DatagridRow.js +21 -8
  153. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +6 -1
  154. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +6 -1
  155. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.d.ts +3 -1
  156. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +6 -3
  157. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.d.ts +1 -1
  158. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +21 -16
  159. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditButton/InlineEditButton.js +2 -3
  160. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditCell/InlineEditCell.js +73 -10
  161. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/handleGridKeyPress.js +10 -2
  162. package/lib/components/Datagrid/types/index.d.ts +37 -4
  163. package/lib/components/Datagrid/useActionsColumn.d.ts +8 -1
  164. package/lib/components/Datagrid/useActionsColumn.js +7 -6
  165. package/lib/components/Datagrid/useColumnRightAlign.d.ts +8 -1
  166. package/lib/components/Datagrid/useColumnRightAlign.js +4 -3
  167. package/lib/components/Datagrid/useCustomizeColumns.d.ts +8 -1
  168. package/lib/components/Datagrid/useCustomizeColumns.js +4 -3
  169. package/lib/components/Datagrid/useDefaultStringRenderer.js +0 -1
  170. package/lib/components/Datagrid/useInlineEdit.js +12 -2
  171. package/lib/components/Datagrid/useNestedRowExpander.js +1 -3
  172. package/lib/components/Datagrid/useNestedRows.js +32 -13
  173. package/lib/components/Datagrid/useRowExpander.js +1 -3
  174. package/lib/components/Decorator/Decorator.js +2 -1
  175. package/lib/components/DecoratorBase/DecoratorBase.js +3 -5
  176. package/lib/components/DecoratorDualButton/DecoratorDualButton.js +2 -1
  177. package/lib/components/DecoratorLink/DecoratorLink.js +2 -1
  178. package/lib/components/DecoratorSingleButton/DecoratorSingleButton.js +2 -1
  179. package/lib/components/EditTearsheet/EditTearsheet.d.ts +5 -1
  180. package/lib/components/EditTearsheet/EditTearsheet.js +0 -1
  181. package/lib/components/EditTearsheet/EditTearsheetForm.d.ts +45 -2
  182. package/lib/components/EditTearsheet/EditTearsheetForm.js +3 -0
  183. package/lib/components/HTTPErrors/HTTPError403/HTTPError403.js +6 -0
  184. package/lib/components/HTTPErrors/HTTPError404/HTTPError404.js +6 -0
  185. package/lib/components/HTTPErrors/HTTPErrorOther/HTTPErrorOther.js +6 -0
  186. package/lib/components/PageHeader/PageHeader.js +1 -0
  187. package/lib/components/RemoveModal/RemoveModal.d.ts +4 -0
  188. package/lib/components/RemoveModal/RemoveModal.js +7 -1
  189. package/lib/components/StatusIndicator/StatusIndicatorStep.js +94 -0
  190. package/lib/components/Tearsheet/Tearsheet.d.ts +8 -1
  191. package/lib/components/Tearsheet/Tearsheet.js +9 -1
  192. package/lib/components/Tearsheet/TearsheetNarrow.d.ts +11 -0
  193. package/lib/components/Tearsheet/TearsheetNarrow.js +12 -0
  194. package/lib/components/Tearsheet/TearsheetShell.d.ts +10 -0
  195. package/lib/components/Tearsheet/TearsheetShell.js +16 -2
  196. package/lib/components/Toolbar/ToolbarButton.js +1 -1
  197. package/lib/components/index.d.ts +1 -1
  198. package/lib/index.js +5 -0
  199. package/package.json +7 -6
  200. package/scss/components/ConditionBuilder/styles/_conditionBuilderCondition.scss +9 -1
  201. package/scss/components/ConditionBuilder/styles/_conditionBuilderItem.scss +26 -1
  202. package/scss/components/DataSpreadsheet/_data-spreadsheet.scss +8 -0
  203. package/scss/components/Datagrid/styles/_useInlineEdit.scss +13 -0
  204. package/scss/components/StatusIcon/_status-icon.scss +4 -4
  205. package/scss/components/StringFormatter/_string-formatter.scss +2 -2
  206. package/scss/components/UserProfileImage/_user-profile-image.scss +6 -2
  207. package/telemetry.yml +15 -3
  208. package/es/components/ConditionBuilder/utils/checkForHoldingKey.d.ts +0 -1
  209. package/es/components/ConditionBuilder/utils/checkForHoldingKey.js +0 -16
  210. package/lib/components/ConditionBuilder/utils/checkForHoldingKey.d.ts +0 -1
  211. package/lib/components/ConditionBuilder/utils/checkForHoldingKey.js +0 -20
@@ -52,6 +52,18 @@ interface DataSpreadsheetBodyProps {
52
52
  * The event handler that is called when the active cell changes
53
53
  */
54
54
  onActiveCellChange?: () => void;
55
+ /**
56
+ * Check if user is using custom component
57
+ */
58
+ hasCustomRowHeader?: boolean;
59
+ /**
60
+ * Component next to numbering rows
61
+ */
62
+ renderRowHeader?: (index: number) => any[];
63
+ /**
64
+ * Component next to numbering rows
65
+ */
66
+ renderRowHeaderDirection?: string;
55
67
  /**
56
68
  * The event handler that is called to set the rows for the empty spreadsheet
57
69
  */
@@ -79,7 +91,15 @@ interface DataSpreadsheetBodyProps {
79
91
  /**
80
92
  * Array of selection area data
81
93
  */
82
- selectionAreaData?: object[];
94
+ selectionAreaData?: any[];
95
+ /**
96
+ * Header reordering is active
97
+ */
98
+ selectedHeaderReorderActive?: boolean;
99
+ /**
100
+ * Set header reordering active or not
101
+ */
102
+ setSelectedHeaderReorderActive?: Dispatch<SetStateAction<boolean>>;
83
103
  /**
84
104
  * Array of selection areas
85
105
  */
@@ -35,11 +35,16 @@ var DataSpreadsheetBody = /*#__PURE__*/forwardRef(function (_ref, ref) {
35
35
  headerGroups = _ref.headerGroups,
36
36
  id = _ref.id,
37
37
  onDataUpdate = _ref.onDataUpdate,
38
+ renderRowHeader = _ref.renderRowHeader,
39
+ renderRowHeaderDirection = _ref.renderRowHeaderDirection,
40
+ hasCustomRowHeader = _ref.hasCustomRowHeader,
38
41
  prepareRow = _ref.prepareRow,
39
42
  rows = _ref.rows,
40
43
  selectionAreaData = _ref.selectionAreaData,
41
44
  setSelectionAreaData = _ref.setSelectionAreaData,
42
45
  setActiveCellCoordinates = _ref.setActiveCellCoordinates,
46
+ selectedHeaderReorderActive = _ref.selectedHeaderReorderActive,
47
+ setSelectedHeaderReorderActive = _ref.setSelectedHeaderReorderActive,
43
48
  selectionAreas = _ref.selectionAreas,
44
49
  setContainerHasFocus = _ref.setContainerHasFocus,
45
50
  setSelectionAreas = _ref.setSelectionAreas,
@@ -75,8 +80,12 @@ var DataSpreadsheetBody = /*#__PURE__*/forwardRef(function (_ref, ref) {
75
80
  // back to the consumer
76
81
  useEffect(function () {
77
82
  if (selectionAreaData !== null && selectionAreaData !== void 0 && selectionAreaData.length) {
78
- var _previousState$select;
79
- if (!clickAndHoldActive && previousState !== null && previousState !== void 0 && previousState.clickAndHoldActive || (previousState === null || previousState === void 0 || (_previousState$select = previousState.selectionAreaData) === null || _previousState$select === void 0 ? void 0 : _previousState$select.length) !== (selectionAreaData === null || selectionAreaData === void 0 ? void 0 : selectionAreaData.length)) {
83
+ var _previousState$select, _selectionAreaData$, _previousState$select2;
84
+ var selectionChanged = false;
85
+ if ((previousState === null || previousState === void 0 || (_previousState$select = previousState.selectionAreaData) === null || _previousState$select === void 0 ? void 0 : _previousState$select.length) !== (selectionAreaData === null || selectionAreaData === void 0 ? void 0 : selectionAreaData.length) || (selectionAreaData === null || selectionAreaData === void 0 || (_selectionAreaData$ = selectionAreaData[0]) === null || _selectionAreaData$ === void 0 ? void 0 : _selectionAreaData$.cells.length) !== (previousState === null || previousState === void 0 || (_previousState$select2 = previousState.selectionAreaData) === null || _previousState$select2 === void 0 || (_previousState$select2 = _previousState$select2[0]) === null || _previousState$select2 === void 0 ? void 0 : _previousState$select2.cells.length)) {
86
+ selectionChanged = true;
87
+ }
88
+ if (!clickAndHoldActive && previousState !== null && previousState !== void 0 && previousState.clickAndHoldActive || selectionChanged) {
80
89
  onSelectionAreaChange === null || onSelectionAreaChange === void 0 || onSelectionAreaChange(selectionAreaData);
81
90
  }
82
91
  }
@@ -132,7 +141,7 @@ var DataSpreadsheetBody = /*#__PURE__*/forwardRef(function (_ref, ref) {
132
141
  return;
133
142
  });
134
143
  }
135
- }, [selectionAreas, setSelectionAreas, defaultColumn, onSelectionAreaChange, setSelectionAreaData, ref, activeCellCoordinates, setActiveCellInsideSelectionArea, visibleColumns]);
144
+ }, [selectionAreas, setSelectionAreas, defaultColumn, onSelectionAreaChange, setSelectionAreaData, ref, activeCellCoordinates, setActiveCellInsideSelectionArea, visibleColumns, hasCustomRowHeader]);
136
145
  var populateSelectionAreaCellData = function populateSelectionAreaCellData(_ref2) {
137
146
  var rowStart = _ref2.rowStart,
138
147
  rowEnd = _ref2.rowEnd,
@@ -151,6 +160,8 @@ var DataSpreadsheetBody = /*#__PURE__*/forwardRef(function (_ref, ref) {
151
160
  setClickAndHoldActive: setClickAndHoldActive,
152
161
  setSelectionAreas: setSelectionAreas,
153
162
  setValidStartingPoint: setValidStartingPoint,
163
+ selectedHeaderReorderActive: selectedHeaderReorderActive,
164
+ setSelectedHeaderReorderActive: setSelectedHeaderReorderActive,
154
165
  validStartingPoint: validStartingPoint,
155
166
  ref: ref,
156
167
  setHeaderCellHoldActive: setHeaderCellHoldActive,
@@ -204,7 +215,7 @@ var DataSpreadsheetBody = /*#__PURE__*/forwardRef(function (_ref, ref) {
204
215
  });
205
216
  }
206
217
  }
207
- }, [defaultColumn, ref, activeCellCoordinates, previousState === null || previousState === void 0 ? void 0 : previousState.rowHeight, selectionAreas, setActiveCellInsideSelectionArea, setSelectionAreas, visibleColumns]);
218
+ }, [defaultColumn, ref, activeCellCoordinates, previousState === null || previousState === void 0 ? void 0 : previousState.rowHeight, selectionAreas, setActiveCellInsideSelectionArea, setSelectionAreas, visibleColumns, hasCustomRowHeader]);
208
219
 
209
220
  //this method will check for any duplicate selection area and remove.
210
221
  //same selections are those have the same height, width, top, left styles. These inline styles are being set in createCellSelection util.
@@ -330,11 +341,12 @@ var DataSpreadsheetBody = /*#__PURE__*/forwardRef(function (_ref, ref) {
330
341
  "data-column-index": "header",
331
342
  type: "button",
332
343
  onClick: handleRowHeaderClickEvent(index),
333
- className: cx("".concat(blockClass, "__td"), "".concat(blockClass, "__td-th"), "".concat(blockClass, "--interactive-cell-element"), _defineProperty(_defineProperty({}, "".concat(blockClass, "__td-th--active-header"), (activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row) === index || checkActiveHeaderCell(index, selectionAreas, 'row')), "".concat(blockClass, "__td-th--selected-header"), checkSelectedHeaderCell(index, selectionAreas, 'row', columns))),
344
+ className: cx("".concat(blockClass, "__td"), "".concat(blockClass, "__td-th"), "".concat(blockClass, "--interactive-cell-element"), _defineProperty(_defineProperty(_defineProperty({}, "".concat(blockClass, "__td_custom"), hasCustomRowHeader ? true : false), "".concat(blockClass, "__td-th--active-header"), !hasCustomRowHeader && ((activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row) === index || checkActiveHeaderCell(index, selectionAreas, 'row'))), "".concat(blockClass, "__td-th--selected-header"), !hasCustomRowHeader && checkSelectedHeaderCell(index, selectionAreas, 'row', columns))),
334
345
  style: {
335
- width: defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeaderWidth
346
+ width: defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeaderWidth,
347
+ flexDirection: hasCustomRowHeader ? renderRowHeaderDirection === 'Left' ? 'row-reverse' : row : undefined
336
348
  }
337
- }, index + 1)), row.cells.map(function (cell, index) {
349
+ }, index + 1, hasCustomRowHeader && typeof renderRowHeader === 'function' && renderRowHeader(index))), row.cells.map(function (cell, index) {
338
350
  var _cell$column;
339
351
  var cellProps = prepareProps(cell.getCellProps(), 'key');
340
352
  return /*#__PURE__*/React__default.createElement("div", _extends({
@@ -359,7 +371,7 @@ var DataSpreadsheetBody = /*#__PURE__*/forwardRef(function (_ref, ref) {
359
371
  }, cell.render('Cell')));
360
372
  }));
361
373
  }
362
- }, [prepareRow, rows, activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row, selectionAreas, handleRowHeaderClickEvent, handleBodyCellClickEvent, handleBodyCellHoverEvent, defaultColumn, columns]);
374
+ }, [prepareRow, renderRowHeader, renderRowHeaderDirection, rows, hasCustomRowHeader, activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row, selectionAreas, handleRowHeaderClickEvent, handleBodyCellClickEvent, handleBodyCellHoverEvent, defaultColumn, columns]);
363
375
  var spreadsheetBodyRef = useRef();
364
376
  return /*#__PURE__*/React__default.createElement("div", _extends({
365
377
  ref: spreadsheetBodyRef,
@@ -425,6 +437,10 @@ DataSpreadsheetBody.propTypes = {
425
437
  */
426
438
  /**@ts-ignore */
427
439
  getTableBodyProps: PropTypes.func,
440
+ /**
441
+ * Check if spreadsheet is using custom row header component attached
442
+ */
443
+ hasCustomRowHeader: PropTypes.bool,
428
444
  /**
429
445
  * Headers provided from useTable hook
430
446
  */
@@ -449,6 +465,14 @@ DataSpreadsheetBody.propTypes = {
449
465
  * Prepare row function from react-table
450
466
  */
451
467
  prepareRow: PropTypes.func,
468
+ /**
469
+ * Component next to numbering rows
470
+ */
471
+ renderRowHeader: PropTypes.func,
472
+ /**
473
+ * Component next to numbering rows
474
+ */
475
+ renderRowHeaderDirection: PropTypes.string,
452
476
  /**
453
477
  * All of the spreadsheet row data
454
478
  */
@@ -457,6 +481,10 @@ DataSpreadsheetBody.propTypes = {
457
481
  * The scrollbar width
458
482
  */
459
483
  scrollBarSize: PropTypes.number,
484
+ /**
485
+ * Header reordering is active
486
+ */
487
+ selectedHeaderReorderActive: PropTypes.bool,
460
488
  /**
461
489
  * Array of selection area data
462
490
  */
@@ -493,6 +521,10 @@ DataSpreadsheetBody.propTypes = {
493
521
  * Setter fn for header cell hold active value
494
522
  */
495
523
  setHeaderCellHoldActive: PropTypes.func,
524
+ /**
525
+ * Set header reordering active or not
526
+ */
527
+ setSelectedHeaderReorderActive: PropTypes.func,
496
528
  /**
497
529
  * Setter fn for selectionAreaData state value
498
530
  */
@@ -56,6 +56,14 @@ interface DataSpreadsheetHeaderProps {
56
56
  * Setter fn for activeCellCoordinates value
57
57
  */
58
58
  setActiveCellCoordinates?: Dispatch<SetStateAction<ActiveCellCoordinates | null>>;
59
+ /**
60
+ * Header reordering is active
61
+ */
62
+ selectedHeaderReorderActive?: boolean;
63
+ /**
64
+ * Set header reordering active or not
65
+ */
66
+ setSelectedHeaderReorderActive?: Dispatch<SetStateAction<boolean>>;
59
67
  /**
60
68
  * Setter fn for currentMatcher value
61
69
  */
@@ -31,6 +31,8 @@ var DataSpreadsheetHeader = /*#__PURE__*/forwardRef(function (_ref, ref) {
31
31
  headerGroups = _ref.headerGroups,
32
32
  scrollBarSize = _ref.scrollBarSize,
33
33
  selectionAreas = _ref.selectionAreas,
34
+ selectedHeaderReorderActive = _ref.selectedHeaderReorderActive,
35
+ setSelectedHeaderReorderActive = _ref.setSelectedHeaderReorderActive,
34
36
  setActiveCellCoordinates = _ref.setActiveCellCoordinates,
35
37
  setCurrentMatcher = _ref.setCurrentMatcher,
36
38
  setSelectionAreas = _ref.setSelectionAreas,
@@ -46,10 +48,6 @@ var DataSpreadsheetHeader = /*#__PURE__*/forwardRef(function (_ref, ref) {
46
48
  _useState2 = _slicedToArray(_useState, 2),
47
49
  scrollBarSizeValue = _useState2[0],
48
50
  setScrollBarSizeValue = _useState2[1];
49
- var _useState3 = useState(false),
50
- _useState4 = _slicedToArray(_useState3, 2),
51
- selectedHeaderReorderActive = _useState4[0],
52
- setSelectedHeaderReorderActive = _useState4[1];
53
51
  var previousState = usePreviousValue({
54
52
  cellSize: cellSize
55
53
  }) || {};
@@ -107,11 +105,16 @@ var DataSpreadsheetHeader = /*#__PURE__*/forwardRef(function (_ref, ref) {
107
105
  // Remove columns, need to call handleHeaderCellSelection
108
106
  return;
109
107
  }
110
- setSelectedHeaderReorderActive(true);
111
108
  var selectionAreaToClone = selectionAreas === null || selectionAreas === void 0 ? void 0 : selectionAreas.filter(function (item) {
112
109
  return (item === null || item === void 0 ? void 0 : item.matcher) === currentMatcher;
113
110
  });
114
111
  var selectionAreaElement = ref.current.querySelector("[data-matcher-id=\"".concat(selectionAreaToClone === null || selectionAreaToClone === void 0 || (_selectionAreaToClone = selectionAreaToClone[0]) === null || _selectionAreaToClone === void 0 ? void 0 : _selectionAreaToClone.matcher, "\"]"));
112
+ if (selectionAreaElement) {
113
+ selectionAreaElement.classList.add("".concat(blockClass, "__selection-area--element"));
114
+ }
115
+ if (typeof setSelectedHeaderReorderActive === 'function') {
116
+ setSelectedHeaderReorderActive(true);
117
+ }
115
118
  var clickXPosition = event.clientX;
116
119
  var headerButtonCoords = event.target.getBoundingClientRect();
117
120
  var headerIndex = event.target.getAttribute('data-column-index');
@@ -172,6 +175,9 @@ var DataSpreadsheetHeader = /*#__PURE__*/forwardRef(function (_ref, ref) {
172
175
  "data-row-index": "header",
173
176
  "data-column-index": "header",
174
177
  type: "button",
178
+ style: {
179
+ width: defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeaderWidth
180
+ },
175
181
  tabIndex: -1,
176
182
  "aria-label": selectAllAriaLabel,
177
183
  onClick: handleSelectAllClick,
@@ -189,7 +195,7 @@ var DataSpreadsheetHeader = /*#__PURE__*/forwardRef(function (_ref, ref) {
189
195
  "data-column-index": index,
190
196
  tabIndex: -1,
191
197
  onMouseDown: selectedHeader ? handleHeaderMouseDown(index) : undefined,
192
- onMouseUp: selectedHeader ? function () {
198
+ onMouseUp: selectedHeader && typeof setSelectedHeaderReorderActive === 'function' ? function () {
193
199
  return setSelectedHeaderReorderActive(false);
194
200
  } : undefined,
195
201
  onClick: !selectedHeader ? handleColumnHeaderClick(index) : undefined,
@@ -254,6 +260,10 @@ DataSpreadsheetHeader.propTypes = {
254
260
  * The aria label applied to the Select all button
255
261
  */
256
262
  selectAllAriaLabel: PropTypes.string.isRequired,
263
+ /**
264
+ * Header reordering is active
265
+ */
266
+ selectedHeaderReorderActive: PropTypes.bool,
257
267
  /**
258
268
  * All of the cell selection area items
259
269
  */
@@ -271,6 +281,10 @@ DataSpreadsheetHeader.propTypes = {
271
281
  * Setter fn for header cell hold active value
272
282
  */
273
283
  setHeaderCellHoldActive: PropTypes.func,
284
+ /**
285
+ * Set header reordering active or not
286
+ */
287
+ setSelectedHeaderReorderActive: PropTypes.func,
274
288
  /**
275
289
  * Setter fn for selectionAreaData state value
276
290
  */
@@ -40,9 +40,12 @@ var useSpreadsheetMouseMove = function useSpreadsheetMouseMove(_ref) {
40
40
  var totalSpreadsheetScrollingWidth = listContainer.scrollWidth;
41
41
  var clonedSelectionWidth = clonedSelectionElement.offsetWidth;
42
42
  var clonePlacement = Math.max(xPositionRelativeToSpreadsheet - offsetXValue, defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeaderWidth);
43
+ var leftPosition = totalSpreadsheetScrollingWidth - clonedSelectionWidth >= clonePlacement ? clonePlacement + scrollAmount : totalSpreadsheetScrollingWidth - clonedSelectionWidth;
43
44
  // Moves the position of the cloned selection area to follow mouse, and
44
45
  // add the amount horizontally scrolled
45
- clonedSelectionElement.style.left = px(totalSpreadsheetScrollingWidth - clonedSelectionWidth >= clonePlacement ? clonePlacement + scrollAmount : totalSpreadsheetScrollingWidth - clonedSelectionWidth);
46
+ if (leftPosition < spreadsheetCoords.right - 40) {
47
+ clonedSelectionElement.style.left = px(leftPosition);
48
+ }
46
49
  };
47
50
  if (headerCellHoldActive) {
48
51
  ref.current.addEventListener('mousemove', handleMouseMove);
@@ -1,6 +1,8 @@
1
- export function useSpreadsheetMouseUp({ currentMatcher, setSelectionAreas, setClickAndHoldActive, setValidStartingPoint, validStartingPoint, blockClass, ref, setHeaderCellHoldActive, setColumnOrder, visibleColumns, setActiveCellCoordinates, activeCellCoordinates, rows, defaultColumn, selectionAreas, }: {
1
+ export function useSpreadsheetMouseUp({ currentMatcher, setSelectionAreas, selectedHeaderReorderActive, setSelectedHeaderReorderActive, setClickAndHoldActive, setValidStartingPoint, validStartingPoint, blockClass, ref, setHeaderCellHoldActive, setColumnOrder, visibleColumns, setActiveCellCoordinates, activeCellCoordinates, rows, defaultColumn, selectionAreas, }: {
2
2
  currentMatcher: any;
3
3
  setSelectionAreas: any;
4
+ selectedHeaderReorderActive: any;
5
+ setSelectedHeaderReorderActive: any;
4
6
  setClickAndHoldActive: any;
5
7
  setValidStartingPoint: any;
6
8
  validStartingPoint: any;
@@ -14,6 +14,8 @@ import { deepCloneObject } from '../../../global/js/utils/deepCloneObject.js';
14
14
  var useSpreadsheetMouseUp = function useSpreadsheetMouseUp(_ref) {
15
15
  var currentMatcher = _ref.currentMatcher,
16
16
  setSelectionAreas = _ref.setSelectionAreas,
17
+ selectedHeaderReorderActive = _ref.selectedHeaderReorderActive,
18
+ setSelectedHeaderReorderActive = _ref.setSelectedHeaderReorderActive,
17
19
  setClickAndHoldActive = _ref.setClickAndHoldActive,
18
20
  setValidStartingPoint = _ref.setValidStartingPoint,
19
21
  validStartingPoint = _ref.validStartingPoint,
@@ -30,15 +32,22 @@ var useSpreadsheetMouseUp = function useSpreadsheetMouseUp(_ref) {
30
32
  selectionAreas = _ref.selectionAreas;
31
33
  useEffect(function () {
32
34
  var handleMouseUp = function handleMouseUp(event) {
35
+ var _selectionAreas$;
36
+ var isHoldingColumn = false;
37
+ if (selectionAreas !== null && selectionAreas !== void 0 && (_selectionAreas$ = selectionAreas[0]) !== null && _selectionAreas$ !== void 0 && _selectionAreas$.header && selectionAreas[0].header.type === 'column') {
38
+ isHoldingColumn = true;
39
+ }
33
40
  // Remove the cloned selection area on mouse up
34
- if (!validStartingPoint) {
41
+ if (!validStartingPoint && isHoldingColumn) {
35
42
  setHeaderCellHoldActive(false);
43
+ var selectionAreaElement = ref.current.querySelector(".".concat(blockClass, "__selection-area--element"));
36
44
  var selectionAreaCloneElement = ref.current.querySelector(".".concat(blockClass, "__selection-area--element-cloned"));
37
45
  if (!selectionAreaCloneElement) {
38
46
  return;
39
47
  }
40
48
  // Mouse up while a cloned selection area exists/a column is being reordered
41
49
  if (selectionAreaCloneElement) {
50
+ var _selectionAreaElement;
42
51
  var closestCell = event.target.closest(".".concat(blockClass, "--interactive-cell-element"));
43
52
  var newColumnIndex = parseInt === null || parseInt === void 0 ? void 0 : parseInt(closestCell === null || closestCell === void 0 ? void 0 : closestCell.getAttribute('data-column-index'));
44
53
  var originalColumnIndex = parseInt === null || parseInt === void 0 ? void 0 : parseInt(selectionAreaCloneElement === null || selectionAreaCloneElement === void 0 ? void 0 : selectionAreaCloneElement.getAttribute('data-column-index-original'));
@@ -81,6 +90,7 @@ var useSpreadsheetMouseUp = function useSpreadsheetMouseUp(_ref) {
81
90
  selectionAreaClone[indexOfItemToUpdate].point1.column = Math.min.apply(Math, _toConsumableArray(newIndexArray));
82
91
  selectionAreaClone[indexOfItemToUpdate].point2.column = Math.max.apply(Math, _toConsumableArray(newIndexArray));
83
92
  }
93
+ selectionAreaClone[indexOfItemToUpdate].areaCreated = false;
84
94
  return selectionAreaClone;
85
95
  });
86
96
  // Only reorder columns if the new index is _not_ part of the
@@ -125,11 +135,13 @@ var useSpreadsheetMouseUp = function useSpreadsheetMouseUp(_ref) {
125
135
  var indicatorLineElement = ref.current.querySelector(".".concat(blockClass, "__reorder-indicator-line"));
126
136
  indicatorLineElement === null || indicatorLineElement === void 0 || indicatorLineElement.remove();
127
137
  selectionAreaCloneElement === null || selectionAreaCloneElement === void 0 || selectionAreaCloneElement.remove();
138
+ selectionAreaElement === null || selectionAreaElement === void 0 || (_selectionAreaElement = selectionAreaElement.classList) === null || _selectionAreaElement === void 0 || _selectionAreaElement.remove("".concat(blockClass, "__selection-area--element"));
139
+ setSelectedHeaderReorderActive(false);
128
140
  }
129
141
  }
130
142
  // Mouse up was on a spreadsheet body cell which is a valid
131
143
  // start/end point for creating a selection area
132
- if (validStartingPoint) {
144
+ if (validStartingPoint || event.type === 'mouseup') {
133
145
  setClickAndHoldActive(false);
134
146
  setValidStartingPoint(false);
135
147
  var cellButton = event.target.closest(".".concat(blockClass, "__body--td"));
@@ -158,7 +170,7 @@ var useSpreadsheetMouseUp = function useSpreadsheetMouseUp(_ref) {
158
170
  return function () {
159
171
  document.removeEventListener('mouseup', handleMouseUp);
160
172
  };
161
- }, [blockClass, currentMatcher, setSelectionAreas, setClickAndHoldActive, setValidStartingPoint, validStartingPoint, ref, setHeaderCellHoldActive, setColumnOrder, visibleColumns, setActiveCellCoordinates, activeCellCoordinates, rows, defaultColumn, selectionAreas]);
173
+ }, [blockClass, currentMatcher, setSelectionAreas, setClickAndHoldActive, setValidStartingPoint, validStartingPoint, selectedHeaderReorderActive, setSelectedHeaderReorderActive, ref, setHeaderCellHoldActive, setColumnOrder, visibleColumns, setActiveCellCoordinates, activeCellCoordinates, rows, defaultColumn, selectionAreas]);
162
174
  };
163
175
 
164
176
  export { useSpreadsheetMouseUp };
@@ -13,7 +13,7 @@ export interface PrevState {
13
13
  cellEditorValue?: string;
14
14
  activeCellCoordinates?: ActiveCellCoordinates;
15
15
  isEditing?: boolean;
16
- selectionAreaData?: object[];
16
+ selectionAreaData?: any[];
17
17
  clickAndHoldActive?: boolean;
18
18
  rowHeight?: number;
19
19
  cellSize?: Size;
@@ -22,11 +22,43 @@ var moveColumnIndicatorLine = function moveColumnIndicatorLine(_ref) {
22
22
  var indicatorLineElement = ref.current.querySelector(".".concat(blockClass, "__reorder-indicator-line"));
23
23
  var matcherId = clonedSelectionElement === null || clonedSelectionElement === void 0 ? void 0 : clonedSelectionElement.getAttribute('data-matcher-id');
24
24
  var selectionAreaOrigin = ref.current.querySelector("[data-matcher-id=\"".concat(matcherId, "\"]"));
25
+ var listContainer = ref.current.querySelector(".".concat(blockClass, "__list--container"));
26
+ var scrollSpeed = 10; // Scrolling speed
27
+ var leftEdgeThreshold = 120; // Distance from the left edge to start scrolling
28
+ var rightEdgeThreshold = 100; // Distance from the right edge to start scrolling
29
+
30
+ var _event = event,
31
+ clientX = _event.clientX;
32
+ var _listContainer$getBou = listContainer.getBoundingClientRect(),
33
+ left = _listContainer$getBou.left,
34
+ right = _listContainer$getBou.right;
35
+
36
+ // Is near left side of viewport
37
+ if (clientX < leftEdgeThreshold) {
38
+ window.scrollBy(-scrollSpeed, 0);
39
+ }
40
+
41
+ // Is near right side of viewport
42
+ if (clientX > window.innerWidth - rightEdgeThreshold) {
43
+ window.scrollBy(scrollSpeed, 0);
44
+ }
45
+
46
+ // Is near left edge of table
47
+ if (clientX > left && clientX < left + leftEdgeThreshold) {
48
+ listContainer.scrollBy(-scrollSpeed, 0);
49
+ }
50
+
51
+ // Is near right edge of table
52
+ if (clientX < right && clientX > right - rightEdgeThreshold) {
53
+ listContainer.scrollBy(scrollSpeed, 0);
54
+ }
25
55
  if (Number(newColumnIndex) > Number(originalColumnIndex)) {
26
- indicatorLineElement.style.left = px(closestCellCoords.left - spreadsheetCoords.left + closestCell.offsetWidth - 2 + leftScrollAmount);
56
+ var leftPosition = closestCellCoords.left - spreadsheetCoords.left + closestCell.offsetWidth - 2 + leftScrollAmount;
57
+ indicatorLineElement.style.left = px(leftPosition);
27
58
  }
28
59
  if (Number(newColumnIndex) < Number(originalColumnIndex)) {
29
- indicatorLineElement.style.left = px(closestCellCoords.left - spreadsheetCoords.left + leftScrollAmount);
60
+ var _leftPosition = closestCellCoords.left - spreadsheetCoords.left + leftScrollAmount;
61
+ indicatorLineElement.style.left = px(_leftPosition);
30
62
  }
31
63
  if (Number(newColumnIndex) === Number(originalColumnIndex)) {
32
64
  indicatorLineElement.style.left = selectionAreaOrigin.style.left;
@@ -16,10 +16,6 @@ export interface DatagridProps {
16
16
  * The data grid state, much of it being supplied by the useDatagrid hook
17
17
  */
18
18
  datagridState: DataGridState;
19
- /**
20
- * Table title
21
- */
22
- title?: string;
23
19
  }
24
20
  /**
25
21
  * The `Datagrid` component is an extension of Carbon's DataTable component. At the most basic level, the `Datagrid` component takes in columns and rows and renders a data table. There is a set of data table extensions which this component provides support for, these can be found [here](https://pages.github.ibm.com/cdai-design/pal/components/data-table/overview/). This component is data driven and allows you to choose what pieces will be included based on the hooks/plugins that are provided.
@@ -16,7 +16,7 @@ import { DatagridContent } from './DatagridContent.js';
16
16
  import { FilterProvider } from './addons/Filtering/FilterProvider.js';
17
17
  import { InlineEditProvider } from './addons/InlineEdit/InlineEditContext/InlineEditContext.js';
18
18
 
19
- var _excluded = ["datagridState", "title", "ariaToolbarLabel"];
19
+ var _excluded = ["datagridState", "ariaToolbarLabel"];
20
20
  var blockClass = "".concat(pkg.prefix, "--datagrid");
21
21
  var componentName = 'Datagrid';
22
22
  /**
@@ -24,7 +24,6 @@ var componentName = 'Datagrid';
24
24
  */
25
25
  var Datagrid = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
26
26
  var datagridState = _ref.datagridState,
27
- title = _ref.title,
28
27
  ariaToolbarLabel = _ref.ariaToolbarLabel,
29
28
  rest = _objectWithoutProperties(_ref, _excluded);
30
29
  if (!datagridState) {
@@ -40,13 +39,13 @@ var Datagrid = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
40
39
  state = datagridState.state;
41
40
  var rows = DatagridPagination && datagridState.page || datagridState.rows;
42
41
  var props = {
43
- title: title,
44
42
  datagridState: datagridState,
45
43
  ariaToolbarLabel: ariaToolbarLabel
46
44
  };
47
45
  return /*#__PURE__*/React__default.createElement(FilterProvider, {
48
46
  filters: state === null || state === void 0 ? void 0 : state.filters,
49
- filterProps: filterProps
47
+ filterProps: filterProps,
48
+ tableId: tableId
50
49
  }, /*#__PURE__*/React__default.createElement(InlineEditProvider, null, /*#__PURE__*/React__default.createElement("div", _extends({}, rest, {
51
50
  id: tableId,
52
51
  ref: ref,
@@ -72,11 +71,7 @@ Datagrid.propTypes = {
72
71
  * The data grid state, much of it being supplied by the useDatagrid hook
73
72
  */
74
73
  /**@ts-ignore */
75
- datagridState: PropTypes.object.isRequired,
76
- /**
77
- * Table title
78
- */
79
- title: PropTypes.string
74
+ datagridState: PropTypes.object.isRequired
80
75
  };
81
76
 
82
77
  export { Datagrid };
@@ -158,7 +158,7 @@ var DatagridContent = function DatagridContent(_ref) {
158
158
  className: "".concat(blockClass, "__filter-summary"),
159
159
  filters: filterTags,
160
160
  clearFilters: function clearFilters() {
161
- return EventEmitter.dispatch(CLEAR_FILTERS);
161
+ return EventEmitter.dispatch(CLEAR_FILTERS, tableId);
162
162
  },
163
163
  renderLabel: filterProps === null || filterProps === void 0 ? void 0 : filterProps.renderLabel,
164
164
  overflowType: "tag"
@@ -23,10 +23,8 @@ var _excluded = ["className"],
23
23
  var blockClass = "".concat(pkg.prefix, "--datagrid");
24
24
  var getAccessibilityProps = function getAccessibilityProps(header) {
25
25
  var props = {};
26
- var title = getNodeTextContent(header.Header);
27
- if (title) {
28
- props.title = title;
29
- } else {
26
+ var content = getNodeTextContent(header.Header);
27
+ if (!content) {
30
28
  props['aria-hidden'] = true;
31
29
  }
32
30
  return props;
@@ -82,6 +80,7 @@ var ResizeHeader = function ResizeHeader(_ref) {
82
80
  "aria-label": resizerAriaLabel || 'Resize column',
83
81
  disabled: isFetching
84
82
  })), /*#__PURE__*/React__default.createElement("span", {
83
+ role: "separator",
85
84
  className: "".concat(blockClass, "__col-resize-indicator")
86
85
  }));
87
86
  };
@@ -90,7 +89,8 @@ var HeaderRow = function HeaderRow(datagridState, headRef, headerGroup) {
90
89
  var resizerAriaLabel = datagridState.resizerAriaLabel,
91
90
  isTableSortable = datagridState.isTableSortable,
92
91
  rows = datagridState.rows,
93
- isFetching = datagridState.isFetching;
92
+ isFetching = datagridState.isFetching,
93
+ headers = datagridState.headers;
94
94
  useInitialColumnSort(datagridState);
95
95
  // Used to measure the height of the table and uses that value
96
96
  // to display a vertical line to indicate the column you are resizing
@@ -135,7 +135,9 @@ var HeaderRow = function HeaderRow(datagridState, headRef, headerGroup) {
135
135
  }
136
136
  onMouseDown === null || onMouseDown === void 0 || onMouseDown(event);
137
137
  };
138
- var _headerGroup$getHeade = headerGroup.getHeaderGroupProps(),
138
+ var _headerGroup$getHeade = headerGroup.getHeaderGroupProps({
139
+ role: undefined
140
+ }),
139
141
  headerGroupClassName = _headerGroup$getHeade.className,
140
142
  headerGroupProps = _objectWithoutProperties(_headerGroup$getHeade, _excluded);
141
143
  var renderSlug = function renderSlug(slug) {
@@ -152,6 +154,9 @@ var HeaderRow = function HeaderRow(datagridState, headRef, headerGroup) {
152
154
  });
153
155
  var key = headerGroupProps.key,
154
156
  rowProps = _objectWithoutProperties(headerGroupProps, _excluded2);
157
+ var withActionsColumn = headers ? !!headers.filter(function (header) {
158
+ return header.isAction;
159
+ }).length : false;
155
160
  return /*#__PURE__*/React__default.createElement(TableRow, _extends({
156
161
  key: key
157
162
  }, rowProps, {
@@ -181,9 +186,19 @@ var HeaderRow = function HeaderRow(datagridState, headRef, headerGroup) {
181
186
  var _ref5 = columnResizing || {},
182
187
  columnWidths = _ref5.columnWidths;
183
188
  var originalCol = visibleColumns[index];
184
- var _header$getHeaderProp = header.getHeaderProps(),
189
+ var _header$getHeaderProp = header.getHeaderProps({
190
+ role: undefined
191
+ }),
185
192
  headerProps = _extends({}, (_objectDestructuringEmpty(_header$getHeaderProp), _header$getHeaderProp));
186
- var resizerProps = header === null || header === void 0 || (_header$getResizerPro = header.getResizerProps) === null || _header$getResizerPro === void 0 ? void 0 : _header$getResizerPro.call(header);
193
+ var resizerProps = header === null || header === void 0 || (_header$getResizerPro = header.getResizerProps) === null || _header$getResizerPro === void 0 ? void 0 : _header$getResizerPro.call(header, {
194
+ role: undefined
195
+ });
196
+ var headerStyle = headerProps === null || headerProps === void 0 ? void 0 : headerProps.style;
197
+ var lastVisibleIndex = withActionsColumn ? 2 : 1;
198
+ var lastVisibleFlexStyle = index === visibleColumns.length - lastVisibleIndex ? '1 1 0' : '0 0 auto';
199
+ if (headerStyle) {
200
+ headerStyle.flex = lastVisibleFlexStyle;
201
+ }
187
202
  return /*#__PURE__*/React__default.createElement(TableHeader, _extends({}, headerProps, {
188
203
  className: cx(header === null || header === void 0 ? void 0 : header.className, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "".concat(blockClass, "__resizableColumn"), resizerProps), "".concat(blockClass, "__isResizing"), header === null || header === void 0 ? void 0 : header.isResizing), "".concat(blockClass, "__sortableColumn"), datagridState.isTableSortable && header.id !== 'spacer'), "".concat(blockClass, "__isSorted"), header === null || header === void 0 ? void 0 : header.isSorted), "".concat(blockClass, "__header-actions-column"), header === null || header === void 0 ? void 0 : header.isAction), "".concat(blockClass, "__with-slug"), header.slug && /*#__PURE__*/React__default.isValidElement(header === null || header === void 0 ? void 0 : header.slug)), headerProps.className),
189
204
  key: header.id,
@@ -16,7 +16,7 @@ import { DatagridSlug } from './addons/Slug/DatagridSlug.js';
16
16
 
17
17
  var _SkeletonText;
18
18
  var _excluded = ["className"],
19
- _excluded2 = ["children"];
19
+ _excluded2 = ["style", "children"];
20
20
  var blockClass = "".concat(pkg.prefix, "--datagrid");
21
21
  var rowHeights = {
22
22
  xs: 24,
@@ -39,7 +39,8 @@ var DatagridRow = function DatagridRow(datagridState) {
39
39
  withExpandedRows = datagridState.withExpandedRows,
40
40
  withMouseHover = datagridState.withMouseHover,
41
41
  setMouseOverRowIndex = datagridState.setMouseOverRowIndex,
42
- headers = datagridState.headers;
42
+ headers = datagridState.headers,
43
+ visibleColumns = datagridState.visibleColumns;
43
44
  var getVisibleNestedRowCount = function getVisibleNestedRowCount(_ref) {
44
45
  var isExpanded = _ref.isExpanded,
45
46
  subRows = _ref.subRows;
@@ -107,7 +108,9 @@ var DatagridRow = function DatagridRow(datagridState) {
107
108
  }
108
109
  return {};
109
110
  };
110
- var _row$getRowProps = row.getRowProps(),
111
+ var _row$getRowProps = row.getRowProps({
112
+ role: undefined
113
+ }),
111
114
  className = _row$getRowProps.className,
112
115
  rowProps = _objectWithoutProperties(_row$getRowProps, _excluded);
113
116
  var foundAIRow = rows.some(function (r) {
@@ -115,6 +118,9 @@ var DatagridRow = function DatagridRow(datagridState) {
115
118
  return /*#__PURE__*/isValidElement(r === null || r === void 0 || (_r$original = r.original) === null || _r$original === void 0 ? void 0 : _r$original.slug);
116
119
  });
117
120
  var rowClassNames = cx("".concat(blockClass, "__carbon-row"), _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "".concat(blockClass, "__carbon-row-expanded"), row.isExpanded), "".concat(blockClass, "__carbon-row-expandable"), row.canExpand), "".concat(carbon.prefix, "--data-table--selected"), row.isSelected), "".concat(blockClass, "__slug--row"), /*#__PURE__*/isValidElement(row === null || row === void 0 || (_row$original = row.original) === null || _row$original === void 0 ? void 0 : _row$original.slug)));
121
+ var withActionsColumn = headers ? !!headers.filter(function (header) {
122
+ return header.isAction;
123
+ }).length : false;
118
124
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, {
119
125
  key: key
120
126
  }, /*#__PURE__*/React__default.createElement(TableRow, _extends({}, rowProps, {
@@ -132,10 +138,13 @@ var DatagridRow = function DatagridRow(datagridState) {
132
138
  })) : /*#__PURE__*/React__default.createElement("td", {
133
139
  className: "".concat(blockClass, "__table-row-ai-spacer")
134
140
  }) : null, row.cells.map(function (cell, index) {
135
- var _cell$column, _cell$column2, _content$props, _associatedHeader$;
136
- var cellProps = cell.getCellProps();
141
+ var _cell$column, _cell$column2, _associatedHeader$;
142
+ var cellProps = cell.getCellProps({
143
+ role: undefined
144
+ });
137
145
  // eslint-disable-next-line no-unused-vars
138
146
  var _ref2 = cellProps,
147
+ style = _ref2.style,
139
148
  children = _ref2.children,
140
149
  restProps = _objectWithoutProperties(_ref2, _excluded2);
141
150
  var columnClassname = cell === null || cell === void 0 || (_cell$column = cell.column) === null || _cell$column === void 0 ? void 0 : _cell$column.className;
@@ -146,15 +155,19 @@ var DatagridRow = function DatagridRow(datagridState) {
146
155
  key: cell.column.id
147
156
  });
148
157
  }
149
- var title = content === null || content === void 0 || (_content$props = content.props) === null || _content$props === void 0 || (_content$props = _content$props.children[0]) === null || _content$props === void 0 || (_content$props = _content$props.props) === null || _content$props === void 0 ? void 0 : _content$props.value;
150
158
  var associatedHeader = headers === null || headers === void 0 ? void 0 : headers.filter(function (h) {
151
159
  return h.id === cell.column.id;
152
160
  });
161
+ var lastVisibleIndex = withActionsColumn ? 2 : 1;
162
+ var lastVisibleFlexStyle = index === visibleColumns.length - lastVisibleIndex ? '1 1 0' : '0 0 auto';
163
+ if (style) {
164
+ style.flex = lastVisibleFlexStyle;
165
+ }
153
166
  return /*#__PURE__*/React__default.createElement(TableCell, _extends({
154
167
  className: cx("".concat(blockClass, "__cell"), _defineProperty(_defineProperty(_defineProperty({}, "".concat(blockClass, "__expandable-row-cell"), row.canExpand && index === 0), "".concat(blockClass, "__expandable-row-cell--is-expanded"), row.isExpanded && index === 0), "".concat(blockClass, "__slug--cell"), associatedHeader && associatedHeader.length && /*#__PURE__*/isValidElement((_associatedHeader$ = associatedHeader[0]) === null || _associatedHeader$ === void 0 ? void 0 : _associatedHeader$.slug)), columnClassname)
155
168
  }, restProps, {
156
- key: cell.column.id,
157
- title: title
169
+ style: style,
170
+ key: cell.column.id
158
171
  }), content);
159
172
  })), (renderExpandedRow === null || renderExpandedRow === void 0 ? void 0 : renderExpandedRow()) || undefined);
160
173
  };
@@ -209,7 +209,12 @@ var FilterFlyout = function FilterFlyout(_ref) {
209
209
  closeFlyout();
210
210
  cancel();
211
211
  });
212
- useSubscribeToEventEmitter(CLEAR_FILTERS, reset);
212
+
213
+ // tableId is passed in from the event emitter from the FilterSummary component
214
+ // in DatagridContent
215
+ useSubscribeToEventEmitter(CLEAR_FILTERS, function (tableId) {
216
+ reset(tableId);
217
+ });
213
218
  useEffect(function reflectLastAppliedFiltersWhenReactTableUpdates() {
214
219
  lastAppliedFilters.current = JSON.stringify(reactTableFiltersState);
215
220
  }, [reactTableFiltersState, lastAppliedFilters]);