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> |
<script> |
||||
import "@spectrum-css/tabs/dist/index-vars.css" |
import "@spectrum-css/tabs/dist/index-vars.css" |
||||
|
import { writable } from 'svelte/store' |
||||
|
import { setContext } from 'svelte' |
||||
|
|
||||
|
export let selected; |
||||
export let vertical = false |
export let vertical = false |
||||
|
|
||||
|
const tab = writable(selected) |
||||
|
setContext('tab', tab) |
||||
|
$: selected = $tab |
||||
</script> |
</script> |
||||
<div class="spectrum-Tabs spectrum-Tabs--{vertical ? 'vertical' : 'horizontal'}"> |
<div class="spectrum-Tabs spectrum-Tabs--{vertical ? 'vertical' : 'horizontal'}"> |
||||
<div class="spectrum-Tabs-item is-selected" tabindex="0"> |
<slot /> |
||||
<span class="spectrum-Tabs-itemLabel">Tab 1</span> |
</div> |
||||
</div> |
|
||||
<div class="spectrum-Tabs-item" tabindex="0"> |
<div class="spectrum-Tabs-content" /> |
||||
<span class="spectrum-Tabs-itemLabel">Tab 2</span> |
|
||||
</div> |
<style> |
||||
<div class="spectrum-Tabs-item" tabindex="0"> |
.spectrum-Tabs-content { |
||||
<span class="spectrum-Tabs-itemLabel">Tab 3</span> |
margin-top: var(--spectrum-global-dimension-static-size-150); |
||||
</div> |
} |
||||
<div class="spectrum-Tabs-item" tabindex="0"> |
</style> |
||||
<span class="spectrum-Tabs-itemLabel">Tab 4</span> |
|
||||
</div> |
|
||||
<div class="spectrum-Tabs-selectionIndicator" style="width: 27px; left: 0px;"></div> |
|
||||
</div> |
|
||||
Loading…
Reference in new issue