@veltra/desktop 1.0.13 → 1.0.14

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 (180) hide show
  1. package/dist/components/action/action-group.js +110 -3
  2. package/dist/components/action/action-group.js.map +1 -1
  3. package/dist/components/action/action-group.vue.d.ts +16 -3
  4. package/dist/components/action/action.js +26 -13
  5. package/dist/components/action/action.js.map +1 -1
  6. package/dist/components/action/action.vue.d.ts +2 -2
  7. package/dist/components/action/style.js +2 -1
  8. package/dist/components/action/style2.css +35 -7
  9. package/dist/components/auto-complete/auto-complete.vue.d.ts +2 -2
  10. package/dist/components/batch-edit/batch-edit-form.js +106 -42
  11. package/dist/components/batch-edit/batch-edit-form.js.map +1 -1
  12. package/dist/components/batch-edit/batch-edit-list.js +84 -47
  13. package/dist/components/batch-edit/batch-edit-list.js.map +1 -1
  14. package/dist/components/batch-edit/batch-edit.js +42 -10
  15. package/dist/components/batch-edit/batch-edit.js.map +1 -1
  16. package/dist/components/batch-edit/style.js +2 -4
  17. package/dist/components/batch-edit/style2.css +202 -30
  18. package/dist/components/batch-edit/use-edit.js +45 -9
  19. package/dist/components/batch-edit/use-edit.js.map +1 -1
  20. package/dist/components/cascade/cascade.js +3 -1
  21. package/dist/components/cascade/cascade.js.map +1 -1
  22. package/dist/components/cascade/cascade.vue.d.ts +2 -2
  23. package/dist/components/checkbox/checkbox-button.vue.d.ts +1 -1
  24. package/dist/components/checkbox-group/checkbox-group.vue.d.ts +2 -2
  25. package/dist/components/code-editor/code-editor.js +145 -49
  26. package/dist/components/code-editor/code-editor.js.map +1 -1
  27. package/dist/components/code-editor/code-editor.vue.d.ts +2 -0
  28. package/dist/components/code-editor/style2.css +87 -19
  29. package/dist/components/date-panel/date-panel.vue.d.ts +1 -1
  30. package/dist/components/date-picker/date-picker.vue.d.ts +2 -2
  31. package/dist/components/date-range-picker/date-range-picker.vue.d.ts +2 -2
  32. package/dist/components/dialog/dialog.js +6 -2
  33. package/dist/components/dialog/dialog.js.map +1 -1
  34. package/dist/components/dialog/style2.css +2 -3
  35. package/dist/components/expression-editor/components/path-preview.js +27 -0
  36. package/dist/components/expression-editor/components/path-preview.js.map +1 -0
  37. package/dist/components/expression-editor/components/variable-picker.js +199 -153
  38. package/dist/components/expression-editor/components/variable-picker.js.map +1 -1
  39. package/dist/components/expression-editor/core/chip.js +54 -0
  40. package/dist/components/expression-editor/core/chip.js.map +1 -0
  41. package/dist/components/expression-editor/core/editor.js +424 -0
  42. package/dist/components/expression-editor/core/editor.js.map +1 -0
  43. package/dist/components/expression-editor/core/mention.js +91 -0
  44. package/dist/components/expression-editor/core/mention.js.map +1 -0
  45. package/dist/components/expression-editor/core/model.js +64 -0
  46. package/dist/components/expression-editor/core/model.js.map +1 -0
  47. package/dist/components/expression-editor/di.js +4 -10
  48. package/dist/components/expression-editor/di.js.map +1 -1
  49. package/dist/components/expression-editor/expression-editor.js +168 -114
  50. package/dist/components/expression-editor/expression-editor.js.map +1 -1
  51. package/dist/components/expression-editor/expression-editor.vue.d.ts +2 -1
  52. package/dist/components/expression-editor/style.js +0 -2
  53. package/dist/components/expression-editor/style2.css +145 -219
  54. package/dist/components/index.js +54 -54
  55. package/dist/components/input/input.vue.d.ts +2 -2
  56. package/dist/components/layout/layout.js +12 -11
  57. package/dist/components/layout/layout.js.map +1 -1
  58. package/dist/components/multi-select/multi-select.vue.d.ts +3 -3
  59. package/dist/components/multi-tree-select/multi-tree-select.vue.d.ts +3 -3
  60. package/dist/components/notification/notification.vue.d.ts +1 -1
  61. package/dist/components/number/number.vue.d.ts +1 -1
  62. package/dist/components/number-input/number-input.js +4 -4
  63. package/dist/components/number-input/number-input.js.map +1 -1
  64. package/dist/components/number-input/number-input.vue.d.ts +2 -2
  65. package/dist/components/number-range-input/number-range-input.vue.d.ts +1 -1
  66. package/dist/components/password-input/password-input.vue.d.ts +1 -1
  67. package/dist/components/pop-confirm/pop-confirm.vue.d.ts +1 -1
  68. package/dist/components/radio-group/radio-group.vue.d.ts +2 -2
  69. package/dist/components/rich-text-editor/rich-text-editor.js +1 -1
  70. package/dist/components/rich-text-editor/rich-text-editor.vue.d.ts +1 -1
  71. package/dist/components/rich-text-editor/toolbar.js +2 -2
  72. package/dist/components/select/select.vue.d.ts +2 -2
  73. package/dist/components/steps/steps.vue.d.ts +1 -1
  74. package/dist/components/table/use-table.js +16 -0
  75. package/dist/components/table/use-table.js.map +1 -1
  76. package/dist/components/tabs/tabs-horizontal.vue.d.ts +1 -1
  77. package/dist/components/tabs/tabs-vertical.vue.d.ts +1 -1
  78. package/dist/components/tabs/tabs.vue.d.ts +1 -1
  79. package/dist/components/textarea/textarea.vue.d.ts +2 -2
  80. package/dist/components/tip/tip.vue.d.ts +1 -1
  81. package/dist/components/tree/style2.css +18 -12
  82. package/dist/components/tree/tree-node.js +7 -4
  83. package/dist/components/tree/tree-node.js.map +1 -1
  84. package/dist/components/tree-select/tree-select.vue.d.ts +3 -3
  85. package/dist/index.d.ts +3 -3
  86. package/dist/index.js +83 -83
  87. package/dist/style.js +3 -3
  88. package/dist/types/action.d.ts +38 -4
  89. package/dist/types/cascade.d.ts +2 -3
  90. package/dist/types/code-editor.d.ts +9 -2
  91. package/dist/types/expression-editor.d.ts +9 -1
  92. package/dist/types/index.d.ts +2 -2
  93. package/package.json +11 -12
  94. package/src/components/action/action-group.vue +126 -56
  95. package/src/components/action/action.vue +35 -12
  96. package/src/components/action/style.scss +46 -10
  97. package/src/components/action/style.ts +2 -1
  98. package/src/components/batch-edit/batch-edit-form.vue +121 -45
  99. package/src/components/batch-edit/batch-edit-list.vue +56 -39
  100. package/src/components/batch-edit/batch-edit.vue +57 -6
  101. package/src/components/batch-edit/style.scss +251 -37
  102. package/src/components/batch-edit/style.ts +5 -8
  103. package/src/components/batch-edit/use-edit.ts +58 -11
  104. package/src/components/cascade/cascade.vue +3 -1
  105. package/src/components/code-editor/code-editor.vue +198 -63
  106. package/src/components/code-editor/style.scss +110 -12
  107. package/src/components/dialog/dialog.vue +6 -2
  108. package/src/components/dialog/style.scss +4 -4
  109. package/src/components/expression-editor/__test__/chip.test.ts +86 -0
  110. package/src/components/expression-editor/__test__/mention.test.ts +122 -0
  111. package/src/components/expression-editor/__test__/model.test.ts +127 -0
  112. package/src/components/expression-editor/components/path-preview.vue +32 -0
  113. package/src/components/expression-editor/components/variable-picker.vue +224 -219
  114. package/src/components/expression-editor/core/chip.ts +101 -0
  115. package/src/components/expression-editor/core/editor.ts +513 -0
  116. package/src/components/expression-editor/core/mention.ts +121 -0
  117. package/src/components/expression-editor/core/model.ts +109 -0
  118. package/src/components/expression-editor/di.ts +4 -32
  119. package/src/components/expression-editor/expression-editor.vue +184 -151
  120. package/src/components/expression-editor/style.scss +148 -220
  121. package/src/components/expression-editor/style.ts +0 -2
  122. package/src/components/layout/layout.vue +17 -19
  123. package/src/components/number-input/number-input.vue +4 -4
  124. package/src/components/table/use-table.ts +16 -0
  125. package/src/components/tree/style.scss +30 -33
  126. package/src/components/tree/tree-node.vue +4 -2
  127. package/src/types/action.ts +42 -4
  128. package/src/types/cascade.ts +4 -3
  129. package/src/types/code-editor.ts +9 -2
  130. package/src/types/expression-editor.ts +9 -0
  131. package/dist/components/action/action-group.vue_vue_type_script_setup_true_lang.js +0 -65
  132. package/dist/components/action/action-group.vue_vue_type_script_setup_true_lang.js.map +0 -1
  133. package/dist/components/expression-editor/constants.js +0 -9
  134. package/dist/components/expression-editor/constants.js.map +0 -1
  135. package/dist/components/expression-editor/internal/editor-runtime/create-runtime.js +0 -47
  136. package/dist/components/expression-editor/internal/editor-runtime/create-runtime.js.map +0 -1
  137. package/dist/components/expression-editor/internal/editor-runtime/model-sync.js +0 -49
  138. package/dist/components/expression-editor/internal/editor-runtime/model-sync.js.map +0 -1
  139. package/dist/components/expression-editor/internal/features/commands/register-command-packs.js +0 -215
  140. package/dist/components/expression-editor/internal/features/commands/register-command-packs.js.map +0 -1
  141. package/dist/components/expression-editor/internal/features/drag-drop/drag-drop-service.js +0 -33
  142. package/dist/components/expression-editor/internal/features/drag-drop/drag-drop-service.js.map +0 -1
  143. package/dist/components/expression-editor/internal/features/insertion/insertion-service.js +0 -33
  144. package/dist/components/expression-editor/internal/features/insertion/insertion-service.js.map +0 -1
  145. package/dist/components/expression-editor/nodes/variable-node.js +0 -94
  146. package/dist/components/expression-editor/nodes/variable-node.js.map +0 -1
  147. package/dist/components/expression-editor/parser.js +0 -32
  148. package/dist/components/expression-editor/parser.js.map +0 -1
  149. package/dist/components/expression-editor/plain-text.js +0 -19
  150. package/dist/components/expression-editor/plain-text.js.map +0 -1
  151. package/dist/components/expression-editor/use-context.js +0 -69
  152. package/dist/components/expression-editor/use-context.js.map +0 -1
  153. package/dist/components/expression-editor/use-decorators.js +0 -27
  154. package/dist/components/expression-editor/use-decorators.js.map +0 -1
  155. package/dist/components/expression-editor/use-expression-drag-drop.js +0 -275
  156. package/dist/components/expression-editor/use-expression-drag-drop.js.map +0 -1
  157. package/src/components/batch-edit/batch-edit-new.vue +0 -168
  158. package/src/components/batch-edit/style-new.scss +0 -35
  159. package/src/components/batch-edit/use-edit-new.ts +0 -68
  160. package/src/components/batch-edit/use-tip.ts +0 -47
  161. package/src/components/expression-editor/__test__/architecture-boundaries.test.ts +0 -103
  162. package/src/components/expression-editor/__test__/architecture-compatibility.test.ts +0 -52
  163. package/src/components/expression-editor/__test__/drag-drop.test.ts +0 -171
  164. package/src/components/expression-editor/__test__/parser.test.ts +0 -62
  165. package/src/components/expression-editor/constants.ts +0 -6
  166. package/src/components/expression-editor/internal/contracts/editor-runtime.ts +0 -11
  167. package/src/components/expression-editor/internal/editor-runtime/create-runtime.ts +0 -64
  168. package/src/components/expression-editor/internal/editor-runtime/index.ts +0 -1
  169. package/src/components/expression-editor/internal/editor-runtime/model-sync.ts +0 -68
  170. package/src/components/expression-editor/internal/features/commands/register-command-packs.ts +0 -517
  171. package/src/components/expression-editor/internal/features/drag-drop/drag-drop-service.ts +0 -51
  172. package/src/components/expression-editor/internal/features/insertion/insertion-service.ts +0 -56
  173. package/src/components/expression-editor/nodes/variable-node.tsx +0 -118
  174. package/src/components/expression-editor/parser.ts +0 -46
  175. package/src/components/expression-editor/plain-text.ts +0 -25
  176. package/src/components/expression-editor/plan.md +0 -22
  177. package/src/components/expression-editor/use-context.ts +0 -134
  178. package/src/components/expression-editor/use-decorators.tsx +0 -29
  179. package/src/components/expression-editor/use-editor.ts +0 -12
  180. package/src/components/expression-editor/use-expression-drag-drop.ts +0 -396
