306a926c66
Co-authored-by: sytone <github@sytone.com> Co-authored-by: Sytone <github@sytone.com> Co-authored-by: kolaente <k@knt.li> Reviewed-on: https://kolaente.dev/vikunja/frontend/pulls/520 Reviewed-by: konrad <konrad@kola-entertainments.de> Co-authored-by: sytone <kolaente@sytone.com> Co-committed-by: sytone <kolaente@sytone.com>
74 lines
No EOL
1.2 KiB
Vue
74 lines
No EOL
1.2 KiB
Vue
<template>
|
|
<a
|
|
class="button"
|
|
:class="{
|
|
'is-loading': loading,
|
|
'has-no-shadow': !shadow,
|
|
'is-primary': type === 'primary',
|
|
'is-outlined': type === 'secondary',
|
|
'is-text is-inverted has-no-shadow underline-none':
|
|
type === 'tertary',
|
|
}"
|
|
:disabled="disabled"
|
|
@click="click"
|
|
:href="href !== '' ? href : false"
|
|
>
|
|
<icon :icon="icon" v-if="showIconOnly"/>
|
|
<span class="icon is-small" v-else-if="icon !== ''">
|
|
<icon :icon="icon"/>
|
|
</span>
|
|
<slot></slot>
|
|
</a>
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
name: 'x-button',
|
|
props: {
|
|
type: {
|
|
type: String,
|
|
default: 'primary',
|
|
},
|
|
href: {
|
|
type: String,
|
|
default: '',
|
|
},
|
|
to: {
|
|
default: false,
|
|
},
|
|
icon: {
|
|
default: '',
|
|
},
|
|
loading: {
|
|
type: Boolean,
|
|
default: false,
|
|
},
|
|
shadow: {
|
|
type: Boolean,
|
|
default: true,
|
|
},
|
|
disabled: {
|
|
type: Boolean,
|
|
default: false,
|
|
},
|
|
},
|
|
computed: {
|
|
showIconOnly() {
|
|
return this.icon !== '' && typeof this.$slots.default === 'undefined'
|
|
},
|
|
},
|
|
methods: {
|
|
click(e) {
|
|
if (this.disabled) {
|
|
return
|
|
}
|
|
|
|
if (this.to !== false) {
|
|
this.$router.push(this.to)
|
|
}
|
|
|
|
this.$emit('click', e)
|
|
},
|
|
},
|
|
}
|
|
</script> |