@carbon/ibm-products 1.16.0 → 1.18.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) 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 +241 -93
  7. package/css/index-full-carbon.css.map +1 -1
  8. package/css/index-full-carbon.min.css +7 -4
  9. package/css/index-full-carbon.min.css.map +1 -1
  10. package/css/index-without-carbon-released-only.css +9 -3
  11. package/css/index-without-carbon-released-only.css.map +1 -1
  12. package/css/index-without-carbon-released-only.min.css +4 -1
  13. package/css/index-without-carbon-released-only.min.css.map +1 -1
  14. package/css/index-without-carbon.css +124 -27
  15. package/css/index-without-carbon.css.map +1 -1
  16. package/css/index-without-carbon.min.css +6 -3
  17. package/css/index-without-carbon.min.css.map +1 -1
  18. package/css/index.css +150 -58
  19. package/css/index.css.map +1 -1
  20. package/css/index.min.css +7 -4
  21. package/css/index.min.css.map +1 -1
  22. package/es/components/AddSelect/AddSelect.js +57 -8
  23. package/es/components/AddSelect/AddSelectColumn.js +31 -73
  24. package/es/components/AddSelect/AddSelectFilter.js +2 -2
  25. package/es/components/AddSelect/AddSelectList.js +32 -6
  26. package/es/components/AddSelect/AddSelectMetaPanel.js +54 -0
  27. package/es/components/AddSelect/AddSelectSidebar.js +19 -1
  28. package/es/components/AddSelect/AddSelectSort.js +61 -0
  29. package/es/components/AddSelect/add-select-utils.js +21 -0
  30. package/es/components/AddSelect/hooks/useItemSort.js +20 -0
  31. package/es/components/DataSpreadsheet/DataSpreadsheet.js +28 -13
  32. package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +60 -42
  33. package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +73 -6
  34. package/es/components/DataSpreadsheet/hooks/index.js +3 -1
  35. package/es/components/DataSpreadsheet/hooks/useSpreadsheetEdit.js +65 -19
  36. package/es/components/DataSpreadsheet/hooks/useSpreadsheetMouseMove.js +60 -0
  37. package/es/components/DataSpreadsheet/hooks/useSpreadsheetMouseUp.js +153 -0
  38. package/es/components/DataSpreadsheet/utils/checkSelectedHeaderCell.js +16 -0
  39. package/es/components/DataSpreadsheet/utils/createCellSelectionArea.js +11 -6
  40. package/es/components/DataSpreadsheet/utils/getSpreadsheetWidth.js +8 -2
  41. package/es/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +7 -3
  42. package/es/components/DataSpreadsheet/utils/moveColumnIndicatorLine.js +34 -0
  43. package/es/components/Datagrid/Datagrid/Datagrid.js +25 -13
  44. package/es/components/Datagrid/Datagrid/DatagridEmptyBody.js +22 -3
  45. package/es/components/Datagrid/Datagrid/DatagridHead.js +8 -16
  46. package/es/components/Datagrid/Datagrid/DatagridHeaderRow.js +10 -10
  47. package/es/components/Datagrid/Datagrid/addons/RowSize/RowSizeDropdown.js +3 -3
  48. package/es/components/Datagrid/Datagrid/addons/RowSize/RowSizeRadioGroup.js +1 -1
  49. package/es/components/Datagrid/Datagrid/index.js +6 -7
  50. package/es/components/Datagrid/index.js +1 -1
  51. package/es/components/ExportModal/ExportModal.js +10 -5
  52. package/es/components/SidePanel/SidePanel.js +5 -1
  53. package/es/components/WebTerminal/WebTerminal.js +36 -11
  54. package/es/components/WebTerminal/WebTerminalContentWrapper.js +49 -0
  55. package/es/components/WebTerminal/index.js +2 -1
  56. package/es/components/index.js +1 -1
  57. package/es/global/js/package-settings.js +1 -0
  58. package/lib/components/AddSelect/AddSelect.js +58 -8
  59. package/lib/components/AddSelect/AddSelectColumn.js +32 -71
  60. package/lib/components/AddSelect/AddSelectFilter.js +2 -2
  61. package/lib/components/AddSelect/AddSelectList.js +30 -4
  62. package/lib/components/AddSelect/AddSelectMetaPanel.js +77 -0
  63. package/lib/components/AddSelect/AddSelectSidebar.js +20 -1
  64. package/lib/components/AddSelect/AddSelectSort.js +79 -0
  65. package/lib/components/AddSelect/add-select-utils.js +29 -2
  66. package/lib/components/AddSelect/hooks/useItemSort.js +33 -0
  67. package/lib/components/DataSpreadsheet/DataSpreadsheet.js +27 -12
  68. package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +62 -41
  69. package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +76 -6
  70. package/lib/components/DataSpreadsheet/hooks/index.js +17 -1
  71. package/lib/components/DataSpreadsheet/hooks/useSpreadsheetEdit.js +68 -18
  72. package/lib/components/DataSpreadsheet/hooks/useSpreadsheetMouseMove.js +74 -0
  73. package/lib/components/DataSpreadsheet/hooks/useSpreadsheetMouseUp.js +161 -0
  74. package/lib/components/DataSpreadsheet/utils/checkSelectedHeaderCell.js +26 -0
  75. package/lib/components/DataSpreadsheet/utils/createCellSelectionArea.js +11 -6
  76. package/lib/components/DataSpreadsheet/utils/getSpreadsheetWidth.js +8 -2
  77. package/lib/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +7 -3
  78. package/lib/components/DataSpreadsheet/utils/moveColumnIndicatorLine.js +45 -0
  79. package/lib/components/Datagrid/Datagrid/Datagrid.js +26 -9
  80. package/lib/components/Datagrid/Datagrid/DatagridEmptyBody.js +24 -3
  81. package/lib/components/Datagrid/Datagrid/DatagridHead.js +8 -16
  82. package/lib/components/Datagrid/Datagrid/DatagridHeaderRow.js +10 -10
  83. package/lib/components/Datagrid/Datagrid/addons/RowSize/RowSizeDropdown.js +3 -3
  84. package/lib/components/Datagrid/Datagrid/addons/RowSize/RowSizeRadioGroup.js +1 -1
  85. package/lib/components/Datagrid/Datagrid/index.js +3 -5
  86. package/lib/components/Datagrid/index.js +2 -2
  87. package/lib/components/ExportModal/ExportModal.js +9 -4
  88. package/lib/components/SidePanel/SidePanel.js +5 -1
  89. package/lib/components/WebTerminal/WebTerminal.js +36 -10
  90. package/lib/components/WebTerminal/WebTerminalContentWrapper.js +58 -0
  91. package/lib/components/WebTerminal/index.js +9 -1
  92. package/lib/components/index.js +6 -0
  93. package/lib/global/js/package-settings.js +1 -0
  94. package/package.json +17 -16
  95. package/scss/components/AddSelect/_add-select.scss +45 -5
  96. package/scss/components/DataSpreadsheet/_data-spreadsheet.scss +31 -13
  97. package/scss/components/Datagrid/_storybook-styles.scss +5 -0
  98. package/scss/components/Datagrid/styles/datagrid.scss +43 -5
  99. package/scss/components/SidePanel/_side-panel.scss +22 -3
  100. package/scss/components/WebTerminal/_storybook-styles.scss +5 -0
  101. package/scss/components/WebTerminal/_web-terminal.scss +14 -4
