diff --git a/dashboard/src/components/shared/ConfigItemRenderer.vue b/dashboard/src/components/shared/ConfigItemRenderer.vue
index edae891e13..ab80816a68 100644
--- a/dashboard/src/components/shared/ConfigItemRenderer.vue
+++ b/dashboard/src/components/shared/ConfigItemRenderer.vue
@@ -146,8 +146,9 @@
>
emitUpdate(toNumber(val))"
+ :model-value="toNumber(numericTemp ?? modelValue)"
+ @update:model-value="val => { numericTemp = val; emitUpdate(toNumber(val)) }"
+ @end="numericTemp = null"
:min="itemMeta?.slider?.min ?? 0"
:max="itemMeta?.slider?.max ?? 100"
:step="itemMeta?.slider?.step ?? 1"
@@ -157,8 +158,9 @@
style="flex: 1"
>
emitUpdate(toNumber(val))"
+ :model-value="numericTemp ?? modelValue"
+ @update:model-value="val => (numericTemp = val)"
+ @blur="() => { emitUpdate(toNumber(numericTemp)); numericTemp = null }"
density="compact"
variant="outlined"
class="config-field"
@@ -235,8 +237,11 @@ import PersonaSelector from './PersonaSelector.vue'
import KnowledgeBaseSelector from './KnowledgeBaseSelector.vue'
import PluginSetSelector from './PluginSetSelector.vue'
import T2ITemplateEditor from './T2ITemplateEditor.vue'
+import { ref } from 'vue'
import { useI18n, useModuleI18n } from '@/i18n/composables'
+const numericTemp = ref(null)
+
const props = defineProps({
modelValue: {
type: [String, Number, Boolean, Array, Object],
@@ -358,4 +363,13 @@ function getSpecialSubtype(value) {
:deep(.v-field__input) {
font-size: 14px;
}
+
+:deep(.config-field input[type='number']::-webkit-inner-spin-button),
+:deep(.config-field input[type='number']::-webkit-outer-spin-button) {
+ -webkit-appearance: none;
+}
+
+:deep(.config-field input[type='number']) {
+ -moz-appearance: textfield;
+}