@carbon/ibm-products 1.40.0 → 1.41.1

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 (94) hide show
  1. package/css/index-full-carbon.css +39 -65
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +2 -2
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +1 -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 +39 -65
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +2 -2
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +39 -65
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +2 -2
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/APIKeyModal/APIKeyDownloader.js +21 -23
  18. package/es/components/APIKeyModal/APIKeyModal.js +43 -45
  19. package/es/components/AddSelect/AddSelectBody.js +1 -1
  20. package/es/components/AddSelect/hooks/usePath.js +7 -1
  21. package/es/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +1 -1
  22. package/es/components/ButtonSetWithOverflow/ButtonSetWithOverflow.js +1 -1
  23. package/es/components/CreateFullPage/CreateFullPage.js +8 -2
  24. package/es/components/CreateTearsheet/CreateTearsheet.js +8 -2
  25. package/es/components/CreateTearsheet/preview-components/MultiStepTearsheet.js +4 -2
  26. package/es/components/DataSpreadsheet/DataSpreadsheet.js +1 -3
  27. package/es/components/DataSpreadsheet/utils/handleCellDeletion.js +5 -4
  28. package/es/components/Datagrid/Datagrid/DatagridContent.js +18 -6
  29. package/es/components/Datagrid/Datagrid/DatagridEmptyBody.js +9 -3
  30. package/es/components/Datagrid/Datagrid/DatagridRow.js +2 -8
  31. package/es/components/Datagrid/Datagrid/DatagridVirtualBody.js +27 -8
  32. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/Actions.js +7 -9
  33. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/ButtonWrapper.js +11 -13
  34. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +26 -24
  35. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/{CustomizeColumnsModal.js → CustomizeColumnsTearsheet.js} +32 -32
  36. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/TearsheetWrapper.js +51 -0
  37. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/index.js +6 -7
  38. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +26 -36
  39. package/es/components/Datagrid/Datagrid.stories/index.js +1 -1
  40. package/es/components/Datagrid/useCustomizeColumns.js +13 -15
  41. package/es/components/Datagrid/useFiltering.js +0 -2
  42. package/es/components/Datagrid/useParentDimensions.js +3 -1
  43. package/es/components/Datagrid/utils/getArgTypes.js +5 -0
  44. package/es/components/Datagrid/utils/getInlineEditColumns.js +6 -1
  45. package/es/components/ImportModal/ImportModal.js +42 -44
  46. package/es/components/index.js +1 -1
  47. package/es/global/js/hooks/useCreateComponentFocus.js +31 -10
  48. package/es/global/js/hooks/useCreateComponentStepChange.js +73 -79
  49. package/es/global/js/utils/test-helper.js +12 -14
  50. package/es/global/js/utils/unwrap-if-fragment.js +1 -1
  51. package/lib/components/APIKeyModal/APIKeyDownloader.js +21 -23
  52. package/lib/components/APIKeyModal/APIKeyModal.js +43 -45
  53. package/lib/components/AddSelect/AddSelectBody.js +1 -1
  54. package/lib/components/AddSelect/hooks/usePath.js +6 -0
  55. package/lib/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +1 -1
  56. package/lib/components/ButtonSetWithOverflow/ButtonSetWithOverflow.js +1 -1
  57. package/lib/components/CreateFullPage/CreateFullPage.js +8 -2
  58. package/lib/components/CreateTearsheet/CreateTearsheet.js +8 -2
  59. package/lib/components/CreateTearsheet/preview-components/MultiStepTearsheet.js +4 -2
  60. package/lib/components/DataSpreadsheet/DataSpreadsheet.js +1 -3
  61. package/lib/components/DataSpreadsheet/utils/handleCellDeletion.js +5 -4
  62. package/lib/components/Datagrid/Datagrid/DatagridContent.js +18 -6
  63. package/lib/components/Datagrid/Datagrid/DatagridEmptyBody.js +9 -3
  64. package/lib/components/Datagrid/Datagrid/DatagridRow.js +2 -11
  65. package/lib/components/Datagrid/Datagrid/DatagridVirtualBody.js +27 -8
  66. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/Actions.js +7 -9
  67. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/ButtonWrapper.js +6 -6
  68. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +26 -24
  69. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/{CustomizeColumnsModal.js → CustomizeColumnsTearsheet.js} +26 -25
  70. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/{ModalWrapper.js → TearsheetWrapper.js} +30 -33
  71. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/index.js +3 -3
  72. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +26 -36
  73. package/lib/components/Datagrid/Datagrid.stories/index.js +1 -1
  74. package/lib/components/Datagrid/useCustomizeColumns.js +7 -7
  75. package/lib/components/Datagrid/useFiltering.js +0 -2
  76. package/lib/components/Datagrid/useParentDimensions.js +3 -1
  77. package/lib/components/Datagrid/utils/getArgTypes.js +5 -0
  78. package/lib/components/Datagrid/utils/getInlineEditColumns.js +6 -1
  79. package/lib/components/ImportModal/ImportModal.js +42 -44
  80. package/lib/components/index.js +6 -0
  81. package/lib/global/js/hooks/useCreateComponentFocus.js +32 -10
  82. package/lib/global/js/hooks/useCreateComponentStepChange.js +73 -79
  83. package/lib/global/js/utils/test-helper.js +12 -14
  84. package/lib/global/js/utils/unwrap-if-fragment.js +1 -1
  85. package/package.json +10 -10
  86. package/scss/components/Datagrid/_storybook-styles.scss +7 -0
  87. package/scss/components/Datagrid/styles/_datagrid.scss +22 -0
  88. package/scss/components/Datagrid/styles/_draggableElement.scss +9 -8
  89. package/scss/components/Datagrid/styles/_index.scss +8 -8
  90. package/scss/components/Datagrid/styles/addons/_CustomizeColumnsTearsheet.scss +60 -0
  91. package/scss/components/FilterSummary/_filter-summary.scss +1 -0
  92. package/scss/components/Tearsheet/_tearsheet.scss +2 -0
  93. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/ModalWrapper.js +0 -56
  94. package/scss/components/Datagrid/styles/addons/_CustomizeColumnsModal.scss +0 -86
