design-angular-kit 0.13.0 → 1.0.0-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +34 -20
  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
package/README.md CHANGED
@@ -1,19 +1,21 @@
1
- [![Join the #design channel](https://img.shields.io/badge/Slack%20channel-%23design-blue.svg)](https://developersitalia.slack.com/messages/C7VPAUVB3/)
2
- [![CircleCI](https://img.shields.io/circleci/project/github/italia/design-angular-kit/master.svg)](https://circleci.com/gh/italia/design-angular-kit)
3
- [![Code Climate](https://img.shields.io/codeclimate/maintainability/italia/design-angular-kit.svg)](https://codeclimate.com/github/italia/design-angular-kit/maintainability)
4
1
  [![NPM](https://img.shields.io/npm/v/design-angular-kit.svg)](https://www.npmjs.com/package/design-angular-kit)
5
- [![License](https://img.shields.io/github/license/italia/design-angular-kit.svg)](https://github.com/italia/design-angular-kit/blob/master/LICENSE)
2
+ [![Build](https://github.com/italia/design-angular-kit/actions/workflows/ci.yml/badge.svg)](https://github.com/italia/design-angular-kit/actions)
3
+ [![codecov](https://codecov.io/gh/italia/design-angular-kit/branch/main/graph/badge.svg?token=0Ud6YSFi0r)](https://codecov.io/gh/italia/design-angular-kit)
4
+ [![License](https://img.shields.io/github/license/italia/design-angular-kit.svg)](https://github.com/italia/design-angular-kit/blob/main/LICENSE)
5
+ [![GitHub issues](https://img.shields.io/github/issues/italia/design-angular-kit.svg)](https://github.com/italia/design-angular-kit/issues)
6
+ [![Join the #design channel](https://img.shields.io/badge/Slack%20channel-%23design-blue.svg)](https://developersitalia.slack.com/messages/C7VPAUVB3/)
7
+ [![Get invited](https://slack.developers.italia.it/badge.svg)](https://slack.developers.italia.it/)
6
8
 
7
9
  # Design Angular Kit
8
10
 
9
11
  Design Angular Kit è un toolkit basato su Bootstrap Italia per la creazione di applicazioni web sviluppate con Angular.
10
12
 
11
- _Attenzione: questo codice è ancora in fase di sviluppo e non è pronto per essere utilizzato!_
13
+ _⚠️ Attenzione: questo codice è ancora in fase di sviluppo e non è pronto per essere utilizzato! Se si necessita della vecchia versione il codice e la sua documentazione possono essere reperiti [qua](https://github.com/italia/design-angular-kit/tree/0.x)._
12
14
 
13
15
  #### Link veloci
14
- [Documentazione, demo e guide](https://italia.github.io/design-angular-kit/) |
15
- [Contributi](https://github.com/italia/design-angular-kit/blob/master/CONTRIBUTING.md) |
16
- [Template StackBlitz](https://stackblitz.com/edit/design-angular-kit-issue)
16
+ [Preview di Vercel (aggiornata ad ogni commit)](https://design-angular-kit.vercel.app/) |
17
+ [Discussione sulla nuova release](https://github.com/italia/design-angular-kit/discussions/127) |
18
+ [Contribuire](https://github.com/italia/design-angular-kit/blob/main/CONTRIBUTING.md)
17
19
 
18
20
  ## Come iniziare
19
21
 
@@ -22,23 +24,59 @@ Design Angular Kit è disponibile su NPM, se hai una applicazione esistente eseg
22
24
  npm install design-angular-kit --save
23
25
  ```
24
26
 
25
- #### Integrazione con Angular CLI
26
- Configura gli stili richiesti nella sezione `styles`, come mostrato nell'esempio qui sotto.
27
+ #### Importazione stili bootstrap-italia
28
+ Configura gli stili richiesti nel file `styles.scss`. Importa la libreria SCSS come mostrato nell'esempio qui sotto.
29
+
30
+ ```scss
31
+ // Importazione libreria SCSS di bootstrap-italia
32
+ @import '../node_modules/bootstrap-italia/src/scss/bootstrap-italia.scss';
33
+
27
34
  ```
28
- "styles": [
29
- "node_modules/bootstrap-italia/dist/css/bootstrap-italia.min.css",
30
- "node_modules/bootstrap-italia/dist/css/italia-icon-font.css"
31
- //...
32
- ],
35
+
36
+ #### Come personalizzare e sovrascrivere le variabili di default della libreria (es. colori, font-family, misure, ecc.)
37
+
38
+ Bootstrap Italia eredita ed estende tutte le variabili di default di Bootstrap, sovrascrivendo
39
+ alcuni valori in fase di compilazione e impostandone di nuovi all’occorenza. Un esempio fra tutti è
40
+ il valore del colore $primary che in Bootstrap Italia è rappresentato dal colore blu #0066CC,
41
+ tipico della libreria.
42
+
43
+ L’utilizzo del blu #0066CC dovrebbe però essere riservato alle amministrazioni centrali dello
44
+ Stato, e quindi ci si può trovare nella condizione di dover personalizzare i valori delle variabili
45
+ colore di Bootstrap Italia, impostando nuovi valori per le proprie necessità.
46
+
47
+
48
+ Questo colore e le altre tonalità vengono generate a partire dalla terna HSB, pertanto occorre modificare le variabili primary-h, primary-s e primary-b.
49
+ Per avere la corrispondenza tra valore esadecimale del colore e HSB si può utilizzare il portale rgb.to, ad esempio https://rgb.to/0066CC.
50
+
51
+ Di seguito un esempio di file `styles.scss` con la personalizzazione dei colori.
52
+ Le personalizzazioni delle variabili devono sempre essere effettuate prima dell'importazione del file `bootstrap-italia.scss`
53
+
54
+ ```scss
55
+ // modifica completa del template: è possibile ricompilare la libreria modificando alcune variabili SCSS
56
+
57
+ // Per l'override del colore $primary della palette in formato HSB (colore #FF3333 https://rgb.to/ff3333):
58
+ $primary-h: 0;
59
+ $primary-s: 80;
60
+ $primary-b: 100;
61
+
62
+ // Per l'override della famiglia di caratteri
63
+ $font-family-serif: 'Custom Font', Georgia, serif;
64
+ $font-family-sans-serif: 'Custom Font', Arial, Helvetica, sans-serif;
65
+ $font-family-monospace: 'Custom Font', 'Courier New', Courier, monospace;
66
+
67
+ // Importazione libreria SCSS di bootstrap-italia
68
+ @import '../node_modules/bootstrap-italia/src/scss/bootstrap-italia.scss';
33
69
  ```
34
70
 
71
+
72
+
35
73
  ## Segnalazione bug e richieste di aiuto
36
74
 
37
75
  Vuoi segnalare un bug o fare una richiesta?
38
76
 
39
77
  Prima di tutto assicurati che sia un problema relativo al tema Design Angular Kit e non alla libreria Bootstrap Italia da cui deriva
40
78
  (in tal caso puoi fare riferimento al [repository di Bootstrap Italia](https://github.com/italia/bootstrap-italia)), poi
41
- dai un'occhiata a come [creare una issue](https://github.com/italia/design-angular-kit/blob/master/CONTRIBUTING.md#creare-una-issue).
79
+ dai un'occhiata a come [creare una issue](https://github.com/italia/design-angular-kit/blob/main/CONTRIBUTING.md#creare-una-issue).
42
80
 
43
81
  ## Come contribuire
44
82
 
@@ -46,7 +84,7 @@ Vorresti dare una mano su Design Angular Kit? **Sei nel posto giusto!**
46
84
 
47
85
  Se non l'hai già fatto, inizia spendendo qualche minuto per approfondire la tua conoscenza sulle
48
86
  [linee guida di design per i servizi web della PA](https://design-italia.readthedocs.io/it/stable/index.html),
49
- e fai riferimento alle [indicazioni su come contribuire a Design Angular Kit](https://github.com/italia/design-angular-kit/blob/master/CONTRIBUTING.md).
87
+ e fai riferimento alle [indicazioni su come contribuire a Design Angular Kit](https://github.com/italia/design-angular-kit/blob/main/CONTRIBUTING.md).
50
88
 
51
89
  A questo punto, è necessario impostare il tuo ambiente locale per la compilazione dei file sorgente e la generazione
52
90
  della documentazione:
@@ -57,28 +95,20 @@ della documentazione:
57
95
  git clone https://github.com/italia/design-angular-kit.git
58
96
  ```
59
97
 
60
- 2. Installare [Node.js](https://nodejs.org) e [Yarn](https://yarnpkg.com)
61
-
62
- 3. Nella cartella di progetto installare le dipendenze con il tool Yarn
63
-
64
- ```
65
- yarn
66
- ```
67
-
68
- 4. Lanciare l'applicazione in locale
98
+ 2. Nella cartella di progetto installare le dipendenze
69
99
 
70
100
  ```
71
- yarn start
101
+ npm i
72
102
  ```
73
103
 
74
- 5. Per eseguire i test di unità eseguire il comando
104
+ 3. Lanciare l'applicazione in locale
75
105
 
76
106
  ```
77
- yarn test
107
+ npm run start
78
108
  ```
79
109
 
80
- 6. Per eseguire i test end to end eseguire il comando
110
+ 4. Per eseguire i test di unità eseguire il comando
81
111
 
82
112
  ```
83
- yarn run e2e
113
+ npm run test
84
114
  ```
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public_api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduLWFuZ3VsYXIta2l0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9kZXNpZ24tYW5ndWxhci1raXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ==
@@ -0,0 +1,83 @@
1
+ import { Directive, Input, HostBinding } from '@angular/core';
2
+ import { ThemeColor, THEME_COLORS } from '../models/ThemeColor';
3
+ import { Util } from '../util/util';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Una badge con design bootstrap italia.
7
+ */
8
+ export class BadgeDirective {
9
+ constructor(el) {
10
+ this.el = el;
11
+ this._badgeColor = THEME_COLORS.LIGHT;
12
+ this._badgeText = '';
13
+ this._isPill = false;
14
+ }
15
+ /**
16
+ * (Opzionale) indica il colore del badge. Può essere `primary`, `secondary`, `danger`, `warning`, `info`, `success`, `light` o `dark`.
17
+ * Se non viene fornito o il valore è diverso da quelli previsti il suo valore di default è `light`.
18
+ */
19
+ get badgeColor() {
20
+ return this._badgeColor;
21
+ }
22
+ set badgeColor(value) {
23
+ if (ThemeColor.is(value)) {
24
+ this._badgeColor = value;
25
+ }
26
+ else {
27
+ this._badgeColor = THEME_COLORS.LIGHT;
28
+ }
29
+ }
30
+ /**
31
+ * La direttiva che abilita l'elemento come badge. Mostra il testo come contenuto del badge.
32
+ * Se valutato ad `undefined`, `null` o stringa vuota il badge non viene mostrato.
33
+ */
34
+ get badgeText() { return this._badgeText; }
35
+ set badgeText(value) {
36
+ if (value) {
37
+ this._badgeText = value;
38
+ }
39
+ else {
40
+ this._badgeText = '';
41
+ }
42
+ }
43
+ /**
44
+ * Indica se il badge è arrotondato o meno.
45
+ */
46
+ get isPill() { return this._isPill; }
47
+ set isPill(value) {
48
+ this._isPill = Util.coerceBooleanProperty(value);
49
+ }
50
+ getBadgeColorClassName() {
51
+ return `bg-${this._badgeColor}`;
52
+ }
53
+ get hostClasses() {
54
+ return [
55
+ 'badge',
56
+ this.getBadgeColorClassName(),
57
+ this.isPill ? 'rounded-pill' : '',
58
+ ].join(' ');
59
+ }
60
+ }
61
+ BadgeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: BadgeDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
62
+ BadgeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.11", type: BadgeDirective, selector: "[itBadge]", inputs: { badgeColor: "badgeColor", badgeText: ["itBadge", "badgeText"], isPill: "isPill" }, host: { properties: { "innerText": "this.badgeText", "class": "this.hostClasses" } }, exportAs: ["itBadge"], ngImport: i0 });
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: BadgeDirective, decorators: [{
64
+ type: Directive,
65
+ args: [{
66
+ selector: '[itBadge]',
67
+ exportAs: 'itBadge'
68
+ }]
69
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { badgeColor: [{
70
+ type: Input
71
+ }], badgeText: [{
72
+ type: Input,
73
+ args: ['itBadge']
74
+ }, {
75
+ type: HostBinding,
76
+ args: ['innerText']
77
+ }], isPill: [{
78
+ type: Input
79
+ }], hostClasses: [{
80
+ type: HostBinding,
81
+ args: ['class']
82
+ }] } });
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvYmFkZ2UvYmFkZ2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRXBDOztHQUVHO0FBS0gsTUFBTSxPQUFPLGNBQWM7SUEwRHpCLFlBQW9CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBekMxQixnQkFBVyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFnQmpDLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFFaEIsWUFBTyxHQUFHLEtBQUssQ0FBQztJQXVCYyxDQUFDO0lBeER2Qzs7O09BR0c7SUFDSCxJQUNJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUNELElBQUksVUFBVSxDQUFDLEtBQVU7UUFDdkIsSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1NBQzFCO2FBQU07WUFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7U0FDdkM7SUFDSCxDQUFDO0lBR0Q7OztPQUdHO0lBQ0gsSUFFSSxTQUFTLEtBQWEsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNuRCxJQUFJLFNBQVMsQ0FBQyxLQUFhO1FBQ3pCLElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7U0FDekI7YUFBTTtZQUNMLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQztJQUlEOztPQUVHO0lBQ0gsSUFDSSxNQUFNLEtBQWMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM5QyxJQUFJLE1BQU0sQ0FBQyxLQUFjO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsT0FBTyxNQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFDSSxXQUFXO1FBQ2IsT0FBTztZQUNMLE9BQU87WUFDUCxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFO1NBQ2xDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsQ0FBQzs7NEdBeERVLGNBQWM7Z0dBQWQsY0FBYzs0RkFBZCxjQUFjO2tCQUoxQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxXQUFXO29CQUNyQixRQUFRLEVBQUUsU0FBUztpQkFDcEI7aUdBUUssVUFBVTtzQkFEYixLQUFLO2dCQW1CRixTQUFTO3NCQUZaLEtBQUs7dUJBQUMsU0FBUzs7c0JBQ2YsV0FBVzt1QkFBQyxXQUFXO2dCQWdCcEIsTUFBTTtzQkFEVCxLQUFLO2dCQVdGLFdBQVc7c0JBRGQsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgSG9zdEJpbmRpbmcgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoZW1lQ29sb3IsIFRIRU1FX0NPTE9SUyB9IGZyb20gJy4uL21vZGVscy9UaGVtZUNvbG9yJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuXG4vKipcbiAqIFVuYSBiYWRnZSBjb24gZGVzaWduIGJvb3RzdHJhcCBpdGFsaWEuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tpdEJhZGdlXScsIC8vIHRzbGludDpkaXNhYmxlLWxpbmVcbiAgZXhwb3J0QXM6ICdpdEJhZGdlJ1xufSlcbmV4cG9ydCBjbGFzcyBCYWRnZURpcmVjdGl2ZSB7XG5cbiAgLyoqXG4gICAqIChPcHppb25hbGUpIGluZGljYSBpbCBjb2xvcmUgZGVsIGJhZGdlLiBQdcOyIGVzc2VyZSBgcHJpbWFyeWAsIGBzZWNvbmRhcnlgLCBgZGFuZ2VyYCwgYHdhcm5pbmdgLCBgaW5mb2AsIGBzdWNjZXNzYCwgYGxpZ2h0YCBvIGBkYXJrYC5cbiAgICogU2Ugbm9uIHZpZW5lIGZvcm5pdG8gbyBpbCB2YWxvcmUgw6ggZGl2ZXJzbyBkYSBxdWVsbGkgcHJldmlzdGkgaWwgc3VvIHZhbG9yZSBkaSBkZWZhdWx0IMOoIGBsaWdodGAuXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgYmFkZ2VDb2xvcigpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9iYWRnZUNvbG9yO1xuICB9XG4gIHNldCBiYWRnZUNvbG9yKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAoVGhlbWVDb2xvci5pcyh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuX2JhZGdlQ29sb3IgPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fYmFkZ2VDb2xvciA9IFRIRU1FX0NPTE9SUy5MSUdIVDtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfYmFkZ2VDb2xvciA9IFRIRU1FX0NPTE9SUy5MSUdIVDtcblxuICAvKipcbiAgICogTGEgZGlyZXR0aXZhIGNoZSBhYmlsaXRhIGwnZWxlbWVudG8gY29tZSBiYWRnZS4gTW9zdHJhIGlsIHRlc3RvIGNvbWUgY29udGVudXRvIGRlbCBiYWRnZS5cbiAgICogU2UgdmFsdXRhdG8gYWQgYHVuZGVmaW5lZGAsIGBudWxsYCBvIHN0cmluZ2EgdnVvdGEgaWwgYmFkZ2Ugbm9uIHZpZW5lIG1vc3RyYXRvLlxuICAgKi9cbiAgQElucHV0KCdpdEJhZGdlJylcbiAgQEhvc3RCaW5kaW5nKCdpbm5lclRleHQnKVxuICBnZXQgYmFkZ2VUZXh0KCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9iYWRnZVRleHQ7IH1cbiAgc2V0IGJhZGdlVGV4dCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLl9iYWRnZVRleHQgPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fYmFkZ2VUZXh0ID0gJyc7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX2JhZGdlVGV4dCA9ICcnO1xuXG4gIHByaXZhdGUgX2lzUGlsbCA9IGZhbHNlO1xuICAvKipcbiAgICogSW5kaWNhIHNlIGlsIGJhZGdlIMOoIGFycm90b25kYXRvIG8gbWVuby5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBpc1BpbGwoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9pc1BpbGw7IH1cbiAgc2V0IGlzUGlsbCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2lzUGlsbCA9IFV0aWwuY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QmFkZ2VDb2xvckNsYXNzTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgYmctJHt0aGlzLl9iYWRnZUNvbG9yfWA7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgZ2V0IGhvc3RDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFtcbiAgICAgICdiYWRnZScsXG4gICAgICB0aGlzLmdldEJhZGdlQ29sb3JDbGFzc05hbWUoKSxcbiAgICAgIHRoaXMuaXNQaWxsID8gJ3JvdW5kZWQtcGlsbCcgOiAnJyxcbiAgICBdLmpvaW4oJyAnKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHsgfVxuXG59XG4iXX0=
@@ -0,0 +1,66 @@
1
+ import { Component, Input, ChangeDetectionStrategy } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "../util/focus-mouse.directive";
5
+ import * as i3 from "../icon/icon.component";
6
+ let identifier = 0;
7
+ export class BreadcrumbItemComponent {
8
+ constructor(_cdRef, _elemRef) {
9
+ this._cdRef = _cdRef;
10
+ this._elemRef = _elemRef;
11
+ this.id = `it-breadcrumb-item-${identifier++}`;
12
+ this._isLast = false;
13
+ this.customClass = '';
14
+ }
15
+ /**
16
+ * Il link alla pagina verso cui andare al click di questo elemento del breadcrumb
17
+ */
18
+ get link() { return this._link; }
19
+ set link(value) { this._link = value; }
20
+ /**
21
+ * La classe dell'icona da usare prima del testo dell'elemento del breadcrumb
22
+ */
23
+ get icon() { return this._icon; }
24
+ set icon(value) { this._icon = value; }
25
+ get iconColor() { return this._iconColor; }
26
+ set iconColor(value) {
27
+ if (this._iconColor !== value) {
28
+ this._iconColor = value;
29
+ this._cdRef.detectChanges();
30
+ }
31
+ }
32
+ get separator() { return this._separator; }
33
+ set separator(value) { this._separator = value; }
34
+ get isLast() { return this._isLast; }
35
+ set isLast(value) {
36
+ this._isLast = value;
37
+ const breadcrumbItem = this._elemRef.nativeElement.querySelector('.breadcrumb-item');
38
+ if (this._isLast) {
39
+ breadcrumbItem.setAttribute('aria-current', 'page');
40
+ }
41
+ else {
42
+ if (breadcrumbItem.hasAttribute('aria-current')) {
43
+ breadcrumbItem.removeAttribute('aria-current');
44
+ }
45
+ }
46
+ this._cdRef.detectChanges();
47
+ }
48
+ get breadcrumbClass() {
49
+ return 'breadcrumb-item ' + (this.customClass ?? '') + (this.isLast ? ' active' : '');
50
+ }
51
+ }
52
+ BreadcrumbItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: BreadcrumbItemComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
53
+ BreadcrumbItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.11", type: BreadcrumbItemComponent, selector: "it-breadcrumb-item", inputs: { link: "link", icon: "icon", iconColor: "iconColor", customClass: "customClass" }, ngImport: i0, template: "<li [class]=\"breadcrumbClass\" [id]=\"id\">\n <it-icon [icon] = \"icon\" [color] = \"iconColor\"></it-icon>\n\n <a [href]=\"link\" focusMouse>\n <ng-content></ng-content>\n </a> \n <span class=\"separator\" *ngIf=\"!isLast\">{{separator}}</span>\n</li>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.FocusMouseDirective, selector: "[focusMouse]", exportAs: ["focusMouse"] }, { kind: "component", type: i3.IconComponent, selector: "it-icon", inputs: ["rounded", "roundedColor", "icon", "wai", "size", "color", "bgColor", "padded", "expand", "position", "verticalAlign"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: BreadcrumbItemComponent, decorators: [{
55
+ type: Component,
56
+ args: [{ selector: 'it-breadcrumb-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<li [class]=\"breadcrumbClass\" [id]=\"id\">\n <it-icon [icon] = \"icon\" [color] = \"iconColor\"></it-icon>\n\n <a [href]=\"link\" focusMouse>\n <ng-content></ng-content>\n </a> \n <span class=\"separator\" *ngIf=\"!isLast\">{{separator}}</span>\n</li>\n" }]
57
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { link: [{
58
+ type: Input
59
+ }], icon: [{
60
+ type: Input
61
+ }], iconColor: [{
62
+ type: Input
63
+ }], customClass: [{
64
+ type: Input
65
+ }] } });
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFjLHVCQUF1QixFQUFxQixNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFFakgsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0FBUW5CLE1BQU0sT0FBTyx1QkFBdUI7SUFHbEMsWUFBb0IsTUFBeUIsRUFBVSxRQUFvQjtRQUF2RCxXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVk7UUFGM0UsT0FBRSxHQUFHLHNCQUFzQixVQUFVLEVBQUUsRUFBRSxDQUFDO1FBK0NsQyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRWYsZ0JBQVcsR0FBVyxFQUFFLENBQUM7SUEvQzZDLENBQUM7SUFFaEY7O09BRUc7SUFDSCxJQUNJLElBQUksS0FBYSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLElBQUksSUFBSSxDQUFDLEtBQWEsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFHL0M7O09BRUc7SUFDSCxJQUNJLElBQUksS0FBYSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLElBQUksSUFBSSxDQUFDLEtBQWEsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFHL0MsSUFDSSxTQUFTLEtBQWEsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNuRCxJQUFJLFNBQVMsQ0FBQyxLQUFhO1FBQ3pCLElBQUcsSUFBSSxDQUFDLFVBQVUsS0FBSyxLQUFLLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFHRCxJQUFJLFNBQVMsS0FBYSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ25ELElBQUksU0FBUyxDQUFDLEtBQWEsSUFBSSxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFHekQsSUFBSSxNQUFNLEtBQWMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM5QyxJQUFJLE1BQU0sQ0FBQyxLQUFjO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3JGLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixjQUFjLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUNyRDthQUFNO1lBQ0wsSUFBSSxjQUFjLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxFQUFFO2dCQUMvQyxjQUFjLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ2hEO1NBQ0Y7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFLRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxrQkFBa0IsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7O3FIQXREVSx1QkFBdUI7eUdBQXZCLHVCQUF1QixzSkNWcEMsd1FBUUE7NEZERWEsdUJBQXVCO2tCQU5uQyxTQUFTOytCQUNFLG9CQUFvQixtQkFHYix1QkFBdUIsQ0FBQyxNQUFNO2lJQVczQyxJQUFJO3NCQURQLEtBQUs7Z0JBU0YsSUFBSTtzQkFEUCxLQUFLO2dCQU1GLFNBQVM7c0JBRFosS0FBSztnQkE2QkcsV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgRWxlbWVudFJlZiwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmxldCBpZGVudGlmaWVyID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaXQtYnJlYWRjcnVtYi1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2JyZWFkY3J1bWItaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2JyZWFkY3J1bWItaXRlbS5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEJyZWFkY3J1bWJJdGVtQ29tcG9uZW50IHtcbiAgaWQgPSBgaXQtYnJlYWRjcnVtYi1pdGVtLSR7aWRlbnRpZmllcisrfWA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIF9lbGVtUmVmOiBFbGVtZW50UmVmKSB7IH1cblxuICAvKipcbiAgICogSWwgbGluayBhbGxhIHBhZ2luYSB2ZXJzbyBjdWkgYW5kYXJlIGFsIGNsaWNrIGRpIHF1ZXN0byBlbGVtZW50byBkZWwgYnJlYWRjcnVtYlxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IGxpbmsoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX2xpbms7IH1cbiAgc2V0IGxpbmsodmFsdWU6IHN0cmluZykgeyB0aGlzLl9saW5rID0gdmFsdWU7IH1cbiAgcHJpdmF0ZSBfbGluazogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMYSBjbGFzc2UgZGVsbCdpY29uYSBkYSB1c2FyZSBwcmltYSBkZWwgdGVzdG8gZGVsbCdlbGVtZW50byBkZWwgYnJlYWRjcnVtYlxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IGljb24oKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX2ljb247IH1cbiAgc2V0IGljb24odmFsdWU6IHN0cmluZykgeyB0aGlzLl9pY29uID0gdmFsdWU7IH1cbiAgcHJpdmF0ZSBfaWNvbjogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBpY29uQ29sb3IoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX2ljb25Db2xvcjsgfVxuICBzZXQgaWNvbkNvbG9yKHZhbHVlOiBzdHJpbmcpIHsgXG4gICAgaWYodGhpcy5faWNvbkNvbG9yICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5faWNvbkNvbG9yID0gdmFsdWU7XG4gICAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX2ljb25Db2xvcjogc3RyaW5nO1xuXG4gIGdldCBzZXBhcmF0b3IoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX3NlcGFyYXRvcjsgfVxuICBzZXQgc2VwYXJhdG9yKHZhbHVlOiBzdHJpbmcpIHsgdGhpcy5fc2VwYXJhdG9yID0gdmFsdWU7IH1cbiAgcHJpdmF0ZSBfc2VwYXJhdG9yOiBzdHJpbmc7XG5cbiAgZ2V0IGlzTGFzdCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2lzTGFzdDsgfVxuICBzZXQgaXNMYXN0KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faXNMYXN0ID0gdmFsdWU7XG4gICAgY29uc3QgYnJlYWRjcnVtYkl0ZW0gPSB0aGlzLl9lbGVtUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmJyZWFkY3J1bWItaXRlbScpO1xuICAgIGlmICh0aGlzLl9pc0xhc3QpIHtcbiAgICAgIGJyZWFkY3J1bWJJdGVtLnNldEF0dHJpYnV0ZSgnYXJpYS1jdXJyZW50JywgJ3BhZ2UnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGJyZWFkY3J1bWJJdGVtLmhhc0F0dHJpYnV0ZSgnYXJpYS1jdXJyZW50JykpIHtcbiAgICAgICAgYnJlYWRjcnVtYkl0ZW0ucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWN1cnJlbnQnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG4gIHByaXZhdGUgX2lzTGFzdCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGN1c3RvbUNsYXNzOiBzdHJpbmcgPSAnJztcblxuICBnZXQgYnJlYWRjcnVtYkNsYXNzKCkge1xuICAgIHJldHVybiAnYnJlYWRjcnVtYi1pdGVtICcgKyAodGhpcy5jdXN0b21DbGFzcyA/PyAnJykgKyAodGhpcy5pc0xhc3QgPyAnIGFjdGl2ZScgOiAnJyk7XG4gIH1cblxufVxuIiwiPGxpIFtjbGFzc109XCJicmVhZGNydW1iQ2xhc3NcIiBbaWRdPVwiaWRcIj5cbiAgPGl0LWljb24gW2ljb25dID0gXCJpY29uXCIgW2NvbG9yXSA9IFwiaWNvbkNvbG9yXCI+PC9pdC1pY29uPlxuXG4gIDxhIFtocmVmXT1cImxpbmtcIiBmb2N1c01vdXNlPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9hPiBcbiAgPHNwYW4gY2xhc3M9XCJzZXBhcmF0b3JcIiAqbmdJZj1cIiFpc0xhc3RcIj57e3NlcGFyYXRvcn19PC9zcGFuPlxuPC9saT5cbiJdfQ==
@@ -0,0 +1,89 @@
1
+ import { Component, Input, ContentChildren, forwardRef, ChangeDetectionStrategy } from '@angular/core';
2
+ import { BreadcrumbItemComponent } from './breadcrumb-item.component';
3
+ import { Util } from '../util/util';
4
+ import { Subscription } from 'rxjs';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ const DEFAULT_SEPARATOR = '/';
8
+ let identifier = 0;
9
+ /**
10
+ * Una componente che indica la posizione della pagina corrente all’interno di una gerarchia di navigazione
11
+ */
12
+ export class BreadcrumbComponent {
13
+ constructor() {
14
+ this.id = `it-breadcrumb-${identifier++}`;
15
+ this._dark = false;
16
+ this._separator = DEFAULT_SEPARATOR;
17
+ this.customClass = '';
18
+ this.ariaLabel = 'breadcrumb';
19
+ this._subscription = Subscription.EMPTY;
20
+ }
21
+ /**
22
+ * Indica che il breadcrumb utilizza il tema di colorazione scura.
23
+ * Accetta una espressione booleana o può essere usato come attributo senza valore
24
+ */
25
+ get dark() { return this._dark; }
26
+ set dark(value) {
27
+ this._dark = Util.coerceBooleanProperty(value);
28
+ }
29
+ /**
30
+ * Il carattere che verrà usato come separatore tra gli elementi del breadcrumb
31
+ */
32
+ get separator() { return this._separator; }
33
+ set separator(value) { this._separator = value ? value : DEFAULT_SEPARATOR; }
34
+ get breadcrumbClass() {
35
+ return 'breadcrumb ' + (this.customClass ?? '') + (this._dark ? ' dark' : '');
36
+ }
37
+ ngAfterContentInit() {
38
+ this._reloadBreadcrumbs(this._items);
39
+ }
40
+ ngOnChanges(changes) {
41
+ if (changes['separator']) {
42
+ if (!changes['separator'].firstChange) {
43
+ this._reloadBreadcrumbs(this._items);
44
+ }
45
+ }
46
+ else if (changes['dark']) {
47
+ this._reloadBreadcrumbs(this._items);
48
+ }
49
+ }
50
+ ngOnDestroy() {
51
+ if (this._subscription) {
52
+ this._subscription.unsubscribe();
53
+ }
54
+ }
55
+ _reloadBreadcrumbs(currentItems) {
56
+ currentItems.forEach(item => {
57
+ item.separator = this.separator;
58
+ item.isLast = (item === currentItems.last);
59
+ item.iconColor = item.iconColor || (this._dark ? 'white' : 'primary');
60
+ });
61
+ this._subscribeToChanges();
62
+ }
63
+ _subscribeToChanges() {
64
+ if (this._subscription) {
65
+ this._subscription.unsubscribe();
66
+ }
67
+ this._subscription = this._items.changes.subscribe(items => {
68
+ this._reloadBreadcrumbs(items);
69
+ });
70
+ }
71
+ }
72
+ BreadcrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: BreadcrumbComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
73
+ BreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.11", type: BreadcrumbComponent, selector: "it-breadcrumb", inputs: { dark: "dark", separator: "separator", customClass: "customClass", ariaLabel: "ariaLabel" }, queries: [{ propertyName: "_items", predicate: i0.forwardRef(function () { return BreadcrumbItemComponent; }), descendants: true }], usesOnChanges: true, ngImport: i0, template: "<nav class=\"breadcrumb-container\" [attr.aria-label]=\"ariaLabel\" [id]=\"id\">\n <ol [ngClass]=\"breadcrumbClass\">\n <ng-content></ng-content>\n </ol>\n</nav>", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
74
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: BreadcrumbComponent, decorators: [{
75
+ type: Component,
76
+ args: [{ selector: 'it-breadcrumb', changeDetection: ChangeDetectionStrategy.OnPush, template: "<nav class=\"breadcrumb-container\" [attr.aria-label]=\"ariaLabel\" [id]=\"id\">\n <ol [ngClass]=\"breadcrumbClass\">\n <ng-content></ng-content>\n </ol>\n</nav>" }]
77
+ }], propDecorators: { dark: [{
78
+ type: Input
79
+ }], separator: [{
80
+ type: Input
81
+ }], _items: [{
82
+ type: ContentChildren,
83
+ args: [forwardRef(() => BreadcrumbItemComponent), { descendants: true }]
84
+ }], customClass: [{
85
+ type: Input
86
+ }], ariaLabel: [{
87
+ type: Input
88
+ }] } });
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9icmVhZGNydW1iL2JyZWFkY3J1bWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvYnJlYWRjcnVtYi9icmVhZGNydW1iLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBYSxVQUFVLEVBQ0QsdUJBQXVCLEVBQy9FLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBRXBDLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxDQUFDO0FBQzlCLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztBQUVuQjs7R0FFRztBQU9ILE1BQU0sT0FBTyxtQkFBbUI7SUFOaEM7UUFPRSxPQUFFLEdBQUcsaUJBQWlCLFVBQVUsRUFBRSxFQUFFLENBQUM7UUFXN0IsVUFBSyxHQUFHLEtBQUssQ0FBQztRQVFkLGVBQVUsR0FBRyxpQkFBaUIsQ0FBQztRQU12QyxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUd6QixjQUFTLEdBQVcsWUFBWSxDQUFDO1FBTXpCLGtCQUFhLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztLQTJDNUM7SUEzRUM7OztPQUdHO0lBQ0gsSUFDSSxJQUFJLEtBQWMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMxQyxJQUFJLElBQUksQ0FBQyxLQUFjO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdB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bGRyZW4sIFF1ZXJ5TGlzdCwgZm9yd2FyZFJlZixcbiAgQWZ0ZXJDb250ZW50SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIFNpbXBsZUNoYW5nZXMsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnJlYWRjcnVtYkl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2JyZWFkY3J1bWItaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuY29uc3QgREVGQVVMVF9TRVBBUkFUT1IgPSAnLyc7XG5sZXQgaWRlbnRpZmllciA9IDA7XG5cbi8qKlxuICogVW5hIGNvbXBvbmVudGUgY2hlIGluZGljYSBsYSBwb3NpemlvbmUgZGVsbGEgcGFnaW5hIGNvcnJlbnRlIGFsbOKAmWludGVybm8gZGkgdW5hIGdlcmFyY2hpYSBkaSBuYXZpZ2F6aW9uZVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpdC1icmVhZGNydW1iJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2JyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9icmVhZGNydW1iLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQnJlYWRjcnVtYkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgaWQgPSBgaXQtYnJlYWRjcnVtYi0ke2lkZW50aWZpZXIrK31gO1xuXG4gIC8qKlxuICAgKiBJbmRpY2EgY2hlIGlsIGJyZWFkY3J1bWIgdXRpbGl6emEgaWwgdGVtYSBkaSBjb2xvcmF6aW9uZSBzY3VyYS5cbiAgICogQWNjZXR0YSB1bmEgZXNwcmVzc2lvbmUgYm9vbGVhbmEgbyBwdcOyIGVzc2VyZSB1c2F0byBjb21lIGF0dHJpYnV0byBzZW56YSB2YWxvcmVcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBkYXJrKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fZGFyazsgfVxuICBzZXQgZGFyayh2YWx1ZTogYm9vbGVhbikgeyBcbiAgICB0aGlzLl9kYXJrID0gVXRpbC5jb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpOyBcbiAgfVxuICBwcml2YXRlIF9kYXJrID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIElsIGNhcmF0dGVyZSBjaGUgdmVycsOgIHVzYXRvIGNvbWUgc2VwYXJhdG9yZSB0cmEgZ2xpIGVsZW1lbnRpIGRlbCBicmVhZGNydW1iXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgc2VwYXJhdG9yKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9zZXBhcmF0b3I7IH1cbiAgc2V0IHNlcGFyYXRvcih2YWx1ZTogc3RyaW5nKSB7IHRoaXMuX3NlcGFyYXRvciA9IHZhbHVlID8gdmFsdWUgOiBERUZBVUxUX1NFUEFSQVRPUjsgfVxuICBwcml2YXRlIF9zZXBhcmF0b3IgPSBERUZBVUxUX1NFUEFSQVRPUjtcblxuICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gQnJlYWRjcnVtYkl0ZW1Db21wb25lbnQpLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIHByaXZhdGUgX2l0ZW1zOiBRdWVyeUxpc3Q8QnJlYWRjcnVtYkl0ZW1Db21wb25lbnQ+O1xuXG4gIEBJbnB1dCgpIFxuICBjdXN0b21DbGFzczogc3RyaW5nID0gJyc7XG5cbiAgQElucHV0KCkgXG4gIGFyaWFMYWJlbDogc3RyaW5nID0gJ2JyZWFkY3J1bWInO1xuXG4gIGdldCBicmVhZGNydW1iQ2xhc3MoKSB7XG4gICAgcmV0dXJuICdicmVhZGNydW1iICcgKyAodGhpcy5jdXN0b21DbGFzcyA/PyAnJykgKyAodGhpcy5fZGFyayA/ICcgZGFyaycgOiAnJyk7XG4gIH1cblxuICBwcml2YXRlIF9zdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMuX3JlbG9hZEJyZWFkY3J1bWJzKHRoaXMuX2l0ZW1zKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snc2VwYXJhdG9yJ10pIHtcbiAgICAgIGlmICghY2hhbmdlc1snc2VwYXJhdG9yJ10uZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgdGhpcy5fcmVsb2FkQnJlYWRjcnVtYnModGhpcy5faXRlbXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2hhbmdlc1snZGFyayddKSB7XG4gICAgICB0aGlzLl9yZWxvYWRCcmVhZGNydW1icyh0aGlzLl9pdGVtcyk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuX3N1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVsb2FkQnJlYWRjcnVtYnMoY3VycmVudEl0ZW1zOiBRdWVyeUxpc3Q8QnJlYWRjcnVtYkl0ZW1Db21wb25lbnQ+KSB7XG4gICAgY3VycmVudEl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBpdGVtLnNlcGFyYXRvciA9IHRoaXMuc2VwYXJhdG9yO1xuICAgICAgaXRlbS5pc0xhc3QgPSAoaXRlbSA9PT0gY3VycmVudEl0ZW1zLmxhc3QpO1xuICAgICAgaXRlbS5pY29uQ29sb3IgPSBpdGVtLmljb25Db2xvciB8fCAodGhpcy5fZGFyayA/ICd3aGl0ZScgOiAncHJpbWFyeScpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fc3Vic2NyaWJlVG9DaGFuZ2VzKCk7XG4gIH1cblxuXG4gIHByaXZhdGUgX3N1YnNjcmliZVRvQ2hhbmdlcygpIHtcbiAgICBpZiAodGhpcy5fc3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSB0aGlzLl9pdGVtcy5jaGFuZ2VzLnN1YnNjcmliZShpdGVtcyA9PiB7XG4gICAgICB0aGlzLl9yZWxvYWRCcmVhZGNydW1icyhpdGVtcyk7XG4gICAgfSk7XG4gIH1cblxufVxuIiwiPG5hdiBjbGFzcz1cImJyZWFkY3J1bWItY29udGFpbmVyXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIiBbaWRdPVwiaWRcIj5cbiAgPG9sIFtuZ0NsYXNzXT1cImJyZWFkY3J1bWJDbGFzc1wiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9vbD5cbjwvbmF2PiJdfQ==
@@ -0,0 +1,185 @@
1
+ import { ContentChild, ContentChildren, Directive, Host, HostBinding, HostListener, Input, Optional } from '@angular/core';
2
+ import { ThemeColor } from '../models/ThemeColor';
3
+ import { ButtonSize } from '../models/ButtonSize';
4
+ import { Util } from '../util/util';
5
+ import { IconComponent } from '../icon/icon.component';
6
+ import { IconColorEnum } from '../enums/icons.enum';
7
+ import { ProgressBarComponent } from '../progress-bar/progress-bar.component';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "../dropdown/dropdown.directive";
10
+ /**
11
+ * Un bottone con design bootstrap italia. Supporta tutte le funzionalità di un bottone HTML5.
12
+ */
13
+ export class ItButtonDirective {
14
+ constructor(dropdownToggle, _cdr) {
15
+ this._cdr = _cdr;
16
+ this._isDropdownButton = false;
17
+ this.autoUpdateIconColor = true;
18
+ this._disabled = false;
19
+ this._onFocus = false;
20
+ this._outline = false;
21
+ this._block = false;
22
+ this._isDropdownButton = !!dropdownToggle;
23
+ }
24
+ isLightColor(color) {
25
+ return color === IconColorEnum.light || color === IconColorEnum.info ||
26
+ color === IconColorEnum.white;
27
+ }
28
+ set color(value) {
29
+ if (ThemeColor.is(value)) {
30
+ this._color = value;
31
+ }
32
+ else {
33
+ this._color = this._isDropdownButton ? "dropdown" : IconColorEnum.primary;
34
+ }
35
+ if (this.autoUpdateIconColor) {
36
+ this.updateButtonIconColor();
37
+ }
38
+ }
39
+ updateButtonIconColor() {
40
+ this.iconComponents?.forEach(icon => {
41
+ let newIconColor = IconColorEnum.primary;
42
+ if (this._color === "dropdown") {
43
+ newIconColor = IconColorEnum.primary;
44
+ }
45
+ else if (this.isLightColor(this._color)) {
46
+ newIconColor = IconColorEnum.default;
47
+ }
48
+ else {
49
+ newIconColor = IconColorEnum.white;
50
+ }
51
+ icon.changeColor(newIconColor);
52
+ });
53
+ }
54
+ /**
55
+ * Stabilisce il colore del pulsante a seconda delle classi di bootstrap.
56
+ * Può avere valori:
57
+ * <ul>
58
+ * <li> primary
59
+ * <li> secondary
60
+ * <li> danger
61
+ * <li> warning
62
+ * <li> info
63
+ * <li> success
64
+ * <li> light
65
+ * <li> dark
66
+ * </ul>
67
+ */
68
+ get color() {
69
+ return this._color;
70
+ }
71
+ /**
72
+ * Se presente, il pulsante avrà un effetto di trasparenza e non reagirà al click
73
+ */
74
+ get disabled() { return this._disabled; }
75
+ set disabled(value) { this._disabled = Util.coerceBooleanProperty(value); }
76
+ onFocus() {
77
+ this._onFocus = true;
78
+ }
79
+ onBlur() {
80
+ this._onFocus = false;
81
+ }
82
+ /**
83
+ * Stabilisce se lo stile del pulsante avrà un contorno.
84
+ * Accetta una espressione booleana o può essere usato come attributo senza valore.
85
+ * Deve funzionare solo in congiunzione con un colore definito, altrimenti l'attributo viene ignorato.
86
+ */
87
+ get outline() { return this._outline; }
88
+ set outline(value) { this._outline = Util.coerceBooleanProperty(value); }
89
+ /**
90
+ * Indica se il pulsante occupa tutta l'ampiezza a sua disposizione.
91
+ */
92
+ get block() { return this._block; }
93
+ set block(value) { this._block = Util.coerceBooleanProperty(value); }
94
+ /**
95
+ * Indica la grandezza del pulsante. Può assumere i valori:
96
+ * <ul>
97
+ * <li> lg
98
+ * <li> sm
99
+ * <li> xs
100
+ * </ul>
101
+ */
102
+ get size() {
103
+ return this._size;
104
+ }
105
+ set size(value) {
106
+ if (ButtonSize.is(value)) {
107
+ this._size = value;
108
+ }
109
+ else {
110
+ this._size = undefined;
111
+ }
112
+ }
113
+ get hostClasses() {
114
+ let cssClass = 'btn';
115
+ if (this.color) {
116
+ if (this.outline) {
117
+ cssClass += ` btn-outline-${this.color}`;
118
+ }
119
+ else {
120
+ cssClass += ` btn-${this.color}`;
121
+ }
122
+ }
123
+ if (this.size) {
124
+ cssClass += ` btn-${this.size}`;
125
+ }
126
+ if (this.block) {
127
+ cssClass += ' btn-block';
128
+ }
129
+ if (this.disabled) {
130
+ cssClass += ' disabled';
131
+ }
132
+ if (this._onFocus) {
133
+ cssClass += ' focus--mouse';
134
+ }
135
+ if (this.iconComponents?.length && !this.progressBar) {
136
+ cssClass += ' btn-icon';
137
+ }
138
+ if (this.progressBar) {
139
+ cssClass += ' btn-progress';
140
+ }
141
+ return cssClass;
142
+ }
143
+ }
144
+ ItButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: ItButtonDirective, deps: [{ token: i1.ItDropdownToggle, host: true, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
145
+ ItButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.11", type: ItButtonDirective, selector: "[itButton]", inputs: { autoUpdateIconColor: "autoUpdateIconColor", color: ["itButton", "color"], disabled: "disabled", outline: "outline", block: "block", size: "size" }, host: { listeners: { "focus": "onFocus()", "blur": "onBlur()" }, properties: { "class": "this.hostClasses" } }, queries: [{ propertyName: "progressBar", first: true, predicate: ProgressBarComponent, descendants: true }, { propertyName: "iconComponents", predicate: IconComponent }], exportAs: ["itButton"], ngImport: i0 });
146
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: ItButtonDirective, decorators: [{
147
+ type: Directive,
148
+ args: [{
149
+ selector: '[itButton]',
150
+ exportAs: 'itButton'
151
+ }]
152
+ }], ctorParameters: function () { return [{ type: i1.ItDropdownToggle, decorators: [{
153
+ type: Optional
154
+ }, {
155
+ type: Host
156
+ }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { autoUpdateIconColor: [{
157
+ type: Input
158
+ }], color: [{
159
+ type: Input,
160
+ args: ['itButton']
161
+ }], disabled: [{
162
+ type: Input
163
+ }], onFocus: [{
164
+ type: HostListener,
165
+ args: ['focus']
166
+ }], onBlur: [{
167
+ type: HostListener,
168
+ args: ['blur']
169
+ }], iconComponents: [{
170
+ type: ContentChildren,
171
+ args: [IconComponent]
172
+ }], progressBar: [{
173
+ type: ContentChild,
174
+ args: [ProgressBarComponent]
175
+ }], outline: [{
176
+ type: Input
177
+ }], block: [{
178
+ type: Input
179
+ }], size: [{
180
+ type: Input
181
+ }], hostClasses: [{
182
+ type: HostBinding,
183
+ args: ['class']
184
+ }] } });
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2J1dHRvbi9idXR0b24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsWUFBWSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN6SixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7O0FBRzlFOztHQUVHO0FBS0gsTUFBTSxPQUFPLGlCQUFpQjtJQUU1QixZQUFnQyxjQUFnQyxFQUFVLElBQXVCO1FBQXZCLFNBQUksR0FBSixJQUFJLENBQW1CO1FBRHpGLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQVVsQyx3QkFBbUIsR0FBRyxJQUFJLENBQUM7UUF1RDVCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQXNCakIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQVFqQixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBL0ZyQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQztJQUM1QyxDQUFDO0lBRU8sWUFBWSxDQUFDLEtBQWE7UUFDaEMsT0FBUSxLQUFLLEtBQUssYUFB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WUFBWTt1QkFBQyxNQUFNO2dCQUtZLGNBQWM7c0JBQTdDLGVBQWU7dUJBQUMsYUFBYTtnQkFDTSxXQUFXO3NCQUE5QyxZQUFZO3VCQUFDLG9CQUFvQjtnQkFROUIsT0FBTztzQkFEVixLQUFLO2dCQVNGLEtBQUs7c0JBRFIsS0FBSztnQkFrQkYsSUFBSTtzQkFEUCxLQUFLO2dCQWNGLFdBQVc7c0JBRGQsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbnRlbnRDaGlsZCwgQ29udGVudENoaWxkcmVuLCBEaXJlY3RpdmUsIEhvc3QsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPcHRpb25hbCwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaGVtZUNvbG9yIH0gZnJvbSAnLi4vbW9kZWxzL1RoZW1lQ29sb3InO1xuaW1wb3J0IHsgQnV0dG9uU2l6ZSB9IGZyb20gJy4uL21vZGVscy9CdXR0b25TaXplJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ljb24vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWNvbkNvbG9yRW51bSB9IGZyb20gJy4uL2VudW1zL2ljb25zLmVudW0nO1xuaW1wb3J0IHsgSXREcm9wZG93blRvZ2dsZSB9IGZyb20gJy4uL2Ryb3Bkb3duL2Ryb3Bkb3duLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQcm9ncmVzc0JhckNvbXBvbmVudCB9IGZyb20gJy4uL3Byb2dyZXNzLWJhci9wcm9ncmVzcy1iYXIuY29tcG9uZW50JztcblxuXG4vKipcbiAqIFVuIGJvdHRvbmUgY29uIGRlc2lnbiBib290c3RyYXAgaXRhbGlhLiBTdXBwb3J0YSB0dXR0ZSBsZSBmdW56aW9uYWxpdMOgIGRpIHVuIGJvdHRvbmUgSFRNTDUuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tpdEJ1dHRvbl0nLFxuICBleHBvcnRBczogJ2l0QnV0dG9uJ1xufSlcbmV4cG9ydCBjbGFzcyBJdEJ1dHRvbkRpcmVjdGl2ZSB7XG4gIHByaXZhdGUgX2lzRHJvcGRvd25CdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEhvc3QoKSBkcm9wZG93blRvZ2dsZTogSXREcm9wZG93blRvZ2dsZSwgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHRoaXMuX2lzRHJvcGRvd25CdXR0b24gPSAhIWRyb3Bkb3duVG9nZ2xlO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0xpZ2h0Q29sb3IoY29sb3I6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAgY29sb3IgPT09IEljb25Db2xvckVudW0ubGlnaHQgfHwgY29sb3IgPT09IEljb25Db2xvckVudW0uaW5mbyB8fCBcbiAgICAgICAgICAgIGNvbG9yID09PSBJY29uQ29sb3JFbnVtLndoaXRlO1xuICB9XG5cbiAgQElucHV0KCkgYXV0b1VwZGF0ZUljb25Db2xvciA9IHRydWU7XG5cbiAgQElucHV0KCdpdEJ1dHRvbicpXG4gIHNldCBjb2xvcih2YWx1ZTogYW55KSB7XG4gICAgaWYgKFRoZW1lQ29sb3IuaXModmFsdWUpKSB7XG4gICAgICB0aGlzLl9jb2xvciA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9jb2xvciA9IHRoaXMuX2lzRHJvcGRvd25CdXR0b24gPyBcImRyb3Bkb3duXCIgOiBJY29uQ29sb3JFbnVtLnByaW1hcnk7XG4gICAgfVxuICAgIGlmKHRoaXMuYXV0b1VwZGF0ZUljb25Db2xvcikge1xuICAgICAgdGhpcy51cGRhdGVCdXR0b25JY29uQ29sb3IoKTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfY29sb3I7XG5cbiAgcHJpdmF0ZSB1cGRhdGVCdXR0b25JY29uQ29sb3IoKSB7XG4gICAgdGhpcy5pY29uQ29tcG9uZW50cz8uZm9yRWFjaChpY29uID0+IHtcbiAgICAgIGxldCBuZXdJY29uQ29sb3IgPSBJY29uQ29sb3JFbnVtLnByaW1hcnk7XG4gICAgICBpZih0aGlzLl9jb2xvciA9PT0gXCJkcm9wZG93blwiKSB7XG4gICAgICAgIG5ld0ljb25Db2xvciA9IEljb25Db2xvckVudW0ucHJpbWFyeTtcbiAgICAgIH0gZWxzZSBpZih0aGlzLmlzTGlnaHRDb2xvcih0aGlzLl9jb2xvcikpIHtcbiAgICAgICAgbmV3SWNvbkNvbG9yID0gSWNvbkNvbG9yRW51bS5kZWZhdWx0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3SWNvbkNvbG9yID0gSWNvbkNvbG9yRW51bS53aGl0ZTtcbiAgICAgIH1cbiAgICAgIGljb24uY2hhbmdlQ29sb3IobmV3SWNvbkNvbG9yKTtcbiAgICB9KTtcbiAgICBcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFiaWxpc2NlIGlsIGNvbG9yZSBkZWwgcHVsc2FudGUgYSBzZWNvbmRhIGRlbGxlIGNsYXNzaSBkaSBib290c3RyYXAuXG4gICAqIFB1w7IgYXZlcmUgdmFsb3JpOlxuICAgKiA8dWw+XG4gICAqIDxsaT4gcHJpbWFyeVxuICAgKiA8bGk+IHNlY29uZGFyeVxuICAgKiA8bGk+IGRhbmdlclxuICAgKiA8bGk+IHdhcm5pbmdcbiAgICogPGxpPiBpbmZvXG4gICAqIDxsaT4gc3VjY2Vzc1xuICAgKiA8bGk+IGxpZ2h0XG4gICAqIDxsaT4gZGFya1xuICAgKiA8L3VsPlxuICAgKi9cbiAgZ2V0IGNvbG9yKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbG9yO1xuICB9XG5cblxuICAvKipcbiAgICogU2UgcHJlc2VudGUsIGlsIHB1bHNhbnRlIGF2csOgIHVuIGVmZmV0dG8gZGkgdHJhc3BhcmVuemEgZSBub24gcmVhZ2lyw6AgYWwgY2xpY2tcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2Rpc2FibGVkOyB9XG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikgeyB0aGlzLl9kaXNhYmxlZCA9IFV0aWwuY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTsgfVxuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX29uRm9jdXMgPSBmYWxzZTtcbiAgQEhvc3RMaXN0ZW5lcignZm9jdXMnKVxuICBvbkZvY3VzKCkge1xuICAgIHRoaXMuX29uRm9jdXMgPSB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignYmx1cicpXG4gIG9uQmx1cigpIHtcbiAgICB0aGlzLl9vbkZvY3VzID0gZmFsc2U7XG4gIH1cblxuICBAQ29udGVudENoaWxkcmVuKEljb25Db21wb25lbnQpIGljb25Db21wb25lbnRzOiBRdWVyeUxpc3Q8SWNvbkNvbXBvbmVudD47XG4gIEBDb250ZW50Q2hpbGQoUHJvZ3Jlc3NCYXJDb21wb25lbnQpIHByb2dyZXNzQmFyOiBQcm9ncmVzc0JhckNvbXBvbmVudDtcblxuICAvKipcbiAgICogU3RhYmlsaXNjZSBzZSBsbyBzdGlsZSBkZWwgcHVsc2FudGUgYXZyw6AgdW4gY29udG9ybm8uXG4gICAqIEFjY2V0dGEgdW5hIGVzcHJlc3Npb25lIGJvb2xlYW5hIG8gcHXDsiBlc3NlcmUgdXNhdG8gY29tZSBhdHRyaWJ1dG8gc2VuemEgdmFsb3JlLlxuICAgKiBEZXZlIGZ1bnppb25hcmUgc29sbyBpbiBjb25naXVuemlvbmUgY29uIHVuIGNvbG9yZSBkZWZpbml0bywgYWx0cmltZW50aSBsJ2F0dHJpYnV0byB2aWVuZSBpZ25vcmF0by5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBvdXRsaW5lKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fb3V0bGluZTsgfVxuICBzZXQgb3V0bGluZSh2YWx1ZTogYm9vbGVhbikgeyB0aGlzLl9vdXRsaW5lID0gVXRpbC5jb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpOyB9XG4gIHByaXZhdGUgX291dGxpbmUgPSBmYWxzZTtcblxuICAvKipcbiAgICogSW5kaWNhIHNlIGlsIHB1bHNhbnRlIG9jY3VwYSB0dXR0YSBsJ2FtcGllenphIGEgc3VhIGRpc3Bvc2l6aW9uZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBibG9jaygpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2Jsb2NrOyB9XG4gIHNldCBibG9jayh2YWx1ZTogYm9vbGVhbikgeyB0aGlzLl9ibG9jayA9IFV0aWwuY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTsgfVxuICBwcml2YXRlIF9ibG9jayA9IGZhbHNlO1xuXG5cblxuICBcblxuICAvKipcbiAgICogSW5kaWNhIGxhIGdyYW5kZXp6YSBkZWwgcHVsc2FudGUuIFB1w7IgYXNzdW1lcmUgaSB2YWxvcmk6XG4gICAqIDx1bD5cbiAgICogPGxpPiBsZ1xuICAgKiA8bGk+IHNtXG4gICAqIDxsaT4geHNcbiAgICogPC91bD5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBzaXplKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3NpemU7XG4gIH1cbiAgc2V0IHNpemUodmFsdWU6IGFueSkge1xuICAgIGlmIChCdXR0b25TaXplLmlzKHZhbHVlKSkge1xuICAgICAgdGhpcy5fc2l6ZSA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zaXplID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIF9zaXplO1xuICBcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBob3N0Q2xhc3NlcygpOiBzdHJpbmcge1xuICAgIGxldCBjc3NDbGFzcyA9ICdidG4nO1xuICAgXG4gICAgaWYgKHRoaXMuY29sb3IpIHtcbiAgICAgIGlmICh0aGlzLm91dGxpbmUpIHtcbiAgICAgICAgY3NzQ2xhc3MgKz0gYCBidG4tb3V0bGluZS0ke3RoaXMuY29sb3J9YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNzc0NsYXNzICs9IGAgYnRuLSR7dGhpcy5jb2xvcn1gO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnNpemUpIHtcbiAgICAgIGNzc0NsYXNzICs9IGAgYnRuLSR7dGhpcy5zaXplfWA7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYmxvY2spIHtcbiAgICAgIGNzc0NsYXNzICs9ICcgYnRuLWJsb2NrJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgY3NzQ2xhc3MgKz0gJyBkaXNhYmxlZCc7XG4gICAgfVxuXG4gICAgaWYodGhpcy5fb25Gb2N1cykge1xuICAgICAgY3NzQ2xhc3MgKz0gJyBmb2N1cy0tbW91c2UnO1xuICAgIH1cblxuICAgIGlmKHRoaXMuaWNvbkNvbXBvbmVudHM/Lmxlbmd0aCAmJiAhdGhpcy5wcm9ncmVzc0Jhcikge1xuICAgICAgY3NzQ2xhc3MgKz0gJyBidG4taWNvbic7XG4gICAgfVxuXG4gICAgaWYodGhpcy5wcm9ncmVzc0Jhcikge1xuICAgICAgY3NzQ2xhc3MgKz0gJyBidG4tcHJvZ3Jlc3MnO1xuICAgIH1cblxuICAgIHJldHVybiBjc3NDbGFzcztcbiAgfVxuXG5cbn1cbiJdfQ==