@carbon/ibm-products 1.16.0 → 1.17.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. package/css/index-full-carbon.css +32 -7
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +6 -3
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +9 -3
  6. package/css/index-without-carbon-released-only.css.map +1 -1
  7. package/css/index-without-carbon-released-only.min.css +4 -1
  8. package/css/index-without-carbon-released-only.min.css.map +1 -1
  9. package/css/index-without-carbon.css +32 -7
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +6 -3
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +32 -7
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +6 -3
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/DataSpreadsheet/DataSpreadsheet.js +1 -0
  18. package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +6 -2
  19. package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +5 -2
  20. package/es/components/DataSpreadsheet/hooks/useSpreadsheetEdit.js +57 -12
  21. package/es/components/DataSpreadsheet/utils/checkSelectedHeaderCell.js +16 -0
  22. package/es/components/DataSpreadsheet/utils/createCellSelectionArea.js +10 -5
  23. package/es/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +6 -2
  24. package/es/components/Datagrid/Datagrid/Datagrid.js +24 -12
  25. package/es/components/Datagrid/Datagrid/DatagridHead.js +8 -16
  26. package/es/components/Datagrid/Datagrid/DatagridHeaderRow.js +10 -10
  27. package/es/components/Datagrid/Datagrid/index.js +6 -7
  28. package/es/components/Datagrid/index.js +1 -1
  29. package/es/components/ExportModal/ExportModal.js +10 -5
  30. package/es/components/SidePanel/SidePanel.js +5 -1
  31. package/es/components/WebTerminal/WebTerminal.js +36 -11
  32. package/es/components/WebTerminal/WebTerminalContentWrapper.js +49 -0
  33. package/es/components/WebTerminal/index.js +2 -1
  34. package/es/components/index.js +1 -1
  35. package/es/global/js/package-settings.js +1 -0
  36. package/lib/components/DataSpreadsheet/DataSpreadsheet.js +1 -0
  37. package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +7 -2
  38. package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +6 -2
  39. package/lib/components/DataSpreadsheet/hooks/useSpreadsheetEdit.js +61 -11
  40. package/lib/components/DataSpreadsheet/utils/checkSelectedHeaderCell.js +26 -0
  41. package/lib/components/DataSpreadsheet/utils/createCellSelectionArea.js +10 -5
  42. package/lib/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +6 -2
  43. package/lib/components/Datagrid/Datagrid/Datagrid.js +25 -8
  44. package/lib/components/Datagrid/Datagrid/DatagridHead.js +8 -16
  45. package/lib/components/Datagrid/Datagrid/DatagridHeaderRow.js +10 -10
  46. package/lib/components/Datagrid/Datagrid/index.js +3 -5
  47. package/lib/components/Datagrid/index.js +2 -2
  48. package/lib/components/ExportModal/ExportModal.js +9 -4
  49. package/lib/components/SidePanel/SidePanel.js +5 -1
  50. package/lib/components/WebTerminal/WebTerminal.js +36 -10
  51. package/lib/components/WebTerminal/WebTerminalContentWrapper.js +58 -0
  52. package/lib/components/WebTerminal/index.js +9 -1
  53. package/lib/components/index.js +6 -0
  54. package/lib/global/js/package-settings.js +1 -0
  55. package/package.json +9 -9
  56. package/scss/components/DataSpreadsheet/_data-spreadsheet.scss +10 -0
  57. package/scss/components/SidePanel/_side-panel.scss +22 -3
  58. package/scss/components/WebTerminal/_storybook-styles.scss +5 -0
  59. package/scss/components/WebTerminal/_web-terminal.scss +14 -4
@@ -39,6 +39,8 @@ var _createCellSelectionArea = require("./utils/createCellSelectionArea");
39
39
 
40
40
  var _checkActiveHeaderCell = require("./utils/checkActiveHeaderCell");
41
41
 
42
+ var _checkSelectedHeaderCell = require("./utils/checkSelectedHeaderCell");
43
+
42
44
  var _handleHeaderCellSelection = require("./utils/handleHeaderCellSelection");
43
45
 
44
46
  var _getSpreadsheetWidth = require("./utils/getSpreadsheetWidth");
@@ -139,6 +141,7 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
139
141
  ref: ref,
140
142
  area: area,
141
143
  blockClass: blockClass,
144
+ columns: columns,
142
145
  defaultColumn: defaultColumn,
143
146
  selectionAreas: selectionAreas,
144
147
  setSelectionAreas: setSelectionAreas,
@@ -149,7 +152,7 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
149
152
  return;
150
153
  });
151
154
  }
152
- }, [selectionAreas, setSelectionAreas, defaultColumn, onSelectionAreaChange, setSelectionAreaData, ref, activeCellCoordinates, setActiveCellInsideSelectionArea]);
155
+ }, [selectionAreas, setSelectionAreas, defaultColumn, onSelectionAreaChange, setSelectionAreaData, ref, activeCellCoordinates, setActiveCellInsideSelectionArea, columns]);
153
156
 
