@carbon/ibm-products 2.43.2-canary.3 → 2.43.2-canary.7

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.
@@ -112,15 +112,19 @@ var DataSpreadsheet = /*#__PURE__*/React__default.forwardRef(function (_ref, ref
112
112
  _useState18 = _slicedToArray(_useState17, 2),
113
113
  headerCellHoldActive = _useState18[0],
114
114
  setHeaderCellHoldActive = _useState18[1];
115
- var isBlurSpreadsheet = useRef(false);
116
115
  var _useState19 = useState(false),
117
116
  _useState20 = _slicedToArray(_useState19, 2),
118
- isActiveHeaderCellChanged = _useState20[0],
119
- setIsActiveHeaderCellChanged = _useState20[1];
117
+ selectedHeaderReorderActive = _useState20[0],
118
+ setSelectedHeaderReorderActive = _useState20[1];
119
+ var isBlurSpreadsheet = useRef(false);
120
120
  var _useState21 = useState(false),
121
121
  _useState22 = _slicedToArray(_useState21, 2),
122
- activeCellInsideSelectionArea = _useState22[0],
123
- setActiveCellInsideSelectionArea = _useState22[1];
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];
124
128
  var previousState = usePreviousValue({
125
129
  activeCellCoordinates: activeCellCoordinates,
126
130
  isEditing: isEditing,
@@ -128,10 +132,10 @@ var DataSpreadsheet = /*#__PURE__*/React__default.forwardRef(function (_ref, ref
128
132
  }) || {};
129
133
  var cellSizeValue = getCellSize(cellSize);
130
134
  var cellEditorRef = useRef();
131
- var _useState23 = useState(),
132
- _useState24 = _slicedToArray(_useState23, 2),
133
- activeCellContent = _useState24[0],
134
- setActiveCellContent = _useState24[1];
135
+ var _useState25 = useState(),
136
+ _useState26 = _slicedToArray(_useState25, 2),
137
+ activeCellContent = _useState26[0],
138
+ setActiveCellContent = _useState26[1];
135
139
  var activeCellRef = useRef();
136
140
  var cellEditorRulerRef = useRef();
137
141
  var defaultColumn = useMemo(function () {
@@ -615,6 +619,8 @@ var DataSpreadsheet = /*#__PURE__*/React__default.forwardRef(function (_ref, ref
615
619
  columns: columns,
616
620
  currentMatcher: currentMatcher,
617
621
  defaultColumn: defaultColumn,
622
+ selectedHeaderReorderActive: selectedHeaderReorderActive,
623
+ setSelectedHeaderReorderActive: setSelectedHeaderReorderActive,
618
624
  headerGroups: headerGroups,
619
625
  rows: rows,
620
626
  scrollBarSize: scrollBarSize,
@@ -638,6 +644,8 @@ var DataSpreadsheet = /*#__PURE__*/React__default.forwardRef(function (_ref, ref
638
644
  currentMatcher: currentMatcher,
639
645
  setCurrentMatcher: setCurrentMatcher,
640
646
  setContainerHasFocus: setContainerHasFocus,
647
+ selectedHeaderReorderActive: selectedHeaderReorderActive,
648
+ setSelectedHeaderReorderActive: setSelectedHeaderReorderActive,
641
649
  selectionAreas: selectionAreas,
642
650
  setSelectionAreas: setSelectionAreas,
643
651
  headerGroups: headerGroups,
@@ -79,7 +79,15 @@ interface DataSpreadsheetBodyProps {
79
79
  /**
80
80
  * Array of selection area data
81
81
  */
82
- selectionAreaData?: object[];
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
- if (!clickAndHoldActive && previousState !== null && previousState !== void 0 && previousState.clickAndHoldActive || (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)) {
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
  */
@@ -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 };
@@ -13,7 +13,7 @@ export interface PrevState {
13
13
  cellEditorValue?: string;
14
14
  activeCellCoordinates?: ActiveCellCoordinates;
15
15
  isEditing?: boolean;
16
- selectionAreaData?: object[];
16
+ selectionAreaData?: any[];
17
17
  clickAndHoldActive?: boolean;
18
18
  rowHeight?: number;
19
19
  cellSize?: Size;
@@ -121,15 +121,19 @@ exports.DataSpreadsheet = /*#__PURE__*/React__default["default"].forwardRef(func
121
121
  _useState18 = _rollupPluginBabelHelpers.slicedToArray(_useState17, 2),
122
122
  headerCellHoldActive = _useState18[0],
123
123
  setHeaderCellHoldActive = _useState18[1];
124
- var isBlurSpreadsheet = React.useRef(false);
125
124
  var _useState19 = React.useState(false),
126
125
  _useState20 = _rollupPluginBabelHelpers.slicedToArray(_useState19, 2),
127
- isActiveHeaderCellChanged = _useState20[0],
128
- setIsActiveHeaderCellChanged = _useState20[1];
126
+ selectedHeaderReorderActive = _useState20[0],
127
+ setSelectedHeaderReorderActive = _useState20[1];
128
+ var isBlurSpreadsheet = React.useRef(false);
129
129
  var _useState21 = React.useState(false),
130
130
  _useState22 = _rollupPluginBabelHelpers.slicedToArray(_useState21, 2),
131
- activeCellInsideSelectionArea = _useState22[0],
132
- setActiveCellInsideSelectionArea = _useState22[1];
131
+ isActiveHeaderCellChanged = _useState22[0],
132
+ setIsActiveHeaderCellChanged = _useState22[1];
133
+ var _useState23 = React.useState(false),
134
+ _useState24 = _rollupPluginBabelHelpers.slicedToArray(_useState23, 2),
135
+ activeCellInsideSelectionArea = _useState24[0],
136
+ setActiveCellInsideSelectionArea = _useState24[1];
133
137
  var previousState = usePreviousValue.usePreviousValue({
134
138
  activeCellCoordinates: activeCellCoordinates,
135
139
  isEditing: isEditing,
@@ -137,10 +141,10 @@ exports.DataSpreadsheet = /*#__PURE__*/React__default["default"].forwardRef(func
137
141
  }) || {};
138
142
  var cellSizeValue = getCellSize.getCellSize(cellSize);
139
143
  var cellEditorRef = React.useRef();
140
- var _useState23 = React.useState(),
141
- _useState24 = _rollupPluginBabelHelpers.slicedToArray(_useState23, 2),
142
- activeCellContent = _useState24[0],
143
- setActiveCellContent = _useState24[1];
144
+ var _useState25 = React.useState(),
145
+ _useState26 = _rollupPluginBabelHelpers.slicedToArray(_useState25, 2),
146
+ activeCellContent = _useState26[0],
147
+ setActiveCellContent = _useState26[1];
144
148
  var activeCellRef = React.useRef();
145
149
  var cellEditorRulerRef = React.useRef();
146
150
  var defaultColumn = React.useMemo(function () {
@@ -624,6 +628,8 @@ exports.DataSpreadsheet = /*#__PURE__*/React__default["default"].forwardRef(func
624
628
  columns: columns,
625
629
  currentMatcher: currentMatcher,
626
630
  defaultColumn: defaultColumn,
631
+ selectedHeaderReorderActive: selectedHeaderReorderActive,
632
+ setSelectedHeaderReorderActive: setSelectedHeaderReorderActive,
627
633
  headerGroups: headerGroups,
628
634
  rows: rows,
629
635
  scrollBarSize: scrollBarSize,
@@ -647,6 +653,8 @@ exports.DataSpreadsheet = /*#__PURE__*/React__default["default"].forwardRef(func
647
653
  currentMatcher: currentMatcher,
648
654
  setCurrentMatcher: setCurrentMatcher,
649
655
  setContainerHasFocus: setContainerHasFocus,
656
+ selectedHeaderReorderActive: selectedHeaderReorderActive,
657
+ setSelectedHeaderReorderActive: setSelectedHeaderReorderActive,
650
658
  selectionAreas: selectionAreas,
651
659
  setSelectionAreas: setSelectionAreas,
652
660
  headerGroups: headerGroups,
@@ -79,7 +79,15 @@ interface DataSpreadsheetBodyProps {
79
79
  /**
80
80
  * Array of selection area data
81
81
  */
82
- selectionAreaData?: object[];
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
- if (!clickAndHoldActive && previousState !== null && previousState !== void 0 && previousState.clickAndHoldActive || (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)) {
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
  */
@@ -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?: object[];
16
+ selectionAreaData?: any[];
17
17
  clickAndHoldActive?: boolean;
18
18
  rowHeight?: number;
19
19
  cellSize?: Size;
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.3+0bc2c3d22",
4
+ "version": "2.43.2-canary.7+b2a413a06",
5
5
  "license": "Apache-2.0",
6
6
  "main": "lib/index.js",
7
7
  "module": "es/index.js",
@@ -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": "0bc2c3d226a8de3254a66789b1694154aea54dee"
122
+ "gitHead": "b2a413a067c999839c9481e3fa7d1fd8b1e3d2ff"
123
123
  }