|
|
|
@ -14,28 +14,75 @@ |
|
|
|
/// limitations under the License.
|
|
|
|
///
|
|
|
|
|
|
|
|
import { Component, EventEmitter, Input, Output } from '@angular/core'; |
|
|
|
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; |
|
|
|
import { Notification } from '@shared/models/notification.models'; |
|
|
|
import { UtilsService } from '@core/services/utils.service'; |
|
|
|
import { Router } from '@angular/router'; |
|
|
|
import { coerceBooleanProperty } from '@angular/cdk/coercion'; |
|
|
|
|
|
|
|
@Component({ |
|
|
|
selector: 'tb-notification', |
|
|
|
templateUrl: './notification.component.html', |
|
|
|
styleUrls: ['./notification.component.scss'] |
|
|
|
}) |
|
|
|
export class NotificationComponent { |
|
|
|
export class NotificationComponent implements OnInit { |
|
|
|
|
|
|
|
@Input() |
|
|
|
notification: Notification; |
|
|
|
|
|
|
|
@Input() |
|
|
|
onClose: () => void; |
|
|
|
|
|
|
|
@Output() |
|
|
|
markAsRead = new EventEmitter<string>(); |
|
|
|
constructor() { |
|
|
|
|
|
|
|
private previewValue = false; |
|
|
|
get preview(): boolean { |
|
|
|
return this.previewValue; |
|
|
|
} |
|
|
|
@Input() |
|
|
|
set preview(value: boolean) { |
|
|
|
this.previewValue = coerceBooleanProperty(value); |
|
|
|
} |
|
|
|
|
|
|
|
showIcon = false; |
|
|
|
showButton = false; |
|
|
|
buttonLabel = ''; |
|
|
|
|
|
|
|
constructor( |
|
|
|
private utils: UtilsService, |
|
|
|
private router: Router |
|
|
|
) { |
|
|
|
} |
|
|
|
|
|
|
|
ngOnInit() { |
|
|
|
this.showIcon = this.notification.additionalConfig?.icon?.enabled; |
|
|
|
this.showButton = this.notification.additionalConfig?.actionButtonConfig?.enabled; |
|
|
|
if (this.showButton) { |
|
|
|
this.buttonLabel = this.utils.customTranslation(this.notification.additionalConfig.actionButtonConfig.text, |
|
|
|
this.notification.additionalConfig.actionButtonConfig.text); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
markRead($event: Event) { |
|
|
|
if ($event) { |
|
|
|
$event.stopPropagation(); |
|
|
|
} |
|
|
|
this.markAsRead.next(this.notification.id.id); |
|
|
|
if (!this.preview) { |
|
|
|
this.markAsRead.next(this.notification.id.id); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
navigate($event: Event) { |
|
|
|
if ($event) { |
|
|
|
$event.stopPropagation(); |
|
|
|
} |
|
|
|
if (!this.preview) { |
|
|
|
this.router.navigateByUrl(this.router.parseUrl(this.notification.additionalConfig.actionButtonConfig.link)).then(() => { |
|
|
|
}); |
|
|
|
if (this.onClose) { |
|
|
|
this.onClose(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|