@carbon/ibm-products 1.11.1 → 1.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. package/README.md +0 -3
  2. package/css/index-full-carbon.css +1445 -369
  3. package/css/index-full-carbon.css.map +1 -1
  4. package/css/index-full-carbon.min.css +6 -6
  5. package/css/index-full-carbon.min.css.map +1 -1
  6. package/css/index-without-carbon-released-only.css +15 -6
  7. package/css/index-without-carbon-released-only.css.map +1 -1
  8. package/css/index-without-carbon-released-only.min.css +2 -2
  9. package/css/index-without-carbon-released-only.min.css.map +1 -1
  10. package/css/index-without-carbon.css +109 -16
  11. package/css/index-without-carbon.css.map +1 -1
  12. package/css/index-without-carbon.min.css +5 -5
  13. package/css/index-without-carbon.min.css.map +1 -1
  14. package/css/index.css +109 -16
  15. package/css/index.css.map +1 -1
  16. package/css/index.min.css +6 -6
  17. package/css/index.min.css.map +1 -1
  18. package/es/components/ActionBar/ActionBar.js +3 -1
  19. package/es/components/ActionBar/ActionBarOverflowItems.js +5 -3
  20. package/es/components/AddSelect/AddSelect.js +63 -12
  21. package/es/components/AddSelect/AddSelectColumn.js +0 -1
  22. package/es/components/AddSelect/AddSelectList.js +59 -13
  23. package/es/components/AddSelect/AddSelectSidebar.js +15 -5
  24. package/es/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +2 -0
  25. package/es/components/CreateFullPage/CreateFullPageStep.js +4 -4
  26. package/es/components/CreateTearsheet/CreateTearsheetStep.js +4 -4
  27. package/es/components/DataSpreadsheet/DataSpreadsheet.js +193 -119
  28. package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +178 -51
  29. package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +50 -2
  30. package/es/components/DataSpreadsheet/hooks/useSpreadsheetOutsideClick.js +6 -4
  31. package/es/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +3 -1
  32. package/es/components/HTTPErrors/assets/HTTPErrorSvg403.js +2 -3
  33. package/es/components/HTTPErrors/assets/HTTPErrorSvg404.js +2 -3
  34. package/es/components/HTTPErrors/assets/HTTPErrorSvgOther.js +2 -3
  35. package/es/components/ImportModal/ImportModal.js +2 -2
  36. package/es/components/TagSet/TagSet.js +12 -3
  37. package/es/components/UserProfileImage/UserProfileImage.js +38 -10
  38. package/lib/components/ActionBar/ActionBar.js +3 -1
  39. package/lib/components/ActionBar/ActionBarOverflowItems.js +5 -3
  40. package/lib/components/AddSelect/AddSelect.js +63 -12
  41. package/lib/components/AddSelect/AddSelectColumn.js +0 -1
  42. package/lib/components/AddSelect/AddSelectList.js +61 -12
  43. package/lib/components/AddSelect/AddSelectSidebar.js +15 -11
  44. package/lib/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +2 -0
  45. package/lib/components/CreateFullPage/CreateFullPageStep.js +4 -4
  46. package/lib/components/CreateTearsheet/CreateTearsheetStep.js +4 -4
  47. package/lib/components/DataSpreadsheet/DataSpreadsheet.js +196 -120
  48. package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +178 -51
  49. package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +52 -7
  50. package/lib/components/DataSpreadsheet/hooks/useSpreadsheetOutsideClick.js +6 -3
  51. package/lib/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +3 -1
  52. package/lib/components/HTTPErrors/assets/HTTPErrorSvg403.js +2 -3
  53. package/lib/components/HTTPErrors/assets/HTTPErrorSvg404.js +2 -3
  54. package/lib/components/HTTPErrors/assets/HTTPErrorSvgOther.js +2 -3
  55. package/lib/components/ImportModal/ImportModal.js +1 -1
  56. package/lib/components/TagSet/TagSet.js +12 -3
  57. package/lib/components/UserProfileImage/UserProfileImage.js +38 -10
  58. package/package.json +15 -15
  59. package/scss/components/AboutModal/_about-modal.scss +2 -2
  60. package/scss/components/ActionSet/_action-set.scss +3 -1
  61. package/scss/components/AddSelect/_add-select.scss +50 -3
  62. package/scss/components/CreateModal/_create-modal.scss +7 -5
  63. package/scss/components/CreateModal/_storybook-styles.scss +8 -7
  64. package/scss/components/DataSpreadsheet/_data-spreadsheet.scss +57 -7
  65. package/scss/components/ExportModal/_export-modal.scss +3 -3
  66. package/scss/components/HTTPErrors/_http-errors.scss +16 -16
  67. package/scss/components/InlineEdit/_inline-edit.scss +0 -1
  68. package/scss/components/ModifiedTabs/_modified-tabs.scss +0 -10
  69. package/scss/components/NotificationsPanel/_notifications-panel.scss +3 -3
  70. package/scss/components/OptionsTile/_options-tile.scss +0 -1
  71. package/scss/components/PageHeader/_page-header.scss +4 -0
  72. package/scss/components/RemoveModal/_remove-modal.scss +3 -3
  73. package/scss/components/TagSet/_tag-set.scss +2 -1
  74. package/scss/components/Tearsheet/_tearsheet.scss +1 -2
