feat(canvas): 下拉统一换成 SelectMenu 组件并支持向上展开

This commit is contained in:
2026-10-12 14:18:50 +08:00
parent af5bf84582
commit d934dbe419
2 changed files with 74 additions and 64 deletions
+4 -2
View File
@@ -13,6 +13,7 @@ const props = defineProps({
placeholder: { type: String, default: '请选择' },
mono: { type: Boolean, default: false },
disabled: { type: Boolean, default: false },
up: { type: Boolean, default: false }, // 面板向上展开(底部居中的输入框用)
})
const emit = defineEmits(['update:modelValue'])
@@ -90,8 +91,9 @@ onUnmounted(() => document.removeEventListener('mousedown', onDocClick))
leave-from-class="opacity-100 translate-y-0"
leave-to-class="opacity-0 -translate-y-1">
<div v-if="open" ref="panel"
class="absolute z-30 mt-2 w-full max-h-64 overflow-auto rounded-xl border border-[color:var(--glass-border)]
bg-[var(--menu-bg)] backdrop-blur-xl p-1.5 shadow-[var(--glass-shadow-lg)]">
class="absolute z-30 w-full max-h-64 overflow-auto rounded-xl border border-[color:var(--glass-border)]
bg-[var(--menu-bg)] backdrop-blur-xl p-1.5 shadow-[var(--glass-shadow-lg)]"
:class="up ? 'bottom-full mb-2' : 'mt-2'">
<button v-for="(o, i) in options" :key="o.value" type="button"
:data-idx="i" @click="pick(o)" @mouseenter="active = i"
class="w-full flex items-center justify-between gap-2 rounded-lg px-3 py-2 text-left text-sm font-medium transition-colors"