@lemon-fe/kits 1.0.0-142 → 1.0.0-144
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/es/components/DataGrid/components/Search.d.ts +4 -0
- package/es/components/DataGrid/components/Search.js +183 -0
- package/es/components/DataGrid/index.d.ts +2 -1
- package/es/components/DataGrid/index.js +18 -2
- package/es/components/DataGrid/typings.d.ts +20 -0
- package/es/components/EditableTable/Table.js +1 -1
- package/es/layouts/BasicLayout/components/Main.js +37 -4
- package/es/layouts/BasicLayout/components/MainFramework/index.less +15 -0
- package/package.json +1 -1
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
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; }
|
|
2
|
+
|
|
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
|
+
|
|
5
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
|
+
|
|
7
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
8
|
+
|
|
9
|
+
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."); }
|
|
10
|
+
|
|
11
|
+
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); }
|
|
12
|
+
|
|
13
|
+
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; }
|
|
14
|
+
|
|
15
|
+
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
16
|
+
|
|
17
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
18
|
+
|
|
19
|
+
import { useDebounce } from '@lemon-fe/hooks';
|
|
20
|
+
import { Button, Input, Space } from 'antd';
|
|
21
|
+
import React, { forwardRef, memo, useState, useImperativeHandle, useMemo } from 'react';
|
|
22
|
+
import { useGridStore } from "../hooks";
|
|
23
|
+
export default /*#__PURE__*/memo( /*#__PURE__*/forwardRef(function Search(props, ref) {
|
|
24
|
+
var placeholder = props.placeholder,
|
|
25
|
+
searchFields = props.searchFields,
|
|
26
|
+
focusColumn = props.focusColumn;
|
|
27
|
+
var defaultState = useMemo(function () {
|
|
28
|
+
return {
|
|
29
|
+
keywords: '',
|
|
30
|
+
nodes: [],
|
|
31
|
+
index: -1
|
|
32
|
+
};
|
|
33
|
+
}, []);
|
|
34
|
+
var grid = useGridStore(function (state) {
|
|
35
|
+
return state.grid;
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
var _useState = useState(defaultState),
|
|
39
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
40
|
+
state = _useState2[0],
|
|
41
|
+
setState = _useState2[1];
|
|
42
|
+
|
|
43
|
+
var handleSearch = useDebounce(function (keywords) {
|
|
44
|
+
if (keywords.length <= 0) {
|
|
45
|
+
setState(defaultState);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
var cols = [];
|
|
50
|
+
|
|
51
|
+
if (searchFields) {
|
|
52
|
+
searchFields.forEach(function (col) {
|
|
53
|
+
var result = grid.columnApi.getColumn(col);
|
|
54
|
+
|
|
55
|
+
if (result) {
|
|
56
|
+
cols.push(result);
|
|
57
|
+
} else {
|
|
58
|
+
cols.push(col);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
} else {
|
|
62
|
+
cols = grid.columnApi.getColumns() || [];
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (cols.length <= 0) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
var nodes = [];
|
|
70
|
+
grid.api.forEachNodeAfterFilterAndSort(function (node) {
|
|
71
|
+
var idx = node.rowIndex;
|
|
72
|
+
|
|
73
|
+
if (idx === null) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
for (var i = 0; i < cols.length; i++) {
|
|
78
|
+
var col = cols[i];
|
|
79
|
+
var value = grid.api.getValue(col, node);
|
|
80
|
+
|
|
81
|
+
if (value !== undefined && value !== null && typeof value === 'string' && value.includes(keywords)) {
|
|
82
|
+
nodes.push({
|
|
83
|
+
index: idx,
|
|
84
|
+
id: node.id
|
|
85
|
+
});
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
setState(function (prev) {
|
|
91
|
+
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
92
|
+
nodes: nodes,
|
|
93
|
+
index: -1
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
}, 300);
|
|
97
|
+
|
|
98
|
+
var focusCell = function focusCell(index) {
|
|
99
|
+
var node = grid.api.getModel().getRow(index);
|
|
100
|
+
|
|
101
|
+
if (node === undefined) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
grid.api.ensureIndexVisible(index);
|
|
106
|
+
var col = grid.columnApi.getAllDisplayedColumns()[0];
|
|
107
|
+
|
|
108
|
+
if (focusColumn) {
|
|
109
|
+
col = grid.columnApi.getColumn(focusColumn);
|
|
110
|
+
|
|
111
|
+
if (col !== null) {
|
|
112
|
+
grid.api.setFocusedCell(index, col);
|
|
113
|
+
|
|
114
|
+
if (col.isCellEditable(node)) {
|
|
115
|
+
grid.api.startEditingCell({
|
|
116
|
+
rowIndex: index,
|
|
117
|
+
colKey: col
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
} else {
|
|
122
|
+
node.setSelected(true);
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
var handlePrev = function handlePrev() {
|
|
127
|
+
if (state.nodes.length <= 0) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
var idx = (state.index - 1 + state.nodes.length) % state.nodes.length;
|
|
132
|
+
focusCell(state.nodes[idx].index);
|
|
133
|
+
setState(function (prev) {
|
|
134
|
+
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
135
|
+
index: idx
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
var handleNext = function handleNext() {
|
|
141
|
+
if (state.nodes.length <= 0) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
var idx = (state.index + 1) % state.nodes.length;
|
|
146
|
+
focusCell(state.nodes[idx].index);
|
|
147
|
+
setState(function (prev) {
|
|
148
|
+
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
149
|
+
index: idx
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
useImperativeHandle(ref, function () {
|
|
155
|
+
return {
|
|
156
|
+
reset: function reset() {
|
|
157
|
+
setState(defaultState);
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
});
|
|
161
|
+
return /*#__PURE__*/React.createElement(Space, null, /*#__PURE__*/React.createElement("span", null, "\u5173\u952E\u5B57"), /*#__PURE__*/React.createElement(Input, {
|
|
162
|
+
placeholder: placeholder,
|
|
163
|
+
value: state.keywords,
|
|
164
|
+
onChange: function onChange(e) {
|
|
165
|
+
setState(function (prev) {
|
|
166
|
+
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
167
|
+
keywords: e.target.value
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
handleSearch(e.target.value);
|
|
171
|
+
},
|
|
172
|
+
suffix: /*#__PURE__*/React.createElement("span", null, "".concat(state.index + 1, "/").concat(state.nodes.length)),
|
|
173
|
+
onKeyUp: function onKeyUp(e) {
|
|
174
|
+
if (e.key === 'Enter') {
|
|
175
|
+
handleNext();
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}), /*#__PURE__*/React.createElement(Button, {
|
|
179
|
+
onClick: handlePrev
|
|
180
|
+
}, "\u4E0A\u4E00\u4E2A"), /*#__PURE__*/React.createElement(Button, {
|
|
181
|
+
onClick: handleNext
|
|
182
|
+
}, "\u4E0B\u4E00\u4E2A"));
|
|
183
|
+
}));
|
|
@@ -15,6 +15,7 @@ export default class DataGrid<TData extends Record<string, any>> extends Compone
|
|
|
15
15
|
private readyQueue;
|
|
16
16
|
private emptyRowData;
|
|
17
17
|
private sideBarDef;
|
|
18
|
+
private searchRef;
|
|
18
19
|
private prevFocusedCell;
|
|
19
20
|
static defaultProps: {
|
|
20
21
|
stopEditingWhenCellsLoseFocus: boolean;
|
|
@@ -68,7 +69,7 @@ export default class DataGrid<TData extends Record<string, any>> extends Compone
|
|
|
68
69
|
private getColumnDefs;
|
|
69
70
|
private isClientMode;
|
|
70
71
|
private clearReadyQueue;
|
|
71
|
-
|
|
72
|
+
afterReady(cb: () => void): void;
|
|
72
73
|
private isPreserveSelected;
|
|
73
74
|
private updateRowData;
|
|
74
75
|
private getDataFromServer;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var _excluded = ["validator"],
|
|
2
2
|
_excluded2 = ["title", "dataIndex", "type", "render", "ellipsis", "cellRenderer", "cellRendererParams", "className", "sorter", "sortable", "editable", "suppressKeyboardEvent"],
|
|
3
3
|
_excluded3 = ["title", "children"],
|
|
4
|
-
_excluded4 = ["rowKey", "fetch", "dataSource", "rowActions", "columns", "autoLoad", "loading", "summary", "detailCell", "pagination", "rowSelection", "columnTypes", "defaultColDef", "components", "sideBar", "detailCellRendererParams", "context"];
|
|
4
|
+
_excluded4 = ["rowKey", "fetch", "dataSource", "rowActions", "columns", "autoLoad", "loading", "summary", "detailCell", "pagination", "rowSelection", "columnTypes", "defaultColDef", "components", "sideBar", "detailCellRendererParams", "context", "showSearch"];
|
|
5
5
|
|
|
6
6
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
7
7
|
|
|
@@ -72,7 +72,7 @@ import Scheme from 'async-validator';
|
|
|
72
72
|
import classNames from 'classnames';
|
|
73
73
|
import { get, set } from 'lodash';
|
|
74
74
|
import memoizeOne from 'memoize-one';
|
|
75
|
-
import React, { Component } from 'react';
|
|
75
|
+
import React, { Component, createRef } from 'react';
|
|
76
76
|
import shallowEqual from 'shallowequal';
|
|
77
77
|
import DateEditor from "./cell-editors/Date";
|
|
78
78
|
import NumberEditor from "./cell-editors/Number";
|
|
@@ -80,6 +80,7 @@ import RowEditor, { RowEditorData } from "./cell-editors/Row";
|
|
|
80
80
|
import SelectEditor from "./cell-editors/Select";
|
|
81
81
|
import TextEditor from "./cell-editors/Text";
|
|
82
82
|
import EditorWrapper from "./cell-editors/Wrapper";
|
|
83
|
+
import Search from "./components/Search";
|
|
83
84
|
import Selected from "./components/Selected";
|
|
84
85
|
import GridStoreContext from "./context/GridStore";
|
|
85
86
|
import { useGridStore } from "./hooks";
|
|
@@ -172,6 +173,8 @@ var DataGrid = /*#__PURE__*/function (_Component) {
|
|
|
172
173
|
}]
|
|
173
174
|
});
|
|
174
175
|
|
|
176
|
+
_defineProperty(_assertThisInitialized(_this), "searchRef", /*#__PURE__*/createRef());
|
|
177
|
+
|
|
175
178
|
_defineProperty(_assertThisInitialized(_this), "prevFocusedCell", null);
|
|
176
179
|
|
|
177
180
|
_defineProperty(_assertThisInitialized(_this), "init", function (args) {
|
|
@@ -258,10 +261,13 @@ var DataGrid = /*#__PURE__*/function (_Component) {
|
|
|
258
261
|
}
|
|
259
262
|
|
|
260
263
|
if (onDataSourceChange !== undefined) {
|
|
264
|
+
var _this$searchRef$curre;
|
|
265
|
+
|
|
261
266
|
/**
|
|
262
267
|
* 这么做是为了解决可编辑表格直接修改了原始数据的问题
|
|
263
268
|
*/
|
|
264
269
|
_this.dataSource = _toConsumableArray(_this.dataSource);
|
|
270
|
+
(_this$searchRef$curre = _this.searchRef.current) === null || _this$searchRef$curre === void 0 ? void 0 : _this$searchRef$curre.reset();
|
|
265
271
|
onDataSourceChange(_this.dataSource, evt);
|
|
266
272
|
}
|
|
267
273
|
});
|
|
@@ -294,6 +300,9 @@ var DataGrid = /*#__PURE__*/function (_Component) {
|
|
|
294
300
|
_this.dataSource = data;
|
|
295
301
|
|
|
296
302
|
if (onDataSourceChange !== undefined) {
|
|
303
|
+
var _this$searchRef$curre2;
|
|
304
|
+
|
|
305
|
+
(_this$searchRef$curre2 = _this.searchRef.current) === null || _this$searchRef$curre2 === void 0 ? void 0 : _this$searchRef$curre2.reset();
|
|
297
306
|
onDataSourceChange(data, evt);
|
|
298
307
|
}
|
|
299
308
|
}
|
|
@@ -1294,6 +1303,7 @@ var DataGrid = /*#__PURE__*/function (_Component) {
|
|
|
1294
1303
|
sideBarProp = _this$props7.sideBar,
|
|
1295
1304
|
detailCellRendererParams = _this$props7.detailCellRendererParams,
|
|
1296
1305
|
context = _this$props7.context,
|
|
1306
|
+
showSearch = _this$props7.showSearch,
|
|
1297
1307
|
restProps = _objectWithoutProperties(_this$props7, _excluded4);
|
|
1298
1308
|
|
|
1299
1309
|
var _this$state2 = this.state,
|
|
@@ -1315,6 +1325,12 @@ var DataGrid = /*#__PURE__*/function (_Component) {
|
|
|
1315
1325
|
}));
|
|
1316
1326
|
}
|
|
1317
1327
|
|
|
1328
|
+
if (showSearch) {
|
|
1329
|
+
footer.push( /*#__PURE__*/React.createElement(Search, _extends({
|
|
1330
|
+
ref: this.searchRef
|
|
1331
|
+
}, _typeof(showSearch) === 'object' ? showSearch : {})));
|
|
1332
|
+
}
|
|
1333
|
+
|
|
1318
1334
|
if (enablePagination) {
|
|
1319
1335
|
footer.push( /*#__PURE__*/React.createElement(Pagination, _extends({
|
|
1320
1336
|
key: "pagination",
|
|
@@ -112,6 +112,22 @@ export declare type DetailCell<TData, Params = Record<string, never>> = {
|
|
|
112
112
|
/** 这是一个render函数不是组件 */
|
|
113
113
|
render: (params: ICellRendererParams<TData> & Params) => ReactNode;
|
|
114
114
|
};
|
|
115
|
+
export interface DataGridSearch {
|
|
116
|
+
/**
|
|
117
|
+
* @description
|
|
118
|
+
* 不传入就根据所有字符类型的列数据搜索
|
|
119
|
+
*/
|
|
120
|
+
searchFields?: string[];
|
|
121
|
+
placeholder?: string;
|
|
122
|
+
/**
|
|
123
|
+
* @description
|
|
124
|
+
* 搜索后聚焦到哪个单元格,一般情况不要使用
|
|
125
|
+
*/
|
|
126
|
+
focusColumn?: string;
|
|
127
|
+
}
|
|
128
|
+
export interface DataGridSearchRef {
|
|
129
|
+
reset: () => void;
|
|
130
|
+
}
|
|
115
131
|
export interface DataGridProps<TData> extends Omit<AgGridReactProps<TData>, 'rowSelection' | 'pagination'> {
|
|
116
132
|
dataSource?: TData[];
|
|
117
133
|
/**
|
|
@@ -169,4 +185,8 @@ export interface DataGridProps<TData> extends Omit<AgGridReactProps<TData>, 'row
|
|
|
169
185
|
* @description 没有行数据时显示的文本
|
|
170
186
|
*/
|
|
171
187
|
emptyText?: string;
|
|
188
|
+
/**
|
|
189
|
+
* @description 显示底部搜索栏,只支持非远程模式
|
|
190
|
+
*/
|
|
191
|
+
showSearch?: boolean | DataGridSearch;
|
|
172
192
|
}
|
|
@@ -24,12 +24,12 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
24
24
|
|
|
25
25
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
26
26
|
|
|
27
|
-
import React, { useState, useMemo, useEffect, useRef } from 'react';
|
|
28
27
|
import { Modal } from 'antd';
|
|
29
|
-
import { useHistory, useLocation, matchPath, useRouteMatch } from 'react-router';
|
|
30
28
|
import moment from 'moment';
|
|
31
|
-
import
|
|
29
|
+
import React, { useState, useMemo, useEffect, useRef } from 'react';
|
|
30
|
+
import { useHistory, useLocation, matchPath, useRouteMatch } from 'react-router';
|
|
32
31
|
import RouteTab from "../../components/RouteTab";
|
|
32
|
+
import MainFramework from "./MainFramework";
|
|
33
33
|
|
|
34
34
|
function mapTree(tree, childrenKey, mapper) {
|
|
35
35
|
var traverse = function traverse(nodes) {
|
|
@@ -264,6 +264,38 @@ export default function Main(props) {
|
|
|
264
264
|
|
|
265
265
|
prevUrl.current = window.location.pathname;
|
|
266
266
|
}, [state]);
|
|
267
|
+
useEffect(function () {
|
|
268
|
+
var handler = function handler(e) {
|
|
269
|
+
if (window._czc) {
|
|
270
|
+
var _node = e.target;
|
|
271
|
+
var tab = undefined;
|
|
272
|
+
var eventType = undefined;
|
|
273
|
+
|
|
274
|
+
while (_node) {
|
|
275
|
+
if (!eventType) {
|
|
276
|
+
eventType = _node.dataset.trackEvent;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
tab = _node.dataset.trackTab;
|
|
280
|
+
|
|
281
|
+
if (tab) {
|
|
282
|
+
break;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
_node = _node.parentElement;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
if (eventType) {
|
|
289
|
+
window._czc.push('_trackEvent', title, '功能', tab || '--', eventType);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
};
|
|
293
|
+
|
|
294
|
+
window.addEventListener('click', handler, false);
|
|
295
|
+
return function () {
|
|
296
|
+
window.removeEventListener('click', handler, false);
|
|
297
|
+
};
|
|
298
|
+
}, []);
|
|
267
299
|
|
|
268
300
|
var handleClick = function handleClick(index) {
|
|
269
301
|
if (state.active !== index) {
|
|
@@ -375,7 +407,8 @@ export default function Main(props) {
|
|
|
375
407
|
key: key,
|
|
376
408
|
style: state.active === index ? undefined : {
|
|
377
409
|
display: 'none'
|
|
378
|
-
}
|
|
410
|
+
},
|
|
411
|
+
"data-track-tab": tab.title
|
|
379
412
|
}, /*#__PURE__*/React.createElement(RouteTab, {
|
|
380
413
|
authorities: mAuths,
|
|
381
414
|
route: route,
|
|
@@ -74,6 +74,21 @@
|
|
|
74
74
|
display: flex;
|
|
75
75
|
flex: 1;
|
|
76
76
|
min-height: 0;
|
|
77
|
+
|
|
78
|
+
.@{prefixCls}-layout {
|
|
79
|
+
background-color: transparent;
|
|
80
|
+
|
|
81
|
+
&-header {
|
|
82
|
+
padding: 8px 0;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
&-body {
|
|
86
|
+
overflow: hidden;
|
|
87
|
+
background-color: #fff;
|
|
88
|
+
border-top-left-radius: 8px;
|
|
89
|
+
border-top-right-radius: 8px;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
77
92
|
}
|
|
78
93
|
|
|
79
94
|
.@{prefixCls}-content {
|