@indice/ng-components 0.2.167-beta.3 → 0.2.167-beta.4

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 (177) hide show
  1. package/_styles.css +1 -1
  2. package/{esm2015/indice-ng-components.js → esm2020/indice-ng-components.mjs} +0 -0
  3. package/esm2020/lib/controls/advanced-search/advanced-search.component.mjs +112 -0
  4. package/esm2020/lib/controls/advanced-search/models.mjs +90 -0
  5. package/{esm2015/lib/controls/avatar-initials/avatar-initials.component.js → esm2020/lib/controls/avatar-initials/avatar-initials.component.mjs} +5 -8
  6. package/esm2020/lib/controls/collapsible-panel/collapsible-panel.component.mjs +20 -0
  7. package/{esm2015/lib/controls/combobox/combobox.component.js → esm2020/lib/controls/combobox/combobox.component.mjs} +8 -11
  8. package/esm2020/lib/controls/date-picker/date-picker.component.mjs +292 -0
  9. package/esm2020/lib/controls/drop-down-menu/drop-down-menu.component.mjs +68 -0
  10. package/esm2020/lib/controls/kpi-tile/kpi-tile.component.mjs +39 -0
  11. package/esm2020/lib/controls/language-selection/language-selection.component.mjs +31 -0
  12. package/{esm2015/lib/controls/list-view/list-column.component.js → esm2020/lib/controls/list-view/list-column.component.mjs} +4 -4
  13. package/{esm2015/lib/controls/list-view/list-details-section.component.js → esm2020/lib/controls/list-view/list-details-section.component.mjs} +4 -4
  14. package/{esm2015/lib/controls/list-view/list-tile.component.js → esm2020/lib/controls/list-view/list-tile.component.mjs} +4 -4
  15. package/esm2020/lib/controls/list-view/list-view-empty-state.component.mjs +29 -0
  16. package/esm2020/lib/controls/list-view/list-view.component.mjs +206 -0
  17. package/esm2020/lib/controls/nav-links-list/nav-links-list.component.mjs +46 -0
  18. package/esm2020/lib/controls/notifications-indicator/notifications-indicator.component.mjs +79 -0
  19. package/esm2020/lib/controls/pager/pager.component.mjs +130 -0
  20. package/esm2020/lib/controls/side-pane/side-pane.component.mjs +72 -0
  21. package/esm2020/lib/controls/skeleton-loader/skeleton-loader.component.mjs +25 -0
  22. package/{esm2015/lib/controls/stepper/lib-step-info.directive.js → esm2020/lib/controls/stepper/lib-step-info.directive.mjs} +4 -4
  23. package/{esm2015/lib/controls/stepper/lib-step-label.directive.js → esm2020/lib/controls/stepper/lib-step-label.directive.mjs} +4 -4
  24. package/esm2020/lib/controls/stepper/lib-step.component.mjs +81 -0
  25. package/esm2020/lib/controls/stepper/lib-stepper.component.mjs +108 -0
  26. package/{esm2015/lib/controls/stepper/types/step-selected-event.js → esm2020/lib/controls/stepper/types/step-selected-event.mjs} +0 -0
  27. package/{esm2015/lib/controls/stepper/types/stepper-type.js → esm2020/lib/controls/stepper/types/stepper-type.mjs} +0 -0
  28. package/esm2020/lib/controls/tabs/lib-tab-group.component.mjs +60 -0
  29. package/esm2020/lib/controls/tabs/lib-tab.component.mjs +57 -0
  30. package/esm2020/lib/controls/toaster/toaster-container.component.mjs +28 -0
  31. package/esm2020/lib/controls/toaster/toaster.component.mjs +31 -0
  32. package/esm2020/lib/controls/toggle/toggle.component.mjs +64 -0
  33. package/esm2020/lib/controls/user-profile-menu/user-profile-menu.component.mjs +71 -0
  34. package/{esm2015/lib/directives/click-outside.directive.js → esm2020/lib/directives/click-outside.directive.mjs} +4 -4
  35. package/{esm2015/lib/directives/dynamic-component-host.directive.js → esm2020/lib/directives/dynamic-component-host.directive.mjs} +4 -4
  36. package/esm2020/lib/helpers/base-list.component.mjs +226 -0
  37. package/{esm2015/lib/icons.js → esm2020/lib/icons.mjs} +0 -0
  38. package/esm2020/lib/layouts/shell/shell-footer/shell-footer.component.mjs +19 -0
  39. package/esm2020/lib/layouts/shell/shell-header/shell-header.component.mjs +130 -0
  40. package/esm2020/lib/layouts/shell/shell-layout/shell-layout.component.mjs +101 -0
  41. package/esm2020/lib/layouts/shell/shell-sidebar/shell-sidebar.component.mjs +47 -0
  42. package/esm2020/lib/layouts/shell/shell-sidebar-header/shell-sidebar-header.component.mjs +45 -0
  43. package/esm2020/lib/layouts/shell/shell-sidebar-layout/shell-sidebar-layout.component.mjs +25 -0
  44. package/esm2020/lib/layouts/shell/shell-stacked-layout/shell-stacked-layout.component.mjs +21 -0
  45. package/esm2020/lib/layouts/views/form-layout/form-layout.component.mjs +80 -0
  46. package/esm2020/lib/layouts/views/model-view-layout/model-view-layout.component.mjs +49 -0
  47. package/esm2020/lib/layouts/views/side-view-layout/side-view-layout.component.mjs +98 -0
  48. package/esm2020/lib/layouts/views/view-layout/view-layout.component.mjs +104 -0
  49. package/{esm2015/lib/ng-components.module.js → esm2020/lib/ng-components.module.mjs} +8 -14
  50. package/esm2020/lib/pages/auth/auth-callback/auth-callback.component.mjs +30 -0
  51. package/{esm2015/lib/pages/auth/auth-renew/auth-renew.component.js → esm2020/lib/pages/auth/auth-renew/auth-renew.component.mjs} +4 -4
  52. package/esm2020/lib/pages/auth/logged-out/logged-out.component.mjs +28 -0
  53. package/esm2020/lib/pages/http-status/error/error.component.mjs +17 -0
  54. package/esm2020/lib/pages/http-status/page-not-found/page-not-found.component.mjs +15 -0
  55. package/esm2020/lib/pages/http-status/unauthorized/unauthorized.component.mjs +14 -0
  56. package/{esm2015/lib/pipes/address.pipe.js → esm2020/lib/pipes/address.pipe.mjs} +4 -4
  57. package/{esm2015/lib/pipes/duration-format.pipe.js → esm2020/lib/pipes/duration-format.pipe.mjs} +4 -4
  58. package/{esm2015/lib/services/component-loader/component-loader-options.class.js → esm2020/lib/services/component-loader/component-loader-options.class.mjs} +0 -0
  59. package/esm2020/lib/services/component-loader/component-loader.class.mjs +188 -0
  60. package/{esm2015/lib/services/component-loader/component-loader.factory.js → esm2020/lib/services/component-loader/component-loader.factory.mjs} +4 -4
  61. package/{esm2015/lib/services/component-loader/content-ref.class.js → esm2020/lib/services/component-loader/content-ref.class.mjs} +0 -0
  62. package/esm2020/lib/services/modal-service/modal-backdrop-component.mjs +44 -0
  63. package/esm2020/lib/services/modal-service/modal-container-component.mjs +126 -0
  64. package/{esm2015/lib/services/modal-service/modal-options.class.js → esm2020/lib/services/modal-service/modal-options.class.mjs} +4 -4
  65. package/esm2020/lib/services/modal-service/modal-service.mjs +219 -0
  66. package/{esm2015/lib/services/modal-service/modal-styles.class.js → esm2020/lib/services/modal-service/modal-styles.class.mjs} +0 -0
  67. package/{esm2015/lib/services/modal-service/modal.class.js → esm2020/lib/services/modal-service/modal.class.mjs} +4 -4
  68. package/{esm2015/lib/services/toaster.service.js → esm2020/lib/services/toaster.service.mjs} +4 -4
  69. package/{esm2015/lib/tokens.js → esm2020/lib/tokens.mjs} +0 -0
  70. package/{esm2015/lib/types.js → esm2020/lib/types.mjs} +0 -0
  71. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  72. package/fesm2015/indice-ng-components.mjs +4269 -0
  73. package/fesm2015/indice-ng-components.mjs.map +1 -0
  74. package/fesm2020/indice-ng-components.mjs +4196 -0
  75. package/fesm2020/indice-ng-components.mjs.map +1 -0
  76. package/{indice-ng-components.d.ts → index.d.ts} +0 -0
  77. package/lib/controls/advanced-search/advanced-search.component.d.ts +1 -1
  78. package/lib/controls/avatar-initials/avatar-initials.component.d.ts +1 -1
  79. package/lib/controls/collapsible-panel/collapsible-panel.component.d.ts +1 -1
  80. package/lib/controls/combobox/combobox.component.d.ts +1 -1
  81. package/lib/controls/date-picker/date-picker.component.d.ts +1 -1
  82. package/lib/controls/drop-down-menu/drop-down-menu.component.d.ts +1 -1
  83. package/lib/controls/kpi-tile/kpi-tile.component.d.ts +1 -1
  84. package/lib/controls/language-selection/language-selection.component.d.ts +1 -1
  85. package/lib/controls/list-view/list-column.component.d.ts +1 -1
  86. package/lib/controls/list-view/list-details-section.component.d.ts +1 -1
  87. package/lib/controls/list-view/list-tile.component.d.ts +1 -1
  88. package/lib/controls/list-view/list-view-empty-state.component.d.ts +1 -1
  89. package/lib/controls/list-view/list-view.component.d.ts +1 -1
  90. package/lib/controls/nav-links-list/nav-links-list.component.d.ts +1 -1
  91. package/lib/controls/notifications-indicator/notifications-indicator.component.d.ts +1 -1
  92. package/lib/controls/pager/pager.component.d.ts +1 -1
  93. package/lib/controls/side-pane/side-pane.component.d.ts +1 -2
  94. package/lib/controls/skeleton-loader/skeleton-loader.component.d.ts +1 -1
  95. package/lib/controls/stepper/lib-step-info.directive.d.ts +1 -1
  96. package/lib/controls/stepper/lib-step-label.directive.d.ts +1 -1
  97. package/lib/controls/stepper/lib-step.component.d.ts +1 -1
  98. package/lib/controls/stepper/lib-stepper.component.d.ts +1 -1
  99. package/lib/controls/tabs/lib-tab-group.component.d.ts +1 -1
  100. package/lib/controls/tabs/lib-tab.component.d.ts +1 -1
  101. package/lib/controls/toaster/toaster-container.component.d.ts +1 -1
  102. package/lib/controls/toaster/toaster.component.d.ts +1 -1
  103. package/lib/controls/toggle/toggle.component.d.ts +1 -1
  104. package/lib/controls/user-profile-menu/user-profile-menu.component.d.ts +1 -1
  105. package/lib/directives/click-outside.directive.d.ts +1 -1
  106. package/lib/directives/dynamic-component-host.directive.d.ts +1 -1
  107. package/lib/helpers/base-list.component.d.ts +1 -1
  108. package/lib/layouts/shell/shell-footer/shell-footer.component.d.ts +1 -1
  109. package/lib/layouts/shell/shell-header/shell-header.component.d.ts +1 -1
  110. package/lib/layouts/shell/shell-layout/shell-layout.component.d.ts +1 -1
  111. package/lib/layouts/shell/shell-sidebar/shell-sidebar.component.d.ts +1 -1
  112. package/lib/layouts/shell/shell-sidebar-header/shell-sidebar-header.component.d.ts +1 -1
  113. package/lib/layouts/shell/shell-sidebar-layout/shell-sidebar-layout.component.d.ts +1 -1
  114. package/lib/layouts/shell/shell-stacked-layout/shell-stacked-layout.component.d.ts +1 -1
  115. package/lib/layouts/views/form-layout/form-layout.component.d.ts +1 -1
  116. package/lib/layouts/views/model-view-layout/model-view-layout.component.d.ts +1 -1
  117. package/lib/layouts/views/side-view-layout/side-view-layout.component.d.ts +1 -1
  118. package/lib/layouts/views/view-layout/view-layout.component.d.ts +1 -1
  119. package/lib/ng-components.module.d.ts +2 -3
  120. package/lib/pages/auth/auth-callback/auth-callback.component.d.ts +1 -1
  121. package/lib/pages/auth/auth-renew/auth-renew.component.d.ts +1 -1
  122. package/lib/pages/auth/logged-out/logged-out.component.d.ts +1 -1
  123. package/lib/pages/http-status/error/error.component.d.ts +1 -1
  124. package/lib/pages/http-status/page-not-found/page-not-found.component.d.ts +1 -1
  125. package/lib/pages/http-status/unauthorized/unauthorized.component.d.ts +1 -1
  126. package/lib/pipes/address.pipe.d.ts +1 -1
  127. package/lib/pipes/duration-format.pipe.d.ts +1 -1
  128. package/lib/services/modal-service/modal-backdrop-component.d.ts +1 -1
  129. package/lib/services/modal-service/modal-container-component.d.ts +1 -1
  130. package/package.json +21 -8
  131. package/bundles/indice-ng-components.umd.js +0 -5035
  132. package/bundles/indice-ng-components.umd.js.map +0 -1
  133. package/esm2015/lib/controls/advanced-search/advanced-search.component.js +0 -116
  134. package/esm2015/lib/controls/advanced-search/models.js +0 -91
  135. package/esm2015/lib/controls/collapsible-panel/collapsible-panel.component.js +0 -23
  136. package/esm2015/lib/controls/date-picker/date-picker.component.js +0 -301
  137. package/esm2015/lib/controls/drop-down-menu/drop-down-menu.component.js +0 -72
  138. package/esm2015/lib/controls/kpi-tile/kpi-tile.component.js +0 -42
  139. package/esm2015/lib/controls/language-selection/language-selection.component.js +0 -35
  140. package/esm2015/lib/controls/list-view/list-view-empty-state.component.js +0 -32
  141. package/esm2015/lib/controls/list-view/list-view.component.js +0 -209
  142. package/esm2015/lib/controls/nav-links-list/nav-links-list.component.js +0 -51
  143. package/esm2015/lib/controls/notifications-indicator/notifications-indicator.component.js +0 -84
  144. package/esm2015/lib/controls/pager/pager.component.js +0 -133
  145. package/esm2015/lib/controls/side-pane/side-pane.component.js +0 -104
  146. package/esm2015/lib/controls/skeleton-loader/skeleton-loader.component.js +0 -29
  147. package/esm2015/lib/controls/stepper/lib-step.component.js +0 -82
  148. package/esm2015/lib/controls/stepper/lib-stepper.component.js +0 -115
  149. package/esm2015/lib/controls/tabs/lib-tab-group.component.js +0 -67
  150. package/esm2015/lib/controls/tabs/lib-tab.component.js +0 -58
  151. package/esm2015/lib/controls/toaster/toaster-container.component.js +0 -31
  152. package/esm2015/lib/controls/toaster/toaster.component.js +0 -34
  153. package/esm2015/lib/controls/toggle/toggle.component.js +0 -68
  154. package/esm2015/lib/controls/user-profile-menu/user-profile-menu.component.js +0 -75
  155. package/esm2015/lib/helpers/base-list.component.js +0 -227
  156. package/esm2015/lib/layouts/shell/shell-footer/shell-footer.component.js +0 -22
  157. package/esm2015/lib/layouts/shell/shell-header/shell-header.component.js +0 -135
  158. package/esm2015/lib/layouts/shell/shell-layout/shell-layout.component.js +0 -106
  159. package/esm2015/lib/layouts/shell/shell-sidebar/shell-sidebar.component.js +0 -50
  160. package/esm2015/lib/layouts/shell/shell-sidebar-header/shell-sidebar-header.component.js +0 -48
  161. package/esm2015/lib/layouts/shell/shell-sidebar-layout/shell-sidebar-layout.component.js +0 -28
  162. package/esm2015/lib/layouts/shell/shell-stacked-layout/shell-stacked-layout.component.js +0 -24
  163. package/esm2015/lib/layouts/views/form-layout/form-layout.component.js +0 -85
  164. package/esm2015/lib/layouts/views/model-view-layout/model-view-layout.component.js +0 -53
  165. package/esm2015/lib/layouts/views/side-view-layout/side-view-layout.component.js +0 -101
  166. package/esm2015/lib/layouts/views/view-layout/view-layout.component.js +0 -110
  167. package/esm2015/lib/pages/auth/auth-callback/auth-callback.component.js +0 -34
  168. package/esm2015/lib/pages/auth/logged-out/logged-out.component.js +0 -32
  169. package/esm2015/lib/pages/http-status/error/error.component.js +0 -20
  170. package/esm2015/lib/pages/http-status/page-not-found/page-not-found.component.js +0 -18
  171. package/esm2015/lib/pages/http-status/unauthorized/unauthorized.component.js +0 -17
  172. package/esm2015/lib/services/component-loader/component-loader.class.js +0 -192
  173. package/esm2015/lib/services/modal-service/modal-backdrop-component.js +0 -44
  174. package/esm2015/lib/services/modal-service/modal-container-component.js +0 -128
  175. package/esm2015/lib/services/modal-service/modal-service.js +0 -220
  176. package/fesm2015/indice-ng-components.js +0 -4389
  177. package/fesm2015/indice-ng-components.js.map +0 -1
