design-angular-kit 0.13.0 → 1.0.0-1

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 (207) hide show
  1. package/README.md +61 -31
  2. package/esm2020/design-angular-kit.mjs +5 -0
  3. package/esm2020/lib/badge/badge.directive.mjs +83 -0
  4. package/esm2020/lib/breadcrumb/breadcrumb-item.component.mjs +66 -0
  5. package/esm2020/lib/breadcrumb/breadcrumb.component.mjs +89 -0
  6. package/esm2020/lib/button/button.directive.mjs +185 -0
  7. package/esm2020/lib/button/button.module.mjs +18 -0
  8. package/esm2020/lib/checkbox/checkbox.component.mjs +138 -0
  9. package/esm2020/lib/collapse/collapse-group.component.mjs +57 -0
  10. package/esm2020/lib/collapse/collapse-item.component.mjs +79 -0
  11. package/esm2020/lib/collapse/collapse.config.mjs +12 -0
  12. package/esm2020/lib/collapse/collapse.directive.mjs +55 -0
  13. package/esm2020/lib/collapse/collapse.module.mjs +22 -0
  14. package/esm2020/lib/design-angular-kit.module.mjs +142 -0
  15. package/esm2020/lib/dropdown/dropdown-divider.component.mjs +11 -0
  16. package/esm2020/lib/dropdown/dropdown-item.component.mjs +97 -0
  17. package/esm2020/lib/dropdown/dropdown.component.mjs +143 -0
  18. package/esm2020/lib/dropdown/dropdown.config.mjs +12 -0
  19. package/esm2020/lib/dropdown/dropdown.directive.mjs +156 -0
  20. package/esm2020/lib/dropdown/dropdown.module.mjs +25 -0
  21. package/esm2020/lib/enums/icons.enum.mjs +27 -0
  22. package/esm2020/lib/form-input/form-input-password.utils.mjs +154 -0
  23. package/esm2020/lib/form-input/form-input.component.mjs +495 -0
  24. package/esm2020/lib/form-input/it-prefix.directive.mjs +13 -0
  25. package/esm2020/lib/form-input/it-suffix.directive.mjs +13 -0
  26. package/esm2020/lib/form-input/it-text-prefix.directive.mjs +13 -0
  27. package/esm2020/lib/form-input/it-text-suffix.directive.mjs +13 -0
  28. package/esm2020/lib/form-input/mark-matching-text.pipe.mjs +36 -0
  29. package/esm2020/lib/icon/icon.component.mjs +87 -0
  30. package/esm2020/lib/icon/icon.module.mjs +18 -0
  31. package/esm2020/lib/models/Alignment.mjs +15 -0
  32. package/esm2020/lib/models/ButtonSize.mjs +15 -0
  33. package/esm2020/lib/models/InputType.mjs +44 -0
  34. package/esm2020/lib/models/ThemeColor.mjs +30 -0
  35. package/esm2020/lib/popover/popover.config.mjs +17 -0
  36. package/esm2020/lib/popover/popover.directive.mjs +33 -0
  37. package/esm2020/lib/popover/popover.module.mjs +19 -0
  38. package/esm2020/lib/progress-bar/progress-bar.component.mjs +98 -0
  39. package/esm2020/lib/radio/radio.component.mjs +287 -0
  40. package/esm2020/lib/radio/unique-selection-dispatcher.mjs +55 -0
  41. package/esm2020/lib/tabs/tab-group.component.mjs +177 -0
  42. package/esm2020/lib/tabs/tab.component.mjs +73 -0
  43. package/esm2020/lib/tabs/tabs.module.mjs +20 -0
  44. package/esm2020/lib/toggle/toggle.component.mjs +86 -0
  45. package/esm2020/lib/tooltip/tooltip.config.mjs +17 -0
  46. package/esm2020/lib/tooltip/tooltip.directive.mjs +43 -0
  47. package/esm2020/lib/tooltip/tooltip.module.mjs +19 -0
  48. package/esm2020/lib/util/focus-mouse.directive.mjs +32 -0
  49. package/esm2020/lib/util/util.mjs +12 -0
  50. package/esm2020/lib/util/utils.module.mjs +16 -0
  51. package/esm2020/public_api.mjs +40 -0
  52. package/fesm2015/design-angular-kit.mjs +3181 -0
  53. package/fesm2015/design-angular-kit.mjs.map +1 -0
  54. package/fesm2020/design-angular-kit.mjs +3160 -0
  55. package/fesm2020/design-angular-kit.mjs.map +1 -0
  56. package/index.d.ts +5 -0
  57. package/lib/badge/badge.directive.d.ts +11 -5
  58. package/lib/breadcrumb/breadcrumb-item.component.d.ts +16 -5
  59. package/lib/breadcrumb/breadcrumb.component.d.ts +12 -5
  60. package/lib/button/button.directive.d.ts +72 -0
  61. package/lib/button/button.module.d.ts +8 -0
  62. package/lib/checkbox/checkbox.component.d.ts +25 -5
  63. package/lib/collapse/collapse-group.component.d.ts +6 -2
  64. package/lib/collapse/collapse-item.component.d.ts +16 -8
  65. package/lib/collapse/collapse.config.d.ts +6 -0
  66. package/lib/collapse/collapse.directive.d.ts +13 -28
  67. package/lib/collapse/collapse.module.d.ts +12 -0
  68. package/lib/design-angular-kit.module.d.ts +27 -0
  69. package/lib/dropdown/dropdown-divider.component.d.ts +3 -0
  70. package/lib/dropdown/dropdown-item.component.d.ts +22 -8
  71. package/lib/dropdown/dropdown.component.d.ts +34 -26
  72. package/lib/dropdown/dropdown.config.d.ts +6 -0
  73. package/lib/dropdown/dropdown.directive.d.ts +77 -0
  74. package/lib/dropdown/dropdown.module.d.ts +15 -0
  75. package/lib/enums/icons.enum.d.ts +23 -0
  76. package/lib/form-input/form-input-password.utils.d.ts +45 -0
  77. package/lib/form-input/form-input.component.d.ts +202 -20
  78. package/lib/form-input/it-prefix.directive.d.ts +5 -0
  79. package/lib/form-input/it-suffix.directive.d.ts +5 -0
  80. package/lib/form-input/it-text-prefix.directive.d.ts +5 -0
  81. package/lib/form-input/it-text-suffix.directive.d.ts +5 -0
  82. package/lib/form-input/mark-matching-text.pipe.d.ts +10 -0
  83. package/lib/icon/icon.component.d.ts +34 -0
  84. package/lib/icon/icon.module.d.ts +8 -0
  85. package/lib/models/Alignment.d.ts +12 -0
  86. package/lib/models/ButtonSize.d.ts +1 -1
  87. package/lib/models/InputType.d.ts +22 -1
  88. package/lib/models/ThemeColor.d.ts +1 -1
  89. package/lib/popover/popover.config.d.ts +5 -6
  90. package/lib/popover/popover.directive.d.ts +13 -108
  91. package/lib/popover/popover.module.d.ts +9 -0
  92. package/lib/progress-bar/progress-bar.component.d.ts +25 -19
  93. package/lib/radio/radio.component.d.ts +22 -10
  94. package/lib/radio/unique-selection-dispatcher.d.ts +3 -0
  95. package/lib/tabs/tab-group.component.d.ts +17 -11
  96. package/lib/tabs/tab.component.d.ts +6 -2
  97. package/lib/tabs/tabs.module.d.ts +10 -0
  98. package/lib/toggle/toggle.component.d.ts +9 -4
  99. package/lib/tooltip/tooltip.config.d.ts +7 -7
  100. package/lib/tooltip/tooltip.directive.d.ts +12 -92
  101. package/lib/tooltip/tooltip.module.d.ts +9 -0
  102. package/lib/util/focus-mouse.directive.d.ts +13 -0
  103. package/lib/util/utils.module.d.ts +7 -0
  104. package/package.json +36 -21
  105. package/public_api.d.ts +16 -2
  106. package/bundles/design-angular-kit.umd.js +0 -6258
  107. package/bundles/design-angular-kit.umd.js.map +0 -1
  108. package/bundles/design-angular-kit.umd.min.js +0 -31
  109. package/bundles/design-angular-kit.umd.min.js.map +0 -1
  110. package/design-angular-kit.d.ts +0 -8
  111. package/design-angular-kit.metadata.json +0 -1
  112. package/esm2015/design-angular-kit.js +0 -14
  113. package/esm2015/lib/badge/badge.directive.js +0 -116
  114. package/esm2015/lib/breadcrumb/breadcrumb-item.component.js +0 -117
  115. package/esm2015/lib/breadcrumb/breadcrumb.component.js +0 -128
  116. package/esm2015/lib/button/button.component.js +0 -165
  117. package/esm2015/lib/checkbox/checkbox.component.js +0 -170
  118. package/esm2015/lib/collapse/collapse-group.component.js +0 -87
  119. package/esm2015/lib/collapse/collapse-item.component.js +0 -148
  120. package/esm2015/lib/collapse/collapse.directive.js +0 -153
  121. package/esm2015/lib/design-angular-kit.module.js +0 -90
  122. package/esm2015/lib/dropdown/dropdown-divider.component.js +0 -18
  123. package/esm2015/lib/dropdown/dropdown-header.component.js +0 -29
  124. package/esm2015/lib/dropdown/dropdown-item.component.js +0 -157
  125. package/esm2015/lib/dropdown/dropdown.component.js +0 -248
  126. package/esm2015/lib/form-input/form-input.component.js +0 -489
  127. package/esm2015/lib/models/ButtonSize.js +0 -25
  128. package/esm2015/lib/models/IconPosition.js +0 -21
  129. package/esm2015/lib/models/InputType.js +0 -33
  130. package/esm2015/lib/models/InteractionTrigger.js +0 -35
  131. package/esm2015/lib/models/ThemeColor.js +0 -45
  132. package/esm2015/lib/popover/popover.component.js +0 -134
  133. package/esm2015/lib/popover/popover.config.js +0 -35
  134. package/esm2015/lib/popover/popover.directive.js +0 -433
  135. package/esm2015/lib/popover/popup.js +0 -105
  136. package/esm2015/lib/popover/positioning.js +0 -349
  137. package/esm2015/lib/popover/triggers.js +0 -99
  138. package/esm2015/lib/progress-bar/progress-bar.component.js +0 -170
  139. package/esm2015/lib/radio/radio.component.js +0 -526
  140. package/esm2015/lib/radio/unique-selection-dispatcher.js +0 -70
  141. package/esm2015/lib/tabs/tab-group.component.js +0 -339
  142. package/esm2015/lib/tabs/tab.component.js +0 -143
  143. package/esm2015/lib/toggle/toggle.component.js +0 -173
  144. package/esm2015/lib/tooltip/popup.js +0 -105
  145. package/esm2015/lib/tooltip/positioning.js +0 -349
  146. package/esm2015/lib/tooltip/tooltip.component.js +0 -77
  147. package/esm2015/lib/tooltip/tooltip.config.js +0 -31
  148. package/esm2015/lib/tooltip/tooltip.directive.js +0 -384
  149. package/esm2015/lib/tooltip/triggers.js +0 -99
  150. package/esm2015/lib/util/util.js +0 -30
  151. package/esm2015/public_api.js +0 -31
  152. package/esm5/design-angular-kit.js +0 -14
  153. package/esm5/lib/badge/badge.directive.js +0 -145
  154. package/esm5/lib/breadcrumb/breadcrumb-item.component.js +0 -135
  155. package/esm5/lib/breadcrumb/breadcrumb.component.js +0 -164
  156. package/esm5/lib/button/button.component.js +0 -221
  157. package/esm5/lib/checkbox/checkbox.component.js +0 -200
  158. package/esm5/lib/collapse/collapse-group.component.js +0 -102
  159. package/esm5/lib/collapse/collapse-item.component.js +0 -183
  160. package/esm5/lib/collapse/collapse.directive.js +0 -210
  161. package/esm5/lib/design-angular-kit.module.js +0 -94
  162. package/esm5/lib/dropdown/dropdown-divider.component.js +0 -20
  163. package/esm5/lib/dropdown/dropdown-header.component.js +0 -27
  164. package/esm5/lib/dropdown/dropdown-item.component.js +0 -197
  165. package/esm5/lib/dropdown/dropdown.component.js +0 -309
  166. package/esm5/lib/form-input/form-input.component.js +0 -582
  167. package/esm5/lib/models/ButtonSize.js +0 -25
  168. package/esm5/lib/models/IconPosition.js +0 -21
  169. package/esm5/lib/models/InputType.js +0 -33
  170. package/esm5/lib/models/InteractionTrigger.js +0 -35
  171. package/esm5/lib/models/ThemeColor.js +0 -45
  172. package/esm5/lib/popover/popover.component.js +0 -144
  173. package/esm5/lib/popover/popover.config.js +0 -37
  174. package/esm5/lib/popover/popover.directive.js +0 -573
  175. package/esm5/lib/popover/popup.js +0 -116
  176. package/esm5/lib/popover/positioning.js +0 -446
  177. package/esm5/lib/popover/triggers.js +0 -115
  178. package/esm5/lib/progress-bar/progress-bar.component.js +0 -218
  179. package/esm5/lib/radio/radio.component.js +0 -610
  180. package/esm5/lib/radio/unique-selection-dispatcher.js +0 -108
  181. package/esm5/lib/tabs/tab-group.component.js +0 -401
  182. package/esm5/lib/tabs/tab.component.js +0 -156
  183. package/esm5/lib/toggle/toggle.component.js +0 -200
  184. package/esm5/lib/tooltip/popup.js +0 -116
  185. package/esm5/lib/tooltip/positioning.js +0 -446
  186. package/esm5/lib/tooltip/tooltip.component.js +0 -80
  187. package/esm5/lib/tooltip/tooltip.config.js +0 -33
  188. package/esm5/lib/tooltip/tooltip.directive.js +0 -516
  189. package/esm5/lib/tooltip/triggers.js +0 -115
  190. package/esm5/lib/util/util.js +0 -48
  191. package/esm5/public_api.js +0 -31
  192. package/fesm2015/design-angular-kit.js +0 -5094
  193. package/fesm2015/design-angular-kit.js.map +0 -1
  194. package/fesm5/design-angular-kit.js +0 -6314
  195. package/fesm5/design-angular-kit.js.map +0 -1
  196. package/lib/button/button.component.d.ts +0 -50
  197. package/lib/dropdown/dropdown-header.component.d.ts +0 -3
  198. package/lib/models/IconPosition.d.ts +0 -9
  199. package/lib/models/InteractionTrigger.d.ts +0 -19
  200. package/lib/popover/popover.component.d.ts +0 -25
  201. package/lib/popover/popup.d.ts +0 -27
  202. package/lib/popover/positioning.d.ts +0 -32
  203. package/lib/popover/triggers.d.ts +0 -18
  204. package/lib/tooltip/popup.d.ts +0 -27
  205. package/lib/tooltip/positioning.d.ts +0 -32
  206. package/lib/tooltip/tooltip.component.d.ts +0 -20
  207. package/lib/tooltip/triggers.d.ts +0 -18