@@ -16,34 +16,102 @@
16
16
  */
17
17
  /** 暗色:data-theme 与系统偏好,与 UITheme.injectBuiltInThemes 选择器策略一致 */
18
18
  .u-code-editor {
19
- max-height: 300px;
19
+ --u-code-editor-default-lines: 8;
20
+ --u-code-editor-line-height: 1.6;
21
+ --u-code-editor-font-size: 13px;
22
+ --u-code-editor-padding-block: 6px;
23
+ --u-code-editor-bg: var(--u-bg-color-top);
24
+ --u-code-editor-fg: var(--u-text-color-main);
25
+ --u-code-editor-border: var(--u-border-color);
26
+ --u-code-editor-gutter-fg: var(--u-text-color-placeholder);
27
+ --u-code-editor-active-bg: rgba(30, 136, 229, 0.06);
28
+ --u-code-editor-selection-bg: rgba(30, 136, 229, 0.18);
29
+ position: relative;
20
30
  width: 100%;
21
- box-shadow: inset 0 0 1px 1px var(--u-border-color);
22
- transition: box-shadow 0.25s ease;
31
+ max-height: 480px;
32
+ border-radius: var(--u-radius-default);
33
+ background-color: var(--u-code-editor-bg);
34
+ box-shadow: inset 0 0 0 1px var(--u-code-editor-border);
35
+ overflow: hidden;
36
+ transition: box-shadow 0.2s ease;
23
37
  }
