@carbon/ibm-products 1.18.1 → 1.18.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (30) hide show
  1. package/css/index-full-carbon.css +4 -2
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +1 -1
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon.css +4 -2
  6. package/css/index-without-carbon.css.map +1 -1
  7. package/css/index-without-carbon.min.css +1 -1
  8. package/css/index-without-carbon.min.css.map +1 -1
  9. package/css/index.css +4 -2
  10. package/css/index.css.map +1 -1
  11. package/css/index.min.css +1 -1
  12. package/css/index.min.css.map +1 -1
  13. package/es/components/DataSpreadsheet/DataSpreadsheet.js +2 -2
  14. package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +34 -5
  15. package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +1 -1
  16. package/es/components/DataSpreadsheet/hooks/useSpreadsheetMouseMove.js +8 -4
  17. package/es/components/DataSpreadsheet/hooks/useSpreadsheetMouseUp.js +3 -1
  18. package/es/components/DataSpreadsheet/utils/getCellSize.js +10 -10
  19. package/es/components/DataSpreadsheet/utils/moveColumnIndicatorLine.js +4 -3
  20. package/es/components/ExportModal/ExportModal.js +1 -1
  21. package/lib/components/DataSpreadsheet/DataSpreadsheet.js +2 -2
  22. package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +34 -5
  23. package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +1 -1
  24. package/lib/components/DataSpreadsheet/hooks/useSpreadsheetMouseMove.js +8 -4
  25. package/lib/components/DataSpreadsheet/hooks/useSpreadsheetMouseUp.js +3 -1
  26. package/lib/components/DataSpreadsheet/utils/getCellSize.js +4 -4
  27. package/lib/components/DataSpreadsheet/utils/moveColumnIndicatorLine.js +4 -3
  28. package/lib/components/ExportModal/ExportModal.js +1 -1
  29. package/package.json +2 -2
  30. package/scss/components/DataSpreadsheet/_data-spreadsheet.scss +6 -0
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the Apache-2.0 license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- import { baseFontSize, sizeXSmall as compact, sizeSmall as standard, sizeMedium as medium, sizeLarge as large } from '@carbon/layout';
7
+ import { baseFontSize, sizeXSmall as xs, sizeSmall as sm, sizeMedium as md, sizeLarge as lg } from '@carbon/layout';
8
8
 
