Add optional clickable animation to .bi

This commit is contained in:
Denevola 2022-09-24 02:39:38 +09:00
parent 0c5b358ddc
commit b9d84f2534
7 changed files with 30 additions and 21 deletions

View file

@ -200,6 +200,15 @@ button {
.bi[data-active='true'] { .bi[data-active='true'] {
color: var(--color-foreground); color: var(--color-foreground);
} }
.bi.clickable::before {
border-radius: 50%;
transition: background-color 0.1s ease, box-shadow 0.1s ease;
}
.bi.clickable:active::before {
background-color: var(--color-border);
box-shadow: 0 0 0 0.5rem var(--color-border);
}
.caps { .caps {
text-transform: capitalize; text-transform: capitalize;

View file

@ -4,7 +4,7 @@ defineEmits(['click']);
</script> </script>
<template> <template>
<button :class="'bi bi-' + (ico ? ico : 'play')" @click="$emit('click')"> <button :class="'bi clickable bi-' + (ico ? ico : 'play')" @click="$emit('click')">
<slot name="menu"></slot> <slot name="menu"></slot>
</button> </button>
</template> </template>

View file

@ -20,7 +20,7 @@ watch(show, n => {
<template> <template>
<Transition name="fade"> <Transition name="fade">
<div class="modal" v-if="show"> <div class="modal" v-if="show">
<span class="bi bi-x-lg modal-close" @click="show = false"></span> <span class="bi bi-x-lg clickable modal-close" @click="show = false"></span>
<div class="modal-box"> <div class="modal-box">
<div class="modal-title">{{ title }}</div> <div class="modal-title">{{ title }}</div>
<div class="modal-content"> <div class="modal-content">

View file

@ -43,19 +43,19 @@ function set(page) {
<div class="wrap"> <div class="wrap">
<span <span
class="nav-ico bi bi-house" class="nav-ico bi bi-house clickable"
:data-active="nav.state.page == 'home'" :data-active="nav.state.page == 'home'"
@click="set('home')"></span> @click="set('home')"></span>
<span <span
class="nav-ico bi bi-compass" class="nav-ico bi bi-compass clickable"
:data-active="nav.state.page == 'explore'" :data-active="nav.state.page == 'explore'"
@click="set('explore')"></span> @click="set('explore')"></span>
<span <span
class="nav-ico bi bi-collection" class="nav-ico bi bi-collection clickable"
:data-active="nav.state.page == 'library'" :data-active="nav.state.page == 'library'"
@click="set('library')"></span> @click="set('library')"></span>
<span <span
class="nav-ico bi bi-gear" class="nav-ico bi bi-gear clickable"
:data-active="nav.state.page == 'prefs'" :data-active="nav.state.page == 'prefs'"
@click="set('prefs')"></span> @click="set('prefs')"></span>
</div> </div>

View file

@ -141,10 +141,10 @@ onUpdated(() => {
<template #menu> <template #menu>
<Transition name="fade"> <Transition name="fade">
<div v-if="albumMenu" class="alb popup"> <div v-if="albumMenu" class="alb popup">
<button class="bi bi-bookmark-plus" @click="saveAlbum"></button> <button class="bi bi-bookmark-plus clickable" @click="saveAlbum"></button>
<button <button
class="bi bi-plus-lg" class="bi bi-plus-lg clickable"
@click=" @click="
data.state.urls.push( data.state.urls.push(
...results.items.songs.items.map(i => ({ ...results.items.songs.items.map(i => ({
@ -155,7 +155,7 @@ onUpdated(() => {
) )
"></button> "></button>
<button class="bi bi-shuffle" @click="shuffleAdd"></button> <button class="bi bi-shuffle clickable" @click="shuffleAdd"></button>
</div> </div>
</Transition> </Transition>
</template> </template>

View file

@ -117,12 +117,12 @@ onMounted(() => {
<!-- TODO: Check if user is admin --> <!-- TODO: Check if user is admin -->
<span <span
v-if="useStore().auth && playlistId" v-if="useStore().auth && playlistId"
class="bi bi-dash-lg ign" class="bi bi-dash-lg clickable ign"
@click="Remove"></span> @click="Remove"></span>
<span class="bi bi-plus-lg ign" @click="addSong"></span> <span class="bi bi-plus-lg clickable ign" @click="addSong"></span>
<span class="bi bi-share ign" @click="Share"></span> <span class="bi bi-share clickable ign" @click="Share"></span>
</div> </div>
</Transition> </Transition>
</span> </span>

View file

@ -144,7 +144,7 @@ async function Like() {
<button <button
id="btn-play-pause" id="btn-play-pause"
aria-label="Play or Pause" aria-label="Play or Pause"
class="bi" class="bi clickable"
:class="'bi-' + player.state.status" :class="'bi-' + player.state.status"
@click="player.toggle('play')"></button> @click="player.toggle('play')"></button>
@ -167,7 +167,7 @@ async function Like() {
id="vol-btn" id="vol-btn"
aria-label="Volume Buttons" aria-label="Volume Buttons"
@click="showme.vol = !showme.vol" @click="showme.vol = !showme.vol"
class="popup-wrap bi bi-volume-up"> class="popup-wrap bi bi-volume-up clickable">
<Transition name="fade"> <Transition name="fade">
<div v-if="showme.vol" id="vol" class="popup"> <div v-if="showme.vol" id="vol" class="popup">
<input <input
@ -182,7 +182,7 @@ async function Like() {
</Transition> </Transition>
</button> </button>
<button <button
class="bi bi-three-dots" class="bi bi-three-dots clickable"
aria-label="More Controls" aria-label="More Controls"
@click=" @click="
showme.menu = !showme.menu; showme.menu = !showme.menu;
@ -194,7 +194,7 @@ async function Like() {
<div id="menu" v-if="showme.menu" class="popup"> <div id="menu" v-if="showme.menu" class="popup">
<button <button
id="info-btn" id="info-btn"
class="bi bi-info-circle" class="bi bi-info-circle clickable"
aria-label="Show Information About Song" aria-label="Show Information About Song"
:data-active="player.state.info" :data-active="player.state.info"
@click="player.toggle('info')"></button> @click="player.toggle('info')"></button>
@ -203,7 +203,7 @@ async function Like() {
v-if="store.auth" v-if="store.auth"
id="like-btn" id="like-btn"
title="Add song to favorites" title="Add song to favorites"
class="bi blink" class="bi blink clickable"
:class="data.state.url == liked ? 'bi-heart-fill' : 'bi-heart'" :class="data.state.url == liked ? 'bi-heart-fill' : 'bi-heart'"
:data-active="data.state.url == liked" :data-active="data.state.url == liked"
:data-loading="liking" :data-loading="liking"
@ -213,20 +213,20 @@ async function Like() {
id="addToPlaylist" id="addToPlaylist"
title="Add Current Song to a Playlist" title="Add Current Song to a Playlist"
aria-label="Add Current Song to a Playlist" aria-label="Add Current Song to a Playlist"
class="bi bi-collection" class="bi bi-collection clickable"
@click="List"></button> @click="List"></button>
<button <button
id="list-btn" id="list-btn"
title="Current Playlist" title="Current Playlist"
aria-label="Current Playlist" aria-label="Current Playlist"
class="bi bi-music-note-list" class="bi bi-music-note-list clickable"
:data-active="player.state.playlist" :data-active="player.state.playlist"
@click="player.toggle('playlist')"></button> @click="player.toggle('playlist')"></button>
<button <button
id="btn-lyrics" id="btn-lyrics"
class="bi bi-file-music" class="bi bi-file-music clickable"
:data-active="player.state.lyrics" :data-active="player.state.lyrics"
@click="player.toggle('lyrics')"></button> @click="player.toggle('lyrics')"></button>
@ -234,7 +234,7 @@ async function Like() {
id="loop-btn" id="loop-btn"
title="Loop" title="Loop"
aria-label="Loop" aria-label="Loop"
class="bi" class="bi clickable"
:class="player.state.loop < 2 ? 'bi-repeat' : 'bi-repeat-1'" :class="player.state.loop < 2 ? 'bi-repeat' : 'bi-repeat-1'"
:data-active="player.state.loop > 0" :data-active="player.state.loop > 0"
@click=" @click="