@tmagic/editor 1.8.0-beta.8 → 1.8.0-manmanyu.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/dist/es/Editor.vue_vue_type_script_setup_true_lang.js +13 -3
  2. package/dist/es/components/ContentMenu.vue_vue_type_script_setup_true_lang.js +11 -4
  3. package/dist/es/components/FloatingBox.vue_vue_type_script_setup_true_lang.js +9 -4
  4. package/dist/es/fields/Code.vue_vue_type_script_setup_true_lang.js +4 -1
  5. package/dist/es/fields/CodeLink.vue_vue_type_script_setup_true_lang.js +4 -1
  6. package/dist/es/fields/CodeSelect.vue_vue_type_script_setup_true_lang.js +68 -43
  7. package/dist/es/fields/CodeSelectCol.vue_vue_type_script_setup_true_lang.js +5 -1
  8. package/dist/es/fields/CondOpSelect.vue_vue_type_script_setup_true_lang.js +4 -1
  9. package/dist/es/fields/DataSourceFieldSelect/Index.vue_vue_type_script_setup_true_lang.js +10 -7
  10. package/dist/es/fields/DataSourceFields.vue_vue_type_script_setup_true_lang.js +4 -1
  11. package/dist/es/fields/DataSourceInput.vue_vue_type_script_setup_true_lang.js +4 -1
  12. package/dist/es/fields/DataSourceMethodSelect.vue_vue_type_script_setup_true_name_true_lang.js +4 -1
  13. package/dist/es/fields/DataSourceMethods.vue_vue_type_script_setup_true_lang.js +4 -1
  14. package/dist/es/fields/DataSourceMocks.vue_vue_type_script_setup_true_lang.js +4 -1
  15. package/dist/es/fields/DataSourceSelect.vue_vue_type_script_setup_true_lang.js +4 -1
  16. package/dist/es/fields/DisplayConds.vue_vue_type_script_setup_true_lang.js +8 -2
  17. package/dist/es/fields/EventSelect.vue_vue_type_script_setup_true_lang.js +101 -64
  18. package/dist/es/fields/KeyValue.vue_vue_type_script_setup_true_lang.js +4 -1
  19. package/dist/es/fields/PageFragmentSelect.vue_vue_type_script_setup_true_lang.js +4 -1
  20. package/dist/es/fields/StyleSetter/Index.vue_vue_type_script_setup_true_lang.js +5 -4
  21. package/dist/es/fields/StyleSetter/components/BackgroundPosition.vue_vue_type_script_setup_true_lang.js +4 -1
  22. package/dist/es/fields/StyleSetter/components/Border.vue_vue_type_script_setup_true_lang.js +1 -1
  23. package/dist/es/fields/StyleSetter/icons/align-items/Center.js +31 -0
  24. package/dist/es/fields/StyleSetter/icons/align-items/FlexEnd.js +31 -0
  25. package/dist/es/fields/StyleSetter/icons/align-items/FlexStart.js +31 -0
  26. package/dist/es/fields/StyleSetter/icons/align-items/SpaceAround.js +50 -0
  27. package/dist/es/fields/StyleSetter/icons/align-items/SpaceBetween.js +50 -0
  28. package/dist/es/fields/StyleSetter/icons/background-repeat/NoRepeat.js +6 -6
  29. package/dist/es/fields/StyleSetter/icons/background-repeat/Repeat.js +5 -2
  30. package/dist/es/fields/StyleSetter/icons/background-repeat/RepeatX.js +28 -5
  31. package/dist/es/fields/StyleSetter/icons/background-repeat/RepeatY.js +31 -5
  32. package/dist/es/fields/StyleSetter/icons/flex-direction/Column.js +10 -2
  33. package/dist/es/fields/StyleSetter/icons/flex-direction/ColumnReverse.js +10 -2
  34. package/dist/es/fields/StyleSetter/icons/flex-direction/Row.js +10 -2
  35. package/dist/es/fields/StyleSetter/icons/flex-direction/RowReverse.js +10 -2
  36. package/dist/es/fields/StyleSetter/icons/justify-content/Center.js +16 -2
  37. package/dist/es/fields/StyleSetter/icons/justify-content/FlexEnd.js +18 -2
  38. package/dist/es/fields/StyleSetter/icons/justify-content/FlexStart.js +18 -2
  39. package/dist/es/fields/StyleSetter/icons/justify-content/SpaceAround.js +36 -2
  40. package/dist/es/fields/StyleSetter/icons/justify-content/SpaceBetween.js +32 -2
  41. package/dist/es/fields/StyleSetter/pro/Background.vue_vue_type_script_setup_true_lang.js +11 -6
  42. package/dist/es/fields/StyleSetter/pro/Font.vue_vue_type_script_setup_true_lang.js +6 -3
  43. package/dist/es/fields/StyleSetter/pro/Layout.vue_vue_type_script_setup_true_lang.js +82 -46
  44. package/dist/es/fields/UISelect.vue_vue_type_script_setup_true_lang.js +4 -1
  45. package/dist/es/icons/DatasourceIcon.js +17 -0
  46. package/dist/es/layouts/Framework.vue_vue_type_script_setup_true_lang.js +14 -10
  47. package/dist/es/style.css +294 -37
  48. package/dist/es/utils/const.js +1 -1
  49. package/dist/es/utils/props.js +137 -31
  50. package/dist/style.css +294 -37
  51. package/dist/themes/magic-admin.css +2316 -0
  52. package/dist/tmagic-editor.umd.cjs +1107 -437
  53. package/package.json +7 -7
  54. package/src/Editor.vue +13 -1
  55. package/src/components/ContentMenu.vue +10 -2
  56. package/src/components/FloatingBox.vue +13 -2
  57. package/src/editorProps.ts +9 -0
  58. package/src/fields/CodeSelect.vue +51 -40
  59. package/src/fields/CodeSelectCol.vue +1 -0
  60. package/src/fields/DataSourceFieldSelect/Index.vue +14 -5
  61. package/src/fields/DisplayConds.vue +4 -1
  62. package/src/fields/EventSelect.vue +58 -32
  63. package/src/fields/StyleSetter/Index.vue +1 -4
  64. package/src/fields/StyleSetter/components/Border.vue +1 -1
  65. package/src/fields/StyleSetter/icons/align-items/Center.vue +19 -0
  66. package/src/fields/StyleSetter/icons/align-items/FlexEnd.vue +19 -0
  67. package/src/fields/StyleSetter/icons/align-items/FlexStart.vue +19 -0
  68. package/src/fields/StyleSetter/icons/align-items/SpaceAround.vue +34 -0
  69. package/src/fields/StyleSetter/icons/align-items/SpaceBetween.vue +34 -0
  70. package/src/fields/StyleSetter/icons/align-items/index copy.ts +5 -0
  71. package/src/fields/StyleSetter/icons/align-items/index.ts +5 -0
  72. package/src/fields/StyleSetter/icons/background-repeat/NoRepeat.vue +20 -4
  73. package/src/fields/StyleSetter/icons/background-repeat/Repeat.vue +10 -28
  74. package/src/fields/StyleSetter/icons/background-repeat/RepeatX.vue +4 -5
  75. package/src/fields/StyleSetter/icons/background-repeat/RepeatY.vue +4 -5
  76. package/src/fields/StyleSetter/icons/flex-direction/Column.vue +4 -3
  77. package/src/fields/StyleSetter/icons/flex-direction/ColumnReverse.vue +4 -3
  78. package/src/fields/StyleSetter/icons/flex-direction/Row.vue +4 -3
  79. package/src/fields/StyleSetter/icons/flex-direction/RowReverse.vue +4 -3
  80. package/src/fields/StyleSetter/icons/justify-content/Center.vue +5 -2
  81. package/src/fields/StyleSetter/icons/justify-content/FlexEnd.vue +15 -2
  82. package/src/fields/StyleSetter/icons/justify-content/FlexStart.vue +15 -2
  83. package/src/fields/StyleSetter/icons/justify-content/SpaceAround.vue +28 -3
  84. package/src/fields/StyleSetter/icons/justify-content/SpaceBetween.vue +28 -2
  85. package/src/fields/StyleSetter/pro/Background.vue +11 -5
  86. package/src/fields/StyleSetter/pro/Font.vue +3 -3
  87. package/src/fields/StyleSetter/pro/Layout.vue +105 -28
  88. package/src/fields/UISelect.vue +1 -1
  89. package/src/icons/DatasourceIcon.vue +7 -0
  90. package/src/layouts/Framework.vue +7 -1
  91. package/src/theme/code-block.scss +37 -0
  92. package/src/theme/common/var.scss +1 -1
  93. package/src/theme/component-list-panel.scss +2 -2
  94. package/src/theme/data-source-field.scss +4 -0
  95. package/src/theme/display-conds.scss +11 -0
  96. package/src/theme/event.scss +55 -1
  97. package/src/theme/history-list-panel.scss +9 -9
  98. package/src/theme/props-panel.scss +2 -1
  99. package/src/theme/style-setter/border.scss +14 -5
  100. package/src/theme/theme.scss +1 -0
  101. package/src/theme/themes/magic-admin/index.scss +125 -0
  102. package/src/utils/const.ts +2 -1
  103. package/src/utils/props.ts +138 -9
  104. package/types/index.d.ts +37 -1
