@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.
- package/es/components/ComplexItem/index.js +65 -49
- package/es/components/LdAutoForm/index.js +4 -3
- package/es/components/LdGridForm/index.js +2 -1
- package/es/helper/form.js +1 -0
- package/es/helper/ldBuilder.js +8 -3
- package/es/locales/zh-CN.js +35 -0
- package/es/lowcode/engine/meta/fieldcomplex.props.default.json +1 -0
- package/es/lowcode/engine/meta/fieldcomplex.props.json +7 -0
- package/es/lowcode/engine/meta/form.props.json +3 -3
- package/es/lowcode/engine/meta/js-editor/auto-complete.json +18 -0
- package/es/lowcode/engine/meta/page.props.json +6 -0
- package/es/lowcode/engine/provider/ContextProvider/index.js +28 -5
- package/es/lowcode/engine/provider/ContextProvider/router.js +1 -1
- package/es/lowcode/engine/{tools → provider/ContextProvider}/usePageDataStore.js +9 -7
- package/es/lowcode/engine/{tools → provider/ContextProvider}/useTodo.js +4 -6
- package/es/lowcode/engine/provider/RemoteSourceProvider.js +1 -2
- package/es/lowcode/engine/tools/helper.js +7 -2
- package/es/lowcode/engine/tools/initDS.js +263 -0
- package/es/lowcode/engine/tools/useCombinedRefs.js +3 -2
- package/es/lowcode/painter/DesignOperator.js +2 -0
- package/es/lowcode/painter/components/TipIcon.js +16 -0
- package/es/lowcode/painter/components/VarEditor.js +456 -0
- package/es/lowcode/painter/components/code-editor/FullScreenEditor.js +2 -2
- package/es/lowcode/painter/components/code-editor/JSEditor.js +3 -1
- package/es/lowcode/painter/components/code-editor/VisionEditor.js +81 -0
- package/es/lowcode/painter/components/field-setting/SettingUI.js +17 -3
- package/es/lowcode/painter/components/field-setting/index.js +1 -1
- package/es/lowcode/painter/components/field-setting/meta/frontRules.js +1 -0
- package/es/lowcode/painter/index.js +1 -0
- package/es/lowcode/painter/panel-section/BlockEditor/index.js +14 -9
- package/es/lowcode/painter/panel-section/ComplexPop.js +242 -0
- package/es/lowcode/painter/panel-section/DataSetSelector.js +8 -0
- package/es/lowcode/painter/panel-section/FieldsSetting.js +9 -1
- package/es/lowcode/painter/panel-section/ImpExp.js +1 -27
- package/es/lowcode/painter/panel-section/PageVars.js +300 -0
- package/es/lowcode/painter/services/complexPop.js +21 -0
- package/es/lowcode/painter/style/design.less +1 -1
- package/es/lowcode/painter/style/page-vars.less +25 -0
- package/es/lowcode/preview/index.js +1 -0
- package/es/lowcode/view/Canvas.js +11 -34
- package/es/lowcode/view/Loading.js +5 -7
- package/es/lowcode/view/Page.js +37 -15
- package/es/lowcode/view/index.js +1 -0
- package/es/lowcode/view/lc-components/Dialog/index.js +4 -6
- package/es/lowcode/view/lc-components/FieldComplex/meta.json +7 -0
- package/es/lowcode/view/lc-components/Form/index.js +11 -4
- package/es/lowcode/view/lc-components/Form/meta.json +3 -3
- package/es/lowcode/view/lc-components/Page/meta.json +6 -0
- package/es/lowcode/view/lc-components/Table/index.js +17 -3
- package/es/lowcode/view/style/loading.less +14 -0
- package/es/utils/form.js +4 -4
- package/es/utils/grid.js +1 -1
- package/lib/components/ComplexItem/index.js +62 -47
- package/lib/components/LdAutoForm/index.js +3 -2
- package/lib/components/LdGridForm/index.js +2 -1
- package/lib/helper/form.js +1 -0
- package/lib/helper/ldBuilder.js +8 -3
- package/lib/locales/zh-CN.js +35 -0
- package/lib/lowcode/engine/meta/fieldcomplex.props.default.json +1 -0
- package/lib/lowcode/engine/meta/fieldcomplex.props.json +7 -0
- package/lib/lowcode/engine/meta/form.props.json +3 -3
- package/lib/lowcode/engine/meta/js-editor/auto-complete.json +18 -0
- package/lib/lowcode/engine/meta/page.props.json +6 -0
- package/lib/lowcode/engine/provider/ContextProvider/index.js +29 -12
- package/lib/lowcode/engine/provider/ContextProvider/router.js +1 -1
- package/lib/lowcode/engine/{tools → provider/ContextProvider}/usePageDataStore.js +9 -7
- package/lib/lowcode/engine/{tools → provider/ContextProvider}/useTodo.js +4 -6
- package/lib/lowcode/engine/provider/RemoteSourceProvider.js +2 -3
- package/lib/lowcode/engine/tools/helper.js +7 -2
- package/lib/lowcode/engine/tools/initDS.js +270 -0
- package/lib/lowcode/engine/tools/useCombinedRefs.js +2 -1
- package/lib/lowcode/painter/DesignOperator.js +2 -0
- package/lib/lowcode/painter/components/TipIcon.js +23 -0
- package/lib/lowcode/painter/components/VarEditor.js +463 -0
- package/lib/lowcode/painter/components/code-editor/FullScreenEditor.js +2 -2
- package/lib/lowcode/painter/components/code-editor/JSEditor.js +3 -1
- package/lib/lowcode/painter/components/code-editor/VisionEditor.js +88 -0
- package/lib/lowcode/painter/components/field-setting/SettingUI.js +17 -3
- package/lib/lowcode/painter/components/field-setting/index.js +1 -1
- package/lib/lowcode/painter/components/field-setting/meta/frontRules.js +1 -0
- package/lib/lowcode/painter/index.js +1 -0
- package/lib/lowcode/painter/panel-section/BlockEditor/index.js +13 -8
- package/lib/lowcode/painter/panel-section/ComplexPop.js +250 -0
- package/lib/lowcode/painter/panel-section/DataSetSelector.js +8 -0
- package/lib/lowcode/painter/panel-section/FieldsSetting.js +9 -1
- package/lib/lowcode/painter/panel-section/ImpExp.js +0 -26
- package/lib/lowcode/painter/panel-section/PageVars.js +308 -0
- package/lib/lowcode/painter/services/complexPop.js +28 -0
- package/lib/lowcode/painter/style/design.less +1 -1
- package/lib/lowcode/painter/style/page-vars.less +25 -0
- package/lib/lowcode/preview/index.js +1 -0
- package/lib/lowcode/view/Canvas.js +12 -35
- package/lib/lowcode/view/Loading.js +5 -7
- package/lib/lowcode/view/Page.js +35 -13
- package/lib/lowcode/view/index.js +1 -0
- package/lib/lowcode/view/lc-components/Dialog/index.js +4 -6
- package/lib/lowcode/view/lc-components/FieldComplex/meta.json +7 -0
- package/lib/lowcode/view/lc-components/Form/index.js +11 -4
- package/lib/lowcode/view/lc-components/Form/meta.json +3 -3
- package/lib/lowcode/view/lc-components/Page/meta.json +6 -0
- package/lib/lowcode/view/lc-components/Table/index.js +18 -4
- package/lib/lowcode/view/style/loading.less +14 -0
- package/lib/utils/form.js +3 -3
- package/lib/utils/grid.js +1 -1
- package/package.json +1 -1
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { useMemoizedFn } from 'ahooks';
|
|
3
|
-
import {
|
|
3
|
+
import { Typography } from 'luck-design/antd';
|
|
4
4
|
import styled from 'styled-components';
|
|
5
|
-
var
|
|
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(
|
|
29
|
+
}, blockName, /*#__PURE__*/React.createElement("span", {
|
|
31
30
|
onClick: handleCopyBlockId
|
|
32
|
-
},
|
|
33
|
-
|
|
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 {
|
|
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;
|