@cashub/ui 0.37.1 → 0.38.1
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/package.json +2 -1
- package/table/InfiniteGridTable.js +316 -0
- package/table/index.js +7 -0
- package/table/subComponent/Resizer.js +3 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cashub/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.38.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"author": "CasHUB Team",
|
|
6
6
|
"description": "CasHUB UI components library",
|
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
"react-router-dom": "^5.2.0",
|
|
41
41
|
"react-toastify": "^7.0.4",
|
|
42
42
|
"react-transition-group": "^4.4.2",
|
|
43
|
+
"react-window": "^1.8.11",
|
|
43
44
|
"styled-components": "^5.3.0",
|
|
44
45
|
"treeflex": "^2.0.1",
|
|
45
46
|
"xml-formatter": "^3.6.3"
|
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
9
|
+
var _hooks = require("./hooks");
|
|
10
|
+
var _scrollbar = _interopRequireDefault(require("../styles/mixin/scrollbar"));
|
|
11
|
+
var _GridTableHeadCell = _interopRequireDefault(require("./subComponent/GridTableHeadCell"));
|
|
12
|
+
var _Resizer = _interopRequireDefault(require("./subComponent/Resizer"));
|
|
13
|
+
var _Popover = _interopRequireDefault(require("../popover/Popover"));
|
|
14
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4;
|
|
16
|
+
const _excluded = ["title", "fieldName", "render", "custom"];
|
|
17
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
18
|
+
function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
|
|
19
|
+
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
20
|
+
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }
|
|
21
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
22
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
23
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
24
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
25
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
26
|
+
const ROW_HEIGHT = 48;
|
|
27
|
+
const OVER_SCAN_COUNT = 5;
|
|
28
|
+
const InfiniteGridTable = _ref => {
|
|
29
|
+
let {
|
|
30
|
+
containerHeight,
|
|
31
|
+
scrollTop,
|
|
32
|
+
columns,
|
|
33
|
+
data,
|
|
34
|
+
sortColumn,
|
|
35
|
+
sortType,
|
|
36
|
+
onSortChange,
|
|
37
|
+
backgroundReverse,
|
|
38
|
+
translation
|
|
39
|
+
} = _ref;
|
|
40
|
+
const wrapperRef = (0, _react.useRef)(null);
|
|
41
|
+
const tableRef = (0, _react.useRef)(null);
|
|
42
|
+
const tableHeadRef = (0, _react.useRef)(null);
|
|
43
|
+
const [wrapperTop, setWrapperTop] = (0, _react.useState)(0);
|
|
44
|
+
const [tableColumns, setTableColumns] = (0, _react.useState)(columns);
|
|
45
|
+
const [tableWidth, setTableWidth] = (0, _react.useState)(0);
|
|
46
|
+
const [restWidth, setRestWidth] = (0, _react.useState)(0);
|
|
47
|
+
const texts = (0, _react.useMemo)(() => {
|
|
48
|
+
const defaultTexts = {
|
|
49
|
+
info: 'Showing _START_ to _END_ of _TOTAL_ entries',
|
|
50
|
+
empty: 'No data available in table'
|
|
51
|
+
};
|
|
52
|
+
return _objectSpread(_objectSpread({}, defaultTexts), translation);
|
|
53
|
+
}, [translation]);
|
|
54
|
+
const tableHeight = (0, _react.useMemo)(() => {
|
|
55
|
+
var _tableHeadRef$current;
|
|
56
|
+
const theadHeight = ((_tableHeadRef$current = tableHeadRef.current) === null || _tableHeadRef$current === void 0 ? void 0 : _tableHeadRef$current.offsetHeight) || 0;
|
|
57
|
+
// when data is empty, table will generate a row to show a message
|
|
58
|
+
const rowCounts = data.length || 1;
|
|
59
|
+
return theadHeight + rowCounts * ROW_HEIGHT;
|
|
60
|
+
}, [data.length]);
|
|
61
|
+
const visibleRowCounts = (0, _react.useMemo)(() => {
|
|
62
|
+
return Math.ceil(containerHeight / ROW_HEIGHT);
|
|
63
|
+
}, [containerHeight]);
|
|
64
|
+
const startIndex = (0, _react.useMemo)(() => {
|
|
65
|
+
const top = wrapperTop + scrollTop;
|
|
66
|
+
return Math.max(0, Math.floor(top / ROW_HEIGHT) - OVER_SCAN_COUNT);
|
|
67
|
+
}, [wrapperTop, scrollTop]);
|
|
68
|
+
const endIndex = (0, _react.useMemo)(() => {
|
|
69
|
+
return Math.min(data.length, startIndex + visibleRowCounts + OVER_SCAN_COUNT * 2);
|
|
70
|
+
}, [data.length, startIndex, visibleRowCounts]);
|
|
71
|
+
const visibleData = (0, _react.useMemo)(() => {
|
|
72
|
+
return data.slice(startIndex, endIndex);
|
|
73
|
+
}, [data, startIndex, endIndex]);
|
|
74
|
+
const handleSortChange = (0, _react.useCallback)(columnName => {
|
|
75
|
+
if (onSortChange) {
|
|
76
|
+
onSortChange(columnName);
|
|
77
|
+
}
|
|
78
|
+
}, [onSortChange]);
|
|
79
|
+
const calculateWrapperTop = (0, _react.useCallback)(() => {
|
|
80
|
+
const {
|
|
81
|
+
top
|
|
82
|
+
} = wrapperRef.current.getBoundingClientRect();
|
|
83
|
+
setWrapperTop(top + window.scrollY);
|
|
84
|
+
}, []);
|
|
85
|
+
const calculateTableWidth = (0, _react.useCallback)(() => {
|
|
86
|
+
setTableWidth(tableRef.current.offsetWidth);
|
|
87
|
+
setRestWidth(previousWidth => {
|
|
88
|
+
const containerWidth = wrapperRef.current.offsetWidth;
|
|
89
|
+
const tableWidth = tableRef.current.offsetWidth - previousWidth;
|
|
90
|
+
if (containerWidth > tableWidth) {
|
|
91
|
+
return containerWidth - tableWidth;
|
|
92
|
+
}
|
|
93
|
+
return 0;
|
|
94
|
+
});
|
|
95
|
+
}, []);
|
|
96
|
+
const handleResize = (0, _react.useCallback)(() => {
|
|
97
|
+
calculateWrapperTop();
|
|
98
|
+
calculateTableWidth();
|
|
99
|
+
}, [calculateWrapperTop, calculateTableWidth]);
|
|
100
|
+
const handleResizeColumn = (0, _react.useCallback)((targetIndex, width) => {
|
|
101
|
+
setTableColumns(previous => {
|
|
102
|
+
return previous.map((column, index) => {
|
|
103
|
+
if (index === targetIndex) {
|
|
104
|
+
return _objectSpread(_objectSpread({}, column), {}, {
|
|
105
|
+
width
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
return _objectSpread({}, column);
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
}, []);
|
|
112
|
+
const handleScroll = (0, _react.useCallback)(event => {
|
|
113
|
+
const {
|
|
114
|
+
target
|
|
115
|
+
} = event;
|
|
116
|
+
wrapperRef.current.scrollLeft = target.scrollLeft;
|
|
117
|
+
}, []);
|
|
118
|
+
const showFullValue = (0, _react.useCallback)(event => {
|
|
119
|
+
let {
|
|
120
|
+
id
|
|
121
|
+
} = event.target;
|
|
122
|
+
if (!id) {
|
|
123
|
+
({
|
|
124
|
+
id
|
|
125
|
+
} = event.currentTarget);
|
|
126
|
+
event.target.id = id;
|
|
127
|
+
}
|
|
128
|
+
const {
|
|
129
|
+
offsetWidth,
|
|
130
|
+
scrollWidth,
|
|
131
|
+
innerText
|
|
132
|
+
} = event.target;
|
|
133
|
+
if (scrollWidth >= offsetWidth && innerText) {
|
|
134
|
+
event.stopPropagation();
|
|
135
|
+
(0, _Popover.default)({
|
|
136
|
+
id,
|
|
137
|
+
target: event.target,
|
|
138
|
+
content: innerText,
|
|
139
|
+
boundary: tableRef.current
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
}, []);
|
|
143
|
+
|
|
144
|
+
// generate sort icon area
|
|
145
|
+
const generateSort = (0, _hooks.useGenerateSort)(sortColumn, sortType);
|
|
146
|
+
const tableHeads = (0, _react.useMemo)(() => {
|
|
147
|
+
const tableHeads = tableColumns.map((column, index) => {
|
|
148
|
+
const {
|
|
149
|
+
title,
|
|
150
|
+
fieldName,
|
|
151
|
+
width,
|
|
152
|
+
sortable,
|
|
153
|
+
align
|
|
154
|
+
} = column;
|
|
155
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_GridTableHeadCell.default, {
|
|
156
|
+
width: width,
|
|
157
|
+
align: align,
|
|
158
|
+
backgroundReverse: backgroundReverse,
|
|
159
|
+
sortable: sortable,
|
|
160
|
+
onClick: () => {
|
|
161
|
+
sortable && handleSortChange(fieldName);
|
|
162
|
+
},
|
|
163
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
164
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
165
|
+
id: fieldName,
|
|
166
|
+
onClick: showFullValue,
|
|
167
|
+
children: title
|
|
168
|
+
}), sortable && generateSort(fieldName)]
|
|
169
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Resizer.default, {
|
|
170
|
+
index: index,
|
|
171
|
+
onResize: handleResizeColumn
|
|
172
|
+
})]
|
|
173
|
+
}, "TH".concat(index));
|
|
174
|
+
});
|
|
175
|
+
tableHeads.push(/*#__PURE__*/(0, _jsxRuntime.jsx)(_GridTableHeadCell.default, {
|
|
176
|
+
role: "presentation",
|
|
177
|
+
width: restWidth,
|
|
178
|
+
backgroundReverse: backgroundReverse
|
|
179
|
+
}, 'rest'));
|
|
180
|
+
return tableHeads;
|
|
181
|
+
}, [backgroundReverse, tableColumns, handleSortChange, generateSort, showFullValue, handleResizeColumn, restWidth]);
|
|
182
|
+
const tableRows = (0, _react.useMemo)(() => {
|
|
183
|
+
if (visibleData.length === 0) {
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
return visibleData.map((row, rowIndex) => {
|
|
187
|
+
const tds = tableColumns.map((column, columnIndex) => {
|
|
188
|
+
const {
|
|
189
|
+
title,
|
|
190
|
+
fieldName,
|
|
191
|
+
render,
|
|
192
|
+
custom
|
|
193
|
+
} = column,
|
|
194
|
+
props = _objectWithoutProperties(column, _excluded);
|
|
195
|
+
const key = rowIndex + columnIndex.toString();
|
|
196
|
+
let renderedData = null;
|
|
197
|
+
if (custom && render) {
|
|
198
|
+
// call render function to get custom data(fully)
|
|
199
|
+
renderedData = render(row);
|
|
200
|
+
} else {
|
|
201
|
+
// call render function to get custom data(part)
|
|
202
|
+
renderedData = /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
203
|
+
id: key,
|
|
204
|
+
onClick: showFullValue,
|
|
205
|
+
children: render ? render(row[fieldName], row) : String(row[fieldName])
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(TD, _objectSpread(_objectSpread({
|
|
209
|
+
"data-label": title,
|
|
210
|
+
backgroundReverse: backgroundReverse
|
|
211
|
+
}, props), {}, {
|
|
212
|
+
children: renderedData
|
|
213
|
+
}), columnIndex);
|
|
214
|
+
});
|
|
215
|
+
tds.push(/*#__PURE__*/(0, _jsxRuntime.jsx)(TD, {
|
|
216
|
+
role: "presentation",
|
|
217
|
+
width: restWidth,
|
|
218
|
+
backgroundReverse: backgroundReverse
|
|
219
|
+
}, 'rest'));
|
|
220
|
+
const index = rowIndex + startIndex;
|
|
221
|
+
const top = index * ROW_HEIGHT + tableHeadRef.current.offsetHeight;
|
|
222
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("tr", {
|
|
223
|
+
"data-index": index,
|
|
224
|
+
style: {
|
|
225
|
+
position: 'absolute',
|
|
226
|
+
left: 0,
|
|
227
|
+
top: "".concat(top, "px")
|
|
228
|
+
},
|
|
229
|
+
children: tds
|
|
230
|
+
}, index);
|
|
231
|
+
});
|
|
232
|
+
}, [backgroundReverse, tableColumns, visibleData, showFullValue, restWidth, startIndex]);
|
|
233
|
+
const generateEmptyMessage = (0, _react.useCallback)(() => {
|
|
234
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("tr", {
|
|
235
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(TD, {
|
|
236
|
+
center: true,
|
|
237
|
+
colSpan: tableColumns.length,
|
|
238
|
+
backgroundReverse: backgroundReverse,
|
|
239
|
+
children: texts.empty
|
|
240
|
+
})
|
|
241
|
+
});
|
|
242
|
+
}, [backgroundReverse, tableColumns, texts]);
|
|
243
|
+
(0, _react.useEffect)(() => {
|
|
244
|
+
setTableColumns(columns);
|
|
245
|
+
}, [columns]);
|
|
246
|
+
(0, _react.useEffect)(() => {
|
|
247
|
+
handleResize();
|
|
248
|
+
}, [tableColumns, handleResize]);
|
|
249
|
+
(0, _react.useEffect)(() => {
|
|
250
|
+
window.addEventListener('resize', handleResize);
|
|
251
|
+
return () => {
|
|
252
|
+
window.removeEventListener('resize', handleResize);
|
|
253
|
+
};
|
|
254
|
+
}, [handleResize]);
|
|
255
|
+
(0, _react.useEffect)(() => {
|
|
256
|
+
if (tableRef.current) {
|
|
257
|
+
setTableWidth(tableRef.current.offsetWidth);
|
|
258
|
+
}
|
|
259
|
+
}, [columns]);
|
|
260
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
261
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(TableWrapper, {
|
|
262
|
+
style: {
|
|
263
|
+
height: "".concat(tableHeight, "px")
|
|
264
|
+
},
|
|
265
|
+
ref: wrapperRef,
|
|
266
|
+
backgroundReverse: backgroundReverse,
|
|
267
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(ResponsiveTable, {
|
|
268
|
+
ref: tableRef,
|
|
269
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("thead", {
|
|
270
|
+
ref: tableHeadRef,
|
|
271
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("tr", {
|
|
272
|
+
children: tableHeads
|
|
273
|
+
})
|
|
274
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("tbody", {
|
|
275
|
+
children: data.length === 0 ? generateEmptyMessage() : tableRows
|
|
276
|
+
})]
|
|
277
|
+
})
|
|
278
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(Scrollbar, {
|
|
279
|
+
backgroundReverse: backgroundReverse,
|
|
280
|
+
width: tableWidth,
|
|
281
|
+
onScroll: handleScroll
|
|
282
|
+
})]
|
|
283
|
+
});
|
|
284
|
+
};
|
|
285
|
+
const TableWrapper = _styledComponents.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n overflow: hidden;\n background: ", ";\n"])), _ref2 => {
|
|
286
|
+
let {
|
|
287
|
+
backgroundReverse
|
|
288
|
+
} = _ref2;
|
|
289
|
+
return backgroundReverse ? 'var(--color-background1)' : 'var(--color-background2)';
|
|
290
|
+
});
|
|
291
|
+
const ResponsiveTable = _styledComponents.default.table(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n /* make fixed width work */\n position: relative;\n width: 0px;\n color: var(--font-on-background);\n table-layout: fixed;\n border-collapse: collapse;\n"])));
|
|
292
|
+
const TD = _styledComponents.default.td(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n height: 48px;\n padding: 0 var(--spacing-xs);\n border-top: 1px solid var(--border-color);\n border-right: 1px solid var(--border-color);\n border-bottom: 1px solid var(--border-color);\n text-align: ", ";\n background: ", ";\n\n &:last-child {\n border-right: none;\n padding: 0;\n }\n\n > span {\n display: inline-block;\n width: 100%;\n padding: 0 2px;\n overflow: hidden;\n white-space: pre;\n text-overflow: ellipsis;\n }\n"])), _ref3 => {
|
|
293
|
+
let {
|
|
294
|
+
center
|
|
295
|
+
} = _ref3;
|
|
296
|
+
return center ? 'center' : 'left';
|
|
297
|
+
}, _ref4 => {
|
|
298
|
+
let {
|
|
299
|
+
backgroundReverse
|
|
300
|
+
} = _ref4;
|
|
301
|
+
return backgroundReverse ? 'var(--color-background1)' : 'var(--color-background2)';
|
|
302
|
+
});
|
|
303
|
+
const Scrollbar = _styledComponents.default.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n position: sticky;\n bottom: 0;\n width: 100%;\n overflow: auto;\n background: ", ";\n\n ::before {\n display: block;\n content: '';\n width: ", ";\n height: 1px;\n }\n\n ", "\n"])), _ref5 => {
|
|
304
|
+
let {
|
|
305
|
+
backgroundReverse
|
|
306
|
+
} = _ref5;
|
|
307
|
+
return backgroundReverse ? 'var(--color-background1)' : 'var(--color-background2)';
|
|
308
|
+
}, _ref6 => {
|
|
309
|
+
let {
|
|
310
|
+
width
|
|
311
|
+
} = _ref6;
|
|
312
|
+
return "".concat(width, "px");
|
|
313
|
+
}, (0, _scrollbar.default)({
|
|
314
|
+
size: 'large'
|
|
315
|
+
}));
|
|
316
|
+
var _default = exports.default = InfiniteGridTable;
|
package/table/index.js
CHANGED
|
@@ -15,6 +15,12 @@ Object.defineProperty(exports, "ImageBox", {
|
|
|
15
15
|
return _ImageBox.default;
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
|
+
Object.defineProperty(exports, "InfiniteGridTable", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _InfiniteGridTable.default;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
18
24
|
Object.defineProperty(exports, "PermissionTable", {
|
|
19
25
|
enumerable: true,
|
|
20
26
|
get: function () {
|
|
@@ -28,6 +34,7 @@ Object.defineProperty(exports, "Table", {
|
|
|
28
34
|
}
|
|
29
35
|
});
|
|
30
36
|
var _GridTable = _interopRequireDefault(require("./GridTable"));
|
|
37
|
+
var _InfiniteGridTable = _interopRequireDefault(require("./InfiniteGridTable"));
|
|
31
38
|
var _Table = _interopRequireDefault(require("./Table"));
|
|
32
39
|
var _PermissionTable = _interopRequireDefault(require("./PermissionTable"));
|
|
33
40
|
var _ImageBox = _interopRequireDefault(require("./ImageBox"));
|
|
@@ -12,6 +12,7 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
12
12
|
function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
|
|
13
13
|
const Resizer = _ref => {
|
|
14
14
|
let {
|
|
15
|
+
index,
|
|
15
16
|
onResize
|
|
16
17
|
} = _ref;
|
|
17
18
|
const [parentNode, setParentNode] = (0, _react.useState)(null);
|
|
@@ -21,9 +22,9 @@ const Resizer = _ref => {
|
|
|
21
22
|
const targetWidth = event.clientX - parentNode.getBoundingClientRect().left;
|
|
22
23
|
parentNode.style.width = "".concat(targetWidth, "px");
|
|
23
24
|
if (typeof onResize === 'function') {
|
|
24
|
-
onResize(targetWidth);
|
|
25
|
+
onResize(index, targetWidth);
|
|
25
26
|
}
|
|
26
|
-
}, [parentNode, onResize]);
|
|
27
|
+
}, [parentNode, index, onResize]);
|
|
27
28
|
const handleMouseUp = (0, _react.useCallback)(event => {
|
|
28
29
|
event.stopPropagation();
|
|
29
30
|
event.preventDefault();
|