@@ -18,13 +18,15 @@ import keybinding_default from "./services/keybinding.js";
18
18
  import stageOverlay_default from "./services/stageOverlay.js";
19
19
  import { defaultEditorProps } from "./editorProps.js";
20
20
  import { initServiceEvents, initServiceState } from "./initService.js";
21
- import { createBlock, createVNode, defineComponent, mergeDefaults, openBlock, provide, renderSlot, unref, withCtx } from "vue";
21
+ import { M_THEME_KEY } from "@tmagic/design";
22
+ import { computed, createBlock, createVNode, defineComponent, mergeDefaults, openBlock, provide, renderSlot, unref, withCtx } from "vue";
22
23
  import { EventEmitter } from "events";
23
24
  //#region packages/editor/src/Editor.vue?vue&type=script&setup=true&lang.ts
24
25
  var Editor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
25
26
  name: "MEditor",
26
27
  __name: "Editor",
27
28
  props: /* @__PURE__ */ mergeDefaults({
29
+ theme: {},
28
30
  modelValue: {},
29
31
  componentGroupList: {},
30
32
  datasourceList: {},
@@ -141,6 +143,12 @@ var Editor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
141
143
  */
142
144
  provide("historyListExtraTabs", props.historyListExtraTabs);
143
145
  provide("eventBus", new EventEmitter());
146
+ /**
147
+ * 把当前主题以响应式 ref 形式 provide 给后代,供包含 `Teleport` 的组件
148
+ * (如 `TMagicPopover` / `FloatingBox` / `ContentMenu`)在传送目标上挂 `m-theme--<theme>`
149
+ * 类,让主题级 CSS 变量在 portal 节点上也能命中。详见 `@tmagic/design/theme.ts`。
150
+ */
151
+ provide(M_THEME_KEY, computed(() => props.theme ?? ""));
144
152
  const propsPanelMountedHandler = (e) => {
145
153
  emit("props-panel-mounted", e);
146
154
  };
@@ -162,7 +170,8 @@ var Editor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
162
170
  "disabled-page-fragment": __props.disabledPageFragment,
163
171
  "page-bar-sort-options": __props.pageBarSortOptions,
164
172
  "page-filter-function": __props.pageFilterFunction,
165
- "hide-sidebar": __props.hideSidebar
173
+ "hide-sidebar": __props.hideSidebar,
174
+ theme: __props.theme
166
175
  }, {
167
176
  header: withCtx(() => [renderSlot(_ctx.$slots, "header")]),
168
177
  nav: withCtx(() => [renderSlot(_ctx.$slots, "nav", { editorService: unref(editor_default) }, () => [createVNode(NavMenu_default, { data: __props.menu }, null, 8, ["data"])])]),
@@ -243,7 +252,8 @@ var Editor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
243
252
  "disabled-page-fragment",
244
253
  "page-bar-sort-options",
245
254
  "page-filter-function",
246
- "hide-sidebar"
255
+ "hide-sidebar",
256
+ "theme"
247
257
  ]);
