ngx-techlify-core 14.6.2 → 14.6.3-alpha-7
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/esm2020/lib/core/pusher.service.mjs +41 -0
- package/esm2020/lib/techlify-notifications/ngx-techlify-notifier/ngx-techlify-notifier.component.mjs +40 -35
- package/fesm2015/ngx-techlify-core.mjs +74 -31
- package/fesm2015/ngx-techlify-core.mjs.map +1 -1
- package/fesm2020/ngx-techlify-core.mjs +72 -29
- package/fesm2020/ngx-techlify-core.mjs.map +1 -1
- package/lib/core/pusher.service.d.ts +13 -0
- package/lib/techlify-notifications/ngx-techlify-notifier/ngx-techlify-notifier.component.d.ts +8 -3
- package/package.json +3 -2
|
@@ -30,7 +30,7 @@ import * as i1$4 from '@angular/forms';
|
|
|
30
30
|
import { UntypedFormControl, Validators, ReactiveFormsModule, FormsModule } from '@angular/forms';
|
|
31
31
|
import * as i1$2 from '@angular/common/http';
|
|
32
32
|
import { HttpResponse, HttpClient, HttpClientModule } from '@angular/common/http';
|
|
33
|
-
import { throwError, Observable, Subject, fromEvent, of, from,
|
|
33
|
+
import { throwError, Observable, Subject, fromEvent, of, from, BehaviorSubject } from 'rxjs';
|
|
34
34
|
import { catchError, debounceTime, takeUntil, tap, distinctUntilChanged, startWith, switchMap, finalize, map, filter } from 'rxjs/operators';
|
|
35
35
|
import * as i1$1 from '@angular/material/snack-bar';
|
|
36
36
|
import { MAT_SNACK_BAR_DATA, MatSnackBarModule } from '@angular/material/snack-bar';
|
|
@@ -62,13 +62,14 @@ import * as i1$5 from '@angular/router';
|
|
|
62
62
|
import { RouteReuseStrategy, RouterModule, NavigationEnd } from '@angular/router';
|
|
63
63
|
import * as i7$3 from '@angular/material/divider';
|
|
64
64
|
import { MatDividerModule } from '@angular/material/divider';
|
|
65
|
-
import * as i8$
|
|
65
|
+
import * as i8$3 from '@angular/material/list';
|
|
66
66
|
import { MatListModule } from '@angular/material/list';
|
|
67
67
|
import * as i5$1 from '@angular/material/button-toggle';
|
|
68
68
|
import { MatButtonToggleModule } from '@angular/material/button-toggle';
|
|
69
69
|
import { FlexLayoutModule } from '@angular/flex-layout';
|
|
70
70
|
import * as i2$1 from 'ngx-toastr';
|
|
71
|
-
import
|
|
71
|
+
import Pusher from 'pusher-js';
|
|
72
|
+
import * as i9$3 from '@angular/material/badge';
|
|
72
73
|
import { MatBadgeModule } from '@angular/material/badge';
|
|
73
74
|
import * as i10$1 from '@angular/material/slide-toggle';
|
|
74
75
|
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
@@ -4218,10 +4219,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
|
|
|
4218
4219
|
}]
|
|
4219
4220
|
}] });
|
|
4220
4221
|
|
|
4222
|
+
class PusherService {
|
|
4223
|
+
constructor(credentialService) {
|
|
4224
|
+
this.credentialService = credentialService;
|
|
4225
|
+
this.pusher = new BehaviorSubject(null);
|
|
4226
|
+
this.initPusher();
|
|
4227
|
+
}
|
|
4228
|
+
initPusher() {
|
|
4229
|
+
console.log('Init Pusher');
|
|
4230
|
+
if (this.pusher.value) {
|
|
4231
|
+
this.pusher.value.disconnect();
|
|
4232
|
+
}
|
|
4233
|
+
console.log('pusher', this.pusher);
|
|
4234
|
+
this.pusher.next(new Pusher('74cae52a04e85d893bc2', {
|
|
4235
|
+
cluster: 'us2',
|
|
4236
|
+
forceTLS: true,
|
|
4237
|
+
authEndpoint: 'http://localhost/emr-api/public/broadcasting/auth',
|
|
4238
|
+
auth: {
|
|
4239
|
+
headers: {
|
|
4240
|
+
Authorization: 'Bearer ' + this.credentialService?.credentials?.token?.access_token
|
|
4241
|
+
}
|
|
4242
|
+
}
|
|
4243
|
+
}));
|
|
4244
|
+
}
|
|
4245
|
+
getPusher() {
|
|
4246
|
+
return this.pusher.asObservable();
|
|
4247
|
+
}
|
|
4248
|
+
}
|
|
4249
|
+
PusherService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: PusherService, deps: [{ token: CredentialsService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4250
|
+
PusherService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: PusherService, providedIn: 'root' });
|
|
4251
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: PusherService, decorators: [{
|
|
4252
|
+
type: Injectable,
|
|
4253
|
+
args: [{
|
|
4254
|
+
providedIn: 'root'
|
|
4255
|
+
}]
|
|
4256
|
+
}], ctorParameters: function () { return [{ type: CredentialsService }]; } });
|
|
4257
|
+
|
|
4221
4258
|
let NgxTechlifyNotifierComponent = class NgxTechlifyNotifierComponent {
|
|
4222
|
-
constructor(http, toastr, environment) {
|
|
4259
|
+
constructor(http, toastr, credentialService, pusherService, environment) {
|
|
4223
4260
|
this.http = http;
|
|
4224
4261
|
this.toastr = toastr;
|
|
4262
|
+
this.credentialService = credentialService;
|
|
4263
|
+
this.pusherService = pusherService;
|
|
4225
4264
|
this.environment = environment;
|
|
4226
4265
|
this.notifications = [];
|
|
4227
4266
|
this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };
|
|
@@ -4230,37 +4269,23 @@ let NgxTechlifyNotifierComponent = class NgxTechlifyNotifierComponent {
|
|
|
4230
4269
|
isLoadRelations: true,
|
|
4231
4270
|
relations: 'status,notification'
|
|
4232
4271
|
};
|
|
4272
|
+
this.user = this.credentialService.credentials.user;
|
|
4233
4273
|
}
|
|
4234
4274
|
ngOnInit() {
|
|
4275
|
+
console.log('Init Notifications');
|
|
4235
4276
|
this.rootScrollContainer = this.environment?.rootScrollContainer || 'body';
|
|
4236
|
-
this.pollingInterval = this.environment?.notificationPollingInterval || 5000;
|
|
4237
|
-
this.
|
|
4277
|
+
// this.pollingInterval = this.environment?.notificationPollingInterval || 5000;
|
|
4278
|
+
this.pushNotifications();
|
|
4238
4279
|
}
|
|
4239
4280
|
loadNotifications(initiate = false) {
|
|
4281
|
+
console.log('Load Notifications');
|
|
4240
4282
|
this.fetchNotifications(this.pageEvent).subscribe((result) => {
|
|
4241
4283
|
this.notifications = this.notifications.concat(result.data);
|
|
4242
4284
|
this.notifications = [...new Map(this.notifications.map(item => [item['id'], item])).values()];
|
|
4243
4285
|
this.pageEvent.page = result.current_page;
|
|
4244
4286
|
this.pageEvent.lastPage = result.last_page;
|
|
4245
|
-
if (initiate) {
|
|
4246
|
-
this.startNotificationPolling();
|
|
4247
|
-
}
|
|
4248
4287
|
});
|
|
4249
4288
|
}
|
|
4250
|
-
startNotificationPolling() {
|
|
4251
|
-
this.$notificationLoader =
|
|
4252
|
-
interval(this.pollingInterval)
|
|
4253
|
-
.pipe(switchMap((_) => this.fetchNotifications({ page: 1, perPage: 25, lastPage: 1 })), untilDestroyed(this)).subscribe((result) => {
|
|
4254
|
-
//Look for any new notifications
|
|
4255
|
-
const newNotifications = result.data.filter((item) => !this.notifications.some((x) => x.id == item.id));
|
|
4256
|
-
if (newNotifications?.length > 0) {
|
|
4257
|
-
this.notifications = newNotifications.concat(this.notifications);
|
|
4258
|
-
newNotifications.forEach((item) => {
|
|
4259
|
-
this.toastr.success(item?.notification?.body, item?.notification?.title);
|
|
4260
|
-
});
|
|
4261
|
-
}
|
|
4262
|
-
});
|
|
4263
|
-
}
|
|
4264
4289
|
get unreadNotificationsCount() {
|
|
4265
4290
|
return this.notifications.filter(x => x.status_id === TechlifyNotificationUserStatus.DELIVERED).length;
|
|
4266
4291
|
}
|
|
@@ -4268,6 +4293,24 @@ let NgxTechlifyNotifierComponent = class NgxTechlifyNotifierComponent {
|
|
|
4268
4293
|
return this.http.get(`api/notification-users`, { params: { ...this.filters, ...pageEvent } })
|
|
4269
4294
|
.pipe(untilDestroyed(this));
|
|
4270
4295
|
}
|
|
4296
|
+
pushNotifications() {
|
|
4297
|
+
console.log('Push Notifications');
|
|
4298
|
+
if (this.user) {
|
|
4299
|
+
console.log('Found User');
|
|
4300
|
+
// load messages
|
|
4301
|
+
this.loadNotifications();
|
|
4302
|
+
// get pusher
|
|
4303
|
+
this.pusherService.getPusher().subscribe((pusher) => {
|
|
4304
|
+
// generate channel name
|
|
4305
|
+
let channelName = `notification-channel-32`;
|
|
4306
|
+
// subscribe to chat channel
|
|
4307
|
+
this.channel = pusher.subscribe(channelName);
|
|
4308
|
+
this.channel = this.channel.bind('notification-event', (e) => {
|
|
4309
|
+
console.log(e);
|
|
4310
|
+
});
|
|
4311
|
+
});
|
|
4312
|
+
}
|
|
4313
|
+
}
|
|
4271
4314
|
onScroll() {
|
|
4272
4315
|
if (this.pageEvent.lastPage > this.pageEvent.page) {
|
|
4273
4316
|
this.pageEvent.page += 1;
|
|
@@ -4290,15 +4333,15 @@ let NgxTechlifyNotifierComponent = class NgxTechlifyNotifierComponent {
|
|
|
4290
4333
|
}
|
|
4291
4334
|
}
|
|
4292
4335
|
};
|
|
4293
|
-
NgxTechlifyNotifierComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NgxTechlifyNotifierComponent, deps: [{ token: HttpService }, { token: i2$1.ToastrService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Component });
|
|
4294
|
-
NgxTechlifyNotifierComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: NgxTechlifyNotifierComponent, selector: "app-ngx-techlify-notifier", ngImport: i0, template: "<button mat-button [matMenuTriggerFor]=\"notificaitonMenu\" type=\"button\" #menuTrigger=\"matMenuTrigger\"\n [matBadge]=\"unreadNotificationsCount\" matBadgePosition=\"after\" matBadgeColor=\"warn\"\n [matBadgeHidden]=\"unreadNotificationsCount == 0\">\n <mat-icon>notifications_active</mat-icon>\n</button>\n\n<mat-menu #notificaitonMenu=\"matMenu\" class=\"notifications\">\n <ng-container *ngIf=\"notifications.length > 0 && menuTrigger.menuOpen\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" infiniteScrollContainer=\".mat-menu-panel.notifications\"\n [fromRoot]=\"true\">\n <div mat-menu-item class=\"mat-elevation-z1 p-2 mat-typography\" fxLayout=\"column\"\n *ngFor=\"let item of notifications\" (click)=\"notificationClick($event, item)\">\n <div fxLayout fxLayoutAlign=\"start center\">\n <h3 class=\"m-0\">{{item?.notification?.title}}</h3>\n <span fxFlex></span>\n <span\n [ngClass]=\"{'text-success':(item?.status_id == 2),'text-secondary':(item?.status_id == 1)}\">
|
|
4336
|
+
NgxTechlifyNotifierComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NgxTechlifyNotifierComponent, deps: [{ token: HttpService }, { token: i2$1.ToastrService }, { token: CredentialsService }, { token: PusherService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Component });
|
|
4337
|
+
NgxTechlifyNotifierComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: NgxTechlifyNotifierComponent, selector: "app-ngx-techlify-notifier", ngImport: i0, template: "<button mat-button [matMenuTriggerFor]=\"notificaitonMenu\" type=\"button\" #menuTrigger=\"matMenuTrigger\"\n [matBadge]=\"unreadNotificationsCount\" matBadgePosition=\"after\" matBadgeColor=\"warn\"\n [matBadgeHidden]=\"unreadNotificationsCount == 0\">\n <mat-icon>notifications_active</mat-icon>\n</button>\n\n<mat-menu #notificaitonMenu=\"matMenu\" class=\"notifications\">\n <ng-container *ngIf=\"notifications.length > 0 && menuTrigger.menuOpen\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" infiniteScrollContainer=\".mat-menu-panel.notifications\"\n [fromRoot]=\"true\">\n <div mat-menu-item class=\"mat-elevation-z1 p-2 mat-typography\" fxLayout=\"column\"\n *ngFor=\"let item of notifications\" (click)=\"notificationClick($event, item)\">\n <div fxLayout fxLayoutAlign=\"start center\">\n <h3 class=\"m-0\">{{item?.notification?.title}}</h3>\n <span fxFlex></span>\n <span\n [ngClass]=\"{'text-success':(item?.status_id == 2),'text-secondary':(item?.status_id == 1)}\">Test Title</span>\n </div>\n <div class=\"text-secondary\">\n {{item?.notification?.body}}\n </div>\n </div>\n </ng-container>\n <div mat-menu-item class=\"mat-elevation-z1 p-2 mat-typography\" fxLayout=\"column\" fxLayoutAlign=\"start center\"\n *ngIf=\"notifications.length == 0\">\n <span> No Notifications to show</span>\n </div>\n</mat-menu>", styles: [":host{display:flex}::ng-deep .mat-menu-panel.notifications{width:500px!important;max-width:500px!important;min-height:unset!important}::ng-deep .mat-menu-panel.notifications .mat-menu-content{padding:0!important}::ng-deep .mat-menu-panel.notifications .mat-menu-item{height:auto!important;line-height:20px!important}:host ::ng-deep .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{top:-10px;right:5px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i9$3.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "directive", type: i7.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i7.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i7.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i2.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }] });
|
|
4295
4338
|
NgxTechlifyNotifierComponent = __decorate([
|
|
4296
4339
|
UntilDestroy()
|
|
4297
4340
|
], NgxTechlifyNotifierComponent);
|
|
4298
4341
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NgxTechlifyNotifierComponent, decorators: [{
|
|
4299
4342
|
type: Component,
|
|
4300
|
-
args: [{ selector: 'app-ngx-techlify-notifier', template: "<button mat-button [matMenuTriggerFor]=\"notificaitonMenu\" type=\"button\" #menuTrigger=\"matMenuTrigger\"\n [matBadge]=\"unreadNotificationsCount\" matBadgePosition=\"after\" matBadgeColor=\"warn\"\n [matBadgeHidden]=\"unreadNotificationsCount == 0\">\n <mat-icon>notifications_active</mat-icon>\n</button>\n\n<mat-menu #notificaitonMenu=\"matMenu\" class=\"notifications\">\n <ng-container *ngIf=\"notifications.length > 0 && menuTrigger.menuOpen\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" infiniteScrollContainer=\".mat-menu-panel.notifications\"\n [fromRoot]=\"true\">\n <div mat-menu-item class=\"mat-elevation-z1 p-2 mat-typography\" fxLayout=\"column\"\n *ngFor=\"let item of notifications\" (click)=\"notificationClick($event, item)\">\n <div fxLayout fxLayoutAlign=\"start center\">\n <h3 class=\"m-0\">{{item?.notification?.title}}</h3>\n <span fxFlex></span>\n <span\n [ngClass]=\"{'text-success':(item?.status_id == 2),'text-secondary':(item?.status_id == 1)}\">
|
|
4301
|
-
}], ctorParameters: function () { return [{ type: HttpService }, { type: i2$1.ToastrService }, { type: undefined, decorators: [{
|
|
4343
|
+
args: [{ selector: 'app-ngx-techlify-notifier', template: "<button mat-button [matMenuTriggerFor]=\"notificaitonMenu\" type=\"button\" #menuTrigger=\"matMenuTrigger\"\n [matBadge]=\"unreadNotificationsCount\" matBadgePosition=\"after\" matBadgeColor=\"warn\"\n [matBadgeHidden]=\"unreadNotificationsCount == 0\">\n <mat-icon>notifications_active</mat-icon>\n</button>\n\n<mat-menu #notificaitonMenu=\"matMenu\" class=\"notifications\">\n <ng-container *ngIf=\"notifications.length > 0 && menuTrigger.menuOpen\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" infiniteScrollContainer=\".mat-menu-panel.notifications\"\n [fromRoot]=\"true\">\n <div mat-menu-item class=\"mat-elevation-z1 p-2 mat-typography\" fxLayout=\"column\"\n *ngFor=\"let item of notifications\" (click)=\"notificationClick($event, item)\">\n <div fxLayout fxLayoutAlign=\"start center\">\n <h3 class=\"m-0\">{{item?.notification?.title}}</h3>\n <span fxFlex></span>\n <span\n [ngClass]=\"{'text-success':(item?.status_id == 2),'text-secondary':(item?.status_id == 1)}\">Test Title</span>\n </div>\n <div class=\"text-secondary\">\n {{item?.notification?.body}}\n </div>\n </div>\n </ng-container>\n <div mat-menu-item class=\"mat-elevation-z1 p-2 mat-typography\" fxLayout=\"column\" fxLayoutAlign=\"start center\"\n *ngIf=\"notifications.length == 0\">\n <span> No Notifications to show</span>\n </div>\n</mat-menu>", styles: [":host{display:flex}::ng-deep .mat-menu-panel.notifications{width:500px!important;max-width:500px!important;min-height:unset!important}::ng-deep .mat-menu-panel.notifications .mat-menu-content{padding:0!important}::ng-deep .mat-menu-panel.notifications .mat-menu-item{height:auto!important;line-height:20px!important}:host ::ng-deep .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{top:-10px;right:5px}\n"] }]
|
|
4344
|
+
}], ctorParameters: function () { return [{ type: HttpService }, { type: i2$1.ToastrService }, { type: CredentialsService }, { type: PusherService }, { type: undefined, decorators: [{
|
|
4302
4345
|
type: Inject,
|
|
4303
4346
|
args: ['environment']
|
|
4304
4347
|
}] }]; } });
|
|
@@ -4399,7 +4442,7 @@ let TechlifyNotificationForUserComponent = class TechlifyNotificationForUserComp
|
|
|
4399
4442
|
}
|
|
4400
4443
|
};
|
|
4401
4444
|
TechlifyNotificationForUserComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TechlifyNotificationForUserComponent, deps: [{ token: HttpService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Component });
|
|
4402
|
-
TechlifyNotificationForUserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: TechlifyNotificationForUserComponent, selector: "app-techlify-notification-for-user", inputs: { blockAdminNotification: "blockAdminNotification" }, ngImport: i0, template: "<div fxLayout=\"column\" class=\"container my-4\">\n\n <div infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\"\n [fromRoot]=\"true\" [infiniteScrollContainer]=\"rootScrollContainer\">\n <mat-list>\n <div mat-subheader>Notifications</div>\n <mat-list-item *ngFor=\"let notification of notifications\">\n <mat-icon mat-list-icon>email</mat-icon>\n <div mat-line>{{notification?.title}} </div>\n <div mat-line> {{notification?.description}} </div>\n <div fxLayout fxLayoutAlign=\"end\">\n <button *ngIf=\"notification?.current_user_subscription?.is_subscribed\" type=\"button\"\n mat-stroked-button color=\"primary\" (click)=\"toggleSubscription(notification)\">\n Unsubscribe\n </button>\n <button *ngIf=\"!notification?.current_user_subscription?.is_subscribed\" type=\"button\"\n mat-raised-button color=\"primary\" (click)=\"toggleSubscription(notification)\">\n Subscribe\n </button>\n </div>\n <mat-divider></mat-divider>\n </mat-list-item>\n </mat-list>\n </div>\n\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8$1.MatLine, selector: "[mat-line], [matLine]" }, { kind: "component", type: i7$3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i8$
|
|
4445
|
+
TechlifyNotificationForUserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: TechlifyNotificationForUserComponent, selector: "app-techlify-notification-for-user", inputs: { blockAdminNotification: "blockAdminNotification" }, ngImport: i0, template: "<div fxLayout=\"column\" class=\"container my-4\">\n\n <div infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\"\n [fromRoot]=\"true\" [infiniteScrollContainer]=\"rootScrollContainer\">\n <mat-list>\n <div mat-subheader>Notifications</div>\n <mat-list-item *ngFor=\"let notification of notifications\">\n <mat-icon mat-list-icon>email</mat-icon>\n <div mat-line>{{notification?.title}} </div>\n <div mat-line> {{notification?.description}} </div>\n <div fxLayout fxLayoutAlign=\"end\">\n <button *ngIf=\"notification?.current_user_subscription?.is_subscribed\" type=\"button\"\n mat-stroked-button color=\"primary\" (click)=\"toggleSubscription(notification)\">\n Unsubscribe\n </button>\n <button *ngIf=\"!notification?.current_user_subscription?.is_subscribed\" type=\"button\"\n mat-raised-button color=\"primary\" (click)=\"toggleSubscription(notification)\">\n Subscribe\n </button>\n </div>\n <mat-divider></mat-divider>\n </mat-list-item>\n </mat-list>\n </div>\n\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8$1.MatLine, selector: "[mat-line], [matLine]" }, { kind: "component", type: i7$3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i8$3.MatList, selector: "mat-list, mat-action-list", inputs: ["disableRipple", "disabled"], exportAs: ["matList"] }, { kind: "component", type: i8$3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { kind: "directive", type: i8$3.MatListIconCssMatStyler, selector: "[mat-list-icon], [matListIcon]" }, { kind: "directive", type: i8$3.MatListSubheaderCssMatStyler, selector: "[mat-subheader], [matSubheader]" }, { kind: "directive", type: i7.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i7.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }] });
|
|
4403
4446
|
TechlifyNotificationForUserComponent = __decorate([
|
|
4404
4447
|
UntilDestroy()
|
|
4405
4448
|
], TechlifyNotificationForUserComponent);
|
|
@@ -6456,7 +6499,7 @@ let EmailSubscriptionForUserComponent = class EmailSubscriptionForUserComponent
|
|
|
6456
6499
|
}
|
|
6457
6500
|
};
|
|
6458
6501
|
EmailSubscriptionForUserComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: EmailSubscriptionForUserComponent, deps: [{ token: HttpService }], target: i0.ɵɵFactoryTarget.Component });
|
|
6459
|
-
EmailSubscriptionForUserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: EmailSubscriptionForUserComponent, selector: "app-email-subscription-for-user", ngImport: i0, template: "<div fxLayout=\"column\" class=\"container my-4\">\n\n <div class=\"scroll-container\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\">\n <mat-list>\n <div mat-subheader>Available Subscriptions</div>\n <mat-list-item *ngFor=\"let sub of subscriptions\">\n <mat-icon mat-list-icon>email</mat-icon>\n <div mat-line>{{sub?.title}} </div>\n <div mat-line class=\"text-secondary\">{{sub?.frequency?.title}}</div>\n <div mat-line> {{sub?.description}} </div>\n <div fxLayout fxLayoutAlign=\"end\">\n <button type=\"button\" *ngIf=\"!sub?.current_user_subscription\" mat-raised-button color=\"primary\"\n (click)=\"subscribe(sub)\">Subscribe</button>\n <button type=\"button\" *ngIf=\"sub?.current_user_subscription\" mat-stroked-button color=\"primary\"\n (click)=\"unsubscribe(sub)\">Unsubscribe</button>\n </div>\n <mat-divider></mat-divider>\n </mat-list-item>\n </mat-list>\n </div>\n\n</div>", styles: [".scroll-container{max-height:800px;overflow-y:auto}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8$1.MatLine, selector: "[mat-line], [matLine]" }, { kind: "component", type: i7$3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i8$
|
|
6502
|
+
EmailSubscriptionForUserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: EmailSubscriptionForUserComponent, selector: "app-email-subscription-for-user", ngImport: i0, template: "<div fxLayout=\"column\" class=\"container my-4\">\n\n <div class=\"scroll-container\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\">\n <mat-list>\n <div mat-subheader>Available Subscriptions</div>\n <mat-list-item *ngFor=\"let sub of subscriptions\">\n <mat-icon mat-list-icon>email</mat-icon>\n <div mat-line>{{sub?.title}} </div>\n <div mat-line class=\"text-secondary\">{{sub?.frequency?.title}}</div>\n <div mat-line> {{sub?.description}} </div>\n <div fxLayout fxLayoutAlign=\"end\">\n <button type=\"button\" *ngIf=\"!sub?.current_user_subscription\" mat-raised-button color=\"primary\"\n (click)=\"subscribe(sub)\">Subscribe</button>\n <button type=\"button\" *ngIf=\"sub?.current_user_subscription\" mat-stroked-button color=\"primary\"\n (click)=\"unsubscribe(sub)\">Unsubscribe</button>\n </div>\n <mat-divider></mat-divider>\n </mat-list-item>\n </mat-list>\n </div>\n\n</div>", styles: [".scroll-container{max-height:800px;overflow-y:auto}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8$1.MatLine, selector: "[mat-line], [matLine]" }, { kind: "component", type: i7$3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i8$3.MatList, selector: "mat-list, mat-action-list", inputs: ["disableRipple", "disabled"], exportAs: ["matList"] }, { kind: "component", type: i8$3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { kind: "directive", type: i8$3.MatListIconCssMatStyler, selector: "[mat-list-icon], [matListIcon]" }, { kind: "directive", type: i8$3.MatListSubheaderCssMatStyler, selector: "[mat-subheader], [matSubheader]" }, { kind: "directive", type: i7.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i7.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }] });
|
|
6460
6503
|
EmailSubscriptionForUserComponent = __decorate([
|
|
6461
6504
|
UntilDestroy()
|
|
6462
6505
|
], EmailSubscriptionForUserComponent);
|