@indice/ng-components 0.2.146 → 0.2.147

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 (159) hide show
  1. package/_styles.css +1 -1
  2. package/{esm2015/indice-ng-components.js → esm2020/indice-ng-components.mjs} +0 -0
  3. package/{esm2015/lib/controls/avatar-initials/avatar-initials.component.js → esm2020/lib/controls/avatar-initials/avatar-initials.component.mjs} +5 -8
  4. package/esm2020/lib/controls/collapsible-panel/collapsible-panel.component.mjs +20 -0
  5. package/esm2020/lib/controls/combobox/combobox.component.mjs +96 -0
  6. package/esm2020/lib/controls/date-picker/date-picker.component.mjs +260 -0
  7. package/esm2020/lib/controls/drop-down-menu/drop-down-menu.component.mjs +68 -0
  8. package/esm2020/lib/controls/kpi-tile/kpi-tile.component.mjs +36 -0
  9. package/esm2020/lib/controls/language-selection/language-selection.component.mjs +31 -0
  10. package/{esm2015/lib/controls/list-view/list-column.component.js → esm2020/lib/controls/list-view/list-column.component.mjs} +4 -4
  11. package/{esm2015/lib/controls/list-view/list-details-section.component.js → esm2020/lib/controls/list-view/list-details-section.component.mjs} +4 -4
  12. package/{esm2015/lib/controls/list-view/list-tile.component.js → esm2020/lib/controls/list-view/list-tile.component.mjs} +4 -4
  13. package/esm2020/lib/controls/list-view/list-view-empty-state.component.mjs +29 -0
  14. package/esm2020/lib/controls/list-view/list-view.component.mjs +183 -0
  15. package/esm2020/lib/controls/nav-links-list/nav-links-list.component.mjs +42 -0
  16. package/esm2020/lib/controls/notifications-indicator/notifications-indicator.component.mjs +73 -0
  17. package/esm2020/lib/controls/pager/pager.component.mjs +130 -0
  18. package/esm2020/lib/controls/side-pane/side-pane.component.mjs +72 -0
  19. package/esm2020/lib/controls/skeleton-loader/skeleton-loader.component.mjs +25 -0
  20. package/esm2020/lib/controls/tabs/lib-tab-group.component.mjs +59 -0
  21. package/esm2020/lib/controls/tabs/lib-tab.component.mjs +57 -0
  22. package/esm2020/lib/controls/toaster/toaster-container.component.mjs +28 -0
  23. package/esm2020/lib/controls/toaster/toaster.component.mjs +31 -0
  24. package/esm2020/lib/controls/toggle/toggle.component.mjs +64 -0
  25. package/esm2020/lib/controls/user-profile-menu/user-profile-menu.component.mjs +71 -0
  26. package/{esm2015/lib/directives/click-outside.directive.js → esm2020/lib/directives/click-outside.directive.mjs} +4 -4
  27. package/{esm2015/lib/directives/dynamic-component-host.directive.js → esm2020/lib/directives/dynamic-component-host.directive.mjs} +4 -4
  28. package/esm2020/lib/helpers/base-list.component.mjs +181 -0
  29. package/esm2020/lib/icons.mjs +34 -0
  30. package/esm2020/lib/layouts/shell/shell-footer/shell-footer.component.mjs +19 -0
  31. package/esm2020/lib/layouts/shell/shell-header/shell-header.component.mjs +131 -0
  32. package/esm2020/lib/layouts/shell/shell-layout/shell-layout.component.mjs +103 -0
  33. package/esm2020/lib/layouts/shell/shell-sidebar/shell-sidebar.component.mjs +47 -0
  34. package/esm2020/lib/layouts/views/form-layout/form-layout.component.mjs +80 -0
  35. package/esm2020/lib/layouts/views/model-view-layout/model-view-layout.component.mjs +49 -0
  36. package/esm2020/lib/layouts/views/side-view-layout/side-view-layout.component.mjs +98 -0
  37. package/esm2020/lib/layouts/views/view-layout/view-layout.component.mjs +104 -0
  38. package/esm2020/lib/ng-components.module.mjs +245 -0
  39. package/esm2020/lib/pages/auth/auth-callback/auth-callback.component.mjs +30 -0
  40. package/{esm2015/lib/pages/auth/auth-renew/auth-renew.component.js → esm2020/lib/pages/auth/auth-renew/auth-renew.component.mjs} +4 -4
  41. package/esm2020/lib/pages/auth/logged-out/logged-out.component.mjs +28 -0
  42. package/esm2020/lib/pages/http-status/error/error.component.mjs +17 -0
  43. package/esm2020/lib/pages/http-status/page-not-found/page-not-found.component.mjs +15 -0
  44. package/esm2020/lib/pages/http-status/unauthorized/unauthorized.component.mjs +14 -0
  45. package/{esm2015/lib/pipes/address.pipe.js → esm2020/lib/pipes/address.pipe.mjs} +4 -4
  46. package/{esm2015/lib/pipes/duration-format.pipe.js → esm2020/lib/pipes/duration-format.pipe.mjs} +4 -4
  47. package/{esm2015/lib/services/component-loader/component-loader-options.class.js → esm2020/lib/services/component-loader/component-loader-options.class.mjs} +0 -0
  48. package/esm2020/lib/services/component-loader/component-loader.class.mjs +188 -0
  49. package/{esm2015/lib/services/component-loader/component-loader.factory.js → esm2020/lib/services/component-loader/component-loader.factory.mjs} +4 -4
  50. package/{esm2015/lib/services/component-loader/content-ref.class.js → esm2020/lib/services/component-loader/content-ref.class.mjs} +0 -0
  51. package/esm2020/lib/services/modal-service/modal-backdrop-component.mjs +44 -0
  52. package/esm2020/lib/services/modal-service/modal-container-component.mjs +126 -0
  53. package/{esm2015/lib/services/modal-service/modal-options.class.js → esm2020/lib/services/modal-service/modal-options.class.mjs} +4 -4
  54. package/esm2020/lib/services/modal-service/modal-service.mjs +219 -0
  55. package/{esm2015/lib/services/modal-service/modal-styles.class.js → esm2020/lib/services/modal-service/modal-styles.class.mjs} +0 -0
  56. package/{esm2015/lib/services/modal-service/modal.class.js → esm2020/lib/services/modal-service/modal.class.mjs} +4 -4
  57. package/{esm2015/lib/services/toaster.service.js → esm2020/lib/services/toaster.service.mjs} +4 -4
  58. package/esm2020/lib/tokens.mjs +7 -0
  59. package/{esm2015/lib/types.js → esm2020/lib/types.mjs} +1 -1
  60. package/esm2020/public-api.mjs +56 -0
  61. package/fesm2015/indice-ng-components.mjs +3629 -0
  62. package/fesm2015/indice-ng-components.mjs.map +1 -0
  63. package/fesm2020/indice-ng-components.mjs +3572 -0
  64. package/fesm2020/indice-ng-components.mjs.map +1 -0
  65. package/{indice-ng-components.d.ts → index.d.ts} +0 -0
  66. package/lib/controls/avatar-initials/avatar-initials.component.d.ts +1 -1
  67. package/lib/controls/collapsible-panel/collapsible-panel.component.d.ts +1 -1
  68. package/lib/controls/combobox/combobox.component.d.ts +29 -0
  69. package/lib/controls/date-picker/date-picker.component.d.ts +1 -1
  70. package/lib/controls/drop-down-menu/drop-down-menu.component.d.ts +1 -1
  71. package/lib/controls/kpi-tile/kpi-tile.component.d.ts +1 -1
  72. package/lib/controls/language-selection/language-selection.component.d.ts +1 -1
  73. package/lib/controls/list-view/list-column.component.d.ts +1 -1
  74. package/lib/controls/list-view/list-details-section.component.d.ts +1 -1
  75. package/lib/controls/list-view/list-tile.component.d.ts +1 -1
  76. package/lib/controls/list-view/list-view-empty-state.component.d.ts +1 -1
  77. package/lib/controls/list-view/list-view.component.d.ts +1 -1
  78. package/lib/controls/nav-links-list/nav-links-list.component.d.ts +1 -1
  79. package/lib/controls/notifications-indicator/notifications-indicator.component.d.ts +1 -1
  80. package/lib/controls/pager/pager.component.d.ts +1 -1
  81. package/lib/controls/side-pane/side-pane.component.d.ts +1 -1
  82. package/lib/controls/skeleton-loader/skeleton-loader.component.d.ts +1 -1
  83. package/lib/controls/tabs/lib-tab-group.component.d.ts +1 -1
  84. package/lib/controls/tabs/lib-tab.component.d.ts +4 -5
  85. package/lib/controls/toaster/toaster-container.component.d.ts +1 -1
  86. package/lib/controls/toaster/toaster.component.d.ts +1 -1
  87. package/lib/controls/toggle/toggle.component.d.ts +1 -1
  88. package/lib/controls/user-profile-menu/user-profile-menu.component.d.ts +1 -1
  89. package/lib/directives/click-outside.directive.d.ts +1 -1
  90. package/lib/directives/dynamic-component-host.directive.d.ts +1 -1
  91. package/lib/helpers/base-list.component.d.ts +1 -1
  92. package/lib/icons.d.ts +2 -0
  93. package/lib/layouts/shell/shell-footer/shell-footer.component.d.ts +1 -1
  94. package/lib/layouts/shell/shell-header/shell-header.component.d.ts +1 -1
  95. package/lib/layouts/shell/shell-layout/shell-layout.component.d.ts +1 -1
  96. package/lib/layouts/shell/shell-sidebar/shell-sidebar.component.d.ts +1 -1
  97. package/lib/layouts/views/form-layout/form-layout.component.d.ts +1 -1
  98. package/lib/layouts/views/model-view-layout/model-view-layout.component.d.ts +1 -1
  99. package/lib/layouts/views/side-view-layout/side-view-layout.component.d.ts +1 -1
  100. package/lib/layouts/views/view-layout/view-layout.component.d.ts +1 -1
  101. package/lib/ng-components.module.d.ts +28 -27
  102. package/lib/pages/auth/auth-callback/auth-callback.component.d.ts +1 -1
  103. package/lib/pages/auth/auth-renew/auth-renew.component.d.ts +1 -1
  104. package/lib/pages/auth/logged-out/logged-out.component.d.ts +1 -1
  105. package/lib/pages/http-status/error/error.component.d.ts +1 -1
  106. package/lib/pages/http-status/page-not-found/page-not-found.component.d.ts +1 -1
  107. package/lib/pages/http-status/unauthorized/unauthorized.component.d.ts +1 -1
  108. package/lib/pipes/address.pipe.d.ts +1 -1
  109. package/lib/pipes/duration-format.pipe.d.ts +1 -1
  110. package/lib/services/modal-service/modal-backdrop-component.d.ts +1 -1
  111. package/lib/services/modal-service/modal-container-component.d.ts +1 -1
  112. package/lib/tokens.d.ts +2 -0
  113. package/lib/types.d.ts +2 -0
  114. package/package.json +25 -12
  115. package/public-api.d.ts +2 -1
  116. package/bundles/indice-ng-components.umd.js +0 -4181
  117. package/bundles/indice-ng-components.umd.js.map +0 -1
  118. package/esm2015/lib/controls/collapsible-panel/collapsible-panel.component.js +0 -23
  119. package/esm2015/lib/controls/date-picker/date-picker.component.js +0 -269
  120. package/esm2015/lib/controls/drop-down-menu/drop-down-menu.component.js +0 -72
  121. package/esm2015/lib/controls/kpi-tile/kpi-tile.component.js +0 -39
  122. package/esm2015/lib/controls/language-selection/language-selection.component.js +0 -35
  123. package/esm2015/lib/controls/list-view/list-view-empty-state.component.js +0 -32
  124. package/esm2015/lib/controls/list-view/list-view.component.js +0 -186
  125. package/esm2015/lib/controls/nav-links-list/nav-links-list.component.js +0 -45
  126. package/esm2015/lib/controls/notifications-indicator/notifications-indicator.component.js +0 -76
  127. package/esm2015/lib/controls/pager/pager.component.js +0 -133
  128. package/esm2015/lib/controls/side-pane/side-pane.component.js +0 -76
  129. package/esm2015/lib/controls/skeleton-loader/skeleton-loader.component.js +0 -29
  130. package/esm2015/lib/controls/tabs/lib-tab-group.component.js +0 -60
  131. package/esm2015/lib/controls/tabs/lib-tab.component.js +0 -57
  132. package/esm2015/lib/controls/toaster/toaster-container.component.js +0 -31
  133. package/esm2015/lib/controls/toaster/toaster.component.js +0 -34
  134. package/esm2015/lib/controls/toggle/toggle.component.js +0 -68
  135. package/esm2015/lib/controls/user-profile-menu/user-profile-menu.component.js +0 -75
  136. package/esm2015/lib/helpers/base-list.component.js +0 -182
  137. package/esm2015/lib/icons.js +0 -32
  138. package/esm2015/lib/layouts/shell/shell-footer/shell-footer.component.js +0 -22
  139. package/esm2015/lib/layouts/shell/shell-header/shell-header.component.js +0 -136
  140. package/esm2015/lib/layouts/shell/shell-layout/shell-layout.component.js +0 -108
  141. package/esm2015/lib/layouts/shell/shell-sidebar/shell-sidebar.component.js +0 -50
  142. package/esm2015/lib/layouts/views/form-layout/form-layout.component.js +0 -85
  143. package/esm2015/lib/layouts/views/model-view-layout/model-view-layout.component.js +0 -53
  144. package/esm2015/lib/layouts/views/side-view-layout/side-view-layout.component.js +0 -101
  145. package/esm2015/lib/layouts/views/view-layout/view-layout.component.js +0 -110
  146. package/esm2015/lib/ng-components.module.js +0 -242
  147. package/esm2015/lib/pages/auth/auth-callback/auth-callback.component.js +0 -34
  148. package/esm2015/lib/pages/auth/logged-out/logged-out.component.js +0 -32
  149. package/esm2015/lib/pages/http-status/error/error.component.js +0 -20
  150. package/esm2015/lib/pages/http-status/page-not-found/page-not-found.component.js +0 -18
  151. package/esm2015/lib/pages/http-status/unauthorized/unauthorized.component.js +0 -17
  152. package/esm2015/lib/services/component-loader/component-loader.class.js +0 -192
  153. package/esm2015/lib/services/modal-service/modal-backdrop-component.js +0 -44
  154. package/esm2015/lib/services/modal-service/modal-container-component.js +0 -128
  155. package/esm2015/lib/services/modal-service/modal-service.js +0 -220
  156. package/esm2015/lib/tokens.js +0 -6
  157. package/esm2015/public-api.js +0 -55
  158. package/fesm2015/indice-ng-components.js +0 -3600
  159. package/fesm2015/indice-ng-components.js.map +0 -1
