iceshrimp/src/client/app/common/views/components/ui/button.vue

81 lines
1.2 KiB
Vue
Raw Normal View History

2018-06-14 07:22:50 +09:00
<template>
2018-06-15 07:56:56 +09:00
<div class="ui-button" :class="[styl]">
<button :type="type" @click="$emit('click')">
2018-06-14 07:22:50 +09:00
<slot></slot>
</button>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
export default Vue.extend({
props: {
type: {
type: String,
required: false
}
2018-06-14 18:57:54 +09:00
},
data() {
return {
styl: 'fill'
};
},
2018-06-15 07:56:56 +09:00
inject: {
isCardChild: { default: false }
},
2018-06-14 18:57:54 +09:00
created() {
if (this.isCardChild) {
this.styl = 'line';
}
2018-06-14 07:22:50 +09:00
}
});
</script>
<style lang="stylus" scoped>
2018-06-14 18:57:54 +09:00
root(isDark, fill)
2018-06-14 07:22:50 +09:00
> button
display block
width 100%
2018-06-14 14:52:37 +09:00
margin 0
2018-06-14 07:22:50 +09:00
padding 0
font-weight bold
font-size 16px
line-height 44px
border none
border-radius 6px
outline none
box-shadow none
2018-06-14 18:57:54 +09:00
if fill
2018-09-26 20:19:35 +09:00
color var(--primaryForeground)
background var(--primary)
2018-06-14 18:57:54 +09:00
&:hover
2018-09-26 20:19:35 +09:00
background var(--primaryLighten5)
2018-06-14 18:57:54 +09:00
&:active
2018-09-26 20:19:35 +09:00
background var(--primaryDarken5)
2018-06-14 18:57:54 +09:00
else
2018-09-26 20:19:35 +09:00
color var(--primary)
2018-06-14 18:57:54 +09:00
background none
&:hover
2018-09-26 20:19:35 +09:00
color var(--primaryDarken5)
2018-06-14 18:57:54 +09:00
&:active
2018-09-26 20:19:35 +09:00
background var(--primaryAlpha03)
2018-06-14 18:57:54 +09:00
.ui-button[data-darkmode]
&.fill
root(true, true)
&:not(.fill)
root(true, false)
2018-06-14 14:52:37 +09:00
2018-06-14 18:57:54 +09:00
.ui-button:not([data-darkmode])
&.fill
root(false, true)
&:not(.fill)
root(false, false)
2018-06-14 14:52:37 +09:00
2018-06-14 07:22:50 +09:00
</style>