@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.
- package/dist/components/action/action-group.vue.d.ts +1 -1
- package/dist/components/action/action-group.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/action/action.js.map +1 -1
- package/dist/components/action/action.vue.d.ts +1 -1
- package/dist/components/action/style2.css +0 -4
- package/dist/components/auto-complete/auto-complete.js.map +1 -1
- package/dist/components/auto-complete/style.js +1 -1
- package/dist/components/auto-complete/use-keyboard.js.map +1 -1
- package/dist/components/auto-complete/use-suggestions.js.map +1 -1
- package/dist/components/badge/badge.js +1 -1
- package/dist/components/badge/badge.js.map +1 -1
- package/dist/components/batch-edit/batch-edit-form.js.map +1 -1
- package/dist/components/batch-edit/batch-edit-list.js.map +1 -1
- package/dist/components/batch-edit/batch-edit.js.map +1 -1
- package/dist/components/batch-edit/helper.js.map +1 -1
- package/dist/components/batch-edit/style.js +1 -1
- package/dist/components/batch-edit/use-edit.js.map +1 -1
- package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
- package/dist/components/button/button-group.js.map +1 -1
- package/dist/components/button/button.js.map +1 -1
- package/dist/components/calendar/calendar.js.map +1 -1
- package/dist/components/calendar/utils.js.map +1 -1
- package/dist/components/card/card-action.js.map +1 -1
- package/dist/components/card/card-content.js.map +1 -1
- package/dist/components/card/card-cover.js.map +1 -1
- package/dist/components/card/card-header.js.map +1 -1
- package/dist/components/card/card.js.map +1 -1
- package/dist/components/cascade/cascade-panel-item.js.map +1 -1
- package/dist/components/cascade/cascade.js.map +1 -1
- package/dist/components/cascade/cascade.vue.d.ts +3 -3
- package/dist/components/cascade/node.js.map +1 -1
- package/dist/components/cascade/use-check.js.map +1 -1
- package/dist/components/cascade/use-data-map.js.map +1 -1
- package/dist/components/cascade/use-select.js +1 -1
- package/dist/components/cascade/use-select.js.map +1 -1
- package/dist/components/check-tag/check-tag.js.map +1 -1
- package/dist/components/checkbox/checkbox-button.js.map +1 -1
- package/dist/components/checkbox/checkbox.js.map +1 -1
- package/dist/components/checkbox/style.js +1 -1
- package/dist/components/checkbox-group/checkbox-group.js.map +1 -1
- package/dist/components/code-editor/code-editor.js.map +1 -1
- package/dist/components/collapse/collapse-item.js.map +1 -1
- package/dist/components/collapse/collapse.js.map +1 -1
- package/dist/components/condition-editor/components/condition-group.js +138 -103
- package/dist/components/condition-editor/components/condition-group.js.map +1 -1
- package/dist/components/condition-editor/components/condition-row.js +146 -95
- package/dist/components/condition-editor/components/condition-row.js.map +1 -1
- package/dist/components/condition-editor/condition-editor.js +18 -40
- package/dist/components/condition-editor/condition-editor.js.map +1 -1
- package/dist/components/condition-editor/condition-editor.vue.d.ts +0 -2
- package/dist/components/condition-editor/core/evaluator.d.ts +22 -0
- package/dist/components/condition-editor/core/evaluator.js +111 -50
- package/dist/components/condition-editor/core/evaluator.js.map +1 -1
- package/dist/components/condition-editor/core/operators.js.map +1 -1
- package/dist/components/condition-editor/index.d.ts +2 -1
- package/dist/components/condition-editor/style2.css +159 -82
- package/dist/components/context-menu/api.js.map +1 -1
- package/dist/components/context-menu/context-menu-item.js.map +1 -1
- package/dist/components/context-menu/context-menu.js.map +1 -1
- package/dist/components/context-menu/style.js +1 -1
- package/dist/components/date-panel/date-panel.js.map +1 -1
- package/dist/components/date-panel/headers/day.js.map +1 -1
- package/dist/components/date-panel/headers/month.js.map +1 -1
- package/dist/components/date-panel/headers/year.js.map +1 -1
- package/dist/components/date-panel/panels/day.js.map +1 -1
- package/dist/components/date-panel/panels/month.js.map +1 -1
- package/dist/components/date-panel/panels/year.js.map +1 -1
- package/dist/components/date-panel/use-date-select.js.map +1 -1
- package/dist/components/date-panel/use-panel-date.js.map +1 -1
- package/dist/components/date-panel/use-panel.js.map +1 -1
- package/dist/components/date-picker/date-picker.js.map +1 -1
- package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
- package/dist/components/dialog/dialog.js.map +1 -1
- package/dist/components/dialog/style.js +2 -2
- package/dist/components/dialog/use-maximum.js.map +1 -1
- package/dist/components/drawer/drawer.js.map +1 -1
- package/dist/components/drawer/style.js +1 -1
- package/dist/components/dropdown/dropdown.js +1 -0
- package/dist/components/dropdown/dropdown.js.map +1 -1
- package/dist/components/dropdown/style.js +1 -1
- package/dist/components/empty/empty.js.map +1 -1
- package/dist/components/expression-editor/components/path-preview.js.map +1 -1
- package/dist/components/expression-editor/components/variable-picker.js.map +1 -1
- package/dist/components/expression-editor/core/chip.js.map +1 -1
- package/dist/components/expression-editor/core/editor.js.map +1 -1
- package/dist/components/expression-editor/core/mention.js.map +1 -1
- package/dist/components/expression-editor/core/model.js.map +1 -1
- package/dist/components/expression-editor/di.js.map +1 -1
- package/dist/components/expression-editor/expression-editor.js.map +1 -1
- package/dist/components/file-picker/file-picker.js.map +1 -1
- package/dist/components/file-picker/helper.js.map +1 -1
- package/dist/components/file-viewer/file-viewer.js.map +1 -1
- package/dist/components/file-viewer/helper.js.map +1 -1
- package/dist/components/file-viewer/previewers/docx-previewer.js.map +1 -1
- package/dist/components/file-viewer/previewers/image-previewer.js.map +1 -1
- package/dist/components/file-viewer/previewers/pdf-previewer.js.map +1 -1
- package/dist/components/file-viewer/previewers/pdf-viewport-scroll.js.map +1 -1
- package/dist/components/file-viewer/previewers/pdf-zoom-bridge.js.map +1 -1
- package/dist/components/file-viewer/previewers/sheet-previewer.js.map +1 -1
- package/dist/components/file-viewer/previewers/text-previewer.js.map +1 -1
- package/dist/components/file-viewer/previewers/video-previewer.js.map +1 -1
- package/dist/components/float-button/float-button.js.map +1 -1
- package/dist/components/form/dynamic-form-model.js.map +1 -1
- package/dist/components/form/form-model.js.map +1 -1
- package/dist/components/form/form.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/form/helper.js.map +1 -1
- package/dist/components/form/use-node-interceptor.js.map +1 -1
- package/dist/components/form-item/form-item.js.map +1 -1
- package/dist/components/form-item/form-item.vue_vue_type_script_setup_true_lang.js +2 -1
- package/dist/components/form-item/form-item.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/gantt-chart/gantt-chart.js.map +1 -1
- package/dist/components/grid/breakpoint.js.map +1 -1
- package/dist/components/grid/grid-item.js.map +1 -1
- package/dist/components/grid/grid.js.map +1 -1
- package/dist/components/grid/use-responsive.js.map +1 -1
- package/dist/components/grid-input/grid-input.js.map +1 -1
- package/dist/components/group-input/group-input.js.map +1 -1
- package/dist/components/group-input/use-group-items.js.map +1 -1
- package/dist/components/icon/icon.js.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +4 -0
- package/dist/components/input/input.vue.d.ts +2 -2
- package/dist/components/input/input.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/input/style.js +1 -1
- package/dist/components/kbd/kbd.js.map +1 -1
- package/dist/components/layout/layout-resizer.js.map +1 -1
- package/dist/components/layout/layout.js.map +1 -1
- package/dist/components/list/list-item.js.map +1 -1
- package/dist/components/list/list.js.map +1 -1
- package/dist/components/loading/directive.js.map +1 -1
- package/dist/components/loading/loading.js.map +1 -1
- package/dist/components/loading/style.js +1 -1
- package/dist/components/menu/helper.js.map +1 -1
- package/dist/components/menu/menu-item-collapsed.js.map +1 -1
- package/dist/components/menu/menu-item.js.map +1 -1
- package/dist/components/menu/menu-sub-collapsed.js.map +1 -1
- package/dist/components/menu/menu-sub.js.map +1 -1
- package/dist/components/menu/menu.js.map +1 -1
- package/dist/components/menu/use-menu-item.js.map +1 -1
- package/dist/components/menu/walk-menu-path.js.map +1 -1
- package/dist/components/message/helper.js.map +1 -1
- package/dist/components/message/message-box.js.map +1 -1
- package/dist/components/message/message.js.map +1 -1
- package/dist/components/message/message2.js.map +1 -1
- package/dist/components/message-confirm/message-confirm.js.map +1 -1
- package/dist/components/message-confirm/message-confirm2.js.map +1 -1
- package/dist/components/multi-select/multi-select-option.js.map +1 -1
- package/dist/components/multi-select/multi-select.js.map +1 -1
- package/dist/components/multi-select/multi-select.vue.d.ts +1 -1
- package/dist/components/multi-select/style.js +1 -1
- package/dist/components/multi-tree-select/multi-tree-select.js.map +1 -1
- package/dist/components/multi-tree-select/multi-tree-select.vue.d.ts +3 -3
- package/dist/components/multi-tree-select/style.js +1 -1
- package/dist/components/node-render/node-render.js.map +1 -1
- package/dist/components/notification/index.js.map +1 -1
- package/dist/components/notification/notification.js.map +1 -1
- package/dist/components/notification/notification.vue.d.ts +1 -1
- package/dist/components/number/number.js.map +1 -1
- package/dist/components/number-input/number-input.js.map +1 -1
- package/dist/components/number-input/number-input.vue.d.ts +2 -2
- package/dist/components/number-range-input/number-range-input.js.map +1 -1
- package/dist/components/paginator/paginator.js.map +1 -1
- package/dist/components/palette/color-transform.js.map +1 -1
- package/dist/components/palette/palette-alpha.js.map +1 -1
- package/dist/components/palette/palette-color-switch.js.map +1 -1
- package/dist/components/palette/palette-hue.js.map +1 -1
- package/dist/components/palette/palette-sv.js.map +1 -1
- package/dist/components/palette/palette.js.map +1 -1
- package/dist/components/palette/use-hsv.js.map +1 -1
- package/dist/components/password-input/password-input.js.map +1 -1
- package/dist/components/pop-confirm/pop-confirm.js.map +1 -1
- package/dist/components/progress/progress.js.map +1 -1
- package/dist/components/progress-nodes/progress-nodes.js.map +1 -1
- package/dist/components/radio/radio.js.map +1 -1
- package/dist/components/radio/style.js +1 -1
- package/dist/components/radio-group/radio-group.js.map +1 -1
- package/dist/components/rich-text-editor/rich-text-editor.js.map +1 -1
- package/dist/components/rich-text-editor/toolbar.js.map +1 -1
- package/dist/components/scroll/scroll-bar.js +2 -0
- package/dist/components/scroll/scroll-bar.js.map +1 -1
- package/dist/components/scroll/scroll.js.map +1 -1
- package/dist/components/select/select.js.map +1 -1
- package/dist/components/select/use-keyboard.js.map +1 -1
- package/dist/components/select/use-options.js.map +1 -1
- package/dist/components/slider/slider-thumb.js.map +1 -1
- package/dist/components/slider/slider.js +1 -1
- package/dist/components/slider/slider.js.map +1 -1
- package/dist/components/slider/use-slider.js.map +1 -1
- package/dist/components/steps/steps.js.map +1 -1
- package/dist/components/switch/switch.js.map +1 -1
- package/dist/components/table/di.js.map +1 -1
- package/dist/components/table/node/col.js.map +1 -1
- package/dist/components/table/node/row.js.map +1 -1
- package/dist/components/table/table-body.js.map +1 -1
- package/dist/components/table/table-cell.js.map +1 -1
- package/dist/components/table/table-foot.js.map +1 -1
- package/dist/components/table/table-head.js.map +1 -1
- package/dist/components/table/table-row.js.map +1 -1
- package/dist/components/table/table.js.map +1 -1
- package/dist/components/table/use-check.js.map +1 -1
- package/dist/components/table/use-col-resize.js.map +1 -1
- package/dist/components/table/use-columns.js.map +1 -1
- package/dist/components/table/use-fixed-columns.js.map +1 -1
- package/dist/components/table/use-rows.js.map +1 -1
- package/dist/components/table/use-table.js.map +1 -1
- package/dist/components/table-editor/table-editor.js.map +1 -1
- package/dist/components/tabs/style.js +1 -1
- package/dist/components/tabs/tabs-horizontal.js.map +1 -1
- package/dist/components/tabs/tabs-horizontal.vue.d.ts +3 -3
- package/dist/components/tabs/tabs-vertical.js.map +1 -1
- package/dist/components/tabs/tabs-vertical.vue.d.ts +2 -2
- package/dist/components/tabs/tabs.js.map +1 -1
- package/dist/components/tabs/tabs.vue.d.ts +3 -3
- package/dist/components/tabs/use-tabs-bar.js.map +1 -1
- package/dist/components/tag/tag.js.map +1 -1
- package/dist/components/text/text.js.map +1 -1
- package/dist/components/textarea/style.js +1 -1
- package/dist/components/textarea/textarea.js.map +1 -1
- package/dist/components/textarea/textarea.vue.d.ts +3 -3
- package/dist/components/textarea/utils.js.map +1 -1
- package/dist/components/theme/schema.js.map +1 -1
- package/dist/components/theme/theme.js.map +1 -1
- package/dist/components/tip/tip.js.map +1 -1
- package/dist/components/tip/tip.vue.d.ts +1 -1
- package/dist/components/tip/use-nest.js.map +1 -1
- package/dist/components/tree/tree-node.js.map +1 -1
- package/dist/components/tree/tree-node2.js.map +1 -1
- package/dist/components/tree/tree.js.map +1 -1
- package/dist/components/tree/use-check.js.map +1 -1
- package/dist/components/tree/use-filter.js.map +1 -1
- package/dist/components/tree/use-select.js.map +1 -1
- package/dist/components/tree/use-tree-nodes.js.map +1 -1
- package/dist/components/tree-select/tree-select.js.map +1 -1
- package/dist/components/tree-select/tree-select.vue.d.ts +3 -3
- package/dist/components/watermark/watermark.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.js +2 -1
- package/dist/install.js.map +1 -1
- package/dist/types/batch-edit.d.ts +2 -2
- package/dist/types/condition-editor.d.ts +21 -9
- package/dist/types/index.d.ts +2 -2
- package/package.json +13 -16
- package/src/components/action/style.scss +0 -6
- package/src/components/auto-complete/style.scss +0 -1
- package/src/components/auto-complete/style.ts +1 -1
- package/src/components/badge/badge.vue +1 -1
- package/src/components/batch-edit/style.ts +1 -1
- package/src/components/button/style.scss +1 -1
- package/src/components/cascade/use-select.ts +8 -6
- package/src/components/checkbox/style.ts +1 -1
- package/src/components/collapse/__test__/collapse.test.ts +3 -3
- package/src/components/condition-editor/components/condition-group.vue +118 -87
- package/src/components/condition-editor/components/condition-row.vue +137 -89
- package/src/components/condition-editor/condition-editor.vue +19 -48
- package/src/components/condition-editor/core/evaluator.ts +143 -57
- package/src/components/condition-editor/index.ts +6 -0
- package/src/components/condition-editor/style.scss +189 -102
- package/src/components/context-menu/style.ts +1 -1
- package/src/components/dialog/style.ts +2 -2
- package/src/components/drawer/style.ts +1 -1
- package/src/components/dropdown/style.ts +1 -1
- package/src/components/expression-editor/style.scss +1 -1
- package/src/components/form-item/form-item.vue +4 -9
- package/src/components/input/style.ts +1 -1
- package/src/components/loading/style.ts +1 -1
- package/src/components/menu/style.scss +1 -1
- package/src/components/message/style.scss +1 -1
- package/src/components/multi-select/style.ts +1 -1
- package/src/components/multi-tree-select/style.ts +1 -1
- package/src/components/number-input/__test__/number-input.test.ts +1 -1
- package/src/components/radio/style.ts +1 -1
- package/src/components/slider/slider.vue +1 -1
- package/src/components/table/di.ts +1 -1
- package/src/components/tabs/style.ts +1 -1
- package/src/components/textarea/style.ts +1 -1
- package/src/types/batch-edit.ts +2 -2
- package/src/types/condition-editor.ts +22 -8
|
@@ -1,8 +1,19 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
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
|
-
|
|
26
|
-
|
|
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
|
|
40
|
+
function emitUpdate(next) {
|
|
34
41
|
emit("update:group", {
|
|
35
42
|
...props.group,
|
|
36
|
-
|
|
43
|
+
...next
|
|
37
44
|
});
|
|
38
45
|
}
|
|
39
|
-
function
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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
|
|
48
|
-
|
|
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
|
-
|
|
57
|
-
...
|
|
58
|
-
|
|
56
|
+
appendChild({
|
|
57
|
+
...createEmptyGroup(),
|
|
58
|
+
children: [createEmptyLeaf()],
|
|
59
|
+
connectors: []
|
|
59
60
|
});
|
|
60
61
|
}
|
|
61
|
-
function
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
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
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
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
|
-
|
|
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(
|
|
87
|
-
},
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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("
|
|
138
|
-
|
|
139
|
-
|
|
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
|
-
|
|
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
|
-
},
|
|
144
|
-
|
|
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
|
|
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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"}
|