@@ -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;
@@ -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,10 +616,12 @@ 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;
624
+ cellEditorRef.current.style.width = activeCellRef === null || activeCellRef === void 0 ? void 0 : activeCellRef.current.style.width;
616
625
  }; // Sets the initial placement of the cell editor cursor at the end of the text area
617
626
  // this is not done for us by default in Safari
618
627
 
@@ -733,7 +742,7 @@ var DataSpreadsheet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
733
742
  activeCellRef: activeCellRef,
734
743
  cellEditorRef: cellEditorRef,
735
744
  cellEditorRulerRef: cellEditorRulerRef,
736
- columns: columns,
745
+ visibleColumns: visibleColumns,
737
746
  defaultColumn: defaultColumn,
738
747
  cellEditorValue: cellEditorValue
739
748
  });
@@ -803,7 +812,10 @@ var DataSpreadsheet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
803
812
  setCurrentMatcher: setCurrentMatcher,
804
813
  setSelectionAreaData: setSelectionAreaData,
805
814
  totalVisibleColumns: totalVisibleColumns,
806
- updateActiveCellCoordinates: updateActiveCellCoordinates
815
+ updateActiveCellCoordinates: updateActiveCellCoordinates,
816
+ setHeaderCellHoldActive: setHeaderCellHoldActive,
817
+ headerCellHoldActive: headerCellHoldActive,
818
+ visibleColumns: visibleColumns
807
819
  }), /*#__PURE__*/_react.default.createElement(_DataSpreadsheetBody.DataSpreadsheetBody, {
808
820
  activeCellCoordinates: activeCellCoordinates,
809
821
  ref: spreadsheetRef,
@@ -832,7 +844,10 @@ var DataSpreadsheet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
832
844
  columns: columns,
833
845
  defaultEmptyRowCount: defaultEmptyRowCount,
834
846
  setActiveCellInsideSelectionArea: setActiveCellInsideSelectionArea,
835
- totalVisibleColumns: totalVisibleColumns
847
+ totalVisibleColumns: totalVisibleColumns,
848
+ setHeaderCellHoldActive: setHeaderCellHoldActive,
849
+ setColumnOrder: setColumnOrder,
850
+ visibleColumns: visibleColumns
836
851
  }), /*#__PURE__*/_react.default.createElement("button", {
837
852
  onMouseDown: handleActiveCellMouseDown,
838
853
  onClick: handleActiveCellClick,
@@ -15,6 +15,8 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
15
15
 
16
16
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
17
17
 
18
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
19
+
18
20
  var _react = _interopRequireWildcard(require("react"));
19
21
 
20
22
  var _propTypes = _interopRequireDefault(require("prop-types"));
@@ -39,10 +41,14 @@ var _createCellSelectionArea = require("./utils/createCellSelectionArea");
39
41
 
40
42
  var _checkActiveHeaderCell = require("./utils/checkActiveHeaderCell");
41
43
 
44
+ var _checkSelectedHeaderCell = require("./utils/checkSelectedHeaderCell");
45
+
42
46
  var _handleHeaderCellSelection = require("./utils/handleHeaderCellSelection");
43
47
 
44
48
  var _getSpreadsheetWidth = require("./utils/getSpreadsheetWidth");
45
49
 
50
+ var _hooks2 = require("./hooks");
51
+
46
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); }
47
53
 
