@colijnit/corecomponents_v12 12.0.44 → 12.0.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/bundles/colijnit-corecomponents_v12.umd.js +404 -1
  2. package/bundles/colijnit-corecomponents_v12.umd.js.map +1 -1
  3. package/colijnit-corecomponents_v12.d.ts +2 -0
  4. package/colijnit-corecomponents_v12.metadata.json +1 -1
  5. package/esm2015/colijnit-corecomponents_v12.js +3 -1
  6. package/esm2015/lib/components/input-date-range-picker/input-date-range-picker.component.js +4 -1
  7. package/esm2015/lib/components/pagination/paginate.pipe.js +106 -0
  8. package/esm2015/lib/components/pagination/pagination-instance.js +2 -0
  9. package/esm2015/lib/components/pagination/pagination.component.js +194 -0
  10. package/esm2015/lib/components/pagination/pagination.module.js +26 -0
  11. package/esm2015/lib/components/pagination/pagination.service.js +88 -0
  12. package/esm2015/public-api.js +3 -1
  13. package/fesm2015/colijnit-corecomponents_v12.js +406 -1
  14. package/fesm2015/colijnit-corecomponents_v12.js.map +1 -1
  15. package/lib/components/co-dialog/style/_material-definition.scss +1 -1
  16. package/lib/components/input-date-range-picker/input-date-range-picker.component.d.ts +1 -0
  17. package/lib/components/pagination/paginate.pipe.d.ts +18 -0
  18. package/lib/components/pagination/pagination-instance.d.ts +14 -0
  19. package/lib/components/pagination/pagination.component.d.ts +46 -0
  20. package/lib/components/pagination/pagination.module.d.ts +2 -0
  21. package/lib/components/pagination/pagination.service.d.ts +24 -0
  22. package/lib/components/pagination/style/_layout.scss +87 -0
  23. package/lib/components/pagination/style/_material-definition.scss +6 -0
  24. package/lib/components/pagination/style/_theme.scss +5 -0
  25. package/lib/components/pagination/style/material.scss +5 -0
  26. package/package.json +1 -1
  27. package/public-api.d.ts +2 -0
@@ -10,6 +10,8 @@ export { BaseGridComponent as ɵq } from './lib/components/grid/base/base-grid.c
10
10
  export { BaseInlineEditGridComponent as ɵo } from './lib/components/grid/base/base-inline-edit-grid.component';
11
11
  export { BaseSelectionGridComponent as ɵn } from './lib/components/grid/base/base-selection-grid.component';
12
12
  export { BaseToolbarGridComponent as ɵp } from './lib/components/grid/base/base-toolbar-grid.component';
13
+ export { PaginatePipe as ɵbg } from './lib/components/pagination/paginate.pipe';
14
+ export { PaginationService as ɵbf } from './lib/components/pagination/pagination.service';
13
15
  export { PopupShowerService as ɵx } from './lib/components/popup/service/popup-shower.service';
14
16
  export { BaseSimpleGridComponent as ɵy } from './lib/components/simple-grid/base-simple-grid.component';
15
17
  export { SimpleGridCellComponent as ɵba } from './lib/components/simple-grid/simple-grid-cell.component';
@@ -32,4 +34,4 @@ export { AppendPipe as ɵs } from './lib/pipes/append.pipe';
32
34
  export { AppendPipeModule as ɵr } from './lib/pipes/append.pipe.module';
33
35
  export { PrependPipe as ɵbc } from './lib/pipes/prepend.pipe';
