ruoyi-plus-vben5/packages/business/common-ui/src/preferences/blocks/switch-item.vue

48 lines
1.1 KiB
Vue
Raw Normal View History

2024-05-19 21:20:42 +08:00
<script setup lang="ts">
2024-06-08 19:49:06 +08:00
import { useSlots } from 'vue';
2024-05-19 21:20:42 +08:00
import { MdiQuestionMarkCircleOutline } from '@vben-core/iconify';
import { Switch, VbenTooltip } from '@vben-core/shadcn-ui';
defineOptions({
name: 'PreferenceSwitchItem',
});
2024-05-21 23:23:48 +08:00
withDefaults(defineProps<{ disabled?: boolean }>(), {
2024-05-19 21:20:42 +08:00
disabled: false,
});
const checked = defineModel<boolean>();
const slots = useSlots();
function handleClick() {
checked.value = !checked.value;
}
</script>
<template>
<div
:class="{
'pointer-events-none opacity-50': disabled,
}"
2024-06-09 13:31:43 +08:00
class="hover:bg-accent my-1 flex w-full items-center justify-between rounded-md px-2 py-2"
2024-05-19 21:20:42 +08:00
@click="handleClick"
>
<span class="flex items-center text-sm">
<slot></slot>
<VbenTooltip v-if="slots.tip" side="bottom">
<template #trigger>
<MdiQuestionMarkCircleOutline class="ml-1 cursor-help" />
</template>
<slot name="tip"></slot>
</VbenTooltip>
</span>
2024-06-16 13:43:33 +08:00
<span v-if="$slots.shortcut" class="ml-auto mr-2 text-xs opacity-60">
<slot name="shortcut"></slot>
</span>
2024-05-19 21:20:42 +08:00
<Switch v-model:checked="checked" @click.stop />
</div>
</template>