248
258
  };
249
259
  }
@@ -1,6 +1,6 @@
1
1
  import ToolButton_default from "./ToolButton.js";
2
- import { useZIndex } from "@tmagic/design";
3
- import { Fragment, Teleport, Transition, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, openBlock, ref, renderList, renderSlot, resolveComponent, useTemplateRef, vShow, withCtx, withDirectives, withModifiers } from "vue";
2
+ import { useThemeClass, useZIndex } from "@tmagic/design";
3
+ import { Fragment, Teleport, Transition, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, openBlock, ref, renderList, renderSlot, resolveComponent, unref, useTemplateRef, vShow, withCtx, withDirectives, withModifiers } from "vue";
4
4
  //#region packages/editor/src/components/ContentMenu.vue?vue&type=script&setup=true&lang.ts
5
5
  var ContentMenu_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
6
6
  name: "MEditorContentMenu",
@@ -29,6 +29,13 @@ var ContentMenu_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
29
29
  const buttonRefs = useTemplateRef("buttons");
30
30
  const subMenuRef = useTemplateRef("subMenu");
31
31
  const visible = ref(false);
32
+ /**
33
+ * 主题修饰类(来自最近的 `<MEditor>` / `<MForm>` 祖先 provide)。
34
+ * - 顶层 `ContentMenu` 渲染在编辑器子树中,加上去是冗余但无害;
35
+ * - 子菜单(递归 `<content-menu :is-sub-menu="true">` 被 `<teleport to="body">` 送到 body)
36
+ * 不在编辑器子树中,必须显式挂上主题类,主题级 CSS 变量才能命中。
37
+ */
38
+ const themeClass = useThemeClass();
32
39
  const subMenuData = ref([]);
