Files
mixtape/zero.Web/App/Components/Buttons/state-button.vue
T

85 lines
1.7 KiB
Vue
Raw Normal View History

2020-04-28 12:51:00 +02:00
<template>
2020-04-28 14:51:17 +02:00
<div class="ui-state-button" :class="{'is-disabled': disabled }">
2020-04-28 12:51:00 +02:00
<input ref="input" type="hidden" :value="value" />
<button v-for="item in items" @click="select(item.value)" v-localize="item.label"
type="button" class="ui-state-button-item" :disabled="disabled || item.disabled" :class="{ 'is-active': value === item.value }"></button>
</div>
</template>
<script>
import { find as _find } from 'underscore';
export default {
props: {
disabled: {
type: Boolean,
default: false
},
items: {
type: Array,
default: []
},
value: {
2020-04-30 15:35:09 +02:00
type: [ String, Number ],
2020-04-28 12:51:00 +02:00
default: null
}
},
methods: {
select(value)
{
if (!this.disabled)
{
this.$emit('input', value);
}
}
}
}
</script>
<style lang="scss">
.ui-state-button
{
display: flex;
}
2020-04-28 14:51:17 +02:00
.ui-state-button.is-disabled button
{
cursor: default;
}
2020-04-28 12:51:00 +02:00
button.ui-state-button-item
{
background: var(--color-bg-mid);
2020-05-04 14:13:03 +02:00
border: 1px solid transparent; // var(--color-line);
2020-05-02 12:20:22 +02:00
padding: 10px 16px;
2020-05-04 14:13:03 +02:00
color: var(--color-fg-mid);
2020-04-28 12:51:00 +02:00
&:first-of-type
{
border-top-left-radius: var(--radius);
border-bottom-left-radius: var(--radius);
}
&:last-child
{
border-top-right-radius: var(--radius);
border-bottom-right-radius: var(--radius);
}
&.is-active
{
2020-05-04 14:13:03 +02:00
/*background: var(--color-primary);
border-color: var(--color-primary);*/
border-color: var(--color-line);
background: var(--color-bg-light);
color: var(--color-fg);
2020-04-28 12:51:00 +02:00
font-weight: bold;
}
2020-04-28 14:51:17 +02:00
2020-04-28 12:51:00 +02:00
}
</style>