@zhenliang/sheet 0.0.2 → 0.0.4
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/editor/cascaderEditor/index.d.ts +1 -1
- package/dist/core/editor/cascaderEditor/index.js +1 -0
- package/dist/core/editor/dateEditor/index.less +4 -0
- package/dist/core/editor/index.d.ts +1 -1
- package/dist/core/editor/index.js +1 -1
- package/dist/core/editor/numberEditor/index.d.ts +2 -0
- package/dist/core/editor/numberEditor/index.js +29 -0
- package/dist/core/editor/selectEditor/index.d.ts +1 -1
- package/dist/core/sheet/Event.d.ts +1 -1
- package/dist/core/sheet/Event.js +1 -1
- package/dist/core/sheet/index.less +6 -1
- package/dist/core/table/index.d.ts +1 -1
- package/dist/core/table/index.js +24 -5
- package/dist/core/viewer/btnViewer/index.d.ts +2 -0
- package/dist/core/viewer/btnViewer/index.js +37 -0
- package/dist/core/viewer/editViewer/index.d.ts +2 -0
- package/dist/core/viewer/editViewer/index.js +31 -0
- package/dist/core/viewer/index.d.ts +5 -0
- package/dist/core/viewer/index.js +5 -0
- package/dist/core/viewer/switchViewer/index.d.ts +2 -0
- package/dist/core/viewer/switchViewer/index.js +22 -0
- package/dist/example/antComponent.d.ts +3 -0
- package/dist/example/antComponent.js +264 -0
- package/dist/example/valuationAnalyze.d.ts +2 -0
- package/dist/example/valuationAnalyze.js +224 -0
- package/dist/type/sheet.d.ts +17 -14
- package/dist/type/sheet.js +8 -1
- package/dist/type/sheetTable.d.ts +5 -0
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { SheetType } from "../../../type";
|
|
2
2
|
import 'antd/es/cascader/style/index.css';
|
|
3
3
|
import './index.less';
|
|
4
|
-
declare const getCascaderEditor: (options: SheetType.OptionsType[]) =>
|
|
4
|
+
declare const getCascaderEditor: (options: SheetType.OptionsType[]) => SheetType.CellEditor;
|
|
5
5
|
export default getCascaderEditor;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { default as getCascaderEditor } from './cascaderEditor';
|
|
2
2
|
export { DateEditor } from './dateEditor';
|
|
3
|
-
export { NumberEditor } from './numberEditor';
|
|
3
|
+
export { getNumberEditor, NumberEditor } from './numberEditor';
|
|
4
4
|
export { default as getSelectEditor } from './selectEditor';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { default as getCascaderEditor } from "./cascaderEditor";
|
|
2
2
|
export { DateEditor } from "./dateEditor";
|
|
3
|
-
export { NumberEditor } from "./numberEditor";
|
|
3
|
+
export { getNumberEditor, NumberEditor } from "./numberEditor";
|
|
4
4
|
export { default as getSelectEditor } from "./selectEditor";
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { SheetType } from "../../../type";
|
|
2
|
+
import { InputNumberProps } from 'antd';
|
|
2
3
|
import 'antd/es/input-number/style/index.css';
|
|
3
4
|
import './index.less';
|
|
4
5
|
export declare const NumberEditor: SheetType.CellEditor;
|
|
6
|
+
export declare const getNumberEditor: (extraProps: Pick<InputNumberProps, 'max' | 'min' | 'addonBefore' | 'addonAfter' | 'precision'>) => SheetType.CellEditor;
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
2
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
3
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4
|
+
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; }
|
|
5
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
6
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
1
7
|
import { InputNumber as AntInputNumber } from 'antd';
|
|
2
8
|
import 'antd/es/input-number/style/index.css';
|
|
3
9
|
import { useEffect, useRef } from 'react';
|
|
@@ -22,4 +28,27 @@ export var NumberEditor = function NumberEditor(props) {
|
|
|
22
28
|
addonAfter: "%",
|
|
23
29
|
onChange: onChange
|
|
24
30
|
});
|
|
31
|
+
};
|
|
32
|
+
export var getNumberEditor = function getNumberEditor(extraProps) {
|
|
33
|
+
var NumberEditor = function NumberEditor(props) {
|
|
34
|
+
var value = props.value,
|
|
35
|
+
onChange = props.onChange;
|
|
36
|
+
var inputNumberRef = useRef(null);
|
|
37
|
+
useEffect(function () {
|
|
38
|
+
var _inputNumberRef$curre2;
|
|
39
|
+
inputNumberRef === null || inputNumberRef === void 0 ? void 0 : (_inputNumberRef$curre2 = inputNumberRef.current) === null || _inputNumberRef$curre2 === void 0 ? void 0 : _inputNumberRef$curre2.focus();
|
|
40
|
+
}, []);
|
|
41
|
+
return /*#__PURE__*/_jsx(AntInputNumber, _objectSpread(_objectSpread({
|
|
42
|
+
ref: inputNumberRef
|
|
43
|
+
}, extraProps), {}, {
|
|
44
|
+
controls: false,
|
|
45
|
+
className: "number-editor",
|
|
46
|
+
onMouseDown: function onMouseDown(e) {
|
|
47
|
+
return e.stopPropagation();
|
|
48
|
+
},
|
|
49
|
+
value: value,
|
|
50
|
+
onChange: onChange
|
|
51
|
+
}));
|
|
52
|
+
};
|
|
53
|
+
return NumberEditor;
|
|
25
54
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { SheetType } from "../../../type";
|
|
2
2
|
import 'antd/es/select/style/index.css';
|
|
3
3
|
import './index.less';
|
|
4
|
-
export declare const getSelectEditor: (options:
|
|
4
|
+
export declare const getSelectEditor: (options: SheetType.Options[]) => SheetType.CellEditor;
|
|
5
5
|
export default getSelectEditor;
|
package/dist/core/sheet/Event.js
CHANGED
|
@@ -41,7 +41,10 @@ span.harvest-sheet-container, span.harvest-sheet-container:focus {
|
|
|
41
41
|
.harvest-sheet-container .harvest-sheet .cell {
|
|
42
42
|
height: 17px;
|
|
43
43
|
font-size: var(--cell-font-size);
|
|
44
|
-
padding:var(--cell-padding-
|
|
44
|
+
padding-left:var(--cell-padding-horizontal);
|
|
45
|
+
padding-right:var(--cell-padding-horizontal);
|
|
46
|
+
padding-top:var(--cell-padding-vertical);
|
|
47
|
+
padding-bottom:var(--cell-padding-vertical);
|
|
45
48
|
border: 1px solid var(--cell-border-color);
|
|
46
49
|
background-color: var(--cell-background-color);
|
|
47
50
|
cursor: cell;
|
|
@@ -143,6 +146,7 @@ span.harvest-sheet-container, span.harvest-sheet-container:focus {
|
|
|
143
146
|
.harvest-sheet-container .harvest-sheet .cell.sheet-control{
|
|
144
147
|
border-right: 1px solid transparent;
|
|
145
148
|
background: var(--cell-background-color) ;
|
|
149
|
+
color:var(--read-color);
|
|
146
150
|
// position: relative !important;
|
|
147
151
|
}
|
|
148
152
|
|
|
@@ -176,6 +180,7 @@ span.harvest-sheet-container, span.harvest-sheet-container:focus {
|
|
|
176
180
|
.harvest-sheet-container .harvest-sheet .cell > input {
|
|
177
181
|
display: block;
|
|
178
182
|
width: calc(100% - 6px);
|
|
183
|
+
font-size: var(--cell-font-size);
|
|
179
184
|
height: 11px;
|
|
180
185
|
border: 2px solid rgb(33, 133, 208);
|
|
181
186
|
background: none;
|
package/dist/core/table/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
2
|
-
var _excluded = ["columns", "dataSource", "rowKey", "rowSelection", "groupConfig", "onChange", "draggable"];
|
|
2
|
+
var _excluded = ["sheetInstance", "columns", "dataSource", "rowKey", "rowSelection", "groupConfig", "onChange", "handleAdd", "draggable", "eventHandler"];
|
|
3
3
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
4
4
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
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; }
|
|
@@ -18,6 +18,7 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
|
18
18
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
19
19
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
20
20
|
import { Sheet } from "../..";
|
|
21
|
+
import { Button } from 'antd';
|
|
21
22
|
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
22
23
|
import { SheetEvent } from "../sheet/Event";
|
|
23
24
|
import { DraggableShell } from "../shell/draggableShell";
|
|
@@ -30,19 +31,23 @@ import { useRowSelection } from "./useRowSelection";
|
|
|
30
31
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
31
32
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
32
33
|
var Table = function Table(_ref) {
|
|
33
|
-
var
|
|
34
|
+
var sheetRef = _ref.sheetInstance,
|
|
35
|
+
columns = _ref.columns,
|
|
34
36
|
dataSource = _ref.dataSource,
|
|
35
37
|
rowKey = _ref.rowKey,
|
|
36
38
|
rowSelection = _ref.rowSelection,
|
|
37
39
|
groupConfig = _ref.groupConfig,
|
|
38
40
|
onChange = _ref.onChange,
|
|
41
|
+
handleAdd = _ref.handleAdd,
|
|
39
42
|
draggable = _ref.draggable,
|
|
43
|
+
eventHandler = _ref.eventHandler,
|
|
40
44
|
args = _objectWithoutProperties(_ref, _excluded);
|
|
41
45
|
var _useState = useState([[]]),
|
|
42
46
|
_useState2 = _slicedToArray(_useState, 2),
|
|
43
47
|
data = _useState2[0],
|
|
44
48
|
setData = _useState2[1];
|
|
45
|
-
var
|
|
49
|
+
var _sheetInstance = useRef(null);
|
|
50
|
+
var sheetInstance = sheetRef || _sheetInstance;
|
|
46
51
|
var hasChildren = dataSource === null || dataSource === void 0 ? void 0 : dataSource.some(function (item) {
|
|
47
52
|
var _item$children;
|
|
48
53
|
return (item === null || item === void 0 ? void 0 : (_item$children = item.children) === null || _item$children === void 0 ? void 0 : _item$children.length) > 0;
|
|
@@ -90,8 +95,8 @@ var Table = function Table(_ref) {
|
|
|
90
95
|
id: rowId,
|
|
91
96
|
row: currentIndex,
|
|
92
97
|
col: -1,
|
|
93
|
-
readonly: true,
|
|
94
98
|
editable: false,
|
|
99
|
+
align: 'center',
|
|
95
100
|
value: groupMap.get(currentIndex) && ((_groupMap$get = groupMap.get(currentIndex)) === null || _groupMap$get === void 0 ? void 0 : _groupMap$get.isStart),
|
|
96
101
|
record: {
|
|
97
102
|
open: groupMap.get(currentIndex) && ((_groupMap$get2 = groupMap.get(currentIndex)) === null || _groupMap$get2 === void 0 ? void 0 : _groupMap$get2.isOpen)
|
|
@@ -140,6 +145,7 @@ var Table = function Table(_ref) {
|
|
|
140
145
|
row: row,
|
|
141
146
|
col: -1,
|
|
142
147
|
readonly: true,
|
|
148
|
+
align: 'center',
|
|
143
149
|
value: checkedRow[row],
|
|
144
150
|
valueViewer: CheckViewer,
|
|
145
151
|
className: 'sheet-control'
|
|
@@ -305,7 +311,20 @@ var Table = function Table(_ref) {
|
|
|
305
311
|
}, "group-open-title")] : null, /*#__PURE__*/_jsx(SheetEvent, {
|
|
306
312
|
name: "reverse",
|
|
307
313
|
handler: handleReverse
|
|
308
|
-
})
|
|
314
|
+
}, "_reverse"), Object.keys(eventHandler || {}).map(function (key) {
|
|
315
|
+
return /*#__PURE__*/_jsx(SheetEvent, {
|
|
316
|
+
name: key,
|
|
317
|
+
handler: eventHandler === null || eventHandler === void 0 ? void 0 : eventHandler[key]
|
|
318
|
+
}, key);
|
|
319
|
+
}), handleAdd ? /*#__PURE__*/_jsx(Button, {
|
|
320
|
+
type: "dashed",
|
|
321
|
+
style: {
|
|
322
|
+
width: '100%',
|
|
323
|
+
height: 32
|
|
324
|
+
},
|
|
325
|
+
onClick: handleAdd,
|
|
326
|
+
children: "+ \u6DFB\u52A0"
|
|
327
|
+
}) : null]
|
|
309
328
|
}));
|
|
310
329
|
};
|
|
311
330
|
export default Table;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { useSheetEvent } from "../../../hooks";
|
|
2
|
+
import { Button, Divider } from 'antd';
|
|
3
|
+
import { useCallback } from 'react';
|
|
4
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
|
+
export var BtnViewer = function BtnViewer(props) {
|
|
7
|
+
var value = props.value,
|
|
8
|
+
row = props.row,
|
|
9
|
+
record = props.record;
|
|
10
|
+
var eventBus = useSheetEvent();
|
|
11
|
+
var handleClick = useCallback(function (event) {
|
|
12
|
+
eventBus && eventBus.emit('btn-click', event);
|
|
13
|
+
}, [eventBus, row, record, value]);
|
|
14
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
15
|
+
children: [/*#__PURE__*/_jsx(Button, {
|
|
16
|
+
type: "link",
|
|
17
|
+
onClick: function onClick() {
|
|
18
|
+
return handleClick({
|
|
19
|
+
row: row,
|
|
20
|
+
type: 'copy'
|
|
21
|
+
});
|
|
22
|
+
},
|
|
23
|
+
children: "\u590D\u5236"
|
|
24
|
+
}, "copy"), /*#__PURE__*/_jsx(Divider, {
|
|
25
|
+
type: "vertical"
|
|
26
|
+
}), /*#__PURE__*/_jsx(Button, {
|
|
27
|
+
type: "link",
|
|
28
|
+
onClick: function onClick() {
|
|
29
|
+
return handleClick({
|
|
30
|
+
row: row,
|
|
31
|
+
type: 'delete'
|
|
32
|
+
});
|
|
33
|
+
},
|
|
34
|
+
children: "\u5220\u9664"
|
|
35
|
+
}, "delete")]
|
|
36
|
+
});
|
|
37
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { EditFilled } from '@ant-design/icons';
|
|
2
|
+
import { useSheetEvent } from "../../../hooks";
|
|
3
|
+
import { useCallback } from 'react';
|
|
4
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
|
+
export var EditViewer = function EditViewer(props) {
|
|
7
|
+
var value = props.value,
|
|
8
|
+
row = props.row,
|
|
9
|
+
record = props.record;
|
|
10
|
+
var eventBus = useSheetEvent();
|
|
11
|
+
var handleClick = useCallback(function () {
|
|
12
|
+
if (!eventBus) return;
|
|
13
|
+
eventBus.emit('cell-edit', {
|
|
14
|
+
row: row,
|
|
15
|
+
record: record,
|
|
16
|
+
value: value
|
|
17
|
+
});
|
|
18
|
+
}, [eventBus, row, record, value]);
|
|
19
|
+
return /*#__PURE__*/_jsxs("span", {
|
|
20
|
+
style: {
|
|
21
|
+
display: 'flex',
|
|
22
|
+
justifyContent: 'space-between',
|
|
23
|
+
color: 'green'
|
|
24
|
+
},
|
|
25
|
+
children: [/*#__PURE__*/_jsx("span", {
|
|
26
|
+
children: value
|
|
27
|
+
}), /*#__PURE__*/_jsx(EditFilled, {
|
|
28
|
+
onClick: handleClick
|
|
29
|
+
})]
|
|
30
|
+
});
|
|
31
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { useSheetEvent } from "../../../hooks";
|
|
2
|
+
import { Switch } from 'antd';
|
|
3
|
+
import { useCallback } from 'react';
|
|
4
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
|
+
export var SwitchViewer = function SwitchViewer(props) {
|
|
6
|
+
var value = props.value,
|
|
7
|
+
row = props.row,
|
|
8
|
+
record = props.record;
|
|
9
|
+
var eventBus = useSheetEvent();
|
|
10
|
+
var handleChange = useCallback(function () {
|
|
11
|
+
if (!eventBus) return;
|
|
12
|
+
eventBus.emit('cell-switch', {
|
|
13
|
+
row: row,
|
|
14
|
+
record: record,
|
|
15
|
+
value: value
|
|
16
|
+
});
|
|
17
|
+
}, [eventBus, row, record, value]);
|
|
18
|
+
return /*#__PURE__*/_jsx(Switch, {
|
|
19
|
+
checked: value,
|
|
20
|
+
onChange: handleChange
|
|
21
|
+
});
|
|
22
|
+
};
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
2
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
3
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4
|
+
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; }
|
|
5
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
6
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
7
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
8
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
9
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
10
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
11
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
12
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
13
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
14
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
15
|
+
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
16
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
17
|
+
import { Modal } from 'antd';
|
|
18
|
+
import { cloneDeep, random } from 'lodash';
|
|
19
|
+
import React, { useCallback, useRef, useState } from 'react';
|
|
20
|
+
import { DateEditor, getCascaderEditor, getNumberEditor, getSelectEditor } from "../core/editor";
|
|
21
|
+
import Table from "../core/table";
|
|
22
|
+
import { BtnViewer } from "../core/viewer/btnViewer";
|
|
23
|
+
import { EditViewer } from "../core/viewer/editViewer";
|
|
24
|
+
import { SwitchViewer } from "../core/viewer/switchViewer";
|
|
25
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
26
|
+
var Precision2MoneyEditor = getNumberEditor({
|
|
27
|
+
max: 1000,
|
|
28
|
+
min: 0,
|
|
29
|
+
precision: 2,
|
|
30
|
+
addonAfter: '元'
|
|
31
|
+
});
|
|
32
|
+
var Precision2Number = getNumberEditor({
|
|
33
|
+
max: 1000,
|
|
34
|
+
min: 0,
|
|
35
|
+
precision: 2
|
|
36
|
+
});
|
|
37
|
+
var TypeSelector = getSelectEditor([{
|
|
38
|
+
value: '1',
|
|
39
|
+
label: '111111'
|
|
40
|
+
}, {
|
|
41
|
+
value: '2',
|
|
42
|
+
label: '222222'
|
|
43
|
+
}, {
|
|
44
|
+
value: '3',
|
|
45
|
+
label: '333333'
|
|
46
|
+
}]);
|
|
47
|
+
var CascaderSelector = getCascaderEditor([{
|
|
48
|
+
value: 'zhejiang',
|
|
49
|
+
label: 'Zhejiang',
|
|
50
|
+
children: [{
|
|
51
|
+
value: 'hangzhou',
|
|
52
|
+
label: 'Hangzhou',
|
|
53
|
+
children: [{
|
|
54
|
+
value: 'xihu',
|
|
55
|
+
label: 'West Lake'
|
|
56
|
+
}]
|
|
57
|
+
}]
|
|
58
|
+
}, {
|
|
59
|
+
value: 'jiangsu',
|
|
60
|
+
label: 'Jiangsu',
|
|
61
|
+
children: [{
|
|
62
|
+
value: 'nanjing',
|
|
63
|
+
label: 'Nanjing',
|
|
64
|
+
children: [{
|
|
65
|
+
value: 'zhonghuamen',
|
|
66
|
+
label: 'Zhong Hua Men'
|
|
67
|
+
}]
|
|
68
|
+
}]
|
|
69
|
+
}]);
|
|
70
|
+
var columns = [{
|
|
71
|
+
title: 'Full Name',
|
|
72
|
+
width: 100,
|
|
73
|
+
dataIndex: 'open',
|
|
74
|
+
key: 'open',
|
|
75
|
+
fixed: 'left',
|
|
76
|
+
render: SwitchViewer
|
|
77
|
+
}, {
|
|
78
|
+
title: 'Age',
|
|
79
|
+
width: 100,
|
|
80
|
+
dataIndex: 'age',
|
|
81
|
+
key: 'age',
|
|
82
|
+
editor: Precision2Number,
|
|
83
|
+
readonly: function readonly(value, record, row) {
|
|
84
|
+
return row === 1;
|
|
85
|
+
}
|
|
86
|
+
// fixed: 'left',
|
|
87
|
+
}, {
|
|
88
|
+
title: 'price',
|
|
89
|
+
width: 100,
|
|
90
|
+
dataIndex: 'price',
|
|
91
|
+
key: 'price',
|
|
92
|
+
editor: Precision2MoneyEditor,
|
|
93
|
+
readonly: function readonly(value, record, row) {
|
|
94
|
+
return row === 1;
|
|
95
|
+
}
|
|
96
|
+
// fixed: 'left',
|
|
97
|
+
}, {
|
|
98
|
+
title: 'date',
|
|
99
|
+
width: 150,
|
|
100
|
+
dataIndex: 'date',
|
|
101
|
+
key: 'date',
|
|
102
|
+
editor: DateEditor
|
|
103
|
+
// fixed: 'left',
|
|
104
|
+
}, {
|
|
105
|
+
title: 'select',
|
|
106
|
+
width: 200,
|
|
107
|
+
dataIndex: 'select',
|
|
108
|
+
editor: TypeSelector
|
|
109
|
+
}, {
|
|
110
|
+
title: 'Column 2',
|
|
111
|
+
width: 200,
|
|
112
|
+
dataIndex: 'address1',
|
|
113
|
+
key: '2',
|
|
114
|
+
editor: CascaderSelector
|
|
115
|
+
}, {
|
|
116
|
+
title: 'Column 3',
|
|
117
|
+
width: 200,
|
|
118
|
+
dataIndex: 'address2',
|
|
119
|
+
key: '3',
|
|
120
|
+
editable: false,
|
|
121
|
+
render: EditViewer
|
|
122
|
+
}, {
|
|
123
|
+
title: 'Column 4',
|
|
124
|
+
width: 200,
|
|
125
|
+
dataIndex: 'address3',
|
|
126
|
+
key: '4'
|
|
127
|
+
}, {
|
|
128
|
+
title: 'Column 5',
|
|
129
|
+
width: 200,
|
|
130
|
+
dataIndex: 'address4',
|
|
131
|
+
key: '5'
|
|
132
|
+
}, {
|
|
133
|
+
title: 'Column 6',
|
|
134
|
+
width: 200,
|
|
135
|
+
dataIndex: 'address5',
|
|
136
|
+
key: '6'
|
|
137
|
+
}, {
|
|
138
|
+
title: 'Column 7',
|
|
139
|
+
width: 200,
|
|
140
|
+
dataIndex: 'address6',
|
|
141
|
+
key: '7'
|
|
142
|
+
}, {
|
|
143
|
+
title: 'Column 8',
|
|
144
|
+
width: 200,
|
|
145
|
+
dataIndex: 'address7',
|
|
146
|
+
key: '8'
|
|
147
|
+
}, {
|
|
148
|
+
title: 'Action',
|
|
149
|
+
align: 'center',
|
|
150
|
+
key: 'operation',
|
|
151
|
+
fixed: 'right',
|
|
152
|
+
width: 150,
|
|
153
|
+
render: BtnViewer
|
|
154
|
+
}];
|
|
155
|
+
var data = [{
|
|
156
|
+
key: '1',
|
|
157
|
+
name: 'John Brown',
|
|
158
|
+
date: '2020-01-01',
|
|
159
|
+
open: true,
|
|
160
|
+
age: 32,
|
|
161
|
+
address1: 'West Lake',
|
|
162
|
+
address2: '打开对话框1',
|
|
163
|
+
select: '111111',
|
|
164
|
+
address: 'New York Park'
|
|
165
|
+
}, {
|
|
166
|
+
key: '2',
|
|
167
|
+
name: 'Jim Green',
|
|
168
|
+
open: false,
|
|
169
|
+
date: '1990-01-01',
|
|
170
|
+
address2: '打开对话框2',
|
|
171
|
+
age: 40,
|
|
172
|
+
select: '222222',
|
|
173
|
+
address: 'London Park'
|
|
174
|
+
}];
|
|
175
|
+
var App = function App() {
|
|
176
|
+
var _useState = useState(data),
|
|
177
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
178
|
+
state = _useState2[0],
|
|
179
|
+
setState = _useState2[1];
|
|
180
|
+
var sheetInstance = useRef(null);
|
|
181
|
+
var handleChange = useCallback(function (changes) {
|
|
182
|
+
var newState = cloneDeep(state);
|
|
183
|
+
changes.forEach(function (change) {
|
|
184
|
+
var row = change.row,
|
|
185
|
+
key = change.key,
|
|
186
|
+
value = change.value;
|
|
187
|
+
newState[row][key] = value;
|
|
188
|
+
});
|
|
189
|
+
setState(newState);
|
|
190
|
+
}, [state]);
|
|
191
|
+
var handleAdd = useCallback(function () {
|
|
192
|
+
var _sheetInstance$curren;
|
|
193
|
+
var newState = cloneDeep(state);
|
|
194
|
+
(_sheetInstance$curren = sheetInstance.current) === null || _sheetInstance$curren === void 0 ? void 0 : _sheetInstance$curren.pushToHistory({
|
|
195
|
+
type: 'NewRow',
|
|
196
|
+
changes: [],
|
|
197
|
+
rowInfo: {
|
|
198
|
+
newRow: newState.length
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
setState([].concat(_toConsumableArray(newState), [{
|
|
202
|
+
key: String(random()),
|
|
203
|
+
name: 'new',
|
|
204
|
+
open: false,
|
|
205
|
+
date: '1990-01-01',
|
|
206
|
+
address2: "\u6253\u5F00\u5BF9\u8BDD\u68462".concat(newState.length + 2),
|
|
207
|
+
age: 40 + newState.length,
|
|
208
|
+
select: '111111',
|
|
209
|
+
address: 'London Park'
|
|
210
|
+
}]));
|
|
211
|
+
}, [state]);
|
|
212
|
+
return /*#__PURE__*/_jsx(Table, {
|
|
213
|
+
sheetInstance: sheetInstance,
|
|
214
|
+
columns: columns,
|
|
215
|
+
dataSource: state,
|
|
216
|
+
scroll: {
|
|
217
|
+
x: '100%'
|
|
218
|
+
},
|
|
219
|
+
onChange: handleChange,
|
|
220
|
+
handleAdd: handleAdd,
|
|
221
|
+
eventHandler: {
|
|
222
|
+
reverse: function reverse(value) {
|
|
223
|
+
// 处理 行列删除自定义事件
|
|
224
|
+
var _ref = value,
|
|
225
|
+
type = _ref.type,
|
|
226
|
+
rowInfo = _ref.rowInfo;
|
|
227
|
+
if (type === 'Custom') {
|
|
228
|
+
console.log('操作');
|
|
229
|
+
} else if (type === 'NewRow') {
|
|
230
|
+
var newState = _toConsumableArray(state);
|
|
231
|
+
newState.splice(rowInfo === null || rowInfo === void 0 ? void 0 : rowInfo.newRow, 1);
|
|
232
|
+
setState(newState);
|
|
233
|
+
}
|
|
234
|
+
},
|
|
235
|
+
'cell-edit': function cellEdit(value) {
|
|
236
|
+
var _ref2 = value,
|
|
237
|
+
row = _ref2.row,
|
|
238
|
+
cellValue = _ref2.value;
|
|
239
|
+
Modal.confirm({
|
|
240
|
+
title: "".concat(row, " - ").concat(cellValue, "\u7F16\u8F91\u70B9\u4EC0\u4E48")
|
|
241
|
+
});
|
|
242
|
+
},
|
|
243
|
+
'btn-click': function btnClick(value) {
|
|
244
|
+
var _ref3 = value,
|
|
245
|
+
row = _ref3.row,
|
|
246
|
+
type = _ref3.type;
|
|
247
|
+
Modal.confirm({
|
|
248
|
+
title: "".concat(row, " - ").concat(type, "\u63D0\u793A\u70B9\u4EC0\u4E48")
|
|
249
|
+
});
|
|
250
|
+
},
|
|
251
|
+
'cell-switch': function cellSwitch(value) {
|
|
252
|
+
var _ref4 = value,
|
|
253
|
+
row = _ref4.row,
|
|
254
|
+
cellValue = _ref4.value;
|
|
255
|
+
var newState = _toConsumableArray(state);
|
|
256
|
+
newState[row] = _objectSpread(_objectSpread({}, newState[row]), {}, {
|
|
257
|
+
open: !cellValue
|
|
258
|
+
});
|
|
259
|
+
setState(newState);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
});
|
|
263
|
+
};
|
|
264
|
+
export default App;
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
2
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
5
|
+
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
6
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
7
|
+
import { getNumberEditor, getSelectEditor, Table } from "./..";
|
|
8
|
+
import { useCallback, useState } from 'react';
|
|
9
|
+
import { SwitchViewer } from "../core/viewer";
|
|
10
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
|
+
var RateValueInput = getNumberEditor({
|
|
12
|
+
addonAfter: '%',
|
|
13
|
+
min: 0,
|
|
14
|
+
max: 100
|
|
15
|
+
});
|
|
16
|
+
var ValueInput = getNumberEditor({
|
|
17
|
+
min: 0,
|
|
18
|
+
max: 100000000
|
|
19
|
+
});
|
|
20
|
+
var RateViewer = function RateViewer(props) {
|
|
21
|
+
var value = props.value;
|
|
22
|
+
return /*#__PURE__*/_jsx("span", {
|
|
23
|
+
children: value ? value + '%' : '-'
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
var data = [{
|
|
27
|
+
id: 2443,
|
|
28
|
+
draftId: '101601',
|
|
29
|
+
valuationType: 2,
|
|
30
|
+
termDiscountRate: null,
|
|
31
|
+
reversionDiscountRate: null,
|
|
32
|
+
vacancyDiscountRate: null,
|
|
33
|
+
discountRate: 8.5,
|
|
34
|
+
exitCapRate: 4.5,
|
|
35
|
+
gfaUnitPrice: 107350.31545913525,
|
|
36
|
+
nlaUnitPrice: 90130.38038659678,
|
|
37
|
+
totalValuation: 1622707368.4802885,
|
|
38
|
+
isEnabled: true
|
|
39
|
+
}, {
|
|
40
|
+
id: 2444,
|
|
41
|
+
draftId: '101601',
|
|
42
|
+
valuationType: 5,
|
|
43
|
+
termDiscountRate: 4.5,
|
|
44
|
+
reversionDiscountRate: 5.5,
|
|
45
|
+
vacancyDiscountRate: 5.5,
|
|
46
|
+
discountRate: null,
|
|
47
|
+
exitCapRate: null,
|
|
48
|
+
gfaUnitPrice: 89327.04427210477,
|
|
49
|
+
nlaUnitPrice: 89327.04427210477,
|
|
50
|
+
totalValuation: 1429232708.3536763,
|
|
51
|
+
isEnabled: false
|
|
52
|
+
}];
|
|
53
|
+
export default (function () {
|
|
54
|
+
var evaluateMethods = [{
|
|
55
|
+
label: 'DCF',
|
|
56
|
+
value: 2
|
|
57
|
+
}, {
|
|
58
|
+
label: 'T&R',
|
|
59
|
+
value: 5
|
|
60
|
+
}];
|
|
61
|
+
var _useState = useState(data),
|
|
62
|
+
_useState2 = _slicedToArray(_useState, 1),
|
|
63
|
+
state = _useState2[0];
|
|
64
|
+
var columns = [{
|
|
65
|
+
title: '默认使用',
|
|
66
|
+
dataIndex: 'isEnabled',
|
|
67
|
+
width: 66,
|
|
68
|
+
// cellType: 'operate',
|
|
69
|
+
readonly: function readonly(value, record) {
|
|
70
|
+
return !!record.valuationType;
|
|
71
|
+
},
|
|
72
|
+
render: SwitchViewer
|
|
73
|
+
// component: (record: any, row: number, col: number) => (
|
|
74
|
+
// <Switch
|
|
75
|
+
// disabled={isNil(record.valuationType)}
|
|
76
|
+
// checked={record.isEnabled}
|
|
77
|
+
// onChange={handleSwitchChange(record, row)}
|
|
78
|
+
// />
|
|
79
|
+
// ),
|
|
80
|
+
}, {
|
|
81
|
+
title: '评估方法',
|
|
82
|
+
dataIndex: 'valuationType',
|
|
83
|
+
width: 134,
|
|
84
|
+
readonly: function readonly(value, record, row) {
|
|
85
|
+
return !row;
|
|
86
|
+
},
|
|
87
|
+
render: function (props) {
|
|
88
|
+
var _evaluateMethods$find;
|
|
89
|
+
return /*#__PURE__*/_jsx("span", {
|
|
90
|
+
children: (_evaluateMethods$find = evaluateMethods.find(function (item) {
|
|
91
|
+
return item.value === props.value;
|
|
92
|
+
})) === null || _evaluateMethods$find === void 0 ? void 0 : _evaluateMethods$find.label
|
|
93
|
+
});
|
|
94
|
+
},
|
|
95
|
+
editor: getSelectEditor(evaluateMethods)
|
|
96
|
+
// calcReadOnly: (record, rowIndex) => !rowIndex,
|
|
97
|
+
// getSelectOptions: (record: any) => {
|
|
98
|
+
// if (record.valuationType === 2) {
|
|
99
|
+
// return evaluateMethods.slice(0, 1);
|
|
100
|
+
// }
|
|
101
|
+
// return evaluateMethods.slice(1);
|
|
102
|
+
// },
|
|
103
|
+
}, {
|
|
104
|
+
title: '租期内折现率',
|
|
105
|
+
dataIndex: 'termDiscountRate',
|
|
106
|
+
width: 134,
|
|
107
|
+
editor: RateValueInput,
|
|
108
|
+
viewer: RateViewer,
|
|
109
|
+
readonly: function readonly(value, record, row) {
|
|
110
|
+
return !row || isNil(record.valuationType);
|
|
111
|
+
}
|
|
112
|
+
// calcReadOnly: (record, rowIndex) => !rowIndex || isNil(record.valuationType),
|
|
113
|
+
}, {
|
|
114
|
+
title: '租期外折现率',
|
|
115
|
+
dataIndex: 'reversionDiscountRate',
|
|
116
|
+
width: 134,
|
|
117
|
+
viewer: RateViewer,
|
|
118
|
+
editor: RateValueInput,
|
|
119
|
+
readonly: function readonly(value, record, row) {
|
|
120
|
+
return !row || isNil(record.valuationType);
|
|
121
|
+
}
|
|
122
|
+
}, {
|
|
123
|
+
title: '空置面积折现率',
|
|
124
|
+
dataIndex: 'vacancyDiscountRate',
|
|
125
|
+
width: 134,
|
|
126
|
+
viewer: RateViewer,
|
|
127
|
+
editor: RateValueInput,
|
|
128
|
+
readonly: function readonly(value, record, row) {
|
|
129
|
+
return !row || isNil(record.valuationType);
|
|
130
|
+
}
|
|
131
|
+
}, {
|
|
132
|
+
title: '折现率',
|
|
133
|
+
dataIndex: 'discountRate',
|
|
134
|
+
width: 134,
|
|
135
|
+
viewer: RateViewer,
|
|
136
|
+
editor: RateValueInput,
|
|
137
|
+
readonly: function readonly(value, record, row) {
|
|
138
|
+
return !row || isNil(record.valuationType);
|
|
139
|
+
}
|
|
140
|
+
}, {
|
|
141
|
+
title: '退出资本化率',
|
|
142
|
+
dataIndex: 'exitCapRate',
|
|
143
|
+
width: 134,
|
|
144
|
+
viewer: RateViewer,
|
|
145
|
+
editor: RateValueInput,
|
|
146
|
+
readonly: function readonly(value, record, row) {
|
|
147
|
+
return !row || isNil(record.valuationType);
|
|
148
|
+
}
|
|
149
|
+
}, {
|
|
150
|
+
title: '估值单价/GFA',
|
|
151
|
+
dataIndex: 'gfaUnitPrice',
|
|
152
|
+
width: 134,
|
|
153
|
+
editor: ValueInput,
|
|
154
|
+
readonly: true
|
|
155
|
+
}, {
|
|
156
|
+
title: '估值单价/NLA',
|
|
157
|
+
dataIndex: 'nlaUnitPrice',
|
|
158
|
+
width: 134,
|
|
159
|
+
editor: ValueInput,
|
|
160
|
+
readonly: true
|
|
161
|
+
}, {
|
|
162
|
+
title: '估值',
|
|
163
|
+
dataIndex: 'totalValuation',
|
|
164
|
+
width: 134,
|
|
165
|
+
editor: ValueInput,
|
|
166
|
+
readonly: true
|
|
167
|
+
}, {
|
|
168
|
+
title: '操作',
|
|
169
|
+
width: 62,
|
|
170
|
+
dataIndex: 'id',
|
|
171
|
+
cellType: 'operate',
|
|
172
|
+
editable: false,
|
|
173
|
+
render: function (props) {
|
|
174
|
+
var row = props.row,
|
|
175
|
+
record = props.record;
|
|
176
|
+
if (row) {
|
|
177
|
+
return /*#__PURE__*/_jsx("div", {
|
|
178
|
+
children: /*#__PURE__*/_jsx(Button, {
|
|
179
|
+
type: "link",
|
|
180
|
+
onClick: function onClick() {
|
|
181
|
+
handleDelete(record.id);
|
|
182
|
+
// const infos = [{ id: record.id, row, extra: record }];
|
|
183
|
+
// operateCb && operateCb(4, { row, infos });
|
|
184
|
+
},
|
|
185
|
+
|
|
186
|
+
size: "small",
|
|
187
|
+
children: "\u5220\u9664"
|
|
188
|
+
})
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
return /*#__PURE__*/_jsx("div", {
|
|
192
|
+
className: "value-viewer number-value-viewer"
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// component: (record: any, row: number, col: number, operateCb?: ExcelTableType.OperateCollector) => {
|
|
197
|
+
// if (row) {
|
|
198
|
+
// return (
|
|
199
|
+
// <div>
|
|
200
|
+
// <Button
|
|
201
|
+
// type="link"
|
|
202
|
+
// onClick={() => {
|
|
203
|
+
// handleDelete(record.id);
|
|
204
|
+
// const infos = [{ id: record.id, row, extra: record }];
|
|
205
|
+
// operateCb && operateCb(4, { row, infos });
|
|
206
|
+
// }}
|
|
207
|
+
// size="small"
|
|
208
|
+
// >
|
|
209
|
+
// 删除
|
|
210
|
+
// </Button>
|
|
211
|
+
// </div>
|
|
212
|
+
// );
|
|
213
|
+
// }
|
|
214
|
+
// return <div className="value-viewer number-value-viewer" />;
|
|
215
|
+
// },
|
|
216
|
+
}];
|
|
217
|
+
|
|
218
|
+
var handleChange = useCallback(function () {}, [state]);
|
|
219
|
+
return /*#__PURE__*/_jsx(Table, {
|
|
220
|
+
columns: columns,
|
|
221
|
+
dataSource: state,
|
|
222
|
+
onChange: handleChange
|
|
223
|
+
});
|
|
224
|
+
});
|
package/dist/type/sheet.d.ts
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
/// <reference types="node" />
|
|
3
3
|
import type { EventEmitter } from 'events';
|
|
4
4
|
import { SheetTableType } from '.';
|
|
5
|
+
export declare enum CellAlign {
|
|
6
|
+
left = "left",
|
|
7
|
+
center = "center",
|
|
8
|
+
right = "right"
|
|
9
|
+
}
|
|
5
10
|
export declare type Cell = {
|
|
6
11
|
id: string;
|
|
7
12
|
key?: string;
|
|
@@ -16,23 +21,23 @@ export declare type Cell = {
|
|
|
16
21
|
dataEditor?: CellEditor;
|
|
17
22
|
valueViewer?: CellViewer;
|
|
18
23
|
className?: string;
|
|
19
|
-
align?:
|
|
20
|
-
fixed?:
|
|
24
|
+
align?: CellAlign;
|
|
25
|
+
fixed?: Omit<CellAlign, 'center'>;
|
|
21
26
|
value?: string | number | null;
|
|
22
27
|
};
|
|
23
|
-
export declare type CellEditorProps = {
|
|
24
|
-
value: unknown;
|
|
25
|
-
cell?: Cell;
|
|
26
|
-
onChange: (value: unknown) => void;
|
|
27
|
-
onConfirm: (value: unknown) => void;
|
|
28
|
-
};
|
|
29
28
|
export declare type CellViewerProps = {
|
|
30
29
|
value: unknown;
|
|
31
30
|
record?: Record<string, unknown>;
|
|
32
|
-
row
|
|
33
|
-
col
|
|
31
|
+
row?: number;
|
|
32
|
+
col?: number;
|
|
34
33
|
cell?: Cell;
|
|
35
34
|
};
|
|
35
|
+
export declare type CellEditorProps = {
|
|
36
|
+
value: unknown;
|
|
37
|
+
cell?: Cell;
|
|
38
|
+
onChange: (value: unknown) => void;
|
|
39
|
+
onConfirm: (value: unknown) => void;
|
|
40
|
+
} & CellViewerProps;
|
|
36
41
|
export declare type CellEditor = React.FC<CellEditorProps> & {
|
|
37
42
|
checker?: (value: unknown) => boolean;
|
|
38
43
|
formatter?: (value: unknown) => unknown;
|
|
@@ -166,15 +171,13 @@ export declare type UpdateStateType = {
|
|
|
166
171
|
cellChangeHandler: (cells: CellData[], additions?: CellData[]) => void;
|
|
167
172
|
};
|
|
168
173
|
export declare type UpdateFocus = (start: CellPosition, end: CellPosition) => void;
|
|
169
|
-
export declare type Options<T> = {
|
|
174
|
+
export declare type Options<T = any> = {
|
|
170
175
|
value: string;
|
|
171
176
|
label: string;
|
|
172
177
|
} & T;
|
|
173
178
|
export declare type OptionsType = Options<{
|
|
174
179
|
disabled?: boolean;
|
|
175
|
-
children?:
|
|
176
|
-
children?: Options<Record<string, unknown>>;
|
|
177
|
-
}>;
|
|
180
|
+
children?: OptionsType[];
|
|
178
181
|
}>;
|
|
179
182
|
export declare type OperateHistory = {
|
|
180
183
|
changes: Partial<CellData>[];
|
package/dist/type/sheet.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
1
2
|
import { SheetType } from '.';
|
|
2
3
|
export declare type refAssertion = {
|
|
3
4
|
contains?: (target: EventTarget | null) => boolean;
|
|
@@ -30,6 +31,8 @@ export declare type TableGroupConfig = {
|
|
|
30
31
|
defaultOpen: boolean;
|
|
31
32
|
};
|
|
32
33
|
export declare type TableProps = {
|
|
34
|
+
className?: string;
|
|
35
|
+
sheetInstance?: React.MutableRefObject<SheetType.SheetInstance | null>;
|
|
33
36
|
columns: ColumnProps[];
|
|
34
37
|
virtualized?: boolean;
|
|
35
38
|
dataSource: Record<string, unknown>[];
|
|
@@ -50,4 +53,6 @@ export declare type TableProps = {
|
|
|
50
53
|
onChange: (value: TableGroupConfig) => void;
|
|
51
54
|
};
|
|
52
55
|
onChange: (changes: TableChange[]) => void;
|
|
56
|
+
handleAdd?: () => void;
|
|
57
|
+
eventHandler?: Record<'btn-click' | 'cell-edit' | 'cell-switch' | string, undefined | ((value: unknown) => void)>;
|
|
53
58
|
};
|