@veltra/desktop 1.8.3 → 1.8.4
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.js.map +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/auto-complete/auto-complete.js.map +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/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/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 +1 -0
- package/dist/components/cascade/cascade.js.map +1 -1
- package/dist/components/cascade/use-select.js +6 -2
- 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-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.map +1 -1
- package/dist/components/condition-editor/components/condition-row.js.map +1 -1
- package/dist/components/condition-editor/condition-editor.js.map +1 -1
- package/dist/components/contextmenu/contextmenu-item.js.map +1 -1
- package/dist/components/contextmenu/contextmenu-panel.js.map +1 -1
- package/dist/components/contextmenu/contextmenu-sub.js.map +1 -1
- package/dist/components/contextmenu/contextmenu.js.map +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-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/drawer/drawer.js.map +1 -1
- package/dist/components/dropdown/dropdown.js.map +1 -1
- package/dist/components/dual-nav/dual-nav-app.js.map +1 -1
- package/dist/components/dual-nav/dual-nav.js.map +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/expression-editor.js.map +1 -1
- package/dist/components/file-picker/file-picker.js.map +1 -1
- package/dist/components/file-viewer/file-viewer.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/ofd-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/form.js.map +1 -1
- package/dist/components/form/form.vue_vue_type_script_setup_true_lang.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.map +1 -1
- package/dist/components/gantt-chart/gantt-chart.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-input/grid-input.js.map +1 -1
- package/dist/components/group-input/group-input.js.map +1 -1
- package/dist/components/group-nav/group-nav-item.js.map +1 -1
- package/dist/components/group-nav/group-nav.js.map +1 -1
- package/dist/components/icon/icon.js.map +1 -1
- package/dist/components/image-cropper/image-cropper.js.map +1 -1
- package/dist/components/input/input.js.map +1 -1
- package/dist/components/input/input.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/kanban/kanban-column.js.map +1 -1
- package/dist/components/kanban/kanban.js.map +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/loading.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-confirm/message-confirm-box.js.map +1 -1
- package/dist/components/message-confirm/message-confirm.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-tree-select/multi-tree-select.js.map +1 -1
- package/dist/components/nav/nav-icon.js.map +1 -1
- package/dist/components/nav/nav-item-collapsed.js.map +1 -1
- package/dist/components/nav/nav-item.js.map +1 -1
- package/dist/components/nav/nav-sub-collapsed.js.map +1 -1
- package/dist/components/nav/nav-sub.js.map +1 -1
- package/dist/components/nav/nav.js.map +1 -1
- package/dist/components/notification/notification-box.js.map +1 -1
- package/dist/components/notification/notification.js.map +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-range-input/number-range-input.js.map +1 -1
- package/dist/components/paginator/paginator.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/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-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.map +1 -1
- package/dist/components/scroll/scroll.js.map +1 -1
- package/dist/components/segment/segment.js.map +1 -1
- package/dist/components/select/select.js +9 -5
- package/dist/components/select/select.js.map +1 -1
- package/dist/components/slider/slider-thumb.js.map +1 -1
- package/dist/components/slider/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/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-editor/table-editor.js.map +1 -1
- package/dist/components/tabs/tabs-horizontal.js.map +1 -1
- package/dist/components/tabs/tabs-vertical.js.map +1 -1
- package/dist/components/tabs/tabs.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/textarea.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/tree/tree-node.js.map +1 -1
- package/dist/components/tree/tree.js.map +1 -1
- package/dist/components/tree-select/tree-select.js +19 -10
- package/dist/components/tree-select/tree-select.js.map +1 -1
- package/dist/components/watermark/watermark.js.map +1 -1
- package/dist/types/cascade.d.ts +5 -0
- package/dist/types/select.d.ts +8 -2
- package/dist/types/tree-select.d.ts +8 -2
- package/package.json +18 -18
- package/src/components/batch-edit/__test__/batch-edit.test.ts +1 -1
- package/src/components/button/__test__/button.test.ts +1 -1
- package/src/components/cascade/__test__/cascade.test.ts +26 -1
- package/src/components/cascade/use-select.ts +5 -5
- package/src/components/collapse/__test__/collapse.test.ts +1 -1
- package/src/components/condition-editor/__test__/condition-editor.test.ts +1 -1
- package/src/components/contextmenu/__test__/contextmenu.test.ts +1 -1
- package/src/components/date-picker/__test__/date-picker.test.ts +1 -1
- package/src/components/date-range-picker/__test__/date-range-picker.test.ts +1 -1
- package/src/components/drawer/__test__/drawer.test.ts +1 -1
- package/src/components/expression-editor/__test__/chip.test.ts +1 -1
- package/src/components/expression-editor/__test__/editor.test.ts +1 -1
- package/src/components/expression-editor/__test__/expression-editor.test.ts +1 -1
- package/src/components/expression-editor/__test__/mention.test.ts +1 -1
- package/src/components/expression-editor/__test__/model.test.ts +1 -1
- package/src/components/file-viewer/__test__/helper.test.ts +1 -1
- package/src/components/form/__test__/form.test.ts +1 -1
- package/src/components/form/__test__/is-field-modified.test.ts +1 -1
- package/src/components/form-item/__test__/form-item.test.ts +1 -1
- package/src/components/image-cropper/__test__/draw-crop.test.ts +1 -1
- package/src/components/image-cropper/__test__/image-cropper.test.ts +1 -1
- package/src/components/image-cropper/__test__/use-transform.test.ts +1 -1
- package/src/components/kanban/__test__/kanban.test.ts +1 -1
- package/src/components/message-confirm/__test__/message-confirm.test.ts +1 -1
- package/src/components/multi-tree-select/__test__/multi-tree-select.test.ts +1 -1
- package/src/components/number-input/__test__/number-input.test.ts +1 -1
- package/src/components/number-range-input/__test__/number-range-input.test.ts +1 -1
- package/src/components/palette/__test__/color-transform.test.ts +1 -1
- package/src/components/palette/__test__/palette.test.ts +1 -1
- package/src/components/password-input/__test__/password-input.test.ts +1 -1
- package/src/components/radio-group/__test__/radio-group.test.ts +1 -1
- package/src/components/rich-text-editor/__test__/image-node.test.ts +1 -1
- package/src/components/segment/__test__/segment.test.ts +1 -1
- package/src/components/select/__test__/select.test.ts +68 -1
- package/src/components/select/select.vue +15 -5
- package/src/components/table/__test__/col-width.test.ts +1 -1
- package/src/components/table/__test__/column-style.test.ts +1 -1
- package/src/components/table-editor/__test__/table-editor.test.ts +1 -1
- package/src/components/tree-select/__test__/tree-select.test.ts +50 -1
- package/src/components/tree-select/tree-select.vue +28 -11
- package/src/types/cascade.ts +5 -0
- package/src/types/select.ts +8 -2
- package/src/types/tree-select.ts +9 -2
|
@@ -180,14 +180,16 @@ const { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, prop
|
|
|
180
180
|
})
|
|
181
181
|
|
|
182
182
|
const currentIndex = shallowRef(-1)
|
|
183
|
-
/**
|
|
183
|
+
/** 内部展示文案,仅由选项推导(未命中时展示 text 兜底);经 update:text 通知父级 */
|
|
184
184
|
const label = shallowRef<string>()
|
|
185
185
|
const selected = shallowRef<Record<string, any>>()
|
|
186
186
|
|
|
187
187
|
const displayedValue = computed(() => {
|
|
188
188
|
if (label.value) return label.value
|
|
189
189
|
|
|
190
|
-
|
|
190
|
+
if (selected.value) return o(selected.value).get(labelKey.value)
|
|
191
|
+
// 未命中选项:优先展示 text 兜底文案,避免露出不可读的编码
|
|
192
|
+
return props.text ?? String(props.modelValue ?? '')
|
|
191
193
|
})
|
|
192
194
|
|
|
193
195
|
const dropdownRef = shallowRef<DropdownExposed>()
|
|
@@ -260,11 +262,11 @@ function handleTriggerClickCapture(e: MouseEvent) {
|
|
|
260
262
|
|
|
261
263
|
const { userAction, isUserActive } = useUserAction()
|
|
262
264
|
|
|
263
|
-
/**
|
|
265
|
+
/** 更新内部文案;值变化时 emit update:text(readonly 纯展示,不通知父级) */
|
|
264
266
|
function setLabel(next?: string) {
|
|
265
267
|
if (label.value === next) return
|
|
266
268
|
label.value = next
|
|
267
|
-
emit('update:text', next)
|
|
269
|
+
if (!readonly.value) emit('update:text', next)
|
|
268
270
|
}
|
|
269
271
|
|
|
270
272
|
/** 按 modelValue 与完整选项列表同步高亮索引、选中项与显示标签(外部回显用,O(n)) */
|
|
@@ -282,7 +284,15 @@ function syncSelected(modelValue: any, sourceOptions: Record<string, any>[] | un
|
|
|
282
284
|
(option) => o(option).get(valueKey.value) === modelValue
|
|
283
285
|
)
|
|
284
286
|
selected.value = currentIndex.value >= 0 ? sourceOptions[currentIndex.value] : undefined
|
|
285
|
-
|
|
287
|
+
if (selected.value) {
|
|
288
|
+
setLabel(o(selected.value).get(labelKey.value))
|
|
289
|
+
} else if (props.text) {
|
|
290
|
+
// 未命中但有 text 兜底:文案以父级为准,不回发
|
|
291
|
+
label.value = undefined
|
|
292
|
+
} else {
|
|
293
|
+
// 未命中且无兜底:如实通知父级当前没有可展示文案
|
|
294
|
+
setLabel(undefined)
|
|
295
|
+
}
|
|
286
296
|
} else {
|
|
287
297
|
currentIndex.value = -1
|
|
288
298
|
selected.value = undefined
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { describe, expect, it } from '
|
|
1
|
+
import { describe, expect, it } from 'vite-plus/test'
|
|
2
2
|
import { createApp, h, nextTick, ref, type Ref } from 'vue'
|
|
3
3
|
|
|
4
4
|
import UTreeSelect from '../tree-select.vue'
|
|
@@ -122,6 +122,55 @@ describe('UTreeSelect', () => {
|
|
|
122
122
|
}
|
|
123
123
|
})
|
|
124
124
|
|
|
125
|
+
it('falls back to text when modelValue matches no node', async () => {
|
|
126
|
+
const { host, texts, unmount } = mountTreeSelect({
|
|
127
|
+
modelValue: 'removed',
|
|
128
|
+
text: '已删除的节点'
|
|
129
|
+
})
|
|
130
|
+
|
|
131
|
+
try {
|
|
132
|
+
await nextTick()
|
|
133
|
+
expect(host.querySelector('input')!.value).toBe('已删除的节点')
|
|
134
|
+
|
|
135
|
+
// 未命中且传了 text 兜底:不发送 update:text,父级 text 即事实来源
|
|
136
|
+
expect(texts).toHaveLength(0)
|
|
137
|
+
} finally {
|
|
138
|
+
unmount()
|
|
139
|
+
}
|
|
140
|
+
})
|
|
141
|
+
|
|
142
|
+
it('emits update:text undefined when unmatched echo has no text fallback', async () => {
|
|
143
|
+
const { host, model, texts, unmount } = mountTreeSelect({ modelValue: 'beijing' })
|
|
144
|
+
|
|
145
|
+
try {
|
|
146
|
+
await nextTick()
|
|
147
|
+
expect(texts.at(-1)).toBe('北京')
|
|
148
|
+
|
|
149
|
+
// 值改为不在数据中的值且无 text 兜底:如实发出 undefined
|
|
150
|
+
model.value = 'removed'
|
|
151
|
+
await nextTick()
|
|
152
|
+
await nextTick()
|
|
153
|
+
expect(texts.at(-1)).toBeUndefined()
|
|
154
|
+
expect(host.querySelector('input')!.value).toBe('')
|
|
155
|
+
} finally {
|
|
156
|
+
unmount()
|
|
157
|
+
}
|
|
158
|
+
})
|
|
159
|
+
|
|
160
|
+
it('does not emit update:text in readonly', async () => {
|
|
161
|
+
const { host, texts, unmount } = mountTreeSelect({ modelValue: 'chaoyang', readonly: true })
|
|
162
|
+
|
|
163
|
+
try {
|
|
164
|
+
await nextTick()
|
|
165
|
+
await nextTick()
|
|
166
|
+
// readonly 纯展示:不触发 update:text,避免下游回写
|
|
167
|
+
expect(texts).toHaveLength(0)
|
|
168
|
+
expect(host.textContent).toContain('朝阳区(最新)')
|
|
169
|
+
} finally {
|
|
170
|
+
unmount()
|
|
171
|
+
}
|
|
172
|
+
})
|
|
173
|
+
|
|
125
174
|
it('emits update:text after data arrives for an existing modelValue', async () => {
|
|
126
175
|
const { host, data, texts, unmount } = mountTreeSelect({ modelValue: 'shanghai', data: [] })
|
|
127
176
|
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
</u-dropdown>
|
|
69
69
|
|
|
70
70
|
<template v-else>
|
|
71
|
-
{{
|
|
71
|
+
{{ displayText || FORM_EMPTY_CONTENT }}
|
|
72
72
|
</template>
|
|
73
73
|
</template>
|
|
74
74
|
|
|
@@ -118,6 +118,7 @@ const treeProps = computed(() => {
|
|
|
118
118
|
'placeholder',
|
|
119
119
|
'disabled',
|
|
120
120
|
'label',
|
|
121
|
+
'text',
|
|
121
122
|
'readonly',
|
|
122
123
|
'data',
|
|
123
124
|
'contentClass',
|
|
@@ -185,9 +186,15 @@ watch(
|
|
|
185
186
|
|
|
186
187
|
const model = defineModel<string | number>()
|
|
187
188
|
|
|
188
|
-
/** 内部展示文案,仅由 data
|
|
189
|
+
/** 内部展示文案,仅由 data 推导(未命中时展示 text 兜底);经 update:text 通知父级 */
|
|
189
190
|
const label = shallowRef<string>()
|
|
190
191
|
|
|
192
|
+
/** 展示文案:data 推导优先,未命中时回退 text 兜底 */
|
|
193
|
+
const displayText = computed(() => {
|
|
194
|
+
if (!(model.value || model.value === 0)) return undefined
|
|
195
|
+
return label.value ?? props.text
|
|
196
|
+
})
|
|
197
|
+
|
|
191
198
|
const dropdownVisible = shallowRef(false)
|
|
192
199
|
|
|
193
200
|
/**
|
|
@@ -199,24 +206,23 @@ const querying = shallowRef(false)
|
|
|
199
206
|
|
|
200
207
|
const inputRef = useTemplateRef<InputExposed>('inputRef')
|
|
201
208
|
|
|
202
|
-
/**
|
|
209
|
+
/** 更新内部文案;值变化时 emit update:text(readonly 纯展示,不通知父级) */
|
|
203
210
|
function setLabel(next?: string) {
|
|
204
211
|
if (label.value === next) return
|
|
205
212
|
label.value = next
|
|
206
|
-
emit('update:text', next)
|
|
213
|
+
if (!readonly.value) emit('update:text', next)
|
|
207
214
|
}
|
|
208
215
|
|
|
209
216
|
/** 触发输入框的值:查询态下承载查询串,否则展示选中标签 */
|
|
210
217
|
const inputValue = computed(() => {
|
|
211
218
|
if (filterable.value && querying.value) return qs.value
|
|
212
|
-
return
|
|
219
|
+
return displayText.value
|
|
213
220
|
})
|
|
214
221
|
|
|
215
222
|
/** 查询态下已选标签降级为占位提示 */
|
|
216
223
|
const inputPlaceholder = computed(() => {
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
return display
|
|
224
|
+
if (filterable.value && querying.value && displayText.value) {
|
|
225
|
+
return displayText.value
|
|
220
226
|
}
|
|
221
227
|
return props.placeholder
|
|
222
228
|
})
|
|
@@ -231,7 +237,7 @@ const hovered = shallowRef(false)
|
|
|
231
237
|
/** 悬停且存在选中值时展示清除按钮(替代下拉箭头) */
|
|
232
238
|
const showClear = computed(() => {
|
|
233
239
|
if (!props.clearable || disabled.value || !hovered.value) return false
|
|
234
|
-
return !!
|
|
240
|
+
return !!displayText.value
|
|
235
241
|
})
|
|
236
242
|
|
|
237
243
|
/**
|
|
@@ -278,11 +284,14 @@ watch(
|
|
|
278
284
|
[treeData, model],
|
|
279
285
|
([data, modelVal]) => {
|
|
280
286
|
if (isUserActive()) return
|
|
281
|
-
if (
|
|
287
|
+
if (modelVal === undefined || modelVal === null || modelVal === '') {
|
|
282
288
|
setLabel(undefined)
|
|
283
289
|
return
|
|
284
290
|
}
|
|
285
291
|
|
|
292
|
+
// 数据未就绪(远程加载等):保留现有文案与父级 text 兜底,避免中途被清空
|
|
293
|
+
if (!data?.length) return
|
|
294
|
+
|
|
286
295
|
let nextLabel: string | undefined
|
|
287
296
|
const childrenKey = props.childrenKey ?? 'children'
|
|
288
297
|
data.some((item) => {
|
|
@@ -301,7 +310,15 @@ watch(
|
|
|
301
310
|
|
|
302
311
|
return founded
|
|
303
312
|
})
|
|
304
|
-
|
|
313
|
+
if (nextLabel !== undefined) {
|
|
314
|
+
setLabel(nextLabel)
|
|
315
|
+
} else if (props.text) {
|
|
316
|
+
// 未命中但有 text 兜底:文案以父级为准,不回发
|
|
317
|
+
label.value = undefined
|
|
318
|
+
} else {
|
|
319
|
+
// 未命中且无兜底:如实通知父级当前没有可展示文案
|
|
320
|
+
setLabel(undefined)
|
|
321
|
+
}
|
|
305
322
|
},
|
|
306
323
|
{ immediate: true }
|
|
307
324
|
)
|
package/src/types/cascade.ts
CHANGED
|
@@ -20,6 +20,11 @@ export interface CascadeProps extends FormComponentProps {
|
|
|
20
20
|
modelValue?: string[] | string
|
|
21
21
|
/** 级联数据项的标签字段 */
|
|
22
22
|
labelKey?: string
|
|
23
|
+
/**
|
|
24
|
+
* 兜底展示文案
|
|
25
|
+
* @description 单选 modelValue 未命中数据时展示 text(如回显路径已不在选项中),命中时展示节点 label 路径
|
|
26
|
+
*/
|
|
27
|
+
text?: string
|
|
23
28
|
/** 级联数据项的值字段 */
|
|
24
29
|
valueKey?: string
|
|
25
30
|
/** 占位符 */
|
package/src/types/select.ts
CHANGED
|
@@ -16,6 +16,11 @@ export interface SelectProps extends FormComponentProps {
|
|
|
16
16
|
valueKey?: string
|
|
17
17
|
/** 标签字段 */
|
|
18
18
|
labelKey?: string
|
|
19
|
+
/**
|
|
20
|
+
* 兜底展示文案
|
|
21
|
+
* @description modelValue 未命中选项时展示 text(如回显数据已不在选项中),命中时展示选项 label
|
|
22
|
+
*/
|
|
23
|
+
text?: string
|
|
19
24
|
/** 是否可清除 */
|
|
20
25
|
clearable?: boolean
|
|
21
26
|
/** 占位符 */
|
|
@@ -54,8 +59,9 @@ export interface SelectProps extends FormComponentProps {
|
|
|
54
59
|
|
|
55
60
|
export interface SelectEmits {
|
|
56
61
|
/**
|
|
57
|
-
*
|
|
58
|
-
* @description
|
|
62
|
+
* 选中项文案变化(用于同步父级冗余字段)
|
|
63
|
+
* @description 命中选项时发出 label,清空时发出 undefined;未命中选项时,
|
|
64
|
+
* 传了 text 兜底则不发出(父级文案已是事实来源),未传 text 时发出 undefined;readonly 下不发出
|
|
59
65
|
*/
|
|
60
66
|
(e: 'update:text', text?: string): void
|
|
61
67
|
(e: 'update:modelValue', modelValue?: any): void
|
package/src/types/tree-select.ts
CHANGED
|
@@ -10,6 +10,12 @@ export interface TreeSelectProps
|
|
|
10
10
|
Omit<TreeProps, 'selected' | 'checked' | 'selectable' | 'checkable' | 'data'> {
|
|
11
11
|
modelValue?: string | number
|
|
12
12
|
|
|
13
|
+
/**
|
|
14
|
+
* 兜底展示文案
|
|
15
|
+
* @description modelValue 未命中树节点时展示 text(如回显数据已不在选项中),命中时展示节点 label
|
|
16
|
+
*/
|
|
17
|
+
text?: string
|
|
18
|
+
|
|
13
19
|
/**
|
|
14
20
|
* 树数据
|
|
15
21
|
* @description 如果传入一个函数,那么filterable会被强制启用;
|
|
@@ -53,8 +59,9 @@ export interface TreeSelectEmits {
|
|
|
53
59
|
(e: 'update:modelValue', value?: string | number): void
|
|
54
60
|
(e: 'change', selectedData?: Record<string, any>): void
|
|
55
61
|
/**
|
|
56
|
-
*
|
|
57
|
-
* @description
|
|
62
|
+
* 选中项文案变化(用于同步父级冗余字段)
|
|
63
|
+
* @description 命中节点时发出 label,清空时发出 undefined;未命中节点时,
|
|
64
|
+
* 传了 text 兜底则不发出(父级文案已是事实来源),未传 text 时发出 undefined;readonly 下不发出
|
|
58
65
|
*/
|
|
59
66
|
(e: 'update:text', text?: string): void
|
|
60
67
|
}
|