mirror of
https://github.com/nagisa77/OpenIsle.git
synced 2026-02-20 22:11:01 +08:00
Compare commits
1 Commits
codex/add-
...
codex/adap
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bf169932b3 |
@@ -19,6 +19,14 @@
|
|||||||
class="option-icon"
|
class="option-icon"
|
||||||
:alt="label.name"
|
:alt="label.name"
|
||||||
/>
|
/>
|
||||||
|
<component
|
||||||
|
v-else-if="isIconComponent(label.icon)"
|
||||||
|
:is="label.icon"
|
||||||
|
class="option-icon"
|
||||||
|
theme="outline"
|
||||||
|
size="16"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
<i v-else :class="['option-icon', label.icon]"></i>
|
<i v-else :class="['option-icon', label.icon]"></i>
|
||||||
</template>
|
</template>
|
||||||
<span>{{ label.name }}</span>
|
<span>{{ label.name }}</span>
|
||||||
@@ -38,6 +46,14 @@
|
|||||||
class="option-icon"
|
class="option-icon"
|
||||||
:alt="selectedLabels[0].name"
|
:alt="selectedLabels[0].name"
|
||||||
/>
|
/>
|
||||||
|
<component
|
||||||
|
v-else-if="isIconComponent(selectedLabels[0].icon)"
|
||||||
|
:is="selectedLabels[0].icon"
|
||||||
|
class="option-icon"
|
||||||
|
theme="outline"
|
||||||
|
size="16"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
<i v-else :class="['option-icon', selectedLabels[0].icon]"></i>
|
<i v-else :class="['option-icon', selectedLabels[0].icon]"></i>
|
||||||
</template>
|
</template>
|
||||||
<span>{{ selectedLabels[0].name }}</span>
|
<span>{{ selectedLabels[0].name }}</span>
|
||||||
@@ -45,7 +61,7 @@
|
|||||||
</span>
|
</span>
|
||||||
<span v-else class="placeholder">{{ placeholder }}</span>
|
<span v-else class="placeholder">{{ placeholder }}</span>
|
||||||
</template>
|
</template>
|
||||||
<i class="fas fa-caret-down dropdown-caret"></i>
|
<Down class="dropdown-caret" theme="outline" size="16" fill="currentColor" />
|
||||||
</slot>
|
</slot>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
@@ -54,7 +70,7 @@
|
|||||||
v-click-outside="close"
|
v-click-outside="close"
|
||||||
>
|
>
|
||||||
<div v-if="showSearch" class="dropdown-search">
|
<div v-if="showSearch" class="dropdown-search">
|
||||||
<i class="fas fa-search search-icon"></i>
|
<SearchIcon class="search-icon" theme="outline" size="16" fill="currentColor" />
|
||||||
<input type="text" v-model="search" placeholder="搜索" />
|
<input type="text" v-model="search" placeholder="搜索" />
|
||||||
</div>
|
</div>
|
||||||
<div v-if="loading" class="dropdown-loading">
|
<div v-if="loading" class="dropdown-loading">
|
||||||
@@ -75,6 +91,14 @@
|
|||||||
class="option-icon"
|
class="option-icon"
|
||||||
:alt="o.name"
|
:alt="o.name"
|
||||||
/>
|
/>
|
||||||
|
<component
|
||||||
|
v-else-if="isIconComponent(o.icon)"
|
||||||
|
:is="o.icon"
|
||||||
|
class="option-icon"
|
||||||
|
theme="outline"
|
||||||
|
size="16"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
<i v-else :class="['option-icon', o.icon]"></i>
|
<i v-else :class="['option-icon', o.icon]"></i>
|
||||||
</template>
|
</template>
|
||||||
<span>{{ o.name }}</span>
|
<span>{{ o.name }}</span>
|
||||||
@@ -85,12 +109,12 @@
|
|||||||
<Teleport to="body">
|
<Teleport to="body">
|
||||||
<div v-if="open && isMobile" class="dropdown-mobile-page">
|
<div v-if="open && isMobile" class="dropdown-mobile-page">
|
||||||
<div class="dropdown-mobile-header">
|
<div class="dropdown-mobile-header">
|
||||||
<i class="fas fa-arrow-left" @click="close"></i>
|
<ArrowLeft @click="close" theme="outline" size="16" fill="currentColor" />
|
||||||
<span class="mobile-title">{{ placeholder }}</span>
|
<span class="mobile-title">{{ placeholder }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="dropdown-mobile-menu">
|
<div class="dropdown-mobile-menu">
|
||||||
<div v-if="showSearch" class="dropdown-search">
|
<div v-if="showSearch" class="dropdown-search">
|
||||||
<i class="fas fa-search search-icon"></i>
|
<SearchIcon class="search-icon" theme="outline" size="16" fill="currentColor" />
|
||||||
<input type="text" v-model="search" placeholder="搜索" />
|
<input type="text" v-model="search" placeholder="搜索" />
|
||||||
</div>
|
</div>
|
||||||
<div v-if="loading" class="dropdown-loading">
|
<div v-if="loading" class="dropdown-loading">
|
||||||
@@ -111,6 +135,14 @@
|
|||||||
class="option-icon"
|
class="option-icon"
|
||||||
:alt="o.name"
|
:alt="o.name"
|
||||||
/>
|
/>
|
||||||
|
<component
|
||||||
|
v-else-if="isIconComponent(o.icon)"
|
||||||
|
:is="o.icon"
|
||||||
|
class="option-icon"
|
||||||
|
theme="outline"
|
||||||
|
size="16"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
<i v-else :class="['option-icon', o.icon]"></i>
|
<i v-else :class="['option-icon', o.icon]"></i>
|
||||||
</template>
|
</template>
|
||||||
<span>{{ o.name }}</span>
|
<span>{{ o.name }}</span>
|
||||||
@@ -249,6 +281,11 @@ export default {
|
|||||||
return /^https?:\/\//.test(icon) || icon.startsWith('/')
|
return /^https?:\/\//.test(icon) || icon.startsWith('/')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const isIconComponent = (icon) => {
|
||||||
|
if (!icon) return false
|
||||||
|
return !icon.includes(' ')
|
||||||
|
}
|
||||||
|
|
||||||
expose({ toggle, close })
|
expose({ toggle, close })
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@@ -263,6 +300,7 @@ export default {
|
|||||||
isSelected,
|
isSelected,
|
||||||
loading,
|
loading,
|
||||||
isImageIcon,
|
isImageIcon,
|
||||||
|
isIconComponent,
|
||||||
setSearch,
|
setSearch,
|
||||||
isMobile,
|
isMobile,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ import {
|
|||||||
MessageOne,
|
MessageOne,
|
||||||
AlarmClock,
|
AlarmClock,
|
||||||
Bookmark,
|
Bookmark,
|
||||||
|
ArrowLeft,
|
||||||
} from '@icon-park/vue-next'
|
} from '@icon-park/vue-next'
|
||||||
|
|
||||||
export default defineNuxtPlugin((nuxtApp) => {
|
export default defineNuxtPlugin((nuxtApp) => {
|
||||||
@@ -75,4 +76,5 @@ export default defineNuxtPlugin((nuxtApp) => {
|
|||||||
nuxtApp.vueApp.component('MessageOne', MessageOne)
|
nuxtApp.vueApp.component('MessageOne', MessageOne)
|
||||||
nuxtApp.vueApp.component('AlarmClock', AlarmClock)
|
nuxtApp.vueApp.component('AlarmClock', AlarmClock)
|
||||||
nuxtApp.vueApp.component('Bookmark', Bookmark)
|
nuxtApp.vueApp.component('Bookmark', Bookmark)
|
||||||
|
nuxtApp.vueApp.component('ArrowLeft', ArrowLeft)
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user