@@ -23,12 +23,16 @@ var _reactWindow = require("react-window");
23
23
 
24
24
  var _classnames = _interopRequireDefault(require("classnames"));
25
25
 
26
+ var _layout = require("@carbon/layout");
27
+
26
28
  var _settings = require("../../settings");
27
29
 
28
30
  var _deepCloneObject = require("../../global/js/utils/deepCloneObject");
29
31
 
30
32
  var _uuidv = _interopRequireDefault(require("../../global/js/utils/uuidv4"));
31
33
 
34
+ var _hooks = require("../../global/js/hooks");
35
+
32
36
  var _removeCellSelections = require("./utils/removeCellSelections");
33
37
 
34
38
  var _createCellSelectionArea = require("./utils/createCellSelectionArea");
@@ -52,10 +56,15 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
52
56
  var columns = _ref.columns,
53
57
  activeCellCoordinates = _ref.activeCellCoordinates,
54
58
  defaultColumn = _ref.defaultColumn,
59
+ defaultEmptyRowCount = _ref.defaultEmptyRowCount,
55
60
  getTableBodyProps = _ref.getTableBodyProps,
61
+ headerGroups = _ref.headerGroups,
56
62
  id = _ref.id,
63
+ onDataUpdate = _ref.onDataUpdate,
57
64
  prepareRow = _ref.prepareRow,
58
65
  rows = _ref.rows,
66
+ selectionAreaData = _ref.selectionAreaData,
67
+ setSelectionAreaData = _ref.setSelectionAreaData,
59
68
  setActiveCellCoordinates = _ref.setActiveCellCoordinates,
60
69
  selectionAreas = _ref.selectionAreas,
61
70
  setContainerHasFocus = _ref.setContainerHasFocus,
@@ -65,24 +74,64 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
65
74
  clickAndHoldActive = _ref.clickAndHoldActive,
66
75
  setClickAndHoldActive = _ref.setClickAndHoldActive,
67
76
  currentMatcher = _ref.currentMatcher,
