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.
- package/README.md +61 -31
- package/esm2020/design-angular-kit.mjs +5 -0
- package/esm2020/lib/badge/badge.directive.mjs +83 -0
- package/esm2020/lib/breadcrumb/breadcrumb-item.component.mjs +66 -0
- package/esm2020/lib/breadcrumb/breadcrumb.component.mjs +89 -0
- package/esm2020/lib/button/button.directive.mjs +185 -0
- package/esm2020/lib/button/button.module.mjs +18 -0
- package/esm2020/lib/checkbox/checkbox.component.mjs +138 -0
- package/esm2020/lib/collapse/collapse-group.component.mjs +57 -0
- package/esm2020/lib/collapse/collapse-item.component.mjs +79 -0
- package/esm2020/lib/collapse/collapse.config.mjs +12 -0
- package/esm2020/lib/collapse/collapse.directive.mjs +55 -0
- package/esm2020/lib/collapse/collapse.module.mjs +22 -0
- package/esm2020/lib/design-angular-kit.module.mjs +142 -0
- package/esm2020/lib/dropdown/dropdown-divider.component.mjs +11 -0
- package/esm2020/lib/dropdown/dropdown-item.component.mjs +97 -0
- package/esm2020/lib/dropdown/dropdown.component.mjs +143 -0
- package/esm2020/lib/dropdown/dropdown.config.mjs +12 -0
- package/esm2020/lib/dropdown/dropdown.directive.mjs +156 -0
- package/esm2020/lib/dropdown/dropdown.module.mjs +25 -0
- package/esm2020/lib/enums/icons.enum.mjs +27 -0
- package/esm2020/lib/form-input/form-input-password.utils.mjs +154 -0
- package/esm2020/lib/form-input/form-input.component.mjs +495 -0
- package/esm2020/lib/form-input/it-prefix.directive.mjs +13 -0
- package/esm2020/lib/form-input/it-suffix.directive.mjs +13 -0
- package/esm2020/lib/form-input/it-text-prefix.directive.mjs +13 -0
- package/esm2020/lib/form-input/it-text-suffix.directive.mjs +13 -0
- package/esm2020/lib/form-input/mark-matching-text.pipe.mjs +36 -0
- package/esm2020/lib/icon/icon.component.mjs +87 -0
- package/esm2020/lib/icon/icon.module.mjs +18 -0
- package/esm2020/lib/models/Alignment.mjs +15 -0
- package/esm2020/lib/models/ButtonSize.mjs +15 -0
- package/esm2020/lib/models/InputType.mjs +44 -0
- package/esm2020/lib/models/ThemeColor.mjs +30 -0
- package/esm2020/lib/popover/popover.config.mjs +17 -0
- package/esm2020/lib/popover/popover.directive.mjs +33 -0
- package/esm2020/lib/popover/popover.module.mjs +19 -0
- package/esm2020/lib/progress-bar/progress-bar.component.mjs +98 -0
- package/esm2020/lib/radio/radio.component.mjs +287 -0
- package/esm2020/lib/radio/unique-selection-dispatcher.mjs +55 -0
- package/esm2020/lib/tabs/tab-group.component.mjs +177 -0
- package/esm2020/lib/tabs/tab.component.mjs +73 -0
- package/esm2020/lib/tabs/tabs.module.mjs +20 -0
- package/esm2020/lib/toggle/toggle.component.mjs +86 -0
- package/esm2020/lib/tooltip/tooltip.config.mjs +17 -0
- package/esm2020/lib/tooltip/tooltip.directive.mjs +43 -0
- package/esm2020/lib/tooltip/tooltip.module.mjs +19 -0
- package/esm2020/lib/util/focus-mouse.directive.mjs +32 -0
- package/esm2020/lib/util/util.mjs +12 -0
- package/esm2020/lib/util/utils.module.mjs +16 -0
- package/esm2020/public_api.mjs +40 -0
- package/fesm2015/design-angular-kit.mjs +3181 -0
- package/fesm2015/design-angular-kit.mjs.map +1 -0
- package/fesm2020/design-angular-kit.mjs +3160 -0
- package/fesm2020/design-angular-kit.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/badge/badge.directive.d.ts +11 -5
- package/lib/breadcrumb/breadcrumb-item.component.d.ts +16 -5
- package/lib/breadcrumb/breadcrumb.component.d.ts +12 -5
- package/lib/button/button.directive.d.ts +72 -0
- package/lib/button/button.module.d.ts +8 -0
- package/lib/checkbox/checkbox.component.d.ts +25 -5
- package/lib/collapse/collapse-group.component.d.ts +6 -2
- package/lib/collapse/collapse-item.component.d.ts +16 -8
- package/lib/collapse/collapse.config.d.ts +6 -0
- package/lib/collapse/collapse.directive.d.ts +13 -28
- package/lib/collapse/collapse.module.d.ts +12 -0
- package/lib/design-angular-kit.module.d.ts +27 -0
- package/lib/dropdown/dropdown-divider.component.d.ts +3 -0
- package/lib/dropdown/dropdown-item.component.d.ts +22 -8
- package/lib/dropdown/dropdown.component.d.ts +34 -26
- package/lib/dropdown/dropdown.config.d.ts +6 -0
- package/lib/dropdown/dropdown.directive.d.ts +77 -0
- package/lib/dropdown/dropdown.module.d.ts +15 -0
- package/lib/enums/icons.enum.d.ts +23 -0
- package/lib/form-input/form-input-password.utils.d.ts +45 -0
- package/lib/form-input/form-input.component.d.ts +202 -20
- package/lib/form-input/it-prefix.directive.d.ts +5 -0
- package/lib/form-input/it-suffix.directive.d.ts +5 -0
- package/lib/form-input/it-text-prefix.directive.d.ts +5 -0
- package/lib/form-input/it-text-suffix.directive.d.ts +5 -0
- package/lib/form-input/mark-matching-text.pipe.d.ts +10 -0
- package/lib/icon/icon.component.d.ts +34 -0
- package/lib/icon/icon.module.d.ts +8 -0
- package/lib/models/Alignment.d.ts +12 -0
- package/lib/models/ButtonSize.d.ts +1 -1
- package/lib/models/InputType.d.ts +22 -1
- package/lib/models/ThemeColor.d.ts +1 -1
- package/lib/popover/popover.config.d.ts +5 -6
- package/lib/popover/popover.directive.d.ts +13 -108
- package/lib/popover/popover.module.d.ts +9 -0
- package/lib/progress-bar/progress-bar.component.d.ts +25 -19
- package/lib/radio/radio.component.d.ts +22 -10
- package/lib/radio/unique-selection-dispatcher.d.ts +3 -0
- package/lib/tabs/tab-group.component.d.ts +17 -11
- package/lib/tabs/tab.component.d.ts +6 -2
- package/lib/tabs/tabs.module.d.ts +10 -0
- package/lib/toggle/toggle.component.d.ts +9 -4
- package/lib/tooltip/tooltip.config.d.ts +7 -7
- package/lib/tooltip/tooltip.directive.d.ts +12 -92
- package/lib/tooltip/tooltip.module.d.ts +9 -0
- package/lib/util/focus-mouse.directive.d.ts +13 -0
- package/lib/util/utils.module.d.ts +7 -0
- package/package.json +36 -21
- package/public_api.d.ts +16 -2
- package/bundles/design-angular-kit.umd.js +0 -6258
- package/bundles/design-angular-kit.umd.js.map +0 -1
- package/bundles/design-angular-kit.umd.min.js +0 -31
- package/bundles/design-angular-kit.umd.min.js.map +0 -1
- package/design-angular-kit.d.ts +0 -8
- package/design-angular-kit.metadata.json +0 -1
- package/esm2015/design-angular-kit.js +0 -14
- package/esm2015/lib/badge/badge.directive.js +0 -116
- package/esm2015/lib/breadcrumb/breadcrumb-item.component.js +0 -117
- package/esm2015/lib/breadcrumb/breadcrumb.component.js +0 -128
- package/esm2015/lib/button/button.component.js +0 -165
- package/esm2015/lib/checkbox/checkbox.component.js +0 -170
- package/esm2015/lib/collapse/collapse-group.component.js +0 -87
- package/esm2015/lib/collapse/collapse-item.component.js +0 -148
- package/esm2015/lib/collapse/collapse.directive.js +0 -153
- package/esm2015/lib/design-angular-kit.module.js +0 -90
- package/esm2015/lib/dropdown/dropdown-divider.component.js +0 -18
- package/esm2015/lib/dropdown/dropdown-header.component.js +0 -29
- package/esm2015/lib/dropdown/dropdown-item.component.js +0 -157
- package/esm2015/lib/dropdown/dropdown.component.js +0 -248
- package/esm2015/lib/form-input/form-input.component.js +0 -489
- package/esm2015/lib/models/ButtonSize.js +0 -25
- package/esm2015/lib/models/IconPosition.js +0 -21
- package/esm2015/lib/models/InputType.js +0 -33
- package/esm2015/lib/models/InteractionTrigger.js +0 -35
- package/esm2015/lib/models/ThemeColor.js +0 -45
- package/esm2015/lib/popover/popover.component.js +0 -134
- package/esm2015/lib/popover/popover.config.js +0 -35
- package/esm2015/lib/popover/popover.directive.js +0 -433
- package/esm2015/lib/popover/popup.js +0 -105
- package/esm2015/lib/popover/positioning.js +0 -349
- package/esm2015/lib/popover/triggers.js +0 -99
- package/esm2015/lib/progress-bar/progress-bar.component.js +0 -170
- package/esm2015/lib/radio/radio.component.js +0 -526
- package/esm2015/lib/radio/unique-selection-dispatcher.js +0 -70
- package/esm2015/lib/tabs/tab-group.component.js +0 -339
- package/esm2015/lib/tabs/tab.component.js +0 -143
- package/esm2015/lib/toggle/toggle.component.js +0 -173
- package/esm2015/lib/tooltip/popup.js +0 -105
- package/esm2015/lib/tooltip/positioning.js +0 -349
- package/esm2015/lib/tooltip/tooltip.component.js +0 -77
- package/esm2015/lib/tooltip/tooltip.config.js +0 -31
- package/esm2015/lib/tooltip/tooltip.directive.js +0 -384
- package/esm2015/lib/tooltip/triggers.js +0 -99
- package/esm2015/lib/util/util.js +0 -30
- package/esm2015/public_api.js +0 -31
- package/esm5/design-angular-kit.js +0 -14
- package/esm5/lib/badge/badge.directive.js +0 -145
- package/esm5/lib/breadcrumb/breadcrumb-item.component.js +0 -135
- package/esm5/lib/breadcrumb/breadcrumb.component.js +0 -164
- package/esm5/lib/button/button.component.js +0 -221
- package/esm5/lib/checkbox/checkbox.component.js +0 -200
- package/esm5/lib/collapse/collapse-group.component.js +0 -102
- package/esm5/lib/collapse/collapse-item.component.js +0 -183
- package/esm5/lib/collapse/collapse.directive.js +0 -210
- package/esm5/lib/design-angular-kit.module.js +0 -94
- package/esm5/lib/dropdown/dropdown-divider.component.js +0 -20
- package/esm5/lib/dropdown/dropdown-header.component.js +0 -27
- package/esm5/lib/dropdown/dropdown-item.component.js +0 -197
- package/esm5/lib/dropdown/dropdown.component.js +0 -309
- package/esm5/lib/form-input/form-input.component.js +0 -582
- package/esm5/lib/models/ButtonSize.js +0 -25
- package/esm5/lib/models/IconPosition.js +0 -21
- package/esm5/lib/models/InputType.js +0 -33
- package/esm5/lib/models/InteractionTrigger.js +0 -35
- package/esm5/lib/models/ThemeColor.js +0 -45
- package/esm5/lib/popover/popover.component.js +0 -144
- package/esm5/lib/popover/popover.config.js +0 -37
- package/esm5/lib/popover/popover.directive.js +0 -573
- package/esm5/lib/popover/popup.js +0 -116
- package/esm5/lib/popover/positioning.js +0 -446
- package/esm5/lib/popover/triggers.js +0 -115
- package/esm5/lib/progress-bar/progress-bar.component.js +0 -218
- package/esm5/lib/radio/radio.component.js +0 -610
- package/esm5/lib/radio/unique-selection-dispatcher.js +0 -108
- package/esm5/lib/tabs/tab-group.component.js +0 -401
- package/esm5/lib/tabs/tab.component.js +0 -156
- package/esm5/lib/toggle/toggle.component.js +0 -200
- package/esm5/lib/tooltip/popup.js +0 -116
- package/esm5/lib/tooltip/positioning.js +0 -446
- package/esm5/lib/tooltip/tooltip.component.js +0 -80
- package/esm5/lib/tooltip/tooltip.config.js +0 -33
- package/esm5/lib/tooltip/tooltip.directive.js +0 -516
- package/esm5/lib/tooltip/triggers.js +0 -115
- package/esm5/lib/util/util.js +0 -48
- package/esm5/public_api.js +0 -31
- package/fesm2015/design-angular-kit.js +0 -5094
- package/fesm2015/design-angular-kit.js.map +0 -1
- package/fesm5/design-angular-kit.js +0 -6314
- package/fesm5/design-angular-kit.js.map +0 -1
- package/lib/button/button.component.d.ts +0 -50
- package/lib/dropdown/dropdown-header.component.d.ts +0 -3
- package/lib/models/IconPosition.d.ts +0 -9
- package/lib/models/InteractionTrigger.d.ts +0 -19
- package/lib/popover/popover.component.d.ts +0 -25
- package/lib/popover/popup.d.ts +0 -27
- package/lib/popover/positioning.d.ts +0 -32
- package/lib/popover/triggers.d.ts +0 -18
- package/lib/tooltip/popup.d.ts +0 -27
- package/lib/tooltip/positioning.d.ts +0 -32
- package/lib/tooltip/tooltip.component.d.ts +0 -20
- package/lib/tooltip/triggers.d.ts +0 -18
package/README.md
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
|
+
[](https://www.npmjs.com/package/design-angular-kit)
|
|
2
|
+
[](https://github.com/italia/design-angular-kit/actions)
|
|
3
|
+
[](https://codecov.io/gh/italia/design-angular-kit)
|
|
4
|
+
[](https://github.com/italia/design-angular-kit/blob/main/LICENSE)
|
|
5
|
+
[](https://github.com/italia/design-angular-kit/issues)
|
|
1
6
|
[](https://developersitalia.slack.com/messages/C7VPAUVB3/)
|
|
2
|
-
[](https://codeclimate.com/github/italia/design-angular-kit/maintainability)
|
|
4
|
-
[](https://www.npmjs.com/package/design-angular-kit)
|
|
5
|
-
[](https://github.com/italia/design-angular-kit/blob/master/LICENSE)
|
|
7
|
+
[](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
|
-
|
|
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
|
-
[
|
|
15
|
-
[
|
|
16
|
-
[
|
|
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
|
-
####
|
|
26
|
-
Configura gli stili richiesti
|
|
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
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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/
|
|
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/
|
|
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.
|
|
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
|
-
|
|
101
|
+
npm i
|
|
72
102
|
```
|
|
73
103
|
|
|
74
|
-
|
|
104
|
+
3. Lanciare l'applicazione in locale
|
|
75
105
|
|
|
76
106
|
```
|
|
77
|
-
|
|
107
|
+
npm run start
|
|
78
108
|
```
|
|
79
109
|
|
|
80
|
-
|
|
110
|
+
4. Per eseguire i test di unità eseguire il comando
|
|
81
111
|
|
|
82
112
|
```
|
|
83
|
-
|
|
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.12", ngImport: i0, type: BadgeDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
62
|
+
BadgeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", 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.12", 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.12", 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.12", 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.12", 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.12", ngImport: i0, type: BreadcrumbComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
73
|
+
BreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", 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.12", 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.12", 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.12", 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.12", 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==
|