opnform-host-nginx/client/components/forms/CheckboxInput.vue

96 lines
2.1 KiB
Vue
Raw Normal View History

2023-12-09 15:47:03 +01:00
<template>
<InputWrapper v-bind="inputWrapperProps">
2023-12-09 15:47:03 +01:00
<template #label>
<span />
</template>
<div class="flex space-x-2 items-center">
<VCheckbox
:id="id ? id : name"
v-model="compVal"
:value="value"
:disabled="disabled ? true : null"
:name="name"
:color="color"
:theme="theme"
/>
<div>
<slot
v-if="helpPosition === 'above_input'"
name="help"
>
<InputHelp
:help="help"
:help-classes="theme.default.help"
>
<template #after-help>
<slot name="bottom_after_help" />
</template>
</InputHelp>
</slot>
<slot name="label">
<label
:aria-label="id ? id : name"
:for="id ? id : name"
:class="theme.default.fontSize"
>
{{ label }}
<span
v-if="required"
class="text-red-500 required-dot"
>*</span>
</label>
</slot>
<slot
v-if="helpPosition === 'below_input'"
name="help"
>
<InputHelp
:help="help"
:help-classes="theme.default.help"
>
<template #after-help>
<slot name="bottom_after_help" />
</template>
</InputHelp>
</slot>
</div>
</div>
2023-12-09 15:47:03 +01:00
<template #help>
<span class="hidden" />
2023-12-09 15:47:03 +01:00
</template>
<template #error>
<slot name="error" />
</template>
</InputWrapper>
2023-12-09 15:47:03 +01:00
</template>
<script>
import { inputProps, useFormInput } from './useFormInput.js'
import VCheckbox from './components/VCheckbox.vue'
import InputWrapper from './components/InputWrapper.vue'
2023-12-09 15:47:03 +01:00
export default {
name: 'CheckboxInput',
2023-12-09 15:47:03 +01:00
components: { InputWrapper, VCheckbox },
props: {
...inputProps,
value: { type: [Boolean, String, Number, Object], required: false },
2023-12-09 15:47:03 +01:00
},
setup(props, context) {
2023-12-09 15:47:03 +01:00
return {
...useFormInput(props, context),
2023-12-09 15:47:03 +01:00
}
},
mounted() {
if (!this.compVal)
this.compVal = false
},
2023-12-09 15:47:03 +01:00
}
</script>