@@ -0,0 +1,34 @@ | |||
# Specifies intentionally untracked files to ignore when using Git | |||
# http://git-scm.com/docs/gitignore | |||
*~ | |||
*.sw[mnpcod] | |||
*.log | |||
*.tmp | |||
*.tmp.* | |||
log.txt | |||
*.sublime-project | |||
*.sublime-workspace | |||
.vscode/ | |||
npm-debug.log* | |||
.idea/ | |||
.ionic/ | |||
.sourcemaps/ | |||
.sass-cache/ | |||
.tmp/ | |||
.versions/ | |||
coverage/ | |||
www/ | |||
node_modules/ | |||
tmp/ | |||
temp/ | |||
platforms/ | |||
plugins/ | |||
plugins/android.json | |||
plugins/ios.json | |||
$RECYCLE.BIN/ | |||
.DS_Store | |||
Thumbs.db | |||
UserInterfaceState.xcuserstate |
@@ -0,0 +1,187 @@ | |||
{ | |||
"$schema": "./node_modules/@angular-devkit/core/src/workspace/workspace-schema.json", | |||
"version": 1, | |||
"defaultProject": "app", | |||
"newProjectRoot": "projects", | |||
"projects": { | |||
"app": { | |||
"root": "", | |||
"sourceRoot": "src", | |||
"projectType": "application", | |||
"prefix": "app", | |||
"schematics": {}, | |||
"architect": { | |||
"build": { | |||
"builder": "@angular-devkit/build-angular:browser", | |||
"options": { | |||
"outputPath": "www", | |||
"index": "src/index.html", | |||
"main": "src/main.ts", | |||
"polyfills": "src/polyfills.ts", | |||
"tsConfig": "tsconfig.app.json", | |||
"assets": [ | |||
{ | |||
"glob": "**/*", | |||
"input": "src/assets", | |||
"output": "assets" | |||
}, | |||
{ | |||
"glob": "**/*.svg", | |||
"input": "node_modules/ionicons/dist/ionicons/svg", | |||
"output": "./svg" | |||
} | |||
], | |||
"styles": [ | |||
{ | |||
"input": "src/theme/variables.scss" | |||
}, | |||
{ | |||
"input": "src/global.scss" | |||
} | |||
], | |||
"scripts": [] | |||
}, | |||
"configurations": { | |||
"production": { | |||
"fileReplacements": [ | |||
{ | |||
"replace": "src/environments/environment.ts", | |||
"with": "src/environments/environment.prod.ts" | |||
} | |||
], | |||
"optimization": true, | |||
"outputHashing": "all", | |||
"sourceMap": false, | |||
"extractCss": true, | |||
"namedChunks": false, | |||
"aot": true, | |||
"extractLicenses": true, | |||
"vendorChunk": false, | |||
"buildOptimizer": true, | |||
"budgets": [ | |||
{ | |||
"type": "initial", | |||
"maximumWarning": "2mb", | |||
"maximumError": "5mb" | |||
} | |||
] | |||
}, | |||
"ci": { | |||
"progress": false | |||
} | |||
} | |||
}, | |||
"serve": { | |||
"builder": "@angular-devkit/build-angular:dev-server", | |||
"options": { | |||
"browserTarget": "app:build" | |||
}, | |||
"configurations": { | |||
"production": { | |||
"browserTarget": "app:build:production" | |||
}, | |||
"ci": { | |||
"progress": false | |||
} | |||
} | |||
}, | |||
"extract-i18n": { | |||
"builder": "@angular-devkit/build-angular:extract-i18n", | |||
"options": { | |||
"browserTarget": "app:build" | |||
} | |||
}, | |||
"test": { | |||
"builder": "@angular-devkit/build-angular:karma", | |||
"options": { | |||
"main": "src/test.ts", | |||
"polyfills": "src/polyfills.ts", | |||
"tsConfig": "tsconfig.spec.json", | |||
"karmaConfig": "karma.conf.js", | |||
"styles": [], | |||
"scripts": [], | |||
"assets": [ | |||
{ | |||
"glob": "favicon.ico", | |||
"input": "src/", | |||
"output": "/" | |||
}, | |||
{ | |||
"glob": "**/*", | |||
"input": "src/assets", | |||
"output": "/assets" | |||
} | |||
] | |||
}, | |||
"configurations": { | |||
"ci": { | |||
"progress": false, | |||
"watch": false | |||
} | |||
} | |||
}, | |||
"lint": { | |||
"builder": "@angular-devkit/build-angular:tslint", | |||
"options": { | |||
"tsConfig": [ | |||
"tsconfig.app.json", | |||
"tsconfig.spec.json", | |||
"e2e/tsconfig.json" | |||
], | |||
"exclude": ["**/node_modules/**"] | |||
} | |||
}, | |||
"e2e": { | |||
"builder": "@angular-devkit/build-angular:protractor", | |||
"options": { | |||
"protractorConfig": "e2e/protractor.conf.js", | |||
"devServerTarget": "app:serve" | |||
}, | |||
"configurations": { | |||
"production": { | |||
"devServerTarget": "app:serve:production" | |||
}, | |||
"ci": { | |||
"devServerTarget": "app:serve:ci" | |||
} | |||
} | |||
}, | |||
"ionic-cordova-build": { | |||
"builder": "@ionic/angular-toolkit:cordova-build", | |||
"options": { | |||
"browserTarget": "app:build" | |||
}, | |||
"configurations": { | |||
"production": { | |||
"browserTarget": "app:build:production" | |||
} | |||
} | |||
}, | |||
"ionic-cordova-serve": { | |||
"builder": "@ionic/angular-toolkit:cordova-serve", | |||
"options": { | |||
"cordovaBuildTarget": "app:ionic-cordova-build", | |||
"devServerTarget": "app:serve" | |||
}, | |||
"configurations": { | |||
"production": { | |||
"cordovaBuildTarget": "app:ionic-cordova-build:production", | |||
"devServerTarget": "app:serve:production" | |||
} | |||
} | |||
} | |||
} | |||
} | |||
}, | |||
"cli": { | |||
"defaultCollection": "@ionic/angular-toolkit" | |||
}, | |||
"schematics": { | |||
"@ionic/angular-toolkit:component": { | |||
"styleext": "scss" | |||
}, | |||
"@ionic/angular-toolkit:page": { | |||
"styleext": "scss" | |||
} | |||
} | |||
} |
@@ -0,0 +1,12 @@ | |||
# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. | |||
# For additional information regarding the format and rule options, please see: | |||
# https://github.com/browserslist/browserslist#queries | |||
# You can see what browsers were selected by your queries by running: | |||
# npx browserslist | |||
> 0.5% | |||
last 2 versions | |||
Firefox ESR | |||
not dead | |||
not IE 9-11 # For IE 9-11 support, remove 'not'. |
@@ -0,0 +1,28 @@ | |||
// Protractor configuration file, see link for more information | |||
// https://github.com/angular/protractor/blob/master/lib/config.ts | |||
const { SpecReporter } = require('jasmine-spec-reporter'); | |||
exports.config = { | |||
allScriptsTimeout: 11000, | |||
specs: [ | |||
'./src/**/*.e2e-spec.ts' | |||
], | |||
capabilities: { | |||
'browserName': 'chrome' | |||
}, | |||
directConnect: true, | |||
baseUrl: 'http://localhost:4200/', | |||
framework: 'jasmine', | |||
jasmineNodeOpts: { | |||
showColors: true, | |||
defaultTimeoutInterval: 30000, | |||
print: function() {} | |||
}, | |||
onPrepare() { | |||
require('ts-node').register({ | |||
project: require('path').join(__dirname, './tsconfig.json') | |||
}); | |||
jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); | |||
} | |||
}; |
@@ -0,0 +1,14 @@ | |||
import { AppPage } from './app.po'; | |||
describe('new App', () => { | |||
let page: AppPage; | |||
beforeEach(() => { | |||
page = new AppPage(); | |||
}); | |||
it('should be blank', () => { | |||
page.navigateTo(); | |||
expect(page.getParagraphText()).toContain('The world is your oyster.'); | |||
}); | |||
}); |
@@ -0,0 +1,11 @@ | |||
import { browser, by, element } from 'protractor'; | |||
export class AppPage { | |||
navigateTo() { | |||
return browser.get('/'); | |||
} | |||
getParagraphText() { | |||
return element(by.deepCss('app-root ion-content')).getText(); | |||
} | |||
} |
@@ -0,0 +1,13 @@ | |||
{ | |||
"extends": "../tsconfig.json", | |||
"compilerOptions": { | |||
"outDir": "../out-tsc/app", | |||
"module": "commonjs", | |||
"target": "es5", | |||
"types": [ | |||
"jasmine", | |||
"jasminewd2", | |||
"node" | |||
] | |||
} | |||
} |
@@ -0,0 +1,5 @@ | |||
{ | |||
"name": "mall-app", | |||
"integrations": {}, | |||
"type": "angular" | |||
} |
@@ -0,0 +1,31 @@ | |||
// Karma configuration file, see link for more information | |||
// https://karma-runner.github.io/1.0/config/configuration-file.html | |||
module.exports = function (config) { | |||
config.set({ | |||
basePath: '', | |||
frameworks: ['jasmine', '@angular-devkit/build-angular'], | |||
plugins: [ | |||
require('karma-jasmine'), | |||
require('karma-chrome-launcher'), | |||
require('karma-jasmine-html-reporter'), | |||
require('karma-coverage-istanbul-reporter'), | |||
require('@angular-devkit/build-angular/plugins/karma') | |||
], | |||
client: { | |||
clearContext: false // leave Jasmine Spec Runner output visible in browser | |||
}, | |||
coverageIstanbulReporter: { | |||
dir: require('path').join(__dirname, '../coverage'), | |||
reports: ['html', 'lcovonly', 'text-summary'], | |||
fixWebpackSourcePaths: true | |||
}, | |||
reporters: ['progress', 'kjhtml'], | |||
port: 9876, | |||
colors: true, | |||
logLevel: config.LOG_INFO, | |||
autoWatch: true, | |||
browsers: ['Chrome'], | |||
singleRun: false | |||
}); | |||
}; |
@@ -0,0 +1,59 @@ | |||
{ | |||
"name": "mall-app", | |||
"version": "0.0.1", | |||
"author": "Ionic Framework", | |||
"homepage": "https://ionicframework.com/", | |||
"scripts": { | |||
"ng": "ng", | |||
"start": "ng serve", | |||
"build": "ng build", | |||
"test": "ng test", | |||
"lint": "ng lint", | |||
"e2e": "ng e2e" | |||
}, | |||
"private": true, | |||
"dependencies": { | |||
"@angular/common": "~8.1.2", | |||
"@angular/compiler": "~8.1.2", | |||
"@angular/core": "~8.1.2", | |||
"@angular/forms": "~8.1.2", | |||
"@angular/platform-browser": "~8.1.2", | |||
"@angular/platform-browser-dynamic": "~8.1.2", | |||
"@angular/router": "~8.1.2", | |||
"@ionic-native/core": "^5.0.0", | |||
"@ionic-native/splash-screen": "^5.0.0", | |||
"@ionic-native/status-bar": "^5.0.0", | |||
"@ionic/angular": "^4.7.1", | |||
"core-js": "^2.5.4", | |||
"rxjs": "~6.5.1", | |||
"tslib": "^1.9.0", | |||
"zone.js": "~0.9.1" | |||
}, | |||
"devDependencies": { | |||
"@angular-devkit/architect": "~0.801.2", | |||
"@angular-devkit/build-angular": "~0.801.2", | |||
"@angular-devkit/core": "~8.1.2", | |||
"@angular-devkit/schematics": "~8.1.2", | |||
"@angular/cli": "~8.1.2", | |||
"@angular/compiler": "~8.1.2", | |||
"@angular/compiler-cli": "~8.1.2", | |||
"@angular/language-service": "~8.1.2", | |||
"@ionic/angular-toolkit": "~2.0.0", | |||
"@types/jasmine": "~3.3.8", | |||
"@types/jasminewd2": "~2.0.3", | |||
"@types/node": "~8.9.4", | |||
"codelyzer": "^5.0.0", | |||
"jasmine-core": "~3.4.0", | |||
"jasmine-spec-reporter": "~4.2.1", | |||
"karma": "~4.1.0", | |||
"karma-chrome-launcher": "~2.2.0", | |||
"karma-coverage-istanbul-reporter": "~2.0.1", | |||
"karma-jasmine": "~2.0.1", | |||
"karma-jasmine-html-reporter": "^1.4.0", | |||
"protractor": "~5.4.0", | |||
"ts-node": "~7.0.0", | |||
"tslint": "~5.15.0", | |||
"typescript": "~3.4.3" | |||
}, | |||
"description": "An Ionic project" | |||
} |
@@ -0,0 +1,15 @@ | |||
import { NgModule } from '@angular/core'; | |||
import { PreloadAllModules, RouterModule, Routes } from '@angular/router'; | |||
const routes: Routes = [ | |||
{ path: '', redirectTo: 'home', pathMatch: 'full' }, | |||
{ path: 'home', loadChildren: () => import('./home/home.module').then( m => m.HomePageModule)}, | |||
]; | |||
@NgModule({ | |||
imports: [ | |||
RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules }) | |||
], | |||
exports: [RouterModule] | |||
}) | |||
export class AppRoutingModule { } |
@@ -0,0 +1,3 @@ | |||
<ion-app> | |||
<ion-router-outlet></ion-router-outlet> | |||
</ion-app> |
@@ -0,0 +1,6 @@ | |||
// App Styles | |||
// ---------------------------------------------------------------------------- | |||
// Put style rules here that you want to apply to the entire application. These | |||
// styles are for the entire app and not just one component. Additionally, this | |||
// file can hold Sass mixins, functions, and placeholder classes to be imported | |||
// and used throughout the application. |
@@ -0,0 +1,47 @@ | |||
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; | |||
import { TestBed, async } from '@angular/core/testing'; | |||
import { Platform } from '@ionic/angular'; | |||
import { SplashScreen } from '@ionic-native/splash-screen/ngx'; | |||
import { StatusBar } from '@ionic-native/status-bar/ngx'; | |||
import { AppComponent } from './app.component'; | |||
describe('AppComponent', () => { | |||
let statusBarSpy, splashScreenSpy, platformReadySpy, platformSpy; | |||
beforeEach(async(() => { | |||
statusBarSpy = jasmine.createSpyObj('StatusBar', ['styleDefault']); | |||
splashScreenSpy = jasmine.createSpyObj('SplashScreen', ['hide']); | |||
platformReadySpy = Promise.resolve(); | |||
platformSpy = jasmine.createSpyObj('Platform', { ready: platformReadySpy }); | |||
TestBed.configureTestingModule({ | |||
declarations: [AppComponent], | |||
schemas: [CUSTOM_ELEMENTS_SCHEMA], | |||
providers: [ | |||
{ provide: StatusBar, useValue: statusBarSpy }, | |||
{ provide: SplashScreen, useValue: splashScreenSpy }, | |||
{ provide: Platform, useValue: platformSpy }, | |||
], | |||
}).compileComponents(); | |||
})); | |||
it('should create the app', () => { | |||
const fixture = TestBed.createComponent(AppComponent); | |||
const app = fixture.debugElement.componentInstance; | |||
expect(app).toBeTruthy(); | |||
}); | |||
it('should initialize the app', async () => { | |||
TestBed.createComponent(AppComponent); | |||
expect(platformSpy.ready).toHaveBeenCalled(); | |||
await platformReadySpy; | |||
expect(statusBarSpy.styleDefault).toHaveBeenCalled(); | |||
expect(splashScreenSpy.hide).toHaveBeenCalled(); | |||
}); | |||
// TODO: add more tests! | |||
}); |
@@ -0,0 +1,27 @@ | |||
import { Component } from '@angular/core'; | |||
import { Platform } from '@ionic/angular'; | |||
import { SplashScreen } from '@ionic-native/splash-screen/ngx'; | |||
import { StatusBar } from '@ionic-native/status-bar/ngx'; | |||
@Component({ | |||
selector: 'app-root', | |||
templateUrl: 'app.component.html', | |||
styleUrls: ['app.component.scss'] | |||
}) | |||
export class AppComponent { | |||
constructor( | |||
private platform: Platform, | |||
private splashScreen: SplashScreen, | |||
private statusBar: StatusBar | |||
) { | |||
this.initializeApp(); | |||
} | |||
initializeApp() { | |||
this.platform.ready().then(() => { | |||
this.statusBar.styleDefault(); | |||
this.splashScreen.hide(); | |||
}); | |||
} | |||
} |
@@ -0,0 +1,23 @@ | |||
import { NgModule } from '@angular/core'; | |||
import { BrowserModule } from '@angular/platform-browser'; | |||
import { RouteReuseStrategy } from '@angular/router'; | |||
import { IonicModule, IonicRouteStrategy } from '@ionic/angular'; | |||
import { SplashScreen } from '@ionic-native/splash-screen/ngx'; | |||
import { StatusBar } from '@ionic-native/status-bar/ngx'; | |||
import { AppComponent } from './app.component'; | |||
import { AppRoutingModule } from './app-routing.module'; | |||
@NgModule({ | |||
declarations: [AppComponent], | |||
entryComponents: [], | |||
imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule], | |||
providers: [ | |||
StatusBar, | |||
SplashScreen, | |||
{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy } | |||
], | |||
bootstrap: [AppComponent] | |||
}) | |||
export class AppModule {} |
@@ -0,0 +1,23 @@ | |||
import { NgModule } from '@angular/core'; | |||
import { CommonModule } from '@angular/common'; | |||
import { IonicModule } from '@ionic/angular'; | |||
import { FormsModule } from '@angular/forms'; | |||
import { RouterModule } from '@angular/router'; | |||
import { HomePage } from './home.page'; | |||
@NgModule({ | |||
imports: [ | |||
CommonModule, | |||
FormsModule, | |||
IonicModule, | |||
RouterModule.forChild([ | |||
{ | |||
path: '', | |||
component: HomePage | |||
} | |||
]) | |||
], | |||
declarations: [HomePage] | |||
}) | |||
export class HomePageModule {} |
@@ -0,0 +1,14 @@ | |||
<ion-header> | |||
<ion-toolbar> | |||
<ion-title> | |||
Ionic Blank | |||
</ion-title> | |||
</ion-toolbar> | |||
</ion-header> | |||
<ion-content> | |||
<div class="ion-padding"> | |||
The world is your oyster. | |||
<p>If you get lost, the <a target="_blank" rel="noopener" href="https://ionicframework.com/docs/">docs</a> will be your guide.</p> | |||
</div> | |||
</ion-content> |
@@ -0,0 +1 @@ | |||
@@ -0,0 +1,24 @@ | |||
import { async, ComponentFixture, TestBed } from '@angular/core/testing'; | |||
import { IonicModule } from '@ionic/angular'; | |||
import { HomePage } from './home.page'; | |||
describe('HomePage', () => { | |||
let component: HomePage; | |||
let fixture: ComponentFixture<HomePage>; | |||
beforeEach(async(() => { | |||
TestBed.configureTestingModule({ | |||
declarations: [ HomePage ], | |||
imports: [IonicModule.forRoot()] | |||
}).compileComponents(); | |||
fixture = TestBed.createComponent(HomePage); | |||
component = fixture.componentInstance; | |||
fixture.detectChanges(); | |||
})); | |||
it('should create', () => { | |||
expect(component).toBeTruthy(); | |||
}); | |||
}); |
@@ -0,0 +1,12 @@ | |||
import { Component } from '@angular/core'; | |||
@Component({ | |||
selector: 'app-home', | |||
templateUrl: 'home.page.html', | |||
styleUrls: ['home.page.scss'], | |||
}) | |||
export class HomePage { | |||
constructor() {} | |||
} |
@@ -0,0 +1 @@ | |||
<svg width="350" height="140" xmlns="http://www.w3.org/2000/svg" style="background:#f6f7f9"><g fill="none" fill-rule="evenodd"><path fill="#F04141" style="mix-blend-mode:multiply" d="M61.905-34.23l96.194 54.51-66.982 54.512L22 34.887z"/><circle fill="#10DC60" style="mix-blend-mode:multiply" cx="155.5" cy="135.5" r="57.5"/><path fill="#3880FF" style="mix-blend-mode:multiply" d="M208.538 9.513l84.417 15.392L223.93 93.93z"/><path fill="#FFCE00" style="mix-blend-mode:multiply" d="M268.625 106.557l46.332-26.75 46.332 26.75v53.5l-46.332 26.75-46.332-26.75z"/><circle fill="#7044FF" style="mix-blend-mode:multiply" cx="299.5" cy="9.5" r="38.5"/><rect fill="#11D3EA" style="mix-blend-mode:multiply" transform="rotate(-60 148.47 37.886)" x="143.372" y="-7.056" width="10.196" height="89.884" rx="5.098"/><path d="M-25.389 74.253l84.86 8.107c5.498.525 9.53 5.407 9.004 10.905a10 10 0 0 1-.057.477l-12.36 85.671a10.002 10.002 0 0 1-11.634 8.42l-86.351-15.226c-5.44-.959-9.07-6.145-8.112-11.584l13.851-78.551a10 10 0 0 1 10.799-8.219z" fill="#7044FF" style="mix-blend-mode:multiply"/><circle fill="#0CD1E8" style="mix-blend-mode:multiply" cx="273.5" cy="106.5" r="20.5"/></g></svg> |
@@ -0,0 +1,3 @@ | |||
export const environment = { | |||
production: true | |||
}; |
@@ -0,0 +1,16 @@ | |||
// This file can be replaced during build by using the `fileReplacements` array. | |||
// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. | |||
// The list of file replacements can be found in `angular.json`. | |||
export const environment = { | |||
production: false | |||
}; | |||
/* | |||
* For easier debugging in development mode, you can import the following file | |||
* to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. | |||
* | |||
* This import should be commented out in production mode because it will have a negative impact | |||
* on performance if an error is thrown. | |||
*/ | |||
// import 'zone.js/dist/zone-error'; // Included with Angular CLI. |
@@ -0,0 +1,26 @@ | |||
/* | |||
* App Global CSS | |||
* ---------------------------------------------------------------------------- | |||
* Put style rules here that you want to apply globally. These styles are for | |||
* the entire app and not just one component. Additionally, this file can be | |||
* used as an entry point to import other CSS/Sass files to be included in the | |||
* output CSS. | |||
* For more information on global stylesheets, visit the documentation: | |||
* https://ionicframework.com/docs/layout/global-stylesheets | |||
*/ | |||
/* Core CSS required for Ionic components to work properly */ | |||
@import "~@ionic/angular/css/core.css"; | |||
/* Basic CSS for apps built with Ionic */ | |||
@import "~@ionic/angular/css/normalize.css"; | |||
@import "~@ionic/angular/css/structure.css"; | |||
@import "~@ionic/angular/css/typography.css"; | |||
@import '~@ionic/angular/css/display.css'; | |||
/* Optional CSS utils that can be commented out */ | |||
@import "~@ionic/angular/css/padding.css"; | |||
@import "~@ionic/angular/css/float-elements.css"; | |||
@import "~@ionic/angular/css/text-alignment.css"; | |||
@import "~@ionic/angular/css/text-transformation.css"; | |||
@import "~@ionic/angular/css/flex-utils.css"; |
@@ -0,0 +1,25 @@ | |||
<!DOCTYPE html> | |||
<html lang="en"> | |||
<head> | |||
<meta charset="utf-8" /> | |||
<title>Ionic App</title> | |||
<base href="/" /> | |||
<meta name="viewport" content="viewport-fit=cover, width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" /> | |||
<meta name="format-detection" content="telephone=no" /> | |||
<meta name="msapplication-tap-highlight" content="no" /> | |||
<link rel="icon" type="image/png" href="assets/icon/favicon.png" /> | |||
<!-- add to homescreen for ios --> | |||
<meta name="apple-mobile-web-app-capable" content="yes" /> | |||
<meta name="apple-mobile-web-app-status-bar-style" content="black" /> | |||
</head> | |||
<body> | |||
<app-root></app-root> | |||
</body> | |||
</html> |
@@ -0,0 +1,12 @@ | |||
import { enableProdMode } from '@angular/core'; | |||
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; | |||
import { AppModule } from './app/app.module'; | |||
import { environment } from './environments/environment'; | |||
if (environment.production) { | |||
enableProdMode(); | |||
} | |||
platformBrowserDynamic().bootstrapModule(AppModule) | |||
.catch(err => console.log(err)); |
@@ -0,0 +1,66 @@ | |||
/** | |||
* This file includes polyfills needed by Angular and is loaded before the app. | |||
* You can add your own extra polyfills to this file. | |||
* | |||
* This file is divided into 2 sections: | |||
* 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. | |||
* 2. Application imports. Files imported after ZoneJS that should be loaded before your main | |||
* file. | |||
* | |||
* The current setup is for so-called "evergreen" browsers; the last versions of browsers that | |||
* automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), | |||
* Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. | |||
* | |||
* Learn more in https://angular.io/guide/browser-support | |||
*/ | |||
/*************************************************************************************************** | |||
* BROWSER POLYFILLS | |||
*/ | |||
/** IE10 and IE11 requires the following for NgClass support on SVG elements */ | |||
// import 'classlist.js'; // Run `npm install --save classlist.js`. | |||
/** | |||
* Web Animations `@angular/platform-browser/animations` | |||
* Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. | |||
* Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). | |||
*/ | |||
// import 'web-animations-js'; // Run `npm install --save web-animations-js`. | |||
/** | |||
* By default, zone.js will patch all possible macroTask and DomEvents | |||
* user can disable parts of macroTask/DomEvents patch by setting following flags | |||
* because those flags need to be set before `zone.js` being loaded, and webpack | |||
* will put import in the top of bundle, so user need to create a separate file | |||
* in this directory (for example: zone-flags.ts), and put the following flags | |||
* into that file, and then add the following code before importing zone.js. | |||
* import './zone-flags.ts'; | |||
* | |||
* The flags allowed in zone-flags.ts are listed here. | |||
* | |||
* The following flags will work for all browsers. | |||
* | |||
* (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame | |||
* (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick | |||
* (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames | |||
* | |||
* in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js | |||
* with the following flag, it will bypass `zone.js` patch for IE/Edge | |||
* | |||
* (window as any).__Zone_enable_cross_context_check = true; | |||
* | |||
*/ | |||
import './zone-flags.ts'; | |||
/*************************************************************************************************** | |||
* Zone JS is required by default for Angular itself. | |||
*/ | |||
import 'zone.js/dist/zone'; // Included with Angular CLI. | |||
/*************************************************************************************************** | |||
* APPLICATION IMPORTS | |||
*/ |
@@ -0,0 +1,20 @@ | |||
// This file is required by karma.conf.js and loads recursively all the .spec and framework files | |||
import 'zone.js/dist/zone-testing'; | |||
import { getTestBed } from '@angular/core/testing'; | |||
import { | |||
BrowserDynamicTestingModule, | |||
platformBrowserDynamicTesting | |||
} from '@angular/platform-browser-dynamic/testing'; | |||
declare const require: any; | |||
// First, initialize the Angular testing environment. | |||
getTestBed().initTestEnvironment( | |||
BrowserDynamicTestingModule, | |||
platformBrowserDynamicTesting() | |||
); | |||
// Then we find all the tests. | |||
const context = require.context('./', true, /\.spec\.ts$/); | |||
// And load the modules. | |||
context.keys().map(context); |
@@ -0,0 +1,77 @@ | |||
// Ionic Variables and Theming. For more info, please see: | |||
// http://ionicframework.com/docs/theming/ | |||
/** Ionic CSS Variables **/ | |||
:root { | |||
/** primary **/ | |||
--ion-color-primary: #3880ff; | |||
--ion-color-primary-rgb: 56, 128, 255; | |||
--ion-color-primary-contrast: #ffffff; | |||
--ion-color-primary-contrast-rgb: 255, 255, 255; | |||
--ion-color-primary-shade: #3171e0; | |||
--ion-color-primary-tint: #4c8dff; | |||
/** secondary **/ | |||
--ion-color-secondary: #0cd1e8; | |||
--ion-color-secondary-rgb: 12, 209, 232; | |||
--ion-color-secondary-contrast: #ffffff; | |||
--ion-color-secondary-contrast-rgb: 255, 255, 255; | |||
--ion-color-secondary-shade: #0bb8cc; | |||
--ion-color-secondary-tint: #24d6ea; | |||
/** tertiary **/ | |||
--ion-color-tertiary: #7044ff; | |||
--ion-color-tertiary-rgb: 112, 68, 255; | |||
--ion-color-tertiary-contrast: #ffffff; | |||
--ion-color-tertiary-contrast-rgb: 255, 255, 255; | |||
--ion-color-tertiary-shade: #633ce0; | |||
--ion-color-tertiary-tint: #7e57ff; | |||
/** success **/ | |||
--ion-color-success: #10dc60; | |||
--ion-color-success-rgb: 16, 220, 96; | |||
--ion-color-success-contrast: #ffffff; | |||
--ion-color-success-contrast-rgb: 255, 255, 255; | |||
--ion-color-success-shade: #0ec254; | |||
--ion-color-success-tint: #28e070; | |||
/** warning **/ | |||
--ion-color-warning: #ffce00; | |||
--ion-color-warning-rgb: 255, 206, 0; | |||
--ion-color-warning-contrast: #ffffff; | |||
--ion-color-warning-contrast-rgb: 255, 255, 255; | |||
--ion-color-warning-shade: #e0b500; | |||
--ion-color-warning-tint: #ffd31a; | |||
/** danger **/ | |||
--ion-color-danger: #f04141; | |||
--ion-color-danger-rgb: 245, 61, 61; | |||
--ion-color-danger-contrast: #ffffff; | |||
--ion-color-danger-contrast-rgb: 255, 255, 255; | |||
--ion-color-danger-shade: #d33939; | |||
--ion-color-danger-tint: #f25454; | |||
/** dark **/ | |||
--ion-color-dark: #222428; | |||
--ion-color-dark-rgb: 34, 34, 34; | |||
--ion-color-dark-contrast: #ffffff; | |||
--ion-color-dark-contrast-rgb: 255, 255, 255; | |||
--ion-color-dark-shade: #1e2023; | |||
--ion-color-dark-tint: #383a3e; | |||
/** medium **/ | |||
--ion-color-medium: #989aa2; | |||
--ion-color-medium-rgb: 152, 154, 162; | |||
--ion-color-medium-contrast: #ffffff; | |||
--ion-color-medium-contrast-rgb: 255, 255, 255; | |||
--ion-color-medium-shade: #86888f; | |||
--ion-color-medium-tint: #a2a4ab; | |||
/** light **/ | |||
--ion-color-light: #f4f5f8; | |||
--ion-color-light-rgb: 244, 244, 244; | |||
--ion-color-light-contrast: #000000; | |||
--ion-color-light-contrast-rgb: 0, 0, 0; | |||
--ion-color-light-shade: #d7d8da; | |||
--ion-color-light-tint: #f5f6f9; | |||
} |
@@ -0,0 +1,5 @@ | |||
/** | |||
* Prevents Angular change detection from | |||
* running with certain Web Component callbacks | |||
*/ | |||
(window as any).__Zone_disable_customElements = true; |
@@ -0,0 +1,14 @@ | |||
{ | |||
"extends": "./tsconfig.json", | |||
"compilerOptions": { | |||
"outDir": "./out-tsc/app", | |||
"types": [] | |||
}, | |||
"include": [ | |||
"src/**/*.ts" | |||
], | |||
"exclude": [ | |||
"src/test.ts", | |||
"src/**/*.spec.ts" | |||
] | |||
} |
@@ -0,0 +1,22 @@ | |||
{ | |||
"compileOnSave": false, | |||
"compilerOptions": { | |||
"baseUrl": "./", | |||
"outDir": "./dist/out-tsc", | |||
"sourceMap": true, | |||
"declaration": false, | |||
"module": "esnext", | |||
"moduleResolution": "node", | |||
"emitDecoratorMetadata": true, | |||
"experimentalDecorators": true, | |||
"importHelpers": true, | |||
"target": "es2015", | |||
"typeRoots": [ | |||
"node_modules/@types" | |||
], | |||
"lib": [ | |||
"es2018", | |||
"dom" | |||
] | |||
} | |||
} |
@@ -0,0 +1,19 @@ | |||
{ | |||
"extends": "./tsconfig.json", | |||
"compilerOptions": { | |||
"outDir": "./out-tsc/spec", | |||
"types": [ | |||
"jasmine", | |||
"node" | |||
] | |||
}, | |||
"files": [ | |||
"src/test.ts", | |||
"src/zone-flags.ts", | |||
"src/polyfills.ts" | |||
], | |||
"include": [ | |||
"src/**/*.spec.ts", | |||
"src/**/*.d.ts" | |||
] | |||
} |
@@ -0,0 +1,89 @@ | |||
{ | |||
"extends": "tslint:recommended", | |||
"rulesDirectory": [ | |||
"codelyzer" | |||
], | |||
"rules": { | |||
"array-type": false, | |||
"arrow-parens": false, | |||
"deprecation": { | |||
"severity": "warn" | |||
}, | |||
"import-blacklist": [ | |||
true, | |||
"rxjs/Rx" | |||
], | |||
"interface-name": false, | |||
"max-classes-per-file": false, | |||
"max-line-length": [ | |||
true, | |||
140 | |||
], | |||
"member-access": false, | |||
"member-ordering": [ | |||
true, | |||
{ | |||
"order": [ | |||
"static-field", | |||
"instance-field", | |||
"static-method", | |||
"instance-method" | |||
] | |||
} | |||
], | |||
"no-consecutive-blank-lines": false, | |||
"no-console": [ | |||
true, | |||
"debug", | |||
"info", | |||
"time", | |||
"timeEnd", | |||
"trace" | |||
], | |||
"no-empty": false, | |||
"no-inferrable-types": [ | |||
true, | |||
"ignore-params" | |||
], | |||
"no-non-null-assertion": true, | |||
"no-redundant-jsdoc": true, | |||
"no-switch-case-fall-through": true, | |||
"no-use-before-declare": true, | |||
"no-var-requires": false, | |||
"object-literal-key-quotes": [ | |||
true, | |||
"as-needed" | |||
], | |||
"object-literal-sort-keys": false, | |||
"ordered-imports": false, | |||
"quotemark": [ | |||
true, | |||
"single" | |||
], | |||
"trailing-comma": false, | |||
"no-output-on-prefix": true, | |||
"no-inputs-metadata-property": true, | |||
"no-inputs-metadata-property": true, | |||
"no-host-metadata-property": true, | |||
"no-input-rename": true, | |||
"no-output-rename": true, | |||
"use-lifecycle-interface": true, | |||
"use-pipe-transform-interface": true, | |||
"one-variable-per-declaration": false, | |||
"component-class-suffix": [true, "Page", "Component"], | |||
"directive-class-suffix": true, | |||
"directive-selector": [ | |||
true, | |||
"attribute", | |||
"app", | |||
"camelCase" | |||
], | |||
"component-selector": [ | |||
true, | |||
"element", | |||
"app", | |||
"page", | |||
"kebab-case" | |||
] | |||
} | |||
} |