@luck-design-biz/luckda 1.0.0-1-alpha → 1.0.0-10-alpha

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 (105) hide show
  1. package/es/components/ComplexItem/index.js +65 -49
  2. package/es/components/LdAutoForm/index.js +4 -3
  3. package/es/components/LdGridForm/index.js +2 -1
  4. package/es/helper/form.js +1 -0
  5. package/es/helper/ldBuilder.js +8 -3
  6. package/es/locales/zh-CN.js +35 -0
  7. package/es/lowcode/engine/meta/fieldcomplex.props.default.json +1 -0
  8. package/es/lowcode/engine/meta/fieldcomplex.props.json +7 -0
  9. package/es/lowcode/engine/meta/form.props.json +3 -3
  10. package/es/lowcode/engine/meta/js-editor/auto-complete.json +18 -0
  11. package/es/lowcode/engine/meta/page.props.json +6 -0
  12. package/es/lowcode/engine/provider/ContextProvider/index.js +28 -5
  13. package/es/lowcode/engine/provider/ContextProvider/router.js +1 -1
  14. package/es/lowcode/engine/{tools → provider/ContextProvider}/usePageDataStore.js +9 -7
  15. package/es/lowcode/engine/{tools → provider/ContextProvider}/useTodo.js +4 -6
  16. package/es/lowcode/engine/provider/RemoteSourceProvider.js +1 -2
  17. package/es/lowcode/engine/tools/helper.js +7 -2
  18. package/es/lowcode/engine/tools/initDS.js +263 -0
  19. package/es/lowcode/engine/tools/useCombinedRefs.js +3 -2
  20. package/es/lowcode/painter/DesignOperator.js +2 -0
  21. package/es/lowcode/painter/components/TipIcon.js +16 -0
  22. package/es/lowcode/painter/components/VarEditor.js +456 -0
  23. package/es/lowcode/painter/components/code-editor/FullScreenEditor.js +2 -2
  24. package/es/lowcode/painter/components/code-editor/JSEditor.js +3 -1
  25. package/es/lowcode/painter/components/code-editor/VisionEditor.js +81 -0
  26. package/es/lowcode/painter/components/field-setting/SettingUI.js +17 -3
  27. package/es/lowcode/painter/components/field-setting/index.js +1 -1
  28. package/es/lowcode/painter/components/field-setting/meta/frontRules.js +1 -0
  29. package/es/lowcode/painter/index.js +1 -0
  30. package/es/lowcode/painter/panel-section/BlockEditor/index.js +14 -9
  31. package/es/lowcode/painter/panel-section/ComplexPop.js +242 -0
  32. package/es/lowcode/painter/panel-section/DataSetSelector.js +8 -0
  33. package/es/lowcode/painter/panel-section/FieldsSetting.js +9 -1
  34. package/es/lowcode/painter/panel-section/ImpExp.js +1 -27
  35. package/es/lowcode/painter/panel-section/PageVars.js +300 -0
  36. package/es/lowcode/painter/services/complexPop.js +21 -0
  37. package/es/lowcode/painter/style/design.less +1 -1
  38. package/es/lowcode/painter/style/page-vars.less +25 -0
  39. package/es/lowcode/preview/index.js +1 -0
  40. package/es/lowcode/view/Canvas.js +11 -34
  41. package/es/lowcode/view/Loading.js +5 -7
  42. package/es/lowcode/view/Page.js +37 -15
  43. package/es/lowcode/view/index.js +1 -0
  44. package/es/lowcode/view/lc-components/Dialog/index.js +4 -6
  45. package/es/lowcode/view/lc-components/FieldComplex/meta.json +7 -0
  46. package/es/lowcode/view/lc-components/Form/index.js +11 -4
  47. package/es/lowcode/view/lc-components/Form/meta.json +3 -3
  48. package/es/lowcode/view/lc-components/Page/meta.json +6 -0
  49. package/es/lowcode/view/lc-components/Table/index.js +17 -3
  50. package/es/lowcode/view/style/loading.less +14 -0
  51. package/es/utils/form.js +4 -4
  52. package/es/utils/grid.js +1 -1
  53. package/lib/components/ComplexItem/index.js +62 -47
  54. package/lib/components/LdAutoForm/index.js +3 -2
  55. package/lib/components/LdGridForm/index.js +2 -1
  56. package/lib/helper/form.js +1 -0
  57. package/lib/helper/ldBuilder.js +8 -3
  58. package/lib/locales/zh-CN.js +35 -0
  59. package/lib/lowcode/engine/meta/fieldcomplex.props.default.json +1 -0
  60. package/lib/lowcode/engine/meta/fieldcomplex.props.json +7 -0
  61. package/lib/lowcode/engine/meta/form.props.json +3 -3
  62. package/lib/lowcode/engine/meta/js-editor/auto-complete.json +18 -0
  63. package/lib/lowcode/engine/meta/page.props.json +6 -0
  64. package/lib/lowcode/engine/provider/ContextProvider/index.js +29 -12
  65. package/lib/lowcode/engine/provider/ContextProvider/router.js +1 -1
  66. package/lib/lowcode/engine/{tools → provider/ContextProvider}/usePageDataStore.js +9 -7
  67. package/lib/lowcode/engine/{tools → provider/ContextProvider}/useTodo.js +4 -6
  68. package/lib/lowcode/engine/provider/RemoteSourceProvider.js +2 -3
  69. package/lib/lowcode/engine/tools/helper.js +7 -2
  70. package/lib/lowcode/engine/tools/initDS.js +270 -0
  71. package/lib/lowcode/engine/tools/useCombinedRefs.js +2 -1
  72. package/lib/lowcode/painter/DesignOperator.js +2 -0
  73. package/lib/lowcode/painter/components/TipIcon.js +23 -0
  74. package/lib/lowcode/painter/components/VarEditor.js +463 -0
  75. package/lib/lowcode/painter/components/code-editor/FullScreenEditor.js +2 -2
  76. package/lib/lowcode/painter/components/code-editor/JSEditor.js +3 -1
  77. package/lib/lowcode/painter/components/code-editor/VisionEditor.js +88 -0
  78. package/lib/lowcode/painter/components/field-setting/SettingUI.js +17 -3
  79. package/lib/lowcode/painter/components/field-setting/index.js +1 -1
  80. package/lib/lowcode/painter/components/field-setting/meta/frontRules.js +1 -0
  81. package/lib/lowcode/painter/index.js +1 -0
  82. package/lib/lowcode/painter/panel-section/BlockEditor/index.js +13 -8
  83. package/lib/lowcode/painter/panel-section/ComplexPop.js +250 -0
  84. package/lib/lowcode/painter/panel-section/DataSetSelector.js +8 -0
  85. package/lib/lowcode/painter/panel-section/FieldsSetting.js +9 -1
  86. package/lib/lowcode/painter/panel-section/ImpExp.js +0 -26
  87. package/lib/lowcode/painter/panel-section/PageVars.js +308 -0
  88. package/lib/lowcode/painter/services/complexPop.js +28 -0
  89. package/lib/lowcode/painter/style/design.less +1 -1
  90. package/lib/lowcode/painter/style/page-vars.less +25 -0
  91. package/lib/lowcode/preview/index.js +1 -0
  92. package/lib/lowcode/view/Canvas.js +12 -35
  93. package/lib/lowcode/view/Loading.js +5 -7
  94. package/lib/lowcode/view/Page.js +35 -13
  95. package/lib/lowcode/view/index.js +1 -0
  96. package/lib/lowcode/view/lc-components/Dialog/index.js +4 -6
  97. package/lib/lowcode/view/lc-components/FieldComplex/meta.json +7 -0
  98. package/lib/lowcode/view/lc-components/Form/index.js +11 -4
  99. package/lib/lowcode/view/lc-components/Form/meta.json +3 -3
  100. package/lib/lowcode/view/lc-components/Page/meta.json +6 -0
  101. package/lib/lowcode/view/lc-components/Table/index.js +18 -4
  102. package/lib/lowcode/view/style/loading.less +14 -0
  103. package/lib/utils/form.js +3 -3
  104. package/lib/utils/grid.js +1 -1
  105. package/package.json +1 -1
