@carbon/ibm-products 1.18.0 → 1.19.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. package/css/components/Datagrid/styles/datagrid.css +24 -4
  2. package/css/components/Datagrid/styles/datagrid.css.map +1 -1
  3. package/css/components/Datagrid/styles/index.css +24 -4
  4. package/css/components/Datagrid/styles/index.css.map +1 -1
  5. package/css/index-full-carbon.css +78 -13
  6. package/css/index-full-carbon.css.map +1 -1
  7. package/css/index-full-carbon.min.css +2 -2
  8. package/css/index-full-carbon.min.css.map +1 -1
  9. package/css/index-without-carbon.css +78 -13
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +2 -2
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +78 -13
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +2 -2
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/ActionSet/ActionSet.js +1 -0
  18. package/es/components/AddSelect/AddSelect.js +28 -3
  19. package/es/components/AddSelect/AddSelectFilter.js +9 -3
  20. package/es/components/AddSelect/AddSelectList.js +32 -6
  21. package/es/components/AddSelect/AddSelectMetaPanel.js +54 -0
  22. package/es/components/AddSelect/AddSelectSidebar.js +22 -3
  23. package/es/components/DataSpreadsheet/DataSpreadsheet.js +7 -4
  24. package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +43 -10
  25. package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +36 -13
  26. package/es/components/DataSpreadsheet/hooks/useSpreadsheetMouseMove.js +8 -6
  27. package/es/components/DataSpreadsheet/hooks/useSpreadsheetMouseUp.js +65 -34
  28. package/es/components/DataSpreadsheet/utils/checkSelectedHeaderCell.js +17 -3
  29. package/es/components/DataSpreadsheet/utils/getCellSize.js +10 -10
  30. package/es/components/DataSpreadsheet/utils/getSpreadsheetWidth.js +8 -2
  31. package/es/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +113 -19
  32. package/es/components/DataSpreadsheet/utils/moveColumnIndicatorLine.js +4 -3
  33. package/es/components/Datagrid/Datagrid/Datagrid.js +1 -1
  34. package/es/components/Datagrid/Datagrid/DatagridEmptyBody.js +22 -3
  35. package/es/components/Datagrid/Datagrid/DraggableElement.js +0 -7
  36. package/es/components/Datagrid/Datagrid/addons/RowSize/RowSizeDropdown.js +3 -3
  37. package/es/components/Datagrid/Datagrid/addons/RowSize/RowSizeRadioGroup.js +1 -1
  38. package/es/components/ExportModal/ExportModal.js +1 -1
  39. package/es/global/js/hooks/useWindowResize.js +2 -1
  40. package/es/global/js/hooks/useWindowScroll.js +2 -1
  41. package/es/global/js/utils/scrollableAncestor.js +2 -1
  42. package/lib/components/ActionSet/ActionSet.js +1 -0
  43. package/lib/components/AddSelect/AddSelect.js +28 -3
  44. package/lib/components/AddSelect/AddSelectFilter.js +10 -3
  45. package/lib/components/AddSelect/AddSelectList.js +30 -4
  46. package/lib/components/AddSelect/AddSelectMetaPanel.js +77 -0
  47. package/lib/components/AddSelect/AddSelectSidebar.js +23 -3
  48. package/lib/components/DataSpreadsheet/DataSpreadsheet.js +7 -4
  49. package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +43 -10
  50. package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +36 -13
  51. package/lib/components/DataSpreadsheet/hooks/useSpreadsheetMouseMove.js +8 -7
  52. package/lib/components/DataSpreadsheet/hooks/useSpreadsheetMouseUp.js +66 -34
  53. package/lib/components/DataSpreadsheet/utils/checkSelectedHeaderCell.js +17 -3
  54. package/lib/components/DataSpreadsheet/utils/getCellSize.js +4 -4
  55. package/lib/components/DataSpreadsheet/utils/getSpreadsheetWidth.js +8 -2
  56. package/lib/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +112 -19
  57. package/lib/components/DataSpreadsheet/utils/moveColumnIndicatorLine.js +4 -3
  58. package/lib/components/Datagrid/Datagrid/Datagrid.js +1 -1
  59. package/lib/components/Datagrid/Datagrid/DatagridEmptyBody.js +24 -3
  60. package/lib/components/Datagrid/Datagrid/DraggableElement.js +0 -7
  61. package/lib/components/Datagrid/Datagrid/addons/RowSize/RowSizeDropdown.js +3 -3
  62. package/lib/components/Datagrid/Datagrid/addons/RowSize/RowSizeRadioGroup.js +1 -1
  63. package/lib/components/ExportModal/ExportModal.js +1 -1
  64. package/lib/global/js/hooks/useWindowResize.js +3 -1
  65. package/lib/global/js/hooks/useWindowScroll.js +5 -1
  66. package/lib/global/js/utils/scrollableAncestor.js +6 -1
  67. package/package.json +7 -7
  68. package/scss/components/AddSelect/_add-select.scss +46 -6
  69. package/scss/components/DataSpreadsheet/_data-spreadsheet.scss +8 -1
  70. package/scss/components/Datagrid/_storybook-styles.scss +5 -0
  71. package/scss/components/Datagrid/styles/datagrid.scss +43 -5
@@ -47,7 +47,7 @@ var _AddSelectSort = require("./AddSelectSort");
47
47
 
