@nokecy/qc-ui 1.1.43 → 1.1.45
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 +4 -1
- package/dist/cjs/ag-grid-plus/utils/columnProcessors.js +4 -1
- package/dist/cjs/dashboard/widget/selector/filterWidgets.d.ts +27 -0
- package/dist/cjs/dashboard/widget/selector/filterWidgets.js +53 -0
- package/dist/cjs/dashboard/widget/selector/index.js +2 -21
- package/dist/cjs/toolBar/index.js +0 -3
- package/dist/esm/ag-grid-plus/ag-gridPlus.js +4 -1
- package/dist/esm/ag-grid-plus/utils/columnProcessors.js +4 -1
- package/dist/esm/dashboard/widget/selector/filterWidgets.d.ts +27 -0
- package/dist/esm/dashboard/widget/selector/filterWidgets.js +47 -0
- package/dist/esm/dashboard/widget/selector/index.js +3 -22
- package/dist/esm/toolBar/index.js +0 -3
- package/dist/umd/qc-ui.min.js +1 -1
- package/package.json +1 -1
|
@@ -497,7 +497,10 @@ function AgGridPlus(props) {
|
|
|
497
497
|
return item.value == params.value;
|
|
498
498
|
});
|
|
499
499
|
if (match) {
|
|
500
|
-
|
|
500
|
+
// 没配颜色的枚举项曾经默认成 '#ffffff'——白底白字,那一列直接看不见。
|
|
501
|
+
// 消费端为此在 global.less 里加了一整套 [style*="color: white"] → 紫色的覆盖来擦屁股,
|
|
502
|
+
// 顺带把别的颜色也一起改了。这里改成 inherit,跟着单元格的正文色走。@author nokecy
|
|
503
|
+
var color = match.color || 'inherit';
|
|
501
504
|
return /*#__PURE__*/_react.default.createElement("span", {
|
|
502
505
|
style: {
|
|
503
506
|
color: color,
|
|
@@ -157,7 +157,10 @@ function processEnumColumn(col, dataType) {
|
|
|
157
157
|
return item.value == params.value;
|
|
158
158
|
});
|
|
159
159
|
if (match) {
|
|
160
|
-
|
|
160
|
+
// 没配颜色的枚举项曾经默认成 '#ffffff'——白底白字,那一列直接看不见。
|
|
161
|
+
// 消费端为此在 global.less 里加了一整套 [style*="color: white"] → 紫色 的覆盖来擦屁股,
|
|
162
|
+
// 顺带把别的颜色也一起改了。这里改成 inherit,跟着单元格的正文色走。@author nokecy
|
|
163
|
+
var color = match.color || 'inherit';
|
|
161
164
|
return /*#__PURE__*/_react.default.createElement("span", {
|
|
162
165
|
style: {
|
|
163
166
|
color: color,
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 部件选择器的筛选与计数。
|
|
3
|
+
*
|
|
4
|
+
* 单独抽出来是因为这里踩过一次:布局里存着当前部署已经没有的部件时
|
|
5
|
+
* (按客户启用的模块清单不同,某个部件这次就是不发),原来的写法会抛 TypeError,
|
|
6
|
+
* 整个选择器打不开——而用户唯一能看到的现象是「点了没反应」。
|
|
7
|
+
*
|
|
8
|
+
* @author nokecy
|
|
9
|
+
*/
|
|
10
|
+
export type WidgetMeta = {
|
|
11
|
+
name?: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
tags?: string[];
|
|
14
|
+
visible?: boolean;
|
|
15
|
+
length?: number;
|
|
16
|
+
[key: string]: any;
|
|
17
|
+
};
|
|
18
|
+
export type LayoutItem = {
|
|
19
|
+
i: string;
|
|
20
|
+
[key: string]: any;
|
|
21
|
+
};
|
|
22
|
+
/** 出参一定带上 visible 与 length,调用方不必再判空。 */
|
|
23
|
+
export type FilteredWidget = WidgetMeta & {
|
|
24
|
+
visible: boolean;
|
|
25
|
+
length: number;
|
|
26
|
+
};
|
|
27
|
+
export declare const filterWidgets: (widgets: Record<string, WidgetMeta> | undefined | null, currentLayout: LayoutItem[] | undefined | null, keywords?: string, activeMenuKey?: string) => Record<string, FilteredWidget>;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.filterWidgets = void 0;
|
|
7
|
+
var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
8
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
|
+
/**
|
|
10
|
+
* 部件选择器的筛选与计数。
|
|
11
|
+
*
|
|
12
|
+
* 单独抽出来是因为这里踩过一次:布局里存着当前部署已经没有的部件时
|
|
13
|
+
* (按客户启用的模块清单不同,某个部件这次就是不发),原来的写法会抛 TypeError,
|
|
14
|
+
* 整个选择器打不开——而用户唯一能看到的现象是「点了没反应」。
|
|
15
|
+
*
|
|
16
|
+
* @author nokecy
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/** 出参一定带上 visible 与 length,调用方不必再判空。 */
|
|
20
|
+
|
|
21
|
+
var filterWidgets = exports.filterWidgets = function filterWidgets(widgets, currentLayout) {
|
|
22
|
+
var keywords = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
|
|
23
|
+
var activeMenuKey = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';
|
|
24
|
+
var finData = (0, _cloneDeep.default)(widgets || {});
|
|
25
|
+
var keyword = (keywords || '').toLowerCase();
|
|
26
|
+
Object.keys(finData).forEach(function (key) {
|
|
27
|
+
var widget = finData[key];
|
|
28
|
+
widget.length = 0;
|
|
29
|
+
widget.visible = true;
|
|
30
|
+
|
|
31
|
+
// 菜单切换:部件没声明 tags 时按「不属于任何分类」处理,不该因此抛错
|
|
32
|
+
if (activeMenuKey && (widget.tags || []).indexOf(activeMenuKey) < 0) {
|
|
33
|
+
widget.visible = false;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// 查询:名称与描述任一命中即保留;两者都可能没写
|
|
37
|
+
var name = (widget.name || '').toLowerCase();
|
|
38
|
+
var description = (widget.description || '').toLowerCase();
|
|
39
|
+
if (name.indexOf(keyword) < 0 && description.indexOf(keyword) < 0) {
|
|
40
|
+
widget.visible = false;
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
// 已添加次数。布局里可能存着当前部署没有的部件,跳过即可。
|
|
45
|
+
(currentLayout || []).forEach(function (item) {
|
|
46
|
+
var _item$i;
|
|
47
|
+
var key = String((_item$i = item === null || item === void 0 ? void 0 : item.i) !== null && _item$i !== void 0 ? _item$i : '').split('-')[0];
|
|
48
|
+
var widget = finData[key];
|
|
49
|
+
if (!widget) return;
|
|
50
|
+
widget.length = widget.length ? widget.length + 1 : 1;
|
|
51
|
+
});
|
|
52
|
+
return finData;
|
|
53
|
+
};
|
|
@@ -9,6 +9,7 @@ var _icons = require("@ant-design/icons");
|
|
|
9
9
|
var _antd = require("antd");
|
|
10
10
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
11
11
|
var _lodash = require("lodash");
|
|
12
|
+
var _filterWidgets = require("./filterWidgets");
|
|
12
13
|
var _react = _interopRequireWildcard(require("react"));
|
|
13
14
|
require("./index.less");
|
|
14
15
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
@@ -97,27 +98,7 @@ var WidgetSelector = function WidgetSelector(props) {
|
|
|
97
98
|
handleCalcMenuData();
|
|
98
99
|
}, []);
|
|
99
100
|
var finWidgets = (0, _react.useMemo)(function () {
|
|
100
|
-
|
|
101
|
-
Object.keys(finData).map(function (key) {
|
|
102
|
-
//初始化数据
|
|
103
|
-
finData[key].length = 0;
|
|
104
|
-
finData[key].visible = true;
|
|
105
|
-
//菜单切换
|
|
106
|
-
if (finData[key]['tags'].indexOf(activeMenuKey) < 0 && activeMenuKey) {
|
|
107
|
-
finData[key].visible = false;
|
|
108
|
-
}
|
|
109
|
-
//查询
|
|
110
|
-
if (finData[key]['name'].toLowerCase().indexOf(keywords.toLowerCase()) < 0 && finData[key]['description'].toLowerCase().indexOf(keywords.toLowerCase()) < 0) {
|
|
111
|
-
finData[key].visible = false;
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
//已添加次数
|
|
115
|
-
currentLayout.forEach(function (item) {
|
|
116
|
-
var _finData$key;
|
|
117
|
-
var key = item.i.split('-')[0];
|
|
118
|
-
finData[key].length = finData[key].length ? ((_finData$key = finData[key]) === null || _finData$key === void 0 ? void 0 : _finData$key.length) + 1 : 1;
|
|
119
|
-
});
|
|
120
|
-
return finData;
|
|
101
|
+
return (0, _filterWidgets.filterWidgets)(widgets, currentLayout, keywords, activeMenuKey);
|
|
121
102
|
}, [currentLayout, widgets, keywords, activeMenuKey, visible]);
|
|
122
103
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
123
104
|
style: {
|
|
@@ -23,9 +23,6 @@ var ToolBar = function ToolBar(props) {
|
|
|
23
23
|
offsetTop: 2,
|
|
24
24
|
style: style,
|
|
25
25
|
offsetBottom: 2,
|
|
26
|
-
onChange: function onChange(affixed) {
|
|
27
|
-
return void 0;
|
|
28
|
-
},
|
|
29
26
|
target: getTargetContainer
|
|
30
27
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
31
28
|
className: "antd-tool-bar"
|
|
@@ -489,7 +489,10 @@ function AgGridPlus(props) {
|
|
|
489
489
|
return item.value == params.value;
|
|
490
490
|
});
|
|
491
491
|
if (match) {
|
|
492
|
-
|
|
492
|
+
// 没配颜色的枚举项曾经默认成 '#ffffff'——白底白字,那一列直接看不见。
|
|
493
|
+
// 消费端为此在 global.less 里加了一整套 [style*="color: white"] → 紫色的覆盖来擦屁股,
|
|
494
|
+
// 顺带把别的颜色也一起改了。这里改成 inherit,跟着单元格的正文色走。@author nokecy
|
|
495
|
+
var color = match.color || 'inherit';
|
|
493
496
|
return /*#__PURE__*/React.createElement("span", {
|
|
494
497
|
style: {
|
|
495
498
|
color: color,
|
|
@@ -142,7 +142,10 @@ export function processEnumColumn(col, dataType) {
|
|
|
142
142
|
return item.value == params.value;
|
|
143
143
|
});
|
|
144
144
|
if (match) {
|
|
145
|
-
|
|
145
|
+
// 没配颜色的枚举项曾经默认成 '#ffffff'——白底白字,那一列直接看不见。
|
|
146
|
+
// 消费端为此在 global.less 里加了一整套 [style*="color: white"] → 紫色 的覆盖来擦屁股,
|
|
147
|
+
// 顺带把别的颜色也一起改了。这里改成 inherit,跟着单元格的正文色走。@author nokecy
|
|
148
|
+
var color = match.color || 'inherit';
|
|
146
149
|
return /*#__PURE__*/React.createElement("span", {
|
|
147
150
|
style: {
|
|
148
151
|
color: color,
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 部件选择器的筛选与计数。
|
|
3
|
+
*
|
|
4
|
+
* 单独抽出来是因为这里踩过一次:布局里存着当前部署已经没有的部件时
|
|
5
|
+
* (按客户启用的模块清单不同,某个部件这次就是不发),原来的写法会抛 TypeError,
|
|
6
|
+
* 整个选择器打不开——而用户唯一能看到的现象是「点了没反应」。
|
|
7
|
+
*
|
|
8
|
+
* @author nokecy
|
|
9
|
+
*/
|
|
10
|
+
export type WidgetMeta = {
|
|
11
|
+
name?: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
tags?: string[];
|
|
14
|
+
visible?: boolean;
|
|
15
|
+
length?: number;
|
|
16
|
+
[key: string]: any;
|
|
17
|
+
};
|
|
18
|
+
export type LayoutItem = {
|
|
19
|
+
i: string;
|
|
20
|
+
[key: string]: any;
|
|
21
|
+
};
|
|
22
|
+
/** 出参一定带上 visible 与 length,调用方不必再判空。 */
|
|
23
|
+
export type FilteredWidget = WidgetMeta & {
|
|
24
|
+
visible: boolean;
|
|
25
|
+
length: number;
|
|
26
|
+
};
|
|
27
|
+
export declare const filterWidgets: (widgets: Record<string, WidgetMeta> | undefined | null, currentLayout: LayoutItem[] | undefined | null, keywords?: string, activeMenuKey?: string) => Record<string, FilteredWidget>;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import cloneDeep from 'lodash/cloneDeep';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 部件选择器的筛选与计数。
|
|
5
|
+
*
|
|
6
|
+
* 单独抽出来是因为这里踩过一次:布局里存着当前部署已经没有的部件时
|
|
7
|
+
* (按客户启用的模块清单不同,某个部件这次就是不发),原来的写法会抛 TypeError,
|
|
8
|
+
* 整个选择器打不开——而用户唯一能看到的现象是「点了没反应」。
|
|
9
|
+
*
|
|
10
|
+
* @author nokecy
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/** 出参一定带上 visible 与 length,调用方不必再判空。 */
|
|
14
|
+
|
|
15
|
+
export var filterWidgets = function filterWidgets(widgets, currentLayout) {
|
|
16
|
+
var keywords = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
|
|
17
|
+
var activeMenuKey = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';
|
|
18
|
+
var finData = cloneDeep(widgets || {});
|
|
19
|
+
var keyword = (keywords || '').toLowerCase();
|
|
20
|
+
Object.keys(finData).forEach(function (key) {
|
|
21
|
+
var widget = finData[key];
|
|
22
|
+
widget.length = 0;
|
|
23
|
+
widget.visible = true;
|
|
24
|
+
|
|
25
|
+
// 菜单切换:部件没声明 tags 时按「不属于任何分类」处理,不该因此抛错
|
|
26
|
+
if (activeMenuKey && (widget.tags || []).indexOf(activeMenuKey) < 0) {
|
|
27
|
+
widget.visible = false;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// 查询:名称与描述任一命中即保留;两者都可能没写
|
|
31
|
+
var name = (widget.name || '').toLowerCase();
|
|
32
|
+
var description = (widget.description || '').toLowerCase();
|
|
33
|
+
if (name.indexOf(keyword) < 0 && description.indexOf(keyword) < 0) {
|
|
34
|
+
widget.visible = false;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
// 已添加次数。布局里可能存着当前部署没有的部件,跳过即可。
|
|
39
|
+
(currentLayout || []).forEach(function (item) {
|
|
40
|
+
var _item$i;
|
|
41
|
+
var key = String((_item$i = item === null || item === void 0 ? void 0 : item.i) !== null && _item$i !== void 0 ? _item$i : '').split('-')[0];
|
|
42
|
+
var widget = finData[key];
|
|
43
|
+
if (!widget) return;
|
|
44
|
+
widget.length = widget.length ? widget.length + 1 : 1;
|
|
45
|
+
});
|
|
46
|
+
return finData;
|
|
47
|
+
};
|
|
@@ -11,7 +11,8 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
|
11
11
|
import { AppstoreAddOutlined, PlusOutlined, SearchOutlined } from '@ant-design/icons';
|
|
12
12
|
import { Button, Drawer, Empty, Input } from 'antd';
|
|
13
13
|
import classnames from 'classnames';
|
|
14
|
-
import {
|
|
14
|
+
import { isEmpty, get } from 'lodash';
|
|
15
|
+
import { filterWidgets } from "./filterWidgets";
|
|
15
16
|
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
16
17
|
import "./index.less";
|
|
17
18
|
var Search = Input.Search;
|
|
@@ -87,27 +88,7 @@ var WidgetSelector = function WidgetSelector(props) {
|
|
|
87
88
|
handleCalcMenuData();
|
|
88
89
|
}, []);
|
|
89
90
|
var finWidgets = useMemo(function () {
|
|
90
|
-
|
|
91
|
-
Object.keys(finData).map(function (key) {
|
|
92
|
-
//初始化数据
|
|
93
|
-
finData[key].length = 0;
|
|
94
|
-
finData[key].visible = true;
|
|
95
|
-
//菜单切换
|
|
96
|
-
if (finData[key]['tags'].indexOf(activeMenuKey) < 0 && activeMenuKey) {
|
|
97
|
-
finData[key].visible = false;
|
|
98
|
-
}
|
|
99
|
-
//查询
|
|
100
|
-
if (finData[key]['name'].toLowerCase().indexOf(keywords.toLowerCase()) < 0 && finData[key]['description'].toLowerCase().indexOf(keywords.toLowerCase()) < 0) {
|
|
101
|
-
finData[key].visible = false;
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
//已添加次数
|
|
105
|
-
currentLayout.forEach(function (item) {
|
|
106
|
-
var _finData$key;
|
|
107
|
-
var key = item.i.split('-')[0];
|
|
108
|
-
finData[key].length = finData[key].length ? ((_finData$key = finData[key]) === null || _finData$key === void 0 ? void 0 : _finData$key.length) + 1 : 1;
|
|
109
|
-
});
|
|
110
|
-
return finData;
|
|
91
|
+
return filterWidgets(widgets, currentLayout, keywords, activeMenuKey);
|
|
111
92
|
}, [currentLayout, widgets, keywords, activeMenuKey, visible]);
|
|
112
93
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
113
94
|
style: {
|
|
@@ -16,9 +16,6 @@ var ToolBar = function ToolBar(props) {
|
|
|
16
16
|
offsetTop: 2,
|
|
17
17
|
style: style,
|
|
18
18
|
offsetBottom: 2,
|
|
19
|
-
onChange: function onChange(affixed) {
|
|
20
|
-
return void 0;
|
|
21
|
-
},
|
|
22
19
|
target: getTargetContainer
|
|
23
20
|
}, /*#__PURE__*/React.createElement("div", {
|
|
24
21
|
className: "antd-tool-bar"
|