68
- setCurrentMatcher = _ref.setCurrentMatcher;
69
- // Create cell selection areas based on selectionAreas array
77
+ setCurrentMatcher = _ref.setCurrentMatcher,
78
+ onSelectionAreaChange = _ref.onSelectionAreaChange;
79
+ var previousState = (0, _hooks.usePreviousValue)({
80
+ selectionAreaData: selectionAreaData,
81
+ clickAndHoldActive: clickAndHoldActive
82
+ }); // Set custom css property containing the spreadsheet total width
83
+
84
+ (0, _react.useEffect)(function () {
85
+ ref === null || ref === void 0 ? void 0 : ref.current.style.setProperty("--".concat(blockClass, "--total-width"), (0, _layout.px)(totalColumnsWidth + scrollBarSize));
86
+ }, [ref, scrollBarSize, totalColumnsWidth]); // Call the `onSelectionAreaChange` handler to send selection area data
87
+ // back to the consumer
88
+
89
+ (0, _react.useEffect)(function () {
90
+ if (selectionAreaData.length) {
91
+ var _previousState$select;
92
+
93
+ if (!clickAndHoldActive && previousState !== null && previousState !== void 0 && previousState.clickAndHoldActive || (previousState === null || previousState === void 0 ? 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)) {
94
+ onSelectionAreaChange(selectionAreaData);
95
+ }
96
+ }
97
+ }, [previousState === null || previousState === void 0 ? void 0 : previousState.selectionAreaData, selectionAreaData, onSelectionAreaChange, clickAndHoldActive, previousState === null || previousState === void 0 ? void 0 : previousState.clickAndHoldActive]); // Create cell selection areas based on selectionAreas array
98
+
70
99
  (0, _react.useEffect)(function () {
71
100
  if (selectionAreas && selectionAreas.length) {
72
101
  selectionAreas.map(function (area) {
73
- if (!area.areaCreated && area.point1 && area.point2 && area.matcher) {
74
- // Do not create a cell selection area if point1 and point2 have the same values
75
- // Cell selections must have two distinctly different points for an area to be created
76
- if (area.point1.row === area.point2.row && area.point1.column === area.point2.column) {
77
- var selectionAreasClone = (0, _deepCloneObject.deepCloneObject)(selectionAreas);
78
- var indexOfCurrentArea = selectionAreasClone.findIndex(function (item) {
79
- return item.matcher === area.matcher;
102
+ // Setup selection area data that will be sent back to consumer via onSelectionAreaChange prop
103
+ if (area.areaCreated) {
104
+ var rowStart = Math.min(area.point1.row, area.point2.row);
105
+ var rowEnd = Math.max(area.point1.row, area.point2.row);
106
+ var columnStart = Math.min(area.point1.column, area.point2.column);
107
+ var columnEnd = Math.max(area.point1.column, area.point2.column);
108
+ var selectionData = {
109
+ rows: {
110
+ start: rowStart,
111
+ end: rowEnd
112
+ },
113
+ columns: {
114
+ start: columnStart,
115
+ end: columnEnd
116
+ },
117
+ cells: populateSelectionAreaCellData({
118
+ rowStart: rowStart,
119
+ rowEnd: rowEnd,
120
+ columnStart: columnStart,
121
+ columnEnd: columnEnd
122
+ }),
123
+ selectionId: area.matcher
124
+ };
125
+ setSelectionAreaData(function (prev) {
126
+ var prevValues = (0, _deepCloneObject.deepCloneObject)(prev);
127
+ var newAreaData = prevValues.filter(function (item) {
128
+ return item.selectionId !== area.matcher;
80
129
  });
81
- selectionAreasClone[indexOfCurrentArea].areaCreated = false;
82
- selectionAreasClone[indexOfCurrentArea].point2 = null;
83
- return setSelectionAreas(selectionAreasClone);
84
- }
130
+ return [].concat((0, _toConsumableArray2.default)(newAreaData), [selectionData]);
131
+ });
132
+ }
85
133
 
134
+ if (!area.areaCreated && area.point1 && area.point2 && area.matcher) {
86
135
  (0, _createCellSelectionArea.createCellSelectionArea)({
87
136
  area: area,
88
137
  blockClass: blockClass,
@@ -95,7 +144,24 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
95
144
  return;
96
145
  });
97
146
  }
98
- }, [selectionAreas, setSelectionAreas, defaultColumn]); // Mouse up
147
+ }, [selectionAreas, setSelectionAreas, defaultColumn, onSelectionAreaChange, setSelectionAreaData]);
148
+
149
+ var populateSelectionAreaCellData = function populateSelectionAreaCellData(_ref2) {
150
+ var rowStart = _ref2.rowStart,
151
+ rowEnd = _ref2.rowEnd,
152
+ columnStart = _ref2.columnStart,
153
+ columnEnd = _ref2.columnEnd;
154
+ var cellContainer = [];
155
+
156
+ for (var rowIndex = rowStart; rowIndex <= rowEnd; rowIndex++) {
157
+ for (var columnIndex = columnStart; columnIndex <= columnEnd; columnIndex++) {
158
+ cellContainer.push([rowIndex, columnIndex]);
159
+ }
160
+ }
161
+
162
+ return cellContainer;
163
+ }; // Mouse up
164
+
99
165
 
100
166
  (0, _react.useEffect)(function () {
101
167
  var handleMouseUp = function handleMouseUp(event) {
@@ -196,9 +262,10 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
196
262
  matcher: tempMatcher
197
263
  }]);
198
264
  setCurrentMatcher(tempMatcher);
265
+ setSelectionAreaData([]);
199
266
  }
200
267
  };
201
- }, [currentMatcher, activeCellCoordinates, selectionAreas, setActiveCellCoordinates, setSelectionAreas, setContainerHasFocus, setClickAndHoldActive, setCurrentMatcher, ref]);
268
+ }, [currentMatcher, activeCellCoordinates, selectionAreas, setActiveCellCoordinates, setSelectionAreas, setContainerHasFocus, setClickAndHoldActive, setCurrentMatcher, ref, setSelectionAreaData]);
202
269
  var handleBodyCellHover = (0, _react.useCallback)(function (cell, columnIndex) {
203
270
  return function () {
204
271
  if (clickAndHoldActive) {
@@ -241,45 +308,75 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
241
308
  setCurrentMatcher: setCurrentMatcher,
242
309
  setSelectionAreas: setSelectionAreas,
243
310
  spreadsheetRef: ref,
244
- index: index
311
+ index: index,
312
+ setSelectionAreaData: setSelectionAreaData
245
313
  });
246
314
  };
247
- }, [columns, ref, setSelectionAreas, setCurrentMatcher, setActiveCellCoordinates, activeCellCoordinates, rows]); // Renders each row/cell in the spreadsheet body
315
+ }, [columns, ref, setSelectionAreas, setCurrentMatcher, setActiveCellCoordinates, activeCellCoordinates, rows, setSelectionAreaData]); // Builds the empty rows and calls `onDataUpdate` to set the new empty rows
316
+ // using defaultEmptyRowCount to determine how many empty rows are created.
317
+
318
+ (0, _react.useEffect)(function () {
319
+ if (!(rows !== null && rows !== void 0 && rows.length)) {
320
+ var buildEmptyRows = function buildEmptyRows() {
321
+ var emptyRowData = [];
322
+ (0, _toConsumableArray2.default)(Array(defaultEmptyRowCount)).map(function () {
323
+ var _headerGroups$;
324
+
325
+ var emptyCell = {};
326
+ (_headerGroups$ = headerGroups[0]) === null || _headerGroups$ === void 0 ? void 0 : _headerGroups$.headers.map(function (header) {
327
+ emptyCell[header.id] = null;
328
+ });
329
+ emptyRowData.push(emptyCell);
330
+ });
331
+ onDataUpdate(emptyRowData);
332
+ };
333
+
334
+ buildEmptyRows();
335
+ }
336
+ }, [rows, headerGroups, defaultEmptyRowCount, onDataUpdate]);
337
+
338
+ var RenderEmptyRows = function RenderEmptyRows() {
339
+ return /*#__PURE__*/_react.default.createElement("div", null);
340
+ }; // Renders each row/cell in the spreadsheet body
248
341
 
