@veltra/desktop 1.7.19 → 1.8.0

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 (71) hide show
  1. package/dist/components/batch-edit/batch-edit-form.js +40 -26
  2. package/dist/components/batch-edit/batch-edit-form.js.map +1 -1
  3. package/dist/components/batch-edit/use-handlers.js +3 -3
  4. package/dist/components/batch-edit/use-handlers.js.map +1 -1
  5. package/dist/components/batch-edit/use-shortcut-key.js +4 -2
  6. package/dist/components/batch-edit/use-shortcut-key.js.map +1 -1
  7. package/dist/components/card/style2.css +0 -2
  8. package/dist/components/dropdown/dropdown.js +5 -3
  9. package/dist/components/dropdown/dropdown.js.map +1 -1
  10. package/dist/components/expression-editor/components/path-preview.js +3 -6
  11. package/dist/components/expression-editor/components/path-preview.js.map +1 -1
  12. package/dist/components/expression-editor/components/variable-picker.js +49 -12
  13. package/dist/components/expression-editor/components/variable-picker.js.map +1 -1
  14. package/dist/components/expression-editor/core/editor.js +20 -0
  15. package/dist/components/expression-editor/core/editor.js.map +1 -1
  16. package/dist/components/expression-editor/expression-editor.js +53 -18
  17. package/dist/components/expression-editor/expression-editor.js.map +1 -1
  18. package/dist/components/expression-editor/style2.css +135 -73
  19. package/dist/components/form/form.js.map +1 -1
  20. package/dist/components/form/form.vue_vue_type_script_setup_true_lang.js +0 -1
  21. package/dist/components/form/form.vue_vue_type_script_setup_true_lang.js.map +1 -1
  22. package/dist/components/form/style2.css +8 -3
  23. package/dist/components/index.d.ts +26 -26
  24. package/dist/components/index.js +52 -52
  25. package/dist/components/multi-select/multi-select.js +16 -12
  26. package/dist/components/multi-select/multi-select.js.map +1 -1
  27. package/dist/components/multi-select/style2.css +7 -0
  28. package/dist/components/multi-tree-select/multi-tree-select.js +82 -56
  29. package/dist/components/multi-tree-select/multi-tree-select.js.map +1 -1
  30. package/dist/components/multi-tree-select/style2.css +7 -0
  31. package/dist/components/select/select.js +7 -3
  32. package/dist/components/select/select.js.map +1 -1
  33. package/dist/components/select/style2.css +7 -0
  34. package/dist/components/select/use-options.js +14 -3
  35. package/dist/components/select/use-options.js.map +1 -1
  36. package/dist/components/tree-select/style2.css +7 -0
  37. package/dist/components/tree-select/tree-select.js +49 -17
  38. package/dist/components/tree-select/tree-select.js.map +1 -1
  39. package/dist/index.d.ts +1 -1
  40. package/dist/index.js +2 -2
  41. package/dist/types/dropdown.d.ts +10 -0
  42. package/dist/types/multi-tree-select.d.ts +7 -1
  43. package/dist/types/tree-select.d.ts +7 -1
  44. package/package.json +1 -1
  45. package/src/components/batch-edit/__test__/batch-edit.test.ts +112 -1
  46. package/src/components/batch-edit/batch-edit-form.vue +21 -2
  47. package/src/components/batch-edit/use-handlers.ts +6 -5
  48. package/src/components/batch-edit/use-shortcut-key.ts +5 -2
  49. package/src/components/card/style.scss +0 -2
  50. package/src/components/dropdown/dropdown.vue +9 -4
  51. package/src/components/expression-editor/components/path-preview.vue +1 -2
  52. package/src/components/expression-editor/components/variable-picker.vue +54 -13
  53. package/src/components/expression-editor/core/editor.ts +28 -0
  54. package/src/components/expression-editor/expression-editor.vue +47 -17
  55. package/src/components/expression-editor/style.scss +167 -82
  56. package/src/components/form/form.vue +0 -1
  57. package/src/components/form/style.scss +11 -4
  58. package/src/components/multi-select/multi-select.vue +11 -2
  59. package/src/components/multi-select/style.scss +6 -0
  60. package/src/components/multi-tree-select/multi-tree-select.vue +58 -9
  61. package/src/components/multi-tree-select/style.scss +6 -0
  62. package/src/components/select/__test__/select.test.ts +78 -0
  63. package/src/components/select/select.vue +13 -3
  64. package/src/components/select/style.scss +6 -0
  65. package/src/components/select/use-options.ts +25 -4
  66. package/src/components/tree-select/__test__/tree-select.test.ts +116 -0
  67. package/src/components/tree-select/style.scss +6 -0
  68. package/src/components/tree-select/tree-select.vue +63 -13
  69. package/src/types/dropdown.ts +10 -0
  70. package/src/types/multi-tree-select.ts +12 -1
  71. package/src/types/tree-select.ts +12 -1
@@ -17,45 +17,108 @@
17
17
  /** 暗色:`UITheme.render()` 按主题系列写入 html[data-theme] */
18
18
  .u-expression-editor {
19
19
  position: relative;
20
+ width: 100%;
21
+ }
22
+ .u-expression-editor__shell {
20
23
  background-color: var(--u-bg-color-top);
21
24
  border-width: var(--u-border-width);
22
25
  border-style: var(--u-border-style);
23
26
  border-color: var(--u-border-muted-color);
24
27
  border-radius: var(--u-radius-default);
25
- width: 100%;
28
+ transition: border-color var(--u-transition-fast) var(--u-transition-ease), box-shadow var(--u-transition-fast) var(--u-transition-ease);
26
29
  }
