@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.
Files changed (81) hide show
  1. package/dist/cjs/RuleBuilder/LogicSelector.d.ts +23 -0
  2. package/dist/cjs/RuleBuilder/LogicSelector.js +54 -0
  3. package/dist/cjs/RuleBuilder/RuleBuilderContainer.d.ts +20 -0
  4. package/dist/cjs/RuleBuilder/RuleBuilderContainer.js +209 -0
  5. package/dist/cjs/RuleBuilder/RuleCard.d.ts +20 -0
  6. package/dist/cjs/RuleBuilder/RuleCard.js +196 -0
  7. package/dist/cjs/RuleBuilder/RuleGroupEditor.d.ts +25 -0
  8. package/dist/cjs/RuleBuilder/RuleGroupEditor.js +191 -0
  9. package/dist/cjs/RuleBuilder/constants/operators.d.ts +47 -0
  10. package/dist/cjs/RuleBuilder/constants/operators.js +172 -0
  11. package/dist/cjs/RuleBuilder/context/RuleBuilderContext.d.ts +72 -0
  12. package/dist/cjs/RuleBuilder/context/RuleBuilderContext.js +286 -0
  13. package/dist/cjs/RuleBuilder/index.d.ts +25 -0
  14. package/dist/cjs/RuleBuilder/index.js +308 -0
  15. package/dist/cjs/RuleBuilder/inputs/BetweenValueInput.d.ts +23 -0
  16. package/dist/cjs/RuleBuilder/inputs/BetweenValueInput.js +80 -0
  17. package/dist/cjs/RuleBuilder/inputs/MultiValueInput.d.ts +21 -0
  18. package/dist/cjs/RuleBuilder/inputs/MultiValueInput.js +128 -0
  19. package/dist/cjs/RuleBuilder/inputs/SingleValueInput.d.ts +25 -0
  20. package/dist/cjs/RuleBuilder/inputs/SingleValueInput.js +81 -0
  21. package/dist/cjs/RuleBuilder/inputs/ValueInput.d.ts +29 -0
  22. package/dist/cjs/RuleBuilder/inputs/ValueInput.js +80 -0
  23. package/dist/cjs/RuleBuilder/selectors/FieldSelector.d.ts +22 -0
  24. package/dist/cjs/RuleBuilder/selectors/FieldSelector.js +45 -0
  25. package/dist/cjs/RuleBuilder/selectors/OperatorSelector.d.ts +22 -0
  26. package/dist/cjs/RuleBuilder/selectors/OperatorSelector.js +51 -0
  27. package/dist/cjs/RuleBuilder/styles/index.module.less +443 -0
  28. package/dist/cjs/RuleBuilder/styles/index.module.less.d.ts +43 -0
  29. package/dist/cjs/RuleBuilder/types/index.d.ts +232 -0
  30. package/dist/cjs/RuleBuilder/types/index.js +83 -0
  31. package/dist/cjs/RuleBuilder/utils/pathHelpers.d.ts +65 -0
  32. package/dist/cjs/RuleBuilder/utils/pathHelpers.js +241 -0
  33. package/dist/cjs/RuleBuilder/utils/ruleHelpers.d.ts +47 -0
  34. package/dist/cjs/RuleBuilder/utils/ruleHelpers.js +154 -0
  35. package/dist/cjs/RuleBuilder/utils/validation.d.ts +25 -0
  36. package/dist/cjs/RuleBuilder/utils/validation.js +241 -0
  37. package/dist/cjs/index.d.ts +3 -1
  38. package/dist/cjs/index.js +7 -0
  39. package/dist/cjs/standardFormDialog/StandardFormDialog.js +26 -5
  40. package/dist/esm/RuleBuilder/LogicSelector.d.ts +23 -0
  41. package/dist/esm/RuleBuilder/LogicSelector.js +47 -0
  42. package/dist/esm/RuleBuilder/RuleBuilderContainer.d.ts +20 -0
  43. package/dist/esm/RuleBuilder/RuleBuilderContainer.js +203 -0
  44. package/dist/esm/RuleBuilder/RuleCard.d.ts +20 -0
  45. package/dist/esm/RuleBuilder/RuleCard.js +191 -0
  46. package/dist/esm/RuleBuilder/RuleGroupEditor.d.ts +25 -0
  47. package/dist/esm/RuleBuilder/RuleGroupEditor.js +184 -0
  48. package/dist/esm/RuleBuilder/constants/operators.d.ts +47 -0
  49. package/dist/esm/RuleBuilder/constants/operators.js +169 -0
  50. package/dist/esm/RuleBuilder/context/RuleBuilderContext.d.ts +72 -0
  51. package/dist/esm/RuleBuilder/context/RuleBuilderContext.js +271 -0
  52. package/dist/esm/RuleBuilder/index.d.ts +25 -0
  53. package/dist/esm/RuleBuilder/index.js +42 -0
  54. package/dist/esm/RuleBuilder/inputs/BetweenValueInput.d.ts +23 -0
  55. package/dist/esm/RuleBuilder/inputs/BetweenValueInput.js +73 -0
  56. package/dist/esm/RuleBuilder/inputs/MultiValueInput.d.ts +21 -0
  57. package/dist/esm/RuleBuilder/inputs/MultiValueInput.js +121 -0
  58. package/dist/esm/RuleBuilder/inputs/SingleValueInput.d.ts +25 -0
  59. package/dist/esm/RuleBuilder/inputs/SingleValueInput.js +74 -0
  60. package/dist/esm/RuleBuilder/inputs/ValueInput.d.ts +29 -0
  61. package/dist/esm/RuleBuilder/inputs/ValueInput.js +73 -0
  62. package/dist/esm/RuleBuilder/selectors/FieldSelector.d.ts +22 -0
  63. package/dist/esm/RuleBuilder/selectors/FieldSelector.js +38 -0
  64. package/dist/esm/RuleBuilder/selectors/OperatorSelector.d.ts +22 -0
  65. package/dist/esm/RuleBuilder/selectors/OperatorSelector.js +44 -0
  66. package/dist/esm/RuleBuilder/styles/index.module.less +443 -0
  67. package/dist/esm/RuleBuilder/styles/index.module.less.d.ts +43 -0
  68. package/dist/esm/RuleBuilder/types/index.d.ts +232 -0
  69. package/dist/esm/RuleBuilder/types/index.js +91 -0
  70. package/dist/esm/RuleBuilder/utils/pathHelpers.d.ts +65 -0
  71. package/dist/esm/RuleBuilder/utils/pathHelpers.js +228 -0
  72. package/dist/esm/RuleBuilder/utils/ruleHelpers.d.ts +47 -0
  73. package/dist/esm/RuleBuilder/utils/ruleHelpers.js +145 -0
  74. package/dist/esm/RuleBuilder/utils/validation.d.ts +25 -0
  75. package/dist/esm/RuleBuilder/utils/validation.js +236 -0
  76. package/dist/esm/index.d.ts +3 -1
  77. package/dist/esm/index.js +2 -1
  78. package/dist/esm/standardFormDialog/StandardFormDialog.js +26 -5
  79. package/dist/umd/qc-ui.min.css +1 -1
  80. package/dist/umd/qc-ui.min.js +1 -1
  81. package/package.json +1 -1
