@carbon/ibm-products 1.17.0 → 1.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -27
- package/css/index-full-carbon.css +144 -78
- package/css/index-full-carbon.css.map +1 -1
- package/css/index-full-carbon.min.css +4 -4
- package/css/index-full-carbon.min.css.map +1 -1
- package/css/index-without-carbon.css +27 -12
- package/css/index-without-carbon.css.map +1 -1
- package/css/index-without-carbon.min.css +2 -2
- package/css/index-without-carbon.min.css.map +1 -1
- package/css/index.css +53 -43
- package/css/index.css.map +1 -1
- package/css/index.min.css +4 -4
- package/css/index.min.css.map +1 -1
- package/es/components/AddSelect/AddSelect.js +30 -6
- package/es/components/AddSelect/AddSelectColumn.js +31 -73
- package/es/components/AddSelect/AddSelectFilter.js +2 -2
- package/es/components/AddSelect/AddSelectSort.js +61 -0
- package/es/components/AddSelect/add-select-utils.js +21 -0
- package/es/components/AddSelect/hooks/useItemSort.js +20 -0
- package/es/components/DataSpreadsheet/DataSpreadsheet.js +26 -13
- package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +51 -40
- package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +60 -3
- package/es/components/DataSpreadsheet/hooks/index.js +3 -1
- package/es/components/DataSpreadsheet/hooks/useSpreadsheetEdit.js +15 -14
- package/es/components/DataSpreadsheet/hooks/useSpreadsheetMouseMove.js +60 -0
- package/es/components/DataSpreadsheet/hooks/useSpreadsheetMouseUp.js +153 -0
- package/es/components/DataSpreadsheet/utils/createCellSelectionArea.js +3 -3
- package/es/components/DataSpreadsheet/utils/moveColumnIndicatorLine.js +34 -0
- package/lib/components/AddSelect/AddSelect.js +31 -6
- package/lib/components/AddSelect/AddSelectColumn.js +32 -71
- package/lib/components/AddSelect/AddSelectFilter.js +2 -2
- package/lib/components/AddSelect/AddSelectSort.js +79 -0
- package/lib/components/AddSelect/add-select-utils.js +29 -2
- package/lib/components/AddSelect/hooks/useItemSort.js +33 -0
- package/lib/components/DataSpreadsheet/DataSpreadsheet.js +25 -12
- package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +52 -39
- package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +62 -3
- package/lib/components/DataSpreadsheet/hooks/index.js +17 -1
- package/lib/components/DataSpreadsheet/hooks/useSpreadsheetEdit.js +14 -14
- package/lib/components/DataSpreadsheet/hooks/useSpreadsheetMouseMove.js +74 -0
- package/lib/components/DataSpreadsheet/hooks/useSpreadsheetMouseUp.js +161 -0
- package/lib/components/DataSpreadsheet/utils/createCellSelectionArea.js +3 -3
- package/lib/components/DataSpreadsheet/utils/moveColumnIndicatorLine.js +45 -0
- package/package.json +11 -10
- package/scss/components/AddSelect/_add-select.scss +6 -0
- package/scss/components/DataSpreadsheet/_data-spreadsheet.scss +21 -13
@@ -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
|
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
|
63
|
-
|
64
|
-
|
65
|
-
|
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
|
73
|
-
|
74
|
-
filters =
|
75
|
-
setFilters =
|
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]); //
|
85
|
-
|
86
|
-
var
|
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$
|
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
|
-
}) : [];
|
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
|
164
|
-
|
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(
|
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
|
-
},
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
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(
|
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:
|
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", {
|
@@ -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
|
-
|
163
|
-
|
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
|
173
|
-
|
174
|
-
activeCellContent =
|
175
|
-
setActiveCellContent =
|
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
|
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 ?
|
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
|
-
|
745
|
+
visibleColumns: visibleColumns,
|
738
746
|
defaultColumn: defaultColumn,
|
739
747
|
cellEditorValue: cellEditorValue
|
740
748
|
});
|
@@ -804,7 +812,9 @@ 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
|
808
818
|
}), /*#__PURE__*/_react.default.createElement(_DataSpreadsheetBody.DataSpreadsheetBody, {
|
809
819
|
activeCellCoordinates: activeCellCoordinates,
|
810
820
|
ref: spreadsheetRef,
|
@@ -833,7 +843,10 @@ var DataSpreadsheet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
|
|
833
843
|
columns: columns,
|
834
844
|
defaultEmptyRowCount: defaultEmptyRowCount,
|
835
845
|
setActiveCellInsideSelectionArea: setActiveCellInsideSelectionArea,
|
836
|
-
totalVisibleColumns: totalVisibleColumns
|
846
|
+
totalVisibleColumns: totalVisibleColumns,
|
847
|
+
setHeaderCellHoldActive: setHeaderCellHoldActive,
|
848
|
+
setColumnOrder: setColumnOrder,
|
849
|
+
visibleColumns: visibleColumns
|
837
850
|
}), /*#__PURE__*/_react.default.createElement("button", {
|
838
851
|
onMouseDown: handleActiveCellMouseDown,
|
839
852
|
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"));
|
@@ -45,6 +47,8 @@ var _handleHeaderCellSelection = require("./utils/handleHeaderCellSelection");
|
|
45
47
|
|
46
48
|
var _getSpreadsheetWidth = require("./utils/getSpreadsheetWidth");
|
47
49
|
|
50
|
+
var _hooks2 = require("./hooks");
|
51
|
+
|
48
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); }
|
49
53
|
|
50
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; }
|
@@ -79,7 +83,16 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
|
|
79
83
|
setCurrentMatcher = _ref.setCurrentMatcher,
|
80
84
|
onSelectionAreaChange = _ref.onSelectionAreaChange,
|
81
85
|
setActiveCellInsideSelectionArea = _ref.setActiveCellInsideSelectionArea,
|
82
|
-
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
|
+
|
83
96
|
var contentScrollRef = (0, _react.useRef)();
|
84
97
|
var previousState = (0, _hooks.usePreviousValue)({
|
85
98
|
selectionAreaData: selectionAreaData,
|
@@ -141,18 +154,18 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
|
|
141
154
|
ref: ref,
|
142
155
|
area: area,
|
143
156
|
blockClass: blockClass,
|
144
|
-
columns: columns,
|
145
157
|
defaultColumn: defaultColumn,
|
146
158
|
selectionAreas: selectionAreas,
|
147
159
|
setSelectionAreas: setSelectionAreas,
|
148
|
-
setActiveCellInsideSelectionArea: setActiveCellInsideSelectionArea
|
160
|
+
setActiveCellInsideSelectionArea: setActiveCellInsideSelectionArea,
|
161
|
+
visibleColumns: visibleColumns
|
149
162
|
});
|
150
163
|
}
|
151
164
|
|
152
165
|
return;
|
153
166
|
});
|
154
167
|
}
|
155
|
-
}, [selectionAreas, setSelectionAreas, defaultColumn, onSelectionAreaChange, setSelectionAreaData, ref, activeCellCoordinates, setActiveCellInsideSelectionArea,
|
168
|
+
}, [selectionAreas, setSelectionAreas, defaultColumn, onSelectionAreaChange, setSelectionAreaData, ref, activeCellCoordinates, setActiveCellInsideSelectionArea, visibleColumns]);
|
156
169
|
|
157
170
|
var populateSelectionAreaCellData = function populateSelectionAreaCellData(_ref2) {
|
158
171
|
var rowStart = _ref2.rowStart,
|
@@ -168,41 +181,23 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
|
|
168
181
|
}
|
169
182
|
|
170
183
|
return cellContainer;
|
171
|
-
};
|
172
|
-
|
173
|
-
|
174
|
-
(0, _react.useEffect)(function () {
|
175
|
-
var handleMouseUp = function handleMouseUp(event) {
|
176
|
-
setClickAndHoldActive(false);
|
177
|
-
var cellButton = event.target.closest(".".concat(blockClass, "__body--td"));
|
178
|
-
|
179
|
-
if (cellButton) {
|
180
|
-
var endCellCoordinates = {
|
181
|
-
row: Number(cellButton.getAttribute('data-row-index')),
|
182
|
-
column: Number(cellButton.getAttribute('data-column-index'))
|
183
|
-
};
|
184
|
-
setSelectionAreas(function (prev) {
|
185
|
-
var selectionAreaClone = (0, _deepCloneObject.deepCloneObject)(prev);
|
186
|
-
var indexOfItemToUpdate = selectionAreaClone.findIndex(function (item) {
|
187
|
-
return item.matcher === currentMatcher;
|
188
|
-
}); // No items in the array have an object that matches the value of currentMatcher
|
189
|
-
|
190
|
-
if (indexOfItemToUpdate === -1) {
|
191
|
-
return prev;
|
192
|
-
}
|
193
|
-
|
194
|
-
selectionAreaClone[indexOfItemToUpdate].point2 = endCellCoordinates;
|
195
|
-
selectionAreaClone[indexOfItemToUpdate].areaCreated = false;
|
196
|
-
return selectionAreaClone;
|
197
|
-
});
|
198
|
-
}
|
199
|
-
};
|
184
|
+
};
|
200
185
|
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
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
|
206
201
|
// cell also gets updated with the new size
|
207
202
|
|
208
203
|
(0, _react.useEffect)(function () {
|
@@ -218,6 +213,9 @@ var DataSpreadsheetBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
|
|
218
213
|
var handleBodyCellClick = (0, _react.useCallback)(function (cell, columnIndex) {
|
219
214
|
return function (event) {
|
220
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);
|
221
219
|
var isHoldingCommandKey = event.metaKey || event.ctrlKey;
|
222
220
|
var isHoldingShiftKey = event.shiftKey;
|
223
221
|
setContainerHasFocus(true);
|
@@ -549,6 +547,11 @@ DataSpreadsheetBody.propTypes = {
|
|
549
547
|
*/
|
550
548
|
setClickAndHoldActive: _propTypes.default.func,
|
551
549
|
|
550
|
+
/**
|
551
|
+
* Setter fn for column ordering, provided from react-table
|
552
|
+
*/
|
553
|
+
setColumnOrder: _propTypes.default.func,
|
554
|
+
|
552
555
|
/**
|
553
556
|
* Setter fn for containerHasFocus state value
|
554
557
|
*/
|
@@ -559,6 +562,11 @@ DataSpreadsheetBody.propTypes = {
|
|
559
562
|
*/
|
560
563
|
setCurrentMatcher: _propTypes.default.func,
|
561
564
|
|
565
|
+
/**
|
566
|
+
* Setter fn for header cell hold active value
|
567
|
+
*/
|
568
|
+
setHeaderCellHoldActive: _propTypes.default.func,
|
569
|
+
|
562
570
|
/**
|
563
571
|
* Setter fn for selectionAreaData state value
|
564
572
|
*/
|
@@ -578,5 +586,10 @@ DataSpreadsheetBody.propTypes = {
|
|
578
586
|
* The total number of columns to be initially visible, additional columns will be rendered and
|
579
587
|
* visible via horizontal scrollbar
|
580
588
|
*/
|
581
|
-
totalVisibleColumns: _propTypes.default.number
|
589
|
+
totalVisibleColumns: _propTypes.default.number,
|
590
|
+
|
591
|
+
/**
|
592
|
+
* Prop from react-table used to reorder columns
|
593
|
+
*/
|
594
|
+
visibleColumns: _propTypes.default.array
|
582
595
|
};
|