master
svelte 40 lines 1.04 KB
Raw
1 <script lang="ts">
2 import { onMount } from "svelte";
3 import Tab from "./Tab.svelte";
4 import Sortable from 'sortablejs';
5 import { type Writable } from "svelte/store";
6
7 export let tabs: Writable<any[]>;
8 export let width = "unset";
9
10 let tabcontainer = null;
11
12 onMount(() => {
13 Sortable.create(tabcontainer, {
14 draggable: ".tab",
15 animation: 150,
16 forceFallback: true,
17 filter: ".close-tab",
18 easing: "cubic-bezier(1, 0, 0, 1)",
19 sort: true
20 })
21 })
22 </script>
23 <div bind:this={tabcontainer} id="tablist" style="max-width: {width}">
24 {#each $tabs as tab}
25 <Tab on:closetab on:select id={tab.id} label={tab.label} path={tab.path} active={tab.active} saved={tab.saved} />
26 {/each}
27 </div>
28
29 <style lang="scss">
30 #tablist {
31 display: flex;
32 overflow-x: overlay;
33 &::-webkit-scrollbar {
34 height: 5px;
35 }
36 &::-webkit-scrollbar-thumb {
37 background-color: #e8e8e81f;
38 }
39 }
40 </style>