@indice/ng-components 0.2.147-beta.0 → 0.2.147

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/README.md +4 -4
  2. package/_styles.css +3571 -3571
  3. package/{esm2015/indice-ng-components.js → esm2020/indice-ng-components.mjs} +0 -0
  4. package/{esm2015/lib/controls/avatar-initials/avatar-initials.component.js → esm2020/lib/controls/avatar-initials/avatar-initials.component.mjs} +5 -8
  5. package/esm2020/lib/controls/collapsible-panel/collapsible-panel.component.mjs +20 -0
  6. package/esm2020/lib/controls/combobox/combobox.component.mjs +96 -0
  7. package/esm2020/lib/controls/date-picker/date-picker.component.mjs +260 -0
  8. package/esm2020/lib/controls/drop-down-menu/drop-down-menu.component.mjs +68 -0
  9. package/esm2020/lib/controls/kpi-tile/kpi-tile.component.mjs +36 -0
  10. package/esm2020/lib/controls/language-selection/language-selection.component.mjs +31 -0
  11. package/{esm2015/lib/controls/list-view/list-column.component.js → esm2020/lib/controls/list-view/list-column.component.mjs} +4 -4
  12. package/{esm2015/lib/controls/list-view/list-details-section.component.js → esm2020/lib/controls/list-view/list-details-section.component.mjs} +4 -4
  13. package/{esm2015/lib/controls/list-view/list-tile.component.js → esm2020/lib/controls/list-view/list-tile.component.mjs} +4 -4
  14. package/esm2020/lib/controls/list-view/list-view-empty-state.component.mjs +29 -0
  15. package/esm2020/lib/controls/list-view/list-view.component.mjs +183 -0
  16. package/esm2020/lib/controls/nav-links-list/nav-links-list.component.mjs +42 -0
  17. package/esm2020/lib/controls/notifications-indicator/notifications-indicator.component.mjs +73 -0
  18. package/esm2020/lib/controls/pager/pager.component.mjs +130 -0
  19. package/esm2020/lib/controls/side-pane/side-pane.component.mjs +72 -0
  20. package/esm2020/lib/controls/skeleton-loader/skeleton-loader.component.mjs +25 -0
  21. package/esm2020/lib/controls/tabs/lib-tab-group.component.mjs +59 -0
  22. package/esm2020/lib/controls/tabs/lib-tab.component.mjs +57 -0
  23. package/esm2020/lib/controls/toaster/toaster-container.component.mjs +28 -0
  24. package/esm2020/lib/controls/toaster/toaster.component.mjs +31 -0
  25. package/esm2020/lib/controls/toggle/toggle.component.mjs +64 -0
  26. package/esm2020/lib/controls/user-profile-menu/user-profile-menu.component.mjs +71 -0
  27. package/{esm2015/lib/directives/click-outside.directive.js → esm2020/lib/directives/click-outside.directive.mjs} +4 -4
  28. package/{esm2015/lib/directives/dynamic-component-host.directive.js → esm2020/lib/directives/dynamic-component-host.directive.mjs} +4 -4
  29. package/esm2020/lib/helpers/base-list.component.mjs +181 -0
  30. package/{esm2015/lib/icons.js → esm2020/lib/icons.mjs} +1 -1
  31. package/esm2020/lib/layouts/shell/shell-footer/shell-footer.component.mjs +19 -0
  32. package/esm2020/lib/layouts/shell/shell-header/shell-header.component.mjs +131 -0
  33. package/esm2020/lib/layouts/shell/shell-layout/shell-layout.component.mjs +103 -0
  34. package/esm2020/lib/layouts/shell/shell-sidebar/shell-sidebar.component.mjs +47 -0
  35. package/esm2020/lib/layouts/views/form-layout/form-layout.component.mjs +80 -0
  36. package/esm2020/lib/layouts/views/model-view-layout/model-view-layout.component.mjs +49 -0
  37. package/esm2020/lib/layouts/views/side-view-layout/side-view-layout.component.mjs +98 -0
  38. package/esm2020/lib/layouts/views/view-layout/view-layout.component.mjs +104 -0
  39. package/{esm2015/lib/ng-components.module.js → esm2020/lib/ng-components.module.mjs} +11 -13
  40. package/esm2020/lib/pages/auth/auth-callback/auth-callback.component.mjs +30 -0
  41. package/{esm2015/lib/pages/auth/auth-renew/auth-renew.component.js → esm2020/lib/pages/auth/auth-renew/auth-renew.component.mjs} +4 -4
  42. package/esm2020/lib/pages/auth/logged-out/logged-out.component.mjs +28 -0
  43. package/esm2020/lib/pages/http-status/error/error.component.mjs +17 -0
  44. package/esm2020/lib/pages/http-status/page-not-found/page-not-found.component.mjs +15 -0
  45. package/esm2020/lib/pages/http-status/unauthorized/unauthorized.component.mjs +14 -0
  46. package/{esm2015/lib/pipes/address.pipe.js → esm2020/lib/pipes/address.pipe.mjs} +4 -4
  47. package/{esm2015/lib/pipes/duration-format.pipe.js → esm2020/lib/pipes/duration-format.pipe.mjs} +4 -4
  48. package/esm2020/lib/services/component-loader/component-loader-options.class.mjs +8 -0
  49. package/esm2020/lib/services/component-loader/component-loader.class.mjs +188 -0
  50. package/{esm2015/lib/services/component-loader/component-loader.factory.js → esm2020/lib/services/component-loader/component-loader.factory.mjs} +4 -4
  51. package/{esm2015/lib/services/component-loader/content-ref.class.js → esm2020/lib/services/component-loader/content-ref.class.mjs} +1 -1
  52. package/esm2020/lib/services/modal-service/modal-backdrop-component.mjs +44 -0
  53. package/esm2020/lib/services/modal-service/modal-container-component.mjs +126 -0
  54. package/esm2020/lib/services/modal-service/modal-options.class.mjs +35 -0
  55. package/esm2020/lib/services/modal-service/modal-service.mjs +219 -0
  56. package/{esm2015/lib/services/modal-service/modal-styles.class.js → esm2020/lib/services/modal-service/modal-styles.class.mjs} +1 -1
  57. package/esm2020/lib/services/modal-service/modal.class.mjs +27 -0
  58. package/{esm2015/lib/services/toaster.service.js → esm2020/lib/services/toaster.service.mjs} +4 -4
  59. package/esm2020/lib/tokens.mjs +7 -0
  60. package/{esm2015/lib/types.js → esm2020/lib/types.mjs} +1 -1
  61. package/{esm2015/public-api.js → esm2020/public-api.mjs} +1 -1
  62. package/fesm2015/indice-ng-components.mjs +3629 -0
  63. package/fesm2015/indice-ng-components.mjs.map +1 -0
  64. package/fesm2020/indice-ng-components.mjs +3572 -0
  65. package/fesm2020/indice-ng-components.mjs.map +1 -0
  66. package/{indice-ng-components.d.ts → index.d.ts} +0 -0
  67. package/lib/controls/avatar-initials/avatar-initials.component.d.ts +1 -1
  68. package/lib/controls/collapsible-panel/collapsible-panel.component.d.ts +1 -1
  69. package/lib/controls/combobox/combobox.component.d.ts +1 -1
  70. package/lib/controls/date-picker/date-picker.component.d.ts +1 -1
  71. package/lib/controls/drop-down-menu/drop-down-menu.component.d.ts +1 -1
  72. package/lib/controls/kpi-tile/kpi-tile.component.d.ts +1 -1
  73. package/lib/controls/language-selection/language-selection.component.d.ts +1 -1
  74. package/lib/controls/list-view/list-column.component.d.ts +1 -1
  75. package/lib/controls/list-view/list-details-section.component.d.ts +1 -1
  76. package/lib/controls/list-view/list-tile.component.d.ts +1 -1
  77. package/lib/controls/list-view/list-view-empty-state.component.d.ts +1 -1
  78. package/lib/controls/list-view/list-view.component.d.ts +1 -1
  79. package/lib/controls/nav-links-list/nav-links-list.component.d.ts +1 -1
  80. package/lib/controls/notifications-indicator/notifications-indicator.component.d.ts +1 -1
  81. package/lib/controls/pager/pager.component.d.ts +1 -1
  82. package/lib/controls/side-pane/side-pane.component.d.ts +1 -1
  83. package/lib/controls/skeleton-loader/skeleton-loader.component.d.ts +1 -1
  84. package/lib/controls/tabs/lib-tab-group.component.d.ts +1 -1
  85. package/lib/controls/tabs/lib-tab.component.d.ts +4 -5
  86. package/lib/controls/toaster/toaster-container.component.d.ts +1 -1
  87. package/lib/controls/toaster/toaster.component.d.ts +1 -1
  88. package/lib/controls/toggle/toggle.component.d.ts +1 -1
  89. package/lib/controls/user-profile-menu/user-profile-menu.component.d.ts +1 -1
  90. package/lib/directives/click-outside.directive.d.ts +1 -1
  91. package/lib/directives/dynamic-component-host.directive.d.ts +1 -1
  92. package/lib/helpers/base-list.component.d.ts +1 -1
  93. package/lib/layouts/shell/shell-footer/shell-footer.component.d.ts +1 -1
  94. package/lib/layouts/shell/shell-header/shell-header.component.d.ts +1 -1
  95. package/lib/layouts/shell/shell-layout/shell-layout.component.d.ts +1 -1
  96. package/lib/layouts/shell/shell-sidebar/shell-sidebar.component.d.ts +1 -1
  97. package/lib/layouts/views/form-layout/form-layout.component.d.ts +1 -1
  98. package/lib/layouts/views/model-view-layout/model-view-layout.component.d.ts +1 -1
  99. package/lib/layouts/views/side-view-layout/side-view-layout.component.d.ts +1 -1
  100. package/lib/layouts/views/view-layout/view-layout.component.d.ts +1 -1
  101. package/lib/ng-components.module.d.ts +3 -3
  102. package/lib/pages/auth/auth-callback/auth-callback.component.d.ts +1 -1
  103. package/lib/pages/auth/auth-renew/auth-renew.component.d.ts +1 -1
  104. package/lib/pages/auth/logged-out/logged-out.component.d.ts +1 -1
  105. package/lib/pages/http-status/error/error.component.d.ts +1 -1
  106. package/lib/pages/http-status/page-not-found/page-not-found.component.d.ts +1 -1
  107. package/lib/pages/http-status/unauthorized/unauthorized.component.d.ts +1 -1
  108. package/lib/pipes/address.pipe.d.ts +1 -1
  109. package/lib/pipes/duration-format.pipe.d.ts +1 -1
  110. package/lib/services/modal-service/modal-backdrop-component.d.ts +1 -1
  111. package/lib/services/modal-service/modal-container-component.d.ts +1 -1
  112. package/lib/tokens.d.ts +2 -0
  113. package/modal.css +157 -157
  114. package/package.json +25 -12
  115. package/bundles/indice-ng-components.umd.js +0 -4289
  116. package/bundles/indice-ng-components.umd.js.map +0 -1
  117. package/esm2015/lib/controls/collapsible-panel/collapsible-panel.component.js +0 -23
  118. package/esm2015/lib/controls/combobox/combobox.component.js +0 -99
  119. package/esm2015/lib/controls/date-picker/date-picker.component.js +0 -269
  120. package/esm2015/lib/controls/drop-down-menu/drop-down-menu.component.js +0 -72
  121. package/esm2015/lib/controls/kpi-tile/kpi-tile.component.js +0 -39
  122. package/esm2015/lib/controls/language-selection/language-selection.component.js +0 -35
  123. package/esm2015/lib/controls/list-view/list-view-empty-state.component.js +0 -32
  124. package/esm2015/lib/controls/list-view/list-view.component.js +0 -186
  125. package/esm2015/lib/controls/nav-links-list/nav-links-list.component.js +0 -45
  126. package/esm2015/lib/controls/notifications-indicator/notifications-indicator.component.js +0 -76
  127. package/esm2015/lib/controls/pager/pager.component.js +0 -133
  128. package/esm2015/lib/controls/side-pane/side-pane.component.js +0 -76
  129. package/esm2015/lib/controls/skeleton-loader/skeleton-loader.component.js +0 -29
  130. package/esm2015/lib/controls/tabs/lib-tab-group.component.js +0 -60
  131. package/esm2015/lib/controls/tabs/lib-tab.component.js +0 -57
  132. package/esm2015/lib/controls/toaster/toaster-container.component.js +0 -31
  133. package/esm2015/lib/controls/toaster/toaster.component.js +0 -34
  134. package/esm2015/lib/controls/toggle/toggle.component.js +0 -68
  135. package/esm2015/lib/controls/user-profile-menu/user-profile-menu.component.js +0 -75
  136. package/esm2015/lib/helpers/base-list.component.js +0 -182
  137. package/esm2015/lib/layouts/shell/shell-footer/shell-footer.component.js +0 -22
  138. package/esm2015/lib/layouts/shell/shell-header/shell-header.component.js +0 -136
  139. package/esm2015/lib/layouts/shell/shell-layout/shell-layout.component.js +0 -108
  140. package/esm2015/lib/layouts/shell/shell-sidebar/shell-sidebar.component.js +0 -50
  141. package/esm2015/lib/layouts/views/form-layout/form-layout.component.js +0 -85
  142. package/esm2015/lib/layouts/views/model-view-layout/model-view-layout.component.js +0 -53
  143. package/esm2015/lib/layouts/views/side-view-layout/side-view-layout.component.js +0 -101
  144. package/esm2015/lib/layouts/views/view-layout/view-layout.component.js +0 -110
  145. package/esm2015/lib/pages/auth/auth-callback/auth-callback.component.js +0 -34
  146. package/esm2015/lib/pages/auth/logged-out/logged-out.component.js +0 -32
  147. package/esm2015/lib/pages/http-status/error/error.component.js +0 -20
  148. package/esm2015/lib/pages/http-status/page-not-found/page-not-found.component.js +0 -18
  149. package/esm2015/lib/pages/http-status/unauthorized/unauthorized.component.js +0 -17
  150. package/esm2015/lib/services/component-loader/component-loader-options.class.js +0 -8
  151. package/esm2015/lib/services/component-loader/component-loader.class.js +0 -192
  152. package/esm2015/lib/services/modal-service/modal-backdrop-component.js +0 -44
  153. package/esm2015/lib/services/modal-service/modal-container-component.js +0 -128
  154. package/esm2015/lib/services/modal-service/modal-options.class.js +0 -35
  155. package/esm2015/lib/services/modal-service/modal-service.js +0 -220
  156. package/esm2015/lib/services/modal-service/modal.class.js +0 -27
  157. package/esm2015/lib/tokens.js +0 -6
  158. package/fesm2015/indice-ng-components.js +0 -3699
  159. package/fesm2015/indice-ng-components.js.map +0 -1
