amis 1.6.2 → 1.6.3

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 (239) hide show
  1. package/lib/Schema.d.ts +3 -2
  2. package/lib/Schema.js.map +1 -1
  3. package/lib/components/CalendarMobile.d.ts +84 -84
  4. package/lib/components/Card.d.ts +20 -20
  5. package/lib/components/Collapse.js +3 -2
  6. package/lib/components/Collapse.js.map +2 -2
  7. package/lib/components/ColorPicker.d.ts +84 -84
  8. package/lib/components/ColorPicker.js +1 -1
  9. package/lib/components/ColorPicker.js.map +2 -2
  10. package/lib/components/DatePicker.d.ts +84 -84
  11. package/lib/components/DatePicker.js +1 -1
  12. package/lib/components/DatePicker.js.map +2 -2
  13. package/lib/components/DateRangePicker.d.ts +84 -84
  14. package/lib/components/DateRangePicker.js +2 -2
  15. package/lib/components/DateRangePicker.js.map +2 -2
  16. package/lib/components/Editor.d.ts +84 -84
  17. package/lib/components/ListGroup.d.ts +21 -21
  18. package/lib/components/LocationPicker.d.ts +84 -84
  19. package/lib/components/LocationPicker.js +1 -1
  20. package/lib/components/LocationPicker.js.map +2 -2
  21. package/lib/components/MonthRangePicker.d.ts +84 -84
  22. package/lib/components/PickerContainer.d.ts +1 -0
  23. package/lib/components/PickerContainer.js +2 -2
  24. package/lib/components/PickerContainer.js.map +2 -2
  25. package/lib/components/ResultBox.js +1 -1
  26. package/lib/components/ResultBox.js.map +2 -2
  27. package/lib/components/Select.d.ts +237 -237
  28. package/lib/components/Tabs.d.ts +3 -2
  29. package/lib/components/Tabs.js.map +2 -2
  30. package/lib/components/calendar/Calendar.js +1 -2
  31. package/lib/components/calendar/Calendar.js.map +2 -2
  32. package/lib/components/condition-builder/Expression.d.ts +2 -0
  33. package/lib/components/condition-builder/Expression.js +2 -2
  34. package/lib/components/condition-builder/Expression.js.map +2 -2
  35. package/lib/components/condition-builder/Group.d.ts +3 -0
  36. package/lib/components/condition-builder/Group.js +3 -3
  37. package/lib/components/condition-builder/Group.js.map +2 -2
  38. package/lib/components/condition-builder/GroupOrItem.d.ts +2 -0
  39. package/lib/components/condition-builder/GroupOrItem.js +2 -2
  40. package/lib/components/condition-builder/GroupOrItem.js.map +2 -2
  41. package/lib/components/condition-builder/Item.d.ts +2 -0
  42. package/lib/components/condition-builder/Item.js +4 -4
  43. package/lib/components/condition-builder/Item.js.map +2 -2
  44. package/lib/components/condition-builder/Value.d.ts +2 -0
  45. package/lib/components/condition-builder/Value.js +15 -2
  46. package/lib/components/condition-builder/Value.js.map +2 -2
  47. package/lib/components/condition-builder/index.d.ts +3 -0
  48. package/lib/components/condition-builder/index.js +2 -2
  49. package/lib/components/condition-builder/index.js.map +2 -2
  50. package/lib/components/formula/Editor.d.ts +88 -84
  51. package/lib/components/formula/Editor.js +22 -25
  52. package/lib/components/formula/Editor.js.map +2 -2
  53. package/lib/components/formula/FuncList.d.ts +3 -0
  54. package/lib/components/formula/FuncList.js +19 -9
  55. package/lib/components/formula/FuncList.js.map +2 -2
  56. package/lib/components/formula/Picker.d.ts +44 -0
  57. package/lib/components/formula/Picker.js +33 -8
  58. package/lib/components/formula/Picker.js.map +2 -2
  59. package/lib/components/formula/VariableList.d.ts +8 -1
  60. package/lib/components/formula/VariableList.js +13 -4
  61. package/lib/components/formula/VariableList.js.map +2 -2
  62. package/lib/components/icons.d.ts +3 -1
  63. package/lib/components/icons.js +7 -1
  64. package/lib/components/icons.js.map +2 -2
  65. package/lib/env.d.ts +4 -0
  66. package/lib/env.js.map +2 -2
  67. package/lib/factory.d.ts +4 -0
  68. package/lib/factory.js +5 -1
  69. package/lib/factory.js.map +2 -2
  70. package/lib/helper.css.map +1 -1
  71. package/lib/icons/function.js +7 -0
  72. package/lib/icons/input-clear.js +7 -0
  73. package/lib/index.d.ts +1 -0
  74. package/lib/index.js +2 -1
  75. package/lib/index.js.map +2 -2
  76. package/lib/locale/de-DE.js +8 -1
  77. package/lib/locale/de-DE.js.map +2 -2
  78. package/lib/locale/en-US.js +5 -1
  79. package/lib/locale/en-US.js.map +2 -2
  80. package/lib/locale/zh-CN.js +8 -1
  81. package/lib/locale/zh-CN.js.map +2 -2
  82. package/lib/renderers/Breadcrumb.js.map +2 -2
  83. package/lib/renderers/CRUD.js +4 -3
  84. package/lib/renderers/CRUD.js.map +2 -2
  85. package/lib/renderers/Calendar.d.ts +45 -0
  86. package/lib/renderers/Calendar.js +21 -0
  87. package/lib/renderers/Calendar.js.map +13 -0
  88. package/lib/renderers/Card.js +2 -2
  89. package/lib/renderers/Card.js.map +2 -2
  90. package/lib/renderers/Form/ConditionBuilder.d.ts +8 -0
  91. package/lib/renderers/Form/ConditionBuilder.js.map +2 -2
  92. package/lib/renderers/Form/IconPicker.d.ts +2 -0
  93. package/lib/renderers/Form/IconPicker.js +22 -2
  94. package/lib/renderers/Form/IconPicker.js.map +2 -2
  95. package/lib/renderers/Form/InputCity.d.ts +84 -84
  96. package/lib/renderers/Form/InputColor.d.ts +84 -84
  97. package/lib/renderers/Form/InputColor.js +1 -1
  98. package/lib/renderers/Form/InputColor.js.map +2 -2
  99. package/lib/renderers/Form/InputDate.d.ts +0 -18
  100. package/lib/renderers/Form/InputDate.js +1 -1
  101. package/lib/renderers/Form/InputDate.js.map +2 -2
  102. package/lib/renderers/Form/InputDateRange.js +1 -1
  103. package/lib/renderers/Form/InputDateRange.js.map +2 -2
  104. package/lib/renderers/Form/InputFormula.d.ts +42 -0
  105. package/lib/renderers/Form/InputFormula.js +6 -2
  106. package/lib/renderers/Form/InputFormula.js.map +2 -2
  107. package/lib/renderers/Form/InputText.d.ts +5 -0
  108. package/lib/renderers/Form/InputText.js +22 -4
  109. package/lib/renderers/Form/InputText.js.map +2 -2
  110. package/lib/renderers/Form/Picker.js +1 -1
  111. package/lib/renderers/Form/Picker.js.map +2 -2
  112. package/lib/renderers/Form/Textarea.d.ts +12 -0
  113. package/lib/renderers/Form/Textarea.js +31 -15
  114. package/lib/renderers/Form/Textarea.js.map +2 -2
  115. package/lib/renderers/Form/Transfer.d.ts +1 -1
  116. package/lib/renderers/Form/Transfer.js +7 -1
  117. package/lib/renderers/Form/Transfer.js.map +2 -2
  118. package/lib/renderers/Form/index.js +4 -0
  119. package/lib/renderers/Form/index.js.map +2 -2
  120. package/lib/renderers/IFrame.js +8 -3
  121. package/lib/renderers/IFrame.js.map +2 -2
  122. package/lib/renderers/Tpl.js +1 -1
  123. package/lib/renderers/Tpl.js.map +2 -2
  124. package/lib/schemaExtend.js +11 -8
  125. package/lib/schemaExtend.js.map +2 -2
  126. package/lib/themes/ang-ie11.css +427 -141
  127. package/lib/themes/ang.css +427 -141
  128. package/lib/themes/ang.css.map +1 -1
  129. package/lib/themes/antd-ie11.css +427 -141
  130. package/lib/themes/antd.css +427 -141
  131. package/lib/themes/antd.css.map +1 -1
  132. package/lib/themes/cxd-ie11.css +432 -152
  133. package/lib/themes/cxd.css +432 -152
  134. package/lib/themes/cxd.css.map +1 -1
  135. package/lib/themes/dark-ie11.css +427 -141
  136. package/lib/themes/dark.css +427 -141
  137. package/lib/themes/dark.css.map +1 -1
  138. package/lib/themes/default.css +432 -152
  139. package/lib/themes/default.css.map +1 -1
  140. package/lib/utils/api.js +22 -9
  141. package/lib/utils/api.js.map +2 -2
  142. package/lib/utils/helper.d.ts +1 -0
  143. package/lib/utils/helper.js +10 -1
  144. package/lib/utils/helper.js.map +2 -2
  145. package/package.json +2 -2
  146. package/schema.json +201 -66
  147. package/scss/_mixins.scss +10 -5
  148. package/scss/_properties.scss +11 -0
  149. package/scss/components/_collapse-group.scss +4 -0
  150. package/scss/components/_condition-builder.scss +8 -1
  151. package/scss/components/_formula.scss +247 -74
  152. package/scss/components/_result-box.scss +0 -13
  153. package/scss/components/form/_color.scss +0 -2
  154. package/scss/components/form/_date-range.scss +14 -7
  155. package/scss/components/form/_date.scss +14 -7
  156. package/scss/components/form/_form.scss +1 -0
  157. package/scss/components/form/_icon-picker.scss +2 -0
  158. package/scss/components/form/_location.scss +0 -1
  159. package/scss/components/form/_picker.scss +0 -1
  160. package/scss/components/form/_text.scss +6 -7
  161. package/scss/components/form/_textarea.scss +16 -0
  162. package/scss/components/form/_transfer.scss +2 -1
  163. package/scss/themes/_cxd-variables.scss +5 -3
  164. package/scss/themes/cxd.scss +0 -13
  165. package/sdk/ang-ie11.css +467 -126
  166. package/sdk/ang.css +486 -141
  167. package/sdk/antd-ie11.css +467 -126
  168. package/sdk/antd.css +486 -141
  169. package/sdk/charts.js +17 -17
  170. package/sdk/codemirror.js +7 -7
  171. package/sdk/color-picker.js +65 -69
  172. package/sdk/cropperjs.js +3 -3
  173. package/sdk/cxd-ie11.css +474 -142
  174. package/sdk/cxd.css +491 -153
  175. package/sdk/dark-ie11.css +467 -126
  176. package/sdk/dark.css +486 -141
  177. package/sdk/exceljs.js +1 -1
  178. package/sdk/helper.css.map +1 -1
  179. package/sdk/locale/de-DE.js +8 -1
  180. package/sdk/markdown.js +69 -69
  181. package/sdk/papaparse.js +1 -1
  182. package/sdk/renderers/Form/CityDB.js +1 -1
  183. package/sdk/rest.js +20 -16
  184. package/sdk/rich-text.js +62 -62
  185. package/sdk/sdk-ie11.css +474 -142
  186. package/sdk/sdk.css +491 -153
  187. package/sdk/sdk.js +1351 -1273
  188. package/sdk/thirds/hls.js/hls.js +18 -18
  189. package/sdk/thirds/mpegts.js/mpegts.js +2 -2
  190. package/sdk/tinymce.js +57 -57
  191. package/src/Schema.ts +3 -0
  192. package/src/components/Collapse.tsx +4 -1
  193. package/src/components/ColorPicker.tsx +1 -1
  194. package/src/components/DatePicker.tsx +1 -1
  195. package/src/components/DateRangePicker.tsx +2 -2
  196. package/src/components/LocationPicker.tsx +1 -1
  197. package/src/components/PickerContainer.tsx +3 -1
  198. package/src/components/ResultBox.tsx +1 -1
  199. package/src/components/Tabs.tsx +4 -2
  200. package/src/components/calendar/Calendar.tsx +1 -2
  201. package/src/components/condition-builder/Expression.tsx +5 -2
  202. package/src/components/condition-builder/Group.tsx +8 -2
  203. package/src/components/condition-builder/GroupOrItem.tsx +5 -1
  204. package/src/components/condition-builder/Item.tsx +7 -1
  205. package/src/components/condition-builder/Value.tsx +17 -4
  206. package/src/components/condition-builder/index.tsx +8 -1
  207. package/src/components/formula/Editor.tsx +43 -23
  208. package/src/components/formula/FuncList.tsx +74 -44
  209. package/src/components/formula/Picker.tsx +161 -23
  210. package/src/components/formula/VariableList.tsx +54 -9
  211. package/src/components/icons.tsx +7 -1
  212. package/src/env.tsx +5 -0
  213. package/src/factory.tsx +9 -1
  214. package/src/icons/function.svg +4 -0
  215. package/src/icons/input-clear.svg +1 -0
  216. package/src/index.tsx +1 -0
  217. package/src/locale/de-DE.ts +8 -1
  218. package/src/locale/en-US.ts +5 -1
  219. package/src/locale/zh-CN.ts +8 -1
  220. package/src/renderers/Breadcrumb.tsx +0 -1
  221. package/src/renderers/CRUD.tsx +6 -3
  222. package/src/renderers/Calendar.tsx +43 -0
  223. package/src/renderers/Card.tsx +12 -2
  224. package/src/renderers/Form/ConditionBuilder.tsx +11 -0
  225. package/src/renderers/Form/IconPicker.tsx +29 -0
  226. package/src/renderers/Form/InputColor.tsx +1 -1
  227. package/src/renderers/Form/InputDate.tsx +1 -21
  228. package/src/renderers/Form/InputDateRange.tsx +1 -1
  229. package/src/renderers/Form/InputFormula.tsx +103 -3
  230. package/src/renderers/Form/InputText.tsx +30 -5
  231. package/src/renderers/Form/Picker.tsx +1 -1
  232. package/src/renderers/Form/Textarea.tsx +46 -22
  233. package/src/renderers/Form/Transfer.tsx +6 -1
  234. package/src/renderers/Form/index.tsx +16 -1
  235. package/src/renderers/IFrame.tsx +8 -10
  236. package/src/renderers/Tpl.tsx +3 -1
  237. package/src/schemaExtend.ts +11 -7
  238. package/src/utils/api.ts +25 -10
  239. package/src/utils/helper.ts +11 -1