249
- var RenderRow = (0, _react.useCallback)(function (_ref2) {
250
- var index = _ref2.index,
251
- style = _ref2.style;
342
+
343
+ var RenderRow = (0, _react.useCallback)(function (_ref3) {
344
+ var index = _ref3.index,
345
+ style = _ref3.style;
252
346
  var row = rows[index];
253
- prepareRow(row);
254
- return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, row.getRowProps({
255
- style: style
256
- }), {
257
- className: (0, _classnames.default)("".concat(blockClass, "__tr")),
258
- "data-row-index": index
259
- }), /*#__PURE__*/_react.default.createElement("button", {
260
- tabIndex: -1,
261
- "data-row-index": index,
262
- "data-column-index": "header",
263
- type: "button",
264
- onClick: handleRowHeaderClick(index),
265
- className: (0, _classnames.default)("".concat(blockClass, "__td"), "".concat(blockClass, "__td-th"), "".concat(blockClass, "--interactive-cell-element"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__td-th--active-header"), (activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row) === index || (0, _checkActiveHeaderCell.checkActiveHeaderCell)(index, selectionAreas, 'row'))),
266
- style: {
267
- width: defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeaderWidth
268
- }
269
- }, index + 1), row.cells.map(function (cell, index) {
270
- return /*#__PURE__*/_react.default.createElement("button", (0, _extends2.default)({
347
+
348
+ if (rows && rows.length) {
349
+ prepareRow(row);
350
+ return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, row.getRowProps({
351
+ style: style
352
+ }), {
353
+ className: (0, _classnames.default)("".concat(blockClass, "__tr")),
354
+ "data-row-index": index
355
+ }), /*#__PURE__*/_react.default.createElement("button", {
271
356
  tabIndex: -1,
272
- "data-row-index": cell.row.index,
273
- "data-column-index": index
274
- }, cell.getCellProps(), {
275
- className: (0, _classnames.default)("".concat(blockClass, "__td"), "".concat(blockClass, "__body--td"), "".concat(blockClass, "--interactive-cell-element")),
276
- key: "cell_".concat(index),
277
- onMouseDown: handleBodyCellClick(cell, index),
278
- onMouseOver: handleBodyCellHover(cell, index),
279
- onFocus: function onFocus() {},
280
- type: "button"
281
- }), cell.render('Cell'));
282
- }));
357
+ "data-row-index": index,
358
+ "data-column-index": "header",
359
+ type: "button",
360
+ onClick: handleRowHeaderClick(index),
361
+ className: (0, _classnames.default)("".concat(blockClass, "__td"), "".concat(blockClass, "__td-th"), "".concat(blockClass, "--interactive-cell-element"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__td-th--active-header"), (activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row) === index || (0, _checkActiveHeaderCell.checkActiveHeaderCell)(index, selectionAreas, 'row'))),
362
+ style: {
363
+ width: defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeaderWidth
364
+ }
365
+ }, index + 1), row.cells.map(function (cell, index) {
366
+ return /*#__PURE__*/_react.default.createElement("button", (0, _extends2.default)({
367
+ tabIndex: -1,
368
+ "data-row-index": cell.row.index,
369
+ "data-column-index": index
370
+ }, cell.getCellProps(), {
371
+ className: (0, _classnames.default)("".concat(blockClass, "__td"), "".concat(blockClass, "__body--td"), "".concat(blockClass, "--interactive-cell-element")),
372
+ key: "cell_".concat(index),
373
+ onMouseDown: handleBodyCellClick(cell, index),
374
+ onMouseOver: handleBodyCellHover(cell, index),
375
+ onFocus: function onFocus() {},
376
+ type: "button"
377
+ }), cell.render('Cell'));
378
+ }));
379
+ }
283
380
  }, [prepareRow, rows, defaultColumn.rowHeaderWidth, activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row, selectionAreas, handleRowHeaderClick, handleBodyCellClick, handleBodyCellHover]);
284
381
  var spreadsheetBodyRef = (0, _react.useRef)();
285
382
  return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
@@ -288,10 +385,10 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
288
385
  }, getTableBodyProps()), /*#__PURE__*/_react.default.createElement(_reactWindow.FixedSizeList, {
289
386
  className: (0, _classnames.default)("".concat(blockClass, "__list--container"), "".concat(blockClass, "__list--container--").concat(id)),
290
387
  height: 400,
291
- itemCount: rows.length,
388
+ itemCount: rows.length || defaultEmptyRowCount,
292
389
  itemSize: defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeight,
293
390
  width: totalColumnsWidth + scrollBarSize
294
- }, RenderRow));
391
+ }, rows !== null && rows !== void 0 && rows.length ? RenderRow : RenderEmptyRows));
295
392
  });