34
36
  export { PrependPipeModule as ɵbb } from './lib/pipes/prepend.pipe.module';
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29saWpuaXQtY29yZWNvbXBvbmVudHNfdjEyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2NvbGlqbml0LWNvcmVjb21wb25lbnRzX3YxMi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQyxrQkFBa0IsSUFBSSxFQUFFLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUNwRixPQUFPLEVBQUMsVUFBVSxJQUFJLEVBQUUsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxzQkFBc0IsSUFBSSxFQUFFLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUMzRyxPQUFPLEVBQUMsbUJBQW1CLElBQUksRUFBRSxFQUFDLE1BQU0sNERBQTRELENBQUM7QUFDckcsT0FBTyxFQUFDLGlCQUFpQixJQUFJLEVBQUUsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBQywyQkFBMkIsSUFBSSxFQUFFLEVBQUMsTUFBTSw0REFBNEQsQ0FBQztBQUM3RyxPQUFPLEVBQUMsMEJBQTBCLElBQUksRUFBRSxFQUFDLE1BQU0sMERBQTBELENBQUM7QUFDMUcsT0FBTyxFQUFDLHdCQUF3QixJQUFJLEVBQUUsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBQ3RHLE9BQU8sRUFBQyxrQkFBa0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxxREFBcUQsQ0FBQztBQUM3RixPQUFPLEVBQUMsdUJBQXVCLElBQUksRUFBRSxFQUFDLE1BQU0seURBQXlELENBQUM7QUFDdEcsT0FBTyxFQUFDLHVCQUF1QixJQUFJLEdBQUcsRUFBQyxNQUFNLHlEQUF5RCxDQUFDO0FBQ3ZHLE9BQU8sRUFBQyx3QkFBd0IsSUFBSSxFQUFFLEVBQUMsTUFBTSw4REFBOEQsQ0FBQztBQUM1RyxPQUFPLEVBQUMscUJBQXFCLElBQUksRUFBRSxFQUFDLE1BQU0sMkRBQTJELENBQUM7QUFDdEcsT0FBTyxFQUFDLFlBQVksSUFBSSxFQUFFLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUNoRixPQUFPLEVBQUMsdUNBQXVDLElBQUksRUFBRSxFQUFDLE1BQU0sNERBQTRELENBQUM7QUFDekgsT0FBTyxFQUFDLG9CQUFvQixJQUFJLEVBQUUsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQ3RGLE9BQU8sRUFBQyx5QkFBeUIsSUFBSSxHQUFHLEVBQUMsTUFBTSw0REFBNEQsQ0FBQztBQUM1RyxPQUFPLEVBQUMscUJBQXFCLElBQUksR0FBRyxFQUFDLE1BQU0sdURBQXVELENBQUM7QUFDbkcsT0FBTyxFQUFDLDBCQUEwQixJQUFJLEVBQUUsRUFBQyxNQUFNLGtFQUFrRSxDQUFDO0FBQ2xILE9BQU8sRUFBQyxpQkFBaUIsSUFBSSxFQUFFLEVBQUMsd0JBQXdCLElBQUksRUFBRSxFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDaEgsT0FBTyxFQUFDLFlBQVksSUFBSSxFQUFFLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUMseUJBQXlCLElBQUksRUFBRSxFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDbEcsT0FBTyxFQUFDLHFCQUFxQixJQUFJLEVBQUUsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ3pGLE9BQU8sRUFBQyxzQkFBc0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUM1RixPQUFPLEVBQUMsa0JBQWtCLElBQUksRUFBRSxFQUFDLE1BQU0saURBQWlELENBQUM7QUFDekYsT0FBTyxFQUFDLGVBQWUsSUFBSSxFQUFFLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUNuRixPQUFPLEVBQUMsVUFBVSxJQUFJLEVBQUUsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxnQkFBZ0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUMsV0FBVyxJQUFJLEdBQUcsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBQyxpQkFBaUIsSUFBSSxHQUFHLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcblxuZXhwb3J0IHtCYXNlSW5wdXRDb21wb25lbnQgYXMgybVtfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Jhc2UvYmFzZS1pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0IHtCYXNlTW9kdWxlIGFzIMm1an0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9iYXNlL2Jhc2UubW9kdWxlJztcbmV4cG9ydCB7Q29tbWl0QnV0dG9uc0NvbXBvbmVudCBhcyDJtXd9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvYmFzZS9jb21taXQtYnV0dG9ucy9jb21taXQtYnV0dG9ucy5jb21wb25lbnQnO1xuZXhwb3J0IHtDb21taXRCdXR0b25zTW9kdWxlIGFzIMm1dn0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9iYXNlL2NvbW1pdC1idXR0b25zL2NvbW1pdC1idXR0b25zLm1vZHVsZSc7XG5leHBvcnQge0Jhc2VHcmlkQ29tcG9uZW50IGFzIMm1cX0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9ncmlkL2Jhc2UvYmFzZS1ncmlkLmNvbXBvbmVudCc7XG5leHBvcnQge0Jhc2VJbmxpbmVFZGl0R3JpZENvbXBvbmVudCBhcyDJtW99IGZyb20gJy4vbGliL2NvbXBvbmVudHMvZ3JpZC9iYXNlL2Jhc2UtaW5saW5lLWVkaXQtZ3JpZC5jb21wb25lbnQnO1xuZXhwb3J0IHtCYXNlU2VsZWN0aW9uR3JpZENvbXBvbmVudCBhcyDJtW59IGZyb20gJy4vbGliL2NvbXBvbmVudHMvZ3JpZC9iYXNlL2Jhc2Utc2VsZWN0aW9uLWdyaWQuY29tcG9uZW50JztcbmV4cG9ydCB7QmFzZVRvb2xiYXJHcmlkQ29tcG9uZW50IGFzIMm1cH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9ncmlkL2Jhc2UvYmFzZS10b29sYmFyLWdyaWQuY29tcG9uZW50JztcbmV4cG9ydCB7UG9wdXBTaG93ZXJTZXJ2aWNlIGFzIMm1eH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9wb3B1cC9zZXJ2aWNlL3BvcHVwLXNob3dlci5zZXJ2aWNlJztcbmV4cG9ydCB7QmFzZVNpbXBsZUdyaWRDb21wb25lbnQgYXMgybV5fSBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NpbXBsZS1ncmlkL2Jhc2Utc2ltcGxlLWdyaWQuY29tcG9uZW50JztcbmV4cG9ydCB7U2ltcGxlR3JpZENlbGxDb21wb25lbnQgYXMgybViYX0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9zaW1wbGUtZ3JpZC9zaW1wbGUtZ3JpZC1jZWxsLmNvbXBvbmVudCc7XG5leHBvcnQge1ZhbGlkYXRpb25FcnJvckNvbXBvbmVudCBhcyDJtXV9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvdmFsaWRhdGlvbi1lcnJvci92YWxpZGF0aW9uLWVycm9yLmNvbXBvbmVudCc7XG5leHBvcnQge1ZhbGlkYXRpb25FcnJvck1vZHVsZSBhcyDJtXR9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvdmFsaWRhdGlvbi1lcnJvci92YWxpZGF0aW9uLWVycm9yLm1vZHVsZSc7XG5leHBvcnQge0lucHV0Qm9vbGVhbiBhcyDJtWl9IGZyb20gJy4vbGliL2NvcmUvZGVjb3JhdG9yL2lucHV0LWJvb2xlYW4uZGVjb3JhdG9yJztcbmV4cG9ydCB7Rm9ybUlucHV0VXNlck1vZGVsQ2hhbmdlTGlzdGVuZXJTZXJ2aWNlIGFzIMm1a30gZnJvbSAnLi9saWIvY29yZS9zZXJ2aWNlL2Zvcm0taW5wdXQtdXNlci1jaGFuZ2UtbGlzdGVuZXIuc2VydmljZSc7XG5leHBvcnQge05nWm9uZVdyYXBwZXJTZXJ2aWNlIGFzIMm1bH0gZnJvbSAnLi9saWIvY29yZS9zZXJ2aWNlL25nLXpvbmUtd3JhcHBlci5zZXJ2aWNlJztcbmV4cG9ydCB7Q2xpY2tPdXRzaWRlTWFzdGVyU2VydmljZSBhcyDJtWJlfSBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL2NsaWNrb3V0c2lkZS9jbGljay1vdXRzaWRlLW1hc3Rlci5zZXJ2aWNlJztcbmV4cG9ydCB7Q2xpY2tPdXRzaWRlRGlyZWN0aXZlIGFzIMm1YmR9IGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvY2xpY2tvdXRzaWRlL2NsaWNrLW91dHNpZGUuZGlyZWN0aXZlJztcbmV4cG9ydCB7T2JzZXJ2ZVZpc2liaWxpdHlEaXJlY3RpdmUgYXMgybV6fSBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL29ic2VydmUtdmlzaWJpbGl0eS9vYnNlcnZlLXZpc2liaWxpdHkuZGlyZWN0aXZlJztcbmV4cG9ydCB7Q29SaXBwbGVEaXJlY3RpdmUgYXMgybVjLE1EX1JJUFBMRV9HTE9CQUxfT1BUSU9OUyBhcyDJtWJ9IGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvcmlwcGxlL3JpcHBsZS5kaXJlY3RpdmUnO1xuZXhwb3J0IHtSaXBwbGVNb2R1bGUgYXMgybVhfSBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL3JpcHBsZS9yaXBwbGUubW9kdWxlJztcbmV4cG9ydCB7Q29TY3JvbGxEaXNwYXRjaGVyU2VydmljZSBhcyDJtWV9IGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvcmlwcGxlL3Njcm9sbC1kaXNwYXRjaGVyLnNlcnZpY2UnO1xuZXhwb3J0IHtDb1Njcm9sbGFibGVEaXJlY3RpdmUgYXMgybVmfSBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL3JpcHBsZS9zY3JvbGxhYmxlLmRpcmVjdGl2ZSc7XG5leHBvcnQge0NvVmlld3BvcnRSdWxlclNlcnZpY2UgYXMgybVkfSBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL3JpcHBsZS92aWV3cG9ydC1ydWxlci5zZXJ2aWNlJztcbmV4cG9ydCB7U3RvcENsaWNrRGlyZWN0aXZlIGFzIMm1aH0gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9zdG9wY2xpY2svc3RvcC1jbGljay5kaXJlY3RpdmUnO1xuZXhwb3J0IHtTdG9wQ2xpY2tNb2R1bGUgYXMgybVnfSBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL3N0b3BjbGljay9zdG9wLWNsaWNrLm1vZHVsZSc7XG5leHBvcnQge0FwcGVuZFBpcGUgYXMgybVzfSBmcm9tICcuL2xpYi9waXBlcy9hcHBlbmQucGlwZSc7XG5leHBvcnQge0FwcGVuZFBpcGVNb2R1bGUgYXMgybVyfSBmcm9tICcuL2xpYi9waXBlcy9hcHBlbmQucGlwZS5tb2R1bGUnO1xuZXhwb3J0IHtQcmVwZW5kUGlwZSBhcyDJtWJjfSBmcm9tICcuL2xpYi9waXBlcy9wcmVwZW5kLnBpcGUnO1xuZXhwb3J0IHtQcmVwZW5kUGlwZU1vZHVsZSBhcyDJtWJifSBmcm9tICcuL2xpYi9waXBlcy9wcmVwZW5kLnBpcGUubW9kdWxlJzsiXX0=
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29saWpuaXQtY29yZWNvbXBvbmVudHNfdjEyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2NvbGlqbml0LWNvcmVjb21wb25lbnRzX3YxMi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQyxrQkFBa0IsSUFBSSxFQUFFLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUNwRixPQUFPLEVBQUMsVUFBVSxJQUFJLEVBQUUsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxzQkFBc0IsSUFBSSxFQUFFLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUMzRyxPQUFPLEVBQUMsbUJBQW1CLElBQUksRUFBRSxFQUFDLE1BQU0sNERBQTRELENBQUM7QUFDckcsT0FBTyxFQUFDLGlCQUFpQixJQUFJLEVBQUUsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBQywyQkFBMkIsSUFBSSxFQUFFLEVBQUMsTUFBTSw0REFBNEQsQ0FBQztBQUM3RyxPQUFPLEVBQUMsMEJBQTBCLElBQUksRUFBRSxFQUFDLE1BQU0sMERBQTBELENBQUM7QUFDMUcsT0FBTyxFQUFDLHdCQUF3QixJQUFJLEVBQUUsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBQ3RHLE9BQU8sRUFBQyxZQUFZLElBQUksR0FBRyxFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDOUUsT0FBTyxFQUFDLGlCQUFpQixJQUFJLEdBQUcsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ3hGLE9BQU8sRUFBQyxrQkFBa0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxxREFBcUQsQ0FBQztBQUM3RixPQUFPLEVBQUMsdUJBQXVCLElBQUksRUFBRSxFQUFDLE1BQU0seURBQXlELENBQUM7QUFDdEcsT0FBTyxFQUFDLHVCQUF1QixJQUFJLEdBQUcsRUFBQyxNQUFNLHlEQUF5RCxDQUFDO0FBQ3ZHLE9BQU8sRUFBQyx3QkFBd0IsSUFBSSxFQUFFLEVBQUMsTUFBTSw4REFBOEQsQ0FBQztBQUM1RyxPQUFPLEVBQUMscUJBQXFCLElBQUksRUFBRSxFQUFDLE1BQU0sMkRBQTJELENBQUM7QUFDdEcsT0FBTyxFQUFDLFlBQVksSUFBSSxFQUFFLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUNoRixPQUFPLEVBQUMsdUNBQXVDLElBQUksRUFBRSxFQUFDLE1BQU0sNERBQTRELENBQUM7QUFDekgsT0FBTyxFQUFDLG9CQUFvQixJQUFJLEVBQUUsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQ3RGLE9BQU8sRUFBQyx5QkFBeUIsSUFBSSxHQUFHLEVBQUMsTUFBTSw0REFBNEQsQ0FBQztBQUM1RyxPQUFPLEVBQUMscUJBQXFCLElBQUksR0FBRyxFQUFDLE1BQU0sdURBQXVELENBQUM7QUFDbkcsT0FBTyxFQUFDLDBCQUEwQixJQUFJLEVBQUUsRUFBQyxNQUFNLGtFQUFrRSxDQUFDO0FBQ2xILE9BQU8sRUFBQyxpQkFBaUIsSUFBSSxFQUFFLEVBQUMsd0JBQXdCLElBQUksRUFBRSxFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDaEgsT0FBTyxFQUFDLFlBQVksSUFBSSxFQUFFLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUMseUJBQXlCLElBQUksRUFBRSxFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDbEcsT0FBTyxFQUFDLHFCQUFxQixJQUFJLEVBQUUsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ3pGLE9BQU8sRUFBQyxzQkFBc0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUM1RixPQUFPLEVBQUMsa0JBQWtCLElBQUksRUFBRSxFQUFDLE1BQU0saURBQWlELENBQUM7QUFDekYsT0FBTyxFQUFDLGVBQWUsSUFBSSxFQUFFLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUNuRixPQUFPLEVBQUMsVUFBVSxJQUFJLEVBQUUsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxnQkFBZ0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUMsV0FBVyxJQUFJLEdBQUcsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBQyxpQkFBaUIsSUFBSSxHQUFHLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcblxuZXhwb3J0IHtCYXNlSW5wdXRDb21wb25lbnQgYXMgybVtfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Jhc2UvYmFzZS1pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0IHtCYXNlTW9kdWxlIGFzIMm1an0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9iYXNlL2Jhc2UubW9kdWxlJztcbmV4cG9ydCB7Q29tbWl0QnV0dG9uc0NvbXBvbmVudCBhcyDJtXd9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvYmFzZS9jb21taXQtYnV0dG9ucy9jb21taXQtYnV0dG9ucy5jb21wb25lbnQnO1xuZXhwb3J0IHtDb21taXRCdXR0b25zTW9kdWxlIGFzIMm1dn0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9iYXNlL2NvbW1pdC1idXR0b25zL2NvbW1pdC1idXR0b25zLm1vZHVsZSc7XG5leHBvcnQge0Jhc2VHcmlkQ29tcG9uZW50IGFzIMm1cX0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9ncmlkL2Jhc2UvYmFzZS1ncmlkLmNvbXBvbmVudCc7XG5leHBvcnQge0Jhc2VJbmxpbmVFZGl0R3JpZENvbXBvbmVudCBhcyDJtW99IGZyb20gJy4vbGliL2NvbXBvbmVudHMvZ3JpZC9iYXNlL2Jhc2UtaW5saW5lLWVkaXQtZ3JpZC5jb21wb25lbnQnO1xuZXhwb3J0IHtCYXNlU2VsZWN0aW9uR3JpZENvbXBvbmVudCBhcyDJtW59IGZyb20gJy4vbGliL2NvbXBvbmVudHMvZ3JpZC9iYXNlL2Jhc2Utc2VsZWN0aW9uLWdyaWQuY29tcG9uZW50JztcbmV4cG9ydCB7QmFzZVRvb2xiYXJHcmlkQ29tcG9uZW50IGFzIMm1cH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9ncmlkL2Jhc2UvYmFzZS10b29sYmFyLWdyaWQuY29tcG9uZW50JztcbmV4cG9ydCB7UGFnaW5hdGVQaXBlIGFzIMm1Ymd9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvcGFnaW5hdGlvbi9wYWdpbmF0ZS5waXBlJztcbmV4cG9ydCB7UGFnaW5hdGlvblNlcnZpY2UgYXMgybViZn0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9wYWdpbmF0aW9uL3BhZ2luYXRpb24uc2VydmljZSc7XG5leHBvcnQge1BvcHVwU2hvd2VyU2VydmljZSBhcyDJtXh9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvcG9wdXAvc2VydmljZS9wb3B1cC1zaG93ZXIuc2VydmljZSc7XG5leHBvcnQge0Jhc2VTaW1wbGVHcmlkQ29tcG9uZW50IGFzIMm1eX0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9zaW1wbGUtZ3JpZC9iYXNlLXNpbXBsZS1ncmlkLmNvbXBvbmVudCc7XG5leHBvcnQge1NpbXBsZUdyaWRDZWxsQ29tcG9uZW50IGFzIMm1YmF9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2ltcGxlLWdyaWQvc2ltcGxlLWdyaWQtY2VsbC5jb21wb25lbnQnO1xuZXhwb3J0IHtWYWxpZGF0aW9uRXJyb3JDb21wb25lbnQgYXMgybV1fSBmcm9tICcuL2xpYi9jb21wb25lbnRzL3ZhbGlkYXRpb24tZXJyb3IvdmFsaWRhdGlvbi1lcnJvci5jb21wb25lbnQnO1xuZXhwb3J0IHtWYWxpZGF0aW9uRXJyb3JNb2R1bGUgYXMgybV0fSBmcm9tICcuL2xpYi9jb21wb25lbnRzL3ZhbGlkYXRpb24tZXJyb3IvdmFsaWRhdGlvbi1lcnJvci5tb2R1bGUnO1xuZXhwb3J0IHtJbnB1dEJvb2xlYW4gYXMgybVpfSBmcm9tICcuL2xpYi9jb3JlL2RlY29yYXRvci9pbnB1dC1ib29sZWFuLmRlY29yYXRvcic7XG5leHBvcnQge0Zvcm1JbnB1dFVzZXJNb2RlbENoYW5nZUxpc3RlbmVyU2VydmljZSBhcyDJtWt9IGZyb20gJy4vbGliL2NvcmUvc2VydmljZS9mb3JtLWlucHV0LXVzZXItY2hhbmdlLWxpc3RlbmVyLnNlcnZpY2UnO1xuZXhwb3J0IHtOZ1pvbmVXcmFwcGVyU2VydmljZSBhcyDJtWx9IGZyb20gJy4vbGliL2NvcmUvc2VydmljZS9uZy16b25lLXdyYXBwZXIuc2VydmljZSc7XG5leHBvcnQge0NsaWNrT3V0c2lkZU1hc3RlclNlcnZpY2UgYXMgybViZX0gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9jbGlja291dHNpZGUvY2xpY2stb3V0c2lkZS1tYXN0ZXIuc2VydmljZSc7XG5leHBvcnQge0NsaWNrT3V0c2lkZURpcmVjdGl2ZSBhcyDJtWJkfSBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL2NsaWNrb3V0c2lkZS9jbGljay1vdXRzaWRlLmRpcmVjdGl2ZSc7XG5leHBvcnQge09ic2VydmVWaXNpYmlsaXR5RGlyZWN0aXZlIGFzIMm1en0gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9vYnNlcnZlLXZpc2liaWxpdHkvb2JzZXJ2ZS12aXNpYmlsaXR5LmRpcmVjdGl2ZSc7XG5leHBvcnQge0NvUmlwcGxlRGlyZWN0aXZlIGFzIMm1YyxNRF9SSVBQTEVfR0xPQkFMX09QVElPTlMgYXMgybVifSBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL3JpcHBsZS9yaXBwbGUuZGlyZWN0aXZlJztcbmV4cG9ydCB7UmlwcGxlTW9kdWxlIGFzIMm1YX0gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9yaXBwbGUvcmlwcGxlLm1vZHVsZSc7XG5leHBvcnQge0NvU2Nyb2xsRGlzcGF0Y2hlclNlcnZpY2UgYXMgybVlfSBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL3JpcHBsZS9zY3JvbGwtZGlzcGF0Y2hlci5zZXJ2aWNlJztcbmV4cG9ydCB7Q29TY3JvbGxhYmxlRGlyZWN0aXZlIGFzIMm1Zn0gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9yaXBwbGUvc2Nyb2xsYWJsZS5kaXJlY3RpdmUnO1xuZXhwb3J0IHtDb1ZpZXdwb3J0UnVsZXJTZXJ2aWNlIGFzIMm1ZH0gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9yaXBwbGUvdmlld3BvcnQtcnVsZXIuc2VydmljZSc7XG5leHBvcnQge1N0b3BDbGlja0RpcmVjdGl2ZSBhcyDJtWh9IGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvc3RvcGNsaWNrL3N0b3AtY2xpY2suZGlyZWN0aXZlJztcbmV4cG9ydCB7U3RvcENsaWNrTW9kdWxlIGFzIMm1Z30gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9zdG9wY2xpY2svc3RvcC1jbGljay5tb2R1bGUnO1xuZXhwb3J0IHtBcHBlbmRQaXBlIGFzIMm1c30gZnJvbSAnLi9saWIvcGlwZXMvYXBwZW5kLnBpcGUnO1xuZXhwb3J0IHtBcHBlbmRQaXBlTW9kdWxlIGFzIMm1cn0gZnJvbSAnLi9saWIvcGlwZXMvYXBwZW5kLnBpcGUubW9kdWxlJztcbmV4cG9ydCB7UHJlcGVuZFBpcGUgYXMgybViY30gZnJvbSAnLi9saWIvcGlwZXMvcHJlcGVuZC5waXBlJztcbmV4cG9ydCB7UHJlcGVuZFBpcGVNb2R1bGUgYXMgybViYn0gZnJvbSAnLi9saWIvcGlwZXMvcHJlcGVuZC5waXBlLm1vZHVsZSc7Il19
@@ -10,6 +10,7 @@ export class InputDateRangePickerComponent extends BaseInputComponent {
10
10
  this.dateRangeChange = new EventEmitter();
11
11
  this.close = new EventEmitter();
12
12
  this.select = new EventEmitter();
13
+ this.cleared = new EventEmitter();
13
14
  }