9
9
  var getSizeInPixels = function getSizeInPixels(carbonSize) {
10
10
  return Number(carbonSize.replace('rem', '') * baseFontSize);
@@ -12,19 +12,19 @@ var getSizeInPixels = function getSizeInPixels(carbonSize) {
12
12
 
13
13
  export var getCellSize = function getCellSize(cellSize) {
14
14
  switch (cellSize) {
15
- case 'compact':
16
- return getSizeInPixels(compact);
15
+ case 'xs':
16
+ return getSizeInPixels(xs);
17
17
 
18
- case 'standard':
19
- return getSizeInPixels(standard);
18
+ case 'sm':
19
+ return getSizeInPixels(sm);
20
20
 
21
- case 'medium':
22
- return getSizeInPixels(medium);
21
+ case 'md':
22
+ return getSizeInPixels(md);
23
23
 
24
- case 'large':
25
- return getSizeInPixels(large);
24
+ case 'lg':
25
+ return getSizeInPixels(lg);
26
26
 
27
27
  default:
28
- return getSizeInPixels(standard);
28
+ return getSizeInPixels(sm);
29
29
  }
30
30
  };
@@ -11,7 +11,8 @@ export var moveColumnIndicatorLine = function moveColumnIndicatorLine(_ref) {
11
11
  blockClass = _ref$blockClass === void 0 ? "".concat(pkg.prefix, "--data-spreadsheet") : _ref$blockClass,
12
12
  clonedSelectionElement = _ref.clonedSelectionElement,
13
13
  ref = _ref.ref,
14
- spreadsheetCoords = _ref.spreadsheetCoords;
14
+ spreadsheetCoords = _ref.spreadsheetCoords,
15
+ leftScrollAmount = _ref.leftScrollAmount;
15
16
  var closestCell = event.target.closest(".".concat(blockClass, "--interactive-cell-element"));
16
17
  var newColumnIndex = closestCell === null || closestCell === void 0 ? void 0 : closestCell.getAttribute('data-column-index');
17
18
  var originalColumnIndex = clonedSelectionElement === null || clonedSelectionElement === void 0 ? void 0 : clonedSelectionElement.getAttribute('data-column-index-original');
@@ -21,11 +22,11 @@ export var moveColumnIndicatorLine = function moveColumnIndicatorLine(_ref) {
21
22
  var selectionAreaOrigin = ref.current.querySelector("[data-matcher-id=\"".concat(matcherId, "\"]"));
22
23
 
23
24
  if (Number(newColumnIndex) > Number(originalColumnIndex)) {
24
- indicatorLineElement.style.left = px(closestCellCoords.left - spreadsheetCoords.left + closestCell.offsetWidth - 2);
25
+ indicatorLineElement.style.left = px(closestCellCoords.left - spreadsheetCoords.left + closestCell.offsetWidth - 2 + leftScrollAmount);
25
26
  }
26
27
 
27
28
  if (Number(newColumnIndex) < Number(originalColumnIndex)) {
28
- indicatorLineElement.style.left = px(closestCellCoords.left - spreadsheetCoords.left);
29
+ indicatorLineElement.style.left = px(closestCellCoords.left - spreadsheetCoords.left + leftScrollAmount);
29
30
  }
30
31
 
31
32
  if (Number(newColumnIndex) === Number(originalColumnIndex)) {
@@ -79,7 +79,7 @@ export var ExportModal = /*#__PURE__*/forwardRef(function (_ref, ref) {
79
79
 
80
80
  setName(filename);
81
81
  setExtension(preformattedExtensions === null || preformattedExtensions === void 0 ? void 0 : (_preformattedExtensio = preformattedExtensions[0]) === null || _preformattedExtensio === void 0 ? void 0 : _preformattedExtensio.extension);
82
- }, [filename, preformattedExtensions]);
82
+ }, [filename, preformattedExtensions, open]);
83
83
 
84
84
  var onNameChangeHandler = function onNameChangeHandler(evt) {
85
85
  setName(evt.target.value);
@@ -81,7 +81,7 @@ var blockClass = "".concat(_settings.pkg.prefix, "--data-spreadsheet");
81
81
  var componentName = 'DataSpreadsheet'; // Default values for props
82
82
 
83
83
  var defaults = {
84
- cellSize: 'standard',
84
+ cellSize: 'sm',
85
85
  columns: Object.freeze([]),
86
86
  data: Object.freeze([]),
87
87
  defaultEmptyRowCount: 16,
@@ -900,7 +900,7 @@ DataSpreadsheet.propTypes = {
900
900
  /**
901
901
  * Specifies the cell height
902
902
  */
903
- cellSize: _propTypes.default.oneOf(['compact', 'standard', 'medium', 'large']),
903
+ cellSize: _propTypes.default.oneOf(['xs', 'sm', 'md', 'lg']),
904
904
 
905
905
  /**
906
906
  * Provide an optional class to be applied to the containing node.
@@ -96,7 +96,8 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
96
96
  var contentScrollRef = (0, _react.useRef)();
97
97
  var previousState = (0, _hooks.usePreviousValue)({
98
98
  selectionAreaData: selectionAreaData,
99
- clickAndHoldActive: clickAndHoldActive
99
+ clickAndHoldActive: clickAndHoldActive,
100
+ rowHeight: defaultColumn.rowHeight
100
101
  }); // Set custom css property containing the spreadsheet total width
101
102
 
102
103
  (0, _react.useEffect)(function () {
@@ -176,7 +177,7 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
176
177
 
177
178
  for (var rowIndex = rowStart; rowIndex <= rowEnd; rowIndex++) {
178
179
  for (var columnIndex = columnStart; columnIndex <= columnEnd; columnIndex++) {
179
- cellContainer.push([rowIndex, columnIndex]);
180
+ cellContainer.push([rowIndex, columnIndex, "".concat(blockClass, "__cell--").concat(rowIndex, "--").concat(columnIndex)]);
180
181
  }
181
182
  }
182
183
 
@@ -198,16 +199,44 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
198
199
  activeCellCoordinates: activeCellCoordinates,
199
200
  defaultColumn: defaultColumn
200
201
  }); // Make sure that if the cellSize prop changes, the active
201
- // cell also gets updated with the new size
202
+ // cell also gets updated with the new size and new top placement
203
+ // value. All of the cell selections will be updated as well
202
204
 
203
205
  (0, _react.useEffect)(function () {
204
206
  var listContainer = spreadsheetBodyRef === null || spreadsheetBodyRef === void 0 ? void 0 : spreadsheetBodyRef.current;
205
207
  var activeCellButton = listContainer.querySelector(".".concat(blockClass, "__active-cell--highlight"));
206
208
 
207
- if (activeCellButton) {
209
+ if (activeCellButton && defaultColumn.rowHeight !== previousState.rowHeight) {
208
210
  activeCellButton.style.height = "".concat(defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeight, "px");
211
+
212
+ if (activeCellCoordinates) {
213
+ var activeTargetElement = ref.current.querySelector("[data-row-index=\"".concat(activeCellCoordinates.row, "\"][data-column-index=\"").concat(activeCellCoordinates.column, "\"]"));
214
+
215
+ var _listContainer = ref.current.querySelector(".".concat(blockClass, "__list--container"));
216
+
217
+ var newActiveCellTopPosition = activeTargetElement.getBoundingClientRect().top - _listContainer.getBoundingClientRect().top;
218
+
219
+ activeCellButton.style.top = (0, _layout.px)(newActiveCellTopPosition);
220
+ (0, _removeCellSelections.removeCellSelections)({
221
+ spreadsheetRef: ref
222
+ });
223
+ selectionAreas.map(function (area) {
224
+ if (!area.areaCreated && area.point1 && area.point2 && area.matcher) {
225
+ return (0, _createCellSelectionArea.createCellSelectionArea)({
226
+ ref: ref,
227
+ area: area,
228
+ blockClass: blockClass,
229
+ defaultColumn: defaultColumn,
230
+ selectionAreas: selectionAreas,
231
+ setSelectionAreas: setSelectionAreas,
232
+ setActiveCellInsideSelectionArea: setActiveCellInsideSelectionArea,
233
+ visibleColumns: visibleColumns
234
+ });
235
+ }
236
+ });
237
+ }
209
238
  }
210
- }, [defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeight]); // onClick fn for each cell in the data spreadsheet body,
239
+ }, [defaultColumn, ref, activeCellCoordinates, previousState === null || previousState === void 0 ? void 0 : previousState.rowHeight, selectionAreas, setActiveCellInsideSelectionArea, setSelectionAreas, visibleColumns]); // onClick fn for each cell in the data spreadsheet body,
211
240
  // adds the active cell highlight
212
241
 
213
242
  var handleBodyCellClick = (0, _react.useCallback)(function (cell, columnIndex) {
@@ -230,7 +230,7 @@ DataSpreadsheetHeader.propTypes = {
230
230
  /**
231
231
  * Specifies the cell height
232
232
  */
233
- cellSize: _propTypes.default.oneOf(['compact', 'standard', 'medium', 'large']),
233
+ cellSize: _propTypes.default.oneOf(['xs', 'sm', 'md', 'lg']),
234
234
 
235
235
  /**
236
236
  * All of the spreadsheet columns
@@ -38,21 +38,25 @@ var useSpreadsheetMouseMove = function useSpreadsheetMouseMove(_ref) {
38
38
  }
39
39
 
40
40
  var spreadsheetCoords = ref.current.getBoundingClientRect();
41
+ var listContainer = ref.current.querySelector(".".concat(blockClass, "__list--container"));
42
+ var scrollAmount = listContainer.scrollLeft;
41
43
  (0, _moveColumnIndicatorLine.moveColumnIndicatorLine)({
42
44
  clonedSelectionElement: clonedSelectionElement,
43
45
  ref: ref,
44
- spreadsheetCoords: spreadsheetCoords
46
+ spreadsheetCoords: spreadsheetCoords,
47
+ leftScrollAmount: scrollAmount
45
48
  });
46
49
  var scrollbarWidth = (0, _getScrollbarWidth.getScrollbarWidth)();
47
50
  var spreadsheetWrapperElement = ref.current;
48
51
  spreadsheetWrapperElement.getBoundingClientRect();
49
52
  var xPositionRelativeToSpreadsheet = event.clientX - spreadsheetCoords.left;
50
53
  var offsetXValue = clonedSelectionElement === null || clonedSelectionElement === void 0 ? void 0 : clonedSelectionElement.getAttribute('data-clone-offset-x');
51
- var totalSpreadsheetWidth = ref.current.offsetWidth;
54
+ var totalSpreadsheetScrollingWidth = listContainer.scrollWidth;
52
55
  var clonedSelectionWidth = clonedSelectionElement.offsetWidth;
53
- var clonePlacement = Math.max(xPositionRelativeToSpreadsheet - offsetXValue, defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeaderWidth); // Moves the position of the cloned selection area to follow mouse
56
+ var clonePlacement = Math.max(xPositionRelativeToSpreadsheet - offsetXValue, defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeaderWidth); // Moves the position of the cloned selection area to follow mouse, and
57
+ // add the amount horizontally scrolled
54
58
 
55
- clonedSelectionElement.style.left = (0, _layout.px)(totalSpreadsheetWidth - clonedSelectionWidth - scrollbarWidth >= clonePlacement ? clonePlacement : totalSpreadsheetWidth - clonedSelectionWidth - scrollbarWidth);
59
+ clonedSelectionElement.style.left = (0, _layout.px)(totalSpreadsheetScrollingWidth - clonedSelectionWidth - scrollbarWidth >= clonePlacement ? clonePlacement + scrollAmount : totalSpreadsheetScrollingWidth - clonedSelectionWidth - scrollbarWidth);
56
60
  };
57
61
 
58
62
  if (headerCellHoldActive) {
@@ -64,7 +64,9 @@ var useSpreadsheetMouseUp = function useSpreadsheetMouseUp(_ref) {
64
64
  var selectionAreaToMove = ref.current.querySelector("[data-matcher-id=\"".concat(currentMatcher, "\"]"));
65
65
  var spreadsheetPosition = ref.current.getBoundingClientRect();
66
66
  var newIndexPosition = columnToMoveToElement.getBoundingClientRect();
67
- var relativeNewPosition = newIndexPosition.left - spreadsheetPosition.left;
67
+ var listContainer = ref.current.querySelector(".".concat(blockClass, "__list--container"));
68
+ var leftScrollAmount = listContainer.scrollLeft;
69
+ var relativeNewPosition = newIndexPosition.left - spreadsheetPosition.left + leftScrollAmount;
68
70
  var cloneColumnWidth = selectionAreaCloneElement.offsetWidth;
69
71
  var columnsWidthUpToNewIndex = 0;
70
72
  var newIndexLessThanStarting = newColumnIndex < originalColumnIndex;
@@ -19,16 +19,16 @@ var getSizeInPixels = function getSizeInPixels(carbonSize) {
19
19
 
20
20
  var getCellSize = function getCellSize(cellSize) {
21
21
  switch (cellSize) {
22
- case 'compact':
22
+ case 'xs':
23
23
  return getSizeInPixels(_layout.sizeXSmall);
24
24
 
25
- case 'standard':
25
+ case 'sm':
26
26
  return getSizeInPixels(_layout.sizeSmall);
27
27
 
28
- case 'medium':
28
+ case 'md':
29
29
  return getSizeInPixels(_layout.sizeMedium);
30
30
 
31
- case 'large':
31
+ case 'lg':
32
32
  return getSizeInPixels(_layout.sizeLarge);
33
33
 
34
34
  default:
@@ -20,7 +20,8 @@ var moveColumnIndicatorLine = function moveColumnIndicatorLine(_ref) {
20
20
  blockClass = _ref$blockClass === void 0 ? "".concat(_settings.pkg.prefix, "--data-spreadsheet") : _ref$blockClass,
21
21
  clonedSelectionElement = _ref.clonedSelectionElement,
22
22
  ref = _ref.ref,
23
- spreadsheetCoords = _ref.spreadsheetCoords;
23
+ spreadsheetCoords = _ref.spreadsheetCoords,
24
+ leftScrollAmount = _ref.leftScrollAmount;
24
25
  var closestCell = event.target.closest(".".concat(blockClass, "--interactive-cell-element"));
25
26
  var newColumnIndex = closestCell === null || closestCell === void 0 ? void 0 : closestCell.getAttribute('data-column-index');
26
27
  var originalColumnIndex = clonedSelectionElement === null || clonedSelectionElement === void 0 ? void 0 : clonedSelectionElement.getAttribute('data-column-index-original');
@@ -30,11 +31,11 @@ var moveColumnIndicatorLine = function moveColumnIndicatorLine(_ref) {
30
31
  var selectionAreaOrigin = ref.current.querySelector("[data-matcher-id=\"".concat(matcherId, "\"]"));
31
32
 
32
33
  if (Number(newColumnIndex) > Number(originalColumnIndex)) {
33
- indicatorLineElement.style.left = (0, _layout.px)(closestCellCoords.left - spreadsheetCoords.left + closestCell.offsetWidth - 2);
34
+ indicatorLineElement.style.left = (0, _layout.px)(closestCellCoords.left - spreadsheetCoords.left + closestCell.offsetWidth - 2 + leftScrollAmount);
34
35
  }
35
36
 
36
37
  if (Number(newColumnIndex) < Number(originalColumnIndex)) {
37
- indicatorLineElement.style.left = (0, _layout.px)(closestCellCoords.left - spreadsheetCoords.left);
38
+ indicatorLineElement.style.left = (0, _layout.px)(closestCellCoords.left - spreadsheetCoords.left + leftScrollAmount);
38
39
  }
39
40
 
40
41
  if (Number(newColumnIndex) === Number(originalColumnIndex)) {
@@ -100,7 +100,7 @@ var ExportModal = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
100
100
 
101
101
  setName(filename);
102
102
  setExtension(preformattedExtensions === null || preformattedExtensions === void 0 ? void 0 : (_preformattedExtensio = preformattedExtensions[0]) === null || _preformattedExtensio === void 0 ? void 0 : _preformattedExtensio.extension);
103
- }, [filename, preformattedExtensions]);
103
+ }, [filename, preformattedExtensions, open]);
104
104
 
105
105
  var onNameChangeHandler = function onNameChangeHandler(evt) {
106
106
  setName(evt.target.value);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@carbon/ibm-products",
3
3
  "description": "Carbon for IBM Products",
4
- "version": "1.18.1",
4
+ "version": "1.18.2",
5
5
  "license": "Apache-2.0",
6
6
  "main": "lib/index.js",
7
7
  "module": "es/index.js",
@@ -93,5 +93,5 @@
93
93
  "react": "^16.8.6 || ^17.0.1",
94
94
  "react-dom": "^16.8.6 || ^17.0.1"
95
95
  },
96
- "gitHead": "af43f7248a6bf9c65da17758b2345aad9808c317"
96
+ "gitHead": "70599ae0b945e59183b28a57c44b50119e89ae9d"
97
97
  }
@@ -12,6 +12,10 @@
12
12
  // Define all component styles in a mixin which is then exported using
13
13
  // the Carbon import-once mechanism.
14
14
  @mixin set-header-borders {
15
+ border-right: 1px solid $active-ui;
16
+ border-bottom: 1px solid $active-ui;
17
+ }
18
+ @mixin set-active-header-borders {
15
19
  border-right: 1px solid $text-03;
16
20
  border-bottom: 1px solid $text-03;
17
21
  }
@@ -214,6 +218,8 @@
214
218
  }
215
219
  .#{$block-class}__th--active-header,
216
220
  .#{$block-class}__td-th--active-header.#{$block-class}__td {
221
+ @include set-active-header-borders();
222
+
217
223
  background-color: $hover-selected-ui;
218
224
  }
219
225
  .#{$block-class}__th--selected-header,