添加列表激活图标

This commit is contained in:
lyswhut
2022-11-14 20:22:35 +08:00
parent e79f8b357c
commit ab37817d26
7 changed files with 114 additions and 6 deletions
@@ -5,7 +5,12 @@
:key="item.id" :class="[$style.listsItem, { [$style.active]: item.id == boardId }, { [$style.clicked]: rightClickItemIndex == index }]"
:aria-label="item.name" @click="handleToggleList(item.id)" @contextmenu="handleRigthClick($event, index)"
>
<span :class="$style.listsLabel">{{ item.name }}</span>
<span :class="$style.listsLabel">
<transition name="list-active">
<svg-icon v-if="item.id == boardId" name="angle-right-solid" :class="$style.activeIcon" />
</transition>
{{ item.name }}
</span>
</li>
</ul>
<base-menu
@@ -122,6 +127,12 @@ defineExpose({ hideMenu: handleMenuClick })
}
}
}
.activeIcon {
height: .9em;
width: .9em;
margin-left: -0.45em;
vertical-align: -0.05em;
}
.listsLabel {
display: block;
height: 100%;
+38 -2
View File
@@ -31,7 +31,14 @@
class="list-item" :class="[{ [$style.active]: playerInfo.isPlayList && playerInfo.playIndex === index }, { selected: selectedIndex == index || rightClickSelectedIndex == index }, { active: selectedList.includes(item) }, { disabled: !assertApiSupport(item.source) }]"
@click="handleListItemClick($event, index)" @contextmenu="handleListItemRightClick($event, index)"
>
<div class="list-item-cell no-select num" style="flex: 0 0 5%;" @click.stop>{{ index + 1 }}</div>
<div class="list-item-cell no-select" :class="$style.num" style="flex: 0 0 5%;">
<div v-if="playerInfo.isPlayList && playerInfo.playIndex === index" :class="$style.playIcon">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xlink="http://www.w3.org/1999/xlink" width="50%" viewBox="0 0 512 512" space="preserve">
<use xlink:href="#icon-play-outline" />
</svg>
</div>
<div v-else class="num">{{ index + 1 }}</div>
</div>
<div class="list-item-cell auto name" :aria-label="item.name">
<span class="select name">{{ item.name }}</span>
<span v-if="isShowSource" class="no-select label-source">{{ item.source }}</span>
@@ -54,7 +61,16 @@
:class="[{ [$style.active]: playerInfo.isPlayList && playerInfo.playIndex === index }, { selected: selectedIndex == index || rightClickSelectedIndex == index }, { active: selectedList.includes(item) }, { disabled: !assertApiSupport(item.source) }]"
@click="handleListItemClick($event, index)" @contextmenu="handleListItemRightClick($event, index)"
>
<div class="list-item-cell no-select num" style="flex: 0 0 5%;" @click.stop>{{ index + 1 }}</div>
<div class="list-item-cell no-select" :class="$style.num" style="flex: 0 0 5%;">
<transition name="play-active">
<div v-if="playerInfo.isPlayList && playerInfo.playIndex === index" :class="$style.playIcon">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xlink="http://www.w3.org/1999/xlink" width="50%" viewBox="0 0 512 512" space="preserve">
<use xlink:href="#icon-play-outline" />
</svg>
</div>
<div v-else class="num">{{ index + 1 }}</div>
</transition>
</div>
<div class="list-item-cell auto name">
<span class="select name" :aria-label="item.name">{{ item.name }}</span>
<span v-if="isShowSource" class="no-select label-source">{{ item.source }}</span>
@@ -350,6 +366,26 @@ export default {
}
}
}
.num {
height: 100%;
display: flex;
align-items: center;
justify-content: center;
position: relative;
}
.playIcon {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
color: var(--color-button-font);
opacity: .7;
}
.content {
min-height: 0;
font-size: 14px;
+29 -3
View File
@@ -21,14 +21,29 @@
:aria-label="defaultList.name" :aria-selected="defaultList.id == listId"
@contextmenu="handleListsItemRigthClick($event, -2)" @click="handleListToggle(defaultList.id)"
>
<span :class="$style.listsLabel">{{ defaultList.name }}</span>
<!-- <div v-if="defaultList.id == listId" :class="$style.activeIcon">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xlink="http://www.w3.org/1999/xlink" height="40%" viewBox="0 0 451.846 451.847" space="preserve">
<use xlink:href="#icon-right" />
</svg>
</div> -->
<span :class="$style.listsLabel">
<transition name="list-active">
<svg-icon v-if="defaultList.id == listId" name="angle-right-solid" :class="$style.activeIcon" />
</transition>
{{ defaultList.name }}
</span>
</li>
<li
class="default-list" :class="[$style.listsItem, {[$style.active]: loveList.id == listId}, {[$style.clicked]: rightClickItemIndex == -1}, {[$style.fetching]: fetchingListStatus[loveList.id]}]"
:aria-label="loveList.name" :aria-selected="loveList.id == listId"
@contextmenu="handleListsItemRigthClick($event, -1)" @click="handleListToggle(loveList.id)"
>
<span :class="$style.listsLabel">{{ loveList.name }}</span>
<span :class="$style.listsLabel">
<transition name="list-active">
<svg-icon v-if="loveList.id == listId" name="angle-right-solid" :class="$style.activeIcon" />
</transition>
{{ loveList.name }}
</span>
</li>
<li
v-for="(item, index) in userLists"
@@ -36,7 +51,12 @@
:class="[$style.listsItem, {[$style.active]: item.id == listId}, {[$style.clicked]: rightClickItemIndex == index}, {[$style.fetching]: fetchingListStatus[item.id]}]"
:data-index="index" :aria-label="item.name" :aria-selected="defaultList.id == listId" @contextmenu="handleListsItemRigthClick($event, index)"
>
<span :class="$style.listsLabel" @click="handleListToggle(item.id, index + 2)">{{ item.name }}</span>
<span :class="$style.listsLabel" @click="handleListToggle(item.id, index + 2)">
<transition name="list-active">
<svg-icon v-if="item.id == listId" name="angle-right-solid" :class="$style.activeIcon" />
</transition>
{{ item.name }}
</span>
<input
:class="$style.listsInput" type="text" :value="item.name"
:placeholder="item.name" @contextmenu.stop @keyup.enter="handleSaveListName(index, $event)" @blur="handleSaveListName(index, $event)"
@@ -341,6 +361,12 @@ export default {
}
}
}
.activeIcon {
height: .9em;
width: .9em;
margin-left: -0.45em;
vertical-align: -0.05em;
}
.listsLabel {
display: block;
height: @lists-item-height;
+9
View File
@@ -8,6 +8,9 @@
role="tab" :aria-selected="avtiveComponentName == h2.id"
:aria-label="h2.title" ignore-tip @click="toggleTab(h2.id)"
>
<transition name="list-active">
<svg-icon v-if="avtiveComponentName == h2.id" name="angle-right-solid" :class="$style.activeIcon" />
</transition>
{{ h2.title }}
</h2>
<!-- <ul v-if="h2.children.length" :class="$style.tocList">
@@ -202,6 +205,12 @@ export default {
color: var(--color-primary);
}
}
.activeIcon {
height: .9em;
width: .9em;
margin-left: -0.45em;
vertical-align: -0.05em;
}
// .tocH3 {
// font-size: 13px;
// opacity: .8;