@@ -1,186 +0,0 @@
1
- import { Component, ContentChild, ContentChildren, EventEmitter, Input, Output } from '@angular/core';
2
- import { ListViewType } from '../../types';
3
- import { ListTileComponent } from './list-tile.component';
4
- import { ListColumnComponent } from './list-column.component';
5
- import { ListDetailsSectionComponent } from './list-details-section.component';
6
- import { Icons } from '../../icons';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "../pager/pager.component";
9
- import * as i2 from "../skeleton-loader/skeleton-loader.component";
10
- import * as i3 from "./list-view-empty-state.component";
11
- import * as i4 from "@angular/common";
12
- export class ListViewComponent {
13
- constructor() {
14
- // BUSY STATE
15
- this.busy = false;
16
- this.expandIcon = Icons.Expand;
17
- this.collapseIcon = Icons.Collapse;
18
- // tslint:disable-next-line:no-input-rename
19
- this.showPager = true;
20
- // PAGING - pass through for pager component
21
- this.count = null;
22
- this.page = 1;
23
- // tslint:disable-next-line:no-input-rename
24
- this.pageSize = 20;
25
- // tslint:disable-next-line:no-input-rename
26
- this.pageSizeOptions = [];
27
- this.pageChanged = new EventEmitter();
28
- this.pageSizeChanged = new EventEmitter();
29
- this.detailsOpened = new EventEmitter();
30
- this.tableViewSupported = false;
31
- this.multipleFullWidth = false;
32
- this.fullWidthTHClass = 'list-view-th-full';
33
- this.fullWidthTDClass = 'list-view-td-full';
34
- this.tilesViewSupported = false;
35
- this.detailsSectionSupported = false;
36
- this.loaderItems = [];
37
- // DETAILS SECTION
38
- // Check if details section and button should be displayed according to the count of the value given
39
- // tslint:disable-next-line:no-input-rename
40
- this.detailsSectionPropertyCount = null;
41
- // SORTING - pass through for pager component
42
- // tslint:disable-next-line:no-input-rename
43
- this.sortOptions = [];
44
- this.sort = null;
45
- // tslint:disable-next-line:no-input-rename
46
- this.sortdir = '-';
47
- this.sortChanged = new EventEmitter();
48
- this.sortdirChanged = new EventEmitter();
49
- this.view = ListViewType.Table;
50
- // COLUMNS
51
- this.columns = [];
52
- this.tilesDeckClass = 'cards-deck-4';
53
- // tslint:disable-next-line:no-input-rename
54
- this.tilesCount = 4;
55
- this.tileTemplate = null;
56
- this.detailsTemplate = null;
57
- for (let i = 0; i < 5; i++) {
58
- this.loaderItems.push({});
59
- }
60
- }
61
- set cols(refs) {
62
- this.columns = refs === null || refs === void 0 ? void 0 : refs.toArray();
63
- if (this.columns && this.columns.length > 0) {
64
- this.tableViewSupported = true;
65
- }
66
- this.multipleFullWidth = this.columns.filter(c => c.fullWidth).length > 1;
67
- this.fullWidthTHClass = this.multipleFullWidth ? 'list-view-th-half' : 'list-view-th-full';
68
- this.fullWidthTDClass = this.multipleFullWidth ? 'list-view-td-half' : 'list-view-td-full';
69
- }
70
- set tiles(ref) {
71
- this.tileTemplate = ref;
72
- if (this.tileTemplate) {
73
- this.tilesViewSupported = true;
74
- }
75
- }
76
- set details(ref) {
77
- this.detailsTemplate = ref;
78
- if (this.detailsTemplate) {
79
- this.detailsSectionSupported = true;
80
- }
81
- }
82
- ngOnChanges(changes) {
83
- const tilesCountChange = changes['tiles-count'] || changes.tilesCount;
84
- if (tilesCountChange) {
85
- this.setTilesDeckClass(tilesCountChange.currentValue);
86
- }
87
- }
88
- // events
89
- emitPageChanged($event) {
90
- this.pageChanged.emit($event);
91
- }
92
- emitPageSizeChanged($event) {
93
- this.pageSizeChanged.emit($event);
94
- }
95
- emitSortChanged($event) {
96
- this.sortChanged.emit($event);
97
- }
98
- emitSortdirChanged($event) {
99
- this.sortdirChanged.emit($event);
100
- }
101
- toggleDetails(item) {
102
- item.detailsExpanded = !item.detailsExpanded;
103
- this.detailsOpened.emit({ item, open: item.detailsExpanded });
104
- }
105
- // helpers
106
- setTilesDeckClass(tiles) {
107
- if (tiles >= 1 && tiles <= 4) {
108
- this.tilesDeckClass =
109
- this.view !== ListViewType.Gallery
110
- ? `cards-deck-${tiles}`
111
- : this.items && this.items.length > 0
112
- ? `gallery-deck-${tiles}`
113
- : 'gallery-deck';
114
- }
115
- else {
116
- this.tilesDeckClass =
117
- this.view !== ListViewType.Gallery
118
- ? 'cards-deck-3'
119
- : this.items && this.items.length > 0
120
- ? 'gallery-deck-3'
121
- : 'gallery-deck';
122
- }
123
- }
124
- }
125
- ListViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ListViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
126
- ListViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ListViewComponent, selector: "lib-list-view", inputs: { busy: "busy", items: "items", showPager: ["show-pager", "showPager"], count: "count", page: "page", pageSize: ["page-size", "pageSize"], pageSizeOptions: ["page-size-options", "pageSizeOptions"], detailsSectionPropertyCount: ["details-section-property-count", "detailsSectionPropertyCount"], sortOptions: ["sort-options", "sortOptions"], sort: "sort", sortdir: ["sort-dir", "sortdir"], view: "view", tilesCount: ["tiles-count", "tilesCount"] }, outputs: { pageChanged: "pageChanged", pageSizeChanged: "pageSizeChanged", detailsOpened: "detailsOpened", sortChanged: "sortChanged", sortdirChanged: "sortdirChanged" }, queries: [{ propertyName: "tiles", first: true, predicate: ListTileComponent, descendants: true, read: ListTileComponent }, { propertyName: "details", first: true, predicate: ListDetailsSectionComponent, descendants: true, read: ListDetailsSectionComponent }, { propertyName: "cols", predicate: ListColumnComponent, read: ListColumnComponent }], usesOnChanges: true, ngImport: i0, template: "<div class=\"px-2\">\n\n <lib-pager *ngIf=\"showPager\"\n [page]=\"page\"\n [page-size]=\"pageSize\"\n [count]=\"count\"\n [sort-options]=\"sortOptions\"\n [sort]=\"sort\"\n [sort-dir]=\"sortdir\"\n [busy]=\"busy\"\n (pageChanged)=\"emitPageChanged($event)\"\n (pageSizeChanged)=\"emitPageSizeChanged($event)\"\n (sortChanged)=\"emitSortChanged($event)\"\n (sortdirChanged)=\"emitSortdirChanged($event)\">\n </lib-pager>\n</div>\n\n<ng-container [ngSwitch]=\"view\">\n\n <ng-container *ngSwitchCase=\"'tiles'\">\n <div [class]=\"tilesDeckClass\">\n\n <lib-skeleton-loader *ngIf=\"busy\" [count]=\"5\" [type]=\"'tiles'\"></lib-skeleton-loader>\n\n <ng-container *ngIf=\"items && items.length > 0\">\n <ng-container *ngFor=\"let item of items\">\n <span *ngIf=\"!tileTemplate || !tileTemplate.template\">template missing..</span>\n <ng-template [ngTemplateOutlet]=\"tileTemplate.template\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </ng-container>\n </ng-container>\n\n </div>\n </ng-container>\n\n\n <!-- *ngSwitchCase=\"'gallery'\" -->\n <ng-container *ngSwitchCase=\"'gallery'\">\n <ul role=\"list\" [class]=\"tilesDeckClass\">\n\n <lib-skeleton-loader *ngIf=\"busy\" [count]=\"5\" [type]=\"'tiles'\"></lib-skeleton-loader>\n\n <ng-container *ngIf=\"!busy && items && items.length > 0\">\n <ng-container *ngFor=\"let item of items\">\n <span *ngIf=\"!tileTemplate || !tileTemplate.template\">template missing..</span>\n <ng-template [ngTemplateOutlet]=\"tileTemplate.template\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </ng-container>\n </ng-container>\n </ul>\n </ng-container>\n\n <!-- *ngSwitchCase=\"'table'\" -->\n <ng-container *ngSwitchDefault>\n\n <div class=\"list-view-container\">\n <div class=\"list-view-container-inner\">\n <table class=\"list-view-table\">\n <thead class=\"list-view-thead\">\n <tr>\n <ng-container *ngIf=\"detailsSectionSupported\">\n <th class=\"list-view-th-details\"></th>\n </ng-container>\n <ng-container *ngFor=\"let col of columns\">\n <th scope=\"col\"\n [class]=\"col.fullWidth ? fullWidthTHClass : 'list-view-th'\">\n {{col.title}}\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody class=\"list-view-tbody\" *ngIf=\"busy\">\n <ng-container *ngFor=\"let item of loaderItems;let i=index\">\n <tr class=\"list-view-tr\">\n <ng-container *ngIf=\"detailsSectionSupported\">\n <td class=\"list-view-td-details\"\n *ngIf=\"detailsSectionPropertyCount !== null ? item[detailsSectionPropertyCount] !== 0 : true; else hiddenDetailsButton\">\n <button disabled\n type=\"button\"\n class=\"expand-collapse-button\">\n <!-- Heroicon name: solid/plus -->\n <i [class]=\"item.detailsExpanded ? collapseIcon : expandIcon\"></i>\n </button>\n </td>\n <ng-template #hiddenDetailsButton>\n <td class=\"list-view-td-details\"></td>\n </ng-template>\n </ng-container>\n <td *ngFor=\"let col of columns\"\n [class]=\"col.fullWidth ? fullWidthTDClass : 'list-view-td'\">\n <div class=\"w-full animate-pulse h-8 bg-gray-200 rounded\"></div>\n </td>\n </tr>\n <ng-container *ngIf=\"detailsSectionSupported\">\n <tr *ngIf=\"item.detailsExpanded\">\n <td [colSpan]=\"columns.length + 1\"\n class=\"list-view-td bg-gray-100\">\n <ng-template [ngTemplateOutlet]=\"detailsTemplate.template\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </td>\n </tr>\n </ng-container>\n </ng-container>\n </tbody>\n <tbody class=\"list-view-tbody\" *ngIf=\"!busy\">\n <ng-container *ngFor=\"let item of items;let i=index\">\n <tr class=\"list-view-tr\">\n <ng-container *ngIf=\"detailsSectionSupported\">\n <td class=\"list-view-td-details\"\n *ngIf=\"detailsSectionPropertyCount !== null ? item[detailsSectionPropertyCount] !== 0 : true; else hiddenDetailsButton\">\n <button (click)=\"toggleDetails(item)\"\n type=\"button\"\n class=\"expand-collapse-button\">\n <!-- Heroicon name: solid/plus -->\n <i [class]=\"item.detailsExpanded ? collapseIcon : expandIcon\"></i>\n </button>\n </td>\n <ng-template #hiddenDetailsButton>\n <td class=\"list-view-td-details\"></td>\n </ng-template>\n </ng-container>\n <td *ngFor=\"let col of columns\"\n [class]=\"col.fullWidth ? fullWidthTDClass : 'list-view-td'\">\n <ng-template [ngTemplateOutlet]=\"col.template\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </td>\n </tr>\n <ng-container *ngIf=\"detailsSectionSupported\">\n <tr *ngIf=\"item.detailsExpanded\">\n <td [colSpan]=\"columns.length + 1\"\n class=\"list-view-td bg-gray-100\">\n <ng-template [ngTemplateOutlet]=\"detailsTemplate.template\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </td>\n </tr>\n </ng-container>\n </ng-container>\n </tbody>\n </table>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!busy && items && items.length === 0\">\n <div class=\"cards-deck-1\">\n <lib-list-view-empty-state></lib-list-view-empty-state>\n </div>\n </ng-container>\n</ng-container>\n\n<ng-content></ng-content>\n", components: [{ type: i1.PagerComponent, selector: "lib-pager", inputs: ["busy", "count", "page", "page-size", "page-size-options", "sort-options", "sort", "sort-dir"], outputs: ["pageChanged", "pageSizeChanged", "sortChanged", "sortdirChanged"] }, { type: i2.SkeletonLoaderComponent, selector: "lib-skeleton-loader", inputs: ["count", "type"] }, { type: i3.ListViewEmptyStateComponent, selector: "lib-list-view-empty-state", inputs: ["title", "sub-title", "new-item-label"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }] });
127
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ListViewComponent, decorators: [{
128
- type: Component,
129
- args: [{
130
- selector: 'lib-list-view',
131
- templateUrl: './list-view.component.html'
132
- }]
133
- }], ctorParameters: function () { return []; }, propDecorators: { busy: [{
134
- type: Input
135
- }], items: [{
136
- type: Input
137
- }], showPager: [{
138
- type: Input,
139
- args: ['show-pager']
140
- }], count: [{
141
- type: Input
142
- }], page: [{
143
- type: Input
144
- }], pageSize: [{
145
- type: Input,
146
- args: ['page-size']
147
- }], pageSizeOptions: [{
148
- type: Input,
149
- args: ['page-size-options']
150
- }], pageChanged: [{
151
- type: Output
152
- }], pageSizeChanged: [{
153
- type: Output
154
- }], detailsOpened: [{
155
- type: Output
156
- }], detailsSectionPropertyCount: [{
157
- type: Input,
158
- args: ['details-section-property-count']
159
- }], sortOptions: [{
160
- type: Input,
161
- args: ['sort-options']
162
- }], sort: [{
163
- type: Input
164
- }], sortdir: [{
165
- type: Input,
166
- args: ['sort-dir']
167
- }], sortChanged: [{
168
- type: Output
169
- }], sortdirChanged: [{
170
- type: Output
171
- }], view: [{
172
- type: Input
173
- }], cols: [{
174
- type: ContentChildren,
175
- args: [ListColumnComponent, { read: ListColumnComponent }]
176
- }], tilesCount: [{
177
- type: Input,
178
- args: ['tiles-count']
179
- }], tiles: [{
180
- type: ContentChild,
181
- args: [ListTileComponent, { read: ListTileComponent }]
182
- }], details: [{
183
- type: ContentChild,
184
- args: [ListDetailsSectionComponent, { read: ListDetailsSectionComponent }]
185
- }] } });
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9saXN0LXZpZXcvbGlzdC12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9saXN0LXZpZXcvbGlzdC12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFDM0ksT0FBTyxFQUFjLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7QUFNcEMsTUFBTSxPQUFPLGlCQUFpQjtJQWlGNUI7UUFoRkEsYUFBYTtRQUNKLFNBQUksR0FBRyxLQUFLLENBQUM7UUFDZixlQUFVLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUMxQixpQkFBWSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFHckMsMkNBQTJDO1FBQ3RCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFFdEMsNENBQTRDO1FBQ25DLFVBQUssR0FBa0IsSUFBSSxDQUFDO1FBQzVCLFNBQUksR0FBRyxDQUFDLENBQUM7UUFDbEIsMkNBQTJDO1FBQ3ZCLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbEMsMkNBQTJDO1FBQ2Ysb0JB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QUFVO2dCQUNQLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFFRSxJQUFJO3NCQUFaLEtBQUs7Z0JBS0YsSUFBSTtzQkFEUCxlQUFlO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFO2dCQWE3QyxVQUFVO3NCQUEvQixLQUFLO3VCQUFDLGFBQWE7Z0JBSWhCLEtBQUs7c0JBRFIsWUFBWTt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRTtnQkFVeEQsT0FBTztzQkFEVixZQUFZO3VCQUFDLDJCQUEyQixFQUFFLEVBQUUsSUFBSSxFQUFFLDJCQUEyQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIENvbnRlbnRDaGlsZHJlbiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBRdWVyeUxpc3QsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWVudU9wdGlvbiwgTGlzdFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgTGlzdFRpbGVDb21wb25lbnQgfSBmcm9tICcuL2xpc3QtdGlsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGlzdENvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vbGlzdC1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IExpc3REZXRhaWxzU2VjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vbGlzdC1kZXRhaWxzLXNlY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7IEljb25zIH0gZnJvbSAnLi4vLi4vaWNvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItbGlzdC12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpc3Qtdmlldy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTGlzdFZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAvLyBCVVNZIFNUQVRFXG4gIEBJbnB1dCgpIGJ1c3kgPSBmYWxzZTtcbiAgcHVibGljIGV4cGFuZEljb24gPSBJY29ucy5FeHBhbmQ7XG4gIHB1YmxpYyBjb2xsYXBzZUljb24gPSBJY29ucy5Db2xsYXBzZTtcbiAgLy8gREFUQSBTT1VSQ0UhXG4gIEBJbnB1dCgpIGl0ZW1zOiBhbnlbXSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcbiAgQElucHV0KCdzaG93LXBhZ2VyJykgc2hvd1BhZ2VyID0gdHJ1ZTtcblxuICAvLyBQQUdJTkcgLSBwYXNzIHRocm91Z2ggZm9yIHBhZ2VyIGNvbXBvbmVudFxuICBASW5wdXQoKSBjb3VudDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIHBhZ2UgPSAxO1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXG4gIEBJbnB1dCgncGFnZS1zaXplJykgcGFnZVNpemUgPSAyMDtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ3BhZ2Utc2l6ZS1vcHRpb25zJykgcGFnZVNpemVPcHRpb25zOiBNZW51T3B0aW9uW10gPSBbXTtcbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICBAT3V0cHV0KCkgcGFnZVNpemVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICBAT3V0cHV0KCkgZGV0YWlsc09wZW5lZDogRXZlbnRFbWl0dGVyPHsgaXRlbTogYW55LCBvcGVuOiBib29sZWFuIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGl0ZW06IGFueSwgb3BlbjogYm9vbGVhbiB9PigpO1xuXG4gIHB1YmxpYyB0YWJsZVZpZXdTdXBwb3J0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBtdWx0aXBsZUZ1bGxXaWR0aCA9IGZhbHNlO1xuICBwdWJsaWMgZnVsbFdpZHRoVEhDbGFzcyA9ICdsaXN0LXZpZXctdGgtZnVsbCc7XG4gIHB1YmxpYyBmdWxsV2lkdGhURENsYXNzID0gJ2xpc3Qtdmlldy10ZC1mdWxsJztcbiAgcHVibGljIHRpbGVzVmlld1N1cHBvcnRlZCA9IGZhbHNlO1xuICBwdWJsaWMgZGV0YWlsc1NlY3Rpb25TdXBwb3J0ZWQgPSBmYWxzZTtcbiAgcHVibGljIGxvYWRlckl0ZW1zOiBhbnlbXSA9IFtdO1xuXG4gIC8vIERFVEFJTFMgU0VDVElPTlxuICAvLyBDaGVjayBpZiBkZXRhaWxzIHNlY3Rpb24gYW5kIGJ1dHRvbiBzaG91bGQgYmUgZGlzcGxheWVkIGFjY29yZGluZyB0byB0aGUgY291bnQgb2YgdGhlIHZhbHVlIGdpdmVuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcbiAgQElucHV0KCdkZXRhaWxzLXNlY3Rpb24tcHJvcGVydHktY291bnQnKSBkZXRhaWxzU2VjdGlvblByb3BlcnR5Q291bnQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG5cbiAgLy8gU09SVElORyAtIHBhc3MgdGhyb3VnaCBmb3IgcGFnZXIgY29tcG9uZW50XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcbiAgQElucHV0KCdzb3J0LW9wdGlvbnMnKSBzb3J0T3B0aW9uczogTWVudU9wdGlvbltdID0gW107XG4gICAgQElucHV0KCkgc29ydDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcbiAgQElucHV0KCdzb3J0LWRpcicpIHNvcnRkaXI6IHN0cmluZyB8IG51bGwgPSAnLSc7XG4gIEBPdXRwdXQoKSBzb3J0Q2hhbmdlZDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHNvcnRkaXJDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBJbnB1dCgpIHZpZXcgPSBMaXN0Vmlld1R5cGUuVGFibGU7XG5cbiAgLy8gQ09MVU1OU1xuICBwdWJsaWMgY29sdW1uczogYW55W10gPSBbXTtcbiAgQENvbnRlbnRDaGlsZHJlbihMaXN0Q29sdW1uQ29tcG9uZW50LCB7IHJlYWQ6IExpc3RDb2x1bW5Db21wb25lbnQgfSlcbiAgc2V0IGNvbHMocmVmczogUXVlcnlMaXN0PExpc3RDb2x1bW5Db21wb25lbnQ+KSB7XG4gICAgdGhpcy5jb2x1bW5zID0gcmVmcz8udG9BcnJheSgpO1xuICAgIGlmICh0aGlzLmNvbHVtbnMgJiYgdGhpcy5jb2x1bW5zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudGFibGVWaWV3U3VwcG9ydGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5tdWx0aXBsZUZ1bGxXaWR0aCA9IHRoaXMuY29sdW1ucy5maWx0ZXIoYyA9PiBjLmZ1bGxXaWR0aCkubGVuZ3RoID4gMTtcbiAgICB0aGlzLmZ1bGxXaWR0aFRIQ2xhc3MgPSB0aGlzLm11bHRpcGxlRnVsbFdpZHRoID8gJ2xpc3Qtdmlldy10aC1oYWxmJyA6ICdsaXN0LXZpZXctdGgtZnVsbCc7XG4gICAgdGhpcy5mdWxsV2lkdGhURENsYXNzID0gdGhpcy5tdWx0aXBsZUZ1bGxXaWR0aCA/ICdsaXN0LXZpZXctdGQtaGFsZicgOiAnbGlzdC12aWV3LXRkLWZ1bGwnO1xuICB9XG5cbiAgcHVibGljIHRpbGVzRGVja0NsYXNzID0gJ2NhcmRzLWRlY2stNCc7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcbiAgQElucHV0KCd0aWxlcy1jb3VudCcpIHRpbGVzQ291bnQgPSA0O1xuXG4gIHB1YmxpYyB0aWxlVGVtcGxhdGU6IGFueSB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuICBAQ29udGVudENoaWxkKExpc3RUaWxlQ29tcG9uZW50LCB7IHJlYWQ6IExpc3RUaWxlQ29tcG9uZW50IH0pXG4gIHNldCB0aWxlcyhyZWY6IExpc3RUaWxlQ29tcG9uZW50KSB7XG4gICAgdGhpcy50aWxlVGVtcGxhdGUgPSByZWY7XG4gICAgaWYgKHRoaXMudGlsZVRlbXBsYXRlKSB7XG4gICAgICB0aGlzLnRpbGVzVmlld1N1cHBvcnRlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRldGFpbHNUZW1wbGF0ZTogYW55IHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XG4gIEBDb250ZW50Q2hpbGQoTGlzdERldGFpbHNTZWN0aW9uQ29tcG9uZW50LCB7IHJlYWQ6IExpc3REZXRhaWxzU2VjdGlvbkNvbXBvbmVudCB9KVxuICBzZXQgZGV0YWlscyhyZWY6IExpc3REZXRhaWxzU2VjdGlvbkNvbXBvbmVudCkge1xuICAgIHRoaXMuZGV0YWlsc1RlbXBsYXRlID0gcmVmO1xuICAgIGlmICh0aGlzLmRldGFpbHNUZW1wbGF0ZSkge1xuICAgICAgdGhpcy5kZXRhaWxzU2VjdGlvblN1cHBvcnRlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1OyBpKyspIHtcbiAgICAgIHRoaXMubG9hZGVySXRlbXMucHVzaCh7fSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHRpbGVzQ291bnRDaGFuZ2UgPSBjaGFuZ2VzWyd0aWxlcy1jb3VudCddIHx8IGNoYW5nZXMudGlsZXNDb3VudDtcbiAgICBpZiAodGlsZXNDb3VudENoYW5nZSkge1xuICAgICAgdGhpcy5zZXRUaWxlc0RlY2tDbGFzcyh0aWxlc0NvdW50Q2hhbmdlLmN1cnJlbnRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXZlbnRzXG4gIHB1YmxpYyBlbWl0UGFnZUNoYW5nZWQoJGV2ZW50OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2VDaGFuZ2VkLmVtaXQoJGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0UGFnZVNpemVDaGFuZ2VkKCRldmVudDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5wYWdlU2l6ZUNoYW5nZWQuZW1pdCgkZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIGVtaXRTb3J0Q2hhbmdlZCgkZXZlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc29ydENoYW5nZWQuZW1pdCgkZXZlbnQpO1xuICB9XG4gIHB1YmxpYyBlbWl0U29ydGRpckNoYW5nZWQoJGV2ZW50OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNvcnRkaXJDaGFuZ2VkLmVtaXQoJGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVEZXRhaWxzKGl0ZW06IGFueSk6IHZvaWQge1xuICAgIGl0ZW0uZGV0YWlsc0V4cGFuZGVkID0gIWl0ZW0uZGV0YWlsc0V4cGFuZGVkO1xuICAgIHRoaXMuZGV0YWlsc09wZW5lZC5lbWl0KHsgaXRlbSwgb3BlbjogaXRlbS5kZXRhaWxzRXhwYW5kZWQgfSk7XG4gIH1cblxuICAvLyBoZWxwZXJzXG4gIHByaXZhdGUgc2V0VGlsZXNEZWNrQ2xhc3ModGlsZXM6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aWxlcyA+PSAxICYmIHRpbGVzIDw9IDQpIHtcbiAgICAgIHRoaXMudGlsZXNEZWNrQ2xhc3MgPVxuICAgICAgICB0aGlzLnZpZXcgIT09IExpc3RWaWV3VHlwZS5HYWxsZXJ5XG4gICAgICAgID8gYGNhcmRzLWRlY2stJHt0aWxlc31gXG4gICAgICAgIDogdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDBcbiAgICAgICAgICA/IGBnYWxsZXJ5LWRlY2stJHt0aWxlc31gXG4gICAgICAgICAgOiAnZ2FsbGVyeS1kZWNrJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50aWxlc0RlY2tDbGFzcyA9XG4gICAgICAgIHRoaXMudmlldyAhPT0gTGlzdFZpZXdUeXBlLkdhbGxlcnlcbiAgICAgICAgPyAnY2FyZHMtZGVjay0zJ1xuICAgICAgICA6IHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwXG4gICAgICAgICAgPyAnZ2FsbGVyeS1kZWNrLTMnXG4gICAgICAgICAgOiAnZ2FsbGVyeS1kZWNrJztcbiAgICB9XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cInB4LTJcIj5cblxuICA8bGliLXBhZ2VyICpuZ0lmPVwic2hvd1BhZ2VyXCJcbiAgICAgICAgICAgICBbcGFnZV09XCJwYWdlXCJcbiAgICAgICAgICAgICBbcGFnZS1zaXplXT1cInBhZ2VTaXplXCJcbiAgICAgICAgICAgICBbY291bnRdPVwiY291bnRcIlxuICAgICAgICAgICAgIFtzb3J0LW9wdGlvbnNdPVwic29ydE9wdGlvbnNcIlxuICAgICAgICAgICAgIFtzb3J0XT1cInNvcnRcIlxuICAgICAgICAgICAgIFtzb3J0LWRpcl09XCJzb3J0ZGlyXCJcbiAgICAgICAgICAgICBbYnVzeV09XCJidXN5XCJcbiAgICAgICAgICAgICAocGFnZUNoYW5nZWQpPVwiZW1pdFBhZ2VDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgIChwYWdlU2l6ZUNoYW5nZWQpPVwiZW1pdFBhZ2VTaXplQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAoc29ydENoYW5nZWQpPVwiZW1pdFNvcnRDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgIChzb3J0ZGlyQ2hhbmdlZCk9XCJlbWl0U29ydGRpckNoYW5nZWQoJGV2ZW50KVwiPlxuICA8L2xpYi1wYWdlcj5cbjwvZGl2PlxuXG48bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ2aWV3XCI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3RpbGVzJ1wiPlxuICAgIDxkaXYgW2NsYXNzXT1cInRpbGVzRGVja0NsYXNzXCI+XG5cbiAgICAgIDxsaWItc2tlbGV0b24tbG9hZGVyICpuZ0lmPVwiYnVzeVwiIFtjb3VudF09XCI1XCIgW3R5cGVdPVwiJ3RpbGVzJ1wiPjwvbGliLXNrZWxldG9uLWxvYWRlcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW1zICYmIGl0ZW1zLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRpbGVUZW1wbGF0ZSB8fCAhdGlsZVRlbXBsYXRlLnRlbXBsYXRlXCI+dGVtcGxhdGUgbWlzc2luZy4uPC9zcGFuPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0aWxlVGVtcGxhdGUudGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cblxuICA8IS0tICpuZ1N3aXRjaENhc2U9XCInZ2FsbGVyeSdcIiAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2dhbGxlcnknXCI+XG4gICAgPHVsIHJvbGU9XCJsaXN0XCIgW2NsYXNzXT1cInRpbGVzRGVja0NsYXNzXCI+XG5cbiAgICAgIDxsaWItc2tlbGV0b24tbG9hZGVyICpuZ0lmPVwiYnVzeVwiIFtjb3VudF09XCI1XCIgW3R5cGVdPVwiJ3RpbGVzJ1wiPjwvbGliLXNrZWxldG9uLWxvYWRlcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFidXN5ICYmIGl0ZW1zICYmIGl0ZW1zLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRpbGVUZW1wbGF0ZSB8fCAhdGlsZVRlbXBsYXRlLnRlbXBsYXRlXCI+dGVtcGxhdGUgbWlzc2luZy4uPC9zcGFuPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0aWxlVGVtcGxhdGUudGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC91bD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSAqbmdTd2l0Y2hDYXNlPVwiJ3RhYmxlJ1wiIC0tPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XG5cbiAgICA8ZGl2IGNsYXNzPVwibGlzdC12aWV3LWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImxpc3Qtdmlldy1jb250YWluZXItaW5uZXJcIj5cbiAgICAgICAgPHRhYmxlIGNsYXNzPVwibGlzdC12aWV3LXRhYmxlXCI+XG4gICAgICAgICAgPHRoZWFkIGNsYXNzPVwibGlzdC12aWV3LXRoZWFkXCI+XG4gICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkZXRhaWxzU2VjdGlvblN1cHBvcnRlZFwiPlxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImxpc3Qtdmlldy10aC1kZXRhaWxzXCI+PC90aD5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCI+XG4gICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbC5mdWxsV2lkdGggPyBmdWxsV2lkdGhUSENsYXNzIDogJ2xpc3Qtdmlldy10aCdcIj5cbiAgICAgICAgICAgICAgICAgIHt7Y29sLnRpdGxlfX1cbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJsaXN0LXZpZXctdGJvZHlcIiAqbmdJZj1cImJ1c3lcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbG9hZGVySXRlbXM7bGV0IGk9aW5kZXhcIj5cbiAgICAgICAgICAgICAgPHRyIGNsYXNzPVwibGlzdC12aWV3LXRyXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRldGFpbHNTZWN0aW9uU3VwcG9ydGVkXCI+XG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJsaXN0LXZpZXctdGQtZGV0YWlsc1wiXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkZXRhaWxzU2VjdGlvblByb3BlcnR5Q291bnQgIT09IG51bGwgPyBpdGVtW2RldGFpbHNTZWN0aW9uUHJvcGVydHlDb3VudF0gIT09IDAgOiB0cnVlOyBlbHNlIGhpZGRlbkRldGFpbHNCdXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBkaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZXhwYW5kLWNvbGxhcHNlLWJ1dHRvblwiPlxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gSGVyb2ljb24gbmFtZTogc29saWQvcGx1cyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiaXRlbS5kZXRhaWxzRXhwYW5kZWQgPyBjb2xsYXBzZUljb24gOiBleHBhbmRJY29uXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2hpZGRlbkRldGFpbHNCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImxpc3Qtdmlldy10ZC1kZXRhaWxzXCI+PC90ZD5cbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjb2wuZnVsbFdpZHRoID8gZnVsbFdpZHRoVERDbGFzcyA6ICdsaXN0LXZpZXctdGQnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgYW5pbWF0ZS1wdWxzZSBoLTggYmctZ3JheS0yMDAgcm91bmRlZFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkZXRhaWxzU2VjdGlvblN1cHBvcnRlZFwiPlxuICAgICAgICAgICAgICAgIDx0ciAqbmdJZj1cIml0ZW0uZGV0YWlsc0V4cGFuZGVkXCI+XG4gICAgICAgICAgICAgICAgICA8dGQgW2NvbFNwYW5dPVwiY29sdW1ucy5sZW5ndGggKyAxXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxpc3Qtdmlldy10ZCBiZy1ncmF5LTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGV0YWlsc1RlbXBsYXRlLnRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImxpc3Qtdmlldy10Ym9keVwiICpuZ0lmPVwiIWJ1c3lcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXM7bGV0IGk9aW5kZXhcIj5cbiAgICAgICAgICAgICAgPHRyIGNsYXNzPVwibGlzdC12aWV3LXRyXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRldGFpbHNTZWN0aW9uU3VwcG9ydGVkXCI+XG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJsaXN0LXZpZXctdGQtZGV0YWlsc1wiXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkZXRhaWxzU2VjdGlvblByb3BlcnR5Q291bnQgIT09IG51bGwgPyBpdGVtW2RldGFpbHNTZWN0aW9uUHJvcGVydHlDb3VudF0gIT09IDAgOiB0cnVlOyBlbHNlIGhpZGRlbkRldGFpbHNCdXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlRGV0YWlscyhpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJleHBhbmQtY29sbGFwc2UtYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBIZXJvaWNvbiBuYW1lOiBzb2xpZC9wbHVzIC0tPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJpdGVtLmRldGFpbHNFeHBhbmRlZCA/IGNvbGxhcHNlSWNvbiA6IGV4cGFuZEljb25cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaGlkZGVuRGV0YWlsc0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibGlzdC12aWV3LXRkLWRldGFpbHNcIj48L3RkPlxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbC5mdWxsV2lkdGggPyBmdWxsV2lkdGhURENsYXNzIDogJ2xpc3Qtdmlldy10ZCdcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2wudGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGV0YWlsc1NlY3Rpb25TdXBwb3J0ZWRcIj5cbiAgICAgICAgICAgICAgICA8dHIgKm5nSWY9XCJpdGVtLmRldGFpbHNFeHBhbmRlZFwiPlxuICAgICAgICAgICAgICAgICAgPHRkIFtjb2xTcGFuXT1cImNvbHVtbnMubGVuZ3RoICsgMVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsaXN0LXZpZXctdGQgYmctZ3JheS0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRldGFpbHNUZW1wbGF0ZS50ZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgPC90YWJsZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWJ1c3kgJiYgaXRlbXMgJiYgaXRlbXMubGVuZ3RoID09PSAwXCI+XG4gICAgPGRpdiBjbGFzcz1cImNhcmRzLWRlY2stMVwiPlxuICAgICAgPGxpYi1saXN0LXZpZXctZW1wdHktc3RhdGU+PC9saWItbGlzdC12aWV3LWVtcHR5LXN0YXRlPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4iXX0=
@@ -1,45 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- import * as i2 from "@angular/router";
5
- export class NavLinksListComponent {
6
- constructor() {
7
- // tslint:disable-next-line:no-input-rename
8
- this.navLinkClass = 'nav-link';
9
- // tslint:disable-next-line:no-input-rename
10
- this.navLinkActiveClass = 'nav-link-active';
11
- // tslint:disable-next-line:no-input-rename
12
- this.containerClass = undefined;
13
- // tslint:disable-next-line:no-input-rename
14
- this.showIcons = false;
15
- }
16
- ngOnInit() {
17
- }
18
- }
19
- NavLinksListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: NavLinksListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
20
- NavLinksListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: NavLinksListComponent, selector: "lib-nav-links-list", inputs: { links: "links", activeFragment: ["active-fragment", "activeFragment"], navLinkClass: ["link-class", "navLinkClass"], navLinkActiveClass: ["link-active-class", "navLinkActiveClass"], containerClass: ["container-class", "containerClass"], showIcons: ["show-icons", "showIcons"] }, ngImport: i0, template: "\n<div [class]=\"containerClass ?? 'nav-link-list-container'\">\n <div class=\"nav-link-list-container-inner\">\n <ng-container *ngFor=\"let link of links | async\">\n <ng-container [ngSwitch]=\"link.type\">\n <a *ngSwitchCase=\"'router'\"\n href=\"#\"\n [routerLink]=\"[link.path]\"\n [routerLinkActive]=\"navLinkActiveClass\"\n [routerLinkActiveOptions]=\"{ exact: link.exact }\"\n [class]=\"navLinkClass\">\n <i *ngIf=\"showIcons && link.icon\" [class]=\"link.icon + ' mr-3'\"></i>{{ link.text }}\n </a>\n <a *ngSwitchCase=\"'external'\"\n [href]=\"link.path\"\n [attr.target]=\"link.external ? '_blank' : '_self'\"\n [class]=\"navLinkClass\">\n <i *ngIf=\"showIcons && link.icon\" [class]=\"link.icon+ ' mr-3'\"></i>{{ link.text }}\n </a>\n <a *ngSwitchCase=\"'fragment'\"\n routerLink=\".\"\n [fragment]=\"link.path\"\n [class.active]=\"(activeFragment | async) === link.path\"\n [routerLinkActive]=\"navLinkActiveClass\"\n [class]=\"navLinkClass\">\n <i *ngIf=\"showIcons && link.icon\" [class]=\"link.icon+ ' mr-3'\"></i>{{ link.text }}\n </a>\n </ng-container>\n </ng-container>\n </div>\n</div>\n", directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: i2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], exportAs: ["routerLinkActive"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i1.AsyncPipe } });
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: NavLinksListComponent, decorators: [{
22
- type: Component,
23
- args: [{
24
- selector: 'lib-nav-links-list',
25
- templateUrl: './nav-links-list.component.html'
26
- }]
27
- }], ctorParameters: function () { return []; }, propDecorators: { links: [{
28
- type: Input
29
- }], activeFragment: [{
30
- type: Input,
31
- args: ['active-fragment']
32
- }], navLinkClass: [{
33
- type: Input,
34
- args: ['link-class']
35
- }], navLinkActiveClass: [{
36
- type: Input,
37
- args: ['link-active-class']
38
- }], containerClass: [{
39
- type: Input,
40
- args: ['container-class']
41
- }], showIcons: [{
42
- type: Input,
43
- args: ['show-icons']
44
- }] } });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LWxpbmtzLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL25hdi1saW5rcy1saXN0L25hdi1saW5rcy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9uYXYtbGlua3MtbGlzdC9uYXYtbGlua3MtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7OztBQU96RCxNQUFNLE9BQU8scUJBQXFCO0lBYWhDO1FBUkEsMkNBQTJDO1FBQ3RCLGlCQUFZLEdBQW9CLFVBQVUsQ0FBQztRQUNoRSwyQ0FBMkM7UUFDZix1QkFBa0IsR0FBc0IsaUJBQWlCLENBQUM7UUFDdEYsMkNBQTJDO1FBQ2pCLG1CQUFjLEdBQWtDLFNBQVMsQ0FBQztRQUNwRiwyQ0FBMkM7UUFDdEIsY0FBUyxHQUF3QixLQUFLLENBQUM7SUFDNUMsQ0FBQztJQUVqQixRQUFRO0lBQ1IsQ0FBQzs7bUhBaEJVLHFCQUFxQjt1R0FBckIscUJBQXFCLDJWQ1JsQywreENBK0JBOzRGRHZCYSxxQkFBcUI7a0JBSmpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsV0FBVyxFQUFFLGlDQUFpQztpQkFDL0M7MEVBR1UsS0FBSztzQkFBYixLQUFLO2dCQUVvQixjQUFjO3NCQUF2QyxLQUFLO3VCQUFDLGlCQUFpQjtnQkFFSCxZQUFZO3NCQUFoQyxLQUFLO3VCQUFDLFlBQVk7Z0JBRVMsa0JBQWtCO3NCQUE3QyxLQUFLO3VCQUFDLG1CQUFtQjtnQkFFQSxjQUFjO3NCQUF2QyxLQUFLO3VCQUFDLGlCQUFpQjtnQkFFSCxTQUFTO3NCQUE3QixLQUFLO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdkxpbmsgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1uYXYtbGlua3MtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9uYXYtbGlua3MtbGlzdC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTmF2TGlua3NMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBsaW5rczogT2JzZXJ2YWJsZTxOYXZMaW5rW10+IHwgdW5kZWZpbmVkO1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXG4gIEBJbnB1dCgnYWN0aXZlLWZyYWdtZW50JykgYWN0aXZlRnJhZ21lbnQ6IE9ic2VydmFibGU8c3RyaW5nPiB8IHVuZGVmaW5lZDtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ2xpbmstY2xhc3MnKSBuYXZMaW5rQ2xhc3M6IHN0cmluZyB8IHN0cmluZyA9ICduYXYtbGluayc7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcbiAgQElucHV0KCdsaW5rLWFjdGl2ZS1jbGFzcycpIG5hdkxpbmtBY3RpdmVDbGFzczogc3RyaW5nIHwgc3RyaW5nW10gPSAnbmF2LWxpbmstYWN0aXZlJztcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ2NvbnRhaW5lci1jbGFzcycpIGNvbnRhaW5lckNsYXNzOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ3Nob3ctaWNvbnMnKSBzaG93SWNvbnM6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgfVxuXG59XG4iLCJcbjxkaXYgW2NsYXNzXT1cImNvbnRhaW5lckNsYXNzID8/ICduYXYtbGluay1saXN0LWNvbnRhaW5lcidcIj5cbiAgPGRpdiBjbGFzcz1cIm5hdi1saW5rLWxpc3QtY29udGFpbmVyLWlubmVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGluayBvZiBsaW5rcyB8IGFzeW5jXCI+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJsaW5rLnR5cGVcIj5cbiAgICAgICAgPGEgKm5nU3dpdGNoQ2FzZT1cIidyb3V0ZXInXCJcbiAgICAgICAgICBocmVmPVwiI1wiXG4gICAgICAgICAgW3JvdXRlckxpbmtdPVwiW2xpbmsucGF0aF1cIlxuICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIm5hdkxpbmtBY3RpdmVDbGFzc1wiXG4gICAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cInsgZXhhY3Q6IGxpbmsuZXhhY3QgfVwiXG4gICAgICAgICAgW2NsYXNzXT1cIm5hdkxpbmtDbGFzc1wiPlxuICAgICAgICAgIDxpICpuZ0lmPVwic2hvd0ljb25zICYmIGxpbmsuaWNvblwiIFtjbGFzc109XCJsaW5rLmljb24gKyAnIG1yLTMnXCI+PC9pPnt7IGxpbmsudGV4dCB9fVxuICAgICAgICA8L2E+XG4gICAgICAgIDxhICpuZ1N3aXRjaENhc2U9XCInZXh0ZXJuYWwnXCJcbiAgICAgICAgICBbaHJlZl09XCJsaW5rLnBhdGhcIlxuICAgICAgICAgIFthdHRyLnRhcmdldF09XCJsaW5rLmV4dGVybmFsID8gJ19ibGFuaycgOiAnX3NlbGYnXCJcbiAgICAgICAgICBbY2xhc3NdPVwibmF2TGlua0NsYXNzXCI+XG4gICAgICAgICAgPGkgKm5nSWY9XCJzaG93SWNvbnMgJiYgbGluay5pY29uXCIgW2NsYXNzXT1cImxpbmsuaWNvbisgJyBtci0zJ1wiPjwvaT57eyBsaW5rLnRleHQgfX1cbiAgICAgICAgPC9hPlxuICAgICAgICA8YSAqbmdTd2l0Y2hDYXNlPVwiJ2ZyYWdtZW50J1wiXG4gICAgICAgICAgcm91dGVyTGluaz1cIi5cIlxuICAgICAgICAgIFtmcmFnbWVudF09XCJsaW5rLnBhdGhcIlxuICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiKGFjdGl2ZUZyYWdtZW50IHwgYXN5bmMpID09PSBsaW5rLnBhdGhcIlxuICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIm5hdkxpbmtBY3RpdmVDbGFzc1wiXG4gICAgICAgICAgW2NsYXNzXT1cIm5hdkxpbmtDbGFzc1wiPlxuICAgICAgICAgIDxpICpuZ0lmPVwic2hvd0ljb25zICYmIGxpbmsuaWNvblwiIFtjbGFzc109XCJsaW5rLmljb24rICcgbXItMydcIj48L2k+e3sgbGluay50ZXh0IH19XG4gICAgICAgIDwvYT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,76 +0,0 @@
1
- import { Component, Inject } from '@angular/core';
2
- import { APP_LINKS, APP_NOTIFICATIONS } from '../../tokens';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../../directives/click-outside.directive";
5
- import * as i2 from "@angular/common";
6
- import * as i3 from "@angular/router";
7
- export class NotificationsIndicatorComponent {
8
- constructor(notifications, links) {
9
- this.notifications = notifications;
10
- this.links = links;
11
- this.menuExpanded = false;
12
- this.unreadCount = 0;
13
- this.items = [];
14
- this.inboxAction = undefined;
15
- this.newArrival = false;
16
- }
17
- ngOnDestroy() {
18
- if (this.notificationsSub$) {
19
- this.notificationsSub$.unsubscribe();
20
- }
21
- }
22
- ngOnInit() {
23
- this.links['notifications'].subscribe(notificationsLink => {
24
- this.allNotificationsLink = notificationsLink;
25
- });
26
- this.notificationsSub$ = this.notifications.messages.subscribe(result => {
27
- if (result.items) {
28
- this.newArrival = true;
29
- this.unreadCount = result.count;
30
- this.items = result.items;
31
- setTimeout(() => { this.newArrival = false; }, 1000);
32
- }
33
- });
34
- }
35
- doInboxAction() {
36
- if (this.notifications.inboxAction) {
37
- this.notifications.inboxAction();
38
- }
39
- else {
40
- this.menuExpanded = !this.menuExpanded;
41
- }
42
- this.unreadCount = 0;
43
- }
44
- removeItem(index) {
45
- this.items.splice(index, 1);
46
- }
47
- // this.notificationsSub$ = this.links.notifications?.pipe(map(result => {
48
- // this.allItemsLink = result.allNotifications;
49
- // this.items = result.items;
50
- // this.unreadCount = result.count;
51
- // }));
52
- // [this.notificationsLinksPath] as Observable<NotificationNavLink[]>;
53
- // this.allNotificationsLink = this.links[this.allNotificationsLinkPath] as Observable<NavLink>;
54
- // this.unreadNotificationsCountObs = this.links[this.notificationsCounterLinksPath] as Observable<number>;
55
- // this.getUnreadNotificationsCount();
56
- // tslint:disable-next-line:typedef
57
- onClickOutside($event) {
58
- this.menuExpanded = false;
59
- }
60
- }
61
- NotificationsIndicatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: NotificationsIndicatorComponent, deps: [{ token: APP_NOTIFICATIONS }, { token: APP_LINKS }], target: i0.ɵɵFactoryTarget.Component });
62
- NotificationsIndicatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: NotificationsIndicatorComponent, selector: "lib-notifications-indicator", ngImport: i0, template: "<div class=\"relative\"\n(clickOutside)=\"onClickOutside($event)\">\n <!-- Notifications Button -->\n <button type=\"button\"\n (click)=\"doInboxAction()\"\n aria-expanded=\"false\"\n aria-haspopup=\"true\">\n <span class=\"sr-only\">View notifications</span>\n <span class=\"avatar-container\">\n <span class=\"avatar-text\">\n <i class=\"ms-Icon hover:text-blue-400\"\n [class.ms-Icon--MessageFill]=\"unreadCount > 0\"\n [class.text-sky-400]=\"unreadCount > 0\"\n [class.animate-notification]=\"newArrival\"\n [class.ms-Icon--Message]=\"unreadCount === 0\">\n </i>\n </span>\n <span\n *ngIf=\"unreadCount > 0\"\n [class.animate-pulse]=\"newArrival\"\n class=\"absolute top-0 right-0 inline-flex items-center justify-center -mt-1 ml-1 text-xs leading-none text-gray-100 ordinal\">\n {{ unreadCount }}\n </span>\n </span>\n </button>\n\n <!-- Notifications dropdown -->\n <div *ngIf=\"menuExpanded\" class=\"header-notifications-dropdown-with-username\" role=\"menu\" aria-orientation=\"vertical\" aria-labelledby=\"messages-menu\">\n <div class=\"max-h-64 overflow-y-auto notification-messages min-h\">\n <ng-container *ngIf=\"!items; else messagesDropDown\" class=\"py-5\">\n <div class=\"notifications-nav-link hover:bg-transparent\">\u0394\u03B5\u03BD \u03AD\u03C7\u03B5\u03C4\u03B5 \u03BD\u03AD\u03B5\u03C2 \u03B5\u03B9\u03B4\u03BF\u03C0\u03BF\u03B9\u03AE\u03C3\u03B5\u03B9\u03C2</div>\n </ng-container>\n <ng-template #messagesDropDown>\n <ul class=\"pr-1.5\">\n <ng-container *ngIf=\"items; else loading\">\n <ng-container *ngIf=\"items.length <= 0\" class=\"py-5\">\n <div class=\"notifications-nav-link hover:bg-transparent\">\u0394\u03B5\u03BD \u03AD\u03C7\u03B5\u03C4\u03B5 \u03BD\u03AD\u03B5\u03C2 \u03B5\u03B9\u03B4\u03BF\u03C0\u03BF\u03B9\u03AE\u03C3\u03B5\u03B9\u03C2</div>\n </ng-container>\n <ng-container *ngFor=\"let message of items; let i = index\">\n <li class=\"mb-2\" [ngClass]=\"{ 'border-l-2 border-blue-500 bg-blue-50 hover:bg-blue-50': !message.data.isRead }\">\n <div class=\"flex justify-between\">\n <div class=\"flex-grow\">\n <a\n [routerLink]=\"message.path\"\n (click)=\"removeItem(i)\"\n class=\"notifications-nav-link grid\"\n [ngClass]=\"!message.data.isRead ? ' hover:bg-blue-50' : 'border-b border-gray-100'\"\n >\n <div class=\"flex flex-col\">\n <div class=\"font-thin tracking-tighter\">\n {{ message.data.creationDate | date: \"EEE, d MMMM\" }}\n </div>\n <div class=\"font-bold\">\n {{ message.data.text }}\n </div>\n </div>\n </a>\n </div>\n </div>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-template #loading>\n <div class=\"h-32 flex items-center justify-center\">\n <div class=\"animate-pulse text-s text-gray-600\">Loading...</div>\n </div>\n </ng-template>\n </ul>\n </ng-template>\n </div>\n <div class=\"p-1 rounded-sm\">\n <a [routerLink]=\"allNotificationsLink!.path\">\n <button type=\"button\" class=\"header-notifications-dropdown-view-all-button\">{{allNotificationsLink!.text}}</button>\n </a>\n </div>\n </div>\n</div>\n", directives: [{ type: i1.ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }], pipes: { "date": i2.DatePipe } });
63
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: NotificationsIndicatorComponent, decorators: [{
64
- type: Component,
65
- args: [{
66
- selector: 'lib-notifications-indicator',
67
- templateUrl: './notifications-indicator.component.html'
68
- }]
69
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
70
- type: Inject,
71
- args: [APP_NOTIFICATIONS]
72
- }] }, { type: undefined, decorators: [{
73
- type: Inject,
74
- args: [APP_LINKS]
75
- }] }]; } });
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy1pbmRpY2F0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL25vdGlmaWNhdGlvbnMtaW5kaWNhdG9yL25vdGlmaWNhdGlvbnMtaW5kaWNhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9ub3RpZmljYXRpb25zLWluZGljYXRvci9ub3RpZmljYXRpb25zLWluZGljYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7QUFNNUQsTUFBTSxPQUFPLCtCQUErQjtJQVMxQyxZQUE4QyxhQUFnQyxFQUE0QixLQUFVO1FBQXRFLGtCQUFhLEdBQWIsYUFBYSxDQUFtQjtRQUE0QixVQUFLLEdBQUwsS0FBSyxDQUFLO1FBUDdHLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLFVBQUssR0FBVSxFQUFFLENBQUM7UUFHakIsZ0JBQVcsR0FBb0IsU0FBUyxDQUFDO1FBQzFDLGVBQVUsR0FBRyxLQUFLLENBQUM7SUFDOEYsQ0FBQztJQUV6SCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBeUIsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsRUFBRTtZQUNqRixJQUFJLENBQUMsb0JBQW9CLEdBQUcsaUJBQWlCLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3RFLElBQUksTUFBTSxDQUFDLEtBQUssRUFBQztnQkFDZixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQzFCLFVBQVUsQ0FBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUUsQ0FBQzthQUN4RDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGFBQWE7UUFDbEIsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRTtZQUNsQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ2xDO2FBQU07WUFDTCxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztTQUN4QztRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxVQUFVLENBQUMsS0FBWTtRQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVDLDBFQUEwRTtJQUMxRSxpREFBaUQ7SUFDakQsK0JBQStCO0lBQy9CLHFDQUFxQztJQUNyQyxPQUFPO0lBRVAsc0VBQXNFO0lBQ3RFLGdHQUFnRztJQUNoRywyR0FBMkc7SUFDM0csc0NBQXNDO0lBRXhDLG1DQUFtQztJQUM1QixjQUFjLENBQUMsTUFBVztRQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDOzs2SEExRFUsK0JBQStCLGtCQVN0QixpQkFBaUIsYUFBbUQsU0FBUztpSEFUdEYsK0JBQStCLG1FQ1Q1QyxpcUhBOEVBOzRGRHJFYSwrQkFBK0I7a0JBSjNDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDZCQUE2QjtvQkFDdkMsV0FBVyxFQUFFLDBDQUEwQztpQkFDeEQ7OzBCQVVjLE1BQU07MkJBQUMsaUJBQWlCOzswQkFBNEMsTUFBTTsyQkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUFwcE5vdGlmaWNhdGlvbnMsIE5hdkxpbmsgfSBmcm9tICcuLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkluaXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVBQX0xJTktTLCBBUFBfTk9USUZJQ0FUSU9OUyB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1ub3RpZmljYXRpb25zLWluZGljYXRvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9ub3RpZmljYXRpb25zLWluZGljYXRvci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTm90aWZpY2F0aW9uc0luZGljYXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBwdWJsaWMgbWVudUV4cGFuZGVkID0gZmFsc2U7XG4gIHB1YmxpYyB1bnJlYWRDb3VudCA9IDA7XG4gIHB1YmxpYyBpdGVtczogYW55W10gPSBbXTtcbiAgcHVibGljIGFsbE5vdGlmaWNhdGlvbnNMaW5rPzogTmF2TGluaztcbiAgcHJpdmF0ZSBub3RpZmljYXRpb25zU3ViJDogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGluYm94QWN0aW9uOiBhbnkgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIHB1YmxpYyBuZXdBcnJpdmFsID0gZmFsc2U7XG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQVBQX05PVElGSUNBVElPTlMpIHB1YmxpYyBub3RpZmljYXRpb25zOiBJQXBwTm90aWZpY2F0aW9ucywgQEluamVjdChBUFBfTElOS1MpIHB1YmxpYyBsaW5rczogYW55KSB7IH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ub3RpZmljYXRpb25zU3ViJCkge1xuICAgICAgdGhpcy5ub3RpZmljYXRpb25zU3ViJC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICh0aGlzLmxpbmtzWydub3RpZmljYXRpb25zJ10gYXMgT2JzZXJ2YWJsZTxOYXZMaW5rPikuc3Vic2NyaWJlKG5vdGlmaWNhdGlvbnNMaW5rID0+IHtcbiAgICAgIHRoaXMuYWxsTm90aWZpY2F0aW9uc0xpbmsgPSBub3RpZmljYXRpb25zTGluaztcbiAgICB9KTtcbiAgICB0aGlzLm5vdGlmaWNhdGlvbnNTdWIkID0gdGhpcy5ub3RpZmljYXRpb25zLm1lc3NhZ2VzLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgaWYgKHJlc3VsdC5pdGVtcyl7XG4gICAgICAgIHRoaXMubmV3QXJyaXZhbCA9IHRydWU7XG4gICAgICAgIHRoaXMudW5yZWFkQ291bnQgPSByZXN1bHQuY291bnQ7XG4gICAgICAgIHRoaXMuaXRlbXMgPSByZXN1bHQuaXRlbXM7XG4gICAgICAgIHNldFRpbWVvdXQoICgpID0+IHsgdGhpcy5uZXdBcnJpdmFsID0gZmFsc2U7IH0sIDEwMDAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBkb0luYm94QWN0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm5vdGlmaWNhdGlvbnMuaW5ib3hBY3Rpb24pIHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5pbmJveEFjdGlvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1lbnVFeHBhbmRlZCA9ICF0aGlzLm1lbnVFeHBhbmRlZDtcbiAgICB9XG4gICAgdGhpcy51bnJlYWRDb3VudCA9IDA7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlSXRlbShpbmRleDpudW1iZXIpe1xuICAgIHRoaXMuaXRlbXMuc3BsaWNlKGluZGV4LDEpO1xuICB9XG5cbiAgICAvLyB0aGlzLm5vdGlmaWNhdGlvbnNTdWIkID0gdGhpcy5saW5rcy5ub3RpZmljYXRpb25zPy5waXBlKG1hcChyZXN1bHQgPT4ge1xuICAgIC8vICAgdGhpcy5hbGxJdGVtc0xpbmsgPSByZXN1bHQuYWxsTm90aWZpY2F0aW9ucztcbiAgICAvLyAgIHRoaXMuaXRlbXMgPSByZXN1bHQuaXRlbXM7XG4gICAgLy8gICB0aGlzLnVucmVhZENvdW50ID0gcmVzdWx0LmNvdW50O1xuICAgIC8vIH0pKTtcblxuICAgIC8vIFt0aGlzLm5vdGlmaWNhdGlvbnNMaW5rc1BhdGhdIGFzIE9ic2VydmFibGU8Tm90aWZpY2F0aW9uTmF2TGlua1tdPjtcbiAgICAvLyB0aGlzLmFsbE5vdGlmaWNhdGlvbnNMaW5rID0gdGhpcy5saW5rc1t0aGlzLmFsbE5vdGlmaWNhdGlvbnNMaW5rUGF0aF0gYXMgT2JzZXJ2YWJsZTxOYXZMaW5rPjtcbiAgICAvLyB0aGlzLnVucmVhZE5vdGlmaWNhdGlvbnNDb3VudE9icyA9IHRoaXMubGlua3NbdGhpcy5ub3RpZmljYXRpb25zQ291bnRlckxpbmtzUGF0aF0gYXMgT2JzZXJ2YWJsZTxudW1iZXI+O1xuICAgIC8vIHRoaXMuZ2V0VW5yZWFkTm90aWZpY2F0aW9uc0NvdW50KCk7XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnR5cGVkZWZcbiAgcHVibGljIG9uQ2xpY2tPdXRzaWRlKCRldmVudDogYW55KSB7XG4gICAgdGhpcy5tZW51RXhwYW5kZWQgPSBmYWxzZTtcbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwicmVsYXRpdmVcIlxuKGNsaWNrT3V0c2lkZSk9XCJvbkNsaWNrT3V0c2lkZSgkZXZlbnQpXCI+XG4gIDwhLS0gTm90aWZpY2F0aW9ucyBCdXR0b24gLS0+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cImRvSW5ib3hBY3Rpb24oKVwiXG4gICAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcbiAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiPlxuICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPlZpZXcgbm90aWZpY2F0aW9uczwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cImF2YXRhci1jb250YWluZXJcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYXZhdGFyLXRleHRcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJtcy1JY29uIGhvdmVyOnRleHQtYmx1ZS00MDBcIlxuICAgICAgICAgIFtjbGFzcy5tcy1JY29uLS1NZXNzYWdlRmlsbF09XCJ1bnJlYWRDb3VudCA+IDBcIlxuICAgICAgICAgIFtjbGFzcy50ZXh0LXNreS00MDBdPVwidW5yZWFkQ291bnQgPiAwXCJcbiAgICAgICAgICBbY2xhc3MuYW5pbWF0ZS1ub3RpZmljYXRpb25dPVwibmV3QXJyaXZhbFwiXG4gICAgICAgICAgW2NsYXNzLm1zLUljb24tLU1lc3NhZ2VdPVwidW5yZWFkQ291bnQgPT09IDBcIj5cbiAgICAgICAgPC9pPlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgKm5nSWY9XCJ1bnJlYWRDb3VudCA+IDBcIlxuICAgICAgICBbY2xhc3MuYW5pbWF0ZS1wdWxzZV09XCJuZXdBcnJpdmFsXCJcbiAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSB0b3AtMCByaWdodC0wIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciAtbXQtMSBtbC0xIHRleHQteHMgbGVhZGluZy1ub25lIHRleHQtZ3JheS0xMDAgb3JkaW5hbFwiPlxuICAgICAgICB7eyB1bnJlYWRDb3VudCB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG5cbiAgPCEtLSBOb3RpZmljYXRpb25zIGRyb3Bkb3duIC0tPlxuICA8ZGl2ICpuZ0lmPVwibWVudUV4cGFuZGVkXCIgY2xhc3M9XCJoZWFkZXItbm90aWZpY2F0aW9ucy1kcm9wZG93bi13aXRoLXVzZXJuYW1lXCIgcm9sZT1cIm1lbnVcIiBhcmlhLW9yaWVudGF0aW9uPVwidmVydGljYWxcIiBhcmlhLWxhYmVsbGVkYnk9XCJtZXNzYWdlcy1tZW51XCI+XG4gICAgPGRpdiBjbGFzcz1cIm1heC1oLTY0IG92ZXJmbG93LXktYXV0byBub3RpZmljYXRpb24tbWVzc2FnZXMgbWluLWhcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbXM7IGVsc2UgbWVzc2FnZXNEcm9wRG93blwiIGNsYXNzPVwicHktNVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9ucy1uYXYtbGluayBob3ZlcjpiZy10cmFuc3BhcmVudFwiPs6UzrXOvSDOrc+HzrXPhM61IM69zq3Otc+CIM61zrnOtM6/z4DOv865zq7Pg861zrnPgjwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI21lc3NhZ2VzRHJvcERvd24+XG4gICAgICAgIDx1bCBjbGFzcz1cInByLTEuNVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtczsgZWxzZSBsb2FkaW5nXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbXMubGVuZ3RoIDw9IDBcIiBjbGFzcz1cInB5LTVcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGlmaWNhdGlvbnMtbmF2LWxpbmsgaG92ZXI6YmctdHJhbnNwYXJlbnRcIj7OlM61zr0gzq3Ph861z4TOtSDOvc6tzrXPgiDOtc65zrTOv8+Azr/Ouc6uz4POtc65z4I8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbWVzc2FnZSBvZiBpdGVtczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCIgW25nQ2xhc3NdPVwieyAnYm9yZGVyLWwtMiBib3JkZXItYmx1ZS01MDAgYmctYmx1ZS01MCBob3ZlcjpiZy1ibHVlLTUwJzogIW1lc3NhZ2UuZGF0YS5pc1JlYWQgfVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIm1lc3NhZ2UucGF0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUl0ZW0oaSlcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibm90aWZpY2F0aW9ucy1uYXYtbGluayBncmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCIhbWVzc2FnZS5kYXRhLmlzUmVhZCA/ICcgaG92ZXI6YmctYmx1ZS01MCcgOiAnYm9yZGVyLWIgYm9yZGVyLWdyYXktMTAwJ1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtdGhpbiB0cmFja2luZy10aWdodGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG1lc3NhZ2UuZGF0YS5jcmVhdGlvbkRhdGUgfCBkYXRlOiBcIkVFRSwgZCBNTU1NXCIgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtYm9sZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBtZXNzYWdlLmRhdGEudGV4dCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0zMiBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYW5pbWF0ZS1wdWxzZSB0ZXh0LXMgdGV4dC1ncmF5LTYwMFwiPkxvYWRpbmcuLi48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJwLTEgcm91bmRlZC1zbVwiPlxuICAgICAgPGEgW3JvdXRlckxpbmtdPVwiYWxsTm90aWZpY2F0aW9uc0xpbmshLnBhdGhcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJoZWFkZXItbm90aWZpY2F0aW9ucy1kcm9wZG93bi12aWV3LWFsbC1idXR0b25cIj57e2FsbE5vdGlmaWNhdGlvbnNMaW5rIS50ZXh0fX08L2J1dHRvbj5cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,133 +0,0 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { Icons } from '../../icons';
3
- import { MenuOption } from '../../types';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/router";
6
- import * as i2 from "../drop-down-menu/drop-down-menu.component";
7
- import * as i3 from "@angular/common";
8
- export class PagerComponent {
9
- constructor(router) {
10
- this.router = router;
11
- // BUSY STATE
12
- this.busy = false;
13
- // PAGING
14
- this.count = null;
15
- this.page = 1;
16
- // tslint:disable-next-line:no-input-rename
17
- this.pageSize = 20;
18
- // tslint:disable-next-line:no-input-rename
19
- this.pageSizeOptions = [
20
- new MenuOption('10', 10),
21
- new MenuOption('20', 20),
22
- new MenuOption('30', 30),
23
- new MenuOption('50', 50),
24
- new MenuOption('100', 100)
25
- ];
26
- this.pages = [];
27
- this.pageChanged = new EventEmitter();
28
- this.pageSizeChanged = new EventEmitter();
29
- this.canPreviousPage = false;
30
- this.canNextPage = false;
31
- // SORTING
32
- // tslint:disable-next-line:no-input-rename
33
- this.sortOptions = [];
34
- // tslint:disable-next-line:no-input-rename
35
- this.sort = null;
36
- // tslint:disable-next-line:no-input-rename
37
- this.sortdir = 'desc';
38
- this.sortChanged = new EventEmitter();
39
- this.sortdirChanged = new EventEmitter();
40
- this.sortdirIcon = Icons.SortDesc;
41
- }
42
- ngOnChanges(changes) {
43
- this.calcPages();
44
- }
45
- ngOnInit() {
46
- }
47
- calcPages() {
48
- this.pages = [];
49
- if (this.count && this.count > 0) {
50
- const pageCount = this.count / this.pageSize;
51
- for (let i = 0; i < pageCount; i++) {
52
- this.pages.push(new MenuOption(i + 1 + '', i + 1));
53
- }
54
- }
55
- this.canPreviousPage = this.page > 1;
56
- this.canNextPage = this.page < this.pages.length;
57
- }
58
- nextPage() {
59
- const next = this.page + 1;
60
- this.gotoPage(next);
61
- }
62
- previousPage() {
63
- const previous = this.page - 1;
64
- this.gotoPage(previous);
65
- }
66
- gotoPage(page) {
67
- this.page = page;
68
- this.pageChanged.emit(page);
69
- this.calcPages();
70
- }
71
- pageSizeOptionChanged(pageSize) {
72
- this.pageSizeChanged.emit(pageSize);
73
- this.calcPages();
74
- }
75
- pageOptionChanged(page) {
76
- this.pageChanged.emit(page);
77
- this.calcPages();
78
- }
79
- sortOptionChanged(sort) {
80
- this.sortChanged.emit(sort);
81
- }
82
- toggleSortdir() {
83
- let sortdir = 'desc';
84
- if (this.sortdir === 'desc') {
85
- sortdir = 'asc';
86
- this.sortdirIcon = Icons.SortAsc;
87
- }
88
- else {
89
- sortdir = 'desc';
90
- this.sortdirIcon = Icons.SortDesc;
91
- }
92
- this.sortdirChanged.emit(sortdir);
93
- }
94
- }
95
- PagerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PagerComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
96
- PagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: PagerComponent, selector: "lib-pager", inputs: { busy: "busy", count: "count", page: "page", pageSize: ["page-size", "pageSize"], pageSizeOptions: ["page-size-options", "pageSizeOptions"], sortOptions: ["sort-options", "sortOptions"], sort: "sort", sortdir: ["sort-dir", "sortdir"] }, outputs: { pageChanged: "pageChanged", pageSizeChanged: "pageSizeChanged", sortChanged: "sortChanged", sortdirChanged: "sortdirChanged" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"pager-container\">\n <div class=\"pager-container-inner\">\n <div class=\"inline-flex\" *ngIf=\"sortOptions && sortOptions.length > 0\">\n <lib-drop-down-menu [options]=\"sortOptions\" [selected]=\"sort\" (selectedChanged)=\"sortOptionChanged($event)\"></lib-drop-down-menu>\n <button (click)=\"toggleSortdir()\" [disabled]=\"!sort || busy\" class=\"pager-icon-button\">\n <span class=\"sr-only\">sort direction</span>\n <span class=\"inline-block relative\">\n <i [class]=\"sortdirIcon\"></i>\n </span>\n </button>\n </div>\n <div class=\"pager-pages-container\">\n <lib-drop-down-menu [options]=\"pageSizeOptions\" [selected]=\"pageSize\" (selectedChanged)=\"pageSizeOptionChanged($event)\"></lib-drop-down-menu>\n <div class=\"mx-2\" *ngIf=\"count !== null && count > pageSize\">\n <button [disabled]=\"!canPreviousPage || busy\" (click)=\"previousPage()\"\n class=\"pager-arrow-button-left\">\n <span class=\"sr-only\">Previous</span>\n <svg class=\"h-5 w-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z\" clip-rule=\"evenodd\" />\n </svg>\n </button>\n <button [disabled]=\"!canNextPage || busy\" (click)=\"nextPage()\"\n class=\"pager-arrow-button-right\">\n <span class=\"sr-only\">Next</span>\n <svg class=\"h-5 w-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z\" clip-rule=\"evenodd\" />\n </svg>\n </button>\n </div>\n <lib-drop-down-menu *ngIf=\"(pages && pages.length > 0) && (count !== null && count > pageSize)\" [options]=\"pages\" [selected]=\"page\" (selectedChanged)=\"pageOptionChanged($event)\"></lib-drop-down-menu>\n </div>\n </div>\n</div>\n", components: [{ type: i2.DropDownMenuComponent, selector: "lib-drop-down-menu", inputs: ["options", "selected", "multiple", "placeholder"], outputs: ["selectedChange", "selectedChanged"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
97
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PagerComponent, decorators: [{
98
- type: Component,
99
- args: [{
100
- selector: 'lib-pager',
101
- templateUrl: './pager.component.html'
102
- }]
103
- }], ctorParameters: function () { return [{ type: i1.Router }]; }, propDecorators: { busy: [{
104
- type: Input
105
- }], count: [{
106
- type: Input
107
- }], page: [{
108
- type: Input
109
- }], pageSize: [{
110
- type: Input,
111
- args: ['page-size']
112
- }], pageSizeOptions: [{
113
- type: Input,
114
- args: ['page-size-options']
115
- }], pageChanged: [{
116
- type: Output
117
- }], pageSizeChanged: [{
118
- type: Output
119
- }], sortOptions: [{
120
- type: Input,
121
- args: ['sort-options']
122
- }], sort: [{
123
- type: Input,
124
- args: ['sort']
125
- }], sortdir: [{
126
- type: Input,
127
- args: ['sort-dir']
128
- }], sortChanged: [{
129
- type: Output
130
- }], sortdirChanged: [{
131
- type: Output
132
- }] } });
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL3BhZ2VyL3BhZ2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9wYWdlci9wYWdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFekcsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7OztBQU16QyxNQUFNLE9BQU8sY0FBYztJQWlDekIsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFoQ2xDLGFBQWE7UUFDSixTQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLFNBQVM7UUFDQSxVQUFLLEdBQWtCLElBQUksQ0FBQztRQUM1QixTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLDJDQUEyQztRQUN2QixhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2xDLDJDQUEyQztRQUNmLG9CQUFlLEdBQWlCO1lBQzFELElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7WUFDeEIsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUN4QixJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7WUFDeEIsSUFBSSxVQUFVLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQztTQUMzQixDQUFDO1FBQ0ssVUFBSyxHQUFpQixFQUFFLENBQUM7UUFD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LE9BQU8sQ0FBQztTQUNsQzthQUFNO1lBQ0wsT0FBTyxHQUFHLE1BQU0sQ0FBQztZQUNqQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7U0FDbkM7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwQyxDQUFDOzs0R0E5RlUsY0FBYztnR0FBZCxjQUFjLHVjQ1QzQixrcUVBaUNBOzRGRHhCYSxjQUFjO2tCQUoxQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxXQUFXO29CQUNyQixXQUFXLEVBQUUsd0JBQXdCO2lCQUN0Qzs2RkFHVSxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFFYyxRQUFRO3NCQUEzQixLQUFLO3VCQUFDLFdBQVc7Z0JBRVUsZUFBZTtzQkFBMUMsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBUWhCLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFNZ0IsV0FBVztzQkFBakMsS0FBSzt1QkFBQyxjQUFjO2dCQUVOLElBQUk7c0JBQWxCLEtBQUs7dUJBQUMsTUFBTTtnQkFFTSxPQUFPO3NCQUF6QixLQUFLO3VCQUFDLFVBQVU7Z0JBQ1AsV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSWNvbnMgfSBmcm9tICcuLi8uLi9pY29ucyc7XG5pbXBvcnQgeyBNZW51T3B0aW9uIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItcGFnZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFnZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAvLyBCVVNZIFNUQVRFXG4gIEBJbnB1dCgpIGJ1c3kgPSBmYWxzZTtcbiAgLy8gUEFHSU5HXG4gIEBJbnB1dCgpIGNvdW50OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgcGFnZSA9IDE7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcbiAgQElucHV0KCdwYWdlLXNpemUnKSBwYWdlU2l6ZSA9IDIwO1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXG4gIEBJbnB1dCgncGFnZS1zaXplLW9wdGlvbnMnKSBwYWdlU2l6ZU9wdGlvbnM6IE1lbnVPcHRpb25bXSA9IFtcbiAgICBuZXcgTWVudU9wdGlvbignMTAnLCAxMCksXG4gICAgbmV3IE1lbnVPcHRpb24oJzIwJywgMjApLFxuICAgIG5ldyBNZW51T3B0aW9uKCczMCcsIDMwKSxcbiAgICBuZXcgTWVudU9wdGlvbignNTAnLCA1MCksXG4gICAgbmV3IE1lbnVPcHRpb24oJzEwMCcsIDEwMClcbiAgXTtcbiAgcHVibGljIHBhZ2VzOiBNZW51T3B0aW9uW10gPSBbXTtcbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICBAT3V0cHV0KCkgcGFnZVNpemVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICBwdWJsaWMgY2FuUHJldmlvdXNQYWdlID0gZmFsc2U7XG4gIHB1YmxpYyBjYW5OZXh0UGFnZSA9IGZhbHNlO1xuXG4gIC8vIFNPUlRJTkdcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ3NvcnQtb3B0aW9ucycpIHNvcnRPcHRpb25zOiBNZW51T3B0aW9uW10gPSBbXTtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ3NvcnQnKSBzb3J0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ3NvcnQtZGlyJykgc29ydGRpcjogc3RyaW5nIHwgbnVsbCA9ICdkZXNjJztcbiAgQE91dHB1dCgpIHNvcnRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgc29ydGRpckNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIHB1YmxpYyBzb3J0ZGlySWNvbiA9IEljb25zLlNvcnREZXNjO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHsgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLmNhbGNQYWdlcygpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gIH1cblxuICBwcml2YXRlIGNhbGNQYWdlcygpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2VzID0gW107XG4gICAgaWYgKHRoaXMuY291bnQgJiYgdGhpcy5jb3VudCA+IDApIHtcbiAgICAgIGNvbnN0IHBhZ2VDb3VudCA9IHRoaXMuY291bnQgLyB0aGlzLnBhZ2VTaXplO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYWdlQ291bnQ7IGkrKykge1xuICAgICAgICB0aGlzLnBhZ2VzLnB1c2gobmV3IE1lbnVPcHRpb24oaSArIDEgKyAnJywgaSArIDEpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jYW5QcmV2aW91c1BhZ2UgPSB0aGlzLnBhZ2UgPiAxO1xuICAgIHRoaXMuY2FuTmV4dFBhZ2UgPSB0aGlzLnBhZ2UgPCB0aGlzLnBhZ2VzLmxlbmd0aDtcbiAgfVxuXG4gIHB1YmxpYyBuZXh0UGFnZSgpOiB2b2lkIHtcbiAgICBjb25zdCBuZXh0ID0gdGhpcy5wYWdlICsgMTtcbiAgICB0aGlzLmdvdG9QYWdlKG5leHQpO1xuICB9XG5cbiAgcHVibGljIHByZXZpb3VzUGFnZSgpOiB2b2lkIHtcbiAgICBjb25zdCBwcmV2aW91cyA9IHRoaXMucGFnZSAtIDE7XG4gICAgdGhpcy5nb3RvUGFnZShwcmV2aW91cyk7XG4gIH1cblxuICBwdWJsaWMgZ290b1BhZ2UocGFnZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5wYWdlID0gcGFnZTtcbiAgICB0aGlzLnBhZ2VDaGFuZ2VkLmVtaXQocGFnZSk7XG4gICAgdGhpcy5jYWxjUGFnZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBwYWdlU2l6ZU9wdGlvbkNoYW5nZWQocGFnZVNpemU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucGFnZVNpemVDaGFuZ2VkLmVtaXQocGFnZVNpemUpO1xuICAgIHRoaXMuY2FsY1BhZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgcGFnZU9wdGlvbkNoYW5nZWQocGFnZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KHBhZ2UpO1xuICAgIHRoaXMuY2FsY1BhZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgc29ydE9wdGlvbkNoYW5nZWQoc29ydDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zb3J0Q2hhbmdlZC5lbWl0KHNvcnQpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVNvcnRkaXIoKTogdm9pZCB7XG4gICAgbGV0IHNvcnRkaXIgPSAnZGVzYyc7XG4gICAgaWYgKHRoaXMuc29ydGRpciA9PT0gJ2Rlc2MnKSB7XG4gICAgICBzb3J0ZGlyID0gJ2FzYyc7XG4gICAgICB0aGlzLnNvcnRkaXJJY29uID0gSWNvbnMuU29ydEFzYztcbiAgICB9IGVsc2Uge1xuICAgICAgc29ydGRpciA9ICdkZXNjJztcbiAgICAgIHRoaXMuc29ydGRpckljb24gPSBJY29ucy5Tb3J0RGVzYztcbiAgICB9XG4gICAgdGhpcy5zb3J0ZGlyQ2hhbmdlZC5lbWl0KHNvcnRkaXIpO1xuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJwYWdlci1jb250YWluZXJcIj5cbiAgPGRpdiBjbGFzcz1cInBhZ2VyLWNvbnRhaW5lci1pbm5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJpbmxpbmUtZmxleFwiICpuZ0lmPVwic29ydE9wdGlvbnMgJiYgc29ydE9wdGlvbnMubGVuZ3RoID4gMFwiPlxuICAgICAgPGxpYi1kcm9wLWRvd24tbWVudSBbb3B0aW9uc109XCJzb3J0T3B0aW9uc1wiIFtzZWxlY3RlZF09XCJzb3J0XCIgKHNlbGVjdGVkQ2hhbmdlZCk9XCJzb3J0T3B0aW9uQ2hhbmdlZCgkZXZlbnQpXCI+PC9saWItZHJvcC1kb3duLW1lbnU+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJ0b2dnbGVTb3J0ZGlyKClcIiBbZGlzYWJsZWRdPVwiIXNvcnQgfHwgYnVzeVwiIGNsYXNzPVwicGFnZXItaWNvbi1idXR0b25cIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+c29ydCBkaXJlY3Rpb248L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaW5saW5lLWJsb2NrIHJlbGF0aXZlXCI+XG4gICAgICAgICAgPGkgW2NsYXNzXT1cInNvcnRkaXJJY29uXCI+PC9pPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicGFnZXItcGFnZXMtY29udGFpbmVyXCI+XG4gICAgICA8bGliLWRyb3AtZG93bi1tZW51IFtvcHRpb25zXT1cInBhZ2VTaXplT3B0aW9uc1wiIFtzZWxlY3RlZF09XCJwYWdlU2l6ZVwiIChzZWxlY3RlZENoYW5nZWQpPVwicGFnZVNpemVPcHRpb25DaGFuZ2VkKCRldmVudClcIj48L2xpYi1kcm9wLWRvd24tbWVudT5cbiAgICAgIDxkaXYgY2xhc3M9XCJteC0yXCIgICpuZ0lmPVwiY291bnQgIT09IG51bGwgJiYgY291bnQgPiBwYWdlU2l6ZVwiPlxuICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCIhY2FuUHJldmlvdXNQYWdlIHx8IGJ1c3lcIiAgKGNsaWNrKT1cInByZXZpb3VzUGFnZSgpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInBhZ2VyLWFycm93LWJ1dHRvbi1sZWZ0XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+UHJldmlvdXM8L3NwYW4+XG4gICAgICAgICAgPHN2ZyBjbGFzcz1cImgtNSB3LTVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTEyLjcwNyA1LjI5M2ExIDEgMCAwMTAgMS40MTRMOS40MTQgMTBsMy4yOTMgMy4yOTNhMSAxIDAgMDEtMS40MTQgMS40MTRsLTQtNGExIDEgMCAwMTAtMS40MTRsNC00YTEgMSAwIDAxMS40MTQgMHpcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cIiFjYW5OZXh0UGFnZSB8fCBidXN5XCIgIChjbGljayk9XCJuZXh0UGFnZSgpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInBhZ2VyLWFycm93LWJ1dHRvbi1yaWdodFwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPk5leHQ8L3NwYW4+XG4gICAgICAgICAgPHN2ZyBjbGFzcz1cImgtNSB3LTVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTcuMjkzIDE0LjcwN2ExIDEgMCAwMTAtMS40MTRMMTAuNTg2IDEwIDcuMjkzIDYuNzA3YTEgMSAwIDAxMS40MTQtMS40MTRsNCA0YTEgMSAwIDAxMCAxLjQxNGwtNCA0YTEgMSAwIDAxLTEuNDE0IDB6XCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIC8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8bGliLWRyb3AtZG93bi1tZW51ICpuZ0lmPVwiKHBhZ2VzICYmIHBhZ2VzLmxlbmd0aCA+IDApICYmIChjb3VudCAhPT0gbnVsbCAmJiBjb3VudCA+IHBhZ2VTaXplKVwiIFtvcHRpb25zXT1cInBhZ2VzXCIgW3NlbGVjdGVkXT1cInBhZ2VcIiAoc2VsZWN0ZWRDaGFuZ2VkKT1cInBhZ2VPcHRpb25DaGFuZ2VkKCRldmVudClcIj48L2xpYi1kcm9wLWRvd24tbWVudT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==