48
48
  var _useItemSort2 = require("./hooks/useItemSort");
49
49
 
50
- var _excluded = ["className", "clearFiltersText", "columnInputPlaceholder", "description", "globalFilters", "globalFiltersIconDescription", "globalFiltersPlaceholderText", "globalFiltersPrimaryButtonText", "globalFiltersSecondaryButtonText", "globalSearchLabel", "globalSearchPlaceholder", "globalSortBy", "influencerTitle", "items", "itemsLabel", "multi", "noResultsDescription", "noResultsTitle", "noSelectionDescription", "noSelectionTitle", "onClose", "onCloseButtonText", "onSubmit", "onSubmitButtonText", "open", "portalTarget", "removeIconDescription", "searchResultsLabel", "title"];
50
+ var _excluded = ["className", "clearFiltersText", "closeIconDescription", "columnInputPlaceholder", "description", "globalFilters", "globalFiltersIconDescription", "globalFiltersPlaceholderText", "globalFiltersPrimaryButtonText", "globalFiltersSecondaryButtonText", "globalSearchLabel", "globalSearchPlaceholder", "globalSortBy", "influencerTitle", "items", "itemsLabel", "metaIconDescription", "metaPanelTitle", "multi", "navIconDescription", "noResultsDescription", "noResultsTitle", "noSelectionDescription", "noSelectionTitle", "onClose", "onCloseButtonText", "onSubmit", "onSubmitButtonText", "open", "portalTarget", "removeIconDescription", "searchResultsLabel", "title"];
51
51
 
52
52
  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); }
53
53
 
@@ -59,6 +59,7 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
59
59
 
60
60
  var className = _ref.className,
61
61
  clearFiltersText = _ref.clearFiltersText,
62
+ closeIconDescription = _ref.closeIconDescription,
62
63
  columnInputPlaceholder = _ref.columnInputPlaceholder,
63
64
  description = _ref.description,
64
65
  globalFilters = _ref.globalFilters,
@@ -72,7 +73,10 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
72
73
  influencerTitle = _ref.influencerTitle,
73
74
  items = _ref.items,
74
75
  itemsLabel = _ref.itemsLabel,
76
+ metaIconDescription = _ref.metaIconDescription,
77
+ metaPanelTitle = _ref.metaPanelTitle,
75
78
  multi = _ref.multi,
79
+ navIconDescription = _ref.navIconDescription,
76
80
  noResultsDescription = _ref.noResultsDescription,
77
81
  noResultsTitle = _ref.noResultsTitle,
78
82
  noSelectionDescription = _ref.noSelectionDescription,
@@ -134,6 +138,11 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
134
138
  appliedGlobalFilters = _useState18[0],
135
139
  setAppliedGlobalFilters = _useState18[1];
136
140
 
141
+ var _useState19 = (0, _react.useState)({}),
142
+ _useState20 = (0, _slicedToArray2.default)(_useState19, 2),
143
+ displayMetalPanel = _useState20[0],
144
+ setDisplayMetaPanel = _useState20[1];
145
+
137
146
  var _useItemSort = (0, _useItemSort2.useItemSort)(),
138
147
  sortDirection = _useItemSort.sortDirection,
139
148
  setSortDirection = _useItemSort.setSortDirection,
@@ -256,13 +265,16 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
256
265
 
257
266
  var itemsToDisplay = getDisplayItems();
258
267
  var commonListProps = {
268
+ metaIconDescription: metaIconDescription,
259
269
  multi: multi,
260
270
  multiSelection: multiSelection,
271
+ navIconDescription: navIconDescription,
261
272
  path: path,
262
273
  setMultiSelection: setMultiSelection,
263
274
  setPath: setPath,
264
275
  setSingleSelection: setSingleSelection,
265
- singleSelection: singleSelection
276
+ singleSelection: singleSelection,
277
+ setDisplayMetaPanel: setDisplayMetaPanel
266
278
  }; // handlers
267
279
 
268
280
  var handleSearch = function handleSearch(term) {
@@ -297,13 +309,17 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
297
309
  portalTarget: portalTarget
298
310
  };
299
311
  var sidebarProps = {
312
+ closeIconDescription: closeIconDescription,
300
313
  influencerTitle: influencerTitle,
301
314
  items: flatItems,
315
+ metaPanelTitle: metaPanelTitle,
302
316
  multiSelection: multiSelection,
303
317
  noSelectionDescription: noSelectionDescription,
304
318
  noSelectionTitle: noSelectionTitle,
305
319
  removeIconDescription: removeIconDescription,
306
- setMultiSelection: setMultiSelection
320
+ setMultiSelection: setMultiSelection,
321
+ displayMetalPanel: displayMetalPanel,
322
+ setDisplayMetaPanel: setDisplayMetaPanel
307
323
  };
308
324
 
