cloud-ui.vusion
Version:
Vusion Cloud UI
32 lines (31 loc) • 1.63 kB
HTML
<u-popper ref="popper" :disabled="readonly || disabled" @toggle="onToggle($event)" append-to="reference">
<div :class="$style.root" :readonly="readonly" :disabled="disabled"
:tabindex="readonly || disabled ? '' : 0"
@keydown.prevent.up="$refs.popper.currentOpen ? shift(-1) : toggle(true)"
@keydown.prevent.down="$refs.popper.currentOpen ? shift(+1) : toggle(true)"
@keydown.stop.enter="toggle()"
@keydown.stop.esc="toggle(false)">
<span :class="$style.text" v-ellipsis-title :style="{direction: ellipsisDirection}">
<!-- @override: 添加了flag功能 -->
<slot name="flag">
<span v-if="selectedVM && selectedVM.flag !== undefined" :class="$style.flag" :layer="selectedVM && selectedVM.layer" v-tooltip.top="selectedVM && selectedVM.flag"></span>
</slot>
<u-render :vnode="selectedVM && selectedVM.$slots.default"></u-render>
</span>
</div>
<!-- 这个地方以后可能要改用render实现 -->
<ul :class="$style.popper" slot="popper" @click.stop @scroll.stop="onScroll">
<slot></slot>
<component :is="ChildComponent" v-if="currentData"
v-for="item in currentData"
:key="item.value"
:value="item.value"
:disabled="item.disabled || disabled"
:flag="item.flag"
:item="item"
>{{ item[field] }}</component>
<div :class="$style.status" status="loading" v-if="loading">
<slot name="loading"><u-spinner></u-spinner> {{ loadingText }}</slot>
</div>
</ul>
</u-popper>