33
40
  const zIndex = useZIndex();
34
41
  const curZIndex = ref(0);
@@ -118,8 +125,8 @@ var ContentMenu_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
118
125
  persisted: ""
119
126
  }, {
120
127
  default: withCtx(() => [withDirectives(createElementVNode("div", {
121
- class: "magic-editor-content-menu",
122
128
  ref: "menu",
129
+ class: normalizeClass(["magic-editor-content-menu", unref(themeClass)]),
123
130
  style: normalizeStyle(menuStyle.value),
124
131
  onMouseenter: _cache[0] || (_cache[0] = ($event) => mouseenterHandler()),
125
132
  onContextmenu: _cache[1] || (_cache[1] = withModifiers(() => {}, ["prevent"]))
@@ -150,7 +157,7 @@ var ContentMenu_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
150
157
  "is-sub-menu": true,
151
158
  onHide: hide
152
159
  }, null, 8, ["active", "menu-data"])) : createCommentVNode("v-if", true)]))
153
- ], 36), [[vShow, visible.value]])]),
160
+ ], 38), [[vShow, visible.value]])]),
154
161
  _: 3
155
162
  });
156
163
  };
@@ -1,7 +1,7 @@
1
1
  import { useServices } from "../hooks/use-services.js";
2
2
  import Icon_default from "./Icon.js";
3
- import { TMagicButton, useZIndex } from "@tmagic/design";
4
- import { Teleport, computed, createBlock, createCommentVNode, createElementVNode, createVNode, defineComponent, mergeModels, nextTick, normalizeStyle, onBeforeUnmount, openBlock, provide, ref, renderSlot, toDisplayString, unref, useModel, useTemplateRef, watch, withCtx } from "vue";
3
+ import { TMagicButton, useThemeClass, useZIndex } from "@tmagic/design";
4
+ import { Teleport, computed, createBlock, createCommentVNode, createElementVNode, createVNode, defineComponent, mergeModels, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, openBlock, provide, ref, renderSlot, toDisplayString, unref, useModel, useTemplateRef, watch, withCtx } from "vue";
5
5
  import { Close } from "@element-plus/icons-vue";
6
6
  import VanillaMoveable from "moveable";
7
7
  //#region packages/editor/src/components/FloatingBox.vue?vue&type=script&setup=true&lang.ts
@@ -41,6 +41,11 @@ var FloatingBox_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
41
41
  const props = __props;
42
42
  const targetEl = useTemplateRef("target");
43
43
  const titleEl = useTemplateRef("title");
44
+ /**
45
+ * 主题修饰类(来自最近的 `<MEditor>` / `<MForm>` 祖先 provide)。
46
+ * 挂在 `Teleport` 出去的浮动面板根节点上,让主题级 CSS 变量在 portal 节点上也能命中。
47
+ */
48
+ const themeClass = useThemeClass();
44
49
  const zIndex = useZIndex();
45
50
  const curZIndex = ref(0);
46
51
  const titleHeight = ref(0);
@@ -137,7 +142,7 @@ var FloatingBox_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
137
142
  to: "body"
