mirror of
https://github.com/nagisa77/OpenIsle.git
synced 2026-03-20 02:47:25 +08:00
use teleport for mobile dropdown
This commit is contained in:
@@ -53,33 +53,35 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="open && isMobile" class="dropdown-mobile-page">
|
<Teleport to="body">
|
||||||
<div class="dropdown-mobile-header">
|
<div v-if="open && isMobile" class="dropdown-mobile-page">
|
||||||
<i class="fas fa-arrow-left" @click="close"></i>
|
<div class="dropdown-mobile-header">
|
||||||
<span class="mobile-title">{{ placeholder }}</span>
|
<i class="fas fa-arrow-left" @click="close"></i>
|
||||||
</div>
|
<span class="mobile-title">{{ placeholder }}</span>
|
||||||
<div class="dropdown-mobile-menu">
|
|
||||||
<div v-if="showSearch" class="dropdown-search">
|
|
||||||
<i class="fas fa-search search-icon"></i>
|
|
||||||
<input type="text" v-model="search" placeholder="搜索" />
|
|
||||||
</div>
|
</div>
|
||||||
<div v-if="loading" class="dropdown-loading">
|
<div class="dropdown-mobile-menu">
|
||||||
<l-hatch size="20" stroke="4" speed="3.5" color="var(--primary-color)"></l-hatch>
|
<div v-if="showSearch" class="dropdown-search">
|
||||||
</div>
|
<i class="fas fa-search search-icon"></i>
|
||||||
<template v-else>
|
<input type="text" v-model="search" placeholder="搜索" />
|
||||||
<div v-for="o in filteredOptions" :key="o.id" @click="select(o.id)"
|
|
||||||
:class="['dropdown-option', optionClass, { 'selected': isSelected(o.id) }]">
|
|
||||||
<slot name="option" :option="o" :isSelected="isSelected(o.id)">
|
|
||||||
<template v-if="o.icon">
|
|
||||||
<img v-if="isImageIcon(o.icon)" :src="o.icon" class="option-icon" />
|
|
||||||
<i v-else :class="['option-icon', o.icon]"></i>
|
|
||||||
</template>
|
|
||||||
<span>{{ o.name }}</span>
|
|
||||||
</slot>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
<div v-if="loading" class="dropdown-loading">
|
||||||
|
<l-hatch size="20" stroke="4" speed="3.5" color="var(--primary-color)"></l-hatch>
|
||||||
|
</div>
|
||||||
|
<template v-else>
|
||||||
|
<div v-for="o in filteredOptions" :key="o.id" @click="select(o.id)"
|
||||||
|
:class="['dropdown-option', optionClass, { 'selected': isSelected(o.id) }]">
|
||||||
|
<slot name="option" :option="o" :isSelected="isSelected(o.id)">
|
||||||
|
<template v-if="o.icon">
|
||||||
|
<img v-if="isImageIcon(o.icon)" :src="o.icon" class="option-icon" />
|
||||||
|
<i v-else :class="['option-icon', o.icon]"></i>
|
||||||
|
</template>
|
||||||
|
<span>{{ o.name }}</span>
|
||||||
|
</slot>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</Teleport>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user