@nokecy/qc-ui 1.0.65 → 1.0.66
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/RuleBuilder/LogicSelector.d.ts +23 -0
- package/dist/cjs/RuleBuilder/LogicSelector.js +54 -0
- package/dist/cjs/RuleBuilder/RuleBuilderContainer.d.ts +20 -0
- package/dist/cjs/RuleBuilder/RuleBuilderContainer.js +209 -0
- package/dist/cjs/RuleBuilder/RuleCard.d.ts +20 -0
- package/dist/cjs/RuleBuilder/RuleCard.js +196 -0
- package/dist/cjs/RuleBuilder/RuleGroupEditor.d.ts +25 -0
- package/dist/cjs/RuleBuilder/RuleGroupEditor.js +191 -0
- package/dist/cjs/RuleBuilder/constants/operators.d.ts +47 -0
- package/dist/cjs/RuleBuilder/constants/operators.js +172 -0
- package/dist/cjs/RuleBuilder/context/RuleBuilderContext.d.ts +72 -0
- package/dist/cjs/RuleBuilder/context/RuleBuilderContext.js +286 -0
- package/dist/cjs/RuleBuilder/index.d.ts +25 -0
- package/dist/cjs/RuleBuilder/index.js +308 -0
- package/dist/cjs/RuleBuilder/inputs/BetweenValueInput.d.ts +23 -0
- package/dist/cjs/RuleBuilder/inputs/BetweenValueInput.js +80 -0
- package/dist/cjs/RuleBuilder/inputs/MultiValueInput.d.ts +21 -0
- package/dist/cjs/RuleBuilder/inputs/MultiValueInput.js +128 -0
- package/dist/cjs/RuleBuilder/inputs/SingleValueInput.d.ts +25 -0
- package/dist/cjs/RuleBuilder/inputs/SingleValueInput.js +81 -0
- package/dist/cjs/RuleBuilder/inputs/ValueInput.d.ts +29 -0
- package/dist/cjs/RuleBuilder/inputs/ValueInput.js +80 -0
- package/dist/cjs/RuleBuilder/selectors/FieldSelector.d.ts +22 -0
- package/dist/cjs/RuleBuilder/selectors/FieldSelector.js +45 -0
- package/dist/cjs/RuleBuilder/selectors/OperatorSelector.d.ts +22 -0
- package/dist/cjs/RuleBuilder/selectors/OperatorSelector.js +51 -0
- package/dist/cjs/RuleBuilder/styles/index.module.less +443 -0
- package/dist/cjs/RuleBuilder/styles/index.module.less.d.ts +43 -0
- package/dist/cjs/RuleBuilder/types/index.d.ts +232 -0
- package/dist/cjs/RuleBuilder/types/index.js +83 -0
- package/dist/cjs/RuleBuilder/utils/pathHelpers.d.ts +65 -0
- package/dist/cjs/RuleBuilder/utils/pathHelpers.js +241 -0
- package/dist/cjs/RuleBuilder/utils/ruleHelpers.d.ts +47 -0
- package/dist/cjs/RuleBuilder/utils/ruleHelpers.js +154 -0
- package/dist/cjs/RuleBuilder/utils/validation.d.ts +25 -0
- package/dist/cjs/RuleBuilder/utils/validation.js +241 -0
- package/dist/cjs/index.d.ts +3 -1
- package/dist/cjs/index.js +7 -0
- package/dist/cjs/standardFormDialog/StandardFormDialog.js +26 -5
- package/dist/esm/RuleBuilder/LogicSelector.d.ts +23 -0
- package/dist/esm/RuleBuilder/LogicSelector.js +47 -0
- package/dist/esm/RuleBuilder/RuleBuilderContainer.d.ts +20 -0
- package/dist/esm/RuleBuilder/RuleBuilderContainer.js +203 -0
- package/dist/esm/RuleBuilder/RuleCard.d.ts +20 -0
- package/dist/esm/RuleBuilder/RuleCard.js +191 -0
- package/dist/esm/RuleBuilder/RuleGroupEditor.d.ts +25 -0
- package/dist/esm/RuleBuilder/RuleGroupEditor.js +184 -0
- package/dist/esm/RuleBuilder/constants/operators.d.ts +47 -0
- package/dist/esm/RuleBuilder/constants/operators.js +169 -0
- package/dist/esm/RuleBuilder/context/RuleBuilderContext.d.ts +72 -0
- package/dist/esm/RuleBuilder/context/RuleBuilderContext.js +271 -0
- package/dist/esm/RuleBuilder/index.d.ts +25 -0
- package/dist/esm/RuleBuilder/index.js +42 -0
- package/dist/esm/RuleBuilder/inputs/BetweenValueInput.d.ts +23 -0
- package/dist/esm/RuleBuilder/inputs/BetweenValueInput.js +73 -0
- package/dist/esm/RuleBuilder/inputs/MultiValueInput.d.ts +21 -0
- package/dist/esm/RuleBuilder/inputs/MultiValueInput.js +121 -0
- package/dist/esm/RuleBuilder/inputs/SingleValueInput.d.ts +25 -0
- package/dist/esm/RuleBuilder/inputs/SingleValueInput.js +74 -0
- package/dist/esm/RuleBuilder/inputs/ValueInput.d.ts +29 -0
- package/dist/esm/RuleBuilder/inputs/ValueInput.js +73 -0
- package/dist/esm/RuleBuilder/selectors/FieldSelector.d.ts +22 -0
- package/dist/esm/RuleBuilder/selectors/FieldSelector.js +38 -0
- package/dist/esm/RuleBuilder/selectors/OperatorSelector.d.ts +22 -0
- package/dist/esm/RuleBuilder/selectors/OperatorSelector.js +44 -0
- package/dist/esm/RuleBuilder/styles/index.module.less +443 -0
- package/dist/esm/RuleBuilder/styles/index.module.less.d.ts +43 -0
- package/dist/esm/RuleBuilder/types/index.d.ts +232 -0
- package/dist/esm/RuleBuilder/types/index.js +91 -0
- package/dist/esm/RuleBuilder/utils/pathHelpers.d.ts +65 -0
- package/dist/esm/RuleBuilder/utils/pathHelpers.js +228 -0
- package/dist/esm/RuleBuilder/utils/ruleHelpers.d.ts +47 -0
- package/dist/esm/RuleBuilder/utils/ruleHelpers.js +145 -0
- package/dist/esm/RuleBuilder/utils/validation.d.ts +25 -0
- package/dist/esm/RuleBuilder/utils/validation.js +236 -0
- package/dist/esm/index.d.ts +3 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/standardFormDialog/StandardFormDialog.js +26 -5
- package/dist/umd/qc-ui.min.css +1 -1
- package/dist/umd/qc-ui.min.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.BetweenValueInput = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _antd = require("antd");
|
|
9
|
+
var _dayjs = _interopRequireDefault(require("dayjs"));
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
/**
|
|
12
|
+
* 区间值输入组件
|
|
13
|
+
*
|
|
14
|
+
* 用于 Between 操作符,渲染两个输入框(最小值和最大值)
|
|
15
|
+
* 支持数值和日期类型
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
var BetweenValueInput = exports.BetweenValueInput = function BetweenValueInput(_ref) {
|
|
19
|
+
var value = _ref.value,
|
|
20
|
+
value2 = _ref.value2,
|
|
21
|
+
_onChange = _ref.onChange,
|
|
22
|
+
dataType = _ref.dataType,
|
|
23
|
+
_ref$disabled = _ref.disabled,
|
|
24
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
25
|
+
_ref$size = _ref.size,
|
|
26
|
+
size = _ref$size === void 0 ? 'middle' : _ref$size;
|
|
27
|
+
// 根据数据类型渲染不同的输入组件
|
|
28
|
+
if (dataType === 'number') {
|
|
29
|
+
return /*#__PURE__*/_react.default.createElement(_antd.Space, null, /*#__PURE__*/_react.default.createElement(_antd.InputNumber, {
|
|
30
|
+
value: value,
|
|
31
|
+
onChange: function onChange(val) {
|
|
32
|
+
return _onChange(val, value2);
|
|
33
|
+
},
|
|
34
|
+
disabled: disabled,
|
|
35
|
+
size: size,
|
|
36
|
+
placeholder: "\u6700\u5C0F\u503C",
|
|
37
|
+
style: {
|
|
38
|
+
width: 120
|
|
39
|
+
}
|
|
40
|
+
}), /*#__PURE__*/_react.default.createElement("span", null, "~"), /*#__PURE__*/_react.default.createElement(_antd.InputNumber, {
|
|
41
|
+
value: value2,
|
|
42
|
+
onChange: function onChange(val) {
|
|
43
|
+
return _onChange(value, val);
|
|
44
|
+
},
|
|
45
|
+
disabled: disabled,
|
|
46
|
+
size: size,
|
|
47
|
+
placeholder: "\u6700\u5927\u503C",
|
|
48
|
+
style: {
|
|
49
|
+
width: 120
|
|
50
|
+
}
|
|
51
|
+
}));
|
|
52
|
+
}
|
|
53
|
+
if (dataType === 'date') {
|
|
54
|
+
return /*#__PURE__*/_react.default.createElement(_antd.Space, null, /*#__PURE__*/_react.default.createElement(_antd.DatePicker, {
|
|
55
|
+
value: value ? (0, _dayjs.default)(value) : null,
|
|
56
|
+
onChange: function onChange(date) {
|
|
57
|
+
return _onChange(date === null || date === void 0 ? void 0 : date.format('YYYY-MM-DD'), value2);
|
|
58
|
+
},
|
|
59
|
+
disabled: disabled,
|
|
60
|
+
size: size,
|
|
61
|
+
placeholder: "\u5F00\u59CB\u65E5\u671F",
|
|
62
|
+
style: {
|
|
63
|
+
width: 140
|
|
64
|
+
}
|
|
65
|
+
}), /*#__PURE__*/_react.default.createElement("span", null, "~"), /*#__PURE__*/_react.default.createElement(_antd.DatePicker, {
|
|
66
|
+
value: value2 ? (0, _dayjs.default)(value2) : null,
|
|
67
|
+
onChange: function onChange(date) {
|
|
68
|
+
return _onChange(value, date === null || date === void 0 ? void 0 : date.format('YYYY-MM-DD'));
|
|
69
|
+
},
|
|
70
|
+
disabled: disabled,
|
|
71
|
+
size: size,
|
|
72
|
+
placeholder: "\u7ED3\u675F\u65E5\u671F",
|
|
73
|
+
style: {
|
|
74
|
+
width: 140
|
|
75
|
+
}
|
|
76
|
+
}));
|
|
77
|
+
}
|
|
78
|
+
return null;
|
|
79
|
+
};
|
|
80
|
+
var _default = exports.default = BetweenValueInput;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 多值输入组件
|
|
3
|
+
*
|
|
4
|
+
* 用于 In/NotIn 操作符,支持添加和删除多个值
|
|
5
|
+
* 支持字符串和数值类型
|
|
6
|
+
*/
|
|
7
|
+
import React from 'react';
|
|
8
|
+
export interface MultiValueInputProps {
|
|
9
|
+
/** 值数组 */
|
|
10
|
+
values: any[];
|
|
11
|
+
/** 值变更回调 */
|
|
12
|
+
onChange: (values: any[]) => void;
|
|
13
|
+
/** 字段数据类型 */
|
|
14
|
+
dataType: 'string' | 'number';
|
|
15
|
+
/** 是否禁用 */
|
|
16
|
+
disabled?: boolean;
|
|
17
|
+
/** 尺寸 */
|
|
18
|
+
size?: 'small' | 'middle' | 'large';
|
|
19
|
+
}
|
|
20
|
+
export declare const MultiValueInput: React.FC<MultiValueInputProps>;
|
|
21
|
+
export default MultiValueInput;
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = exports.MultiValueInput = void 0;
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _antd = require("antd");
|
|
10
|
+
var _icons = require("@ant-design/icons");
|
|
11
|
+
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); }
|
|
12
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
13
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
14
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
15
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
16
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
17
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
18
|
+
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."); }
|
|
19
|
+
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); }
|
|
20
|
+
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; }
|
|
21
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
22
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } /**
|
|
23
|
+
* 多值输入组件
|
|
24
|
+
*
|
|
25
|
+
* 用于 In/NotIn 操作符,支持添加和删除多个值
|
|
26
|
+
* 支持字符串和数值类型
|
|
27
|
+
*/
|
|
28
|
+
var MultiValueInput = exports.MultiValueInput = function MultiValueInput(_ref) {
|
|
29
|
+
var _ref$values = _ref.values,
|
|
30
|
+
values = _ref$values === void 0 ? [] : _ref$values,
|
|
31
|
+
onChange = _ref.onChange,
|
|
32
|
+
dataType = _ref.dataType,
|
|
33
|
+
_ref$disabled = _ref.disabled,
|
|
34
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
35
|
+
_ref$size = _ref.size,
|
|
36
|
+
size = _ref$size === void 0 ? 'middle' : _ref$size;
|
|
37
|
+
var _useState = (0, _react.useState)(''),
|
|
38
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
39
|
+
inputValue = _useState2[0],
|
|
40
|
+
setInputValue = _useState2[1];
|
|
41
|
+
var _useState3 = (0, _react.useState)(false),
|
|
42
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
43
|
+
isAdding = _useState4[0],
|
|
44
|
+
setIsAdding = _useState4[1];
|
|
45
|
+
|
|
46
|
+
// 添加值
|
|
47
|
+
var handleAdd = function handleAdd() {
|
|
48
|
+
if (inputValue !== '' && inputValue !== null && inputValue !== undefined) {
|
|
49
|
+
var newValues = [].concat(_toConsumableArray(values), [inputValue]);
|
|
50
|
+
onChange(newValues);
|
|
51
|
+
setInputValue('');
|
|
52
|
+
setIsAdding(false);
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
// 删除值
|
|
57
|
+
var handleRemove = function handleRemove(index) {
|
|
58
|
+
var newValues = values.filter(function (_, i) {
|
|
59
|
+
return i !== index;
|
|
60
|
+
});
|
|
61
|
+
onChange(newValues);
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
// 渲染输入框
|
|
65
|
+
var renderInput = function renderInput() {
|
|
66
|
+
if (dataType === 'number') {
|
|
67
|
+
return /*#__PURE__*/_react.default.createElement(_antd.InputNumber, {
|
|
68
|
+
value: inputValue,
|
|
69
|
+
onChange: setInputValue,
|
|
70
|
+
disabled: disabled,
|
|
71
|
+
size: size,
|
|
72
|
+
placeholder: "\u8BF7\u8F93\u5165\u6570\u503C",
|
|
73
|
+
style: {
|
|
74
|
+
width: 150
|
|
75
|
+
},
|
|
76
|
+
onPressEnter: handleAdd
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
return /*#__PURE__*/_react.default.createElement(_antd.Input, {
|
|
80
|
+
value: inputValue,
|
|
81
|
+
onChange: function onChange(e) {
|
|
82
|
+
return setInputValue(e.target.value);
|
|
83
|
+
},
|
|
84
|
+
disabled: disabled,
|
|
85
|
+
size: size,
|
|
86
|
+
placeholder: "\u8BF7\u8F93\u5165\u503C",
|
|
87
|
+
style: {
|
|
88
|
+
width: 150
|
|
89
|
+
},
|
|
90
|
+
onPressEnter: handleAdd
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
return /*#__PURE__*/_react.default.createElement(_antd.Space, {
|
|
94
|
+
direction: "vertical",
|
|
95
|
+
style: {
|
|
96
|
+
width: '100%'
|
|
97
|
+
}
|
|
98
|
+
}, /*#__PURE__*/_react.default.createElement(_antd.Space, {
|
|
99
|
+
wrap: true
|
|
100
|
+
}, values.map(function (val, index) {
|
|
101
|
+
return /*#__PURE__*/_react.default.createElement(_antd.Tag, {
|
|
102
|
+
key: index,
|
|
103
|
+
closable: !disabled,
|
|
104
|
+
onClose: function onClose() {
|
|
105
|
+
return handleRemove(index);
|
|
106
|
+
},
|
|
107
|
+
closeIcon: /*#__PURE__*/_react.default.createElement(_icons.CloseOutlined, null)
|
|
108
|
+
}, String(val));
|
|
109
|
+
})), isAdding ? /*#__PURE__*/_react.default.createElement(_antd.Space, null, renderInput(), /*#__PURE__*/_react.default.createElement(_antd.Button, {
|
|
110
|
+
type: "primary",
|
|
111
|
+
size: "small",
|
|
112
|
+
onClick: handleAdd
|
|
113
|
+
}, "\u786E\u5B9A"), /*#__PURE__*/_react.default.createElement(_antd.Button, {
|
|
114
|
+
size: "small",
|
|
115
|
+
onClick: function onClick() {
|
|
116
|
+
return setIsAdding(false);
|
|
117
|
+
}
|
|
118
|
+
}, "\u53D6\u6D88")) : /*#__PURE__*/_react.default.createElement(_antd.Button, {
|
|
119
|
+
type: "dashed",
|
|
120
|
+
size: "small",
|
|
121
|
+
icon: /*#__PURE__*/_react.default.createElement(_icons.PlusOutlined, null),
|
|
122
|
+
onClick: function onClick() {
|
|
123
|
+
return setIsAdding(true);
|
|
124
|
+
},
|
|
125
|
+
disabled: disabled
|
|
126
|
+
}, "\u6DFB\u52A0\u503C"));
|
|
127
|
+
};
|
|
128
|
+
var _default = exports.default = MultiValueInput;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 单值输入组件
|
|
3
|
+
*
|
|
4
|
+
* 根据字段数据类型渲染对应的输入控件:
|
|
5
|
+
* - string: Input
|
|
6
|
+
* - number: InputNumber
|
|
7
|
+
* - date: DatePicker
|
|
8
|
+
* - boolean: Switch
|
|
9
|
+
*/
|
|
10
|
+
import React from 'react';
|
|
11
|
+
import type { FieldDataType } from '../types';
|
|
12
|
+
export interface SingleValueInputProps {
|
|
13
|
+
/** 当前值 */
|
|
14
|
+
value: any;
|
|
15
|
+
/** 值变更回调 */
|
|
16
|
+
onChange: (value: any) => void;
|
|
17
|
+
/** 字段数据类型 */
|
|
18
|
+
dataType: FieldDataType;
|
|
19
|
+
/** 是否禁用 */
|
|
20
|
+
disabled?: boolean;
|
|
21
|
+
/** 尺寸 */
|
|
22
|
+
size?: 'small' | 'middle' | 'large';
|
|
23
|
+
}
|
|
24
|
+
export declare const SingleValueInput: React.FC<SingleValueInputProps>;
|
|
25
|
+
export default SingleValueInput;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.SingleValueInput = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _antd = require("antd");
|
|
9
|
+
var _dayjs = _interopRequireDefault(require("dayjs"));
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
/**
|
|
12
|
+
* 单值输入组件
|
|
13
|
+
*
|
|
14
|
+
* 根据字段数据类型渲染对应的输入控件:
|
|
15
|
+
* - string: Input
|
|
16
|
+
* - number: InputNumber
|
|
17
|
+
* - date: DatePicker
|
|
18
|
+
* - boolean: Switch
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
var SingleValueInput = exports.SingleValueInput = function SingleValueInput(_ref) {
|
|
22
|
+
var value = _ref.value,
|
|
23
|
+
_onChange = _ref.onChange,
|
|
24
|
+
dataType = _ref.dataType,
|
|
25
|
+
_ref$disabled = _ref.disabled,
|
|
26
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
27
|
+
_ref$size = _ref.size,
|
|
28
|
+
size = _ref$size === void 0 ? 'middle' : _ref$size;
|
|
29
|
+
// 根据数据类型渲染不同的输入组件
|
|
30
|
+
switch (dataType) {
|
|
31
|
+
case 'string':
|
|
32
|
+
return /*#__PURE__*/_react.default.createElement(_antd.Input, {
|
|
33
|
+
value: value,
|
|
34
|
+
onChange: function onChange(e) {
|
|
35
|
+
return _onChange(e.target.value);
|
|
36
|
+
},
|
|
37
|
+
disabled: disabled,
|
|
38
|
+
size: size,
|
|
39
|
+
placeholder: "\u8BF7\u8F93\u5165\u503C",
|
|
40
|
+
style: {
|
|
41
|
+
width: 200
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
case 'number':
|
|
45
|
+
return /*#__PURE__*/_react.default.createElement(_antd.InputNumber, {
|
|
46
|
+
value: value,
|
|
47
|
+
onChange: _onChange,
|
|
48
|
+
disabled: disabled,
|
|
49
|
+
size: size,
|
|
50
|
+
placeholder: "\u8BF7\u8F93\u5165\u6570\u503C",
|
|
51
|
+
style: {
|
|
52
|
+
width: 200
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
case 'date':
|
|
56
|
+
return /*#__PURE__*/_react.default.createElement(_antd.DatePicker, {
|
|
57
|
+
value: value ? (0, _dayjs.default)(value) : null,
|
|
58
|
+
onChange: function onChange(date) {
|
|
59
|
+
return _onChange(date === null || date === void 0 ? void 0 : date.format('YYYY-MM-DD'));
|
|
60
|
+
},
|
|
61
|
+
disabled: disabled,
|
|
62
|
+
size: size,
|
|
63
|
+
placeholder: "\u8BF7\u9009\u62E9\u65E5\u671F",
|
|
64
|
+
style: {
|
|
65
|
+
width: 200
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
case 'boolean':
|
|
69
|
+
return /*#__PURE__*/_react.default.createElement(_antd.Switch, {
|
|
70
|
+
checked: value,
|
|
71
|
+
onChange: _onChange,
|
|
72
|
+
disabled: disabled,
|
|
73
|
+
size: size === 'small' ? 'small' : 'default',
|
|
74
|
+
checkedChildren: "\u662F",
|
|
75
|
+
unCheckedChildren: "\u5426"
|
|
76
|
+
});
|
|
77
|
+
default:
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
var _default = exports.default = SingleValueInput;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 值输入分发组件
|
|
3
|
+
*
|
|
4
|
+
* 根据操作符类型自动选择合适的输入组件:
|
|
5
|
+
* - IsNull/IsNotNull: 不渲染任何输入
|
|
6
|
+
* - Between: 渲染 BetweenValueInput
|
|
7
|
+
* - In/NotIn: 渲染 MultiValueInput
|
|
8
|
+
* - 其他: 渲染 SingleValueInput
|
|
9
|
+
*/
|
|
10
|
+
import React from 'react';
|
|
11
|
+
import type { MatchOperator, FieldDataType } from '../types';
|
|
12
|
+
export interface ValueInputProps {
|
|
13
|
+
/** 操作符 */
|
|
14
|
+
operator: MatchOperator;
|
|
15
|
+
/** 字段数据类型 */
|
|
16
|
+
dataType: FieldDataType;
|
|
17
|
+
/** 主值 */
|
|
18
|
+
value: any;
|
|
19
|
+
/** 第二个值(用于 Between) */
|
|
20
|
+
value2?: any;
|
|
21
|
+
/** 值变更回调 */
|
|
22
|
+
onChange: (value: any, value2?: any) => void;
|
|
23
|
+
/** 是否禁用 */
|
|
24
|
+
disabled?: boolean;
|
|
25
|
+
/** 尺寸 */
|
|
26
|
+
size?: 'small' | 'middle' | 'large';
|
|
27
|
+
}
|
|
28
|
+
export declare const ValueInput: React.FC<ValueInputProps>;
|
|
29
|
+
export default ValueInput;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.ValueInput = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _operators = require("../constants/operators");
|
|
9
|
+
var _SingleValueInput = _interopRequireDefault(require("./SingleValueInput"));
|
|
10
|
+
var _BetweenValueInput = _interopRequireDefault(require("./BetweenValueInput"));
|
|
11
|
+
var _MultiValueInput = _interopRequireDefault(require("./MultiValueInput"));
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
/**
|
|
14
|
+
* 值输入分发组件
|
|
15
|
+
*
|
|
16
|
+
* 根据操作符类型自动选择合适的输入组件:
|
|
17
|
+
* - IsNull/IsNotNull: 不渲染任何输入
|
|
18
|
+
* - Between: 渲染 BetweenValueInput
|
|
19
|
+
* - In/NotIn: 渲染 MultiValueInput
|
|
20
|
+
* - 其他: 渲染 SingleValueInput
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
var ValueInput = exports.ValueInput = function ValueInput(_ref) {
|
|
24
|
+
var operator = _ref.operator,
|
|
25
|
+
dataType = _ref.dataType,
|
|
26
|
+
value = _ref.value,
|
|
27
|
+
value2 = _ref.value2,
|
|
28
|
+
_onChange = _ref.onChange,
|
|
29
|
+
_ref$disabled = _ref.disabled,
|
|
30
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
31
|
+
_ref$size = _ref.size,
|
|
32
|
+
size = _ref$size === void 0 ? 'middle' : _ref$size;
|
|
33
|
+
// 不需要值输入的操作符(IsNull/IsNotNull)
|
|
34
|
+
if (!(0, _operators.operatorRequiresValue)(operator) && !(0, _operators.operatorRequiresValue2)(operator) && !(0, _operators.operatorRequiresMultiValue)(operator)) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Between 操作符:渲染区间输入
|
|
39
|
+
if ((0, _operators.operatorRequiresValue2)(operator)) {
|
|
40
|
+
if (dataType !== 'number' && dataType !== 'date') {
|
|
41
|
+
return null; // Between 只支持数值和日期
|
|
42
|
+
}
|
|
43
|
+
return /*#__PURE__*/_react.default.createElement(_BetweenValueInput.default, {
|
|
44
|
+
value: value,
|
|
45
|
+
value2: value2,
|
|
46
|
+
onChange: _onChange,
|
|
47
|
+
dataType: dataType,
|
|
48
|
+
disabled: disabled,
|
|
49
|
+
size: size
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// In/NotIn 操作符:渲染多值输入
|
|
54
|
+
if ((0, _operators.operatorRequiresMultiValue)(operator)) {
|
|
55
|
+
if (dataType !== 'string' && dataType !== 'number') {
|
|
56
|
+
return null; // In/NotIn 只支持字符串和数值
|
|
57
|
+
}
|
|
58
|
+
return /*#__PURE__*/_react.default.createElement(_MultiValueInput.default, {
|
|
59
|
+
values: Array.isArray(value) ? value : [],
|
|
60
|
+
onChange: function onChange(values) {
|
|
61
|
+
return _onChange(values);
|
|
62
|
+
},
|
|
63
|
+
dataType: dataType,
|
|
64
|
+
disabled: disabled,
|
|
65
|
+
size: size
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// 其他操作符:渲染单值输入
|
|
70
|
+
return /*#__PURE__*/_react.default.createElement(_SingleValueInput.default, {
|
|
71
|
+
value: value,
|
|
72
|
+
onChange: function onChange(val) {
|
|
73
|
+
return _onChange(val);
|
|
74
|
+
},
|
|
75
|
+
dataType: dataType,
|
|
76
|
+
disabled: disabled,
|
|
77
|
+
size: size
|
|
78
|
+
});
|
|
79
|
+
};
|
|
80
|
+
var _default = exports.default = ValueInput;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 字段选择器组件
|
|
3
|
+
* 用于选择规则匹配的字段
|
|
4
|
+
*/
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import type { FieldDefinition } from '../types';
|
|
7
|
+
export interface FieldSelectorProps {
|
|
8
|
+
/** 当前选中的字段名 */
|
|
9
|
+
value?: string;
|
|
10
|
+
/** 值变更回调 */
|
|
11
|
+
onChange?: (fieldName: string) => void;
|
|
12
|
+
/** 字段定义列表 */
|
|
13
|
+
fields: FieldDefinition[];
|
|
14
|
+
/** 是否禁用 */
|
|
15
|
+
disabled?: boolean;
|
|
16
|
+
/** 尺寸 */
|
|
17
|
+
size?: 'small' | 'middle' | 'large';
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 字段选择器
|
|
21
|
+
*/
|
|
22
|
+
export declare const FieldSelector: React.FC<FieldSelectorProps>;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.FieldSelector = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _antd = require("antd");
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
+
/**
|
|
11
|
+
* 字段选择器组件
|
|
12
|
+
* 用于选择规则匹配的字段
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* 字段选择器
|
|
17
|
+
*/
|
|
18
|
+
var FieldSelector = exports.FieldSelector = function FieldSelector(_ref) {
|
|
19
|
+
var value = _ref.value,
|
|
20
|
+
onChange = _ref.onChange,
|
|
21
|
+
fields = _ref.fields,
|
|
22
|
+
_ref$disabled = _ref.disabled,
|
|
23
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
24
|
+
_ref$size = _ref.size,
|
|
25
|
+
size = _ref$size === void 0 ? 'middle' : _ref$size;
|
|
26
|
+
return /*#__PURE__*/_react.default.createElement(_antd.Select, {
|
|
27
|
+
value: value,
|
|
28
|
+
onChange: onChange,
|
|
29
|
+
placeholder: "\u8BF7\u9009\u62E9\u5B57\u6BB5",
|
|
30
|
+
disabled: disabled,
|
|
31
|
+
size: size,
|
|
32
|
+
showSearch: true,
|
|
33
|
+
optionFilterProp: "label",
|
|
34
|
+
style: {
|
|
35
|
+
width: '100%'
|
|
36
|
+
},
|
|
37
|
+
options: fields.map(function (field) {
|
|
38
|
+
return {
|
|
39
|
+
value: field.name,
|
|
40
|
+
label: field.displayName,
|
|
41
|
+
title: field.description // 鼠标悬停时显示字段说明
|
|
42
|
+
};
|
|
43
|
+
})
|
|
44
|
+
});
|
|
45
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 操作符选择器组件
|
|
3
|
+
* 根据字段数据类型动态显示可用的操作符
|
|
4
|
+
*/
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import type { MatchOperator, FieldDataType } from '../types';
|
|
7
|
+
export interface OperatorSelectorProps {
|
|
8
|
+
/** 当前选中的操作符 */
|
|
9
|
+
value?: MatchOperator;
|
|
10
|
+
/** 值变更回调 */
|
|
11
|
+
onChange?: (operator: MatchOperator) => void;
|
|
12
|
+
/** 字段数据类型(用于过滤可用操作符) */
|
|
13
|
+
dataType?: FieldDataType;
|
|
14
|
+
/** 是否禁用 */
|
|
15
|
+
disabled?: boolean;
|
|
16
|
+
/** 尺寸 */
|
|
17
|
+
size?: 'small' | 'middle' | 'large';
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 操作符选择器
|
|
21
|
+
*/
|
|
22
|
+
export declare const OperatorSelector: React.FC<OperatorSelectorProps>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.OperatorSelector = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _antd = require("antd");
|
|
9
|
+
var _operators = require("../constants/operators");
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
/**
|
|
12
|
+
* 操作符选择器组件
|
|
13
|
+
* 根据字段数据类型动态显示可用的操作符
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* 操作符选择器
|
|
18
|
+
*/
|
|
19
|
+
var OperatorSelector = exports.OperatorSelector = function OperatorSelector(_ref) {
|
|
20
|
+
var value = _ref.value,
|
|
21
|
+
onChange = _ref.onChange,
|
|
22
|
+
dataType = _ref.dataType,
|
|
23
|
+
_ref$disabled = _ref.disabled,
|
|
24
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
25
|
+
_ref$size = _ref.size,
|
|
26
|
+
size = _ref$size === void 0 ? 'middle' : _ref$size;
|
|
27
|
+
// 根据数据类型获取可用操作符
|
|
28
|
+
var availableOperators = dataType ? (0, _operators.getOperatorsByDataType)(dataType) : Object.keys(_operators.OPERATOR_INFO_MAP).map(Number);
|
|
29
|
+
return /*#__PURE__*/_react.default.createElement(_antd.Select, {
|
|
30
|
+
value: value,
|
|
31
|
+
onChange: onChange,
|
|
32
|
+
placeholder: "\u8BF7\u9009\u62E9\u64CD\u4F5C\u7B26",
|
|
33
|
+
disabled: disabled,
|
|
34
|
+
size: size,
|
|
35
|
+
style: {
|
|
36
|
+
width: '100%'
|
|
37
|
+
},
|
|
38
|
+
options: availableOperators.map(function (operator) {
|
|
39
|
+
var info = (0, _operators.getOperatorInfo)(operator);
|
|
40
|
+
return {
|
|
41
|
+
value: operator,
|
|
42
|
+
label: /*#__PURE__*/_react.default.createElement("span", null, info.label, " ", /*#__PURE__*/_react.default.createElement("span", {
|
|
43
|
+
style: {
|
|
44
|
+
color: '#999'
|
|
45
|
+
}
|
|
46
|
+
}, "(", info.symbol, ")")),
|
|
47
|
+
title: info.description // 鼠标悬停时显示操作符说明
|
|
48
|
+
};
|
|
49
|
+
})
|
|
50
|
+
});
|
|
51
|
+
};
|