@carbon/ibm-products 1.17.0 → 1.18.2

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 +30 -27
  2. package/css/components/Datagrid/styles/datagrid.css +24 -4
  3. package/css/components/Datagrid/styles/datagrid.css.map +1 -1
  4. package/css/components/Datagrid/styles/index.css +24 -4
  5. package/css/components/Datagrid/styles/index.css.map +1 -1
  6. package/css/index-full-carbon.css +215 -90
  7. package/css/index-full-carbon.css.map +1 -1
  8. package/css/index-full-carbon.min.css +4 -4
  9. package/css/index-full-carbon.min.css.map +1 -1
  10. package/css/index-without-carbon.css +98 -24
  11. package/css/index-without-carbon.css.map +1 -1
  12. package/css/index-without-carbon.min.css +2 -2
  13. package/css/index-without-carbon.min.css.map +1 -1
  14. package/css/index.css +124 -55
  15. package/css/index.css.map +1 -1
  16. package/css/index.min.css +4 -4
  17. package/css/index.min.css.map +1 -1
  18. package/es/components/AddSelect/AddSelect.js +57 -8
  19. package/es/components/AddSelect/AddSelectColumn.js +31 -73
  20. package/es/components/AddSelect/AddSelectFilter.js +2 -2
  21. package/es/components/AddSelect/AddSelectList.js +32 -6
  22. package/es/components/AddSelect/AddSelectMetaPanel.js +54 -0
  23. package/es/components/AddSelect/AddSelectSidebar.js +19 -1
  24. package/es/components/AddSelect/AddSelectSort.js +61 -0
  25. package/es/components/AddSelect/add-select-utils.js +21 -0
  26. package/es/components/AddSelect/hooks/useItemSort.js +20 -0
  27. package/es/components/DataSpreadsheet/DataSpreadsheet.js +29 -15
  28. package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +89 -46
  29. package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +70 -6
  30. package/es/components/DataSpreadsheet/hooks/index.js +3 -1
  31. package/es/components/DataSpreadsheet/hooks/useSpreadsheetEdit.js +15 -14
  32. package/es/components/DataSpreadsheet/hooks/useSpreadsheetMouseMove.js +64 -0
  33. package/es/components/DataSpreadsheet/hooks/useSpreadsheetMouseUp.js +155 -0
  34. package/es/components/DataSpreadsheet/utils/createCellSelectionArea.js +3 -3
  35. package/es/components/DataSpreadsheet/utils/getCellSize.js +10 -10
  36. package/es/components/DataSpreadsheet/utils/getSpreadsheetWidth.js +8 -2
  37. package/es/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +1 -1
  38. package/es/components/DataSpreadsheet/utils/moveColumnIndicatorLine.js +35 -0
  39. package/es/components/Datagrid/Datagrid/Datagrid.js +1 -1
  40. package/es/components/Datagrid/Datagrid/DatagridEmptyBody.js +22 -3
  41. package/es/components/Datagrid/Datagrid/addons/RowSize/RowSizeDropdown.js +3 -3
  42. package/es/components/Datagrid/Datagrid/addons/RowSize/RowSizeRadioGroup.js +1 -1
  43. package/es/components/ExportModal/ExportModal.js +1 -1
  44. package/lib/components/AddSelect/AddSelect.js +58 -8
  45. package/lib/components/AddSelect/AddSelectColumn.js +32 -71
  46. package/lib/components/AddSelect/AddSelectFilter.js +2 -2
  47. package/lib/components/AddSelect/AddSelectList.js +30 -4
  48. package/lib/components/AddSelect/AddSelectMetaPanel.js +77 -0
  49. package/lib/components/AddSelect/AddSelectSidebar.js +20 -1
  50. package/lib/components/AddSelect/AddSelectSort.js +79 -0
  51. package/lib/components/AddSelect/add-select-utils.js +29 -2
  52. package/lib/components/AddSelect/hooks/useItemSort.js +33 -0
  53. package/lib/components/DataSpreadsheet/DataSpreadsheet.js +28 -14
  54. package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +90 -45
  55. package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +72 -6
  56. package/lib/components/DataSpreadsheet/hooks/index.js +17 -1
  57. package/lib/components/DataSpreadsheet/hooks/useSpreadsheetEdit.js +14 -14
  58. package/lib/components/DataSpreadsheet/hooks/useSpreadsheetMouseMove.js +78 -0
  59. package/lib/components/DataSpreadsheet/hooks/useSpreadsheetMouseUp.js +163 -0
  60. package/lib/components/DataSpreadsheet/utils/createCellSelectionArea.js +3 -3
  61. package/lib/components/DataSpreadsheet/utils/getCellSize.js +4 -4
  62. package/lib/components/DataSpreadsheet/utils/getSpreadsheetWidth.js +8 -2
  63. package/lib/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +1 -1
  64. package/lib/components/DataSpreadsheet/utils/moveColumnIndicatorLine.js +46 -0
  65. package/lib/components/Datagrid/Datagrid/Datagrid.js +1 -1
  66. package/lib/components/Datagrid/Datagrid/DatagridEmptyBody.js +24 -3
  67. package/lib/components/Datagrid/Datagrid/addons/RowSize/RowSizeDropdown.js +3 -3
  68. package/lib/components/Datagrid/Datagrid/addons/RowSize/RowSizeRadioGroup.js +1 -1
  69. package/lib/components/ExportModal/ExportModal.js +1 -1
  70. package/package.json +13 -12
  71. package/scss/components/AddSelect/_add-select.scss +45 -5
  72. package/scss/components/DataSpreadsheet/_data-spreadsheet.scss +28 -14
  73. package/scss/components/Datagrid/_storybook-styles.scss +5 -0
  74. package/scss/components/Datagrid/styles/datagrid.scss +43 -5
