@indice/ng-components 0.2.174 → 0.3.0

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 (219) hide show
  1. package/_styles.scss +63 -15
  2. package/{esm2020 → esm2022}/indice-ng-components.mjs +4 -4
  3. package/esm2022/lib/controls/advanced-search/advanced-search.component.mjs +156 -0
  4. package/esm2022/lib/controls/advanced-search/models.mjs +109 -0
  5. package/esm2022/lib/controls/avatar-initials/avatar-initials.component.mjs +48 -0
  6. package/{esm2020 → esm2022}/lib/controls/breadcrumb/breadcrumb-item.mjs +14 -14
  7. package/{esm2020 → esm2022}/lib/controls/breadcrumb/breadcrumb.component.mjs +26 -26
  8. package/{esm2020 → esm2022}/lib/controls/collapsible-panel/collapsible-panel.component.mjs +20 -20
  9. package/esm2022/lib/controls/combobox/combobox.component.mjs +121 -0
  10. package/esm2022/lib/controls/content-tile/content-tile-header/content-tile-header.component.mjs +17 -0
  11. package/esm2022/lib/controls/content-tile/content-tile-item/content-tile-item.component.mjs +19 -0
  12. package/esm2022/lib/controls/content-tile/content-tile.component.mjs +63 -0
  13. package/esm2022/lib/controls/date-picker/date-picker.component.mjs +300 -0
  14. package/esm2022/lib/controls/drop-down-menu/drop-down-menu.component.mjs +72 -0
  15. package/{esm2020 → esm2022}/lib/controls/kpi-tile/kpi-tile.component.mjs +43 -43
  16. package/esm2022/lib/controls/language-selection/language-selection.component.mjs +31 -0
  17. package/{esm2020 → esm2022}/lib/controls/list-view/list-column.component.mjs +25 -25
  18. package/{esm2020 → esm2022}/lib/controls/list-view/list-details-section.component.mjs +17 -17
  19. package/{esm2020 → esm2022}/lib/controls/list-view/list-tile.component.mjs +17 -17
  20. package/esm2022/lib/controls/list-view/list-view-empty-state.component.mjs +29 -0
  21. package/esm2022/lib/controls/list-view/list-view.component.mjs +210 -0
  22. package/{esm2020 → esm2022}/lib/controls/nav-links-list/nav-links-list.component.mjs +54 -54
  23. package/esm2022/lib/controls/notifications-indicator/notifications-indicator.component.mjs +79 -0
  24. package/esm2022/lib/controls/pager/pager.component.mjs +130 -0
  25. package/esm2022/lib/controls/progress-bar/progress-bar.component.mjs +46 -0
  26. package/esm2022/lib/controls/side-pane/side-pane.component.mjs +87 -0
  27. package/esm2022/lib/controls/skeleton-loader/skeleton-loader.component.mjs +29 -0
  28. package/esm2022/lib/controls/stats-grid/stats-grid.component.mjs +49 -0
  29. package/{esm2020 → esm2022}/lib/controls/stepper/lib-step-info.directive.mjs +16 -16
  30. package/{esm2020 → esm2022}/lib/controls/stepper/lib-step-label.directive.mjs +16 -16
  31. package/esm2022/lib/controls/stepper/lib-step.component.mjs +81 -0
  32. package/esm2022/lib/controls/stepper/lib-stepper.component.mjs +108 -0
  33. package/{esm2020 → esm2022}/lib/controls/stepper/types/step-selected-event.mjs +3 -3
  34. package/{esm2020 → esm2022}/lib/controls/stepper/types/stepper-type.mjs +11 -11
  35. package/esm2022/lib/controls/tabs/lib-tab-group.component.mjs +66 -0
  36. package/{esm2020 → esm2022}/lib/controls/tabs/lib-tab-label.directive.mjs +16 -16
  37. package/{esm2020 → esm2022}/lib/controls/tabs/lib-tab.component.mjs +57 -57
  38. package/{esm2020 → esm2022}/lib/controls/toaster/toaster-container.component.mjs +28 -28
  39. package/{esm2020 → esm2022}/lib/controls/toaster/toaster.component.mjs +31 -31
  40. package/esm2022/lib/controls/toggle/toggle.component.mjs +64 -0
  41. package/esm2022/lib/controls/toggle-button/toggle-button.component.mjs +87 -0
  42. package/esm2022/lib/controls/toggle-buttons-list/toggle-buttons-list.component.mjs +34 -0
  43. package/esm2022/lib/controls/user-profile-menu/user-profile-menu.component.mjs +71 -0
  44. package/esm2022/lib/directives/click-outside.directive.mjs +189 -0
  45. package/{esm2020 → esm2022}/lib/directives/dynamic-component-host.directive.mjs +17 -17
  46. package/esm2022/lib/helpers/base-list.component.mjs +230 -0
  47. package/esm2022/lib/icons.mjs +36 -0
  48. package/{esm2020 → esm2022}/lib/layouts/shell/shell-footer/shell-footer.component.mjs +19 -19
  49. package/esm2022/lib/layouts/shell/shell-header/shell-header.component.mjs +130 -0
  50. package/esm2022/lib/layouts/shell/shell-layout/shell-layout.component.mjs +90 -0
  51. package/{esm2020 → esm2022}/lib/layouts/shell/shell-sidebar/shell-sidebar.component.mjs +54 -54
  52. package/{esm2020 → esm2022}/lib/layouts/shell/shell-sidebar-header/shell-sidebar-header.component.mjs +45 -45
  53. package/esm2022/lib/layouts/shell/shell-sidebar-layout/shell-sidebar-layout.component.mjs +30 -0
  54. package/{esm2020 → esm2022}/lib/layouts/shell/shell-stacked-layout/shell-stacked-layout.component.mjs +20 -20
  55. package/esm2022/lib/layouts/views/form-layout/form-layout.component.mjs +86 -0
  56. package/esm2022/lib/layouts/views/model-view-layout/model-view-layout.component.mjs +101 -0
  57. package/esm2022/lib/layouts/views/side-view-layout/side-view-layout.component.mjs +106 -0
  58. package/esm2022/lib/layouts/views/view-layout/view-layout.component.mjs +104 -0
  59. package/esm2022/lib/ng-components.module.mjs +320 -0
  60. package/esm2022/lib/pages/auth/auth-callback/auth-callback.component.mjs +30 -0
  61. package/esm2022/lib/pages/auth/auth-renew/auth-renew.component.mjs +31 -0
  62. package/{esm2020 → esm2022}/lib/pages/auth/logged-out/logged-out.component.mjs +28 -28
  63. package/{esm2020 → esm2022}/lib/pages/http-status/error/error.component.mjs +17 -17
  64. package/{esm2020 → esm2022}/lib/pages/http-status/page-not-found/page-not-found.component.mjs +15 -15
  65. package/{esm2020 → esm2022}/lib/pages/http-status/unauthorized/unauthorized.component.mjs +14 -14
  66. package/esm2022/lib/pipes/address.pipe.mjs +21 -0
  67. package/esm2022/lib/pipes/duration-format.pipe.mjs +64 -0
  68. package/esm2022/lib/pipes/short-number.pipe.mjs +43 -0
  69. package/esm2022/lib/services/breadcrumb.service.mjs +174 -0
  70. package/{esm2020 → esm2022}/lib/services/component-loader/component-loader-options.class.mjs +7 -7
  71. package/esm2022/lib/services/component-loader/component-loader.class.mjs +188 -0
  72. package/esm2022/lib/services/component-loader/component-loader.factory.mjs +32 -0
  73. package/{esm2020 → esm2022}/lib/services/component-loader/content-ref.class.mjs +12 -12
  74. package/esm2022/lib/services/modal-service/modal-backdrop-component.mjs +44 -0
  75. package/esm2022/lib/services/modal-service/modal-container-component.mjs +126 -0
  76. package/{esm2020 → esm2022}/lib/services/modal-service/modal-options.class.mjs +35 -35
  77. package/esm2022/lib/services/modal-service/modal-service.mjs +220 -0
  78. package/{esm2020 → esm2022}/lib/services/modal-service/modal-styles.class.mjs +10 -10
  79. package/{esm2020 → esm2022}/lib/services/modal-service/modal.class.mjs +27 -27
  80. package/{esm2020 → esm2022}/lib/services/toaster.service.mjs +26 -26
  81. package/esm2022/lib/services/user-settings.service.mjs +35 -0
  82. package/esm2022/lib/services/utilities.service.mjs +47 -0
  83. package/{esm2020 → esm2022}/lib/tokens.mjs +7 -7
  84. package/esm2022/lib/types.mjs +133 -0
  85. package/{esm2020 → esm2022}/public-api.mjs +78 -70
  86. package/{fesm2020 → fesm2022}/indice-ng-components.mjs +4898 -4592
  87. package/fesm2022/indice-ng-components.mjs.map +1 -0
  88. package/index.d.ts +5 -5
  89. package/lib/controls/advanced-search/advanced-search.component.d.ts +40 -40
  90. package/lib/controls/advanced-search/models.d.ts +91 -91
  91. package/lib/controls/avatar-initials/avatar-initials.component.d.ts +14 -14
  92. package/lib/controls/breadcrumb/breadcrumb-item.d.ts +7 -7
  93. package/lib/controls/breadcrumb/breadcrumb.component.d.ts +12 -12
  94. package/lib/controls/collapsible-panel/collapsible-panel.component.d.ts +10 -10
  95. package/lib/controls/combobox/combobox.component.d.ts +35 -34
  96. package/lib/controls/content-tile/content-tile-header/content-tile-header.component.d.ts +7 -0
  97. package/lib/controls/content-tile/content-tile-item/content-tile-item.component.d.ts +8 -0
  98. package/lib/controls/content-tile/content-tile.component.d.ts +23 -0
  99. package/lib/controls/date-picker/date-picker.component.d.ts +53 -53
  100. package/lib/controls/drop-down-menu/drop-down-menu.component.d.ts +26 -26
  101. package/lib/controls/kpi-tile/kpi-tile.component.d.ts +15 -15
  102. package/lib/controls/language-selection/language-selection.component.d.ts +14 -14
  103. package/lib/controls/list-view/list-column.component.d.ts +9 -9
  104. package/lib/controls/list-view/list-details-section.component.d.ts +7 -7
  105. package/lib/controls/list-view/list-tile.component.d.ts +7 -7
  106. package/lib/controls/list-view/list-view-empty-state.component.d.ts +11 -11
  107. package/lib/controls/list-view/list-view.component.d.ts +62 -61
  108. package/lib/controls/nav-links-list/nav-links-list.component.d.ts +21 -21
  109. package/lib/controls/notifications-indicator/notifications-indicator.component.d.ts +22 -22
  110. package/lib/controls/pager/pager.component.d.ts +36 -36
  111. package/lib/controls/progress-bar/progress-bar.component.d.ts +16 -0
  112. package/lib/controls/side-pane/side-pane.component.d.ts +22 -18
  113. package/lib/controls/skeleton-loader/skeleton-loader.component.d.ts +12 -11
  114. package/lib/controls/stats-grid/stats-grid.component.d.ts +16 -0
  115. package/lib/controls/stepper/lib-step-info.directive.d.ts +8 -8
  116. package/lib/controls/stepper/lib-step-label.directive.d.ts +8 -8
  117. package/lib/controls/stepper/lib-step.component.d.ts +34 -34
  118. package/lib/controls/stepper/lib-stepper.component.d.ts +43 -43
  119. package/lib/controls/stepper/types/step-selected-event.d.ts +12 -12
  120. package/lib/controls/stepper/types/stepper-type.d.ts +10 -10
  121. package/lib/controls/tabs/lib-tab-group.component.d.ts +21 -21
  122. package/lib/controls/tabs/lib-tab-label.directive.d.ts +8 -8
  123. package/lib/controls/tabs/lib-tab.component.d.ts +24 -24
  124. package/lib/controls/toaster/toaster-container.component.d.ts +13 -13
  125. package/lib/controls/toaster/toaster.component.d.ts +15 -15
  126. package/lib/controls/toggle/toggle.component.d.ts +19 -19
  127. package/lib/controls/toggle-button/toggle-button.component.d.ts +25 -25
  128. package/lib/controls/toggle-buttons-list/toggle-buttons-list.component.d.ts +15 -14
  129. package/lib/controls/user-profile-menu/user-profile-menu.component.d.ts +24 -24
  130. package/lib/directives/click-outside.directive.d.ts +40 -40
  131. package/lib/directives/dynamic-component-host.directive.d.ts +9 -9
  132. package/lib/helpers/base-list.component.d.ts +54 -53
  133. package/lib/icons.d.ts +34 -34
  134. package/lib/layouts/shell/shell-footer/shell-footer.component.d.ts +8 -8
  135. package/lib/layouts/shell/shell-header/shell-header.component.d.ts +39 -39
  136. package/lib/layouts/shell/shell-layout/shell-layout.component.d.ts +26 -26
  137. package/lib/layouts/shell/shell-sidebar/shell-sidebar.component.d.ts +20 -20
  138. package/lib/layouts/shell/shell-sidebar-header/shell-sidebar-header.component.d.ts +14 -14
  139. package/lib/layouts/shell/shell-sidebar-layout/shell-sidebar-layout.component.d.ts +15 -15
  140. package/lib/layouts/shell/shell-stacked-layout/shell-stacked-layout.component.d.ts +10 -10
  141. package/lib/layouts/views/form-layout/form-layout.component.d.ts +26 -24
  142. package/lib/layouts/views/model-view-layout/model-view-layout.component.d.ts +42 -42
  143. package/lib/layouts/views/side-view-layout/side-view-layout.component.d.ts +29 -28
  144. package/lib/layouts/views/view-layout/view-layout.component.d.ts +31 -31
  145. package/lib/ng-components.module.d.ts +71 -65
  146. package/lib/pages/auth/auth-callback/auth-callback.component.d.ts +13 -13
  147. package/lib/pages/auth/auth-renew/auth-renew.component.d.ts +12 -12
  148. package/lib/pages/auth/logged-out/logged-out.component.d.ts +12 -12
  149. package/lib/pages/http-status/error/error.component.d.ts +8 -8
  150. package/lib/pages/http-status/page-not-found/page-not-found.component.d.ts +8 -8
  151. package/lib/pages/http-status/unauthorized/unauthorized.component.d.ts +8 -8
  152. package/lib/pipes/address.pipe.d.ts +8 -8
  153. package/lib/pipes/duration-format.pipe.d.ts +8 -8
  154. package/lib/pipes/short-number.pipe.d.ts +7 -0
  155. package/lib/services/breadcrumb.service.d.ts +29 -29
  156. package/lib/services/component-loader/component-loader-options.class.d.ts +30 -30
  157. package/lib/services/component-loader/component-loader.class.d.ts +92 -92
  158. package/lib/services/component-loader/component-loader.factory.d.ts +24 -24
  159. package/lib/services/component-loader/content-ref.class.d.ts +12 -12
  160. package/lib/services/modal-service/modal-backdrop-component.d.ts +20 -20
  161. package/lib/services/modal-service/modal-container-component.d.ts +33 -33
  162. package/lib/services/modal-service/modal-options.class.d.ts +81 -81
  163. package/lib/services/modal-service/modal-service.d.ts +58 -58
  164. package/lib/services/modal-service/modal-styles.class.d.ts +10 -10
  165. package/lib/services/modal-service/modal.class.d.ts +43 -43
  166. package/lib/services/toaster.service.d.ts +11 -11
  167. package/lib/services/user-settings.service.d.ts +13 -13
  168. package/lib/services/utilities.service.d.ts +11 -11
  169. package/lib/tokens.d.ts +10 -10
  170. package/lib/types.d.ts +179 -177
  171. package/package.json +14 -21
  172. package/public-api.d.ts +68 -60
  173. package/esm2020/lib/controls/advanced-search/advanced-search.component.mjs +0 -156
  174. package/esm2020/lib/controls/advanced-search/models.mjs +0 -109
  175. package/esm2020/lib/controls/avatar-initials/avatar-initials.component.mjs +0 -48
  176. package/esm2020/lib/controls/combobox/combobox.component.mjs +0 -117
  177. package/esm2020/lib/controls/date-picker/date-picker.component.mjs +0 -292
  178. package/esm2020/lib/controls/drop-down-menu/drop-down-menu.component.mjs +0 -72
  179. package/esm2020/lib/controls/language-selection/language-selection.component.mjs +0 -31
  180. package/esm2020/lib/controls/list-view/list-view-empty-state.component.mjs +0 -29
  181. package/esm2020/lib/controls/list-view/list-view.component.mjs +0 -206
  182. package/esm2020/lib/controls/notifications-indicator/notifications-indicator.component.mjs +0 -79
  183. package/esm2020/lib/controls/pager/pager.component.mjs +0 -130
  184. package/esm2020/lib/controls/side-pane/side-pane.component.mjs +0 -72
  185. package/esm2020/lib/controls/skeleton-loader/skeleton-loader.component.mjs +0 -25
  186. package/esm2020/lib/controls/stepper/lib-step.component.mjs +0 -81
  187. package/esm2020/lib/controls/stepper/lib-stepper.component.mjs +0 -108
  188. package/esm2020/lib/controls/tabs/lib-tab-group.component.mjs +0 -66
  189. package/esm2020/lib/controls/toggle/toggle.component.mjs +0 -64
  190. package/esm2020/lib/controls/toggle-button/toggle-button.component.mjs +0 -87
  191. package/esm2020/lib/controls/toggle-buttons-list/toggle-buttons-list.component.mjs +0 -31
  192. package/esm2020/lib/controls/user-profile-menu/user-profile-menu.component.mjs +0 -71
  193. package/esm2020/lib/directives/click-outside.directive.mjs +0 -189
  194. package/esm2020/lib/helpers/base-list.component.mjs +0 -226
  195. package/esm2020/lib/icons.mjs +0 -36
  196. package/esm2020/lib/layouts/shell/shell-header/shell-header.component.mjs +0 -130
  197. package/esm2020/lib/layouts/shell/shell-layout/shell-layout.component.mjs +0 -90
  198. package/esm2020/lib/layouts/shell/shell-sidebar-layout/shell-sidebar-layout.component.mjs +0 -30
  199. package/esm2020/lib/layouts/views/form-layout/form-layout.component.mjs +0 -80
  200. package/esm2020/lib/layouts/views/model-view-layout/model-view-layout.component.mjs +0 -101
  201. package/esm2020/lib/layouts/views/side-view-layout/side-view-layout.component.mjs +0 -98
  202. package/esm2020/lib/layouts/views/view-layout/view-layout.component.mjs +0 -104
  203. package/esm2020/lib/ng-components.module.mjs +0 -288
  204. package/esm2020/lib/pages/auth/auth-callback/auth-callback.component.mjs +0 -30
  205. package/esm2020/lib/pages/auth/auth-renew/auth-renew.component.mjs +0 -31
  206. package/esm2020/lib/pipes/address.pipe.mjs +0 -21
  207. package/esm2020/lib/pipes/duration-format.pipe.mjs +0 -64
  208. package/esm2020/lib/services/breadcrumb.service.mjs +0 -174
  209. package/esm2020/lib/services/component-loader/component-loader.class.mjs +0 -188
  210. package/esm2020/lib/services/component-loader/component-loader.factory.mjs +0 -32
  211. package/esm2020/lib/services/modal-service/modal-backdrop-component.mjs +0 -44
  212. package/esm2020/lib/services/modal-service/modal-container-component.mjs +0 -126
  213. package/esm2020/lib/services/modal-service/modal-service.mjs +0 -220
  214. package/esm2020/lib/services/user-settings.service.mjs +0 -35
  215. package/esm2020/lib/services/utilities.service.mjs +0 -47
  216. package/esm2020/lib/types.mjs +0 -132
  217. package/fesm2015/indice-ng-components.mjs +0 -4852
  218. package/fesm2015/indice-ng-components.mjs.map +0 -1
  219. package/fesm2020/indice-ng-components.mjs.map +0 -1
