@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.
@@ -71,7 +71,8 @@ export var keyboardReducer = {
71
71
  end = state.end,
72
72
  editing = state.editing,
73
73
  data = state.data;
74
- 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)) {
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
- if (data !== null && data !== void 0 && (_data$row$col = data[row][col]) !== null && _data$row$col !== void 0 && _data$row$col.readonly) {
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
  }
@@ -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
- (_sheetWrapperRef$curr4 = sheetWrapperRef.current) === null || _sheetWrapperRef$curr4 === void 0 || _sheetWrapperRef$curr4.scrollTo(colPosition, scrollHeight);
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$curr5;
230
+ var _sheetWrapperRef$curr6;
215
231
  // 表格获取焦点 + 接收keyboard event
216
- (_sheetWrapperRef$curr5 = sheetWrapperRef.current) === null || _sheetWrapperRef$curr5 === void 0 || _sheetWrapperRef$curr5.focus({
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 = debounce(function () {
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
- console.log('io-ratio', ratio);
100
- if (ratio < 1) setRemarkInfo({
101
- show: false
102
- });
99
+ if (ratio < 1) {
100
+ setRemarkInfo({
101
+ show: false
102
+ });
103
+ }
103
104
  }, {
104
105
  threshold: 1
105
106
  });
@@ -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.select({
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,
@@ -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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhenliang/sheet",
3
- "version": "0.1.73.beta.2",
3
+ "version": "0.1.73.beta.3",
4
4
  "description": "A react library developed with dumi",
5
5
  "license": "MIT",
6
6
  "module": "dist/index.js",