This repository has been archived by the owner on May 31, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 23
/
app-index.ts
105 lines (86 loc) · 2.07 KB
/
app-index.ts
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
/**
* Copyright (c) IBM, Corp. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import { LitElement, html, css } from 'lit';
import { customElement, query } from 'lit/decorators.js';
import config from '../config.js';
import { attachRouter, urlForName } from '../router/index.js';
import 'pwa-helper-components/pwa-install-button.js';
import 'pwa-helper-components/pwa-update-available.js';
@customElement('app-index')
export class AppIndex extends LitElement {
@query('main')
private main!: HTMLElement;
static styles = css`
:host {
display: flex;
flex-direction: column;
}
header {
display: flex;
align-items: center;
height: 53px;
padding: 0 1rem;
background-color: #24292e;
}
header nav {
display: flex;
flex: 1;
align-self: stretch;
}
header nav a {
display: flex;
align-items: center;
color: #fff;
font-weight: 600;
text-decoration: none;
}
header nav a:not(:last-child) {
margin-right: 1rem;
}
header nav a:hover {
color: #bbb;
}
main,
main > * {
display: flex;
flex: 1;
flex-direction: column;
}
footer {
padding: 1rem;
background-color: #eee;
text-align: center;
}
main:empty ~ footer {
display: none;
}
`;
render() {
return html`
<header>
<nav>
<a href="${urlForName('home')}">Home</a>
<a href="${urlForName('about')}">About</a>
</nav>
<pwa-install-button>
<button>Install app</button>
</pwa-install-button>
<pwa-update-available>
<button>Update app</button>
</pwa-update-available>
</header>
<!-- The main content is added / removed dynamically by the router -->
<main role="main"></main>
<footer>
<span>Environment: ${config.environment}</span>
</footer>
`;
}
firstUpdated() {
attachRouter(this.main);
}
}