Initial commit
17
.editorconfig
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
# EditorConfig helps developers define and maintain consistent coding styles between different editors and IDEs
|
||||||
|
# editorconfig.org
|
||||||
|
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
|
||||||
|
# We recommend you to keep these unchanged
|
||||||
|
end_of_line = lf
|
||||||
|
charset = utf-8
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
insert_final_newline = true
|
||||||
|
|
||||||
|
[*.md]
|
||||||
|
trim_trailing_whitespace = false
|
34
.gitignore
vendored
Normal file
|
@ -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/
|
||||||
|
.sass-cache/
|
||||||
|
.tmp/
|
||||||
|
.versions/
|
||||||
|
coverage/
|
||||||
|
dist/
|
||||||
|
node_modules/
|
||||||
|
tmp/
|
||||||
|
temp/
|
||||||
|
hooks/
|
||||||
|
platforms/
|
||||||
|
plugins/
|
||||||
|
plugins/android.json
|
||||||
|
plugins/ios.json
|
||||||
|
www/
|
||||||
|
$RECYCLE.BIN/
|
||||||
|
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
UserInterfaceState.xcuserstate
|
26
README.md
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
This is a starter template for [Ionic](http://ionicframework.com/docs/) projects.
|
||||||
|
|
||||||
|
## How to use this template
|
||||||
|
|
||||||
|
*This template does not work on its own*. The shared files for each starter are found in the [ionic2-app-base repo](https://github.com/ionic-team/ionic2-app-base).
|
||||||
|
|
||||||
|
To use this template, either create a new ionic project using the ionic node.js utility, or copy the files from this repository into the [Starter App Base](https://github.com/ionic-team/ionic2-app-base).
|
||||||
|
|
||||||
|
### With the Ionic CLI:
|
||||||
|
|
||||||
|
Take the name after `ionic2-starter-`, and that is the name of the template to be used when using the `ionic start` command below:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ sudo npm install -g ionic cordova
|
||||||
|
$ ionic start mySideMenu sidemenu
|
||||||
|
```
|
||||||
|
|
||||||
|
Then, to run it, cd into `mySideMenu` and run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ ionic cordova platform add ios
|
||||||
|
$ ionic cordova run ios
|
||||||
|
```
|
||||||
|
|
||||||
|
Substitute ios for android if not on a Mac.
|
||||||
|
|
95
config.xml
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<widget id="io.ionic.starter" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
|
||||||
|
<name>MyApp</name>
|
||||||
|
<description>An awesome Ionic/Cordova app.</description>
|
||||||
|
<author email="hi@ionicframework" href="http://ionicframework.com/">Ionic Framework Team</author>
|
||||||
|
<content src="index.html"/>
|
||||||
|
<access origin="*"/>
|
||||||
|
<allow-navigation href="http://ionic.local/*"/>
|
||||||
|
<allow-intent href="http://*/*"/>
|
||||||
|
<allow-intent href="https://*/*"/>
|
||||||
|
<allow-intent href="tel:*"/>
|
||||||
|
<allow-intent href="sms:*"/>
|
||||||
|
<allow-intent href="mailto:*"/>
|
||||||
|
<allow-intent href="geo:*"/>
|
||||||
|
|
||||||
|
<preference name="webviewbounce" value="false"/>
|
||||||
|
<preference name="UIWebViewBounce" value="false"/>
|
||||||
|
<preference name="DisallowOverscroll" value="true"/>
|
||||||
|
<preference name="android-minSdkVersion" value="16"/>
|
||||||
|
<preference name="BackupWebStorage" value="none"/>
|
||||||
|
<preference name="SplashMaintainAspectRatio" value="true"/>
|
||||||
|
<preference name="FadeSplashScreenDuration" value="300"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Change these to configure how the splashscreen displays and fades in/out.
|
||||||
|
More info here: https://github.com/apache/cordova-plugin-splashscreen
|
||||||
|
-->
|
||||||
|
<preference name="SplashShowOnlyFirstTime" value="false"/>
|
||||||
|
<preference name="SplashScreen" value="screen"/>
|
||||||
|
<preference name="SplashScreenDelay" value="3000"/>
|
||||||
|
|
||||||
|
<platform name="android">
|
||||||
|
<allow-intent href="market:*"/>
|
||||||
|
<icon src="resources/android/icon/drawable-ldpi-icon.png" density="ldpi"/>
|
||||||
|
<icon src="resources/android/icon/drawable-mdpi-icon.png" density="mdpi"/>
|
||||||
|
<icon src="resources/android/icon/drawable-hdpi-icon.png" density="hdpi"/>
|
||||||
|
<icon src="resources/android/icon/drawable-xhdpi-icon.png" density="xhdpi"/>
|
||||||
|
<icon src="resources/android/icon/drawable-xxhdpi-icon.png" density="xxhdpi"/>
|
||||||
|
<icon src="resources/android/icon/drawable-xxxhdpi-icon.png" density="xxxhdpi"/>
|
||||||
|
<splash src="resources/android/splash/drawable-land-ldpi-screen.png" density="land-ldpi"/>
|
||||||
|
<splash src="resources/android/splash/drawable-land-mdpi-screen.png" density="land-mdpi"/>
|
||||||
|
<splash src="resources/android/splash/drawable-land-hdpi-screen.png" density="land-hdpi"/>
|
||||||
|
<splash src="resources/android/splash/drawable-land-xhdpi-screen.png" density="land-xhdpi"/>
|
||||||
|
<splash src="resources/android/splash/drawable-land-xxhdpi-screen.png" density="land-xxhdpi"/>
|
||||||
|
<splash src="resources/android/splash/drawable-land-xxxhdpi-screen.png" density="land-xxxhdpi"/>
|
||||||
|
<splash src="resources/android/splash/drawable-port-ldpi-screen.png" density="port-ldpi"/>
|
||||||
|
<splash src="resources/android/splash/drawable-port-mdpi-screen.png" density="port-mdpi"/>
|
||||||
|
<splash src="resources/android/splash/drawable-port-hdpi-screen.png" density="port-hdpi"/>
|
||||||
|
<splash src="resources/android/splash/drawable-port-xhdpi-screen.png" density="port-xhdpi"/>
|
||||||
|
<splash src="resources/android/splash/drawable-port-xxhdpi-screen.png" density="port-xxhdpi"/>
|
||||||
|
<splash src="resources/android/splash/drawable-port-xxxhdpi-screen.png" density="port-xxxhdpi"/>
|
||||||
|
</platform>
|
||||||
|
|
||||||
|
<platform name="ios">
|
||||||
|
<allow-intent href="itms:*"/>
|
||||||
|
<allow-intent href="itms-apps:*"/>
|
||||||
|
<icon src="resources/ios/icon/icon.png" width="57" height="57"/>
|
||||||
|
<icon src="resources/ios/icon/icon@2x.png" width="114" height="114"/>
|
||||||
|
<icon src="resources/ios/icon/icon-40.png" width="40" height="40"/>
|
||||||
|
<icon src="resources/ios/icon/icon-40@2x.png" width="80" height="80"/>
|
||||||
|
<icon src="resources/ios/icon/icon-40@3x.png" width="120" height="120"/>
|
||||||
|
<icon src="resources/ios/icon/icon-50.png" width="50" height="50"/>
|
||||||
|
<icon src="resources/ios/icon/icon-50@2x.png" width="100" height="100"/>
|
||||||
|
<icon src="resources/ios/icon/icon-60.png" width="60" height="60"/>
|
||||||
|
<icon src="resources/ios/icon/icon-60@2x.png" width="120" height="120"/>
|
||||||
|
<icon src="resources/ios/icon/icon-60@3x.png" width="180" height="180"/>
|
||||||
|
<icon src="resources/ios/icon/icon-72.png" width="72" height="72"/>
|
||||||
|
<icon src="resources/ios/icon/icon-72@2x.png" width="144" height="144"/>
|
||||||
|
<icon src="resources/ios/icon/icon-76.png" width="76" height="76"/>
|
||||||
|
<icon src="resources/ios/icon/icon-76@2x.png" width="152" height="152"/>
|
||||||
|
<icon src="resources/ios/icon/icon-83.5@2x.png" width="167" height="167"/>
|
||||||
|
<icon src="resources/ios/icon/icon-small.png" width="29" height="29"/>
|
||||||
|
<icon src="resources/ios/icon/icon-small@2x.png" width="58" height="58"/>
|
||||||
|
<icon src="resources/ios/icon/icon-small@3x.png" width="87" height="87"/>
|
||||||
|
<splash src="resources/ios/splash/Default-568h@2x~iphone.png" width="640" height="1136"/>
|
||||||
|
<splash src="resources/ios/splash/Default-667h.png" width="750" height="1334"/>
|
||||||
|
<splash src="resources/ios/splash/Default-736h.png" width="1242" height="2208"/>
|
||||||
|
<splash src="resources/ios/splash/Default-Landscape-736h.png" width="2208" height="1242"/>
|
||||||
|
<splash src="resources/ios/splash/Default-Landscape@2x~ipad.png" width="2048" height="1536"/>
|
||||||
|
<splash src="resources/ios/splash/Default-Landscape@~ipadpro.png" width="2732" height="2048"/>
|
||||||
|
<splash src="resources/ios/splash/Default-Landscape~ipad.png" width="1024" height="768"/>
|
||||||
|
<splash src="resources/ios/splash/Default-Portrait@2x~ipad.png" width="1536" height="2048"/>
|
||||||
|
<splash src="resources/ios/splash/Default-Portrait@~ipadpro.png" width="2048" height="2732"/>
|
||||||
|
<splash src="resources/ios/splash/Default-Portrait~ipad.png" width="768" height="1024"/>
|
||||||
|
<splash src="resources/ios/splash/Default@2x~iphone.png" width="640" height="960"/>
|
||||||
|
<splash src="resources/ios/splash/Default~iphone.png" width="320" height="480"/>
|
||||||
|
</platform>
|
||||||
|
|
||||||
|
<plugin name="ionic-plugin-keyboard" spec="~2.2.1"/>
|
||||||
|
<plugin name="cordova-plugin-whitelist" spec="1.3.1"/>
|
||||||
|
<plugin name="cordova-plugin-console" spec="1.0.5"/>
|
||||||
|
<plugin name="cordova-plugin-statusbar" spec="2.2.2"/>
|
||||||
|
<plugin name="cordova-plugin-device" spec="1.1.4"/>
|
||||||
|
<plugin name="cordova-plugin-splashscreen" spec="~4.0.1"/>
|
||||||
|
</widget>
|
5
ionic.config.json
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"name": "Goober",
|
||||||
|
"app_id": "",
|
||||||
|
"type": "ionic-angular"
|
||||||
|
}
|
40
package.json
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
{
|
||||||
|
"name": "Goober",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"author": "Ionic Framework",
|
||||||
|
"homepage": "http://ionicframework.com/",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"clean": "ionic-app-scripts clean",
|
||||||
|
"build": "ionic-app-scripts build",
|
||||||
|
"lint": "ionic-app-scripts lint",
|
||||||
|
"ionic:build": "ionic-app-scripts build",
|
||||||
|
"ionic:serve": "ionic-app-scripts serve"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@angular/common": "4.1.2",
|
||||||
|
"@angular/compiler": "4.1.2",
|
||||||
|
"@angular/compiler-cli": "4.1.2",
|
||||||
|
"@angular/core": "4.1.2",
|
||||||
|
"@angular/forms": "4.1.2",
|
||||||
|
"@angular/http": "4.1.2",
|
||||||
|
"@angular/platform-browser": "4.1.2",
|
||||||
|
"@angular/platform-browser-dynamic": "4.1.2",
|
||||||
|
"@ionic-native/core": "3.10.2",
|
||||||
|
"@ionic-native/splash-screen": "3.10.2",
|
||||||
|
"@ionic-native/status-bar": "3.10.2",
|
||||||
|
"@ionic/storage": "2.0.1",
|
||||||
|
"ionic-angular": "3.3.0",
|
||||||
|
"ionicons": "3.0.0",
|
||||||
|
"rxjs": "5.1.1",
|
||||||
|
"sw-toolbox": "3.6.0",
|
||||||
|
"zone.js": "0.8.11"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@ionic/app-scripts": "1.3.7",
|
||||||
|
"@ionic/cli-plugin-cordova": "1.3.0",
|
||||||
|
"@ionic/cli-plugin-ionic-angular": "1.3.0",
|
||||||
|
"typescript": "2.3.3"
|
||||||
|
},
|
||||||
|
"description": "An Ionic project"
|
||||||
|
}
|
BIN
resources/android/icon/drawable-hdpi-icon.png
Normal file
After Width: | Height: | Size: 5.2 KiB |
BIN
resources/android/icon/drawable-ldpi-icon.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
resources/android/icon/drawable-mdpi-icon.png
Normal file
After Width: | Height: | Size: 2 KiB |
BIN
resources/android/icon/drawable-xhdpi-icon.png
Normal file
After Width: | Height: | Size: 7.9 KiB |
BIN
resources/android/icon/drawable-xxhdpi-icon.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
resources/android/icon/drawable-xxxhdpi-icon.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
resources/android/splash/drawable-land-hdpi-screen.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
resources/android/splash/drawable-land-ldpi-screen.png
Normal file
After Width: | Height: | Size: 5.5 KiB |
BIN
resources/android/splash/drawable-land-mdpi-screen.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
resources/android/splash/drawable-land-xhdpi-screen.png
Normal file
After Width: | Height: | Size: 34 KiB |
BIN
resources/android/splash/drawable-land-xxhdpi-screen.png
Normal file
After Width: | Height: | Size: 71 KiB |
BIN
resources/android/splash/drawable-land-xxxhdpi-screen.png
Normal file
After Width: | Height: | Size: 99 KiB |
BIN
resources/android/splash/drawable-port-hdpi-screen.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
resources/android/splash/drawable-port-ldpi-screen.png
Normal file
After Width: | Height: | Size: 5.1 KiB |
BIN
resources/android/splash/drawable-port-mdpi-screen.png
Normal file
After Width: | Height: | Size: 9.8 KiB |
BIN
resources/android/splash/drawable-port-xhdpi-screen.png
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
resources/android/splash/drawable-port-xxhdpi-screen.png
Normal file
After Width: | Height: | Size: 68 KiB |
BIN
resources/android/splash/drawable-port-xxxhdpi-screen.png
Normal file
After Width: | Height: | Size: 96 KiB |
BIN
resources/icon.png
Normal file
After Width: | Height: | Size: 59 KiB |
BIN
resources/ios/icon/icon-40.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
resources/ios/icon/icon-40@2x.png
Normal file
After Width: | Height: | Size: 6.5 KiB |
BIN
resources/ios/icon/icon-40@3x.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
resources/ios/icon/icon-50.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
resources/ios/icon/icon-50@2x.png
Normal file
After Width: | Height: | Size: 8.5 KiB |
BIN
resources/ios/icon/icon-60.png
Normal file
After Width: | Height: | Size: 4.5 KiB |
BIN
resources/ios/icon/icon-60@2x.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
resources/ios/icon/icon-60@3x.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
resources/ios/icon/icon-72.png
Normal file
After Width: | Height: | Size: 5.2 KiB |
BIN
resources/ios/icon/icon-72@2x.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
resources/ios/icon/icon-76.png
Normal file
After Width: | Height: | Size: 6 KiB |
BIN
resources/ios/icon/icon-76@2x.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
resources/ios/icon/icon-83.5@2x.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
resources/ios/icon/icon-small.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
resources/ios/icon/icon-small@2x.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
resources/ios/icon/icon-small@3x.png
Normal file
After Width: | Height: | Size: 7 KiB |
BIN
resources/ios/icon/icon.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
resources/ios/icon/icon@2x.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
resources/ios/splash/Default-568h@2x~iphone.png
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
resources/ios/splash/Default-667h.png
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
resources/ios/splash/Default-736h.png
Normal file
After Width: | Height: | Size: 106 KiB |
BIN
resources/ios/splash/Default-Landscape-736h.png
Normal file
After Width: | Height: | Size: 118 KiB |
BIN
resources/ios/splash/Default-Landscape@2x~ipad.png
Normal file
After Width: | Height: | Size: 118 KiB |
BIN
resources/ios/splash/Default-Landscape@~ipadpro.png
Normal file
After Width: | Height: | Size: 158 KiB |
BIN
resources/ios/splash/Default-Landscape~ipad.png
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
resources/ios/splash/Default-Portrait@2x~ipad.png
Normal file
After Width: | Height: | Size: 114 KiB |
BIN
resources/ios/splash/Default-Portrait@~ipadpro.png
Normal file
After Width: | Height: | Size: 153 KiB |
BIN
resources/ios/splash/Default-Portrait~ipad.png
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
resources/ios/splash/Default@2x~iphone.png
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
resources/ios/splash/Default~iphone.png
Normal file
After Width: | Height: | Size: 9.8 KiB |
BIN
resources/splash.png
Normal file
After Width: | Height: | Size: 118 KiB |
44
src/app/app.component.ts
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
import { Component, ViewChild } from '@angular/core';
|
||||||
|
import { Nav, Platform } from 'ionic-angular';
|
||||||
|
import { StatusBar } from '@ionic-native/status-bar';
|
||||||
|
import { SplashScreen } from '@ionic-native/splash-screen';
|
||||||
|
|
||||||
|
import { HomePage } from '../pages/home/home';
|
||||||
|
import { ListPage } from '../pages/list/list';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
templateUrl: 'app.html'
|
||||||
|
})
|
||||||
|
export class MyApp {
|
||||||
|
@ViewChild(Nav) nav: Nav;
|
||||||
|
|
||||||
|
rootPage: any = HomePage;
|
||||||
|
|
||||||
|
pages: Array<{title: string, component: any}>;
|
||||||
|
|
||||||
|
constructor(public platform: Platform, public statusBar: StatusBar, public splashScreen: SplashScreen) {
|
||||||
|
this.initializeApp();
|
||||||
|
|
||||||
|
// used for an example of ngFor and navigation
|
||||||
|
this.pages = [
|
||||||
|
{ title: 'Home', component: HomePage },
|
||||||
|
{ title: 'List', component: ListPage }
|
||||||
|
];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
initializeApp() {
|
||||||
|
this.platform.ready().then(() => {
|
||||||
|
// Okay, so the platform is ready and our plugins are available.
|
||||||
|
// Here you can do any higher level native things you might need.
|
||||||
|
this.statusBar.styleDefault();
|
||||||
|
this.splashScreen.hide();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
openPage(page) {
|
||||||
|
// Reset the content nav to have just this page
|
||||||
|
// we wouldn't want the back button to show in this scenario
|
||||||
|
this.nav.setRoot(page.component);
|
||||||
|
}
|
||||||
|
}
|
19
src/app/app.html
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
<ion-menu [content]="content">
|
||||||
|
<ion-header>
|
||||||
|
<ion-toolbar>
|
||||||
|
<ion-title>Menu</ion-title>
|
||||||
|
</ion-toolbar>
|
||||||
|
</ion-header>
|
||||||
|
|
||||||
|
<ion-content>
|
||||||
|
<ion-list>
|
||||||
|
<button menuClose ion-item *ngFor="let p of pages" (click)="openPage(p)">
|
||||||
|
{{p.title}}
|
||||||
|
</button>
|
||||||
|
</ion-list>
|
||||||
|
</ion-content>
|
||||||
|
|
||||||
|
</ion-menu>
|
||||||
|
|
||||||
|
<!-- Disable swipe-to-go-back because it's poor UX to combine STGB with side menus -->
|
||||||
|
<ion-nav [root]="rootPage" #content swipeBackEnabled="false"></ion-nav>
|
34
src/app/app.module.ts
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
import { BrowserModule } from '@angular/platform-browser';
|
||||||
|
import { ErrorHandler, NgModule } from '@angular/core';
|
||||||
|
import { IonicApp, IonicErrorHandler, IonicModule } from 'ionic-angular';
|
||||||
|
|
||||||
|
import { MyApp } from './app.component';
|
||||||
|
import { HomePage } from '../pages/home/home';
|
||||||
|
import { ListPage } from '../pages/list/list';
|
||||||
|
|
||||||
|
import { StatusBar } from '@ionic-native/status-bar';
|
||||||
|
import { SplashScreen } from '@ionic-native/splash-screen';
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
declarations: [
|
||||||
|
MyApp,
|
||||||
|
HomePage,
|
||||||
|
ListPage
|
||||||
|
],
|
||||||
|
imports: [
|
||||||
|
BrowserModule,
|
||||||
|
IonicModule.forRoot(MyApp),
|
||||||
|
],
|
||||||
|
bootstrap: [IonicApp],
|
||||||
|
entryComponents: [
|
||||||
|
MyApp,
|
||||||
|
HomePage,
|
||||||
|
ListPage
|
||||||
|
],
|
||||||
|
providers: [
|
||||||
|
StatusBar,
|
||||||
|
SplashScreen,
|
||||||
|
{provide: ErrorHandler, useClass: IonicErrorHandler}
|
||||||
|
]
|
||||||
|
})
|
||||||
|
export class AppModule {}
|
16
src/app/app.scss
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
// http://ionicframework.com/docs/v2/theming/
|
||||||
|
|
||||||
|
|
||||||
|
// App Global Sass
|
||||||
|
// --------------------------------------------------
|
||||||
|
// 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 also used as an entry point
|
||||||
|
// to import other Sass files to be included in the output CSS.
|
||||||
|
//
|
||||||
|
// Shared Sass variables, which can be used to adjust Ionic's
|
||||||
|
// default Sass variables, belong in "theme/variables.scss".
|
||||||
|
//
|
||||||
|
// To declare rules for a specific mode, create a child rule
|
||||||
|
// for the .md, .ios, or .wp mode classes. The mode class is
|
||||||
|
// automatically applied to the <body> element in the app.
|
5
src/app/main.ts
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
||||||
|
|
||||||
|
import { AppModule } from './app.module';
|
||||||
|
|
||||||
|
platformBrowserDynamic().bootstrapModule(AppModule);
|
BIN
src/assets/icon/favicon.ico
Normal file
After Width: | Height: | Size: 1.9 KiB |
41
src/index.html
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en" dir="ltr">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Ionic App</title>
|
||||||
|
<meta name="viewport" content="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/x-icon" href="assets/icon/favicon.ico">
|
||||||
|
<link rel="manifest" href="manifest.json">
|
||||||
|
<meta name="theme-color" content="#4e8ef7">
|
||||||
|
|
||||||
|
<!-- cordova.js required for cordova apps -->
|
||||||
|
<script src="cordova.js"></script>
|
||||||
|
|
||||||
|
<!-- un-comment this code to enable service worker
|
||||||
|
<script>
|
||||||
|
if ('serviceWorker' in navigator) {
|
||||||
|
navigator.serviceWorker.register('service-worker.js')
|
||||||
|
.then(() => console.log('service worker installed'))
|
||||||
|
.catch(err => console.error('Error', err));
|
||||||
|
}
|
||||||
|
</script>-->
|
||||||
|
|
||||||
|
<link href="build/main.css" rel="stylesheet">
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<!-- Ionic's root component and where the app will load -->
|
||||||
|
<ion-app></ion-app>
|
||||||
|
|
||||||
|
<!-- The polyfills js is generated during the build process -->
|
||||||
|
<script src="build/polyfills.js"></script>
|
||||||
|
|
||||||
|
<!-- The bundle js is generated during the build process -->
|
||||||
|
<script src="build/main.js"></script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
13
src/manifest.json
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
"name": "Ionic",
|
||||||
|
"short_name": "Ionic",
|
||||||
|
"start_url": "index.html",
|
||||||
|
"display": "standalone",
|
||||||
|
"icons": [{
|
||||||
|
"src": "assets/imgs/logo.png",
|
||||||
|
"sizes": "512x512",
|
||||||
|
"type": "image/png"
|
||||||
|
}],
|
||||||
|
"background_color": "#4e8ef7",
|
||||||
|
"theme_color": "#4e8ef7"
|
||||||
|
}
|
18
src/pages/home/home.html
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
<ion-header>
|
||||||
|
<ion-navbar>
|
||||||
|
<button ion-button menuToggle>
|
||||||
|
<ion-icon name="menu"></ion-icon>
|
||||||
|
</button>
|
||||||
|
<ion-title>Home</ion-title>
|
||||||
|
</ion-navbar>
|
||||||
|
</ion-header>
|
||||||
|
|
||||||
|
<ion-content padding>
|
||||||
|
<h3>Ionic Menu Starter</h3>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
If you get lost, the <a href="http://ionicframework.com/docs/v2">docs</a> will show you the way.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<button ion-button secondary menuToggle>Toggle Menu</button>
|
||||||
|
</ion-content>
|
3
src/pages/home/home.scss
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
page-home {
|
||||||
|
|
||||||
|
}
|
14
src/pages/home/home.ts
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
import { Component } from '@angular/core';
|
||||||
|
import { NavController } from 'ionic-angular';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'page-home',
|
||||||
|
templateUrl: 'home.html'
|
||||||
|
})
|
||||||
|
export class HomePage {
|
||||||
|
|
||||||
|
constructor(public navCtrl: NavController) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
23
src/pages/list/list.html
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
<ion-header>
|
||||||
|
<ion-navbar>
|
||||||
|
<button ion-button menuToggle>
|
||||||
|
<ion-icon name="menu"></ion-icon>
|
||||||
|
</button>
|
||||||
|
<ion-title>List</ion-title>
|
||||||
|
</ion-navbar>
|
||||||
|
</ion-header>
|
||||||
|
|
||||||
|
<ion-content>
|
||||||
|
<ion-list>
|
||||||
|
<button ion-item *ngFor="let item of items" (click)="itemTapped($event, item)">
|
||||||
|
<ion-icon [name]="item.icon" item-left></ion-icon>
|
||||||
|
{{item.title}}
|
||||||
|
<div class="item-note" item-right>
|
||||||
|
{{item.note}}
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
</ion-list>
|
||||||
|
<div *ngIf="selectedItem" padding>
|
||||||
|
You navigated here from <b>{{selectedItem.title}}</b>
|
||||||
|
</div>
|
||||||
|
</ion-content>
|
3
src/pages/list/list.scss
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
page-list {
|
||||||
|
|
||||||
|
}
|
37
src/pages/list/list.ts
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
import { Component } from '@angular/core';
|
||||||
|
import { NavController, NavParams } from 'ionic-angular';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'page-list',
|
||||||
|
templateUrl: 'list.html'
|
||||||
|
})
|
||||||
|
export class ListPage {
|
||||||
|
selectedItem: any;
|
||||||
|
icons: string[];
|
||||||
|
items: Array<{title: string, note: string, icon: string}>;
|
||||||
|
|
||||||
|
constructor(public navCtrl: NavController, public navParams: NavParams) {
|
||||||
|
// If we navigated to this page, we will have an item available as a nav param
|
||||||
|
this.selectedItem = navParams.get('item');
|
||||||
|
|
||||||
|
// Let's populate this page with some filler content for funzies
|
||||||
|
this.icons = ['flask', 'wifi', 'beer', 'football', 'basketball', 'paper-plane',
|
||||||
|
'american-football', 'boat', 'bluetooth', 'build'];
|
||||||
|
|
||||||
|
this.items = [];
|
||||||
|
for (let i = 1; i < 11; i++) {
|
||||||
|
this.items.push({
|
||||||
|
title: 'Item ' + i,
|
||||||
|
note: 'This is item #' + i,
|
||||||
|
icon: this.icons[Math.floor(Math.random() * this.icons.length)]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
itemTapped(event, item) {
|
||||||
|
// That's right, we're pushing to ourselves!
|
||||||
|
this.navCtrl.push(ListPage, {
|
||||||
|
item: item
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
30
src/service-worker.js
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
/**
|
||||||
|
* Check out https://googlechrome.github.io/sw-toolbox/ for
|
||||||
|
* more info on how to use sw-toolbox to custom configure your service worker.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
importScripts('./build/sw-toolbox.js');
|
||||||
|
|
||||||
|
self.toolbox.options.cache = {
|
||||||
|
name: 'ionic-cache'
|
||||||
|
};
|
||||||
|
|
||||||
|
// pre-cache our key assets
|
||||||
|
self.toolbox.precache(
|
||||||
|
[
|
||||||
|
'./build/main.js',
|
||||||
|
'./build/main.css',
|
||||||
|
'./build/polyfills.js',
|
||||||
|
'index.html',
|
||||||
|
'manifest.json'
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
// dynamically cache any other local assets
|
||||||
|
self.toolbox.router.any('/*', self.toolbox.cacheFirst);
|
||||||
|
|
||||||
|
// for any other requests go to the network, cache,
|
||||||
|
// and then only use that cached resource if your user goes offline
|
||||||
|
self.toolbox.router.default = self.toolbox.networkFirst;
|
78
src/theme/variables.scss
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
// Ionic Variables and Theming. For more info, please see:
|
||||||
|
// http://ionicframework.com/docs/v2/theming/
|
||||||
|
$font-path: "../assets/fonts";
|
||||||
|
|
||||||
|
@import "ionic.globals";
|
||||||
|
|
||||||
|
|
||||||
|
// Shared Variables
|
||||||
|
// --------------------------------------------------
|
||||||
|
// To customize the look and feel of this app, you can override
|
||||||
|
// the Sass variables found in Ionic's source scss files.
|
||||||
|
// To view all the possible Ionic variables, see:
|
||||||
|
// http://ionicframework.com/docs/v2/theming/overriding-ionic-variables/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Named Color Variables
|
||||||
|
// --------------------------------------------------
|
||||||
|
// Named colors makes it easy to reuse colors on various components.
|
||||||
|
// It's highly recommended to change the default colors
|
||||||
|
// to match your app's branding. Ionic uses a Sass map of
|
||||||
|
// colors so you can add, rename and remove colors as needed.
|
||||||
|
// The "primary" color is the only required color in the map.
|
||||||
|
|
||||||
|
$colors: (
|
||||||
|
primary: #488aff,
|
||||||
|
secondary: #32db64,
|
||||||
|
danger: #f53d3d,
|
||||||
|
light: #f4f4f4,
|
||||||
|
dark: #222
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
// App iOS Variables
|
||||||
|
// --------------------------------------------------
|
||||||
|
// iOS only Sass variables can go here
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// App Material Design Variables
|
||||||
|
// --------------------------------------------------
|
||||||
|
// Material Design only Sass variables can go here
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// App Windows Variables
|
||||||
|
// --------------------------------------------------
|
||||||
|
// Windows only Sass variables can go here
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// App Theme
|
||||||
|
// --------------------------------------------------
|
||||||
|
// Ionic apps can have different themes applied, which can
|
||||||
|
// then be future customized. This import comes last
|
||||||
|
// so that the above variables are used and Ionic's
|
||||||
|
// default are overridden.
|
||||||
|
|
||||||
|
@import "ionic.theme.default";
|
||||||
|
|
||||||
|
|
||||||
|
// Ionicons
|
||||||
|
// --------------------------------------------------
|
||||||
|
// The premium icon font for Ionic. For more info, please see:
|
||||||
|
// http://ionicframework.com/docs/v2/ionicons/
|
||||||
|
|
||||||
|
@import "ionic.ionicons";
|
||||||
|
|
||||||
|
|
||||||
|
// Fonts
|
||||||
|
// --------------------------------------------------
|
||||||
|
|
||||||
|
@import "roboto";
|
||||||
|
@import "noto-sans";
|
26
tsconfig.json
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"allowSyntheticDefaultImports": true,
|
||||||
|
"declaration": false,
|
||||||
|
"emitDecoratorMetadata": true,
|
||||||
|
"experimentalDecorators": true,
|
||||||
|
"lib": [
|
||||||
|
"dom",
|
||||||
|
"es2015"
|
||||||
|
],
|
||||||
|
"module": "es2015",
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"sourceMap": true,
|
||||||
|
"target": "es5"
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"src/**/*.ts"
|
||||||
|
],
|
||||||
|
"exclude": [
|
||||||
|
"node_modules"
|
||||||
|
],
|
||||||
|
"compileOnSave": false,
|
||||||
|
"atom": {
|
||||||
|
"rewriteTsconfig": false
|
||||||
|
}
|
||||||
|
}
|
11
tslint.json
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"rules": {
|
||||||
|
"no-duplicate-variable": true,
|
||||||
|
"no-unused-variable": [
|
||||||
|
true
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"rulesDirectory": [
|
||||||
|
"node_modules/tslint-eslint-rules/dist/rules"
|
||||||
|
]
|
||||||
|
}
|