├── www
├── build
│ ├── main.css.map
│ ├── sw-toolbox.js
│ ├── main.js.map
│ └── main.js
├── assets
│ ├── imgs
│ │ └── logo.png
│ ├── icon
│ │ └── favicon.ico
│ └── fonts
│ │ ├── ionicons.eot
│ │ ├── ionicons.ttf
│ │ ├── ionicons.woff
│ │ ├── ionicons.woff2
│ │ ├── roboto-bold.ttf
│ │ ├── roboto-bold.woff
│ │ ├── roboto-bold.woff2
│ │ ├── roboto-light.ttf
│ │ ├── roboto-light.woff
│ │ ├── roboto-medium.ttf
│ │ ├── noto-sans-bold.ttf
│ │ ├── noto-sans-bold.woff
│ │ ├── roboto-light.woff2
│ │ ├── roboto-medium.woff
│ │ ├── roboto-medium.woff2
│ │ ├── roboto-regular.ttf
│ │ ├── roboto-regular.woff
│ │ ├── roboto-regular.woff2
│ │ ├── noto-sans-regular.ttf
│ │ ├── noto-sans-regular.woff
│ │ ├── ionicons.scss
│ │ ├── noto-sans.scss
│ │ └── roboto.scss
├── manifest.json
├── service-worker.js
└── index.html
├── src
├── pages
│ ├── demo
│ │ ├── demo.scss
│ │ ├── demo.ts
│ │ └── demo.html
│ ├── home
│ │ ├── home.scss
│ │ ├── home.ts
│ │ └── home.html
│ ├── about
│ │ ├── about.scss
│ │ ├── about.ts
│ │ └── about.html
│ ├── contact
│ │ ├── contact.scss
│ │ ├── contact.ts
│ │ └── contact.html
│ └── tabs
│ │ ├── tabs.html
│ │ └── tabs.ts
├── app
│ ├── app.html
│ ├── main.ts
│ ├── app.scss
│ ├── app.component.ts
│ └── app.module.ts
├── components
│ ├── index.ts
│ ├── index-list
│ │ ├── index-list.module.ts
│ │ ├── index-cell.ts
│ │ ├── index-section.ts
│ │ └── index-list.ts
│ └── package.json
├── assets
│ ├── imgs
│ │ └── logo.png
│ └── icon
│ │ └── favicon.ico
├── manifest.json
├── service-worker.js
├── index.html
└── theme
│ └── variables.scss
├── ionic.starter.json
├── resources
├── icon.png
├── splash.png
├── ios
│ ├── icon
│ │ ├── icon.png
│ │ ├── icon-1024.png
│ │ ├── icon-40.png
│ │ ├── icon-50.png
│ │ ├── icon-60.png
│ │ ├── icon-72.png
│ │ ├── icon-76.png
│ │ ├── icon@2x.png
│ │ ├── icon-40@2x.png
│ │ ├── icon-40@3x.png
│ │ ├── icon-50@2x.png
│ │ ├── icon-60@2x.png
│ │ ├── icon-60@3x.png
│ │ ├── icon-72@2x.png
│ │ ├── icon-76@2x.png
│ │ ├── icon-small.png
│ │ ├── icon-83.5@2x.png
│ │ ├── icon-small@2x.png
│ │ └── icon-small@3x.png
│ └── splash
│ │ ├── Default-667h.png
│ │ ├── Default-736h.png
│ │ ├── Default~iphone.png
│ │ ├── Default@2x~iphone.png
│ │ ├── Default-568h@2x~iphone.png
│ │ ├── Default-Landscape-736h.png
│ │ ├── Default-Landscape~ipad.png
│ │ ├── Default-Portrait~ipad.png
│ │ ├── Default-Portrait@2x~ipad.png
│ │ ├── Default-Landscape@2x~ipad.png
│ │ ├── Default-Landscape@~ipadpro.png
│ │ ├── Default-Portrait@~ipadpro.png
│ │ └── Default@2x~universal~anyany.png
├── android
│ ├── icon
│ │ ├── drawable-hdpi-icon.png
│ │ ├── drawable-ldpi-icon.png
│ │ ├── drawable-mdpi-icon.png
│ │ ├── drawable-xhdpi-icon.png
│ │ ├── drawable-xxhdpi-icon.png
│ │ └── drawable-xxxhdpi-icon.png
│ └── splash
│ │ ├── drawable-land-hdpi-screen.png
│ │ ├── drawable-land-ldpi-screen.png
│ │ ├── drawable-land-mdpi-screen.png
│ │ ├── drawable-port-hdpi-screen.png
│ │ ├── drawable-port-ldpi-screen.png
│ │ ├── drawable-port-mdpi-screen.png
│ │ ├── drawable-land-xhdpi-screen.png
│ │ ├── drawable-land-xxhdpi-screen.png
│ │ ├── drawable-land-xxxhdpi-screen.png
│ │ ├── drawable-port-xhdpi-screen.png
│ │ ├── drawable-port-xxhdpi-screen.png
│ │ └── drawable-port-xxxhdpi-screen.png
└── README.md
├── ionic.config.json
├── tslint.json
├── .editorconfig
├── .gitignore
├── tsconfig.json
├── package.json
├── README.md
├── config.xml
└── .sourcemaps
└── main.js.map
/www/build/main.css.map:
--------------------------------------------------------------------------------
1 | null
--------------------------------------------------------------------------------
/src/pages/demo/demo.scss:
--------------------------------------------------------------------------------
1 | page-home {
2 |
3 | }
4 |
--------------------------------------------------------------------------------
/src/pages/home/home.scss:
--------------------------------------------------------------------------------
1 | page-home {
2 |
3 | }
4 |
--------------------------------------------------------------------------------
/src/app/app.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/pages/about/about.scss:
--------------------------------------------------------------------------------
1 | page-about {
2 |
3 | }
4 |
--------------------------------------------------------------------------------
/src/pages/contact/contact.scss:
--------------------------------------------------------------------------------
1 | page-contact {
2 |
3 | }
4 |
--------------------------------------------------------------------------------
/ionic.starter.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Tabs Starter",
3 | "baseref": "master"
4 | }
5 |
--------------------------------------------------------------------------------
/src/components/index.ts:
--------------------------------------------------------------------------------
1 | export {IndexListModule} from './index-list/index-list.module';
2 |
--------------------------------------------------------------------------------
/resources/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/icon.png
--------------------------------------------------------------------------------
/resources/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/splash.png
--------------------------------------------------------------------------------
/src/assets/imgs/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/src/assets/imgs/logo.png
--------------------------------------------------------------------------------
/www/assets/imgs/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/www/assets/imgs/logo.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/icon/icon.png
--------------------------------------------------------------------------------
/src/assets/icon/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/src/assets/icon/favicon.ico
--------------------------------------------------------------------------------
/www/assets/icon/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/www/assets/icon/favicon.ico
--------------------------------------------------------------------------------
/www/assets/fonts/ionicons.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/www/assets/fonts/ionicons.eot
--------------------------------------------------------------------------------
/www/assets/fonts/ionicons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/www/assets/fonts/ionicons.ttf
--------------------------------------------------------------------------------
/resources/ios/icon/icon-1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/icon/icon-1024.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/icon/icon-40.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/icon/icon-50.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/icon/icon-60.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/icon/icon-72.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/icon/icon-76.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/icon/icon@2x.png
--------------------------------------------------------------------------------
/www/assets/fonts/ionicons.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/www/assets/fonts/ionicons.woff
--------------------------------------------------------------------------------
/www/assets/fonts/ionicons.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/www/assets/fonts/ionicons.woff2
--------------------------------------------------------------------------------
/www/assets/fonts/roboto-bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/www/assets/fonts/roboto-bold.ttf
--------------------------------------------------------------------------------
/resources/ios/icon/icon-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/icon/icon-40@2x.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/icon/icon-40@3x.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-50@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/icon/icon-50@2x.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/icon/icon-60@2x.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/icon/icon-60@3x.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-72@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/icon/icon-72@2x.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/icon/icon-76@2x.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/icon/icon-small.png
--------------------------------------------------------------------------------
/www/assets/fonts/roboto-bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/www/assets/fonts/roboto-bold.woff
--------------------------------------------------------------------------------
/www/assets/fonts/roboto-bold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/www/assets/fonts/roboto-bold.woff2
--------------------------------------------------------------------------------
/www/assets/fonts/roboto-light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/www/assets/fonts/roboto-light.ttf
--------------------------------------------------------------------------------
/www/assets/fonts/roboto-light.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/www/assets/fonts/roboto-light.woff
--------------------------------------------------------------------------------
/www/assets/fonts/roboto-medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/www/assets/fonts/roboto-medium.ttf
--------------------------------------------------------------------------------
/resources/ios/icon/icon-83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/icon/icon-83.5@2x.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-small@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/icon/icon-small@2x.png
--------------------------------------------------------------------------------
/resources/ios/icon/icon-small@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/icon/icon-small@3x.png
--------------------------------------------------------------------------------
/resources/ios/splash/Default-667h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/splash/Default-667h.png
--------------------------------------------------------------------------------
/resources/ios/splash/Default-736h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/splash/Default-736h.png
--------------------------------------------------------------------------------
/www/assets/fonts/noto-sans-bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/www/assets/fonts/noto-sans-bold.ttf
--------------------------------------------------------------------------------
/www/assets/fonts/noto-sans-bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/www/assets/fonts/noto-sans-bold.woff
--------------------------------------------------------------------------------
/www/assets/fonts/roboto-light.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/www/assets/fonts/roboto-light.woff2
--------------------------------------------------------------------------------
/www/assets/fonts/roboto-medium.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/www/assets/fonts/roboto-medium.woff
--------------------------------------------------------------------------------
/www/assets/fonts/roboto-medium.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/www/assets/fonts/roboto-medium.woff2
--------------------------------------------------------------------------------
/www/assets/fonts/roboto-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/www/assets/fonts/roboto-regular.ttf
--------------------------------------------------------------------------------
/www/assets/fonts/roboto-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/www/assets/fonts/roboto-regular.woff
--------------------------------------------------------------------------------
/www/assets/fonts/roboto-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/www/assets/fonts/roboto-regular.woff2
--------------------------------------------------------------------------------
/resources/ios/splash/Default~iphone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/splash/Default~iphone.png
--------------------------------------------------------------------------------
/www/assets/fonts/noto-sans-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/www/assets/fonts/noto-sans-regular.ttf
--------------------------------------------------------------------------------
/www/assets/fonts/noto-sans-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/www/assets/fonts/noto-sans-regular.woff
--------------------------------------------------------------------------------
/resources/ios/splash/Default@2x~iphone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/splash/Default@2x~iphone.png
--------------------------------------------------------------------------------
/resources/android/icon/drawable-hdpi-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/android/icon/drawable-hdpi-icon.png
--------------------------------------------------------------------------------
/resources/android/icon/drawable-ldpi-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/android/icon/drawable-ldpi-icon.png
--------------------------------------------------------------------------------
/resources/android/icon/drawable-mdpi-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/android/icon/drawable-mdpi-icon.png
--------------------------------------------------------------------------------
/resources/android/icon/drawable-xhdpi-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/android/icon/drawable-xhdpi-icon.png
--------------------------------------------------------------------------------
/resources/android/icon/drawable-xxhdpi-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/android/icon/drawable-xxhdpi-icon.png
--------------------------------------------------------------------------------
/resources/ios/splash/Default-568h@2x~iphone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/splash/Default-568h@2x~iphone.png
--------------------------------------------------------------------------------
/resources/ios/splash/Default-Landscape-736h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/splash/Default-Landscape-736h.png
--------------------------------------------------------------------------------
/resources/ios/splash/Default-Landscape~ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/splash/Default-Landscape~ipad.png
--------------------------------------------------------------------------------
/resources/ios/splash/Default-Portrait~ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/splash/Default-Portrait~ipad.png
--------------------------------------------------------------------------------
/resources/android/icon/drawable-xxxhdpi-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/android/icon/drawable-xxxhdpi-icon.png
--------------------------------------------------------------------------------
/resources/ios/splash/Default-Portrait@2x~ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/splash/Default-Portrait@2x~ipad.png
--------------------------------------------------------------------------------
/resources/ios/splash/Default-Landscape@2x~ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/splash/Default-Landscape@2x~ipad.png
--------------------------------------------------------------------------------
/resources/ios/splash/Default-Landscape@~ipadpro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/splash/Default-Landscape@~ipadpro.png
--------------------------------------------------------------------------------
/resources/ios/splash/Default-Portrait@~ipadpro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/splash/Default-Portrait@~ipadpro.png
--------------------------------------------------------------------------------
/resources/ios/splash/Default@2x~universal~anyany.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/ios/splash/Default@2x~universal~anyany.png
--------------------------------------------------------------------------------
/resources/android/splash/drawable-land-hdpi-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/android/splash/drawable-land-hdpi-screen.png
--------------------------------------------------------------------------------
/resources/android/splash/drawable-land-ldpi-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/android/splash/drawable-land-ldpi-screen.png
--------------------------------------------------------------------------------
/resources/android/splash/drawable-land-mdpi-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/android/splash/drawable-land-mdpi-screen.png
--------------------------------------------------------------------------------
/resources/android/splash/drawable-port-hdpi-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/android/splash/drawable-port-hdpi-screen.png
--------------------------------------------------------------------------------
/resources/android/splash/drawable-port-ldpi-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/android/splash/drawable-port-ldpi-screen.png
--------------------------------------------------------------------------------
/resources/android/splash/drawable-port-mdpi-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/android/splash/drawable-port-mdpi-screen.png
--------------------------------------------------------------------------------
/ionic.config.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ionic3-index-list",
3 | "app_id": "",
4 | "type": "ionic-angular",
5 | "integrations": {
6 | "cordova": {}
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/resources/android/splash/drawable-land-xhdpi-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/android/splash/drawable-land-xhdpi-screen.png
--------------------------------------------------------------------------------
/resources/android/splash/drawable-land-xxhdpi-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/android/splash/drawable-land-xxhdpi-screen.png
--------------------------------------------------------------------------------
/resources/android/splash/drawable-land-xxxhdpi-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/android/splash/drawable-land-xxxhdpi-screen.png
--------------------------------------------------------------------------------
/resources/android/splash/drawable-port-xhdpi-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/android/splash/drawable-port-xhdpi-screen.png
--------------------------------------------------------------------------------
/resources/android/splash/drawable-port-xxhdpi-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/android/splash/drawable-port-xxhdpi-screen.png
--------------------------------------------------------------------------------
/resources/android/splash/drawable-port-xxxhdpi-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CK110/ionic3-index-list/HEAD/resources/android/splash/drawable-port-xxxhdpi-screen.png
--------------------------------------------------------------------------------
/src/app/main.ts:
--------------------------------------------------------------------------------
1 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
2 |
3 | import { AppModule } from './app.module';
4 |
5 | platformBrowserDynamic().bootstrapModule(AppModule);
6 |
--------------------------------------------------------------------------------
/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "rules": {
3 | "no-duplicate-variable": true,
4 | "no-unused-variable": [
5 | true
6 | ]
7 | },
8 | "rulesDirectory": [
9 | "node_modules/tslint-eslint-rules/dist/rules"
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/src/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Ionic",
3 | "short_name": "Ionic",
4 | "start_url": "index.html",
5 | "display": "standalone",
6 | "icons": [{
7 | "src": "assets/imgs/logo.png",
8 | "sizes": "512x512",
9 | "type": "image/png"
10 | }],
11 | "background_color": "#4e8ef7",
12 | "theme_color": "#4e8ef7"
13 | }
--------------------------------------------------------------------------------
/www/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Ionic",
3 | "short_name": "Ionic",
4 | "start_url": "index.html",
5 | "display": "standalone",
6 | "icons": [{
7 | "src": "assets/imgs/logo.png",
8 | "sizes": "512x512",
9 | "type": "image/png"
10 | }],
11 | "background_color": "#4e8ef7",
12 | "theme_color": "#4e8ef7"
13 | }
--------------------------------------------------------------------------------
/src/pages/tabs/tabs.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # EditorConfig helps developers define and maintain consistent coding styles between different editors and IDEs
2 | # editorconfig.org
3 |
4 | root = true
5 |
6 | [*]
7 | indent_style = space
8 | indent_size = 2
9 |
10 | # We recommend you to keep these unchanged
11 | end_of_line = lf
12 | charset = utf-8
13 | trim_trailing_whitespace = true
14 | insert_final_newline = true
15 |
16 | [*.md]
17 | trim_trailing_whitespace = false
--------------------------------------------------------------------------------
/resources/README.md:
--------------------------------------------------------------------------------
1 | These are Cordova resources. You can replace icon.png and splash.png and run
2 | `ionic cordova resources` to generate custom icons and splash screens for your
3 | app. See `ionic cordova resources --help` for details.
4 |
5 | Cordova reference documentation:
6 |
7 | - Icons: https://cordova.apache.org/docs/en/latest/config_ref/images.html
8 | - Splash Screens: https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-splashscreen/
9 |
--------------------------------------------------------------------------------
/src/pages/tabs/tabs.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | import { AboutPage } from '../about/about';
4 | import { ContactPage } from '../contact/contact';
5 | import { HomePage } from '../home/home';
6 | import {DemoPage} from "../demo/demo";
7 |
8 | @Component({
9 | templateUrl: 'tabs.html'
10 | })
11 | export class TabsPage {
12 |
13 | tab1Root = HomePage;
14 | tab2Root = AboutPage;
15 | tab3Root = ContactPage;
16 | tab4Root = DemoPage;
17 |
18 |
19 | constructor() {
20 |
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/pages/demo/demo.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { NavController } from 'ionic-angular';
3 |
4 | @Component({
5 | selector: 'page-demo',
6 | templateUrl: 'demo.html'
7 | })
8 | export class DemoPage {
9 | indexs = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];
10 |
11 | sections:any[] = Array.apply(null, Array(10)).map(function(item, i) {
12 | return 0;
13 | });
14 |
15 | constructor(public navCtrl: NavController) {
16 |
17 |
18 | }
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/src/pages/home/home.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { NavController } from 'ionic-angular';
3 |
4 | @Component({
5 | selector: 'page-home',
6 | templateUrl: 'home.html'
7 | })
8 | export class HomePage {
9 | indexs = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];
10 |
11 | sections:any[] = Array.apply(null, Array(10)).map(function(item, i) {
12 | return 0;
13 | });
14 |
15 | constructor(public navCtrl: NavController) {
16 |
17 |
18 | }
19 |
20 |
21 |
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/src/pages/contact/contact.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { NavController } from 'ionic-angular';
3 |
4 | @Component({
5 | selector: 'page-contact',
6 | templateUrl: 'contact.html'
7 | })
8 | export class ContactPage {
9 |
10 | indexs = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];
11 |
12 | sections:any[] = Array.apply(null, Array(10)).map(function(item, i) {
13 | return 0;
14 | });
15 |
16 | constructor(public navCtrl: NavController) {
17 |
18 |
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Specifies intentionally untracked files to ignore when using Git
2 | # http://git-scm.com/docs/gitignore
3 |
4 | *~
5 | *.sw[mnpcod]
6 | *.log
7 | *.tmp
8 | *.tmp.*
9 | log.txt
10 | *.sublime-project
11 | *.sublime-workspace
12 | .vscode/
13 | npm-debug.log*
14 |
15 | .idea/
16 | .sass-cache/
17 | .tmp/
18 | .versions/
19 | coverage/
20 | dist/
21 | node_modules/
22 | tmp/
23 | temp/
24 | hooks/
25 | platforms/
26 | plugins/
27 | plugins/android.json
28 | plugins/ios.json
29 | $RECYCLE.BIN/
30 | release/
31 |
32 | .DS_Store
33 | Thumbs.db
34 | UserInterfaceState.xcuserstate
35 |
--------------------------------------------------------------------------------
/src/pages/demo/demo.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | Home
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | section
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/src/pages/about/about.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { NavController } from 'ionic-angular';
3 | import {Http} from "@angular/http";
4 | import "rxjs/add/operator/map";
5 |
6 | @Component({
7 | selector: 'page-about',
8 | templateUrl: 'about.html'
9 | })
10 | export class AboutPage {
11 |
12 | indexs = ['A','B','C','F','G','J','K','L','O','P','Q','R','S','T','U','V','W','X','Y','Z'];
13 |
14 | sections:any[] = Array.apply(null, Array(50)).map(function(item, i) {
15 | return 0;
16 | });
17 |
18 | constructor(public navCtrl: NavController, public http: Http) {
19 |
20 | }
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/src/components/index-list/index-list.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { IndexListComponent } from './index-list';
3 | import {IndexSectionComponent} from './index-section';
4 | import {CommonModule} from '@angular/common';
5 | import {IndexCellComponent} from './index-cell';
6 |
7 | @NgModule({
8 | declarations: [
9 | IndexListComponent,
10 | IndexSectionComponent,
11 | IndexCellComponent
12 | ],
13 | imports: [
14 | CommonModule,
15 | ],
16 | exports: [
17 | IndexListComponent,
18 | IndexSectionComponent,
19 | IndexCellComponent
20 | ]
21 | })
22 | export class IndexListModule {}
23 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "allowSyntheticDefaultImports": true,
4 | "declaration": false,
5 | "emitDecoratorMetadata": true,
6 | "experimentalDecorators": true,
7 | "lib": [
8 | "dom",
9 | "es2015"
10 | ],
11 | "module": "es2015",
12 | "moduleResolution": "node",
13 | "sourceMap": true,
14 | "target": "es5"
15 | },
16 | "include": [
17 | "src/**/*.ts"
18 | ],
19 | "exclude": [
20 | "node_modules",
21 | "src/**/*.spec.ts",
22 | "src/**/__tests__/*.ts"
23 | ],
24 | "compileOnSave": false,
25 | "atom": {
26 | "rewriteTsconfig": false
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/pages/about/about.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | About
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | section
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/src/pages/contact/contact.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Contact
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | section
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/src/app/app.scss:
--------------------------------------------------------------------------------
1 | // http://ionicframework.com/docs/theming/
2 |
3 |
4 | // App Global Sass
5 | // --------------------------------------------------
6 | // Put style rules here that you want to apply globally. These
7 | // styles are for the entire app and not just one component.
8 | // Additionally, this file can be also used as an entry point
9 | // to import other Sass files to be included in the output CSS.
10 | //
11 | // Shared Sass variables, which can be used to adjust Ionic's
12 | // default Sass variables, belong in "theme/variables.scss".
13 | //
14 | // To declare rules for a specific mode, create a child rule
15 | // for the .md, .ios, or .wp mode classes. The mode class is
16 | // automatically applied to the
element in the app.
17 |
--------------------------------------------------------------------------------
/src/app/app.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { Platform } from 'ionic-angular';
3 | import { StatusBar } from '@ionic-native/status-bar';
4 | import { SplashScreen } from '@ionic-native/splash-screen';
5 |
6 | import { TabsPage } from '../pages/tabs/tabs';
7 |
8 | @Component({
9 | templateUrl: 'app.html'
10 | })
11 | export class MyApp {
12 | rootPage:any = TabsPage;
13 |
14 | constructor(platform: Platform, statusBar: StatusBar, splashScreen: SplashScreen) {
15 | platform.ready().then(() => {
16 | // Okay, so the platform is ready and our plugins are available.
17 | // Here you can do any higher level native things you might need.
18 | statusBar.styleDefault();
19 | splashScreen.hide();
20 | });
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/service-worker.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Check out https://googlechromelabs.github.io/sw-toolbox/ for
3 | * more info on how to use sw-toolbox to custom configure your service worker.
4 | */
5 |
6 |
7 | 'use strict';
8 | importScripts('./build/sw-toolbox.js');
9 |
10 | self.toolbox.options.cache = {
11 | name: 'ionic-cache'
12 | };
13 |
14 | // pre-cache our key assets
15 | self.toolbox.precache(
16 | [
17 | './build/main.js',
18 | './build/vendor.js',
19 | './build/main.css',
20 | './build/polyfills.js',
21 | 'index.html',
22 | 'manifest.json'
23 | ]
24 | );
25 |
26 | // dynamically cache any other local assets
27 | self.toolbox.router.any('/*', self.toolbox.fastest);
28 |
29 | // for any other requests go to the network, cache,
30 | // and then only use that cached resource if your user goes offline
31 | self.toolbox.router.default = self.toolbox.networkFirst;
32 |
--------------------------------------------------------------------------------
/www/service-worker.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Check out https://googlechromelabs.github.io/sw-toolbox/ for
3 | * more info on how to use sw-toolbox to custom configure your service worker.
4 | */
5 |
6 |
7 | 'use strict';
8 | importScripts('./build/sw-toolbox.js');
9 |
10 | self.toolbox.options.cache = {
11 | name: 'ionic-cache'
12 | };
13 |
14 | // pre-cache our key assets
15 | self.toolbox.precache(
16 | [
17 | './build/main.js',
18 | './build/vendor.js',
19 | './build/main.css',
20 | './build/polyfills.js',
21 | 'index.html',
22 | 'manifest.json'
23 | ]
24 | );
25 |
26 | // dynamically cache any other local assets
27 | self.toolbox.router.any('/*', self.toolbox.fastest);
28 |
29 | // for any other requests go to the network, cache,
30 | // and then only use that cached resource if your user goes offline
31 | self.toolbox.router.default = self.toolbox.networkFirst;
32 |
--------------------------------------------------------------------------------
/src/components/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ionic3-index-list",
3 | "version": "1.0.8",
4 | "description": "ionic3-index-list",
5 | "scripts": {
6 | "test": "echo \"Error: no test specified\" && exit 1"
7 | },
8 | "repository": {
9 | "type": "git",
10 | "url": "git+https://github.com/CK110/ionic3-index-list.git"
11 | },
12 | "keywords": [
13 | "ionic2",
14 | "ionic3",
15 | "angular4",
16 | "ionic2-index-list"
17 | ],
18 | "author": "kaichen",
19 | "license": "MIT",
20 | "bugs": {
21 | "url": "https://github.com/CK110/ionic3-index-list/issues"
22 | },
23 | "homepage": "https://github.com/CK110/ionic3-index-list#readme",
24 | "peerDependencies": {
25 | "@angular/common": "^4.0.0 || ^5.0.0",
26 | "@angular/core": "^4.0.0 || ^5.0.0"
27 | },
28 | "$schema": "../../node_modules/ng-packagr/package.schema.json",
29 | "ngPackage": {
30 | "lib": {
31 | "entryFile": "index.ts"
32 | }
33 | },
34 | "dest":"dist"
35 | }
36 |
--------------------------------------------------------------------------------
/src/components/index-list/index-cell.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'ion-index-cell',
5 | template: `
6 |
11 | `,
12 | styles: [`
13 | .index-cell{
14 | background-color: #fff;
15 | padding-left:10px
16 | }
17 |
18 | .index-cell-item{
19 | box-sizing: border-box;
20 | color: inherit;
21 | min-height: 48px;
22 | display: block;
23 | overflow: hidden;
24 | position: relative;
25 | text-decoration: none;
26 | border-bottom: 1px solid #dcd8d8;
27 | width: 100%;
28 | display: flex;
29 | align-items: center;
30 | }
31 | `]
32 | })
33 | export class IndexCellComponent implements OnInit {
34 |
35 | constructor() { }
36 |
37 | ngOnInit() { }
38 |
39 | }
40 |
--------------------------------------------------------------------------------
/src/pages/home/home.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | Home
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | 新的朋友
18 |
19 |
20 |
21 | 群聊
22 |
23 |
24 |
25 | 标签
26 |
27 |
28 |
29 | 公众号
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 | section
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/www/assets/fonts/ionicons.scss:
--------------------------------------------------------------------------------
1 |
2 | // Ionicons Icon Font CSS
3 | // --------------------------
4 | // Ionicons CSS for Ionic's element
5 | // ionicons-icons.scss has the icons and their unicode characters
6 |
7 | $ionicons-font-path: $font-path !default;
8 |
9 | @import "ionicons-icons";
10 | @import "ionicons-variables";
11 |
12 |
13 | @font-face {
14 | font-family: "Ionicons";
15 | src: url("#{$ionicons-font-path}/ionicons.woff2?v=#{$ionicons-version}") format("woff2"),
16 | url("#{$ionicons-font-path}/ionicons.woff?v=#{$ionicons-version}") format("woff"),
17 | url("#{$ionicons-font-path}/ionicons.ttf?v=#{$ionicons-version}") format("truetype");
18 | font-weight: normal;
19 | font-style: normal;
20 | }
21 |
22 | ion-icon {
23 | display: inline-block;
24 |
25 | font-family: "Ionicons";
26 | -moz-osx-font-smoothing: grayscale;
27 | -webkit-font-smoothing: antialiased;
28 | font-style: normal;
29 | font-variant: normal;
30 | font-weight: normal;
31 | line-height: 1;
32 | text-rendering: auto;
33 | text-transform: none;
34 | speak: none;
35 |
36 | @include rtl() {
37 | &[aria-label^="arrow"]::before,
38 | &[flip-rtl]::before {
39 | transform: scaleX(-1);
40 | }
41 |
42 | &[unflip-rtl]::before {
43 | transform: scaleX(1);
44 | }
45 | }
46 |
47 | &::before {
48 | display: inline-block;
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/src/app/app.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule, ErrorHandler } from '@angular/core';
2 | import { BrowserModule } from '@angular/platform-browser';
3 | import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
4 | import { MyApp } from './app.component';
5 |
6 | import { AboutPage } from '../pages/about/about';
7 | import { ContactPage } from '../pages/contact/contact';
8 | import { HomePage } from '../pages/home/home';
9 | import { TabsPage } from '../pages/tabs/tabs';
10 |
11 | import { StatusBar } from '@ionic-native/status-bar';
12 | import { SplashScreen } from '@ionic-native/splash-screen';
13 | import {IndexListModule} from "../components/index";
14 | import {DemoPage} from "../pages/demo/demo";
15 | import {HttpModule} from "@angular/http";
16 |
17 | @NgModule({
18 | declarations: [
19 | MyApp,
20 | AboutPage,
21 | ContactPage,
22 | HomePage,
23 | TabsPage,
24 | DemoPage
25 | ],
26 | imports: [
27 | BrowserModule,
28 | IonicModule.forRoot(MyApp),
29 | HttpModule,
30 | IndexListModule
31 | ],
32 | bootstrap: [IonicApp],
33 | entryComponents: [
34 | MyApp,
35 | AboutPage,
36 | ContactPage,
37 | HomePage,
38 | TabsPage,
39 | DemoPage
40 | ],
41 | providers: [
42 | StatusBar,
43 | SplashScreen,
44 | {provide: ErrorHandler, useClass: IonicErrorHandler}
45 | ]
46 | })
47 | export class AppModule {}
48 |
--------------------------------------------------------------------------------
/www/assets/fonts/noto-sans.scss:
--------------------------------------------------------------------------------
1 | // Noto Sans Font
2 | // Google
3 | // Apache License, version 2.0
4 | // http://www.apache.org/licenses/LICENSE-2.0.html
5 |
6 | $noto-sans-font-path: $font-path !default;
7 |
8 | @font-face {
9 | font-family: "Noto Sans";
10 | font-style: normal;
11 | font-weight: 300;
12 | src: local("Noto Sans"), local("Noto-Sans-Regular"), url("#{$noto-sans-font-path}/noto-sans-regular.woff") format("woff"), url("#{$noto-sans-font-path}/noto-sans-regular.ttf") format("truetype");
13 | }
14 |
15 | @font-face {
16 | font-family: "Noto Sans";
17 | font-style: normal;
18 | font-weight: 400;
19 | src: local("Noto Sans"), local("Noto-Sans-Regular"), url("#{$noto-sans-font-path}/noto-sans-regular.woff") format("woff"), url("#{$noto-sans-font-path}/noto-sans-regular.ttf") format("truetype");
20 | }
21 |
22 | @font-face {
23 | font-family: "Noto Sans";
24 | font-style: normal;
25 | font-weight: 500;
26 | src: local("Noto Sans Bold"), local("Noto-Sans-Bold"), url("#{$noto-sans-font-path}/noto-sans-bold.woff") format("woff"), url("#{$noto-sans-font-path}/noto-sans-bold.ttf") format("truetype");
27 | }
28 |
29 | @font-face {
30 | font-family: "Noto Sans";
31 | font-style: normal;
32 | font-weight: 700;
33 | src: local("Noto Sans Bold"), local("Noto-Sans-Bold"), url("#{$noto-sans-font-path}/noto-sans-bold.woff") format("woff"), url("#{$noto-sans-font-path}/noto-sans-bold.ttf") format("truetype");
34 | }
35 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ionic3-index-list",
3 | "version": "0.0.1",
4 | "author": "Ionic Framework",
5 | "homepage": "http://ionicframework.com/",
6 | "private": true,
7 | "scripts": {
8 | "clean": "ionic-app-scripts clean",
9 | "build": "ionic-app-scripts build",
10 | "lint": "ionic-app-scripts lint",
11 | "ionic:build": "ionic-app-scripts build",
12 | "ionic:serve": "ionic-app-scripts serve",
13 | "ngcompile": "node_modules/.bin/ngc -p tsconfig-aot.json",
14 | "build:lib": "ng-packagr -p src/components/package.json"
15 | },
16 | "dependencies": {
17 | "@angular/common": "5.0.3",
18 | "@angular/compiler": "5.0.3",
19 | "@angular/compiler-cli": "5.0.3",
20 | "@angular/core": "5.0.3",
21 | "@angular/forms": "5.0.3",
22 | "@angular/http": "5.0.3",
23 | "@angular/platform-browser": "5.0.3",
24 | "@angular/platform-browser-dynamic": "5.0.3",
25 | "@ionic-native/core": "4.4.0",
26 | "@ionic-native/splash-screen": "4.4.0",
27 | "@ionic-native/status-bar": "4.4.0",
28 | "@ionic/storage": "2.1.3",
29 | "ionic-angular": "3.9.2",
30 | "ionicons": "3.0.0",
31 | "ng-packagr": "^2.1.0",
32 | "rxjs": "5.5.2",
33 | "sw-toolbox": "3.6.0",
34 | "tsickle": "^0.27.2",
35 | "zone.js": "0.8.18"
36 | },
37 | "devDependencies": {
38 | "@ionic/app-scripts": "3.1.8",
39 | "typescript": "2.4.2"
40 | },
41 | "description": "An Ionic project"
42 | }
43 |
--------------------------------------------------------------------------------
/www/assets/fonts/roboto.scss:
--------------------------------------------------------------------------------
1 | // Roboto Font
2 | // Google
3 | // Apache License, version 2.0
4 | // http://www.apache.org/licenses/LICENSE-2.0.html
5 |
6 | $roboto-font-path: $font-path !default;
7 |
8 | @font-face {
9 | font-family: "Roboto";
10 | font-style: normal;
11 | font-weight: 300;
12 | src: local("Roboto Light"), local("Roboto-Light"), url("#{$roboto-font-path}/roboto-light.woff2") format("woff2"), url("#{$roboto-font-path}/roboto-light.woff") format("woff"), url("#{$roboto-font-path}/roboto-light.ttf") format("truetype");
13 | }
14 |
15 | @font-face {
16 | font-family: "Roboto";
17 | font-style: normal;
18 | font-weight: 400;
19 | src: local("Roboto"), local("Roboto-Regular"), url("#{$roboto-font-path}/roboto-regular.woff2") format("woff2"), url("#{$roboto-font-path}/roboto-regular.woff") format("woff"), url("#{$roboto-font-path}/roboto-regular.ttf") format("truetype");
20 | }
21 |
22 | @font-face {
23 | font-family: "Roboto";
24 | font-style: normal;
25 | font-weight: 500;
26 | src: local("Roboto Medium"), local("Roboto-Medium"), url("#{$roboto-font-path}/roboto-medium.woff2") format("woff2"), url("#{$roboto-font-path}/roboto-medium.woff") format("woff"), url("#{$roboto-font-path}/roboto-medium.ttf") format("truetype");
27 | }
28 |
29 | @font-face {
30 | font-family: "Roboto";
31 | font-style: normal;
32 | font-weight: 700;
33 | src: local("Roboto Bold"), local("Roboto-Bold"), url("#{$roboto-font-path}/roboto-bold.woff2") format("woff2"), url("#{$roboto-font-path}/roboto-bold.woff") format("woff"), url("#{$roboto-font-path}/roboto-bold.ttf") format("truetype");
34 | }
35 |
--------------------------------------------------------------------------------
/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ionic App
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # ionic3-index-list
2 |
3 | [](https://www.npmjs.com/package/ionic3-index-list)
4 |
5 | index-list 在联系人页面中很常用
6 |
7 | 之前试过[ionic2-indexed-scroll](https://github.com/HsuanXyz/ionic2-indexed-scroll),比较[ionic2-alpha-scroll](https://github.com/rossmartin/ionic2-alpha-scroll),可能更angular一些,
8 | 但是并不是组件,而且在ios上有些bug,所以就写了该组件,该组件借鉴了一些上面所述组件的代码。
9 |
10 | 不依赖于ionic3组件,可以自定义` `显示的内容
11 |
12 | ## Installation
13 |
14 | `npm i ionic3-index-list --save`
15 |
16 | ## Usage
17 |
18 | ### Import In AppModule
19 |
20 | ```typescript
21 | import {IndexListModule} from "ionic3-index-list";
22 |
23 | @NgModule({
24 | declarations: [
25 |
26 | ],
27 | imports: [
28 | IndexListModule
29 | ]
30 | })
31 |
32 | ```
33 |
34 | ### Use In Templete
35 |
36 | ```
37 |
38 |
39 |
40 | 222
41 |
42 |
43 | 222
44 |
45 |
46 | 222
47 |
48 |
49 | 222
50 |
51 |
52 |
53 |
54 |
55 | 222
56 |
57 |
58 | 222
59 |
60 |
61 | 222
62 |
63 |
64 | 222
65 |
66 |
67 |
68 | ```
69 |
--------------------------------------------------------------------------------
/www/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 | Ionic App
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/src/components/index-list/index-section.ts:
--------------------------------------------------------------------------------
1 | import {
2 | AfterViewChecked, Component, ContentChildren, ElementRef, Input,
3 | QueryList
4 | } from '@angular/core';
5 | import {IndexCellComponent} from './index-cell';
6 |
7 | @Component({
8 | selector: 'ion-index-section',
9 | template: `
10 |
11 |
12 |
13 | {{index}}
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | `,
24 | styles: [`
25 | .index-section-index{
26 | margin: 0;
27 | padding: 2px 10px 2px 10px;
28 | background-color: #fafafa;
29 | border-bottom: 1px solid #dedede;
30 | }
31 |
32 | .index-section-main{
33 | /*border-bottom: 1px solid #dedede;*/
34 | }
35 |
36 | .index-section-current .index-section-index{
37 | position: sticky;
38 | position: -webkit-sticky;
39 | top: 0px;
40 | left: 0px;
41 | width: 100%;
42 | z-index: 3;
43 | transform: translateZ(0px);
44 | }
45 | `]
46 | })
47 | export class IndexSectionComponent implements AfterViewChecked {
48 |
49 | _current=false;
50 |
51 | @Input() index: string;
52 |
53 | @ContentChildren(IndexCellComponent) _listOfIndexCell: QueryList;
54 |
55 | constructor(public elementRef: ElementRef) { }
56 |
57 | getElementRef():ElementRef{
58 | return this.elementRef;
59 | }
60 |
61 | ngAfterViewChecked(): void {
62 | // setTimeout(()=>{
63 | // if (this._listOfIndexCell && this._listOfIndexCell.length) {
64 | // const listArray = this._listOfIndexCell.toArray();
65 | // listArray[listArray.length - 1]._lastItem = true;
66 | // }
67 | // })
68 | }
69 |
70 | }
71 |
--------------------------------------------------------------------------------
/src/theme/variables.scss:
--------------------------------------------------------------------------------
1 | // Ionic Variables and Theming. For more info, please see:
2 | // http://ionicframework.com/docs/theming/
3 |
4 | // Font path is used to include ionicons,
5 | // roboto, and noto sans fonts
6 | $font-path: "../assets/fonts";
7 |
8 |
9 | // The app direction is used to include
10 | // rtl styles in your app. For more info, please see:
11 | // http://ionicframework.com/docs/theming/rtl-support/
12 | $app-direction: ltr;
13 |
14 |
15 | @import "ionic.globals";
16 |
17 |
18 | // Shared Variables
19 | // --------------------------------------------------
20 | // To customize the look and feel of this app, you can override
21 | // the Sass variables found in Ionic's source scss files.
22 | // To view all the possible Ionic variables, see:
23 | // http://ionicframework.com/docs/theming/overriding-ionic-variables/
24 |
25 |
26 |
27 |
28 | // Named Color Variables
29 | // --------------------------------------------------
30 | // Named colors makes it easy to reuse colors on various components.
31 | // It's highly recommended to change the default colors
32 | // to match your app's branding. Ionic uses a Sass map of
33 | // colors so you can add, rename and remove colors as needed.
34 | // The "primary" color is the only required color in the map.
35 |
36 | $colors: (
37 | primary: #488aff,
38 | secondary: #32db64,
39 | danger: #f53d3d,
40 | light: #f4f4f4,
41 | dark: #222
42 | );
43 |
44 |
45 | // App iOS Variables
46 | // --------------------------------------------------
47 | // iOS only Sass variables can go here
48 |
49 |
50 |
51 |
52 | // App Material Design Variables
53 | // --------------------------------------------------
54 | // Material Design only Sass variables can go here
55 |
56 |
57 |
58 |
59 | // App Windows Variables
60 | // --------------------------------------------------
61 | // Windows only Sass variables can go here
62 |
63 |
64 |
65 |
66 | // App Theme
67 | // --------------------------------------------------
68 | // Ionic apps can have different themes applied, which can
69 | // then be future customized. This import comes last
70 | // so that the above variables are used and Ionic's
71 | // default are overridden.
72 |
73 | @import "ionic.theme.default";
74 |
75 |
76 | // Ionicons
77 | // --------------------------------------------------
78 | // The premium icon font for Ionic. For more info, please see:
79 | // http://ionicframework.com/docs/ionicons/
80 |
81 | @import "ionic.ionicons";
82 |
83 |
84 | // Fonts
85 | // --------------------------------------------------
86 |
87 | @import "roboto";
88 | @import "noto-sans";
89 |
--------------------------------------------------------------------------------
/src/components/index-list/index-list.ts:
--------------------------------------------------------------------------------
1 | import {
2 | AfterViewChecked, Component, ContentChildren, ElementRef, Input, QueryList,
3 | ViewChild
4 | } from '@angular/core';
5 | import {IndexSectionComponent} from './index-section';
6 |
7 | @Component({
8 | selector: 'ion-index-list',
9 | template: `
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
19 | {{index}}
20 |
21 |
22 |
23 |
24 | {{_currentIndicator}}
25 |
26 |
27 | `,
28 | styles: [`
29 | ::-webkit-scrollbar {
30 | width: 0
31 | }
32 |
33 | .index-list{
34 | width: 100%;
35 | display: flex;
36 | justify-content: space-between;
37 | height: 100%;
38 | overflow: hidden;
39 | transform:translate(0,0);
40 | }
41 |
42 | .index-list-wrapper{
43 | width: 100%;
44 | overflow-y: scroll;
45 | -webkit-overflow-scrolling: touch;
46 | }
47 |
48 | .index-list-nav{
49 | width:6%;
50 | position: absolute;
51 | top: 44px;
52 | right: 0;
53 | display: flex;
54 | justify-content:center;
55 | flex-direction: column;
56 | text-align: center;
57 | background-color: rgba(245, 245, 245, 0.3);
58 | height: 100%;
59 | z-index: 1000;
60 | -webkit-touch-callout: none;
61 | }
62 |
63 | .index-bar{
64 | padding: 2px 6px;
65 | font-size: 8px;
66 | }
67 |
68 | .index-list-nav-activate{
69 | color: red;
70 | }
71 |
72 | .modal {
73 | top: 50%;
74 | left: 50%;
75 | z-index: 100;
76 | position: fixed;
77 | pointer-events: none;
78 | width: 20vw;
79 | height: 20vw;
80 | line-height: 20vw;
81 | margin-left: -10vw;
82 | margin-top: -10vw;
83 | color: #fff;
84 | font-size: 3em;
85 | text-align: center;
86 | border-radius: 8px;
87 | background-color: rgba(0, 0, 0, 0.52);
88 | -webkit-box-shadow: 0 0 4px 1px rgba(0, 0, 0, 0.16);
89 | box-shadow: 0 0 4px 1px rgba(0, 0, 0, 0.16);
90 | -webkit-transition: opacity .5s;
91 | -o-transition: opacity .5s;
92 | transition: opacity .5s;
93 | opacity: 0;
94 | }
95 |
96 | .modal.show {
97 | opacity: 1;
98 | }
99 | `]
100 | })
101 | export class IndexListComponent implements AfterViewChecked{
102 |
103 |
104 | _currentIndicator ;
105 |
106 | _flag= true;
107 | _indexes: any[]= []; //右侧导航
108 | _offsetTops: Array = []; // 每个IndexSection 的offsetTop
109 | _navOffsetX: 0;
110 | _indicatorTime: any = null;
111 | _showModal = false;
112 |
113 |
114 | @Input() hasTop:boolean = false;
115 |
116 | @ViewChild('top') top: ElementRef;
117 | @ContentChildren(IndexSectionComponent) _listOfIndexSection: QueryList;
118 | @ViewChild('scrollContent') scrollContent: ElementRef;
119 |
120 | constructor(){
121 |
122 | }
123 |
124 | ngAfterViewChecked(): void {
125 | if (this._flag && this._listOfIndexSection){
126 | this._listOfIndexSection.forEach((section) => {
127 | this._indexes.push(section.index);
128 | const offsetTop = section.getElementRef().nativeElement.offsetTop;
129 | this._offsetTops.push(offsetTop);
130 |
131 | });
132 | this._flag = false;
133 |
134 | if(this.hasTop) {
135 | this._indexes.unshift('#');
136 | this._offsetTops.unshift(0);
137 |
138 | }
139 | }
140 | }
141 |
142 | onScroll(e:any) {
143 | e.preventDefault();
144 | const scrollTopOffsetTop = this.scrollContent.nativeElement.scrollTop;
145 |
146 | this._offsetTops.forEach((v, i) => {
147 | if (scrollTopOffsetTop >= v){
148 | this._currentIndicator = this._indexes[i];
149 |
150 | //
151 | this.setCurrentSection(this._currentIndicator);
152 | }
153 |
154 | });
155 | }
156 |
157 | touchstart(e:any){
158 | this._navOffsetX = e.changedTouches[0].clientX;
159 | this.scrollList(e.changedTouches[0].clientY);
160 | }
161 |
162 | touchmove(e:any){
163 | e.preventDefault();
164 | this.scrollList(e.changedTouches[0].clientY);
165 | }
166 |
167 | touchend(e:any){
168 | this._indicatorTime = setTimeout(() => {
169 | this._showModal = false;
170 | this._currentIndicator = '';
171 | }, 500);
172 | }
173 |
174 | scrollList(y:any){
175 |
176 | const currentItem:any = document.elementFromPoint(this._navOffsetX, y);
177 | if (!currentItem || !currentItem.classList.contains('index-bar')) {
178 | return;
179 | }
180 | this._currentIndicator = currentItem['innerText'];
181 | const index = this._indexes.indexOf(this._currentIndicator);
182 |
183 | this.scrollContent.nativeElement.scrollTop = this._offsetTops[index];
184 |
185 |
186 | this._showModal = true;
187 | if (this._indicatorTime) {
188 | clearTimeout(this._indicatorTime);
189 | }
190 | }
191 |
192 |
193 | setCurrentSection(currentindex:string) {
194 | const listArray = this._listOfIndexSection.toArray();
195 | listArray.forEach((section)=>{
196 | if(section.index === currentindex ){
197 | section._current = true;
198 | }else{
199 | section._current = false;
200 | }
201 | })
202 | }
203 |
204 | }
205 |
--------------------------------------------------------------------------------
/config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | de
4 | An awesome Ionic/Cordova app.
5 | Ionic Framework Team
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/www/build/sw-toolbox.js:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright 2016 Google Inc. All Rights Reserved.
3 |
4 | Licensed under the Apache License, Version 2.0 (the "License");
5 | you may not use this file except in compliance with the License.
6 | You may obtain a copy of the License at
7 |
8 | http://www.apache.org/licenses/LICENSE-2.0
9 |
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.toolbox=e()}}(function(){return function e(t,n,r){function o(c,s){if(!n[c]){if(!t[c]){var a="function"==typeof require&&require;if(!s&&a)return a(c,!0);if(i)return i(c,!0);var u=new Error("Cannot find module '"+c+"'");throw u.code="MODULE_NOT_FOUND",u}var f=n[c]={exports:{}};t[c][0].call(f.exports,function(e){var n=t[c][1][e];return o(n?n:e)},f,f.exports,e,t,n,r)}return n[c].exports}for(var i="function"==typeof require&&require,c=0;ct.value[l]){var r=t.value[p];c.push(r),a.delete(r),t.continue()}},s.oncomplete=function(){r(c)},s.onabort=o}):Promise.resolve([])}function s(e,t){return t?new Promise(function(n,r){var o=[],i=e.transaction(h,"readwrite"),c=i.objectStore(h),s=c.index(l),a=s.count();s.count().onsuccess=function(){var e=a.result;e>t&&(s.openCursor().onsuccess=function(n){var r=n.target.result;if(r){var i=r.value[p];o.push(i),c.delete(i),e-o.length>t&&r.continue()}})},i.oncomplete=function(){n(o)},i.onabort=r}):Promise.resolve([])}function a(e,t,n,r){return c(e,n,r).then(function(n){return s(e,t).then(function(e){return n.concat(e)})})}var u="sw-toolbox-",f=1,h="store",p="url",l="timestamp",d={};t.exports={getDb:o,setTimestampForUrl:i,expireEntries:a}},{}],3:[function(e,t,n){"use strict";function r(e){var t=a.match(e.request);t?e.respondWith(t(e.request)):a.default&&"GET"===e.request.method&&0===e.request.url.indexOf("http")&&e.respondWith(a.default(e.request))}function o(e){s.debug("activate event fired");var t=u.cache.name+"$$$inactive$$$";e.waitUntil(s.renameCache(t,u.cache.name))}function i(e){return e.reduce(function(e,t){return e.concat(t)},[])}function c(e){var t=u.cache.name+"$$$inactive$$$";s.debug("install event fired"),s.debug("creating cache ["+t+"]"),e.waitUntil(s.openCache({cache:{name:t}}).then(function(e){return Promise.all(u.preCacheItems).then(i).then(s.validatePrecacheInput).then(function(t){return s.debug("preCache list: "+(t.join(", ")||"(none)")),e.addAll(t)})}))}e("serviceworker-cache-polyfill");var s=e("./helpers"),a=e("./router"),u=e("./options");t.exports={fetchListener:r,activateListener:o,installListener:c}},{"./helpers":1,"./options":4,"./router":6,"serviceworker-cache-polyfill":16}],4:[function(e,t,n){"use strict";var r;r=self.registration?self.registration.scope:self.scope||new URL("./",self.location).href,t.exports={cache:{name:"$$$toolbox-cache$$$"+r+"$$$",maxAgeSeconds:null,maxEntries:null},debug:!1,networkTimeoutSeconds:null,preCacheItems:[],successResponses:/^0|([123]\d\d)|(40[14567])|410$/}},{}],5:[function(e,t,n){"use strict";var r=new URL("./",self.location),o=r.pathname,i=e("path-to-regexp"),c=function(e,t,n,r){t instanceof RegExp?this.fullUrlRegExp=t:(0!==t.indexOf("/")&&(t=o+t),this.keys=[],this.regexp=i(t,this.keys)),this.method=e,this.options=r,this.handler=n};c.prototype.makeHandler=function(e){var t;if(this.regexp){var n=this.regexp.exec(e);t={},this.keys.forEach(function(e,r){t[e.name]=n[r+1]})}return function(e){return this.handler(e,t,this.options)}.bind(this)},t.exports=c},{"path-to-regexp":15}],6:[function(e,t,n){"use strict";function r(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var o=e("./route"),i=e("./helpers"),c=function(e,t){for(var n=e.entries(),r=n.next(),o=[];!r.done;){var i=new RegExp(r.value[0]);i.test(t)&&o.push(r.value[1]),r=n.next()}return o},s=function(){this.routes=new Map,this.routes.set(RegExp,new Map),this.default=null};["get","post","put","delete","head","any"].forEach(function(e){s.prototype[e]=function(t,n,r){return this.add(e,t,n,r)}}),s.prototype.add=function(e,t,n,c){c=c||{};var s;t instanceof RegExp?s=RegExp:(s=c.origin||self.location.origin,s=s instanceof RegExp?s.source:r(s)),e=e.toLowerCase();var a=new o(e,t,n,c);this.routes.has(s)||this.routes.set(s,new Map);var u=this.routes.get(s);u.has(e)||u.set(e,new Map);var f=u.get(e),h=a.regexp||a.fullUrlRegExp;f.has(h.source)&&i.debug('"'+t+'" resolves to same regex as existing route.'),f.set(h.source,a)},s.prototype.matchMethod=function(e,t){var n=new URL(t),r=n.origin,o=n.pathname;return this._match(e,c(this.routes,r),o)||this._match(e,[this.routes.get(RegExp)],t)},s.prototype._match=function(e,t,n){if(0===t.length)return null;for(var r=0;r0)return s[0].makeHandler(n)}}return null},s.prototype.match=function(e){return this.matchMethod(e.method,e.url)||this.matchMethod("any",e.url)},t.exports=new s},{"./helpers":1,"./route":5}],7:[function(e,t,n){"use strict";function r(e,t,n){return n=n||{},i.debug("Strategy: cache first ["+e.url+"]",n),i.openCache(n).then(function(t){return t.match(e).then(function(t){var r=n.cache||o.cache,c=Date.now();return i.isResponseFresh(t,r.maxAgeSeconds,c)?t:i.fetchAndCache(e,n)})})}var o=e("../options"),i=e("../helpers");t.exports=r},{"../helpers":1,"../options":4}],8:[function(e,t,n){"use strict";function r(e,t,n){return n=n||{},i.debug("Strategy: cache only ["+e.url+"]",n),i.openCache(n).then(function(t){return t.match(e).then(function(e){var t=n.cache||o.cache,r=Date.now();if(i.isResponseFresh(e,t.maxAgeSeconds,r))return e})})}var o=e("../options"),i=e("../helpers");t.exports=r},{"../helpers":1,"../options":4}],9:[function(e,t,n){"use strict";function r(e,t,n){return o.debug("Strategy: fastest ["+e.url+"]",n),new Promise(function(r,c){var s=!1,a=[],u=function(e){a.push(e.toString()),s?c(new Error('Both cache and network failed: "'+a.join('", "')+'"')):s=!0},f=function(e){e instanceof Response?r(e):u("No result returned")};o.fetchAndCache(e.clone(),n).then(f,u),i(e,t,n).then(f,u)})}var o=e("../helpers"),i=e("./cacheOnly");t.exports=r},{"../helpers":1,"./cacheOnly":8}],10:[function(e,t,n){t.exports={networkOnly:e("./networkOnly"),networkFirst:e("./networkFirst"),cacheOnly:e("./cacheOnly"),cacheFirst:e("./cacheFirst"),fastest:e("./fastest")}},{"./cacheFirst":7,"./cacheOnly":8,"./fastest":9,"./networkFirst":11,"./networkOnly":12}],11:[function(e,t,n){"use strict";function r(e,t,n){n=n||{};var r=n.successResponses||o.successResponses,c=n.networkTimeoutSeconds||o.networkTimeoutSeconds;return i.debug("Strategy: network first ["+e.url+"]",n),i.openCache(n).then(function(t){var s,a,u=[];if(c){var f=new Promise(function(r){s=setTimeout(function(){t.match(e).then(function(e){var t=n.cache||o.cache,c=Date.now(),s=t.maxAgeSeconds;i.isResponseFresh(e,s,c)&&r(e)})},1e3*c)});u.push(f)}var h=i.fetchAndCache(e,n).then(function(e){if(s&&clearTimeout(s),r.test(e.status))return e;throw i.debug("Response was an HTTP error: "+e.statusText,n),a=e,new Error("Bad response")}).catch(function(r){return i.debug("Network or response error, fallback to cache ["+e.url+"]",n),t.match(e).then(function(e){if(e)return e;if(a)return a;throw r})});return u.push(h),Promise.race(u)})}var o=e("../options"),i=e("../helpers");t.exports=r},{"../helpers":1,"../options":4}],12:[function(e,t,n){"use strict";function r(e,t,n){return o.debug("Strategy: network only ["+e.url+"]",n),fetch(e)}var o=e("../helpers");t.exports=r},{"../helpers":1}],13:[function(e,t,n){"use strict";var r=e("./options"),o=e("./router"),i=e("./helpers"),c=e("./strategies"),s=e("./listeners");i.debug("Service Worker Toolbox is loading"),self.addEventListener("install",s.installListener),self.addEventListener("activate",s.activateListener),self.addEventListener("fetch",s.fetchListener),t.exports={networkOnly:c.networkOnly,networkFirst:c.networkFirst,cacheOnly:c.cacheOnly,cacheFirst:c.cacheFirst,fastest:c.fastest,router:o,options:r,cache:i.cache,uncache:i.uncache,precache:i.precache}},{"./helpers":1,"./listeners":3,"./options":4,"./router":6,"./strategies":10}],14:[function(e,t,n){t.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},{}],15:[function(e,t,n){function r(e,t){for(var n,r=[],o=0,i=0,c="",s=t&&t.delimiter||"/";null!=(n=x.exec(e));){var f=n[0],h=n[1],p=n.index;if(c+=e.slice(i,p),i=p+f.length,h)c+=h[1];else{var l=e[i],d=n[2],m=n[3],g=n[4],v=n[5],w=n[6],y=n[7];c&&(r.push(c),c="");var b=null!=d&&null!=l&&l!==d,E="+"===w||"*"===w,R="?"===w||"*"===w,k=n[2]||s,$=g||v;r.push({name:m||o++,prefix:d||"",delimiter:k,optional:R,repeat:E,partial:b,asterisk:!!y,pattern:$?u($):y?".*":"[^"+a(k)+"]+?"})}}return i=46||"Chrome"===n&&r>=50)||(Cache.prototype.addAll=function(e){function t(e){this.name="NetworkError",this.code=19,this.message=e}var n=this;return t.prototype=Object.create(Error.prototype),Promise.resolve().then(function(){if(arguments.length<1)throw new TypeError;return e=e.map(function(e){return e instanceof Request?e:String(e)}),Promise.all(e.map(function(e){"string"==typeof e&&(e=new Request(e));var n=new URL(e.url).protocol;if("http:"!==n&&"https:"!==n)throw new t("Invalid scheme");return fetch(e.clone())}))}).then(function(r){if(r.some(function(e){return!e.ok}))throw new t("Incorrect response status");return Promise.all(r.map(function(t,r){return n.put(e[r],t)}))}).then(function(){})},Cache.prototype.add=function(e){return this.addAll([e])})}()},{}]},{},[13])(13)});
16 | //# sourceMappingURL=sw-toolbox.js.map
17 |
--------------------------------------------------------------------------------
/.sourcemaps/main.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["../../node_modules/@angular/core/esm5 lazy","../../src lazy","../../src/pages/tabs/tabs.ts","../../src/pages/about/about.ts","../../src/pages/contact/contact.ts","../../src/pages/home/home.ts","../../src/pages/demo/demo.ts","../../src/components/index-list/index-section.ts","../../src/components/index-list/index-cell.ts","../../src/app/main.ts","../../src/app/app.module.ts","../../src/app/app.component.ts","../../src/components/index.ts","../../src/components/index-list/index-list.module.ts","../../src/components/index-list/index-list.ts"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncatched exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 109;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@angular/core/esm5 lazy\n// module id = 109\n// module chunks = 0","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncatched exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 151;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src lazy\n// module id = 151\n// module chunks = 0","import { Component } from '@angular/core';\n\nimport { AboutPage } from '../about/about';\nimport { ContactPage } from '../contact/contact';\nimport { HomePage } from '../home/home';\nimport {DemoPage} from \"../demo/demo\";\n\n@Component({\n templateUrl: 'tabs.html'\n})\nexport class TabsPage {\n\n tab1Root = HomePage;\n tab2Root = AboutPage;\n tab3Root = ContactPage;\n tab4Root = DemoPage;\n\n\n constructor() {\n\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/tabs/tabs.ts","import { Component } from '@angular/core';\nimport { NavController } from 'ionic-angular';\nimport {Http} from \"@angular/http\";\nimport \"rxjs/add/operator/map\";\n\n@Component({\n selector: 'page-about',\n templateUrl: 'about.html'\n})\nexport class AboutPage {\n\n indexs = ['A','B','C','F','G','J','K','L','O','P','Q','R','S','T','U','V','W','X','Y','Z'];\n\n sections:any[] = Array.apply(null, Array(50)).map(function(item, i) {\n return 0;\n });\n\n constructor(public navCtrl: NavController, public http: Http) {\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/about/about.ts","import { Component } from '@angular/core';\nimport { NavController } from 'ionic-angular';\n\n@Component({\n selector: 'page-contact',\n templateUrl: 'contact.html'\n})\nexport class ContactPage {\n\n indexs = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];\n\n sections:any[] = Array.apply(null, Array(10)).map(function(item, i) {\n return 0;\n });\n\n constructor(public navCtrl: NavController) {\n\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/contact/contact.ts","import { Component } from '@angular/core';\nimport { NavController } from 'ionic-angular';\n\n@Component({\n selector: 'page-home',\n templateUrl: 'home.html'\n})\nexport class HomePage {\n indexs = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];\n\n sections:any[] = Array.apply(null, Array(10)).map(function(item, i) {\n return 0;\n });\n\n constructor(public navCtrl: NavController) {\n\n\n }\n\n\n\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/home/home.ts","import { Component } from '@angular/core';\nimport { NavController } from 'ionic-angular';\n\n@Component({\n selector: 'page-demo',\n templateUrl: 'demo.html'\n})\nexport class DemoPage {\n indexs = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];\n\n sections:any[] = Array.apply(null, Array(10)).map(function(item, i) {\n return 0;\n });\n\n constructor(public navCtrl: NavController) {\n\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/demo/demo.ts","import {\n AfterViewChecked, Component, ContentChildren, ElementRef, Input,\n QueryList\n} from '@angular/core';\nimport {IndexCellComponent} from './index-cell';\n\n@Component({\n selector: 'ion-index-section',\n template: `\n \n \n
\n {{index}}\n
\n\n \n
\n \n\n \n
\n
\n `,\n styles: [`\n .index-section-index{\n margin: 0;\n padding: 2px 10px 2px 10px;\n background-color: #fafafa;\n border-bottom: 1px solid #dedede;\n }\n\n .index-section-main{\n /*border-bottom: 1px solid #dedede;*/\n }\n\n .index-section-current .index-section-index{\n position: sticky;\n position: -webkit-sticky;\n top: 0px;\n left: 0px;\n width: 100%;\n z-index: 3;\n transform: translateZ(0px);\n }\n `]\n})\nexport class IndexSectionComponent implements AfterViewChecked {\n\n _current=false;\n\n @Input() index: string;\n\n @ContentChildren(IndexCellComponent) _listOfIndexCell: QueryList;\n\n constructor(public elementRef: ElementRef) { }\n\n getElementRef():ElementRef{\n return this.elementRef;\n }\n\n ngAfterViewChecked(): void {\n // setTimeout(()=>{\n // if (this._listOfIndexCell && this._listOfIndexCell.length) {\n // const listArray = this._listOfIndexCell.toArray();\n // listArray[listArray.length - 1]._lastItem = true;\n // }\n // })\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/index-list/index-section.ts","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'ion-index-cell',\n template: `\n \n `,\n styles: [`\n .index-cell{\n background-color: #fff;\n padding-left:10px\n }\n\n .index-cell-item{\n box-sizing: border-box;\n color: inherit;\n min-height: 48px;\n display: block;\n overflow: hidden;\n position: relative;\n text-decoration: none;\n border-bottom: 1px solid #dcd8d8;\n width: 100%;\n display: flex;\n align-items: center;\n }\n `]\n})\nexport class IndexCellComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() { }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/index-list/index-cell.ts","import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app.module';\n\nplatformBrowserDynamic().bootstrapModule(AppModule);\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/main.ts","import { NgModule, ErrorHandler } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';\nimport { MyApp } from './app.component';\n\nimport { AboutPage } from '../pages/about/about';\nimport { ContactPage } from '../pages/contact/contact';\nimport { HomePage } from '../pages/home/home';\nimport { TabsPage } from '../pages/tabs/tabs';\n\nimport { StatusBar } from '@ionic-native/status-bar';\nimport { SplashScreen } from '@ionic-native/splash-screen';\nimport {IndexListModule} from \"../components/index\";\nimport {DemoPage} from \"../pages/demo/demo\";\nimport {HttpModule} from \"@angular/http\";\n\n@NgModule({\n declarations: [\n MyApp,\n AboutPage,\n ContactPage,\n HomePage,\n TabsPage,\n DemoPage\n ],\n imports: [\n BrowserModule,\n IonicModule.forRoot(MyApp),\n HttpModule,\n IndexListModule\n ],\n bootstrap: [IonicApp],\n entryComponents: [\n MyApp,\n AboutPage,\n ContactPage,\n HomePage,\n TabsPage,\n DemoPage\n ],\n providers: [\n StatusBar,\n SplashScreen,\n {provide: ErrorHandler, useClass: IonicErrorHandler}\n ]\n})\nexport class AppModule {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/app.module.ts","import { Component } from '@angular/core';\nimport { Platform } from 'ionic-angular';\nimport { StatusBar } from '@ionic-native/status-bar';\nimport { SplashScreen } from '@ionic-native/splash-screen';\n\nimport { TabsPage } from '../pages/tabs/tabs';\n\n@Component({\n templateUrl: 'app.html'\n})\nexport class MyApp {\n rootPage:any = TabsPage;\n\n constructor(platform: Platform, statusBar: StatusBar, splashScreen: SplashScreen) {\n platform.ready().then(() => {\n // Okay, so the platform is ready and our plugins are available.\n // Here you can do any higher level native things you might need.\n statusBar.styleDefault();\n splashScreen.hide();\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/app.component.ts","export {IndexListModule} from './index-list/index-list.module';\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/index.ts","import { NgModule } from '@angular/core';\nimport { IndexListComponent } from './index-list';\nimport {IndexSectionComponent} from './index-section';\nimport {CommonModule} from '@angular/common';\nimport {IndexCellComponent} from './index-cell';\n\n@NgModule({\n declarations: [\n IndexListComponent,\n IndexSectionComponent,\n IndexCellComponent\n ],\n imports: [\n CommonModule,\n ],\n exports: [\n IndexListComponent,\n IndexSectionComponent,\n IndexCellComponent\n ]\n})\nexport class IndexListModule {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/index-list/index-list.module.ts","import {\n AfterViewChecked, Component, ContentChildren, ElementRef, Input, QueryList,\n ViewChild\n} from '@angular/core';\nimport {IndexSectionComponent} from './index-section';\n\n@Component({\n selector: 'ion-index-list',\n template: `\n \n
\n \n \n
\n\n
\n \n
\n {{_currentIndicator}}\n
\n
\n `,\n styles: [`\n ::-webkit-scrollbar {\n width: 0\n }\n\n .index-list{\n width: 100%;\n display: flex;\n justify-content: space-between;\n height: 100%;\n overflow: hidden;\n transform:translate(0,0);\n }\n\n .index-list-wrapper{\n width: 100%;\n overflow-y: scroll;\n -webkit-overflow-scrolling: touch;\n }\n\n .index-list-nav{\n width:6%;\n position: absolute;\n top: 44px;\n right: 0;\n display: flex;\n justify-content:center;\n flex-direction: column;\n text-align: center;\n background-color: rgba(245, 245, 245, 0.3);\n height: 100%;\n z-index: 1000;\n -webkit-touch-callout: none;\n }\n\n .index-bar{\n padding: 2px 6px;\n font-size: 8px;\n }\n\n .index-list-nav-activate{\n color: red;\n }\n\n .modal {\n top: 50%;\n left: 50%;\n z-index: 100;\n position: fixed;\n pointer-events: none;\n width: 20vw;\n height: 20vw;\n line-height: 20vw;\n margin-left: -10vw;\n margin-top: -10vw;\n color: #fff;\n font-size: 3em;\n text-align: center;\n border-radius: 8px;\n background-color: rgba(0, 0, 0, 0.52);\n -webkit-box-shadow: 0 0 4px 1px rgba(0, 0, 0, 0.16);\n box-shadow: 0 0 4px 1px rgba(0, 0, 0, 0.16);\n -webkit-transition: opacity .5s;\n -o-transition: opacity .5s;\n transition: opacity .5s;\n opacity: 0;\n }\n\n .modal.show {\n opacity: 1;\n }\n `]\n})\nexport class IndexListComponent implements AfterViewChecked{\n\n\n _currentIndicator ;\n\n _flag= true;\n _indexes: any[]= []; //右侧导航\n _offsetTops: Array = []; // 每个IndexSection 的offsetTop\n _navOffsetX: 0;\n _indicatorTime: any = null;\n _showModal = false;\n\n\n @Input() hasTop:boolean = false;\n\n @ViewChild('top') top: ElementRef;\n @ContentChildren(IndexSectionComponent) _listOfIndexSection: QueryList;\n @ViewChild('scrollContent') scrollContent: ElementRef;\n\n constructor(){\n\n }\n\n ngAfterViewChecked(): void {\n if (this._flag && this._listOfIndexSection){\n this._listOfIndexSection.forEach((section) => {\n this._indexes.push(section.index);\n const offsetTop = section.getElementRef().nativeElement.offsetTop;\n this._offsetTops.push(offsetTop);\n\n });\n this._flag = false;\n\n if(this.hasTop) {\n this._indexes.unshift('#');\n this._offsetTops.unshift(0);\n\n }\n }\n }\n\n onScroll(e:any) {\n e.preventDefault();\n const scrollTopOffsetTop = this.scrollContent.nativeElement.scrollTop;\n\n this._offsetTops.forEach((v, i) => {\n if (scrollTopOffsetTop >= v){\n this._currentIndicator = this._indexes[i];\n\n //\n this.setCurrentSection(this._currentIndicator);\n }\n\n });\n }\n\n touchstart(e:any){\n this._navOffsetX = e.changedTouches[0].clientX;\n this.scrollList(e.changedTouches[0].clientY);\n }\n\n touchmove(e:any){\n e.preventDefault();\n this.scrollList(e.changedTouches[0].clientY);\n }\n\n touchend(e:any){\n this._indicatorTime = setTimeout(() => {\n this._showModal = false;\n this._currentIndicator = '';\n }, 500);\n }\n\n scrollList(y:any){\n\n const currentItem:any = document.elementFromPoint(this._navOffsetX, y);\n if (!currentItem || !currentItem.classList.contains('index-bar')) {\n return;\n }\n this._currentIndicator = currentItem['innerText'];\n const index = this._indexes.indexOf(this._currentIndicator);\n\n this.scrollContent.nativeElement.scrollTop = this._offsetTops[index];\n\n\n this._showModal = true;\n if (this._indicatorTime) {\n clearTimeout(this._indicatorTime);\n }\n }\n\n\n setCurrentSection(currentindex:string) {\n const listArray = this._listOfIndexSection.toArray();\n listArray.forEach((section)=>{\n if(section.index === currentindex ){\n section._current = true;\n }else{\n section._current = false;\n }\n })\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/index-list/index-list.ts"],"sourceRoot":""}
--------------------------------------------------------------------------------
/www/build/main.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["../../node_modules/@angular/core/esm5 lazy","../../src lazy","../../src/pages/tabs/tabs.ts","../../src/pages/about/about.ts","../../src/pages/contact/contact.ts","../../src/pages/home/home.ts","../../src/pages/demo/demo.ts","../../src/components/index-list/index-section.ts","../../src/components/index-list/index-cell.ts","../../src/app/main.ts","../../src/app/app.module.ts","../../src/app/app.component.ts","../../src/components/index.ts","../../src/components/index-list/index-list.module.ts","../../src/components/index-list/index-list.ts"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncatched exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 109;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@angular/core/esm5 lazy\n// module id = 109\n// module chunks = 0","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncatched exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 151;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src lazy\n// module id = 151\n// module chunks = 0","import { Component } from '@angular/core';\n\nimport { AboutPage } from '../about/about';\nimport { ContactPage } from '../contact/contact';\nimport { HomePage } from '../home/home';\nimport {DemoPage} from \"../demo/demo\";\n\n@Component({\n templateUrl: 'tabs.html'\n})\nexport class TabsPage {\n\n tab1Root = HomePage;\n tab2Root = AboutPage;\n tab3Root = ContactPage;\n tab4Root = DemoPage;\n\n\n constructor() {\n\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/tabs/tabs.ts","import { Component } from '@angular/core';\nimport { NavController } from 'ionic-angular';\nimport {Http} from \"@angular/http\";\nimport \"rxjs/add/operator/map\";\n\n@Component({\n selector: 'page-about',\n templateUrl: 'about.html'\n})\nexport class AboutPage {\n\n indexs = ['A','B','C','F','G','J','K','L','O','P','Q','R','S','T','U','V','W','X','Y','Z'];\n\n sections:any[] = Array.apply(null, Array(50)).map(function(item, i) {\n return 0;\n });\n\n constructor(public navCtrl: NavController, public http: Http) {\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/about/about.ts","import { Component } from '@angular/core';\nimport { NavController } from 'ionic-angular';\n\n@Component({\n selector: 'page-contact',\n templateUrl: 'contact.html'\n})\nexport class ContactPage {\n\n indexs = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];\n\n sections:any[] = Array.apply(null, Array(10)).map(function(item, i) {\n return 0;\n });\n\n constructor(public navCtrl: NavController) {\n\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/contact/contact.ts","import { Component } from '@angular/core';\nimport { NavController } from 'ionic-angular';\n\n@Component({\n selector: 'page-home',\n templateUrl: 'home.html'\n})\nexport class HomePage {\n indexs = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];\n\n sections:any[] = Array.apply(null, Array(10)).map(function(item, i) {\n return 0;\n });\n\n constructor(public navCtrl: NavController) {\n\n\n }\n\n\n\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/home/home.ts","import { Component } from '@angular/core';\nimport { NavController } from 'ionic-angular';\n\n@Component({\n selector: 'page-demo',\n templateUrl: 'demo.html'\n})\nexport class DemoPage {\n indexs = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];\n\n sections:any[] = Array.apply(null, Array(10)).map(function(item, i) {\n return 0;\n });\n\n constructor(public navCtrl: NavController) {\n\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/demo/demo.ts","import {\n AfterViewChecked, Component, ContentChildren, ElementRef, Input,\n QueryList\n} from '@angular/core';\nimport {IndexCellComponent} from './index-cell';\n\n@Component({\n selector: 'ion-index-section',\n template: `\n \n \n
\n {{index}}\n
\n\n \n
\n \n\n \n
\n
\n `,\n styles: [`\n .index-section-index{\n margin: 0;\n padding: 2px 10px 2px 10px;\n background-color: #fafafa;\n border-bottom: 1px solid #dedede;\n }\n\n .index-section-main{\n /*border-bottom: 1px solid #dedede;*/\n }\n\n .index-section-current .index-section-index{\n position: sticky;\n position: -webkit-sticky;\n top: 0px;\n left: 0px;\n width: 100%;\n z-index: 3;\n transform: translateZ(0px);\n }\n `]\n})\nexport class IndexSectionComponent implements AfterViewChecked {\n\n _current=false;\n\n @Input() index: string;\n\n @ContentChildren(IndexCellComponent) _listOfIndexCell: QueryList;\n\n constructor(public elementRef: ElementRef) { }\n\n getElementRef():ElementRef{\n return this.elementRef;\n }\n\n ngAfterViewChecked(): void {\n // setTimeout(()=>{\n // if (this._listOfIndexCell && this._listOfIndexCell.length) {\n // const listArray = this._listOfIndexCell.toArray();\n // listArray[listArray.length - 1]._lastItem = true;\n // }\n // })\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/index-list/index-section.ts","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'ion-index-cell',\n template: `\n \n `,\n styles: [`\n .index-cell{\n background-color: #fff;\n padding-left:10px\n }\n\n .index-cell-item{\n box-sizing: border-box;\n color: inherit;\n min-height: 48px;\n display: block;\n overflow: hidden;\n position: relative;\n text-decoration: none;\n border-bottom: 1px solid #dcd8d8;\n width: 100%;\n display: flex;\n align-items: center;\n }\n `]\n})\nexport class IndexCellComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() { }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/index-list/index-cell.ts","import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app.module';\n\nplatformBrowserDynamic().bootstrapModule(AppModule);\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/main.ts","import { NgModule, ErrorHandler } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';\nimport { MyApp } from './app.component';\n\nimport { AboutPage } from '../pages/about/about';\nimport { ContactPage } from '../pages/contact/contact';\nimport { HomePage } from '../pages/home/home';\nimport { TabsPage } from '../pages/tabs/tabs';\n\nimport { StatusBar } from '@ionic-native/status-bar';\nimport { SplashScreen } from '@ionic-native/splash-screen';\nimport {IndexListModule} from \"../components/index\";\nimport {DemoPage} from \"../pages/demo/demo\";\nimport {HttpModule} from \"@angular/http\";\n\n@NgModule({\n declarations: [\n MyApp,\n AboutPage,\n ContactPage,\n HomePage,\n TabsPage,\n DemoPage\n ],\n imports: [\n BrowserModule,\n IonicModule.forRoot(MyApp),\n HttpModule,\n IndexListModule\n ],\n bootstrap: [IonicApp],\n entryComponents: [\n MyApp,\n AboutPage,\n ContactPage,\n HomePage,\n TabsPage,\n DemoPage\n ],\n providers: [\n StatusBar,\n SplashScreen,\n {provide: ErrorHandler, useClass: IonicErrorHandler}\n ]\n})\nexport class AppModule {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/app.module.ts","import { Component } from '@angular/core';\nimport { Platform } from 'ionic-angular';\nimport { StatusBar } from '@ionic-native/status-bar';\nimport { SplashScreen } from '@ionic-native/splash-screen';\n\nimport { TabsPage } from '../pages/tabs/tabs';\n\n@Component({\n templateUrl: 'app.html'\n})\nexport class MyApp {\n rootPage:any = TabsPage;\n\n constructor(platform: Platform, statusBar: StatusBar, splashScreen: SplashScreen) {\n platform.ready().then(() => {\n // Okay, so the platform is ready and our plugins are available.\n // Here you can do any higher level native things you might need.\n statusBar.styleDefault();\n splashScreen.hide();\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/app.component.ts","export {IndexListModule} from './index-list/index-list.module';\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/index.ts","import { NgModule } from '@angular/core';\nimport { IndexListComponent } from './index-list';\nimport {IndexSectionComponent} from './index-section';\nimport {CommonModule} from '@angular/common';\nimport {IndexCellComponent} from './index-cell';\n\n@NgModule({\n declarations: [\n IndexListComponent,\n IndexSectionComponent,\n IndexCellComponent\n ],\n imports: [\n CommonModule,\n ],\n exports: [\n IndexListComponent,\n IndexSectionComponent,\n IndexCellComponent\n ]\n})\nexport class IndexListModule {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/index-list/index-list.module.ts","import {\n AfterViewChecked, Component, ContentChildren, ElementRef, Input, QueryList,\n ViewChild\n} from '@angular/core';\nimport {IndexSectionComponent} from './index-section';\n\n@Component({\n selector: 'ion-index-list',\n template: `\n \n
\n \n \n
\n\n
\n \n
\n {{_currentIndicator}}\n
\n
\n `,\n styles: [`\n ::-webkit-scrollbar {\n width: 0\n }\n\n .index-list{\n width: 100%;\n display: flex;\n justify-content: space-between;\n height: 100%;\n overflow: hidden;\n transform:translate(0,0);\n }\n\n .index-list-wrapper{\n width: 100%;\n overflow-y: scroll;\n -webkit-overflow-scrolling: touch;\n }\n\n .index-list-nav{\n width:6%;\n position: absolute;\n top: 44px;\n right: 0;\n display: flex;\n justify-content:center;\n flex-direction: column;\n text-align: center;\n background-color: rgba(245, 245, 245, 0.3);\n height: 100%;\n z-index: 1000;\n -webkit-touch-callout: none;\n }\n\n .index-bar{\n padding: 2px 6px;\n font-size: 8px;\n }\n\n .index-list-nav-activate{\n color: red;\n }\n\n .modal {\n top: 50%;\n left: 50%;\n z-index: 100;\n position: fixed;\n pointer-events: none;\n width: 20vw;\n height: 20vw;\n line-height: 20vw;\n margin-left: -10vw;\n margin-top: -10vw;\n color: #fff;\n font-size: 3em;\n text-align: center;\n border-radius: 8px;\n background-color: rgba(0, 0, 0, 0.52);\n -webkit-box-shadow: 0 0 4px 1px rgba(0, 0, 0, 0.16);\n box-shadow: 0 0 4px 1px rgba(0, 0, 0, 0.16);\n -webkit-transition: opacity .5s;\n -o-transition: opacity .5s;\n transition: opacity .5s;\n opacity: 0;\n }\n\n .modal.show {\n opacity: 1;\n }\n `]\n})\nexport class IndexListComponent implements AfterViewChecked{\n\n\n _currentIndicator ;\n\n _flag= true;\n _indexes: any[]= []; //右侧导航\n _offsetTops: Array = []; // 每个IndexSection 的offsetTop\n _navOffsetX: 0;\n _indicatorTime: any = null;\n _showModal = false;\n\n\n @Input() hasTop:boolean = false;\n\n @ViewChild('top') top: ElementRef;\n @ContentChildren(IndexSectionComponent) _listOfIndexSection: QueryList;\n @ViewChild('scrollContent') scrollContent: ElementRef;\n\n constructor(){\n\n }\n\n ngAfterViewChecked(): void {\n if (this._flag && this._listOfIndexSection){\n this._listOfIndexSection.forEach((section) => {\n this._indexes.push(section.index);\n const offsetTop = section.getElementRef().nativeElement.offsetTop;\n this._offsetTops.push(offsetTop);\n\n });\n this._flag = false;\n\n if(this.hasTop) {\n this._indexes.unshift('#');\n this._offsetTops.unshift(0);\n\n }\n }\n }\n\n onScroll(e:any) {\n e.preventDefault();\n const scrollTopOffsetTop = this.scrollContent.nativeElement.scrollTop;\n\n this._offsetTops.forEach((v, i) => {\n if (scrollTopOffsetTop >= v){\n this._currentIndicator = this._indexes[i];\n\n //\n this.setCurrentSection(this._currentIndicator);\n }\n\n });\n }\n\n touchstart(e:any){\n this._navOffsetX = e.changedTouches[0].clientX;\n this.scrollList(e.changedTouches[0].clientY);\n }\n\n touchmove(e:any){\n e.preventDefault();\n this.scrollList(e.changedTouches[0].clientY);\n }\n\n touchend(e:any){\n this._indicatorTime = setTimeout(() => {\n this._showModal = false;\n this._currentIndicator = '';\n }, 500);\n }\n\n scrollList(y:any){\n\n const currentItem:any = document.elementFromPoint(this._navOffsetX, y);\n if (!currentItem || !currentItem.classList.contains('index-bar')) {\n return;\n }\n this._currentIndicator = currentItem['innerText'];\n const index = this._indexes.indexOf(this._currentIndicator);\n\n this.scrollContent.nativeElement.scrollTop = this._offsetTops[index];\n\n\n this._showModal = true;\n if (this._indicatorTime) {\n clearTimeout(this._indicatorTime);\n }\n }\n\n\n setCurrentSection(currentindex:string) {\n const listArray = this._listOfIndexSection.toArray();\n listArray.forEach((section)=>{\n if(section.index === currentindex ){\n section._current = true;\n }else{\n section._current = false;\n }\n })\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/index-list/index-list.ts"],"sourceRoot":""}
--------------------------------------------------------------------------------
/www/build/main.js:
--------------------------------------------------------------------------------
1 | webpackJsonp([0],{
2 |
3 | /***/ 109:
4 | /***/ (function(module, exports) {
5 |
6 | function webpackEmptyAsyncContext(req) {
7 | // Here Promise.resolve().then() is used instead of new Promise() to prevent
8 | // uncatched exception popping up in devtools
9 | return Promise.resolve().then(function() {
10 | throw new Error("Cannot find module '" + req + "'.");
11 | });
12 | }
13 | webpackEmptyAsyncContext.keys = function() { return []; };
14 | webpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;
15 | module.exports = webpackEmptyAsyncContext;
16 | webpackEmptyAsyncContext.id = 109;
17 |
18 | /***/ }),
19 |
20 | /***/ 151:
21 | /***/ (function(module, exports) {
22 |
23 | function webpackEmptyAsyncContext(req) {
24 | // Here Promise.resolve().then() is used instead of new Promise() to prevent
25 | // uncatched exception popping up in devtools
26 | return Promise.resolve().then(function() {
27 | throw new Error("Cannot find module '" + req + "'.");
28 | });
29 | }
30 | webpackEmptyAsyncContext.keys = function() { return []; };
31 | webpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;
32 | module.exports = webpackEmptyAsyncContext;
33 | webpackEmptyAsyncContext.id = 151;
34 |
35 | /***/ }),
36 |
37 | /***/ 195:
38 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
39 |
40 | "use strict";
41 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return TabsPage; });
42 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
43 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__about_about__ = __webpack_require__(196);
44 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__contact_contact__ = __webpack_require__(198);
45 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__home_home__ = __webpack_require__(199);
46 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__demo_demo__ = __webpack_require__(200);
47 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
48 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
49 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
50 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
51 | return c > 3 && r && Object.defineProperty(target, key, r), r;
52 | };
53 | var __metadata = (this && this.__metadata) || function (k, v) {
54 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
55 | };
56 |
57 |
58 |
59 |
60 |
61 | var TabsPage = (function () {
62 | function TabsPage() {
63 | this.tab1Root = __WEBPACK_IMPORTED_MODULE_3__home_home__["a" /* HomePage */];
64 | this.tab2Root = __WEBPACK_IMPORTED_MODULE_1__about_about__["a" /* AboutPage */];
65 | this.tab3Root = __WEBPACK_IMPORTED_MODULE_2__contact_contact__["a" /* ContactPage */];
66 | this.tab4Root = __WEBPACK_IMPORTED_MODULE_4__demo_demo__["a" /* DemoPage */];
67 | }
68 | TabsPage = __decorate([
69 | Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["m" /* Component */])({template:/*ion-inline-start:"/Users/CK/git/ionic3-index-list/src/pages/tabs/tabs.html"*/'\n \n \n \n \n\n \n'/*ion-inline-end:"/Users/CK/git/ionic3-index-list/src/pages/tabs/tabs.html"*/
70 | }),
71 | __metadata("design:paramtypes", [])
72 | ], TabsPage);
73 | return TabsPage;
74 | }());
75 |
76 | //# sourceMappingURL=tabs.js.map
77 |
78 | /***/ }),
79 |
80 | /***/ 196:
81 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
82 |
83 | "use strict";
84 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AboutPage; });
85 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
86 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(30);
87 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__angular_http__ = __webpack_require__(197);
88 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_rxjs_add_operator_map__ = __webpack_require__(278);
89 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_rxjs_add_operator_map___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_rxjs_add_operator_map__);
90 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
91 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
92 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
93 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
94 | return c > 3 && r && Object.defineProperty(target, key, r), r;
95 | };
96 | var __metadata = (this && this.__metadata) || function (k, v) {
97 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
98 | };
99 |
100 |
101 |
102 |
103 | var AboutPage = (function () {
104 | function AboutPage(navCtrl, http) {
105 | this.navCtrl = navCtrl;
106 | this.http = http;
107 | this.indexs = ['A', 'B', 'C', 'F', 'G', 'J', 'K', 'L', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
108 | this.sections = Array.apply(null, Array(50)).map(function (item, i) {
109 | return 0;
110 | });
111 | }
112 | AboutPage = __decorate([
113 | Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["m" /* Component */])({
114 | selector: 'page-about',template:/*ion-inline-start:"/Users/CK/git/ionic3-index-list/src/pages/about/about.html"*/'\n \n \n About\n \n \n \n\n\n \n \n \n \n \n \n \n section\n
\n \n \n \n \n \n \n'/*ion-inline-end:"/Users/CK/git/ionic3-index-list/src/pages/about/about.html"*/
115 | }),
116 | __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["d" /* NavController */], __WEBPACK_IMPORTED_MODULE_2__angular_http__["a" /* Http */]])
117 | ], AboutPage);
118 | return AboutPage;
119 | }());
120 |
121 | //# sourceMappingURL=about.js.map
122 |
123 | /***/ }),
124 |
125 | /***/ 198:
126 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
127 |
128 | "use strict";
129 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ContactPage; });
130 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
131 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(30);
132 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
133 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
134 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
135 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
136 | return c > 3 && r && Object.defineProperty(target, key, r), r;
137 | };
138 | var __metadata = (this && this.__metadata) || function (k, v) {
139 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
140 | };
141 |
142 |
143 | var ContactPage = (function () {
144 | function ContactPage(navCtrl) {
145 | this.navCtrl = navCtrl;
146 | this.indexs = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
147 | this.sections = Array.apply(null, Array(10)).map(function (item, i) {
148 | return 0;
149 | });
150 | }
151 | ContactPage = __decorate([
152 | Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["m" /* Component */])({
153 | selector: 'page-contact',template:/*ion-inline-start:"/Users/CK/git/ionic3-index-list/src/pages/contact/contact.html"*/'\n \n \n Contact\n \n \n \n\n\n \n \n \n
\n \n \n \n \n section\n \n \n\n \n \n\n \n\n \n'/*ion-inline-end:"/Users/CK/git/ionic3-index-list/src/pages/contact/contact.html"*/
154 | }),
155 | __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["d" /* NavController */]])
156 | ], ContactPage);
157 | return ContactPage;
158 | }());
159 |
160 | //# sourceMappingURL=contact.js.map
161 |
162 | /***/ }),
163 |
164 | /***/ 199:
165 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
166 |
167 | "use strict";
168 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return HomePage; });
169 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
170 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(30);
171 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
172 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
173 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
174 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
175 | return c > 3 && r && Object.defineProperty(target, key, r), r;
176 | };
177 | var __metadata = (this && this.__metadata) || function (k, v) {
178 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
179 | };
180 |
181 |
182 | var HomePage = (function () {
183 | function HomePage(navCtrl) {
184 | this.navCtrl = navCtrl;
185 | this.indexs = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
186 | this.sections = Array.apply(null, Array(10)).map(function (item, i) {
187 | return 0;
188 | });
189 | }
190 | HomePage = __decorate([
191 | Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["m" /* Component */])({
192 | selector: 'page-home',template:/*ion-inline-start:"/Users/CK/git/ionic3-index-list/src/pages/home/home.html"*/'\n \n Home \n \n \n\n\n\n\n\n \n \n \n \n \n \n 新的朋友\n \n \n \n 群聊\n \n \n \n 标签\n \n \n \n 公众号\n \n \n
\n \n \n \n \n section\n \n \n\n \n \n\n\n \n\n \n'/*ion-inline-end:"/Users/CK/git/ionic3-index-list/src/pages/home/home.html"*/
193 | }),
194 | __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["d" /* NavController */]])
195 | ], HomePage);
196 | return HomePage;
197 | }());
198 |
199 | //# sourceMappingURL=home.js.map
200 |
201 | /***/ }),
202 |
203 | /***/ 200:
204 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
205 |
206 | "use strict";
207 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return DemoPage; });
208 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
209 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(30);
210 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
211 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
212 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
213 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
214 | return c > 3 && r && Object.defineProperty(target, key, r), r;
215 | };
216 | var __metadata = (this && this.__metadata) || function (k, v) {
217 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
218 | };
219 |
220 |
221 | var DemoPage = (function () {
222 | function DemoPage(navCtrl) {
223 | this.navCtrl = navCtrl;
224 | this.indexs = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
225 | this.sections = Array.apply(null, Array(10)).map(function (item, i) {
226 | return 0;
227 | });
228 | }
229 | DemoPage = __decorate([
230 | Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["m" /* Component */])({
231 | selector: 'page-demo',template:/*ion-inline-start:"/Users/CK/git/ionic3-index-list/src/pages/demo/demo.html"*/'\n \n Home \n \n \n\n\n\n\n\n \n \n \n \n \n section\n \n \n \n \n\n\n \n\n \n'/*ion-inline-end:"/Users/CK/git/ionic3-index-list/src/pages/demo/demo.html"*/
232 | }),
233 | __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["d" /* NavController */]])
234 | ], DemoPage);
235 | return DemoPage;
236 | }());
237 |
238 | //# sourceMappingURL=demo.js.map
239 |
240 | /***/ }),
241 |
242 | /***/ 201:
243 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
244 |
245 | "use strict";
246 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return IndexSectionComponent; });
247 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
248 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__index_cell__ = __webpack_require__(202);
249 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
250 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
251 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
252 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
253 | return c > 3 && r && Object.defineProperty(target, key, r), r;
254 | };
255 | var __metadata = (this && this.__metadata) || function (k, v) {
256 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
257 | };
258 |
259 |
260 | var IndexSectionComponent = (function () {
261 | function IndexSectionComponent(elementRef) {
262 | this.elementRef = elementRef;
263 | this._current = false;
264 | }
265 | IndexSectionComponent.prototype.getElementRef = function () {
266 | return this.elementRef;
267 | };
268 | IndexSectionComponent.prototype.ngAfterViewChecked = function () {
269 | // setTimeout(()=>{
270 | // if (this._listOfIndexCell && this._listOfIndexCell.length) {
271 | // const listArray = this._listOfIndexCell.toArray();
272 | // listArray[listArray.length - 1]._lastItem = true;
273 | // }
274 | // })
275 | };
276 | __decorate([
277 | Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["D" /* Input */])(),
278 | __metadata("design:type", String)
279 | ], IndexSectionComponent.prototype, "index", void 0);
280 | __decorate([
281 | Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["r" /* ContentChildren */])(__WEBPACK_IMPORTED_MODULE_1__index_cell__["a" /* IndexCellComponent */]),
282 | __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["T" /* QueryList */])
283 | ], IndexSectionComponent.prototype, "_listOfIndexCell", void 0);
284 | IndexSectionComponent = __decorate([
285 | Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["m" /* Component */])({
286 | selector: 'ion-index-section',
287 | template: "\n \n \n
\n {{index}}\n
\n\n \n
\n \n\n \n
\n
\n ",
288 | styles: ["\n .index-section-index{\n margin: 0;\n padding: 2px 10px 2px 10px;\n background-color: #fafafa;\n border-bottom: 1px solid #dedede;\n }\n\n .index-section-main{\n /*border-bottom: 1px solid #dedede;*/\n }\n\n .index-section-current .index-section-index{\n position: sticky;\n position: -webkit-sticky;\n top: 0px;\n left: 0px;\n width: 100%;\n z-index: 3;\n transform: translateZ(0px);\n }\n "]
289 | }),
290 | __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_0__angular_core__["t" /* ElementRef */]])
291 | ], IndexSectionComponent);
292 | return IndexSectionComponent;
293 | }());
294 |
295 | //# sourceMappingURL=index-section.js.map
296 |
297 | /***/ }),
298 |
299 | /***/ 202:
300 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
301 |
302 | "use strict";
303 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return IndexCellComponent; });
304 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
305 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
306 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
307 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
308 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
309 | return c > 3 && r && Object.defineProperty(target, key, r), r;
310 | };
311 | var __metadata = (this && this.__metadata) || function (k, v) {
312 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
313 | };
314 |
315 | var IndexCellComponent = (function () {
316 | function IndexCellComponent() {
317 | }
318 | IndexCellComponent.prototype.ngOnInit = function () { };
319 | IndexCellComponent = __decorate([
320 | Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["m" /* Component */])({
321 | selector: 'ion-index-cell',
322 | template: "\n \n ",
323 | styles: ["\n .index-cell{\n background-color: #fff;\n padding-left:10px\n }\n\n .index-cell-item{\n box-sizing: border-box;\n color: inherit;\n min-height: 48px;\n display: block;\n overflow: hidden;\n position: relative;\n text-decoration: none;\n border-bottom: 1px solid #dcd8d8;\n width: 100%;\n display: flex;\n align-items: center;\n }\n "]
324 | }),
325 | __metadata("design:paramtypes", [])
326 | ], IndexCellComponent);
327 | return IndexCellComponent;
328 | }());
329 |
330 | //# sourceMappingURL=index-cell.js.map
331 |
332 | /***/ }),
333 |
334 | /***/ 203:
335 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
336 |
337 | "use strict";
338 | Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
339 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_platform_browser_dynamic__ = __webpack_require__(204);
340 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__app_module__ = __webpack_require__(227);
341 |
342 |
343 | Object(__WEBPACK_IMPORTED_MODULE_0__angular_platform_browser_dynamic__["a" /* platformBrowserDynamic */])().bootstrapModule(__WEBPACK_IMPORTED_MODULE_1__app_module__["a" /* AppModule */]);
344 | //# sourceMappingURL=main.js.map
345 |
346 | /***/ }),
347 |
348 | /***/ 227:
349 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
350 |
351 | "use strict";
352 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AppModule; });
353 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
354 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__angular_platform_browser__ = __webpack_require__(26);
355 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_ionic_angular__ = __webpack_require__(30);
356 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__app_component__ = __webpack_require__(269);
357 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__pages_about_about__ = __webpack_require__(196);
358 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__pages_contact_contact__ = __webpack_require__(198);
359 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__pages_home_home__ = __webpack_require__(199);
360 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__pages_tabs_tabs__ = __webpack_require__(195);
361 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__ionic_native_status_bar__ = __webpack_require__(191);
362 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__ionic_native_splash_screen__ = __webpack_require__(194);
363 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__components_index__ = __webpack_require__(279);
364 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__pages_demo_demo__ = __webpack_require__(200);
365 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__angular_http__ = __webpack_require__(197);
366 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
367 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
368 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
369 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
370 | return c > 3 && r && Object.defineProperty(target, key, r), r;
371 | };
372 |
373 |
374 |
375 |
376 |
377 |
378 |
379 |
380 |
381 |
382 |
383 |
384 |
385 | var AppModule = (function () {
386 | function AppModule() {
387 | }
388 | AppModule = __decorate([
389 | Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["I" /* NgModule */])({
390 | declarations: [
391 | __WEBPACK_IMPORTED_MODULE_3__app_component__["a" /* MyApp */],
392 | __WEBPACK_IMPORTED_MODULE_4__pages_about_about__["a" /* AboutPage */],
393 | __WEBPACK_IMPORTED_MODULE_5__pages_contact_contact__["a" /* ContactPage */],
394 | __WEBPACK_IMPORTED_MODULE_6__pages_home_home__["a" /* HomePage */],
395 | __WEBPACK_IMPORTED_MODULE_7__pages_tabs_tabs__["a" /* TabsPage */],
396 | __WEBPACK_IMPORTED_MODULE_11__pages_demo_demo__["a" /* DemoPage */]
397 | ],
398 | imports: [
399 | __WEBPACK_IMPORTED_MODULE_1__angular_platform_browser__["a" /* BrowserModule */],
400 | __WEBPACK_IMPORTED_MODULE_2_ionic_angular__["c" /* IonicModule */].forRoot(__WEBPACK_IMPORTED_MODULE_3__app_component__["a" /* MyApp */], {}, {
401 | links: []
402 | }),
403 | __WEBPACK_IMPORTED_MODULE_12__angular_http__["b" /* HttpModule */],
404 | __WEBPACK_IMPORTED_MODULE_10__components_index__["a" /* IndexListModule */]
405 | ],
406 | bootstrap: [__WEBPACK_IMPORTED_MODULE_2_ionic_angular__["a" /* IonicApp */]],
407 | entryComponents: [
408 | __WEBPACK_IMPORTED_MODULE_3__app_component__["a" /* MyApp */],
409 | __WEBPACK_IMPORTED_MODULE_4__pages_about_about__["a" /* AboutPage */],
410 | __WEBPACK_IMPORTED_MODULE_5__pages_contact_contact__["a" /* ContactPage */],
411 | __WEBPACK_IMPORTED_MODULE_6__pages_home_home__["a" /* HomePage */],
412 | __WEBPACK_IMPORTED_MODULE_7__pages_tabs_tabs__["a" /* TabsPage */],
413 | __WEBPACK_IMPORTED_MODULE_11__pages_demo_demo__["a" /* DemoPage */]
414 | ],
415 | providers: [
416 | __WEBPACK_IMPORTED_MODULE_8__ionic_native_status_bar__["a" /* StatusBar */],
417 | __WEBPACK_IMPORTED_MODULE_9__ionic_native_splash_screen__["a" /* SplashScreen */],
418 | { provide: __WEBPACK_IMPORTED_MODULE_0__angular_core__["u" /* ErrorHandler */], useClass: __WEBPACK_IMPORTED_MODULE_2_ionic_angular__["b" /* IonicErrorHandler */] }
419 | ]
420 | })
421 | ], AppModule);
422 | return AppModule;
423 | }());
424 |
425 | //# sourceMappingURL=app.module.js.map
426 |
427 | /***/ }),
428 |
429 | /***/ 269:
430 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
431 |
432 | "use strict";
433 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MyApp; });
434 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
435 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_ionic_angular__ = __webpack_require__(30);
436 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__ionic_native_status_bar__ = __webpack_require__(191);
437 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__ionic_native_splash_screen__ = __webpack_require__(194);
438 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__pages_tabs_tabs__ = __webpack_require__(195);
439 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
440 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
441 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
442 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
443 | return c > 3 && r && Object.defineProperty(target, key, r), r;
444 | };
445 | var __metadata = (this && this.__metadata) || function (k, v) {
446 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
447 | };
448 |
449 |
450 |
451 |
452 |
453 | var MyApp = (function () {
454 | function MyApp(platform, statusBar, splashScreen) {
455 | this.rootPage = __WEBPACK_IMPORTED_MODULE_4__pages_tabs_tabs__["a" /* TabsPage */];
456 | platform.ready().then(function () {
457 | // Okay, so the platform is ready and our plugins are available.
458 | // Here you can do any higher level native things you might need.
459 | statusBar.styleDefault();
460 | splashScreen.hide();
461 | });
462 | }
463 | MyApp = __decorate([
464 | Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["m" /* Component */])({template:/*ion-inline-start:"/Users/CK/git/ionic3-index-list/src/app/app.html"*/' \n'/*ion-inline-end:"/Users/CK/git/ionic3-index-list/src/app/app.html"*/
465 | }),
466 | __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1_ionic_angular__["e" /* Platform */], __WEBPACK_IMPORTED_MODULE_2__ionic_native_status_bar__["a" /* StatusBar */], __WEBPACK_IMPORTED_MODULE_3__ionic_native_splash_screen__["a" /* SplashScreen */]])
467 | ], MyApp);
468 | return MyApp;
469 | }());
470 |
471 | //# sourceMappingURL=app.component.js.map
472 |
473 | /***/ }),
474 |
475 | /***/ 279:
476 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
477 |
478 | "use strict";
479 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index_list_index_list_module__ = __webpack_require__(280);
480 | /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return __WEBPACK_IMPORTED_MODULE_0__index_list_index_list_module__["a"]; });
481 |
482 | //# sourceMappingURL=index.js.map
483 |
484 | /***/ }),
485 |
486 | /***/ 280:
487 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
488 |
489 | "use strict";
490 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return IndexListModule; });
491 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
492 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__index_list__ = __webpack_require__(281);
493 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__index_section__ = __webpack_require__(201);
494 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__angular_common__ = __webpack_require__(34);
495 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__index_cell__ = __webpack_require__(202);
496 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
497 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
498 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
499 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
500 | return c > 3 && r && Object.defineProperty(target, key, r), r;
501 | };
502 |
503 |
504 |
505 |
506 |
507 | var IndexListModule = (function () {
508 | function IndexListModule() {
509 | }
510 | IndexListModule = __decorate([
511 | Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["I" /* NgModule */])({
512 | declarations: [
513 | __WEBPACK_IMPORTED_MODULE_1__index_list__["a" /* IndexListComponent */],
514 | __WEBPACK_IMPORTED_MODULE_2__index_section__["a" /* IndexSectionComponent */],
515 | __WEBPACK_IMPORTED_MODULE_4__index_cell__["a" /* IndexCellComponent */]
516 | ],
517 | imports: [
518 | __WEBPACK_IMPORTED_MODULE_3__angular_common__["b" /* CommonModule */],
519 | ],
520 | exports: [
521 | __WEBPACK_IMPORTED_MODULE_1__index_list__["a" /* IndexListComponent */],
522 | __WEBPACK_IMPORTED_MODULE_2__index_section__["a" /* IndexSectionComponent */],
523 | __WEBPACK_IMPORTED_MODULE_4__index_cell__["a" /* IndexCellComponent */]
524 | ]
525 | })
526 | ], IndexListModule);
527 | return IndexListModule;
528 | }());
529 |
530 | //# sourceMappingURL=index-list.module.js.map
531 |
532 | /***/ }),
533 |
534 | /***/ 281:
535 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
536 |
537 | "use strict";
538 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return IndexListComponent; });
539 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(0);
540 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__index_section__ = __webpack_require__(201);
541 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
542 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
543 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
544 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
545 | return c > 3 && r && Object.defineProperty(target, key, r), r;
546 | };
547 | var __metadata = (this && this.__metadata) || function (k, v) {
548 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
549 | };
550 |
551 |
552 | var IndexListComponent = (function () {
553 | function IndexListComponent() {
554 | this._flag = true;
555 | this._indexes = []; //右侧导航
556 | this._offsetTops = []; // 每个IndexSection 的offsetTop
557 | this._indicatorTime = null;
558 | this._showModal = false;
559 | this.hasTop = false;
560 | }
561 | IndexListComponent.prototype.ngAfterViewChecked = function () {
562 | var _this = this;
563 | if (this._flag && this._listOfIndexSection) {
564 | this._listOfIndexSection.forEach(function (section) {
565 | _this._indexes.push(section.index);
566 | var offsetTop = section.getElementRef().nativeElement.offsetTop;
567 | _this._offsetTops.push(offsetTop);
568 | });
569 | this._flag = false;
570 | if (this.hasTop) {
571 | this._indexes.unshift('#');
572 | this._offsetTops.unshift(0);
573 | }
574 | }
575 | };
576 | IndexListComponent.prototype.onScroll = function (e) {
577 | var _this = this;
578 | e.preventDefault();
579 | var scrollTopOffsetTop = this.scrollContent.nativeElement.scrollTop;
580 | this._offsetTops.forEach(function (v, i) {
581 | if (scrollTopOffsetTop >= v) {
582 | _this._currentIndicator = _this._indexes[i];
583 | //
584 | _this.setCurrentSection(_this._currentIndicator);
585 | }
586 | });
587 | };
588 | IndexListComponent.prototype.touchstart = function (e) {
589 | this._navOffsetX = e.changedTouches[0].clientX;
590 | this.scrollList(e.changedTouches[0].clientY);
591 | };
592 | IndexListComponent.prototype.touchmove = function (e) {
593 | e.preventDefault();
594 | this.scrollList(e.changedTouches[0].clientY);
595 | };
596 | IndexListComponent.prototype.touchend = function (e) {
597 | var _this = this;
598 | this._indicatorTime = setTimeout(function () {
599 | _this._showModal = false;
600 | _this._currentIndicator = '';
601 | }, 500);
602 | };
603 | IndexListComponent.prototype.scrollList = function (y) {
604 | var currentItem = document.elementFromPoint(this._navOffsetX, y);
605 | if (!currentItem || !currentItem.classList.contains('index-bar')) {
606 | return;
607 | }
608 | this._currentIndicator = currentItem['innerText'];
609 | var index = this._indexes.indexOf(this._currentIndicator);
610 | this.scrollContent.nativeElement.scrollTop = this._offsetTops[index];
611 | this._showModal = true;
612 | if (this._indicatorTime) {
613 | clearTimeout(this._indicatorTime);
614 | }
615 | };
616 | IndexListComponent.prototype.setCurrentSection = function (currentindex) {
617 | var listArray = this._listOfIndexSection.toArray();
618 | listArray.forEach(function (section) {
619 | if (section.index === currentindex) {
620 | section._current = true;
621 | }
622 | else {
623 | section._current = false;
624 | }
625 | });
626 | };
627 | __decorate([
628 | Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["D" /* Input */])(),
629 | __metadata("design:type", Boolean)
630 | ], IndexListComponent.prototype, "hasTop", void 0);
631 | __decorate([
632 | Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["_8" /* ViewChild */])('top'),
633 | __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["t" /* ElementRef */])
634 | ], IndexListComponent.prototype, "top", void 0);
635 | __decorate([
636 | Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["r" /* ContentChildren */])(__WEBPACK_IMPORTED_MODULE_1__index_section__["a" /* IndexSectionComponent */]),
637 | __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["T" /* QueryList */])
638 | ], IndexListComponent.prototype, "_listOfIndexSection", void 0);
639 | __decorate([
640 | Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["_8" /* ViewChild */])('scrollContent'),
641 | __metadata("design:type", __WEBPACK_IMPORTED_MODULE_0__angular_core__["t" /* ElementRef */])
642 | ], IndexListComponent.prototype, "scrollContent", void 0);
643 | IndexListComponent = __decorate([
644 | Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["m" /* Component */])({
645 | selector: 'ion-index-list',
646 | template: "\n \n
\n \n \n
\n\n
\n \n
\n {{_currentIndicator}}\n
\n
\n ",
647 | styles: ["\n ::-webkit-scrollbar {\n width: 0\n }\n\n .index-list{\n width: 100%;\n display: flex;\n justify-content: space-between;\n height: 100%;\n overflow: hidden;\n transform:translate(0,0);\n }\n\n .index-list-wrapper{\n width: 100%;\n overflow-y: scroll;\n -webkit-overflow-scrolling: touch;\n }\n\n .index-list-nav{\n width:6%;\n position: absolute;\n top: 44px;\n right: 0;\n display: flex;\n justify-content:center;\n flex-direction: column;\n text-align: center;\n background-color: rgba(245, 245, 245, 0.3);\n height: 100%;\n z-index: 1000;\n -webkit-touch-callout: none;\n }\n\n .index-bar{\n padding: 2px 6px;\n font-size: 8px;\n }\n\n .index-list-nav-activate{\n color: red;\n }\n\n .modal {\n top: 50%;\n left: 50%;\n z-index: 100;\n position: fixed;\n pointer-events: none;\n width: 20vw;\n height: 20vw;\n line-height: 20vw;\n margin-left: -10vw;\n margin-top: -10vw;\n color: #fff;\n font-size: 3em;\n text-align: center;\n border-radius: 8px;\n background-color: rgba(0, 0, 0, 0.52);\n -webkit-box-shadow: 0 0 4px 1px rgba(0, 0, 0, 0.16);\n box-shadow: 0 0 4px 1px rgba(0, 0, 0, 0.16);\n -webkit-transition: opacity .5s;\n -o-transition: opacity .5s;\n transition: opacity .5s;\n opacity: 0;\n }\n\n .modal.show {\n opacity: 1;\n }\n "]
648 | }),
649 | __metadata("design:paramtypes", [])
650 | ], IndexListComponent);
651 | return IndexListComponent;
652 | }());
653 |
654 | //# sourceMappingURL=index-list.js.map
655 |
656 | /***/ })
657 |
658 | },[203]);
659 | //# sourceMappingURL=main.js.map
--------------------------------------------------------------------------------