@smartbit4all/ng-client 4.5.36 → 4.5.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/session/smart-timer/smart-session-timer.component.mjs +10 -5
- package/fesm2022/smartbit4all-ng-client.mjs +9 -4
- package/fesm2022/smartbit4all-ng-client.mjs.map +1 -1
- package/lib/session/smart-timer/smart-session-timer.component.d.ts +2 -1
- package/package.json +1 -1
- package/smartbit4all-ng-client-4.5.37.tgz +0 -0
- package/smartbit4all-ng-client-4.5.36.tgz +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, computed, signal } from '@angular/core';
|
|
1
|
+
import { Component, computed, output, signal } from '@angular/core';
|
|
2
2
|
import { Subject, takeUntil } from 'rxjs';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "../smart-session.service";
|
|
@@ -11,13 +11,14 @@ export class SmartSessionTimerComponent {
|
|
|
11
11
|
this.secondsLeft = signal(undefined);
|
|
12
12
|
this.timeFormatted = computed(() => {
|
|
13
13
|
const secs = this.secondsLeft();
|
|
14
|
-
if (!secs) {
|
|
14
|
+
if (!secs || secs < 1) {
|
|
15
15
|
return '--:--';
|
|
16
16
|
}
|
|
17
17
|
const minutes = Math.floor(secs / 60);
|
|
18
18
|
const remainingSeconds = secs % 60;
|
|
19
19
|
return `${minutes}:${remainingSeconds < 10 ? '0' : ''}${remainingSeconds}`;
|
|
20
20
|
});
|
|
21
|
+
this.onTimerExpired = output();
|
|
21
22
|
}
|
|
22
23
|
ngOnInit() {
|
|
23
24
|
this.bootstrap.whenReady().then(() => {
|
|
@@ -37,7 +38,11 @@ export class SmartSessionTimerComponent {
|
|
|
37
38
|
}
|
|
38
39
|
const expiration = new Date(expirationStr);
|
|
39
40
|
const now = new Date();
|
|
40
|
-
|
|
41
|
+
const secsLeft = Math.floor((expiration.getTime() - now.getTime()) / 1000);
|
|
42
|
+
if (secsLeft < 1) {
|
|
43
|
+
this.onTimerExpired.emit();
|
|
44
|
+
}
|
|
45
|
+
this.secondsLeft.set(secsLeft);
|
|
41
46
|
}
|
|
42
47
|
ngOnDestroy() {
|
|
43
48
|
clearInterval(this.timerId);
|
|
@@ -45,10 +50,10 @@ export class SmartSessionTimerComponent {
|
|
|
45
50
|
this._destroy$.complete();
|
|
46
51
|
}
|
|
47
52
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartSessionTimerComponent, deps: [{ token: i1.SmartSessionService }, { token: i2.SmartBackendBootstrapService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
48
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartSessionTimerComponent, selector: "smart-session-timer", ngImport: i0, template: "<div class=\"smart-session-timer-container\">\r\n <span class=\"smart-session-timer\">{{ timeFormatted() }}</span>\r\n</div>\r\n", styles: [""] }); }
|
|
53
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartSessionTimerComponent, selector: "smart-session-timer", outputs: { onTimerExpired: "onTimerExpired" }, ngImport: i0, template: "<div class=\"smart-session-timer-container\">\r\n <span class=\"smart-session-timer\">{{ timeFormatted() }}</span>\r\n</div>\r\n", styles: [""] }); }
|
|
49
54
|
}
|
|
50
55
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartSessionTimerComponent, decorators: [{
|
|
51
56
|
type: Component,
|
|
52
57
|
args: [{ selector: 'smart-session-timer', template: "<div class=\"smart-session-timer-container\">\r\n <span class=\"smart-session-timer\">{{ timeFormatted() }}</span>\r\n</div>\r\n" }]
|
|
53
58
|
}], ctorParameters: () => [{ type: i1.SmartSessionService }, { type: i2.SmartBackendBootstrapService }] });
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtc2Vzc2lvbi10aW1lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zZXNzaW9uL3NtYXJ0LXRpbWVyL3NtYXJ0LXNlc3Npb24tdGltZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc2Vzc2lvbi9zbWFydC10aW1lci9zbWFydC1zZXNzaW9uLXRpbWVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFxQixNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZGLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBUzFDLE1BQU0sT0FBTywwQkFBMEI7SUFrQnJDLFlBQ1UsT0FBNEIsRUFDNUIsU0FBdUM7UUFEdkMsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7UUFDNUIsY0FBUyxHQUFULFNBQVMsQ0FBOEI7UUFuQnpDLGNBQVMsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUVqRCxnQkFBVyxHQUFHLE1BQU0sQ0FBcUIsU0FBUyxDQUFDLENBQUM7UUFDcEQsa0JBQWEsR0FBRyxRQUFRLENBQVMsR0FBRyxFQUFFO1lBQ3BDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsT0FBTyxPQUFPLENBQUM7WUFDakIsQ0FBQztZQUVELE1BQU0sT0FBTyxHQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLE1BQU0sZ0JBQWdCLEdBQVcsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUMzQyxPQUFPLEdBQUcsT0FBTyxJQUFJLGdCQUFnQixHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUM3RSxDQUFDLENBQUMsQ0FBQztRQUdILG1CQUFjLEdBQUcsTUFBTSxFQUFRLENBQUM7SUFLN0IsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2pGLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO2dCQUM5QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDO1FBQy9ELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNoQyxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUMzRSxJQUFJLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdCLENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsV0FBVztRQUNULGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7K0dBdERVLDBCQUEwQjttR0FBMUIsMEJBQTBCLDBHQ1h2QyxtSUFHQTs7NEZEUWEsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIE9uRGVzdHJveSwgT25Jbml0LCBvdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNtYXJ0U2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi9zbWFydC1zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTbWFydEJhY2tlbmRCb290c3RyYXBTZXJ2aWNlIH0gZnJvbSAnLi4vc21hcnQtYmFja2VuZC1ib290c3RyYXAuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NtYXJ0LXNlc3Npb24tdGltZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zbWFydC1zZXNzaW9uLXRpbWVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zbWFydC1zZXNzaW9uLXRpbWVyLmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0U2Vzc2lvblRpbWVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgX2Rlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgc2Vjb25kc0xlZnQgPSBzaWduYWw8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG4gIHRpbWVGb3JtYXR0ZWQgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcclxuICAgIGNvbnN0IHNlY3MgPSB0aGlzLnNlY29uZHNMZWZ0KCk7XHJcbiAgICBpZiAoIXNlY3MgfHwgc2VjcyA8IDEpIHtcclxuICAgICAgcmV0dXJuICctLTotLSc7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbWludXRlczogbnVtYmVyID0gTWF0aC5mbG9vcihzZWNzIC8gNjApO1xyXG4gICAgY29uc3QgcmVtYWluaW5nU2Vjb25kczogbnVtYmVyID0gc2VjcyAlIDYwO1xyXG4gICAgcmV0dXJuIGAke21pbnV0ZXN9OiR7cmVtYWluaW5nU2Vjb25kcyA8IDEwID8gJzAnIDogJyd9JHtyZW1haW5pbmdTZWNvbmRzfWA7XHJcbiAgfSk7XHJcblxyXG4gIHRpbWVySWQ/OiBudW1iZXI7XHJcbiAgb25UaW1lckV4cGlyZWQgPSBvdXRwdXQ8dm9pZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHNlc3Npb246IFNtYXJ0U2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGJvb3RzdHJhcDogU21hcnRCYWNrZW5kQm9vdHN0cmFwU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmJvb3RzdHJhcC53aGVuUmVhZHkoKS50aGVuKCgpID0+IHtcclxuICAgICAgdGhpcy5zZXNzaW9uLnNlc3Npb25FeHBpcmFjeUNoYW5nZWQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudXBkYXRlU2Vjb25kc0xlZnQoKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMudGltZXJJZCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVNlY29uZHNMZWZ0KCk7XHJcbiAgICAgIH0sIDEwMDApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVNlY29uZHNMZWZ0KCkge1xyXG4gICAgY29uc3QgZXhwaXJhdGlvblN0ciA9IHRoaXMuc2Vzc2lvbi5zZXNzaW9uSW5mb0RhdGE/LmV4cGlyYXRpb247XHJcbiAgICBpZiAoIWV4cGlyYXRpb25TdHIpIHtcclxuICAgICAgdGhpcy5zZWNvbmRzTGVmdC5zZXQodW5kZWZpbmVkKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGV4cGlyYXRpb24gPSBuZXcgRGF0ZShleHBpcmF0aW9uU3RyKTtcclxuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICBjb25zdCBzZWNzTGVmdCA9IE1hdGguZmxvb3IoKGV4cGlyYXRpb24uZ2V0VGltZSgpIC0gbm93LmdldFRpbWUoKSkgLyAxMDAwKTtcclxuICAgIGlmIChzZWNzTGVmdCA8IDEpIHtcclxuICAgICAgdGhpcy5vblRpbWVyRXhwaXJlZC5lbWl0KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlY29uZHNMZWZ0LnNldChzZWNzTGVmdCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcklkKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJzbWFydC1zZXNzaW9uLXRpbWVyLWNvbnRhaW5lclwiPlxyXG4gIDxzcGFuIGNsYXNzPVwic21hcnQtc2Vzc2lvbi10aW1lclwiPnt7IHRpbWVGb3JtYXR0ZWQoKSB9fTwvc3Bhbj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, Injectable, Optional, Inject, PLATFORM_ID, NgModule, SkipSelf, RendererStyleFlags2, Directive, Input, HostBinding, HostListener, Component, EventEmitter, Output, ViewChildren, ViewChild, ElementRef, forwardRef, Pipe, ViewContainerRef, ViewEncapsulation, ChangeDetectionStrategy, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, signal, computed, input, effect, inject, ApplicationRef, viewChild, ChangeDetectorRef } from '@angular/core';
|
|
2
|
+
import { InjectionToken, Injectable, Optional, Inject, PLATFORM_ID, NgModule, SkipSelf, RendererStyleFlags2, Directive, Input, HostBinding, HostListener, Component, EventEmitter, Output, ViewChildren, ViewChild, ElementRef, forwardRef, Pipe, ViewContainerRef, ViewEncapsulation, ChangeDetectionStrategy, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, signal, computed, output, input, effect, inject, ApplicationRef, viewChild, ChangeDetectorRef } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/common/http';
|
|
4
4
|
import { HttpHeaders, HttpContext, HttpErrorResponse, HttpParams, HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
|
|
5
5
|
import { Subject, lastValueFrom, take, takeUntil, interval, startWith, map, distinctUntilChanged, catchError, throwError, from } from 'rxjs';
|
|
@@ -13639,13 +13639,14 @@ class SmartSessionTimerComponent {
|
|
|
13639
13639
|
this.secondsLeft = signal(undefined);
|
|
13640
13640
|
this.timeFormatted = computed(() => {
|
|
13641
13641
|
const secs = this.secondsLeft();
|
|
13642
|
-
if (!secs) {
|
|
13642
|
+
if (!secs || secs < 1) {
|
|
13643
13643
|
return '--:--';
|
|
13644
13644
|
}
|
|
13645
13645
|
const minutes = Math.floor(secs / 60);
|
|
13646
13646
|
const remainingSeconds = secs % 60;
|
|
13647
13647
|
return `${minutes}:${remainingSeconds < 10 ? '0' : ''}${remainingSeconds}`;
|
|
13648
13648
|
});
|
|
13649
|
+
this.onTimerExpired = output();
|
|
13649
13650
|
}
|
|
13650
13651
|
ngOnInit() {
|
|
13651
13652
|
this.bootstrap.whenReady().then(() => {
|
|
@@ -13665,7 +13666,11 @@ class SmartSessionTimerComponent {
|
|
|
13665
13666
|
}
|
|
13666
13667
|
const expiration = new Date(expirationStr);
|
|
13667
13668
|
const now = new Date();
|
|
13668
|
-
|
|
13669
|
+
const secsLeft = Math.floor((expiration.getTime() - now.getTime()) / 1000);
|
|
13670
|
+
if (secsLeft < 1) {
|
|
13671
|
+
this.onTimerExpired.emit();
|
|
13672
|
+
}
|
|
13673
|
+
this.secondsLeft.set(secsLeft);
|
|
13669
13674
|
}
|
|
13670
13675
|
ngOnDestroy() {
|
|
13671
13676
|
clearInterval(this.timerId);
|
|
@@ -13673,7 +13678,7 @@ class SmartSessionTimerComponent {
|
|
|
13673
13678
|
this._destroy$.complete();
|
|
13674
13679
|
}
|
|
13675
13680
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartSessionTimerComponent, deps: [{ token: SmartSessionService }, { token: SmartBackendBootstrapService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13676
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartSessionTimerComponent, selector: "smart-session-timer", ngImport: i0, template: "<div class=\"smart-session-timer-container\">\r\n <span class=\"smart-session-timer\">{{ timeFormatted() }}</span>\r\n</div>\r\n", styles: [""] }); }
|
|
13681
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartSessionTimerComponent, selector: "smart-session-timer", outputs: { onTimerExpired: "onTimerExpired" }, ngImport: i0, template: "<div class=\"smart-session-timer-container\">\r\n <span class=\"smart-session-timer\">{{ timeFormatted() }}</span>\r\n</div>\r\n", styles: [""] }); }
|
|
13677
13682
|
}
|
|
13678
13683
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartSessionTimerComponent, decorators: [{
|
|
13679
13684
|
type: Component,
|