@@ -29,6 +29,12 @@ var _settings = require("../../settings");
29
29
 
30
30
  var _AddSelectList = require("./AddSelectList");
31
31
 
32
+ var _AddSelectSort = require("./AddSelectSort");
33
+
34
+ var _addSelectUtils = require("./add-select-utils");
35
+
36
+ var _useItemSort2 = require("./hooks/useItemSort");
37
+
32
38
  var _uuidv = _interopRequireDefault(require("../../global/js/utils/uuidv4"));
33
39
 
34
40
  var _excluded = ["columnInputPlaceholder", "filteredItems", "header", "multiSelection", "setMultiSelection"];
@@ -40,7 +46,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
40
46
  var componentName = 'AddSelect';
41
47
 
42
48
  var AddSelectColumn = function AddSelectColumn(_ref) {
43
- var _filteredItems$find, _filteredItems$find2;
49
+ var _filteredItems$find;
44
50
 
45
51
  var columnInputPlaceholder = _ref.columnInputPlaceholder,
46
52
  filteredItems = _ref.filteredItems,
@@ -59,20 +65,16 @@ var AddSelectColumn = function AddSelectColumn(_ref) {
59
65
  searchTerm = _useState4[0],
60
66
  setSearchTerm = _useState4[1];
61
67
 
62
- var _useState5 = (0, _react.useState)(''),
63
- _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
64
- sortDirection = _useState6[0],
65
- setSortDirection = _useState6[1];
66
-
67
- var _useState7 = (0, _react.useState)(''),
68
- _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
69
- sortAttribute = _useState8[0],
70
- setSortAttribute = _useState8[1];
68
+ var _useItemSort = (0, _useItemSort2.useItemSort)(),
69
+ sortDirection = _useItemSort.sortDirection,
70
+ setSortDirection = _useItemSort.setSortDirection,
71
+ sortAttribute = _useItemSort.sortAttribute,
72
+ setSortAttribute = _useItemSort.setSortAttribute;
71
73
 
72
- var _useState9 = (0, _react.useState)([]),
73
- _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
74
- filters = _useState10[0],
75
- setFilters = _useState10[1];
74
+ var _useState5 = (0, _react.useState)([]),
75
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
76
+ filters = _useState6[0],
77
+ setFilters = _useState6[1];
76
78
 
77
79
  var blockClass = "".concat(_settings.pkg.prefix, "--add-select");
78
80
  var colClass = "".concat(blockClass, "__column");
@@ -81,39 +83,14 @@ var AddSelectColumn = function AddSelectColumn(_ref) {
81
83
  return multiSelection.includes(item.id);
82
84
  });
83
85
  setAllSelected(isAllSelected);
84
- }, [filteredItems, multiSelection]); // sorting
85
-
86
- var colSortBy = (_filteredItems$find = filteredItems.find(function (item) {
87
- return item.sortBy;
88
- })) === null || _filteredItems$find === void 0 ? void 0 : _filteredItems$find.sortBy;
89
- var sortByOpts = colSortBy ? colSortBy.reduce(function (acc, cur) {
90
- var opts = [{
91
- id: "".concat(cur, "-asc"),
92
- itemText: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_iconsReact.ArrowUp16, null), cur),
93
- direction: 'asc',
94
- attribute: cur
95
- }, {
96
- id: "".concat(cur, "-desc"),
97
- itemText: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_iconsReact.ArrowDown16, null), cur),
98
- direction: 'desc',
99
- attribute: cur
100
- }];
101
- return [].concat((0, _toConsumableArray2.default)(acc), opts);
102
- }, []) : []; // filtering
103
-
104
- var colFilterBy = (_filteredItems$find2 = filteredItems.find(function (item) {
86
+ }, [filteredItems, multiSelection]); // filtering
87
+
88
+ var colFilterBy = (_filteredItems$find = filteredItems.find(function (item) {
105
89
  return item.filterBy;
106
- })) === null || _filteredItems$find2 === void 0 ? void 0 : _filteredItems$find2.filterBy;
90
+ })) === null || _filteredItems$find === void 0 ? void 0 : _filteredItems$find.filterBy;
107
91
  var filterByOpts = colFilterBy ? filteredItems.map(function (item) {
108
92
  return item[colFilterBy];
109
- }) : []; // handlers
110
-
111
- var sortHandler = function sortHandler(_ref2) {
112
- var direction = _ref2.direction,
113
- attribute = _ref2.attribute;
114
- setSortAttribute(attribute);
115
- setSortDirection(direction);
116
- };
93
+ }) : [];
117
94
 
