Some checks failed
CI / Test (ubuntu-latest) (push) Has been cancelled
CI / Test (windows-latest) (push) Has been cancelled
CI / Lint (ubuntu-latest) (push) Has been cancelled
CI / Lint (windows-latest) (push) Has been cancelled
CI / Check (ubuntu-latest) (push) Has been cancelled
CI / Check (windows-latest) (push) Has been cancelled
CodeQL / Analyze (javascript-typescript) (push) Has been cancelled
Deploy Website on push / Deploy Push Playground Ftp (push) Has been cancelled
Deploy Website on push / Deploy Push Docs Ftp (push) Has been cancelled
Deploy Website on push / Deploy Push Antd Ftp (push) Has been cancelled
Deploy Website on push / Deploy Push Element Ftp (push) Has been cancelled
Deploy Website on push / Deploy Push Naive Ftp (push) Has been cancelled
Release Drafter / update_release_draft (push) Has been cancelled
CI / CI OK (push) Has been cancelled
Deploy Website on push / Rerun on failure (push) Has been cancelled
Lock Threads / action (push) Has been cancelled
Issue Close Require / close-issues (push) Has been cancelled
Close stale issues / stale (push) Has been cancelled
47 lines
1.1 KiB
Vue
47 lines
1.1 KiB
Vue
<script setup lang="ts">
|
|
import type { SelectOption } from '@vben/types';
|
|
|
|
import { ToggleGroup, ToggleGroupItem } from '@vben-core/shadcn-ui';
|
|
|
|
defineOptions({
|
|
name: 'PreferenceToggleItem',
|
|
});
|
|
|
|
withDefaults(defineProps<{ disabled?: boolean; items: SelectOption[] }>(), {
|
|
disabled: false,
|
|
items: () => [],
|
|
});
|
|
|
|
const modelValue = defineModel<string>();
|
|
</script>
|
|
|
|
<template>
|
|
<div
|
|
:class="{
|
|
'pointer-events-none opacity-50': disabled,
|
|
}"
|
|
class="hover:bg-accent flex w-full items-center justify-between rounded-md px-2 py-2"
|
|
disabled
|
|
>
|
|
<span class="text-sm">
|
|
<slot></slot>
|
|
</span>
|
|
<ToggleGroup
|
|
v-model="modelValue"
|
|
class="gap-2"
|
|
size="sm"
|
|
type="single"
|
|
variant="outline"
|
|
>
|
|
<template v-for="item in items" :key="item.value">
|
|
<ToggleGroupItem
|
|
:value="item.value"
|
|
class="data-[state=on]:bg-primary data-[state=on]:text-primary-foreground h-7 rounded-sm"
|
|
>
|
|
{{ item.label }}
|
|
</ToggleGroupItem>
|
|
</template>
|
|
</ToggleGroup>
|
|
</div>
|
|
</template>
|