@tmagic/editor 1.8.0-beta.13 → 1.8.0-beta.15
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 +15 -3
- package/dist/es/components/ContentMenu.vue_vue_type_script_setup_true_lang.js +31 -8
- package/dist/es/components/FloatingBox.vue_vue_type_script_setup_true_lang.js +7 -2
- package/dist/es/fields/Code.vue_vue_type_script_setup_true_lang.js +15 -4
- package/dist/es/fields/CodeLink.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/fields/CodeSelect.vue_vue_type_script_setup_true_lang.js +80 -55
- package/dist/es/fields/CodeSelectCol.vue_vue_type_script_setup_true_lang.js +5 -1
- package/dist/es/fields/CondOpSelect.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/fields/DataSourceFieldSelect/Index.vue_vue_type_script_setup_true_lang.js +10 -7
- package/dist/es/fields/DataSourceFields.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/fields/DataSourceInput.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/fields/DataSourceMethodSelect.vue_vue_type_script_setup_true_name_true_lang.js +4 -1
- 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 +4 -1
- package/dist/es/fields/DataSourceSelect.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/fields/DisplayConds.vue_vue_type_script_setup_true_lang.js +8 -2
- package/dist/es/fields/EventSelect.vue_vue_type_script_setup_true_lang.js +99 -64
- package/dist/es/fields/KeyValue.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/fields/PageFragmentSelect.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/fields/StyleSetter/Index.vue_vue_type_script_setup_true_lang.js +5 -4
- package/dist/es/fields/StyleSetter/components/BackgroundPosition.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/fields/StyleSetter/components/Border.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/fields/StyleSetter/icons/align-items/Center.js +31 -0
- package/dist/es/fields/StyleSetter/icons/align-items/FlexEnd.js +31 -0
- package/dist/es/fields/StyleSetter/icons/align-items/FlexStart.js +31 -0
- package/dist/es/fields/StyleSetter/icons/align-items/SpaceAround.js +50 -0
- package/dist/es/fields/StyleSetter/icons/align-items/SpaceBetween.js +50 -0
- package/dist/es/fields/StyleSetter/icons/background-repeat/NoRepeat.js +6 -6
- package/dist/es/fields/StyleSetter/icons/background-repeat/Repeat.js +5 -2
- package/dist/es/fields/StyleSetter/icons/background-repeat/RepeatX.js +28 -5
- package/dist/es/fields/StyleSetter/icons/background-repeat/RepeatY.js +31 -5
- package/dist/es/fields/StyleSetter/icons/flex-direction/Column.js +10 -2
- package/dist/es/fields/StyleSetter/icons/flex-direction/ColumnReverse.js +10 -2
- package/dist/es/fields/StyleSetter/icons/flex-direction/Row.js +10 -2
- package/dist/es/fields/StyleSetter/icons/flex-direction/RowReverse.js +10 -2
- package/dist/es/fields/StyleSetter/icons/justify-content/Center.js +16 -2
- package/dist/es/fields/StyleSetter/icons/justify-content/FlexEnd.js +18 -2
- package/dist/es/fields/StyleSetter/icons/justify-content/FlexStart.js +18 -2
- package/dist/es/fields/StyleSetter/icons/justify-content/SpaceAround.js +36 -2
- package/dist/es/fields/StyleSetter/icons/justify-content/SpaceBetween.js +32 -2
- package/dist/es/fields/StyleSetter/pro/Background.vue_vue_type_script_setup_true_lang.js +7 -6
- package/dist/es/fields/StyleSetter/pro/Font.vue_vue_type_script_setup_true_lang.js +6 -3
- package/dist/es/fields/StyleSetter/pro/Layout.vue_vue_type_script_setup_true_lang.js +47 -25
- package/dist/es/fields/UISelect.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/icons/DatasourceIcon.js +17 -0
- package/dist/es/index.js +2 -2
- package/dist/es/layouts/Framework.vue_vue_type_script_setup_true_lang.js +14 -10
- package/dist/es/layouts/props-panel/PropsPanel.vue_vue_type_script_setup_true_lang.js +13 -4
- package/dist/es/layouts/sidebar/Sidebar.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/es/plugin.js +2 -1
- package/dist/es/services/editor.js +86 -24
- package/dist/es/services/history.js +16 -0
- package/dist/es/services/ui.js +5 -3
- package/dist/es/style.css +307 -40
- package/dist/es/utils/config.js +4 -1
- package/dist/es/utils/const.js +2 -2
- package/dist/es/utils/data-source/index.js +4 -2
- package/dist/es/utils/props.js +43 -29
- package/dist/es/utils/type-match-rules.js +12 -5
- package/dist/style.css +307 -40
- package/dist/themes/magic-admin.css +3004 -0
- package/dist/tmagic-editor.umd.cjs +1161 -476
- package/package.json +7 -7
- package/src/Editor.vue +22 -1
- package/src/components/ContentMenu.vue +44 -8
- package/src/components/FloatingBox.vue +8 -2
- package/src/editorProps.ts +4 -0
- package/src/fields/Code.vue +10 -2
- package/src/fields/CodeSelect.vue +54 -43
- package/src/fields/CodeSelectCol.vue +1 -0
- package/src/fields/DataSourceFieldSelect/Index.vue +14 -5
- package/src/fields/DisplayConds.vue +4 -1
- package/src/fields/EventSelect.vue +56 -32
- package/src/fields/StyleSetter/Index.vue +1 -4
- package/src/fields/StyleSetter/components/Border.vue +1 -1
- package/src/fields/StyleSetter/icons/align-items/Center.vue +19 -0
- package/src/fields/StyleSetter/icons/align-items/FlexEnd.vue +19 -0
- package/src/fields/StyleSetter/icons/align-items/FlexStart.vue +19 -0
- package/src/fields/StyleSetter/icons/align-items/SpaceAround.vue +34 -0
- package/src/fields/StyleSetter/icons/align-items/SpaceBetween.vue +34 -0
- package/src/fields/StyleSetter/icons/align-items/index.ts +5 -0
- package/src/fields/StyleSetter/icons/background-repeat/NoRepeat.vue +20 -4
- package/src/fields/StyleSetter/icons/background-repeat/Repeat.vue +10 -28
- package/src/fields/StyleSetter/icons/background-repeat/RepeatX.vue +4 -5
- package/src/fields/StyleSetter/icons/background-repeat/RepeatY.vue +4 -5
- package/src/fields/StyleSetter/icons/flex-direction/Column.vue +4 -3
- package/src/fields/StyleSetter/icons/flex-direction/ColumnReverse.vue +4 -3
- package/src/fields/StyleSetter/icons/flex-direction/Row.vue +4 -3
- package/src/fields/StyleSetter/icons/flex-direction/RowReverse.vue +4 -3
- package/src/fields/StyleSetter/icons/justify-content/Center.vue +5 -2
- package/src/fields/StyleSetter/icons/justify-content/FlexEnd.vue +15 -2
- package/src/fields/StyleSetter/icons/justify-content/FlexStart.vue +15 -2
- package/src/fields/StyleSetter/icons/justify-content/SpaceAround.vue +28 -3
- package/src/fields/StyleSetter/icons/justify-content/SpaceBetween.vue +28 -2
- package/src/fields/StyleSetter/pro/Background.vue +7 -2
- package/src/fields/StyleSetter/pro/Font.vue +3 -3
- package/src/fields/StyleSetter/pro/Layout.vue +98 -28
- package/src/icons/DatasourceIcon.vue +7 -0
- package/src/index.ts +3 -0
- package/src/layouts/Framework.vue +7 -1
- package/src/layouts/props-panel/PropsPanel.vue +38 -12
- package/src/layouts/sidebar/Sidebar.vue +3 -3
- package/src/plugin.ts +3 -2
- package/src/services/editor.ts +76 -11
- package/src/services/history.ts +22 -1
- package/src/services/ui.ts +20 -5
- package/src/theme/code-block.scss +37 -0
- package/src/theme/common/var.scss +1 -1
- package/src/theme/component-list-panel.scss +2 -2
- package/src/theme/data-source-field.scss +4 -0
- package/src/theme/display-conds.scss +11 -0
- package/src/theme/event.scss +58 -4
- package/src/theme/framework.scss +4 -1
- package/src/theme/history-list-panel.scss +9 -9
- package/src/theme/nav-menu.scss +5 -1
- package/src/theme/props-panel.scss +2 -1
- package/src/theme/style-setter/border.scss +14 -5
- package/src/theme/theme.scss +1 -0
- package/src/theme/themes/magic-admin/index.scss +214 -0
- package/src/theme/ui-select.scss +1 -1
- package/src/type.ts +33 -6
- package/src/utils/config.ts +9 -1
- package/src/utils/const.ts +3 -2
- package/src/utils/data-source/index.ts +3 -3
- package/src/utils/props.ts +22 -9
- package/src/utils/type-match-rules.ts +11 -5
- package/types/index.d.ts +114 -35
package/dist/es/utils/props.js
CHANGED
|
@@ -145,6 +145,7 @@ var advancedTabConfig = {
|
|
|
145
145
|
name: NODE_DISABLE_CODE_BLOCK_KEY,
|
|
146
146
|
text: "禁用代码块",
|
|
147
147
|
type: "switch",
|
|
148
|
+
labelPosition: "left",
|
|
148
149
|
defaultValue: false,
|
|
149
150
|
extra: "开启后,配置的代码块将不会被执行"
|
|
150
151
|
},
|
|
@@ -152,15 +153,16 @@ var advancedTabConfig = {
|
|
|
152
153
|
name: NODE_DISABLE_DATA_SOURCE_KEY,
|
|
153
154
|
text: "禁用数据源",
|
|
154
155
|
type: "switch",
|
|
156
|
+
labelPosition: "left",
|
|
155
157
|
defaultValue: false,
|
|
156
158
|
extra: "开启后,组件内配置的数据源相关配置将不会被编译,显隐条件将失效"
|
|
157
159
|
},
|
|
158
160
|
{
|
|
159
161
|
name: "created",
|
|
160
|
-
text: "
|
|
162
|
+
text: "Created",
|
|
161
163
|
labelPosition: "top",
|
|
162
164
|
type: "code-select",
|
|
163
|
-
|
|
165
|
+
titleExtra: "组件初始化时执行",
|
|
164
166
|
rules: [{
|
|
165
167
|
typeMatch: true,
|
|
166
168
|
trigger: "change"
|
|
@@ -171,10 +173,10 @@ var advancedTabConfig = {
|
|
|
171
173
|
},
|
|
172
174
|
{
|
|
173
175
|
name: "mounted",
|
|
174
|
-
text: "
|
|
176
|
+
text: "Mounted",
|
|
175
177
|
labelPosition: "top",
|
|
176
178
|
type: "code-select",
|
|
177
|
-
|
|
179
|
+
titleExtra: "组件挂载到dom时执行",
|
|
178
180
|
rules: [{
|
|
179
181
|
typeMatch: true,
|
|
180
182
|
trigger: "change"
|
|
@@ -185,8 +187,8 @@ var advancedTabConfig = {
|
|
|
185
187
|
},
|
|
186
188
|
{
|
|
187
189
|
name: "display",
|
|
188
|
-
text: "
|
|
189
|
-
|
|
190
|
+
text: "Display",
|
|
191
|
+
titleExtra: "控制组件是否渲染,关系的代码块返回值为false时不渲染",
|
|
190
192
|
labelPosition: "top",
|
|
191
193
|
type: "code-select",
|
|
192
194
|
rules: [{
|
|
@@ -202,26 +204,36 @@ var advancedTabConfig = {
|
|
|
202
204
|
var displayTabConfig = {
|
|
203
205
|
title: "显示条件",
|
|
204
206
|
display: (_state, { model }) => model.type !== "page",
|
|
205
|
-
items: [
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
207
|
+
items: [
|
|
208
|
+
{
|
|
209
|
+
name: NODE_CONDS_RESULT_KEY,
|
|
210
|
+
type: "select",
|
|
211
|
+
text: "条件成立时",
|
|
212
|
+
defaultValue: false,
|
|
213
|
+
options: [{
|
|
214
|
+
text: "显示",
|
|
215
|
+
value: false
|
|
216
|
+
}, {
|
|
217
|
+
text: "隐藏",
|
|
218
|
+
value: true
|
|
219
|
+
}],
|
|
220
|
+
extra: (_state, { model }) => `条件成立时${model[NODE_CONDS_RESULT_KEY] ? "隐藏" : "显示"},不成立时${model[NODE_CONDS_RESULT_KEY] ? "显示" : "隐藏"};<br />同一条件组内的所有条件配置同时成立时表示该条件组成立,任意一个条件组成立时表示条件成立(条件组内为且的关系,条件组间为或的关系);<br />条件为空时表示成立;`
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
text: "条件组配置",
|
|
224
|
+
static: true,
|
|
225
|
+
className: "display-conds-title"
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
type: "display-conds",
|
|
229
|
+
name: NODE_CONDS_KEY,
|
|
230
|
+
titlePrefix: "条件组",
|
|
231
|
+
fixed: "right",
|
|
232
|
+
operateColWidth: 112,
|
|
233
|
+
defaultValue: [],
|
|
234
|
+
rules: [{ typeMatch: true }]
|
|
235
|
+
}
|
|
236
|
+
]
|
|
225
237
|
};
|
|
226
238
|
/**
|
|
227
239
|
* 统一为组件属性表单加上事件、高级、样式配置
|
|
@@ -239,10 +251,11 @@ var fillConfig = (config = [], { labelWidth = "80px", disabledDataSource = false
|
|
|
239
251
|
name: "id",
|
|
240
252
|
text: "ID",
|
|
241
253
|
type: "text",
|
|
242
|
-
|
|
254
|
+
static: true,
|
|
243
255
|
append: {
|
|
244
|
-
type: "
|
|
245
|
-
text: "
|
|
256
|
+
type: "icon",
|
|
257
|
+
text: "https://vip.image.video.qpic.cn/vupload/20260615/36cf7e1781493669935.svg",
|
|
258
|
+
extra: "复制",
|
|
246
259
|
handler: (vm, { model }) => {
|
|
247
260
|
navigator.clipboard.writeText(`${model.id}`).then(() => {
|
|
248
261
|
tMagicMessage.success("已复制");
|
|
@@ -261,6 +274,7 @@ var fillConfig = (config = [], { labelWidth = "80px", disabledDataSource = false
|
|
|
261
274
|
const tabConfig = {
|
|
262
275
|
type: "tab",
|
|
263
276
|
labelWidth,
|
|
277
|
+
className: "magic-right-panel-tabs-top",
|
|
264
278
|
items: [
|
|
265
279
|
{
|
|
266
280
|
title: "属性",
|
|
@@ -3,6 +3,7 @@ import editor_default from "../services/editor.js";
|
|
|
3
3
|
import { getFieldType, resolveFieldByPath } from "./data-source/index.js";
|
|
4
4
|
import codeBlock_default from "../services/codeBlock.js";
|
|
5
5
|
import dataSource_default from "../services/dataSource.js";
|
|
6
|
+
import { validateTypeMatch } from "@tmagic/form";
|
|
6
7
|
import { appendValidateSuggestion } from "@tmagic/design";
|
|
7
8
|
import { DATA_SOURCE_FIELDS_SELECT_VALUE_PREFIX, DATA_SOURCE_SET_DATA_METHOD_NAME, dataSourceTemplateRegExp, getKeysArray, removeDataSourceFieldPrefix } from "@tmagic/utils";
|
|
8
9
|
import { NodeType } from "@tmagic/core";
|
|
@@ -181,10 +182,10 @@ var validateDataSourceFieldPath = (path, options = {}) => {
|
|
|
181
182
|
fieldNames = path.slice(1);
|
|
182
183
|
}
|
|
183
184
|
const ds = findDataSource(`${dsId}`);
|
|
184
|
-
if (!ds) return defaultMessage(options.message,
|
|
185
|
+
if (!ds) return defaultMessage(options.message, `数据源(${dsId})不存在`, dataSourceIdSuggestion());
|
|
185
186
|
if (!fieldNames.length) return;
|
|
186
|
-
const { field, ok } = resolveFieldByPath(ds.fields, fieldNames);
|
|
187
|
-
if (!ok) return defaultMessage(options.message,
|
|
187
|
+
const { field, ok, fields, failedName } = resolveFieldByPath(ds.fields, fieldNames);
|
|
188
|
+
if (!ok) return defaultMessage(options.message, `数据源字段(${failedName})不存在`, listSuggestion(fields.map((item) => item.name)));
|
|
188
189
|
const allowedTypes = options.dataSourceFieldType || ["any"];
|
|
189
190
|
if (!allowedTypes.length || allowedTypes.includes("any")) return;
|
|
190
191
|
const leafType = field?.type || "any";
|
|
@@ -267,9 +268,15 @@ var isDataSourceFieldPathValue = (value, config) => {
|
|
|
267
268
|
if (config.value === "key") return true;
|
|
268
269
|
return `${value[0]}`.startsWith(DATA_SOURCE_FIELDS_SELECT_VALUE_PREFIX);
|
|
269
270
|
};
|
|
270
|
-
var validateDataSourceFieldSelect = (value, { message, props }) => {
|
|
271
|
+
var validateDataSourceFieldSelect = (value, { mForm, message, props }) => {
|
|
271
272
|
const config = props.config || {};
|
|
272
|
-
if (config.fieldConfig && !isDataSourceFieldPathValue(value, config)) return
|
|
273
|
+
if (config.fieldConfig && !isDataSourceFieldPathValue(value, config)) return validateTypeMatch(value, mForm, {
|
|
274
|
+
...props,
|
|
275
|
+
config: {
|
|
276
|
+
name: config.name,
|
|
277
|
+
...config.fieldConfig
|
|
278
|
+
}
|
|
279
|
+
}, message);
|
|
273
280
|
if (!Array.isArray(value) || value.some((item) => typeof item !== "string")) return defaultMessage(message, `${value}类型应为字符串数组`, dataSourceFieldPathSuggestion());
|
|
274
281
|
return validateDataSourceFieldPath(value, {
|
|
275
282
|
dataSourceId: config.dataSourceId,
|