@@ -7,13 +7,13 @@ var tslib_1 = require("tslib");
7
7
  */
8
8
  var react_1 = (0, tslib_1.__importDefault)(require("react"));
9
9
  var uncontrollable_1 = require("uncontrollable");
10
- var plugin_1 = require("./plugin");
10
+ var amis_formula_1 = require("amis-formula");
11
11
  var doc_1 = require("amis-formula/dist/doc");
12
+ var plugin_1 = require("./plugin");
12
13
  var FuncList_1 = (0, tslib_1.__importDefault)(require("./FuncList"));
13
14
  var VariableList_1 = require("./VariableList");
14
- var amis_formula_1 = require("amis-formula");
15
- var helper_1 = require("../../utils/helper");
16
15
  var CodeMirror_1 = (0, tslib_1.__importDefault)(require("../CodeMirror"));
16
+ var helper_1 = require("../../utils/helper");
17
17
  var theme_1 = require("../../theme");
18
18
  var locale_1 = require("../../locale");
19
19
  var FormulaEditor = /** @class */ (function (_super) {
@@ -46,8 +46,8 @@ var FormulaEditor = /** @class */ (function (_super) {
46
46
  return value;
47
47
  };
48
48
  FormulaEditor.prototype.componentWillUnmount = function () {
49
- var _b;
50
- (_b = this.editorPlugin) === null || _b === void 0 ? void 0 : _b.dispose();
49
+ var _a;
50
+ (_a = this.editorPlugin) === null || _a === void 0 ? void 0 : _a.dispose();
51
51
  };
52
52
  FormulaEditor.prototype.handleFocus = function () {
53
53
  this.setState({
@@ -60,8 +60,8 @@ var FormulaEditor = /** @class */ (function (_super) {
60
60
  });
61
61
  };
62
62
  FormulaEditor.prototype.insertValue = function (value, type) {
63
- var _b;
64
- (_b = this.editorPlugin) === null || _b === void 0 ? void 0 : _b.insertContent(value, type);
63
+ var _a;
64
+ (_a = this.editorPlugin) === null || _a === void 0 ? void 0 : _a.insertContent(value, type);
65
65
  };
66
66
  FormulaEditor.prototype.handleEditorMounted = function (cm, editor) {
67
67
  var _this = this;
@@ -82,12 +82,12 @@ var FormulaEditor = /** @class */ (function (_super) {
82
82
  return;
83
83
  };
84
84
  FormulaEditor.prototype.handleFunctionSelect = function (item) {
85
- var _b;
86
- (_b = this.editorPlugin) === null || _b === void 0 ? void 0 : _b.insertContent("" + item.name, 'func');
85
+ var _a;
86
+ (_a = this.editorPlugin) === null || _a === void 0 ? void 0 : _a.insertContent("" + item.name, 'func');
87
87
  };
88
88
  FormulaEditor.prototype.handleVariableSelect = function (item) {
89
- var _b;
90
- (_b = this.editorPlugin) === null || _b === void 0 ? void 0 : _b.insertContent({
89
+ var _a;
90
+ (_a = this.editorPlugin) === null || _a === void 0 ? void 0 : _a.insertContent({
91
91
  key: item.value,
92
92
  name: item.label
93
93
  }, 'variable');
@@ -100,27 +100,24 @@ var FormulaEditor = /** @class */ (function (_super) {
100
100
  return (0, plugin_1.editorFactory)(dom, cm, this.props);
101
101
  };
102
102
  FormulaEditor.prototype.render = function () {
103
- var _b = this.props, variables = _b.variables, header = _b.header, value = _b.value, functions = _b.functions, variableMode = _b.variableMode, cx = _b.classnames;
103
+ var _a = this.props, variables = _a.variables, header = _a.header, value = _a.value, functions = _a.functions, variableMode = _a.variableMode, __ = _a.translate, cx = _a.classnames, variableClassName = _a.variableClassName, functionClassName = _a.functionClassName, classPrefix = _a.classPrefix;
104
104
  var focused = this.state.focused;
105
105
  return (react_1.default.createElement("div", { className: cx("FormulaEditor", {
106
106
  'is-focused': focused
107
107
  }) },
108
- react_1.default.createElement("div", { className: cx("FormulaEditor-content") },
109
- react_1.default.createElement("div", { className: cx("FormulaEditor-header") }, header !== null && header !== void 0 ? header : '表达式'),
108
+ react_1.default.createElement("section", { className: cx("FormulaEditor-content") },
109
+ react_1.default.createElement("header", { className: cx("FormulaEditor-header") }, __(header || 'FormulaEditor.title')),
110
110
  react_1.default.createElement(CodeMirror_1.default, { className: cx('FormulaEditor-editor'), value: value, onChange: this.handleOnChange, editorFactory: this.editorFactory, editorDidMount: this.handleEditorMounted, onFocus: this.handleFocus, onBlur: this.handleBlur })),
111
- react_1.default.createElement("div", { className: cx('FormulaEditor-settings') },
112
- Array.isArray(functions) && functions.length ? (react_1.default.createElement("div", null,
113
- react_1.default.createElement("h3", null, "\u53D8\u91CF"),
114
- react_1.default.createElement(VariableList_1.VariableList, { className: cx('VariableList'), selectMode: variableMode, data: variables, onSelect: this.handleVariableSelect }))) : null,
115
- Array.isArray(variables) && variables.length ? (react_1.default.createElement("div", null,
116
- react_1.default.createElement("h3", null, "\u51FD\u6570"),
117
- react_1.default.createElement(FuncList_1.default, { data: functions, onSelect: this.handleFunctionSelect }))) : null)));
111
+ react_1.default.createElement("section", { className: cx('FormulaEditor-settings') },
112
+ react_1.default.createElement("div", { className: cx('FormulaEditor-panel') },
113
+ react_1.default.createElement("div", { className: cx('FormulaEditor-panel-header') }, __('FormulaEditor.variable')),
114
+ react_1.default.createElement("div", { className: cx('FormulaEditor-panel-body') },
115
+ react_1.default.createElement(VariableList_1.VariableList, { classPrefix: classPrefix, className: cx('FormulaEditor-VariableList', 'FormulaEditor-VariableList-root', variableClassName), selectMode: variableMode, data: variables, onSelect: this.handleVariableSelect }))),
116
+ react_1.default.createElement(FuncList_1.default, { className: functionClassName, title: __('FormulaEditor.function'), data: functions, onSelect: this.handleFunctionSelect }))));
118
117
  };
119
118
  var _a;
120
- var _b;
121
- _a = FormulaEditor;
122
119
  FormulaEditor.defaultProps = {
123
- functions: _a.buildDefaultFunctions(doc_1.doc),
120
+ functions: FormulaEditor.buildDefaultFunctions(doc_1.doc),
124
121
  variables: [],
125
122
  evalMode: true
126
123
  };
@@ -175,7 +172,7 @@ var FormulaEditor = /** @class */ (function (_super) {
175
172
  (0, tslib_1.__decorate)([
176
173
  helper_1.autobind,
177
174
  (0, tslib_1.__metadata)("design:type", Function),
178
- (0, tslib_1.__metadata)("design:paramtypes", [typeof (_b = typeof HTMLElement !== "undefined" && HTMLElement) === "function" ? _b : Object, Object]),
175
+ (0, tslib_1.__metadata)("design:paramtypes", [typeof (_a = typeof HTMLElement !== "undefined" && HTMLElement) === "function" ? _a : Object, Object]),
179
176
  (0, tslib_1.__metadata)("design:returntype", void 0)
180
177
  ], FormulaEditor.prototype, "editorFactory", null);
181
178
  return FormulaEditor;
@@ -6,8 +6,8 @@
6
6
  "/src/components/formula/Editor.tsx"
7
7
  ],
8
8
  "names": [],
9
- "mappings": "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",
9
+ "mappings": "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",
10
10
  "sourcesContent": [
11
- "/**\n * @file 公式编辑器\n */\nimport React from 'react';\nimport {uncontrollable} from 'uncontrollable';\nimport {FormulaPlugin, editorFactory} from './plugin';\nimport {doc} from 'amis-formula/dist/doc';\nimport FuncList from './FuncList';\nimport {VariableList} from './VariableList';\nimport {parse} from 'amis-formula';\nimport {autobind} from '../../utils/helper';\nimport CodeMirrorEditor from '../CodeMirror';\nimport {themeable, ThemeProps} from '../../theme';\nimport {localeable, LocaleProps} from '../../locale';\n\nexport interface VariableItem {\n label: string;\n value?: string;\n children?: Array<VariableItem>;\n selectMode?: 'tree' | 'tabs';\n}\n\nexport interface FuncGroup {\n groupName: string;\n items: Array<FuncItem>;\n}\n\nexport interface FuncItem {\n name: string;\n [propName: string]: any;\n}\n\nexport interface FormulaEditorProps extends ThemeProps, LocaleProps {\n onChange?: (value: string) => void;\n value: string;\n /**\n * evalMode 即直接就是表达式,否则\n * 需要 ${这里面才是表达式}\n * 默认为 true\n */\n evalMode?: boolean;\n\n /**\n * 用于提示的变量集合,默认为空\n */\n variables: Array<VariableItem>;\n\n /**\n * 变量展现模式,可选值:'tabs' | 'tree'\n */\n variableMode?: 'tabs' | 'tree';\n\n /**\n * 函数集合,默认不需要传,即 amis-formula 里面那个函数\n * 如果有扩充,则需要传。\n */\n functions: Array<FuncGroup>;\n\n /**\n * 顶部标题,默认为表达式\n */\n header: string;\n}\n\nexport interface FunctionsProps {\n name: string;\n items: FunctionProps[];\n}\n\nexport interface FunctionProps {\n name: string;\n intro: string;\n usage: string;\n example: string;\n}\n\nexport interface FormulaState {\n focused: boolean;\n}\n\nexport class FormulaEditor extends React.Component<\n FormulaEditorProps,\n FormulaState\n> {\n state: FormulaState = {\n focused: false\n };\n editorPlugin?: FormulaPlugin;\n\n static buildDefaultFunctions(\n doc: Array<{\n namespace: string;\n name: string;\n [propName: string]: any;\n }>\n ) {\n const funcs: Array<FuncGroup> = [];\n\n doc.forEach(item => {\n const namespace = item.namespace || 'Others';\n let exists = funcs.find(item => item.groupName === namespace);\n if (!exists) {\n exists = {\n groupName: namespace,\n items: []\n };\n funcs.push(exists);\n }\n exists.items.push(item);\n });\n\n return funcs;\n }\n\n static defaultProps: Pick<\n FormulaEditorProps,\n 'functions' | 'variables' | 'evalMode'\n > = {\n functions: this.buildDefaultFunctions(doc),\n variables: [],\n evalMode: true\n };\n\n static highlightValue(\n value: string,\n variables: Array<VariableItem>,\n functions: Array<FuncGroup>\n ) {\n // todo 高亮原始文本\n return value;\n }\n\n componentWillUnmount() {\n this.editorPlugin?.dispose();\n }\n\n @autobind\n handleFocus() {\n this.setState({\n focused: true\n });\n }\n\n @autobind\n handleBlur() {\n this.setState({\n focused: false\n });\n }\n\n @autobind\n insertValue(value: any, type: 'variable' | 'func') {\n this.editorPlugin?.insertContent(value, type);\n }\n\n @autobind\n handleEditorMounted(cm: any, editor: any) {\n this.editorPlugin = new FormulaPlugin(editor, cm, () => this.props);\n }\n\n @autobind\n validate() {\n const value = this.props.value;\n\n try {\n value\n ? parse(value, {\n evalMode: this.props.evalMode\n })\n : null;\n } catch (e) {\n return e.message;\n }\n\n return;\n }\n\n @autobind\n handleFunctionSelect(item: FuncItem) {\n this.editorPlugin?.insertContent(`${item.name}`, 'func');\n }\n\n @autobind\n handleVariableSelect(item: VariableItem) {\n this.editorPlugin?.insertContent(\n {\n key: item.value,\n name: item.label\n },\n 'variable'\n );\n }\n\n @autobind\n handleOnChange(value: any) {\n const onChange = this.props.onChange;\n onChange?.(value);\n }\n\n @autobind\n editorFactory(dom: HTMLElement, cm: any) {\n return editorFactory(dom, cm, this.props);\n }\n\n render() {\n const {\n variables,\n header,\n value,\n functions,\n variableMode,\n classnames: cx\n } = this.props;\n const {focused} = this.state;\n\n return (\n <div\n className={cx(`FormulaEditor`, {\n 'is-focused': focused\n })}\n >\n <div className={cx(`FormulaEditor-content`)}>\n <div className={cx(`FormulaEditor-header`)}>{header ?? '表达式'}</div>\n\n <CodeMirrorEditor\n className={cx('FormulaEditor-editor')}\n value={value}\n onChange={this.handleOnChange}\n editorFactory={this.editorFactory}\n editorDidMount={this.handleEditorMounted}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n ></CodeMirrorEditor>\n </div>\n\n <div className={cx('FormulaEditor-settings')}>\n {Array.isArray(functions) && functions.length ? (\n <div>\n <h3>变量</h3>\n <VariableList\n className={cx('VariableList')}\n selectMode={variableMode}\n data={variables}\n onSelect={this.handleVariableSelect}\n />\n </div>\n ) : null}\n {Array.isArray(variables) && variables.length ? (\n <div>\n <h3>函数</h3>\n <FuncList data={functions} onSelect={this.handleFunctionSelect} />\n </div>\n ) : null}\n </div>\n </div>\n );\n }\n}\n\nexport default uncontrollable(\n themeable(localeable(FormulaEditor)),\n {\n value: 'onChange'\n },\n ['validate']\n);\n"
11
+ "/**\n * @file 公式编辑器\n */\nimport React from 'react';\nimport {uncontrollable} from 'uncontrollable';\nimport {parse} from 'amis-formula';\nimport {doc} from 'amis-formula/dist/doc';\n\nimport {FormulaPlugin, editorFactory} from './plugin';\nimport FuncList from './FuncList';\nimport {VariableList} from './VariableList';\nimport CodeMirrorEditor from '../CodeMirror';\nimport {autobind} from '../../utils/helper';\nimport {themeable, ThemeProps} from '../../theme';\nimport {localeable, LocaleProps} from '../../locale';\n\nexport interface VariableItem {\n label: string;\n value?: string;\n children?: Array<VariableItem>;\n type: '';\n tag?: string;\n selectMode?: 'tree' | 'tabs';\n}\n\nexport interface FuncGroup {\n groupName: string;\n items: Array<FuncItem>;\n}\n\nexport interface FuncItem {\n name: string;\n [propName: string]: any;\n}\n\nexport interface FormulaEditorProps extends ThemeProps, LocaleProps {\n onChange?: (value: string) => void;\n value: string;\n /**\n * evalMode 即直接就是表达式,否则\n * 需要 ${这里面才是表达式}\n * 默认为 true\n */\n evalMode?: boolean;\n\n /**\n * 用于提示的变量集合,默认为空\n */\n variables: Array<VariableItem>;\n\n /**\n * 变量展现模式,可选值:'tabs' | 'tree'\n */\n variableMode?: 'tabs' | 'tree';\n\n /**\n * 函数集合,默认不需要传,即 amis-formula 里面那个函数\n * 如果有扩充,则需要传。\n */\n functions: Array<FuncGroup>;\n\n /**\n * 顶部标题,默认为表达式\n */\n header: string;\n\n variableClassName?: string;\n\n functionClassName?: string;\n}\n\nexport interface FunctionsProps {\n name: string;\n items: FunctionProps[];\n}\n\nexport interface FunctionProps {\n name: string;\n intro: string;\n usage: string;\n example: string;\n}\n\nexport interface FormulaState {\n focused: boolean;\n}\n\nexport class FormulaEditor extends React.Component<\n FormulaEditorProps,\n FormulaState\n> {\n state: FormulaState = {\n focused: false\n };\n editorPlugin?: FormulaPlugin;\n\n static buildDefaultFunctions(\n doc: Array<{\n namespace: string;\n name: string;\n [propName: string]: any;\n }>\n ) {\n const funcs: Array<FuncGroup> = [];\n\n doc.forEach(item => {\n const namespace = item.namespace || 'Others';\n let exists = funcs.find(item => item.groupName === namespace);\n if (!exists) {\n exists = {\n groupName: namespace,\n items: []\n };\n funcs.push(exists);\n }\n exists.items.push(item);\n });\n\n return funcs;\n }\n\n static defaultProps: Pick<\n FormulaEditorProps,\n 'functions' | 'variables' | 'evalMode'\n > = {\n functions: FormulaEditor.buildDefaultFunctions(doc),\n variables: [],\n evalMode: true\n };\n\n static highlightValue(\n value: string,\n variables: Array<VariableItem>,\n functions: Array<FuncGroup>\n ) {\n // todo 高亮原始文本\n return value;\n }\n\n componentWillUnmount() {\n this.editorPlugin?.dispose();\n }\n\n @autobind\n handleFocus() {\n this.setState({\n focused: true\n });\n }\n\n @autobind\n handleBlur() {\n this.setState({\n focused: false\n });\n }\n\n @autobind\n insertValue(value: any, type: 'variable' | 'func') {\n this.editorPlugin?.insertContent(value, type);\n }\n\n @autobind\n handleEditorMounted(cm: any, editor: any) {\n this.editorPlugin = new FormulaPlugin(editor, cm, () => this.props);\n }\n\n @autobind\n validate() {\n const value = this.props.value;\n\n try {\n value\n ? parse(value, {\n evalMode: this.props.evalMode\n })\n : null;\n } catch (e) {\n return e.message;\n }\n\n return;\n }\n\n @autobind\n handleFunctionSelect(item: FuncItem) {\n this.editorPlugin?.insertContent(`${item.name}`, 'func');\n }\n\n @autobind\n handleVariableSelect(item: VariableItem) {\n this.editorPlugin?.insertContent(\n {\n key: item.value,\n name: item.label\n },\n 'variable'\n );\n }\n\n @autobind\n handleOnChange(value: any) {\n const onChange = this.props.onChange;\n onChange?.(value);\n }\n\n @autobind\n editorFactory(dom: HTMLElement, cm: any) {\n return editorFactory(dom, cm, this.props);\n }\n\n render() {\n const {\n variables,\n header,\n value,\n functions,\n variableMode,\n translate: __,\n classnames: cx,\n variableClassName,\n functionClassName,\n classPrefix\n } = this.props;\n const {focused} = this.state;\n return (\n <div\n className={cx(`FormulaEditor`, {\n 'is-focused': focused\n })}\n >\n <section className={cx(`FormulaEditor-content`)}>\n <header className={cx(`FormulaEditor-header`)}>\n {__(header || 'FormulaEditor.title')}\n </header>\n\n <CodeMirrorEditor\n className={cx('FormulaEditor-editor')}\n value={value}\n onChange={this.handleOnChange}\n editorFactory={this.editorFactory}\n editorDidMount={this.handleEditorMounted}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n />\n </section>\n\n <section className={cx('FormulaEditor-settings')}>\n <div className={cx('FormulaEditor-panel')}>\n <div className={cx('FormulaEditor-panel-header')}>\n {__('FormulaEditor.variable')}\n </div>\n <div className={cx('FormulaEditor-panel-body')}>\n <VariableList\n classPrefix={classPrefix}\n className={cx(\n 'FormulaEditor-VariableList',\n 'FormulaEditor-VariableList-root',\n variableClassName\n )}\n selectMode={variableMode}\n data={variables}\n onSelect={this.handleVariableSelect}\n />\n </div>\n </div>\n\n <FuncList\n className={functionClassName}\n title={__('FormulaEditor.function')}\n data={functions}\n onSelect={this.handleFunctionSelect}\n />\n </section>\n </div>\n );\n }\n}\n\nexport default uncontrollable(\n themeable(localeable(FormulaEditor)),\n {\n value: 'onChange'\n },\n ['validate']\n);\n"
12
12
  ]
13
13
  }
@@ -3,6 +3,9 @@ import React from 'react';
3
3
  import { ThemeProps } from '../../theme';
4
4
  import type { FuncGroup, FuncItem } from './Editor';
5
5
  export interface FuncListProps extends ThemeProps {
6
+ title?: string;
7
+ descClassName?: string;
8
+ bodyClassName?: string;
6
9
  data: Array<FuncGroup>;
7
10
  onSelect?: (item: FuncItem) => void;
8
11
  }
@@ -7,9 +7,10 @@ var theme_1 = require("../../theme");
7
7
  var Collapse_1 = (0, tslib_1.__importDefault)(require("../Collapse"));
8
8
  var CollapseGroup_1 = (0, tslib_1.__importDefault)(require("../CollapseGroup"));
9
9
  var SearchBox_1 = (0, tslib_1.__importDefault)(require("../SearchBox"));
10
+ var icon_1 = require("../../utils/icon");
10
11
  function FuncList(props) {
11
12
  var _a;
12
- var cx = props.classnames;
13
+ var title = props.title, className = props.className, cx = props.classnames, bodyClassName = props.bodyClassName, descClassName = props.descClassName;
13
14
  var _b = react_1.default.useState(props.data), filteredFuncs = _b[0], setFiteredFuncs = _b[1];
14
15
  var _c = react_1.default.useState(null), activeFunc = _c[0], setActiveFunc = _c[1];
15
16
  function onSearch(term) {
@@ -22,14 +23,23 @@ function FuncList(props) {
22
23
  .filter(function (item) { return item.items.length; });
23
24
  setFiteredFuncs(filtered);
24
25
  }
25
- return (react_1.default.createElement("div", { className: cx('FormulaFuncList') },
26
- react_1.default.createElement(SearchBox_1.default, { className: "FormulaFuncList-searchBox", mini: false, onSearch: onSearch }),
27
- react_1.default.createElement("div", { className: cx('FormulaFuncList-columns') },
28
- react_1.default.createElement(CollapseGroup_1.default, { className: "FormulaFuncList-group", defaultActiveKey: (_a = filteredFuncs[0]) === null || _a === void 0 ? void 0 : _a.groupName, accordion: true }, filteredFuncs.map(function (item) { return (react_1.default.createElement(Collapse_1.default, { headingClassName: "FormulaFuncList-groupTitle", bodyClassName: "FormulaFuncList-groupBody", propKey: item.groupName, header: item.groupName, key: item.groupName }, item.items.map(function (item) { return (react_1.default.createElement("div", { className: cx("FormulaFuncList-funcItem " + (item.name === (activeFunc === null || activeFunc === void 0 ? void 0 : activeFunc.name) ? 'is-active' : '')), onMouseEnter: function () { return setActiveFunc(item); }, onClick: function () { var _a; return (_a = props.onSelect) === null || _a === void 0 ? void 0 : _a.call(props, item); }, key: item.name }, item.name)); }))); })),
29
- react_1.default.createElement("div", { className: cx('FormulaFuncList-column') }, activeFunc ? (react_1.default.createElement("div", { className: cx('FormulaFuncList-funcDetail') },
30
- react_1.default.createElement("pre", null,
31
- react_1.default.createElement("code", null, activeFunc.example)),
32
- react_1.default.createElement("div", null, activeFunc.description))) : null))));
26
+ return (react_1.default.createElement("div", { className: cx('FormulaEditor-FuncList', className) },
27
+ react_1.default.createElement("div", { className: cx('FormulaEditor-panel') },
28
+ react_1.default.createElement("div", { className: cx('FormulaEditor-panel-header') }, title),
29
+ react_1.default.createElement("div", { className: cx('FormulaEditor-panel-body') },
30
+ react_1.default.createElement("div", { className: cx('FormulaEditor-FuncList-searchBox') },
31
+ react_1.default.createElement(SearchBox_1.default, { mini: false, onSearch: onSearch })),
32
+ react_1.default.createElement("div", { className: cx('FormulaEditor-FuncList-body', bodyClassName) },
33
+ react_1.default.createElement(CollapseGroup_1.default, { className: cx('FormulaEditor-FuncList-collapseGroup'), defaultActiveKey: (_a = filteredFuncs[0]) === null || _a === void 0 ? void 0 : _a.groupName, expandIcon: (0, icon_1.generateIcon)(cx, 'fa fa-chevron-right FormulaEditor-FuncList-expandIcon', 'Icon'), accordion: true }, filteredFuncs.map(function (item) { return (react_1.default.createElement(Collapse_1.default, { className: cx('FormulaEditor-FuncList-collapse'), headingClassName: cx('FormulaEditor-FuncList-groupTitle'), bodyClassName: cx('FormulaEditor-FuncList-groupBody'), propKey: item.groupName, header: item.groupName, key: item.groupName }, item.items.map(function (item) { return (react_1.default.createElement("div", { className: cx('FormulaEditor-FuncList-item', {
34
+ 'is-active': item.name === (activeFunc === null || activeFunc === void 0 ? void 0 : activeFunc.name)
35
+ }), onMouseEnter: function () { return setActiveFunc(item); }, onClick: function () { var _a; return (_a = props.onSelect) === null || _a === void 0 ? void 0 : _a.call(props, item); }, key: item.name }, item.name)); }))); }))))),
36
+ react_1.default.createElement("div", { className: cx('FormulaEditor-panel') },
37
+ react_1.default.createElement("div", { className: cx('FormulaEditor-panel-header') }, (activeFunc === null || activeFunc === void 0 ? void 0 : activeFunc.name) || ''),
38
+ react_1.default.createElement("div", { className: cx('FormulaEditor-panel-body') },
39
+ react_1.default.createElement("div", { className: cx('FormulaEditor-FuncList-doc', descClassName) }, activeFunc ? (react_1.default.createElement(react_1.default.Fragment, null,
40
+ react_1.default.createElement("pre", null,
41
+ react_1.default.createElement("code", null, activeFunc.example)),
42
+ react_1.default.createElement("div", { className: cx('FormulaEditor-FuncList-doc-desc') }, activeFunc.description))) : null)))));
33
43
  }
34
44
  exports.FuncList = FuncList;
35
45
  exports.default = (0, theme_1.themeable)(FuncList);
@@ -6,8 +6,8 @@
6
6
  "/src/components/formula/FuncList.tsx"
7
7
  ],
8
8
  "names": [],
9
- "mappings": "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",
9
+ "mappings": "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",
10
10
  "sourcesContent": [
11
- "import React from 'react';\nimport {themeable, ThemeProps} from '../../theme';\nimport Collapse from '../Collapse';\nimport CollapseGroup from '../CollapseGroup';\nimport SearchBox from '../SearchBox';\nimport type {FuncGroup, FuncItem} from './Editor';\n\nexport interface FuncListProps extends ThemeProps {\n data: Array<FuncGroup>;\n onSelect?: (item: FuncItem) => void;\n}\n\nexport function FuncList(props: FuncListProps) {\n const cx = props.classnames;\n const [filteredFuncs, setFiteredFuncs] = React.useState(props.data);\n const [activeFunc, setActiveFunc] = React.useState<any>(null);\n function onSearch(term: string) {\n const filtered = props.data\n .map(item => {\n return {\n ...item,\n items: term\n ? item.items.filter(item => ~item.name.indexOf(term.toUpperCase()))\n : item.items\n };\n })\n .filter(item => item.items.length);\n setFiteredFuncs(filtered);\n }\n\n return (\n <div className={cx('FormulaFuncList')}>\n <SearchBox\n className=\"FormulaFuncList-searchBox\"\n mini={false}\n onSearch={onSearch}\n />\n <div className={cx('FormulaFuncList-columns')}>\n <CollapseGroup\n className=\"FormulaFuncList-group\"\n defaultActiveKey={filteredFuncs[0]?.groupName}\n accordion\n >\n {filteredFuncs.map(item => (\n <Collapse\n headingClassName=\"FormulaFuncList-groupTitle\"\n bodyClassName=\"FormulaFuncList-groupBody\"\n propKey={item.groupName}\n header={item.groupName}\n key={item.groupName}\n >\n {item.items.map(item => (\n <div\n className={cx(\n `FormulaFuncList-funcItem ${\n item.name === activeFunc?.name ? 'is-active' : ''\n }`\n )}\n onMouseEnter={() => setActiveFunc(item)}\n onClick={() => props.onSelect?.(item)}\n key={item.name}\n >\n {item.name}\n </div>\n ))}\n </Collapse>\n ))}\n </CollapseGroup>\n <div className={cx('FormulaFuncList-column')}>\n {activeFunc ? (\n <div className={cx('FormulaFuncList-funcDetail')}>\n <pre>\n <code>{activeFunc.example}</code>\n </pre>\n <div>{activeFunc.description}</div>\n </div>\n ) : null}\n </div>\n </div>\n </div>\n );\n}\n\nexport default themeable(FuncList);\n"
11
+ "import React from 'react';\n\nimport {themeable, ThemeProps} from '../../theme';\nimport Collapse from '../Collapse';\nimport CollapseGroup from '../CollapseGroup';\nimport SearchBox from '../SearchBox';\nimport type {FuncGroup, FuncItem} from './Editor';\nimport {generateIcon} from '../../utils/icon';\n\nexport interface FuncListProps extends ThemeProps {\n title?: string;\n descClassName?: string;\n bodyClassName?: string;\n data: Array<FuncGroup>;\n onSelect?: (item: FuncItem) => void;\n}\n\nexport function FuncList(props: FuncListProps) {\n const {\n title,\n className,\n classnames: cx,\n bodyClassName,\n descClassName\n } = props;\n const [filteredFuncs, setFiteredFuncs] = React.useState(props.data);\n const [activeFunc, setActiveFunc] = React.useState<any>(null);\n function onSearch(term: string) {\n const filtered = props.data\n .map(item => {\n return {\n ...item,\n items: term\n ? item.items.filter(item => ~item.name.indexOf(term.toUpperCase()))\n : item.items\n };\n })\n .filter(item => item.items.length);\n setFiteredFuncs(filtered);\n }\n\n return (\n <div className={cx('FormulaEditor-FuncList', className)}>\n <div className={cx('FormulaEditor-panel')}>\n <div className={cx('FormulaEditor-panel-header')}>{title}</div>\n <div className={cx('FormulaEditor-panel-body')}>\n <div className={cx('FormulaEditor-FuncList-searchBox')}>\n <SearchBox mini={false} onSearch={onSearch} />\n </div>\n <div className={cx('FormulaEditor-FuncList-body', bodyClassName)}>\n <CollapseGroup\n className={cx('FormulaEditor-FuncList-collapseGroup')}\n defaultActiveKey={filteredFuncs[0]?.groupName}\n expandIcon={\n generateIcon(\n cx,\n 'fa fa-chevron-right FormulaEditor-FuncList-expandIcon',\n 'Icon'\n )!\n }\n accordion\n >\n {filteredFuncs.map(item => (\n <Collapse\n className={cx('FormulaEditor-FuncList-collapse')}\n headingClassName={cx('FormulaEditor-FuncList-groupTitle')}\n bodyClassName={cx('FormulaEditor-FuncList-groupBody')}\n propKey={item.groupName}\n header={item.groupName}\n key={item.groupName}\n >\n {item.items.map(item => (\n <div\n className={cx('FormulaEditor-FuncList-item', {\n 'is-active': item.name === activeFunc?.name\n })}\n onMouseEnter={() => setActiveFunc(item)}\n onClick={() => props.onSelect?.(item)}\n key={item.name}\n >\n {item.name}\n </div>\n ))}\n </Collapse>\n ))}\n </CollapseGroup>\n </div>\n </div>\n </div>\n\n <div className={cx('FormulaEditor-panel')}>\n <div className={cx('FormulaEditor-panel-header')}>\n {activeFunc?.name || ''}\n </div>\n <div className={cx('FormulaEditor-panel-body')}>\n <div className={cx('FormulaEditor-FuncList-doc', descClassName)}>\n {activeFunc ? (\n <>\n <pre>\n <code>{activeFunc.example}</code>\n </pre>\n <div className={cx('FormulaEditor-FuncList-doc-desc')}>\n {activeFunc.description}\n </div>\n </>\n ) : null}\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nexport default themeable(FuncList);\n"
12
12
  ]
13
13
  }
@@ -1,13 +1,57 @@
1
1
  /// <reference types="hoist-non-react-statics" />
2
2
  import React from 'react';
3
3
  import { FormulaEditorProps } from './Editor';
4
+ import type { SchemaIcon } from '../../Schema';
4
5
  export interface FormulaPickerProps extends FormulaEditorProps {
5
6
  size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'full';
7
+ /**
8
+ * 编辑器标题
9
+ */
10
+ title?: string;
11
+ /**
12
+ * 按钮图标
13
+ */
14
+ icon?: SchemaIcon;
15
+ /**
16
+ * 控件模式
17
+ */
18
+ mode?: 'button' | 'input-button';
6
19
  /**
7
20
  * 边框模式,全边框,还是半边框,或者没边框。
8
21
  */
9
22
  borderMode?: 'full' | 'half' | 'none';
23
+ /**
24
+ * 按钮Label,inputMode为button时生效
25
+ */
26
+ btnLabel?: string;
27
+ /**
28
+ * 按钮样式
29
+ */
30
+ level?: 'info' | 'success' | 'warning' | 'danger' | 'link' | 'primary' | 'dark' | 'light';
31
+ /**
32
+ * 按钮大小
33
+ */
34
+ btnSize?: 'xs' | 'sm' | 'md' | 'lg';
35
+ /**
36
+ * 禁用状态
37
+ */
10
38
  disabled?: boolean;
39
+ /**
40
+ * 占位文本
41
+ */
42
+ placeholder?: string;
43
+ /**
44
+ * 可清除
45
+ */
46
+ clearable?: boolean;
47
+ /**
48
+ * 支持通过上下文变量配置value
49
+ */
50
+ source?: string;
51
+ /**
52
+ * 外层透传的 data,和source配合使用
53
+ */
54
+ data?: any;
11
55
  }
12
56
  export declare class FormulaPicker extends React.Component<FormulaPickerProps> {
13
57
  handleConfirm(value: any): void;
@@ -4,14 +4,16 @@ exports.FormulaPicker = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var uncontrollable_1 = require("uncontrollable");
6
6
  var react_1 = (0, tslib_1.__importDefault)(require("react"));
7
- var Editor_1 = require("./Editor");
8
7
  var helper_1 = require("../../utils/helper");
8
+ var icon_1 = require("../../utils/icon");
9
9
  var PickerContainer_1 = (0, tslib_1.__importDefault)(require("../PickerContainer"));
10
- var Editor_2 = (0, tslib_1.__importDefault)(require("./Editor"));
10
+ var Editor_1 = (0, tslib_1.__importDefault)(require("./Editor"));
11
11
  var ResultBox_1 = (0, tslib_1.__importDefault)(require("../ResultBox"));
12
+ var Button_1 = (0, tslib_1.__importDefault)(require("../Button"));
12
13
  var icons_1 = require("../icons");
13
14
  var theme_1 = require("../../theme");
14
15
  var locale_1 = require("../../locale");
16
+ var tpl_builtin_1 = require("../../utils/tpl-builtin");
15
17
  var FormulaPicker = /** @class */ (function (_super) {
16
18
  (0, tslib_1.__extends)(FormulaPicker, _super);
17
19
  function FormulaPicker() {
@@ -22,15 +24,38 @@ var FormulaPicker = /** @class */ (function (_super) {
22
24
  (_b = (_a = this.props).onChange) === null || _b === void 0 ? void 0 : _b.call(_a, value);
23
25
  };
24
26
  FormulaPicker.prototype.render = function () {
25
- var _a = this.props, cx = _a.classnames, value = _a.value, __ = _a.translate, disabled = _a.disabled, className = _a.className, onChange = _a.onChange, size = _a.size, borderMode = _a.borderMode, rest = (0, tslib_1.__rest)(_a, ["classnames", "value", "translate", "disabled", "className", "onChange", "size", "borderMode"]);
26
- return (react_1.default.createElement(PickerContainer_1.default, { showTitle: false, bodyRender: function (_a) {
27
+ var _this = this;
28
+ var _a = this.props, cx = _a.classnames, value = _a.value, __ = _a.translate, disabled = _a.disabled, className = _a.className, onChange = _a.onChange, size = _a.size, borderMode = _a.borderMode, placeholder = _a.placeholder, mode = _a.mode, btnLabel = _a.btnLabel, level = _a.level, btnSize = _a.btnSize, icon = _a.icon, title = _a.title, clearable = _a.clearable, variables = _a.variables, functions = _a.functions, rest = (0, tslib_1.__rest)(_a, ["classnames", "value", "translate", "disabled", "className", "onChange", "size", "borderMode", "placeholder", "mode", "btnLabel", "level", "btnSize", "icon", "title", "clearable", "variables", "functions"]);
29
+ if ((0, tpl_builtin_1.isPureVariable)(variables)) {
30
+ // 如果 variables 是 ${xxx} 这种形式,将其处理成实际的值
31
+ variables = (0, tpl_builtin_1.resolveVariableAndFilter)(variables, this.props.data, '| raw');
32
+ }
33
+ if ((0, tpl_builtin_1.isPureVariable)(functions)) {
34
+ // 如果 functions 是 ${xxx} 这种形式,将其处理成实际的值
35
+ functions = (0, tpl_builtin_1.resolveVariableAndFilter)(functions, this.props.data, '| raw');
36
+ }
37
+ var iconElement = (0, icon_1.generateIcon)(cx, icon, 'Icon');
38
+ return (react_1.default.createElement(PickerContainer_1.default, { title: __(title || 'FormulaEditor.title'), headerClassName: "font-bold", bodyRender: function (_a) {
27
39
  var onClose = _a.onClose, value = _a.value, onChange = _a.onChange;
28
- return react_1.default.createElement(Editor_2.default, (0, tslib_1.__assign)({}, rest, { value: value, onChange: onChange }));
40
+ return (react_1.default.createElement(Editor_1.default, (0, tslib_1.__assign)({}, rest, { variables: variables, functions: functions, value: value, onChange: onChange })));
29
41
  }, value: value, onConfirm: this.handleConfirm, size: 'md' }, function (_a) {
42
+ var _b, _c, _d;
43
+ var _e, _f;
30
44
  var onClick = _a.onClick, isOpened = _a.isOpened;
31
- return (react_1.default.createElement(ResultBox_1.default, { className: cx('FormulaPicker', className, isOpened ? 'is-active' : ''), allowInput: false, result: Editor_1.FormulaEditor.highlightValue(value, rest.variables, rest.functions), onResultChange: helper_1.noop, onResultClick: onClick, disabled: disabled, borderMode: borderMode },
32
- react_1.default.createElement("span", { className: cx('FormulaPicker-icon') },
33
- react_1.default.createElement(icons_1.Icon, { icon: "pencil", className: "icon" }))));
45
+ return (react_1.default.createElement("div", { className: cx('FormulaPicker', className) }, mode === 'button' ? (react_1.default.createElement(Button_1.default, { className: cx('FormulaPicker-action', 'w-full'), level: level, size: btnSize, onClick: onClick },
46
+ iconElement ? (react_1.default.cloneElement(iconElement, {
47
+ className: cx((_f = (_e = iconElement === null || iconElement === void 0 ? void 0 : iconElement.props) === null || _e === void 0 ? void 0 : _e.className) !== null && _f !== void 0 ? _f : '', 'FormulaPicker-icon', (_b = {},
48
+ _b['is-filled'] = !!value,
49
+ _b))
50
+ })) : (react_1.default.createElement(icons_1.Icon, { icon: "function", className: cx('FormulaPicker-icon', 'icon', (_c = {},
51
+ _c['is-filled'] = !!value,
52
+ _c)) })),
53
+ react_1.default.createElement("span", { className: cx('FormulaPicker-label') }, __(btnLabel || 'FormulaEditor.btnLabel')))) : (react_1.default.createElement(react_1.default.Fragment, null,
54
+ react_1.default.createElement(ResultBox_1.default, { className: cx('FormulaPicker-input', isOpened ? 'is-active' : ''), allowInput: true, clearable: clearable, value: value, onResultChange: helper_1.noop, onChange: _this.handleConfirm, disabled: disabled, borderMode: borderMode, placeholder: placeholder }),
55
+ react_1.default.createElement(Button_1.default, { className: cx('FormulaPicker-action'), onClick: onClick },
56
+ react_1.default.createElement(icons_1.Icon, { icon: "function", className: cx('FormulaPicker-icon', 'icon', (_d = {},
57
+ _d['is-filled'] = !!value,
58
+ _d)) }))))));
34
59
  }));
35
60
  };
36
61
  (0, tslib_1.__decorate)([
@@ -6,8 +6,8 @@
6
6
  "/src/components/formula/Picker.tsx"
7
7
  ],
8
8
  "names": [],
9
- "mappings": ";;;;AAAA,iDAA8C;AAC9C,6DAA0B;AAC1B,mCAA2D;AAC3D,6CAAkD;AAClD,oFAAiD;AACjD,iEAA8B;AAC9B,wEAAqC;AACrC,kCAA8B;AAC9B,qCAAsC;AACtC,uCAAwC;AAcxC;IAAmC,8CAAmC;IAAtE;;IAuDA,CAAC;IArDC,qCAAa,GAAb,UAAc,KAAU;;QACtB,MAAA,MAAA,IAAI,CAAC,KAAK,EAAC,QAAQ,mDAAG,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,8BAAM,GAAN;QACE,IAAM,KAUF,IAAI,CAAC,KAAK,EATA,EAAE,gBAAA,EACd,KAAK,WAAA,EACM,EAAE,eAAA,EACb,QAAQ,cAAA,EACR,SAAS,eAAA,EACT,QAAQ,cAAA,EACR,IAAI,UAAA,EACJ,UAAU,gBAAA,EACP,IAAI,2BATH,+FAUL,CAAa,CAAC;QAEf,OAAO,CACL,8BAAC,yBAAe,IACd,SAAS,EAAE,KAAK,EAChB,UAAU,EAAE,UAAC,EAA0B;oBAAzB,OAAO,aAAA,EAAE,KAAK,WAAA,EAAE,QAAQ,cAAA;gBACpC,OAAO,8BAAC,gBAAM,4BAAK,IAAI,IAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,IAAI,CAAC;YAChE,CAAC,EACD,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,IAAI,CAAC,aAAa,EAC7B,IAAI,EAAE,IAAI,IAET,UAAC,EAAmB;gBAAlB,OAAO,aAAA,EAAE,QAAQ,cAAA;YAAM,OAAA,CACxB,8BAAC,mBAAS,IACR,SAAS,EAAE,EAAE,CACX,eAAe,EACf,SAAS,EACT,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAC5B,EACD,UAAU,EAAE,KAAK,EACjB,MAAM,EAAE,sBAAa,CAAC,cAAc,CAClC,KAAK,EACL,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,CACf,EACD,cAAc,EAAE,aAAI,EACpB,aAAa,EAAE,OAAO,EACtB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU;gBAEtB,wCAAM,SAAS,EAAE,EAAE,CAAC,oBAAoB,CAAC;oBACvC,8BAAC,YAAI,IAAC,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,MAAM,GAAG,CAClC,CACG,CACb;QAtByB,CAsBzB,CACe,CACnB,CAAC;IACJ,CAAC;IApDD;QADC,iBAAQ;;;;sDAGR;IAmDH,oBAAC;CAAA,AAvDD,CAAmC,eAAK,CAAC,SAAS,GAuDjD;AAvDY,sCAAa;AAyD1B,kBAAe,IAAA,iBAAS,EACtB,IAAA,mBAAU,EACR,IAAA,+BAAc,EAAC,aAAa,EAAE;IAC5B,KAAK,EAAE,UAAU;CAClB,CAAC,CACH,CACF,CAAC",
9
+ "mappings": "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",
10
10
  "sourcesContent": [
11
- "import {uncontrollable} from 'uncontrollable';\nimport React from 'react';\nimport {FormulaEditor, FormulaEditorProps} from './Editor';\nimport {autobind, noop} from '../../utils/helper';\nimport PickerContainer from '../PickerContainer';\nimport Editor from './Editor';\nimport ResultBox from '../ResultBox';\nimport {Icon} from '../icons';\nimport {themeable} from '../../theme';\nimport {localeable} from '../../locale';\n\nexport interface FormulaPickerProps extends FormulaEditorProps {\n // 新的属性?\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\n /**\n * 边框模式,全边框,还是半边框,或者没边框。\n */\n borderMode?: 'full' | 'half' | 'none';\n\n disabled?: boolean;\n}\n\nexport class FormulaPicker extends React.Component<FormulaPickerProps> {\n @autobind\n handleConfirm(value: any) {\n this.props.onChange?.(value);\n }\n\n render() {\n const {\n classnames: cx,\n value,\n translate: __,\n disabled,\n className,\n onChange,\n size,\n borderMode,\n ...rest\n } = this.props;\n\n return (\n <PickerContainer\n showTitle={false}\n bodyRender={({onClose, value, onChange}) => {\n return <Editor {...rest} value={value} onChange={onChange} />;\n }}\n value={value}\n onConfirm={this.handleConfirm}\n size={'md'}\n >\n {({onClick, isOpened}) => (\n <ResultBox\n className={cx(\n 'FormulaPicker',\n className,\n isOpened ? 'is-active' : ''\n )}\n allowInput={false}\n result={FormulaEditor.highlightValue(\n value,\n rest.variables,\n rest.functions\n )}\n onResultChange={noop}\n onResultClick={onClick}\n disabled={disabled}\n borderMode={borderMode}\n >\n <span className={cx('FormulaPicker-icon')}>\n <Icon icon=\"pencil\" className=\"icon\" />\n </span>\n </ResultBox>\n )}\n </PickerContainer>\n );\n }\n}\n\nexport default themeable(\n localeable(\n uncontrollable(FormulaPicker, {\n value: 'onChange'\n })\n )\n);\n"
11
+ "import {uncontrollable} from 'uncontrollable';\nimport React from 'react';\nimport {FormulaEditor, FormulaEditorProps} from './Editor';\nimport {autobind, noop} from '../../utils/helper';\nimport {generateIcon} from '../../utils/icon';\nimport PickerContainer from '../PickerContainer';\nimport Editor from './Editor';\nimport ResultBox from '../ResultBox';\nimport Button from '../Button';\nimport {Icon} from '../icons';\nimport {themeable} from '../../theme';\nimport {localeable} from '../../locale';\n\nimport type {SchemaIcon} from '../../Schema';\nimport {\n resolveVariableAndFilter,\n isPureVariable\n} from '../../utils/tpl-builtin';\n\nexport interface FormulaPickerProps extends FormulaEditorProps {\n // 新的属性?\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\n /**\n * 编辑器标题\n */\n title?: string;\n\n /**\n * 按钮图标\n */\n icon?: SchemaIcon;\n\n /**\n * 控件模式\n */\n mode?: 'button' | 'input-button';\n\n /**\n * 边框模式,全边框,还是半边框,或者没边框。\n */\n borderMode?: 'full' | 'half' | 'none';\n\n /**\n * 按钮Label,inputMode为button时生效\n */\n btnLabel?: string;\n\n /**\n * 按钮样式\n */\n level?:\n | 'info'\n | 'success'\n | 'warning'\n | 'danger'\n | 'link'\n | 'primary'\n | 'dark'\n | 'light';\n\n /**\n * 按钮大小\n */\n btnSize?: 'xs' | 'sm' | 'md' | 'lg';\n\n /**\n * 禁用状态\n */\n disabled?: boolean;\n\n /**\n * 占位文本\n */\n placeholder?: string;\n\n /**\n * 可清除\n */\n clearable?: boolean;\n\n /**\n * 支持通过上下文变量配置value\n */\n source?: string;\n\n /**\n * 外层透传的 data,和source配合使用\n */\n data?: any;\n}\n\nexport class FormulaPicker extends React.Component<FormulaPickerProps> {\n @autobind\n handleConfirm(value: any) {\n this.props.onChange?.(value);\n }\n\n render() {\n let {\n classnames: cx,\n value,\n translate: __,\n disabled,\n className,\n onChange,\n size,\n borderMode,\n placeholder,\n mode,\n btnLabel,\n level,\n btnSize,\n icon,\n title,\n clearable,\n variables,\n functions,\n ...rest\n } = this.props;\n if (isPureVariable(variables)) {\n // 如果 variables 是 ${xxx} 这种形式,将其处理成实际的值\n variables = resolveVariableAndFilter(variables, this.props.data, '| raw');\n }\n\n if (isPureVariable(functions)) {\n // 如果 functions 是 ${xxx} 这种形式,将其处理成实际的值\n functions = resolveVariableAndFilter(functions, this.props.data, '| raw');\n }\n const iconElement = generateIcon(cx, icon, 'Icon');\n\n return (\n <PickerContainer\n title={__(title || 'FormulaEditor.title')}\n headerClassName=\"font-bold\"\n bodyRender={({onClose, value, onChange}) => {\n return (\n <Editor\n {...rest}\n variables={variables}\n functions={functions}\n value={value}\n onChange={onChange}\n />\n );\n }}\n value={value}\n onConfirm={this.handleConfirm}\n size={'md'}\n >\n {({onClick, isOpened}) => (\n <div className={cx('FormulaPicker', className)}>\n {mode === 'button' ? (\n <Button\n className={cx('FormulaPicker-action', 'w-full')}\n level={level}\n size={btnSize}\n onClick={onClick}\n >\n {iconElement ? (\n React.cloneElement(iconElement, {\n className: cx(\n iconElement?.props?.className ?? '',\n 'FormulaPicker-icon',\n {\n ['is-filled']: !!value\n }\n )\n })\n ) : (\n <Icon\n icon=\"function\"\n className={cx('FormulaPicker-icon', 'icon', {\n ['is-filled']: !!value\n })}\n />\n )}\n <span className={cx('FormulaPicker-label')}>\n {__(btnLabel || 'FormulaEditor.btnLabel')}\n </span>\n </Button>\n ) : (\n <>\n <ResultBox\n className={cx(\n 'FormulaPicker-input',\n isOpened ? 'is-active' : ''\n )}\n allowInput\n clearable={clearable}\n value={value}\n onResultChange={noop}\n onChange={this.handleConfirm}\n disabled={disabled}\n borderMode={borderMode}\n placeholder={placeholder}\n />\n\n <Button\n className={cx('FormulaPicker-action')}\n onClick={onClick}\n >\n <Icon\n icon=\"function\"\n className={cx('FormulaPicker-icon', 'icon', {\n ['is-filled']: !!value\n })}\n />\n </Button>\n </>\n )}\n </div>\n )}\n </PickerContainer>\n );\n }\n}\n\nexport default themeable(\n localeable(\n uncontrollable(FormulaPicker, {\n value: 'onChange'\n })\n )\n);\n"
12
12
  ]
13
13
  }
@@ -1,9 +1,16 @@
1
1
  /// <reference types="react" />
2
2
  import type { VariableItem } from './Editor';
3
+ import type { ItemRenderStates } from '../Selection';
4
+ import type { Option } from '../Select';
5
+ import type { TabsMode } from '../Tabs';
3
6
  export interface VariableListProps {
4
7
  className?: string;
8
+ itemClassName?: string;
9
+ classPrefix?: string;
5
10
  data: Array<VariableItem>;
6
11
  selectMode?: 'list' | 'tree' | 'tabs';
12
+ tabsMode?: TabsMode;
13
+ itemRender?: (option: Option, states: ItemRenderStates) => JSX.Element;
7
14
  onSelect?: (item: VariableItem) => void;
8
15
  }
9
- export declare function VariableList({ data: list, className, selectMode, onSelect }: VariableListProps): JSX.Element;
16
+ export declare function VariableList(props: VariableListProps): JSX.Element;
@@ -3,13 +3,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VariableList = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var react_1 = (0, tslib_1.__importDefault)(require("react"));
6
+ var classnames_1 = (0, tslib_1.__importDefault)(require("classnames"));
6
7
  var GroupedSelection_1 = (0, tslib_1.__importDefault)(require("../GroupedSelection"));
7
8
  var Tabs_1 = tslib_1.__importStar(require("../Tabs"));
8
9
  var TreeSelection_1 = (0, tslib_1.__importDefault)(require("../TreeSelection"));
9
- function VariableList(_a) {
10
- var list = _a.data, className = _a.className, selectMode = _a.selectMode, onSelect = _a.onSelect;
11
- return (react_1.default.createElement("div", { className: className }, selectMode === 'tabs' ? (react_1.default.createElement(Tabs_1.default, { tabsMode: "radio" }, list.map(function (item, index) { return (react_1.default.createElement(Tabs_1.Tab, { eventKey: index, key: index, title: item.label },
12
- react_1.default.createElement(VariableList, { selectMode: item.selectMode, data: item.children, onSelect: onSelect }))); }))) : selectMode === 'tree' ? (react_1.default.createElement(TreeSelection_1.default, { multiple: false, options: list, onChange: function (item) { return onSelect === null || onSelect === void 0 ? void 0 : onSelect(item); } })) : (react_1.default.createElement(GroupedSelection_1.default, { multiple: false, options: list, onChange: function (item) { return onSelect === null || onSelect === void 0 ? void 0 : onSelect(item); } }))));
10
+ function VariableList(props) {
11
+ var list = props.data, className = props.className, _a = props.tabsMode, tabsMode = _a === void 0 ? 'card' : _a, themePrefix = props.classPrefix, itemClassName = props.itemClassName, selectMode = props.selectMode, onSelect = props.onSelect;
12
+ var classPrefix = themePrefix + "FormulaEditor-VariableList";
13
+ var itemRender = props.itemRender && typeof props.itemRender === 'function'
14
+ ? props.itemRender
15
+ : function (option, states) {
16
+ return (react_1.default.createElement("span", { className: (0, classnames_1.default)(classPrefix + "-item", itemClassName) },
17
+ react_1.default.createElement("label", null, option.label),
18
+ (option === null || option === void 0 ? void 0 : option.tag) ? (react_1.default.createElement("span", { className: (0, classnames_1.default)(classPrefix + "-item-tag") }, option.tag)) : null));
19
+ };
20
+ return (react_1.default.createElement("div", { className: (0, classnames_1.default)(className, { 'is-scrollable': selectMode !== 'tabs' }) }, selectMode === 'tabs' ? (react_1.default.createElement(Tabs_1.default, { tabsMode: tabsMode, className: (0, classnames_1.default)(classPrefix + "-base " + classPrefix + "-tabs") }, list.map(function (item, index) { return (react_1.default.createElement(Tabs_1.Tab, { className: (0, classnames_1.default)(classPrefix + "-tab"), eventKey: index, key: index, title: item.label },
21
+ react_1.default.createElement(VariableList, { className: (0, classnames_1.default)(classPrefix + "-sub"), itemRender: itemRender, selectMode: item.selectMode, data: item.children, onSelect: onSelect }))); }))) : selectMode === 'tree' ? (react_1.default.createElement(TreeSelection_1.default, { itemRender: itemRender, className: (0, classnames_1.default)(classPrefix + "-base"), multiple: false, options: list, onChange: function (item) { return onSelect === null || onSelect === void 0 ? void 0 : onSelect(item); } })) : (react_1.default.createElement(GroupedSelection_1.default, { itemRender: itemRender, className: (0, classnames_1.default)(classPrefix + "-base"), multiple: false, options: list, onChange: function (item) { return onSelect === null || onSelect === void 0 ? void 0 : onSelect(item); } }))));
13
22
  }
14
23
  exports.VariableList = VariableList;
15
24
  //# sourceMappingURL=./components/formula/VariableList.js.map
@@ -6,8 +6,8 @@
6
6
  "/src/components/formula/VariableList.tsx"
7
7
  ],
8
8
  "names": [],
9
- "mappings": ";;;;AAAA,6DAA0B;AAC1B,sFAAmD;AACnD,2DAAkC;AAClC,gFAA6C;AAU7C,SAAgB,YAAY,CAAC,EAKT;QAJZ,IAAI,UAAA,EACV,SAAS,eAAA,EACT,UAAU,gBAAA,EACV,QAAQ,cAAA;IAER,OAAO,CACL,uCAAK,SAAS,EAAE,SAAS,IACtB,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,CACvB,8BAAC,cAAI,IAAC,QAAQ,EAAC,OAAO,IACnB,IAAI,CAAC,GAAG,CAAC,UAAC,IAAI,EAAE,KAAK,IAAK,OAAA,CACzB,8BAAC,UAAG,IAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK;QACjD,8BAAC,YAAY,IACX,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,IAAI,EAAE,IAAI,CAAC,QAAS,EACpB,QAAQ,EAAE,QAAQ,GAClB,CACE,CACP,EAR0B,CAQ1B,CAAC,CACG,CACR,CAAC,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,CAC1B,8BAAC,uBAAa,IACZ,QAAQ,EAAE,KAAK,EACf,OAAO,EAAE,IAAI,EACb,QAAQ,EAAE,UAAC,IAAS,IAAK,OAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,IAAI,CAAC,EAAhB,CAAgB,GACzC,CACH,CAAC,CAAC,CAAC,CACF,8BAAC,0BAAgB,IACf,QAAQ,EAAE,KAAK,EACf,OAAO,EAAE,IAAI,EACb,QAAQ,EAAE,UAAC,IAAS,IAAK,OAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,IAAI,CAAC,EAAhB,CAAgB,GACzC,CACH,CACG,CACP,CAAC;AACJ,CAAC;AAnCD,oCAmCC",
9
+ "mappings": ";;;;AAAA,6DAA0B;AAC1B,uEAA4B;AAE5B,sFAAmD;AACnD,2DAAkC;AAClC,gFAA6C;AAkB7C,SAAgB,YAAY,CAAC,KAAwB;IAEjD,IAAM,IAAI,GAOR,KAAK,KAPG,EACV,SAAS,GAMP,KAAK,UANE,EACT,KAKE,KAAK,SALU,EAAjB,QAAQ,mBAAG,MAAM,KAAA,EACJ,WAAW,GAItB,KAAK,YAJiB,EACxB,aAAa,GAGX,KAAK,cAHM,EACb,UAAU,GAER,KAAK,WAFG,EACV,QAAQ,GACN,KAAK,SADC,CACA;IACV,IAAM,WAAW,GAAM,WAAW,+BAA4B,CAAC;IAC/D,IAAM,UAAU,GACd,KAAK,CAAC,UAAU,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,UAAU;QACxD,CAAC,CAAC,KAAK,CAAC,UAAU;QAClB,CAAC,CAAC,UAAC,MAAc,EAAE,MAAwB;YACvC,OAAO,CACL,wCAAM,SAAS,EAAE,IAAA,oBAAE,EAAI,WAAW,UAAO,EAAE,aAAa,CAAC;gBACvD,6CAAQ,MAAM,CAAC,KAAK,CAAS;gBAC5B,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,GAAG,EAAC,CAAC,CAAC,CACb,wCAAM,SAAS,EAAE,IAAA,oBAAE,EAAI,WAAW,cAAW,CAAC,IAC3C,MAAM,CAAC,GAAG,CACN,CACR,CAAC,CAAC,CAAC,IAAI,CACH,CACR,CAAC;QACJ,CAAC,CAAC;IAER,OAAO,CACL,uCAAK,SAAS,EAAE,IAAA,oBAAE,EAAC,SAAS,EAAE,EAAC,eAAe,EAAE,UAAU,KAAK,MAAM,EAAC,CAAC,IACpE,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,CACvB,8BAAC,cAAI,IACH,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,IAAA,oBAAE,EAAI,WAAW,cAAS,WAAW,UAAO,CAAC,IAEvD,IAAI,CAAC,GAAG,CAAC,UAAC,IAAI,EAAE,KAAK,IAAK,OAAA,CACzB,8BAAC,UAAG,IACF,SAAS,EAAE,IAAA,oBAAE,EAAI,WAAW,SAAM,CAAC,EACnC,QAAQ,EAAE,KAAK,EACf,GAAG,EAAE,KAAK,EACV,KAAK,EAAE,IAAI,CAAC,KAAK;QAEjB,8BAAC,YAAY,IACX,SAAS,EAAE,IAAA,oBAAE,EAAI,WAAW,SAAM,CAAC,EACnC,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,IAAI,EAAE,IAAI,CAAC,QAAS,EACpB,QAAQ,EAAE,QAAQ,GAClB,CACE,CACP,EAf0B,CAe1B,CAAC,CACG,CACR,CAAC,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,CAC1B,8BAAC,uBAAa,IACZ,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,IAAA,oBAAE,EAAI,WAAW,UAAO,CAAC,EACpC,QAAQ,EAAE,KAAK,EACf,OAAO,EAAE,IAAI,EACb,QAAQ,EAAE,UAAC,IAAS,IAAK,OAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,IAAI,CAAC,EAAhB,CAAgB,GACzC,CACH,CAAC,CAAC,CAAC,CACF,8BAAC,0BAAgB,IACf,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,IAAA,oBAAE,EAAI,WAAW,UAAO,CAAC,EACpC,QAAQ,EAAE,KAAK,EACf,OAAO,EAAE,IAAI,EACb,QAAQ,EAAE,UAAC,IAAS,IAAK,OAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,IAAI,CAAC,EAAhB,CAAgB,GACzC,CACH,CACG,CACP,CAAC;AACJ,CAAC;AAtED,oCAsEC",
10
10
  "sourcesContent": [
11
- "import React from 'react';\nimport GroupedSelection from '../GroupedSelection';\nimport Tabs, {Tab} from '../Tabs';\nimport TreeSelection from '../TreeSelection';\nimport type {VariableItem} from './Editor';\n\nexport interface VariableListProps {\n className?: string;\n data: Array<VariableItem>;\n selectMode?: 'list' | 'tree' | 'tabs';\n onSelect?: (item: VariableItem) => void;\n}\n\nexport function VariableList({\n data: list,\n className,\n selectMode,\n onSelect\n}: VariableListProps) {\n return (\n <div className={className}>\n {selectMode === 'tabs' ? (\n <Tabs tabsMode=\"radio\">\n {list.map((item, index) => (\n <Tab eventKey={index} key={index} title={item.label}>\n <VariableList\n selectMode={item.selectMode}\n data={item.children!}\n onSelect={onSelect}\n />\n </Tab>\n ))}\n </Tabs>\n ) : selectMode === 'tree' ? (\n <TreeSelection\n multiple={false}\n options={list}\n onChange={(item: any) => onSelect?.(item)}\n />\n ) : (\n <GroupedSelection\n multiple={false}\n options={list}\n onChange={(item: any) => onSelect?.(item)}\n />\n )}\n </div>\n );\n}\n"
11
+ "import React from 'react';\nimport cx from 'classnames';\n\nimport GroupedSelection from '../GroupedSelection';\nimport Tabs, {Tab} from '../Tabs';\nimport TreeSelection from '../TreeSelection';\n\nimport type {VariableItem} from './Editor';\nimport type {ItemRenderStates} from '../Selection';\nimport type {Option} from '../Select';\nimport type {TabsMode} from '../Tabs';\n\nexport interface VariableListProps {\n className?: string;\n itemClassName?: string;\n classPrefix?: string;\n data: Array<VariableItem>;\n selectMode?: 'list' | 'tree' | 'tabs';\n tabsMode?: TabsMode;\n itemRender?: (option: Option, states: ItemRenderStates) => JSX.Element;\n onSelect?: (item: VariableItem) => void;\n}\n\nexport function VariableList(props: VariableListProps) {\n const {\n data: list,\n className,\n tabsMode = 'card',\n classPrefix: themePrefix,\n itemClassName,\n selectMode,\n onSelect\n } = props;\n const classPrefix = `${themePrefix}FormulaEditor-VariableList`;\n const itemRender =\n props.itemRender && typeof props.itemRender === 'function'\n ? props.itemRender\n : (option: Option, states: ItemRenderStates): JSX.Element => {\n return (\n <span className={cx(`${classPrefix}-item`, itemClassName)}>\n <label>{option.label}</label>\n {option?.tag ? (\n <span className={cx(`${classPrefix}-item-tag`)}>\n {option.tag}\n </span>\n ) : null}\n </span>\n );\n };\n\n return (\n <div className={cx(className, {'is-scrollable': selectMode !== 'tabs'})}>\n {selectMode === 'tabs' ? (\n <Tabs\n tabsMode={tabsMode}\n className={cx(`${classPrefix}-base ${classPrefix}-tabs`)}\n >\n {list.map((item, index) => (\n <Tab\n className={cx(`${classPrefix}-tab`)}\n eventKey={index}\n key={index}\n title={item.label}\n >\n <VariableList\n className={cx(`${classPrefix}-sub`)}\n itemRender={itemRender}\n selectMode={item.selectMode}\n data={item.children!}\n onSelect={onSelect}\n />\n </Tab>\n ))}\n </Tabs>\n ) : selectMode === 'tree' ? (\n <TreeSelection\n itemRender={itemRender}\n className={cx(`${classPrefix}-base`)}\n multiple={false}\n options={list}\n onChange={(item: any) => onSelect?.(item)}\n />\n ) : (\n <GroupedSelection\n itemRender={itemRender}\n className={cx(`${classPrefix}-base`)}\n multiple={false}\n options={list}\n onChange={(item: any) => onSelect?.(item)}\n />\n )}\n </div>\n );\n}\n"
12
12
  ]
13
13
  }
@@ -18,6 +18,8 @@ import CheckIcon from '../icons/check.svg';
18
18
  import PlusIcon from '../icons/plus.svg';
19
19
  import MinusIcon from '../icons/minus.svg';
20
20
  import PencilIcon from '../icons/pencil.svg';
21
+ import FunctionIcon from '../icons/function.svg';
22
+ import InputClearIcon from '../icons/input-clear.svg';
21
23
  export declare const closeIcon: JSX.Element;
22
24
  export declare const unDoIcon: JSX.Element;
23
25
  export declare const reDoIcon: JSX.Element;
@@ -34,4 +36,4 @@ export declare function registerIcon(key: string, component: React.ReactType<{}>
34
36
  export declare function Icon({ icon, className, ...rest }: {
35
37
  icon: string;
36
38
  } & React.ComponentProps<any>): JSX.Element;
37
- export { CloseIcon, UnDoIcon, ReDoIcon, EnterIcon, VolumeIcon, MuteIcon, PlayIcon, PauseIcon, LeftArrowIcon, RightArrowIcon, CheckIcon, PlusIcon, MinusIcon, PencilIcon };
39
+ export { InputClearIcon, CloseIcon, UnDoIcon, ReDoIcon, EnterIcon, VolumeIcon, MuteIcon, PlayIcon, PauseIcon, LeftArrowIcon, RightArrowIcon, CheckIcon, PlusIcon, MinusIcon, PencilIcon, FunctionIcon };
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PencilIcon = exports.MinusIcon = exports.PlusIcon = exports.CheckIcon = exports.RightArrowIcon = exports.LeftArrowIcon = exports.PauseIcon = exports.PlayIcon = exports.MuteIcon = exports.VolumeIcon = exports.EnterIcon = exports.ReDoIcon = exports.UnDoIcon = exports.CloseIcon = exports.Icon = exports.registerIcon = exports.hasIcon = exports.getIcon = exports.rightArrowIcon = exports.leftArrowIcon = exports.pauseIcon = exports.playIcon = exports.muteIcon = exports.volumeIcon = exports.enterIcon = exports.reDoIcon = exports.unDoIcon = exports.closeIcon = void 0;
3
+ exports.FunctionIcon = exports.PencilIcon = exports.MinusIcon = exports.PlusIcon = exports.CheckIcon = exports.RightArrowIcon = exports.LeftArrowIcon = exports.PauseIcon = exports.PlayIcon = exports.MuteIcon = exports.VolumeIcon = exports.EnterIcon = exports.ReDoIcon = exports.UnDoIcon = exports.CloseIcon = exports.InputClearIcon = exports.Icon = exports.registerIcon = exports.hasIcon = exports.getIcon = exports.rightArrowIcon = exports.leftArrowIcon = exports.pauseIcon = exports.playIcon = exports.muteIcon = exports.volumeIcon = exports.enterIcon = exports.reDoIcon = exports.unDoIcon = exports.closeIcon = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  /**
6
6
  * @file Icon
@@ -92,6 +92,10 @@ var alert_success_svg_1 = (0, tslib_1.__importDefault)(require("../icons/alert-s
92
92
  var alert_info_svg_1 = (0, tslib_1.__importDefault)(require("../icons/alert-info.js"));
93
93
  var alert_warning_svg_1 = (0, tslib_1.__importDefault)(require("../icons/alert-warning.js"));
94
94
  var alert_danger_svg_1 = (0, tslib_1.__importDefault)(require("../icons/alert-danger.js"));
95
+ var function_svg_1 = (0, tslib_1.__importDefault)(require("../icons/function.js"));
96
+ exports.FunctionIcon = function_svg_1.default;
97
+ var input_clear_svg_1 = (0, tslib_1.__importDefault)(require("../icons/input-clear.js"));
98
+ exports.InputClearIcon = input_clear_svg_1.default;
95
99
  // 兼容原来的用法,后续不直接试用。
96
100
  exports.closeIcon = react_1.default.createElement(close_svg_1.default, null);
97
101
  exports.unDoIcon = react_1.default.createElement(undo_svg_1.default, null);
@@ -189,6 +193,8 @@ registerIcon('alert-info', alert_info_svg_1.default);
189
193
  registerIcon('alert-warning', alert_warning_svg_1.default);
190
194
  registerIcon('alert-danger', alert_danger_svg_1.default);
191
195
  registerIcon('tree-down', tree_down_svg_1.default);
196
+ registerIcon('function', function_svg_1.default);
197
+ registerIcon('input-clear', input_clear_svg_1.default);
192
198
  function Icon(_a) {
193
199
  var icon = _a.icon, className = _a.className, rest = (0, tslib_1.__rest)(_a, ["icon", "className"]);
194
200
  // jest 运行环境下,把指定的 icon 也输出到 snapshot 中。