48
54
  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; }
@@ -77,7 +83,16 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
77
83
  setCurrentMatcher = _ref.setCurrentMatcher,
78
84
  onSelectionAreaChange = _ref.onSelectionAreaChange,
79
85
  setActiveCellInsideSelectionArea = _ref.setActiveCellInsideSelectionArea,
80
- totalVisibleColumns = _ref.totalVisibleColumns;
86
+ totalVisibleColumns = _ref.totalVisibleColumns,
87
+ setHeaderCellHoldActive = _ref.setHeaderCellHoldActive,
88
+ setColumnOrder = _ref.setColumnOrder,
89
+ visibleColumns = _ref.visibleColumns;
90
+
91
+ var _useState = (0, _react.useState)(false),
92
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
93
+ validStartingPoint = _useState2[0],
94
+ setValidStartingPoint = _useState2[1];
95
+
81
96
  var contentScrollRef = (0, _react.useRef)();
82
97
  var previousState = (0, _hooks.usePreviousValue)({
83
98
  selectionAreaData: selectionAreaData,
@@ -142,14 +157,15 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
142
157
  defaultColumn: defaultColumn,
143
158
  selectionAreas: selectionAreas,
144
159
  setSelectionAreas: setSelectionAreas,
145
- setActiveCellInsideSelectionArea: setActiveCellInsideSelectionArea
160
+ setActiveCellInsideSelectionArea: setActiveCellInsideSelectionArea,
161
+ visibleColumns: visibleColumns
146
162
  });
