design-angular-kit 1.0.0-1 → 1.0.0-2

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 (217) hide show
  1. package/README.md +152 -18
  2. package/assets/i18n/it.json +81 -0
  3. package/esm2020/lib/abstracts/abstract-form-component.mjs +165 -0
  4. package/esm2020/lib/abstracts/abstract.component.mjs +20 -0
  5. package/esm2020/lib/components/core/accordion/accordion.component.mjs +20 -0
  6. package/esm2020/lib/components/core/alert/alert.component.mjs +29 -0
  7. package/esm2020/lib/components/core/badge/badge.directive.mjs +34 -0
  8. package/esm2020/lib/components/core/button/button.directive.mjs +78 -0
  9. package/esm2020/lib/components/core/callout/callout.component.mjs +59 -0
  10. package/esm2020/lib/components/core/card/card.component.mjs +58 -0
  11. package/esm2020/lib/components/core/carousel/carousel/carousel.component.mjs +66 -0
  12. package/esm2020/lib/components/core/carousel/carousel-item/carousel-item.component.mjs +14 -0
  13. package/esm2020/lib/components/core/chip/chip.component.mjs +89 -0
  14. package/esm2020/lib/components/core/collapse/collapse.component.mjs +96 -0
  15. package/esm2020/lib/components/core/dimmer/dimmer-buttons/dimmer-buttons.component.mjs +24 -0
  16. package/esm2020/lib/components/core/dimmer/dimmer-icon/dimmer-icon.component.mjs +11 -0
  17. package/esm2020/lib/components/core/dimmer/dimmer.component.mjs +59 -0
  18. package/esm2020/lib/components/core/dropdown/dropdown/dropdown.component.mjs +60 -0
  19. package/esm2020/lib/components/core/dropdown/dropdown-item/dropdown-item.component.mjs +71 -0
  20. package/esm2020/lib/components/core/forward/forward.directive.mjs +51 -0
  21. package/esm2020/lib/components/core/link/link.component.mjs +39 -0
  22. package/esm2020/lib/components/core/list/list/list.component.mjs +13 -0
  23. package/esm2020/lib/components/core/list/list-item/list-item.component.mjs +36 -0
  24. package/esm2020/lib/components/core/modal/modal.component.mjs +98 -0
  25. package/esm2020/lib/components/core/notifications/notifications.component.mjs +66 -0
  26. package/esm2020/lib/components/core/pagination/pagination.component.mjs +51 -0
  27. package/esm2020/lib/components/core/popover/popover.directive.mjs +176 -0
  28. package/esm2020/lib/components/core/progress-bar/progress-bar.component.mjs +34 -0
  29. package/esm2020/lib/components/core/progress-button/progress-button.component.mjs +27 -0
  30. package/esm2020/lib/components/core/spinner/spinner.component.mjs +35 -0
  31. package/esm2020/lib/components/core/tab/tab-container/tab-container.component.mjs +33 -0
  32. package/esm2020/lib/components/core/tab/tab-item/tab-item.component.mjs +36 -0
  33. package/esm2020/lib/components/core/table/table.component.mjs +57 -0
  34. package/esm2020/lib/components/core/tooltip/tooltip.directive.mjs +140 -0
  35. package/esm2020/lib/components/form/checkbox/checkbox.component.mjs +40 -0
  36. package/esm2020/lib/components/form/input/input.component.mjs +159 -0
  37. package/esm2020/lib/components/form/password-input/password-input.component.mjs +112 -0
  38. package/esm2020/lib/components/form/radio-button/radio-button.component.mjs +53 -0
  39. package/esm2020/lib/components/form/select/select.component.mjs +62 -0
  40. package/esm2020/lib/components/form/textarea/textarea.component.mjs +46 -0
  41. package/esm2020/lib/components/form/upload-drag-drop/upload-drag-drop.component.mjs +134 -0
  42. package/esm2020/lib/components/form/upload-file-list/upload-file-list.component.mjs +99 -0
  43. package/esm2020/lib/components/navigation/back-button/back-button.component.mjs +69 -0
  44. package/esm2020/lib/components/navigation/back-to-top/back-to-top.component.mjs +39 -0
  45. package/esm2020/lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component.mjs +45 -0
  46. package/esm2020/lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component.mjs +23 -0
  47. package/esm2020/lib/components/navigation/header/header.component.mjs +61 -0
  48. package/esm2020/lib/components/utils/icon/icon.component.mjs +54 -0
  49. package/esm2020/lib/components/utils/not-found-page/not-found-page.component.mjs +13 -0
  50. package/esm2020/lib/design-angular-kit.module.mjs +32 -132
  51. package/esm2020/lib/interfaces/core.mjs +16 -0
  52. package/esm2020/lib/interfaces/form.mjs +2 -0
  53. package/esm2020/lib/interfaces/icon.mjs +2 -0
  54. package/esm2020/lib/modules/components.module.mjs +241 -0
  55. package/esm2020/lib/services/notifications/notifications.service.mjs +122 -0
  56. package/esm2020/lib/utils/boolean-input.mjs +15 -0
  57. package/esm2020/lib/utils/file-utils.mjs +65 -0
  58. package/esm2020/lib/utils/regex.mjs +26 -0
  59. package/esm2020/lib/validators/it-validators.mjs +131 -0
  60. package/esm2020/public_api.mjs +60 -36
  61. package/fesm2015/design-angular-kit.mjs +2750 -2660
  62. package/fesm2015/design-angular-kit.mjs.map +1 -1
  63. package/fesm2020/design-angular-kit.mjs +2726 -2655
  64. package/fesm2020/design-angular-kit.mjs.map +1 -1
  65. package/lib/abstracts/abstract-form-component.d.ts +84 -0
  66. package/lib/abstracts/abstract.component.d.ts +14 -0
  67. package/lib/components/core/accordion/accordion.component.d.ts +16 -0
  68. package/lib/components/core/alert/alert.component.d.ts +17 -0
  69. package/lib/components/core/badge/badge.directive.d.ts +16 -0
  70. package/lib/components/core/button/button.directive.d.ts +38 -0
  71. package/lib/components/core/callout/callout.component.d.ts +36 -0
  72. package/lib/components/core/card/card.component.d.ts +41 -0
  73. package/lib/components/core/carousel/carousel/carousel.component.d.ts +46 -0
  74. package/lib/components/core/carousel/carousel-item/carousel-item.component.d.ts +10 -0
  75. package/lib/components/core/chip/chip.component.d.ts +62 -0
  76. package/lib/components/core/collapse/collapse.component.d.ts +59 -0
  77. package/lib/components/core/dimmer/dimmer-buttons/dimmer-buttons.component.d.ts +12 -0
  78. package/lib/components/core/dimmer/dimmer-icon/dimmer-icon.component.d.ts +5 -0
  79. package/lib/components/core/dimmer/dimmer.component.d.ts +24 -0
  80. package/lib/components/core/dropdown/dropdown/dropdown.component.d.ts +43 -0
  81. package/lib/components/core/dropdown/dropdown-item/dropdown-item.component.d.ts +44 -0
  82. package/lib/components/core/forward/forward.directive.d.ts +14 -0
  83. package/lib/components/core/link/link.component.d.ts +34 -0
  84. package/lib/components/core/list/list/list.component.d.ts +10 -0
  85. package/lib/components/core/list/list-item/list-item.component.d.ts +24 -0
  86. package/lib/components/core/modal/modal.component.d.ts +59 -0
  87. package/lib/components/core/notifications/notifications.component.d.ts +30 -0
  88. package/lib/components/core/pagination/pagination.component.d.ts +31 -0
  89. package/lib/components/core/popover/popover.directive.d.ts +97 -0
  90. package/lib/components/core/progress-bar/progress-bar.component.d.ts +28 -0
  91. package/lib/components/core/progress-button/progress-button.component.d.ts +22 -0
  92. package/lib/components/core/spinner/spinner.component.d.ts +21 -0
  93. package/lib/components/core/tab/tab-container/tab-container.component.d.ts +28 -0
  94. package/lib/components/core/tab/tab-item/tab-item.component.d.ts +34 -0
  95. package/lib/components/core/table/table.component.d.ts +54 -0
  96. package/lib/components/core/tooltip/tooltip.directive.d.ts +80 -0
  97. package/lib/components/form/checkbox/checkbox.component.d.ts +30 -0
  98. package/lib/components/form/input/input.component.d.ts +66 -0
  99. package/lib/components/form/password-input/password-input.component.d.ts +54 -0
  100. package/lib/components/form/radio-button/radio-button.component.d.ts +29 -0
  101. package/lib/components/form/select/select.component.d.ts +30 -0
  102. package/lib/components/form/textarea/textarea.component.d.ts +24 -0
  103. package/lib/components/form/upload-drag-drop/upload-drag-drop.component.d.ts +53 -0
  104. package/lib/components/form/upload-file-list/upload-file-list.component.d.ts +57 -0
  105. package/lib/components/navigation/back-button/back-button.component.d.ts +47 -0
  106. package/lib/components/navigation/back-to-top/back-to-top.component.d.ts +27 -0
  107. package/lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component.d.ts +30 -0
  108. package/lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component.d.ts +22 -0
  109. package/lib/components/navigation/header/header.component.d.ts +28 -0
  110. package/lib/components/utils/icon/icon.component.d.ts +40 -0
  111. package/lib/components/utils/not-found-page/not-found-page.component.d.ts +5 -0
  112. package/lib/design-angular-kit.module.d.ts +4 -24
  113. package/lib/interfaces/core.d.ts +36 -0
  114. package/lib/interfaces/form.d.ts +43 -0
  115. package/lib/interfaces/icon.d.ts +3 -0
  116. package/lib/modules/components.module.d.ts +57 -0
  117. package/lib/services/notifications/notifications.service.d.ts +63 -0
  118. package/lib/utils/boolean-input.d.ts +11 -0
  119. package/lib/utils/file-utils.d.ts +27 -0
  120. package/lib/utils/regex.d.ts +25 -0
  121. package/lib/validators/it-validators.d.ts +58 -0
  122. package/package.json +20 -13
  123. package/public_api.d.ts +53 -35
  124. package/esm2020/lib/badge/badge.directive.mjs +0 -83
  125. package/esm2020/lib/breadcrumb/breadcrumb-item.component.mjs +0 -66
  126. package/esm2020/lib/breadcrumb/breadcrumb.component.mjs +0 -89
  127. package/esm2020/lib/button/button.directive.mjs +0 -185
  128. package/esm2020/lib/button/button.module.mjs +0 -18
  129. package/esm2020/lib/checkbox/checkbox.component.mjs +0 -138
  130. package/esm2020/lib/collapse/collapse-group.component.mjs +0 -57
  131. package/esm2020/lib/collapse/collapse-item.component.mjs +0 -79
  132. package/esm2020/lib/collapse/collapse.config.mjs +0 -12
  133. package/esm2020/lib/collapse/collapse.directive.mjs +0 -55
  134. package/esm2020/lib/collapse/collapse.module.mjs +0 -22
  135. package/esm2020/lib/dropdown/dropdown-divider.component.mjs +0 -11
  136. package/esm2020/lib/dropdown/dropdown-item.component.mjs +0 -97
  137. package/esm2020/lib/dropdown/dropdown.component.mjs +0 -143
  138. package/esm2020/lib/dropdown/dropdown.config.mjs +0 -12
  139. package/esm2020/lib/dropdown/dropdown.directive.mjs +0 -156
  140. package/esm2020/lib/dropdown/dropdown.module.mjs +0 -25
  141. package/esm2020/lib/enums/icons.enum.mjs +0 -27
  142. package/esm2020/lib/form-input/form-input-password.utils.mjs +0 -154
  143. package/esm2020/lib/form-input/form-input.component.mjs +0 -495
  144. package/esm2020/lib/form-input/it-prefix.directive.mjs +0 -13
  145. package/esm2020/lib/form-input/it-suffix.directive.mjs +0 -13
  146. package/esm2020/lib/form-input/it-text-prefix.directive.mjs +0 -13
  147. package/esm2020/lib/form-input/it-text-suffix.directive.mjs +0 -13
  148. package/esm2020/lib/form-input/mark-matching-text.pipe.mjs +0 -36
  149. package/esm2020/lib/icon/icon.component.mjs +0 -87
  150. package/esm2020/lib/icon/icon.module.mjs +0 -18
  151. package/esm2020/lib/models/Alignment.mjs +0 -15
  152. package/esm2020/lib/models/ButtonSize.mjs +0 -15
  153. package/esm2020/lib/models/InputType.mjs +0 -44
  154. package/esm2020/lib/models/ThemeColor.mjs +0 -30
  155. package/esm2020/lib/popover/popover.config.mjs +0 -17
  156. package/esm2020/lib/popover/popover.directive.mjs +0 -33
  157. package/esm2020/lib/popover/popover.module.mjs +0 -19
  158. package/esm2020/lib/progress-bar/progress-bar.component.mjs +0 -98
  159. package/esm2020/lib/radio/radio.component.mjs +0 -287
  160. package/esm2020/lib/radio/unique-selection-dispatcher.mjs +0 -55
  161. package/esm2020/lib/tabs/tab-group.component.mjs +0 -177
  162. package/esm2020/lib/tabs/tab.component.mjs +0 -73
  163. package/esm2020/lib/tabs/tabs.module.mjs +0 -20
  164. package/esm2020/lib/toggle/toggle.component.mjs +0 -86
  165. package/esm2020/lib/tooltip/tooltip.config.mjs +0 -17
  166. package/esm2020/lib/tooltip/tooltip.directive.mjs +0 -43
  167. package/esm2020/lib/tooltip/tooltip.module.mjs +0 -19
  168. package/esm2020/lib/util/focus-mouse.directive.mjs +0 -32
  169. package/esm2020/lib/util/util.mjs +0 -12
  170. package/esm2020/lib/util/utils.module.mjs +0 -16
  171. package/lib/badge/badge.directive.d.ts +0 -33
  172. package/lib/breadcrumb/breadcrumb-item.component.d.ts +0 -33
  173. package/lib/breadcrumb/breadcrumb.component.d.ts +0 -33
  174. package/lib/button/button.directive.d.ts +0 -72
  175. package/lib/button/button.module.d.ts +0 -8
  176. package/lib/checkbox/checkbox.component.d.ts +0 -61
  177. package/lib/collapse/collapse-group.component.d.ts +0 -16
  178. package/lib/collapse/collapse-item.component.d.ts +0 -46
  179. package/lib/collapse/collapse.config.d.ts +0 -6
  180. package/lib/collapse/collapse.directive.d.ts +0 -25
  181. package/lib/collapse/collapse.module.d.ts +0 -12
  182. package/lib/dropdown/dropdown-divider.component.d.ts +0 -5
  183. package/lib/dropdown/dropdown-item.component.d.ts +0 -56
  184. package/lib/dropdown/dropdown.component.d.ts +0 -65
  185. package/lib/dropdown/dropdown.config.d.ts +0 -6
  186. package/lib/dropdown/dropdown.directive.d.ts +0 -77
  187. package/lib/dropdown/dropdown.module.d.ts +0 -15
  188. package/lib/enums/icons.enum.d.ts +0 -23
  189. package/lib/form-input/form-input-password.utils.d.ts +0 -45
  190. package/lib/form-input/form-input.component.d.ts +0 -283
  191. package/lib/form-input/it-prefix.directive.d.ts +0 -5
  192. package/lib/form-input/it-suffix.directive.d.ts +0 -5
  193. package/lib/form-input/it-text-prefix.directive.d.ts +0 -5
  194. package/lib/form-input/it-text-suffix.directive.d.ts +0 -5
  195. package/lib/form-input/mark-matching-text.pipe.d.ts +0 -10
  196. package/lib/icon/icon.component.d.ts +0 -34
  197. package/lib/icon/icon.module.d.ts +0 -8
  198. package/lib/models/Alignment.d.ts +0 -12
  199. package/lib/models/ButtonSize.d.ts +0 -11
  200. package/lib/models/InputType.d.ts +0 -36
  201. package/lib/models/ThemeColor.d.ts +0 -21
  202. package/lib/popover/popover.config.d.ts +0 -11
  203. package/lib/popover/popover.directive.d.ts +0 -20
  204. package/lib/popover/popover.module.d.ts +0 -9
  205. package/lib/progress-bar/progress-bar.component.d.ts +0 -55
  206. package/lib/radio/radio.component.d.ts +0 -116
  207. package/lib/radio/unique-selection-dispatcher.d.ts +0 -36
  208. package/lib/tabs/tab-group.component.d.ts +0 -71
  209. package/lib/tabs/tab.component.d.ts +0 -44
  210. package/lib/tabs/tabs.module.d.ts +0 -10
  211. package/lib/toggle/toggle.component.d.ts +0 -46
  212. package/lib/tooltip/tooltip.config.d.ts +0 -11
  213. package/lib/tooltip/tooltip.directive.d.ts +0 -27
  214. package/lib/tooltip/tooltip.module.d.ts +0 -9
  215. package/lib/util/focus-mouse.directive.d.ts +0 -13
  216. package/lib/util/util.d.ts +0 -5
  217. package/lib/util/utils.module.d.ts +0 -7