309
325
  var setShowBreadsCrumbs = function setShowBreadsCrumbs() {
@@ -405,6 +421,7 @@ exports.AddSelect = AddSelect;
405
421
  AddSelect.propTypes = {
406
422
  className: _propTypes.default.string,
407
423
  clearFiltersText: _propTypes.default.string,
424
+ closeIconDescription: _propTypes.default.string,
408
425
  columnInputPlaceholder: _propTypes.default.string,
409
426
  description: _propTypes.default.string,
410
427
  globalFilters: _propTypes.default.arrayOf(_propTypes.default.shape({
@@ -435,13 +452,21 @@ AddSelect.propTypes = {
435
452
  children: _propTypes.default.object,
436
453
  icon: _propTypes.default.object,
437
454
  id: _propTypes.default.string.isRequired,
455
+ meta: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.shape({
456
+ id: _propTypes.default.string,
457
+ title: _propTypes.default.string,
458
+ value: _propTypes.default.string
459
+ })), _propTypes.default.node]),
438
460
  subtitle: _propTypes.default.string,
439
461
  title: _propTypes.default.string.isRequired,
440
462
  value: _propTypes.default.string.isRequired
441
463
  }))
442
464
  }),
443
465
  itemsLabel: _propTypes.default.string,
466
+ metaIconDescription: _propTypes.default.string,
467
+ metaPanelTitle: _propTypes.default.string,
444
468
  multi: _propTypes.default.bool,
469
+ navIconDescription: _propTypes.default.string,
445
470
  noResultsDescription: _propTypes.default.string,
446
471
  noResultsTitle: _propTypes.default.string,
447
472
  noSelectionDescription: _propTypes.default.string,
@@ -17,6 +17,8 @@ var _react = _interopRequireWildcard(require("react"));
17
17
 
18
18
  var _carbonComponentsReact = require("carbon-components-react");
19
19
 
20
+ var _classnames = _interopRequireDefault(require("classnames"));
21
+
20
22
  var _propTypes = _interopRequireDefault(require("prop-types"));
21
23
 
22
24
  var _iconsReact = require("@carbon/icons-react");
@@ -79,6 +81,7 @@ var AddSelectFilter = function AddSelectFilter(_ref) {
79
81
 
80
82
 
81
83
  var applyFilters = function applyFilters() {
84
+ setOpen(false);
82
85
  handleFilter(filters);
83
86
  };
84
87
 
@@ -104,6 +107,8 @@ var AddSelectFilter = function AddSelectFilter(_ref) {
104
107
  };
105
108
 
106
109
  var showFilter = multi && (filterOpts === null || filterOpts === void 0 ? void 0 : filterOpts.length) > 0;
110
+ var filterBtnClassnames = (0, _classnames.default)("".concat(blockClass, "-toggle"), (0, _defineProperty2.default)({}, "".concat(blockClass, "-toggle--open"), open));
111
+ var dirtyInput = Object.keys(filters).length > 0;
107
112
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
108
113
  className: "".concat(blockClass, "-search")
109
114
  }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.TextInput, {
@@ -120,7 +125,7 @@ var AddSelectFilter = function AddSelectFilter(_ref) {
120
125
  return setOpen(!open);
121
126
  },
122
127
  iconDescription: iconDescription,
123
- className: "".concat(blockClass, "-toggle"),
128
+ className: filterBtnClassnames,
124
129
  size: "md"
125
130
  }), open && /*#__PURE__*/_react.default.createElement("div", {
126
131
  className: blockClass
@@ -146,11 +151,13 @@ var AddSelectFilter = function AddSelectFilter(_ref) {
146
151
  }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
147
152
  kind: "secondary",
148
153
  onClick: resetFilters,
149
- className: "".concat(blockClass, "-button")
154
+ className: "".concat(blockClass, "-button"),
155
+ disabled: !dirtyInput
150
156
  }, secondaryButtonText), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
151
157
  kind: "primary",
152
158
  onClick: applyFilters,
153
- className: "".concat(blockClass, "-button")
159
+ className: "".concat(blockClass, "-button"),
160
+ disabled: !dirtyInput && !hasFiltersApplied
154
161
  }, primaryButtonText)))), hasFiltersApplied && /*#__PURE__*/_react.default.createElement("div", {
155
162
  className: "".concat(blockClass, "-applied")
156
163
  }, Object.keys(appliedFilters).map(function (filterType) {
@@ -35,10 +35,13 @@ var componentName = 'AddSelectList';
35
35
 
36
36
  var AddSelectList = function AddSelectList(_ref) {
37
37
  var filteredItems = _ref.filteredItems,
38
+ metaIconDescription = _ref.metaIconDescription,
38
39
  modifiers = _ref.modifiers,
39
40
  multi = _ref.multi,
40
41
  multiSelection = _ref.multiSelection,
42
+ navIconDescription = _ref.navIconDescription,
41
43
  path = _ref.path,
44
+ setDisplayMetaPanel = _ref.setDisplayMetaPanel,
42
45
  setMultiSelection = _ref.setMultiSelection,
43
46
  setPath = _ref.setPath,
44
47
  setSingleSelection = _ref.setSingleSelection,
@@ -186,7 +189,7 @@ var AddSelectList = function AddSelectList(_ref) {
186
189
  light: true,
187
190
  label: modifiers === null || modifiers === void 0 ? void 0 : modifiers.label,
188
191
  disabled: !isSelected(item.id),
189
- className: "".concat(blockClass, "-dropdown")
192
+ className: "".concat(blockClass, "-dropdown ").concat(blockClass, "-hidden-hover")
190
193
  })) : /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.RadioButton, {
191
194
  className: "".concat(blockClass, "-radio"),
192
195
  name: "add-select-selections",
@@ -195,21 +198,44 @@ var AddSelectList = function AddSelectList(_ref) {
195
198
  labelText: item.title,
196
199
  onChange: handleSingleSelection,
197
200
  selected: item.value === singleSelection
198
- }), item.children && /*#__PURE__*/_react.default.createElement(_iconsReact.ChevronRight16, {
201
+ }), item.children && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
202
+ renderIcon: _iconsReact.ChevronRight16,
203
+ iconDescription: navIconDescription,
204
+ tooltipPosition: "left",
205
+ tooltipAlignment: "center",
206
+ hasIconOnly: true,
199
207
  onClick: function onClick() {
200
208
  return onNavigateItem(item);
201
- }
202
- }))));
209
+ },
210
+ kind: "ghost",
211
+ size: "sm"
212
+ }), item.meta && /*#__PURE__*/_react.default.createElement("div", {
213
+ className: "".concat(blockClass, "-hidden-hover")
214
+ }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
215
+ renderIcon: _iconsReact.View16,
216
+ iconDescription: metaIconDescription,
217
+ tooltipPosition: "left",
218
+ tooltipAlignment: "center",
219
+ hasIconOnly: true,
220
+ onClick: function onClick() {
221
+ return setDisplayMetaPanel(item);
222
+ },
223
+ kind: "ghost",
224
+ size: "sm"
225
+ })))));
203
226
  }))));
