mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-09-11 08:07:15 +00:00
54 lines
1.3 KiB
Svelte
54 lines
1.3 KiB
Svelte
<script context="module" lang="ts">
|
|
export type ToggleButtonContext = {
|
|
selected: Writable<any>
|
|
select: (value: any) => void
|
|
}
|
|
</script>
|
|
|
|
<script lang="ts">
|
|
import { createEventDispatcher, setContext } from 'svelte'
|
|
import { writable, type Writable } from 'svelte/store'
|
|
import { TabGroup, TabList } from '@rgossiaux/svelte-headlessui'
|
|
import { twMerge } from 'tailwind-merge'
|
|
|
|
export let id: string | null | undefined = undefined
|
|
export let selected: any
|
|
export let noWFull: boolean = false
|
|
export let disabled: boolean = false
|
|
export let tabListClass: string = ''
|
|
|
|
const dispatch = createEventDispatcher()
|
|
const selectedContent = writable(selected)
|
|
|
|
function setSelected(selected: any) {
|
|
if ($selectedContent != selected) {
|
|
selectedContent.set(selected)
|
|
}
|
|
}
|
|
|
|
$: setSelected(selected)
|
|
|
|
setContext<ToggleButtonContext>('ToggleButtonGroup', {
|
|
selected: selectedContent,
|
|
select: (value: any) => {
|
|
selectedContent.set(value)
|
|
selected = value
|
|
dispatch('selected', value)
|
|
}
|
|
})
|
|
</script>
|
|
|
|
<TabGroup
|
|
{id}
|
|
class={twMerge(
|
|
`h-8 flex ${noWFull ? '' : 'w-full'} ${disabled ? 'disabled' : ''}`,
|
|
$$props.class
|
|
)}
|
|
>
|
|
<TabList
|
|
class={twMerge('flex bg-surface-secondary rounded-md p-0.5 gap-1 h-full ', tabListClass)}
|
|
>
|
|
<slot />
|
|
</TabList>
|
|
</TabGroup>
|