138
143
  }, [createElementVNode("div", {
139
144
  ref: "target",
140
- class: "m-editor-float-box",
145
+ class: normalizeClass(["m-editor-float-box", unref(themeClass)]),
141
146
  style: normalizeStyle({
142
147
  ...style.value,
143
148
  zIndex: curZIndex.value
@@ -153,7 +158,7 @@ var FloatingBox_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
153
158
  })])], 512), createElementVNode("div", {
154
159
  class: "m-editor-float-box-body",
155
160
  style: normalizeStyle({ height: `${bodyHeight.value}px` })
156
- }, [renderSlot(_ctx.$slots, "body")], 4)], 36)])) : createCommentVNode("v-if", true);
161
+ }, [renderSlot(_ctx.$slots, "body")], 4)], 38)])) : createCommentVNode("v-if", true);
157
162
  };
158
163
  }
159
164
  });
@@ -17,7 +17,10 @@ var Code_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCom
17
17
  },
18
18
  size: {},
19
19
  lastValues: {},
20
- isCompare: { type: Boolean }
20
+ isCompare: { type: Boolean },
21
+ text: {},
22
+ labelWidth: {},
23
+ labelPosition: {}
21
24
  },
22
25
  emits: ["change"],
23
26
  setup(__props, { emit: __emit }) {
@@ -15,7 +15,10 @@ var CodeLink_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defin
15
15
  disabled: { type: Boolean },
16
16
  size: {},
17
17
  lastValues: {},
18
- isCompare: { type: Boolean }
18
+ isCompare: { type: Boolean },
19
+ text: {},
20
+ labelWidth: {},
21
+ labelPosition: {}
19
22
  },
20
23
  emits: ["change"],
21
24
  setup(__props, { emit: __emit }) {
@@ -1,9 +1,10 @@
1
1
  import { useServices } from "../hooks/use-services.js";
2
2
  import { MContainer } from "@tmagic/form";
3
- import { TMagicCard } from "@tmagic/design";
3
+ import { TMagicButton, TMagicCard } from "@tmagic/design";
4
4
  import { HookCodeType, HookType } from "@tmagic/core";
5
- import { computed, createElementBlock, createVNode, defineComponent, normalizeClass, openBlock, unref, watch, withCtx } from "vue";
5
+ import { computed, createElementBlock, createTextVNode, createVNode, defineComponent, normalizeClass, openBlock, toDisplayString, unref, watch, withCtx } from "vue";
6
6
  import { isEmpty } from "lodash-es";
7
+ import { Plus } from "@element-plus/icons-vue";
7
8
  //#region packages/editor/src/fields/CodeSelect.vue?vue&type=script&setup=true&lang.ts
8
9
  var CodeSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
9
10
  name: "MFieldsCodeSelect",
@@ -18,7 +19,10 @@ var CodeSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
18
19
  disabled: { type: Boolean },
19
20
  size: {},
20
21
  lastValues: {},
21
- isCompare: { type: Boolean }
22
+ isCompare: { type: Boolean },
23
+ text: {},
24
+ labelWidth: {},
25
+ labelPosition: {}
22
26
  },
23
27
  emits: ["change"],
