This repository was archived by the owner on Mar 23, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.js
More file actions
78 lines (74 loc) · 1.45 KB
/
main.js
File metadata and controls
78 lines (74 loc) · 1.45 KB
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
const Vue = window.Vue;
const channels = [
{
name: "GitHub",
url: "https://github.com/febley",
icon: "fab fa-github-alt",
},
{
name: "Matrix",
url: "https://matrix.to/#/@febley:matrix.org",
icon: "fas fa-comments",
},
{
name: "WaniKani",
url: "https://www.wanikani.com/users/febLey",
icon: "fas fa-language",
},
{
name: "Steam",
url: "https://steamcommunity.com/id/febLey",
icon: "fab fa-steam",
},
];
Vue.component("page", {
props: {
suffix: {
type: String,
},
},
template: `
<div class="page" :class="suffixedClass">
<div class="page__inner">
<slot></slot>
</div>
</div>
`,
computed: {
suffixedClass() {
if (this.suffix) {
return `page--${this.suffix}`;
}
},
},
});
Vue.component("socialbar", {
props: {
channels: {
type: Array,
required: true,
},
},
template: `
<ul class="socialbar">
<li class="socialbar__item" v-for="(channel, index) in channels" :key="channel.id">
<a class="socialbar__link" :href="channel.url" target="_blank" :data-channel-name="channel.name"><i :class="channel.icon"></i></a>
</li>
</ul>
`,
});
const app = new Vue({
el: ".app",
data: {
pages: ["Home"],
selectedPage: "Home",
channels: channels,
},
methods: {
setSelectedPage(page) {
if (this.selectedPage !== page) {
this.selectedPage = page;
}
},
},
});