@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.
@@ -497,7 +497,10 @@ function AgGridPlus(props) {
497
497
  return item.value == params.value;
498
498
  });
499
499
  if (match) {
500
- var color = match.color || '#ffffff';
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
- var color = match.color || '#ffffff';
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
- var finData = (0, _lodash.cloneDeep)(widgets);
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
- var color = match.color || '#ffffff';
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
- var color = match.color || '#ffffff';
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 { cloneDeep, isEmpty, get } from 'lodash';
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
- var finData = cloneDeep(widgets);
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"