@carbon/ibm-products 1.9.0 → 1.11.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. package/css/index-full-carbon.css +364 -5838
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +5 -5
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +68 -3430
  6. package/css/index-without-carbon-released-only.css.map +1 -1
  7. package/css/index-without-carbon-released-only.min.css +3 -3
  8. package/css/index-without-carbon-released-only.min.css.map +1 -1
  9. package/css/index-without-carbon.css +185 -4098
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +5 -5
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +302 -4099
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +5 -5
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/AddSelect/AddSelect.js +98 -92
  18. package/es/components/AddSelect/AddSelectColumn.js +219 -8
  19. package/es/components/AddSelect/AddSelectList.js +5 -5
  20. package/es/components/AddSelect/AddSelectSidebar.js +3 -15
  21. package/es/components/AddSelect/add-select-utils.js +64 -0
  22. package/es/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +2 -1
  23. package/es/components/ButtonMenu/ButtonMenu.js +12 -4
  24. package/es/components/DataSpreadsheet/DataSpreadsheet.js +480 -182
  25. package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +124 -81
  26. package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +74 -8
  27. package/es/components/DataSpreadsheet/hooks/useMoveActiveCell.js +27 -0
  28. package/es/components/DataSpreadsheet/hooks/useResetSpreadsheetFocus.js +28 -0
  29. package/es/components/DataSpreadsheet/hooks/useSpreadsheetOutsideClick.js +41 -0
  30. package/es/components/DataSpreadsheet/utils/checkActiveHeaderCell.js +34 -0
  31. package/es/components/DataSpreadsheet/{createActiveCellFn.js → utils/createActiveCellFn.js} +21 -8
  32. package/es/components/DataSpreadsheet/{createCellSelectionArea.js → utils/createCellSelectionArea.js} +8 -4
  33. package/es/components/DataSpreadsheet/{generateData.js → utils/generateData.js} +6 -0
  34. package/es/components/DataSpreadsheet/{getCellSize.js → utils/getCellSize.js} +0 -0
  35. package/es/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +46 -0
  36. package/es/components/DataSpreadsheet/utils/handleMultipleKeys.js +82 -0
  37. package/es/components/DataSpreadsheet/utils/removeCellSelections.js +30 -0
  38. package/es/components/InlineEdit/InlineEdit.js +58 -27
  39. package/es/components/OptionsTile/OptionsTile.js +31 -21
  40. package/es/components/OptionsTile/index.js +1 -1
  41. package/es/components/PageHeader/PageHeader.js +26 -15
  42. package/es/components/PageHeader/PageHeaderTitle.js +2 -1
  43. package/es/components/PageHeader/PageHeaderUtils.js +24 -29
  44. package/es/components/TagSet/TagSet.js +12 -3
  45. package/es/components/UserProfileImage/UserProfileImage.js +2 -1
  46. package/es/components/index.js +0 -1
  47. package/es/global/js/package-settings.js +1 -2
  48. package/lib/components/AddSelect/AddSelect.js +101 -92
  49. package/lib/components/AddSelect/AddSelectColumn.js +232 -13
  50. package/lib/components/AddSelect/AddSelectList.js +5 -5
  51. package/lib/components/AddSelect/AddSelectSidebar.js +9 -15
  52. package/lib/components/AddSelect/add-select-utils.js +78 -0
  53. package/lib/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +2 -1
  54. package/lib/components/ButtonMenu/ButtonMenu.js +12 -4
  55. package/lib/components/DataSpreadsheet/DataSpreadsheet.js +490 -186
  56. package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +127 -82
  57. package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +82 -9
  58. package/lib/components/DataSpreadsheet/hooks/useMoveActiveCell.js +37 -0
  59. package/lib/components/DataSpreadsheet/hooks/useResetSpreadsheetFocus.js +39 -0
  60. package/lib/components/DataSpreadsheet/hooks/useSpreadsheetOutsideClick.js +52 -0
  61. package/lib/components/DataSpreadsheet/utils/checkActiveHeaderCell.js +45 -0
  62. package/lib/components/DataSpreadsheet/{createActiveCellFn.js → utils/createActiveCellFn.js} +21 -8
  63. package/lib/components/DataSpreadsheet/{createCellSelectionArea.js → utils/createCellSelectionArea.js} +8 -4
  64. package/lib/components/DataSpreadsheet/{generateData.js → utils/generateData.js} +6 -0
  65. package/lib/components/DataSpreadsheet/{getCellSize.js → utils/getCellSize.js} +0 -0
  66. package/lib/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +59 -0
  67. package/lib/components/DataSpreadsheet/utils/handleMultipleKeys.js +92 -0
  68. package/lib/components/DataSpreadsheet/utils/removeCellSelections.js +41 -0
  69. package/lib/components/InlineEdit/InlineEdit.js +60 -28
  70. package/lib/components/OptionsTile/OptionsTile.js +30 -20
  71. package/lib/components/PageHeader/PageHeader.js +25 -15
  72. package/lib/components/PageHeader/PageHeaderTitle.js +2 -1
  73. package/lib/components/PageHeader/PageHeaderUtils.js +24 -29
  74. package/lib/components/TagSet/TagSet.js +13 -3
  75. package/lib/components/UserProfileImage/UserProfileImage.js +2 -1
  76. package/lib/components/index.js +0 -8
  77. package/lib/global/js/package-settings.js +1 -2
  78. package/package.json +17 -17
  79. package/scss/components/AddSelect/_add-select.scss +47 -14
  80. package/scss/components/BreadcrumbWithOverflow/_breadcrumb-with-overflow.scss +7 -3
  81. package/scss/components/CreateInfluencer/_create-influencer.scss +2 -0
  82. package/scss/components/CreateModal/_create-modal.scss +1 -0
  83. package/scss/components/CreateSidePanel/_create-side-panel.scss +1 -1
  84. package/scss/components/CreateSidePanel/_storybook-styles.scss +1 -1
  85. package/scss/components/CreateTearsheet/_create-tearsheet.scss +1 -0
  86. package/scss/components/CreateTearsheetNarrow/_create-tearsheet-narrow.scss +1 -0
  87. package/scss/components/DataSpreadsheet/_data-spreadsheet.scss +25 -7
  88. package/scss/components/EditSidePanel/_edit-side-panel.scss +9 -0
  89. package/scss/components/EditSidePanel/_storybook-styles.scss +1 -1
  90. package/scss/components/InlineEdit/_inline-edit.scss +46 -39
  91. package/scss/components/InlineEdit/_storybook-styles.scss +1 -0
  92. package/scss/components/ModifiedTabs/_modified-tabs.scss +5 -0
  93. package/scss/components/NotificationsPanel/_notifications-panel.scss +10 -3
  94. package/scss/components/OptionsTile/_index.scss +1 -1
  95. package/scss/components/OptionsTile/_options-tile.scss +17 -17
  96. package/scss/components/OptionsTile/_storybook-styles.scss +4 -4
  97. package/scss/components/PageHeader/_page-header.scss +5 -2
  98. package/scss/components/SidePanel/_side-panel.scss +19 -12
  99. package/scss/components/StatusIcon/_status-icon.scss +1 -0
  100. package/scss/components/Tearsheet/_tearsheet.scss +4 -0
  101. package/scss/components/UserProfileImage/_user-profile-image.scss +9 -0
  102. package/scss/components/WebTerminal/_web-terminal.scss +2 -0
  103. package/scss/components/_index.scss +0 -1
  104. package/es/components/LoadingBar/LoadingBar.js +0 -156
  105. package/es/components/LoadingBar/index.js +0 -7
  106. package/lib/components/LoadingBar/LoadingBar.js +0 -170
  107. package/lib/components/LoadingBar/index.js +0 -13
  108. package/scss/components/LoadingBar/_index.scss +0 -8
  109. package/scss/components/LoadingBar/_loading-bar.scss +0 -211
  110. package/scss/components/LoadingBar/_storybook-styles.scss +0 -14