@@ -1,11 +1,12 @@
1
1
  import React from 'react';
2
2
  import { useMemoizedFn } from 'ahooks';
3
- import { Icon, message } from 'luck-design/antd';
3
+ import { Typography } from 'luck-design/antd';
4
4
  import styled from 'styled-components';
5
- var BlockIdSpan = styled.span.withConfig({
5
+ var Paragraph = Typography.Paragraph;
6
+ var BlockIdSpan = styled(Paragraph).withConfig({
6
7
  displayName: "BlockIdSpan",
7
8
  componentId: "luckda-6530__sc-gbohir-0"
8
- })(["color:#595959;text-decoration:var(--ant-primary-color) wavy underline;cursor:copy;padding:0 4px;"]);
9
+ })(["display:inline-block;margin:0;color:#595959;text-decoration:var(--ant-primary-color) wavy underline;cursor:copy;padding:0 4px;"]);
9
10
  var BlockEditor = function BlockEditor(_ref) {
10
11
  var blockName = _ref.blockName,
11
12
  blockId = _ref.blockId,
@@ -18,8 +19,6 @@ var BlockEditor = function BlockEditor(_ref) {
18
19
  });
19
20
  var handleCopyBlockId = useMemoizedFn(function (e) {
20
21
  e.stopPropagation();
21
- navigator.clipboard.writeText(blockId);
22
- message.success('区块ID已复制到剪切板');
23
22
  });