14
15
  showClass() {
15
16
  return true;
@@ -33,6 +34,7 @@ InputDateRangePickerComponent.decorators = [
33
34
  (ngModelChange)="rangeChange()"
34
35
  (close)="close.next($event)"
35
36
  (select)="select.next($event)"
37
+ (cleared)="cleared.next($event)"
36
38
  [(startDate)]="startDate"
37
39
  [(endDate)]="endDate"
38
40
  ></ejs-daterangepicker>
@@ -52,6 +54,7 @@ InputDateRangePickerComponent.propDecorators = {
52
54
  dateRangeChange: [{ type: Output }],
53
55
  close: [{ type: Output }],
54
56
  select: [{ type: Output }],
57
+ cleared: [{ type: Output }],
55
58
  showClass: [{ type: HostBinding, args: ["class.co-input-date-range-picker",] }]
56
59
  };
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0LWRhdGUtcmFuZ2UtcGlja2VyL2lucHV0LWRhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQW9CaEUsTUFBTSxPQUFPLDZCQUE4QixTQUFRLGtCQUF3QjtJQWxCM0U7O1FBcUJTLGVBQVUsR0FBVyxZQUFZLENBQUM7UUFHbEMsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFTekIsb0JBQWUsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUcvRCxrQkFBYSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRzdELG9CQUFlLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFHbkUsVUFBSyxHQUFxQixJQUFJLFlBQVksRUFBTSxDQUFDO1FBR2pELFdBQU0sR0FBcUIsSUFBSSxZQUFZLEVBQU0sQ0FBQztJQWUzRCxDQUFDO0lBWlEsU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV0QyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNsQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDM0Q7SUFDSCxDQUFDOzs7WUEzREYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxxQkFBcUI7Z0JBQy9CLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7OztHQWFUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7eUJBR0UsS0FBSzswQkFHTCxLQUFLO3dCQUdMLEtBQUs7c0JBR0wsS0FBSzs4QkFHTCxNQUFNOzRCQUdOLE1BQU07OEJBR04sTUFBTTtvQkFHTixNQUFNO3FCQUdOLE1BQU07d0JBR04sV0FBVyxTQUFDLGtDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtCYXNlSW5wdXRDb21wb25lbnR9IGZyb20gXCIuLi9iYXNlL2Jhc2UtaW5wdXQuY29tcG9uZW50XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJjby1pbnB1dC1kYXRlLXJhbmdlXCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxlanMtZGF0ZXJhbmdlcGlja2VyXHJcbiAgICAgIFtmb3JtYXRdPVwiZGF0ZUZvcm1hdFwiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgIFtuZ01vZGVsXT1cIm1vZGVsXCJcclxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwicmFuZ2VDaGFuZ2UoKVwiXHJcbiAgICAgIChjbG9zZSk9XCJjbG9zZS5uZXh0KCRldmVudClcIlxyXG4gICAgICAoc2VsZWN0KT1cInNlbGVjdC5uZXh0KCRldmVudClcIlxyXG4gICAgICBbKHN0YXJ0RGF0ZSldPVwic3RhcnREYXRlXCJcclxuICAgICAgWyhlbmREYXRlKV09XCJlbmREYXRlXCJcclxuICAgID48L2Vqcy1kYXRlcmFuZ2VwaWNrZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmVxdWlyZWQtaW5kaWNhdG9yXCI+PC9kaXY+XHJcbiAgICA8bmctdGVtcGxhdGUgI3ZhbGlkYXRpb25FcnJvcj48L25nLXRlbXBsYXRlPlxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXREYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlSW5wdXRDb21wb25lbnQ8RGF0ZT4ge1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkYXRlRm9ybWF0OiBzdHJpbmcgPSBcImRkLU1NLXl5eXlcIjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcGxhY2Vob2xkZXI6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHN0YXJ0RGF0ZTogRGF0ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZW5kRGF0ZTogRGF0ZTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHN0YXJ0RGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZW5kRGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZGF0ZVJhbmdlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZVtdPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgY2xvc2U6IEV2ZW50RW1pdHRlcjx7fT4gPSBuZXcgRXZlbnRFbWl0dGVyPHt9PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgc2VsZWN0OiBFdmVudEVtaXR0ZXI8e30+ID0gbmV3IEV2ZW50RW1pdHRlcjx7fT4oKTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28taW5wdXQtZGF0ZS1yYW5nZS1waWNrZXJcIilcclxuICBwdWJsaWMgc2hvd0NsYXNzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmFuZ2VDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0YXJ0RGF0ZUNoYW5nZS5lbWl0KHRoaXMuc3RhcnREYXRlKTtcclxuICAgIHRoaXMuZW5kRGF0ZUNoYW5nZS5lbWl0KHRoaXMuZW5kRGF0ZSk7XHJcblxyXG4gICAgaWYgKHRoaXMuc3RhcnREYXRlICYmIHRoaXMuZW5kRGF0ZSkge1xyXG4gICAgICB0aGlzLmRhdGVSYW5nZUNoYW5nZS5lbWl0KFt0aGlzLnN0YXJ0RGF0ZSwgdGhpcy5lbmREYXRlXSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0LWRhdGUtcmFuZ2UtcGlja2VyL2lucHV0LWRhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQXFCaEUsTUFBTSxPQUFPLDZCQUE4QixTQUFRLGtCQUF3QjtJQW5CM0U7O1FBc0JTLGVBQVUsR0FBVyxZQUFZLENBQUM7UUFHbEMsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFTekIsb0JBQWUsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUcvRCxrQkFBYSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRzdELG9CQUFlLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFHbkUsVUFBSyxHQUFxQixJQUFJLFlBQVksRUFBTSxDQUFDO1FBR2pELFdBQU0sR0FBcUIsSUFBSSxZQUFZLEVBQU0sQ0FBQztRQUdsRCxZQUFPLEdBQXFCLElBQUksWUFBWSxFQUFNLENBQUM7SUFlNUQsQ0FBQztJQVpRLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdEMsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQzNEO0lBQ0gsQ0FBQzs7O1lBL0RGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7O0dBY1Q7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7Ozt5QkFHRSxLQUFLOzBCQUdMLEtBQUs7d0JBR0wsS0FBSztzQkFHTCxLQUFLOzhCQUdMLE1BQU07NEJBR04sTUFBTTs4QkFHTixNQUFNO29CQUdOLE1BQU07cUJBR04sTUFBTTtzQkFHTixNQUFNO3dCQUdOLFdBQVcsU0FBQyxrQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7QmFzZUlucHV0Q29tcG9uZW50fSBmcm9tIFwiLi4vYmFzZS9iYXNlLWlucHV0LmNvbXBvbmVudFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiY28taW5wdXQtZGF0ZS1yYW5nZVwiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZWpzLWRhdGVyYW5nZXBpY2tlclxyXG4gICAgICBbZm9ybWF0XT1cImRhdGVGb3JtYXRcIlxyXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICBbbmdNb2RlbF09XCJtb2RlbFwiXHJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInJhbmdlQ2hhbmdlKClcIlxyXG4gICAgICAoY2xvc2UpPVwiY2xvc2UubmV4dCgkZXZlbnQpXCJcclxuICAgICAgKHNlbGVjdCk9XCJzZWxlY3QubmV4dCgkZXZlbnQpXCJcclxuICAgICAgKGNsZWFyZWQpPVwiY2xlYXJlZC5uZXh0KCRldmVudClcIlxyXG4gICAgICBbKHN0YXJ0RGF0ZSldPVwic3RhcnREYXRlXCJcclxuICAgICAgWyhlbmREYXRlKV09XCJlbmREYXRlXCJcclxuICAgID48L2Vqcy1kYXRlcmFuZ2VwaWNrZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmVxdWlyZWQtaW5kaWNhdG9yXCI+PC9kaXY+XHJcbiAgICA8bmctdGVtcGxhdGUgI3ZhbGlkYXRpb25FcnJvcj48L25nLXRlbXBsYXRlPlxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXREYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlSW5wdXRDb21wb25lbnQ8RGF0ZT4ge1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkYXRlRm9ybWF0OiBzdHJpbmcgPSBcImRkLU1NLXl5eXlcIjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcGxhY2Vob2xkZXI6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHN0YXJ0RGF0ZTogRGF0ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZW5kRGF0ZTogRGF0ZTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHN0YXJ0RGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZW5kRGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZGF0ZVJhbmdlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZVtdPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgY2xvc2U6IEV2ZW50RW1pdHRlcjx7fT4gPSBuZXcgRXZlbnRFbWl0dGVyPHt9PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgc2VsZWN0OiBFdmVudEVtaXR0ZXI8e30+ID0gbmV3IEV2ZW50RW1pdHRlcjx7fT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGNsZWFyZWQ6IEV2ZW50RW1pdHRlcjx7fT4gPSBuZXcgRXZlbnRFbWl0dGVyPHt9PigpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jby1pbnB1dC1kYXRlLXJhbmdlLXBpY2tlclwiKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByYW5nZUNoYW5nZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RhcnREYXRlQ2hhbmdlLmVtaXQodGhpcy5zdGFydERhdGUpO1xyXG4gICAgdGhpcy5lbmREYXRlQ2hhbmdlLmVtaXQodGhpcy5lbmREYXRlKTtcclxuXHJcbiAgICBpZiAodGhpcy5zdGFydERhdGUgJiYgdGhpcy5lbmREYXRlKSB7XHJcbiAgICAgIHRoaXMuZGF0ZVJhbmdlQ2hhbmdlLmVtaXQoW3RoaXMuc3RhcnREYXRlLCB0aGlzLmVuZERhdGVdKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,106 @@
1
+ import { Pipe } from "@angular/core";
2
+ import { PaginationService } from "./pagination.service";
3
+ const LARGE_NUMBER = 999999999;
4
+ export class PaginatePipe {
5
+ constructor(paginateService) {
6
+ this.paginateService = paginateService;
7
+ // store the values from the last time the pipe
8
+ this.state = {};
9
+ }
10
+ transform(collection, args) {
11
+ // When an observable is passed through the AsyncPipe, it will output
12
+ // `null` until the subscription resolves. In this case, we want to
13
+ // use the cached data from the `state` object to prevent the NgFor
14
+ // from flashing empty until the real values arrive.
15
+ if (!(collection instanceof Array)) {
16
+ let _id = args.id || this.paginateService.DEFAULT_ID;
17
+ if (this.state[_id]) {
18
+ return this.state[_id].slice;
19
+ }
20
+ else {
21
+ return collection;
22
+ }
23
+ }
24
+ let serverSideMode = args.totalItems !== undefined;
25
+ let instance = this._createInstance(collection, args);
26
+ let id = instance.id;
27
+ let start;
28
+ let end;
29
+ let perPage = instance.itemsPerPage;
30
+ this.paginateService.register(instance);
31
+ if (!serverSideMode && collection instanceof Array) {
32
+ perPage = perPage || LARGE_NUMBER;
33
+ start = (instance.currentPage - 1) * perPage;
34
+ end = start + perPage;
35
+ let isIdentical = this._stateIsIdentical(id, collection, start, end);
36
+ if (isIdentical) {
37
+ return this.state[id].slice;
38
+ }
39
+ else {
40
+ let slice = collection.slice(start, end);
41
+ this._saveState(id, collection, slice, start, end);
42
+ this.paginateService.change.next(id);
43
+ return slice;
44
+ }
45
+ }
46
+ // save the state for server-side collection to avoid null
47
+ // flash as new data loads.
48
+ this._saveState(id, collection, collection, start, end);
49
+ return collection;
50
+ }
51
+ // Create an IPaginationInstance object, using defaults for any optional properties not supplied.
52
+ _createInstance(collection, args) {
53
+ let config = args;
54
+ this._checkConfig(config);
55
+ return {
56
+ id: config.id || this.paginateService.DEFAULT_ID,
57
+ itemsPerPage: config.itemsPerPage || 0,
58
+ currentPage: config.currentPage || 1,
59
+ totalItems: config.totalItems || collection.length
60
+ };
61
+ }
62
+ // Ensure the argument passed to the filter contains the required properties.
63
+ _checkConfig(config) {
64
+ const required = ["itemsPerPage", "currentPage"];
65
+ const missing = required.filter((prop) => !config.hasOwnProperty(prop));
66
+ if (0 < missing.length) {
67
+ throw new Error(`PaginatePipe: Argument is missing the following required properties: ${missing.join(", ")}`);
68
+ }
69
+ }
70
+ /**
71
+ * To avoid returning a brand new array each time the pipe is run, we store the state of the sliced
72
+ * array for a given id. This means that the next time the pipe is run on this collection & id, we just
73
+ * need to check that the collection, start and end points are all identical, and if so, return the
74
+ * last sliced array.
75
+ */
76
+ _saveState(id, collection, slice, start, end) {
77
+ this.state[id] = {
78
+ collection,
79
+ size: collection.length,
80
+ slice,
81
+ start,
82
+ end
83
+ };
84
+ }
85
+ // For a given id, returns true if the collection, size, start and end values are identical.
86
+ _stateIsIdentical(id, collection, start, end) {
87
+ let state = this.state[id];
88
+ if (!state) {
89
+ return false;
90
+ }
91
+ return state.collection === collection &&
92
+ state.size === collection.length &&
93
+ state.start === start &&
94
+ state.end === end;
95
+ }
96
+ }
97
+ PaginatePipe.decorators = [
98
+ { type: Pipe, args: [{
99
+ name: 'paginate',
100
+ pure: false
101
+ },] }
102
+ ];
103
+ PaginatePipe.ctorParameters = () => [
104
+ { type: PaginationService }
105
+ ];
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmVjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9wYWdpbmF0aW9uL3BhZ2luYXRlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLElBQUksRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFFbEQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFHdkQsTUFBTSxZQUFZLEdBQVcsU0FBUyxDQUFDO0FBY3ZDLE1BQU0sT0FBTyxZQUFZO0lBS3JCLFlBQW9CLGVBQWtDO1FBQWxDLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQUh0RCwrQ0FBK0M7UUFDdkMsVUFBSyxHQUFpQyxFQUFFLENBQUM7SUFHakQsQ0FBQztJQUVNLFNBQVMsQ0FBQyxVQUFpQixFQUFFLElBQVM7UUFDekMscUVBQXFFO1FBQ3JFLG1FQUFtRTtRQUNuRSxtRUFBbUU7UUFDbkUsb0RBQW9EO1FBQ3BELElBQUksQ0FBQyxDQUFDLFVBQVUsWUFBWSxLQUFLLENBQUMsRUFBRTtZQUNoQyxJQUFJLEdBQUcsR0FBUSxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDO1lBQzFELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDakIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQzthQUNoQztpQkFBTTtnQkFDSCxPQUFPLFVBQVUsQ0FBQzthQUNyQjtTQUNKO1FBRUQsSUFBSSxjQUFjLEdBQVksSUFBSSxDQUFDLFVBQVUsS0FBSyxTQUFTLENBQUM7UUFDNUQsSUFBSSxRQUFRLEdBQXdCLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNFLElBQUksRUFBRSxHQUFX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Q0FBQyxFQUFVLEVBQUUsVUFBaUIsRUFBRSxLQUFhLEVBQUUsR0FBVztRQUMvRSxJQUFJLEtBQUssR0FBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDUixPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUNELE9BQU8sS0FBSyxDQUFDLFVBQVUsS0FBSyxVQUFVO1lBQ2xDLEtBQUssQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLE1BQU07WUFDaEMsS0FBSyxDQUFDLEtBQUssS0FBSyxLQUFLO1lBQ3JCLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDO0lBQzFCLENBQUM7OztZQXpHSixJQUFJLFNBQUM7Z0JBQ0YsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLElBQUksRUFBRSxLQUFLO2FBQ2Q7OztZQWhCTyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1BpcGUsIFBpcGVUcmFuc2Zvcm19IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5pbXBvcnQge1BhZ2luYXRpb25TZXJ2aWNlfSBmcm9tIFwiLi9wYWdpbmF0aW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtJUGFnaW5hdGlvbkluc3RhbmNlfSBmcm9tIFwiLi9wYWdpbmF0aW9uLWluc3RhbmNlXCI7XHJcblxyXG5jb25zdCBMQVJHRV9OVU1CRVI6IG51bWJlciA9IDk5OTk5OTk5OTtcclxuXHJcbmludGVyZmFjZSBJUGlwZVN0YXRlIHtcclxuICAgIGNvbGxlY3Rpb246IGFueVtdO1xyXG4gICAgc2l6ZTogbnVtYmVyO1xyXG4gICAgc3RhcnQ6IG51bWJlcjtcclxuICAgIGVuZDogbnVtYmVyO1xyXG4gICAgc2xpY2U6IGFueVtdO1xyXG59XHJcblxyXG5AUGlwZSh7XHJcbiAgICBuYW1lOiAncGFnaW5hdGUnLFxyXG4gICAgcHVyZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIFBhZ2luYXRlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuICAgIC8vIHN0b3JlIHRoZSB2YWx1ZXMgZnJvbSB0aGUgbGFzdCB0aW1lIHRoZSBwaXBlXHJcbiAgICBwcml2YXRlIHN0YXRlOiB7IFtpZDogc3RyaW5nXTogSVBpcGVTdGF0ZSB9ID0ge307XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBwYWdpbmF0ZVNlcnZpY2U6IFBhZ2luYXRpb25TZXJ2aWNlKSB7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHRyYW5zZm9ybShjb2xsZWN0aW9uOiBhbnlbXSwgYXJnczogYW55KTogYW55IHtcclxuICAgICAgICAvLyBXaGVuIGFuIG9ic2VydmFibGUgaXMgcGFzc2VkIHRocm91Z2ggdGhlIEFzeW5jUGlwZSwgaXQgd2lsbCBvdXRwdXRcclxuICAgICAgICAvLyBgbnVsbGAgdW50aWwgdGhlIHN1YnNjcmlwdGlvbiByZXNvbHZlcy4gSW4gdGhpcyBjYXNlLCB3ZSB3YW50IHRvXHJcbiAgICAgICAgLy8gdXNlIHRoZSBjYWNoZWQgZGF0YSBmcm9tIHRoZSBgc3RhdGVgIG9iamVjdCB0byBwcmV2ZW50IHRoZSBOZ0ZvclxyXG4gICAgICAgIC8vIGZyb20gZmxhc2hpbmcgZW1wdHkgdW50aWwgdGhlIHJlYWwgdmFsdWVzIGFycml2ZS5cclxuICAgICAgICBpZiAoIShjb2xsZWN0aW9uIGluc3RhbmNlb2YgQXJyYXkpKSB7XHJcbiAgICAgICAgICAgIGxldCBfaWQ6IGFueSA9IGFyZ3MuaWQgfHwgdGhpcy5wYWdpbmF0ZVNlcnZpY2UuREVGQVVMVF9JRDtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc3RhdGVbX2lkXSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGVbX2lkXS5zbGljZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgc2VydmVyU2lkZU1vZGU6IGJvb2xlYW4gPSBhcmdzLnRvdGFsSXRlbXMgIT09IHVuZGVmaW5lZDtcclxuICAgICAgICBsZXQgaW5zdGFuY2U6IElQYWdpbmF0aW9uSW5zdGFuY2UgPSB0aGlzLl9jcmVhdGVJbnN0YW5jZShjb2xsZWN0aW9uLCBhcmdzKTtcclxuICAgICAgICBsZXQgaWQ6IHN0cmluZyA9IGluc3RhbmNlLmlkO1xyXG4gICAgICAgIGxldCBzdGFydDogbnVtYmVyO1xyXG4gICAgICAgIGxldCBlbmQ6IG51bWJlcjtcclxuICAgICAgICBsZXQgcGVyUGFnZTogbnVtYmVyID0gaW5zdGFuY2UuaXRlbXNQZXJQYWdlO1xyXG5cclxuICAgICAgICB0aGlzLnBhZ2luYXRlU2VydmljZS5yZWdpc3RlcihpbnN0YW5jZSk7XHJcblxyXG4gICAgICAgIGlmICghc2VydmVyU2lkZU1vZGUgJiYgY29sbGVjdGlvbiBpbnN0YW5jZW9mIEFycmF5KSB7XHJcbiAgICAgICAgICAgIHBlclBhZ2UgPSBwZXJQYWdlIHx8IExBUkdFX05VTUJFUjtcclxuICAgICAgICAgICAgc3RhcnQgPSAoaW5zdGFuY2UuY3VycmVudFBhZ2UgLSAxKSAqIHBlclBhZ2U7XHJcbiAgICAgICAgICAgIGVuZCA9IHN0YXJ0ICsgcGVyUGFnZTtcclxuXHJcbiAgICAgICAgICAgIGxldCBpc0lkZW50aWNhbDogYm9vbGVhbiA9IHRoaXMuX3N0YXRlSXNJZGVudGljYWwoaWQsIGNvbGxlY3Rpb24sIHN0YXJ0LCBlbmQpO1xyXG4gICAgICAgICAgICBpZiAoaXNJZGVudGljYWwpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN0YXRlW2lkXS5zbGljZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGxldCBzbGljZTogYW55W10gPSBjb2xsZWN0aW9uLnNsaWNlKHN0YXJ0LCBlbmQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2F2ZVN0YXRlKGlkLCBjb2xsZWN0aW9uLCBzbGljZSwgc3RhcnQsIGVuZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRlU2VydmljZS5jaGFuZ2UubmV4dChpZCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc2xpY2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHNhdmUgdGhlIHN0YXRlIGZvciBzZXJ2ZXItc2lkZSBjb2xsZWN0aW9uIHRvIGF2b2lkIG51bGxcclxuICAgICAgICAvLyBmbGFzaCBhcyBuZXcgZGF0YSBsb2Fkcy5cclxuICAgICAgICB0aGlzLl9zYXZlU3RhdGUoaWQsIGNvbGxlY3Rpb24sIGNvbGxlY3Rpb24sIHN0YXJ0LCBlbmQpO1xyXG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENyZWF0ZSBhbiBJUGFnaW5hdGlvbkluc3RhbmNlIG9iamVjdCwgdXNpbmcgZGVmYXVsdHMgZm9yIGFueSBvcHRpb25hbCBwcm9wZXJ0aWVzIG5vdCBzdXBwbGllZC5cclxuICAgIHByaXZhdGUgX2NyZWF0ZUluc3RhbmNlKGNvbGxlY3Rpb246IGFueVtdLCBhcmdzOiBhbnkpOiBJUGFnaW5hdGlvbkluc3RhbmNlIHtcclxuICAgICAgICBsZXQgY29uZmlnOiBhbnkgPSBhcmdzO1xyXG4gICAgICAgIHRoaXMuX2NoZWNrQ29uZmlnKGNvbmZpZyk7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGlkOiBjb25maWcuaWQgfHwgdGhpcy5wYWdpbmF0ZVNlcnZpY2UuREVGQVVMVF9JRCxcclxuICAgICAgICAgICAgaXRlbXNQZXJQYWdlOiBjb25maWcuaXRlbXNQZXJQYWdlIHx8IDAsXHJcbiAgICAgICAgICAgIGN1cnJlbnRQYWdlOiBjb25maWcuY3VycmVudFBhZ2UgfHwgMSxcclxuICAgICAgICAgICAgdG90YWxJdGVtczogY29uZmlnLnRvdGFsSXRlbXMgfHwgY29sbGVjdGlvbi5sZW5ndGhcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEVuc3VyZSB0aGUgYXJndW1lbnQgcGFzc2VkIHRvIHRoZSBmaWx0ZXIgY29udGFpbnMgdGhlIHJlcXVpcmVkIHByb3BlcnRpZXMuXHJcbiAgICBwcml2YXRlIF9jaGVja0NvbmZpZyhjb25maWc6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHJlcXVpcmVkOiBTdHJpbmdbXSA9IFtcIml0ZW1zUGVyUGFnZVwiLCBcImN1cnJlbnRQYWdlXCJdO1xyXG4gICAgICAgIGNvbnN0IG1pc3Npbmc6IFN0cmluZ1tdID0gcmVxdWlyZWQuZmlsdGVyKChwcm9wOiBhbnkpID0+ICFjb25maWcuaGFzT3duUHJvcGVydHkocHJvcCkpO1xyXG4gICAgICAgIGlmICgwIDwgbWlzc2luZy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQYWdpbmF0ZVBpcGU6IEFyZ3VtZW50IGlzIG1pc3NpbmcgdGhlIGZvbGxvd2luZyByZXF1aXJlZCBwcm9wZXJ0aWVzOiAke21pc3Npbmcuam9pbihcIiwgXCIpfWApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRvIGF2b2lkIHJldHVybmluZyBhIGJyYW5kIG5ldyBhcnJheSBlYWNoIHRpbWUgdGhlIHBpcGUgaXMgcnVuLCB3ZSBzdG9yZSB0aGUgc3RhdGUgb2YgdGhlIHNsaWNlZFxyXG4gICAgICogYXJyYXkgZm9yIGEgZ2l2ZW4gaWQuIFRoaXMgbWVhbnMgdGhhdCB0aGUgbmV4dCB0aW1lIHRoZSBwaXBlIGlzIHJ1biBvbiB0aGlzIGNvbGxlY3Rpb24gJiBpZCwgd2UganVzdFxyXG4gICAgICogbmVlZCB0byBjaGVjayB0aGF0IHRoZSBjb2xsZWN0aW9uLCBzdGFydCBhbmQgZW5kIHBvaW50cyBhcmUgYWxsIGlkZW50aWNhbCwgYW5kIGlmIHNvLCByZXR1cm4gdGhlXHJcbiAgICAgKiBsYXN0IHNsaWNlZCBhcnJheS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfc2F2ZVN0YXRlKGlkOiBzdHJpbmcsIGNvbGxlY3Rpb246IGFueVtdLCBzbGljZTogYW55W10sIHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zdGF0ZVtpZF0gPSB7XHJcbiAgICAgICAgICAgIGNvbGxlY3Rpb24sXHJcbiAgICAgICAgICAgIHNpemU6IGNvbGxlY3Rpb24ubGVuZ3RoLFxyXG4gICAgICAgICAgICBzbGljZSxcclxuICAgICAgICAgICAgc3RhcnQsXHJcbiAgICAgICAgICAgIGVuZFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRm9yIGEgZ2l2ZW4gaWQsIHJldHVybnMgdHJ1ZSBpZiB0aGUgY29sbGVjdGlvbiwgc2l6ZSwgc3RhcnQgYW5kIGVuZCB2YWx1ZXMgYXJlIGlkZW50aWNhbC5cclxuICAgIHByaXZhdGUgX3N0YXRlSXNJZGVudGljYWwoaWQ6IHN0cmluZywgY29sbGVjdGlvbjogYW55W10sIHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IHN0YXRlOiBhbnkgPSB0aGlzLnN0YXRlW2lkXTtcclxuICAgICAgICBpZiAoIXN0YXRlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHN0YXRlLmNvbGxlY3Rpb24gPT09IGNvbGxlY3Rpb24gJiZcclxuICAgICAgICAgICAgc3RhdGUuc2l6ZSA9PT0gY29sbGVjdGlvbi5sZW5ndGggJiZcclxuICAgICAgICAgICAgc3RhdGUuc3RhcnQgPT09IHN0YXJ0ICYmXHJcbiAgICAgICAgICAgIHN0YXRlLmVuZCA9PT0gZW5kO1xyXG4gICAgfVxyXG59Il19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi1pbnN0YW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmVjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9wYWdpbmF0aW9uL3BhZ2luYXRpb24taW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFJlcHJlc2VudHMgYSBwYWdpbmF0aW9uIGluc3RhbmNlOiB0aGUgY29uZmlndXJhdGlvbiBvYmplY3QgZm9yIGEgc2luZ2xlIHBhZ2luYXRpb24gY29tcG9uZW50LlxyXG5leHBvcnQgaW50ZXJmYWNlIElQYWdpbmF0aW9uSW5zdGFuY2Uge1xyXG4gICAgLy8gQW4gb3B0aW9uYWwgSUQgZm9yIHRoZSBwYWdpbmF0aW9uIGluc3RhbmNlLiBPbmx5IHVzZWZ1bCBpZiB5b3Ugd2lzaCB0byBoYXZlIG1vcmUgdGhhbiBvbmNlIGluc3RhbmNlIGF0IGEgdGltZSBpbiBhIGdpdmVuIGNvbXBvbmVudC5cclxuICAgIGlkPzogc3RyaW5nO1xyXG4gICAgLy8gVGhlIG51bWJlciBvZiBpdGVtcyBwZXIgcGFnaW5hdGVkIHBhZ2UuXHJcbiAgICBpdGVtc1BlclBhZ2U6IG51bWJlcjtcclxuICAgIC8vIFRoZSBjdXJyZW50IChhY3RpdmUpIHBhZ2UuXHJcbiAgICBjdXJyZW50UGFnZTogbnVtYmVyO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBjb2xsZWN0aW9uLiBPbmx5IHVzZWZ1bCB3aGVuXHJcbiAgICAgKiBkb2luZyBzZXJ2ZXItc2lkZSBwYWdpbmcsIHdoZXJlIHRoZSBjb2xsZWN0aW9uIHNpemUgaXMgbGltaXRlZFxyXG4gICAgICogdG8gYSBzaW5nbGUgcGFnZSByZXR1cm5lZCBieSB0aGUgc2VydmVyIEFQSS5cclxuICAgICAqXHJcbiAgICAgKiBGb3IgaW4tbWVtb3J5IHBhZ2luZywgdGhpcyBwcm9wZXJ0eSBzaG91bGQgbm90IGJlIHNldCwgYXMgaXRcclxuICAgICAqIHdpbGwgYmUgYXV0b21hdGljYWxseSBzZXQgdG8gdGhlIHZhbHVlIG9mICBjb2xsZWN0aW9uLmxlbmd0aC5cclxuICAgICAqL1xyXG4gICAgdG90YWxJdGVtcz86IG51bWJlcjtcclxufSJdfQ==
@@ -0,0 +1,194 @@
1
+ import { Component, EventEmitter, HostBinding, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
2
+ import { PaginationService } from './pagination.service';
3
+ export class PaginationComponent {
4
+ constructor(_paginationService) {
5
+ this._paginationService = _paginationService;
6
+ this.maxSize = 7;
7
+ this.directionLinks = true;
8
+ this.previousLabel = 'Vorige pagina';
9
+ this.nextLabel = 'Volgende pagina';
10
+ this.autoHide = false;
11
+ // Emits the new page number.
12
+ this.pageChange = new EventEmitter();
13
+ this.showClass = true;
14
+ this.pages = [];
15
+ this.changeSub = this._paginationService.change.subscribe((id) => {
16
+ if (this.id === id) {
17
+ this._updatePageLinks();
18
+ }
19
+ });
20
+ }
21
+ ngOnInit() {
22
+ if (!this.id) {
23
+ this.id = this._paginationService.DEFAULT_ID;
24
+ }
25
+ this._updatePageLinks();
26
+ }
27
+ ngOnChanges() {
28
+ this._updatePageLinks();
29
+ }
30
+ ngOnDestroy() {
31
+ this.changeSub.unsubscribe();
32
+ }
33
+ goToFirstPage() {
34
+ if (!this.isOnFirstPage()) {
35
+ this.setCurrentPage(1);
36
+ }
37
+ }
38
+ goToPreviousPage() {
39
+ if (!this.isOnFirstPage()) {
40
+ this.setCurrentPage(this.getCurrentPage() - 1);
41
+ }
42
+ }
43
+ goToNextPage() {
44
+ if (!this.isOnLastPage()) {
45
+ this.setCurrentPage(this.getCurrentPage() + 1);
46
+ }
47
+ }
48
+ setCurrentPage(page) {
49
+ this.pageChange.emit(page);
50
+ }
51
+ isOnFirstPage() {
52
+ return this.getCurrentPage() === 1;
53
+ }
54
+ isOnLastPage() {
55
+ return this.getLastPage() === this.getCurrentPage();
56
+ }
57
+ shouldBeHidden() {
58
+ if (!this.autoHide) {
59
+ return false;
60
+ }
61
+ else {
62
+ let instance = this._paginationService.getInstance();
63
+ return (instance.totalItems <= instance.itemsPerPage);
64
+ }
65
+ }
66
+ /**
67
+ * Updates the page links and checks that the current page is valid. Should run whenever the
68
+ * PaginationService.change stream emits a value matching the current ID, or when any of the
69
+ * input values changes.
70
+ */
71
+ _updatePageLinks() {
72
+ let paginationInstance = this._paginationService.getInstance(this.id);
73
+ this.pages = this.createPageArray(paginationInstance.currentPage, paginationInstance.itemsPerPage, paginationInstance.totalItems, this.maxSize);
74
+ const correctedCurrentPage = this.outOfBoundCorrection(paginationInstance);
75
+ if (correctedCurrentPage !== paginationInstance.currentPage) {
76
+ this.setCurrentPage(correctedCurrentPage);
77
+ }
78
+ }
79
+ getCurrentPage() {
80
+ return this._paginationService.getCurrentPage(this.id);
81
+ }
82
+ getLastPage() {
83
+ let instance = this._paginationService.getInstance(this.id);
84
+ return Math.ceil(instance.totalItems / instance.itemsPerPage);
85
+ }
86
+ /**
87
+ * Checks that the instance.currentPage property is within bounds for the current page range.
88
+ * If not, return a correct value for currentPage, or the current value if OK.
89
+ */
90
+ outOfBoundCorrection(instance) {
91
+ const totalPages = Math.ceil(instance.totalItems / instance.itemsPerPage);
92
+ if (totalPages < instance.currentPage && 0 < totalPages) {
93
+ return totalPages;
94
+ }
95
+ else if (instance.currentPage < 1) {
96
+ return 1;
97
+ }
98
+ return instance.currentPage;
99
+ }
100
+ // Returns an array of IPage objects to use in the pagination controls.
101
+ createPageArray(currentPage, itemsPerPage, totalItems, paginationRange) {
102
+ // paginationRange could be a string if passed from attribute, so cast to number.
103
+ paginationRange = +paginationRange;
104
+ let pages = [];
105
+ const totalPages = Math.ceil(totalItems / itemsPerPage);
106
+ const halfWay = Math.ceil(paginationRange / 2);
107
+ const isStart = currentPage <= halfWay;
108
+ const isEnd = totalPages - halfWay < currentPage;
109
+ const isMiddle = !isStart && !isEnd;
110
+ let ellipsesNeeded = paginationRange < totalPages;
111
+ let i = 1;
112
+ while (i <= totalPages && i <= paginationRange) {
113
+ let label;
114
+ let pageNumber = this.calculatePageNumber(i, currentPage, paginationRange, totalPages);
115
+ let openingEllipsesNeeded = (i === 2 && (isMiddle || isEnd));
116
+ let closingEllipsesNeeded = (i === paginationRange - 1 && (isMiddle || isStart));
117
+ if (ellipsesNeeded && (openingEllipsesNeeded || closingEllipsesNeeded)) {
118
+ label = '...';
119
+ }
120
+ else {
121
+ label = '' + pageNumber;
122
+ }
123
+ pages.push({
124
+ label: label,
125
+ value: pageNumber
126
+ });
127
+ i++;
128
+ }
129
+ return pages;
130
+ }
131
+ // Given the position in the sequence of pagination links [i], figure out what page number corresponds to that position.
132
+ calculatePageNumber(i, currentPage, paginationRange, totalPages) {
133
+ let halfWay = Math.ceil(paginationRange / 2);
134
+ if (i === paginationRange) {
135
+ return totalPages;
136
+ }
137
+ else if (i === 1) {
138
+ return i;
139
+ }
140
+ else if (paginationRange < totalPages) {
141
+ if (totalPages - halfWay < currentPage) {
142
+ return totalPages - paginationRange + i;
143
+ }
144
+ else if (halfWay < currentPage) {
145
+ return currentPage - halfWay + i;
146
+ }
147
+ else {
148
+ return i;
149
+ }
150
+ }
151
+ else {
152
+ return i;
153
+ }
154
+ }
155
+ }
156
+ PaginationComponent.decorators = [
157
+ { type: Component, args: [{
158
+ selector: 'co-pagination',
159
+ template: `
160
+ <div class="pagination-component-main-wrapper" *ngIf="!shouldBeHidden()">
161
+ <div>
162
+ <ng-content></ng-content>
163
+ </div>
164
+ <ul class="pagination">
165
+ <li *ngIf="directionLinks" class="pagination-previous">
166
+ <a (click)="goToPreviousPage()" [class.disabled]="isOnFirstPage()">{{ previousLabel }}</a>
167
+ </li>
168
+ <li *ngFor="let page of pages" [class.current]="getCurrentPage() === page.value" (click)="setCurrentPage(page.value)">
169
+ <span>{{page.label}}</span>
170
+ </li>
171
+ <li *ngIf="directionLinks" class="pagination-next">
172
+ <a (click)="goToNextPage()" [class.disabled]="isOnLastPage()">{{ nextLabel }}</a>
173
+ </li>
174
+ </ul>
175
+ </div>
176
+ `,
177
+ encapsulation: ViewEncapsulation.None
178
+ },] }
179
+ ];
180
+ PaginationComponent.ctorParameters = () => [
181
+ { type: PaginationService }
182
+ ];
183
+ PaginationComponent.propDecorators = {
184
+ template: [{ type: ViewChild, args: ['template',] }],
185
+ id: [{ type: Input }],
186
+ maxSize: [{ type: Input }],
187
+ directionLinks: [{ type: Input }],
188
+ previousLabel: [{ type: Input }],
189
+ nextLabel: [{ type: Input }],
190
+ autoHide: [{ type: Input }],
191
+ pageChange: [{ type: Output }],
192
+ showClass: [{ type: HostBinding, args: ['class.co-pagination',] }]
193
+ };
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFBRSxXQUFXLEVBQ3pCLEtBQUssRUFJTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQTZCdkQsTUFBTSxPQUFPLG1CQUFtQjtJQWlDOUIsWUFBb0Isa0JBQXFDO1FBQXJDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUF6QmxELFlBQU8sR0FBVyxDQUFDLENBQUM7UUFHcEIsbUJBQWMsR0FBWSxJQUFJLENBQUM7UUFHL0Isa0JBQWEsR0FBVyxlQUFlLENBQUM7UUFHeEMsY0FBUyxHQUFXLGlCQUFpQixDQUFDO1FBR3RDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFakMsNkJBQTZCO1FBRWIsZUFBVSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBR3ZFLGNBQVMsR0FBWSxJQUFJLENBQUM7UUFFMUIsVUFBSyxHQUFZLEVBQUUsQ0FBQztRQUt6QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBVSxFQUFFLEVBQUU7WUFDdkUsSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7YUFDekI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUU7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YUFDVjtTQUNGO2FBQU07WUFDTCxPQUFPLENBQUMsQ0FBQztTQUNWO0lBQ0gsQ0FBQzs7O1lBN01GLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZUFBZTtnQkFDekIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBNUJPLGlCQUFpQjs7O3VCQThCdEIsU0FBUyxTQUFDLFVBQVU7aUJBR3BCLEtBQUs7c0JBR0wsS0FBSzs2QkFHTCxLQUFLOzRCQUdMLEtBQUs7d0JBR0wsS0FBSzt1QkFHTCxLQUFLO3lCQUlMLE1BQU07d0JBR04sV0FBVyxTQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZyxcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7SVBhZ2luYXRpb25JbnN0YW5jZX0gZnJvbSAnLi9wYWdpbmF0aW9uLWluc3RhbmNlJztcclxuaW1wb3J0IHtQYWdpbmF0aW9uU2VydmljZX0gZnJvbSAnLi9wYWdpbmF0aW9uLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUGFnZSB7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICB2YWx1ZTogYW55O1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvLXBhZ2luYXRpb24nLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwicGFnaW5hdGlvbi1jb21wb25lbnQtbWFpbi13cmFwcGVyXCIgKm5nSWY9XCIhc2hvdWxkQmVIaWRkZW4oKVwiPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDx1bCBjbGFzcz1cInBhZ2luYXRpb25cIj5cclxuICAgICAgICA8bGkgKm5nSWY9XCJkaXJlY3Rpb25MaW5rc1wiIGNsYXNzPVwicGFnaW5hdGlvbi1wcmV2aW91c1wiPlxyXG4gICAgICAgICAgPGEgKGNsaWNrKT1cImdvVG9QcmV2aW91c1BhZ2UoKVwiIFtjbGFzcy5kaXNhYmxlZF09XCJpc09uRmlyc3RQYWdlKClcIj57eyBwcmV2aW91c0xhYmVsIH19PC9hPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBwYWdlIG9mIHBhZ2VzXCIgW2NsYXNzLmN1cnJlbnRdPVwiZ2V0Q3VycmVudFBhZ2UoKSA9PT0gcGFnZS52YWx1ZVwiIChjbGljayk9XCJzZXRDdXJyZW50UGFnZShwYWdlLnZhbHVlKVwiPlxyXG4gICAgICAgICAgPHNwYW4+e3twYWdlLmxhYmVsfX08L3NwYW4+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGkgKm5nSWY9XCJkaXJlY3Rpb25MaW5rc1wiIGNsYXNzPVwicGFnaW5hdGlvbi1uZXh0XCI+XHJcbiAgICAgICAgICA8YSAoY2xpY2spPVwiZ29Ub05leHRQYWdlKClcIiBbY2xhc3MuZGlzYWJsZWRdPVwiaXNPbkxhc3RQYWdlKClcIj57eyBuZXh0TGFiZWwgfX08L2E+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgPC91bD5cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ3RlbXBsYXRlJylcclxuICBwdWJsaWMgcmVhZG9ubHkgdGVtcGxhdGU6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGlkOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG1heFNpemU6IG51bWJlciA9IDc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGRpcmVjdGlvbkxpbmtzOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcHJldmlvdXNMYWJlbDogc3RyaW5nID0gJ1ZvcmlnZSBwYWdpbmEnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBuZXh0TGFiZWw6IHN0cmluZyA9ICdWb2xnZW5kZSBwYWdpbmEnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBhdXRvSGlkZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyBFbWl0cyB0aGUgbmV3IHBhZ2UgbnVtYmVyLlxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBwYWdlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvLXBhZ2luYXRpb24nKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3M6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBwdWJsaWMgcGFnZXM6IElQYWdlW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBjaGFuZ2VTdWI6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfcGFnaW5hdGlvblNlcnZpY2U6IFBhZ2luYXRpb25TZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmNoYW5nZVN1YiA9IHRoaXMuX3BhZ2luYXRpb25TZXJ2aWNlLmNoYW5nZS5zdWJzY3JpYmUoKGlkOiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKHRoaXMuaWQgPT09IGlkKSB7XHJcbiAgICAgICAgdGhpcy5fdXBkYXRlUGFnZUxpbmtzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaWQpIHtcclxuICAgICAgdGhpcy5pZCA9IHRoaXMuX3BhZ2luYXRpb25TZXJ2aWNlLkRFRkFVTFRfSUQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLl91cGRhdGVQYWdlTGlua3MoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fdXBkYXRlUGFnZUxpbmtzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2hhbmdlU3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ29Ub0ZpcnN0UGFnZSgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc09uRmlyc3RQYWdlKCkpIHtcclxuICAgICAgdGhpcy5zZXRDdXJyZW50UGFnZSgxKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnb1RvUHJldmlvdXNQYWdlKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzT25GaXJzdFBhZ2UoKSkge1xyXG4gICAgICB0aGlzLnNldEN1cnJlbnRQYWdlKHRoaXMuZ2V0Q3VycmVudFBhZ2UoKSAtIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdvVG9OZXh0UGFnZSgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc09uTGFzdFBhZ2UoKSkge1xyXG4gICAgICB0aGlzLnNldEN1cnJlbnRQYWdlKHRoaXMuZ2V0Q3VycmVudFBhZ2UoKSArIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldEN1cnJlbnRQYWdlKHBhZ2U6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQocGFnZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNPbkZpcnN0UGFnZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmdldEN1cnJlbnRQYWdlKCkgPT09IDE7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNPbkxhc3RQYWdlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0TGFzdFBhZ2UoKSA9PT0gdGhpcy5nZXRDdXJyZW50UGFnZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3VsZEJlSGlkZGVuKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLmF1dG9IaWRlKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBpbnN0YW5jZTogSVBhZ2luYXRpb25JbnN0YW5jZSA9IHRoaXMuX3BhZ2luYXRpb25TZXJ2aWNlLmdldEluc3RhbmNlKCk7XHJcbiAgICAgIHJldHVybiAoaW5zdGFuY2UudG90YWxJdGVtcyA8PSBpbnN0YW5jZS5pdGVtc1BlclBhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyB0aGUgcGFnZSBsaW5rcyBhbmQgY2hlY2tzIHRoYXQgdGhlIGN1cnJlbnQgcGFnZSBpcyB2YWxpZC4gU2hvdWxkIHJ1biB3aGVuZXZlciB0aGVcclxuICAgKiBQYWdpbmF0aW9uU2VydmljZS5jaGFuZ2Ugc3RyZWFtIGVtaXRzIGEgdmFsdWUgbWF0Y2hpbmcgdGhlIGN1cnJlbnQgSUQsIG9yIHdoZW4gYW55IG9mIHRoZVxyXG4gICAqIGlucHV0IHZhbHVlcyBjaGFuZ2VzLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgX3VwZGF0ZVBhZ2VMaW5rcygpOiB2b2lkIHtcclxuICAgIGxldCBwYWdpbmF0aW9uSW5zdGFuY2U6IElQYWdpbmF0aW9uSW5zdGFuY2UgPSB0aGlzLl9wYWdpbmF0aW9uU2VydmljZS5nZXRJbnN0YW5jZSh0aGlzLmlkKTtcclxuICAgIHRoaXMucGFnZXMgPSB0aGlzLmNyZWF0ZVBhZ2VBcnJheShwYWdpbmF0aW9uSW5zdGFuY2UuY3VycmVudFBhZ2UsIHBhZ2luYXRpb25JbnN0YW5jZS5pdGVtc1BlclBhZ2UsIHBhZ2luYXRpb25JbnN0YW5jZS50b3RhbEl0ZW1zLCB0aGlzLm1heFNpemUpO1xyXG5cclxuICAgIGNvbnN0IGNvcnJlY3RlZEN1cnJlbnRQYWdlOiBudW1iZXIgPSB0aGlzLm91dE9mQm91bmRDb3JyZWN0aW9uKHBhZ2luYXRpb25JbnN0YW5jZSk7XHJcbiAgICBpZiAoY29ycmVjdGVkQ3VycmVudFBhZ2UgIT09IHBhZ2luYXRpb25JbnN0YW5jZS5jdXJyZW50UGFnZSkge1xyXG4gICAgICB0aGlzLnNldEN1cnJlbnRQYWdlKGNvcnJlY3RlZEN1cnJlbnRQYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRDdXJyZW50UGFnZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BhZ2luYXRpb25TZXJ2aWNlLmdldEN1cnJlbnRQYWdlKHRoaXMuaWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRMYXN0UGFnZSgpOiBudW1iZXIge1xyXG4gICAgbGV0IGluc3RhbmNlOiBJUGFnaW5hdGlvbkluc3RhbmNlID0gdGhpcy5fcGFnaW5hdGlvblNlcnZpY2UuZ2V0SW5zdGFuY2UodGhpcy5pZCk7XHJcbiAgICByZXR1cm4gTWF0aC5jZWlsKGluc3RhbmNlLnRvdGFsSXRlbXMgLyBpbnN0YW5jZS5pdGVtc1BlclBhZ2UpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2tzIHRoYXQgdGhlIGluc3RhbmNlLmN1cnJlbnRQYWdlIHByb3BlcnR5IGlzIHdpdGhpbiBib3VuZHMgZm9yIHRoZSBjdXJyZW50IHBhZ2UgcmFuZ2UuXHJcbiAgICogSWYgbm90LCByZXR1cm4gYSBjb3JyZWN0IHZhbHVlIGZvciBjdXJyZW50UGFnZSwgb3IgdGhlIGN1cnJlbnQgdmFsdWUgaWYgT0suXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvdXRPZkJvdW5kQ29ycmVjdGlvbihpbnN0YW5jZTogSVBhZ2luYXRpb25JbnN0YW5jZSk6IG51bWJlciB7XHJcbiAgICBjb25zdCB0b3RhbFBhZ2VzOiBudW1iZXIgPSBNYXRoLmNlaWwoaW5zdGFuY2UudG90YWxJdGVtcyAvIGluc3RhbmNlLml0ZW1zUGVyUGFnZSk7XHJcbiAgICBpZiAodG90YWxQYWdlcyA8IGluc3RhbmNlLmN1cnJlbnRQYWdlICYmIDAgPCB0b3RhbFBhZ2VzKSB7XHJcbiAgICAgIHJldHVybiB0b3RhbFBhZ2VzO1xyXG4gICAgfSBlbHNlIGlmIChpbnN0YW5jZS5jdXJyZW50UGFnZSA8IDEpIHtcclxuICAgICAgcmV0dXJuIDE7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGluc3RhbmNlLmN1cnJlbnRQYWdlO1xyXG4gIH1cclxuXHJcbiAgLy8gUmV0dXJucyBhbiBhcnJheSBvZiBJUGFnZSBvYmplY3RzIHRvIHVzZSBpbiB0aGUgcGFnaW5hdGlvbiBjb250cm9scy5cclxuICBwcml2YXRlIGNyZWF0ZVBhZ2VBcnJheShjdXJyZW50UGFnZTogbnVtYmVyLCBpdGVtc1BlclBhZ2U6IG51bWJlciwgdG90YWxJdGVtczogbnVtYmVyLCBwYWdpbmF0aW9uUmFuZ2U6IG51bWJlcik6IElQYWdlW10ge1xyXG4gICAgLy8gcGFnaW5hdGlvblJhbmdlIGNvdWxkIGJlIGEgc3RyaW5nIGlmIHBhc3NlZCBmcm9tIGF0dHJpYnV0ZSwgc28gY2FzdCB0byBudW1iZXIuXHJcbiAgICBwYWdpbmF0aW9uUmFuZ2UgPSArcGFnaW5hdGlvblJhbmdlO1xyXG4gICAgbGV0IHBhZ2VzOiBJUGFnZVtdID0gW107XHJcbiAgICBjb25zdCB0b3RhbFBhZ2VzOiBudW1iZXIgPSBNYXRoLmNlaWwodG90YWxJdGVtcyAvIGl0ZW1zUGVyUGFnZSk7XHJcbiAgICBjb25zdCBoYWxmV2F5OiBudW1iZXIgPSBNYXRoLmNlaWwocGFnaW5hdGlvblJhbmdlIC8gMik7XHJcbiAgICBjb25zdCBpc1N0YXJ0OiBib29sZWFuID0gY3VycmVudFBhZ2UgPD0gaGFsZldheTtcclxuICAgIGNvbnN0IGlzRW5kOiBib29sZWFuID0gdG90YWxQYWdlcyAtIGhhbGZXYXkgPCBjdXJyZW50UGFnZTtcclxuICAgIGNvbnN0IGlzTWlkZGxlOiBib29sZWFuID0gIWlzU3RhcnQgJiYgIWlzRW5kO1xyXG4gICAgbGV0IGVsbGlwc2VzTmVlZGVkOiBib29sZWFuID0gcGFnaW5hdGlvblJhbmdlIDwgdG90YWxQYWdlcztcclxuICAgIGxldCBpOiBudW1iZXIgPSAxO1xyXG4gICAgd2hpbGUgKGkgPD0gdG90YWxQYWdlcyAmJiBpIDw9IHBhZ2luYXRpb25SYW5nZSkge1xyXG4gICAgICBsZXQgbGFiZWw6IHN0cmluZztcclxuICAgICAgbGV0IHBhZ2VOdW1iZXI6IG51bWJlciA9IHRoaXMuY2FsY3VsYXRlUGFnZU51bWJlcihpLCBjdXJyZW50UGFnZSwgcGFnaW5hdGlvblJhbmdlLCB0b3RhbFBhZ2VzKTtcclxuICAgICAgbGV0IG9wZW5pbmdFbGxpcHNlc05lZWRlZDogYm9vbGVhbiA9IChpID09PSAyICYmIChpc01pZGRsZSB8fCBpc0VuZCkpO1xyXG4gICAgICBsZXQgY2xvc2luZ0VsbGlwc2VzTmVlZGVkOiBib29sZWFuID0gKGkgPT09IHBhZ2luYXRpb25SYW5nZSAtIDEgJiYgKGlzTWlkZGxlIHx8IGlzU3RhcnQpKTtcclxuICAgICAgaWYgKGVsbGlwc2VzTmVlZGVkICYmIChvcGVuaW5nRWxsaXBzZXNOZWVkZWQgfHwgY2xvc2luZ0VsbGlwc2VzTmVlZGVkKSkge1xyXG4gICAgICAgIGxhYmVsID0gJy4uLic7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGFiZWwgPSAnJyArIHBhZ2VOdW1iZXI7XHJcbiAgICAgIH1cclxuICAgICAgcGFnZXMucHVzaCh7XHJcbiAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgIHZhbHVlOiBwYWdlTnVtYmVyXHJcbiAgICAgIH0pO1xyXG4gICAgICBpKys7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGFnZXM7XHJcbiAgfVxyXG5cclxuICAvLyBHaXZlbiB0aGUgcG9zaXRpb24gaW4gdGhlIHNlcXVlbmNlIG9mIHBhZ2luYXRpb24gbGlua3MgW2ldLCBmaWd1cmUgb3V0IHdoYXQgcGFnZSBudW1iZXIgY29ycmVzcG9uZHMgdG8gdGhhdCBwb3NpdGlvbi5cclxuICBwcml2YXRlIGNhbGN1bGF0ZVBhZ2VOdW1iZXIoaTogbnVtYmVyLCBjdXJyZW50UGFnZTogbnVtYmVyLCBwYWdpbmF0aW9uUmFuZ2U6IG51bWJlciwgdG90YWxQYWdlczogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGxldCBoYWxmV2F5OiBudW1iZXIgPSBNYXRoLmNlaWwocGFnaW5hdGlvblJhbmdlIC8gMik7XHJcbiAgICBpZiAoaSA9PT0gcGFnaW5hdGlvblJhbmdlKSB7XHJcbiAgICAgIHJldHVybiB0b3RhbFBhZ2VzO1xyXG4gICAgfSBlbHNlIGlmIChpID09PSAxKSB7XHJcbiAgICAgIHJldHVybiBpO1xyXG4gICAgfSBlbHNlIGlmIChwYWdpbmF0aW9uUmFuZ2UgPCB0b3RhbFBhZ2VzKSB7XHJcbiAgICAgIGlmICh0b3RhbFBhZ2VzIC0gaGFsZldheSA8IGN1cnJlbnRQYWdlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRvdGFsUGFnZXMgLSBwYWdpbmF0aW9uUmFuZ2UgKyBpO1xyXG4gICAgICB9IGVsc2UgaWYgKGhhbGZXYXkgPCBjdXJyZW50UGFnZSkge1xyXG4gICAgICAgIHJldHVybiBjdXJyZW50UGFnZSAtIGhhbGZXYXkgKyBpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gaTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,26 @@
1
+ import { NgModule } from "@angular/core";
2
+ import { CommonModule } from "@angular/common";
3
+ import { PaginationComponent } from "./pagination.component";
4
+ import { PaginatePipe } from "./paginate.pipe";
5
+ import { PaginationService } from "./pagination.service";
6
+ export class PaginationModule {
7
+ }
8
+ PaginationModule.decorators = [
9
+ { type: NgModule, args: [{
10
+ imports: [
11
+ CommonModule
12
+ ],
13
+ providers: [
14
+ PaginationService
15
+ ],
16
+ declarations: [
17
+ PaginationComponent,
18
+ PaginatePipe
19
+ ],
20
+ exports: [
21
+ PaginationComponent,
22
+ PaginatePipe
23
+ ]
24
+ },] }
25
+ ];
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU3QyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFrQnZELE1BQU0sT0FBTyxnQkFBZ0I7OztZQWhCNUIsUUFBUSxTQUFDO2dCQUNOLE9BQU8sRUFBRTtvQkFDTCxZQUFZO2lCQUNmO2dCQUNELFNBQVMsRUFBRTtvQkFDUCxpQkFBaUI7aUJBQ3BCO2dCQUNELFlBQVksRUFBRTtvQkFDVixtQkFBbUI7b0JBQ25CLFlBQVk7aUJBQ2Y7Z0JBQ0QsT0FBTyxFQUFFO29CQUNMLG1CQUFtQjtvQkFDbkIsWUFBWTtpQkFDZjthQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuXHJcbmltcG9ydCB7UGFnaW5hdGlvbkNvbXBvbmVudH0gZnJvbSBcIi4vcGFnaW5hdGlvbi5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtQYWdpbmF0ZVBpcGV9IGZyb20gXCIuL3BhZ2luYXRlLnBpcGVcIjtcclxuaW1wb3J0IHtQYWdpbmF0aW9uU2VydmljZX0gZnJvbSBcIi4vcGFnaW5hdGlvbi5zZXJ2aWNlXCI7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIENvbW1vbk1vZHVsZVxyXG4gICAgXSxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIFBhZ2luYXRpb25TZXJ2aWNlXHJcbiAgICBdLFxyXG4gICAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICAgICAgUGFnaW5hdGlvbkNvbXBvbmVudCxcclxuICAgICAgICBQYWdpbmF0ZVBpcGVcclxuICAgIF0sXHJcbiAgICBleHBvcnRzOiBbXHJcbiAgICAgICAgUGFnaW5hdGlvbkNvbXBvbmVudCxcclxuICAgICAgICBQYWdpbmF0ZVBpcGVcclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFBhZ2luYXRpb25Nb2R1bGUge1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,88 @@
1
+ import { Injectable } from "@angular/core";
2
+ import { Subject } from "rxjs";
3
+ import { ObjectUtils } from "../../core/utils/object-utils";
4
+ export class PaginationService {
5
+ constructor() {
6
+ this.change = new Subject();
7
+ this.instances = {};
8
+ }
9
+ get DEFAULT_ID() {
10
+ return PaginationService.DEFAULT_ID;
11
+ }
12
+ register(instance) {
13
+ if (!instance.id) {
14
+ instance.id = PaginationService.DEFAULT_ID;
15
+ }
16
+ if (!this.instances[instance.id]) {
17
+ this.instances[instance.id] = instance;
18
+ this.change.next(instance.id);
19
+ }
20
+ else {
21
+ let changed = this.updateInstance(instance);
22
+ if (changed) {
23
+ this.change.next(instance.id);
24
+ }
25
+ }
26
+ }
27
+ // Returns the current page number.
28
+ getCurrentPage(id) {
29
+ if (this.instances[id]) {
30
+ return this.instances[id].currentPage;
31
+ }
32
+ }
33
+ // Sets the current page number.
34
+ setCurrentPage(id, page) {
35
+ if (this.instances[id]) {
36
+ let instance = this.instances[id];
37
+ let maxPage = Math.ceil(instance.totalItems / instance.itemsPerPage);
38
+ if (page <= maxPage && 1 <= page) {
39
+ this.instances[id].currentPage = page;
40
+ this.change.next(id);
41
+ }
42
+ }
43
+ }
44
+ // Sets the value of instance.totalItems
45
+ setTotalItems(id, totalItems) {
46
+ if (this.instances[id] && 0 <= totalItems) {
47
+ this.instances[id].totalItems = totalItems;
48
+ this.change.next(id);
49
+ }
50
+ }
51
+ // Sets the value of instance.itemsPerPage.
52
+ setItemsPerPage(id, itemsPerPage) {
53
+ if (this.instances[id]) {
54
+ this.instances[id].itemsPerPage = itemsPerPage;
55
+ this.change.next(id);
56
+ }
57
+ }
58
+ /**
59
+ * Returns a clone of the pagination instance object matching the id. If no
60
+ * id specified, returns the instance corresponding to the default id.
61
+ */
62
+ getInstance(id = PaginationService.DEFAULT_ID) {
63
+ if (this.instances[id]) {
64
+ return ObjectUtils.GetShallowClone(this.instances[id]);
65
+ }
66
+ return {};
67
+ }
68
+ /**
69
+ * Check each property of the instance and update any that have changed. Return
70
+ * true if any changes were made, else return false.
71
+ */
72
+ updateInstance(instance) {
73
+ let changed = false;
74
+ for (let prop in this.instances[instance.id]) {
75
+ if (instance[prop] !== this.instances[instance.id][prop]) {
76
+ this.instances[instance.id][prop] = instance[prop];
77
+ changed = true;
78
+ }
79
+ }
80
+ return changed;
81
+ }
82
+ }
83
+ PaginationService.DEFAULT_ID = "DEFAULT_PAGINATION_ID";
84
+ PaginationService.decorators = [
85
+ { type: Injectable }
86
+ ];
87
+ PaginationService.ctorParameters = () => [];
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUc3QixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFHMUQsTUFBTSxPQUFPLGlCQUFpQjtJQVcxQjtRQVJPLFdBQU0sR0FBb0IsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQU10QyxjQUFTLEdBQTBDLEVBQUUsQ0FBQztJQUd2RSxDQUFDO0lBUEQsSUFBVyxVQUFVO1FBQ2pCLE9BQU8saUJBQWlCLENBQUMsVUFBVSxDQUFDO0lBQ3hDLENBQUM7SUFPTSxRQUFRLENBQUMsUUFBNkI7UUFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUU7WUFDZCxRQUFRLENBQUMsRUFBRSxHQUFHLGlCQUFpQixDQUFDLFVBQVUsQ0FBQztTQUM5QztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUM7WUFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2pDO2FBQU07WUFDSCxJQUFJLE9BQU8sR0FBWSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JELElBQUksT0FBTyxFQUFFO2dCQUNULElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNqQztTQUNKO0lBQ0wsQ0FBQztJQUVELG1DQUFtQztJQUM1QixjQUFjLENBQUMsRUFBVTtRQUM1QixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDcEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQztTQUN6QztJQUNMLENBQUM7SUFFRCxnQ0FBZ0M7SUFDekIsY0FBYyxDQUFDLEVBQVUsRUFBRSxJQUFZO1FBQzFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUNwQixJQUFJLFFBQVEsR0FBd0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN2RCxJQUFJLE9BQU8sR0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzdFLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFO2dCQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3hCO1NBQ0o7SUFDTCxDQUFDO0lBRUQsd0NBQXdDO0lBQ2pDLGFBQWEsQ0FBQyxFQUFVLEVBQUUsVUFBa0I7UUFDL0MsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxVQUFVLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1lBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3hCO0lBQ0wsQ0FBQztJQUVELDJDQUEyQztJQUNwQyxlQUFlLENBQUMsRUFBVSxFQUFFLFlBQW9CO1FBQ25ELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7WUFDL0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDeEI7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksV0FBVyxDQUFDLEtBQWEsaUJBQWlCLENBQUMsVUFBVTtRQUN4RCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDcEIsT0FBTyxXQUFXLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUMxRDtRQUNELE9BQTRCLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssY0FBYyxDQUFDLFFBQTZCO1FBQ2hELElBQUksT0FBTyxHQUFZLEtBQUssQ0FBQztRQUM3QixLQUFLLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQzFDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN0RCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ25ELE9BQU8sR0FBRyxJQUFJLENBQUM7YUFDbEI7U0FDSjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7O0FBeEZ1Qiw0QkFBVSxHQUFXLHVCQUF1QixDQUFDOztZQUZ4RSxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1N1YmplY3R9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5pbXBvcnQge0lQYWdpbmF0aW9uSW5zdGFuY2V9IGZyb20gXCIuL3BhZ2luYXRpb24taW5zdGFuY2VcIjtcclxuaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSBcIi4uLy4uL2NvcmUvdXRpbHMvb2JqZWN0LXV0aWxzXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBQYWdpbmF0aW9uU2VydmljZSB7XHJcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0lEOiBzdHJpbmcgPSBcIkRFRkFVTFRfUEFHSU5BVElPTl9JRFwiO1xyXG5cclxuICAgIHB1YmxpYyBjaGFuZ2U6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuXHJcbiAgICBwdWJsaWMgZ2V0IERFRkFVTFRfSUQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gUGFnaW5hdGlvblNlcnZpY2UuREVGQVVMVF9JRDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluc3RhbmNlczogeyBbaWQ6IHN0cmluZ106IElQYWdpbmF0aW9uSW5zdGFuY2UgfSA9IHt9O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZWdpc3RlcihpbnN0YW5jZTogSVBhZ2luYXRpb25JbnN0YW5jZSk6IHZvaWQge1xyXG4gICAgICAgIGlmICghaW5zdGFuY2UuaWQpIHtcclxuICAgICAgICAgICAgaW5zdGFuY2UuaWQgPSBQYWdpbmF0aW9uU2VydmljZS5ERUZBVUxUX0lEO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmluc3RhbmNlc1tpbnN0YW5jZS5pZF0pIHtcclxuICAgICAgICAgICAgdGhpcy5pbnN0YW5jZXNbaW5zdGFuY2UuaWRdID0gaW5zdGFuY2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlLm5leHQoaW5zdGFuY2UuaWQpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBjaGFuZ2VkOiBib29sZWFuID0gdGhpcy51cGRhdGVJbnN0YW5jZShpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgIGlmIChjaGFuZ2VkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZS5uZXh0KGluc3RhbmNlLmlkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IHBhZ2UgbnVtYmVyLlxyXG4gICAgcHVibGljIGdldEN1cnJlbnRQYWdlKGlkOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgICAgIGlmICh0aGlzLmluc3RhbmNlc1tpZF0pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5zdGFuY2VzW2lkXS5jdXJyZW50UGFnZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU2V0cyB0aGUgY3VycmVudCBwYWdlIG51bWJlci5cclxuICAgIHB1YmxpYyBzZXRDdXJyZW50UGFnZShpZDogc3RyaW5nLCBwYWdlOiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5pbnN0YW5jZXNbaWRdKSB7XHJcbiAgICAgICAgICAgIGxldCBpbnN0YW5jZTogSVBhZ2luYXRpb25JbnN0YW5jZSA9IHRoaXMuaW5zdGFuY2VzW2lkXTtcclxuICAgICAgICAgICAgbGV0IG1heFBhZ2U6IG51bWJlciA9IE1hdGguY2VpbChpbnN0YW5jZS50b3RhbEl0ZW1zIC8gaW5zdGFuY2UuaXRlbXNQZXJQYWdlKTtcclxuICAgICAgICAgICAgaWYgKHBhZ2UgPD0gbWF4UGFnZSAmJiAxIDw9IHBhZ2UpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5zdGFuY2VzW2lkXS5jdXJyZW50UGFnZSA9IHBhZ2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZS5uZXh0KGlkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBTZXRzIHRoZSB2YWx1ZSBvZiBpbnN0YW5jZS50b3RhbEl0ZW1zXHJcbiAgICBwdWJsaWMgc2V0VG90YWxJdGVtcyhpZDogc3RyaW5nLCB0b3RhbEl0ZW1zOiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5pbnN0YW5jZXNbaWRdICYmIDAgPD0gdG90YWxJdGVtcykge1xyXG4gICAgICAgICAgICB0aGlzLmluc3RhbmNlc1tpZF0udG90YWxJdGVtcyA9IHRvdGFsSXRlbXM7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlLm5leHQoaWQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBTZXRzIHRoZSB2YWx1ZSBvZiBpbnN0YW5jZS5pdGVtc1BlclBhZ2UuXHJcbiAgICBwdWJsaWMgc2V0SXRlbXNQZXJQYWdlKGlkOiBzdHJpbmcsIGl0ZW1zUGVyUGFnZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaW5zdGFuY2VzW2lkXSkge1xyXG4gICAgICAgICAgICB0aGlzLmluc3RhbmNlc1tpZF0uaXRlbXNQZXJQYWdlID0gaXRlbXNQZXJQYWdlO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZS5uZXh0KGlkKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIGEgY2xvbmUgb2YgdGhlIHBhZ2luYXRpb24gaW5zdGFuY2Ugb2JqZWN0IG1hdGNoaW5nIHRoZSBpZC4gSWYgbm9cclxuICAgICAqIGlkIHNwZWNpZmllZCwgcmV0dXJucyB0aGUgaW5zdGFuY2UgY29ycmVzcG9uZGluZyB0byB0aGUgZGVmYXVsdCBpZC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldEluc3RhbmNlKGlkOiBzdHJpbmcgPSBQYWdpbmF0aW9uU2VydmljZS5ERUZBVUxUX0lEKTogSVBhZ2luYXRpb25JbnN0YW5jZSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaW5zdGFuY2VzW2lkXSkge1xyXG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuR2V0U2hhbGxvd0Nsb25lKHRoaXMuaW5zdGFuY2VzW2lkXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiA8SVBhZ2luYXRpb25JbnN0YW5jZT57fTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrIGVhY2ggcHJvcGVydHkgb2YgdGhlIGluc3RhbmNlIGFuZCB1cGRhdGUgYW55IHRoYXQgaGF2ZSBjaGFuZ2VkLiBSZXR1cm5cclxuICAgICAqIHRydWUgaWYgYW55IGNoYW5nZXMgd2VyZSBtYWRlLCBlbHNlIHJldHVybiBmYWxzZS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSB1cGRhdGVJbnN0YW5jZShpbnN0YW5jZTogSVBhZ2luYXRpb25JbnN0YW5jZSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGxldCBjaGFuZ2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAgICAgZm9yIChsZXQgcHJvcCBpbiB0aGlzLmluc3RhbmNlc1tpbnN0YW5jZS5pZF0pIHtcclxuICAgICAgICAgICAgaWYgKGluc3RhbmNlW3Byb3BdICE9PSB0aGlzLmluc3RhbmNlc1tpbnN0YW5jZS5pZF1bcHJvcF0pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5zdGFuY2VzW2luc3RhbmNlLmlkXVtwcm9wXSA9IGluc3RhbmNlW3Byb3BdO1xyXG4gICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGNoYW5nZWQ7XHJcbiAgICB9XHJcbn0iXX0=