@@ -7,7 +7,7 @@ exports.createActiveCellFn = void 0;
7
7
 
8
8
  var _layout = require("@carbon/layout");
9
9
 
10
- var _settings = require("../../settings");
10
+ var _settings = require("../../../settings");
11
11
 
12
12
  /**
13
13
  * Copyright IBM Corp. 2022, 2022
@@ -24,7 +24,10 @@ var createActiveCellFn = function createActiveCellFn(_ref) {
24
24
  _ref$blockClass = _ref.blockClass,
25
25
  blockClass = _ref$blockClass === void 0 ? "".concat(_settings.pkg.prefix, "--data-spreadsheet") : _ref$blockClass,
26
26
  onActiveCellChange = _ref.onActiveCellChange,
27
- activeCellValue = _ref.activeCellValue;
27
+ activeCellValue = _ref.activeCellValue,
28
+ activeCellRef = _ref.activeCellRef,
29
+ cellEditorRef = _ref.cellEditorRef,
30
+ defaultColumn = _ref.defaultColumn;
28
31
 
29
32
  if (!coords) {
30
33
  return;
@@ -32,22 +35,32 @@ var createActiveCellFn = function createActiveCellFn(_ref) {
32
35
  // to `.${blockClass}__header--container`, otherwise it should be appended to `.${blockClass}__listContainer` firstElementChild
33
36
 
34
37
 
38
+ var point1Element = document.querySelector("[data-row-index=\"".concat(coords.row, "\"][data-column-index=\"").concat(coords.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
39
+
40
+ var selectionAreaCellWidth = point1Element.offsetWidth;
41
+ var selectionAreaCellHeight = point1Element.offsetHeight;
35
42
  var activeElementContainer = addToHeader ? contextRef === null || contextRef === void 0 ? void 0 : contextRef.current.querySelector(".".concat(blockClass, "__header--container")) : contextRef === null || contextRef === void 0 ? void 0 : contextRef.current.querySelector(".".concat(blockClass, "__list--container")).firstElementChild;
36
43
  var relativePosition = {
37
- top: placementElement.getBoundingClientRect().top - activeElementContainer.getBoundingClientRect().top,
38
- left: placementElement.getBoundingClientRect().left - activeElementContainer.getBoundingClientRect().left
44
+ top: placementElement ? placementElement.getBoundingClientRect().top - activeElementContainer.getBoundingClientRect().top : coords.row === 0 ? 0 : selectionAreaCellHeight * coords.row,
45
+ // calculate top value here if virtualized row is not in DOM
46
+ left: placementElement ? placementElement.getBoundingClientRect().left - activeElementContainer.getBoundingClientRect().left : coords.column === 0 ? 0 + (defaultColumn.rowHeaderWidth - 4) : selectionAreaCellWidth * coords.column + (defaultColumn.rowHeaderWidth - 4) // calculate left value here if virtualized row is not in DOM, accounting for row header cell width (including borders)
47
+
39
48
  };
40
- var activeCellButton = (contextRef === null || contextRef === void 0 ? void 0 : contextRef.current.querySelector(".".concat(blockClass, "__active-cell--highlight"))) || document.createElement('button');
41
- activeCellButton.classList.add("".concat(blockClass, "__active-cell--highlight"), "".concat(blockClass, "--interactive-cell-element"));
42
- activeCellButton.style.width = (0, _layout.px)(placementElement === null || placementElement === void 0 ? void 0 : placementElement.offsetWidth);
43
- activeCellButton.style.height = (0, _layout.px)(placementElement === null || placementElement === void 0 ? void 0 : placementElement.offsetHeight);
49
+ var activeCellButton = activeCellRef === null || activeCellRef === void 0 ? void 0 : activeCellRef.current;
50
+ activeCellButton.style.width = (0, _layout.px)(placementElement ? placementElement === null || placementElement === void 0 ? void 0 : placementElement.offsetWidth : selectionAreaCellWidth);
51
+ activeCellButton.style.height = (0, _layout.px)(placementElement ? placementElement === null || placementElement === void 0 ? void 0 : placementElement.offsetHeight : selectionAreaCellHeight);
44
52
  activeCellButton.style.left = (0, _layout.px)(relativePosition.left);
45
53
  activeCellButton.style.top = (0, _layout.px)(relativePosition.top);
54
+ activeCellButton.style.display = 'block';
46
55
  activeCellButton.setAttribute('data-active-row-index', typeof (coords === null || coords === void 0 ? void 0 : coords.row) === 'number' ? coords.row : 'header');
47
56
  activeCellButton.setAttribute('data-active-column-index', typeof (coords === null || coords === void 0 ? void 0 : coords.column) === 'number' ? coords.column : 'header');
48
57
  activeElementContainer.appendChild(activeCellButton);
49
58
  activeCellButton.focus();
50
59
 
60
+ if (!addToHeader) {
61
+ activeElementContainer.appendChild(cellEditorRef.current);
62
+ }
63
+
51
64
  if (typeof (coords === null || coords === void 0 ? void 0 : coords.column) === 'number' && typeof (coords === null || coords === void 0 ? void 0 : coords.row) === 'number') {
52
65
  onActiveCellChange === null || onActiveCellChange === void 0 ? void 0 : onActiveCellChange(activeCellValue);
53
66
  }
@@ -7,7 +7,7 @@ exports.createCellSelectionArea = void 0;
7
7
 
8
8
  var _layout = require("@carbon/layout");
9
9
 
10
- var _deepCloneObject = require("../../global/js/utils/deepCloneObject");
10
+ var _deepCloneObject = require("../../../global/js/utils/deepCloneObject");
11
11
 
12
12
  /**
13
13
  * Copyright IBM Corp. 2022, 2022
@@ -18,13 +18,15 @@ var _deepCloneObject = require("../../global/js/utils/deepCloneObject");
18
18
  var createCellSelectionArea = function createCellSelectionArea(_ref) {
19
19
  var area = _ref.area,
20
20
  blockClass = _ref.blockClass,
21
+ defaultColumn = _ref.defaultColumn,
21
22
  selectionAreas = _ref.selectionAreas,
22
23
  setSelectionAreas = _ref.setSelectionAreas;
23
24
  var greatestRow = Math.max(area.point1.row, area.point2.row);
24
25
  var greatestColumn = Math.max(area.point1.column, area.point2.column);
25
26
  var lowestRowIndex = Math.min(area.point1.row, area.point2.row);
26
27
  var lowestColumnIndex = Math.min(area.point1.column, area.point2.column);
27
- var point1Element = document.querySelector("[data-row-index=\"".concat(area.point1.row, "\"][data-column-index=\"").concat(area.point1.column, "\"]"));
28
+ 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
29
+
28
30
  var selectionAreaCellWidth = point1Element.offsetWidth;
29
31
  var selectionAreaCellHeight = point1Element.offsetHeight;
30
32
  var selectionAreaTotalWidth = selectionAreaCellWidth * (greatestColumn - lowestColumnIndex + 1);
@@ -32,8 +34,10 @@ var createCellSelectionArea = function createCellSelectionArea(_ref) {
32
34
  var bodyContainer = document.querySelector(".".concat(blockClass, "__list--container")).firstElementChild;
33
35
  var placementElement = bodyContainer.querySelector("[data-row-index=\"".concat(lowestRowIndex, "\"][data-column-index=\"").concat(lowestColumnIndex, "\"]"));
34
36
  var relativePosition = {
35
- top: placementElement.getBoundingClientRect().top - bodyContainer.getBoundingClientRect().top,
36
- left: placementElement.getBoundingClientRect().left - bodyContainer.getBoundingClientRect().left
37
+ top: placementElement ? placementElement.getBoundingClientRect().top - bodyContainer.getBoundingClientRect().top : lowestRowIndex === 0 ? 0 : selectionAreaCellHeight * lowestRowIndex,
38
+ // calculate top value here if virtualized row is not in DOM
39
+ 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)
40
+
37
41
  };
38
42
  var selectionAreaElement = document.querySelector("[data-matcher-id=\"".concat(area.matcher, "\"]")) || document.createElement('div');
39
43
  selectionAreaElement.classList.add("".concat(blockClass, "__selection-area--element"));
@@ -13,6 +13,12 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
13
13
 
14
14
  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) { (0, _defineProperty2.default)(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; }
15
15
 
16
+ /**
17
+ * Copyright IBM Corp. 2022, 2022
18
+ *
19
+ * This source code is licensed under the Apache-2.0 license found in the
20
+ * LICENSE file in the root directory of this source tree.
21
+ */
16
22
  // cspell:disable
