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

78 lines
1.7 KiB
Vue
Raw Normal View History

2023-12-09 15:47:03 +01:00
<template>
<input-wrapper v-bind="inputWrapperProps">
<template #label>
<span />
</template>
<div class="flex space-x-2 items-center">
<UToggle
:id="id ? id : name"
v-model="compVal"
:disabled="disabled ? true : null"
:ui="{
active: 'bg-[var(--form-color,#3B82F6)]',
ring: 'focus:ring-[var(--form-color,#3B82F6)]/50'
}"
/>
<div>
<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 name="help">
<InputHelp
:help="help"
:help-classes="theme.default.help"
>
<template #after-help>
<slot name="bottom_after_help" />
</template>
</InputHelp>
</slot>
</div>
2023-12-09 15:47:03 +01:00
</div>
<template #help>
<span class="hidden" />
2023-12-09 15:47:03 +01:00
</template>
<template #error>
<slot name="error" />
</template>
</input-wrapper>
</template>
<script>
import {inputProps, useFormInput} from "./useFormInput.js"
import InputWrapper from "./components/InputWrapper.vue"
import InputHelp from "~/components/forms/components/InputHelp.vue"
2023-12-09 15:47:03 +01:00
export default {
name: "ToggleSwitchInput",
2023-12-09 15:47:03 +01:00
components: {InputHelp, InputWrapper},
2023-12-09 15:47:03 +01:00
props: {
...inputProps,
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() {
2023-12-09 15:47:03 +01:00
this.compVal = !!this.compVal
},
2023-12-09 15:47:03 +01:00
}
</script>