204
227
  };
205
228
 
206
229
  exports.AddSelectList = AddSelectList;
207
230
  AddSelectList.propTypes = {
208
231
  filteredItems: _propTypes.default.array,
232
+ metaIconDescription: _propTypes.default.string,
209
233
  modifiers: _propTypes.default.object,
210
234
  multi: _propTypes.default.bool,
211
235
  multiSelection: _propTypes.default.array,
236
+ navIconDescription: _propTypes.default.string,
212
237
  path: _propTypes.default.array,
238
+ setDisplayMetaPanel: _propTypes.default.func,
213
239
  setMultiSelection: _propTypes.default.func,
214
240
  setPath: _propTypes.default.func,
215
241
  setSingleSelection: _propTypes.default.func,
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.AddSelectMetaPanel = void 0;
11
+
12
+ var _react = _interopRequireWildcard(require("react"));
13
+
14
+ var _propTypes = _interopRequireDefault(require("prop-types"));
15
+
16
+ var _iconsReact = require("@carbon/icons-react");
17
+
18
+ var _carbonComponentsReact = require("carbon-components-react");
19
+
20
+ var _settings = require("../../settings");
21
+
22
+ 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); }
23
+
24
+ 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; }
25
+
26
+ var componentName = 'AddSelectMetaPanel';
27
+
28
+ var AddSelectMetaPanel = function AddSelectMetaPanel(_ref) {
29
+ var closeIconDescription = _ref.closeIconDescription,
30
+ meta = _ref.meta,
31
+ setDisplayMetaPanel = _ref.setDisplayMetaPanel,
32
+ title = _ref.title;
33
+ var blockClass = "".concat(_settings.pkg.prefix, "--add-select__meta-panel");
34
+
35
+ var onCloseHandler = function onCloseHandler() {
36
+ setDisplayMetaPanel({});
37
+ };
38
+
39
+ return /*#__PURE__*/_react.default.createElement("div", {
40
+ className: blockClass
41
+ }, /*#__PURE__*/_react.default.createElement("div", {
42
+ className: "".concat(blockClass, "-header")
43
+ }, /*#__PURE__*/_react.default.createElement("p", {
44
+ className: "".concat(blockClass, "-title")
45
+ }, title), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
46
+ renderIcon: _iconsReact.Close16,
47
+ iconDescription: closeIconDescription,
48
+ tooltipPosition: "left",
49
+ tooltipAlignment: "center",
50
+ hasIconOnly: true,
51
+ onClick: onCloseHandler,
52
+ kind: "ghost",
53
+ size: "sm"
54
+ })), /*#__PURE__*/(0, _react.isValidElement)(meta) ? meta : meta.map(function (entry) {
55
+ return /*#__PURE__*/_react.default.createElement("div", {
56
+ key: entry.id,
57
+ className: "".concat(blockClass, "-entry")
58
+ }, /*#__PURE__*/_react.default.createElement("p", {
59
+ className: "".concat(blockClass, "-entry-title")
60
+ }, entry.title), /*#__PURE__*/_react.default.createElement("p", {
61
+ className: "".concat(blockClass, "-entry-body")
62
+ }, entry.value));
63
+ }));
64
+ };
65
+
66
+ exports.AddSelectMetaPanel = AddSelectMetaPanel;
67
+ AddSelectMetaPanel.propTypes = {
68
+ closeIconDescription: _propTypes.default.string,
69
+ meta: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.shape({
70
+ id: _propTypes.default.string,
71
+ title: _propTypes.default.string,
72
+ value: _propTypes.default.string
73
+ })), _propTypes.default.node]),
74
+ setDisplayMetaPanel: _propTypes.default.func,
75
+ title: _propTypes.default.string
76
+ };
77
+ AddSelectMetaPanel.displayName = componentName;
@@ -21,16 +21,22 @@ var _NoDataEmptyState = require("../../components/EmptyStates/NoDataEmptyState")
21
21
 
22
22
  var _settings = require("../../settings");
23
23
 
24
- var _excluded = ["icon", "avatar"];
24
+ var _AddSelectMetaPanel = require("./AddSelectMetaPanel");
25
+
26
+ var _excluded = ["meta", "icon", "avatar"];
25
27
  var componentName = 'AddSelectSidebar';
