@veltra/desktop 1.1.15 → 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 +2 -2
- 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 +2 -2
- 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 +6 -6
- 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-button.vue.d.ts +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/date-panel.vue.d.ts +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-picker/date-picker.vue.d.ts +1 -1
- package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
- package/dist/components/date-range-picker/date-range-picker.vue.d.ts +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 +2 -2
- 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 +5 -5
- 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/pop-confirm/pop-confirm.vue.d.ts +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/select.vue.d.ts +2 -2
- 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/steps/steps.vue.d.ts +3 -3
- 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 +1 -1
- package/dist/components/tabs/tabs-vertical.js.map +1 -1
- package/dist/components/tabs/tabs.js.map +1 -1
- package/dist/components/tabs/tabs.vue.d.ts +1 -1
- 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 +2 -2
- 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/tree.vue.d.ts +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 +5 -5
- 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,98 +1,188 @@
|
|
|
1
1
|
@use 'pkg:@veltra/styles/mixins' as m;
|
|
2
2
|
@use 'pkg:@veltra/styles/functions' as fn;
|
|
3
|
-
@use 'pkg:@veltra/styles/vars';
|
|
4
3
|
|
|
5
4
|
$root-name: condition-editor;
|
|
5
|
+
$connector-width: 56px;
|
|
6
6
|
|
|
7
7
|
@include m.b($root-name) {
|
|
8
|
-
|
|
8
|
+
font-size: 13px;
|
|
9
|
+
color: fn.use-var(text-color, main);
|
|
10
|
+
|
|
11
|
+
// ─── 分组(根 / 嵌套) ─────────────────────────────
|
|
9
12
|
@include m.e(group) {
|
|
10
|
-
|
|
13
|
+
position: relative;
|
|
14
|
+
background-color: fn.use-var(bg-color, top);
|
|
15
|
+
border: 1px solid fn.use-var(border, muted-color);
|
|
16
|
+
border-radius: fn.use-var(radius, default);
|
|
17
|
+
padding: 12px;
|
|
18
|
+
|
|
19
|
+
@include m.m(nested) {
|
|
20
|
+
background-color: fn.use-var(bg-color, middle);
|
|
21
|
+
border-left: 3px solid fn.use-var(color, primary, light-7);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
& + & {
|
|
25
|
+
margin-top: 8px;
|
|
26
|
+
}
|
|
11
27
|
}
|
|
12
28
|
|
|
13
|
-
@include m.e(group-
|
|
29
|
+
@include m.e(group-list) {
|
|
30
|
+
list-style: none;
|
|
31
|
+
margin: 0;
|
|
32
|
+
padding: 0;
|
|
14
33
|
display: flex;
|
|
15
|
-
|
|
34
|
+
flex-direction: column;
|
|
16
35
|
gap: 6px;
|
|
17
|
-
margin-bottom: 4px;
|
|
18
36
|
}
|
|
19
37
|
|
|
20
|
-
@include m.e(group-
|
|
21
|
-
border-left: 2px solid fn.use-var(border, muted-color);
|
|
22
|
-
margin-left: 8px;
|
|
23
|
-
padding-left: 10px;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
@include m.e(group-actions) {
|
|
38
|
+
@include m.e(group-item) {
|
|
27
39
|
display: flex;
|
|
28
|
-
|
|
29
|
-
|
|
40
|
+
align-items: flex-start;
|
|
41
|
+
gap: 8px;
|
|
30
42
|
}
|
|
31
43
|
|
|
32
|
-
@include m.e(group-
|
|
33
|
-
|
|
34
|
-
|
|
44
|
+
@include m.e(group-item-body) {
|
|
45
|
+
flex: 1;
|
|
46
|
+
min-width: 0;
|
|
47
|
+
}
|
|
35
48
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
49
|
+
@include m.e(group-empty) {
|
|
50
|
+
display: flex;
|
|
51
|
+
align-items: center;
|
|
52
|
+
justify-content: center;
|
|
53
|
+
padding: 8px;
|
|
54
|
+
color: fn.use-var(text-color, assist);
|
|
55
|
+
font-size: 12px;
|
|
56
|
+
}
|
|
39
57
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
58
|
+
@include m.e(group-empty-tip) {
|
|
59
|
+
opacity: 0.7;
|
|
43
60
|
}
|
|
44
61
|
|
|
45
|
-
// ───
|
|
46
|
-
@include m.e(
|
|
47
|
-
|
|
48
|
-
|
|
62
|
+
// ─── 连接符 chip ──────────────────────────────────
|
|
63
|
+
@include m.e(connector) {
|
|
64
|
+
flex-shrink: 0;
|
|
65
|
+
width: $connector-width;
|
|
66
|
+
height: 28px;
|
|
67
|
+
display: inline-flex;
|
|
68
|
+
align-items: center;
|
|
69
|
+
justify-content: center;
|
|
70
|
+
margin-top: 2px;
|
|
49
71
|
border-radius: fn.use-var(radius, small);
|
|
50
72
|
font-size: 11px;
|
|
51
73
|
font-weight: 600;
|
|
74
|
+
letter-spacing: 0.5px;
|
|
52
75
|
cursor: pointer;
|
|
53
76
|
user-select: none;
|
|
54
|
-
transition:
|
|
77
|
+
transition:
|
|
78
|
+
background-color 0.15s ease,
|
|
79
|
+
color 0.15s ease,
|
|
80
|
+
transform 0.15s ease;
|
|
55
81
|
|
|
56
|
-
|
|
57
|
-
background-color: fn.use-var(color, primary, light-9);
|
|
82
|
+
@include m.m(and) {
|
|
58
83
|
color: fn.use-var(color, primary);
|
|
84
|
+
background-color: fn.use-var(color, primary, light-9);
|
|
59
85
|
|
|
60
86
|
&:hover {
|
|
61
87
|
background-color: fn.use-var(color, primary, light-8);
|
|
62
88
|
}
|
|
63
89
|
}
|
|
64
90
|
|
|
65
|
-
|
|
91
|
+
@include m.m(or) {
|
|
92
|
+
color: fn.use-var(color, warning, dark-2);
|
|
66
93
|
background-color: fn.use-var(color, warning, light-9);
|
|
67
|
-
color: fn.use-var(color, warning);
|
|
68
94
|
|
|
69
95
|
&:hover {
|
|
70
96
|
background-color: fn.use-var(color, warning, light-8);
|
|
71
97
|
}
|
|
72
98
|
}
|
|
99
|
+
|
|
100
|
+
&:focus-visible {
|
|
101
|
+
outline: 2px solid fn.use-var(color, primary);
|
|
102
|
+
outline-offset: 1px;
|
|
103
|
+
}
|
|
73
104
|
}
|
|
74
105
|
|
|
75
|
-
|
|
76
|
-
|
|
106
|
+
@include m.e(connector-placeholder) {
|
|
107
|
+
flex-shrink: 0;
|
|
108
|
+
width: $connector-width;
|
|
109
|
+
height: 28px;
|
|
110
|
+
display: inline-flex;
|
|
111
|
+
align-items: center;
|
|
112
|
+
justify-content: center;
|
|
113
|
+
margin-top: 2px;
|
|
114
|
+
border-radius: fn.use-var(radius, small);
|
|
115
|
+
font-size: 11px;
|
|
116
|
+
font-weight: 600;
|
|
117
|
+
letter-spacing: 0.5px;
|
|
118
|
+
color: fn.use-var(text-color, assist);
|
|
119
|
+
background-color: transparent;
|
|
120
|
+
user-select: none;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// ─── 操作区 ───────────────────────────────────────
|
|
124
|
+
@include m.e(group-actions) {
|
|
77
125
|
display: flex;
|
|
126
|
+
flex-wrap: wrap;
|
|
78
127
|
gap: 4px;
|
|
128
|
+
margin-top: 8px;
|
|
129
|
+
padding-left: calc(#{$connector-width} + 8px);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
@include m.e(action-btn) {
|
|
133
|
+
display: inline-flex;
|
|
134
|
+
align-items: center;
|
|
135
|
+
gap: 4px;
|
|
136
|
+
height: 26px;
|
|
137
|
+
padding: 0 8px;
|
|
138
|
+
border: none;
|
|
139
|
+
border-radius: fn.use-var(radius, small);
|
|
140
|
+
background-color: transparent;
|
|
141
|
+
color: fn.use-var(color, primary);
|
|
142
|
+
font-size: 12px;
|
|
143
|
+
cursor: pointer;
|
|
144
|
+
transition:
|
|
145
|
+
background-color 0.15s ease,
|
|
146
|
+
color 0.15s ease;
|
|
147
|
+
|
|
148
|
+
&:hover {
|
|
149
|
+
background-color: fn.use-var(color, primary, light-9);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
&:disabled {
|
|
153
|
+
cursor: not-allowed;
|
|
154
|
+
opacity: 0.5;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
@include m.m(danger) {
|
|
158
|
+
color: fn.use-var(color, danger);
|
|
159
|
+
|
|
160
|
+
&:hover {
|
|
161
|
+
background-color: fn.use-var(color, danger, light-9);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// ─── 条件行 ───────────────────────────────────────
|
|
167
|
+
@include m.e(row) {
|
|
168
|
+
display: flex;
|
|
169
|
+
gap: 6px;
|
|
79
170
|
align-items: center;
|
|
80
|
-
margin-bottom: 3px;
|
|
81
171
|
}
|
|
82
172
|
|
|
83
173
|
@include m.e(field) {
|
|
84
|
-
width:
|
|
174
|
+
width: 140px;
|
|
85
175
|
flex-shrink: 0;
|
|
86
176
|
}
|
|
87
177
|
|
|
88
178
|
@include m.e(operator) {
|
|
89
|
-
width:
|
|
179
|
+
width: 110px;
|
|
90
180
|
flex-shrink: 0;
|
|
91
181
|
}
|
|
92
182
|
|
|
93
183
|
@include m.e(value) {
|
|
94
184
|
flex: 1;
|
|
95
|
-
min-width:
|
|
185
|
+
min-width: 120px;
|
|
96
186
|
display: flex;
|
|
97
187
|
align-items: center;
|
|
98
188
|
}
|
|
@@ -100,24 +190,29 @@ $root-name: condition-editor;
|
|
|
100
190
|
@include m.e(value-input) {
|
|
101
191
|
width: 100%;
|
|
102
192
|
height: 28px;
|
|
103
|
-
padding: 0
|
|
193
|
+
padding: 0 10px;
|
|
104
194
|
border: 1px solid fn.use-var(border, muted-color);
|
|
105
195
|
border-radius: fn.use-var(radius, small);
|
|
106
|
-
font-size:
|
|
196
|
+
font-size: 13px;
|
|
107
197
|
color: fn.use-var(text-color, main);
|
|
108
198
|
background-color: fn.use-var(bg-color, top);
|
|
109
199
|
outline: none;
|
|
110
|
-
transition: border-color 0.
|
|
200
|
+
transition: border-color 0.15s ease;
|
|
111
201
|
|
|
112
202
|
&::placeholder {
|
|
113
203
|
color: fn.use-var(text-color, placeholder);
|
|
114
204
|
}
|
|
115
205
|
|
|
206
|
+
&:hover {
|
|
207
|
+
border-color: fn.use-var(color, primary, light-5);
|
|
208
|
+
}
|
|
209
|
+
|
|
116
210
|
&:focus {
|
|
117
211
|
border-color: fn.use-var(color, primary);
|
|
118
212
|
}
|
|
119
213
|
|
|
120
|
-
&:disabled
|
|
214
|
+
&:disabled,
|
|
215
|
+
&:read-only {
|
|
121
216
|
background-color: fn.use-var(color, disabled);
|
|
122
217
|
cursor: not-allowed;
|
|
123
218
|
}
|
|
@@ -126,37 +221,43 @@ $root-name: condition-editor;
|
|
|
126
221
|
@include m.e(value-empty) {
|
|
127
222
|
font-size: 12px;
|
|
128
223
|
color: fn.use-var(text-color, assist);
|
|
224
|
+
padding: 0 8px;
|
|
129
225
|
}
|
|
130
226
|
|
|
131
|
-
// ─── 变量 chip
|
|
227
|
+
// ─── 变量 chip ───────────────────────────────────
|
|
132
228
|
@include m.e(value-chip) {
|
|
133
229
|
display: inline-flex;
|
|
134
230
|
align-items: center;
|
|
135
231
|
gap: 4px;
|
|
136
|
-
|
|
137
|
-
|
|
232
|
+
max-width: 100%;
|
|
233
|
+
padding: 0 8px 0 10px;
|
|
234
|
+
height: 24px;
|
|
138
235
|
font-size: 12px;
|
|
139
236
|
color: fn.use-var(color, primary);
|
|
140
237
|
background-color: fn.use-var(color, primary, light-9);
|
|
238
|
+
border: 1px solid fn.use-var(color, primary, light-7);
|
|
141
239
|
border-radius: 999px;
|
|
142
240
|
cursor: pointer;
|
|
143
241
|
user-select: none;
|
|
144
242
|
transition:
|
|
145
|
-
background-color 0.
|
|
146
|
-
|
|
243
|
+
background-color 0.15s ease,
|
|
244
|
+
border-color 0.15s ease;
|
|
147
245
|
|
|
148
246
|
&:hover {
|
|
149
247
|
background-color: fn.use-var(color, primary, light-8);
|
|
248
|
+
border-color: fn.use-var(color, primary, light-5);
|
|
249
|
+
}
|
|
150
250
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
margin-left: 2px;
|
|
155
|
-
}
|
|
251
|
+
&:focus-visible {
|
|
252
|
+
outline: 2px solid fn.use-var(color, primary);
|
|
253
|
+
outline-offset: 1px;
|
|
156
254
|
}
|
|
157
255
|
}
|
|
158
256
|
|
|
159
257
|
@include m.e(value-chip-label) {
|
|
258
|
+
overflow: hidden;
|
|
259
|
+
text-overflow: ellipsis;
|
|
260
|
+
white-space: nowrap;
|
|
160
261
|
pointer-events: none;
|
|
161
262
|
}
|
|
162
263
|
|
|
@@ -165,83 +266,69 @@ $root-name: condition-editor;
|
|
|
165
266
|
align-items: center;
|
|
166
267
|
justify-content: center;
|
|
167
268
|
width: 14px;
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
overflow: hidden;
|
|
171
|
-
font-size: 14px;
|
|
269
|
+
height: 14px;
|
|
270
|
+
font-size: 10px;
|
|
172
271
|
line-height: 1;
|
|
173
|
-
color:
|
|
174
|
-
opacity: 0;
|
|
272
|
+
color: inherit;
|
|
273
|
+
opacity: 0.7;
|
|
274
|
+
border-radius: 50%;
|
|
175
275
|
transition:
|
|
176
|
-
opacity 0.
|
|
177
|
-
|
|
178
|
-
margin-left 0.12s ease;
|
|
276
|
+
opacity 0.15s ease,
|
|
277
|
+
background-color 0.15s ease;
|
|
179
278
|
|
|
180
279
|
&:hover {
|
|
181
|
-
|
|
280
|
+
opacity: 1;
|
|
281
|
+
background-color: fn.use-var(color, primary, light-7);
|
|
182
282
|
}
|
|
183
283
|
}
|
|
184
284
|
|
|
185
|
-
// ─── 删除按钮
|
|
285
|
+
// ─── 删除按钮 ──────────────────────────────────────
|
|
186
286
|
@include m.e(row-delete) {
|
|
187
287
|
flex-shrink: 0;
|
|
188
|
-
width:
|
|
189
|
-
|
|
190
|
-
|
|
288
|
+
width: 26px;
|
|
289
|
+
height: 26px;
|
|
290
|
+
display: inline-flex;
|
|
291
|
+
align-items: center;
|
|
292
|
+
justify-content: center;
|
|
293
|
+
border: none;
|
|
294
|
+
background-color: transparent;
|
|
191
295
|
color: fn.use-var(text-color, assist);
|
|
296
|
+
border-radius: fn.use-var(radius, small);
|
|
192
297
|
cursor: pointer;
|
|
193
|
-
|
|
298
|
+
font-size: 14px;
|
|
299
|
+
transition:
|
|
300
|
+
color 0.15s ease,
|
|
301
|
+
background-color 0.15s ease;
|
|
194
302
|
|
|
195
303
|
&:hover {
|
|
196
304
|
color: fn.use-var(color, danger);
|
|
305
|
+
background-color: fn.use-var(color, danger, light-9);
|
|
197
306
|
}
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
// ─── 结果指示 ────────────────────────────────────
|
|
201
|
-
@include m.e(result) {
|
|
202
|
-
flex-shrink: 0;
|
|
203
|
-
width: 16px;
|
|
204
|
-
text-align: center;
|
|
205
|
-
font-size: 11px;
|
|
206
|
-
font-weight: 600;
|
|
207
|
-
|
|
208
|
-
&--pass {
|
|
209
|
-
color: fn.use-var(color, success);
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
&--fail {
|
|
213
|
-
color: fn.use-var(color, danger);
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
&--none {
|
|
217
|
-
color: fn.use-var(text-color, assist);
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
307
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
color: fn.use-var(color, primary);
|
|
225
|
-
cursor: pointer;
|
|
226
|
-
transition: color 0.12s ease;
|
|
227
|
-
|
|
228
|
-
&:hover {
|
|
229
|
-
color: fn.use-var(color, primary, dark-2);
|
|
308
|
+
&:disabled {
|
|
309
|
+
cursor: not-allowed;
|
|
310
|
+
opacity: 0.4;
|
|
230
311
|
}
|
|
231
312
|
}
|
|
232
313
|
|
|
233
|
-
// ─── 状态
|
|
314
|
+
// ─── 状态 ──────────────────────────────────────────
|
|
234
315
|
@include m.is(disabled) {
|
|
235
316
|
cursor: not-allowed;
|
|
236
317
|
|
|
237
|
-
@include m.bem($root-name,
|
|
318
|
+
@include m.bem($root-name, connector) {
|
|
238
319
|
cursor: not-allowed;
|
|
239
320
|
opacity: 0.6;
|
|
240
321
|
}
|
|
241
322
|
|
|
242
|
-
@include m.bem($root-name,
|
|
323
|
+
@include m.bem($root-name, action-btn) {
|
|
243
324
|
cursor: not-allowed;
|
|
244
325
|
opacity: 0.6;
|
|
245
326
|
}
|
|
246
327
|
}
|
|
328
|
+
|
|
329
|
+
@include m.is(readonly) {
|
|
330
|
+
@include m.bem($root-name, connector) {
|
|
331
|
+
cursor: default;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
247
334
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import '@veltra/styles/
|
|
1
|
+
import '@veltra/styles/transitions/slide.scss'
|
|
2
2
|
import './style.scss'
|
|
@@ -106,7 +106,7 @@ $root-name: expression-editor;
|
|
|
106
106
|
);
|
|
107
107
|
box-shadow: 0 1px 4px fn.use-var(shadow, color);
|
|
108
108
|
|
|
109
|
-
.#{vars.$namespace}
|
|
109
|
+
.#{vars.$namespace}-#{$root-name}__chip-close {
|
|
110
110
|
opacity: 1;
|
|
111
111
|
max-width: 14px;
|
|
112
112
|
margin-left: 2px;
|
|
@@ -43,13 +43,9 @@ import { UGridItem } from '../grid'
|
|
|
43
43
|
import { UTip } from '../tip'
|
|
44
44
|
import { formItemCls as cls } from './helper'
|
|
45
45
|
|
|
46
|
-
defineOptions({
|
|
47
|
-
name: 'FormItem'
|
|
48
|
-
})
|
|
46
|
+
defineOptions({ name: 'FormItem' })
|
|
49
47
|
|
|
50
|
-
const props = withDefaults(defineProps<FormItemProps>(), {
|
|
51
|
-
readonly: undefined
|
|
52
|
-
})
|
|
48
|
+
const props = withDefaults(defineProps<FormItemProps>(), { readonly: undefined })
|
|
53
49
|
|
|
54
50
|
defineSlots<{
|
|
55
51
|
/** 标签插槽 */
|
|
@@ -80,9 +76,8 @@ const labelStyles = computed<CSSProperties>(() => {
|
|
|
80
76
|
|
|
81
77
|
/** 错误提示 */
|
|
82
78
|
const errorTips = computed<string | undefined>(() => {
|
|
83
|
-
if (props.field)
|
|
84
|
-
|
|
85
|
-
}
|
|
79
|
+
if (!props.field) return undefined
|
|
80
|
+
return formProps?.model?.errors.get(props.field)?.[0]
|
|
86
81
|
})
|
|
87
82
|
|
|
88
83
|
/** 字段是否必须 */
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import '@veltra/styles/
|
|
1
|
+
import '@veltra/styles/transitions/fade.scss'
|
|
2
2
|
import './style.scss'
|
|
@@ -149,7 +149,7 @@ $collapsed-menu: collapsed-menu;
|
|
|
149
149
|
border-left: 1px solid color-mix(in srgb, #{fn.use-var(border, color)} 52%, transparent);
|
|
150
150
|
|
|
151
151
|
@supports selector(:has(*)) {
|
|
152
|
-
&:has(.#{vars.$namespace}menu__item.is-active) {
|
|
152
|
+
&:has(.#{vars.$namespace}-menu__item.is-active) {
|
|
153
153
|
border-left-color: fn.use-var(color, primary);
|
|
154
154
|
}
|
|
155
155
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import '@veltra/styles/
|
|
1
|
+
import '@veltra/styles/transitions/zoom-in.scss'
|
|
2
2
|
import './style.scss'
|
|
@@ -119,7 +119,7 @@ watch(
|
|
|
119
119
|
[offset1, offset2],
|
|
120
120
|
userAction((v) => {
|
|
121
121
|
if (props.range) {
|
|
122
|
-
emit('update:modelValue', v.map(sliderOffset2Value).
|
|
122
|
+
emit('update:modelValue', v.map(sliderOffset2Value).toSorted() as T)
|
|
123
123
|
} else {
|
|
124
124
|
emit('update:modelValue', sliderOffset2Value(v[0]) as T)
|
|
125
125
|
}
|
package/src/types/batch-edit.ts
CHANGED
|
@@ -37,7 +37,7 @@ export interface BatchEditProps<Model extends IFormModel = IFormModel> extends T
|
|
|
37
37
|
/** label的宽度 */
|
|
38
38
|
labelWidth?: string | number
|
|
39
39
|
/** 删除方法 */
|
|
40
|
-
deleteMethod?: (data: Record<string, any>[]) =>
|
|
40
|
+
deleteMethod?: (data: Record<string, any>[]) => any
|
|
41
41
|
/**
|
|
42
42
|
* 保存方法
|
|
43
43
|
* @description 这个方法旨在快编时生效
|
|
@@ -50,7 +50,7 @@ export interface BatchEditProps<Model extends IFormModel = IFormModel> extends T
|
|
|
50
50
|
actionType: 'create' | 'update',
|
|
51
51
|
/** 父级数据 */
|
|
52
52
|
parentData?: Record<string, any>
|
|
53
|
-
) =>
|
|
53
|
+
) => any
|
|
54
54
|
|
|
55
55
|
/**
|
|
56
56
|
* 可用功能,不穿则对功能没有任何限制
|
|
@@ -2,6 +2,7 @@ import type { ComponentSize, DeconstructValue } from '@veltra/utils'
|
|
|
2
2
|
|
|
3
3
|
import type { VariableItem } from './expression-editor'
|
|
4
4
|
|
|
5
|
+
/** 字段定义 */
|
|
5
6
|
export interface ConditionField {
|
|
6
7
|
label: string
|
|
7
8
|
value: string
|
|
@@ -9,31 +10,45 @@ export interface ConditionField {
|
|
|
9
10
|
enumOptions?: { label: string; value: string }[]
|
|
10
11
|
}
|
|
11
12
|
|
|
13
|
+
/** 条件右侧值:常量或变量引用 */
|
|
12
14
|
export type ConditionValue =
|
|
13
15
|
| { kind: 'constant'; value: string }
|
|
14
16
|
| { kind: 'variable'; name: string }
|
|
15
17
|
|
|
16
|
-
|
|
18
|
+
/** 单行条件叶子节点 */
|
|
19
|
+
export interface ConditionLeaf {
|
|
20
|
+
type: 'condition'
|
|
17
21
|
field: string
|
|
18
22
|
operator: string
|
|
19
23
|
value: ConditionValue
|
|
20
|
-
_result?: boolean
|
|
21
24
|
}
|
|
22
25
|
|
|
26
|
+
/** 行间逻辑连接符 */
|
|
27
|
+
export type ConditionConnector = 'and' | 'or'
|
|
28
|
+
|
|
29
|
+
/** 条件组节点 —— 与叶子节点通过 children 统一编排 */
|
|
23
30
|
export interface ConditionGroup {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
31
|
+
type: 'group'
|
|
32
|
+
children: ConditionNode[]
|
|
33
|
+
/**
|
|
34
|
+
* 子项之间的连接符
|
|
35
|
+
*
|
|
36
|
+
* - `connectors[i]` 用于 `children[i]` 与 `children[i + 1]` 之间
|
|
37
|
+
* - 长度应等于 `children.length - 1`;缺失项默认为 `and`
|
|
38
|
+
*/
|
|
39
|
+
connectors: ConditionConnector[]
|
|
28
40
|
}
|
|
29
41
|
|
|
42
|
+
/** 树节点:叶子或分组 */
|
|
43
|
+
export type ConditionNode = ConditionLeaf | ConditionGroup
|
|
44
|
+
|
|
45
|
+
/** 顶层表达式 = 根分组 */
|
|
30
46
|
export type ConditionExpression = ConditionGroup
|
|
31
47
|
|
|
32
48
|
export interface ConditionEditorProps {
|
|
33
49
|
modelValue?: ConditionExpression
|
|
34
50
|
fields?: ConditionField[]
|
|
35
51
|
variables?: VariableItem[]
|
|
36
|
-
data?: Record<string, unknown>
|
|
37
52
|
size?: ComponentSize
|
|
38
53
|
disabled?: boolean
|
|
39
54
|
readonly?: boolean
|
|
@@ -41,7 +56,6 @@ export interface ConditionEditorProps {
|
|
|
41
56
|
|
|
42
57
|
export interface ConditionEditorEmits {
|
|
43
58
|
(e: 'update:modelValue', value: ConditionExpression): void
|
|
44
|
-
(e: 'evaluate', results: ConditionExpression): void
|
|
45
59
|
}
|
|
46
60
|
|
|
47
61
|
export interface _ConditionEditorExposed {}
|