@carbon/ibm-products 2.43.1 → 2.43.2-canary.11
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 +32 -13
- 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/hooks/useSpreadsheetOutsideClick.d.ts +2 -1
- package/es/components/DataSpreadsheet/hooks/useSpreadsheetOutsideClick.js +4 -3
- package/es/components/DataSpreadsheet/types/index.d.ts +2 -1
- package/es/components/DataSpreadsheet/utils/moveColumnIndicatorLine.js +34 -2
- package/es/components/Datagrid/types/index.d.ts +5 -1
- package/es/components/Datagrid/useColumnCenterAlign.d.ts +8 -1
- package/es/components/Datagrid/useColumnCenterAlign.js +1 -1
- package/es/components/Datagrid/useInlineEdit.d.ts +8 -1
- package/es/components/Datagrid/useInlineEdit.js +1 -1
- 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 +32 -13
- 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/hooks/useSpreadsheetOutsideClick.d.ts +2 -1
- package/lib/components/DataSpreadsheet/hooks/useSpreadsheetOutsideClick.js +4 -3
- package/lib/components/DataSpreadsheet/types/index.d.ts +2 -1
- package/lib/components/DataSpreadsheet/utils/moveColumnIndicatorLine.js +34 -2
- package/lib/components/Datagrid/types/index.d.ts +5 -1
- package/lib/components/Datagrid/useColumnCenterAlign.d.ts +8 -1
- package/lib/components/Datagrid/useColumnCenterAlign.js +1 -1
- package/lib/components/Datagrid/useInlineEdit.d.ts +8 -1
- package/lib/components/Datagrid/useInlineEdit.js +1 -1
- 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 +4 -4
- 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
@@ -114,22 +114,28 @@ var DataSpreadsheet = /*#__PURE__*/React__default.forwardRef(function (_ref, ref
|
|
114
114
|
setHeaderCellHoldActive = _useState18[1];
|
115
115
|
var _useState19 = useState(false),
|
116
116
|
_useState20 = _slicedToArray(_useState19, 2),
|
117
|
-
|
118
|
-
|
117
|
+
selectedHeaderReorderActive = _useState20[0],
|
118
|
+
setSelectedHeaderReorderActive = _useState20[1];
|
119
|
+
var isBlurSpreadsheet = useRef(false);
|
119
120
|
var _useState21 = useState(false),
|
120
121
|
_useState22 = _slicedToArray(_useState21, 2),
|
121
|
-
|
122
|
-
|
122
|
+
isActiveHeaderCellChanged = _useState22[0],
|
123
|
+
setIsActiveHeaderCellChanged = _useState22[1];
|
124
|
+
var _useState23 = useState(false),
|
125
|
+
_useState24 = _slicedToArray(_useState23, 2),
|
126
|
+
activeCellInsideSelectionArea = _useState24[0],
|
127
|
+
setActiveCellInsideSelectionArea = _useState24[1];
|
123
128
|
var previousState = usePreviousValue({
|
124
129
|
activeCellCoordinates: activeCellCoordinates,
|
125
|
-
isEditing: isEditing
|
130
|
+
isEditing: isEditing,
|
131
|
+
cellEditorValue: cellEditorValue
|
126
132
|
}) || {};
|
127
133
|
var cellSizeValue = getCellSize(cellSize);
|
128
134
|
var cellEditorRef = useRef();
|
129
|
-
var
|
130
|
-
|
131
|
-
activeCellContent =
|
132
|
-
setActiveCellContent =
|
135
|
+
var _useState25 = useState(),
|
136
|
+
_useState26 = _slicedToArray(_useState25, 2),
|
137
|
+
activeCellContent = _useState26[0],
|
138
|
+
setActiveCellContent = _useState26[1];
|
133
139
|
var activeCellRef = useRef();
|
134
140
|
var cellEditorRulerRef = useRef();
|
135
141
|
var defaultColumn = useMemo(function () {
|
@@ -216,7 +222,13 @@ var DataSpreadsheet = /*#__PURE__*/React__default.forwardRef(function (_ref, ref
|
|
216
222
|
});
|
217
223
|
}
|
218
224
|
}
|
219
|
-
|
225
|
+
// For when we edit and focus out of data spreadsheet
|
226
|
+
if (isEditing && previousState.activeCellCoordinates && isBlurSpreadsheet.current) {
|
227
|
+
setActiveCellContent(previousState.cellEditorValue);
|
228
|
+
isBlurSpreadsheet.current = false;
|
229
|
+
removeCellEditor();
|
230
|
+
}
|
231
|
+
}, [isBlurSpreadsheet, activeCellCoordinates, previousState === null || previousState === void 0 ? void 0 : previousState.activeCellCoordinates, previousState === null || previousState === void 0 ? void 0 : previousState.cellEditorValue, updateData, rows, isEditing, removeCellEditor, activeCellContent]);
|
220
232
|
var createActiveCell = useCallback(function (_ref3) {
|
221
233
|
var placementElement = _ref3.placementElement,
|
222
234
|
coords = _ref3.coords,
|
@@ -243,6 +255,7 @@ var DataSpreadsheet = /*#__PURE__*/React__default.forwardRef(function (_ref, ref
|
|
243
255
|
setContainerHasFocus: setContainerHasFocus
|
244
256
|
});
|
245
257
|
useSpreadsheetOutsideClick({
|
258
|
+
isBlurSpreadsheet: isBlurSpreadsheet,
|
246
259
|
spreadsheetRef: spreadsheetRef,
|
247
260
|
setActiveCellCoordinates: setActiveCellCoordinates,
|
248
261
|
setSelectionAreas: setSelectionAreas,
|
@@ -606,6 +619,8 @@ var DataSpreadsheet = /*#__PURE__*/React__default.forwardRef(function (_ref, ref
|
|
606
619
|
columns: columns,
|
607
620
|
currentMatcher: currentMatcher,
|
608
621
|
defaultColumn: defaultColumn,
|
622
|
+
selectedHeaderReorderActive: selectedHeaderReorderActive,
|
623
|
+
setSelectedHeaderReorderActive: setSelectedHeaderReorderActive,
|
609
624
|
headerGroups: headerGroups,
|
610
625
|
rows: rows,
|
611
626
|
scrollBarSize: scrollBarSize,
|
@@ -629,6 +644,8 @@ var DataSpreadsheet = /*#__PURE__*/React__default.forwardRef(function (_ref, ref
|
|
629
644
|
currentMatcher: currentMatcher,
|
630
645
|
setCurrentMatcher: setCurrentMatcher,
|
631
646
|
setContainerHasFocus: setContainerHasFocus,
|
647
|
+
selectedHeaderReorderActive: selectedHeaderReorderActive,
|
648
|
+
setSelectedHeaderReorderActive: setSelectedHeaderReorderActive,
|
632
649
|
selectionAreas: selectionAreas,
|
633
650
|
setSelectionAreas: setSelectionAreas,
|
634
651
|
headerGroups: headerGroups,
|
@@ -679,9 +696,11 @@ var DataSpreadsheet = /*#__PURE__*/React__default.forwardRef(function (_ref, ref
|
|
679
696
|
updateData: updateData
|
680
697
|
}),
|
681
698
|
onChange: function onChange(event) {
|
682
|
-
|
683
|
-
|
684
|
-
cellEditorRulerRef.current
|
699
|
+
if (previousState.isEditing) {
|
700
|
+
setCellEditorValue(event.target.value);
|
701
|
+
if (cellEditorRulerRef !== null && cellEditorRulerRef !== void 0 && cellEditorRulerRef.current) {
|
702
|
+
cellEditorRulerRef.current.textContent = event.target.value;
|
703
|
+
}
|
685
704
|
}
|
686
705
|
},
|
687
706
|
ref: cellEditorRef,
|
@@ -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
|
*/
|
@@ -40,6 +40,8 @@ var DataSpreadsheetBody = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
40
40
|
selectionAreaData = _ref.selectionAreaData,
|
41
41
|
setSelectionAreaData = _ref.setSelectionAreaData,
|
42
42
|
setActiveCellCoordinates = _ref.setActiveCellCoordinates,
|
43
|
+
selectedHeaderReorderActive = _ref.selectedHeaderReorderActive,
|
44
|
+
setSelectedHeaderReorderActive = _ref.setSelectedHeaderReorderActive,
|
43
45
|
selectionAreas = _ref.selectionAreas,
|
44
46
|
setContainerHasFocus = _ref.setContainerHasFocus,
|
45
47
|
setSelectionAreas = _ref.setSelectionAreas,
|
@@ -75,8 +77,12 @@ var DataSpreadsheetBody = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
75
77
|
// back to the consumer
|
76
78
|
useEffect(function () {
|
77
79
|
if (selectionAreaData !== null && selectionAreaData !== void 0 && selectionAreaData.length) {
|
78
|
-
var _previousState$select;
|
79
|
-
|
80
|
+
var _previousState$select, _selectionAreaData$, _previousState$select2;
|
81
|
+
var selectionChanged = false;
|
82
|
+
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)) {
|
83
|
+
selectionChanged = true;
|
84
|
+
}
|
85
|
+
if (!clickAndHoldActive && previousState !== null && previousState !== void 0 && previousState.clickAndHoldActive || selectionChanged) {
|
80
86
|
onSelectionAreaChange === null || onSelectionAreaChange === void 0 || onSelectionAreaChange(selectionAreaData);
|
81
87
|
}
|
82
88
|
}
|
@@ -151,6 +157,8 @@ var DataSpreadsheetBody = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
151
157
|
setClickAndHoldActive: setClickAndHoldActive,
|
152
158
|
setSelectionAreas: setSelectionAreas,
|
153
159
|
setValidStartingPoint: setValidStartingPoint,
|
160
|
+
selectedHeaderReorderActive: selectedHeaderReorderActive,
|
161
|
+
setSelectedHeaderReorderActive: setSelectedHeaderReorderActive,
|
154
162
|
validStartingPoint: validStartingPoint,
|
155
163
|
ref: ref,
|
156
164
|
setHeaderCellHoldActive: setHeaderCellHoldActive,
|
@@ -457,6 +465,10 @@ DataSpreadsheetBody.propTypes = {
|
|
457
465
|
* The scrollbar width
|
458
466
|
*/
|
459
467
|
scrollBarSize: PropTypes.number,
|
468
|
+
/**
|
469
|
+
* Header reordering is active
|
470
|
+
*/
|
471
|
+
selectedHeaderReorderActive: PropTypes.bool,
|
460
472
|
/**
|
461
473
|
* Array of selection area data
|
462
474
|
*/
|
@@ -493,6 +505,10 @@ DataSpreadsheetBody.propTypes = {
|
|
493
505
|
* Setter fn for header cell hold active value
|
494
506
|
*/
|
495
507
|
setHeaderCellHoldActive: PropTypes.func,
|
508
|
+
/**
|
509
|
+
* Set header reordering active or not
|
510
|
+
*/
|
511
|
+
setSelectedHeaderReorderActive: PropTypes.func,
|
496
512
|
/**
|
497
513
|
* Setter fn for selectionAreaData state value
|
498
514
|
*/
|
@@ -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
|
*/
|
@@ -31,6 +31,8 @@ var DataSpreadsheetHeader = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
31
31
|
headerGroups = _ref.headerGroups,
|
32
32
|
scrollBarSize = _ref.scrollBarSize,
|
33
33
|
selectionAreas = _ref.selectionAreas,
|
34
|
+
selectedHeaderReorderActive = _ref.selectedHeaderReorderActive,
|
35
|
+
setSelectedHeaderReorderActive = _ref.setSelectedHeaderReorderActive,
|
34
36
|
setActiveCellCoordinates = _ref.setActiveCellCoordinates,
|
35
37
|
setCurrentMatcher = _ref.setCurrentMatcher,
|
36
38
|
setSelectionAreas = _ref.setSelectionAreas,
|
@@ -46,10 +48,6 @@ var DataSpreadsheetHeader = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
46
48
|
_useState2 = _slicedToArray(_useState, 2),
|
47
49
|
scrollBarSizeValue = _useState2[0],
|
48
50
|
setScrollBarSizeValue = _useState2[1];
|
49
|
-
var _useState3 = useState(false),
|
50
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
51
|
-
selectedHeaderReorderActive = _useState4[0],
|
52
|
-
setSelectedHeaderReorderActive = _useState4[1];
|
53
51
|
var previousState = usePreviousValue({
|
54
52
|
cellSize: cellSize
|
55
53
|
}) || {};
|
@@ -107,11 +105,16 @@ var DataSpreadsheetHeader = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
107
105
|
// Remove columns, need to call handleHeaderCellSelection
|
108
106
|
return;
|
109
107
|
}
|
110
|
-
setSelectedHeaderReorderActive(true);
|
111
108
|
var selectionAreaToClone = selectionAreas === null || selectionAreas === void 0 ? void 0 : selectionAreas.filter(function (item) {
|
112
109
|
return (item === null || item === void 0 ? void 0 : item.matcher) === currentMatcher;
|
113
110
|
});
|
114
111
|
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, "\"]"));
|
112
|
+
if (selectionAreaElement) {
|
113
|
+
selectionAreaElement.classList.add("".concat(blockClass, "__selection-area--element"));
|
114
|
+
}
|
115
|
+
if (typeof setSelectedHeaderReorderActive === 'function') {
|
116
|
+
setSelectedHeaderReorderActive(true);
|
117
|
+
}
|
115
118
|
var clickXPosition = event.clientX;
|
116
119
|
var headerButtonCoords = event.target.getBoundingClientRect();
|
117
120
|
var headerIndex = event.target.getAttribute('data-column-index');
|
@@ -189,7 +192,7 @@ var DataSpreadsheetHeader = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
189
192
|
"data-column-index": index,
|
190
193
|
tabIndex: -1,
|
191
194
|
onMouseDown: selectedHeader ? handleHeaderMouseDown(index) : undefined,
|
192
|
-
onMouseUp: selectedHeader ? function () {
|
195
|
+
onMouseUp: selectedHeader && typeof setSelectedHeaderReorderActive === 'function' ? function () {
|
193
196
|
return setSelectedHeaderReorderActive(false);
|
194
197
|
} : undefined,
|
195
198
|
onClick: !selectedHeader ? handleColumnHeaderClick(index) : undefined,
|
@@ -254,6 +257,10 @@ DataSpreadsheetHeader.propTypes = {
|
|
254
257
|
* The aria label applied to the Select all button
|
255
258
|
*/
|
256
259
|
selectAllAriaLabel: PropTypes.string.isRequired,
|
260
|
+
/**
|
261
|
+
* Header reordering is active
|
262
|
+
*/
|
263
|
+
selectedHeaderReorderActive: PropTypes.bool,
|
257
264
|
/**
|
258
265
|
* All of the cell selection area items
|
259
266
|
*/
|
@@ -271,6 +278,10 @@ DataSpreadsheetHeader.propTypes = {
|
|
271
278
|
* Setter fn for header cell hold active value
|
272
279
|
*/
|
273
280
|
setHeaderCellHoldActive: PropTypes.func,
|
281
|
+
/**
|
282
|
+
* Set header reordering active or not
|
283
|
+
*/
|
284
|
+
setSelectedHeaderReorderActive: PropTypes.func,
|
274
285
|
/**
|
275
286
|
* Setter fn for selectionAreaData state value
|
276
287
|
*/
|
@@ -40,9 +40,12 @@ var useSpreadsheetMouseMove = function useSpreadsheetMouseMove(_ref) {
|
|
40
40
|
var totalSpreadsheetScrollingWidth = listContainer.scrollWidth;
|
41
41
|
var clonedSelectionWidth = clonedSelectionElement.offsetWidth;
|
42
42
|
var clonePlacement = Math.max(xPositionRelativeToSpreadsheet - offsetXValue, defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeaderWidth);
|
43
|
+
var leftPosition = totalSpreadsheetScrollingWidth - clonedSelectionWidth >= clonePlacement ? clonePlacement + scrollAmount : totalSpreadsheetScrollingWidth - clonedSelectionWidth;
|
43
44
|
// Moves the position of the cloned selection area to follow mouse, and
|
44
45
|
// add the amount horizontally scrolled
|
45
|
-
|
46
|
+
if (leftPosition < spreadsheetCoords.right - 40) {
|
47
|
+
clonedSelectionElement.style.left = px(leftPosition);
|
48
|
+
}
|
46
49
|
};
|
47
50
|
if (headerCellHoldActive) {
|
48
51
|
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;
|
@@ -14,6 +14,8 @@ import { deepCloneObject } from '../../../global/js/utils/deepCloneObject.js';
|
|
14
14
|
var useSpreadsheetMouseUp = function useSpreadsheetMouseUp(_ref) {
|
15
15
|
var currentMatcher = _ref.currentMatcher,
|
16
16
|
setSelectionAreas = _ref.setSelectionAreas,
|
17
|
+
selectedHeaderReorderActive = _ref.selectedHeaderReorderActive,
|
18
|
+
setSelectedHeaderReorderActive = _ref.setSelectedHeaderReorderActive,
|
17
19
|
setClickAndHoldActive = _ref.setClickAndHoldActive,
|
18
20
|
setValidStartingPoint = _ref.setValidStartingPoint,
|
19
21
|
validStartingPoint = _ref.validStartingPoint,
|
@@ -30,15 +32,22 @@ var useSpreadsheetMouseUp = function useSpreadsheetMouseUp(_ref) {
|
|
30
32
|
selectionAreas = _ref.selectionAreas;
|
31
33
|
useEffect(function () {
|
32
34
|
var handleMouseUp = function handleMouseUp(event) {
|
35
|
+
var _selectionAreas$;
|
36
|
+
var isHoldingColumn = false;
|
37
|
+
if (selectionAreas !== null && selectionAreas !== void 0 && (_selectionAreas$ = selectionAreas[0]) !== null && _selectionAreas$ !== void 0 && _selectionAreas$.header && selectionAreas[0].header.type === 'column') {
|
38
|
+
isHoldingColumn = true;
|
39
|
+
}
|
33
40
|
// Remove the cloned selection area on mouse up
|
34
|
-
if (!validStartingPoint) {
|
41
|
+
if (!validStartingPoint && isHoldingColumn) {
|
35
42
|
setHeaderCellHoldActive(false);
|
43
|
+
var selectionAreaElement = ref.current.querySelector(".".concat(blockClass, "__selection-area--element"));
|
36
44
|
var selectionAreaCloneElement = ref.current.querySelector(".".concat(blockClass, "__selection-area--element-cloned"));
|
37
45
|
if (!selectionAreaCloneElement) {
|
38
46
|
return;
|
39
47
|
}
|
40
48
|
// Mouse up while a cloned selection area exists/a column is being reordered
|
41
49
|
if (selectionAreaCloneElement) {
|
50
|
+
var _selectionAreaElement;
|
42
51
|
var closestCell = event.target.closest(".".concat(blockClass, "--interactive-cell-element"));
|
43
52
|
var newColumnIndex = parseInt === null || parseInt === void 0 ? void 0 : parseInt(closestCell === null || closestCell === void 0 ? void 0 : closestCell.getAttribute('data-column-index'));
|
44
53
|
var originalColumnIndex = parseInt === null || parseInt === void 0 ? void 0 : parseInt(selectionAreaCloneElement === null || selectionAreaCloneElement === void 0 ? void 0 : selectionAreaCloneElement.getAttribute('data-column-index-original'));
|
@@ -81,6 +90,7 @@ var useSpreadsheetMouseUp = function useSpreadsheetMouseUp(_ref) {
|
|
81
90
|
selectionAreaClone[indexOfItemToUpdate].point1.column = Math.min.apply(Math, _toConsumableArray(newIndexArray));
|
82
91
|
selectionAreaClone[indexOfItemToUpdate].point2.column = Math.max.apply(Math, _toConsumableArray(newIndexArray));
|
83
92
|
}
|
93
|
+
selectionAreaClone[indexOfItemToUpdate].areaCreated = false;
|
84
94
|
return selectionAreaClone;
|
85
95
|
});
|
86
96
|
// Only reorder columns if the new index is _not_ part of the
|
@@ -125,11 +135,13 @@ var useSpreadsheetMouseUp = function useSpreadsheetMouseUp(_ref) {
|
|
125
135
|
var indicatorLineElement = ref.current.querySelector(".".concat(blockClass, "__reorder-indicator-line"));
|
126
136
|
indicatorLineElement === null || indicatorLineElement === void 0 || indicatorLineElement.remove();
|
127
137
|
selectionAreaCloneElement === null || selectionAreaCloneElement === void 0 || selectionAreaCloneElement.remove();
|
138
|
+
selectionAreaElement === null || selectionAreaElement === void 0 || (_selectionAreaElement = selectionAreaElement.classList) === null || _selectionAreaElement === void 0 || _selectionAreaElement.remove("".concat(blockClass, "__selection-area--element"));
|
139
|
+
setSelectedHeaderReorderActive(false);
|
128
140
|
}
|
129
141
|
}
|
130
142
|
// Mouse up was on a spreadsheet body cell which is a valid
|
131
143
|
// start/end point for creating a selection area
|
132
|
-
if (validStartingPoint) {
|
144
|
+
if (validStartingPoint || event.type === 'mouseup') {
|
133
145
|
setClickAndHoldActive(false);
|
134
146
|
setValidStartingPoint(false);
|
135
147
|
var cellButton = event.target.closest(".".concat(blockClass, "__body--td"));
|
@@ -158,7 +170,7 @@ var useSpreadsheetMouseUp = function useSpreadsheetMouseUp(_ref) {
|
|
158
170
|
return function () {
|
159
171
|
document.removeEventListener('mouseup', handleMouseUp);
|
160
172
|
};
|
161
|
-
}, [blockClass, currentMatcher, setSelectionAreas, setClickAndHoldActive, setValidStartingPoint, validStartingPoint, ref, setHeaderCellHoldActive, setColumnOrder, visibleColumns, setActiveCellCoordinates, activeCellCoordinates, rows, defaultColumn, selectionAreas]);
|
173
|
+
}, [blockClass, currentMatcher, setSelectionAreas, setClickAndHoldActive, setValidStartingPoint, validStartingPoint, selectedHeaderReorderActive, setSelectedHeaderReorderActive, ref, setHeaderCellHoldActive, setColumnOrder, visibleColumns, setActiveCellCoordinates, activeCellCoordinates, rows, defaultColumn, selectionAreas]);
|
162
174
|
};
|
163
175
|
|
164
176
|
export { useSpreadsheetMouseUp };
|
@@ -1,4 +1,5 @@
|
|
1
|
-
export function useSpreadsheetOutsideClick({ spreadsheetRef, blockClass, setActiveCellCoordinates, setSelectionAreas, removeActiveCell, setContainerHasFocus, removeCellEditor, }: {
|
1
|
+
export function useSpreadsheetOutsideClick({ isBlurSpreadsheet, spreadsheetRef, blockClass, setActiveCellCoordinates, setSelectionAreas, removeActiveCell, setContainerHasFocus, removeCellEditor, }: {
|
2
|
+
isBlurSpreadsheet: any;
|
2
3
|
spreadsheetRef: any;
|
3
4
|
blockClass?: string | undefined;
|
4
5
|
setActiveCellCoordinates: any;
|
@@ -11,7 +11,8 @@ import { removeCellSelections } from '../utils/removeCellSelections.js';
|
|
11
11
|
|
12
12
|
// Click outside useEffect for spreadsheet
|
13
13
|
var useSpreadsheetOutsideClick = function useSpreadsheetOutsideClick(_ref) {
|
14
|
-
var
|
14
|
+
var isBlurSpreadsheet = _ref.isBlurSpreadsheet,
|
15
|
+
spreadsheetRef = _ref.spreadsheetRef,
|
15
16
|
_ref$blockClass = _ref.blockClass,
|
16
17
|
blockClass = _ref$blockClass === void 0 ? "".concat(pkg.prefix, "--data-spreadsheet") : _ref$blockClass,
|
17
18
|
setActiveCellCoordinates = _ref.setActiveCellCoordinates,
|
@@ -24,6 +25,7 @@ var useSpreadsheetOutsideClick = function useSpreadsheetOutsideClick(_ref) {
|
|
24
25
|
if (!spreadsheetRef.current || spreadsheetRef.current.contains(event.target) || event.target.classList.contains("".concat(blockClass, "__active-cell--highlight")) || event.target.classList.contains("".concat(blockClass, "--interactive-cell-element"))) {
|
25
26
|
return;
|
26
27
|
}
|
28
|
+
isBlurSpreadsheet.current = true;
|
27
29
|
setActiveCellCoordinates(null);
|
28
30
|
setSelectionAreas([]);
|
29
31
|
removeActiveCell();
|
@@ -31,13 +33,12 @@ var useSpreadsheetOutsideClick = function useSpreadsheetOutsideClick(_ref) {
|
|
31
33
|
spreadsheetRef: spreadsheetRef
|
32
34
|
});
|
33
35
|
setContainerHasFocus(false);
|
34
|
-
removeCellEditor();
|
35
36
|
};
|
36
37
|
document.addEventListener('click', handleOutsideClick);
|
37
38
|
return function () {
|
38
39
|
document.removeEventListener('click', handleOutsideClick);
|
39
40
|
};
|
40
|
-
}, [spreadsheetRef, removeActiveCell, blockClass, setActiveCellCoordinates, setContainerHasFocus, setSelectionAreas, removeCellEditor]);
|
41
|
+
}, [isBlurSpreadsheet, spreadsheetRef, removeActiveCell, blockClass, setActiveCellCoordinates, setContainerHasFocus, setSelectionAreas, removeCellEditor]);
|
41
42
|
};
|
42
43
|
|
43
44
|
export { useSpreadsheetOutsideClick };
|
@@ -10,9 +10,10 @@ export interface ActiveCellCoordinates {
|
|
10
10
|
column?: number | string;
|
11
11
|
}
|
12
12
|
export interface PrevState {
|
13
|
+
cellEditorValue?: string;
|
13
14
|
activeCellCoordinates?: ActiveCellCoordinates;
|
14
15
|
isEditing?: boolean;
|
15
|
-
selectionAreaData?:
|
16
|
+
selectionAreaData?: any[];
|
16
17
|
clickAndHoldActive?: boolean;
|
17
18
|
rowHeight?: number;
|
18
19
|
cellSize?: Size;
|
@@ -22,11 +22,43 @@ var moveColumnIndicatorLine = function moveColumnIndicatorLine(_ref) {
|
|
22
22
|
var indicatorLineElement = ref.current.querySelector(".".concat(blockClass, "__reorder-indicator-line"));
|
23
23
|
var matcherId = clonedSelectionElement === null || clonedSelectionElement === void 0 ? void 0 : clonedSelectionElement.getAttribute('data-matcher-id');
|
24
24
|
var selectionAreaOrigin = ref.current.querySelector("[data-matcher-id=\"".concat(matcherId, "\"]"));
|
25
|
+
var listContainer = ref.current.querySelector(".".concat(blockClass, "__list--container"));
|
26
|
+
var scrollSpeed = 10; // Scrolling speed
|
27
|
+
var leftEdgeThreshold = 120; // Distance from the left edge to start scrolling
|
28
|
+
var rightEdgeThreshold = 100; // Distance from the right edge to start scrolling
|
29
|
+
|
30
|
+
var _event = event,
|
31
|
+
clientX = _event.clientX;
|
32
|
+
var _listContainer$getBou = listContainer.getBoundingClientRect(),
|
33
|
+
left = _listContainer$getBou.left,
|
34
|
+
right = _listContainer$getBou.right;
|
35
|
+
|
36
|
+
// Is near left side of viewport
|
37
|
+
if (clientX < leftEdgeThreshold) {
|
38
|
+
window.scrollBy(-scrollSpeed, 0);
|
39
|
+
}
|
40
|
+
|
41
|
+
// Is near right side of viewport
|
42
|
+
if (clientX > window.innerWidth - rightEdgeThreshold) {
|
43
|
+
window.scrollBy(scrollSpeed, 0);
|
44
|
+
}
|
45
|
+
|
46
|
+
// Is near left edge of table
|
47
|
+
if (clientX > left && clientX < left + leftEdgeThreshold) {
|
48
|
+
listContainer.scrollBy(-scrollSpeed, 0);
|
49
|
+
}
|
50
|
+
|
51
|
+
// Is near right edge of table
|
52
|
+
if (clientX < right && clientX > right - rightEdgeThreshold) {
|
53
|
+
listContainer.scrollBy(scrollSpeed, 0);
|
54
|
+
}
|
25
55
|
if (Number(newColumnIndex) > Number(originalColumnIndex)) {
|
26
|
-
|
56
|
+
var leftPosition = closestCellCoords.left - spreadsheetCoords.left + closestCell.offsetWidth - 2 + leftScrollAmount;
|
57
|
+
indicatorLineElement.style.left = px(leftPosition);
|
27
58
|
}
|
28
59
|
if (Number(newColumnIndex) < Number(originalColumnIndex)) {
|
29
|
-
|
60
|
+
var _leftPosition = closestCellCoords.left - spreadsheetCoords.left + leftScrollAmount;
|
61
|
+
indicatorLineElement.style.left = px(_leftPosition);
|
30
62
|
}
|
31
63
|
if (Number(newColumnIndex) === Number(originalColumnIndex)) {
|
32
64
|
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, 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';
|
@@ -88,6 +88,8 @@ export interface DatagridTableHooks<T extends object = any> extends UseTableHook
|
|
88
88
|
export interface DatagridColumn<T extends object = any> extends ColumnInstance<T> {
|
89
89
|
sticky?: 'left' | 'right';
|
90
90
|
className?: string;
|
91
|
+
disableSortBy?: boolean;
|
92
|
+
centerAlignedColumn?: boolean;
|
91
93
|
}
|
92
94
|
export interface DataGridCell<T extends object = any> extends Omit<Cell<T>, 'column'> {
|
93
95
|
column: DatagridColumn<any>;
|
@@ -195,6 +197,7 @@ export interface DataGridState<T extends object = any> extends TableCommonProps,
|
|
195
197
|
expandedRowIds?: object;
|
196
198
|
onRowClick?: (row: any, event: any) => void;
|
197
199
|
onSort?: boolean;
|
200
|
+
column?: DatagridColumn;
|
198
201
|
expandedContentHeight?: number;
|
199
202
|
onRowExpand?: (row: DatagridRow, event: React.MouseEvent<HTMLElement>) => void;
|
200
203
|
ExpandedRowContentComponent?: JSXElementConstructor<any>;
|
@@ -213,4 +216,5 @@ export interface ResizeHeaderProps {
|
|
213
216
|
resizerAriaLabel?: string;
|
214
217
|
isFetching?: boolean;
|
215
218
|
}
|
219
|
+
export type VisibleColumns<T extends object = {}> = (allColumns: Array<ColumnInstance<T>>, meta: Meta<T>) => Array<Column<T>>;
|
216
220
|
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;
|
@@ -15,7 +15,7 @@ var useColumnCenterAlign = function useColumnCenterAlign(hooks) {
|
|
15
15
|
var centerAlignRenderer = function centerAlignRenderer(tableProps, column) {
|
16
16
|
return /*#__PURE__*/React__default.createElement("div", {
|
17
17
|
className: cx("".concat(blockClass, "__center-align-cell-renderer"), {
|
18
|
-
sortDisabled: !tableProps.isTableSortable || tableProps.column.disableSortBy === true
|
18
|
+
sortDisabled: !tableProps.isTableSortable || tableProps.column && tableProps.column.disableSortBy === true
|
19
19
|
})
|
20
20
|
}, column.Cell(tableProps));
|
21
21
|
};
|
@@ -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;
|
@@ -87,7 +87,8 @@ Decorator.propTypes = {
|
|
87
87
|
*/
|
88
88
|
small: PropTypes.bool,
|
89
89
|
/**
|
90
|
-
*
|
90
|
+
* Override the default theme of the component.
|
91
|
+
* Useful if you want "invert" the component's theme.
|
91
92
|
*/
|
92
93
|
theme: PropTypes.oneOf(['light', 'dark']),
|
93
94
|
/**
|
@@ -23,8 +23,7 @@ var defaults = {
|
|
23
23
|
onContextMenu: function onContextMenu() {},
|
24
24
|
onContextMenuLabel: function onContextMenuLabel() {},
|
25
25
|
onContextMenuValue: function onContextMenuValue() {},
|
26
|
-
scoreThresholds: [0, 4, 7, 10]
|
27
|
-
theme: 'light'
|
26
|
+
scoreThresholds: [0, 4, 7, 10]
|
28
27
|
};
|
29
28
|
|
30
29
|
/**
|
@@ -56,8 +55,7 @@ var DecoratorBase = /*#__PURE__*/React__default.forwardRef(function (_ref, ref)
|
|
56
55
|
_ref$scoreThresholds = _ref.scoreThresholds,
|
57
56
|
scoreThresholds = _ref$scoreThresholds === void 0 ? defaults.scoreThresholds : _ref$scoreThresholds,
|
58
57
|
small = _ref.small,
|
59
|
-
|
60
|
-
theme = _ref$theme === void 0 ? defaults.theme : _ref$theme,
|
58
|
+
theme = _ref.theme,
|
61
59
|
truncateValue = _ref.truncateValue,
|
62
60
|
value = _ref.value,
|
63
61
|
valueTitle = _ref.valueTitle,
|
@@ -67,7 +65,7 @@ var DecoratorBase = /*#__PURE__*/React__default.forwardRef(function (_ref, ref)
|
|
67
65
|
var _value = truncate(value, truncateValue);
|
68
66
|
|
69
67
|
// These class names apply to all types of DecoratorBase.
|
70
|
-
var classNames = cx(blockClass, className, "".concat(blockClass, "--").concat(theme),
|
68
|
+
var classNames = cx(blockClass, className, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_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));
|
71
69
|
|
72
70
|
// These properties apply to all <DecoratorIcons>.
|
73
71
|
var decoratorIconsProps = {
|
@@ -111,7 +111,8 @@ DecoratorDualButton.propTypes = {
|
|
111
111
|
*/
|
112
112
|
small: PropTypes.bool,
|
113
113
|
/**
|
114
|
-
*
|
114
|
+
* Override the default theme of the component.
|
115
|
+
* Useful if you want "invert" the component's theme.
|
115
116
|
*/
|
116
117
|
theme: PropTypes.oneOf(['light', 'dark']),
|
117
118
|
/**
|
@@ -101,7 +101,8 @@ DecoratorLink.propTypes = {
|
|
101
101
|
*/
|
102
102
|
small: PropTypes.bool,
|
103
103
|
/**
|
104
|
-
*
|
104
|
+
* Override the default theme of the component.
|
105
|
+
* Useful if you want "invert" the component's theme.
|
105
106
|
*/
|
106
107
|
theme: PropTypes.oneOf(['light', 'dark']),
|
107
108
|
/**
|
@@ -101,7 +101,8 @@ DecoratorSingleButton.propTypes = {
|
|
101
101
|
*/
|
102
102
|
small: PropTypes.bool,
|
103
103
|
/**
|
104
|
-
*
|
104
|
+
* Override the default theme of the component.
|
105
|
+
* Useful if you want "invert" the component's theme.
|
105
106
|
*/
|
106
107
|
theme: PropTypes.oneOf(['light', 'dark']),
|
107
108
|
/**
|