@carbon/ibm-products 2.43.2-canary.1 → 2.43.2-canary.12
Sign up to get free protection for your applications and to get access to all the features.
- package/css/index-full-carbon.css +3 -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-released-only.css.map +1 -1
- package/css/index-without-carbon-released-only.min.css.map +1 -1
- package/css/index-without-carbon.css +3 -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 +3 -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 +22 -12
- package/es/components/DataSpreadsheet/DataSpreadsheetBody.d.ts +9 -1
- package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +18 -2
- package/es/components/DataSpreadsheet/DataSpreadsheetHeader.d.ts +8 -0
- package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +17 -6
- package/es/components/DataSpreadsheet/hooks/useSpreadsheetMouseMove.js +4 -1
- package/es/components/DataSpreadsheet/hooks/useSpreadsheetMouseUp.d.ts +3 -1
- package/es/components/DataSpreadsheet/hooks/useSpreadsheetMouseUp.js +15 -3
- package/es/components/DataSpreadsheet/types/index.d.ts +1 -1
- package/es/components/DataSpreadsheet/utils/moveColumnIndicatorLine.js +34 -2
- package/es/components/Datagrid/types/index.d.ts +9 -2
- package/es/components/Datagrid/useColumnCenterAlign.d.ts +8 -1
- package/es/components/Datagrid/useColumnCenterAlign.js +1 -1
- package/es/components/Datagrid/useColumnRightAlign.d.ts +8 -1
- package/es/components/Datagrid/useColumnRightAlign.js +4 -3
- package/es/components/Datagrid/useInlineEdit.d.ts +8 -1
- package/es/components/Datagrid/useInlineEdit.js +1 -1
- package/es/components/Datagrid/useNestedRows.js +27 -9
- package/es/components/Decorator/Decorator.js +2 -1
- package/es/components/DecoratorBase/DecoratorBase.js +3 -5
- package/es/components/DecoratorDualButton/DecoratorDualButton.js +2 -1
- package/es/components/DecoratorLink/DecoratorLink.js +2 -1
- package/es/components/DecoratorSingleButton/DecoratorSingleButton.js +2 -1
- package/lib/components/DataSpreadsheet/DataSpreadsheet.js +22 -12
- package/lib/components/DataSpreadsheet/DataSpreadsheetBody.d.ts +9 -1
- package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +18 -2
- package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.d.ts +8 -0
- package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +17 -6
- package/lib/components/DataSpreadsheet/hooks/useSpreadsheetMouseMove.js +4 -1
- package/lib/components/DataSpreadsheet/hooks/useSpreadsheetMouseUp.d.ts +3 -1
- package/lib/components/DataSpreadsheet/hooks/useSpreadsheetMouseUp.js +15 -3
- package/lib/components/DataSpreadsheet/types/index.d.ts +1 -1
- package/lib/components/DataSpreadsheet/utils/moveColumnIndicatorLine.js +34 -2
- package/lib/components/Datagrid/types/index.d.ts +9 -2
- package/lib/components/Datagrid/useColumnCenterAlign.d.ts +8 -1
- package/lib/components/Datagrid/useColumnCenterAlign.js +1 -1
- package/lib/components/Datagrid/useColumnRightAlign.d.ts +8 -1
- package/lib/components/Datagrid/useColumnRightAlign.js +4 -3
- package/lib/components/Datagrid/useInlineEdit.d.ts +8 -1
- package/lib/components/Datagrid/useInlineEdit.js +1 -1
- package/lib/components/Datagrid/useNestedRows.js +27 -9
- package/lib/components/Decorator/Decorator.js +2 -1
- package/lib/components/DecoratorBase/DecoratorBase.js +3 -5
- package/lib/components/DecoratorDualButton/DecoratorDualButton.js +2 -1
- package/lib/components/DecoratorLink/DecoratorLink.js +2 -1
- package/lib/components/DecoratorSingleButton/DecoratorSingleButton.js +2 -1
- package/package.json +3 -3
- package/scss/components/DataSpreadsheet/_data-spreadsheet.scss +1 -0
- package/scss/components/StatusIcon/_status-icon.scss +4 -4
- package/scss/components/StringFormatter/_string-formatter.scss +2 -2
- package/scss/components/UserProfileImage/_user-profile-image.scss +6 -2
@@ -79,7 +79,15 @@ interface DataSpreadsheetBodyProps {
|
|
79
79
|
/**
|
80
80
|
* Array of selection area data
|
81
81
|
*/
|
82
|
-
selectionAreaData?:
|
82
|
+
selectionAreaData?: any[];
|
83
|
+
/**
|
84
|
+
* Header reordering is active
|
85
|
+
*/
|
86
|
+
selectedHeaderReorderActive?: boolean;
|
87
|
+
/**
|
88
|
+
* Set header reordering active or not
|
89
|
+
*/
|
90
|
+
setSelectedHeaderReorderActive?: Dispatch<SetStateAction<boolean>>;
|
83
91
|
/**
|
84
92
|
* Array of selection areas
|
85
93
|
*/
|
@@ -49,6 +49,8 @@ var DataSpreadsheetBody = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
49
49
|
selectionAreaData = _ref.selectionAreaData,
|
50
50
|
setSelectionAreaData = _ref.setSelectionAreaData,
|
51
51
|
setActiveCellCoordinates = _ref.setActiveCellCoordinates,
|
52
|
+
selectedHeaderReorderActive = _ref.selectedHeaderReorderActive,
|
53
|
+
setSelectedHeaderReorderActive = _ref.setSelectedHeaderReorderActive,
|
52
54
|
selectionAreas = _ref.selectionAreas,
|
53
55
|
setContainerHasFocus = _ref.setContainerHasFocus,
|
54
56
|
setSelectionAreas = _ref.setSelectionAreas,
|
@@ -84,8 +86,12 @@ var DataSpreadsheetBody = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
84
86
|
// back to the consumer
|
85
87
|
React.useEffect(function () {
|
86
88
|
if (selectionAreaData !== null && selectionAreaData !== void 0 && selectionAreaData.length) {
|
87
|
-
var _previousState$select;
|
88
|
-
|
89
|
+
var _previousState$select, _selectionAreaData$, _previousState$select2;
|
90
|
+
var selectionChanged = false;
|
91
|
+
if ((previousState === null || previousState === void 0 || (_previousState$select = previousState.selectionAreaData) === null || _previousState$select === void 0 ? void 0 : _previousState$select.length) !== (selectionAreaData === null || selectionAreaData === void 0 ? void 0 : selectionAreaData.length) || (selectionAreaData === null || selectionAreaData === void 0 || (_selectionAreaData$ = selectionAreaData[0]) === null || _selectionAreaData$ === void 0 ? void 0 : _selectionAreaData$.cells.length) !== (previousState === null || previousState === void 0 || (_previousState$select2 = previousState.selectionAreaData) === null || _previousState$select2 === void 0 || (_previousState$select2 = _previousState$select2[0]) === null || _previousState$select2 === void 0 ? void 0 : _previousState$select2.cells.length)) {
|
92
|
+
selectionChanged = true;
|
93
|
+
}
|
94
|
+
if (!clickAndHoldActive && previousState !== null && previousState !== void 0 && previousState.clickAndHoldActive || selectionChanged) {
|
89
95
|
onSelectionAreaChange === null || onSelectionAreaChange === void 0 || onSelectionAreaChange(selectionAreaData);
|
90
96
|
}
|
91
97
|
}
|
@@ -160,6 +166,8 @@ var DataSpreadsheetBody = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
160
166
|
setClickAndHoldActive: setClickAndHoldActive,
|
161
167
|
setSelectionAreas: setSelectionAreas,
|
162
168
|
setValidStartingPoint: setValidStartingPoint,
|
169
|
+
selectedHeaderReorderActive: selectedHeaderReorderActive,
|
170
|
+
setSelectedHeaderReorderActive: setSelectedHeaderReorderActive,
|
163
171
|
validStartingPoint: validStartingPoint,
|
164
172
|
ref: ref,
|
165
173
|
setHeaderCellHoldActive: setHeaderCellHoldActive,
|
@@ -466,6 +474,10 @@ DataSpreadsheetBody.propTypes = {
|
|
466
474
|
* The scrollbar width
|
467
475
|
*/
|
468
476
|
scrollBarSize: index["default"].number,
|
477
|
+
/**
|
478
|
+
* Header reordering is active
|
479
|
+
*/
|
480
|
+
selectedHeaderReorderActive: index["default"].bool,
|
469
481
|
/**
|
470
482
|
* Array of selection area data
|
471
483
|
*/
|
@@ -502,6 +514,10 @@ DataSpreadsheetBody.propTypes = {
|
|
502
514
|
* Setter fn for header cell hold active value
|
503
515
|
*/
|
504
516
|
setHeaderCellHoldActive: index["default"].func,
|
517
|
+
/**
|
518
|
+
* Set header reordering active or not
|
519
|
+
*/
|
520
|
+
setSelectedHeaderReorderActive: index["default"].func,
|
505
521
|
/**
|
506
522
|
* Setter fn for selectionAreaData state value
|
507
523
|
*/
|
@@ -56,6 +56,14 @@ interface DataSpreadsheetHeaderProps {
|
|
56
56
|
* Setter fn for activeCellCoordinates value
|
57
57
|
*/
|
58
58
|
setActiveCellCoordinates?: Dispatch<SetStateAction<ActiveCellCoordinates | null>>;
|
59
|
+
/**
|
60
|
+
* Header reordering is active
|
61
|
+
*/
|
62
|
+
selectedHeaderReorderActive?: boolean;
|
63
|
+
/**
|
64
|
+
* Set header reordering active or not
|
65
|
+
*/
|
66
|
+
setSelectedHeaderReorderActive?: Dispatch<SetStateAction<boolean>>;
|
59
67
|
/**
|
60
68
|
* Setter fn for currentMatcher value
|
61
69
|
*/
|
@@ -40,6 +40,8 @@ var DataSpreadsheetHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
40
40
|
headerGroups = _ref.headerGroups,
|
41
41
|
scrollBarSize = _ref.scrollBarSize,
|
42
42
|
selectionAreas = _ref.selectionAreas,
|
43
|
+
selectedHeaderReorderActive = _ref.selectedHeaderReorderActive,
|
44
|
+
setSelectedHeaderReorderActive = _ref.setSelectedHeaderReorderActive,
|
43
45
|
setActiveCellCoordinates = _ref.setActiveCellCoordinates,
|
44
46
|
setCurrentMatcher = _ref.setCurrentMatcher,
|
45
47
|
setSelectionAreas = _ref.setSelectionAreas,
|
@@ -55,10 +57,6 @@ var DataSpreadsheetHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
55
57
|
_useState2 = _rollupPluginBabelHelpers.slicedToArray(_useState, 2),
|
56
58
|
scrollBarSizeValue = _useState2[0],
|
57
59
|
setScrollBarSizeValue = _useState2[1];
|
58
|
-
var _useState3 = React.useState(false),
|
59
|
-
_useState4 = _rollupPluginBabelHelpers.slicedToArray(_useState3, 2),
|
60
|
-
selectedHeaderReorderActive = _useState4[0],
|
61
|
-
setSelectedHeaderReorderActive = _useState4[1];
|
62
60
|
var previousState = usePreviousValue.usePreviousValue({
|
63
61
|
cellSize: cellSize
|
64
62
|
}) || {};
|
@@ -116,11 +114,16 @@ var DataSpreadsheetHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
116
114
|
// Remove columns, need to call handleHeaderCellSelection
|
117
115
|
return;
|
118
116
|
}
|
119
|
-
setSelectedHeaderReorderActive(true);
|
120
117
|
var selectionAreaToClone = selectionAreas === null || selectionAreas === void 0 ? void 0 : selectionAreas.filter(function (item) {
|
121
118
|
return (item === null || item === void 0 ? void 0 : item.matcher) === currentMatcher;
|
122
119
|
});
|
123
120
|
var selectionAreaElement = ref.current.querySelector("[data-matcher-id=\"".concat(selectionAreaToClone === null || selectionAreaToClone === void 0 || (_selectionAreaToClone = selectionAreaToClone[0]) === null || _selectionAreaToClone === void 0 ? void 0 : _selectionAreaToClone.matcher, "\"]"));
|
121
|
+
if (selectionAreaElement) {
|
122
|
+
selectionAreaElement.classList.add("".concat(blockClass, "__selection-area--element"));
|
123
|
+
}
|
124
|
+
if (typeof setSelectedHeaderReorderActive === 'function') {
|
125
|
+
setSelectedHeaderReorderActive(true);
|
126
|
+
}
|
124
127
|
var clickXPosition = event.clientX;
|
125
128
|
var headerButtonCoords = event.target.getBoundingClientRect();
|
126
129
|
var headerIndex = event.target.getAttribute('data-column-index');
|
@@ -198,7 +201,7 @@ var DataSpreadsheetHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
198
201
|
"data-column-index": index,
|
199
202
|
tabIndex: -1,
|
200
203
|
onMouseDown: selectedHeader ? handleHeaderMouseDown(index) : undefined,
|
201
|
-
onMouseUp: selectedHeader ? function () {
|
204
|
+
onMouseUp: selectedHeader && typeof setSelectedHeaderReorderActive === 'function' ? function () {
|
202
205
|
return setSelectedHeaderReorderActive(false);
|
203
206
|
} : undefined,
|
204
207
|
onClick: !selectedHeader ? handleColumnHeaderClick(index) : undefined,
|
@@ -263,6 +266,10 @@ DataSpreadsheetHeader.propTypes = {
|
|
263
266
|
* The aria label applied to the Select all button
|
264
267
|
*/
|
265
268
|
selectAllAriaLabel: index["default"].string.isRequired,
|
269
|
+
/**
|
270
|
+
* Header reordering is active
|
271
|
+
*/
|
272
|
+
selectedHeaderReorderActive: index["default"].bool,
|
266
273
|
/**
|
267
274
|
* All of the cell selection area items
|
268
275
|
*/
|
@@ -280,6 +287,10 @@ DataSpreadsheetHeader.propTypes = {
|
|
280
287
|
* Setter fn for header cell hold active value
|
281
288
|
*/
|
282
289
|
setHeaderCellHoldActive: index["default"].func,
|
290
|
+
/**
|
291
|
+
* Set header reordering active or not
|
292
|
+
*/
|
293
|
+
setSelectedHeaderReorderActive: index["default"].func,
|
283
294
|
/**
|
284
295
|
* Setter fn for selectionAreaData state value
|
285
296
|
*/
|
@@ -44,9 +44,12 @@ var useSpreadsheetMouseMove = function useSpreadsheetMouseMove(_ref) {
|
|
44
44
|
var totalSpreadsheetScrollingWidth = listContainer.scrollWidth;
|
45
45
|
var clonedSelectionWidth = clonedSelectionElement.offsetWidth;
|
46
46
|
var clonePlacement = Math.max(xPositionRelativeToSpreadsheet - offsetXValue, defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeaderWidth);
|
47
|
+
var leftPosition = totalSpreadsheetScrollingWidth - clonedSelectionWidth >= clonePlacement ? clonePlacement + scrollAmount : totalSpreadsheetScrollingWidth - clonedSelectionWidth;
|
47
48
|
// Moves the position of the cloned selection area to follow mouse, and
|
48
49
|
// add the amount horizontally scrolled
|
49
|
-
|
50
|
+
if (leftPosition < spreadsheetCoords.right - 40) {
|
51
|
+
clonedSelectionElement.style.left = layout.px(leftPosition);
|
52
|
+
}
|
50
53
|
};
|
51
54
|
if (headerCellHoldActive) {
|
52
55
|
ref.current.addEventListener('mousemove', handleMouseMove);
|
@@ -1,6 +1,8 @@
|
|
1
|
-
export function useSpreadsheetMouseUp({ currentMatcher, setSelectionAreas, setClickAndHoldActive, setValidStartingPoint, validStartingPoint, blockClass, ref, setHeaderCellHoldActive, setColumnOrder, visibleColumns, setActiveCellCoordinates, activeCellCoordinates, rows, defaultColumn, selectionAreas, }: {
|
1
|
+
export function useSpreadsheetMouseUp({ currentMatcher, setSelectionAreas, selectedHeaderReorderActive, setSelectedHeaderReorderActive, setClickAndHoldActive, setValidStartingPoint, validStartingPoint, blockClass, ref, setHeaderCellHoldActive, setColumnOrder, visibleColumns, setActiveCellCoordinates, activeCellCoordinates, rows, defaultColumn, selectionAreas, }: {
|
2
2
|
currentMatcher: any;
|
3
3
|
setSelectionAreas: any;
|
4
|
+
selectedHeaderReorderActive: any;
|
5
|
+
setSelectedHeaderReorderActive: any;
|
4
6
|
setClickAndHoldActive: any;
|
5
7
|
setValidStartingPoint: any;
|
6
8
|
validStartingPoint: any;
|
@@ -18,6 +18,8 @@ var deepCloneObject = require('../../../global/js/utils/deepCloneObject.js');
|
|
18
18
|
var useSpreadsheetMouseUp = function useSpreadsheetMouseUp(_ref) {
|
19
19
|
var currentMatcher = _ref.currentMatcher,
|
20
20
|
setSelectionAreas = _ref.setSelectionAreas,
|
21
|
+
selectedHeaderReorderActive = _ref.selectedHeaderReorderActive,
|
22
|
+
setSelectedHeaderReorderActive = _ref.setSelectedHeaderReorderActive,
|
21
23
|
setClickAndHoldActive = _ref.setClickAndHoldActive,
|
22
24
|
setValidStartingPoint = _ref.setValidStartingPoint,
|
23
25
|
validStartingPoint = _ref.validStartingPoint,
|
@@ -34,15 +36,22 @@ var useSpreadsheetMouseUp = function useSpreadsheetMouseUp(_ref) {
|
|
34
36
|
selectionAreas = _ref.selectionAreas;
|
35
37
|
React.useEffect(function () {
|
36
38
|
var handleMouseUp = function handleMouseUp(event) {
|
39
|
+
var _selectionAreas$;
|
40
|
+
var isHoldingColumn = false;
|
41
|
+
if (selectionAreas !== null && selectionAreas !== void 0 && (_selectionAreas$ = selectionAreas[0]) !== null && _selectionAreas$ !== void 0 && _selectionAreas$.header && selectionAreas[0].header.type === 'column') {
|
42
|
+
isHoldingColumn = true;
|
43
|
+
}
|
37
44
|
// Remove the cloned selection area on mouse up
|
38
|
-
if (!validStartingPoint) {
|
45
|
+
if (!validStartingPoint && isHoldingColumn) {
|
39
46
|
setHeaderCellHoldActive(false);
|
47
|
+
var selectionAreaElement = ref.current.querySelector(".".concat(blockClass, "__selection-area--element"));
|
40
48
|
var selectionAreaCloneElement = ref.current.querySelector(".".concat(blockClass, "__selection-area--element-cloned"));
|
41
49
|
if (!selectionAreaCloneElement) {
|
42
50
|
return;
|
43
51
|
}
|
44
52
|
// Mouse up while a cloned selection area exists/a column is being reordered
|
45
53
|
if (selectionAreaCloneElement) {
|
54
|
+
var _selectionAreaElement;
|
46
55
|
var closestCell = event.target.closest(".".concat(blockClass, "--interactive-cell-element"));
|
47
56
|
var newColumnIndex = parseInt === null || parseInt === void 0 ? void 0 : parseInt(closestCell === null || closestCell === void 0 ? void 0 : closestCell.getAttribute('data-column-index'));
|
48
57
|
var originalColumnIndex = parseInt === null || parseInt === void 0 ? void 0 : parseInt(selectionAreaCloneElement === null || selectionAreaCloneElement === void 0 ? void 0 : selectionAreaCloneElement.getAttribute('data-column-index-original'));
|
@@ -85,6 +94,7 @@ var useSpreadsheetMouseUp = function useSpreadsheetMouseUp(_ref) {
|
|
85
94
|
selectionAreaClone[indexOfItemToUpdate].point1.column = Math.min.apply(Math, _rollupPluginBabelHelpers.toConsumableArray(newIndexArray));
|
86
95
|
selectionAreaClone[indexOfItemToUpdate].point2.column = Math.max.apply(Math, _rollupPluginBabelHelpers.toConsumableArray(newIndexArray));
|
87
96
|
}
|
97
|
+
selectionAreaClone[indexOfItemToUpdate].areaCreated = false;
|
88
98
|
return selectionAreaClone;
|
89
99
|
});
|
90
100
|
// Only reorder columns if the new index is _not_ part of the
|
@@ -129,11 +139,13 @@ var useSpreadsheetMouseUp = function useSpreadsheetMouseUp(_ref) {
|
|
129
139
|
var indicatorLineElement = ref.current.querySelector(".".concat(blockClass, "__reorder-indicator-line"));
|
130
140
|
indicatorLineElement === null || indicatorLineElement === void 0 || indicatorLineElement.remove();
|
131
141
|
selectionAreaCloneElement === null || selectionAreaCloneElement === void 0 || selectionAreaCloneElement.remove();
|
142
|
+
selectionAreaElement === null || selectionAreaElement === void 0 || (_selectionAreaElement = selectionAreaElement.classList) === null || _selectionAreaElement === void 0 || _selectionAreaElement.remove("".concat(blockClass, "__selection-area--element"));
|
143
|
+
setSelectedHeaderReorderActive(false);
|
132
144
|
}
|
133
145
|
}
|
134
146
|
// Mouse up was on a spreadsheet body cell which is a valid
|
135
147
|
// start/end point for creating a selection area
|
136
|
-
if (validStartingPoint) {
|
148
|
+
if (validStartingPoint || event.type === 'mouseup') {
|
137
149
|
setClickAndHoldActive(false);
|
138
150
|
setValidStartingPoint(false);
|
139
151
|
var cellButton = event.target.closest(".".concat(blockClass, "__body--td"));
|
@@ -162,7 +174,7 @@ var useSpreadsheetMouseUp = function useSpreadsheetMouseUp(_ref) {
|
|
162
174
|
return function () {
|
163
175
|
document.removeEventListener('mouseup', handleMouseUp);
|
164
176
|
};
|
165
|
-
}, [blockClass, currentMatcher, setSelectionAreas, setClickAndHoldActive, setValidStartingPoint, validStartingPoint, ref, setHeaderCellHoldActive, setColumnOrder, visibleColumns, setActiveCellCoordinates, activeCellCoordinates, rows, defaultColumn, selectionAreas]);
|
177
|
+
}, [blockClass, currentMatcher, setSelectionAreas, setClickAndHoldActive, setValidStartingPoint, validStartingPoint, selectedHeaderReorderActive, setSelectedHeaderReorderActive, ref, setHeaderCellHoldActive, setColumnOrder, visibleColumns, setActiveCellCoordinates, activeCellCoordinates, rows, defaultColumn, selectionAreas]);
|
166
178
|
};
|
167
179
|
|
168
180
|
exports.useSpreadsheetMouseUp = useSpreadsheetMouseUp;
|
@@ -13,7 +13,7 @@ export interface PrevState {
|
|
13
13
|
cellEditorValue?: string;
|
14
14
|
activeCellCoordinates?: ActiveCellCoordinates;
|
15
15
|
isEditing?: boolean;
|
16
|
-
selectionAreaData?:
|
16
|
+
selectionAreaData?: any[];
|
17
17
|
clickAndHoldActive?: boolean;
|
18
18
|
rowHeight?: number;
|
19
19
|
cellSize?: Size;
|
@@ -26,11 +26,43 @@ var moveColumnIndicatorLine = function moveColumnIndicatorLine(_ref) {
|
|
26
26
|
var indicatorLineElement = ref.current.querySelector(".".concat(blockClass, "__reorder-indicator-line"));
|
27
27
|
var matcherId = clonedSelectionElement === null || clonedSelectionElement === void 0 ? void 0 : clonedSelectionElement.getAttribute('data-matcher-id');
|
28
28
|
var selectionAreaOrigin = ref.current.querySelector("[data-matcher-id=\"".concat(matcherId, "\"]"));
|
29
|
+
var listContainer = ref.current.querySelector(".".concat(blockClass, "__list--container"));
|
30
|
+
var scrollSpeed = 10; // Scrolling speed
|
31
|
+
var leftEdgeThreshold = 120; // Distance from the left edge to start scrolling
|
32
|
+
var rightEdgeThreshold = 100; // Distance from the right edge to start scrolling
|
33
|
+
|
34
|
+
var _event = event,
|
35
|
+
clientX = _event.clientX;
|
36
|
+
var _listContainer$getBou = listContainer.getBoundingClientRect(),
|
37
|
+
left = _listContainer$getBou.left,
|
38
|
+
right = _listContainer$getBou.right;
|
39
|
+
|
40
|
+
// Is near left side of viewport
|
41
|
+
if (clientX < leftEdgeThreshold) {
|
42
|
+
window.scrollBy(-scrollSpeed, 0);
|
43
|
+
}
|
44
|
+
|
45
|
+
// Is near right side of viewport
|
46
|
+
if (clientX > window.innerWidth - rightEdgeThreshold) {
|
47
|
+
window.scrollBy(scrollSpeed, 0);
|
48
|
+
}
|
49
|
+
|
50
|
+
// Is near left edge of table
|
51
|
+
if (clientX > left && clientX < left + leftEdgeThreshold) {
|
52
|
+
listContainer.scrollBy(-scrollSpeed, 0);
|
53
|
+
}
|
54
|
+
|
55
|
+
// Is near right edge of table
|
56
|
+
if (clientX < right && clientX > right - rightEdgeThreshold) {
|
57
|
+
listContainer.scrollBy(scrollSpeed, 0);
|
58
|
+
}
|
29
59
|
if (Number(newColumnIndex) > Number(originalColumnIndex)) {
|
30
|
-
|
60
|
+
var leftPosition = closestCellCoords.left - spreadsheetCoords.left + closestCell.offsetWidth - 2 + leftScrollAmount;
|
61
|
+
indicatorLineElement.style.left = layout.px(leftPosition);
|
31
62
|
}
|
32
63
|
if (Number(newColumnIndex) < Number(originalColumnIndex)) {
|
33
|
-
|
64
|
+
var _leftPosition = closestCellCoords.left - spreadsheetCoords.left + leftScrollAmount;
|
65
|
+
indicatorLineElement.style.left = layout.px(_leftPosition);
|
34
66
|
}
|
35
67
|
if (Number(newColumnIndex) === Number(originalColumnIndex)) {
|
36
68
|
indicatorLineElement.style.left = selectionAreaOrigin.style.left;
|
@@ -6,7 +6,7 @@ import { RadioButtonGroupProps } from '@carbon/react/lib/components/RadioButtonG
|
|
6
6
|
import { CheckboxProps } from '@carbon/react/lib/components/Checkbox';
|
7
7
|
import { NumberInputProps } from '@carbon/react/lib/components/NumberInput/NumberInput';
|
8
8
|
import { CSSProperties, JSXElementConstructor, MutableRefObject, ReactNode, TouchEventHandler } from 'react';
|
9
|
-
import { Cell, ColumnInstance, FilterValue, Filters, HeaderGroup, Row, TableCommonProps, TableDispatch, TableInstance, TableToggleAllRowsSelectedProps, UseExpandedRowProps, UseFiltersInstanceProps, UsePaginationInstanceProps, UseResizeColumnsColumnProps, UseResizeColumnsState, UseRowSelectInstanceProps, UseRowSelectRowProps, UseRowSelectState, UseSortByColumnProps, UseTableHooks } from 'react-table';
|
9
|
+
import { Cell, Column, ColumnInstance, FilterValue, Filters, HeaderGroup, Meta, Row, TableCommonProps, TableDispatch, TableInstance, TableToggleAllRowsSelectedProps, UseExpandedRowProps, UseFiltersInstanceProps, UsePaginationInstanceProps, UseResizeColumnsColumnProps, UseResizeColumnsState, UseRowSelectInstanceProps, UseRowSelectRowProps, UseRowSelectState, UseSortByColumnProps, UseSortByOptions, UseTableHooks } from 'react-table';
|
10
10
|
import { CarbonIconType } from '@carbon/react/icons';
|
11
11
|
import { type ButtonProps } from '@carbon/react';
|
12
12
|
import { TableBatchActionsProps } from '@carbon/react/lib/components/DataTable/TableBatchActions';
|
@@ -85,9 +85,12 @@ export interface DataGridToggleAllRowsProps extends TableToggleAllRowsSelectedPr
|
|
85
85
|
}
|
86
86
|
export interface DatagridTableHooks<T extends object = any> extends UseTableHooks<T> {
|
87
87
|
}
|
88
|
-
export interface DatagridColumn<T extends object = any> extends ColumnInstance<T> {
|
88
|
+
export interface DatagridColumn<T extends object = any> extends ColumnInstance<T>, UseSortByOptions<T> {
|
89
89
|
sticky?: 'left' | 'right';
|
90
90
|
className?: string;
|
91
|
+
rightAlignedColumn?: boolean;
|
92
|
+
disableSortBy?: boolean;
|
93
|
+
centerAlignedColumn?: boolean;
|
91
94
|
}
|
92
95
|
export interface DataGridCell<T extends object = any> extends Omit<Cell<T>, 'column'> {
|
93
96
|
column: DatagridColumn<any>;
|
@@ -98,6 +101,7 @@ export interface DatagridRow<T extends object = any> extends Omit<Row<T>, 'cells
|
|
98
101
|
RowExpansionRenderer?: (state?: DataGridState) => void;
|
99
102
|
cells: Array<DataGridCell>;
|
100
103
|
isSkeleton?: boolean;
|
104
|
+
hasExpanded?: boolean;
|
101
105
|
}
|
102
106
|
export interface DataGridHeader<T extends object = any> extends ColumnInstance, UseResizeColumnsColumnProps<T>, UseSortByColumnProps<T> {
|
103
107
|
className(className: any, arg1: {
|
@@ -195,6 +199,7 @@ export interface DataGridState<T extends object = any> extends TableCommonProps,
|
|
195
199
|
expandedRowIds?: object;
|
196
200
|
onRowClick?: (row: any, event: any) => void;
|
197
201
|
onSort?: boolean;
|
202
|
+
column?: DatagridColumn;
|
198
203
|
expandedContentHeight?: number;
|
199
204
|
onRowExpand?: (row: DatagridRow, event: React.MouseEvent<HTMLElement>) => void;
|
200
205
|
ExpandedRowContentComponent?: JSXElementConstructor<any>;
|
@@ -213,4 +218,6 @@ export interface ResizeHeaderProps {
|
|
213
218
|
resizerAriaLabel?: string;
|
214
219
|
isFetching?: boolean;
|
215
220
|
}
|
221
|
+
export type VisibleColumns<T extends object = {}> = (allColumns: Array<ColumnInstance<T>>, meta: Meta<T>) => Array<Column<T>>;
|
222
|
+
export type NodeFuncType = (props: any) => ReactNode;
|
216
223
|
export {};
|
@@ -1,2 +1,9 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright IBM Corp. 2020, 2024
|
3
|
+
*
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
6
|
+
*/
|
7
|
+
import { Hooks } from 'react-table';
|
8
|
+
declare const useColumnCenterAlign: (hooks: Hooks) => void;
|
1
9
|
export default useColumnCenterAlign;
|
2
|
-
declare function useColumnCenterAlign(hooks: any): void;
|
@@ -24,7 +24,7 @@ var useColumnCenterAlign = function useColumnCenterAlign(hooks) {
|
|
24
24
|
var centerAlignRenderer = function centerAlignRenderer(tableProps, column) {
|
25
25
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
26
26
|
className: cx__default["default"]("".concat(blockClass, "__center-align-cell-renderer"), {
|
27
|
-
sortDisabled: !tableProps.isTableSortable || tableProps.column.disableSortBy === true
|
27
|
+
sortDisabled: !tableProps.isTableSortable || tableProps.column && tableProps.column.disableSortBy === true
|
28
28
|
})
|
29
29
|
}, column.Cell(tableProps));
|
30
30
|
};
|
@@ -1,2 +1,9 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright IBM Corp. 2020, 2023
|
3
|
+
*
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
6
|
+
*/
|
7
|
+
import { Hooks } from 'react-table';
|
8
|
+
declare const useColumnRightAlign: (hooks: Hooks) => void;
|
1
9
|
export default useColumnRightAlign;
|
2
|
-
declare function useColumnRightAlign(hooks: any): void;
|
@@ -22,16 +22,17 @@ var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
|
|
22
22
|
var blockClass = "".concat(settings.pkg.prefix, "--datagrid");
|
23
23
|
var useColumnRightAlign = function useColumnRightAlign(hooks) {
|
24
24
|
var RightAlignRenderer = function RightAlignRenderer(tableProps, column) {
|
25
|
+
var _tableProps$column, _column$Cell;
|
25
26
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
26
27
|
className: cx__default["default"]("".concat(blockClass, "__right-align-cell-renderer"), {
|
27
|
-
sortDisabled: !tableProps.isTableSortable || tableProps.column.disableSortBy === true
|
28
|
+
sortDisabled: !tableProps.isTableSortable || (tableProps === null || tableProps === void 0 || (_tableProps$column = tableProps.column) === null || _tableProps$column === void 0 ? void 0 : _tableProps$column.disableSortBy) === true
|
28
29
|
})
|
29
|
-
}, column.Cell(tableProps));
|
30
|
+
}, column === null || column === void 0 || (_column$Cell = column.Cell) === null || _column$Cell === void 0 ? void 0 : _column$Cell.call(column, tableProps));
|
30
31
|
};
|
31
32
|
var RightAlignHeader = function RightAlignHeader(headerProp, column) {
|
32
33
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
33
34
|
className: "".concat(blockClass, "__right-align-header")
|
34
|
-
}, typeof column.Header === 'function' ? column.Header(headerProp) : column.Header);
|
35
|
+
}, typeof column.Header === 'function' ? (column === null || column === void 0 ? void 0 : column.Header.bind(column))(headerProp) : column.Header);
|
35
36
|
};
|
36
37
|
var rightAlignedColumns = function rightAlignedColumns(columns) {
|
37
38
|
var columnsWithDefaultCells = columns.map(function (column) {
|
@@ -1,2 +1,9 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright IBM Corp. 2022, 2024
|
3
|
+
*
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
6
|
+
*/
|
7
|
+
import { Hooks } from 'react-table';
|
8
|
+
declare const useInlineEdit: (hooks: Hooks) => void;
|
1
9
|
export default useInlineEdit;
|
2
|
-
declare function useInlineEdit(hooks: any): void;
|
@@ -23,12 +23,30 @@ var blockClass = "".concat(settings.pkg.prefix, "--datagrid");
|
|
23
23
|
var useNestedRows = function useNestedRows(hooks) {
|
24
24
|
useNestedRowExpander["default"](hooks);
|
25
25
|
var useInstance = function useInstance(instance) {
|
26
|
+
React.useEffect(function () {
|
27
|
+
var _ref = instance,
|
28
|
+
rows = _ref.rows;
|
29
|
+
var defaultExpandedRows = rows.filter(function (row) {
|
30
|
+
var _row$original;
|
31
|
+
return row === null || row === void 0 || (_row$original = row.original) === null || _row$original === void 0 ? void 0 : _row$original.defaultExpanded;
|
32
|
+
});
|
33
|
+
if (defaultExpandedRows !== null && defaultExpandedRows !== void 0 && defaultExpandedRows.length) {
|
34
|
+
defaultExpandedRows.map(function (defaultExpandedRow) {
|
35
|
+
if (!(defaultExpandedRow !== null && defaultExpandedRow !== void 0 && defaultExpandedRow.isExpanded) && !(defaultExpandedRow !== null && defaultExpandedRow !== void 0 && defaultExpandedRow.hasExpanded)) {
|
36
|
+
var _defaultExpandedRow$t;
|
37
|
+
defaultExpandedRow === null || defaultExpandedRow === void 0 || (_defaultExpandedRow$t = defaultExpandedRow.toggleRowExpanded) === null || _defaultExpandedRow$t === void 0 || _defaultExpandedRow$t.call(defaultExpandedRow);
|
38
|
+
defaultExpandedRow.hasExpanded = true;
|
39
|
+
return;
|
40
|
+
}
|
41
|
+
});
|
42
|
+
}
|
43
|
+
}, [instance, instance.rows]);
|
26
44
|
// This useEffect will expand rows if they exist in the initialState obj
|
27
45
|
React.useEffect(function () {
|
28
46
|
var rows = instance.rows,
|
29
47
|
initialState = instance.initialState;
|
30
|
-
var
|
31
|
-
expandedRowIds =
|
48
|
+
var _ref2 = initialState,
|
49
|
+
expandedRowIds = _ref2.expandedRowIds;
|
32
50
|
if (expandedRowIds) {
|
33
51
|
Object.keys(expandedRowIds).forEach(function (key) {
|
34
52
|
var row = rows.filter(function (r) {
|
@@ -42,14 +60,14 @@ var useNestedRows = function useNestedRows(hooks) {
|
|
42
60
|
}
|
43
61
|
}, [instance]);
|
44
62
|
var marginLeft = 24;
|
45
|
-
var getRowProps = function getRowProps(props,
|
46
|
-
var row =
|
63
|
+
var getRowProps = function getRowProps(props, _ref3) {
|
64
|
+
var row = _ref3.row;
|
47
65
|
return [props, {
|
48
66
|
className: cx__default["default"](_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty({}, "".concat(blockClass, "__carbon-nested-row"), row.depth > 0), "".concat(blockClass, "__carbon-row-expanded"), row.isExpanded))
|
49
67
|
}];
|
50
68
|
};
|
51
|
-
var getRowStyles = function getRowStyles(props,
|
52
|
-
var row =
|
69
|
+
var getRowStyles = function getRowStyles(props, _ref4) {
|
70
|
+
var row = _ref4.row;
|
53
71
|
return [props, {
|
54
72
|
style: {
|
55
73
|
paddingLeft: "".concat(row.depth > 1 ? marginLeft * 2 + (row.depth - 1) * (marginLeft + marginLeft / 3) : row.depth === 1 ? marginLeft * 2 : 0, "px")
|
@@ -59,9 +77,9 @@ var useNestedRows = function useNestedRows(hooks) {
|
|
59
77
|
var getIndentation = function getIndentation(depth) {
|
60
78
|
return 32 * depth + 16;
|
61
79
|
}; // row indentation padding
|
62
|
-
var getCellProps = function getCellProps(props,
|
63
|
-
var cell =
|
64
|
-
instance =
|
80
|
+
var getCellProps = function getCellProps(props, _ref5) {
|
81
|
+
var cell = _ref5.cell,
|
82
|
+
instance = _ref5.instance;
|
65
83
|
// we add a dynamic -ve margin right only if the cell is resized below minimum width i.e 50px, else we set the width based on indentation at different levels
|
66
84
|
var isFirstCell = instance.columns.findIndex(function (c) {
|
67
85
|
return c.id === cell.column.id;
|
@@ -95,7 +95,8 @@ exports.Decorator.propTypes = {
|
|
95
95
|
*/
|
96
96
|
small: index["default"].bool,
|
97
97
|
/**
|
98
|
-
*
|
98
|
+
* Override the default theme of the component.
|
99
|
+
* Useful if you want "invert" the component's theme.
|
99
100
|
*/
|
100
101
|
theme: index["default"].oneOf(['light', 'dark']),
|
101
102
|
/**
|
@@ -32,8 +32,7 @@ var defaults = {
|
|
32
32
|
onContextMenu: function onContextMenu() {},
|
33
33
|
onContextMenuLabel: function onContextMenuLabel() {},
|
34
34
|
onContextMenuValue: function onContextMenuValue() {},
|
35
|
-
scoreThresholds: [0, 4, 7, 10]
|
36
|
-
theme: 'light'
|
35
|
+
scoreThresholds: [0, 4, 7, 10]
|
37
36
|
};
|
38
37
|
|
39
38
|
/**
|
@@ -65,8 +64,7 @@ var DecoratorBase = /*#__PURE__*/React__default["default"].forwardRef(function (
|
|
65
64
|
_ref$scoreThresholds = _ref.scoreThresholds,
|
66
65
|
scoreThresholds = _ref$scoreThresholds === void 0 ? defaults.scoreThresholds : _ref$scoreThresholds,
|
67
66
|
small = _ref.small,
|
68
|
-
|
69
|
-
theme = _ref$theme === void 0 ? defaults.theme : _ref$theme,
|
67
|
+
theme = _ref.theme,
|
70
68
|
truncateValue = _ref.truncateValue,
|
71
69
|
value = _ref.value,
|
72
70
|
valueTitle = _ref.valueTitle,
|
@@ -76,7 +74,7 @@ var DecoratorBase = /*#__PURE__*/React__default["default"].forwardRef(function (
|
|
76
74
|
var _value = utils.truncate(value, truncateValue);
|
77
75
|
|
78
76
|
// These class names apply to all types of DecoratorBase.
|
79
|
-
var classNames = cx__default["default"](blockClass, className,
|
77
|
+
var classNames = cx__default["default"](blockClass, className, _rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty({}, "".concat(blockClass, "--").concat(theme), theme), "".concat(blockClass, "--sm"), small), "".concat(blockClass, "--truncate-end"), truncateValue === 'end'), "".concat(blockClass, "--truncate-start"), truncateValue === 'start'), "".concat(blockClass, "--truncate-midline"), truncateValue === null || truncateValue === void 0 ? void 0 : truncateValue.maxLength));
|
80
78
|
|
81
79
|
// These properties apply to all <DecoratorIcons>.
|
82
80
|
var decoratorIconsProps = {
|
@@ -119,7 +119,8 @@ exports.DecoratorDualButton.propTypes = {
|
|
119
119
|
*/
|
120
120
|
small: index["default"].bool,
|
121
121
|
/**
|
122
|
-
*
|
122
|
+
* Override the default theme of the component.
|
123
|
+
* Useful if you want "invert" the component's theme.
|
123
124
|
*/
|
124
125
|
theme: index["default"].oneOf(['light', 'dark']),
|
125
126
|
/**
|
@@ -109,7 +109,8 @@ exports.DecoratorLink.propTypes = {
|
|
109
109
|
*/
|
110
110
|
small: index["default"].bool,
|
111
111
|
/**
|
112
|
-
*
|
112
|
+
* Override the default theme of the component.
|
113
|
+
* Useful if you want "invert" the component's theme.
|
113
114
|
*/
|
114
115
|
theme: index["default"].oneOf(['light', 'dark']),
|
115
116
|
/**
|
@@ -109,7 +109,8 @@ exports.DecoratorSingleButton.propTypes = {
|
|
109
109
|
*/
|
110
110
|
small: index["default"].bool,
|
111
111
|
/**
|
112
|
-
*
|
112
|
+
* Override the default theme of the component.
|
113
|
+
* Useful if you want "invert" the component's theme.
|
113
114
|
*/
|
114
115
|
theme: index["default"].oneOf(['light', 'dark']),
|
115
116
|
/**
|
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": "2.43.2-canary.
|
4
|
+
"version": "2.43.2-canary.12+b9055f1a5",
|
5
5
|
"license": "Apache-2.0",
|
6
6
|
"main": "lib/index.js",
|
7
7
|
"module": "es/index.js",
|
@@ -88,7 +88,7 @@
|
|
88
88
|
"rimraf": "^5.0.5",
|
89
89
|
"rollup": "^2.79.1",
|
90
90
|
"rollup-plugin-strip-banner": "^3.0.0",
|
91
|
-
"sass": "^1.
|
91
|
+
"sass": "^1.77.2",
|
92
92
|
"typescript-config-carbon": "^0.2.1",
|
93
93
|
"yargs": "^17.7.2"
|
94
94
|
},
|
@@ -119,5 +119,5 @@
|
|
119
119
|
"react": "^16.8.6 || ^17.0.1 || ^18.2.0",
|
120
120
|
"react-dom": "^16.8.6 || ^17.0.1 || ^18.2.0"
|
121
121
|
},
|
122
|
-
"gitHead": "
|
122
|
+
"gitHead": "b9055f1a58d6b8c093b418db05a7768000e6944f"
|
123
123
|
}
|
@@ -73,7 +73,7 @@ $themes: ('light', 'dark');
|
|
73
73
|
|
74
74
|
$block-class: #{$pkg-prefix}--status-icon;
|
75
75
|
|
76
|
-
@function
|
76
|
+
@function carbon-clr($name, $theme: light) {
|
77
77
|
// stylelint-disable-next-line carbon/theme-token-use
|
78
78
|
$color: map-get(map-get($colors, $name), $theme);
|
79
79
|
@return $color;
|
@@ -125,13 +125,13 @@ $block-class: #{$pkg-prefix}--status-icon;
|
|
125
125
|
// stylelint-disable-next-line carbon/motion-duration-use, carbon/motion-easing-use
|
126
126
|
animation: rotating 8000ms infinite linear;
|
127
127
|
// stylelint-disable-next-line carbon/theme-token-use
|
128
|
-
fill:
|
128
|
+
fill: carbon-clr($icon, $theme);
|
129
129
|
} @else if $icon == running {
|
130
130
|
// stylelint-disable-next-line carbon/theme-token-use
|
131
|
-
fill:
|
131
|
+
fill: carbon-clr($icon, $theme);
|
132
132
|
} @else {
|
133
133
|
// stylelint-disable-next-line carbon/theme-token-use
|
134
|
-
fill:
|
134
|
+
fill: carbon-clr($icon, $theme);
|
135
135
|
@media (prefers-reduced-motion) {
|
136
136
|
.#{$block-class}--#{$theme}.#{$block-class}--#{$theme-key}-in-progress {
|
137
137
|
animation: none;
|