@tmagic/editor 1.8.0-beta.4 → 1.8.0-beta.6
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/CompareForm.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/components/ToolButton.vue_vue_type_script_setup_true_lang.js +6 -6
- package/dist/es/fields/CodeSelectCol.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/fields/DataSourceFieldSelect/FieldSelect.vue_vue_type_script_setup_true_lang.js +8 -2
- package/dist/es/fields/DataSourceFields.vue_vue_type_script_setup_true_lang.js +25 -8
- 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 +25 -12
- package/dist/es/fields/StyleSetter/components/Border.vue_vue_type_script_setup_true_lang.js +27 -5
- package/dist/es/index.js +6 -3
- package/dist/es/initService.js +1 -1
- package/dist/es/layouts/Framework.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/history-list/Bucket.vue_vue_type_script_setup_true_lang.js +19 -55
- package/dist/es/layouts/history-list/BucketTab.vue_vue_type_script_setup_true_lang.js +22 -39
- package/dist/es/layouts/history-list/GroupRow.vue_vue_type_script_setup_true_lang.js +149 -103
- package/dist/es/layouts/history-list/HistoryDiffDialog.vue_vue_type_script_setup_true_lang.js +32 -8
- package/dist/es/layouts/history-list/HistoryListPanel.vue_vue_type_script_setup_true_lang.js +335 -213
- package/dist/es/layouts/history-list/InitialRow.vue_vue_type_script_setup_true_lang.js +36 -7
- package/dist/es/layouts/history-list/PageTab.vue_vue_type_script_setup_true_lang.js +47 -60
- package/dist/es/layouts/history-list/composables.js +73 -32
- package/dist/es/layouts/page-bar/PageBar.vue_vue_type_script_setup_true_lang.js +4 -2
- package/dist/es/layouts/sidebar/Sidebar.vue_vue_type_script_setup_true_lang.js +5 -1
- package/dist/es/layouts/sidebar/data-source/DataSourceConfigPanel.vue_vue_type_script_setup_true_lang.js +16 -3
- package/dist/es/layouts/sidebar/data-source/DataSourceListPanel.vue_vue_type_script_setup_true_lang.js +23 -1
- package/dist/es/services/codeBlock.js +96 -37
- package/dist/es/services/dataSource.js +70 -26
- package/dist/es/services/editor.js +266 -104
- package/dist/es/services/history.js +271 -212
- package/dist/es/services/ui.js +3 -0
- package/dist/es/style.css +53 -7
- package/dist/es/utils/data-source/index.js +2 -0
- package/dist/es/utils/editor.js +103 -49
- package/dist/es/utils/history.js +232 -0
- package/dist/es/utils/indexed-db.js +86 -0
- package/dist/es/utils/undo-redo.js +60 -1
- package/dist/style.css +53 -7
- package/dist/tmagic-editor.umd.cjs +2064 -1000
- package/package.json +7 -7
- package/src/components/CompareForm.vue +3 -1
- package/src/components/ToolButton.vue +2 -2
- package/src/fields/CodeSelectCol.vue +7 -1
- package/src/fields/DataSourceFieldSelect/FieldSelect.vue +16 -2
- package/src/fields/DataSourceFields.vue +37 -8
- package/src/fields/DataSourceMethodSelect.vue +9 -4
- package/src/fields/DataSourceMethods.vue +42 -21
- package/src/fields/StyleSetter/components/Border.vue +15 -6
- package/src/index.ts +1 -0
- package/src/initService.ts +1 -1
- package/src/layouts/Framework.vue +1 -1
- package/src/layouts/history-list/Bucket.vue +34 -71
- package/src/layouts/history-list/BucketTab.vue +46 -54
- package/src/layouts/history-list/GroupRow.vue +146 -111
- package/src/layouts/history-list/HistoryDiffDialog.vue +94 -68
- package/src/layouts/history-list/HistoryListPanel.vue +298 -115
- package/src/layouts/history-list/InitialRow.vue +28 -9
- package/src/layouts/history-list/PageTab.vue +57 -51
- package/src/layouts/history-list/composables.ts +157 -36
- package/src/layouts/page-bar/PageBar.vue +4 -2
- package/src/layouts/sidebar/Sidebar.vue +6 -1
- package/src/layouts/sidebar/data-source/DataSourceConfigPanel.vue +30 -2
- package/src/layouts/sidebar/data-source/DataSourceListPanel.vue +26 -1
- package/src/services/codeBlock.ts +113 -37
- package/src/services/dataSource.ts +94 -40
- package/src/services/editor.ts +376 -136
- package/src/services/history.ts +306 -209
- package/src/services/ui.ts +7 -0
- package/src/theme/history-list-panel.scss +72 -5
- package/src/theme/page-bar.scss +0 -4
- package/src/theme/style-setter/border.scss +4 -1
- package/src/type.ts +183 -64
- package/src/utils/data-source/index.ts +2 -0
- package/src/utils/editor.ts +166 -60
- package/src/utils/history.ts +308 -0
- package/src/utils/index.ts +2 -0
- package/src/utils/indexed-db.ts +122 -0
- package/src/utils/undo-redo.ts +88 -0
- package/types/index.d.ts +813 -302
|
@@ -1,76 +1,74 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
>
|
|
13
|
-
<div v-if="
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
<
|
|
17
|
-
|
|
18
|
-
<
|
|
19
|
-
<
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
</TMagicRadioGroup>
|
|
23
|
-
|
|
24
|
-
<TMagicRadioGroup v-model="mode" size="small" class="m-editor-history-diff-dialog-mode">
|
|
25
|
-
<TMagicRadioButton value="before">与修改前对比</TMagicRadioButton>
|
|
26
|
-
<TMagicRadioButton value="current" :disabled="!hasCurrent">与当前对比</TMagicRadioButton>
|
|
27
|
-
</TMagicRadioGroup>
|
|
28
|
-
</div>
|
|
29
|
-
</div>
|
|
2
|
+
<TMagicDialog
|
|
3
|
+
v-model="visible"
|
|
4
|
+
class="m-editor-history-diff-dialog"
|
|
5
|
+
:title="dialogTitle"
|
|
6
|
+
top="5vh"
|
|
7
|
+
destroy-on-close
|
|
8
|
+
append-to-body
|
|
9
|
+
:width="width"
|
|
10
|
+
@close="onClose"
|
|
11
|
+
>
|
|
12
|
+
<div v-if="payload && visible" class="m-editor-history-diff-dialog-body">
|
|
13
|
+
<div v-if="onConfirm" class="m-editor-history-diff-dialog-notice">仅回滚有差异的字段</div>
|
|
14
|
+
|
|
15
|
+
<div class="m-editor-history-diff-dialog-header">
|
|
16
|
+
<span class="m-editor-history-diff-dialog-target">{{ targetText }}</span>
|
|
17
|
+
<div class="m-editor-history-diff-dialog-controls">
|
|
18
|
+
<TMagicRadioGroup v-model="viewMode" size="small" class="m-editor-history-diff-dialog-view">
|
|
19
|
+
<TMagicRadioButton value="form">表单对比</TMagicRadioButton>
|
|
20
|
+
<TMagicRadioButton value="code">源码对比</TMagicRadioButton>
|
|
21
|
+
</TMagicRadioGroup>
|
|
30
22
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
<span v-if="mode === 'current' && isSameAsCurrent" class="m-editor-history-diff-dialog-tip">
|
|
36
|
-
当前值与该步修改后一致,无差异
|
|
37
|
-
</span>
|
|
23
|
+
<TMagicRadioGroup v-model="mode" size="small" class="m-editor-history-diff-dialog-mode">
|
|
24
|
+
<TMagicRadioButton value="before">与修改前对比</TMagicRadioButton>
|
|
25
|
+
<TMagicRadioButton value="current" :disabled="!hasCurrent">与当前对比</TMagicRadioButton>
|
|
26
|
+
</TMagicRadioGroup>
|
|
38
27
|
</div>
|
|
28
|
+
</div>
|
|
39
29
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
:extend-state="extendState"
|
|
48
|
-
:load-config="loadConfig"
|
|
49
|
-
:self-diff-field-types="selfDiffFieldTypes"
|
|
50
|
-
height="70vh"
|
|
51
|
-
/>
|
|
52
|
-
|
|
53
|
-
<CodeEditor
|
|
54
|
-
v-else
|
|
55
|
-
type="diff"
|
|
56
|
-
language="json"
|
|
57
|
-
:init-values="leftValue"
|
|
58
|
-
:modified-values="rightValue"
|
|
59
|
-
:options="codeDiffOptions"
|
|
60
|
-
disabled-full-screen
|
|
61
|
-
height="70vh"
|
|
62
|
-
/>
|
|
30
|
+
<div class="m-editor-history-diff-dialog-legend">
|
|
31
|
+
<TMagicTag size="small" type="danger">{{ leftLabel }}</TMagicTag>
|
|
32
|
+
<span class="m-editor-history-diff-dialog-arrow">→</span>
|
|
33
|
+
<TMagicTag size="small" type="success">{{ rightLabel }}</TMagicTag>
|
|
34
|
+
<span v-if="mode === 'current' && isSameAsCurrent" class="m-editor-history-diff-dialog-tip">
|
|
35
|
+
当前值与该步修改后一致,无差异
|
|
36
|
+
</span>
|
|
63
37
|
</div>
|
|
64
38
|
|
|
65
|
-
<
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
39
|
+
<CompareForm
|
|
40
|
+
v-if="viewMode === 'form'"
|
|
41
|
+
:category="payload.category"
|
|
42
|
+
:type="payload.type"
|
|
43
|
+
:data-source-type="payload.dataSourceType"
|
|
44
|
+
:value="rightValue"
|
|
45
|
+
:last-value="leftValue"
|
|
46
|
+
:extend-state="extendState"
|
|
47
|
+
:load-config="loadConfig"
|
|
48
|
+
:self-diff-field-types="selfDiffFieldTypes"
|
|
49
|
+
height="70vh"
|
|
50
|
+
/>
|
|
51
|
+
|
|
52
|
+
<CodeEditor
|
|
53
|
+
v-else
|
|
54
|
+
type="diff"
|
|
55
|
+
language="json"
|
|
56
|
+
:init-values="leftValue"
|
|
57
|
+
:modified-values="rightValue"
|
|
58
|
+
:options="codeDiffOptions"
|
|
59
|
+
disabled-full-screen
|
|
60
|
+
height="70vh"
|
|
61
|
+
/>
|
|
62
|
+
</div>
|
|
63
|
+
|
|
64
|
+
<template #footer>
|
|
65
|
+
<template v-if="isConfirm">
|
|
66
|
+
<TMagicButton size="small" @click="visible = false">取消</TMagicButton>
|
|
67
|
+
<TMagicButton size="small" type="primary" @click="onConfirmClick">确定回滚</TMagicButton>
|
|
71
68
|
</template>
|
|
72
|
-
|
|
73
|
-
|
|
69
|
+
<TMagicButton v-else size="small" @click="visible = false">关闭</TMagicButton>
|
|
70
|
+
</template>
|
|
71
|
+
</TMagicDialog>
|
|
74
72
|
</template>
|
|
75
73
|
|
|
76
74
|
<script lang="ts" setup>
|
|
@@ -102,6 +100,7 @@ const props = withDefaults(
|
|
|
102
100
|
*/
|
|
103
101
|
loadConfig?: CompareFormLoadConfig;
|
|
104
102
|
width?: string;
|
|
103
|
+
isConfirm?: boolean;
|
|
105
104
|
onConfirm?: () => void;
|
|
106
105
|
selfDiffFieldTypes?: string[];
|
|
107
106
|
}>(),
|
|
@@ -178,10 +177,15 @@ const isSameAsCurrent = computed(() => {
|
|
|
178
177
|
return isEqual(payload.value.value, payload.value.currentValue);
|
|
179
178
|
});
|
|
180
179
|
|
|
180
|
+
/** confirm() 的 resolve,仅在「等待用户确认回滚」期间存在 */
|
|
181
|
+
let confirmResolve: ((_value: boolean) => void) | null = null;
|
|
182
|
+
|
|
181
183
|
const onConfirmClick = () => {
|
|
182
|
-
|
|
184
|
+
props.onConfirm?.();
|
|
183
185
|
|
|
184
|
-
|
|
186
|
+
// 用户确认回滚:resolve(true),并清空以避免随后 visible=false 再 resolve(false)
|
|
187
|
+
confirmResolve?.(true);
|
|
188
|
+
confirmResolve = null;
|
|
185
189
|
|
|
186
190
|
visible.value = false;
|
|
187
191
|
};
|
|
@@ -210,6 +214,24 @@ const open = (p: DiffDialogPayload) => {
|
|
|
210
214
|
visible.value = true;
|
|
211
215
|
};
|
|
212
216
|
|
|
217
|
+
/**
|
|
218
|
+
* 以 Promise 形式打开确认回滚弹窗:
|
|
219
|
+
* - 用户点击「确定回滚」时 resolve(true);
|
|
220
|
+
* - 取消 / 关闭 / 按 Esc 等其他方式关闭弹窗时 resolve(false)。
|
|
221
|
+
*
|
|
222
|
+
* 同一时刻只允许一个待确认流程,重复调用会先 resolve(false) 掉上一个。
|
|
223
|
+
*/
|
|
224
|
+
const confirm = (p: DiffDialogPayload): Promise<boolean> => {
|
|
225
|
+
// 终止上一个未完成的确认流程,避免悬挂的 Promise
|
|
226
|
+
confirmResolve?.(false);
|
|
227
|
+
confirmResolve = null;
|
|
228
|
+
|
|
229
|
+
return new Promise<boolean>((resolve) => {
|
|
230
|
+
confirmResolve = resolve;
|
|
231
|
+
open(p);
|
|
232
|
+
});
|
|
233
|
+
};
|
|
234
|
+
|
|
213
235
|
const close = () => {
|
|
214
236
|
visible.value = false;
|
|
215
237
|
};
|
|
@@ -218,6 +240,9 @@ const close = () => {
|
|
|
218
240
|
watch(visible, (v) => {
|
|
219
241
|
if (!v) {
|
|
220
242
|
payload.value = null;
|
|
243
|
+
// 非「确定回滚」方式关闭(取消 / Esc / 点遮罩等)时,resolve(false)
|
|
244
|
+
confirmResolve?.(false);
|
|
245
|
+
confirmResolve = null;
|
|
221
246
|
}
|
|
222
247
|
});
|
|
223
248
|
|
|
@@ -227,6 +252,7 @@ const onClose = () => {
|
|
|
227
252
|
|
|
228
253
|
defineExpose({
|
|
229
254
|
open,
|
|
255
|
+
confirm,
|
|
230
256
|
close,
|
|
231
257
|
});
|
|
232
258
|
</script>
|