linkmore-design 1.0.75 → 1.0.78

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.
Files changed (49) hide show
  1. package/dist/LmFilter/LmFilter.d.ts +1 -0
  2. package/dist/LmFilter/demos/custom.d.ts +2 -0
  3. package/dist/LmFilter/filterFns/index.d.ts +10 -1
  4. package/dist/LmTable/components/inputDataEdit.d.ts +8 -0
  5. package/dist/LmTable/components/sheelTableCell.d.ts +11 -0
  6. package/dist/LmTable/components/tableChartsModal.d.ts +22 -0
  7. package/dist/LmTable/demos/excel.d.ts +2 -0
  8. package/dist/index.umd.js +75100 -3362
  9. package/dist/index.umd.min.js +6 -6
  10. package/es/CardTable/table/TableContainer.js +1 -2
  11. package/es/CkFilter/README.md.old +137 -0
  12. package/es/LmFilter/LmFilter.js +13 -3
  13. package/es/LmFilter/baseFilter/fuzzySearch.js +23 -13
  14. package/es/LmFilter/clearFilter/index.js +1 -3
  15. package/es/LmFilter/complexFilter/valueDrawer.js +1 -1
  16. package/es/LmFilter/customFilter/index.js +19 -7
  17. package/es/LmFilter/filterFns/index.js +266 -92
  18. package/es/LmFilter/wrapper/Filter.js +1 -1
  19. package/es/LmFilter/wrapper/FilterRoot.js +24 -2
  20. package/es/LmTable/Table.js +487 -43
  21. package/es/LmTable/components/inputDataEdit.d.ts +8 -0
  22. package/es/LmTable/components/inputDataEdit.js +35 -0
  23. package/es/LmTable/components/sheelTableCell.d.ts +11 -0
  24. package/es/LmTable/components/sheelTableCell.js +140 -0
  25. package/es/LmTable/components/tableChartsModal.d.ts +22 -0
  26. package/es/LmTable/components/tableChartsModal.js +114 -0
  27. package/es/LmTable/style/index.css +53 -0
  28. package/es/LmUpload/fns/index.js +8 -7
  29. package/lib/CardTable/table/TableContainer.js +1 -2
  30. package/lib/CkFilter/README.md.old +137 -0
  31. package/lib/LmFilter/LmFilter.js +13 -3
  32. package/lib/LmFilter/baseFilter/fuzzySearch.js +23 -13
  33. package/lib/LmFilter/clearFilter/index.js +1 -3
  34. package/lib/LmFilter/complexFilter/valueDrawer.js +1 -1
  35. package/lib/LmFilter/customFilter/index.js +19 -7
  36. package/lib/LmFilter/filterFns/index.js +266 -92
  37. package/lib/LmFilter/wrapper/Filter.js +1 -1
  38. package/lib/LmFilter/wrapper/FilterRoot.js +24 -2
  39. package/lib/LmTable/Table.js +487 -43
  40. package/lib/LmTable/components/inputDataEdit.d.ts +8 -0
  41. package/lib/LmTable/components/inputDataEdit.js +46 -0
  42. package/lib/LmTable/components/sheelTableCell.d.ts +11 -0
  43. package/lib/LmTable/components/sheelTableCell.js +155 -0
  44. package/lib/LmTable/components/tableChartsModal.d.ts +22 -0
  45. package/lib/LmTable/components/tableChartsModal.js +127 -0
  46. package/lib/LmTable/style/index.css +53 -0
  47. package/lib/LmUpload/fns/index.js +8 -7
  48. package/package.json +5 -4
  49. package/typings/index.d.ts +0 -19