@@ -0,0 +1,63 @@
1
+ import { Observable } from "rxjs";
2
+ import { Notification, NotificationPosition, NotificationType } from "../../interfaces/core";
3
+ import * as i0 from "@angular/core";
4
+ export declare class NotificationsService {
5
+ private subject;
6
+ /**
7
+ * Listen on notification arrived
8
+ * @param filterType filter type of notification
9
+ */
10
+ onNotification(filterType?: NotificationType): Observable<Notification>;
11
+ /**
12
+ * Show new notification
13
+ * @param notification notification
14
+ */
15
+ addNotification(notification: Notification): void;
16
+ /**
17
+ * Create new Standard notification
18
+ * @param title notification title
19
+ * @param message notification message
20
+ * @param dismissable notification dismissable
21
+ * @param duration notification duration (millis)
22
+ * @param position notification position
23
+ */
24
+ standard(title: string, message?: string, dismissable?: boolean, duration?: number, position?: NotificationPosition): void;
25
+ /**
26
+ * Create new Success notification
27
+ * @param title notification title
28
+ * @param message notification message
29
+ * @param dismissable notification dismissable
30
+ * @param duration notification duration (millis)
31
+ * @param position notification position
32
+ */
33
+ success(title: string, message?: string, dismissable?: boolean, duration?: number, position?: NotificationPosition): void;
34
+ /**
35
+ * Create new Error notification
36
+ * @param title notification title
37
+ * @param message notification message
38
+ * @param dismissable notification dismissable
39
+ * @param duration notification duration (millis)
40
+ * @param position notification position
41
+ */
42
+ error(title: string, message?: string, dismissable?: boolean, duration?: number, position?: NotificationPosition): void;
43
+ /**
44
+ * Create new Warning notification
45
+ * @param title notification title
46
+ * @param message notification message
47
+ * @param dismissable notification dismissable
48
+ * @param duration notification duration (millis)
49
+ * @param position notification position
50
+ */
51
+ warning(title: string, message?: string, dismissable?: boolean, duration?: number, position?: NotificationPosition): void;
52
+ /**
53
+ * Create new Info notification
54
+ * @param title notification title
55
+ * @param message notification message
56
+ * @param dismissable notification dismissable
57
+ * @param duration notification duration (millis)
58
+ * @param position notification position
59
+ */
60
+ info(title: string, message?: string, dismissable?: boolean, duration?: number, position?: NotificationPosition): void;
61
+ static ɵfac: i0.ɵɵFactoryDeclaration<NotificationsService, never>;
62
+ static ɵprov: i0.ɵɵInjectableDeclaration<NotificationsService>;
63
+ }
@@ -0,0 +1,11 @@
1
+ export declare type BooleanInput = boolean | 'true' | 'false';
2
+ /**
3
+ * Check if boolean input has true value and not is `undefined`
4
+ * @param booleanInput the boolean input
5
+ */
6
+ export declare function isTrueBooleanInput(booleanInput?: BooleanInput): boolean;
7
+ /**
8
+ * Check if boolean input has false value or is `undefined`
9
+ * @param booleanInput the boolean input
10
+ */
11
+ export declare function isFalseBooleanInput(booleanInput?: BooleanInput): boolean;
@@ -0,0 +1,27 @@
1
+ import { Observable } from 'rxjs';
2
+ export declare class FileUtils {
3
+ /**
4
+ * Return the file size string
5
+ * @param file the file
6
+ * @param decimals decimal to show
7
+ */
8
+ static getFileSizeString(file: File, decimals?: number): string;
9
+ /**
10
+ * Convert a file to base64 string
11
+ * @param file the base64 string
12
+ */
13
+ static fileToBase64(file: File): Observable<string>;
14
+ /**
15
+ * Convert base64 to Blob
16
+ * @param base64 the base64 string
17
+ * @param mimeType the <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types">MIME type</a> (example 'application/pdf')
18
+ */
19
+ static base64ToBlob(base64: string, mimeType: string): Blob;
20
+ /**
21
+ * Convert base64 to File
22
+ * @param base64 the base64 string
23
+ * @param mimeType the <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types">MIME type</a> (example 'application/pdf')
24
+ * @param filename the file name
25
+ */
26
+ static base64ToFile(base64: string, mimeType: string, filename: string): File;
27
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * General Email Regex (RFC 5322 Official Standard)
3
+ * http://emailregex.com/
4
+ */
5
+ export declare const EMAIL_REGEX: RegExp;
6
+ /**
7
+ * Phone number Regex
8
+ */
9
+ export declare const PHONE_NUMBER_REGEX: RegExp;
10
+ /**
11
+ * URL Regex
12
+ */
13
+ export declare const URL_REGEX: RegExp;
14
+ /**
15
+ * The italian tax code Regex (Codice Fiscale)
16
+ */
17
+ export declare const ITALIAN_TAX_CODE_REGEX: RegExp;
18
+ /**
19
+ * The VAT number Regex (Partita iva)
20
+ */
21
+ export declare const VAT_NUMBER_REGEX: RegExp;
22
+ /**
23
+ * Italian CAP Regex
24
+ */
25
+ export declare const CAP_REGEX: RegExp;
@@ -0,0 +1,58 @@
1
+ import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';
2
+ export declare class ItValidators {
3
+ static SpecialCharacterPattern: string;
4
+ /**
5
+ * Static pattern validator with custom error
6
+ * @param regex
7
+ * @param error
8
+ */
9
+ static customPattern(regex: RegExp, error: ValidationErrors): ValidatorFn;
10
+ /**
11
+ * Set Validator if the condition is satisfied
12
+ * @param validator the validator to apply if the condition is true
13
+ * @param condition the condition
14
+ */
15
+ static conditional(validator: ValidatorFn, condition: (control: AbstractControl) => boolean): ValidatorFn;
16
+ /**
17
+ * Check whether our password and confirm password are a match
18
+ * @param control
19
+ */
20
+ static passwordMatch(control: AbstractControl): AbstractControl | null;
21
+ /**
22
+ * Password validator
23
+ * @param minLength minimum password length - default 10
24
+ * @param hasNumber check whether the entered password has a number - default true
25
+ * @param hasCapitalCase check whether the entered password has upper case letter - default true
26
+ * @param hasSmallCase check whether the entered password has a lower-case letter - default true
27
+ * @param hasSpecialCharacters check whether the entered password has a special character - default true
28
+ */
29
+ static password(minLength?: number, hasNumber?: boolean, hasCapitalCase?: boolean, hasSmallCase?: boolean, hasSpecialCharacters?: boolean): ValidatorFn;
30
+ /**
31
+ * Email validator
32
+ */
33
+ static email(): Array<ValidatorFn>;
34
+ /**
35
+ * Phone number validator
36
+ */
37
+ static tel(): ValidatorFn;
38
+ /**
39
+ * URL validator
40
+ */
41
+ static url(): ValidatorFn;
42
+ /**
43
+ * Italian Tax Code validator
44
+ */
45
+ static taxCode(): ValidatorFn;
46
+ /**
47
+ * VAT Number validator
48
+ */
49
+ static vatNumber(): ValidatorFn;
50
+ /**
51
+ * Italian Postal Code validator (CAP)
52
+ */
53
+ static cap(): ValidatorFn;
54
+ /**
55
+ * Check if value is a valid RegExp
56
+ */
57
+ static regExp(): ValidatorFn;
58
+ }
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "design-angular-kit",
3
3
  "description": "Un toolkit Angular conforme alle linee guida di design per i servizi web della PA",
4
- "version": "1.0.0-1",
5
- "license": " BSD-3-Clause",
4
+ "version": "1.0.0-2",
5
+ "license": "BSD-3-Clause",
6
6
  "keywords": [
7
7
  "angular",
8
8
  "toolkit",
@@ -15,20 +15,27 @@
15
15
  "type": "git",
16
16
  "url": "https://github.com/italia/design-angular-kit.git"
17
17
  },
18
+ "author": {
19
+ "name": "Antonino Bonanno",
20
+ "email": "bonanno@net-serv.it",
21
+ "url": "https://github.com/AntoninoBonanno"
22
+ },
23
+ "contributors": [
24
+ {
25
+ "name": "Net Service Srl",
26
+ "email": "areatecnica@net-serv.it",
27
+ "url": "https://www.net-serv.it/"
28
+ }
29
+ ],
18
30
  "dependencies": {
19
- "@angular/localize": "^12.2.16",
20
- "@ng-bootstrap/ng-bootstrap": "13.0.0",
21
- "@popperjs/core": "^2.10.2",
22
- "bootstrap": "^5.2.0",
23
- "tslib": "^2.0.0",
24
- "io-ts": "^2.2.16",
25
- "fp-ts": "^2.13.1"
31
+ "tslib": "^2.4.1"
26
32
  },
27
33
  "peerDependencies": {
28
- "@angular/common": "^10.0.0",
29
- "@angular/core": "^10.0.0",
30
- "@angular/forms": "^10.0.0",
31
- "bootstrap-italia": "2.0.2"
34
+ "@angular/common": "^15.0.4",
35
+ "@angular/core": "^15.0.4",
36
+ "@ngx-translate/core": "^14.0.0",
37
+ "@ngx-translate/http-loader": "^7.0.0",
38
+ "bootstrap-italia": "^2.2.0"
32
39
  },
33
40
  "module": "fesm2015/design-angular-kit.mjs",
34
41
  "es2020": "fesm2020/design-angular-kit.mjs",
package/public_api.d.ts CHANGED
@@ -1,36 +1,54 @@
1
- export * from './lib/progress-bar/progress-bar.component';
2
- export * from './lib/checkbox/checkbox.component';
3
- export * from './lib/popover/popover.directive';
4
- export * from './lib/popover/popover.config';
5
- export * from './lib/popover/popover.module';
6
- export * from './lib/toggle/toggle.component';
7
- export * from './lib/radio/radio.component';
8
- export * from './lib/tooltip/tooltip.directive';
9
- export * from './lib/tooltip/tooltip.module';
10
- export * from './lib/tooltip/tooltip.config';
11
- export * from './lib/button/button.directive';
12
- export * from './lib/button/button.module';
13
- export * from './lib/badge/badge.directive';
14
- export * from './lib/collapse/collapse.directive';
15
- export * from './lib/collapse/collapse-item.component';
16
- export * from './lib/collapse/collapse-group.component';
17
- export * from './lib/collapse/collapse.module';
18
- export * from './lib/form-input/form-input.component';
19
- export * from './lib/form-input/it-prefix.directive';
20
- export * from './lib/form-input/it-suffix.directive';
21
- export * from './lib/form-input/it-text-suffix.directive';
22
- export * from './lib/form-input/it-text-prefix.directive';
23
- export * from './lib/dropdown/dropdown.component';
24
- export * from './lib/dropdown/dropdown-item.component';
25
- export * from './lib/dropdown/dropdown-divider.component';
26
- export * from './lib/breadcrumb/breadcrumb.component';
27
- export * from './lib/breadcrumb/breadcrumb-item.component';
28
- export * from './lib/tabs/tab-group.component';
29
- export * from './lib/icon/icon.component';
30
- export * from './lib/icon/icon.module';
31
- export * from './lib/dropdown/dropdown.directive';
32
- export * from './lib/dropdown/dropdown.config';
33
- export * from './lib/dropdown/dropdown.module';
34
- export * from './lib/util/utils.module';
35
- export * from './lib/util/focus-mouse.directive';
36
1
  export * from './lib/design-angular-kit.module';
2
+ export * from './lib/modules/components.module';
3
+ export * from './lib/components/core/accordion/accordion.component';
4
+ export * from './lib/components/core/alert/alert.component';
5
+ export * from './lib/components/core/badge/badge.directive';
6
+ export * from './lib/components/core/button/button.directive';
7
+ export * from './lib/components/core/callout/callout.component';
8
+ export * from './lib/components/core/card/card.component';
9
+ export * from './lib/components/core/carousel/carousel/carousel.component';
10
+ export * from './lib/components/core/carousel/carousel-item/carousel-item.component';
11
+ export * from './lib/components/core/chip/chip.component';
12
+ export * from './lib/components/core/collapse/collapse.component';
13
+ export * from './lib/components/core/dimmer/dimmer-buttons/dimmer-buttons.component';
14
+ export * from './lib/components/core/dimmer/dimmer.component';
15
+ export * from './lib/components/core/dimmer/dimmer-icon/dimmer-icon.component';
16
+ export * from './lib/components/core/dropdown/dropdown/dropdown.component';
17
+ export * from './lib/components/core/dropdown/dropdown-item/dropdown-item.component';
18
+ export * from './lib/components/core/forward/forward.directive';
19
+ export * from './lib/components/core/link/link.component';
20
+ export * from './lib/components/core/list/list/list.component';
21
+ export * from './lib/components/core/list/list-item/list-item.component';
22
+ export * from './lib/components/core/modal/modal.component';
23
+ export * from './lib/components/core/notifications/notifications.component';
24
+ export * from './lib/components/core/pagination/pagination.component';
25
+ export * from './lib/components/core/popover/popover.directive';
26
+ export * from './lib/components/core/progress-bar/progress-bar.component';
27
+ export * from './lib/components/core/progress-button/progress-button.component';
28
+ export * from './lib/components/core/spinner/spinner.component';
29
+ export * from './lib/components/core/tab/tab-container/tab-container.component';
30
+ export * from './lib/components/core/tab/tab-item/tab-item.component';
31
+ export * from './lib/components/core/table/table.component';
32
+ export * from './lib/components/core/tooltip/tooltip.directive';
33
+ export * from './lib/components/form/checkbox/checkbox.component';
34
+ export * from './lib/components/form/input/input.component';
35
+ export * from './lib/components/form/password-input/password-input.component';
36
+ export * from './lib/components/form/radio-button/radio-button.component';
37
+ export * from './lib/components/form/select/select.component';
38
+ export * from './lib/components/form/textarea/textarea.component';
39
+ export * from './lib/components/form/upload-drag-drop/upload-drag-drop.component';
40
+ export * from './lib/components/form/upload-file-list/upload-file-list.component';
41
+ export * from './lib/components/navigation/back-button/back-button.component';
42
+ export * from './lib/components/navigation/back-to-top/back-to-top.component';
43
+ export * from './lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component';
44
+ export * from './lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component';
45
+ export * from './lib/components/navigation/header/header.component';
46
+ export * from './lib/components/utils/icon/icon.component';
47
+ export * from './lib/components/utils/not-found-page/not-found-page.component';
48
+ export * from './lib/services/notifications/notifications.service';
49
+ export * from './lib/interfaces/core';
50
+ export * from './lib/interfaces/form';
51
+ export * from './lib/interfaces/icon';
52
+ export * from './lib/utils/regex';
53
+ export * from './lib/utils/file-utils';
54
+ export * from './lib/validators/it-validators';
@@ -1,83 +0,0 @@
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=
@@ -1,66 +0,0 @@
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==
@@ -1,89 +0,0 @@
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==