@indice/ng-components 0.2.139 → 0.2.141
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.
- package/README.md +4 -4
- package/{src/assets/styles/indice-ng-icons-inline.css → _styles.css} +3501 -2286
- package/esm2020/indice-ng-components.mjs +5 -0
- package/esm2020/lib/controls/avatar-initials/avatar-initials.component.mjs +48 -0
- package/esm2020/lib/controls/collapsible-panel/collapsible-panel.component.mjs +20 -0
- package/esm2020/lib/controls/date-picker/date-picker.component.mjs +260 -0
- package/esm2020/lib/controls/drop-down-menu/drop-down-menu.component.mjs +68 -0
- package/esm2020/lib/controls/kpi-tile/kpi-tile.component.mjs +36 -0
- package/esm2020/lib/controls/list-view/list-column.component.mjs +25 -0
- package/esm2020/lib/controls/list-view/list-details-section.component.mjs +17 -0
- package/esm2020/lib/controls/list-view/list-tile.component.mjs +17 -0
- package/esm2020/lib/controls/list-view/list-view-empty-state.component.mjs +29 -0
- package/esm2020/lib/controls/list-view/list-view.component.mjs +183 -0
- package/esm2020/lib/controls/nav-links-list/nav-links-list.component.mjs +37 -0
- package/esm2020/lib/controls/notifications-indicator/notifications-indicator.component.mjs +77 -0
- package/esm2020/lib/controls/pager/pager.component.mjs +130 -0
- package/esm2020/lib/controls/side-pane/side-pane.component.mjs +72 -0
- package/esm2020/lib/controls/skeleton-loader/skeleton-loader.component.mjs +25 -0
- package/esm2020/lib/controls/toaster/toaster-container.component.mjs +28 -0
- package/esm2020/lib/controls/toaster/toaster.component.mjs +31 -0
- package/esm2020/lib/controls/toggle/toggle.component.mjs +64 -0
- package/esm2020/lib/directives/click-outside.directive.mjs +189 -0
- package/esm2020/lib/directives/dynamic-component-host.directive.mjs +17 -0
- package/esm2020/lib/helpers/base-list.component.mjs +181 -0
- package/esm2020/lib/icons.mjs +32 -0
- package/esm2020/lib/layouts/shell/shell-footer/shell-footer.component.mjs +19 -0
- package/esm2020/lib/layouts/shell/shell-header/shell-header.component.mjs +135 -0
- package/esm2020/lib/layouts/shell/shell-layout/shell-layout.component.mjs +101 -0
- package/esm2020/lib/layouts/views/form-layout/form-layout.component.mjs +80 -0
- package/esm2020/lib/layouts/views/model-view-layout/model-view-layout.component.mjs +49 -0
- package/esm2020/lib/layouts/views/side-view-layout/side-view-layout.component.mjs +98 -0
- package/esm2020/lib/layouts/views/view-layout/view-layout.component.mjs +104 -0
- package/esm2020/lib/ng-components.module.mjs +221 -0
- package/esm2020/lib/pages/auth/auth-callback/auth-callback.component.mjs +30 -0
- package/esm2020/lib/pages/auth/auth-renew/auth-renew.component.mjs +31 -0
- package/esm2020/lib/pages/auth/logged-out/logged-out.component.mjs +28 -0
- package/esm2020/lib/pages/http-status/error/error.component.mjs +17 -0
- package/esm2020/lib/pages/http-status/page-not-found/page-not-found.component.mjs +15 -0
- package/esm2020/lib/pages/http-status/unauthorized/unauthorized.component.mjs +14 -0
- package/esm2020/lib/pipes/address.pipe.mjs +21 -0
- package/esm2020/lib/pipes/duration-format.pipe.mjs +64 -0
- package/esm2020/lib/services/component-loader/component-loader-options.class.mjs +8 -0
- package/esm2020/lib/services/component-loader/component-loader.class.mjs +188 -0
- package/esm2020/lib/services/component-loader/component-loader.factory.mjs +32 -0
- package/esm2020/lib/services/component-loader/content-ref.class.mjs +13 -0
- package/esm2020/lib/services/modal-service/modal-backdrop-component.mjs +44 -0
- package/esm2020/lib/services/modal-service/modal-container-component.mjs +126 -0
- package/esm2020/lib/services/modal-service/modal-options.class.mjs +35 -0
- package/esm2020/lib/services/modal-service/modal-service.mjs +219 -0
- package/esm2020/lib/services/modal-service/modal-styles.class.mjs +11 -0
- package/esm2020/lib/services/modal-service/modal.class.mjs +27 -0
- package/esm2020/lib/services/toaster.service.mjs +24 -0
- package/esm2020/lib/tokens.mjs +5 -0
- package/esm2020/lib/types.mjs +117 -0
- package/esm2020/public-api.mjs +53 -0
- package/fesm2015/indice-ng-components.mjs +3268 -0
- package/fesm2015/indice-ng-components.mjs.map +1 -0
- package/fesm2020/indice-ng-components.mjs +3225 -0
- package/fesm2020/indice-ng-components.mjs.map +1 -0
- package/indice-ng-components.d.ts +5 -0
- package/lib/controls/avatar-initials/avatar-initials.component.d.ts +14 -0
- package/lib/controls/collapsible-panel/collapsible-panel.component.d.ts +10 -0
- package/lib/controls/date-picker/date-picker.component.d.ts +48 -0
- package/lib/controls/drop-down-menu/drop-down-menu.component.d.ts +25 -0
- package/lib/controls/kpi-tile/kpi-tile.component.d.ts +13 -0
- package/lib/controls/list-view/list-column.component.d.ts +9 -0
- package/lib/controls/list-view/list-details-section.component.d.ts +7 -0
- package/lib/controls/list-view/list-tile.component.d.ts +7 -0
- package/lib/controls/list-view/list-view-empty-state.component.d.ts +11 -0
- package/lib/controls/list-view/list-view.component.d.ts +55 -0
- package/lib/controls/nav-links-list/nav-links-list.component.d.ts +15 -0
- package/lib/controls/notifications-indicator/notifications-indicator.component.d.ts +23 -0
- package/lib/controls/pager/pager.component.d.ts +36 -0
- package/lib/controls/side-pane/side-pane.component.d.ts +18 -0
- package/lib/controls/skeleton-loader/skeleton-loader.component.d.ts +11 -0
- package/lib/controls/toaster/toaster-container.component.d.ts +13 -0
- package/lib/controls/toaster/toaster.component.d.ts +15 -0
- package/lib/controls/toggle/toggle.component.d.ts +19 -0
- package/lib/directives/click-outside.directive.d.ts +40 -0
- package/lib/directives/dynamic-component-host.directive.d.ts +9 -0
- package/lib/helpers/base-list.component.d.ts +42 -0
- package/lib/icons.d.ts +30 -0
- package/lib/layouts/shell/shell-footer/shell-footer.component.d.ts +8 -0
- package/lib/layouts/shell/shell-header/shell-header.component.d.ts +41 -0
- package/lib/layouts/shell/shell-layout/shell-layout.component.d.ts +28 -0
- package/lib/layouts/views/form-layout/form-layout.component.d.ts +24 -0
- package/lib/layouts/views/model-view-layout/model-view-layout.component.d.ts +25 -0
- package/lib/layouts/views/side-view-layout/side-view-layout.component.d.ts +28 -0
- package/lib/layouts/views/view-layout/view-layout.component.d.ts +31 -0
- package/lib/ng-components.module.d.ts +49 -0
- package/lib/pages/auth/auth-callback/auth-callback.component.d.ts +13 -0
- package/lib/pages/auth/auth-renew/auth-renew.component.d.ts +12 -0
- package/lib/pages/auth/logged-out/logged-out.component.d.ts +12 -0
- package/lib/pages/http-status/error/error.component.d.ts +8 -0
- package/lib/pages/http-status/page-not-found/page-not-found.component.d.ts +8 -0
- package/lib/pages/http-status/unauthorized/unauthorized.component.d.ts +8 -0
- package/lib/pipes/address.pipe.d.ts +8 -0
- package/lib/pipes/duration-format.pipe.d.ts +8 -0
- package/lib/services/component-loader/component-loader-options.class.d.ts +30 -0
- package/lib/services/component-loader/component-loader.class.d.ts +92 -0
- package/lib/services/component-loader/component-loader.factory.d.ts +24 -0
- package/lib/services/component-loader/content-ref.class.d.ts +12 -0
- package/lib/services/modal-service/modal-backdrop-component.d.ts +20 -0
- package/lib/services/modal-service/modal-container-component.d.ts +33 -0
- package/lib/services/modal-service/modal-options.class.d.ts +81 -0
- package/lib/services/modal-service/modal-service.d.ts +58 -0
- package/lib/services/modal-service/modal-styles.class.d.ts +10 -0
- package/lib/services/modal-service/modal.class.d.ts +43 -0
- package/lib/services/toaster.service.d.ts +11 -0
- package/lib/tokens.d.ts +5 -0
- package/lib/types.d.ts +153 -0
- package/{src/assets/styles/modal.css → modal.css} +157 -157
- package/package.json +24 -20
- package/{src/public-api.ts → public-api.d.ts} +43 -60
- package/CHANGELOG.md +0 -1
- package/karma.conf.js +0 -44
- package/ng-package.json +0 -10
- package/scripts/css-bundle.ts +0 -33
- package/src/_styles.css +0 -36
- package/src/_tests/utilities.service.spec.ts +0 -16
- package/src/assets/styles/avatar-initials.css +0 -37
- package/src/assets/styles/base.css +0 -46
- package/src/assets/styles/cards.css +0 -71
- package/src/assets/styles/collapsible-panel.css +0 -25
- package/src/assets/styles/components.css +0 -34
- package/src/assets/styles/date-picker.component.css +0 -0
- package/src/assets/styles/drop-down-menu.css +0 -50
- package/src/assets/styles/form-layout.css +0 -49
- package/src/assets/styles/list-view-empty-state.css +0 -0
- package/src/assets/styles/list-view.css +0 -64
- package/src/assets/styles/model-view-layout.css +0 -45
- package/src/assets/styles/nav-links.css +0 -35
- package/src/assets/styles/notifications-indicator.component.css +0 -43
- package/src/assets/styles/pager.css +0 -29
- package/src/assets/styles/shell-layout.css +0 -232
- package/src/assets/styles/side-pane.css +0 -46
- package/src/assets/styles/side-view-layout.css +0 -58
- package/src/assets/styles/toast.css +0 -72
- package/src/assets/styles/toggle.css +0 -26
- package/src/assets/styles/view-layout.css +0 -58
- package/src/lib/controls/avatar-initials/avatar-initials.component.html +0 -3
- package/src/lib/controls/avatar-initials/avatar-initials.component.ts +0 -47
- package/src/lib/controls/collapsible-panel/collapsible-panel.component.html +0 -15
- package/src/lib/controls/collapsible-panel/collapsible-panel.component.ts +0 -16
- package/src/lib/controls/date-picker/date-picker.component.html +0 -133
- package/src/lib/controls/date-picker/date-picker.component.ts +0 -258
- package/src/lib/controls/drop-down-menu/drop-down-menu.component.html +0 -61
- package/src/lib/controls/drop-down-menu/drop-down-menu.component.ts +0 -59
- package/src/lib/controls/kpi-tile/kpi-tile.component.html +0 -18
- package/src/lib/controls/kpi-tile/kpi-tile.component.ts +0 -26
- package/src/lib/controls/list-view/list-column.component.ts +0 -10
- package/src/lib/controls/list-view/list-details-section.component.ts +0 -8
- package/src/lib/controls/list-view/list-tile.component.ts +0 -8
- package/src/lib/controls/list-view/list-view-empty-state.component.html +0 -20
- package/src/lib/controls/list-view/list-view-empty-state.component.ts +0 -19
- package/src/lib/controls/list-view/list-view.component.html +0 -151
- package/src/lib/controls/list-view/list-view.component.ts +0 -146
- package/src/lib/controls/nav-links-list/nav-links-list.component.html +0 -27
- package/src/lib/controls/nav-links-list/nav-links-list.component.ts +0 -25
- package/src/lib/controls/notifications-indicator/notifications-indicator.component.html +0 -78
- package/src/lib/controls/notifications-indicator/notifications-indicator.component.ts +0 -75
- package/src/lib/controls/pager/pager.component.html +0 -33
- package/src/lib/controls/pager/pager.component.ts +0 -106
- package/src/lib/controls/side-pane/side-pane.component.html +0 -10
- package/src/lib/controls/side-pane/side-pane.component.ts +0 -59
- package/src/lib/controls/skeleton-loader/skeleton-loader.component.html +0 -112
- package/src/lib/controls/skeleton-loader/skeleton-loader.component.ts +0 -20
- package/src/lib/controls/toaster/toaster-container.component.html +0 -1
- package/src/lib/controls/toaster/toaster-container.component.ts +0 -27
- package/src/lib/controls/toaster/toaster.component.html +0 -103
- package/src/lib/controls/toaster/toaster.component.ts +0 -26
- package/src/lib/controls/toggle/toggle.component.html +0 -15
- package/src/lib/controls/toggle/toggle.component.ts +0 -58
- package/src/lib/directives/click-outside.directive.ts +0 -196
- package/src/lib/directives/dynamic-component-host.directive.ts +0 -7
- package/src/lib/directives/screen-size.directive.ts +0 -67
- package/src/lib/helpers/base-list.component.ts +0 -204
- package/src/lib/icons.ts +0 -39
- package/src/lib/layouts/shell/shell-footer/shell-footer.component.html +0 -71
- package/src/lib/layouts/shell/shell-footer/shell-footer.component.ts +0 -14
- package/src/lib/layouts/shell/shell-header/shell-header.component.html +0 -199
- package/src/lib/layouts/shell/shell-header/shell-header.component.ts +0 -111
- package/src/lib/layouts/shell/shell-layout/shell-layout.component.html +0 -36
- package/src/lib/layouts/shell/shell-layout/shell-layout.component.ts +0 -91
- package/src/lib/layouts/views/form-layout/form-layout.component.html +0 -67
- package/src/lib/layouts/views/form-layout/form-layout.component.ts +0 -66
- package/src/lib/layouts/views/model-view-layout/model-view-layout.component.html +0 -43
- package/src/lib/layouts/views/model-view-layout/model-view-layout.component.ts +0 -37
- package/src/lib/layouts/views/side-view-layout/side-view-layout.component.html +0 -36
- package/src/lib/layouts/views/side-view-layout/side-view-layout.component.ts +0 -67
- package/src/lib/layouts/views/view-layout/view-layout.component.html +0 -68
- package/src/lib/layouts/views/view-layout/view-layout.component.ts +0 -82
- package/src/lib/ng-components.module.ts +0 -135
- package/src/lib/pages/auth/auth-callback/auth-callback.component.html +0 -1
- package/src/lib/pages/auth/auth-callback/auth-callback.component.ts +0 -22
- package/src/lib/pages/auth/auth-renew/auth-renew.component.ts +0 -20
- package/src/lib/pages/auth/logged-out/logged-out.component.html +0 -1
- package/src/lib/pages/auth/logged-out/logged-out.component.ts +0 -22
- package/src/lib/pages/http-status/error/error.component.html +0 -13
- package/src/lib/pages/http-status/error/error.component.ts +0 -13
- package/src/lib/pages/http-status/page-not-found/page-not-found.component.html +0 -14
- package/src/lib/pages/http-status/page-not-found/page-not-found.component.ts +0 -14
- package/src/lib/pages/http-status/unauthorized/unauthorized.component.html +0 -15
- package/src/lib/pages/http-status/unauthorized/unauthorized.component.ts +0 -11
- package/src/lib/pipes/address.pipe.ts +0 -17
- package/src/lib/pipes/duration-format.pipe.ts +0 -67
- package/src/lib/services/component-loader/component-loader-options.class.ts +0 -31
- package/src/lib/services/component-loader/component-loader.class.ts +0 -226
- package/src/lib/services/component-loader/component-loader.factory.ts +0 -27
- package/src/lib/services/component-loader/content-ref.class.ts +0 -10
- package/src/lib/services/interceptors/bad-request.interceptor.ts +0 -34
- package/src/lib/services/modal-service/modal-backdrop-component.ts +0 -40
- package/src/lib/services/modal-service/modal-container-component.ts +0 -125
- package/src/lib/services/modal-service/modal-options.class.ts +0 -92
- package/src/lib/services/modal-service/modal-service.ts +0 -237
- package/src/lib/services/modal-service/modal-styles.class.ts +0 -11
- package/src/lib/services/modal-service/modal.class.ts +0 -45
- package/src/lib/services/shell-state-service.service.ts +0 -10
- package/src/lib/services/toaster.service.ts +0 -23
- package/src/lib/services/utilities.service.ts +0 -40
- package/src/lib/tokens.ts +0 -6
- package/src/lib/types.ts +0 -210
- package/src/test.ts +0 -28
- package/tsconfig.lib.json +0 -26
- package/tsconfig.lib.prod.json +0 -10
- package/tsconfig.spec.json +0 -17
- package/tslint.json +0 -17
- package/webpack.config.js +0 -36
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
<div class="px-2">
|
|
2
|
-
|
|
3
|
-
<lib-pager *ngIf="showPager"
|
|
4
|
-
[page]="page"
|
|
5
|
-
[page-size]="pageSize"
|
|
6
|
-
[count]="count"
|
|
7
|
-
[sort-options]="sortOptions"
|
|
8
|
-
[sort]="sort"
|
|
9
|
-
[sort-dir]="sortdir"
|
|
10
|
-
[busy]="busy"
|
|
11
|
-
(pageChanged)="emitPageChanged($event)"
|
|
12
|
-
(pageSizeChanged)="emitPageSizeChanged($event)"
|
|
13
|
-
(sortChanged)="emitSortChanged($event)"
|
|
14
|
-
(sortdirChanged)="emitSortdirChanged($event)">
|
|
15
|
-
</lib-pager>
|
|
16
|
-
</div>
|
|
17
|
-
|
|
18
|
-
<ng-container *ngIf="!busy && items && items.length === 0">
|
|
19
|
-
<div class="cards-deck-1">
|
|
20
|
-
<lib-list-view-empty-state></lib-list-view-empty-state>
|
|
21
|
-
</div>
|
|
22
|
-
</ng-container>
|
|
23
|
-
|
|
24
|
-
<ng-container [ngSwitch]="view">
|
|
25
|
-
|
|
26
|
-
<ng-container *ngSwitchCase="'tiles'">
|
|
27
|
-
<div [class]="tilesDeckClass">
|
|
28
|
-
|
|
29
|
-
<lib-skeleton-loader *ngIf="busy" [count]="5" [type]="'tiles'"></lib-skeleton-loader>
|
|
30
|
-
|
|
31
|
-
<ng-container *ngIf="items && items.length > 0">
|
|
32
|
-
<ng-container *ngFor="let item of items">
|
|
33
|
-
<span *ngIf="!tileTemplate || !tileTemplate.template">template missing..</span>
|
|
34
|
-
<ng-template [ngTemplateOutlet]="tileTemplate.template"
|
|
35
|
-
[ngTemplateOutletContext]="{ $implicit: item }"></ng-template>
|
|
36
|
-
</ng-container>
|
|
37
|
-
</ng-container>
|
|
38
|
-
|
|
39
|
-
</div>
|
|
40
|
-
</ng-container>
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
<!-- *ngSwitchCase="'gallery'" -->
|
|
44
|
-
<ng-container *ngSwitchCase="'gallery'">
|
|
45
|
-
<ul role="list" [class]="tilesDeckClass">
|
|
46
|
-
|
|
47
|
-
<lib-skeleton-loader *ngIf="busy" [count]="5" [type]="'tiles'"></lib-skeleton-loader>
|
|
48
|
-
|
|
49
|
-
<ng-container *ngIf="!busy && items && items.length > 0">
|
|
50
|
-
<ng-container *ngFor="let item of items">
|
|
51
|
-
<span *ngIf="!tileTemplate || !tileTemplate.template">template missing..</span>
|
|
52
|
-
<ng-template [ngTemplateOutlet]="tileTemplate.template"
|
|
53
|
-
[ngTemplateOutletContext]="{ $implicit: item }"></ng-template>
|
|
54
|
-
</ng-container>
|
|
55
|
-
</ng-container>
|
|
56
|
-
</ul>
|
|
57
|
-
</ng-container>
|
|
58
|
-
|
|
59
|
-
<!-- *ngSwitchCase="'table'" -->
|
|
60
|
-
<ng-container *ngSwitchDefault>
|
|
61
|
-
|
|
62
|
-
<div class="list-view-container">
|
|
63
|
-
<div class="list-view-container-inner">
|
|
64
|
-
<table class="list-view-table">
|
|
65
|
-
<thead class="list-view-thead">
|
|
66
|
-
<tr>
|
|
67
|
-
<ng-container *ngIf="detailsSectionSupported">
|
|
68
|
-
<th class="list-view-th-details"></th>
|
|
69
|
-
</ng-container>
|
|
70
|
-
<ng-container *ngFor="let col of columns">
|
|
71
|
-
<th scope="col"
|
|
72
|
-
[class]="col.fullWidth ? fullWidthTHClass : 'list-view-th'">
|
|
73
|
-
{{col.title}}
|
|
74
|
-
</th>
|
|
75
|
-
</ng-container>
|
|
76
|
-
</tr>
|
|
77
|
-
</thead>
|
|
78
|
-
<tbody class="list-view-tbody" *ngIf="busy">
|
|
79
|
-
<ng-container *ngFor="let item of loaderItems;let i=index">
|
|
80
|
-
<tr class="list-view-tr">
|
|
81
|
-
<ng-container *ngIf="detailsSectionSupported">
|
|
82
|
-
<td class="list-view-td-details"
|
|
83
|
-
*ngIf="detailsSectionPropertyCount !== null ? item[detailsSectionPropertyCount] !== 0 : true; else hiddenDetailsButton">
|
|
84
|
-
<button disabled
|
|
85
|
-
type="button"
|
|
86
|
-
class="expand-collapse-button">
|
|
87
|
-
<!-- Heroicon name: solid/plus -->
|
|
88
|
-
<i [class]="item.detailsExpanded ? collapseIcon : expandIcon"></i>
|
|
89
|
-
</button>
|
|
90
|
-
</td>
|
|
91
|
-
<ng-template #hiddenDetailsButton>
|
|
92
|
-
<td class="list-view-td-details"></td>
|
|
93
|
-
</ng-template>
|
|
94
|
-
</ng-container>
|
|
95
|
-
<td *ngFor="let col of columns"
|
|
96
|
-
[class]="col.fullWidth ? fullWidthTDClass : 'list-view-td'">
|
|
97
|
-
<div class="w-full animate-pulse h-8 bg-gray-200 rounded"></div>
|
|
98
|
-
</td>
|
|
99
|
-
</tr>
|
|
100
|
-
<ng-container *ngIf="detailsSectionSupported">
|
|
101
|
-
<tr *ngIf="item.detailsExpanded">
|
|
102
|
-
<td [colSpan]="columns.length + 1"
|
|
103
|
-
class="list-view-td bg-gray-100">
|
|
104
|
-
<ng-template [ngTemplateOutlet]="detailsTemplate.template"
|
|
105
|
-
[ngTemplateOutletContext]="{ $implicit: item }"></ng-template>
|
|
106
|
-
</td>
|
|
107
|
-
</tr>
|
|
108
|
-
</ng-container>
|
|
109
|
-
</ng-container>
|
|
110
|
-
</tbody>
|
|
111
|
-
<tbody class="list-view-tbody" *ngIf="!busy">
|
|
112
|
-
<ng-container *ngFor="let item of items;let i=index">
|
|
113
|
-
<tr class="list-view-tr">
|
|
114
|
-
<ng-container *ngIf="detailsSectionSupported">
|
|
115
|
-
<td class="list-view-td-details"
|
|
116
|
-
*ngIf="detailsSectionPropertyCount !== null ? item[detailsSectionPropertyCount] !== 0 : true; else hiddenDetailsButton">
|
|
117
|
-
<button (click)="toggleDetails(item)"
|
|
118
|
-
type="button"
|
|
119
|
-
class="expand-collapse-button">
|
|
120
|
-
<!-- Heroicon name: solid/plus -->
|
|
121
|
-
<i [class]="item.detailsExpanded ? collapseIcon : expandIcon"></i>
|
|
122
|
-
</button>
|
|
123
|
-
</td>
|
|
124
|
-
<ng-template #hiddenDetailsButton>
|
|
125
|
-
<td class="list-view-td-details"></td>
|
|
126
|
-
</ng-template>
|
|
127
|
-
</ng-container>
|
|
128
|
-
<td *ngFor="let col of columns"
|
|
129
|
-
[class]="col.fullWidth ? fullWidthTDClass : 'list-view-td'">
|
|
130
|
-
<ng-template [ngTemplateOutlet]="col.template"
|
|
131
|
-
[ngTemplateOutletContext]="{ $implicit: item }"></ng-template>
|
|
132
|
-
</td>
|
|
133
|
-
</tr>
|
|
134
|
-
<ng-container *ngIf="detailsSectionSupported">
|
|
135
|
-
<tr *ngIf="item.detailsExpanded">
|
|
136
|
-
<td [colSpan]="columns.length + 1"
|
|
137
|
-
class="list-view-td bg-gray-100">
|
|
138
|
-
<ng-template [ngTemplateOutlet]="detailsTemplate.template"
|
|
139
|
-
[ngTemplateOutletContext]="{ $implicit: item }"></ng-template>
|
|
140
|
-
</td>
|
|
141
|
-
</tr>
|
|
142
|
-
</ng-container>
|
|
143
|
-
</ng-container>
|
|
144
|
-
</tbody>
|
|
145
|
-
</table>
|
|
146
|
-
</div>
|
|
147
|
-
</div>
|
|
148
|
-
</ng-container>
|
|
149
|
-
</ng-container>
|
|
150
|
-
|
|
151
|
-
<ng-content></ng-content>
|
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
import { Component, ContentChild, ContentChildren, EventEmitter, Input, Output, QueryList, OnChanges, SimpleChanges } from '@angular/core';
|
|
2
|
-
import { MenuOption, 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
|
-
|
|
8
|
-
@Component({
|
|
9
|
-
selector: 'lib-list-view',
|
|
10
|
-
templateUrl: './list-view.component.html'
|
|
11
|
-
})
|
|
12
|
-
export class ListViewComponent implements OnChanges {
|
|
13
|
-
// BUSY STATE
|
|
14
|
-
@Input() busy = false;
|
|
15
|
-
public expandIcon = Icons.Expand;
|
|
16
|
-
public collapseIcon = Icons.Collapse;
|
|
17
|
-
// DATA SOURCE!
|
|
18
|
-
@Input() items: any[] | null | undefined;
|
|
19
|
-
// tslint:disable-next-line:no-input-rename
|
|
20
|
-
@Input('show-pager') showPager = true;
|
|
21
|
-
|
|
22
|
-
// PAGING - pass through for pager component
|
|
23
|
-
@Input() count: number | null = null;
|
|
24
|
-
@Input() page = 1;
|
|
25
|
-
// tslint:disable-next-line:no-input-rename
|
|
26
|
-
@Input('page-size') pageSize = 20;
|
|
27
|
-
// tslint:disable-next-line:no-input-rename
|
|
28
|
-
@Input('page-size-options') pageSizeOptions: MenuOption[] = [];
|
|
29
|
-
@Output() pageChanged: EventEmitter<number> = new EventEmitter<number>();
|
|
30
|
-
@Output() pageSizeChanged: EventEmitter<number> = new EventEmitter<number>();
|
|
31
|
-
@Output() detailsOpened: EventEmitter<{ item: any, open: boolean }> = new EventEmitter<{ item: any, open: boolean }>();
|
|
32
|
-
|
|
33
|
-
public tableViewSupported = false;
|
|
34
|
-
private multipleFullWidth = false;
|
|
35
|
-
public fullWidthTHClass = 'list-view-th-full';
|
|
36
|
-
public fullWidthTDClass = 'list-view-td-full';
|
|
37
|
-
public tilesViewSupported = false;
|
|
38
|
-
public detailsSectionSupported = false;
|
|
39
|
-
public loaderItems: any[] = [];
|
|
40
|
-
|
|
41
|
-
// DETAILS SECTION
|
|
42
|
-
// Check if details section and button should be displayed according to the count of the value given
|
|
43
|
-
// tslint:disable-next-line:no-input-rename
|
|
44
|
-
@Input('details-section-property-count') detailsSectionPropertyCount: string | null = null;
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
// SORTING - pass through for pager component
|
|
48
|
-
// tslint:disable-next-line:no-input-rename
|
|
49
|
-
@Input('sort-options') sortOptions: MenuOption[] = [];
|
|
50
|
-
@Input() sort: string | null = null;
|
|
51
|
-
// tslint:disable-next-line:no-input-rename
|
|
52
|
-
@Input('sort-dir') sortdir: string | null = '-';
|
|
53
|
-
@Output() sortChanged: EventEmitter<string> = new EventEmitter<string>();
|
|
54
|
-
@Output() sortdirChanged: EventEmitter<string> = new EventEmitter<string>();
|
|
55
|
-
|
|
56
|
-
@Input() view = ListViewType.Table;
|
|
57
|
-
|
|
58
|
-
// COLUMNS
|
|
59
|
-
public columns: any[] = [];
|
|
60
|
-
@ContentChildren(ListColumnComponent, { read: ListColumnComponent })
|
|
61
|
-
set cols(refs: QueryList<ListColumnComponent>) {
|
|
62
|
-
this.columns = 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
|
-
|
|
71
|
-
public tilesDeckClass = 'cards-deck-4';
|
|
72
|
-
// tslint:disable-next-line:no-input-rename
|
|
73
|
-
@Input('tiles-count') tilesCount = 4;
|
|
74
|
-
|
|
75
|
-
public tileTemplate: any | null | undefined = null;
|
|
76
|
-
@ContentChild(ListTileComponent, { read: ListTileComponent })
|
|
77
|
-
set tiles(ref: ListTileComponent) {
|
|
78
|
-
this.tileTemplate = ref;
|
|
79
|
-
if (this.tileTemplate) {
|
|
80
|
-
this.tilesViewSupported = true;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
public detailsTemplate: any | null | undefined = null;
|
|
85
|
-
@ContentChild(ListDetailsSectionComponent, { read: ListDetailsSectionComponent })
|
|
86
|
-
set details(ref: ListDetailsSectionComponent) {
|
|
87
|
-
this.detailsTemplate = ref;
|
|
88
|
-
if (this.detailsTemplate) {
|
|
89
|
-
this.detailsSectionSupported = true;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
constructor() {
|
|
94
|
-
for (let i = 0; i < 5; i++) {
|
|
95
|
-
this.loaderItems.push({});
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
ngOnChanges(changes: SimpleChanges): void {
|
|
100
|
-
const tilesCountChange = changes['tiles-count'] || changes.tilesCount;
|
|
101
|
-
if (tilesCountChange) {
|
|
102
|
-
this.setTilesDeckClass(tilesCountChange.currentValue);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
// events
|
|
107
|
-
public emitPageChanged($event: number): void {
|
|
108
|
-
this.pageChanged.emit($event);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
public emitPageSizeChanged($event: number): void {
|
|
112
|
-
this.pageSizeChanged.emit($event);
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
public emitSortChanged($event: string): void {
|
|
116
|
-
this.sortChanged.emit($event);
|
|
117
|
-
}
|
|
118
|
-
public emitSortdirChanged($event: string): void {
|
|
119
|
-
this.sortdirChanged.emit($event);
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
public toggleDetails(item: any): void {
|
|
123
|
-
item.detailsExpanded = !item.detailsExpanded;
|
|
124
|
-
this.detailsOpened.emit({ item, open: item.detailsExpanded });
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
// helpers
|
|
128
|
-
private setTilesDeckClass(tiles: number): void {
|
|
129
|
-
if (tiles >= 1 && tiles <= 4) {
|
|
130
|
-
this.tilesDeckClass =
|
|
131
|
-
this.view !== ListViewType.Gallery
|
|
132
|
-
? `cards-deck-${tiles}`
|
|
133
|
-
: this.items && this.items.length > 0
|
|
134
|
-
? `gallery-deck-${tiles}`
|
|
135
|
-
: 'gallery-deck';
|
|
136
|
-
} else {
|
|
137
|
-
this.tilesDeckClass =
|
|
138
|
-
this.view !== ListViewType.Gallery
|
|
139
|
-
? 'cards-deck-3'
|
|
140
|
-
: this.items && this.items.length > 0
|
|
141
|
-
? 'gallery-deck-3'
|
|
142
|
-
: 'gallery-deck';
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
<div [class]="containerClass">
|
|
2
|
-
<ng-container *ngFor="let link of links | async">
|
|
3
|
-
<ng-container [ngSwitch]="link.type">
|
|
4
|
-
<a *ngSwitchCase="'router'"
|
|
5
|
-
href="#"
|
|
6
|
-
[routerLink]="[link.path]"
|
|
7
|
-
[routerLinkActive]="navLinkActiveClass"
|
|
8
|
-
[routerLinkActiveOptions]="{ exact: link.exact }"
|
|
9
|
-
[class]="navLinkClass">
|
|
10
|
-
{{ link.text }}
|
|
11
|
-
</a>
|
|
12
|
-
<a *ngSwitchCase="'external'"
|
|
13
|
-
[href]="link.path"
|
|
14
|
-
[attr.target]="link.external ? '_blank' : '_self'"
|
|
15
|
-
class="nav-link">
|
|
16
|
-
{{ link.text }}
|
|
17
|
-
</a>
|
|
18
|
-
<a *ngSwitchCase="'fragment'"
|
|
19
|
-
routerLink="."
|
|
20
|
-
[fragment]="link.path"
|
|
21
|
-
[class.active]="(activeFragment | async) === link.path"
|
|
22
|
-
class="nav-link">
|
|
23
|
-
{{ link.text }}
|
|
24
|
-
</a>
|
|
25
|
-
</ng-container>
|
|
26
|
-
</ng-container>
|
|
27
|
-
</div>
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { Observable } from 'rxjs';
|
|
2
|
-
import { Component, Input, OnInit } from '@angular/core';
|
|
3
|
-
import { NavLink } from '../../types';
|
|
4
|
-
|
|
5
|
-
@Component({
|
|
6
|
-
selector: 'lib-nav-links-list',
|
|
7
|
-
templateUrl: './nav-links-list.component.html'
|
|
8
|
-
})
|
|
9
|
-
export class NavLinksListComponent implements OnInit {
|
|
10
|
-
|
|
11
|
-
@Input() links: Observable<NavLink[]> | undefined;
|
|
12
|
-
// tslint:disable-next-line:no-input-rename
|
|
13
|
-
@Input('active-fragment') activeFragment: Observable<string> | undefined;
|
|
14
|
-
// tslint:disable-next-line:no-input-rename
|
|
15
|
-
@Input('link-class') navLinkClass: string | string = 'nav-link';
|
|
16
|
-
// tslint:disable-next-line:no-input-rename
|
|
17
|
-
@Input('link-active-class') navLinkActiveClass: string | string[] = 'nav-link-active';
|
|
18
|
-
// tslint:disable-next-line:no-input-rename
|
|
19
|
-
@Input('container-class') containerClass: string | string[] = '';
|
|
20
|
-
constructor() { }
|
|
21
|
-
|
|
22
|
-
ngOnInit(): void {
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
<div class="relative"
|
|
2
|
-
(clickOutside)="onClickOutside($event)">
|
|
3
|
-
<!-- Notifications Button -->
|
|
4
|
-
<button type="button"
|
|
5
|
-
(click)="doInboxAction()"
|
|
6
|
-
aria-expanded="false"
|
|
7
|
-
aria-haspopup="true">
|
|
8
|
-
<span class="sr-only">View notifications</span>
|
|
9
|
-
<span class="avatar-container">
|
|
10
|
-
<span class="avatar-text">
|
|
11
|
-
<i class="ms-Icon"
|
|
12
|
-
[class.ms-Icon--MessageFill]="unreadCount > 0"
|
|
13
|
-
[class.text-sky-400]="unreadCount > 0"
|
|
14
|
-
[class.animate-notification]="newArrival"
|
|
15
|
-
[class.ms-Icon--Message]="unreadCount === 0">
|
|
16
|
-
</i>
|
|
17
|
-
</span>
|
|
18
|
-
<span
|
|
19
|
-
*ngIf="unreadCount > 0"
|
|
20
|
-
[class.animate-pulse]="newArrival"
|
|
21
|
-
class="absolute top-0 right-0 inline-flex items-center justify-center -mt-1 ml-1 text-xs leading-none text-gray-100 ordinal">
|
|
22
|
-
{{ unreadCount }}
|
|
23
|
-
</span>
|
|
24
|
-
</span>
|
|
25
|
-
</button>
|
|
26
|
-
|
|
27
|
-
<!-- Notifications dropdown -->
|
|
28
|
-
<div *ngIf="menuExpanded" class="header-notifications-dropdown-with-username" role="menu" aria-orientation="vertical" aria-labelledby="messages-menu">
|
|
29
|
-
<div class="max-h-64 overflow-y-auto notification-messages min-h">
|
|
30
|
-
<ng-container *ngIf="!items; else messagesDropDown" class="py-5">
|
|
31
|
-
<div class="notifications-nav-link hover:bg-transparent">Δεν έχετε νέες ειδοποιήσεις</div>
|
|
32
|
-
</ng-container>
|
|
33
|
-
<ng-template #messagesDropDown>
|
|
34
|
-
<ul class="pr-1.5">
|
|
35
|
-
<ng-container *ngIf="items; else loading">
|
|
36
|
-
<ng-container *ngIf="items.length <= 0" class="py-5">
|
|
37
|
-
<div class="notifications-nav-link hover:bg-transparent">Δεν έχετε νέες ειδοποιήσεις</div>
|
|
38
|
-
</ng-container>
|
|
39
|
-
<ng-container *ngFor="let message of items; let i = index">
|
|
40
|
-
<li class="mb-2" [ngClass]="{ 'border-l-2 border-blue-500 bg-blue-50 hover:bg-blue-50': !message.data.isRead }">
|
|
41
|
-
<div class="flex justify-between">
|
|
42
|
-
<div class="flex-grow">
|
|
43
|
-
<a
|
|
44
|
-
[routerLink]="message.path"
|
|
45
|
-
(click)="removeItem(i)"
|
|
46
|
-
class="notifications-nav-link grid"
|
|
47
|
-
[ngClass]="!message.data.isRead ? ' hover:bg-blue-50' : 'border-b border-gray-100'"
|
|
48
|
-
>
|
|
49
|
-
<div class="flex flex-col">
|
|
50
|
-
<div class="font-thin tracking-tighter">
|
|
51
|
-
{{ message.data.creationDate | date: "EEE, d MMMM" }}
|
|
52
|
-
</div>
|
|
53
|
-
<div class="font-bold">
|
|
54
|
-
{{ message.data.text }}
|
|
55
|
-
</div>
|
|
56
|
-
</div>
|
|
57
|
-
</a>
|
|
58
|
-
</div>
|
|
59
|
-
</div>
|
|
60
|
-
</li>
|
|
61
|
-
</ng-container>
|
|
62
|
-
</ng-container>
|
|
63
|
-
|
|
64
|
-
<ng-template #loading>
|
|
65
|
-
<div class="h-32 flex items-center justify-center">
|
|
66
|
-
<div class="animate-pulse text-s text-gray-600">Loading...</div>
|
|
67
|
-
</div>
|
|
68
|
-
</ng-template>
|
|
69
|
-
</ul>
|
|
70
|
-
</ng-template>
|
|
71
|
-
</div>
|
|
72
|
-
<div class="p-1 rounded-sm">
|
|
73
|
-
<a [routerLink]="allNotificationsLink!.path">
|
|
74
|
-
<button type="button" class="header-notifications-dropdown-view-all-button">{{allNotificationsLink!.text}}</button>
|
|
75
|
-
</a>
|
|
76
|
-
</div>
|
|
77
|
-
</div>
|
|
78
|
-
</div>
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { IAppNotifications, NavLink } from './../../types';
|
|
2
|
-
import { Component, Inject, OnInit, OnDestroy } from '@angular/core';
|
|
3
|
-
import { Observable, of, Subscription } from 'rxjs';
|
|
4
|
-
import { APP_LINKS, APP_NOTIFICATIONS } from '../../tokens';
|
|
5
|
-
|
|
6
|
-
@Component({
|
|
7
|
-
selector: 'lib-notifications-indicator',
|
|
8
|
-
templateUrl: './notifications-indicator.component.html'
|
|
9
|
-
})
|
|
10
|
-
export class NotificationsIndicatorComponent implements OnInit, OnDestroy {
|
|
11
|
-
|
|
12
|
-
public menuExpanded = false;
|
|
13
|
-
public unreadCount = 0;
|
|
14
|
-
public items: any[] = [];
|
|
15
|
-
public allNotificationsLink?: NavLink;
|
|
16
|
-
private notificationsSub$: Subscription | undefined;
|
|
17
|
-
private inboxAction: any | undefined = undefined;
|
|
18
|
-
public newArrival = false;
|
|
19
|
-
constructor(@Inject(APP_NOTIFICATIONS) public notifications: IAppNotifications, @Inject(APP_LINKS) public links: any) { }
|
|
20
|
-
|
|
21
|
-
ngOnDestroy(): void {
|
|
22
|
-
if (this.notificationsSub$) {
|
|
23
|
-
this.notificationsSub$.unsubscribe();
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
ngOnInit(): void {
|
|
28
|
-
(this.links['notifications'] as Observable<NavLink>).subscribe(notificationsLink => {
|
|
29
|
-
this.allNotificationsLink = notificationsLink;
|
|
30
|
-
});
|
|
31
|
-
this.notificationsSub$ = this.notifications.messages.subscribe(result => {
|
|
32
|
-
if (result.items){
|
|
33
|
-
this.newArrival = true;
|
|
34
|
-
this.unreadCount = result.count;
|
|
35
|
-
this.items = result.items;
|
|
36
|
-
setTimeout( () => { this.newArrival = false; }, 1000 );
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
public toggleMenu(): void {
|
|
42
|
-
this.menuExpanded = !this.menuExpanded;
|
|
43
|
-
this.unreadCount = 0;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
public doInboxAction(): void {
|
|
47
|
-
if (this.notifications.inboxAction) {
|
|
48
|
-
this.notifications.inboxAction();
|
|
49
|
-
} else {
|
|
50
|
-
this.menuExpanded = true;
|
|
51
|
-
}
|
|
52
|
-
this.unreadCount = 0;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
public removeItem(index:number){
|
|
56
|
-
this.items.splice(index,1);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// this.notificationsSub$ = this.links.notifications?.pipe(map(result => {
|
|
60
|
-
// this.allItemsLink = result.allNotifications;
|
|
61
|
-
// this.items = result.items;
|
|
62
|
-
// this.unreadCount = result.count;
|
|
63
|
-
// }));
|
|
64
|
-
|
|
65
|
-
// [this.notificationsLinksPath] as Observable<NotificationNavLink[]>;
|
|
66
|
-
// this.allNotificationsLink = this.links[this.allNotificationsLinkPath] as Observable<NavLink>;
|
|
67
|
-
// this.unreadNotificationsCountObs = this.links[this.notificationsCounterLinksPath] as Observable<number>;
|
|
68
|
-
// this.getUnreadNotificationsCount();
|
|
69
|
-
|
|
70
|
-
// tslint:disable-next-line:typedef
|
|
71
|
-
public onClickOutside($event: any) {
|
|
72
|
-
this.menuExpanded = false;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
<div class="pager-container">
|
|
2
|
-
<div class="pager-container-inner">
|
|
3
|
-
<div class="inline-flex" *ngIf="sortOptions && sortOptions.length > 0">
|
|
4
|
-
<lib-drop-down-menu [options]="sortOptions" [selected]="sort" (selectedChanged)="sortOptionChanged($event)"></lib-drop-down-menu>
|
|
5
|
-
<button (click)="toggleSortdir()" [disabled]="!sort || busy" class="pager-icon-button">
|
|
6
|
-
<span class="sr-only">sort direction</span>
|
|
7
|
-
<span class="inline-block relative">
|
|
8
|
-
<i [class]="sortdirIcon"></i>
|
|
9
|
-
</span>
|
|
10
|
-
</button>
|
|
11
|
-
</div>
|
|
12
|
-
<div class="pager-pages-container">
|
|
13
|
-
<lib-drop-down-menu [options]="pageSizeOptions" [selected]="pageSize" (selectedChanged)="pageSizeOptionChanged($event)"></lib-drop-down-menu>
|
|
14
|
-
<div class="mx-2" *ngIf="count !== null && count > pageSize">
|
|
15
|
-
<button [disabled]="!canPreviousPage || busy" (click)="previousPage()"
|
|
16
|
-
class="pager-arrow-button-left">
|
|
17
|
-
<span class="sr-only">Previous</span>
|
|
18
|
-
<svg class="h-5 w-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
|
|
19
|
-
<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" />
|
|
20
|
-
</svg>
|
|
21
|
-
</button>
|
|
22
|
-
<button [disabled]="!canNextPage || busy" (click)="nextPage()"
|
|
23
|
-
class="pager-arrow-button-right">
|
|
24
|
-
<span class="sr-only">Next</span>
|
|
25
|
-
<svg class="h-5 w-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
|
|
26
|
-
<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" />
|
|
27
|
-
</svg>
|
|
28
|
-
</button>
|
|
29
|
-
</div>
|
|
30
|
-
<lib-drop-down-menu *ngIf="(pages && pages.length > 0) && (count !== null && count > pageSize)" [options]="pages" [selected]="page" (selectedChanged)="pageOptionChanged($event)"></lib-drop-down-menu>
|
|
31
|
-
</div>
|
|
32
|
-
</div>
|
|
33
|
-
</div>
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';
|
|
2
|
-
import { Router } from '@angular/router';
|
|
3
|
-
import { Icons } from '../../icons';
|
|
4
|
-
import { MenuOption } from '../../types';
|
|
5
|
-
|
|
6
|
-
@Component({
|
|
7
|
-
selector: 'lib-pager',
|
|
8
|
-
templateUrl: './pager.component.html'
|
|
9
|
-
})
|
|
10
|
-
export class PagerComponent implements OnInit, OnChanges {
|
|
11
|
-
// BUSY STATE
|
|
12
|
-
@Input() busy = false;
|
|
13
|
-
// PAGING
|
|
14
|
-
@Input() count: number | null = null;
|
|
15
|
-
@Input() page = 1;
|
|
16
|
-
// tslint:disable-next-line:no-input-rename
|
|
17
|
-
@Input('page-size') pageSize = 20;
|
|
18
|
-
// tslint:disable-next-line:no-input-rename
|
|
19
|
-
@Input('page-size-options') pageSizeOptions: MenuOption[] = [
|
|
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
|
-
public pages: MenuOption[] = [];
|
|
27
|
-
@Output() pageChanged: EventEmitter<number> = new EventEmitter<number>();
|
|
28
|
-
@Output() pageSizeChanged: EventEmitter<number> = new EventEmitter<number>();
|
|
29
|
-
public canPreviousPage = false;
|
|
30
|
-
public canNextPage = false;
|
|
31
|
-
|
|
32
|
-
// SORTING
|
|
33
|
-
// tslint:disable-next-line:no-input-rename
|
|
34
|
-
@Input('sort-options') sortOptions: MenuOption[] = [];
|
|
35
|
-
// tslint:disable-next-line:no-input-rename
|
|
36
|
-
@Input('sort') sort: string | null = null;
|
|
37
|
-
// tslint:disable-next-line:no-input-rename
|
|
38
|
-
@Input('sort-dir') sortdir: string | null = 'desc';
|
|
39
|
-
@Output() sortChanged: EventEmitter<string> = new EventEmitter<string>();
|
|
40
|
-
@Output() sortdirChanged: EventEmitter<string> = new EventEmitter<string>();
|
|
41
|
-
public sortdirIcon = Icons.SortDesc;
|
|
42
|
-
|
|
43
|
-
constructor(private router: Router) { }
|
|
44
|
-
|
|
45
|
-
ngOnChanges(changes: SimpleChanges): void {
|
|
46
|
-
this.calcPages();
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
ngOnInit(): void {
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
private calcPages(): void {
|
|
53
|
-
this.pages = [];
|
|
54
|
-
if (this.count && this.count > 0) {
|
|
55
|
-
const pageCount = this.count / this.pageSize;
|
|
56
|
-
for (let i = 0; i < pageCount; i++) {
|
|
57
|
-
this.pages.push(new MenuOption(i + 1 + '', i + 1));
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
this.canPreviousPage = this.page > 1;
|
|
61
|
-
this.canNextPage = this.page < this.pages.length;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
public nextPage(): void {
|
|
65
|
-
const next = this.page + 1;
|
|
66
|
-
this.gotoPage(next);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
public previousPage(): void {
|
|
70
|
-
const previous = this.page - 1;
|
|
71
|
-
this.gotoPage(previous);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
public gotoPage(page: number): void {
|
|
75
|
-
this.page = page;
|
|
76
|
-
this.pageChanged.emit(page);
|
|
77
|
-
this.calcPages();
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
public pageSizeOptionChanged(pageSize: number): void {
|
|
81
|
-
this.pageSizeChanged.emit(pageSize);
|
|
82
|
-
this.calcPages();
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
public pageOptionChanged(page: number): void {
|
|
86
|
-
this.pageChanged.emit(page);
|
|
87
|
-
this.calcPages();
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
public sortOptionChanged(sort: string): void {
|
|
91
|
-
this.sortChanged.emit(sort);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
public toggleSortdir(): void {
|
|
95
|
-
let sortdir = 'desc';
|
|
96
|
-
if (this.sortdir === 'desc') {
|
|
97
|
-
sortdir = 'asc';
|
|
98
|
-
this.sortdirIcon = Icons.SortAsc;
|
|
99
|
-
} else {
|
|
100
|
-
sortdir = 'desc';
|
|
101
|
-
this.sortdirIcon = Icons.SortDesc;
|
|
102
|
-
}
|
|
103
|
-
this.sortdirChanged.emit(sortdir);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
<div *ngIf="showPane" class="side-pane-outer-container" aria-labelledby="slide-over" role="dialog" aria-modal="true">
|
|
2
|
-
<div [class]="showPane ? overlayStyle : 'hidden'" aria-hidden="true"></div>
|
|
3
|
-
<div [class]="showPane ? 'side-pane-container' : 'hidden'">
|
|
4
|
-
<div [class]="sizeContainerStyle">
|
|
5
|
-
<div class="side-pane">
|
|
6
|
-
<ng-content></ng-content>
|
|
7
|
-
</div>
|
|
8
|
-
</div>
|
|
9
|
-
</div>
|
|
10
|
-
</div>
|