@veltra/desktop 1.1.14 → 1.1.18

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 (277) hide show
  1. package/dist/components/action/action-group.vue.d.ts +1 -1
  2. package/dist/components/action/action-group.vue_vue_type_script_setup_true_lang.js.map +1 -1
  3. package/dist/components/action/action.js.map +1 -1
  4. package/dist/components/action/action.vue.d.ts +1 -1
  5. package/dist/components/action/style2.css +0 -4
  6. package/dist/components/auto-complete/auto-complete.js.map +1 -1
  7. package/dist/components/auto-complete/style.js +1 -1
  8. package/dist/components/auto-complete/use-keyboard.js.map +1 -1
  9. package/dist/components/auto-complete/use-suggestions.js.map +1 -1
  10. package/dist/components/badge/badge.js +1 -1
  11. package/dist/components/badge/badge.js.map +1 -1
  12. package/dist/components/batch-edit/batch-edit-form.js.map +1 -1
  13. package/dist/components/batch-edit/batch-edit-list.js.map +1 -1
  14. package/dist/components/batch-edit/batch-edit.js.map +1 -1
  15. package/dist/components/batch-edit/helper.js.map +1 -1
  16. package/dist/components/batch-edit/style.js +1 -1
  17. package/dist/components/batch-edit/use-edit.js.map +1 -1
  18. package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
  19. package/dist/components/button/button-group.js.map +1 -1
  20. package/dist/components/button/button.js.map +1 -1
  21. package/dist/components/calendar/calendar.js.map +1 -1
  22. package/dist/components/calendar/utils.js.map +1 -1
  23. package/dist/components/card/card-action.js.map +1 -1
  24. package/dist/components/card/card-content.js.map +1 -1
  25. package/dist/components/card/card-cover.js.map +1 -1
  26. package/dist/components/card/card-header.js.map +1 -1
  27. package/dist/components/card/card.js.map +1 -1
  28. package/dist/components/cascade/cascade-panel-item.js.map +1 -1
  29. package/dist/components/cascade/cascade.js.map +1 -1
  30. package/dist/components/cascade/cascade.vue.d.ts +3 -3
  31. package/dist/components/cascade/node.js.map +1 -1
  32. package/dist/components/cascade/use-check.js.map +1 -1
  33. package/dist/components/cascade/use-data-map.js.map +1 -1
  34. package/dist/components/cascade/use-select.js +1 -1
  35. package/dist/components/cascade/use-select.js.map +1 -1
  36. package/dist/components/check-tag/check-tag.js.map +1 -1
  37. package/dist/components/checkbox/checkbox-button.js.map +1 -1
  38. package/dist/components/checkbox/checkbox.js.map +1 -1
  39. package/dist/components/checkbox/style.js +1 -1
  40. package/dist/components/checkbox-group/checkbox-group.js.map +1 -1
  41. package/dist/components/code-editor/code-editor.js.map +1 -1
  42. package/dist/components/collapse/collapse-item.js.map +1 -1
  43. package/dist/components/collapse/collapse.js.map +1 -1
  44. package/dist/components/condition-editor/components/condition-group.js +138 -103
  45. package/dist/components/condition-editor/components/condition-group.js.map +1 -1
  46. package/dist/components/condition-editor/components/condition-row.js +146 -95
  47. package/dist/components/condition-editor/components/condition-row.js.map +1 -1
  48. package/dist/components/condition-editor/condition-editor.js +18 -40
  49. package/dist/components/condition-editor/condition-editor.js.map +1 -1
  50. package/dist/components/condition-editor/condition-editor.vue.d.ts +0 -2
  51. package/dist/components/condition-editor/core/evaluator.d.ts +22 -0
  52. package/dist/components/condition-editor/core/evaluator.js +111 -50
  53. package/dist/components/condition-editor/core/evaluator.js.map +1 -1
  54. package/dist/components/condition-editor/core/operators.js.map +1 -1
  55. package/dist/components/condition-editor/index.d.ts +2 -1
  56. package/dist/components/condition-editor/style2.css +159 -82
  57. package/dist/components/context-menu/api.js.map +1 -1
  58. package/dist/components/context-menu/context-menu-item.js.map +1 -1
  59. package/dist/components/context-menu/context-menu.js.map +1 -1
  60. package/dist/components/context-menu/style.js +1 -1
  61. package/dist/components/date-panel/date-panel.js.map +1 -1
  62. package/dist/components/date-panel/headers/day.js.map +1 -1
  63. package/dist/components/date-panel/headers/month.js.map +1 -1
  64. package/dist/components/date-panel/headers/year.js.map +1 -1
  65. package/dist/components/date-panel/panels/day.js.map +1 -1
  66. package/dist/components/date-panel/panels/month.js.map +1 -1
  67. package/dist/components/date-panel/panels/year.js.map +1 -1
  68. package/dist/components/date-panel/use-date-select.js.map +1 -1
  69. package/dist/components/date-panel/use-panel-date.js.map +1 -1
  70. package/dist/components/date-panel/use-panel.js.map +1 -1
  71. package/dist/components/date-picker/date-picker.js.map +1 -1
  72. package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
  73. package/dist/components/dialog/dialog.js.map +1 -1
  74. package/dist/components/dialog/style.js +2 -2
  75. package/dist/components/dialog/use-maximum.js.map +1 -1
  76. package/dist/components/drawer/drawer.js.map +1 -1
  77. package/dist/components/drawer/style.js +1 -1
  78. package/dist/components/dropdown/dropdown.js +1 -0
  79. package/dist/components/dropdown/dropdown.js.map +1 -1
  80. package/dist/components/dropdown/style.js +1 -1
  81. package/dist/components/empty/empty.js.map +1 -1
  82. package/dist/components/expression-editor/components/path-preview.js.map +1 -1
  83. package/dist/components/expression-editor/components/variable-picker.js.map +1 -1
  84. package/dist/components/expression-editor/core/chip.js.map +1 -1
  85. package/dist/components/expression-editor/core/editor.js.map +1 -1
  86. package/dist/components/expression-editor/core/mention.js.map +1 -1
  87. package/dist/components/expression-editor/core/model.js.map +1 -1
  88. package/dist/components/expression-editor/di.js.map +1 -1
  89. package/dist/components/expression-editor/expression-editor.js.map +1 -1
  90. package/dist/components/file-picker/file-picker.js.map +1 -1
  91. package/dist/components/file-picker/helper.js.map +1 -1
  92. package/dist/components/file-viewer/file-viewer.js.map +1 -1
  93. package/dist/components/file-viewer/helper.js.map +1 -1
  94. package/dist/components/file-viewer/previewers/docx-previewer.js.map +1 -1
  95. package/dist/components/file-viewer/previewers/image-previewer.js.map +1 -1
  96. package/dist/components/file-viewer/previewers/pdf-previewer.js.map +1 -1
  97. package/dist/components/file-viewer/previewers/pdf-viewport-scroll.js.map +1 -1
  98. package/dist/components/file-viewer/previewers/pdf-zoom-bridge.js.map +1 -1
  99. package/dist/components/file-viewer/previewers/sheet-previewer.js.map +1 -1
  100. package/dist/components/file-viewer/previewers/text-previewer.js.map +1 -1
  101. package/dist/components/file-viewer/previewers/video-previewer.js.map +1 -1
  102. package/dist/components/float-button/float-button.js.map +1 -1
  103. package/dist/components/form/dynamic-form-model.js.map +1 -1
  104. package/dist/components/form/form-model.js.map +1 -1
  105. package/dist/components/form/form.vue_vue_type_script_setup_true_lang.js.map +1 -1
  106. package/dist/components/form/helper.js.map +1 -1
  107. package/dist/components/form/use-node-interceptor.js.map +1 -1
  108. package/dist/components/form-item/form-item.js.map +1 -1
  109. package/dist/components/form-item/form-item.vue_vue_type_script_setup_true_lang.js +2 -1
  110. package/dist/components/form-item/form-item.vue_vue_type_script_setup_true_lang.js.map +1 -1
  111. package/dist/components/gantt-chart/gantt-chart.js.map +1 -1
  112. package/dist/components/grid/breakpoint.js.map +1 -1
  113. package/dist/components/grid/grid-item.js.map +1 -1
  114. package/dist/components/grid/grid.js.map +1 -1
  115. package/dist/components/grid/use-responsive.js.map +1 -1
  116. package/dist/components/grid-input/grid-input.js.map +1 -1
  117. package/dist/components/group-input/group-input.js.map +1 -1
  118. package/dist/components/group-input/use-group-items.js.map +1 -1
  119. package/dist/components/icon/icon.js.map +1 -1
  120. package/dist/components/index.d.ts +1 -0
  121. package/dist/components/index.js +4 -0
  122. package/dist/components/input/input.vue.d.ts +2 -2
  123. package/dist/components/input/input.vue_vue_type_script_setup_true_lang.js.map +1 -1
  124. package/dist/components/input/style.js +1 -1
  125. package/dist/components/kbd/kbd.js.map +1 -1
  126. package/dist/components/layout/layout-resizer.js.map +1 -1
  127. package/dist/components/layout/layout.js.map +1 -1
  128. package/dist/components/list/list-item.js.map +1 -1
  129. package/dist/components/list/list.js.map +1 -1
  130. package/dist/components/loading/directive.js.map +1 -1
  131. package/dist/components/loading/loading.js.map +1 -1
  132. package/dist/components/loading/style.js +1 -1
  133. package/dist/components/menu/helper.js.map +1 -1
  134. package/dist/components/menu/menu-item-collapsed.js.map +1 -1
  135. package/dist/components/menu/menu-item.js.map +1 -1
  136. package/dist/components/menu/menu-sub-collapsed.js.map +1 -1
  137. package/dist/components/menu/menu-sub.js.map +1 -1
  138. package/dist/components/menu/menu.js.map +1 -1
  139. package/dist/components/menu/use-menu-item.js.map +1 -1
  140. package/dist/components/menu/walk-menu-path.js.map +1 -1
  141. package/dist/components/message/helper.js.map +1 -1
  142. package/dist/components/message/message-box.js.map +1 -1
  143. package/dist/components/message/message.js.map +1 -1
  144. package/dist/components/message/message2.js.map +1 -1
  145. package/dist/components/message-confirm/message-confirm.js.map +1 -1
  146. package/dist/components/message-confirm/message-confirm2.js.map +1 -1
  147. package/dist/components/multi-select/multi-select-option.js.map +1 -1
  148. package/dist/components/multi-select/multi-select.js.map +1 -1
  149. package/dist/components/multi-select/multi-select.vue.d.ts +1 -1
  150. package/dist/components/multi-select/style.js +1 -1
  151. package/dist/components/multi-tree-select/multi-tree-select.js.map +1 -1
  152. package/dist/components/multi-tree-select/multi-tree-select.vue.d.ts +3 -3
  153. package/dist/components/multi-tree-select/style.js +1 -1
  154. package/dist/components/node-render/node-render.js.map +1 -1
  155. package/dist/components/notification/index.js.map +1 -1
  156. package/dist/components/notification/notification.js.map +1 -1
  157. package/dist/components/notification/notification.vue.d.ts +1 -1
  158. package/dist/components/number/number.js.map +1 -1
  159. package/dist/components/number-input/number-input.js.map +1 -1
  160. package/dist/components/number-input/number-input.vue.d.ts +2 -2
  161. package/dist/components/number-range-input/number-range-input.js.map +1 -1
  162. package/dist/components/paginator/paginator.js.map +1 -1
  163. package/dist/components/palette/color-transform.js.map +1 -1
  164. package/dist/components/palette/palette-alpha.js.map +1 -1
  165. package/dist/components/palette/palette-color-switch.js.map +1 -1
  166. package/dist/components/palette/palette-hue.js.map +1 -1
  167. package/dist/components/palette/palette-sv.js.map +1 -1
  168. package/dist/components/palette/palette.js.map +1 -1
  169. package/dist/components/palette/use-hsv.js.map +1 -1
  170. package/dist/components/password-input/password-input.js.map +1 -1
  171. package/dist/components/pop-confirm/pop-confirm.js.map +1 -1
  172. package/dist/components/progress/progress.js.map +1 -1
  173. package/dist/components/progress-nodes/progress-nodes.js.map +1 -1
  174. package/dist/components/radio/radio.js.map +1 -1
  175. package/dist/components/radio/style.js +1 -1
  176. package/dist/components/radio-group/radio-group.js.map +1 -1
  177. package/dist/components/rich-text-editor/rich-text-editor.js.map +1 -1
  178. package/dist/components/rich-text-editor/toolbar.js.map +1 -1
  179. package/dist/components/scroll/scroll-bar.js +2 -0
  180. package/dist/components/scroll/scroll-bar.js.map +1 -1
  181. package/dist/components/scroll/scroll.js.map +1 -1
  182. package/dist/components/select/select.js.map +1 -1
  183. package/dist/components/select/use-keyboard.js.map +1 -1
  184. package/dist/components/select/use-options.js.map +1 -1
  185. package/dist/components/slider/slider-thumb.js.map +1 -1
  186. package/dist/components/slider/slider.js +1 -1
  187. package/dist/components/slider/slider.js.map +1 -1
  188. package/dist/components/slider/use-slider.js.map +1 -1
  189. package/dist/components/steps/steps.js.map +1 -1
  190. package/dist/components/switch/switch.js.map +1 -1
  191. package/dist/components/table/di.js.map +1 -1
  192. package/dist/components/table/node/col.js.map +1 -1
  193. package/dist/components/table/node/row.js.map +1 -1
  194. package/dist/components/table/table-body.js.map +1 -1
  195. package/dist/components/table/table-cell.js.map +1 -1
  196. package/dist/components/table/table-foot.js.map +1 -1
  197. package/dist/components/table/table-head.js.map +1 -1
  198. package/dist/components/table/table-row.js.map +1 -1
  199. package/dist/components/table/table.js.map +1 -1
  200. package/dist/components/table/use-check.js.map +1 -1
  201. package/dist/components/table/use-col-resize.js.map +1 -1
  202. package/dist/components/table/use-columns.js.map +1 -1
  203. package/dist/components/table/use-fixed-columns.js.map +1 -1
  204. package/dist/components/table/use-rows.js.map +1 -1
  205. package/dist/components/table/use-table.js.map +1 -1
  206. package/dist/components/table-editor/table-editor.js.map +1 -1
  207. package/dist/components/tabs/style.js +1 -1
  208. package/dist/components/tabs/tabs-horizontal.js.map +1 -1
  209. package/dist/components/tabs/tabs-horizontal.vue.d.ts +3 -3
  210. package/dist/components/tabs/tabs-vertical.js.map +1 -1
  211. package/dist/components/tabs/tabs-vertical.vue.d.ts +2 -2
  212. package/dist/components/tabs/tabs.js.map +1 -1
  213. package/dist/components/tabs/tabs.vue.d.ts +3 -3
  214. package/dist/components/tabs/use-tabs-bar.js.map +1 -1
  215. package/dist/components/tag/tag.js.map +1 -1
  216. package/dist/components/text/text.js.map +1 -1
  217. package/dist/components/textarea/style.js +1 -1
  218. package/dist/components/textarea/textarea.js.map +1 -1
  219. package/dist/components/textarea/textarea.vue.d.ts +3 -3
  220. package/dist/components/textarea/utils.js.map +1 -1
  221. package/dist/components/theme/schema.js.map +1 -1
  222. package/dist/components/theme/theme.js.map +1 -1
  223. package/dist/components/tip/tip.js.map +1 -1
  224. package/dist/components/tip/tip.vue.d.ts +1 -1
  225. package/dist/components/tip/use-nest.js.map +1 -1
  226. package/dist/components/tree/tree-node.js.map +1 -1
  227. package/dist/components/tree/tree-node2.js.map +1 -1
  228. package/dist/components/tree/tree.js.map +1 -1
  229. package/dist/components/tree/use-check.js.map +1 -1
  230. package/dist/components/tree/use-filter.js.map +1 -1
  231. package/dist/components/tree/use-select.js.map +1 -1
  232. package/dist/components/tree/use-tree-nodes.js.map +1 -1
  233. package/dist/components/tree-select/tree-select.js.map +1 -1
  234. package/dist/components/tree-select/tree-select.vue.d.ts +3 -3
  235. package/dist/components/watermark/watermark.js.map +1 -1
  236. package/dist/index.d.ts +4 -3
  237. package/dist/index.js +2 -1
  238. package/dist/install.js.map +1 -1
  239. package/dist/types/batch-edit.d.ts +2 -2
  240. package/dist/types/condition-editor.d.ts +21 -9
  241. package/dist/types/index.d.ts +2 -2
  242. package/package.json +13 -16
  243. package/src/components/action/style.scss +0 -6
  244. package/src/components/auto-complete/style.scss +0 -1
  245. package/src/components/auto-complete/style.ts +1 -1
  246. package/src/components/badge/badge.vue +1 -1
  247. package/src/components/batch-edit/style.ts +1 -1
  248. package/src/components/button/style.scss +1 -1
  249. package/src/components/cascade/use-select.ts +8 -6
  250. package/src/components/checkbox/style.ts +1 -1
  251. package/src/components/collapse/__test__/collapse.test.ts +3 -3
  252. package/src/components/condition-editor/components/condition-group.vue +118 -87
  253. package/src/components/condition-editor/components/condition-row.vue +137 -89
  254. package/src/components/condition-editor/condition-editor.vue +19 -48
  255. package/src/components/condition-editor/core/evaluator.ts +143 -57
  256. package/src/components/condition-editor/index.ts +6 -0
  257. package/src/components/condition-editor/style.scss +189 -102
  258. package/src/components/context-menu/style.ts +1 -1
  259. package/src/components/dialog/style.ts +2 -2
  260. package/src/components/drawer/style.ts +1 -1
  261. package/src/components/dropdown/style.ts +1 -1
  262. package/src/components/expression-editor/style.scss +1 -1
  263. package/src/components/form-item/form-item.vue +4 -9
  264. package/src/components/input/style.ts +1 -1
  265. package/src/components/loading/style.ts +1 -1
  266. package/src/components/menu/style.scss +1 -1
  267. package/src/components/message/style.scss +1 -1
  268. package/src/components/multi-select/style.ts +1 -1
  269. package/src/components/multi-tree-select/style.ts +1 -1
  270. package/src/components/number-input/__test__/number-input.test.ts +1 -1
  271. package/src/components/radio/style.ts +1 -1
  272. package/src/components/slider/slider.vue +1 -1
  273. package/src/components/table/di.ts +1 -1
  274. package/src/components/tabs/style.ts +1 -1
  275. package/src/components/textarea/style.ts +1 -1
  276. package/src/types/batch-edit.ts +2 -2
  277. package/src/types/condition-editor.ts +22 -8