24
23
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
25
24
  onClick: handleClick,
@@ -27,10 +26,16 @@ var BlockEditor = function BlockEditor(_ref) {
27
26
  color: 'var(--ant-primary-color)',
28
27
  cursor: 'pointer'
29
28
  } : {}
30
- }, blockName, /*#__PURE__*/React.createElement(BlockIdSpan, {
29
+ }, blockName, /*#__PURE__*/React.createElement("span", {
31
30
  onClick: handleCopyBlockId
32
- }, blockId, /*#__PURE__*/React.createElement(Icon, {
33
- type: "copy"
34
- }))));
31
+ }, /*#__PURE__*/React.createElement(BlockIdSpan, {
32
+ style: {
33
+ display: 'inline-block',
34
+ margin: 0
35
+ },
36
+ copyable: {
37
+ text: blockId
38
+ }
39
+ }, blockId))));
35
40
  };
36
41
  export default BlockEditor;
@@ -0,0 +1,242 @@
1
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
+ import _extends from "@babel/runtime/helpers/esm/extends";
4
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
5
+ var _excluded = ["field", "fieldName", "renderItemRight", "onChange", "sortable", "editable"];
6
+ import React, { useEffect, useState, useLayoutEffect } from 'react';
7
+ import { useCreation, useMemoizedFn } from 'ahooks';
8
+ import { keyBy, reduce, remove, omit, map, cloneDeep } from 'lodash';
9
+ import styled from 'styled-components';
10
+ import { Switch, Spin, Divider, Tooltip, Icon, Input } from 'luck-design/antd';
11
+ import { formatMessage } from '@luck-design-biz/base/utils';
12
+ import { ListEditor, ListEditorItem } from "../components/ListEditor";
13
+ import Collapse from "../components/Collapse";
14
+ import { SortBox, SortItem } from "../components/SortBox";
15
+ import PanelItem from "../components/PanelItem";
16
+ import { getFields } from "../services/complexPop";
17
+ var _I18N_PREFIX_ = 'luckda.lowcode.painter.panel-section.complexPop';
18
+ var DividerSpan = styled.span.withConfig({
19
+ displayName: "DividerSpan",
20
+ componentId: "luckda-6530__sc-lmsle1-0"
21
+ })(["font-size:12px;color:var(--luck-text-color);"]);
22
+ var FieldKey = styled.div.withConfig({
23
+ displayName: "FieldKey",
24
+ componentId: "luckda-6530__sc-lmsle1-1"
25
+ })(["width:200px;margin-left:4px;display:inline-block;white-space:nowrap;word-break:keep-all;text-overflow:ellipsis;overflow:hidden;"]);
26
+ var ListItem = function ListItem(_ref) {
27
+ var field = _ref.field,
28
+ fieldName = _ref.fieldName,
29
+ renderItemRight = _ref.renderItemRight,
30
+ _onChange = _ref.onChange,
31
+ sortable = _ref.sortable,
32
+ editable = _ref.editable,
33
+ props = _objectWithoutProperties(_ref, _excluded);
34
+ return /*#__PURE__*/React.createElement(ListEditorItem, _extends({
35
+ key: field,
36
+ left: /*#__PURE__*/React.createElement(Tooltip, {
37
+ title: field
38
+ }, editable ? /*#__PURE__*/React.createElement(Input, {
39
+ value: fieldName,
40
+ size: "small",
41
+ style: {
42
+ width: '200px'
43
+ },
44
+ onChange: function onChange(e) {
45
+ return _onChange(field, e.target.value);
46
+ }
47
+ }) : /*#__PURE__*/React.createElement(FieldKey, null, " ", fieldName, " ")),
48
+ right: renderItemRight({
49
+ field: field,
50
+ title: fieldName
51
+ }),
52
+ item: field,
53
+ sortable: sortable
54
+ }, props));
55
+ };
56
+ var ComplexPop = function ComplexPop(_ref2) {
57
+ var nodeId = _ref2.nodeId,
58
+ settings = _ref2.settings,
59
+ defaultValue = _ref2.defaultValue,
60
+ onChange = _ref2.onChange;
61
+ var _useState = useState(defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.show),
62
+ _useState2 = _slicedToArray(_useState, 2),
63
+ show = _useState2[0],
64
+ setShow = _useState2[1];
65
+ var _useState3 = useState((defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.fields) || []),
66
+ _useState4 = _slicedToArray(_useState3, 2),
67
+ fields = _useState4[0],
68
+ setFields = _useState4[1];
69
+ var _useState5 = useState(null),
70
+ _useState6 = _slicedToArray(_useState5, 2),
71
+ allFields = _useState6[0],
72
+ setAllFields = _useState6[1];
73
+ var _useCreation = useCreation(function () {
74
+ var _nodeId$split = nodeId.split('.'),
75
+ _nodeId$split2 = _slicedToArray(_nodeId$split, 3),
76
+ _ = _nodeId$split2[0],
77
+ blockid = _nodeId$split2[1],
78
+ fieldid = _nodeId$split2[2];
79
+ var blocksObj = keyBy(settings === null || settings === void 0 ? void 0 : settings.blocks, 'id');
80
+ if (blocksObj[blockid]) {
81
+ var _fieldObj$fieldid;
82
+ var fieldObj = keyBy(blocksObj[blockid].fields, 'field');
83
+ return ((_fieldObj$fieldid = fieldObj[fieldid]) === null || _fieldObj$fieldid === void 0 ? void 0 : _fieldObj$fieldid.complexConfig) || {};
84
+ }
85
+ return {};
86
+ }, [nodeId, settings === null || settings === void 0 ? void 0 : settings.blocks]),
87
+ isTree = _useCreation.isTree,
88
+ datasetKey = _useCreation.datasetKey,
89
+ dataModelKey = _useCreation.dataModelKey;
90
+ useEffect(function () {
91
+ if (!isTree && show && datasetKey && dataModelKey && !allFields) {
92
+ getFields({
93
+ datasetCode: datasetKey,
94
+ dataModelKey: dataModelKey
95
+ }).then(function (res) {
96
+ var code = res.code,
97
+ data = res.data;
98
+ if (code === 1) {
99
+ var _data = reduce(data, function (result, item) {
100
+ result[item.field] = item.field_name;
101
+ return result;
102
+ }, {});
103
+ setAllFields(_data);
104
+ }
105
+ });
106
+ }
107
+ }, [isTree, show, datasetKey, dataModelKey, allFields]);
108
+ useLayoutEffect(function () {
109
+ onChange({
110
+ show: show,
111
+ fields: fields
112
+ });
113
+ }, [show, fields]);
114
+ var renderItemDeleteRight = useMemoizedFn(function (data) {
115
+ return /*#__PURE__*/React.createElement(Icon, {
116
+ type: "delete",
117
+ style: {
118
+ margin: '0 4px',
119
+ cursor: 'pointer',
120
+ color: 'var(--luck-color-danger)'
121
+ },
122
+ onClick: function onClick() {
123
+ var _fields = cloneDeep(fields);
124
+ remove(_fields, function (item) {
125
+ return item.field === data.field;
126
+ });
127
+ setFields(_fields);
128
+ }
129
+ });
130
+ });
131
+ var renderItemAddRight = useMemoizedFn(function (data) {
132
+ return /*#__PURE__*/React.createElement(Icon, {
133
+ type: "plus-circle",
134
+ style: {
135
+ margin: '0 4px',
136
+ cursor: 'pointer',
137
+ color: 'var(--ant-primary-color)'
138
+ },
139
+ onClick: function onClick() {
140
+ return setFields(fields.concat(data));
141
+ }
142
+ });
143
+ });
144
+ var handleChange = useMemoizedFn(function (field, value) {
145
+ setFields(fields.map(function (item) {
146
+ return item.field === field ? _objectSpread(_objectSpread({}, item), {}, {
147
+ title: value
148
+ }) : item;
149
+ }));
150
+ });
151
+ var handleSortFields = useMemoizedFn(function (sortItems) {
152
+ var oldItems = cloneDeep(fields);
153
+ var newItems = oldItems.sort(function (a, b) {
154
+ var indexA = sortItems.indexOf(a.field);
155
+ var indexB = sortItems.indexOf(b.field);
156
+ return indexA - indexB;
157
+ });
158
+ setFields(newItems);
159
+ });
160
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(PanelItem, {
161
+ field: "showPop",
162
+ label: formatMessage({
163
+ id: "".concat(_I18N_PREFIX_, ".assisted"),
164
+ label: "辅助选择"
165
+ })
166
+ }, /*#__PURE__*/React.createElement(Switch, {
167
+ size: "small",
168
+ defaultChecked: defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.show,
169
+ onChange: function onChange(val) {
170
+ setShow(val);
171
+ if (!val) setFields([]);
172
+ }
173
+ })), !isTree && show && /*#__PURE__*/React.createElement(Collapse, {
174
+ label: formatMessage({
175
+ id: "".concat(_I18N_PREFIX_, ".assistedGrid"),
176
+ label: '辅助弹窗显示字段'
177
+ })
178
+ }, /*#__PURE__*/React.createElement("div", {
179
+ style: {
180
+ height: 'auto',
181
+ padding: '0 16px'
182
+ }
183
+ }, /*#__PURE__*/React.createElement(Spin, {
184
+ spinning: !allFields
185
+ }, /*#__PURE__*/React.createElement(Divider, {
186
+ orientation: "left",
187
+ style: {
188
+ marginTop: 0
189
+ }
190
+ }, /*#__PURE__*/React.createElement(DividerSpan, null, formatMessage({
191
+ id: "".concat(_I18N_PREFIX_, ".assistedGridFields"),
192
+ label: '展示区'
193
+ }))), /*#__PURE__*/React.createElement(SortBox, {
194
+ datas: fields.map(function (f) {
195
+ return f.field;
196
+ }),
197
+ onChange: handleSortFields
198
+ }, /*#__PURE__*/React.createElement(ListEditor, {
199
+ style: {
200
+ marginTop: 8
201
+ },
202
+ suppressAdd: true
203
+ }, fields.map(function (_ref3) {
204
+ var field = _ref3.field,
205
+ title = _ref3.title;
206
+ return /*#__PURE__*/React.createElement(SortItem, {
207
+ key: field,
208
+ id: field
209
+ }, /*#__PURE__*/React.createElement(ListItem, {
210
+ field: field,
211
+ fieldName: title,
212
+ renderItemRight: renderItemDeleteRight,
213
+ sortable: true,
214
+ editable: true,
215
+ onChange: handleChange
216
+ }));
217
+ }))), /*#__PURE__*/React.createElement(Divider, {
218
+ orientation: "left",
219
+ style: {
220
+ marginTop: 0
221
+ }
222
+ }, /*#__PURE__*/React.createElement(DividerSpan, null, formatMessage({
223
+ id: "".concat(_I18N_PREFIX_, ".gridFields"),
224
+ label: '可选区'
225
+ }))), /*#__PURE__*/React.createElement(ListEditor, {
226
+ style: {
227
+ marginTop: 8
228
+ },
229
+ suppressAdd: true
230
+ }, map(omit(allFields, fields.map(function (f) {
231
+ return f.field;
232
+ })), function (fieldName, field) {
233
+ return /*#__PURE__*/React.createElement(ListItem, {
234
+ key: field,
235
+ field: field,
236
+ fieldName: fieldName,
237
+ renderItemRight: renderItemAddRight,
238
+ sortable: false
239
+ });
240
+ }))))));
241
+ };
242
+ export default ComplexPop;
@@ -95,6 +95,14 @@ var DataSetSelector = function DataSetSelector(_ref) {
95
95
  restProps.align = alignMapping[_extra.scell_alignment];
96
96
  restProps.headerAlign = alignMapping[_extra.sheading_alignment];
97
97
  }
