mirror of
https://github.com/element-plus/element-plus.git
synced 2026-03-13 07:51:17 +08:00
* refactor(components): [select&select-v2] refactor components * refactor(components): [select-v2] * refactor(components): update * refactor(components): update * refactor(components): [select-v2] update * refactor(components): update * refactor(components): update * refactor(components): update type * refactor(components): update * refactor(components): update * refactor(components): update style * refactor(components): update docs * refactor(components): update * refactor(components): fix #15323 * refactor(theme-chalk): update * refactor(components): update * refactor(components): update * refactor(components): update * refactor(components): fix bugs * fix(components): fix issue * fix(components): update * fix(components): fix some bug * feat(components): update * feat(components): add tag slot * feat(components): update * fix(components): update * style(theme-chalk): update style * fix(theme-chalk): update * feat(theme-chalk): update * fix(components): update * feat: update * feat: update * feat: update * feat(components): update
58 lines
1.4 KiB
Vue
58 lines
1.4 KiB
Vue
<template>
|
|
<div
|
|
:class="[ns.b('dropdown'), ns.is('multiple', isMultiple), popperClass]"
|
|
:style="{ [isFitInputWidth ? 'width' : 'minWidth']: minWidth }"
|
|
>
|
|
<div v-if="$slots.header" :class="ns.be('dropdown', 'header')">
|
|
<slot name="header" />
|
|
</div>
|
|
<slot />
|
|
<div v-if="$slots.footer" :class="ns.be('dropdown', 'footer')">
|
|
<slot name="footer" />
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script lang="ts">
|
|
import { computed, defineComponent, inject, onMounted, ref } from 'vue'
|
|
import { useResizeObserver } from '@vueuse/core'
|
|
import { useNamespace } from '@element-plus/hooks'
|
|
import { selectKey } from './token'
|
|
|
|
export default defineComponent({
|
|
name: 'ElSelectDropdown',
|
|
|
|
componentName: 'ElSelectDropdown',
|
|
|
|
setup() {
|
|
const select = inject(selectKey)!
|
|
const ns = useNamespace('select')
|
|
|
|
// computed
|
|
const popperClass = computed(() => select.props.popperClass)
|
|
const isMultiple = computed(() => select.props.multiple)
|
|
const isFitInputWidth = computed(() => select.props.fitInputWidth)
|
|
const minWidth = ref('')
|
|
|
|
function updateMinWidth() {
|
|
minWidth.value = `${select.selectRef?.offsetWidth}px`
|
|
}
|
|
|
|
onMounted(() => {
|
|
// TODO: updatePopper
|
|
// popper.value.update()
|
|
updateMinWidth()
|
|
useResizeObserver(select.selectRef, updateMinWidth)
|
|
})
|
|
|
|
return {
|
|
ns,
|
|
minWidth,
|
|
popperClass,
|
|
isMultiple,
|
|
isFitInputWidth,
|
|
}
|
|
},
|
|
})
|
|
</script>
|