@@ -1,23 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- export class CollapsiblePanelComponent {
5
- constructor() {
6
- this.title = null;
7
- this.visible = false;
8
- }
9
- ngOnInit() {
10
- }
11
- }
12
- CollapsiblePanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CollapsiblePanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13
- 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"] }] });
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CollapsiblePanelComponent, decorators: [{
15
- type: Component,
16
- args: [{
17
- selector: 'lib-collapsible-panel',
18
- templateUrl: './collapsible-panel.component.html'
19
- }]
20
- }], ctorParameters: function () { return []; }, propDecorators: { title: [{
21
- type: Input
22
- }] } });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2libGUtcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2NvbGxhcHNpYmxlLXBhbmVsL2NvbGxhcHNpYmxlLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9jb2xsYXBzaWJsZS1wYW5lbC9jb2xsYXBzaWJsZS1wYW5lbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7O0FBTXpELE1BQU0sT0FBTyx5QkFBeUI7SUFJcEM7UUFIUyxVQUFLLEdBQWtCLElBQUksQ0FBQztRQUM5QixZQUFPLEdBQUcsS0FBSyxDQUFDO0lBRVAsQ0FBQztJQUVqQixRQUFRO0lBQ1IsQ0FBQzs7dUhBUFUseUJBQXlCOzJHQUF6Qix5QkFBeUIseUZDTnRDLDhtQkFlQTs0RkRUYSx5QkFBeUI7a0JBSnJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsV0FBVyxFQUFFLG9DQUFvQztpQkFDbEQ7MEVBRVUsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1jb2xsYXBzaWJsZS1wYW5lbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbGxhcHNpYmxlLXBhbmVsLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29sbGFwc2libGVQYW5lbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIHB1YmxpYyB2aXNpYmxlID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNvbGxhcHNpYmxlLXBhbmVsLWNvbnRhaW5lclwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjb2xsYXBzaWJsZS1wYW5lbC1jb250YWluZXItc2hhZG93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sbGFwc2libGUtcGFuZWwtY29udGFpbmVyLWlubmVyXCI+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY29sbGFwc2libGUtcGFuZWwtYnV0dG9uXCIgKGNsaWNrKT1cInZpc2libGUgPSAhdmlzaWJsZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xsYXBzaWJsZS1wYW5lbC1idXR0b24tY29udGVudC1jb250YWluZXJcIj5cclxuICAgICAgICAgIDxzcGFuPnt7IHRpdGxlIH19IDwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvLXBsdXNcIj48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sbGFwc2libGUtcGFuZWwtY29udGVudC1jb250YWluZXJcIiAqbmdJZj1cInZpc2libGVcIj5cclxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -1,99 +0,0 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { Subject } from 'rxjs';
3
- import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../../directives/click-outside.directive";
6
- import * as i2 from "@angular/common";
7
- export class ComboboxComponent {
8
- constructor() {
9
- this._debouncer = new Subject();
10
- this._items = [];
11
- this._defaultItemsFilter = (item) => {
12
- const selectedItem = this.selectedItems.find(x => x == item);
13
- return selectedItem == null || selectedItem == undefined;
14
- };
15
- this.id = 'combobox';
16
- this.itemTemplate = null;
17
- this.selectedItemsFilter = () => true;
18
- this.selectedItemTemplate = null;
19
- this.busy = false;
20
- this.debounceMs = 1000;
21
- this.onSearch = new EventEmitter();
22
- this.onItemSelected = new EventEmitter();
23
- this.showOptions = false;
24
- this.selectedItems = [];
25
- }
26
- set items(items) {
27
- if (!this.itemTemplate) {
28
- this._items = items.filter(this._defaultItemsFilter);
29
- }
30
- else {
31
- this._items = items.filter(this.selectedItemsFilter);
32
- }
33
- }
34
- get items() {
35
- if (!this.itemTemplate) {
36
- return this._items.filter(this._defaultItemsFilter);
37
- }
38
- else {
39
- return this._items.filter(this.selectedItemsFilter);
40
- }
41
- }
42
- ngOnInit() {
43
- this.emitSearchEvent();
44
- this._debouncer
45
- .pipe(debounceTime(this.debounceMs), distinctUntilChanged())
46
- .subscribe((value) => this.emitSearchEvent(value));
47
- }
48
- onInputClick() {
49
- this.showOptions = true;
50
- }
51
- onInputClickOutside() {
52
- this.showOptions = false;
53
- }
54
- onInputKeyUp(event) {
55
- this._debouncer.next(event.currentTarget.value);
56
- }
57
- onListItemSelected(item) {
58
- this.onItemSelected.emit(item);
59
- this.selectedItems.push(item);
60
- }
61
- removeSelectedItem(item) {
62
- const index = this.selectedItems.indexOf(item);
63
- if (index > -1) {
64
- this.selectedItems.splice(index, 1);
65
- }
66
- }
67
- emitSearchEvent(searchTerm = undefined) {
68
- this.onSearch.emit(searchTerm);
69
- }
70
- }
71
- ComboboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ComboboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
72
- 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: i1.ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
73
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ComboboxComponent, decorators: [{
74
- type: Component,
75
- args: [{
76
- selector: 'lib-combobox',
77
- templateUrl: './combobox.component.html'
78
- }]
79
- }], ctorParameters: function () { return []; }, propDecorators: { id: [{
80
- type: Input
81
- }], items: [{
82
- type: Input,
83
- args: ['items']
84
- }], itemTemplate: [{
85
- type: Input
86
- }], selectedItemsFilter: [{
87
- type: Input
88
- }], selectedItemTemplate: [{
89
- type: Input
90
- }], busy: [{
91
- type: Input
92
- }], debounceMs: [{
93
- type: Input
94
- }], onSearch: [{
95
- type: Output
96
- }], onItemSelected: [{
97
- type: Output
98
- }] } });
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2NvbWJvYm94L2NvbWJvYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9jb21ib2JveC9jb21ib2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBRTVGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBT3BFLE1BQU0sT0FBTyxpQkFBaUI7SUFTMUI7UUFSUSxlQUFVLEdBQW9CLElBQUksT0FBTyxFQUFVLENBQUM7UUFDcEQsV0FBTSxHQUFVLEVBQUUsQ0FBQztRQUVuQix3QkFBbUIsR0FBRyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ3hDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO1lBQzdELE9BQU8sWUFBWSxJQUFJLElBQUksSUFBSSxZQUFZLElBQUksU0FBUyxDQUFDO1FBQzdELENBQUMsQ0FBQztRQUljLE9BQUUsR0FBVyxVQUFVLENBQUM7UUFrQnhCLGlCQUFZLEdBQW9DLElBQUksQ0FBQztRQUNyRCx3QkFBbUIsR0FBa0MsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO1FBQ2hFLHlCQUFvQixHQUFvQyxJQUFJLENBQUM7UUFDN0QsU0FBSSxHQUFZLEtBQUssQ0FBQztRQUN0QixlQUFVLEdBQVcsSUFBSSxDQUFDO1FBQ3pCLGFBQVEsR0FBcUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNoRSxtQkFBYyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pFLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLGtCQUFhLEdBQVUsRUFBRSxDQUFDO0lBNUJqQixDQUFDO0lBSWpCLElBQTJCLEtBQUssQ0FBQyxLQUFZO1FBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztTQUN4RDthQUFNO1lBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1NBQ3hEO0lBQ0wsQ0FBQztJQUVELElBQVcsS0FBSztRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDdkQ7YUFBTTtZQUNILE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDdkQ7SUFDTCxDQUFDO0lBWU0sUUFBUTtRQUNYLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVTthQUNWLElBQUksQ0FDRCxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUM3QixvQkFBb0IsRUFBRSxDQUN6QjthQUNBLFNBQVMsQ0FBQyxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFTSxZQUFZO1FBQ2YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVNLG1CQUFtQjtRQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUM3QixDQUFDO0lBRU0sWUFBWSxDQUFDLEtBQVU7UUFDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU0sa0JBQWtCLENBQUMsSUFBUztRQUMvQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU0sa0JBQWtCLENBQUMsSUFBUztRQUMvQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRTtZQUNaLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN2QztJQUNMLENBQUM7SUFFTyxlQUFlLENBQUMsYUFBaUMsU0FBUztRQUM5RCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuQyxDQUFDOzsrR0EzRVEsaUJBQWlCO21HQUFqQixpQkFBaUIsK1RDVjlCLGtnSUFrRGM7NEZEeENELGlCQUFpQjtrQkFKN0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsY0FBYztvQkFDeEIsV0FBVyxFQUFFLDJCQUEyQjtpQkFDM0M7MEVBWW1CLEVBQUU7c0JBQWpCLEtBQUs7Z0JBRXFCLEtBQUs7c0JBQS9CLEtBQUs7dUJBQUMsT0FBTztnQkFnQkUsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxtQkFBbUI7c0JBQWxDLEtBQUs7Z0JBQ1Usb0JBQW9CO3NCQUFuQyxLQUFLO2dCQUNVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVyxRQUFRO3NCQUF4QixNQUFNO2dCQUNVLGNBQWM7c0JBQTlCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdsaWItY29tYm9ib3gnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbWJvYm94LmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29tYm9ib3hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgcHJpdmF0ZSBfZGVib3VuY2VyOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XHJcbiAgICBwcml2YXRlIF9pdGVtczogYW55W10gPSBbXTtcclxuXHJcbiAgICBwcml2YXRlIF9kZWZhdWx0SXRlbXNGaWx0ZXIgPSAoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbmQoeCA9PiB4ID09IGl0ZW0pO1xyXG4gICAgICAgIHJldHVybiBzZWxlY3RlZEl0ZW0gPT0gbnVsbCB8fCBzZWxlY3RlZEl0ZW0gPT0gdW5kZWZpbmVkO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBpZDogc3RyaW5nID0gJ2NvbWJvYm94JztcclxuXHJcbiAgICBASW5wdXQoJ2l0ZW1zJykgcHVibGljIHNldCBpdGVtcyhpdGVtczogYW55W10pIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXRlbVRlbXBsYXRlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1zID0gaXRlbXMuZmlsdGVyKHRoaXMuX2RlZmF1bHRJdGVtc0ZpbHRlcik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5faXRlbXMgPSBpdGVtcy5maWx0ZXIodGhpcy5zZWxlY3RlZEl0ZW1zRmlsdGVyKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBpdGVtcygpOiBhbnlbXSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLml0ZW1UZW1wbGF0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faXRlbXMuZmlsdGVyKHRoaXMuX2RlZmF1bHRJdGVtc0ZpbHRlcik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zLmZpbHRlcih0aGlzLnNlbGVjdGVkSXRlbXNGaWx0ZXIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD4gfCBudWxsID0gbnVsbDtcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3RlZEl0ZW1zRmlsdGVyOiAoaXRlbTogYW55KSA9PiBib29sZWFuIHwgbnVsbCA9ICgpID0+IHRydWU7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0ZWRJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PiB8IG51bGwgPSBudWxsO1xyXG4gICAgQElucHV0KCkgcHVibGljIGJ1c3k6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBkZWJvdW5jZU1zOiBudW1iZXIgPSAxMDAwO1xyXG4gICAgQE91dHB1dCgpIHB1YmxpYyBvblNlYXJjaDogRXZlbnRFbWl0dGVyPHN0cmluZyB8IHVuZGVmaW5lZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgcHVibGljIG9uSXRlbVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIHB1YmxpYyBzaG93T3B0aW9uczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIHNlbGVjdGVkSXRlbXM6IGFueVtdID0gW107XHJcblxyXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZW1pdFNlYXJjaEV2ZW50KCk7XHJcbiAgICAgICAgdGhpcy5fZGVib3VuY2VyXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VNcyksXHJcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgodmFsdWU6IHN0cmluZykgPT4gdGhpcy5lbWl0U2VhcmNoRXZlbnQodmFsdWUpKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25JbnB1dENsaWNrKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2hvd09wdGlvbnMgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbklucHV0Q2xpY2tPdXRzaWRlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2hvd09wdGlvbnMgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25JbnB1dEtleVVwKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9kZWJvdW5jZXIubmV4dChldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25MaXN0SXRlbVNlbGVjdGVkKGl0ZW06IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub25JdGVtU2VsZWN0ZWQuZW1pdChpdGVtKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVtb3ZlU2VsZWN0ZWRJdGVtKGl0ZW06IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmluZGV4T2YoaXRlbSk7XHJcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZW1pdFNlYXJjaEV2ZW50KHNlYXJjaFRlcm06IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub25TZWFyY2guZW1pdChzZWFyY2hUZXJtKTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicmVsYXRpdmUgbXQtMVwiPlxyXG4gICAgPGZvcm0gYXV0b2NvbXBsZXRlPVwib2ZmXCIgW2lkXT1cImlkICsgJy1mb3JtJ1wiPlxyXG4gICAgICAgIDxpbnB1dCBbaWRdPVwiaWQgKyAnLWlucHV0J1wiIHR5cGU9XCJ0ZXh0XCIgKGNsaWNrKT1cIm9uSW5wdXRDbGljaygpXCIgKGNsaWNrT3V0c2lkZSk9XCJvbklucHV0Q2xpY2tPdXRzaWRlKClcIiAoa2V5dXApPVwib25JbnB1dEtleVVwKCRldmVudClcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInctZnVsbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItZ3JheS0zMDAgYmctd2hpdGUgcHktMiBwbC0zIHByLTEyIHNoYWRvdy1zbSBmb2N1czpib3JkZXItaW5kaWdvLTUwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0xIGZvY3VzOnJpbmctaW5kaWdvLTUwMCBzbTp0ZXh0LXNtXCIgcm9sZT1cImNvbWJvYm94XCIgYXJpYS1jb250cm9scz1cIm9wdGlvbnNcIlxyXG4gICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBsaXN0PVwiYXV0b2NvbXBsZXRlXCI+XHJcbiAgICA8L2Zvcm0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgaW5zZXQteS0wIHJpZ2h0LTAgZmxleCBpdGVtcy1jZW50ZXIgcm91bmRlZC1yLW1kIHB4LTIgZm9jdXM6b3V0bGluZS1ub25lXCI+XHJcbiAgICAgICAgPHN2ZyAqbmdJZj1cIiFidXN5XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGNsYXNzPVwiaC02IHctNiB0ZXh0LWdyYXktNDAwXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiPlxyXG4gICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBkPVwiTTIxIDIxbC02LTZtMi01YTcgNyAwIDExLTE0IDAgNyA3IDAgMDExNCAwelwiIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPHN2ZyAqbmdJZj1cImJ1c3lcIiBjbGFzcz1cImFuaW1hdGUtc3BpbiBoLTYgdy02IHRleHQtZ3JheS00MDBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XHJcbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9XCJvcGFjaXR5LTI1XCIgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCI0XCI+PC9jaXJjbGU+XHJcbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPVwib3BhY2l0eS03NVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTQgMTJhOCA4IDAgMDE4LThWMEM1LjM3MyAwIDAgNS4zNzMgMCAxMmg0em0yIDUuMjkxQTcuOTYyIDcuOTYyIDAgMDE0IDEySDBjMCAzLjA0MiAxLjEzNSA1LjgyNCAzIDcuOTM4bDMtMi42NDd6XCI+PC9wYXRoPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8dWwgW2lkXT1cImlkICsgJy1vcHRpb25zJ1wiICpuZ0lmPVwic2hvd09wdGlvbnNcIiBjbGFzcz1cImFic29sdXRlIHotMTAgbXQtMSBtYXgtaC02MCB3LWZ1bGwgb3ZlcmZsb3ctYXV0byByb3VuZGVkLW1kIGJnLXdoaXRlIHB5LTEgdGV4dC1iYXNlIHNoYWRvdy1sZyByaW5nLTEgcmluZy1ibGFjayByaW5nLW9wYWNpdHktNSBmb2N1czpvdXRsaW5lLW5vbmUgc206dGV4dC1zbVwiIHJvbGU9XCJsaXN0Ym94XCI+XHJcbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zOyBsZXQgaSA9IGluZGV4O1wiIFtpZF09XCInb3B0aW9uLScrIGlcIiAoY2xpY2spPVwib25MaXN0SXRlbVNlbGVjdGVkKGl0ZW0pXCIgcm9sZT1cIm9wdGlvblwiIHRhYmluZGV4PVwiLTFcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtVGVtcGxhdGUgfHwgZGVmYXVsdEl0ZW1UZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9saT5cclxuICAgIDwvdWw+XHJcbjwvZGl2PlxyXG48dWwgKm5nSWY9XCJzZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDBcIiByb2xlPVwibGlzdFwiIGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMVwiPlxyXG4gICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkSXRlbXM7IGxldCBpID0gaW5kZXg7XCIgY2xhc3M9XCJtdC0zXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWxlY3RlZEl0ZW1UZW1wbGF0ZSB8fCBkZWZhdWx0U2VsZWN0ZWRJdGVtVGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9saT5cclxuPC91bD5cclxuPG5nLXRlbXBsYXRlICNkZWZhdWx0SXRlbVRlbXBsYXRlIGxldC1pdGVtPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJob3ZlcjpiZy1ncmF5LTEwMCByZWxhdGl2ZSBjdXJzb3ItcG9pbnRlciBzZWxlY3Qtbm9uZSBweS0yIHBsLTMgcHItMyBibG9jayB0cnVuY2F0ZVwiPnt7IGl0ZW0gfX08L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdFNlbGVjdGVkSXRlbVRlbXBsYXRlIGxldC1pdGVtPlxyXG4gICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTFcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWdyYXktMzAwIGJnLXdoaXRlIHB4LTYgcHktNSBzaGFkb3ctc20gZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0zIGhvdmVyOmJvcmRlci1ncmF5LTQwMFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC0xIG1pbi13LTBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb2N1czpvdXRsaW5lLW5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFic29sdXRlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwXCI+e3sgaXRlbSB9fTwvcD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTQgZmxleC1zaHJpbmstMCBmbGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVtb3ZlU2VsZWN0ZWRJdGVtKGl0ZW0pXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBiZy13aGl0ZSByb3VuZGVkLW1kIGlubGluZS1mbGV4IHRleHQtZ3JheS00MDAgaG92ZXI6dGV4dC1ncmF5LTUwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkNsb3NlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLTUgdy01XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00LjI5MyA0LjI5M2ExIDEgMCAwMTEuNDE0IDBMMTAgOC41ODZsNC4yOTMtNC4yOTNhMSAxIDAgMTExLjQxNCAxLjQxNEwxMS40MTQgMTBsNC4yOTMgNC4yOTNhMSAxIDAgMDEtMS40MTQgMS40MTRMMTAgMTEuNDE0bC00LjI5MyA0LjI5M2ExIDEgMCAwMS0xLjQxNC0xLjQxNEw4LjU4NiAxMCA0LjI5MyA1LjcwN2ExIDEgMCAwMTAtMS40MTR6XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+Il19
@@ -1,269 +0,0 @@
1
- import { Component, EventEmitter, forwardRef, Input, Output, ViewChild } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../../directives/click-outside.directive";
5
- import * as i2 from "@angular/common";
6
- // freaksly simple date picker : https://tailwind-elements.com/docs/standard/forms/datepicker/
7
- export class DatepickerComponent {
8
- constructor() {
9
- this.readonly = false;
10
- this.disabled = false;
11
- this.displayFormat = 'dd/MM/yyyy';
12
- this.placeholder = '';
13
- this.value = null;
14
- this.valueChange = new EventEmitter();
15
- this.showCalendar = false;
16
- this.showYears = false;
17
- this.monthNames = [
18
- 'Ιανουάριος',
19
- 'Φεβρουάριος',
20
- 'Μάρτιος',
21
- 'Απρίλιος',
22
- 'Μάϊος',
23
- 'Ιούνιος',
24
- 'Ιούλιος',
25
- 'Αύγουστος',
26
- 'Σεπτέμβριος',
27
- 'Οκτώβριος',
28
- 'Νοεμβριος',
29
- 'Δεκέμβριος',
30
- ];
31
- this.dayNames = ['Κυρ', 'Δευ', 'Τρι', 'Τετ', 'Πεμ', 'Παρ', 'Σαβ'];
32
- this.month = -1;
33
- this.year = -1;
34
- this.calendarDates = [];
35
- this.calendarYears = [];
36
- this.showCalendarYears = [];
37
- this.blankDays = [];
38
- this.calendarYearPage = 1;
39
- this.yearsPerPage = 30;
40
- this.onChange$ = undefined;
41
- this.onTouched$ = undefined;
42
- }
43
- ngOnInit() {
44
- var _a, _b;
45
- let today = new Date();
46
- this.month = today.getMonth();
47
- this.year = today.getFullYear();
48
- this.calendarDates = [{ day: this.value, today: this.value, selected: this.value }];
49
- this.calendarYears = [{ year: (_a = this.value) === null || _a === void 0 ? void 0 : _a.getFullYear(), today: this.value, selected: this.value }];
50
- const yearsArray = [];
51
- for (let i = 1950; i <= today.getFullYear() + 2; i++) {
52
- yearsArray.push({ year: i, today: this.compareDates(today, null, i), selected: i == ((_b = this.value) === null || _b === void 0 ? void 0 : _b.getFullYear()) });
53
- }
54
- this.calendarYears = yearsArray;
55
- this.showCalendarYears = this.paginate(this.calendarYears, 1);
56
- this.calcDays();
57
- }
58
- writeValue(obj) {
59
- if (obj) {
60
- this.value = new Date(obj);
61
- this.month = this.value.getMonth();
62
- this.year = this.value.getFullYear();
63
- }
64
- }
65
- registerOnChange(fn) {
66
- this.onChange$ = fn;
67
- }
68
- registerOnTouched(fn) {
69
- this.onTouched$ = fn;
70
- }
71
- onBlur(event) {
72
- if (this.onTouched$) {
73
- this.onTouched$();
74
- }
75
- this.getDateFromInput();
76
- }
77
- selectDateValue(date) {
78
- // This should be in UTC
79
- let selectedDate = new Date(this.year, this.month, date.day, 3, 0, 0, 0);
80
- this.value = selectedDate;
81
- this.valueChange.emit(this.value);
82
- if (this.onChange$) {
83
- this.onChange$(this.value);
84
- }
85
- this.updateDays();
86
- if (this.onTouched$) {
87
- this.onTouched$();
88
- }
89
- this.showCalendar = false;
90
- }
91
- selectYearValue(year) {
92
- var _a, _b, _c;
93
- // This should be in UTC
94
- let selectedDate = new Date(year.year, (_a = this.month) !== null && _a !== void 0 ? _a : 1, (_c = (_b = this.calendarDates) === null || _b === void 0 ? void 0 : _b.find(x => x.selected == true).day) !== null && _c !== void 0 ? _c : 1, 3, 0, 0, 0);
95
- this.year = year.year;
96
- this.value = selectedDate;
97
- this.valueChange.emit(this.value);
98
- if (this.onChange$) {
99
- this.onChange$(this.value);
100
- }
101
- this.updateDays();
102
- if (this.onTouched$) {
103
- this.onTouched$();
104
- }
105
- this.showYears = false;
106
- this.showCalendar = true;
107
- this.calcDays();
108
- }
109
- previousMonth() {
110
- if (this.month !== 0) {
111
- this.month = this.month - 1;
112
- this.calcDays();
113
- }
114
- else {
115
- this.month = 11;
116
- this.year = this.year - 1;
117
- this.calcDays();
118
- }
119
- if (this.onTouched$) {
120
- this.onTouched$();
121
- }
122
- }
123
- nextMonth() {
124
- if (this.month !== 11) {
125
- this.month = this.month + 1;
126
- this.calcDays();
127
- }
128
- else {
129
- this.month = 0;
130
- this.year = this.year + 1;
131
- this.calcDays();
132
- }
133
- if (this.onTouched$) {
134
- this.onTouched$();
135
- }
136
- }
137
- previousYear() {
138
- this.showCalendarYears = this.paginate(this.calendarYears, this.calendarYearPage > 1 ? --this.calendarYearPage : 1);
139
- this.calcDays();
140
- if (this.onTouched$) {
141
- this.onTouched$();
142
- }
143
- }
144
- nextYear() {
145
- this.showCalendarYears = this.paginate(this.calendarYears, this.calendarYearPage <= this.calendarYears.length / this.yearsPerPage
146
- ? ++this.calendarYearPage
147
- : this.calendarYearPage);
148
- this.calcDays();
149
- if (this.onTouched$) {
150
- this.onTouched$();
151
- }
152
- }
153
- compareDates(date1, day, year) {
154
- var _a;
155
- if (!date1) {
156
- return false;
157
- }
158
- 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());
159
- return date1.toDateString() === d.toDateString();
160
- }
161
- ;
162
- calcDays() {
163
- var _a;
164
- const daysInMonth = new Date(this.year, this.month + 1, 0).getDate();
165
- // find where to start calendar day of week
166
- const dayOfWeek = new Date(this.year, this.month).getDay();
167
- const blankdaysArray = new Array();
168
- for (var i = 1; i <= dayOfWeek; i++) {
169
- // check if month is February
170
- blankdaysArray.push(this.month != 2 ? (32 - i) : (29 - i));
171
- blankdaysArray.reverse().sort();
172
- }
173
- const daysArray = [];
174
- const today = new Date();
175
- for (var i = 1; i <= daysInMonth; i++) {
176
- daysArray.push({ day: i, today: this.compareDates(today, i, null), selected: this.compareDates((_a = this.value) !== null && _a !== void 0 ? _a : today, i, null) });
177
- }
178
- const yearsArray = [];
179
- for (let i = 1950; i <= today.getFullYear() + 2; i++) {
180
- yearsArray.push({ year: i, today: this.compareDates(today, null, i), selected: i == this.year });
181
- }
182
- this.calendarYears = yearsArray;
183
- this.blankDays = blankdaysArray;
184
- this.calendarDates = daysArray;
185
- }
186
- updateDays() {
187
- const today = new Date();
188
- this.calendarDates.forEach(d => {
189
- d.today = this.compareDates(today, d, this.year);
190
- d.selected = this.compareDates(this.value, d, this.year);
191
- });
192
- }
193
- paginate(array, page_number) {
194
- return array.slice((page_number - 1) * this.yearsPerPage, page_number * this.yearsPerPage);
195
- }
196
- getDateFromInput() {
197
- var _a, _b;
198
- if (((_a = this.dateInput) === null || _a === void 0 ? void 0 : _a.nativeElement.value) !== '') {
199
- var dateParts = (_b = this.dateInput) === null || _b === void 0 ? void 0 : _b.nativeElement.value.split("/");
200
- let dateInGrFormat = new Date(+dateParts[2], dateParts[1] - 1, +dateParts[0], 3, 0, 0);
201
- if (dateInGrFormat.toString() !== 'Invalid Date') {
202
- this.writeValue(dateInGrFormat);
203
- this.calcDays();
204
- this.valueChange.emit(dateInGrFormat);
205
- }
206
- if (this.onChange$) {
207
- this.onChange$(this.value);
208
- }
209
- this.updateDays();
210
- if (this.onTouched$) {
211
- this.onTouched$();
212
- }
213
- }
214
- this.showCalendar = false;
215
- }
216
- openYears() {
217
- this.showYears = !this.showYears;
218
- this.calendarYearPage = Math.ceil(this.calendarYears.map(x => x.year).indexOf(this.year) / this.yearsPerPage);
219
- this.showCalendarYears = this.paginate(this.calendarYears, this.calendarYearPage !== 0 ? this.calendarYearPage : 1);
220
- this.calcDays();
221
- }
222
- openCalendar() {
223
- this.showCalendar = !this.showCalendar;
224
- this.calcDays();
225
- }
226
- closeCalendar() {
227
- this.showCalendar = false;
228
- this.getDateFromInput();
229
- }
230
- }
231
- DatepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
232
- DatepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: DatepickerComponent, selector: "lib-date-picker", inputs: { readonly: "readonly", disabled: "disabled", displayFormat: ["display-format", "displayFormat"], placeholder: "placeholder", value: "value" }, outputs: { valueChange: "valueChange" }, providers: [
233
- {
234
- provide: NG_VALUE_ACCESSOR,
235
- useExisting: forwardRef(() => DatepickerComponent),
236
- multi: true
237
- }
238
- ], viewQueries: [{ propertyName: "dateInput", first: true, predicate: ["dateInput"], descendants: true }], ngImport: i0, template: "<div class=\"relative flex\"\r\n (clickOutside)=\"closeCalendar()\">\r\n\r\n <input type=\"text\"\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=\"w-full focus:ring-0 focus:outline-none rounded-none sm:text-sm border-gray-300 focus:border-0\"\r\n [ngClass]=\"{'cursor-not-allowed': disabled}\"\r\n [placeholder]=\"disabled ? '' : placeholder\">\r\n\r\n <button type=\"button\"\r\n class=\"relative inline-flex items-center px-2 py-2 border border-gray-300 text-sm font-medium rounded-r-sm text-gray-700 bg-gray-50 hover:bg-gray-100 focus:outline-none focus:ring-1 focus:ring-gray-500 focus:border-gray-500\"\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\"\r\n class=\"bg-gray-100 mt-10 rounded-sm shadow-md p-4 absolute left-0 z-50 w-full\"\r\n style=\"height:18rem;min-width:16rem;\"\r\n name=\"calendar\">\r\n <div class=\"flex justify-between items-center mb-2\">\r\n <div>\r\n <button type=\"button\"\r\n (click)=\"openYears()\">\r\n <span class=\"text-lg font-bold text-gray-800\">\r\n {{monthNames[month]}}\r\n </span>\r\n <span class=\"ml-1 text-lg text-gray-600 font-normal\">\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=\"transition ease-in-out duration-100 inline-flex cursor-pointer hover:bg-gray-200 p-1 rounded-full disabled:opacity-25\"\r\n (click)=\"previousMonth();\">\r\n <svg class=\"h-6 w-6 text-gray-500 inline-flex\"\r\n 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=\"transition ease-in-out duration-100 inline-flex cursor-pointer hover:bg-gray-200 p-1 rounded-full disabled:opacity-25\"\r\n (click)=\"nextMonth()\">\r\n <svg class=\"h-6 w-6 text-gray-500 inline-flex\"\r\n 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=\"transition ease-in-out duration-100 inline-flex cursor-pointer hover:bg-gray-200 p-1 rounded-full disabled:opacity-25 w-1/2\"\r\n (click)=\"previousYear();\">\r\n <svg class=\"h-6 w-6 text-gray-500 inline-flex\"\r\n 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=\"transition ease-in-out duration-100 inline-flex cursor-pointer hover:bg-gray-200 p-1 rounded-full disabled:opacity-25 w-1/2\"\r\n (click)=\"nextYear()\">\r\n <svg class=\"h-6 w-6 text-gray-500 inline-flex\"\r\n 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=\"flex flex-wrap mb-3 -mx-1\"\r\n *ngIf=\"!showYears; else showCalYearsTmpl\">\r\n <div *ngFor=\"let day of dayNames\"\r\n class=\"text-gray-800 font-medium text-center text-sm uppercase\"\r\n style=\"width: 14.28%\">{{day}}</div>\r\n </div>\r\n\r\n <ng-template #showCalYearsTmpl>\r\n <div class=\"flex flex-wrap -mx-1 items-center\">\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=\"cursor-pointer text-center hover:text-blue-600 text-sm leading-none rounded-full leading-loose transition ease-in-out duration-100\"\r\n [class]=\"year.selected ? 'bg-gray-700 text-blue-600 font-medium' : 'text-gray-800 hover:bg-gray-800'\">{{year.year}}</div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"flex flex-wrap -mx-1 items-center\"\r\n *ngIf=\"!showYears\">\r\n <div *ngFor=\"let blankday of blankDays\"\r\n style=\"width: 14.28%\"\r\n class=\"text-center border p-1 border-transparent text-sm opacity-50\">{{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=\"cursor-pointer text-center hover:text-blue-600 text-sm leading-none rounded-full leading-loose transition ease-in-out duration-100\"\r\n [class]=\"date.selected ? 'bg-gray-700 text-blue-600 font-medium' : 'text-gray-800 hover:bg-gray-800'\">{{date.day}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</div>", directives: [{ type: i1.ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "date": i2.DatePipe } });
239
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DatepickerComponent, decorators: [{
240
- type: Component,
241
- args: [{
242
- selector: 'lib-date-picker',
243
- templateUrl: './date-picker.component.html',
244
- providers: [
245
- {
246
- provide: NG_VALUE_ACCESSOR,
247
- useExisting: forwardRef(() => DatepickerComponent),
248
- multi: true
249
- }
250
- ]
251
- }]
252
- }], ctorParameters: function () { return []; }, propDecorators: { readonly: [{
253
- type: Input
254
- }], disabled: [{
255
- type: Input
256
- }], displayFormat: [{
257
- type: Input,
258
- args: ['display-format']
259
- }], placeholder: [{
260
- type: Input
261
- }], value: [{
262
- type: Input
263
- }], valueChange: [{
264
- type: Output
265
- }], dateInput: [{
266
- type: ViewChild,
267
- args: ['dateInput']
268
- }] } });
269
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEgsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBRXpFLDhGQUE4RjtBQVk5RixNQUFNLE9BQU8sbUJBQW1CO0lBcUQ5QjtRQXBEUyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDVixrQkFBYSxHQUF1QixZQUFZLENBQUM7UUFDakUsZ0JBQVcsR0FBdUIsRUFBRSxDQUFDO1FBQ3JDLFVBQUssR0FBNEIsSUFBSSxDQUFDO1FBQ3JDLGdCQUFXLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFOUQsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixlQUFVLEdBQUc7WUFDbEIsWUFBWTtZQUNaLGFBQWE7WUFDYixTQUFTO1lBQ1QsVUFBVTtZQUNWLE9BQU87WUFDUCxTQUFTO1lBQ1QsU0FBUztZQUNULFdBQVc7WUFDWCxhQUFhO1lBQ2IsV0FBVztZQUNYLFdBQVc7WUFDWCxZQUFZO1NBQ2IsQ0FBQztRQUNLLGFBQVEsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtB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LGlCQUFpQjtvQkFDM0IsV0FBVyxFQUFFLDhCQUE4QjtvQkFDM0MsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDOzRCQUNsRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRjswRUFFVSxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ21CLGFBQWE7c0JBQXJDLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUNkLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ2lCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG4vLyBmcmVha3NseSBzaW1wbGUgZGF0ZSBwaWNrZXIgOiBodHRwczovL3RhaWx3aW5kLWVsZW1lbnRzLmNvbS9kb2NzL3N0YW5kYXJkL2Zvcm1zL2RhdGVwaWNrZXIvXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWRhdGUtcGlja2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZXBpY2tlckNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0ZXBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoJ2Rpc3BsYXktZm9ybWF0JykgZGlzcGxheUZvcm1hdDogc3RyaW5nIHwgdW5kZWZpbmVkID0gJ2RkL01NL3l5eXknO1xyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcclxuICBASW5wdXQoKSB2YWx1ZTogRGF0ZSB8IHVuZGVmaW5lZCB8IG51bGwgPSBudWxsO1xyXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xyXG4gIEBWaWV3Q2hpbGQoJ2RhdGVJbnB1dCcpIGRhdGVJbnB1dDogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgc2hvd0NhbGVuZGFyID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dZZWFycyA9IGZhbHNlO1xyXG4gIHB1YmxpYyBtb250aE5hbWVzID0gW1xyXG4gICAgJ86ZzrHOvc6/z4XOrM+BzrnOv8+CJyxcclxuICAgICfOps61zrLPgc6/z4XOrM+BzrnOv8+CJyxcclxuICAgICfOnM6sz4HPhM65zr/PgicsXHJcbiAgICAnzpHPgM+Bzq/Ou865zr/PgicsXHJcbiAgICAnzpzOrM+Kzr/PgicsXHJcbiAgICAnzpnOv8+Nzr3Ouc6/z4InLFxyXG4gICAgJ86Zzr/Pjc67zrnOv8+CJyxcclxuICAgICfOkc+NzrPOv8+Fz4PPhM6/z4InLFxyXG4gICAgJ86jzrXPgM+Ezq3OvM6yz4HOuc6/z4InLFxyXG4gICAgJ86fzrrPhM+OzrLPgc65zr/PgicsXHJcbiAgICAnzp3Ov861zrzOss+BzrnOv8+CJyxcclxuICAgICfOlM61zrrOrc68zrLPgc65zr/PgicsXHJcbiAgXTtcclxuICBwdWJsaWMgZGF5TmFtZXMgPSBbJ86az4XPgScsICfOlM61z4UnLCAnzqTPgc65JywgJ86kzrXPhCcsICfOoM61zrwnLCAnzqDOsc+BJywgJ86jzrHOsiddO1xyXG5cclxuICBwdWJsaWMgbW9udGg6IG51bWJlciA9IC0xO1xyXG4gIHB1YmxpYyB5ZWFyOiBudW1iZXIgPSAtMTtcclxuICBwdWJsaWMgY2FsZW5kYXJEYXRlczogYW55W10gPSBbXTtcclxuICBwdWJsaWMgY2FsZW5kYXJZZWFyczogYW55W10gPSBbXTtcclxuICBwdWJsaWMgc2hvd0NhbGVuZGFyWWVhcnM6IGFueVtdID0gW107XHJcbiAgcHVibGljIGJsYW5rRGF5czogYW55W10gPSBbXTtcclxuICBwdWJsaWMgY2FsZW5kYXJZZWFyUGFnZSA9IDE7XHJcbiAgcHJpdmF0ZSB5ZWFyc1BlclBhZ2UgPSAzMDtcclxuXHJcbiAgcHJpdmF0ZSBvbkNoYW5nZSQ6IGFueSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICBwcml2YXRlIG9uVG91Y2hlZCQ6IGFueSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBsZXQgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gICAgdGhpcy5tb250aCA9IHRvZGF5LmdldE1vbnRoKCk7XHJcbiAgICB0aGlzLnllYXIgPSB0b2RheS5nZXRGdWxsWWVhcigpO1xyXG4gICAgdGhpcy5jYWxlbmRhckRhdGVzID0gW3sgZGF5OiB0aGlzLnZhbHVlLCB0b2RheTogdGhpcy52YWx1ZSwgc2VsZWN0ZWQ6IHRoaXMudmFsdWUgfV07XHJcbiAgICB0aGlzLmNhbGVuZGFyWWVhcnMgPSBbeyB5ZWFyOiB0aGlzLnZhbHVlPy5nZXRGdWxsWWVhcigpLCB0b2RheTogdGhpcy52YWx1ZSwgc2VsZWN0ZWQ6IHRoaXMudmFsdWUgfV07XHJcbiAgICBjb25zdCB5ZWFyc0FycmF5ID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMTk1MDsgaSA8PSB0b2RheS5nZXRGdWxsWWVhcigpICsgMjsgaSsrKSB7XHJcbiAgICAgIHllYXJzQXJyYXkucHVzaCh7IHllYXI6IGksIHRvZGF5OiB0aGlzLmNvbXBhcmVEYXRlcyh0b2RheSwgbnVsbCwgaSksIHNlbGVjdGVkOiBpID09IHRoaXMudmFsdWU/LmdldEZ1bGxZZWFyKCkgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNhbGVuZGFyWWVhcnMgPSB5ZWFyc0FycmF5O1xyXG4gICAgdGhpcy5zaG93Q2FsZW5kYXJZZWFycyA9IHRoaXMucGFnaW5hdGUodGhpcy5jYWxlbmRhclllYXJzLCAxKTtcclxuICAgIHRoaXMuY2FsY0RheXMoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChvYmopIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IG5ldyBEYXRlKG9iaik7XHJcbiAgICAgIHRoaXMubW9udGggPSB0aGlzLnZhbHVlLmdldE1vbnRoKCk7XHJcbiAgICAgIHRoaXMueWVhciA9IHRoaXMudmFsdWUuZ2V0RnVsbFllYXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UkID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCQgPSBmbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkJsdXIoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub25Ub3VjaGVkJCkge1xyXG4gICAgICB0aGlzLm9uVG91Y2hlZCQoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0RGF0ZUZyb21JbnB1dCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdERhdGVWYWx1ZShkYXRlOiBhbnkpOiB2b2lkIHtcclxuICAgIC8vIFRoaXMgc2hvdWxkIGJlIGluIFVUQ1xyXG4gICAgbGV0IHNlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKHRoaXMueWVhciwgdGhpcy5tb250aCwgZGF0ZS5kYXksIDMsIDAsIDAsIDApO1xyXG4gICAgdGhpcy52YWx1ZSA9IHNlbGVjdGVkRGF0ZTtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcclxuICAgIGlmICh0aGlzLm9uQ2hhbmdlJCkge1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlJCh0aGlzLnZhbHVlKTtcclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRlRGF5cygpO1xyXG4gICAgaWYgKHRoaXMub25Ub3VjaGVkJCkge1xyXG4gICAgICB0aGlzLm9uVG91Y2hlZCQoKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2hvd0NhbGVuZGFyID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0WWVhclZhbHVlKHllYXI6IGFueSk6IHZvaWQge1xyXG4gICAgLy8gVGhpcyBzaG91bGQgYmUgaW4gVVRDXHJcbiAgICBsZXQgc2VsZWN0ZWREYXRlID0gbmV3IERhdGUoeWVhci55ZWFyLCB0aGlzLm1vbnRoID8/IDEsIHRoaXMuY2FsZW5kYXJEYXRlcz8uZmluZCh4ID0+IHguc2VsZWN0ZWQgPT0gdHJ1ZSkuZGF5ID8/IDEsIDMsIDAsIDAsIDApO1xyXG4gICAgdGhpcy55ZWFyID0geWVhci55ZWFyO1xyXG4gICAgdGhpcy52YWx1ZSA9IHNlbGVjdGVkRGF0ZTtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcclxuICAgIGlmICh0aGlzLm9uQ2hhbmdlJCkge1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlJCh0aGlzLnZhbHVlKTtcclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRlRGF5cygpO1xyXG4gICAgaWYgKHRoaXMub25Ub3VjaGVkJCkge1xyXG4gICAgICB0aGlzLm9uVG91Y2hlZCQoKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2hvd1llYXJzID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dDYWxlbmRhciA9IHRydWU7XHJcbiAgICB0aGlzLmNhbGNEYXlzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcHJldmlvdXNNb250aCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm1vbnRoICE9PSAwKSB7XHJcbiAgICAgIHRoaXMubW9udGggPSB0aGlzLm1vbnRoIC0gMTtcclxuICAgICAgdGhpcy5jYWxjRGF5cygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5tb250aCA9IDExO1xyXG4gICAgICB0aGlzLnllYXIgPSB0aGlzLnllYXIgLSAxO1xyXG4gICAgICB0aGlzLmNhbGNEYXlzKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vblRvdWNoZWQkKSB7XHJcbiAgICAgIHRoaXMub25Ub3VjaGVkJCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG5leHRNb250aCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm1vbnRoICE9PSAxMSkge1xyXG4gICAgICB0aGlzLm1vbnRoID0gdGhpcy5tb250aCArIDE7XHJcbiAgICAgIHRoaXMuY2FsY0RheXMoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubW9udGggPSAwO1xyXG4gICAgICB0aGlzLnllYXIgPSB0aGlzLnllYXIgKyAxO1xyXG4gICAgICB0aGlzLmNhbGNEYXlzKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vblRvdWNoZWQkKSB7XHJcbiAgICAgIHRoaXMub25Ub3VjaGVkJCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHByZXZpb3VzWWVhcigpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd0NhbGVuZGFyWWVhcnMgPSB0aGlzLnBhZ2luYXRlKFxyXG4gICAgICB0aGlzLmNhbGVuZGFyWWVhcnMsXHJcbiAgICAgIHRoaXMuY2FsZW5kYXJZZWFyUGFnZSA+IDEgPyAtLXRoaXMuY2FsZW5kYXJZZWFyUGFnZSA6IDEpO1xyXG4gICAgdGhpcy5jYWxjRGF5cygpO1xyXG4gICAgaWYgKHRoaXMub25Ub3VjaGVkJCkge1xyXG4gICAgICB0aGlzLm9uVG91Y2hlZCQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZXh0WWVhcigpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd0NhbGVuZGFyWWVhcnMgPSB0aGlzLnBhZ2luYXRlKFxyXG4gICAgICB0aGlzLmNhbGVuZGFyWWVhcnMsXHJcbiAgICAgIHRoaXMuY2FsZW5kYXJZZWFyUGFnZSA8PSB0aGlzLmNhbGVuZGFyWWVhcnMubGVuZ3RoIC8gdGhpcy55ZWFyc1BlclBhZ2VcclxuICAgICAgICA/ICsrdGhpcy5jYWxlbmRhclllYXJQYWdlXHJcbiAgICAgICAgOiB0aGlzLmNhbGVuZGFyWWVhclBhZ2UpO1xyXG4gICAgdGhpcy5jYWxjRGF5cygpO1xyXG4gICAgaWYgKHRoaXMub25Ub3VjaGVkJCkge1xyXG4gICAgICB0aGlzLm9uVG91Y2hlZCQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29tcGFyZURhdGVzKGRhdGUxOiBEYXRlIHwgdW5kZWZpbmVkIHwgbnVsbCwgZGF5OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLCB5ZWFyOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIWRhdGUxKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZSh5ZWFyID8/IHRoaXMueWVhciwgdGhpcy5tb250aCwgZGF5ID8/IHRoaXMudmFsdWU/LmdldERheSgpKTtcclxuICAgIHJldHVybiBkYXRlMS50b0RhdGVTdHJpbmcoKSA9PT0gZC50b0RhdGVTdHJpbmcoKTtcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGNhbGNEYXlzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZGF5c0luTW9udGggPSBuZXcgRGF0ZSh0aGlzLnllYXIsIHRoaXMubW9udGggKyAxLCAwKS5nZXREYXRlKCk7XHJcbiAgICAvLyBmaW5kIHdoZXJlIHRvIHN0YXJ0IGNhbGVuZGFyIGRheSBvZiB3ZWVrXHJcbiAgICBjb25zdCBkYXlPZldlZWsgPSBuZXcgRGF0ZSh0aGlzLnllYXIsIHRoaXMubW9udGgpLmdldERheSgpO1xyXG4gICAgY29uc3QgYmxhbmtkYXlzQXJyYXkgPSBuZXcgQXJyYXk8bnVtYmVyPigpO1xyXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gZGF5T2ZXZWVrOyBpKyspIHtcclxuICAgICAgLy8gY2hlY2sgaWYgbW9udGggaXMgRmVicnVhcnlcclxuICAgICAgYmxhbmtkYXlzQXJyYXkucHVzaCh0aGlzLm1vbnRoICE9IDIgPyAoMzIgLSBpKSA6ICgyOSAtIGkpKTtcclxuICAgICAgYmxhbmtkYXlzQXJyYXkucmV2ZXJzZSgpLnNvcnQoKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGRheXNBcnJheSA9IFtdO1xyXG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gZGF5c0luTW9udGg7IGkrKykge1xyXG4gICAgICBkYXlzQXJyYXkucHVzaCh7IGRheTogaSwgdG9kYXk6IHRoaXMuY29tcGFyZURhdGVzKHRvZGF5LCBpLCBudWxsKSwgc2VsZWN0ZWQ6IHRoaXMuY29tcGFyZURhdGVzKHRoaXMudmFsdWUgPz8gdG9kYXksIGksIG51bGwpIH0pO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeWVhcnNBcnJheSA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDE5NTA7IGkgPD0gdG9kYXkuZ2V0RnVsbFllYXIoKSArIDI7IGkrKykge1xyXG4gICAgICB5ZWFyc0FycmF5LnB1c2goeyB5ZWFyOiBpLCB0b2RheTogdGhpcy5jb21wYXJlRGF0ZXModG9kYXksIG51bGwsIGkpLCBzZWxlY3RlZDogaSA9PSB0aGlzLnllYXIgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNhbGVuZGFyWWVhcnMgPSB5ZWFyc0FycmF5O1xyXG4gICAgdGhpcy5ibGFua0RheXMgPSBibGFua2RheXNBcnJheTtcclxuICAgIHRoaXMuY2FsZW5kYXJEYXRlcyA9IGRheXNBcnJheTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRGF5cygpOiB2b2lkIHtcclxuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcclxuICAgIHRoaXMuY2FsZW5kYXJEYXRlcy5mb3JFYWNoKGQgPT4ge1xyXG4gICAgICBkLnRvZGF5ID0gdGhpcy5jb21wYXJlRGF0ZXModG9kYXksIGQsIHRoaXMueWVhcik7XHJcbiAgICAgIGQuc2VsZWN0ZWQgPSB0aGlzLmNvbXBhcmVEYXRlcyh0aGlzLnZhbHVlLCBkLCB0aGlzLnllYXIpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBhZ2luYXRlKGFycmF5OiBhbnlbXSwgcGFnZV9udW1iZXI6IG51bWJlcik6IGFueVtdIHtcclxuICAgIHJldHVybiBhcnJheS5zbGljZSgocGFnZV9udW1iZXIgLSAxKSAqIHRoaXMueWVhcnNQZXJQYWdlLCBwYWdlX251bWJlciAqIHRoaXMueWVhcnNQZXJQYWdlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGF0ZUZyb21JbnB1dCgpIHtcclxuICAgIGlmICh0aGlzLmRhdGVJbnB1dD8ubmF0aXZlRWxlbWVudC52YWx1ZSAhPT0gJycpIHtcclxuICAgICAgdmFyIGRhdGVQYXJ0cyA9IHRoaXMuZGF0ZUlucHV0Py5uYXRpdmVFbGVtZW50LnZhbHVlLnNwbGl0KFwiL1wiKTtcclxuICAgICAgbGV0IGRhdGVJbkdyRm9ybWF0ID0gbmV3IERhdGUoK2RhdGVQYXJ0c1syXSwgZGF0ZVBhcnRzWzFdIC0gMSwgK2RhdGVQYXJ0c1swXSwgMywgMCwgMCk7XHJcbiAgICAgIGlmIChkYXRlSW5HckZvcm1hdC50b1N0cmluZygpICE9PSAnSW52YWxpZCBEYXRlJykge1xyXG4gICAgICAgIHRoaXMud3JpdGVWYWx1ZShkYXRlSW5HckZvcm1hdClcclxuICAgICAgICB0aGlzLmNhbGNEYXlzKCk7XHJcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KGRhdGVJbkdyRm9ybWF0KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5vbkNoYW5nZSQpIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlJCh0aGlzLnZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnVwZGF0ZURheXMoKTtcclxuICAgICAgaWYgKHRoaXMub25Ub3VjaGVkJCkge1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkJCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnNob3dDYWxlbmRhciA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW5ZZWFycygpIHtcclxuICAgIHRoaXMuc2hvd1llYXJzID0gIXRoaXMuc2hvd1llYXJzO1xyXG4gICAgdGhpcy5jYWxlbmRhclllYXJQYWdlID0gTWF0aC5jZWlsKHRoaXMuY2FsZW5kYXJZZWFycy5tYXAoeCA9PiB4LnllYXIpLmluZGV4T2YodGhpcy55ZWFyKSAvIHRoaXMueWVhcnNQZXJQYWdlKTtcclxuICAgIHRoaXMuc2hvd0NhbGVuZGFyWWVhcnMgPSB0aGlzLnBhZ2luYXRlKHRoaXMuY2FsZW5kYXJZZWFycywgdGhpcy5jYWxlbmRhclllYXJQYWdlICE9PSAwID8gdGhpcy5jYWxlbmRhclllYXJQYWdlIDogMSk7XHJcbiAgICB0aGlzLmNhbGNEYXlzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3BlbkNhbGVuZGFyKCkge1xyXG4gICAgdGhpcy5zaG93Q2FsZW5kYXIgPSAhdGhpcy5zaG93Q2FsZW5kYXI7XHJcbiAgICB0aGlzLmNhbGNEYXlzKCk7XHJcbiAgfVxyXG4gIFxyXG4gIHB1YmxpYyBjbG9zZUNhbGVuZGFyKCl7XHJcbiAgICB0aGlzLnNob3dDYWxlbmRhciA9IGZhbHNlO1xyXG4gICAgdGhpcy5nZXREYXRlRnJvbUlucHV0KCk7XHJcbiAgfVxyXG5cclxufSIsIjxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBmbGV4XCJcclxuICAgICAoY2xpY2tPdXRzaWRlKT1cImNsb3NlQ2FsZW5kYXIoKVwiPlxyXG5cclxuICA8aW5wdXQgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAjZGF0ZUlucHV0XHJcbiAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgIG5hbWU9XCJkYXRlSW5wdXRcIlxyXG4gICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXHJcbiAgICAgICAgIGlkPVwiZGF0ZUlucHV0XCJcclxuICAgICAgICAgKGZvY3VzKT1cInNob3dDYWxlbmRhciA9IGZhbHNlXCJcclxuICAgICAgICAgW3ZhbHVlXT1cInZhbHVlIHwgZGF0ZTogZGlzcGxheUZvcm1hdFwiXHJcbiAgICAgICAgIGNsYXNzPVwidy1mdWxsIGZvY3VzOnJpbmctMCBmb2N1czpvdXRsaW5lLW5vbmUgcm91bmRlZC1ub25lIHNtOnRleHQtc20gYm9yZGVyLWdyYXktMzAwICBmb2N1czpib3JkZXItMFwiXHJcbiAgICAgICAgIFtuZ0NsYXNzXT1cInsnY3Vyc29yLW5vdC1hbGxvd2VkJzogZGlzYWJsZWR9XCJcclxuICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImRpc2FibGVkID8gJycgOiBwbGFjZWhvbGRlclwiPlxyXG5cclxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgY2xhc3M9XCJyZWxhdGl2ZSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgcHgtMiBweS0yIGJvcmRlciBib3JkZXItZ3JheS0zMDAgdGV4dC1zbSBmb250LW1lZGl1bSByb3VuZGVkLXItc20gdGV4dC1ncmF5LTcwMCBiZy1ncmF5LTUwIGhvdmVyOmJnLWdyYXktMTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTEgZm9jdXM6cmluZy1ncmF5LTUwMCBmb2N1czpib3JkZXItZ3JheS01MDBcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgIChjbGljayk9XCJvcGVuQ2FsZW5kYXIoKVwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J2N1cnNvci1ub3QtYWxsb3dlZCc6IGRpc2FibGVkfVwiPlxyXG4gICAgPGkgY2xhc3M9XCJtcy1JY29uIG1zLUljb24tLURhdGVUaW1lMlwiPjwvaT5cclxuICA8L2J1dHRvbj5cclxuXHJcbiAgPGRpdiAqbmdJZj1cInNob3dDYWxlbmRhclwiXHJcbiAgICAgICBjbGFzcz1cImJnLWdyYXktMTAwIG10LTEwIHJvdW5kZWQtc20gc2hhZG93LW1kIHAtNCBhYnNvbHV0ZSBsZWZ0LTAgei01MCB3LWZ1bGxcIlxyXG4gICAgICAgc3R5bGU9XCJoZWlnaHQ6MThyZW07bWluLXdpZHRoOjE2cmVtO1wiXHJcbiAgICAgICBuYW1lPVwiY2FsZW5kYXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgbWItMlwiPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlblllYXJzKClcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1sZyBmb250LWJvbGQgdGV4dC1ncmF5LTgwMFwiPlxyXG4gICAgICAgICAgICB7e21vbnRoTmFtZXNbbW9udGhdfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWwtMSB0ZXh0LWxnIHRleHQtZ3JheS02MDAgZm9udC1ub3JtYWxcIj5cclxuICAgICAgICAgICAge3t5ZWFyfX08L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiIXNob3dZZWFyczsgZWxzZSBzaG93WWVhcnNQaWNrZXJUbXBsXCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidHJhbnNpdGlvbiBlYXNlLWluLW91dCBkdXJhdGlvbi0xMDAgaW5saW5lLWZsZXggY3Vyc29yLXBvaW50ZXIgaG92ZXI6YmctZ3JheS0yMDAgcC0xIHJvdW5kZWQtZnVsbCBkaXNhYmxlZDpvcGFjaXR5LTI1XCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJwcmV2aW91c01vbnRoKCk7XCI+XHJcbiAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC02IHctNiB0ZXh0LWdyYXktNTAwIGlubGluZS1mbGV4XCJcclxuICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCI+XHJcbiAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICBkPVwiTTE1IDE5bC03LTcgNy03XCIgLz5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRyYW5zaXRpb24gZWFzZS1pbi1vdXQgZHVyYXRpb24tMTAwIGlubGluZS1mbGV4IGN1cnNvci1wb2ludGVyIGhvdmVyOmJnLWdyYXktMjAwIHAtMSByb3VuZGVkLWZ1bGwgZGlzYWJsZWQ6b3BhY2l0eS0yNVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibmV4dE1vbnRoKClcIj5cclxuICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLTYgdy02IHRleHQtZ3JheS01MDAgaW5saW5lLWZsZXhcIlxyXG4gICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxyXG4gICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIj5cclxuICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgIGQ9XCJNOSA1bDcgNy03IDdcIiAvPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bmctdGVtcGxhdGUgI3Nob3dZZWFyc1BpY2tlclRtcGw+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHJhbnNpdGlvbiBlYXNlLWluLW91dCBkdXJhdGlvbi0xMDAgaW5saW5lLWZsZXggY3Vyc29yLXBvaW50ZXIgaG92ZXI6YmctZ3JheS0yMDAgcC0xIHJvdW5kZWQtZnVsbCBkaXNhYmxlZDpvcGFjaXR5LTI1IHctMS8yXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInByZXZpb3VzWWVhcigpO1wiPlxyXG4gICAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC02IHctNiB0ZXh0LWdyYXktNTAwIGlubGluZS1mbGV4XCJcclxuICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCI+XHJcbiAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNMTUgMTlsLTctNyA3LTdcIiAvPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0cmFuc2l0aW9uIGVhc2UtaW4tb3V0IGR1cmF0aW9uLTEwMCBpbmxpbmUtZmxleCBjdXJzb3ItcG9pbnRlciBob3ZlcjpiZy1ncmF5LTIwMCBwLTEgcm91bmRlZC1mdWxsIGRpc2FibGVkOm9wYWNpdHktMjUgdy0xLzJcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwibmV4dFllYXIoKVwiPlxyXG4gICAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC02IHctNiB0ZXh0LWdyYXktNTAwIGlubGluZS1mbGV4XCJcclxuICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCI+XHJcbiAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNOSA1bDcgNy03IDdcIiAvPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIG1iLTMgLW14LTFcIlxyXG4gICAgICAgICAqbmdJZj1cIiFzaG93WWVhcnM7IGVsc2Ugc2hvd0NhbFllYXJzVG1wbFwiPlxyXG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBkYXkgb2YgZGF5TmFtZXNcIlxyXG4gICAgICAgICAgIGNsYXNzPVwidGV4dC1ncmF5LTgwMCBmb250LW1lZGl1bSB0ZXh0LWNlbnRlciB0ZXh0LXNtIHVwcGVyY2FzZVwiXHJcbiAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTQuMjglXCI+e3tkYXl9fTwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICNzaG93Q2FsWWVhcnNUbXBsPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgLW14LTEgaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgeWVhciBvZiBzaG93Q2FsZW5kYXJZZWFyc1wiXHJcbiAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxOC4yOCVcIlxyXG4gICAgICAgICAgICAgY2xhc3M9XCJweC0xIG1iLTFcIj5cclxuICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInNlbGVjdFllYXJWYWx1ZSh5ZWFyKVwiXHJcbiAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgdGV4dC1jZW50ZXIgaG92ZXI6dGV4dC1ibHVlLTYwMCB0ZXh0LXNtIGxlYWRpbmctbm9uZSByb3VuZGVkLWZ1bGwgbGVhZGluZy1sb29zZSB0cmFuc2l0aW9uIGVhc2UtaW4tb3V0IGR1cmF0aW9uLTEwMFwiXHJcbiAgICAgICAgICAgICAgIFtjbGFzc109XCJ5ZWFyLnNlbGVjdGVkICA/ICdiZy1ncmF5LTcwMCB0ZXh0LWJsdWUtNjAwIGZvbnQtbWVkaXVtJyA6ICd0ZXh0LWdyYXktODAwIGhvdmVyOmJnLWdyYXktODAwJ1wiPnt7eWVhci55ZWFyfX08L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCAtbXgtMSBpdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAqbmdJZj1cIiFzaG93WWVhcnNcIj5cclxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYmxhbmtkYXkgb2YgYmxhbmtEYXlzXCJcclxuICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxNC4yOCVcIlxyXG4gICAgICAgICAgIGNsYXNzPVwidGV4dC1jZW50ZXIgYm9yZGVyIHAtMSBib3JkZXItdHJhbnNwYXJlbnQgdGV4dC1zbSBvcGFjaXR5LTUwXCI+e3tibGFua2RheX19PC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRhdGUgb2YgY2FsZW5kYXJEYXRlc1wiXHJcbiAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTQuMjglXCJcclxuICAgICAgICAgICBjbGFzcz1cInB4LTEgbWItMVwiPlxyXG4gICAgICAgIDxkaXYgKGNsaWNrKT1cInNlbGVjdERhdGVWYWx1ZShkYXRlKVwiXHJcbiAgICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIHRleHQtY2VudGVyIGhvdmVyOnRleHQtYmx1ZS02MDAgdGV4dC1zbSBsZWFkaW5nLW5vbmUgcm91bmRlZC1mdWxsIGxlYWRpbmctbG9vc2UgdHJhbnNpdGlvbiBlYXNlLWluLW91dCBkdXJhdGlvbi0xMDBcIlxyXG4gICAgICAgICAgICAgW2NsYXNzXT1cImRhdGUuc2VsZWN0ZWQgID8gJ2JnLWdyYXktNzAwIHRleHQtYmx1ZS02MDAgZm9udC1tZWRpdW0nIDogJ3RleHQtZ3JheS04MDAgaG92ZXI6YmctZ3JheS04MDAnXCI+e3tkYXRlLmRheX19PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG48L2Rpdj4iXX0=
@@ -1,72 +0,0 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "../../directives/click-outside.directive";
4
- import * as i2 from "@angular/common";
5
- export class DropDownMenuComponent {
6
- constructor() {
7
- this.options = [];
8
- // tslint:disable-next-line:no-input-rename
9
- this.selectedValue = null;
10
- this.multiple = false;
11
- this.placeholder = 'Παρακαλώ επιλέξτε...';
12
- this.selectedOption$ = null;
13
- this.selectedChange = new EventEmitter();
14
- this.selectedChanged = new EventEmitter();
15
- this.expanded$ = false;
16
- }
17
- get selectedOption() {
18
- return this.selectedOption$;
19
- }
20
- set selectedOption(option) {
21
- this.selectedOption$ = option;
22
- this.selectedValue = option ? option.value : null;
23
- this.expanded = false;
24
- }
25
- get expanded() {
26
- return this.expanded$;
27
- }
28
- set expanded(value) {
29
- this.expanded$ = value;
30
- }
31
- ngOnChanges(changes) {
32
- if (this.options && this.options.length > 0 && this.selectedValue !== null && this.selectedValue !== undefined) {
33
- this.selectedOption$ = this.options.filter((o) => o.value === this.selectedValue)[0];
34
- }
35
- }
36
- ngOnInit() { }
37
- isSelected(option) {
38
- return option != null && this.selectedValue != null && option.value === this.selectedValue;
39
- }
40
- onClickOutside($event) {
41
- this.expanded = false;
42
- }
43
- selectOption(option) {
44
- this.selectedOption = option;
45
- this.selectedChange.emit(option.value);
46
- this.selectedChanged.emit(option.value);
47
- }
48
- }
49
- DropDownMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DropDownMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
50
- 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: i1.ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DropDownMenuComponent, decorators: [{
52
- type: Component,
53
- args: [{
54
- // tslint:disable-next-line:component-selector
55
- selector: 'lib-drop-down-menu',
56
- templateUrl: './drop-down-menu.component.html',
57
- }]
58
- }], ctorParameters: function () { return []; }, propDecorators: { options: [{
59
- type: Input
60
- }], selectedValue: [{
61
- type: Input,
62
- args: ['selected']
63
- }], multiple: [{
64
- type: Input
65
- }], placeholder: [{
66
- type: Input
67
- }], selectedChange: [{
68
- type: Output
69
- }], selectedChanged: [{
70
- type: Output
71
- }] } });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1kb3duLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2Ryb3AtZG93bi1tZW51L2Ryb3AtZG93bi1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9kcm9wLWRvd24tbWVudS9kcm9wLWRvd24tbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7Ozs7QUFRekcsTUFBTSxPQUFPLHFCQUFxQjtJQTJCaEM7UUExQlMsWUFBTyxHQUFpQixFQUFFLENBQUM7UUFDcEMsMkNBQTJDO1FBQ3hCLGtCQUFhLEdBQWUsSUFBSSxDQUFDO1FBQzNDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsZ0JBQVcsR0FBVyxzQkFBc0IsQ0FBQztRQUU5QyxvQkFBZSxHQUFzQixJQUFJLENBQUM7UUFVeEMsbUJBQWMsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUM1RCxvQkFBZSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRS9ELGNBQVMsR0FBRyxLQUFLLENBQUM7SUFPWCxDQUFDO0lBbkJoQixJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFDRCxJQUFXLGNBQWMsQ0FBQyxNQUF5QjtRQUNqRCxJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2xELElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFNRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFXLFFBQVEsQ0FBQyxLQUFjO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFHRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLFNBQVMsRUFBRTtZQUM5RyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN0RjtJQUNILENBQUM7SUFFRCxRQUFRLEtBQVUsQ0FBQztJQUVaLFVBQVUsQ0FBQyxNQUFrQjtRQUNsQyxPQUFPLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzdGLENBQUM7SUFFTSxjQUFjLENBQUMsTUFBVztRQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRU0sWUFBWSxDQUFDLE1BQWtCO1FBQ3BDLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDO1FBQzdCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQzs7bUhBakRVLHFCQUFxQjt1R0FBckIscUJBQXFCLGtTQ1JsQyxrNUVBNkRBOzRGRHJEYSxxQkFBcUI7a0JBTGpDLFNBQVM7bUJBQUM7b0JBQ1QsOENBQThDO29CQUM5QyxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixXQUFXLEVBQUUsaUNBQWlDO2lCQUMvQzswRUFFVSxPQUFPO3NCQUFmLEtBQUs7Z0JBRWEsYUFBYTtzQkFBL0IsS0FBSzt1QkFBQyxVQUFVO2dCQUNSLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFZSSxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWVudU9wdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjb21wb25lbnQtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ2xpYi1kcm9wLWRvd24tbWVudScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3AtZG93bi1tZW51LmNvbXBvbmVudC5odG1sJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIERyb3BEb3duTWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSBvcHRpb25zOiBNZW51T3B0aW9uW10gPSBbXTtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXHJcbiAgQElucHV0KCdzZWxlY3RlZCcpIHNlbGVjdGVkVmFsdWU6IGFueSB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIG11bHRpcGxlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICfOoM6xz4HOsc66zrHOu8+OIM61z4DOuc67zq3Ovs+EzrUuLi4nO1xyXG5cclxuICBwcml2YXRlIHNlbGVjdGVkT3B0aW9uJDogTWVudU9wdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWRPcHRpb24oKTogTWVudU9wdGlvbiB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRPcHRpb24kO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IHNlbGVjdGVkT3B0aW9uKG9wdGlvbjogTWVudU9wdGlvbiB8IG51bGwpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24kID0gb3B0aW9uO1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gb3B0aW9uID8gb3B0aW9uLnZhbHVlIDogbnVsbDtcclxuICAgIHRoaXMuZXhwYW5kZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBwcml2YXRlIGV4cGFuZGVkJCA9IGZhbHNlO1xyXG4gIHB1YmxpYyBnZXQgZXhwYW5kZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5leHBhbmRlZCQ7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgZXhwYW5kZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZXhwYW5kZWQkID0gdmFsdWU7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMubGVuZ3RoID4gMCAmJiB0aGlzLnNlbGVjdGVkVmFsdWUgIT09IG51bGwgJiYgdGhpcy5zZWxlY3RlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiQgPSB0aGlzLm9wdGlvbnMuZmlsdGVyKChvKSA9PiBvLnZhbHVlID09PSB0aGlzLnNlbGVjdGVkVmFsdWUpWzBdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7fVxyXG5cclxuICBwdWJsaWMgaXNTZWxlY3RlZChvcHRpb246IE1lbnVPcHRpb24pOiBib29sZWFuIHtcclxuICAgIHJldHVybiBvcHRpb24gIT0gbnVsbCAmJiB0aGlzLnNlbGVjdGVkVmFsdWUgIT0gbnVsbCAmJiBvcHRpb24udmFsdWUgPT09IHRoaXMuc2VsZWN0ZWRWYWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNsaWNrT3V0c2lkZSgkZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5leHBhbmRlZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdE9wdGlvbihvcHRpb246IE1lbnVPcHRpb24pOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSBvcHRpb247XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQob3B0aW9uLnZhbHVlKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2VkLmVtaXQob3B0aW9uLnZhbHVlKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImRyb3Bkb3duLWNvbnRhaW5lclwiIChjbGlja091dHNpZGUpPVwib25DbGlja091dHNpZGUoJGV2ZW50KVwiPlxyXG4gIDxidXR0b25cclxuICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgKGNsaWNrKT1cImV4cGFuZGVkID0gIWV4cGFuZGVkXCJcclxuICAgIGNsYXNzPVwiZHJvcGRvd24tYnV0dG9uXCJcclxuICAgIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCJcclxuICAgIGFyaWEtZXhwYW5kZWQ9XCJ0cnVlXCJcclxuICAgIGFyaWEtbGFiZWxsZWRieT1cImxpc3Rib3gtbGFiZWxcIlxyXG4gID5cclxuICAgIDxzcGFuIGNsYXNzPVwiZHJvcGRvd24tc2VsZWN0ZWQtdGV4dFwiPlxyXG4gICAgICB7eyBzZWxlY3RlZE9wdGlvbj8udGV4dCB8fCBwbGFjZWhvbGRlciB9fVxyXG4gICAgPC9zcGFuPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJkcm9wZG93bi1idXR0b24taWNvblwiPlxyXG4gICAgICA8IS0tIEhlcm9pY29uIG5hbWU6IHNvbGlkL3NlbGVjdG9yIC0tPlxyXG4gICAgICA8c3ZnIGNsYXNzPVwiZHJvcGRvd24tYXJyb3dcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICBkPVwiTTEwIDNhMSAxIDAgMDEuNzA3LjI5M2wzIDNhMSAxIDAgMDEtMS40MTQgMS40MTRMMTAgNS40MTQgNy43MDcgNy43MDdhMSAxIDAgMDEtMS40MTQtMS40MTRsMy0zQTEgMSAwIDAxMTAgM3ptLTMuNzA3IDkuMjkzYTEgMSAwIDAxMS40MTQgMEwxMCAxNC41ODZsMi4yOTMtMi4yOTNhMSAxIDAgMDExLjQxNCAxLjQxNGwtMyAzYTEgMSAwIDAxLTEuNDE0IDBsLTMtM2ExIDEgMCAwMTAtMS40MTR6XCJcclxuICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9zcGFuPlxyXG4gIDwvYnV0dG9uPlxyXG4gIDx1bFxyXG4gICAgKm5nSWY9XCJleHBhbmRlZCAmJiBvcHRpb25zICYmIG9wdGlvbnMubGVuZ3RoID4gMFwiXHJcbiAgICBjbGFzcz1cImRyb3Bkb3duLXVsXCJcclxuICAgIHRhYmluZGV4PVwiLTFcIlxyXG4gICAgcm9sZT1cImxpc3Rib3hcIlxyXG4gICAgYXJpYS1sYWJlbGxlZGJ5PVwibGlzdGJveC1sYWJlbFwiXHJcbiAgICBhcmlhLWFjdGl2ZWRlc2NlbmRhbnQ9XCJsaXN0Ym94LW9wdGlvbi0zXCJcclxuICA+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1wiPlxyXG4gICAgICA8bGlcclxuICAgICAgICBbY2xhc3NdPVwiaXNTZWxlY3RlZChvcHRpb24pID8gJ2Ryb3Bkb3duLWxpLXNlbGVjdGVkJyA6ICdkcm9wZG93bi1saSdcIlxyXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RPcHRpb24ob3B0aW9uKVwiXHJcbiAgICAgICAgaWQ9XCJsaXN0Ym94LW9wdGlvbi0wXCJcclxuICAgICAgICByb2xlPVwib3B0aW9uXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIFtjbGFzc109XCJpc1NlbGVjdGVkKG9wdGlvbikgPyAnZHJvcGRvd24tbGktc2VsZWN0ZWQtdGV4dCcgOiAnZHJvcGRvd24tbGktdGV4dCdcIj5cclxuICAgICAgICAgIHt7IG9wdGlvbi50ZXh0IH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaXNTZWxlY3RlZChvcHRpb24pXCIgY2xhc3M9XCJkcm9wZG93bi1saS1zZWxlY3RlZC1pbmRpY2F0b3ItY29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8IS0tIEhlcm9pY29uIG5hbWU6IHNvbGlkL2NoZWNrIC0tPlxyXG4gICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWxpLXNlbGVjdGVkLWluZGljYXRvclwiXHJcbiAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXHJcbiAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgZD1cIk0xNi43MDcgNS4yOTNhMSAxIDAgMDEwIDEuNDE0bC04IDhhMSAxIDAgMDEtMS40MTQgMGwtNC00YTEgMSAwIDAxMS40MTQtMS40MTRMOCAxMi41ODZsNy4yOTMtNy4yOTNhMSAxIDAgMDExLjQxNCAwelwiXHJcbiAgICAgICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvbGk+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L3VsPlxyXG48L2Rpdj5cclxuIl19