forked from tsai/budibase
4 changed files with 43 additions and 16 deletions
@ -0,0 +1,22 @@ |
|||
<script> |
|||
import { getContext } from 'svelte' |
|||
import Portal from "svelte-portal" |
|||
export let title |
|||
export let icon = ''; |
|||
|
|||
const selected = getContext('tab') |
|||
</script> |
|||
|
|||
<div on:click={() => $selected = title } class:is-selected={$selected === title} class="spectrum-Tabs-item" tabindex="0"> |
|||
{#if icon} |
|||
<svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true" aria-label="Folder"> |
|||
<use xlink:href="#spectrum-icon-18-{icon}" /> |
|||
</svg> |
|||
{/if} |
|||
<span class="spectrum-Tabs-itemLabel">{title}</span> |
|||
</div> |
|||
{#if $selected === title} |
|||
<Portal target=".spectrum-Tabs-content"> |
|||
<slot /> |
|||
</Portal> |
|||
{/if} |
|||
@ -1,20 +1,23 @@ |
|||
<script> |
|||
import "@spectrum-css/tabs/dist/index-vars.css" |
|||
|
|||
import { writable } from 'svelte/store' |
|||
import { setContext } from 'svelte' |
|||
|
|||
export let selected; |
|||
export let vertical = false |
|||
|
|||
const tab = writable(selected) |
|||
setContext('tab', tab) |
|||
$: selected = $tab |
|||
</script> |
|||
<div class="spectrum-Tabs spectrum-Tabs--{vertical ? 'vertical' : 'horizontal'}"> |
|||
<div class="spectrum-Tabs-item is-selected" tabindex="0"> |
|||
<span class="spectrum-Tabs-itemLabel">Tab 1</span> |
|||
</div> |
|||
<div class="spectrum-Tabs-item" tabindex="0"> |
|||
<span class="spectrum-Tabs-itemLabel">Tab 2</span> |
|||
</div> |
|||
<div class="spectrum-Tabs-item" tabindex="0"> |
|||
<span class="spectrum-Tabs-itemLabel">Tab 3</span> |
|||
</div> |
|||
<div class="spectrum-Tabs-item" tabindex="0"> |
|||
<span class="spectrum-Tabs-itemLabel">Tab 4</span> |
|||
</div> |
|||
<div class="spectrum-Tabs-selectionIndicator" style="width: 27px; left: 0px;"></div> |
|||
</div> |
|||
<slot /> |
|||
</div> |
|||
|
|||
<div class="spectrum-Tabs-content" /> |
|||
|
|||
<style> |
|||
.spectrum-Tabs-content { |
|||
margin-top: var(--spectrum-global-dimension-static-size-150); |
|||
} |
|||
</style> |
|||
Loading…
Reference in new issue