design-angular-kit 1.0.0-9 → 1.0.0-prerelease.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.
- package/README.md +212 -64
- package/assets/i18n/en.json +81 -12
- package/assets/i18n/it.json +80 -11
- package/esm2022/lib/abstracts/abstract-form.component.mjs +187 -0
- package/esm2022/lib/abstracts/abstract.component.mjs +45 -0
- package/esm2022/lib/components/core/accordion/accordion.component.mjs +39 -0
- package/esm2022/lib/components/core/alert/alert.component.mjs +71 -0
- package/esm2022/lib/components/core/avatar/avatar-dropdown/avatar-dropdown.component.mjs +43 -0
- package/esm2022/lib/components/core/avatar/avatar-group/avatar-group.component.mjs +38 -0
- package/esm2022/lib/components/core/avatar/avatar.directive.mjs +78 -0
- package/esm2022/lib/components/core/avatar/avatar.module.mjs +33 -0
- package/esm2022/lib/components/core/badge/badge.directive.mjs +39 -0
- package/esm2022/lib/components/core/button/button.directive.mjs +86 -0
- package/esm2022/lib/components/core/callout/callout.component.mjs +57 -0
- package/esm2022/lib/components/core/card/card.component.mjs +59 -0
- package/esm2022/lib/components/core/carousel/carousel/carousel.component.mjs +84 -0
- package/esm2022/lib/components/core/carousel/carousel-item/carousel-item.component.mjs +19 -0
- package/esm2022/lib/components/core/carousel/carousel.module.mjs +18 -0
- package/esm2022/lib/components/core/chip/chip.component.mjs +136 -0
- package/esm2022/lib/components/core/collapse/collapse.component.mjs +104 -0
- package/esm2022/lib/components/core/dimmer/dimmer-buttons/dimmer-buttons.component.mjs +24 -0
- package/esm2022/lib/components/core/dimmer/dimmer-icon/dimmer-icon.component.mjs +11 -0
- package/esm2022/lib/components/core/dimmer/dimmer.component.mjs +55 -0
- package/esm2022/lib/components/core/dimmer/dimmer.module.mjs +19 -0
- package/esm2022/lib/components/core/dropdown/dropdown/dropdown.component.mjs +144 -0
- package/esm2022/lib/components/core/dropdown/dropdown-item/dropdown-item.component.mjs +61 -0
- package/esm2022/lib/components/core/dropdown/dropdown.module.mjs +18 -0
- package/esm2022/lib/components/core/forward/forward.directive.mjs +53 -0
- package/esm2022/lib/components/core/link/link.component.mjs +42 -0
- package/esm2022/lib/components/core/list/list/list.component.mjs +22 -0
- package/esm2022/lib/components/core/list/list-item/list-item.component.mjs +51 -0
- package/esm2022/lib/components/core/list/list.module.mjs +18 -0
- package/esm2022/lib/components/core/modal/modal.component.mjs +194 -0
- package/esm2022/lib/components/core/notifications/notifications.component.mjs +111 -0
- package/esm2022/lib/components/core/pagination/pagination.component.mjs +130 -0
- package/esm2022/lib/components/core/popover/popover.directive.mjs +176 -0
- package/esm2022/lib/components/core/progress-bar/progress-bar.component.mjs +34 -0
- package/esm2022/lib/components/core/progress-button/progress-button.component.mjs +25 -0
- package/esm2022/lib/components/core/spinner/spinner.component.mjs +30 -0
- package/esm2022/lib/components/core/steppers/steppers-container/steppers-container.component.mjs +116 -0
- package/esm2022/lib/components/core/steppers/steppers-item/steppers-item.component.mjs +20 -0
- package/esm2022/lib/components/core/steppers/steppers.module.mjs +18 -0
- package/esm2022/lib/components/core/tab/tab-container/tab-container.component.mjs +63 -0
- package/esm2022/lib/components/core/tab/tab-item/tab-item.component.mjs +39 -0
- package/esm2022/lib/components/core/tab/tab.module.mjs +18 -0
- package/esm2022/lib/components/core/table/sort/sort-header/sort-header.component.mjs +134 -0
- package/esm2022/lib/components/core/table/sort/sort.directive.mjs +123 -0
- package/esm2022/lib/components/core/table/table.component.mjs +45 -0
- package/esm2022/lib/components/core/table/table.module.mjs +19 -0
- package/esm2022/lib/components/core/tooltip/tooltip.directive.mjs +143 -0
- package/esm2022/lib/components/form/autocomplete/autocomplete.component.mjs +106 -0
- package/esm2022/lib/components/form/checkbox/checkbox.component.mjs +48 -0
- package/esm2022/lib/components/form/form.module.mjs +59 -0
- package/esm2022/lib/components/form/input/input.component.mjs +187 -0
- package/esm2022/lib/components/form/password-input/password-input.component.mjs +149 -0
- package/esm2022/lib/components/form/radio-button/radio-button.component.mjs +60 -0
- package/esm2022/lib/components/form/range/range.component.mjs +64 -0
- package/esm2022/lib/components/form/rating/rating.component.mjs +50 -0
- package/esm2022/lib/components/form/select/select.component.mjs +70 -0
- package/esm2022/lib/components/form/textarea/textarea.component.mjs +55 -0
- package/esm2022/lib/components/form/upload-drag-drop/upload-drag-drop.component.mjs +142 -0
- package/esm2022/lib/components/form/upload-file-list/upload-file-list.component.mjs +107 -0
- package/esm2022/lib/components/navigation/back-button/back-button.component.mjs +67 -0
- package/esm2022/lib/components/navigation/back-to-top/back-to-top.component.mjs +58 -0
- package/esm2022/lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component.mjs +51 -0
- package/esm2022/lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component.mjs +21 -0
- package/esm2022/lib/components/navigation/breadcrumbs/breadcrumbs.module.mjs +18 -0
- package/esm2022/lib/components/navigation/header/header.component.mjs +87 -0
- package/esm2022/lib/components/navigation/megamenu/megamenu.component.mjs +27 -0
- package/esm2022/lib/components/navigation/navbar/navbar/navbar.component.mjs +40 -0
- package/esm2022/lib/components/navigation/navbar/navbar-item/navbar-item.component.mjs +11 -0
- package/esm2022/lib/components/navigation/navbar/navbar.module.mjs +18 -0
- package/esm2022/lib/components/utils/error-page/error-page.component.mjs +74 -0
- package/esm2022/lib/components/utils/icon/icon.component.mjs +58 -0
- package/esm2022/lib/components/utils/language-switcher/language-switcher.component.mjs +50 -0
- package/esm2022/lib/design-angular-kit.module.mjs +213 -0
- package/esm2022/lib/enums/colors.enums.mjs +12 -0
- package/esm2022/lib/enums/sizes.enum.mjs +9 -0
- package/esm2022/lib/interfaces/core.mjs +16 -0
- package/esm2022/lib/interfaces/design-angular-kit-config.mjs +7 -0
- package/esm2022/lib/interfaces/form.mjs +2 -0
- package/esm2022/lib/interfaces/icon.mjs +165 -0
- package/esm2022/lib/interfaces/sortable-table.mjs +6 -0
- package/esm2022/lib/pipes/date-ago.pipe.mjs +56 -0
- package/esm2022/lib/pipes/duration.pipe.mjs +110 -0
- package/esm2022/lib/pipes/mark-matching-text.pipe.mjs +48 -0
- package/esm2022/lib/provide-design-angular-kit.mjs +61 -0
- package/esm2022/lib/services/notification/notification.service.mjs +120 -0
- package/esm2022/lib/utils/coercion.mjs +18 -0
- package/esm2022/lib/utils/date-utils.mjs +160 -0
- package/esm2022/lib/utils/file-utils.mjs +73 -0
- package/esm2022/lib/utils/regex.mjs +31 -0
- package/esm2022/lib/validators/it-validators.mjs +153 -0
- package/esm2022/public_api.mjs +99 -0
- package/fesm2022/design-angular-kit.mjs +5556 -0
- package/fesm2022/design-angular-kit.mjs.map +1 -0
- package/lib/abstracts/{abstract-form-component.d.ts → abstract-form.component.d.ts} +12 -14
- package/lib/abstracts/abstract.component.d.ts +18 -8
- package/lib/components/core/accordion/accordion.component.d.ts +11 -5
- package/lib/components/core/alert/alert.component.d.ts +15 -10
- package/lib/components/core/avatar/avatar-dropdown/avatar-dropdown.component.d.ts +29 -0
- package/lib/components/core/avatar/avatar-group/avatar-group.component.d.ts +13 -0
- package/lib/components/core/avatar/avatar.directive.d.ts +33 -0
- package/lib/components/core/avatar/avatar.module.d.ts +9 -0
- package/lib/components/core/badge/badge.directive.d.ts +14 -7
- package/lib/components/core/button/button.directive.d.ts +25 -15
- package/lib/components/core/callout/callout.component.d.ts +18 -20
- package/lib/components/core/card/card.component.d.ts +46 -18
- package/lib/components/core/carousel/carousel/carousel.component.d.ts +34 -15
- package/lib/components/core/carousel/carousel-item/carousel-item.component.d.ts +8 -3
- package/lib/components/core/carousel/carousel.module.d.ts +8 -0
- package/lib/components/core/chip/chip.component.d.ts +29 -15
- package/lib/components/core/collapse/collapse.component.d.ts +22 -15
- package/lib/components/core/dimmer/dimmer-buttons/dimmer-buttons.component.d.ts +3 -3
- package/lib/components/core/dimmer/dimmer-icon/dimmer-icon.component.d.ts +3 -3
- package/lib/components/core/dimmer/dimmer.component.d.ts +6 -6
- package/lib/components/core/dimmer/dimmer.module.d.ts +9 -0
- package/lib/components/core/dropdown/dropdown/dropdown.component.d.ts +30 -17
- package/lib/components/core/dropdown/dropdown-item/dropdown-item.component.d.ts +15 -12
- package/lib/components/core/dropdown/dropdown.module.d.ts +8 -0
- package/lib/components/core/forward/forward.directive.d.ts +3 -3
- package/lib/components/core/link/link.component.d.ts +14 -10
- package/lib/components/core/list/list/list.component.d.ts +20 -6
- package/lib/components/core/list/list-item/list-item.component.d.ts +23 -9
- package/lib/components/core/list/list.module.d.ts +8 -0
- package/lib/components/core/modal/modal.component.d.ts +89 -13
- package/lib/components/core/notifications/notifications.component.d.ts +9 -8
- package/lib/components/core/pagination/pagination.component.d.ts +71 -10
- package/lib/components/core/popover/popover.directive.d.ts +15 -14
- package/lib/components/core/progress-bar/progress-bar.component.d.ts +11 -8
- package/lib/components/core/progress-button/progress-button.component.d.ts +5 -6
- package/lib/components/core/spinner/spinner.component.d.ts +13 -10
- package/lib/components/core/steppers/steppers-container/steppers-container.component.d.ts +55 -27
- package/lib/components/core/steppers/steppers-item/steppers-item.component.d.ts +5 -4
- package/lib/components/core/steppers/steppers.module.d.ts +8 -0
- package/lib/components/core/tab/tab-container/tab-container.component.d.ts +15 -12
- package/lib/components/core/tab/tab-item/tab-item.component.d.ts +14 -10
- package/lib/components/core/tab/tab.module.d.ts +8 -0
- package/lib/components/core/table/sort/sort-header/sort-header.component.d.ts +72 -0
- package/lib/components/core/table/sort/sort.directive.d.ts +53 -0
- package/lib/components/core/table/table.component.d.ts +26 -20
- package/lib/components/core/table/table.module.d.ts +9 -0
- package/lib/components/core/tooltip/tooltip.directive.d.ts +12 -11
- package/lib/components/form/autocomplete/autocomplete.component.d.ts +55 -0
- package/lib/components/form/checkbox/checkbox.component.d.ts +23 -12
- package/lib/components/form/form.module.d.ts +17 -0
- package/lib/components/form/input/input.component.d.ts +42 -43
- package/lib/components/form/password-input/password-input.component.d.ts +35 -10
- package/lib/components/form/radio-button/radio-button.component.d.ts +20 -11
- package/lib/components/form/range/range.component.d.ts +42 -0
- package/lib/components/form/rating/rating.component.d.ts +24 -0
- package/lib/components/form/select/select.component.d.ts +12 -6
- package/lib/components/form/textarea/textarea.component.d.ts +15 -5
- package/lib/components/form/upload-drag-drop/upload-drag-drop.component.d.ts +18 -12
- package/lib/components/form/upload-file-list/upload-file-list.component.d.ts +14 -11
- package/lib/components/navigation/back-button/back-button.component.d.ts +8 -8
- package/lib/components/navigation/back-to-top/back-to-top.component.d.ts +15 -16
- package/lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component.d.ts +12 -14
- package/lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component.d.ts +9 -8
- package/lib/components/navigation/breadcrumbs/breadcrumbs.module.d.ts +8 -0
- package/lib/components/navigation/header/header.component.d.ts +28 -25
- package/lib/components/navigation/megamenu/megamenu.component.d.ts +22 -0
- package/lib/components/navigation/navbar/navbar/navbar.component.d.ts +16 -0
- package/lib/components/navigation/navbar/navbar-item/navbar-item.component.d.ts +5 -0
- package/lib/components/navigation/navbar/navbar.module.d.ts +8 -0
- package/lib/components/utils/error-page/error-page.component.d.ts +44 -0
- package/lib/components/utils/icon/icon.component.d.ts +25 -17
- package/lib/components/utils/language-switcher/language-switcher.component.d.ts +9 -5
- package/lib/design-angular-kit.module.d.ts +44 -7
- package/lib/enums/colors.enums.d.ts +10 -0
- package/lib/enums/sizes.enum.d.ts +7 -0
- package/lib/interfaces/core.d.ts +16 -15
- package/lib/interfaces/design-angular-kit-config.d.ts +30 -0
- package/lib/interfaces/form.d.ts +9 -9
- package/lib/interfaces/icon.d.ts +4 -3
- package/lib/interfaces/sortable-table.d.ts +33 -0
- package/lib/pipes/date-ago.pipe.d.ts +17 -0
- package/lib/pipes/duration.pipe.d.ts +35 -0
- package/lib/pipes/mark-matching-text.pipe.d.ts +15 -7
- package/lib/provide-design-angular-kit.d.ts +7 -0
- package/lib/services/{notifications/notifications.service.d.ts → notification/notification.service.d.ts} +3 -3
- package/lib/utils/coercion.d.ts +14 -0
- package/lib/utils/date-utils.d.ts +78 -0
- package/lib/utils/file-utils.d.ts +1 -1
- package/lib/utils/regex.d.ts +5 -0
- package/lib/validators/it-validators.d.ts +9 -2
- package/package.json +17 -22
- package/public_api.d.ts +31 -4
- package/esm2020/lib/abstracts/abstract-form-component.mjs +0 -174
- package/esm2020/lib/abstracts/abstract.component.mjs +0 -27
- package/esm2020/lib/components/core/accordion/accordion.component.mjs +0 -31
- package/esm2020/lib/components/core/alert/alert.component.mjs +0 -69
- package/esm2020/lib/components/core/badge/badge.directive.mjs +0 -34
- package/esm2020/lib/components/core/button/button.directive.mjs +0 -80
- package/esm2020/lib/components/core/callout/callout.component.mjs +0 -84
- package/esm2020/lib/components/core/card/card.component.mjs +0 -58
- package/esm2020/lib/components/core/carousel/carousel/carousel.component.mjs +0 -66
- package/esm2020/lib/components/core/carousel/carousel-item/carousel-item.component.mjs +0 -14
- package/esm2020/lib/components/core/chip/chip.component.mjs +0 -89
- package/esm2020/lib/components/core/collapse/collapse.component.mjs +0 -101
- package/esm2020/lib/components/core/dimmer/dimmer-buttons/dimmer-buttons.component.mjs +0 -24
- package/esm2020/lib/components/core/dimmer/dimmer-icon/dimmer-icon.component.mjs +0 -11
- package/esm2020/lib/components/core/dimmer/dimmer.component.mjs +0 -59
- package/esm2020/lib/components/core/dropdown/dropdown/dropdown.component.mjs +0 -130
- package/esm2020/lib/components/core/dropdown/dropdown-item/dropdown-item.component.mjs +0 -68
- package/esm2020/lib/components/core/forward/forward.directive.mjs +0 -51
- package/esm2020/lib/components/core/link/link.component.mjs +0 -40
- package/esm2020/lib/components/core/list/list/list.component.mjs +0 -13
- package/esm2020/lib/components/core/list/list-item/list-item.component.mjs +0 -36
- package/esm2020/lib/components/core/modal/modal.component.mjs +0 -98
- package/esm2020/lib/components/core/notifications/notifications.component.mjs +0 -110
- package/esm2020/lib/components/core/pagination/pagination.component.mjs +0 -51
- package/esm2020/lib/components/core/popover/popover.directive.mjs +0 -179
- package/esm2020/lib/components/core/progress-bar/progress-bar.component.mjs +0 -34
- package/esm2020/lib/components/core/progress-button/progress-button.component.mjs +0 -27
- package/esm2020/lib/components/core/spinner/spinner.component.mjs +0 -35
- package/esm2020/lib/components/core/steppers/steppers-container/steppers-container.component.mjs +0 -119
- package/esm2020/lib/components/core/steppers/steppers-item/steppers-item.component.mjs +0 -18
- package/esm2020/lib/components/core/tab/tab-container/tab-container.component.mjs +0 -59
- package/esm2020/lib/components/core/tab/tab-item/tab-item.component.mjs +0 -36
- package/esm2020/lib/components/core/table/table.component.mjs +0 -57
- package/esm2020/lib/components/core/tooltip/tooltip.directive.mjs +0 -143
- package/esm2020/lib/components/form/checkbox/checkbox.component.mjs +0 -40
- package/esm2020/lib/components/form/input/input.component.mjs +0 -222
- package/esm2020/lib/components/form/password-input/password-input.component.mjs +0 -112
- package/esm2020/lib/components/form/radio-button/radio-button.component.mjs +0 -53
- package/esm2020/lib/components/form/select/select.component.mjs +0 -62
- package/esm2020/lib/components/form/textarea/textarea.component.mjs +0 -46
- package/esm2020/lib/components/form/upload-drag-drop/upload-drag-drop.component.mjs +0 -137
- package/esm2020/lib/components/form/upload-file-list/upload-file-list.component.mjs +0 -104
- package/esm2020/lib/components/navigation/back-button/back-button.component.mjs +0 -69
- package/esm2020/lib/components/navigation/back-to-top/back-to-top.component.mjs +0 -74
- package/esm2020/lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component.mjs +0 -45
- package/esm2020/lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component.mjs +0 -23
- package/esm2020/lib/components/navigation/header/header.component.mjs +0 -63
- package/esm2020/lib/components/utils/icon/icon.component.mjs +0 -54
- package/esm2020/lib/components/utils/language-switcher/language-switcher.component.mjs +0 -39
- package/esm2020/lib/components/utils/not-found-page/not-found-page.component.mjs +0 -13
- package/esm2020/lib/design-angular-kit.module.mjs +0 -56
- package/esm2020/lib/interfaces/core.mjs +0 -16
- package/esm2020/lib/interfaces/form.mjs +0 -2
- package/esm2020/lib/interfaces/icon.mjs +0 -2
- package/esm2020/lib/modules/components.module.mjs +0 -257
- package/esm2020/lib/pipes/mark-matching-text.pipe.mjs +0 -36
- package/esm2020/lib/services/notifications/notifications.service.mjs +0 -120
- package/esm2020/lib/utils/boolean-input.mjs +0 -15
- package/esm2020/lib/utils/file-utils.mjs +0 -73
- package/esm2020/lib/utils/regex.mjs +0 -26
- package/esm2020/lib/validators/it-validators.mjs +0 -134
- package/esm2020/public_api.mjs +0 -70
- package/fesm2015/design-angular-kit.mjs +0 -3850
- package/fesm2015/design-angular-kit.mjs.map +0 -1
- package/fesm2020/design-angular-kit.mjs +0 -3797
- package/fesm2020/design-angular-kit.mjs.map +0 -1
- package/lib/components/utils/not-found-page/not-found-page.component.d.ts +0 -5
- package/lib/modules/components.module.d.ts +0 -61
- package/lib/utils/boolean-input.d.ts +0 -11
- /package/{esm2020 → esm2022}/design-angular-kit.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/interfaces/utils.mjs +0 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
3
|
+
import { inputToBoolean } from '../../../utils/coercion';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@ngx-translate/core";
|
|
6
|
+
export class ItSpinnerComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
/**
|
|
9
|
+
* The spinner is active
|
|
10
|
+
* @default true
|
|
11
|
+
*/
|
|
12
|
+
this.active = true;
|
|
13
|
+
}
|
|
14
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItSpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
15
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: ItSpinnerComponent, isStandalone: true, selector: "it-spinner", inputs: { active: ["active", "active", inputToBoolean], small: ["small", "small", inputToBoolean], double: ["double", "double", inputToBoolean] }, ngImport: i0, template: "<div class=\"progress-spinner\" [class.progress-spinner-double]=\"double\" [class.progress-spinner-active]=\"active\" [class.size-sm]=\"small\">\n @if (double) {\n <div class=\"progress-spinner-inner\"></div>\n <div class=\"progress-spinner-inner\"></div>\n }\n <span class=\"visually-hidden\">{{ 'it.core.loading' | translate }}...</span>\n</div>\n", dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
16
|
+
}
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItSpinnerComponent, decorators: [{
|
|
18
|
+
type: Component,
|
|
19
|
+
args: [{ standalone: true, selector: 'it-spinner', changeDetection: ChangeDetectionStrategy.OnPush, imports: [TranslateModule], template: "<div class=\"progress-spinner\" [class.progress-spinner-double]=\"double\" [class.progress-spinner-active]=\"active\" [class.size-sm]=\"small\">\n @if (double) {\n <div class=\"progress-spinner-inner\"></div>\n <div class=\"progress-spinner-inner\"></div>\n }\n <span class=\"visually-hidden\">{{ 'it.core.loading' | translate }}...</span>\n</div>\n" }]
|
|
20
|
+
}], propDecorators: { active: [{
|
|
21
|
+
type: Input,
|
|
22
|
+
args: [{ transform: inputToBoolean }]
|
|
23
|
+
}], small: [{
|
|
24
|
+
type: Input,
|
|
25
|
+
args: [{ transform: inputToBoolean }]
|
|
26
|
+
}], double: [{
|
|
27
|
+
type: Input,
|
|
28
|
+
args: [{ transform: inputToBoolean }]
|
|
29
|
+
}] } });
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvc3Bpbm5lci9zcGlubmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9zcGlubmVyL3NwaW5uZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBU3pELE1BQU0sT0FBTyxrQkFBa0I7SUFQL0I7UUFRRTs7O1dBR0c7UUFDbUMsV0FBTSxHQUFZLElBQUksQ0FBQztLQWE5RDs4R0FsQlksa0JBQWtCO2tHQUFsQixrQkFBa0IscUZBS1QsY0FBYyw2QkFNZCxjQUFjLGdDQU1kLGNBQWMsNkJDN0JwQyx3V0FPQSwyQ0RHWSxlQUFlOzsyRkFFZCxrQkFBa0I7a0JBUDlCLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLFlBQVksbUJBRUwsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLGVBQWUsQ0FBQzs4QkFPWSxNQUFNO3NCQUEzQyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRTtnQkFNRSxLQUFLO3NCQUExQyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRTtnQkFNRSxNQUFNO3NCQUEzQyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgaW5wdXRUb0Jvb2xlYW4gfSBmcm9tICcuLi8uLi8uLi91dGlscy9jb2VyY2lvbic7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ2l0LXNwaW5uZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc3Bpbm5lci5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbVHJhbnNsYXRlTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgSXRTcGlubmVyQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZSBzcGlubmVyIGlzIGFjdGl2ZVxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIGFjdGl2ZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFNob3cgYSBzbWFsbCBzcGlubmVyXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIHNtYWxsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2hvdyB0aGUgZG91YmxlIGFuaW1hdGlvblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBpbnB1dFRvQm9vbGVhbiB9KSBkb3VibGU/OiBib29sZWFuO1xufVxuIiwiPGRpdiBjbGFzcz1cInByb2dyZXNzLXNwaW5uZXJcIiBbY2xhc3MucHJvZ3Jlc3Mtc3Bpbm5lci1kb3VibGVdPVwiZG91YmxlXCIgW2NsYXNzLnByb2dyZXNzLXNwaW5uZXItYWN0aXZlXT1cImFjdGl2ZVwiIFtjbGFzcy5zaXplLXNtXT1cInNtYWxsXCI+XG4gIEBpZiAoZG91YmxlKSB7XG4gICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLXNwaW5uZXItaW5uZXJcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3Mtc3Bpbm5lci1pbm5lclwiPjwvZGl2PlxuICB9XG4gIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+e3sgJ2l0LmNvcmUubG9hZGluZycgfCB0cmFuc2xhdGUgfX0uLi48L3NwYW4+XG48L2Rpdj5cbiJdfQ==
|
package/esm2022/lib/components/core/steppers/steppers-container/steppers-container.component.mjs
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
|
+
import { ItSteppersItemComponent } from '../steppers-item/steppers-item.component';
|
|
3
|
+
import { startWith } from 'rxjs';
|
|
4
|
+
import { NgTemplateOutlet } from '@angular/common';
|
|
5
|
+
import { ItIconComponent } from '../../../utils/icon/icon.component';
|
|
6
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
7
|
+
import { ItButtonDirective } from '../../button/button.directive';
|
|
8
|
+
import { ItProgressBarComponent } from '../../progress-bar/progress-bar.component';
|
|
9
|
+
import { ItProgressButtonComponent } from '../../progress-button/progress-button.component';
|
|
10
|
+
import { inputToBoolean } from '../../../../utils/coercion';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "@ngx-translate/core";
|
|
13
|
+
export class ItSteppersContainerComponent {
|
|
14
|
+
constructor(_changeDetectorRef) {
|
|
15
|
+
this._changeDetectorRef = _changeDetectorRef;
|
|
16
|
+
/**
|
|
17
|
+
* Show the stepper header
|
|
18
|
+
* @default true
|
|
19
|
+
*/
|
|
20
|
+
this.showHeader = true;
|
|
21
|
+
/**
|
|
22
|
+
* Show the back button
|
|
23
|
+
* @default true
|
|
24
|
+
*/
|
|
25
|
+
this.showBackButton = true;
|
|
26
|
+
/**
|
|
27
|
+
* Show the forward button
|
|
28
|
+
* @default true
|
|
29
|
+
*/
|
|
30
|
+
this.showForwardButton = true;
|
|
31
|
+
this.backClick = new EventEmitter();
|
|
32
|
+
this.forwardClick = new EventEmitter();
|
|
33
|
+
this.confirmClick = new EventEmitter();
|
|
34
|
+
this.saveClick = new EventEmitter();
|
|
35
|
+
}
|
|
36
|
+
ngAfterViewInit() {
|
|
37
|
+
this.steps?.changes
|
|
38
|
+
.pipe(
|
|
39
|
+
// When steps changes (dynamic add/remove)
|
|
40
|
+
startWith(undefined))
|
|
41
|
+
.subscribe(() => {
|
|
42
|
+
this.stepsSubscriptions?.forEach(sub => sub.unsubscribe()); // Remove old subscriptions
|
|
43
|
+
this.stepsSubscriptions = this.steps?.map(step => step.valueChanges.subscribe(() => {
|
|
44
|
+
this._changeDetectorRef.detectChanges(); // DetectChanges when step attributes changes
|
|
45
|
+
}));
|
|
46
|
+
this._changeDetectorRef.detectChanges(); // Force update html render
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
ngOnDestroy() {
|
|
50
|
+
this.stepsSubscriptions?.forEach(step => step.unsubscribe());
|
|
51
|
+
}
|
|
52
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItSteppersContainerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
53
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: ItSteppersContainerComponent, isStandalone: true, selector: "it-steppers-container", inputs: { activeStep: "activeStep", showHeader: ["showHeader", "showHeader", inputToBoolean], dark: ["dark", "dark", inputToBoolean], steppersNumber: ["steppersNumber", "steppersNumber", inputToBoolean], progressStyle: "progressStyle", progressColor: "progressColor", showBackButton: ["showBackButton", "showBackButton", inputToBoolean], disableBackButton: ["disableBackButton", "disableBackButton", inputToBoolean], showForwardButton: ["showForwardButton", "showForwardButton", inputToBoolean], disableForwardButton: ["disableForwardButton", "disableForwardButton", inputToBoolean], showConfirmButton: ["showConfirmButton", "showConfirmButton", inputToBoolean], disableConfirmButton: ["disableConfirmButton", "disableConfirmButton", inputToBoolean], confirmLoading: ["confirmLoading", "confirmLoading", inputToBoolean], showSaveButton: ["showSaveButton", "showSaveButton", inputToBoolean], disableSaveButton: ["disableSaveButton", "disableSaveButton", inputToBoolean], saveLoading: ["saveLoading", "saveLoading", inputToBoolean] }, outputs: { backClick: "backClick", forwardClick: "forwardClick", confirmClick: "confirmClick", saveClick: "saveClick" }, queries: [{ propertyName: "steps", predicate: ItSteppersItemComponent }], ngImport: i0, template: "<div class=\"steppers\" [class.bg-dark]=\"dark\">\n @if (showHeader) {\n <div class=\"steppers-header\">\n @if (steps) {\n <ul>\n @for (step of steps; track step.id; let i = $index) {\n <li [class.confirmed]=\"i < activeStep\" [class.active]=\"i === activeStep\" [class.no-line]=\"i === activeStep && steppersNumber\">\n @if (step.icon && !steppersNumber) {\n <it-icon [name]=\"step.icon\"></it-icon>\n }\n @if (steppersNumber) {\n <span class=\"steppers-number\">\n @if (i < activeStep) {\n <ng-container *ngTemplateOutlet=\"checkIcon\"></ng-container>\n } @else {\n <span class=\"visually-hidden\">{{ 'it.core.step' | translate }} </span>{{ i + 1 }}\n }\n </span>\n }\n {{ step.label }}\n @if (i < activeStep && !steppersNumber) {\n <ng-container *ngTemplateOutlet=\"checkIcon\"></ng-container>\n }\n @if (i === activeStep) {\n <span class=\"visually-hidden\">{{ 'it.core.active' | translate }}</span>\n }\n </li>\n }\n </ul>\n }\n @if (steps) {\n <span class=\"steppers-index\" aria-hidden=\"true\">\n @if (!steppersNumber) {\n {{ activeStep + 1 + '/' + steps.length }}\n } @else {\n @for (step of steps; track step.id; let i = $index) {\n <span [class.active]=\"i === activeStep\">{{ i + 1 }}</span>\n }\n }\n </span>\n }\n </div>\n }\n\n @if (steps?.get(activeStep); as step) {\n <div class=\"steppers-content\" aria-live=\"polite\">\n <ng-container *ngTemplateOutlet=\"step.htmlContent\"></ng-container>\n </div>\n }\n\n @if (showBackButton || showSaveButton || showForwardButton || showConfirmButton || !!progressStyle) {\n <nav class=\"steppers-nav\">\n @if (showBackButton) {\n <button\n type=\"button\"\n itButton=\"outline-primary\"\n size=\"sm\"\n class=\"steppers-btn-prev\"\n [disabled]=\"disableBackButton\"\n (click)=\"backClick.emit(activeStep)\">\n <it-icon name=\"chevron-left\" color=\"primary\"></it-icon>\n {{ 'it.core.back' | translate }}\n </button>\n }\n @if (!!progressStyle && steps) {\n @if (progressStyle === 'dots') {\n <ul class=\"steppers-dots\">\n @for (step of steps; track step; let i = $index) {\n <li [class.done]=\"i < activeStep\">\n <span class=\"visually-hidden\">\n {{ 'it.core.step-of' | translate: { current: activeStep + 1, available: steps?.length } }}\n {{ i < activeStep ? '- ' + ('it.core.confirmed' | translate) : '' }}\n </span>\n </li>\n }\n </ul>\n } @else {\n <div class=\"steppers-progress\">\n <it-progress-bar [color]=\"progressColor\" [value]=\"(activeStep / (steps?.length || 1)) * 100\"></it-progress-bar>\n </div>\n }\n }\n @if (showSaveButton) {\n <button\n type=\"button\"\n itButton=\"primary\"\n size=\"sm\"\n class=\"steppers-btn-save\"\n [progress]=\"saveLoading\"\n [disabled]=\"saveLoading || disableSaveButton\"\n (click)=\"saveClick.emit(activeStep)\">\n {{ 'it.general.save' | translate }}\n </button>\n }\n @if (showForwardButton) {\n <button\n type=\"button\"\n itButton=\"outline-primary\"\n size=\"sm\"\n class=\"steppers-btn-next\"\n [disabled]=\"disableForwardButton\"\n (click)=\"forwardClick.emit(activeStep)\">\n {{ 'it.core.forward' | translate }}\n <it-icon name=\"chevron-right\" color=\"primary\"></it-icon>\n </button>\n }\n @if (showConfirmButton) {\n <button\n type=\"button\"\n itButton=\"primary\"\n size=\"sm\"\n class=\"steppers-btn-confirm d-lg-block\"\n [progress]=\"confirmLoading\"\n [disabled]=\"confirmLoading || disableConfirmButton\"\n (click)=\"confirmClick.emit(activeStep)\">\n {{ 'it.core.confirm' | translate }}\n </button>\n }\n </nav>\n }\n</div>\n\n<ng-template #checkIcon>\n <it-icon name=\"check\" class=\"steppers-success\"></it-icon>\n <span class=\"visually-hidden\">{{ 'it.core.confirmed' | translate }}</span>\n</ng-template>\n", dependencies: [{ kind: "component", type: ItIconComponent, selector: "it-icon", inputs: ["name", "size", "color", "padded", "svgClass", "labelWaria"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: ItButtonDirective, selector: "[itButton]", inputs: ["itButton", "size", "block", "disabled"], exportAs: ["itButton"] }, { kind: "component", type: ItProgressBarComponent, selector: "it-progress-bar", inputs: ["value", "showLabel", "indeterminate", "color"] }, { kind: "component", type: ItProgressButtonComponent, selector: "button[itButton][progress]", inputs: ["progress", "progressColor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
54
|
+
}
|
|
55
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItSteppersContainerComponent, decorators: [{
|
|
56
|
+
type: Component,
|
|
57
|
+
args: [{ standalone: true, selector: 'it-steppers-container', changeDetection: ChangeDetectionStrategy.OnPush, imports: [ItIconComponent, NgTemplateOutlet, TranslateModule, ItButtonDirective, ItProgressBarComponent, ItProgressButtonComponent], template: "<div class=\"steppers\" [class.bg-dark]=\"dark\">\n @if (showHeader) {\n <div class=\"steppers-header\">\n @if (steps) {\n <ul>\n @for (step of steps; track step.id; let i = $index) {\n <li [class.confirmed]=\"i < activeStep\" [class.active]=\"i === activeStep\" [class.no-line]=\"i === activeStep && steppersNumber\">\n @if (step.icon && !steppersNumber) {\n <it-icon [name]=\"step.icon\"></it-icon>\n }\n @if (steppersNumber) {\n <span class=\"steppers-number\">\n @if (i < activeStep) {\n <ng-container *ngTemplateOutlet=\"checkIcon\"></ng-container>\n } @else {\n <span class=\"visually-hidden\">{{ 'it.core.step' | translate }} </span>{{ i + 1 }}\n }\n </span>\n }\n {{ step.label }}\n @if (i < activeStep && !steppersNumber) {\n <ng-container *ngTemplateOutlet=\"checkIcon\"></ng-container>\n }\n @if (i === activeStep) {\n <span class=\"visually-hidden\">{{ 'it.core.active' | translate }}</span>\n }\n </li>\n }\n </ul>\n }\n @if (steps) {\n <span class=\"steppers-index\" aria-hidden=\"true\">\n @if (!steppersNumber) {\n {{ activeStep + 1 + '/' + steps.length }}\n } @else {\n @for (step of steps; track step.id; let i = $index) {\n <span [class.active]=\"i === activeStep\">{{ i + 1 }}</span>\n }\n }\n </span>\n }\n </div>\n }\n\n @if (steps?.get(activeStep); as step) {\n <div class=\"steppers-content\" aria-live=\"polite\">\n <ng-container *ngTemplateOutlet=\"step.htmlContent\"></ng-container>\n </div>\n }\n\n @if (showBackButton || showSaveButton || showForwardButton || showConfirmButton || !!progressStyle) {\n <nav class=\"steppers-nav\">\n @if (showBackButton) {\n <button\n type=\"button\"\n itButton=\"outline-primary\"\n size=\"sm\"\n class=\"steppers-btn-prev\"\n [disabled]=\"disableBackButton\"\n (click)=\"backClick.emit(activeStep)\">\n <it-icon name=\"chevron-left\" color=\"primary\"></it-icon>\n {{ 'it.core.back' | translate }}\n </button>\n }\n @if (!!progressStyle && steps) {\n @if (progressStyle === 'dots') {\n <ul class=\"steppers-dots\">\n @for (step of steps; track step; let i = $index) {\n <li [class.done]=\"i < activeStep\">\n <span class=\"visually-hidden\">\n {{ 'it.core.step-of' | translate: { current: activeStep + 1, available: steps?.length } }}\n {{ i < activeStep ? '- ' + ('it.core.confirmed' | translate) : '' }}\n </span>\n </li>\n }\n </ul>\n } @else {\n <div class=\"steppers-progress\">\n <it-progress-bar [color]=\"progressColor\" [value]=\"(activeStep / (steps?.length || 1)) * 100\"></it-progress-bar>\n </div>\n }\n }\n @if (showSaveButton) {\n <button\n type=\"button\"\n itButton=\"primary\"\n size=\"sm\"\n class=\"steppers-btn-save\"\n [progress]=\"saveLoading\"\n [disabled]=\"saveLoading || disableSaveButton\"\n (click)=\"saveClick.emit(activeStep)\">\n {{ 'it.general.save' | translate }}\n </button>\n }\n @if (showForwardButton) {\n <button\n type=\"button\"\n itButton=\"outline-primary\"\n size=\"sm\"\n class=\"steppers-btn-next\"\n [disabled]=\"disableForwardButton\"\n (click)=\"forwardClick.emit(activeStep)\">\n {{ 'it.core.forward' | translate }}\n <it-icon name=\"chevron-right\" color=\"primary\"></it-icon>\n </button>\n }\n @if (showConfirmButton) {\n <button\n type=\"button\"\n itButton=\"primary\"\n size=\"sm\"\n class=\"steppers-btn-confirm d-lg-block\"\n [progress]=\"confirmLoading\"\n [disabled]=\"confirmLoading || disableConfirmButton\"\n (click)=\"confirmClick.emit(activeStep)\">\n {{ 'it.core.confirm' | translate }}\n </button>\n }\n </nav>\n }\n</div>\n\n<ng-template #checkIcon>\n <it-icon name=\"check\" class=\"steppers-success\"></it-icon>\n <span class=\"visually-hidden\">{{ 'it.core.confirmed' | translate }}</span>\n</ng-template>\n" }]
|
|
58
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { activeStep: [{
|
|
59
|
+
type: Input,
|
|
60
|
+
args: [{ required: true }]
|
|
61
|
+
}], showHeader: [{
|
|
62
|
+
type: Input,
|
|
63
|
+
args: [{ transform: inputToBoolean }]
|
|
64
|
+
}], dark: [{
|
|
65
|
+
type: Input,
|
|
66
|
+
args: [{ transform: inputToBoolean }]
|
|
67
|
+
}], steppersNumber: [{
|
|
68
|
+
type: Input,
|
|
69
|
+
args: [{ transform: inputToBoolean }]
|
|
70
|
+
}], progressStyle: [{
|
|
71
|
+
type: Input
|
|
72
|
+
}], progressColor: [{
|
|
73
|
+
type: Input
|
|
74
|
+
}], showBackButton: [{
|
|
75
|
+
type: Input,
|
|
76
|
+
args: [{ transform: inputToBoolean }]
|
|
77
|
+
}], disableBackButton: [{
|
|
78
|
+
type: Input,
|
|
79
|
+
args: [{ transform: inputToBoolean }]
|
|
80
|
+
}], showForwardButton: [{
|
|
81
|
+
type: Input,
|
|
82
|
+
args: [{ transform: inputToBoolean }]
|
|
83
|
+
}], disableForwardButton: [{
|
|
84
|
+
type: Input,
|
|
85
|
+
args: [{ transform: inputToBoolean }]
|
|
86
|
+
}], showConfirmButton: [{
|
|
87
|
+
type: Input,
|
|
88
|
+
args: [{ transform: inputToBoolean }]
|
|
89
|
+
}], disableConfirmButton: [{
|
|
90
|
+
type: Input,
|
|
91
|
+
args: [{ transform: inputToBoolean }]
|
|
92
|
+
}], confirmLoading: [{
|
|
93
|
+
type: Input,
|
|
94
|
+
args: [{ transform: inputToBoolean }]
|
|
95
|
+
}], showSaveButton: [{
|
|
96
|
+
type: Input,
|
|
97
|
+
args: [{ transform: inputToBoolean }]
|
|
98
|
+
}], disableSaveButton: [{
|
|
99
|
+
type: Input,
|
|
100
|
+
args: [{ transform: inputToBoolean }]
|
|
101
|
+
}], saveLoading: [{
|
|
102
|
+
type: Input,
|
|
103
|
+
args: [{ transform: inputToBoolean }]
|
|
104
|
+
}], steps: [{
|
|
105
|
+
type: ContentChildren,
|
|
106
|
+
args: [ItSteppersItemComponent]
|
|
107
|
+
}], backClick: [{
|
|
108
|
+
type: Output
|
|
109
|
+
}], forwardClick: [{
|
|
110
|
+
type: Output
|
|
111
|
+
}], confirmClick: [{
|
|
112
|
+
type: Output
|
|
113
|
+
}], saveClick: [{
|
|
114
|
+
type: Output
|
|
115
|
+
}] } });
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlcnMtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9zdGVwcGVycy9zdGVwcGVycy1jb250YWluZXIvc3RlcHBlcnMtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9zdGVwcGVycy9zdGVwcGVycy1jb250YWluZXIvc3RlcHBlcnMtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULGVBQWUsRUFDZixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUVuRixPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBUzVELE1BQU0sT0FBTyw0QkFBNEI7SUEr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QkFBdEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBTUUsb0JBQW9CO3NCQUF6RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRTtnQkFNRSxpQkFBaUI7c0JBQXRELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFO2dCQU1FLG9CQUFvQjtzQkFBekQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBS0UsY0FBYztzQkFBbkQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBTUUsY0FBYztzQkFBbkQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBTUUsaUJBQWlCO3NCQUF0RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRTtnQkFLRSxXQUFXO3NCQUFoRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRTtnQkFLTSxLQUFLO3NCQUE5QyxlQUFlO3VCQUFDLHVCQUF1QjtnQkFNOUIsU0FBUztzQkFBbEIsTUFBTTtnQkFNRyxZQUFZO3NCQUFyQixNQUFNO2dCQU1HLFlBQVk7c0JBQXJCLE1BQU07Z0JBTUcsU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSXRTdGVwcGVyc0l0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9zdGVwcGVycy1pdGVtL3N0ZXBwZXJzLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IFByb2dyZXNzQmFyQ29sb3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzL2NvcmUnO1xuaW1wb3J0IHsgc3RhcnRXaXRoLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSXRJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEl0QnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vYnV0dG9uL2J1dHRvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSXRQcm9ncmVzc0JhckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3Byb2dyZXNzLWJhci9wcm9ncmVzcy1iYXIuY29tcG9uZW50JztcbmltcG9ydCB7IEl0UHJvZ3Jlc3NCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9wcm9ncmVzcy1idXR0b24vcHJvZ3Jlc3MtYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBpbnB1dFRvQm9vbGVhbiB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL2NvZXJjaW9uJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnaXQtc3RlcHBlcnMtY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0ZXBwZXJzLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbSXRJY29uQ29tcG9uZW50LCBOZ1RlbXBsYXRlT3V0bGV0LCBUcmFuc2xhdGVNb2R1bGUsIEl0QnV0dG9uRGlyZWN0aXZlLCBJdFByb2dyZXNzQmFyQ29tcG9uZW50LCBJdFByb2dyZXNzQnV0dG9uQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgSXRTdGVwcGVyc0NvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBUaGUgYWN0aXZlIHN0ZXAgaW5kZXhcbiAgICogQHBhcmFtIGluZGV4IHRoZSBzdGVwIGluZGV4XG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBhY3RpdmVTdGVwITogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTaG93IHRoZSBzdGVwcGVyIGhlYWRlclxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIHNob3dIZWFkZXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBEYXJrIHN0eWxlXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIGRhcms/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbGFiZWxzIHByZXNlbnQgaW4gdGhlIGhlYWRlciBzdGVwcyBjYW4gYmUgYW50aWNpcGF0ZWQgYnkgdGhlIHJlbGF0aXZlIG9yZGluYWwgbnVtYmVyLlxuICAgKiBAZWZ1YWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIHN0ZXBwZXJzTnVtYmVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHByb2dyZXNzIHN0eWxlXG4gICAqIC08Yj5wcm9ncmVzczwvYj46IFNob3cgcHJvZ3Jlc3MgYmFyIC0gWW91IGNhbiBjaGFuZ2UgdGhlIGNvbG9yIHdpdGggdGhlIGBwcm9ncmVzc0NvbG9yYCBhdHRyaWJ1dGVcbiAgICogLTxiPmRvdHM8L2I+OiBTaG93IHByb2dyZXNzIGRvdHNcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIC0gZG9uJ3Qgc2hvdyBwcm9ncmVzc1xuICAgKi9cbiAgQElucHV0KCkgcHJvZ3Jlc3NTdHlsZTogJ3Byb2dyZXNzJyB8ICdkb3RzJyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQ3VzdG9taXplIHByb2dyZXNzIGNvbG9yXG4gICAqL1xuICBASW5wdXQoKSBwcm9ncmVzc0NvbG9yOiBQcm9ncmVzc0JhckNvbG9yIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBTaG93IHRoZSBiYWNrIGJ1dHRvblxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIHNob3dCYWNrQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogRGlzYWJsZSB0aGUgYmFjayBidXR0b25cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogaW5wdXRUb0Jvb2xlYW4gfSkgZGlzYWJsZUJhY2tCdXR0b24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTaG93IHRoZSBmb3J3YXJkIGJ1dHRvblxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIHNob3dGb3J3YXJkQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogRGlzYWJsZSB0aGUgZm9yd2FyZCBidXR0b25cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogaW5wdXRUb0Jvb2xlYW4gfSkgZGlzYWJsZUZvcndhcmRCdXR0b24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTaG93IHRoZSBjb25maXJtIGJ1dHRvblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBpbnB1dFRvQm9vbGVhbiB9KSBzaG93Q29uZmlybUJ1dHRvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIGNvbmZpcm0gYnV0dG9uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIGRpc2FibGVDb25maXJtQnV0dG9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2hvdyB0aGUgY29uZmlybSBidXR0b24gYXMgaW5kZXRlcm1pbmF0ZSBwcm9ncmVzcyBidXR0b25cbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogaW5wdXRUb0Jvb2xlYW4gfSkgY29uZmlybUxvYWRpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTaG93IHRoZSBzYXZlIGJ1dHRvblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBpbnB1dFRvQm9vbGVhbiB9KSBzaG93U2F2ZUJ1dHRvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIHNhdmUgYnV0dG9uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIGRpc2FibGVTYXZlQnV0dG9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2hvdyB0aGUgc2F2ZSBidXR0b24gYXMgaW5kZXRlcm1pbmF0ZSBwcm9ncmVzcyBidXR0b25cbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogaW5wdXRUb0Jvb2xlYW4gfSkgc2F2ZUxvYWRpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RlcHBlciBpdGVtc1xuICAgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihJdFN0ZXBwZXJzSXRlbUNvbXBvbmVudCkgc3RlcHM/OiBRdWVyeUxpc3Q8SXRTdGVwcGVyc0l0ZW1Db21wb25lbnQ+O1xuXG4gIC8qKlxuICAgKiBPbiBiYWNrIGJ1dHRvbiBjbGlja1xuICAgKiBAZXZlbnQgYWN0aXZlU3RlcCB0aGUgY3VycmVudCBzdGVwIGluZGV4XG4gICAqL1xuICBAT3V0cHV0KCkgYmFja0NsaWNrOiBFdmVudEVtaXR0ZXI8bnVtYmVyPjtcblxuICAvKipcbiAgICogT24gZm9yd2FyZCBidXR0b24gY2xpY2tcbiAgICogQGV2ZW50IGFjdGl2ZVN0ZXAgdGhlIGN1cnJlbnQgc3RlcCBpbmRleFxuICAgKi9cbiAgQE91dHB1dCgpIGZvcndhcmRDbGljazogRXZlbnRFbWl0dGVyPG51bWJlcj47XG5cbiAgLyoqXG4gICAqIE9uIGNvbmZpcm0gYnV0dG9uIGNsaWNrXG4gICAqIEBldmVudCBhY3RpdmVTdGVwIHRoZSBjdXJyZW50IHN0ZXAgaW5kZXhcbiAgICovXG4gIEBPdXRwdXQoKSBjb25maXJtQ2xpY2s6IEV2ZW50RW1pdHRlcjxudW1iZXI+O1xuXG4gIC8qKlxuICAgKiBPbiBzYXZlIGJ1dHRvbiBjbGlja1xuICAgKiBAZXZlbnQgYWN0aXZlU3RlcCB0aGUgY3VycmVudCBzdGVwIGluZGV4XG4gICAqL1xuICBAT3V0cHV0KCkgc2F2ZUNsaWNrOiBFdmVudEVtaXR0ZXI8bnVtYmVyPjtcblxuICBwcml2YXRlIHN0ZXBzU3Vic2NyaXB0aW9ucz86IEFycmF5PFN1YnNjcmlwdGlvbj47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy5iYWNrQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgICB0aGlzLmZvcndhcmRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICAgIHRoaXMuY29uZmlybUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gICAgdGhpcy5zYXZlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBzPy5jaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgLy8gV2hlbiBzdGVwcyBjaGFuZ2VzIChkeW5hbWljIGFkZC9yZW1vdmUpXG4gICAgICAgIHN0YXJ0V2l0aCh1bmRlZmluZWQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zdGVwc1N1YnNjcmlwdGlvbnM/LmZvckVhY2goc3ViID0+IHN1Yi51bnN1YnNjcmliZSgpKTsgLy8gUmVtb3ZlIG9sZCBzdWJzY3JpcHRpb25zXG4gICAgICAgIHRoaXMuc3RlcHNTdWJzY3JpcHRpb25zID0gdGhpcy5zdGVwcz8ubWFwKHN0ZXAgPT5cbiAgICAgICAgICBzdGVwLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpOyAvLyBEZXRlY3RDaGFuZ2VzIHdoZW4gc3RlcCBhdHRyaWJ1dGVzIGNoYW5nZXNcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7IC8vIEZvcmNlIHVwZGF0ZSBodG1sIHJlbmRlclxuICAgICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBzU3Vic2NyaXB0aW9ucz8uZm9yRWFjaChzdGVwID0+IHN0ZXAudW5zdWJzY3JpYmUoKSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzdGVwcGVyc1wiIFtjbGFzcy5iZy1kYXJrXT1cImRhcmtcIj5cbiAgQGlmIChzaG93SGVhZGVyKSB7XG4gICAgPGRpdiBjbGFzcz1cInN0ZXBwZXJzLWhlYWRlclwiPlxuICAgICAgQGlmIChzdGVwcykge1xuICAgICAgICA8dWw+XG4gICAgICAgICAgQGZvciAoc3RlcCBvZiBzdGVwczsgdHJhY2sgc3RlcC5pZDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgIDxsaSBbY2xhc3MuY29uZmlybWVkXT1cImkgPCBhY3RpdmVTdGVwXCIgW2NsYXNzLmFjdGl2ZV09XCJpID09PSBhY3RpdmVTdGVwXCIgW2NsYXNzLm5vLWxpbmVdPVwiaSA9PT0gYWN0aXZlU3RlcCAmJiBzdGVwcGVyc051bWJlclwiPlxuICAgICAgICAgICAgICBAaWYgKHN0ZXAuaWNvbiAmJiAhc3RlcHBlcnNOdW1iZXIpIHtcbiAgICAgICAgICAgICAgICA8aXQtaWNvbiBbbmFtZV09XCJzdGVwLmljb25cIj48L2l0LWljb24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChzdGVwcGVyc051bWJlcikge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RlcHBlcnMtbnVtYmVyXCI+XG4gICAgICAgICAgICAgICAgICBAaWYgKGkgPCBhY3RpdmVTdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjaGVja0ljb25cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPnt7ICdpdC5jb3JlLnN0ZXAnIHwgdHJhbnNsYXRlIH19IDwvc3Bhbj57eyBpICsgMSB9fVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB7eyBzdGVwLmxhYmVsIH19XG4gICAgICAgICAgICAgIEBpZiAoaSA8IGFjdGl2ZVN0ZXAgJiYgIXN0ZXBwZXJzTnVtYmVyKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNoZWNrSWNvblwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoaSA9PT0gYWN0aXZlU3RlcCkge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+e3sgJ2l0LmNvcmUuYWN0aXZlJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdWw+XG4gICAgICB9XG4gICAgICBAaWYgKHN0ZXBzKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic3RlcHBlcnMtaW5kZXhcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICBAaWYgKCFzdGVwcGVyc051bWJlcikge1xuICAgICAgICAgICAge3sgYWN0aXZlU3RlcCArIDEgKyAnLycgKyBzdGVwcy5sZW5ndGggfX1cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIEBmb3IgKHN0ZXAgb2Ygc3RlcHM7IHRyYWNrIHN0ZXAuaWQ7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgIDxzcGFuIFtjbGFzcy5hY3RpdmVdPVwiaSA9PT0gYWN0aXZlU3RlcFwiPnt7IGkgKyAxIH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG5cbiAgQGlmIChzdGVwcz8uZ2V0KGFjdGl2ZVN0ZXApOyBhcyBzdGVwKSB7XG4gICAgPGRpdiBjbGFzcz1cInN0ZXBwZXJzLWNvbnRlbnRcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdGVwLmh0bWxDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIH1cblxuICBAaWYgKHNob3dCYWNrQnV0dG9uIHx8IHNob3dTYXZlQnV0dG9uIHx8IHNob3dGb3J3YXJkQnV0dG9uIHx8IHNob3dDb25maXJtQnV0dG9uIHx8ICEhcHJvZ3Jlc3NTdHlsZSkge1xuICAgIDxuYXYgY2xhc3M9XCJzdGVwcGVycy1uYXZcIj5cbiAgICAgIEBpZiAoc2hvd0JhY2tCdXR0b24pIHtcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGl0QnV0dG9uPVwib3V0bGluZS1wcmltYXJ5XCJcbiAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgIGNsYXNzPVwic3RlcHBlcnMtYnRuLXByZXZcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlQmFja0J1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cImJhY2tDbGljay5lbWl0KGFjdGl2ZVN0ZXApXCI+XG4gICAgICAgICAgPGl0LWljb24gbmFtZT1cImNoZXZyb24tbGVmdFwiIGNvbG9yPVwicHJpbWFyeVwiPjwvaXQtaWNvbj5cbiAgICAgICAgICB7eyAnaXQuY29yZS5iYWNrJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIH1cbiAgICAgIEBpZiAoISFwcm9ncmVzc1N0eWxlICYmIHN0ZXBzKSB7XG4gICAgICAgIEBpZiAocHJvZ3Jlc3NTdHlsZSA9PT0gJ2RvdHMnKSB7XG4gICAgICAgICAgPHVsIGNsYXNzPVwic3RlcHBlcnMtZG90c1wiPlxuICAgICAgICAgICAgQGZvciAoc3RlcCBvZiBzdGVwczsgdHJhY2sgc3RlcDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgPGxpIFtjbGFzcy5kb25lXT1cImkgPCBhY3RpdmVTdGVwXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdpdC5jb3JlLnN0ZXAtb2YnIHwgdHJhbnNsYXRlOiB7IGN1cnJlbnQ6IGFjdGl2ZVN0ZXAgKyAxLCBhdmFpbGFibGU6IHN0ZXBzPy5sZW5ndGggfSB9fVxuICAgICAgICAgICAgICAgICAge3sgaSA8IGFjdGl2ZVN0ZXAgPyAnLSAnICsgKCdpdC5jb3JlLmNvbmZpcm1lZCcgfCB0cmFuc2xhdGUpIDogJycgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXJzLXByb2dyZXNzXCI+XG4gICAgICAgICAgICA8aXQtcHJvZ3Jlc3MtYmFyIFtjb2xvcl09XCJwcm9ncmVzc0NvbG9yXCIgW3ZhbHVlXT1cIihhY3RpdmVTdGVwIC8gKHN0ZXBzPy5sZW5ndGggfHwgMSkpICogMTAwXCI+PC9pdC1wcm9ncmVzcy1iYXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBpZiAoc2hvd1NhdmVCdXR0b24pIHtcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGl0QnV0dG9uPVwicHJpbWFyeVwiXG4gICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICBjbGFzcz1cInN0ZXBwZXJzLWJ0bi1zYXZlXCJcbiAgICAgICAgICBbcHJvZ3Jlc3NdPVwic2F2ZUxvYWRpbmdcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJzYXZlTG9hZGluZyB8fCBkaXNhYmxlU2F2ZUJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cInNhdmVDbGljay5lbWl0KGFjdGl2ZVN0ZXApXCI+XG4gICAgICAgICAge3sgJ2l0LmdlbmVyYWwuc2F2ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICB9XG4gICAgICBAaWYgKHNob3dGb3J3YXJkQnV0dG9uKSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBpdEJ1dHRvbj1cIm91dGxpbmUtcHJpbWFyeVwiXG4gICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICBjbGFzcz1cInN0ZXBwZXJzLWJ0bi1uZXh0XCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZUZvcndhcmRCdXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJmb3J3YXJkQ2xpY2suZW1pdChhY3RpdmVTdGVwKVwiPlxuICAgICAgICAgIHt7ICdpdC5jb3JlLmZvcndhcmQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPGl0LWljb24gbmFtZT1cImNoZXZyb24tcmlnaHRcIiBjb2xvcj1cInByaW1hcnlcIj48L2l0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgfVxuICAgICAgQGlmIChzaG93Q29uZmlybUJ1dHRvbikge1xuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgaXRCdXR0b249XCJwcmltYXJ5XCJcbiAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgIGNsYXNzPVwic3RlcHBlcnMtYnRuLWNvbmZpcm0gZC1sZy1ibG9ja1wiXG4gICAgICAgICAgW3Byb2dyZXNzXT1cImNvbmZpcm1Mb2FkaW5nXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiY29uZmlybUxvYWRpbmcgfHwgZGlzYWJsZUNvbmZpcm1CdXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJjb25maXJtQ2xpY2suZW1pdChhY3RpdmVTdGVwKVwiPlxuICAgICAgICAgIHt7ICdpdC5jb3JlLmNvbmZpcm0nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgfVxuICAgIDwvbmF2PlxuICB9XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNjaGVja0ljb24+XG4gIDxpdC1pY29uIG5hbWU9XCJjaGVja1wiIGNsYXNzPVwic3RlcHBlcnMtc3VjY2Vzc1wiPjwvaXQtaWNvbj5cbiAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj57eyAnaXQuY29yZS5jb25maXJtZWQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewChild } from '@angular/core';
|
|
2
|
+
import { ItAbstractComponent } from '../../../../abstracts/abstract.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class ItSteppersItemComponent extends ItAbstractComponent {
|
|
5
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItSteppersItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
6
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: ItSteppersItemComponent, isStandalone: true, selector: "it-steppers-item", inputs: { label: "label", icon: "icon" }, viewQueries: [{ propertyName: "htmlContent", first: true, predicate: TemplateRef, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template>\n <ng-content></ng-content>\n</ng-template>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
7
|
+
}
|
|
8
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItSteppersItemComponent, decorators: [{
|
|
9
|
+
type: Component,
|
|
10
|
+
args: [{ standalone: true, selector: 'it-steppers-item', changeDetection: ChangeDetectionStrategy.OnPush, imports: [], template: "<ng-template>\n <ng-content></ng-content>\n</ng-template>\n" }]
|
|
11
|
+
}], propDecorators: { label: [{
|
|
12
|
+
type: Input,
|
|
13
|
+
args: [{ required: true }]
|
|
14
|
+
}], icon: [{
|
|
15
|
+
type: Input
|
|
16
|
+
}], htmlContent: [{
|
|
17
|
+
type: ViewChild,
|
|
18
|
+
args: [TemplateRef]
|
|
19
|
+
}] } });
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlcnMtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvc3RlcHBlcnMvc3RlcHBlcnMtaXRlbS9zdGVwcGVycy1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9zdGVwcGVycy9zdGVwcGVycy1pdGVtL3N0ZXBwZXJzLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7QUFTL0UsTUFBTSxPQUFPLHVCQUF3QixTQUFRLG1CQUFtQjs4R0FBbkQsdUJBQXVCO2tHQUF2Qix1QkFBdUIsbUtBZXZCLFdBQVcsdUVDMUJ4Qiw4REFHQTs7MkZEUWEsdUJBQXVCO2tCQVBuQyxTQUFTO2lDQUNJLElBQUksWUFDTixrQkFBa0IsbUJBRVgsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxFQUFFOzhCQU1nQixLQUFLO3NCQUEvQixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFLaEIsSUFBSTtzQkFBWixLQUFLO2dCQU15QixXQUFXO3NCQUF6QyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWNvbk5hbWUgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzL2ljb24nO1xuaW1wb3J0IHsgSXRBYnN0cmFjdENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL2Fic3RyYWN0cy9hYnN0cmFjdC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdpdC1zdGVwcGVycy1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0ZXBwZXJzLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW10sXG59KVxuZXhwb3J0IGNsYXNzIEl0U3RlcHBlcnNJdGVtQ29tcG9uZW50IGV4dGVuZHMgSXRBYnN0cmFjdENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgbGFiZWxzIHByZXNlbnQgaW4gdGhlIGhlYWRlciBzdGVwc1xuICAgKi9cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgbGFiZWwhOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsYWJlbHMgcHJlc2VudCBpbiB0aGUgaGVhZGVyIHN0ZXBzIGNhbiBiZSBwcmVjZWRlZCBieSBhbiBpY29uLlxuICAgKi9cbiAgQElucHV0KCkgaWNvbjogSWNvbk5hbWUgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IG9mIHN0ZXBcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIEBWaWV3Q2hpbGQoVGVtcGxhdGVSZWYpIHB1YmxpYyBodG1sQ29udGVudCE6IFRlbXBsYXRlUmVmPGFueT47XG59XG4iLCI8bmctdGVtcGxhdGU+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { ItSteppersContainerComponent } from './steppers-container/steppers-container.component';
|
|
3
|
+
import { ItSteppersItemComponent } from './steppers-item/steppers-item.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
const steppersComponents = [ItSteppersContainerComponent, ItSteppersItemComponent];
|
|
6
|
+
export class ItSteppersModule {
|
|
7
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItSteppersModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: ItSteppersModule, imports: [ItSteppersContainerComponent, ItSteppersItemComponent], exports: [ItSteppersContainerComponent, ItSteppersItemComponent] }); }
|
|
9
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItSteppersModule, imports: [ItSteppersContainerComponent] }); }
|
|
10
|
+
}
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItSteppersModule, decorators: [{
|
|
12
|
+
type: NgModule,
|
|
13
|
+
args: [{
|
|
14
|
+
imports: steppersComponents,
|
|
15
|
+
exports: steppersComponents,
|
|
16
|
+
}]
|
|
17
|
+
}] });
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlcnMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9jb3JlL3N0ZXBwZXJzL3N0ZXBwZXJzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOztBQUVsRixNQUFNLGtCQUFrQixHQUFHLENBQUMsNEJBQTRCLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztBQU1uRixNQUFNLE9BQU8sZ0JBQWdCOzhHQUFoQixnQkFBZ0I7K0dBQWhCLGdCQUFnQixZQU5ELDRCQUE0QixFQUFFLHVCQUF1QixhQUFyRCw0QkFBNEIsRUFBRSx1QkFBdUI7K0dBTXBFLGdCQUFnQixZQU5ELDRCQUE0Qjs7MkZBTTNDLGdCQUFnQjtrQkFKNUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsa0JBQWtCO29CQUMzQixPQUFPLEVBQUUsa0JBQWtCO2lCQUM1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJdFN0ZXBwZXJzQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9zdGVwcGVycy1jb250YWluZXIvc3RlcHBlcnMtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJdFN0ZXBwZXJzSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vc3RlcHBlcnMtaXRlbS9zdGVwcGVycy1pdGVtLmNvbXBvbmVudCc7XG5cbmNvbnN0IHN0ZXBwZXJzQ29tcG9uZW50cyA9IFtJdFN0ZXBwZXJzQ29udGFpbmVyQ29tcG9uZW50LCBJdFN0ZXBwZXJzSXRlbUNvbXBvbmVudF07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IHN0ZXBwZXJzQ29tcG9uZW50cyxcbiAgZXhwb3J0czogc3RlcHBlcnNDb21wb25lbnRzLFxufSlcbmV4cG9ydCBjbGFzcyBJdFN0ZXBwZXJzTW9kdWxlIHt9XG4iXX0=
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ContentChildren, Input, ViewChildren, } from '@angular/core';
|
|
2
|
+
import { ItTabItemComponent } from '../tab-item/tab-item.component';
|
|
3
|
+
import { of, startWith, switchMap, tap } from 'rxjs';
|
|
4
|
+
import { Tab } from 'bootstrap-italia';
|
|
5
|
+
import { ItAbstractComponent } from '../../../../abstracts/abstract.component';
|
|
6
|
+
import { NgTemplateOutlet } from '@angular/common';
|
|
7
|
+
import { ItIconComponent } from '../../../utils/icon/icon.component';
|
|
8
|
+
import { inputToBoolean } from '../../../../utils/coercion';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
export class ItTabContainerComponent extends ItAbstractComponent {
|
|
11
|
+
ngAfterViewInit() {
|
|
12
|
+
super.ngAfterViewInit();
|
|
13
|
+
this.tabs?.changes
|
|
14
|
+
.pipe(
|
|
15
|
+
// When tabs changes (dynamic add/remove)
|
|
16
|
+
startWith(undefined), tap(() => {
|
|
17
|
+
this.tabSubscriptions?.forEach(sub => sub.unsubscribe()); // Remove old subscriptions
|
|
18
|
+
this.tabSubscriptions = this.tabs?.map(tab => tab.valueChanges.subscribe(() => {
|
|
19
|
+
this._changeDetectorRef.detectChanges(); // DetectChanges when tab-item attributes changes
|
|
20
|
+
}));
|
|
21
|
+
this._changeDetectorRef.detectChanges(); // Force update html render
|
|
22
|
+
}), switchMap(() => this.tabNavLinks?.changes.pipe(startWith(undefined)) || of(undefined)))
|
|
23
|
+
.subscribe(() => {
|
|
24
|
+
// Init tabs from bootstrap-italia
|
|
25
|
+
this.tabNavLinks?.forEach(tabNavLink => {
|
|
26
|
+
const triggerEl = tabNavLink.nativeElement, tabTrigger = Tab.getOrCreateInstance(triggerEl);
|
|
27
|
+
if (triggerEl.getAttribute('tab-listener') !== 'true') {
|
|
28
|
+
triggerEl.addEventListener('click', event => {
|
|
29
|
+
event.preventDefault();
|
|
30
|
+
tabTrigger.show();
|
|
31
|
+
this._changeDetectorRef.detectChanges();
|
|
32
|
+
});
|
|
33
|
+
triggerEl.setAttribute('tab-listener', 'true'); // Prevents multiple insertion of the listener
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
ngOnDestroy() {
|
|
39
|
+
this.tabSubscriptions?.forEach(sub => sub.unsubscribe());
|
|
40
|
+
}
|
|
41
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItTabContainerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
42
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: ItTabContainerComponent, isStandalone: true, selector: "it-tab-container", inputs: { auto: ["auto", "auto", inputToBoolean], iconText: ["iconText", "iconText", inputToBoolean], dark: ["dark", "dark", inputToBoolean] }, queries: [{ propertyName: "tabs", predicate: ItTabItemComponent }], viewQueries: [{ propertyName: "tabNavLinks", predicate: ["tabNavLinks"], descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (tabs) {\n <ul class=\"nav nav-tabs\" [class.auto]=\"auto\" [class.nav-tabs-icon-text]=\"iconText\" [class.nav-dark]=\"dark\" role=\"tablist\">\n @for (tab of tabs; track tab.id) {\n <li class=\"nav-item\">\n <a\n #tabNavLinks\n [id]=\"tab.id + '-tab-link'\"\n role=\"tab\"\n class=\"nav-link\"\n [class.active]=\"tab.active\"\n [class.disabled]=\"tab.disabled\"\n [attr.href]=\"'#' + tab.id + '-tab'\"\n [attr.aria-controls]=\"tab.id + '-tab'\">\n @if (tab.icon) {\n <it-icon [name]=\"tab.icon\" class=\"me-2\"></it-icon>\n }\n {{ tab.label }}\n </a>\n </li>\n }\n </ul>\n}\n\n@if (tabs) {\n <div class=\"tab-content\">\n @for (tab of tabs; track tab.id) {\n <div\n [id]=\"tab.id + '-tab'\"\n class=\"tab-pane p-4 fade {{ tab.class ?? '' }}\"\n [class.active]=\"tab.active\"\n [class.show]=\"tab.active\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"tab.id + '-tab-link'\">\n <ng-container *ngTemplateOutlet=\"tab.htmlContent\"></ng-container>\n </div>\n }\n </div>\n}\n", dependencies: [{ kind: "component", type: ItIconComponent, selector: "it-icon", inputs: ["name", "size", "color", "padded", "svgClass", "labelWaria"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
43
|
+
}
|
|
44
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItTabContainerComponent, decorators: [{
|
|
45
|
+
type: Component,
|
|
46
|
+
args: [{ standalone: true, selector: 'it-tab-container', changeDetection: ChangeDetectionStrategy.OnPush, imports: [ItIconComponent, NgTemplateOutlet], template: "@if (tabs) {\n <ul class=\"nav nav-tabs\" [class.auto]=\"auto\" [class.nav-tabs-icon-text]=\"iconText\" [class.nav-dark]=\"dark\" role=\"tablist\">\n @for (tab of tabs; track tab.id) {\n <li class=\"nav-item\">\n <a\n #tabNavLinks\n [id]=\"tab.id + '-tab-link'\"\n role=\"tab\"\n class=\"nav-link\"\n [class.active]=\"tab.active\"\n [class.disabled]=\"tab.disabled\"\n [attr.href]=\"'#' + tab.id + '-tab'\"\n [attr.aria-controls]=\"tab.id + '-tab'\">\n @if (tab.icon) {\n <it-icon [name]=\"tab.icon\" class=\"me-2\"></it-icon>\n }\n {{ tab.label }}\n </a>\n </li>\n }\n </ul>\n}\n\n@if (tabs) {\n <div class=\"tab-content\">\n @for (tab of tabs; track tab.id) {\n <div\n [id]=\"tab.id + '-tab'\"\n class=\"tab-pane p-4 fade {{ tab.class ?? '' }}\"\n [class.active]=\"tab.active\"\n [class.show]=\"tab.active\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"tab.id + '-tab-link'\">\n <ng-container *ngTemplateOutlet=\"tab.htmlContent\"></ng-container>\n </div>\n }\n </div>\n}\n" }]
|
|
47
|
+
}], propDecorators: { auto: [{
|
|
48
|
+
type: Input,
|
|
49
|
+
args: [{ transform: inputToBoolean }]
|
|
50
|
+
}], iconText: [{
|
|
51
|
+
type: Input,
|
|
52
|
+
args: [{ transform: inputToBoolean }]
|
|
53
|
+
}], dark: [{
|
|
54
|
+
type: Input,
|
|
55
|
+
args: [{ transform: inputToBoolean }]
|
|
56
|
+
}], tabs: [{
|
|
57
|
+
type: ContentChildren,
|
|
58
|
+
args: [ItTabItemComponent]
|
|
59
|
+
}], tabNavLinks: [{
|
|
60
|
+
type: ViewChildren,
|
|
61
|
+
args: ['tabNavLinks']
|
|
62
|
+
}] } });
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvdGFiL3RhYi1jb250YWluZXIvdGFiLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvdGFiL3RhYi1jb250YWluZXIvdGFiLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBRWYsS0FBSyxFQUdMLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBZ0IsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFTNUQsTUFBTSxPQUFPLHVCQUF3QixTQUFRLG1CQUFtQjtJQTBCckQsZUFBZTtRQUN0QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFeEIsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPO2FBQ2YsSUFBSTtRQUNILHlDQUF5QztRQUN6QyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQ3BCLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQywyQkFBMkI7WUFDckYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQzNDLEdBQUcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsaURBQWlEO1lBQzVGLENBQUMsQ0FBQyxDQUNILENBQUM7WUFDRixJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQywyQkFBMkI7UUFDdEUsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FDdkY7YUFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2Qsa0NBQWtDO1lBQ2xDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsYUFBYSxFQUN4QyxVQUFVLEdBQUcsR0FBRyxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUVsRCxJQUFJLFNBQVMsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLEtBQUssTUFBTSxFQUFFLENBQUM7b0JBQ3RELFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUU7d0JBQzFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQzt3QkFDdkIsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO3dCQUNsQixJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQzFDLENBQUMsQ0FBQyxDQUFDO29CQUNILFNBQVMsQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsOENBQThDO2dCQUNoRyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7OEdBaEVVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLHFGQUtkLGNBQWMsc0NBS2QsY0FBYywwQkFLZCxjQUFjLGtEQUtqQixrQkFBa0IsbUpDOUNyQyxvcUNBc0NBLDRDRGRZLGVBQWUsMkhBQUUsZ0JBQWdCOzsyRkFFaEMsdUJBQXVCO2tCQVBuQyxTQUFTO2lDQUNJLElBQUksWUFDTixrQkFBa0IsbUJBRVgsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQzs4QkFPTixJQUFJO3NCQUF6QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRTtnQkFLRSxRQUFRO3NCQUE3QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRTtnQkFLRSxJQUFJO3NCQUF6QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRTtnQkFLQyxJQUFJO3NCQUF4QyxlQUFlO3VCQUFDLGtCQUFrQjtnQkFFRSxXQUFXO3NCQUEvQyxZQUFZO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEl0VGFiSXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL3RhYi1pdGVtL3RhYi1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBvZiwgc3RhcnRXaXRoLCBTdWJzY3JpcHRpb24sIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUYWIgfSBmcm9tICdib290c3RyYXAtaXRhbGlhJztcbmltcG9ydCB7IEl0QWJzdHJhY3RDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9hYnN0cmFjdHMvYWJzdHJhY3QuY29tcG9uZW50JztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSXRJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBpbnB1dFRvQm9vbGVhbiB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL2NvZXJjaW9uJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnaXQtdGFiLWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWItY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtJdEljb25Db21wb25lbnQsIE5nVGVtcGxhdGVPdXRsZXRdLFxufSlcbmV4cG9ydCBjbGFzcyBJdFRhYkNvbnRhaW5lckNvbXBvbmVudCBleHRlbmRzIEl0QWJzdHJhY3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICAvKipcbiAgICogVGFicyBhdXRvbWF0aWNhbGx5IG9jY3VweSB0aGUgZW50aXJlIGF2YWlsYWJsZSB3aWR0aFxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBpbnB1dFRvQm9vbGVhbiB9KSBhdXRvPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVG8gb2J0YWluIHRoZSBjb3JyZWN0IG1hcmdpbiBiZXR3ZWVuIHRleHQgYW5kIGljb24gaW4gdGhlIGhvcml6b250YWxseSBkZXZlbG9wZWQgdGFiXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIGljb25UZXh0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGFyayBzdHlsZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBpbnB1dFRvQm9vbGVhbiB9KSBkYXJrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHRhYiBpdGVtc1xuICAgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihJdFRhYkl0ZW1Db21wb25lbnQpIHRhYnM/OiBRdWVyeUxpc3Q8SXRUYWJJdGVtQ29tcG9uZW50PjtcblxuICBAVmlld0NoaWxkcmVuKCd0YWJOYXZMaW5rcycpIHByaXZhdGUgdGFiTmF2TGlua3M/OiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MQW5jaG9yRWxlbWVudD4+O1xuXG4gIHByaXZhdGUgdGFiU3Vic2NyaXB0aW9ucz86IEFycmF5PFN1YnNjcmlwdGlvbj47XG5cbiAgb3ZlcnJpZGUgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuXG4gICAgdGhpcy50YWJzPy5jaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgLy8gV2hlbiB0YWJzIGNoYW5nZXMgKGR5bmFtaWMgYWRkL3JlbW92ZSlcbiAgICAgICAgc3RhcnRXaXRoKHVuZGVmaW5lZCksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy50YWJTdWJzY3JpcHRpb25zPy5mb3JFYWNoKHN1YiA9PiBzdWIudW5zdWJzY3JpYmUoKSk7IC8vIFJlbW92ZSBvbGQgc3Vic2NyaXB0aW9uc1xuICAgICAgICAgIHRoaXMudGFiU3Vic2NyaXB0aW9ucyA9IHRoaXMudGFicz8ubWFwKHRhYiA9PlxuICAgICAgICAgICAgdGFiLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7IC8vIERldGVjdENoYW5nZXMgd2hlbiB0YWItaXRlbSBhdHRyaWJ1dGVzIGNoYW5nZXNcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7IC8vIEZvcmNlIHVwZGF0ZSBodG1sIHJlbmRlclxuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMudGFiTmF2TGlua3M/LmNoYW5nZXMucGlwZShzdGFydFdpdGgodW5kZWZpbmVkKSkgfHwgb2YodW5kZWZpbmVkKSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAvLyBJbml0IHRhYnMgZnJvbSBib290c3RyYXAtaXRhbGlhXG4gICAgICAgIHRoaXMudGFiTmF2TGlua3M/LmZvckVhY2godGFiTmF2TGluayA9PiB7XG4gICAgICAgICAgY29uc3QgdHJpZ2dlckVsID0gdGFiTmF2TGluay5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgdGFiVHJpZ2dlciA9IFRhYi5nZXRPckNyZWF0ZUluc3RhbmNlKHRyaWdnZXJFbCk7XG5cbiAgICAgICAgICBpZiAodHJpZ2dlckVsLmdldEF0dHJpYnV0ZSgndGFiLWxpc3RlbmVyJykgIT09ICd0cnVlJykge1xuICAgICAgICAgICAgdHJpZ2dlckVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZXZlbnQgPT4ge1xuICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICB0YWJUcmlnZ2VyLnNob3coKTtcbiAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0cmlnZ2VyRWwuc2V0QXR0cmlidXRlKCd0YWItbGlzdGVuZXInLCAndHJ1ZScpOyAvLyBQcmV2ZW50cyBtdWx0aXBsZSBpbnNlcnRpb24gb2YgdGhlIGxpc3RlbmVyXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy50YWJTdWJzY3JpcHRpb25zPy5mb3JFYWNoKHN1YiA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gIH1cbn1cbiIsIkBpZiAodGFicykge1xuICA8dWwgY2xhc3M9XCJuYXYgbmF2LXRhYnNcIiBbY2xhc3MuYXV0b109XCJhdXRvXCIgW2NsYXNzLm5hdi10YWJzLWljb24tdGV4dF09XCJpY29uVGV4dFwiIFtjbGFzcy5uYXYtZGFya109XCJkYXJrXCIgcm9sZT1cInRhYmxpc3RcIj5cbiAgICBAZm9yICh0YWIgb2YgdGFiczsgdHJhY2sgdGFiLmlkKSB7XG4gICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiPlxuICAgICAgICA8YVxuICAgICAgICAgICN0YWJOYXZMaW5rc1xuICAgICAgICAgIFtpZF09XCJ0YWIuaWQgKyAnLXRhYi1saW5rJ1wiXG4gICAgICAgICAgcm9sZT1cInRhYlwiXG4gICAgICAgICAgY2xhc3M9XCJuYXYtbGlua1wiXG4gICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJ0YWIuYWN0aXZlXCJcbiAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwidGFiLmRpc2FibGVkXCJcbiAgICAgICAgICBbYXR0ci5ocmVmXT1cIicjJyArIHRhYi5pZCArICctdGFiJ1wiXG4gICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJ0YWIuaWQgKyAnLXRhYidcIj5cbiAgICAgICAgICBAaWYgKHRhYi5pY29uKSB7XG4gICAgICAgICAgICA8aXQtaWNvbiBbbmFtZV09XCJ0YWIuaWNvblwiIGNsYXNzPVwibWUtMlwiPjwvaXQtaWNvbj5cbiAgICAgICAgICB9XG4gICAgICAgICAge3sgdGFiLmxhYmVsIH19XG4gICAgICAgIDwvYT5cbiAgICAgIDwvbGk+XG4gICAgfVxuICA8L3VsPlxufVxuXG5AaWYgKHRhYnMpIHtcbiAgPGRpdiBjbGFzcz1cInRhYi1jb250ZW50XCI+XG4gICAgQGZvciAodGFiIG9mIHRhYnM7IHRyYWNrIHRhYi5pZCkge1xuICAgICAgPGRpdlxuICAgICAgICBbaWRdPVwidGFiLmlkICsgJy10YWInXCJcbiAgICAgICAgY2xhc3M9XCJ0YWItcGFuZSBwLTQgZmFkZSB7eyB0YWIuY2xhc3MgPz8gJycgfX1cIlxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInRhYi5hY3RpdmVcIlxuICAgICAgICBbY2xhc3Muc2hvd109XCJ0YWIuYWN0aXZlXCJcbiAgICAgICAgcm9sZT1cInRhYnBhbmVsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInRhYi5pZCArICctdGFiLWxpbmsnXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWIuaHRtbENvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG59XG4iXX0=
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewChild } from '@angular/core';
|
|
2
|
+
import { ItAbstractComponent } from '../../../../abstracts/abstract.component';
|
|
3
|
+
import { inputToBoolean } from '../../../../utils/coercion';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class ItTabItemComponent extends ItAbstractComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
/**
|
|
9
|
+
* Custom class
|
|
10
|
+
*/
|
|
11
|
+
this.class = '';
|
|
12
|
+
}
|
|
13
|
+
ngAfterViewInit() {
|
|
14
|
+
super.ngAfterViewInit();
|
|
15
|
+
this._renderer.removeAttribute(this._elementRef.nativeElement, 'class');
|
|
16
|
+
}
|
|
17
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItTabItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
18
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.1.2", type: ItTabItemComponent, isStandalone: true, selector: "it-tab-item", inputs: { label: "label", icon: "icon", active: ["active", "active", inputToBoolean], disabled: ["disabled", "disabled", inputToBoolean], class: "class" }, viewQueries: [{ propertyName: "htmlContent", first: true, predicate: TemplateRef, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template>\n <ng-content></ng-content>\n</ng-template>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
19
|
+
}
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItTabItemComponent, decorators: [{
|
|
21
|
+
type: Component,
|
|
22
|
+
args: [{ standalone: true, selector: 'it-tab-item', changeDetection: ChangeDetectionStrategy.OnPush, imports: [], template: "<ng-template>\n <ng-content></ng-content>\n</ng-template>\n" }]
|
|
23
|
+
}], propDecorators: { label: [{
|
|
24
|
+
type: Input
|
|
25
|
+
}], icon: [{
|
|
26
|
+
type: Input
|
|
27
|
+
}], active: [{
|
|
28
|
+
type: Input,
|
|
29
|
+
args: [{ transform: inputToBoolean }]
|
|
30
|
+
}], disabled: [{
|
|
31
|
+
type: Input,
|
|
32
|
+
args: [{ transform: inputToBoolean }]
|
|
33
|
+
}], class: [{
|
|
34
|
+
type: Input
|
|
35
|
+
}], htmlContent: [{
|
|
36
|
+
type: ViewChild,
|
|
37
|
+
args: [TemplateRef]
|
|
38
|
+
}] } });
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9jb3JlL3RhYi90YWItaXRlbS90YWItaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvdGFiL3RhYi1pdGVtL3RhYi1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRS9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFTNUQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLG1CQUFtQjtJQVAzRDs7UUErQkU7O1dBRUc7UUFDTSxVQUFLLEdBQVcsRUFBRSxDQUFDO0tBVzdCO0lBSlUsZUFBZTtRQUN0QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDMUUsQ0FBQzs4R0FyQ1Usa0JBQWtCO2tHQUFsQixrQkFBa0Isb0hBZ0JULGNBQWMsc0NBTWQsY0FBYywwRkFVdkIsV0FBVyx1RUM1Q3hCLDhEQUdBOzsyRkRTYSxrQkFBa0I7a0JBUDlCLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLGFBQWEsbUJBRU4sdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxFQUFFOzhCQU9GLEtBQUs7c0JBQWIsS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBTWdDLE1BQU07c0JBQTNDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFO2dCQU1FLFFBQVE7c0JBQTdDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFO2dCQUszQixLQUFLO3NCQUFiLEtBQUs7Z0JBS3lCLFdBQVc7c0JBQXpDLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJdEFic3RyYWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vYWJzdHJhY3RzL2Fic3RyYWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJY29uTmFtZSB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvaWNvbic7XG5pbXBvcnQgeyBpbnB1dFRvQm9vbGVhbiB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL2NvZXJjaW9uJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnaXQtdGFiLWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFiLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW11cbn0pXG5leHBvcnQgY2xhc3MgSXRUYWJJdGVtQ29tcG9uZW50IGV4dGVuZHMgSXRBYnN0cmFjdENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXG4gIC8qKlxuICAgKiBUaGUgdGFiIGxhYmVsXG4gICAqL1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgaWNvbiBuYW1lXG4gICAqL1xuICBASW5wdXQoKSBpY29uOiBJY29uTmFtZSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogRGVmYXVsdCBhY3RpdmUgdGFiXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIGFjdGl2ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgZGlzYWJsZWQgdGFiXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ3VzdG9tIGNsYXNzXG4gICAqL1xuICBASW5wdXQoKSBjbGFzczogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IG9mIHRhYlxuICAgKi9cbiAgQFZpZXdDaGlsZChUZW1wbGF0ZVJlZikgcHVibGljIGh0bWxDb250ZW50ITogVGVtcGxhdGVSZWY8YW55PjtcblxuICBvdmVycmlkZSBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NsYXNzJyk7XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { ItTabContainerComponent } from './tab-container/tab-container.component';
|
|
3
|
+
import { ItTabItemComponent } from './tab-item/tab-item.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
const tabComponents = [ItTabContainerComponent, ItTabItemComponent];
|
|
6
|
+
export class ItTabModule {
|
|
7
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItTabModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: ItTabModule, imports: [ItTabContainerComponent, ItTabItemComponent], exports: [ItTabContainerComponent, ItTabItemComponent] }); }
|
|
9
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItTabModule }); }
|
|
10
|
+
}
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItTabModule, decorators: [{
|
|
12
|
+
type: NgModule,
|
|
13
|
+
args: [{
|
|
14
|
+
imports: tabComponents,
|
|
15
|
+
exports: tabComponents,
|
|
16
|
+
}]
|
|
17
|
+
}] });
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS90YWIvdGFiLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQUVuRSxNQUFNLGFBQWEsR0FBRyxDQUFDLHVCQUF1QixFQUFFLGtCQUFrQixDQUFDLENBQUM7QUFNcEUsTUFBTSxPQUFPLFdBQVc7OEdBQVgsV0FBVzsrR0FBWCxXQUFXLFlBTkQsdUJBQXVCLEVBQUUsa0JBQWtCLGFBQTNDLHVCQUF1QixFQUFFLGtCQUFrQjsrR0FNckQsV0FBVzs7MkZBQVgsV0FBVztrQkFKdkIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsYUFBYTtvQkFDdEIsT0FBTyxFQUFFLGFBQWE7aUJBQ3ZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEl0VGFiQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi90YWItY29udGFpbmVyL3RhYi1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEl0VGFiSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vdGFiLWl0ZW0vdGFiLWl0ZW0uY29tcG9uZW50JztcblxuY29uc3QgdGFiQ29tcG9uZW50cyA9IFtJdFRhYkNvbnRhaW5lckNvbXBvbmVudCwgSXRUYWJJdGVtQ29tcG9uZW50XTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogdGFiQ29tcG9uZW50cyxcbiAgZXhwb3J0czogdGFiQ29tcG9uZW50cyxcbn0pXG5leHBvcnQgY2xhc3MgSXRUYWJNb2R1bGUge31cbiJdfQ==
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { booleanAttribute, ChangeDetectionStrategy, Component, HostBinding, HostListener, Inject, Input, Optional, ViewEncapsulation, } from '@angular/core';
|
|
2
|
+
import { merge } from 'rxjs';
|
|
3
|
+
import { ItIconComponent } from '../../../../utils/icon/icon.component';
|
|
4
|
+
import { IT_SORT_DEFAULT_OPTIONS, } from '../../../../../interfaces/sortable-table';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../sort.directive";
|
|
7
|
+
/**
|
|
8
|
+
* Applies sorting behavior (click to change sort) and styles to an element, including an
|
|
9
|
+
* arrow to display the current sort direction.
|
|
10
|
+
*
|
|
11
|
+
* Must be provided with an id and contained within a parent ItSort directive.
|
|
12
|
+
*
|
|
13
|
+
* If used on header cells in a CdkTable, it will automatically default its id from its containing
|
|
14
|
+
* column definition.
|
|
15
|
+
*/
|
|
16
|
+
export class ItSortHeaderComponent {
|
|
17
|
+
constructor(_changeDetectorRef,
|
|
18
|
+
// `SortDirective` is not optionally injected, but just asserted manually w/ better error.
|
|
19
|
+
_sort, defaultOptions) {
|
|
20
|
+
this._changeDetectorRef = _changeDetectorRef;
|
|
21
|
+
this._sort = _sort;
|
|
22
|
+
/** Sets the position of the arrow that displays when sorted. */
|
|
23
|
+
this.arrowPosition = 'after';
|
|
24
|
+
/** whether the sort header is disabled. */
|
|
25
|
+
this.sortDisabled = false;
|
|
26
|
+
this.sortHeaderClass = 'it-sort-header';
|
|
27
|
+
if (defaultOptions?.arrowPosition) {
|
|
28
|
+
this.arrowPosition = defaultOptions?.arrowPosition;
|
|
29
|
+
}
|
|
30
|
+
this._handleStateChanges();
|
|
31
|
+
}
|
|
32
|
+
ngOnInit() {
|
|
33
|
+
// Initialize the direction of the arrow and set the view state to be immediately that state.
|
|
34
|
+
this.updateArrowDirection();
|
|
35
|
+
this._sort.register(this);
|
|
36
|
+
}
|
|
37
|
+
ngOnDestroy() {
|
|
38
|
+
this._sort.deregister(this);
|
|
39
|
+
this._rerenderSubscription?.unsubscribe();
|
|
40
|
+
}
|
|
41
|
+
_handleClick() {
|
|
42
|
+
if (!this.isDisabled) {
|
|
43
|
+
this._sort.sort(this);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Whether this MatSortHeader is currently sorted in either ascending or descending order.
|
|
48
|
+
*/
|
|
49
|
+
get isSorted() {
|
|
50
|
+
return this._sort.active == this.id && (this._sort.direction === 'asc' || this._sort.direction === 'desc');
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Returns the icon class by the arrow direction
|
|
54
|
+
*/
|
|
55
|
+
get arrowIconClass() {
|
|
56
|
+
return `${this._arrowDirection == 'asc' ? 'arrow-up' : 'arrow-down'}`;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Updates the direction the arrow should be pointing. If it is not sorted, the arrow should be
|
|
60
|
+
* facing the start direction. Otherwise if it is sorted, the arrow should point in the currently
|
|
61
|
+
* active sorted direction. The reason this is updated through a function is because the direction
|
|
62
|
+
* should only be changed at specific times - when deactivated but the hint is displayed and when
|
|
63
|
+
* the sort is active and the direction changes. Otherwise the arrow's direction should linger
|
|
64
|
+
* in cases such as the sort becoming deactivated but we want to animate the arrow away while
|
|
65
|
+
* preserving its direction, even though the next sort direction is actually different and should
|
|
66
|
+
* only be changed once the arrow displays again (hint or activation).
|
|
67
|
+
*/
|
|
68
|
+
updateArrowDirection() {
|
|
69
|
+
this._arrowDirection = this.isSorted ? this._sort.direction : this.start || this._sort.start;
|
|
70
|
+
}
|
|
71
|
+
get isDisabled() {
|
|
72
|
+
return this._sort.sortDisabled || this.sortDisabled;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Gets the aria-sort attribute that should be applied to this sort header. If this header
|
|
76
|
+
* is not sorted, returns null so that the attribute is removed from the host element. Aria spec
|
|
77
|
+
* says that the aria-sort property should only be present on one header at a time, so removing
|
|
78
|
+
* ensures this is true.
|
|
79
|
+
*/
|
|
80
|
+
get ariaSortAttribute() {
|
|
81
|
+
if (!this.isSorted) {
|
|
82
|
+
return 'none';
|
|
83
|
+
}
|
|
84
|
+
return this._sort.direction == 'asc' ? 'ascending' : 'descending';
|
|
85
|
+
}
|
|
86
|
+
/** Handles changes in the sorting state. */
|
|
87
|
+
_handleStateChanges() {
|
|
88
|
+
this._rerenderSubscription = merge(this._sort.sortChange, this._sort._stateChanges).subscribe(() => {
|
|
89
|
+
if (this.isSorted) {
|
|
90
|
+
this.updateArrowDirection();
|
|
91
|
+
}
|
|
92
|
+
this._changeDetectorRef.markForCheck();
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItSortHeaderComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ItSortDirective, optional: true }, { token: IT_SORT_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
96
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.1.2", type: ItSortHeaderComponent, isStandalone: true, selector: "[it-sort-header]", inputs: { id: ["it-sort-header", "id"], arrowPosition: "arrowPosition", start: "start", sortDisabled: ["sortDisabled", "sortDisabled", booleanAttribute], disableSortClear: ["disableSortClear", "disableSortClear", booleanAttribute] }, host: { listeners: { "click": "_handleClick()" }, properties: { "class": "this.sortHeaderClass", "class.it-sort-header-disabled": "this.isDisabled", "attr.aria-sort": "this.ariaSortAttribute" } }, exportAs: ["itSortHeader"], ngImport: i0, template: "<!--\n We set the `tabindex` on an element inside the table header, rather than the header itself,\n because of a bug in NVDA where having a `tabindex` on a `th` breaks keyboard navigation in the\n table (see https://github.com/nvaccess/nvda/issues/7718). This allows for the header to both\n be focusable, and have screen readers read out its `aria-sort` state. We prefer this approach\n over having a button with an `aria-label` inside the header, because the button's `aria-label`\n will be read out as the user is navigating the table's cell (see #13012).\n\n The approach is based off of: https://dequeuniversity.com/library/aria/tables/sf-sortable-grid\n-->\n<div class=\"it-sort-header-container it-focus-indicator\"\n [class.it-sort-header-sorted]=\"isSorted\"\n [class.it-sort-header-position-before]=\"arrowPosition === 'before'\"\n [attr.tabindex]=\"isDisabled ? null : 0\"\n [attr.role]=\"isDisabled ? null : 'button'\">\n\n <!--\n We have to keep it due to a large number of screenshot diff failures. It should be removed eventually.\n Note that the difference isn't visible with a shorter header, but once it breaks up into multiple lines, this element\n causes it to be center-aligned, whereas removing it will keep the text to the left.\n -->\n <div class=\"it-sort-header-content\">\n <ng-content></ng-content>\n </div>\n\n <it-icon class=\"it-sort-arrow\" size=\"sm\" [name]=\"arrowIconClass\" />\n</div>\n", styles: [".it-sort-header-container{display:flex;cursor:pointer;align-items:center;justify-content:space-between;letter-spacing:normal;outline:0}.it-sort-header-disabled .it-sort-header-container{cursor:default}.it-sort-header-disabled .it-sort-header-container .it-sort-arrow{opacity:0!important}.it-sort-header-container:before{margin:-5px}.it-sort-header-container.it-sort-header-position-before{flex-direction:row-reverse;justify-content:left;gap:.5rem}.it-sort-header-container .it-sort-arrow{opacity:0;transition:opacity .3s ease-out;-moz-transition:opacity .3s ease-out;-webkit-transition:opacity .3s ease-out;-o-transition:opacity .3s ease-out}.it-sort-header-container:hover .it-sort-arrow{opacity:.5}.it-sort-header-container.it-sort-header-sorted .it-sort-arrow{opacity:1!important}\n"], dependencies: [{ kind: "component", type: ItIconComponent, selector: "it-icon", inputs: ["name", "size", "color", "padded", "svgClass", "labelWaria"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
97
|
+
}
|
|
98
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItSortHeaderComponent, decorators: [{
|
|
99
|
+
type: Component,
|
|
100
|
+
args: [{ selector: '[it-sort-header]', exportAs: 'itSortHeader', standalone: true, imports: [ItIconComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n We set the `tabindex` on an element inside the table header, rather than the header itself,\n because of a bug in NVDA where having a `tabindex` on a `th` breaks keyboard navigation in the\n table (see https://github.com/nvaccess/nvda/issues/7718). This allows for the header to both\n be focusable, and have screen readers read out its `aria-sort` state. We prefer this approach\n over having a button with an `aria-label` inside the header, because the button's `aria-label`\n will be read out as the user is navigating the table's cell (see #13012).\n\n The approach is based off of: https://dequeuniversity.com/library/aria/tables/sf-sortable-grid\n-->\n<div class=\"it-sort-header-container it-focus-indicator\"\n [class.it-sort-header-sorted]=\"isSorted\"\n [class.it-sort-header-position-before]=\"arrowPosition === 'before'\"\n [attr.tabindex]=\"isDisabled ? null : 0\"\n [attr.role]=\"isDisabled ? null : 'button'\">\n\n <!--\n We have to keep it due to a large number of screenshot diff failures. It should be removed eventually.\n Note that the difference isn't visible with a shorter header, but once it breaks up into multiple lines, this element\n causes it to be center-aligned, whereas removing it will keep the text to the left.\n -->\n <div class=\"it-sort-header-content\">\n <ng-content></ng-content>\n </div>\n\n <it-icon class=\"it-sort-arrow\" size=\"sm\" [name]=\"arrowIconClass\" />\n</div>\n", styles: [".it-sort-header-container{display:flex;cursor:pointer;align-items:center;justify-content:space-between;letter-spacing:normal;outline:0}.it-sort-header-disabled .it-sort-header-container{cursor:default}.it-sort-header-disabled .it-sort-header-container .it-sort-arrow{opacity:0!important}.it-sort-header-container:before{margin:-5px}.it-sort-header-container.it-sort-header-position-before{flex-direction:row-reverse;justify-content:left;gap:.5rem}.it-sort-header-container .it-sort-arrow{opacity:0;transition:opacity .3s ease-out;-moz-transition:opacity .3s ease-out;-webkit-transition:opacity .3s ease-out;-o-transition:opacity .3s ease-out}.it-sort-header-container:hover .it-sort-arrow{opacity:.5}.it-sort-header-container.it-sort-header-sorted .it-sort-arrow{opacity:1!important}\n"] }]
|
|
101
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.ItSortDirective, decorators: [{
|
|
102
|
+
type: Optional
|
|
103
|
+
}] }, { type: undefined, decorators: [{
|
|
104
|
+
type: Optional
|
|
105
|
+
}, {
|
|
106
|
+
type: Inject,
|
|
107
|
+
args: [IT_SORT_DEFAULT_OPTIONS]
|
|
108
|
+
}] }], propDecorators: { id: [{
|
|
109
|
+
type: Input,
|
|
110
|
+
args: ['it-sort-header']
|
|
111
|
+
}], arrowPosition: [{
|
|
112
|
+
type: Input
|
|
113
|
+
}], start: [{
|
|
114
|
+
type: Input
|
|
115
|
+
}], sortDisabled: [{
|
|
116
|
+
type: Input,
|
|
117
|
+
args: [{ transform: booleanAttribute }]
|
|
118
|
+
}], disableSortClear: [{
|
|
119
|
+
type: Input,
|
|
120
|
+
args: [{ transform: booleanAttribute }]
|
|
121
|
+
}], sortHeaderClass: [{
|
|
122
|
+
type: HostBinding,
|
|
123
|
+
args: ['class']
|
|
124
|
+
}], _handleClick: [{
|
|
125
|
+
type: HostListener,
|
|
126
|
+
args: ['click']
|
|
127
|
+
}], isDisabled: [{
|
|
128
|
+
type: HostBinding,
|
|
129
|
+
args: ['class.it-sort-header-disabled']
|
|
130
|
+
}], ariaSortAttribute: [{
|
|
131
|
+
type: HostBinding,
|
|
132
|
+
args: ['attr.aria-sort']
|
|
133
|
+
}] } });
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9jb3JlL3RhYmxlL3NvcnQvc29ydC1oZWFkZXIvc29ydC1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9jb3JlL3RhYmxlL3NvcnQvc29ydC1oZWFkZXIvc29ydC1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQix1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxRQUFRLEVBQ1IsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxLQUFLLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUV4RSxPQUFPLEVBQ0wsdUJBQXVCLEdBS3hCLE1BQU0sMENBQTBDLENBQUM7OztBQUVsRDs7Ozs7Ozs7R0FRRztBQVlILE1BQU0sT0FBTyxxQkFBcUI7SUE2QmhDLFlBQ21CLGtCQUFxQztJQUN0RCwwRkFBMEY7SUFDOUQsS0FBc0IsRUFDTCxjQUFxQztRQUhqRSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBRTFCLFVBQUssR0FBTCxLQUFLLENBQWlCO1FBekJwRCxnRUFBZ0U7UUFDdkQsa0JBQWEsR0FBNEIsT0FBTyxDQUFDO1FBSzFELDJDQUEyQztRQUUzQyxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQU9kLG9CQUFlLEdBQUcsZ0JBQWdCLENBQUM7UUFhakQsSUFBSSxjQUFjLEVBQUUsYUFBYSxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxjQUFjLEVBQUUsYUFBYSxDQUFDO1FBQ3JELENBQUM7UUFFRCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsUUFBUTtRQUNOLDZGQUE2RjtRQUM3RixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBR0QsWUFBWTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILElBQWMsUUFBUTtRQUNwQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEtBQUssTUFBTSxDQUFDLENBQUM7SUFDN0csQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBYyxjQUFjO1FBQzFCLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4RSxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ssb0JBQW9CO1FBQzFCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDL0YsQ0FBQztJQUVELElBQ1csVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFDVyxpQkFBaUI7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQixPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO0lBQ3BFLENBQUM7SUFFRCw0Q0FBNEM7SUFDcEMsbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2pHLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUM5QixDQUFDO1lBQ0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FwSFUscUJBQXFCLGtHQWlDVix1QkFBdUI7a0dBakNsQyxxQkFBcUIsMkxBY1osZ0JBQWdCLDhEQUloQixnQkFBZ0IsOFBDaEV0QywwN0NBMkJBLDIwQkRhWSxlQUFlOzsyRkFNZCxxQkFBcUI7a0JBWGpDLFNBQVM7K0JBRUUsa0JBQWtCLFlBQ2xCLGNBQWMsY0FDWixJQUFJLFdBQ1AsQ0FBQyxlQUFlLENBQUMsaUJBR1gsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTTs7MEJBa0M1QyxRQUFROzswQkFDUixRQUFROzswQkFBSSxNQUFNOzJCQUFDLHVCQUF1Qjt5Q0E1QnBCLEVBQUU7c0JBQTFCLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUdkLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0csS0FBSztzQkFBYixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFLdEMsZ0JBQWdCO3NCQURmLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBSXRCLGVBQWU7c0JBRDlCLFdBQVc7dUJBQUMsT0FBTztnQkFpQ3BCLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxPQUFPO2dCQW9DVixVQUFVO3NCQURwQixXQUFXO3VCQUFDLCtCQUErQjtnQkFZakMsaUJBQWlCO3NCQUQzQixXQUFXO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEl0U29ydERpcmVjdGl2ZSB9IGZyb20gJy4uL3NvcnQuZGlyZWN0aXZlJztcbmltcG9ydCB7IG1lcmdlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEl0SWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL2ljb24vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWNvbk5hbWUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9pbnRlcmZhY2VzL2ljb24nO1xuaW1wb3J0IHtcbiAgSVRfU09SVF9ERUZBVUxUX09QVElPTlMsXG4gIEl0U29ydGFibGUsXG4gIEl0U29ydERlZmF1bHRPcHRpb25zLFxuICBTb3J0RGlyZWN0aW9uLFxuICBTb3J0SGVhZGVyQXJyb3dQb3NpdGlvbixcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vaW50ZXJmYWNlcy9zb3J0YWJsZS10YWJsZSc7XG5cbi8qKlxuICogQXBwbGllcyBzb3J0aW5nIGJlaGF2aW9yIChjbGljayB0byBjaGFuZ2Ugc29ydCkgYW5kIHN0eWxlcyB0byBhbiBlbGVtZW50LCBpbmNsdWRpbmcgYW5cbiAqIGFycm93IHRvIGRpc3BsYXkgdGhlIGN1cnJlbnQgc29ydCBkaXJlY3Rpb24uXG4gKlxuICogTXVzdCBiZSBwcm92aWRlZCB3aXRoIGFuIGlkIGFuZCBjb250YWluZWQgd2l0aGluIGEgcGFyZW50IEl0U29ydCBkaXJlY3RpdmUuXG4gKlxuICogSWYgdXNlZCBvbiBoZWFkZXIgY2VsbHMgaW4gYSBDZGtUYWJsZSwgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IGRlZmF1bHQgaXRzIGlkIGZyb20gaXRzIGNvbnRhaW5pbmdcbiAqIGNvbHVtbiBkZWZpbml0aW9uLlxuICovXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdbaXQtc29ydC1oZWFkZXJdJyxcbiAgZXhwb3J0QXM6ICdpdFNvcnRIZWFkZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbSXRJY29uQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL3NvcnQtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc29ydC1oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEl0U29ydEhlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIEl0U29ydGFibGUsIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgLyoqXG4gICAqIElEIG9mIHRoaXMgc29ydCBoZWFkZXIuIElmIHVzZWQgd2l0aGluIHRoZSBjb250ZXh0IG9mIGEgQ2RrQ29sdW1uRGVmLCB0aGlzIHdpbGwgZGVmYXVsdCB0b1xuICAgKiB0aGUgY29sdW1uJ3MgbmFtZS5cbiAgICovXG4gIEBJbnB1dCgnaXQtc29ydC1oZWFkZXInKSBpZCE6IHN0cmluZztcblxuICAvKiogU2V0cyB0aGUgcG9zaXRpb24gb2YgdGhlIGFycm93IHRoYXQgZGlzcGxheXMgd2hlbiBzb3J0ZWQuICovXG4gIEBJbnB1dCgpIGFycm93UG9zaXRpb246IFNvcnRIZWFkZXJBcnJvd1Bvc2l0aW9uID0gJ2FmdGVyJztcblxuICAvKiogT3ZlcnJpZGVzIHRoZSBzb3J0IHN0YXJ0IHZhbHVlIG9mIHRoZSBjb250YWluaW5nIE1hdFNvcnQgZm9yIHRoaXMgU29ydEhlYWRlckNvbXBvbmVudC4gKi9cbiAgQElucHV0KCkgc3RhcnQ/OiBTb3J0RGlyZWN0aW9uO1xuXG4gIC8qKiB3aGV0aGVyIHRoZSBzb3J0IGhlYWRlciBpcyBkaXNhYmxlZC4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHNvcnREaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBPdmVycmlkZXMgdGhlIGRpc2FibGUgY2xlYXIgdmFsdWUgb2YgdGhlIGNvbnRhaW5pbmcgU29ydERpcmVjdGl2ZSBmb3IgdGhpcyBNYXRTb3J0YWJsZS4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIGRpc2FibGVTb3J0Q2xlYXI/OiBib29sZWFuO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBwdWJsaWMgcmVhZG9ubHkgc29ydEhlYWRlckNsYXNzID0gJ2l0LXNvcnQtaGVhZGVyJztcblxuICBwcml2YXRlIF9yZXJlbmRlclN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcblxuICAvKiogVGhlIGRpcmVjdGlvbiB0aGUgYXJyb3cgc2hvdWxkIGJlIGZhY2luZyBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgc3RhdGUuICovXG4gIHByaXZhdGUgX2Fycm93RGlyZWN0aW9uPzogU29ydERpcmVjdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgLy8gYFNvcnREaXJlY3RpdmVgIGlzIG5vdCBvcHRpb25hbGx5IGluamVjdGVkLCBidXQganVzdCBhc3NlcnRlZCBtYW51YWxseSB3LyBiZXR0ZXIgZXJyb3IuXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIHJlYWRvbmx5IF9zb3J0OiBJdFNvcnREaXJlY3RpdmUsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChJVF9TT1JUX0RFRkFVTFRfT1BUSU9OUykgZGVmYXVsdE9wdGlvbnM/OiBJdFNvcnREZWZhdWx0T3B0aW9uc1xuICApIHtcbiAgICBpZiAoZGVmYXVsdE9wdGlvbnM/LmFycm93UG9zaXRpb24pIHtcbiAgICAgIHRoaXMuYXJyb3dQb3NpdGlvbiA9IGRlZmF1bHRPcHRpb25zPy5hcnJvd1Bvc2l0aW9uO1xuICAgIH1cblxuICAgIHRoaXMuX2hhbmRsZVN0YXRlQ2hhbmdlcygpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgZGlyZWN0aW9uIG9mIHRoZSBhcnJvdyBhbmQgc2V0IHRoZSB2aWV3IHN0YXRlIHRvIGJlIGltbWVkaWF0ZWx5IHRoYXQgc3RhdGUuXG4gICAgdGhpcy51cGRhdGVBcnJvd0RpcmVjdGlvbigpO1xuICAgIHRoaXMuX3NvcnQucmVnaXN0ZXIodGhpcyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9zb3J0LmRlcmVnaXN0ZXIodGhpcyk7XG4gICAgdGhpcy5fcmVyZW5kZXJTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIF9oYW5kbGVDbGljaygpIHtcbiAgICBpZiAoIXRoaXMuaXNEaXNhYmxlZCkge1xuICAgICAgdGhpcy5fc29ydC5zb3J0KHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgTWF0U29ydEhlYWRlciBpcyBjdXJyZW50bHkgc29ydGVkIGluIGVpdGhlciBhc2NlbmRpbmcgb3IgZGVzY2VuZGluZyBvcmRlci5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgaXNTb3J0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NvcnQuYWN0aXZlID09IHRoaXMuaWQgJiYgKHRoaXMuX3NvcnQuZGlyZWN0aW9uID09PSAnYXNjJyB8fCB0aGlzLl9zb3J0LmRpcmVjdGlvbiA9PT0gJ2Rlc2MnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBpY29uIGNsYXNzIGJ5IHRoZSBhcnJvdyBkaXJlY3Rpb25cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgYXJyb3dJY29uQ2xhc3MoKTogSWNvbk5hbWUge1xuICAgIHJldHVybiBgJHt0aGlzLl9hcnJvd0RpcmVjdGlvbiA9PSAnYXNjJyA/ICdhcnJvdy11cCcgOiAnYXJyb3ctZG93bid9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBkaXJlY3Rpb24gdGhlIGFycm93IHNob3VsZCBiZSBwb2ludGluZy4gSWYgaXQgaXMgbm90IHNvcnRlZCwgdGhlIGFycm93IHNob3VsZCBiZVxuICAgKiBmYWNpbmcgdGhlIHN0YXJ0IGRpcmVjdGlvbi4gT3RoZXJ3aXNlIGlmIGl0IGlzIHNvcnRlZCwgdGhlIGFycm93IHNob3VsZCBwb2ludCBpbiB0aGUgY3VycmVudGx5XG4gICAqIGFjdGl2ZSBzb3J0ZWQgZGlyZWN0aW9uLiBUaGUgcmVhc29uIHRoaXMgaXMgdXBkYXRlZCB0aHJvdWdoIGEgZnVuY3Rpb24gaXMgYmVjYXVzZSB0aGUgZGlyZWN0aW9uXG4gICAqIHNob3VsZCBvbmx5IGJlIGNoYW5nZWQgYXQgc3BlY2lmaWMgdGltZXMgLSB3aGVuIGRlYWN0aXZhdGVkIGJ1dCB0aGUgaGludCBpcyBkaXNwbGF5ZWQgYW5kIHdoZW5cbiAgICogdGhlIHNvcnQgaXMgYWN0aXZlIGFuZCB0aGUgZGlyZWN0aW9uIGNoYW5nZXMuIE90aGVyd2lzZSB0aGUgYXJyb3cncyBkaXJlY3Rpb24gc2hvdWxkIGxpbmdlclxuICAgKiBpbiBjYXNlcyBzdWNoIGFzIHRoZSBzb3J0IGJlY29taW5nIGRlYWN0aXZhdGVkIGJ1dCB3ZSB3YW50IHRvIGFuaW1hdGUgdGhlIGFycm93IGF3YXkgd2hpbGVcbiAgICogcHJlc2VydmluZyBpdHMgZGlyZWN0aW9uLCBldmVuIHRob3VnaCB0aGUgbmV4dCBzb3J0IGRpcmVjdGlvbiBpcyBhY3R1YWxseSBkaWZmZXJlbnQgYW5kIHNob3VsZFxuICAgKiBvbmx5IGJlIGNoYW5nZWQgb25jZSB0aGUgYXJyb3cgZGlzcGxheXMgYWdhaW4gKGhpbnQgb3IgYWN0aXZhdGlvbikuXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZUFycm93RGlyZWN0aW9uKCkge1xuICAgIHRoaXMuX2Fycm93RGlyZWN0aW9uID0gdGhpcy5pc1NvcnRlZCA/IHRoaXMuX3NvcnQuZGlyZWN0aW9uIDogdGhpcy5zdGFydCB8fCB0aGlzLl9zb3J0LnN0YXJ0O1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pdC1zb3J0LWhlYWRlci1kaXNhYmxlZCcpXG4gIHB1YmxpYyBnZXQgaXNEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc29ydC5zb3J0RGlzYWJsZWQgfHwgdGhpcy5zb3J0RGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgYXJpYS1zb3J0IGF0dHJpYnV0ZSB0aGF0IHNob3VsZCBiZSBhcHBsaWVkIHRvIHRoaXMgc29ydCBoZWFkZXIuIElmIHRoaXMgaGVhZGVyXG4gICAqIGlzIG5vdCBzb3J0ZWQsIHJldHVybnMgbnVsbCBzbyB0aGF0IHRoZSBhdHRyaWJ1dGUgaXMgcmVtb3ZlZCBmcm9tIHRoZSBob3N0IGVsZW1lbnQuIEFyaWEgc3BlY1xuICAgKiBzYXlzIHRoYXQgdGhlIGFyaWEtc29ydCBwcm9wZXJ0eSBzaG91bGQgb25seSBiZSBwcmVzZW50IG9uIG9uZSBoZWFkZXIgYXQgYSB0aW1lLCBzbyByZW1vdmluZ1xuICAgKiBlbnN1cmVzIHRoaXMgaXMgdHJ1ZS5cbiAgICovXG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXNvcnQnKVxuICBwdWJsaWMgZ2V0IGFyaWFTb3J0QXR0cmlidXRlKCkge1xuICAgIGlmICghdGhpcy5pc1NvcnRlZCkge1xuICAgICAgcmV0dXJuICdub25lJztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc29ydC5kaXJlY3Rpb24gPT0gJ2FzYycgPyAnYXNjZW5kaW5nJyA6ICdkZXNjZW5kaW5nJztcbiAgfVxuXG4gIC8qKiBIYW5kbGVzIGNoYW5nZXMgaW4gdGhlIHNvcnRpbmcgc3RhdGUuICovXG4gIHByaXZhdGUgX2hhbmRsZVN0YXRlQ2hhbmdlcygpIHtcbiAgICB0aGlzLl9yZXJlbmRlclN1YnNjcmlwdGlvbiA9IG1lcmdlKHRoaXMuX3NvcnQuc29ydENoYW5nZSwgdGhpcy5fc29ydC5fc3RhdGVDaGFuZ2VzKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNTb3J0ZWQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVBcnJvd0RpcmVjdGlvbigpO1xuICAgICAgfVxuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgV2Ugc2V0IHRoZSBgdGFiaW5kZXhgIG9uIGFuIGVsZW1lbnQgaW5zaWRlIHRoZSB0YWJsZSBoZWFkZXIsIHJhdGhlciB0aGFuIHRoZSBoZWFkZXIgaXRzZWxmLFxuICBiZWNhdXNlIG9mIGEgYnVnIGluIE5WREEgd2hlcmUgaGF2aW5nIGEgYHRhYmluZGV4YCBvbiBhIGB0aGAgYnJlYWtzIGtleWJvYXJkIG5hdmlnYXRpb24gaW4gdGhlXG4gIHRhYmxlIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL252YWNjZXNzL252ZGEvaXNzdWVzLzc3MTgpLiBUaGlzIGFsbG93cyBmb3IgdGhlIGhlYWRlciB0byBib3RoXG4gIGJlIGZvY3VzYWJsZSwgYW5kIGhhdmUgc2NyZWVuIHJlYWRlcnMgcmVhZCBvdXQgaXRzIGBhcmlhLXNvcnRgIHN0YXRlLiBXZSBwcmVmZXIgdGhpcyBhcHByb2FjaFxuICBvdmVyIGhhdmluZyBhIGJ1dHRvbiB3aXRoIGFuIGBhcmlhLWxhYmVsYCBpbnNpZGUgdGhlIGhlYWRlciwgYmVjYXVzZSB0aGUgYnV0dG9uJ3MgYGFyaWEtbGFiZWxgXG4gIHdpbGwgYmUgcmVhZCBvdXQgYXMgdGhlIHVzZXIgaXMgbmF2aWdhdGluZyB0aGUgdGFibGUncyBjZWxsIChzZWUgIzEzMDEyKS5cblxuICBUaGUgYXBwcm9hY2ggaXMgYmFzZWQgb2ZmIG9mOiBodHRwczovL2RlcXVldW5pdmVyc2l0eS5jb20vbGlicmFyeS9hcmlhL3RhYmxlcy9zZi1zb3J0YWJsZS1ncmlkXG4tLT5cbjxkaXYgY2xhc3M9XCJpdC1zb3J0LWhlYWRlci1jb250YWluZXIgaXQtZm9jdXMtaW5kaWNhdG9yXCJcbiAgICAgW2NsYXNzLml0LXNvcnQtaGVhZGVyLXNvcnRlZF09XCJpc1NvcnRlZFwiXG4gICAgIFtjbGFzcy5pdC1zb3J0LWhlYWRlci1wb3NpdGlvbi1iZWZvcmVdPVwiYXJyb3dQb3NpdGlvbiA9PT0gJ2JlZm9yZSdcIlxuICAgICBbYXR0ci50YWJpbmRleF09XCJpc0Rpc2FibGVkID8gbnVsbCA6IDBcIlxuICAgICBbYXR0ci5yb2xlXT1cImlzRGlzYWJsZWQgPyBudWxsIDogJ2J1dHRvbidcIj5cblxuICA8IS0tXG4gICAgV2UgaGF2ZSB0byBrZWVwIGl0IGR1ZSB0byBhIGxhcmdlIG51bWJlciBvZiBzY3JlZW5zaG90IGRpZmYgZmFpbHVyZXMuIEl0IHNob3VsZCBiZSByZW1vdmVkIGV2ZW50dWFsbHkuXG4gICAgTm90ZSB0aGF0IHRoZSBkaWZmZXJlbmNlIGlzbid0IHZpc2libGUgd2l0aCBhIHNob3J0ZXIgaGVhZGVyLCBidXQgb25jZSBpdCBicmVha3MgdXAgaW50byBtdWx0aXBsZSBsaW5lcywgdGhpcyBlbGVtZW50XG4gICAgY2F1c2VzIGl0IHRvIGJlIGNlbnRlci1hbGlnbmVkLCB3aGVyZWFzIHJlbW92aW5nIGl0IHdpbGwga2VlcCB0aGUgdGV4dCB0byB0aGUgbGVmdC5cbiAgLS0+XG4gIDxkaXYgY2xhc3M9XCJpdC1zb3J0LWhlYWRlci1jb250ZW50XCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cblxuICA8aXQtaWNvbiBjbGFzcz1cIml0LXNvcnQtYXJyb3dcIiBzaXplPVwic21cIiBbbmFtZV09XCJhcnJvd0ljb25DbGFzc1wiIC8+XG48L2Rpdj5cbiJdfQ==
|