118
95
  var selectAllHandler = function selectAllHandler(checked) {
119
96
  var itemIds = filteredItems.map(function (item) {
@@ -160,22 +137,11 @@ var AddSelectColumn = function AddSelectColumn(_ref) {
160
137
  });
161
138
  };
162
139
 
163
- var sortItems = function sortItems(a, b) {
164
- var _a$sortAttribute, _b$sortAttribute;
165
-
166
- var valueA = (_a$sortAttribute = a[sortAttribute]) === null || _a$sortAttribute === void 0 ? void 0 : _a$sortAttribute.split(' ').join('');
167
- var valueB = (_b$sortAttribute = b[sortAttribute]) === null || _b$sortAttribute === void 0 ? void 0 : _b$sortAttribute.split(' ').join('');
168
-
169
- if (sortDirection === 'desc') {
170
- return valueA > valueB ? -1 : 1;
171
- }
172
-
173
- return valueA < valueB ? -1 : 1;
174
- };
175
-
140
+ var sortFn = (0, _addSelectUtils.sortItems)(sortAttribute, sortDirection);
141
+ var sortBy = (0, _addSelectUtils.getSortBy)(filteredItems);
176
142
  var colItems = filteredItems.filter(filterBySearch) // first check if the item meets the search
177
143
  .filter(filterByAttribute) // then check if the item is included in the filter
178
- .sort(sortItems); // then sort the items by whatever criteria
144
+ .sort(sortFn); // then sort the items by whatever criteria
179
145
 
180
146
  return /*#__PURE__*/_react.default.createElement("div", {
181
147
  className: colClass
@@ -193,19 +159,14 @@ var AddSelectColumn = function AddSelectColumn(_ref) {
193
159
  labelText: columnInputPlaceholder
194
160
  }), /*#__PURE__*/_react.default.createElement("div", {
195
161
  className: "".concat(colClass, "-sort-filter")
196
- }, sortByOpts.length > 0 && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenu, {
197
- renderIcon: _iconsReact.ArrowsVertical32,
198
- className: "".concat(colClass, "-overflow"),
199
- flipped: true
200
- }, sortByOpts.map(function (opt) {
201
- return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenuItem, {
202
- key: opt.id,
203
- itemText: opt.itemText,
204
- onClick: function onClick() {
205
- return sortHandler(opt);
206
- }
207
- });
208
- })), filterByOpts.length > 0 && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenu, {
162
+ }, /*#__PURE__*/_react.default.createElement(_AddSelectSort.AddSelectSort, {
163
+ items: filteredItems,
164
+ setSortAttribute: setSortAttribute,
165
+ setSortDirection: setSortDirection,
166
+ sortAttribute: sortAttribute,
167
+ sortDirection: sortDirection,
168
+ sortBy: sortBy
169
+ }), filterByOpts.length > 0 && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenu, {
209
170
  renderIcon: _iconsReact.Filter32,
210
171
  className: "".concat(colClass, "-overflow"),
211
172
  flipped: true
@@ -104,7 +104,7 @@ var AddSelectFilter = function AddSelectFilter(_ref) {
104
104
  };
105
105
 
106
106
  var showFilter = multi && (filterOpts === null || filterOpts === void 0 ? void 0 : filterOpts.length) > 0;
107
- return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
107
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
108
108
  className: "".concat(blockClass, "-search")
109
109
  }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.TextInput, {
110
110
  id: "temp-id",
@@ -123,7 +123,7 @@ var AddSelectFilter = function AddSelectFilter(_ref) {
123
123
  className: "".concat(blockClass, "-toggle"),
124
124
  size: "md"
125
125
  }), open && /*#__PURE__*/_react.default.createElement("div", {
126
- className: "".concat(blockClass)
126
+ className: blockClass
127
127
  }, /*#__PURE__*/_react.default.createElement("div", {
128
128
  className: "".concat(blockClass, "-content")
129
129
  }, /*#__PURE__*/_react.default.createElement("p", null, "Filters"), /*#__PURE__*/_react.default.createElement("div", {
@@ -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 _AddSelectMetaPanel = require("./AddSelectMetaPanel");
25
+
24
26
  var _excluded = ["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
 
@@ -79,6 +85,15 @@ var AddSelectSidebar = function AddSelectSidebar(_ref) {
79
85
  }));
80
86
  };
81
87
 
88
+ if (Object.keys(displayMetalPanel).length !== 0) {
89
+ return /*#__PURE__*/_react.default.createElement(_AddSelectMetaPanel.AddSelectMetaPanel, {
90
+ closeIconDescription: closeIconDescription,
91
+ meta: displayMetalPanel.meta,
92
+ setDisplayMetaPanel: setDisplayMetaPanel,
93
+ title: metaPanelTitle
94
+ });
95
+ }
96
+
82
97
  return /*#__PURE__*/_react.default.createElement("div", {
83
98
  className: blockClass
84
99
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -115,12 +130,16 @@ var AddSelectSidebar = function AddSelectSidebar(_ref) {
115
130
 
116
131
  exports.AddSelectSidebar = AddSelectSidebar;
117
132
  AddSelectSidebar.propTypes = {
133
+ closeIconDescription: _propTypes.default.string,
134
+ displayMetalPanel: _propTypes.default.object,
118
135
  influencerTitle: _propTypes.default.string,
119
136
  items: _propTypes.default.array,
137
+ metaPanelTitle: _propTypes.default.string,
120
138
  multiSelection: _propTypes.default.array,
121
139
  noSelectionDescription: _propTypes.default.string,
122
140
  noSelectionTitle: _propTypes.default.string,
123
141
  removeIconDescription: _propTypes.default.string,
142
+ setDisplayMetaPanel: _propTypes.default.func,
124
143
  setMultiSelection: _propTypes.default.func
125
144
  };
126
145
  AddSelectSidebar.displayName = componentName;
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.AddSelectSort = void 0;
9
+
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
+
12
+ var _react = _interopRequireDefault(require("react"));
13
+
14
+ var _propTypes = _interopRequireDefault(require("prop-types"));
15
+
16
+ var _carbonComponentsReact = require("carbon-components-react");
17
+
18
+ var _iconsReact = require("@carbon/icons-react");
19
+
20
+ var _settings = require("../../settings");
21
+
22
+ //
23
+ // Copyright IBM Corp. 2022
24
+ //
25
+ // This source code is licensed under the Apache-2.0 license found in the
26
+ // LICENSE file in the root directory of this source tree.
27
+ //
28
+ var componentName = 'AddSelect';
29
+
30
+ var AddSelectSort = function AddSelectSort(_ref) {
31
+ var setSortAttribute = _ref.setSortAttribute,
32
+ setSortDirection = _ref.setSortDirection,
33
+ sortBy = _ref.sortBy;
34
+ var blockClass = "".concat(_settings.pkg.prefix, "--add-select-sort");
35
+ var sortByOpts = sortBy ? sortBy.reduce(function (acc, cur) {
36
+ var opts = [{
37
+ id: "".concat(cur, "-asc"),
38
+ itemText: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_iconsReact.ArrowUp16, null), cur),
39
+ direction: 'asc',
40
+ attribute: cur
41
+ }, {
42
+ id: "".concat(cur, "-desc"),
43
+ itemText: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_iconsReact.ArrowDown16, null), cur),
44
+ direction: 'desc',
45
+ attribute: cur
46
+ }];
47
+ return [].concat((0, _toConsumableArray2.default)(acc), opts);
48
+ }, []) : []; // handlers
49
+
50
+ var sortHandler = function sortHandler(_ref2) {
51
+ var direction = _ref2.direction,
52
+ attribute = _ref2.attribute;
53
+ setSortAttribute(attribute);
54
+ setSortDirection(direction);
55
+ };
56
+
57
+ return /*#__PURE__*/_react.default.createElement("div", {
58
+ className: blockClass
59
+ }, sortByOpts.length > 0 && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenu, {
60
+ renderIcon: _iconsReact.ArrowsVertical32,
61
+ flipped: true
62
+ }, sortByOpts.map(function (opt) {
63
+ return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenuItem, {
64
+ key: opt.id,
65
+ itemText: opt.itemText,
66
+ onClick: function onClick() {
67
+ return sortHandler(opt);
68
+ }
69
+ });
70
+ })));
71
+ };
72
+
73
+ exports.AddSelectSort = AddSelectSort;
74
+ AddSelectSort.propTypes = {
75
+ setSortAttribute: _propTypes.default.func,
76
+ setSortDirection: _propTypes.default.func,
77
+ sortBy: _propTypes.default.array
78
+ };
79
+ AddSelectSort.displayName = componentName;
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.normalize = exports.getGlobalFilterValues = exports.flatten = void 0;
8
+ exports.sortItems = exports.normalize = exports.getSortBy = exports.getGlobalFilterValues = exports.flatten = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
@@ -108,4 +108,31 @@ var getGlobalFilterValues = function getGlobalFilterValues(globalFilters, items)
108
108
  return filterOpts;
