12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- <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>
|