aboutsummaryrefslogtreecommitdiffstats
path: root/web/index.js
diff options
context:
space:
mode:
authorTulir Asokan <tulir@maunium.net>2020-09-05 13:40:29 +0300
committerTulir Asokan <tulir@maunium.net>2020-09-05 13:40:29 +0300
commit9a06d63ee9459402ec8a19bd9c22f81d692cf2e5 (patch)
tree659dd0a88ce76e21fdb1d3df9e0de9e33e69499e /web/index.js
parent28c7d2f1a2113d3ea609373a345d23d35361d605 (diff)
Add navbar and switch to sass. Fixes #2
Diffstat (limited to 'web/index.js')
-rw-r--r--web/index.js37
1 files changed, 25 insertions, 12 deletions
diff --git a/web/index.js b/web/index.js
index 86aac06..bc478af 100644
--- a/web/index.js
+++ b/web/index.js
@@ -24,6 +24,7 @@ class App extends Component {
error: null,
}
this.observer = null
+ this.packListRef = null
}
observeIntersection = intersections => {
@@ -67,7 +68,7 @@ class App extends Component {
}
componentDidUpdate() {
- for (const elem of document.getElementsByClassName("sticker")) {
+ for (const elem of this.packListRef.getElementsByClassName("sticker")) {
this.observer.observe(elem)
}
}
@@ -78,29 +79,41 @@ class App extends Component {
render() {
if (this.state.loading) {
- return html`<div class="main spinner"><${Spinner} size=${80} green /></div>`
+ return html`<main class="spinner"><${Spinner} size=${80} green /></main>`
} else if (this.state.error) {
- return html`<div class="main error">
+ return html`<main class="error">
<h1>Failed to load packs</h1>
<p>${this.state.error}</p>
- </div>`
+ </main>`
} else if (this.state.packs.length === 0) {
- return html`<div class="main empty"><h1>No packs found :(</h1></div>`
+ return html`<main class="empty"><h1>No packs found :(</h1></main>`
}
- return html`<div class="main pack-list">
- ${this.state.packs.map(pack => html`<${Pack} id=${pack.id} ...${pack}/>`)}
- </div>`
+ return html`<main>
+ <nav>
+ ${this.state.packs.map(pack => html`<${NavBarItem} id=${pack.id} pack=${pack}/>`)}
+ </nav>
+ <div class="pack-list" ref=${elem => this.packListRef = elem}>
+ ${this.state.packs.map(pack => html`<${Pack} id=${pack.id} pack=${pack}/>`)}
+ </div>
+ </main>`
}
}
-const Pack = ({ title, stickers }) => html`<div class="stickerpack">
- <h1>${title}</h1>
+const NavBarItem = ({ pack }) => html`<a href="#pack-${pack.id}" title=${pack.title}>
+ <div class="sticker">
+ <img src=${makeThumbnailURL(pack.stickers[0].url)}
+ alt=${pack.stickers[0].body} class="visible" />
+ </div>
+</a>`
+
+const Pack = ({ pack }) => html`<section class="stickerpack" id=${`pack-${pack.id}`}>
+ <h1>${pack.title}</h1>
<div class="sticker-list">
- ${stickers.map(sticker => html`
+ ${pack.stickers.map(sticker => html`
<${Sticker} key=${sticker["net.maunium.telegram.sticker"].id} content=${sticker}/>
`)}
</div>
-</div>`
+</section>`
const Sticker = ({ content }) => html`<div class="sticker" onClick=${() => sendSticker(content)}>
<img data-src=${makeThumbnailURL(content.url)} alt=${content.body} />
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage