KEYCLOAK-8002: Add missing TS files to notification component
This commit is contained in:
parent
80e5227bcd
commit
4554798cec
3 changed files with 124 additions and 0 deletions
|
@ -0,0 +1,61 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2018 Red Hat, Inc. and/or its affiliates
|
||||||
|
* and other contributors as indicated by the @author tags.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
import {Component, OnInit} from '@angular/core';
|
||||||
|
import {Router, NavigationEnd} from '@angular/router';
|
||||||
|
|
||||||
|
import {KeycloakNotificationService} from '../notification/keycloak-notification.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'inline-notification',
|
||||||
|
templateUrl: './inline-notification.component.html',
|
||||||
|
styleUrls: ['./inline-notification.component.css']
|
||||||
|
})
|
||||||
|
export class InlineNotification implements OnInit {
|
||||||
|
dismissable: boolean = true;
|
||||||
|
message: string = '';
|
||||||
|
type: string = 'success';
|
||||||
|
hidden: boolean = true;
|
||||||
|
|
||||||
|
constructor(private notificationSvc: KeycloakNotificationService,
|
||||||
|
private router: Router) {
|
||||||
|
this.router.events.subscribe(value => {
|
||||||
|
if (value instanceof NavigationEnd) {
|
||||||
|
this.hidden = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
// Track Notifications
|
||||||
|
this.notificationSvc.getNotificationsObserver
|
||||||
|
.subscribe((notification) => {
|
||||||
|
console.log('>> notification=' + JSON.stringify(notification));
|
||||||
|
if (notification.length === 0) {
|
||||||
|
this.hidden = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
console.log('>> updating message...');
|
||||||
|
// always display the latest message
|
||||||
|
this.message = notification[notification.length-1].message;
|
||||||
|
this.type = notification[notification.length-1].type;
|
||||||
|
this.hidden = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
<pfng-inline-notification
|
||||||
|
[message]="message"
|
||||||
|
[dismissable]="dismissable"
|
||||||
|
[type]="type"
|
||||||
|
[(hidden)]="hidden">
|
||||||
|
</pfng-inline-notification>
|
|
@ -0,0 +1,57 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2018 Red Hat, Inc. and/or its affiliates
|
||||||
|
* and other contributors as indicated by the @author tags.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
import {Injectable} from '@angular/core';
|
||||||
|
import {Router, NavigationEnd} from '@angular/router';
|
||||||
|
|
||||||
|
import {NotificationService} from 'patternfly-ng/notification/notification-service';
|
||||||
|
import {TranslateUtil} from '../ngx-translate/translate.util';
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class KeycloakNotificationService extends NotificationService {
|
||||||
|
|
||||||
|
constructor(router: Router,
|
||||||
|
private translateUtil: TranslateUtil) {
|
||||||
|
super();
|
||||||
|
router.events.subscribe(value => {
|
||||||
|
if (value instanceof NavigationEnd) {
|
||||||
|
this.removeAll();
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public notify(message: string, notificationType: string, params?: Array<any>) : void {
|
||||||
|
let translatedMessage: string = this.translateUtil.translate(message, params);
|
||||||
|
translatedMessage = translatedMessage.replace("%27", "'");
|
||||||
|
this.message(
|
||||||
|
notificationType, // type
|
||||||
|
null, // header
|
||||||
|
translatedMessage, // message
|
||||||
|
false, // isPersistent
|
||||||
|
null, // Action primaryAction
|
||||||
|
null // Action[] more actions
|
||||||
|
);
|
||||||
|
this.setVerbose(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private removeAll(): void {
|
||||||
|
for (let notification of this.getNotifications()) {
|
||||||
|
this.remove(notification);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue