@tmagic/editor 1.8.0-beta.11 → 1.8.0-beta.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/es/Editor.vue_vue_type_script_setup_true_lang.js +7 -4
- package/dist/es/components/CodeBlockEditor.vue_vue_type_script_setup_true_lang.js +5 -1
- package/dist/es/components/CodeParams.vue_vue_type_script_setup_true_lang.js +2 -1
- package/dist/es/components/CompareForm.vue_vue_type_script_setup_true_lang.js +18 -123
- package/dist/es/components/FloatingBox.vue_vue_type_script_setup_true_lang.js +60 -14
- package/dist/es/components/ScrollBar.js +0 -1
- package/dist/es/components/ViewForm.js +5 -0
- package/dist/es/components/ViewForm.vue_vue_type_script_setup_true_lang.js +58 -0
- package/dist/es/editorProps.js +6 -1
- package/dist/es/fields/CodeSelect.vue_vue_type_script_setup_true_lang.js +15 -3
- package/dist/es/fields/CondOpSelect.vue_vue_type_script_setup_true_lang.js +2 -17
- package/dist/es/fields/DataSourceFieldSelect/FieldSelect.vue_vue_type_script_setup_true_lang.js +2 -1
- package/dist/es/fields/DataSourceFields.vue_vue_type_script_setup_true_lang.js +7 -0
- package/dist/es/fields/DataSourceInput.vue_vue_type_script_setup_true_lang.js +5 -17
- package/dist/es/fields/DataSourceMocks.vue_vue_type_script_setup_true_lang.js +4 -0
- package/dist/es/fields/DisplayConds.vue_vue_type_script_setup_true_lang.js +29 -3
- package/dist/es/fields/EventSelect.vue_vue_type_script_setup_true_lang.js +50 -88
- package/dist/es/fields/StyleSetter/Index.vue_vue_type_script_setup_true_lang.js +2 -5
- package/dist/es/fields/StyleSetter/pro/Background.vue_vue_type_script_setup_true_lang.js +48 -23
- package/dist/es/fields/StyleSetter/pro/Border.vue_vue_type_script_setup_true_lang.js +6 -3
- package/dist/es/fields/StyleSetter/pro/Font.vue_vue_type_script_setup_true_lang.js +28 -22
- package/dist/es/fields/StyleSetter/pro/Layout.vue_vue_type_script_setup_true_lang.js +28 -22
- package/dist/es/fields/StyleSetter/pro/Position.vue_vue_type_script_setup_true_lang.js +28 -22
- package/dist/es/fields/StyleSetter/pro/Transform.vue_vue_type_script_setup_true_lang.js +6 -3
- package/dist/es/fields/UISelect.js +0 -1
- package/dist/es/hooks/use-compare-form.js +119 -0
- package/dist/es/index.js +13 -8
- package/dist/es/layouts/CodeEditor.vue_vue_type_script_setup_true_lang.js +21 -6
- package/dist/es/layouts/Framework.vue_vue_type_script_setup_true_lang.js +9 -6
- package/dist/es/layouts/history-list/HistoryDiffDialog.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/layouts/history-list/composables.js +1 -1
- package/dist/es/layouts/history-list/useHistoryRevert.js +7 -3
- package/dist/es/layouts/props-panel/FormPanel.vue_vue_type_script_setup_true_lang.js +44 -5
- package/dist/es/layouts/props-panel/PropsPanel.vue_vue_type_script_setup_true_lang.js +15 -8
- package/dist/es/layouts/props-panel/use-style-panel.js +3 -2
- package/dist/es/layouts/sidebar/Sidebar.vue_vue_type_script_setup_true_lang.js +15 -31
- package/dist/es/layouts/sidebar/code-block/CodeBlockListPanel.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/es/layouts/sidebar/code-block/useContentMenu.js +18 -3
- package/dist/es/layouts/sidebar/data-source/DataSourceConfigPanel.vue_vue_type_script_setup_true_lang.js +4 -0
- package/dist/es/layouts/sidebar/data-source/DataSourceListPanel.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/es/layouts/sidebar/data-source/useContentMenu.js +18 -3
- package/dist/es/layouts/sidebar/layer/LayerNodeContent.js +5 -0
- package/dist/es/layouts/sidebar/layer/LayerNodeContent.vue_vue_type_script_setup_true_lang.js +46 -0
- package/dist/es/layouts/sidebar/layer/LayerPanel.vue_vue_type_script_setup_true_lang.js +2 -1
- package/dist/es/layouts/workspace/viewer/NodeListMenu.vue_vue_type_script_setup_true_lang.js +8 -2
- package/dist/es/plugin.js +3 -1
- package/dist/es/services/codeBlock.js +1 -1
- package/dist/es/services/editor.js +104 -5
- package/dist/es/services/history.js +1 -1
- package/dist/es/services/props.js +3 -2
- package/dist/es/services/storage.js +2 -2
- package/dist/es/services/ui.js +3 -0
- package/dist/es/style.css +104 -55
- package/dist/es/utils/data-source/index.js +30 -11
- package/dist/es/utils/event.js +123 -0
- package/dist/es/utils/monaco-editor.js +22 -6
- package/dist/es/utils/props.js +119 -8
- package/dist/es/utils/type-match-rules.js +360 -0
- package/dist/style.css +104 -55
- package/dist/tmagic-editor.umd.cjs +16996 -15806
- package/package.json +8 -8
- package/src/Editor.vue +3 -1
- package/src/components/CodeBlockEditor.vue +3 -0
- package/src/components/CompareForm.vue +16 -196
- package/src/components/FloatingBox.vue +77 -8
- package/src/components/ScrollBar.vue +0 -67
- package/src/components/ViewForm.vue +55 -0
- package/src/editorProps.ts +13 -0
- package/src/fields/CodeSelect.vue +4 -1
- package/src/fields/CondOpSelect.vue +2 -24
- package/src/fields/DataSourceFields.vue +5 -0
- package/src/fields/DataSourceInput.vue +7 -25
- package/src/fields/DataSourceMocks.vue +3 -0
- package/src/fields/DisplayConds.vue +14 -0
- package/src/fields/EventSelect.vue +84 -129
- package/src/fields/StyleSetter/Index.vue +2 -8
- package/src/fields/StyleSetter/pro/Background.vue +94 -55
- package/src/fields/StyleSetter/pro/Border.vue +9 -11
- package/src/fields/StyleSetter/pro/Font.vue +66 -64
- package/src/fields/StyleSetter/pro/Layout.vue +140 -138
- package/src/fields/StyleSetter/pro/Position.vue +69 -67
- package/src/fields/StyleSetter/pro/Transform.vue +23 -25
- package/src/fields/UISelect.vue +0 -12
- package/src/hooks/index.ts +1 -0
- package/src/hooks/use-compare-form.ts +187 -0
- package/src/index.ts +2 -0
- package/src/layouts/CodeEditor.vue +32 -6
- package/src/layouts/Framework.vue +7 -6
- package/src/layouts/history-list/HistoryDiffDialog.vue +11 -1
- package/src/layouts/history-list/useHistoryRevert.ts +4 -0
- package/src/layouts/props-panel/FormPanel.vue +66 -5
- package/src/layouts/props-panel/PropsPanel.vue +20 -6
- package/src/layouts/props-panel/use-style-panel.ts +4 -3
- package/src/layouts/sidebar/Sidebar.vue +2 -0
- package/src/layouts/sidebar/code-block/CodeBlockListPanel.vue +4 -1
- package/src/layouts/sidebar/code-block/useContentMenu.ts +13 -1
- package/src/layouts/sidebar/data-source/DataSourceConfigPanel.vue +3 -0
- package/src/layouts/sidebar/data-source/DataSourceListPanel.vue +2 -2
- package/src/layouts/sidebar/data-source/useContentMenu.ts +13 -1
- package/src/layouts/sidebar/layer/LayerNodeContent.vue +57 -0
- package/src/layouts/sidebar/layer/LayerPanel.vue +4 -1
- package/src/layouts/workspace/viewer/NodeListMenu.vue +4 -1
- package/src/plugin.ts +3 -1
- package/src/services/editor.ts +168 -3
- package/src/services/ui.ts +6 -0
- package/src/theme/event.scss +8 -0
- package/src/theme/floating-box.scss +9 -1
- package/src/theme/layer-node-content.scss +14 -0
- package/src/theme/scroll-bar.scss +64 -0
- package/src/theme/theme.scss +3 -0
- package/src/theme/ui-select.scss +9 -0
- package/src/type.ts +105 -2
- package/src/utils/data-source/index.ts +30 -12
- package/src/utils/event.ts +224 -0
- package/src/utils/index.ts +2 -0
- package/src/utils/monaco-editor.ts +27 -0
- package/src/utils/props.ts +189 -2
- package/src/utils/type-match-rules.ts +678 -0
- package/types/index.d.ts +558 -213
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { useServices } from "../hooks/use-services.js";
|
|
2
|
-
import { getDisplayField } from "../utils/data-source/index.js";
|
|
2
|
+
import { getDisplayField, resolveFieldByPath } from "../utils/data-source/index.js";
|
|
3
3
|
import Icon_default from "../components/Icon.js";
|
|
4
4
|
import { TMagicInput, TMagicTag, getDesignConfig } from "@tmagic/design";
|
|
5
|
-
import { getKeysArray
|
|
5
|
+
import { getKeysArray } from "@tmagic/utils";
|
|
6
6
|
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeProps, nextTick, normalizeClass, openBlock, ref, renderList, resolveDynamicComponent, toDisplayString, unref, useTemplateRef, watch, withCtx } from "vue";
|
|
7
7
|
import { Coin } from "@element-plus/icons-vue";
|
|
8
8
|
//#region packages/editor/src/fields/DataSourceInput.vue?vue&type=script&setup=true&lang.ts
|
|
@@ -132,23 +132,11 @@ var DataSourceInput_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
|
|
|
132
132
|
cb([]);
|
|
133
133
|
return;
|
|
134
134
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
while (key) {
|
|
138
|
-
if (isNumber(key)) {
|
|
139
|
-
key = keys.shift();
|
|
140
|
-
continue;
|
|
141
|
-
}
|
|
142
|
-
for (const field of fields) if (field.name === key) {
|
|
143
|
-
fields = field.fields || [];
|
|
144
|
-
key = keys.shift();
|
|
145
|
-
break;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
if (curCharIsDot(dotIndex)) result = fields || [];
|
|
135
|
+
const { fields } = resolveFieldByPath(ds.fields, keys, { skipNumberIndices: true });
|
|
136
|
+
if (curCharIsDot(dotIndex)) result = fields;
|
|
149
137
|
else if (dotIndex > -1) {
|
|
150
138
|
const queryName = queryString.substring(dotIndex + 1).toLowerCase();
|
|
151
|
-
result = fields.filter((field) => field.name?.toLowerCase().includes(queryName) || field.title?.toLowerCase().includes(queryName))
|
|
139
|
+
result = fields.filter((field) => field.name?.toLowerCase().includes(queryName) || field.title?.toLowerCase().includes(queryName));
|
|
152
140
|
}
|
|
153
141
|
cb(result.map((field) => ({
|
|
154
142
|
value: field.name,
|
|
@@ -213,6 +213,7 @@ var DataSourceMocks_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
|
|
|
213
213
|
const addDialogVisible = useModel(__props, "visible");
|
|
214
214
|
const { height: editorHeight } = useEditorContentHeight();
|
|
215
215
|
const { boxPosition, calcBoxPosition } = useNextFloatBoxPosition(uiService, inject("parentFloating", ref(null)));
|
|
216
|
+
const frameworkWidth = computed(() => uiService.get("frameworkRect")?.width || 0);
|
|
216
217
|
return (_ctx, _cache) => {
|
|
217
218
|
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
218
219
|
createVNode(unref(MagicTable), {
|
|
@@ -230,6 +231,7 @@ var DataSourceMocks_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
|
|
|
230
231
|
_: 1
|
|
231
232
|
}, 8, ["disabled"])])) : createCommentVNode("v-if", true),
|
|
232
233
|
createVNode(FloatingBox_default, {
|
|
234
|
+
"body-style": { padding: "0 16px" },
|
|
233
235
|
visible: addDialogVisible.value,
|
|
234
236
|
"onUpdate:visible": _cache[1] || (_cache[1] = ($event) => addDialogVisible.value = $event),
|
|
235
237
|
width: width.value,
|
|
@@ -237,6 +239,7 @@ var DataSourceMocks_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
|
|
|
237
239
|
height: unref(editorHeight),
|
|
238
240
|
"onUpdate:height": _cache[3] || (_cache[3] = ($event) => isRef(editorHeight) ? editorHeight.value = $event : null),
|
|
239
241
|
title: drawerTitle.value,
|
|
242
|
+
"framework-width": frameworkWidth.value,
|
|
240
243
|
position: unref(boxPosition)
|
|
241
244
|
}, {
|
|
242
245
|
body: withCtx(() => [createVNode(unref(MFormBox), {
|
|
@@ -257,6 +260,7 @@ var DataSourceMocks_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
|
|
|
257
260
|
"width",
|
|
258
261
|
"height",
|
|
259
262
|
"title",
|
|
263
|
+
"framework-width",
|
|
260
264
|
"position"
|
|
261
265
|
])
|
|
262
266
|
]);
|
|
@@ -70,7 +70,16 @@ var DisplayConds_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
|
|
|
70
70
|
value: "key",
|
|
71
71
|
label: "字段",
|
|
72
72
|
checkStrictly: false,
|
|
73
|
-
onChange: fieldOnChange
|
|
73
|
+
onChange: fieldOnChange,
|
|
74
|
+
defaultValue: () => [],
|
|
75
|
+
rules: [{
|
|
76
|
+
required: true,
|
|
77
|
+
trigger: "blur",
|
|
78
|
+
message: "请选择字段"
|
|
79
|
+
}, {
|
|
80
|
+
typeMatch: true,
|
|
81
|
+
trigger: "change"
|
|
82
|
+
}]
|
|
74
83
|
} : {
|
|
75
84
|
type: "data-source-field-select",
|
|
76
85
|
name: "field",
|
|
@@ -83,14 +92,31 @@ var DisplayConds_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
|
|
|
83
92
|
"boolean",
|
|
84
93
|
"any"
|
|
85
94
|
],
|
|
86
|
-
onChange: fieldOnChange
|
|
95
|
+
onChange: fieldOnChange,
|
|
96
|
+
defaultValue: () => [],
|
|
97
|
+
rules: [{
|
|
98
|
+
required: true,
|
|
99
|
+
trigger: "blur",
|
|
100
|
+
message: "请选择字段"
|
|
101
|
+
}, {
|
|
102
|
+
typeMatch: true,
|
|
103
|
+
trigger: "change"
|
|
104
|
+
}]
|
|
87
105
|
},
|
|
88
106
|
{
|
|
89
107
|
type: "cond-op-select",
|
|
90
108
|
parentFields: parentFields.value,
|
|
91
109
|
label: "条件",
|
|
92
110
|
width: 140,
|
|
93
|
-
name: "op"
|
|
111
|
+
name: "op",
|
|
112
|
+
rules: [{
|
|
113
|
+
required: true,
|
|
114
|
+
trigger: "blur",
|
|
115
|
+
message: "请选择条件"
|
|
116
|
+
}, {
|
|
117
|
+
typeMatch: true,
|
|
118
|
+
trigger: "change"
|
|
119
|
+
}]
|
|
94
120
|
},
|
|
95
121
|
{
|
|
96
122
|
label: "值",
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { useServices } from "../hooks/use-services.js";
|
|
2
|
-
import {
|
|
2
|
+
import { getCompActionAllowedValues, getCompActionOptions, getEventNameAllowedValues, getEventNameOptions, normalizeCompActionValue } from "../utils/event.js";
|
|
3
3
|
import { MContainer, MPanel, MTable, defineFormItem } from "@tmagic/form";
|
|
4
4
|
import { TMagicButton } from "@tmagic/design";
|
|
5
|
-
import { DATA_SOURCE_FIELDS_CHANGE_EVENT_PREFIX, traverseNode } from "@tmagic/utils";
|
|
6
5
|
import { ActionType } from "@tmagic/core";
|
|
7
6
|
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createTextVNode, createVNode, defineComponent, openBlock, renderList, unref, withCtx } from "vue";
|
|
8
7
|
import { has } from "lodash-es";
|
|
@@ -44,75 +43,51 @@ var EventSelect_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
|
|
|
44
43
|
labelWidth: "40px",
|
|
45
44
|
checkStrictly: () => props.config.src !== "component",
|
|
46
45
|
valueSeparator: ".",
|
|
47
|
-
options: (
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
if (
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
value: pageFragment.id,
|
|
57
|
-
children: events
|
|
58
|
-
}];
|
|
59
|
-
pageFragment.items.forEach((node) => {
|
|
60
|
-
traverseNode(node, (node) => {
|
|
61
|
-
const nodeEvents = node.type && eventsService.getEvent(node.type) || [];
|
|
62
|
-
events.push({
|
|
63
|
-
label: `${node.name}_${node.id}`,
|
|
64
|
-
value: `${node.id}`,
|
|
65
|
-
children: nodeEvents
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
return events;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
return events.map((option) => ({
|
|
73
|
-
text: option.label,
|
|
74
|
-
value: option.value
|
|
75
|
-
}));
|
|
76
|
-
}
|
|
77
|
-
if (props.config.src === "datasource") {
|
|
78
|
-
events = dataSourceService.getFormEvent(formValue.type);
|
|
79
|
-
const fields = dataSourceService.getDataSourceById(formValue.id)?.fields || [];
|
|
80
|
-
if (fields.length > 0) return [...events, {
|
|
81
|
-
label: "数据变化",
|
|
82
|
-
value: DATA_SOURCE_FIELDS_CHANGE_EVENT_PREFIX,
|
|
83
|
-
children: getCascaderOptionsFromFields(fields)
|
|
84
|
-
}];
|
|
85
|
-
return events;
|
|
86
|
-
}
|
|
87
|
-
},
|
|
46
|
+
options: (_mForm, { formValue }) => getEventNameOptions(props.config.src, formValue),
|
|
47
|
+
rules: [{
|
|
48
|
+
validator: ({ value, callback }, { formValue }) => {
|
|
49
|
+
const allowedNames = getEventNameAllowedValues(props.config, formValue);
|
|
50
|
+
if (allowedNames && allowedNames.size > 0 && value && !allowedNames.has(value)) return callback(`事件名(${value})不存在`);
|
|
51
|
+
callback();
|
|
52
|
+
},
|
|
53
|
+
trigger: "blur"
|
|
54
|
+
}],
|
|
88
55
|
...props.config.eventNameConfig
|
|
89
56
|
};
|
|
90
57
|
});
|
|
58
|
+
const actionTypeOptions = computed(() => {
|
|
59
|
+
const o = [{
|
|
60
|
+
text: "组件",
|
|
61
|
+
label: "组件",
|
|
62
|
+
value: ActionType.COMP
|
|
63
|
+
}];
|
|
64
|
+
if (!propsService.getDisabledCodeBlock()) o.push({
|
|
65
|
+
text: "代码",
|
|
66
|
+
label: "代码",
|
|
67
|
+
disabled: !Object.keys(codeBlockService.getCodeDsl() || {}).length,
|
|
68
|
+
value: ActionType.CODE
|
|
69
|
+
});
|
|
70
|
+
if (!propsService.getDisabledDataSource()) o.push({
|
|
71
|
+
text: "数据源",
|
|
72
|
+
label: "数据源",
|
|
73
|
+
value: ActionType.DATA_SOURCE
|
|
74
|
+
});
|
|
75
|
+
return o;
|
|
76
|
+
});
|
|
91
77
|
const actionTypeConfig = computed(() => {
|
|
92
78
|
return {
|
|
93
79
|
name: "actionType",
|
|
94
80
|
text: "联动类型",
|
|
95
81
|
type: "select",
|
|
96
82
|
defaultValue: ActionType.COMP,
|
|
97
|
-
options:
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
label: "代码",
|
|
106
|
-
disabled: !Object.keys(codeBlockService.getCodeDsl() || {}).length,
|
|
107
|
-
value: ActionType.CODE
|
|
108
|
-
});
|
|
109
|
-
if (!propsService.getDisabledDataSource()) o.push({
|
|
110
|
-
text: "数据源",
|
|
111
|
-
label: "数据源",
|
|
112
|
-
value: ActionType.DATA_SOURCE
|
|
113
|
-
});
|
|
114
|
-
return o;
|
|
115
|
-
},
|
|
83
|
+
options: actionTypeOptions.value,
|
|
84
|
+
rules: [{
|
|
85
|
+
required: true,
|
|
86
|
+
message: "联动类型不能为空"
|
|
87
|
+
}, {
|
|
88
|
+
typeMatch: true,
|
|
89
|
+
trigger: "blur"
|
|
90
|
+
}],
|
|
116
91
|
...props.config.actionTypeConfig
|
|
117
92
|
};
|
|
118
93
|
});
|
|
@@ -125,6 +100,10 @@ var EventSelect_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
|
|
|
125
100
|
onChange: (_MForm, _v, { setModel }) => {
|
|
126
101
|
setModel("method", "");
|
|
127
102
|
},
|
|
103
|
+
rules: [{
|
|
104
|
+
typeMatch: true,
|
|
105
|
+
trigger: "blur"
|
|
106
|
+
}],
|
|
128
107
|
...props.config.targetCompConfig
|
|
129
108
|
};
|
|
130
109
|
});
|
|
@@ -139,33 +118,16 @@ var EventSelect_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
|
|
|
139
118
|
},
|
|
140
119
|
checkStrictly: () => props.config.src !== "component",
|
|
141
120
|
display: (mForm, { model }) => model.actionType === ActionType.COMP,
|
|
142
|
-
options: (
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
methods = [];
|
|
151
|
-
pageFragment.items.forEach((node) => {
|
|
152
|
-
traverseNode(node, (node) => {
|
|
153
|
-
const nodeMethods = node.type && eventsService.getMethod(node.type, node.id) || [];
|
|
154
|
-
if (nodeMethods.length) methods.push({
|
|
155
|
-
label: `${node.name}_${node.id}`,
|
|
156
|
-
value: `${node.id}`,
|
|
157
|
-
children: nodeMethods
|
|
158
|
-
});
|
|
159
|
-
});
|
|
160
|
-
});
|
|
161
|
-
return methods;
|
|
162
|
-
}
|
|
121
|
+
options: (_mForm, { model }) => getCompActionOptions(model.to),
|
|
122
|
+
rules: [{
|
|
123
|
+
trigger: "blur",
|
|
124
|
+
validator: ({ value, callback }, { model }) => {
|
|
125
|
+
const allowedMethods = getCompActionAllowedValues(props.config, model);
|
|
126
|
+
const normalized = normalizeCompActionValue(value);
|
|
127
|
+
if (allowedMethods && allowedMethods.size > 0 && normalized && !allowedMethods.has(normalized)) return callback(`动作名(${normalized})不存在`);
|
|
128
|
+
callback();
|
|
163
129
|
}
|
|
164
|
-
|
|
165
|
-
text: method.label,
|
|
166
|
-
value: method.value
|
|
167
|
-
}));
|
|
168
|
-
},
|
|
130
|
+
}],
|
|
169
131
|
...props.config.compActionConfig
|
|
170
132
|
};
|
|
171
133
|
});
|
|
@@ -26,7 +26,6 @@ var Index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
|
|
|
26
26
|
},
|
|
27
27
|
emits: ["change", "addDiffCount"],
|
|
28
28
|
setup(__props, { emit: __emit }) {
|
|
29
|
-
const props = __props;
|
|
30
29
|
const emit = __emit;
|
|
31
30
|
const list = [
|
|
32
31
|
{
|
|
@@ -57,10 +56,6 @@ var Index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
|
|
|
57
56
|
];
|
|
58
57
|
const collapseValue = shallowRef(Array(list.length).fill(1).map((x, i) => `${i}`));
|
|
59
58
|
const change = (v, eventData) => {
|
|
60
|
-
eventData.changeRecords?.forEach((record) => {
|
|
61
|
-
if (props.prop) record.propPath = `${props.prop}.${record.propPath}`;
|
|
62
|
-
else if (props.name) record.propPath = `${props.name}.${record.propPath}`;
|
|
63
|
-
});
|
|
64
59
|
emit("change", v, eventData);
|
|
65
60
|
};
|
|
66
61
|
const onAddDiffCount = () => emit("addDiffCount");
|
|
@@ -79,6 +74,7 @@ var Index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
|
|
|
79
74
|
default: withCtx(() => [item.component ? (openBlock(), createBlock(resolveDynamicComponent(item.component), {
|
|
80
75
|
key: 0,
|
|
81
76
|
values: __props.model[__props.name],
|
|
77
|
+
prop: __props.prop || __props.name,
|
|
82
78
|
"last-values": __props.lastValues?.[__props.name],
|
|
83
79
|
"is-compare": __props.isCompare,
|
|
84
80
|
size: __props.size,
|
|
@@ -87,6 +83,7 @@ var Index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
|
|
|
87
83
|
onAddDiffCount
|
|
88
84
|
}, null, 40, [
|
|
89
85
|
"values",
|
|
86
|
+
"prop",
|
|
90
87
|
"last-values",
|
|
91
88
|
"is-compare",
|
|
92
89
|
"size",
|
|
@@ -3,8 +3,8 @@ import Repeat_default from "../icons/background-repeat/Repeat.js";
|
|
|
3
3
|
import RepeatX_default from "../icons/background-repeat/RepeatX.js";
|
|
4
4
|
import RepeatY_default from "../icons/background-repeat/RepeatY.js";
|
|
5
5
|
import NoRepeat_default from "../icons/background-repeat/NoRepeat.js";
|
|
6
|
-
import { MContainer,
|
|
7
|
-
import { createBlock, defineComponent, markRaw, openBlock, unref } from "vue";
|
|
6
|
+
import { MContainer, defineFormConfig } from "@tmagic/form";
|
|
7
|
+
import { Fragment, createBlock, createElementBlock, defineComponent, markRaw, openBlock, renderList, unref } from "vue";
|
|
8
8
|
//#region packages/editor/src/fields/StyleSetter/pro/Background.vue?vue&type=script&setup=true&lang.ts
|
|
9
9
|
var Background_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
10
10
|
__name: "Background",
|
|
@@ -13,12 +13,13 @@ var Background_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
|
|
|
13
13
|
lastValues: {},
|
|
14
14
|
isCompare: { type: Boolean },
|
|
15
15
|
disabled: { type: Boolean },
|
|
16
|
-
size: {}
|
|
16
|
+
size: {},
|
|
17
|
+
prop: {}
|
|
17
18
|
},
|
|
18
19
|
emits: ["change", "addDiffCount"],
|
|
19
20
|
setup(__props, { emit: __emit }) {
|
|
20
21
|
const emit = __emit;
|
|
21
|
-
const
|
|
22
|
+
const formConfig = defineFormConfig([
|
|
22
23
|
{
|
|
23
24
|
name: "backgroundColor",
|
|
24
25
|
text: "背景色",
|
|
@@ -55,7 +56,26 @@ var Background_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
|
|
|
55
56
|
text: "等比覆盖",
|
|
56
57
|
tooltip: "等比覆盖 cover"
|
|
57
58
|
}
|
|
58
|
-
]
|
|
59
|
+
],
|
|
60
|
+
rules: [{ typeMatch: false }, { validator: ({ value, callback }) => {
|
|
61
|
+
if (value === "" || value === null || value === void 0) return callback();
|
|
62
|
+
const keywords = [
|
|
63
|
+
"auto",
|
|
64
|
+
"cover",
|
|
65
|
+
"contain",
|
|
66
|
+
"inherit",
|
|
67
|
+
"initial",
|
|
68
|
+
"revert",
|
|
69
|
+
"unset"
|
|
70
|
+
];
|
|
71
|
+
const lengthPercent = /^-?\d+(\.\d+)?(px|em|rem|ex|ch|vw|vh|vmin|vmax|cm|mm|in|pt|pc|%)$/;
|
|
72
|
+
const singleValue = (v) => keywords.includes(v) || lengthPercent.test(v);
|
|
73
|
+
const parts = String(value).trim().split(/\s+/);
|
|
74
|
+
if (parts.length > 1 && (parts.includes("cover") || parts.includes("contain"))) return callback("cover/contain 不能与其他值组合");
|
|
75
|
+
if (parts.length > 2) return callback("backgroundSize 最多支持两个值");
|
|
76
|
+
if (parts.every((part) => singleValue(part))) return callback();
|
|
77
|
+
return callback("backgroundSize 值不合法");
|
|
78
|
+
} }]
|
|
59
79
|
},
|
|
60
80
|
{
|
|
61
81
|
name: "backgroundRepeat",
|
|
@@ -93,29 +113,34 @@ var Background_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
|
|
|
93
113
|
component: BackgroundPosition_default,
|
|
94
114
|
labelWidth: "68px"
|
|
95
115
|
}
|
|
96
|
-
]
|
|
116
|
+
]);
|
|
97
117
|
const change = (value, eventData) => {
|
|
98
118
|
emit("change", value, eventData);
|
|
99
119
|
};
|
|
100
120
|
const onAddDiffCount = () => emit("addDiffCount");
|
|
101
121
|
return (_ctx, _cache) => {
|
|
102
|
-
return openBlock(),
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
122
|
+
return openBlock(true), createElementBlock(Fragment, null, renderList(unref(formConfig), (item) => {
|
|
123
|
+
return openBlock(), createBlock(unref(MContainer), {
|
|
124
|
+
prop: __props.prop,
|
|
125
|
+
key: item.name,
|
|
126
|
+
config: item,
|
|
127
|
+
model: __props.values,
|
|
128
|
+
"last-values": __props.lastValues,
|
|
129
|
+
"is-compare": __props.isCompare,
|
|
130
|
+
size: __props.size,
|
|
131
|
+
disabled: __props.disabled,
|
|
132
|
+
onChange: change,
|
|
133
|
+
onAddDiffCount
|
|
134
|
+
}, null, 8, [
|
|
135
|
+
"prop",
|
|
136
|
+
"config",
|
|
137
|
+
"model",
|
|
138
|
+
"last-values",
|
|
139
|
+
"is-compare",
|
|
140
|
+
"size",
|
|
141
|
+
"disabled"
|
|
142
|
+
]);
|
|
143
|
+
}), 128);
|
|
119
144
|
};
|
|
120
145
|
}
|
|
121
146
|
});
|
|
@@ -9,24 +9,26 @@ var Border_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
|
|
|
9
9
|
lastValues: {},
|
|
10
10
|
isCompare: { type: Boolean },
|
|
11
11
|
disabled: { type: Boolean },
|
|
12
|
-
size: {}
|
|
12
|
+
size: {},
|
|
13
|
+
prop: {}
|
|
13
14
|
},
|
|
14
15
|
emits: ["change", "addDiffCount"],
|
|
15
16
|
setup(__props, { emit: __emit }) {
|
|
16
17
|
const emit = __emit;
|
|
17
|
-
const config = defineFormItem({
|
|
18
|
+
const config = defineFormItem({
|
|
18
19
|
labelWidth: "68px",
|
|
19
20
|
name: "borderRadius",
|
|
20
21
|
text: "圆角",
|
|
21
22
|
type: "data-source-field-select",
|
|
22
23
|
fieldConfig: { type: "text" }
|
|
23
|
-
}
|
|
24
|
+
});
|
|
24
25
|
const change = (value, eventData) => {
|
|
25
26
|
emit("change", value, eventData);
|
|
26
27
|
};
|
|
27
28
|
const onAddDiffCount = () => emit("addDiffCount");
|
|
28
29
|
return (_ctx, _cache) => {
|
|
29
30
|
return openBlock(), createElementBlock(Fragment, null, [createVNode(unref(MContainer), {
|
|
31
|
+
prop: __props.prop,
|
|
30
32
|
config: unref(config),
|
|
31
33
|
model: __props.values,
|
|
32
34
|
"last-values": __props.lastValues,
|
|
@@ -36,6 +38,7 @@ var Border_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
|
|
|
36
38
|
onChange: change,
|
|
37
39
|
onAddDiffCount
|
|
38
40
|
}, null, 8, [
|
|
41
|
+
"prop",
|
|
39
42
|
"config",
|
|
40
43
|
"model",
|
|
41
44
|
"last-values",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import Left_default from "../icons/text-align/Left.js";
|
|
2
2
|
import Center_default from "../icons/text-align/Center.js";
|
|
3
3
|
import Right_default from "../icons/text-align/Right.js";
|
|
4
|
-
import { MContainer,
|
|
5
|
-
import { createBlock, defineComponent, markRaw, openBlock, unref } from "vue";
|
|
4
|
+
import { MContainer, defineFormConfig } from "@tmagic/form";
|
|
5
|
+
import { Fragment, createBlock, createElementBlock, defineComponent, markRaw, openBlock, renderList, unref } from "vue";
|
|
6
6
|
//#region packages/editor/src/fields/StyleSetter/pro/Font.vue?vue&type=script&setup=true&lang.ts
|
|
7
7
|
var Font_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
8
8
|
__name: "Font",
|
|
@@ -11,12 +11,13 @@ var Font_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCompo
|
|
|
11
11
|
lastValues: {},
|
|
12
12
|
isCompare: { type: Boolean },
|
|
13
13
|
disabled: { type: Boolean },
|
|
14
|
-
size: {}
|
|
14
|
+
size: {},
|
|
15
|
+
prop: {}
|
|
15
16
|
},
|
|
16
17
|
emits: ["change", "addDiffCount"],
|
|
17
18
|
setup(__props, { emit: __emit }) {
|
|
18
19
|
const emit = __emit;
|
|
19
|
-
const
|
|
20
|
+
const formConfig = defineFormConfig([
|
|
20
21
|
{
|
|
21
22
|
type: "row",
|
|
22
23
|
items: [{
|
|
@@ -77,29 +78,34 @@ var Font_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCompo
|
|
|
77
78
|
}
|
|
78
79
|
]
|
|
79
80
|
}
|
|
80
|
-
]
|
|
81
|
+
]);
|
|
81
82
|
const change = (value, eventData) => {
|
|
82
83
|
emit("change", value, eventData);
|
|
83
84
|
};
|
|
84
85
|
const onAddDiffCount = () => emit("addDiffCount");
|
|
85
86
|
return (_ctx, _cache) => {
|
|
86
|
-
return openBlock(),
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
87
|
+
return openBlock(true), createElementBlock(Fragment, null, renderList(unref(formConfig), (item, index) => {
|
|
88
|
+
return openBlock(), createBlock(unref(MContainer), {
|
|
89
|
+
prop: __props.prop,
|
|
90
|
+
key: index,
|
|
91
|
+
config: item,
|
|
92
|
+
model: __props.values,
|
|
93
|
+
"last-values": __props.lastValues,
|
|
94
|
+
"is-compare": __props.isCompare,
|
|
95
|
+
size: __props.size,
|
|
96
|
+
disabled: __props.disabled,
|
|
97
|
+
onChange: change,
|
|
98
|
+
onAddDiffCount
|
|
99
|
+
}, null, 8, [
|
|
100
|
+
"prop",
|
|
101
|
+
"config",
|
|
102
|
+
"model",
|
|
103
|
+
"last-values",
|
|
104
|
+
"is-compare",
|
|
105
|
+
"size",
|
|
106
|
+
"disabled"
|
|
107
|
+
]);
|
|
108
|
+
}), 128);
|
|
103
109
|
};
|
|
104
110
|
}
|
|
105
111
|
});
|
|
@@ -13,8 +13,8 @@ import FlexEnd_default from "../icons/justify-content/FlexEnd.js";
|
|
|
13
13
|
import FlexStart_default from "../icons/justify-content/FlexStart.js";
|
|
14
14
|
import SpaceAround_default from "../icons/justify-content/SpaceAround.js";
|
|
15
15
|
import SpaceBetween_default from "../icons/justify-content/SpaceBetween.js";
|
|
16
|
-
import { MContainer,
|
|
17
|
-
import { Fragment, createElementBlock, createVNode, defineComponent, markRaw, openBlock, unref, vShow, withDirectives } from "vue";
|
|
16
|
+
import { MContainer, defineFormConfig } from "@tmagic/form";
|
|
17
|
+
import { Fragment, createBlock, createElementBlock, createVNode, defineComponent, markRaw, openBlock, renderList, unref, vShow, withDirectives } from "vue";
|
|
18
18
|
//#region packages/editor/src/fields/StyleSetter/pro/Layout.vue?vue&type=script&setup=true&lang.ts
|
|
19
19
|
var Layout_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
20
20
|
__name: "Layout",
|
|
@@ -23,12 +23,13 @@ var Layout_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
|
|
|
23
23
|
lastValues: {},
|
|
24
24
|
isCompare: { type: Boolean },
|
|
25
25
|
disabled: { type: Boolean },
|
|
26
|
-
size: {}
|
|
26
|
+
size: {},
|
|
27
|
+
prop: {}
|
|
27
28
|
},
|
|
28
29
|
emits: ["change", "addDiffCount"],
|
|
29
30
|
setup(__props, { emit: __emit }) {
|
|
30
31
|
const emit = __emit;
|
|
31
|
-
const
|
|
32
|
+
const formConfig = defineFormConfig([
|
|
32
33
|
{
|
|
33
34
|
name: "display",
|
|
34
35
|
text: "模式",
|
|
@@ -257,29 +258,34 @@ var Layout_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
|
|
|
257
258
|
fieldConfig: { type: "text" }
|
|
258
259
|
}]
|
|
259
260
|
}
|
|
260
|
-
]
|
|
261
|
+
]);
|
|
261
262
|
const change = (value, eventData) => {
|
|
262
263
|
emit("change", value, eventData);
|
|
263
264
|
};
|
|
264
265
|
const onAddDiffCount = () => emit("addDiffCount");
|
|
265
266
|
return (_ctx, _cache) => {
|
|
266
|
-
return openBlock(), createElementBlock(Fragment, null, [
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
267
|
+
return openBlock(), createElementBlock(Fragment, null, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(formConfig), (item) => {
|
|
268
|
+
return openBlock(), createBlock(unref(MContainer), {
|
|
269
|
+
prop: __props.prop,
|
|
270
|
+
key: item.name,
|
|
271
|
+
config: item,
|
|
272
|
+
model: __props.values,
|
|
273
|
+
"last-values": __props.lastValues,
|
|
274
|
+
"is-compare": __props.isCompare,
|
|
275
|
+
size: __props.size,
|
|
276
|
+
disabled: __props.disabled,
|
|
277
|
+
onChange: change,
|
|
278
|
+
onAddDiffCount
|
|
279
|
+
}, null, 8, [
|
|
280
|
+
"prop",
|
|
281
|
+
"config",
|
|
282
|
+
"model",
|
|
283
|
+
"last-values",
|
|
284
|
+
"is-compare",
|
|
285
|
+
"size",
|
|
286
|
+
"disabled"
|
|
287
|
+
]);
|
|
288
|
+
}), 128)), withDirectives(createVNode(Box_default, {
|
|
283
289
|
model: __props.values,
|
|
284
290
|
"last-values": __props.lastValues,
|
|
285
291
|
"is-compare": __props.isCompare,
|