147
163
  }
148
164
 
149
165
  return;
150
166
  });
151
167
  }
152
- }, [selectionAreas, setSelectionAreas, defaultColumn, onSelectionAreaChange, setSelectionAreaData, ref, activeCellCoordinates, setActiveCellInsideSelectionArea]);
168
+ }, [selectionAreas, setSelectionAreas, defaultColumn, onSelectionAreaChange, setSelectionAreaData, ref, activeCellCoordinates, setActiveCellInsideSelectionArea, visibleColumns]);
153
169
 
154
170
  var populateSelectionAreaCellData = function populateSelectionAreaCellData(_ref2) {
155
171
  var rowStart = _ref2.rowStart,
@@ -165,41 +181,23 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
165
181
  }
166
182
 
167
183
  return cellContainer;
168
- }; // Mouse up
169
-
170
-
171
- (0, _react.useEffect)(function () {
172
- var handleMouseUp = function handleMouseUp(event) {
173
- setClickAndHoldActive(false);
174
- var cellButton = event.target.closest(".".concat(blockClass, "__body--td"));
175
-
176
- if (cellButton) {
177
- var endCellCoordinates = {
178
- row: Number(cellButton.getAttribute('data-row-index')),
179
- column: Number(cellButton.getAttribute('data-column-index'))
180
- };
181
- setSelectionAreas(function (prev) {
182
- var selectionAreaClone = (0, _deepCloneObject.deepCloneObject)(prev);
183
- var indexOfItemToUpdate = selectionAreaClone.findIndex(function (item) {
184
- return item.matcher === currentMatcher;
185
- }); // No items in the array have an object that matches the value of currentMatcher
186
-
187
- if (indexOfItemToUpdate === -1) {
188
- return prev;
189
- }
190
-
191
- selectionAreaClone[indexOfItemToUpdate].point2 = endCellCoordinates;
192
- selectionAreaClone[indexOfItemToUpdate].areaCreated = false;
193
- return selectionAreaClone;
194
- });
195
- }
196
- };
184
+ };
197
185
 
198
- document.addEventListener('mouseup', handleMouseUp);
199
- return function () {
200
- document.removeEventListener('mouseup', handleMouseUp);
201
- };
202
- }, [selectionAreas, currentMatcher, setSelectionAreas, setClickAndHoldActive, setCurrentMatcher, ref]); // Make sure that if the cellSize prop changes, the active
186
+ (0, _hooks2.useSpreadsheetMouseUp)({
187
+ currentMatcher: currentMatcher,
188
+ setClickAndHoldActive: setClickAndHoldActive,
189
+ setSelectionAreas: setSelectionAreas,
190
+ setValidStartingPoint: setValidStartingPoint,
191
+ validStartingPoint: validStartingPoint,
192
+ ref: ref,
193
+ setHeaderCellHoldActive: setHeaderCellHoldActive,
194
+ setColumnOrder: setColumnOrder,
195
+ visibleColumns: visibleColumns,
196
+ setActiveCellCoordinates: setActiveCellCoordinates,
197
+ rows: rows,
198
+ activeCellCoordinates: activeCellCoordinates,
199
+ defaultColumn: defaultColumn
200
+ }); // Make sure that if the cellSize prop changes, the active
203
201
  // cell also gets updated with the new size
204
202
 
