@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.
- package/css/index-full-carbon.css +4 -2
- package/css/index-full-carbon.css.map +1 -1
- package/css/index-full-carbon.min.css +1 -1
- package/css/index-full-carbon.min.css.map +1 -1
- package/css/index-without-carbon.css +4 -2
- package/css/index-without-carbon.css.map +1 -1
- package/css/index-without-carbon.min.css +1 -1
- package/css/index-without-carbon.min.css.map +1 -1
- package/css/index.css +4 -2
- package/css/index.css.map +1 -1
- package/css/index.min.css +1 -1
- package/css/index.min.css.map +1 -1
- package/es/components/DataSpreadsheet/DataSpreadsheet.js +2 -2
- package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +34 -5
- package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +1 -1
- package/es/components/DataSpreadsheet/hooks/useSpreadsheetMouseMove.js +8 -4
- package/es/components/DataSpreadsheet/hooks/useSpreadsheetMouseUp.js +3 -1
- package/es/components/DataSpreadsheet/utils/getCellSize.js +10 -10
- package/es/components/DataSpreadsheet/utils/moveColumnIndicatorLine.js +4 -3
- package/es/components/ExportModal/ExportModal.js +1 -1
- package/lib/components/DataSpreadsheet/DataSpreadsheet.js +2 -2
- package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +34 -5
- package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +1 -1
- package/lib/components/DataSpreadsheet/hooks/useSpreadsheetMouseMove.js +8 -4
- package/lib/components/DataSpreadsheet/hooks/useSpreadsheetMouseUp.js +3 -1
- package/lib/components/DataSpreadsheet/utils/getCellSize.js +4 -4
- package/lib/components/DataSpreadsheet/utils/moveColumnIndicatorLine.js +4 -3
- package/lib/components/ExportModal/ExportModal.js +1 -1
- package/package.json +2 -2
- 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
|
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 '
|
16
|
-
return getSizeInPixels(
|
15
|
+
case 'xs':
|
16
|
+
return getSizeInPixels(xs);
|
17
17
|
|
18
|
-
case '
|
19
|
-
return getSizeInPixels(
|
18
|
+
case 'sm':
|
19
|
+
return getSizeInPixels(sm);
|
20
20
|
|
21
|
-
case '
|
22
|
-
return getSizeInPixels(
|
21
|
+
case 'md':
|
22
|
+
return getSizeInPixels(md);
|
23
23
|
|
24
|
-
case '
|
25
|
-
return getSizeInPixels(
|
24
|
+
case 'lg':
|
25
|
+
return getSizeInPixels(lg);
|
26
26
|
|
27
27
|
default:
|
28
|
-
return getSizeInPixels(
|
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: '
|
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(['
|
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 ||
|
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(['
|
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
|
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)(
|
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
|
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 '
|
22
|
+
case 'xs':
|
23
23
|
return getSizeInPixels(_layout.sizeXSmall);
|
24
24
|
|
25
|
-
case '
|
25
|
+
case 'sm':
|
26
26
|
return getSizeInPixels(_layout.sizeSmall);
|
27
27
|
|
28
|
-
case '
|
28
|
+
case 'md':
|
29
29
|
return getSizeInPixels(_layout.sizeMedium);
|
30
30
|
|
31
|
-
case '
|
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.
|
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": "
|
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,
|