Commit b140204cebc77d486f82391954ba2cfd60a0afd0
0 parents
Exists in
master
.
Showing
29 changed files
with
648 additions
and
0 deletions
Show diff stats
1 | +++ a/README.md | |
... | ... | @@ -0,0 +1,27 @@ |
1 | +# DemoEditer | |
2 | + | |
3 | +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.7.4. | |
4 | + | |
5 | +## Development server | |
6 | + | |
7 | +Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. | |
8 | + | |
9 | +## Code scaffolding | |
10 | + | |
11 | +Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. | |
12 | + | |
13 | +## Build | |
14 | + | |
15 | +Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build. | |
16 | + | |
17 | +## Running unit tests | |
18 | + | |
19 | +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). | |
20 | + | |
21 | +## Running end-to-end tests | |
22 | + | |
23 | +Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). | |
24 | + | |
25 | +## Further help | |
26 | + | |
27 | +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). | ... | ... |
1 | +++ a/e2e/app.e2e-spec.ts | |
... | ... | @@ -0,0 +1,14 @@ |
1 | +import { AppPage } from './app.po'; | |
2 | + | |
3 | +describe('demo-editer App', () => { | |
4 | + let page: AppPage; | |
5 | + | |
6 | + beforeEach(() => { | |
7 | + page = new AppPage(); | |
8 | + }); | |
9 | + | |
10 | + it('should display welcome message', () => { | |
11 | + page.navigateTo(); | |
12 | + expect(page.getParagraphText()).toEqual('Welcome to app!'); | |
13 | + }); | |
14 | +}); | ... | ... |
1 | +++ a/e2e/tsconfig.e2e.json | |
... | ... | @@ -0,0 +1,14 @@ |
1 | +{ | |
2 | + "extends": "../tsconfig.json", | |
3 | + "compilerOptions": { | |
4 | + "outDir": "../out-tsc/e2e", | |
5 | + "baseUrl": "./", | |
6 | + "module": "commonjs", | |
7 | + "target": "es5", | |
8 | + "types": [ | |
9 | + "jasmine", | |
10 | + "jasminewd2", | |
11 | + "node" | |
12 | + ] | |
13 | + } | |
14 | +} | ... | ... |
1 | +++ a/karma.conf.js | |
... | ... | @@ -0,0 +1,33 @@ |
1 | +// Karma configuration file, see link for more information | |
2 | +// https://karma-runner.github.io/1.0/config/configuration-file.html | |
3 | + | |
4 | +module.exports = function (config) { | |
5 | + config.set({ | |
6 | + basePath: '', | |
7 | + frameworks: ['jasmine', '@angular/cli'], | |
8 | + plugins: [ | |
9 | + require('karma-jasmine'), | |
10 | + require('karma-chrome-launcher'), | |
11 | + require('karma-jasmine-html-reporter'), | |
12 | + require('karma-coverage-istanbul-reporter'), | |
13 | + require('@angular/cli/plugins/karma') | |
14 | + ], | |
15 | + client:{ | |
16 | + clearContext: false // leave Jasmine Spec Runner output visible in browser | |
17 | + }, | |
18 | + coverageIstanbulReporter: { | |
19 | + reports: [ 'html', 'lcovonly' ], | |
20 | + fixWebpackSourcePaths: true | |
21 | + }, | |
22 | + angularCli: { | |
23 | + environment: 'dev' | |
24 | + }, | |
25 | + reporters: ['progress', 'kjhtml'], | |
26 | + port: 9876, | |
27 | + colors: true, | |
28 | + logLevel: config.LOG_INFO, | |
29 | + autoWatch: true, | |
30 | + browsers: ['Chrome'], | |
31 | + singleRun: false | |
32 | + }); | |
33 | +}; | ... | ... |
1 | +++ a/package.json | |
... | ... | @@ -0,0 +1,52 @@ |
1 | +{ | |
2 | + "name": "demo-editer", | |
3 | + "version": "0.0.0", | |
4 | + "license": "MIT", | |
5 | + "scripts": { | |
6 | + "ng": "ng", | |
7 | + "start": "ng serve", | |
8 | + "build": "ng build --prod", | |
9 | + "test": "ng test", | |
10 | + "lint": "ng lint", | |
11 | + "e2e": "ng e2e" | |
12 | + }, | |
13 | + "private": true, | |
14 | + "dependencies": { | |
15 | + "@angular/animations": "^5.2.0", | |
16 | + "@angular/common": "^5.2.0", | |
17 | + "@angular/compiler": "^5.2.0", | |
18 | + "@angular/core": "^5.2.0", | |
19 | + "@angular/forms": "^5.2.0", | |
20 | + "@angular/http": "^5.2.0", | |
21 | + "@angular/platform-browser": "^5.2.0", | |
22 | + "@angular/platform-browser-dynamic": "^5.2.0", | |
23 | + "@angular/router": "^5.2.0", | |
24 | + "@tinymce/tinymce-angular": "^2.0.0", | |
25 | + "angular-froala-wysiwyg": "^2.8.4-1", | |
26 | + "core-js": "^2.4.1", | |
27 | + "font-awesome": "^4.7.0", | |
28 | + "jquery": "^3.3.1", | |
29 | + "rxjs": "^5.5.6", | |
30 | + "zone.js": "^0.8.19" | |
31 | + }, | |
32 | + "devDependencies": { | |
33 | + "@angular/cli": "~1.7.4", | |
34 | + "@angular/compiler-cli": "^5.2.0", | |
35 | + "@angular/language-service": "^5.2.0", | |
36 | + "@types/jasmine": "~2.8.3", | |
37 | + "@types/jasminewd2": "~2.0.2", | |
38 | + "@types/node": "~6.0.60", | |
39 | + "codelyzer": "^4.0.1", | |
40 | + "jasmine-core": "~2.8.0", | |
41 | + "jasmine-spec-reporter": "~4.2.1", | |
42 | + "karma": "~2.0.0", | |
43 | + "karma-chrome-launcher": "~2.2.0", | |
44 | + "karma-coverage-istanbul-reporter": "^1.2.1", | |
45 | + "karma-jasmine": "~1.1.0", | |
46 | + "karma-jasmine-html-reporter": "^0.2.2", | |
47 | + "protractor": "~5.1.2", | |
48 | + "ts-node": "~4.1.0", | |
49 | + "tslint": "~5.9.1", | |
50 | + "typescript": "~2.5.3" | |
51 | + } | |
52 | +} | ... | ... |
1 | +++ a/protractor.conf.js | |
... | ... | @@ -0,0 +1,28 @@ |
1 | +// Protractor configuration file, see link for more information | |
2 | +// https://github.com/angular/protractor/blob/master/lib/config.ts | |
3 | + | |
4 | +const { SpecReporter } = require('jasmine-spec-reporter'); | |
5 | + | |
6 | +exports.config = { | |
7 | + allScriptsTimeout: 11000, | |
8 | + specs: [ | |
9 | + './e2e/**/*.e2e-spec.ts' | |
10 | + ], | |
11 | + capabilities: { | |
12 | + 'browserName': 'chrome' | |
13 | + }, | |
14 | + directConnect: true, | |
15 | + baseUrl: 'http://localhost:4200/', | |
16 | + framework: 'jasmine', | |
17 | + jasmineNodeOpts: { | |
18 | + showColors: true, | |
19 | + defaultTimeoutInterval: 30000, | |
20 | + print: function() {} | |
21 | + }, | |
22 | + onPrepare() { | |
23 | + require('ts-node').register({ | |
24 | + project: 'e2e/tsconfig.e2e.json' | |
25 | + }); | |
26 | + jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); | |
27 | + } | |
28 | +}; | ... | ... |
1 | +++ a/src/app/app.component.css | ... | ... |
1 | +++ a/src/app/app.component.spec.ts | |
... | ... | @@ -0,0 +1,27 @@ |
1 | +import { TestBed, async } from '@angular/core/testing'; | |
2 | +import { AppComponent } from './app.component'; | |
3 | +describe('AppComponent', () => { | |
4 | + beforeEach(async(() => { | |
5 | + TestBed.configureTestingModule({ | |
6 | + declarations: [ | |
7 | + AppComponent | |
8 | + ], | |
9 | + }).compileComponents(); | |
10 | + })); | |
11 | + it('should create the app', async(() => { | |
12 | + const fixture = TestBed.createComponent(AppComponent); | |
13 | + const app = fixture.debugElement.componentInstance; | |
14 | + expect(app).toBeTruthy(); | |
15 | + })); | |
16 | + it(`should have as title 'app'`, async(() => { | |
17 | + const fixture = TestBed.createComponent(AppComponent); | |
18 | + const app = fixture.debugElement.componentInstance; | |
19 | + expect(app.title).toEqual('app'); | |
20 | + })); | |
21 | + it('should render title in a h1 tag', async(() => { | |
22 | + const fixture = TestBed.createComponent(AppComponent); | |
23 | + fixture.detectChanges(); | |
24 | + const compiled = fixture.debugElement.nativeElement; | |
25 | + expect(compiled.querySelector('h1').textContent).toContain('Welcome to app!'); | |
26 | + })); | |
27 | +}); | ... | ... |
1 | +++ a/src/app/app.module.ts | |
... | ... | @@ -0,0 +1,40 @@ |
1 | +import { BrowserModule } from '@angular/platform-browser'; | |
2 | +import { NgModule } from '@angular/core'; | |
3 | + | |
4 | + | |
5 | +import { AppComponent } from './app.component'; | |
6 | +import { RouterModule, Routes } from '@angular/router'; | |
7 | +import { TinymceComponent } from './components/tinymce.component'; | |
8 | +import { FroalaComponent } from './components/froala.component'; | |
9 | +import { PageNotFoundComponent } from './components/pageNotFound.component'; | |
10 | +import { EditorModule } from '@tinymce/tinymce-angular'; | |
11 | +import { FroalaEditorModule, FroalaViewModule } from 'angular-froala-wysiwyg'; | |
12 | +import { FormsModule } from '@angular/forms'; | |
13 | +const appRoutes: Routes = [ | |
14 | + { path: '', component: TinymceComponent }, | |
15 | + { path: 'tinymce', component: TinymceComponent }, | |
16 | + { path: 'froala', component: FroalaComponent }, | |
17 | + { path: '**', component: PageNotFoundComponent } | |
18 | +]; | |
19 | + | |
20 | +@NgModule({ | |
21 | + declarations: [ | |
22 | + AppComponent, | |
23 | + TinymceComponent, | |
24 | + FroalaComponent, | |
25 | + PageNotFoundComponent | |
26 | + ], | |
27 | + imports: [ | |
28 | + FormsModule, | |
29 | + FroalaEditorModule.forRoot(), FroalaViewModule.forRoot(), | |
30 | + EditorModule, | |
31 | + RouterModule.forRoot( | |
32 | + appRoutes, | |
33 | + { enableTracing: true } // <-- debugging purposes only | |
34 | + ), | |
35 | + BrowserModule | |
36 | + ], | |
37 | + providers: [], | |
38 | + bootstrap: [AppComponent] | |
39 | +}) | |
40 | +export class AppModule { } | ... | ... |
1 | +++ a/src/app/components/froala.component.ts | |
... | ... | @@ -0,0 +1,14 @@ |
1 | +import { Component } from '@angular/core'; | |
2 | + | |
3 | +@Component({ | |
4 | + template: `<h2>Froala Two way Binding</h2> | |
5 | + | |
6 | + <div [froalaEditor] [(froalaModel)]="dataModel"></div> | |
7 | + | |
8 | + | |
9 | + {{dataModel}} | |
10 | + ` | |
11 | +}) | |
12 | +export class FroalaComponent { | |
13 | + dataModel:string = `<p>36aaaaa</p><table style="width: 100%;"><thead><tr><th><br></th><th><br></th><th><br></th><th><br></th><th><br></th><th><br></th><th><br></th><th><br></th></tr></thead><tbody><tr><td class="fr-highlighted" style="width: 7.1891%; background-color: rgb(235, 107, 86);"><br></td><td class="fr-highlighted" style="width: 7.1891%; background-color: rgb(184, 49, 47);"><br></td><td><br></td><td><br></td><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td colspan="2" style="width: 14.2857%;"><br></td><td style="width: 14.2857%;"><table style="width: 100%;"><tbody><tr><td style="width: 16.6667%;"><br></td><td style="width: 16.6667%;"><br></td><td style="width: 16.6667%;"><br></td><td style="width: 16.6667%;"><br></td><td style="width: 16.6667%;"><br></td><td style="width: 16.6667%;"><br></td></tr><tr><td style="width: 16.6667%;"><br></td><td style="width: 16.6667%;"><br></td><td style="width: 16.6667%;"><br></td><td style="width: 16.6667%;"><br></td><td style="width: 16.6667%;"><br></td><td style="width: 16.6667%;"><br></td></tr></tbody></table><br></td><td style="width: 14.2857%; background-color: rgb(61, 142, 185);"><br></td><td style="width: 14.2857%; background-color: rgb(84, 172, 210);">aaa</td><td style="width: 14.2857%;"><br></td><td style="width: 14.2857%;"><br></td><td style="width: 14.2857%;"><br></td></tr><tr><td colspan="2" style="width: 14.2857%;">aa</td><td class="fr-highlighted" style="width: 14.2857%; text-align: right;">aa</td><td style="width: 14.2857%;">aa</td><td style="width: 14.2857%;">aaa</td><td style="width: 14.2857%;"><br></td><td style="width: 14.2857%;"><br></td><td style="width: 14.2857%;"><br></td></tr><tr><td colspan="2" style="width: 14.2857%;">aa</td><td style="width: 14.2857%;">aa</td><td style="width: 14.2857%; background-color: rgb(84, 172, 210);">aa</td><td style="width: 14.2857%;">aaa</td><td style="width: 14.2857%;"><br></td><td style="width: 14.2857%;"><br></td><td style="width: 14.2857%;"><br></td></tr></tbody></table><h1>test</h1><p><span style="font-size: 20px; color: red;">sdasdasdasd</span></p>` | |
14 | +} | ... | ... |
1 | +++ a/src/app/components/tinymce.component.ts | |
... | ... | @@ -0,0 +1,30 @@ |
1 | +import { Component } from '@angular/core'; | |
2 | + | |
3 | +@Component({ | |
4 | + template: ` | |
5 | + <h2>Tiny Mce Two way Binding</h2> | |
6 | + <editor apiKey="uzbt478yqnylj2r2q44eh97rvsqmppn53wr58akhlurwzav9" [init]="init" [(ngModel)]="dataModel" cloudChannel="dev"></editor> | |
7 | + | |
8 | + | |
9 | + {{dataModel}} | |
10 | + ` | |
11 | +}) | |
12 | +export class TinymceComponent { | |
13 | + dataModel:string = `<!DOCTYPE html> <html> <head> </head> <body> <p><span style="background-color: #000080; color: #33cccc;"><strong><span style="text-decoration: underline;">sdsdsd</span></strong></span></p> <p> </p> <table style="border-collapse: collapse; width: 54.9891%; height: 149px;" border="1"> <tbody> <tr style="height: 49px; background-color: #8b32cf; border-color: #6231bd;"> <td style="width: 20%; height: 49px;">sadas <table style="border-collapse: collapse; width: 100%;" border="1"> <tbody> <tr> <td style="width: 33.3333%;"> </td> <td style="width: 33.3333%;"> </td> <td style="width: 33.3333%; background-color: #14b343;"> </td> </tr> <tr> <td style="width: 33.3333%;"> </td> <td style="width: 33.3333%;"> </td> <td style="width: 33.3333%;"> </td> </tr> <tr> <td style="width: 33.3333%;"> </td> <td style="width: 33.3333%;"> </td> <td style="width: 33.3333%;"> </td> </tr> </tbody> </table> </td> <td style="width: 20%; height: 49px;"><span style="background-color: #008080;">asdas</span></td> <td style="width: 20%; height: 49px;"><span style="color: #ccffff;">asdasasd</span></td> <td style="width: 20%; height: 49px;"> </td> <td style="width: 20%; height: 49px;"> </td> </tr> <tr style="height: 49px;"> <td style="width: 20%; height: 49px;"><span style="background-color: #003300;">asd</span></td> <td style="width: 20%; height: 49px;"> </td> <td style="width: 20%; height: 49px;">asdasd</td> <td style="width: 20%; height: 49px;"> </td> <td style="width: 20%; height: 49px;">asdas</td> </tr> <tr style="height: 49px;"> <td style="width: 20%; height: 49px;">asdasd</td> <td style="width: 20%; height: 49px;">dasd</td> <td style="width: 20%; height: 49px;">asda</td> <td style="width: 20%; height: 49px;"> </td> <td style="width: 20%; height: 49px;"> </td> </tr> <tr style="height: 49px;"> <td style="width: 20%; height: 49px;"> </td> <td style="width: 20%; height: 49px;"> </td> <td style="width: 20%; height: 49px;"> </td> <td style="width: 20%; height: 49px;">sdasd</td> <td style="width: 20%; height: 49px;">asd</td> </tr> </tbody> </table> <p> </p> <ol> <li>123asdasd</li> <li>123</li> <li>asd123</li> <li>123</li> <li>123</li> </ol> </body> </html>` | |
14 | + init:any = { | |
15 | + selector: 'textarea', | |
16 | + height: 500, | |
17 | + theme: 'modern', | |
18 | + plugins: 'print preview fullpage powerpaste searchreplace autolink directionality advcode visualblocks visualchars fullscreen image link media template codesample table charmap hr pagebreak nonbreaking anchor toc insertdatetime advlist lists textcolor wordcount tinymcespellchecker a11ychecker imagetools mediaembed linkchecker contextmenu colorpicker textpattern help', | |
19 | + toolbar1: 'formatselect | bold italic strikethrough forecolor backcolor | link | alignleft aligncenter alignright alignjustify | numlist bullist outdent indent | removeformat', | |
20 | + image_advtab: true, | |
21 | + templates: [ | |
22 | + { title: 'Test template 1', content: 'Test 1' }, | |
23 | + { title: 'Test template 2', content: 'Test 2' } | |
24 | + ], | |
25 | + content_css: [ | |
26 | + '//fonts.googleapis.com/css?family=Lato:300,300i,400,400i', | |
27 | + '//www.tinymce.com/css/codepen.min.css' | |
28 | + ] | |
29 | + } | |
30 | +} | ... | ... |
1 | +++ a/src/assets/.gitkeep | ... | ... |
1 | +++ a/src/environments/environment.ts | |
... | ... | @@ -0,0 +1,8 @@ |
1 | +// The file contents for the current environment will overwrite these during build. | |
2 | +// The build system defaults to the dev environment which uses `environment.ts`, but if you do | |
3 | +// `ng build --env=prod` then `environment.prod.ts` will be used instead. | |
4 | +// The list of which env maps to which file can be found in `.angular-cli.json`. | |
5 | + | |
6 | +export const environment = { | |
7 | + production: false | |
8 | +}; | ... | ... |
No preview for this file type
1 | +++ a/src/index.html | |
... | ... | @@ -0,0 +1,14 @@ |
1 | +<!doctype html> | |
2 | +<html lang="en"> | |
3 | +<head> | |
4 | + <meta charset="utf-8"> | |
5 | + <title>DemoEditer</title> | |
6 | + <base href="/"> | |
7 | + | |
8 | + <meta name="viewport" content="width=device-width, initial-scale=1"> | |
9 | + <link rel="icon" type="image/x-icon" href="favicon.ico"> | |
10 | +</head> | |
11 | +<body> | |
12 | + <app-root></app-root> | |
13 | +</body> | |
14 | +</html> | ... | ... |
1 | +++ a/src/main.ts | |
... | ... | @@ -0,0 +1,12 @@ |
1 | +import { enableProdMode } from '@angular/core'; | |
2 | +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; | |
3 | + | |
4 | +import { AppModule } from './app/app.module'; | |
5 | +import { environment } from './environments/environment'; | |
6 | + | |
7 | +if (environment.production) { | |
8 | + enableProdMode(); | |
9 | +} | |
10 | + | |
11 | +platformBrowserDynamic().bootstrapModule(AppModule) | |
12 | + .catch(err => console.log(err)); | ... | ... |
1 | +++ a/src/polyfills.ts | |
... | ... | @@ -0,0 +1,79 @@ |
1 | +/** | |
2 | + * This file includes polyfills needed by Angular and is loaded before the app. | |
3 | + * You can add your own extra polyfills to this file. | |
4 | + * | |
5 | + * This file is divided into 2 sections: | |
6 | + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. | |
7 | + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main | |
8 | + * file. | |
9 | + * | |
10 | + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that | |
11 | + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), | |
12 | + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. | |
13 | + * | |
14 | + * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html | |
15 | + */ | |
16 | + | |
17 | +/*************************************************************************************************** | |
18 | + * BROWSER POLYFILLS | |
19 | + */ | |
20 | + | |
21 | +/** IE9, IE10 and IE11 requires all of the following polyfills. **/ | |
22 | +// import 'core-js/es6/symbol'; | |
23 | +// import 'core-js/es6/object'; | |
24 | +// import 'core-js/es6/function'; | |
25 | +// import 'core-js/es6/parse-int'; | |
26 | +// import 'core-js/es6/parse-float'; | |
27 | +// import 'core-js/es6/number'; | |
28 | +// import 'core-js/es6/math'; | |
29 | +// import 'core-js/es6/string'; | |
30 | +// import 'core-js/es6/date'; | |
31 | +// import 'core-js/es6/array'; | |
32 | +// import 'core-js/es6/regexp'; | |
33 | +// import 'core-js/es6/map'; | |
34 | +// import 'core-js/es6/weak-map'; | |
35 | +// import 'core-js/es6/set'; | |
36 | + | |
37 | +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ | |
38 | +// import 'classlist.js'; // Run `npm install --save classlist.js`. | |
39 | + | |
40 | +/** IE10 and IE11 requires the following for the Reflect API. */ | |
41 | +// import 'core-js/es6/reflect'; | |
42 | + | |
43 | + | |
44 | +/** Evergreen browsers require these. **/ | |
45 | +// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove. | |
46 | +import 'core-js/es7/reflect'; | |
47 | + | |
48 | + | |
49 | +/** | |
50 | + * Required to support Web Animations `@angular/platform-browser/animations`. | |
51 | + * Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation | |
52 | + **/ | |
53 | +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. | |
54 | + | |
55 | +/** | |
56 | + * By default, zone.js will patch all possible macroTask and DomEvents | |
57 | + * user can disable parts of macroTask/DomEvents patch by setting following flags | |
58 | + */ | |
59 | + | |
60 | + // (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame | |
61 | + // (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick | |
62 | + // (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames | |
63 | + | |
64 | + /* | |
65 | + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js | |
66 | + * with the following flag, it will bypass `zone.js` patch for IE/Edge | |
67 | + */ | |
68 | +// (window as any).__Zone_enable_cross_context_check = true; | |
69 | + | |
70 | +/*************************************************************************************************** | |
71 | + * Zone JS is required by default for Angular itself. | |
72 | + */ | |
73 | +import 'zone.js/dist/zone'; // Included with Angular CLI. | |
74 | + | |
75 | + | |
76 | + | |
77 | +/*************************************************************************************************** | |
78 | + * APPLICATION IMPORTS | |
79 | + */ | ... | ... |
1 | +++ a/src/test.ts | |
... | ... | @@ -0,0 +1,20 @@ |
1 | +// This file is required by karma.conf.js and loads recursively all the .spec and framework files | |
2 | + | |
3 | +import 'zone.js/dist/zone-testing'; | |
4 | +import { getTestBed } from '@angular/core/testing'; | |
5 | +import { | |
6 | + BrowserDynamicTestingModule, | |
7 | + platformBrowserDynamicTesting | |
8 | +} from '@angular/platform-browser-dynamic/testing'; | |
9 | + | |
10 | +declare const require: any; | |
11 | + | |
12 | +// First, initialize the Angular testing environment. | |
13 | +getTestBed().initTestEnvironment( | |
14 | + BrowserDynamicTestingModule, | |
15 | + platformBrowserDynamicTesting() | |
16 | +); | |
17 | +// Then we find all the tests. | |
18 | +const context = require.context('./', true, /\.spec\.ts$/); | |
19 | +// And load the modules. | |
20 | +context.keys().map(context); | ... | ... |
1 | +++ a/src/tsconfig.spec.json | |
... | ... | @@ -0,0 +1,19 @@ |
1 | +{ | |
2 | + "extends": "../tsconfig.json", | |
3 | + "compilerOptions": { | |
4 | + "outDir": "../out-tsc/spec", | |
5 | + "baseUrl": "./", | |
6 | + "module": "commonjs", | |
7 | + "types": [ | |
8 | + "jasmine", | |
9 | + "node" | |
10 | + ] | |
11 | + }, | |
12 | + "files": [ | |
13 | + "test.ts" | |
14 | + ], | |
15 | + "include": [ | |
16 | + "**/*.spec.ts", | |
17 | + "**/*.d.ts" | |
18 | + ] | |
19 | +} | ... | ... |
1 | +++ a/tsconfig.json | |
... | ... | @@ -0,0 +1,19 @@ |
1 | +{ | |
2 | + "compileOnSave": false, | |
3 | + "compilerOptions": { | |
4 | + "outDir": "./dist/out-tsc", | |
5 | + "sourceMap": true, | |
6 | + "declaration": false, | |
7 | + "moduleResolution": "node", | |
8 | + "emitDecoratorMetadata": true, | |
9 | + "experimentalDecorators": true, | |
10 | + "target": "es5", | |
11 | + "typeRoots": [ | |
12 | + "node_modules/@types" | |
13 | + ], | |
14 | + "lib": [ | |
15 | + "es2017", | |
16 | + "dom" | |
17 | + ] | |
18 | + } | |
19 | +} | ... | ... |
1 | +++ a/tslint.json | |
... | ... | @@ -0,0 +1,143 @@ |
1 | +{ | |
2 | + "rulesDirectory": [ | |
3 | + "node_modules/codelyzer" | |
4 | + ], | |
5 | + "rules": { | |
6 | + "arrow-return-shorthand": true, | |
7 | + "callable-types": true, | |
8 | + "class-name": true, | |
9 | + "comment-format": [ | |
10 | + true, | |
11 | + "check-space" | |
12 | + ], | |
13 | + "curly": true, | |
14 | + "deprecation": { | |
15 | + "severity": "warn" | |
16 | + }, | |
17 | + "eofline": true, | |
18 | + "forin": true, | |
19 | + "import-blacklist": [ | |
20 | + true, | |
21 | + "rxjs", | |
22 | + "rxjs/Rx" | |
23 | + ], | |
24 | + "import-spacing": true, | |
25 | + "indent": [ | |
26 | + true, | |
27 | + "spaces" | |
28 | + ], | |
29 | + "interface-over-type-literal": true, | |
30 | + "label-position": true, | |
31 | + "max-line-length": [ | |
32 | + true, | |
33 | + 140 | |
34 | + ], | |
35 | + "member-access": false, | |
36 | + "member-ordering": [ | |
37 | + true, | |
38 | + { | |
39 | + "order": [ | |
40 | + "static-field", | |
41 | + "instance-field", | |
42 | + "static-method", | |
43 | + "instance-method" | |
44 | + ] | |
45 | + } | |
46 | + ], | |
47 | + "no-arg": true, | |
48 | + "no-bitwise": true, | |
49 | + "no-console": [ | |
50 | + true, | |
51 | + "debug", | |
52 | + "info", | |
53 | + "time", | |
54 | + "timeEnd", | |
55 | + "trace" | |
56 | + ], | |
57 | + "no-construct": true, | |
58 | + "no-debugger": true, | |
59 | + "no-duplicate-super": true, | |
60 | + "no-empty": false, | |
61 | + "no-empty-interface": true, | |
62 | + "no-eval": true, | |
63 | + "no-inferrable-types": [ | |
64 | + true, | |
65 | + "ignore-params" | |
66 | + ], | |
67 | + "no-misused-new": true, | |
68 | + "no-non-null-assertion": true, | |
69 | + "no-shadowed-variable": true, | |
70 | + "no-string-literal": false, | |
71 | + "no-string-throw": true, | |
72 | + "no-switch-case-fall-through": true, | |
73 | + "no-trailing-whitespace": true, | |
74 | + "no-unnecessary-initializer": true, | |
75 | + "no-unused-expression": true, | |
76 | + "no-use-before-declare": true, | |
77 | + "no-var-keyword": true, | |
78 | + "object-literal-sort-keys": false, | |
79 | + "one-line": [ | |
80 | + true, | |
81 | + "check-open-brace", | |
82 | + "check-catch", | |
83 | + "check-else", | |
84 | + "check-whitespace" | |
85 | + ], | |
86 | + "prefer-const": true, | |
87 | + "quotemark": [ | |
88 | + true, | |
89 | + "single" | |
90 | + ], | |
91 | + "radix": true, | |
92 | + "semicolon": [ | |
93 | + true, | |
94 | + "always" | |
95 | + ], | |
96 | + "triple-equals": [ | |
97 | + true, | |
98 | + "allow-null-check" | |
99 | + ], | |
100 | + "typedef-whitespace": [ | |
101 | + true, | |
102 | + { | |
103 | + "call-signature": "nospace", | |
104 | + "index-signature": "nospace", | |
105 | + "parameter": "nospace", | |
106 | + "property-declaration": "nospace", | |
107 | + "variable-declaration": "nospace" | |
108 | + } | |
109 | + ], | |
110 | + "unified-signatures": true, | |
111 | + "variable-name": false, | |
112 | + "whitespace": [ | |
113 | + true, | |
114 | + "check-branch", | |
115 | + "check-decl", | |
116 | + "check-operator", | |
117 | + "check-separator", | |
118 | + "check-type" | |
119 | + ], | |
120 | + "directive-selector": [ | |
121 | + true, | |
122 | + "attribute", | |
123 | + "app", | |
124 | + "camelCase" | |
125 | + ], | |
126 | + "component-selector": [ | |
127 | + true, | |
128 | + "element", | |
129 | + "app", | |
130 | + "kebab-case" | |
131 | + ], | |
132 | + "no-output-on-prefix": true, | |
133 | + "use-input-property-decorator": true, | |
134 | + "use-output-property-decorator": true, | |
135 | + "use-host-property-decorator": true, | |
136 | + "no-input-rename": true, | |
137 | + "no-output-rename": true, | |
138 | + "use-life-cycle-interface": true, | |
139 | + "use-pipe-transform-interface": true, | |
140 | + "component-class-suffix": true, | |
141 | + "directive-class-suffix": true | |
142 | + } | |
143 | +} | ... | ... |