@@ -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,140 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+
3
+ var __rest = this && this.__rest || function (s, e) {
4
+ var t = {};
5
+
6
+ for (var p in s) {
7
+ if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
8
+ }
9
+
10
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
11
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
12
+ }
13
+ return t;
14
+ };
15
+
16
+ import React, { useState } from 'react';
17
+ import cls from 'classnames';
18
+ import { useUpdateEffect } from 'ahooks';
19
+ import InputDataEdit from './inputDataEdit';
20
+
21
+ var SheelTabelCell = function SheelTabelCell(props) {
22
+ var record = props.record,
23
+ col = props.col,
24
+ rowKey = props.rowKey,
25
+ children = props.children,
26
+ rowIndex = props.rowIndex,
27
+ colIndex = props.colIndex,
28
+ onMouseDown = props.onMouseDown,
29
+ onMouseOver = props.onMouseOver,
30
+ isSelected = props.isSelected,
31
+ selectIng = props.selectIng,
32
+ onContextMenu = props.onContextMenu,
33
+ onDoubleClick = props.onDoubleClick,
34
+ restProps = __rest(props, ["record", "col", "rowKey", "children", "rowIndex", "colIndex", "onMouseDown", "onMouseOver", "isSelected", "selectIng", "onContextMenu", "onDoubleClick"]);
35
+
36
+ var onMouseEnter = restProps.onMouseEnter,
37
+ onMouseLeave = restProps.onMouseLeave,
38
+ clearProps = __rest(restProps, ["onMouseEnter", "onMouseLeave"]);
39
+
40
+ var _ref = (isSelected === null || isSelected === void 0 ? void 0 : isSelected(rowIndex, colIndex)) || {},
41
+ _ref$isSelected = _ref.isSelected,
42
+ sd = _ref$isSelected === void 0 ? false : _ref$isSelected,
43
+ _ref$isEnd = _ref.isEnd,
44
+ isEnd = _ref$isEnd === void 0 ? false : _ref$isEnd,
45
+ _ref$isRightEnd = _ref.isRightEnd,
46
+ isRightEnd = _ref$isRightEnd === void 0 ? false : _ref$isRightEnd,
47
+ _ref$isEditing = _ref.isEditing,
48
+ isEditing = _ref$isEditing === void 0 ? false : _ref$isEditing;
49
+
50
+ var _useState = useState((record === null || record === void 0 ? void 0 : record[col === null || col === void 0 ? void 0 : col.dataIndex]) || ''),
51
+ _useState2 = _slicedToArray(_useState, 2),
52
+ value = _useState2[0],
53
+ setValue = _useState2[1];
54
+
55
+ useUpdateEffect(function () {
56
+ console.log(value, '----changeValue');
57
+ }, [value]);
58
+ /** 鼠标点击 */
59
+
60
+ var handleMouseDown = function handleMouseDown(e) {
61
+ if (e.button === 2) {
62
+ console.log('点击了右键');
63
+ } else if (!(col === null || col === void 0 ? void 0 : col.disableEvents)) {
64
+ onMouseDown === null || onMouseDown === void 0 ? void 0 : onMouseDown(rowIndex, colIndex, e);
65
+ }
66
+ };
67
+ /** 鼠标右键 */
68
+
69
+
70
+ var handleContextMenu = function handleContextMenu(e) {
71
+ if (!col.disableEvents) {
72
+ onContextMenu(e, rowIndex, colIndex);
73
+ }
74
+ };
75
+ /** 鼠标松开 */
76
+
77
+
78
+ var handleMouseOver = function handleMouseOver(e) {
79
+ if (!(col === null || col === void 0 ? void 0 : col.disableEvents)) {
80
+ onMouseOver === null || onMouseOver === void 0 ? void 0 : onMouseOver(rowIndex, colIndex);
81
+ }
82
+ };
83
+ /** 双击 */
84
+
85
+
86
+ var handleDoubleClick = function handleDoubleClick(e) {
87
+ if (!(col === null || col === void 0 ? void 0 : col.disableEvents)) {
88
+ onDoubleClick(rowIndex, colIndex, col);
89
+ }
90
+ };
91
+
92
+ var renderComponent = function renderComponent() {
93
+ var _ref2 = col || {},
94
+ component = _ref2.component,
95
+ readOnly = _ref2.readOnly;
96
+
97
+ if (isEditing && !readOnly) {
98
+ return component || null;
99
+ }
100
+
101
+ return null;
102
+ };
103
+
104
+ var saveRenderValue = function saveRenderValue() {
105
+ console.log(value, rowIndex, colIndex, '222');
106
+ };
107
+
108
+ var renderEditor = function renderEditor() {
109
+ if (isEditing) {
110
+ var Editor = (col === null || col === void 0 ? void 0 : col.dataEditor) || InputDataEdit;
111
+ return /*#__PURE__*/React.createElement(Editor, {
112
+ cell: col,
113
+ row: rowIndex,
114
+ col: colIndex,
115
+ value: value,
116
+ onChange: setValue,
117
+ handleSave: saveRenderValue
118
+ });
119
+ }
120
+
121
+ return null;
122
+ };
123
+
124
+ var renderViewer = children;
125
+ var content = renderComponent() || renderEditor() || renderViewer;
126
+ return /*#__PURE__*/React.createElement("td", Object.assign({}, clearProps, {
127
+ style: {
128
+ userSelect: 'none'
129
+ },
130
+ className: cls(sd && selectIng && 'selected', isEnd && 'end', isRightEnd && 'right_end', isEditing && 'editing'),
131
+ onMouseDown: handleMouseDown,
132
+ onMouseOver: handleMouseOver,
133
+ onContextMenu: handleContextMenu,
134
+ onDoubleClick: handleDoubleClick,
135
+ // onKeyUp={onKeyUp}
136
+ key: "".concat(rowIndex, "_").concat(colIndex)
137
+ }), content);
138
+ };
139
+
140
+ 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,114 @@
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
+ onCancel: onCancel
111
+ }, 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)));
112
+ };
113
+
114
+ 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
+ }
@@ -61,10 +61,10 @@ var useCoreOptions = function useCoreOptions(_ref) {
61
61
 
62
62
  var getIsMaxCount = useCallback(function () {
63
63
  return typeof props.maxCount === 'number' && !(getFileList().length < props.maxCount);
64
- }, [getFileList, props.maxCount]); // 上传完成
64
+ }, [getFileList, props.maxCount]); // 上传完成: File, fileParams
65
65
 
