-
-
Notifications
You must be signed in to change notification settings - Fork 48
/
Copy pathUlMenu.svelte
88 lines (84 loc) · 1.97 KB
/
UlMenu.svelte
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<script>
import { page } from '$app/stores';
import { isActive, stripBaseUrl } from '../utils.js';
import { base as baseUrl } from '$app/paths';
export let children;
export let level = 1;
</script>
<ul class="sidebar-menu sidebar-menu--level{level}">
{#each children as item (item.id)}
<li
class="sidebar-menu-item"
class:active={item.active || (item.path && isActive(item.path, $page))}
>
{#if item.path || item.id}
<a
class="sidebar-menu-item-title"
class:active={item.active || (item.path && isActive(item.path, $page))}
href="{baseUrl}{item.path || `${stripBaseUrl($page.url.pathname)}#${item.id}`}"
>{item.title}</a
>
{:else}
<span class="sidebar-menu-item-title">{item.title}</span>
{/if}
{#if item.children && item.children.length}
<svelte:self children={item.children} level={level + 1} />
{/if}
</li>
{/each}
</ul>
<style>
ul {
padding: 0;
margin: 0;
list-style-type: none;
}
ul.sidebar-menu--level1 > li > a {
font-size: 1.1em;
line-height: 1.7;
font-weight: 700;
padding: 0.35rem 1rem 0.35rem 1.25rem;
}
ul.sidebar-menu--level1 {
padding: 2.4rem 0;
}
ul:not(.sidebar-menu--level1) {
padding-left: 1rem;
font-size: 0.95em;
}
.sidebar-menu-item,
.sidebar-menu-item-title {
color: white;
}
.sidebar-menu-item-title {
padding: 0.25rem 1rem 0.25rem 1.25rem;
font-size: 1em;
font-weight: 400;
display: inline-block;
line-height: 1.4;
width: 100%;
box-sizing: border-box;
border-left: 0.25rem solid transparent;
}
/* active menu */
.sidebar-menu-item-title {
position: relative;
}
.sidebar-menu-item-title.active::before {
--size: 6px;
content: '';
width: 0;
height: 0;
position: absolute;
top: calc(50% - var(--size));
right: 0;
border: var(--size) solid transparent;
border-right: var(--size) solid white;
}
a.sidebar-menu-item-title:not(.active) {
transition: color 0.2s linear;
}
a.sidebar-menu-item-title:not(.active):hover {
color: #40b3ff;
}
</style>