26
28
 
27
29
  var AddSelectSidebar = function AddSelectSidebar(_ref) {
28
- var influencerTitle = _ref.influencerTitle,
30
+ var closeIconDescription = _ref.closeIconDescription,
31
+ displayMetalPanel = _ref.displayMetalPanel,
32
+ influencerTitle = _ref.influencerTitle,
29
33
  items = _ref.items,
34
+ metaPanelTitle = _ref.metaPanelTitle,
30
35
  multiSelection = _ref.multiSelection,
31
36
  noSelectionDescription = _ref.noSelectionDescription,
32
37
  noSelectionTitle = _ref.noSelectionTitle,
33
38
  removeIconDescription = _ref.removeIconDescription,
39
+ setDisplayMetaPanel = _ref.setDisplayMetaPanel,
34
40
  setMultiSelection = _ref.setMultiSelection;
35
41
  var blockClass = "".concat(_settings.pkg.prefix, "--add-select__sidebar");
36
42
 
@@ -47,7 +53,8 @@ var AddSelectSidebar = function AddSelectSidebar(_ref) {
47
53
  }); // certain properties should not be displayed in the sidebar
48
54
  // eslint-disable-next-line no-unused-vars
49
55
 
50
- var icon = selectedItem.icon,
56
+ var meta = selectedItem.meta,
57
+ icon = selectedItem.icon,
51
58
  avatar = selectedItem.avatar,
52
59
  newItem = (0, _objectWithoutProperties2.default)(selectedItem, _excluded);
53
60
  acc.push(newItem);
@@ -79,6 +86,15 @@ var AddSelectSidebar = function AddSelectSidebar(_ref) {
79
86
  }));
80
87
  };
81
88
 