154
157
  var populateSelectionAreaCellData = function populateSelectionAreaCellData(_ref2) {
155
158
  var rowStart = _ref2.rowStart,
@@ -372,6 +375,8 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
372
375
  var row = rows[index];
373
376
 
374
377
  if (rows && rows.length) {
378
+ var _cx;
379
+
375
380
  prepareRow(row);
376
381
  return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, row.getRowProps({
377
382
  style: style
@@ -389,7 +394,7 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
389
394
  "data-column-index": "header",
390
395
  type: "button",
391
396
  onClick: handleRowHeaderClick(index),
392
- className: (0, _classnames.default)("".concat(blockClass, "__td"), "".concat(blockClass, "__td-th"), "".concat(blockClass, "--interactive-cell-element"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__td-th--active-header"), (activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row) === index || (0, _checkActiveHeaderCell.checkActiveHeaderCell)(index, selectionAreas, 'row'))),
397
+ className: (0, _classnames.default)("".concat(blockClass, "__td"), "".concat(blockClass, "__td-th"), "".concat(blockClass, "--interactive-cell-element"), (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__td-th--active-header"), (activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row) === index || (0, _checkActiveHeaderCell.checkActiveHeaderCell)(index, selectionAreas, 'row')), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__td-th--selected-header"), (0, _checkSelectedHeaderCell.checkSelectedHeaderCell)(index, selectionAreas, 'row')), _cx)),
393
398
  style: {
394
399
  width: defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeaderWidth
395
400
  }
@@ -27,6 +27,8 @@ var _hooks = require("../../global/js/hooks");
27
27
 
28
28
  var _checkActiveHeaderCell = require("./utils/checkActiveHeaderCell");
29
29
 
30
+ var _checkSelectedHeaderCell = require("./utils/checkSelectedHeaderCell");
31
+
30
32
  var _handleHeaderCellSelection = require("./utils/handleHeaderCellSelection");
31
33
 
32
34
  var _selectAllCells = require("./utils/selectAllCells");
@@ -142,6 +144,8 @@ var DataSpreadsheetHeader = /*#__PURE__*/(0, _react.forwardRef)(function (_ref,
142
144
  onClick: handleSelectAllClick,
143
145
  className: (0, _classnames.default)("".concat(blockClass, "__th"), "".concat(blockClass, "--interactive-cell-element"), "".concat(blockClass, "__th--select-all"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__th--active-header"), (activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.column) === 'header' && (activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row) === 'header'))
144
146
  }, "\xA0")), headerGroup.headers.map(function (column, index) {
147
+ var _cx2;
148
+
145
149
  return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
146
150
  key: "column_".concat(index),
147
151
  role: "columnheader",
@@ -154,9 +158,9 @@ var DataSpreadsheetHeader = /*#__PURE__*/(0, _react.forwardRef)(function (_ref,
154
158
  onClick: handleColumnHeaderClick(index),
155
159
  style: {
156
160
  height: defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeight,
157
- width: defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.width
161
+ width: (column === null || column === void 0 ? void 0 : column.width) || (defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.width)
158
162
  },
159
- className: (0, _classnames.default)("".concat(blockClass, "__th"), "".concat(blockClass, "--interactive-cell-element"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__th--active-header"), (activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.column) === index || (0, _checkActiveHeaderCell.checkActiveHeaderCell)(index, selectionAreas, 'column'))),
163
+ className: (0, _classnames.default)("".concat(blockClass, "__th"), "".concat(blockClass, "--interactive-cell-element"), (_cx2 = {}, (0, _defineProperty2.default)(_cx2, "".concat(blockClass, "__th--active-header"), (activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.column) === index || (0, _checkActiveHeaderCell.checkActiveHeaderCell)(index, selectionAreas, 'column')), (0, _defineProperty2.default)(_cx2, "".concat(blockClass, "__th--selected-header"), (0, _checkSelectedHeaderCell.checkSelectedHeaderCell)(index, selectionAreas, 'column')), _cx2)),
160
164
  type: "button"
161
165
  }, column.render('Header')));
162
166
  }));
@@ -1,14 +1,22 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
8
  exports.useSpreadsheetEdit = void 0;
7
9
 
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+
8
12
  var _react = require("react");
9
13
 
10
14
  var _layout = require("@carbon/layout");
11
15
 
16
+ var _settings = require("../../../settings");
17
+
18
+ var _hooks = require("../../../global/js/hooks");
19
+
12
20
  // /**
13
21
  // * Copyright IBM Corp. 2022, 2022
14
22
  // *
@@ -24,8 +32,27 @@ var useSpreadsheetEdit = function useSpreadsheetEdit(_ref) {
24
32
  cellEditorRulerRef = _ref.cellEditorRulerRef,
25
33
  columns = _ref.columns,
26
34
  defaultColumn = _ref.defaultColumn,
27
- cellEditorValue = _ref.cellEditorValue;
35
+ cellEditorValue = _ref.cellEditorValue,
36
+ _ref$blockClass = _ref.blockClass,
37
+ blockClass = _ref$blockClass === void 0 ? "".concat(_settings.pkg.prefix, "--data-spreadsheet") : _ref$blockClass;
38
+
39
+ var _useState = (0, _react.useState)(null),
40
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
41
+ nextIndex = _useState2[0],
42
+ setNextIndex = _useState2[1];
43
+
44
+ var previousState = (0, _hooks.usePreviousValue)({
45
+ nextIndex: nextIndex
46
+ });
47
+ (0, _react.useEffect)(function () {
48
+ if (!(previousState !== null && previousState !== void 0 && previousState.nextIndex)) {
49
+ setNextIndex(activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.column);
50
+ }
51
+ }, [previousState === null || previousState === void 0 ? void 0 : previousState.nextIndex, activeCellCoordinates]);
28
52
  (0, _react.useEffect)(function () {
53
+ var rulerWidth = cellEditorRulerRef.current.offsetWidth;
54
+ var cellEditorCurrentWidth = parseInt(cellEditorRef.current.style.width);
55
+
29
56
  if (isEditing) {
30
57
  var _rows$activeCellCoord, _cellProps$column, _cellEditorRef$curren;
31
58
 
@@ -35,25 +62,47 @@ var useSpreadsheetEdit = function useSpreadsheetEdit(_ref) {
35
62
  cellEditorRef.current.style.left = activeCellLeftPosition;
36
63
  cellEditorRef.current.style.top = activeCellTopPosition;
37
64
  cellEditorRef.current.style.display = 'block';
38
- cellEditorRef.current.style.width = activeCellRef === null || activeCellRef === void 0 ? void 0 : activeCellRef.current.style.width;
39
65
  cellEditorRef.current.style.height = activeCellRef === null || activeCellRef === void 0 ? void 0 : activeCellRef.current.style.height;
40
66
  cellEditorRef.current.style.paddingTop = "".concat((parseInt(activeCellRef === null || activeCellRef === void 0 ? void 0 : activeCellRef.current.style.height) - 16) / 2 - 1, "px"); // calculate paddingTop based on cellHeight which could be variable depending on the cellSize prop
41
67
 
42
68
  cellEditorRef.current.style.textAlign = (cellProps === null || cellProps === void 0 ? void 0 : (_cellProps$column = cellProps.column) === null || _cellProps$column === void 0 ? void 0 : _cellProps$column.placement) === 'right' ? 'right' : 'left';
43
69
  (_cellEditorRef$curren = cellEditorRef.current) === null || _cellEditorRef$curren === void 0 ? void 0 : _cellEditorRef$curren.focus();
44
- var rulerWidth = cellEditorRulerRef.current.offsetWidth;
45
- var cellWidth = activeCellRef.current.offsetWidth;
46
70
 
47
- if (rulerWidth >= cellWidth) {
48
- var widthMultiplier = Math.floor(rulerWidth / cellWidth) + 1;
49
- var startingColumnPosition = activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.column;
71
+ if (rulerWidth < cellEditorCurrentWidth) {
72
+ var _columns$nextIndex;
73
+
74
+ var currentColumnWidth = ((_columns$nextIndex = columns[nextIndex]) === null || _columns$nextIndex === void 0 ? void 0 : _columns$nextIndex.width) || (defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.width); // If the contents of the cell editor is deleted past the point of the next column
75
+
76
+ if (rulerWidth < cellEditorCurrentWidth - currentColumnWidth) {
77
+ cellEditorRef.current.style.width = (0, _layout.px)(parseInt(cellEditorRef.current.style.width) - currentColumnWidth);
78
+ setNextIndex(function (prev) {
79
+ if (prev === 0) {
80
+ return prev;
81
+ }
82
+
83
+ return prev - 1;
84
+ });
85
+ } // Decrease cell editor width by increment of current column width
86
+
87
+ }
88
+
89
+ if (rulerWidth >= cellEditorCurrentWidth) {
90
+ var _columns;
91
+
92
+ setNextIndex(function (prev) {
93
+ if (prev === columns.length - 1) {
94
+ return prev;
95
+ }
96
+
97
+ return prev + 1;
98
+ });
99
+ var onLastColumnIndex = nextIndex + 1 === columns.length;
100
+ var nextColumnWidth = onLastColumnIndex ? 0 : ((_columns = columns[nextIndex + 1]) === null || _columns === void 0 ? void 0 : _columns.width) || (defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.width);
50
101
  var startingRowPosition = activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row;
51
- var totalColumns = columns.length;
52
102
  var totalRows = rows.length;
53
- var totalMultiplierPossible = totalColumns - startingColumnPosition;
54
103
  var totalCellEditorMaxHeight = (totalRows - startingRowPosition) * defaultColumn.rowHeight;
55
104
  cellEditorRef.current.style.maxHeight = (0, _layout.px)(totalCellEditorMaxHeight);
56
- cellEditorRef.current.style.width = (0, _layout.px)(cellWidth * (widthMultiplier <= totalMultiplierPossible ? widthMultiplier : totalMultiplierPossible));
105
+ cellEditorRef.current.style.width = (0, _layout.px)(nextColumnWidth + cellEditorCurrentWidth);
57
106
  cellEditorRef.current.style.height = (0, _layout.px)(cellEditorRef.current.scrollHeight); // adds dynamic height to cell editor
58
107
  // Cell editor has reached max height, we need to add the scrolling back.
59
108
  // We also need to subtract 1 to account for the fact that the cell editor
@@ -72,8 +121,9 @@ var useSpreadsheetEdit = function useSpreadsheetEdit(_ref) {
72
121
  cellEditorRef.current.style.display = 'none';
73
122
  cellEditorRef.current.blur();
74
123
  activeCellRef.current.focus();
124
+ setNextIndex(activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.column);
75
125
  }
76
- }, [isEditing, activeCellCoordinates, rows, cellEditorValue, columns.length, defaultColumn, cellEditorValue, activeCellRef, cellEditorRef, cellEditorRulerRef]);
126
+ }, [isEditing, activeCellCoordinates, rows, cellEditorValue, columns.length, defaultColumn, activeCellRef, cellEditorRef, cellEditorRulerRef, columns, blockClass, previousState === null || previousState === void 0 ? void 0 : previousState.cellEditorValue, nextIndex]);
77
127
  };
78
128
 
79
129
  exports.useSpreadsheetEdit = useSpreadsheetEdit;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.checkSelectedHeaderCell = void 0;
7
+
8
+ var _deepCloneObject = require("../../../global/js/utils/deepCloneObject");
9
+
10
+ /**
11
+ * Copyright IBM Corp. 2022, 2022
12
+ *
13
+ * This source code is licensed under the Apache-2.0 license found in the
14
+ * LICENSE file in the root directory of this source tree.
15
+ */
16
+ var checkSelectedHeaderCell = function checkSelectedHeaderCell(headerIndex, selectionAreas, headerType) {
17
+ var areasCloned = (0, _deepCloneObject.deepCloneObject)(selectionAreas);
18
+ var isSelectedHeader = areasCloned.some(function (area) {
19
+ var _area$header, _area$header2;
20
+
21
+ return (area === null || area === void 0 ? void 0 : (_area$header = area.header) === null || _area$header === void 0 ? void 0 : _area$header.type) === headerType && headerIndex === (area === null || area === void 0 ? void 0 : (_area$header2 = area.header) === null || _area$header2 === void 0 ? void 0 : _area$header2.index);
22
+ });
23
+ return isSelectedHeader;
24
+ };
25
+
26
+ exports.checkSelectedHeaderCell = checkSelectedHeaderCell;
@@ -21,6 +21,7 @@ var createCellSelectionArea = function createCellSelectionArea(_ref) {
21
21
  var ref = _ref.ref,
22
22
  area = _ref.area,
23
23
  blockClass = _ref.blockClass,
24
+ columns = _ref.columns,
24
25
  defaultColumn = _ref.defaultColumn,
25
26
  selectionAreas = _ref.selectionAreas,
26
27
  setSelectionAreas = _ref.setSelectionAreas,
@@ -38,24 +39,28 @@ var createCellSelectionArea = function createCellSelectionArea(_ref) {
38
39
  activeCellElement.setAttribute('data-selection-id', area.matcher);
39
40
  }
40
41
 
41
- var point1Element = document.querySelector("[data-row-index=\"".concat(area.point1.row, "\"][data-column-index=\"").concat(area.point1.column, "\"]")) || document.querySelector(".".concat(blockClass, "__body--td")); // if we can't find the point1 element (this can happen in the case where a virtualized row is not present anymore in the DOM), we get the default height/width of the first body cell we find
42
+ var selectionAreaVariableWidth = 0;
43
+ columns.forEach(function (item, index) {
44
+ if (index >= lowestColumnIndex && index <= greatestColumnIndex) {
45
+ selectionAreaVariableWidth += (item === null || item === void 0 ? void 0 : item.width) || (defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.width);
46
+ }
47
+ });
48
+ var point1Element = document.querySelector("[data-row-index=\"".concat(area.point1.row, "\"][data-column-index=\"").concat(area.point1.column, "\"]")) || document.querySelector(".".concat(blockClass, "__body--td")); // if we can't find the point1 element (this can happen in the case where a virtualized row is not present anymore in the DOM), we get the default height of the first body cell we find
42
49
 
43
- var selectionAreaCellWidth = point1Element.offsetWidth;
44
50
  var selectionAreaCellHeight = point1Element.offsetHeight;
45
- var selectionAreaTotalWidth = selectionAreaCellWidth * (greatestColumnIndex - lowestColumnIndex + 1);
46
51
  var selectionAreaTotalHeight = selectionAreaCellHeight * (greatestRowIndex - lowestRowIndex + 1);
47
52
  var bodyContainer = document.querySelector(".".concat(blockClass, "__list--container")).firstElementChild;
48
53
  var placementElement = bodyContainer.querySelector("[data-row-index=\"".concat(lowestRowIndex, "\"][data-column-index=\"").concat(lowestColumnIndex, "\"]"));
49
54
  var relativePosition = {
50
55
  top: placementElement ? placementElement.getBoundingClientRect().top - bodyContainer.getBoundingClientRect().top : lowestRowIndex === 0 ? 0 : selectionAreaCellHeight * lowestRowIndex,
51
56
  // calculate top value here if virtualized row is not in DOM
52
- left: placementElement ? placementElement.getBoundingClientRect().left - bodyContainer.getBoundingClientRect().left : lowestColumnIndex === 0 ? 0 + (defaultColumn.rowHeaderWidth - 4) : selectionAreaCellWidth * lowestColumnIndex + (defaultColumn.rowHeaderWidth - 4) // calculate left value here if virtualized row is not in DOM, accounting for row header cell width (including borders)
57
+ left: placementElement ? placementElement.getBoundingClientRect().left - bodyContainer.getBoundingClientRect().left : lowestColumnIndex === 0 ? 0 + (defaultColumn.rowHeaderWidth - 4) : defaultColumn.width * lowestColumnIndex + (defaultColumn.rowHeaderWidth - 4) // calculate left value here if virtualized row is not in DOM, accounting for row header cell width (including borders)
53
58
 
54
59
  };
55
60
  var selectionAreaElement = document.querySelector("[data-matcher-id=\"".concat(area.matcher, "\"]")) || document.createElement('div');
56
61
  selectionAreaElement.classList.add("".concat(blockClass, "__selection-area--element"));
57
62
  selectionAreaElement.setAttribute('data-matcher-id', area.matcher);
58
- selectionAreaElement.style.width = (0, _layout.px)(selectionAreaTotalWidth);
63
+ selectionAreaElement.style.width = (0, _layout.px)(selectionAreaVariableWidth);
59
64
  selectionAreaElement.style.height = (0, _layout.px)(selectionAreaTotalHeight);
60
65
  selectionAreaElement.style.left = (0, _layout.px)(relativePosition.left);
61
66
  selectionAreaElement.style.top = (0, _layout.px)(relativePosition.top);
@@ -76,10 +76,14 @@ var handleHeaderCellSelection = function handleHeaderCellSelection(_ref) {
76
76
 
77
77
  if (isHoldingCommandKey) {
78
78
  var selectionsFromHeaderCell = selectionsClone.filter(function (item) {
79
- return item.header.type;
79
+ var _item$header;
80
+
81
+ return (_item$header = item.header) === null || _item$header === void 0 ? void 0 : _item$header.type;
80
82
  });
81
83
  var previouslyCreatedHeaderSelection = selectionsFromHeaderCell.filter(function (item) {
82
- return item.header.type === type;
84
+ var _item$header2;
85
+
86
+ return ((_item$header2 = item.header) === null || _item$header2 === void 0 ? void 0 : _item$header2.type) === type;
83
87
  });
84
88
  var isHeaderPartOfPreviousSelection = (0, _checkActiveHeaderCell.checkActiveHeaderCell)(index, previouslyCreatedHeaderSelection, type); // Prevents row/column header selections from being created multiple times
85
89
 
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.default = void 0;
8
+ exports.Datagrid = void 0;
9
9
 
10
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
11
 
@@ -15,6 +15,8 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
15
15
 
16
16
  var _react = _interopRequireDefault(require("react"));
17
17
 
18
+ var _propTypes = _interopRequireDefault(require("prop-types"));
19
+
18
20
  var _carbonComponentsReact = require("carbon-components-react");
19
21
 
20
22
  var _classnames = _interopRequireDefault(require("classnames"));
@@ -29,15 +31,26 @@ var _devtools = require("../../../global/js/utils/devtools");
29
31
 
30
32
  var _settings = require("../../../settings");
31
33
 
32
- var _excluded = ["getTableProps", "withVirtualScroll", "DatagridPagination", "isFetching", "tableId", "CustomizeColumnsModal", "leftPanel", "fullHeightDatagrid", "verticalAlign", "variableRowHeight", "className"];
34
+ var _pconsole = _interopRequireDefault(require("../../../global/js/utils/pconsole"));
35
+
36
+ var _excluded = ["datagridState"];
33
37
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
34
38
  var componentName = 'Datagrid';
35
39
  var TableContainer = _carbonComponentsReact.DataTable.TableContainer,
36
40
  Table = _carbonComponentsReact.DataTable.Table;
37
41
 
38
- var Datagrid = /*#__PURE__*/_react.default.forwardRef(function (datagridState, ref) {
42
+ var Datagrid = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
39
43
  var _getTableProps;
40
44
 
45
+ var datagridState = _ref.datagridState,
46
+ rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
47
+
48
+ if (!datagridState) {
49
+ _pconsole.default.warn('Datagrid was not passed datagridState which is required to render this component.');
50
+
51
+ return null;
52
+ }
53
+
41
54
  var _datagridState$getTab = datagridState.getTableProps,
42
55
  getTableProps = _datagridState$getTab === void 0 ? function () {} : _datagridState$getTab,
43
56
  withVirtualScroll = datagridState.withVirtualScroll,
@@ -50,8 +63,7 @@ var Datagrid = /*#__PURE__*/_react.default.forwardRef(function (datagridState, r
50
63
  _datagridState$vertic = datagridState.verticalAlign,
51
64
  verticalAlign = _datagridState$vertic === void 0 ? 'center' : _datagridState$vertic,
52
65
  variableRowHeight = datagridState.variableRowHeight,
53
- className = datagridState.className,
54
- rest = (0, _objectWithoutProperties2.default)(datagridState, _excluded);
66
+ className = datagridState.className;
55
67
  var rows = DatagridPagination && datagridState.page || datagridState.rows;
56
68
 
57
69
  var dataGrid = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(TableContainer, {
@@ -78,9 +90,14 @@ var Datagrid = /*#__PURE__*/_react.default.forwardRef(function (datagridState, r
78
90
  }); // Return a placeholder if not released and not enabled by feature flag
79
91
 
80
92
 
81
- Datagrid = _settings.pkg.checkComponentEnabled(Datagrid, componentName); // The display name of the component, used by React. Note that displayName
93
+ exports.Datagrid = Datagrid;
94
+ exports.Datagrid = Datagrid = _settings.pkg.checkComponentEnabled(Datagrid, componentName); // The display name of the component, used by React. Note that displayName
82
95
  // is used in preference to relying on function.name.
83
96
 
84
97
  Datagrid.displayName = componentName;
85
- var _default = Datagrid;
86
- exports.default = _default;
98
+ Datagrid.propTypes = {
99
+ /**
100
+ * The data grid state, much of it being supplied by the useDatagrid hook
101
+ */
102
+ datagridState: _propTypes.default.object.isRequired
103
+ };
@@ -7,18 +7,15 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
-
12
10
  var _react = _interopRequireDefault(require("react"));
13
11
 
14
12
  var _carbonComponentsReact = require("carbon-components-react");
15
13
 
16
- /*
17
- * Licensed Materials - Property of IBM
18
- * 5724-Q36
19
- * (c) Copyright IBM Corp. 2020, 2021
20
- * US Government Users Restricted Rights - Use, duplication or disclosure
21
- * restricted by GSA ADP Schedule Contract with IBM Corp.
14
+ /**
15
+ * Copyright IBM Corp. 2020, 2022
16
+ *
17
+ * This source code is licensed under the Apache-2.0 license found in the
18
+ * LICENSE file in the root directory of this source tree.
22
19
  */
23
20
  var TableHead = _carbonComponentsReact.DataTable.TableHead;
24
21
 
@@ -27,14 +24,9 @@ var DatagridHead = function DatagridHead(datagridState) {
27
24
  headerGroups = _datagridState$header === void 0 ? [] : _datagridState$header,
28
25
  headRef = datagridState.headRef,
29
26
  HeaderRow = datagridState.HeaderRow;
30
- return /*#__PURE__*/_react.default.createElement(TableHead, null, headerGroups.map(function (headerGroup, index) {
31
- return (
32
- /*#__PURE__*/
33
- // doesn't support header grouping.
34
- _react.default.createElement("div", (0, _extends2.default)({}, headerGroup.getHeaderGroupProps(), {
35
- ref: headRef,
36
- key: "header_".concat(index)
37
- }), HeaderRow(datagridState))
27
+ return /*#__PURE__*/_react.default.createElement(TableHead, null, headerGroups.map(function (headerGroup) {
28
+ return (// doesn't support header grouping.
29
+ HeaderRow(datagridState, headRef, headerGroup)
38
30
  );
39
31
  }));
40
32
  };
@@ -21,20 +21,20 @@ var _commonColumnIds = require("../common-column-ids");
21
21
 
22
22
  var _settings = require("../../../settings");
23
23
 
24
- /*
25
- * Licensed Materials - Property of IBM
26
- * 5724-Q36
27
- * (c) Copyright IBM Corp. 2020, 2021
28
- * US Government Users Restricted Rights - Use, duplication or disclosure
29
- * restricted by GSA ADP Schedule Contract with IBM Corp.
24
+ /**
25
+ * Copyright IBM Corp. 2020, 2022
26
+ *
27
+ * This source code is licensed under the Apache-2.0 license found in the
28
+ * LICENSE file in the root directory of this source tree.
30
29
  */
31
30
  // @flow
32
31
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
33
32
 
34
- var HeaderRow = function HeaderRow(datagridState) {
35
- return /*#__PURE__*/_react.default.createElement(TableRow, {
36
- className: "".concat(blockClass, "__head")
37
- }, datagridState.headers.filter(function (_ref) {
33
+ var HeaderRow = function HeaderRow(datagridState, headRef, headerGroup) {
34
+ return /*#__PURE__*/_react.default.createElement(TableRow, (0, _extends2.default)({}, headerGroup.getHeaderGroupProps(), {
35
+ className: (0, _classnames.default)("".concat(blockClass, "__head"), headerGroup.getHeaderGroupProps().className),
36
+ ref: headRef
37
+ }), datagridState.headers.filter(function (_ref) {
38
38
  var isVisible = _ref.isVisible;
39
39
  return isVisible;
40
40
  }).map(function (header) {
@@ -1,15 +1,13 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
8
- Object.defineProperty(exports, "default", {
6
+ Object.defineProperty(exports, "Datagrid", {
9
7
  enumerable: true,
10
8
  get: function get() {
11
- return _Datagrid.default;
9
+ return _Datagrid.Datagrid;
12
10
  }
13
11
  });
14
12
 
15
- var _Datagrid = _interopRequireDefault(require("./Datagrid"));
13
+ var _Datagrid = require("./Datagrid");
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "__esModule", {
8
8
  Object.defineProperty(exports, "Datagrid", {
9
9
  enumerable: true,
10
10
  get: function get() {
11
- return _Datagrid.default;
11
+ return _Datagrid.Datagrid;
12
12
  }
13
13
  });
14
14
  Object.defineProperty(exports, "useActionsColumn", {
@@ -96,7 +96,7 @@ Object.defineProperty(exports, "useStickyColumn", {
96
96
  }
97
97
  });
98
98
 
99
- var _Datagrid = _interopRequireDefault(require("./Datagrid"));
99
+ var _Datagrid = require("./Datagrid");
100
100
 
101
101
  var _useDatagrid = _interopRequireDefault(require("./useDatagrid"));
102
102
 
@@ -51,8 +51,6 @@ var defaults = {
51
51
  validExtensions: Object.freeze([])
52
52
  };
53
53
  var ExportModal = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
54
- var _preformattedExtensio;
55
-
56
54
  var body = _ref.body,
57
55
  className = _ref.className,
58
56
  error = _ref.error,
@@ -81,7 +79,7 @@ var ExportModal = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
81
79
  validExtensions = _ref$validExtensions === void 0 ? defaults.validExtensions : _ref$validExtensions,
82
80
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
83
81
 
84
- var _useState = (0, _react.useState)(filename),
82
+ var _useState = (0, _react.useState)(''),
85
83
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
86
84
  name = _useState2[0],
87
85
  setName = _useState2[1];
@@ -92,11 +90,18 @@ var ExportModal = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
92
90
  setDirtyInput = _useState4[1]; // by default (if it exists) use the first extension in the extension array
93
91
 
94
92
 
95
- var _useState5 = (0, _react.useState)(preformattedExtensions === null || preformattedExtensions === void 0 ? void 0 : (_preformattedExtensio = preformattedExtensions[0]) === null || _preformattedExtensio === void 0 ? void 0 : _preformattedExtensio.extension),
93
+ var _useState5 = (0, _react.useState)(''),
96
94
  _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
97
95
  extension = _useState6[0],
98
96
  setExtension = _useState6[1];
99
97
 
98
+ (0, _react.useEffect)(function () {
99
+ var _preformattedExtensio;
100
+
101
+ setName(filename);
102
+ setExtension(preformattedExtensions === null || preformattedExtensions === void 0 ? void 0 : (_preformattedExtensio = preformattedExtensions[0]) === null || _preformattedExtensio === void 0 ? void 0 : _preformattedExtensio.extension);
103
+ }, [filename, preformattedExtensions]);
104
+
100
105
  var onNameChangeHandler = function onNameChangeHandler(evt) {
101
106
  setName(evt.target.value);
102
107
  };
@@ -296,13 +296,17 @@ var SidePanel = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
296
296
 
297
297
  var actionToolbarElement = document.querySelector(".".concat(blockClass, "__action-toolbar"));
298
298
 
299
+ var _labelText = document.querySelector(".".concat(blockClass, "__label-text"));
300
+
299
301
  var _sidePanelSubtitleElementHeight = (_sidePanelSubtitleElement === null || _sidePanelSubtitleElement === void 0 ? void 0 : _sidePanelSubtitleElement.offsetHeight) || 0;
300
302
 
301
303
  var sidePanelActionBarElementHeight = (actionToolbarElement === null || actionToolbarElement === void 0 ? void 0 : actionToolbarElement.offsetHeight) || 0;
302
304
  var titleHeight = (_sidePanelTitleElement === null || _sidePanelTitleElement === void 0 ? void 0 : _sidePanelTitleElement.offsetHeight) + 24;
305
+ var labelHeight = (_labelText === null || _labelText === void 0 ? void 0 : _labelText.offsetHeight) || 0;
303
306
  _sidePanelOuter === null || _sidePanelOuter === void 0 ? void 0 : _sidePanelOuter.style.setProperty("--".concat(blockClass, "--title-text-height"), "".concat(titleHeight, "px"));
304
307
  _sidePanelOuter === null || _sidePanelOuter === void 0 ? void 0 : _sidePanelOuter.style.setProperty("--".concat(blockClass, "--subtitle-container-height"), "".concat(_sidePanelSubtitleElementHeight, "px"));
305
308
  _sidePanelOuter === null || _sidePanelOuter === void 0 ? void 0 : _sidePanelOuter.style.setProperty("--".concat(blockClass, "--action-bar-container-height"), "".concat(sidePanelActionBarElementHeight, "px"));
309
+ _sidePanelOuter === null || _sidePanelOuter === void 0 ? void 0 : _sidePanelOuter.style.setProperty("--".concat(blockClass, "--label-text-height"), "".concat(labelHeight, "px"));
306
310
  }
307
311
  }, [open, animateTitle, animationComplete, shouldRender, panelHeight, title, size, reducedMotion.matches]); // click outside functionality if `includeOverlay` prop is set
308
312
 
@@ -515,7 +519,7 @@ var SidePanel = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
515
519
  className: "".concat(blockClass, "__visually-hidden")
516
520
  }, "Focus sentinel"), !animateTitle && renderHeader(), /*#__PURE__*/_react.default.createElement("div", {
517
521
  ref: sidePanelInnerRef,
518
- className: (0, _classnames.default)("".concat(blockClass, "__inner-content"), (_cx4 = {}, (0, _defineProperty2.default)(_cx4, "".concat(blockClass, "__static-inner-content"), !animateTitle), (0, _defineProperty2.default)(_cx4, "".concat(blockClass, "__inner-content-with-actions"), actions && actions.length), _cx4))
522
+ className: (0, _classnames.default)("".concat(blockClass, "__inner-content"), (_cx4 = {}, (0, _defineProperty2.default)(_cx4, "".concat(blockClass, "__static-inner-content"), !animateTitle), (0, _defineProperty2.default)(_cx4, "".concat(blockClass, "__static-inner-content-no-actions"), !animateTitle && !(actions !== null && actions !== void 0 && actions.length)), (0, _defineProperty2.default)(_cx4, "".concat(blockClass, "__inner-content-with-actions"), actions && actions.length), _cx4))
519
523
  }, animateTitle && renderHeader(), /*#__PURE__*/_react.default.createElement("div", {
520
524
  className: "".concat(blockClass, "__body-content")
521
525
  }, children), /*#__PURE__*/_react.default.createElement(_ActionSet.ActionSet, {
@@ -29,6 +29,8 @@ var _iconsReact = require("@carbon/icons-react");
29
29
 
30
30
  var _carbonComponentsReact = require("carbon-components-react");
31
31
 
32
+ var _motion = require("@carbon/motion");
33
+
32
34
  var _excluded = ["actions", "children", "className", "closeIconDescription", "closeTerminal", "documentationLinks", "documentationLinksIconDescription", "open"];
33
35
 
34
36
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -50,7 +52,7 @@ var defaults = {
50
52
  };
51
53
 
52
54
  var WebTerminal = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
53
- var _ref2;
55
+ var _ref3;
54
56
 
55
57
  var _ref$actions = _ref.actions,
56
58
  actions = _ref$actions === void 0 ? defaults.actions : _ref$actions,
@@ -70,6 +72,12 @@ var WebTerminal = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
70
72
  shouldRender = _useState2[0],
71
73
  setRender = _useState2[1];
72
74
 
75
+ var _ref2 = window && window.matchMedia ? window.matchMedia('(prefers-reduced-motion: reduce)') : {
76
+ matches: true
77
+ },
78
+ prefersReducedMotion = _ref2.matches;
79
+
80
+ var webTerminalAnimationName = "".concat(open ? 'web-terminal-entrance' : 'web-terminal-exit', " ").concat(_motion.moderate02);
73
81
  var showDocumentationLinks = (0, _react.useMemo)(function () {
74
82
  return documentationLinks.length > 0;
75
83
  }, [documentationLinks]);
@@ -78,6 +86,9 @@ var WebTerminal = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
78
86
  setRender(true);
79
87
  }
80
88
  }, [open]);
89
+ /**
90
+ When the web terminal slide in animation is complete, sets render to false.
91
+ */
81
92
 
82
93
  var onAnimationEnd = function onAnimationEnd() {
83
94
  if (!open) {
@@ -85,11 +96,23 @@ var WebTerminal = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
85
96
  }
86
97
  };
87
98
 
99
+ var handleCloseTerminal = function handleCloseTerminal() {
100
+ /**
101
+ If the user prefers reduced motion, we have to manually set render to false
102
+ because onAnimationEnd will never be called.
103
+ */
104
+ if (prefersReducedMotion) {
105
+ setRender(false);
106
+ }
107
+
108
+ closeTerminal();
109
+ };
110
+
88
111
  return shouldRender ? /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, rest, {
89
112
  ref: ref,
90
- className: (0, _classnames.default)([className, blockClass, (_ref2 = {}, (0, _defineProperty2.default)(_ref2, "".concat(blockClass, "--open"), open), (0, _defineProperty2.default)(_ref2, "".concat(blockClass, "--closed"), !open), _ref2)]),
113
+ className: (0, _classnames.default)([className, blockClass, (_ref3 = {}, (0, _defineProperty2.default)(_ref3, "".concat(blockClass, "--open"), open), (0, _defineProperty2.default)(_ref3, "".concat(blockClass, "--closed"), !open), _ref3)]),
91
114
  style: {
92
- animation: "".concat(open ? 'web-terminal-entrance 250ms' : 'web-terminal-exit 250ms')
115
+ animation: !prefersReducedMotion && webTerminalAnimationName
93
116
  },
94
117
  onAnimationEnd: onAnimationEnd
95
118
  }), /*#__PURE__*/_react.default.createElement("header", {
@@ -101,15 +124,15 @@ var WebTerminal = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
101
124
  iconDescription: documentationLinksIconDescription,
102
125
  menuOptionsClass: "".concat(blockClass, "__documentation-overflow"),
103
126
  size: "lg"
104
- }, documentationLinks.map(function (_ref3, i) {
105
- var rest = (0, _extends2.default)({}, _ref3);
127
+ }, documentationLinks.map(function (_ref4, i) {
128
+ var rest = (0, _extends2.default)({}, _ref4);
106
129
  return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenuItem, (0, _extends2.default)({
107
130
  key: i
108
131
  }, rest));
109
- })), actions.map(function (_ref4) {
110
- var renderIcon = _ref4.renderIcon,
111
- onClick = _ref4.onClick,
112
- iconDescription = _ref4.iconDescription;
132
+ })), actions.map(function (_ref5) {
133
+ var renderIcon = _ref5.renderIcon,
134
+ onClick = _ref5.onClick,
135
+ iconDescription = _ref5.iconDescription;
113
136
  return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
114
137
  key: iconDescription,
115
138
  hasIconOnly: true,
@@ -123,7 +146,10 @@ var WebTerminal = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
123
146
  renderIcon: _iconsReact.Close16,
124
147
  kind: "ghost",
125
148
  iconDescription: closeIconDescription,
126
- onClick: closeTerminal
149
+ onClick: handleCloseTerminal,
150
+ onAnimationEnd: function onAnimationEnd(event) {
151
+ return event.stopPropagation();
152
+ }
127
153
  })), /*#__PURE__*/_react.default.createElement("div", {
128
154
  className: "".concat(blockClass, "__body")
129
155
  }, children)) : null;