109
109
  };
110
110
 
111
- exports.getGlobalFilterValues = getGlobalFilterValues;
111
+ exports.getGlobalFilterValues = getGlobalFilterValues;
112
+
113
+ var sortItems = function sortItems(attribute, direction) {
114
+ return function (a, b) {
115
+ var _a$attribute, _b$attribute;
116
+
117
+ var valueA = (_a$attribute = a[attribute]) === null || _a$attribute === void 0 ? void 0 : _a$attribute.split(' ').join('');
118
+ var valueB = (_b$attribute = b[attribute]) === null || _b$attribute === void 0 ? void 0 : _b$attribute.split(' ').join('');
119
+
120
+ if (direction === 'desc') {
121
+ return valueA > valueB ? -1 : 1;
122
+ }
123
+
124
+ return valueA < valueB ? -1 : 1;
125
+ };
126
+ };
127
+
128
+ exports.sortItems = sortItems;
129
+
130
+ var getSortBy = function getSortBy(items) {
131
+ var _items$find;
132
+
133
+ return (_items$find = items.find(function (item) {
134
+ return item.sortBy;
135
+ })) === null || _items$find === void 0 ? void 0 : _items$find.sortBy;
136
+ };
137
+
138
+ exports.getSortBy = getSortBy;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.useItemSort = void 0;
9
+
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+
12
+ var _react = require("react");
13
+
14
+ var useItemSort = function useItemSort() {
15
+ var _useState = (0, _react.useState)(''),
16
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
17
+ sortDirection = _useState2[0],
18
+ setSortDirection = _useState2[1];
19
+
20
+ var _useState3 = (0, _react.useState)(''),
21
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
22
+ sortAttribute = _useState4[0],
23
+ setSortAttribute = _useState4[1];
24
+
25
+ return {
26
+ sortDirection: sortDirection,
27
+ setSortDirection: setSortDirection,
28
+ sortAttribute: sortAttribute,
29
+ setSortAttribute: setSortAttribute
30
+ };
31
+ };
32
+
33
+ exports.useItemSort = useItemSort;
@@ -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,
@@ -159,8 +159,13 @@ var DataSpreadsheet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
159
159
 
