<form #checkForm="ngForm">
<div>
<div>
<sky-radio name="radiotest" [(ngModel)]="selectedValue" #cb="ngModel" value="1">
<sky-radio-label>No Modal</sky-radio-label>
</sky-radio>
</div>
<div>
<sky-radio name="radiotest" [ngModel]="selectedValue" (ngModelChange)="selectedValue = $event" value="2" (click)="openModal()">
<sky-radio-label>Open Modal</sky-radio-label>
</sky-radio>
</div>
</div>
</form>
import { Component } from '@angular/core';
import { SkyModalService, SkyModalCloseArgs } from '@blackbaud/skyux/dist/core';
import { SkyModalDemoContext } from './modal-demo-context';
import { SkyModalDemoFormComponent } from './modal-demo-form.component';
@Component({
selector: 'sky-modal-demo',
templateUrl: './modal-demo.component.html'
})
export class SkyModalDemoComponent {
public selectedValue = '1';
constructor(private modal: SkyModalService) { }
public openModal(type: string) {
console.log('We are opening the modal');
let context = new SkyModalDemoContext();
let options: any = {
providers: [{ provide: SkyModalDemoContext, useValue: context }]
};
let modalInstance = this.modal.open(SkyModalDemoFormComponent, options);
modalInstance.closed.subscribe((result: SkyModalCloseArgs) => {
console.log('Modal closed with reason: ' + result.reason + ' and data: ' + result.data);
});
}
}
<sky-modal>
<sky-modal-header>
{{title}}
</sky-modal-header>
<sky-modal-content>
<div id="docs-modal-content">
This modal can have content!
</div>
</sky-modal-content>
<sky-modal-footer>
<button type="button" class="sky-btn sky-btn-primary" (click)="instance.save('Something cool')">
Close
</button>
</sky-modal-footer>
</sky-modal>
import { Component } from '@angular/core';
import { SkyModalInstance } from '@blackbaud/skyux/dist/core';
import { SkyModalDemoContext } from './modal-demo-context';
@Component({
selector: 'sky-demo-modal-form',
templateUrl: './modal-demo-form.component.html'
})
export class SkyModalDemoFormComponent {
public title = 'Hello world';
constructor(public context: SkyModalDemoContext, public instance: SkyModalInstance) { }
}
export class SkyModalDemoContext {
}
System.config({
//use typescript for compilation
transpiler: 'typescript',
//typescript compiler options
typescriptOptions: {
emitDecoratorMetadata: true
},
paths: {
'npm:': 'https://unpkg.com/'
},
//map tells the System loader where to look for things
map: {
'app': '.',
'@angular/core': 'npm:@angular/core@4.2.5/bundles/core.umd.js',
'@angular/common': 'npm:@angular/common@4.2.5/bundles/common.umd.js',
'@angular/compiler': 'npm:@angular/compiler@4.2.5/bundles/compiler.umd.js',
'@angular/platform-browser': 'npm:@angular/platform-browser@4.2.5/bundles/platform-browser.umd.js',
'@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic@4.2.5/bundles/platform-browser-dynamic.umd.js',
'@angular/http': 'npm:@angular/http@4.2.5/bundles/http.umd.js',
'@angular/router': 'npm:@angular/router@4.2.5/bundles/router.umd.js',
'@angular/forms': 'npm:@angular/forms@4.2.5/bundles/forms.umd.js',
'@angular/animations': 'npm:@angular/animations@4.2.5/bundles/animations.umd.js',
'@angular/platform-browser/animations': 'npm:@angular/platform-browser@4.2.5/bundles/platform-browser-animations.umd.js',
'@angular/animations/browser': 'npm:@angular/animations@4.2.5/bundles/animations-browser.umd.js',
'tslib': 'npm:tslib@1.6.1',
'rxjs': 'npm:rxjs',
'typescript': 'npm:typescript@2.2.1/lib/typescript.js',
'@blackbaud/skyux/dist/core': 'npm:@blackbaud/skyux/dist/bundles/core.umd.js',
'moment': 'npm:moment/moment.js',
'microedge-rxstate/dist': 'npm:microedge-rxstate/dist/index.js',
//dragula packages
'ng2-dragula/ng2-dragula': 'npm:ng2-dragula',
'dragula': 'npm:dragula',
'contra': 'npm:contra',
'atoa': 'npm:atoa',
'ticky': 'npm:ticky',
'crossvent': 'npm:crossvent/src',
'custom-event': 'npm:custom-event'
},
//packages defines our app package
packages: {
app: {
main: './main.ts',
defaultExtension: 'ts'
},
rxjs: {
defaultExtension: 'js'
},
'@blackbaud/skyux/dist/core': {
format: 'cjs'
},
'ng2-dragula/ng2-dragula': {
main: 'ng2-dragula.js',
defaultExtension: 'js'
},
'dragula': { main: 'dragula.js', defaultExtension: 'js' },
'contra': { main: 'contra.js', defaultExtension: 'js' },
'atoa': { main: 'atoa.js', defaultExtension: 'js' },
'ticky': { main: 'ticky.js', defaultExtension: 'js' },
'crossvent': { main: 'crossvent.js', defaultExtension: 'js' },
'custom-event': { main: 'index.js', defaultExtension: 'js' },
}
});
<!DOCTYPE html>
<html>
<head>
<base href="." />
<title>SKY UX 2 Demo</title>
<link rel="stylesheet" href="https://unpkg.com/@blackbaud/skyux/dist/css/sky.css" />
<link rel="stylesheet" href="style.css" />
<script src="https://unpkg.com/core-js@2.4.1/client/shim.min.js"></script>
<script src="https://unpkg.com/zone.js@0.8.10/dist/zone.js"></script>
<script src="https://unpkg.com/zone.js/dist/long-stack-trace-zone.js"></script>
<script src="https://unpkg.com/reflect-metadata@0.1.3/Reflect.js"></script>
<script src="https://unpkg.com/systemjs@0.19.31/dist/system.js"></script>
<script src="config.js"></script>
<script>
System.import('app')
.catch(console.error.bind(console));
</script>
</head>
<body>
<sky-demo-app>
loading...
</sky-demo-app>
</body>
</html>
/* Styles go here */
import { Component } from '@angular/core';
@Component({
selector: 'sky-demo-app',
template: '<sky-modal-demo></sky-modal-demo>'
})
export class AppComponent() { }
import { Component, NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { SkyModule } from '@blackbaud/skyux/dist/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { SkyModalDemoComponent } from './modal-demo.component.ts';
import { SkyModalDemoFormComponent } from './modal-demo-form.component.ts';
import { AppComponent } from './app.component';
@NgModule({
imports: [
BrowserModule,
FormsModule,
SkyModule
],
declarations: [
AppComponent,
SkyModalDemoComponent,
SkyModalDemoFormComponent
],
entryComponents: [
SkyModalDemoFormComponent
],
bootstrap: [
AppComponent
]
})
export class AppModule { }
platformBrowserDynamic().bootstrapModule(AppModule);