66
- var uploadDone = useCallback(function (file) {
67
- var fileList = [file].concat(_toConsumableArray(getFileList()));
66
+ var uploadDone = useCallback(function (file, params, ossCallBack) {
67
+ var fileList = [params].concat(_toConsumableArray(getFileList()));
68
68
  dispatch({
69
69
  type: 'changeFileList',
70
70
  fileList: fileList
@@ -78,6 +78,7 @@ var useCoreOptions = function useCoreOptions(_ref) {
78
78
  file: file,
79
79
  fileList: fileList
80
80
  });
81
+ ossCallBack === null || ossCallBack === void 0 ? void 0 : ossCallBack(params);
81
82
  }, [getFileList]); // 上传进度事件
82
83
 
83
84
  var uploadProgress = useCallback(function (file, _ref2) {
@@ -102,14 +103,14 @@ var useCoreOptions = function useCoreOptions(_ref) {
102
103
 
103
104
  var uploadOss = useCallback(function (file) {
104
105
  return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
105
- var _a, _ossConfig, _ossConfig$dir, dir, shortlink, _ossConfig$region, region, accessKeyId, accessKeySecret, stsToken, _ossConfig$bucket, bucket, client, timestamp, fileName, pathName, url, seq, params;
106
+ var _a, _ossConfig, _ossConfig$dir, dir, shortlink, _ossConfig$region, region, accessKeyId, accessKeySecret, stsToken, _ossConfig$bucket, bucket, ossCallBack, client, timestamp, fileName, pathName, url, seq, params;
106
107
 
107
108
  return _regeneratorRuntime.wrap(function _callee$(_context) {
108
109
  while (1) {
109
110
  switch (_context.prev = _context.next) {
110
111
  case 0:
111
112
  _context.prev = 0;
112
- _ossConfig = ossConfig(), _ossConfig$dir = _ossConfig.dir, dir = _ossConfig$dir === void 0 ? '/BizFile/4595/Supplier/' : _ossConfig$dir, shortlink = _ossConfig.shortlink, _ossConfig$region = _ossConfig.region, region = _ossConfig$region === void 0 ? 'oss-cn-hangzhou' : _ossConfig$region, accessKeyId = _ossConfig.accessKeyId, accessKeySecret = _ossConfig.accessKeySecret, stsToken = _ossConfig.stsToken, _ossConfig$bucket = _ossConfig.bucket, bucket = _ossConfig$bucket === void 0 ? 'linkmore-scm-test' : _ossConfig$bucket;
113
+ _ossConfig = ossConfig(), _ossConfig$dir = _ossConfig.dir, dir = _ossConfig$dir === void 0 ? '/BizFile/4595/Supplier/' : _ossConfig$dir, shortlink = _ossConfig.shortlink, _ossConfig$region = _ossConfig.region, region = _ossConfig$region === void 0 ? 'oss-cn-hangzhou' : _ossConfig$region, accessKeyId = _ossConfig.accessKeyId, accessKeySecret = _ossConfig.accessKeySecret, stsToken = _ossConfig.stsToken, _ossConfig$bucket = _ossConfig.bucket, bucket = _ossConfig$bucket === void 0 ? 'linkmore-scm-test' : _ossConfig$bucket, ossCallBack = _ossConfig.ossCallBack;
113
114
  client = new OSS({
114
115
  region: region,
115
116
  accessKeyId: accessKeyId,
@@ -145,13 +146,13 @@ var useCoreOptions = function useCoreOptions(_ref) {
145
146
  fileName: fileName,
146
147
  realFileName: file.name,
147
148
  fileSize: file.size,
148
- internalUrl: '',
149
+ internalUrl: 'internalUrl',
149
150
  externalUrl: 'externalUrl',
150
151
  filePath: dir,
151
152
  seq: seq,
152
153
  url: url
153
154
  };
154
- uploadDone(params);
155
+ uploadDone(file, params, ossCallBack);
155
156
  _context.next = 18;
156
157
  break;
157
158
 
@@ -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 | - |
@@ -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$localization = _ref.localization,
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
- localization: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, _localization.DefaultLocalization), localization)
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 item = {
33
- field: searchKey,
34
- operator: 'contains',
35
- fieldType: 'string'
36
- };
37
- setFilterValue(val, item);
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 state = instance.state,
17
- dispatch = instance.dispatch,
18
- onClearChange = instance.onClearChange;
16
+ var onClearChange = instance.onClearChange;
19
17
 
20
18
  var handleClear = function handleClear() {
21
19
  onClearChange();