296
393
  exports.DataSpreadsheetBody = DataSpreadsheetBody;
297
394
  DataSpreadsheetBody.propTypes = {
@@ -327,11 +424,21 @@ DataSpreadsheetBody.propTypes = {
327
424
  width: _propTypes.default.number
328
425
  }),
329
426
 
427
+ /**
428
+ * Sets the number of empty rows to be created when there is no data provided
429
+ */
430
+ defaultEmptyRowCount: _propTypes.default.number,
431
+
330
432
  /**
331
433
  * Function to set table body prop values
332
434
  */
333
435
  getTableBodyProps: _propTypes.default.func,
334
436
 
437
+ /**
438
+ * Headers provided from useTable hook
439
+ */
440
+ headerGroups: _propTypes.default.arrayOf(_propTypes.default.object),
441
+
335
442
  /**
336
443
  * The spreadsheet id
337
444
  */
@@ -342,6 +449,16 @@ DataSpreadsheetBody.propTypes = {
342
449
  */
343
450
  onActiveCellChange: _propTypes.default.func,
344
451
 
452
+ /**
453
+ * The event handler that is called to set the rows for the empty spreadsheet
454
+ */
455
+ onDataUpdate: _propTypes.default.func,
456
+
457
+ /**
458
+ * The event handler that is called when the selection areas change
459
+ */
460
+ onSelectionAreaChange: _propTypes.default.func,
461
+
345
462
  /**
346
463
  * Prepare row function from react-table
347
464
  */
@@ -357,6 +474,11 @@ DataSpreadsheetBody.propTypes = {
357
474
  */
358
475
  scrollBarSize: _propTypes.default.number,
359
476
 
477
+ /**
478
+ * Array of selection area data
479
+ */
480
+ selectionAreaData: _propTypes.default.array,
481
+
360
482
  /**
361
483
  * Array of selection areas
362
484
  */
@@ -382,6 +504,11 @@ DataSpreadsheetBody.propTypes = {
382
504
  */
383
505
  setCurrentMatcher: _propTypes.default.func,
384
506
 
507
+ /**
508
+ * Setter fn for selectionAreaData state value
509
+ */
510
+ setSelectionAreaData: _propTypes.default.func,
511
+
385
512
  /**
386
513
  * Setter fn for selectionAreas state value
387
514
  */
@@ -13,40 +13,66 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
13
13
 
14
14
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
15
 
16
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
+
16
18
  var _react = _interopRequireWildcard(require("react"));
17
19
 
18
20
  var _propTypes = _interopRequireDefault(require("prop-types"));
19
21
 
20
22
  var _classnames = _interopRequireDefault(require("classnames"));
21
23
 
24
+ var _layout = require("@carbon/layout");
25
+
22
26
  var _settings = require("../../settings");
23
27
 
24
28
  var _checkActiveHeaderCell = require("./utils/checkActiveHeaderCell");
25
29
 
26
30
  var _handleHeaderCellSelection = require("./utils/handleHeaderCellSelection");
27
31
 
32
+ var _hooks = require("../../global/js/hooks");
33
+
28
34
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
29
35
 
30
36
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
31
37
 
32
- /**
33
- * Copyright IBM Corp. 2022, 2022
34
- *
35
- * This source code is licensed under the Apache-2.0 license found in the
36
- * LICENSE file in the root directory of this source tree.
37
- */
38
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
39
+
40
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
41
+
38
42
  var blockClass = "".concat(_settings.pkg.prefix, "--data-spreadsheet");
39
43
  var DataSpreadsheetHeader = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
40
44
  var activeCellCoordinates = _ref.activeCellCoordinates,
45
+ cellSize = _ref.cellSize,
41
46
  columns = _ref.columns,
42
47
  defaultColumn = _ref.defaultColumn,
43
48
  headerGroups = _ref.headerGroups,
49
+ scrollBarSize = _ref.scrollBarSize,
44
50
  selectionAreas = _ref.selectionAreas,
45
51
  setActiveCellCoordinates = _ref.setActiveCellCoordinates,
46
52
  setCurrentMatcher = _ref.setCurrentMatcher,
47
53
  setSelectionAreas = _ref.setSelectionAreas,
54
+ setSelectionAreaData = _ref.setSelectionAreaData,
48
55
  rows = _ref.rows;
49
56
 
57
+ var _useState = (0, _react.useState)(0),
58
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
59
+ scrollBarSizeValue = _useState2[0],
60
+ setScrollBarSizeValue = _useState2[1];
61
+
62
+ var previousState = (0, _hooks.usePreviousValue)({
63
+ cellSize: cellSize
64
+ });
65
+ (0, _react.useEffect)(function () {
66
+ if ((previousState === null || previousState === void 0 ? void 0 : previousState.cellSize) !== cellSize) {
67
+ var _ref$current;
68
+
69
+ var scrollContainer = ref === null || ref === void 0 ? void 0 : (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.querySelector(".".concat(blockClass, "__list--container"));
70
+ var hasScrollBar = (scrollContainer === null || scrollContainer === void 0 ? void 0 : scrollContainer.scrollHeight) > (scrollContainer === null || scrollContainer === void 0 ? void 0 : scrollContainer.clientHeight);
71
+ var scrollBarValue = hasScrollBar ? 0 : scrollBarSize;
72
+ setScrollBarSizeValue(scrollBarValue);
73
+ }
74
+ }, [cellSize, ref, scrollBarSize, previousState === null || previousState === void 0 ? void 0 : previousState.cellSize]);
75
+
50
76
  var handleColumnHeaderClick = function handleColumnHeaderClick(index) {
51
77
  return function () {
52
78
  (0, _handleHeaderCellSelection.handleHeaderCellSelection)({
@@ -58,7 +84,8 @@ var DataSpreadsheetHeader = /*#__PURE__*/(0, _react.forwardRef)(function (_ref,
58
84
  setCurrentMatcher: setCurrentMatcher,
59
85
  setSelectionAreas: setSelectionAreas,
60
86
  spreadsheetRef: ref,
61
- index: index
87
+ index: index,
88
+ setSelectionAreaData: setSelectionAreaData
62
89
  });
63
90
  };
64
91
  };
@@ -69,6 +96,9 @@ var DataSpreadsheetHeader = /*#__PURE__*/(0, _react.forwardRef)(function (_ref,
69
96
  return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
70
97
  key: "header_".concat(index)
71
98
  }, headerGroup.getHeaderGroupProps(), {
99
+ style: _objectSpread(_objectSpread({}, headerGroup.getHeaderGroupProps().style), {}, {
100
+ width: (0, _layout.px)(parseInt(headerGroup.getHeaderGroupProps().style.width) + scrollBarSizeValue)
101
+ }),
72
102
  className: "".concat(blockClass, "__tr")
73
103
  }), /*#__PURE__*/_react.default.createElement("button", {
74
104
  "data-row-index": "header",
@@ -107,6 +137,11 @@ DataSpreadsheetHeader.propTypes = {
107
137
  column: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])
108
138
  }),
109
139
 
140
+ /**
141
+ * Specifies the cell height
142
+ */
143
+ cellSize: _propTypes.default.oneOf(['compact', 'standard', 'medium', 'large']),
144
+
110
145
  /**
111
146
  * All of the spreadsheet columns
112
147
  */
@@ -131,6 +166,11 @@ DataSpreadsheetHeader.propTypes = {
131
166
  */
132
167
  rows: _propTypes.default.arrayOf(_propTypes.default.object),
133
168
 
169
+ /**
170
+ * The scrollbar width
171
+ */
172
+ scrollBarSize: _propTypes.default.number,
173
+
134
174
  /**
135
175
  * All of the cell selection area items
136
176
  */
@@ -146,6 +186,11 @@ DataSpreadsheetHeader.propTypes = {
146
186
  */
147
187
  setCurrentMatcher: _propTypes.default.func,
148
188
 
189
+ /**
190
+ * Setter fn for selectionAreaData state value
191
+ */
192
+ setSelectionAreaData: _propTypes.default.func,
193
+
149
194
  /**
150
195
  * Setter fn for selectionAreas value
151
196
  */
@@ -9,6 +9,8 @@ var _react = require("react");
9
9
 
10
10
  var _settings = require("../../../settings");
11
11
 
12
+ var _removeCellSelections = require("../utils/removeCellSelections");
13
+
12
14
  /**
13
15
  * Copyright IBM Corp. 2022, 2022
14
16
  *
@@ -23,7 +25,6 @@ var useSpreadsheetOutsideClick = function useSpreadsheetOutsideClick(_ref) {
23
25
  setActiveCellCoordinates = _ref.setActiveCellCoordinates,
24
26
  setSelectionAreas = _ref.setSelectionAreas,
25
27
  removeActiveCell = _ref.removeActiveCell,
26
- removeCellSelections = _ref.removeCellSelections,
27
28
  setContainerHasFocus = _ref.setContainerHasFocus,
28
29
  activeKeys = _ref.activeKeys,
29
30
  removeCellEditor = _ref.removeCellEditor;
@@ -36,7 +37,9 @@ var useSpreadsheetOutsideClick = function useSpreadsheetOutsideClick(_ref) {
36
37
  setActiveCellCoordinates(null);
37
38
  setSelectionAreas([]);
38
39
  removeActiveCell();
39
- removeCellSelections();
40
+ (0, _removeCellSelections.removeCellSelections)({
41
+ spreadsheetRef: spreadsheetRef
42
+ });
40
43
  setContainerHasFocus(false);
41
44
  removeCellEditor();
42
45
  activeKeys.current = [];
@@ -46,7 +49,7 @@ var useSpreadsheetOutsideClick = function useSpreadsheetOutsideClick(_ref) {
46
49
  return function () {
47
50
  document.removeEventListener('click', handleOutsideClick);
48
51
  };
49
- }, [spreadsheetRef, removeActiveCell, removeCellSelections, activeKeys, blockClass, setActiveCellCoordinates, setContainerHasFocus, setSelectionAreas, removeCellEditor]);
52
+ }, [spreadsheetRef, removeActiveCell, activeKeys, blockClass, setActiveCellCoordinates, setContainerHasFocus, setSelectionAreas, removeCellEditor]);
50
53
  };
51
54
 
52
55
  exports.useSpreadsheetOutsideClick = useSpreadsheetOutsideClick;
@@ -27,7 +27,9 @@ var handleHeaderCellSelection = function handleHeaderCellSelection(_ref) {
27
27
  setSelectionAreas = _ref.setSelectionAreas,
28
28
  spreadsheetRef = _ref.spreadsheetRef,
29
29
  index = _ref.index,
30
- isKeyboard = _ref.isKeyboard;
30
+ isKeyboard = _ref.isKeyboard,
31
+ setSelectionAreaData = _ref.setSelectionAreaData;
32
+ setSelectionAreaData([]);
31
33
  var rowValue = isKeyboard ? activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row : index;
32
34
  var columnValue = isKeyboard ? activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.column : index;
33
35
  var point1 = {
@@ -24,10 +24,9 @@ var HTTPErrorSvg403 = function HTTPErrorSvg403(_ref) {
24
24
  return /*#__PURE__*/_react.default.createElement("svg", {
25
25
  xmlns: "http://www.w3.org/2000/svg",
26
26
  xmlnsXlink: "http://www.w3.org/1999/xlink",
27
- width: 1584,
28
- height: 916,
29
27
  viewBox: "0 0 1584 916",
30
- className: className
28
+ className: className,
29
+ preserveAspectRatio: "xMinYMax meet"
31
30
  }, /*#__PURE__*/_react.default.createElement("defs", null, /*#__PURE__*/_react.default.createElement("clipPath", {
32
31
  id: "prefix__clip-path"
33
32
  }, /*#__PURE__*/_react.default.createElement("path", {
@@ -24,10 +24,9 @@ var HTTPErrorSvg404 = function HTTPErrorSvg404(_ref) {
24
24
  return /*#__PURE__*/_react.default.createElement("svg", {
25
25
  xmlns: "http://www.w3.org/2000/svg",
26
26
  xmlnsXlink: "http://www.w3.org/1999/xlink",
27
- width: 1584,
28
- height: 916,
29
27
  viewBox: "0 0 1584 916",
30
- className: className
28
+ className: className,
29
+ preserveAspectRatio: "xMinYMax meet"
31
30
  }, /*#__PURE__*/_react.default.createElement("defs", null, /*#__PURE__*/_react.default.createElement("clipPath", {
32
31
  id: "prefix__clip-path"
33
32
  }, /*#__PURE__*/_react.default.createElement("path", {
@@ -24,10 +24,9 @@ var HTTPErrorSvgOther = function HTTPErrorSvgOther(_ref) {
24
24
  return /*#__PURE__*/_react.default.createElement("svg", {
25
25
  xmlns: "http://www.w3.org/2000/svg",
26
26
  xmlnsXlink: "http://www.w3.org/1999/xlink",
27
- width: 1584,
28
- height: 916,
29
27
  viewBox: "0 0 1584 916",
30
- className: className
28
+ className: className,
29
+ preserveAspectRatio: "xMinYMax meet"
31
30
  }, /*#__PURE__*/_react.default.createElement("defs", null, /*#__PURE__*/_react.default.createElement("clipPath", {
32
31
  id: "prefix__clip-path"
33
32
  }, /*#__PURE__*/_react.default.createElement("path", {
@@ -275,7 +275,7 @@ var ImportModal = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
275
275
  size: "sm",
276
276
  disabled: importButtonDisabled
277
277
  }, inputButtonText)), /*#__PURE__*/_react.default.createElement("div", {
278
- className: "bx--file-container ".concat(blockClass, "__file-container")
278
+ className: "".concat(_settings.carbon.prefix, "--file-container ").concat(blockClass, "__file-container")
279
279
  }, hasFiles && /*#__PURE__*/_react.default.createElement("p", {
280
280
  className: "".concat(blockClass, "__helper-text")
281
281
  }, fileStatusString), files.map(function (file) {
@@ -57,7 +57,7 @@ var allTagsModalSearchThreshold = 10; // Default values for props
57
57
 
58
58
  var defaults = {
59
59
  align: 'start',
60
- allTagsModalTarget: document.body,
60
+ // allTagsModalTarget: document.body,
61
61
  overflowAlign: 'center',
62
62
  overflowDirection: 'bottom'
63
63
  };
@@ -65,8 +65,7 @@ var defaults = {
65
65
  var TagSet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
66
66
  var _ref$align = _ref.align,
67
67
  align = _ref$align === void 0 ? defaults.align : _ref$align,
68
- _ref$allTagsModalTarg = _ref.allTagsModalTarget,
69
- allTagsModalTarget = _ref$allTagsModalTarg === void 0 ? defaults.allTagsModalTarget : _ref$allTagsModalTarg,
68
+ allTagsModalTargetIn = _ref.allTagsModalTarget,
70
69
  className = _ref.className,
71
70
  maxVisible = _ref.maxVisible,
72
71
  _ref$overflowAlign = _ref.overflowAlign,
@@ -113,10 +112,20 @@ var TagSet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
113
112
 
114
113
  var overflowTag = (0, _react.useRef)(null);
115
114
 
115
+ var _useState11 = (0, _react.useState)(null),
116
+ _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
117
+ allTagsModalTarget = _useState12[0],
118
+ setAllTagsModalTarget = _useState12[1];
119
+
116
120
  var handleShowAllClick = function handleShowAllClick() {
117
121
  setShowAllModalOpen(true);
118
122
  };
119
123
 
124
+ (0, _react.useEffect)(function () {
125
+ var _document;
126
+
127
+ setAllTagsModalTarget(allTagsModalTargetIn !== null && allTagsModalTargetIn !== void 0 ? allTagsModalTargetIn : (_document = document) === null || _document === void 0 ? void 0 : _document.body);
128
+ }, [allTagsModalTargetIn]);
120
129
  (0, _react.useEffect)(function () {
121
130
  var newSizingTags = []; // create sizing tags
122
131