linkmore-design 1.0.76 → 1.0.79
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/LmFilter/LmFilter.d.ts +1 -0
- package/dist/LmFilter/demos/custom.d.ts +2 -0
- package/dist/LmFilter/filterFns/index.d.ts +10 -1
- package/dist/LmTable/components/inputDataEdit.d.ts +8 -0
- package/dist/LmTable/components/sheelTableCell.d.ts +11 -0
- package/dist/LmTable/components/tableChartsModal.d.ts +22 -0
- package/dist/LmTable/demos/excel.d.ts +2 -0
- package/dist/index.umd.js +75126 -3372
- package/dist/index.umd.min.js +6 -6
- package/es/CardTable/table/TableContainer.js +1 -2
- package/es/CkFilter/README.md.old +137 -0
- package/es/LmFilter/LmFilter.js +13 -3
- package/es/LmFilter/baseFilter/fuzzySearch.js +23 -13
- package/es/LmFilter/clearFilter/index.js +1 -3
- package/es/LmFilter/complexFilter/valueDrawer.js +1 -1
- package/es/LmFilter/customFilter/index.js +19 -7
- package/es/LmFilter/filterFns/index.js +266 -92
- package/es/LmFilter/wrapper/Filter.js +1 -1
- package/es/LmFilter/wrapper/FilterRoot.js +24 -2
- package/es/LmTable/Table.js +492 -43
- package/es/LmTable/components/inputDataEdit.d.ts +8 -0
- package/es/LmTable/components/inputDataEdit.js +39 -0
- package/es/LmTable/components/sheelTableCell.d.ts +11 -0
- package/es/LmTable/components/sheelTableCell.js +151 -0
- package/es/LmTable/components/tableChartsModal.d.ts +22 -0
- package/es/LmTable/components/tableChartsModal.js +115 -0
- package/es/LmTable/style/index.css +53 -0
- package/es/Modal/index.js +2 -0
- package/lib/CardTable/table/TableContainer.js +1 -2
- package/lib/CkFilter/README.md.old +137 -0
- package/lib/LmFilter/LmFilter.js +13 -3
- package/lib/LmFilter/baseFilter/fuzzySearch.js +23 -13
- package/lib/LmFilter/clearFilter/index.js +1 -3
- package/lib/LmFilter/complexFilter/valueDrawer.js +1 -1
- package/lib/LmFilter/customFilter/index.js +19 -7
- package/lib/LmFilter/filterFns/index.js +266 -92
- package/lib/LmFilter/wrapper/Filter.js +1 -1
- package/lib/LmFilter/wrapper/FilterRoot.js +24 -2
- package/lib/LmTable/Table.js +492 -43
- package/lib/LmTable/components/inputDataEdit.d.ts +8 -0
- package/lib/LmTable/components/inputDataEdit.js +50 -0
- package/lib/LmTable/components/sheelTableCell.d.ts +11 -0
- package/lib/LmTable/components/sheelTableCell.js +167 -0
- package/lib/LmTable/components/tableChartsModal.d.ts +22 -0
- package/lib/LmTable/components/tableChartsModal.js +128 -0
- package/lib/LmTable/style/index.css +53 -0
- package/lib/Modal/index.js +2 -0
- package/package.json +5 -4
- package/typings/index.d.ts +0 -19
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import React, { useEffect, useRef } from 'react';
|
|
2
|
+
import { Input } from 'linkmore-design';
|
|
3
|
+
|
|
4
|
+
var InputDataEdit = function InputDataEdit(props) {
|
|
5
|
+
var value = props.value,
|
|
6
|
+
onChange = props.onChange,
|
|
7
|
+
onKeyDown = props.onKeyDown,
|
|
8
|
+
handleSave = props.handleSave;
|
|
9
|
+
var inputRef = useRef(null);
|
|
10
|
+
useEffect(function () {
|
|
11
|
+
setTimeout(function () {
|
|
12
|
+
var _a;
|
|
13
|
+
|
|
14
|
+
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
15
|
+
}, 150);
|
|
16
|
+
return function () {
|
|
17
|
+
console.log('unmounds');
|
|
18
|
+
handleSave === null || handleSave === void 0 ? void 0 : handleSave(inputRef.current);
|
|
19
|
+
};
|
|
20
|
+
}, []);
|
|
21
|
+
|
|
22
|
+
var handleChange = function handleChange(e) {
|
|
23
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(e.target.value);
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
return /*#__PURE__*/React.createElement(Input, {
|
|
27
|
+
ref: inputRef,
|
|
28
|
+
className: "data-editor",
|
|
29
|
+
value: value,
|
|
30
|
+
size: 'small',
|
|
31
|
+
bordered: false,
|
|
32
|
+
onChange: handleChange,
|
|
33
|
+
onKeyDown: onKeyDown,
|
|
34
|
+
onPressEnter: handleSave,
|
|
35
|
+
onBlur: handleSave
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export default InputDataEdit;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface IProps {
|
|
3
|
+
record: Record<string, any>;
|
|
4
|
+
rowKey: string;
|
|
5
|
+
col: any;
|
|
6
|
+
rowIndex: number;
|
|
7
|
+
colIndex: number;
|
|
8
|
+
[key: string]: any;
|
|
9
|
+
}
|
|
10
|
+
declare const SheelTabelCell: React.FC<IProps>;
|
|
11
|
+
export default SheelTabelCell;
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
3
|
+
|
|
4
|
+
var __rest = this && this.__rest || function (s, e) {
|
|
5
|
+
var t = {};
|
|
6
|
+
|
|
7
|
+
for (var p in s) {
|
|
8
|
+
if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
12
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
13
|
+
}
|
|
14
|
+
return t;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
import React, { useRef, useState } from 'react';
|
|
18
|
+
import cls from 'classnames';
|
|
19
|
+
import { useUpdateEffect } from 'ahooks';
|
|
20
|
+
import InputDataEdit from './inputDataEdit';
|
|
21
|
+
|
|
22
|
+
var SheelTabelCell = function SheelTabelCell(props) {
|
|
23
|
+
var record = props.record,
|
|
24
|
+
col = props.col,
|
|
25
|
+
rowKey = props.rowKey,
|
|
26
|
+
children = props.children,
|
|
27
|
+
rowIndex = props.rowIndex,
|
|
28
|
+
colIndex = props.colIndex,
|
|
29
|
+
onMouseDown = props.onMouseDown,
|
|
30
|
+
onMouseOver = props.onMouseOver,
|
|
31
|
+
isSelected = props.isSelected,
|
|
32
|
+
selectIng = props.selectIng,
|
|
33
|
+
onContextMenu = props.onContextMenu,
|
|
34
|
+
onDoubleClick = props.onDoubleClick,
|
|
35
|
+
dataSourceChange = props.dataSourceChange,
|
|
36
|
+
restProps = __rest(props, ["record", "col", "rowKey", "children", "rowIndex", "colIndex", "onMouseDown", "onMouseOver", "isSelected", "selectIng", "onContextMenu", "onDoubleClick", "dataSourceChange"]);
|
|
37
|
+
|
|
38
|
+
var onMouseEnter = restProps.onMouseEnter,
|
|
39
|
+
onMouseLeave = restProps.onMouseLeave,
|
|
40
|
+
clearProps = __rest(restProps, ["onMouseEnter", "onMouseLeave"]);
|
|
41
|
+
|
|
42
|
+
var _ref = (isSelected === null || isSelected === void 0 ? void 0 : isSelected(rowIndex, colIndex)) || {},
|
|
43
|
+
_ref$isSelected = _ref.isSelected,
|
|
44
|
+
sd = _ref$isSelected === void 0 ? false : _ref$isSelected,
|
|
45
|
+
_ref$isEnd = _ref.isEnd,
|
|
46
|
+
isEnd = _ref$isEnd === void 0 ? false : _ref$isEnd,
|
|
47
|
+
_ref$isRightEnd = _ref.isRightEnd,
|
|
48
|
+
isRightEnd = _ref$isRightEnd === void 0 ? false : _ref$isRightEnd,
|
|
49
|
+
_ref$isEditing = _ref.isEditing,
|
|
50
|
+
isEditing = _ref$isEditing === void 0 ? false : _ref$isEditing;
|
|
51
|
+
|
|
52
|
+
var _useState = useState((record === null || record === void 0 ? void 0 : record[col === null || col === void 0 ? void 0 : col.dataIndex]) || ''),
|
|
53
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
54
|
+
value = _useState2[0],
|
|
55
|
+
setValue = _useState2[1];
|
|
56
|
+
|
|
57
|
+
var valueRef = useRef((record === null || record === void 0 ? void 0 : record[col === null || col === void 0 ? void 0 : col.dataIndex]) || '');
|
|
58
|
+
useUpdateEffect(function () {
|
|
59
|
+
console.log(value, '----changeValue');
|
|
60
|
+
valueRef.current = value;
|
|
61
|
+
}, [value]);
|
|
62
|
+
useUpdateEffect(function () {
|
|
63
|
+
if (value !== (record === null || record === void 0 ? void 0 : record[col === null || col === void 0 ? void 0 : col.dataIndex])) {
|
|
64
|
+
setValue(record === null || record === void 0 ? void 0 : record[col === null || col === void 0 ? void 0 : col.dataIndex]);
|
|
65
|
+
}
|
|
66
|
+
}, [record]);
|
|
67
|
+
/** 鼠标点击 */
|
|
68
|
+
|
|
69
|
+
var handleMouseDown = function handleMouseDown(e) {
|
|
70
|
+
if (e.button === 2) {
|
|
71
|
+
console.log('点击了右键');
|
|
72
|
+
} else if (!(col === null || col === void 0 ? void 0 : col.disableEvents)) {
|
|
73
|
+
onMouseDown === null || onMouseDown === void 0 ? void 0 : onMouseDown(rowIndex, colIndex, e);
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
/** 鼠标右键 */
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
var handleContextMenu = function handleContextMenu(e) {
|
|
80
|
+
if (!col.disableEvents) {
|
|
81
|
+
onContextMenu(e, rowIndex, colIndex);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
/** 鼠标松开 */
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
var handleMouseOver = function handleMouseOver(e) {
|
|
88
|
+
if (!(col === null || col === void 0 ? void 0 : col.disableEvents)) {
|
|
89
|
+
onMouseOver === null || onMouseOver === void 0 ? void 0 : onMouseOver(rowIndex, colIndex);
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
/** 双击 */
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
var handleDoubleClick = function handleDoubleClick(e) {
|
|
96
|
+
if (!(col === null || col === void 0 ? void 0 : col.disableEvents)) {
|
|
97
|
+
onDoubleClick(rowIndex, colIndex, col);
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
var renderComponent = function renderComponent() {
|
|
102
|
+
var _ref2 = col || {},
|
|
103
|
+
component = _ref2.component,
|
|
104
|
+
readOnly = _ref2.readOnly;
|
|
105
|
+
|
|
106
|
+
if (isEditing && !readOnly) {
|
|
107
|
+
return component || null;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return null;
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
var saveRenderValue = function saveRenderValue() {
|
|
114
|
+
if (valueRef.current !== (record === null || record === void 0 ? void 0 : record[col === null || col === void 0 ? void 0 : col.dataIndex])) {
|
|
115
|
+
dataSourceChange === null || dataSourceChange === void 0 ? void 0 : dataSourceChange(rowIndex, colIndex, Object.assign(Object.assign({}, record), _defineProperty({}, col.dataIndex, valueRef.current)));
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
var renderEditor = function renderEditor() {
|
|
120
|
+
if (isEditing) {
|
|
121
|
+
var Editor = (col === null || col === void 0 ? void 0 : col.dataEditor) || InputDataEdit;
|
|
122
|
+
return /*#__PURE__*/React.createElement(Editor, {
|
|
123
|
+
cell: col,
|
|
124
|
+
row: rowIndex,
|
|
125
|
+
col: colIndex,
|
|
126
|
+
value: value,
|
|
127
|
+
onChange: setValue,
|
|
128
|
+
handleSave: saveRenderValue
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
return null;
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
var renderViewer = children;
|
|
136
|
+
var content = renderComponent() || renderEditor() || renderViewer;
|
|
137
|
+
return /*#__PURE__*/React.createElement("td", Object.assign({}, clearProps, {
|
|
138
|
+
style: {
|
|
139
|
+
userSelect: 'none'
|
|
140
|
+
},
|
|
141
|
+
className: cls(sd && selectIng && 'selected', isEnd && 'end', isRightEnd && 'right_end', isEditing && 'editing'),
|
|
142
|
+
onMouseDown: handleMouseDown,
|
|
143
|
+
onMouseOver: handleMouseOver,
|
|
144
|
+
onContextMenu: handleContextMenu,
|
|
145
|
+
onDoubleClick: handleDoubleClick,
|
|
146
|
+
// onKeyUp={onKeyUp}
|
|
147
|
+
key: "".concat(rowIndex, "_").concat(colIndex)
|
|
148
|
+
}), content);
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
export default SheelTabelCell;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ILMModalProps } from 'linkmore-design';
|
|
2
|
+
import type { TableColumnProps } from 'antd';
|
|
3
|
+
interface IProps extends ILMModalProps {
|
|
4
|
+
data?: Record<string, unknown>[];
|
|
5
|
+
type: 'line' | 'pie' | 'column' | null;
|
|
6
|
+
columns?: (TableColumnProps<any> & {
|
|
7
|
+
etype: string;
|
|
8
|
+
})[];
|
|
9
|
+
selectInfo?: {
|
|
10
|
+
start: {
|
|
11
|
+
i: number;
|
|
12
|
+
j: number;
|
|
13
|
+
};
|
|
14
|
+
end: {
|
|
15
|
+
i: number;
|
|
16
|
+
j: number;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/** i 是行 j 是列 */
|
|
21
|
+
declare const TableChartsModal: (props: IProps) => JSX.Element;
|
|
22
|
+
export default TableChartsModal;
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import React, { useMemo } from 'react';
|
|
2
|
+
import { pick } from 'lodash';
|
|
3
|
+
import { Modal } from 'linkmore-design';
|
|
4
|
+
import { Column, Line, Pie } from '@ant-design/plots';
|
|
5
|
+
/** i 是行 j 是列 */
|
|
6
|
+
|
|
7
|
+
var TableChartsModal = function TableChartsModal(props) {
|
|
8
|
+
var type = props.type,
|
|
9
|
+
onCancel = props.onCancel,
|
|
10
|
+
data = props.data,
|
|
11
|
+
columns = props.columns,
|
|
12
|
+
selectInfo = props.selectInfo;
|
|
13
|
+
var resultData = useMemo(function () {
|
|
14
|
+
var start = selectInfo.start,
|
|
15
|
+
end = selectInfo.end;
|
|
16
|
+
var rCol = columns === null || columns === void 0 ? void 0 : columns.filter(function (item, index) {
|
|
17
|
+
var maxJ = Math.max(start.j, end.j);
|
|
18
|
+
var minJ = Math.min(start.j, end.j);
|
|
19
|
+
|
|
20
|
+
if (index >= minJ && index <= maxJ) {
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return false;
|
|
25
|
+
}).map(function (item) {
|
|
26
|
+
return item.dataIndex;
|
|
27
|
+
});
|
|
28
|
+
var maxi = Math.max(start.i, end.i);
|
|
29
|
+
var mini = Math.min(start.i, end.i);
|
|
30
|
+
var rDataSource = data === null || data === void 0 ? void 0 : data.filter(function (item, index) {
|
|
31
|
+
if (index >= mini && index <= maxi) {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return false;
|
|
36
|
+
}).map(function (item) {
|
|
37
|
+
return pick(item, rCol);
|
|
38
|
+
});
|
|
39
|
+
return {
|
|
40
|
+
rDataSource: rDataSource,
|
|
41
|
+
rCol: rCol
|
|
42
|
+
};
|
|
43
|
+
}, [data, columns, selectInfo]);
|
|
44
|
+
var getTypeCol = useMemo(function () {
|
|
45
|
+
return columns.filter(function (item) {
|
|
46
|
+
return item.etype === 'number';
|
|
47
|
+
}).map(function (item) {
|
|
48
|
+
return item.dataIndex;
|
|
49
|
+
});
|
|
50
|
+
}, [columns]);
|
|
51
|
+
var Field = useMemo(function () {
|
|
52
|
+
var rCol = resultData.rCol;
|
|
53
|
+
var xField = rCol.find(function (item) {
|
|
54
|
+
return !getTypeCol.includes(item);
|
|
55
|
+
});
|
|
56
|
+
var yField = getTypeCol === null || getTypeCol === void 0 ? void 0 : getTypeCol[0];
|
|
57
|
+
return {
|
|
58
|
+
xField: xField,
|
|
59
|
+
yField: yField
|
|
60
|
+
};
|
|
61
|
+
}, [resultData, getTypeCol]);
|
|
62
|
+
var config = useMemo(function () {
|
|
63
|
+
if (type === 'pie') {
|
|
64
|
+
return {
|
|
65
|
+
appendPadding: 10,
|
|
66
|
+
data: resultData.rDataSource,
|
|
67
|
+
angleField: Field.yField,
|
|
68
|
+
colorField: Field.xField,
|
|
69
|
+
radius: 0.9,
|
|
70
|
+
label: {
|
|
71
|
+
type: 'inner',
|
|
72
|
+
offset: '-30%',
|
|
73
|
+
content: function content(_ref) {
|
|
74
|
+
var percent = _ref.percent;
|
|
75
|
+
return "".concat((percent * 100).toFixed(0), "%");
|
|
76
|
+
},
|
|
77
|
+
style: {
|
|
78
|
+
fontSize: 14,
|
|
79
|
+
textAlign: 'center'
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
interactions: [{
|
|
83
|
+
type: 'element-active'
|
|
84
|
+
}]
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return {
|
|
89
|
+
data: resultData.rDataSource,
|
|
90
|
+
xField: Field.xField,
|
|
91
|
+
yField: Field.yField,
|
|
92
|
+
label: {
|
|
93
|
+
position: 'middle',
|
|
94
|
+
style: {
|
|
95
|
+
fill: '#FFFFFF',
|
|
96
|
+
opacity: 0.6
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
xAxis: {
|
|
100
|
+
label: {
|
|
101
|
+
autoHide: true,
|
|
102
|
+
autoRotate: false
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
}, [Field, resultData, type]);
|
|
107
|
+
return /*#__PURE__*/React.createElement(Modal, {
|
|
108
|
+
visible: !!type,
|
|
109
|
+
title: "\u667A\u80FD\u62A5\u8868",
|
|
110
|
+
onOk: onCancel,
|
|
111
|
+
onCancel: onCancel
|
|
112
|
+
}, type === 'column' && /*#__PURE__*/React.createElement(Column, Object.assign({}, config)), type === 'line' && /*#__PURE__*/React.createElement(Line, Object.assign({}, config)), type === 'pie' && /*#__PURE__*/React.createElement(Pie, Object.assign({}, config)));
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
export default TableChartsModal;
|
|
@@ -836,6 +836,42 @@ p {
|
|
|
836
836
|
#lm_protable_warp .lm_protable .ant-table {
|
|
837
837
|
font-size: 12px;
|
|
838
838
|
}
|
|
839
|
+
#lm_protable_warp .lm_protable .ant-table td.selected,
|
|
840
|
+
#lm_protable_warp .lm_protable .ant-table td.editing {
|
|
841
|
+
border: 1px solid var(--primary-color);
|
|
842
|
+
border-bottom: 0px;
|
|
843
|
+
transition: none;
|
|
844
|
+
box-shadow: inset 0 -100px 0 rgb(33 133 13.86666667%);
|
|
845
|
+
border-right: 0;
|
|
846
|
+
}
|
|
847
|
+
#lm_protable_warp .lm_protable .ant-table td.selected.end,
|
|
848
|
+
#lm_protable_warp .lm_protable .ant-table td.editing.end {
|
|
849
|
+
border-bottom: 1px solid var(--primary-color);
|
|
850
|
+
}
|
|
851
|
+
#lm_protable_warp .lm_protable .ant-table td.selected.right_end,
|
|
852
|
+
#lm_protable_warp .lm_protable .ant-table td.editing.right_end {
|
|
853
|
+
border-right: 1px solid var(--primary-color);
|
|
854
|
+
}
|
|
855
|
+
#lm_protable_warp .lm_protable .ant-table td.selected .data-editor,
|
|
856
|
+
#lm_protable_warp .lm_protable .ant-table td.editing .data-editor {
|
|
857
|
+
border: 0;
|
|
858
|
+
background: none;
|
|
859
|
+
}
|
|
860
|
+
#lm_protable_warp .lm_protable .ant-table td.selected input,
|
|
861
|
+
#lm_protable_warp .lm_protable .ant-table td.editing input {
|
|
862
|
+
background: none;
|
|
863
|
+
outline: none !important;
|
|
864
|
+
border: 0;
|
|
865
|
+
}
|
|
866
|
+
#lm_protable_warp .lm_protable .ant-table td.selected input:hover,
|
|
867
|
+
#lm_protable_warp .lm_protable .ant-table td.editing input:hover {
|
|
868
|
+
background: none;
|
|
869
|
+
border: 0;
|
|
870
|
+
}
|
|
871
|
+
#lm_protable_warp .lm_protable .ant-table tr:last-child td.selected.end,
|
|
872
|
+
#lm_protable_warp .lm_protable .ant-table tr:last-child td.editing.end {
|
|
873
|
+
border-bottom: 2px solid var(--primary-color);
|
|
874
|
+
}
|
|
839
875
|
#lm_protable_warp .lm_protable .ant-card-body,
|
|
840
876
|
#lm_protable_warp .lm_protable .ant-pro-card-body {
|
|
841
877
|
padding: 0;
|
|
@@ -1476,3 +1512,20 @@ p {
|
|
|
1476
1512
|
height: 100%;
|
|
1477
1513
|
cursor: col-resize;
|
|
1478
1514
|
}
|
|
1515
|
+
.WeChatContactsAvatarTools {
|
|
1516
|
+
background-color: #fff;
|
|
1517
|
+
border: 1px solid #ddd;
|
|
1518
|
+
}
|
|
1519
|
+
.WeChatContactsAvatarTools .rightClickItems {
|
|
1520
|
+
height: 30px;
|
|
1521
|
+
border-bottom: 1px solid #ddd;
|
|
1522
|
+
padding: 0 8px;
|
|
1523
|
+
display: flex;
|
|
1524
|
+
align-items: center;
|
|
1525
|
+
justify-content: flex-start;
|
|
1526
|
+
font-size: 12px;
|
|
1527
|
+
cursor: pointer;
|
|
1528
|
+
}
|
|
1529
|
+
.WeChatContactsAvatarTools .rightClickItems:last-child {
|
|
1530
|
+
border-bottom: 0px;
|
|
1531
|
+
}
|
package/es/Modal/index.js
CHANGED
|
@@ -36,10 +36,12 @@ var CLMModal = function CLMModal(props) {
|
|
|
36
36
|
width: size === 'default' ? 552 : 416,
|
|
37
37
|
footer: [/*#__PURE__*/React.createElement(Button, {
|
|
38
38
|
onClick: onCancel,
|
|
39
|
+
key: 'canncel_button',
|
|
39
40
|
size: 'middle'
|
|
40
41
|
}, cancelText), /*#__PURE__*/React.createElement(Button, {
|
|
41
42
|
type: "primary",
|
|
42
43
|
onClick: onOk,
|
|
44
|
+
key: 'ok_button',
|
|
43
45
|
size: 'middle'
|
|
44
46
|
}, okText)]
|
|
45
47
|
}, other, {
|
|
@@ -67,12 +67,11 @@ var LmCardTableContainer = /*#__PURE__*/_react.default.memo(function (_ref) {
|
|
|
67
67
|
type: 'changeRows',
|
|
68
68
|
rows: rows
|
|
69
69
|
});
|
|
70
|
-
}, [getRows]); // 获取表格高度
|
|
70
|
+
}, [getRows, cellConfig.width]); // 获取表格高度
|
|
71
71
|
|
|
72
72
|
useIsomorphicLayoutEffect(function () {
|
|
73
73
|
// 频繁变动可考虑增加防抖
|
|
74
74
|
var resizeObserver = new ResizeObserver(function (entries) {
|
|
75
|
-
// console.log("我的resize变化啦");
|
|
76
75
|
var borderbox = entries[0].borderBoxSize[0];
|
|
77
76
|
getResize(borderbox);
|
|
78
77
|
});
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
---
|
|
2
|
+
nav:
|
|
3
|
+
title: 组件
|
|
4
|
+
path: /components
|
|
5
|
+
group:
|
|
6
|
+
title: 已废弃
|
|
7
|
+
path: /remove
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## CkFilter 筛选组件(废弃)
|
|
12
|
+
|
|
13
|
+
> 未集成漏斗模型筛选,不再维护,使用请转移至[LmFilter](/components/basic/lm-filter)
|
|
14
|
+
|
|
15
|
+
### 基本使用
|
|
16
|
+
|
|
17
|
+
<code src="./demos/basic.jsx" background="#fff" />
|
|
18
|
+
|
|
19
|
+
### `Api`
|
|
20
|
+
|
|
21
|
+
| 参数 | 说明 | 类型 | 默认 |
|
|
22
|
+
| ------------- | --------------------- | ------- | ---------- |
|
|
23
|
+
| data | 筛选字段,部分数据, 用于基础筛选 | Array | [] |
|
|
24
|
+
| fillData | 同`data`全量数据, 用于高级筛选 | Array | [] |
|
|
25
|
+
| trigger | 触发查询方式 'init': 初始化后触发 | String | - |
|
|
26
|
+
| onChange | 筛选事件,接收筛选后的数据 | Fn | - |
|
|
27
|
+
| search | 是否显示模糊搜索框,默认显示(二级筛选) | Boolean | true |
|
|
28
|
+
| searchKey | 搜索返回的Key | String | 'search' |
|
|
29
|
+
| filter | 是否显示基础过滤, 默认显示(二级筛选) | Boolean | true |
|
|
30
|
+
| complex | 是否显示高级筛选(独立筛选) | Boolean | false |
|
|
31
|
+
| filterValues | 初始化筛选的条件 | Object | {} |
|
|
32
|
+
| levelGroup | 级别组/按钮组(一级筛选) | Boolean | false |
|
|
33
|
+
| levelGroupKey | 按钮组返回的Key | Strgin | 'levGroup' |
|
|
34
|
+
| custom | 自定义筛选(一级筛选) | Array | - |
|
|
35
|
+
|
|
36
|
+
#### `data/fullData`
|
|
37
|
+
|
|
38
|
+
| 参数 | 说明 | 类型 | 默认 |
|
|
39
|
+
| ----------- | --------------------------- | -------------------------------- | ----- |
|
|
40
|
+
| type | 类型 | input/select/checkbox/cascader…… | - |
|
|
41
|
+
| dateType | 日期类型,仅当 type='date'时有效 | 'date'/'rangePicker' | date |
|
|
42
|
+
| title | 文字显示 | '' | - |
|
|
43
|
+
| field | 字段关键词 | '' | - |
|
|
44
|
+
| mode | 查询关系(适用于高级筛选) | 'and'/'or' | 'and' |
|
|
45
|
+
| *api | (暂无)接口请求 | '' | - |
|
|
46
|
+
| *params | (暂无)入参,配合接口请求 | {} | - |
|
|
47
|
+
| data | 默认数据字段(非接口请求) | [] | - |
|
|
48
|
+
| value | 默认选中数据 | '' | - |
|
|
49
|
+
| more | 是否动态加载 | Boolean | false |
|
|
50
|
+
| fixed | 是否固定于页面(收为更多筛选内) | Boolean | false |
|
|
51
|
+
| expand | 额外拓展 | {} | {} |
|
|
52
|
+
| props | 透传至原生组件 (日期的类型、级联单复选...) | {} | {} |
|
|
53
|
+
| *content | (暂无)自定义下拉结构,e(value)事件接收一个值 | (e) => Dom | - |
|
|
54
|
+
| *renderItem | (暂无)自定义行结构(接收 label) | Dom | - |
|
|
55
|
+
|
|
56
|
+
`type`
|
|
57
|
+
|
|
58
|
+
| 参数 | 说明 | 类型 | 默认 |
|
|
59
|
+
| -------- | ---- | ------------ | --- |
|
|
60
|
+
| select | 单选 | String | '' |
|
|
61
|
+
| checkbox | 复选 | Array | [] |
|
|
62
|
+
| input | 输入 | String | '' |
|
|
63
|
+
| cascader | 级联选择 | Array | [] |
|
|
64
|
+
| data | 日期选择 | String/Array | '' |
|
|
65
|
+
| nested | 嵌套筛选 | Array | [] |
|
|
66
|
+
|
|
67
|
+
`dateType`
|
|
68
|
+
|
|
69
|
+
| 参数 | 说明 | 类型 | 默认 |
|
|
70
|
+
| ----------- | ---- | --- | --- |
|
|
71
|
+
| date | 年月日 | '' | - |
|
|
72
|
+
| rangePicker | 日期区间 | [] | - |
|
|
73
|
+
| | | | |
|
|
74
|
+
|
|
75
|
+
<!--
|
|
76
|
+
> `filterValues` `custom`
|
|
77
|
+
|
|
78
|
+
```jsx
|
|
79
|
+
基础筛选是键值对
|
|
80
|
+
const filterValues = {
|
|
81
|
+
category: 'cate1',
|
|
82
|
+
type: 'type1',
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
高级筛选及自定义筛选是filterValues与基础筛选不同
|
|
86
|
+
filterValues: {[key]: { value: '', mode: 'or' } }
|
|
87
|
+
const customFilter = [
|
|
88
|
+
{ label: '全部', value: 'all', filterValues: {} },
|
|
89
|
+
{
|
|
90
|
+
label: '我关注的',
|
|
91
|
+
value: 'v1',
|
|
92
|
+
filterValues: { state: { value: ['22k', '32k'], mode: 'and' }, t1: {} },
|
|
93
|
+
default: true, // 默认显示
|
|
94
|
+
},
|
|
95
|
+
{ label: '自定义1', value: 'diy1', filterValues: { state: { value: '', mode: 'or' } } },
|
|
96
|
+
{ label: '自定义2', value: 'diy2', filterValues: { t1: { value: '', mode: 'or' } } },
|
|
97
|
+
{ label: '自定义3', value: 'diy3', filterValues: {} },
|
|
98
|
+
]
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
<Filter
|
|
102
|
+
data={data}
|
|
103
|
+
filterValues={filterValues}
|
|
104
|
+
custom={customFilter}
|
|
105
|
+
levelGroup={group}
|
|
106
|
+
fullData={data}
|
|
107
|
+
complex
|
|
108
|
+
onChange={getChange}
|
|
109
|
+
placeholder="请输入编号"
|
|
110
|
+
searchKey="code"
|
|
111
|
+
/>
|
|
112
|
+
|
|
113
|
+
``` -->
|
|
114
|
+
|
|
115
|
+
| 参数 | 说明 | 类型 | 默认 |
|
|
116
|
+
| ------------ | ------ | ------------------------------------------------ | --- |
|
|
117
|
+
| id | key 字段 | '' | - |
|
|
118
|
+
| value | 值 | String | |
|
|
119
|
+
| label | 文字显示 | string | |
|
|
120
|
+
| default | 是否默认 | Boolean | - |
|
|
121
|
+
| filterValues | 过滤的数据 | { state: { value: ['22k','32k'], mode: 'and' } } | |
|
|
122
|
+
|
|
123
|
+
`custom.filterValue `
|
|
124
|
+
|
|
125
|
+
> @Object
|
|
126
|
+
|
|
127
|
+
| 参数 | 说明 | 类型 | 默认 |
|
|
128
|
+
| ----- | ----- | ------------ | --- |
|
|
129
|
+
| value | 选中的数据 | Array/String | - |
|
|
130
|
+
| mode | 查询关系 | String | - |
|
|
131
|
+
| | | | |
|
|
132
|
+
|
|
133
|
+
**Ref**
|
|
134
|
+
|
|
135
|
+
| 方法名 | 说明 | 类型 | 默认 |
|
|
136
|
+
| ---------- | --------------------------------------------------------- | --- | --- |
|
|
137
|
+
| setOptions | 初始化, 用于动态显示,会将`filterValue`参数带入, 设置`trigger="init"` 会触发查询 | fn | - |
|
package/lib/LmFilter/LmFilter.js
CHANGED
|
@@ -21,10 +21,12 @@ var _FilterRoot = _interopRequireDefault(require("./wrapper/FilterRoot"));
|
|
|
21
21
|
|
|
22
22
|
var _localization = require("./localization");
|
|
23
23
|
|
|
24
|
-
var _excluded = ["localization"];
|
|
24
|
+
var _excluded = ["searchConfig", "localization"];
|
|
25
25
|
|
|
26
26
|
var LmFilter = function LmFilter(_ref, ref) {
|
|
27
|
-
var _ref$
|
|
27
|
+
var _ref$searchConfig = _ref.searchConfig,
|
|
28
|
+
searchConfig = _ref$searchConfig === void 0 ? {} : _ref$searchConfig,
|
|
29
|
+
_ref$localization = _ref.localization,
|
|
28
30
|
localization = _ref$localization === void 0 ? {} : _ref$localization,
|
|
29
31
|
resetProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
|
30
32
|
var defaultRef = (0, _react.useRef)(null);
|
|
@@ -45,9 +47,17 @@ var LmFilter = function LmFilter(_ref, ref) {
|
|
|
45
47
|
// 尺寸
|
|
46
48
|
searchKey: 'search',
|
|
47
49
|
// 搜索的key值
|
|
50
|
+
searchConfig: (0, _objectSpread2.default)({
|
|
51
|
+
relation: 'or',
|
|
52
|
+
fieldType: 'string',
|
|
53
|
+
operator: 'contains'
|
|
54
|
+
}, searchConfig || {}),
|
|
55
|
+
// 模糊搜索配置
|
|
48
56
|
placeholder: '请输入',
|
|
49
57
|
// 搜索占位符
|
|
50
|
-
|
|
58
|
+
customRender: null,
|
|
59
|
+
// 自定义一级筛选Dom
|
|
60
|
+
localization: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, _localization.DefaultLocalization), localization || {})
|
|
51
61
|
};
|
|
52
62
|
return /*#__PURE__*/_react.default.createElement(_FilterRoot.default, (0, _extends2.default)({
|
|
53
63
|
ref: ref || defaultRef
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
|
|
5
3
|
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
6
4
|
|
|
5
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
6
|
+
|
|
7
7
|
Object.defineProperty(exports, "__esModule", {
|
|
8
8
|
value: true
|
|
9
9
|
});
|
|
10
10
|
exports.default = void 0;
|
|
11
11
|
|
|
12
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
13
|
+
|
|
12
14
|
var _react = _interopRequireWildcard(require("react"));
|
|
13
15
|
|
|
14
16
|
var _InputSearchClose = _interopRequireDefault(require("../components/InputSearchClose"));
|
|
@@ -18,30 +20,38 @@ var FuzzySearch = function FuzzySearch(_ref) {
|
|
|
18
20
|
var inputRef = (0, _react.useRef)(null);
|
|
19
21
|
var state = instance.state,
|
|
20
22
|
setFilterValue = instance.setFilterValue,
|
|
23
|
+
setSearchFilter = instance.setSearchFilter,
|
|
21
24
|
size = instance.size,
|
|
22
25
|
placeholder = instance.placeholder,
|
|
23
|
-
searchKey = instance.searchKey
|
|
26
|
+
searchKey = instance.searchKey,
|
|
27
|
+
searchConfig = instance.searchConfig; // 默认值
|
|
24
28
|
|
|
25
29
|
var defaultValue = (0, _react.useMemo)(function () {
|
|
26
|
-
var _state$basicFilter;
|
|
30
|
+
var _state$basicFilter, _state$searchFilter;
|
|
27
31
|
|
|
28
|
-
return ((_state$basicFilter = state.basicFilter) === null || _state$basicFilter === void 0 ? void 0 : _state$basicFilter[searchKey]) || '';
|
|
29
|
-
}, [state.basicFilter]);
|
|
32
|
+
return ((_state$basicFilter = state.basicFilter) === null || _state$basicFilter === void 0 ? void 0 : _state$basicFilter[searchKey]) || ((_state$searchFilter = state.searchFilter) === null || _state$searchFilter === void 0 ? void 0 : _state$searchFilter[searchKey[0]]) || '';
|
|
33
|
+
}, [state.basicFilter, state.searchFilter, searchKey]);
|
|
30
34
|
|
|
31
35
|
var onSearch = function onSearch(val) {
|
|
32
|
-
var
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
var isFuzzy = Array.isArray(searchKey);
|
|
37
|
+
var item = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, searchConfig), {}, {
|
|
38
|
+
field: searchKey
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
if (isFuzzy) {
|
|
42
|
+
setSearchFilter(val);
|
|
43
|
+
} else {
|
|
44
|
+
setFilterValue(val, item);
|
|
45
|
+
}
|
|
38
46
|
};
|
|
39
47
|
|
|
40
48
|
(0, _react.useEffect)(function () {
|
|
41
49
|
if (!defaultValue) {
|
|
42
50
|
inputRef.current.setValue('');
|
|
51
|
+
} else {
|
|
52
|
+
inputRef.current.setValue(defaultValue);
|
|
43
53
|
}
|
|
44
|
-
}, [state.basicFilter]);
|
|
54
|
+
}, [state.basicFilter, state.searchFilter]);
|
|
45
55
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
46
56
|
className: "lm_filter_search"
|
|
47
57
|
}, /*#__PURE__*/_react.default.createElement(_InputSearchClose.default, {
|
|
@@ -13,9 +13,7 @@ var _linkmoreDesign = require("linkmore-design");
|
|
|
13
13
|
|
|
14
14
|
var LmFilterClear = /*#__PURE__*/_react.default.memo(function (_ref) {
|
|
15
15
|
var instance = _ref.instance;
|
|
16
|
-
var
|
|
17
|
-
dispatch = instance.dispatch,
|
|
18
|
-
onClearChange = instance.onClearChange;
|
|
16
|
+
var onClearChange = instance.onClearChange;
|
|
19
17
|
|
|
20
18
|
var handleClear = function handleClear() {
|
|
21
19
|
onClearChange();
|