77 lines
2.2 KiB
Vue
77 lines
2.2 KiB
Vue
<template>
|
|
<div class="xl:absolute w-12 xl:ltr:right-0 xl:rtl:left-0 xl:-top-12">
|
|
<label class="text-black text-sm font-medium mb-1 xl:hidden">{{ label }}</label>
|
|
|
|
<div class="relative full flex items-center cursor-pointer">
|
|
<input type="radio" :name="name" v-show="selected == '0'" @click="enabled = 1" value="1" id="enabled-1" v-model="selected" class="w-full h-full absolute right-0 z-20 opacity-0 cursor-pointer">
|
|
<input type="radio" :name="name" v-show="selected == '1'" @click="enabled = 0" value="0" id="enabled-0" v-model="selected" class="w-full h-full absolute left-0 z-20 opacity-0 cursor-pointer">
|
|
|
|
<div class="absolute left-1 top-1 bg-white w-5 h-5 rounded-full transition transform" :class="selected == '1' ? 'translate-x-full' : 'translate-x-0'"></div>
|
|
<div class="block w-full h-7 rounded-full transition transition-color" :class="selected == '1' ? 'bg-green' : 'bg-green-200'"></div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
name: 'akaunting-switch',
|
|
|
|
props: {
|
|
name: null,
|
|
|
|
value: {
|
|
type: [String, Number, Array, Object, Boolean],
|
|
default: '1',
|
|
description: "Selectbox selected value"
|
|
},
|
|
|
|
label: {
|
|
type: String,
|
|
description: "Selectbox selected label"
|
|
},
|
|
|
|
model: {
|
|
type: [String, Number, Array, Object, Boolean],
|
|
default: '',
|
|
description: "Selectbox selected model"
|
|
},
|
|
|
|
inputData: {
|
|
type: [String, Number, Array, Object, Boolean],
|
|
},
|
|
},
|
|
|
|
data() {
|
|
return {
|
|
enabled: 1,
|
|
selected: this.value,
|
|
}
|
|
},
|
|
|
|
methods: {
|
|
change() {
|
|
this.$emit('interface', this.selected);
|
|
|
|
this.$emit('change', this.selected);
|
|
}
|
|
},
|
|
|
|
mounted() {
|
|
this.$emit('interface', this.selected);
|
|
|
|
setTimeout(function() {
|
|
this.change();
|
|
}.bind(this), 800);
|
|
},
|
|
|
|
watch: {
|
|
value: function(val) {
|
|
this.selected = val;
|
|
},
|
|
|
|
selected: function(val) {
|
|
this.change();
|
|
},
|
|
}
|
|
}
|
|
</script> |