27
- .u-expression-editor:not(.is-disabled):not(.is-readonly):hover {
30
+ .u-expression-editor__shell:not(.is-disabled):not(.is-readonly):hover {
28
31
  border-color: var(--u-color-primary);
29
32
  }
30
- .u-expression-editor:not(.is-disabled):not(.is-readonly):focus-within {
33
+ .u-expression-editor__shell:not(.is-disabled):not(.is-readonly):focus-within {
31
34
  border-color: var(--u-color-primary);
35
+ box-shadow: var(--u-focus-ring);
32
36
  outline: none;
33
37
  }
34
- .u-expression-editor.is-disabled {
38
+ .u-expression-editor__shell.is-disabled {
35
39
  background-color: var(--u-color-disabled);
36
40
  cursor: not-allowed;
37
41
  border-color: var(--u-border-muted-color);
38
42
  }
39
- .u-expression-editor.is-disabled:hover {
43
+ .u-expression-editor__shell.is-disabled:hover {
40
44
  border-color: var(--u-border-muted-color);
41
45
  }
42
- .u-expression-editor.is-readonly {
46
+ .u-expression-editor__shell.is-readonly {
43
47
  background-color: var(--u-bg-color-middle);
44
48
  cursor: default;
45
49
  border-color: var(--u-border-muted-color);
46
50
  user-select: text;
47
51
  }
48
- .u-expression-editor.is-readonly:hover {
52
+ .u-expression-editor__shell.is-readonly:hover {
49
53
  border-color: var(--u-border-muted-color);
50
54
  }
55
+ .u-expression-editor__shell--small {
56
+ min-height: var(--u-form-component-height-small);
57
+ padding: var(--u-gap-small);
58
+ }
59
+ .u-expression-editor__shell--small .u-expression-editor__placeholder {
60
+ font-size: var(--u-font-size-main-small);
61
+ }
62
+ .u-expression-editor__shell--small .u-expression-editor__container {
63
+ font-size: var(--u-font-size-main-small);
64
+ }
65
+ .u-expression-editor__shell--default {
66
+ min-height: var(--u-form-component-height-default);
67
+ padding: var(--u-gap-default);
68
+ }
69
+ .u-expression-editor__shell--default .u-expression-editor__placeholder {
70
+ font-size: var(--u-font-size-main-default);
71
+ }
72
+ .u-expression-editor__shell--default .u-expression-editor__container {
73
+ font-size: var(--u-font-size-main-default);
74
+ }
75
+ .u-expression-editor__shell--large {
76
+ min-height: var(--u-form-component-height-large);
77
+ padding: var(--u-gap-large);
78
+ }
79
+ .u-expression-editor__shell--large .u-expression-editor__placeholder {
80
+ font-size: var(--u-font-size-main-large);
81
+ }
82
+ .u-expression-editor__shell--large .u-expression-editor__container {
83
+ font-size: var(--u-font-size-main-large);
84
+ }
51
85
  .u-expression-editor__placeholder {
52
86
  position: absolute;
87
+ top: 0;
88
+ left: 0;
53
89
  color: var(--u-text-color-placeholder);
54
90
  pointer-events: none;
55
91
  user-select: none;
56
92
  transition: opacity 0.2s ease;
57
93
  font-weight: 400;
58
94
  }
95
+ .u-expression-editor__body {
96
+ position: relative;
97
+ }
98
+ .u-expression-editor__hint {
99
+ font-size: var(--u-font-size-main-small);
100
+ color: var(--u-text-color-placeholder);
101
+ user-select: none;
102
+ margin-bottom: 4px;
103
+ }
104
+ .u-expression-editor__mention-anchor {
105
+ position: absolute;
106
+ width: 0;
107
+ height: 0;
108
+ pointer-events: none;
109
+ }
110
+ .u-expression-editor__hint kbd, .u-expression-editor__picker-hint kbd {
111
+ display: inline-block;
112
+ min-width: 18px;
113
+ padding: 1px 4px;
114
+ border: var(--u-border);
115
+ border-radius: var(--u-radius-small);
116
+ font-size: 11px;
117
+ line-height: 1.4;
118
+ text-align: center;
119
+ color: var(--u-text-color-second);
120
+ background-color: var(--u-bg-color-top);
121
+ }
59
122
  .u-expression-editor__container {
60
123
  position: relative;
61
124
  outline: none;
@@ -100,50 +163,58 @@
100
163
  pointer-events: none;
101
164
  }
102
165
  .u-expression-editor__picker {
103
- min-width: 220px;
166
+ margin: calc(var(--u-gap-default) * -1);
167
+ min-width: 240px;
168
+ display: flex;
169
+ flex-direction: column;
170
+ overflow: hidden;
104
171
  background-color: var(--u-bg-color-top);
172
+ border: var(--u-border);
173
+ border-radius: var(--u-radius-default);
174
+ backdrop-filter: var(--u-bg-filter);
175
+ -webkit-backdrop-filter: var(--u-bg-filter);
105
176
  }
106
177
  .u-expression-editor__picker-body {
178
+ flex: 1 1 auto;
179
+ min-height: 0;
107
180
  display: flex;
108
181
  align-items: stretch;
109
- min-height: 200px;
110
182
  }
111
183
  .u-expression-editor__panel {
112
184
  flex: 1 1 auto;
113
185
  min-width: 0;
114
186
  max-height: 320px;
187
+ display: flex;
188
+ flex-direction: column;
115
189
  }
116
190
  .u-expression-editor__panel-list {
117
- height: 100%;
118
- min-height: 200px;
191
+ flex: 1 1 auto;
192
+ min-height: 0;
119
193
  }
120
194
  .u-expression-editor__panel-content {
121
- padding: 4px 0;
195
+ padding: 4px;
122
196
  }
123
197
  .u-expression-editor__item {
124
- padding: 6px 12px;
125
- cursor: pointer;
126
- user-select: none;
127
198
  display: flex;
128
199
  align-items: center;
129
200
  justify-content: space-between;
130
- gap: 8px;
131
- transition: background-color 0.12s ease, color 0.12s ease;
132
- color: var(--u-text-color-main);
133
- font-size: 13px;
134
- line-height: 1.4;
201
+ gap: var(--u-gap-default);
202
+ height: var(--u-form-component-height-default);
203
+ padding: 0 var(--u-gap-default);
135
204
  border-radius: var(--u-radius-small);
136
- margin: 1px 4px;
205
+ font-size: var(--u-font-size-main-default);
206
+ color: var(--u-text-color-main);
207
+ cursor: pointer;
208
+ user-select: none;
209
+ transition: background-color 0.15s ease, color 0.15s ease;
137
210
  }
138
211
  .u-expression-editor__item.is-active {
139
- background-color: var(--u-color-primary);
140
- color: var(--u-text-color-white);
141
- }
142
- .u-expression-editor__item.is-active .u-expression-editor__item-expand {
143
- color: var(--u-text-color-white);
212
+ background-color: var(--u-bg-color-hover);
213
+ color: var(--u-text-color-title);
144
214
  }
145
215
  .u-expression-editor__item-label {
146
216
  flex: 1;
217
+ min-width: 0;
147
218
  overflow: hidden;
148
219
  text-overflow: ellipsis;
149
220
  white-space: nowrap;
@@ -152,31 +223,59 @@
152
223
  flex-shrink: 0;
153
224
  color: var(--u-text-color-placeholder);
154
225
  font-size: 12px;
226
+ box-sizing: content-box;
227
+ padding: 6px;
228
+ margin: -6px;
229
+ border-radius: var(--u-radius-small);
230
+ cursor: pointer;
231
+ transition: color 0.15s ease, background-color 0.15s ease;
232
+ }
233
+ .u-expression-editor__item-expand:hover {
234
+ color: var(--u-color-primary);
235
+ background-color: var(--u-bg-color-hover);
155
236
  }
156
237
  .u-expression-editor__empty {
157
238
  flex: 1;
158
239
  padding: 32px 16px;
159
240
  text-align: center;
160
241
  }
161
- .u-expression-editor__breadcrumbs {
242
+ .u-expression-editor__picker-hint {
162
243
  display: flex;
163
244
  align-items: center;
164
245
  flex-wrap: wrap;
246
+ gap: 4px 12px;
165
247
  padding: 6px 10px;
248
+ border-top: var(--u-border);
249
+ font-size: var(--u-font-size-main-small);
250
+ color: var(--u-text-color-placeholder);
251
+ user-select: none;
252
+ }
253
+ .u-expression-editor__picker-hint span {
254
+ display: inline-flex;
255
+ align-items: center;
256
+ gap: 3px;
257
+ }
258
+ .u-expression-editor__breadcrumbs {
259
+ display: flex;
260
+ align-items: center;
261
+ flex-wrap: wrap;
262
+ gap: 2px;
263
+ padding: 6px 8px;
264
+ background-color: var(--u-bg-color-middle);
166
265
  border-bottom: var(--u-border);
167
- font-size: 12px;
266
+ font-size: var(--u-font-size-main-small);
168
267
  color: var(--u-text-color-second);
169
268
  }
170
269
  .u-expression-editor__breadcrumb-item {
171
270
  display: inline-flex;
172
271
  align-items: center;
173
- gap: 4px;
272
+ gap: 2px;
174
273
  }
175
274
  .u-expression-editor__breadcrumb-link {
176
- cursor: pointer;
177
- transition: color 0.12s ease, background-color 0.12s ease;
178
- padding: 2px 6px;
275
+ padding: 3px 6px;
179
276
  border-radius: var(--u-radius-small);
277
+ cursor: pointer;
278
+ transition: color 0.15s ease, background-color 0.15s ease;
180
279
  }
181
280
  .u-expression-editor__breadcrumb-link:hover {
182
281
  color: var(--u-color-primary);
@@ -187,7 +286,7 @@
187
286
  font-weight: 600;
188
287
  }
189
288
  .u-expression-editor__breadcrumb-separator {
190
- font-size: 10px;
289
+ font-size: 12px;
191
290
  color: var(--u-text-color-placeholder);
192
291
  }
193
292
  .u-expression-editor__path-preview {
@@ -195,7 +294,7 @@
195
294
  border-left: var(--u-border);
196
295
  padding: 8px 12px;
197
296
  background-color: var(--u-bg-color-middle);
198
- font-size: 12px;
297
+ font-size: var(--u-font-size-main-small);
199
298
  }
200
299
  .u-expression-editor__path-preview-title {
201
300
  color: var(--u-text-color-second);
@@ -213,52 +312,15 @@
213
312
  gap: 4px;
214
313
  line-height: 1.6;
215
314
  color: var(--u-text-color-main);
315
+ padding-left: calc(var(--depth, 0) * 12px);
216
316
  }
217
317
  .u-expression-editor__path-tree-item.is-active {
218
318
  color: var(--u-color-primary);
219
319
  font-weight: 600;
220
320
  }
221
- .u-expression-editor__path-tree-branch {
222
- color: var(--u-text-color-placeholder);
223
- }
224
321
  .u-expression-editor__path-tree-label {
322
+ min-width: 0;
225
323
  overflow: hidden;
226
324
  text-overflow: ellipsis;
227
325
  white-space: nowrap;
228
326
  }
229
- .u-expression-editor--small {
230
- min-height: var(--u-form-component-height-small);
231
- padding: var(--u-gap-small);
232
- }
233
- .u-expression-editor--small .u-expression-editor__placeholder {
234
- top: var(--u-gap-small);
235
- left: var(--u-gap-small);
236
- font-size: var(--u-font-size-main-small);
237
- }
238
- .u-expression-editor--small .u-expression-editor__container {
239
- font-size: var(--u-font-size-main-small);
240
- }
241
- .u-expression-editor--default {
242
- min-height: var(--u-form-component-height-default);
243
- padding: var(--u-gap-default);
244
- }
245
- .u-expression-editor--default .u-expression-editor__placeholder {
246
- top: var(--u-gap-default);
247
- left: var(--u-gap-default);
248
- font-size: var(--u-font-size-main-default);
249
- }
250
- .u-expression-editor--default .u-expression-editor__container {
251
- font-size: var(--u-font-size-main-default);
252
- }
253
- .u-expression-editor--large {
254
- min-height: var(--u-form-component-height-large);
255
- padding: var(--u-gap-large);
256
- }
257
- .u-expression-editor--large .u-expression-editor__placeholder {
258
- top: var(--u-gap-large);
259
- left: var(--u-gap-large);
260
- font-size: var(--u-font-size-main-large);
261
- }
262
- .u-expression-editor--large .u-expression-editor__container {
263
- font-size: var(--u-font-size-main-large);
264
- }
@@ -1 +1 @@
1
- {"version":3,"file":"form.js","names":[],"sources":["../../../src/components/form/form.vue"],"sourcesContent":["<template>\n <u-grid\n tag=\"form\"\n ref=\"grid\"\n @submit.prevent\n gap=\"0 12px\"\n :cols=\"cols || breakpointCols\"\n :class=\"[cls.b, bem.is('readonly', readonly)]\"\n >\n <template\n v-for=\"{ node, isFormItem, formItemProps, field, modelValue, renderKey } of getSlotsNodes()\"\n :key=\"renderKey\"\n >\n <u-form-item v-if=\"!isFormItem && field\" v-bind=\"formItemProps\">\n <component\n :is=\"node\"\n :model-value=\"modelValue ?? o(model ?? {}).get(field)\"\n @update:model-value=\"handleUpdateValue(field, $event)\"\n />\n <div v-if=\"shouldShowModified(field)\" :class=\"cls.e('data-before')\">\n <span :class=\"cls.e('changed-tag')\">{{ modifiedLabel }}</span>\n <component :is=\"createModifiedPreview(node, field)\" />\n </div>\n </u-form-item>\n\n <component v-else :is=\"node\" />\n </template>\n </u-grid>\n</template>\n\n<script lang=\"tsx\" setup>\nimport { o } from '@cat-kit/core'\nimport { bem } from '@veltra/utils'\nimport { provideFormContext } from '@veltra/utils'\nimport { nextTick, toRef, useTemplateRef, type VNode } from 'vue'\n\nimport type { BreakCols, FormProps, _FormExposed, FormEmits } from '../../types'\nimport { UFormItem } from '../form-item'\nimport { UGrid } from '../grid'\nimport { isFieldModified } from './is-field-modified'\nimport { useFormFields } from './use-form-fields'\nimport { forkUnmountedVNode, useNodeInterceptor } from './use-node-interceptor'\n\ndefineOptions({ name: 'UForm' })\n\nconst props = withDefaults(defineProps<FormProps>(), { modifiedLabel: '变更前:' })\n\nconst emit = defineEmits<FormEmits>()\n\ndefineSlots<{ default(props?: { data: Record<string, any> | undefined }): any }>()\n\nconst cls = bem('form')\nconst formItemCls = bem('form-item')\nconst gridRef = useTemplateRef('grid')\n\nconst breakpointCols: BreakCols = { xs: 1, md: 2, lg: 3, xl: 4, default: 4 }\n\nconst {\n validate: runValidate,\n clearValidate,\n reset,\n registerField,\n unregisterField,\n shouldValidate,\n getBaselineModel\n} = useFormFields({ props })\n\nasync function validate(keys?: string[]) {\n const valid = await runValidate(keys)\n if (!valid) {\n await nextTick()\n\n gridRef.value?.el\n ?.querySelector(`.${formItemCls.e('error-text')}`)\n ?.scrollIntoView({ block: 'center' })\n }\n return valid\n}\n\nfunction handleFieldUpdate(field: string, value: any) {\n emit('field:update', field, value)\n}\n\nprovideFormContext({\n formProps: props,\n registerField,\n unregisterField,\n validateFields: validate,\n shouldValidate,\n handleFieldUpdate\n})\n\nconst { getSlotsNodes } = useNodeInterceptor()\n\nfunction handleUpdateValue(field: string, value: any) {\n if (!props.model) return\n o(props.model).set(field, value)\n}\n\nfunction getBaselineFieldValue(field: string) {\n return o(getBaselineModel() ?? {}).get(field)\n}\n\nfunction createModifiedPreview(node: VNode, field: string) {\n return forkUnmountedVNode(node, { readonly: true, modelValue: getBaselineFieldValue(field) })\n}\n\nfunction shouldShowModified(field: string) {\n if (!props.showModified) return false\n const baseline = getBaselineModel()\n if (!baseline || !props.model) return false\n const current = o(props.model).get(field)\n const initial = o(baseline).get(field)\n return isFieldModified(current, initial)\n}\n\ndefineExpose<_FormExposed>({ el: toRef(() => gridRef.value?.el), validate, clearValidate, reset })\n</script>\n"],"mappings":""}
1
+ {"version":3,"file":"form.js","names":[],"sources":["../../../src/components/form/form.vue"],"sourcesContent":["<template>\n <u-grid\n tag=\"form\"\n ref=\"grid\"\n @submit.prevent\n :cols=\"cols || breakpointCols\"\n :class=\"[cls.b, bem.is('readonly', readonly)]\"\n >\n <template\n v-for=\"{ node, isFormItem, formItemProps, field, modelValue, renderKey } of getSlotsNodes()\"\n :key=\"renderKey\"\n >\n <u-form-item v-if=\"!isFormItem && field\" v-bind=\"formItemProps\">\n <component\n :is=\"node\"\n :model-value=\"modelValue ?? o(model ?? {}).get(field)\"\n @update:model-value=\"handleUpdateValue(field, $event)\"\n />\n <div v-if=\"shouldShowModified(field)\" :class=\"cls.e('data-before')\">\n <span :class=\"cls.e('changed-tag')\">{{ modifiedLabel }}</span>\n <component :is=\"createModifiedPreview(node, field)\" />\n </div>\n </u-form-item>\n\n <component v-else :is=\"node\" />\n </template>\n </u-grid>\n</template>\n\n<script lang=\"tsx\" setup>\nimport { o } from '@cat-kit/core'\nimport { bem } from '@veltra/utils'\nimport { provideFormContext } from '@veltra/utils'\nimport { nextTick, toRef, useTemplateRef, type VNode } from 'vue'\n\nimport type { BreakCols, FormProps, _FormExposed, FormEmits } from '../../types'\nimport { UFormItem } from '../form-item'\nimport { UGrid } from '../grid'\nimport { isFieldModified } from './is-field-modified'\nimport { useFormFields } from './use-form-fields'\nimport { forkUnmountedVNode, useNodeInterceptor } from './use-node-interceptor'\n\ndefineOptions({ name: 'UForm' })\n\nconst props = withDefaults(defineProps<FormProps>(), { modifiedLabel: '变更前:' })\n\nconst emit = defineEmits<FormEmits>()\n\ndefineSlots<{ default(props?: { data: Record<string, any> | undefined }): any }>()\n\nconst cls = bem('form')\nconst formItemCls = bem('form-item')\nconst gridRef = useTemplateRef('grid')\n\nconst breakpointCols: BreakCols = { xs: 1, md: 2, lg: 3, xl: 4, default: 4 }\n\nconst {\n validate: runValidate,\n clearValidate,\n reset,\n registerField,\n unregisterField,\n shouldValidate,\n getBaselineModel\n} = useFormFields({ props })\n\nasync function validate(keys?: string[]) {\n const valid = await runValidate(keys)\n if (!valid) {\n await nextTick()\n\n gridRef.value?.el\n ?.querySelector(`.${formItemCls.e('error-text')}`)\n ?.scrollIntoView({ block: 'center' })\n }\n return valid\n}\n\nfunction handleFieldUpdate(field: string, value: any) {\n emit('field:update', field, value)\n}\n\nprovideFormContext({\n formProps: props,\n registerField,\n unregisterField,\n validateFields: validate,\n shouldValidate,\n handleFieldUpdate\n})\n\nconst { getSlotsNodes } = useNodeInterceptor()\n\nfunction handleUpdateValue(field: string, value: any) {\n if (!props.model) return\n o(props.model).set(field, value)\n}\n\nfunction getBaselineFieldValue(field: string) {\n return o(getBaselineModel() ?? {}).get(field)\n}\n\nfunction createModifiedPreview(node: VNode, field: string) {\n return forkUnmountedVNode(node, { readonly: true, modelValue: getBaselineFieldValue(field) })\n}\n\nfunction shouldShowModified(field: string) {\n if (!props.showModified) return false\n const baseline = getBaselineModel()\n if (!baseline || !props.model) return false\n const current = o(props.model).get(field)\n const initial = o(baseline).get(field)\n return isFieldModified(current, initial)\n}\n\ndefineExpose<_FormExposed>({ el: toRef(() => gridRef.value?.el), validate, clearValidate, reset })\n</script>\n"],"mappings":""}
@@ -90,7 +90,6 @@ var form_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCompo
90
90
  tag: "form",
91
91
  ref: "grid",
92
92
  onSubmit: _cache[0] || (_cache[0] = withModifiers(() => {}, ["prevent"])),
93
- gap: "0 12px",
94
93
  cols: __props.cols || breakpointCols,
95
94
  class: normalizeClass([unref(cls).b, unref(bem).is("readonly", __props.readonly)])
96
95
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"form.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/form/form.vue"],"sourcesContent":["<template>\n <u-grid\n tag=\"form\"\n ref=\"grid\"\n @submit.prevent\n gap=\"0 12px\"\n :cols=\"cols || breakpointCols\"\n :class=\"[cls.b, bem.is('readonly', readonly)]\"\n >\n <template\n v-for=\"{ node, isFormItem, formItemProps, field, modelValue, renderKey } of getSlotsNodes()\"\n :key=\"renderKey\"\n >\n <u-form-item v-if=\"!isFormItem && field\" v-bind=\"formItemProps\">\n <component\n :is=\"node\"\n :model-value=\"modelValue ?? o(model ?? {}).get(field)\"\n @update:model-value=\"handleUpdateValue(field, $event)\"\n />\n <div v-if=\"shouldShowModified(field)\" :class=\"cls.e('data-before')\">\n <span :class=\"cls.e('changed-tag')\">{{ modifiedLabel }}</span>\n <component :is=\"createModifiedPreview(node, field)\" />\n </div>\n </u-form-item>\n\n <component v-else :is=\"node\" />\n </template>\n </u-grid>\n</template>\n\n<script lang=\"tsx\" setup>\nimport { o } from '@cat-kit/core'\nimport { bem } from '@veltra/utils'\nimport { provideFormContext } from '@veltra/utils'\nimport { nextTick, toRef, useTemplateRef, type VNode } from 'vue'\n\nimport type { BreakCols, FormProps, _FormExposed, FormEmits } from '../../types'\nimport { UFormItem } from '../form-item'\nimport { UGrid } from '../grid'\nimport { isFieldModified } from './is-field-modified'\nimport { useFormFields } from './use-form-fields'\nimport { forkUnmountedVNode, useNodeInterceptor } from './use-node-interceptor'\n\ndefineOptions({ name: 'UForm' })\n\nconst props = withDefaults(defineProps<FormProps>(), { modifiedLabel: '变更前:' })\n\nconst emit = defineEmits<FormEmits>()\n\ndefineSlots<{ default(props?: { data: Record<string, any> | undefined }): any }>()\n\nconst cls = bem('form')\nconst formItemCls = bem('form-item')\nconst gridRef = useTemplateRef('grid')\n\nconst breakpointCols: BreakCols = { xs: 1, md: 2, lg: 3, xl: 4, default: 4 }\n\nconst {\n validate: runValidate,\n clearValidate,\n reset,\n registerField,\n unregisterField,\n shouldValidate,\n getBaselineModel\n} = useFormFields({ props })\n\nasync function validate(keys?: string[]) {\n const valid = await runValidate(keys)\n if (!valid) {\n await nextTick()\n\n gridRef.value?.el\n ?.querySelector(`.${formItemCls.e('error-text')}`)\n ?.scrollIntoView({ block: 'center' })\n }\n return valid\n}\n\nfunction handleFieldUpdate(field: string, value: any) {\n emit('field:update', field, value)\n}\n\nprovideFormContext({\n formProps: props,\n registerField,\n unregisterField,\n validateFields: validate,\n shouldValidate,\n handleFieldUpdate\n})\n\nconst { getSlotsNodes } = useNodeInterceptor()\n\nfunction handleUpdateValue(field: string, value: any) {\n if (!props.model) return\n o(props.model).set(field, value)\n}\n\nfunction getBaselineFieldValue(field: string) {\n return o(getBaselineModel() ?? {}).get(field)\n}\n\nfunction createModifiedPreview(node: VNode, field: string) {\n return forkUnmountedVNode(node, { readonly: true, modelValue: getBaselineFieldValue(field) })\n}\n\nfunction shouldShowModified(field: string) {\n if (!props.showModified) return false\n const baseline = getBaselineModel()\n if (!baseline || !props.model) return false\n const current = o(props.model).get(field)\n const initial = o(baseline).get(field)\n return isFieldModified(current, initial)\n}\n\ndefineExpose<_FormExposed>({ el: toRef(() => gridRef.value?.el), validate, clearValidate, reset })\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"form.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/form/form.vue"],"sourcesContent":["<template>\n <u-grid\n tag=\"form\"\n ref=\"grid\"\n @submit.prevent\n :cols=\"cols || breakpointCols\"\n :class=\"[cls.b, bem.is('readonly', readonly)]\"\n >\n <template\n v-for=\"{ node, isFormItem, formItemProps, field, modelValue, renderKey } of getSlotsNodes()\"\n :key=\"renderKey\"\n >\n <u-form-item v-if=\"!isFormItem && field\" v-bind=\"formItemProps\">\n <component\n :is=\"node\"\n :model-value=\"modelValue ?? o(model ?? {}).get(field)\"\n @update:model-value=\"handleUpdateValue(field, $event)\"\n />\n <div v-if=\"shouldShowModified(field)\" :class=\"cls.e('data-before')\">\n <span :class=\"cls.e('changed-tag')\">{{ modifiedLabel }}</span>\n <component :is=\"createModifiedPreview(node, field)\" />\n </div>\n </u-form-item>\n\n <component v-else :is=\"node\" />\n </template>\n </u-grid>\n</template>\n\n<script lang=\"tsx\" setup>\nimport { o } from '@cat-kit/core'\nimport { bem } from '@veltra/utils'\nimport { provideFormContext } from '@veltra/utils'\nimport { nextTick, toRef, useTemplateRef, type VNode } from 'vue'\n\nimport type { BreakCols, FormProps, _FormExposed, FormEmits } from '../../types'\nimport { UFormItem } from '../form-item'\nimport { UGrid } from '../grid'\nimport { isFieldModified } from './is-field-modified'\nimport { useFormFields } from './use-form-fields'\nimport { forkUnmountedVNode, useNodeInterceptor } from './use-node-interceptor'\n\ndefineOptions({ name: 'UForm' })\n\nconst props = withDefaults(defineProps<FormProps>(), { modifiedLabel: '变更前:' })\n\nconst emit = defineEmits<FormEmits>()\n\ndefineSlots<{ default(props?: { data: Record<string, any> | undefined }): any }>()\n\nconst cls = bem('form')\nconst formItemCls = bem('form-item')\nconst gridRef = useTemplateRef('grid')\n\nconst breakpointCols: BreakCols = { xs: 1, md: 2, lg: 3, xl: 4, default: 4 }\n\nconst {\n validate: runValidate,\n clearValidate,\n reset,\n registerField,\n unregisterField,\n shouldValidate,\n getBaselineModel\n} = useFormFields({ props })\n\nasync function validate(keys?: string[]) {\n const valid = await runValidate(keys)\n if (!valid) {\n await nextTick()\n\n gridRef.value?.el\n ?.querySelector(`.${formItemCls.e('error-text')}`)\n ?.scrollIntoView({ block: 'center' })\n }\n return valid\n}\n\nfunction handleFieldUpdate(field: string, value: any) {\n emit('field:update', field, value)\n}\n\nprovideFormContext({\n formProps: props,\n registerField,\n unregisterField,\n validateFields: validate,\n shouldValidate,\n handleFieldUpdate\n})\n\nconst { getSlotsNodes } = useNodeInterceptor()\n\nfunction handleUpdateValue(field: string, value: any) {\n if (!props.model) return\n o(props.model).set(field, value)\n}\n\nfunction getBaselineFieldValue(field: string) {\n return o(getBaselineModel() ?? {}).get(field)\n}\n\nfunction createModifiedPreview(node: VNode, field: string) {\n return forkUnmountedVNode(node, { readonly: true, modelValue: getBaselineFieldValue(field) })\n}\n\nfunction shouldShowModified(field: string) {\n if (!props.showModified) return false\n const baseline = getBaselineModel()\n if (!baseline || !props.model) return false\n const current = o(props.model).get(field)\n const initial = o(baseline).get(field)\n return isFieldModified(current, initial)\n}\n\ndefineExpose<_FormExposed>({ el: toRef(() => gridRef.value?.el), validate, clearValidate, reset })\n</script>\n"],"mappings":"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"}
@@ -15,15 +15,20 @@
15
15
  * --u-height-small: 24px;
16
16
  */
17
17
  /** 暗色:`UITheme.render()` 按主题系列写入 html[data-theme] */
18
+ .u-form {
19
+ gap: 0 12px;
20
+ }
18
21
  .u-form.is-readonly {
19
- gap: 6px;
22
+ gap: 10px 12px;
20
23
  }
21
24
  .u-form.is-readonly .u-form-item__label {
22
- background-color: var(--u-bg-color-top);
25
+ color: var(--u-text-color-second);
23
26
  }
24
27
  .u-form.is-readonly .u-form-item__content {
28
+ padding: 4px 12px;
29
+ color: var(--u-text-color-main);
25
30
  background-color: var(--u-bg-color-middle);
26
- padding: 0 8px;
31
+ border-radius: var(--u-radius-default);
27
32
  }
28
33
  .u-form__data-before {
29
34
  display: flex;
@@ -4,33 +4,33 @@ import _sfc_main$2 from "./scroll/scroll.js";
4
4
  import _sfc_main$3 from "./tip/tip.js";
5
5
  import _sfc_main$4 from "./dropdown/dropdown.js";
6
6
  import input_default from "./input/input.js";
7
- import _sfc_main$5 from "./select/select.js";
8
- import _sfc_main$6 from "./condition-editor/condition-editor.js";
9
- import _sfc_main$7 from "./tabs/tabs-horizontal.js";
10
- import _sfc_main$8 from "./tabs/tabs-vertical.js";
11
- import _sfc_main$9 from "./tabs/tabs.js";
12
- import _sfc_main$10 from "./checkbox/checkbox.js";
13
- import _sfc_main$11 from "./tree/tree.js";
14
- import _sfc_main$12 from "./tree-select/tree-select.js";
15
- import _sfc_main$13 from "./code-editor/code-editor.js";
16
- import _sfc_main$14 from "./drawer/drawer.js";
17
- import _sfc_main$15 from "./grid/grid.js";
18
- import _sfc_main$16 from "./grid/grid-item.js";
7
+ import _sfc_main$5 from "./loading/loading.js";
8
+ import _sfc_main$6 from "./select/select.js";
9
+ import _sfc_main$7 from "./condition-editor/condition-editor.js";
10
+ import _sfc_main$8 from "./tabs/tabs-horizontal.js";
11
+ import _sfc_main$9 from "./tabs/tabs-vertical.js";
12
+ import _sfc_main$10 from "./tabs/tabs.js";
13
+ import _sfc_main$11 from "./checkbox/checkbox.js";
14
+ import _sfc_main$12 from "./tree/tree.js";
15
+ import _sfc_main$13 from "./tree-select/tree-select.js";
16
+ import _sfc_main$14 from "./code-editor/code-editor.js";
17
+ import _sfc_main$15 from "./drawer/drawer.js";
18
+ import _sfc_main$16 from "./grid/grid.js";
19
+ import _sfc_main$17 from "./grid/grid-item.js";
19
20
  import form_item_default from "./form-item/form-item.js";
20
21
  import form_default from "./form/form.js";
21
- import _sfc_main$17 from "./button/button.js";
22
- import _sfc_main$18 from "./button/button-group.js";
23
- import _sfc_main$19 from "./message-confirm/message-confirm.js";
24
- import _sfc_main$20 from "./calendar/calendar.js";
25
- import _sfc_main$21 from "./radio/radio.js";
26
- import _sfc_main$22 from "./card/card.js";
27
- import _sfc_main$23 from "./card/card-header.js";
28
- import _sfc_main$24 from "./card/card-cover.js";
29
- import _sfc_main$25 from "./card/card-content.js";
30
- import _sfc_main$26 from "./card/card-action.js";
31
- import _sfc_main$27 from "./date-panel/date-panel.js";
32
- import _sfc_main$28 from "./date-range-picker/date-range-picker.js";
33
- import _sfc_main$29 from "./loading/loading.js";
22
+ import _sfc_main$18 from "./button/button.js";
23
+ import _sfc_main$19 from "./button/button-group.js";
24
+ import _sfc_main$20 from "./message-confirm/message-confirm.js";
25
+ import _sfc_main$21 from "./calendar/calendar.js";
26
+ import _sfc_main$22 from "./radio/radio.js";
27
+ import _sfc_main$23 from "./card/card.js";
28
+ import _sfc_main$24 from "./card/card-header.js";
29
+ import _sfc_main$25 from "./card/card-cover.js";
30
+ import _sfc_main$26 from "./card/card-content.js";
31
+ import _sfc_main$27 from "./card/card-action.js";
32
+ import _sfc_main$28 from "./date-panel/date-panel.js";
33
+ import _sfc_main$29 from "./date-range-picker/date-range-picker.js";
34
34
  import _sfc_main$30 from "./progress-nodes/progress-nodes.js";
35
35
  import _sfc_main$31 from "./auto-complete/auto-complete.js";
36
36
  import _sfc_main$32 from "./progress/progress.js";
@@ -108,4 +108,4 @@ import { defineBatchEditColumns } from "./batch-edit/helper.js";
108
108
  import "./batch-edit/index.js";
109
109
  import { defineTableColumns } from "./table/use-columns.js";
110
110
  import "./table/index.js";
111
- export { type EvaluateOptions as ConditionEvaluateOptions, ContextmenuPanelDIKey, ContextmenuRootDIKey, _sfc_main$57 as UAction, action_group_default as UActionGroup, _sfc_main$31 as UAutoComplete, _sfc_main$84 as UBadge, _sfc_main$58 as UBatchEdit, _sfc_main$81 as UBreadcrumb, _sfc_main$17 as UButton, _sfc_main$18 as UButtonGroup, _sfc_main$20 as UCalendar, _sfc_main$22 as UCard, _sfc_main$26 as UCardAction, _sfc_main$25 as UCardContent, _sfc_main$24 as UCardCover, _sfc_main$23 as UCardHeader, _sfc_main$60 as UCascade, _sfc_main$48 as UCheckTag, _sfc_main$10 as UCheckbox, _sfc_main$36 as UCheckboxButton, _sfc_main$78 as UCheckboxGroup, _sfc_main$13 as UCodeEditor, _sfc_main$44 as UCollapse, _sfc_main$45 as UCollapseItem, _sfc_main$6 as UConditionEditor, _sfc_main$49 as UContextmenu, _sfc_main$27 as UDatePanel, _sfc_main$62 as UDatePicker, _sfc_main$28 as UDateRangePicker, _sfc_main$52 as UDialog, _sfc_main$14 as UDrawer, _sfc_main$4 as UDropdown, _sfc_main$73 as UDualNav, _sfc_main$1 as UEmpty, _sfc_main$53 as UExpressionEditor, _sfc_main$41 as UFilePicker, _sfc_main$79 as UFileViewer, _sfc_main$83 as UFloatButton, form_default as UForm, form_item_default as UFormItem, _sfc_main$39 as UGanttChart, _sfc_main$15 as UGrid, _sfc_main$75 as UGridInput, _sfc_main$16 as UGridItem, _sfc_main$66 as UGroupInput, _sfc_main$74 as UGroupNav, _sfc_main as UIcon, _sfc_main$86 as UImageCropper, input_default as UInput, _sfc_main$55 as UKbd, _sfc_main$34 as ULayout, _sfc_main$67 as UList, _sfc_main$68 as UListItem, _sfc_main$29 as ULoading, _sfc_main$40 as UMessage, _sfc_main$19 as UMessageConfirm, _sfc_main$37 as UMultiSelect, _sfc_main$65 as UMultiTreeSelect, _sfc_main$72 as UNav, _sfc_main$70 as UNavItem, _sfc_main$71 as UNavSub, NodeRender as UNodeRender, _sfc_main$33 as UNotification, _sfc_main$51 as UNumber, _sfc_main$42 as UNumberInput, _sfc_main$43 as UNumberRangeInput, _sfc_main$82 as UPaginator, _sfc_main$63 as UPalette, _sfc_main$50 as UPasswordInput, _sfc_main$56 as UPopConfirm, _sfc_main$32 as UProgress, _sfc_main$30 as UProgressNodes, _sfc_main$21 as URadio, _sfc_main$77 as URadioGroup, _sfc_main$69 as URichTextEditor, _sfc_main$2 as UScroll, _sfc_main$85 as USegment, _sfc_main$5 as USelect, _sfc_main$38 as USlider, _sfc_main$61 as USteps, _sfc_main$76 as USwitch, _sfc_main$46 as UTable, _sfc_main$47 as UTableEditor, _sfc_main$9 as UTabs, _sfc_main$7 as UTabsHorizontal, _sfc_main$8 as UTabsVertical, _sfc_main$35 as UTag, _sfc_main$80 as UText, _sfc_main$59 as UTextarea, _sfc_main$64 as UTheme, _sfc_main$3 as UTip, _sfc_main$11 as UTree, _sfc_main$12 as UTreeSelect, _sfc_main$54 as UWatermark, contextmenu, createEmptyGroup, createEmptyLeaf, defineBatchEditColumns, defineTableColumns, evaluate as evaluateConditionExpression, message, messageConfirm, notification, vLoading };
111
+ export { type EvaluateOptions as ConditionEvaluateOptions, ContextmenuPanelDIKey, ContextmenuRootDIKey, _sfc_main$57 as UAction, action_group_default as UActionGroup, _sfc_main$31 as UAutoComplete, _sfc_main$84 as UBadge, _sfc_main$58 as UBatchEdit, _sfc_main$81 as UBreadcrumb, _sfc_main$18 as UButton, _sfc_main$19 as UButtonGroup, _sfc_main$21 as UCalendar, _sfc_main$23 as UCard, _sfc_main$27 as UCardAction, _sfc_main$26 as UCardContent, _sfc_main$25 as UCardCover, _sfc_main$24 as UCardHeader, _sfc_main$60 as UCascade, _sfc_main$48 as UCheckTag, _sfc_main$11 as UCheckbox, _sfc_main$36 as UCheckboxButton, _sfc_main$78 as UCheckboxGroup, _sfc_main$14 as UCodeEditor, _sfc_main$44 as UCollapse, _sfc_main$45 as UCollapseItem, _sfc_main$7 as UConditionEditor, _sfc_main$49 as UContextmenu, _sfc_main$28 as UDatePanel, _sfc_main$62 as UDatePicker, _sfc_main$29 as UDateRangePicker, _sfc_main$52 as UDialog, _sfc_main$15 as UDrawer, _sfc_main$4 as UDropdown, _sfc_main$73 as UDualNav, _sfc_main$1 as UEmpty, _sfc_main$53 as UExpressionEditor, _sfc_main$41 as UFilePicker, _sfc_main$79 as UFileViewer, _sfc_main$83 as UFloatButton, form_default as UForm, form_item_default as UFormItem, _sfc_main$39 as UGanttChart, _sfc_main$16 as UGrid, _sfc_main$75 as UGridInput, _sfc_main$17 as UGridItem, _sfc_main$66 as UGroupInput, _sfc_main$74 as UGroupNav, _sfc_main as UIcon, _sfc_main$86 as UImageCropper, input_default as UInput, _sfc_main$55 as UKbd, _sfc_main$34 as ULayout, _sfc_main$67 as UList, _sfc_main$68 as UListItem, _sfc_main$5 as ULoading, _sfc_main$40 as UMessage, _sfc_main$20 as UMessageConfirm, _sfc_main$37 as UMultiSelect, _sfc_main$65 as UMultiTreeSelect, _sfc_main$72 as UNav, _sfc_main$70 as UNavItem, _sfc_main$71 as UNavSub, NodeRender as UNodeRender, _sfc_main$33 as UNotification, _sfc_main$51 as UNumber, _sfc_main$42 as UNumberInput, _sfc_main$43 as UNumberRangeInput, _sfc_main$82 as UPaginator, _sfc_main$63 as UPalette, _sfc_main$50 as UPasswordInput, _sfc_main$56 as UPopConfirm, _sfc_main$32 as UProgress, _sfc_main$30 as UProgressNodes, _sfc_main$22 as URadio, _sfc_main$77 as URadioGroup, _sfc_main$69 as URichTextEditor, _sfc_main$2 as UScroll, _sfc_main$85 as USegment, _sfc_main$6 as USelect, _sfc_main$38 as USlider, _sfc_main$61 as USteps, _sfc_main$76 as USwitch, _sfc_main$46 as UTable, _sfc_main$47 as UTableEditor, _sfc_main$10 as UTabs, _sfc_main$8 as UTabsHorizontal, _sfc_main$9 as UTabsVertical, _sfc_main$35 as UTag, _sfc_main$80 as UText, _sfc_main$59 as UTextarea, _sfc_main$64 as UTheme, _sfc_main$3 as UTip, _sfc_main$12 as UTree, _sfc_main$13 as UTreeSelect, _sfc_main$54 as UWatermark, contextmenu, createEmptyGroup, createEmptyLeaf, defineBatchEditColumns, defineTableColumns, evaluate as evaluateConditionExpression, message, messageConfirm, notification, vLoading };