@@ -1,8 +1,19 @@
1
- import { createEmptyGroup, createEmptyItem } from "../core/evaluator.js";
2
- import _sfc_main$1 from "./condition-row.js";
3
- import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, normalizeClass, openBlock, renderList, resolveComponent, toDisplayString, unref } from "vue";
1
+ import _sfc_main$1 from "../../icon/icon.js";
2
+ import { createEmptyGroup, createEmptyLeaf } from "../core/evaluator.js";
3
+ import _sfc_main$2 from "./condition-row.js";
4
+ import { Fragment, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, normalizeClass, openBlock, renderList, resolveComponent, toDisplayString, unref, withCtx, withKeys, withModifiers } from "vue";
4
5
  import { bem } from "@veltra/utils";
6
+ import { Delete, Plus } from "@veltra/icons/normal";
5
7
  //#region src/components/condition-editor/components/condition-group.vue
8
+ const _hoisted_1 = [
9
+ "tabindex",
10
+ "aria-label",
11
+ "onClick",
12
+ "onKeydown"
13
+ ];
14
+ const _hoisted_2 = ["disabled"];
15
+ const _hoisted_3 = ["disabled"];
16
+ const _hoisted_4 = ["disabled"];
6
17
  const _sfc_main = /* @__PURE__ */ defineComponent({
7
18
  name: "ConditionGroup",
8
19
  __name: "condition-group",
@@ -10,6 +21,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
10
21
  group: {},
11
22
  fields: {},
12
23
  size: { default: "default" },
24
+ depth: { default: 0 },
13
25
  disabled: { type: Boolean },
14
26
  readonly: { type: Boolean }
15
27
  },
@@ -22,126 +34,149 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
22
34
  const props = __props;
23
35
  const emit = __emit;
24
36
  const cls = bem("condition-editor");
25
- const hasResult = computed(() => props.group._result !== void 0);
26
- function toggleLogic() {
27
- if (props.disabled || props.readonly) return;
28
- emit("update:group", {
29
- ...props.group,
30
- logic: props.group.logic === "and" ? "or" : "and"
31
- });
37
+ function connectorAt(index) {
38
+ return props.group.connectors[index] ?? "and";
32
39
  }
33
- function addCondition() {
40
+ function emitUpdate(next) {
34
41
  emit("update:group", {
35
42
  ...props.group,
36
- conditions: [...props.group.conditions, createEmptyItem()]
43
+ ...next
37
44
  });
38
45
  }
39
- function removeCondition(idx) {
40
- const conditions = [...props.group.conditions];
41
- conditions.splice(idx, 1);
42
- emit("update:group", {
43
- ...props.group,
44
- conditions
45
- });
46
+ function toggleConnector(index) {
47
+ if (props.disabled || props.readonly) return;
48
+ const next = props.group.connectors.slice();
49
+ next[index] = connectorAt(index) === "and" ? "or" : "and";
50
+ emitUpdate({ connectors: next });
46
51
  }
47
- function updateCondition(idx, item) {
48
- const conditions = [...props.group.conditions];
49
- conditions[idx] = item;
50
- emit("update:group", {
51
- ...props.group,
52
- conditions
53
- });
52
+ function addCondition() {
53
+ appendChild(createEmptyLeaf());
54
54
  }
55
55
  function addGroup() {
56
- emit("update:group", {
57
- ...props.group,
58
- groups: [...props.group.groups, createEmptyGroup()]
56
+ appendChild({
57
+ ...createEmptyGroup(),
58
+ children: [createEmptyLeaf()],
59
+ connectors: []
59
60
  });
60
61
  }
61
- function removeSubGroup(idx) {
62
- const groups = [...props.group.groups];
63
- groups.splice(idx, 1);
64
- emit("update:group", {
65
- ...props.group,
66
- groups
62
+ function appendChild(node) {
63
+ emitUpdate({
64
+ children: [...props.group.children, node],
65
+ connectors: props.group.children.length === 0 ? props.group.connectors : [...props.group.connectors, "and"]
67
66
  });
68
67
  }
69
- function updateSubGroup(idx, g) {
70
- const groups = [...props.group.groups];
71
- groups[idx] = g;
72
- emit("update:group", {
73
- ...props.group,
74
- groups
68
+ function updateChild(index, node) {
69
+ const children = props.group.children.slice();
70
+ children[index] = node;
71
+ emitUpdate({ children });
72
+ }
73
+ function removeChild(index) {
74
+ const children = props.group.children.slice();
75
+ children.splice(index, 1);
76
+ const connectors = props.group.connectors.slice();
77
+ if (index === 0) {
78
+ if (connectors.length > 0) connectors.shift();
79
+ } else connectors.splice(index - 1, 1);
80
+ emitUpdate({
81
+ children,
82
+ connectors
75
83
  });
76
84
  }
77
85
  return (_ctx, _cache) => {
78
86
  const _component_ConditionGroup = resolveComponent("ConditionGroup", true);
79
- return openBlock(), createElementBlock("div", { class: normalizeClass(unref(cls).e("group")) }, [
80
- createCommentVNode(" AND/OR 标签 + 汇总结果 "),
81
- createElementVNode("div", { class: normalizeClass(unref(cls).e("group-header")) }, [createElementVNode("span", {
82
- class: normalizeClass([unref(cls).e("logic-tag"), unref(cls).em("logic-tag", __props.group.logic)]),
83
- onClick: toggleLogic
84
- }, toDisplayString(__props.group.logic.toUpperCase()) + " ▾ ", 3), hasResult.value ? (openBlock(), createElementBlock("span", {
87
+ return openBlock(), createElementBlock("div", { class: normalizeClass([unref(cls).e("group"), __props.depth > 0 ? unref(cls).em("group", "nested") : ""]) }, [
88
+ __props.group.children.length === 0 ? (openBlock(), createElementBlock("div", {
85
89
  key: 0,
86
- class: normalizeClass([unref(cls).e("group-result"), unref(cls).em("group-result", __props.group._result ? "pass" : "fail")])
87
- }, toDisplayString(__props.group._result ? "✓ 通过" : "✗ 不通过"), 3)) : createCommentVNode("v-if", true)], 2),
88
- createCommentVNode(" 嵌套组容器 "),
89
- createElementVNode("div", { class: normalizeClass(unref(cls).e("group-body")) }, [
90
- createCommentVNode(" 子条件 "),
91
- (openBlock(true), createElementBlock(Fragment, null, renderList(__props.group.conditions, (cond, idx) => {
92
- return openBlock(), createBlock(_sfc_main$1, {
93
- key: idx,
94
- item: cond,
95
- fields: __props.fields,
96
- size: __props.size,
97
- disabled: __props.disabled,
98
- readonly: __props.readonly,
99
- "onUpdate:item": (item) => updateCondition(idx, item),
100
- onDelete: ($event) => removeCondition(idx),
101
- onMention: _cache[0] || (_cache[0] = (p) => emit("mention", p))
102
- }, null, 8, [
103
- "item",
104
- "fields",
105
- "size",
106
- "disabled",
107
- "readonly",
108
- "onUpdate:item",
109
- "onDelete"
110
- ]);
111
- }), 128)),
112
- createCommentVNode(" 子分组(递归) "),
113
- (openBlock(true), createElementBlock(Fragment, null, renderList(__props.group.groups, (sub, idx) => {
114
- return openBlock(), createBlock(_component_ConditionGroup, {
115
- key: idx,
116
- group: sub,
117
- fields: __props.fields,
118
- size: __props.size,
119
- disabled: __props.disabled,
120
- readonly: __props.readonly,
121
- "onUpdate:group": (g) => updateSubGroup(idx, g),
122
- onRemove: () => removeSubGroup(idx),
123
- onMention: _cache[1] || (_cache[1] = (p) => emit("mention", p))
124
- }, null, 8, [
125
- "group",
126
- "fields",
127
- "size",
128
- "disabled",
129
- "readonly",
130
- "onUpdate:group",
131
- "onRemove"
132
- ]);
133
- }), 128)),
134
- createCommentVNode(" 空状态 + 添加按钮 "),
135
- createElementVNode("div", { class: normalizeClass(unref(cls).e("group-actions")) }, [!__props.readonly ? (openBlock(), createElementBlock("span", {
90
+ class: normalizeClass(unref(cls).e("group-empty"))
91
+ }, [createElementVNode("span", { class: normalizeClass(unref(cls).e("group-empty-tip")) }, "暂无条件", 2)], 2)) : createCommentVNode("v-if", true),
92
+ createElementVNode("ul", { class: normalizeClass(unref(cls).e("group-list")) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.group.children, (child, idx) => {
93
+ return openBlock(), createElementBlock("li", {
94
+ key: idx,
95
+ class: normalizeClass(unref(cls).e("group-item"))
96
+ }, [idx > 0 ? (openBlock(), createElementBlock("span", {
136
97
  key: 0,
137
- class: normalizeClass(unref(cls).e("add-btn")),
138
- onClick: addCondition
139
- }, "+ 添加条件", 2)) : createCommentVNode("v-if", true), !__props.readonly ? (openBlock(), createElementBlock("span", {
98
+ class: normalizeClass([unref(cls).e("connector"), unref(cls).em("connector", connectorAt(idx - 1))]),
99
+ tabindex: __props.readonly || __props.disabled ? -1 : 0,
100
+ role: "button",
101
+ "aria-label": `切换连接符(当前 ${connectorAt(idx - 1).toUpperCase()})`,
102
+ onClick: ($event) => toggleConnector(idx - 1),
103
+ onKeydown: [withKeys(withModifiers(($event) => toggleConnector(idx - 1), ["prevent"]), ["enter"]), withKeys(withModifiers(($event) => toggleConnector(idx - 1), ["prevent"]), ["space"])]
104
+ }, toDisplayString(connectorAt(idx - 1).toUpperCase()), 43, _hoisted_1)) : (openBlock(), createElementBlock("span", {
105
+ key: 1,
106
+ class: normalizeClass(unref(cls).e("connector-placeholder"))
107
+ }, "WHERE", 2)), createElementVNode("div", { class: normalizeClass(unref(cls).e("group-item-body")) }, [child.type === "condition" ? (openBlock(), createBlock(_sfc_main$2, {
108
+ key: 0,
109
+ item: child,
110
+ fields: __props.fields,
111
+ size: __props.size,
112
+ disabled: __props.disabled,
113
+ readonly: __props.readonly,
114
+ "onUpdate:item": (it) => updateChild(idx, it),
115
+ onDelete: ($event) => removeChild(idx),
116
+ onMention: _cache[0] || (_cache[0] = (p) => emit("mention", p))
117
+ }, null, 8, [
118
+ "item",
119
+ "fields",
120
+ "size",
121
+ "disabled",
122
+ "readonly",
123
+ "onUpdate:item",
124
+ "onDelete"
125
+ ])) : (openBlock(), createBlock(_component_ConditionGroup, {
140
126
  key: 1,
141
- class: normalizeClass(unref(cls).e("add-btn")),
127
+ group: child,
128
+ fields: __props.fields,
129
+ size: __props.size,
130
+ depth: __props.depth + 1,
131
+ disabled: __props.disabled,
132
+ readonly: __props.readonly,
133
+ "onUpdate:group": (g) => updateChild(idx, g),
134
+ onRemove: ($event) => removeChild(idx),
135
+ onMention: _cache[1] || (_cache[1] = (p) => emit("mention", p))
136
+ }, null, 8, [
137
+ "group",
138
+ "fields",
139
+ "size",
140
+ "depth",
141
+ "disabled",
142
+ "readonly",
143
+ "onUpdate:group",
144
+ "onRemove"
145
+ ]))], 2)], 2);
146
+ }), 128))], 2),
147
+ !__props.readonly ? (openBlock(), createElementBlock("div", {
148
+ key: 1,
149
+ class: normalizeClass(unref(cls).e("group-actions"))
150
+ }, [
151
+ createElementVNode("button", {
152
+ type: "button",
153
+ class: normalizeClass(unref(cls).e("action-btn")),
154
+ disabled: __props.disabled,
155
+ onClick: addCondition
156
+ }, [createVNode(unref(_sfc_main$1), null, {
157
+ default: withCtx(() => [createVNode(unref(Plus))]),
158
+ _: 1
159
+ }), _cache[3] || (_cache[3] = createElementVNode("span", null, "添加条件", -1))], 10, _hoisted_2),
160
+ createElementVNode("button", {
161
+ type: "button",
162
+ class: normalizeClass(unref(cls).e("action-btn")),
163
+ disabled: __props.disabled,
142
164
  onClick: addGroup
143
- }, "+ 添加条件组", 2)) : createCommentVNode("v-if", true)], 2)
144
- ], 2)
165
+ }, [createVNode(unref(_sfc_main$1), null, {
166
+ default: withCtx(() => [createVNode(unref(Plus))]),
167
+ _: 1
168
+ }), _cache[4] || (_cache[4] = createElementVNode("span", null, "添加条件组", -1))], 10, _hoisted_3),
169
+ __props.depth > 0 ? (openBlock(), createElementBlock("button", {
170
+ key: 0,
171
+ type: "button",
172
+ class: normalizeClass([unref(cls).e("action-btn"), unref(cls).em("action-btn", "danger")]),
173
+ disabled: __props.disabled,
174
+ onClick: _cache[2] || (_cache[2] = ($event) => emit("remove"))
175
+ }, [createVNode(unref(_sfc_main$1), null, {
176
+ default: withCtx(() => [createVNode(unref(Delete))]),
177
+ _: 1
178
+ }), _cache[5] || (_cache[5] = createElementVNode("span", null, "删除组", -1))], 10, _hoisted_4)) : createCommentVNode("v-if", true)
179
+ ], 2)) : createCommentVNode("v-if", true)
145
180
  ], 2);
146
181
  };
147
182
  }
@@ -1 +1 @@
1
- {"version":3,"file":"condition-group.js","names":[],"sources":["../../../../src/components/condition-editor/components/condition-group.vue"],"sourcesContent":["<template>\n <div :class=\"cls.e('group')\">\n <!-- AND/OR 标签 + 汇总结果 -->\n <div :class=\"cls.e('group-header')\">\n <span :class=\"[cls.e('logic-tag'), cls.em('logic-tag', group.logic)]\" @click=\"toggleLogic\">\n {{ group.logic.toUpperCase() }} ▾\n </span>\n <span\n v-if=\"hasResult\"\n :class=\"[cls.e('group-result'), cls.em('group-result', group._result ? 'pass' : 'fail')]\"\n >\n {{ group._result ? '✓ 通过' : '✗ 不通过' }}\n </span>\n </div>\n\n <!-- 嵌套组容器 -->\n <div :class=\"cls.e('group-body')\">\n <!-- 子条件 -->\n <ConditionRow\n v-for=\"(cond, idx) in group.conditions\"\n :key=\"idx\"\n :item=\"cond\"\n :fields=\"fields\"\n :size=\"size\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n @update:item=\"(item) => updateCondition(idx, item)\"\n @delete=\"removeCondition(idx)\"\n @mention=\"(p) => emit('mention', p)\"\n />\n\n <!-- 子分组(递归) -->\n <ConditionGroup\n v-for=\"(sub, idx) in group.groups\"\n :key=\"idx\"\n :group=\"sub\"\n :fields=\"fields\"\n :size=\"size\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n @update:group=\"(g) => updateSubGroup(idx, g)\"\n @remove=\"() => removeSubGroup(idx)\"\n @mention=\"(p) => emit('mention', p)\"\n />\n\n <!-- 空状态 + 添加按钮 -->\n <div :class=\"cls.e('group-actions')\">\n <span v-if=\"!readonly\" :class=\"cls.e('add-btn')\" @click=\"addCondition\">+ 添加条件</span>\n <span v-if=\"!readonly\" :class=\"cls.e('add-btn')\" @click=\"addGroup\">+ 添加条件组</span>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { ConditionField, ConditionGroup, ConditionItem } from '../../../types'\nimport { createEmptyGroup, createEmptyItem } from '../core/evaluator'\nimport ConditionRow, { type MentionPayload } from './condition-row.vue'\n\ndefineOptions({ name: 'ConditionGroup' })\n\nconst props = withDefaults(\n defineProps<{\n group: ConditionGroup\n fields?: ConditionField[]\n size?: 'small' | 'default' | 'large'\n disabled?: boolean\n readonly?: boolean\n }>(),\n { size: 'default' }\n)\n\nconst emit = defineEmits<{\n (e: 'update:group', group: ConditionGroup): void\n (e: 'remove'): void\n (e: 'mention', payload: MentionPayload): void\n}>()\n\nconst cls = bem('condition-editor')\n\nconst hasResult = computed(() => props.group._result !== undefined)\n\nfunction toggleLogic() {\n if (props.disabled || props.readonly) return\n emit('update:group', {\n ...props.group,\n logic: props.group.logic === 'and' ? 'or' : 'and'\n })\n}\n\nfunction addCondition() {\n emit('update:group', {\n ...props.group,\n conditions: [...props.group.conditions, createEmptyItem()]\n })\n}\n\nfunction removeCondition(idx: number) {\n const conditions = [...props.group.conditions]\n conditions.splice(idx, 1)\n emit('update:group', { ...props.group, conditions })\n}\n\nfunction updateCondition(idx: number, item: ConditionItem) {\n const conditions = [...props.group.conditions]\n conditions[idx] = item\n emit('update:group', { ...props.group, conditions })\n}\n\nfunction addGroup() {\n emit('update:group', {\n ...props.group,\n groups: [...props.group.groups, createEmptyGroup()]\n })\n}\n\nfunction removeSubGroup(idx: number) {\n const groups = [...props.group.groups]\n groups.splice(idx, 1)\n emit('update:group', { ...props.group, groups })\n}\n\nfunction updateSubGroup(idx: number, g: ConditionGroup) {\n const groups = [...props.group.groups]\n groups[idx] = g\n emit('update:group', { ...props.group, groups })\n}\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"condition-group.js","names":[],"sources":["../../../../src/components/condition-editor/components/condition-group.vue"],"sourcesContent":["<template>\n <div :class=\"[cls.e('group'), depth > 0 ? cls.em('group', 'nested') : '']\">\n <template v-if=\"group.children.length === 0\">\n <div :class=\"cls.e('group-empty')\">\n <span :class=\"cls.e('group-empty-tip')\">暂无条件</span>\n </div>\n </template>\n\n <ul :class=\"cls.e('group-list')\">\n <li v-for=\"(child, idx) in group.children\" :key=\"idx\" :class=\"cls.e('group-item')\">\n <span\n v-if=\"idx > 0\"\n :class=\"[cls.e('connector'), cls.em('connector', connectorAt(idx - 1))]\"\n :tabindex=\"readonly || disabled ? -1 : 0\"\n role=\"button\"\n :aria-label=\"`切换连接符(当前 ${connectorAt(idx - 1).toUpperCase()})`\"\n @click=\"toggleConnector(idx - 1)\"\n @keydown.enter.prevent=\"toggleConnector(idx - 1)\"\n @keydown.space.prevent=\"toggleConnector(idx - 1)\"\n >{{ connectorAt(idx - 1).toUpperCase() }}</span\n >\n <span v-else :class=\"cls.e('connector-placeholder')\">WHERE</span>\n\n <div :class=\"cls.e('group-item-body')\">\n <ConditionRow\n v-if=\"child.type === 'condition'\"\n :item=\"child\"\n :fields=\"fields\"\n :size=\"size\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n @update:item=\"(it) => updateChild(idx, it)\"\n @delete=\"removeChild(idx)\"\n @mention=\"(p) => emit('mention', p)\"\n />\n <ConditionGroup\n v-else\n :group=\"child\"\n :fields=\"fields\"\n :size=\"size\"\n :depth=\"depth + 1\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n @update:group=\"(g) => updateChild(idx, g)\"\n @remove=\"removeChild(idx)\"\n @mention=\"(p) => emit('mention', p)\"\n />\n </div>\n </li>\n </ul>\n\n <div v-if=\"!readonly\" :class=\"cls.e('group-actions')\">\n <button type=\"button\" :class=\"cls.e('action-btn')\" :disabled=\"disabled\" @click=\"addCondition\">\n <u-icon><Plus /></u-icon>\n <span>添加条件</span>\n </button>\n <button type=\"button\" :class=\"cls.e('action-btn')\" :disabled=\"disabled\" @click=\"addGroup\">\n <u-icon><Plus /></u-icon>\n <span>添加条件组</span>\n </button>\n <button\n v-if=\"depth > 0\"\n type=\"button\"\n :class=\"[cls.e('action-btn'), cls.em('action-btn', 'danger')]\"\n :disabled=\"disabled\"\n @click=\"emit('remove')\"\n >\n <u-icon><Delete /></u-icon>\n <span>删除组</span>\n </button>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Delete, Plus } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\n\nimport type {\n ConditionConnector,\n ConditionField,\n ConditionGroup as ConditionGroupNode,\n ConditionNode\n} from '../../../types'\nimport { UIcon } from '../../icon'\nimport { createEmptyGroup, createEmptyLeaf } from '../core/evaluator'\nimport ConditionRow, { type MentionPayload } from './condition-row.vue'\n\ndefineOptions({ name: 'ConditionGroup' })\n\nconst props = withDefaults(\n defineProps<{\n group: ConditionGroupNode\n fields?: ConditionField[]\n size?: 'small' | 'default' | 'large'\n depth?: number\n disabled?: boolean\n readonly?: boolean\n }>(),\n { size: 'default', depth: 0 }\n)\n\nconst emit = defineEmits<{\n (e: 'update:group', group: ConditionGroupNode): void\n (e: 'remove'): void\n (e: 'mention', payload: MentionPayload): void\n}>()\n\nconst cls = bem('condition-editor')\n\nfunction connectorAt(index: number): ConditionConnector {\n return props.group.connectors[index] ?? 'and'\n}\n\nfunction emitUpdate(next: Partial<ConditionGroupNode>) {\n emit('update:group', { ...props.group, ...next })\n}\n\nfunction toggleConnector(index: number) {\n if (props.disabled || props.readonly) return\n const next = props.group.connectors.slice()\n next[index] = connectorAt(index) === 'and' ? 'or' : 'and'\n emitUpdate({ connectors: next })\n}\n\nfunction addCondition() {\n appendChild(createEmptyLeaf())\n}\n\nfunction addGroup() {\n appendChild({ ...createEmptyGroup(), children: [createEmptyLeaf()], connectors: [] })\n}\n\nfunction appendChild(node: ConditionNode) {\n const children = [...props.group.children, node]\n const connectors =\n props.group.children.length === 0\n ? props.group.connectors\n : [...props.group.connectors, 'and' as const]\n emitUpdate({ children, connectors })\n}\n\nfunction updateChild(index: number, node: ConditionNode) {\n const children = props.group.children.slice()\n children[index] = node\n emitUpdate({ children })\n}\n\nfunction removeChild(index: number) {\n const children = props.group.children.slice()\n children.splice(index, 1)\n const connectors = props.group.connectors.slice()\n // 移除第 index 项时,连接到该项的连接符也要移除\n // connectors[i] 位于 children[i] 与 children[i+1] 之间\n if (index === 0) {\n if (connectors.length > 0) connectors.shift()\n } else {\n connectors.splice(index - 1, 1)\n }\n emitUpdate({ children, connectors })\n}\n</script>\n"],"mappings":"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"}