Skip to content

Commit

Permalink
Added status messages
Browse files Browse the repository at this point in the history
  • Loading branch information
akyoto committed Jun 10, 2018
1 parent c7afc02 commit 6ac7388
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 2 deletions.
5 changes: 4 additions & 1 deletion elements/multiple-choice-test/multiple-choice-test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import State from "scripts/State"
import randomItem from "scripts/randomItem"
import copyToClipboard from "scripts/copyToClipboard"
import cloneTemplate from "scripts/cloneTemplate"
import StatusMessages from "../status-messages/status-messages"

export default class MultipleChoiceTest extends HTMLElement {
appView: AppView
Expand All @@ -14,6 +15,7 @@ export default class MultipleChoiceTest extends HTMLElement {
question: HTMLDivElement
answers: HTMLButtonElement[]
touchController: TouchController
statusMessages: StatusMessages

constructor(questions: string[]) {
super()
Expand All @@ -22,6 +24,7 @@ export default class MultipleChoiceTest extends HTMLElement {

async connectedCallback() {
this.appView = document.getElementsByTagName("app-view")[0] as AppView
this.statusMessages = document.getElementsByTagName("status-messages")[0] as StatusMessages

this.initDOM()
this.bindEventListeners()
Expand Down Expand Up @@ -66,7 +69,7 @@ export default class MultipleChoiceTest extends HTMLElement {
onQuestionClicked(e: MouseEvent) {
if(e.target === this.kanjiView.textElement) {
copyToClipboard(this.kanjiView.kanji)
alert(`Copied ${this.kanjiView.kanji}!`)
this.statusMessages.post(`Copied ${this.kanjiView.kanji}`)
return
}

Expand Down
29 changes: 29 additions & 0 deletions elements/status-messages/status-messages.scarlet
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
status-messages
vertical
width 100%
padding 0.5rem
position absolute
left 0
top 0
pointer-events none
z-index 1

.status-message
opacity 0
transform translateY(-30%)
animation message-appear 1s forwards ease
color white
background hsl(216, 68%, 42%)
border-radius ui-element-border-radius
default-transition
text-align center
padding 0.5rem
margin-bottom 0.25rem

animation message-appear
50%, 75%
opacity 1
transform translateY(0)
100%
opacity 0
transform translateY(-30%)
10 changes: 10 additions & 0 deletions elements/status-messages/status-messages.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
export default class StatusMessages extends HTMLElement {
post(text: string) {
let message = document.createElement("div")
message.classList.add("status-message")
message.innerText = text
this.appendChild(message)

setTimeout(() => this.removeChild(message), 1000)
}
}
1 change: 1 addition & 0 deletions layout/layout.pixy
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ component Layout(ctx *aero.Context)
meta(name="theme-color", content=ctx.App.Config.Manifest.ThemeColor)
body
app-view(loading="true")
status-messages

//- Templates
template#multiple-choice-test-template
Expand Down
3 changes: 2 additions & 1 deletion scripts/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import KanjiView from "elements/kanji-view/kanji-view"
import MultipleChoiceTest from "elements/multiple-choice-test/multiple-choice-test"
import MainMenu from "elements/main-menu/main-menu"
import ServiceWorkerManager from "./ServiceWorkerManager"
import TouchController from "./TouchController"
import StatusMessages from "elements/status-messages/status-messages"

// Error message if browser is too old
if(!("customElements" in window)) {
Expand All @@ -15,6 +15,7 @@ const elements = new Map<string, Function>([
["app-view", AppView],
["main-menu", MainMenu],
["kanji-view", KanjiView],
["status-messages", StatusMessages],
["multiple-choice-test", MultipleChoiceTest]
])

Expand Down

0 comments on commit 6ac7388

Please sign in to comment.