Coder Social home page Coder Social logo

ionic2-alpha-scroll's Introduction

ionic2-alpha-scroll

Configurable Ionic 2 component for alphabetically indexed list with an alpha scroll bar. This component has a few improvements on the original Ionic 1 component, mainly the panning functionality on the alpha wheel scroll shown below in the demo.

I am no longer maintaining this project. PRs are welcome.

NPM

Installation

  1. Use npm to install the component
npm install ionic2-alpha-scroll --save
  1. Add the ionic2-alpha-scroll component to your app.

Include the following on your src/app/app.module.ts.

import { IonAlphaScrollModule } from 'ionic2-alpha-scroll';

@NgModule({
  declarations: [
    MyApp,
    ...
  ],
  imports: [
    IonicModule.forRoot(MyApp),
    IonAlphaScrollModule
  ],
  ...
})

Demo

Here is a sample Ionic 2 app on GitHub that shows how to use this component Animated

Usage

To use the ion-alpha-scroll component add this below to the <ion-content> in your template:

<ion-alpha-scroll *ngIf="breeds"
  [listData]="breeds"
  key="name"
  [itemTemplate]="alphaScrollItemTemplate"
  [currentPageClass]="currentPageClass"
  [highlight]="true"
  [triggerChange]="triggerAlphaScrollChange">
</ion-alpha-scroll>
  • listData is the model you would like to sort. Use an array of objects here.
  • key is the name of the key you would like to sort by.
  • itemTemplate is the reference to the template to display for the properties of each item in the model.
  • currentPageClass is a reference to the instance of the current current page class (see example below). This is needed so that bindings on the itemTemplate can refer to the Ionic 2 page class containing the ion-alpha-scroll.
  • highlight can set to true or false to highlight the current letter in the sidebar.
  • triggerChange can be any property you want that can be changed to trigger ngOnChange for the ion-alpha-scroll component. If listData was modified the alpha list will reflect that after triggering the change.

Heres a quick example:

@Component({
  selector: 'alpha-list-page',
  template: `
    <ion-header>
      <ion-navbar>
        <ion-title>Dog Breeds</ion-title>
      </ion-navbar>
    </ion-header>

    <ion-content class="alpha-list-page">
      <ion-alpha-scroll
        [listData]="breeds"
        key="name"
        [itemTemplate]="alphaScrollItemTemplateRef"
        [currentPageClass]="currentPageClass"
        [triggerChange]="triggerAlphaScrollChange">

          <ng-template #alphaScrollItemTemplateRef let-item>
            <ion-item (click)="currentPageClass.onItemClick(item)">{{item.$t}}</ion-item>
          </ng-template>

      </ion-alpha-scroll>
    </ion-content>
  `
})
export class AlphaListPage {
  breeds: any;
  currentPageClass = this;
  triggerAlphaScrollChange: number = 0;

  constructor() {
    this.assignBreeds();
  }

  onItemClick(item) {
    // This is an example of how you could manually trigger ngOnChange
    // for the component. If you modify "listData" it won't perform
    // an ngOnChange, you will have to trigger manually to refresh the component.
    this.triggerAlphaScrollChange++;
  }

  assignBreeds() {
    this.breeds = [
      {
        'name': 'Affenpinscher'
      },
      {
        'name': 'Afghan Hound'
      },
      // ...
    ];
  }

  // ...
}

If you would like to disable the scroll bar for the ion-alpha-scroll scroll-content use this CSS:

.ion-alpha-scroll .scroll-content::-webkit-scrollbar {
  display: none;
}

Acknowledgements

https://github.com/aquint/ion-alpha-scroll

License

MIT

ionic2-alpha-scroll's People

Contributors

cschindl avatar rossmartin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

ionic2-alpha-scroll's Issues

.ion-alpha-scroll height increases !

Hello,

I have a bug when I try to use this plugin. Each time I start to click or scroll, the .ion-alpha-scroll element's height property is increasing ! So I have a huge white space at the end of the list and it's getting higher and higher !
I'm not sure about which causes that but it's really weird !

Julian

Template parse errors - with latest 2.0.1 package

when runs everything works like a charm!
but when trying to build in production, MapToIterable Exception rises. fixed by updating to latest package.
then showing template parse errors

Any idea whats the issue is ?

Steps to reproduce error: demo project & update to latest package (npm install ionic2-alpha-scroll --save)

ion-alpha-scroll error when 'ionic build android'

Hello,

I'm migrating my ionic2 app from te beta.11 to the RC3. And since I did this migration, I got a compilation error when I try to build for android.
When I remove the ion-alpha-scroll tag from the template, the compiler doesn't generate any errors !

Here is the error in the console :

[12:02:38] Error: Error at /MYPATH/.tmp/node_modules/ionic2-alpha-scroll/ion-alpha-scroll.ngfactory.ts:136:43
[12:02:38] Module ''*'' has no exported member 'Wrapper_DynamicComponentDirective'.
[12:02:38] ngc failed
[12:02:38] ionic-app-script task: "build"
[12:02:38] Error: Error

And here is my ion-alpha-scroll call :

  <ion-alpha-scroll *ngIf="items" [listData]="items" key="name"
    [itemTemplate]="alphaScrollItemTemplate" [currentPageClass]="currentPageClass" [triggerChange]="triggerAlphaScrollChange">
  </ion-alpha-scroll>

What should I change to fix this pb ?

Thanks !

Key in Object

Hi,
first of all, thanks for this awesome alpha scroll!

I am using an array consisting of objects:
"results": [ { "gender": "male", "name": { "title": "mr", "first": "samuel", "last": "ross" }, "location": { "street": "5592 pockrus page rd", "city": "santa ana", "state": "oregon", "postcode": 69974 },

Now I want to use the last name as key. While key = "gender" is working fine key = "name.last" is not working.
I get the error :"[Error] ORIGINAL EXCEPTION: TypeError: undefined is not an object (evaluating 'this.listData[i][this.key].toUpperCase')
logError (app.bundle.js:44242)
call (app.bundle.js:1907)
(anonymous function) (app.bundle.js:25728)
(anonymous function) (app.bundle.js:1370)
__tryOrUnsub (app.bundle.js:111536)
next (app.bundle.js:111485)
_next (app.bundle.js:111435)
next (app.bundle.js:111399)
_finalNext (app.bundle.js:111191)
_next (app.bundle.js:111183)
next (app.bundle.js:111140)
emit (app.bundle.js:1358)
onHandleError (app.bundle.js:37403)
handleError (zone.js:336)
runTask (zone.js:268)
drainMicroTaskQueue (zone.js:491)
invoke (zone.js:435)"

Is it possible to fix this? I tried several solutions, but I do not want to reformat the JSON.

Thanks!

Error running in production mode

Hi,

When running in the browser with 'ionic serve' everything works as expected. If i run on a device or emulator i get the following error

Error: Error at /[Removed]/.tmp/node_modules/ionic2-alpha-scroll/ion-alpha-scroll.ngfactory.ts:74:7 [16:01:52] Supplied parameters do not match any signature of call target. [16:01:52] ngc failed [16:01:52] ionic-app-script task: "build" [16:01:52] Error: Error

I'm running version 1.0.5

Tony

MapToIterable Exception

I am getting the following exception when I attempt to change the contents of the list

Error in ./IonAlphaScroll class IonAlphaScroll - inline template:5:6 caused by: Type MapToIterable is part of the declarations of 2 modules: TemplateModule and TemplateModule! Please consider moving MapToIterable to a higher module that imports TemplateModule and TemplateModule. You can also create a new NgModule that exports and includes MapToIterable then import that NgModule in TemplateModule and TemplateModule.

Set up is just an array of elements with property name on any updates i am calling the following

      this.triggerAlphaScrollChange++;
Cordova CLI: 6.3.1 
Ionic Framework Version: 2.0.0-rc.3
Ionic CLI Version: 2.1.8
Ionic App Lib Version: 2.1.4
Ionic App Scripts Version: 0.0.39
ios-deploy version: 1.9.0 
ios-sim version: 5.0.11 
OS: OS X El Capitan
Node Version: v6.8.0
Xcode version: Xcode 8.1 Build version 8B62

After installing my solution does not build for android

I tried alpha-scroll component and then it did not work so, I uninstalled it but since then I am trying to build my solution it is not working. I am getting following error and tried few things to fix but no luck. Ionic serve works but not ionic cordova run android. I deleted node_modules folder and reinstalled npm but still not able to fix it. Please help!!! thanks a lot!!!

Error:
ng.cmd run app:ionic-cordova-serve --host=localhost --port=8100 --platform=android
[ng] An unhandled exception occurred: Invalid options object. Copy Plugin has been initialized using an options object that does not match the API schema.
[ng] - options[0] misses the property 'patterns'. Should be:
[ng] [non-empty string | object { from, to?, context?, globOptions?, toType?, force?, flatten?, transform?, cacheTransform?, transformPath?, noErrorOnMissing? }, ...] (should not have fewer than 1 item)

Error in logs:
[error] ValidationError: Invalid options object. Copy Plugin has been initialized using an options object that does not match the API schema.

  • options[0] misses the property 'patterns'. Should be:
    [non-empty string | object { from, to?, context?, globOptions?, toType?, force?, flatten?, transform?, cacheTransform?, transformPath?, noErrorOnMissing? }, ...] (should not have fewer than 1 item)
    at validate (C:\Users\vibalani\Documents\Mobile App Development\First Real App\My_First_Real_Menu_App\node_modules\schema-utils\dist\validate.js:96:11)
    at new CopyPlugin (C:\Users\vibalani\Documents\Mobile App Development\First Real App\My_First_Real_Menu_App\node_modules\copy-webpack-plugin\dist\index.js:24:30)
    at Object.webpackConfiguration (C:\Users\vibalani\Documents\Mobile App Development\First Real App\My_First_Real_Menu_App\node_modules@ionic\angular-toolkit\builders\cordova-serve\index.js:55:39)
    at setup (C:\Users\vibalani\Documents\Mobile App Development\First Real App\My_First_Real_Menu_App\node_modules@angular-devkit\build-angular\src\dev-server\index.js:115:46)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)

Package.json:

{
"name": "My_First_Real_Menu_App",
"version": "0.0.1",
"author": "Ionic Framework",
"homepage": "https://ionicframework.com/",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
"private": true,
"dependencies": {
"@angular/common": "~9.1.6",
"@angular/core": "~9.1.6",
"@angular/forms": "~9.1.6",
"@angular/platform-browser": "~9.1.6",
"@angular/platform-browser-dynamic": "~9.1.6",
"@angular/router": "~9.1.6",
"@ionic-native/core": "^5.0.7",
"@ionic-native/splash-screen": "^5.0.0",
"@ionic-native/sqlite": "^5.27.0",
"@ionic-native/sqlite-porter": "^5.27.0",
"@ionic-native/status-bar": "^5.0.0",
"@ionic/angular": "^5.0.0",
"@ionic/storage": "^2.3.0",
"compare-func": "^2.0.0",
"cordova-android": "^9.0.0",
"cordova-browser": "^6.0.0",
"cordova-sqlite-storage": "^5.0.1",
"cordova-windows": "^7.0.1",
"gradle": "^1.2.3",
"ionic-numberpicker": "^1.1.4",
"rxjs": "~6.5.1",
"schema-utils": "^2.7.0",
"tslib": "^1.10.0",
"uk.co.workingedge.cordova.plugin.sqliteporter": "^1.1.1",
"zone.js": "~0.10.2"
},
"devDependencies": {
"@angular-devkit/build-angular": "~0.901.5",
"@angular/cli": "~9.1.5",
"@angular/compiler": "~9.1.6",
"@angular/compiler-cli": "~9.1.6",
"@angular/language-service": "~9.1.6",
"@ionic/angular-toolkit": "^2.3.1",
"@types/jasmine": "~3.5.0",
"@types/jasminewd2": "~2.0.3",
"@types/node": "^12.11.1",
"clean-webpack-plugin": "^3.0.0",
"codelyzer": "^5.1.2",
"copy-webpack-plugin": "^6.0.3",
"cordova-plugin-device": "^2.0.2",
"cordova-plugin-ionic-keyboard": "^2.2.0",
"cordova-plugin-ionic-webview": "^4.2.1",
"cordova-plugin-splashscreen": "^5.0.2",
"cordova-plugin-statusbar": "^2.4.2",
"cordova-plugin-whitelist": "^1.3.3",
"jasmine-core": "~3.5.0",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~5.0.0",
"karma-chrome-launcher": "~3.1.0",
"karma-coverage-istanbul-reporter": "~2.1.0",
"karma-jasmine": "~3.0.1",
"karma-jasmine-html-reporter": "^1.4.2",
"mini-css-extract-plugin": "^0.10.0",
"protractor": "^7.0.0",
"ts-node": "~8.3.0",
"tslint": "~6.1.0",
"typescript": "~3.8.3",
"webpack": "^4.44.1"
},
"description": "An Ionic project",
"cordova": {
"plugins": {
"cordova-plugin-whitelist": {},
"cordova-plugin-statusbar": {},
"cordova-plugin-device": {},
"cordova-plugin-splashscreen": {},
"cordova-plugin-ionic-webview": {},
"cordova-plugin-ionic-keyboard": {},
"cordova-sqlite-storage": {},
"uk.co.workingedge.cordova.plugin.sqliteporter": {}
},
"platforms": [
"android"
]
}
}

Make component work with AoT compiling

I cannot get AoT compiling to work currently. I am looking into how to make this possible with the Ionic 2.0.0 stable release. If anyone knows how to make it compatible with AoT please submit a pull request.

can't run your code sample

I'm trying to run your sample code into a modal

ERROR Error: Uncaught (in promise): Error: Template parse errors:
Can't bind to 'listData' since it isn't a known property of 'ion-alpha-scroll'.

  1. If 'ion-alpha-scroll' is an Angular component and it has 'listData' input, then verify that it is part of this module.
  2. If 'ion-alpha-scroll' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
  3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. ("
][listData]="breeds" key="name" [itemTemplate]="alphaScrollItemTemplate" "): ng:///CountryCodePageModule/CountryCodePage.html@17:4 Can't bind to 'itemTemplate' since it isn't a known property of 'ion-alpha-scroll'. 1. If 'ion-alpha-scroll' is an Angular component and it has 'itemTemplate' input, then verify that it is part of this module. 2. If 'ion-alpha-scroll' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message. 3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. (" [listData]="breeds" key="name" [ERROR ->][itemTemplate]="alphaScrollItemTemplate" [currentPageClass]="currentPageClass" [triggerChange"): ng:///CountryCodePageModule/CountryCodePage.html@19:4 Can't bind to 'currentPageClass' since it isn't a known property of 'ion-alpha-scroll'. 1. If 'ion-alpha-scroll' is an Angular component and it has 'currentPageClass' input, then verify that it is part of this module. 2. If 'ion-alpha-scroll' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message. 3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. (" key="name" [itemTemplate]="alphaScrollItemTemplate" [ERROR ->][currentPageClass]="currentPageClass" [triggerChange]="triggerAlphaScrollChange"> ][triggerChange]="triggerAlphaScrollChange"> "): ng:///CountryCodePageModule/CountryCodePage.html@21:4 'ion-alpha-scroll' is not a known element: 1. If 'ion-alpha-scroll' is an Angular component, then verify that it is part of this module. 2. If 'ion-alpha-scroll' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message. (" [ERROR ->] ][listData]="breeds" key="name" [itemTemplate]="alphaScrollItemTemplate" "): ng:///CountryCodePageModule/CountryCodePage.html@17:4 Can't bind to 'itemTemplate' since it isn't a known property of 'ion-alpha-scroll'. 1. If 'ion-alpha-scroll' is an Angular component and it has 'itemTemplate' input, then verify that it is part of this module. 2. If 'ion-alpha-scroll' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message. 3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. (" [listData]="breeds" key="name" [ERROR ->][itemTemplate]="alphaScrollItemTemplate" [currentPageClass]="currentPageClass" [triggerChange"): ng:///CountryCodePageModule/CountryCodePage.html@19:4 Can't bind to 'currentPageClass' since it isn't a known property of 'ion-alpha-scroll'. 1. If 'ion-alpha-scroll' is an Angular component and it has 'currentPageClass' input, then verify that it is part of this module. 2. If 'ion-alpha-scroll' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message. 3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. (" key="name" [itemTemplate]="alphaScrollItemTemplate" [ERROR ->][currentPageClass]="currentPageClass" [triggerChange]="triggerAlphaScrollChange"> ][triggerChange]="triggerAlphaScrollChange"> "): ng:///CountryCodePageModule/CountryCodePage.html@21:4 'ion-alpha-scroll' is not a known element: 1. If 'ion-alpha-scroll' is an Angular component, then verify that it is part of this module. 2. If 'ion-alpha-scroll' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message. (" [ERROR ->]

alpha scroll in a segment

Everything, first thank you for your work.

I have a problem when I use the component in a segment.

<div *ngSwitchCase="'Groupe'">
           <ion-alpha-scroll *ngIf="histoMsgGroupe"
        [listData]="histoMsgGroupe"
        key="libGrp"
        [itemTemplate]="alphaScrollItemTemplate"
        [currentPageClass]="currentPageClass"
        [triggerChange]="triggerAlphaScrollChange">
      </ion-alpha-scroll>
    </div>

The ngSwitchCase Work the first time. But when I change segment and I come back on this one.
A white screen appears .

Do you have a solution for to be able to use this composent in a segment?

sorry for my English.

Error special characters

I am trying to use the component with special characters! @ # $% ¨ &,.; / But it is causing the error 'Failed to execute' querySelector 'on' Element ':' # scroll-letter- @ 'is not a valid selector "

errocomponenteionic22

errocomponenteionic2

alpha-list.html

<ion-header>
  <ion-navbar>
    <ion-title></ion-title>
  </ion-navbar>

  <ion-searchbar placeholder="Pesquisar..." (ionInput)="search($event)" (ionClear)="onClear($event)"></ion-searchbar>
</ion-header>

<ion-content class="alpha-list-page" no-bounce>
  <ion-alpha-scroll *ngIf="current"
     [listData]="current"
     key="cod"
     [itemTemplate]="alphaScrollItemTemplate"
     [currentPageClass]="currentPageClass"
     [triggerChange]="triggerAlphaScrollChange">

   </ion-alpha-scroll>

