1
0
Fork 0
mirror of https://gitlab.com/bramw/baserow.git synced 2025-05-19 23:21:30 +00:00
bramw_baserow/web-frontend/modules/core/components/Radio.vue
Jonathan Adeline 4321aaea9a Replace icons
2023-09-28 13:39:41 +00:00

65 lines
1.3 KiB
Vue

<template>
<div class="radio" :class="classNames" @click="select(value)">
<i
v-if="modelValue === value"
class="radio__checked-icon iconoir-check"
></i>
<slot></slot>
</div>
</template>
<script>
export default {
name: 'Radio',
model: {
prop: 'modelValue',
event: 'input',
},
props: {
value: {
type: [String, Number, Boolean, Object],
required: false,
default: '',
},
modelValue: {
type: [String, Number, Boolean, Object],
required: false,
default: '',
},
disabled: {
type: Boolean,
required: false,
default: false,
},
loading: {
type: Boolean,
required: false,
default: false,
},
},
computed: {
classNames() {
return {
'radio--has-content': Object.prototype.hasOwnProperty.call(
this.$slots,
'default'
),
'radio--disabled': this.disabled,
'radio--loading': this.loading,
selected: this.modelValue === this.value,
}
},
selected() {
return this.modelValue === this.value
},
},
methods: {
select(value) {
if (this.disabled || this.selected) {
return
}
this.$emit('input', value)
},
},
}
</script>