@@ -160,54 +160,52 @@ export var APIKeyModal = /*#__PURE__*/forwardRef(function (_ref, ref) {
160
160
  var submitHandler = /*#__PURE__*/function () {
161
161
  var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(e) {
162
162
  return _regeneratorRuntime.wrap(function _callee$(_context) {
163
- while (1) {
164
- switch (_context.prev = _context.next) {
165
- case 0:
166
- e.preventDefault();
167
- if (!hasNextStep) {
168
- _context.next = 5;
169
- break;
170
- }
171
- setCurrentStep(currentStep + 1);
172
- _context.next = 22;
163
+ while (1) switch (_context.prev = _context.next) {
164
+ case 0:
165
+ e.preventDefault();
166
+ if (!hasNextStep) {
167
+ _context.next = 5;
173
168
  break;
174
- case 5:
175
- if (!apiKeyLoaded) {
176
- _context.next = 21;
177
- break;
178
- }
179
- if (!onCopy) {
180
- _context.next = 10;
181
- break;
182
- }
183
- onCopy(apiKey);
184
- _context.next = 19;
169
+ }
170
+ setCurrentStep(currentStep + 1);
171
+ _context.next = 22;
172
+ break;
173
+ case 5:
174
+ if (!apiKeyLoaded) {
175
+ _context.next = 21;
185
176
  break;
186
- case 10:
187
- _context.prev = 10;
188
- _context.next = 13;
189
- return navigator.clipboard.writeText(apiKey);
190
- case 13:
191
- _context.next = 19;
177
+ }
178
+ if (!onCopy) {
179
+ _context.next = 10;
192
180
  break;
193
- case 15:
194
- _context.prev = 15;
195
- _context.t0 = _context["catch"](10);
196
- console.error(_context.t0);
197
- setCopyError(true);
198
- case 19:
199
- _context.next = 22;
200
- break;
201
- case 21:
202
- if (editing) {
203
- onRequestEdit(name);
204
- } else {
205
- onRequestGenerate(name);
206
- }
207
- case 22:
208
- case "end":
209
- return _context.stop();
210
- }
181
+ }
182
+ onCopy(apiKey);
183
+ _context.next = 19;
184
+ break;
185
+ case 10:
186
+ _context.prev = 10;
187
+ _context.next = 13;
188
+ return navigator.clipboard.writeText(apiKey);
189
+ case 13:
190
+ _context.next = 19;
191
+ break;
192
+ case 15:
193
+ _context.prev = 15;
194
+ _context.t0 = _context["catch"](10);
195
+ console.error(_context.t0);
196
+ setCopyError(true);
197
+ case 19:
198
+ _context.next = 22;
199
+ break;
200
+ case 21:
201
+ if (editing) {
202
+ onRequestEdit(name);
203
+ } else {
204
+ onRequestGenerate(name);
205
+ }
206
+ case 22:
207
+ case "end":
208
+ return _context.stop();
211
209
  }
212
210
  }, _callee, null, [[10, 15]]);
213
211
  }));
@@ -152,7 +152,7 @@ export var AddSelectBody = /*#__PURE__*/forwardRef(function (_ref, ref) {
152
152
  onCloseHandler();
153
153
  };
154
154
  var setShowBreadsCrumbs = function setShowBreadsCrumbs() {
155
- if (searchTerm || globalFiltersApplied || !path || path.length === 0) {
155
+ if (useNormalizedItems === false || searchTerm || globalFiltersApplied) {
156
156
  return false;
157
157
  }
158
158
  return true;
@@ -10,7 +10,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
10
10
  // LICENSE file in the root directory of this source tree.
11
11
  //
12
12
 
13
- import { useState } from 'react';
13
+ import { useState, useEffect } from 'react';
14
14
  var usePath = function usePath() {
15
15
  var itemsLabel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
16
16
  var _useState = useState([{
@@ -20,6 +20,12 @@ var usePath = function usePath() {
20
20
  _useState2 = _slicedToArray(_useState, 2),
21
21
  path = _useState2[0],
22
22
  setPath = _useState2[1];
23
+ useEffect(function () {
24
+ setPath([{
25
+ id: 'base_of_path',
26
+ title: itemsLabel
27
+ }]);
28
+ }, [itemsLabel]);
23
29
  var handler = function handler(id, title, parentId) {
24
30
  if (path.find(function (entry) {
25
31
  return entry.id === id;
@@ -7,7 +7,7 @@ var _excluded = ["breadcrumbs", "className", "maxVisible", "noTrailingSlash", "o
7
7
  _excluded3 = ["className", "key", "label", "title"];
8
8
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
9
9
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
10
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
10
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
11
11
  //
12
12
  // Copyright IBM Corp. 2020, 2021
13
13
  //
@@ -10,7 +10,7 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
10
10
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
11
11
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
12
12
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
13
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
13
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
14
14
  //
15
15
  // Copyright IBM Corp. 2020, 2021
16
16
  //
@@ -1,7 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
- var _excluded = ["backButtonText", "cancelButtonText", "children", "className", "modalDangerButtonText", "modalDescription", "modalSecondaryButtonText", "modalTitle", "nextButtonText", "onClose", "onRequestSubmit", "submitButtonText"];
4
+ var _excluded = ["backButtonText", "cancelButtonText", "children", "className", "modalDangerButtonText", "modalDescription", "modalSecondaryButtonText", "modalTitle", "nextButtonText", "onClose", "onRequestSubmit", "firstFocusElement", "submitButtonText"];
5
5
  /**
6
6
  * Copyright IBM Corp. 2021, 2022
7
7
  *
@@ -47,6 +47,7 @@ export var CreateFullPage = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
47
47
  nextButtonText = _ref.nextButtonText,
48
48
  onClose = _ref.onClose,
49
49
  onRequestSubmit = _ref.onRequestSubmit,
50
+ firstFocusElement = _ref.firstFocusElement,
50
51
  submitButtonText = _ref.submitButtonText,
51
52
  rest = _objectWithoutProperties(_ref, _excluded);
52
53
  var _useState = useState([]),
@@ -113,7 +114,8 @@ export var CreateFullPage = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
113
114
  previousState: previousState,
114
115
  currentStep: currentStep,
115
116
  blockClass: blockClass,
116
- onMount: onMount
117
+ onMount: onMount,
118
+ firstFocusElement: firstFocusElement
117
119
  });
118
120
  useValidCreateStepCount(stepData.length, componentName);
119
121
  useCreateComponentStepChange({
@@ -233,6 +235,10 @@ CreateFullPage.propTypes = {
233
235
  * Provide an optional class to be applied to the containing node.
234
236
  */
235
237
  className: PropTypes.string,
238
+ /**
239
+ * Specifies elements to focus on first on render.
240
+ */
241
+ firstFocusElement: PropTypes.string,
236
242
  /**
237
243
  * The primary 'danger' button text in the modal
238
244
  */
@@ -1,7 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
- var _excluded = ["backButtonText", "cancelButtonText", "children", "className", "description", "influencerWidth", "initialStep", "label", "nextButtonText", "onClose", "onRequestSubmit", "open", "submitButtonText", "title", "verticalPosition"];
4
+ var _excluded = ["backButtonText", "cancelButtonText", "children", "className", "description", "influencerWidth", "initialStep", "label", "nextButtonText", "onClose", "onRequestSubmit", "open", "firstFocusElement", "submitButtonText", "title", "verticalPosition"];
5
5
  /**
6
6
  * Copyright IBM Corp. 2021, 2022
7
7
  *
@@ -52,6 +52,7 @@ export var CreateTearsheet = /*#__PURE__*/forwardRef(function (_ref, ref) {
52
52
  onClose = _ref.onClose,
53
53
  onRequestSubmit = _ref.onRequestSubmit,
54
54
  open = _ref.open,
55
+ firstFocusElement = _ref.firstFocusElement,
55
56
  submitButtonText = _ref.submitButtonText,
56
57
  title = _ref.title,
57
58
  _ref$verticalPosition = _ref.verticalPosition,
@@ -122,7 +123,8 @@ export var CreateTearsheet = /*#__PURE__*/forwardRef(function (_ref, ref) {
122
123
  previousState: previousState,
123
124
  currentStep: currentStep,
124
125
  blockClass: blockClass,
125
- onMount: onMount
126
+ onMount: onMount,
127
+ firstFocusElement: firstFocusElement
126
128
  });
127
129
  useValidCreateStepCount(stepData.length, componentName);
128
130
  useResetCreateComponent({
@@ -248,6 +250,10 @@ CreateTearsheet.propTypes = {
248
250
  * A description of the flow, displayed in the header area of the tearsheet.
249
251
  */
250
252
  description: PropTypes.node,
253
+ /**
254
+ * Specifies elements to focus on first on render.
255
+ */
256
+ firstFocusElement: PropTypes.string,
251
257
  /**
252
258
  * Used to set the size of the influencer
253
259
  */
@@ -47,7 +47,8 @@ export var MultiStepTearsheet = function MultiStepTearsheet(_ref2) {
47
47
  label = _ref2.label,
48
48
  nextButtonText = _ref2.nextButtonText,
49
49
  submitButtonText = _ref2.submitButtonText,
50
- title = _ref2.title;
50
+ title = _ref2.title,
51
+ firstFocusElement = _ref2.firstFocusElement;
51
52
  var _useState = useState(750),
52
53
  _useState2 = _slicedToArray(_useState, 1),
53
54
  simulatedDelay = _useState2[0];
@@ -130,7 +131,8 @@ export var MultiStepTearsheet = function MultiStepTearsheet(_ref2) {
130
131
  resolve();
131
132
  }, simulatedDelay);
132
133
  });
133
- }
134
+ },
135
+ firstFocusElement: firstFocusElement
134
136
  }, /*#__PURE__*/React.createElement(CreateTearsheetStep, {
135
137
  onNext: function onNext() {
136
138
  return new Promise(function (resolve, reject) {
@@ -186,9 +186,7 @@ export var DataSpreadsheet = /*#__PURE__*/React.forwardRef(function (_ref, ref)
186
186
  // Removes the active cell element
187
187
  var removeActiveCell = useCallback(function () {
188
188
  var activeCellHighlight = spreadsheetRef.current.querySelector(".".concat(blockClass, "__active-cell--highlight"));
189
- if (activeCellHighlight) {
190
- activeCellHighlight.style.display = 'none';
191
- }
189
+ activeCellHighlight.style.display = 'none';
192
190
  }, [spreadsheetRef]);
193
191
  var removeCellEditor = useCallback(function () {
194
192
  setCellEditorValue('');
@@ -8,6 +8,7 @@
8
8
  import { deepCloneObject } from '../../../global/js/utils/deepCloneObject';
9
9
  import { rangeWithCallback } from '../../../global/js/utils/rangeWithCallback';
10
10
  export var handleCellDeletion = function handleCellDeletion(_ref) {
11
+ var _selectionAreaToEmpty, _selectionAreaToEmpty2, _selectionAreaToEmpty3, _selectionAreaToEmpty4, _selectionAreaToEmpty5, _selectionAreaToEmpty6, _selectionAreaToEmpty7, _selectionAreaToEmpty8;
11
12
  var activeCellCoordinates = _ref.activeCellCoordinates,
12
13
  selectionAreas = _ref.selectionAreas,
13
14
  currentMatcher = _ref.currentMatcher,
@@ -25,10 +26,10 @@ export var handleCellDeletion = function handleCellDeletion(_ref) {
25
26
  return item.matcher === currentMatcher;
26
27
  });
27
28
  var selectionAreaToEmptyContents = selectionAreaClone[indexOfCurrentSelectionArea];
28
- var lowestColumnIndex = Math.min(selectionAreaToEmptyContents.point1.column, selectionAreaToEmptyContents.point2.column);
29
- var greatestColumnIndex = Math.max(selectionAreaToEmptyContents.point1.column, selectionAreaToEmptyContents.point2.column);
30
- var lowestRowIndex = Math.min(selectionAreaToEmptyContents.point1.row, selectionAreaToEmptyContents.point2.row);
31
- var greatestRowIndex = Math.max(selectionAreaToEmptyContents.point1.row, selectionAreaToEmptyContents.point2.row);
29
+ var lowestColumnIndex = Math.min(selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty = selectionAreaToEmptyContents.point1) === null || _selectionAreaToEmpty === void 0 ? void 0 : _selectionAreaToEmpty.column, selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty2 = selectionAreaToEmptyContents.point2) === null || _selectionAreaToEmpty2 === void 0 ? void 0 : _selectionAreaToEmpty2.column);
30
+ var greatestColumnIndex = Math.max(selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty3 = selectionAreaToEmptyContents.point1) === null || _selectionAreaToEmpty3 === void 0 ? void 0 : _selectionAreaToEmpty3.column, selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty4 = selectionAreaToEmptyContents.point2) === null || _selectionAreaToEmpty4 === void 0 ? void 0 : _selectionAreaToEmpty4.column);
31
+ var lowestRowIndex = Math.min(selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty5 = selectionAreaToEmptyContents.point1) === null || _selectionAreaToEmpty5 === void 0 ? void 0 : _selectionAreaToEmpty5.row, selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty6 = selectionAreaToEmptyContents.point2) === null || _selectionAreaToEmpty6 === void 0 ? void 0 : _selectionAreaToEmpty6.row);
32
+ var greatestRowIndex = Math.max(selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty7 = selectionAreaToEmptyContents.point1) === null || _selectionAreaToEmpty7 === void 0 ? void 0 : _selectionAreaToEmpty7.row, selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty8 = selectionAreaToEmptyContents.point2) === null || _selectionAreaToEmpty8 === void 0 ? void 0 : _selectionAreaToEmpty8.row);
32
33
  rangeWithCallback(lowestColumnIndex, greatestColumnIndex, function (columnIndex) {
33
34
  rangeWithCallback(lowestRowIndex, greatestRowIndex, function (rowIndex) {
34
35
  var cellProps = rows[rowIndex].cells[columnIndex];
@@ -1,5 +1,12 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
+ /**
4
+ * Copyright IBM Corp. 2022, 2022
5
+ *
6
+ * This source code is licensed under the Apache-2.0 license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ */
9
+
3
10
  import React, { useContext, useEffect, useRef } from 'react';
4
11
  import cx from 'classnames';
5
12
  import PropTypes from 'prop-types';
@@ -29,7 +36,7 @@ export var DatagridContent = function DatagridContent(_ref) {
29
36
  withVirtualScroll = datagridState.withVirtualScroll,
30
37
  DatagridPagination = datagridState.DatagridPagination,
31
38
  isFetching = datagridState.isFetching,
32
- CustomizeColumnsModal = datagridState.CustomizeColumnsModal,
39
+ CustomizeColumnsTearsheet = datagridState.CustomizeColumnsTearsheet,
33
40
  leftPanel = datagridState.leftPanel,
34
41
  fullHeightDatagrid = datagridState.fullHeightDatagrid,
35
42
  _datagridState$vertic = datagridState.verticalAlign,
@@ -41,7 +48,8 @@ export var DatagridContent = function DatagridContent(_ref) {
41
48
  withInlineEdit = datagridState.withInlineEdit,
42
49
  tableId = datagridState.tableId,
43
50
  DatagridActions = datagridState.DatagridActions,
44
- totalColumnsWidth = datagridState.totalColumnsWidth;
51
+ totalColumnsWidth = datagridState.totalColumnsWidth,
52
+ gridRef = datagridState.gridRef;
45
53
  var rows = DatagridPagination && datagridState.page || datagridState.rows;
46
54
  var gridActive = state.gridActive,
47
55
  editId = state.editId;
@@ -81,7 +89,7 @@ export var DatagridContent = function DatagridContent(_ref) {
81
89
  onFocus: withInlineEdit ? function () {
82
90
  return handleGridFocus(state, dispatch);
83
91
  } : null
84
- }), /*#__PURE__*/React.createElement(DatagridHead, datagridState), /*#__PURE__*/React.createElement(DatagridBody, _extends({}, datagridState, {
92
+ }), !withVirtualScroll ? /*#__PURE__*/React.createElement(DatagridHead, datagridState) : null, /*#__PURE__*/React.createElement(DatagridBody, _extends({}, datagridState, {
85
93
  rows: rows
86
94
  })));
87
95
  };
@@ -116,7 +124,10 @@ export var DatagridContent = function DatagridContent(_ref) {
116
124
  className: "".concat(blockClass, "__datagridLeftPanel")
117
125
  }, leftPanel.panelContent), withInlineEdit ? /*#__PURE__*/React.createElement("div", {
118
126
  ref: multiKeyTrackingRef
119
- }, renderTable()) : renderTable())), (rows === null || rows === void 0 ? void 0 : rows.length) > 0 && !isFetching && DatagridPagination && /*#__PURE__*/React.createElement(DatagridPagination, datagridState), CustomizeColumnsModal && /*#__PURE__*/React.createElement(CustomizeColumnsModal, {
127
+ }, renderTable()) : withVirtualScroll ? /*#__PURE__*/React.createElement("div", {
128
+ className: "".concat(blockClass, "__virtualScrollContainer"),
129
+ ref: gridRef
130
+ }, renderTable()) : renderTable())), (rows === null || rows === void 0 ? void 0 : rows.length) > 0 && !isFetching && DatagridPagination && /*#__PURE__*/React.createElement(DatagridPagination, datagridState), CustomizeColumnsTearsheet && /*#__PURE__*/React.createElement(CustomizeColumnsTearsheet, {
120
131
  instance: datagridState
121
132
  }));
122
133
  };
@@ -126,7 +137,7 @@ DatagridContent.propTypes = {
126
137
  withVirtualScroll: PropTypes.bool,
127
138
  DatagridActions: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
128
139
  DatagridPagination: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
129
- CustomizeColumnsModal: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
140
+ CustomizeColumnsTearsheet: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
130
141
  isFetching: PropTypes.bool,
131
142
  leftPanel: PropTypes.object,
132
143
  fullHeightDatagrid: PropTypes.bool,
@@ -139,6 +150,7 @@ DatagridContent.propTypes = {
139
150
  page: PropTypes.arrayOf(PropTypes.object),
140
151
  rows: PropTypes.arrayOf(PropTypes.object),
141
152
  tableId: PropTypes.string,
142
- totalColumnsWidth: PropTypes.number
153
+ totalColumnsWidth: PropTypes.number,
154
+ gridRef: PropTypes.object
143
155
  })
144
156
  };
@@ -22,7 +22,9 @@ var DatagridEmptyBody = function DatagridEmptyBody(datagridState) {
22
22
  emptyStateSize = datagridState.emptyStateSize,
23
23
  _datagridState$emptyS = datagridState.emptyStateType,
24
24
  emptyStateType = _datagridState$emptyS === void 0 ? 'noData' : _datagridState$emptyS,
25
- illustrationTheme = datagridState.illustrationTheme;
25
+ illustrationTheme = datagridState.illustrationTheme,
26
+ emptyStateAction = datagridState.emptyStateAction,
27
+ emptyStateLink = datagridState.emptyStateLink;
26
28
  return /*#__PURE__*/React.createElement(TableBody, _extends({}, getTableBodyProps(), {
27
29
  className: "".concat(blockClass, "__empty-state-body")
28
30
  }), /*#__PURE__*/React.createElement(TableRow, null, /*#__PURE__*/React.createElement(TableCell, {
@@ -31,12 +33,16 @@ var DatagridEmptyBody = function DatagridEmptyBody(datagridState) {
31
33
  illustrationTheme: illustrationTheme,
32
34
  size: emptyStateSize,
33
35
  title: emptyStateTitle,
34
- subtitle: emptyStateDescription
36
+ subtitle: emptyStateDescription,
37
+ action: emptyStateAction,
38
+ link: emptyStateLink
35
39
  }), emptyStateType === 'noData' && /*#__PURE__*/React.createElement(NoDataEmptyState, {
36
40
  illustrationTheme: illustrationTheme,
37
41
  size: emptyStateSize,
38
42
  title: emptyStateTitle,
39
- subtitle: emptyStateDescription
43
+ subtitle: emptyStateDescription,
44
+ action: emptyStateAction,
45
+ link: emptyStateLink
40
46
  }))));
41
47
  };
42
48
  export default DatagridEmptyBody;
@@ -10,14 +10,12 @@ var _excluded = ["children"];
10
10
  * restricted by GSA ADP Schedule Contract with IBM Corp.
11
11
  */
12
12
  // @flow
13
- import React, { useContext } from 'react';
13
+ import React from 'react';
14
14
  import { DataTable, SkeletonText } from 'carbon-components-react';
15
15
  import { px } from '@carbon/layout';
16
16
  import cx from 'classnames';
17
17
  import { selectionColumnId } from '../common-column-ids';
18
18
  import { pkg, carbon } from '../../../settings';
19
- import { InlineEditContext } from './addons/InlineEdit/InlineEditContext/InlineEditContext';
20
- import { getCellIdAsObject } from './addons/InlineEdit/InlineEditContext/getCellIdAsObject';
21
19
  var blockClass = "".concat(pkg.prefix, "--datagrid");
22
20
  var TableRow = DataTable.TableRow,
23
21
  TableCell = DataTable.TableCell;
@@ -35,10 +33,6 @@ var DatagridRow = function DatagridRow(datagridState) {
35
33
  var row = datagridState.row,
36
34
  rowSize = datagridState.rowSize,
37
35
  withNestedRows = datagridState.withNestedRows;
38
- var _useContext = useContext(InlineEditContext),
39
- state = _useContext.state;
40
- var activeCellId = state.activeCellId;
41
- var activeCellObject = activeCellId && getCellIdAsObject(activeCellId);
42
36
  var getVisibleNestedRowCount = function getVisibleNestedRowCount(_ref) {
43
37
  var isExpanded = _ref.isExpanded,
44
38
  subRows = _ref.subRows;
@@ -52,7 +46,7 @@ var DatagridRow = function DatagridRow(datagridState) {
52
46
  return size;
53
47
  };
54
48
  return /*#__PURE__*/React.createElement(TableRow, _extends({
55
- className: cx("".concat(blockClass, "__carbon-row"), (_cx = {}, _defineProperty(_cx, "".concat(blockClass, "__carbon-row-expanded"), row.isExpanded), _defineProperty(_cx, "".concat(blockClass, "__carbon-row-expandable"), row.canExpand), _defineProperty(_cx, "".concat(carbon.prefix, "--data-table--selected"), row.isSelected), _defineProperty(_cx, "".concat(blockClass, "__carbon-row-hover-active"), activeCellObject && row.index === activeCellObject.row), _cx))
49
+ className: cx("".concat(blockClass, "__carbon-row"), (_cx = {}, _defineProperty(_cx, "".concat(blockClass, "__carbon-row-expanded"), row.isExpanded), _defineProperty(_cx, "".concat(blockClass, "__carbon-row-expandable"), row.canExpand), _defineProperty(_cx, "".concat(carbon.prefix, "--data-table--selected"), row.isSelected), _cx))
56
50
  }, row.getRowProps(), {
57
51
  key: row.id,
58
52
  onMouseEnter: function onMouseEnter(event) {
@@ -13,6 +13,8 @@ import React, { useEffect } from 'react';
13
13
  import { VariableSizeList } from 'react-window';
14
14
  import { DataTable } from 'carbon-components-react';
15
15
  import { pkg } from '../../../settings';
16
+ import DatagridHead from './DatagridHead';
17
+ import { px } from '@carbon/layout';
16
18
  var blockClass = "".concat(pkg.prefix, "--datagrid");
17
19
  var TableBody = DataTable.TableBody;
18
20
  var rowSizeMap = {
@@ -29,6 +31,7 @@ var rowSizeMap = {
29
31
  };
30
32
  var defaultRowHeight = rowSizeMap.lg;
31
33
  var DatagridVirtualBody = function DatagridVirtualBody(datagridState) {
34
+ var _gridRef$current, _gridRef$current2;
32
35
  var getTableBodyProps = datagridState.getTableBodyProps,
33
36
  rows = datagridState.rows,
34
37
  prepareRow = datagridState.prepareRow,
@@ -42,7 +45,14 @@ var DatagridVirtualBody = function DatagridVirtualBody(datagridState) {
42
45
  DatagridPagination = datagridState.DatagridPagination,
43
46
  page = datagridState.page,
44
47
  handleResize = datagridState.handleResize,
45
- withOverflowRow = datagridState.withOverflowRow;
48
+ gridRef = datagridState.gridRef;
49
+ var syncScroll = function syncScroll(e) {
50
+ var virtualBody = e.target;
51
+ document.querySelector(".".concat(blockClass, "__head-warp")).scrollLeft = virtualBody.scrollLeft;
52
+ var spacerColumn = document.querySelector(".".concat(blockClass, "__head-warp thead th:last-child"));
53
+ spacerColumn.style.width = px(32 + (virtualBody.offsetWidth - virtualBody.clientWidth)); // scrollbar width to header column to fix header alignment
54
+ };
55
+
46
56
  useEffect(function () {
47
57
  handleResize();
48
58
  }, [handleResize]);
@@ -51,8 +61,16 @@ var DatagridVirtualBody = function DatagridVirtualBody(datagridState) {
51
61
  listRef.current.resetAfterIndex(0);
52
62
  }
53
63
  var visibleRows = DatagridPagination && page || rows;
54
- return /*#__PURE__*/React.createElement(TableBody, _extends({}, getTableBodyProps(), {
55
- onScroll: onScroll
64
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
65
+ className: "".concat(blockClass, "__head-warp"),
66
+ style: {
67
+ width: (_gridRef$current = gridRef.current) === null || _gridRef$current === void 0 ? void 0 : _gridRef$current.clientWidth,
68
+ overflow: 'hidden'
69
+ }
70
+ }, /*#__PURE__*/React.createElement(DatagridHead, datagridState)), /*#__PURE__*/React.createElement(TableBody, _extends({}, getTableBodyProps(), {
71
+ onScroll: function onScroll(e) {
72
+ return syncScroll(e);
73
+ }
56
74
  }), /*#__PURE__*/React.createElement(VariableSizeList, {
57
75
  height: virtualHeight || tableHeight,
58
76
  itemCount: visibleRows.length,
@@ -63,19 +81,20 @@ var DatagridVirtualBody = function DatagridVirtualBody(datagridState) {
63
81
  onScroll: onScroll,
64
82
  innerRef: innerListRef,
65
83
  ref: listRef,
66
- className: "".concat(blockClass, "__virtual-scrollbar")
84
+ className: "".concat(blockClass, "__virtual-scrollbar"),
85
+ style: {
86
+ width: (_gridRef$current2 = gridRef.current) === null || _gridRef$current2 === void 0 ? void 0 : _gridRef$current2.clientWidth
87
+ }
67
88
  }, function (_ref) {
68
89
  var index = _ref.index,
69
90
  style = _ref.style;
70
91
  var row = visibleRows[index];
71
92
  prepareRow(row);
72
93
  return /*#__PURE__*/React.createElement("div", {
73
- style: _objectSpread(_objectSpread({}, style), {}, {
74
- overflow: withOverflowRow ? 'visible' : 'hidden'
75
- })
94
+ style: _objectSpread({}, style)
76
95
  }, row.RowRenderer(_objectSpread(_objectSpread({}, datagridState), {}, {
77
96
  row: row
78
97
  })));
79
- }));
98
+ })));
80
99
  };
81
100
  export default DatagridVirtualBody;
@@ -1,10 +1,8 @@
1
- // @flow
2
- /*
3
- * Licensed Materials - Property of IBM
4
- * 5724-Q36
5
- * (c) Copyright IBM Corp. 2021
6
- * US Government Users Restricted Rights - Use, duplication or disclosure
7
- * restricted by GSA ADP Schedule Contract with IBM Corp.
1
+ /**
2
+ * Copyright IBM Corp. 2022, 2022
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
8
6
  */
9
7
 
10
8
  import PropTypes from 'prop-types';
@@ -17,11 +15,11 @@ var Actions = function Actions(_ref) {
17
15
  setSearchText = _ref.setSearchText,
18
16
  findColumnPlaceholderLabel = _ref.findColumnPlaceholderLabel;
19
17
  return /*#__PURE__*/React.createElement("div", {
20
- className: "".concat(blockClass, "__customize-columns-modal--actions")
18
+ className: "".concat(blockClass, "__customize-columns-tearsheet--actions")
21
19
  }, /*#__PURE__*/React.createElement(Search, {
22
20
  placeholder: findColumnPlaceholderLabel,
23
21
  value: searchText,
24
- size: "sm",
22
+ size: "xl",
25
23
  labelText: findColumnPlaceholderLabel,
26
24
  onChange: function onChange(e) {
27
25
  // TODO: is it performant?
@@ -1,13 +1,11 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["onClick", "setIsModalOpen", "isModalOpen", "iconTooltipLabel"];
4
- // @flow
5
- /*
6
- * Licensed Materials - Property of IBM
7
- * 5724-Q36
8
- * (c) Copyright IBM Corp. 2021
9
- * US Government Users Restricted Rights - Use, duplication or disclosure
10
- * restricted by GSA ADP Schedule Contract with IBM Corp.
3
+ var _excluded = ["onClick", "setIsTearsheetOpen", "isTearsheetOpen", "iconTooltipLabel"];
4
+ /**
5
+ * Copyright IBM Corp. 2022, 2022
6
+ *
7
+ * This source code is licensed under the Apache-2.0 license found in the
8
+ * LICENSE file in the root directory of this source tree.
11
9
  */
12
10
 
13
11
  import * as React from 'react';
@@ -18,8 +16,8 @@ import { pkg } from '../../../../../settings';
18
16
  var blockClass = "".concat(pkg.prefix, "--datagrid");
19
17
  var ButtonWrapper = function ButtonWrapper(_ref) {
20
18
  var _onClick = _ref.onClick,
21
- setIsModalOpen = _ref.setIsModalOpen,
22
- isModalOpen = _ref.isModalOpen,
19
+ setIsTearsheetOpen = _ref.setIsTearsheetOpen,
20
+ isTearsheetOpen = _ref.isTearsheetOpen,
23
21
  _ref$iconTooltipLabel = _ref.iconTooltipLabel,
24
22
  iconTooltipLabel = _ref$iconTooltipLabel === void 0 ? 'Customize columns' : _ref$iconTooltipLabel,
25
23
  rest = _objectWithoutProperties(_ref, _excluded);
@@ -31,7 +29,7 @@ var ButtonWrapper = function ButtonWrapper(_ref) {
31
29
  hasIconOnly: true,
32
30
  "test-id": "".concat(blockClass, "__customize-columns-trigger"),
33
31
  onClick: function onClick() {
34
- setIsModalOpen(!isModalOpen);
32
+ setIsTearsheetOpen(!isTearsheetOpen);
35
33
  if (typeof _onClick === 'function') {
36
34
  _onClick();
37
35
  }
@@ -40,8 +38,8 @@ var ButtonWrapper = function ButtonWrapper(_ref) {
40
38
  };
41
39
  ButtonWrapper.propTypes = {
42
40
  iconTooltipLabel: PropTypes.string,
43
- isModalOpen: PropTypes.bool.isRequired,
41
+ isTearsheetOpen: PropTypes.bool.isRequired,
44
42
  onClick: PropTypes.func.isRequired,
45
- setIsModalOpen: PropTypes.func.isRequired
43
+ setIsTearsheetOpen: PropTypes.func.isRequired
46
44
  };
47
45
  export default ButtonWrapper;