24
28
  setup(__props, { emit: __emit }) {
@@ -39,11 +43,21 @@ var CodeSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
39
43
  * 仅当存在历史值时才启用对比,避免 lastValues 缺失时退化为「全部新增」的空对比。
40
44
  */
41
45
  const isCompareMode = computed(() => Boolean(props.isCompare && props.lastValues));
46
+ const newHandler = () => {
47
+ const defaultCode = {
48
+ codeType: HookCodeType.CODE,
49
+ codeId: ""
50
+ };
51
+ const name = props.config.name || "";
52
+ emit("change", defaultCode, { modifyKey: `hookData.${(props.model[name]?.hookData || []).length}` });
53
+ };
42
54
  const codeConfig = computed(() => ({
43
55
  type: "group-list",
44
56
  name: "hookData",
45
57
  enableToggleMode: false,
46
58
  expandAll: true,
59
+ flat: true,
60
+ addable: () => false,
47
61
  title: (mForm, { model, index }) => {
48
62
  if (model.codeType === HookCodeType.DATA_SOURCE_METHOD) {
49
63
  if (Array.isArray(model.codeId)) {
@@ -56,45 +70,42 @@ var CodeSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
56
70
  if (codeContent) return codeContent.name;
57
71
  return model.codeId || index;
58
72
  },
59
- items: [{
60
- type: "row",
61
- items: [
62
- {
63
- type: "select",
64
- name: "codeType",
65
- span: 6,
66
- options: [{
67
- value: HookCodeType.CODE,
68
- text: "代码块"
69
- }, {
70
- value: HookCodeType.DATA_SOURCE_METHOD,
71
- text: "数据源方法"
72
- }],
73
- defaultValue: "code",
74
- onChange: (_mForm, v, { setModel }) => {
75
- if (v === HookCodeType.DATA_SOURCE_METHOD) setModel("codeId", []);
76
- else setModel("codeId", "");
77
- return v;
78
- }
79
- },
80
- {
81
- type: "code-select-col",
82
- name: "codeId",
83
- span: 18,
84
- labelWidth: 0,
85
- display: (_mForm, { model }) => model.codeType !== HookCodeType.DATA_SOURCE_METHOD,
86
- notEditable: () => !codeBlockService.getEditStatus()
87
- },
88
- {
89
- type: "data-source-method-select",
90
- name: "codeId",
91
- span: 18,
92
- labelWidth: 0,
93
- display: (_mForm, { model }) => model.codeType === HookCodeType.DATA_SOURCE_METHOD,
94
- notEditable: () => !dataSourceService.get("editable")
73
+ titlePrefix: props.config.name === void 0 ? void 0 : String(props.config.name),
74
+ items: [
75
+ {
76
+ text: "代码类型",
77
+ type: "select",
78
+ name: "codeType",
79
+ labelPosition: "right",
80
+ options: [{
81
+ value: HookCodeType.CODE,
82
+ text: "代码块"
83
+ }, {
84
+ value: HookCodeType.DATA_SOURCE_METHOD,
85
+ text: "数据源方法"
86
+ }],
87
+ defaultValue: "code",
88
+ onChange: (_mForm, v, { setModel }) => {
89
+ if (v === HookCodeType.DATA_SOURCE_METHOD) setModel("codeId", []);
90
+ else setModel("codeId", "");
91
+ return v;
95
92
  }
96
- ]
97
- }]
93
+ },
94
+ {
95
+ type: "code-select-col",
96
+ name: "codeId",
97
+ text: "代码块",
98
+ display: (_mForm, { model }) => model.codeType !== HookCodeType.DATA_SOURCE_METHOD,
99
+ notEditable: () => !codeBlockService.getEditStatus()
100
+ },
101
+ {
102
+ type: "data-source-method-select",
103
+ name: "codeId",
104
+ text: "数据源字段",
105
+ display: (_mForm, { model }) => model.codeType === HookCodeType.DATA_SOURCE_METHOD,
106
+ notEditable: () => !dataSourceService.get("editable")
107
+ }
108
+ ]
98
109
  }));
99
110
  watch(() => props.model[props.name], (value) => {
100
111
  if (isEmpty(value)) props.model[props.name] = {
@@ -104,10 +115,11 @@ var CodeSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
104
115
  }, { immediate: true });
105
116
  const changeHandler = (v, eventData) => emit("change", v, eventData);
106
117
  return (_ctx, _cache) => {
107
- return openBlock(), createElementBlock("div", { class: normalizeClass(["m-fields-code-select", __props.config.className]) }, [createVNode(unref(TMagicCard), null, {
118
+ return openBlock(), createElementBlock("div", { class: normalizeClass(["m-fields-code-select", __props.config.className]) }, [createVNode(unref(TMagicCard), { flat: __props.config.flat }, {
108
119
  default: withCtx(() => [createVNode(unref(MContainer), {
109
120
  config: codeConfig.value,
110
121
  size: __props.size,
122
+ class: "code-select-content",
111
123
  prop: __props.prop,
112
124
  disabled: __props.disabled,
113
125
  "is-compare": isCompareMode.value,
@@ -122,9 +134,22 @@ var CodeSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
122
134
  "is-compare",
123
135
  "last-values",
124
136
  "model"
137
+ ]), createVNode(unref(TMagicButton), {
138
+ class: "create-button fullWidth",
139
+ icon: unref(Plus),
140
+ size: __props.size,
141
+ disabled: __props.disabled,
142
+ onClick: _cache[0] || (_cache[0] = ($event) => newHandler())
143
+ }, {
144
+ default: withCtx(() => [createTextVNode("添加" + toDisplayString(__props.config.text), 1)]),
145
+ _: 1
146
+ }, 8, [
147
+ "icon",
148
+ "size",
149
+ "disabled"
125
150
  ])]),
126
151
  _: 1
127
- })], 2);
152
+ }, 8, ["flat"])], 2);
128
153
  };
129
154
  }
130
155
  });
@@ -26,7 +26,10 @@ var CodeSelectCol_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
26
26
  },
27
27
  size: {},
28
28
  lastValues: {},
29
- isCompare: { type: Boolean }
29
+ isCompare: { type: Boolean },
30
+ text: {},
31
+ labelWidth: {},
32
+ labelPosition: {}
30
33
  },
