@carbon/ibm-products 1.18.1 → 1.18.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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,
|