Skip to content

Commit 84b1a4a

Browse files
committed
feat(message): Added global message service
1 parent 9cb4412 commit 84b1a4a

File tree

6 files changed

+50
-6
lines changed

6 files changed

+50
-6
lines changed

components/message/message-container.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ export class SuiMessageContainer {
7878
if (!this.showNewestFirst) {
7979
this._componentFactory.moveToElement(message.componentRef, this._element.nativeElement);
8080
}
81+
8182
message.component.show();
8283
}
8384

components/message/message-controller.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import { MessageConfig } from "./message-config";
22
import { SuiActiveMessage } from "./active-message";
33
import { SuiMessageContainer } from "./message-container";
44

5-
65
export class MessageController {
76
private _container:SuiMessageContainer;
87

@@ -22,7 +21,7 @@ export class MessageController {
2221
return this._container.dismissAll();
2322
}
2423

25-
private throwContainerError() {
24+
private throwContainerError():void {
2625
if (!this._container) {
2726
throw new Error("You must pass this controller to a message container.");
2827
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
2+
import { Component } from "@angular/core";
3+
import { MessageController } from "./message-controller";
4+
import { SuiMessageService } from "./message-service";
5+
6+
@Component({
7+
selector: "sui-message-global-container",
8+
template: `<sui-message-container [controller]="controller"></sui-message-container>`
9+
})
10+
export class SuiMessageGlobalContainer {
11+
public controller:MessageController;
12+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { Injectable, ComponentRef } from "@angular/core";
2+
import { SuiComponentFactory } from "../util/component-factory.service";
3+
import { SuiMessageGlobalContainer } from "./message-global-container";
4+
import { MessageController } from "./message-controller";
5+
6+
@Injectable()
7+
export class SuiMessageService {
8+
private _controller:MessageController;
9+
private _containerRef:ComponentRef<SuiMessageGlobalContainer>;
10+
11+
private get _container():SuiMessageGlobalContainer {
12+
return this._containerRef.instance;
13+
}
14+
15+
constructor(private _componentFactory:SuiComponentFactory) {
16+
this._controller = new MessageController();
17+
18+
this._containerRef = this._componentFactory.createComponent(SuiMessageGlobalContainer);
19+
this._container.controller = this._controller;
20+
21+
this._componentFactory.attachToApplication(this._containerRef);
22+
this._componentFactory.moveToDocumentBody(this._containerRef);
23+
}
24+
}

components/message/message.module.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import { SuiUtilityModule } from "../util/util.module";
88
import { MessageController } from "./message-controller";
99
import { MessageConfig, MessageState } from "./message-config";
1010
import { SuiActiveMessage } from "./active-message";
11+
import { SuiMessageGlobalContainer } from "./message-global-container";
12+
import { SuiMessageService } from "./message-service";
1113

1214
@NgModule({
1315
imports: [
@@ -18,15 +20,20 @@ import { SuiActiveMessage } from "./active-message";
1820
],
1921
declarations: [
2022
SuiMessage,
21-
SuiMessageContainer
23+
SuiMessageContainer,
24+
SuiMessageGlobalContainer
2225
],
2326
exports: [
2427
SuiMessage,
25-
SuiMessageContainer
28+
SuiMessageContainer,
29+
SuiMessageGlobalContainer
30+
],
31+
providers: [
32+
SuiMessageService
2633
],
2734
entryComponents: [
2835
SuiMessage,
29-
SuiMessageContainer
36+
SuiMessageGlobalContainer
3037
]
3138
})
3239
export class SuiMessageModule {}

demo/src/app/pages/test/test.page.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { Component, AfterViewInit, ViewChild, TemplateRef } from "@angular/core"
22
import { SuiMessageContainer } from "../../../../../components/message/message-container";
33
import { MessageConfig, MessageState } from "../../../../../components/message/message-config";
44
import { MessageController } from "../../../../../components/message/message-controller";
5+
import { SuiMessageService } from "../../../../../components/message/message-service";
56

67
@Component({
78
selector: "demo-page-test",
@@ -10,7 +11,7 @@ import { MessageController } from "../../../../../components/message/message-con
1011
export class TestPage {
1112
public controller:MessageController;
1213

13-
constructor() {
14+
constructor(private _messageService:SuiMessageService) {
1415
this.controller = new MessageController();
1516
}
1617

0 commit comments

Comments
 (0)