17
23
  var pets = ['dog', 'cat', 'bird', 'lizard', 'frog', 'hamster', 'fish', 'rabbit', 'snake'];
18
24
  var petNames = ['Bruno', 'Willow', 'Kona', 'Heidi', 'Rusty', 'Bonnie', 'Cash', 'Gucci', 'Brody', 'Emma', 'Loki', 'Angel', 'Astro', 'Sherman', 'Layla', 'Peanut', 'Grace', 'Mickey', 'Sasha', 'Finn', 'Tucker', 'Bear', 'Mocha', 'Roscoe']; // cspell:enable
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.handleHeaderCellSelection = void 0;
9
+
10
+ var _uuidv = _interopRequireDefault(require("../../../global/js/utils/uuidv4"));
11
+
12
+ var _removeCellSelections = require("./removeCellSelections");
13
+
14
+ /**
15
+ * Copyright IBM Corp. 2022, 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.
19
+ */
20
+ var handleHeaderCellSelection = function handleHeaderCellSelection(_ref) {
21
+ var type = _ref.type,
22
+ activeCellCoordinates = _ref.activeCellCoordinates,
23
+ rows = _ref.rows,
24
+ columns = _ref.columns,
25
+ setActiveCellCoordinates = _ref.setActiveCellCoordinates,
26
+ setCurrentMatcher = _ref.setCurrentMatcher,
27
+ setSelectionAreas = _ref.setSelectionAreas,
28
+ spreadsheetRef = _ref.spreadsheetRef,
29
+ index = _ref.index,
30
+ isKeyboard = _ref.isKeyboard;
31
+ var rowValue = isKeyboard ? activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row : index;
32
+ var columnValue = isKeyboard ? activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.column : index;
33
+ var point1 = {
34
+ row: type === 'column' ? 0 : rowValue,
35
+ column: type === 'column' ? columnValue : 0
36
+ };
37
+ var point2 = {
38
+ row: type === 'column' ? rows.length - 1 : rowValue,
39
+ // going to always be the last row
40
+ column: type === 'column' ? columnValue : columns.length - 1
41
+ };
42
+ var tempMatcher = (0, _uuidv.default)();
43
+ setActiveCellCoordinates({
44
+ row: type === 'column' ? 0 : rowValue,
45
+ column: type === 'column' ? columnValue : 0
46
+ });
47
+ setCurrentMatcher(tempMatcher);
48
+ (0, _removeCellSelections.removeCellSelections)({
49
+ spreadsheetRef: spreadsheetRef
50
+ });
51
+ setSelectionAreas([{
52
+ point1: point1,
53
+ point2: point2,
54
+ areaCreated: false,
55
+ matcher: tempMatcher
56
+ }]);
57
+ };
58
+
59
+ exports.handleHeaderCellSelection = handleHeaderCellSelection;
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.handleMultipleKeys = 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 handleMultipleKeys = function handleMultipleKeys(_ref) {
17
+ var _selectionAreasClone$;
18
+
19
+ var activeKeys = _ref.activeKeys,
20
+ selectionAreas = _ref.selectionAreas,
21
+ currentMatcher = _ref.currentMatcher,
22
+ rows = _ref.rows,
23
+ setSelectionAreas = _ref.setSelectionAreas,
24
+ columns = _ref.columns;
25
+ var activeKeyValues = activeKeys.current;
26
+ var selectionAreasClone = (0, _deepCloneObject.deepCloneObject)(selectionAreas);
27
+ var indexOfCurrentArea = selectionAreasClone.findIndex(function (item) {
28
+ return item.matcher === currentMatcher;
29
+ });
30
+ var pointToUpdate = (_selectionAreasClone$ = selectionAreasClone[indexOfCurrentArea]) !== null && _selectionAreasClone$ !== void 0 && _selectionAreasClone$.point2 ? selectionAreasClone[indexOfCurrentArea].point2 : selectionAreasClone[indexOfCurrentArea].point1; // Down + Shift
31
+
32
+ if (activeKeyValues.includes('Shift') && activeKeyValues.includes('ArrowDown')) {
33
+ if (rows.length - 1 === pointToUpdate.row) {
34
+ return;
35
+ }
36
+
37
+ var newPoint = {
38
+ row: pointToUpdate.row + 1,
39
+ column: pointToUpdate.column
40
+ };
41
+ selectionAreasClone[indexOfCurrentArea].point2 = newPoint;
42
+ selectionAreasClone[indexOfCurrentArea].areaCreated = false;
43
+ setSelectionAreas(selectionAreasClone);
44
+ } // Right + Shift
45
+
46
+
47
+ if (activeKeyValues.includes('Shift') && activeKeyValues.includes('ArrowRight')) {
48
+ if (columns.length - 1 === pointToUpdate.column) {
49
+ return;
50
+ }
51
+
52
+ var _newPoint = {
53
+ row: pointToUpdate.row,
54
+ column: pointToUpdate.column + 1
55
+ };
56
+ selectionAreasClone[indexOfCurrentArea].point2 = _newPoint;
57
+ selectionAreasClone[indexOfCurrentArea].areaCreated = false;
58
+ setSelectionAreas(selectionAreasClone);
59
+ } // Up + Shift
60
+
61
+
62
+ if (activeKeyValues.includes('Shift') && activeKeyValues.includes('ArrowUp')) {
63
+ if (pointToUpdate.row === 0) {
64
+ return;
65
+ }
66
+
67
+ var _newPoint2 = {
68
+ row: pointToUpdate.row - 1,
69
+ column: pointToUpdate.column
70
+ };
71
+ selectionAreasClone[indexOfCurrentArea].point2 = _newPoint2;
72
+ selectionAreasClone[indexOfCurrentArea].areaCreated = false;
73
+ setSelectionAreas(selectionAreasClone);
74
+ } // Left + Shift
75
+
76
+
77
+ if (activeKeyValues.includes('Shift') && activeKeyValues.includes('ArrowLeft')) {
78
+ if (pointToUpdate.column === 0) {
79
+ return;
80
+ }
81
+
82
+ var _newPoint3 = {
83
+ row: pointToUpdate.row,
84
+ column: pointToUpdate.column - 1
85
+ };
86
+ selectionAreasClone[indexOfCurrentArea].point2 = _newPoint3;
87
+ selectionAreasClone[indexOfCurrentArea].areaCreated = false;
88
+ setSelectionAreas(selectionAreasClone);
89
+ }
90
+ };
91
+
92
+ exports.handleMultipleKeys = handleMultipleKeys;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.removeCellSelections = void 0;
9
+
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
+
12
+ var _settings = require("../../../settings");
13
+
14
+ /**
15
+ * Copyright IBM Corp. 2022, 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.
19
+ */
20
+ // Removes the cell selection elements
21
+ var removeCellSelections = function removeCellSelections(_ref) {
22
+ var matcher = _ref.matcher,
23
+ spreadsheetRef = _ref.spreadsheetRef,
24
+ _ref$blockClass = _ref.blockClass,
25
+ blockClass = _ref$blockClass === void 0 ? "".concat(_settings.pkg.prefix, "--data-spreadsheet") : _ref$blockClass;
26
+
27
+ if (matcher && typeof matcher === 'string') {
28
+ var selectionToRemove = spreadsheetRef.current.querySelector("[data-matcher-id=\"".concat(matcher, "\"]"));
29
+
30
+ if (selectionToRemove) {
31
+ selectionToRemove.remove();
32
+ }
33
+ } else {
34
+ var cellSelections = spreadsheetRef.current.querySelectorAll(".".concat(blockClass, "__selection-area--element"));
35
+ (0, _toConsumableArray2.default)(cellSelections).forEach(function (element) {
36
+ return element.remove();
37
+ });
38
+ }
39
+ };
40
+
41
+ exports.removeCellSelections = removeCellSelections;
@@ -2,7 +2,7 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
- var _typeof = require("@babel/runtime/helpers/typeof");
5
+ var _typeof3 = require("@babel/runtime/helpers/typeof");
6
6
 
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
@@ -13,6 +13,8 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
13
13
 
