design-angular-kit 1.0.0-1 → 1.0.0-11

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 (229) hide show
  1. package/README.md +183 -24
  2. package/assets/i18n/en.json +97 -0
  3. package/assets/i18n/it.json +97 -0
  4. package/esm2020/lib/abstracts/abstract-form.component.mjs +171 -0
  5. package/esm2020/lib/abstracts/abstract.component.mjs +45 -0
  6. package/esm2020/lib/components/components.module.mjs +256 -0
  7. package/esm2020/lib/components/core/accordion/accordion.component.mjs +31 -0
  8. package/esm2020/lib/components/core/alert/alert.component.mjs +69 -0
  9. package/esm2020/lib/components/core/badge/badge.directive.mjs +34 -0
  10. package/esm2020/lib/components/core/button/button.directive.mjs +80 -0
  11. package/esm2020/lib/components/core/callout/callout.component.mjs +84 -0
  12. package/esm2020/lib/components/core/card/card.component.mjs +58 -0
  13. package/esm2020/lib/components/core/carousel/carousel/carousel.component.mjs +79 -0
  14. package/esm2020/lib/components/core/carousel/carousel-item/carousel-item.component.mjs +15 -0
  15. package/esm2020/lib/components/core/chip/chip.component.mjs +89 -0
  16. package/esm2020/lib/components/core/collapse/collapse.component.mjs +101 -0
  17. package/esm2020/lib/components/core/dimmer/dimmer-buttons/dimmer-buttons.component.mjs +24 -0
  18. package/esm2020/lib/components/core/dimmer/dimmer-icon/dimmer-icon.component.mjs +11 -0
  19. package/esm2020/lib/components/core/dimmer/dimmer.component.mjs +59 -0
  20. package/esm2020/lib/components/core/dropdown/dropdown/dropdown.component.mjs +130 -0
  21. package/esm2020/lib/components/core/dropdown/dropdown-item/dropdown-item.component.mjs +68 -0
  22. package/esm2020/lib/components/core/forward/forward.directive.mjs +51 -0
  23. package/esm2020/lib/components/core/link/link.component.mjs +40 -0
  24. package/esm2020/lib/components/core/list/list/list.component.mjs +13 -0
  25. package/esm2020/lib/components/core/list/list-item/list-item.component.mjs +36 -0
  26. package/esm2020/lib/components/core/modal/modal.component.mjs +98 -0
  27. package/esm2020/lib/components/core/notifications/notifications.component.mjs +110 -0
  28. package/esm2020/lib/components/core/pagination/pagination.component.mjs +131 -0
  29. package/esm2020/lib/components/core/popover/popover.directive.mjs +179 -0
  30. package/esm2020/lib/components/core/progress-bar/progress-bar.component.mjs +34 -0
  31. package/esm2020/lib/components/core/progress-button/progress-button.component.mjs +27 -0
  32. package/esm2020/lib/components/core/rating/rating.component.mjs +49 -0
  33. package/esm2020/lib/components/core/spinner/spinner.component.mjs +35 -0
  34. package/esm2020/lib/components/core/steppers/steppers-container/steppers-container.component.mjs +127 -0
  35. package/esm2020/lib/components/core/steppers/steppers-item/steppers-item.component.mjs +19 -0
  36. package/esm2020/lib/components/core/tab/tab-container/tab-container.component.mjs +59 -0
  37. package/esm2020/lib/components/core/tab/tab-item/tab-item.component.mjs +36 -0
  38. package/esm2020/lib/components/core/table/table.component.mjs +57 -0
  39. package/esm2020/lib/components/core/tooltip/tooltip.directive.mjs +143 -0
  40. package/esm2020/lib/components/form/checkbox/checkbox.component.mjs +40 -0
  41. package/esm2020/lib/components/form/input/input.component.mjs +222 -0
  42. package/esm2020/lib/components/form/password-input/password-input.component.mjs +112 -0
  43. package/esm2020/lib/components/form/radio-button/radio-button.component.mjs +68 -0
  44. package/esm2020/lib/components/form/select/select.component.mjs +62 -0
  45. package/esm2020/lib/components/form/textarea/textarea.component.mjs +46 -0
  46. package/esm2020/lib/components/form/upload-drag-drop/upload-drag-drop.component.mjs +139 -0
  47. package/esm2020/lib/components/form/upload-file-list/upload-file-list.component.mjs +104 -0
  48. package/esm2020/lib/components/navigation/back-button/back-button.component.mjs +69 -0
  49. package/esm2020/lib/components/navigation/back-to-top/back-to-top.component.mjs +64 -0
  50. package/esm2020/lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component.mjs +56 -0
  51. package/esm2020/lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component.mjs +23 -0
  52. package/esm2020/lib/components/navigation/header/header.component.mjs +57 -0
  53. package/esm2020/lib/components/utils/icon/icon.component.mjs +54 -0
  54. package/esm2020/lib/components/utils/language-switcher/language-switcher.component.mjs +39 -0
  55. package/esm2020/lib/components/utils/not-found-page/not-found-page.component.mjs +13 -0
  56. package/esm2020/lib/design-angular-kit.module.mjs +45 -131
  57. package/esm2020/lib/interfaces/core.mjs +16 -0
  58. package/esm2020/lib/interfaces/form.mjs +2 -0
  59. package/esm2020/lib/interfaces/icon.mjs +2 -0
  60. package/esm2020/lib/interfaces/utils.mjs +2 -0
  61. package/esm2020/lib/pipes/mark-matching-text.pipe.mjs +36 -0
  62. package/esm2020/lib/services/notifications/notifications.service.mjs +120 -0
  63. package/esm2020/lib/utils/boolean-input.mjs +15 -0
  64. package/esm2020/lib/utils/file-utils.mjs +73 -0
  65. package/esm2020/lib/utils/regex.mjs +26 -0
  66. package/esm2020/lib/validators/it-validators.mjs +134 -0
  67. package/esm2020/public_api.mjs +67 -36
  68. package/fesm2015/design-angular-kit.mjs +3550 -2712
  69. package/fesm2015/design-angular-kit.mjs.map +1 -1
  70. package/fesm2020/design-angular-kit.mjs +3519 -2722
  71. package/fesm2020/design-angular-kit.mjs.map +1 -1
  72. package/lib/abstracts/abstract-form.component.d.ts +86 -0
  73. package/lib/abstracts/abstract.component.d.ts +30 -0
  74. package/lib/components/components.module.d.ts +60 -0
  75. package/lib/components/core/accordion/accordion.component.d.ts +12 -0
  76. package/lib/components/core/alert/alert.component.d.ts +39 -0
  77. package/lib/components/core/badge/badge.directive.d.ts +16 -0
  78. package/lib/components/core/button/button.directive.d.ts +36 -0
  79. package/lib/components/core/callout/callout.component.d.ts +47 -0
  80. package/lib/components/core/card/card.component.d.ts +41 -0
  81. package/lib/components/core/carousel/carousel/carousel.component.d.ts +50 -0
  82. package/lib/components/core/carousel/carousel-item/carousel-item.component.d.ts +11 -0
  83. package/lib/components/core/chip/chip.component.d.ts +62 -0
  84. package/lib/components/core/collapse/collapse.component.d.ts +60 -0
  85. package/lib/components/core/dimmer/dimmer-buttons/dimmer-buttons.component.d.ts +12 -0
  86. package/lib/components/core/dimmer/dimmer-icon/dimmer-icon.component.d.ts +5 -0
  87. package/lib/components/core/dimmer/dimmer.component.d.ts +24 -0
  88. package/lib/components/core/dropdown/dropdown/dropdown.component.d.ts +81 -0
  89. package/lib/components/core/dropdown/dropdown-item/dropdown-item.component.d.ts +39 -0
  90. package/lib/components/core/forward/forward.directive.d.ts +14 -0
  91. package/lib/components/core/link/link.component.d.ts +31 -0
  92. package/lib/components/core/list/list/list.component.d.ts +10 -0
  93. package/lib/components/core/list/list-item/list-item.component.d.ts +24 -0
  94. package/lib/components/core/modal/modal.component.d.ts +59 -0
  95. package/lib/components/core/notifications/notifications.component.d.ts +44 -0
  96. package/lib/components/core/pagination/pagination.component.d.ts +92 -0
  97. package/lib/components/core/popover/popover.directive.d.ts +98 -0
  98. package/lib/components/core/progress-bar/progress-bar.component.d.ts +28 -0
  99. package/lib/components/core/progress-button/progress-button.component.d.ts +22 -0
  100. package/lib/components/core/rating/rating.component.d.ts +24 -0
  101. package/lib/components/core/spinner/spinner.component.d.ts +21 -0
  102. package/lib/components/core/steppers/steppers-container/steppers-container.component.d.ts +104 -0
  103. package/lib/components/core/steppers/steppers-item/steppers-item.component.d.ts +20 -0
  104. package/lib/components/core/tab/tab-container/tab-container.component.d.ts +30 -0
  105. package/lib/components/core/tab/tab-item/tab-item.component.d.ts +34 -0
  106. package/lib/components/core/table/table.component.d.ts +54 -0
  107. package/lib/components/core/tooltip/tooltip.directive.d.ts +81 -0
  108. package/lib/components/form/checkbox/checkbox.component.d.ts +30 -0
  109. package/lib/components/form/input/input.component.d.ts +96 -0
  110. package/lib/components/form/password-input/password-input.component.d.ts +55 -0
  111. package/lib/components/form/radio-button/radio-button.component.d.ts +29 -0
  112. package/lib/components/form/select/select.component.d.ts +30 -0
  113. package/lib/components/form/textarea/textarea.component.d.ts +24 -0
  114. package/lib/components/form/upload-drag-drop/upload-drag-drop.component.d.ts +54 -0
  115. package/lib/components/form/upload-file-list/upload-file-list.component.d.ts +59 -0
  116. package/lib/components/navigation/back-button/back-button.component.d.ts +47 -0
  117. package/lib/components/navigation/back-to-top/back-to-top.component.d.ts +41 -0
  118. package/lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component.d.ts +32 -0
  119. package/lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component.d.ts +22 -0
  120. package/lib/components/navigation/header/header.component.d.ts +24 -0
  121. package/lib/components/utils/icon/icon.component.d.ts +40 -0
  122. package/lib/components/utils/language-switcher/language-switcher.component.d.ts +23 -0
  123. package/lib/components/utils/not-found-page/not-found-page.component.d.ts +5 -0
  124. package/lib/design-angular-kit.module.d.ts +7 -24
  125. package/lib/interfaces/core.d.ts +59 -0
  126. package/lib/interfaces/form.d.ts +67 -0
  127. package/lib/interfaces/icon.d.ts +3 -0
  128. package/lib/interfaces/utils.d.ts +10 -0
  129. package/lib/services/notifications/notifications.service.d.ts +63 -0
  130. package/lib/utils/boolean-input.d.ts +11 -0
  131. package/lib/utils/file-utils.d.ts +32 -0
  132. package/lib/utils/regex.d.ts +25 -0
  133. package/lib/validators/it-validators.d.ts +58 -0
  134. package/package.json +22 -13
  135. package/public_api.d.ts +59 -35
  136. package/esm2020/lib/badge/badge.directive.mjs +0 -83
  137. package/esm2020/lib/breadcrumb/breadcrumb-item.component.mjs +0 -66
  138. package/esm2020/lib/breadcrumb/breadcrumb.component.mjs +0 -89
  139. package/esm2020/lib/button/button.directive.mjs +0 -185
  140. package/esm2020/lib/button/button.module.mjs +0 -18
  141. package/esm2020/lib/checkbox/checkbox.component.mjs +0 -138
  142. package/esm2020/lib/collapse/collapse-group.component.mjs +0 -57
  143. package/esm2020/lib/collapse/collapse-item.component.mjs +0 -79
  144. package/esm2020/lib/collapse/collapse.config.mjs +0 -12
  145. package/esm2020/lib/collapse/collapse.directive.mjs +0 -55
  146. package/esm2020/lib/collapse/collapse.module.mjs +0 -22
  147. package/esm2020/lib/dropdown/dropdown-divider.component.mjs +0 -11
  148. package/esm2020/lib/dropdown/dropdown-item.component.mjs +0 -97
  149. package/esm2020/lib/dropdown/dropdown.component.mjs +0 -143
  150. package/esm2020/lib/dropdown/dropdown.config.mjs +0 -12
  151. package/esm2020/lib/dropdown/dropdown.directive.mjs +0 -156
  152. package/esm2020/lib/dropdown/dropdown.module.mjs +0 -25
  153. package/esm2020/lib/enums/icons.enum.mjs +0 -27
  154. package/esm2020/lib/form-input/form-input-password.utils.mjs +0 -154
  155. package/esm2020/lib/form-input/form-input.component.mjs +0 -495
  156. package/esm2020/lib/form-input/it-prefix.directive.mjs +0 -13
  157. package/esm2020/lib/form-input/it-suffix.directive.mjs +0 -13
  158. package/esm2020/lib/form-input/it-text-prefix.directive.mjs +0 -13
  159. package/esm2020/lib/form-input/it-text-suffix.directive.mjs +0 -13
  160. package/esm2020/lib/form-input/mark-matching-text.pipe.mjs +0 -36
  161. package/esm2020/lib/icon/icon.component.mjs +0 -87
  162. package/esm2020/lib/icon/icon.module.mjs +0 -18
  163. package/esm2020/lib/models/Alignment.mjs +0 -15
  164. package/esm2020/lib/models/ButtonSize.mjs +0 -15
  165. package/esm2020/lib/models/InputType.mjs +0 -44
  166. package/esm2020/lib/models/ThemeColor.mjs +0 -30
  167. package/esm2020/lib/popover/popover.config.mjs +0 -17
  168. package/esm2020/lib/popover/popover.directive.mjs +0 -33
  169. package/esm2020/lib/popover/popover.module.mjs +0 -19
  170. package/esm2020/lib/progress-bar/progress-bar.component.mjs +0 -98
  171. package/esm2020/lib/radio/radio.component.mjs +0 -287
  172. package/esm2020/lib/radio/unique-selection-dispatcher.mjs +0 -55
  173. package/esm2020/lib/tabs/tab-group.component.mjs +0 -177
  174. package/esm2020/lib/tabs/tab.component.mjs +0 -73
  175. package/esm2020/lib/tabs/tabs.module.mjs +0 -20
  176. package/esm2020/lib/toggle/toggle.component.mjs +0 -86
  177. package/esm2020/lib/tooltip/tooltip.config.mjs +0 -17
  178. package/esm2020/lib/tooltip/tooltip.directive.mjs +0 -43
  179. package/esm2020/lib/tooltip/tooltip.module.mjs +0 -19
  180. package/esm2020/lib/util/focus-mouse.directive.mjs +0 -32
  181. package/esm2020/lib/util/util.mjs +0 -12
  182. package/esm2020/lib/util/utils.module.mjs +0 -16
  183. package/lib/badge/badge.directive.d.ts +0 -33
  184. package/lib/breadcrumb/breadcrumb-item.component.d.ts +0 -33
  185. package/lib/breadcrumb/breadcrumb.component.d.ts +0 -33
  186. package/lib/button/button.directive.d.ts +0 -72
  187. package/lib/button/button.module.d.ts +0 -8
  188. package/lib/checkbox/checkbox.component.d.ts +0 -61
  189. package/lib/collapse/collapse-group.component.d.ts +0 -16
  190. package/lib/collapse/collapse-item.component.d.ts +0 -46
  191. package/lib/collapse/collapse.config.d.ts +0 -6
  192. package/lib/collapse/collapse.directive.d.ts +0 -25
  193. package/lib/collapse/collapse.module.d.ts +0 -12
  194. package/lib/dropdown/dropdown-divider.component.d.ts +0 -5
  195. package/lib/dropdown/dropdown-item.component.d.ts +0 -56
  196. package/lib/dropdown/dropdown.component.d.ts +0 -65
  197. package/lib/dropdown/dropdown.config.d.ts +0 -6
  198. package/lib/dropdown/dropdown.directive.d.ts +0 -77
  199. package/lib/dropdown/dropdown.module.d.ts +0 -15
  200. package/lib/enums/icons.enum.d.ts +0 -23
  201. package/lib/form-input/form-input-password.utils.d.ts +0 -45
  202. package/lib/form-input/form-input.component.d.ts +0 -283
  203. package/lib/form-input/it-prefix.directive.d.ts +0 -5
  204. package/lib/form-input/it-suffix.directive.d.ts +0 -5
  205. package/lib/form-input/it-text-prefix.directive.d.ts +0 -5
  206. package/lib/form-input/it-text-suffix.directive.d.ts +0 -5
  207. package/lib/icon/icon.component.d.ts +0 -34
  208. package/lib/icon/icon.module.d.ts +0 -8
  209. package/lib/models/Alignment.d.ts +0 -12
  210. package/lib/models/ButtonSize.d.ts +0 -11
  211. package/lib/models/InputType.d.ts +0 -36
  212. package/lib/models/ThemeColor.d.ts +0 -21
  213. package/lib/popover/popover.config.d.ts +0 -11
  214. package/lib/popover/popover.directive.d.ts +0 -20
  215. package/lib/popover/popover.module.d.ts +0 -9
  216. package/lib/progress-bar/progress-bar.component.d.ts +0 -55
  217. package/lib/radio/radio.component.d.ts +0 -116
  218. package/lib/radio/unique-selection-dispatcher.d.ts +0 -36
  219. package/lib/tabs/tab-group.component.d.ts +0 -71
  220. package/lib/tabs/tab.component.d.ts +0 -44
  221. package/lib/tabs/tabs.module.d.ts +0 -10
  222. package/lib/toggle/toggle.component.d.ts +0 -46
  223. package/lib/tooltip/tooltip.config.d.ts +0 -11
  224. package/lib/tooltip/tooltip.directive.d.ts +0 -27
  225. package/lib/tooltip/tooltip.module.d.ts +0 -9
  226. package/lib/util/focus-mouse.directive.d.ts +0 -13
  227. package/lib/util/util.d.ts +0 -5
  228. package/lib/util/utils.module.d.ts +0 -7
  229. /package/lib/{form-input → pipes}/mark-matching-text.pipe.d.ts +0 -0
@@ -0,0 +1,104 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { AbstractComponent } from '../../../abstracts/abstract.component';
3
+ import { isTrueBooleanInput } from '../../../utils/boolean-input';
4
+ import { FileUtils } from '../../../utils/file-utils';
5
+ import { forkJoin, take, tap } from 'rxjs';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common";
8
+ import * as i2 from "../../core/progress-bar/progress-bar.component";
9
+ import * as i3 from "../../core/tooltip/tooltip.directive";
10
+ import * as i4 from "../../utils/icon/icon.component";
11
+ import * as i5 from "@ngx-translate/core";
12
+ export class UploadFileListComponent extends AbstractComponent {
13
+ constructor() {
14
+ super(...arguments);
15
+ /**
16
+ * The accepted file type to upload <br>
17
+ * Possible values: <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types">MIME Types</a> separated by comma
18
+ * @example application/pdf,image/png
19
+ * @default *
20
+ */
21
+ this.accept = '*';
22
+ /**
23
+ * If upload multiple files
24
+ */
25
+ this.multiple = true;
26
+ /**
27
+ * Fired when upload new files
28
+ */
29
+ this.uploadFiles = new EventEmitter();
30
+ /**
31
+ * Fired on delete item button click
32
+ */
33
+ this.deleteItem = new EventEmitter();
34
+ /**
35
+ * Cache to preview image
36
+ */
37
+ this.previewImages = new Map();
38
+ }
39
+ ngOnInit() {
40
+ if (this.isImageList && this.accept === '*') {
41
+ this.accept = 'image/*';
42
+ }
43
+ }
44
+ ngOnChanges(changes) {
45
+ if (changes['fileList'] && this.isImageList) {
46
+ const images$ = this.fileList.map(item => FileUtils.fileToBase64(item.file).pipe(take(1), tap(base64 => this.previewImages.set(item.id, base64))));
47
+ forkJoin(images$).subscribe(() => {
48
+ this._changeDetectorRef.detectChanges();
49
+ super.ngOnChanges(changes);
50
+ });
51
+ }
52
+ else {
53
+ super.ngOnChanges(changes);
54
+ }
55
+ }
56
+ get isMultipleInput() {
57
+ return isTrueBooleanInput(this.multiple);
58
+ }
59
+ get isImageList() {
60
+ return isTrueBooleanInput(this.images);
61
+ }
62
+ get isHideLoadButton() {
63
+ return isTrueBooleanInput(this.hideLoadButton);
64
+ }
65
+ /**
66
+ * On load file from input
67
+ * @param event
68
+ */
69
+ onLoadFiles(event) {
70
+ const files = event.target?.files;
71
+ if (!files || !files.length) {
72
+ return;
73
+ }
74
+ this.uploadFiles.emit(files);
75
+ }
76
+ /**
77
+ * Get the file size string
78
+ * @param file
79
+ */
80
+ getFileSize(file) {
81
+ return FileUtils.getFileSizeString(file);
82
+ }
83
+ }
84
+ UploadFileListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: UploadFileListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
85
+ UploadFileListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: UploadFileListComponent, selector: "it-upload-file-list[fileList]", inputs: { fileList: "fileList", accept: "accept", multiple: "multiple", images: "images", hideLoadButton: "hideLoadButton" }, outputs: { uploadFiles: "uploadFiles", deleteItem: "deleteItem" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!isHideLoadButton\">\n <input type=\"file\" [id]=\"id\" class=\"upload\" [accept]=\"accept\" [multiple]=\"isMultipleInput\"\n (change)=\"onLoadFiles($event)\" />\n <label [for]=\"id\">\n <it-icon name=\"upload\" size=\"sm\"></it-icon>\n <span>{{'it.form.upload'|translate}}</span>\n </label>\n</ng-container>\n\n<ul class=\"upload-file-list\" [class.upload-file-list-image]=\"isImageList\" *ngIf=\"fileList.length\">\n <li *ngFor=\"let item of fileList\" class=\"upload-file\"\n [class.error]=\"item.error\"\n [class.uploading]=\"!item.error && item.progress !== undefined && item.progress > 0 && item.progress < 100\"\n [class.success]=\"!item.error && (!item.progress || item.progress >= 100)\">\n\n <div class=\"upload-image\" *ngIf=\"isImageList; else icon\">\n <img [attr.src]=\"previewImages.get(item.id)\" [alt]=\"item.file.name\" />\n </div>\n <ng-template #icon>\n <it-icon name=\"file\" size=\"sm\" [color]=\"!item.error ? (item.progress ? 'secondary' : 'primary') : 'danger'\"></it-icon>\n </ng-template>\n\n <p [itTooltip]=\"item.tooltip\">\n <span class=\"visually-hidden\">{{'it.form.uploaded-file'|translate : { name: item.file.name } }}</span>\n {{item.file.name}} <span class=\"upload-file-weight\">{{getFileSize(item.file)}}</span>\n </p>\n\n <button *ngIf=\"item.removable && (!item.progress || item.progress < 100)\" type=\"button\" (click)=\"deleteItem.emit(item)\">\n <span class=\"visually-hidden\">{{'it.form.delete-file'|translate : { name: item.file.name } }}</span>\n <it-icon name=\"close\"></it-icon>\n </button>\n <button *ngIf=\"(!item.removable && !item.progress) || (item.progress !== undefined && item.progress >= 100)\" type=\"button\" disabled>\n <span class=\"visually-hidden\">{{'it.form.upload-complete'|translate}}</span>\n <it-icon name=\"check\"></it-icon>\n </button>\n\n <it-progress-bar *ngIf=\"!item.error && item.progress !== undefined && item.progress > 0 && item.progress < 100\"\n [value]=\"item.progress\"></it-progress-bar>\n </li>\n</ul>\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: "component", type: i2.ProgressBarComponent, selector: "it-progress-bar[value]", inputs: ["value", "showLabel", "indeterminate", "color"] }, { kind: "directive", type: i3.TooltipDirective, selector: "[itTooltip]", inputs: ["itTooltip", "tooltipPlacement", "tooltipHtml"], outputs: ["onShow", "onShown", "onHide", "onHidden", "onInserted"], exportAs: ["itTooltip"] }, { kind: "component", type: i4.IconComponent, selector: "it-icon[name]", inputs: ["name", "size", "color", "padded", "class"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] });
86
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: UploadFileListComponent, decorators: [{
87
+ type: Component,
88
+ args: [{ selector: 'it-upload-file-list[fileList]', template: "<ng-container *ngIf=\"!isHideLoadButton\">\n <input type=\"file\" [id]=\"id\" class=\"upload\" [accept]=\"accept\" [multiple]=\"isMultipleInput\"\n (change)=\"onLoadFiles($event)\" />\n <label [for]=\"id\">\n <it-icon name=\"upload\" size=\"sm\"></it-icon>\n <span>{{'it.form.upload'|translate}}</span>\n </label>\n</ng-container>\n\n<ul class=\"upload-file-list\" [class.upload-file-list-image]=\"isImageList\" *ngIf=\"fileList.length\">\n <li *ngFor=\"let item of fileList\" class=\"upload-file\"\n [class.error]=\"item.error\"\n [class.uploading]=\"!item.error && item.progress !== undefined && item.progress > 0 && item.progress < 100\"\n [class.success]=\"!item.error && (!item.progress || item.progress >= 100)\">\n\n <div class=\"upload-image\" *ngIf=\"isImageList; else icon\">\n <img [attr.src]=\"previewImages.get(item.id)\" [alt]=\"item.file.name\" />\n </div>\n <ng-template #icon>\n <it-icon name=\"file\" size=\"sm\" [color]=\"!item.error ? (item.progress ? 'secondary' : 'primary') : 'danger'\"></it-icon>\n </ng-template>\n\n <p [itTooltip]=\"item.tooltip\">\n <span class=\"visually-hidden\">{{'it.form.uploaded-file'|translate : { name: item.file.name } }}</span>\n {{item.file.name}} <span class=\"upload-file-weight\">{{getFileSize(item.file)}}</span>\n </p>\n\n <button *ngIf=\"item.removable && (!item.progress || item.progress < 100)\" type=\"button\" (click)=\"deleteItem.emit(item)\">\n <span class=\"visually-hidden\">{{'it.form.delete-file'|translate : { name: item.file.name } }}</span>\n <it-icon name=\"close\"></it-icon>\n </button>\n <button *ngIf=\"(!item.removable && !item.progress) || (item.progress !== undefined && item.progress >= 100)\" type=\"button\" disabled>\n <span class=\"visually-hidden\">{{'it.form.upload-complete'|translate}}</span>\n <it-icon name=\"check\"></it-icon>\n </button>\n\n <it-progress-bar *ngIf=\"!item.error && item.progress !== undefined && item.progress > 0 && item.progress < 100\"\n [value]=\"item.progress\"></it-progress-bar>\n </li>\n</ul>\n" }]
89
+ }], propDecorators: { fileList: [{
90
+ type: Input
91
+ }], accept: [{
92
+ type: Input
93
+ }], multiple: [{
94
+ type: Input
95
+ }], images: [{
96
+ type: Input
97
+ }], hideLoadButton: [{
98
+ type: Input
99
+ }], uploadFiles: [{
100
+ type: Output
101
+ }], deleteItem: [{
102
+ type: Output
103
+ }] } });
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWZpbGUtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vdXBsb2FkLWZpbGUtbGlzdC91cGxvYWQtZmlsZS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS91cGxvYWQtZmlsZS1saXN0L3VwbG9hZC1maWxlLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzFFLE9BQU8sRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVoRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBTTNDLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxpQkFBaUI7SUFKOUQ7O1FBV0U7Ozs7O1dBS0c7UUFDTSxXQUFNLEdBQVcsR0FBRyxDQUFDO1FBRTlCOztXQUVHO1FBQ00sYUFBUSxHQUFpQixJQUFJLENBQUM7UUFZdkM7O1dBRUc7UUFDTyxnQkFBVyxHQUEyQixJQUFJLFlBQVksRUFBWSxDQUFDO1FBRTdFOztXQUVHO1FBQ08sZUFBVSxHQUFxQyxJQUFJLFlBQVksRUFBc0IsQ0FBQztRQUVoRzs7V0FFRztRQUNILGtCQUFhLEdBQXdCLElBQUksR0FBRyxFQUFrQixDQUFDO0tBdURoRTtJQXJEQyxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFO1lBQzNDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVRLFdBQVcsQ0FBQyxPQUFzQjtRQUN6QyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQzNDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUM5RSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUN2RCxDQUFDLENBQUM7WUFDSCxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN4QyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzdCLENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDNUI7SUFDSCxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVcsQ0FBQyxLQUFZO1FBQ3RCLE1BQU0sS0FBSyxHQUFJLEtBQUssQ0FBQyxNQUEyQixFQUFFLEtBQUssQ0FBQztRQUN4RCxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUMzQixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVyxDQUFDLElBQVU7UUFDcEIsT0FBTyxTQUFTLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0MsQ0FBQzs7b0hBaEdVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLGtUQ1hwQyxnbUVBd0NBOzJGRDdCYSx1QkFBdUI7a0JBSm5DLFNBQVM7K0JBQ0UsK0JBQStCOzhCQVFoQyxRQUFRO3NCQUFoQixLQUFLO2dCQVFHLE1BQU07c0JBQWQsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLE1BQU07c0JBQWQsS0FBSztnQkFLRyxjQUFjO3NCQUF0QixLQUFLO2dCQUtJLFdBQVc7c0JBQXBCLE1BQU07Z0JBS0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9hYnN0cmFjdHMvYWJzdHJhY3QuY29tcG9uZW50JztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgaXNUcnVlQm9vbGVhbklucHV0IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYm9vbGVhbi1pbnB1dCc7XG5pbXBvcnQgeyBVcGxvYWRGaWxlTGlzdEl0ZW0gfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2Zvcm0nO1xuaW1wb3J0IHsgRmlsZVV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZmlsZS11dGlscyc7XG5pbXBvcnQgeyBmb3JrSm9pbiwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2l0LXVwbG9hZC1maWxlLWxpc3RbZmlsZUxpc3RdJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3VwbG9hZC1maWxlLWxpc3QuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFVwbG9hZEZpbGVMaXN0Q29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIGZpbGVzIHRvIHNob3cgaW4gbGlzdFxuICAgKi9cbiAgQElucHV0KCkgZmlsZUxpc3QhOiBBcnJheTxVcGxvYWRGaWxlTGlzdEl0ZW0+O1xuXG4gIC8qKlxuICAgKiBUaGUgYWNjZXB0ZWQgZmlsZSB0eXBlIHRvIHVwbG9hZCA8YnI+XG4gICAqIFBvc3NpYmxlIHZhbHVlczogPGEgaHJlZj1cImh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvQmFzaWNzX29mX0hUVFAvTUlNRV90eXBlcy9Db21tb25fdHlwZXNcIj5NSU1FIFR5cGVzPC9hPiBzZXBhcmF0ZWQgYnkgY29tbWFcbiAgICogQGV4YW1wbGUgYXBwbGljYXRpb24vcGRmLGltYWdlL3BuZ1xuICAgKiBAZGVmYXVsdCAqXG4gICAqL1xuICBASW5wdXQoKSBhY2NlcHQ6IHN0cmluZyA9ICcqJztcblxuICAvKipcbiAgICogSWYgdXBsb2FkIG11bHRpcGxlIGZpbGVzXG4gICAqL1xuICBASW5wdXQoKSBtdWx0aXBsZTogQm9vbGVhbklucHV0ID0gdHJ1ZTtcblxuICAvKipcbiAgICogSWYgaXMgZmlsZSBsaXN0IGltYWdlXG4gICAqL1xuICBASW5wdXQoKSBpbWFnZXM/OiBCb29sZWFuSW5wdXQ7XG5cbiAgLyoqXG4gICAqIEhpZGUgdGhlIGxvYWQgYnV0dG9uXG4gICAqL1xuICBASW5wdXQoKSBoaWRlTG9hZEJ1dHRvbj86IEJvb2xlYW5JbnB1dDtcblxuICAvKipcbiAgICogRmlyZWQgd2hlbiB1cGxvYWQgbmV3IGZpbGVzXG4gICAqL1xuICBAT3V0cHV0KCkgdXBsb2FkRmlsZXM6IEV2ZW50RW1pdHRlcjxGaWxlTGlzdD4gPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGVMaXN0PigpO1xuXG4gIC8qKlxuICAgKiBGaXJlZCBvbiBkZWxldGUgaXRlbSBidXR0b24gY2xpY2tcbiAgICovXG4gIEBPdXRwdXQoKSBkZWxldGVJdGVtOiBFdmVudEVtaXR0ZXI8VXBsb2FkRmlsZUxpc3RJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXI8VXBsb2FkRmlsZUxpc3RJdGVtPigpO1xuXG4gIC8qKlxuICAgKiBDYWNoZSB0byBwcmV2aWV3IGltYWdlXG4gICAqL1xuICBwcmV2aWV3SW1hZ2VzOiBNYXA8bnVtYmVyLCBzdHJpbmc+ID0gbmV3IE1hcDxudW1iZXIsIHN0cmluZz4oKTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0ltYWdlTGlzdCAmJiB0aGlzLmFjY2VwdCA9PT0gJyonKSB7XG4gICAgICB0aGlzLmFjY2VwdCA9ICdpbWFnZS8qJztcbiAgICB9XG4gIH1cblxuICBvdmVycmlkZSBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2ZpbGVMaXN0J10gJiYgdGhpcy5pc0ltYWdlTGlzdCkge1xuICAgICAgY29uc3QgaW1hZ2VzJCA9IHRoaXMuZmlsZUxpc3QubWFwKGl0ZW0gPT4gRmlsZVV0aWxzLmZpbGVUb0Jhc2U2NChpdGVtLmZpbGUpLnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIHRhcChiYXNlNjQgPT4gdGhpcy5wcmV2aWV3SW1hZ2VzLnNldChpdGVtLmlkLCBiYXNlNjQpKVxuICAgICAgKSk7XG4gICAgICBmb3JrSm9pbihpbWFnZXMkKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBpc011bHRpcGxlSW5wdXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzVHJ1ZUJvb2xlYW5JbnB1dCh0aGlzLm11bHRpcGxlKTtcbiAgfVxuXG4gIGdldCBpc0ltYWdlTGlzdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNUcnVlQm9vbGVhbklucHV0KHRoaXMuaW1hZ2VzKTtcbiAgfVxuXG4gIGdldCBpc0hpZGVMb2FkQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1RydWVCb29sZWFuSW5wdXQodGhpcy5oaWRlTG9hZEJ1dHRvbik7XG4gIH1cblxuICAvKipcbiAgICogT24gbG9hZCBmaWxlIGZyb20gaW5wdXRcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqL1xuICBvbkxvYWRGaWxlcyhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBmaWxlcyA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCk/LmZpbGVzO1xuICAgIGlmICghZmlsZXMgfHwgIWZpbGVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnVwbG9hZEZpbGVzLmVtaXQoZmlsZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZmlsZSBzaXplIHN0cmluZ1xuICAgKiBAcGFyYW0gZmlsZVxuICAgKi9cbiAgZ2V0RmlsZVNpemUoZmlsZTogRmlsZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEZpbGVVdGlscy5nZXRGaWxlU2l6ZVN0cmluZyhmaWxlKTtcbiAgfVxuXG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzSGlkZUxvYWRCdXR0b25cIj5cbiAgPGlucHV0IHR5cGU9XCJmaWxlXCIgW2lkXT1cImlkXCIgY2xhc3M9XCJ1cGxvYWRcIiBbYWNjZXB0XT1cImFjY2VwdFwiIFttdWx0aXBsZV09XCJpc011bHRpcGxlSW5wdXRcIlxuICAgICAgICAgKGNoYW5nZSk9XCJvbkxvYWRGaWxlcygkZXZlbnQpXCIgLz5cbiAgPGxhYmVsIFtmb3JdPVwiaWRcIj5cbiAgICA8aXQtaWNvbiBuYW1lPVwidXBsb2FkXCIgc2l6ZT1cInNtXCI+PC9pdC1pY29uPlxuICAgIDxzcGFuPnt7J2l0LmZvcm0udXBsb2FkJ3x0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgPC9sYWJlbD5cbjwvbmctY29udGFpbmVyPlxuXG48dWwgY2xhc3M9XCJ1cGxvYWQtZmlsZS1saXN0XCIgW2NsYXNzLnVwbG9hZC1maWxlLWxpc3QtaW1hZ2VdPVwiaXNJbWFnZUxpc3RcIiAqbmdJZj1cImZpbGVMaXN0Lmxlbmd0aFwiPlxuICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsZUxpc3RcIiBjbGFzcz1cInVwbG9hZC1maWxlXCJcbiAgICAgIFtjbGFzcy5lcnJvcl09XCJpdGVtLmVycm9yXCJcbiAgICAgIFtjbGFzcy51cGxvYWRpbmddPVwiIWl0ZW0uZXJyb3IgJiYgaXRlbS5wcm9ncmVzcyAhPT0gdW5kZWZpbmVkICYmIGl0ZW0ucHJvZ3Jlc3MgPiAwICYmIGl0ZW0ucHJvZ3Jlc3MgPCAxMDBcIlxuICAgICAgW2NsYXNzLnN1Y2Nlc3NdPVwiIWl0ZW0uZXJyb3IgJiYgKCFpdGVtLnByb2dyZXNzIHx8IGl0ZW0ucHJvZ3Jlc3MgPj0gMTAwKVwiPlxuXG4gICAgPGRpdiBjbGFzcz1cInVwbG9hZC1pbWFnZVwiICpuZ0lmPVwiaXNJbWFnZUxpc3Q7IGVsc2UgaWNvblwiPlxuICAgICAgPGltZyBbYXR0ci5zcmNdPVwicHJldmlld0ltYWdlcy5nZXQoaXRlbS5pZClcIiBbYWx0XT1cIml0ZW0uZmlsZS5uYW1lXCIgLz5cbiAgICA8L2Rpdj5cbiAgICA8bmctdGVtcGxhdGUgI2ljb24+XG4gICAgICA8aXQtaWNvbiBuYW1lPVwiZmlsZVwiIHNpemU9XCJzbVwiIFtjb2xvcl09XCIhaXRlbS5lcnJvciA/IChpdGVtLnByb2dyZXNzID8gJ3NlY29uZGFyeScgOiAncHJpbWFyeScpIDogJ2RhbmdlcidcIj48L2l0LWljb24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxwIFtpdFRvb2x0aXBdPVwiaXRlbS50b29sdGlwXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPnt7J2l0LmZvcm0udXBsb2FkZWQtZmlsZSd8dHJhbnNsYXRlIDogeyBuYW1lOiBpdGVtLmZpbGUubmFtZSB9IH19PC9zcGFuPlxuICAgICAge3tpdGVtLmZpbGUubmFtZX19IDxzcGFuIGNsYXNzPVwidXBsb2FkLWZpbGUtd2VpZ2h0XCI+e3tnZXRGaWxlU2l6ZShpdGVtLmZpbGUpfX08L3NwYW4+XG4gICAgPC9wPlxuXG4gICAgPGJ1dHRvbiAqbmdJZj1cIml0ZW0ucmVtb3ZhYmxlICYmICghaXRlbS5wcm9ncmVzcyB8fCBpdGVtLnByb2dyZXNzIDwgMTAwKVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZGVsZXRlSXRlbS5lbWl0KGl0ZW0pXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPnt7J2l0LmZvcm0uZGVsZXRlLWZpbGUnfHRyYW5zbGF0ZSA6IHsgbmFtZTogaXRlbS5maWxlLm5hbWUgfSB9fTwvc3Bhbj5cbiAgICAgIDxpdC1pY29uIG5hbWU9XCJjbG9zZVwiPjwvaXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uICpuZ0lmPVwiKCFpdGVtLnJlbW92YWJsZSAmJiAhaXRlbS5wcm9ncmVzcykgfHwgKGl0ZW0ucHJvZ3Jlc3MgIT09IHVuZGVmaW5lZCAmJiBpdGVtLnByb2dyZXNzID49IDEwMClcIiB0eXBlPVwiYnV0dG9uXCIgZGlzYWJsZWQ+XG4gICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPnt7J2l0LmZvcm0udXBsb2FkLWNvbXBsZXRlJ3x0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgIDxpdC1pY29uIG5hbWU9XCJjaGVja1wiPjwvaXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxpdC1wcm9ncmVzcy1iYXIgKm5nSWY9XCIhaXRlbS5lcnJvciAmJiBpdGVtLnByb2dyZXNzICE9PSB1bmRlZmluZWQgJiYgaXRlbS5wcm9ncmVzcyA+IDAgJiYgaXRlbS5wcm9ncmVzcyA8IDEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW0ucHJvZ3Jlc3NcIj48L2l0LXByb2dyZXNzLWJhcj5cbiAgPC9saT5cbjwvdWw+XG4iXX0=
@@ -0,0 +1,69 @@
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import { isTrueBooleanInput } from '../../../utils/boolean-input';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "../../core/button/button.directive";
6
+ import * as i3 from "../../utils/icon/icon.component";
7
+ import * as i4 from "@ngx-translate/core";
8
+ export class BackButtonComponent {
9
+ constructor(_location) {
10
+ this._location = _location;
11
+ /**
12
+ * Back button style
13
+ * - <b>link</b>: use a link with icon and text
14
+ * - <b>button</b>: use a button with icon and text
15
+ * @default button
16
+ */
17
+ this.buttonStyle = 'button';
18
+ /**
19
+ * Button direction
20
+ * - <b>left</b>: Back direction
21
+ * - <b>up</b>: Upper direction
22
+ * @default left
23
+ */
24
+ this.direction = 'left';
25
+ /**
26
+ * Show/Hide icon
27
+ * @default true
28
+ */
29
+ this.showIcon = true;
30
+ /**
31
+ * Show/Hide text
32
+ * @default true
33
+ */
34
+ this.showText = true;
35
+ }
36
+ get isShowIcon() {
37
+ return isTrueBooleanInput(this.showIcon);
38
+ }
39
+ get isShowText() {
40
+ return isTrueBooleanInput(this.showText);
41
+ }
42
+ /**
43
+ * Go back function
44
+ */
45
+ goBack(event) {
46
+ event.preventDefault();
47
+ if (this.backFn) {
48
+ return this.backFn(this._location);
49
+ }
50
+ this._location.back();
51
+ }
52
+ }
53
+ BackButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: BackButtonComponent, deps: [{ token: i1.Location }], target: i0.ɵɵFactoryTarget.Component });
54
+ BackButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: BackButtonComponent, selector: "it-back-button", inputs: { buttonStyle: "buttonStyle", direction: "direction", showIcon: "showIcon", showText: "showText", backFn: "backFn" }, exportAs: ["itBackButton"], ngImport: i0, template: "<a *ngIf=\"buttonStyle === 'link'\" href=\"#\" class=\"go-back\" (click)=\"goBack($event)\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n\n<button *ngIf=\"buttonStyle === 'button'\" itButton=\"primary\" class=\"go-back\" (click)=\"goBack($event)\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</button>\n\n<ng-template #content>\n <it-icon *ngIf=\"isShowIcon\"\n size=\"sm\"\n [name]=\"direction === 'left' ? 'arrow-left' : 'arrow-up'\"\n [color]=\"buttonStyle === 'link' ? 'primary' : 'white'\"\n [class.me-2]=\"isShowText\"></it-icon>\n\n <span [class.visually-hidden]=\"!isShowText\">\n {{(direction === 'left' ? 'it.navigation.go-back' : 'it.navigation.upper-level') | translate}}\n </span>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.ButtonDirective, selector: "[itButton]", inputs: ["itButton", "size", "block", "disabled"], exportAs: ["itButton"] }, { kind: "component", type: i3.IconComponent, selector: "it-icon[name]", inputs: ["name", "size", "color", "padded", "class"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: BackButtonComponent, decorators: [{
56
+ type: Component,
57
+ args: [{ selector: 'it-back-button', exportAs: 'itBackButton', changeDetection: ChangeDetectionStrategy.OnPush, template: "<a *ngIf=\"buttonStyle === 'link'\" href=\"#\" class=\"go-back\" (click)=\"goBack($event)\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n\n<button *ngIf=\"buttonStyle === 'button'\" itButton=\"primary\" class=\"go-back\" (click)=\"goBack($event)\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</button>\n\n<ng-template #content>\n <it-icon *ngIf=\"isShowIcon\"\n size=\"sm\"\n [name]=\"direction === 'left' ? 'arrow-left' : 'arrow-up'\"\n [color]=\"buttonStyle === 'link' ? 'primary' : 'white'\"\n [class.me-2]=\"isShowText\"></it-icon>\n\n <span [class.visually-hidden]=\"!isShowText\">\n {{(direction === 'left' ? 'it.navigation.go-back' : 'it.navigation.upper-level') | translate}}\n </span>\n</ng-template>\n" }]
58
+ }], ctorParameters: function () { return [{ type: i1.Location }]; }, propDecorators: { buttonStyle: [{
59
+ type: Input
60
+ }], direction: [{
61
+ type: Input
62
+ }], showIcon: [{
63
+ type: Input
64
+ }], showText: [{
65
+ type: Input
66
+ }], backFn: [{
67
+ type: Input
68
+ }] } });
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFjay1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9uYXZpZ2F0aW9uL2JhY2stYnV0dG9uL2JhY2stYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9iYWNrLWJ1dHRvbi9iYWNrLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRSxPQUFPLEVBQWdCLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7OztBQVFoRixNQUFNLE9BQU8sbUJBQW1CO0lBK0M5QixZQUNrQixTQUFtQjtRQUFuQixjQUFTLEdBQVQsU0FBUyxDQUFVO1FBOUNyQzs7Ozs7V0FLRztRQUNNLGdCQUFXLEdBQXNCLFFBQVEsQ0FBQztRQUVuRDs7Ozs7V0FLRztRQUNNLGNBQVMsR0FBa0IsTUFBTSxDQUFDO1FBRTNDOzs7V0FHRztRQUNNLGFBQVEsR0FBaUIsSUFBSSxDQUFDO1FBRXZDOzs7V0FHRztRQUNNLGFBQVEsR0FBaUIsSUFBSSxDQUFDO0lBc0J2QyxDQUFDO0lBWEQsSUFBSSxVQUFVO1FBQ1osT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFPRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxLQUFZO1FBQ3hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3BDO1FBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDOztnSEE5RFUsbUJBQW1CO29HQUFuQixtQkFBbUIsZ05DVmhDLHN5QkFtQkE7MkZEVGEsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNFLGdCQUFnQixZQUVoQixjQUFjLG1CQUNQLHVCQUF1QixDQUFDLE1BQU07K0ZBVXRDLFdBQVc7c0JBQW5CLEtBQUs7Z0JBUUcsU0FBUztzQkFBakIsS0FBSztnQkFNRyxRQUFRO3NCQUFoQixLQUFLO2dCQU1HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBU0csTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgaXNUcnVlQm9vbGVhbklucHV0IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYm9vbGVhbi1pbnB1dCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2l0LWJhY2stYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2JhY2stYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgZXhwb3J0QXM6ICdpdEJhY2tCdXR0b24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBCYWNrQnV0dG9uQ29tcG9uZW50IHtcblxuICAvKipcbiAgICogQmFjayBidXR0b24gc3R5bGVcbiAgICogLSA8Yj5saW5rPC9iPjogdXNlIGEgbGluayB3aXRoIGljb24gYW5kIHRleHRcbiAgICogLSA8Yj5idXR0b248L2I+OiB1c2UgYSBidXR0b24gd2l0aCBpY29uIGFuZCB0ZXh0XG4gICAqIEBkZWZhdWx0IGJ1dHRvblxuICAgKi9cbiAgQElucHV0KCkgYnV0dG9uU3R5bGU6ICdsaW5rJyB8ICdidXR0b24nID0gJ2J1dHRvbic7XG5cbiAgLyoqXG4gICAqIEJ1dHRvbiBkaXJlY3Rpb25cbiAgICogLSA8Yj5sZWZ0PC9iPjogQmFjayBkaXJlY3Rpb25cbiAgICogLSA8Yj51cDwvYj46IFVwcGVyIGRpcmVjdGlvblxuICAgKiBAZGVmYXVsdCBsZWZ0XG4gICAqL1xuICBASW5wdXQoKSBkaXJlY3Rpb246ICdsZWZ0JyB8ICd1cCcgPSAnbGVmdCc7XG5cbiAgLyoqXG4gICAqIFNob3cvSGlkZSBpY29uXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIEBJbnB1dCgpIHNob3dJY29uOiBCb29sZWFuSW5wdXQgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBTaG93L0hpZGUgdGV4dFxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoKSBzaG93VGV4dDogQm9vbGVhbklucHV0ID0gdHJ1ZTtcblxuICAvKipcbiAgICogQ3VzdG9tIGJhY2sgbG9naWMgPGJyLz5cbiAgICpcbiAgICogTk9URTogdG8gdXNlICd0aGlzJyBuZWVkIGJpbmQgZnVuY3Rpb24gIDxici8+XG4gICAqIEBleGFtcGxlIGJhY2tDYkZuID0gdGhpcy5lcnJvckNhbGxiYWNrLmJpbmQodGhpcyk7XG4gICAqIChlcnJvckNhbGxiYWNrIGlzIHlvdXIgZnVuY3Rpb24sIHBhc3MgYmFja0NiRm4gdG8gdGhlIGNvbXBvbmVudClcbiAgICovXG4gIEBJbnB1dCgpIGJhY2tGbj86IChsb2NhdGlvbjogTG9jYXRpb24pID0+IHZvaWQ7XG5cbiAgZ2V0IGlzU2hvd0ljb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzVHJ1ZUJvb2xlYW5JbnB1dCh0aGlzLnNob3dJY29uKTtcbiAgfVxuXG4gIGdldCBpc1Nob3dUZXh0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1RydWVCb29sZWFuSW5wdXQodGhpcy5zaG93VGV4dCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgX2xvY2F0aW9uOiBMb2NhdGlvblxuICApIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBHbyBiYWNrIGZ1bmN0aW9uXG4gICAqL1xuICBwdWJsaWMgZ29CYWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHRoaXMuYmFja0ZuKSB7XG4gICAgICByZXR1cm4gdGhpcy5iYWNrRm4odGhpcy5fbG9jYXRpb24pO1xuICAgIH1cblxuICAgIHRoaXMuX2xvY2F0aW9uLmJhY2soKTtcbiAgfVxufVxuIiwiPGEgKm5nSWY9XCJidXR0b25TdHlsZSA9PT0gJ2xpbmsnXCIgaHJlZj1cIiNcIiBjbGFzcz1cImdvLWJhY2tcIiAoY2xpY2spPVwiZ29CYWNrKCRldmVudClcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbjwvYT5cblxuPGJ1dHRvbiAqbmdJZj1cImJ1dHRvblN0eWxlID09PSAnYnV0dG9uJ1wiIGl0QnV0dG9uPVwicHJpbWFyeVwiIGNsYXNzPVwiZ28tYmFja1wiIChjbGljayk9XCJnb0JhY2soJGV2ZW50KVwiPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFwiPjwvbmctY29udGFpbmVyPlxuPC9idXR0b24+XG5cbjxuZy10ZW1wbGF0ZSAjY29udGVudD5cbiAgPGl0LWljb24gKm5nSWY9XCJpc1Nob3dJY29uXCJcbiAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgW25hbWVdPVwiZGlyZWN0aW9uID09PSAnbGVmdCcgPyAnYXJyb3ctbGVmdCcgOiAnYXJyb3ctdXAnXCJcbiAgICAgICAgICAgW2NvbG9yXT1cImJ1dHRvblN0eWxlID09PSAnbGluaycgPyAncHJpbWFyeScgOiAnd2hpdGUnXCJcbiAgICAgICAgICAgW2NsYXNzLm1lLTJdPVwiaXNTaG93VGV4dFwiPjwvaXQtaWNvbj5cblxuICA8c3BhbiBbY2xhc3MudmlzdWFsbHktaGlkZGVuXT1cIiFpc1Nob3dUZXh0XCI+XG4gICAge3soZGlyZWN0aW9uID09PSAnbGVmdCcgPyAnaXQubmF2aWdhdGlvbi5nby1iYWNrJyA6ICdpdC5uYXZpZ2F0aW9uLnVwcGVyLWxldmVsJykgfCB0cmFuc2xhdGV9fVxuICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -0,0 +1,64 @@
1
+ import { ChangeDetectionStrategy, Component, Input, ViewChild } from '@angular/core';
2
+ import { isTrueBooleanInput } from '../../../utils/boolean-input';
3
+ import { AbstractComponent } from '../../../abstracts/abstract.component';
4
+ import { BackToTop } from 'bootstrap-italia';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../../utils/icon/icon.component";
7
+ export class BackToTopComponent extends AbstractComponent {
8
+ get isSmall() {
9
+ return isTrueBooleanInput(this.small);
10
+ }
11
+ get isShadow() {
12
+ return isTrueBooleanInput(this.shadow);
13
+ }
14
+ get isDark() {
15
+ return isTrueBooleanInput(this.dark);
16
+ }
17
+ ngAfterViewInit() {
18
+ super.ngAfterViewInit();
19
+ if (this.backToTopElement) {
20
+ const element = this.backToTopElement.nativeElement;
21
+ this.backToTop = BackToTop.getOrCreateInstance(element);
22
+ }
23
+ }
24
+ /**
25
+ * Show button
26
+ */
27
+ show() {
28
+ this.backToTop?.show();
29
+ }
30
+ /**
31
+ * Hide the button
32
+ */
33
+ hide() {
34
+ this.backToTop?.hide();
35
+ }
36
+ /**
37
+ * Activates the scroll animation towards the Y coordinate indicated by the positionTop option
38
+ */
39
+ scrollToTop() {
40
+ this.backToTop?.scrollToTop();
41
+ }
42
+ /**
43
+ * Eliminate component features
44
+ */
45
+ dispose() {
46
+ this.backToTop?.dispose();
47
+ }
48
+ }
49
+ BackToTopComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: BackToTopComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
50
+ BackToTopComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: BackToTopComponent, selector: "it-back-to-top", inputs: { small: "small", shadow: "shadow", dark: "dark" }, viewQueries: [{ propertyName: "backToTopElement", first: true, predicate: ["backToTop"], descendants: true }], exportAs: ["itBackToTop"], usesInheritance: true, ngImport: i0, template: "<a #backToTop [id]=\"id\"\n href=\"#\"\n aria-hidden=\"true\"\n class=\"back-to-top\"\n [class.back-to-top-small]=\"isSmall\"\n [class.shadow]=\"isShadow\"\n [class.dark]=\"isDark\">\n\n <it-icon name=\"arrow-up\" [color]=\"isDark ? 'secondary' : 'light'\"></it-icon>\n</a>\n", dependencies: [{ kind: "component", type: i1.IconComponent, selector: "it-icon[name]", inputs: ["name", "size", "color", "padded", "class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: BackToTopComponent, decorators: [{
52
+ type: Component,
53
+ args: [{ selector: 'it-back-to-top', exportAs: 'itBackToTop', changeDetection: ChangeDetectionStrategy.OnPush, template: "<a #backToTop [id]=\"id\"\n href=\"#\"\n aria-hidden=\"true\"\n class=\"back-to-top\"\n [class.back-to-top-small]=\"isSmall\"\n [class.shadow]=\"isShadow\"\n [class.dark]=\"isDark\">\n\n <it-icon name=\"arrow-up\" [color]=\"isDark ? 'secondary' : 'light'\"></it-icon>\n</a>\n" }]
54
+ }], propDecorators: { small: [{
55
+ type: Input
56
+ }], shadow: [{
57
+ type: Input
58
+ }], dark: [{
59
+ type: Input
60
+ }], backToTopElement: [{
61
+ type: ViewChild,
62
+ args: ['backToTop']
63
+ }] } });
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFjay10by10b3AuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9uYXZpZ2F0aW9uL2JhY2stdG8tdG9wL2JhY2stdG8tdG9wLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9iYWNrLXRvLXRvcC9iYWNrLXRvLXRvcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFnQixrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBUTdDLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxpQkFBaUI7SUFxQnZELElBQUksT0FBTztRQUNULE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVRLGVBQWU7UUFDdEIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXhCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUM7WUFDcEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDekQ7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxJQUFJO1FBQ1QsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxJQUFJO1FBQ1QsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksT0FBTztRQUNaLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDNUIsQ0FBQzs7K0dBcEVVLGtCQUFrQjttR0FBbEIsa0JBQWtCLG1SQ1gvQixrU0FVQTsyRkRDYSxrQkFBa0I7a0JBTjlCLFNBQVM7K0JBQ0UsZ0JBQWdCLFlBRWhCLGFBQWEsbUJBQ04sdUJBQXVCLENBQUMsTUFBTTs4QkFPdEMsS0FBSztzQkFBYixLQUFLO2dCQUtHLE1BQU07c0JBQWQsS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBSTBCLGdCQUFnQjtzQkFBL0MsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBpc1RydWVCb29sZWFuSW5wdXQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9ib29sZWFuLWlucHV0JztcbmltcG9ydCB7IEFic3RyYWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vYWJzdHJhY3RzL2Fic3RyYWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYWNrVG9Ub3AgfSBmcm9tICdib290c3RyYXAtaXRhbGlhJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaXQtYmFjay10by10b3AnLFxuICB0ZW1wbGF0ZVVybDogJy4vYmFjay10by10b3AuY29tcG9uZW50Lmh0bWwnLFxuICBleHBvcnRBczogJ2l0QmFja1RvVG9wJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQmFja1RvVG9wQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RDb21wb25lbnQge1xuXG4gIC8qKlxuICAgKiBTaG93IHNtYWxsIGJ1dHRvblxuICAgKi9cbiAgQElucHV0KCkgc21hbGw/OiBCb29sZWFuSW5wdXQ7XG5cbiAgLyoqXG4gICAqIFNob3cgc2hhZG93XG4gICAqL1xuICBASW5wdXQoKSBzaGFkb3c/OiBCb29sZWFuSW5wdXQ7XG5cbiAgLyoqXG4gICAqIEJ1dHRvbiB1c2FibGUgYnV0dG9uIG9uIGEgZGFyayBiYWNrZ3JvdW5kXG4gICAqL1xuICBASW5wdXQoKSBkYXJrPzogQm9vbGVhbklucHV0O1xuXG4gIHByaXZhdGUgYmFja1RvVG9wPzogQmFja1RvVG9wO1xuXG4gIEBWaWV3Q2hpbGQoJ2JhY2tUb1RvcCcpIHByaXZhdGUgYmFja1RvVG9wRWxlbWVudD86IEVsZW1lbnRSZWY8SFRNTEFuY2hvckVsZW1lbnQ+O1xuXG4gIGdldCBpc1NtYWxsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1RydWVCb29sZWFuSW5wdXQodGhpcy5zbWFsbCk7XG4gIH1cblxuICBnZXQgaXNTaGFkb3coKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzVHJ1ZUJvb2xlYW5JbnB1dCh0aGlzLnNoYWRvdyk7XG4gIH1cblxuICBnZXQgaXNEYXJrKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1RydWVCb29sZWFuSW5wdXQodGhpcy5kYXJrKTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcblxuICAgIGlmICh0aGlzLmJhY2tUb1RvcEVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmJhY2tUb1RvcEVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICAgIHRoaXMuYmFja1RvVG9wID0gQmFja1RvVG9wLmdldE9yQ3JlYXRlSW5zdGFuY2UoZWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNob3cgYnV0dG9uXG4gICAqL1xuICBwdWJsaWMgc2hvdygpOiB2b2lkIHtcbiAgICB0aGlzLmJhY2tUb1RvcD8uc2hvdygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhpZGUgdGhlIGJ1dHRvblxuICAgKi9cbiAgcHVibGljIGhpZGUoKTogdm9pZCB7XG4gICAgdGhpcy5iYWNrVG9Ub3A/LmhpZGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZXMgdGhlIHNjcm9sbCBhbmltYXRpb24gdG93YXJkcyB0aGUgWSBjb29yZGluYXRlIGluZGljYXRlZCBieSB0aGUgcG9zaXRpb25Ub3Agb3B0aW9uXG4gICAqL1xuICBwdWJsaWMgc2Nyb2xsVG9Ub3AoKTogdm9pZCB7XG4gICAgdGhpcy5iYWNrVG9Ub3A/LnNjcm9sbFRvVG9wKCk7XG4gIH1cblxuICAvKipcbiAgICogRWxpbWluYXRlIGNvbXBvbmVudCBmZWF0dXJlc1xuICAgKi9cbiAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5iYWNrVG9Ub3A/LmRpc3Bvc2UoKTtcbiAgfVxufVxuIiwiPGEgI2JhY2tUb1RvcCBbaWRdPVwiaWRcIlxuICAgaHJlZj1cIiNcIlxuICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgIGNsYXNzPVwiYmFjay10by10b3BcIlxuICAgW2NsYXNzLmJhY2stdG8tdG9wLXNtYWxsXT1cImlzU21hbGxcIlxuICAgW2NsYXNzLnNoYWRvd109XCJpc1NoYWRvd1wiXG4gICBbY2xhc3MuZGFya109XCJpc0RhcmtcIj5cblxuICA8aXQtaWNvbiBuYW1lPVwiYXJyb3ctdXBcIiBbY29sb3JdPVwiaXNEYXJrID8gJ3NlY29uZGFyeScgOiAnbGlnaHQnXCI+PC9pdC1pY29uPlxuPC9hPlxuIl19
@@ -0,0 +1,56 @@
1
+ import { ChangeDetectionStrategy, Component, ContentChildren, Input } from '@angular/core';
2
+ import { BreadcrumbItemComponent } from '../breadcrumb-item/breadcrumb-item.component';
3
+ import { isTrueBooleanInput } from '../../../../utils/boolean-input';
4
+ import { startWith } from 'rxjs';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ import * as i2 from "../../../core/link/link.component";
8
+ import * as i3 from "../../../utils/icon/icon.component";
9
+ import * as i4 from "@ngx-translate/core";
10
+ export class BreadcrumbComponent {
11
+ constructor(_changeDetectorRef) {
12
+ this._changeDetectorRef = _changeDetectorRef;
13
+ /**
14
+ * The character to use as separator
15
+ * @default /
16
+ */
17
+ this.separator = '/';
18
+ }
19
+ get isDark() {
20
+ return isTrueBooleanInput(this.dark);
21
+ }
22
+ ngAfterViewInit() {
23
+ this.items?.changes.pipe(// When breadcrumb items changes (dynamic add/remove)
24
+ startWith(undefined)).subscribe(() => {
25
+ this.itemSubscriptions?.forEach(sub => sub.unsubscribe()); // Remove old subscriptions
26
+ this.itemSubscriptions = this.items?.map(item => item.valueChanges.subscribe(() => {
27
+ this._changeDetectorRef.detectChanges(); // DetectChanges when breadcrumb item attributes changes
28
+ }));
29
+ this._changeDetectorRef.detectChanges(); // Force update html render
30
+ });
31
+ }
32
+ ngOnDestroy() {
33
+ this.itemSubscriptions?.forEach(item => item.unsubscribe());
34
+ }
35
+ /**
36
+ * Check if index is last item
37
+ * @param index
38
+ */
39
+ isLastItem(index) {
40
+ return !!this.items && index >= (this.items.length - 1);
41
+ }
42
+ }
43
+ BreadcrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: BreadcrumbComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
44
+ BreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: BreadcrumbComponent, selector: "it-breadcrumb", inputs: { separator: "separator", dark: "dark" }, queries: [{ propertyName: "items", predicate: BreadcrumbItemComponent }], ngImport: i0, template: "<nav class=\"breadcrumb-container\" [attr.aria-label]=\"'it.navigation.navigation-path'|translate\">\n <ol class=\"breadcrumb\" [class.dark]=\"isDark\" [class.px-3]=\"isDark\">\n <li *ngFor=\"let item of items; let i = index\"\n class=\"breadcrumb-item\"\n [class.active]=\"item.isActive\"\n [attr.aria-current]=\"item.isActive ? 'page' : null\">\n\n <it-icon *ngIf=\"item.iconName\"\n [name]=\"item.iconName\"\n [color]=\"isDark ? 'white' : 'secondary'\"\n size=\"sm\"\n class=\"align-top me-1\"></it-icon>\n\n <it-link *ngIf=\"!item.isActive && !isLastItem(i); else activeContent\"\n [href]=\"item.href\" [class]=\"item.class\" [externalLink]=\"item.externalLink\" [disabled]=\"item.disabled\">\n <ng-container *ngTemplateOutlet=\"item.htmlContent\"></ng-container>\n </it-link>\n\n <ng-template #activeContent>\n <ng-container *ngTemplateOutlet=\"item.htmlContent\"></ng-container>\n </ng-template>\n\n <span *ngIf=\"!isLastItem(i)\" class=\"separator\">{{separator}}</span>\n </li>\n </ol>\n</nav>\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: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.LinkComponent, selector: "it-link", inputs: ["href", "externalLink", "disabled", "class"] }, { kind: "component", type: i3.IconComponent, selector: "it-icon[name]", inputs: ["name", "size", "color", "padded", "class"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: BreadcrumbComponent, decorators: [{
46
+ type: Component,
47
+ args: [{ selector: 'it-breadcrumb', changeDetection: ChangeDetectionStrategy.OnPush, template: "<nav class=\"breadcrumb-container\" [attr.aria-label]=\"'it.navigation.navigation-path'|translate\">\n <ol class=\"breadcrumb\" [class.dark]=\"isDark\" [class.px-3]=\"isDark\">\n <li *ngFor=\"let item of items; let i = index\"\n class=\"breadcrumb-item\"\n [class.active]=\"item.isActive\"\n [attr.aria-current]=\"item.isActive ? 'page' : null\">\n\n <it-icon *ngIf=\"item.iconName\"\n [name]=\"item.iconName\"\n [color]=\"isDark ? 'white' : 'secondary'\"\n size=\"sm\"\n class=\"align-top me-1\"></it-icon>\n\n <it-link *ngIf=\"!item.isActive && !isLastItem(i); else activeContent\"\n [href]=\"item.href\" [class]=\"item.class\" [externalLink]=\"item.externalLink\" [disabled]=\"item.disabled\">\n <ng-container *ngTemplateOutlet=\"item.htmlContent\"></ng-container>\n </it-link>\n\n <ng-template #activeContent>\n <ng-container *ngTemplateOutlet=\"item.htmlContent\"></ng-container>\n </ng-template>\n\n <span *ngIf=\"!isLastItem(i)\" class=\"separator\">{{separator}}</span>\n </li>\n </ol>\n</nav>\n" }]
48
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { separator: [{
49
+ type: Input
50
+ }], dark: [{
51
+ type: Input
52
+ }], items: [{
53
+ type: ContentChildren,
54
+ args: [BreadcrumbItemComponent]
55
+ }] } });
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL25hdmlnYXRpb24vYnJlYWRjcnVtYnMvYnJlYWRjcnVtYi9icmVhZGNydW1iLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9icmVhZGNydW1icy9icmVhZGNydW1iL2JyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLEtBQUssRUFHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RixPQUFPLEVBQWdCLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkYsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsTUFBTSxNQUFNLENBQUM7Ozs7OztBQU8vQyxNQUFNLE9BQU8sbUJBQW1CO0lBd0I5QixZQUNtQixrQkFBcUM7UUFBckMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQXZCeEQ7OztXQUdHO1FBQ00sY0FBUyxHQUFXLEdBQUcsQ0FBQztJQXFCakMsQ0FBQztJQVRELElBQUksTUFBTTtRQUNSLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFTRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFFLHFEQUFxRDtRQUM3RSxTQUFTLENBQUMsU0FBUyxDQUFDLENBQ3JCLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNmLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLDJCQUEyQjtZQUN0RixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2hGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLHdEQUF3RDtZQUNuRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ0osSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsMkJBQTJCO1FBQ3RFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVEOzs7T0FHRztJQUNPLFVBQVUsQ0FBQyxLQUFhO1FBQ2hDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQzs7Z0hBbkRVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLDZIQWdCYix1QkFBdUIsNkJDbkMxQyxpb0NBMEJBOzJGRFBhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxlQUFlLG1CQUVSLHVCQUF1QixDQUFDLE1BQU07d0dBUXRDLFNBQVM7c0JBQWpCLEtBQUs7Z0JBS0csSUFBSTtzQkFBWixLQUFLO2dCQUtvQyxLQUFLO3NCQUE5QyxlQUFlO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIFF1ZXJ5TGlzdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJyZWFkY3J1bWJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vYnJlYWRjcnVtYi1pdGVtL2JyZWFkY3J1bWItaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBpc1RydWVCb29sZWFuSW5wdXQgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9ib29sZWFuLWlucHV0JztcbmltcG9ydCB7IHN0YXJ0V2l0aCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2l0LWJyZWFkY3J1bWInLFxuICB0ZW1wbGF0ZVVybDogJy4vYnJlYWRjcnVtYi5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEJyZWFkY3J1bWJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIC8qKlxuICAgKiBUaGUgY2hhcmFjdGVyIHRvIHVzZSBhcyBzZXBhcmF0b3JcbiAgICogQGRlZmF1bHQgL1xuICAgKi9cbiAgQElucHV0KCkgc2VwYXJhdG9yOiBzdHJpbmcgPSAnLyc7XG5cbiAgLyoqXG4gICAqIERhcmsgc3R5bGVcbiAgICovXG4gIEBJbnB1dCgpIGRhcms/OiBCb29sZWFuSW5wdXQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWIgaXRlbXNcbiAgICovXG4gIEBDb250ZW50Q2hpbGRyZW4oQnJlYWRjcnVtYkl0ZW1Db21wb25lbnQpIGl0ZW1zPzogUXVlcnlMaXN0PEJyZWFkY3J1bWJJdGVtQ29tcG9uZW50PjtcblxuICBnZXQgaXNEYXJrKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1RydWVCb29sZWFuSW5wdXQodGhpcy5kYXJrKTtcbiAgfVxuXG4gIHByaXZhdGUgaXRlbVN1YnNjcmlwdGlvbnM/OiBBcnJheTxTdWJzY3JpcHRpb24+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLml0ZW1zPy5jaGFuZ2VzLnBpcGUoIC8vIFdoZW4gYnJlYWRjcnVtYiBpdGVtcyBjaGFuZ2VzIChkeW5hbWljIGFkZC9yZW1vdmUpXG4gICAgICBzdGFydFdpdGgodW5kZWZpbmVkKVxuICAgICkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuaXRlbVN1YnNjcmlwdGlvbnM/LmZvckVhY2goc3ViID0+IHN1Yi51bnN1YnNjcmliZSgpKTsgLy8gUmVtb3ZlIG9sZCBzdWJzY3JpcHRpb25zXG4gICAgICB0aGlzLml0ZW1TdWJzY3JpcHRpb25zID0gdGhpcy5pdGVtcz8ubWFwKGl0ZW0gPT4gaXRlbS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpOyAvLyBEZXRlY3RDaGFuZ2VzIHdoZW4gYnJlYWRjcnVtYiBpdGVtIGF0dHJpYnV0ZXMgY2hhbmdlc1xuICAgICAgfSkpO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpOyAvLyBGb3JjZSB1cGRhdGUgaHRtbCByZW5kZXJcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuaXRlbVN1YnNjcmlwdGlvbnM/LmZvckVhY2goaXRlbSA9PiBpdGVtLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGluZGV4IGlzIGxhc3QgaXRlbVxuICAgKiBAcGFyYW0gaW5kZXhcbiAgICovXG4gIHByb3RlY3RlZCBpc0xhc3RJdGVtKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLml0ZW1zICYmIGluZGV4ID49ICh0aGlzLml0ZW1zLmxlbmd0aCAtIDEpO1xuICB9XG5cbn1cbiIsIjxuYXYgY2xhc3M9XCJicmVhZGNydW1iLWNvbnRhaW5lclwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ2l0Lm5hdmlnYXRpb24ubmF2aWdhdGlvbi1wYXRoJ3x0cmFuc2xhdGVcIj5cbiAgPG9sIGNsYXNzPVwiYnJlYWRjcnVtYlwiIFtjbGFzcy5kYXJrXT1cImlzRGFya1wiIFtjbGFzcy5weC0zXT1cImlzRGFya1wiPlxuICAgIDxsaSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgIGNsYXNzPVwiYnJlYWRjcnVtYi1pdGVtXCJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJpdGVtLmlzQWN0aXZlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cIml0ZW0uaXNBY3RpdmUgPyAncGFnZScgOiBudWxsXCI+XG5cbiAgICAgIDxpdC1pY29uICpuZ0lmPVwiaXRlbS5pY29uTmFtZVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwiaXRlbS5pY29uTmFtZVwiXG4gICAgICAgICAgICAgICAgW2NvbG9yXT1cImlzRGFyayA/ICd3aGl0ZScgOiAnc2Vjb25kYXJ5J1wiXG4gICAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFsaWduLXRvcCBtZS0xXCI+PC9pdC1pY29uPlxuXG4gICAgICA8aXQtbGluayAqbmdJZj1cIiFpdGVtLmlzQWN0aXZlICYmICFpc0xhc3RJdGVtKGkpOyBlbHNlIGFjdGl2ZUNvbnRlbnRcIlxuICAgICAgICAgICAgICAgIFtocmVmXT1cIml0ZW0uaHJlZlwiIFtjbGFzc109XCJpdGVtLmNsYXNzXCIgW2V4dGVybmFsTGlua109XCJpdGVtLmV4dGVybmFsTGlua1wiIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtLmh0bWxDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2l0LWxpbms+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjYWN0aXZlQ29udGVudD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW0uaHRtbENvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxzcGFuICpuZ0lmPVwiIWlzTGFzdEl0ZW0oaSlcIiBjbGFzcz1cInNlcGFyYXRvclwiPnt7c2VwYXJhdG9yfX08L3NwYW4+XG4gICAgPC9saT5cbiAgPC9vbD5cbjwvbmF2PlxuIl19
@@ -0,0 +1,23 @@
1
+ import { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewChild } from '@angular/core';
2
+ import { isTrueBooleanInput } from '../../../../utils/boolean-input';
3
+ import { LinkComponent } from '../../../core/link/link.component';
4
+ import * as i0 from "@angular/core";
5
+ export class BreadcrumbItemComponent extends LinkComponent {
6
+ get isActive() {
7
+ return isTrueBooleanInput(this.active);
8
+ }
9
+ }
10
+ BreadcrumbItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: BreadcrumbItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
11
+ BreadcrumbItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: BreadcrumbItemComponent, selector: "it-breadcrumb-item", inputs: { active: "active", iconName: "iconName" }, viewQueries: [{ propertyName: "htmlContent", first: true, predicate: TemplateRef, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template>\n <ng-content></ng-content>\n</ng-template>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: BreadcrumbItemComponent, decorators: [{
13
+ type: Component,
14
+ args: [{ selector: 'it-breadcrumb-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template>\n <ng-content></ng-content>\n</ng-template>\n" }]
15
+ }], propDecorators: { active: [{
16
+ type: Input
17
+ }], iconName: [{
18
+ type: Input
19
+ }], htmlContent: [{
20
+ type: ViewChild,
21
+ args: [TemplateRef]
22
+ }] } });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9icmVhZGNydW1icy9icmVhZGNydW1iLWl0ZW0vYnJlYWRjcnVtYi1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9icmVhZGNydW1icy9icmVhZGNydW1iLWl0ZW0vYnJlYWRjcnVtYi1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFnQixrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRW5GLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFPbEUsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGFBQWE7SUFpQnhELElBQVcsUUFBUTtRQUNqQixPQUFPLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QyxDQUFDOztvSEFuQlUsdUJBQXVCO3dHQUF2Qix1QkFBdUIsMkpBZXZCLFdBQVcsdUVDekJ4Qiw4REFHQTsyRkRPYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0Usb0JBQW9CLG1CQUViLHVCQUF1QixDQUFDLE1BQU07OEJBT3RDLE1BQU07c0JBQWQsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUt5QixXQUFXO3NCQUF6QyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBpc1RydWVCb29sZWFuSW5wdXQgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9ib29sZWFuLWlucHV0JztcbmltcG9ydCB7IEljb25OYW1lIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJmYWNlcy9pY29uJztcbmltcG9ydCB7IExpbmtDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2xpbmsvbGluay5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpdC1icmVhZGNydW1iLWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vYnJlYWRjcnVtYi1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQnJlYWRjcnVtYkl0ZW1Db21wb25lbnQgZXh0ZW5kcyBMaW5rQ29tcG9uZW50IHtcblxuICAvKipcbiAgICogSXMgYWN0aXZlIGJyZWFkY3J1bWIgaXRlbVxuICAgKi9cbiAgQElucHV0KCkgYWN0aXZlPzogQm9vbGVhbklucHV0O1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiBpY29uIHRvIHNob3dcbiAgICovXG4gIEBJbnB1dCgpIGljb25OYW1lPzogSWNvbk5hbWU7XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IG9mIGl0ZW1cbiAgICovXG4gIEBWaWV3Q2hpbGQoVGVtcGxhdGVSZWYpIHB1YmxpYyBodG1sQ29udGVudCE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcHVibGljIGdldCBpc0FjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNUcnVlQm9vbGVhbklucHV0KHRoaXMuYWN0aXZlKTtcbiAgfVxuXG59XG4iLCI8bmctdGVtcGxhdGU+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -0,0 +1,57 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { isTrueBooleanInput } from '../../../utils/boolean-input';
3
+ import { AbstractComponent } from '../../../abstracts/abstract.component';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "../../core/button/button.directive";
7
+ import * as i3 from "../../utils/icon/icon.component";
8
+ import * as i4 from "@ngx-translate/core";
9
+ export class HeaderComponent extends AbstractComponent {
10
+ /**
11
+ * TODO: complete header
12
+ */
13
+ constructor() {
14
+ super();
15
+ this.showSlim = true;
16
+ this.loginStyle = 'full';
17
+ this.smallHeader = true;
18
+ this.showSearch = true;
19
+ this.loginClick = new EventEmitter();
20
+ this.searchClick = new EventEmitter();
21
+ }
22
+ get isLight() {
23
+ return isTrueBooleanInput(this.light);
24
+ }
25
+ get isShowSlim() {
26
+ return isTrueBooleanInput(this.showSlim);
27
+ }
28
+ get isSmallHeader() {
29
+ return isTrueBooleanInput(this.smallHeader);
30
+ }
31
+ get isShowSearch() {
32
+ return isTrueBooleanInput(this.showSearch);
33
+ }
34
+ }
35
+ HeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: HeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
36
+ HeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: HeaderComponent, selector: "it-header", inputs: { light: "light", showSlim: "showSlim", slimTitle: "slimTitle", loginStyle: "loginStyle", smallHeader: "smallHeader", showSearch: "showSearch" }, outputs: { loginClick: "loginClick", searchClick: "searchClick" }, usesInheritance: true, ngImport: i0, template: "<header class=\"it-header-wrapper\">\n <div *ngIf=\"isShowSlim\" class=\"it-header-slim-wrapper\" [class.theme-light]=\"isLight\">\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"it-header-slim-wrapper-content\">\n <a class=\"d-none d-lg-block navbar-brand\" href=\"#\">{{slimTitle}}</a>\n <div class=\"nav-mobile\">\n <nav [attr.aria-label]=\"'it.navigation.secondary-navigation'|translate\">\n <a class=\"it-opener d-lg-none\" data-bs-toggle=\"collapse\" href=\"#menuC1\" role=\"button\"\n aria-expanded=\"false\" aria-controls=\"menuC1\">\n <span>{{slimTitle}}</span>\n <it-icon name=\"expand\"></it-icon>\n </a>\n <div class=\"link-list-wrapper collapse\" id=\"menuC1\">\n <ng-content select=\"[slimLinkList]\"></ng-content>\n </div>\n </nav>\n </div>\n <div class=\"it-header-slim-right-zone\">\n <!-- TODO: add language dropdown -->\n <ng-content select=\"[slimRightZone]\"></ng-content>\n <div *ngIf=\"loginStyle === 'default'\" class=\"it-access-top-wrapper\">\n <a class=\"btn btn-primary btn-sm\" (click)=\"loginClick.emit($event)\">\n {{'it.navigation.login'|translate}}\n </a>\n </div>\n </div>\n <button *ngIf=\"loginStyle === 'full'\" itButton=\"primary\" class=\"btn-full\" (click)=\"loginClick.emit($event)\">\n <span class=\"rounded-icon\">\n <it-icon name=\"user\" color=\"primary\"></it-icon>\n <span class=\"d-none d-lg-block\">{{'it.navigation.full-login'|translate}}</span>\n </span>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"it-nav-wrapper\">\n <div class=\"it-header-center-wrapper\" [class.it-small-header]=\"isSmallHeader\">\n <div class=\"container-fluid\">\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"it-header-center-content-wrapper\">\n <div class=\"it-brand-wrapper\">\n <ng-content select=\"[brand]\"></ng-content>\n </div>\n <div class=\"it-right-zone\">\n <ng-content select=\"[rightZone]\"></ng-content>\n\n <div class=\"it-search-wrapper\" *ngIf=\"isShowSearch\">\n <span class=\"d-none d-md-block\">{{'it.navigation.search'|translate}}</span>\n <a class=\"search-link rounded-icon\" [attr.aria-label]=\"'it.navigation.website-search'|translate\" (click)=\"searchClick.emit($event)\">\n <it-icon name=\"search\"></it-icon>\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- TODO: complete header -->\n </div>\n</header>\n", styles: [".nav-mobile:has(.link-list-wrapper:empty){display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ButtonDirective, selector: "[itButton]", inputs: ["itButton", "size", "block", "disabled"], exportAs: ["itButton"] }, { kind: "component", type: i3.IconComponent, selector: "it-icon[name]", inputs: ["name", "size", "color", "padded", "class"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: HeaderComponent, decorators: [{
38
+ type: Component,
39
+ args: [{ selector: 'it-header', changeDetection: ChangeDetectionStrategy.OnPush, template: "<header class=\"it-header-wrapper\">\n <div *ngIf=\"isShowSlim\" class=\"it-header-slim-wrapper\" [class.theme-light]=\"isLight\">\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"it-header-slim-wrapper-content\">\n <a class=\"d-none d-lg-block navbar-brand\" href=\"#\">{{slimTitle}}</a>\n <div class=\"nav-mobile\">\n <nav [attr.aria-label]=\"'it.navigation.secondary-navigation'|translate\">\n <a class=\"it-opener d-lg-none\" data-bs-toggle=\"collapse\" href=\"#menuC1\" role=\"button\"\n aria-expanded=\"false\" aria-controls=\"menuC1\">\n <span>{{slimTitle}}</span>\n <it-icon name=\"expand\"></it-icon>\n </a>\n <div class=\"link-list-wrapper collapse\" id=\"menuC1\">\n <ng-content select=\"[slimLinkList]\"></ng-content>\n </div>\n </nav>\n </div>\n <div class=\"it-header-slim-right-zone\">\n <!-- TODO: add language dropdown -->\n <ng-content select=\"[slimRightZone]\"></ng-content>\n <div *ngIf=\"loginStyle === 'default'\" class=\"it-access-top-wrapper\">\n <a class=\"btn btn-primary btn-sm\" (click)=\"loginClick.emit($event)\">\n {{'it.navigation.login'|translate}}\n </a>\n </div>\n </div>\n <button *ngIf=\"loginStyle === 'full'\" itButton=\"primary\" class=\"btn-full\" (click)=\"loginClick.emit($event)\">\n <span class=\"rounded-icon\">\n <it-icon name=\"user\" color=\"primary\"></it-icon>\n <span class=\"d-none d-lg-block\">{{'it.navigation.full-login'|translate}}</span>\n </span>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"it-nav-wrapper\">\n <div class=\"it-header-center-wrapper\" [class.it-small-header]=\"isSmallHeader\">\n <div class=\"container-fluid\">\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"it-header-center-content-wrapper\">\n <div class=\"it-brand-wrapper\">\n <ng-content select=\"[brand]\"></ng-content>\n </div>\n <div class=\"it-right-zone\">\n <ng-content select=\"[rightZone]\"></ng-content>\n\n <div class=\"it-search-wrapper\" *ngIf=\"isShowSearch\">\n <span class=\"d-none d-md-block\">{{'it.navigation.search'|translate}}</span>\n <a class=\"search-link rounded-icon\" [attr.aria-label]=\"'it.navigation.website-search'|translate\" (click)=\"searchClick.emit($event)\">\n <it-icon name=\"search\"></it-icon>\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- TODO: complete header -->\n </div>\n</header>\n", styles: [".nav-mobile:has(.link-list-wrapper:empty){display:none}\n"] }]
40
+ }], ctorParameters: function () { return []; }, propDecorators: { light: [{
41
+ type: Input
42
+ }], showSlim: [{
43
+ type: Input
44
+ }], slimTitle: [{
45
+ type: Input
46
+ }], loginStyle: [{
47
+ type: Input
48
+ }], smallHeader: [{
49
+ type: Input
50
+ }], showSearch: [{
51
+ type: Input
52
+ }], loginClick: [{
53
+ type: Output
54
+ }], searchClick: [{
55
+ type: Output
56
+ }] } });
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEcsT0FBTyxFQUFnQixrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7QUFRMUUsTUFBTSxPQUFPLGVBQWdCLFNBQVEsaUJBQWlCO0lBa0JwRDs7T0FFRztJQUNIO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFsQkQsYUFBUSxHQUFrQixJQUFJLENBQUM7UUFJL0IsZUFBVSxHQUFnQyxNQUFNLENBQUM7UUFFakQsZ0JBQVcsR0FBa0IsSUFBSSxDQUFDO1FBRWxDLGVBQVUsR0FBa0IsSUFBSSxDQUFDO1FBWXhDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztRQUM1QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7OzRHQTFDVSxlQUFlO2dHQUFmLGVBQWUscVNDVjVCLCsvRkFtRUE7MkZEekRhLGVBQWU7a0JBTjNCLFNBQVM7K0JBQ0UsV0FBVyxtQkFHSix1QkFBdUIsQ0FBQyxNQUFNOzBFQUl0QyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBRUcsV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBpc1RydWVCb29sZWFuSW5wdXQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9ib29sZWFuLWlucHV0JztcbmltcG9ydCB7IEFic3RyYWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vYWJzdHJhY3RzL2Fic3RyYWN0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2l0LWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgSGVhZGVyQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RDb21wb25lbnQge1xuXG4gIEBJbnB1dCgpIGxpZ2h0PzogQm9vbGVhbklucHV0O1xuXG4gIEBJbnB1dCgpIHNob3dTbGltPzogQm9vbGVhbklucHV0ID0gdHJ1ZTtcblxuICBASW5wdXQoKSBzbGltVGl0bGU/OiBzdHJpbmc7XG5cbiAgQElucHV0KCkgbG9naW5TdHlsZTogJ25vbmUnIHwgJ2RlZmF1bHQnIHwgJ2Z1bGwnID0gJ2Z1bGwnO1xuXG4gIEBJbnB1dCgpIHNtYWxsSGVhZGVyPzogQm9vbGVhbklucHV0ID0gdHJ1ZTtcblxuICBASW5wdXQoKSBzaG93U2VhcmNoPzogQm9vbGVhbklucHV0ID0gdHJ1ZTtcblxuICBAT3V0cHV0KCkgbG9naW5DbGljazogRXZlbnRFbWl0dGVyPEV2ZW50PjtcblxuICBAT3V0cHV0KCkgc2VhcmNoQ2xpY2s6IEV2ZW50RW1pdHRlcjxFdmVudD47XG5cbiAgLyoqXG4gICAqIFRPRE86IGNvbXBsZXRlIGhlYWRlclxuICAgKi9cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMubG9naW5DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gICAgdGhpcy5zZWFyY2hDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gIH1cblxuICBnZXQgaXNMaWdodCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNUcnVlQm9vbGVhbklucHV0KHRoaXMubGlnaHQpO1xuICB9XG5cbiAgZ2V0IGlzU2hvd1NsaW0oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzVHJ1ZUJvb2xlYW5JbnB1dCh0aGlzLnNob3dTbGltKTtcbiAgfVxuXG4gIGdldCBpc1NtYWxsSGVhZGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1RydWVCb29sZWFuSW5wdXQodGhpcy5zbWFsbEhlYWRlcik7XG4gIH1cblxuICBnZXQgaXNTaG93U2VhcmNoKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1RydWVCb29sZWFuSW5wdXQodGhpcy5zaG93U2VhcmNoKTtcbiAgfVxuXG59XG4iLCI8aGVhZGVyIGNsYXNzPVwiaXQtaGVhZGVyLXdyYXBwZXJcIj5cbiAgPGRpdiAqbmdJZj1cImlzU2hvd1NsaW1cIiBjbGFzcz1cIml0LWhlYWRlci1zbGltLXdyYXBwZXJcIiBbY2xhc3MudGhlbWUtbGlnaHRdPVwiaXNMaWdodFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdC1oZWFkZXItc2xpbS13cmFwcGVyLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxhIGNsYXNzPVwiZC1ub25lIGQtbGctYmxvY2sgbmF2YmFyLWJyYW5kXCIgaHJlZj1cIiNcIj57e3NsaW1UaXRsZX19PC9hPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1tb2JpbGVcIj5cbiAgICAgICAgICAgICAgPG5hdiBbYXR0ci5hcmlhLWxhYmVsXT1cIidpdC5uYXZpZ2F0aW9uLnNlY29uZGFyeS1uYXZpZ2F0aW9uJ3x0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgICA8YSBjbGFzcz1cIml0LW9wZW5lciBkLWxnLW5vbmVcIiBkYXRhLWJzLXRvZ2dsZT1cImNvbGxhcHNlXCIgaHJlZj1cIiNtZW51QzFcIiByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIiBhcmlhLWNvbnRyb2xzPVwibWVudUMxXCI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57e3NsaW1UaXRsZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGl0LWljb24gbmFtZT1cImV4cGFuZFwiPjwvaXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpbmstbGlzdC13cmFwcGVyIGNvbGxhcHNlXCIgaWQ9XCJtZW51QzFcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzbGltTGlua0xpc3RdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25hdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0LWhlYWRlci1zbGltLXJpZ2h0LXpvbmVcIj5cbiAgICAgICAgICAgICAgPCEtLSBUT0RPOiBhZGQgbGFuZ3VhZ2UgZHJvcGRvd24gLS0+XG4gICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzbGltUmlnaHRab25lXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImxvZ2luU3R5bGUgPT09ICdkZWZhdWx0J1wiIGNsYXNzPVwiaXQtYWNjZXNzLXRvcC13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCIgKGNsaWNrKT1cImxvZ2luQ2xpY2suZW1pdCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICB7eydpdC5uYXZpZ2F0aW9uLmxvZ2luJ3x0cmFuc2xhdGV9fVxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJsb2dpblN0eWxlID09PSAnZnVsbCdcIiBpdEJ1dHRvbj1cInByaW1hcnlcIiBjbGFzcz1cImJ0bi1mdWxsXCIgKGNsaWNrKT1cImxvZ2luQ2xpY2suZW1pdCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicm91bmRlZC1pY29uXCI+XG4gICAgICAgICAgICAgICAgPGl0LWljb24gbmFtZT1cInVzZXJcIiBjb2xvcj1cInByaW1hcnlcIj48L2l0LWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkLW5vbmUgZC1sZy1ibG9ja1wiPnt7J2l0Lm5hdmlnYXRpb24uZnVsbC1sb2dpbid8dHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIml0LW5hdi13cmFwcGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cIml0LWhlYWRlci1jZW50ZXItd3JhcHBlclwiIFtjbGFzcy5pdC1zbWFsbC1oZWFkZXJdPVwiaXNTbWFsbEhlYWRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0LWhlYWRlci1jZW50ZXItY29udGVudC13cmFwcGVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdC1icmFuZC13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2JyYW5kXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdC1yaWdodC16b25lXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3JpZ2h0Wm9uZV1cIj48L25nLWNvbnRlbnQ+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXQtc2VhcmNoLXdyYXBwZXJcIiAqbmdJZj1cImlzU2hvd1NlYXJjaFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkLW5vbmUgZC1tZC1ibG9ja1wiPnt7J2l0Lm5hdmlnYXRpb24uc2VhcmNoJ3x0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwic2VhcmNoLWxpbmsgcm91bmRlZC1pY29uXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInaXQubmF2aWdhdGlvbi53ZWJzaXRlLXNlYXJjaCd8dHJhbnNsYXRlXCIgKGNsaWNrKT1cInNlYXJjaENsaWNrLmVtaXQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICA8aXQtaWNvbiBuYW1lPVwic2VhcmNoXCI+PC9pdC1pY29uPlxuICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBUT0RPOiBjb21wbGV0ZSBoZWFkZXIgLS0+XG4gIDwvZGl2PlxuPC9oZWFkZXI+XG4iXX0=
@@ -0,0 +1,54 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class IconComponent {
4
+ constructor(_renderer, _elementRef) {
5
+ this._renderer = _renderer;
6
+ this._elementRef = _elementRef;
7
+ /**
8
+ * Custom class
9
+ */
10
+ this.class = '';
11
+ }
12
+ /**
13
+ * Return the icon href
14
+ */
15
+ get iconHref() {
16
+ return `/bootstrap-italia/dist/svg/sprites.svg#it-${this.name}`;
17
+ }
18
+ /**
19
+ * Return the icon class
20
+ */
21
+ get iconClass() {
22
+ let iconClass = 'icon';
23
+ if (this.size) {
24
+ iconClass += ` icon-${this.size}`;
25
+ }
26
+ if (this.color) {
27
+ iconClass += ` icon-${this.color}`;
28
+ }
29
+ if (this.class) {
30
+ iconClass += ` ${this.class}`;
31
+ }
32
+ return iconClass;
33
+ }
34
+ ngAfterViewInit() {
35
+ this._renderer.removeAttribute(this._elementRef.nativeElement, 'class');
36
+ }
37
+ }
38
+ IconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: IconComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
39
+ IconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: IconComponent, selector: "it-icon[name]", inputs: { name: "name", size: "size", color: "color", padded: "padded", class: "class" }, ngImport: i0, template: "<svg [class]=\"iconClass\" [class.icon-padded]=\"padded\">\n <use [attr.href]=\"iconHref\" [attr.xlink:href]=\"iconHref\"></use>\n</svg>\n", styles: [""] });
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: IconComponent, decorators: [{
41
+ type: Component,
42
+ args: [{ selector: 'it-icon[name]', template: "<svg [class]=\"iconClass\" [class.icon-padded]=\"padded\">\n <use [attr.href]=\"iconHref\" [attr.xlink:href]=\"iconHref\"></use>\n</svg>\n" }]
43
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { name: [{
44
+ type: Input
45
+ }], size: [{
46
+ type: Input
47
+ }], color: [{
48
+ type: Input
49
+ }], padded: [{
50
+ type: Input
51
+ }], class: [{
52
+ type: Input
53
+ }] } });
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL3V0aWxzL2ljb24vaWNvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL3V0aWxzL2ljb24vaWNvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBYyxLQUFLLEVBQVksTUFBTSxlQUFlLENBQUM7O0FBU3JGLE1BQU0sT0FBTyxhQUFhO0lBbUR4QixZQUNxQixTQUFvQixFQUNwQixXQUF1QjtRQUR2QixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBL0I1Qzs7V0FFRztRQUNNLFVBQUssR0FBVyxFQUFFLENBQUE7SUE4QjNCLENBQUM7SUE1QkQ7O09BRUc7SUFDSCxJQUFJLFFBQVE7UUFDVixPQUFPLDZDQUE2QyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxTQUFTO1FBQ1gsSUFBSSxTQUFTLEdBQUcsTUFBTSxDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLFNBQVMsSUFBSSxTQUFTLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtTQUNsQztRQUNELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLFNBQVMsSUFBSSxTQUFTLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQTtTQUNuQztRQUNELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLFNBQVMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQTtTQUM5QjtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFRRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDMUUsQ0FBQzs7MEdBM0RVLGFBQWE7OEZBQWIsYUFBYSwrSUNUMUIsNklBR0E7MkZETWEsYUFBYTtrQkFMekIsU0FBUzsrQkFDRSxlQUFlO3lIQVNoQixJQUFJO3NCQUFaLEtBQUs7Z0JBS0csSUFBSTtzQkFBWixLQUFLO2dCQUtHLEtBQUs7c0JBQWIsS0FBSztnQkFLRyxNQUFNO3NCQUFkLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBSZW5kZXJlcjJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtJY29uQ29sb3IsIEljb25OYW1lLCBJY29uU2l6ZX0gZnJvbSBcIi4uLy4uLy4uL2ludGVyZmFjZXMvaWNvblwiO1xuaW1wb3J0IHtCb29sZWFuSW5wdXR9IGZyb20gXCIuLi8uLi8uLi91dGlscy9ib29sZWFuLWlucHV0XCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2l0LWljb25bbmFtZV0nLFxuICB0ZW1wbGF0ZVVybDogJy4vaWNvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ljb24uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJY29uQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgLyoqXG4gICAqIFRoZSBpY29uIG5hbWVcbiAgICovXG4gIEBJbnB1dCgpIG5hbWUhOiBJY29uTmFtZTtcblxuICAvKipcbiAgICogVGhlIGljb24gc2l6ZVxuICAgKi9cbiAgQElucHV0KCkgc2l6ZT86IEljb25TaXplO1xuXG4gIC8qKlxuICAgKiBUaGUgaWNvbiBjb2xvclxuICAgKi9cbiAgQElucHV0KCkgY29sb3I/OiBJY29uQ29sb3I7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHBhZGRpbmcgcHJvcG9ydGlvbmFsIHRvIHRoZSBzaXplIG9mIHRoZSBzdXJyb3VuZGluZyBpY29uLlxuICAgKi9cbiAgQElucHV0KCkgcGFkZGVkPzogQm9vbGVhbklucHV0O1xuXG4gIC8qKlxuICAgKiBDdXN0b20gY2xhc3NcbiAgICovXG4gIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmcgPSAnJ1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGljb24gaHJlZlxuICAgKi9cbiAgZ2V0IGljb25IcmVmKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAvYm9vdHN0cmFwLWl0YWxpYS9kaXN0L3N2Zy9zcHJpdGVzLnN2ZyNpdC0ke3RoaXMubmFtZX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgaWNvbiBjbGFzc1xuICAgKi9cbiAgZ2V0IGljb25DbGFzcygpOiBzdHJpbmcge1xuICAgIGxldCBpY29uQ2xhc3MgPSAnaWNvbic7XG4gICAgaWYgKHRoaXMuc2l6ZSkge1xuICAgICAgaWNvbkNsYXNzICs9IGAgaWNvbi0ke3RoaXMuc2l6ZX1gXG4gICAgfVxuICAgIGlmICh0aGlzLmNvbG9yKSB7XG4gICAgICBpY29uQ2xhc3MgKz0gYCBpY29uLSR7dGhpcy5jb2xvcn1gXG4gICAgfVxuICAgIGlmICh0aGlzLmNsYXNzKSB7XG4gICAgICBpY29uQ2xhc3MgKz0gYCAke3RoaXMuY2xhc3N9YFxuICAgIH1cbiAgICByZXR1cm4gaWNvbkNsYXNzO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBfZWxlbWVudFJlZjogRWxlbWVudFJlZlxuICApIHtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLl9yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY2xhc3MnKTtcbiAgfVxufVxuIiwiPHN2ZyBbY2xhc3NdPVwiaWNvbkNsYXNzXCIgW2NsYXNzLmljb24tcGFkZGVkXT1cInBhZGRlZFwiPlxuICA8dXNlIFthdHRyLmhyZWZdPVwiaWNvbkhyZWZcIiBbYXR0ci54bGluazpocmVmXT1cImljb25IcmVmXCI+PC91c2U+XG48L3N2Zz5cbiJdfQ==
@@ -0,0 +1,39 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { map } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@ngx-translate/core";
5
+ import * as i2 from "@angular/common";
6
+ import * as i3 from "../../core/dropdown/dropdown/dropdown.component";
7
+ import * as i4 from "../../core/dropdown/dropdown-item/dropdown-item.component";
8
+ export class LanguageSwitcherComponent {
9
+ constructor(translateService) {
10
+ this.translateService = translateService;
11
+ this.currentLang$ = translateService.onLangChange.pipe(map(event => this.availableLanguages?.find(l => l.code === event.lang)));
12
+ }
13
+ ngOnInit() {
14
+ if (!this.availableLanguages) {
15
+ this.availableLanguages = this.translateService.getLangs().map(lang => ({
16
+ code: lang,
17
+ label: lang,
18
+ ...(lang === 'it' && { label: 'ITA' }),
19
+ ...(lang === 'en' && { label: 'ENG' })
20
+ }));
21
+ }
22
+ }
23
+ /**
24
+ * Change the current language
25
+ * @param lang the language code
26
+ */
27
+ changeLanguage(lang) {
28
+ this.translateService.use(lang);
29
+ }
30
+ }
31
+ LanguageSwitcherComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LanguageSwitcherComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
32
+ LanguageSwitcherComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: LanguageSwitcherComponent, selector: "it-language-switcher", inputs: { availableLanguages: "availableLanguages" }, ngImport: i0, template: "<it-dropdown>\n <ng-container button>\n <span class=\"visually-hidden\">{{'it.utils.selected' | translate: { lang: (currentLang$ | async)?.label } }}</span>\n <span>{{(currentLang$ | async)?.label || ('it.utils.select-language' | translate)}}</span>\n </ng-container>\n\n <ng-container list>\n <it-dropdown-item *ngFor=\"let lang of availableLanguages\" (click)=\"changeLanguage(lang.code)\"\n [active]=\"lang.code === (currentLang$ | async)?.code\">\n {{lang.label}}\n <span class=\"visually-hidden\" *ngIf=\"lang.code === (currentLang$ | async)?.code\">\n {{'it.utils.selected' | translate}}\n </span>\n </it-dropdown-item>\n </ng-container>\n</it-dropdown>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.DropdownComponent, selector: "it-dropdown", inputs: ["color", "direction", "fullWidth", "dark"], outputs: ["onShow", "onShown", "onHide", "onHidden"], exportAs: ["itDropdown"] }, { kind: "component", type: i4.DropdownItemComponent, selector: "it-dropdown-item", inputs: ["divider", "active", "large", "iconName", "iconPosition"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LanguageSwitcherComponent, decorators: [{
34
+ type: Component,
35
+ args: [{ selector: 'it-language-switcher', template: "<it-dropdown>\n <ng-container button>\n <span class=\"visually-hidden\">{{'it.utils.selected' | translate: { lang: (currentLang$ | async)?.label } }}</span>\n <span>{{(currentLang$ | async)?.label || ('it.utils.select-language' | translate)}}</span>\n </ng-container>\n\n <ng-container list>\n <it-dropdown-item *ngFor=\"let lang of availableLanguages\" (click)=\"changeLanguage(lang.code)\"\n [active]=\"lang.code === (currentLang$ | async)?.code\">\n {{lang.label}}\n <span class=\"visually-hidden\" *ngIf=\"lang.code === (currentLang$ | async)?.code\">\n {{'it.utils.selected' | translate}}\n </span>\n </it-dropdown-item>\n </ng-container>\n</it-dropdown>\n" }]
36
+ }], ctorParameters: function () { return [{ type: i1.TranslateService }]; }, propDecorators: { availableLanguages: [{
37
+ type: Input
38
+ }] } });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2Utc3dpdGNoZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy91dGlscy9sYW5ndWFnZS1zd2l0Y2hlci9sYW5ndWFnZS1zd2l0Y2hlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL3V0aWxzL2xhbmd1YWdlLXN3aXRjaGVyL2xhbmd1YWdlLXN3aXRjaGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7Ozs7OztBQVF2QyxNQUFNLE9BQU8seUJBQXlCO0lBVXBDLFlBQ21CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBRW5ELElBQUksQ0FBQyxZQUFZLEdBQUcsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDcEQsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ3hFLENBQUM7SUFDSixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDNUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN0RSxJQUFJLEVBQUUsSUFBSTtnQkFDVixLQUFLLEVBQUUsSUFBSTtnQkFDWCxHQUFHLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUMsQ0FBQztnQkFDcEMsR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksRUFBQyxLQUFLLEVBQUUsS0FBSyxFQUFDLENBQUM7YUFDckMsQ0FBQyxDQUFDLENBQUM7U0FDTDtJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxjQUFjLENBQUMsSUFBWTtRQUN6QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7O3NIQW5DVSx5QkFBeUI7MEdBQXpCLHlCQUF5QixrSENUdEMsa3RCQWdCQTsyRkRQYSx5QkFBeUI7a0JBSnJDLFNBQVM7K0JBQ0Usc0JBQXNCO3VHQVN2QixrQkFBa0I7c0JBQTFCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQXZhaWxhYmxlTGFuZ3VhZ2UgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL3V0aWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaXQtbGFuZ3VhZ2Utc3dpdGNoZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbGFuZ3VhZ2Utc3dpdGNoZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIExhbmd1YWdlU3dpdGNoZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIC8qKlxuICAgKiBUaGUgYXZhaWxhYmxlIGxhbmd1YWdlc1xuICAgKiBAZGVmYXVsdCBUaGUgbGFuZ3VhZ2VzIGF2YWlsYWJsZSB0aHJvdWdoIFRyYW5zbGF0ZVNlcnZpY2UgKG5neC10cmFuc2xhdGUpXG4gICAqL1xuICBASW5wdXQoKSBhdmFpbGFibGVMYW5ndWFnZXM/OiBBcnJheTxBdmFpbGFibGVMYW5ndWFnZT47XG5cbiAgY3VycmVudExhbmckOiBPYnNlcnZhYmxlPEF2YWlsYWJsZUxhbmd1YWdlIHwgdW5kZWZpbmVkPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5jdXJyZW50TGFuZyQgPSB0cmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ0NoYW5nZS5waXBlKFxuICAgICAgbWFwKGV2ZW50ID0+IHRoaXMuYXZhaWxhYmxlTGFuZ3VhZ2VzPy5maW5kKGwgPT4gbC5jb2RlID09PSBldmVudC5sYW5nKSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmF2YWlsYWJsZUxhbmd1YWdlcykge1xuICAgICAgdGhpcy5hdmFpbGFibGVMYW5ndWFnZXMgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0TGFuZ3MoKS5tYXAobGFuZyA9PiAoe1xuICAgICAgICBjb2RlOiBsYW5nLFxuICAgICAgICBsYWJlbDogbGFuZyxcbiAgICAgICAgLi4uKGxhbmcgPT09ICdpdCcgJiYge2xhYmVsOiAnSVRBJ30pLFxuICAgICAgICAuLi4obGFuZyA9PT0gJ2VuJyAmJiB7bGFiZWw6ICdFTkcnfSlcbiAgICAgIH0pKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlIHRoZSBjdXJyZW50IGxhbmd1YWdlXG4gICAqIEBwYXJhbSBsYW5nIHRoZSBsYW5ndWFnZSBjb2RlXG4gICAqL1xuICBjaGFuZ2VMYW5ndWFnZShsYW5nOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudXNlKGxhbmcpO1xuICB9XG5cbn1cbiIsIjxpdC1kcm9wZG93bj5cbiAgPG5nLWNvbnRhaW5lciBidXR0b24+XG4gICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj57eydpdC51dGlscy5zZWxlY3RlZCcgfCB0cmFuc2xhdGU6IHsgbGFuZzogKGN1cnJlbnRMYW5nJCB8IGFzeW5jKT8ubGFiZWwgfSB9fTwvc3Bhbj5cbiAgICA8c3Bhbj57eyhjdXJyZW50TGFuZyQgfCBhc3luYyk/LmxhYmVsIHx8ICgnaXQudXRpbHMuc2VsZWN0LWxhbmd1YWdlJyB8IHRyYW5zbGF0ZSl9fTwvc3Bhbj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciBsaXN0PlxuICAgIDxpdC1kcm9wZG93bi1pdGVtICpuZ0Zvcj1cImxldCBsYW5nIG9mIGF2YWlsYWJsZUxhbmd1YWdlc1wiIChjbGljayk9XCJjaGFuZ2VMYW5ndWFnZShsYW5nLmNvZGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlXT1cImxhbmcuY29kZSA9PT0gKGN1cnJlbnRMYW5nJCB8IGFzeW5jKT8uY29kZVwiPlxuICAgICAge3tsYW5nLmxhYmVsfX1cbiAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCIgKm5nSWY9XCJsYW5nLmNvZGUgPT09IChjdXJyZW50TGFuZyQgfCBhc3luYyk/LmNvZGVcIj5cbiAgICAgICAge3snaXQudXRpbHMuc2VsZWN0ZWQnIHwgdHJhbnNsYXRlfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2l0LWRyb3Bkb3duLWl0ZW0+XG4gIDwvbmctY29udGFpbmVyPlxuPC9pdC1kcm9wZG93bj5cbiJdfQ==