├── LICENSE ├── README.md ├── Screenshot.gif ├── aot └── src │ ├── index.ngfactory.ts │ ├── index.ngsummary.json │ ├── modules │ ├── alpha-scroll.module.ngfactory.ts │ ├── alpha-scroll.module.ngsummary.json │ ├── alpha-scroll.ngfactory.ts │ └── alpha-scroll.ngsummary.json │ └── pipes │ ├── bypass-trust-res-url.ngsummary.json │ ├── map-to-iterable.ngsummary.json │ ├── order-by.ngsummary.json │ ├── pipes.module.ngfactory.ts │ └── pipes.module.ngsummary.json ├── dist ├── index.d.ts ├── index.js ├── index.js.map ├── index.metadata.json ├── modules │ ├── alpha-scroll.d.ts │ ├── alpha-scroll.js │ ├── alpha-scroll.js.map │ ├── alpha-scroll.metadata.json │ ├── alpha-scroll.module.d.ts │ ├── alpha-scroll.module.js │ ├── alpha-scroll.module.js.map │ ├── alpha-scroll.module.metadata.json │ └── alpha-scroll.scss └── pipes │ ├── bypass-trust-res-url.d.ts │ ├── bypass-trust-res-url.js │ ├── bypass-trust-res-url.js.map │ ├── bypass-trust-res-url.metadata.json │ ├── map-to-iterable.d.ts │ ├── map-to-iterable.js │ ├── map-to-iterable.js.map │ ├── map-to-iterable.metadata.json │ ├── order-by.d.ts │ ├── order-by.js │ ├── order-by.js.map │ ├── order-by.metadata.json │ ├── pipes.module.d.ts │ ├── pipes.module.js │ ├── pipes.module.js.map │ └── pipes.module.metadata.json ├── package-lock.json ├── package.json ├── scripts └── copy.sh ├── src ├── index.ts ├── modules │ ├── alpha-scroll.module.ts │ ├── alpha-scroll.scss │ └── alpha-scroll.ts └── pipes │ ├── bypass-trust-res-url.ts │ ├── map-to-iterable.ts │ ├── order-by.ts │ └── pipes.module.ts ├── tsconfig.json └── tslint.json /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2011 zwq8299174 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ionic-alpha-scroll 2 | 一款基于ionic的索引列表插件,类似于原生APP的通讯录页面、微信的联系人页面、汽车之家的汽车品牌页面等等,首字母进行索引然后滑动。 3 | 4 | 一个耿直的程序猿因为业务需要,需要做一个类似原生应用联系人页面的索引列表功能。在网上找了许久许久,包括github和其他网站,虽然有类似的,但是不是闪屏就是卡顿还有抖动,都无法满足程序猿的需要,所以他决定自己写一个插件,然后就是`ionic-alpha-scroll`这个插件了。 5 | 6 | 丝般顺滑的滑动,不卡顿、不闪屏、不抖动,接近原生的滚动体验。 7 | 8 | #更新: 9 | 10 | ### 20171103 11 | 1、新增自定义头部模板功能。感谢[@Yan Xiaodi](https://github.com/yanxiaodi) 12 | 13 | # DEMO 14 | [DEMO](http://zwq8299174.github.io/ionic-alpha-scroll/) 15 | 源码地址:[https://github.com/zwq8299174/ionic-alpha-scroll-demo](https://github.com/zwq8299174/ionic-alpha-scroll-demo) 16 | 17 |  18 | 19 | 20 | # 安装 21 | ### 1、使用`npm`安装 22 | > npm install ionic-alpha-scroll --save 23 | ### 2、在`app.module.ts`中引入 24 | ```typescript 25 | import { AlphaScrollModule } from 'ionic-alpha-scroll'; 26 | @NgModule({ 27 | ... 28 | imports: [ 29 | ... 30 | AlphaScrollModule.forRoot(), 31 | ... 32 | ] 33 | }) 34 | ``` 35 | # 使用 36 | ### 1、在页面中引入 37 | ```html 38 | 0" 39 | [listData]="contacts" 40 | key="name" 41 | [itemTemplate]="alphaScrollItemTemplate" 42 | [currentPageClass]="currentPageClass"> 43 | 44 | 48 | 49 | {{item?.name}} 50 | 51 | 52 | ``` 53 | 54 | ### 2、数据格式 55 | 数据格式要求为数组类型,元素为对象或数组都可以,最好是对象格式。需要包含当前元素的首字母,本插件没有提取首字母功能。比如汽车品牌列表,单个品牌对象如下 56 | ```javascript 57 | { 58 | id:"1", 59 | initial:"A", 60 | logo:"http://api.jisuapi.com/car/static/images/logo/300/1.png", 61 | name:"奥迪", 62 | parentid:"0" 63 | } 64 | ``` 65 | 其中`initial`为首字母的字段。 66 | 67 | # Api 68 | ### listData 69 | 列表数据,格式为Array,数组元素为对象。 70 | ### key 71 | 列表元素首字母字段的名字 72 | ### itemTemplate 73 | 列表元素所使用的模板,需结合页面上`ng-template`所使用。 74 | ### currentPageClass 75 | 当前使用索引列表的页面主体`class`类 76 | 77 | 78 | # License 79 | This content is released under the [MIT](https://opensource.org/licenses/MIT) License. 80 | -------------------------------------------------------------------------------- /Screenshot.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zwq8299174/ionic-alpha-scroll/360239b171c386a12b0413b00851d90eeffa01e1/Screenshot.gif -------------------------------------------------------------------------------- /aot/src/index.ngfactory.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview This file is generated by the Angular template compiler. 3 | * Do not edit. 4 | * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride} 5 | */ 6 | /* tslint:disable */ 7 | 8 | 9 | import * as import0 from '@angular/core'; 10 | import * as import1 from '../../src/index'; 11 | import * as import2 from '@angular/common'; 12 | import * as import3 from '@angular/forms'; 13 | import * as import4 from 'ionic-angular/module'; 14 | import * as import5 from '../../src/pipes/pipes.module'; 15 | import * as import6 from '../../src/modules/alpha-scroll.module'; 16 | import * as import7 from '../../src/pipes/map-to-iterable'; 17 | import * as import8 from '../../src/pipes/order-by'; 18 | import * as import9 from '../../src/pipes/bypass-trust-res-url'; 19 | import * as import10 from '../node_modules/ionic-angular/components/action-sheet/action-sheet-component.ngfactory'; 20 | import * as import11 from '../node_modules/ionic-angular/components/alert/alert-component.ngfactory'; 21 | import * as import12 from '../node_modules/ionic-angular/components/app/app-root.ngfactory'; 22 | import * as import13 from '../node_modules/ionic-angular/components/loading/loading-component.ngfactory'; 23 | import * as import14 from '../node_modules/ionic-angular/components/modal/modal-component.ngfactory'; 24 | import * as import15 from '../node_modules/ionic-angular/components/picker/picker-component.ngfactory'; 25 | import * as import16 from '../node_modules/ionic-angular/components/popover/popover-component.ngfactory'; 26 | import * as import17 from '../node_modules/ionic-angular/components/select/select-popover-component.ngfactory'; 27 | import * as import18 from '../node_modules/ionic-angular/components/toast/toast-component.ngfactory'; 28 | import * as import19 from '@angular/platform-browser'; 29 | class AlphaScrollModuleInjector extends import0.ɵNgModuleInjector { 30 | _CommonModule_0:import2.CommonModule; 31 | _ɵba_1:import3.ɵba; 32 | _FormsModule_2:import3.FormsModule; 33 | _ReactiveFormsModule_3:import3.ReactiveFormsModule; 34 | _IonicModule_4:import4.IonicModule; 35 | _PipesModule_5:import5.PipesModule; 36 | _ScrollModule_6:import6.ScrollModule; 37 | _AlphaScrollModule_7:import1.AlphaScrollModule; 38 | __NgLocalization_8:import2.NgLocaleLocalization; 39 | __ɵi_9:import3.ɵi; 40 | __FormBuilder_10:import3.FormBuilder; 41 | __MapToIterable_11:import7.MapToIterable; 42 | __OrderBy_12:import8.OrderBy; 43 | __TrustResourceUrl_13:import9.TrustResourceUrl; 44 | constructor(parent:import0.Injector) { 45 | super(parent,[ 46 | import10.ActionSheetCmpNgFactory, 47 | import11.AlertCmpNgFactory, 48 | import12.IonicAppNgFactory, 49 | import13.LoadingCmpNgFactory, 50 | import14.ModalCmpNgFactory, 51 | import15.PickerCmpNgFactory, 52 | import16.PopoverCmpNgFactory, 53 | import17.SelectPopoverNgFactory, 54 | import18.ToastCmpNgFactory 55 | ] 56 | ,([] as any[])); 57 | } 58 | get _NgLocalization_8():import2.NgLocaleLocalization { 59 | if ((this.__NgLocalization_8 == null)) { (this.__NgLocalization_8 = new import2.NgLocaleLocalization(this.parent.get(import0.LOCALE_ID))); } 60 | return this.__NgLocalization_8; 61 | } 62 | get _ɵi_9():import3.ɵi { 63 | if ((this.__ɵi_9 == null)) { (this.__ɵi_9 = new import3.ɵi()); } 64 | return this.__ɵi_9; 65 | } 66 | get _FormBuilder_10():import3.FormBuilder { 67 | if ((this.__FormBuilder_10 == null)) { (this.__FormBuilder_10 = new import3.FormBuilder()); } 68 | return this.__FormBuilder_10; 69 | } 70 | get _MapToIterable_11():import7.MapToIterable { 71 | if ((this.__MapToIterable_11 == null)) { (this.__MapToIterable_11 = new import7.MapToIterable()); } 72 | return this.__MapToIterable_11; 73 | } 74 | get _OrderBy_12():import8.OrderBy { 75 | if ((this.__OrderBy_12 == null)) { (this.__OrderBy_12 = new import8.OrderBy()); } 76 | return this.__OrderBy_12; 77 | } 78 | get _TrustResourceUrl_13():import9.TrustResourceUrl { 79 | if ((this.__TrustResourceUrl_13 == null)) { (this.__TrustResourceUrl_13 = new import9.TrustResourceUrl(this.parent.get(import19.DomSanitizer))); } 80 | return this.__TrustResourceUrl_13; 81 | } 82 | createInternal():import1.AlphaScrollModule { 83 | this._CommonModule_0 = new import2.CommonModule(); 84 | this._ɵba_1 = new import3.ɵba(); 85 | this._FormsModule_2 = new import3.FormsModule(); 86 | this._ReactiveFormsModule_3 = new import3.ReactiveFormsModule(); 87 | this._IonicModule_4 = new import4.IonicModule(); 88 | this._PipesModule_5 = new import5.PipesModule(); 89 | this._ScrollModule_6 = new import6.ScrollModule(); 90 | this._AlphaScrollModule_7 = new import1.AlphaScrollModule(); 91 | return this._AlphaScrollModule_7; 92 | } 93 | getInternal(token:any,notFoundResult:any):any { 94 | if ((token === import2.CommonModule)) { return this._CommonModule_0; } 95 | if ((token === import3.ɵba)) { return this._ɵba_1; } 96 | if ((token === import3.FormsModule)) { return this._FormsModule_2; } 97 | if ((token === import3.ReactiveFormsModule)) { return this._ReactiveFormsModule_3; } 98 | if ((token === import4.IonicModule)) { return this._IonicModule_4; } 99 | if ((token === import5.PipesModule)) { return this._PipesModule_5; } 100 | if ((token === import6.ScrollModule)) { return this._ScrollModule_6; } 101 | if ((token === import1.AlphaScrollModule)) { return this._AlphaScrollModule_7; } 102 | if ((token === import2.NgLocalization)) { return this._NgLocalization_8; } 103 | if ((token === import3.ɵi)) { return this._ɵi_9; } 104 | if ((token === import3.FormBuilder)) { return this._FormBuilder_10; } 105 | if ((token === import7.MapToIterable)) { return this._MapToIterable_11; } 106 | if ((token === import8.OrderBy)) { return this._OrderBy_12; } 107 | if ((token === import9.TrustResourceUrl)) { return this._TrustResourceUrl_13; } 108 | return notFoundResult; 109 | } 110 | destroyInternal():void { 111 | } 112 | } 113 | export const AlphaScrollModuleNgFactory:import0.NgModuleFactory = new import0.NgModuleFactory(AlphaScrollModuleInjector,import1.AlphaScrollModule); 114 | //# sourceMappingURL=data:application/json;base64,eyJmaWxlIjoiL1VzZXJzL21hYy93b3JrL2lvbmljLWFscGhhLXNjcm9sbC9zcmMvaW5kZXgubmdmYWN0b3J5LnRzIiwidmVyc2lvbiI6Mywic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibmc6Ly8vVXNlcnMvbWFjL3dvcmsvaW9uaWMtYWxwaGEtc2Nyb2xsL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIgIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ== 115 | -------------------------------------------------------------------------------- /aot/src/index.ngsummary.json: -------------------------------------------------------------------------------- 1 | {"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbolic":"class","statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbol":0,"members":[]},"providers":[]}}}},"type":{"summaryKind":2,"type":{"reference":{"__symbol":0,"members":[]},"diDeps":[],"lifecycleHooks":[]},"entryComponents":[{"componentType":{"__symbol":11,"members":[]},"componentFactory":{"__symbol":12,"members":[]}},{"componentType":{"__symbol":13,"members":[]},"componentFactory":{"__symbol":14,"members":[]}},{"componentType":{"__symbol":15,"members":[]},"componentFactory":{"__symbol":16,"members":[]}},{"componentType":{"__symbol":17,"members":[]},"componentFactory":{"__symbol":18,"members":[]}},{"componentType":{"__symbol":19,"members":[]},"componentFactory":{"__symbol":20,"members":[]}},{"componentType":{"__symbol":21,"members":[]},"componentFactory":{"__symbol":22,"members":[]}},{"componentType":{"__symbol":23,"members":[]},"componentFactory":{"__symbol":24,"members":[]}},{"componentType":{"__symbol":25,"members":[]},"componentFactory":{"__symbol":26,"members":[]}},{"componentType":{"__symbol":27,"members":[]},"componentFactory":{"__symbol":28,"members":[]}}],"providers":[{"provider":{"token":{"identifier":{"reference":{"__symbol":29,"members":[]}}},"useClass":{"reference":{"__symbol":30,"members":[]},"diDeps":[{"isAttribute":false,"isHost":false,"isSelf":false,"isSkipSelf":false,"isOptional":false,"token":{"identifier":{"reference":{"__symbol":31,"members":[]}}}}],"lifecycleHooks":[]},"useFactory":null,"deps":[{"isAttribute":false,"isHost":false,"isSelf":false,"isSkipSelf":false,"isOptional":false,"token":{"identifier":{"reference":{"__symbol":31,"members":[]}}}}],"multi":false},"module":{"reference":{"__symbol":32,"members":[]},"diDeps":[],"lifecycleHooks":[]}},{"provider":{"token":{"identifier":{"reference":{"__symbol":33,"members":[]},"diDeps":[],"lifecycleHooks":[]}},"useClass":{"reference":{"__symbol":33,"members":[]},"diDeps":[],"lifecycleHooks":[]},"useFactory":null,"deps":[],"multi":false},"module":{"reference":{"__symbol":34,"members":[]},"diDeps":[],"lifecycleHooks":[]}},{"provider":{"token":{"identifier":{"reference":{"__symbol":35,"members":[]},"diDeps":[],"lifecycleHooks":[]}},"useClass":{"reference":{"__symbol":35,"members":[]},"diDeps":[],"lifecycleHooks":[]},"useFactory":null,"deps":[],"multi":false},"module":{"reference":{"__symbol":36,"members":[]},"diDeps":[],"lifecycleHooks":[]}},{"provider":{"token":{"identifier":{"reference":{"__symbol":33,"members":[]},"diDeps":[],"lifecycleHooks":[]}},"useClass":{"reference":{"__symbol":33,"members":[]},"diDeps":[],"lifecycleHooks":[]},"useFactory":null,"deps":[],"multi":false},"module":{"reference":{"__symbol":36,"members":[]},"diDeps":[],"lifecycleHooks":[]}},{"provider":{"token":{"identifier":{"reference":{"__symbol":37,"members":[]},"diDeps":[],"lifecycleHooks":[]}},"useClass":{"reference":{"__symbol":37,"members":[]},"diDeps":[],"lifecycleHooks":[]},"useFactory":null,"deps":[],"multi":false},"module":{"reference":{"__symbol":0,"members":[]},"diDeps":[],"lifecycleHooks":[]}},{"provider":{"token":{"identifier":{"reference":{"__symbol":38,"members":[]},"diDeps":[],"lifecycleHooks":[]}},"useClass":{"reference":{"__symbol":38,"members":[]},"diDeps":[],"lifecycleHooks":[]},"useFactory":null,"deps":[],"multi":false},"module":{"reference":{"__symbol":0,"members":[]},"diDeps":[],"lifecycleHooks":[]}},{"provider":{"token":{"identifier":{"reference":{"__symbol":39,"members":[]},"diDeps":[{"isAttribute":false,"isHost":false,"isSelf":false,"isSkipSelf":false,"isOptional":false,"token":{"identifier":{"reference":{"__symbol":40,"members":[]}}}}],"lifecycleHooks":[]}},"useClass":{"reference":{"__symbol":39,"members":[]},"diDeps":[{"isAttribute":false,"isHost":false,"isSelf":false,"isSkipSelf":false,"isOptional":false,"token":{"identifier":{"reference":{"__symbol":40,"members":[]}}}}],"lifecycleHooks":[]},"useFactory":null,"deps":[{"isAttribute":false,"isHost":false,"isSelf":false,"isSkipSelf":false,"isOptional":false,"token":{"identifier":{"reference":{"__symbol":40,"members":[]}}}}],"multi":false},"module":{"reference":{"__symbol":0,"members":[]},"diDeps":[],"lifecycleHooks":[]}}],"modules":[{"reference":{"__symbol":32,"members":[]},"diDeps":[],"lifecycleHooks":[]},{"reference":{"__symbol":41,"members":[]},"diDeps":[],"lifecycleHooks":[]},{"reference":{"__symbol":34,"members":[]},"diDeps":[],"lifecycleHooks":[]},{"reference":{"__symbol":36,"members":[]},"diDeps":[],"lifecycleHooks":[]},{"reference":{"__symbol":42,"members":[]},"diDeps":[],"lifecycleHooks":[]},{"reference":{"__symbol":4,"members":[]},"diDeps":[],"lifecycleHooks":[]},{"reference":{"__symbol":2,"members":[]},"diDeps":[],"lifecycleHooks":[]},{"reference":{"__symbol":0,"members":[]},"diDeps":[],"lifecycleHooks":[]}],"exportedDirectives":[{"reference":{"__symbol":43,"members":[]}}],"exportedPipes":[{"reference":{"__symbol":37,"members":[]}},{"reference":{"__symbol":38,"members":[]}},{"reference":{"__symbol":39,"members":[]}}]}},{"symbol":{"__symbol":1,"members":[]},"metadata":{"__symbol":2,"members":[]}},{"symbol":{"__symbol":3,"members":[]},"metadata":{"__symbol":4,"members":[]}},{"symbol":{"__symbol":5,"members":[]},"metadata":{"__symbol":6,"members":[]}},{"symbol":{"__symbol":7,"members":[]},"metadata":{"__symbol":8,"members":[]}},{"symbol":{"__symbol":9,"members":[]},"metadata":{"__symbol":10,"members":[]}}],"symbols":[{"__symbol":0,"name":"AlphaScrollModule","filePath":"/Users/mac/work/ionic-alpha-scroll/src/index.d.ts"},{"__symbol":1,"name":"ScrollModule","filePath":"/Users/mac/work/ionic-alpha-scroll/src/index.d.ts"},{"__symbol":2,"name":"ScrollModule","filePath":"/Users/mac/work/ionic-alpha-scroll/src/modules/alpha-scroll.module.d.ts"},{"__symbol":3,"name":"PipesModule","filePath":"/Users/mac/work/ionic-alpha-scroll/src/index.d.ts"},{"__symbol":4,"name":"PipesModule","filePath":"/Users/mac/work/ionic-alpha-scroll/src/pipes/pipes.module.d.ts"},{"__symbol":5,"name":"MapToIterable","filePath":"/Users/mac/work/ionic-alpha-scroll/src/index.d.ts"},{"__symbol":6,"name":"MapToIterable","filePath":"/Users/mac/work/ionic-alpha-scroll/src/pipes/pipes.module.d.ts"},{"__symbol":7,"name":"OrderBy","filePath":"/Users/mac/work/ionic-alpha-scroll/src/index.d.ts"},{"__symbol":8,"name":"OrderBy","filePath":"/Users/mac/work/ionic-alpha-scroll/src/pipes/pipes.module.d.ts"},{"__symbol":9,"name":"TrustResourceUrl","filePath":"/Users/mac/work/ionic-alpha-scroll/src/index.d.ts"},{"__symbol":10,"name":"TrustResourceUrl","filePath":"/Users/mac/work/ionic-alpha-scroll/src/pipes/pipes.module.d.ts"},{"__symbol":11,"name":"ActionSheetCmp","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/action-sheet/action-sheet-component.d.ts"},{"__symbol":12,"name":"ActionSheetCmpNgFactory","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/action-sheet/action-sheet-component.ngfactory.d.ts"},{"__symbol":13,"name":"AlertCmp","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/alert/alert-component.d.ts"},{"__symbol":14,"name":"AlertCmpNgFactory","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/alert/alert-component.ngfactory.d.ts"},{"__symbol":15,"name":"IonicApp","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/app/app-root.d.ts"},{"__symbol":16,"name":"IonicAppNgFactory","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/app/app-root.ngfactory.d.ts"},{"__symbol":17,"name":"LoadingCmp","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/loading/loading-component.d.ts"},{"__symbol":18,"name":"LoadingCmpNgFactory","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/loading/loading-component.ngfactory.d.ts"},{"__symbol":19,"name":"ModalCmp","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/modal/modal-component.d.ts"},{"__symbol":20,"name":"ModalCmpNgFactory","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/modal/modal-component.ngfactory.d.ts"},{"__symbol":21,"name":"PickerCmp","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/picker/picker-component.d.ts"},{"__symbol":22,"name":"PickerCmpNgFactory","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/picker/picker-component.ngfactory.d.ts"},{"__symbol":23,"name":"PopoverCmp","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/popover/popover-component.d.ts"},{"__symbol":24,"name":"PopoverCmpNgFactory","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/popover/popover-component.ngfactory.d.ts"},{"__symbol":25,"name":"SelectPopover","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/select/select-popover-component.d.ts"},{"__symbol":26,"name":"SelectPopoverNgFactory","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/select/select-popover-component.ngfactory.d.ts"},{"__symbol":27,"name":"ToastCmp","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/toast/toast-component.d.ts"},{"__symbol":28,"name":"ToastCmpNgFactory","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/toast/toast-component.ngfactory.d.ts"},{"__symbol":29,"name":"NgLocalization","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/@angular/common/common.d.ts"},{"__symbol":30,"name":"NgLocaleLocalization","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/@angular/common/common.d.ts"},{"__symbol":31,"name":"LOCALE_ID","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/@angular/core/core.d.ts"},{"__symbol":32,"name":"CommonModule","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/@angular/common/common.d.ts"},{"__symbol":33,"name":"ɵi","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/@angular/forms/forms.d.ts"},{"__symbol":34,"name":"FormsModule","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/@angular/forms/forms.d.ts"},{"__symbol":35,"name":"FormBuilder","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/@angular/forms/forms.d.ts"},{"__symbol":36,"name":"ReactiveFormsModule","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/@angular/forms/forms.d.ts"},{"__symbol":37,"name":"MapToIterable","filePath":"/Users/mac/work/ionic-alpha-scroll/src/pipes/map-to-iterable.d.ts"},{"__symbol":38,"name":"OrderBy","filePath":"/Users/mac/work/ionic-alpha-scroll/src/pipes/order-by.d.ts"},{"__symbol":39,"name":"TrustResourceUrl","filePath":"/Users/mac/work/ionic-alpha-scroll/src/pipes/bypass-trust-res-url.d.ts"},{"__symbol":40,"name":"DomSanitizer","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/@angular/platform-browser/platform-browser.d.ts"},{"__symbol":41,"name":"ɵba","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/@angular/forms/forms.d.ts"},{"__symbol":42,"name":"IonicModule","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/module.d.ts"},{"__symbol":43,"name":"AlphaScroll","filePath":"/Users/mac/work/ionic-alpha-scroll/src/modules/alpha-scroll.d.ts"}]} -------------------------------------------------------------------------------- /aot/src/modules/alpha-scroll.module.ngfactory.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview This file is generated by the Angular template compiler. 3 | * Do not edit. 4 | * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride} 5 | */ 6 | /* tslint:disable */ 7 | 8 | 9 | import * as import0 from '@angular/core'; 10 | import * as import1 from '../../../src/modules/alpha-scroll.module'; 11 | import * as import2 from '@angular/common'; 12 | import * as import3 from '@angular/forms'; 13 | import * as import4 from 'ionic-angular/module'; 14 | import * as import5 from '../../../src/pipes/pipes.module'; 15 | import * as import6 from '../../node_modules/ionic-angular/components/action-sheet/action-sheet-component.ngfactory'; 16 | import * as import7 from '../../node_modules/ionic-angular/components/alert/alert-component.ngfactory'; 17 | import * as import8 from '../../node_modules/ionic-angular/components/app/app-root.ngfactory'; 18 | import * as import9 from '../../node_modules/ionic-angular/components/loading/loading-component.ngfactory'; 19 | import * as import10 from '../../node_modules/ionic-angular/components/modal/modal-component.ngfactory'; 20 | import * as import11 from '../../node_modules/ionic-angular/components/picker/picker-component.ngfactory'; 21 | import * as import12 from '../../node_modules/ionic-angular/components/popover/popover-component.ngfactory'; 22 | import * as import13 from '../../node_modules/ionic-angular/components/select/select-popover-component.ngfactory'; 23 | import * as import14 from '../../node_modules/ionic-angular/components/toast/toast-component.ngfactory'; 24 | class ScrollModuleInjector extends import0.ɵNgModuleInjector { 25 | _CommonModule_0:import2.CommonModule; 26 | _ɵba_1:import3.ɵba; 27 | _FormsModule_2:import3.FormsModule; 28 | _ReactiveFormsModule_3:import3.ReactiveFormsModule; 29 | _IonicModule_4:import4.IonicModule; 30 | _PipesModule_5:import5.PipesModule; 31 | _ScrollModule_6:import1.ScrollModule; 32 | __NgLocalization_7:import2.NgLocaleLocalization; 33 | __ɵi_8:import3.ɵi; 34 | __FormBuilder_9:import3.FormBuilder; 35 | constructor(parent:import0.Injector) { 36 | super(parent,[ 37 | import6.ActionSheetCmpNgFactory, 38 | import7.AlertCmpNgFactory, 39 | import8.IonicAppNgFactory, 40 | import9.LoadingCmpNgFactory, 41 | import10.ModalCmpNgFactory, 42 | import11.PickerCmpNgFactory, 43 | import12.PopoverCmpNgFactory, 44 | import13.SelectPopoverNgFactory, 45 | import14.ToastCmpNgFactory 46 | ] 47 | ,([] as any[])); 48 | } 49 | get _NgLocalization_7():import2.NgLocaleLocalization { 50 | if ((this.__NgLocalization_7 == null)) { (this.__NgLocalization_7 = new import2.NgLocaleLocalization(this.parent.get(import0.LOCALE_ID))); } 51 | return this.__NgLocalization_7; 52 | } 53 | get _ɵi_8():import3.ɵi { 54 | if ((this.__ɵi_8 == null)) { (this.__ɵi_8 = new import3.ɵi()); } 55 | return this.__ɵi_8; 56 | } 57 | get _FormBuilder_9():import3.FormBuilder { 58 | if ((this.__FormBuilder_9 == null)) { (this.__FormBuilder_9 = new import3.FormBuilder()); } 59 | return this.__FormBuilder_9; 60 | } 61 | createInternal():import1.ScrollModule { 62 | this._CommonModule_0 = new import2.CommonModule(); 63 | this._ɵba_1 = new import3.ɵba(); 64 | this._FormsModule_2 = new import3.FormsModule(); 65 | this._ReactiveFormsModule_3 = new import3.ReactiveFormsModule(); 66 | this._IonicModule_4 = new import4.IonicModule(); 67 | this._PipesModule_5 = new import5.PipesModule(); 68 | this._ScrollModule_6 = new import1.ScrollModule(); 69 | return this._ScrollModule_6; 70 | } 71 | getInternal(token:any,notFoundResult:any):any { 72 | if ((token === import2.CommonModule)) { return this._CommonModule_0; } 73 | if ((token === import3.ɵba)) { return this._ɵba_1; } 74 | if ((token === import3.FormsModule)) { return this._FormsModule_2; } 75 | if ((token === import3.ReactiveFormsModule)) { return this._ReactiveFormsModule_3; } 76 | if ((token === import4.IonicModule)) { return this._IonicModule_4; } 77 | if ((token === import5.PipesModule)) { return this._PipesModule_5; } 78 | if ((token === import1.ScrollModule)) { return this._ScrollModule_6; } 79 | if ((token === import2.NgLocalization)) { return this._NgLocalization_7; } 80 | if ((token === import3.ɵi)) { return this._ɵi_8; } 81 | if ((token === import3.FormBuilder)) { return this._FormBuilder_9; } 82 | return notFoundResult; 83 | } 84 | destroyInternal():void { 85 | } 86 | } 87 | export const ScrollModuleNgFactory:import0.NgModuleFactory = new import0.NgModuleFactory(ScrollModuleInjector,import1.ScrollModule); 88 | //# sourceMappingURL=data:application/json;base64,eyJmaWxlIjoiL1VzZXJzL21hYy93b3JrL2lvbmljLWFscGhhLXNjcm9sbC9zcmMvbW9kdWxlcy9hbHBoYS1zY3JvbGwubW9kdWxlLm5nZmFjdG9yeS50cyIsInZlcnNpb24iOjMsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm5nOi8vL1VzZXJzL21hYy93b3JrL2lvbmljLWFscGhhLXNjcm9sbC9zcmMvbW9kdWxlcy9hbHBoYS1zY3JvbGwubW9kdWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIiAiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ== 89 | -------------------------------------------------------------------------------- /aot/src/modules/alpha-scroll.module.ngsummary.json: -------------------------------------------------------------------------------- 1 | {"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbolic":"class","statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbol":0,"members":[]},"providers":[]}}}},"type":{"summaryKind":2,"type":{"reference":{"__symbol":0,"members":[]},"diDeps":[],"lifecycleHooks":[]},"entryComponents":[{"componentType":{"__symbol":1,"members":[]},"componentFactory":{"__symbol":2,"members":[]}},{"componentType":{"__symbol":3,"members":[]},"componentFactory":{"__symbol":4,"members":[]}},{"componentType":{"__symbol":5,"members":[]},"componentFactory":{"__symbol":6,"members":[]}},{"componentType":{"__symbol":7,"members":[]},"componentFactory":{"__symbol":8,"members":[]}},{"componentType":{"__symbol":9,"members":[]},"componentFactory":{"__symbol":10,"members":[]}},{"componentType":{"__symbol":11,"members":[]},"componentFactory":{"__symbol":12,"members":[]}},{"componentType":{"__symbol":13,"members":[]},"componentFactory":{"__symbol":14,"members":[]}},{"componentType":{"__symbol":15,"members":[]},"componentFactory":{"__symbol":16,"members":[]}},{"componentType":{"__symbol":17,"members":[]},"componentFactory":{"__symbol":18,"members":[]}}],"providers":[{"provider":{"token":{"identifier":{"reference":{"__symbol":19,"members":[]}}},"useClass":{"reference":{"__symbol":20,"members":[]},"diDeps":[{"isAttribute":false,"isHost":false,"isSelf":false,"isSkipSelf":false,"isOptional":false,"token":{"identifier":{"reference":{"__symbol":21,"members":[]}}}}],"lifecycleHooks":[]},"useFactory":null,"deps":[{"isAttribute":false,"isHost":false,"isSelf":false,"isSkipSelf":false,"isOptional":false,"token":{"identifier":{"reference":{"__symbol":21,"members":[]}}}}],"multi":false},"module":{"reference":{"__symbol":22,"members":[]},"diDeps":[],"lifecycleHooks":[]}},{"provider":{"token":{"identifier":{"reference":{"__symbol":23,"members":[]},"diDeps":[],"lifecycleHooks":[]}},"useClass":{"reference":{"__symbol":23,"members":[]},"diDeps":[],"lifecycleHooks":[]},"useFactory":null,"deps":[],"multi":false},"module":{"reference":{"__symbol":24,"members":[]},"diDeps":[],"lifecycleHooks":[]}},{"provider":{"token":{"identifier":{"reference":{"__symbol":25,"members":[]},"diDeps":[],"lifecycleHooks":[]}},"useClass":{"reference":{"__symbol":25,"members":[]},"diDeps":[],"lifecycleHooks":[]},"useFactory":null,"deps":[],"multi":false},"module":{"reference":{"__symbol":26,"members":[]},"diDeps":[],"lifecycleHooks":[]}},{"provider":{"token":{"identifier":{"reference":{"__symbol":23,"members":[]},"diDeps":[],"lifecycleHooks":[]}},"useClass":{"reference":{"__symbol":23,"members":[]},"diDeps":[],"lifecycleHooks":[]},"useFactory":null,"deps":[],"multi":false},"module":{"reference":{"__symbol":26,"members":[]},"diDeps":[],"lifecycleHooks":[]}}],"modules":[{"reference":{"__symbol":22,"members":[]},"diDeps":[],"lifecycleHooks":[]},{"reference":{"__symbol":27,"members":[]},"diDeps":[],"lifecycleHooks":[]},{"reference":{"__symbol":24,"members":[]},"diDeps":[],"lifecycleHooks":[]},{"reference":{"__symbol":26,"members":[]},"diDeps":[],"lifecycleHooks":[]},{"reference":{"__symbol":28,"members":[]},"diDeps":[],"lifecycleHooks":[]},{"reference":{"__symbol":29,"members":[]},"diDeps":[],"lifecycleHooks":[]},{"reference":{"__symbol":0,"members":[]},"diDeps":[],"lifecycleHooks":[]}],"exportedDirectives":[{"reference":{"__symbol":30,"members":[]}}],"exportedPipes":[]}}],"symbols":[{"__symbol":0,"name":"ScrollModule","filePath":"/Users/mac/work/ionic-alpha-scroll/src/modules/alpha-scroll.module.d.ts"},{"__symbol":1,"name":"ActionSheetCmp","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/action-sheet/action-sheet-component.d.ts"},{"__symbol":2,"name":"ActionSheetCmpNgFactory","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/action-sheet/action-sheet-component.ngfactory.d.ts"},{"__symbol":3,"name":"AlertCmp","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/alert/alert-component.d.ts"},{"__symbol":4,"name":"AlertCmpNgFactory","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/alert/alert-component.ngfactory.d.ts"},{"__symbol":5,"name":"IonicApp","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/app/app-root.d.ts"},{"__symbol":6,"name":"IonicAppNgFactory","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/app/app-root.ngfactory.d.ts"},{"__symbol":7,"name":"LoadingCmp","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/loading/loading-component.d.ts"},{"__symbol":8,"name":"LoadingCmpNgFactory","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/loading/loading-component.ngfactory.d.ts"},{"__symbol":9,"name":"ModalCmp","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/modal/modal-component.d.ts"},{"__symbol":10,"name":"ModalCmpNgFactory","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/modal/modal-component.ngfactory.d.ts"},{"__symbol":11,"name":"PickerCmp","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/picker/picker-component.d.ts"},{"__symbol":12,"name":"PickerCmpNgFactory","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/picker/picker-component.ngfactory.d.ts"},{"__symbol":13,"name":"PopoverCmp","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/popover/popover-component.d.ts"},{"__symbol":14,"name":"PopoverCmpNgFactory","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/popover/popover-component.ngfactory.d.ts"},{"__symbol":15,"name":"SelectPopover","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/select/select-popover-component.d.ts"},{"__symbol":16,"name":"SelectPopoverNgFactory","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/select/select-popover-component.ngfactory.d.ts"},{"__symbol":17,"name":"ToastCmp","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/toast/toast-component.d.ts"},{"__symbol":18,"name":"ToastCmpNgFactory","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/components/toast/toast-component.ngfactory.d.ts"},{"__symbol":19,"name":"NgLocalization","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/@angular/common/common.d.ts"},{"__symbol":20,"name":"NgLocaleLocalization","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/@angular/common/common.d.ts"},{"__symbol":21,"name":"LOCALE_ID","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/@angular/core/core.d.ts"},{"__symbol":22,"name":"CommonModule","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/@angular/common/common.d.ts"},{"__symbol":23,"name":"ɵi","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/@angular/forms/forms.d.ts"},{"__symbol":24,"name":"FormsModule","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/@angular/forms/forms.d.ts"},{"__symbol":25,"name":"FormBuilder","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/@angular/forms/forms.d.ts"},{"__symbol":26,"name":"ReactiveFormsModule","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/@angular/forms/forms.d.ts"},{"__symbol":27,"name":"ɵba","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/@angular/forms/forms.d.ts"},{"__symbol":28,"name":"IonicModule","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/ionic-angular/module.d.ts"},{"__symbol":29,"name":"PipesModule","filePath":"/Users/mac/work/ionic-alpha-scroll/src/pipes/pipes.module.d.ts"},{"__symbol":30,"name":"AlphaScroll","filePath":"/Users/mac/work/ionic-alpha-scroll/src/modules/alpha-scroll.d.ts"}]} -------------------------------------------------------------------------------- /aot/src/modules/alpha-scroll.ngfactory.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview This file is generated by the Angular template compiler. 3 | * Do not edit. 4 | * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride} 5 | */ 6 | /* tslint:disable */ 7 | 8 | 9 | import * as import0 from '@angular/core'; 10 | import * as import1 from '../../node_modules/ionic-angular/components/item/item.ngfactory'; 11 | import * as import2 from 'ionic-angular/components/item/item'; 12 | import * as import3 from 'ionic-angular/util/form'; 13 | import * as import4 from 'ionic-angular/config/config'; 14 | import * as import5 from 'ionic-angular/components/item/item-reorder'; 15 | import * as import6 from 'ionic-angular/components/item/item-divider'; 16 | import * as import7 from '@angular/common'; 17 | import * as import8 from 'ionic-angular/components/list/list'; 18 | import * as import9 from 'ionic-angular/platform/platform'; 19 | import * as import10 from 'ionic-angular/gestures/gesture-controller'; 20 | import * as import11 from 'ionic-angular/platform/dom-controller'; 21 | import * as import12 from '../../../src/modules/alpha-scroll'; 22 | import * as import13 from '../../../src/pipes/order-by'; 23 | const styles_AlphaScroll:any[] = ([] as any[]); 24 | export const RenderType_AlphaScroll:import0.RendererType2 = import0.ɵcrt({ 25 | encapsulation: 2, 26 | styles: styles_AlphaScroll, 27 | data: {} 28 | } 29 | ); 30 | function View_AlphaScroll_1(l:any):import0.ɵViewDefinition { 31 | return import0.ɵvid(0,[ 32 | (l()(),import0.ɵeld(0,(null as any),(null as any),6,'ion-item-divider',[ 33 | [ 34 | 'class', 35 | 'item item-divider' 36 | ] 37 | , 38 | [ 39 | 'id', 40 | 'scroll-letter-↑' 41 | ] 42 | , 43 | [ 44 | 'style', 45 | 'display:none' 46 | ] 47 | 48 | ] 49 | ,(null as any),(null as any),(null as any),import1.View_Item_0,import1.RenderType_Item)), 50 | import0.ɵdid(1097728,(null as any),3,import2.Item,[ 51 | import3.Form, 52 | import4.Config, 53 | import0.ElementRef, 54 | import0.Renderer, 55 | [ 56 | 2, 57 | import5.ItemReorder 58 | ] 59 | 60 | ] 61 | ,(null as any),(null as any)), 62 | import0.ɵqud(335544320,4,{contentLabel: 0}), 63 | import0.ɵqud(603979776,5,{_buttons: 1}), 64 | import0.ɵqud(603979776,6,{_icons: 1}), 65 | import0.ɵdid(16384,(null as any),0,import6.ItemDivider,[ 66 | import4.Config, 67 | import0.ElementRef, 68 | import0.Renderer 69 | ] 70 | ,(null as any),(null as any)), 71 | (l()(),import0.ɵted(2,['↑'])) 72 | ] 73 | ,(null as any),(null as any)); 74 | } 75 | function View_AlphaScroll_2(l:any):import0.ɵViewDefinition { 76 | return import0.ɵvid(0,[(l()(),import0.ɵand(0,(null as any),(null as any),0))],(null as any),(null as any)); 77 | } 78 | function View_AlphaScroll_4(l:any):import0.ɵViewDefinition { 79 | return import0.ɵvid(0,[ 80 | (l()(),import0.ɵeld(0,(null as any),(null as any),6,'ion-item-divider',[[ 81 | 'class', 82 | 'item item-divider' 83 | ] 84 | ],[[ 85 | 8, 86 | 'id', 87 | 0 88 | ] 89 | ],(null as any),(null as any),import1.View_Item_0,import1.RenderType_Item)), 90 | import0.ɵdid(1097728,(null as any),3,import2.Item,[ 91 | import3.Form, 92 | import4.Config, 93 | import0.ElementRef, 94 | import0.Renderer, 95 | [ 96 | 2, 97 | import5.ItemReorder 98 | ] 99 | 100 | ] 101 | ,(null as any),(null as any)), 102 | import0.ɵqud(335544320,7,{contentLabel: 0}), 103 | import0.ɵqud(603979776,8,{_buttons: 1}), 104 | import0.ɵqud(603979776,9,{_icons: 1}), 105 | import0.ɵdid(16384,(null as any),0,import6.ItemDivider,[ 106 | import4.Config, 107 | import0.ElementRef, 108 | import0.Renderer 109 | ] 110 | ,(null as any),(null as any)), 111 | (l()(),import0.ɵted(2,[ 112 | '', 113 | '' 114 | ] 115 | )) 116 | ] 117 | ,(null as any),(ck,v) => { 118 | const currVal_0:any = import0.ɵinlineInterpolate(1,'scroll-letter-',(v.parent).context.$implicit.letter,''); 119 | ck(v,0,0,currVal_0); 120 | const currVal_1:any = (v.parent).context.$implicit.letter; 121 | ck(v,6,0,currVal_1); 122 | }); 123 | } 124 | function View_AlphaScroll_6(l:any):import0.ɵViewDefinition { 125 | return import0.ɵvid(0,[(l()(),import0.ɵted((null as any),['\n ']))],(null as any),(null as any)); 126 | } 127 | function View_AlphaScroll_5(l:any):import0.ɵViewDefinition { 128 | return import0.ɵvid(0,[ 129 | (l()(),import0.ɵand(16777216,(null as any),(null as any),2,(null as any),View_AlphaScroll_6)), 130 | import0.ɵdid(540672,(null as any),0,import7.NgTemplateOutlet,[import0.ViewContainerRef],{ 131 | ngTemplateOutlet: [ 132 | 0, 133 | 'ngTemplateOutlet' 134 | ] 135 | , 136 | ngOutletContext: [ 137 | 1, 138 | 'ngOutletContext' 139 | ] 140 | 141 | } 142 | ,(null as any)), 143 | import0.ɵpod([ 144 | 'item', 145 | 'currentPageClass' 146 | ] 147 | ), 148 | (l()(),import0.ɵand(0,(null as any),(null as any),0)) 149 | ] 150 | ,(ck,v) => { 151 | var co:any = v.component; 152 | const currVal_0:any = co.itemTemplate; 153 | const currVal_1:any = ck(v,2,0,(v.parent).context.$implicit,co.currentPageClass); 154 | ck(v,1,0,currVal_0,currVal_1); 155 | },(null as any)); 156 | } 157 | function View_AlphaScroll_3(l:any):import0.ɵViewDefinition { 158 | return import0.ɵvid(0,[ 159 | (l()(),import0.ɵeld(0,(null as any),(null as any),7,'div',([] as any[]),(null as any),(null as any),(null as any),(null as any),(null as any))), 160 | (l()(),import0.ɵted((null as any),['\n '])), 161 | (l()(),import0.ɵand(16777216,(null as any),(null as any),1,(null as any),View_AlphaScroll_4)), 162 | import0.ɵdid(16384,(null as any),0,import7.NgIf,[ 163 | import0.ViewContainerRef, 164 | import0.TemplateRef 165 | ] 166 | ,{ngIf: [ 167 | 0, 168 | 'ngIf' 169 | ] 170 | },(null as any)), 171 | (l()(),import0.ɵted((null as any),['\n '])), 172 | (l()(),import0.ɵand(16777216,(null as any),(null as any),1,(null as any),View_AlphaScroll_5)), 173 | import0.ɵdid(16384,(null as any),0,import7.NgIf,[ 174 | import0.ViewContainerRef, 175 | import0.TemplateRef 176 | ] 177 | ,{ngIf: [ 178 | 0, 179 | 'ngIf' 180 | ] 181 | },(null as any)), 182 | (l()(),import0.ɵted((null as any),['\n '])) 183 | ] 184 | ,(ck,v) => { 185 | const currVal_0:any = v.context.$implicit.isDivider; 186 | ck(v,3,0,currVal_0); 187 | const currVal_1:boolean = !v.context.$implicit.isDivider; 188 | ck(v,6,0,currVal_1); 189 | },(null as any)); 190 | } 191 | function View_AlphaScroll_7(l:any):import0.ɵViewDefinition { 192 | return import0.ɵvid(0,[ 193 | (l()(),import0.ɵeld(0,(null as any),(null as any),4,'li',([] as any[]),[ 194 | [ 195 | 8, 196 | 'hidden', 197 | 0 198 | ] 199 | , 200 | [ 201 | 8, 202 | 'className', 203 | 0 204 | ] 205 | 206 | ] 207 | ,(null as any),(null as any),(null as any),(null as any))), 208 | (l()(),import0.ɵted((null as any),['\n '])), 209 | (l()(),import0.ɵeld(0,(null as any),(null as any),1,'a',([] as any[]),(null as any),(null as any),(null as any),(null as any),(null as any))), 210 | (l()(),import0.ɵted((null as any),[ 211 | '', 212 | '' 213 | ] 214 | )), 215 | (l()(),import0.ɵted((null as any),['\n '])) 216 | ] 217 | ,(null as any),(ck,v) => { 218 | var co:any = v.component; 219 | const currVal_0:boolean = !v.context.$implicit.isActive; 220 | const currVal_1:any = co.setAlphaClass(v.context.$implicit); 221 | ck(v,0,0,currVal_0,currVal_1); 222 | const currVal_2:any = v.context.$implicit.letter; 223 | ck(v,3,0,currVal_2); 224 | }); 225 | } 226 | export function View_AlphaScroll_0(l:any):import0.ɵViewDefinition { 227 | return import0.ɵvid(0,[ 228 | import0.ɵqud(402653184,1,{mainWrapper: 0}), 229 | import0.ɵqud(402653184,2,{list: 0}), 230 | import0.ɵqud(402653184,3,{sidebar: 0}), 231 | (l()(),import0.ɵted((null as any),['\n '])), 232 | (l()(),import0.ɵeld(0,[ 233 | [ 234 | 1, 235 | 0 236 | ] 237 | , 238 | [ 239 | 'wrapper', 240 | 1 241 | ] 242 | 243 | ] 244 | ,(null as any),14,'section',[[ 245 | 'class', 246 | 'alpha-list-wrapper' 247 | ] 248 | ],(null as any),(null as any),(null as any),(null as any),(null as any))), 249 | (l()(),import0.ɵted((null as any),['\n '])), 250 | (l()(),import0.ɵeld(0,[ 251 | [ 252 | 2, 253 | 0 254 | ] 255 | , 256 | [ 257 | 'list', 258 | 1 259 | ] 260 | 261 | ] 262 | ,(null as any),11,'ion-list',[[ 263 | 'class', 264 | 'ion-alpha-list' 265 | ] 266 | ],(null as any),(null as any),(null as any),(null as any),(null as any))), 267 | import0.ɵdid(16384,(null as any),0,import8.List,[ 268 | import4.Config, 269 | import0.ElementRef, 270 | import0.Renderer, 271 | import9.Platform, 272 | import10.GestureController, 273 | import11.DomController 274 | ] 275 | ,(null as any),(null as any)), 276 | (l()(),import0.ɵted((null as any),['\n '])), 277 | (l()(),import0.ɵand(16777216,(null as any),(null as any),1,(null as any),View_AlphaScroll_1)), 278 | import0.ɵdid(16384,(null as any),0,import7.NgIf,[ 279 | import0.ViewContainerRef, 280 | import0.TemplateRef 281 | ] 282 | ,{ngIf: [ 283 | 0, 284 | 'ngIf' 285 | ] 286 | },(null as any)), 287 | (l()(),import0.ɵted((null as any),['\n '])), 288 | (l()(),import0.ɵand(16777216,(null as any),(null as any),1,(null as any),View_AlphaScroll_2)), 289 | import0.ɵdid(540672,(null as any),0,import7.NgTemplateOutlet,[import0.ViewContainerRef],{ngTemplateOutlet: [ 290 | 0, 291 | 'ngTemplateOutlet' 292 | ] 293 | },(null as any)), 294 | (l()(),import0.ɵted((null as any),['\n '])), 295 | (l()(),import0.ɵand(16777216,(null as any),(null as any),1,(null as any),View_AlphaScroll_3)), 296 | import0.ɵdid(802816,(null as any),0,import7.NgForOf,[ 297 | import0.ViewContainerRef, 298 | import0.TemplateRef, 299 | import0.IterableDiffers 300 | ] 301 | ,{ngForOf: [ 302 | 0, 303 | 'ngForOf' 304 | ] 305 | },(null as any)), 306 | (l()(),import0.ɵted((null as any),['\n '])), 307 | (l()(),import0.ɵted((null as any),['\n '])), 308 | (l()(),import0.ɵted((null as any),['\n '])), 309 | (l()(),import0.ɵeld(0,[ 310 | [ 311 | 3, 312 | 0 313 | ] 314 | , 315 | [ 316 | 'sidebar', 317 | 1 318 | ] 319 | 320 | ] 321 | ,(null as any),5,'ul',[[ 322 | 'class', 323 | 'ion-alpha-sidebar' 324 | ] 325 | ],(null as any),(null as any),(null as any),(null as any),(null as any))), 326 | import0.ɵdid(278528,(null as any),0,import7.NgStyle,[ 327 | import0.KeyValueDiffers, 328 | import0.ElementRef, 329 | import0.Renderer 330 | ] 331 | ,{ngStyle: [ 332 | 0, 333 | 'ngStyle' 334 | ] 335 | },(null as any)), 336 | (l()(),import0.ɵted((null as any),['\n '])), 337 | (l()(),import0.ɵand(16777216,(null as any),(null as any),1,(null as any),View_AlphaScroll_7)), 338 | import0.ɵdid(802816,(null as any),0,import7.NgForOf,[ 339 | import0.ViewContainerRef, 340 | import0.TemplateRef, 341 | import0.IterableDiffers 342 | ] 343 | ,{ngForOf: [ 344 | 0, 345 | 'ngForOf' 346 | ] 347 | },(null as any)), 348 | (l()(),import0.ɵted((null as any),['\n '])) 349 | ] 350 | ,(ck,v) => { 351 | var co:import12.AlphaScroll = v.component; 352 | const currVal_0:any = (co.headerTemplate != (null as any)); 353 | ck(v,10,0,currVal_0); 354 | const currVal_1:any = co.headerTemplate; 355 | ck(v,13,0,currVal_1); 356 | const currVal_2:any = co.sortedItems; 357 | ck(v,16,0,currVal_2); 358 | const currVal_3:any = co.calculateDimensionsForSidebar(); 359 | ck(v,21,0,currVal_3); 360 | const currVal_4:any = co.alphabet; 361 | ck(v,24,0,currVal_4); 362 | },(null as any)); 363 | } 364 | function View_AlphaScroll_Host_0(l:any):import0.ɵViewDefinition { 365 | return import0.ɵvid(0,[ 366 | (l()(),import0.ɵeld(0,(null as any),(null as any),1,'ion-alpha-scroll',([] as any[]),(null as any),(null as any),(null as any),View_AlphaScroll_0,RenderType_AlphaScroll)), 367 | import0.ɵdid(770048,(null as any),0,import12.AlphaScroll,[ 368 | import0.ElementRef, 369 | import13.OrderBy 370 | ] 371 | ,(null as any),(null as any)) 372 | ] 373 | ,(ck,v) => { 374 | ck(v,1,0); 375 | },(null as any)); 376 | } 377 | export const AlphaScrollNgFactory:import0.ComponentFactory = import0.ɵccf('ion-alpha-scroll',import12.AlphaScroll,View_AlphaScroll_Host_0,{ 378 | listData: 'listData', 379 | key: 'key', 380 | itemTemplate: 'itemTemplate', 381 | currentPageClass: 'currentPageClass', 382 | headerTemplate: 'headerTemplate' 383 | } 384 | ,{},([] as any[])); 385 | //# sourceMappingURL=data:application/json;base64,eyJmaWxlIjoiL1VzZXJzL21hYy93b3JrL2lvbmljLWFscGhhLXNjcm9sbC9zcmMvbW9kdWxlcy9hbHBoYS1zY3JvbGwubmdmYWN0b3J5LnRzIiwidmVyc2lvbiI6Mywic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibmc6Ly8vVXNlcnMvbWFjL3dvcmsvaW9uaWMtYWxwaGEtc2Nyb2xsL3NyYy9tb2R1bGVzL2FscGhhLXNjcm9sbC50cyIsIm5nOi8vL1VzZXJzL21hYy93b3JrL2lvbmljLWFscGhhLXNjcm9sbC9zcmMvbW9kdWxlcy9hbHBoYS1zY3JvbGwudHMuQWxwaGFTY3JvbGwuaHRtbCIsIm5nOi8vL1VzZXJzL21hYy93b3JrL2lvbmljLWFscGhhLXNjcm9sbC9zcmMvbW9kdWxlcy9hbHBoYS1zY3JvbGwudHMuQWxwaGFTY3JvbGxfSG9zdC5odG1sIl0sInNvdXJjZXNDb250ZW50IjpbIiAiLCJcbiAgPHNlY3Rpb24gY2xhc3M9XCJhbHBoYS1saXN0LXdyYXBwZXJcIiAjd3JhcHBlcj5cblx0ICA8aW9uLWxpc3QgY2xhc3M9XCJpb24tYWxwaGEtbGlzdFwiICNsaXN0PlxuXHRcdDxpb24taXRlbS1kaXZpZGVyIGlkPVwic2Nyb2xsLWxldHRlci3ihpFcIiBzdHlsZT1cImRpc3BsYXk6bm9uZVwiICpuZ0lmPVwiaGVhZGVyVGVtcGxhdGUhPW51bGxcIj7ihpE8L2lvbi1pdGVtLWRpdmlkZXI+XG5cdFx0PG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRlclRlbXBsYXRlXCIgPjwvbmctdGVtcGxhdGU+XG5cdCAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc29ydGVkSXRlbXNcIj5cblx0ICAgICAgICA8aW9uLWl0ZW0tZGl2aWRlciBpZD1cInNjcm9sbC1sZXR0ZXIte3tpdGVtLmxldHRlcn19XCIgKm5nSWY9XCJpdGVtLmlzRGl2aWRlclwiPnt7aXRlbS5sZXR0ZXJ9fTwvaW9uLWl0ZW0tZGl2aWRlcj5cblx0ICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbVRlbXBsYXRlXCIgW25nT3V0bGV0Q29udGV4dF09XCJ7J2l0ZW0nOiBpdGVtLCAnY3VycmVudFBhZ2VDbGFzcyc6IGN1cnJlbnRQYWdlQ2xhc3N9XCIgKm5nSWY9XCIhaXRlbS5pc0RpdmlkZXJcIj5cblx0ICAgICAgICA8L25nLXRlbXBsYXRlPlxuXHQgICAgICA8L2Rpdj5cblx0ICAgIDwvaW9uLWxpc3Q+XG4gICAgPC9zZWN0aW9uPlxuICAgIDx1bCBjbGFzcz1cImlvbi1hbHBoYS1zaWRlYmFyXCIgW25nU3R5bGVdPVwiY2FsY3VsYXRlRGltZW5zaW9uc0ZvclNpZGViYXIoKVwiICNzaWRlYmFyPlxuICAgICAgPGxpICpuZ0Zvcj1cImxldCBhbHBoYSBvZiBhbHBoYWJldFwiIFtoaWRkZW5dPVwiIWFscGhhLmlzQWN0aXZlXCIgW2NsYXNzXT1cInNldEFscGhhQ2xhc3MoYWxwaGEpXCI+XG4gICAgICAgIDxhPnt7YWxwaGEubGV0dGVyfX08L2E+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+IiwiPGlvbi1hbHBoYS1zY3JvbGw+PC9pb24tYWxwaGEtc2Nyb2xsPiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNHRTtNQUFBO1FBQUE7UUFBQTtNQUFBOztNQUFBO1FBQUE7UUFBQTtNQUFBOztNQUFBO1FBQUE7UUFBQTtNQUFBOztJQUFBO0tBQUE7Z0JBQUE7Ozs7O01BQUE7UUFBQTs7TUFBQTs7SUFBQTtLQUFBO2dCQUFBO2dCQUFBO2dCQUFBO2dCQUFBOzs7O0lBQUE7S0FBQTtJQUF5Rjs7Ozs7Ozs7O01BR2xGO1FBQUE7UUFBQTtNQUFBO01BQUE7UUFBQTtRQUFBO1FBQUE7TUFBQTtJQUFBO2dCQUFBOzs7OztNQUFBO1FBQUE7O01BQUE7O0lBQUE7S0FBQTtnQkFBQTtnQkFBQTtnQkFBQTtnQkFBQTs7OztJQUFBO0tBQUE7SUFBNEU7TUFBQTtNQUFBO0lBQUE7SUFBQTs7O0lBQTFEO0lBQWxCLFNBQWtCLFNBQWxCO0lBQTRFO0lBQUE7Ozs7eUJBQ29FOzs7O0lBQWhKO2dCQUFBO01BQUE7UUFBQTtRQUFBO01BQUE7O01BQUE7UUFBQTtRQUFBO01BQUE7O0lBQUE7S0FBQTtnQkFBK0M7TUFBQTtNQUFBO0lBQUE7SUFBQTs7Ozs7SUFBbEM7SUFBa0M7SUFBL0MsU0FBYSxVQUFrQyxTQUEvQzs7Ozs7SUFGRjtJQUFzQztJQUNwQztnQkFBQTs7O0lBQUE7T0FBQTtRQUFBO1FBQUE7TUFBQTtJQUFBO0lBQThHO0lBQzlHO2dCQUFBOzs7SUFBQTtPQUFBO1FBQUE7UUFBQTtNQUFBO0lBQUE7SUFDYzs7O0lBRnVDO0lBQXJELFNBQXFELFNBQXJEO0lBQ3dIO0lBQXhILFNBQXdILFNBQXhIOzs7OztJQU1IO01BQUE7UUFBQTtRQUFBO1FBQUE7TUFBQTs7TUFBQTtRQUFBO1FBQUE7UUFBQTtNQUFBOztJQUFBO0tBQUE7SUFBNkY7SUFDM0Y7SUFBRztNQUFBO01BQUE7SUFBQTtJQUFBO0lBQW9COzs7O0lBRFU7SUFBMkI7SUFBOUQsU0FBbUMsVUFBMkIsU0FBOUQ7SUFDSztJQUFBOzs7Ozs7OztJQWRYO0lBQ0U7TUFBQTtRQUFBO1FBQUE7TUFBQTs7TUFBQTtRQUFBO1FBQUE7TUFBQTs7SUFBQTtPQUFBO1FBQUE7UUFBQTtNQUFBO0lBQUE7SUFBNkM7SUFDNUM7TUFBQTtRQUFBO1FBQUE7TUFBQTs7TUFBQTtRQUFBO1FBQUE7TUFBQTs7SUFBQTtPQUFBO1FBQUE7UUFBQTtNQUFBO0lBQUE7Z0JBQUE7Ozs7Ozs7SUFBQTtLQUFBO0lBQXVDO0lBQ3hDO2dCQUFBOzs7SUFBQTtPQUFBO1FBQUE7UUFBQTtNQUFBO0lBQUE7SUFBNkc7SUFDN0c7a0JBQUE7UUFBQTtRQUFBO01BQUE7SUFBQTtJQUFnRTtJQUMzRDtnQkFBQTs7OztJQUFBO09BQUE7UUFBQTtRQUFBO01BQUE7SUFBQTtJQUlNO0lBQ0c7SUFDRjtJQUNWO01BQUE7UUFBQTtRQUFBO01BQUE7O01BQUE7UUFBQTtRQUFBO01BQUE7O0lBQUE7T0FBQTtRQUFBO1FBQUE7TUFBQTtJQUFBO2dCQUFBOzs7O0lBQUE7T0FBQTtRQUFBO1FBQUE7TUFBQTtJQUFBO0lBQW1GO0lBQ2pGO2dCQUFBOzs7O0lBQUE7T0FBQTtRQUFBO1FBQUE7TUFBQTtJQUFBO0lBRUs7Ozs7SUFabUQ7SUFBNUQsVUFBNEQsU0FBNUQ7SUFDYTtJQUFiLFVBQWEsU0FBYjtJQUNVO0lBQUwsVUFBSyxTQUFMO0lBTzJCO0lBQTlCLFVBQThCLFNBQTlCO0lBQ007SUFBSixVQUFJLFNBQUo7Ozs7O0lDYk47Z0JBQUE7OztJQUFBO0tBQUE7OztJQUFBOzs7Ozs7Ozs7OyJ9 386 | -------------------------------------------------------------------------------- /aot/src/modules/alpha-scroll.ngsummary.json: -------------------------------------------------------------------------------- 1 | {"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbolic":"class","members":{"mainWrapper":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]},"arguments":["wrapper"]}]}],"list":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]},"arguments":["list"]}]}],"sidebar":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]},"arguments":["sidebar"]}]}],"listData":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":2,"members":[]}}]}],"key":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":2,"members":[]}}]}],"itemTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":2,"members":[]}}]}],"currentPageClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":2,"members":[]}}]}],"headerTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":2,"members":[]}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbol":3,"members":[]},{"__symbol":4,"members":[]}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"setAlphaClass":[{"__symbolic":"method"}],"calculateDimensionsForSidebar":[{"__symbolic":"method"}],"setTouchHandlers":[{"__symbolic":"method"}],"unwindGroup":[{"__symbolic":"method"}],"iterateAlphabet":[{"__symbolic":"method"}]}},"type":{"summaryKind":1,"type":{"reference":{"__symbol":0,"members":[]},"diDeps":[{"isAttribute":false,"isHost":false,"isSelf":false,"isSkipSelf":false,"isOptional":false,"token":{"identifier":{"reference":{"__symbol":3,"members":[]}}}},{"isAttribute":false,"isHost":false,"isSelf":false,"isSkipSelf":false,"isOptional":false,"token":{"identifier":{"reference":{"__symbol":4,"members":[]}}}}],"lifecycleHooks":[0,1,3]},"isComponent":true,"selector":"ion-alpha-scroll","exportAs":null,"inputs":{"listData":"listData","key":"key","itemTemplate":"itemTemplate","currentPageClass":"currentPageClass","headerTemplate":"headerTemplate"},"outputs":{},"hostListeners":{},"hostProperties":{},"hostAttributes":{},"providers":[],"viewProviders":[],"queries":[],"viewQueries":[{"selectors":[{"value":"wrapper"}],"first":true,"descendants":true,"propertyName":"mainWrapper","read":null},{"selectors":[{"value":"list"}],"first":true,"descendants":true,"propertyName":"list","read":null},{"selectors":[{"value":"sidebar"}],"first":true,"descendants":true,"propertyName":"sidebar","read":null}],"entryComponents":[],"changeDetection":1,"template":{"animations":[],"ngContentSelectors":[],"encapsulation":2},"componentViewType":{"__symbol":5,"members":[]},"rendererType":{"__symbol":6,"members":[]},"componentFactory":{"__symbol":7,"members":[]}}}],"symbols":[{"__symbol":0,"name":"AlphaScroll","filePath":"/Users/mac/work/ionic-alpha-scroll/src/modules/alpha-scroll.d.ts"},{"__symbol":1,"name":"ViewChild","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/@angular/core/core.d.ts"},{"__symbol":2,"name":"Input","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/@angular/core/core.d.ts"},{"__symbol":3,"name":"ElementRef","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/@angular/core/core.d.ts"},{"__symbol":4,"name":"OrderBy","filePath":"/Users/mac/work/ionic-alpha-scroll/src/pipes/order-by.d.ts"},{"__symbol":5,"name":"View_AlphaScroll_0","filePath":"/Users/mac/work/ionic-alpha-scroll/src/modules/alpha-scroll.ngfactory.d.ts"},{"__symbol":6,"name":"RenderType_AlphaScroll","filePath":"/Users/mac/work/ionic-alpha-scroll/src/modules/alpha-scroll.ngfactory.d.ts"},{"__symbol":7,"name":"AlphaScrollNgFactory","filePath":"/Users/mac/work/ionic-alpha-scroll/src/modules/alpha-scroll.ngfactory.d.ts"}]} -------------------------------------------------------------------------------- /aot/src/pipes/bypass-trust-res-url.ngsummary.json: -------------------------------------------------------------------------------- 1 | {"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbol":1,"members":[]}]}],"transform":[{"__symbolic":"method"}]}},"type":{"summaryKind":0,"type":{"reference":{"__symbol":0,"members":[]},"diDeps":[{"isAttribute":false,"isHost":false,"isSelf":false,"isSkipSelf":false,"isOptional":false,"token":{"identifier":{"reference":{"__symbol":1,"members":[]}}}}],"lifecycleHooks":[]},"name":"trustResourceUrl","pure":true}}],"symbols":[{"__symbol":0,"name":"TrustResourceUrl","filePath":"/Users/mac/work/ionic-alpha-scroll/src/pipes/bypass-trust-res-url.d.ts"},{"__symbol":1,"name":"DomSanitizer","filePath":"/Users/mac/work/ionic-alpha-scroll/node_modules/@angular/platform-browser/platform-browser.d.ts"}]} -------------------------------------------------------------------------------- /aot/src/pipes/map-to-iterable.ngsummary.json: -------------------------------------------------------------------------------- 1 | {"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbolic":"class","members":{"transform":[{"__symbolic":"method"}]}},"type":{"summaryKind":0,"type":{"reference":{"__symbol":0,"members":[]},"diDeps":[],"lifecycleHooks":[]},"name":"mapToIterable","pure":true}}],"symbols":[{"__symbol":0,"name":"MapToIterable","filePath":"/Users/mac/work/ionic-alpha-scroll/src/pipes/map-to-iterable.d.ts"}]} -------------------------------------------------------------------------------- /aot/src/pipes/order-by.ngsummary.json: -------------------------------------------------------------------------------- 1 | {"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbolic":"class","members":{"transform":[{"__symbolic":"method"}],"isSingle":[{"__symbolic":"method"}],"parseProperty":[{"__symbolic":"method"}],"parseProperties":[{"__symbolic":"method"}]}},"type":{"summaryKind":0,"type":{"reference":{"__symbol":0,"members":[]},"diDeps":[],"lifecycleHooks":[]},"name":"orderBy","pure":true}}],"symbols":[{"__symbol":0,"name":"OrderBy","filePath":"/Users/mac/work/ionic-alpha-scroll/src/pipes/order-by.d.ts"}]} -------------------------------------------------------------------------------- /aot/src/pipes/pipes.module.ngfactory.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview This file is generated by the Angular template compiler. 3 | * Do not edit. 4 | * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride} 5 | */ 6 | /* tslint:disable */ 7 | 8 | 9 | import * as import0 from '@angular/core'; 10 | import * as import1 from '../../../src/pipes/pipes.module'; 11 | class PipesModuleInjector extends import0.ɵNgModuleInjector { 12 | _PipesModule_0:import1.PipesModule; 13 | constructor(parent:import0.Injector) { 14 | super(parent,([] as any[]),([] as any[])); 15 | } 16 | createInternal():import1.PipesModule { 17 | this._PipesModule_0 = new import1.PipesModule(); 18 | return this._PipesModule_0; 19 | } 20 | getInternal(token:any,notFoundResult:any):any { 21 | if ((token === import1.PipesModule)) { return this._PipesModule_0; } 22 | return notFoundResult; 23 | } 24 | destroyInternal():void { 25 | } 26 | } 27 | export const PipesModuleNgFactory:import0.NgModuleFactory = new import0.NgModuleFactory(PipesModuleInjector,import1.PipesModule); 28 | //# sourceMappingURL=data:application/json;base64,eyJmaWxlIjoiL1VzZXJzL21hYy93b3JrL2lvbmljLWFscGhhLXNjcm9sbC9zcmMvcGlwZXMvcGlwZXMubW9kdWxlLm5nZmFjdG9yeS50cyIsInZlcnNpb24iOjMsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm5nOi8vL1VzZXJzL21hYy93b3JrL2lvbmljLWFscGhhLXNjcm9sbC9zcmMvcGlwZXMvcGlwZXMubW9kdWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIiAiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ== 29 | -------------------------------------------------------------------------------- /aot/src/pipes/pipes.module.ngsummary.json: -------------------------------------------------------------------------------- 1 | {"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbolic":"class","statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbol":0,"members":[]},"providers":[{"__symbol":1,"members":[]},{"__symbol":2,"members":[]},{"__symbol":3,"members":[]}]}}}},"type":{"summaryKind":2,"type":{"reference":{"__symbol":0,"members":[]},"diDeps":[],"lifecycleHooks":[]},"entryComponents":[],"providers":[],"modules":[{"reference":{"__symbol":0,"members":[]},"diDeps":[],"lifecycleHooks":[]}],"exportedDirectives":[],"exportedPipes":[{"reference":{"__symbol":1,"members":[]}},{"reference":{"__symbol":2,"members":[]}},{"reference":{"__symbol":3,"members":[]}}]}},{"symbol":{"__symbol":4,"members":[]},"metadata":{"__symbol":1,"members":[]}},{"symbol":{"__symbol":5,"members":[]},"metadata":{"__symbol":2,"members":[]}},{"symbol":{"__symbol":6,"members":[]},"metadata":{"__symbol":3,"members":[]}}],"symbols":[{"__symbol":0,"name":"PipesModule","filePath":"/Users/mac/work/ionic-alpha-scroll/src/pipes/pipes.module.d.ts"},{"__symbol":1,"name":"MapToIterable","filePath":"/Users/mac/work/ionic-alpha-scroll/src/pipes/map-to-iterable.d.ts"},{"__symbol":2,"name":"OrderBy","filePath":"/Users/mac/work/ionic-alpha-scroll/src/pipes/order-by.d.ts"},{"__symbol":3,"name":"TrustResourceUrl","filePath":"/Users/mac/work/ionic-alpha-scroll/src/pipes/bypass-trust-res-url.d.ts"},{"__symbol":4,"name":"MapToIterable","filePath":"/Users/mac/work/ionic-alpha-scroll/src/pipes/pipes.module.d.ts"},{"__symbol":5,"name":"OrderBy","filePath":"/Users/mac/work/ionic-alpha-scroll/src/pipes/pipes.module.d.ts"},{"__symbol":6,"name":"TrustResourceUrl","filePath":"/Users/mac/work/ionic-alpha-scroll/src/pipes/pipes.module.d.ts"}]} -------------------------------------------------------------------------------- /dist/index.d.ts: -------------------------------------------------------------------------------- 1 | import { ModuleWithProviders } from '@angular/core'; 2 | export * from './modules/alpha-scroll.module'; 3 | export * from './pipes/pipes.module'; 4 | export declare class AlphaScrollModule { 5 | static forRoot(): ModuleWithProviders; 6 | } 7 | -------------------------------------------------------------------------------- /dist/index.js: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { ScrollModule } from './modules/alpha-scroll.module'; 3 | import { PipesModule } from './pipes/pipes.module'; 4 | export * from './modules/alpha-scroll.module'; 5 | export * from './pipes/pipes.module'; 6 | var AlphaScrollModule = (function () { 7 | function AlphaScrollModule() { 8 | } 9 | AlphaScrollModule.forRoot = function () { 10 | return { 11 | ngModule: AlphaScrollModule, providers: [] 12 | }; 13 | }; 14 | return AlphaScrollModule; 15 | }()); 16 | export { AlphaScrollModule }; 17 | AlphaScrollModule.decorators = [ 18 | { type: NgModule, args: [{ 19 | imports: [ 20 | ScrollModule.forRoot(), 21 | PipesModule.forRoot() 22 | ], 23 | exports: [ 24 | ScrollModule, 25 | PipesModule 26 | ] 27 | },] }, 28 | ]; 29 | /** @nocollapse */ 30 | AlphaScrollModule.ctorParameters = function () { return []; }; 31 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /dist/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuB,QAAA,EAAS,MAAO,eAAA,CAAgB;AAC9D,OAAO,EAAE,YAAA,EAAa,MAAO,+BAAA,CAAgC;AAC7D,OAAO,EAAE,WAAA,EAAY,MAAO,sBAAA,CAAuB;AAEnD,cAAc,+BAAA,CAAgC;AAC9C,cAAc,sBAAA,CAAuB;AAGrC;IAAA;IAqBA,CAAC;IApBc,yBAAO,GAArB;QACC,MAAM,CAAC;YACN,QAAQ,EAAE,iBAAiB,EAAE,SAAS,EAAE,EAAE;SAC1C,CAAC;IACH,CAAC;IAgBF,wBAAC;AAAD,CArBA,AAqBC;;AAfM,4BAAU,GAA0B;IAC3C,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;gBACxB,OAAO,EAAE;oBACR,YAAY,CAAC,OAAO,EAAE;oBACtB,WAAW,CAAC,OAAO,EAAE;iBACrB;gBACD,OAAO,EAAE;oBACL,YAAY;oBACf,WAAW;iBACX;aACD,EAAG,EAAE;CACL,CAAC;AACF,kBAAkB;AACX,gCAAc,GAAmE,cAAM,OAAA,EAC7F,EAD6F,CAC7F,CAAC","file":"index.js","sourceRoot":"","sourcesContent":["\n\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { ScrollModule } from './modules/alpha-scroll.module';\nimport { PipesModule } from './pipes/pipes.module';\n\nexport * from './modules/alpha-scroll.module';\nexport * from './pipes/pipes.module';\n\n\nexport class AlphaScrollModule {\n\tpublic static forRoot(): ModuleWithProviders {\n\t\treturn {\n\t\t\tngModule: AlphaScrollModule, providers: []\n\t\t};\n\t}\nstatic decorators: DecoratorInvocation[] = [\n{ type: NgModule, args: [{\n\timports: [\n\t\tScrollModule.forRoot(),\n\t\tPipesModule.forRoot()\n\t],\n\texports: [\n \tScrollModule,\n\t\tPipesModule\n\t]\n}, ] },\n];\n/** @nocollapse */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]} -------------------------------------------------------------------------------- /dist/index.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"AlphaScrollModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule"},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"./modules/alpha-scroll.module","name":"ScrollModule"},"member":"forRoot"}},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"./pipes/pipes.module","name":"PipesModule"},"member":"forRoot"}}],"exports":[{"__symbolic":"reference","module":"./modules/alpha-scroll.module","name":"ScrollModule"},{"__symbolic":"reference","module":"./pipes/pipes.module","name":"PipesModule"}]}]}],"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"AlphaScrollModule"},"providers":[]}}}}},"exports":[{"from":"./modules/alpha-scroll.module"},{"from":"./pipes/pipes.module"}]},{"__symbolic":"module","version":1,"metadata":{"AlphaScrollModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule"},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"./modules/alpha-scroll.module","name":"ScrollModule"},"member":"forRoot"}},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"./pipes/pipes.module","name":"PipesModule"},"member":"forRoot"}}],"exports":[{"__symbolic":"reference","module":"./modules/alpha-scroll.module","name":"ScrollModule"},{"__symbolic":"reference","module":"./pipes/pipes.module","name":"PipesModule"}]}]}],"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"AlphaScrollModule"},"providers":[]}}}}},"exports":[{"from":"./modules/alpha-scroll.module"},{"from":"./pipes/pipes.module"}]}] -------------------------------------------------------------------------------- /dist/modules/alpha-scroll.d.ts: -------------------------------------------------------------------------------- 1 | import { ElementRef, OnChanges, OnDestroy, OnInit, TemplateRef } from '@angular/core'; 2 | import { OrderBy } from '../pipes/order-by'; 3 | export declare class AlphaScroll implements OnInit, OnChanges, OnDestroy { 4 | private elementRef; 5 | private orderBy; 6 | mainWrapper: ElementRef; 7 | list: ElementRef; 8 | sidebar: ElementRef; 9 | listData: any; 10 | key: string; 11 | itemTemplate: TemplateRef; 12 | currentPageClass: any; 13 | /** 14 | * 头部区域模板 15 | * 16 | * @type {TemplateRef} 17 | * @memberof AlphaScroll 18 | */ 19 | headerTemplate: TemplateRef; 20 | private letterIndicatorEle; 21 | private indicatorHeight; 22 | private indicatorWidth; 23 | private alloyTouch; 24 | private sidebarTouch; 25 | sortedItems: any; 26 | alphabet: any; 27 | constructor(elementRef: ElementRef, orderBy: OrderBy); 28 | ngOnInit(): void; 29 | ngOnChanges(): void; 30 | ngOnDestroy(): void; 31 | setAlphaClass(alpha: any): string; 32 | calculateDimensionsForSidebar(): { 33 | height: string; 34 | }; 35 | private setTouchHandlers(); 36 | private unwindGroup(groupItems); 37 | private iterateAlphabet(alphabet); 38 | } 39 | -------------------------------------------------------------------------------- /dist/modules/alpha-scroll.js: -------------------------------------------------------------------------------- 1 | import * as _ from 'lodash'; 2 | import { Component, ElementRef, Input, ViewChild } from '@angular/core'; 3 | import { OrderBy } from '../pipes/order-by'; 4 | import * as AlloyTouch from 'alloytouch'; 5 | import * as Transform from 'alloytouch-transformjs'; 6 | // import { Vibration } from '@ionic-native/vibration'; 7 | var AlphaScroll = (function () { 8 | function AlphaScroll(elementRef, orderBy) { 9 | this.elementRef = elementRef; 10 | this.orderBy = orderBy; 11 | this.sortedItems = []; 12 | this.alphabet = []; 13 | this.letterIndicatorEle = document.createElement('div'); 14 | this.letterIndicatorEle.className = 'ion-alpha-letter-indicator'; 15 | var body = document.getElementsByTagName('body')[0]; 16 | body.appendChild(this.letterIndicatorEle); 17 | } 18 | AlphaScroll.prototype.ngOnInit = function () { 19 | var _this = this; 20 | console.log(this.elementRef.nativeElement.offsetHeight); 21 | console.log(this.list.nativeElement.offsetHeight); 22 | setTimeout(function () { 23 | _this.indicatorWidth = _this.letterIndicatorEle.offsetWidth; 24 | _this.indicatorHeight = _this.letterIndicatorEle.offsetHeight; 25 | _this.setTouchHandlers(); 26 | }); 27 | }; 28 | AlphaScroll.prototype.ngOnChanges = function () { 29 | var _this = this; 30 | var sortedListData = this.orderBy.transform(this.listData, [this.key]); 31 | var groupItems = _.groupBy(sortedListData, function (item) { 32 | var letter = _.get(item, _this.key); 33 | return letter.toUpperCase().charAt(0); 34 | }); 35 | //根据头部模板是否为null 添加字符 36 | if (this.headerTemplate != null || this.headerTemplate != undefined) { 37 | groupItems['↑'] = []; 38 | } 39 | this.sortedItems = this.unwindGroup(groupItems); 40 | this.alphabet = this.iterateAlphabet(groupItems); 41 | }; 42 | AlphaScroll.prototype.ngOnDestroy = function () { 43 | if (this.letterIndicatorEle) { 44 | this.letterIndicatorEle.remove(); 45 | } 46 | }; 47 | AlphaScroll.prototype.setAlphaClass = function (alpha) { 48 | return alpha.isActive ? 'ion-alpha-active' : 'ion-alpha-invalid'; 49 | }; 50 | AlphaScroll.prototype.calculateDimensionsForSidebar = function () { 51 | return { 52 | height: this.mainWrapper.nativeElement.clientHeight + 'px' 53 | }; 54 | }; 55 | AlphaScroll.prototype.setTouchHandlers = function () { 56 | var _this = this; 57 | var sidebarEle = this.elementRef.nativeElement.querySelector('.ion-alpha-sidebar'); 58 | if (!sidebarEle) 59 | return; 60 | this.elementRef.nativeElement.addEventListener('touchmove', function (evt) { 61 | evt.preventDefault(); 62 | }, false); 63 | setTimeout(function () { 64 | var min = _this.elementRef.nativeElement.offsetHeight - _this.list.nativeElement.offsetHeight; 65 | _this.alloyTouch = new AlloyTouch({ 66 | touch: _this.mainWrapper.nativeElement, 67 | vertical: true, 68 | target: _this.list.nativeElement, 69 | property: "translateY", 70 | min: min, 71 | max: 0, 72 | sensitivity: 1, 73 | factor: 1, 74 | step: 45, 75 | bindSelf: false, 76 | maxSpeed: 2, 77 | initialValue: 0 78 | }); 79 | var chooseEle = function (evt) { 80 | var closestEle = evt.type == 'touchend' ? document.elementFromPoint(evt.changedTouches[0].pageX, evt.changedTouches[0].pageY) : document.elementFromPoint(evt.targetTouches[0].pageX, evt.targetTouches[0].pageY); 81 | // // console.log(closestEle); 82 | if (closestEle && ['LI', 'A'].indexOf(closestEle.tagName) > -1) { 83 | var letter = closestEle.innerText; 84 | _this.letterIndicatorEle.innerText = letter; 85 | _this.letterIndicatorEle.style.visibility = 'visible'; 86 | var letterDivider = _this.elementRef.nativeElement.querySelector("#scroll-letter-" + letter); 87 | var letterTop = letterDivider.offsetTop; 88 | if (letterDivider) { 89 | _this.alloyTouch.to(-letterTop < min ? min : -letterTop, 0); 90 | } 91 | } 92 | }; 93 | _this.sidebarTouch = new AlloyTouch({ 94 | touch: _this.sidebar.nativeElement, 95 | vertical: true, 96 | target: _this.sidebar.nativeElement, 97 | property: "translateY", 98 | min: 0, 99 | max: 0, 100 | sensitivity: 1, 101 | factor: 1, 102 | step: 45, 103 | bindSelf: false, 104 | maxSpeed: 2, 105 | initialValue: 0, 106 | touchStart: function () { 107 | _this.alloyTouch.stop(); 108 | _this.letterIndicatorEle.style.top = ((window.innerHeight - _this.indicatorHeight) / 2) + 'px'; 109 | _this.letterIndicatorEle.style.left = ((window.innerWidth - _this.indicatorWidth) / 2) + 'px'; 110 | }, 111 | touchMove: function (evt) { 112 | chooseEle(evt); 113 | }, 114 | touchEnd: function () { 115 | _this.letterIndicatorEle.style.visibility = 'hidden'; 116 | }, 117 | tap: function (evt) { 118 | chooseEle(evt); 119 | } 120 | }); 121 | Transform(_this.list.nativeElement, true); 122 | }); 123 | }; 124 | AlphaScroll.prototype.unwindGroup = function (groupItems) { 125 | var result = []; 126 | for (var letter in groupItems) { 127 | result = result.concat([{ isDivider: true, letter: letter }].concat(groupItems[letter])); 128 | } 129 | return result; 130 | }; 131 | AlphaScroll.prototype.iterateAlphabet = function (alphabet) { 132 | var str; 133 | if (this.headerTemplate != null || this.headerTemplate != undefined) { 134 | str = '↑ABCDEFGHIJKLMNOPQRSTUVWXYZ'; 135 | } 136 | else { 137 | str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; 138 | } 139 | var result = []; 140 | for (var i = 0; i < str.length; i++) { 141 | var letter = str.charAt(i); 142 | var isActive = alphabet[letter] ? true : false; 143 | result.push({ letter: letter, isActive: isActive }); 144 | } 145 | return result; 146 | }; 147 | return AlphaScroll; 148 | }()); 149 | export { AlphaScroll }; 150 | AlphaScroll.decorators = [ 151 | { type: Component, args: [{ 152 | selector: 'ion-alpha-scroll', 153 | template: "\n \n\t \n\t\t\u2191\n\t\t\n\t \n\t {{item.letter}}\n\t \n\t \n\t \n\t \n \n \n \n {{alpha.letter}}\n \n " 154 | },] }, 155 | ]; 156 | /** @nocollapse */ 157 | AlphaScroll.ctorParameters = function () { return [ 158 | { type: ElementRef, }, 159 | { type: OrderBy, }, 160 | ]; }; 161 | AlphaScroll.propDecorators = { 162 | 'mainWrapper': [{ type: ViewChild, args: ['wrapper',] },], 163 | 'list': [{ type: ViewChild, args: ['list',] },], 164 | 'sidebar': [{ type: ViewChild, args: ['sidebar',] },], 165 | 'listData': [{ type: Input },], 166 | 'key': [{ type: Input },], 167 | 'itemTemplate': [{ type: Input },], 168 | 'currentPageClass': [{ type: Input },], 169 | 'headerTemplate': [{ type: Input },], 170 | }; 171 | //# sourceMappingURL=alpha-scroll.js.map -------------------------------------------------------------------------------- /dist/modules/alpha-scroll.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../src/modules/alpha-scroll.ts"],"names":[],"mappings":"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","file":"alpha-scroll.js","sourceRoot":"","sourcesContent":["import * as _ from 'lodash';\nimport {\n\tComponent,\n\tElementRef,\n\tInput,\n\tOnChanges,\n\tOnDestroy,\n\tOnInit,\n\tTemplateRef,\n\tViewChild\n} from '@angular/core';\n\nimport { OrderBy } from '../pipes/order-by';\n\nimport * as AlloyTouch from 'alloytouch';\nimport * as Transform from 'alloytouch-transformjs';\n// import { Vibration } from '@ionic-native/vibration';\n\n\nexport class AlphaScroll implements OnInit, OnChanges, OnDestroy {\n\t mainWrapper: ElementRef;\n\t list: ElementRef;\n\t sidebar: ElementRef;\n\t listData: any;\n\t key: string;\n\t itemTemplate: TemplateRef;\n\t currentPageClass: any;\n\t/**\n\t * 头部区域模板\n\t *\n\t * @type {TemplateRef}\n\t * @memberof AlphaScroll\n\t */\n\t headerTemplate: TemplateRef;\n\tprivate letterIndicatorEle: HTMLElement;\n\tprivate indicatorHeight: number;\n\tprivate indicatorWidth: number;\n\tprivate alloyTouch: any;\n\tprivate sidebarTouch: any;\n\tsortedItems: any = [];\n\talphabet: any = [];\n\tconstructor(\n\t\tprivate elementRef: ElementRef,\n\t\tprivate orderBy: OrderBy\n\t) {\n\t\tthis.letterIndicatorEle = document.createElement('div');\n\t\tthis.letterIndicatorEle.className = 'ion-alpha-letter-indicator';\n\t\tlet body = document.getElementsByTagName('body')[0];\n\t\tbody.appendChild(this.letterIndicatorEle);\n\t}\n\tngOnInit() {\n\t\tconsole.log(this.elementRef.nativeElement.offsetHeight);\n\t\tconsole.log(this.list.nativeElement.offsetHeight);\n\t\tsetTimeout(() => {\n\t\t\tthis.indicatorWidth = this.letterIndicatorEle.offsetWidth;\n\t\t\tthis.indicatorHeight = this.letterIndicatorEle.offsetHeight;\n\t\t\tthis.setTouchHandlers();\n\t\t});\n\t}\n\tngOnChanges() {\n\t\tlet sortedListData: Array = this.orderBy.transform(this.listData, [this.key]);\n\t\tlet groupItems: any = _.groupBy(sortedListData, item => {\n\t\t\tlet letter: any = _.get(item, this.key);\n\t\t\treturn letter.toUpperCase().charAt(0);\n\t\t});\n\t\t//根据头部模板是否为null 添加字符\n\t\tif(this.headerTemplate != null || this.headerTemplate != undefined){\n\t\t\tgroupItems['↑'] = [];\n\t\t}\n\t\tthis.sortedItems = this.unwindGroup(groupItems);\n\t\tthis.alphabet = this.iterateAlphabet(groupItems);\n\t}\n\n\tngOnDestroy() {\n\t\tif (this.letterIndicatorEle) {\n\t\t\tthis.letterIndicatorEle.remove();\n\t\t}\n\t}\n\n\tsetAlphaClass(alpha: any): string {\n\t\treturn alpha.isActive ? 'ion-alpha-active' : 'ion-alpha-invalid';\n\t}\n\n\tcalculateDimensionsForSidebar() {\n\t\treturn {\n\t\t\theight: this.mainWrapper.nativeElement.clientHeight + 'px'\n\t\t};\n\t}\n\tprivate setTouchHandlers() {\n\t\tlet sidebarEle: HTMLElement = this.elementRef.nativeElement.querySelector('.ion-alpha-sidebar');\n\t\tif (!sidebarEle) return;\n\t\tthis.elementRef.nativeElement.addEventListener('touchmove', function (evt) {\n\t\t\tevt.preventDefault();\n\t\t}, false);\n\t\tsetTimeout(() => {\n\t\t\tlet min = this.elementRef.nativeElement.offsetHeight - this.list.nativeElement.offsetHeight;\n\t\t\tthis.alloyTouch = new AlloyTouch({\n\t\t\t\ttouch: this.mainWrapper.nativeElement,//反馈触摸的dom\n\t\t\t\tvertical: true,//不必需,默认是true代表监听竖直方向touch\n\t\t\t\ttarget: this.list.nativeElement, //运动的对象\n\t\t\t\tproperty: \"translateY\", //被运动的属性\n\t\t\t\tmin: min,\n\t\t\t\tmax: 0, //不必需,滚动属性的最大值\n\t\t\t\tsensitivity: 1,//不必需,触摸区域的灵敏度,默认值为1,可以为负数\n\t\t\t\tfactor: 1,//不必需,表示触摸位移与被运动属性映射关系,默认值是1\n\t\t\t\tstep: 45,//用于校正到step的整数倍\n\t\t\t\tbindSelf: false,\n\t\t\t\tmaxSpeed: 2, //不必需,触摸反馈的最大速度限制\n\t\t\t\tinitialValue: 0\n\t\t\t});\n\t\t\tlet chooseEle = (evt) => {\n\t\t\t\tlet closestEle: any = evt.type == 'touchend' ? document.elementFromPoint(evt.changedTouches[0].pageX, evt.changedTouches[0].pageY) : document.elementFromPoint(evt.targetTouches[0].pageX, evt.targetTouches[0].pageY);\n\t\t\t\t// // console.log(closestEle);\n\t\t\t\tif (closestEle && ['LI', 'A'].indexOf(closestEle.tagName) > -1) {\n\t\t\t\t\tlet letter = closestEle.innerText;\n\t\t\t\t\tthis.letterIndicatorEle.innerText = letter;\n\t\t\t\t\tthis.letterIndicatorEle.style.visibility = 'visible';\n\t\t\t\t\tlet letterDivider: any = this.elementRef.nativeElement.querySelector(`#scroll-letter-${letter}`);\n\t\t\t\t\tlet letterTop: number = letterDivider.offsetTop;\n\t\t\t\t\tif (letterDivider) {\n\t\t\t\t\t\tthis.alloyTouch.to(-letterTop < min ? min : -letterTop, 0);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.sidebarTouch = new AlloyTouch({\n\t\t\t\ttouch: this.sidebar.nativeElement,//反馈触摸的dom\n\t\t\t\tvertical: true,//不必需,默认是true代表监听竖直方向touch\n\t\t\t\ttarget: this.sidebar.nativeElement, //运动的对象\n\t\t\t\tproperty: \"translateY\", //被运动的属性\n\t\t\t\tmin: 0,\n\t\t\t\tmax: 0, //不必需,滚动属性的最大值\n\t\t\t\tsensitivity: 1,//不必需,触摸区域的灵敏度,默认值为1,可以为负数\n\t\t\t\tfactor: 1,//不必需,表示触摸位移与被运动属性映射关系,默认值是1\n\t\t\t\tstep: 45,//用于校正到step的整数倍\n\t\t\t\tbindSelf: false,\n\t\t\t\tmaxSpeed: 2, //不必需,触摸反馈的最大速度限制\n\t\t\t\tinitialValue: 0,\n\t\t\t\ttouchStart: () => {\n\t\t\t\t\tthis.alloyTouch.stop();\n\t\t\t\t\tthis.letterIndicatorEle.style.top = ((window.innerHeight - this.indicatorHeight) / 2) + 'px';\n\t\t\t\t\tthis.letterIndicatorEle.style.left = ((window.innerWidth - this.indicatorWidth) / 2) + 'px';\n\t\t\t\t},\n\t\t\t\ttouchMove: (evt) => {\n\t\t\t\t\tchooseEle(evt);\n\t\t\t\t},\n\t\t\t\ttouchEnd: () => {\n\t\t\t\t\tthis.letterIndicatorEle.style.visibility = 'hidden';\n\t\t\t\t},\n\t\t\t\ttap: (evt) => {\n\t\t\t\t\tchooseEle(evt);\n\t\t\t\t}\n\t\t\t});\n\t\t\tTransform(this.list.nativeElement, true);\n\t\t});\n\t}\n\tprivate unwindGroup(groupItems: any): Array {\n\t\tlet result: Array = [];\n\t\tfor (let letter in groupItems) {\n\t\t\tresult = result.concat([{ isDivider: true, letter: letter }].concat(groupItems[letter]));\n\t\t}\n\t\treturn result;\n\t}\n\tprivate iterateAlphabet(alphabet: any): Array {\n\t\tlet str: string;\n\t\tif (this.headerTemplate != null || this.headerTemplate != undefined) {\n\t\t\tstr = '↑ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n\t\t} else {\n\t\t\tstr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n\t\t}\n\t\tlet result: Array = [];\n\t\tfor (let i = 0; i < str.length; i++) {\n\t\t\tlet letter = str.charAt(i);\n\t\t\tlet isActive = alphabet[letter] ? true : false;\n\t\t\tresult.push({ letter: letter, isActive: isActive });\n\t\t}\n\t\treturn result;\n\t}\nstatic decorators: DecoratorInvocation[] = [\n{ type: Component, args: [{\n\tselector: 'ion-alpha-scroll',\n\ttemplate: `\n \n\t \n\t\t↑\n\t\t\n\t \n\t {{item.letter}}\n\t \n\t \n\t \n\t \n \n \n \n {{alpha.letter}}\n \n `\n}, ] },\n];\n/** @nocollapse */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: ElementRef, },\n{type: OrderBy, },\n];\nstatic propDecorators: {[key: string]: DecoratorInvocation[]} = {\n'mainWrapper': [{ type: ViewChild, args: ['wrapper', ] },],\n'list': [{ type: ViewChild, args: ['list', ] },],\n'sidebar': [{ type: ViewChild, args: ['sidebar', ] },],\n'listData': [{ type: Input },],\n'key': [{ type: Input },],\n'itemTemplate': [{ type: Input },],\n'currentPageClass': [{ type: Input },],\n'headerTemplate': [{ type: Input },],\n};\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]} -------------------------------------------------------------------------------- /dist/modules/alpha-scroll.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"AlphaScroll":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"ion-alpha-scroll","template":"\n \n\t \n\t\t↑\n\t\t\n\t \n\t {{item.letter}}\n\t \n\t \n\t \n\t \n \n \n \n {{alpha.letter}}\n \n "}]}],"members":{"mainWrapper":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild"},"arguments":["wrapper"]}]}],"list":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild"},"arguments":["list"]}]}],"sidebar":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild"},"arguments":["sidebar"]}]}],"listData":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"key":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"itemTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"currentPageClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"headerTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"},{"__symbolic":"reference","module":"../pipes/order-by","name":"OrderBy"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"setAlphaClass":[{"__symbolic":"method"}],"calculateDimensionsForSidebar":[{"__symbolic":"method"}],"setTouchHandlers":[{"__symbolic":"method"}],"unwindGroup":[{"__symbolic":"method"}],"iterateAlphabet":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"AlphaScroll":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"ion-alpha-scroll","template":"\n \n\t \n\t\t↑\n\t\t\n\t \n\t {{item.letter}}\n\t \n\t \n\t \n\t \n \n \n \n {{alpha.letter}}\n \n "}]}],"members":{"mainWrapper":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild"},"arguments":["wrapper"]}]}],"list":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild"},"arguments":["list"]}]}],"sidebar":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild"},"arguments":["sidebar"]}]}],"listData":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"key":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"itemTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"currentPageClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"headerTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"},{"__symbolic":"reference","module":"../pipes/order-by","name":"OrderBy"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"setAlphaClass":[{"__symbolic":"method"}],"calculateDimensionsForSidebar":[{"__symbolic":"method"}],"setTouchHandlers":[{"__symbolic":"method"}],"unwindGroup":[{"__symbolic":"method"}],"iterateAlphabet":[{"__symbolic":"method"}]}}}}] -------------------------------------------------------------------------------- /dist/modules/alpha-scroll.module.d.ts: -------------------------------------------------------------------------------- 1 | import { ModuleWithProviders } from '@angular/core'; 2 | export declare class ScrollModule { 3 | static forRoot(): ModuleWithProviders; 4 | } 5 | -------------------------------------------------------------------------------- /dist/modules/alpha-scroll.module.js: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { IonicModule } from 'ionic-angular'; 3 | import { PipesModule } from '../pipes/pipes.module'; 4 | import { AlphaScroll } from './alpha-scroll'; 5 | var ScrollModule = (function () { 6 | function ScrollModule() { 7 | } 8 | ScrollModule.forRoot = function () { 9 | return { 10 | ngModule: ScrollModule, providers: [] 11 | }; 12 | }; 13 | return ScrollModule; 14 | }()); 15 | export { ScrollModule }; 16 | ScrollModule.decorators = [ 17 | { type: NgModule, args: [{ 18 | imports: [ 19 | IonicModule, 20 | PipesModule 21 | ], 22 | exports: [ 23 | AlphaScroll 24 | ], 25 | declarations: [ 26 | AlphaScroll 27 | ] 28 | },] }, 29 | ]; 30 | /** @nocollapse */ 31 | ScrollModule.ctorParameters = function () { return []; }; 32 | //# sourceMappingURL=alpha-scroll.module.js.map -------------------------------------------------------------------------------- /dist/modules/alpha-scroll.module.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../src/modules/alpha-scroll.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,QAAA,EAAS,MAAO,eAAA,CAAgB;AAC9D,OAAO,EAAE,WAAA,EAAY,MAAO,eAAA,CAAgB;AAC5C,OAAO,EAAE,WAAA,EAAY,MAAO,uBAAA,CAAwB;AACpD,OAAO,EAAE,WAAA,EAAY,MAAO,gBAAA,CAAiB;AAG7C;IAAA;IAuBA,CAAC;IAtBe,oBAAO,GAArB;QACE,MAAM,CAAC;YACL,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE;SACtC,CAAC;IACJ,CAAC;IAkBH,mBAAC;AAAD,CAvBA,AAuBC;;AAjBM,uBAAU,GAA0B;IAC3C,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;gBACvB,OAAO,EAAE;oBACP,WAAW;oBACX,WAAW;iBACZ;gBACD,OAAO,EAAE;oBACP,WAAW;iBACZ;gBACD,YAAY,EAAE;oBACZ,WAAW;iBACZ;aACF,EAAG,EAAE;CACL,CAAC;AACF,kBAAkB;AACX,2BAAc,GAAmE,cAAM,OAAA,EAC7F,EAD6F,CAC7F,CAAC","file":"alpha-scroll.module.js","sourceRoot":"","sourcesContent":["import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { IonicModule } from 'ionic-angular';\nimport { PipesModule } from '../pipes/pipes.module';\nimport { AlphaScroll } from './alpha-scroll';\n\n\nexport class ScrollModule {\n public static forRoot(): ModuleWithProviders {\n return {\n ngModule: ScrollModule, providers: []\n };\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: NgModule, args: [{\n imports: [\n IonicModule,\n PipesModule\n ],\n exports: [\n AlphaScroll\n ],\n declarations: [\n AlphaScroll\n ]\n}, ] },\n];\n/** @nocollapse */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]} -------------------------------------------------------------------------------- /dist/modules/alpha-scroll.module.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"ScrollModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule"},"arguments":[{"imports":[{"__symbolic":"reference","module":"ionic-angular","name":"IonicModule"},{"__symbolic":"reference","module":"../pipes/pipes.module","name":"PipesModule"}],"exports":[{"__symbolic":"reference","module":"./alpha-scroll","name":"AlphaScroll"}],"declarations":[{"__symbolic":"reference","module":"./alpha-scroll","name":"AlphaScroll"}]}]}],"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"ScrollModule"},"providers":[]}}}}}},{"__symbolic":"module","version":1,"metadata":{"ScrollModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule"},"arguments":[{"imports":[{"__symbolic":"reference","module":"ionic-angular","name":"IonicModule"},{"__symbolic":"reference","module":"../pipes/pipes.module","name":"PipesModule"}],"exports":[{"__symbolic":"reference","module":"./alpha-scroll","name":"AlphaScroll"}],"declarations":[{"__symbolic":"reference","module":"./alpha-scroll","name":"AlphaScroll"}]}]}],"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"ScrollModule"},"providers":[]}}}}}}] -------------------------------------------------------------------------------- /dist/modules/alpha-scroll.scss: -------------------------------------------------------------------------------- 1 | .ion-alpha-list.list {margin: 0;} 2 | ion-alpha-scroll{position: absolute;top: 0;right: 0;left:0;bottom: 0;} 3 | .ion-alpha-list .item { 4 | border-right: none; 5 | } 6 | .ion-alpha-list>div:last-child .item .item-inner{ 7 | border-bottom: none; 8 | } 9 | 10 | .ion-alpha-sidebar { 11 | margin:0; 12 | padding:15px 0; 13 | position: absolute; 14 | top:0; 15 | right: 0; 16 | display: flex; 17 | flex-direction: column; 18 | justify-content:space-around; 19 | z-index: 999; 20 | } 21 | 22 | .ion-alpha-sidebar li { 23 | line-height: 1.1; 24 | list-style: none; 25 | width: 40px; 26 | text-align: center; 27 | } 28 | 29 | .ion-alpha-letter-indicator { 30 | -webkit-transition: opacity 150ms ease-in-out; 31 | transition: opacity 150ms ease-in-out; 32 | opacity: 1; 33 | border-radius:10px; 34 | background-color: rgba(0, 0, 0, 0.4); 35 | position: absolute; 36 | width: 100px; 37 | height: 100px; 38 | color: white; 39 | display: flex; 40 | visibility: hidden; 41 | justify-content: center; 42 | align-items: center; 43 | font-size: 5em; 44 | z-index: 999; 45 | } 46 | 47 | .ion-alpha-invalid a { 48 | color: #cccccc; 49 | } 50 | 51 | .ion-alpha-active a { 52 | color: #333; 53 | } 54 | 55 | .alpha-list-wrapper{position: absolute;top:0;bottom:0;left: 0;right:40px; 56 | overflow: hidden;} 57 | .alpha-list-wrapper::-webkit-scrollbar {display: none;} 58 | -------------------------------------------------------------------------------- /dist/pipes/bypass-trust-res-url.d.ts: -------------------------------------------------------------------------------- 1 | import { PipeTransform } from '@angular/core'; 2 | import { DomSanitizer } from '@angular/platform-browser'; 3 | export declare class TrustResourceUrl implements PipeTransform { 4 | private sanitizer; 5 | constructor(sanitizer: DomSanitizer); 6 | transform(value: any, ..._args: any[]): any; 7 | } 8 | -------------------------------------------------------------------------------- /dist/pipes/bypass-trust-res-url.js: -------------------------------------------------------------------------------- 1 | import { Injectable, Pipe } from '@angular/core'; 2 | import { DomSanitizer } from '@angular/platform-browser'; 3 | var TrustResourceUrl = (function () { 4 | function TrustResourceUrl(sanitizer) { 5 | this.sanitizer = sanitizer; 6 | } 7 | TrustResourceUrl.prototype.transform = function (value) { 8 | var _args = []; 9 | for (var _i = 1; _i < arguments.length; _i++) { 10 | _args[_i - 1] = arguments[_i]; 11 | } 12 | if (!value) { 13 | return null; 14 | } 15 | return this.sanitizer.bypassSecurityTrustResourceUrl(value); 16 | }; 17 | return TrustResourceUrl; 18 | }()); 19 | export { TrustResourceUrl }; 20 | TrustResourceUrl.decorators = [ 21 | { type: Pipe, args: [{ 22 | name: 'trustResourceUrl', 23 | pure: true 24 | },] }, 25 | { type: Injectable }, 26 | ]; 27 | /** @nocollapse */ 28 | TrustResourceUrl.ctorParameters = function () { return [ 29 | { type: DomSanitizer, }, 30 | ]; }; 31 | //# sourceMappingURL=bypass-trust-res-url.js.map -------------------------------------------------------------------------------- /dist/pipes/bypass-trust-res-url.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../src/pipes/bypass-trust-res-url.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAA,EAAY,IAAA,EAAoB,MAAO,eAAA,CAAgB;AAChE,OAAO,EAAE,YAAA,EAAa,MAAO,2BAAA,CAA4B;AAIzD;IACE,0BAAoB,SAAuB;QAAvB,cAAS,GAAT,SAAS,CAAc;IAAI,CAAC;IAEhD,oCAAS,GAAT,UAAU,KAAU;QAAE,eAAe;aAAf,UAAe,EAAf,qBAAe,EAAf,IAAe;YAAf,8BAAe;;QACnC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,CAAC,IAAI,CAAC;QACd,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC;IAC9D,CAAC;IAYH,uBAAC;AAAD,CArBA,AAqBC;;AAXM,2BAAU,GAA0B;IAC3C,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBACnB,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE,IAAI;aACX,EAAG,EAAE;IACN,EAAE,IAAI,EAAE,UAAU,EAAE;CACnB,CAAC;AACF,kBAAkB;AACX,+BAAc,GAAmE,cAAM,OAAA;IAC9F,EAAC,IAAI,EAAE,YAAY,GAAG;CACrB,EAF6F,CAE7F,CAAC","file":"bypass-trust-res-url.js","sourceRoot":"","sourcesContent":["import { Injectable, Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n\n\nexport class TrustResourceUrl implements PipeTransform {\n constructor(private sanitizer: DomSanitizer) { }\n\n transform(value: any, ..._args: any[]): any {\n if (!value) {\n return null;\n }\n\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Pipe, args: [{\n name: 'trustResourceUrl',\n pure: true\n}, ] },\n{ type: Injectable },\n];\n/** @nocollapse */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: DomSanitizer, },\n];\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]} -------------------------------------------------------------------------------- /dist/pipes/bypass-trust-res-url.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"TrustResourceUrl":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe"},"arguments":[{"name":"trustResourceUrl","pure":true}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer"}]}],"transform":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"TrustResourceUrl":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe"},"arguments":[{"name":"trustResourceUrl","pure":true}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer"}]}],"transform":[{"__symbolic":"method"}]}}}}] -------------------------------------------------------------------------------- /dist/pipes/map-to-iterable.d.ts: -------------------------------------------------------------------------------- 1 | import { PipeTransform } from '@angular/core'; 2 | export declare class MapToIterable implements PipeTransform { 3 | transform(value: any, ..._args: any[]): any; 4 | } 5 | -------------------------------------------------------------------------------- /dist/pipes/map-to-iterable.js: -------------------------------------------------------------------------------- 1 | import { Injectable, Pipe } from '@angular/core'; 2 | var MapToIterable = (function () { 3 | function MapToIterable() { 4 | } 5 | MapToIterable.prototype.transform = function (value) { 6 | var _args = []; 7 | for (var _i = 1; _i < arguments.length; _i++) { 8 | _args[_i - 1] = arguments[_i]; 9 | } 10 | var result = []; 11 | if (value.entries) { 12 | for (var _a = 0, _b = value.entries(); _a < _b.length; _a++) { 13 | var _c = _b[_a], key = _c[0], value = _c[1]; 14 | result.push({ key: key, value: value }); 15 | } 16 | } 17 | else { 18 | for (var key_1 in value) { 19 | result.push({ key: key_1, value: value[key_1] }); 20 | } 21 | } 22 | return result; 23 | }; 24 | return MapToIterable; 25 | }()); 26 | export { MapToIterable }; 27 | MapToIterable.decorators = [ 28 | { type: Pipe, args: [{ 29 | name: 'mapToIterable', 30 | pure: true 31 | },] }, 32 | { type: Injectable }, 33 | ]; 34 | /** @nocollapse */ 35 | MapToIterable.ctorParameters = function () { return []; }; 36 | //# sourceMappingURL=map-to-iterable.js.map -------------------------------------------------------------------------------- /dist/pipes/map-to-iterable.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../src/pipes/map-to-iterable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAA,EAAY,IAAA,EAAoB,MAAO,eAAA,CAAgB;AAIhE;IAAA;IA0BA,CAAC;IAzBC,iCAAS,GAAT,UAAU,KAAU;QAAE,eAAe;aAAf,UAAe,EAAf,qBAAe,EAAf,IAAe;YAAf,8BAAe;;QACnC,IAAI,MAAM,GAAe,EAAE,CAAC;QAE5B,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAClB,GAAG,CAAC,CAAqB,UAAe,EAAf,KAAA,KAAK,CAAC,OAAO,EAAE,EAAf,cAAe,EAAf,IAAe;gBAA/B,IAAA,WAAY,EAAX,WAAG,EAAE,aAAK;gBAClB,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,KAAA,EAAE,KAAK,OAAA,EAAE,CAAC,CAAC;aAC7B;QACH,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,GAAG,CAAC,CAAC,IAAI,KAAG,IAAI,KAAK,CAAC,CAAC,CAAC;gBACtB,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,OAAA,EAAE,KAAK,EAAE,KAAK,CAAC,KAAG,CAAC,EAAE,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,MAAM,CAAC,MAAM,CAAC;IAChB,CAAC;IAWH,oBAAC;AAAD,CA1BA,AA0BC;;AAVM,wBAAU,GAA0B;IAC3C,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBACnB,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,IAAI;aACX,EAAG,EAAE;IACN,EAAE,IAAI,EAAE,UAAU,EAAE;CACnB,CAAC;AACF,kBAAkB;AACX,4BAAc,GAAmE,cAAM,OAAA,EAC7F,EAD6F,CAC7F,CAAC","file":"map-to-iterable.js","sourceRoot":"","sourcesContent":["import { Injectable, Pipe, PipeTransform } from '@angular/core';\n\n\n\nexport class MapToIterable implements PipeTransform {\n transform(value: any, ..._args: any[]): any {\n let result: Array = [];\n\n if (value.entries) {\n for (var [key, value] of value.entries()) {\n result.push({ key, value });\n }\n } else {\n for (let key in value) {\n result.push({ key, value: value[key] });\n }\n }\n\n return result;\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Pipe, args: [{\n name: 'mapToIterable',\n pure: true\n}, ] },\n{ type: Injectable },\n];\n/** @nocollapse */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]} -------------------------------------------------------------------------------- /dist/pipes/map-to-iterable.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"MapToIterable":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe"},"arguments":[{"name":"mapToIterable","pure":true}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"transform":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"MapToIterable":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe"},"arguments":[{"name":"mapToIterable","pure":true}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"transform":[{"__symbolic":"method"}]}}}}] -------------------------------------------------------------------------------- /dist/pipes/order-by.d.ts: -------------------------------------------------------------------------------- 1 | import { PipeTransform } from '@angular/core'; 2 | export declare class OrderBy implements PipeTransform { 3 | transform(input: any, orderConfigs?: string | Array): any; 4 | private isSingle(orderConfigs); 5 | private parseProperty(config); 6 | private parseProperties(configs); 7 | } 8 | -------------------------------------------------------------------------------- /dist/pipes/order-by.js: -------------------------------------------------------------------------------- 1 | import { Injectable, Pipe } from '@angular/core'; 2 | import * as _ from 'lodash'; 3 | var OrderBy = (function () { 4 | function OrderBy() { 5 | } 6 | OrderBy.prototype.transform = function (input, orderConfigs) { 7 | if (orderConfigs === void 0) { orderConfigs = '+'; } 8 | if (!Array.isArray(input)) { 9 | return input; 10 | } 11 | if (this.isSingle(orderConfigs)) { 12 | var orderConfig = !Array.isArray(orderConfigs) ? orderConfigs : orderConfigs[0]; 13 | var config = this.parseProperty(orderConfig); 14 | // Basic array 15 | if (config.property === '') { 16 | return _.orderBy(input, [], config.order); 17 | } 18 | return _.orderBy(input, [config.property], [config.order]); 19 | } 20 | var configs = this.parseProperties(orderConfigs); 21 | return _.orderBy(input, configs.properties, configs.orders); 22 | }; 23 | OrderBy.prototype.isSingle = function (orderConfigs) { 24 | return !Array.isArray(orderConfigs) || (Array.isArray(orderConfigs) && orderConfigs.length === 1); 25 | }; 26 | OrderBy.prototype.parseProperty = function (config) { 27 | var orderChar = config.substr(0, 1); 28 | var isDesc = orderChar === '-'; 29 | var hasOrder = orderChar || orderChar === '+'; 30 | return { order: isDesc ? 'desc' : 'asc', property: hasOrder ? config.substr(1) : config }; 31 | }; 32 | OrderBy.prototype.parseProperties = function (configs) { 33 | var _this = this; 34 | var result = { orders: [], properties: [] }; 35 | configs.forEach(function (configStr) { 36 | var config = _this.parseProperty(configStr); 37 | result.orders.push(config.order); 38 | result.properties.push(config.property); 39 | }); 40 | return result; 41 | }; 42 | return OrderBy; 43 | }()); 44 | export { OrderBy }; 45 | OrderBy.decorators = [ 46 | { type: Pipe, args: [{ 47 | name: 'orderBy', 48 | pure: true 49 | },] }, 50 | { type: Injectable }, 51 | ]; 52 | /** @nocollapse */ 53 | OrderBy.ctorParameters = function () { return []; }; 54 | //# sourceMappingURL=order-by.js.map -------------------------------------------------------------------------------- /dist/pipes/order-by.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../src/pipes/order-by.ts"],"names":[],"mappings":"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","file":"order-by.js","sourceRoot":"","sourcesContent":["import { Injectable, Pipe, PipeTransform } from '@angular/core';\nimport * as _ from 'lodash';\n\n\n\nexport class OrderBy implements PipeTransform {\n transform(input: any, orderConfigs: string | Array = '+'): any {\n if (!Array.isArray(input)) {\n return input;\n }\n\n if (this.isSingle(orderConfigs)) {\n let orderConfig: string = !Array.isArray(orderConfigs) ? orderConfigs : orderConfigs[0];\n let config = this.parseProperty(orderConfig);\n\n // Basic array\n if (config.property === '') {\n return _.orderBy(input, [], config.order);\n }\n\n return _.orderBy(input, [config.property], [config.order]);\n }\n\n let configs = this.parseProperties(orderConfigs);\n return _.orderBy(input, configs.properties, configs.orders);\n }\n\n private isSingle(orderConfigs: any): boolean {\n return !Array.isArray(orderConfigs) || (Array.isArray(orderConfigs) && orderConfigs.length === 1);\n }\n\n private parseProperty(config: string): { order: string, property: string } {\n let orderChar = config.substr(0, 1);\n let isDesc = orderChar === '-';\n let hasOrder = orderChar || orderChar === '+';\n return { order: isDesc ? 'desc' : 'asc', property: hasOrder ? config.substr(1) : config };\n }\n\n private parseProperties(configs: Array): { orders: Array, properties: Array } {\n let result = { orders: [], properties: [] };\n configs.forEach(configStr => {\n let config = this.parseProperty(configStr);\n result.orders.push(config.order);\n result.properties.push(config.property);\n });\n return result;\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Pipe, args: [{\n name: 'orderBy',\n pure: true\n}, ] },\n{ type: Injectable },\n];\n/** @nocollapse */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]} -------------------------------------------------------------------------------- /dist/pipes/order-by.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"OrderBy":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe"},"arguments":[{"name":"orderBy","pure":true}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"transform":[{"__symbolic":"method"}],"isSingle":[{"__symbolic":"method"}],"parseProperty":[{"__symbolic":"method"}],"parseProperties":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"OrderBy":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe"},"arguments":[{"name":"orderBy","pure":true}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"transform":[{"__symbolic":"method"}],"isSingle":[{"__symbolic":"method"}],"parseProperty":[{"__symbolic":"method"}],"parseProperties":[{"__symbolic":"method"}]}}}}] -------------------------------------------------------------------------------- /dist/pipes/pipes.module.d.ts: -------------------------------------------------------------------------------- 1 | import { ModuleWithProviders } from '@angular/core'; 2 | export { MapToIterable } from './map-to-iterable'; 3 | export { OrderBy } from './order-by'; 4 | export { TrustResourceUrl } from './bypass-trust-res-url'; 5 | export declare class PipesModule { 6 | static forRoot(): ModuleWithProviders; 7 | } 8 | -------------------------------------------------------------------------------- /dist/pipes/pipes.module.js: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { MapToIterable } from './map-to-iterable'; 3 | import { OrderBy } from './order-by'; 4 | import { TrustResourceUrl } from './bypass-trust-res-url'; 5 | export { MapToIterable } from './map-to-iterable'; 6 | export { OrderBy } from './order-by'; 7 | export { TrustResourceUrl } from './bypass-trust-res-url'; 8 | var PipesModule = (function () { 9 | function PipesModule() { 10 | } 11 | PipesModule.forRoot = function () { 12 | return { 13 | ngModule: PipesModule, 14 | providers: [ 15 | MapToIterable, 16 | OrderBy, 17 | TrustResourceUrl 18 | ] 19 | }; 20 | }; 21 | return PipesModule; 22 | }()); 23 | export { PipesModule }; 24 | PipesModule.decorators = [ 25 | { type: NgModule, args: [{ 26 | exports: [ 27 | MapToIterable, 28 | OrderBy, 29 | TrustResourceUrl 30 | ], 31 | declarations: [ 32 | MapToIterable, 33 | OrderBy, 34 | TrustResourceUrl 35 | ] 36 | },] }, 37 | ]; 38 | /** @nocollapse */ 39 | PipesModule.ctorParameters = function () { return []; }; 40 | //# sourceMappingURL=pipes.module.js.map -------------------------------------------------------------------------------- /dist/pipes/pipes.module.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../src/pipes/pipes.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,QAAA,EAAS,MAAO,eAAA,CAAgB;AAC9D,OAAO,EAAE,aAAA,EAAc,MAAO,mBAAA,CAAoB;AAClD,OAAO,EAAE,OAAA,EAAQ,MAAO,YAAA,CAAa;AACrC,OAAO,EAAE,gBAAA,EAAiB,MAAO,wBAAA,CAAyB;AAE1D,OAAO,EAAE,aAAA,EAAc,MAAO,mBAAA,CAAoB;AAClD,OAAO,EAAE,OAAA,EAAQ,MAAO,YAAA,CAAa;AACrC,OAAO,EAAE,gBAAA,EAAiB,MAAO,wBAAA,CAAyB;AAG1D;IAAA;IA4BA,CAAC;IA3Bc,mBAAO,GAArB;QACC,MAAM,CAAC;YACN,QAAQ,EAAE,WAAW;YACrB,SAAS,EAAE;gBACV,aAAa;gBACb,OAAO;gBACP,gBAAgB;aAChB;SACD,CAAC;IACH,CAAC;IAkBF,kBAAC;AAAD,CA5BA,AA4BC;;AAjBM,sBAAU,GAA0B;IAC3C,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;gBACxB,OAAO,EAAE;oBACR,aAAa;oBACb,OAAO;oBACP,gBAAgB;iBAChB;gBACD,YAAY,EAAE;oBACb,aAAa;oBACb,OAAO;oBACP,gBAAgB;iBAChB;aACD,EAAG,EAAE;CACL,CAAC;AACF,kBAAkB;AACX,0BAAc,GAAmE,cAAM,OAAA,EAC7F,EAD6F,CAC7F,CAAC","file":"pipes.module.js","sourceRoot":"","sourcesContent":["import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { MapToIterable } from './map-to-iterable';\nimport { OrderBy } from './order-by';\nimport { TrustResourceUrl } from './bypass-trust-res-url';\n\nexport { MapToIterable } from './map-to-iterable';\nexport { OrderBy } from './order-by';\nexport { TrustResourceUrl } from './bypass-trust-res-url';\n\n\nexport class PipesModule {\n\tpublic static forRoot(): ModuleWithProviders {\n\t\treturn {\n\t\t\tngModule: PipesModule,\n\t\t\tproviders: [\n\t\t\t\tMapToIterable,\n\t\t\t\tOrderBy,\n\t\t\t\tTrustResourceUrl\n\t\t\t]\n\t\t};\n\t}\nstatic decorators: DecoratorInvocation[] = [\n{ type: NgModule, args: [{\n\texports: [\n\t\tMapToIterable,\n\t\tOrderBy,\n\t\tTrustResourceUrl\n\t],\n\tdeclarations: [\n\t\tMapToIterable,\n\t\tOrderBy,\n\t\tTrustResourceUrl\n\t]\n}, ] },\n];\n/** @nocollapse */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]} -------------------------------------------------------------------------------- /dist/pipes/pipes.module.metadata.json: -------------------------------------------------------------------------------- 1 | [{"__symbolic":"module","version":3,"metadata":{"PipesModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule"},"arguments":[{"exports":[{"__symbolic":"reference","module":"./map-to-iterable","name":"MapToIterable"},{"__symbolic":"reference","module":"./order-by","name":"OrderBy"},{"__symbolic":"reference","module":"./bypass-trust-res-url","name":"TrustResourceUrl"}],"declarations":[{"__symbolic":"reference","module":"./map-to-iterable","name":"MapToIterable"},{"__symbolic":"reference","module":"./order-by","name":"OrderBy"},{"__symbolic":"reference","module":"./bypass-trust-res-url","name":"TrustResourceUrl"}]}]}],"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"PipesModule"},"providers":[{"__symbolic":"reference","module":"./map-to-iterable","name":"MapToIterable"},{"__symbolic":"reference","module":"./order-by","name":"OrderBy"},{"__symbolic":"reference","module":"./bypass-trust-res-url","name":"TrustResourceUrl"}]}}}}},"exports":[{"from":"./map-to-iterable","export":["MapToIterable"]},{"from":"./order-by","export":["OrderBy"]},{"from":"./bypass-trust-res-url","export":["TrustResourceUrl"]}]},{"__symbolic":"module","version":1,"metadata":{"PipesModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule"},"arguments":[{"exports":[{"__symbolic":"reference","module":"./map-to-iterable","name":"MapToIterable"},{"__symbolic":"reference","module":"./order-by","name":"OrderBy"},{"__symbolic":"reference","module":"./bypass-trust-res-url","name":"TrustResourceUrl"}],"declarations":[{"__symbolic":"reference","module":"./map-to-iterable","name":"MapToIterable"},{"__symbolic":"reference","module":"./order-by","name":"OrderBy"},{"__symbolic":"reference","module":"./bypass-trust-res-url","name":"TrustResourceUrl"}]}]}],"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"PipesModule"},"providers":[{"__symbolic":"reference","module":"./map-to-iterable","name":"MapToIterable"},{"__symbolic":"reference","module":"./order-by","name":"OrderBy"},{"__symbolic":"reference","module":"./bypass-trust-res-url","name":"TrustResourceUrl"}]}}}}},"exports":[{"from":"./map-to-iterable","export":["MapToIterable"]},{"from":"./order-by","export":["OrderBy"]},{"from":"./bypass-trust-res-url","export":["TrustResourceUrl"]}]}] -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ionic-alpha-scroll", 3 | "version": "0.1.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@angular/common": { 8 | "version": "4.1.3", 9 | "resolved": "https://registry.npmjs.org/@angular/common/-/common-4.1.3.tgz", 10 | "integrity": "sha1-58R5HjITHPdMI5QowqZ9qrLu8Bc=", 11 | "dev": true 12 | }, 13 | "@angular/compiler": { 14 | "version": "4.1.3", 15 | "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-4.1.3.tgz", 16 | "integrity": "sha1-0t0whTsM9KVHWLSjFGMsIx+clMM=", 17 | "dev": true 18 | }, 19 | "@angular/compiler-cli": { 20 | "version": "4.1.3", 21 | "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-4.1.3.tgz", 22 | "integrity": "sha1-wjYv/fZXVkcUgfg5+rZ1vKwhP5Y=", 23 | "dev": true, 24 | "requires": { 25 | "@angular/tsc-wrapped": "4.1.3", 26 | "minimist": "1.2.0", 27 | "reflect-metadata": "0.1.10" 28 | } 29 | }, 30 | "@angular/core": { 31 | "version": "4.1.3", 32 | "resolved": "https://registry.npmjs.org/@angular/core/-/core-4.1.3.tgz", 33 | "integrity": "sha1-KFSY64arfQtvmC+Pn0h+9hABOzU=", 34 | "dev": true 35 | }, 36 | "@angular/forms": { 37 | "version": "4.1.3", 38 | "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-4.1.3.tgz", 39 | "integrity": "sha1-OAq0w6+ExdHXSMKn0EFRx9yOSYI=", 40 | "dev": true 41 | }, 42 | "@angular/http": { 43 | "version": "4.1.3", 44 | "resolved": "https://registry.npmjs.org/@angular/http/-/http-4.1.3.tgz", 45 | "integrity": "sha1-650cMCoBcoFfmlczENm+C964Ra4=", 46 | "dev": true 47 | }, 48 | "@angular/platform-browser": { 49 | "version": "4.1.3", 50 | "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-4.1.3.tgz", 51 | "integrity": "sha1-T6HbURndF4sxXdrlsym+4akypb0=", 52 | "dev": true 53 | }, 54 | "@angular/platform-browser-dynamic": { 55 | "version": "4.1.3", 56 | "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-4.1.3.tgz", 57 | "integrity": "sha1-PBP9z1kdSH9u/cHUaRPygMbYwuw=", 58 | "dev": true 59 | }, 60 | "@angular/platform-server": { 61 | "version": "4.1.3", 62 | "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-4.1.3.tgz", 63 | "integrity": "sha1-u/rkKxVzA1d1HaDhRdaG+SWpRDE=", 64 | "dev": true, 65 | "requires": { 66 | "parse5": "3.0.2", 67 | "xhr2": "0.1.4" 68 | } 69 | }, 70 | "@angular/tsc-wrapped": { 71 | "version": "4.1.3", 72 | "resolved": "https://registry.npmjs.org/@angular/tsc-wrapped/-/tsc-wrapped-4.1.3.tgz", 73 | "integrity": "sha1-LWNyyRh78WIerNlguUs5xPlSk80=", 74 | "dev": true, 75 | "requires": { 76 | "tsickle": "0.21.6" 77 | } 78 | }, 79 | "@ionic-native/core": { 80 | "version": "4.1.0", 81 | "resolved": "https://registry.npmjs.org/@ionic-native/core/-/core-4.1.0.tgz", 82 | "integrity": "sha1-YDYQqbeWNtmR5hIxaxTDwtPpvPM=", 83 | "dev": true 84 | }, 85 | "@ionic/storage": { 86 | "version": "2.0.1", 87 | "resolved": "https://registry.npmjs.org/@ionic/storage/-/storage-2.0.1.tgz", 88 | "integrity": "sha1-uxqMJ2AH0AjXrN2kJrVgZbD9PAs=", 89 | "dev": true, 90 | "requires": { 91 | "@types/localforage": "0.0.30", 92 | "localforage": "1.4.3", 93 | "localforage-cordovasqlitedriver": "1.5.0" 94 | } 95 | }, 96 | "@types/localforage": { 97 | "version": "0.0.30", 98 | "resolved": "https://registry.npmjs.org/@types/localforage/-/localforage-0.0.30.tgz", 99 | "integrity": "sha1-PWCmv23aOOP4pGlhFZg3nx9klQk=", 100 | "dev": true 101 | }, 102 | "@types/lodash": { 103 | "version": "4.14.77", 104 | "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.77.tgz", 105 | "integrity": "sha512-sRCTcVQkIiQqRoQcazgN2PvRLS7d9BnSl8elRZR5UYlpm6XgU8F4j/0csz8WoaKKTUqa6rSuOy3Vph7AHfX7KQ==" 106 | }, 107 | "@types/node": { 108 | "version": "6.0.89", 109 | "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.89.tgz", 110 | "integrity": "sha512-Z/67L97+6H1qJiEEHSN1SQapkWjDss1D90rAnFcQ6UxKkah9juzotK5UNEP1bDv/0lJ3NAQTnVfc/JWdgCGruA==", 111 | "dev": true 112 | }, 113 | "acorn": { 114 | "version": "1.2.2", 115 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz", 116 | "integrity": "sha1-yM4n3grMdtiW0rH6099YjZ6C8BQ=", 117 | "dev": true 118 | }, 119 | "alloytouch": { 120 | "version": "0.2.5", 121 | "resolved": "https://registry.npmjs.org/alloytouch/-/alloytouch-0.2.5.tgz", 122 | "integrity": "sha1-M+qLt9Oe/fgznlnfoGffKLs4WWg=" 123 | }, 124 | "alloytouch-transformjs": { 125 | "version": "0.1.0", 126 | "resolved": "https://registry.npmjs.org/alloytouch-transformjs/-/alloytouch-transformjs-0.1.0.tgz", 127 | "integrity": "sha512-1xudZR420y0tNGuO4SclsaIh1GVzZHeVrX+LUEUC5yx+bfGPRqz+PhvdNAKs2frEnEarXz/Zg0aLHW3XDA/OTw==" 128 | }, 129 | "amdefine": { 130 | "version": "1.0.1", 131 | "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", 132 | "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", 133 | "dev": true 134 | }, 135 | "ansi-regex": { 136 | "version": "2.1.1", 137 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 138 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 139 | "dev": true 140 | }, 141 | "ansi-styles": { 142 | "version": "2.2.1", 143 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 144 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 145 | "dev": true 146 | }, 147 | "ast-types": { 148 | "version": "0.8.15", 149 | "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.15.tgz", 150 | "integrity": "sha1-ju8IJ/BN/w7IhXupJavj/qYZTlI=", 151 | "dev": true 152 | }, 153 | "babel-code-frame": { 154 | "version": "6.26.0", 155 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", 156 | "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", 157 | "dev": true, 158 | "requires": { 159 | "chalk": "1.1.3", 160 | "esutils": "2.0.2", 161 | "js-tokens": "3.0.2" 162 | } 163 | }, 164 | "balanced-match": { 165 | "version": "1.0.0", 166 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 167 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 168 | "dev": true 169 | }, 170 | "base62": { 171 | "version": "0.1.1", 172 | "resolved": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz", 173 | "integrity": "sha1-e0F0wvlESXU7EcJlHAg9qEGnsIQ=", 174 | "dev": true 175 | }, 176 | "brace-expansion": { 177 | "version": "1.1.8", 178 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", 179 | "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", 180 | "dev": true, 181 | "requires": { 182 | "balanced-match": "1.0.0", 183 | "concat-map": "0.0.1" 184 | } 185 | }, 186 | "chalk": { 187 | "version": "1.1.3", 188 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 189 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 190 | "dev": true, 191 | "requires": { 192 | "ansi-styles": "2.2.1", 193 | "escape-string-regexp": "1.0.5", 194 | "has-ansi": "2.0.0", 195 | "strip-ansi": "3.0.1", 196 | "supports-color": "2.0.0" 197 | } 198 | }, 199 | "colors": { 200 | "version": "1.1.2", 201 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", 202 | "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", 203 | "dev": true 204 | }, 205 | "commander": { 206 | "version": "2.11.0", 207 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", 208 | "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", 209 | "dev": true 210 | }, 211 | "concat-map": { 212 | "version": "0.0.1", 213 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 214 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 215 | "dev": true 216 | }, 217 | "core-util-is": { 218 | "version": "1.0.2", 219 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 220 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 221 | "dev": true 222 | }, 223 | "diff": { 224 | "version": "3.4.0", 225 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", 226 | "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", 227 | "dev": true 228 | }, 229 | "doctrine": { 230 | "version": "0.7.2", 231 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-0.7.2.tgz", 232 | "integrity": "sha1-fLhgNZujvpDgQLJrcpzkv6ZUxSM=", 233 | "dev": true, 234 | "requires": { 235 | "esutils": "1.1.6", 236 | "isarray": "0.0.1" 237 | }, 238 | "dependencies": { 239 | "esutils": { 240 | "version": "1.1.6", 241 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.1.6.tgz", 242 | "integrity": "sha1-wBzKqa5LiXxtDD4hCuUvPHqEQ3U=", 243 | "dev": true 244 | } 245 | } 246 | }, 247 | "es3ify": { 248 | "version": "0.1.4", 249 | "resolved": "https://registry.npmjs.org/es3ify/-/es3ify-0.1.4.tgz", 250 | "integrity": "sha1-rZ+l3xrjTz8x4SEbWBiy1RB439E=", 251 | "dev": true, 252 | "requires": { 253 | "esprima-fb": "3001.1.0-dev-harmony-fb", 254 | "jstransform": "3.0.0", 255 | "through": "2.3.8" 256 | } 257 | }, 258 | "escape-string-regexp": { 259 | "version": "1.0.5", 260 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 261 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 262 | "dev": true 263 | }, 264 | "esmangle-evaluator": { 265 | "version": "1.0.1", 266 | "resolved": "https://registry.npmjs.org/esmangle-evaluator/-/esmangle-evaluator-1.0.1.tgz", 267 | "integrity": "sha1-Yg2GbvSGGzMR91dm1SqFcrs8YzY=", 268 | "dev": true 269 | }, 270 | "esprima-fb": { 271 | "version": "3001.1.0-dev-harmony-fb", 272 | "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-3001.0001.0000-dev-harmony-fb.tgz", 273 | "integrity": "sha1-t303q8046gt3Qmu4vCkizmtCZBE=", 274 | "dev": true 275 | }, 276 | "esutils": { 277 | "version": "2.0.2", 278 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 279 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 280 | "dev": true 281 | }, 282 | "falafel": { 283 | "version": "1.2.0", 284 | "resolved": "https://registry.npmjs.org/falafel/-/falafel-1.2.0.tgz", 285 | "integrity": "sha1-wY0k71CRF0pJfzGM0ksCaiXN2rQ=", 286 | "dev": true, 287 | "requires": { 288 | "acorn": "1.2.2", 289 | "foreach": "2.0.5", 290 | "isarray": "0.0.1", 291 | "object-keys": "1.0.11" 292 | } 293 | }, 294 | "foreach": { 295 | "version": "2.0.5", 296 | "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", 297 | "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", 298 | "dev": true 299 | }, 300 | "fs.realpath": { 301 | "version": "1.0.0", 302 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 303 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 304 | "dev": true 305 | }, 306 | "glob": { 307 | "version": "7.1.2", 308 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 309 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 310 | "dev": true, 311 | "requires": { 312 | "fs.realpath": "1.0.0", 313 | "inflight": "1.0.6", 314 | "inherits": "2.0.3", 315 | "minimatch": "3.0.4", 316 | "once": "1.4.0", 317 | "path-is-absolute": "1.0.1" 318 | } 319 | }, 320 | "has-ansi": { 321 | "version": "2.0.0", 322 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 323 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 324 | "dev": true, 325 | "requires": { 326 | "ansi-regex": "2.1.1" 327 | } 328 | }, 329 | "immediate": { 330 | "version": "3.0.6", 331 | "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", 332 | "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", 333 | "dev": true 334 | }, 335 | "inflight": { 336 | "version": "1.0.6", 337 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 338 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 339 | "dev": true, 340 | "requires": { 341 | "once": "1.4.0", 342 | "wrappy": "1.0.2" 343 | } 344 | }, 345 | "inherits": { 346 | "version": "2.0.3", 347 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 348 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 349 | "dev": true 350 | }, 351 | "inline-process-browser": { 352 | "version": "1.0.0", 353 | "resolved": "https://registry.npmjs.org/inline-process-browser/-/inline-process-browser-1.0.0.tgz", 354 | "integrity": "sha1-RqYbFT3TybFiSxoAYm7bT39BTyI=", 355 | "dev": true, 356 | "requires": { 357 | "falafel": "1.2.0", 358 | "through2": "0.6.5" 359 | } 360 | }, 361 | "ionic-angular": { 362 | "version": "3.6.1", 363 | "resolved": "https://registry.npmjs.org/ionic-angular/-/ionic-angular-3.6.1.tgz", 364 | "integrity": "sha512-lsUX9VEj5fXMoDXW9SBgKl33hlOYf/JmD+SJKYreXT63XN1C8N+jP01H5VoHYQFR18nzNZAxX5sv+/U1UdPtTA==", 365 | "dev": true 366 | }, 367 | "ionicons": { 368 | "version": "3.0.0", 369 | "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-3.0.0.tgz", 370 | "integrity": "sha1-QLja9P16MRUL0AIWD2ZJbiKpjDw=", 371 | "dev": true 372 | }, 373 | "isarray": { 374 | "version": "0.0.1", 375 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 376 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", 377 | "dev": true 378 | }, 379 | "js-tokens": { 380 | "version": "3.0.2", 381 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", 382 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", 383 | "dev": true 384 | }, 385 | "jstransform": { 386 | "version": "3.0.0", 387 | "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-3.0.0.tgz", 388 | "integrity": "sha1-olkats7o2XvzvoMNv6IxO4fNZAs=", 389 | "dev": true, 390 | "requires": { 391 | "base62": "0.1.1", 392 | "esprima-fb": "3001.1.0-dev-harmony-fb", 393 | "source-map": "0.1.31" 394 | }, 395 | "dependencies": { 396 | "source-map": { 397 | "version": "0.1.31", 398 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", 399 | "integrity": "sha1-n3BNDWnZ4TioG63267T94z0VHGE=", 400 | "dev": true, 401 | "requires": { 402 | "amdefine": "1.0.1" 403 | } 404 | } 405 | } 406 | }, 407 | "lie": { 408 | "version": "3.0.2", 409 | "resolved": "https://registry.npmjs.org/lie/-/lie-3.0.2.tgz", 410 | "integrity": "sha1-/9oh17uibzd8rYZdNkmy/Izjn+o=", 411 | "dev": true, 412 | "requires": { 413 | "es3ify": "0.1.4", 414 | "immediate": "3.0.6", 415 | "inline-process-browser": "1.0.0", 416 | "unreachable-branch-transform": "0.3.0" 417 | } 418 | }, 419 | "localforage": { 420 | "version": "1.4.3", 421 | "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.4.3.tgz", 422 | "integrity": "sha1-ohJUPDnHx2Qk7dEr9HTEiarKSUw=", 423 | "dev": true, 424 | "requires": { 425 | "lie": "3.0.2" 426 | } 427 | }, 428 | "localforage-cordovasqlitedriver": { 429 | "version": "1.5.0", 430 | "resolved": "https://registry.npmjs.org/localforage-cordovasqlitedriver/-/localforage-cordovasqlitedriver-1.5.0.tgz", 431 | "integrity": "sha1-+TR4nmrZo5usBf3RFogS9DhTV2I=", 432 | "dev": true, 433 | "requires": { 434 | "@types/localforage": "0.0.30", 435 | "localforage": "1.4.3" 436 | } 437 | }, 438 | "minimatch": { 439 | "version": "3.0.4", 440 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 441 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 442 | "dev": true, 443 | "requires": { 444 | "brace-expansion": "1.1.8" 445 | } 446 | }, 447 | "minimist": { 448 | "version": "1.2.0", 449 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 450 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", 451 | "dev": true 452 | }, 453 | "mkdirp": { 454 | "version": "0.5.1", 455 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 456 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 457 | "dev": true, 458 | "requires": { 459 | "minimist": "0.0.8" 460 | }, 461 | "dependencies": { 462 | "minimist": { 463 | "version": "0.0.8", 464 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 465 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 466 | "dev": true 467 | } 468 | } 469 | }, 470 | "object-keys": { 471 | "version": "1.0.11", 472 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", 473 | "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", 474 | "dev": true 475 | }, 476 | "once": { 477 | "version": "1.4.0", 478 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 479 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 480 | "dev": true, 481 | "requires": { 482 | "wrappy": "1.0.2" 483 | } 484 | }, 485 | "parse5": { 486 | "version": "3.0.2", 487 | "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.2.tgz", 488 | "integrity": "sha1-Be/1fw70V3+xRKefi5qWemzERRA=", 489 | "dev": true, 490 | "requires": { 491 | "@types/node": "6.0.89" 492 | } 493 | }, 494 | "path-is-absolute": { 495 | "version": "1.0.1", 496 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 497 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 498 | "dev": true 499 | }, 500 | "path-parse": { 501 | "version": "1.0.5", 502 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", 503 | "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", 504 | "dev": true 505 | }, 506 | "private": { 507 | "version": "0.1.8", 508 | "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", 509 | "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", 510 | "dev": true 511 | }, 512 | "readable-stream": { 513 | "version": "1.0.34", 514 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", 515 | "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", 516 | "dev": true, 517 | "requires": { 518 | "core-util-is": "1.0.2", 519 | "inherits": "2.0.3", 520 | "isarray": "0.0.1", 521 | "string_decoder": "0.10.31" 522 | } 523 | }, 524 | "recast": { 525 | "version": "0.10.43", 526 | "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.43.tgz", 527 | "integrity": "sha1-uV1Q9tYHYaX2JS4V2AZ4FoSRzn8=", 528 | "dev": true, 529 | "requires": { 530 | "ast-types": "0.8.15", 531 | "esprima-fb": "15001.1001.0-dev-harmony-fb", 532 | "private": "0.1.8", 533 | "source-map": "0.5.7" 534 | }, 535 | "dependencies": { 536 | "esprima-fb": { 537 | "version": "15001.1001.0-dev-harmony-fb", 538 | "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz", 539 | "integrity": "sha1-Q761fsJujPI3092LM+QlM1d/Jlk=", 540 | "dev": true 541 | } 542 | } 543 | }, 544 | "reflect-metadata": { 545 | "version": "0.1.10", 546 | "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.10.tgz", 547 | "integrity": "sha1-tPg3BEFqytiZiMmxVjXUfgO5NEo=", 548 | "dev": true 549 | }, 550 | "resolve": { 551 | "version": "1.4.0", 552 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", 553 | "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", 554 | "dev": true, 555 | "requires": { 556 | "path-parse": "1.0.5" 557 | } 558 | }, 559 | "rxjs": { 560 | "version": "5.4.0", 561 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.4.0.tgz", 562 | "integrity": "sha1-p9sUqxV/nXqsalbmVeejhg05vyY=", 563 | "dev": true, 564 | "requires": { 565 | "symbol-observable": "1.0.4" 566 | } 567 | }, 568 | "semver": { 569 | "version": "5.4.1", 570 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", 571 | "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", 572 | "dev": true 573 | }, 574 | "source-map": { 575 | "version": "0.5.7", 576 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 577 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 578 | "dev": true 579 | }, 580 | "source-map-support": { 581 | "version": "0.4.18", 582 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", 583 | "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", 584 | "dev": true, 585 | "requires": { 586 | "source-map": "0.5.7" 587 | } 588 | }, 589 | "string_decoder": { 590 | "version": "0.10.31", 591 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 592 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", 593 | "dev": true 594 | }, 595 | "strip-ansi": { 596 | "version": "3.0.1", 597 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 598 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 599 | "dev": true, 600 | "requires": { 601 | "ansi-regex": "2.1.1" 602 | } 603 | }, 604 | "supports-color": { 605 | "version": "2.0.0", 606 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 607 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 608 | "dev": true 609 | }, 610 | "symbol-observable": { 611 | "version": "1.0.4", 612 | "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz", 613 | "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=", 614 | "dev": true 615 | }, 616 | "through": { 617 | "version": "2.3.8", 618 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 619 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 620 | "dev": true 621 | }, 622 | "through2": { 623 | "version": "0.6.5", 624 | "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", 625 | "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", 626 | "dev": true, 627 | "requires": { 628 | "readable-stream": "1.0.34", 629 | "xtend": "4.0.1" 630 | } 631 | }, 632 | "tsickle": { 633 | "version": "0.21.6", 634 | "resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.21.6.tgz", 635 | "integrity": "sha1-U7Abl5xcE/2xOvs/uVgXflmRWI0=", 636 | "dev": true, 637 | "requires": { 638 | "minimist": "1.2.0", 639 | "mkdirp": "0.5.1", 640 | "source-map": "0.5.7", 641 | "source-map-support": "0.4.18" 642 | } 643 | }, 644 | "tslib": { 645 | "version": "1.8.0", 646 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.8.0.tgz", 647 | "integrity": "sha512-ymKWWZJST0/CkgduC2qkzjMOWr4bouhuURNXCn/inEX0L57BnRG6FhX76o7FOnsjHazCjfU2LKeSrlS2sIKQJg==", 648 | "dev": true 649 | }, 650 | "tslint": { 651 | "version": "5.7.0", 652 | "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.7.0.tgz", 653 | "integrity": "sha1-wl4NDJL6EgHCvDDoROCOaCtPNVI=", 654 | "dev": true, 655 | "requires": { 656 | "babel-code-frame": "6.26.0", 657 | "colors": "1.1.2", 658 | "commander": "2.11.0", 659 | "diff": "3.4.0", 660 | "glob": "7.1.2", 661 | "minimatch": "3.0.4", 662 | "resolve": "1.4.0", 663 | "semver": "5.4.1", 664 | "tslib": "1.8.0", 665 | "tsutils": "2.12.1" 666 | } 667 | }, 668 | "tslint-eslint-rules": { 669 | "version": "4.1.1", 670 | "resolved": "https://registry.npmjs.org/tslint-eslint-rules/-/tslint-eslint-rules-4.1.1.tgz", 671 | "integrity": "sha1-fDDniC8mvCdr/5HSOEl1xp2viLo=", 672 | "dev": true, 673 | "requires": { 674 | "doctrine": "0.7.2", 675 | "tslib": "1.8.0", 676 | "tsutils": "1.9.1" 677 | }, 678 | "dependencies": { 679 | "tsutils": { 680 | "version": "1.9.1", 681 | "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-1.9.1.tgz", 682 | "integrity": "sha1-ufmrROVa+WgYMdXyjQrur1x1DLA=", 683 | "dev": true 684 | } 685 | } 686 | }, 687 | "tslint-ionic-rules": { 688 | "version": "0.0.11", 689 | "resolved": "https://registry.npmjs.org/tslint-ionic-rules/-/tslint-ionic-rules-0.0.11.tgz", 690 | "integrity": "sha512-EP4/Vgv0Zl66T8dqZe6LV3g+aWpGCSBxHKfScbiFh3kQKE3cikGEEYCLu1vR5yhjvm5DveWFUobwEFiwlts0hw==", 691 | "dev": true, 692 | "requires": { 693 | "tslint-eslint-rules": "4.1.1" 694 | } 695 | }, 696 | "tsutils": { 697 | "version": "2.12.1", 698 | "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.12.1.tgz", 699 | "integrity": "sha1-9Nlc4zkciXHkblTEzw7bCiHdWyQ=", 700 | "dev": true, 701 | "requires": { 702 | "tslib": "1.8.0" 703 | } 704 | }, 705 | "typescript": { 706 | "version": "2.3.4", 707 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.3.4.tgz", 708 | "integrity": "sha1-PTgyGCgjHkNPKHUUlZw3qCtin0I=", 709 | "dev": true 710 | }, 711 | "unreachable-branch-transform": { 712 | "version": "0.3.0", 713 | "resolved": "https://registry.npmjs.org/unreachable-branch-transform/-/unreachable-branch-transform-0.3.0.tgz", 714 | "integrity": "sha1-2ZzExudG0mSSiEW2EdtUsPNHTKo=", 715 | "dev": true, 716 | "requires": { 717 | "esmangle-evaluator": "1.0.1", 718 | "recast": "0.10.43", 719 | "through2": "0.6.5" 720 | } 721 | }, 722 | "wrappy": { 723 | "version": "1.0.2", 724 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 725 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 726 | "dev": true 727 | }, 728 | "xhr2": { 729 | "version": "0.1.4", 730 | "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.1.4.tgz", 731 | "integrity": "sha1-f4dliEdxbbUCYyOBL4GMras4el8=", 732 | "dev": true 733 | }, 734 | "xtend": { 735 | "version": "4.0.1", 736 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", 737 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", 738 | "dev": true 739 | }, 740 | "zone.js": { 741 | "version": "0.8.12", 742 | "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.12.tgz", 743 | "integrity": "sha1-hv9QU8mK7CkaC/S7rFAdaUoFz7s=", 744 | "dev": true 745 | } 746 | } 747 | } 748 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ionic-alpha-scroll", 3 | "version": "0.1.5", 4 | "author": "zwq8299174", 5 | "description": "一款基于ionic的索引列表插件,类似于原生APP的通讯录页面、微信的联系人页面、汽车之家的汽车品牌页面等等,首字母进行索引然后滑动。", 6 | "main": "dist/index.js", 7 | "style": "dist/modules/alpha-scroll.scss", 8 | "typings": "dist/index.d.ts", 9 | "scripts": { 10 | "tslint": "tslint -c ./tslint.json -e './src/**/*.d.ts' './src/**/*.ts'", 11 | "build": "rm -rf aot dist && ngc", 12 | "postbuild": "npm run copy:scss", 13 | "copy:scss": "scripts/copy.sh", 14 | "push": "npm run build && npm publish" 15 | }, 16 | "files": [ 17 | "dist", 18 | "LICENSE", 19 | "Screenshot.gif", 20 | "README.md" 21 | ], 22 | "repository": { 23 | "type": "git", 24 | "url": "git+https://github.com/zwq8299174/ionic-alpha-scroll.git" 25 | }, 26 | "keywords": [ 27 | "ionic,ionic2,alpha scroll" 28 | ], 29 | "license": "MIT", 30 | "bugs": { 31 | "url": "https://github.com/zwq8299174/ionic-alpha-scroll/issues" 32 | }, 33 | "homepage": "https://github.com/zwq8299174/ionic-alpha-scroll#readme", 34 | "dependencies": { 35 | "@types/lodash": "^4.14.61", 36 | "alloytouch": "^0.2.5", 37 | "alloytouch-transformjs": "^0.1.0" 38 | }, 39 | "devDependencies": { 40 | "@angular/common": "4.1.3", 41 | "@angular/compiler": "4.1.3", 42 | "@angular/compiler-cli": "4.1.3", 43 | "@angular/core": "4.1.3", 44 | "@angular/forms": "4.1.3", 45 | "@angular/http": "4.1.3", 46 | "@angular/platform-browser": "4.1.3", 47 | "@angular/platform-browser-dynamic": "4.1.3", 48 | "@angular/platform-server": "4.1.3", 49 | "@ionic-native/core": "4.1.0", 50 | "@ionic/storage": "2.0.1", 51 | "ionic-angular": "3.6.1", 52 | "ionicons": "3.0.0", 53 | "rxjs": "5.4.0", 54 | "tslint": "^5.4.3", 55 | "tslint-ionic-rules": "0.0.11", 56 | "typescript": "2.3.4", 57 | "zone.js": "0.8.12" 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /scripts/copy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cp src/modules/*.scss dist/modules/ 4 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | import { ModuleWithProviders, NgModule } from '@angular/core'; 4 | import { ScrollModule } from './modules/alpha-scroll.module'; 5 | import { PipesModule } from './pipes/pipes.module'; 6 | 7 | export * from './modules/alpha-scroll.module'; 8 | export * from './pipes/pipes.module'; 9 | 10 | @NgModule({ 11 | imports: [ 12 | ScrollModule.forRoot(), 13 | PipesModule.forRoot() 14 | ], 15 | exports: [ 16 | ScrollModule, 17 | PipesModule 18 | ] 19 | }) 20 | export class AlphaScrollModule { 21 | public static forRoot(): ModuleWithProviders { 22 | return { 23 | ngModule: AlphaScrollModule, providers: [] 24 | }; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/modules/alpha-scroll.module.ts: -------------------------------------------------------------------------------- 1 | import { ModuleWithProviders, NgModule } from '@angular/core'; 2 | import { IonicModule } from 'ionic-angular'; 3 | import { PipesModule } from '../pipes/pipes.module'; 4 | import { AlphaScroll } from './alpha-scroll'; 5 | 6 | @NgModule({ 7 | imports: [ 8 | IonicModule, 9 | PipesModule 10 | ], 11 | exports: [ 12 | AlphaScroll 13 | ], 14 | declarations: [ 15 | AlphaScroll 16 | ] 17 | }) 18 | export class ScrollModule { 19 | public static forRoot(): ModuleWithProviders { 20 | return { 21 | ngModule: ScrollModule, providers: [] 22 | }; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/modules/alpha-scroll.scss: -------------------------------------------------------------------------------- 1 | .ion-alpha-list.list {margin: 0;} 2 | ion-alpha-scroll{position: absolute;top: 0;right: 0;left:0;bottom: 0;} 3 | .ion-alpha-list .item { 4 | border-right: none; 5 | } 6 | .ion-alpha-list>div:last-child .item .item-inner{ 7 | border-bottom: none; 8 | } 9 | 10 | .ion-alpha-sidebar { 11 | margin:0; 12 | padding:15px 0; 13 | position: absolute; 14 | top:0; 15 | right: 0; 16 | display: flex; 17 | flex-direction: column; 18 | justify-content:space-around; 19 | z-index: 999; 20 | } 21 | 22 | .ion-alpha-sidebar li { 23 | line-height: 1.1; 24 | list-style: none; 25 | width: 40px; 26 | text-align: center; 27 | } 28 | 29 | .ion-alpha-letter-indicator { 30 | -webkit-transition: opacity 150ms ease-in-out; 31 | transition: opacity 150ms ease-in-out; 32 | opacity: 1; 33 | border-radius:10px; 34 | background-color: rgba(0, 0, 0, 0.4); 35 | position: absolute; 36 | width: 100px; 37 | height: 100px; 38 | color: white; 39 | display: flex; 40 | visibility: hidden; 41 | justify-content: center; 42 | align-items: center; 43 | font-size: 5em; 44 | z-index: 999; 45 | } 46 | 47 | .ion-alpha-invalid a { 48 | color: #cccccc; 49 | } 50 | 51 | .ion-alpha-active a { 52 | color: #333; 53 | } 54 | 55 | .alpha-list-wrapper{position: absolute;top:0;bottom:0;left: 0;right:40px; 56 | overflow: hidden;} 57 | .alpha-list-wrapper::-webkit-scrollbar {display: none;} 58 | -------------------------------------------------------------------------------- /src/modules/alpha-scroll.ts: -------------------------------------------------------------------------------- 1 | import * as _ from 'lodash'; 2 | import { 3 | Component, 4 | ElementRef, 5 | Input, 6 | OnChanges, 7 | OnDestroy, 8 | OnInit, 9 | TemplateRef, 10 | ViewChild 11 | } from '@angular/core'; 12 | 13 | import { OrderBy } from '../pipes/order-by'; 14 | 15 | import * as AlloyTouch from 'alloytouch'; 16 | import * as Transform from 'alloytouch-transformjs'; 17 | // import { Vibration } from '@ionic-native/vibration'; 18 | 19 | @Component({ 20 | selector: 'ion-alpha-scroll', 21 | template: ` 22 | 23 | 24 | ↑ 25 | 26 | 27 | {{item.letter}} 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | {{alpha.letter}} 36 | 37 | ` 38 | }) 39 | export class AlphaScroll implements OnInit, OnChanges, OnDestroy { 40 | @ViewChild('wrapper') mainWrapper: ElementRef; 41 | @ViewChild('list') list: ElementRef; 42 | @ViewChild('sidebar') sidebar: ElementRef; 43 | @Input() listData: any; 44 | @Input() key: string; 45 | @Input() itemTemplate: TemplateRef; 46 | @Input() currentPageClass: any; 47 | /** 48 | * 头部区域模板 49 | * 50 | * @type {TemplateRef} 51 | * @memberof AlphaScroll 52 | */ 53 | @Input() headerTemplate: TemplateRef; 54 | private letterIndicatorEle: HTMLElement; 55 | private indicatorHeight: number; 56 | private indicatorWidth: number; 57 | private alloyTouch: any; 58 | private sidebarTouch: any; 59 | sortedItems: any = []; 60 | alphabet: any = []; 61 | constructor( 62 | private elementRef: ElementRef, 63 | private orderBy: OrderBy 64 | ) { 65 | this.letterIndicatorEle = document.createElement('div'); 66 | this.letterIndicatorEle.className = 'ion-alpha-letter-indicator'; 67 | let body = document.getElementsByTagName('body')[0]; 68 | body.appendChild(this.letterIndicatorEle); 69 | } 70 | ngOnInit() { 71 | console.log(this.elementRef.nativeElement.offsetHeight); 72 | console.log(this.list.nativeElement.offsetHeight); 73 | setTimeout(() => { 74 | this.indicatorWidth = this.letterIndicatorEle.offsetWidth; 75 | this.indicatorHeight = this.letterIndicatorEle.offsetHeight; 76 | this.setTouchHandlers(); 77 | }); 78 | } 79 | ngOnChanges() { 80 | // 先对传入的listData排序 避免结果顺序乱掉 81 | let sortedListData: Array = this.orderBy.transform(_.orderBy(this.listData, x => x.initial), [this.key]); 82 | let groupItems: any = _.groupBy(sortedListData, item => { 83 | let letter: any = _.get(item, this.key); 84 | return letter.toUpperCase().charAt(0); 85 | }); 86 | //根据头部模板是否为null 添加字符 87 | if(this.headerTemplate != null || this.headerTemplate != undefined){ 88 | groupItems['↑'] = []; 89 | } 90 | this.sortedItems = this.unwindGroup(groupItems); 91 | this.alphabet = this.iterateAlphabet(groupItems); 92 | } 93 | 94 | ngOnDestroy() { 95 | if (this.letterIndicatorEle) { 96 | this.letterIndicatorEle.remove(); 97 | } 98 | } 99 | 100 | setAlphaClass(alpha: any): string { 101 | return alpha.isActive ? 'ion-alpha-active' : 'ion-alpha-invalid'; 102 | } 103 | 104 | calculateDimensionsForSidebar() { 105 | return { 106 | height: this.mainWrapper.nativeElement.clientHeight + 'px' 107 | }; 108 | } 109 | private setTouchHandlers() { 110 | let sidebarEle: HTMLElement = this.elementRef.nativeElement.querySelector('.ion-alpha-sidebar'); 111 | if (!sidebarEle) return; 112 | this.elementRef.nativeElement.addEventListener('touchmove', function (evt) { 113 | evt.preventDefault(); 114 | }, false); 115 | setTimeout(() => { 116 | let min = this.elementRef.nativeElement.offsetHeight - this.list.nativeElement.offsetHeight; 117 | this.alloyTouch = new AlloyTouch({ 118 | touch: this.mainWrapper.nativeElement,//反馈触摸的dom 119 | vertical: true,//不必需,默认是true代表监听竖直方向touch 120 | target: this.list.nativeElement, //运动的对象 121 | property: "translateY", //被运动的属性 122 | min: min, 123 | max: 0, //不必需,滚动属性的最大值 124 | sensitivity: 1,//不必需,触摸区域的灵敏度,默认值为1,可以为负数 125 | factor: 1,//不必需,表示触摸位移与被运动属性映射关系,默认值是1 126 | step: 45,//用于校正到step的整数倍 127 | bindSelf: false, 128 | maxSpeed: 2, //不必需,触摸反馈的最大速度限制 129 | initialValue: 0 130 | }); 131 | let chooseEle = (evt) => { 132 | let closestEle: any = evt.type == 'touchend' ? document.elementFromPoint(evt.changedTouches[0].pageX, evt.changedTouches[0].pageY) : document.elementFromPoint(evt.targetTouches[0].pageX, evt.targetTouches[0].pageY); 133 | // // console.log(closestEle); 134 | if (closestEle && ['LI', 'A'].indexOf(closestEle.tagName) > -1) { 135 | let letter = closestEle.innerText; 136 | this.letterIndicatorEle.innerText = letter; 137 | this.letterIndicatorEle.style.visibility = 'visible'; 138 | let letterDivider: any = this.elementRef.nativeElement.querySelector(`#scroll-letter-${letter}`); 139 | let letterTop: number = letterDivider.offsetTop; 140 | if (letterDivider) { 141 | this.alloyTouch.to(-letterTop < min ? min : -letterTop, 0); 142 | } 143 | } 144 | } 145 | this.sidebarTouch = new AlloyTouch({ 146 | touch: this.sidebar.nativeElement,//反馈触摸的dom 147 | vertical: true,//不必需,默认是true代表监听竖直方向touch 148 | target: this.sidebar.nativeElement, //运动的对象 149 | property: "translateY", //被运动的属性 150 | min: 0, 151 | max: 0, //不必需,滚动属性的最大值 152 | sensitivity: 1,//不必需,触摸区域的灵敏度,默认值为1,可以为负数 153 | factor: 1,//不必需,表示触摸位移与被运动属性映射关系,默认值是1 154 | step: 45,//用于校正到step的整数倍 155 | bindSelf: false, 156 | maxSpeed: 2, //不必需,触摸反馈的最大速度限制 157 | initialValue: 0, 158 | touchStart: () => { 159 | this.alloyTouch.stop(); 160 | this.letterIndicatorEle.style.top = ((window.innerHeight - this.indicatorHeight) / 2) + 'px'; 161 | this.letterIndicatorEle.style.left = ((window.innerWidth - this.indicatorWidth) / 2) + 'px'; 162 | }, 163 | touchMove: (evt) => { 164 | chooseEle(evt); 165 | }, 166 | touchEnd: () => { 167 | this.letterIndicatorEle.style.visibility = 'hidden'; 168 | }, 169 | tap: (evt) => { 170 | chooseEle(evt); 171 | } 172 | }); 173 | Transform(this.list.nativeElement, true); 174 | }); 175 | } 176 | private unwindGroup(groupItems: any): Array { 177 | let result: Array = []; 178 | for (let letter in groupItems) { 179 | result = result.concat([{ isDivider: true, letter: letter }].concat(groupItems[letter])); 180 | } 181 | return result; 182 | } 183 | private iterateAlphabet(alphabet: any): Array { 184 | let str: string; 185 | if (this.headerTemplate != null || this.headerTemplate != undefined) { 186 | str = '↑ABCDEFGHIJKLMNOPQRSTUVWXYZ'; 187 | } else { 188 | str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; 189 | } 190 | let result: Array = []; 191 | for (let i = 0; i < str.length; i++) { 192 | let letter = str.charAt(i); 193 | let isActive = alphabet[letter] ? true : false; 194 | result.push({ letter: letter, isActive: isActive }); 195 | } 196 | return result; 197 | } 198 | } 199 | -------------------------------------------------------------------------------- /src/pipes/bypass-trust-res-url.ts: -------------------------------------------------------------------------------- 1 | import { Injectable, Pipe, PipeTransform } from '@angular/core'; 2 | import { DomSanitizer } from '@angular/platform-browser'; 3 | 4 | @Pipe({ 5 | name: 'trustResourceUrl', 6 | pure: true 7 | }) 8 | @Injectable() 9 | export class TrustResourceUrl implements PipeTransform { 10 | constructor(private sanitizer: DomSanitizer) { } 11 | 12 | transform(value: any, ..._args: any[]): any { 13 | if (!value) { 14 | return null; 15 | } 16 | 17 | return this.sanitizer.bypassSecurityTrustResourceUrl(value); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/pipes/map-to-iterable.ts: -------------------------------------------------------------------------------- 1 | import { Injectable, Pipe, PipeTransform } from '@angular/core'; 2 | 3 | @Pipe({ 4 | name: 'mapToIterable', 5 | pure: true 6 | }) 7 | @Injectable() 8 | export class MapToIterable implements PipeTransform { 9 | transform(value: any, ..._args: any[]): any { 10 | let result: Array = []; 11 | 12 | if (value.entries) { 13 | for (var [key, value] of value.entries()) { 14 | result.push({ key, value }); 15 | } 16 | } else { 17 | for (let key in value) { 18 | result.push({ key, value: value[key] }); 19 | } 20 | } 21 | 22 | return result; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/pipes/order-by.ts: -------------------------------------------------------------------------------- 1 | import { Injectable, Pipe, PipeTransform } from '@angular/core'; 2 | import * as _ from 'lodash'; 3 | 4 | @Pipe({ 5 | name: 'orderBy', 6 | pure: true 7 | }) 8 | @Injectable() 9 | export class OrderBy implements PipeTransform { 10 | transform(input: any, orderConfigs: string | Array = '+'): any { 11 | if (!Array.isArray(input)) { 12 | return input; 13 | } 14 | 15 | if (this.isSingle(orderConfigs)) { 16 | let orderConfig: string = !Array.isArray(orderConfigs) ? orderConfigs : orderConfigs[0]; 17 | let config = this.parseProperty(orderConfig); 18 | 19 | // Basic array 20 | if (config.property === '') { 21 | return _.orderBy(input, [], config.order); 22 | } 23 | 24 | return _.orderBy(input, [config.property], [config.order]); 25 | } 26 | 27 | let configs = this.parseProperties(orderConfigs); 28 | return _.orderBy(input, configs.properties, configs.orders); 29 | } 30 | 31 | private isSingle(orderConfigs: any): boolean { 32 | return !Array.isArray(orderConfigs) || (Array.isArray(orderConfigs) && orderConfigs.length === 1); 33 | } 34 | 35 | private parseProperty(config: string): { order: string, property: string } { 36 | let orderChar = config.substr(0, 1); 37 | let isDesc = orderChar === '-'; 38 | let hasOrder = orderChar || orderChar === '+'; 39 | return { order: isDesc ? 'desc' : 'asc', property: hasOrder ? config.substr(1) : config }; 40 | } 41 | 42 | private parseProperties(configs: Array): { orders: Array, properties: Array } { 43 | let result = { orders: [], properties: [] }; 44 | configs.forEach(configStr => { 45 | let config = this.parseProperty(configStr); 46 | result.orders.push(config.order); 47 | result.properties.push(config.property); 48 | }); 49 | return result; 50 | } 51 | } -------------------------------------------------------------------------------- /src/pipes/pipes.module.ts: -------------------------------------------------------------------------------- 1 | import { ModuleWithProviders, NgModule } from '@angular/core'; 2 | import { MapToIterable } from './map-to-iterable'; 3 | import { OrderBy } from './order-by'; 4 | import { TrustResourceUrl } from './bypass-trust-res-url'; 5 | 6 | export { MapToIterable } from './map-to-iterable'; 7 | export { OrderBy } from './order-by'; 8 | export { TrustResourceUrl } from './bypass-trust-res-url'; 9 | 10 | @NgModule({ 11 | exports: [ 12 | MapToIterable, 13 | OrderBy, 14 | TrustResourceUrl 15 | ], 16 | declarations: [ 17 | MapToIterable, 18 | OrderBy, 19 | TrustResourceUrl 20 | ] 21 | }) 22 | export class PipesModule { 23 | public static forRoot(): ModuleWithProviders { 24 | return { 25 | ngModule: PipesModule, 26 | providers: [ 27 | MapToIterable, 28 | OrderBy, 29 | TrustResourceUrl 30 | ] 31 | }; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "es2015", 4 | "target": "es5", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "inlineSources": true, 8 | "declaration": true, 9 | "noImplicitAny": false, 10 | "experimentalDecorators": true, 11 | "skipLibCheck": true, 12 | "noUnusedLocals": true, 13 | "noUnusedParameters": true, 14 | "lib": [ 15 | "dom", 16 | "es2015" 17 | ], 18 | "outDir": "dist" 19 | }, 20 | "angularCompilerOptions": { 21 | "genDir": "aot" 22 | }, 23 | "include": [ 24 | "./*.ts", 25 | "./src/**/*.ts" 26 | ], 27 | "exclude": [ 28 | "node_modules", 29 | "dist" 30 | ] 31 | } -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "tslint-ionic-rules", 3 | "rules": { 4 | "eofline": false, 5 | "no-consecutive-blank-lines": [ 6 | true 7 | ] 8 | } 9 | } --------------------------------------------------------------------------------