14
14
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
15
 
16
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
17
+
16
18
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
19
 
18
20
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
@@ -31,21 +33,24 @@ var _carbonComponentsReact = require("carbon-components-react");
31
33
 
32
34
  var _iconsReact = require("@carbon/icons-react");
33
35
 
34
- var _excluded = ["cancelDescription", "className", "disabled", "editAlwaysVisible", "editDescription", "id", "invalid", "invalidText", "labelText", "light", "onCancel", "onSave", "onChange", "placeholder", "saveDescription", "size", "value", "warn", "warnText"];
36
+ var _excluded = ["buttonTooltipAlignment", "buttonTooltipPosition", "cancelDescription", "className", "disabled", "editAlwaysVisible", "editDescription", "id", "invalid", "invalidText", "labelText", "light", "onCancel", "onSave", "onChange", "placeholder", "saveDescription", "size", "value"];
35
37
 
36
38
  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); }
37
39
 
38
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
40
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
39
41
 
40
42
  // The block part of our conventional BEM class names (blockClass__E--M).
41
43
  var blockClass = "".concat(_settings.pkg.prefix, "--inline-edit");
42
44
  var componentName = 'InlineEdit'; // NOTE: the component SCSS is not imported here: it is rolled up separately.
43
45
 
44
46
  var defaults = {
47
+ buttonTooltipAlignment: 'center',
48
+ buttonTooltipPosition: 'top',
45
49
  light: true,
46
50
  // defaults to true to reflect design
47
51
  size: 'md'
48
52
  };
53
+ var buttons = ['cancel', 'edit', 'save'];
49
54
  /**
50
55
  * TODO: A description of the component.
51
56
  */
@@ -53,7 +58,9 @@ var defaults = {
53
58
  var InlineEdit = /*#__PURE__*/_react.default.forwardRef(function (_ref, refIn) {
54
59
  var _cx, _refInput$current, _refInput$current$inn, _cx3;
55
60
 
56
- var cancelDescription = _ref.cancelDescription,
61
+ var buttonTooltipAlignment = _ref.buttonTooltipAlignment,
62
+ buttonTooltipPosition = _ref.buttonTooltipPosition,
63
+ cancelDescription = _ref.cancelDescription,
57
64
  className = _ref.className,
58
65
  disabled = _ref.disabled,
59
66
  editAlwaysVisible = _ref.editAlwaysVisible,
@@ -72,8 +79,6 @@ var InlineEdit = /*#__PURE__*/_react.default.forwardRef(function (_ref, refIn) {
72
79
  _ref$size = _ref.size,
73
80
  size = _ref$size === void 0 ? defaults.size : _ref$size,
74
81
  value = _ref.value,
75
- warn = _ref.warn,
76
- warnText = _ref.warnText,
77
82
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
78
83
  var refInput = (0, _react.useRef)(null);
79
84
  var localRef = (0, _react.useRef)(null);
@@ -89,9 +94,25 @@ var InlineEdit = /*#__PURE__*/_react.default.forwardRef(function (_ref, refIn) {
89
94
  internalValue = _useState4[0],
90
95
  setInternalValue = _useState4[1];
91
96
 
92
- var showValidation = invalid || warn;
93
- var validationText = invalidText || warnText;
94
- var validationIcon = showValidation ? invalid ? /*#__PURE__*/_react.default.createElement(_iconsReact.WarningFilled16, null) : /*#__PURE__*/_react.default.createElement(_iconsReact.WarningAltFilled16, null) : null;
97
+ var showValidation = invalid; // || warn;
98
+
99
+ var validationText = invalidText; // || warnText;
100
+
101
+ var validationIcon = showValidation ? /*#__PURE__*/_react.default.createElement(_iconsReact.WarningFilled16, null) : null; // sanitize the tooltip values
102
+
103
+ var alignIsObject = (0, _typeof2.default)(buttonTooltipAlignment) === 'object';
104
+ var directionIsObject = (0, _typeof2.default)(buttonTooltipPosition) === 'object';
105
+ var tipPositions = buttons.reduce(function (acc, button) {
106
+ var _ref2, _ref3;
107
+
108
+ var tooltipAlignment = (_ref2 = alignIsObject ? buttonTooltipAlignment[button] : buttonTooltipAlignment) !== null && _ref2 !== void 0 ? _ref2 : defaults.buttonTooltipAlignment;
109
+ var tooltipPosition = (_ref3 = directionIsObject ? buttonTooltipPosition[button] : buttonTooltipPosition) !== null && _ref3 !== void 0 ? _ref3 : defaults.buttonTooltipPosition;
110
+ acc[button] = {
111
+ tooltipAlignment: tooltipAlignment,
112
+ tooltipPosition: tooltipPosition
113
+ };
114
+ return acc;
115
+ }, {});
95
116
 
96
117
  var doSetEditing = function doSetEditing(value) {
97
118
  if (value === false) {
@@ -243,7 +264,7 @@ var InlineEdit = /*#__PURE__*/_react.default.forwardRef(function (_ref, refIn) {
243
264
  _react.default.createElement("div", {
244
265
  className: (0, _classnames.default)(blockClass, // Apply the block class to the main HTML element
245
266
  className, // Apply any supplied class names to the main HTML element.
246
- "".concat(blockClass, "--").concat(size), (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--disabled"), disabled), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--editing"), editing), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--invalid"), invalid), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--warn"), warn), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--light"), light), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--overflows"), refInput.current && refInput.current.scrollWidth > refInput.current.offsetWidth), _cx)),
267
+ "".concat(blockClass, "--").concat(size), (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--disabled"), disabled), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--editing"), editing), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--invalid"), invalid), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--light"), light), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--overflows"), refInput.current && refInput.current.scrollWidth > refInput.current.offsetWidth), _cx)),
247
268
  onClick: handleEdit // disabled eslint for click handler
248
269
  ,
249
270
  onBlur: handleBlur,
@@ -274,14 +295,14 @@ var InlineEdit = /*#__PURE__*/_react.default.forwardRef(function (_ref, refIn) {
274
295
  className: (0, _classnames.default)("".concat(blockClass, "__toolbar"), (_cx3 = {}, (0, _defineProperty2.default)(_cx3, "".concat(blockClass, "__toolbar--animation"), toolbarAnimation), (0, _defineProperty2.default)(_cx3, "".concat(blockClass, "__toolbar--saveable"), refInput.current && value !== internalValue), _cx3))
275
296
  }, showValidation && /*#__PURE__*/_react.default.createElement("div", {
276
297
  className: "".concat(blockClass, "__validation-icon")
277
- }, validationIcon), editing ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
298
+ }, validationIcon), editing ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, (0, _extends2.default)({
278
299
  className: "".concat(blockClass, "__cancel"),
279
300
  kind: "ghost",
280
301
  hasIconOnly: true,
281
302
  iconDescription: cancelDescription,
282
303
  onClick: handleCancel,
283
304
  renderIcon: _iconsReact.Close16
284
- }), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
305
+ }, tipPositions.cancel)), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, (0, _extends2.default)({
285
306
  className: "".concat(blockClass, "__save"),
286
307
  kind: "ghost",
287
308
  hasIconOnly: true,
@@ -289,8 +310,7 @@ var InlineEdit = /*#__PURE__*/_react.default.forwardRef(function (_ref, refIn) {
289
310
  onClick: handleSave,
290
311
  renderIcon: _iconsReact.Checkmark16,
291
312
  disabled: value === internalValue
292
- })) : /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
293
- "aria-hidden": "true",
313
+ }, tipPositions.save))) : /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, (0, _extends2.default)({
294
314
  className: (0, _classnames.default)("".concat(blockClass, "__edit"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__edit--always-visible"), editAlwaysVisible)),
295
315
  kind: "ghost",
296
316
  hasIconOnly: true,
@@ -299,7 +319,7 @@ var InlineEdit = /*#__PURE__*/_react.default.forwardRef(function (_ref, refIn) {
299
319
  renderIcon: disabled ? _iconsReact.EditOff16 : _iconsReact.Edit16,
300
320
  disabled: disabled,
301
321
  tabIndex: -1
302
- }))), /*#__PURE__*/_react.default.createElement("div", {
322
+ }, tipPositions.edit)))), /*#__PURE__*/_react.default.createElement("div", {
303
323
  className: (0, _classnames.default)("".concat(blockClass, "__disabled-cover"))
304
324
  }), showValidation && validationText && validationText.length > 0 && /*#__PURE__*/_react.default.createElement("div", {
305
325
  className: "".concat(blockClass, "__validation-text ").concat(_settings.carbon.prefix, "--form-requirement")
@@ -317,6 +337,28 @@ InlineEdit.displayName = componentName; // The types and DocGen commentary for t
317
337
  // See https://www.npmjs.com/package/prop-types#usage.
318
338
 
319
339
  InlineEdit.propTypes = {
340
+ /**
341
+ * buttonTooltipAlignment from the standard tooltip. Default center.
342
+ *
343
+ * Can be passed either as one of tooltip options or as an object specifying cancel, edit and save separately
344
+ */
345
+ buttonTooltipAlignment: _propTypes.default.oneOfType([_propTypes.default.oneOf(['start', 'center', 'end']), _propTypes.default.shape({
346
+ cancel: _propTypes.default.oneOf(['start', 'center', 'end']),
347
+ edit: _propTypes.default.oneOf(['start', 'center', 'end']),
348
+ save: _propTypes.default.oneOf(['start', 'center', 'end'])
349
+ })]),
350
+
351
+ /**
352
+ * buttonTooltipPosition from the standard tooltip
353
+ *
354
+ * Can be passed either as one of tooltip options or as an object specifying cancel, edit and save separately
355
+ */
356
+ buttonTooltipPosition: _propTypes.default.oneOfType([_propTypes.default.oneOf(['top', 'right', 'bottom', 'left']), _propTypes.default.shape({
357
+ cancel: _propTypes.default.oneOf(['top', 'right', 'bottom', 'left']),
358
+ edit: _propTypes.default.oneOf(['top', 'right', 'bottom', 'left']),
359
+ save: _propTypes.default.oneOf(['top', 'right', 'bottom', 'left'])
360
+ })]),
361
+
320
362
  /**
321
363
  * label for cancel button
322
364
  */
@@ -375,14 +417,14 @@ InlineEdit.propTypes = {
375
417
  /**
376
418
  * method called on input event (it's a React thing onChange behaves like on input).
377
419
  *
378
- * NOTE: caller to handle invalid/warn states and associated text
420
+ * NOTE: caller to handle invalid states and associated text
379
421
  */
380
422
  onChange: _propTypes.default.func,
381
423
 
382
424
  /**
383
425
  * method called on change event
384
426
  *
385
- * NOTE: caller to handle invalid/warn states and associated text
427
+ * NOTE: caller to handle invalid states and associated text
386
428
  */
387
429
  onSave: _propTypes.default.func,
388
430
 
@@ -404,15 +446,5 @@ InlineEdit.propTypes = {
404
446
  /**
405
447
  * initial/unedited value
406
448
  */
407
- value: _propTypes.default.string,
408
-
409
- /**
410
- * set warn state for input
411
- */
412
- warn: _propTypes.default.bool,
413
-
414
- /**
415
- * text shown when warn true
416
- */
417
- warnText: _propTypes.default.string
449
+ value: _propTypes.default.string
418
450
  };
@@ -35,7 +35,7 @@ var _iconsReact = require("@carbon/icons-react");
35
35
 
36
36
  var carbonMotion = _interopRequireWildcard(require("@carbon/motion"));
37
37
 
38
- var _excluded = ["children", "className", "enabled", "heading", "headingId", "invalid", "invalidText", "locked", "lockedText", "onToggle", "open", "size", "summary", "warn", "warnText"];
38
+ var _excluded = ["children", "className", "enabled", "invalid", "invalidText", "locked", "lockedText", "onToggle", "open", "size", "summary", "title", "titleId", "warn", "warnText"];
39
39
 
40
40
  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); }
41
41
 
@@ -57,8 +57,6 @@ var OptionsTile = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
57
57
  var children = _ref.children,
58
58
  className = _ref.className,
59
59
  enabled = _ref.enabled,
60
- heading = _ref.heading,
61
- userDefinedHeadingId = _ref.headingId,
62
60
  invalid = _ref.invalid,
63
61
  invalidText = _ref.invalidText,
64
62
  locked = _ref.locked,
@@ -68,6 +66,8 @@ var OptionsTile = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
68
66
  _ref$size = _ref.size,
69
67
  size = _ref$size === void 0 ? defaults.size : _ref$size,
70
68
  summary = _ref.summary,
69
+ title = _ref.title,
70
+ userDefinedTitleId = _ref.titleId,
71
71
  warn = _ref.warn,
72
72
  warnText = _ref.warnText,
73
73
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
@@ -90,7 +90,7 @@ var OptionsTile = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
90
90
  var detailsRef = (0, _react.useRef)(null);
91
91
  var contentRef = (0, _react.useRef)(null);
92
92
  var id = (0, _uuidv.default)();
93
- var headingId = userDefinedHeadingId !== null && userDefinedHeadingId !== void 0 ? userDefinedHeadingId : "".concat(id, "-heading");
93
+ var titleId = userDefinedTitleId !== null && userDefinedTitleId !== void 0 ? userDefinedTitleId : "".concat(id, "-title");
94
94
  var isExpandable = children !== undefined;
95
95
  var isInvalid = invalid;
96
96
  var isWarn = !isInvalid && warn;
@@ -204,15 +204,25 @@ var OptionsTile = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
204
204
  } else if (locked) {
205
205
  Icon = _iconsReact.Locked16;
206
206
  summaryClasses.push("".concat(blockClass, "__summary--locked"));
207
+
208
+ if (!text) {
209
+ text = lockedText;
210
+ }
211
+ }
212
+
213
+ var hasValidationState = invalid || warn || locked;
214
+ var summaryHidden = !hasValidationState && enabled === false;
215
+
216
+ if (summaryHidden) {
217
+ summaryClasses.push("".concat(blockClass, "__summary--hidden"));
207
218
  }
208
219
 
209
- var summaryHidden = enabled === false;
210
220
  return /*#__PURE__*/_react.default.createElement("div", {
211
- className: "".concat(blockClass, "__title")
212
- }, /*#__PURE__*/_react.default.createElement("h6", {
213
- id: headingId,
214
221
  className: "".concat(blockClass, "__heading")
215
- }, heading), text && /*#__PURE__*/_react.default.createElement("span", {
222
+ }, /*#__PURE__*/_react.default.createElement("h6", {
223
+ id: titleId,
224
+ className: "".concat(blockClass, "__title")
225
+ }, title), text && /*#__PURE__*/_react.default.createElement("span", {
216
226
  className: (0, _classnames.default)(summaryClasses),
217
227
  "aria-hidden": summaryHidden
218
228
  }, Icon && /*#__PURE__*/_react.default.createElement(Icon, null), /*#__PURE__*/_react.default.createElement("span", {
@@ -233,7 +243,7 @@ var OptionsTile = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
233
243
  toggled: enabled,
234
244
  labelA: "",
235
245
  labelB: "",
236
- "aria-labelledby": headingId,
246
+ "aria-labelledby": titleId,
237
247
  onToggle: onToggle,
238
248
  size: "sm",
239
249
  disabled: isLocked
@@ -282,16 +292,6 @@ OptionsTile.propTypes = {
282
292
  */
283
293
  enabled: _propTypes.default.bool,
284
294
 
285
- /**
286
- * Provide the heading for this OptionsTile.
287
- */
288
- heading: _propTypes.default.string.isRequired,
289
-
290
- /**
291
- * Optionally provide an id which should be used for the heading.
292
- */
293
- headingId: _propTypes.default.string,
294
-
295
295
  /**
296
296
  * Whether the OptionsTile is in invalid validation state.
297
297
  */
@@ -333,6 +333,16 @@ OptionsTile.propTypes = {
333
333
  */
334
334
  summary: _propTypes.default.string,
335
335
 
336
+ /**
337
+ * Provide the title for this OptionsTile.
338
+ */
339
+ title: _propTypes.default.string.isRequired,
340
+
341
+ /**
342
+ * Optionally provide an id which should be used for the title.
343
+ */
344
+ titleId: _propTypes.default.string,
345
+
336
346
  /**
337
347
  * Whether the OptionsTile is in warning validation state.
338
348
  */