@tmagic/editor 1.7.14-beta.3 → 1.8.0-beta.1
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/fields/DataSourceFieldSelect/Index.vue_vue_type_script_setup_true_lang.js +11 -2
- package/dist/es/fields/StyleSetter/Index.vue_vue_type_script_setup_true_lang.js +8 -2
- package/dist/es/fields/StyleSetter/components/Border.vue_vue_type_script_setup_true_lang.js +10 -2
- package/dist/es/fields/StyleSetter/components/Box.vue_vue_type_script_setup_true_lang.js +3 -1
- package/dist/es/fields/StyleSetter/pro/Background.vue_vue_type_script_setup_true_lang.js +10 -2
- package/dist/es/fields/StyleSetter/pro/Border.vue_vue_type_script_setup_true_lang.js +16 -3
- package/dist/es/fields/StyleSetter/pro/Font.vue_vue_type_script_setup_true_lang.js +10 -2
- package/dist/es/fields/StyleSetter/pro/Layout.vue_vue_type_script_setup_true_lang.js +14 -2
- package/dist/es/fields/StyleSetter/pro/Position.vue_vue_type_script_setup_true_lang.js +10 -2
- package/dist/es/fields/StyleSetter/pro/Transform.vue_vue_type_script_setup_true_lang.js +10 -2
- package/dist/es/layouts/props-panel/FormPanel.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/sidebar/layer/use-node-status.js +37 -3
- package/dist/es/services/editor.js +58 -27
- package/dist/es/style.css +15 -14
- package/dist/es/utils/editor.js +1 -1
- package/dist/style.css +15 -14
- package/dist/tmagic-editor.umd.cjs +199 -52
- package/package.json +7 -7
- package/src/fields/DataSourceFieldSelect/Index.vue +8 -1
- package/src/fields/StyleSetter/Index.vue +6 -0
- package/src/fields/StyleSetter/components/Border.vue +15 -1
- package/src/fields/StyleSetter/components/Box.vue +2 -0
- package/src/fields/StyleSetter/pro/Background.vue +15 -1
- package/src/fields/StyleSetter/pro/Border.vue +24 -2
- package/src/fields/StyleSetter/pro/Font.vue +15 -1
- package/src/fields/StyleSetter/pro/Layout.vue +17 -1
- package/src/fields/StyleSetter/pro/Position.vue +15 -1
- package/src/fields/StyleSetter/pro/Transform.vue +15 -1
- package/src/layouts/props-panel/FormPanel.vue +1 -1
- package/src/layouts/sidebar/layer/use-node-status.ts +55 -6
- package/src/services/editor.ts +74 -43
- package/src/theme/props-panel.scss +20 -20
- package/src/type.ts +10 -0
- package/src/utils/editor.ts +4 -1
- package/types/index.d.ts +31 -22
|
@@ -5397,7 +5397,7 @@
|
|
|
5397
5397
|
var serializeConfig = (config) => (0, serialize_javascript.default)(config, {
|
|
5398
5398
|
space: 2,
|
|
5399
5399
|
unsafe: true
|
|
5400
|
-
}).replace(/"(\w+)":\s/g, "$1: ");
|
|
5400
|
+
}).replace(/(^|\n)(\s*)"(\w+)":\s/g, "$1$2$3: ");
|
|
5401
5401
|
var moveItemsInContainer = (sourceIndices, parent, targetIndex) => {
|
|
5402
5402
|
sourceIndices.sort((a, b) => a - b);
|
|
5403
5403
|
for (let i = sourceIndices.length - 1; i >= 0; i--) {
|
|
@@ -5902,6 +5902,19 @@
|
|
|
5902
5902
|
return parent;
|
|
5903
5903
|
}
|
|
5904
5904
|
/**
|
|
5905
|
+
* 判断给定节点是否位于非当前页面(即选中该节点将会引起当前页面切换)
|
|
5906
|
+
* @param node 节点
|
|
5907
|
+
* @returns true 表示该节点位于非当前页面
|
|
5908
|
+
*/
|
|
5909
|
+
isOnDifferentPage(node) {
|
|
5910
|
+
const currentPageId = this.get("page")?.id;
|
|
5911
|
+
if (currentPageId === void 0 || currentPageId === null) return false;
|
|
5912
|
+
if ((0, _tmagic_utils.isPage)(node) || (0, _tmagic_utils.isPageFragment)(node)) return `${node.id}` !== `${currentPageId}`;
|
|
5913
|
+
const nodePage = this.getNodeInfo(node.id, false).page;
|
|
5914
|
+
if (!nodePage) return false;
|
|
5915
|
+
return `${nodePage.id}` !== `${currentPageId}`;
|
|
5916
|
+
}
|
|
5917
|
+
/**
|
|
5905
5918
|
* 只有容器拥有布局
|
|
5906
5919
|
*/
|
|
5907
5920
|
async getLayout(parent, node) {
|
|
@@ -6022,11 +6035,12 @@
|
|
|
6022
6035
|
* @param parent 要添加到的容器组件节点配置,如果不设置,默认为当前选中的组件的父节点
|
|
6023
6036
|
* @param options 可选配置
|
|
6024
6037
|
* @param options.doNotSelect 添加后是否不更新当前选中节点(默认 false,添加后会选中新增的节点)
|
|
6038
|
+
* @param options.doNotSwitchPage 添加后是否不切换当前页面(默认 false;新增页面 / 跨页新增时为 true 会跳过会引发页面切换的选中操作)
|
|
6025
6039
|
* @returns 添加后的节点
|
|
6026
6040
|
*/
|
|
6027
6041
|
async add(addNode, parent, options) {
|
|
6028
6042
|
const safeParentNode = safeParent(parent);
|
|
6029
|
-
const { doNotSelect = false } = safeOptions(options);
|
|
6043
|
+
const { doNotSelect = false, doNotSwitchPage = false } = safeOptions(options);
|
|
6030
6044
|
this.captureSelectionBeforeOp();
|
|
6031
6045
|
const stage = this.get("stage");
|
|
6032
6046
|
const addNodes = [];
|
|
@@ -6043,16 +6057,19 @@
|
|
|
6043
6057
|
return this.doAdd(node, parentNode);
|
|
6044
6058
|
}));
|
|
6045
6059
|
if (newNodes.length > 1) {
|
|
6046
|
-
|
|
6060
|
+
const wouldSwitchPage = newNodes.some((n) => this.isOnDifferentPage(n));
|
|
6061
|
+
if (!doNotSelect && !(doNotSwitchPage && wouldSwitchPage)) {
|
|
6047
6062
|
const newNodeIds = newNodes.map((node) => node.id);
|
|
6048
6063
|
stage?.multiSelect(newNodeIds);
|
|
6049
6064
|
await this.multiSelect(newNodeIds);
|
|
6050
6065
|
}
|
|
6051
6066
|
} else {
|
|
6052
|
-
|
|
6067
|
+
const wouldSwitchPage = this.isOnDifferentPage(newNodes[0]);
|
|
6068
|
+
const skipSelect = doNotSelect || doNotSwitchPage && wouldSwitchPage;
|
|
6069
|
+
if (!skipSelect) await this.select(newNodes[0]);
|
|
6053
6070
|
if ((0, _tmagic_utils.isPage)(newNodes[0])) this.state.pageLength += 1;
|
|
6054
6071
|
else if ((0, _tmagic_utils.isPageFragment)(newNodes[0])) this.state.pageFragmentLength += 1;
|
|
6055
|
-
else if (!
|
|
6072
|
+
else if (!skipSelect) stage?.select(newNodes[0].id);
|
|
6056
6073
|
}
|
|
6057
6074
|
if (!((0, _tmagic_utils.isPage)(newNodes[0]) || (0, _tmagic_utils.isPageFragment)(newNodes[0]))) {
|
|
6058
6075
|
const pageForOp = this.getNodeInfo(newNodes[0].id, false).page;
|
|
@@ -6072,7 +6089,7 @@
|
|
|
6072
6089
|
return Array.isArray(addNode) ? newNodes : newNodes[0];
|
|
6073
6090
|
}
|
|
6074
6091
|
async doRemove(node, options) {
|
|
6075
|
-
const { doNotSelect = false } = safeOptions(options);
|
|
6092
|
+
const { doNotSelect = false, doNotSwitchPage = false } = safeOptions(options);
|
|
6076
6093
|
const root = this.get("root");
|
|
6077
6094
|
if (!root) throw new Error("root不能为空");
|
|
6078
6095
|
const { parent, node: curNode } = this.getNodeInfo(node.id, false);
|
|
@@ -6086,18 +6103,16 @@
|
|
|
6086
6103
|
parentId: parent.id,
|
|
6087
6104
|
root: cloneDeep(root)
|
|
6088
6105
|
});
|
|
6089
|
-
|
|
6090
|
-
|
|
6091
|
-
|
|
6092
|
-
|
|
6093
|
-
|
|
6094
|
-
|
|
6095
|
-
|
|
6096
|
-
|
|
6097
|
-
|
|
6098
|
-
|
|
6099
|
-
if (currentPage && `${currentPage.id}` === `${node.id}`) this.set("page", null);
|
|
6100
|
-
}
|
|
6106
|
+
const selectedNodes = this.get("nodes");
|
|
6107
|
+
const removedSelectedIndex = selectedNodes.findIndex((n) => `${n.id}` === `${node.id}`);
|
|
6108
|
+
if (removedSelectedIndex !== -1) {
|
|
6109
|
+
const nextSelected = [...selectedNodes];
|
|
6110
|
+
nextSelected.splice(removedSelectedIndex, 1);
|
|
6111
|
+
this.set("nodes", nextSelected);
|
|
6112
|
+
}
|
|
6113
|
+
if ((0, _tmagic_utils.isPage)(node) || (0, _tmagic_utils.isPageFragment)(node)) {
|
|
6114
|
+
const currentPage = this.get("page");
|
|
6115
|
+
if (currentPage && `${currentPage.id}` === `${node.id}`) this.set("page", null);
|
|
6101
6116
|
}
|
|
6102
6117
|
const selectDefault = async (pages) => {
|
|
6103
6118
|
if (pages[0]) {
|
|
@@ -6111,10 +6126,10 @@
|
|
|
6111
6126
|
const rootItems = root.items || [];
|
|
6112
6127
|
if ((0, _tmagic_utils.isPage)(node)) {
|
|
6113
6128
|
this.state.pageLength -= 1;
|
|
6114
|
-
if (!doNotSelect) await selectDefault(rootItems);
|
|
6129
|
+
if (!doNotSelect && !doNotSwitchPage) await selectDefault(rootItems);
|
|
6115
6130
|
} else if ((0, _tmagic_utils.isPageFragment)(node)) {
|
|
6116
6131
|
this.state.pageFragmentLength -= 1;
|
|
6117
|
-
if (!doNotSelect) await selectDefault(rootItems);
|
|
6132
|
+
if (!doNotSelect && !doNotSwitchPage) await selectDefault(rootItems);
|
|
6118
6133
|
} else {
|
|
6119
6134
|
if (!doNotSelect) {
|
|
6120
6135
|
await this.select(parent);
|
|
@@ -6132,9 +6147,10 @@
|
|
|
6132
6147
|
* @param {Object} node 要删除的节点或节点集合
|
|
6133
6148
|
* @param options 可选配置
|
|
6134
6149
|
* @param options.doNotSelect 删除后是否不更新当前选中节点(默认 false,删除后会选中父节点或首个页面)
|
|
6150
|
+
* @param options.doNotSwitchPage 删除后是否不切换当前页面(默认 false;删除页面 / 页面片段时为 true 会跳过自动切换到首个剩余页面)
|
|
6135
6151
|
*/
|
|
6136
6152
|
async remove(nodeOrNodeList, options) {
|
|
6137
|
-
const { doNotSelect = false } = safeOptions(options);
|
|
6153
|
+
const { doNotSelect = false, doNotSwitchPage = false } = safeOptions(options);
|
|
6138
6154
|
this.captureSelectionBeforeOp();
|
|
6139
6155
|
const nodes = Array.isArray(nodeOrNodeList) ? nodeOrNodeList : [nodeOrNodeList];
|
|
6140
6156
|
const removedItems = [];
|
|
@@ -6154,7 +6170,10 @@
|
|
|
6154
6170
|
});
|
|
6155
6171
|
}
|
|
6156
6172
|
}
|
|
6157
|
-
await Promise.all(nodes.map((node) => this.doRemove(node, {
|
|
6173
|
+
await Promise.all(nodes.map((node) => this.doRemove(node, {
|
|
6174
|
+
doNotSelect,
|
|
6175
|
+
doNotSwitchPage
|
|
6176
|
+
})));
|
|
6158
6177
|
if (removedItems.length > 0 && pageForOp) this.pushOpHistory("remove", { removedItems }, pageForOp);
|
|
6159
6178
|
this.emit("remove", nodes);
|
|
6160
6179
|
}
|
|
@@ -6191,7 +6210,10 @@
|
|
|
6191
6210
|
selectedNodes.splice(targetIndex, 1, newConfig);
|
|
6192
6211
|
this.set("nodes", [...selectedNodes]);
|
|
6193
6212
|
}
|
|
6194
|
-
if ((0, _tmagic_utils.isPage)(newConfig) || (0, _tmagic_utils.isPageFragment)(newConfig))
|
|
6213
|
+
if ((0, _tmagic_utils.isPage)(newConfig) || (0, _tmagic_utils.isPageFragment)(newConfig)) {
|
|
6214
|
+
const currentPage = this.get("page");
|
|
6215
|
+
if (currentPage && `${currentPage.id}` === `${newConfig.id}`) this.set("page", newConfig);
|
|
6216
|
+
}
|
|
6195
6217
|
this.addModifiedNodeId(newConfig.id);
|
|
6196
6218
|
return {
|
|
6197
6219
|
oldNode: node,
|
|
@@ -6232,6 +6254,7 @@
|
|
|
6232
6254
|
* @param id2 组件ID
|
|
6233
6255
|
* @param options 可选配置
|
|
6234
6256
|
* @param options.doNotSelect 排序后是否不更新当前选中节点(默认 false)
|
|
6257
|
+
* @param options.doNotSwitchPage 排序后是否不切换当前页面(排序只发生在同一父节点内,方法内为空操作;保留以与其它 DSL 操作 API 一致)
|
|
6235
6258
|
* @returns void
|
|
6236
6259
|
*/
|
|
6237
6260
|
async sort(id1, id2, options) {
|
|
@@ -6279,10 +6302,11 @@
|
|
|
6279
6302
|
* @param collectorOptions 可选的依赖收集器配置
|
|
6280
6303
|
* @param options 可选配置
|
|
6281
6304
|
* @param options.doNotSelect 粘贴后是否不更新当前选中节点(默认 false)
|
|
6305
|
+
* @param options.doNotSwitchPage 粘贴后是否不切换当前页面(默认 false;跨页粘贴时为 true 会跳过页面切换)
|
|
6282
6306
|
* @returns 添加后的组件节点配置
|
|
6283
6307
|
*/
|
|
6284
6308
|
async paste(position = {}, collectorOptions, options) {
|
|
6285
|
-
const { doNotSelect = false } = safeOptions(options);
|
|
6309
|
+
const { doNotSelect = false, doNotSwitchPage = false } = safeOptions(options);
|
|
6286
6310
|
const config = storage_default.getItem(COPY_STORAGE_KEY);
|
|
6287
6311
|
if (!Array.isArray(config)) return;
|
|
6288
6312
|
const node = this.get("node");
|
|
@@ -6293,7 +6317,10 @@
|
|
|
6293
6317
|
}
|
|
6294
6318
|
const pasteConfigs = await this.doPaste(config, position);
|
|
6295
6319
|
if (collectorOptions && typeof collectorOptions.isTarget === "function") props_default.replaceRelateId(config, pasteConfigs, collectorOptions);
|
|
6296
|
-
return this.add(pasteConfigs, parent, {
|
|
6320
|
+
return this.add(pasteConfigs, parent, {
|
|
6321
|
+
doNotSelect,
|
|
6322
|
+
doNotSwitchPage
|
|
6323
|
+
});
|
|
6297
6324
|
}
|
|
6298
6325
|
async doPaste(config, position = {}) {
|
|
6299
6326
|
props_default.clearRelateId();
|
|
@@ -6316,6 +6343,7 @@
|
|
|
6316
6343
|
* @param config 组件节点配置
|
|
6317
6344
|
* @param options 可选配置
|
|
6318
6345
|
* @param options.doNotSelect 居中后是否不更新当前选中节点(默认 false)
|
|
6346
|
+
* @param options.doNotSwitchPage 居中后是否不切换当前页面(居中只更新节点 style,方法内为空操作;保留以与其它 DSL 操作 API 一致)
|
|
6319
6347
|
* @returns 当前组件节点配置
|
|
6320
6348
|
*/
|
|
6321
6349
|
async alignCenter(config, options) {
|
|
@@ -6371,9 +6399,10 @@
|
|
|
6371
6399
|
* @param targetId 容器ID
|
|
6372
6400
|
* @param options 可选配置
|
|
6373
6401
|
* @param options.doNotSelect 移动后是否不更新当前选中节点(默认 false)
|
|
6402
|
+
* @param options.doNotSwitchPage 移动后是否不切换当前页面(默认 false;目标容器位于其它页面时为 true 会跳过自动选中以避免页面切换)
|
|
6374
6403
|
*/
|
|
6375
6404
|
async moveToContainer(config, targetId, options) {
|
|
6376
|
-
const { doNotSelect = false } = safeOptions(options);
|
|
6405
|
+
const { doNotSelect = false, doNotSwitchPage = false } = safeOptions(options);
|
|
6377
6406
|
this.captureSelectionBeforeOp();
|
|
6378
6407
|
const root = this.get("root");
|
|
6379
6408
|
const { node, parent, page: pageForOp } = this.getNodeInfo(config.id, false);
|
|
@@ -6395,14 +6424,16 @@
|
|
|
6395
6424
|
});
|
|
6396
6425
|
newConfig.style = getInitPositionStyle(newConfig.style, layout);
|
|
6397
6426
|
target.items.push(newConfig);
|
|
6398
|
-
|
|
6427
|
+
const targetWouldSwitchPage = this.isOnDifferentPage(target);
|
|
6428
|
+
const skipSelect = doNotSelect || doNotSwitchPage && targetWouldSwitchPage;
|
|
6429
|
+
if (!skipSelect) await stage.select(targetId);
|
|
6399
6430
|
const targetParent = this.getParentById(target.id);
|
|
6400
6431
|
await stage.update({
|
|
6401
6432
|
config: cloneDeep(target),
|
|
6402
6433
|
parentId: targetParent?.id,
|
|
6403
6434
|
root: cloneDeep(root)
|
|
6404
6435
|
});
|
|
6405
|
-
if (!
|
|
6436
|
+
if (!skipSelect) {
|
|
6406
6437
|
await this.select(newConfig);
|
|
6407
6438
|
stage.select(newConfig.id);
|
|
6408
6439
|
}
|
|
@@ -9173,7 +9204,7 @@
|
|
|
9173
9204
|
(0, vue.createVNode)((0, vue.unref)(_tmagic_design.TMagicScrollbar), null, {
|
|
9174
9205
|
default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(_tmagic_form.MForm), {
|
|
9175
9206
|
ref: "configForm",
|
|
9176
|
-
class: (0, vue.normalizeClass)(propsPanelSize.value),
|
|
9207
|
+
class: (0, vue.normalizeClass)([propsPanelSize.value, "m-editor-props-form-panel-form"]),
|
|
9177
9208
|
"popper-class": `m-editor-props-panel-popper ${propsPanelSize.value}`,
|
|
9178
9209
|
"label-width": __props.labelWidth,
|
|
9179
9210
|
"label-position": __props.labelPosition,
|
|
@@ -11728,10 +11759,43 @@
|
|
|
11728
11759
|
const nodeStatusMaps = (0, vue.ref)(/* @__PURE__ */ new Map());
|
|
11729
11760
|
/** 当前页面的节点状态 */
|
|
11730
11761
|
const nodeStatusMap = (0, vue.computed)(() => page.value ? nodeStatusMaps.value.get(page.value.id) : /* @__PURE__ */ new Map());
|
|
11731
|
-
(0, vue.watch)(
|
|
11732
|
-
if (!
|
|
11733
|
-
nodeStatusMaps.value.set(
|
|
11762
|
+
(0, vue.watch)(page, (newPage) => {
|
|
11763
|
+
if (!newPage?.id) return;
|
|
11764
|
+
nodeStatusMaps.value.set(newPage.id, createPageNodeStatus(newPage, nodeStatusMaps.value.get(newPage.id)));
|
|
11734
11765
|
}, { immediate: true });
|
|
11766
|
+
/**
|
|
11767
|
+
* root 整体被替换时(外部 modelValue 变化、历史版本恢复、套件编辑模式进入/退出等):
|
|
11768
|
+
* - 仅 watch page 引用还不够,因为 root-change 同步触发时 page 还是旧引用,
|
|
11769
|
+
* 等 initService 的异步 IIFE 跑完 editorService.select(...) 后 page 才会
|
|
11770
|
+
* 被替换为新 dsl 中的 page;此时上面的 page watch 才会触发重建。
|
|
11771
|
+
* - 但若直接同步清空 nodeStatusMaps,会让 nodeStatusMap (computed) 立刻变
|
|
11772
|
+
* undefined。上层 LayerPanel 用 `v-if="page && nodeStatusMap"` 渲染组件树,
|
|
11773
|
+
* 会瞬间销毁整个面板;若紧接着的异步 select 链路(套件退出等场景)发生
|
|
11774
|
+
* 竞态、page 引用未变 / 解析失败,watch(page) 不触发重建,组件树就再也回
|
|
11775
|
+
* 不来。
|
|
11776
|
+
* - 此外「污染」问题本质来自 createPageNodeStatus 用旧 status 作为新节点
|
|
11777
|
+
* initial 值:只要新 root 的 page 是新引用,watch(page) 会触发重建,重建
|
|
11778
|
+
* 时基于新 page.items 生成的 map 只会包含新节点 id;旧节点 id 即便残留在
|
|
11779
|
+
* initialLayerNodeStatus 中也不会被写入新 map。真正的风险只有「同一 page
|
|
11780
|
+
* id 下,新旧 dsl 都存在同一节点 id 但其实是不同节点」这种极端情况——这
|
|
11781
|
+
* 在常规业务中不会发生(id 是 uuid)。
|
|
11782
|
+
*
|
|
11783
|
+
* 综合:root-change 时仅清理「在新 root 中已不存在的 page id」对应缓存,
|
|
11784
|
+
* 保留仍然有效的 page status 不动;既避免 v-if 闪断,也不会保留无关 page 的
|
|
11785
|
+
* 死缓存。同 page id 的重建交给下方 watch(page) 触发。
|
|
11786
|
+
*/
|
|
11787
|
+
const rootChangeHandler = (value) => {
|
|
11788
|
+
if (!value) {
|
|
11789
|
+
nodeStatusMaps.value = /* @__PURE__ */ new Map();
|
|
11790
|
+
return;
|
|
11791
|
+
}
|
|
11792
|
+
const validPageIds = /* @__PURE__ */ new Set();
|
|
11793
|
+
(value.items || []).forEach((p) => {
|
|
11794
|
+
if (p?.id !== void 0) validPageIds.add(p.id);
|
|
11795
|
+
});
|
|
11796
|
+
for (const cachedPageId of Array.from(nodeStatusMaps.value.keys())) if (!validPageIds.has(cachedPageId)) nodeStatusMaps.value.delete(cachedPageId);
|
|
11797
|
+
};
|
|
11798
|
+
editorService.on("root-change", rootChangeHandler);
|
|
11735
11799
|
(0, vue.watch)(nodes, (nodes) => {
|
|
11736
11800
|
if (!nodeStatusMap.value) return;
|
|
11737
11801
|
for (const [id, status] of nodeStatusMap.value.entries()) {
|
|
@@ -11764,6 +11828,7 @@
|
|
|
11764
11828
|
};
|
|
11765
11829
|
editorService.on("remove", removeHandler);
|
|
11766
11830
|
(0, vue.onBeforeUnmount)(() => {
|
|
11831
|
+
editorService.off("root-change", rootChangeHandler);
|
|
11767
11832
|
editorService.off("remove", removeHandler);
|
|
11768
11833
|
editorService.off("add", addHandler);
|
|
11769
11834
|
});
|
|
@@ -16754,6 +16819,10 @@
|
|
|
16754
16819
|
emit("change", [dsId], eventData);
|
|
16755
16820
|
}
|
|
16756
16821
|
};
|
|
16822
|
+
const onToggleDataSourceFieldSelectHandler = () => {
|
|
16823
|
+
if (props.disabled || mForm?.isCompare) return;
|
|
16824
|
+
showDataSourceFieldSelect.value = !showDataSourceFieldSelect.value;
|
|
16825
|
+
};
|
|
16757
16826
|
return (_ctx, _cache) => {
|
|
16758
16827
|
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_1$29, [!disabledDataSource.value && (showDataSourceFieldSelect.value || !__props.config.fieldConfig) ? ((0, vue.openBlock)(), (0, vue.createBlock)(FieldSelect_default, {
|
|
16759
16828
|
key: 0,
|
|
@@ -16803,11 +16872,16 @@
|
|
|
16803
16872
|
default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(_tmagic_design.TMagicButton), {
|
|
16804
16873
|
type: showDataSourceFieldSelect.value ? "primary" : "default",
|
|
16805
16874
|
size: __props.size,
|
|
16806
|
-
|
|
16875
|
+
disabled: __props.disabled || (0, vue.unref)(mForm)?.isCompare,
|
|
16876
|
+
onClick: onToggleDataSourceFieldSelectHandler
|
|
16807
16877
|
}, {
|
|
16808
16878
|
default: (0, vue.withCtx)(() => [(0, vue.createVNode)(Icon_default, { icon: (0, vue.unref)(_element_plus_icons_vue.Coin) }, null, 8, ["icon"])]),
|
|
16809
16879
|
_: 1
|
|
16810
|
-
}, 8, [
|
|
16880
|
+
}, 8, [
|
|
16881
|
+
"type",
|
|
16882
|
+
"size",
|
|
16883
|
+
"disabled"
|
|
16884
|
+
])]),
|
|
16811
16885
|
_: 1
|
|
16812
16886
|
}, 8, ["disabled"])) : (0, vue.createCommentVNode)("v-if", true)]);
|
|
16813
16887
|
};
|
|
@@ -17794,10 +17868,12 @@
|
|
|
17794
17868
|
__name: "Background",
|
|
17795
17869
|
props: {
|
|
17796
17870
|
values: {},
|
|
17871
|
+
lastValues: {},
|
|
17872
|
+
isCompare: { type: Boolean },
|
|
17797
17873
|
disabled: { type: Boolean },
|
|
17798
17874
|
size: {}
|
|
17799
17875
|
},
|
|
17800
|
-
emits: ["change"],
|
|
17876
|
+
emits: ["change", "addDiffCount"],
|
|
17801
17877
|
setup(__props, { emit: __emit }) {
|
|
17802
17878
|
const emit = __emit;
|
|
17803
17879
|
const config = (0, _tmagic_form.defineFormItem)({ items: [
|
|
@@ -17879,16 +17955,22 @@
|
|
|
17879
17955
|
const change = (value, eventData) => {
|
|
17880
17956
|
emit("change", value, eventData);
|
|
17881
17957
|
};
|
|
17958
|
+
const onAddDiffCount = () => emit("addDiffCount");
|
|
17882
17959
|
return (_ctx, _cache) => {
|
|
17883
17960
|
return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(_tmagic_form.MContainer), {
|
|
17884
17961
|
config: (0, vue.unref)(config),
|
|
17885
17962
|
model: __props.values,
|
|
17963
|
+
"last-values": __props.lastValues,
|
|
17964
|
+
"is-compare": __props.isCompare,
|
|
17886
17965
|
size: __props.size,
|
|
17887
17966
|
disabled: __props.disabled,
|
|
17888
|
-
onChange: change
|
|
17967
|
+
onChange: change,
|
|
17968
|
+
onAddDiffCount
|
|
17889
17969
|
}, null, 8, [
|
|
17890
17970
|
"config",
|
|
17891
17971
|
"model",
|
|
17972
|
+
"last-values",
|
|
17973
|
+
"is-compare",
|
|
17892
17974
|
"size",
|
|
17893
17975
|
"disabled"
|
|
17894
17976
|
]);
|
|
@@ -17937,10 +18019,12 @@
|
|
|
17937
18019
|
__name: "Font",
|
|
17938
18020
|
props: {
|
|
17939
18021
|
values: {},
|
|
18022
|
+
lastValues: {},
|
|
18023
|
+
isCompare: { type: Boolean },
|
|
17940
18024
|
disabled: { type: Boolean },
|
|
17941
18025
|
size: {}
|
|
17942
18026
|
},
|
|
17943
|
-
emits: ["change"],
|
|
18027
|
+
emits: ["change", "addDiffCount"],
|
|
17944
18028
|
setup(__props, { emit: __emit }) {
|
|
17945
18029
|
const emit = __emit;
|
|
17946
18030
|
const config = (0, _tmagic_form.defineFormItem)({ items: [
|
|
@@ -18008,16 +18092,22 @@
|
|
|
18008
18092
|
const change = (value, eventData) => {
|
|
18009
18093
|
emit("change", value, eventData);
|
|
18010
18094
|
};
|
|
18095
|
+
const onAddDiffCount = () => emit("addDiffCount");
|
|
18011
18096
|
return (_ctx, _cache) => {
|
|
18012
18097
|
return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(_tmagic_form.MContainer), {
|
|
18013
18098
|
config: (0, vue.unref)(config),
|
|
18014
18099
|
model: __props.values,
|
|
18100
|
+
"last-values": __props.lastValues,
|
|
18101
|
+
"is-compare": __props.isCompare,
|
|
18015
18102
|
size: __props.size,
|
|
18016
18103
|
disabled: __props.disabled,
|
|
18017
|
-
onChange: change
|
|
18104
|
+
onChange: change,
|
|
18105
|
+
onAddDiffCount
|
|
18018
18106
|
}, null, 8, [
|
|
18019
18107
|
"config",
|
|
18020
18108
|
"model",
|
|
18109
|
+
"last-values",
|
|
18110
|
+
"is-compare",
|
|
18021
18111
|
"size",
|
|
18022
18112
|
"disabled"
|
|
18023
18113
|
]);
|
|
@@ -18046,7 +18136,9 @@
|
|
|
18046
18136
|
props: {
|
|
18047
18137
|
disabled: { type: Boolean },
|
|
18048
18138
|
size: {},
|
|
18049
|
-
model: {}
|
|
18139
|
+
model: {},
|
|
18140
|
+
lastValues: {},
|
|
18141
|
+
isCompare: { type: Boolean }
|
|
18050
18142
|
},
|
|
18051
18143
|
emits: ["change"],
|
|
18052
18144
|
setup(__props, { emit: __emit }) {
|
|
@@ -18269,10 +18361,12 @@
|
|
|
18269
18361
|
__name: "Layout",
|
|
18270
18362
|
props: {
|
|
18271
18363
|
values: {},
|
|
18364
|
+
lastValues: {},
|
|
18365
|
+
isCompare: { type: Boolean },
|
|
18272
18366
|
disabled: { type: Boolean },
|
|
18273
18367
|
size: {}
|
|
18274
18368
|
},
|
|
18275
|
-
emits: ["change"],
|
|
18369
|
+
emits: ["change", "addDiffCount"],
|
|
18276
18370
|
setup(__props, { emit: __emit }) {
|
|
18277
18371
|
const emit = __emit;
|
|
18278
18372
|
const config = (0, _tmagic_form.defineFormItem)({ items: [
|
|
@@ -18508,25 +18602,35 @@
|
|
|
18508
18602
|
const change = (value, eventData) => {
|
|
18509
18603
|
emit("change", value, eventData);
|
|
18510
18604
|
};
|
|
18605
|
+
const onAddDiffCount = () => emit("addDiffCount");
|
|
18511
18606
|
return (_ctx, _cache) => {
|
|
18512
18607
|
return (0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, null, [(0, vue.createVNode)((0, vue.unref)(_tmagic_form.MContainer), {
|
|
18513
18608
|
config: (0, vue.unref)(config),
|
|
18514
18609
|
model: __props.values,
|
|
18610
|
+
"last-values": __props.lastValues,
|
|
18611
|
+
"is-compare": __props.isCompare,
|
|
18515
18612
|
size: __props.size,
|
|
18516
18613
|
disabled: __props.disabled,
|
|
18517
|
-
onChange: change
|
|
18614
|
+
onChange: change,
|
|
18615
|
+
onAddDiffCount
|
|
18518
18616
|
}, null, 8, [
|
|
18519
18617
|
"config",
|
|
18520
18618
|
"model",
|
|
18619
|
+
"last-values",
|
|
18620
|
+
"is-compare",
|
|
18521
18621
|
"size",
|
|
18522
18622
|
"disabled"
|
|
18523
18623
|
]), (0, vue.withDirectives)((0, vue.createVNode)(Box_default, {
|
|
18524
18624
|
model: __props.values,
|
|
18625
|
+
"last-values": __props.lastValues,
|
|
18626
|
+
"is-compare": __props.isCompare,
|
|
18525
18627
|
size: __props.size,
|
|
18526
18628
|
disabled: __props.disabled,
|
|
18527
18629
|
onChange: change
|
|
18528
18630
|
}, null, 8, [
|
|
18529
18631
|
"model",
|
|
18632
|
+
"last-values",
|
|
18633
|
+
"is-compare",
|
|
18530
18634
|
"size",
|
|
18531
18635
|
"disabled"
|
|
18532
18636
|
]), [[vue.vShow, !["fixed", "absolute"].includes(__props.values.position)]])], 64);
|
|
@@ -18542,10 +18646,12 @@
|
|
|
18542
18646
|
__name: "Position",
|
|
18543
18647
|
props: {
|
|
18544
18648
|
values: {},
|
|
18649
|
+
lastValues: {},
|
|
18650
|
+
isCompare: { type: Boolean },
|
|
18545
18651
|
disabled: { type: Boolean },
|
|
18546
18652
|
size: {}
|
|
18547
18653
|
},
|
|
18548
|
-
emits: ["change"],
|
|
18654
|
+
emits: ["change", "addDiffCount"],
|
|
18549
18655
|
setup(__props, { emit: __emit }) {
|
|
18550
18656
|
const props = __props;
|
|
18551
18657
|
const emit = __emit;
|
|
@@ -18613,16 +18719,22 @@
|
|
|
18613
18719
|
const change = (value, eventData) => {
|
|
18614
18720
|
emit("change", value, eventData);
|
|
18615
18721
|
};
|
|
18722
|
+
const onAddDiffCount = () => emit("addDiffCount");
|
|
18616
18723
|
return (_ctx, _cache) => {
|
|
18617
18724
|
return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(_tmagic_form.MContainer), {
|
|
18618
18725
|
config: (0, vue.unref)(config),
|
|
18619
18726
|
model: __props.values,
|
|
18727
|
+
"last-values": __props.lastValues,
|
|
18728
|
+
"is-compare": __props.isCompare,
|
|
18620
18729
|
size: __props.size,
|
|
18621
18730
|
disabled: __props.disabled,
|
|
18622
|
-
onChange: change
|
|
18731
|
+
onChange: change,
|
|
18732
|
+
onAddDiffCount
|
|
18623
18733
|
}, null, 8, [
|
|
18624
18734
|
"config",
|
|
18625
18735
|
"model",
|
|
18736
|
+
"last-values",
|
|
18737
|
+
"is-compare",
|
|
18626
18738
|
"size",
|
|
18627
18739
|
"disabled"
|
|
18628
18740
|
]);
|
|
@@ -18644,10 +18756,12 @@
|
|
|
18644
18756
|
__name: "Border",
|
|
18645
18757
|
props: {
|
|
18646
18758
|
model: {},
|
|
18759
|
+
lastValues: {},
|
|
18760
|
+
isCompare: { type: Boolean },
|
|
18647
18761
|
disabled: { type: Boolean },
|
|
18648
18762
|
size: {}
|
|
18649
18763
|
},
|
|
18650
|
-
emits: ["change"],
|
|
18764
|
+
emits: ["change", "addDiffCount"],
|
|
18651
18765
|
setup(__props, { emit: __emit }) {
|
|
18652
18766
|
const direction = (0, vue.ref)("");
|
|
18653
18767
|
const config = (0, vue.computed)(() => (0, _tmagic_form.defineFormItem)({ items: [
|
|
@@ -18690,6 +18804,7 @@
|
|
|
18690
18804
|
emit("change", record.value, { modifyKey: record.propPath });
|
|
18691
18805
|
});
|
|
18692
18806
|
};
|
|
18807
|
+
const onAddDiffCount = () => emit("addDiffCount");
|
|
18693
18808
|
return (_ctx, _cache) => {
|
|
18694
18809
|
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_1$1, [(0, vue.createElementVNode)("div", _hoisted_2, [
|
|
18695
18810
|
(0, vue.createElementVNode)("div", _hoisted_3, [(0, vue.createElementVNode)("div", {
|
|
@@ -18717,12 +18832,17 @@
|
|
|
18717
18832
|
]), (0, vue.createElementVNode)("div", _hoisted_6, [(0, vue.createVNode)((0, vue.unref)(_tmagic_form.MContainer), {
|
|
18718
18833
|
config: config.value,
|
|
18719
18834
|
model: __props.model,
|
|
18835
|
+
"last-values": __props.lastValues,
|
|
18836
|
+
"is-compare": __props.isCompare,
|
|
18720
18837
|
size: __props.size,
|
|
18721
18838
|
disabled: __props.disabled,
|
|
18722
|
-
onChange: change
|
|
18839
|
+
onChange: change,
|
|
18840
|
+
onAddDiffCount
|
|
18723
18841
|
}, null, 8, [
|
|
18724
18842
|
"config",
|
|
18725
18843
|
"model",
|
|
18844
|
+
"last-values",
|
|
18845
|
+
"is-compare",
|
|
18726
18846
|
"size",
|
|
18727
18847
|
"disabled"
|
|
18728
18848
|
])])]);
|
|
@@ -18738,10 +18858,12 @@
|
|
|
18738
18858
|
__name: "Border",
|
|
18739
18859
|
props: {
|
|
18740
18860
|
values: {},
|
|
18861
|
+
lastValues: {},
|
|
18862
|
+
isCompare: { type: Boolean },
|
|
18741
18863
|
disabled: { type: Boolean },
|
|
18742
18864
|
size: {}
|
|
18743
18865
|
},
|
|
18744
|
-
emits: ["change"],
|
|
18866
|
+
emits: ["change", "addDiffCount"],
|
|
18745
18867
|
setup(__props, { emit: __emit }) {
|
|
18746
18868
|
const emit = __emit;
|
|
18747
18869
|
const config = (0, _tmagic_form.defineFormItem)({ items: [{
|
|
@@ -18754,25 +18876,36 @@
|
|
|
18754
18876
|
const change = (value, eventData) => {
|
|
18755
18877
|
emit("change", value, eventData);
|
|
18756
18878
|
};
|
|
18879
|
+
const onAddDiffCount = () => emit("addDiffCount");
|
|
18757
18880
|
return (_ctx, _cache) => {
|
|
18758
18881
|
return (0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, null, [(0, vue.createVNode)((0, vue.unref)(_tmagic_form.MContainer), {
|
|
18759
18882
|
config: (0, vue.unref)(config),
|
|
18760
18883
|
model: __props.values,
|
|
18884
|
+
"last-values": __props.lastValues,
|
|
18885
|
+
"is-compare": __props.isCompare,
|
|
18761
18886
|
size: __props.size,
|
|
18762
18887
|
disabled: __props.disabled,
|
|
18763
|
-
onChange: change
|
|
18888
|
+
onChange: change,
|
|
18889
|
+
onAddDiffCount
|
|
18764
18890
|
}, null, 8, [
|
|
18765
18891
|
"config",
|
|
18766
18892
|
"model",
|
|
18893
|
+
"last-values",
|
|
18894
|
+
"is-compare",
|
|
18767
18895
|
"size",
|
|
18768
18896
|
"disabled"
|
|
18769
18897
|
]), (0, vue.createVNode)(Border_default$1, {
|
|
18770
18898
|
model: __props.values,
|
|
18899
|
+
"last-values": __props.lastValues,
|
|
18900
|
+
"is-compare": __props.isCompare,
|
|
18771
18901
|
size: __props.size,
|
|
18772
18902
|
disabled: __props.disabled,
|
|
18773
|
-
onChange: change
|
|
18903
|
+
onChange: change,
|
|
18904
|
+
onAddDiffCount
|
|
18774
18905
|
}, null, 8, [
|
|
18775
18906
|
"model",
|
|
18907
|
+
"last-values",
|
|
18908
|
+
"is-compare",
|
|
18776
18909
|
"size",
|
|
18777
18910
|
"disabled"
|
|
18778
18911
|
])], 64);
|
|
@@ -18788,10 +18921,12 @@
|
|
|
18788
18921
|
__name: "Transform",
|
|
18789
18922
|
props: {
|
|
18790
18923
|
values: {},
|
|
18924
|
+
lastValues: {},
|
|
18925
|
+
isCompare: { type: Boolean },
|
|
18791
18926
|
disabled: { type: Boolean },
|
|
18792
18927
|
size: {}
|
|
18793
18928
|
},
|
|
18794
|
-
emits: ["change"],
|
|
18929
|
+
emits: ["change", "addDiffCount"],
|
|
18795
18930
|
setup(__props, { emit: __emit }) {
|
|
18796
18931
|
const emit = __emit;
|
|
18797
18932
|
const config = (0, _tmagic_form.defineFormItem)({ items: [{
|
|
@@ -18817,16 +18952,22 @@
|
|
|
18817
18952
|
const change = (value, eventData) => {
|
|
18818
18953
|
emit("change", value, eventData);
|
|
18819
18954
|
};
|
|
18955
|
+
const onAddDiffCount = () => emit("addDiffCount");
|
|
18820
18956
|
return (_ctx, _cache) => {
|
|
18821
18957
|
return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(_tmagic_form.MContainer), {
|
|
18822
18958
|
config: (0, vue.unref)(config),
|
|
18823
18959
|
model: __props.values,
|
|
18960
|
+
"last-values": __props.lastValues,
|
|
18961
|
+
"is-compare": __props.isCompare,
|
|
18824
18962
|
size: __props.size,
|
|
18825
18963
|
disabled: __props.disabled,
|
|
18826
|
-
onChange: change
|
|
18964
|
+
onChange: change,
|
|
18965
|
+
onAddDiffCount
|
|
18827
18966
|
}, null, 8, [
|
|
18828
18967
|
"config",
|
|
18829
18968
|
"model",
|
|
18969
|
+
"last-values",
|
|
18970
|
+
"is-compare",
|
|
18830
18971
|
"size",
|
|
18831
18972
|
"disabled"
|
|
18832
18973
|
]);
|
|
@@ -18853,7 +18994,7 @@
|
|
|
18853
18994
|
lastValues: {},
|
|
18854
18995
|
isCompare: { type: Boolean }
|
|
18855
18996
|
},
|
|
18856
|
-
emits: ["change"],
|
|
18997
|
+
emits: ["change", "addDiffCount"],
|
|
18857
18998
|
setup(__props, { emit: __emit }) {
|
|
18858
18999
|
const props = __props;
|
|
18859
19000
|
const emit = __emit;
|
|
@@ -18892,6 +19033,7 @@
|
|
|
18892
19033
|
});
|
|
18893
19034
|
emit("change", v, eventData);
|
|
18894
19035
|
};
|
|
19036
|
+
const onAddDiffCount = () => emit("addDiffCount");
|
|
18895
19037
|
return (_ctx, _cache) => {
|
|
18896
19038
|
return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(_tmagic_design.TMagicCollapse), {
|
|
18897
19039
|
class: "m-fields-style-setter",
|
|
@@ -18907,11 +19049,16 @@
|
|
|
18907
19049
|
default: (0, vue.withCtx)(() => [item.component ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(item.component), {
|
|
18908
19050
|
key: 0,
|
|
18909
19051
|
values: __props.model[__props.name],
|
|
19052
|
+
"last-values": __props.lastValues?.[__props.name],
|
|
19053
|
+
"is-compare": __props.isCompare,
|
|
18910
19054
|
size: __props.size,
|
|
18911
19055
|
disabled: __props.disabled,
|
|
18912
|
-
onChange: change
|
|
19056
|
+
onChange: change,
|
|
19057
|
+
onAddDiffCount
|
|
18913
19058
|
}, null, 40, [
|
|
18914
19059
|
"values",
|
|
19060
|
+
"last-values",
|
|
19061
|
+
"is-compare",
|
|
18915
19062
|
"size",
|
|
18916
19063
|
"disabled"
|
|
18917
19064
|
])) : (0, vue.createCommentVNode)("v-if", true)]),
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.
|
|
2
|
+
"version": "1.8.0-beta.1",
|
|
3
3
|
"name": "@tmagic/editor",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": [
|
|
@@ -58,11 +58,11 @@
|
|
|
58
58
|
"moveable": "^0.53.0",
|
|
59
59
|
"serialize-javascript": "^7.0.0",
|
|
60
60
|
"sortablejs": "^1.15.6",
|
|
61
|
-
"@tmagic/design": "1.
|
|
62
|
-
"@tmagic/form": "1.
|
|
63
|
-
"@tmagic/stage": "1.
|
|
64
|
-
"@tmagic/table": "1.
|
|
65
|
-
"@tmagic/utils": "1.
|
|
61
|
+
"@tmagic/design": "1.8.0-beta.1",
|
|
62
|
+
"@tmagic/form": "1.8.0-beta.1",
|
|
63
|
+
"@tmagic/stage": "1.8.0-beta.1",
|
|
64
|
+
"@tmagic/table": "1.8.0-beta.1",
|
|
65
|
+
"@tmagic/utils": "1.8.0-beta.1"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
68
|
"@types/events": "^3.0.3",
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
"type-fest": "^5.2.0",
|
|
77
77
|
"typescript": "^6.0.3",
|
|
78
78
|
"vue": "^3.5.34",
|
|
79
|
-
"@tmagic/core": "1.
|
|
79
|
+
"@tmagic/core": "1.8.0-beta.1"
|
|
80
80
|
},
|
|
81
81
|
"peerDependenciesMeta": {
|
|
82
82
|
"typescript": {
|