160
160
  var _useState17 = (0, _react.useState)(false),
161
161
  _useState18 = (0, _slicedToArray2.default)(_useState17, 2),
162
- activeCellInsideSelectionArea = _useState18[0],
163
- setActiveCellInsideSelectionArea = _useState18[1];
162
+ headerCellHoldActive = _useState18[0],
163
+ setHeaderCellHoldActive = _useState18[1];
164
+
165
+ var _useState19 = (0, _react.useState)(false),
166
+ _useState20 = (0, _slicedToArray2.default)(_useState19, 2),
167
+ activeCellInsideSelectionArea = _useState20[0],
168
+ setActiveCellInsideSelectionArea = _useState20[1];
164
169
 
165
170
  var previousState = (0, _hooks.usePreviousValue)({
166
171
  activeCellCoordinates: activeCellCoordinates,
@@ -169,10 +174,10 @@ var DataSpreadsheet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
169
174
  var cellSizeValue = (0, _getCellSize.getCellSize)(cellSize);
170
175
  var cellEditorRef = (0, _react.useRef)();
171
176
 
172
- var _useState19 = (0, _react.useState)(),
173
- _useState20 = (0, _slicedToArray2.default)(_useState19, 2),
174
- activeCellContent = _useState20[0],
175
- setActiveCellContent = _useState20[1];
177
+ var _useState21 = (0, _react.useState)(),
178
+ _useState22 = (0, _slicedToArray2.default)(_useState21, 2),
179
+ activeCellContent = _useState22[0],
180
+ setActiveCellContent = _useState22[1];
176
181
 
177
182
  var activeCellRef = (0, _react.useRef)();
178
183
  var cellEditorRulerRef = (0, _react.useRef)();
@@ -200,13 +205,15 @@ var DataSpreadsheet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
200
205
  columns: columns,
201
206
  data: data,
202
207
  defaultColumn: defaultColumn
203
- }, _reactTable.useBlockLayout),
208
+ }, _reactTable.useBlockLayout, _reactTable.useColumnOrder),
204
209
  getTableProps = _useTable.getTableProps,
