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

75 lines
1.0 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-09-28 19:59:19 +09:00
root(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
2018-09-28 19:59:19 +09:00
.ui-button
2018-06-14 18:57:54 +09:00
&.fill
2018-09-28 19:59:19 +09:00
root(true)
2018-06-14 18:57:54 +09:00
&:not(.fill)
2018-09-28 19:59:19 +09:00
root(false)
2018-06-14 14:52:37 +09:00
2018-06-14 07:22:50 +09:00
</style>