@nokecy/qc-ui 1.1.18 → 1.1.19
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/cjs/ag-grid-plus/ag-gridPlus.js +23 -0
- package/dist/cjs/ag-grid-plus/context/gridContext.d.ts +5 -0
- package/dist/cjs/ag-grid-plus/index.less +13 -0
- package/dist/cjs/ag-grid-plus/setting/ColumnConfigTable.js +79 -76
- package/dist/cjs/ag-grid-plus/setting/ColumnNameCellRenderer.d.ts +22 -0
- package/dist/cjs/ag-grid-plus/setting/ColumnNameCellRenderer.js +211 -0
- package/dist/cjs/ag-grid-plus/setting/ColumnSetting.js +80 -25
- package/dist/cjs/ag-grid-plus/setting/DebounceInputs.d.ts +1 -0
- package/dist/cjs/ag-grid-plus/setting/DebounceInputs.js +2 -0
- package/dist/cjs/ag-grid-plus/setting/columnGroupTypes.d.ts +3 -1
- package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.d.ts +2 -1
- package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.js +49 -9
- package/dist/esm/ag-grid-plus/ag-gridPlus.js +23 -0
- package/dist/esm/ag-grid-plus/context/gridContext.d.ts +5 -0
- package/dist/esm/ag-grid-plus/index.less +13 -0
- package/dist/esm/ag-grid-plus/setting/ColumnConfigTable.js +81 -78
- package/dist/esm/ag-grid-plus/setting/ColumnNameCellRenderer.d.ts +22 -0
- package/dist/esm/ag-grid-plus/setting/ColumnNameCellRenderer.js +204 -0
- package/dist/esm/ag-grid-plus/setting/ColumnSetting.js +80 -25
- package/dist/esm/ag-grid-plus/setting/DebounceInputs.d.ts +1 -0
- package/dist/esm/ag-grid-plus/setting/DebounceInputs.js +2 -0
- package/dist/esm/ag-grid-plus/setting/columnGroupTypes.d.ts +3 -1
- package/dist/esm/ag-grid-plus/setting/columnGroupUtils.d.ts +2 -1
- package/dist/esm/ag-grid-plus/setting/columnGroupUtils.js +49 -9
- package/dist/umd/qc-ui.min.css +1 -1
- package/dist/umd/qc-ui.min.js +1 -1
- package/package.json +1 -1
|
@@ -20,12 +20,13 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
22
|
import React, { useCallback, useMemo, useState, useRef, useEffect } from 'react';
|
|
23
|
-
import { Button, Select, Switch, Space, Popconfirm, message, Tag
|
|
24
|
-
import { DeleteOutlined, FolderOutlined, FolderAddOutlined, FileOutlined
|
|
23
|
+
import { Button, Select, Switch, Space, Popconfirm, message, Tag } from 'antd';
|
|
24
|
+
import { DeleteOutlined, FolderOutlined, FolderAddOutlined, FileOutlined } from '@ant-design/icons';
|
|
25
25
|
import { AgGridReact } from 'ag-grid-react';
|
|
26
26
|
import { generateId } from "./columnGroupUtils";
|
|
27
27
|
import { DebounceNumberInput } from "./DebounceInputs";
|
|
28
28
|
import { agGridTheme } from "../theme";
|
|
29
|
+
import { ColumnNameCellRenderer } from "./ColumnNameCellRenderer";
|
|
29
30
|
// ==================== Cell Renderers ====================
|
|
30
31
|
|
|
31
32
|
/** 类型标签 */
|
|
@@ -44,63 +45,7 @@ var TypeCellRenderer = function TypeCellRenderer(props) {
|
|
|
44
45
|
}, "\u5217");
|
|
45
46
|
};
|
|
46
47
|
|
|
47
|
-
|
|
48
|
-
var NameCellRenderer = function NameCellRenderer(props) {
|
|
49
|
-
var item = props.data;
|
|
50
|
-
if (!item) return null;
|
|
51
|
-
var paddingLeft = (item.level || 0) * 20;
|
|
52
|
-
|
|
53
|
-
// 从 props 中获取自定义参数
|
|
54
|
-
var _ref = props,
|
|
55
|
-
expandedKeys = _ref.expandedKeys,
|
|
56
|
-
onToggleExpand = _ref.onToggleExpand,
|
|
57
|
-
allItems = _ref.allItems;
|
|
58
|
-
|
|
59
|
-
// 检查是否有子节点
|
|
60
|
-
var hasChildren = allItems === null || allItems === void 0 ? void 0 : allItems.some(function (i) {
|
|
61
|
-
return i.parentId === item.id;
|
|
62
|
-
});
|
|
63
|
-
var isExpanded = expandedKeys === null || expandedKeys === void 0 ? void 0 : expandedKeys.has(item.id);
|
|
64
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
65
|
-
style: {
|
|
66
|
-
display: 'flex',
|
|
67
|
-
alignItems: 'center',
|
|
68
|
-
gap: 8,
|
|
69
|
-
paddingLeft: paddingLeft
|
|
70
|
-
}
|
|
71
|
-
}, item.type === 'group' && hasChildren ? /*#__PURE__*/React.createElement("span", {
|
|
72
|
-
onClick: function onClick() {
|
|
73
|
-
return onToggleExpand === null || onToggleExpand === void 0 ? void 0 : onToggleExpand(item.id);
|
|
74
|
-
},
|
|
75
|
-
style: {
|
|
76
|
-
cursor: 'pointer',
|
|
77
|
-
width: 16,
|
|
78
|
-
display: 'inline-block'
|
|
79
|
-
}
|
|
80
|
-
}, isExpanded ? '▼' : '▶') : /*#__PURE__*/React.createElement("span", {
|
|
81
|
-
style: {
|
|
82
|
-
width: 16,
|
|
83
|
-
display: 'inline-block'
|
|
84
|
-
}
|
|
85
|
-
}), /*#__PURE__*/React.createElement(HolderOutlined, {
|
|
86
|
-
style: {
|
|
87
|
-
color: '#999',
|
|
88
|
-
cursor: 'grab'
|
|
89
|
-
}
|
|
90
|
-
}), /*#__PURE__*/React.createElement(Input, {
|
|
91
|
-
value: item.headerName || '',
|
|
92
|
-
onChange: function onChange(e) {
|
|
93
|
-
if (props.node) {
|
|
94
|
-
props.node.setDataValue('headerName', e.target.value);
|
|
95
|
-
}
|
|
96
|
-
},
|
|
97
|
-
bordered: false,
|
|
98
|
-
placeholder: "\u8F93\u5165\u540D\u79F0",
|
|
99
|
-
style: {
|
|
100
|
-
flex: 1
|
|
101
|
-
}
|
|
102
|
-
}));
|
|
103
|
-
};
|
|
48
|
+
// 名称列渲染器已移至独立文件 ColumnNameCellRenderer.tsx
|
|
104
49
|
|
|
105
50
|
/** 宽度输入 */
|
|
106
51
|
var WidthCellRenderer = function WidthCellRenderer(props) {
|
|
@@ -115,6 +60,7 @@ var WidthCellRenderer = function WidthCellRenderer(props) {
|
|
|
115
60
|
},
|
|
116
61
|
min: 50,
|
|
117
62
|
max: 1000,
|
|
63
|
+
size: "small",
|
|
118
64
|
style: {
|
|
119
65
|
width: '100%'
|
|
120
66
|
}
|
|
@@ -220,16 +166,47 @@ var PinnedCellRenderer = function PinnedCellRenderer(props) {
|
|
|
220
166
|
});
|
|
221
167
|
};
|
|
222
168
|
|
|
169
|
+
/** 对齐方式渲染器 */
|
|
170
|
+
var AlignmentCellRenderer = function AlignmentCellRenderer(props) {
|
|
171
|
+
var item = props.data;
|
|
172
|
+
if (!item || item.type !== 'column') return /*#__PURE__*/React.createElement("span", null, "-");
|
|
173
|
+
|
|
174
|
+
// 标准化 cellClass 值,默认为左对齐
|
|
175
|
+
var normalizedValue = item.cellClass || 'custom-cell-left';
|
|
176
|
+
return /*#__PURE__*/React.createElement(Select, {
|
|
177
|
+
value: normalizedValue,
|
|
178
|
+
onChange: function onChange(val) {
|
|
179
|
+
if (props.node) {
|
|
180
|
+
props.node.setDataValue('cellClass', val);
|
|
181
|
+
}
|
|
182
|
+
},
|
|
183
|
+
style: {
|
|
184
|
+
width: '100%'
|
|
185
|
+
},
|
|
186
|
+
options: [{
|
|
187
|
+
value: 'custom-cell-left',
|
|
188
|
+
label: '左对齐'
|
|
189
|
+
}, {
|
|
190
|
+
value: 'custom-cell-centered',
|
|
191
|
+
label: '居中对齐'
|
|
192
|
+
}, {
|
|
193
|
+
value: 'custom-cell-right',
|
|
194
|
+
label: '右对齐'
|
|
195
|
+
}],
|
|
196
|
+
size: "small"
|
|
197
|
+
});
|
|
198
|
+
};
|
|
199
|
+
|
|
223
200
|
/** 操作列 */
|
|
224
201
|
var ActionCellRenderer = function ActionCellRenderer(props) {
|
|
225
202
|
var item = props.data;
|
|
226
203
|
if (!item) return null;
|
|
227
204
|
|
|
228
205
|
// 从 props 中获取自定义参数
|
|
229
|
-
var
|
|
230
|
-
onDelete =
|
|
231
|
-
onAddChildGroup =
|
|
232
|
-
simple =
|
|
206
|
+
var _ref = props,
|
|
207
|
+
onDelete = _ref.onDelete,
|
|
208
|
+
onAddChildGroup = _ref.onAddChildGroup,
|
|
209
|
+
simple = _ref.simple;
|
|
233
210
|
return /*#__PURE__*/React.createElement(Space, {
|
|
234
211
|
size: "small"
|
|
235
212
|
}, !simple && item.type === 'group' && /*#__PURE__*/React.createElement(Button, {
|
|
@@ -254,13 +231,13 @@ var ActionCellRenderer = function ActionCellRenderer(props) {
|
|
|
254
231
|
|
|
255
232
|
// ==================== 主组件 ====================
|
|
256
233
|
|
|
257
|
-
var ColumnConfigTable = function ColumnConfigTable(
|
|
258
|
-
var items =
|
|
259
|
-
onChange =
|
|
260
|
-
|
|
261
|
-
simple =
|
|
262
|
-
|
|
263
|
-
scrollY =
|
|
234
|
+
var ColumnConfigTable = function ColumnConfigTable(_ref2) {
|
|
235
|
+
var items = _ref2.items,
|
|
236
|
+
onChange = _ref2.onChange,
|
|
237
|
+
_ref2$simple = _ref2.simple,
|
|
238
|
+
simple = _ref2$simple === void 0 ? false : _ref2$simple,
|
|
239
|
+
_ref2$scrollY = _ref2.scrollY,
|
|
240
|
+
scrollY = _ref2$scrollY === void 0 ? 480 : _ref2$scrollY;
|
|
264
241
|
var _useState = useState(items),
|
|
265
242
|
_useState2 = _slicedToArray(_useState, 2),
|
|
266
243
|
localItems = _useState2[0],
|
|
@@ -600,6 +577,12 @@ var ColumnConfigTable = function ColumnConfigTable(_ref3) {
|
|
|
600
577
|
|
|
601
578
|
// 列定义
|
|
602
579
|
var columnDefs = useMemo(function () {
|
|
580
|
+
// 通用单元格样式 - 垂直居中
|
|
581
|
+
var commonCellStyle = {
|
|
582
|
+
display: 'flex',
|
|
583
|
+
alignItems: 'center',
|
|
584
|
+
height: '100%'
|
|
585
|
+
};
|
|
603
586
|
var cols = [{
|
|
604
587
|
field: 'type',
|
|
605
588
|
headerName: '类型',
|
|
@@ -607,6 +590,7 @@ var ColumnConfigTable = function ColumnConfigTable(_ref3) {
|
|
|
607
590
|
minWidth: 100,
|
|
608
591
|
maxWidth: 150,
|
|
609
592
|
cellRenderer: TypeCellRenderer,
|
|
593
|
+
cellStyle: commonCellStyle,
|
|
610
594
|
rowDrag: true,
|
|
611
595
|
suppressSizeToFit: true
|
|
612
596
|
}, {
|
|
@@ -614,37 +598,49 @@ var ColumnConfigTable = function ColumnConfigTable(_ref3) {
|
|
|
614
598
|
headerName: '名称',
|
|
615
599
|
flex: 1,
|
|
616
600
|
minWidth: 200,
|
|
617
|
-
cellRenderer:
|
|
601
|
+
cellRenderer: ColumnNameCellRenderer,
|
|
618
602
|
cellRendererParams: {
|
|
619
603
|
expandedKeys: expandedKeys,
|
|
620
604
|
onToggleExpand: toggleExpand,
|
|
621
605
|
allItems: localItems
|
|
622
606
|
}
|
|
607
|
+
// 名称列不需要 cellStyle,因为渲染器内部已经处理了
|
|
623
608
|
}, {
|
|
624
609
|
field: 'width',
|
|
625
610
|
headerName: '宽度',
|
|
626
611
|
width: 100,
|
|
627
|
-
cellRenderer: WidthCellRenderer
|
|
612
|
+
cellRenderer: WidthCellRenderer,
|
|
613
|
+
cellStyle: commonCellStyle
|
|
628
614
|
}, {
|
|
629
615
|
field: 'flex',
|
|
630
616
|
headerName: '占满',
|
|
631
617
|
width: 120,
|
|
632
|
-
cellRenderer: FlexCellRenderer
|
|
618
|
+
cellRenderer: FlexCellRenderer,
|
|
619
|
+
cellStyle: commonCellStyle
|
|
633
620
|
}, {
|
|
634
621
|
field: 'pinned',
|
|
635
622
|
headerName: '固定',
|
|
636
623
|
width: 120,
|
|
637
|
-
cellRenderer: PinnedCellRenderer
|
|
624
|
+
cellRenderer: PinnedCellRenderer,
|
|
625
|
+
cellStyle: commonCellStyle
|
|
626
|
+
}, {
|
|
627
|
+
field: 'cellClass',
|
|
628
|
+
headerName: '对齐',
|
|
629
|
+
width: 120,
|
|
630
|
+
cellRenderer: AlignmentCellRenderer,
|
|
631
|
+
cellStyle: commonCellStyle
|
|
638
632
|
}, {
|
|
639
633
|
field: 'hide',
|
|
640
634
|
headerName: '隐藏',
|
|
641
635
|
width: 80,
|
|
642
|
-
cellRenderer: createSwitchRenderer('hide')
|
|
636
|
+
cellRenderer: createSwitchRenderer('hide'),
|
|
637
|
+
cellStyle: commonCellStyle
|
|
643
638
|
}, {
|
|
644
639
|
field: 'suppressHeaderFilterButton',
|
|
645
640
|
headerName: '列过滤',
|
|
646
641
|
width: 80,
|
|
647
|
-
cellRenderer: SuppressFilterButtonRenderer
|
|
642
|
+
cellRenderer: SuppressFilterButtonRenderer,
|
|
643
|
+
cellStyle: commonCellStyle
|
|
648
644
|
}, {
|
|
649
645
|
headerName: '操作',
|
|
650
646
|
width: 200,
|
|
@@ -654,7 +650,8 @@ var ColumnConfigTable = function ColumnConfigTable(_ref3) {
|
|
|
654
650
|
onDelete: handleDelete,
|
|
655
651
|
onAddChildGroup: handleAddChildGroup,
|
|
656
652
|
simple: simple
|
|
657
|
-
}
|
|
653
|
+
},
|
|
654
|
+
cellStyle: commonCellStyle
|
|
658
655
|
}];
|
|
659
656
|
return cols;
|
|
660
657
|
}, [handleDelete, handleAddChildGroup, simple, expandedKeys, toggleExpand, localItems]);
|
|
@@ -722,7 +719,13 @@ var ColumnConfigTable = function ColumnConfigTable(_ref3) {
|
|
|
722
719
|
rowDragEntireRow: true,
|
|
723
720
|
suppressMoveWhenRowDragging: true,
|
|
724
721
|
suppressMovableColumns: true,
|
|
725
|
-
domLayout: "normal"
|
|
722
|
+
domLayout: "normal",
|
|
723
|
+
getRowHeight: function getRowHeight(params) {
|
|
724
|
+
var item = params.data;
|
|
725
|
+
// 如果已修改,显示双行布局(原始名称 + 当前名称)
|
|
726
|
+
var isModified = (item === null || item === void 0 ? void 0 : item.originalHeaderName) && (item === null || item === void 0 ? void 0 : item.headerName) !== (item === null || item === void 0 ? void 0 : item.originalHeaderName);
|
|
727
|
+
return isModified ? 56 : 40;
|
|
728
|
+
}
|
|
726
729
|
})));
|
|
727
730
|
};
|
|
728
731
|
export default ColumnConfigTable;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 列名称单元格渲染器 - 分层叠加式设计
|
|
3
|
+
*
|
|
4
|
+
* 设计特点:
|
|
5
|
+
* - 垂直分层布局,原始字段(field)在上,编辑区域在下
|
|
6
|
+
* - 使用视觉层次区分只读和可编辑信息
|
|
7
|
+
* - 支持快速重置功能
|
|
8
|
+
* - 显示修改状态指示
|
|
9
|
+
*/
|
|
10
|
+
import React from 'react';
|
|
11
|
+
import type { ICellRendererParams } from 'ag-grid-community';
|
|
12
|
+
import type { FlatColumnItem } from './columnGroupTypes';
|
|
13
|
+
interface ColumnNameCellRendererProps extends ICellRendererParams<FlatColumnItem> {
|
|
14
|
+
expandedKeys?: Set<string>;
|
|
15
|
+
onToggleExpand?: (id: string) => void;
|
|
16
|
+
allItems?: FlatColumnItem[];
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* 列名称单元格渲染器
|
|
20
|
+
*/
|
|
21
|
+
export declare const ColumnNameCellRenderer: React.FC<ColumnNameCellRendererProps>;
|
|
22
|
+
export default ColumnNameCellRenderer;
|
|
@@ -0,0 +1,204 @@
|
|
|
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(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; } }
|
|
6
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
7
|
+
/**
|
|
8
|
+
* 列名称单元格渲染器 - 分层叠加式设计
|
|
9
|
+
*
|
|
10
|
+
* 设计特点:
|
|
11
|
+
* - 垂直分层布局,原始字段(field)在上,编辑区域在下
|
|
12
|
+
* - 使用视觉层次区分只读和可编辑信息
|
|
13
|
+
* - 支持快速重置功能
|
|
14
|
+
* - 显示修改状态指示
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import React, { useState, useCallback, useMemo } from 'react';
|
|
18
|
+
import { Input, Typography, Button, Tooltip } from 'antd';
|
|
19
|
+
import { UndoOutlined, InfoCircleOutlined, HolderOutlined } from '@ant-design/icons';
|
|
20
|
+
var Text = Typography.Text;
|
|
21
|
+
/**
|
|
22
|
+
* 列名称单元格渲染器
|
|
23
|
+
*/
|
|
24
|
+
export var ColumnNameCellRenderer = function ColumnNameCellRenderer(props) {
|
|
25
|
+
var item = props.data,
|
|
26
|
+
node = props.node,
|
|
27
|
+
expandedKeys = props.expandedKeys,
|
|
28
|
+
onToggleExpand = props.onToggleExpand,
|
|
29
|
+
allItems = props.allItems;
|
|
30
|
+
var _useState = useState(false),
|
|
31
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
32
|
+
isEditing = _useState2[0],
|
|
33
|
+
setIsEditing = _useState2[1];
|
|
34
|
+
var _useState3 = useState((item === null || item === void 0 ? void 0 : item.headerName) || ''),
|
|
35
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
36
|
+
localValue = _useState4[0],
|
|
37
|
+
setLocalValue = _useState4[1];
|
|
38
|
+
|
|
39
|
+
// 计算缩进
|
|
40
|
+
var paddingLeft = ((item === null || item === void 0 ? void 0 : item.level) || 0) * 20;
|
|
41
|
+
|
|
42
|
+
// 检查是否有子节点
|
|
43
|
+
var hasChildren = useMemo(function () {
|
|
44
|
+
return allItems === null || allItems === void 0 ? void 0 : allItems.some(function (i) {
|
|
45
|
+
return i.parentId === (item === null || item === void 0 ? void 0 : item.id);
|
|
46
|
+
});
|
|
47
|
+
}, [allItems, item === null || item === void 0 ? void 0 : item.id]);
|
|
48
|
+
var isExpanded = expandedKeys === null || expandedKeys === void 0 ? void 0 : expandedKeys.has((item === null || item === void 0 ? void 0 : item.id) || '');
|
|
49
|
+
|
|
50
|
+
// 判断是否已修改 (对比当前 headerName 和原始 originalHeaderName)
|
|
51
|
+
var isModified = useMemo(function () {
|
|
52
|
+
return (item === null || item === void 0 ? void 0 : item.originalHeaderName) && (item === null || item === void 0 ? void 0 : item.headerName) !== (item === null || item === void 0 ? void 0 : item.originalHeaderName);
|
|
53
|
+
}, [item === null || item === void 0 ? void 0 : item.originalHeaderName, item === null || item === void 0 ? void 0 : item.headerName]);
|
|
54
|
+
|
|
55
|
+
// 处理名称修改
|
|
56
|
+
var handleChange = useCallback(function (e) {
|
|
57
|
+
setLocalValue(e.target.value);
|
|
58
|
+
}, []);
|
|
59
|
+
|
|
60
|
+
// 处理失焦保存
|
|
61
|
+
var handleBlur = useCallback(function () {
|
|
62
|
+
setIsEditing(false);
|
|
63
|
+
if (localValue !== (item === null || item === void 0 ? void 0 : item.headerName) && node) {
|
|
64
|
+
node.setDataValue('headerName', localValue);
|
|
65
|
+
}
|
|
66
|
+
}, [localValue, item === null || item === void 0 ? void 0 : item.headerName, node]);
|
|
67
|
+
|
|
68
|
+
// 处理按下 Enter 键
|
|
69
|
+
var handlePressEnter = useCallback(function (e) {
|
|
70
|
+
e.currentTarget.blur();
|
|
71
|
+
}, []);
|
|
72
|
+
|
|
73
|
+
// 处理按下 Escape 键
|
|
74
|
+
var handleKeyDown = useCallback(function (e) {
|
|
75
|
+
if (e.key === 'Escape') {
|
|
76
|
+
setLocalValue((item === null || item === void 0 ? void 0 : item.headerName) || '');
|
|
77
|
+
e.currentTarget.blur();
|
|
78
|
+
}
|
|
79
|
+
}, [item === null || item === void 0 ? void 0 : item.headerName]);
|
|
80
|
+
|
|
81
|
+
// 处理聚焦
|
|
82
|
+
var handleFocus = useCallback(function () {
|
|
83
|
+
setIsEditing(true);
|
|
84
|
+
}, []);
|
|
85
|
+
|
|
86
|
+
// 处理重置
|
|
87
|
+
var handleReset = useCallback(function () {
|
|
88
|
+
if (item !== null && item !== void 0 && item.originalHeaderName && node) {
|
|
89
|
+
var originalValue = item.originalHeaderName;
|
|
90
|
+
setLocalValue(originalValue);
|
|
91
|
+
node.setDataValue('headerName', originalValue);
|
|
92
|
+
}
|
|
93
|
+
}, [item === null || item === void 0 ? void 0 : item.originalHeaderName, node]);
|
|
94
|
+
if (!item) return null;
|
|
95
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
96
|
+
style: {
|
|
97
|
+
display: 'flex',
|
|
98
|
+
alignItems: 'center',
|
|
99
|
+
gap: 8,
|
|
100
|
+
paddingLeft: paddingLeft,
|
|
101
|
+
width: '100%',
|
|
102
|
+
height: '100%',
|
|
103
|
+
minHeight: isModified ? '56px' : '40px'
|
|
104
|
+
}
|
|
105
|
+
}, item.type === 'group' && hasChildren ? /*#__PURE__*/React.createElement("span", {
|
|
106
|
+
onClick: function onClick() {
|
|
107
|
+
return onToggleExpand === null || onToggleExpand === void 0 ? void 0 : onToggleExpand(item.id);
|
|
108
|
+
},
|
|
109
|
+
style: {
|
|
110
|
+
cursor: 'pointer',
|
|
111
|
+
width: 16,
|
|
112
|
+
display: 'inline-block',
|
|
113
|
+
fontSize: '12px',
|
|
114
|
+
color: '#666'
|
|
115
|
+
}
|
|
116
|
+
}, isExpanded ? '▼' : '▶') : /*#__PURE__*/React.createElement("span", {
|
|
117
|
+
style: {
|
|
118
|
+
width: 16,
|
|
119
|
+
display: 'inline-block'
|
|
120
|
+
}
|
|
121
|
+
}), /*#__PURE__*/React.createElement(HolderOutlined, {
|
|
122
|
+
style: {
|
|
123
|
+
color: '#999',
|
|
124
|
+
cursor: 'grab',
|
|
125
|
+
fontSize: '14px'
|
|
126
|
+
}
|
|
127
|
+
}), /*#__PURE__*/React.createElement("div", {
|
|
128
|
+
style: {
|
|
129
|
+
flex: 1,
|
|
130
|
+
display: 'flex',
|
|
131
|
+
flexDirection: 'column',
|
|
132
|
+
gap: 2,
|
|
133
|
+
justifyContent: 'center'
|
|
134
|
+
}
|
|
135
|
+
}, item.originalHeaderName && isModified && /*#__PURE__*/React.createElement("div", {
|
|
136
|
+
style: {
|
|
137
|
+
display: 'flex',
|
|
138
|
+
alignItems: 'center',
|
|
139
|
+
gap: 4,
|
|
140
|
+
height: '16px'
|
|
141
|
+
}
|
|
142
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
143
|
+
type: "secondary",
|
|
144
|
+
style: {
|
|
145
|
+
fontSize: '11px',
|
|
146
|
+
color: '#8c8c8c',
|
|
147
|
+
lineHeight: '16px'
|
|
148
|
+
}
|
|
149
|
+
}, "\u539F\u59CB: ", item.originalHeaderName), /*#__PURE__*/React.createElement(Tooltip, {
|
|
150
|
+
title: "\u5DF2\u4FEE\u6539: ".concat(item.originalHeaderName, " \u2192 ").concat(item.headerName)
|
|
151
|
+
}, /*#__PURE__*/React.createElement(InfoCircleOutlined, {
|
|
152
|
+
style: {
|
|
153
|
+
fontSize: '11px',
|
|
154
|
+
color: '#1890ff',
|
|
155
|
+
cursor: 'help'
|
|
156
|
+
}
|
|
157
|
+
}))), /*#__PURE__*/React.createElement("div", {
|
|
158
|
+
style: {
|
|
159
|
+
display: 'flex',
|
|
160
|
+
alignItems: 'center',
|
|
161
|
+
gap: 4
|
|
162
|
+
}
|
|
163
|
+
}, /*#__PURE__*/React.createElement(Input, {
|
|
164
|
+
value: isEditing ? localValue : item.headerName,
|
|
165
|
+
onChange: handleChange,
|
|
166
|
+
onFocus: handleFocus,
|
|
167
|
+
onBlur: handleBlur,
|
|
168
|
+
onPressEnter: handlePressEnter,
|
|
169
|
+
onKeyDown: handleKeyDown,
|
|
170
|
+
bordered: false,
|
|
171
|
+
placeholder: item.type === 'group' ? '输入分组名称' : '输入显示名称',
|
|
172
|
+
style: {
|
|
173
|
+
flex: 1,
|
|
174
|
+
fontSize: '14px',
|
|
175
|
+
fontWeight: item.type === 'group' ? 600 : 400,
|
|
176
|
+
borderBottom: isEditing ? '1px solid #1890ff' : '1px solid transparent',
|
|
177
|
+
transition: 'border-color 0.2s',
|
|
178
|
+
padding: '0 4px',
|
|
179
|
+
color: isModified ? '#1890ff' : 'rgba(0, 0, 0, 0.85)'
|
|
180
|
+
}
|
|
181
|
+
}), isModified && /*#__PURE__*/React.createElement(Tooltip, {
|
|
182
|
+
title: "\u91CD\u7F6E\u4E3A\u539F\u59CB\u540D\u79F0"
|
|
183
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
|
184
|
+
type: "text",
|
|
185
|
+
size: "small",
|
|
186
|
+
icon: /*#__PURE__*/React.createElement(UndoOutlined, null),
|
|
187
|
+
onClick: handleReset,
|
|
188
|
+
style: {
|
|
189
|
+
minWidth: '24px',
|
|
190
|
+
width: '24px',
|
|
191
|
+
height: '24px',
|
|
192
|
+
padding: 0,
|
|
193
|
+
opacity: 0.6,
|
|
194
|
+
transition: 'opacity 0.2s'
|
|
195
|
+
},
|
|
196
|
+
onMouseEnter: function onMouseEnter(e) {
|
|
197
|
+
return e.currentTarget.style.opacity = '1';
|
|
198
|
+
},
|
|
199
|
+
onMouseLeave: function onMouseLeave(e) {
|
|
200
|
+
return e.currentTarget.style.opacity = '0.6';
|
|
201
|
+
}
|
|
202
|
+
})))));
|
|
203
|
+
};
|
|
204
|
+
export default ColumnNameCellRenderer;
|