@@ -1 +0,0 @@
1
- {"version":3,"file":"design-angular-kit.js.map","sources":["ng://design-angular-kit/lib/models/ThemeColor.ts","ng://design-angular-kit/lib/progress-bar/progress-bar.component.ts","ng://design-angular-kit/lib/checkbox/checkbox.component.ts","ng://design-angular-kit/lib/popover/triggers.ts","ng://design-angular-kit/lib/popover/positioning.ts","ng://design-angular-kit/lib/popover/popup.ts","ng://design-angular-kit/lib/models/InteractionTrigger.ts","ng://design-angular-kit/lib/popover/popover.config.ts","ng://design-angular-kit/lib/popover/popover.component.ts","ng://design-angular-kit/lib/util/util.ts","ng://design-angular-kit/lib/popover/popover.directive.ts","ng://design-angular-kit/lib/toggle/toggle.component.ts","ng://design-angular-kit/lib/radio/unique-selection-dispatcher.ts","ng://design-angular-kit/lib/radio/radio.component.ts","ng://design-angular-kit/lib/tooltip/triggers.ts","ng://design-angular-kit/lib/tooltip/positioning.ts","ng://design-angular-kit/lib/tooltip/popup.ts","ng://design-angular-kit/lib/tooltip/tooltip.config.ts","ng://design-angular-kit/lib/tooltip/tooltip.component.ts","ng://design-angular-kit/lib/tooltip/tooltip.directive.ts","ng://design-angular-kit/lib/models/ButtonSize.ts","ng://design-angular-kit/lib/button/button.component.ts","ng://design-angular-kit/lib/badge/badge.directive.ts","ng://design-angular-kit/lib/collapse/collapse.directive.ts","ng://design-angular-kit/lib/collapse/collapse-item.component.ts","ng://design-angular-kit/lib/collapse/collapse-group.component.ts","ng://design-angular-kit/lib/models/InputType.ts","ng://design-angular-kit/lib/form-input/form-input.component.ts","ng://design-angular-kit/lib/dropdown/dropdown.component.ts","ng://design-angular-kit/lib/models/IconPosition.ts","ng://design-angular-kit/lib/dropdown/dropdown-item.component.ts","ng://design-angular-kit/lib/dropdown/dropdown-header.component.ts","ng://design-angular-kit/lib/dropdown/dropdown-divider.component.ts","ng://design-angular-kit/lib/breadcrumb/breadcrumb-item.component.ts","ng://design-angular-kit/lib/breadcrumb/breadcrumb.component.ts","ng://design-angular-kit/lib/tabs/tab.component.ts","ng://design-angular-kit/lib/tabs/tab-group.component.ts","ng://design-angular-kit/lib/design-angular-kit.module.ts"],"sourcesContent":["import * as t from 'io-ts';\n\nexport const ThemeColor = t.keyof({\n primary: null,\n secondary: null,\n danger: null,\n warning: null,\n info: null,\n success: null,\n light: null,\n dark: null,\n});\n\nconst PRIMARY = 'primary';\nconst SECONDARY = 'secondary';\nconst DANGER = 'danger';\nconst WARNING = 'warning';\nconst INFO = 'info';\nconst SUCCESS = 'success';\nconst LIGHT = 'light';\nconst DARK = 'dark';\n\nexport const THEME_COLORS = {\n PRIMARY: PRIMARY,\n SECONDARY: SECONDARY,\n DANGER: DANGER,\n WARNING: WARNING,\n INFO: INFO,\n SUCCESS: SUCCESS,\n LIGHT: LIGHT,\n DARK: DARK\n};\n","import {\n Component,\n ChangeDetectionStrategy,\n ElementRef,\n Inject,\n Input,\n Optional,\n ViewEncapsulation\n} from '@angular/core';\nimport { ThemeColor, THEME_COLORS } from '../models/ThemeColor';\n\nlet progressbarId = 0;\n\n/**\n * Una barra di avanzamento con design bootstrap italia.\n */\n@Component({\n selector: 'it-progress-bar',\n template: `<div class=\"progress\" [ngStyle]=\"{'height': height + 'px'}\">\n <div role=\"progressbar\" [id]=\"progressbarId\" [ngClass]=\"pgClass()\" [ngStyle]=\"pgStyle()\"\n [attr.aria-valuenow]=\"value\" [attr.aria-valuemin]=\"min\" [attr.aria-valuemax]=\"max\" >\n {{label}}\n </div>\n</div>`,\n styles: [``],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ProgressBarComponent {\n\n public static readonly PROGRESS_BAR_DEFAULT_MIN = 0;\n public static readonly PROGRESS_BAR_DEFAULT_MAX = 100;\n public static readonly PROGRESS_BAR_DEFAULT_VALUE = 0;\n public static readonly PROGRESS_BAR_DEFAULT_HEIGHT = 20;\n public static readonly PROGRESS_BAR_DEFAULT_LABEL = '';\n\n progressbarId = `it-progress-bar-${progressbarId++}`;\n\n /**\n * L'altezza della barra di avanzamento.\n */\n @Input()\n get height(): number { return this._height; }\n set height(v: number) { this._height = v; }\n private _height = ProgressBarComponent.PROGRESS_BAR_DEFAULT_HEIGHT;\n\n /**\n * Il valore minimo della barra di avanzamento.\n */\n @Input()\n get min(): number { return this._min; }\n set min(v: number) { this._min = Math.round(v); }\n private _min = ProgressBarComponent.PROGRESS_BAR_DEFAULT_MIN;\n\n /**\n * Il valore massimo della barra di avanzamento.\n */\n @Input()\n get max(): number { return this._max; }\n set max(v: number) { this._max = Math.round(v); }\n private _max = ProgressBarComponent.PROGRESS_BAR_DEFAULT_MAX;\n\n /**\n * L'attuale valore della barra di avanzamento.\n */\n @Input()\n get value(): number { return this._value; }\n set value(v: number) { this._value = Math.min(Math.max(v, this._min), this._max); }\n private _value = ProgressBarComponent.PROGRESS_BAR_DEFAULT_VALUE;\n\n /**\n * L'etichetta della barra di avanzamento.\n */\n @Input()\n get label(): string { return this._label; }\n set label(v: string) { this._label = v; }\n private _label = ProgressBarComponent.PROGRESS_BAR_DEFAULT_LABEL;\n\n /**\n * Il colore della barra di avanzamento.\n */\n @Input()\n get color(): any {\n return this._color;\n }\n set color(value: any) {\n if (ThemeColor.is(value)) {\n this._color = value;\n } else {\n this._color = THEME_COLORS.PRIMARY;\n }\n }\n private _color = THEME_COLORS.PRIMARY;\n\n valuePercentage(): number {\n return ((this.value - this.min) * 100) / (this.max - this.min);\n }\n\n pgStyle() {\n return { 'width' : this.valuePercentage() + '%' };\n }\n\n pgClass() {\n const progressbarClass = { 'progress-bar' : true };\n if (this.color) {\n progressbarClass[`bg-${this.color}`] = true;\n }\n return progressbarClass;\n }\n\n constructor() { }\n\n}\n","import { Component, Input, Output, EventEmitter, ChangeDetectorRef, forwardRef, ChangeDetectionStrategy } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nlet identifier = 0;\n\nexport class CheckboxChange {\n source: CheckboxComponent;\n checked: boolean;\n}\n\n/**\n * Una checkbox con design bootstrap italia. Supporta tutte le funzionalità di una checkbox HTML5,\n * ed espone una API simile. Una `<it-checkbox>` può essere checked, unchecked, o disabled.\n */\n@Component({\n selector: 'it-checkbox',\n template: `<div class=form-check>\n <input type=checkbox\n [id]=inputId\n [checked]=checked\n [disabled]=disabled\n (change)=handleChange($event)>\n <label\n [attr.for]=inputId>{{label}}</label>\n</div>\n`,\n styles: [``],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => CheckboxComponent), multi: true }],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CheckboxComponent implements ControlValueAccessor {\n /**\n * Se la checkbox è selezionata.\n */\n @Input()\n get checked(): boolean { return this._checked; }\n set checked(value: boolean) {\n if (value !== this.checked) {\n this._checked = value;\n this._changeDetectorRef.markForCheck();\n }\n }\n private _checked = false;\n\n /**\n * L'etichetta della checkbox.\n */\n @Input()\n label: string;\n\n /**\n * Se la checkbox è disabilitata.\n */\n @Input()\n get disabled(): boolean { return this._disabled; }\n set disabled(value: boolean) {\n if (value !== this.disabled) {\n this._disabled = value;\n this._changeDetectorRef.markForCheck();\n }\n }\n private _disabled = false;\n\n /**\n * Evento emesso quando il valore `checked` della checkbox cambia.\n */\n @Output() readonly change: EventEmitter<CheckboxChange> =\n new EventEmitter<CheckboxChange>();\n\n inputId = `checkbox-${identifier++}`;\n\n private _onTouched: () => any = () => {};\n\n private _controlValueAccessorChangeFn: (value: any) => void = () => { };\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef\n ) { }\n\n writeValue(value: any) {\n this.checked = !!value;\n }\n\n registerOnChange(fn: (value: any) => void) {\n this._controlValueAccessorChangeFn = fn;\n }\n\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n handleChange(event: Event) {\n event.stopPropagation();\n if (!this.disabled) {\n this._toggle();\n this._emitChangeEvent();\n }\n }\n\n private _toggle(): void {\n this.checked = !this.checked;\n }\n\n private _emitChangeEvent() {\n const event = new CheckboxChange();\n event.source = this;\n event.checked = this.checked;\n\n this._controlValueAccessorChangeFn(this.checked);\n this.change.emit(event);\n }\n}\n","/**\n * @license\n * Copyright Angular ng-bootstrap team All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://raw.githubusercontent.com/ng-bootstrap/ng-bootstrap/master/LICENSE\n */\nexport class Trigger {\n constructor(public open: string, public close?: string) {\n if (!close) {\n this.close = open;\n }\n }\n\n isManual() { return this.open === 'manual' || this.close === 'manual'; }\n}\n\nconst DEFAULT_ALIASES = {\n 'hover': ['mouseenter', 'mouseleave'],\n 'focus': ['focus', 'blur']\n};\n\nexport function parseTriggers(triggers: string, aliases = DEFAULT_ALIASES): Trigger[] {\n const trimmedTriggers = (triggers || '').trim();\n\n if (trimmedTriggers.length === 0) {\n return [];\n }\n\n const parsedTriggers = trimmedTriggers.split(/\\s+/).map(trigger => trigger.split(':')).map((triggerPair) => {\n const alias = aliases[triggerPair[0]] || triggerPair;\n return new Trigger(alias[0], alias[1]);\n });\n\n const manualTriggers = parsedTriggers.filter(triggerPair => triggerPair.isManual());\n\n if (manualTriggers.length > 1) {\n throw new Error('Triggers parse error: only one manual trigger is allowed');\n }\n\n if (manualTriggers.length === 1 && parsedTriggers.length > 1) {\n throw new Error('Triggers parse error: manual trigger can\\'t be mixed with other triggers');\n }\n\n return parsedTriggers;\n}\n\nconst noopFn = () => { };\n\nexport function listenToTriggers(renderer: any, nativeElement: any, triggers: string, openFn, closeFn, toggleFn) {\n const parsedTriggers = parseTriggers(triggers);\n const listeners = [];\n\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return noopFn;\n }\n\n parsedTriggers.forEach((trigger: Trigger) => {\n if (trigger.open === trigger.close) {\n listeners.push(renderer.listen(nativeElement, trigger.open, toggleFn));\n } else {\n listeners.push(\n renderer.listen(nativeElement, trigger.open, openFn), renderer.listen(nativeElement, trigger.close, closeFn));\n }\n });\n\n return () => { listeners.forEach(unsubscribeFn => unsubscribeFn()); };\n}\n","/**\n * @license\n * Copyright Angular ng-bootstrap team All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://raw.githubusercontent.com/ng-bootstrap/ng-bootstrap/master/LICENSE\n */\nexport class Positioning {\n private getAllStyles(element: HTMLElement) { return window.getComputedStyle(element); }\n\n private getStyle(element: HTMLElement, prop: string): string { return this.getAllStyles(element)[prop]; }\n\n private isStaticPositioned(element: HTMLElement): boolean {\n return (this.getStyle(element, 'position') || 'static') === 'static';\n }\n\n private offsetParent(element: HTMLElement): HTMLElement {\n let offsetParentEl = <HTMLElement>element.offsetParent || document.documentElement;\n\n while (offsetParentEl && offsetParentEl !== document.documentElement && this.isStaticPositioned(offsetParentEl)) {\n offsetParentEl = <HTMLElement>offsetParentEl.offsetParent;\n }\n\n return offsetParentEl || document.documentElement;\n }\n\n position(element: HTMLElement, round = true): ClientRect {\n let elPosition: ClientRect;\n let parentOffset: ClientRect = { width: 0, height: 0, top: 0, bottom: 0, left: 0, right: 0 };\n\n if (this.getStyle(element, 'position') === 'fixed') {\n elPosition = element.getBoundingClientRect();\n } else {\n const offsetParentEl = this.offsetParent(element);\n\n elPosition = this.offset(element, false);\n\n if (offsetParentEl !== document.documentElement) {\n parentOffset = this.offset(offsetParentEl, false);\n }\n\n parentOffset.top += offsetParentEl.clientTop;\n parentOffset.left += offsetParentEl.clientLeft;\n }\n\n elPosition.top -= parentOffset.top;\n elPosition.bottom -= parentOffset.top;\n elPosition.left -= parentOffset.left;\n elPosition.right -= parentOffset.left;\n\n if (round) {\n elPosition.top = Math.round(elPosition.top);\n elPosition.bottom = Math.round(elPosition.bottom);\n elPosition.left = Math.round(elPosition.left);\n elPosition.right = Math.round(elPosition.right);\n }\n\n return elPosition;\n }\n\n offset(element: HTMLElement, round = true): ClientRect {\n const elBcr = element.getBoundingClientRect();\n const viewportOffset = {\n top: window.pageYOffset - document.documentElement.clientTop,\n left: window.pageXOffset - document.documentElement.clientLeft\n };\n\n const elOffset = {\n height: elBcr.height || element.offsetHeight,\n width: elBcr.width || element.offsetWidth,\n top: elBcr.top + viewportOffset.top,\n bottom: elBcr.bottom + viewportOffset.top,\n left: elBcr.left + viewportOffset.left,\n right: elBcr.right + viewportOffset.left\n };\n\n if (round) {\n elOffset.height = Math.round(elOffset.height);\n elOffset.width = Math.round(elOffset.width);\n elOffset.top = Math.round(elOffset.top);\n elOffset.bottom = Math.round(elOffset.bottom);\n elOffset.left = Math.round(elOffset.left);\n elOffset.right = Math.round(elOffset.right);\n }\n\n return elOffset;\n }\n\n positionElements(hostElement: HTMLElement, targetElement: HTMLElement, placement: string, appendToBody?: boolean):\n ClientRect {\n const hostElPosition = appendToBody ? this.offset(hostElement, false) : this.position(hostElement, false);\n const targetElStyles = this.getAllStyles(targetElement);\n const targetElBCR = targetElement.getBoundingClientRect();\n const placementPrimary = placement.split('-')[0] || 'top';\n const placementSecondary = placement.split('-')[1] || 'center';\n\n const targetElPosition: ClientRect = {\n 'height': targetElBCR.height || targetElement.offsetHeight,\n 'width': targetElBCR.width || targetElement.offsetWidth,\n 'top': 0,\n 'bottom': targetElBCR.height || targetElement.offsetHeight,\n 'left': 0,\n 'right': targetElBCR.width || targetElement.offsetWidth\n };\n\n switch (placementPrimary) {\n case 'top':\n targetElPosition.top =\n hostElPosition.top - (targetElement.offsetHeight + parseFloat(targetElStyles.marginBottom));\n break;\n case 'bottom':\n targetElPosition.top = hostElPosition.top + hostElPosition.height;\n break;\n case 'left':\n targetElPosition.left =\n hostElPosition.left - (targetElement.offsetWidth + parseFloat(targetElStyles.marginRight));\n break;\n case 'right':\n targetElPosition.left = hostElPosition.left + hostElPosition.width;\n break;\n }\n\n switch (placementSecondary) {\n case 'top':\n targetElPosition.top = hostElPosition.top;\n break;\n case 'bottom':\n targetElPosition.top = hostElPosition.top + hostElPosition.height - targetElement.offsetHeight;\n break;\n case 'left':\n targetElPosition.left = hostElPosition.left;\n break;\n case 'right':\n targetElPosition.left = hostElPosition.left + hostElPosition.width - targetElement.offsetWidth;\n break;\n case 'center':\n if (placementPrimary === 'top' || placementPrimary === 'bottom') {\n targetElPosition.left = hostElPosition.left + hostElPosition.width / 2 - targetElement.offsetWidth / 2;\n } else {\n targetElPosition.top = hostElPosition.top + hostElPosition.height / 2 - targetElement.offsetHeight / 2;\n }\n break;\n }\n\n targetElPosition.top = Math.round(targetElPosition.top);\n targetElPosition.bottom = Math.round(targetElPosition.bottom);\n targetElPosition.left = Math.round(targetElPosition.left);\n targetElPosition.right = Math.round(targetElPosition.right);\n\n return targetElPosition;\n }\n\n // Restituisce i collocamenti disponibili per l'elemento target nella viewport in base all'elemento host\n getAvailablePlacements(hostElement: HTMLElement, targetElement: HTMLElement): string[] {\n const availablePlacements: Array<string> = [];\n const hostElemClientRect = hostElement.getBoundingClientRect();\n const targetElemClientRect = targetElement.getBoundingClientRect();\n const html = document.documentElement;\n const windowHeight = window.innerHeight || html.clientHeight;\n const windowWidth = window.innerWidth || html.clientWidth;\n const hostElemClientRectHorCenter = hostElemClientRect.left + hostElemClientRect.width / 2;\n const hostElemClientRectVerCenter = hostElemClientRect.top + hostElemClientRect.height / 2;\n\n // controlla se la larghezza dell'elemento target può essere collocata tra la sinistra dell'host e l'inizio della viewport\n // e controlla anche se l'altezza del target è nella viewport\n if (targetElemClientRect.width < hostElemClientRect.left) {\n // controlla solo per la sinistra\n if (hostElemClientRectVerCenter > targetElemClientRect.height / 2 &&\n windowHeight - hostElemClientRectVerCenter > targetElemClientRect.height / 2) {\n availablePlacements.splice(availablePlacements.length, 1, 'left');\n }\n // controlla solo per le varianti di sinistra left-top and left-bottom\n this.setSecondaryPlacementForLeftRight(hostElemClientRect, targetElemClientRect, 'left', availablePlacements);\n }\n\n // controlla se l'altezza del target è minore della cima dell'host\n if (targetElemClientRect.height < hostElemClientRect.top) {\n if (hostElemClientRectHorCenter > targetElemClientRect.width / 2 &&\n windowWidth - hostElemClientRectHorCenter > targetElemClientRect.width / 2) {\n availablePlacements.splice(availablePlacements.length, 1, 'top');\n }\n this.setSecondaryPlacementForTopBottom(hostElemClientRect, targetElemClientRect, 'top', availablePlacements);\n }\n\n // controlla se la larghezza dell'elemento target può essere collocata tra la destra dell'host e la fine della viewport\n // e controlla anche se l'altezza del target è nella viewport\n if (windowWidth - hostElemClientRect.right > targetElemClientRect.width) {\n // controlla solo per la destra\n if (hostElemClientRectVerCenter > targetElemClientRect.height / 2 &&\n windowHeight - hostElemClientRectVerCenter > targetElemClientRect.height / 2) {\n availablePlacements.splice(availablePlacements.length, 1, 'right');\n }\n // controlla solo per le varianti di destra right-top and right-bottom\n this.setSecondaryPlacementForLeftRight(hostElemClientRect, targetElemClientRect, 'right', availablePlacements);\n }\n\n // controlla se c'è abbastanza spazio tra la base dell'host e la fine della viewport per l'altezza del target\n if (windowHeight - hostElemClientRect.bottom > targetElemClientRect.height) {\n if (hostElemClientRectHorCenter > targetElemClientRect.width / 2 &&\n windowWidth - hostElemClientRectHorCenter > targetElemClientRect.width / 2) {\n availablePlacements.splice(availablePlacements.length, 1, 'bottom');\n }\n this.setSecondaryPlacementForTopBottom(hostElemClientRect, targetElemClientRect, 'bottom', availablePlacements);\n }\n\n return availablePlacements;\n }\n\n /**\n * Controlla se il collocamento secondario per sinistra e destra è disponibile, come left-top, left-bottom, right-top e right-bottom\n * primaryplacement: left|right\n * availablePlacementArr: array con i collocamenti disponibili\n */\n private setSecondaryPlacementForLeftRight(\n hostElemClientRect: ClientRect, targetElemClientRect: ClientRect, primaryPlacement: string,\n availablePlacementArr: Array<string>) {\n const html = document.documentElement;\n // check for left-bottom\n if (targetElemClientRect.height <= hostElemClientRect.bottom) {\n availablePlacementArr.splice(availablePlacementArr.length, 1, primaryPlacement + '-bottom');\n }\n if ((window.innerHeight || html.clientHeight) - hostElemClientRect.top >= targetElemClientRect.height) {\n availablePlacementArr.splice(availablePlacementArr.length, 1, primaryPlacement + '-top');\n }\n }\n\n /**\n * Controlla se il collocamento secondario per sopra e sotto è disponibile, come top-left, top-right, bottom-left, bottom-right\n * primaryplacement: top|bottom\n * availablePlacementArr: array con i collocamenti disponibili\n */\n private setSecondaryPlacementForTopBottom(\n hostElemClientRect: ClientRect, targetElemClientRect: ClientRect, primaryPlacement: string,\n availablePlacementArr: Array<string>) {\n const html = document.documentElement;\n // check for left-bottom\n if ((window.innerWidth || html.clientWidth) - hostElemClientRect.left >= targetElemClientRect.width) {\n availablePlacementArr.splice(availablePlacementArr.length, 1, primaryPlacement + '-left');\n }\n if (targetElemClientRect.width <= hostElemClientRect.right) {\n availablePlacementArr.splice(availablePlacementArr.length, 1, primaryPlacement + '-right');\n }\n }\n}\n\nconst positionService = new Positioning();\n\n/*\n * Accetta l'array del collocamento e applica il collocamento adatto in base alla viewport.\n * Ritorna il collocamento applicato.\n * In caso di collocamento auto, i collocamenti sono selezionati in ordine\n * 'top', 'bottom', 'left', 'right',\n * 'top-left', 'top-right',\n * 'bottom-left', 'bottom-right',\n * 'left-top', 'left-bottom',\n * 'right-top', 'right-bottom'.\n * */\nexport function positionElements(\n hostElement: HTMLElement, targetElement: HTMLElement, placement: string | Placement | PlacementArray,\n appendToBody?: boolean): Placement {\n const placementVals: Array<Placement> = Array.isArray(placement) ? placement : [placement as Placement];\n\n // Sostituisce il collocamento auto con altri collocamenti\n let hasAuto = placementVals.findIndex(val => val === 'auto');\n if (hasAuto >= 0) {\n ['top', 'bottom', 'left', 'right', 'top-left', 'top-right', 'bottom-left', 'bottom-right', 'left-top',\n 'left-bottom', 'right-top', 'right-bottom',\n ].forEach(function (obj) {\n if (placementVals.find(val => val.search('^' + obj) !== -1) == null) {\n placementVals.splice(hasAuto++, 1, obj as Placement);\n }\n });\n }\n\n // coordinate per dove posizionare\n let topVal = 0, leftVal = 0;\n let appliedPlacement: Placement;\n // prendere i collocamenti disponibili\n const availablePlacements = positionService.getAvailablePlacements(hostElement, targetElement);\n // iterare sui collocamenti acquisiti\n for (const { item, index } of toItemIndexes(placementVals)) {\n // Controlla se il collocamento passato è presente nel collocamento disponibile, altrimenti applica l'ultimo collocamento nella\n // lista del collocamento passato\n if ((availablePlacements.find(val => val === item) != null) || (placementVals.length === index + 1)) {\n appliedPlacement = <Placement>item;\n const pos = positionService.positionElements(hostElement, targetElement, item, appendToBody);\n topVal = pos.top;\n leftVal = pos.left;\n break;\n }\n }\n targetElement.style.top = `${topVal}px`;\n targetElement.style.left = `${leftVal}px`;\n return appliedPlacement;\n}\n\n// Funzione per prendere l'indice e l'oggetto di un array\nfunction toItemIndexes<T>(a: T[]) {\n return a.map((item, index) => ({ item, index }));\n}\n\nexport type Placement = 'auto' | 'top' | 'bottom' | 'left' | 'right' | 'top-left' | 'top-right' | 'bottom-left' |\n 'bottom-right' | 'left-top' | 'left-bottom' | 'right-top' | 'right-bottom';\n\nexport type PlacementArray = Placement | Array<Placement>;\n","/**\n * @license\n * Copyright Angular ng-bootstrap team All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://raw.githubusercontent.com/ng-bootstrap/ng-bootstrap/master/LICENSE\n */\nimport {\n Injector,\n TemplateRef,\n ViewRef,\n ViewContainerRef,\n Renderer2,\n ComponentRef,\n ComponentFactoryResolver\n} from '@angular/core';\n\nexport class ContentRef {\n constructor(public nodes: any[], public viewRef?: ViewRef, public componentRef?: ComponentRef<any>) { }\n}\n\nexport class PopupService<T> {\n private _windowRef: ComponentRef<T>;\n private _contentRef: ContentRef;\n\n constructor(\n private _type: any, private _injector: Injector, private _viewContainerRef: ViewContainerRef,\n private _renderer: Renderer2, private _componentFactoryResolver: ComponentFactoryResolver) { }\n\n open(content?: string | TemplateRef<any>, context?: any): ComponentRef<T> {\n if (!this._windowRef) {\n this._contentRef = this._getContentRef(content, context);\n this._windowRef = this._viewContainerRef.createComponent(\n this._componentFactoryResolver.resolveComponentFactory<T>(this._type), 0, this._injector,\n this._contentRef.nodes);\n }\n\n return this._windowRef;\n }\n\n close() {\n if (this._windowRef) {\n this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._windowRef.hostView));\n this._windowRef = null;\n\n if (this._contentRef.viewRef) {\n this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._contentRef.viewRef));\n this._contentRef = null;\n }\n }\n }\n\n private _getContentRef(content: string | TemplateRef<any>, context?: any): ContentRef {\n if (!content) {\n return new ContentRef([]);\n } else if (content instanceof TemplateRef) {\n const viewRef = this._viewContainerRef.createEmbeddedView(<TemplateRef<T>>content, context);\n return new ContentRef([viewRef.rootNodes], viewRef);\n } else {\n return new ContentRef([[this._renderer.createText(`${content}`)]]);\n }\n }\n}\n","import * as t from 'io-ts';\n\nexport const InteractionTrigger = t.keyof({\n click: null,\n focus: null,\n hover: null,\n});\n\nexport const PopoverTrigger = t.keyof({\n click: null,\n focus: null,\n});\n\nconst CLICK = 'click';\nconst FOCUS = 'focus';\nconst HOVER = 'hover';\n\nexport const INTERACTION_TRIGGERS = {\n CLICK: CLICK,\n FOCUS: FOCUS,\n HOVER: HOVER,\n};\n\nexport const POPOVER_TRIGGERS = {\n CLICK: CLICK,\n FOCUS: FOCUS,\n};\n","/**\n * @license\n * Copyright Angular ng-bootstrap team All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://raw.githubusercontent.com/ng-bootstrap/ng-bootstrap/master/LICENSE\n */\nimport { Injectable } from '@angular/core';\nimport { PlacementArray } from './positioning';\nimport { INTERACTION_TRIGGERS } from '../models/InteractionTrigger';\n\n/**\n * Servizio di configurazione per la direttiva ItPopover.\n * Il servizio può essere iniettato, tipicamente in un root component, per impostare i valori delle proprietà in\n * modo tale da fornire i valori di default per tutti i popover utilizzati in un'applicazione.\n */\n@Injectable({providedIn: 'root'})\nexport class PopoverConfig {\n placement: PlacementArray = 'right';\n triggers = INTERACTION_TRIGGERS.CLICK;\n container: string;\n disablePopover = false;\n}\n","/**\n * @license\n * Copyright Angular ng-bootstrap team All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://raw.githubusercontent.com/ng-bootstrap/ng-bootstrap/master/LICENSE\n */\nimport {\n Component, ChangeDetectionStrategy,\n ElementRef, Renderer2, Input, HostBinding,\n ChangeDetectorRef, TemplateRef, ViewContainerRef\n} from '@angular/core';\nimport { Placement } from './positioning';\nimport { ContentRef } from './popup';\n\n@Component({\n selector: 'it-popover-window',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<div class=\"arrow\"></div>\n<h3 class=\"popover-header\">{{title}}</h3>\n<div class=\"popover-body\">\n <ng-content></ng-content>\n</div>`,\n styles: [`:host.bs-popover-bottom .arrow,:host.bs-popover-top .arrow{left:50%;margin-left:-5px}:host.bs-popover-bottom-left .arrow,:host.bs-popover-top-left .arrow{left:2em}:host.bs-popover-bottom-right .arrow,:host.bs-popover-top-right .arrow{left:auto;right:2em}:host.bs-popover-left .arrow,:host.bs-popover-right .arrow{top:50%;margin-top:-5px}:host.bs-popover-left-top .arrow,:host.bs-popover-right-top .arrow{top:.7em}:host.bs-popover-left-bottom .arrow,:host.bs-popover-right-bottom .arrow{top:auto;bottom:.7em}`]\n})\nexport class PopoverComponent {\n @Input() placement: Placement = 'right';\n\n @Input()\n get title() { return this._title; }\n set title(value: string) {\n this._title = value;\n this._changeDetectorRef.detectChanges();\n }\n private _title: string;\n\n @Input() @HostBinding('id') id: string;\n @Input() @HostBinding('hidden') hidden = false;\n\n @HostBinding('attr.role') role = 'tooltip';\n @HostBinding('class') get myCssClass(): string {\n return 'popover bs-popover-' + this.placement.split('-')[0] + ' bs-popover-' + this.placement;\n }\n\n constructor(\n private _element: ElementRef<HTMLElement>, private _renderer: Renderer2,\n private _changeDetectorRef: ChangeDetectorRef, private _viewContainerRef: ViewContainerRef\n ) {}\n\n applyPlacement(_placement: Placement) {\n // Rimuovi le classi della posizione precedente\n this._renderer.removeClass(this._element.nativeElement, 'bs-popover-' + this.placement.toString().split('-')[0]);\n this._renderer.removeClass(this._element.nativeElement, 'bs-popover-' + this.placement.toString());\n\n // Imposta la nuova posizione\n this.placement = _placement;\n\n // Applica le classi della nuova posizione\n this._renderer.addClass(this._element.nativeElement, 'bs-popover-' + this.placement.toString().split('-')[0]);\n this._renderer.addClass(this._element.nativeElement, 'bs-popover-' + this.placement.toString());\n }\n\n setNewContent(content: string | TemplateRef<any>, context?: any) {\n const contentElement = this._element.nativeElement.querySelector('.popover-body');\n\n let newContent: ContentRef;\n if (!content) {\n newContent = new ContentRef([]);\n } else if (content instanceof TemplateRef) {\n const viewRef = this._viewContainerRef.createEmbeddedView(<TemplateRef<PopoverComponent>>content, context);\n newContent = new ContentRef([viewRef.rootNodes], viewRef);\n } else {\n newContent = new ContentRef([[this._renderer.createText(`${content}`)]]);\n }\n\n const childNodes = contentElement.childNodes;\n for (let i = 0; i < childNodes.length; i++) {\n this._renderer.removeChild(contentElement, childNodes[i]);\n }\n\n newContent.nodes.forEach(newNode => {\n newNode.forEach(newChild => this._renderer.appendChild(contentElement, newChild));\n });\n }\n}\n","export class Util {\n static coerceBooleanProperty(value: any): boolean {\n return value != null && `${value}` !== 'false';\n }\n\n static coerceNumberProperty(value: any, fallbackValue = 0): number {\n return Util._isNumberValue(value) ? Number(value) : fallbackValue;\n }\n\n static _isNumberValue(value: any): boolean {\n return !isNaN(parseFloat(value as any)) && !isNaN(Number(value));\n\n }\n}\n","/**\n * @license\n * Copyright Angular ng-bootstrap team All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://raw.githubusercontent.com/ng-bootstrap/ng-bootstrap/master/LICENSE\n */\nimport {\n Directive,\n Input,\n Output,\n EventEmitter,\n OnInit,\n OnDestroy,\n OnChanges,\n Injector,\n Renderer2,\n ComponentRef,\n ElementRef,\n TemplateRef,\n ViewContainerRef,\n ComponentFactoryResolver,\n NgZone,\n SimpleChanges,\n} from '@angular/core';\n\nimport { listenToTriggers } from './triggers';\nimport { positionElements, Placement, PlacementArray } from './positioning';\nimport { PopupService } from './popup';\nimport { PopoverConfig } from './popover.config';\nimport { PopoverComponent } from './popover.component';\nimport { Subscription } from 'rxjs';\nimport { POPOVER_TRIGGERS, PopoverTrigger } from '../models/InteractionTrigger';\nimport { Util } from '../util/util';\n\nlet identifier = 0;\n\n/**\n * Una direttiva per la creazione di un popover.\n */\n@Directive({\n selector: '[it-popover]', // tslint:disable-line\n exportAs: 'it-popover'\n})\nexport class PopoverDirective implements OnInit, OnDestroy, OnChanges {\n /**\n * Contenuto da mostrare nel popover. In assenza di titolo e contenuto, il popover non si aprirà.\n */\n @Input('it-popover')\n get itPopover(): string | TemplateRef<any> { return this._itPopover; }\n set itPopover(value: string | TemplateRef<any>) { this._itPopover = value; }\n private _itPopover: string | TemplateRef<any>;\n\n /**\n * Titolo del popover. In assenza di titolo e contenuto, il popover non si aprirà.\n */\n @Input()\n get title(): string { return this._title; }\n set title(value: string) { this._title = value; }\n private _title: string;\n\n /**\n * Il collocamento accettato dal popover:\n * \"top\", \"top-left\", \"top-right\", \"bottom\", \"bottom-left\", \"bottom-right\",\n * \"left\", \"left-top\", \"left-bottom\", \"right\", \"right-top\", \"right-bottom\"\n * ed array dei valori soprariportati.\n */\n @Input()\n get placement(): PlacementArray { return this._placement; }\n set placement(value: PlacementArray) { this._placement = value; }\n private _placement: PlacementArray;\n\n /**\n * Specifica gli eventi che dovrebbero innescare il popover. Supporta una lista con nomi di eventi separati da spazi.\n */\n @Input()\n get triggers(): any {\n return this._triggers;\n }\n set triggers(value: any) {\n if (PopoverTrigger.is(value)) {\n this._triggers = value;\n } else {\n this._triggers = POPOVER_TRIGGERS.CLICK;\n }\n }\n private _triggers;\n\n /**\n * Un selettore che specifica l'elemento in cui il popover dovrebbe essere aggiunto.\n * Attualmente supporta solo \"body\".\n */\n @Input()\n get container(): string { return this._container; }\n set container(value: string) { this._container = value; }\n private _container: string;\n\n /**\n * Evento da emettere quando il popover sta per essere mostrato\n */\n @Output('show')\n get showEvent(): EventEmitter<PopoverDirective> { return this._showEvent; }\n set showEvent(value: EventEmitter<PopoverDirective>) { this._showEvent = value; }\n private _showEvent = new EventEmitter<PopoverDirective>();\n\n /**\n * Evento da emettere quando il popover è mostrato\n */\n @Output('shown')\n get shownEvent(): EventEmitter<PopoverDirective> { return this._shownEvent; }\n set shownEvent(value: EventEmitter<PopoverDirective>) { this._shownEvent = value; }\n private _shownEvent = new EventEmitter<PopoverDirective>();\n\n /**\n * Evento da emettere quando il popover viene inserito nel DOM\n */\n @Output('inserted')\n get insertedEvent(): EventEmitter<PopoverDirective> { return this._insertedEvent; }\n set insertedEvent(value: EventEmitter<PopoverDirective>) { this._insertedEvent = value; }\n private _insertedEvent = new EventEmitter<PopoverDirective>();\n\n /**\n * Evento da emettere quando il popover sta per essere nascosto\n */\n @Output('hide')\n get hideEvent(): EventEmitter<PopoverDirective> { return this._hideEvent; }\n set hideEvent(value: EventEmitter<PopoverDirective>) { this._hideEvent = value; }\n private _hideEvent = new EventEmitter<PopoverDirective>();\n\n /**\n * Evento da emettere quando il popover è nascosto\n */\n @Output('hidden')\n get hiddenEvent(): EventEmitter<PopoverDirective> { return this._hiddenEvent; }\n set hiddenEvent(value: EventEmitter<PopoverDirective>) { this._hiddenEvent = value; }\n private _hiddenEvent = new EventEmitter<PopoverDirective>();\n\n /**\n * Un flag utilizzato per indicare se un popover è disabilitato, così da non doverlo mostrare.\n */\n @Input('disabled')\n get disablePopover(): boolean { return this._disablePopover; }\n set disablePopover(value: boolean) { this._disablePopover = Util.coerceBooleanProperty(value); }\n private _disablePopover = false;\n\n private _itPopoverWindowId = `it-popover-${identifier++}`;\n private _popupService: PopupService<PopoverComponent>;\n private _windowRef: ComponentRef<PopoverComponent>;\n private _unregisterListenersFn;\n private _zoneSubscription: Subscription;\n private _isDisabled(): boolean {\n if (this.disablePopover) {\n return true;\n }\n if (!this.itPopover && !this.title) {\n return true;\n }\n return false;\n }\n\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _renderer: Renderer2,\n injector: Injector,\n componentFactoryResolver: ComponentFactoryResolver,\n viewContainerRef: ViewContainerRef,\n config: PopoverConfig,\n ngZone: NgZone\n ) {\n this.placement = config.placement;\n this.triggers = config.triggers;\n this.container = config.container;\n this.disablePopover = config.disablePopover;\n this._popupService = new PopupService<PopoverComponent>(\n PopoverComponent, injector, viewContainerRef, _renderer, componentFactoryResolver);\n\n this._zoneSubscription = ngZone.onStable.subscribe(() => {\n if (this._windowRef) {\n this._windowRef.instance.applyPlacement(\n positionElements(\n this._elementRef.nativeElement, this._windowRef.location.nativeElement,\n this.placement, this.container === 'body'\n )\n );\n }\n });\n }\n\n /**\n * Apre il popover di un elemento. È considerato un azionamento \"manuale\" del popover.\n * Il context è un valore opzionale da iniettare nel template del popover quando esso viene creato.\n */\n show(context?: any) {\n if (!this._isDisabled()) {\n // Scatena l'evento per segnalare l'inizio del processo per visualizzare il popover\n this.showEvent.emit(this);\n\n if (!this._windowRef) {\n this._windowRef = this._popupService.open(this.itPopover, context);\n\n const popoverComponent = this._windowRef.instance;\n popoverComponent.title = this.title;\n popoverComponent.id = this._itPopoverWindowId;\n\n this._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', this._itPopoverWindowId);\n\n if (this.container === 'body') {\n window.document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n }\n\n this._windowRef.changeDetectorRef.detectChanges();\n this._windowRef.changeDetectorRef.markForCheck();\n\n // Posiziona il popover attorno all'elemento\n popoverComponent.applyPlacement(\n positionElements(\n this._elementRef.nativeElement, this._windowRef.location.nativeElement,\n this.placement, this.container === 'body'\n )\n );\n\n // Scatena l'evento per segnalare l'inserimento nel DOM\n this.insertedEvent.emit(this);\n } else {\n const popoverComponent = this._windowRef.instance;\n popoverComponent.hidden = false;\n }\n\n // Scatena l'evento per segnalare che il popover è stato visualizzato\n this.shownEvent.emit(this);\n }\n }\n\n /**\n * Chiude il popover di un elemento. È considerato un azionamento \"manuale\" del popover.\n */\n hide() {\n // Scatena l'evento per segnalare l'inizio del processo per nascondere il popover\n this.hideEvent.emit(this);\n if (this._windowRef) {\n const popoverComponent = this._windowRef.instance;\n popoverComponent.hidden = true;\n\n // Scatena l'evento per segnalare che il popover è stato nascosto\n this.hiddenEvent.emit(this);\n }\n }\n\n /**\n * Apre/chiude il un popover di un elemento. È considerato un azionamento \"manuale\" del popover.\n */\n toggle() {\n if (this._windowRef) {\n if (this._windowRef.instance.hidden) {\n this.show();\n } else {\n this.hide();\n }\n } else {\n this.show();\n }\n }\n\n /**\n * Nasconde e distrugge il popover di un elemento.\n */\n dispose() {\n const isShown = this._windowRef ? !this._windowRef.instance.hidden : false;\n if (isShown) {\n this.hide();\n }\n\n if (this._windowRef) {\n this._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\n this._popupService.close();\n this._windowRef = null;\n }\n }\n\n /**\n * Fornisce al popover di un elemento la possibilità di essere mostrato.\n */\n enable() {\n if (this._isDisabled()) {\n this.disablePopover = false;\n }\n }\n\n /**\n * Rimuove la capacità di mostrare il popover di un elemento.\n */\n disable() {\n if (!this._isDisabled()) {\n this.disablePopover = true;\n }\n }\n\n /**\n * Attiva/disattiva la possibilità che il popover di un elemento sia mostrato o nascosto.\n */\n toggleEnabled() {\n if (this._isDisabled()) {\n this.enable();\n } else {\n this.disable();\n }\n }\n\n ngOnInit() {\n this._unregisterListenersFn = listenToTriggers(\n this._renderer, this._elementRef.nativeElement, this.triggers,\n this.show.bind(this), this.hide.bind(this), this.toggle.bind(this)\n );\n }\n\n ngOnChanges(changes: SimpleChanges) {\n // Chiude il popover se titolo e contenuti risultano vuoti, o se disablePopover è impostato a vero\n if (changes['itPopover'] || changes['title'] || changes['disablePopover']) {\n if (this._windowRef) {\n const isShown = !this._windowRef.instance.hidden;\n if (changes['itPopover']) {\n this._windowRef.instance.setNewContent(this.itPopover);\n this._windowRef.changeDetectorRef.detectChanges();\n this._windowRef.changeDetectorRef.markForCheck();\n }\n if (changes['title']) {\n this._windowRef.instance.title = this.title;\n }\n\n\n if (isShown) {\n if (!this._isDisabled()) {\n this.show();\n } else {\n this.hide();\n }\n }\n }\n } else if (changes['placement']) {\n if (this._windowRef) {\n this._windowRef.instance.applyPlacement(\n positionElements(\n this._elementRef.nativeElement, this._windowRef.location.nativeElement,\n this.placement, this.container === 'body'\n )\n );\n }\n } else if (changes['container']) {\n const isShown = this._windowRef ? !this._windowRef.instance.hidden : false;\n this.dispose();\n if (isShown) {\n this.show();\n }\n } else if (changes['triggers']) {\n this.dispose();\n\n const triggersChangers = changes['triggers'];\n if (triggersChangers.previousValue !== triggersChangers.currentValue && !triggersChangers.firstChange) {\n this._unregisterListenersFn();\n this._unregisterListenersFn = listenToTriggers(\n this._renderer, this._elementRef.nativeElement, this.triggers,\n this.show.bind(this), this.hide.bind(this), this.toggle.bind(this)\n );\n }\n }\n }\n\n ngOnDestroy() {\n this.dispose();\n this._unregisterListenersFn();\n this._zoneSubscription.unsubscribe();\n }\n\n}\n","import { Component, Input, Output, EventEmitter, ChangeDetectorRef, forwardRef, ChangeDetectionStrategy } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nlet identifier = 0;\n\nexport class ToggleChange {\n source: ToggleComponent;\n checked: boolean;\n}\n\n/**\n * Una toggle con design bootstrap italia. Supporta tutte le funzionalità di una checkbox HTML5,\n * ed espone una API simile. Una `<it-toggle>` può essere checked, unchecked, o disabled.\n */\n@Component({\n selector: 'it-toggle',\n template: `<div class=\"form-check\">\n <div class=\"toggles\">\n <label [attr.for]=inputId>\n {{label}}\n <input type=checkbox\n [id]=inputId\n [checked]=checked\n [disabled]=disabled\n (change)=handleChange($event)>\n <span class=\"lever\"></span>\n </label>\n </div>\n</div>`,\n styles: [``],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ToggleComponent), multi: true }],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ToggleComponent implements ControlValueAccessor {\n /**\n * Se la toggle è selezionata.\n */\n @Input()\n get checked(): boolean { return this._checked; }\n set checked(value: boolean) {\n if (value !== this.checked) {\n this._checked = value;\n this._changeDetectorRef.markForCheck();\n }\n }\n private _checked = false;\n\n /**\n * L'etichetta della toggle.\n */\n @Input()\n label: string;\n\n /**\n * Se la toggle è disabilitata.\n */\n @Input()\n get disabled(): boolean { return this._disabled; }\n set disabled(value: boolean) {\n if (value !== this.disabled) {\n this._disabled = value;\n this._changeDetectorRef.markForCheck();\n }\n }\n private _disabled = false;\n\n /**\n * Evento emesso quando il valore `checked` della toggle cambia.\n */\n @Output() readonly change: EventEmitter<ToggleChange> =\n new EventEmitter<ToggleChange>();\n\n inputId = `toggle-${identifier++}`;\n\n private _onTouched: () => any = () => {};\n\n private _controlValueAccessorChangeFn: (value: any) => void = () => { };\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef\n ) { }\n\n writeValue(value: any) {\n this.checked = !!value;\n }\n\n registerOnChange(fn: (value: any) => void) {\n this._controlValueAccessorChangeFn = fn;\n }\n\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n handleChange(event: Event) {\n event.stopPropagation();\n if (!this.disabled) {\n this._toggle();\n this._emitChangeEvent();\n }\n }\n\n private _toggle(): void {\n this.checked = !this.checked;\n }\n\n private _emitChangeEvent() {\n const event = new ToggleChange();\n event.source = this;\n event.checked = this.checked;\n\n this._controlValueAccessorChangeFn(this.checked);\n this.change.emit(event);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable, OnDestroy} from '@angular/core';\n\n\n// Users of the Dispatcher never need to see this type, but TypeScript requires it to be exported.\nexport type UniqueSelectionDispatcherListener = (id: string, name: string) => void;\n\n/**\n * Class to coordinate unique selection based on name.\n * Intended to be consumed as an Angular service.\n * This service is needed because native radio change events are only fired on the item currently\n * being selected, and we still need to uncheck the previous selection.\n *\n * This service does not *store* any IDs and names because they may change at any time, so it is\n * less error-prone if they are simply passed through when the events occur.\n */\n@Injectable({providedIn: 'root'})\nexport class UniqueSelectionDispatcher implements OnDestroy {\n private _listeners: UniqueSelectionDispatcherListener[] = [];\n\n /**\n * Notify other items that selection for the given name has been set.\n * @param id ID of the item.\n * @param name Name of the item.\n */\n notify(id: string, name: string) {\n for (const listener of this._listeners) {\n listener(id, name);\n }\n }\n\n /**\n * Listen for future changes to item selection.\n * @return Function used to deregister listener\n */\n listen(listener: UniqueSelectionDispatcherListener): () => void {\n this._listeners.push(listener);\n return () => {\n this._listeners = this._listeners.filter((registered: UniqueSelectionDispatcherListener) => {\n return listener !== registered;\n });\n };\n }\n\n ngOnDestroy() {\n this._listeners = [];\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectorRef,\n forwardRef,\n ChangeDetectionStrategy,\n AfterContentInit,\n Directive,\n ContentChildren,\n QueryList,\n OnInit,\n OnDestroy,\n Optional,\n HostBinding\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { UniqueSelectionDispatcher } from './unique-selection-dispatcher';\n\nlet identifier = 0;\n\nfunction _coerceBooleanProperty(value: any): boolean {\n return value != null && `${value}` !== 'false';\n}\n\nexport class RadioChange {\n constructor(\n public source: RadioButtonComponent,\n public value: any\n ) { }\n}\n\n@Directive({\n selector: 'it-radio-group', // tslint:disable-line\n exportAs: 'itRadioGroup',\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioGroupDirective),\n multi: true\n }]\n})\nexport class RadioGroupDirective implements AfterContentInit, ControlValueAccessor {\n\n @HostBinding('attr.role') role = 'radiogroup';\n\n /**\n * Il valore selezionato per il gruppo. Dovrebbe essere uguale al valore del radio button selezionato se\n * *esiste* un radio button con un valore corrispondente. Se *non esiste* un radio button corrispondente\n * questo valore persiste ed è applicato nel caso in cui un nuovo radio button viene aggiunto con il valore\n * corrispondente.\n */\n private _value: any = null;\n\n /** L'attributo HTML name da applicare ai radio button in questo gruppo */\n private _name = `it-radio-group-${identifier++}`;\n\n /** Il radio button attualmente selezionato. */\n private _selected: RadioButtonComponent | null = null;\n\n /** se `value` è stato settato al suo valore iniziale. */\n private _isInitialized = false;\n\n /** Se il radio group è disabilitato. */\n private _disabled = false;\n\n\n\n /**\n * Evento emesso quando il valore del gruppo cambia.\n * Gli eventi di change sono emessi soltanto quando il valore cambia a causa dell'interazione dell'utente\n * con il radio button (stesso comportamento di `<input type-\"radio\">`).\n */\n @Output() readonly change: EventEmitter<RadioChange> = new EventEmitter<RadioChange>();\n\n /** radio buttons figli. */\n @ContentChildren(forwardRef(() => RadioButtonComponent), { descendants: true }) _radios: QueryList<RadioButtonComponent>; // tslint:disable-line\n\n /** Il metodo da chiamare per aggiornare ngModel */\n _controlValueAccessorChangeFn: (value: any) => void = () => { };\n\n onTouched: () => any = () => { };\n\n /** Nome del gruppo di radio button. Tutti i radio button all'interno del gruppo avranno questo nome. */\n @Input()\n get name(): string { return this._name; }\n set name(value: string) {\n this._name = value;\n this._updateRadioButtonNames();\n }\n\n /** Valore del radio button. */\n @Input()\n get value(): any { return this._value; }\n set value(newValue: any) {\n if (this._value !== newValue) {\n this._value = newValue;\n\n this._updateSelectedRadioFromValue();\n this._checkSelectedRadioButton();\n }\n }\n\n _checkSelectedRadioButton() {\n if (this._selected && !this._selected.checked) {\n this._selected.checked = true;\n }\n }\n\n /** Il radio button selezionato. */\n @Input()\n get selected() { return this._selected; }\n set selected(selected: RadioButtonComponent | null) {\n this._selected = selected;\n this.value = selected ? selected.value : null;\n this._checkSelectedRadioButton();\n }\n\n /** Se il gruppo è disabled */\n @Input()\n get disabled(): boolean { return this._disabled; }\n set disabled(value) {\n this._disabled = _coerceBooleanProperty(value);\n this._markRadiosForCheck();\n }\n\n constructor(\n private _changeDetector: ChangeDetectorRef\n ) { }\n\n /**\n * Inizializza le proprietà quando il contenuto dei figliè disponibile.\n * Questo permette di propagare gli attributi rilevanti ai radio buttons associati.\n */\n ngAfterContentInit(): void {\n this._isInitialized = true;\n }\n\n _touch() {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n private _updateRadioButtonNames(): void {\n if (this._radios) {\n this._radios.forEach(radio => {\n radio.name = this.name;\n });\n }\n }\n\n /** Aggiorna il radio button `selected` a seconda del suo _value. */\n private _updateSelectedRadioFromValue(): void {\n this._selected = null;\n this._radios.forEach(radio => {\n radio.checked = this.value === radio.value;\n if (radio.checked) {\n this._selected = radio;\n }\n });\n }\n\n /** Invia l'evento change con la selezione corrente e il valore del gruppo. */\n _emitChangeEvent(): void {\n if (this._isInitialized) {\n this.change.emit(new RadioChange(this._selected, this._value));\n }\n }\n\n _markRadiosForCheck() {\n if (this._radios) {\n this._radios.forEach(radio => radio._markForCheck());\n }\n }\n\n writeValue(value: any): void {\n this.value = value;\n this._changeDetector.markForCheck();\n }\n\n registerOnChange(fn: (value: any) => void): void {\n this._controlValueAccessorChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n}\n\n/**\n * Un radio button con design bootstrap italia. Supporta tutte le funzionalità di una radio HTML5,\n * ed espone una API simile. Una `<it-radio-button>` può essere checked, unchecked, o disabled.\n */\n@Component({\n selector: 'it-radio-button',\n template: `<div class=\"form-check\">\n <input type=\"radio\"\n [id]=\"id\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [attr.name]=\"name\"\n (change)=\"_onInputChange($event)\">\n <label\n [attr.for]=\"id\">{{label}}</label>\n</div>\n`,\n styles: [``],\n exportAs: 'itRadioButton',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class RadioButtonComponent implements OnInit, OnDestroy {\n\n id = `radio-${identifier++}`;\n\n /** Attributo 'name' usato per raggruppare i radio button per un'unica selezione. */\n @Input() name: string;\n\n /** L'etichetta delradio button. */\n @Input()\n label: string;\n\n /** se il radio button è checked. */\n @Input()\n get checked(): boolean { return this._checked; }\n set checked(value: boolean) {\n const newCheckedState = _coerceBooleanProperty(value);\n if (this._checked !== newCheckedState) {\n this._checked = newCheckedState;\n if (newCheckedState && this.radioGroup && this.radioGroup.value !== this.value) {\n this.radioGroup.selected = this;\n } else if (!newCheckedState && this.radioGroup && this.radioGroup.value === this.value) {\n this.radioGroup.selected = null;\n }\n\n if (newCheckedState) {\n this._radioDispatcher.notify(this.id, this.name);\n }\n\n this._changeDetector.markForCheck();\n }\n }\n\n /** Il valore di questo radio button. */\n @Input()\n get value(): any { return this._value; }\n set value(value: any) {\n if (this._value !== value) {\n this._value = value;\n if (this.radioGroup !== null) {\n if (!this.checked) {\n this.checked = this.radioGroup.value === value;\n }\n if (this.checked) {\n this.radioGroup.selected = this;\n }\n }\n }\n }\n\n /** Se il radio button è disabled. */\n @Input()\n get disabled(): boolean {\n return this._disabled || (this.radioGroup !== null && this.radioGroup.disabled);\n }\n set disabled(value: boolean) {\n const newDisabledState = !!value;\n if (this._disabled !== newDisabledState) {\n this._disabled = newDisabledState;\n this._changeDetector.markForCheck();\n }\n }\n\n /**\n * Evento emesso quando il valore `checked` del radio button cambia.\n */\n @Output() readonly change: EventEmitter<RadioChange> = new EventEmitter<RadioChange>();\n\n /** Il radio group padre. Può essere presente o meno. */\n radioGroup: RadioGroupDirective;\n\n /** Se il radio button è checked. */\n private _checked = false;\n\n /** Se il radio button è disabled. */\n private _disabled: boolean;\n\n /** il valore assegnato al radio button. */\n private _value: any = null;\n\n private _removeUniqueSelectionListener: () => void = () => { };\n\n constructor(\n @Optional() radioGroup: RadioGroupDirective,\n private _changeDetector: ChangeDetectorRef,\n private _radioDispatcher: UniqueSelectionDispatcher\n ) {\n this.radioGroup = radioGroup;\n\n this._removeUniqueSelectionListener =\n _radioDispatcher.listen((id: string, name: string) => {\n if (id !== this.id && name === this.name) {\n this.checked = false;\n }\n });\n }\n\n /**\n * Segna il radio button come da controllare per la change detection.\n */\n _markForCheck() {\n this._changeDetector.markForCheck();\n }\n\n ngOnInit(): void {\n if (this.radioGroup) {\n // Se il radio button è all'interno di un gruppo, determina se deve essere selezionato\n this.checked = this.radioGroup.value === this._value;\n // Copia il `name` del radio group\n this.name = this.radioGroup.name;\n }\n }\n\n ngOnDestroy() {\n this._removeUniqueSelectionListener();\n }\n\n private _emitChangeEvent(): void {\n this.change.emit(new RadioChange(this, this._value));\n }\n\n _onInputChange(event: Event) {\n event.stopPropagation();\n\n const groupValueChanged = this.radioGroup && this.value !== this.radioGroup.value;\n this.checked = true;\n this._emitChangeEvent();\n\n if (this.radioGroup) {\n this.radioGroup._controlValueAccessorChangeFn(this.value);\n this.radioGroup._touch();\n if (groupValueChanged) {\n this.radioGroup._emitChangeEvent();\n }\n }\n }\n}\n","/**\n * @license\n * Copyright Angular ng-bootstrap team All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://raw.githubusercontent.com/ng-bootstrap/ng-bootstrap/master/LICENSE\n */\nexport class Trigger {\n constructor(public open: string, public close?: string) {\n if (!close) {\n this.close = open;\n }\n }\n\n isManual() { return this.open === 'manual' || this.close === 'manual'; }\n}\n\nconst DEFAULT_ALIASES = {\n 'hover': ['mouseenter', 'mouseleave'],\n 'focus': ['focus', 'blur']\n};\n\nexport function parseTriggers(triggers: string, aliases = DEFAULT_ALIASES): Trigger[] {\n const trimmedTriggers = (triggers || '').trim();\n\n if (trimmedTriggers.length === 0) {\n return [];\n }\n\n const parsedTriggers = trimmedTriggers.split(/\\s+/).map(trigger => trigger.split(':')).map((triggerPair) => {\n const alias = aliases[triggerPair[0]] || triggerPair;\n return new Trigger(alias[0], alias[1]);\n });\n\n const manualTriggers = parsedTriggers.filter(triggerPair => triggerPair.isManual());\n\n if (manualTriggers.length > 1) {\n throw new Error('Triggers parse error: only one manual trigger is allowed');\n }\n\n if (manualTriggers.length === 1 && parsedTriggers.length > 1) {\n throw new Error('Triggers parse error: manual trigger can\\'t be mixed with other triggers');\n }\n\n return parsedTriggers;\n}\n\nconst noopFn = () => { };\n\nexport function listenToTriggers(renderer: any, nativeElement: any, triggers: string, openFn, closeFn, toggleFn) {\n const parsedTriggers = parseTriggers(triggers);\n const listeners = [];\n\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return noopFn;\n }\n\n parsedTriggers.forEach((trigger: Trigger) => {\n if (trigger.open === trigger.close) {\n listeners.push(renderer.listen(nativeElement, trigger.open, toggleFn));\n } else {\n listeners.push(\n renderer.listen(nativeElement, trigger.open, openFn), renderer.listen(nativeElement, trigger.close, closeFn));\n }\n });\n\n return () => { listeners.forEach(unsubscribeFn => unsubscribeFn()); };\n}\n","/**\n * @license\n * Copyright Angular ng-bootstrap team All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://raw.githubusercontent.com/ng-bootstrap/ng-bootstrap/master/LICENSE\n */\nexport class Positioning {\n private getAllStyles(element: HTMLElement) { return window.getComputedStyle(element); }\n\n private getStyle(element: HTMLElement, prop: string): string { return this.getAllStyles(element)[prop]; }\n\n private isStaticPositioned(element: HTMLElement): boolean {\n return (this.getStyle(element, 'position') || 'static') === 'static';\n }\n\n private offsetParent(element: HTMLElement): HTMLElement {\n let offsetParentEl = <HTMLElement>element.offsetParent || document.documentElement;\n\n while (offsetParentEl && offsetParentEl !== document.documentElement && this.isStaticPositioned(offsetParentEl)) {\n offsetParentEl = <HTMLElement>offsetParentEl.offsetParent;\n }\n\n return offsetParentEl || document.documentElement;\n }\n\n position(element: HTMLElement, round = true): ClientRect {\n let elPosition: ClientRect;\n let parentOffset: ClientRect = { width: 0, height: 0, top: 0, bottom: 0, left: 0, right: 0 };\n\n if (this.getStyle(element, 'position') === 'fixed') {\n elPosition = element.getBoundingClientRect();\n } else {\n const offsetParentEl = this.offsetParent(element);\n\n elPosition = this.offset(element, false);\n\n if (offsetParentEl !== document.documentElement) {\n parentOffset = this.offset(offsetParentEl, false);\n }\n\n parentOffset.top += offsetParentEl.clientTop;\n parentOffset.left += offsetParentEl.clientLeft;\n }\n\n elPosition.top -= parentOffset.top;\n elPosition.bottom -= parentOffset.top;\n elPosition.left -= parentOffset.left;\n elPosition.right -= parentOffset.left;\n\n if (round) {\n elPosition.top = Math.round(elPosition.top);\n elPosition.bottom = Math.round(elPosition.bottom);\n elPosition.left = Math.round(elPosition.left);\n elPosition.right = Math.round(elPosition.right);\n }\n\n return elPosition;\n }\n\n offset(element: HTMLElement, round = true): ClientRect {\n const elBcr = element.getBoundingClientRect();\n const viewportOffset = {\n top: window.pageYOffset - document.documentElement.clientTop,\n left: window.pageXOffset - document.documentElement.clientLeft\n };\n\n const elOffset = {\n height: elBcr.height || element.offsetHeight,\n width: elBcr.width || element.offsetWidth,\n top: elBcr.top + viewportOffset.top,\n bottom: elBcr.bottom + viewportOffset.top,\n left: elBcr.left + viewportOffset.left,\n right: elBcr.right + viewportOffset.left\n };\n\n if (round) {\n elOffset.height = Math.round(elOffset.height);\n elOffset.width = Math.round(elOffset.width);\n elOffset.top = Math.round(elOffset.top);\n elOffset.bottom = Math.round(elOffset.bottom);\n elOffset.left = Math.round(elOffset.left);\n elOffset.right = Math.round(elOffset.right);\n }\n\n return elOffset;\n }\n\n positionElements(hostElement: HTMLElement, targetElement: HTMLElement, placement: string, appendToBody?: boolean):\n ClientRect {\n const hostElPosition = appendToBody ? this.offset(hostElement, false) : this.position(hostElement, false);\n const targetElStyles = this.getAllStyles(targetElement);\n const targetElBCR = targetElement.getBoundingClientRect();\n const placementPrimary = placement.split('-')[0] || 'top';\n const placementSecondary = placement.split('-')[1] || 'center';\n\n const targetElPosition: ClientRect = {\n 'height': targetElBCR.height || targetElement.offsetHeight,\n 'width': targetElBCR.width || targetElement.offsetWidth,\n 'top': 0,\n 'bottom': targetElBCR.height || targetElement.offsetHeight,\n 'left': 0,\n 'right': targetElBCR.width || targetElement.offsetWidth\n };\n\n switch (placementPrimary) {\n case 'top':\n targetElPosition.top =\n hostElPosition.top - (targetElement.offsetHeight + parseFloat(targetElStyles.marginBottom));\n break;\n case 'bottom':\n targetElPosition.top = hostElPosition.top + hostElPosition.height;\n break;\n case 'left':\n targetElPosition.left =\n hostElPosition.left - (targetElement.offsetWidth + parseFloat(targetElStyles.marginRight));\n break;\n case 'right':\n targetElPosition.left = hostElPosition.left + hostElPosition.width;\n break;\n }\n\n switch (placementSecondary) {\n case 'top':\n targetElPosition.top = hostElPosition.top;\n break;\n case 'bottom':\n targetElPosition.top = hostElPosition.top + hostElPosition.height - targetElement.offsetHeight;\n break;\n case 'left':\n targetElPosition.left = hostElPosition.left;\n break;\n case 'right':\n targetElPosition.left = hostElPosition.left + hostElPosition.width - targetElement.offsetWidth;\n break;\n case 'center':\n if (placementPrimary === 'top' || placementPrimary === 'bottom') {\n targetElPosition.left = hostElPosition.left + hostElPosition.width / 2 - targetElement.offsetWidth / 2;\n } else {\n targetElPosition.top = hostElPosition.top + hostElPosition.height / 2 - targetElement.offsetHeight / 2;\n }\n break;\n }\n\n targetElPosition.top = Math.round(targetElPosition.top);\n targetElPosition.bottom = Math.round(targetElPosition.bottom);\n targetElPosition.left = Math.round(targetElPosition.left);\n targetElPosition.right = Math.round(targetElPosition.right);\n\n return targetElPosition;\n }\n\n // Restituisce i collocamenti disponibili per l'elemento target nella viewport in base all'elemento host\n getAvailablePlacements(hostElement: HTMLElement, targetElement: HTMLElement): string[] {\n const availablePlacements: Array<string> = [];\n const hostElemClientRect = hostElement.getBoundingClientRect();\n const targetElemClientRect = targetElement.getBoundingClientRect();\n const html = document.documentElement;\n const windowHeight = window.innerHeight || html.clientHeight;\n const windowWidth = window.innerWidth || html.clientWidth;\n const hostElemClientRectHorCenter = hostElemClientRect.left + hostElemClientRect.width / 2;\n const hostElemClientRectVerCenter = hostElemClientRect.top + hostElemClientRect.height / 2;\n\n // controlla se la larghezza dell'elemento target può essere collocata tra la sinistra dell'host e l'inizio della viewport\n // e controlla anche se l'altezza del target è nella viewport\n if (targetElemClientRect.width < hostElemClientRect.left) {\n // controlla solo per la sinistra\n if (hostElemClientRectVerCenter > targetElemClientRect.height / 2 &&\n windowHeight - hostElemClientRectVerCenter > targetElemClientRect.height / 2) {\n availablePlacements.splice(availablePlacements.length, 1, 'left');\n }\n // controlla solo per le varianti di sinistra left-top and left-bottom\n this.setSecondaryPlacementForLeftRight(hostElemClientRect, targetElemClientRect, 'left', availablePlacements);\n }\n\n // controlla se l'altezza del target è minore della cima dell'host\n if (targetElemClientRect.height < hostElemClientRect.top) {\n if (hostElemClientRectHorCenter > targetElemClientRect.width / 2 &&\n windowWidth - hostElemClientRectHorCenter > targetElemClientRect.width / 2) {\n availablePlacements.splice(availablePlacements.length, 1, 'top');\n }\n this.setSecondaryPlacementForTopBottom(hostElemClientRect, targetElemClientRect, 'top', availablePlacements);\n }\n\n // controlla se la larghezza dell'elemento target può essere collocata tra la destra dell'host e la fine della viewport\n // e controlla anche se l'altezza del target è nella viewport\n if (windowWidth - hostElemClientRect.right > targetElemClientRect.width) {\n // controlla solo per la destra\n if (hostElemClientRectVerCenter > targetElemClientRect.height / 2 &&\n windowHeight - hostElemClientRectVerCenter > targetElemClientRect.height / 2) {\n availablePlacements.splice(availablePlacements.length, 1, 'right');\n }\n // controlla solo per le varianti di destra right-top and right-bottom\n this.setSecondaryPlacementForLeftRight(hostElemClientRect, targetElemClientRect, 'right', availablePlacements);\n }\n\n // controlla se c'è abbastanza spazio tra la base dell'host e la fine della viewport per l'altezza del target\n if (windowHeight - hostElemClientRect.bottom > targetElemClientRect.height) {\n if (hostElemClientRectHorCenter > targetElemClientRect.width / 2 &&\n windowWidth - hostElemClientRectHorCenter > targetElemClientRect.width / 2) {\n availablePlacements.splice(availablePlacements.length, 1, 'bottom');\n }\n this.setSecondaryPlacementForTopBottom(hostElemClientRect, targetElemClientRect, 'bottom', availablePlacements);\n }\n\n return availablePlacements;\n }\n\n /**\n * Controlla se il collocamento secondario per sinistra e destra è disponibile, come left-top, left-bottom, right-top e right-bottom\n * primaryplacement: left|right\n * availablePlacementArr: array con i collocamenti disponibili\n */\n private setSecondaryPlacementForLeftRight(\n hostElemClientRect: ClientRect, targetElemClientRect: ClientRect, primaryPlacement: string,\n availablePlacementArr: Array<string>) {\n const html = document.documentElement;\n // check for left-bottom\n if (targetElemClientRect.height <= hostElemClientRect.bottom) {\n availablePlacementArr.splice(availablePlacementArr.length, 1, primaryPlacement + '-bottom');\n }\n if ((window.innerHeight || html.clientHeight) - hostElemClientRect.top >= targetElemClientRect.height) {\n availablePlacementArr.splice(availablePlacementArr.length, 1, primaryPlacement + '-top');\n }\n }\n\n /**\n * Controlla se il collocamento secondario per sopra e sotto è disponibile, come top-left, top-right, bottom-left, bottom-right\n * primaryplacement: top|bottom\n * availablePlacementArr: array con i collocamenti disponibili\n */\n private setSecondaryPlacementForTopBottom(\n hostElemClientRect: ClientRect, targetElemClientRect: ClientRect, primaryPlacement: string,\n availablePlacementArr: Array<string>) {\n const html = document.documentElement;\n // check for left-bottom\n if ((window.innerWidth || html.clientWidth) - hostElemClientRect.left >= targetElemClientRect.width) {\n availablePlacementArr.splice(availablePlacementArr.length, 1, primaryPlacement + '-left');\n }\n if (targetElemClientRect.width <= hostElemClientRect.right) {\n availablePlacementArr.splice(availablePlacementArr.length, 1, primaryPlacement + '-right');\n }\n }\n}\n\nconst positionService = new Positioning();\n\n/*\n * Accetta l'array del collocamento e applica il collocamento adatto in base alla viewport.\n * Ritorna il collocamento applicato.\n * In caso di collocamento auto, i collocamenti sono selezionati in ordine\n * 'top', 'bottom', 'left', 'right',\n * 'top-left', 'top-right',\n * 'bottom-left', 'bottom-right',\n * 'left-top', 'left-bottom',\n * 'right-top', 'right-bottom'.\n * */\nexport function positionElements(\n hostElement: HTMLElement, targetElement: HTMLElement, placement: string | Placement | PlacementArray,\n appendToBody?: boolean): Placement {\n const placementVals: Array<Placement> = Array.isArray(placement) ? placement : [placement as Placement];\n\n // Sostituisce il collocamento auto con altri collocamenti\n let hasAuto = placementVals.findIndex(val => val === 'auto');\n if (hasAuto >= 0) {\n ['top', 'bottom', 'left', 'right', 'top-left', 'top-right', 'bottom-left', 'bottom-right', 'left-top',\n 'left-bottom', 'right-top', 'right-bottom',\n ].forEach(function (obj) {\n if (placementVals.find(val => val.search('^' + obj) !== -1) == null) {\n placementVals.splice(hasAuto++, 1, obj as Placement);\n }\n });\n }\n\n // coordinate per dove posizionare\n let topVal = 0, leftVal = 0;\n let appliedPlacement: Placement;\n // prendere i collocamenti disponibili\n const availablePlacements = positionService.getAvailablePlacements(hostElement, targetElement);\n // iterare sui collocamenti acquisiti\n for (const { item, index } of toItemIndexes(placementVals)) {\n // Controlla se il collocamento passato è presente nel collocamento disponibile, altrimenti applica l'ultimo collocamento nella\n // lista del collocamento passato\n if ((availablePlacements.find(val => val === item) != null) || (placementVals.length === index + 1)) {\n appliedPlacement = <Placement>item;\n const pos = positionService.positionElements(hostElement, targetElement, item, appendToBody);\n topVal = pos.top;\n leftVal = pos.left;\n break;\n }\n }\n targetElement.style.top = `${topVal}px`;\n targetElement.style.left = `${leftVal}px`;\n return appliedPlacement;\n}\n\n// Funzione per prendere l'indice e l'oggetto di un array\nfunction toItemIndexes<T>(a: T[]) {\n return a.map((item, index) => ({ item, index }));\n}\n\nexport type Placement = 'auto' | 'top' | 'bottom' | 'left' | 'right' | 'top-left' | 'top-right' | 'bottom-left' |\n 'bottom-right' | 'left-top' | 'left-bottom' | 'right-top' | 'right-bottom';\n\nexport type PlacementArray = Placement | Array<Placement>;\n","/**\n * @license\n * Copyright Angular ng-bootstrap team All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://raw.githubusercontent.com/ng-bootstrap/ng-bootstrap/master/LICENSE\n */\nimport {\n Injector,\n TemplateRef,\n ViewRef,\n ViewContainerRef,\n Renderer2,\n ComponentRef,\n ComponentFactoryResolver\n} from '@angular/core';\n\nexport class ContentRef {\n constructor(public nodes: any[], public viewRef?: ViewRef, public componentRef?: ComponentRef<any>) { }\n}\n\nexport class PopupService<T> {\n private _windowRef: ComponentRef<T>;\n private _contentRef: ContentRef;\n\n constructor(\n private _type: any, private _injector: Injector, private _viewContainerRef: ViewContainerRef,\n private _renderer: Renderer2, private _componentFactoryResolver: ComponentFactoryResolver) { }\n\n open(content?: string | TemplateRef<any>, context?: any): ComponentRef<T> {\n if (!this._windowRef) {\n this._contentRef = this._getContentRef(content, context);\n this._windowRef = this._viewContainerRef.createComponent(\n this._componentFactoryResolver.resolveComponentFactory<T>(this._type), 0, this._injector,\n this._contentRef.nodes);\n }\n\n return this._windowRef;\n }\n\n close() {\n if (this._windowRef) {\n this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._windowRef.hostView));\n this._windowRef = null;\n\n if (this._contentRef.viewRef) {\n this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._contentRef.viewRef));\n this._contentRef = null;\n }\n }\n }\n\n private _getContentRef(content: string | TemplateRef<any>, context?: any): ContentRef {\n if (!content) {\n return new ContentRef([]);\n } else if (content instanceof TemplateRef) {\n const viewRef = this._viewContainerRef.createEmbeddedView(<TemplateRef<T>>content, context);\n return new ContentRef([viewRef.rootNodes], viewRef);\n } else {\n return new ContentRef([[this._renderer.createText(`${content}`)]]);\n }\n }\n}\n","/**\n * @license\n * Copyright Angular ng-bootstrap team All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://raw.githubusercontent.com/ng-bootstrap/ng-bootstrap/master/LICENSE\n */\nimport { Injectable } from '@angular/core';\nimport { PlacementArray } from './positioning';\n\n/**\n * Servizio di configurazione per la direttiva Ittooltip.\n * Il servizio può essere iniettato, tipicamente in un root component, per impostare i valori delle proprietà in\n * modo tale da fornire i valori di default per tutti i tooltip utilizzati in un'applicazione.\n */\n@Injectable({providedIn: 'root'})\nexport class TooltipConfig {\n placement: PlacementArray = 'right';\n container: string;\n disableTooltip = false;\n}\n","/**\n * @license\n * Copyright Angular ng-bootstrap team All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://raw.githubusercontent.com/ng-bootstrap/ng-bootstrap/master/LICENSE\n */\nimport { Component, ChangeDetectionStrategy, ElementRef, Renderer2, Input, HostBinding } from '@angular/core';\nimport { Placement } from './positioning';\n\n@Component({\n selector: 'it-tooltip-window',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<div class=\"arrow\"></div>\n<div class=\"tooltip-inner\">\n <ng-content></ng-content>\n</div>`,\n styles: [`:host.bs-tooltip-bottom .arrow,:host.bs-tooltip-top .arrow{left:calc(50% - .4rem)}:host.bs-tooltip-bottom-left .arrow,:host.bs-tooltip-top-left .arrow{left:1em}:host.bs-tooltip-bottom-right .arrow,:host.bs-tooltip-top-right .arrow{left:auto;right:.8rem}:host.bs-tooltip-left .arrow,:host.bs-tooltip-right .arrow{top:calc(50% - .4rem)}:host.bs-tooltip-left-top .arrow,:host.bs-tooltip-right-top .arrow{top:.4rem}:host.bs-tooltip-left-bottom .arrow,:host.bs-tooltip-right-bottom .arrow{top:auto;bottom:.4rem}`]\n})\nexport class TooltipComponent {\n @Input() placement: Placement = 'right';\n\n @Input() @HostBinding('id') id: string;\n @Input() @HostBinding('hidden') hidden = false;\n\n @HostBinding('attr.role') role = 'tooltip';\n @HostBinding('class') get myCssClass(): string {\n return 'tooltip show bs-tooltip-' + this.placement.split('-')[0] + ' bs-tooltip-' + this.placement;\n }\n\n constructor(private _element: ElementRef<HTMLElement>, private _renderer: Renderer2) {}\n\n applyPlacement(_placement: Placement) {\n // Rimuovi le classi della posizione precedente\n this._renderer.removeClass(this._element.nativeElement, 'bs-tooltip-' + this.placement.toString().split('-')[0]);\n this._renderer.removeClass(this._element.nativeElement, 'bs-tooltip-' + this.placement.toString());\n\n // Imposta la nuova posizione\n this.placement = _placement;\n\n // Applica le classi della nuova posizione\n this._renderer.addClass(this._element.nativeElement, 'bs-tooltip-' + this.placement.toString().split('-')[0]);\n this._renderer.addClass(this._element.nativeElement, 'bs-tooltip-' + this.placement.toString());\n }\n}\n","/**\n * @license\n * Copyright Angular ng-bootstrap team All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://raw.githubusercontent.com/ng-bootstrap/ng-bootstrap/master/LICENSE\n */\nimport {\n Directive,\n Input,\n Output,\n EventEmitter,\n OnInit,\n OnDestroy,\n OnChanges,\n Injector,\n Renderer2,\n ComponentRef,\n ElementRef,\n TemplateRef,\n ViewContainerRef,\n ComponentFactoryResolver,\n NgZone,\n SimpleChanges,\n HostListener,\n} from '@angular/core';\n\nimport { listenToTriggers } from './triggers';\nimport { positionElements, Placement, PlacementArray } from './positioning';\nimport { PopupService } from './popup';\nimport { TooltipConfig } from './tooltip.config';\nimport { TooltipComponent } from './tooltip.component';\nimport { Subscription } from 'rxjs';\nimport { Util } from '../util/util';\nimport { INTERACTION_TRIGGERS } from '../models/InteractionTrigger';\n\nconst TRIGGER = INTERACTION_TRIGGERS.HOVER;\n\nlet identifier = 0;\n\n/**\n * Una direttiva per la creazione di un tooltip.\n */\n@Directive({\n selector: '[it-tooltip]', // tslint:disable-line\n exportAs: 'it-tooltip'\n})\nexport class TooltipDirective implements OnInit, OnDestroy, OnChanges {\n /**\n * Contenuto da mostrare nel tooltip. In assenza di contenuto, il tooltip non si aprirà.\n */\n @Input('it-tooltip')\n get itTooltip(): string | TemplateRef<any> { return this._itTooltip; }\n set itTooltip(value: string | TemplateRef<any>) { this._itTooltip = value; }\n private _itTooltip: string | TemplateRef<any>;\n\n /**\n * Il collocamento accettato dal tooltip:\n * \"top\", \"top-left\", \"top-right\", \"bottom\", \"bottom-left\", \"bottom-right\",\n * \"left\", \"left-top\", \"left-bottom\", \"right\", \"right-top\", \"right-bottom\"\n * ed array dei valori soprariportati.\n */\n @Input()\n get placement(): PlacementArray { return this._placement; }\n set placement(value: PlacementArray) { this._placement = value; }\n private _placement: PlacementArray;\n\n /**\n * Un selettore che specifica l'elemento in cui il tooltip dovrebbe essere aggiunto.\n * Attualmente supporta solo \"body\".\n */\n @Input()\n get container(): string { return this._container; }\n set container(value: string) { this._container = value; }\n private _container: string;\n\n /**\n * Evento da emettere quando il tooltip sta per essere mostrato\n */\n @Output('show')\n get showEvent(): EventEmitter<TooltipDirective> { return this._showEvent; }\n set showEvent(value: EventEmitter<TooltipDirective>) { this._showEvent = value; }\n private _showEvent = new EventEmitter<TooltipDirective>();\n\n /**\n * Evento da emettere quando il tooltip è mostrato\n */\n @Output('shown')\n get shownEvent(): EventEmitter<TooltipDirective> { return this._shownEvent; }\n set shownEvent(value: EventEmitter<TooltipDirective>) { this._shownEvent = value; }\n private _shownEvent = new EventEmitter<TooltipDirective>();\n\n /**\n * Evento da emettere quando il tooltip viene inserito nel DOM\n */\n @Output('inserted')\n get insertedEvent(): EventEmitter<TooltipDirective> { return this._insertedEvent; }\n set insertedEvent(value: EventEmitter<TooltipDirective>) { this._insertedEvent = value; }\n private _insertedEvent = new EventEmitter<TooltipDirective>();\n\n /**\n * Evento da emettere quando il tooltip sta per essere nascosto\n */\n @Output('hide')\n get hideEvent(): EventEmitter<TooltipDirective> { return this._hideEvent; }\n set hideEvent(value: EventEmitter<TooltipDirective>) { this._hideEvent = value; }\n private _hideEvent = new EventEmitter<TooltipDirective>();\n\n /**\n * Evento da emettere quando il tooltip è nascosto\n */\n @Output('hidden')\n get hiddenEvent(): EventEmitter<TooltipDirective> { return this._hiddenEvent; }\n set hiddenEvent(value: EventEmitter<TooltipDirective>) { this._hiddenEvent = value; }\n private _hiddenEvent = new EventEmitter<TooltipDirective>();\n\n /**\n * Un flag utilizzato per indicare se un tooltip è disabilitato, così da non doverlo mostrare.\n */\n @Input('disabled')\n get disableTooltip(): boolean { return this._disableTooltip; }\n set disableTooltip(value: boolean) { this._disableTooltip = Util.coerceBooleanProperty(value); }\n private _disableTooltip = false;\n\n private _itTooltipWindowId = `it-tooltip-${identifier++}`;\n private _popupService: PopupService<TooltipComponent>;\n private _windowRef: ComponentRef<TooltipComponent>;\n private _unregisterListenersFn;\n private _zoneSubscription: Subscription;\n private _isDisabled(): boolean {\n if (this.disableTooltip) {\n return true;\n }\n if (!this.itTooltip) {\n return true;\n }\n return false;\n }\n\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _renderer: Renderer2,\n injector: Injector,\n componentFactoryResolver: ComponentFactoryResolver,\n viewContainerRef: ViewContainerRef,\n config: TooltipConfig,\n ngZone: NgZone\n ) {\n this.placement = config.placement;\n this.container = config.container;\n this.disableTooltip = config.disableTooltip;\n this._popupService = new PopupService<TooltipComponent>(\n TooltipComponent, injector, viewContainerRef, _renderer, componentFactoryResolver);\n\n this._zoneSubscription = ngZone.onStable.subscribe(() => {\n if (this._windowRef) {\n this._windowRef.instance.applyPlacement(\n positionElements(\n this._elementRef.nativeElement, this._windowRef.location.nativeElement,\n this.placement, this.container === 'body'\n )\n );\n }\n });\n }\n\n /**\n * Apre il tooltip di un elemento. È considerato un azionamento \"manuale\" del tooltip.\n * Il context è un valore opzionale da iniettare nel template del tooltip quando esso viene creato.\n */\n show(context?: any) {\n if (!this._isDisabled()) {\n // Scatena l'evento per segnalare l'inizio del processo per visualizzare il tooltip\n this.showEvent.emit(this);\n\n if (!this._windowRef) {\n this._windowRef = this._popupService.open(this.itTooltip, context);\n\n const tooltipComponent = this._windowRef.instance;\n tooltipComponent.id = this._itTooltipWindowId;\n\n this._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', this._itTooltipWindowId);\n\n if (this.container === 'body') {\n window.document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n }\n\n this._windowRef.changeDetectorRef.detectChanges();\n this._windowRef.changeDetectorRef.markForCheck();\n\n // Posiziona il tooltip attorno all'elemento\n tooltipComponent.applyPlacement(\n positionElements(\n this._elementRef.nativeElement, this._windowRef.location.nativeElement,\n this.placement, this.container === 'body'\n )\n );\n\n // Scatena l'evento per segnalare l'inserimento nel DOM\n this.insertedEvent.emit(this);\n } else {\n const tooltipComponent = this._windowRef.instance;\n tooltipComponent.hidden = false;\n }\n\n // Scatena l'evento per segnalare che il tooltip è stato visualizzato\n this.shownEvent.emit(this);\n }\n }\n\n /**\n * Chiude il tooltip di un elemento. È considerato un azionamento \"manuale\" del tooltip.\n */\n hide() {\n // Scatena l'evento per segnalare l'inizio del processo per nascondere il tooltip\n this.hideEvent.emit(this);\n if (this._windowRef) {\n const tooltipComponent = this._windowRef.instance;\n tooltipComponent.hidden = true;\n\n // Scatena l'evento per segnalare che il tooltip è stato nascosto\n this.hiddenEvent.emit(this);\n }\n }\n\n /**\n * Apre/chiude il un tooltip di un elemento. È considerato un azionamento \"manuale\" del tooltip.\n */\n toggle() {\n if (this._windowRef) {\n if (this._windowRef.instance.hidden) {\n this.show();\n } else {\n this.hide();\n }\n } else {\n this.show();\n }\n }\n\n /**\n * Nasconde e distrugge il tooltip di un elemento.\n */\n dispose() {\n const isShown = this._windowRef ? !this._windowRef.instance.hidden : false;\n if (isShown) {\n this.hide();\n }\n\n if (this._windowRef) {\n this._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\n this._popupService.close();\n this._windowRef = null;\n }\n }\n\n /**\n * Fornisce al tooltip di un elemento la possibilità di essere mostrato.\n */\n enable() {\n if (this._isDisabled()) {\n this.disableTooltip = false;\n }\n }\n\n /**\n * Rimuove la capacità di mostrare il tooltip di un elemento.\n */\n disable() {\n if (!this._isDisabled()) {\n this.disableTooltip = true;\n }\n }\n\n /**\n * Attiva/disattiva la possibilità che il tooltip di un elemento sia mostrato o nascosto.\n */\n toggleEnabled() {\n if (this._isDisabled()) {\n this.enable();\n } else {\n this.disable();\n }\n }\n\n ngOnInit() {\n this._unregisterListenersFn = listenToTriggers(\n this._renderer, this._elementRef.nativeElement, TRIGGER,\n this.show.bind(this), this.hide.bind(this), this.toggle.bind(this)\n );\n }\n\n ngOnChanges(changes: SimpleChanges) {\n // Chiude il tooltip se il contenuto risulta vuoto, o se disableTooltip è impostato a vero\n if ((changes['itTooltip'] || changes['disableTooltip']) && this._isDisabled()) {\n this.hide();\n } else if (changes['placement']) {\n if (this._windowRef) {\n this._windowRef.instance.applyPlacement(\n positionElements(\n this._elementRef.nativeElement, this._windowRef.location.nativeElement,\n this.placement, this.container === 'body'\n )\n );\n }\n } else if (changes['container']) {\n const isShown = this._windowRef ? !this._windowRef.instance.hidden : false;\n this.dispose();\n if (isShown) {\n this.show();\n }\n }\n }\n\n ngOnDestroy() {\n this.dispose();\n this._unregisterListenersFn();\n this._zoneSubscription.unsubscribe();\n }\n\n @HostListener('focus')\n protected handleFocus() {\n this.show();\n }\n\n @HostListener('blur')\n protected handleBlur() {\n this.hide();\n }\n}\n","import * as t from 'io-ts';\n\nexport const ButtonSize = t.keyof({\n lg: null,\n sm: null,\n xs: null,\n});\n\nconst LG = 'lg';\nconst SM = 'sm';\nconst XS = 'xs';\n\nexport const BUTTON_SIZES = {\n LG: LG,\n SM: SM,\n XS: XS,\n};\n","import { Component, Input } from '@angular/core';\nimport { ThemeColor } from '../models/ThemeColor';\nimport { ButtonSize } from '../models/ButtonSize';\nimport { Util } from '../util/util';\n\nlet identifier = 0;\n\n/**\n * Un bottone con design bootstrap italia. Supporta tutte le funzionalità di un bottone HTML5.\n */\n@Component({\n selector: 'it-button',\n template: `<button type=\"button\" [id]=\"id\" [class]=\"buttonClass\" [disabled]=\"disabled\" [attr.aria-disabled]=\"disabled\">\n <ng-content></ng-content>\n</button>\n`,\n styles: [``]\n})\nexport class ButtonComponent {\n\n id = `button-${identifier++}`;\n\n /**\n * Se presente, il pulsante avrà un effetto di trasparenza e non reagirà al click\n */\n @Input()\n get disabled(): boolean { return this._disabled; }\n set disabled(value: boolean) { this._disabled = Util.coerceBooleanProperty(value); }\n private _disabled = false;\n\n /**\n * Stabilisce se lo stile del pulsante avrà un contorno.\n * Accetta una espressione booleana o può essere usato come attributo senza valore.\n * Deve funzionare solo in congiunzione con un colore definito, altrimenti l'attributo viene ignorato.\n */\n @Input()\n get outline(): boolean { return this._outline; }\n set outline(value: boolean) { this._outline = Util.coerceBooleanProperty(value); }\n private _outline = false;\n\n /**\n * Indica se il pulsante occupa tutta l'ampiezza a sua disposizione.\n */\n @Input()\n get block(): boolean { return this._block; }\n set block(value: boolean) { this._block = Util.coerceBooleanProperty(value); }\n private _block = false;\n\n /**\n * Stabilisce il colore del pulsante a seconda delle classi di bootstrap.\n * Può avere valori:\n * <ul>\n * <li> primary\n * <li> secondary\n * <li> danger\n * <li> warning\n * <li> info\n * <li> success\n * <li> light\n * <li> dark\n * </ul>\n */\n @Input()\n get color(): any {\n return this._color;\n }\n set color(value: any) {\n if (ThemeColor.is(value)) {\n this._color = value;\n } else {\n this._color = undefined;\n }\n }\n private _color;\n\n /**\n * Indica la grandezza del pulsante. Può assumere i valori:\n * <ul>\n * <li> lg\n * <li> sm\n * <li> xs\n * </ul>\n */\n @Input()\n get size(): any {\n return this._size;\n }\n set size(value: any) {\n if (ButtonSize.is(value)) {\n this._size = value;\n } else {\n this._size = undefined;\n }\n }\n private _size;\n\n get buttonClass() {\n let cssClass = 'btn';\n\n if (this.color) {\n if (this.outline) {\n cssClass += ` btn-outline-${this.color}`;\n } else {\n cssClass += ` btn-${this.color}`;\n }\n }\n\n if (this.size) {\n cssClass += ` btn-${this.size}`;\n }\n\n if (this.block) {\n cssClass += ' btn-block';\n }\n\n if (this.disabled) {\n cssClass += ' disabled';\n }\n\n return cssClass;\n }\n\n}\n","import { Directive, ElementRef, Input, HostBinding } from '@angular/core';\nimport { ThemeColor, THEME_COLORS } from '../models/ThemeColor';\nimport { Util } from '../util/util';\n\n/**\n * Una badge con design bootstrap italia.\n */\n@Directive({\n selector: '[it-badge]', // tslint:disable-line\n exportAs: 'itBadge'\n})\nexport class BadgeDirective {\n\n /**\n * (Opzionale) indica il colore del badge. Può essere `primary`, `secondary`, `danger`, `warning`, `info`, `success`, `light` o `dark`.\n * Se non viene fornito o il valore è diverso da quelli previsti il suo valore di default è `light`.\n */\n @Input()\n get badgeColor(): any {\n return this._badgeColor;\n }\n set badgeColor(value: any) {\n if (ThemeColor.is(value)) {\n this._badgeColor = value;\n } else {\n this._badgeColor = THEME_COLORS.LIGHT;\n }\n }\n private _badgeColor = THEME_COLORS.LIGHT;\n\n /**\n * La direttiva che abilita l'elemento come badge. Mostra il testo come contenuto del badge.\n * Se valutato ad `undefined`, `null` o stringa vuota il badge non viene mostrato.\n */\n @Input('it-badge')\n @HostBinding('innerText')\n get badgeText(): string { return this._badgeText; }\n set badgeText(value: string) {\n if (value) {\n this._badgeText = value;\n } else {\n this._badgeText = '';\n }\n }\n private _badgeText = '';\n\n private _isPill = false;\n /**\n * Indica se il badge è arrotondato o meno.\n */\n @Input()\n get isPill(): boolean { return this._isPill; }\n set isPill(value: boolean) {\n this._isPill = Util.coerceBooleanProperty(value);\n }\n\n private getBadgeColorClassName(): string {\n return `badge-${this._badgeColor}`;\n }\n\n @HostBinding('class')\n get hostClasses(): string {\n return [\n 'badge',\n this.getBadgeColorClassName(),\n this.isPill ? 'badge-pill' : '',\n ].join(' ');\n }\n\n constructor(private el: ElementRef) { }\n\n}\n","import { Directive, Output, EventEmitter, HostBinding, Input} from '@angular/core';\n\n/**\n * Per ottimizzare l’ingombro dei contenuti di una pagina si possono usare degli elementi richiudibili\n * (in gergo definiti collassabili o collapse), che possono essere attivati indipendentemente l’uno dall’altro\n */\n@Directive({\n // tslint:disable-next-line:directive-selector\n selector: '[it-collapse]',\n exportAs: 'it-collapse'\n})\nexport class CollapseDirective {\n\n private _isDisposed = false;\n\n /**\n * La direttiva di collapse che opzionalmente contiene il predicato che ne stabilisce\n * che sarà avvalorato a true quando il collapse è espanso, a false altrimenti\n */\n @Input('it-collapse')\n get itCollapse(): boolean { return this._isShown; }\n set itCollapse(value: boolean) { this._isShown = value != null && `${value}` === 'true'; }\n private _isShown = false;\n\n /**\n * Evento da emettere quando il collapse sta per essere mostrato\n */\n @Output('show')\n get showEvent(): EventEmitter<CollapseDirective> { return this._showEvent; }\n set showEvent(value: EventEmitter<CollapseDirective>) { this._showEvent = value; }\n private _showEvent = new EventEmitter<CollapseDirective>();\n\n /**\n * Evento da emettere quando il collapse è mostrato\n */\n @Output('shown')\n get shownEvent(): EventEmitter<CollapseDirective> { return this._shownEvent; }\n set shownEvent(value: EventEmitter<CollapseDirective>) { this._shownEvent = value; }\n private _shownEvent = new EventEmitter<CollapseDirective>();\n\n /**\n * Evento da emettere quando il collapse sta per essere nascosto\n */\n @Output('hide')\n get hideEvent(): EventEmitter<CollapseDirective> { return this._hideEvent; }\n set hideEvent(value: EventEmitter<CollapseDirective>) { this._hideEvent = value; }\n private _hideEvent = new EventEmitter<CollapseDirective>();\n\n /**\n * Evento da emettere quando il collapse è nascosto\n */\n @Output('hidden')\n get hiddenEvent(): EventEmitter<CollapseDirective> { return this._hiddenEvent; }\n set hiddenEvent(value: EventEmitter<CollapseDirective>) { this._hiddenEvent = value; }\n private _hiddenEvent = new EventEmitter<CollapseDirective>();\n\n @HostBinding('class')\n get cssClass() {\n let cssClass = 'collapse';\n if (this.isShown()) {\n cssClass += ' show';\n }\n return cssClass;\n }\n\n show() {\n this.showEvent.emit(this);\n this._isShown = true;\n this.shownEvent.emit(this);\n }\n\n hide() {\n this.hideEvent.emit(this);\n if (!this._isDisposed) {\n this._isShown = false;\n this.hiddenEvent.emit(this);\n }\n }\n\n toggle() {\n if (!this.isShown()) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n dispose() {\n this._isDisposed = true;\n }\n\n isShown() {\n return this._isShown;\n }\n}\n","import { Component, Input, ViewChild, ElementRef, Output, EventEmitter } from '@angular/core';\nimport { CollapseDirective } from './collapse.directive';\n\nlet identifier = 0;\n\n@Component({\n selector: 'it-collapse-item',\n template: `<div class=\"collapse-header\" [id]=\"headingId\">\n <button #toggleButton data-toggle=\"collapse\" [attr.aria-expanded]=\"collapse.isShown()\" [attr.aria-controls]=\"id\" (click)=\"collapse.toggle()\" [ngClass]=\"{'collapsed' : collapse.isShown()}\">\n {{header}}\n </button>\n</div>\n<div [id]=\"id\" #collapse=\"it-collapse\" it-collapse \n (show)=\"show()\" (hide)=\"hide()\" (shown)=\"shown()\" (hidden)=\"hidden()\" role=\"tabpanel\" [attr.aria-labelledby]=\"headingId\">\n <div class=\"collapse-body\">\n <ng-content></ng-content>\n </div>\n</div>\n`,\n styles: [``]\n})\nexport class CollapseItemComponent {\n @ViewChild(CollapseDirective) readonly directive: CollapseDirective;\n\n id = `collapse-item-${identifier++}`;\n headingId = `${this.id}-heading`;\n\n /**\n * Testo del bottone di apertura/chiusura del collapse item\n */\n @Input()\n get header(): string { return this._header; }\n set header(value: string) { this._header = value; }\n private _header;\n\n /**\n * Evento da emettere quando il collapse sta per essere mostrato\n */\n @Output('show')\n get showEvent(): EventEmitter<CollapseItemComponent> { return this._showEvent; }\n set showEvent(value: EventEmitter<CollapseItemComponent>) { this._showEvent = value; }\n private _showEvent = new EventEmitter<CollapseItemComponent>();\n\n /**\n * Evento da emettere quando il collapse è mostrato\n */\n @Output('shown')\n get shownEvent(): EventEmitter<CollapseItemComponent> { return this._shownEvent; }\n set shownEvent(value: EventEmitter<CollapseItemComponent>) { this._shownEvent = value; }\n private _shownEvent = new EventEmitter<CollapseItemComponent>();\n\n /**\n * Evento da emettere quando il collapse sta per essere nascosto\n */\n @Output('hide')\n get hideEvent(): EventEmitter<CollapseItemComponent> { return this._hideEvent; }\n set hideEvent(value: EventEmitter<CollapseItemComponent>) { this._hideEvent = value; }\n private _hideEvent = new EventEmitter<CollapseItemComponent>();\n\n /**\n * Evento da emettere quando il collapse è nascosto\n */\n @Output('hidden')\n get hiddenEvent(): EventEmitter<CollapseItemComponent> { return this._hiddenEvent; }\n set hiddenEvent(value: EventEmitter<CollapseItemComponent>) { this._hiddenEvent = value; }\n private _hiddenEvent = new EventEmitter<CollapseItemComponent>();\n\n show() {\n this.showEvent.emit(this);\n }\n\n hide() {\n this.hideEvent.emit(this);\n }\n\n shown() {\n this.shownEvent.emit(this);\n }\n\n hidden() {\n this.hiddenEvent.emit(this);\n }\n\n constructor(readonly elementRef: ElementRef) { }\n}\n","import { Component, ContentChildren, forwardRef, QueryList,\n Input, HostListener, SimpleChanges, OnChanges } from '@angular/core';\nimport { CollapseItemComponent } from './collapse-item.component';\nimport { Util } from '../util/util';\n\nlet identifier = 0;\n\n@Component({\n selector: 'it-collapse-group',\n template: `<div [id]=\"id\" class=\"collapse-div\" role=\"tablist\">\n <ng-content></ng-content>\n</div>`,\n styles: [``]\n})\nexport class CollapseGroupComponent implements OnChanges {\n id = `collapse-group-${identifier++}`;\n\n /**\n * Indica se gli item del gruppo sono mutuamente richiudibili (o accordion)\n */\n @Input()\n get accordion(): boolean { return this._accordion; }\n set accordion(value: boolean) { this._accordion = Util.coerceBooleanProperty(value); }\n private _accordion = false;\n\n @ContentChildren(forwardRef(() => CollapseItemComponent), { descendants: true })\n private _items: QueryList<CollapseItemComponent>; // tslint:disable-line\n\n @HostListener('click', ['$event.target'])\n onClick(target) {\n if (this.accordion) {\n const items = this._items.toArray();\n items.forEach(currentItem => {\n const isTargetPartOfItem = (currentItem.elementRef.nativeElement as HTMLElement).contains(target);\n if (!isTargetPartOfItem) {\n if (currentItem.directive.isShown()) {\n currentItem.directive.hide();\n }\n }\n });\n }\n }\n\n ngOnChanges(simpleChanges: SimpleChanges) {\n if (simpleChanges['accordion']) {\n const isAccordion = simpleChanges['accordion'].currentValue;\n if (isAccordion) {\n const items = this._items.toArray();\n items.forEach(currentItem => {\n if (currentItem.directive.isShown()) {\n currentItem.directive.hide();\n }\n });\n }\n }\n }\n}\n","import * as t from 'io-ts';\n\nexport const InputType = t.keyof({\n text: null,\n email: null,\n password: null,\n number: null,\n search: null\n});\n\nconst TEXT = 'text';\nconst EMAIL = 'email';\nconst PASSWORD = 'password';\nconst NUMBER = 'number';\nconst SEARCH = 'search';\n\nexport const INPUT_TYPES = {\n TEXT: TEXT,\n EMAIL: EMAIL,\n PASSWORD: PASSWORD,\n NUMBER: NUMBER,\n SEARCH: SEARCH\n};\n","import {\n Component, Input, ChangeDetectionStrategy, forwardRef,\n AfterContentInit, Output, EventEmitter, ChangeDetectorRef, ViewChild, ElementRef\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { InputType, INPUT_TYPES } from '../models/InputType';\nimport { Util } from '../util/util';\n\nlet identifier = 0;\n\nexport class FormInputChange {\n constructor(\n public source: FormInputComponent,\n public value: any\n ) { }\n}\n\n/**\n * Elementi e stili per la creazione di input accessibili e responsivi.\n */\n@Component({\n selector: 'it-input',\n template: `<div class=\"form-group\">\n <i *ngIf=\"icon\" [class]=\"icon\" [ngClass]=\"{ 'ico-prefix': true }\"></i>\n <input #inputElement\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (change)=\"onChange()\"\n (input)=\"onInput()\"\n [type]=\"type\"\n [id]=\"id\"\n [attr.name]=\"name\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [placeholder]=\"placeholder\"\n [ngClass]=\"{\n 'form-control' : !readonly,\n 'form-control-plaintext' : readonly,\n 'autocomplete' : isAutocompletable()\n }\"\n [attr.aria-labelledby]=\"note ? noteId : undefined\"/>\n <span class=\"btn-eye\" \n *ngIf=\"isPasswordMode\"\n (click)=\"isPasswordVisible = !isPasswordVisible\"\n [ngClass]=\"{\n 'eye-on' : !isPasswordVisible,\n 'eye-off' : isPasswordVisible\n }\">\n </span>\n <ul class=\"autocomplete-wrap\" *ngIf=\"isAutocompletable()\">\n <li *ngFor=\"let entry of getRelatedEntries()\" (click)=\"onEntryClick(entry)\">\n {{entry}}\n </li>\n </ul>\n <label [attr.for]=\"id\" [ngClass]=\"{ 'active' : isLabelActive }\">\n {{label}}\n </label>\n <small [id]=\"noteId()\" class=\"form-text text-muted\" *ngIf=\"note\">\n {{note}}\n </small>\n</div>\n`,\n styles: [`label{pointer-events:none}`],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FormInputComponent),\n multi: true\n }]\n})\nexport class FormInputComponent implements AfterContentInit, ControlValueAccessor {\n @ViewChild('inputElement')\n private _inputElement: ElementRef;\n\n /**\n * Indica l'id dell'elemento HTML\n */\n @Input()\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value;\n }\n private _id = `form-input-${identifier++}`;\n\n /**\n * Indica l'attributo name del componente HTML\n */\n @Input()\n get name(): string {\n return this._name;\n }\n set name(value: string) {\n this._name = value;\n }\n private _name: string;\n\n /**\n * Indica il tipo di campo. Puo' assumere i valori text, email, password e number\n */\n @Input()\n get type(): string {\n return this._type;\n }\n set type(value: string) {\n if (InputType.is(value)) {\n if (value === INPUT_TYPES.NUMBER) {\n if (isNaN(Number(this.value))) {\n this.value = '';\n this.onChange();\n }\n }\n this._type = value;\n } else {\n this._type = INPUT_TYPES.TEXT;\n }\n\n this._isPasswordMode = this._type === INPUT_TYPES.PASSWORD;\n this._isPasswordVisible = false;\n this._showAutocompletion = false;\n }\n private _type = INPUT_TYPES.TEXT;\n\n /**\n * Indica il valore della label da visualizzare\n */\n @Input()\n get label(): string { return this._label; }\n set label(value: string) { this._label = value; }\n private _label: string;\n\n /**\n * Indica il testo di aiuto sotto la input\n */\n @Input()\n get note(): string { return this._note; }\n set note(value: string) { this._note = value; }\n private _note: string;\n\n /**\n * Indica il testo presente nel campo vuoto. Nel caso sia già presente la label, il placeholder non verrà mostrato\n */\n @Input()\n get placeholder(): string {\n if (this.label) {\n if (this.label.length > 0) {\n return '';\n }\n }\n return this._placeholder || '';\n }\n set placeholder(value: string) { this._placeholder = value; }\n private _placeholder: string;\n\n /**\n * Indica l'icona da visualizzare a sinistra del campo di input\n */\n @Input()\n get icon(): string { return this._icon; }\n set icon(value: string) { this._icon = value; }\n private _icon: string;\n\n /**\n * Opzionale.\n * Indica se il campo in questione è disabilitato.\n * Accetta una espressione booleana o può essere usato come attributo senza valore\n */\n @Input()\n get disabled(): boolean { return this._disabled; }\n set disabled(value: boolean) { this._disabled = Util.coerceBooleanProperty(value); }\n private _disabled = false;\n\n /**\n * Opzionale.\n * Indica se il campo in questione è di sola lettura.\n * Accetta una espressione booleana o può essere usato come attributo senza valore\n */\n @Input()\n get readonly(): boolean { return this._readonly; }\n set readonly(value: boolean) { this._readonly = Util.coerceBooleanProperty(value); }\n private _readonly = false;\n\n get value(): any { return this._inputElement.nativeElement.value; }\n set value(value: any) { this._inputElement.nativeElement.value = value; }\n\n /**\n * Opzionale.\n * Disponibile solo se il type è search.\n * Indica la lista di elementi ricercabili su cui basare il sistema di autocompletamento della input\n */\n @Input()\n get autoCompleteData(): Array<string> { return this._autoCompleteData; }\n set autoCompleteData(value: Array<string>) { this._autoCompleteData = value; }\n private _autoCompleteData: Array<string>;\n\n /**\n * Evento emesso quando il valore dell'input cambia.\n * Gli eventi di change sono emessi soltanto quando il valore cambia a causa dell'interazione dell'utente\n * con il campo d'input.\n */\n @Output()\n readonly change: EventEmitter<FormInputChange> = new EventEmitter<FormInputChange>();\n\n get isLabelActive() {\n return this._isLabelActive;\n }\n set isLabelActive(value: boolean) {\n this._isLabelActive = Util.coerceBooleanProperty(value);\n }\n private _isLabelActive = false;\n\n\n get isPasswordMode() {\n return this._isPasswordMode;\n }\n set isPasswordMode(value: boolean) {\n this._isPasswordMode = Util.coerceBooleanProperty(value);\n }\n private _isPasswordMode = false;\n\n get isPasswordVisible() {\n return this._isPasswordVisible;\n }\n set isPasswordVisible(value: boolean) {\n this._isPasswordVisible = Util.coerceBooleanProperty(value);\n this._type = this._isPasswordVisible ? INPUT_TYPES.TEXT : INPUT_TYPES.PASSWORD;\n }\n private _isPasswordVisible = false;\n\n private _showAutocompletion = false;\n private _isInitialized = false;\n private _controlValueAccessorChangeFn: (value: any) => void = () => { };\n private _onTouched: () => any = () => { };\n\n private _emitChangeEvent(): void {\n if (this._isInitialized) {\n this.change.emit(new FormInputChange(this, this.value));\n }\n }\n\n writeValue(value: any): void {\n this.value = value;\n if (this.value) {\n this._isLabelActive = true;\n }\n\n this.onChange();\n if (this._isInitialized) {\n this._changeDetector.detectChanges();\n }\n }\n\n registerOnChange(fn: (value: any) => void): void {\n this._controlValueAccessorChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n constructor(private _changeDetector: ChangeDetectorRef) { }\n\n ngAfterContentInit(): void {\n this._isInitialized = true;\n }\n\n onChange() {\n this._emitChangeEvent();\n this._controlValueAccessorChangeFn(this.value);\n }\n\n onInput() {\n if (this._type === INPUT_TYPES.SEARCH && this.isAutocompletable() && !this._showAutocompletion) {\n this._showAutocompletion = true;\n }\n\n this._emitChangeEvent();\n this._controlValueAccessorChangeFn(this.value);\n }\n\n onFocus() {\n this._isLabelActive = true;\n }\n\n onBlur() {\n const inputValue: string = this.value;\n if (inputValue.length === 0) {\n this._isLabelActive = false;\n if (this.type === INPUT_TYPES.NUMBER) {\n this.value = '';\n }\n }\n }\n\n noteId() {\n return `${this.id}-note`;\n }\n\n getRelatedEntries() {\n if (this.value && this._showAutocompletion) {\n const lowercaseValue = this.value.toLowerCase();\n const lowercaseData = this._autoCompleteData.map(string => {\n return { original : string, lowercase : string.toLowerCase() };\n });\n\n const relatedEntries = [];\n lowercaseData.forEach(lowercaseEntry => {\n if ((lowercaseEntry.lowercase).includes(lowercaseValue)) {\n relatedEntries.push(lowercaseEntry.original);\n }\n });\n\n return relatedEntries;\n } else {\n return [];\n }\n }\n\n isAutocompletable() {\n if (this._autoCompleteData && this._type === INPUT_TYPES.SEARCH) {\n return this._autoCompleteData.length > 0;\n } else {\n return false;\n }\n }\n\n onEntryClick(entry) {\n this.value = entry;\n this._showAutocompletion = false;\n this.onChange();\n }\n\n}\n","import {\n Component, Input, Output, EventEmitter, ViewChild, ElementRef, HostListener, ChangeDetectionStrategy\n} from '@angular/core';\nimport { Util } from '../util/util';\nimport { ThemeColor } from '../models/ThemeColor';\n\nlet identifier = 0;\n\nconst DEFAULT_COLOR = 'dropdown';\nconst PLACEMENT_PROPERTY = 'x-placement';\nconst PLACEMENT_VALUE = 'bottom-start';\n\n/**\n * Componente usata per attivare o disattivare overlay contestuali per visualizzare elenchi di link e altro ancora con questi menù a tendina\n */\n@Component({\n selector: 'it-dropdown',\n template: `<div class=\"dropdown\" [class.show]=\"isOpen\" [id]=\"id\">\n <button #dropdownButton [class]=\"dropdownButtonClass\" \n type=\"button\" id=\"dropdownMenuButton\"\n aria-haspopup=\"true\" [attr.aria-expanded]=\"isOpen\">\n {{label}}\n </button>\n <div #dropdownMenu class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuButton\"\n [class.dark]=\"dark\" [class.full-width]=\"fullWidth\" [class.show]=\"isOpen\">\n <div class=\"link-list-wrapper\">\n <ul class=\"link-list\">\n <ng-content></ng-content>\n </ul>\n </div>\n </div>\n</div>\n`,\n styles: [``],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DropdownComponent {\n @ViewChild('dropdownMenu')\n private _dropdownMenu: ElementRef;\n\n @ViewChild('dropdownButton')\n private _dropdownButton: ElementRef;\n\n id = `dropdown-${identifier++}`;\n\n get isOpen(): boolean { return this._isOpen; }\n private _isOpen = false;\n\n /**\n * Se presente indica che il dropdown utilizza il tema di colorazione scura.\n * Accetta una espressione booleana o può essere usato come attributo senza valore\n */\n @Input()\n get dark(): boolean { return this._dark; }\n set dark(value: boolean) { this._dark = Util.coerceBooleanProperty(value); }\n private _dark = false;\n\n /**\n * Se presente indica che le voci del dropdown si sviluppano orizzontalmente.\n * Accetta una espressione booleana o può essere usato come attributo senza valore\n */\n @Input()\n get fullWidth(): boolean { return this._fullWidth; }\n set fullWidth(value: boolean) { this._fullWidth = Util.coerceBooleanProperty(value); }\n private _fullWidth = false;\n\n /**\n * Il colore del pulsante che attiva il dropdown.\n * Può assumere i valori primary, secondary, danger, warning, info, warning, success, light e dark\n */\n @Input()\n get color(): any { return this._color; }\n set color(value: any) {\n if (ThemeColor.is(value)) {\n this._color = value;\n } else {\n this._color = DEFAULT_COLOR;\n }\n }\n private _color = DEFAULT_COLOR;\n\n /**\n * Il testo presente sul pulsante che attiva il dropdown\n */\n @Input()\n get label(): string { return this._label; }\n set label(value: string) { this._label = value; }\n private _label = '';\n\n /**\n * Evento che viene lanciato ogni volta che il dropdown viene aperto\n */\n @Output()\n get onOpen(): EventEmitter<DropdownComponent> { return this._onOpen; }\n set onOpen(value: EventEmitter<DropdownComponent>) { this._onOpen = value; }\n private _onOpen = new EventEmitter<DropdownComponent>();\n\n /**\n * Evento che viene lanciato ogni volta che il dropdown viene chiuso\n */\n @Output()\n get onClose(): EventEmitter<DropdownComponent> { return this._onClose; }\n set onClose(value: EventEmitter<DropdownComponent>) { this._onClose = value; }\n private _onClose = new EventEmitter<DropdownComponent>();\n\n /**\n * Evento che viene lanciato ogni volta che il dropdown viene aperto oppure chiuso\n */\n @Output()\n get onToggle(): EventEmitter<DropdownComponent> { return this._onToggle; }\n set onToggle(value: EventEmitter<DropdownComponent>) { this._onToggle = value; }\n private _onToggle = new EventEmitter<DropdownComponent>();\n\n @HostListener('document:click', ['$event.target'])\n onClick(target) {\n if (target === this._dropdownButton.nativeElement) {\n this._toggle();\n } else if (this.isOpen) {\n this._close();\n }\n }\n\n @HostListener('document:focusin', ['$event.target'])\n onFocus(target) {\n const isPartOfDropdown = (this._eleRef.nativeElement as HTMLElement).contains(target);\n if (!isPartOfDropdown && this.isOpen) {\n this._close();\n }\n }\n\n get dropdownButtonClass() {\n return `btn btn-${this.color} dropdown-toggle`;\n }\n\n constructor(private _eleRef: ElementRef) {\n\n }\n\n private _toggle() {\n if (this._isOpen) {\n this._close();\n } else {\n this._open();\n }\n this.onToggle.emit(this);\n }\n\n private _open() {\n if (!this._isOpen) {\n this._isOpen = true;\n this._dropdownMenu.nativeElement.setAttribute(PLACEMENT_PROPERTY, PLACEMENT_VALUE);\n this.onOpen.emit(this);\n }\n }\n\n private _close() {\n if (this._isOpen) {\n this._isOpen = false;\n this._dropdownMenu.nativeElement.removeAttribute(PLACEMENT_PROPERTY);\n this.onClose.emit(this);\n }\n }\n\n}\n","import * as t from 'io-ts';\n\nexport const IconPosition = t.keyof({\n right: null,\n left: null\n});\n\nconst LEFT = 'left';\nconst RIGHT = 'right';\n\nexport const ICON_POSITIONS = {\n LEFT: LEFT,\n RIGHT: RIGHT\n};\n","import { Component, Input} from '@angular/core';\nimport { Util } from '../util/util';\nimport { IconPosition, ICON_POSITIONS } from '../models/IconPosition';\n\nlet identifier = 0;\n\n/**\n * Componente usata per visualizzare una voce di menù all'interno di una dropdown\n */\n@Component({\n selector: 'it-dropdown-item',\n template: `<li [id]=\"id\">\n <a [attr.href]=\"link\"\n [attr.tabindex]=\"this.disabled ? -1 : 0\"\n [class]=\"dropdownItemClass\"\n [ngClass]=\"{\n 'large' : large, \n 'active' : active,\n 'disabled' : disabled,\n 'disabled-item-link' : disabled\n }\">\n <i [class]=\"iconClass\" aria-hidden=\"true\" *ngIf=\"icon && iconPosition === 'left'\"></i>\n <span>\n <ng-content></ng-content>\n </span>\n <i [class]=\"iconClass\" aria-hidden=\"true\" *ngIf=\"icon && iconPosition === 'right'\"></i>\n </a>\n</li>`,\n styles: [`.disabled-item-link{pointer-events:none}`]\n})\nexport class DropdownItemComponent {\n id = `dropdown-item-${identifier++}`;\n\n /**\n * Il link alla pagina verso cui andare al click sull'elemento del dropdown\n */\n @Input()\n get link(): string { return !this.disabled ? this._link : ''; }\n set link(value: string) { this._link = value; }\n private _link = '';\n\n /**\n * Se presente indica che l'elemento viene renderizzato come elemento attivo.\n * Accetta una espressione booleana o può essere usato come attributo senza valore\n */\n @Input()\n get active(): boolean { return this._active; }\n set active(value: boolean) { this._active = Util.coerceBooleanProperty(value); }\n private _active = false;\n\n /**\n * Se presente indica che l'elemento è disabilitato.\n * Accetta una espressione booleana o può essere usato come attributo senza valore\n */\n @Input()\n get disabled(): boolean { return this._disabled; }\n set disabled(value: boolean) {\n this._disabled = Util.coerceBooleanProperty(value);\n }\n private _disabled = false;\n\n /**\n * Se presente indica che il testo dell'elemento viene renderizzato più grande.\n * Accetta una espressione booleana o può essere usato come attributo senza valore\n */\n @Input()\n get large(): boolean { return this._large; }\n set large(value: boolean) { this._large = Util.coerceBooleanProperty(value); }\n private _large = false;\n\n /**\n * La classe dell'icona da usare prima o dopo del testo dell'elemento del dropdown\n */\n @Input()\n get icon(): string { return this._icon; }\n set icon(value: string) { this._icon = value; }\n private _icon = undefined;\n\n /**\n * La posizione dell'icona rispetto al testo dell'elemento del dropdown.\n * Può assumere valori right o left.\n */\n @Input()\n get iconPosition(): any { return this._iconPosition; }\n set iconPosition(value: any) {\n if (IconPosition.is(value)) {\n this._iconPosition = value;\n } else {\n this._iconPosition = ICON_POSITIONS.RIGHT;\n }\n }\n private _iconPosition = ICON_POSITIONS.RIGHT;\n\n get dropdownItemClass() {\n return `list-item ${this.iconPosition}-icon`;\n }\n\n get iconClass() {\n return `${this.icon} ${this.iconPosition}`;\n }\n\n}\n","import { Component } from '@angular/core';\n\nlet identifier = 0;\n\n@Component({\n selector: 'it-dropdown-header',\n template: `<li [id]=\"id\">\n <h3>\n <ng-content></ng-content>\n </h3>\n</li>`,\n styles: [``]\n})\nexport class DropdownHeaderComponent {\n id = `dropdown-header-${identifier++}`;\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'it-dropdown-divider',\n template: `<li>\n <span class=\"divider\"></span>\n</li>`,\n styles: [``]\n})\nexport class DropdownDividerComponent {\n\n}\n","import { Component, OnInit, Input, ElementRef, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\n\nlet identifier = 0;\n\n@Component({\n selector: 'it-breadcrumb-item',\n template: `<li [class]=\"breadcrumbClass\" [id]=\"id\">\n <i [class]=\"icon\" *ngIf=\"icon\"></i>\n <a [href]=\"link\">\n <ng-content></ng-content>\n </a> <span class=\"separator\" *ngIf=\"!isLast\">{{separator}}</span>\n</li>\n`,\n styles: [``],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BreadcrumbItemComponent {\n id = `it-breadcrumb-item-${identifier++}`;\n\n constructor(private _cdRef: ChangeDetectorRef, private _elemRef: ElementRef) { }\n\n /**\n * Il link alla pagina verso cui andare al click di questo elemento del breadcrumb\n */\n @Input()\n get link(): string { return this._link; }\n set link(value: string) { this._link = value; }\n private _link: string;\n\n /**\n * La classe dell'icona da usare prima del testo dell'elemento del breadcrumb\n */\n @Input()\n get icon(): string { return this._icon; }\n set icon(value: string) { this._icon = value; }\n private _icon: string;\n\n get separator(): string { return this._separator; }\n set separator(value: string) { this._separator = value; }\n private _separator: string;\n\n get isLast(): boolean { return this._isLast; }\n set isLast(value: boolean) {\n this._isLast = value;\n const breadcrumbItem = this._elemRef.nativeElement.querySelector('.breadcrumb-item');\n if (this._isLast) {\n breadcrumbItem.setAttribute('aria-current', 'page');\n } else {\n if (breadcrumbItem.hasAttribute('aria-current')) {\n breadcrumbItem.removeAttribute('aria-current');\n }\n }\n this._cdRef.detectChanges();\n }\n private _isLast = false;\n\n get breadcrumbClass() {\n return 'breadcrumb-item' + (this.isLast ? ' active' : '');\n }\n\n}\n","import {\n Component, Input, ContentChildren, QueryList, forwardRef,\n AfterContentInit, OnChanges, OnDestroy, SimpleChanges, ChangeDetectionStrategy\n} from '@angular/core';\nimport { BreadcrumbItemComponent } from './breadcrumb-item.component';\nimport { Util } from '../util/util';\nimport { Subscription } from 'rxjs';\n\nconst DEFAULT_SEPARATOR = '/';\nlet identifier = 0;\n\n/**\n * Una componente che indica la posizione della pagina corrente all’interno di una gerarchia di navigazione\n */\n@Component({\n selector: 'it-breadcrumb',\n template: `<nav class=\"breadcrumb-container\" aria-label=\"breadcrumb\" [id]=\"id\">\n <ol [ngClass]=\"breadcrumbClass\">\n <ng-content></ng-content>\n </ol>\n</nav>`,\n styles: [``],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BreadcrumbComponent implements AfterContentInit, OnChanges, OnDestroy {\n id = `it-breadcrumb-${identifier++}`;\n\n /**\n * Indica che il breadcrumb utilizza il tema di colorazione scura.\n * Accetta una espressione booleana o può essere usato come attributo senza valore\n */\n @Input()\n get dark(): boolean { return this._dark; }\n set dark(value: boolean) { this._dark = Util.coerceBooleanProperty(value); }\n private _dark = false;\n\n /**\n * Il carattere che verrà usato come separatore tra gli elementi del breadcrumb\n */\n @Input()\n get separator(): string { return this._separator; }\n set separator(value: string) { this._separator = value ? value : DEFAULT_SEPARATOR; }\n private _separator = DEFAULT_SEPARATOR;\n\n @ContentChildren(forwardRef(() => BreadcrumbItemComponent), { descendants: true })\n private _items: QueryList<BreadcrumbItemComponent>;\n\n get breadcrumbClass() {\n return 'breadcrumb' + (this._dark ? ' dark' : '');\n }\n\n private _subscription = Subscription.EMPTY;\n\n ngAfterContentInit() {\n this._reloadBreadcrumbs(this._items);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['separator']) {\n if (!changes['separator'].firstChange) {\n this._reloadBreadcrumbs(this._items);\n }\n }\n }\n\n ngOnDestroy() {\n if (this._subscription) {\n this._subscription.unsubscribe();\n }\n }\n\n private _reloadBreadcrumbs(currentItems: QueryList<BreadcrumbItemComponent>) {\n currentItems.forEach(item => {\n item.separator = this.separator;\n item.isLast = (item === currentItems.last);\n });\n\n this._subscribeToChanges();\n }\n\n\n private _subscribeToChanges() {\n if (this._subscription) {\n this._subscription.unsubscribe();\n }\n\n this._subscription = this._items.changes.subscribe(items => {\n this._reloadBreadcrumbs(items);\n });\n }\n\n}\n","import {\n Component,\n OnDestroy,\n OnChanges,\n Input,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n SimpleChanges,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { Util } from '../util/util';\n\n/**\n * Un componente tab con design bootstrap italia. Indica la singola tab di un insieme di tab.\n * Utilizzabile con il tag `<it-tab>` all'interno di un tag `<it-tab-group>`.\n */\n@Component({\n selector: 'it-tab',\n exportAs: 'itTab',\n template: `<ng-template><ng-content></ng-content></ng-template>\n`,\n styles: [``],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class TabComponent implements OnChanges, OnDestroy {\n\n /** Testo della tab. */\n @Input() label: string = ''; // tslint:disable-line\n\n /** Aria label del tab. */\n @Input('aria-label') ariaLabel: string; // tslint:disable-line\n\n /**\n * Riferimento all'elemento dal quale il tab è etichettato.\n * Viene resettato se `aria-label` è impostato.\n */\n @Input('aria-labelledby') ariaLabelledby: string; // tslint:disable-line\n\n /** Se la tab è disabilitata. */\n @Input()\n get disabled(): boolean { return this._disabled; }\n set disabled(value) {\n this._disabled = Util.coerceBooleanProperty(value);\n }\n private _disabled = false;\n\n /**\n * La stringa rappresentante l'icona da utilizzare nel titolo della tab. Es. `it-file`\n */\n @Input() icon: string | null = null;\n\n /** Emette un evento ogni volta che la label cambia. */\n readonly _labelChange = new Subject<void>();\n\n /** Emette un evento ogni volta che l'attributo disabled cambia */\n readonly _disableChange = new Subject<void>();\n\n /**\n * La posizione relativa della tab dove 0 rappresenta il centro, i negativi sono a sinistra\n * e i positivi sono a destra.\n */\n position: number | null = null;\n\n /**\n * Se il tab è attivo.\n */\n isActive = false;\n\n @ViewChild(TemplateRef) _implicitContent: TemplateRef<any>;\n\n ngOnDestroy(): void {\n this._disableChange.complete();\n this._labelChange.complete();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.hasOwnProperty('label')\n || changes.hasOwnProperty('ariaLabel')\n || changes.hasOwnProperty('ariaLabelledby')) {\n this._labelChange.next();\n }\n\n if (changes.hasOwnProperty('disabled')) {\n this._disableChange.next();\n }\n }\n\n}\n","import {\n Component,\n AfterContentInit,\n ContentChildren,\n QueryList,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n Input,\n Output,\n EventEmitter,\n ChangeDetectorRef,\n AfterContentChecked,\n OnDestroy\n} from '@angular/core';\nimport { Subscription, merge } from 'rxjs';\nimport { Util } from '../util/util';\nimport { TabComponent } from './tab.component';\n\n/** Usato per generare ID univoci per ogni componente tab */\nlet nextId = 0;\n\n/** Un change event emesso ai cambi di selezione. */\nexport class TabChangeEvent {\n /** Indice del tab selezionato. */\n index: number;\n /** Riferimento al tab selezionato. */\n tab: TabComponent;\n}\n\n /**\n * Un componente tab-group con design bootstrap italia. Utilizzabile con il tag `<it-tab-group>`.\n *\n * Supporta al suo interno tab di base `<it-tab>` con una label e un contenuto.\n */\n@Component({\n selector: 'it-tab-group',\n exportAs: 'itTabGroup',\n template: `<ul class=\"nav\" [ngClass]=\"{'nav-dark': dark, 'nav-tabs': !pill, 'nav-pills mb-3': pill}\" role=\"tablist\">\n\n <li class=\"nav-item\" *ngFor=\"let tab of _tabs; let i = index\">\n <a\n href=\"#\"\n role=\"tab\"\n [attr.aria-controls]=\"_getTabContentId(i)\"\n [attr.aria-selected]=\"selectedIndex == i\"\n [attr.aria-label]=\"tab.ariaLabel || null\"\n [attr.aria-labelledby]=\"(!tab.ariaLabel && tab.ariaLabelledby) ? tab.ariaLabelledby : null\"\n [ngClass]=\"{ 'nav-link': true, 'active': selectedIndex == i, 'disabled': tab.disabled }\"\n [id]=\"_getTabLabelId(i)\"\n (click)=\"_handleClick($event, i)\">\n <i *ngIf=\"tab.icon\" class=\"it-ico-lg d-block text-center\" [ngClass]=\"tab.icon\"></i>\n {{tab.label}}\n </a>\n </li>\n</ul>\n<div class=\"tab-content\">\n <ng-container *ngFor=\"let tab of _tabs; let i = index\">\n <div\n [ngClass]=\"{ 'tab-pane p-3': true, 'show active': selectedIndex == i }\"\n [id]=\"_getTabContentId(i)\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"_getTabLabelId(i)\">\n <ng-container *ngTemplateOutlet=\"tab._implicitContent\"></ng-container>\n </div>\n </ng-container>\n</div>\n`,\n styles: [``],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabGroupComponent implements AfterContentInit, AfterContentChecked, OnDestroy {\n\n @ContentChildren(TabComponent) _tabs: QueryList<TabComponent>;\n\n /** L'indice del tab che dovrebbe essere selezionato dopo che il contenuto e' stato controllato */\n private _indexToSelect: number | null = 0;\n\n /** Subscription all'aggiunta e rimozione di tab. */\n private _tabsSubscription = Subscription.EMPTY;\n\n /** Subscription ai cambiamenti alle label dei tab. */\n private _tabLabelSubscription = Subscription.EMPTY;\n\n /** Se le tab sono formattate come pill. */\n @Input()\n get pill(): boolean { return this._isPill; }\n set pill(value) {\n this._isPill = Util.coerceBooleanProperty(value);\n }\n private _isPill = false;\n\n\n /** L'indice della tab attiva. */\n @Input()\n get selectedIndex(): number | null { return this._selectedIndex; }\n set selectedIndex(value: number | null) {\n this._indexToSelect = Util.coerceNumberProperty(value, null);\n }\n private _selectedIndex: number | null = null;\n\n /**\n * Se il tab-group ha un tema scuro\n */\n @Input()\n get dark(): boolean { return this._dark; }\n set dark(value) {\n this._dark = Util.coerceBooleanProperty(value);\n }\n private _dark = false;\n\n /** abilita il supporto al data-binding bidirezionale `[(selectedIndex)]` */\n @Output() readonly selectedIndexChange: EventEmitter<number> = new EventEmitter<number>();\n\n /** emesso quando la selezione del tab cambia. */\n @Output() readonly selectedTabChange: EventEmitter<TabChangeEvent> =\n new EventEmitter<TabChangeEvent>(true);\n\n private _groupId: number;\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) {\n this._groupId = nextId++;\n }\n\n /**\n * Dopo che il contenuto è controllato, il componente conosce i tab che sono stati definiti\n * e qual è l'indice del tab selezionato.\n */\n ngAfterContentChecked(): void {\n this.changeTab(this._indexToSelect);\n }\n\n changeTab(newIndex: number): void {\n\n // Non fissare `indexToSelect` immediatamente nel setter perchè può accadere che\n // il numero di tab cambi prima che avvenga la change detection.\n const indexToSelect = this._indexToSelect = this._clampTabIndex(newIndex);\n\n // Se il nuovo tab è disabilitato, non fare niente\n if (this._tabs && this._tabs.length > 0 && this._tabs.toArray()[indexToSelect].disabled) {\n return;\n }\n\n if (this._selectedIndex !== indexToSelect && this._selectedIndex != null) {\n const tabChangeEvent = this._createChangeEvent(indexToSelect);\n this.selectedTabChange.emit(tabChangeEvent);\n // Emetto questo valore dopo che è partita la change detection\n // dal momento che il contenuto controllato potrebbe contenere questa variabile\n Promise.resolve().then(() => this.selectedIndexChange.emit(indexToSelect));\n }\n\n // Setta la posizione per ogni tab.\n this._tabs.forEach((tab: TabComponent, index: number) => {\n tab.position = index - indexToSelect;\n tab.isActive = index === indexToSelect;\n });\n\n if (this._selectedIndex !== indexToSelect) {\n this._selectedIndex = indexToSelect;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n ngAfterContentInit(): void {\n this._subscribeToTabLabels();\n\n // Sottoscrivi al cambiamento nel numero di tab, così da\n // poter ri-renderizzare il contenuto quando nuove tab vengono aggiunte o rimosse.\n this._tabsSubscription = this._tabs.changes.subscribe(() => {\n const indexToSelect = this._clampTabIndex(this._indexToSelect);\n\n // Mantieni il tab selezionato precedentemente se un nuovo tab è aggiunto o rimosso e non ci sono\n // cambiamenti espliciti che selezionino un tab differente.\n if (indexToSelect === this._selectedIndex) {\n const tabs = this._tabs.toArray();\n\n for (let i = 0; i < tabs.length; i++) {\n if (tabs[i].isActive) {\n // Assegna `_indexToSelect` e `_selectedIndex` in modo da non emettere un change event\n // per evitare al consumer loop infiniti in alcuni casi limite come ad esempio\n // se si aggiunge un tab all'interno dell'evento `selectedIndexChange`.\n this._indexToSelect = this._selectedIndex = i;\n break;\n }\n }\n }\n\n this._subscribeToTabLabels();\n this._changeDetectorRef.markForCheck();\n });\n }\n\n ngOnDestroy(): void {\n this._tabsSubscription.unsubscribe();\n this._tabLabelSubscription.unsubscribe();\n }\n\n private _createChangeEvent(index: number): TabChangeEvent {\n const event = new TabChangeEvent;\n event.index = index;\n if (this._tabs && this._tabs.length) {\n event.tab = this._tabs.toArray()[index];\n }\n return event;\n }\n\n /**\n * Sottoscrivi a cambiamenti nelle label dei tab. Necessario perchè l'input per la label è sul TabComponent\n * mentre il data binding è all'interno di TabGroupComponent. Per fare in modo che il binding sia aggiornato\n * bisogna sottoscriversi ai cambiamenti e azionare la change detection in maniera manuale.\n */\n private _subscribeToTabLabels() {\n if (this._tabLabelSubscription) {\n this._tabLabelSubscription.unsubscribe();\n }\n\n this._tabLabelSubscription = merge(\n ...this._tabs.map(tab => tab._disableChange),\n ...this._tabs.map(tab => tab._labelChange)).subscribe(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /** fissa l'indice tra 0 e la dimensione dei tab. */\n private _clampTabIndex(index: number | null): number {\n return Math.min(this._tabs.length - 1, Math.max(index || 0, 0));\n }\n\n /** ritorna un id univoco per ogni label di tab */\n _getTabLabelId(i: number): string {\n return `it-tab-label-${this._groupId}-${i}`;\n }\n\n /** ritorna un id univoco per ogni elemento di contenuto del tab */\n _getTabContentId(i: number): string {\n return `it-tab-content-${this._groupId}-${i}`;\n }\n\n /** restituisce il tabIndex del tab. */\n _getTabIndex(tab: TabComponent, idx: number): number | null {\n if (tab.disabled) {\n return null;\n }\n return this.selectedIndex === idx ? 0 : -1;\n }\n\n _handleClick($event: Event, index: number): void {\n $event.preventDefault();\n this.changeTab(index);\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { CheckboxComponent } from './checkbox/checkbox.component';\nimport { PopoverDirective } from './popover/popover.directive';\nimport { PopoverComponent } from './popover/popover.component';\nimport { ProgressBarComponent } from './progress-bar/progress-bar.component';\nimport { RadioButtonComponent, RadioGroupDirective } from './radio/radio.component';\nimport { ToggleComponent } from './toggle/toggle.component';\nimport { TooltipDirective } from './tooltip/tooltip.directive';\nimport { TooltipComponent } from './tooltip/tooltip.component';\nimport { ButtonComponent } from './button/button.component';\nimport { BadgeDirective } from './badge/badge.directive';\nimport { CollapseDirective } from './collapse/collapse.directive';\nimport { CollapseItemComponent } from './collapse/collapse-item.component';\nimport { CollapseGroupComponent } from './collapse/collapse-group.component';\nimport { FormInputComponent } from './form-input/form-input.component';\nimport { DropdownComponent } from './dropdown/dropdown.component';\nimport { DropdownItemComponent } from './dropdown/dropdown-item.component';\nimport { DropdownHeaderComponent } from './dropdown/dropdown-header.component';\nimport { DropdownDividerComponent } from './dropdown/dropdown-divider.component';\nimport { BreadcrumbComponent } from './breadcrumb/breadcrumb.component';\nimport { BreadcrumbItemComponent } from './breadcrumb/breadcrumb-item.component';\nimport { TabGroupComponent } from './tabs/tab-group.component';\nimport { TabComponent } from './tabs/tab.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule\n ],\n declarations: [\n CheckboxComponent,\n ToggleComponent,\n RadioGroupDirective,\n RadioButtonComponent,\n BadgeDirective,\n TabGroupComponent,\n TabComponent,\n ProgressBarComponent,\n ButtonComponent,\n TooltipDirective,\n TooltipComponent,\n CollapseDirective,\n CollapseItemComponent,\n CollapseGroupComponent,\n FormInputComponent,\n PopoverDirective,\n PopoverComponent,\n DropdownComponent,\n DropdownItemComponent,\n DropdownHeaderComponent,\n DropdownDividerComponent,\n BreadcrumbComponent,\n BreadcrumbItemComponent\n ],\n exports: [\n CheckboxComponent,\n ToggleComponent,\n RadioGroupDirective,\n RadioButtonComponent,\n BadgeDirective,\n TabGroupComponent,\n TabComponent,\n ProgressBarComponent,\n ButtonComponent,\n TooltipDirective,\n CollapseDirective,\n CollapseItemComponent,\n CollapseGroupComponent,\n FormInputComponent,\n PopoverDirective,\n DropdownComponent,\n DropdownItemComponent,\n DropdownHeaderComponent,\n DropdownDividerComponent,\n BreadcrumbComponent,\n BreadcrumbItemComponent\n ],\n entryComponents: [TooltipComponent, PopoverComponent]\n})\nexport class DesignAngularKitModule { }\n"],"names":["t.keyof","tslib_1.__values","identifier","Trigger","DEFAULT_ALIASES","noopFn","parseTriggers","Positioning","positionService","toItemIndexes","ContentRef","PopupService","positionElements","listenToTriggers"],"mappings":"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"}