@@ -0,0 +1,74 @@
1
+ /**
2
+ * 单值输入组件
3
+ *
4
+ * 根据字段数据类型渲染对应的输入控件:
5
+ * - string: Input
6
+ * - number: InputNumber
7
+ * - date: DatePicker
8
+ * - boolean: Switch
9
+ */
10
+
11
+ import React from 'react';
12
+ import { Input, InputNumber, DatePicker, Switch } from 'antd';
13
+ import dayjs from 'dayjs';
14
+ export var SingleValueInput = function SingleValueInput(_ref) {
15
+ var value = _ref.value,
16
+ _onChange = _ref.onChange,
17
+ dataType = _ref.dataType,
18
+ _ref$disabled = _ref.disabled,
19
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
20
+ _ref$size = _ref.size,
21
+ size = _ref$size === void 0 ? 'middle' : _ref$size;
22
+ // 根据数据类型渲染不同的输入组件
23
+ switch (dataType) {
24
+ case 'string':
25
+ return /*#__PURE__*/React.createElement(Input, {
26
+ value: value,
27
+ onChange: function onChange(e) {
28
+ return _onChange(e.target.value);
29
+ },
30
+ disabled: disabled,
31
+ size: size,
32
+ placeholder: "\u8BF7\u8F93\u5165\u503C",
33
+ style: {
34
+ width: 200
35
+ }
36
+ });
37
+ case 'number':
38
+ return /*#__PURE__*/React.createElement(InputNumber, {
39
+ value: value,
40
+ onChange: _onChange,
41
+ disabled: disabled,
42
+ size: size,
43
+ placeholder: "\u8BF7\u8F93\u5165\u6570\u503C",
44
+ style: {
45
+ width: 200
46
+ }
47
+ });
48
+ case 'date':
49
+ return /*#__PURE__*/React.createElement(DatePicker, {
50
+ value: value ? dayjs(value) : null,
51
+ onChange: function onChange(date) {
52
+ return _onChange(date === null || date === void 0 ? void 0 : date.format('YYYY-MM-DD'));
53
+ },
54
+ disabled: disabled,
55
+ size: size,
56
+ placeholder: "\u8BF7\u9009\u62E9\u65E5\u671F",
57
+ style: {
58
+ width: 200
59
+ }
60
+ });
61
+ case 'boolean':
62
+ return /*#__PURE__*/React.createElement(Switch, {
63
+ checked: value,
64
+ onChange: _onChange,
65
+ disabled: disabled,
66
+ size: size === 'small' ? 'small' : 'default',
67
+ checkedChildren: "\u662F",
68
+ unCheckedChildren: "\u5426"
69
+ });
70
+ default:
71
+ return null;
72
+ }
73
+ };
74
+ export 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,73 @@
1
+ /**
2
+ * 值输入分发组件
3
+ *
4
+ * 根据操作符类型自动选择合适的输入组件:
5
+ * - IsNull/IsNotNull: 不渲染任何输入
6
+ * - Between: 渲染 BetweenValueInput
7
+ * - In/NotIn: 渲染 MultiValueInput
8
+ * - 其他: 渲染 SingleValueInput
9
+ */
10
+
11
+ import React from 'react';
12
+ import { operatorRequiresValue, operatorRequiresValue2, operatorRequiresMultiValue } from "../constants/operators";
13
+ import SingleValueInput from "./SingleValueInput";
14
+ import BetweenValueInput from "./BetweenValueInput";
15
+ import MultiValueInput from "./MultiValueInput";
16
+ export var ValueInput = function ValueInput(_ref) {
17
+ var operator = _ref.operator,
18
+ dataType = _ref.dataType,
19
+ value = _ref.value,
20
+ value2 = _ref.value2,
21
+ _onChange = _ref.onChange,
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
+ // 不需要值输入的操作符(IsNull/IsNotNull)
27
+ if (!operatorRequiresValue(operator) && !operatorRequiresValue2(operator) && !operatorRequiresMultiValue(operator)) {
28
+ return null;
29
+ }
30
+
31
+ // Between 操作符:渲染区间输入
32
+ if (operatorRequiresValue2(operator)) {
33
+ if (dataType !== 'number' && dataType !== 'date') {
34
+ return null; // Between 只支持数值和日期
35
+ }
36
+ return /*#__PURE__*/React.createElement(BetweenValueInput, {
37
+ value: value,
38
+ value2: value2,
39
+ onChange: _onChange,
40
+ dataType: dataType,
41
+ disabled: disabled,
42
+ size: size
43
+ });
44
+ }
45
+
46
+ // In/NotIn 操作符:渲染多值输入
47
+ if (operatorRequiresMultiValue(operator)) {
48
+ if (dataType !== 'string' && dataType !== 'number') {
49
+ return null; // In/NotIn 只支持字符串和数值
50
+ }
51
+ return /*#__PURE__*/React.createElement(MultiValueInput, {
52
+ values: Array.isArray(value) ? value : [],
53
+ onChange: function onChange(values) {
54
+ return _onChange(values);
55
+ },
56
+ dataType: dataType,
57
+ disabled: disabled,
58
+ size: size
59
+ });
60
+ }
61
+
62
+ // 其他操作符:渲染单值输入
63
+ return /*#__PURE__*/React.createElement(SingleValueInput, {
64
+ value: value,
65
+ onChange: function onChange(val) {
66
+ return _onChange(val);
67
+ },
68
+ dataType: dataType,
69
+ disabled: disabled,
70
+ size: size
71
+ });
72
+ };
73
+ export 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,38 @@
1
+ /**
2
+ * 字段选择器组件
3
+ * 用于选择规则匹配的字段
4
+ */
5
+
6
+ import React from 'react';
7
+ import { Select } from 'antd';
8
+ /**
9
+ * 字段选择器
10
+ */
11
+ export var FieldSelector = function FieldSelector(_ref) {
12
+ var value = _ref.value,
13
+ onChange = _ref.onChange,
14
+ fields = _ref.fields,
15
+ _ref$disabled = _ref.disabled,
16
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
17
+ _ref$size = _ref.size,
18
+ size = _ref$size === void 0 ? 'middle' : _ref$size;
19
+ return /*#__PURE__*/React.createElement(Select, {
20
+ value: value,
21
+ onChange: onChange,
22
+ placeholder: "\u8BF7\u9009\u62E9\u5B57\u6BB5",
23
+ disabled: disabled,
24
+ size: size,
25
+ showSearch: true,
26
+ optionFilterProp: "label",
27
+ style: {
28
+ width: '100%'
29
+ },
30
+ options: fields.map(function (field) {
31
+ return {
32
+ value: field.name,
33
+ label: field.displayName,
34
+ title: field.description // 鼠标悬停时显示字段说明
35
+ };
36
+ })
37
+ });
38
+ };
@@ -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,44 @@
1
+ /**
2
+ * 操作符选择器组件
3
+ * 根据字段数据类型动态显示可用的操作符
4
+ */
5
+
6
+ import React from 'react';
7
+ import { Select } from 'antd';
8
+ import { getOperatorsByDataType, getOperatorInfo, OPERATOR_INFO_MAP } from "../constants/operators";
9
+ /**
10
+ * 操作符选择器
11
+ */
12
+ export var OperatorSelector = function OperatorSelector(_ref) {
13
+ var value = _ref.value,
14
+ onChange = _ref.onChange,
15
+ dataType = _ref.dataType,
16
+ _ref$disabled = _ref.disabled,
17
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
18
+ _ref$size = _ref.size,
19
+ size = _ref$size === void 0 ? 'middle' : _ref$size;
20
+ // 根据数据类型获取可用操作符
21
+ var availableOperators = dataType ? getOperatorsByDataType(dataType) : Object.keys(OPERATOR_INFO_MAP).map(Number);
22
+ return /*#__PURE__*/React.createElement(Select, {
23
+ value: value,
24
+ onChange: onChange,
25
+ placeholder: "\u8BF7\u9009\u62E9\u64CD\u4F5C\u7B26",
26
+ disabled: disabled,
27
+ size: size,
28
+ style: {
29
+ width: '100%'
30
+ },
31
+ options: availableOperators.map(function (operator) {
32
+ var info = getOperatorInfo(operator);
33
+ return {
34
+ value: operator,
35
+ label: /*#__PURE__*/React.createElement("span", null, info.label, " ", /*#__PURE__*/React.createElement("span", {
36
+ style: {
37
+ color: '#999'
38
+ }
39
+ }, "(", info.symbol, ")")),
40
+ title: info.description // 鼠标悬停时显示操作符说明
41
+ };
42
+ })
43
+ });
44
+ };