src/app/modules/timeout/timeout.component.ts
host | { |
selector | app-timeout |
styleUrls | ./timeout.component.css |
templateUrl | ./timeout.component.html |
Properties |
Methods |
Inputs |
constructor(timeoutService: TimeoutService)
|
||||||
Parameters :
|
delegate
|
Type : |
ngOnInit |
ngOnInit()
|
Returns :
void
|
onAction |
onAction()
|
Returns :
void
|
setupTimeout |
setupTimeout()
|
Returns :
void
|
stayActive |
stayActive()
|
Returns :
void
|
timeout |
timeout()
|
Returns :
void
|
inactive |
inactive:
|
Default value : false
|
import { Component, Input, OnInit } from '@angular/core';
import { TimeoutState } from './timeout-states.enum';
import { TimeoutService } from './timeout.service';
@Component({
selector: 'app-timeout',
templateUrl: './timeout.component.html',
styleUrls: ['./timeout.component.css'],
// tslint:disable-next-line:use-host-property-decorator
host: {
'(document:mousemove)': 'onAction()',
'(document:mousedown)': 'onAction()',
'(document:keypress)': 'onAction()',
'(document:DOMMouseScroll)': 'onAction()',
'(document:mousewheel)': 'onAction()',
'(document:touchmove)': 'onAction()',
'(document:MSPointerMove)': 'onAction()'
}
})
export class TimeoutComponent implements OnInit {
@Input() delegate?: Function;
constructor(private timeoutService: TimeoutService) {}
inactive = false;
ngOnInit(): void {
this.setupTimeout();
}
timeout() {
this.timeoutService.timeout();
if (this.delegate) {
this.delegate();
}
}
onAction() {
this.timeoutService.reset();
}
stayActive() {
this.timeoutService.activate();
}
setupTimeout() {
console.log('setup timeout');
this.timeoutService.state$.subscribe(state => {
switch (state) {
case TimeoutState.INACTIVE:
this.inactive = true;
break;
case TimeoutState.ACTIVE:
this.inactive = false;
break;
case TimeoutState.TIMEDOUT:
this.inactive = false;
if (this.delegate) {
this.delegate();
}
break;
}
});
this.timeoutService.startTimer();
}
}
<div class="overlay" *ngIf="inactive">
<div class="pop-up-ctn" id="timeOutContainer">
<div class="close-ctn">
<a (click)="stayActive()">
<i class="material-icons">close</i>
</a>
</div>
<div class="pop-up-ctn-header">
<p class="header-text">
<i class="material-icons timeout-icon">access_time</i>Session Timeout</p>
</div>
<div class="pop-up-ctn-body">
<p class='text-left'>Due to inactivity your account pay session is about to expire.</p>
<p class="options">
<span class="option">
<a (click)="stayActive()">Continue</a>
</span>
<span class="option">
<a (click)="timeout()">Log Off</a>
</span>
</p>
</div>
</div>
</div>
./timeout.component.css
.options {
margin-bottom: 0px;
text-align: right;
}
.option {
margin-right: 10px;
cursor: pointer;
}
p {
vertical-align: middle;
}
.timeout-icon {
margin: -4px 4px 0px 0px;
vertical-align: middle;
}