fix(ui): Split Playbutton

This commit is contained in:
ArneBo 2025-01-21 19:25:18 +01:00
parent 864347d882
commit e726c8cb77
1 changed files with 16 additions and 5 deletions

View File

@ -17,6 +17,7 @@ import PopoverItem from '~/components/ui/popover/PopoverItem.vue'
interface Props extends PlayOptionsProps { interface Props extends PlayOptionsProps {
split?: boolean
dropdownIconClasses?: string[] dropdownIconClasses?: string[]
playIconClass?: string playIconClass?: string
buttonClasses?: string[] buttonClasses?: string[]
@ -39,6 +40,7 @@ interface Props extends PlayOptionsProps {
} }
const props = withDefaults(defineProps<Props>(), { const props = withDefaults(defineProps<Props>(), {
split: false,
tracks: () => [], tracks: () => [],
track: null, track: null,
artist: null, artist: null,
@ -107,12 +109,11 @@ const title = computed(() => {
}) })
const isOpen = ref(false) const isOpen = ref(false)
</script> </script>
<template> <template>
<Popover <Popover
v-if="!discrete && !iconOnly && dropdownOnly" v-if="split || (!discrete && !iconOnly && dropdownOnly)"
v-model:open="isOpen" v-model:open="isOpen"
> >
<OptionsButton <OptionsButton
@ -242,16 +243,26 @@ const isOpen = ref(false)
:aria-label="labels.replacePlay" :aria-label="labels.replacePlay"
:class="[...buttonClasses]" :class="[...buttonClasses]"
:isloading="isLoading" :isloading="isLoading"
:tiny="discrete" :tiny="iconOnly && discrete"
:icon="!playing ? playIconClass : 'bi-pause-fill'" :icon="!playing ? playIconClass : 'bi-pause-fill'"
:round="iconOnly" :round="iconOnly"
:secondary="iconOnly" :secondary="iconOnly && !discrete"
:ghost="discrete"
@click.stop.prevent="replacePlay()" @click.stop.prevent="replacePlay()"
> >
<template v-if="!discrete || !iconOnly"> <template v-if="!discrete && !iconOnly">
<span> <span>
{{ t('components.audio.PlayButton.button.discretePlay') }} {{ t('components.audio.PlayButton.button.discretePlay') }}
</span> </span>
</template> </template>
</Button> </Button>
</template> </template>
<style lang="scss" scoped>
.funkwhale.split-button {
&.button {
gap: 0px;
padding: 0px;
}
}
</style>