89
+ if (Object.keys(displayMetalPanel).length !== 0) {
90
+ return /*#__PURE__*/_react.default.createElement(_AddSelectMetaPanel.AddSelectMetaPanel, {
91
+ closeIconDescription: closeIconDescription,
92
+ meta: displayMetalPanel.meta,
93
+ setDisplayMetaPanel: setDisplayMetaPanel,
94
+ title: metaPanelTitle
95
+ });
96
+ }
97
+
82
98
  return /*#__PURE__*/_react.default.createElement("div", {
83
99
  className: blockClass
84
100
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -115,12 +131,16 @@ var AddSelectSidebar = function AddSelectSidebar(_ref) {
115
131
 
116
132
  exports.AddSelectSidebar = AddSelectSidebar;
117
133
  AddSelectSidebar.propTypes = {
134
+ closeIconDescription: _propTypes.default.string,
135
+ displayMetalPanel: _propTypes.default.object,
118
136
  influencerTitle: _propTypes.default.string,
119
137
  items: _propTypes.default.array,
138
+ metaPanelTitle: _propTypes.default.string,
120
139
  multiSelection: _propTypes.default.array,
121
140
  noSelectionDescription: _propTypes.default.string,
122
141
  noSelectionTitle: _propTypes.default.string,
123
142
  removeIconDescription: _propTypes.default.string,
143
+ setDisplayMetaPanel: _propTypes.default.func,
124
144
  setMultiSelection: _propTypes.default.func
125
145
  };
126
146
  AddSelectSidebar.displayName = componentName;
@@ -81,7 +81,7 @@ var blockClass = "".concat(_settings.pkg.prefix, "--data-spreadsheet");
81
81
  var componentName = 'DataSpreadsheet'; // Default values for props
82
82
 
83
83
  var defaults = {
84
- cellSize: 'standard',
84
+ cellSize: 'sm',
85
85
  columns: Object.freeze([]),
86
86
  data: Object.freeze([]),
87
87
  defaultEmptyRowCount: 16,
@@ -701,7 +701,8 @@ var DataSpreadsheet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
701
701
  spreadsheetRef: spreadsheetRef,
702
702
  isKeyboard: isKeyboard,
703
703
  setSelectionAreaData: setSelectionAreaData,
704
- index: index
704
+ index: index,
705
+ currentMatcher: currentMatcher
705
706
  }; // Select an entire column
706
707
 
707
708
  if ((activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row) === 'header' && (activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.column) !== 'header') {
@@ -802,6 +803,7 @@ var DataSpreadsheet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
802
803
  activeCellCoordinates: activeCellCoordinates,
803
804
  cellSize: cellSize,
804
805
  columns: columns,
806
+ currentMatcher: currentMatcher,
805
807
  defaultColumn: defaultColumn,
806
808
  headerGroups: headerGroups,
807
809
  rows: rows,
@@ -814,7 +816,8 @@ var DataSpreadsheet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
814
816
  totalVisibleColumns: totalVisibleColumns,
815
817
  updateActiveCellCoordinates: updateActiveCellCoordinates,
816
818
  setHeaderCellHoldActive: setHeaderCellHoldActive,
817
- headerCellHoldActive: headerCellHoldActive
819
+ headerCellHoldActive: headerCellHoldActive,
820
+ visibleColumns: visibleColumns
818
821
  }), /*#__PURE__*/_react.default.createElement(_DataSpreadsheetBody.DataSpreadsheetBody, {
819
822
  activeCellCoordinates: activeCellCoordinates,
820
823
  ref: spreadsheetRef,
@@ -899,7 +902,7 @@ DataSpreadsheet.propTypes = {
899
902
  /**
900
903
  * Specifies the cell height
901
904
  */
902
- cellSize: _propTypes.default.oneOf(['compact', 'standard', 'medium', 'large']),
905
+ cellSize: _propTypes.default.oneOf(['xs', 'sm', 'md', 'lg']),
903
906
 
904
907
  /**
905
908
  * Provide an optional class to be applied to the containing node.
@@ -96,7 +96,8 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
96
96
  var contentScrollRef = (0, _react.useRef)();
97
97
  var previousState = (0, _hooks.usePreviousValue)({
98
98
  selectionAreaData: selectionAreaData,
99
- clickAndHoldActive: clickAndHoldActive
99
+ clickAndHoldActive: clickAndHoldActive,
100
+ rowHeight: defaultColumn.rowHeight
100
101
  }); // Set custom css property containing the spreadsheet total width
101
102
 
102
103
  (0, _react.useEffect)(function () {
@@ -176,7 +177,7 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
176
177
 
177
178
  for (var rowIndex = rowStart; rowIndex <= rowEnd; rowIndex++) {
178
179
  for (var columnIndex = columnStart; columnIndex <= columnEnd; columnIndex++) {
179
- cellContainer.push([rowIndex, columnIndex]);
180
+ cellContainer.push([rowIndex, columnIndex, "".concat(blockClass, "__cell--").concat(rowIndex, "--").concat(columnIndex)]);
180
181
  }
181
182
  }
182
183
 
@@ -196,18 +197,47 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
196
197
  setActiveCellCoordinates: setActiveCellCoordinates,
197
198
  rows: rows,
198
199
  activeCellCoordinates: activeCellCoordinates,
199
- defaultColumn: defaultColumn
200
+ defaultColumn: defaultColumn,
201
+ selectionAreas: selectionAreas
200
202
  }); // Make sure that if the cellSize prop changes, the active
201
- // cell also gets updated with the new size
203
+ // cell also gets updated with the new size and new top placement
204
+ // value. All of the cell selections will be updated as well
202
205
 
203
206
  (0, _react.useEffect)(function () {
204
207
  var listContainer = spreadsheetBodyRef === null || spreadsheetBodyRef === void 0 ? void 0 : spreadsheetBodyRef.current;
205
208
  var activeCellButton = listContainer.querySelector(".".concat(blockClass, "__active-cell--highlight"));
206
209
 
207
- if (activeCellButton) {
210
+ if (activeCellButton && defaultColumn.rowHeight !== previousState.rowHeight) {
208
211
  activeCellButton.style.height = "".concat(defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeight, "px");
212
+
213
+ if (activeCellCoordinates) {
214
+ var activeTargetElement = ref.current.querySelector("[data-row-index=\"".concat(activeCellCoordinates.row, "\"][data-column-index=\"").concat(activeCellCoordinates.column, "\"]"));
215
+
216
+ var _listContainer = ref.current.querySelector(".".concat(blockClass, "__list--container"));
217
+
218
+ var newActiveCellTopPosition = activeTargetElement.getBoundingClientRect().top - _listContainer.getBoundingClientRect().top;
219
+
220
+ activeCellButton.style.top = (0, _layout.px)(newActiveCellTopPosition);
221
+ (0, _removeCellSelections.removeCellSelections)({
222
+ spreadsheetRef: ref
223
+ });
224
+ selectionAreas.map(function (area) {
225
+ if (!area.areaCreated && area.point1 && area.point2 && area.matcher) {
226
+ return (0, _createCellSelectionArea.createCellSelectionArea)({
227
+ ref: ref,
228
+ area: area,
229
+ blockClass: blockClass,
230
+ defaultColumn: defaultColumn,
231
+ selectionAreas: selectionAreas,
232
+ setSelectionAreas: setSelectionAreas,
233
+ setActiveCellInsideSelectionArea: setActiveCellInsideSelectionArea,
234
+ visibleColumns: visibleColumns
235
+ });
236
+ }
237
+ });
238
+ }
209
239
  }
210
- }, [defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeight]); // onClick fn for each cell in the data spreadsheet body,
240
+ }, [defaultColumn, ref, activeCellCoordinates, previousState === null || previousState === void 0 ? void 0 : previousState.rowHeight, selectionAreas, setActiveCellInsideSelectionArea, setSelectionAreas, visibleColumns]); // onClick fn for each cell in the data spreadsheet body,
211
241
  // adds the active cell highlight
212
242
 
213
243
  var handleBodyCellClick = (0, _react.useCallback)(function (cell, columnIndex) {
@@ -392,11 +422,13 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
392
422
  "data-column-index": "header",
393
423
  type: "button",
394
424
  onClick: handleRowHeaderClick(index),
395
- className: (0, _classnames.default)("".concat(blockClass, "__td"), "".concat(blockClass, "__td-th"), "".concat(blockClass, "--interactive-cell-element"), (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__td-th--active-header"), (activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row) === index || (0, _checkActiveHeaderCell.checkActiveHeaderCell)(index, selectionAreas, 'row')), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__td-th--selected-header"), (0, _checkSelectedHeaderCell.checkSelectedHeaderCell)(index, selectionAreas, 'row')), _cx)),
425
+ className: (0, _classnames.default)("".concat(blockClass, "__td"), "".concat(blockClass, "__td-th"), "".concat(blockClass, "--interactive-cell-element"), (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__td-th--active-header"), (activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row) === index || (0, _checkActiveHeaderCell.checkActiveHeaderCell)(index, selectionAreas, 'row')), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__td-th--selected-header"), (0, _checkSelectedHeaderCell.checkSelectedHeaderCell)(index, selectionAreas, 'row', columns)), _cx)),
396
426
  style: {
397
427
  width: defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeaderWidth
398
428
  }
399
429
  }, index + 1)), row.cells.map(function (cell, index) {
430
+ var _cell$column;
431
+
400
432
  return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
401
433
  key: "cell_".concat(index),
402
434
  "aria-colindex": index + 1
@@ -404,7 +436,7 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
404
436
  role: "gridcell",
405
437
  style: _objectSpread(_objectSpread({}, cell.getCellProps().style), {}, {
406
438
  display: 'grid',
407
- minWidth: defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.width
439
+ minWidth: (cell === null || cell === void 0 ? void 0 : (_cell$column = cell.column) === null || _cell$column === void 0 ? void 0 : _cell$column.width) || (defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.width)
408
440
  })
409
441
  }), /*#__PURE__*/_react.default.createElement("button", {
410
442
  id: "".concat(blockClass, "__cell--").concat(cell.row.index, "--").concat(index),
@@ -419,7 +451,7 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
419
451
  }, cell.render('Cell')));
420
452
  }));
421
453
  }
