<template> <transition name="el-zoom-in-top" @after-leave="doDestroy"> <div v-show="showPopper" class="el-autocomplete-suggestion el-popper" :class="{ 'is-loading': !parent.hideLoading && parent.loading }" :style="{ width: dropdownWidth }" role="region"> <el-scrollbar tag="ul" wrap-class="el-autocomplete-suggestion__wrap" view-class="el-autocomplete-suggestion__list"> <li v-if="!parent.hideLoading && parent.loading"><i class="el-icon-loading"></i></li> <slot v-else> </slot> </el-scrollbar> </div> </transition> </template> <script> import Popper from 'element-ui/src/utils/vue-popper'; import Emitter from 'element-ui/src/mixins/emitter'; import ElScrollbar from 'element-ui/packages/scrollbar'; export default { components: { ElScrollbar }, mixins: [Popper, Emitter], componentName: 'ElAutocompleteSuggestions', data() { return { parent: this.$parent, dropdownWidth: '' }; }, props: { options: { default() { return { gpuAcceleration: false }; } }, id: String }, methods: { select(item) { this.dispatch('ElAutocomplete', 'item-click', item); } }, updated() { this.$nextTick(_ => { this.popperJS && this.updatePopper(); }); }, mounted() { this.$parent.popperElm = this.popperElm = this.$el; this.referenceElm = this.$parent.$refs.input.$refs.input || this.$parent.$refs.input.$refs.textarea; this.referenceList = this.$el.querySelector('.el-autocomplete-suggestion__list'); this.referenceList.setAttribute('role', 'listbox'); this.referenceList.setAttribute('id', this.id); }, created() { this.$on('visible', (val, inputWidth) => { this.dropdownWidth = inputWidth + 'px'; this.showPopper = val; }); } }; </script>