@zhenliang/sheet 0.1.7-3.beta.2 → 0.1.7-3.beta.3
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/dist/core/reducers/keyboardReducer.js +2 -1
- package/dist/core/reducers/mouseReducer.js +3 -2
- package/dist/core/reducers/sideEffectReducer.js +3 -3
- package/dist/core/sheet/index.js +23 -8
- package/dist/core/sheet/useRemarkContainer.js +7 -6
- package/dist/core/table/index.js +7 -3
- package/dist/example/valuationAnalyze.js +4 -2
- package/dist/type/sheet.d.ts +2 -0
- package/package.json +1 -1
|
@@ -71,7 +71,8 @@ export var keyboardReducer = {
|
|
|
71
71
|
end = state.end,
|
|
72
72
|
editing = state.editing,
|
|
73
73
|
data = state.data;
|
|
74
|
-
|
|
74
|
+
var freeze = state.freeze;
|
|
75
|
+
if (!start || !end || data !== null && data !== void 0 && (_data$start$row = data[start.row]) !== null && _data$start$row !== void 0 && _data$start$row[start.col].readonly || !(data !== null && data !== void 0 && (_data$start$row2 = data[start.row]) !== null && _data$start$row2 !== void 0 && _data$start$row2[start.col].editable) || freeze) {
|
|
75
76
|
return state;
|
|
76
77
|
}
|
|
77
78
|
if (!editing) {
|
|
@@ -164,8 +164,9 @@ export var mouseReducer = {
|
|
|
164
164
|
var _ref4 = payload,
|
|
165
165
|
row = _ref4.row,
|
|
166
166
|
col = _ref4.col;
|
|
167
|
-
var data = state.data
|
|
168
|
-
|
|
167
|
+
var data = state.data,
|
|
168
|
+
freeze = state.freeze;
|
|
169
|
+
if (data !== null && data !== void 0 && (_data$row$col = data[row][col]) !== null && _data$row$col !== void 0 && _data$row$col.readonly || freeze) {
|
|
169
170
|
return state;
|
|
170
171
|
}
|
|
171
172
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
@@ -206,12 +206,12 @@ export var sideEffectReducer = {
|
|
|
206
206
|
paste: function paste(dispatch, getState) {
|
|
207
207
|
return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
208
208
|
var _extChanges$;
|
|
209
|
-
var _getState8, start, end, cellChangeHandler, history, _getState8$freePaste, freePaste, data, groupConfig, pasteData, changeInfo, changes, extChanges, legalChanges, lastRow, lastIndex, legalExtChanges, newHistory;
|
|
209
|
+
var _getState8, start, end, cellChangeHandler, history, _getState8$freePaste, freePaste, data, freeze, groupConfig, pasteData, changeInfo, changes, extChanges, legalChanges, lastRow, lastIndex, legalExtChanges, newHistory;
|
|
210
210
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
211
211
|
while (1) switch (_context.prev = _context.next) {
|
|
212
212
|
case 0:
|
|
213
|
-
_getState8 = getState(), start = _getState8.start, end = _getState8.end, cellChangeHandler = _getState8.cellChangeHandler, history = _getState8.history, _getState8$freePaste = _getState8.freePaste, freePaste = _getState8$freePaste === void 0 ? false : _getState8$freePaste, data = _getState8.data, groupConfig = _getState8.groupConfig;
|
|
214
|
-
if (!(!start || !end)) {
|
|
213
|
+
_getState8 = getState(), start = _getState8.start, end = _getState8.end, cellChangeHandler = _getState8.cellChangeHandler, history = _getState8.history, _getState8$freePaste = _getState8.freePaste, freePaste = _getState8$freePaste === void 0 ? false : _getState8$freePaste, data = _getState8.data, freeze = _getState8.freeze, groupConfig = _getState8.groupConfig;
|
|
214
|
+
if (!(!start || !end || freeze)) {
|
|
215
215
|
_context.next = 3;
|
|
216
216
|
break;
|
|
217
217
|
}
|
package/dist/core/sheet/index.js
CHANGED
|
@@ -51,6 +51,7 @@ var Sheet = function Sheet(props) {
|
|
|
51
51
|
virtualized = _props$virtualized === void 0 ? false : _props$virtualized,
|
|
52
52
|
className = props.className,
|
|
53
53
|
data = props.data,
|
|
54
|
+
freeze = props.freeze,
|
|
54
55
|
_props$freePaste = props.freePaste,
|
|
55
56
|
freePaste = _props$freePaste === void 0 ? false : _props$freePaste,
|
|
56
57
|
onCellsChanged = props.onCellsChanged,
|
|
@@ -131,10 +132,16 @@ var Sheet = function Sheet(props) {
|
|
|
131
132
|
},
|
|
132
133
|
goTo: function goTo(row, col) {
|
|
133
134
|
dispatch(function (d, getState) {
|
|
134
|
-
var _sheetWrapperRef$curr4;
|
|
135
135
|
var _getState2 = getState(),
|
|
136
136
|
groupConfig = _getState2.groupConfig,
|
|
137
|
-
data = _getState2.data
|
|
137
|
+
data = _getState2.data,
|
|
138
|
+
eventBus = _getState2.eventBus;
|
|
139
|
+
var nextLoop = groupConfig === null || groupConfig === void 0 ? void 0 : groupConfig.groupOpen.some(function (v) {
|
|
140
|
+
return !v;
|
|
141
|
+
});
|
|
142
|
+
if (nextLoop) {
|
|
143
|
+
eventBus === null || eventBus === void 0 || eventBus.emit('group-open-title', true);
|
|
144
|
+
}
|
|
138
145
|
var container = sheetWrapperRef.current;
|
|
139
146
|
if (isNil(row) || isNil(col)) return;
|
|
140
147
|
var actual = rowToActualRow(row, groupConfig, data.length);
|
|
@@ -142,7 +149,15 @@ var Sheet = function Sheet(props) {
|
|
|
142
149
|
var firstRowCell = container.querySelector("td.cell[data-col='".concat(col, "']"));
|
|
143
150
|
var colPosition = firstRowCell ? firstRowCell.offsetLeft - firstRowCell.clientWidth : 0;
|
|
144
151
|
var scrollHeight = actual * rowHeight;
|
|
145
|
-
(
|
|
152
|
+
if (nextLoop) {
|
|
153
|
+
setTimeout(function () {
|
|
154
|
+
var _sheetWrapperRef$curr4;
|
|
155
|
+
(_sheetWrapperRef$curr4 = sheetWrapperRef.current) === null || _sheetWrapperRef$curr4 === void 0 || _sheetWrapperRef$curr4.scrollTo(colPosition, scrollHeight);
|
|
156
|
+
}, 1);
|
|
157
|
+
} else {
|
|
158
|
+
var _sheetWrapperRef$curr5;
|
|
159
|
+
(_sheetWrapperRef$curr5 = sheetWrapperRef.current) === null || _sheetWrapperRef$curr5 === void 0 || _sheetWrapperRef$curr5.scrollTo(colPosition, scrollHeight);
|
|
160
|
+
}
|
|
146
161
|
});
|
|
147
162
|
},
|
|
148
163
|
pushToHistory: function pushToHistory(config) {
|
|
@@ -196,10 +211,11 @@ var Sheet = function Sheet(props) {
|
|
|
196
211
|
cellChangeHandler: onCellsChanged,
|
|
197
212
|
data: data,
|
|
198
213
|
freePaste: freePaste,
|
|
199
|
-
groupConfig: groupConfig
|
|
214
|
+
groupConfig: groupConfig,
|
|
215
|
+
freeze: freeze
|
|
200
216
|
}
|
|
201
217
|
});
|
|
202
|
-
}, [onCellsChanged, data, freePaste, groupConfig]);
|
|
218
|
+
}, [onCellsChanged, data, freePaste, groupConfig, freeze]);
|
|
203
219
|
useCellEvent(dispatch, state);
|
|
204
220
|
useMouseEvent(dispatch, sheetWrapperRef);
|
|
205
221
|
useKeyBoardEvent(dispatch, sheetWrapperRef);
|
|
@@ -211,9 +227,9 @@ var Sheet = function Sheet(props) {
|
|
|
211
227
|
useEffect(function () {
|
|
212
228
|
if (!state.editing && state.start) {
|
|
213
229
|
setTimeout(function () {
|
|
214
|
-
var _sheetWrapperRef$
|
|
230
|
+
var _sheetWrapperRef$curr6;
|
|
215
231
|
// 表格获取焦点 + 接收keyboard event
|
|
216
|
-
(_sheetWrapperRef$
|
|
232
|
+
(_sheetWrapperRef$curr6 = sheetWrapperRef.current) === null || _sheetWrapperRef$curr6 === void 0 || _sheetWrapperRef$curr6.focus({
|
|
217
233
|
preventScroll: true
|
|
218
234
|
});
|
|
219
235
|
}, 1);
|
|
@@ -336,7 +352,6 @@ var Sheet = function Sheet(props) {
|
|
|
336
352
|
handleScroll();
|
|
337
353
|
}
|
|
338
354
|
}, []);
|
|
339
|
-
console.log(menu.showMenu);
|
|
340
355
|
return /*#__PURE__*/_jsx(SheetEventContext.Provider, {
|
|
341
356
|
value: eventBus,
|
|
342
357
|
children: /*#__PURE__*/_jsxs(_Fragment, {
|
|
@@ -11,8 +11,8 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
|
|
|
11
11
|
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
12
12
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
13
13
|
import { useSetState } from "../../hooks";
|
|
14
|
+
import { throttle } from 'lodash';
|
|
14
15
|
import { useCallback, useEffect } from 'react';
|
|
15
|
-
import { debounce } from 'lodash';
|
|
16
16
|
export var useRemarkContainer = function useRemarkContainer(elementRef, start, editing) {
|
|
17
17
|
var showRemark = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
18
18
|
var _useSetState = useSetState({
|
|
@@ -62,7 +62,7 @@ export var useRemarkContainer = function useRemarkContainer(elementRef, start, e
|
|
|
62
62
|
}, [showRemark, editing]);
|
|
63
63
|
useEffect(function () {
|
|
64
64
|
var _elementRef$current, _elementRef$current2;
|
|
65
|
-
var remarkScroll =
|
|
65
|
+
var remarkScroll = throttle(function () {
|
|
66
66
|
setRemarkInfo({
|
|
67
67
|
show: false
|
|
68
68
|
});
|
|
@@ -96,10 +96,11 @@ export var useRemarkContainer = function useRemarkContainer(elementRef, start, e
|
|
|
96
96
|
}
|
|
97
97
|
var io = new IntersectionObserver(function (entries) {
|
|
98
98
|
var ratio = entries[0].intersectionRatio;
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
99
|
+
if (ratio < 1) {
|
|
100
|
+
setRemarkInfo({
|
|
101
|
+
show: false
|
|
102
|
+
});
|
|
103
|
+
}
|
|
103
104
|
}, {
|
|
104
105
|
threshold: 1
|
|
105
106
|
});
|
package/dist/core/table/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
-
var _excluded = ["sheetInstance", "columns", "dataSource", "rowKey", "rowSelection", "groupConfig", "onChange", "handleAdd", "handleBatchAdd", "draggable", "eventHandler", "remarkRender", "handleAddRemark", "showRemark"];
|
|
2
|
+
var _excluded = ["sheetInstance", "columns", "dataSource", "rowKey", "rowSelection", "groupConfig", "onChange", "handleAdd", "handleBatchAdd", "draggable", "eventHandler", "remarkRender", "handleAddRemark", "showRemark", "freeze"];
|
|
3
3
|
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; }
|
|
4
4
|
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; }
|
|
5
5
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
@@ -45,6 +45,8 @@ var Table = function Table(_ref) {
|
|
|
45
45
|
handleAddRemark = _ref.handleAddRemark,
|
|
46
46
|
_ref$showRemark = _ref.showRemark,
|
|
47
47
|
showRemark = _ref$showRemark === void 0 ? false : _ref$showRemark,
|
|
48
|
+
_ref$freeze = _ref.freeze,
|
|
49
|
+
freeze = _ref$freeze === void 0 ? false : _ref$freeze,
|
|
48
50
|
args = _objectWithoutProperties(_ref, _excluded);
|
|
49
51
|
var _useState = useState([[]]),
|
|
50
52
|
_useState2 = _slicedToArray(_useState, 2),
|
|
@@ -102,6 +104,7 @@ var Table = function Table(_ref) {
|
|
|
102
104
|
}
|
|
103
105
|
}, [dataSource, columns]);
|
|
104
106
|
var handleChanges = useCallback(function (changes, extChange) {
|
|
107
|
+
if (freeze) return;
|
|
105
108
|
onChange && onChange(changes.map(function (item) {
|
|
106
109
|
return {
|
|
107
110
|
col: item.col,
|
|
@@ -119,7 +122,7 @@ var Table = function Table(_ref) {
|
|
|
119
122
|
value: item.value
|
|
120
123
|
};
|
|
121
124
|
}));
|
|
122
|
-
}, [columns, onChange, hasControl]);
|
|
125
|
+
}, [columns, onChange, hasControl, freeze]);
|
|
123
126
|
var handleReverse = useCallback(function (value) {
|
|
124
127
|
var _ref2 = value,
|
|
125
128
|
type = _ref2.type,
|
|
@@ -255,6 +258,7 @@ var Table = function Table(_ref) {
|
|
|
255
258
|
onChange: setGroupConfig
|
|
256
259
|
},
|
|
257
260
|
children: /*#__PURE__*/_jsxs(Sheet, _objectSpread(_objectSpread({}, args), {}, {
|
|
261
|
+
freeze: freeze,
|
|
258
262
|
menuRenderer: wrappMenuRenderer,
|
|
259
263
|
showRemark: showRemarkPop,
|
|
260
264
|
sheetInstance: sheetInstance,
|
|
@@ -282,7 +286,7 @@ var Table = function Table(_ref) {
|
|
|
282
286
|
name: key,
|
|
283
287
|
handler: eventHandler === null || eventHandler === void 0 ? void 0 : eventHandler[key]
|
|
284
288
|
}, key);
|
|
285
|
-
}), /*#__PURE__*/_jsx(AddButton, {
|
|
289
|
+
}), freeze ? null : /*#__PURE__*/_jsx(AddButton, {
|
|
286
290
|
handleAdd: handleAdd,
|
|
287
291
|
handleBatchAdd: handleBatchAdd
|
|
288
292
|
})]
|
|
@@ -421,8 +421,9 @@ export default (function () {
|
|
|
421
421
|
var handleChange = useCallback(function () {}, [state]);
|
|
422
422
|
useEffect(function () {
|
|
423
423
|
setTimeout(function () {
|
|
424
|
-
var _sheetInstance$curren;
|
|
425
|
-
(_sheetInstance$curren = sheetInstance.current) === null || _sheetInstance$curren === void 0 || _sheetInstance$curren.
|
|
424
|
+
var _sheetInstance$curren, _sheetInstance$curren2;
|
|
425
|
+
(_sheetInstance$curren = sheetInstance.current) === null || _sheetInstance$curren === void 0 || _sheetInstance$curren.zoomTo(1);
|
|
426
|
+
(_sheetInstance$curren2 = sheetInstance.current) === null || _sheetInstance$curren2 === void 0 || _sheetInstance$curren2.select({
|
|
426
427
|
start: {
|
|
427
428
|
row: 1,
|
|
428
429
|
col: 3
|
|
@@ -454,6 +455,7 @@ export default (function () {
|
|
|
454
455
|
},
|
|
455
456
|
children: [/*#__PURE__*/_jsx(Table, {
|
|
456
457
|
virtualized: true,
|
|
458
|
+
freeze: true,
|
|
457
459
|
draggable: true,
|
|
458
460
|
sheetInstance: sheetInstance,
|
|
459
461
|
columns: columns,
|
package/dist/type/sheet.d.ts
CHANGED
|
@@ -119,6 +119,7 @@ export type SheetProps = {
|
|
|
119
119
|
backEditStyle?: Partial<CSSProperties>;
|
|
120
120
|
searchStyle?: Partial<CSSProperties>;
|
|
121
121
|
sticky?: boolean;
|
|
122
|
+
freeze?: boolean;
|
|
122
123
|
groupConfig?: RowGroupConfig;
|
|
123
124
|
remarkElement?: ReactNode;
|
|
124
125
|
onCellsChanged?: CellChangeHandler;
|
|
@@ -214,6 +215,7 @@ export type UpdateStateType = {
|
|
|
214
215
|
data: Cell[][];
|
|
215
216
|
mouseDown: boolean;
|
|
216
217
|
isIndex: boolean;
|
|
218
|
+
freeze: boolean;
|
|
217
219
|
lastSelected?: {
|
|
218
220
|
start?: CellPosition;
|
|
219
221
|
end?: CellPosition;
|