422
- }, [prepareRow, rows, activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row, selectionAreas, handleRowHeaderClick, handleBodyCellClick, handleBodyCellHover, defaultColumn]);
454
+ }, [prepareRow, rows, activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row, selectionAreas, handleRowHeaderClick, handleBodyCellClick, handleBodyCellHover, defaultColumn, columns]);
423
455
  var spreadsheetBodyRef = (0, _react.useRef)();
424
456
  return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
425
457
  ref: spreadsheetBodyRef,
@@ -433,7 +465,8 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
433
465
  scrollBarSizeValue: scrollBarSize,
434
466
  totalVisibleColumns: totalVisibleColumns,
435
467
  defaultColumn: defaultColumn,
436
- totalColumnsWidth: totalColumnsWidth
468
+ totalColumnsWidth: totalColumnsWidth,
469
+ visibleColumns: visibleColumns
437
470
  }),
438
471
  outerRef: contentScrollRef
439
472
  }, rows !== null && rows !== void 0 && rows.length ? RenderRow : RenderEmptyRows));
@@ -52,6 +52,7 @@ var DataSpreadsheetHeader = /*#__PURE__*/(0, _react.forwardRef)(function (_ref,
52
52
  var activeCellCoordinates = _ref.activeCellCoordinates,
53
53
  cellSize = _ref.cellSize,
54
54
  columns = _ref.columns,
55
+ currentMatcher = _ref.currentMatcher,
55
56
  defaultColumn = _ref.defaultColumn,
56
57
  headerGroups = _ref.headerGroups,
57
58
  scrollBarSize = _ref.scrollBarSize,
@@ -64,7 +65,8 @@ var DataSpreadsheetHeader = /*#__PURE__*/(0, _react.forwardRef)(function (_ref,
64
65
  totalVisibleColumns = _ref.totalVisibleColumns,
65
66
  updateActiveCellCoordinates = _ref.updateActiveCellCoordinates,
66
67
  setHeaderCellHoldActive = _ref.setHeaderCellHoldActive,
67
- headerCellHoldActive = _ref.headerCellHoldActive;
68
+ headerCellHoldActive = _ref.headerCellHoldActive,
69
+ visibleColumns = _ref.visibleColumns;
68
70
 
69
71
  var _useState = (0, _react.useState)(0),
70
72
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
@@ -93,6 +95,7 @@ var DataSpreadsheetHeader = /*#__PURE__*/(0, _react.forwardRef)(function (_ref,
93
95
  var handleColumnHeaderClick = function handleColumnHeaderClick(index) {
94
96
  return function (event) {
95
97
  var isHoldingCommandKey = event.metaKey || event.ctrlKey;
98
+ var isHoldingShiftKey = event.shiftKey;
96
99
  (0, _handleHeaderCellSelection.handleHeaderCellSelection)({
97
100
  type: 'column',
98
101
  activeCellCoordinates: activeCellCoordinates,
@@ -104,7 +107,9 @@ var DataSpreadsheetHeader = /*#__PURE__*/(0, _react.forwardRef)(function (_ref,
104
107
  spreadsheetRef: ref,
105
108
  index: index,
106
109
  setSelectionAreaData: setSelectionAreaData,
107
- isHoldingCommandKey: isHoldingCommandKey
110
+ isHoldingCommandKey: isHoldingCommandKey,
111
+ isHoldingShiftKey: isHoldingShiftKey,
112
+ currentMatcher: currentMatcher
108
113
  });
109
114
  };
110
115
  };
@@ -125,23 +130,30 @@ var DataSpreadsheetHeader = /*#__PURE__*/(0, _react.forwardRef)(function (_ref,
125
130
  return function (event) {
126
131
  var _selectionAreaToClone;
127
132
 
133
+ if (event.shiftKey) {
134
+ // Remove columns, need to call handleHeaderCellSelection
135
+ return;
136
+ }
137
+
128
138
  setSelectedHeaderReorderActive(true);
139
+ var selectionAreaToClone = selectionAreas.filter(function (item) {
140
+ return (item === null || item === void 0 ? void 0 : item.matcher) === currentMatcher;
141
+ });
142
+ var selectionAreaElement = ref.current.querySelector("[data-matcher-id=\"".concat((_selectionAreaToClone = selectionAreaToClone[0]) === null || _selectionAreaToClone === void 0 ? void 0 : _selectionAreaToClone.matcher, "\"]"));
129
143
  var clickXPosition = event.clientX;
130
144
  var headerButtonCoords = event.target.getBoundingClientRect();
145
+ var headerIndex = event.target.getAttribute('data-column-index');
131
146
  var offsetXValue = clickXPosition - headerButtonCoords.left;
147
+ var lowestColumnIndexFromSelectionArea = Math.min(selectionAreaToClone[0].point1.column, selectionAreaToClone[0].point2.column);
148
+ var selectionAreaCoords = selectionAreaElement.getBoundingClientRect();
149
+ var updatedOffsetDifference = lowestColumnIndexFromSelectionArea < parseInt(headerIndex) ? offsetXValue + (headerButtonCoords.left - selectionAreaCoords.left) : offsetXValue;
132
150
  var bodyContainer = document.querySelector(".".concat(blockClass, "__list--container")).firstElementChild;
133
- var selectionAreaToClone = selectionAreas.filter(function (item) {
134
- var _item$header;
135
-
136
- return (item === null || item === void 0 ? void 0 : (_item$header = item.header) === null || _item$header === void 0 ? void 0 : _item$header.index) === index;
137
- });
138
- var selectionAreaElement = ref.current.querySelector("[data-matcher-id=\"".concat((_selectionAreaToClone = selectionAreaToClone[0]) === null || _selectionAreaToClone === void 0 ? void 0 : _selectionAreaToClone.matcher, "\"]"));
139
151
  var selectionAreaClonedElement = selectionAreaElement.cloneNode();
140
152
  var reorderIndicatorLine = selectionAreaElement.cloneNode();
141
153
  reorderIndicatorLine.className = "".concat(blockClass, "__reorder-indicator-line");
142
154
  reorderIndicatorLine.style.width = (0, _layout.px)(2);
143
155
  selectionAreaClonedElement.classList.add("".concat(blockClass, "__selection-area--element-cloned"));
144
- selectionAreaClonedElement.setAttribute('data-clone-offset-x', offsetXValue);
156
+ selectionAreaClonedElement.setAttribute('data-clone-offset-x', updatedOffsetDifference);
145
157
  selectionAreaClonedElement.setAttribute('data-column-index-original', index);
146
158
  bodyContainer.appendChild(selectionAreaClonedElement);
147
159
  bodyContainer.appendChild(reorderIndicatorLine);
@@ -167,7 +179,8 @@ var DataSpreadsheetHeader = /*#__PURE__*/(0, _react.forwardRef)(function (_ref,
167
179
  headerGroup: headerGroup,
168
180
  scrollBarSizeValue: scrollBarSizeValue,
169
181
  totalVisibleColumns: totalVisibleColumns,
170
- defaultColumn: defaultColumn
182
+ defaultColumn: defaultColumn,
183
+ visibleColumns: visibleColumns
171
184
  }),
172
185
  overflow: 'hidden'
173
186
  }),
@@ -190,7 +203,7 @@ var DataSpreadsheetHeader = /*#__PURE__*/(0, _react.forwardRef)(function (_ref,
190
203
  }, "\xA0")), headerGroup.headers.map(function (column, index) {
191
204
  var _cx2;
192
205
 
193
- var selectedHeader = (0, _checkSelectedHeaderCell.checkSelectedHeaderCell)(index, selectionAreas, 'column');
206
+ var selectedHeader = (0, _checkSelectedHeaderCell.checkSelectedHeaderCell)(index, selectionAreas, 'column', rows);
194
207
  return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
195
208
  key: "column_".concat(index),
196
209
  role: "columnheader",
@@ -228,13 +241,18 @@ DataSpreadsheetHeader.propTypes = {
228
241
  /**
229
242
  * Specifies the cell height
230
243
  */
231
- cellSize: _propTypes.default.oneOf(['compact', 'standard', 'medium', 'large']),
244
+ cellSize: _propTypes.default.oneOf(['xs', 'sm', 'md', 'lg']),
232
245
 
233
246
  /**
234
247
  * All of the spreadsheet columns
235
248
  */
236
249
  columns: _propTypes.default.array,
237
250
 
251
+ /**
252
+ * uuid that corresponds to the current selection area
253
+ */
254
+ currentMatcher: _propTypes.default.string,
255
+
238
256
  /**
239
257
  * Default spreadsheet sizing values
240
258
  */
@@ -303,5 +321,10 @@ DataSpreadsheetHeader.propTypes = {
303
321
  /**
304
322
  * Function used to update the active cell coordinates
305
323
  */
306
- updateActiveCellCoordinates: _propTypes.default.func
324
+ updateActiveCellCoordinates: _propTypes.default.func,
325
+
326
+ /**
327
+ * Array of visible columns provided by react-table useTable hook
328
+ */
329
+ visibleColumns: _propTypes.default.array
307
330
  };