24
- .u-code-editor:hover {
25
- box-shadow: inset 0 0 1px 1px var(--u-color-primary);
38
+ .u-code-editor:hover, .u-code-editor:focus-within {
39
+ box-shadow: inset 0 0 0 1px var(--u-color-primary);
26
40
  }
27
- .u-code-editor--small {
28
- min-height: var(--u-form-component-height-small);
29
- border-radius: var(--u-radius-small);
30
- padding: 2px calc(var(--u-gap-small) / 2);
41
+ .u-code-editor .cm-editor {
42
+ background: transparent;
43
+ color: var(--u-code-editor-fg);
44
+ font-size: var(--u-code-editor-font-size);
45
+ line-height: var(--u-code-editor-line-height);
46
+ font-family: ui-monospace, "JetBrains Mono", "Fira Code", "SFMono-Regular", Menlo, Consolas, "Liberation Mono", monospace;
47
+ outline: none;
31
48
  }
32
- .u-code-editor--default {
33
- min-height: var(--u-form-component-height-default);
34
- border-radius: var(--u-radius-default);
35
- padding: 2px calc(var(--u-gap-default) / 2);
49
+ .u-code-editor .cm-editor.cm-focused {
50
+ outline: none;
51
+ }
52
+ .u-code-editor .cm-editor .cm-scroller {
53
+ font-family: inherit;
54
+ line-height: inherit;
55
+ overflow: visible;
56
+ }
57
+ .u-code-editor .cm-editor .cm-content {
58
+ padding: var(--u-code-editor-padding-block) 0;
59
+ min-height: calc(var(--u-code-editor-default-lines) * var(--u-code-editor-line-height) * var(--u-code-editor-font-size) + var(--u-code-editor-padding-block) * 2);
60
+ caret-color: var(--u-color-primary);
61
+ }
62
+ .u-code-editor .cm-editor .cm-line {
63
+ padding: 0 8px;
64
+ }
65
+ .u-code-editor .cm-editor .cm-gutters {
66
+ background-color: transparent;
67
+ color: var(--u-code-editor-gutter-fg);
68
+ border-right: 1px solid var(--u-code-editor-border);
69
+ user-select: none;
70
+ }
71
+ .u-code-editor .cm-editor .cm-gutterElement-phantom {
72
+ color: var(--u-code-editor-gutter-fg);
73
+ opacity: 0.45;
74
+ padding: 0 3px 0 5px;
75
+ text-align: right;
76
+ white-space: nowrap;
77
+ min-width: 1ch;
78
+ box-sizing: border-box;
79
+ pointer-events: none;
36
80
  }
37
- .u-code-editor--large {
38
- min-height: var(--u-form-component-height-large);
39
- border-radius: var(--u-radius-large);
40
- padding: 2px calc(var(--u-gap-large) / 2);
81
+ .u-code-editor .cm-editor .cm-activeLineGutter,
82
+ .u-code-editor .cm-editor .cm-activeLine {
83
+ background-color: var(--u-code-editor-active-bg);
84
+ }
85
+ .u-code-editor .cm-editor .cm-selectionBackground,
86
+ .u-code-editor .cm-editor ::selection {
87
+ background-color: var(--u-code-editor-selection-bg);
88
+ }
89
+ .u-code-editor .cm-editor .cm-cursor {
90
+ border-left-color: var(--u-color-primary);
91
+ }
92
+ .u-code-editor.is-dark {
93
+ --u-code-editor-bg: #282c34;
94
+ --u-code-editor-fg: #abb2bf;
95
+ --u-code-editor-border: rgba(255, 255, 255, 0.08);
96
+ --u-code-editor-gutter-fg: #5c6370;
97
+ --u-code-editor-active-bg: rgba(255, 255, 255, 0.04);
98
+ --u-code-editor-selection-bg: rgba(99, 162, 255, 0.25);
41
99
  }
42
100
  .u-code-editor.is-disabled {
43
101
  background-color: var(--u-color-disabled);
44
- box-shadow: inset 0 0 1px 1px var(--u-border-color);
102
+ box-shadow: inset 0 0 0 1px var(--u-code-editor-border);
103
+ cursor: not-allowed;
104
+ }
105
+ .u-code-editor.is-disabled:hover, .u-code-editor.is-disabled:focus-within {
106
+ box-shadow: inset 0 0 0 1px var(--u-code-editor-border);
107
+ }
108
+ .u-code-editor.is-disabled .cm-editor,
109
+ .u-code-editor.is-disabled .cm-content {
45
110
  cursor: not-allowed;
46
111
  }
47
112
  .u-code-editor.is-readonly {
48
- box-shadow: none;
113
+ box-shadow: inset 0 0 0 1px var(--u-code-editor-border);
114
+ }
115
+ .u-code-editor.is-readonly:hover, .u-code-editor.is-readonly:focus-within {
116
+ box-shadow: inset 0 0 0 1px var(--u-code-editor-border);
49
117
  }
@@ -11,8 +11,8 @@ declare const __VLS_export: _$vue.DefineComponent<DatePanelProps, {}, {}, {}, {}
11
11
  "onSelect:range-date"?: ((rangeDate?: [_$_cat_kit_core0.Dater, _$_cat_kit_core0.Dater] | undefined) => any) | undefined;
12
12
  "onSelect:date"?: ((date: _$_cat_kit_core0.Dater) => any) | undefined;
13
13
  }>, {
14
- size: _$_veltra_utils0.ComponentSize;
15
14
  type: "date" | "month" | "year";
15
+ size: _$_veltra_utils0.ComponentSize;
16
16
  }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
17
17
  declare const _default: typeof __VLS_export;
18
18
  //#endregion
@@ -7,11 +7,11 @@ declare const __VLS_export: _$vue.DefineComponent<DatePickerProps, {}, {}, {}, {
7
7
  }, string, _$vue.PublicProps, Readonly<DatePickerProps> & Readonly<{
8
8
  "onUpdate:modelValue"?: ((value?: string | undefined) => any) | undefined;
9
9
  }>, {
10
- disabled: boolean;
11
- readonly: boolean;
12
10
  type: "date" | "month" | "year";
13
11
  placeholder: string;
14
12
  clearable: boolean;
13
+ disabled: boolean;
14
+ readonly: boolean;
15
15
  }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
16
16
  declare const _default: typeof __VLS_export;
17
17
  //#endregion
@@ -7,11 +7,11 @@ declare const __VLS_export: _$vue.DefineComponent<DateRangePickerProps, {}, {},
7
7
  }, string, _$vue.PublicProps, Readonly<DateRangePickerProps> & Readonly<{
8
8
  "onUpdate:modelValue"?: ((value?: [string, string] | undefined) => any) | undefined;
9
9
  }>, {
10
- disabled: boolean;
11
- readonly: boolean;
12
10
  type: "date" | "month" | "year";
13
11
  placeholder: [string, string];
14
12
  clearable: boolean;
13
+ disabled: boolean;
14
+ readonly: boolean;
15
15
  }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
16
16
  declare const _default: typeof __VLS_export;
17
17
  //#endregion
@@ -93,11 +93,15 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
93
93
  x: 0,
94
94
  y: 0
95
95
  };
96
- /** 更新弹框位置 */
96
+ /**
97
+ * 更新弹框位置
98
+ * 使用独立 `translate` 而非整体 `transform`, 与 spring 动画的 `scale` 解耦,
99
+ * 避免动画期间整体 transform 被关键帧覆盖、动画结束后又"啪"地跳回内联位置
100
+ */
97
101
  const updateDialogTransform = (x, y) => {
98
102
  const dom = dialogRef.value;
99
103
  if (!dom) return;
100
- setStyles(dom, { transform: `scale3d(1, 1, 1) translate3d(${x}px, ${y}px, 0)` });
104
+ setStyles(dom, { translate: `${x}px ${y}px` });
101
105
  };
102
106
  useDrag({
103
107
  target: headerRef,
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.js","names":["$attrs","$slots"],"sources":["../../../src/components/dialog/dialog.vue"],"sourcesContent":["<template>\n <Teleport to=\"body\">\n <transition name=\"fade\" @after-leave=\"emit('closed')\" @enter=\"onOverlayEnter\">\n <div\n v-if=\"overlayVisible || opened\"\n v-show=\"overlayVisible\"\n :class=\"[cls.e('overlay'), bem.is('modal', modal)]\"\n ref=\"overlayRef\"\n @mousedown=\"modal && close()\"\n @keyup.esc=\"close\"\n tabindex=\"0\"\n >\n <transition name=\"spring\" @after-leave=\"onAfterDialogLeave\">\n <div\n v-if=\"dialogVisible\"\n v-bind=\"$attrs\"\n :class=\"className\"\n ref=\"dialogRef\"\n @mousedown.stop=\"handleIncreaseZIndex\"\n >\n <section :class=\"headerCls\" ref=\"headerRef\" @transitionend.stop @transitioncancel.stop>\n <div :class=\"cls.e('title')\" @mousedown.stop>\n <slot name=\"header\">\n {{ header || title }}\n </slot>\n </div>\n\n <div :class=\"cls.e('buttons')\" @mousedown.stop>\n <u-icon\n v-if=\"maximized\"\n :class=\"cls.e('btn-recover')\"\n @click=\"toggleMaximize(false)\"\n title=\"还原\"\n >\n <Recover />\n </u-icon>\n <u-icon\n v-else\n :class=\"cls.e('btn-maximize')\"\n @click=\"toggleMaximize(true)\"\n title=\"最大化\"\n >\n <Maximum />\n </u-icon>\n <u-icon :class=\"cls.e('btn-close')\" @click=\"close\" title=\"关闭\">\n <Close />\n </u-icon>\n </div>\n </section>\n\n <u-scroll\n tag=\"section\"\n :class=\"cls.e('body')\"\n ref=\"bodyRef\"\n :content-style=\"{ height: maximized ? '100%' : undefined }\"\n @transitionend.stop\n @transitioncancel.stop\n >\n <slot v-bind=\"{ maximized }\" />\n </u-scroll>\n\n <section ref=\"footerRef\" :class=\"footerCls\" v-if=\"$slots.footer\">\n <slot name=\"footer\" v-bind=\"{ close }\" />\n </section>\n </div>\n </transition>\n </div>\n </transition>\n </Teleport>\n\n <!-- 触发 -->\n <UNodeRender @click=\"visible = !visible\" :content=\"getTriggerNode()\" ref=\"triggerRef\" />\n</template>\n\n<script lang=\"ts\" setup>\nimport { useDrag, useFallbackProps } from '@veltra/compositions'\nimport { Close, Maximum, Recover } from '@veltra/icons/normal'\nimport { bem, extractNormalVNodes, setStyles, zIndex } from '@veltra/utils'\nimport { shallowRef, watch, computed, provide, nextTick } from 'vue'\n\nimport type { DialogProps, DialogEmits, DialogExposed, ComponentSize } from '../../types'\nimport type { ScrollExposed } from '../../types'\nimport { UIcon } from '../icon'\nimport { UNodeRender } from '../node-render'\nimport { UScroll } from '../scroll'\nimport { DialogDIKey } from './di'\nimport { useMaximum } from './use-maximum'\n\ndefineOptions({\n name: 'Dialog',\n inheritAttrs: false\n})\n\nconst props = withDefaults(defineProps<DialogProps>(), {\n modal: true,\n modelValue: true,\n autoScroll: true\n})\nconst emit = defineEmits<DialogEmits>()\n\nconst slots = defineSlots<{\n footer?: (props: { close: () => void }) => any\n trigger?: () => any\n header?: () => any\n default?: (props: {\n /** 弹框是否最大化了 */\n maximized: boolean\n }) => any\n}>()\n\nconst cls = bem('dialog')\nconst headerCls = [cls.e('header')]\nconst footerCls = [cls.e('footer')]\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst overlayRef = shallowRef<HTMLDivElement>()\n\n/** 弹框模板引用 */\nconst dialogRef = shallowRef<HTMLDivElement>()\n\n/** 弹框头部模板引用 */\nconst headerRef = shallowRef<HTMLDivElement>()\n\n/** 弹框body模板引用 */\nconst bodyRef = shallowRef<ScrollExposed>()\n\n/** 弹框footer模板引用 */\nconst footerRef = shallowRef<HTMLDivElement>()\n\nconst visible = defineModel<boolean>({\n default: false\n})\n\nconst overlayVisible = shallowRef(false)\nconst dialogVisible = shallowRef(false)\n\nwatch(visible, (v) => {\n if (v) {\n overlayVisible.value = true\n } else {\n dialogVisible.value = false\n }\n})\n\nfunction getTriggerNode() {\n const nodes = slots.trigger?.()\n if (!nodes?.length) return null\n\n const node = extractNormalVNodes(nodes)[0]\n return node\n}\n\nfunction onOverlayEnter() {\n dialogVisible.value = true\n}\n\nfunction onAfterDialogLeave() {\n overlayVisible.value = false\n}\n\nconst { toggleMaximize, maximized } = useMaximum({\n dialogRef,\n cls\n})\n\nconst className = computed(() => {\n return [cls.b, cls.m(size.value)]\n})\n\n/**\n * 是否弹出过, 用于控制下一次弹出时是否采用v-show的方式\n */\nlet opened = false\n\nwatch(visible, (v) => {\n if (!v) return\n\n if (!opened) opened = true\n\n // 初始化位置偏移量\n translated.x = 0\n translated.y = 0\n\n nextTick(() => {\n setStyles(overlayRef.value!, { zIndex: zIndex() })\n })\n})\n\n/** dialog位移的位置 */\nconst translated = {\n x: 0,\n y: 0\n}\n\n/** 更新弹框位置 */\nconst updateDialogTransform = (x: number, y: number) => {\n const dom = dialogRef.value\n if (!dom) return\n setStyles(dom, {\n transform: `scale3d(1, 1, 1) translate3d(${x}px, ${y}px, 0)`\n })\n}\n\n// 运用拖拽\nuseDrag({\n target: headerRef,\n\n onDragStart() {\n handleIncreaseZIndex()\n },\n\n onDrag({ x, y }) {\n if (maximized.value) return\n updateDialogTransform(translated.x + x, translated.y + y)\n },\n\n onDragEnd({ x, y }) {\n if (maximized.value) return\n translated.x += x\n translated.y += y\n\n // 字体模糊的bug修正\n if (translated.x % 2 !== 0) {\n translated.x += x < 0 ? 1 : -1\n }\n if (translated.y % 2 !== 0) {\n translated.y += y < 0 ? 1 : -1\n }\n updateDialogTransform(translated.x, translated.y)\n }\n})\n\nfunction handleIncreaseZIndex() {\n if (props.modal) return\n setStyles(overlayRef.value!, { zIndex: zIndex() })\n}\n\n/** 关闭 */\nconst close = () => {\n visible.value = false\n}\n\nprovide(DialogDIKey, {\n visible\n})\n\ndefineExpose<DialogExposed>({\n close\n})\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"dialog.js","names":["$attrs","$slots"],"sources":["../../../src/components/dialog/dialog.vue"],"sourcesContent":["<template>\n <Teleport to=\"body\">\n <transition name=\"fade\" @after-leave=\"emit('closed')\" @enter=\"onOverlayEnter\">\n <div\n v-if=\"overlayVisible || opened\"\n v-show=\"overlayVisible\"\n :class=\"[cls.e('overlay'), bem.is('modal', modal)]\"\n ref=\"overlayRef\"\n @mousedown=\"modal && close()\"\n @keyup.esc=\"close\"\n tabindex=\"0\"\n >\n <transition name=\"spring\" @after-leave=\"onAfterDialogLeave\">\n <div\n v-if=\"dialogVisible\"\n v-bind=\"$attrs\"\n :class=\"className\"\n ref=\"dialogRef\"\n @mousedown.stop=\"handleIncreaseZIndex\"\n >\n <section :class=\"headerCls\" ref=\"headerRef\" @transitionend.stop @transitioncancel.stop>\n <div :class=\"cls.e('title')\" @mousedown.stop>\n <slot name=\"header\">\n {{ header || title }}\n </slot>\n </div>\n\n <div :class=\"cls.e('buttons')\" @mousedown.stop>\n <u-icon\n v-if=\"maximized\"\n :class=\"cls.e('btn-recover')\"\n @click=\"toggleMaximize(false)\"\n title=\"还原\"\n >\n <Recover />\n </u-icon>\n <u-icon\n v-else\n :class=\"cls.e('btn-maximize')\"\n @click=\"toggleMaximize(true)\"\n title=\"最大化\"\n >\n <Maximum />\n </u-icon>\n <u-icon :class=\"cls.e('btn-close')\" @click=\"close\" title=\"关闭\">\n <Close />\n </u-icon>\n </div>\n </section>\n\n <u-scroll\n tag=\"section\"\n :class=\"cls.e('body')\"\n ref=\"bodyRef\"\n :content-style=\"{ height: maximized ? '100%' : undefined }\"\n @transitionend.stop\n @transitioncancel.stop\n >\n <slot v-bind=\"{ maximized }\" />\n </u-scroll>\n\n <section ref=\"footerRef\" :class=\"footerCls\" v-if=\"$slots.footer\">\n <slot name=\"footer\" v-bind=\"{ close }\" />\n </section>\n </div>\n </transition>\n </div>\n </transition>\n </Teleport>\n\n <!-- 触发 -->\n <UNodeRender @click=\"visible = !visible\" :content=\"getTriggerNode()\" ref=\"triggerRef\" />\n</template>\n\n<script lang=\"ts\" setup>\nimport { useDrag, useFallbackProps } from '@veltra/compositions'\nimport { Close, Maximum, Recover } from '@veltra/icons/normal'\nimport { bem, extractNormalVNodes, setStyles, zIndex } from '@veltra/utils'\nimport { shallowRef, watch, computed, provide, nextTick } from 'vue'\n\nimport type { DialogProps, DialogEmits, DialogExposed, ComponentSize } from '../../types'\nimport type { ScrollExposed } from '../../types'\nimport { UIcon } from '../icon'\nimport { UNodeRender } from '../node-render'\nimport { UScroll } from '../scroll'\nimport { DialogDIKey } from './di'\nimport { useMaximum } from './use-maximum'\n\ndefineOptions({\n name: 'Dialog',\n inheritAttrs: false\n})\n\nconst props = withDefaults(defineProps<DialogProps>(), {\n modal: true,\n modelValue: true,\n autoScroll: true\n})\nconst emit = defineEmits<DialogEmits>()\n\nconst slots = defineSlots<{\n footer?: (props: { close: () => void }) => any\n trigger?: () => any\n header?: () => any\n default?: (props: {\n /** 弹框是否最大化了 */\n maximized: boolean\n }) => any\n}>()\n\nconst cls = bem('dialog')\nconst headerCls = [cls.e('header')]\nconst footerCls = [cls.e('footer')]\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst overlayRef = shallowRef<HTMLDivElement>()\n\n/** 弹框模板引用 */\nconst dialogRef = shallowRef<HTMLDivElement>()\n\n/** 弹框头部模板引用 */\nconst headerRef = shallowRef<HTMLDivElement>()\n\n/** 弹框body模板引用 */\nconst bodyRef = shallowRef<ScrollExposed>()\n\n/** 弹框footer模板引用 */\nconst footerRef = shallowRef<HTMLDivElement>()\n\nconst visible = defineModel<boolean>({\n default: false\n})\n\nconst overlayVisible = shallowRef(false)\nconst dialogVisible = shallowRef(false)\n\nwatch(visible, (v) => {\n if (v) {\n overlayVisible.value = true\n } else {\n dialogVisible.value = false\n }\n})\n\nfunction getTriggerNode() {\n const nodes = slots.trigger?.()\n if (!nodes?.length) return null\n\n const node = extractNormalVNodes(nodes)[0]\n return node\n}\n\nfunction onOverlayEnter() {\n dialogVisible.value = true\n}\n\nfunction onAfterDialogLeave() {\n overlayVisible.value = false\n}\n\nconst { toggleMaximize, maximized } = useMaximum({\n dialogRef,\n cls\n})\n\nconst className = computed(() => {\n return [cls.b, cls.m(size.value)]\n})\n\n/**\n * 是否弹出过, 用于控制下一次弹出时是否采用v-show的方式\n */\nlet opened = false\n\nwatch(visible, (v) => {\n if (!v) return\n\n if (!opened) opened = true\n\n // 初始化位置偏移量\n translated.x = 0\n translated.y = 0\n\n nextTick(() => {\n setStyles(overlayRef.value!, { zIndex: zIndex() })\n })\n})\n\n/** dialog位移的位置 */\nconst translated = {\n x: 0,\n y: 0\n}\n\n/**\n * 更新弹框位置\n * 使用独立 `translate` 而非整体 `transform`, 与 spring 动画的 `scale` 解耦,\n * 避免动画期间整体 transform 被关键帧覆盖、动画结束后又\"啪\"地跳回内联位置\n */\nconst updateDialogTransform = (x: number, y: number) => {\n const dom = dialogRef.value\n if (!dom) return\n setStyles(dom, {\n translate: `${x}px ${y}px`\n })\n}\n\n// 运用拖拽\nuseDrag({\n target: headerRef,\n\n onDragStart() {\n handleIncreaseZIndex()\n },\n\n onDrag({ x, y }) {\n if (maximized.value) return\n updateDialogTransform(translated.x + x, translated.y + y)\n },\n\n onDragEnd({ x, y }) {\n if (maximized.value) return\n translated.x += x\n translated.y += y\n\n // 字体模糊的bug修正\n if (translated.x % 2 !== 0) {\n translated.x += x < 0 ? 1 : -1\n }\n if (translated.y % 2 !== 0) {\n translated.y += y < 0 ? 1 : -1\n }\n updateDialogTransform(translated.x, translated.y)\n }\n})\n\nfunction handleIncreaseZIndex() {\n if (props.modal) return\n setStyles(overlayRef.value!, { zIndex: zIndex() })\n}\n\n/** 关闭 */\nconst close = () => {\n visible.value = false\n}\n\nprovide(DialogDIKey, {\n visible\n})\n\ndefineExpose<DialogExposed>({\n close\n})\n</script>\n"],"mappings":"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"}
@@ -36,7 +36,6 @@
36
36
  .u-dialog {
37
37
  pointer-events: auto;
38
38
  border-radius: var(--u-radius-large);
39
- will-change: transform, opacity;
40
39
  display: flex;
41
40
  flex-direction: column;
42
41
  max-height: 90vh;
@@ -133,7 +132,7 @@
133
132
  width: 100vw !important;
134
133
  height: 100vh !important;
135
134
  max-height: 100vh;
136
- transform: translate3d(0, 0, 0) scale3d(1, 1, 1) !important;
135
+ translate: 0 0 !important;
137
136
  }
138
137
  .dialog-maximize-enter-to .u-dialog__header:active {
139
138
  cursor: default;
@@ -141,7 +140,7 @@
141
140
 
142
141
  .dialog-maximize-enter-active,
143
142
  .dialog-maximize-leave-active {
144
- transition-property: width, height, transform;
143
+ transition-property: width, height, translate;
145
144
  transition-duration: 0.25s;
146
145
  }
147
146
 
@@ -0,0 +1,27 @@
1
+ import { Fragment, createCommentVNode, createElementBlock, createElementVNode, defineComponent, normalizeClass, normalizeStyle, openBlock, renderList, toDisplayString, unref } from "vue";
2
+ import { bem } from "@veltra/utils";
3
+ //#region src/components/expression-editor/components/path-preview.vue
4
+ const _sfc_main = /* @__PURE__ */ defineComponent({
5
+ name: "ExpressionPathPreview",
6
+ __name: "path-preview",
7
+ props: { path: {} },
8
+ setup(__props) {
9
+ const cls = bem("expression-editor");
10
+ return (_ctx, _cache) => {
11
+ return openBlock(), createElementBlock("div", { class: normalizeClass(unref(cls).e("path-preview")) }, [createElementVNode("div", { class: normalizeClass(unref(cls).e("path-preview-title")) }, "变量路径", 2), createElementVNode("ul", { class: normalizeClass(unref(cls).e("path-tree")) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.path, (node, i) => {
12
+ return openBlock(), createElementBlock("li", {
13
+ key: `${i}-${node.value || node.label}`,
14
+ class: normalizeClass([unref(cls).e("path-tree-item"), unref(bem).is("active", i === __props.path.length - 1)]),
15
+ style: normalizeStyle({ paddingLeft: `${i * 14}px` })
16
+ }, [i > 0 ? (openBlock(), createElementBlock("span", {
17
+ key: 0,
18
+ class: normalizeClass(unref(cls).e("path-tree-branch"))
19
+ }, "└", 2)) : createCommentVNode("v-if", true), createElementVNode("span", { class: normalizeClass(unref(cls).e("path-tree-label")) }, toDisplayString(node.label), 3)], 6);
20
+ }), 128))], 2)], 2);
21
+ };
22
+ }
23
+ });
24
+ //#endregion
25
+ export { _sfc_main as default };
26
+
27
+ //# sourceMappingURL=path-preview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-preview.js","names":[],"sources":["../../../../src/components/expression-editor/components/path-preview.vue"],"sourcesContent":["<template>\n <div :class=\"cls.e('path-preview')\">\n <div :class=\"cls.e('path-preview-title')\">变量路径</div>\n <ul :class=\"cls.e('path-tree')\">\n <li\n v-for=\"(node, i) in path\"\n :key=\"`${i}-${node.value || node.label}`\"\n :class=\"[cls.e('path-tree-item'), bem.is('active', i === path.length - 1)]\"\n :style=\"{ paddingLeft: `${i * 14}px` }\"\n >\n <span v-if=\"i > 0\" :class=\"cls.e('path-tree-branch')\">└</span>\n <span :class=\"cls.e('path-tree-label')\">{{ node.label }}</span>\n </li>\n </ul>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\n\nimport type { VariableItem } from '../../../types'\n\ndefineOptions({\n name: 'ExpressionPathPreview'\n})\n\ndefineProps<{\n path: VariableItem[]\n}>()\n\nconst cls = bem('expression-editor')\n</script>\n"],"mappings":";;;;;;;;EA8BA,MAAM,MAAM,IAAI,oBAAmB;;uBA7BjC,mBAaM,OAAA,EAbA,OAAK,eAAE,MAAA,IAAG,CAAC,EAAC,eAAA,CAAA,EAAA,EAAA,CAChB,mBAAoD,OAAA,EAA9C,OAAK,eAAE,MAAA,IAAG,CAAC,EAAC,qBAAA,CAAA,EAAA,EAAwB,QAAI,EAAA,EAC9C,mBAUK,MAAA,EAVA,OAAK,eAAE,MAAA,IAAG,CAAC,EAAC,YAAA,CAAA,EAAA,EAAA,EAAA,UAAA,KAAA,EACf,mBAQK,UAAA,MAAA,WAPiB,QAAA,OAAZ,MAAM,MAAC;wBADjB,mBAQK,MAAA;KANF,KAAG,GAAK,EAAC,GAAI,KAAK,SAAS,KAAK;KAChC,OAAK,eAAA,CAAG,MAAA,IAAG,CAAC,EAAC,iBAAA,EAAoB,MAAA,IAAG,CAAC,GAAE,UAAW,MAAM,QAAA,KAAK,SAAM,EAAA,CAAA,CAAA;KACnE,OAAK,eAAA,EAAA,aAAA,GAAoB,IAAC,GAAA,KAAA,CAAA;QAEf,IAAC,KAAA,WAAA,EAAb,mBAA8D,QAAA;;KAA1C,OAAK,eAAE,MAAA,IAAG,CAAC,EAAC,mBAAA,CAAA;OAAsB,KAAC,EAAA,IAAA,mBAAA,QAAA,KAAA,EACvD,mBAA+D,QAAA,EAAxD,OAAK,eAAE,MAAA,IAAG,CAAC,EAAC,kBAAA,CAAA,EAAA,EAAA,gBAAwB,KAAK,MAAK,EAAA,EAAA,CAAA,EAAA,EAAA"}