205
210
  getTableBodyProps = _useTable.getTableBodyProps,
206
211
  headerGroups = _useTable.headerGroups,
207
212
  rows = _useTable.rows,
208
213
  totalColumnsWidth = _useTable.totalColumnsWidth,
209
- prepareRow = _useTable.prepareRow; // Update the spreadsheet data after editing a cell
214
+ prepareRow = _useTable.prepareRow,
215
+ setColumnOrder = _useTable.setColumnOrder,
216
+ visibleColumns = _useTable.visibleColumns; // Update the spreadsheet data after editing a cell
210
217
 
211
218
 
212
219
  var updateData = (0, _react.useCallback)(function (rowIndex, columnId) {
@@ -609,8 +616,9 @@ var DataSpreadsheet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
609
616
 
610
617
  var startEditMode = function startEditMode() {
611
618
  setIsEditing(true);
619
+ setClickAndHoldActive(false);
612
620
  var activeCellFullData = typeof (activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.column) === 'number' && typeof (activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row) === 'number' ? rows[activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row].cells[activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.column] : null;
613
- var activeCellValue = activeCellFullData ? Object.values(activeCellFullData.row.values)[activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.column] : null;
621
+ var activeCellValue = activeCellFullData ? activeCellFullData.row.cells[activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.column].value : null;
614
622
  setCellEditorValue(activeCellValue);
615
623
  cellEditorRulerRef.current.textContent = activeCellValue;
616
624
  cellEditorRef.current.style.width = activeCellRef === null || activeCellRef === void 0 ? void 0 : activeCellRef.current.style.width;
@@ -734,7 +742,7 @@ var DataSpreadsheet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
734
742
  activeCellRef: activeCellRef,
735
743
  cellEditorRef: cellEditorRef,
736
744
  cellEditorRulerRef: cellEditorRulerRef,
737
- columns: columns,
745
+ visibleColumns: visibleColumns,
738
746
  defaultColumn: defaultColumn,
739
747
  cellEditorValue: cellEditorValue
740
748
  });
@@ -804,7 +812,10 @@ var DataSpreadsheet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
804
812
  setCurrentMatcher: setCurrentMatcher,
805
813
  setSelectionAreaData: setSelectionAreaData,
806
814
  totalVisibleColumns: totalVisibleColumns,
807
- updateActiveCellCoordinates: updateActiveCellCoordinates
815
+ updateActiveCellCoordinates: updateActiveCellCoordinates,
816
+ setHeaderCellHoldActive: setHeaderCellHoldActive,
817
+ headerCellHoldActive: headerCellHoldActive,
818
+ visibleColumns: visibleColumns
808
819
  }), /*#__PURE__*/_react.default.createElement(_DataSpreadsheetBody.DataSpreadsheetBody, {
809
820
  activeCellCoordinates: activeCellCoordinates,
810
821
  ref: spreadsheetRef,
@@ -833,7 +844,10 @@ var DataSpreadsheet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
833
844
  columns: columns,
834
845
  defaultEmptyRowCount: defaultEmptyRowCount,
835
846
  setActiveCellInsideSelectionArea: setActiveCellInsideSelectionArea,
836
- totalVisibleColumns: totalVisibleColumns
847
+ totalVisibleColumns: totalVisibleColumns,
848
+ setHeaderCellHoldActive: setHeaderCellHoldActive,
849
+ setColumnOrder: setColumnOrder,
850
+ visibleColumns: visibleColumns
837
851
  }), /*#__PURE__*/_react.default.createElement("button", {
838
852
  onMouseDown: handleActiveCellMouseDown,
839
853
  onClick: handleActiveCellClick,
@@ -886,7 +900,7 @@ DataSpreadsheet.propTypes = {
886
900
  /**
887
901
  * Specifies the cell height
888
902
  */
889
- cellSize: _propTypes.default.oneOf(['compact', 'standard', 'medium', 'large']),
903
+ cellSize: _propTypes.default.oneOf(['xs', 'sm', 'md', 'lg']),
890
904
 
891
905
  /**
892
906
  * Provide an optional class to be applied to the containing node.