@tmagic/editor 1.8.0-beta.22 → 1.8.0-beta.24
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/components/CodeBlockEditor.vue_vue_type_script_setup_true_lang.js +2 -1
- package/dist/es/components/Resizer.vue_vue_type_script_setup_true_lang.js +2 -1
- package/dist/es/fields/CodeSelectCol.vue_vue_type_script_setup_true_lang.js +5 -4
- package/dist/es/fields/CondOpSelect.vue_vue_type_script_setup_true_lang.js +3 -1
- package/dist/es/fields/DataSourceFieldSelect/Index.vue_vue_type_script_setup_true_lang.js +5 -4
- package/dist/es/fields/DataSourceFields.vue_vue_type_script_setup_true_lang.js +12 -7
- package/dist/es/fields/DataSourceInput.vue_vue_type_script_setup_true_lang.js +2 -1
- package/dist/es/fields/DataSourceMethodSelect.vue_vue_type_script_setup_true_name_true_lang.js +6 -4
- package/dist/es/fields/DataSourceMethods.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/fields/DataSourceMocks.vue_vue_type_script_setup_true_lang.js +8 -5
- package/dist/es/fields/DisplayConds.vue_vue_type_script_setup_true_lang.js +4 -2
- package/dist/es/fields/EventSelect.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/es/fields/KeyValue.vue_vue_type_script_setup_true_lang.js +4 -2
- package/dist/es/hooks/use-compare-form.js +1 -2
- package/dist/es/index.js +2 -2
- package/dist/es/initService.js +2 -1
- package/dist/es/layouts/sidebar/Sidebar.vue_vue_type_script_setup_true_lang.js +2 -1
- package/dist/es/layouts/sidebar/data-source/DataSourceConfigPanel.vue_vue_type_script_setup_true_lang.js +2 -1
- package/dist/es/layouts/sidebar/layer/LayerPanel.vue_vue_type_script_setup_true_lang.js +2 -1
- package/dist/es/plugin.js +9 -1
- package/dist/es/services/codeBlock.js +4 -2
- package/dist/es/services/editor.js +43 -37
- package/dist/es/services/props.js +1 -1
- package/dist/es/utils/dep/collect-worker-client.js +67 -27
- package/dist/es/utils/dep/worker.js +1 -1
- package/dist/es/utils/event.js +1 -1
- package/dist/es/utils/props.js +1 -29
- package/dist/es/utils/type-match-rules.js +7 -27
- package/dist/tmagic-editor.umd.cjs +663 -629
- package/package.json +13 -13
- package/src/fields/CodeSelectCol.vue +4 -2
- package/src/fields/DataSourceFieldSelect/Index.vue +5 -3
- package/src/fields/DataSourceFields.vue +6 -0
- package/src/fields/DataSourceMethodSelect.vue +4 -1
- package/src/fields/DataSourceMethods.vue +11 -2
- package/src/fields/DataSourceMocks.vue +10 -1
- package/src/fields/EventSelect.vue +3 -3
- package/src/fields/KeyValue.vue +4 -3
- package/src/hooks/use-compare-form.ts +1 -4
- package/src/plugin.ts +9 -1
- package/src/services/editor.ts +53 -85
- package/src/type.ts +23 -0
- package/src/utils/dep/collect-worker-client.ts +97 -31
- package/src/utils/event.ts +2 -2
- package/src/utils/props.ts +0 -32
- package/src/utils/type-match-rules.ts +4 -30
- package/types/index.d.ts +121 -210
|
@@ -119,7 +119,8 @@ var CodeBlockEditor_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
|
|
|
119
119
|
const closedHandler = () => {
|
|
120
120
|
changedValue.value = void 0;
|
|
121
121
|
};
|
|
122
|
-
const
|
|
122
|
+
const parentFloating = inject("parentFloating", ref(null));
|
|
123
|
+
const { boxPosition, calcBoxPosition } = useNextFloatBoxPosition(uiService, parentFloating);
|
|
123
124
|
const frameworkWidth = computed(() => uiService.get("frameworkRect")?.width || 0);
|
|
124
125
|
watch(boxVisible, (visible) => {
|
|
125
126
|
nextTick(() => {
|
|
@@ -7,7 +7,8 @@ var Resizer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCo
|
|
|
7
7
|
emits: ["change"],
|
|
8
8
|
setup(__props, { emit: __emit }) {
|
|
9
9
|
const emit = __emit;
|
|
10
|
-
const
|
|
10
|
+
const targetEl = useTemplateRef("target");
|
|
11
|
+
const { isDragging } = useGetSo(targetEl, emit);
|
|
11
12
|
return (_ctx, _cache) => {
|
|
12
13
|
return openBlock(), createElementBlock("span", {
|
|
13
14
|
ref: "target",
|
|
@@ -2,7 +2,7 @@ import { SideItemKey } from "../type.js";
|
|
|
2
2
|
import { useServices } from "../hooks/use-services.js";
|
|
3
3
|
import Icon_default from "../components/Icon.js";
|
|
4
4
|
import CodeParams_default from "../components/CodeParams.js";
|
|
5
|
-
import { MContainer, MSelect, createValues, filterFunction } from "@tmagic/form";
|
|
5
|
+
import { FORM_SILENT_MODE_KEY, MContainer, MSelect, createValues, filterFunction } from "@tmagic/form";
|
|
6
6
|
import { TMagicButton } from "@tmagic/design";
|
|
7
7
|
import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, inject, openBlock, ref, unref, watch, withCtx } from "vue";
|
|
8
8
|
import { isEmpty, map } from "lodash-es";
|
|
@@ -34,6 +34,7 @@ var CodeSelectCol_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
|
|
|
34
34
|
emits: ["change"],
|
|
35
35
|
setup(__props, { emit: __emit }) {
|
|
36
36
|
const mForm = inject("mForm");
|
|
37
|
+
const silentMode = inject(FORM_SILENT_MODE_KEY, false);
|
|
37
38
|
const { codeBlockService, uiService } = useServices();
|
|
38
39
|
const eventBus = inject("eventBus");
|
|
39
40
|
const emit = __emit;
|
|
@@ -130,7 +131,7 @@ var CodeSelectCol_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
|
|
|
130
131
|
"last-values",
|
|
131
132
|
"size",
|
|
132
133
|
"prop"
|
|
133
|
-
])) : (openBlock(), createBlock(unref(MSelect), {
|
|
134
|
+
])) : !unref(silentMode) ? (openBlock(), createBlock(unref(MSelect), {
|
|
134
135
|
key: 1,
|
|
135
136
|
class: "select",
|
|
136
137
|
config: selectConfig,
|
|
@@ -144,9 +145,9 @@ var CodeSelectCol_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
|
|
|
144
145
|
"model",
|
|
145
146
|
"size",
|
|
146
147
|
"prop"
|
|
147
|
-
])),
|
|
148
|
+
])) : createCommentVNode("v-if", true),
|
|
148
149
|
createCommentVNode(" 查看/编辑按钮:对比模式为只读,不展示 "),
|
|
149
|
-
!isCompareMode.value && __props.model[__props.name] && hasCodeBlockSidePanel.value ? (openBlock(), createBlock(unref(TMagicButton), {
|
|
150
|
+
!isCompareMode.value && !unref(silentMode) && __props.model[__props.name] && hasCodeBlockSidePanel.value ? (openBlock(), createBlock(unref(TMagicButton), {
|
|
150
151
|
key: 2,
|
|
151
152
|
class: "m-fields-select-action-button",
|
|
152
153
|
size: __props.size,
|
|
@@ -30,7 +30,9 @@ var CondOpSelect_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
|
|
|
30
30
|
const optionComponent = getDesignConfig("components")?.option;
|
|
31
31
|
const options = computed(() => {
|
|
32
32
|
const [id, ...fieldNames] = [...props.config.parentFields || [], ...props.model.field];
|
|
33
|
-
|
|
33
|
+
const ds = dataSourceService.getDataSourceById(id);
|
|
34
|
+
const type = getFieldType(ds, fieldNames);
|
|
35
|
+
return getCondOpOptionsByFieldType(type);
|
|
34
36
|
});
|
|
35
37
|
const fieldChangeHandler = (v) => {
|
|
36
38
|
emit("change", v);
|
|
@@ -2,7 +2,7 @@ import { useServices } from "../../hooks/use-services.js";
|
|
|
2
2
|
import Icon_default from "../../components/Icon.js";
|
|
3
3
|
import DatasourceIcon_default from "../../icons/DatasourceIcon.js";
|
|
4
4
|
import FieldSelect_default from "./FieldSelect.js";
|
|
5
|
-
import { getFormField } from "@tmagic/form";
|
|
5
|
+
import { FORM_SILENT_MODE_KEY, getFormField } from "@tmagic/form";
|
|
6
6
|
import { TMagicButton, TMagicTooltip, tMagicMessage } from "@tmagic/design";
|
|
7
7
|
import { DATA_SOURCE_FIELDS_SELECT_VALUE_PREFIX, removeDataSourceFieldPrefix } from "@tmagic/utils";
|
|
8
8
|
import { computed, createBlock, createCommentVNode, createElementBlock, createVNode, defineComponent, inject, normalizeClass, openBlock, ref, resolveComponent, resolveDynamicComponent, unref, watch, withCtx } from "vue";
|
|
@@ -40,6 +40,7 @@ var Index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
|
|
|
40
40
|
}, { immediate: true });
|
|
41
41
|
const { dataSourceService, propsService } = useServices();
|
|
42
42
|
const mForm = inject("mForm");
|
|
43
|
+
const silentMode = inject(FORM_SILENT_MODE_KEY, false);
|
|
43
44
|
const dataSources = computed(() => dataSourceService.get("dataSources") || []);
|
|
44
45
|
const disabledDataSource = computed(() => propsService.getDisabledDataSource());
|
|
45
46
|
const type = computed(() => {
|
|
@@ -103,7 +104,7 @@ var Index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
|
|
|
103
104
|
showDataSourceFieldSelect.value = !showDataSourceFieldSelect.value;
|
|
104
105
|
};
|
|
105
106
|
return (_ctx, _cache) => {
|
|
106
|
-
return openBlock(), createElementBlock("div", { class: normalizeClass(["m-fields-data-source-field-select", { [`data-source-field-${type.value}`]: !isSelectValid.value }]) }, [isSelectValid.value ? (openBlock(), createBlock(FieldSelect_default, {
|
|
107
|
+
return openBlock(), createElementBlock("div", { class: normalizeClass(["m-fields-data-source-field-select", { [`data-source-field-${type.value}`]: !isSelectValid.value }]) }, [isSelectValid.value && !unref(silentMode) ? (openBlock(), createBlock(FieldSelect_default, {
|
|
107
108
|
key: 0,
|
|
108
109
|
"model-value": __props.model[__props.name],
|
|
109
110
|
disabled: __props.disabled,
|
|
@@ -121,7 +122,7 @@ var Index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
|
|
|
121
122
|
"checkStrictly",
|
|
122
123
|
"dataSourceFieldType",
|
|
123
124
|
"dataSourceId"
|
|
124
|
-
])) : (openBlock(), createBlock(resolveDynamicComponent(tagName.value), {
|
|
125
|
+
])) : !unref(silentMode) ? (openBlock(), createBlock(resolveDynamicComponent(tagName.value), {
|
|
125
126
|
key: 1,
|
|
126
127
|
config: __props.config.fieldConfig,
|
|
127
128
|
model: __props.model,
|
|
@@ -143,7 +144,7 @@ var Index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
|
|
|
143
144
|
"init-values",
|
|
144
145
|
"values",
|
|
145
146
|
"prop"
|
|
146
|
-
])), __props.config.fieldConfig && !disabledDataSource.value && !unref(mForm)?.isCompare ? (openBlock(), createBlock(unref(TMagicTooltip), {
|
|
147
|
+
])) : createCommentVNode("v-if", true), !unref(silentMode) && __props.config.fieldConfig && !disabledDataSource.value && !unref(mForm)?.isCompare ? (openBlock(), createBlock(unref(TMagicTooltip), {
|
|
147
148
|
key: 2,
|
|
148
149
|
disabled: showDataSourceFieldSelect.value,
|
|
149
150
|
content: "选择数据源"
|
|
@@ -3,11 +3,11 @@ import { useEditorContentHeight } from "../hooks/use-editor-content-height.js";
|
|
|
3
3
|
import { useNextFloatBoxPosition } from "../hooks/use-next-float-box-position.js";
|
|
4
4
|
import { error } from "../utils/logger.js";
|
|
5
5
|
import FloatingBox_default from "../components/FloatingBox.js";
|
|
6
|
-
import { MFormBox } from "@tmagic/form";
|
|
6
|
+
import { FORM_SILENT_MODE_KEY, MFormBox } from "@tmagic/form";
|
|
7
7
|
import { MagicTable } from "@tmagic/table";
|
|
8
8
|
import { TMagicButton, tMagicMessage, tMagicMessageBox } from "@tmagic/design";
|
|
9
9
|
import { getDefaultValueFromFields } from "@tmagic/utils";
|
|
10
|
-
import { computed, createCommentVNode, createElementBlock, createTextVNode, createVNode, defineComponent, inject, isRef, mergeModels, onMounted, openBlock, provide, ref, unref, useModel, withCtx } from "vue";
|
|
10
|
+
import { computed, createBlock, createCommentVNode, createElementBlock, createTextVNode, createVNode, defineComponent, inject, isRef, mergeModels, onMounted, openBlock, provide, ref, unref, useModel, withCtx } from "vue";
|
|
11
11
|
//#region packages/editor/src/fields/DataSourceFields.vue?vue&type=script&setup=true&lang.ts
|
|
12
12
|
var _hoisted_1 = { class: "m-editor-data-source-fields" };
|
|
13
13
|
var _hoisted_2 = {
|
|
@@ -58,6 +58,7 @@ var DataSourceFields_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
|
|
|
58
58
|
const emit = __emit;
|
|
59
59
|
const { uiService } = useServices();
|
|
60
60
|
const mForm = inject("mForm");
|
|
61
|
+
const silentMode = inject(FORM_SILENT_MODE_KEY, false);
|
|
61
62
|
/** 对比模式下隐藏新增/编辑/删除等操作按钮,仅保留只读展示。 */
|
|
62
63
|
const isCompare = computed(() => Boolean(mForm?.isCompare));
|
|
63
64
|
const fieldValues = ref({});
|
|
@@ -315,7 +316,8 @@ var DataSourceFields_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
|
|
|
315
316
|
const addDialogVisible = useModel(__props, "visible");
|
|
316
317
|
const addFromJsonDialogVisible = useModel(__props, "visible1");
|
|
317
318
|
const { height: editorHeight } = useEditorContentHeight();
|
|
318
|
-
const
|
|
319
|
+
const parentFloating = inject("parentFloating", ref(null));
|
|
320
|
+
const { boxPosition, calcBoxPosition } = useNextFloatBoxPosition(uiService, parentFloating);
|
|
319
321
|
const frameworkWidth = computed(() => uiService.get("frameworkRect")?.width || 0);
|
|
320
322
|
/**
|
|
321
323
|
* 由 DataSourceConfigPanel 注入:打开数据源详情后需要直接打开的字段路径(字段名数组)。
|
|
@@ -324,6 +326,7 @@ var DataSourceFields_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
|
|
|
324
326
|
const editingFieldPath = inject("editingDataSourceFieldPath", computed(() => []));
|
|
325
327
|
provide("editingDataSourceFieldPath", computed(() => editingFieldPath.value.slice(1)));
|
|
326
328
|
onMounted(() => {
|
|
329
|
+
if (silentMode) return;
|
|
327
330
|
const path = editingFieldPath.value;
|
|
328
331
|
if (!path.length) return;
|
|
329
332
|
const fields = props.model[props.name] || [];
|
|
@@ -356,7 +359,8 @@ var DataSourceFields_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
|
|
|
356
359
|
default: withCtx(() => [..._cache[9] || (_cache[9] = [createTextVNode("添加", -1)])]),
|
|
357
360
|
_: 1
|
|
358
361
|
}, 8, ["disabled"])])) : createCommentVNode("v-if", true),
|
|
359
|
-
|
|
362
|
+
!unref(silentMode) ? (openBlock(), createBlock(FloatingBox_default, {
|
|
363
|
+
key: 1,
|
|
360
364
|
"body-style": { padding: "0 16px" },
|
|
361
365
|
visible: addDialogVisible.value,
|
|
362
366
|
"onUpdate:visible": _cache[2] || (_cache[2] = ($event) => addDialogVisible.value = $event),
|
|
@@ -390,8 +394,9 @@ var DataSourceFields_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
|
|
|
390
394
|
"title",
|
|
391
395
|
"framework-width",
|
|
392
396
|
"position"
|
|
393
|
-
]),
|
|
394
|
-
|
|
397
|
+
])) : createCommentVNode("v-if", true),
|
|
398
|
+
!unref(silentMode) ? (openBlock(), createBlock(FloatingBox_default, {
|
|
399
|
+
key: 2,
|
|
395
400
|
"body-style": { padding: "0 16px" },
|
|
396
401
|
visible: addFromJsonDialogVisible.value,
|
|
397
402
|
"onUpdate:visible": _cache[5] || (_cache[5] = ($event) => addFromJsonDialogVisible.value = $event),
|
|
@@ -416,7 +421,7 @@ var DataSourceFields_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
|
|
|
416
421
|
"height",
|
|
417
422
|
"framework-width",
|
|
418
423
|
"position"
|
|
419
|
-
])
|
|
424
|
+
])) : createCommentVNode("v-if", true)
|
|
420
425
|
]);
|
|
421
426
|
};
|
|
422
427
|
}
|
|
@@ -128,7 +128,8 @@ var DataSourceInput_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
|
|
|
128
128
|
*/
|
|
129
129
|
const fieldQuerySearch = (queryString, leftAngleIndex, dotIndex, cb) => {
|
|
130
130
|
let result = [];
|
|
131
|
-
const
|
|
131
|
+
const dsKey = queryString.substring(leftAngleIndex + 1, dotIndex);
|
|
132
|
+
const keys = getKeysArray(dsKey);
|
|
132
133
|
const dsId = keys.shift();
|
|
133
134
|
const ds = dataSources.value.find((ds) => ds.id === dsId);
|
|
134
135
|
if (!ds) {
|
package/dist/es/fields/DataSourceMethodSelect.vue_vue_type_script_setup_true_name_true_lang.js
CHANGED
|
@@ -3,7 +3,7 @@ import { useServices } from "../hooks/use-services.js";
|
|
|
3
3
|
import { getFieldType } from "../utils/data-source/index.js";
|
|
4
4
|
import Icon_default from "../components/Icon.js";
|
|
5
5
|
import CodeParams_default from "../components/CodeParams.js";
|
|
6
|
-
import { MCascader, createValues, filterFunction } from "@tmagic/form";
|
|
6
|
+
import { FORM_SILENT_MODE_KEY, MCascader, createValues, filterFunction } from "@tmagic/form";
|
|
7
7
|
import { TMagicButton, TMagicTooltip } from "@tmagic/design";
|
|
8
8
|
import { DATA_SOURCE_SET_DATA_METHOD_NAME } from "@tmagic/utils";
|
|
9
9
|
import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, inject, openBlock, ref, unref, withCtx } from "vue";
|
|
@@ -36,6 +36,7 @@ var DataSourceMethodSelect_vue_vue_type_script_setup_true_name_true_lang_default
|
|
|
36
36
|
setup(__props, { emit: __emit }) {
|
|
37
37
|
const { dataSourceService, uiService } = useServices();
|
|
38
38
|
const mForm = inject("mForm");
|
|
39
|
+
const silentMode = inject(FORM_SILENT_MODE_KEY, false);
|
|
39
40
|
const eventBus = inject("eventBus");
|
|
40
41
|
const emit = __emit;
|
|
41
42
|
const props = __props;
|
|
@@ -134,7 +135,8 @@ var DataSourceMethodSelect_vue_vue_type_script_setup_true_name_true_lang_default
|
|
|
134
135
|
eventBus?.emit("edit-data-source-method", id, methodName);
|
|
135
136
|
};
|
|
136
137
|
return (_ctx, _cache) => {
|
|
137
|
-
return openBlock(), createElementBlock("div", _hoisted_1, [createElementVNode("div", _hoisted_2, [
|
|
138
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [createElementVNode("div", _hoisted_2, [!unref(silentMode) ? (openBlock(), createBlock(unref(MCascader), {
|
|
139
|
+
key: 0,
|
|
138
140
|
class: "select",
|
|
139
141
|
config: cascaderConfig.value,
|
|
140
142
|
model: __props.model,
|
|
@@ -150,8 +152,8 @@ var DataSourceMethodSelect_vue_vue_type_script_setup_true_name_true_lang_default
|
|
|
150
152
|
"size",
|
|
151
153
|
"disabled",
|
|
152
154
|
"prop"
|
|
153
|
-
]), __props.model[__props.name] && isCustomMethod.value && dataSourceSidePanel.value && !isCompare.value ? (openBlock(), createBlock(unref(TMagicTooltip), {
|
|
154
|
-
key:
|
|
155
|
+
])) : createCommentVNode("v-if", true), !unref(silentMode) && __props.model[__props.name] && isCustomMethod.value && dataSourceSidePanel.value && !isCompare.value ? (openBlock(), createBlock(unref(TMagicTooltip), {
|
|
156
|
+
key: 1,
|
|
155
157
|
content: notEditable.value ? "查看" : "编辑"
|
|
156
158
|
}, {
|
|
157
159
|
default: withCtx(() => [createVNode(unref(TMagicButton), {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import CodeBlockEditor_default from "../components/CodeBlockEditor.js";
|
|
2
|
+
import { FORM_SILENT_MODE_KEY } from "@tmagic/form";
|
|
2
3
|
import { MagicTable } from "@tmagic/table";
|
|
3
4
|
import { TMagicButton, tMagicMessageBox } from "@tmagic/design";
|
|
4
5
|
import { computed, createBlock, createCommentVNode, createElementBlock, createTextVNode, createVNode, defineComponent, inject, nextTick, onMounted, openBlock, ref, unref, useTemplateRef, withCtx } from "vue";
|
|
@@ -35,6 +36,7 @@ var DataSourceMethods_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
|
|
|
35
36
|
const props = __props;
|
|
36
37
|
const emit = __emit;
|
|
37
38
|
const mForm = inject("mForm");
|
|
39
|
+
const silentMode = inject(FORM_SILENT_MODE_KEY, false);
|
|
38
40
|
/** 对比模式下隐藏新增/编辑/删除等操作按钮,仅保留只读展示。 */
|
|
39
41
|
const isCompare = computed(() => Boolean(mForm?.isCompare));
|
|
40
42
|
const codeConfig = ref();
|
|
@@ -128,6 +130,7 @@ var DataSourceMethods_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
|
|
|
128
130
|
/** 由 DataSourceConfigPanel 注入:打开数据源详情后需要直接打开的方法名 */
|
|
129
131
|
const editingMethodName = inject("editingDataSourceMethodName", computed(() => ""));
|
|
130
132
|
onMounted(() => {
|
|
133
|
+
if (silentMode) return;
|
|
131
134
|
const methodName = editingMethodName.value;
|
|
132
135
|
if (!methodName) return;
|
|
133
136
|
const methods = props.model[props.name] || [];
|
|
@@ -152,7 +155,7 @@ var DataSourceMethods_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
|
|
|
152
155
|
default: withCtx(() => [..._cache[0] || (_cache[0] = [createTextVNode("添加", -1)])]),
|
|
153
156
|
_: 1
|
|
154
157
|
}, 8, ["disabled"])])) : createCommentVNode("v-if", true),
|
|
155
|
-
codeConfig.value ? (openBlock(), createBlock(CodeBlockEditor_default, {
|
|
158
|
+
codeConfig.value && !unref(silentMode) ? (openBlock(), createBlock(CodeBlockEditor_default, {
|
|
156
159
|
key: 1,
|
|
157
160
|
ref: "codeBlockEditor",
|
|
158
161
|
disabled: __props.disabled,
|
|
@@ -3,11 +3,11 @@ import { useEditorContentHeight } from "../hooks/use-editor-content-height.js";
|
|
|
3
3
|
import { useNextFloatBoxPosition } from "../hooks/use-next-float-box-position.js";
|
|
4
4
|
import CodeEditor_default from "../layouts/CodeEditor.js";
|
|
5
5
|
import FloatingBox_default from "../components/FloatingBox.js";
|
|
6
|
-
import { MFormBox } from "@tmagic/form";
|
|
6
|
+
import { FORM_SILENT_MODE_KEY, MFormBox } from "@tmagic/form";
|
|
7
7
|
import { MagicTable } from "@tmagic/table";
|
|
8
8
|
import { TMagicButton, TMagicSwitch, tMagicMessageBox } from "@tmagic/design";
|
|
9
9
|
import { getDefaultValueFromFields } from "@tmagic/utils";
|
|
10
|
-
import { computed, createCommentVNode, createElementBlock, createTextVNode, createVNode, defineComponent, inject, isRef, mergeModels, openBlock, ref, unref, useModel, withCtx } from "vue";
|
|
10
|
+
import { computed, createBlock, createCommentVNode, createElementBlock, createTextVNode, createVNode, defineComponent, inject, isRef, mergeModels, openBlock, ref, unref, useModel, withCtx } from "vue";
|
|
11
11
|
//#region packages/editor/src/fields/DataSourceMocks.vue?vue&type=script&setup=true&lang.ts
|
|
12
12
|
var _hoisted_1 = { class: "m-editor-data-source-fields" };
|
|
13
13
|
var _hoisted_2 = {
|
|
@@ -49,6 +49,7 @@ var DataSourceMocks_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
|
|
|
49
49
|
const emit = __emit;
|
|
50
50
|
const { uiService } = useServices();
|
|
51
51
|
const mForm = inject("mForm");
|
|
52
|
+
const silentMode = inject(FORM_SILENT_MODE_KEY, false);
|
|
52
53
|
/** 对比模式下隐藏新增/编辑/删除等操作按钮,仅保留只读展示。 */
|
|
53
54
|
const isCompare = computed(() => Boolean(mForm?.isCompare));
|
|
54
55
|
const width = useModel(__props, "width");
|
|
@@ -215,7 +216,8 @@ var DataSourceMocks_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
|
|
|
215
216
|
};
|
|
216
217
|
const addDialogVisible = useModel(__props, "visible");
|
|
217
218
|
const { height: editorHeight } = useEditorContentHeight();
|
|
218
|
-
const
|
|
219
|
+
const parentFloating = inject("parentFloating", ref(null));
|
|
220
|
+
const { boxPosition, calcBoxPosition } = useNextFloatBoxPosition(uiService, parentFloating);
|
|
219
221
|
const frameworkWidth = computed(() => uiService.get("frameworkRect")?.width || 0);
|
|
220
222
|
return (_ctx, _cache) => {
|
|
221
223
|
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
@@ -233,7 +235,8 @@ var DataSourceMocks_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
|
|
|
233
235
|
default: withCtx(() => [..._cache[4] || (_cache[4] = [createTextVNode("添加", -1)])]),
|
|
234
236
|
_: 1
|
|
235
237
|
}, 8, ["disabled"])])) : createCommentVNode("v-if", true),
|
|
236
|
-
|
|
238
|
+
!unref(silentMode) ? (openBlock(), createBlock(FloatingBox_default, {
|
|
239
|
+
key: 1,
|
|
237
240
|
"body-style": { padding: "0 16px" },
|
|
238
241
|
visible: addDialogVisible.value,
|
|
239
242
|
"onUpdate:visible": _cache[1] || (_cache[1] = ($event) => addDialogVisible.value = $event),
|
|
@@ -265,7 +268,7 @@ var DataSourceMocks_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
|
|
|
265
268
|
"title",
|
|
266
269
|
"framework-width",
|
|
267
270
|
"position"
|
|
268
|
-
])
|
|
271
|
+
])) : createCommentVNode("v-if", true)
|
|
269
272
|
]);
|
|
270
273
|
};
|
|
271
274
|
}
|
|
@@ -33,7 +33,8 @@ var DisplayConds_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
|
|
|
33
33
|
const parentFields = computed(() => filterFunction(mForm, props.config.parentFields, props) || []);
|
|
34
34
|
const fieldOnChange = (_formState, v, { model }) => {
|
|
35
35
|
const [id, ...fieldNames] = [...parentFields.value, ...v];
|
|
36
|
-
const
|
|
36
|
+
const ds = dataSourceService.getDataSourceById(id);
|
|
37
|
+
const type = getFieldType(ds, fieldNames);
|
|
37
38
|
if (type === "number") model.value = Number(model.value);
|
|
38
39
|
else if (type === "boolean") model.value = Boolean(model.value);
|
|
39
40
|
else if (type === "null") model.value = null;
|
|
@@ -131,7 +132,8 @@ var DisplayConds_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
|
|
|
131
132
|
name: "value",
|
|
132
133
|
type: (_mForm, { model }) => {
|
|
133
134
|
const [id, ...fieldNames] = [...parentFields.value, ...model.field];
|
|
134
|
-
const
|
|
135
|
+
const ds = dataSourceService.getDataSourceById(id);
|
|
136
|
+
const type = getFieldType(ds, fieldNames);
|
|
135
137
|
if (type === "number") return "number";
|
|
136
138
|
if (type === "boolean") return "select";
|
|
137
139
|
if (type === "null") return "display";
|
|
@@ -187,8 +187,8 @@ var EventSelect_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
|
|
|
187
187
|
name: "method",
|
|
188
188
|
label: "动作",
|
|
189
189
|
type: compActionConfig.value.type,
|
|
190
|
-
options: (mForm, { model }) => {
|
|
191
|
-
const node = editorService.getNodeById(model.to);
|
|
190
|
+
options: (mForm, { model, formValue }) => {
|
|
191
|
+
const node = editorService.getNodeById(model.to) || formValue;
|
|
192
192
|
if (!node?.type) return [];
|
|
193
193
|
return eventsService.getMethod(node.type, {
|
|
194
194
|
targetId: model.to,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import CodeEditor_default from "../layouts/CodeEditor.js";
|
|
2
2
|
import CodeIcon_default from "../icons/CodeIcon.js";
|
|
3
|
+
import { FORM_SILENT_MODE_KEY } from "@tmagic/form";
|
|
3
4
|
import { TMagicButton, TMagicInput } from "@tmagic/design";
|
|
4
5
|
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, inject, openBlock, ref, renderList, unref, watchEffect, withCtx } from "vue";
|
|
5
6
|
import { Delete, Plus } from "@element-plus/icons-vue";
|
|
@@ -32,6 +33,7 @@ var KeyValue_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
|
|
|
32
33
|
const props = __props;
|
|
33
34
|
const emit = __emit;
|
|
34
35
|
const mForm = inject("mForm");
|
|
36
|
+
const silentMode = inject(FORM_SILENT_MODE_KEY, false);
|
|
35
37
|
/** 对比模式下隐藏增删/代码切换等操作按钮,仅保留只读展示。 */
|
|
36
38
|
const isCompare = computed(() => Boolean(mForm?.isCompare));
|
|
37
39
|
const records = ref([]);
|
|
@@ -137,7 +139,7 @@ var KeyValue_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
|
|
|
137
139
|
"disabled",
|
|
138
140
|
"icon"
|
|
139
141
|
])) : createCommentVNode("v-if", true)])) : createCommentVNode("v-if", true),
|
|
140
|
-
__props.config.advanced && showCode.value ? (openBlock(), createBlock(CodeEditor_default, {
|
|
142
|
+
__props.config.advanced && showCode.value && !unref(silentMode) ? (openBlock(), createBlock(CodeEditor_default, {
|
|
141
143
|
key: 1,
|
|
142
144
|
"editor-custom-type": "m-fields-key-value",
|
|
143
145
|
language: "javascript",
|
|
@@ -150,7 +152,7 @@ var KeyValue_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
|
|
|
150
152
|
parse: true,
|
|
151
153
|
onSave: save
|
|
152
154
|
}, null, 8, ["init-values", "options"])) : createCommentVNode("v-if", true),
|
|
153
|
-
__props.config.advanced && !isCompare.value ? (openBlock(), createBlock(unref(TMagicButton), {
|
|
155
|
+
__props.config.advanced && !isCompare.value && !unref(silentMode) ? (openBlock(), createBlock(unref(TMagicButton), {
|
|
154
156
|
key: 2,
|
|
155
157
|
size: "default",
|
|
156
158
|
disabled: __props.disabled,
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { getCodeBlockFormConfig } from "../utils/code-block.js";
|
|
2
|
-
import { removeStyleDisplayConfig } from "../utils/props.js";
|
|
3
2
|
import { computed, inject, provide, ref, useTemplateRef, watch, watchEffect } from "vue";
|
|
4
3
|
//#region packages/editor/src/hooks/use-compare-form.ts
|
|
5
4
|
/**
|
|
@@ -54,7 +53,7 @@ var useCompareForm = (props) => {
|
|
|
54
53
|
switch (props.category) {
|
|
55
54
|
case "node":
|
|
56
55
|
if (!props.type) return [];
|
|
57
|
-
return
|
|
56
|
+
return props.services.propsService.getPropsConfig(props.type, { node: props.value });
|
|
58
57
|
case "data-source": return props.services.dataSourceService.getFormConfig(props.type || "base").map((item) => "type" in item && item.type === "tab" ? {
|
|
59
58
|
...item,
|
|
60
59
|
active: "fields"
|
package/dist/es/index.js
CHANGED
|
@@ -2,8 +2,8 @@ import { CODE_DRAFT_STORAGE_KEY, CodeDeleteErrorType, ColumnLayout, DragType, Ke
|
|
|
2
2
|
import { useCodeBlockEdit } from "./hooks/use-code-block-edit.js";
|
|
3
3
|
import { getEditorConfig, isGlobalFlat, setEditorConfig } from "./utils/config.js";
|
|
4
4
|
import { getCodeBlockFormConfig } from "./utils/code-block.js";
|
|
5
|
-
import { advancedTabConfig, arrayOptions, booleanOptions, displayTabConfig, eqOptions, eventTabConfig, fillConfig, getCondOpOptionsByFieldType, numberOptions, removeStyleDisplayConfig, styleTabConfig } from "./utils/props.js";
|
|
6
5
|
import { useCompareForm } from "./hooks/use-compare-form.js";
|
|
6
|
+
import { advancedTabConfig, arrayOptions, booleanOptions, displayTabConfig, eqOptions, eventTabConfig, fillConfig, getCondOpOptionsByFieldType, numberOptions, styleTabConfig } from "./utils/props.js";
|
|
7
7
|
import props_default from "./services/props.js";
|
|
8
8
|
import { UndoRedo } from "./utils/undo-redo.js";
|
|
9
9
|
import { createStackStep, describeRevertStep, deserializeStacks, detectStackOpType, detectTargetId, detectTargetName, getLastPushedHistoryIds, getOrCreateStack, markStackSaved, mergeSteps, serializeStacks, undoFloor } from "./utils/history.js";
|
|
@@ -92,4 +92,4 @@ export * from "@tmagic/table";
|
|
|
92
92
|
export * from "@tmagic/stage";
|
|
93
93
|
export * from "@tmagic/design";
|
|
94
94
|
export * from "@tmagic/utils";
|
|
95
|
-
export { ALL_COND_OPS, CODE_DRAFT_STORAGE_KEY, COPY_CODE_STORAGE_KEY, COPY_DS_STORAGE_KEY, COPY_STORAGE_KEY, CodeBlockEditor_default as CodeBlockEditor, CodeBlockList_default as CodeBlockList, CodeBlockListPanel_default as CodeBlockListPanel, CodeDeleteErrorType, CodeSelect_default as CodeSelect, CodeSelectCol_default as CodeSelectCol, ColumnLayout, CompareForm_default as CompareForm, ComponentListPanel_default as ComponentListPanel, CondOpSelect_default as CondOpSelect, ContentMenu_default as ContentMenu, DEFAULT_LEFT_COLUMN_WIDTH, DEFAULT_RIGHT_COLUMN_WIDTH, DataSourceAddButton_default as DataSourceAddButton, DataSourceConfigPanel_default as DataSourceConfigPanel, Index_default as DataSourceFieldSelect, DataSourceFields_default as DataSourceFields, DataSourceInput_default as DataSourceInput, DataSourceMethodSelect_default as DataSourceMethodSelect, DataSourceMethods_default as DataSourceMethods, DataSourceMocks_default as DataSourceMocks, DataSourceSelect_default as DataSourceSelect, DepTargetType, DisplayConds_default as DisplayConds, DragType, EVENT_NAME_VALUE_SEPARATOR, EventSelect_default as EventSelect, Fixed2Other, FloatingBox_default as FloatingBox, H_GUIDE_LINE_STORAGE_KEY, HistoryDiffDialog_default as HistoryDiffDialog, Bucket_default as HistoryListBucket, BucketTab_default as HistoryListBucketTab, Icon_default as Icon, IdleTask, KeyBindingCommand, KeyValue_default as KeyValue, Keys, LEFT_COLUMN_WIDTH_STORAGE_KEY, LayerNodeContent_default as LayerNodeContent, LayerOffset, LayerPanel_default as LayerPanel, Layout, SplitView_default as LayoutContainer, MIN_CENTER_COLUMN_WIDTH, MIN_LEFT_COLUMN_WIDTH, MIN_RIGHT_COLUMN_WIDTH, PROPS_PANEL_WIDTH_STORAGE_KEY, PageFragmentSelect_default as PageFragmentSelect, FormPanel_default as PropsFormPanel, PropsPanel_default as PropsPanel, RIGHT_COLUMN_WIDTH_STORAGE_KEY, Resizer_default as Resizer, ScrollViewer, SideItemKey, SplitView_default as SplitView, StageCore, Index_default$1 as StyleSetter, CodeEditor_default as TMagicCodeEditor, Editor_default as TMagicEditor, ToolButton_default as ToolButton, Tree_default as Tree, TreeNode_default as TreeNode, UI_SELECT_MODE_EVENT_NAME, UndoRedo, V_GUIDE_LINE_STORAGE_KEY, ViewForm_default as ViewForm, advancedTabConfig, arrayOptions, beforePaste, booleanOptions, buildChangeRecords, calcAlignCenterStyle, calcLayerTargetIndex, calcMoveStyle, canUsePluginMethods, change2Fixed, classifyDragSources, codeBlock_default as codeBlockService, collectEventNameOptionValues, collectRelatedNodes, componentList_default as componentListService, confirmHistoryAction, createStackStep, dataSource_default as dataSourceService, debug, plugin_default as default, defaultIsExpandable, dep_default as depService, describeRevertStep, describeStepForRevert, deserializeStacks, designPlugin, detectStackOpType, detectTargetId, detectTargetName, displayTabConfig, editorNodeMergeCustomizer, editor_default as editorService, editorTypeMatchRules, eqOptions, error, eventTabConfig, events_default as eventsService, fillConfig, fixNodeLeft, fixNodePosition, formPlugin, generatePageName, generatePageNameByApp, getAddParent, getCascaderOptionsFromFields, getCodeBlockFormConfig, getCompActionAllowedValues, getCompActionOptions, getCondOpOptionsByFieldType, getDefaultConfig, getDisplayField, getEditorConfig, getEventNameAllowedValues, getEventNameOptions, getFieldType, getFormConfig, getFormValue, getGuideLineFromCache, getInitPositionStyle, getLastPushedHistoryIds, getNodeIndex, getOrCreateStack, getPageFragmentList, getPageList, getPageNameList, getPositionInContainer, getRelativeStyle, history_default as historyService, idbDelete, idbGet, idbSet, info, isEventNameCheckStrictly, isGlobalFlat, isIncludeDataSource, isIndexedDBSupported, keybinding_default as keybindingService, monaco_editor_default as loadMonaco, log, markStackSaved, mergeSteps, moveItemsInContainer, normalizeCompActionValue, numberOptions, openIndexedDB, props_default as propsService,
|
|
95
|
+
export { ALL_COND_OPS, CODE_DRAFT_STORAGE_KEY, COPY_CODE_STORAGE_KEY, COPY_DS_STORAGE_KEY, COPY_STORAGE_KEY, CodeBlockEditor_default as CodeBlockEditor, CodeBlockList_default as CodeBlockList, CodeBlockListPanel_default as CodeBlockListPanel, CodeDeleteErrorType, CodeSelect_default as CodeSelect, CodeSelectCol_default as CodeSelectCol, ColumnLayout, CompareForm_default as CompareForm, ComponentListPanel_default as ComponentListPanel, CondOpSelect_default as CondOpSelect, ContentMenu_default as ContentMenu, DEFAULT_LEFT_COLUMN_WIDTH, DEFAULT_RIGHT_COLUMN_WIDTH, DataSourceAddButton_default as DataSourceAddButton, DataSourceConfigPanel_default as DataSourceConfigPanel, Index_default as DataSourceFieldSelect, DataSourceFields_default as DataSourceFields, DataSourceInput_default as DataSourceInput, DataSourceMethodSelect_default as DataSourceMethodSelect, DataSourceMethods_default as DataSourceMethods, DataSourceMocks_default as DataSourceMocks, DataSourceSelect_default as DataSourceSelect, DepTargetType, DisplayConds_default as DisplayConds, DragType, EVENT_NAME_VALUE_SEPARATOR, EventSelect_default as EventSelect, Fixed2Other, FloatingBox_default as FloatingBox, H_GUIDE_LINE_STORAGE_KEY, HistoryDiffDialog_default as HistoryDiffDialog, Bucket_default as HistoryListBucket, BucketTab_default as HistoryListBucketTab, Icon_default as Icon, IdleTask, KeyBindingCommand, KeyValue_default as KeyValue, Keys, LEFT_COLUMN_WIDTH_STORAGE_KEY, LayerNodeContent_default as LayerNodeContent, LayerOffset, LayerPanel_default as LayerPanel, Layout, SplitView_default as LayoutContainer, MIN_CENTER_COLUMN_WIDTH, MIN_LEFT_COLUMN_WIDTH, MIN_RIGHT_COLUMN_WIDTH, PROPS_PANEL_WIDTH_STORAGE_KEY, PageFragmentSelect_default as PageFragmentSelect, FormPanel_default as PropsFormPanel, PropsPanel_default as PropsPanel, RIGHT_COLUMN_WIDTH_STORAGE_KEY, Resizer_default as Resizer, ScrollViewer, SideItemKey, SplitView_default as SplitView, StageCore, Index_default$1 as StyleSetter, CodeEditor_default as TMagicCodeEditor, Editor_default as TMagicEditor, ToolButton_default as ToolButton, Tree_default as Tree, TreeNode_default as TreeNode, UI_SELECT_MODE_EVENT_NAME, UndoRedo, V_GUIDE_LINE_STORAGE_KEY, ViewForm_default as ViewForm, advancedTabConfig, arrayOptions, beforePaste, booleanOptions, buildChangeRecords, calcAlignCenterStyle, calcLayerTargetIndex, calcMoveStyle, canUsePluginMethods, change2Fixed, classifyDragSources, codeBlock_default as codeBlockService, collectEventNameOptionValues, collectRelatedNodes, componentList_default as componentListService, confirmHistoryAction, createStackStep, dataSource_default as dataSourceService, debug, plugin_default as default, defaultIsExpandable, dep_default as depService, describeRevertStep, describeStepForRevert, deserializeStacks, designPlugin, detectStackOpType, detectTargetId, detectTargetName, displayTabConfig, editorNodeMergeCustomizer, editor_default as editorService, editorTypeMatchRules, eqOptions, error, eventTabConfig, events_default as eventsService, fillConfig, fixNodeLeft, fixNodePosition, formPlugin, generatePageName, generatePageNameByApp, getAddParent, getCascaderOptionsFromFields, getCodeBlockFormConfig, getCompActionAllowedValues, getCompActionOptions, getCondOpOptionsByFieldType, getDefaultConfig, getDisplayField, getEditorConfig, getEventNameAllowedValues, getEventNameOptions, getFieldType, getFormConfig, getFormValue, getGuideLineFromCache, getInitPositionStyle, getLastPushedHistoryIds, getNodeIndex, getOrCreateStack, getPageFragmentList, getPageList, getPageNameList, getPositionInContainer, getRelativeStyle, history_default as historyService, idbDelete, idbGet, idbSet, info, isEventNameCheckStrictly, isGlobalFlat, isIncludeDataSource, isIndexedDBSupported, keybinding_default as keybindingService, monaco_editor_default as loadMonaco, log, markStackSaved, mergeSteps, moveItemsInContainer, normalizeCompActionValue, numberOptions, openIndexedDB, props_default as propsService, resolveFieldByPath, resolveSelectedNode, serializeConfig, serializeStacks, setChildrenLayout, setEditorConfig, setLayout, stageOverlay_default as stageOverlayService, storage_default as storageService, styleTabConfig, tablePlugin, toggleFixedPosition, ui_default as uiService, undoFloor, updateStatus, useCodeBlockEdit, useCompareForm, useEditorContentHeight, useFilter, useFloatBox, useGetSo, useHistoryRevert, useNextFloatBoxPosition, useNodeStatus, useServices, useStage, useWindowRect, validateDataSourceFieldSelectValue, warn };
|
package/dist/es/initService.js
CHANGED
|
@@ -329,7 +329,8 @@ var initServiceEvents = (props, emit, { editorService, codeBlockService, dataSou
|
|
|
329
329
|
const root = editorService.get("root");
|
|
330
330
|
if (!root) return;
|
|
331
331
|
const handler = async () => {
|
|
332
|
-
const
|
|
332
|
+
const nodeIds = Object.keys(root.dataSourceDeps?.[id] || {});
|
|
333
|
+
const nodes = getNodes(nodeIds, root.items);
|
|
333
334
|
if (!(await Promise.all([
|
|
334
335
|
collectIdle(nodes, false, DepTargetType.DATA_SOURCE),
|
|
335
336
|
collectIdle(nodes, false, DepTargetType.DATA_SOURCE_COND),
|
|
@@ -145,7 +145,8 @@ var Sidebar_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCo
|
|
|
145
145
|
watch(() => props.data.status, (status) => {
|
|
146
146
|
activeTabName.value = status || "0";
|
|
147
147
|
});
|
|
148
|
-
const
|
|
148
|
+
const slideKeys = computed(() => sideBarItems.value.map((sideBarItem) => sideBarItem.$key));
|
|
149
|
+
const { dragstartHandler, dragendHandler, floatBoxStates, showingBoxKeys } = useFloatBox(slideKeys);
|
|
149
150
|
watch(() => showingBoxKeys.value.length, () => {
|
|
150
151
|
if (!showingBoxKeys.value.some((key) => activeTabName.value === sideBarItems.value.find((v) => v.$key === key)?.text) && activeTabName.value) return;
|
|
151
152
|
const nextSlideBarItem = sideBarItems.value.find((sideBarItem) => !showingBoxKeys.value.includes(sideBarItem.$key));
|
|
@@ -38,7 +38,8 @@ var DataSourceConfigPanel_vue_vue_type_script_setup_true_lang_default = /*@__PUR
|
|
|
38
38
|
const initValues = ref({});
|
|
39
39
|
const dataSourceConfig = ref([]);
|
|
40
40
|
const { height: editorHeight } = useEditorContentHeight();
|
|
41
|
-
const
|
|
41
|
+
const parentFloating = inject("parentFloating", ref(null));
|
|
42
|
+
const { boxPosition, calcBoxPosition } = useNextFloatBoxPosition(uiService, parentFloating);
|
|
42
43
|
const frameworkWidth = computed(() => uiService.get("frameworkRect")?.width || 0);
|
|
43
44
|
/** 供「方法定义」tab 内的字段消费,用于打开数据源详情后自动打开指定方法 */
|
|
44
45
|
provide("editingDataSourceMethodName", computed(() => props.editMethodName));
|
|
@@ -51,7 +51,8 @@ var LayerPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
|
|
|
51
51
|
}
|
|
52
52
|
};
|
|
53
53
|
const { handleDragStart, handleDragEnd, handleDragLeave, handleDragOver } = useDrag(services, { canDropIn: (sourceIds, targetId) => props.canDropIn?.(sourceIds, targetId, "layer") });
|
|
54
|
-
const
|
|
54
|
+
const menuRef = useTemplateRef("menu");
|
|
55
|
+
const { nodeClickHandler, nodeDblclickHandler, nodeContentMenuHandler, highlightHandler: mouseenterHandler } = useClick(services, isCtrlKeyDown, nodeStatusMap, menuRef);
|
|
55
56
|
const dblclickHandler = async (event, data) => {
|
|
56
57
|
if (props.beforeNodeDblclick) {
|
|
57
58
|
if (await props.beforeNodeDblclick(event, data) === false) return;
|
package/dist/es/plugin.js
CHANGED
|
@@ -21,7 +21,7 @@ import Code_default from "./fields/Code.js";
|
|
|
21
21
|
import CodeLink_default from "./fields/CodeLink.js";
|
|
22
22
|
import UISelect_default from "./fields/UISelect.js";
|
|
23
23
|
/* empty css */
|
|
24
|
-
import formPlugin, { registerTypeMatchRules } from "@tmagic/form";
|
|
24
|
+
import formPlugin, { registerSilentLeafFieldTypes, registerTypeMatchRules } from "@tmagic/form";
|
|
25
25
|
import tablePlugin from "@tmagic/table";
|
|
26
26
|
import designPlugin from "@tmagic/design";
|
|
27
27
|
//#region packages/editor/src/plugin.ts
|
|
@@ -37,6 +37,14 @@ var plugin_default = { install: (app, opt) => {
|
|
|
37
37
|
app.use(formPlugin, opt || {});
|
|
38
38
|
app.use(tablePlugin);
|
|
39
39
|
registerTypeMatchRules(editorTypeMatchRules);
|
|
40
|
+
registerSilentLeafFieldTypes([
|
|
41
|
+
"vs-code",
|
|
42
|
+
"ui-select",
|
|
43
|
+
"cond-op-select",
|
|
44
|
+
"page-fragment-select",
|
|
45
|
+
"data-source-select",
|
|
46
|
+
"data-source-input"
|
|
47
|
+
]);
|
|
40
48
|
app.config.globalProperties.$TMAGIC_EDITOR = option;
|
|
41
49
|
setEditorConfig(option);
|
|
42
50
|
app.component(`${Editor_default.name || "MEditor"}`, Editor_default);
|
|
@@ -141,7 +141,8 @@ var CodeBlock = class extends BaseService {
|
|
|
141
141
|
* @returns {CodeBlockDSL}
|
|
142
142
|
*/
|
|
143
143
|
getCodeDslByIds(ids) {
|
|
144
|
-
|
|
144
|
+
const codeDsl = this.getCodeDsl();
|
|
145
|
+
return pick(codeDsl, ids);
|
|
145
146
|
}
|
|
146
147
|
/**
|
|
147
148
|
* 获取编辑状态
|
|
@@ -371,7 +372,8 @@ var CodeBlock = class extends BaseService {
|
|
|
371
372
|
*/
|
|
372
373
|
async getUniqueId() {
|
|
373
374
|
const newId = `code_${Math.random().toString(10).substring(2).substring(0, 4)}`;
|
|
374
|
-
|
|
375
|
+
const dsl = await this.getCodeDsl();
|
|
376
|
+
if (!keys(dsl).includes(newId)) return newId;
|
|
375
377
|
return await this.getUniqueId();
|
|
376
378
|
}
|
|
377
379
|
/**
|