2023-10-04 09:30:05 +02:00
|
|
|
<script setup>
|
|
|
|
defineOptions({
|
|
|
|
inheritAttrs: false
|
|
|
|
})
|
|
|
|
|
|
|
|
const props = defineProps({
|
|
|
|
modelValue: Boolean,
|
|
|
|
fieldName: {
|
|
|
|
type: String,
|
|
|
|
default: '',
|
|
|
|
required: true
|
|
|
|
},
|
|
|
|
label: {
|
|
|
|
type: String,
|
|
|
|
default: ''
|
|
|
|
},
|
|
|
|
labelClass: {
|
|
|
|
type: String,
|
|
|
|
default: ''
|
|
|
|
},
|
|
|
|
help: {
|
|
|
|
type: String,
|
|
|
|
default: ''
|
|
|
|
},
|
|
|
|
})
|
|
|
|
|
|
|
|
const emit = defineEmits(['update:modelValue'])
|
|
|
|
const attrs = useAttrs()
|
2023-10-05 14:00:30 +02:00
|
|
|
const model = computed({
|
|
|
|
get() {
|
|
|
|
return props.modelValue;
|
|
|
|
},
|
|
|
|
set(value) {
|
|
|
|
emit("update:modelValue", value);
|
|
|
|
},
|
|
|
|
})
|
2023-10-04 09:30:05 +02:00
|
|
|
|
2023-10-05 14:00:30 +02:00
|
|
|
function toggleModel() {
|
|
|
|
if (attrs['disabled'] != true) {
|
|
|
|
model.value = !model.value
|
2023-10-04 09:30:05 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<template>
|
|
|
|
<div class="field">
|
2023-10-05 14:00:30 +02:00
|
|
|
<input :id="fieldName" type="checkbox" :name="fieldName" class="is-checkradio is-info" v-model="model" v-bind="$attrs"/>
|
|
|
|
<label tabindex="0" :for="fieldName" class="label" :class="labelClass" v-html="$t(label)" v-on:keypress.space.prevent="toggleModel" />
|
2023-10-04 09:30:05 +02:00
|
|
|
<p class="help" v-html="$t(help)" v-if="help" />
|
|
|
|
</div>
|
|
|
|
</template>
|