@@ -1,4389 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { EventEmitter, PLATFORM_ID, Directive, Inject, Input, Output, Component, TemplateRef, ContentChild, LOCALE_ID, forwardRef, ViewChild, ContentChildren, Injectable, InjectionToken, ViewEncapsulation, ChangeDetectionStrategy, Optional, Injector, ElementRef, ViewChildren, Pipe, HostListener, NgModule } from '@angular/core';
3
- import * as i1 from '@angular/common';
4
- import { isPlatformBrowser, formatDate, getLocaleMonthNames, FormStyle, TranslationWidth, getLocaleDayNames, DOCUMENT, CommonModule } from '@angular/common';
5
- import * as i1$1 from '@angular/router';
6
- import { Router, NavigationStart, ActivatedRoute, ActivationStart, RouterModule } from '@angular/router';
7
- import * as i4 from '@angular/forms';
8
- import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
9
- import { BehaviorSubject, Subject, of, fromEvent } from 'rxjs';
10
- import { filter, debounceTime, distinctUntilChanged, share, map } from 'rxjs/operators';
11
- import { trigger, transition, style, animate } from '@angular/animations';
12
- import * as uuid from 'uuid';
13
- import * as i2 from '@indice/ng-auth';
14
- import { AuthService, IndiceAuthModule } from '@indice/ng-auth';
15
- import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
16
-
17
- //
18
- // tslint:disable-next-line:directive-selector
19
- class ClickOutsideDirective {
20
- constructor(
21
- // tslint:disable-next-line:variable-name
22
- _el,
23
- // tslint:disable-next-line:variable-name
24
- _ngZone, platformId) {
25
- this._el = _el;
26
- this._ngZone = _ngZone;
27
- this.platformId = platformId;
28
- this.clickOutsideEnabled = true;
29
- this.attachOutsideOnClick = false;
30
- this.delayClickOutsideInit = false;
31
- this.emitOnBlur = false;
32
- this.exclude = '';
33
- this.excludeBeforeClick = false;
34
- this.clickOutsideEvents = '';
35
- this.clickOutside = new EventEmitter();
36
- // tslint:disable-next-line:variable-name
37
- this._nodesExcluded = [];
38
- // tslint:disable-next-line:variable-name
39
- this._events = ['click'];
40
- this._initOnClickBody = this._initOnClickBody.bind(this);
41
- this._onClickBody = this._onClickBody.bind(this);
42
- this._onWindowBlur = this._onWindowBlur.bind(this);
43
- }
44
- ngOnInit() {
45
- if (!isPlatformBrowser(this.platformId)) {
46
- return;
47
- }
48
- this._init();
49
- }
50
- ngOnDestroy() {
51
- if (!isPlatformBrowser(this.platformId)) {
52
- return;
53
- }
54
- this._removeClickOutsideListener();
55
- this._removeAttachOutsideOnClickListener();
56
- this._removeWindowBlurListener();
57
- }
58
- ngOnChanges(changes) {
59
- if (!isPlatformBrowser(this.platformId)) {
60
- return;
61
- }
62
- // tslint:disable-next-line:no-string-literal
63
- if (changes['attachOutsideOnClick'] || changes['exclude'] || changes['emitOnBlur']) {
64
- this._init();
65
- }
66
- }
67
- _init() {
68
- if (this.clickOutsideEvents !== '') {
69
- this._events = this.clickOutsideEvents.split(',').map(e => e.trim());
70
- }
71
- this._excludeCheck();
72
- if (this.attachOutsideOnClick) {
73
- this._initAttachOutsideOnClickListener();
74
- }
75
- else {
76
- this._initOnClickBody();
77
- }
78
- if (this.emitOnBlur) {
79
- this._initWindowBlurListener();
80
- }
81
- }
82
- _initOnClickBody() {
83
- if (this.delayClickOutsideInit) {
84
- setTimeout(this._initClickOutsideListener.bind(this));
85
- }
86
- else {
87
- this._initClickOutsideListener();
88
- }
89
- }
90
- _excludeCheck() {
91
- if (this.exclude) {
92
- try {
93
- const nodes = Array.from(document.querySelectorAll(this.exclude));
94
- if (nodes) {
95
- this._nodesExcluded = nodes;
96
- }
97
- }
98
- catch (err) {
99
- console.error('[ng-click-outside] Check your exclude selector syntax.', err);
100
- }
101
- }
102
- }
103
- _onClickBody(ev) {
104
- if (!this.clickOutsideEnabled) {
105
- return;
106
- }
107
- if (this.excludeBeforeClick) {
108
- this._excludeCheck();
109
- }
110
- if (!this._el.nativeElement.contains(ev.target) && !this._shouldExclude(ev.target)) {
111
- this._emit(ev);
112
- if (this.attachOutsideOnClick) {
113
- this._removeClickOutsideListener();
114
- }
115
- }
116
- }
117
- /**
118
- * Resolves problem with outside click on iframe
119
- * @see https://github.com/arkon/ng-click-outside/issues/32
120
- */
121
- _onWindowBlur(ev) {
122
- setTimeout(() => {
123
- if (!document.hidden) {
124
- this._emit(ev);
125
- }
126
- });
127
- }
128
- _emit(ev) {
129
- if (!this.clickOutsideEnabled) {
130
- return;
131
- }
132
- this._ngZone.run(() => this.clickOutside.emit(ev));
133
- }
134
- _shouldExclude(target) {
135
- // tslint:disable-next-line:prefer-const
136
- for (let excludedNode of this._nodesExcluded) {
137
- if (excludedNode.contains(target)) {
138
- return true;
139
- }
140
- }
141
- return false;
142
- }
143
- _initClickOutsideListener() {
144
- this._ngZone.runOutsideAngular(() => {
145
- this._events.forEach(e => document.addEventListener(e, this._onClickBody));
146
- });
147
- }
148
- _removeClickOutsideListener() {
149
- this._ngZone.runOutsideAngular(() => {
150
- this._events.forEach(e => document.removeEventListener(e, this._onClickBody));
151
- });
152
- }
153
- _initAttachOutsideOnClickListener() {
154
- this._ngZone.runOutsideAngular(() => {
155
- this._events.forEach(e => this._el.nativeElement.addEventListener(e, this._initOnClickBody));
156
- });
157
- }
158
- _removeAttachOutsideOnClickListener() {
159
- this._ngZone.runOutsideAngular(() => {
160
- this._events.forEach(e => this._el.nativeElement.removeEventListener(e, this._initOnClickBody));
161
- });
162
- }
163
- _initWindowBlurListener() {
164
- this._ngZone.runOutsideAngular(() => {
165
- window.addEventListener('blur', this._onWindowBlur);
166
- });
167
- }
168
- _removeWindowBlurListener() {
169
- this._ngZone.runOutsideAngular(() => {
170
- window.removeEventListener('blur', this._onWindowBlur);
171
- });
172
- }
173
- }
174
- ClickOutsideDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ClickOutsideDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Directive });
175
- ClickOutsideDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: ClickOutsideDirective, selector: "[clickOutside]", inputs: { clickOutsideEnabled: "clickOutsideEnabled", attachOutsideOnClick: "attachOutsideOnClick", delayClickOutsideInit: "delayClickOutsideInit", emitOnBlur: "emitOnBlur", exclude: "exclude", excludeBeforeClick: "excludeBeforeClick", clickOutsideEvents: "clickOutsideEvents" }, outputs: { clickOutside: "clickOutside" }, usesOnChanges: true, ngImport: i0 });
176
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ClickOutsideDirective, decorators: [{
177
- type: Directive,
178
- args: [{ selector: '[clickOutside]' }]
179
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: undefined, decorators: [{
180
- type: Inject,
181
- args: [PLATFORM_ID]
182
- }] }]; }, propDecorators: { clickOutsideEnabled: [{
183
- type: Input
184
- }], attachOutsideOnClick: [{
185
- type: Input
186
- }], delayClickOutsideInit: [{
187
- type: Input
188
- }], emitOnBlur: [{
189
- type: Input
190
- }], exclude: [{
191
- type: Input
192
- }], excludeBeforeClick: [{
193
- type: Input
194
- }], clickOutsideEvents: [{
195
- type: Input
196
- }], clickOutside: [{
197
- type: Output
198
- }] } });
199
-
200
- class DropDownMenuComponent {
201
- constructor() {
202
- this.options = [];
203
- // tslint:disable-next-line:no-input-rename
204
- this.selectedValue = null;
205
- this.multiple = false;
206
- this.placeholder = 'Παρακαλώ επιλέξτε...';
207
- this.selectedOption$ = null;
208
- this.selectedChange = new EventEmitter();
209
- this.selectedChanged = new EventEmitter();
210
- this.expanded$ = false;
211
- }
212
- get selectedOption() {
213
- return this.selectedOption$;
214
- }
215
- set selectedOption(option) {
216
- this.selectedOption$ = option;
217
- this.selectedValue = option ? option.value : null;
218
- this.expanded = false;
219
- }
220
- get expanded() {
221
- return this.expanded$;
222
- }
223
- set expanded(value) {
224
- this.expanded$ = value;
225
- }
226
- ngOnChanges(changes) {
227
- if (this.options && this.options.length > 0 && this.selectedValue !== null && this.selectedValue !== undefined) {
228
- this.selectedOption$ = this.options.filter((o) => o.value === this.selectedValue)[0];
229
- }
230
- }
231
- ngOnInit() { }
232
- isSelected(option) {
233
- return option != null && this.selectedValue != null && option.value === this.selectedValue;
234
- }
235
- onClickOutside($event) {
236
- this.expanded = false;
237
- }
238
- selectOption(option) {
239
- this.selectedOption = option;
240
- this.selectedChange.emit(option.value);
241
- this.selectedChanged.emit(option.value);
242
- }
243
- }
244
- DropDownMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DropDownMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
245
- DropDownMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: DropDownMenuComponent, selector: "lib-drop-down-menu", inputs: { options: "options", selectedValue: ["selected", "selectedValue"], multiple: "multiple", placeholder: "placeholder" }, outputs: { selectedChange: "selectedChange", selectedChanged: "selectedChanged" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"dropdown-container\" (clickOutside)=\"onClickOutside($event)\">\r\n <button\r\n type=\"button\"\r\n (click)=\"expanded = !expanded\"\r\n class=\"dropdown-button\"\r\n aria-haspopup=\"listbox\"\r\n aria-expanded=\"true\"\r\n aria-labelledby=\"listbox-label\"\r\n >\r\n <span class=\"dropdown-selected-text\">\r\n {{ selectedOption?.text || placeholder }}\r\n </span>\r\n <span class=\"dropdown-button-icon\">\r\n <!-- Heroicon name: solid/selector -->\r\n <svg class=\"dropdown-arrow\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n d=\"M10 3a1 1 0 01.707.293l3 3a1 1 0 01-1.414 1.414L10 5.414 7.707 7.707a1 1 0 01-1.414-1.414l3-3A1 1 0 0110 3zm-3.707 9.293a1 1 0 011.414 0L10 14.586l2.293-2.293a1 1 0 011.414 1.414l-3 3a1 1 0 01-1.414 0l-3-3a1 1 0 010-1.414z\"\r\n clip-rule=\"evenodd\"\r\n />\r\n </svg>\r\n </span>\r\n </button>\r\n <ul\r\n *ngIf=\"expanded && options && options.length > 0\"\r\n class=\"dropdown-ul\"\r\n tabindex=\"-1\"\r\n role=\"listbox\"\r\n aria-labelledby=\"listbox-label\"\r\n aria-activedescendant=\"listbox-option-3\"\r\n >\r\n <ng-container *ngFor=\"let option of options\">\r\n <li\r\n [class]=\"isSelected(option) ? 'dropdown-li-selected' : 'dropdown-li'\"\r\n (click)=\"selectOption(option)\"\r\n id=\"listbox-option-0\"\r\n role=\"option\"\r\n >\r\n <span [class]=\"isSelected(option) ? 'dropdown-li-selected-text' : 'dropdown-li-text'\">\r\n {{ option.text }}\r\n </span>\r\n <span *ngIf=\"isSelected(option)\" class=\"dropdown-li-selected-indicator-container\">\r\n <!-- Heroicon name: solid/check -->\r\n <svg\r\n class=\"dropdown-li-selected-indicator\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\"\r\n >\r\n <path\r\n fill-rule=\"evenodd\"\r\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\r\n clip-rule=\"evenodd\"\r\n />\r\n </svg>\r\n </span>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</div>\r\n", directives: [{ type: ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
246
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DropDownMenuComponent, decorators: [{
247
- type: Component,
248
- args: [{
249
- // tslint:disable-next-line:component-selector
250
- selector: 'lib-drop-down-menu',
251
- templateUrl: './drop-down-menu.component.html',
252
- }]
253
- }], ctorParameters: function () { return []; }, propDecorators: { options: [{
254
- type: Input
255
- }], selectedValue: [{
256
- type: Input,
257
- args: ['selected']
258
- }], multiple: [{
259
- type: Input
260
- }], placeholder: [{
261
- type: Input
262
- }], selectedChange: [{
263
- type: Output
264
- }], selectedChanged: [{
265
- type: Output
266
- }] } });
267
-
268
- class Icons {
269
- }
270
- // https://uifabricicons.azurewebsites.net/
271
- Icons.Dashboard = `ms-Icon ms-Icon--HomeGroup `;
272
- Icons.Locations = `ms-Icon ms-Icon--MapPin `;
273
- Icons.ChargePoints = `ms-Icon ms-Icon--ChatBot `;
274
- Icons.Transations = `ms-Icon ms-Icon--PaymentCard `;
275
- Icons.Badges = `ms-Icon ms-Icon--IDBadge `;
276
- Icons.Information = `ms-Icon ms-Icon--Info`;
277
- Icons.Refresh = `ms-Icon ms-Icon--Refresh`;
278
- Icons.Search = `ms-Icon ms-Icon--Search`;
279
- Icons.Add = `ms-Icon ms-Icon--Add`;
280
- Icons.Delete = `ms-Icon ms-Icon--Delete`;
281
- Icons.SendEmail = `ms-Icon ms-Icon--NewMail`;
282
- Icons.Filter = `ms-Icon ms-Icon--Filter`;
283
- Icons.Export = `ms-Icon ms-Icon--ExcelDocument`;
284
- Icons.Import = `ms-Icon ms-Icon--PeopleAdd`;
285
- Icons.TilesView = `ms-Icon ms-Icon--AppIconDefault`;
286
- Icons.TableView = `ms-Icon ms-Icon--Table`;
287
- Icons.MapView = `ms-Icon ms-Icon--MapPin`;
288
- Icons.EntryView = `ms-Icon ms-Icon--EntryView`;
289
- Icons.Separator = `ms-Icon ms-Icon--Separator text-white`;
290
- Icons.ItemsCount = 'ms-Icon ms-Icon--Boards';
291
- Icons.Heart = 'ms-Icon ms-Icon--Heart';
292
- Icons.HeartBroken = 'ms-Icon ms-Icon--HeartBroken';
293
- Icons.DateTime = 'ms-Icon ms-Icon--ReminderTime';
294
- Icons.Expand = 'ms-Icon ms-Icon--ChevronDown';
295
- Icons.Collapse = 'ms-Icon ms-Icon--ChevronUp';
296
- Icons.SortAsc = 'ms-Icon ms-Icon--Ascending';
297
- Icons.SortDesc = 'ms-Icon ms-Icon--Descending';
298
- Icons.Details = ' ms-Icon ms-Icon--AccountActivity';
299
- Icons.Messages = ' ms-Icon ms-Icon--Message';
300
- Icons.MessagesUnread = ' ms-Icon ms-Icon--MessageFill';
301
-
302
- class NavLink {
303
- constructor(text, path, exact = false, external = false, icon, data) {
304
- this.type = 'router';
305
- this.text = text;
306
- this.path = path;
307
- this.exact = exact;
308
- this.external = external;
309
- this.icon = icon;
310
- this.data = data;
311
- }
312
- }
313
- class ExternalNavLink extends NavLink {
314
- constructor(text, path, openInNewTab, icon) {
315
- super(text, path, true, openInNewTab, icon);
316
- this.type = 'external';
317
- }
318
- }
319
- class FragmentNavLink extends NavLink {
320
- constructor(text, path, icon) {
321
- super(text, path, true, true, icon);
322
- this.type = 'fragment';
323
- }
324
- }
325
- class NotificationNavLink extends NavLink {
326
- constructor(text, path, isRead, creationDate) {
327
- super(text, path, true, false, undefined);
328
- this.isRead = isRead;
329
- this.creationDate = creationDate;
330
- }
331
- }
332
- class ViewAction {
333
- constructor(type, key, param, icon, tooltip) {
334
- this.type = type;
335
- this.key = key;
336
- this.param = param;
337
- this.icon = icon;
338
- this.tooltip = tooltip;
339
- }
340
- }
341
- class ListViewType {
342
- }
343
- ListViewType.Tiles = 'tiles';
344
- ListViewType.Table = 'table';
345
- ListViewType.Map = 'map';
346
- ListViewType.Gallery = 'gallery';
347
- class RouterViewAction extends ViewAction {
348
- constructor(icon, link, outlet, tooltip) {
349
- super('router-link', null, null, icon, tooltip);
350
- this.outlet = null;
351
- this.link = null;
352
- this.outlet = outlet;
353
- this.link = link;
354
- }
355
- }
356
- class SwitchViewAction extends ViewAction {
357
- constructor(view, icon, tooltip) {
358
- super('switch-view', null, view, icon, tooltip);
359
- }
360
- }
361
- class HeaderMetaItem {
362
- constructor() {
363
- this.key = null;
364
- this.icon = null;
365
- this.text = null;
366
- }
367
- }
368
- class MenuOption {
369
- constructor(text, value, description, data, icon) {
370
- this.text = text;
371
- this.value = value;
372
- this.description = description;
373
- this.data = data;
374
- this.icon = icon;
375
- }
376
- }
377
- var PagerPosition;
378
- (function (PagerPosition) {
379
- PagerPosition["Top"] = "top";
380
- PagerPosition["Bottom"] = "bottom";
381
- PagerPosition["Both"] = "both";
382
- })(PagerPosition || (PagerPosition = {}));
383
- var ShellLayoutType;
384
- (function (ShellLayoutType) {
385
- ShellLayoutType["Stacked"] = "Stacked";
386
- ShellLayoutType["Sidebar"] = "Sidebar";
387
- })(ShellLayoutType || (ShellLayoutType = {}));
388
- class DefaultShellConfig {
389
- constructor() {
390
- this.layout = ShellLayoutType.Stacked;
391
- this.appLogo = 'https://tailwindui.com/img/logos/workflow-mark.svg?color=white';
392
- this.appLogoAlt = 'your app name here';
393
- this.showHeader = true;
394
- this.showUserNameOnHeader = false;
395
- this.showAlertsOnHeader = false;
396
- this.showFooter = true;
397
- this.fluid = false;
398
- }
399
- }
400
- var SCREEN_SIZE;
401
- (function (SCREEN_SIZE) {
402
- SCREEN_SIZE[SCREEN_SIZE["XS"] = 0] = "XS";
403
- SCREEN_SIZE[SCREEN_SIZE["SM"] = 1] = "SM";
404
- SCREEN_SIZE[SCREEN_SIZE["MD"] = 2] = "MD";
405
- SCREEN_SIZE[SCREEN_SIZE["LG"] = 3] = "LG";
406
- SCREEN_SIZE[SCREEN_SIZE["XL"] = 4] = "XL";
407
- })(SCREEN_SIZE || (SCREEN_SIZE = {}));
408
- var ToastType;
409
- (function (ToastType) {
410
- ToastType["Info"] = "info";
411
- ToastType["Success"] = "success";
412
- ToastType["Error"] = "error";
413
- ToastType["Warning"] = "warning";
414
- })(ToastType || (ToastType = {}));
415
- const NULL_TOAST = { title: '_____NULL_____' };
416
- var SidePaneSize;
417
- (function (SidePaneSize) {
418
- SidePaneSize["Default"] = "";
419
- SidePaneSize["Small25"] = "25%";
420
- SidePaneSize["Medium50"] = "50%";
421
- SidePaneSize["Large75"] = "75%";
422
- })(SidePaneSize || (SidePaneSize = {}));
423
- var SidePaneOverlayType;
424
- (function (SidePaneOverlayType) {
425
- SidePaneOverlayType["Default"] = "";
426
- SidePaneOverlayType["None"] = "-opacity-0";
427
- SidePaneOverlayType["Light"] = "";
428
- SidePaneOverlayType["Dark"] = "-opacity-50";
429
- })(SidePaneOverlayType || (SidePaneOverlayType = {}));
430
-
431
- class PagerComponent {
432
- constructor(router) {
433
- this.router = router;
434
- // BUSY STATE
435
- this.busy = false;
436
- // PAGING
437
- this.count = null;
438
- this.page = 1;
439
- // tslint:disable-next-line:no-input-rename
440
- this.pageSize = 20;
441
- // tslint:disable-next-line:no-input-rename
442
- this.pageSizeOptions = [
443
- new MenuOption('10', 10),
444
- new MenuOption('20', 20),
445
- new MenuOption('30', 30),
446
- new MenuOption('50', 50),
447
- new MenuOption('100', 100)
448
- ];
449
- this.pages = [];
450
- this.pageChanged = new EventEmitter();
451
- this.pageSizeChanged = new EventEmitter();
452
- this.canPreviousPage = false;
453
- this.canNextPage = false;
454
- // SORTING
455
- // tslint:disable-next-line:no-input-rename
456
- this.sortOptions = [];
457
- // tslint:disable-next-line:no-input-rename
458
- this.sort = null;
459
- // tslint:disable-next-line:no-input-rename
460
- this.sortdir = 'desc';
461
- this.sortChanged = new EventEmitter();
462
- this.sortdirChanged = new EventEmitter();
463
- this.sortdirIcon = Icons.SortDesc;
464
- }
465
- ngOnChanges(changes) {
466
- this.calcPages();
467
- }
468
- ngOnInit() {
469
- }
470
- calcPages() {
471
- this.pages = [];
472
- if (this.count && this.count > 0) {
473
- const pageCount = this.count / this.pageSize;
474
- for (let i = 0; i < pageCount; i++) {
475
- this.pages.push(new MenuOption(i + 1 + '', i + 1));
476
- }
477
- }
478
- this.canPreviousPage = this.page > 1;
479
- this.canNextPage = this.page < this.pages.length;
480
- }
481
- nextPage() {
482
- const next = this.page + 1;
483
- this.gotoPage(next);
484
- }
485
- previousPage() {
486
- const previous = this.page - 1;
487
- this.gotoPage(previous);
488
- }
489
- gotoPage(page) {
490
- this.page = page;
491
- this.pageChanged.emit(page);
492
- this.calcPages();
493
- }
494
- pageSizeOptionChanged(pageSize) {
495
- this.pageSizeChanged.emit(pageSize);
496
- this.calcPages();
497
- }
498
- pageOptionChanged(page) {
499
- this.pageChanged.emit(page);
500
- this.calcPages();
501
- }
502
- sortOptionChanged(sort) {
503
- this.sortChanged.emit(sort);
504
- }
505
- toggleSortdir() {
506
- let sortdir = 'desc';
507
- if (this.sortdir === 'desc') {
508
- sortdir = 'asc';
509
- this.sortdirIcon = Icons.SortAsc;
510
- }
511
- else {
512
- sortdir = 'desc';
513
- this.sortdirIcon = Icons.SortDesc;
514
- }
515
- this.sortdirChanged.emit(sortdir);
516
- }
517
- }
518
- PagerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PagerComponent, deps: [{ token: i1$1.Router }], target: i0.ɵɵFactoryTarget.Component });
519
- 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\">\r\n <div class=\"pager-container-inner\">\r\n <div class=\"inline-flex\" *ngIf=\"sortOptions && sortOptions.length > 0\">\r\n <lib-drop-down-menu [options]=\"sortOptions\" [selected]=\"sort\" (selectedChanged)=\"sortOptionChanged($event)\"></lib-drop-down-menu>\r\n <button (click)=\"toggleSortdir()\" [disabled]=\"!sort || busy\" class=\"pager-icon-button\">\r\n <span class=\"sr-only\">sort direction</span>\r\n <span class=\"inline-block relative\">\r\n <i [class]=\"sortdirIcon\"></i>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"pager-pages-container\">\r\n <lib-drop-down-menu [options]=\"pageSizeOptions\" [selected]=\"pageSize\" (selectedChanged)=\"pageSizeOptionChanged($event)\"></lib-drop-down-menu>\r\n <div class=\"mx-2\" *ngIf=\"count !== null && count > pageSize\">\r\n <button [disabled]=\"!canPreviousPage || busy\" (click)=\"previousPage()\"\r\n class=\"pager-arrow-button-left\">\r\n <span class=\"sr-only\">Previous</span>\r\n <svg class=\"h-5 w-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\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\" />\r\n </svg>\r\n </button>\r\n <button type=\"button\"\r\n [disabled]=\"!canNextPage || busy\" (click)=\"nextPage()\"\r\n class=\"pager-arrow-button-right\">\r\n <span class=\"sr-only\">Next</span>\r\n <svg class=\"h-5 w-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\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\" />\r\n </svg>\r\n </button>\r\n </div>\r\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>\r\n </div>\r\n </div>\r\n</div>\r\n", components: [{ type: DropDownMenuComponent, selector: "lib-drop-down-menu", inputs: ["options", "selected", "multiple", "placeholder"], outputs: ["selectedChange", "selectedChanged"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
520
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PagerComponent, decorators: [{
521
- type: Component,
522
- args: [{
523
- selector: 'lib-pager',
524
- templateUrl: './pager.component.html'
525
- }]
526
- }], ctorParameters: function () { return [{ type: i1$1.Router }]; }, propDecorators: { busy: [{
527
- type: Input
528
- }], count: [{
529
- type: Input
530
- }], page: [{
531
- type: Input
532
- }], pageSize: [{
533
- type: Input,
534
- args: ['page-size']
535
- }], pageSizeOptions: [{
536
- type: Input,
537
- args: ['page-size-options']
538
- }], pageChanged: [{
539
- type: Output
540
- }], pageSizeChanged: [{
541
- type: Output
542
- }], sortOptions: [{
543
- type: Input,
544
- args: ['sort-options']
545
- }], sort: [{
546
- type: Input,
547
- args: ['sort']
548
- }], sortdir: [{
549
- type: Input,
550
- args: ['sort-dir']
551
- }], sortChanged: [{
552
- type: Output
553
- }], sortdirChanged: [{
554
- type: Output
555
- }] } });
556
-
557
- class ListTileComponent {
558
- constructor() {
559
- this.template = null;
560
- }
561
- }
562
- ListTileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ListTileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
563
- ListTileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ListTileComponent, selector: "lib-list-tile", queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
564
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ListTileComponent, decorators: [{
565
- type: Component,
566
- args: [{ selector: 'lib-list-tile', template: '<ng-content></ng-content>' }]
567
- }], ctorParameters: function () { return []; }, propDecorators: { template: [{
568
- type: ContentChild,
569
- args: [TemplateRef]
570
- }] } });
571
-
572
- class ListColumnComponent {
573
- constructor() {
574
- this.title = null;
575
- // tslint:disable-next-line:no-input-rename
576
- this.fullWidth = false;
577
- this.template = null;
578
- }
579
- }
580
- ListColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ListColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
581
- ListColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ListColumnComponent, selector: "lib-list-column", inputs: { title: "title", fullWidth: ["full-width", "fullWidth"] }, queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
582
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ListColumnComponent, decorators: [{
583
- type: Component,
584
- args: [{ selector: 'lib-list-column', template: '<ng-content></ng-content>' }]
585
- }], ctorParameters: function () { return []; }, propDecorators: { title: [{
586
- type: Input
587
- }], fullWidth: [{
588
- type: Input,
589
- args: ['full-width']
590
- }], template: [{
591
- type: ContentChild,
592
- args: [TemplateRef]
593
- }] } });
594
-
595
- class ListDetailsSectionComponent {
596
- constructor() {
597
- this.template = null;
598
- }
599
- }
600
- ListDetailsSectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ListDetailsSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
601
- ListDetailsSectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ListDetailsSectionComponent, selector: "lib-list-details-section", queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
602
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ListDetailsSectionComponent, decorators: [{
603
- type: Component,
604
- args: [{ selector: 'lib-list-details-section', template: '<ng-content></ng-content>' }]
605
- }], ctorParameters: function () { return []; }, propDecorators: { template: [{
606
- type: ContentChild,
607
- args: [TemplateRef]
608
- }] } });
609
-
610
- var Operators;
611
- (function (Operators) {
612
- Operators.EQUALS = { label: '=', value: 'eq', description: 'Ίσο με' };
613
- Operators.NOT_EQUALS = { label: '≠', value: 'neq', description: 'Διάφορο του' };
614
- Operators.GREATER_THAN = { label: '>', value: 'gt', description: 'Μεγαλύτερο από' };
615
- Operators.LESS_THAN = { label: '<', value: 'lt', description: 'Μικρότερο από' };
616
- Operators.GREATER_THAN_EQUAL = { label: '≥', value: 'gte', description: 'Μεγαλύτερο ή ίσο με' };
617
- Operators.LESS_THAN_EQUAL = { label: '≤', value: 'lte', description: 'Μικρότερο ή ίσο με' };
618
- Operators.CONTAINS = { label: '∋', value: 'contains', description: 'Περιέχει' };
619
- Operators.IN = { label: '1..n', value: 'in', description: 'Μέσα σε' };
620
- })(Operators || (Operators = {}));
621
- var QueryParameters;
622
- (function (QueryParameters) {
623
- QueryParameters["VIEW"] = "view";
624
- QueryParameters["PAGE_SIZE"] = "pagesize";
625
- QueryParameters["PAGE"] = "page";
626
- QueryParameters["SEARCH"] = "search";
627
- QueryParameters["SORT_FIELD"] = "sort";
628
- QueryParameters["SORT_DIRECTION"] = "dir";
629
- QueryParameters["FILTER"] = "filter";
630
- QueryParameters["FILTER_FROM"] = "from";
631
- QueryParameters["FILTER_TO"] = "to";
632
- })(QueryParameters || (QueryParameters = {}));
633
- class FilterClause {
634
- constructor(member, value, operator, dataType, searchOptions) {
635
- var _a;
636
- this.member = member;
637
- this.value = value;
638
- this.operator = operator || Operators.EQUALS.value;
639
- this.dataType = dataType === undefined ? 'string' : dataType;
640
- // uiName
641
- if (this.dataType === 'datetime') { // special treatment for dates
642
- this.uiName = this.member === QueryParameters.FILTER_FROM ? 'Από' : 'Έως';
643
- }
644
- else {
645
- this.uiName = this.member;
646
- let fo = {};
647
- if (searchOptions && searchOptions.length > 0) {
648
- fo = searchOptions.find((f) => {
649
- return f.field === this.member;
650
- });
651
- }
652
- if (fo) {
653
- this.uiName = fo.name;
654
- }
655
- }
656
- // uiOperator
657
- this.uiOperator = this.dataType === 'datetime' ? '' : Operators.EQUALS.label; // that's fine (for now)...
658
- // uiValue
659
- this.uiValue = this.value;
660
- if ((this.dataType === 'datetime')) {
661
- this.uiValue = formatDate(new Date(this.value), 'dd/MM/yyyy', 'en-US');
662
- }
663
- let fo;
664
- if (searchOptions && searchOptions.length > 0) {
665
- fo = searchOptions.find((f) => {
666
- return f.field === this.member;
667
- });
668
- }
669
- if (fo && fo.options) { // special treatment for arrays, if there is an options property then it is an array
670
- this.dataType = 'array';
671
- this.uiValue = (_a = fo.options.find((option) => {
672
- return option.value === this.value;
673
- })) === null || _a === void 0 ? void 0 : _a.label;
674
- }
675
- }
676
- static parse(text) {
677
- const pattern = /^\s*([A-Za-z_][A-Za-z0-9_\.]+)::(eq|neq|gt|lt|gte|lte|contains|in)::(\((string|integer|number|boolean|datetime)\))?(.+)\s*$/gi;
678
- if (text != null) {
679
- const matches = pattern.exec(text);
680
- if (matches != null) {
681
- const path = matches[1];
682
- const op = matches[2];
683
- const dt = matches[4];
684
- const v = matches[5];
685
- return new FilterClause(path, v, op, dt);
686
- }
687
- }
688
- return undefined;
689
- }
690
- toString() {
691
- if (this.dataType !== 'string' && this.dataType !== 'array') {
692
- return `${this.member}::${this.operator}::(${this.dataType})${this.value}`;
693
- }
694
- else {
695
- return `${this.member}::${this.operator}::${this.value}`;
696
- }
697
- }
698
- }
699
-
700
- // freaksly simple date picker : https://tailwind-elements.com/docs/standard/forms/datepicker/
701
- class DatepickerComponent {
702
- constructor(locale) {
703
- this.locale = locale;
704
- this.readonly = false;
705
- this.disabled = false;
706
- this.inline = false;
707
- this.displayFormat = 'dd/MM/yyyy';
708
- this.placeholder = '';
709
- this.value = null;
710
- this.valueChange = new EventEmitter();
711
- this.minDate = undefined;
712
- this.maxDate = undefined;
713
- this.showCalendar = false;
714
- this.showYears = false;
715
- this.monthNames = getLocaleMonthNames(this.locale, FormStyle.Standalone, TranslationWidth.Wide);
716
- this.dayNames = getLocaleDayNames(this.locale, FormStyle.Standalone, TranslationWidth.Abbreviated);
717
- this.month = -1;
718
- this.year = -1;
719
- this.calendarDates = [];
720
- this.calendarYears = [];
721
- this.showCalendarYears = [];
722
- this.blankDays = [];
723
- this.calendarYearPage = 1;
724
- this.yearsPerPage = 30;
725
- this.onChange$ = undefined;
726
- this.onTouched$ = undefined;
727
- }
728
- ngOnInit() {
729
- var _a, _b;
730
- let today = new Date();
731
- this.month = today.getMonth();
732
- this.year = today.getFullYear();
733
- this.calendarDates = [{ day: this.value, today: this.value, selected: this.value }];
734
- this.calendarYears = [{ year: (_a = this.value) === null || _a === void 0 ? void 0 : _a.getFullYear(), today: this.value, selected: this.value }];
735
- const yearsArray = [];
736
- for (let i = 1950; i <= today.getFullYear() + 2; i++) {
737
- yearsArray.push({ year: i, today: this.compareDates(today, null, i), selected: i == ((_b = this.value) === null || _b === void 0 ? void 0 : _b.getFullYear()) });
738
- }
739
- this.calendarYears = yearsArray;
740
- this.showCalendarYears = this.paginate(this.calendarYears, 1);
741
- this.calcDays();
742
- }
743
- writeValue(obj) {
744
- if (obj) {
745
- this.value = new Date(obj);
746
- this.month = this.value.getMonth();
747
- this.year = this.value.getFullYear();
748
- }
749
- }
750
- registerOnChange(fn) {
751
- this.onChange$ = fn;
752
- }
753
- registerOnTouched(fn) {
754
- this.onTouched$ = fn;
755
- }
756
- onBlur(event) {
757
- if (this.onTouched$) {
758
- this.onTouched$();
759
- }
760
- this.getDateFromInput();
761
- }
762
- selectDateValue(date) {
763
- // This should be in UTC
764
- if (!this.outOfRangeDate(date.day)) {
765
- let selectedDate = new Date(this.year, this.month, date.day, 3, 0, 0, 0);
766
- this.value = selectedDate;
767
- this.valueChange.emit(this.value);
768
- if (this.onChange$) {
769
- this.onChange$(this.value);
770
- }
771
- this.updateDays();
772
- if (this.onTouched$) {
773
- this.onTouched$();
774
- }
775
- this.calcDays();
776
- this.showCalendar = false;
777
- }
778
- }
779
- selectYearValue(year) {
780
- var _a, _b, _c, _d, _e;
781
- // This should be in UTC
782
- const tempYear = this.year;
783
- this.year = year.year;
784
- if (!this.outOfRangeDate((_b = (_a = this.calendarDates) === null || _a === void 0 ? void 0 : _a.find(x => x.selected == true)) !== null && _b !== void 0 ? _b : { day: 1 })) {
785
- let selectedDate = new Date(year.year, (_c = this.month) !== null && _c !== void 0 ? _c : 1, (_e = (_d = this.calendarDates) === null || _d === void 0 ? void 0 : _d.find(x => x.selected == true).day) !== null && _e !== void 0 ? _e : 1, 3, 0, 0, 0);
786
- this.value = selectedDate;
787
- this.valueChange.emit(this.value);
788
- if (this.onChange$) {
789
- this.onChange$(this.value);
790
- }
791
- this.updateDays();
792
- if (this.onTouched$) {
793
- this.onTouched$();
794
- }
795
- this.showYears = false;
796
- this.showCalendar = true;
797
- this.calcDays();
798
- }
799
- else {
800
- this.year = tempYear;
801
- this.showYears = false;
802
- this.showCalendar = true;
803
- }
804
- }
805
- previousMonth() {
806
- if (this.month !== 0) {
807
- this.month = this.month - 1;
808
- this.calcDays();
809
- }
810
- else {
811
- this.month = 11;
812
- this.year = this.year - 1;
813
- this.calcDays();
814
- }
815
- if (this.onTouched$) {
816
- this.onTouched$();
817
- }
818
- }
819
- nextMonth() {
820
- if (this.month !== 11) {
821
- this.month = this.month + 1;
822
- this.calcDays();
823
- }
824
- else {
825
- this.month = 0;
826
- this.year = this.year + 1;
827
- this.calcDays();
828
- }
829
- if (this.onTouched$) {
830
- this.onTouched$();
831
- }
832
- }
833
- previousYear() {
834
- this.showCalendarYears = this.paginate(this.calendarYears, this.calendarYearPage > 1 ? --this.calendarYearPage : 1);
835
- this.calcDays();
836
- if (this.onTouched$) {
837
- this.onTouched$();
838
- }
839
- }
840
- nextYear() {
841
- this.showCalendarYears = this.paginate(this.calendarYears, this.calendarYearPage <= this.calendarYears.length / this.yearsPerPage
842
- ? ++this.calendarYearPage
843
- : this.calendarYearPage);
844
- this.calcDays();
845
- if (this.onTouched$) {
846
- this.onTouched$();
847
- }
848
- }
849
- compareDates(date1, day, year) {
850
- var _a;
851
- if (!date1) {
852
- return false;
853
- }
854
- const d = new Date(year !== null && year !== void 0 ? year : this.year, this.month, day !== null && day !== void 0 ? day : (_a = this.value) === null || _a === void 0 ? void 0 : _a.getDay());
855
- return date1.toDateString() === d.toDateString();
856
- }
857
- ;
858
- calcDays() {
859
- var _a;
860
- const daysInMonth = new Date(this.year, this.month + 1, 0).getDate();
861
- // find where to start calendar day of week
862
- const dayOfWeek = new Date(this.year, this.month).getDay();
863
- const blankdaysArray = new Array();
864
- for (var i = 1; i <= dayOfWeek; i++) {
865
- // check if month is February
866
- blankdaysArray.push(this.month != 2 ? (32 - i) : (29 - i));
867
- blankdaysArray.reverse().sort();
868
- }
869
- const daysArray = [];
870
- const today = new Date();
871
- for (var i = 1; i <= daysInMonth; i++) {
872
- daysArray.push({ day: i, today: this.compareDates(today, i, null), selected: this.compareDates((_a = this.value) !== null && _a !== void 0 ? _a : today, i, null) });
873
- }
874
- const yearsArray = [];
875
- for (let i = 1950; i <= today.getFullYear() + 2; i++) {
876
- yearsArray.push({ year: i, today: this.compareDates(today, null, i), selected: i == this.year });
877
- }
878
- this.calendarYears = yearsArray;
879
- this.blankDays = blankdaysArray;
880
- this.calendarDates = daysArray;
881
- }
882
- updateDays() {
883
- const today = new Date();
884
- this.calendarDates.forEach(d => {
885
- d.today = this.compareDates(today, d, this.year);
886
- d.selected = this.compareDates(this.value, d, this.year);
887
- });
888
- }
889
- paginate(array, page_number) {
890
- return array.slice((page_number - 1) * this.yearsPerPage, page_number * this.yearsPerPage);
891
- }
892
- getDateFromInput() {
893
- var _a, _b;
894
- if (((_a = this.dateInput) === null || _a === void 0 ? void 0 : _a.nativeElement.value) !== '' && !this.inline) {
895
- var dateParts = (_b = this.dateInput) === null || _b === void 0 ? void 0 : _b.nativeElement.value.split("/");
896
- let dateInGrFormat = new Date(+dateParts[2], dateParts[1] - 1, +dateParts[0], 3, 0, 0);
897
- if (dateInGrFormat.toString() !== 'Invalid Date') {
898
- this.writeValue(dateInGrFormat);
899
- this.calcDays();
900
- this.valueChange.emit(dateInGrFormat);
901
- }
902
- if (this.onChange$) {
903
- this.onChange$(this.value);
904
- }
905
- this.updateDays();
906
- if (this.onTouched$) {
907
- this.onTouched$();
908
- }
909
- }
910
- this.showCalendar = false;
911
- }
912
- openYears() {
913
- this.showYears = !this.showYears;
914
- this.calendarYearPage = Math.ceil(this.calendarYears.map(x => x.year).indexOf(this.year) / this.yearsPerPage);
915
- this.showCalendarYears = this.paginate(this.calendarYears, this.calendarYearPage !== 0 ? this.calendarYearPage : 1);
916
- this.calcDays();
917
- }
918
- openCalendar() {
919
- this.showCalendar = !this.showCalendar;
920
- this.calcDays();
921
- }
922
- closeCalendar() {
923
- this.showCalendar = false;
924
- this.getDateFromInput();
925
- }
926
- outOfRangeDate(date) {
927
- let outOfRange = false;
928
- if (this.minDate || this.maxDate) {
929
- const d = new Date(this.year, this.month, date.day);
930
- const dateInMillis = d.getTime();
931
- if (this.minDate) {
932
- let minDate = this.minDate.getTime();
933
- if (dateInMillis < minDate && this.minDate.toDateString() !== d.toDateString()) {
934
- outOfRange = true;
935
- }
936
- }
937
- if (this.maxDate) {
938
- let maxDate = this.maxDate.getTime();
939
- if (dateInMillis > maxDate && this.maxDate.toDateString() !== d.toDateString()) {
940
- outOfRange = true;
941
- }
942
- }
943
- }
944
- return outOfRange;
945
- }
946
- }
947
- DatepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DatepickerComponent, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component });
948
- DatepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: DatepickerComponent, selector: "lib-date-picker", inputs: { readonly: "readonly", disabled: "disabled", inline: "inline", displayFormat: ["display-format", "displayFormat"], placeholder: "placeholder", value: "value", minDate: "minDate", maxDate: "maxDate" }, outputs: { valueChange: "valueChange" }, providers: [
949
- {
950
- provide: NG_VALUE_ACCESSOR,
951
- useExisting: forwardRef(() => DatepickerComponent),
952
- multi: true
953
- }
954
- ], viewQueries: [{ propertyName: "dateInput", first: true, predicate: ["dateInput"], descendants: true }], ngImport: i0, template: "<div class=\"flex\"\r\n [ngClass]=\"{'relative': !inline}\"\r\n (clickOutside)=\"closeCalendar()\">\r\n\r\n <input type=\"text\"\r\n *ngIf=\"!inline\"\r\n #dateInput\r\n [readonly]=\"readonly\"\r\n name=\"dateInput\"\r\n (blur)=\"onBlur($event)\"\r\n id=\"dateInput\"\r\n (focus)=\"showCalendar = false\"\r\n [value]=\"value | date: displayFormat\"\r\n class=\"detapicker-input\"\r\n [ngClass]=\"{'cursor-not-allowed': disabled}\"\r\n [placeholder]=\"disabled ? '' : placeholder\">\r\n\r\n <button type=\"button\"\r\n *ngIf=\"!inline\"\r\n class=\"datepicker-button\"\r\n [disabled]=\"disabled\"\r\n (click)=\"openCalendar()\"\r\n [ngClass]=\"{'cursor-not-allowed': disabled}\">\r\n <i class=\"ms-Icon ms-Icon--DateTime2\"></i>\r\n </button>\r\n\r\n <div *ngIf=\"showCalendar || inline\"\r\n [ngClass]=\"{'absolute': !inline}\"\r\n class=\"datepicker-background\"\r\n style=\"height:18rem;min-width:16rem;\"\r\n name=\"calendar\">\r\n <div class=\"datepicker-btn-wrapper\">\r\n <div>\r\n <button type=\"button\"\r\n (click)=\"openYears()\">\r\n <span class=\"datepicker-selected-month\">\r\n {{monthNames[month]}}\r\n </span>\r\n <span class=\"datepicker-selected-year\">\r\n {{year}}</span>\r\n </button>\r\n </div>\r\n <div *ngIf=\"!showYears; else showYearsPickerTmpl\">\r\n <button type=\"button\"\r\n class=\"datepicker-nav-btn\"\r\n (click)=\"previousMonth();\">\r\n <svg fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M15 19l-7-7 7-7\" />\r\n </svg>\r\n </button>\r\n <button type=\"button\"\r\n class=\"datepicker-nav-btn\"\r\n (click)=\"nextMonth()\">\r\n <svg fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M9 5l7 7-7 7\" />\r\n </svg>\r\n </button>\r\n </div>\r\n <ng-template #showYearsPickerTmpl>\r\n <div>\r\n <button type=\"button\"\r\n class=\"datepicker-nav-btn\"\r\n (click)=\"previousYear();\">\r\n <svg fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M15 19l-7-7 7-7\" />\r\n </svg>\r\n </button>\r\n <button type=\"button\"\r\n class=\"datepicker-nav-btn\"\r\n (click)=\"nextYear()\">\r\n <svg fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M9 5l7 7-7 7\" />\r\n </svg>\r\n </button>\r\n </div>\r\n </ng-template>\r\n </div>\r\n\r\n <div class=\"datepicker-wrapper\"\r\n *ngIf=\"!showYears; else showCalYearsTmpl\">\r\n <div *ngFor=\"let day of dayNames\"\r\n class=\"datepicker-day-name\"\r\n style=\"width: 14.28%\">{{day}}</div>\r\n </div>\r\n\r\n <ng-template #showCalYearsTmpl>\r\n <div class=\"datepicker-content-wrapper\">\r\n <div *ngFor=\"let year of showCalendarYears\"\r\n style=\"width: 18.28%\"\r\n class=\"px-1 mb-1\">\r\n <div (click)=\"selectYearValue(year)\"\r\n class=\"datepicker-year\"\r\n [class]=\"year.selected ? 'selected' : 'not-selected'\">\r\n {{year.year}}</div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"datepicker-content-wrapper\"\r\n *ngIf=\"!showYears\">\r\n <div *ngFor=\"let blankday of blankDays\"\r\n style=\"width: 14.28%\"\r\n class=\"datepicker-blank-days\">{{blankday}}</div>\r\n <div *ngFor=\"let date of calendarDates;\"\r\n style=\"width: 14.28%\"\r\n class=\"px-1 mb-1\">\r\n <div (click)=\"selectDateValue(date)\"\r\n class=\"datepicker-days\"\r\n [ngClass]=\"{'out-of-range': outOfRangeDate(date),'selected': date.selected, 'not-selected':!date.selected }\">\r\n {{date.day}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</div>", directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "date": i1.DatePipe } });
955
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DatepickerComponent, decorators: [{
956
- type: Component,
957
- args: [{
958
- selector: 'lib-date-picker',
959
- templateUrl: './date-picker.component.html',
960
- providers: [
961
- {
962
- provide: NG_VALUE_ACCESSOR,
963
- useExisting: forwardRef(() => DatepickerComponent),
964
- multi: true
965
- }
966
- ]
967
- }]
968
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
969
- type: Inject,
970
- args: [LOCALE_ID]
971
- }] }]; }, propDecorators: { readonly: [{
972
- type: Input
973
- }], disabled: [{
974
- type: Input
975
- }], inline: [{
976
- type: Input
977
- }], displayFormat: [{
978
- type: Input,
979
- args: ['display-format']
980
- }], placeholder: [{
981
- type: Input
982
- }], value: [{
983
- type: Input
984
- }], valueChange: [{
985
- type: Output
986
- }], dateInput: [{
987
- type: ViewChild,
988
- args: ['dateInput']
989
- }], minDate: [{
990
- type: Input
991
- }], maxDate: [{
992
- type: Input
993
- }] } });
994
-
995
- class AdvancedSearchComponent {
996
- constructor() {
997
- this.advancedSearchChanged = new EventEmitter();
998
- this.searchOptions = [];
999
- this.filters = [];
1000
- this.menuOptions = [];
1001
- this.menuOptionsDictionary = {};
1002
- }
1003
- ngOnInit() {
1004
- this.searchOptions.forEach((searchOption) => {
1005
- var _a;
1006
- this.menuOptions.push({
1007
- text: searchOption.name,
1008
- value: searchOption.field,
1009
- data: searchOption.dataType,
1010
- description: searchOption.placeholder,
1011
- icon: undefined
1012
- });
1013
- if (searchOption.dataType === 'array') {
1014
- let menuOpts = [];
1015
- (_a = searchOption.options) === null || _a === void 0 ? void 0 : _a.forEach((selectInputOption) => {
1016
- menuOpts.push({
1017
- text: selectInputOption.label,
1018
- value: selectInputOption.value,
1019
- data: undefined,
1020
- description: selectInputOption.description,
1021
- icon: undefined
1022
- });
1023
- });
1024
- this.menuOptionsDictionary[searchOption.field] = menuOpts;
1025
- }
1026
- });
1027
- }
1028
- selectedFieldChanged(field) {
1029
- this.selectedField = this.searchOptions.find((searchOption) => searchOption.field === field);
1030
- this.fieldValue = undefined;
1031
- }
1032
- selectedFieldValueChanged(fieldValue) {
1033
- this.fieldValue = fieldValue;
1034
- }
1035
- search() {
1036
- if (!this.selectedField || !this.selectedField.dataType) {
1037
- return;
1038
- }
1039
- // the filter is of type 'daterange'
1040
- if (this.selectedField.dataType === 'daterange') {
1041
- if (!this.selectedField.multiTerm) {
1042
- this.filters = this.filters.filter((f) => {
1043
- return f.member !== QueryParameters.FILTER_FROM && f.member !== QueryParameters.FILTER_TO;
1044
- });
1045
- }
1046
- if (this.fieldValueDateFrom) {
1047
- const filterClauseFrom = new FilterClause(QueryParameters.FILTER_FROM, this.fieldValueDateFrom, Operators.GREATER_THAN_EQUAL.value, 'datetime', this.searchOptions);
1048
- this.filters.push(filterClauseFrom);
1049
- }
1050
- if (this.fieldValueDateTo) {
1051
- const filterClauseTo = new FilterClause(QueryParameters.FILTER_TO, this.fieldValueDateTo, Operators.LESS_THAN_EQUAL.value, 'datetime', this.searchOptions);
1052
- this.filters.push(filterClauseTo);
1053
- }
1054
- }
1055
- // the filter isn't of type 'daterange' (everything else)
1056
- else {
1057
- if (this.fieldValue === undefined) { // handle empty field value
1058
- return;
1059
- }
1060
- // create the filterClause
1061
- const filterClause = new FilterClause(this.selectedField.field, this.fieldValue, Operators.EQUALS.value, this.selectedField.dataType, this.searchOptions); // operator is always 'equals'...
1062
- if (!this.selectedField.multiTerm) { // multiTerm means that we can have multiple filter values of the SAME filter clause (eg "filter case types that are Phone OR Address")
1063
- this.filters = this.filters.filter((f) => {
1064
- return f.member !== this.selectedField.field;
1065
- });
1066
- }
1067
- this.filters.push(filterClause);
1068
- this.fieldValue = undefined;
1069
- }
1070
- this.advancedSearchChanged.emit(this.filters);
1071
- }
1072
- removeFilter(index) {
1073
- if (this.filters && this.filters.length >= index) {
1074
- this.filters.splice(index, 1);
1075
- this.advancedSearchChanged.emit(this.filters);
1076
- }
1077
- }
1078
- clear() {
1079
- this.fieldValueDateFrom = undefined;
1080
- this.fieldValueDateTo = undefined;
1081
- this.selectedField = undefined;
1082
- this.fieldValue = undefined;
1083
- this.filters = [];
1084
- this.advancedSearchChanged.emit(this.filters);
1085
- }
1086
- }
1087
- AdvancedSearchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AdvancedSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1088
- AdvancedSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: AdvancedSearchComponent, selector: "lib-advanced-search", inputs: { searchOptions: ["search-options", "searchOptions"], filters: "filters" }, outputs: { advancedSearchChanged: "advancedSearchChanged" }, ngImport: i0, template: "<div class=\"advanced-search-container\">\r\n <div class=\"advanced-search-filter\">\r\n <!--SEARCH FIELDS-->\r\n <div class=\"advanced-search-filter-field-container\">\r\n <label class=\"advanced-search-filter-field-label\"\r\n for=\"selectedField\">\r\n \u0391\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7 \u03B1\u03BD\u03AC:\r\n </label>\r\n <lib-drop-down-menu [options]=\"menuOptions\"\r\n (selectedChanged)=\"selectedFieldChanged($event)\"></lib-drop-down-menu>\r\n </div>\r\n <!--SEARCH FIELDS INPUT-->\r\n <div *ngIf=\"selectedField\"\r\n class=\"advanced-search-filter-value-container\">\r\n <div *ngIf=\"selectedField.dataType === 'array'\">\r\n <label class=\"advanced-search-filter-value-label\"\r\n for=\"fieldValue\">\r\n &nbsp;\r\n </label>\r\n <lib-drop-down-menu [options]=\"menuOptionsDictionary[selectedField.field]\"\r\n [selected]=\"fieldValue\"\r\n (selectedChanged)=\"selectedFieldValueChanged($event)\"></lib-drop-down-menu>\r\n </div>\r\n <div *ngIf=\"selectedField.dataType === 'string'\">\r\n <label class=\"advanced-search-filter-value-label\"\r\n for=\"fieldValue\">\r\n &nbsp;\r\n </label>\r\n <input (keyup.enter)=\"search()\"\r\n [(ngModel)]=\"fieldValue\"\r\n name=\"fieldValue\"\r\n type=\"text\"\r\n placeholder=\"\u0391\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7\"\r\n maxlength=\"300\"\r\n class=\"advanced-search-filter-value-input\">\r\n </div>\r\n <ng-container *ngIf=\"selectedField.dataType === 'daterange'\">\r\n <div>\r\n <span class=\"advanced-search-filter-value-input-daterange-from\">\r\n \u0391\u03C0\u03CC:\r\n </span>\r\n <lib-date-picker [maxDate]=\"fieldValueDateTo\"\r\n [(ngModel)]=\"fieldValueDateFrom\"\r\n [placeholder]=\"'01/01/2022'\"></lib-date-picker>\r\n </div>\r\n <div *ngIf=\"selectedField.dataType === 'daterange'\">\r\n <span class=\"advanced-search-filter-value-input-daterange-to\">\r\n \u0388\u03C9\u03C2:\r\n </span>\r\n <lib-date-picker [minDate]=\"fieldValueDateFrom\"\r\n [(ngModel)]=\"fieldValueDateTo\"\r\n [placeholder]=\"'01/01/2022'\"></lib-date-picker>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngIf=\"selectedField\">\r\n <!--DO SEARCH-->\r\n <button type=\"button\"\r\n [ngClass]=\"{'opacity-50 cursor-not-allowed': fieldValue === undefined && fieldValueDateFrom === undefined && fieldValueDateTo === undefined}\"\r\n [disabled]=\"fieldValue === undefined && fieldValueDateFrom === undefined && fieldValueDateTo === undefined\"\r\n (click)=\"search()\">\r\n <i [class]=\"'ms-Icon ms-Icon--Search'\"></i>\r\n </button>\r\n <!--CLEAR-->\r\n <button type=\"button\"\r\n (click)=\"clear()\">\r\n <i [class]=\"'ms-Icon ms-Icon--Cancel'\"></i>\r\n </button>\r\n </ng-container>\r\n </div>\r\n <!--FILTER CHIPS-->\r\n <!-- This example requires Tailwind CSS v2.0+ -->\r\n <ng-container *ngFor=\"let filter of filters; let i = index\">\r\n <span *ngIf=\"filter && filter.member\"\r\n class=\"advanced-search-chips\">\r\n {{ filter.uiName }} {{ filter.uiOperator }} '{{ filter.uiValue }}'\r\n <button (click)=\"removeFilter(i)\"\r\n type=\"button\"\r\n class=\"advanced-search-chips-remove-filter\">\r\n <span class=\"sr-only\">Remove large option</span>\r\n <svg class=\"h-2 w-2\"\r\n stroke=\"currentColor\"\r\n fill=\"none\"\r\n viewBox=\"0 0 8 8\">\r\n <path stroke-linecap=\"round\"\r\n stroke-width=\"1.5\"\r\n d=\"M1 1l6 6m0-6L1 7\" />\r\n </svg>\r\n </button>\r\n </span>\r\n </ng-container>\r\n</div>", components: [{ type: DropDownMenuComponent, selector: "lib-drop-down-menu", inputs: ["options", "selected", "multiple", "placeholder"], outputs: ["selectedChange", "selectedChanged"] }, { type: DatepickerComponent, selector: "lib-date-picker", inputs: ["readonly", "disabled", "inline", "display-format", "placeholder", "value", "minDate", "maxDate"], outputs: ["valueChange"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1089
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AdvancedSearchComponent, decorators: [{
1090
- type: Component,
1091
- args: [{
1092
- selector: 'lib-advanced-search',
1093
- templateUrl: './advanced-search.component.html'
1094
- }]
1095
- }], ctorParameters: function () { return []; }, propDecorators: { advancedSearchChanged: [{
1096
- type: Output
1097
- }], searchOptions: [{
1098
- type: Input,
1099
- args: ['search-options']
1100
- }], filters: [{
1101
- type: Input
1102
- }] } });
1103
-
1104
- class SkeletonLoaderComponent {
1105
- constructor() {
1106
- this.count = 5;
1107
- this.type = 'tiles'; // 'large-tile', 'table'
1108
- }
1109
- ngOnInit() {
1110
- }
1111
- counter(i) {
1112
- return new Array(i);
1113
- }
1114
- }
1115
- SkeletonLoaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkeletonLoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1116
- SkeletonLoaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SkeletonLoaderComponent, selector: "lib-skeleton-loader", inputs: { count: "count", type: "type" }, ngImport: i0, template: "<!-- <h1>SKELETON LOADER!</h1> -->\r\n<ng-container *ngSwitch=\"type\">\r\n <div class=\"cards-deck-4\" *ngSwitchCase=\"'tiles'\">\r\n <ng-container *ngFor=\"let i of counter(count)\">\r\n <div class=\"relative p-4 w-full bg-white rounded-lg overflow-hidden shadow hover:shadow-md rounded-lg\">\r\n <div class=\"animate-pulse flex flex-col\">\r\n <div class=\"rounded w-full h-32 bg-gray-200\"></div>\r\n <div class=\"flex flex-col mt-5\">\r\n <div class=\"w-full h-5 bg-gray-200 rounded\"></div>\r\n <div class=\"mt-2 w-10/12 h-3 bg-gray-200 rounded\"></div>\r\n <div class=\"mt-2 w-8/12 h-3 bg-gray-200 rounded\"></div>\r\n </div>\r\n\r\n <div class=\"grid grid-cols-2 mt-5 gap-x-2 gap-y-1\">\r\n <div class=\"mt-2 w-full h-3 bg-gray-200 rounded\"></div>\r\n <div class=\"mt-2 w-full h-3 bg-gray-200 rounded\"></div>\r\n <div class=\"mt-2 w-full h-3 bg-gray-200 rounded\"></div>\r\n <div class=\"mt-2 w-full h-3 bg-gray-200 rounded\"></div>\r\n </div>\r\n\r\n <div class=\"flex items-center mt-5\">\r\n <div>\r\n <div class=\"rounded-full bg-gray-200 w-10 h-10\"></div>\r\n </div>\r\n <div class=\"flex justify-between w-full ml-3\">\r\n <div class=\"w-5/12 h-3 bg-gray-200 rounded\"></div>\r\n <div class=\"w-2/12 h-3 bg-gray-200 rounded\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"cards-deck-3\" *ngSwitchCase=\"'large-tiles'\">\r\n <ng-container *ngFor=\"let i of counter(count)\">\r\n <div class=\"relative p-4 w-full bg-white rounded-lg overflow-hidden shadow hover:shadow-md rounded-lg\">\r\n <div class=\"animate-pulse flex flex-col\">\r\n <div class=\"rounded w-full h-52 bg-gray-200\"></div>\r\n <div class=\"flex flex-col mt-5\">\r\n <div class=\"w-full h-5 bg-gray-200 rounded\"></div>\r\n <div class=\"mt-2 w-10/12 h-3 bg-gray-200 rounded\"></div>\r\n <div class=\"mt-2 w-8/12 h-3 bg-gray-200 rounded\"></div>\r\n </div>\r\n\r\n <div class=\"grid grid-cols-2 mt-5 gap-x-2 gap-y-1\">\r\n <div class=\"mt-2 w-full h-3 bg-gray-200 rounded\"></div>\r\n <div class=\"mt-2 w-full h-3 bg-gray-200 rounded\"></div>\r\n <div class=\"mt-2 w-full h-3 bg-gray-200 rounded\"></div>\r\n <div class=\"mt-2 w-full h-3 bg-gray-200 rounded\"></div>\r\n </div>\r\n\r\n <div class=\"flex items-center mt-5\">\r\n <div>\r\n <div class=\"rounded-full bg-gray-200 w-10 h-10\"></div>\r\n </div>\r\n <div class=\"flex justify-between w-full ml-3\">\r\n <div class=\"w-5/12 h-3 bg-gray-200 rounded\"></div>\r\n <div class=\"w-2/12 h-3 bg-gray-200 rounded\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"cards-deck-1\" *ngSwitchCase=\"'table'\">\r\n <ng-container *ngFor=\"let i of counter(count)\">\r\n <div class=\"border border-light-blue-300 shadow rounded-sm p-4 max-w-sm w-full mx-auto mb-4\">\r\n <div class=\"animate-pulse flex space-x-4\">\r\n <div class=\"rounded-full bg-light-blue-400 h-12 w-12\">&nbsp;</div>\r\n <div class=\"flex-1 space-y-4 py-1\">\r\n <div class=\"h-4 bg-light-blue-400 rounded w-3/4\">&nbsp;</div>\r\n <div class=\"space-y-2\">\r\n <div class=\"h-4 bg-light-blue-400 rounded\">&nbsp;</div>\r\n <div class=\"h-4 bg-light-blue-400 rounded w-5/6\">&nbsp;</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"cards-deck-3\" *ngSwitchDefault>\r\n <ng-container *ngFor=\"let i of counter(count)\">\r\n <div class=\"relative p-4 w-full bg-white rounded-lg overflow-hidden shadow hover:shadow-md rounded-lg\">\r\n <div class=\"animate-pulse flex flex-col\">\r\n <div class=\"rounded w-full h-52 bg-gray-200\"></div>\r\n <div class=\"flex flex-col mt-5\">\r\n <div class=\"w-full h-5 bg-gray-200 rounded\"></div>\r\n <div class=\"mt-2 w-10/12 h-3 bg-gray-200 rounded\"></div>\r\n <div class=\"mt-2 w-8/12 h-3 bg-gray-200 rounded\"></div>\r\n </div>\r\n\r\n <div class=\"grid grid-cols-2 mt-5 gap-x-2 gap-y-1\">\r\n <div class=\"mt-2 w-full h-3 bg-gray-200 rounded\"></div>\r\n <div class=\"mt-2 w-full h-3 bg-gray-200 rounded\"></div>\r\n <div class=\"mt-2 w-full h-3 bg-gray-200 rounded\"></div>\r\n <div class=\"mt-2 w-full h-3 bg-gray-200 rounded\"></div>\r\n </div>\r\n\r\n <div class=\"flex items-center mt-5\">\r\n <div>\r\n <div class=\"rounded-full bg-gray-200 w-10 h-10\"></div>\r\n </div>\r\n <div class=\"flex justify-between w-full ml-3\">\r\n <div class=\"w-5/12 h-3 bg-gray-200 rounded\"></div>\r\n <div class=\"w-2/12 h-3 bg-gray-200 rounded\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</ng-container>\r\n", directives: [{ type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }] });
1117
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkeletonLoaderComponent, decorators: [{
1118
- type: Component,
1119
- args: [{
1120
- // tslint:disable-next-line:component-selector
1121
- selector: 'lib-skeleton-loader',
1122
- templateUrl: './skeleton-loader.component.html'
1123
- }]
1124
- }], ctorParameters: function () { return []; }, propDecorators: { count: [{
1125
- type: Input
1126
- }], type: [{
1127
- type: Input
1128
- }] } });
1129
-
1130
- class ListViewEmptyStateComponent {
1131
- constructor() {
1132
- this.title = 'Δεν βρέθηκαν εγγραφές.';
1133
- // tslint:disable-next-line:no-input-rename
1134
- this.subTitle = 'Παρακαλώ αλλάξτε τα κριτήρια αναζήτησης σας ή ξεκινήστε προσθέτοντας μια νέα εγγραφή';
1135
- // tslint:disable-next-line:no-input-rename
1136
- this.newItemLabel = 'Νέα εγγραφή';
1137
- }
1138
- ngOnInit() {
1139
- }
1140
- }
1141
- ListViewEmptyStateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ListViewEmptyStateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1142
- ListViewEmptyStateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ListViewEmptyStateComponent, selector: "lib-list-view-empty-state", inputs: { title: "title", subTitle: ["sub-title", "subTitle"], newItemLabel: ["new-item-label", "newItemLabel"] }, ngImport: i0, template: "<div class=\"p-20\">\r\n <div class=\"text-center p-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"mx-auto h-12 w-12 text-gray-400\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7M4 7c0 2.21 3.582 4 8 4s8-1.79 8-4M4 7c0-2.21 3.582-4 8-4s8 1.79 8 4m0 5c0 2.21-3.582 4-8 4s-8-1.79-8-4\" />\r\n </svg>\r\n <h3 class=\"mt-2 text-sm font-medium text-gray-900\">{{title}}</h3>\r\n <p class=\"mt-1 text-sm text-gray-500\">\r\n {{subTitle}}\r\n </p>\r\n <div class=\"mt-6\" *ngIf=\"false\">\r\n <button type=\"button\" class=\"inline-flex items-center px-4 py-2 border border-transparent shadow-sm text-sm font-medium rounded-md text-white bg-gray-600 hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-offset-1 focus:ring-gray-500\">\r\n <!-- Heroicon name: solid/plus -->\r\n <svg class=\"-ml-1 mr-2 h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" aria-hidden=\"true\">\r\n <path vector-effect=\"non-scaling-stroke\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 13h6m-3-3v6m-9 1V7a2 2 0 012-2h6l2 2h6a2 2 0 012 2v8a2 2 0 01-2 2H5a2 2 0 01-2-2z\" />\r\n </svg>\r\n {{newItemLabel}}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1143
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ListViewEmptyStateComponent, decorators: [{
1144
- type: Component,
1145
- args: [{
1146
- selector: 'lib-list-view-empty-state',
1147
- templateUrl: './list-view-empty-state.component.html'
1148
- }]
1149
- }], ctorParameters: function () { return []; }, propDecorators: { title: [{
1150
- type: Input
1151
- }], subTitle: [{
1152
- type: Input,
1153
- args: ['sub-title']
1154
- }], newItemLabel: [{
1155
- type: Input,
1156
- args: ['new-item-label']
1157
- }] } });
1158
-
1159
- class ListViewComponent {
1160
- constructor() {
1161
- this.searchOptions = [];
1162
- this.filters = [];
1163
- // BUSY STATE
1164
- this.busy = false;
1165
- // PAGING - pass through for pager component
1166
- this.count = null;
1167
- this.page = 1;
1168
- this.view = ListViewType.Table;
1169
- this.sort = null;
1170
- // tslint:disable-next-line:no-input-rename
1171
- this.pageSize = 20;
1172
- // tslint:disable-next-line:no-input-rename
1173
- this.pageSizeOptions = [];
1174
- // SORTING - pass through for pager component
1175
- // tslint:disable-next-line:no-input-rename
1176
- this.sortOptions = [];
1177
- // tslint:disable-next-line:no-input-rename
1178
- this.sortdir = '-';
1179
- // tslint:disable-next-line:no-input-rename
1180
- this.tilesCount = 4;
1181
- // tslint:disable-next-line:no-input-rename
1182
- this.showPager = true;
1183
- // tslint:disable-next-line:no-input-rename
1184
- this.pagerPosition = PagerPosition.Top;
1185
- // DETAILS SECTION
1186
- // Check if details section and button should be displayed according to the count of the value given
1187
- // tslint:disable-next-line:no-input-rename
1188
- this.detailsSectionPropertyCount = null;
1189
- this.pageChanged = new EventEmitter();
1190
- this.pageSizeChanged = new EventEmitter();
1191
- this.detailsOpened = new EventEmitter();
1192
- this.sortChanged = new EventEmitter();
1193
- this.sortdirChanged = new EventEmitter();
1194
- this.advancedSearchChanged = new EventEmitter();
1195
- this.multipleFullWidth = false;
1196
- this.expandIcon = Icons.Expand;
1197
- this.collapseIcon = Icons.Collapse;
1198
- this.tableViewSupported = false;
1199
- this.fullWidthTHClass = 'list-view-th-full';
1200
- this.fullWidthTDClass = 'list-view-td-full';
1201
- this.tilesViewSupported = false;
1202
- this.detailsSectionSupported = false;
1203
- this.loaderItems = [];
1204
- this.columns = [];
1205
- this.tilesDeckClass = 'cards-deck-4';
1206
- this.tileTemplate = null;
1207
- this.detailsTemplate = null;
1208
- for (let i = 0; i < 5; i++) {
1209
- this.loaderItems.push({});
1210
- }
1211
- if (this.pagerPosition) {
1212
- this.pagerPosition = this.pagerPosition;
1213
- }
1214
- }
1215
- // COLUMNS
1216
- set cols(refs) {
1217
- this.columns = refs === null || refs === void 0 ? void 0 : refs.toArray();
1218
- if (this.columns && this.columns.length > 0) {
1219
- this.tableViewSupported = true;
1220
- }
1221
- this.multipleFullWidth = this.columns.filter(c => c.fullWidth).length > 1;
1222
- this.fullWidthTHClass = this.multipleFullWidth ? 'list-view-th-half' : 'list-view-th-full';
1223
- this.fullWidthTDClass = this.multipleFullWidth ? 'list-view-td-half' : 'list-view-td-full';
1224
- }
1225
- // tslint:disable-next-line:no-input-rename
1226
- set tiles(ref) {
1227
- this.tileTemplate = ref;
1228
- if (this.tileTemplate) {
1229
- this.tilesViewSupported = true;
1230
- }
1231
- }
1232
- set details(ref) {
1233
- this.detailsTemplate = ref;
1234
- if (this.detailsTemplate) {
1235
- this.detailsSectionSupported = true;
1236
- }
1237
- }
1238
- ngOnChanges(changes) {
1239
- const tilesCountChange = changes['tiles-count'] || changes.tilesCount;
1240
- if (tilesCountChange) {
1241
- this.setTilesDeckClass(tilesCountChange.currentValue);
1242
- }
1243
- }
1244
- // events
1245
- emitPageChanged($event) {
1246
- this.pageChanged.emit($event);
1247
- }
1248
- emitPageSizeChanged($event) {
1249
- this.pageSizeChanged.emit($event);
1250
- }
1251
- emitSortChanged($event) {
1252
- this.sortChanged.emit($event);
1253
- }
1254
- emitSortdirChanged($event) {
1255
- this.sortdirChanged.emit($event);
1256
- }
1257
- emitAdvancedSearchChanged($event) {
1258
- this.advancedSearchChanged.emit($event);
1259
- }
1260
- toggleDetails(item) {
1261
- item.detailsExpanded = !item.detailsExpanded;
1262
- this.detailsOpened.emit({ item, open: item.detailsExpanded });
1263
- }
1264
- // helpers
1265
- setTilesDeckClass(tiles) {
1266
- if (tiles >= 1 && tiles <= 4) {
1267
- this.tilesDeckClass =
1268
- this.view !== ListViewType.Gallery
1269
- ? `cards-deck-${tiles}`
1270
- : this.items && this.items.length > 0
1271
- ? `gallery-deck-${tiles}`
1272
- : 'gallery-deck';
1273
- }
1274
- else {
1275
- this.tilesDeckClass =
1276
- this.view !== ListViewType.Gallery
1277
- ? 'cards-deck-3'
1278
- : this.items && this.items.length > 0
1279
- ? 'gallery-deck-3'
1280
- : 'gallery-deck';
1281
- }
1282
- }
1283
- }
1284
- ListViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ListViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1285
- ListViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ListViewComponent, selector: "lib-list-view", inputs: { searchOptions: ["search-options", "searchOptions"], filters: "filters", busy: "busy", items: "items", count: "count", page: "page", view: "view", sort: "sort", pageSize: ["page-size", "pageSize"], pageSizeOptions: ["page-size-options", "pageSizeOptions"], sortOptions: ["sort-options", "sortOptions"], sortdir: ["sort-dir", "sortdir"], tilesCount: ["tiles-count", "tilesCount"], showPager: ["show-pager", "showPager"], pagerPosition: ["pager-position", "pagerPosition"], detailsSectionPropertyCount: ["details-section-property-count", "detailsSectionPropertyCount"] }, outputs: { pageChanged: "pageChanged", pageSizeChanged: "pageSizeChanged", detailsOpened: "detailsOpened", sortChanged: "sortChanged", sortdirChanged: "sortdirChanged", advancedSearchChanged: "advancedSearchChanged" }, 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\">\r\n <lib-advanced-search *ngIf=\"searchOptions && searchOptions.length > 0\"\r\n [search-options]=\"searchOptions\"\r\n [filters]=\"filters\"\r\n (advancedSearchChanged)=\"emitAdvancedSearchChanged($event)\"></lib-advanced-search>\r\n\r\n <lib-pager *ngIf=\"showPager && (pagerPosition == 'top' || pagerPosition == 'both')\"\r\n [page]=\"page\"\r\n [page-size]=\"pageSize\"\r\n [count]=\"count\"\r\n [sort-options]=\"sortOptions\"\r\n [sort]=\"sort\"\r\n [sort-dir]=\"sortdir\"\r\n [busy]=\"busy\"\r\n (pageChanged)=\"emitPageChanged($event)\"\r\n (pageSizeChanged)=\"emitPageSizeChanged($event)\"\r\n (sortChanged)=\"emitSortChanged($event)\"\r\n (sortdirChanged)=\"emitSortdirChanged($event)\">\r\n </lib-pager>\r\n</div>\r\n\r\n<ng-container [ngSwitch]=\"view\">\r\n\r\n <ng-container *ngSwitchCase=\"'tiles'\">\r\n <div [class]=\"tilesDeckClass\">\r\n\r\n <lib-skeleton-loader *ngIf=\"busy\"\r\n [count]=\"5\"\r\n [type]=\"'tiles'\"></lib-skeleton-loader>\r\n\r\n <ng-container *ngIf=\"items && items.length > 0\">\r\n <ng-container *ngFor=\"let item of items\">\r\n <span *ngIf=\"!tileTemplate || !tileTemplate.template\">template missing..</span>\r\n <ng-template [ngTemplateOutlet]=\"tileTemplate.template\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <!-- *ngSwitchCase=\"'gallery'\" -->\r\n <ng-container *ngSwitchCase=\"'gallery'\">\r\n <ul role=\"list\"\r\n [class]=\"tilesDeckClass\">\r\n\r\n <lib-skeleton-loader *ngIf=\"busy\"\r\n [count]=\"5\"\r\n [type]=\"'tiles'\"></lib-skeleton-loader>\r\n\r\n <ng-container *ngIf=\"!busy && items && items.length > 0\">\r\n <ng-container *ngFor=\"let item of items\">\r\n <span *ngIf=\"!tileTemplate || !tileTemplate.template\">template missing..</span>\r\n <ng-template [ngTemplateOutlet]=\"tileTemplate.template\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\r\n </ng-container>\r\n </ng-container>\r\n </ul>\r\n </ng-container>\r\n\r\n <!-- *ngSwitchCase=\"'table'\" -->\r\n <ng-container *ngSwitchDefault>\r\n\r\n <div class=\"list-view-container\">\r\n <div class=\"list-view-container-inner\">\r\n <table class=\"list-view-table\">\r\n <thead class=\"list-view-thead\">\r\n <tr>\r\n <ng-container *ngIf=\"detailsSectionSupported\">\r\n <th class=\"list-view-th-details\"></th>\r\n </ng-container>\r\n <ng-container *ngFor=\"let col of columns\">\r\n <th scope=\"col\"\r\n [class]=\"col.fullWidth ? fullWidthTHClass : 'list-view-th'\">\r\n {{col.title}}\r\n </th>\r\n </ng-container>\r\n </tr>\r\n </thead>\r\n <tbody class=\"list-view-tbody\"\r\n *ngIf=\"busy\">\r\n <ng-container *ngFor=\"let item of loaderItems;let i=index\">\r\n <tr class=\"list-view-tr\">\r\n <ng-container *ngIf=\"detailsSectionSupported\">\r\n <td class=\"list-view-td-details\"\r\n *ngIf=\"detailsSectionPropertyCount !== null ? item[detailsSectionPropertyCount] !== 0 : true; else hiddenDetailsButton\">\r\n <button disabled\r\n type=\"button\"\r\n class=\"expand-collapse-button\">\r\n <!-- Heroicon name: solid/plus -->\r\n <i [class]=\"item.detailsExpanded ? collapseIcon : expandIcon\"></i>\r\n </button>\r\n </td>\r\n <ng-template #hiddenDetailsButton>\r\n <td class=\"list-view-td-details\"></td>\r\n </ng-template>\r\n </ng-container>\r\n <td *ngFor=\"let col of columns\"\r\n [class]=\"col.fullWidth ? fullWidthTDClass : 'list-view-td'\">\r\n <div class=\"w-full animate-pulse h-8 bg-gray-200 rounded\"></div>\r\n </td>\r\n </tr>\r\n <ng-container *ngIf=\"detailsSectionSupported\">\r\n <tr *ngIf=\"item.detailsExpanded\">\r\n <td [colSpan]=\"columns.length + 1\"\r\n class=\"list-view-td bg-gray-100\">\r\n <ng-template [ngTemplateOutlet]=\"detailsTemplate.template\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </tbody>\r\n <tbody class=\"list-view-tbody\"\r\n *ngIf=\"!busy\">\r\n <ng-container *ngFor=\"let item of items;let i=index\">\r\n <tr class=\"list-view-tr\">\r\n <ng-container *ngIf=\"detailsSectionSupported\">\r\n <td class=\"list-view-td-details\"\r\n *ngIf=\"detailsSectionPropertyCount !== null ? item[detailsSectionPropertyCount] !== 0 : true; else hiddenDetailsButton\">\r\n <button (click)=\"toggleDetails(item)\"\r\n type=\"button\"\r\n class=\"expand-collapse-button\">\r\n <!-- Heroicon name: solid/plus -->\r\n <i [class]=\"item.detailsExpanded ? collapseIcon : expandIcon\"></i>\r\n </button>\r\n </td>\r\n <ng-template #hiddenDetailsButton>\r\n <td class=\"list-view-td-details\"></td>\r\n </ng-template>\r\n </ng-container>\r\n <td *ngFor=\"let col of columns\"\r\n [class]=\"col.fullWidth ? fullWidthTDClass : 'list-view-td'\">\r\n <ng-template [ngTemplateOutlet]=\"col.template\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\r\n </td>\r\n </tr>\r\n <ng-container *ngIf=\"detailsSectionSupported\">\r\n <tr *ngIf=\"item.detailsExpanded\">\r\n <td [colSpan]=\"columns.length + 1\"\r\n class=\"list-view-td bg-gray-100\">\r\n <ng-template [ngTemplateOutlet]=\"detailsTemplate.template\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!busy && items && items.length === 0\">\r\n <div class=\"cards-deck-1\">\r\n <lib-list-view-empty-state></lib-list-view-empty-state>\r\n </div>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-content></ng-content>\r\n\r\n<div class=\"px-2 mt-2\"\r\n *ngIf=\"items && items.length !== 0 && showPager && (pagerPosition == 'bottom' || pagerPosition == 'both')\">\r\n <lib-pager [page]=\"page\"\r\n [page-size]=\"pageSize\"\r\n [count]=\"count\"\r\n [sort-options]=\"sortOptions\"\r\n [sort]=\"sort\"\r\n [sort-dir]=\"sortdir\"\r\n [busy]=\"busy\"\r\n (pageChanged)=\"emitPageChanged($event)\"\r\n (pageSizeChanged)=\"emitPageSizeChanged($event)\"\r\n (sortChanged)=\"emitSortChanged($event)\"\r\n (sortdirChanged)=\"emitSortdirChanged($event)\">\r\n </lib-pager>\r\n</div>", components: [{ type: AdvancedSearchComponent, selector: "lib-advanced-search", inputs: ["search-options", "filters"], outputs: ["advancedSearchChanged"] }, { type: PagerComponent, selector: "lib-pager", inputs: ["busy", "count", "page", "page-size", "page-size-options", "sort-options", "sort", "sort-dir"], outputs: ["pageChanged", "pageSizeChanged", "sortChanged", "sortdirChanged"] }, { type: SkeletonLoaderComponent, selector: "lib-skeleton-loader", inputs: ["count", "type"] }, { type: ListViewEmptyStateComponent, selector: "lib-list-view-empty-state", inputs: ["title", "sub-title", "new-item-label"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }] });
1286
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ListViewComponent, decorators: [{
1287
- type: Component,
1288
- args: [{
1289
- selector: 'lib-list-view',
1290
- templateUrl: './list-view.component.html'
1291
- }]
1292
- }], ctorParameters: function () { return []; }, propDecorators: { searchOptions: [{
1293
- type: Input,
1294
- args: ['search-options']
1295
- }], filters: [{
1296
- type: Input
1297
- }], busy: [{
1298
- type: Input
1299
- }], items: [{
1300
- type: Input
1301
- }], count: [{
1302
- type: Input
1303
- }], page: [{
1304
- type: Input
1305
- }], view: [{
1306
- type: Input
1307
- }], sort: [{
1308
- type: Input
1309
- }], pageSize: [{
1310
- type: Input,
1311
- args: ['page-size']
1312
- }], pageSizeOptions: [{
1313
- type: Input,
1314
- args: ['page-size-options']
1315
- }], sortOptions: [{
1316
- type: Input,
1317
- args: ['sort-options']
1318
- }], sortdir: [{
1319
- type: Input,
1320
- args: ['sort-dir']
1321
- }], tilesCount: [{
1322
- type: Input,
1323
- args: ['tiles-count']
1324
- }], showPager: [{
1325
- type: Input,
1326
- args: ['show-pager']
1327
- }], pagerPosition: [{
1328
- type: Input,
1329
- args: ['pager-position']
1330
- }], detailsSectionPropertyCount: [{
1331
- type: Input,
1332
- args: ['details-section-property-count']
1333
- }], cols: [{
1334
- type: ContentChildren,
1335
- args: [ListColumnComponent, { read: ListColumnComponent }]
1336
- }], tiles: [{
1337
- type: ContentChild,
1338
- args: [ListTileComponent, { read: ListTileComponent }]
1339
- }], details: [{
1340
- type: ContentChild,
1341
- args: [ListDetailsSectionComponent, { read: ListDetailsSectionComponent }]
1342
- }], pageChanged: [{
1343
- type: Output
1344
- }], pageSizeChanged: [{
1345
- type: Output
1346
- }], detailsOpened: [{
1347
- type: Output
1348
- }], sortChanged: [{
1349
- type: Output
1350
- }], sortdirChanged: [{
1351
- type: Output
1352
- }], advancedSearchChanged: [{
1353
- type: Output
1354
- }] } });
1355
-
1356
- class CollapsiblePanelComponent {
1357
- constructor() {
1358
- this.title = null;
1359
- this.visible = false;
1360
- }
1361
- ngOnInit() {
1362
- }
1363
- }
1364
- CollapsiblePanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CollapsiblePanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1365
- CollapsiblePanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CollapsiblePanelComponent, selector: "lib-collapsible-panel", inputs: { title: "title" }, ngImport: i0, template: "<div class=\"collapsible-panel-container\">\r\n <div class=\"collapsible-panel-container-shadow\">\r\n <div class=\"collapsible-panel-container-inner\">\r\n <button type=\"button\" class=\"collapsible-panel-button\" (click)=\"visible = !visible\">\r\n <div class=\"collapsible-panel-button-content-container\">\r\n <span>{{ title }} </span>\r\n <span class=\"ico-plus\"></span>\r\n </div>\r\n </button>\r\n <div class=\"collapsible-panel-content-container\" *ngIf=\"visible\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1366
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CollapsiblePanelComponent, decorators: [{
1367
- type: Component,
1368
- args: [{
1369
- selector: 'lib-collapsible-panel',
1370
- templateUrl: './collapsible-panel.component.html'
1371
- }]
1372
- }], ctorParameters: function () { return []; }, propDecorators: { title: [{
1373
- type: Input
1374
- }] } });
1375
-
1376
- class KpiTileComponent {
1377
- constructor() {
1378
- this.title = undefined;
1379
- this.busy = false;
1380
- this.kpi = undefined;
1381
- this.hideBtn = false;
1382
- // tslint:disable-next-line:no-output-rename
1383
- this.tileAction = new EventEmitter();
1384
- }
1385
- ngOnInit() {
1386
- }
1387
- emitTileAction($event) {
1388
- $event.preventDefault();
1389
- $event.stopPropagation();
1390
- this.tileAction.emit($event);
1391
- return false;
1392
- }
1393
- }
1394
- KpiTileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KpiTileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1395
- KpiTileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: KpiTileComponent, selector: "lib-kpi-tile", inputs: { title: "title", busy: "busy", kpi: "kpi", hideBtn: "hideBtn" }, outputs: { tileAction: "tile-action" }, ngImport: i0, template: "<div class=\"card\"\r\n [ngClass]=\"{'card-deck-busy' : busy }\">\r\n <div class=\"card-body\">\r\n <div class=\"kpi-tile-title-container\">\r\n <a href=\"#\"\r\n class=\"kpi-tile-action\"\r\n (click)=\"emitTileAction($event)\">{{title || '-'}}</a>\r\n </div>\r\n <p class=\"kpi-tile-value\">{{kpi || '-'}}</p>\r\n <div class=\"card-footer\">\r\n <div class=\"text-xs\">\r\n <a href=\"#\"\r\n class=\"kpi-tile-action\"\r\n [ngClass]=\"{'invisible': hideBtn}\"\r\n (click)=\"emitTileAction($event)\">\u03A0\u03B5\u03C1\u03B9\u03C3\u03C3\u03CC\u03C4\u03B5\u03C1\u03B1</a>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
1396
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KpiTileComponent, decorators: [{
1397
- type: Component,
1398
- args: [{
1399
- selector: 'lib-kpi-tile',
1400
- templateUrl: './kpi-tile.component.html'
1401
- }]
1402
- }], ctorParameters: function () { return []; }, propDecorators: { title: [{
1403
- type: Input
1404
- }], busy: [{
1405
- type: Input
1406
- }], kpi: [{
1407
- type: Input
1408
- }], hideBtn: [{
1409
- type: Input
1410
- }], tileAction: [{
1411
- type: Output,
1412
- args: ['tile-action']
1413
- }] } });
1414
-
1415
- class ToasterService {
1416
- constructor() {
1417
- this.subject = new BehaviorSubject(NULL_TOAST);
1418
- this.toast$ = this.subject.asObservable()
1419
- .pipe(filter(toast => toast !== null && toast.title !== NULL_TOAST.title));
1420
- }
1421
- show(type, title, body, delay) {
1422
- this.subject.next({ type, title, body, delay });
1423
- }
1424
- }
1425
- ToasterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToasterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1426
- ToasterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToasterService, providedIn: 'root' });
1427
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToasterService, decorators: [{
1428
- type: Injectable,
1429
- args: [{
1430
- providedIn: 'root'
1431
- }]
1432
- }], ctorParameters: function () { return []; } });
1433
-
1434
- class ToasterComponent {
1435
- constructor() {
1436
- this.i = 0;
1437
- this.remove = new EventEmitter();
1438
- this.isMobile = false;
1439
- this.closed = false;
1440
- }
1441
- ngOnInit() {
1442
- window.screen.width > 640 ? this.isMobile = false : this.isMobile = true;
1443
- }
1444
- closeToast(index) {
1445
- this.closed = true;
1446
- setTimeout(() => this.remove.emit(index), 100);
1447
- }
1448
- }
1449
- ToasterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToasterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1450
- ToasterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ToasterComponent, selector: "lib-toaster", inputs: { toast: "toast", i: "i" }, outputs: { remove: "remove" }, ngImport: i0, template: "<div aria-live=\"assertive\"\r\n [ngClass]=\"closed ? 'toast-closed': 'toast z-50'\"\r\n [ngStyle]=\"isMobile ? { 'margin-bottom.px': i * 85 } : {'margin-top.px': i * 85 }\">\r\n <div class=\"toast-container\">\r\n <div class=\"toast-pill\">\r\n <div class=\"toast-context-padding\">\r\n <div class=\"toast-context\"\r\n [ngSwitch]=\"toast?.type\">\r\n <div class=\"toast-icon\"\r\n *ngSwitchCase=\"'info'\">\r\n <svg class=\"h-5 w-5 text-blue-400\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n </div>\r\n <div class=\"toast-icon\"\r\n *ngSwitchCase=\"'success'\">\r\n <svg class=\"h-5 w-5 text-green-400\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\" />\r\n </svg>\r\n </div>\r\n <div class=\"toast-icon\"\r\n *ngSwitchCase=\"'error'\">\r\n <svg class=\"h-5 w-5 text-red-400\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n </div>\r\n <div class=\"toast-icon\"\r\n *ngSwitchCase=\"'warning'\">\r\n <svg class=\"h-5 w-5 text-yellow-400\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n </div>\r\n <div class=\"toast-icon\"\r\n *ngSwitchDefault>\r\n <svg class=\"h-5 w-5 text-green-400\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\" />\r\n </svg>\r\n </div>\r\n\r\n <div class=\"ml-3 w-0 flex-1\">\r\n <p class=\"toast-title\"\r\n *ngIf=\"toast?.title\">\r\n {{toast?.title}}\r\n </p>\r\n <p class=\"toast-body\">\r\n {{toast?.body}}\r\n </p>\r\n </div>\r\n <div class=\"toast-close-icon\">\r\n <button class=\"toast-close-button\"\r\n (click)=\"closeToast(i)\">\r\n <span class=\"sr-only\">Close</span>\r\n <!-- Heroicon name: solid/x -->\r\n <svg class=\"h-5 w-5\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1451
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToasterComponent, decorators: [{
1452
- type: Component,
1453
- args: [{
1454
- selector: 'lib-toaster',
1455
- templateUrl: './toaster.component.html'
1456
- }]
1457
- }], ctorParameters: function () { return []; }, propDecorators: { toast: [{
1458
- type: Input
1459
- }], i: [{
1460
- type: Input
1461
- }], remove: [{
1462
- type: Output
1463
- }] } });
1464
-
1465
- class ToasterContainerComponent {
1466
- constructor(toaster) {
1467
- this.toaster = toaster;
1468
- this.toasts = [];
1469
- }
1470
- ngOnInit() {
1471
- this.toaster.toast$
1472
- .subscribe(toast => {
1473
- this.toasts = [toast, ...this.toasts];
1474
- setTimeout(() => this.toasts.pop(), toast.delay || 6000);
1475
- });
1476
- }
1477
- remove(index) {
1478
- this.toasts = this.toasts.slice(0, index).concat(this.toasts.slice(index + 1));
1479
- }
1480
- }
1481
- ToasterContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToasterContainerComponent, deps: [{ token: ToasterService }], target: i0.ɵɵFactoryTarget.Component });
1482
- ToasterContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ToasterContainerComponent, selector: "lib-toaster-container", ngImport: i0, template: "<lib-toaster *ngFor=\"let toast of toasts; let i=index\" [toast]=\"toast\" [i]=\"i\" (remove)=\"remove($event)\"></lib-toaster>\r\n", components: [{ type: ToasterComponent, selector: "lib-toaster", inputs: ["toast", "i"], outputs: ["remove"] }], directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1483
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToasterContainerComponent, decorators: [{
1484
- type: Component,
1485
- args: [{
1486
- selector: 'lib-toaster-container',
1487
- templateUrl: './toaster-container.component.html'
1488
- }]
1489
- }], ctorParameters: function () { return [{ type: ToasterService }]; } });
1490
-
1491
- class AvatarInitialsComponent {
1492
- constructor() {
1493
- this.large = false;
1494
- this.colors = [
1495
- '#EB7181',
1496
- '#468547',
1497
- '#FFD558',
1498
- '#3670B2', // blue
1499
- ];
1500
- }
1501
- ngOnInit() {
1502
- this.createInititals();
1503
- const randomIndex = Math.floor(Math.random() * Math.floor(this.colors.length));
1504
- // assign this to a class if you want to randomly change background colors of the circle.
1505
- this.circleColor = this.colors[randomIndex];
1506
- }
1507
- createInititals() {
1508
- if (this.name) {
1509
- let initials = '';
1510
- for (let i = 0; i < this.name.length; i++) {
1511
- if (this.name.charAt(i) === ' ') {
1512
- continue;
1513
- }
1514
- if (this.name.charAt(i) === this.name.charAt(i).toUpperCase()) {
1515
- initials += this.name.charAt(i);
1516
- if (initials.length === 2) {
1517
- break;
1518
- }
1519
- }
1520
- }
1521
- this.initials = initials;
1522
- }
1523
- }
1524
- }
1525
- AvatarInitialsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AvatarInitialsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1526
- AvatarInitialsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: AvatarInitialsComponent, selector: "lib-avatar-initials", inputs: { name: "name", large: "large" }, ngImport: i0, template: "<div [ngClass]=\"large ? 'avatar-container-large': 'avatar-container'\">\r\n <span [ngClass]=\"large ? 'avatar-text-large': 'avatar-text'\">{{ initials }}</span>\r\n</div>\r\n", directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
1527
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AvatarInitialsComponent, decorators: [{
1528
- type: Component,
1529
- args: [{
1530
- selector: 'lib-avatar-initials',
1531
- templateUrl: './avatar-initials.component.html'
1532
- }]
1533
- }], ctorParameters: function () { return []; }, propDecorators: { name: [{
1534
- type: Input
1535
- }], large: [{
1536
- type: Input
1537
- }] } });
1538
-
1539
- class ToggleComponent {
1540
- constructor() {
1541
- this.valueChange = new EventEmitter();
1542
- this.onChange$ = undefined;
1543
- this.onTouched$ = undefined;
1544
- }
1545
- writeValue(obj) {
1546
- if (obj) {
1547
- this.value = obj || false;
1548
- }
1549
- }
1550
- registerOnChange(fn) {
1551
- this.onChange$ = fn;
1552
- }
1553
- registerOnTouched(fn) {
1554
- this.onTouched$ = fn;
1555
- }
1556
- onBlur(event) {
1557
- if (this.onTouched$) {
1558
- this.onTouched$();
1559
- }
1560
- }
1561
- ngOnInit() {
1562
- }
1563
- changeValue() {
1564
- this.value = !this.value;
1565
- this.valueChange.emit(this.value);
1566
- if (this.onChange$) {
1567
- this.onChange$(this.value);
1568
- }
1569
- if (this.onTouched$) {
1570
- this.onTouched$();
1571
- }
1572
- }
1573
- }
1574
- ToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1575
- ToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ToggleComponent, selector: "lib-toggle", inputs: { value: "value", disabled: "disabled" }, outputs: { valueChange: "valueChange" }, providers: [
1576
- {
1577
- provide: NG_VALUE_ACCESSOR,
1578
- useExisting: forwardRef(() => ToggleComponent),
1579
- multi: true
1580
- }
1581
- ], ngImport: i0, template: "<button type=\"button\"\r\n [ngClass]=\"value ? (disabled ? 'on disabled' : 'on') : 'off'\"\r\n class=\"toggle-button\"\r\n role=\"switch\"\r\n aria-checked=\"false\"\r\n aria-labelledby=\"isPrivate\"\r\n (click)=\"changeValue()\"\r\n (blur)=\"onBlur($event)\"\r\n value=\"{{value}}\"\r\n [disabled]=\"disabled\"\r\n [title]=\"disabled ? '\u03A4\u03BF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03B9\u03B4\u03C9\u03C4\u03B9\u03BA\u03CC' : '\u0399\u03B4\u03B9\u03C9\u03C4\u03B9\u03BA\u03CC'\">\r\n <span aria-hidden=\"true\"\r\n [ngClass]=\"value ? 'enabled-anim' : 'disabled-anim'\"\r\n class=\"toggle-span\"></span>\r\n</button>", directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
1582
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToggleComponent, decorators: [{
1583
- type: Component,
1584
- args: [{
1585
- selector: 'lib-toggle',
1586
- templateUrl: './toggle.component.html',
1587
- providers: [
1588
- {
1589
- provide: NG_VALUE_ACCESSOR,
1590
- useExisting: forwardRef(() => ToggleComponent),
1591
- multi: true
1592
- }
1593
- ]
1594
- }]
1595
- }], ctorParameters: function () { return []; }, propDecorators: { value: [{
1596
- type: Input
1597
- }], disabled: [{
1598
- type: Input
1599
- }], valueChange: [{
1600
- type: Output
1601
- }] } });
1602
-
1603
- class SidePaneComponent {
1604
- constructor(router, document) {
1605
- this.router = router;
1606
- this.document = document;
1607
- // tslint:disable-next-line:no-input-rename
1608
- this.showPane = false;
1609
- this.animate = false;
1610
- this.sizeContainerStyle = 'side-pane-box-size';
1611
- this.overlayStyle = 'side-pane-overlay';
1612
- this.onComplete = new EventEmitter();
1613
- }
1614
- ngOnDestroy() {
1615
- }
1616
- ngOnInit() {
1617
- }
1618
- onSidePaneActivated(component) {
1619
- var _a;
1620
- this.document.body.classList.add('modal-active');
1621
- let sizeStyleSuffix = '';
1622
- const state = (_a = this.router.getCurrentNavigation()) === null || _a === void 0 ? void 0 : _a.extras.state;
1623
- if (state) {
1624
- if (state.paneSize) {
1625
- if (state.paneSize === SidePaneSize.Small25) {
1626
- sizeStyleSuffix = '-25';
1627
- }
1628
- else if (state.paneSize === SidePaneSize.Medium50) {
1629
- sizeStyleSuffix = '-50';
1630
- }
1631
- else if (state.paneSize === SidePaneSize.Large75) {
1632
- sizeStyleSuffix = '-75';
1633
- }
1634
- }
1635
- if (state.paneOverlay) {
1636
- if (state.paneOverlay === SidePaneOverlayType.None) {
1637
- this.overlayStyle = 'side-pane-overlay-opacity-0';
1638
- }
1639
- else if (state.paneOverlay === SidePaneOverlayType.Dark) {
1640
- this.overlayStyle = 'side-pane-overlay-opacity-50';
1641
- }
1642
- else {
1643
- this.overlayStyle = 'side-pane-overlay';
1644
- }
1645
- }
1646
- }
1647
- this.sizeContainerStyle = `side-pane-box-size${sizeStyleSuffix}`;
1648
- this.showPane = true;
1649
- }
1650
- onSidePaneDeactivated($event) {
1651
- this.document.body.classList.remove('modal-active');
1652
- this.showPane = false;
1653
- this.onComplete.emit(true);
1654
- }
1655
- }
1656
- SidePaneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SidePaneComponent, deps: [{ token: i1$1.Router }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
1657
- SidePaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SidePaneComponent, selector: "lib-side-pane", inputs: { showPane: ["visible", "showPane"], animate: "animate" }, outputs: { onComplete: "onComplete" }, ngImport: i0, template: "<div *ngIf=\"showPane\" class=\"side-pane-outer-container\" aria-labelledby=\"slide-over\" role=\"dialog\" aria-modal=\"true\">\r\n <div [class]=\"showPane ? overlayStyle : 'hidden'\" aria-hidden=\"true\"></div>\r\n <div @myInsertRemoveTrigger [class]=\"showPane ? 'side-pane-container' : 'hidden'\">\r\n <div [class]=\"sizeContainerStyle\">\r\n <div class=\"side-pane\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [
1658
- trigger('myInsertRemoveTrigger', [
1659
- transition(':enter', [
1660
- style({ right: '-675px' }),
1661
- animate('300ms ease-in', style({ right: 0 })),
1662
- ]),
1663
- transition(':leave', [
1664
- style({ right: 0 }),
1665
- animate('300ms ease-out', style({ right: '-675px' }))
1666
- ])
1667
- ]),
1668
- ] });
1669
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SidePaneComponent, decorators: [{
1670
- type: Component,
1671
- args: [{
1672
- selector: 'lib-side-pane',
1673
- templateUrl: './side-pane.component.html',
1674
- animations: [
1675
- trigger('myInsertRemoveTrigger', [
1676
- transition(':enter', [
1677
- style({ right: '-675px' }),
1678
- animate('300ms ease-in', style({ right: 0 })),
1679
- ]),
1680
- transition(':leave', [
1681
- style({ right: 0 }),
1682
- animate('300ms ease-out', style({ right: '-675px' }))
1683
- ])
1684
- ]),
1685
- ],
1686
- }]
1687
- }], ctorParameters: function () { return [{ type: i1$1.Router }, { type: undefined, decorators: [{
1688
- type: Inject,
1689
- args: [DOCUMENT]
1690
- }] }]; }, propDecorators: { showPane: [{
1691
- type: Input,
1692
- args: ['visible']
1693
- }], animate: [{
1694
- type: Input,
1695
- args: ['animate']
1696
- }], onComplete: [{
1697
- type: Output
1698
- }] } });
1699
-
1700
- class NavLinksListComponent {
1701
- constructor() {
1702
- // tslint:disable-next-line:no-input-rename
1703
- this.navLinkClass = 'nav-link';
1704
- // tslint:disable-next-line:no-input-rename
1705
- this.navLinkActiveClass = 'nav-link-active';
1706
- // tslint:disable-next-line:no-input-rename
1707
- this.containerClass = undefined;
1708
- // tslint:disable-next-line:no-input-rename
1709
- this.showIcons = false;
1710
- }
1711
- ngOnDestroy() {
1712
- var _a;
1713
- (_a = this.fragmentSub$) === null || _a === void 0 ? void 0 : _a.unsubscribe();
1714
- }
1715
- ngOnInit() {
1716
- var _a;
1717
- this.fragmentSub$ = (_a = this.activeFragment) === null || _a === void 0 ? void 0 : _a.subscribe(fragment => this.fragmentValue = fragment);
1718
- }
1719
- }
1720
- NavLinksListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: NavLinksListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1721
- 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: "\r\n<div [class]=\"containerClass ?? 'nav-link-list-container'\">\r\n <div class=\"nav-link-list-container-inner\">\r\n <ng-container *ngFor=\"let link of links | async\">\r\n <ng-container [ngSwitch]=\"link.type\">\r\n <a *ngSwitchCase=\"'router'\"\r\n href=\"#\"\r\n [routerLink]=\"[link.path]\"\r\n [routerLinkActive]=\"navLinkActiveClass\"\r\n [routerLinkActiveOptions]=\"{ exact: link.exact }\"\r\n [class]=\"navLinkClass\">\r\n <i *ngIf=\"showIcons && link.icon\" [class]=\"link.icon + ' mr-3'\"></i>{{ link.text }}\r\n </a>\r\n <a *ngSwitchCase=\"'external'\"\r\n [href]=\"link.path\"\r\n [attr.target]=\"link.external ? '_blank' : '_self'\"\r\n [class]=\"navLinkClass\">\r\n <i *ngIf=\"showIcons && link.icon\" [class]=\"link.icon+ ' mr-3'\"></i>{{ link.text }}\r\n </a>\r\n <a *ngSwitchCase=\"'fragment'\"\r\n routerLink=\".\"\r\n [fragment]=\"link.path\"\r\n [class]=\"fragmentValue === link.path ? navLinkClass + ' ' + navLinkActiveClass : navLinkClass\">\r\n <i *ngIf=\"showIcons && link.icon\" [class]=\"link.icon+ ' mr-3'\"></i>{{ link.text }}\r\n </a>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\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: i1$1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: i1$1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], exportAs: ["routerLinkActive"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i1.AsyncPipe } });
1722
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: NavLinksListComponent, decorators: [{
1723
- type: Component,
1724
- args: [{
1725
- selector: 'lib-nav-links-list',
1726
- templateUrl: './nav-links-list.component.html'
1727
- }]
1728
- }], ctorParameters: function () { return []; }, propDecorators: { links: [{
1729
- type: Input
1730
- }], activeFragment: [{
1731
- type: Input,
1732
- args: ['active-fragment']
1733
- }], navLinkClass: [{
1734
- type: Input,
1735
- args: ['link-class']
1736
- }], navLinkActiveClass: [{
1737
- type: Input,
1738
- args: ['link-active-class']
1739
- }], containerClass: [{
1740
- type: Input,
1741
- args: ['container-class']
1742
- }], showIcons: [{
1743
- type: Input,
1744
- args: ['show-icons']
1745
- }] } });
1746
-
1747
- class ComboboxComponent {
1748
- constructor() {
1749
- this._debouncer = new Subject();
1750
- this._items = [];
1751
- this._defaultItemsFilter = (item) => {
1752
- const selectedItem = this.selectedItems.find(x => x == item);
1753
- return selectedItem == null || selectedItem == undefined;
1754
- };
1755
- this.id = 'combobox';
1756
- this.itemTemplate = null;
1757
- this.selectedItemsFilter = () => true;
1758
- this.selectedItemTemplate = null;
1759
- this.busy = false;
1760
- this.debounceMs = 1000;
1761
- this.onSearch = new EventEmitter();
1762
- this.onItemSelected = new EventEmitter();
1763
- this.showOptions = false;
1764
- this.selectedItems = [];
1765
- }
1766
- set items(items) {
1767
- if (!this.itemTemplate) {
1768
- this._items = items.filter(this._defaultItemsFilter);
1769
- }
1770
- else {
1771
- this._items = items.filter(this.selectedItemsFilter);
1772
- }
1773
- }
1774
- get items() {
1775
- if (!this.itemTemplate) {
1776
- return this._items.filter(this._defaultItemsFilter);
1777
- }
1778
- else {
1779
- return this._items.filter(this.selectedItemsFilter);
1780
- }
1781
- }
1782
- ngOnInit() {
1783
- this.emitSearchEvent();
1784
- this._debouncer
1785
- .pipe(debounceTime(this.debounceMs), distinctUntilChanged())
1786
- .subscribe((value) => this.emitSearchEvent(value));
1787
- }
1788
- onInputClick() {
1789
- this.showOptions = true;
1790
- }
1791
- onInputClickOutside() {
1792
- this.showOptions = false;
1793
- }
1794
- onInputKeyUp(event) {
1795
- this._debouncer.next(event.currentTarget.value);
1796
- }
1797
- onListItemSelected(item) {
1798
- this.onItemSelected.emit(item);
1799
- this.selectedItems.push(item);
1800
- }
1801
- removeSelectedItem(item) {
1802
- const index = this.selectedItems.indexOf(item);
1803
- if (index > -1) {
1804
- this.selectedItems.splice(index, 1);
1805
- }
1806
- }
1807
- emitSearchEvent(searchTerm = undefined) {
1808
- this.onSearch.emit(searchTerm);
1809
- }
1810
- }
1811
- ComboboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ComboboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1812
- ComboboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ComboboxComponent, selector: "lib-combobox", inputs: { id: "id", items: "items", itemTemplate: "itemTemplate", selectedItemsFilter: "selectedItemsFilter", selectedItemTemplate: "selectedItemTemplate", busy: "busy", debounceMs: "debounceMs" }, outputs: { onSearch: "onSearch", onItemSelected: "onItemSelected" }, ngImport: i0, template: "<div class=\"relative mt-1\">\r\n <form autocomplete=\"off\" [id]=\"id + '-form'\">\r\n <input [id]=\"id + '-input'\" type=\"text\" (click)=\"onInputClick()\" (clickOutside)=\"onInputClickOutside()\" (keyup)=\"onInputKeyUp($event)\"\r\n class=\"w-full rounded-md border border-gray-300 bg-white py-2 pl-3 pr-12 shadow-sm focus:border-indigo-500 focus:outline-none focus:ring-1 focus:ring-indigo-500 sm:text-sm\" role=\"combobox\" aria-controls=\"options\"\r\n aria-expanded=\"false\" autocomplete=\"off\" list=\"autocomplete\">\r\n </form>\r\n <div class=\"absolute inset-y-0 right-0 flex items-center rounded-r-md px-2 focus:outline-none\">\r\n <svg *ngIf=\"!busy\" xmlns=\"http://www.w3.org/2000/svg\" class=\"h-6 w-6 text-gray-400\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\" />\r\n </svg>\r\n <svg *ngIf=\"busy\" class=\"animate-spin h-6 w-6 text-gray-400\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\r\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\r\n <path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\r\n </svg>\r\n </div>\r\n <ul [id]=\"id + '-options'\" *ngIf=\"showOptions\" class=\"absolute z-10 mt-1 max-h-60 w-full overflow-auto rounded-md bg-white py-1 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none sm:text-sm\" role=\"listbox\">\r\n <li *ngFor=\"let item of items; let i = index;\" [id]=\"'option-'+ i\" (click)=\"onListItemSelected(item)\" role=\"option\" tabindex=\"-1\">\r\n <ng-container [ngTemplateOutlet]=\"itemTemplate || defaultItemTemplate\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\r\n </li>\r\n </ul>\r\n</div>\r\n<ul *ngIf=\"selectedItems.length > 0\" role=\"list\" class=\"grid grid-cols-1\">\r\n <li *ngFor=\"let item of selectedItems; let i = index;\" class=\"mt-3\">\r\n <ng-container [ngTemplateOutlet]=\"selectedItemTemplate || defaultSelectedItemTemplate\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\r\n </li>\r\n</ul>\r\n<ng-template #defaultItemTemplate let-item>\r\n <span class=\"hover:bg-gray-100 relative cursor-pointer select-none py-2 pl-3 pr-3 block truncate\">{{ item }}</span>\r\n</ng-template>\r\n<ng-template #defaultSelectedItemTemplate let-item>\r\n <div class=\"grid grid-cols-1\">\r\n <div class=\"relative rounded-lg border border-gray-300 bg-white px-6 py-5 shadow-sm flex items-center space-x-3 hover:border-gray-400\">\r\n <div class=\"flex-1 min-w-0\">\r\n <div class=\"focus:outline-none\">\r\n <span class=\"absolute\" aria-hidden=\"true\"></span>\r\n <p class=\"text-sm font-medium text-gray-900\">{{ item }}</p>\r\n </div>\r\n </div>\r\n <div class=\"ml-4 flex-shrink-0 flex\">\r\n <button type=\"button\" (click)=\"removeSelectedItem(item)\" class=\"cursor-pointer bg-white rounded-md inline-flex text-gray-400 hover:text-gray-500\">\r\n <span class=\"sr-only\">Close</span>\r\n <svg class=\"h-5 w-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>", directives: [{ type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
1813
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ComboboxComponent, decorators: [{
1814
- type: Component,
1815
- args: [{
1816
- selector: 'lib-combobox',
1817
- templateUrl: './combobox.component.html'
1818
- }]
1819
- }], ctorParameters: function () { return []; }, propDecorators: { id: [{
1820
- type: Input
1821
- }], items: [{
1822
- type: Input,
1823
- args: ['items']
1824
- }], itemTemplate: [{
1825
- type: Input
1826
- }], selectedItemsFilter: [{
1827
- type: Input
1828
- }], selectedItemTemplate: [{
1829
- type: Input
1830
- }], busy: [{
1831
- type: Input
1832
- }], debounceMs: [{
1833
- type: Input
1834
- }], onSearch: [{
1835
- type: Output
1836
- }], onItemSelected: [{
1837
- type: Output
1838
- }] } });
1839
-
1840
- const APP_LANGUAGES = new InjectionToken('APP_LANGUAGES');
1841
- const APP_LINKS = new InjectionToken('APP_LINKS');
1842
- const APP_NOTIFICATIONS = new InjectionToken('APP_NOTIFICATIONS');
1843
- const LIBSTEPPER_ACCESSOR = new InjectionToken('LibStepperAccessor');
1844
- const LIBTABGROUP_ACCESSOR = new InjectionToken('LibTabGroupAccessor');
1845
- const SHELL_CONFIG = new InjectionToken('SHELL_CONFIG');
1846
-
1847
- class LibTabComponent {
1848
- constructor(_tabGroup) {
1849
- this._tabGroup = _tabGroup;
1850
- this._isActive = false;
1851
- }
1852
- /** Indicates the index of the tab. */
1853
- get index() {
1854
- var _a, _b;
1855
- return ((_b = (_a = this._tabGroup) === null || _a === void 0 ? void 0 : _a.tabs) === null || _b === void 0 ? void 0 : _b.toArray().indexOf(this)) || undefined;
1856
- }
1857
- /** Indicates whether the tab is active. */
1858
- get isActive() {
1859
- return this._isActive;
1860
- }
1861
- /** Setter for LibTabComponent isActive property. */
1862
- set isActive(isActive) {
1863
- this._isActive = isActive;
1864
- }
1865
- ngOnInit() {
1866
- this.id = this.id || uuid.v4();
1867
- }
1868
- }
1869
- LibTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LibTabComponent, deps: [{ token: LIBTABGROUP_ACCESSOR, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1870
- LibTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: LibTabComponent, selector: "lib-tab", inputs: { label: "label", id: "id" }, viewQueries: [{ propertyName: "content", first: true, predicate: TemplateRef, descendants: true, static: true }], ngImport: i0, template: `
1871
- <ng-template>
1872
- <ng-content></ng-content>
1873
- </ng-template>
1874
- `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1875
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LibTabComponent, decorators: [{
1876
- type: Component,
1877
- args: [{
1878
- selector: 'lib-tab',
1879
- template: `
1880
- <ng-template>
1881
- <ng-content></ng-content>
1882
- </ng-template>
1883
- `,
1884
- encapsulation: ViewEncapsulation.None,
1885
- changeDetection: ChangeDetectionStrategy.OnPush
1886
- }]
1887
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
1888
- type: Optional
1889
- }, {
1890
- type: Inject,
1891
- args: [LIBTABGROUP_ACCESSOR]
1892
- }] }]; }, propDecorators: { content: [{
1893
- type: ViewChild,
1894
- args: [TemplateRef, { static: true }]
1895
- }], label: [{
1896
- type: Input
1897
- }], id: [{
1898
- type: Input
1899
- }] } });
1900
-
1901
- class LibTabGroupComponent {
1902
- constructor() {
1903
- /** The inner tabs of the group. */
1904
- this.tabs = undefined;
1905
- /** Emmited when a step change occurs. */
1906
- this.tabChanged = new EventEmitter();
1907
- }
1908
- /** The current tab. */
1909
- get currentTab() {
1910
- var _a;
1911
- return (_a = this.tabs) === null || _a === void 0 ? void 0 : _a.find(x => x.isActive);
1912
- }
1913
- /** The index (starting from zero) of the current tab. */
1914
- get currentΤabIndex() {
1915
- var _a;
1916
- return ((_a = this.currentTab) === null || _a === void 0 ? void 0 : _a.index) || undefined;
1917
- }
1918
- ngOnInit() { }
1919
- ngAfterContentInit() {
1920
- if (!this.tabs) {
1921
- return;
1922
- }
1923
- }
1924
- ngAfterContentChecked() {
1925
- if (this.tabs && this.tabs.length > 0) {
1926
- const anyActive = this.tabs.filter(x => x.isActive).length > 0;
1927
- if (!anyActive) {
1928
- this.tabs.get(0).isActive = true;
1929
- }
1930
- }
1931
- }
1932
- onTabChanged(selectedTab) {
1933
- this.tabs.forEach((tab) => tab.isActive = tab.id === selectedTab.id);
1934
- this.tabChanged.emit(selectedTab);
1935
- }
1936
- onTabSelectChanged(selectedTabIndex) {
1937
- var _a;
1938
- this.tabs.forEach((tab, index) => tab.isActive = index === selectedTabIndex);
1939
- this.tabChanged.emit((_a = this.tabs) === null || _a === void 0 ? void 0 : _a.get(selectedTabIndex));
1940
- }
1941
- }
1942
- LibTabGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LibTabGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1943
- LibTabGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: LibTabGroupComponent, selector: "lib-tab-group", outputs: { tabChanged: "tabChanged" }, providers: [
1944
- { provide: LIBTABGROUP_ACCESSOR, useExisting: forwardRef(() => LibTabGroupComponent) }
1945
- ], queries: [{ propertyName: "tabs", predicate: LibTabComponent, descendants: true }], ngImport: i0, template: "<div class=\"tab-group-select-hidden\">\r\n <label for=\"tabs\" class=\"sr-only\">Select a tab</label>\r\n <select id=\"tabs\" name=\"tabs\" (change)=\"onTabSelectChanged(+tabsSelect.value)\" class=\"tab-group-select\" #tabsSelect>\r\n <option [value]=\"i\" *ngFor=\"let tab of tabs; let i = index\">{{ tab.label }}</option>\r\n </select>\r\n</div>\r\n<div class=\"tab-group-container-hidden\">\r\n <div class=\"tab-group-container\">\r\n <nav class=\"tab-group-container-nav\" aria-label=\"Tabs\">\r\n <a *ngFor=\"let tab of tabs\" href=\"javascript:void(0)\" [class.tab]=\"!tab.isActive\" [class.tab-active]=\"tab.isActive\" (click)=\"onTabChanged(tab)\">\r\n {{ tab.label }}\r\n </a>\r\n </nav>\r\n </div>\r\n</div>\r\n<div *ngIf=\"currentTab?.content\">\r\n <ng-container [ngTemplateOutlet]=\"currentTab!.content\"></ng-container>\r\n</div>", directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
1946
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LibTabGroupComponent, decorators: [{
1947
- type: Component,
1948
- args: [{
1949
- selector: 'lib-tab-group',
1950
- templateUrl: './lib-tab-group.component.html',
1951
- providers: [
1952
- { provide: LIBTABGROUP_ACCESSOR, useExisting: forwardRef(() => LibTabGroupComponent) }
1953
- ]
1954
- }]
1955
- }], ctorParameters: function () { return []; }, propDecorators: { tabs: [{
1956
- type: ContentChildren,
1957
- args: [LibTabComponent, { descendants: true }]
1958
- }], tabChanged: [{
1959
- type: Output
1960
- }] } });
1961
-
1962
- class LibStepInfoDirective {
1963
- constructor(template) {
1964
- this.template = template;
1965
- }
1966
- }
1967
- LibStepInfoDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LibStepInfoDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
1968
- LibStepInfoDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: LibStepInfoDirective, selector: "[libStepInfo]", ngImport: i0 });
1969
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LibStepInfoDirective, decorators: [{
1970
- type: Directive,
1971
- args: [{
1972
- selector: '[libStepInfo]',
1973
- }]
1974
- }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
1975
-
1976
- class LibStepLabelDirective {
1977
- constructor(template) {
1978
- this.template = template;
1979
- }
1980
- }
1981
- LibStepLabelDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LibStepLabelDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
1982
- LibStepLabelDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: LibStepLabelDirective, selector: "[libStepLabel]", ngImport: i0 });
1983
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LibStepLabelDirective, decorators: [{
1984
- type: Directive,
1985
- args: [{
1986
- selector: '[libStepLabel]',
1987
- }]
1988
- }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
1989
-
1990
- var StepState;
1991
- (function (StepState) {
1992
- StepState["Active"] = "Active";
1993
- StepState["Completed"] = "Completed";
1994
- StepState["Upcoming"] = "Upcoming";
1995
- })(StepState || (StepState = {}));
1996
- ;
1997
- class LibStepComponent {
1998
- constructor(_stepper) {
1999
- this._stepper = _stepper;
2000
- }
2001
- /** Indicates the index of the step. */
2002
- get index() {
2003
- return this._stepper ? this._stepper.steps.toArray().indexOf(this) : -1;
2004
- }
2005
- /** Indicates whether this step is the last step. */
2006
- get isLast() {
2007
- return this._stepper ? this._stepper.steps.length - 1 === this.index : false;
2008
- }
2009
- /** Indicates whether you can navigate to the step or not. */
2010
- get isValid() {
2011
- if (!this.stepControl) {
2012
- return true;
2013
- }
2014
- return this.stepControl.valid;
2015
- }
2016
- /** Shows the current state of the step. */
2017
- get state() {
2018
- var _a;
2019
- const currentIndex = (_a = this._stepper) === null || _a === void 0 ? void 0 : _a.currentStepIndex;
2020
- if (currentIndex === this.index) {
2021
- return StepState.Active;
2022
- }
2023
- if (currentIndex > this.index) {
2024
- return StepState.Completed;
2025
- }
2026
- return StepState.Upcoming;
2027
- }
2028
- }
2029
- LibStepComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LibStepComponent, deps: [{ token: LIBSTEPPER_ACCESSOR, optional: true }], target: i0.ɵɵFactoryTarget.Component });
2030
- LibStepComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: LibStepComponent, selector: "lib-step", inputs: { class: "class", stepControl: "stepControl" }, queries: [{ propertyName: "stepLabel", first: true, predicate: LibStepLabelDirective, descendants: true }, { propertyName: "stepInfo", first: true, predicate: LibStepInfoDirective, descendants: true }], viewQueries: [{ propertyName: "content", first: true, predicate: TemplateRef, descendants: true, static: true }], ngImport: i0, template: `
2031
- <ng-template>
2032
- <ng-content></ng-content>
2033
- </ng-template>
2034
- `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
2035
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LibStepComponent, decorators: [{
2036
- type: Component,
2037
- args: [{
2038
- selector: 'lib-step',
2039
- template: `
2040
- <ng-template>
2041
- <ng-content></ng-content>
2042
- </ng-template>
2043
- `,
2044
- encapsulation: ViewEncapsulation.None,
2045
- changeDetection: ChangeDetectionStrategy.OnPush
2046
- }]
2047
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
2048
- type: Optional
2049
- }, {
2050
- type: Inject,
2051
- args: [LIBSTEPPER_ACCESSOR]
2052
- }] }]; }, propDecorators: { content: [{
2053
- type: ViewChild,
2054
- args: [TemplateRef, { static: true }]
2055
- }], stepLabel: [{
2056
- type: ContentChild,
2057
- args: [LibStepLabelDirective]
2058
- }], stepInfo: [{
2059
- type: ContentChild,
2060
- args: [LibStepInfoDirective]
2061
- }], class: [{
2062
- type: Input
2063
- }], stepControl: [{
2064
- type: Input
2065
- }] } });
2066
-
2067
- var StepperType;
2068
- (function (StepperType) {
2069
- StepperType["Bullets"] = "Bullets";
2070
- StepperType["BulletsAndText"] = "BulletsAndText";
2071
- StepperType["Circles"] = "Circles";
2072
- StepperType["CirclesWithText"] = "CirclesWithText";
2073
- StepperType["Panels"] = "Panels";
2074
- StepperType["PanelsWithBorder"] = "PanelsWithBorder";
2075
- StepperType["Progress"] = "Progress";
2076
- StepperType["Simple"] = "Simple";
2077
- })(StepperType || (StepperType = {}));
2078
-
2079
- class LibStepperComponent {
2080
- constructor(_changeDetectorRef) {
2081
- this._changeDetectorRef = _changeDetectorRef;
2082
- // Private properties.
2083
- this._currentStepIndex = 0;
2084
- this._isCompleted = false;
2085
- /** Emmited when a step change occurs. */
2086
- this.stepChanged = new EventEmitter();
2087
- /** Emmited when the stepper navigates away from the final step. Only emits once. */
2088
- this.completed = new EventEmitter();
2089
- /** Indicates whether each step has to be validated before proceeding to the next. */
2090
- this.linear = false;
2091
- /** The type of the stepper. */
2092
- this.type = StepperType.Panels;
2093
- this.StepState = StepState;
2094
- this.StepperType = StepperType;
2095
- }
2096
- /** The current wizard step. */
2097
- get currentStep() {
2098
- var _a;
2099
- return (_a = this.steps) === null || _a === void 0 ? void 0 : _a.get(this._currentStepIndex);
2100
- }
2101
- /** The index (starting from zero) of the current wizard step. */
2102
- get currentStepIndex() {
2103
- return this._currentStepIndex;
2104
- }
2105
- /** Indicates whether stepper can go a step back. */
2106
- get canGoBack() {
2107
- return this._currentStepIndex > 0;
2108
- }
2109
- /** Indicates whether stepper can go a step forward. */
2110
- get canGoForward() {
2111
- var _a;
2112
- return this._currentStepIndex < ((_a = this.steps) === null || _a === void 0 ? void 0 : _a.length) - 1;
2113
- }
2114
- /** Indicates whether */
2115
- get isCompleted() {
2116
- return this._isCompleted;
2117
- }
2118
- ngOnInit() { }
2119
- ngAfterViewChecked() {
2120
- this._changeDetectorRef.detectChanges();
2121
- }
2122
- /** Proceeds to the next step, if any. */
2123
- goToNextStep() {
2124
- var _a;
2125
- if (((_a = this.currentStep) === null || _a === void 0 ? void 0 : _a.isLast) && !this._isCompleted) {
2126
- this._isCompleted = true;
2127
- this.completed.emit();
2128
- }
2129
- if (!this.canGoForward) {
2130
- return;
2131
- }
2132
- this.updateCurrentStepIndex(this._currentStepIndex + 1);
2133
- }
2134
- /** Proceeds to the previous step, if any. */
2135
- goToPreviousStep() {
2136
- if (!this.canGoBack) {
2137
- return;
2138
- }
2139
- this.updateCurrentStepIndex(this._currentStepIndex - 1);
2140
- }
2141
- onSelectStep(selectedStep) {
2142
- this.updateCurrentStepIndex(selectedStep.index);
2143
- }
2144
- updateCurrentStepIndex(newIndex) {
2145
- const stepsArray = this.steps.toArray();
2146
- const currentStep = stepsArray[this.currentStepIndex];
2147
- const shouldStop = this.linear && ((!currentStep.isValid && newIndex >= this.currentStepIndex) || // If current step is invalid and want to go forward, then stop.
2148
- (currentStep.isValid && newIndex > this.currentStepIndex + 1 && stepsArray.slice(this.currentStepIndex + 1, newIndex).some(x => !x.isValid)) // If going forward (more than 1 steps), check if there are any invalid steps in between.
2149
- );
2150
- if (shouldStop) {
2151
- return;
2152
- }
2153
- this.stepChanged.emit({
2154
- selectedIndex: newIndex,
2155
- previouslySelectedIndex: this.currentStepIndex,
2156
- selectedStep: stepsArray[newIndex],
2157
- previouslySelectedStep: currentStep
2158
- });
2159
- this._currentStepIndex = newIndex;
2160
- }
2161
- }
2162
- LibStepperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LibStepperComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
2163
- LibStepperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: LibStepperComponent, selector: "lib-stepper", inputs: { linear: "linear", type: "type" }, outputs: { stepChanged: "stepChanged", completed: "completed" }, providers: [
2164
- { provide: LIBSTEPPER_ACCESSOR, useExisting: forwardRef(() => LibStepperComponent) }
2165
- ], queries: [{ propertyName: "steps", predicate: LibStepComponent, descendants: true }], ngImport: i0, template: "<ng-container [ngSwitch]=\"type\">\r\n <!-- Bullets -->\r\n <nav class=\"stepper-bullets-container\" aria-label=\"Progress\" *ngSwitchCase=\"StepperType.Bullets\">\r\n <p class=\"stepper-bullets-counter\">Step {{ currentStepIndex + 1 }} of {{ steps.length }}</p>\r\n <ol role=\"list\" class=\"stepper-bullets-ol\">\r\n <li class=\"cursor-pointer\" *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\">\r\n <!-- Completed Step -->\r\n <div class=\"stepper-bullets-completed-step\" *ngIf=\"step.state === StepState.Completed\">\r\n <span class=\"sr-only\">Step {{ step.index }}</span>\r\n </div>\r\n <!-- Active Step -->\r\n <div class=\"stepper-bullets-active-step\" aria-current=\"step\" *ngIf=\"step.state === StepState.Active\">\r\n <span class=\"stepper-bullets-active-step-level1\" aria-hidden=\"true\">\r\n <span class=\"stepper-bullets-active-step-level1\"></span>\r\n </span>\r\n <span class=\"stepper-bullets-active-step-bullet\" aria-hidden=\"true\"></span>\r\n <span class=\"sr-only\">Step {{ step.index }}</span>\r\n </div>\r\n <!-- Upcoming Step -->\r\n <div href=\"#\" class=\"stepper-bullets-upcoming-step\" *ngIf=\"step.state === StepState.Upcoming\">\r\n <span class=\"sr-only\">Step {{ step.index }}</span>\r\n </div>\r\n </li>\r\n </ol>\r\n </nav>\r\n <!-- Bullets & Text -->\r\n <div class=\"stepper-bullets-and-text-container\" aria-label=\"Progress\" *ngSwitchCase=\"StepperType.BulletsAndText\">\r\n <nav aria-label=\"Progress\">\r\n <ol role=\"list\" class=\"stepper-bullets-and-text-ol\">\r\n <li class=\"cursor-pointer\" *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\">\r\n <!-- Complete Step -->\r\n <div class=\"group\" *ngIf=\"step.state === StepState.Completed\">\r\n <span class=\"stepper-bullets-and-text-completed-step\">\r\n <span class=\"stepper-bullets-and-text-completed-step-level1\">\r\n <svg class=\"h-full w-full text-blue-600 group-hover:text-blue-800\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\" clip-rule=\"evenodd\" />\r\n </svg>\r\n </span>\r\n <span class=\"stepper-bullets-and-text-completed-step-container\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </span>\r\n </div>\r\n <!-- Active Step -->\r\n <div class=\"stepper-bullets-and-text-active-step\" aria-current=\"step\" *ngIf=\"step.state === StepState.Active\">\r\n <span class=\"stepper-bullets-and-text-active-step-level1\" aria-hidden=\"true\">\r\n <span class=\"stepper-bullets-and-text-active-step-level11\"></span>\r\n <span class=\"stepper-bullets-and-text-active-step-level12\"></span>\r\n </span>\r\n <span class=\"stepper-bullets-and-text-active-step-container\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </div>\r\n <!-- Upcoming Step -->\r\n <div class=\"group\" *ngIf=\"step.state === StepState.Upcoming\">\r\n <div class=\"stepper-bullets-and-text-upcoming-step\">\r\n <div class=\"stepper-bullets-and-text-upcoming-step-level1\" aria-hidden=\"true\">\r\n <div class=\"stepper-bullets-and-text-upcoming-step-level2\"></div>\r\n </div>\r\n <p class=\"stepper-bullets-and-text-upcoming-step-container\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </p>\r\n </div>\r\n </div>\r\n </li>\r\n </ol>\r\n </nav>\r\n </div>\r\n <!-- Circles -->\r\n <nav class=\"flex justify-center\" aria-label=\"Progress\" *ngSwitchCase=\"StepperType.Circles\">\r\n <ol class=\"flex items-center\" role=\"list\">\r\n <li *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\" class=\"relative pr-8 sm:pr-20 cursor-pointer\">\r\n <!-- Completed Step -->\r\n <ng-container *ngIf=\"step.state === StepState.Completed\">\r\n <div class=\"absolute inset-0 flex items-center\" aria-hidden=\"true\">\r\n <div class=\"h-0.5 w-full bg-blue-600\"></div>\r\n </div>\r\n <div class=\"relative w-8 h-8 flex items-center justify-center bg-blue-600 rounded-full hover:bg-blue-900\">\r\n <svg class=\"w-5 h-5 text-white\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\" d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\" clip-rule=\"evenodd\" />\r\n </svg>\r\n <span class=\"sr-only\">Step {{ step.index + 1 }}</span>\r\n </div>\r\n </ng-container>\r\n <!-- Active Step -->\r\n <ng-container *ngIf=\"step.state === StepState.Active\">\r\n <div class=\"absolute inset-0 flex items-center\" aria-hidden=\"true\">\r\n <div class=\"h-0.5 w-full bg-gray-200\"></div>\r\n </div>\r\n <div class=\"relative w-8 h-8 flex items-center justify-center bg-white border-2 border-blue-600 rounded-full\" aria-current=\"step\">\r\n <span class=\"h-2.5 w-2.5 bg-blue-600 rounded-full\" aria-hidden=\"true\"></span>\r\n <span class=\"sr-only\">Step {{ step.index + 1 }}</span>\r\n </div>\r\n </ng-container>\r\n <!-- Upcoming Step -->\r\n <ng-container *ngIf=\"step.state === StepState.Upcoming\">\r\n <div class=\"absolute inset-0 flex items-center\" aria-hidden=\"true\">\r\n <div class=\"h-0.5 w-full bg-gray-200\"></div>\r\n </div>\r\n <div class=\"group relative w-8 h-8 flex items-center justify-center bg-white border-2 border-gray-300 rounded-full hover:border-gray-400\">\r\n <span class=\"h-2.5 w-2.5 bg-transparent rounded-full group-hover:bg-gray-300\" aria-hidden=\"true\"></span>\r\n <span class=\"sr-only\">Step {{ step.index + 1 }}</span>\r\n </div>\r\n </ng-container>\r\n </li>\r\n </ol>\r\n </nav>\r\n <!-- Circles With Text -->\r\n <nav class=\"flex items-center justify-center\" aria-label=\"Progress\" *ngSwitchCase=\"StepperType.CirclesWithText\">\r\n <ol role=\"list\" class=\"overflow-hidden\">\r\n <li *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\" class=\"relative pb-10 cursor-pointer\">\r\n <!-- Complete Step -->\r\n <ng-container *ngIf=\"step.state === StepState.Completed\">\r\n <div class=\"-ml-px absolute mt-0.5 top-4 left-4 w-0.5 h-full bg-blue-600\" aria-hidden=\"true\" *ngIf=\"!step.isLast\"></div>\r\n <div class=\"relative flex items-start group\">\r\n <span class=\"h-9 flex items-center\">\r\n <span class=\"relative z-10 w-8 h-8 flex items-center justify-center bg-blue-600 rounded-full group-hover:bg-blue-800\">\r\n <svg class=\"w-5 h-5 text-white\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\" d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\" clip-rule=\"evenodd\" />\r\n </svg>\r\n </span>\r\n </span>\r\n <span class=\"ml-4 min-w-0 flex flex-col\">\r\n <span class=\"text-xs font-semibold tracking-wide uppercase\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n <span class=\"text-sm text-gray-500\" *ngIf=\"step.stepInfo\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\r\n </span>\r\n </span>\r\n </div>\r\n </ng-container>\r\n <!-- Active Step -->\r\n <ng-container *ngIf=\"step.state === StepState.Active\">\r\n <div class=\"-ml-px absolute mt-0.5 top-4 left-4 w-0.5 h-full bg-gray-300\" aria-hidden=\"true\" *ngIf=\"!step.isLast\"></div>\r\n <div class=\"relative flex items-start group\" aria-current=\"step\">\r\n <span class=\"h-9 flex items-center\" aria-hidden=\"true\">\r\n <span class=\"relative z-10 w-8 h-8 flex items-center justify-center bg-white border-2 border-blue-600 rounded-full\">\r\n <span class=\"h-2.5 w-2.5 bg-blue-600 rounded-full\"></span>\r\n </span>\r\n </span>\r\n <span class=\"ml-4 min-w-0 flex flex-col\">\r\n <span class=\"text-xs font-semibold tracking-wide uppercase text-blue-600\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n <span class=\"text-sm text-gray-500\" *ngIf=\"step.stepInfo\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\r\n </span>\r\n </span>\r\n </div>\r\n </ng-container>\r\n <!-- Upcoming Step -->\r\n <ng-container *ngIf=\"step.state === StepState.Upcoming\">\r\n <div class=\"-ml-px absolute mt-0.5 top-4 left-4 w-0.5 h-full bg-gray-300\" aria-hidden=\"true\" *ngIf=\"!step.isLast\"></div>\r\n <div href=\"#\" class=\"relative flex items-start group\">\r\n <span class=\"h-9 flex items-center\" aria-hidden=\"true\">\r\n <span class=\"relative z-10 w-8 h-8 flex items-center justify-center bg-white border-2 border-gray-300 rounded-full group-hover:border-gray-400\">\r\n <span class=\"h-2.5 w-2.5 bg-transparent rounded-full group-hover:bg-gray-300\"></span>\r\n </span>\r\n </span>\r\n <span class=\"ml-4 min-w-0 flex flex-col\">\r\n <span class=\"text-xs font-semibold tracking-wide uppercase text-gray-500\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n <span class=\"text-sm text-gray-500\" *ngIf=\"step.stepInfo\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\r\n </span>\r\n </span>\r\n </div>\r\n </ng-container>\r\n </li>\r\n </ol>\r\n </nav>\r\n <!-- Panels -->\r\n <nav aria-label=\"Progress\" *ngSwitchCase=\"StepperType.Panels\">\r\n <ol role=\"list\" class=\"border border-gray-300 rounded-md divide-y divide-gray-300 md:flex md:divide-y-0\">\r\n <li *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\" class=\"relative md:flex-1 md:flex cursor-pointer\">\r\n <!-- Completed step -->\r\n <div class=\"group flex items-center w-full\" *ngIf=\"step.state === StepState.Completed\">\r\n <span class=\"px-6 py-4 flex items-center text-sm font-medium\">\r\n <span class=\"flex-shrink-0 w-10 h-10 flex items-center justify-center bg-blue-600 rounded-full group-hover:bg-blue-800\">\r\n <svg class=\"w-6 h-6 text-white\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\" d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\" clip-rule=\"evenodd\" />\r\n </svg>\r\n </span>\r\n <span class=\"ml-4 text-sm font-medium text-gray-900\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </span>\r\n </div>\r\n <!-- Active step -->\r\n <div class=\"px-6 py-4 flex items-center text-sm font-medium\" *ngIf=\"step.state === StepState.Active\">\r\n <span class=\"flex-shrink-0 w-10 h-10 flex items-center justify-center border-2 border-blue-600 rounded-full\">\r\n <span class=\"text-blue-600\">{{ (step.index + 1) }}</span>\r\n </span>\r\n <span class=\"ml-4 text-sm font-medium text-blue-600\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </div>\r\n <!-- Upcoming step -->\r\n <div class=\"group flex items-center\" *ngIf=\"step.state === StepState.Upcoming\">\r\n <span class=\"px-6 py-4 flex items-center text-sm font-medium\">\r\n <span class=\"flex-shrink-0 w-10 h-10 flex items-center justify-center border-2 border-gray-300 rounded-full group-hover:border-gray-400\">\r\n <span class=\"text-gray-500 group-hover:text-gray-900\">{{ (step.index + 1) }}</span>\r\n </span>\r\n <span class=\"ml-4 text-sm font-medium text-gray-500 group-hover:text-gray-900\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </span>\r\n </div>\r\n <!-- Arrow separator for lg screens and up -->\r\n <div *ngIf=\"!step.isLast\" class=\"hidden md:block absolute top-0 right-0 h-full w-5\" aria-hidden=\"true\">\r\n <svg class=\"h-full w-full text-gray-300\" viewBox=\"0 0 22 80\" fill=\"none\" preserveAspectRatio=\"none\">\r\n <path d=\"M0 -2L20 40L0 82\" vector-effect=\"non-scaling-stroke\" stroke=\"currentcolor\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </li>\r\n </ol>\r\n </nav>\r\n <!-- Panels With Border -->\r\n <div class=\"panels-with-border-container\" *ngSwitchCase=\"StepperType.PanelsWithBorder\">\r\n <nav class=\"panels-with-border-nav\" aria-label=\"Progress\">\r\n <ol role=\"list\" class=\"panels-with-border-ol\">\r\n <li *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\" class=\"panels-with-border-li\">\r\n <!-- Completed Step -->\r\n <div class=\"panels-with-border-completed-step\" *ngIf=\"step.state === StepState.Completed\">\r\n <div class=\"group\">\r\n <span class=\"panels-with-border-completed-step-level1\" aria-hidden=\"true\"></span>\r\n <span class=\"panels-with-border-completed-step-level2\">\r\n <span class=\"panels-with-border-completed-step-level21\">\r\n <span class=\"panels-with-border-completed-step-level211\">\r\n <svg class=\"w-6 h-6 text-white\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\" d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\" clip-rule=\"evenodd\" />\r\n </svg>\r\n </span>\r\n </span>\r\n <span class=\"panels-with-border-completed-step-level22\">\r\n <span class=\"panels-with-border-completed-step-level221\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n <span class=\"panels-with-border-completed-step-level222\" *ngIf=\"step.stepInfo\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\r\n </span>\r\n </span>\r\n </span>\r\n </div>\r\n </div>\r\n <!-- Active Step -->\r\n <div class=\"panels-with-border-active-step\" *ngIf=\"step.state === StepState.Active\">\r\n <div aria-current=\"step\">\r\n <span class=\"panels-with-border-active-step-level1\" aria-hidden=\"true\"></span>\r\n <span class=\"panels-with-border-active-step-level2\">\r\n <span class=\"panels-with-border-active-step-level21\">\r\n <span class=\"panels-with-border-active-step-level211\">\r\n <span class=\"panels-with-border-active-step-level211-text\">{{ step.index + 1 }}</span>\r\n </span>\r\n </span>\r\n <span class=\"panels-with-border-active-step-level22\">\r\n <span class=\"panels-with-border-active-step-level221\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n <span class=\"panels-with-border-active-step-level222\" *ngIf=\"step.stepInfo\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\r\n </span>\r\n </span>\r\n </span>\r\n </div>\r\n <!-- Separator -->\r\n <div class=\"panels-with-border-step-separator\" aria-hidden=\"true\" *ngIf=\"step.index !== 0\">\r\n <svg class=\"h-full w-full text-gray-300\" viewBox=\"0 0 12 82\" fill=\"none\" preserveAspectRatio=\"none\">\r\n <path d=\"M0.5 0V31L10.5 41L0.5 51V82\" stroke=\"currentcolor\" vector-effect=\"non-scaling-stroke\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <!-- Upcoming Step -->\r\n <div class=\"panels-with-border-upcoming-step\" *ngIf=\"step.state === StepState.Upcoming\">\r\n <div class=\"group\">\r\n <span class=\"panels-with-border-upcoming-step-level1\" aria-hidden=\"true\"></span>\r\n <span class=\"panels-with-border-upcoming-step-level2\">\r\n <span class=\"panels-with-border-upcoming-step-level21\">\r\n <span class=\"panels-with-border-upcoming-step-level211\">\r\n <span class=\"panels-with-border-upcoming-step-level211-text\">{{ step.index + 1 }}</span>\r\n </span>\r\n </span>\r\n <span class=\"panels-with-border-upcoming-step-level22\">\r\n <span class=\"panels-with-border-upcoming-step-level221\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n <span class=\"text-sm font-medium text-gray-500\" *ngIf=\"step.stepInfo\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\r\n </span>\r\n </span>\r\n </span>\r\n </div>\r\n <!-- Separator -->\r\n <div class=\"panels-with-border-step-separator\" aria-hidden=\"true\" *ngIf=\"step.index !== 0\">\r\n <svg class=\"h-full w-full text-gray-300\" viewBox=\"0 0 12 82\" fill=\"none\" preserveAspectRatio=\"none\">\r\n <path d=\"M0.5 0V31L10.5 41L0.5 51V82\" stroke=\"currentcolor\" vector-effect=\"non-scaling-stroke\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </li>\r\n </ol>\r\n </nav>\r\n </div>\r\n <!-- Progress -->\r\n <div *ngSwitchCase=\"StepperType.Progress\">\r\n <div class=\"mt-6\" aria-hidden=\"true\">\r\n <div class=\"bg-gray-200 rounded-full overflow-hidden\">\r\n <div class=\"h-2 bg-blue-600 rounded-full\" [style.width]=\"(((currentStepIndex + 1) / steps.length) * 100) + '%'\"></div>\r\n </div>\r\n <div class=\"hidden sm:grid grid-cols-4 text-sm font-medium text-gray-600 mt-6\">\r\n <div *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\" class=\"text-blue-600 cursor-pointer\">\r\n <ng-container *ngIf=\"step.stepLabel\" [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Simple -->\r\n <nav aria-label=\"Progress\" *ngSwitchCase=\"StepperType.Simple\">\r\n <ol role=\"list\" class=\"space-y-4 md:flex md:space-y-0 md:space-x-8\">\r\n <li *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\" class=\"md:flex-1 cursor-pointer\">\r\n <!-- Completed Step -->\r\n <div class=\"group pl-4 py-2 flex flex-col border-l-4 border-blue-600 hover:border-blue-800 md:pl-0 md:pt-4 md:pb-0 md:border-l-0 md:border-t-4\" *ngIf=\"step.state === StepState.Completed\">\r\n <span class=\"text-xs text-blue-600 font-semibold tracking-wide uppercase group-hover:text-blue-800\">Step {{ step.index + 1 }}</span>\r\n <span class=\"text-sm font-medium\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </div>\r\n <!-- Active Step -->\r\n <div class=\"pl-4 py-2 flex flex-col border-l-4 border-blue-600 md:pl-0 md:pt-4 md:pb-0 md:border-l-0 md:border-t-4\" aria-current=\"step\" *ngIf=\"step.state === StepState.Active\">\r\n <span class=\"text-xs text-blue-600 font-semibold tracking-wide uppercase\">Step {{ step.index + 1 }}</span>\r\n <span class=\"text-sm font-medium\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </div>\r\n <!-- Upcoming Step -->\r\n <div class=\"group pl-4 py-2 flex flex-col border-l-4 border-gray-200 hover:border-gray-300 md:pl-0 md:pt-4 md:pb-0 md:border-l-0 md:border-t-4\" *ngIf=\"step.state === StepState.Upcoming\">\r\n <span class=\"text-xs text-gray-500 font-semibold tracking-wide uppercase group-hover:text-gray-700\">Step {{ step.index + 1 }}</span>\r\n <span class=\"text-sm font-medium\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </div>\r\n </li>\r\n </ol>\r\n </nav>\r\n</ng-container>\r\n<ng-container *ngFor=\"let step of steps\">\r\n <ng-container *ngIf=\"step.state === StepState.Active\" [ngTemplateOutlet]=\"step.content\"></ng-container>\r\n</ng-container>", directives: [{ type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
2166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LibStepperComponent, decorators: [{
2167
- type: Component,
2168
- args: [{
2169
- selector: 'lib-stepper',
2170
- templateUrl: './lib-stepper.component.html',
2171
- providers: [
2172
- { provide: LIBSTEPPER_ACCESSOR, useExisting: forwardRef(() => LibStepperComponent) }
2173
- ]
2174
- }]
2175
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { steps: [{
2176
- type: ContentChildren,
2177
- args: [LibStepComponent, { descendants: true }]
2178
- }], stepChanged: [{
2179
- type: Output
2180
- }], completed: [{
2181
- type: Output
2182
- }], linear: [{
2183
- type: Input
2184
- }], type: [{
2185
- type: Input
2186
- }] } });
2187
-
2188
- class DynamicComponentHostDirective {
2189
- constructor(viewContainerRef) {
2190
- this.viewContainerRef = viewContainerRef;
2191
- this.hostName = '';
2192
- }
2193
- }
2194
- DynamicComponentHostDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DynamicComponentHostDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
2195
- DynamicComponentHostDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: DynamicComponentHostDirective, selector: "[appDynamicComponentHost]", inputs: { hostName: "hostName" }, ngImport: i0 });
2196
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DynamicComponentHostDirective, decorators: [{
2197
- type: Directive,
2198
- args: [{ selector: '[appDynamicComponentHost]' }]
2199
- }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { hostName: [{
2200
- type: Input
2201
- }] } });
2202
-
2203
- /**
2204
- * Holds information about the dynamic content.
2205
- * @remarks
2206
- * `ComponentRef` is undefined in the case content is of `TemplateRef` type.
2207
- */
2208
- class ContentRef {
2209
- constructor(nodes, viewRef, componentRef) {
2210
- this.nodes = nodes;
2211
- this.viewRef = viewRef;
2212
- this.componentRef = componentRef;
2213
- }
2214
- }
2215
-
2216
- /**
2217
- * Provides ways of loading and handling dynamic content.
2218
- *
2219
- * @remarks
2220
- * Do NOT use this directly, create an instance through {@link ComponentLoaderFactory}
2221
- * You can use this loader in two ways:
2222
- * - Attaches a component to `ViewContainerRef`.
2223
- * - Attaches a component to `ViewContainerRef`. The attached component has a `<ng-content>` tag inside its view. The {@link ComponentLoaderOptions.content} will be drawn inside this tag.
2224
- *
2225
- * @internal
2226
- */
2227
- class ComponentLoader {
2228
- constructor(vcr, cfr, applicationRef, injector) {
2229
- this.vcr = vcr;
2230
- this.cfr = cfr;
2231
- this.applicationRef = applicationRef;
2232
- this.injector = injector;
2233
- /**
2234
- * Before content is shown event.
2235
- */
2236
- this.onBeforeShow = new Subject();
2237
- /**
2238
- * After show content event.
2239
- * @returns The id of newly created component ref.
2240
- */
2241
- this.onShown = new Subject();
2242
- /**
2243
- * Before content is hidden event.
2244
- * @returns The instance of attached component;
2245
- */
2246
- this.onBeforeHide = new Subject();
2247
- /**
2248
- * After content is hidden event.
2249
- * @returns The id of destroyed component ref.
2250
- */
2251
- this.onHidden = new Subject();
2252
- this.providers = [];
2253
- this.containerDefaultSelector = 'body';
2254
- }
2255
- /**
2256
- * Attaches component.
2257
- * @param componentType - The type component to attach.
2258
- * @returns Current instance of {@link ComponentLoader}
2259
- */
2260
- attach(componentType) {
2261
- this.componentFactory = this.cfr.resolveComponentFactory(componentType);
2262
- return this;
2263
- }
2264
- /**
2265
- * Body will be used in nothing is provided.
2266
- * @param container - The element in which dynamic content will be drawn inside to. For string case a query to the dom will be executed to find the element.
2267
- * @returns Current instance of {@link ComponentLoader}
2268
- */
2269
- to(container) {
2270
- this.container = container || this.container;
2271
- return this;
2272
- }
2273
- /**
2274
- * Adds provider to the providers array. These providers will be injected to the attached component.
2275
- *
2276
- * @see {@link https://angular.io/guide/glossary#di-token | Injection Token}
2277
- *
2278
- * @param provider - Provider to inject.
2279
- * @returns Current instance of {@link ComponentLoader}
2280
- */
2281
- provide(provider) {
2282
- this.providers.push(provider);
2283
- return this;
2284
- }
2285
- /**
2286
- * Attaches attached component to dom and any dynamic content if provided.
2287
- * @remarks
2288
- * Also triggers the {@link ComponentLoader.onBeforeShow} and {@link ComponentLoader.onShown} events.
2289
- *
2290
- * @param options - {@link ComponentLoaderOptions}.
2291
- * @returns A reference to the created content.
2292
- */
2293
- show(options = {}) {
2294
- if (this.componentRef) {
2295
- throw Error('Component is already shown');
2296
- }
2297
- if (!this.componentFactory) {
2298
- throw Error('You must attach a component');
2299
- }
2300
- this.onBeforeShow.next();
2301
- if (options.content) {
2302
- this.contentRef = this.getContentRef(options.content, options.context, options.initialState);
2303
- }
2304
- this.createComponentAndAttachToView(options);
2305
- this.appendContentToContainer();
2306
- this.markComponentsForCheck();
2307
- this.onShown.next(options.id);
2308
- return this.componentRef;
2309
- }
2310
- /**
2311
- * Removes attached component from dom.
2312
- * @remarks
2313
- * Also triggers the {@link ComponentLoader.onBeforeHide} and {@link ComponentLoader.onHidden} events.
2314
- *
2315
- * @param id - If provided it is returned through the {@link ComponentLoader.onHidden}.
2316
- * @returns Current instance of {@link ComponentLoader}
2317
- */
2318
- hide(id, result) {
2319
- var _a, _b, _c;
2320
- if (!this.componentRef) {
2321
- throw Error('No attached component found to hide');
2322
- }
2323
- this.onBeforeHide.next(this.componentRef.instance);
2324
- const componentEl = this.componentRef.location.nativeElement;
2325
- componentEl.parentNode.removeChild(componentEl);
2326
- if ((_a = this.contentRef) === null || _a === void 0 ? void 0 : _a.componentRef) {
2327
- this.contentRef.componentRef.destroy();
2328
- }
2329
- if (this.vcr && ((_b = this.contentRef) === null || _b === void 0 ? void 0 : _b.viewRef)) {
2330
- this.vcr.remove(this.vcr.indexOf(this.contentRef.viewRef));
2331
- }
2332
- if ((_c = this.contentRef) === null || _c === void 0 ? void 0 : _c.viewRef) {
2333
- this.contentRef.viewRef.destroy();
2334
- }
2335
- this.contentRef = void 0;
2336
- this.componentRef = void 0;
2337
- this.onHidden.next(id ? { id, result } : null);
2338
- return this;
2339
- }
2340
- getInnerComponent() {
2341
- return this.innerComponent;
2342
- }
2343
- markComponentsForCheck() {
2344
- var _a;
2345
- if ((_a = this.contentRef) === null || _a === void 0 ? void 0 : _a.componentRef) {
2346
- this.innerComponent = this.contentRef.componentRef.instance;
2347
- this.contentRef.componentRef.changeDetectorRef.markForCheck();
2348
- this.contentRef.componentRef.changeDetectorRef.detectChanges();
2349
- }
2350
- this.componentRef.changeDetectorRef.markForCheck();
2351
- this.componentRef.changeDetectorRef.detectChanges();
2352
- }
2353
- createComponentAndAttachToView(options) {
2354
- var _a;
2355
- const injector = Injector.create({
2356
- providers: this.providers,
2357
- parent: this.injector,
2358
- });
2359
- this.componentRef = this.componentFactory.create(injector, (_a = this.contentRef) === null || _a === void 0 ? void 0 : _a.nodes);
2360
- this.applicationRef.attachView(this.componentRef.hostView);
2361
- this.instance = this.componentRef.instance;
2362
- Object.assign(this.componentRef.instance, options);
2363
- }
2364
- appendContentToContainer() {
2365
- var _a, _b;
2366
- if (this.container instanceof ElementRef) {
2367
- this.container.nativeElement.appendChild((_a = this.componentRef) === null || _a === void 0 ? void 0 : _a.location.nativeElement);
2368
- }
2369
- if (typeof this.container === 'string' && typeof document !== 'undefined') {
2370
- const selectedElement = document.querySelector(this.container) || document.querySelector(this.containerDefaultSelector);
2371
- if (!selectedElement) {
2372
- return;
2373
- }
2374
- selectedElement.appendChild((_b = this.componentRef) === null || _b === void 0 ? void 0 : _b.location.nativeElement);
2375
- }
2376
- }
2377
- getContentRef(content, context, initialState) {
2378
- //TemplateRef case
2379
- if (content instanceof TemplateRef) {
2380
- if (this.vcr) {
2381
- const viewRef = this.vcr.createEmbeddedView(content, context);
2382
- viewRef.markForCheck();
2383
- return new ContentRef([viewRef.rootNodes], viewRef);
2384
- }
2385
- const viewRef = content.createEmbeddedView({});
2386
- this.applicationRef.attachView(viewRef);
2387
- return new ContentRef([viewRef.rootNodes], viewRef);
2388
- }
2389
- //Component case
2390
- if (typeof content === 'function') {
2391
- const contentCf = this.cfr.resolveComponentFactory(content);
2392
- const injector = Injector.create({
2393
- providers: this.providers,
2394
- parent: this.injector,
2395
- });
2396
- const componentRef = contentCf.create(injector);
2397
- Object.assign(componentRef.instance, initialState);
2398
- this.applicationRef.attachView(componentRef.hostView);
2399
- return new ContentRef([[componentRef.location.nativeElement]], componentRef.hostView, componentRef);
2400
- }
2401
- throw Error('Unsupported content type');
2402
- }
2403
- }
2404
-
2405
- /**
2406
- * Use to create instances of {@link ComponentLoader}.
2407
- *
2408
- * @public
2409
- */
2410
- class ComponentLoaderFactory {
2411
- constructor(componentFactoryResolver, injector, applicationRef) {
2412
- this.componentFactoryResolver = componentFactoryResolver;
2413
- this.injector = injector;
2414
- this.applicationRef = applicationRef;
2415
- }
2416
- /**
2417
- * Returns a new instance of {@link ComponentLoader}
2418
- * @param viewContainerRef - The view container the dynamic content will be attached to.
2419
- * @returns A new instance of {@link ComponentLoader}.
2420
- *
2421
- * @public
2422
- */
2423
- createLoader(viewContainerRef) {
2424
- return new ComponentLoader(viewContainerRef, this.componentFactoryResolver, this.applicationRef, this.injector);
2425
- }
2426
- }
2427
- ComponentLoaderFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ComponentLoaderFactory, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable });
2428
- ComponentLoaderFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ComponentLoaderFactory, providedIn: 'root' });
2429
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ComponentLoaderFactory, decorators: [{
2430
- type: Injectable,
2431
- args: [{ providedIn: 'root' }]
2432
- }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: i0.ApplicationRef }]; } });
2433
-
2434
- class UserProfileMenuComponent {
2435
- constructor(authService, router, links) {
2436
- this.authService = authService;
2437
- this.router = router;
2438
- this.links = links;
2439
- // tslint:disable-next-line:no-input-rename
2440
- this.showUserName = false;
2441
- this.userSub$ = null;
2442
- this.statusSub$ = null;
2443
- this.user = null;
2444
- this.avatarName = null;
2445
- this.userMenuExpanded = false;
2446
- }
2447
- ngOnInit() {
2448
- this.authService.loadUser().subscribe((user) => {
2449
- this.setCurrentUser(user);
2450
- }, error => {
2451
- console.error(error);
2452
- });
2453
- // Detect user changes and display / or not user info accordingly...
2454
- this.userSub$ = this.authService.user$.subscribe((user) => {
2455
- // console.log('ShellHeaderComponent user subscription');
2456
- this.setCurrentUser(user);
2457
- });
2458
- }
2459
- signin(event) {
2460
- if (event) {
2461
- event.preventDefault();
2462
- }
2463
- this.authService.signinRedirect();
2464
- }
2465
- setCurrentUser(user) {
2466
- var _a, _b;
2467
- this.user = user;
2468
- if (this.user && this.user.profile) {
2469
- this.avatarName = `${(_a = this.user.profile.given_name) === null || _a === void 0 ? void 0 : _a.charAt(0)}${(_b = this.user.profile.family_name) === null || _b === void 0 ? void 0 : _b.charAt(0)}`.toUpperCase();
2470
- }
2471
- }
2472
- // tslint:disable-next-line:typedef
2473
- onClickOutside($event) {
2474
- this.userMenuExpanded = false;
2475
- }
2476
- }
2477
- UserProfileMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: UserProfileMenuComponent, deps: [{ token: AuthService }, { token: Router }, { token: APP_LINKS }], target: i0.ɵɵFactoryTarget.Component });
2478
- UserProfileMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: UserProfileMenuComponent, selector: "lib-user-profile-menu", inputs: { showUserName: ["show-user-name", "showUserName"] }, ngImport: i0, template: "<div class=\"relative\" (clickOutside)=\"onClickOutside($event)\">\r\n\r\n <div class=\"inline-flex\">\r\n <!-- Username -->\r\n <div [ngClass]=\"{'shell-header-profile': showUserName}\">\r\n <div *ngIf=\"user && showUserName\" class=\"shell-header-profile-userName\">\r\n {{ user.profile.name }}\r\n </div>\r\n </div>\r\n\r\n <div [class.ml-2]=\"showUserName\">\r\n <button type=\"button\" \r\n *ngIf=\"user\"\r\n class=\"shell-header-profile-dropdown-button\"\r\n id=\"user-menu\"\r\n aria-expanded=\"false\"\r\n aria-haspopup=\"true\"\r\n (click)=\"userMenuExpanded = !userMenuExpanded\">\r\n <span class=\"sr-only\">Open user menu</span>\r\n <span class=\"avatar-container\">\r\n <span class=\"avatar-text\">{{this.avatarName}}</span>\r\n </span>\r\n </button>\r\n\r\n <button type=\"button\"\r\n *ngIf=\"!user\"\r\n (click)=\"signin($event)\"\r\n class=\"shell-header-profile-dropdown-button\"\r\n id=\"user-menu\"\r\n aria-expanded=\"false\"\r\n aria-haspopup=\"true\">\r\n <span class=\"sr-only\">sign in</span>\r\n <span class=\"avatar-container\">\r\n <span class=\"avatar-text\"><i class=\"ms-Icon ms-Icon--Signin\"></i></span>\r\n </span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div [class]=\"userMenuExpanded ?\r\n 'transition ease-out duration-200 origin-top-right z-30 absolute right-0 mt-2 w-56 rounded-sm shadow-lg bg-white ring-1 ring-black ring-opacity-5 focus:outline-none'\r\n :\r\n 'hidden transition ease-in duration-75 origin-top-right z-30 right-0 mt-2 w-56 rounded-sm shadow-lg bg-white ring-1 ring-black ring-opacity-5 focus:outline-none'\"\r\n role=\"menu\" aria-orientation=\"vertical\" aria-labelledby=\"menu-button\" tabindex=\"-1\">\r\n <lib-nav-links-list\r\n [links]=\"links.profile\"\r\n [link-class]=\"'nav-link-profile'\"\r\n [link-active-class]=\"'nav-link-profile-active'\">\r\n </lib-nav-links-list>\r\n </div>\r\n\r\n</div>\r\n\r\n", components: [{ type: NavLinksListComponent, selector: "lib-nav-links-list", inputs: ["links", "active-fragment", "link-class", "link-active-class", "container-class", "show-icons"] }], directives: [{ type: ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2479
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: UserProfileMenuComponent, decorators: [{
2480
- type: Component,
2481
- args: [{
2482
- selector: 'lib-user-profile-menu',
2483
- templateUrl: './user-profile-menu.component.html'
2484
- }]
2485
- }], ctorParameters: function () { return [{ type: i2.AuthService, decorators: [{
2486
- type: Inject,
2487
- args: [AuthService]
2488
- }] }, { type: i1$1.Router, decorators: [{
2489
- type: Inject,
2490
- args: [Router]
2491
- }] }, { type: undefined, decorators: [{
2492
- type: Inject,
2493
- args: [APP_LINKS]
2494
- }] }]; }, propDecorators: { showUserName: [{
2495
- type: Input,
2496
- args: ['show-user-name']
2497
- }] } });
2498
-
2499
- class NotificationsIndicatorComponent {
2500
- constructor(notifications, links) {
2501
- this.notifications = notifications;
2502
- this.links = links;
2503
- this.menuExpanded = false;
2504
- this.unreadCount = 0;
2505
- this.items = [];
2506
- this.inboxAction = undefined;
2507
- this.newArrival = false;
2508
- }
2509
- ngOnDestroy() {
2510
- if (this.notificationsSub$) {
2511
- this.notificationsSub$.unsubscribe();
2512
- }
2513
- }
2514
- ngOnInit() {
2515
- var _a;
2516
- if (this.links && this.links['notifications']) {
2517
- this.links['notifications'].subscribe(notificationsLink => {
2518
- this.allNotificationsLink = notificationsLink;
2519
- });
2520
- }
2521
- if (this.notifications) {
2522
- this.notificationsSub$ = (_a = this.notifications) === null || _a === void 0 ? void 0 : _a.messages.subscribe(result => {
2523
- if (result.items) {
2524
- this.newArrival = true;
2525
- this.unreadCount = result.count;
2526
- this.items = result.items;
2527
- setTimeout(() => { this.newArrival = false; }, 1000);
2528
- }
2529
- });
2530
- }
2531
- }
2532
- doInboxAction() {
2533
- var _a;
2534
- if ((_a = this.notifications) === null || _a === void 0 ? void 0 : _a.inboxAction) {
2535
- this.notifications.inboxAction();
2536
- }
2537
- else {
2538
- this.menuExpanded = !this.menuExpanded;
2539
- this.ngOnDestroy();
2540
- this.ngOnInit();
2541
- }
2542
- this.unreadCount = 0;
2543
- }
2544
- removeItem(index) {
2545
- this.items.splice(index, 1);
2546
- }
2547
- // this.notificationsSub$ = this.links.notifications?.pipe(map(result => {
2548
- // this.allItemsLink = result.allNotifications;
2549
- // this.items = result.items;
2550
- // this.unreadCount = result.count;
2551
- // }));
2552
- // [this.notificationsLinksPath] as Observable<NotificationNavLink[]>;
2553
- // this.allNotificationsLink = this.links[this.allNotificationsLinkPath] as Observable<NavLink>;
2554
- // this.unreadNotificationsCountObs = this.links[this.notificationsCounterLinksPath] as Observable<number>;
2555
- // this.getUnreadNotificationsCount();
2556
- // tslint:disable-next-line:typedef
2557
- onClickOutside($event) {
2558
- this.menuExpanded = false;
2559
- }
2560
- }
2561
- 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 });
2562
- NotificationsIndicatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: NotificationsIndicatorComponent, selector: "lib-notifications-indicator", ngImport: i0, template: "<div class=\"relative\"\r\n(clickOutside)=\"onClickOutside($event)\">\r\n <!-- Notifications Button -->\r\n <button type=\"button\"\r\n (click)=\"doInboxAction()\"\r\n aria-expanded=\"false\"\r\n aria-haspopup=\"true\">\r\n <span class=\"sr-only\">View notifications</span>\r\n <span class=\"avatar-container\">\r\n <span class=\"avatar-text\">\r\n <i class=\"ms-Icon hover:text-blue-400\"\r\n [class.ms-Icon--MessageFill]=\"unreadCount > 0\"\r\n [class.text-sky-400]=\"unreadCount > 0\"\r\n [class.animate-notification]=\"newArrival\"\r\n [class.ms-Icon--Message]=\"unreadCount === 0\">\r\n </i>\r\n </span>\r\n <span\r\n *ngIf=\"unreadCount > 0\"\r\n [class.animate-pulse]=\"newArrival\"\r\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\">\r\n {{ unreadCount }}\r\n </span>\r\n </span>\r\n </button>\r\n\r\n <!-- Notifications dropdown -->\r\n <div *ngIf=\"menuExpanded\" class=\"header-notifications-dropdown-with-username\" role=\"menu\" aria-orientation=\"vertical\" aria-labelledby=\"messages-menu\">\r\n <div class=\"max-h-64 overflow-y-auto notification-messages min-h\">\r\n <ng-container *ngIf=\"!items; else messagesDropDown\" class=\"py-5\">\r\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>\r\n </ng-container>\r\n <ng-template #messagesDropDown>\r\n <ul class=\"pr-1.5\">\r\n <ng-container *ngIf=\"items; else loading\">\r\n <ng-container *ngIf=\"items.length <= 0\" class=\"py-5\">\r\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>\r\n </ng-container>\r\n <ng-container *ngFor=\"let message of items; let i = index\">\r\n <li class=\"mb-2\" [ngClass]=\"{ 'border-l-2 border-blue-500 bg-blue-50 hover:bg-blue-50': !message.data.isRead }\">\r\n <div class=\"flex justify-between\">\r\n <div class=\"flex-grow\">\r\n <a\r\n [routerLink]=\"message.path\"\r\n (click)=\"removeItem(i)\"\r\n class=\"notifications-nav-link grid\"\r\n [ngClass]=\"!message.data.isRead ? ' hover:bg-blue-50' : 'border-b border-gray-100'\"\r\n >\r\n <div class=\"flex flex-col\">\r\n <div class=\"font-thin tracking-tighter\">\r\n {{ message.data.creationDate | date: \"EEE, d MMMM\" }}\r\n </div>\r\n <div class=\"font-bold\">\r\n {{ message.data.text }}\r\n </div>\r\n </div>\r\n </a>\r\n </div>\r\n </div>\r\n </li>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #loading>\r\n <div class=\"h-32 flex items-center justify-center\">\r\n <div class=\"animate-pulse text-s text-gray-600\">Loading...</div>\r\n </div>\r\n </ng-template>\r\n </ul>\r\n </ng-template>\r\n </div>\r\n <div class=\"p-1 rounded-sm\">\r\n <a [routerLink]=\"allNotificationsLink!.path\" (click)=\"onClickOutside($event)\">\r\n <button type=\"button\" class=\"header-notifications-dropdown-view-all-button\">{{allNotificationsLink!.text}}</button>\r\n </a>\r\n </div>\r\n </div>\r\n</div>\r\n", directives: [{ type: ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1$1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }], pipes: { "date": i1.DatePipe } });
2563
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: NotificationsIndicatorComponent, decorators: [{
2564
- type: Component,
2565
- args: [{
2566
- selector: 'lib-notifications-indicator',
2567
- templateUrl: './notifications-indicator.component.html'
2568
- }]
2569
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
2570
- type: Inject,
2571
- args: [APP_NOTIFICATIONS]
2572
- }] }, { type: undefined, decorators: [{
2573
- type: Inject,
2574
- args: [APP_LINKS]
2575
- }] }]; } });
2576
-
2577
- class LanguageSelectionComponent {
2578
- constructor(langsService) {
2579
- this.langsService = langsService;
2580
- this.menuExpanded = false;
2581
- }
2582
- ngOnInit() {
2583
- }
2584
- selectLang(option) {
2585
- var _a;
2586
- if ((_a = this.langsService) === null || _a === void 0 ? void 0 : _a.setSelected) {
2587
- this.langsService.setSelected(option.value);
2588
- }
2589
- }
2590
- onClickOutside($event) {
2591
- this.menuExpanded = false;
2592
- }
2593
- }
2594
- LanguageSelectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LanguageSelectionComponent, deps: [{ token: APP_LANGUAGES }], target: i0.ɵɵFactoryTarget.Component });
2595
- LanguageSelectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: LanguageSelectionComponent, selector: "lib-language-selection", ngImport: i0, template: "<div class=\"relative\" (clickOutside)=\"onClickOutside($event)\">\r\n <button class=\"text-blue-300 hover:text-blue-400\" (click)=\"menuExpanded = !menuExpanded\">\r\n <i class=\"text-xs mr-1 ms-Icon ms-Icon--Globe\"></i>\r\n <span>{{langsService?.selected || langsService?.default}}</span>\r\n </button>\r\n\r\n <div\r\n [class]=\"menuExpanded ? 'transition ease-out duration-200 origin-top-right z-30 absolute right-0 mt-2 w-56 rounded-sm shadow-lg bg-white ring-1 ring-black ring-opacity-5 focus:outline-none':'hidden transition ease-in duration-75 origin-top-right z-30 right-0 mt-2 w-56 rounded-sm shadow-lg bg-white ring-1 ring-black ring-opacity-5 focus:outline-none'\" role=\"menu\" aria-orientation=\"vertical\" aria-labelledby=\"menu-button\" tabindex=\"-1\">\r\n <div class=\"py-1\" role=\"none\">\r\n <ng-container *ngFor=\"let lang of langsService?.options | async\">\r\n <a (click)=\"selectLang(lang)\" *ngIf=\"lang.value != langsService?.selected\" class=\"nav-link-profile\" role=\"menuitem\" tabindex=\"-1\" id=\"menu-item-0\">\r\n <i class=\"text-xs mr-1 ms-Icon ms-Icon--GlobeFavorite\"></i>\r\n {{lang.description}}\r\n </a>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n", directives: [{ type: ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i1.AsyncPipe } });
2596
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LanguageSelectionComponent, decorators: [{
2597
- type: Component,
2598
- args: [{
2599
- selector: 'lib-language-selection',
2600
- templateUrl: './language-selection.component.html'
2601
- }]
2602
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
2603
- type: Inject,
2604
- args: [APP_LANGUAGES]
2605
- }] }]; } });
2606
-
2607
- class ShellHeaderComponent {
2608
- constructor(authService, router, route, config, links) {
2609
- this.authService = authService;
2610
- this.router = router;
2611
- this.route = route;
2612
- this.config = config;
2613
- this.links = links;
2614
- // tslint:disable-next-line:no-input-rename
2615
- this.sectionLinksPath = 'main';
2616
- // tslint:disable-next-line:no-input-rename
2617
- this.profileMenuVisible = true;
2618
- // tslint:disable-next-line:no-input-rename
2619
- this.showUserNameOnHeader = false;
2620
- // tslint:disable-next-line:no-input-rename
2621
- this.showAlerts = false;
2622
- // tslint:disable-next-line:no-input-rename
2623
- this.showLangs = false;
2624
- this.border = true;
2625
- this.sectionLinks = of([]);
2626
- this.mobileMenuExpanded = false;
2627
- this.userMenuExpanded = false;
2628
- this.routerSub$ = null;
2629
- this.userSub$ = null;
2630
- this.statusSub$ = null;
2631
- this.user = null;
2632
- this.avatarName = null;
2633
- this.activeFragment = null;
2634
- this.routeSubject = this.router.events.pipe(filter((event) => event instanceof NavigationStart));
2635
- }
2636
- ngOnInit() {
2637
- this.activeFragment = this.route.fragment.pipe(share());
2638
- this.sectionLinks = this.links[this.sectionLinksPath];
2639
- this.routerSub$ = this.routeSubject.subscribe((event) => {
2640
- this.mobileMenuExpanded = false;
2641
- this.userMenuExpanded = false;
2642
- });
2643
- this.authService.loadUser().subscribe((user) => {
2644
- this.setCurrentUser(user);
2645
- }, error => {
2646
- console.error(error);
2647
- });
2648
- // Detect user changes and display / or not user info accordingly...
2649
- this.userSub$ = this.authService.user$.subscribe((user) => {
2650
- // console.log('ShellHeaderComponent user subscription');
2651
- this.setCurrentUser(user);
2652
- });
2653
- }
2654
- ngOnDestroy() {
2655
- if (this.routerSub$) {
2656
- this.routerSub$.unsubscribe();
2657
- }
2658
- // TODO: check authenticated user here before we start polling server status
2659
- if (this.statusSub$) {
2660
- this.statusSub$.unsubscribe();
2661
- }
2662
- if (this.userSub$) {
2663
- this.userSub$.unsubscribe();
2664
- }
2665
- }
2666
- // tslint:disable-next-line:typedef
2667
- onClickOutside($event) {
2668
- this.userMenuExpanded = false;
2669
- }
2670
- signin(event) {
2671
- if (event) {
2672
- event.preventDefault();
2673
- }
2674
- this.authService.signinRedirect();
2675
- }
2676
- setCurrentUser(user) {
2677
- var _a, _b;
2678
- this.user = user;
2679
- if (this.user && this.user.profile) {
2680
- this.avatarName = `${(_a = this.user.profile.given_name) === null || _a === void 0 ? void 0 : _a.charAt(0)}${(_b = this.user.profile.family_name) === null || _b === void 0 ? void 0 : _b.charAt(0)}`.toUpperCase();
2681
- }
2682
- }
2683
- }
2684
- ShellHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ShellHeaderComponent, deps: [{ token: AuthService }, { token: Router }, { token: ActivatedRoute }, { token: SHELL_CONFIG }, { token: APP_LINKS }], target: i0.ɵɵFactoryTarget.Component });
2685
- ShellHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ShellHeaderComponent, selector: "lib-shell-header", inputs: { sectionLinksPath: ["section-links", "sectionLinksPath"], profileMenuVisible: ["profile-menu", "profileMenuVisible"], showUserNameOnHeader: ["show-userName", "showUserNameOnHeader"], showAlerts: ["show-alerts", "showAlerts"], showLangs: ["show-langs", "showLangs"], border: "border" }, ngImport: i0, template: "<nav>\r\n <div class=\"shell-header-paddings\">\r\n <div class=\"shell-header-border\">\r\n <div class=\"shell-header-menu-container\">\r\n <div class=\"shell-header-logo-container\">\r\n <div>\r\n <a href=\"#\" [routerLink]=\"['/']\"><img class=\"app-logo\" [src]=\"config.appLogo\" [alt]=\"config.appLogoAlt\" /></a>\r\n </div>\r\n </div>\r\n\r\n <div class=\"shell-header-link-container\">\r\n <div class=\"shell-header-link-container-inner\">\r\n <lib-nav-links-list\r\n [links]=\"sectionLinks\"\r\n [active-fragment]=\"activeFragment\"\r\n [link-class]=\"'nav-link'\"\r\n [link-active-class]=\"'nav-link-active'\">\r\n </lib-nav-links-list>\r\n </div>\r\n </div>\r\n\r\n <div class=\"shell-header-md-visible\">\r\n\r\n <div class=\"shell-header-links-far-container\" (clickOutside)=\"onClickOutside($event)\">\r\n\r\n <lib-nav-links-list\r\n [links]=\"links.profileActions\"\r\n [active-fragment]=\"activeFragment\"\r\n [link-class]=\"'shell-header-menu-rounded-button'\"\r\n [link-active-class]=\"'shell-header-menu-rounded-button-active'\">\r\n </lib-nav-links-list>\r\n\r\n\r\n <!-- Profile dropdown -->\r\n <div *ngIf=\"profileMenuVisible\" class=\"ml-4\">\r\n <lib-user-profile-menu [show-user-name]=\"showUserNameOnHeader\"></lib-user-profile-menu>\r\n </div>\r\n\r\n <!-- Notifications dropdown -->\r\n <div *ngIf=\"showAlerts && user\" class=\"ml-4\">\r\n <lib-notifications-indicator></lib-notifications-indicator>\r\n </div>\r\n\r\n <!-- languages dropdown -->\r\n <div *ngIf=\"showLangs\" class=\"ml-4\">\r\n <lib-language-selection></lib-language-selection>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mobile-menu-button-container\">\r\n <!-- Mobile menu button -->\r\n <button type=\"button\"\r\n (click)=\"mobileMenuExpanded = !mobileMenuExpanded\"\r\n class=\"mobile-menu-button\"\r\n aria-controls=\"mobile-menu\"\r\n [attr.aria-expanded]=\"mobileMenuExpanded\">\r\n <span class=\"sr-only\">Open main menu</span>\r\n <!--Heroicon name: outline/menu Menu open: \"hidden\", Menu closed: \"block\"-->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n aria-hidden=\"true\"\r\n [class]=\"mobileMenuExpanded ? 'hidden':'block h-6 w-6'\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M4 6h16M4 12h16M4 18h16\" />\r\n </svg>\r\n <!--Heroicon name: outline/x Menu open: \"block\", Menu closed: \"hidden\"-->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n aria-hidden=\"true\"\r\n [class]=\"mobileMenuExpanded ? 'block h-6 w-6':'hidden'\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M6 18L18 6M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Mobile menu, show/hide based on menu state. -->\r\n <div class=\"mobile-menu-container\" *ngIf=\"mobileMenuExpanded\" id=\"mobile-menu\">\r\n <lib-nav-links-list\r\n [links]=\"sectionLinks\"\r\n [active-fragment]=\"activeFragment\"\r\n [link-class]=\"'nav-link-mobile'\"\r\n [link-active-class]=\"'nav-link-mobile-active'\"\r\n [container-class]=\"'mobile-menu-link-container'\">\r\n </lib-nav-links-list>\r\n\r\n <div *ngIf=\"!user\">\r\n <a href=\"#\" (click)=\"signin($event)\" class=\"nav-link-mobile\">\r\n <i class=\"ms-Icon ms-Icon--Signin mr-2\"></i>\u03A3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7\r\n </a>\r\n </div>\r\n\r\n <div class=\"mobile-menu-user-info-container\" *ngIf=\"user\">\r\n <div class=\"mobile-menu-user-info-container-inner\">\r\n <div class=\"flex-shrink-0\">\r\n <span class=\"mobile-menu-avatar-container\">\r\n <span class=\"mobile-menu-avatar-name\">{{ this.avatarName }}</span>\r\n </span>\r\n </div>\r\n <div class=\"ml-3\">\r\n <div class=\"mobile-menu-user-name\">{{ user.profile.name }}</div>\r\n <div class=\"mobile-menu-user-email\">{{ user.profile.email }}</div>\r\n </div>\r\n <!--\r\n <button class=\"mobile-menu-rounded-button\">\r\n <span class=\"sr-only\">View notifications</span>\r\n <svg class=\"mobile-menu-rounded-button-icon-style\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9\" />\r\n </svg>\r\n </button>\r\n -->\r\n </div>\r\n </div>\r\n\r\n <lib-nav-links-list\r\n [links]=\"links.profile\"\r\n [active-fragment]=\"activeFragment\"\r\n [link-class]=\"'nav-link-mobile'\"\r\n [link-active-class]=\"'nav-link-mobile-active'\"\r\n [container-class]=\"'mobile-menu-link-container'\">\r\n </lib-nav-links-list>\r\n </div>\r\n</nav>\r\n", components: [{ type: NavLinksListComponent, selector: "lib-nav-links-list", inputs: ["links", "active-fragment", "link-class", "link-active-class", "container-class", "show-icons"] }, { type: UserProfileMenuComponent, selector: "lib-user-profile-menu", inputs: ["show-user-name"] }, { type: NotificationsIndicatorComponent, selector: "lib-notifications-indicator" }, { type: LanguageSelectionComponent, selector: "lib-language-selection" }], directives: [{ type: i1$1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2686
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ShellHeaderComponent, decorators: [{
2687
- type: Component,
2688
- args: [{
2689
- // tslint:disable-next-line:component-selector
2690
- selector: 'lib-shell-header',
2691
- templateUrl: './shell-header.component.html',
2692
- }]
2693
- }], ctorParameters: function () { return [{ type: i2.AuthService, decorators: [{
2694
- type: Inject,
2695
- args: [AuthService]
2696
- }] }, { type: i1$1.Router, decorators: [{
2697
- type: Inject,
2698
- args: [Router]
2699
- }] }, { type: i1$1.ActivatedRoute, decorators: [{
2700
- type: Inject,
2701
- args: [ActivatedRoute]
2702
- }] }, { type: undefined, decorators: [{
2703
- type: Inject,
2704
- args: [SHELL_CONFIG]
2705
- }] }, { type: undefined, decorators: [{
2706
- type: Inject,
2707
- args: [APP_LINKS]
2708
- }] }]; }, propDecorators: { sectionLinksPath: [{
2709
- type: Input,
2710
- args: ['section-links']
2711
- }], profileMenuVisible: [{
2712
- type: Input,
2713
- args: ['profile-menu']
2714
- }], showUserNameOnHeader: [{
2715
- type: Input,
2716
- args: ['show-userName']
2717
- }], showAlerts: [{
2718
- type: Input,
2719
- args: ['show-alerts']
2720
- }], showLangs: [{
2721
- type: Input,
2722
- args: ['show-langs']
2723
- }], border: [{
2724
- type: Input
2725
- }] } });
2726
-
2727
- class ShellFooterComponent {
2728
- constructor(links) {
2729
- this.links = links;
2730
- }
2731
- }
2732
- ShellFooterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ShellFooterComponent, deps: [{ token: APP_LINKS }], target: i0.ɵɵFactoryTarget.Component });
2733
- ShellFooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ShellFooterComponent, selector: "lib-shell-footer", ngImport: i0, template: "<footer class=\"shell-footer-component-container\">\r\n <div class=\"shell-footer-paddings\">\r\n <div class=\"shell-footer-component-container-inner\">\r\n <div class=\"shell-footer-sections-container\">\r\n <div class=\"shell-footer-section\">\r\n <img class=\"shell-footer-logo-h\" src=\"assets/images/branding/indice.png\" alt=\"INDICE logo\" />\r\n <nav class=\"mt-4\">\r\n <ul class=\"space-y-2\">\r\n <ng-container *ngFor=\"let link of links.brand | async\">\r\n <li>\r\n <a [href]=\"link.path\" class=\"shell-footer-link\">{{ link.text }}</a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </nav>\r\n </div>\r\n <div class=\"shell-footer-section-links\">\r\n <h5 class=\"shell-footer-section-title\">Legal</h5>\r\n <nav class=\"mt-4\">\r\n <ul class=\"grid lg:grid-cols-2\">\r\n <ng-container *ngFor=\"let link of links.legal | async\">\r\n <li class=\"mb-2\">\r\n <a [href]=\"link.path\" class=\"shell-footer-link\">{{ link.text }}</a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </nav>\r\n </div>\r\n <div class=\"shell-footer-section-links\">\r\n <h5 class=\"shell-footer-section-title\">Follow us</h5>\r\n <nav class=\"mt-4\">\r\n <ul class=\"grid lg:grid-cols-2\">\r\n <li class=\"mb-2\">\r\n <a href=\"#\" class=\"shell-footer-social\">\r\n <svg class=\"shell-footer-social-icon\" aria-hidden=\"true\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path d=\"M8.29 20.251c7.547 0 11.675-6.253 11.675-11.675 0-.178 0-.355-.012-.53A8.348 8.348 0 0022 5.92a8.19 8.19 0 01-2.357.646 4.118 4.118 0 001.804-2.27 8.224 8.224 0 01-2.605.996 4.107 4.107 0 00-6.993 3.743 11.65 11.65 0 01-8.457-4.287 4.106 4.106 0 001.27 5.477A4.072 4.072 0 012.8 9.713v.052a4.105 4.105 0 003.292 4.022 4.095 4.095 0 01-1.853.07 4.108 4.108 0 003.834 2.85A8.233 8.233 0 012 18.407a11.616 11.616 0 006.29 1.84\"/>\r\n </svg>\r\n <span> Twitter </span>\r\n </a>\r\n </li>\r\n <li class=\"mb-2\">\r\n <a href=\"#\" class=\"shell-footer-social\">\r\n <svg class=\"shell-footer-social-icon\" aria-hidden=\"true\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path fill-rule=\"evenodd\" d=\"M12.315 2c2.43 0 2.784.013 3.808.06 1.064.049 1.791.218 2.427.465a4.902 4.902 0 011.772 1.153 4.902 4.902 0 011.153 1.772c.247.636.416 1.363.465 2.427.048 1.067.06 1.407.06 4.123v.08c0 2.643-.012 2.987-.06 4.043-.049 1.064-.218 1.791-.465 2.427a4.902 4.902 0 01-1.153 1.772 4.902 4.902 0 01-1.772 1.153c-.636.247-1.363.416-2.427.465-1.067.048-1.407.06-4.123.06h-.08c-2.643 0-2.987-.012-4.043-.06-1.064-.049-1.791-.218-2.427-.465a4.902 4.902 0 01-1.772-1.153 4.902 4.902 0 01-1.153-1.772c-.247-.636-.416-1.363-.465-2.427-.047-1.024-.06-1.379-.06-3.808v-.63c0-2.43.013-2.784.06-3.808.049-1.064.218-1.791.465-2.427a4.902 4.902 0 011.153-1.772A4.902 4.902 0 015.45 2.525c.636-.247 1.363-.416 2.427-.465C8.901 2.013 9.256 2 11.685 2h.63zm-.081 1.802h-.468c-2.456 0-2.784.011-3.807.058-.975.045-1.504.207-1.857.344-.467.182-.8.398-1.15.748-.35.35-.566.683-.748 1.15-.137.353-.3.882-.344 1.857-.047 1.023-.058 1.351-.058 3.807v.468c0 2.456.011 2.784.058 3.807.045.975.207 1.504.344 1.857.182.466.399.8.748 1.15.35.35.683.566 1.15.748.353.137.882.3 1.857.344 1.054.048 1.37.058 4.041.058h.08c2.597 0 2.917-.01 3.96-.058.976-.045 1.505-.207 1.858-.344.466-.182.8-.398 1.15-.748.35-.35.566-.683.748-1.15.137-.353.3-.882.344-1.857.048-1.055.058-1.37.058-4.041v-.08c0-2.597-.01-2.917-.058-3.96-.045-.976-.207-1.505-.344-1.858a3.097 3.097 0 00-.748-1.15 3.098 3.098 0 00-1.15-.748c-.353-.137-.882-.3-1.857-.344-1.023-.047-1.351-.058-3.807-.058zM12 6.865a5.135 5.135 0 110 10.27 5.135 5.135 0 010-10.27zm0 1.802a3.333 3.333 0 100 6.666 3.333 3.333 0 000-6.666zm5.338-3.205a1.2 1.2 0 110 2.4 1.2 1.2 0 010-2.4z\" clip-rule=\"evenodd\"/>\r\n </svg>\r\n <span> Instagram </span>\r\n </a>\r\n </li>\r\n <li class=\"mb-2\">\r\n <a href=\"#\" class=\"shell-footer-social\">\r\n <svg class=\"shell-footer-social-icon\" aria-hidden=\"true\" fill=\"currentColor\" viewBox=\"0 0 24 24\" >\r\n <path fill-rule=\"evenodd\" d=\"M22 12c0-5.523-4.477-10-10-10S2 6.477 2 12c0 4.991 3.657 9.128 8.438 9.878v-6.987h-2.54V12h2.54V9.797c0-2.506 1.492-3.89 3.777-3.89 1.094 0 2.238.195 2.238.195v2.46h-1.26c-1.243 0-1.63.771-1.63 1.562V12h2.773l-.443 2.89h-2.33v6.988C18.343 21.128 22 16.991 22 12z\" clip-rule=\"evenodd\"/>\r\n </svg>\r\n <span> Facebook </span>\r\n </a>\r\n </li>\r\n </ul>\r\n </nav>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"shell-footer-copyright\">\r\n <!--<nav class=\"flex flex-wrap justify-center space-x-6\">\r\n <a href=\"#\" class=\"font-normal text-sm hover:text-gray-100 mb-2\">Cookie settings</a>\r\n </nav>-->\r\n <p class=\"text-sm text-center sm:text-right\">\r\n \u00A9 2021 INDICE. All rights reserved.\r\n </p>\r\n </div>\r\n </div>\r\n</footer>\r\n", directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i1.AsyncPipe } });
2734
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ShellFooterComponent, decorators: [{
2735
- type: Component,
2736
- args: [{
2737
- selector: 'lib-shell-footer',
2738
- templateUrl: './shell-footer.component.html'
2739
- }]
2740
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
2741
- type: Inject,
2742
- args: [APP_LINKS]
2743
- }] }]; } });
2744
-
2745
- class ShellStackedLayoutComponent {
2746
- constructor() { }
2747
- ngOnInit() {
2748
- }
2749
- }
2750
- ShellStackedLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ShellStackedLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2751
- ShellStackedLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ShellStackedLayoutComponent, selector: "lib-shell-stacked-layout", inputs: { config: "config" }, ngImport: i0, template: "<div class=\"shell-header-container\" *ngIf=\"config?.showHeader\">\r\n <div [class]=\"config?.fluid ? 'shell-header-container-inner-fluid' : 'shell-header-container-inner'\">\r\n <ng-container *ngIf=\"config?.customHeaderComponent\">\r\n <div appDynamicComponentHost =\"Header\"></div>\r\n </ng-container>\r\n <lib-shell-header *ngIf=\"!config?.customHeaderComponent\" [show-userName]=\"config?.showUserNameOnHeader\"\r\n [show-alerts]=\"config?.showAlertsOnHeader\" [show-langs]=\"config?.showLangsOnHeader\">\r\n </lib-shell-header>\r\n </div>\r\n</div>\r\n\r\n<main [class]=\"config?.showHeader ? 'shell-content-container' : 'shell-content-container-no-header'\">\r\n <div [class]=\"config?.fluid ? 'shell-content-container-inner-fluid' : 'shell-content-container-inner'\">\r\n <router-outlet *ngIf=\"(!config || config.layout === 'Stacked' || !config.layout)\"></router-outlet>\r\n </div>\r\n</main>\r\n\r\n<div class=\"shell-footer-container\" *ngIf=\"config?.showFooter\">\r\n <div [class]=\"config?.fluid ? 'shell-footer-container-inner-fluid' : 'shell-footer-container-inner'\">\r\n <ng-container *ngIf=\"config?.customFooterComponent\">\r\n <div appDynamicComponentHost hostName=\"Footer\"></div>\r\n </ng-container>\r\n <lib-shell-footer *ngIf=\"!config?.customFooterComponent\"></lib-shell-footer>\r\n </div>\r\n</div>", components: [{ type: ShellHeaderComponent, selector: "lib-shell-header", inputs: ["section-links", "profile-menu", "show-userName", "show-alerts", "show-langs", "border"] }, { type: ShellFooterComponent, selector: "lib-shell-footer" }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DynamicComponentHostDirective, selector: "[appDynamicComponentHost]", inputs: ["hostName"] }, { type: i1$1.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate"], exportAs: ["outlet"] }] });
2752
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ShellStackedLayoutComponent, decorators: [{
2753
- type: Component,
2754
- args: [{
2755
- selector: 'lib-shell-stacked-layout',
2756
- templateUrl: './shell-stacked-layout.component.html'
2757
- }]
2758
- }], ctorParameters: function () { return []; }, propDecorators: { config: [{
2759
- type: Input
2760
- }] } });
2761
-
2762
- class ShellSidebarComponent {
2763
- constructor(router, route, links) {
2764
- this.router = router;
2765
- this.route = route;
2766
- this.links = links;
2767
- // tslint:disable-next-line:no-input-rename
2768
- this.sectionLinksPath = 'main';
2769
- this.sectionLinks = of([]);
2770
- // tslint:disable-next-line:no-input-rename
2771
- this.shellConfig = undefined;
2772
- this.activeFragment = null;
2773
- }
2774
- ngOnInit() {
2775
- this.activeFragment = this.route.fragment.pipe(share());
2776
- this.sectionLinks = this.links[this.sectionLinksPath];
2777
- }
2778
- }
2779
- ShellSidebarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ShellSidebarComponent, deps: [{ token: Router }, { token: ActivatedRoute }, { token: APP_LINKS }], target: i0.ɵɵFactoryTarget.Component });
2780
- ShellSidebarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ShellSidebarComponent, selector: "lib-shell-sidebar", inputs: { sectionLinksPath: ["section-links", "sectionLinksPath"], shellConfig: ["config", "shellConfig"] }, ngImport: i0, template: "<!-- Sidebar component, swap this element with another sidebar if you like -->\r\n<div class=\"shell-sidebar-component-container\">\r\n <div class=\"shell-sidebar-component-links-container sidebar\">\r\n <lib-nav-links-list\r\n [show-icons]=\"true\"\r\n [links]=\"sectionLinks\"\r\n [active-fragment]=\"activeFragment\"\r\n [link-class]=\"'sidebar nav-link group'\"\r\n [link-active-class]=\"'sidebar nav-link-active group'\">\r\n </lib-nav-links-list>\r\n </div>\r\n</div>\r\n", components: [{ type: NavLinksListComponent, selector: "lib-nav-links-list", inputs: ["links", "active-fragment", "link-class", "link-active-class", "container-class", "show-icons"] }] });
2781
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ShellSidebarComponent, decorators: [{
2782
- type: Component,
2783
- args: [{
2784
- selector: 'lib-shell-sidebar',
2785
- templateUrl: './shell-sidebar.component.html'
2786
- }]
2787
- }], ctorParameters: function () { return [{ type: i1$1.Router, decorators: [{
2788
- type: Inject,
2789
- args: [Router]
2790
- }] }, { type: i1$1.ActivatedRoute, decorators: [{
2791
- type: Inject,
2792
- args: [ActivatedRoute]
2793
- }] }, { type: undefined, decorators: [{
2794
- type: Inject,
2795
- args: [APP_LINKS]
2796
- }] }]; }, propDecorators: { sectionLinksPath: [{
2797
- type: Input,
2798
- args: ['section-links']
2799
- }], shellConfig: [{
2800
- type: Input,
2801
- args: ['config']
2802
- }] } });
2803
-
2804
- class ShellSidebarHeaderComponent extends ShellHeaderComponent {
2805
- constructor(authService, router, route, config, links) {
2806
- super(authService, router, route, config, links);
2807
- this.authService = authService;
2808
- this.router = router;
2809
- this.route = route;
2810
- this.config = config;
2811
- this.links = links;
2812
- }
2813
- }
2814
- ShellSidebarHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ShellSidebarHeaderComponent, deps: [{ token: AuthService }, { token: Router }, { token: ActivatedRoute }, { token: SHELL_CONFIG }, { token: APP_LINKS }], target: i0.ɵɵFactoryTarget.Component });
2815
- ShellSidebarHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ShellSidebarHeaderComponent, selector: "lib-shell-sidebar-header", usesInheritance: true, ngImport: i0, template: "<div class=\"shell-header-paddings\">\r\n <div class=\"shell-header-border\">\r\n <div class=\"shell-header-menu-container\">\r\n <div class=\"shell-header-md-visible\">\r\n <div class=\"shell-header-links-far-container\" (clickOutside)=\"onClickOutside($event)\">\r\n <!-- Profile dropdown -->\r\n <div *ngIf=\"profileMenuVisible\" class=\"ml-4\">\r\n <lib-user-profile-menu [show-user-name]=\"showUserNameOnHeader\"></lib-user-profile-menu>\r\n </div>\r\n <!-- Notifications dropdown -->\r\n <div *ngIf=\"showAlerts && user\" class=\"ml-4\">\r\n <lib-notifications-indicator></lib-notifications-indicator>\r\n </div>\r\n <!-- languages dropdown -->\r\n <div *ngIf=\"showLangs\" class=\"ml-4\">\r\n <lib-language-selection></lib-language-selection>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n \r\n", components: [{ type: UserProfileMenuComponent, selector: "lib-user-profile-menu", inputs: ["show-user-name"] }, { type: NotificationsIndicatorComponent, selector: "lib-notifications-indicator" }, { type: LanguageSelectionComponent, selector: "lib-language-selection" }], directives: [{ type: ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2816
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ShellSidebarHeaderComponent, decorators: [{
2817
- type: Component,
2818
- args: [{
2819
- selector: 'lib-shell-sidebar-header',
2820
- templateUrl: './shell-sidebar-header.component.html'
2821
- }]
2822
- }], ctorParameters: function () { return [{ type: i2.AuthService, decorators: [{
2823
- type: Inject,
2824
- args: [AuthService]
2825
- }] }, { type: i1$1.Router, decorators: [{
2826
- type: Inject,
2827
- args: [Router]
2828
- }] }, { type: i1$1.ActivatedRoute, decorators: [{
2829
- type: Inject,
2830
- args: [ActivatedRoute]
2831
- }] }, { type: undefined, decorators: [{
2832
- type: Inject,
2833
- args: [SHELL_CONFIG]
2834
- }] }, { type: undefined, decorators: [{
2835
- type: Inject,
2836
- args: [APP_LINKS]
2837
- }] }]; } });
2838
-
2839
- class ShellSidebarLayoutComponent {
2840
- constructor() {
2841
- this.showMobileSidebar = true;
2842
- }
2843
- ngOnInit() {
2844
- }
2845
- toggleMobileSidebar() {
2846
- this.showMobileSidebar = !this.showMobileSidebar;
2847
- }
2848
- }
2849
- ShellSidebarLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ShellSidebarLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2850
- ShellSidebarLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ShellSidebarLayoutComponent, selector: "lib-shell-sidebar-layout", inputs: { config: "config" }, ngImport: i0, template: "<div>\r\n <!-- Off-canvas menu for mobile, show/hide based on off-canvas menu state. -->\r\n <div class=\"sidebar-off-canvas-menu-container\" role=\"dialog\" aria-modal=\"true\">\r\n <!-- Off-canvas menu backdrop, show/hide based on off-canvas menu state.-->\r\n <div class=\"sidebar-off-canvas-menu-backdrop\" \r\n [class.sidebar-off-canvas-menu-backdrop-opacity-100]=\"showMobileSidebar\">\r\n </div>\r\n \r\n <div class=\"sidebar-off-canvas-menu-container-inner\" \r\n [class.sidebar-off-canvas-menu-container-inner-active]=\"showMobileSidebar\" \r\n [class.sidebar-off-canvas-menu-container-inner-not-active]=\"!showMobileSidebar\">\r\n <!-- Off-canvas menu, show/hide based on off-canvas menu state.-->\r\n <div class=\"sidebar-off-canvas-layout-container\">\r\n <!--Close button, show/hide based on off-canvas menu state.-->\r\n <div class=\"sidebar-off-canvas-toggle-button-container\">\r\n <button type=\"button\" class=\"sidebar-off-canvas-toggle-button\" (click)=\"showMobileSidebar = !showMobileSidebar\">\r\n <span class=\"sr-only\">Close sidebar</span>\r\n <!-- Heroicon name: outline/x -->\r\n <svg class=\"h-6 w-6 text-white\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" aria-hidden=\"true\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n </div>\r\n \r\n <div class=\"sidebar-off-canvas-app-logo-container\">\r\n <img class=\"h-8 w-auto\" [src]=\"config?.appLogo\" [alt]=\"config?.appLogoAlt\">\r\n </div>\r\n\r\n <lib-shell-sidebar></lib-shell-sidebar>\r\n \r\n </div>\r\n \r\n <div class=\"sidebar-dummy-element\" aria-hidden=\"true\">\r\n <!-- Dummy element to force sidebar to shrink to fit close icon -->\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Static sidebar for desktop -->\r\n <div class=\"sidebar-static-menu-outer-container\">\r\n \r\n <div class=\"sidebar-static-menu-container\" \r\n [class.sidebar-static-menu-container-active]=\"showMobileSidebar\" \r\n [class.sidebar-static-menu-container-not-active]=\"!showMobileSidebar\">\r\n <!-- Sidebar component, swap this element with another sidebar if you like -->\r\n <div class=\"sidebar-static-menu-container-inner\">\r\n <div class=\"sidebar-static-menu-app-logo-container\">\r\n <img class=\"h-8 w-auto\" [src]=\"config?.appLogo\" [alt]=\"config?.appLogoAlt\">\r\n </div>\r\n <lib-shell-sidebar></lib-shell-sidebar>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"sidebar-static-menu-wrapper\" [class.sidebar-static-menu-wrapper-active]=\"showMobileSidebar\">\r\n <div class=\"sidebar-static-menu-toggle-button-container\">\r\n <button type=\"button\" class=\"sidebar-static-menu-toggle-button\" (click)=\"showMobileSidebar = !showMobileSidebar\">\r\n <span class=\"sr-only\">Toggle sidebar</span>\r\n <!-- Heroicon name: outline/menu-alt-2 -->\r\n <svg class=\"h-6 w-6\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" aria-hidden=\"true\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4 6h16M4 12h16M4 18h7\" />\r\n </svg>\r\n </button>\r\n \r\n <!-- sidebar-static-menu-header-container -->\r\n <div class=\"sidebar-static-menu-header-container\">\r\n <div class=\"sidebar-static-menu-header-near-container\">\r\n <div class=\"sidebar-static-menu-header-app-logo-container\" *ngIf=\"!showMobileSidebar\">\r\n <img class=\"h-8 w-auto\" [src]=\"config?.appLogo\" [alt]=\"config?.appLogoAlt\">\r\n </div>\r\n </div>\r\n <div class=\"sidebar-static-menu-header-far-container\">\r\n <lib-shell-sidebar-header \r\n [show-userName]=\"config?.showUserNameOnHeader\"\r\n [show-alerts]=\"config?.showAlertsOnHeader\" \r\n [show-langs]=\"config?.showLangsOnHeader\"></lib-shell-sidebar-header>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div flex-1>\r\n <main class=\"shell-content-container-fluid\">\r\n <div class=\"shell-content-container-inner\">\r\n <!-- YOU NEED TO ADD/REMOVE THIS FROM DOM DEPENDING ON THE SELECTED LAYOUT ESPECIALLY IN THE CASE OF LAYOUT SWITCHING!!! -->\r\n <router-outlet *ngIf=\"(config && config.layout === 'Sidebar')\"></router-outlet>\r\n </div>\r\n </main>\r\n </div>\r\n </div>\r\n </div>", components: [{ type: ShellSidebarComponent, selector: "lib-shell-sidebar", inputs: ["section-links", "config"] }, { type: ShellSidebarHeaderComponent, selector: "lib-shell-sidebar-header" }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate"], exportAs: ["outlet"] }] });
2851
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ShellSidebarLayoutComponent, decorators: [{
2852
- type: Component,
2853
- args: [{
2854
- selector: 'lib-shell-sidebar-layout',
2855
- templateUrl: './shell-sidebar-layout.component.html'
2856
- }]
2857
- }], ctorParameters: function () { return []; }, propDecorators: { config: [{
2858
- type: Input
2859
- }] } });
2860
-
2861
- class ShellLayoutComponent {
2862
- constructor(document, router, location, config, componentLoaderFactory) {
2863
- this.document = document;
2864
- this.router = router;
2865
- this.location = location;
2866
- this.config = config;
2867
- this.componentLoaderFactory = componentLoaderFactory;
2868
- this.dynamicComponentHosts = null;
2869
- this.showRightPaneSM = false;
2870
- this.routerSub$ = null;
2871
- this.activeConfig = new DefaultShellConfig();
2872
- this.loaded = false;
2873
- this.hideSidebar = false;
2874
- if (!config) {
2875
- config = new DefaultShellConfig();
2876
- }
2877
- this.activeConfig = config;
2878
- }
2879
- ngAfterViewChecked() {
2880
- setTimeout(() => { this.loaded = true; }, 200);
2881
- }
2882
- ngOnInit() {
2883
- this.routerSub$ = this.router.events.pipe(filter((event) => event instanceof ActivationStart)).subscribe((e) => {
2884
- var _a, _b, _c, _d, _e, _f;
2885
- // console.log('ShellLayoutComponent ActivationStart', e);
2886
- if ((_a = e) === null || _a === void 0 ? void 0 : _a.snapshot) {
2887
- // console.log('ShellLayoutComponent ActivationStart snapshot', (e as ActivationStart)?.snapshot);
2888
- if ((_c = (_b = e) === null || _b === void 0 ? void 0 : _b.snapshot) === null || _c === void 0 ? void 0 : _c.data) {
2889
- // console.log('ShellLayoutComponent ActivationStart snapshot data', (e as ActivationStart)?.snapshot.data);
2890
- if ((_e = (_d = e) === null || _d === void 0 ? void 0 : _d.snapshot) === null || _e === void 0 ? void 0 : _e.data.shell) {
2891
- // console.log('ShellLayoutComponent ActivationStart snapshot data shell params',
2892
- // (e as ActivationStart)?.snapshot.data.shell);
2893
- this.activeConfig = (_f = e) === null || _f === void 0 ? void 0 : _f.snapshot.data.shell;
2894
- // console.log('ShellLayoutComponent activeConfig from route: ', this.activeConfig);
2895
- if (this.activeConfig.customHeaderComponent) {
2896
- this.initCustomComponents();
2897
- }
2898
- }
2899
- else {
2900
- this.activeConfig = this.config ? this.config : new DefaultShellConfig();
2901
- // console.log('ShellLayoutComponent default activeConfig: ', this.activeConfig);
2902
- }
2903
- }
2904
- }
2905
- });
2906
- }
2907
- ngAfterViewInit() {
2908
- this.initCustomComponents();
2909
- }
2910
- initCustomComponents() {
2911
- if (this.dynamicComponentHosts && this.dynamicComponentHosts.length > 0) {
2912
- this.loadCustomComponent(this.dynamicComponentHosts.find((_) => _.hostName === 'Header'));
2913
- // since you're not using it...
2914
- // this.loadCustomComponent(this.dynamicComponentHosts.find(_ => _.hostName === 'Footer'));
2915
- }
2916
- }
2917
- ngOnDestroy() {
2918
- if (this.routerSub$) {
2919
- this.routerSub$.unsubscribe();
2920
- }
2921
- }
2922
- loadCustomComponent(host) {
2923
- if (host) {
2924
- const viewContainerRef = host.viewContainerRef;
2925
- if (viewContainerRef && this.activeConfig.customHeaderComponent) {
2926
- const clf = this.componentLoaderFactory.createLoader(viewContainerRef);
2927
- const headerCompRef = clf.attach(this.activeConfig.customHeaderComponent).to(viewContainerRef.element).show();
2928
- }
2929
- }
2930
- }
2931
- }
2932
- ShellLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ShellLayoutComponent, deps: [{ token: DOCUMENT }, { token: i1$1.Router }, { token: i1.Location }, { token: SHELL_CONFIG }, { token: ComponentLoaderFactory }], target: i0.ɵɵFactoryTarget.Component });
2933
- ShellLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ShellLayoutComponent, selector: "lib-shell-layout", viewQueries: [{ propertyName: "dynamicComponentHosts", predicate: DynamicComponentHostDirective, descendants: true }], ngImport: i0, template: "<div [class.none]=\"!loaded\" [class.block]=\"loaded\">\r\n\r\n <!-- STACKED LAYOUT -->\r\n <div *ngIf=\"(activeConfig.layout === 'Stacked' || !activeConfig.layout)\" class=\"shell-container active-side-pane\">\r\n <lib-shell-stacked-layout [config]=\"activeConfig\"></lib-shell-stacked-layout>\r\n </div>\r\n\r\n <!-- SIDEBAR LAYOUT -->\r\n <div *ngIf=\"activeConfig.layout === 'Sidebar'\" class=\"sidebar shell-container active-side-pane\">\r\n <lib-shell-sidebar-layout [config]=\"activeConfig\"></lib-shell-sidebar-layout>\r\n </div>\r\n\r\n <lib-side-pane #rightPane>\r\n <router-outlet name=\"rightpane\" (activate)=\"rightPane.onSidePaneActivated($event)\" (deactivate)=\"rightPane.onSidePaneDeactivated($event)\"></router-outlet>\r\n </lib-side-pane>\r\n\r\n <lib-toaster-container></lib-toaster-container>\r\n\r\n</div>", components: [{ type: ShellStackedLayoutComponent, selector: "lib-shell-stacked-layout", inputs: ["config"] }, { type: ShellSidebarLayoutComponent, selector: "lib-shell-sidebar-layout", inputs: ["config"] }, { type: SidePaneComponent, selector: "lib-side-pane", inputs: ["visible", "animate"], outputs: ["onComplete"] }, { type: ToasterContainerComponent, selector: "lib-toaster-container" }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate"], exportAs: ["outlet"] }] });
2934
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ShellLayoutComponent, decorators: [{
2935
- type: Component,
2936
- args: [{
2937
- // tslint:disable-next-line:component-selector
2938
- selector: 'lib-shell-layout',
2939
- templateUrl: './shell-layout.component.html',
2940
- }]
2941
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
2942
- type: Inject,
2943
- args: [DOCUMENT]
2944
- }] }, { type: i1$1.Router }, { type: i1.Location }, { type: undefined, decorators: [{
2945
- type: Inject,
2946
- args: [SHELL_CONFIG]
2947
- }] }, { type: ComponentLoaderFactory }]; }, propDecorators: { dynamicComponentHosts: [{
2948
- type: ViewChildren,
2949
- args: [DynamicComponentHostDirective]
2950
- }] } });
2951
-
2952
- class ViewLayoutComponent {
2953
- constructor(route$, router$) {
2954
- this.route$ = route$;
2955
- this.router$ = router$;
2956
- // tslint:disable-next-line:no-input-rename
2957
- this.header = true;
2958
- this.fluid = false;
2959
- this.title = 'no title';
2960
- this.icon = null;
2961
- this.actions = null;
2962
- this.busy = false;
2963
- // tslint:disable-next-line:no-input-rename
2964
- this.searchPlaceholder = 'αναζήτηση';
2965
- this.view = null;
2966
- // tslint:disable-next-line:no-input-rename
2967
- this.metaItems = [];
2968
- // tslint:disable-next-line:no-output-on-prefix
2969
- this.onAction = new EventEmitter();
2970
- // tslint:disable-next-line:no-output-on-prefix
2971
- this.onSearch = new EventEmitter();
2972
- }
2973
- ngOnInit() {
2974
- var _a;
2975
- if ((_a = this.searchInput$) === null || _a === void 0 ? void 0 : _a.nativeElement) {
2976
- fromEvent(this.searchInput$.nativeElement, 'keyup').pipe(map((event) => {
2977
- return event.target.value; // Get input value.
2978
- }), filter(inputValue => inputValue.length >= 3 || inputValue.length === 0),
2979
- // If character length greater than minimumSearchCharacters setting.
2980
- debounceTime(1000), // Time in milliseconds between key events.
2981
- distinctUntilChanged() // If previous query is different from current.
2982
- ).subscribe();
2983
- }
2984
- }
2985
- emitActionClick(action) {
2986
- this.onAction.emit(action);
2987
- }
2988
- routerLinkActionClick(action) {
2989
- // console.log('routerLinkActionClick', action);
2990
- if (action.outlet) {
2991
- this.router$.navigate(['', { outlets: { rightpane: action.link } }]);
2992
- }
2993
- else {
2994
- this.router$.navigate([action.link]);
2995
- }
2996
- }
2997
- searchActionClick(action, text) {
2998
- this.onSearch.emit(text);
2999
- }
3000
- searchActionType(text) {
3001
- var _a;
3002
- this.onSearch.emit((_a = this.searchInput$) === null || _a === void 0 ? void 0 : _a.nativeElement.value);
3003
- }
3004
- handleClear(event) {
3005
- var _a;
3006
- console.log('handle clear!!!');
3007
- event.stopPropagation();
3008
- this.onSearch.emit((_a = event.target) === null || _a === void 0 ? void 0 : _a.value);
3009
- }
3010
- switchViewActionClick(action) {
3011
- // console.log('switchViewActionClick', action);
3012
- this.view = action.param;
3013
- if (action && action.param) {
3014
- this.router$.navigate([], { queryParams: { view: action.param }, queryParamsHandling: 'merge', skipLocationChange: false });
3015
- }
3016
- }
3017
- }
3018
- ViewLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ViewLayoutComponent, deps: [{ token: i1$1.ActivatedRoute }, { token: i1$1.Router }], target: i0.ɵɵFactoryTarget.Component });
3019
- ViewLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ViewLayoutComponent, selector: "lib-view-layout", inputs: { header: ["show-header", "header"], fluid: "fluid", title: "title", icon: "icon", actions: "actions", busy: "busy", searchPlaceholder: ["search-placeholder", "searchPlaceholder"], view: "view", metaItems: ["meta-items", "metaItems"] }, outputs: { onAction: "onAction", onSearch: "onSearch" }, viewQueries: [{ propertyName: "searchInput$", first: true, predicate: ["search"], descendants: true }], ngImport: i0, template: "<header *ngIf=\"header\" class=\"view-layout-paddings\">\r\n\r\n <div class=\"view-layout-title-container\">\r\n\r\n <div class=\"view-layout-title-container-inner\">\r\n <div class=\"flex items-center\">\r\n <i *ngIf=\"icon\" [class]=\"icon + ' title-icon'\" aria-hidden=\"true\"></i>\r\n <h1 [class]=\"busy ? 'view-layout-title-busy' : 'view-layout-title'\">{{title}}</h1>\r\n </div>\r\n <div *ngIf=\"metaItems && metaItems.length > 0\" class=\"meta-container\">\r\n <ng-container *ngFor=\"let meta of metaItems\">\r\n <div class=\"meta-item-container\">\r\n <i *ngIf=\"meta.icon\" [class]=\"meta.icon + ' meta-icon'\" aria-hidden=\"true\"></i>\r\n <span class=\"meta-text\">{{meta.text}}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"flex items-center justify-end\">\r\n <ng-container *ngFor=\"let action of actions\" [ngSwitch]=\"action.type\">\r\n\r\n <ng-container *ngSwitchCase=\"'switch-view'\">\r\n <button [disabled]=\"view === action.param\" type=\"button\" href=\"#\" class=\"ml-1 disabled:opacity-50 btn-view-header\" (click)=\"switchViewActionClick(action)\">\r\n <span class=\"inline-block relative\">\r\n <i [class]=\"action.icon\"></i>\r\n <span *ngIf=\"view === action.param\" class=\"selected-view-indicator\"></span>\r\n </span>\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'search'\">\r\n <label for=\"search\" class=\"sr-only\">Search</label>\r\n <div class=\"search-container\">\r\n <div class=\"pointer-events-none absolute inset-y-0 left-0 pl-3 flex items-center\">\r\n <!--<svg class=\"h-5 w-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\" d=\"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z\" clip-rule=\"evenodd\" />\r\n </svg>-->\r\n </div>\r\n <input id=\"search\" #search class=\"search-input\" [placeholder]=\"searchPlaceholder\"\r\n type=\"search\" name=\"search\" (input)=\"searchActionType(search.value)\" (onsearch)=\"handleClear($event)\">\r\n </div>\r\n <button type=\"button\" href=\"#\" class=\"btn-view-header rounded-l-none\" [title]=\"action.tooltip\" (click)=\"searchActionClick(action, search.value)\">\r\n <i [class]=\"action.icon\"></i>\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'router-link'\">\r\n <button type=\"button\" href=\"#\" class=\"ml-1 btn-view-header\" [title]=\"action.tooltip\" (click)=\"routerLinkActionClick(action)\">\r\n <i [class]=\"action.icon\"></i>\r\n </button>\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngSwitchDefault>\r\n <button type=\"button\" class=\"ml-1 btn-view-header\" [title]=\"action.tooltip\" (click)=\"emitActionClick(action)\">\r\n <i [class]=\"action.icon\"></i>\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</header>\r\n\r\n<!-- component -->\r\n<div [class]=\"fluid ? 'view-container-fluid' : 'view-container'\">\r\n <ng-content></ng-content>\r\n</div>\r\n", directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }] });
3020
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ViewLayoutComponent, decorators: [{
3021
- type: Component,
3022
- args: [{
3023
- selector: 'lib-view-layout',
3024
- templateUrl: './view-layout.component.html'
3025
- }]
3026
- }], ctorParameters: function () { return [{ type: i1$1.ActivatedRoute }, { type: i1$1.Router }]; }, propDecorators: { searchInput$: [{
3027
- type: ViewChild,
3028
- args: ['search']
3029
- }], header: [{
3030
- type: Input,
3031
- args: ['show-header']
3032
- }], fluid: [{
3033
- type: Input
3034
- }], title: [{
3035
- type: Input
3036
- }], icon: [{
3037
- type: Input
3038
- }], actions: [{
3039
- type: Input
3040
- }], busy: [{
3041
- type: Input
3042
- }], searchPlaceholder: [{
3043
- type: Input,
3044
- args: ['search-placeholder']
3045
- }], view: [{
3046
- type: Input
3047
- }], metaItems: [{
3048
- type: Input,
3049
- args: ['meta-items']
3050
- }], onAction: [{
3051
- type: Output
3052
- }], onSearch: [{
3053
- type: Output
3054
- }] } });
3055
-
3056
- class ModelViewLayoutComponent {
3057
- constructor(location) {
3058
- this.location = location;
3059
- this.showRightPaneSM = false;
3060
- this.title = 'no title';
3061
- // tslint:disable-next-line:no-input-rename
3062
- this.primary = null;
3063
- // tslint:disable-next-line:no-input-rename
3064
- this.secondary = null;
3065
- // tslint:disable-next-line:no-input-rename
3066
- this.metaItems = [
3067
- // { key: 'test', icon: Icons.Badges, text: 'βρέθηκαν 200 αποτελέσματα' }
3068
- ];
3069
- }
3070
- ngOnInit() {
3071
- }
3072
- onSidePaneActivated($event) {
3073
- this.showRightPaneSM = true;
3074
- }
3075
- onSidePaneDeactivated($event) {
3076
- this.showRightPaneSM = false;
3077
- }
3078
- closeSidePane() {
3079
- this.location.back();
3080
- }
3081
- }
3082
- ModelViewLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ModelViewLayoutComponent, deps: [{ token: i1.Location }], target: i0.ɵɵFactoryTarget.Component });
3083
- ModelViewLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ModelViewLayoutComponent, selector: "lib-model-view-layout", inputs: { title: "title", primary: ["primary-links", "primary"], secondary: ["secondary-links", "secondary"], metaItems: ["meta-items", "metaItems"] }, ngImport: i0, template: "<lib-view-layout [title]=\"title\" [meta-items]=\"metaItems\">\r\n <main class=\"model-view-container\">\r\n <div class=\"model-view-container-inner\">\r\n <aside class=\"model-view-aside\">\r\n <section aria-labelledby=\"menu\" class=\"details-view-aside-header-section\">\r\n <div class=\"model-view-aside-header-container\">\r\n <div class=\"model-view-aside-header-container-inner\">\r\n <ng-content></ng-content>\r\n </div>\r\n <!-- menu items -->\r\n <div class=\"model-view-menu-container\">\r\n <nav class=\"model-view-menu-nav\">\r\n <div class=\"model-view-menu-item\">\r\n <ng-container *ngFor=\"let section of primary\">\r\n <a href=\"#\"\r\n [routerLinkActive]=\"['view-nav-link-active']\"\r\n [routerLink]=\"section.link\"\r\n class=\"view-nav-link\">\r\n {{section.text}}\r\n </a>\r\n </ng-container>\r\n </div>\r\n <div class=\"model-view-menu-item-far\">\r\n <ng-container *ngFor=\"let section of secondary\">\r\n <a href=\"#\"\r\n [routerLinkActive]=\"['view-nav-link-active']\"\r\n [routerLinkActiveOptions]=\"{ exact: true }\"\r\n [routerLink]=\"section.link\"\r\n class=\"view-nav-link\">\r\n {{section.text}}\r\n </a>\r\n </ng-container>\r\n </div>\r\n </nav>\r\n </div>\r\n </div>\r\n </section>\r\n </aside>\r\n <div class=\"model-view-details-container\">\r\n <router-outlet></router-outlet>\r\n </div>\r\n </div>\r\n </main>\r\n", components: [{ type: ViewLayoutComponent, selector: "lib-view-layout", inputs: ["show-header", "fluid", "title", "icon", "actions", "busy", "search-placeholder", "view", "meta-items"], outputs: ["onAction", "onSearch"] }], directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: i1$1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], exportAs: ["routerLinkActive"] }, { type: i1$1.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate"], exportAs: ["outlet"] }] });
3084
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ModelViewLayoutComponent, decorators: [{
3085
- type: Component,
3086
- args: [{
3087
- // tslint:disable-next-line:component-selector
3088
- selector: 'lib-model-view-layout',
3089
- templateUrl: './model-view-layout.component.html'
3090
- }]
3091
- }], ctorParameters: function () { return [{ type: i1.Location }]; }, propDecorators: { title: [{
3092
- type: Input
3093
- }], primary: [{
3094
- type: Input,
3095
- args: ['primary-links']
3096
- }], secondary: [{
3097
- type: Input,
3098
- args: ['secondary-links']
3099
- }], metaItems: [{
3100
- type: Input,
3101
- args: ['meta-items']
3102
- }] } });
3103
-
3104
- class SideViewLayoutComponent {
3105
- constructor(location, router) {
3106
- this.location = location;
3107
- this.router = router;
3108
- this.title = 'Πληροφορίες';
3109
- this.showActions = true;
3110
- this.disabled = false;
3111
- // tslint:disable-next-line:no-input-rename
3112
- this.okLabel = 'Αποθήκευση';
3113
- // tslint:disable-next-line:no-input-rename
3114
- this.okShow = true;
3115
- // tslint:disable-next-line:no-input-rename
3116
- this.closeOnOk = true;
3117
- // tslint:disable-next-line:no-input-rename
3118
- this.cancelLabel = 'Ακύρωση';
3119
- // tslint:disable-next-line:no-input-rename
3120
- this.cancelShow = true;
3121
- // tslint:disable-next-line:no-input-rename
3122
- this.forceLocationBack = false;
3123
- // @Output() close = new EventEmitter<any>();
3124
- this.cancel = new EventEmitter();
3125
- this.ok = new EventEmitter();
3126
- }
3127
- ngOnInit() {
3128
- }
3129
- closeSidePane() {
3130
- if (this.returnPath) {
3131
- this.router.navigateByUrl('/', { skipLocationChange: true }).then(() => this.router.navigateByUrl(this.returnPath || '/'));
3132
- }
3133
- else {
3134
- if ((this.router.url.split('/(')[0] !== this.router.url) && !this.forceLocationBack) {
3135
- this.router.navigateByUrl(this.router.url.split('/(')[0]);
3136
- }
3137
- else if ((this.router.url.split('(')[0] !== this.router.url) && !this.forceLocationBack) {
3138
- this.router.navigateByUrl(this.router.url.split('(')[0]);
3139
- }
3140
- else {
3141
- this.location.back();
3142
- }
3143
- }
3144
- }
3145
- emitClose() {
3146
- this.cancel.emit(false);
3147
- this.closeSidePane();
3148
- }
3149
- emitCancel() {
3150
- this.cancel.emit(false);
3151
- this.closeSidePane();
3152
- }
3153
- emitOK() {
3154
- this.ok.emit(true);
3155
- if (this.closeOnOk) {
3156
- this.closeSidePane();
3157
- }
3158
- }
3159
- }
3160
- SideViewLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SideViewLayoutComponent, deps: [{ token: i1.Location }, { token: i1$1.Router }], target: i0.ɵɵFactoryTarget.Component });
3161
- SideViewLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SideViewLayoutComponent, selector: "lib-side-view-layout", inputs: { title: "title", showActions: "showActions", disabled: "disabled", returnPath: ["return-path", "returnPath"], okLabel: ["ok-label", "okLabel"], okShow: ["ok-show", "okShow"], closeOnOk: ["ok-close-dialog", "closeOnOk"], cancelLabel: ["cancel-label", "cancelLabel"], cancelShow: ["cancel-show", "cancelShow"], forceLocationBack: ["force-location-back", "forceLocationBack"] }, outputs: { cancel: "cancel", ok: "ok" }, ngImport: i0, template: "<div class=\"side-view-layout-size-box\">\r\n <div class=\"side-view-layout-container\">\r\n <div class=\"side-view-layout-container-inner\">\r\n <div class=\"side-view-layout-header-margins\">\r\n <div class=\"side-view-layout-header-container\">\r\n <h2 class=\"side-view-layout-header-title\" id=\"slide-over-title\">\r\n {{title}}\r\n </h2>\r\n <div class=\"side-view-layout-close-button-container\">\r\n <button (click)=\"emitClose()\" class=\"side-view-layout-close-button\">\r\n <span class=\"sr-only\">Close panel</span>\r\n <!-- Heroicon name: outline/x -->\r\n <svg class=\"side-view-layout-close-button-icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" aria-hidden=\"true\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"side-view-layout-content-container\">\r\n <!-- Replace with your content -->\r\n <ng-content></ng-content>\r\n <!-- /End replace -->\r\n </div>\r\n </div>\r\n <div *ngIf=\"showActions\" class=\"side-view-layout-actions-container\">\r\n <button *ngIf=\"cancelShow\" (click)=\"emitCancel()\" type=\"button\" class=\"side-view-layout-action-button-cancel\">\r\n {{cancelLabel}}\r\n </button>\r\n <button *ngIf=\"okShow\" (click)=\"emitOK()\" class=\"side-view-layout-action-button-submit\" [disabled]=\"disabled\">\r\n {{okLabel}}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n", directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
3162
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SideViewLayoutComponent, decorators: [{
3163
- type: Component,
3164
- args: [{
3165
- selector: 'lib-side-view-layout',
3166
- templateUrl: './side-view-layout.component.html'
3167
- }]
3168
- }], ctorParameters: function () { return [{ type: i1.Location }, { type: i1$1.Router }]; }, propDecorators: { title: [{
3169
- type: Input
3170
- }], showActions: [{
3171
- type: Input
3172
- }], disabled: [{
3173
- type: Input
3174
- }], returnPath: [{
3175
- type: Input,
3176
- args: ['return-path']
3177
- }], okLabel: [{
3178
- type: Input,
3179
- args: ['ok-label']
3180
- }], okShow: [{
3181
- type: Input,
3182
- args: ['ok-show']
3183
- }], closeOnOk: [{
3184
- type: Input,
3185
- args: ['ok-close-dialog']
3186
- }], cancelLabel: [{
3187
- type: Input,
3188
- args: ['cancel-label']
3189
- }], cancelShow: [{
3190
- type: Input,
3191
- args: ['cancel-show']
3192
- }], forceLocationBack: [{
3193
- type: Input,
3194
- args: ['force-location-back']
3195
- }], cancel: [{
3196
- type: Output
3197
- }], ok: [{
3198
- type: Output
3199
- }] } });
3200
-
3201
- class FormLayoutComponent {
3202
- constructor(router$) {
3203
- this.router$ = router$;
3204
- this.title = null;
3205
- // tslint:disable-next-line:no-input-rename
3206
- this.searchPlaceholder = 'αναζήτηση';
3207
- this.actions = null;
3208
- // tslint:disable-next-line:no-input-rename
3209
- this.subTitle = null;
3210
- // tslint:disable-next-line:no-output-on-prefix
3211
- this.onAction = new EventEmitter();
3212
- // tslint:disable-next-line:no-output-on-prefix
3213
- this.onSearch = new EventEmitter();
3214
- this.onComplete = new EventEmitter();
3215
- }
3216
- ngOnInit() {
3217
- var _a;
3218
- if ((_a = this.searchInput$) === null || _a === void 0 ? void 0 : _a.nativeElement) {
3219
- fromEvent(this.searchInput$.nativeElement, 'keyup').pipe(map((event) => {
3220
- return event.target.value; // Get input value.
3221
- }), filter(inputValue => inputValue.length >= 3 || inputValue.length === 0),
3222
- // If character length greater than minimumSearchCharacters setting.
3223
- debounceTime(1000), // Time in milliseconds between key events.
3224
- distinctUntilChanged() // If previous query is different from current.
3225
- ).subscribe();
3226
- }
3227
- }
3228
- onSidePaneDeactivated($event) {
3229
- this.onComplete.emit(true);
3230
- }
3231
- emitActionClick(action) {
3232
- this.onAction.emit(action);
3233
- }
3234
- searchActionClick(action, text) {
3235
- this.onSearch.emit(text);
3236
- }
3237
- searchActionType(text) {
3238
- var _a;
3239
- this.onSearch.emit((_a = this.searchInput$) === null || _a === void 0 ? void 0 : _a.nativeElement.value);
3240
- }
3241
- routerLinkActionClick(action, relative = false) {
3242
- if (action.outlet) {
3243
- this.router$.navigate(['', { outlets: { formRightPane: action.link } }]);
3244
- }
3245
- else {
3246
- this.router$.navigate([action.link]);
3247
- }
3248
- }
3249
- }
3250
- FormLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FormLayoutComponent, deps: [{ token: i1$1.Router }], target: i0.ɵɵFactoryTarget.Component });
3251
- FormLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FormLayoutComponent, selector: "lib-form-layout", inputs: { title: "title", searchPlaceholder: ["search-placeholder", "searchPlaceholder"], actions: "actions", subTitle: ["sub-title", "subTitle"] }, outputs: { onAction: "onAction", onSearch: "onSearch", onComplete: "onComplete" }, viewQueries: [{ propertyName: "searchInput$", first: true, predicate: ["search"], descendants: true }], ngImport: i0, template: "<div class=\"form-layout-container\">\r\n <div class=\"form-header\" *ngIf=\"title || subTitle || actions\">\r\n <div class=\"form-header-inner\">\r\n <h3 class=\"form-title\">\r\n {{ title }}\r\n </h3>\r\n <p class=\"form-subtitle\">\r\n {{ subTitle }}\r\n </p>\r\n </div>\r\n <div class=\"form-header-actions\">\r\n <ng-container *ngFor=\"let action of actions\" [ngSwitch]=\"action.type\">\r\n <ng-container *ngSwitchCase=\"'search'\">\r\n <label for=\"search\" class=\"sr-only\">Search</label>\r\n <div class=\"search-container\">\r\n <div class=\"pointer-events-none absolute inset-y-0 left-0 pl-3 flex items-center\">\r\n <!--<svg class=\"h-5 w-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\" d=\"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z\" clip-rule=\"evenodd\" />\r\n </svg>-->\r\n </div>\r\n <input id=\"search\"\r\n #search\r\n class=\"form-search-input\"\r\n [placeholder]=\"searchPlaceholder\"\r\n type=\"search\"\r\n name=\"search\"\r\n (input)=\"searchActionType(search.value)\">\r\n </div>\r\n <button type=\"button\"\r\n href=\"#\"\r\n class=\"btn-form-view-header-search\"\r\n [title]=\"action.tooltip\"\r\n (click)=\"searchActionClick(action, search.value)\">\r\n <i [class]=\"action.icon\"></i>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'router-link'\">\r\n <button type=\"button\"\r\n href=\"#\"\r\n class=\"ml-1 btn-form-view-header\"\r\n [title]=\"action.tooltip\"\r\n (click)=\"routerLinkActionClick(action)\">\r\n <i [class]=\"action.icon\"></i>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <button type=\"button\"\r\n class=\"ml-1 btn-form-view-header\"\r\n [title]=\"action.tooltip\"\r\n (click)=\"emitActionClick(action)\">\r\n <i [class]=\"action.icon\"></i>\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"form-content-container\">\r\n <div [ngClass]=\"{'form-content-container-inner': actions}\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n <lib-side-pane #formPane (onComplete)=\"onSidePaneDeactivated($event)\">\r\n <router-outlet name=\"formRightPane\"\r\n (activate)=\"formPane.onSidePaneActivated($event)\"\r\n (deactivate)=\"formPane.onSidePaneDeactivated($event)\"></router-outlet>\r\n </lib-side-pane>\r\n</div>\r\n", components: [{ type: SidePaneComponent, selector: "lib-side-pane", inputs: ["visible", "animate"], outputs: ["onComplete"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1$1.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate"], exportAs: ["outlet"] }] });
3252
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FormLayoutComponent, decorators: [{
3253
- type: Component,
3254
- args: [{
3255
- selector: 'lib-form-layout',
3256
- templateUrl: './form-layout.component.html'
3257
- }]
3258
- }], ctorParameters: function () { return [{ type: i1$1.Router }]; }, propDecorators: { searchInput$: [{
3259
- type: ViewChild,
3260
- args: ['search']
3261
- }], title: [{
3262
- type: Input
3263
- }], searchPlaceholder: [{
3264
- type: Input,
3265
- args: ['search-placeholder']
3266
- }], actions: [{
3267
- type: Input
3268
- }], subTitle: [{
3269
- type: Input,
3270
- args: ['sub-title']
3271
- }], onAction: [{
3272
- type: Output
3273
- }], onSearch: [{
3274
- type: Output
3275
- }], onComplete: [{
3276
- type: Output
3277
- }] } });
3278
-
3279
- class AuthCallbackComponent {
3280
- constructor(authService, router) {
3281
- this.authService = authService;
3282
- this.router = router;
3283
- this.status = 'παρακαλώ περιμένετε...';
3284
- }
3285
- ngOnInit() {
3286
- this.authService.signinRedirectCallback().subscribe((user) => {
3287
- var _a;
3288
- if (user) {
3289
- this.router.navigateByUrl(((_a = user.state) === null || _a === void 0 ? void 0 : _a.url) || '/');
3290
- }
3291
- });
3292
- }
3293
- }
3294
- AuthCallbackComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AuthCallbackComponent, deps: [{ token: AuthService }, { token: i1$1.Router }], target: i0.ɵɵFactoryTarget.Component });
3295
- AuthCallbackComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: AuthCallbackComponent, selector: "lib-auth-callback", ngImport: i0, template: "<lib-view-layout [title]=\"status\" [busy]=\"true\"></lib-view-layout>", components: [{ type: ViewLayoutComponent, selector: "lib-view-layout", inputs: ["show-header", "fluid", "title", "icon", "actions", "busy", "search-placeholder", "view", "meta-items"], outputs: ["onAction", "onSearch"] }] });
3296
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AuthCallbackComponent, decorators: [{
3297
- type: Component,
3298
- args: [{
3299
- selector: 'lib-auth-callback',
3300
- templateUrl: './auth-callback.component.html'
3301
- }]
3302
- }], ctorParameters: function () { return [{ type: i2.AuthService, decorators: [{
3303
- type: Inject,
3304
- args: [AuthService]
3305
- }] }, { type: i1$1.Router }]; } });
3306
-
3307
- class AuthRenewComponent {
3308
- constructor(authService, router) {
3309
- this.authService = authService;
3310
- this.router = router;
3311
- }
3312
- ngOnInit() {
3313
- this.authService.signinSilentCallback().subscribe(user => {
3314
- if (!user) {
3315
- this.router.navigate(['/unauthorized']);
3316
- }
3317
- });
3318
- }
3319
- }
3320
- AuthRenewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AuthRenewComponent, deps: [{ token: AuthService }, { token: i1$1.Router }], target: i0.ɵɵFactoryTarget.Component });
3321
- AuthRenewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: AuthRenewComponent, selector: "lib-auth-renew", ngImport: i0, template: '', isInline: true });
3322
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AuthRenewComponent, decorators: [{
3323
- type: Component,
3324
- args: [{
3325
- selector: 'lib-auth-renew',
3326
- template: ''
3327
- }]
3328
- }], ctorParameters: function () { return [{ type: i2.AuthService, decorators: [{
3329
- type: Inject,
3330
- args: [AuthService]
3331
- }] }, { type: i1$1.Router }]; } });
3332
-
3333
- class LoggedOutComponent {
3334
- constructor(authService) {
3335
- this.authService = authService;
3336
- this.status = 'working on it, please give me a sec...';
3337
- this.finished = false;
3338
- }
3339
- ngOnInit() {
3340
- this.authService.removeUser().subscribe(() => {
3341
- this.status = 'Thank you!';
3342
- this.finished = true;
3343
- });
3344
- }
3345
- }
3346
- LoggedOutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LoggedOutComponent, deps: [{ token: AuthService }], target: i0.ɵɵFactoryTarget.Component });
3347
- LoggedOutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: LoggedOutComponent, selector: "lib-logged-out", ngImport: i0, template: "<lib-view-layout title=\"\u0388\u03C7\u03B5\u03C4\u03B5 \u03B1\u03C0\u03BF\u03C3\u03C5\u03BD\u03B4\u03B5\u03B8\u03B5\u03AF \u03BC\u03B5 \u03B5\u03C0\u03B9\u03C4\u03C5\u03C7\u03AF\u03B1!\"></lib-view-layout>", components: [{ type: ViewLayoutComponent, selector: "lib-view-layout", inputs: ["show-header", "fluid", "title", "icon", "actions", "busy", "search-placeholder", "view", "meta-items"], outputs: ["onAction", "onSearch"] }] });
3348
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LoggedOutComponent, decorators: [{
3349
- type: Component,
3350
- args: [{
3351
- // tslint:disable-next-line:component-selector
3352
- selector: 'lib-logged-out',
3353
- templateUrl: './logged-out.component.html'
3354
- }]
3355
- }], ctorParameters: function () { return [{ type: i2.AuthService, decorators: [{
3356
- type: Inject,
3357
- args: [AuthService]
3358
- }] }]; } });
3359
-
3360
- class ErrorComponent {
3361
- constructor() {
3362
- this.error = 'Error!';
3363
- }
3364
- ngOnInit() {
3365
- }
3366
- }
3367
- ErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3368
- ErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ErrorComponent, selector: "lib-error", ngImport: i0, template: "<lib-view-layout [show-header]=\"false\" title=\"500 - \u03C0\u03B1\u03C1\u03BF\u03C5\u03C3\u03B9\u03AC\u03C3\u03C4\u03B7\u03BA\u03B5 \u03C3\u03C6\u03AC\u03BB\u03BC\u03B1!\">\r\n <div class=\"bg-gray-600 view-container\">\r\n <div class=\"max-w-2xl mx-auto text-center py-16 px-4 sm:py-20 sm:px-6 lg:px-8\">\r\n <h2 class=\"text-3xl font-extrabold text-white sm:text-4xl\">\r\n <span class=\"block\">500</span>\r\n </h2>\r\n <p class=\"mt-4 text-lg leading-6 text-gray-200\">\u03C3\u03C6\u03AC\u03BB\u03BC\u03B1, \u03BA\u03B1\u03C4\u03B9 \u03B4\u03B5\u03BD \u03C0\u03AE\u03B3\u03B5 \u03BA\u03B1\u03BB\u03AC...!</p>\r\n <a href=\"/\" class=\"mt-8 inline-flex items-center justify-center px-5 py-3 border border-transparent text-base font-sm rounded-sm text-gray-600 bg-white hover:bg-gray-50 sm:w-auto\">\r\n \u03C0\u03B1\u03C4\u03AE\u03C3\u03C4\u03B5 \u03B5\u03B4\u03CE \u03B3\u03B9\u03B1 \u03BD\u03B1 \u03B5\u03C0\u03B9\u03C3\u03C4\u03C1\u03AD\u03C8\u03B5\u03C4\u03B5\r\n </a>\r\n </div>\r\n </div>\r\n</lib-view-layout>\r\n", components: [{ type: ViewLayoutComponent, selector: "lib-view-layout", inputs: ["show-header", "fluid", "title", "icon", "actions", "busy", "search-placeholder", "view", "meta-items"], outputs: ["onAction", "onSearch"] }] });
3369
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ErrorComponent, decorators: [{
3370
- type: Component,
3371
- args: [{
3372
- selector: 'lib-error',
3373
- templateUrl: './error.component.html'
3374
- }]
3375
- }] });
3376
-
3377
- class PageNotFoundComponent {
3378
- constructor() { }
3379
- ngOnInit() {
3380
- }
3381
- }
3382
- PageNotFoundComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PageNotFoundComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3383
- PageNotFoundComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: PageNotFoundComponent, selector: "lib-page-not-found", ngImport: i0, template: "<lib-view-layout [show-header]=\"false\" title=\"404 - \u03B4\u03B5\u03BD \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B5!\">\r\n <div class=\"text-gray-900\">\r\n <div class=\"max-w-4xl mx-auto text-center py-16 px-4 sm:py-20 sm:px-6 lg:px-8\">\r\n <h2 class=\"text-3xl font-extrabold sm:text-4xl\">\r\n <span class=\"block\">404</span>\r\n </h2>\r\n <p class=\"mt-4 text-lg leading-6 text-gray-800\">\u03B4\u03B5\u03BD \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B5 \u03B7 \u03C3\u03B5\u03BB\u03AF\u03B4\u03B1 \u03C0\u03BF\u03C5 \u03B6\u03B7\u03C4\u03AE\u03C3\u03B1\u03C4\u03B5!</p>\r\n <a href=\"/\"\r\n class=\"mt-8 inline-flex items-center justify-center px-5 py-3 border border-transparent text-base font-sm rounded-sm text-gray-600 bg-white hover:bg-gray-50 sm:w-auto\">\r\n \u03C0\u03B1\u03C4\u03AE\u03C3\u03C4\u03B5 \u03B5\u03B4\u03CE \u03B3\u03B9\u03B1 \u03BD\u03B1 \u03B5\u03C0\u03B9\u03C3\u03C4\u03C1\u03AD\u03C8\u03B5\u03C4\u03B5\r\n </a>\r\n </div>\r\n </div>\r\n</lib-view-layout>\r\n", components: [{ type: ViewLayoutComponent, selector: "lib-view-layout", inputs: ["show-header", "fluid", "title", "icon", "actions", "busy", "search-placeholder", "view", "meta-items"], outputs: ["onAction", "onSearch"] }] });
3384
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PageNotFoundComponent, decorators: [{
3385
- type: Component,
3386
- args: [{
3387
- selector: 'lib-page-not-found',
3388
- templateUrl: './page-not-found.component.html'
3389
- }]
3390
- }], ctorParameters: function () { return []; } });
3391
-
3392
- class UnauthorizedComponent {
3393
- constructor() { }
3394
- ngOnInit() { }
3395
- }
3396
- UnauthorizedComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: UnauthorizedComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3397
- UnauthorizedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: UnauthorizedComponent, selector: "lib-unauthorized", ngImport: i0, template: "<lib-view-layout [show-header]=\"false\" title=\"401 - \u03B4\u03B5\u03BD \u03B5\u03C0\u03B9\u03C4\u03C1\u03AD\u03C0\u03B5\u03C4\u03B1\u03B9 \u03B7 \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7!\">\r\n <div class=\"bg-gray-600 view-container\">\r\n <div class=\"max-w-2xl mx-auto text-center py-16 px-4 sm:py-20 sm:px-6 lg:px-8\">\r\n <h2 class=\"text-3xl font-extrabold text-white sm:text-4xl\">\r\n <span class=\"block\">401</span>\r\n </h2>\r\n <p class=\"mt-4 text-lg leading-6 text-gray-200\">\u03B4\u03B5\u03BD \u03AD\u03C7\u03B5\u03C4\u03B5 \u03C4\u03B1 \u03BA\u03B1\u03C4\u03AC\u03BB\u03BB\u03B7\u03BB\u03B1 \u03B4\u03B9\u03BA\u03B1\u03B9\u03CE\u03BC\u03B1\u03C4\u03B1 \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2!</p>\r\n <a href=\"/\" class=\"mt-8 inline-flex items-center justify-center px-5 py-3 border border-transparent text-base font-sm rounded-sm text-gray-600 bg-white hover:bg-gray-50 sm:w-auto\">\r\n \u03C0\u03B1\u03C4\u03AE\u03C3\u03C4\u03B5 \u03B5\u03B4\u03CE \u03B3\u03B9\u03B1 \u03BD\u03B1 \u03B5\u03C0\u03B9\u03C3\u03C4\u03C1\u03AD\u03C8\u03B5\u03C4\u03B5\r\n </a>\r\n </div>\r\n </div>\r\n </lib-view-layout>\r\n\r\n\r\n", components: [{ type: ViewLayoutComponent, selector: "lib-view-layout", inputs: ["show-header", "fluid", "title", "icon", "actions", "busy", "search-placeholder", "view", "meta-items"], outputs: ["onAction", "onSearch"] }] });
3398
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: UnauthorizedComponent, decorators: [{
3399
- type: Component,
3400
- args: [{
3401
- selector: 'lib-unauthorized',
3402
- templateUrl: './unauthorized.component.html'
3403
- }]
3404
- }], ctorParameters: function () { return []; } });
3405
-
3406
- class AddressPipe {
3407
- transform(value) {
3408
- if (value === undefined || null || '') {
3409
- return '';
3410
- }
3411
- // tslint:disable-next-line:no-non-null-assertion
3412
- return `${value.street || ''}${value.streetNumber ? ' ' + value.streetNumber : ''}${value.city ? ', ' + value.city : ''}${+value.postalCode ? ', ' + +value.postalCode : ''}`;
3413
- }
3414
- }
3415
- AddressPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AddressPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
3416
- AddressPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AddressPipe, name: "address", pure: false });
3417
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AddressPipe, decorators: [{
3418
- type: Pipe,
3419
- args: [{
3420
- name: 'address',
3421
- pure: false
3422
- }]
3423
- }] });
3424
-
3425
- class DurationFormatPipe {
3426
- transform(value, arg1, arg2) {
3427
- let days;
3428
- let seconds;
3429
- let minutes;
3430
- let hours;
3431
- if (arg1 === 'ms' && arg2 === 'hhmmss') {
3432
- seconds = Math.floor((value / 1000) % 60);
3433
- minutes = Math.floor(((value / (1000 * 60)) % 60));
3434
- hours = Math.floor((value / (1000 * 60 * 60)));
3435
- return this.format(arg2, seconds, minutes, hours, days);
3436
- }
3437
- else if (arg1 === 's' && arg2 === 'hhmmss') {
3438
- seconds = Math.floor((value % 60));
3439
- minutes = Math.floor(((value / 60) % 60));
3440
- hours = Math.floor(((value / 60) / 60));
3441
- return this.format(arg2, seconds, minutes, hours, days);
3442
- }
3443
- else if (arg1 === 'ms' && (arg2 === 'ddhhmmss' || arg2 === 'ddhhmmssLong')) {
3444
- seconds = Math.floor(((value / 1000) % 60));
3445
- minutes = Math.floor((value / (1000 * 60) % 60));
3446
- hours = Math.floor((value / (1000 * 60 * 60) % 24));
3447
- days = Math.floor((value / (1000 * 60 * 60 * 24)));
3448
- return this.format(arg2, seconds, minutes, hours, days);
3449
- }
3450
- else if (arg1 === 's' && (arg2 === 'ddhhmmss' || arg2 === 'ddhhmmssLong')) {
3451
- seconds = Math.floor(value % 60);
3452
- minutes = Math.floor(((value / 60) % 60));
3453
- hours = Math.floor(((value / 60) / 60) % 24);
3454
- days = Math.floor((((value / 60) / 60) / 24));
3455
- return this.format(arg2, seconds, minutes, hours, days);
3456
- }
3457
- else {
3458
- return value;
3459
- }
3460
- }
3461
- format(arg2, seconds, minutes, hours, days) {
3462
- (days < 10) ? days = '0' + days : days;
3463
- (hours < 10) ? hours = '0' + hours : hours;
3464
- (minutes < 10) ? minutes = '0' + minutes : minutes;
3465
- (seconds < 10) ? seconds = '0' + seconds : seconds;
3466
- switch (arg2) {
3467
- case 'hhmmss':
3468
- return `${hours}:${minutes}:${seconds}`;
3469
- case 'ddhhmmss':
3470
- return `${days}d, ${hours}h, ${minutes}m, ${seconds}s`;
3471
- case 'ddhhmmssLong':
3472
- return `${days} days, ${hours} hours, ${minutes} minutes, ${seconds} seconds`;
3473
- }
3474
- return undefined;
3475
- }
3476
- }
3477
- DurationFormatPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DurationFormatPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
3478
- DurationFormatPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DurationFormatPipe, name: "durationFormat", pure: false });
3479
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DurationFormatPipe, decorators: [{
3480
- type: Pipe,
3481
- args: [{
3482
- name: 'durationFormat',
3483
- pure: false
3484
- }]
3485
- }] });
3486
-
3487
- class BaseListComponent {
3488
- constructor(route$, router$) {
3489
- this.route$ = route$;
3490
- this.router$ = router$;
3491
- this.items = null;
3492
- this.view = ListViewType.Tiles;
3493
- this.title = null;
3494
- this.actions = [];
3495
- this.loaderItems = [1, 2, 3, 4, 5];
3496
- this.page = 1;
3497
- this.pageSize = 20;
3498
- this.count = 0;
3499
- this.sort = '';
3500
- this.sortdir = '';
3501
- this.search = '';
3502
- this.filters = [];
3503
- this.searchOptions = [];
3504
- this.sortOptions = [];
3505
- this.metaItems = [];
3506
- }
3507
- ngOnDestroy() {
3508
- if (this.routeSub$) {
3509
- this.routeSub$.unsubscribe();
3510
- }
3511
- }
3512
- getViewActions() {
3513
- const actions = [
3514
- new ViewAction('search', null, null, Icons.Search, 'αναζήτηση'),
3515
- new ViewAction('refresh', null, null, Icons.Refresh, 'ανανέωση στοιχείων')
3516
- ];
3517
- if (this.newItemLink) {
3518
- actions.push(new RouterViewAction(Icons.Add, this.newItemLink, 'rightpane', 'προσθήκη νέας εγγραφής;'));
3519
- }
3520
- return of(actions);
3521
- }
3522
- ngOnInit() {
3523
- this.getViewActions().subscribe(actions => {
3524
- this.actions = actions || [];
3525
- });
3526
- this.metaItems = [
3527
- { key: 'count', icon: Icons.ItemsCount, text: 'παρακαλώ περιμένετε...' }
3528
- ];
3529
- // disabled external route changes monitoring due to sync issues - which is bad :) - refresh from url will not work
3530
- // until i come up with a solution...
3531
- this.routeSub$ = this.route$.queryParamMap.subscribe(params => {
3532
- if (params.keys.length === 0) {
3533
- return;
3534
- }
3535
- // changing the view mode does not require reloading...
3536
- this.view = params.get('view') || ListViewType.Tiles;
3537
- // console.log('route changes ', this.view);
3538
- if (params.get('search') !== null && params.get('search') !== this.search) {
3539
- this.searchChanged(params.get('search'));
3540
- }
3541
- const page = +(params.get('page') || 1);
3542
- if (page !== this.page) {
3543
- this.page = page;
3544
- }
3545
- const size = +(params.get('pagesize') || 20);
3546
- if (this.pageSize !== size) {
3547
- this.pageSize = size;
3548
- }
3549
- if (params.get('search') !== this.search) {
3550
- this.search = params.get('search');
3551
- }
3552
- if (params.get('sort') !== this.sort) {
3553
- this.sort = params.get('sort');
3554
- }
3555
- if (params.get('dir') !== this.sortdir) {
3556
- this.sortdir = params.get('dir');
3557
- }
3558
- // initialize filters that may reside in the query string
3559
- this.filters = this.getFiltersFrom(params);
3560
- });
3561
- // just to sync params in query
3562
- this.setRouteParams(true);
3563
- this.load();
3564
- }
3565
- /**
3566
- * Get filters from a querystring
3567
- * @param queryParamMap
3568
- * @returns filters found from a paramMap
3569
- */
3570
- getFiltersFrom(queryParamMap) {
3571
- let filterResult = [];
3572
- if (queryParamMap.has(QueryParameters.FILTER) && queryParamMap.get(QueryParameters.FILTER).length > 0) {
3573
- let filterValue = queryParamMap.get(QueryParameters.FILTER);
3574
- const filterValues = filterValue === null || filterValue === void 0 ? void 0 : filterValue.split(","); // we may have multiple filters in filter query param
3575
- if (filterValues && filterValues.length > 0) {
3576
- // create the filterClauses derived from the query params
3577
- for (var index in filterValues) {
3578
- let filterClause = FilterClause.parse(filterValues[index]);
3579
- const parsed = new FilterClause(filterClause.member, filterClause.value, filterClause.operator, filterClause.dataType, this.searchOptions);
3580
- if (parsed !== undefined) {
3581
- filterResult.push(parsed);
3582
- }
3583
- }
3584
- }
3585
- }
3586
- return filterResult;
3587
- }
3588
- setRouteParams(locationChange = false) {
3589
- this.router$.navigate([], {
3590
- relativeTo: this.route$, queryParams: {
3591
- view: this.view,
3592
- page: this.page,
3593
- pagesize: this.pageSize,
3594
- search: this.search,
3595
- sort: this.sort,
3596
- dir: this.sortdir,
3597
- filter: this.filterClausesToString(this.filters)
3598
- }, queryParamsHandling: 'merge', skipLocationChange: locationChange
3599
- });
3600
- }
3601
- filterClausesToString(filters) {
3602
- return filters === null || filters === void 0 ? void 0 : filters.map((f) => {
3603
- if (f.dataType === 'datetime') {
3604
- f.value = (new Date(f.value)).toISOString();
3605
- }
3606
- return f.toString();
3607
- }).join(',');
3608
- }
3609
- actionHandler($event) {
3610
- // console.log('BaseListComponent actionHandler', $event);
3611
- if ($event.key === 'refresh') {
3612
- this.refresh();
3613
- }
3614
- }
3615
- load() {
3616
- // console.log('BaseListComponent LOAD');
3617
- this.count = 0;
3618
- this.items = null;
3619
- this.loadItems().subscribe(result => {
3620
- this.count = result ? result.count : 0;
3621
- this.items = result === null || result === void 0 ? void 0 : result.items;
3622
- this.updateHeaderMeta();
3623
- }, err => {
3624
- this.count = 0;
3625
- this.items = null;
3626
- this.updateHeaderMeta();
3627
- });
3628
- }
3629
- updateHeaderMeta() {
3630
- var _a;
3631
- const count = (_a = this.metaItems) === null || _a === void 0 ? void 0 : _a.filter(m => m.key === 'count')[0];
3632
- if (count) {
3633
- this.count === 1 ? count.text = `${this.count} αποτέλεσμα` : count.text = `${this.count} αποτελέσματα`;
3634
- }
3635
- }
3636
- clear() {
3637
- this.count = 0;
3638
- this.page = 1;
3639
- this.items = null;
3640
- this.search = null;
3641
- this.setRouteParams();
3642
- this.load();
3643
- }
3644
- refresh() {
3645
- this.count = 0;
3646
- this.page = 1;
3647
- this.items = null;
3648
- this.setRouteParams();
3649
- this.load();
3650
- }
3651
- pageChanged(page) {
3652
- if (this.page !== page) {
3653
- this.page = page;
3654
- this.setRouteParams();
3655
- this.load();
3656
- }
3657
- }
3658
- pageSizeChanged(pageSize) {
3659
- if (this.pageSize !== pageSize) {
3660
- this.pageSize = pageSize;
3661
- this.page = 1;
3662
- this.setRouteParams();
3663
- this.refresh();
3664
- }
3665
- }
3666
- sortChanged(sort) {
3667
- // console.log('base-list sortChanged', sort);
3668
- if (this.sort !== sort) {
3669
- this.page = 1;
3670
- this.sort = sort;
3671
- this.setRouteParams();
3672
- this.refresh();
3673
- }
3674
- }
3675
- sortdirChanged(sortdir) {
3676
- if (this.sortdir !== sortdir) {
3677
- this.page = 1;
3678
- this.sortdir = sortdir;
3679
- this.setRouteParams();
3680
- this.refresh();
3681
- }
3682
- }
3683
- advancedSearchChanged(filters) {
3684
- this.count = 0;
3685
- this.page = 1;
3686
- this.items = null;
3687
- this.filters = filters;
3688
- this.setRouteParams();
3689
- this.load();
3690
- }
3691
- searchChanged(searchText) {
3692
- this.count = 0;
3693
- this.page = 1;
3694
- this.items = null;
3695
- this.search = searchText;
3696
- this.setRouteParams();
3697
- this.load();
3698
- }
3699
- }
3700
- BaseListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BaseListComponent, deps: [{ token: i1$1.ActivatedRoute }, { token: i1$1.Router }], target: i0.ɵɵFactoryTarget.Component });
3701
- BaseListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: BaseListComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true });
3702
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BaseListComponent, decorators: [{
3703
- type: Component,
3704
- args: [{ template: '' }]
3705
- }], ctorParameters: function () { return [{ type: i1$1.ActivatedRoute }, { type: i1$1.Router }]; } });
3706
-
3707
- const cssClassNames = {
3708
- backdrop: 'modal-backdrop',
3709
- show: 'show',
3710
- fade: 'fade',
3711
- modalOpen: 'modal-open'
3712
- };
3713
- const animationTime = {
3714
- backdrop: 150,
3715
- modal: 300,
3716
- };
3717
-
3718
- /**
3719
- * Background layer for modals.
3720
- * Override class name to theme it.
3721
- * @see {@link cssClassNames}
3722
- * @internal
3723
- */
3724
- class ModalBackdropComponent {
3725
- constructor(element, renderer) {
3726
- this.element = element;
3727
- this.renderer = renderer;
3728
- this.animationsEnabled = false;
3729
- }
3730
- ngOnInit() {
3731
- if (this.animationsEnabled) {
3732
- this.renderer.addClass(this.element.nativeElement, cssClassNames.fade);
3733
- this.reflow(this.element.nativeElement);
3734
- }
3735
- this.renderer.addClass(this.element.nativeElement, cssClassNames.show);
3736
- }
3737
- hide() {
3738
- this.renderer.removeClass(this.element.nativeElement, cssClassNames.show);
3739
- setTimeout(() => { var _a; return (_a = this.backdropLoader) === null || _a === void 0 ? void 0 : _a.hide(); }, this.animationsEnabled ? animationTime.backdrop : 0);
3740
- }
3741
- reflow(element) {
3742
- ((bs) => bs)(element.offsetHeight);
3743
- }
3744
- }
3745
- ModalBackdropComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ModalBackdropComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
3746
- ModalBackdropComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ModalBackdropComponent, selector: "lib-modal-backdrop", host: { classAttribute: "modal-backdrop" }, ngImport: i0, template: '', isInline: true, encapsulation: i0.ViewEncapsulation.None });
3747
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ModalBackdropComponent, decorators: [{
3748
- type: Component,
3749
- args: [{
3750
- selector: 'lib-modal-backdrop',
3751
- encapsulation: ViewEncapsulation.None,
3752
- template: '',
3753
- host: {
3754
- class: cssClassNames.backdrop,
3755
- },
3756
- }]
3757
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; } });
3758
-
3759
- /**
3760
- * Modals option can be passed to a specific modal from {@link ModalService.show} or
3761
- * set globbaly using the injection token {@link MODAL_CONFIG_DEFAULT_OVERRIDE}.
3762
- * @remarks
3763
- * Modal specific options are merged with global options.
3764
- * @see {@link modalConfigDefaults} for defaults.
3765
- * @public
3766
- */
3767
- class ModalOptions {
3768
- }
3769
- ModalOptions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ModalOptions, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3770
- ModalOptions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ModalOptions });
3771
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ModalOptions, decorators: [{
3772
- type: Injectable
3773
- }] });
3774
- /**
3775
- * Default option values.
3776
- */
3777
- const modalConfigDefaults = {
3778
- backdrop: true,
3779
- keyboard: true,
3780
- show: false,
3781
- ignoreBackdropClick: false,
3782
- class: '',
3783
- animated: true,
3784
- initialState: {},
3785
- closeInterceptor: void 0,
3786
- };
3787
- /**
3788
- * Use this injection token to set global options.
3789
- */
3790
- const MODAL_CONFIG_DEFAULT_OVERRIDE = new InjectionToken('override-default-config');
3791
-
3792
- /**
3793
- * Modal container component.
3794
- * @remarks
3795
- * All dynamic content `TemplateRef` or `Component` case will be drawn inside this.
3796
- * You can override css classes to theme it {@link cssClassNames}
3797
- * @internal
3798
- */
3799
- class ModalContainerComponent {
3800
- constructor(options, _element, renderer) {
3801
- this._element = _element;
3802
- this.renderer = renderer;
3803
- this.isShown = false;
3804
- this.animationsEnabled = false;
3805
- this.isModalHiding = false;
3806
- this.clickStartedInContent = false;
3807
- this.config = Object.assign({}, options);
3808
- }
3809
- ngOnInit() {
3810
- if (this.animationsEnabled) {
3811
- this.renderer.addClass(this._element.nativeElement, cssClassNames.fade);
3812
- }
3813
- this.renderer.setStyle(this._element.nativeElement, 'display', 'block');
3814
- setTimeout(() => {
3815
- this.isShown = true;
3816
- this.renderer.addClass(this._element.nativeElement, cssClassNames.show);
3817
- }, this.animationsEnabled ? animationTime.backdrop : 0);
3818
- if (this._element.nativeElement) {
3819
- this._element.nativeElement.focus();
3820
- }
3821
- }
3822
- onClickStarted(event) {
3823
- this.clickStartedInContent = event.target !== this._element.nativeElement;
3824
- }
3825
- onClickStop(event) {
3826
- const clickedInBackdrop = event.target === this._element.nativeElement && !this.clickStartedInContent;
3827
- if (this.config.ignoreBackdropClick || this.config.backdrop === 'static' || !clickedInBackdrop) {
3828
- this.clickStartedInContent = false;
3829
- return;
3830
- }
3831
- this.hide();
3832
- }
3833
- onPopState() {
3834
- this.hide();
3835
- }
3836
- onEsc(event) {
3837
- var _a;
3838
- if (!this.isShown) {
3839
- return;
3840
- }
3841
- if (event.keyCode === 27 || event.key === 'Escape' || event.key === 'Esc') {
3842
- event.preventDefault();
3843
- }
3844
- if (this.config.keyboard && this.config.id === ((_a = this.modalService) === null || _a === void 0 ? void 0 : _a.getActiveModal().config.id)) {
3845
- this.hide();
3846
- }
3847
- }
3848
- ngOnDestroy() {
3849
- if (this.isShown) {
3850
- this._hide();
3851
- }
3852
- }
3853
- hide(result) {
3854
- if (this.isModalHiding || !this.isShown) {
3855
- return;
3856
- }
3857
- if (this.config.closeInterceptor) {
3858
- this.config.closeInterceptor().then(() => this._hide(), () => undefined);
3859
- return;
3860
- }
3861
- this._hide(result);
3862
- }
3863
- _hide(result) {
3864
- this.isModalHiding = true;
3865
- this.renderer.removeClass(this._element.nativeElement, cssClassNames.show);
3866
- setTimeout(() => {
3867
- var _a;
3868
- this.isShown = false;
3869
- (_a = this.modalService) === null || _a === void 0 ? void 0 : _a.hide(this.config.id, result);
3870
- this.isModalHiding = false;
3871
- }, this.animationsEnabled ? animationTime.modal : 0);
3872
- }
3873
- }
3874
- ModalContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ModalContainerComponent, deps: [{ token: ModalOptions }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
3875
- ModalContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ModalContainerComponent, selector: "lib-modal-container", host: { attributes: { "role": "dialog", "tabindex": "-1" }, listeners: { "mousedown": "onClickStarted($event)", "click": "onClickStop($event)", "window:popstate": "onPopState()", "window:keydown.esc": "onEsc($event)" }, properties: { "attr.aria-modal": "true", "attr.aria-labelledby": "config.ariaLabelledBy", "attr.aria-describedby": "config.ariaDescribedby" }, classAttribute: "modal" }, ngImport: i0, template: `
3876
- <div [class]="'modal-dialog' + (config.class ? ' ' + config.class : '')" role="document" focusTrap>
3877
- <div class="modal-content">
3878
- <ng-content></ng-content>
3879
- </div>
3880
- </div>
3881
- `, isInline: true });
3882
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ModalContainerComponent, decorators: [{
3883
- type: Component,
3884
- args: [{
3885
- selector: 'lib-modal-container',
3886
- template: `
3887
- <div [class]="'modal-dialog' + (config.class ? ' ' + config.class : '')" role="document" focusTrap>
3888
- <div class="modal-content">
3889
- <ng-content></ng-content>
3890
- </div>
3891
- </div>
3892
- `,
3893
- host: {
3894
- class: 'modal',
3895
- role: 'dialog',
3896
- tabindex: '-1',
3897
- '[attr.aria-modal]': 'true',
3898
- '[attr.aria-labelledby]': 'config.ariaLabelledBy',
3899
- '[attr.aria-describedby]': 'config.ariaDescribedby',
3900
- },
3901
- }]
3902
- }], ctorParameters: function () { return [{ type: ModalOptions }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { onClickStarted: [{
3903
- type: HostListener,
3904
- args: ['mousedown', ['$event']]
3905
- }], onClickStop: [{
3906
- type: HostListener,
3907
- args: ['click', ['$event']]
3908
- }], onPopState: [{
3909
- type: HostListener,
3910
- args: ['window:popstate']
3911
- }], onEsc: [{
3912
- type: HostListener,
3913
- args: ['window:keydown.esc', ['$event']]
3914
- }] } });
3915
-
3916
- /**
3917
- * Modal class.
3918
- * @remarks
3919
- * This is returned from {@link ModalService.show}.
3920
- * @public
3921
- */
3922
- class Modal {
3923
- constructor() {
3924
- /**
3925
- * Hides the modal
3926
- * @param result - A result to the observers.
3927
- */
3928
- this.hide = () => void 0;
3929
- /**
3930
- * Sets new class to modal window.
3931
- */
3932
- this.setClass = () => void 0;
3933
- }
3934
- }
3935
- Modal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Modal, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3936
- Modal.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Modal });
3937
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Modal, decorators: [{
3938
- type: Injectable
3939
- }] });
3940
-
3941
- /**
3942
- * A service for using modals.
3943
- *
3944
- * @public
3945
- */
3946
- class ModalService {
3947
- constructor(clf, rendererFactory, document, modalDefaultOption) {
3948
- this.clf = clf;
3949
- this.document = document;
3950
- this.onBeforeShow = new Subject();
3951
- this.onShown = new Subject();
3952
- this.onBeforeHide = new Subject();
3953
- this.onHidden = new Subject();
3954
- this.loaders = [];
3955
- this.modalsCount = 0;
3956
- this.initialPadding = '0px';
3957
- this.backdropLoader = this.clf.createLoader();
3958
- this.defaultConfig = Object.assign(Object.assign({}, modalConfigDefaults), modalDefaultOption);
3959
- this.renderer = rendererFactory.createRenderer(null, null);
3960
- }
3961
- ngOnDestroy() {
3962
- this.loaders.forEach((loader) => { var _a; return (_a = loader.instance) === null || _a === void 0 ? void 0 : _a.hide(); });
3963
- }
3964
- /**
3965
- * Opens a new modal.
3966
- *
3967
- * @param content - `Component` or `TemplateRef` type.
3968
- * @param config - Specific {@link ModalOptions | options} for this modal. Global and specific options are merged.
3969
- * @returns An instance of {@link Modal}
3970
- */
3971
- show(content, config) {
3972
- this.modalsCount++;
3973
- const combinedConfig = Object.assign(Object.assign({}, this.defaultConfig), config);
3974
- combinedConfig.id = (config === null || config === void 0 ? void 0 : config.id) || new Date().getUTCMilliseconds();
3975
- this.createLoaders();
3976
- this.addBodyPadding();
3977
- if (this.modalsCount === 1) {
3978
- this.renderer.addClass(this.document.body, cssClassNames.modalOpen);
3979
- }
3980
- this.showBackdrop(combinedConfig);
3981
- return this.showModal(content, combinedConfig);
3982
- }
3983
- /**
3984
- * Hide an active modal.
3985
- * @param id - Id of modal to hide. If not provided all active modals are hidden.
3986
- * @param result - A result to be sent to observers.
3987
- */
3988
- hide(id, result) {
3989
- if (this.modalsCount === 1 || id == null) {
3990
- this.hideBackdrop();
3991
- this.revertScrollbar();
3992
- this.renderer.removeClass(this.document.body, cssClassNames.modalOpen);
3993
- }
3994
- this.modalsCount = this.modalsCount >= 1 && id != null ? this.modalsCount - 1 : 0;
3995
- setTimeout(() => {
3996
- this.hideModal(id, result);
3997
- this.removeLoaders(id);
3998
- },
3999
- //Bug
4000
- //Should use combined config but for the moment is not possible to pass it this parameter.
4001
- //If config is an instance variable then every newly opened modal will override the config
4002
- //resulting in opened modals to get a new configuration
4003
- this.defaultConfig.animated ? animationTime.backdrop : 0);
4004
- }
4005
- getActiveModal() {
4006
- return this.loaders[this.modalsCount - 1].instance;
4007
- }
4008
- showModal(content, combinedConfig) {
4009
- var _a;
4010
- const modalLoader = this.loaders[this.loaders.length - 1];
4011
- if (combinedConfig && combinedConfig.providers) {
4012
- combinedConfig.providers.forEach((provider) => modalLoader.provide(provider));
4013
- }
4014
- const modal = new Modal();
4015
- const modalContainerRef = modalLoader
4016
- .provide({ provide: ModalOptions, useValue: combinedConfig })
4017
- .provide({ provide: Modal, useValue: modal })
4018
- .attach(ModalContainerComponent)
4019
- .to('body');
4020
- modal.setClass = (newClass) => {
4021
- if (modalContainerRef.instance) {
4022
- modalContainerRef.instance.config.class = newClass;
4023
- }
4024
- };
4025
- modal.onBeforeHide = new Subject();
4026
- modal.onHidden = new Subject();
4027
- this.copyEvent(modalLoader.onBeforeHide, modal.onBeforeHide);
4028
- this.copyEvent(modalLoader.onHidden, modal.onHidden);
4029
- modalContainerRef.show({
4030
- content,
4031
- animationsEnabled: combinedConfig.animated,
4032
- initialState: combinedConfig.initialState,
4033
- modalService: this,
4034
- id: combinedConfig.id,
4035
- });
4036
- if (modalContainerRef.instance) {
4037
- modalContainerRef.instance.level = this.modalsCount;
4038
- modal.content = modalLoader.getInnerComponent();
4039
- modal.id = (_a = modalContainerRef.instance.config) === null || _a === void 0 ? void 0 : _a.id;
4040
- modal.hide = (res) => { var _a; return (_a = modalContainerRef.instance) === null || _a === void 0 ? void 0 : _a.hide(res); };
4041
- }
4042
- return modal;
4043
- }
4044
- hideModal(id, result) {
4045
- if (id != null) {
4046
- const indexToRemove = this.loaders.findIndex((loader) => { var _a; return ((_a = loader.instance) === null || _a === void 0 ? void 0 : _a.config.id) === id; });
4047
- const modalLoader = this.loaders[indexToRemove];
4048
- if (modalLoader) {
4049
- modalLoader.hide(id, result);
4050
- }
4051
- }
4052
- else {
4053
- this.loaders.forEach((loader) => {
4054
- if (loader.instance) {
4055
- loader.hide(loader.instance.config.id);
4056
- }
4057
- });
4058
- }
4059
- }
4060
- showBackdrop(combinedConfig) {
4061
- const isBackdropEnabled = combinedConfig.backdrop === true || combinedConfig.backdrop === 'static';
4062
- const isBackdropInDOM = this.backdropRef != null;
4063
- if (isBackdropEnabled && !isBackdropInDOM) {
4064
- this.backdropLoader
4065
- .attach(ModalBackdropComponent)
4066
- .to('body')
4067
- .show({ animationsEnabled: combinedConfig.animated, backdropLoader: this.backdropLoader });
4068
- this.backdropRef = this.backdropLoader.componentRef;
4069
- }
4070
- }
4071
- hideBackdrop() {
4072
- if (!this.backdropRef) {
4073
- return;
4074
- }
4075
- this.backdropRef.instance.hide();
4076
- this.backdropRef = void 0;
4077
- }
4078
- removeLoaders(id) {
4079
- if (id != null) {
4080
- const indexToRemove = this.loaders.findIndex((loader) => { var _a; return ((_a = loader.instance) === null || _a === void 0 ? void 0 : _a.config.id) === id; });
4081
- if (indexToRemove >= 0) {
4082
- this.loaders.splice(indexToRemove, 1);
4083
- this.loaders.forEach((loader, i) => {
4084
- if (loader.instance) {
4085
- loader.instance.level = i + 1;
4086
- }
4087
- });
4088
- }
4089
- }
4090
- else {
4091
- this.loaders.splice(0, this.loaders.length);
4092
- }
4093
- }
4094
- addBodyPadding() {
4095
- if (this.modalsCount === 1) {
4096
- const width = this.getScrollbarWidth();
4097
- if (this.isScrollBarPresent(width)) {
4098
- this.initialPadding = this.document.body.style.paddingRight;
4099
- const actualPadding = parseFloat(window.getComputedStyle(this.document.body).paddingRight);
4100
- this.document.body.style.paddingRight = `${actualPadding + width}px`;
4101
- }
4102
- }
4103
- }
4104
- revertScrollbar() {
4105
- this.document.body.style.paddingRight = this.initialPadding;
4106
- }
4107
- getScrollbarWidth() {
4108
- const measurer = this.document.createElement('div');
4109
- measurer.className = 'modal-scrollbar-measure';
4110
- const body = this.document.body;
4111
- body.appendChild(measurer);
4112
- const width = measurer.getBoundingClientRect().width - measurer.clientWidth;
4113
- body.removeChild(measurer);
4114
- return width;
4115
- }
4116
- isScrollBarPresent(scrollbarWidth) {
4117
- const rect = this.document.body.getBoundingClientRect();
4118
- const bodyToViewportGap = window.innerWidth - (rect.left + rect.right);
4119
- const uncertainty = 0.1 * scrollbarWidth;
4120
- return bodyToViewportGap >= scrollbarWidth - uncertainty;
4121
- }
4122
- createLoaders() {
4123
- const loader = this.clf.createLoader();
4124
- this.copyEvent(loader.onBeforeShow, this.onBeforeShow);
4125
- this.copyEvent(loader.onShown, this.onShown);
4126
- this.copyEvent(loader.onBeforeHide, this.onBeforeHide);
4127
- this.copyEvent(loader.onHidden, this.onHidden);
4128
- this.loaders.push(loader);
4129
- }
4130
- copyEvent(from, to) {
4131
- from.subscribe((data) => {
4132
- to.next(data);
4133
- });
4134
- }
4135
- }
4136
- ModalService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ModalService, deps: [{ token: ComponentLoaderFactory }, { token: i0.RendererFactory2 }, { token: DOCUMENT }, { token: MODAL_CONFIG_DEFAULT_OVERRIDE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
4137
- ModalService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ModalService });
4138
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ModalService, decorators: [{
4139
- type: Injectable
4140
- }], ctorParameters: function () { return [{ type: ComponentLoaderFactory }, { type: i0.RendererFactory2 }, { type: undefined, decorators: [{
4141
- type: Inject,
4142
- args: [DOCUMENT]
4143
- }] }, { type: ModalOptions, decorators: [{
4144
- type: Optional
4145
- }, {
4146
- type: Inject,
4147
- args: [MODAL_CONFIG_DEFAULT_OVERRIDE]
4148
- }] }]; } });
4149
-
4150
- class IndiceComponentsModule {
4151
- // tslint:disable-next-line:typedef
4152
- static forRoot() {
4153
- return {
4154
- ngModule: IndiceComponentsModule,
4155
- providers: [ToasterService]
4156
- };
4157
- }
4158
- }
4159
- IndiceComponentsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: IndiceComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4160
- IndiceComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: IndiceComponentsModule, declarations: [
4161
- // Directives
4162
- ClickOutsideDirective,
4163
- DynamicComponentHostDirective,
4164
- // Controls
4165
- DropDownMenuComponent,
4166
- PagerComponent,
4167
- ListViewComponent,
4168
- ListColumnComponent,
4169
- ListTileComponent,
4170
- ListDetailsSectionComponent,
4171
- ListViewEmptyStateComponent,
4172
- SkeletonLoaderComponent,
4173
- CollapsiblePanelComponent,
4174
- KpiTileComponent,
4175
- SidePaneComponent,
4176
- DatepickerComponent,
4177
- AvatarInitialsComponent,
4178
- ToggleComponent,
4179
- ComboboxComponent,
4180
- // Toaster
4181
- ToasterContainerComponent,
4182
- ToasterComponent,
4183
- // Shell Layout
4184
- ShellLayoutComponent,
4185
- ShellHeaderComponent,
4186
- ShellFooterComponent,
4187
- // View Layouts
4188
- ViewLayoutComponent,
4189
- SideViewLayoutComponent,
4190
- ModelViewLayoutComponent,
4191
- FormLayoutComponent,
4192
- // Pages (common)
4193
- AuthCallbackComponent,
4194
- AuthRenewComponent,
4195
- LoggedOutComponent,
4196
- ErrorComponent,
4197
- PageNotFoundComponent,
4198
- UnauthorizedComponent,
4199
- // Pipes
4200
- AddressPipe,
4201
- DurationFormatPipe,
4202
- NavLinksListComponent,
4203
- NotificationsIndicatorComponent,
4204
- LanguageSelectionComponent,
4205
- UserProfileMenuComponent,
4206
- ShellSidebarComponent,
4207
- // Tab Group Component
4208
- LibTabComponent,
4209
- LibTabGroupComponent,
4210
- // Stepper Component
4211
- LibStepperComponent,
4212
- LibStepComponent,
4213
- LibStepLabelDirective,
4214
- LibStepInfoDirective,
4215
- ShellSidebarHeaderComponent,
4216
- ShellSidebarLayoutComponent,
4217
- ShellStackedLayoutComponent,
4218
- AdvancedSearchComponent], imports: [CommonModule,
4219
- RouterModule,
4220
- IndiceAuthModule,
4221
- BrowserAnimationsModule,
4222
- FormsModule], exports: [AddressPipe,
4223
- AuthCallbackComponent,
4224
- AuthRenewComponent,
4225
- AvatarInitialsComponent,
4226
- ClickOutsideDirective,
4227
- CollapsiblePanelComponent,
4228
- ComboboxComponent,
4229
- DatepickerComponent,
4230
- DropDownMenuComponent,
4231
- DurationFormatPipe,
4232
- ErrorComponent,
4233
- FormLayoutComponent,
4234
- KpiTileComponent,
4235
- LibStepComponent,
4236
- LibStepInfoDirective,
4237
- LibStepLabelDirective,
4238
- LibStepperComponent,
4239
- LibTabComponent,
4240
- LibTabGroupComponent,
4241
- ListColumnComponent,
4242
- ListDetailsSectionComponent,
4243
- ListTileComponent,
4244
- ListViewComponent,
4245
- ListViewEmptyStateComponent,
4246
- LoggedOutComponent,
4247
- ModelViewLayoutComponent,
4248
- PageNotFoundComponent,
4249
- PagerComponent,
4250
- ShellFooterComponent,
4251
- ShellHeaderComponent,
4252
- ShellLayoutComponent,
4253
- SidePaneComponent,
4254
- SideViewLayoutComponent,
4255
- SkeletonLoaderComponent,
4256
- ToasterComponent,
4257
- ToasterContainerComponent,
4258
- ToggleComponent,
4259
- UnauthorizedComponent,
4260
- ViewLayoutComponent] });
4261
- IndiceComponentsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: IndiceComponentsModule, imports: [[
4262
- CommonModule,
4263
- RouterModule,
4264
- IndiceAuthModule,
4265
- BrowserAnimationsModule,
4266
- FormsModule
4267
- ]] });
4268
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: IndiceComponentsModule, decorators: [{
4269
- type: NgModule,
4270
- args: [{
4271
- declarations: [
4272
- // Directives
4273
- ClickOutsideDirective,
4274
- DynamicComponentHostDirective,
4275
- // Controls
4276
- DropDownMenuComponent,
4277
- PagerComponent,
4278
- ListViewComponent,
4279
- ListColumnComponent,
4280
- ListTileComponent,
4281
- ListDetailsSectionComponent,
4282
- ListViewEmptyStateComponent,
4283
- SkeletonLoaderComponent,
4284
- CollapsiblePanelComponent,
4285
- KpiTileComponent,
4286
- SidePaneComponent,
4287
- DatepickerComponent,
4288
- AvatarInitialsComponent,
4289
- ToggleComponent,
4290
- ComboboxComponent,
4291
- // Toaster
4292
- ToasterContainerComponent,
4293
- ToasterComponent,
4294
- // Shell Layout
4295
- ShellLayoutComponent,
4296
- ShellHeaderComponent,
4297
- ShellFooterComponent,
4298
- // View Layouts
4299
- ViewLayoutComponent,
4300
- SideViewLayoutComponent,
4301
- ModelViewLayoutComponent,
4302
- FormLayoutComponent,
4303
- // Pages (common)
4304
- AuthCallbackComponent,
4305
- AuthRenewComponent,
4306
- LoggedOutComponent,
4307
- ErrorComponent,
4308
- PageNotFoundComponent,
4309
- UnauthorizedComponent,
4310
- // Pipes
4311
- AddressPipe,
4312
- DurationFormatPipe,
4313
- NavLinksListComponent,
4314
- NotificationsIndicatorComponent,
4315
- LanguageSelectionComponent,
4316
- UserProfileMenuComponent,
4317
- ShellSidebarComponent,
4318
- // Tab Group Component
4319
- LibTabComponent,
4320
- LibTabGroupComponent,
4321
- // Stepper Component
4322
- LibStepperComponent,
4323
- LibStepComponent,
4324
- LibStepLabelDirective,
4325
- LibStepInfoDirective,
4326
- ShellSidebarHeaderComponent,
4327
- ShellSidebarLayoutComponent,
4328
- ShellStackedLayoutComponent,
4329
- AdvancedSearchComponent
4330
- ],
4331
- imports: [
4332
- CommonModule,
4333
- RouterModule,
4334
- IndiceAuthModule,
4335
- BrowserAnimationsModule,
4336
- FormsModule
4337
- ],
4338
- exports: [
4339
- AddressPipe,
4340
- AuthCallbackComponent,
4341
- AuthRenewComponent,
4342
- AvatarInitialsComponent,
4343
- ClickOutsideDirective,
4344
- CollapsiblePanelComponent,
4345
- ComboboxComponent,
4346
- DatepickerComponent,
4347
- DropDownMenuComponent,
4348
- DurationFormatPipe,
4349
- ErrorComponent,
4350
- FormLayoutComponent,
4351
- KpiTileComponent,
4352
- LibStepComponent,
4353
- LibStepInfoDirective,
4354
- LibStepLabelDirective,
4355
- LibStepperComponent,
4356
- LibTabComponent,
4357
- LibTabGroupComponent,
4358
- ListColumnComponent,
4359
- ListDetailsSectionComponent,
4360
- ListTileComponent,
4361
- ListViewComponent,
4362
- ListViewEmptyStateComponent,
4363
- LoggedOutComponent,
4364
- ModelViewLayoutComponent,
4365
- PageNotFoundComponent,
4366
- PagerComponent,
4367
- ShellFooterComponent,
4368
- ShellHeaderComponent,
4369
- ShellLayoutComponent,
4370
- SidePaneComponent,
4371
- SideViewLayoutComponent,
4372
- SkeletonLoaderComponent,
4373
- ToasterComponent,
4374
- ToasterContainerComponent,
4375
- ToggleComponent,
4376
- UnauthorizedComponent,
4377
- ViewLayoutComponent
4378
- ]
4379
- }]
4380
- }] });
4381
-
4382
- // Public API Surface of @indice/ng-components
4383
-
4384
- /**
4385
- * Generated bundle index. Do not edit.
4386
- */
4387
-
4388
- export { APP_LANGUAGES, APP_LINKS, APP_NOTIFICATIONS, AddressPipe, AuthCallbackComponent, AuthRenewComponent, AvatarInitialsComponent, BaseListComponent, ClickOutsideDirective, CollapsiblePanelComponent, ComboboxComponent, ComponentLoaderFactory, DatepickerComponent, DefaultShellConfig, DropDownMenuComponent, DurationFormatPipe, ErrorComponent, ExternalNavLink, FormLayoutComponent, FragmentNavLink, HeaderMetaItem, Icons, IndiceComponentsModule, KpiTileComponent, LIBSTEPPER_ACCESSOR, LIBTABGROUP_ACCESSOR, LibStepComponent, LibStepInfoDirective, LibStepLabelDirective, LibStepperComponent, LibTabComponent, LibTabGroupComponent, ListColumnComponent, ListDetailsSectionComponent, ListTileComponent, ListViewComponent, ListViewEmptyStateComponent, ListViewType, LoggedOutComponent, MODAL_CONFIG_DEFAULT_OVERRIDE, MenuOption, Modal, ModalOptions, ModalService, ModelViewLayoutComponent, NULL_TOAST, NavLink, NavLinksListComponent, NotificationNavLink, PageNotFoundComponent, PagerComponent, PagerPosition, RouterViewAction, SCREEN_SIZE, SHELL_CONFIG, ShellFooterComponent, ShellHeaderComponent, ShellLayoutComponent, ShellLayoutType, ShellSidebarComponent, ShellSidebarHeaderComponent, SidePaneComponent, SidePaneOverlayType, SidePaneSize, SideViewLayoutComponent, SkeletonLoaderComponent, StepState, StepperType, SwitchViewAction, ToastType, ToasterComponent, ToasterContainerComponent, ToasterService, ToggleComponent, UnauthorizedComponent, ViewAction, ViewLayoutComponent };
4389
- //# sourceMappingURL=indice-ng-components.js.map