</ion-content>

alpha-list.ts

import {Component} from '@angular/core';
import * as _ from 'lodash';

@Component({
  selector: 'alpha-list-page',
  templateUrl: 'alpha-list.html'
})
export class AlphaListPage {
  aa:any;
  currentPageClass = this;

  current: any;
  listContatos: any;

  //<ion-item (click)="currentPageClass.onItemClick(item)">
  alphaScrollItemTemplate: string = `
    <ion-item >
      <ion-checkbox [checked]="item.selected" (ionChange)="currentPageClass.change($event, item)" ></ion-checkbox>
      <ion-label>
        {{item.cod}}
      </ion-label>
    </ion-item>
  `;

  triggerAlphaScrollChange: number = 0;

  constructor() {
    this.carrega();
  }
  
  change(event, item){
    console.log(item);
    item.selected = event.checked;
    console.log('cod: ' + item.cod + ' selected: ' + item.selected);

    for (var i = 0; i < this.listContatos.length; i++) {
      //var element = this.listContatos[i];
      if (this.listContatos[i].cod === item.cod) {
        this.listContatos[i].selected = item.selected;
      }
    }

  }

  carrega(){
    this.aa = [];
     for (var i = 0; i < 100; i++) {
      this.aa.push({cod : i.toString(), selected : false});
    }

    this.aa.push({cod : "Aa1", selected : false});
    this.aa.push({cod : "Aa2", selected : false});
    this.aa.push({cod : "Aa3", selected : false});
    this.aa.push({cod : "BB", selected : false});
    this.aa.push({cod : "CC", selected : false});
    this.aa.push({cod : "DD", selected : false});
    this.aa.push({cod : "#", selected : false});
    this.aa.push({cod : "!", selected : false});
    this.aa.push({cod : "@", selected : false});
    this.aa.push({cod : ".", selected : false});
    this.aa.push({cod : ",", selected : false});
    this.aa.push({cod : ";", selected : false});
    
    this.current = this.aa;
    this.listContatos = this.aa;
  }