@@ -1,292 +0,0 @@
1
- import { getLocaleMonthNames, FormStyle, TranslationWidth, getLocaleDayNames } from '@angular/common';
2
- import { Component, EventEmitter, forwardRef, Inject, Input, LOCALE_ID, Output, ViewChild } from '@angular/core';
3
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common";
6
- import * as i2 from "../../directives/click-outside.directive";
7
- // freaksly simple date picker : https://tailwind-elements.com/docs/standard/forms/datepicker/
8
- export class DatepickerComponent {
9
- constructor(locale) {
10
- this.locale = locale;
11
- this.readonly = false;
12
- this.disabled = false;
13
- this.inline = false;
14
- this.displayFormat = 'dd/MM/yyyy';
15
- this.placeholder = '';
16
- this.value = null;
17
- this.valueChange = new EventEmitter();
18
- this.minDate = undefined;
19
- this.maxDate = undefined;
20
- this.showCalendar = false;
21
- this.showYears = false;
22
- this.monthNames = getLocaleMonthNames(this.locale, FormStyle.Standalone, TranslationWidth.Wide);
23
- this.dayNames = getLocaleDayNames(this.locale, FormStyle.Standalone, TranslationWidth.Abbreviated);
24
- this.month = -1;
25
- this.year = -1;
26
- this.calendarDates = [];
27
- this.calendarYears = [];
28
- this.showCalendarYears = [];
29
- this.blankDays = [];
30
- this.calendarYearPage = 1;
31
- this.yearsPerPage = 30;
32
- this.onChange$ = undefined;
33
- this.onTouched$ = undefined;
34
- }
35
- ngOnInit() {
36
- let today = new Date();
37
- this.month = today.getMonth();
38
- this.year = today.getFullYear();
39
- this.calendarDates = [{ day: this.value, today: this.value, selected: this.value }];
40
- this.calendarYears = [{ year: this.value?.getFullYear(), today: this.value, selected: this.value }];
41
- const yearsArray = [];
42
- for (let i = 1950; i <= today.getFullYear() + 2; i++) {
43
- yearsArray.push({ year: i, today: this.compareDates(today, null, i), selected: i == this.value?.getFullYear() });
44
- }
45
- this.calendarYears = yearsArray;
46
- this.showCalendarYears = this.paginate(this.calendarYears, 1);
47
- this.calcDays();
48
- }
49
- writeValue(obj) {
50
- if (obj) {
51
- this.value = new Date(obj);
52
- this.month = this.value.getMonth();
53
- this.year = this.value.getFullYear();
54
- }
55
- }
56
- registerOnChange(fn) {
57
- this.onChange$ = fn;
58
- }
59
- registerOnTouched(fn) {
60
- this.onTouched$ = fn;
61
- }
62
- onBlur(event) {
63
- if (this.onTouched$) {
64
- this.onTouched$();
65
- }
66
- this.getDateFromInput();
67
- }
68
- selectDateValue(date) {
69
- // This should be in UTC
70
- if (!this.outOfRangeDate(date.day)) {
71
- let selectedDate = new Date(this.year, this.month, date.day, 3, 0, 0, 0);
72
- this.value = selectedDate;
73
- this.valueChange.emit(this.value);
74
- if (this.onChange$) {
75
- this.onChange$(this.value);
76
- }
77
- this.updateDays();
78
- if (this.onTouched$) {
79
- this.onTouched$();
80
- }
81
- this.calcDays();
82
- this.showCalendar = false;
83
- }
84
- }
85
- selectYearValue(year) {
86
- // This should be in UTC
87
- const tempYear = this.year;
88
- this.year = year.year;
89
- if (!this.outOfRangeDate(this.calendarDates?.find(x => x.selected == true) ?? { day: 1 })) {
90
- let selectedDate = new Date(year.year, this.month ?? 1, this.calendarDates?.find(x => x.selected == true).day ?? 1, 3, 0, 0, 0);
91
- this.value = selectedDate;
92
- this.valueChange.emit(this.value);
93
- if (this.onChange$) {
94
- this.onChange$(this.value);
95
- }
96
- this.updateDays();
97
- if (this.onTouched$) {
98
- this.onTouched$();
99
- }
100
- this.showYears = false;
101
- this.showCalendar = true;
102
- this.calcDays();
103
- }
104
- else {
105
- this.year = tempYear;
106
- this.showYears = false;
107
- this.showCalendar = true;
108
- }
109
- }
110
- previousMonth() {
111
- if (this.month !== 0) {
112
- this.month = this.month - 1;
113
- this.calcDays();
114
- }
115
- else {
116
- this.month = 11;
117
- this.year = this.year - 1;
118
- this.calcDays();
119
- }
120
- if (this.onTouched$) {
121
- this.onTouched$();
122
- }
123
- }
124
- nextMonth() {
125
- if (this.month !== 11) {
126
- this.month = this.month + 1;
127
- this.calcDays();
128
- }
129
- else {
130
- this.month = 0;
131
- this.year = this.year + 1;
132
- this.calcDays();
133
- }
134
- if (this.onTouched$) {
135
- this.onTouched$();
136
- }
137
- }
138
- previousYear() {
139
- this.showCalendarYears = this.paginate(this.calendarYears, this.calendarYearPage > 1 ? --this.calendarYearPage : 1);
140
- this.calcDays();
141
- if (this.onTouched$) {
142
- this.onTouched$();
143
- }
144
- }
145
- nextYear() {
146
- this.showCalendarYears = this.paginate(this.calendarYears, this.calendarYearPage <= this.calendarYears.length / this.yearsPerPage
147
- ? ++this.calendarYearPage
148
- : this.calendarYearPage);
149
- this.calcDays();
150
- if (this.onTouched$) {
151
- this.onTouched$();
152
- }
153
- }
154
- compareDates(date1, day, year) {
155
- if (!date1) {
156
- return false;
157
- }
158
- const d = new Date(year ?? this.year, this.month, day ?? this.value?.getDay());
159
- return date1.toDateString() === d.toDateString();
160
- }
161
- ;
162
- calcDays() {
163
- const daysInMonth = new Date(this.year, this.month + 1, 0).getDate();
164
- // find where to start calendar day of week
165
- const dayOfWeek = new Date(this.year, this.month).getDay();
166
- const blankdaysArray = new Array();
167
- for (var i = 1; i <= dayOfWeek; i++) {
168
- // check if month is February
169
- blankdaysArray.push(this.month != 2 ? (32 - i) : (29 - i));
170
- blankdaysArray.reverse().sort();
171
- }
172
- const daysArray = [];
173
- const today = new Date();
174
- for (var i = 1; i <= daysInMonth; i++) {
175
- daysArray.push({ day: i, today: this.compareDates(today, i, null), selected: this.compareDates(this.value ?? today, i, null) });
176
- }
177
- const yearsArray = [];
178
- for (let i = 1950; i <= today.getFullYear() + 2; i++) {
179
- yearsArray.push({ year: i, today: this.compareDates(today, null, i), selected: i == this.year });
180
- }
181
- this.calendarYears = yearsArray;
182
- this.blankDays = blankdaysArray;
183
- this.calendarDates = daysArray;
184
- }
185
- updateDays() {
186
- const today = new Date();
187
- this.calendarDates.forEach(d => {
188
- d.today = this.compareDates(today, d, this.year);
189
- d.selected = this.compareDates(this.value, d, this.year);
190
- });
191
- }
192
- paginate(array, page_number) {
193
- return array.slice((page_number - 1) * this.yearsPerPage, page_number * this.yearsPerPage);
194
- }
195
- getDateFromInput() {
196
- if (this.dateInput?.nativeElement.value !== '' && !this.inline) {
197
- var dateParts = this.dateInput?.nativeElement.value.split("/");
198
- let dateInGrFormat = new Date(+dateParts[2], dateParts[1] - 1, +dateParts[0], 3, 0, 0);
199
- if (dateInGrFormat.toString() !== 'Invalid Date') {
200
- this.writeValue(dateInGrFormat);
201
- this.calcDays();
202
- this.valueChange.emit(dateInGrFormat);
203
- }
204
- if (this.onChange$) {
205
- this.onChange$(this.value);
206
- }
207
- this.updateDays();
208
- if (this.onTouched$) {
209
- this.onTouched$();
210
- }
211
- }
212
- this.showCalendar = false;
213
- }
214
- openYears() {
215
- this.showYears = !this.showYears;
216
- this.calendarYearPage = Math.ceil(this.calendarYears.map(x => x.year).indexOf(this.year) / this.yearsPerPage);
217
- this.showCalendarYears = this.paginate(this.calendarYears, this.calendarYearPage !== 0 ? this.calendarYearPage : 1);
218
- this.calcDays();
219
- }
220
- openCalendar() {
221
- this.showCalendar = !this.showCalendar;
222
- this.calcDays();
223
- }
224
- closeCalendar() {
225
- this.showCalendar = false;
226
- this.getDateFromInput();
227
- }
228
- outOfRangeDate(date) {
229
- let outOfRange = false;
230
- if (this.minDate || this.maxDate) {
231
- const d = new Date(this.year, this.month, date.day);
232
- const dateInMillis = d.getTime();
233
- if (this.minDate) {
234
- let minDate = this.minDate.getTime();
235
- if (dateInMillis < minDate && this.minDate.toDateString() !== d.toDateString()) {
236
- outOfRange = true;
237
- }
238
- }
239
- if (this.maxDate) {
240
- let maxDate = this.maxDate.getTime();
241
- if (dateInMillis > maxDate && this.maxDate.toDateString() !== d.toDateString()) {
242
- outOfRange = true;
243
- }
244
- }
245
- }
246
- return outOfRange;
247
- }
248
- }
249
- DatepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: DatepickerComponent, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component });
250
- DatepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.0", 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: [
251
- {
252
- provide: NG_VALUE_ACCESSOR,
253
- useExisting: forwardRef(() => DatepickerComponent),
254
- multi: true
255
- }
256
- ], 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>", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }] });
257
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: DatepickerComponent, decorators: [{
258
- type: Component,
259
- args: [{ selector: 'lib-date-picker', providers: [
260
- {
261
- provide: NG_VALUE_ACCESSOR,
262
- useExisting: forwardRef(() => DatepickerComponent),
263
- multi: true
264
- }
265
- ], 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>" }]
266
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
267
- type: Inject,
268
- args: [LOCALE_ID]
269
- }] }]; }, propDecorators: { readonly: [{
270
- type: Input
271
- }], disabled: [{
272
- type: Input
273
- }], inline: [{
274
- type: Input
275
- }], displayFormat: [{
276
- type: Input,
277
- args: ['display-format']
278
- }], placeholder: [{
279
- type: Input
280
- }], value: [{
281
- type: Input
282
- }], valueChange: [{
283
- type: Output
284
- }], dateInput: [{
285
- type: ViewChild,
286
- args: ['dateInput']
287
- }], minDate: [{
288
- type: Input
289
- }], maxDate: [{
290
- type: Input
291
- }] } });
292
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEcsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckksT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBRXpFLDhGQUE4RjtBQVk5RixNQUFNLE9BQU8sbUJBQW1CO0lBMkM5QixZQUFzQyxNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQTFDM0MsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFDUixrQkFBYSxHQUF1QixZQUFZLENBQUM7UUFDakUsZ0JBQVcsR0FBdUIsRUFBRSxDQUFDO1FBQ3JDLFVBQUssR0FBNEIsSUFBSSxDQUFDO1FBQ3JDLGdCQUFXLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFNUQsWUFBTyxHQUFxQixTQUFTLENBQUM7UUFDdEMsWUFBTyxHQUFxQixTQUFTLENBQUM7UUFDeEMsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsY0FB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QUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtvQkFDOUUsVUFBVSxHQUFHLElBQUksQ0FBQztpQkFDbkI7YUFDRjtTQUNGO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQzs7Z0hBclFVLG1CQUFtQixrQkEyQ1YsU0FBUztvR0EzQ2xCLG1CQUFtQixxU0FSbkI7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztZQUNsRCxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0Ysa0lDZEgscTRKQXNJTTsyRkR0SE8sbUJBQW1CO2tCQVgvQixTQUFTOytCQUNFLGlCQUFpQixhQUVoQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQzs0QkFDbEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7OzBCQTZDWSxNQUFNOzJCQUFDLFNBQVM7NENBMUNwQixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNtQixhQUFhO3NCQUFyQyxLQUFLO3VCQUFDLGdCQUFnQjtnQkFDZCxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNpQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ2IsT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldExvY2FsZU1vbnRoTmFtZXMsIEZvcm1TdHlsZSwgVHJhbnNsYXRpb25XaWR0aCwgZ2V0TG9jYWxlRGF5TmFtZXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSW5qZWN0LCBJbnB1dCwgTE9DQUxFX0lELCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbi8vIGZyZWFrc2x5IHNpbXBsZSBkYXRlIHBpY2tlciA6IGh0dHBzOi8vdGFpbHdpbmQtZWxlbWVudHMuY29tL2RvY3Mvc3RhbmRhcmQvZm9ybXMvZGF0ZXBpY2tlci9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItZGF0ZS1waWNrZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRlcGlja2VyQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXRlcGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlubGluZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgnZGlzcGxheS1mb3JtYXQnKSBkaXNwbGF5Rm9ybWF0OiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnZGQvTU0veXl5eSc7XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcnO1xyXG4gIEBJbnB1dCgpIHZhbHVlOiBEYXRlIHwgdW5kZWZpbmVkIHwgbnVsbCA9IG51bGw7XHJcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XHJcbiAgQFZpZXdDaGlsZCgnZGF0ZUlucHV0JykgZGF0ZUlucHV0OiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIG1pbkRhdGU6IERhdGUgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgbWF4RGF0ZTogRGF0ZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgc2hvd0NhbGVuZGFyID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dZZWFycyA9IGZhbHNlO1xyXG4gIHB1YmxpYyBtb250aE5hbWVzID0gZ2V0TG9jYWxlTW9udGhOYW1lcyh0aGlzLmxvY2FsZSwgRm9ybVN0eWxlLlN0YW5kYWxvbmUsIFRyYW5zbGF0aW9uV2lkdGguV2lkZSk7XHJcbiAgcHVibGljIGRheU5hbWVzID0gZ2V0TG9jYWxlRGF5TmFtZXModGhpcy5sb2NhbGUsIEZvcm1TdHlsZS5TdGFuZGFsb25lLCBUcmFuc2xhdGlvbldpZHRoLkFiYnJldmlhdGVkKTtcclxuXHJcbiAgcHVibGljIG1vbnRoOiBudW1iZXIgPSAtMTtcclxuICBwdWJsaWMgeWVhcjogbnVtYmVyID0gLTE7XHJcbiAgcHVibGljIGNhbGVuZGFyRGF0ZXM6IGFueVtdID0gW107XHJcbiAgcHVibGljIGNhbGVuZGFyWWVhcnM6IGFueVtdID0gW107XHJcbiAgcHVibGljIHNob3dDYWxlbmRhclllYXJzOiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBibGFua0RheXM6IGFueVtdID0gW107XHJcbiAgcHVibGljIGNhbGVuZGFyWWVhclBhZ2UgPSAxO1xyXG4gIHByaXZhdGUgeWVhcnNQZXJQYWdlID0gMzA7XHJcblxyXG4gIHByaXZhdGUgb25DaGFuZ2UkOiBhbnkgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBvblRvdWNoZWQkOiBhbnkgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgbGV0IHRvZGF5ID0gbmV3IERhdGUoKTtcclxuICAgIHRoaXMubW9udGggPSB0b2RheS5nZXRNb250aCgpO1xyXG4gICAgdGhpcy55ZWFyID0gdG9kYXkuZ2V0RnVsbFllYXIoKTtcclxuICAgIHRoaXMuY2FsZW5kYXJEYXRlcyA9IFt7IGRheTogdGhpcy52YWx1ZSwgdG9kYXk6IHRoaXMudmFsdWUsIHNlbGVjdGVkOiB0aGlzLnZhbHVlIH1dO1xyXG4gICAgdGhpcy5jYWxlbmRhclllYXJzID0gW3sgeWVhcjogdGhpcy52YWx1ZT8uZ2V0RnVsbFllYXIoKSwgdG9kYXk6IHRoaXMudmFsdWUsIHNlbGVjdGVkOiB0aGlzLnZhbHVlIH1dO1xyXG4gICAgY29uc3QgeWVhcnNBcnJheSA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDE5NTA7IGkgPD0gdG9kYXkuZ2V0RnVsbFllYXIoKSArIDI7IGkrKykge1xyXG4gICAgICB5ZWFyc0FycmF5LnB1c2goeyB5ZWFyOiBpLCB0b2RheTogdGhpcy5jb21wYXJlRGF0ZXModG9kYXksIG51bGwsIGkpLCBzZWxlY3RlZDogaSA9PSB0aGlzLnZhbHVlPy5nZXRGdWxsWWVhcigpIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jYWxlbmRhclllYXJzID0geWVhcnNBcnJheTtcclxuICAgIHRoaXMuc2hvd0NhbGVuZGFyWWVhcnMgPSB0aGlzLnBhZ2luYXRlKHRoaXMuY2FsZW5kYXJZZWFycywgMSk7XHJcbiAgICB0aGlzLmNhbGNEYXlzKCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KExPQ0FMRV9JRCkgcHVibGljIGxvY2FsZTogc3RyaW5nKSB7IH1cclxuXHJcbiAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKG9iaikge1xyXG4gICAgICB0aGlzLnZhbHVlID0gbmV3IERhdGUob2JqKTtcclxuICAgICAgdGhpcy5tb250aCA9IHRoaXMudmFsdWUuZ2V0TW9udGgoKTtcclxuICAgICAgdGhpcy55ZWFyID0gdGhpcy52YWx1ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKF86IGFueSkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSQgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkJCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQmx1cihldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5vblRvdWNoZWQkKSB7XHJcbiAgICAgIHRoaXMub25Ub3VjaGVkJCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZXREYXRlRnJvbUlucHV0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0RGF0ZVZhbHVlKGRhdGU6IGFueSk6IHZvaWQge1xyXG4gICAgLy8gVGhpcyBzaG91bGQgYmUgaW4gVVRDXHJcbiAgICBpZiAoIXRoaXMub3V0T2ZSYW5nZURhdGUoZGF0ZS5kYXkpKSB7XHJcbiAgICAgIGxldCBzZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSh0aGlzLnllYXIsIHRoaXMubW9udGgsIGRhdGUuZGF5LCAzLCAwLCAwLCAwKTtcclxuICAgICAgdGhpcy52YWx1ZSA9IHNlbGVjdGVkRGF0ZTtcclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xyXG4gICAgICBpZiAodGhpcy5vbkNoYW5nZSQpIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlJCh0aGlzLnZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnVwZGF0ZURheXMoKTtcclxuICAgICAgaWYgKHRoaXMub25Ub3VjaGVkJCkge1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkJCgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2FsY0RheXMoKTtcclxuICAgICAgdGhpcy5zaG93Q2FsZW5kYXIgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RZZWFyVmFsdWUoeWVhcjogYW55KTogdm9pZCB7XHJcbiAgICAvLyBUaGlzIHNob3VsZCBiZSBpbiBVVENcclxuICAgIGNvbnN0IHRlbXBZZWFyID0gdGhpcy55ZWFyO1xyXG4gICAgdGhpcy55ZWFyID0geWVhci55ZWFyO1xyXG4gICAgaWYgKCF0aGlzLm91dE9mUmFuZ2VEYXRlKHRoaXMuY2FsZW5kYXJEYXRlcz8uZmluZCh4ID0+IHguc2VsZWN0ZWQgPT0gdHJ1ZSkgPz8geyBkYXk6IDEgfSkpIHtcclxuICAgICAgbGV0IHNlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKHllYXIueWVhciwgdGhpcy5tb250aCA/PyAxLCB0aGlzLmNhbGVuZGFyRGF0ZXM/LmZpbmQoeCA9PiB4LnNlbGVjdGVkID09IHRydWUpLmRheSA/PyAxLCAzLCAwLCAwLCAwKTtcclxuICAgICAgdGhpcy52YWx1ZSA9IHNlbGVjdGVkRGF0ZTtcclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xyXG4gICAgICBpZiAodGhpcy5vbkNoYW5nZSQpIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlJCh0aGlzLnZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnVwZGF0ZURheXMoKTtcclxuICAgICAgaWYgKHRoaXMub25Ub3VjaGVkJCkge1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkJCgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2hvd1llYXJzID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2hvd0NhbGVuZGFyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jYWxjRGF5cygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy55ZWFyID0gdGVtcFllYXI7XHJcbiAgICAgIHRoaXMuc2hvd1llYXJzID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2hvd0NhbGVuZGFyID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBwcmV2aW91c01vbnRoKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubW9udGggIT09IDApIHtcclxuICAgICAgdGhpcy5tb250aCA9IHRoaXMubW9udGggLSAxO1xyXG4gICAgICB0aGlzLmNhbGNEYXlzKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm1vbnRoID0gMTE7XHJcbiAgICAgIHRoaXMueWVhciA9IHRoaXMueWVhciAtIDE7XHJcbiAgICAgIHRoaXMuY2FsY0RheXMoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9uVG91Y2hlZCQpIHtcclxuICAgICAgdGhpcy5vblRvdWNoZWQkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmV4dE1vbnRoKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubW9udGggIT09IDExKSB7XHJcbiAgICAgIHRoaXMubW9udGggPSB0aGlzLm1vbnRoICsgMTtcclxuICAgICAgdGhpcy5jYWxjRGF5cygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5tb250aCA9IDA7XHJcbiAgICAgIHRoaXMueWVhciA9IHRoaXMueWVhciArIDE7XHJcbiAgICAgIHRoaXMuY2FsY0RheXMoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9uVG91Y2hlZCQpIHtcclxuICAgICAgdGhpcy5vblRvdWNoZWQkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcHJldmlvdXNZZWFyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93Q2FsZW5kYXJZZWFycyA9IHRoaXMucGFnaW5hdGUoXHJcbiAgICAgIHRoaXMuY2FsZW5kYXJZZWFycyxcclxuICAgICAgdGhpcy5jYWxlbmRhclllYXJQYWdlID4gMSA/IC0tdGhpcy5jYWxlbmRhclllYXJQYWdlIDogMSk7XHJcbiAgICB0aGlzLmNhbGNEYXlzKCk7XHJcbiAgICBpZiAodGhpcy5vblRvdWNoZWQkKSB7XHJcbiAgICAgIHRoaXMub25Ub3VjaGVkJCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG5leHRZZWFyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93Q2FsZW5kYXJZZWFycyA9IHRoaXMucGFnaW5hdGUoXHJcbiAgICAgIHRoaXMuY2FsZW5kYXJZZWFycyxcclxuICAgICAgdGhpcy5jYWxlbmRhclllYXJQYWdlIDw9IHRoaXMuY2FsZW5kYXJZZWFycy5sZW5ndGggLyB0aGlzLnllYXJzUGVyUGFnZVxyXG4gICAgICAgID8gKyt0aGlzLmNhbGVuZGFyWWVhclBhZ2VcclxuICAgICAgICA6IHRoaXMuY2FsZW5kYXJZZWFyUGFnZSk7XHJcbiAgICB0aGlzLmNhbGNEYXlzKCk7XHJcbiAgICBpZiAodGhpcy5vblRvdWNoZWQkKSB7XHJcbiAgICAgIHRoaXMub25Ub3VjaGVkJCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb21wYXJlRGF0ZXMoZGF0ZTE6IERhdGUgfCB1bmRlZmluZWQgfCBudWxsLCBkYXk6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQsIHllYXI6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcclxuICAgIGlmICghZGF0ZTEpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZCA9IG5ldyBEYXRlKHllYXIgPz8gdGhpcy55ZWFyLCB0aGlzLm1vbnRoLCBkYXkgPz8gdGhpcy52YWx1ZT8uZ2V0RGF5KCkpO1xyXG4gICAgcmV0dXJuIGRhdGUxLnRvRGF0ZVN0cmluZygpID09PSBkLnRvRGF0ZVN0cmluZygpO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgY2FsY0RheXMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBkYXlzSW5Nb250aCA9IG5ldyBEYXRlKHRoaXMueWVhciwgdGhpcy5tb250aCArIDEsIDApLmdldERhdGUoKTtcclxuICAgIC8vIGZpbmQgd2hlcmUgdG8gc3RhcnQgY2FsZW5kYXIgZGF5IG9mIHdlZWtcclxuICAgIGNvbnN0IGRheU9mV2VlayA9IG5ldyBEYXRlKHRoaXMueWVhciwgdGhpcy5tb250aCkuZ2V0RGF5KCk7XHJcbiAgICBjb25zdCBibGFua2RheXNBcnJheSA9IG5ldyBBcnJheTxudW1iZXI+KCk7XHJcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8PSBkYXlPZldlZWs7IGkrKykge1xyXG4gICAgICAvLyBjaGVjayBpZiBtb250aCBpcyBGZWJydWFyeVxyXG4gICAgICBibGFua2RheXNBcnJheS5wdXNoKHRoaXMubW9udGggIT0gMiA/ICgzMiAtIGkpIDogKDI5IC0gaSkpO1xyXG4gICAgICBibGFua2RheXNBcnJheS5yZXZlcnNlKCkuc29ydCgpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZGF5c0FycmF5ID0gW107XHJcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8PSBkYXlzSW5Nb250aDsgaSsrKSB7XHJcbiAgICAgIGRheXNBcnJheS5wdXNoKHsgZGF5OiBpLCB0b2RheTogdGhpcy5jb21wYXJlRGF0ZXModG9kYXksIGksIG51bGwpLCBzZWxlY3RlZDogdGhpcy5jb21wYXJlRGF0ZXModGhpcy52YWx1ZSA/PyB0b2RheSwgaSwgbnVsbCkgfSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB5ZWFyc0FycmF5ID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMTk1MDsgaSA8PSB0b2RheS5nZXRGdWxsWWVhcigpICsgMjsgaSsrKSB7XHJcbiAgICAgIHllYXJzQXJyYXkucHVzaCh7IHllYXI6IGksIHRvZGF5OiB0aGlzLmNvbXBhcmVEYXRlcyh0b2RheSwgbnVsbCwgaSksIHNlbGVjdGVkOiBpID09IHRoaXMueWVhciB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuY2FsZW5kYXJZZWFycyA9IHllYXJzQXJyYXk7XHJcbiAgICB0aGlzLmJsYW5rRGF5cyA9IGJsYW5rZGF5c0FycmF5O1xyXG4gICAgdGhpcy5jYWxlbmRhckRhdGVzID0gZGF5c0FycmF5O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVEYXlzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gICAgdGhpcy5jYWxlbmRhckRhdGVzLmZvckVhY2goZCA9PiB7XHJcbiAgICAgIGQudG9kYXkgPSB0aGlzLmNvbXBhcmVEYXRlcyh0b2RheSwgZCwgdGhpcy55ZWFyKTtcclxuICAgICAgZC5zZWxlY3RlZCA9IHRoaXMuY29tcGFyZURhdGVzKHRoaXMudmFsdWUsIGQsIHRoaXMueWVhcik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcGFnaW5hdGUoYXJyYXk6IGFueVtdLCBwYWdlX251bWJlcjogbnVtYmVyKTogYW55W10ge1xyXG4gICAgcmV0dXJuIGFycmF5LnNsaWNlKChwYWdlX251bWJlciAtIDEpICogdGhpcy55ZWFyc1BlclBhZ2UsIHBhZ2VfbnVtYmVyICogdGhpcy55ZWFyc1BlclBhZ2UpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXREYXRlRnJvbUlucHV0KCkge1xyXG4gICAgaWYgKHRoaXMuZGF0ZUlucHV0Py5uYXRpdmVFbGVtZW50LnZhbHVlICE9PSAnJyAmJiAhdGhpcy5pbmxpbmUpIHtcclxuICAgICAgdmFyIGRhdGVQYXJ0cyA9IHRoaXMuZGF0ZUlucHV0Py5uYXRpdmVFbGVtZW50LnZhbHVlLnNwbGl0KFwiL1wiKTtcclxuICAgICAgbGV0IGRhdGVJbkdyRm9ybWF0ID0gbmV3IERhdGUoK2RhdGVQYXJ0c1syXSwgZGF0ZVBhcnRzWzFdIC0gMSwgK2RhdGVQYXJ0c1swXSwgMywgMCwgMCk7XHJcbiAgICAgIGlmIChkYXRlSW5HckZvcm1hdC50b1N0cmluZygpICE9PSAnSW52YWxpZCBEYXRlJykge1xyXG4gICAgICAgIHRoaXMud3JpdGVWYWx1ZShkYXRlSW5HckZvcm1hdClcclxuICAgICAgICB0aGlzLmNhbGNEYXlzKCk7XHJcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KGRhdGVJbkdyRm9ybWF0KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5vbkNoYW5nZSQpIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlJCh0aGlzLnZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnVwZGF0ZURheXMoKTtcclxuICAgICAgaWYgKHRoaXMub25Ub3VjaGVkJCkge1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkJCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnNob3dDYWxlbmRhciA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW5ZZWFycygpIHtcclxuICAgIHRoaXMuc2hvd1llYXJzID0gIXRoaXMuc2hvd1llYXJzO1xyXG4gICAgdGhpcy5jYWxlbmRhclllYXJQYWdlID0gTWF0aC5jZWlsKHRoaXMuY2FsZW5kYXJZZWFycy5tYXAoeCA9PiB4LnllYXIpLmluZGV4T2YodGhpcy55ZWFyKSAvIHRoaXMueWVhcnNQZXJQYWdlKTtcclxuICAgIHRoaXMuc2hvd0NhbGVuZGFyWWVhcnMgPSB0aGlzLnBhZ2luYXRlKHRoaXMuY2FsZW5kYXJZZWFycywgdGhpcy5jYWxlbmRhclllYXJQYWdlICE9PSAwID8gdGhpcy5jYWxlbmRhclllYXJQYWdlIDogMSk7XHJcbiAgICB0aGlzLmNhbGNEYXlzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3BlbkNhbGVuZGFyKCkge1xyXG4gICAgdGhpcy5zaG93Q2FsZW5kYXIgPSAhdGhpcy5zaG93Q2FsZW5kYXI7XHJcbiAgICB0aGlzLmNhbGNEYXlzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xvc2VDYWxlbmRhcigpIHtcclxuICAgIHRoaXMuc2hvd0NhbGVuZGFyID0gZmFsc2U7XHJcbiAgICB0aGlzLmdldERhdGVGcm9tSW5wdXQoKTtcclxuICB9XHJcblxyXG4gIG91dE9mUmFuZ2VEYXRlKGRhdGU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IG91dE9mUmFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGlmICh0aGlzLm1pbkRhdGUgfHwgdGhpcy5tYXhEYXRlKSB7XHJcbiAgICAgIGNvbnN0IGQgPSBuZXcgRGF0ZSh0aGlzLnllYXIsIHRoaXMubW9udGgsIGRhdGUuZGF5KTtcclxuICAgICAgY29uc3QgZGF0ZUluTWlsbGlzID0gZC5nZXRUaW1lKCk7XHJcbiAgICAgIGlmICh0aGlzLm1pbkRhdGUpIHtcclxuICAgICAgICBsZXQgbWluRGF0ZTogbnVtYmVyID0gdGhpcy5taW5EYXRlLmdldFRpbWUoKTtcclxuICAgICAgICBpZiAoZGF0ZUluTWlsbGlzIDwgbWluRGF0ZSAmJiB0aGlzLm1pbkRhdGUudG9EYXRlU3RyaW5nKCkgIT09IGQudG9EYXRlU3RyaW5nKCkpIHtcclxuICAgICAgICAgIG91dE9mUmFuZ2UgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5tYXhEYXRlKSB7XHJcbiAgICAgICAgbGV0IG1heERhdGU6IG51bWJlciA9IHRoaXMubWF4RGF0ZS5nZXRUaW1lKCk7XHJcbiAgICAgICAgaWYgKGRhdGVJbk1pbGxpcyA+IG1heERhdGUgJiYgdGhpcy5tYXhEYXRlLnRvRGF0ZVN0cmluZygpICE9PSBkLnRvRGF0ZVN0cmluZygpKSB7XHJcbiAgICAgICAgICBvdXRPZlJhbmdlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBvdXRPZlJhbmdlO1xyXG4gIH1cclxufSIsIjxkaXYgY2xhc3M9XCJmbGV4XCJcclxuICAgICBbbmdDbGFzc109XCJ7J3JlbGF0aXZlJzogIWlubGluZX1cIlxyXG4gICAgIChjbGlja091dHNpZGUpPVwiY2xvc2VDYWxlbmRhcigpXCI+XHJcblxyXG4gIDxpbnB1dCB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICpuZ0lmPVwiIWlubGluZVwiXHJcbiAgICAgICAgICNkYXRlSW5wdXRcclxuICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgbmFtZT1cImRhdGVJbnB1dFwiXHJcbiAgICAgICAgIChibHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcclxuICAgICAgICAgaWQ9XCJkYXRlSW5wdXRcIlxyXG4gICAgICAgICAoZm9jdXMpPVwic2hvd0NhbGVuZGFyID0gZmFsc2VcIlxyXG4gICAgICAgICBbdmFsdWVdPVwidmFsdWUgfCBkYXRlOiBkaXNwbGF5Rm9ybWF0XCJcclxuICAgICAgICAgY2xhc3M9XCJkZXRhcGlja2VyLWlucHV0XCJcclxuICAgICAgICAgW25nQ2xhc3NdPVwieydjdXJzb3Itbm90LWFsbG93ZWQnOiBkaXNhYmxlZH1cIlxyXG4gICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZGlzYWJsZWQgPyAnJyA6IHBsYWNlaG9sZGVyXCI+XHJcblxyXG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAqbmdJZj1cIiFpbmxpbmVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRlcGlja2VyLWJ1dHRvblwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5DYWxlbmRhcigpXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsnY3Vyc29yLW5vdC1hbGxvd2VkJzogZGlzYWJsZWR9XCI+XHJcbiAgICA8aSBjbGFzcz1cIm1zLUljb24gbXMtSWNvbi0tRGF0ZVRpbWUyXCI+PC9pPlxyXG4gIDwvYnV0dG9uPlxyXG5cclxuICA8ZGl2ICpuZ0lmPVwic2hvd0NhbGVuZGFyIHx8IGlubGluZVwiXHJcbiAgICAgICBbbmdDbGFzc109XCJ7J2Fic29sdXRlJzogIWlubGluZX1cIlxyXG4gICAgICAgY2xhc3M9XCJkYXRlcGlja2VyLWJhY2tncm91bmRcIlxyXG4gICAgICAgc3R5bGU9XCJoZWlnaHQ6MThyZW07bWluLXdpZHRoOjE2cmVtO1wiXHJcbiAgICAgICBuYW1lPVwiY2FsZW5kYXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkYXRlcGlja2VyLWJ0bi13cmFwcGVyXCI+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuWWVhcnMoKVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlcGlja2VyLXNlbGVjdGVkLW1vbnRoXCI+XHJcbiAgICAgICAgICAgIHt7bW9udGhOYW1lc1ttb250aF19fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlcGlja2VyLXNlbGVjdGVkLXllYXJcIj5cclxuICAgICAgICAgICAge3t5ZWFyfX08L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiIXNob3dZZWFyczsgZWxzZSBzaG93WWVhcnNQaWNrZXJUbXBsXCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0ZXBpY2tlci1uYXYtYnRuXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJwcmV2aW91c01vbnRoKCk7XCI+XHJcbiAgICAgICAgICA8c3ZnIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiPlxyXG4gICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgZD1cIk0xNSAxOWwtNy03IDctN1wiIC8+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRlcGlja2VyLW5hdi1idG5cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5leHRNb250aCgpXCI+XHJcbiAgICAgICAgICA8c3ZnIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiPlxyXG4gICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgZD1cIk05IDVsNyA3LTcgN1wiIC8+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd1llYXJzUGlja2VyVG1wbD5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRlcGlja2VyLW5hdi1idG5cIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJldmlvdXNZZWFyKCk7XCI+XHJcbiAgICAgICAgICAgIDxzdmcgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxyXG4gICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiPlxyXG4gICAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgICBkPVwiTTE1IDE5bC03LTcgNy03XCIgLz5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0ZXBpY2tlci1uYXYtYnRuXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5leHRZZWFyKClcIj5cclxuICAgICAgICAgICAgPHN2ZyBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCI+XHJcbiAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNOSA1bDcgNy03IDdcIiAvPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXItd3JhcHBlclwiXHJcbiAgICAgICAgICpuZ0lmPVwiIXNob3dZZWFyczsgZWxzZSBzaG93Q2FsWWVhcnNUbXBsXCI+XHJcbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRheSBvZiBkYXlOYW1lc1wiXHJcbiAgICAgICAgICAgY2xhc3M9XCJkYXRlcGlja2VyLWRheS1uYW1lXCJcclxuICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxNC4yOCVcIj57e2RheX19PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI3Nob3dDYWxZZWFyc1RtcGw+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcGlja2VyLWNvbnRlbnQtd3JhcHBlclwiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHllYXIgb2Ygc2hvd0NhbGVuZGFyWWVhcnNcIlxyXG4gICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTguMjglXCJcclxuICAgICAgICAgICAgIGNsYXNzPVwicHgtMSBtYi0xXCI+XHJcbiAgICAgICAgICA8ZGl2IChjbGljayk9XCJzZWxlY3RZZWFyVmFsdWUoeWVhcilcIlxyXG4gICAgICAgICAgICAgICBjbGFzcz1cImRhdGVwaWNrZXIteWVhclwiXHJcbiAgICAgICAgICAgICAgIFtjbGFzc109XCJ5ZWFyLnNlbGVjdGVkICA/ICdzZWxlY3RlZCcgOiAnbm90LXNlbGVjdGVkJ1wiPlxyXG4gICAgICAgICAgICB7e3llYXIueWVhcn19PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1jb250ZW50LXdyYXBwZXJcIlxyXG4gICAgICAgICAqbmdJZj1cIiFzaG93WWVhcnNcIj5cclxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYmxhbmtkYXkgb2YgYmxhbmtEYXlzXCJcclxuICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxNC4yOCVcIlxyXG4gICAgICAgICAgIGNsYXNzPVwiZGF0ZXBpY2tlci1ibGFuay1kYXlzXCI+e3tibGFua2RheX19PC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRhdGUgb2YgY2FsZW5kYXJEYXRlcztcIlxyXG4gICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDE0LjI4JVwiXHJcbiAgICAgICAgICAgY2xhc3M9XCJweC0xIG1iLTFcIj5cclxuICAgICAgICA8ZGl2IChjbGljayk9XCJzZWxlY3REYXRlVmFsdWUoZGF0ZSlcIlxyXG4gICAgICAgICAgICAgY2xhc3M9XCJkYXRlcGlja2VyLWRheXNcIlxyXG4gICAgICAgICAgICAgW25nQ2xhc3NdPVwieydvdXQtb2YtcmFuZ2UnOiBvdXRPZlJhbmdlRGF0ZShkYXRlKSwnc2VsZWN0ZWQnOiBkYXRlLnNlbGVjdGVkLCAnbm90LXNlbGVjdGVkJzohZGF0ZS5zZWxlY3RlZCB9XCI+XHJcbiAgICAgICAgICB7e2RhdGUuZGF5fX08L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbjwvZGl2PiJdfQ==
@@ -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 "@angular/common";
4
- import * as i2 from "../../directives/click-outside.directive";
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.showIcons = false;
13
- this.selectedOption$ = null;
14
- this.selectedChange = new EventEmitter();
15
- this.selectedChanged = new EventEmitter();
16
- this.expanded$ = false;
17
- }
18
- get selectedOption() {
19
- return this.selectedOption$;
20
- }
21
- set selectedOption(option) {
22
- this.selectedOption$ = option;
23
- this.selectedValue = option ? option.value : null;
24
- this.expanded = false;
25
- }
26
- get expanded() {
27
- return this.expanded$;
28
- }
29
- set expanded(value) {
30
- this.expanded$ = value;
31
- }
32
- ngOnChanges(changes) {
33
- if (this.options && this.options.length > 0 && this.selectedValue !== null && this.selectedValue !== undefined) {
34
- this.selectedOption$ = this.options.filter((o) => o.value === this.selectedValue)[0];
35
- }
36
- }
37
- ngOnInit() { }
38
- isSelected(option) {
39
- return option != null && this.selectedValue != null && option.value === this.selectedValue;
40
- }
41
- onClickOutside($event) {
42
- this.expanded = false;
43
- }
44
- selectOption(option) {
45
- this.selectedOption = option;
46
- this.selectedChange.emit(option.value);
47
- this.selectedChanged.emit(option.value);
48
- }
49
- }
50
- DropDownMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: DropDownMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
51
- DropDownMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.0", type: DropDownMenuComponent, selector: "lib-drop-down-menu", inputs: { options: "options", selectedValue: ["selected", "selectedValue"], multiple: "multiple", placeholder: "placeholder", showIcons: ["show-icons", "showIcons"] }, 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 <span class=\"dropdown-selected-text\">\r\n <i *ngIf=\"selectedOption?.icon && showIcons\" \r\n [class]=\"selectedOption?.icon\" \r\n [class.mr-2]=\"selectedOption?.icon\"></i>{{ 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 <i *ngIf=\"option.icon && showIcons\" [class]=\"option.icon\" [class.mr-2]=\"option.icon\"></i>{{ 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", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }] });
52
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: DropDownMenuComponent, decorators: [{
53
- type: Component,
54
- args: [{ selector: 'lib-drop-down-menu', 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 <span class=\"dropdown-selected-text\">\r\n <i *ngIf=\"selectedOption?.icon && showIcons\" \r\n [class]=\"selectedOption?.icon\" \r\n [class.mr-2]=\"selectedOption?.icon\"></i>{{ 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 <i *ngIf=\"option.icon && showIcons\" [class]=\"option.icon\" [class.mr-2]=\"option.icon\"></i>{{ 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" }]
55
- }], ctorParameters: function () { return []; }, propDecorators: { options: [{
56
- type: Input
57
- }], selectedValue: [{
58
- type: Input,
59
- args: ['selected']
60
- }], multiple: [{
61
- type: Input
62
- }], placeholder: [{
63
- type: Input
64
- }], showIcons: [{
65
- type: Input,
66
- args: ['show-icons']
67
- }], selectedChange: [{
68
- type: Output
69
- }], selectedChanged: [{
70
- type: Output
71
- }] } });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1kb3duLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2Ryb3AtZG93bi1tZW51L2Ryb3AtZG93bi1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9kcm9wLWRvd24tbWVudS9kcm9wLWRvd24tbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7Ozs7QUFRekcsTUFBTSxPQUFPLHFCQUFxQjtJQTRCaEM7UUEzQlMsWUFBTyxHQUE2QixFQUFFLENBQUM7UUFDaEQsMkNBQTJDO1FBQ3hCLGtCQUFhLEdBQWUsSUFBSSxDQUFDO1FBQzNDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsZ0JBQVcsR0FBVyxzQkFBc0IsQ0FBQztRQUNqQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRS9CLG9CQUFlLEdBQXNCLElBQUksQ0FBQztRQVV4QyxtQkFBYyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzVELG9CQUFlLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFFL0QsY0FBUyxHQUFHLEtBQUssQ0FBQztJQU9YLENBQUM7SUFuQmhCLElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUNELElBQVcsY0FBYyxDQUFDLE1BQXlCO1FBQ2pELElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDO1FBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDbEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQU1ELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQVcsUUFBUSxDQUFDLEtBQWM7UUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUdELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssU0FBUyxFQUFFO1lBQzlHLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3RGO0lBQ0gsQ0FBQztJQUVELFFBQVEsS0FBVSxDQUFDO0lBRVosVUFBVSxDQUFDLE1BQWtCO1FBQ2xDLE9BQU8sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDN0YsQ0FBQztJQUVNLGNBQWMsQ0FBQyxNQUFXO1FBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxZQUFZLENBQUMsTUFBa0I7UUFDcEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUM7UUFDN0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDOztrSEFsRFUscUJBQXFCO3NHQUFyQixxQkFBcUIsMFVDUmxDLGlvRkE4REE7MkZEdERhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFFRSxvQkFBb0I7MEVBSXJCLE9BQU87c0JBQWYsS0FBSztnQkFFYSxhQUFhO3NCQUEvQixLQUFLO3VCQUFDLFVBQVU7Z0JBQ1IsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNlLFNBQVM7c0JBQTdCLEtBQUs7dUJBQUMsWUFBWTtnQkFZVCxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWVudU9wdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjb21wb25lbnQtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ2xpYi1kcm9wLWRvd24tbWVudScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3AtZG93bi1tZW51LmNvbXBvbmVudC5odG1sJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIERyb3BEb3duTWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSBvcHRpb25zOiBNZW51T3B0aW9uW10gfCB1bmRlZmluZWQgPSBbXTtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXHJcbiAgQElucHV0KCdzZWxlY3RlZCcpIHNlbGVjdGVkVmFsdWU6IGFueSB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIG11bHRpcGxlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICfOoM6xz4HOsc66zrHOu8+OIM61z4DOuc67zq3Ovs+EzrUuLi4nO1xyXG4gIEBJbnB1dCgnc2hvdy1pY29ucycpIHNob3dJY29ucyA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIHNlbGVjdGVkT3B0aW9uJDogTWVudU9wdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWRPcHRpb24oKTogTWVudU9wdGlvbiB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRPcHRpb24kO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IHNlbGVjdGVkT3B0aW9uKG9wdGlvbjogTWVudU9wdGlvbiB8IG51bGwpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24kID0gb3B0aW9uO1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gb3B0aW9uID8gb3B0aW9uLnZhbHVlIDogbnVsbDtcclxuICAgIHRoaXMuZXhwYW5kZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBwcml2YXRlIGV4cGFuZGVkJCA9IGZhbHNlO1xyXG4gIHB1YmxpYyBnZXQgZXhwYW5kZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5leHBhbmRlZCQ7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgZXhwYW5kZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZXhwYW5kZWQkID0gdmFsdWU7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMubGVuZ3RoID4gMCAmJiB0aGlzLnNlbGVjdGVkVmFsdWUgIT09IG51bGwgJiYgdGhpcy5zZWxlY3RlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiQgPSB0aGlzLm9wdGlvbnMuZmlsdGVyKChvKSA9PiBvLnZhbHVlID09PSB0aGlzLnNlbGVjdGVkVmFsdWUpWzBdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7fVxyXG5cclxuICBwdWJsaWMgaXNTZWxlY3RlZChvcHRpb246IE1lbnVPcHRpb24pOiBib29sZWFuIHtcclxuICAgIHJldHVybiBvcHRpb24gIT0gbnVsbCAmJiB0aGlzLnNlbGVjdGVkVmFsdWUgIT0gbnVsbCAmJiBvcHRpb24udmFsdWUgPT09IHRoaXMuc2VsZWN0ZWRWYWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNsaWNrT3V0c2lkZSgkZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5leHBhbmRlZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdE9wdGlvbihvcHRpb246IE1lbnVPcHRpb24pOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSBvcHRpb247XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQob3B0aW9uLnZhbHVlKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2VkLmVtaXQob3B0aW9uLnZhbHVlKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImRyb3Bkb3duLWNvbnRhaW5lclwiIChjbGlja091dHNpZGUpPVwib25DbGlja091dHNpZGUoJGV2ZW50KVwiPlxyXG4gIDxidXR0b25cclxuICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgKGNsaWNrKT1cImV4cGFuZGVkID0gIWV4cGFuZGVkXCJcclxuICAgIGNsYXNzPVwiZHJvcGRvd24tYnV0dG9uXCJcclxuICAgIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCJcclxuICAgIGFyaWEtZXhwYW5kZWQ9XCJ0cnVlXCJcclxuICAgIGFyaWEtbGFiZWxsZWRieT1cImxpc3Rib3gtbGFiZWxcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwiZHJvcGRvd24tc2VsZWN0ZWQtdGV4dFwiPlxyXG4gICAgICA8aSAqbmdJZj1cInNlbGVjdGVkT3B0aW9uPy5pY29uICYmIHNob3dJY29uc1wiIFxyXG4gICAgICAgICAgW2NsYXNzXT1cInNlbGVjdGVkT3B0aW9uPy5pY29uXCIgXHJcbiAgICAgICAgICBbY2xhc3MubXItMl09XCJzZWxlY3RlZE9wdGlvbj8uaWNvblwiPjwvaT57eyBzZWxlY3RlZE9wdGlvbj8udGV4dCB8fCBwbGFjZWhvbGRlciB9fVxyXG4gICAgPC9zcGFuPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJkcm9wZG93bi1idXR0b24taWNvblwiPlxyXG4gICAgICA8IS0tIEhlcm9pY29uIG5hbWU6IHNvbGlkL3NlbGVjdG9yIC0tPlxyXG4gICAgICA8c3ZnIGNsYXNzPVwiZHJvcGRvd24tYXJyb3dcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICBkPVwiTTEwIDNhMSAxIDAgMDEuNzA3LjI5M2wzIDNhMSAxIDAgMDEtMS40MTQgMS40MTRMMTAgNS40MTQgNy43MDcgNy43MDdhMSAxIDAgMDEtMS40MTQtMS40MTRsMy0zQTEgMSAwIDAxMTAgM3ptLTMuNzA3IDkuMjkzYTEgMSAwIDAxMS40MTQgMEwxMCAxNC41ODZsMi4yOTMtMi4yOTNhMSAxIDAgMDExLjQxNCAxLjQxNGwtMyAzYTEgMSAwIDAxLTEuNDE0IDBsLTMtM2ExIDEgMCAwMTAtMS40MTR6XCJcclxuICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9zcGFuPlxyXG4gIDwvYnV0dG9uPlxyXG4gIDx1bFxyXG4gICAgKm5nSWY9XCJleHBhbmRlZCAmJiBvcHRpb25zICYmIG9wdGlvbnMubGVuZ3RoID4gMFwiXHJcbiAgICBjbGFzcz1cImRyb3Bkb3duLXVsXCJcclxuICAgIHRhYmluZGV4PVwiLTFcIlxyXG4gICAgcm9sZT1cImxpc3Rib3hcIlxyXG4gICAgYXJpYS1sYWJlbGxlZGJ5PVwibGlzdGJveC1sYWJlbFwiXHJcbiAgICBhcmlhLWFjdGl2ZWRlc2NlbmRhbnQ9XCJsaXN0Ym94LW9wdGlvbi0zXCJcclxuICA+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1wiPlxyXG4gICAgICA8bGlcclxuICAgICAgICBbY2xhc3NdPVwiaXNTZWxlY3RlZChvcHRpb24pID8gJ2Ryb3Bkb3duLWxpLXNlbGVjdGVkJyA6ICdkcm9wZG93bi1saSdcIlxyXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RPcHRpb24ob3B0aW9uKVwiXHJcbiAgICAgICAgaWQ9XCJsaXN0Ym94LW9wdGlvbi0wXCJcclxuICAgICAgICByb2xlPVwib3B0aW9uXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIFtjbGFzc109XCJpc1NlbGVjdGVkKG9wdGlvbikgPyAnZHJvcGRvd24tbGktc2VsZWN0ZWQtdGV4dCcgOiAnZHJvcGRvd24tbGktdGV4dCdcIj5cclxuICAgICAgICAgIDxpICpuZ0lmPVwib3B0aW9uLmljb24gJiYgc2hvd0ljb25zXCIgW2NsYXNzXT1cIm9wdGlvbi5pY29uXCIgW2NsYXNzLm1yLTJdPVwib3B0aW9uLmljb25cIj48L2k+e3sgb3B0aW9uLnRleHQgfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpc1NlbGVjdGVkKG9wdGlvbilcIiBjbGFzcz1cImRyb3Bkb3duLWxpLXNlbGVjdGVkLWluZGljYXRvci1jb250YWluZXJcIj5cclxuICAgICAgICAgIDwhLS0gSGVyb2ljb24gbmFtZTogc29saWQvY2hlY2sgLS0+XHJcbiAgICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tbGktc2VsZWN0ZWQtaW5kaWNhdG9yXCJcclxuICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxyXG4gICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcclxuICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICBkPVwiTTE2LjcwNyA1LjI5M2ExIDEgMCAwMTAgMS40MTRsLTggOGExIDEgMCAwMS0xLjQxNCAwbC00LTRhMSAxIDAgMDExLjQxNC0xLjQxNEw4IDEyLjU4Nmw3LjI5My03LjI5M2ExIDEgMCAwMTEuNDE0IDB6XCJcclxuICAgICAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9saT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvdWw+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -1,31 +0,0 @@
1
- import { Component, Inject } from '@angular/core';
2
- import { APP_LANGUAGES } from '../../tokens';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "../../directives/click-outside.directive";
6
- export class LanguageSelectionComponent {
7
- constructor(langsService) {
8
- this.langsService = langsService;
9
- this.menuExpanded = false;
10
- }
11
- ngOnInit() {
12
- }
13
- selectLang(option) {
14
- if (this.langsService?.setSelected) {
15
- this.langsService.setSelected(option.value);
16
- }
17
- }
18
- onClickOutside($event) {
19
- this.menuExpanded = false;
20
- }
21
- }
22
- LanguageSelectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: LanguageSelectionComponent, deps: [{ token: APP_LANGUAGES }], target: i0.ɵɵFactoryTarget.Component });
23
- LanguageSelectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.0", type: LanguageSelectionComponent, selector: "lib-language-selection", ngImport: i0, template: "<div class=\"relative\" (clickOutside)=\"onClickOutside($event)\">\r\n <button class=\"langs-button\" (click)=\"menuExpanded = !menuExpanded\">\r\n <i class=\"text-xs mr-1 ms-Icon ms-Icon--Globe\"></i>\r\n <ng-container *ngFor=\"let lang of langsService?.options | async\">\r\n <span *ngIf=\"lang.value === langsService?.selected\">{{lang.text}}</span>\r\n </ng-container>\r\n </button>\r\n\r\n <div\r\n [class]=\"menuExpanded ? 'langs-menu-expanded':'langs-menu-collapsed'\" 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", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] });
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: LanguageSelectionComponent, decorators: [{
25
- type: Component,
26
- args: [{ selector: 'lib-language-selection', template: "<div class=\"relative\" (clickOutside)=\"onClickOutside($event)\">\r\n <button class=\"langs-button\" (click)=\"menuExpanded = !menuExpanded\">\r\n <i class=\"text-xs mr-1 ms-Icon ms-Icon--Globe\"></i>\r\n <ng-container *ngFor=\"let lang of langsService?.options | async\">\r\n <span *ngIf=\"lang.value === langsService?.selected\">{{lang.text}}</span>\r\n </ng-container>\r\n </button>\r\n\r\n <div\r\n [class]=\"menuExpanded ? 'langs-menu-expanded':'langs-menu-collapsed'\" 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" }]
27
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
28
- type: Inject,
29
- args: [APP_LANGUAGES]
30
- }] }]; } });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2Utc2VsZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9sYW5ndWFnZS1zZWxlY3Rpb24vbGFuZ3VhZ2Utc2VsZWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9sYW5ndWFnZS1zZWxlY3Rpb24vbGFuZ3VhZ2Utc2VsZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7QUFPN0MsTUFBTSxPQUFPLDBCQUEwQjtJQUdyQyxZQUEwQyxZQUE4QztRQUE5QyxpQkFBWSxHQUFaLFlBQVksQ0FBa0M7UUFEakYsaUJBQVksR0FBRyxLQUFLLENBQUM7SUFDZ0UsQ0FBQztJQUU3RixRQUFRO0lBQ1IsQ0FBQztJQUVNLFVBQVUsQ0FBQyxNQUFrQjtRQUNsQyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM3QztJQUNILENBQUM7SUFFTSxjQUFjLENBQUMsTUFBVztRQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDOzt1SEFoQlUsMEJBQTBCLGtCQUdqQixhQUFhOzJHQUh0QiwwQkFBMEIsOERDVHZDLDhpQ0FvQkE7MkZEWGEsMEJBQTBCO2tCQUp0QyxTQUFTOytCQUNFLHdCQUF3Qjs7MEJBTXJCLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1lbnVPcHRpb24gfSBmcm9tICcuLy4uLy4uL3R5cGVzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBUFBfTEFOR1VBR0VTIH0gZnJvbSAnLi4vLi4vdG9rZW5zJztcclxuaW1wb3J0IHsgSUFwcExhbmd1YWdlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi90eXBlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1sYW5ndWFnZS1zZWxlY3Rpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9sYW5ndWFnZS1zZWxlY3Rpb24uY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMYW5ndWFnZVNlbGVjdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIHB1YmxpYyBtZW51RXhwYW5kZWQgPSBmYWxzZTtcclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KEFQUF9MQU5HVUFHRVMpIHB1YmxpYyBsYW5nc1NlcnZpY2U6IElBcHBMYW5ndWFnZXNTZXJ2aWNlIHwgdW5kZWZpbmVkKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0TGFuZyhvcHRpb246IE1lbnVPcHRpb24pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmxhbmdzU2VydmljZT8uc2V0U2VsZWN0ZWQpIHtcclxuICAgICAgdGhpcy5sYW5nc1NlcnZpY2Uuc2V0U2VsZWN0ZWQob3B0aW9uLnZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNsaWNrT3V0c2lkZSgkZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5tZW51RXhwYW5kZWQgPSBmYWxzZTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInJlbGF0aXZlXCIgKGNsaWNrT3V0c2lkZSk9XCJvbkNsaWNrT3V0c2lkZSgkZXZlbnQpXCI+XHJcbiAgPGJ1dHRvbiBjbGFzcz1cImxhbmdzLWJ1dHRvblwiIChjbGljayk9XCJtZW51RXhwYW5kZWQgPSAhbWVudUV4cGFuZGVkXCI+XHJcbiAgICA8aSBjbGFzcz1cInRleHQteHMgbXItMSBtcy1JY29uIG1zLUljb24tLUdsb2JlXCI+PC9pPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGFuZyBvZiBsYW5nc1NlcnZpY2U/Lm9wdGlvbnMgfCBhc3luY1wiPlxyXG4gICAgICA8c3BhbiAqbmdJZj1cImxhbmcudmFsdWUgPT09IGxhbmdzU2VydmljZT8uc2VsZWN0ZWRcIj57e2xhbmcudGV4dH19PC9zcGFuPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9idXR0b24+XHJcblxyXG4gIDxkaXZcclxuICAgIFtjbGFzc109XCJtZW51RXhwYW5kZWQgPyAnbGFuZ3MtbWVudS1leHBhbmRlZCc6J2xhbmdzLW1lbnUtY29sbGFwc2VkJ1wiIHJvbGU9XCJtZW51XCIgYXJpYS1vcmllbnRhdGlvbj1cInZlcnRpY2FsXCIgYXJpYS1sYWJlbGxlZGJ5PVwibWVudS1idXR0b25cIiB0YWJpbmRleD1cIi0xXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHktMVwiIHJvbGU9XCJub25lXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGxhbmcgb2YgbGFuZ3NTZXJ2aWNlPy5vcHRpb25zIHwgYXN5bmNcIj5cclxuICAgICAgICA8YSAoY2xpY2spPVwic2VsZWN0TGFuZyhsYW5nKVwiICpuZ0lmPVwibGFuZy52YWx1ZSAhPSBsYW5nc1NlcnZpY2U/LnNlbGVjdGVkXCIgY2xhc3M9XCJuYXYtbGluay1wcm9maWxlXCIgcm9sZT1cIm1lbnVpdGVtXCIgdGFiaW5kZXg9XCItMVwiIGlkPVwibWVudS1pdGVtLTBcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwidGV4dC14cyBtci0xIG1zLUljb24gbXMtSWNvbi0tR2xvYmVGYXZvcml0ZVwiPjwvaT5cclxuICAgICAgICAgIHt7bGFuZy5kZXNjcmlwdGlvbn19XHJcbiAgICAgICAgPC9hPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -1,29 +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 ListViewEmptyStateComponent {
5
- constructor() {
6
- this.title = 'Δεν βρέθηκαν εγγραφές.';
7
- // tslint:disable-next-line:no-input-rename
8
- this.subTitle = 'Παρακαλώ αλλάξτε τα κριτήρια αναζήτησης σας ή ξεκινήστε προσθέτοντας μια νέα εγγραφή';
9
- // tslint:disable-next-line:no-input-rename
10
- this.newItemLabel = 'Νέα εγγραφή';
11
- }
12
- ngOnInit() {
13
- }
14
- }
15
- ListViewEmptyStateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: ListViewEmptyStateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
16
- ListViewEmptyStateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.0", 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", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: ListViewEmptyStateComponent, decorators: [{
18
- type: Component,
19
- args: [{ selector: 'lib-list-view-empty-state', 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" }]
20
- }], ctorParameters: function () { return []; }, propDecorators: { title: [{
21
- type: Input
22
- }], subTitle: [{
23
- type: Input,
24
- args: ['sub-title']
25
- }], newItemLabel: [{
26
- type: Input,
27
- args: ['new-item-label']
28
- }] } });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC12aWV3LWVtcHR5LXN0YXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9saXN0LXZpZXcvbGlzdC12aWV3LWVtcHR5LXN0YXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9saXN0LXZpZXcvbGlzdC12aWV3LWVtcHR5LXN0YXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7QUFNekQsTUFBTSxPQUFPLDJCQUEyQjtJQU90QztRQUxTLFVBQUssR0FBRyx3QkFBd0IsQ0FBQztRQUMxQywyQ0FBMkM7UUFDdkIsYUFBUSxHQUFHLHNGQUFzRixDQUFDO1FBQ3RILDJDQUEyQztRQUNsQixpQkFBWSxHQUFHLGFBQWEsQ0FBQztJQUN0QyxDQUFDO0lBRWpCLFFBQVE7SUFDUixDQUFDOzt3SEFWVSwyQkFBMkI7NEdBQTNCLDJCQUEyQixvTENOeEMsNDRDQW9CQTsyRkRkYSwyQkFBMkI7a0JBSnZDLFNBQVM7K0JBQ0UsMkJBQTJCOzBFQUs1QixLQUFLO3NCQUFiLEtBQUs7Z0JBRWMsUUFBUTtzQkFBM0IsS0FBSzt1QkFBQyxXQUFXO2dCQUVPLFlBQVk7c0JBQXBDLEtBQUs7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1saXN0LXZpZXctZW1wdHktc3RhdGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LXZpZXctZW1wdHktc3RhdGUuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMaXN0Vmlld0VtcHR5U3RhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSB0aXRsZSA9ICfOlM61zr0gzrLPgc6tzrjOt866zrHOvSDOtc6zzrPPgc6xz4bOrc+CLic7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWlucHV0LXJlbmFtZVxyXG4gIEBJbnB1dCgnc3ViLXRpdGxlJykgc3ViVGl0bGUgPSAnzqDOsc+BzrHOus6xzrvPjiDOsc67zrvOrM6+z4TOtSDPhM6xIM66z4HOuc+Ezq7Pgc65zrEgzrHOvc6xzrbOrs+EzrfPg863z4Igz4POsc+CIM6uIM6+zrXOus65zr3Ors+Dz4TOtSDPgM+Bzr/Pg864zq3PhM6/zr3PhM6xz4IgzrzOuc6xIM69zq3OsSDOtc6zzrPPgc6xz4bOric7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWlucHV0LXJlbmFtZVxyXG4gIEBJbnB1dCgnbmV3LWl0ZW0tbGFiZWwnKSBuZXdJdGVtTGFiZWwgPSAnzp3Orc6xIM61zrPOs8+BzrHPhs6uJztcclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJwLTIwXCI+XHJcbiAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHAtMlwiPlxyXG4gICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgY2xhc3M9XCJteC1hdXRvIGgtMTIgdy0xMiB0ZXh0LWdyYXktNDAwXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCI+XHJcbiAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZS13aWR0aD1cIjJcIiBkPVwiTTQgN3YxMGMwIDIuMjEgMy41ODIgNCA4IDRzOC0xLjc5IDgtNFY3TTQgN2MwIDIuMjEgMy41ODIgNCA4IDRzOC0xLjc5IDgtNE00IDdjMC0yLjIxIDMuNTgyLTQgOC00czggMS43OSA4IDRtMCA1YzAgMi4yMS0zLjU4MiA0LTggNHMtOC0xLjc5LTgtNFwiIC8+XHJcbiAgICA8L3N2Zz5cclxuICAgIDxoMyBjbGFzcz1cIm10LTIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwXCI+e3t0aXRsZX19PC9oMz5cclxuICAgIDxwIGNsYXNzPVwibXQtMSB0ZXh0LXNtIHRleHQtZ3JheS01MDBcIj5cclxuICAgICAge3tzdWJUaXRsZX19XHJcbiAgICA8L3A+XHJcbiAgICA8ZGl2IGNsYXNzPVwibXQtNlwiICpuZ0lmPVwiZmFsc2VcIj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgcHgtNCBweS0yIGJvcmRlciBib3JkZXItdHJhbnNwYXJlbnQgc2hhZG93LXNtIHRleHQtc20gZm9udC1tZWRpdW0gcm91bmRlZC1tZCB0ZXh0LXdoaXRlIGJnLWdyYXktNjAwIGhvdmVyOmJnLWdyYXktNzAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1vZmZzZXQtMSBmb2N1czpyaW5nLWdyYXktNTAwXCI+XHJcbiAgICAgICAgPCEtLSBIZXJvaWNvbiBuYW1lOiBzb2xpZC9wbHVzIC0tPlxyXG4gICAgICAgIDxzdmcgY2xhc3M9XCItbWwtMSBtci0yIGgtNiB3LTZcIiBmaWxsPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICAgIDxwYXRoIHZlY3Rvci1lZmZlY3Q9XCJub24tc2NhbGluZy1zdHJva2VcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBzdHJva2Utd2lkdGg9XCIyXCIgZD1cIk05IDEzaDZtLTMtM3Y2bS05IDFWN2EyIDIgMCAwMTItMmg2bDIgMmg2YTIgMiAwIDAxMiAydjhhMiAyIDAgMDEtMiAySDVhMiAyIDAgMDEtMi0yelwiIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgICAge3tuZXdJdGVtTGFiZWx9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19