98
+ if (f.property === "complex") {
99
+ var _extra2 = JSON.parse(f.extra || '{}');
100
+ restProps.complexConfig = {
101
+ isTree: _extra2.opt_show_tree,
102
+ datasetKey: _extra2.opt_dataset,
103
+ dataModelKey: _extra2.opt_data_model
104
+ };
105
+ }
98
106
  return _objectSpread({
99
107
  uid: f.uid,
100
108
  field: f.field
@@ -16,7 +16,7 @@ import { fetchFieldsByDataset } from "../../constants/api-url";
16
16
  import { listReducer, getLDMetaAttr } from "../../engine/tools/helper";
17
17
  import styles from "../style/fields-setting.less";
18
18
  var _I18N_PREFIX_ = 'luckda.lowcode.painter.panel-section.fieldsSetting';
19
- var _PICK_KEYS_ = ['id', 'uid', 'field', 'width', 'align', 'headerAlign', 'pinned', 'tip', 'col', 'row', 'note', 'placeholder', 'fieldAliasName'];
19
+ var _PICK_KEYS_ = ['id', 'uid', 'field', 'width', 'align', 'headerAlign', 'pinned', 'tip', 'render', 'col', 'row', 'note', 'placeholder', 'fieldAliasName', 'complexConfig'];
20
20
  var Header = styled.div.withConfig({
21
21
  displayName: "Header",
22
22
  componentId: "luckda-6530__sc-gcwvp1-0"
@@ -100,6 +100,14 @@ var FieldsSetting = function FieldsSetting(_ref) {
100
100
  restProps.align = alignMapping[extra.scell_alignment];
101
101
  restProps.headerAlign = alignMapping[extra.sheading_alignment];
102
102
  }
103
+ if (_fieldData.property === "complex") {
104
+ var _extra = JSON.parse(_fieldData.extra || '{}');
105
+ restProps.complexConfig = {
106
+ isTree: _extra.opt_show_tree,
107
+ datasetKey: _extra.opt_dataset,
108
+ dataModelKey: _extra.opt_data_model
109
+ };
110
+ }
103
111
  return _objectSpread({
104
112
  uid: id,
105
113
  field: detail[id].field
@@ -1,12 +1,11 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  import React, { useState } from 'react';
3
3
  import { useMemoizedFn, useSetState, useUpdateEffect } from 'ahooks';
4
- import { Checkbox, Row, Col, Input, Switch, Select, Spin, Tooltip, Radio } from 'luck-design/antd';
4
+ import { Input, Switch, Select, Tooltip, Radio } from 'luck-design/antd';
5
5
  import { formatMessage } from '@luck-design-biz/base/utils';
6
6
  import { isString } from 'lodash';
7
7
  import { useRemoteSource } from "../../engine/provider/ContextProvider";
8
8
  import PanelItem from "../components/PanelItem";
9
- import styles from "../style/impexp.less";
10
9
  var _I18N_PREFIX_ = 'luckda.lowcode.painter.panel-section.impexp';
11
10
  var ImpExp = function ImpExp(_ref) {
12
11
  var defaultValue = _ref.defaultValue,
@@ -26,17 +25,6 @@ var ImpExp = function ImpExp(_ref) {
26
25
  useUpdateEffect(function () {
27
26
  onChange(state);
28
27
  }, [state]);
29
- var handleCheckboxChange = useMemoizedFn(function (e) {
30
- if (e.target.value === 'import') {
31
- setState({
32
- import: e.target.checked
33
- });
34
- } else if (e.target.value === 'export') {
35
- setState({
36
- export: e.target.checked
37
- });
38
- }
39
- });
40
28
  var handleInputChange = useMemoizedFn(function (field, e) {
41
29
  var value = e.target.value.trim();
42
30
  var _val = value === '' ? true : value;
@@ -51,20 +39,6 @@ var ImpExp = function ImpExp(_ref) {
51
39
  });
52
40
  }
53
41
  });
54
- var handleSwitchChangeExport = useMemoizedFn(function (field, e) {
55
- var _value = field;
56
- setState({
57
- exportType: _value,
58
- export: true
59
- });
60
- });
61
- var handleSwitchChangeImport = useMemoizedFn(function (field, e) {
62
- var _value = field;
63
- setState({
64
- importType: _value,
65
- import: true
66
- });
67
- });
68
42
  var handleRadioChangeExport = useMemoizedFn(function (value, _ref2) {
69
43
  var key = _ref2.key;
70
44
  var _value = value;
@@ -0,0 +1,300 @@
1
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
+ import React, { useReducer, useState } from 'react';
4
+ import { useMemoizedFn, useUpdateEffect, useCreation, useDebounceFn, useSetState } from 'ahooks';
5
+ import { Select, Input, Button, Menu, Dropdown, Drawer, Modal } from 'luck-design/antd';
6
+ import styled from 'styled-components';
7
+ import { reduce, isNil } from 'lodash';
8
+ import { suid, formatMessage } from '@luck-design-biz/base/utils';
9
+ import { SortBox, SortItem } from "../components/SortBox";
10
+ import { ListEditor, ListEditorItem } from "../components/ListEditor";
11
+ import { listReducer } from "../../engine/tools/helper";
12
+ import VarEditor from "../components/VarEditor";
13
+ import TipIcon from "../components/TipIcon";
14
+ import styles from "../style/page-vars.less";
15
+ var _I18N_PREFIX_ = 'luckda.lowcode.painter.pageVars';
16
+ var Wrapper = styled.div.withConfig({
17
+ displayName: "Wrapper",
18
+ componentId: "luckda-6530__sc-1qdz6c5-0"
19
+ })(["padding:0 12px;"]);
20
+ var SearchBar = styled.div.withConfig({
21
+ displayName: "SearchBar",
22
+ componentId: "luckda-6530__sc-1qdz6c5-1"
23
+ })(["display:flex;margin-bottom:8px;"]);
24
+ var ItemWrapper = styled.div.withConfig({
25
+ displayName: "ItemWrapper",
26
+ componentId: "luckda-6530__sc-1qdz6c5-2"
27
+ })(["display:flex;align-items:center;"]);
28
+ var _TYPES_ = {
29
+ var: {
30
+ name: formatMessage({
31
+ id: "".concat(_I18N_PREFIX_, ".var"),
32
+ label: '变量'
33
+ }),
34
+ color: '#87d068'
35
+ },
36
+ api: {
37
+ name: formatMessage({
38
+ id: "".concat(_I18N_PREFIX_, ".api"),
39
+ label: '远程 API'
40
+ }),
41
+ color: '#108ee9'
42
+ }
43
+ };
44
+ var _TYPE_KEYS_ = Object.keys(_TYPES_);
45
+ var PageVars = function PageVars(_ref) {
46
+ var _ref$defaultValue = _ref.defaultValue,
47
+ defaultValue = _ref$defaultValue === void 0 ? [] : _ref$defaultValue,
48
+ onChange = _ref.onChange;
49
+ var _useReducer = useReducer(listReducer, defaultValue),
50
+ _useReducer2 = _slicedToArray(_useReducer, 2),
51
+ vars = _useReducer2[0],
52
+ dispatch = _useReducer2[1];
53
+ var _useSetState = useSetState({}),
54
+ _useSetState2 = _slicedToArray(_useSetState, 2),
55
+ filter = _useSetState2[0],
56
+ setFilter = _useSetState2[1];
57
+ useUpdateEffect(function () {
58
+ onChange(vars);
59
+ }, [vars]);
60
+ var _useState = useState(null),
61
+ _useState2 = _slicedToArray(_useState, 2),
62
+ currentItem = _useState2[0],
63
+ setCurrentItem = _useState2[1];
64
+ var handleSortChange = useMemoizedFn(function (sortItems) {
65
+ dispatch({
66
+ type: 'sort',
67
+ payload: sortItems
68
+ });
69
+ });
70
+ var handleAdd = useMemoizedFn(function (_item) {
71
+ dispatch({
72
+ type: 'add',
73
+ payload: _item
74
+ });
75
+ setCurrentItem(_item);
76
+ });
77
+ var _useDebounceFn = useDebounceFn(function (keyword) {
78
+ return setFilter({
79
+ keyword: isNil(keyword) || keyword === '' ? void 0 : keyword
80
+ });
81
+ }, {
82
+ wait: 400
83
+ }),
84
+ handleSearch = _useDebounceFn.run;
85
+ var renderItemLeft = useMemoizedFn(function (item) {
86
+ var _TYPES_$item$type = _TYPES_[item.type],
87
+ name = _TYPES_$item$type.name,
88
+ color = _TYPES_$item$type.color;
89
+ return /*#__PURE__*/React.createElement(ItemWrapper, null, /*#__PURE__*/React.createElement("span", {
90
+ style: {
91
+ color: color
92
+ }
93
+ }, name.substring(0, 2)), /*#__PURE__*/React.createElement("span", {
94
+ style: {
95
+ marginLeft: 4,
96
+ fontWeight: 'bold'
97
+ }
98
+ }, item.name));
99
+ });
100
+ var renderItemRight = useMemoizedFn(function (item) {
101
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TipIcon, {
102
+ type: "edit",
103
+ onClick: function onClick() {
104
+ return setCurrentItem(item);
105
+ },
106
+ style: {
107
+ marginRight: 4,
108
+ cursor: 'pointer'
109
+ },
110
+ title: formatMessage({
111
+ id: "".concat(_I18N_PREFIX_, ".edit"),
112
+ label: '编辑'
113
+ })
114
+ }), /*#__PURE__*/React.createElement(TipIcon, {
115
+ type: "copy",
116
+ onClick: function onClick() {
117
+ return handleAdd(_objectSpread(_objectSpread({}, item), {}, {
118
+ id: suid(),
119
+ name: "".concat(item.name, "_copy")
120
+ }));
121
+ },
122
+ style: {
123
+ marginRight: 4,
124
+ cursor: 'pointer'
125
+ },
126
+ title: formatMessage({
127
+ id: "".concat(_I18N_PREFIX_, ".copy"),
128
+ label: '拷贝'
129
+ })
130
+ }), /*#__PURE__*/React.createElement(TipIcon, {
131
+ type: "delete",
132
+ onClick: function onClick() {
133
+ return Modal.confirm({
134
+ title: formatMessage({
135
+ id: "".concat(_I18N_PREFIX_, ".confirm.delete"),
136
+ label: "\u786E\u8BA4\u5220\u9664\u5417\uFF1F"
137
+ }),
138
+ onOk: function onOk() {
139
+ if (currentItem.id === item.id) {
140
+ setCurrentItem(null);
141
+ }
142
+ dispatch({
143
+ type: 'delete',
144
+ payload: item.id
145
+ });
146
+ }
147
+ });
148
+ },
149
+ style: {
150
+ marginRight: 4,
151
+ cursor: 'pointer'
152
+ },
153
+ title: formatMessage({
154
+ id: "".concat(_I18N_PREFIX_, ".delete"),
155
+ label: '删除'
156
+ })
157
+ }));
158
+ });
159
+ var menu = useCreation(function () {
160
+ return /*#__PURE__*/React.createElement(Menu, {
161
+ onClick: function onClick(_ref2) {
162
+ var key = _ref2.key;
163
+ var id = suid();
164
+ handleAdd(_objectSpread({
165
+ id: id,
166
+ type: key,
167
+ name: id
168
+ }, {
169
+ var: {
170
+ data: ''
171
+ },
172
+ api: {
173
+ data: {
174
+ auto: true,
175
+ taskType: 'parallel',
176
+ method: 'get'
177
+ }
178
+ }
179
+ }[key]));
180
+ }
181
+ }, _TYPE_KEYS_.map(function (key) {
182
+ return /*#__PURE__*/React.createElement(Menu.Item, {
183
+ key: key
184
+ }, _TYPES_[key].name);
185
+ }));
186
+ }, []);
187
+ var _vars = useCreation(function () {
188
+ var keyword = filter.keyword,
189
+ type = filter.type;
190
+ var _vars = isNil(type) ? vars : vars.filter(function (_item) {
191
+ return _item.type === type;
192
+ });
193
+ if (isNil(keyword) || keyword === '') {
194
+ return _vars;
195
+ }
196
+ return reduce(_vars, function (ret, _item) {
197
+ if (JSON.stringify(_item).includes(keyword)) {
198
+ ret.push(_item);
199
+ }
200
+ return ret;
201
+ }, []);
202
+ }, [filter, vars]);
203
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Wrapper, null, /*#__PURE__*/React.createElement(SearchBar, null, /*#__PURE__*/React.createElement(Select, {
204
+ size: "small",
205
+ defaultValue: "all",
206
+ style: {
207
+ width: 100,
208
+ marginRight: 8
209
+ },
210
+ onSelect: function onSelect(key) {
211
+ return setFilter({
212
+ type: key === 'all' ? void 0 : key
213
+ });
214
+ }
215
+ }, /*#__PURE__*/React.createElement(Select.Option, {
216
+ value: "all"
217
+ }, formatMessage({
218
+ id: "".concat(_I18N_PREFIX_, ".all"),
219
+ label: '全部'
220
+ })), _TYPE_KEYS_.map(function (key) {
221
+ return /*#__PURE__*/React.createElement(Select.Option, {
222
+ key: key,
223
+ value: key
224
+ }, _TYPES_[key].name);
225
+ })), /*#__PURE__*/React.createElement(Input.Search, {
226
+ size: "small",
227
+ allowClear: true,
228
+ style: {
229
+ flex: 1
230
+ },
231
+ placeholder: formatMessage({
232
+ id: "".concat(_I18N_PREFIX_, ".placeholder.search"),
233
+ label: '请输入'
234
+ }),
235
+ onChange: function onChange(e) {
236
+ return handleSearch(e.target.value);
237
+ },
238
+ onSearch: handleSearch
239
+ })), /*#__PURE__*/React.createElement(Dropdown, {
240
+ overlay: menu,
241
+ trigger: ['click'],
242
+ getPopupContainer: function getPopupContainer() {
243
+ return document.getElementById('lc-design-workspace');
244
+ }
245
+ }, /*#__PURE__*/React.createElement(Button, {
246
+ size: "small",
247
+ type: "primary"
248
+ }, formatMessage({
249
+ id: "".concat(_I18N_PREFIX_, ".add"),
250
+ label: '添加'
251
+ }))), /*#__PURE__*/React.createElement(SortBox, {
252
+ datas: vars.map(function (_ref3) {
253
+ var id = _ref3.id;
254
+ return id;
255
+ }),
256
+ onChange: handleSortChange
257
+ }, /*#__PURE__*/React.createElement(ListEditor, {
258
+ style: {
259
+ marginTop: 8
260
+ },
261
+ suppressAdd: true
262
+ }, _vars.map(function (item) {
263
+ return /*#__PURE__*/React.createElement(SortItem, {
264
+ key: item.id,
265
+ id: item.id
266
+ }, /*#__PURE__*/React.createElement(ListEditorItem, {
267
+ sortable: isNil(filter.keyword) && isNil(filter.type),
268
+ left: renderItemLeft(item),
269
+ right: renderItemRight(item),
270
+ item: item,
271
+ dispatch: dispatch
272
+ }));
273
+ })))), currentItem ? /*#__PURE__*/React.createElement(Drawer, {
274
+ visible: true,
275
+ width: 420,
276
+ mask: false,
277
+ onClose: function onClose() {
278
+ return setCurrentItem(null);
279
+ },
280
+ title: formatMessage({
281
+ id: "".concat(_I18N_PREFIX_, ".edit"),
282
+ label: '编辑数据源'
283
+ }),
284
+ getContainer: function getContainer() {
285
+ return document.getElementById('lc-design-workspace');
286
+ },
287
+ destroyOnClose: true,
288
+ className: styles['lc-painter-panel-page-vars-drawer'],
289
+ style: {
290
+ position: 'absolute',
291
+ transform: 'none',
292
+ right: 320
293
+ }
294
+ }, /*#__PURE__*/React.createElement(VarEditor, {
295
+ key: currentItem.id,
296
+ item: currentItem,
297
+ dispatch: dispatch
298
+ })) : null);
299
+ };
300
+ export default PageVars;