  search(ev: any) {
    console.log("SEARCH");
    this.current = this.listContatos;

    console.log(ev.target.value);
    let val = ev.target.value;
    if (val && val.trim() != '') {
      this.current = this.current.filter((item) => {
        return (item.cod.toLowerCase().indexOf(val.toLowerCase()) >= 0);
      });
    }
  }

  onClear(clearEvent) {
    console.log("ONCLEAR");
    this.current = this.listContatos;
  }
}

The height of the element keeps increasing

Hi, thank you very much for developing this. When I install and apply this module to my app (an Ionic 2 app), I find out that the height of the ion-alpha-scroll keeps increasing (Won't stop, caused the app to crash). I strictly followed the instruction to set up everything. I would appreciate for any help. Thank you.

Functioning for Ionic 3 / 4 ?

Hello,

Is this functional for Ionic 3 / 4 ? I see in the other issues something about a V2, but I can't see it in the versions list.

Thank you

App break after installation

I was testing the component on a fresh app.

The app breaks after the installation.

There is something wrong with lodash file.
After removing the component the app works fine again.

This is the error message:

screen shot 2017-01-31 at 11 21 24

Accordion

Hi rossmartin,

This is not an issue, rather a question with the plugin (sorry to make this one an issue here).
How would you make a collapsible list with ionic2-alpha scroll? How would you set up a code for that using your example project?

Thank you in advance!

Problem with ion-refresher and ion-alpha-scroll

Hi,

My problem is related when uses a ion-refresher with this plugin, when I pull to refresh the alphabet index pulls down and not return to their position.

Is there any solution for this?

This is my template:

<ion-content no-bounce>
  <ion-refresher (ionRefresh)="doRefresh($event)">
    <ion-refresher-content
      pullingText="{{'pullto' | translate}}">
    </ion-refresher-content>
  </ion-refresher>

  <ion-alpha-scroll
    [listData]="favorites"
    key="title"
    [itemTemplate]="alphaScrollItemTemplateRef"
    [currentPageClass]="currentPageClass"
    [triggerChange]="triggerAlphaScrollChange">

    <ng-template #alphaScrollItemTemplateRef let-item>
      <button (click)="currentPageClass.onItemClick(item)" class="padding" mode="md" no-padding no-lines no-margin full ion-item>
        <ion-label>
          {{item.title}}
        </ion-label>
        <img item-end src="{{'assets/icon/' + item.icon + '.svg'}}">
      </button>
    </ng-template>
  </ion-alpha-scroll>
</ion-content>

ionic info (Alpha Scroll Plugin version 2.0.1)

cli packages: (/usr/local/lib/node_modules)

    @ionic/cli-utils  : 1.19.2
    ionic (Ionic CLI) : 3.20.0

global packages:

    cordova (Cordova CLI) : 8.0.0 

local packages:

    @ionic/app-scripts : 3.1.9
    Cordova Platforms  : android 6.4.0 ios 4.5.4
    Ionic Framework    : ionic-angular 3.9.2

System:

    Android SDK Tools : 26.1.1
    ios-deploy        : 1.9.2 
    ios-sim           : 6.1.2 
    Node              : v9.9.0
    npm               : 5.7.1 
    OS                : macOS High Sierra
    Xcode             : Xcode 9.3 Build version 9E145 

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.