205
203
  (0, _react.useEffect)(function () {
@@ -215,6 +213,9 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
215
213
  var handleBodyCellClick = (0, _react.useCallback)(function (cell, columnIndex) {
216
214
  return function (event) {
217
215
  event.preventDefault();
216
+ var closestBodyCell = event.target.closest(".".concat(blockClass, "__body--td"));
217
+ var isValidSelectionAreaStart = closestBodyCell.classList.contains("".concat(blockClass, "__body--td"));
218
+ setValidStartingPoint(isValidSelectionAreaStart);
218
219
  var isHoldingCommandKey = event.metaKey || event.ctrlKey;
219
220
  var isHoldingShiftKey = event.shiftKey;
220
221
  setContainerHasFocus(true);
@@ -372,6 +373,8 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
372
373
  var row = rows[index];
373
374
 
374
375
  if (rows && rows.length) {
376
+ var _cx;
377
+
375
378
  prepareRow(row);
376
379
  return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, row.getRowProps({
377
380
  style: style
@@ -389,11 +392,13 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
389
392
  "data-column-index": "header",
390
393
  type: "button",
391
394
  onClick: handleRowHeaderClick(index),
392
- 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'))),
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)),
393
396
  style: {
394
397
  width: defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeaderWidth
395
398
  }
396
399
  }, index + 1)), row.cells.map(function (cell, index) {
400
+ var _cell$column;
401
+
397
402
  return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
398
403
  key: "cell_".concat(index),
399
404
  "aria-colindex": index + 1
@@ -401,7 +406,7 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
401
406
  role: "gridcell",
402
407
  style: _objectSpread(_objectSpread({}, cell.getCellProps().style), {}, {
403
408
  display: 'grid',
404
- minWidth: defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.width
409
+ 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)
405
410
  })
406
411
  }), /*#__PURE__*/_react.default.createElement("button", {
407
412
  id: "".concat(blockClass, "__cell--").concat(cell.row.index, "--").concat(index),
@@ -430,7 +435,8 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
430
435
  scrollBarSizeValue: scrollBarSize,
431
436
  totalVisibleColumns: totalVisibleColumns,
432
437
  defaultColumn: defaultColumn,
433
- totalColumnsWidth: totalColumnsWidth
438
+ totalColumnsWidth: totalColumnsWidth,
439
+ visibleColumns: visibleColumns
434
440
  }),
435
441
  outerRef: contentScrollRef
436
442
  }, rows !== null && rows !== void 0 && rows.length ? RenderRow : RenderEmptyRows));
@@ -544,6 +550,11 @@ DataSpreadsheetBody.propTypes = {
544
550
  */
545
551
  setClickAndHoldActive: _propTypes.default.func,
546
552
 
553
+ /**
554
+ * Setter fn for column ordering, provided from react-table
555
+ */
556
+ setColumnOrder: _propTypes.default.func,
557
+
547
558
  /**
548
559
  * Setter fn for containerHasFocus state value
549
560
  */
@@ -554,6 +565,11 @@ DataSpreadsheetBody.propTypes = {
554
565
  */
555
566
  setCurrentMatcher: _propTypes.default.func,
556
567
 
568
+ /**
569
+ * Setter fn for header cell hold active value
570
+ */
571
+ setHeaderCellHoldActive: _propTypes.default.func,
572
+
557
573
  /**
558
574
  * Setter fn for selectionAreaData state value
559
575
  */
@@ -573,5 +589,10 @@ DataSpreadsheetBody.propTypes = {
573
589
  * The total number of columns to be initially visible, additional columns will be rendered and
574
590
  * visible via horizontal scrollbar
575
591
  */
576
- totalVisibleColumns: _propTypes.default.number
592
+ totalVisibleColumns: _propTypes.default.number,
593
+
594
+ /**
595
+ * Prop from react-table used to reorder columns
596
+ */
597
+ visibleColumns: _propTypes.default.array
577
598
  };