Implement edge highlighting and finished state
This commit is contained in:
parent
3633b32b3f
commit
748e1e0739
8 changed files with 141 additions and 11 deletions
|
|
@ -3,6 +3,8 @@ import store from '../store';
|
|||
export interface InfoMessageType {
|
||||
headline: string;
|
||||
innerHTML: string;
|
||||
imgUrl?: string;
|
||||
url?: string;
|
||||
}
|
||||
|
||||
export class InfoMessage {
|
||||
|
|
@ -10,6 +12,8 @@ export class InfoMessage {
|
|||
infoMessageHeadline: HTMLElement;
|
||||
infoMessageContents: HTMLElement;
|
||||
infoMessageClose: HTMLElement;
|
||||
infoMessageImgRef: HTMLImageElement;
|
||||
infoMessageLinkRef: HTMLAnchorElement;
|
||||
backdrop: HTMLElement;
|
||||
|
||||
constructor() {
|
||||
|
|
@ -17,6 +21,8 @@ export class InfoMessage {
|
|||
this.infoMessageHeadline = document.getElementById('info-message-headline');
|
||||
this.infoMessageContents = document.getElementById('info-message-contents');
|
||||
this.infoMessageClose = document.getElementById('info-message-close');
|
||||
this.infoMessageImgRef = document.getElementById('info-message-img') as HTMLImageElement;
|
||||
this.infoMessageLinkRef = document.getElementById('info-message-link') as HTMLAnchorElement;
|
||||
this.backdrop = document.getElementById('backdrop');
|
||||
|
||||
this.backdrop.addEventListener('click', this.onBackdropClick);
|
||||
|
|
@ -32,6 +38,19 @@ export class InfoMessage {
|
|||
if (state.infoMessages.length > prevState.infoMessages.length) {
|
||||
const newMessage = state.infoMessages[state.infoMessages.length - 1];
|
||||
this.setContents(newMessage.headline, newMessage.innerHTML);
|
||||
|
||||
if (newMessage.imgUrl) {
|
||||
this.setImg(newMessage.imgUrl);
|
||||
} else {
|
||||
this.infoMessageImgRef.style.display = 'none';
|
||||
}
|
||||
|
||||
if (newMessage.url) {
|
||||
this.setLink(newMessage.url);
|
||||
} else {
|
||||
this.infoMessageLinkRef.style.display = 'none';
|
||||
}
|
||||
|
||||
store.setState({ infoMessageShown: true });
|
||||
}
|
||||
});
|
||||
|
|
@ -42,6 +61,16 @@ export class InfoMessage {
|
|||
this.infoMessageContents.innerHTML = innerHTML;
|
||||
}
|
||||
|
||||
private setImg(imgUrl: string) {
|
||||
this.infoMessageImgRef.src = imgUrl;
|
||||
this.infoMessageImgRef.style.display = 'block';
|
||||
}
|
||||
|
||||
private setLink(url: string) {
|
||||
this.infoMessageLinkRef.href = url;
|
||||
this.infoMessageLinkRef.style.display = 'block';
|
||||
}
|
||||
|
||||
private show() {
|
||||
this.infoMessage.style.display = 'block';
|
||||
this.backdrop.style.display = 'block';
|
||||
|
|
|
|||
Reference in a new issue