@@ -2,7 +2,8 @@ import {Component, ViewChild} from '@angular/core';
22import { ApiDefinition } from 'app/components/api/api.component' ;
33import { SuiModalService } from '../../../../../components/modal/modal.service' ;
44import { ModalTemplate } from '../../../../../components/modal/modal-template' ;
5- import { TemplateModalConfig } from '../../../../../components/modal/modal-config' ;
5+ import { TemplateModalConfig , ComponentModalConfig , ModalSize } from '../../../../../components/modal/modal-config' ;
6+ import { Modal } from '../../../../../components/modal/modal-controls' ;
67
78const exampleTemplateModalTemplate = `
89<ng-template let-context let-modal="modal" #modalTemplate>
@@ -26,6 +27,21 @@ ${exampleTemplateModalTemplate}
2627</div>
2728` ;
2829
30+ const exampleComponentModalTemplate = `
31+ <div class="header">{{ modal.context.title }}</div>
32+ <div class="content">
33+ <p>{{ modal.context.question }}</p>
34+ </div>
35+ <div class="actions">
36+ <button class="ui red button" (click)="modal.deny()">Cancel</button>
37+ <button class="ui green button" (click)="modal.approve()">OK</button>
38+ </div>
39+ ` ;
40+
41+ const exampleComponentTemplate = `
42+ <button class="ui primary button" (click)="open()">Confirm?</button>
43+ `
44+
2945@Component ( {
3046 selector : 'demo-page-modal' ,
3147 templateUrl : './modal.page.html'
@@ -141,6 +157,42 @@ public open(dynamicContent:string = "Example") {
141157 .onApprove(result => { /* approve callback */ })
142158 .onDeny(result => { /* deny callback */});
143159}
160+ ` ;
161+
162+ public componentComponent = `
163+ import {SuiModal, ComponentModalConfig, ModalSize} from "ng2-semantic-ui";
164+
165+ interface IConfirmModalContext {
166+ title:string;
167+ question:string;
168+ }
169+
170+ @Component({
171+ selector: 'modal-confirm',
172+ template: \`${ exampleComponentModalTemplate } \`
173+ })
174+ export class ConfirmModalComponent {
175+ constructor(public modal:SuiModal<IConfirmModalContext, void, void>) {}
176+ }
177+ ` ;
178+
179+ public componentHelper = `
180+ export class ConfirmModal extends ComponentModalConfig<IConfirmModalContext, void, void> {
181+ constructor(title:string, question:string) {
182+ super(ConfirmModalComponent, { title, question });
183+
184+ this.isClosable = false;
185+ this.transitionDuration = 200;
186+ this.size = ModalSize.Small;
187+ }
188+ }
189+ ` ;
190+
191+ public componentOpen = `
192+ this.modalService
193+ .open(new ConfirmModal("Are you sure?", "Are you sure about accepting this?"))
194+ .onApprove(() => alert("accepted!"))
195+ .onDeny(() => alert("denied!"));
144196` ;
145197}
146198
@@ -169,4 +221,42 @@ export class ModalExampleTemplate {
169221 }
170222}
171223
172- export const ModalPageComponents = [ ModalPage , ModalExampleTemplate ] ;
224+ interface IConfirmModalContext {
225+ title :string ;
226+ question :string ;
227+ }
228+
229+ @Component ( {
230+ selector : 'modal-confirm' ,
231+ template : exampleComponentModalTemplate
232+ } )
233+ export class ConfirmModalComponent {
234+ constructor ( public modal :Modal < IConfirmModalContext , void , void > ) { }
235+ }
236+
237+ export class ConfirmModal extends ComponentModalConfig < IConfirmModalContext , void , void > {
238+ constructor ( title :string , question :string ) {
239+ super ( ConfirmModalComponent , { title, question } ) ;
240+
241+ this . isClosable = false ;
242+ this . transitionDuration = 200 ;
243+ this . size = ModalSize . Small ;
244+ }
245+ }
246+
247+ @Component ( {
248+ selector : 'modal-example-component' ,
249+ template : exampleComponentTemplate
250+ } )
251+ export class ModalExampleComponent {
252+ constructor ( public modalService :SuiModalService ) { }
253+
254+ public open ( ) {
255+ this . modalService
256+ . open ( new ConfirmModal ( "Are you sure?" , "Are you sure about accepting this?" ) )
257+ . onApprove ( ( ) => alert ( "accepted!" ) )
258+ . onDeny ( ( ) => alert ( "denied!" ) ) ;
259+ }
260+ }
261+
262+ export const ModalPageComponents = [ ModalPage , ModalExampleTemplate , ConfirmModalComponent , ModalExampleComponent ] ;
0 commit comments