31
34
  emits: ["change"],
32
35
  setup(__props, { emit: __emit }) {
@@ -72,6 +75,7 @@ var CodeSelectCol_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
72
75
  type: "select",
73
76
  name: props.name,
74
77
  disabled: props.disabled,
78
+ text: props.config.text,
75
79
  options: () => {
76
80
  if (codeDsl.value) return map(codeDsl.value, (value, key) => ({
77
81
  text: `${value.name}(${key})`,
@@ -17,7 +17,10 @@ var CondOpSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ d
17
17
  disabled: { type: Boolean },
18
18
  size: {},
19
19
  lastValues: {},
20
- isCompare: { type: Boolean }
20
+ isCompare: { type: Boolean },
21
+ text: {},
22
+ labelWidth: {},
23
+ labelPosition: {}
21
24
  },
22
25
  emits: ["change"],
23
26
  setup(__props, { emit: __emit }) {
@@ -1,13 +1,12 @@
1
1
  import { useServices } from "../../hooks/use-services.js";
2
2
  import Icon_default from "../../components/Icon.js";
3
+ import DatasourceIcon_default from "../../icons/DatasourceIcon.js";
3
4
  import FieldSelect_default from "./FieldSelect.js";
4
5
  import { getFormField } from "@tmagic/form";
5
6
  import { TMagicButton, TMagicTooltip, tMagicMessage } from "@tmagic/design";
6
7
  import { DATA_SOURCE_FIELDS_SELECT_VALUE_PREFIX, removeDataSourceFieldPrefix } from "@tmagic/utils";
7
- import { computed, createBlock, createCommentVNode, createElementBlock, createVNode, defineComponent, inject, openBlock, ref, resolveComponent, resolveDynamicComponent, unref, watch, withCtx } from "vue";
8
- import { Coin } from "@element-plus/icons-vue";
8
+ import { computed, createBlock, createCommentVNode, createElementBlock, createVNode, defineComponent, inject, normalizeClass, openBlock, ref, resolveComponent, resolveDynamicComponent, unref, watch, withCtx } from "vue";
9
9
  //#region packages/editor/src/fields/DataSourceFieldSelect/Index.vue?vue&type=script&setup=true&lang.ts
10
- var _hoisted_1 = { class: "m-fields-data-source-field-select" };
11
10
  var Index_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
12
11
  name: "MFieldsDataSourceFieldSelect",
13
12
  __name: "Index",
@@ -24,13 +23,17 @@ var Index_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
24
23
  },
25
24
  size: {},
26
25
  lastValues: {},
27
- isCompare: { type: Boolean }
26
+ isCompare: { type: Boolean },
27
+ text: {},
28
+ labelWidth: {},
29
+ labelPosition: {}
28
30
  },
29
31
  emits: ["change"],
30
32
  setup(__props, { emit: __emit }) {
31
33
  const emit = __emit;
32
34
  const props = __props;
33
35
  const showDataSourceFieldSelect = ref(false);
36
+ const isSelectValid = computed(() => !disabledDataSource.value && (showDataSourceFieldSelect.value || !props.config.fieldConfig));
34
37
  watch(() => props.model[props.name], (value) => {
35
38
  if (Array.isArray(value) && typeof value[0] === "string" && value[0].startsWith(DATA_SOURCE_FIELDS_SELECT_VALUE_PREFIX)) showDataSourceFieldSelect.value = true;
36
39
  else showDataSourceFieldSelect.value = false;
@@ -100,7 +103,7 @@ var Index_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
100
103
  showDataSourceFieldSelect.value = !showDataSourceFieldSelect.value;
101
104
  };
102
105
  return (_ctx, _cache) => {
103
- return openBlock(), createElementBlock("div", _hoisted_1, [!disabledDataSource.value && (showDataSourceFieldSelect.value || !__props.config.fieldConfig) ? (openBlock(), createBlock(FieldSelect_default, {
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, {
104
107
  key: 0,
105
108
  "model-value": __props.model[__props.name],
106
109
  disabled: __props.disabled,
@@ -151,7 +154,7 @@ var Index_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
151
154
  disabled: __props.disabled,
152
155
  onClick: onToggleDataSourceFieldSelectHandler
153
156
  }, {
154
- default: withCtx(() => [createVNode(Icon_default, { icon: unref(Coin) }, null, 8, ["icon"])]),
157
+ default: withCtx(() => [createVNode(Icon_default, { icon: DatasourceIcon_default })]),
155
158
  _: 1
156
159
  }, 8, [
157
160
  "type",
@@ -159,7 +162,7 @@ var Index_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
159
162
  "disabled"
160
163
  ])]),
161
164
  _: 1
162
- }, 8, ["disabled"])) : createCommentVNode("v-if", true)]);
165
+ }, 8, ["disabled"])) : createCommentVNode("v-if", true)], 2);
163
166
  };
164
167
  }
165
168
  });
@@ -30,7 +30,10 @@ var DataSourceFields_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
30
30
  },
31
31
  size: {},
32
32
  lastValues: {},
33
- isCompare: { type: Boolean }
33
+ isCompare: { type: Boolean },
34
+ text: {},
35
+ labelWidth: {},
36
+ labelPosition: {}
34
37
  }, {
35
38
  "width": { default: 670 },
36
39
  "widthModifiers": {},
@@ -31,7 +31,10 @@ var DataSourceInput_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
31
31
  },
32
32
  size: {},
33
33
  lastValues: {},
34
- isCompare: { type: Boolean }
34
+ isCompare: { type: Boolean },
35
+ text: {},
36
+ labelWidth: {},
37
+ labelPosition: {}
35
38
  },
36
39
  emits: ["change"],
37
40
  setup(__props, { emit: __emit }) {
@@ -27,7 +27,10 @@ var DataSourceMethodSelect_vue_vue_type_script_setup_true_name_true_lang_default
27
27
  },
28
28
  size: {},
29
29
  lastValues: {},
30
- isCompare: { type: Boolean }
30
+ isCompare: { type: Boolean },
31
+ text: {},
32
+ labelWidth: {},
33
+ labelPosition: {}
31
34
  },
32
35
  emits: ["change"],
33
36
  setup(__props, { emit: __emit }) {
@@ -25,7 +25,10 @@ var DataSourceMethods_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
25
25
  },
26
26
  size: {},
27
27
  lastValues: {},
28
- isCompare: { type: Boolean }
28
+ isCompare: { type: Boolean },
29
+ text: {},
30
+ labelWidth: {},
31
+ labelPosition: {}
29
32
  },
30
33
  emits: ["change"],
31
34
  setup(__props, { emit: __emit }) {
@@ -30,7 +30,10 @@ var DataSourceMocks_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
30
30
  },
31
31
  size: {},
32
32
  lastValues: {},
33
- isCompare: { type: Boolean }
33
+ isCompare: { type: Boolean },
34
+ text: {},
35
+ labelWidth: {},
36
+ labelPosition: {}
34
37
  }, {
35
38
  "width": { default: 670 },
36
39
  "widthModifiers": {},
@@ -23,7 +23,10 @@ var DataSourceSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
23
23
  },
24
24
  size: {},
25
25
  lastValues: {},
26
- isCompare: { type: Boolean }
26
+ isCompare: { type: Boolean },
27
+ text: {},
28
+ labelWidth: {},
29
+ labelPosition: {}
27
30
  },
28
31
  emits: ["change"],
29
32
  setup(__props, { emit: __emit }) {
@@ -19,7 +19,10 @@ var DisplayConds_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ d
19
19
  },
20
20
  size: {},
21
21
  lastValues: {},
22
- isCompare: { type: Boolean }
22
+ isCompare: { type: Boolean },
23
+ text: {},
24
+ labelWidth: {},
25
+ labelPosition: {}
23
26
  },
24
27
  emits: ["change"],
25
28
  setup(__props, { emit: __emit }) {
@@ -43,11 +46,14 @@ var DisplayConds_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ d
43
46
  titlePrefix: props.config.titlePrefix,
44
47
  expandAll: true,
45
48
  enableToggleMode: false,
49
+ flat: props.config.flat,
46
50
  items: [{
47
51
  type: "table",
48
52
  name: "cond",
49
- operateColWidth: 80,
53
+ operateColWidth: props.config.operateColWidth,
50
54
  enableToggleMode: false,
55
+ fixed: props.config.fixed,
56
+ flat: props.config.flat,
51
57
  items: [
52
58
  parentFields.value.length ? {
53
59
  type: "cascader",