design-angular-kit 1.0.0-9 → 1.0.0-prerelease.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +77 -7
- 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/components.module.mjs +218 -0
- package/esm2022/lib/components/core/accordion/accordion.component.mjs +38 -0
- package/esm2022/lib/components/core/alert/alert.component.mjs +72 -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/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 +81 -0
- package/esm2022/lib/components/core/carousel/carousel-item/carousel-item.component.mjs +19 -0
- package/esm2022/lib/components/core/carousel/carousel.module.mjs +23 -0
- package/esm2022/lib/components/core/chip/chip.component.mjs +96 -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 +59 -0
- package/esm2022/lib/components/core/dimmer/dimmer.module.mjs +27 -0
- package/esm2022/lib/components/core/dropdown/dropdown/dropdown.component.mjs +141 -0
- package/esm2022/lib/components/core/dropdown/dropdown-item/dropdown-item.component.mjs +62 -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 +23 -0
- package/esm2022/lib/components/core/modal/modal.component.mjs +195 -0
- package/esm2022/lib/components/core/notifications/notifications.component.mjs +112 -0
- package/esm2022/lib/components/core/pagination/pagination.component.mjs +127 -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 +26 -0
- package/esm2022/lib/components/core/spinner/spinner.component.mjs +31 -0
- package/esm2022/lib/components/core/steppers/steppers-container/steppers-container.component.mjs +112 -0
- package/esm2022/lib/components/core/steppers/steppers-item/steppers-item.component.mjs +19 -0
- package/esm2022/lib/components/core/steppers/steppers.module.mjs +23 -0
- package/esm2022/lib/components/core/tab/tab-container/tab-container.component.mjs +60 -0
- package/esm2022/lib/components/core/tab/tab-item/tab-item.component.mjs +39 -0
- package/esm2022/lib/components/core/tab/tab.module.mjs +23 -0
- package/esm2022/lib/components/core/table/sort/sort-header/sort-header.component.mjs +136 -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/tooltip/tooltip.directive.mjs +143 -0
- package/esm2022/lib/components/form/autocomplete/autocomplete.component.mjs +95 -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 +58 -0
- package/esm2022/lib/components/form/range/range.component.mjs +64 -0
- package/esm2022/lib/components/form/rating/rating.component.mjs +51 -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 +140 -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 +55 -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 +73 -0
- package/esm2022/lib/components/navigation/navbar/navbar/navbar.component.mjs +41 -0
- package/esm2022/lib/components/navigation/navbar/navbar-item/navbar-item.component.mjs +13 -0
- package/esm2022/lib/components/navigation/navbar/navbar.module.mjs +18 -0
- package/esm2022/lib/components/utils/error-page/error-page.component.mjs +75 -0
- package/esm2022/lib/components/utils/icon/icon.component.mjs +56 -0
- package/esm2022/lib/components/utils/language-switcher/language-switcher.component.mjs +47 -0
- package/esm2022/lib/design-angular-kit-config.mjs +15 -0
- package/esm2022/lib/design-angular-kit.module.mjs +68 -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-init.mjs +2 -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/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 +98 -0
- package/fesm2022/design-angular-kit.mjs +5450 -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/components.module.d.ts +45 -0
- 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/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 +8 -5
- 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 +4 -4
- package/lib/components/core/dimmer/dimmer.module.d.ts +9 -0
- package/lib/components/core/dropdown/dropdown/dropdown.component.d.ts +24 -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/tooltip/tooltip.directive.d.ts +12 -11
- package/lib/components/form/autocomplete/autocomplete.component.d.ts +49 -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 +5 -5
- 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 +13 -10
- 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 +22 -25
- 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 +15 -15
- package/lib/components/utils/language-switcher/language-switcher.component.d.ts +9 -5
- package/lib/design-angular-kit-config.d.ts +16 -0
- package/lib/design-angular-kit.module.d.ts +6 -4
- 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-init.d.ts +7 -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/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 +14 -20
- package/public_api.d.ts +29 -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
package/esm2022/lib/components/core/steppers/steppers-container/steppers-container.component.mjs
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
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 { NgForOf, NgIf, 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.pipe(// When steps changes (dynamic add/remove)
|
|
38
|
+
startWith(undefined)).subscribe(() => {
|
|
39
|
+
this.stepsSubscriptions?.forEach(sub => sub.unsubscribe()); // Remove old subscriptions
|
|
40
|
+
this.stepsSubscriptions = this.steps?.map(step => step.valueChanges.subscribe(() => {
|
|
41
|
+
this._changeDetectorRef.detectChanges(); // DetectChanges when step attributes changes
|
|
42
|
+
}));
|
|
43
|
+
this._changeDetectorRef.detectChanges(); // Force update html render
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
ngOnDestroy() {
|
|
47
|
+
this.stepsSubscriptions?.forEach(step => step.unsubscribe());
|
|
48
|
+
}
|
|
49
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ItSteppersContainerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
50
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "16.2.7", type: ItSteppersContainerComponent, isStandalone: true, selector: "it-steppers-container[activeStep]", 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 <div *ngIf=\"showHeader\" class=\"steppers-header\">\n <ul *ngIf=\"steps\">\n <li *ngFor=\"let step of steps; let i = index\"\n [class.confirmed]=\"i < activeStep\"\n [class.active]=\"i === activeStep\"\n [class.no-line]=\"i === activeStep && steppersNumber\">\n\n <it-icon *ngIf=\"step.icon && !steppersNumber\" [name]=\"step.icon\"></it-icon>\n <span *ngIf=\"steppersNumber\" class=\"steppers-number\">\n <ng-container *ngIf=\"i < activeStep; else showNumber\">\n <ng-container *ngTemplateOutlet=\"checkIcon\"></ng-container>\n </ng-container>\n <ng-template #showNumber>\n <span class=\"visually-hidden\">{{'it.core.step' | translate}} </span>{{i + 1}}\n </ng-template>\n </span>\n\n {{step.label}}\n\n <ng-container *ngIf=\"i < activeStep && !steppersNumber\">\n <ng-container *ngTemplateOutlet=\"checkIcon\"></ng-container>\n </ng-container>\n <span *ngIf=\"i === activeStep\" class=\"visually-hidden\">{{'it.core.active' | translate}}</span>\n </li>\n </ul>\n <span *ngIf=\"steps\" class=\"steppers-index\" aria-hidden=\"true\">\n <ng-container *ngIf=\"!steppersNumber; else showNumbers\">\n {{(activeStep + 1) + '/' + steps.length}}\n </ng-container>\n <ng-template #showNumbers>\n <span *ngFor=\"let step of steps; let i = index\" [class.active]=\"i === activeStep\">{{i + 1}}</span>\n </ng-template>\n </span>\n </div>\n\n <div *ngIf=\"steps?.get(activeStep) as step\" class=\"steppers-content\" aria-live=\"polite\">\n <ng-container *ngTemplateOutlet=\"step.htmlContent\"></ng-container>\n </div>\n\n <nav *ngIf=\"showBackButton || showSaveButton || showForwardButton || showConfirmButton || !!progressStyle\"\n class=\"steppers-nav\">\n <button *ngIf=\"showBackButton\" type=\"button\" itButton=\"outline-primary\" size=\"sm\" 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 <ng-container *ngIf=\"!!progressStyle && steps\">\n <ul *ngIf=\"progressStyle === 'dots'; else progressBar\" class=\"steppers-dots\">\n <li *ngFor=\"let step of steps; let i = index\" [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 </ul>\n\n <ng-template #progressBar>\n <div class=\"steppers-progress\">\n <it-progress-bar [color]=\"progressColor\" [value]=\"(activeStep/(steps?.length||1)) * 100\"></it-progress-bar>\n </div>\n </ng-template>\n </ng-container>\n\n <button *ngIf=\"showSaveButton\" type=\"button\" itButton=\"primary\" size=\"sm\" class=\"steppers-btn-save\"\n [progress]=\"saveLoading\" [disabled]=\"saveLoading || disableSaveButton\"\n (click)=\"saveClick.emit(activeStep)\">\n {{'it.general.save' | translate}}\n </button>\n\n <button *ngIf=\"showForwardButton\" type=\"button\" itButton=\"outline-primary\" size=\"sm\" 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 <button *ngIf=\"showConfirmButton\" type=\"button\" itButton=\"primary\" size=\"sm\"\n class=\"steppers-btn-confirm d-lg-block\"\n [progress]=\"confirmLoading\" [disabled]=\"confirmLoading || disableConfirmButton\"\n (click)=\"confirmClick.emit(activeStep)\">\n {{'it.core.confirm' | translate}}\n </button>\n </nav>\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: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ItIconComponent, selector: "it-icon[name]", inputs: ["name", "size", "color", "padded", "svgClass"] }, { 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[value]", inputs: ["value", "showLabel", "indeterminate", "color"] }, { kind: "component", type: ItProgressButtonComponent, selector: "button[itButton][progress]", inputs: ["progress", "progressColor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
51
|
+
}
|
|
52
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ItSteppersContainerComponent, decorators: [{
|
|
53
|
+
type: Component,
|
|
54
|
+
args: [{ standalone: true, selector: 'it-steppers-container[activeStep]', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgIf, NgForOf, ItIconComponent, NgTemplateOutlet, TranslateModule, ItButtonDirective, ItProgressBarComponent, ItProgressButtonComponent], template: "<div class=\"steppers\" [class.bg-dark]=\"dark\">\n <div *ngIf=\"showHeader\" class=\"steppers-header\">\n <ul *ngIf=\"steps\">\n <li *ngFor=\"let step of steps; let i = index\"\n [class.confirmed]=\"i < activeStep\"\n [class.active]=\"i === activeStep\"\n [class.no-line]=\"i === activeStep && steppersNumber\">\n\n <it-icon *ngIf=\"step.icon && !steppersNumber\" [name]=\"step.icon\"></it-icon>\n <span *ngIf=\"steppersNumber\" class=\"steppers-number\">\n <ng-container *ngIf=\"i < activeStep; else showNumber\">\n <ng-container *ngTemplateOutlet=\"checkIcon\"></ng-container>\n </ng-container>\n <ng-template #showNumber>\n <span class=\"visually-hidden\">{{'it.core.step' | translate}} </span>{{i + 1}}\n </ng-template>\n </span>\n\n {{step.label}}\n\n <ng-container *ngIf=\"i < activeStep && !steppersNumber\">\n <ng-container *ngTemplateOutlet=\"checkIcon\"></ng-container>\n </ng-container>\n <span *ngIf=\"i === activeStep\" class=\"visually-hidden\">{{'it.core.active' | translate}}</span>\n </li>\n </ul>\n <span *ngIf=\"steps\" class=\"steppers-index\" aria-hidden=\"true\">\n <ng-container *ngIf=\"!steppersNumber; else showNumbers\">\n {{(activeStep + 1) + '/' + steps.length}}\n </ng-container>\n <ng-template #showNumbers>\n <span *ngFor=\"let step of steps; let i = index\" [class.active]=\"i === activeStep\">{{i + 1}}</span>\n </ng-template>\n </span>\n </div>\n\n <div *ngIf=\"steps?.get(activeStep) as step\" class=\"steppers-content\" aria-live=\"polite\">\n <ng-container *ngTemplateOutlet=\"step.htmlContent\"></ng-container>\n </div>\n\n <nav *ngIf=\"showBackButton || showSaveButton || showForwardButton || showConfirmButton || !!progressStyle\"\n class=\"steppers-nav\">\n <button *ngIf=\"showBackButton\" type=\"button\" itButton=\"outline-primary\" size=\"sm\" 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 <ng-container *ngIf=\"!!progressStyle && steps\">\n <ul *ngIf=\"progressStyle === 'dots'; else progressBar\" class=\"steppers-dots\">\n <li *ngFor=\"let step of steps; let i = index\" [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 </ul>\n\n <ng-template #progressBar>\n <div class=\"steppers-progress\">\n <it-progress-bar [color]=\"progressColor\" [value]=\"(activeStep/(steps?.length||1)) * 100\"></it-progress-bar>\n </div>\n </ng-template>\n </ng-container>\n\n <button *ngIf=\"showSaveButton\" type=\"button\" itButton=\"primary\" size=\"sm\" class=\"steppers-btn-save\"\n [progress]=\"saveLoading\" [disabled]=\"saveLoading || disableSaveButton\"\n (click)=\"saveClick.emit(activeStep)\">\n {{'it.general.save' | translate}}\n </button>\n\n <button *ngIf=\"showForwardButton\" type=\"button\" itButton=\"outline-primary\" size=\"sm\" 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 <button *ngIf=\"showConfirmButton\" type=\"button\" itButton=\"primary\" size=\"sm\"\n class=\"steppers-btn-confirm d-lg-block\"\n [progress]=\"confirmLoading\" [disabled]=\"confirmLoading || disableConfirmButton\"\n (click)=\"confirmClick.emit(activeStep)\">\n {{'it.core.confirm' | translate}}\n </button>\n </nav>\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" }]
|
|
55
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { activeStep: [{
|
|
56
|
+
type: Input
|
|
57
|
+
}], showHeader: [{
|
|
58
|
+
type: Input,
|
|
59
|
+
args: [{ transform: inputToBoolean }]
|
|
60
|
+
}], dark: [{
|
|
61
|
+
type: Input,
|
|
62
|
+
args: [{ transform: inputToBoolean }]
|
|
63
|
+
}], steppersNumber: [{
|
|
64
|
+
type: Input,
|
|
65
|
+
args: [{ transform: inputToBoolean }]
|
|
66
|
+
}], progressStyle: [{
|
|
67
|
+
type: Input
|
|
68
|
+
}], progressColor: [{
|
|
69
|
+
type: Input
|
|
70
|
+
}], showBackButton: [{
|
|
71
|
+
type: Input,
|
|
72
|
+
args: [{ transform: inputToBoolean }]
|
|
73
|
+
}], disableBackButton: [{
|
|
74
|
+
type: Input,
|
|
75
|
+
args: [{ transform: inputToBoolean }]
|
|
76
|
+
}], showForwardButton: [{
|
|
77
|
+
type: Input,
|
|
78
|
+
args: [{ transform: inputToBoolean }]
|
|
79
|
+
}], disableForwardButton: [{
|
|
80
|
+
type: Input,
|
|
81
|
+
args: [{ transform: inputToBoolean }]
|
|
82
|
+
}], showConfirmButton: [{
|
|
83
|
+
type: Input,
|
|
84
|
+
args: [{ transform: inputToBoolean }]
|
|
85
|
+
}], disableConfirmButton: [{
|
|
86
|
+
type: Input,
|
|
87
|
+
args: [{ transform: inputToBoolean }]
|
|
88
|
+
}], confirmLoading: [{
|
|
89
|
+
type: Input,
|
|
90
|
+
args: [{ transform: inputToBoolean }]
|
|
91
|
+
}], showSaveButton: [{
|
|
92
|
+
type: Input,
|
|
93
|
+
args: [{ transform: inputToBoolean }]
|
|
94
|
+
}], disableSaveButton: [{
|
|
95
|
+
type: Input,
|
|
96
|
+
args: [{ transform: inputToBoolean }]
|
|
97
|
+
}], saveLoading: [{
|
|
98
|
+
type: Input,
|
|
99
|
+
args: [{ transform: inputToBoolean }]
|
|
100
|
+
}], steps: [{
|
|
101
|
+
type: ContentChildren,
|
|
102
|
+
args: [ItSteppersItemComponent]
|
|
103
|
+
}], backClick: [{
|
|
104
|
+
type: Output
|
|
105
|
+
}], forwardClick: [{
|
|
106
|
+
type: Output
|
|
107
|
+
}], confirmClick: [{
|
|
108
|
+
type: Output
|
|
109
|
+
}], saveClick: [{
|
|
110
|
+
type: Output
|
|
111
|
+
}] } });
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlcnMtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9zdGVwcGVycy9zdGVwcGVycy1jb250YWluZXIvc3RlcHBlcnMtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9zdGVwcGVycy9zdGVwcGVycy1jb250YWluZXIvc3RlcHBlcnMtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULGVBQWUsRUFDZixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUVuRixPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDNUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFTNUQs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LEVBQUUsY0FBYyxFQUFFO2dCQU1FLGlCQUFpQjtzQkFBdEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBTUUsb0JBQW9CO3NCQUF6RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRTtnQkFNRSxpQkFBaUI7c0JBQXRELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFO2dCQU1FLG9CQUFvQjtzQkFBekQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBS0UsY0FBYztzQkFBbkQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBTUUsY0FBYztzQkFBbkQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBTUUsaUJBQWlCO3NCQUF0RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRTtnQkFLRSxXQUFXO3NCQUFoRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRTtnQkFLTSxLQUFLO3NCQUE5QyxlQUFlO3VCQUFDLHVCQUF1QjtnQkFNOUIsU0FBUztzQkFBbEIsTUFBTTtnQkFNRyxZQUFZO3NCQUFyQixNQUFNO2dCQU1HLFlBQVk7c0JBQXJCLE1BQU07Z0JBTUcsU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJdFN0ZXBwZXJzSXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL3N0ZXBwZXJzLWl0ZW0vc3RlcHBlcnMtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NCYXJDb2xvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvY29yZSc7XG5pbXBvcnQgeyBzdGFydFdpdGgsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTmdGb3JPZiwgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJdEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9pY29uL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgSXRCdXR0b25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9idXR0b24vYnV0dG9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJdFByb2dyZXNzQmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcHJvZ3Jlc3MtYmFyL3Byb2dyZXNzLWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgSXRQcm9ncmVzc0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3Byb2dyZXNzLWJ1dHRvbi9wcm9ncmVzcy1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IGlucHV0VG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvY29lcmNpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdpdC1zdGVwcGVycy1jb250YWluZXJbYWN0aXZlU3RlcF0nLFxuICB0ZW1wbGF0ZVVybDogJy4vc3RlcHBlcnMtY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtOZ0lmLCBOZ0Zvck9mLCBJdEljb25Db21wb25lbnQsIE5nVGVtcGxhdGVPdXRsZXQsIFRyYW5zbGF0ZU1vZHVsZSwgSXRCdXR0b25EaXJlY3RpdmUsIEl0UHJvZ3Jlc3NCYXJDb21wb25lbnQsIEl0UHJvZ3Jlc3NCdXR0b25Db21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIEl0U3RlcHBlcnNDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIC8qKlxuICAgKiBUaGUgYWN0aXZlIHN0ZXAgaW5kZXhcbiAgICogQHBhcmFtIGluZGV4IHRoZSBzdGVwIGluZGV4XG4gICAqL1xuICBASW5wdXQoKSBhY3RpdmVTdGVwITogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTaG93IHRoZSBzdGVwcGVyIGhlYWRlclxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIHNob3dIZWFkZXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBEYXJrIHN0eWxlXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIGRhcms/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbGFiZWxzIHByZXNlbnQgaW4gdGhlIGhlYWRlciBzdGVwcyBjYW4gYmUgYW50aWNpcGF0ZWQgYnkgdGhlIHJlbGF0aXZlIG9yZGluYWwgbnVtYmVyLlxuICAgKiBAZWZ1YWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIHN0ZXBwZXJzTnVtYmVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHByb2dyZXNzIHN0eWxlXG4gICAqIC08Yj5wcm9ncmVzczwvYj46IFNob3cgcHJvZ3Jlc3MgYmFyIC0gWW91IGNhbiBjaGFuZ2UgdGhlIGNvbG9yIHdpdGggdGhlIGBwcm9ncmVzc0NvbG9yYCBhdHRyaWJ1dGVcbiAgICogLTxiPmRvdHM8L2I+OiBTaG93IHByb2dyZXNzIGRvdHNcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIC0gZG9uJ3Qgc2hvdyBwcm9ncmVzc1xuICAgKi9cbiAgQElucHV0KCkgcHJvZ3Jlc3NTdHlsZTogJ3Byb2dyZXNzJyB8ICdkb3RzJyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQ3VzdG9taXplIHByb2dyZXNzIGNvbG9yXG4gICAqL1xuICBASW5wdXQoKSBwcm9ncmVzc0NvbG9yOiBQcm9ncmVzc0JhckNvbG9yIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBTaG93IHRoZSBiYWNrIGJ1dHRvblxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIHNob3dCYWNrQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogRGlzYWJsZSB0aGUgYmFjayBidXR0b25cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogaW5wdXRUb0Jvb2xlYW4gfSkgZGlzYWJsZUJhY2tCdXR0b24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTaG93IHRoZSBmb3J3YXJkIGJ1dHRvblxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIHNob3dGb3J3YXJkQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogRGlzYWJsZSB0aGUgZm9yd2FyZCBidXR0b25cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogaW5wdXRUb0Jvb2xlYW4gfSkgZGlzYWJsZUZvcndhcmRCdXR0b24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTaG93IHRoZSBjb25maXJtIGJ1dHRvblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBpbnB1dFRvQm9vbGVhbiB9KSBzaG93Q29uZmlybUJ1dHRvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIGNvbmZpcm0gYnV0dG9uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIGRpc2FibGVDb25maXJtQnV0dG9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2hvdyB0aGUgY29uZmlybSBidXR0b24gYXMgaW5kZXRlcm1pbmF0ZSBwcm9ncmVzcyBidXR0b25cbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogaW5wdXRUb0Jvb2xlYW4gfSkgY29uZmlybUxvYWRpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTaG93IHRoZSBzYXZlIGJ1dHRvblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBpbnB1dFRvQm9vbGVhbiB9KSBzaG93U2F2ZUJ1dHRvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIHNhdmUgYnV0dG9uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIGRpc2FibGVTYXZlQnV0dG9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2hvdyB0aGUgc2F2ZSBidXR0b24gYXMgaW5kZXRlcm1pbmF0ZSBwcm9ncmVzcyBidXR0b25cbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogaW5wdXRUb0Jvb2xlYW4gfSkgc2F2ZUxvYWRpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RlcHBlciBpdGVtc1xuICAgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihJdFN0ZXBwZXJzSXRlbUNvbXBvbmVudCkgc3RlcHM/OiBRdWVyeUxpc3Q8SXRTdGVwcGVyc0l0ZW1Db21wb25lbnQ+O1xuXG4gIC8qKlxuICAgKiBPbiBiYWNrIGJ1dHRvbiBjbGlja1xuICAgKiBAZXZlbnQgYWN0aXZlU3RlcCB0aGUgY3VycmVudCBzdGVwIGluZGV4XG4gICAqL1xuICBAT3V0cHV0KCkgYmFja0NsaWNrOiBFdmVudEVtaXR0ZXI8bnVtYmVyPjtcblxuICAvKipcbiAgICogT24gZm9yd2FyZCBidXR0b24gY2xpY2tcbiAgICogQGV2ZW50IGFjdGl2ZVN0ZXAgdGhlIGN1cnJlbnQgc3RlcCBpbmRleFxuICAgKi9cbiAgQE91dHB1dCgpIGZvcndhcmRDbGljazogRXZlbnRFbWl0dGVyPG51bWJlcj47XG5cbiAgLyoqXG4gICAqIE9uIGNvbmZpcm0gYnV0dG9uIGNsaWNrXG4gICAqIEBldmVudCBhY3RpdmVTdGVwIHRoZSBjdXJyZW50IHN0ZXAgaW5kZXhcbiAgICovXG4gIEBPdXRwdXQoKSBjb25maXJtQ2xpY2s6IEV2ZW50RW1pdHRlcjxudW1iZXI+O1xuXG4gIC8qKlxuICAgKiBPbiBzYXZlIGJ1dHRvbiBjbGlja1xuICAgKiBAZXZlbnQgYWN0aXZlU3RlcCB0aGUgY3VycmVudCBzdGVwIGluZGV4XG4gICAqL1xuICBAT3V0cHV0KCkgc2F2ZUNsaWNrOiBFdmVudEVtaXR0ZXI8bnVtYmVyPjtcblxuICBwcml2YXRlIHN0ZXBzU3Vic2NyaXB0aW9ucz86IEFycmF5PFN1YnNjcmlwdGlvbj47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMuYmFja0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gICAgdGhpcy5mb3J3YXJkQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgICB0aGlzLmNvbmZpcm1DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICAgIHRoaXMuc2F2ZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdGVwcz8uY2hhbmdlcy5waXBlKCAvLyBXaGVuIHN0ZXBzIGNoYW5nZXMgKGR5bmFtaWMgYWRkL3JlbW92ZSlcbiAgICAgIHN0YXJ0V2l0aCh1bmRlZmluZWQpXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5zdGVwc1N1YnNjcmlwdGlvbnM/LmZvckVhY2goc3ViID0+IHN1Yi51bnN1YnNjcmliZSgpKTsgLy8gUmVtb3ZlIG9sZCBzdWJzY3JpcHRpb25zXG4gICAgICB0aGlzLnN0ZXBzU3Vic2NyaXB0aW9ucyA9IHRoaXMuc3RlcHM/Lm1hcChzdGVwID0+IHN0ZXAudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTsgLy8gRGV0ZWN0Q2hhbmdlcyB3aGVuIHN0ZXAgYXR0cmlidXRlcyBjaGFuZ2VzXG4gICAgICB9KSk7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7IC8vIEZvcmNlIHVwZGF0ZSBodG1sIHJlbmRlclxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdGVwc1N1YnNjcmlwdGlvbnM/LmZvckVhY2goc3RlcCA9PiBzdGVwLnVuc3Vic2NyaWJlKCkpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic3RlcHBlcnNcIiBbY2xhc3MuYmctZGFya109XCJkYXJrXCI+XG4gIDxkaXYgKm5nSWY9XCJzaG93SGVhZGVyXCIgY2xhc3M9XCJzdGVwcGVycy1oZWFkZXJcIj5cbiAgICA8dWwgKm5nSWY9XCJzdGVwc1wiPlxuICAgICAgPGxpICpuZ0Zvcj1cImxldCBzdGVwIG9mIHN0ZXBzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICBbY2xhc3MuY29uZmlybWVkXT1cImkgPCBhY3RpdmVTdGVwXCJcbiAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImkgPT09IGFjdGl2ZVN0ZXBcIlxuICAgICAgICAgIFtjbGFzcy5uby1saW5lXT1cImkgPT09IGFjdGl2ZVN0ZXAgJiYgc3RlcHBlcnNOdW1iZXJcIj5cblxuICAgICAgICA8aXQtaWNvbiAqbmdJZj1cInN0ZXAuaWNvbiAmJiAhc3RlcHBlcnNOdW1iZXJcIiBbbmFtZV09XCJzdGVwLmljb25cIj48L2l0LWljb24+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwic3RlcHBlcnNOdW1iZXJcIiBjbGFzcz1cInN0ZXBwZXJzLW51bWJlclwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpIDwgYWN0aXZlU3RlcDsgZWxzZSBzaG93TnVtYmVyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2hlY2tJY29uXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNzaG93TnVtYmVyPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj57eydpdC5jb3JlLnN0ZXAnIHwgdHJhbnNsYXRlfX0gPC9zcGFuPnt7aSArIDF9fVxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICB7e3N0ZXAubGFiZWx9fVxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpIDwgYWN0aXZlU3RlcCAmJiAhc3RlcHBlcnNOdW1iZXJcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2hlY2tJY29uXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8c3BhbiAqbmdJZj1cImkgPT09IGFjdGl2ZVN0ZXBcIiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPnt7J2l0LmNvcmUuYWN0aXZlJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxzcGFuICpuZ0lmPVwic3RlcHNcIiBjbGFzcz1cInN0ZXBwZXJzLWluZGV4XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXN0ZXBwZXJzTnVtYmVyOyBlbHNlIHNob3dOdW1iZXJzXCI+XG4gICAgICAgIHt7KGFjdGl2ZVN0ZXAgKyAxKSArICcvJyArIHN0ZXBzLmxlbmd0aH19XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd051bWJlcnM+XG4gICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBzdGVwIG9mIHN0ZXBzOyBsZXQgaSA9IGluZGV4XCIgW2NsYXNzLmFjdGl2ZV09XCJpID09PSBhY3RpdmVTdGVwXCI+e3tpICsgMX19PC9zcGFuPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJzdGVwcz8uZ2V0KGFjdGl2ZVN0ZXApIGFzIHN0ZXBcIiBjbGFzcz1cInN0ZXBwZXJzLWNvbnRlbnRcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RlcC5odG1sQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8bmF2ICpuZ0lmPVwic2hvd0JhY2tCdXR0b24gfHwgc2hvd1NhdmVCdXR0b24gfHwgc2hvd0ZvcndhcmRCdXR0b24gfHwgc2hvd0NvbmZpcm1CdXR0b24gfHwgISFwcm9ncmVzc1N0eWxlXCJcbiAgICAgICBjbGFzcz1cInN0ZXBwZXJzLW5hdlwiPlxuICAgIDxidXR0b24gKm5nSWY9XCJzaG93QmFja0J1dHRvblwiIHR5cGU9XCJidXR0b25cIiBpdEJ1dHRvbj1cIm91dGxpbmUtcHJpbWFyeVwiIHNpemU9XCJzbVwiIGNsYXNzPVwic3RlcHBlcnMtYnRuLXByZXZcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVCYWNrQnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJiYWNrQ2xpY2suZW1pdChhY3RpdmVTdGVwKVwiPlxuICAgICAgPGl0LWljb24gbmFtZT1cImNoZXZyb24tbGVmdFwiIGNvbG9yPVwicHJpbWFyeVwiPjwvaXQtaWNvbj5cbiAgICAgIHt7J2l0LmNvcmUuYmFjaycgfCB0cmFuc2xhdGV9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEhcHJvZ3Jlc3NTdHlsZSAmJiBzdGVwc1wiPlxuICAgICAgPHVsICpuZ0lmPVwicHJvZ3Jlc3NTdHlsZSA9PT0gJ2RvdHMnOyBlbHNlIHByb2dyZXNzQmFyXCIgY2xhc3M9XCJzdGVwcGVycy1kb3RzXCI+XG4gICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgc3RlcCBvZiBzdGVwczsgbGV0IGkgPSBpbmRleFwiIFtjbGFzcy5kb25lXT1cImkgPCBhY3RpdmVTdGVwXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5cbiAgICAgICAgICAgIHt7J2l0LmNvcmUuc3RlcC1vZicgfCB0cmFuc2xhdGU6IHsgY3VycmVudDogYWN0aXZlU3RlcCArIDEsIGF2YWlsYWJsZTogc3RlcHM/Lmxlbmd0aCB9IH19XG4gICAgICAgICAgICB7e2kgPCBhY3RpdmVTdGVwID8gKCctICcgKyAoJ2l0LmNvcmUuY29uZmlybWVkJyB8IHRyYW5zbGF0ZSkpIDogJyd9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvdWw+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjcHJvZ3Jlc3NCYXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVycy1wcm9ncmVzc1wiPlxuICAgICAgICAgIDxpdC1wcm9ncmVzcy1iYXIgW2NvbG9yXT1cInByb2dyZXNzQ29sb3JcIiBbdmFsdWVdPVwiKGFjdGl2ZVN0ZXAvKHN0ZXBzPy5sZW5ndGh8fDEpKSAqIDEwMFwiPjwvaXQtcHJvZ3Jlc3MtYmFyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8YnV0dG9uICpuZ0lmPVwic2hvd1NhdmVCdXR0b25cIiB0eXBlPVwiYnV0dG9uXCIgaXRCdXR0b249XCJwcmltYXJ5XCIgc2l6ZT1cInNtXCIgY2xhc3M9XCJzdGVwcGVycy1idG4tc2F2ZVwiXG4gICAgICAgICAgICBbcHJvZ3Jlc3NdPVwic2F2ZUxvYWRpbmdcIiBbZGlzYWJsZWRdPVwic2F2ZUxvYWRpbmcgfHwgZGlzYWJsZVNhdmVCdXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNhdmVDbGljay5lbWl0KGFjdGl2ZVN0ZXApXCI+XG4gICAgICB7eydpdC5nZW5lcmFsLnNhdmUnIHwgdHJhbnNsYXRlfX1cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b24gKm5nSWY9XCJzaG93Rm9yd2FyZEJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiBpdEJ1dHRvbj1cIm91dGxpbmUtcHJpbWFyeVwiIHNpemU9XCJzbVwiIGNsYXNzPVwic3RlcHBlcnMtYnRuLW5leHRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVGb3J3YXJkQnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJmb3J3YXJkQ2xpY2suZW1pdChhY3RpdmVTdGVwKVwiPlxuICAgICAge3snaXQuY29yZS5mb3J3YXJkJyB8IHRyYW5zbGF0ZX19XG4gICAgICA8aXQtaWNvbiBuYW1lPVwiY2hldnJvbi1yaWdodFwiIGNvbG9yPVwicHJpbWFyeVwiPjwvaXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b24gKm5nSWY9XCJzaG93Q29uZmlybUJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiBpdEJ1dHRvbj1cInByaW1hcnlcIiBzaXplPVwic21cIlxuICAgICAgICAgICAgY2xhc3M9XCJzdGVwcGVycy1idG4tY29uZmlybSBkLWxnLWJsb2NrXCJcbiAgICAgICAgICAgIFtwcm9ncmVzc109XCJjb25maXJtTG9hZGluZ1wiIFtkaXNhYmxlZF09XCJjb25maXJtTG9hZGluZyB8fCBkaXNhYmxlQ29uZmlybUJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybUNsaWNrLmVtaXQoYWN0aXZlU3RlcClcIj5cbiAgICAgIHt7J2l0LmNvcmUuY29uZmlybScgfCB0cmFuc2xhdGV9fVxuICAgIDwvYnV0dG9uPlxuICA8L25hdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2NoZWNrSWNvbj5cbiAgPGl0LWljb24gbmFtZT1cImNoZWNrXCIgY2xhc3M9XCJzdGVwcGVycy1zdWNjZXNzXCI+PC9pdC1pY29uPlxuICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPnt7J2l0LmNvcmUuY29uZmlybWVkJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
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: "16.2.7", ngImport: i0, type: ItSteppersItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
6
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: ItSteppersItemComponent, isStandalone: true, selector: "it-steppers-item[label]", 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: "16.2.7", ngImport: i0, type: ItSteppersItemComponent, decorators: [{
|
|
9
|
+
type: Component,
|
|
10
|
+
args: [{ standalone: true, selector: 'it-steppers-item[label]', changeDetection: ChangeDetectionStrategy.OnPush, imports: [], template: "<ng-template>\n <ng-content></ng-content>\n</ng-template>\n" }]
|
|
11
|
+
}], propDecorators: { label: [{
|
|
12
|
+
type: Input
|
|
13
|
+
}], icon: [{
|
|
14
|
+
type: Input
|
|
15
|
+
}], htmlContent: [{
|
|
16
|
+
type: ViewChild,
|
|
17
|
+
args: [TemplateRef]
|
|
18
|
+
}] } });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlcnMtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvc3RlcHBlcnMvc3RlcHBlcnMtaXRlbS9zdGVwcGVycy1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9zdGVwcGVycy9zdGVwcGVycy1pdGVtL3N0ZXBwZXJzLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7QUFTL0UsTUFBTSxPQUFPLHVCQUF3QixTQUFRLG1CQUFtQjs4R0FBbkQsdUJBQXVCO2tHQUF2Qix1QkFBdUIsMEtBZXZCLFdBQVcsdUVDMUJ4Qiw4REFHQTs7MkZEUWEsdUJBQXVCO2tCQVBuQyxTQUFTO2lDQUNJLElBQUksWUFDTix5QkFBeUIsbUJBRWxCLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsRUFBRTs4QkFPRixLQUFLO3NCQUFiLEtBQUs7Z0JBS0csSUFBSTtzQkFBWixLQUFLO2dCQUt5QixXQUFXO3NCQUF6QyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWNvbk5hbWUgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzL2ljb24nO1xuaW1wb3J0IHsgSXRBYnN0cmFjdENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL2Fic3RyYWN0cy9hYnN0cmFjdC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdpdC1zdGVwcGVycy1pdGVtW2xhYmVsXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdGVwcGVycy1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtdXG59KVxuZXhwb3J0IGNsYXNzIEl0U3RlcHBlcnNJdGVtQ29tcG9uZW50IGV4dGVuZHMgSXRBYnN0cmFjdENvbXBvbmVudCB7XG5cbiAgLyoqXG4gICAqIFRoZSBsYWJlbHMgcHJlc2VudCBpbiB0aGUgaGVhZGVyIHN0ZXBzXG4gICAqL1xuICBASW5wdXQoKSBsYWJlbCE6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxhYmVscyBwcmVzZW50IGluIHRoZSBoZWFkZXIgc3RlcHMgY2FuIGJlIHByZWNlZGVkIGJ5IGFuIGljb24uXG4gICAqL1xuICBASW5wdXQoKSBpY29uOiBJY29uTmFtZSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2Ygc3RlcFxuICAgKi9cbiAgQFZpZXdDaGlsZChUZW1wbGF0ZVJlZikgcHVibGljIGh0bWxDb250ZW50ITogVGVtcGxhdGVSZWY8YW55Pjtcbn1cbiIsIjxuZy10ZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
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 = [
|
|
6
|
+
ItSteppersContainerComponent,
|
|
7
|
+
ItSteppersItemComponent
|
|
8
|
+
];
|
|
9
|
+
export class ItSteppersModule {
|
|
10
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ItSteppersModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
11
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.7", ngImport: i0, type: ItSteppersModule, imports: [ItSteppersContainerComponent,
|
|
12
|
+
ItSteppersItemComponent], exports: [ItSteppersContainerComponent,
|
|
13
|
+
ItSteppersItemComponent] }); }
|
|
14
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ItSteppersModule, imports: [ItSteppersContainerComponent] }); }
|
|
15
|
+
}
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ItSteppersModule, decorators: [{
|
|
17
|
+
type: NgModule,
|
|
18
|
+
args: [{
|
|
19
|
+
imports: steppersComponents,
|
|
20
|
+
exports: steppersComponents
|
|
21
|
+
}]
|
|
22
|
+
}] });
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlcnMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9jb3JlL3N0ZXBwZXJzL3N0ZXBwZXJzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOztBQUVsRixNQUFNLGtCQUFrQixHQUFHO0lBQ3pCLDRCQUE0QjtJQUM1Qix1QkFBdUI7Q0FDeEIsQ0FBQztBQU1GLE1BQU0sT0FBTyxnQkFBZ0I7OEdBQWhCLGdCQUFnQjsrR0FBaEIsZ0JBQWdCLFlBUjNCLDRCQUE0QjtZQUM1Qix1QkFBdUIsYUFEdkIsNEJBQTRCO1lBQzVCLHVCQUF1QjsrR0FPWixnQkFBZ0IsWUFSM0IsNEJBQTRCOzsyRkFRakIsZ0JBQWdCO2tCQUo1QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxrQkFBa0I7b0JBQzNCLE9BQU8sRUFBRSxrQkFBa0I7aUJBQzVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEl0U3RlcHBlcnNDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuL3N0ZXBwZXJzLWNvbnRhaW5lci9zdGVwcGVycy1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEl0U3RlcHBlcnNJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9zdGVwcGVycy1pdGVtL3N0ZXBwZXJzLWl0ZW0uY29tcG9uZW50JztcblxuY29uc3Qgc3RlcHBlcnNDb21wb25lbnRzID0gW1xuICBJdFN0ZXBwZXJzQ29udGFpbmVyQ29tcG9uZW50LFxuICBJdFN0ZXBwZXJzSXRlbUNvbXBvbmVudFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogc3RlcHBlcnNDb21wb25lbnRzLFxuICBleHBvcnRzOiBzdGVwcGVyc0NvbXBvbmVudHNcbn0pXG5leHBvcnQgY2xhc3MgSXRTdGVwcGVyc01vZHVsZSB7XG59XG4iXX0=
|
|
@@ -0,0 +1,60 @@
|
|
|
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 { NgForOf, NgIf, 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.pipe(// When tabs changes (dynamic add/remove)
|
|
14
|
+
startWith(undefined), tap(() => {
|
|
15
|
+
this.tabSubscriptions?.forEach(sub => sub.unsubscribe()); // Remove old subscriptions
|
|
16
|
+
this.tabSubscriptions = this.tabs?.map(tab => tab.valueChanges.subscribe(() => {
|
|
17
|
+
this._changeDetectorRef.detectChanges(); // DetectChanges when tab-item attributes changes
|
|
18
|
+
}));
|
|
19
|
+
this._changeDetectorRef.detectChanges(); // Force update html render
|
|
20
|
+
}), switchMap(() => this.tabNavLinks?.changes.pipe(startWith(undefined)) || of(undefined))).subscribe(() => {
|
|
21
|
+
// Init tabs from bootstrap-italia
|
|
22
|
+
this.tabNavLinks?.forEach(tabNavLink => {
|
|
23
|
+
const triggerEl = tabNavLink.nativeElement, tabTrigger = Tab.getOrCreateInstance(triggerEl);
|
|
24
|
+
if (triggerEl.getAttribute('tab-listener') !== 'true') {
|
|
25
|
+
triggerEl.addEventListener('click', event => {
|
|
26
|
+
event.preventDefault();
|
|
27
|
+
tabTrigger.show();
|
|
28
|
+
this._changeDetectorRef.detectChanges();
|
|
29
|
+
});
|
|
30
|
+
triggerEl.setAttribute('tab-listener', 'true'); // Prevents multiple insertion of the listener
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
ngOnDestroy() {
|
|
36
|
+
this.tabSubscriptions?.forEach(sub => sub.unsubscribe());
|
|
37
|
+
}
|
|
38
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ItTabContainerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
39
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "16.2.7", 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: "<ul *ngIf=\"tabs\"\n class=\"nav nav-tabs\"\n [class.auto]=\"auto\"\n [class.nav-tabs-icon-text]=\"iconText\"\n [class.nav-dark]=\"dark\"\n role=\"tablist\">\n\n <li class=\"nav-item\" *ngFor=\"let tab of tabs\">\n <a #tabNavLinks [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 <it-icon *ngIf=\"tab.icon\" [name]=\"tab.icon\" class=\"me-2\"></it-icon>\n {{tab.label}}\n </a>\n </li>\n</ul>\n\n<div *ngIf=\"tabs\" class=\"tab-content\">\n <div *ngFor=\"let tab of tabs\"\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</div>\n", dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ItIconComponent, selector: "it-icon[name]", inputs: ["name", "size", "color", "padded", "svgClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
40
|
+
}
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ItTabContainerComponent, decorators: [{
|
|
42
|
+
type: Component,
|
|
43
|
+
args: [{ standalone: true, selector: 'it-tab-container', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgForOf, NgIf, ItIconComponent, NgTemplateOutlet], template: "<ul *ngIf=\"tabs\"\n class=\"nav nav-tabs\"\n [class.auto]=\"auto\"\n [class.nav-tabs-icon-text]=\"iconText\"\n [class.nav-dark]=\"dark\"\n role=\"tablist\">\n\n <li class=\"nav-item\" *ngFor=\"let tab of tabs\">\n <a #tabNavLinks [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 <it-icon *ngIf=\"tab.icon\" [name]=\"tab.icon\" class=\"me-2\"></it-icon>\n {{tab.label}}\n </a>\n </li>\n</ul>\n\n<div *ngIf=\"tabs\" class=\"tab-content\">\n <div *ngFor=\"let tab of tabs\"\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</div>\n" }]
|
|
44
|
+
}], propDecorators: { auto: [{
|
|
45
|
+
type: Input,
|
|
46
|
+
args: [{ transform: inputToBoolean }]
|
|
47
|
+
}], iconText: [{
|
|
48
|
+
type: Input,
|
|
49
|
+
args: [{ transform: inputToBoolean }]
|
|
50
|
+
}], dark: [{
|
|
51
|
+
type: Input,
|
|
52
|
+
args: [{ transform: inputToBoolean }]
|
|
53
|
+
}], tabs: [{
|
|
54
|
+
type: ContentChildren,
|
|
55
|
+
args: [ItTabItemComponent]
|
|
56
|
+
}], tabNavLinks: [{
|
|
57
|
+
type: ViewChildren,
|
|
58
|
+
args: ['tabNavLinks']
|
|
59
|
+
}] } });
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvdGFiL3RhYi1jb250YWluZXIvdGFiLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvdGFiL3RhYi1jb250YWluZXIvdGFiLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBRWYsS0FBSyxFQUdMLFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBZ0IsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDL0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQVM1RCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsbUJBQW1CO0lBMkJyRCxlQUFlO1FBQ3RCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV4QixJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUUseUNBQXlDO1FBQ2hFLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFDcEIsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLDJCQUEyQjtZQUNyRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQzVFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLGlEQUFpRDtZQUM1RixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ0osSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsMkJBQTJCO1FBQ3RFLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQ3ZGLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNmLGtDQUFrQztZQUNsQyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDckMsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLGFBQWEsRUFDeEMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFFbEQsSUFBSSxTQUFTLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxLQUFLLE1BQU0sRUFBRTtvQkFDckQsU0FBUyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRTt3QkFDMUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO3dCQUN2QixVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7d0JBQ2xCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDMUMsQ0FBQyxDQUFDLENBQUM7b0JBQ0gsU0FBUyxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyw4Q0FBOEM7aUJBQy9GO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7OEdBNURVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLHFGQU1kLGNBQWMsc0NBS2QsY0FBYywwQkFLZCxjQUFjLGtEQUtqQixrQkFBa0IsbUpDL0NyQyxpaENBZ0NBLDRDRFJZLE9BQU8sbUhBQUUsSUFBSSw2RkFBRSxlQUFlLG1IQUFFLGdCQUFnQjs7MkZBRS9DLHVCQUF1QjtrQkFQbkMsU0FBUztpQ0FDSSxJQUFJLFlBQ04sa0JBQWtCLG1CQUVYLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQzs4QkFRckIsSUFBSTtzQkFBekMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBS0UsUUFBUTtzQkFBN0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBS0UsSUFBSTtzQkFBekMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBS0MsSUFBSTtzQkFBeEMsZUFBZTt1QkFBQyxrQkFBa0I7Z0JBRUUsV0FBVztzQkFBL0MsWUFBWTt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEl0VGFiSXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL3RhYi1pdGVtL3RhYi1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBvZiwgc3RhcnRXaXRoLCBTdWJzY3JpcHRpb24sIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUYWIgfSBmcm9tICdib290c3RyYXAtaXRhbGlhJztcbmltcG9ydCB7IEl0QWJzdHJhY3RDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9hYnN0cmFjdHMvYWJzdHJhY3QuY29tcG9uZW50JztcbmltcG9ydCB7IE5nRm9yT2YsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSXRJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBpbnB1dFRvQm9vbGVhbiB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL2NvZXJjaW9uJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnaXQtdGFiLWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWItY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtOZ0Zvck9mLCBOZ0lmLCBJdEljb25Db21wb25lbnQsIE5nVGVtcGxhdGVPdXRsZXRdXG59KVxuZXhwb3J0IGNsYXNzIEl0VGFiQ29udGFpbmVyQ29tcG9uZW50IGV4dGVuZHMgSXRBYnN0cmFjdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgLyoqXG4gICAqIFRhYnMgYXV0b21hdGljYWxseSBvY2N1cHkgdGhlIGVudGlyZSBhdmFpbGFibGUgd2lkdGhcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogaW5wdXRUb0Jvb2xlYW4gfSkgYXV0bz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRvIG9idGFpbiB0aGUgY29ycmVjdCBtYXJnaW4gYmV0d2VlbiB0ZXh0IGFuZCBpY29uIGluIHRoZSBob3Jpem9udGFsbHkgZGV2ZWxvcGVkIHRhYlxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBpbnB1dFRvQm9vbGVhbiB9KSBpY29uVGV4dD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERhcmsgc3R5bGVcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogaW5wdXRUb0Jvb2xlYW4gfSkgZGFyaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSB0YWIgaXRlbXNcbiAgICovXG4gIEBDb250ZW50Q2hpbGRyZW4oSXRUYWJJdGVtQ29tcG9uZW50KSB0YWJzPzogUXVlcnlMaXN0PEl0VGFiSXRlbUNvbXBvbmVudD47XG5cbiAgQFZpZXdDaGlsZHJlbigndGFiTmF2TGlua3MnKSBwcml2YXRlIHRhYk5hdkxpbmtzPzogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTEFuY2hvckVsZW1lbnQ+PjtcblxuICBwcml2YXRlIHRhYlN1YnNjcmlwdGlvbnM/OiBBcnJheTxTdWJzY3JpcHRpb24+O1xuXG4gIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcblxuICAgIHRoaXMudGFicz8uY2hhbmdlcy5waXBlKCAvLyBXaGVuIHRhYnMgY2hhbmdlcyAoZHluYW1pYyBhZGQvcmVtb3ZlKVxuICAgICAgc3RhcnRXaXRoKHVuZGVmaW5lZCksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICB0aGlzLnRhYlN1YnNjcmlwdGlvbnM/LmZvckVhY2goc3ViID0+IHN1Yi51bnN1YnNjcmliZSgpKTsgLy8gUmVtb3ZlIG9sZCBzdWJzY3JpcHRpb25zXG4gICAgICAgIHRoaXMudGFiU3Vic2NyaXB0aW9ucyA9IHRoaXMudGFicz8ubWFwKHRhYiA9PiB0YWIudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpOyAvLyBEZXRlY3RDaGFuZ2VzIHdoZW4gdGFiLWl0ZW0gYXR0cmlidXRlcyBjaGFuZ2VzXG4gICAgICAgIH0pKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpOyAvLyBGb3JjZSB1cGRhdGUgaHRtbCByZW5kZXJcbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMudGFiTmF2TGlua3M/LmNoYW5nZXMucGlwZShzdGFydFdpdGgodW5kZWZpbmVkKSkgfHwgb2YodW5kZWZpbmVkKSlcbiAgICApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAvLyBJbml0IHRhYnMgZnJvbSBib290c3RyYXAtaXRhbGlhXG4gICAgICB0aGlzLnRhYk5hdkxpbmtzPy5mb3JFYWNoKHRhYk5hdkxpbmsgPT4ge1xuICAgICAgICBjb25zdCB0cmlnZ2VyRWwgPSB0YWJOYXZMaW5rLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgdGFiVHJpZ2dlciA9IFRhYi5nZXRPckNyZWF0ZUluc3RhbmNlKHRyaWdnZXJFbCk7XG5cbiAgICAgICAgaWYgKHRyaWdnZXJFbC5nZXRBdHRyaWJ1dGUoJ3RhYi1saXN0ZW5lcicpICE9PSAndHJ1ZScpIHtcbiAgICAgICAgICB0cmlnZ2VyRWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBldmVudCA9PiB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGFiVHJpZ2dlci5zaG93KCk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdHJpZ2dlckVsLnNldEF0dHJpYnV0ZSgndGFiLWxpc3RlbmVyJywgJ3RydWUnKTsgLy8gUHJldmVudHMgbXVsdGlwbGUgaW5zZXJ0aW9uIG9mIHRoZSBsaXN0ZW5lclxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudGFiU3Vic2NyaXB0aW9ucz8uZm9yRWFjaChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICB9XG59XG4iLCI8dWwgKm5nSWY9XCJ0YWJzXCJcbiAgICBjbGFzcz1cIm5hdiBuYXYtdGFic1wiXG4gICAgW2NsYXNzLmF1dG9dPVwiYXV0b1wiXG4gICAgW2NsYXNzLm5hdi10YWJzLWljb24tdGV4dF09XCJpY29uVGV4dFwiXG4gICAgW2NsYXNzLm5hdi1kYXJrXT1cImRhcmtcIlxuICAgIHJvbGU9XCJ0YWJsaXN0XCI+XG5cbiAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIiAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnNcIj5cbiAgICA8YSAjdGFiTmF2TGlua3MgW2lkXT1cInRhYi5pZCsnLXRhYi1saW5rJ1wiXG4gICAgICAgcm9sZT1cInRhYlwiXG4gICAgICAgY2xhc3M9XCJuYXYtbGlua1wiXG4gICAgICAgW2NsYXNzLmFjdGl2ZV09XCJ0YWIuYWN0aXZlXCJcbiAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwidGFiLmRpc2FibGVkXCJcbiAgICAgICBbYXR0ci5ocmVmXT1cIicjJyt0YWIuaWQrJy10YWInXCJcbiAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cInRhYi5pZCsnLXRhYidcIj5cbiAgICAgIDxpdC1pY29uICpuZ0lmPVwidGFiLmljb25cIiBbbmFtZV09XCJ0YWIuaWNvblwiIGNsYXNzPVwibWUtMlwiPjwvaXQtaWNvbj5cbiAgICAgIHt7dGFiLmxhYmVsfX1cbiAgICA8L2E+XG4gIDwvbGk+XG48L3VsPlxuXG48ZGl2ICpuZ0lmPVwidGFic1wiIGNsYXNzPVwidGFiLWNvbnRlbnRcIj5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnNcIlxuICAgICAgIFtpZF09XCJ0YWIuaWQrJy10YWInXCJcbiAgICAgICBjbGFzcz1cInRhYi1wYW5lIHAtNCBmYWRlIHt7dGFiLmNsYXNzID8/ICcnfX1cIlxuICAgICAgIFtjbGFzcy5hY3RpdmVdPVwidGFiLmFjdGl2ZVwiXG4gICAgICAgW2NsYXNzLnNob3ddPVwidGFiLmFjdGl2ZVwiXG4gICAgICAgcm9sZT1cInRhYnBhbmVsXCJcbiAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwidGFiLmlkKyctdGFiLWxpbmsnXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYi5odG1sQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -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: "16.2.7", ngImport: i0, type: ItTabItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
18
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "16.2.7", 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: "16.2.7", 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,23 @@
|
|
|
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 = [
|
|
6
|
+
ItTabContainerComponent,
|
|
7
|
+
ItTabItemComponent
|
|
8
|
+
];
|
|
9
|
+
export class ItTabModule {
|
|
10
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ItTabModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
11
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.7", ngImport: i0, type: ItTabModule, imports: [ItTabContainerComponent,
|
|
12
|
+
ItTabItemComponent], exports: [ItTabContainerComponent,
|
|
13
|
+
ItTabItemComponent] }); }
|
|
14
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ItTabModule }); }
|
|
15
|
+
}
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ItTabModule, decorators: [{
|
|
17
|
+
type: NgModule,
|
|
18
|
+
args: [{
|
|
19
|
+
imports: tabComponents,
|
|
20
|
+
exports: tabComponents
|
|
21
|
+
}]
|
|
22
|
+
}] });
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS90YWIvdGFiLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQUVuRSxNQUFNLGFBQWEsR0FBRztJQUNwQix1QkFBdUI7SUFDdkIsa0JBQWtCO0NBQ25CLENBQUM7QUFNRixNQUFNLE9BQU8sV0FBVzs4R0FBWCxXQUFXOytHQUFYLFdBQVcsWUFSdEIsdUJBQXVCO1lBQ3ZCLGtCQUFrQixhQURsQix1QkFBdUI7WUFDdkIsa0JBQWtCOytHQU9QLFdBQVc7OzJGQUFYLFdBQVc7a0JBSnZCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLGFBQWE7b0JBQ3RCLE9BQU8sRUFBRSxhQUFhO2lCQUN2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJdFRhYkNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vdGFiLWNvbnRhaW5lci90YWItY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJdFRhYkl0ZW1Db21wb25lbnQgfSBmcm9tICcuL3RhYi1pdGVtL3RhYi1pdGVtLmNvbXBvbmVudCc7XG5cbmNvbnN0IHRhYkNvbXBvbmVudHMgPSBbXG4gIEl0VGFiQ29udGFpbmVyQ29tcG9uZW50LFxuICBJdFRhYkl0ZW1Db21wb25lbnRcbl07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IHRhYkNvbXBvbmVudHMsXG4gIGV4cG9ydHM6IHRhYkNvbXBvbmVudHNcbn0pXG5leHBvcnQgY2xhc3MgSXRUYWJNb2R1bGUge1xufVxuIl19
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { booleanAttribute, ChangeDetectionStrategy, Component, HostBinding, HostListener, Inject, Input, Optional, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { merge } from 'rxjs';
|
|
4
|
+
import { ItIconComponent } from '../../../../utils/icon/icon.component';
|
|
5
|
+
import { IT_SORT_DEFAULT_OPTIONS } from "../../../../../interfaces/sortable-table";
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../sort.directive";
|
|
8
|
+
/**
|
|
9
|
+
* Applies sorting behavior (click to change sort) and styles to an element, including an
|
|
10
|
+
* arrow to display the current sort direction.
|
|
11
|
+
*
|
|
12
|
+
* Must be provided with an id and contained within a parent ItSort directive.
|
|
13
|
+
*
|
|
14
|
+
* If used on header cells in a CdkTable, it will automatically default its id from its containing
|
|
15
|
+
* column definition.
|
|
16
|
+
*/
|
|
17
|
+
export class ItSortHeaderComponent {
|
|
18
|
+
constructor(_changeDetectorRef,
|
|
19
|
+
// `SortDirective` is not optionally injected, but just asserted manually w/ better error.
|
|
20
|
+
_sort, defaultOptions) {
|
|
21
|
+
this._changeDetectorRef = _changeDetectorRef;
|
|
22
|
+
this._sort = _sort;
|
|
23
|
+
/** Sets the position of the arrow that displays when sorted. */
|
|
24
|
+
this.arrowPosition = 'after';
|
|
25
|
+
/** whether the sort header is disabled. */
|
|
26
|
+
this.sortDisabled = false;
|
|
27
|
+
this.sortHeaderClass = 'it-sort-header';
|
|
28
|
+
if (defaultOptions?.arrowPosition) {
|
|
29
|
+
this.arrowPosition = defaultOptions?.arrowPosition;
|
|
30
|
+
}
|
|
31
|
+
this._handleStateChanges();
|
|
32
|
+
}
|
|
33
|
+
ngOnInit() {
|
|
34
|
+
// Initialize the direction of the arrow and set the view state to be immediately that state.
|
|
35
|
+
this.updateArrowDirection();
|
|
36
|
+
this._sort.register(this);
|
|
37
|
+
}
|
|
38
|
+
ngOnDestroy() {
|
|
39
|
+
this._sort.deregister(this);
|
|
40
|
+
this._rerenderSubscription?.unsubscribe();
|
|
41
|
+
}
|
|
42
|
+
_handleClick() {
|
|
43
|
+
if (!this.isDisabled) {
|
|
44
|
+
this._sort.sort(this);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Whether this MatSortHeader is currently sorted in either ascending or descending order.
|
|
49
|
+
*/
|
|
50
|
+
get isSorted() {
|
|
51
|
+
return (this._sort.active == this.id &&
|
|
52
|
+
(this._sort.direction === 'asc' || this._sort.direction === 'desc'));
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Returns the icon class by the arrow direction
|
|
56
|
+
*/
|
|
57
|
+
get arrowIconClass() {
|
|
58
|
+
return `${this._arrowDirection == 'asc' ? 'arrow-up' : 'arrow-down'}`;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Updates the direction the arrow should be pointing. If it is not sorted, the arrow should be
|
|
62
|
+
* facing the start direction. Otherwise if it is sorted, the arrow should point in the currently
|
|
63
|
+
* active sorted direction. The reason this is updated through a function is because the direction
|
|
64
|
+
* should only be changed at specific times - when deactivated but the hint is displayed and when
|
|
65
|
+
* the sort is active and the direction changes. Otherwise the arrow's direction should linger
|
|
66
|
+
* in cases such as the sort becoming deactivated but we want to animate the arrow away while
|
|
67
|
+
* preserving its direction, even though the next sort direction is actually different and should
|
|
68
|
+
* only be changed once the arrow displays again (hint or activation).
|
|
69
|
+
*/
|
|
70
|
+
updateArrowDirection() {
|
|
71
|
+
this._arrowDirection = this.isSorted ? this._sort.direction : this.start || this._sort.start;
|
|
72
|
+
}
|
|
73
|
+
get isDisabled() {
|
|
74
|
+
return this._sort.sortDisabled || this.sortDisabled;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Gets the aria-sort attribute that should be applied to this sort header. If this header
|
|
78
|
+
* is not sorted, returns null so that the attribute is removed from the host element. Aria spec
|
|
79
|
+
* says that the aria-sort property should only be present on one header at a time, so removing
|
|
80
|
+
* ensures this is true.
|
|
81
|
+
*/
|
|
82
|
+
get ariaSortAttribute() {
|
|
83
|
+
if (!this.isSorted) {
|
|
84
|
+
return 'none';
|
|
85
|
+
}
|
|
86
|
+
return this._sort.direction == 'asc' ? 'ascending' : 'descending';
|
|
87
|
+
}
|
|
88
|
+
/** Handles changes in the sorting state. */
|
|
89
|
+
_handleStateChanges() {
|
|
90
|
+
this._rerenderSubscription = merge(this._sort.sortChange, this._sort._stateChanges).subscribe(() => {
|
|
91
|
+
if (this.isSorted) {
|
|
92
|
+
this.updateArrowDirection();
|
|
93
|
+
}
|
|
94
|
+
this._changeDetectorRef.markForCheck();
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ItSortHeaderComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ItSortDirective, optional: true }, { token: IT_SORT_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
98
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "16.2.7", 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: "ngmodule", type: CommonModule }, { kind: "component", type: ItIconComponent, selector: "it-icon[name]", inputs: ["name", "size", "color", "padded", "svgClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
99
|
+
}
|
|
100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ItSortHeaderComponent, decorators: [{
|
|
101
|
+
type: Component,
|
|
102
|
+
args: [{ selector: '[it-sort-header]', exportAs: 'itSortHeader', standalone: true, imports: [CommonModule, 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"] }]
|
|
103
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.ItSortDirective, decorators: [{
|
|
104
|
+
type: Optional
|
|
105
|
+
}] }, { type: undefined, decorators: [{
|
|
106
|
+
type: Optional
|
|
107
|
+
}, {
|
|
108
|
+
type: Inject,
|
|
109
|
+
args: [IT_SORT_DEFAULT_OPTIONS]
|
|
110
|
+
}] }]; }, propDecorators: { id: [{
|
|
111
|
+
type: Input,
|
|
112
|
+
args: ['it-sort-header']
|
|
113
|
+
}], arrowPosition: [{
|
|
114
|
+
type: Input
|
|
115
|
+
}], start: [{
|
|
116
|
+
type: Input
|
|
117
|
+
}], sortDisabled: [{
|
|
118
|
+
type: Input,
|
|
119
|
+
args: [{ transform: booleanAttribute }]
|
|
120
|
+
}], disableSortClear: [{
|
|
121
|
+
type: Input,
|
|
122
|
+
args: [{ transform: booleanAttribute }]
|
|
123
|
+
}], sortHeaderClass: [{
|
|
124
|
+
type: HostBinding,
|
|
125
|
+
args: ['class']
|
|
126
|
+
}], _handleClick: [{
|
|
127
|
+
type: HostListener,
|
|
128
|
+
args: ['click']
|
|
129
|
+
}], isDisabled: [{
|
|
130
|
+
type: HostBinding,
|
|
131
|
+
args: ['class.it-sort-header-disabled']
|
|
132
|
+
}], ariaSortAttribute: [{
|
|
133
|
+
type: HostBinding,
|
|
134
|
+
args: ['attr.aria-sort']
|
|
135
|
+
}] } });
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9jb3JlL3RhYmxlL3NvcnQvc29ydC1oZWFkZXIvc29ydC1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9jb3JlL3RhYmxlL3NvcnQvc29ydC1oZWFkZXIvc29ydC1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQix1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxRQUFRLEVBQ1IsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU3QyxPQUFPLEVBQUMsS0FBSyxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUV0RSxPQUFPLEVBQ0wsdUJBQXVCLEVBS3hCLE1BQU0sMENBQTBDLENBQUM7OztBQUdsRDs7Ozs7Ozs7R0FRRztBQVlILE1BQU0sT0FBTyxxQkFBcUI7SUE2QmhDLFlBQ21CLGtCQUFxQztJQUN0RCwwRkFBMEY7SUFDOUQsS0FBc0IsRUFDTCxjQUFxQztRQUhqRSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBRTFCLFVBQUssR0FBTCxLQUFLLENBQWlCO1FBekJwRCxnRUFBZ0U7UUFDdkQsa0JBQWEsR0FBNEIsT0FBTyxDQUFDO1FBSzFELDJDQUEyQztRQUUzQyxpQkFBWSxHQUFZLEtBQUssQ0FBQztR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QUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07OzBCQWtDNUMsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyx1QkFBdUI7NENBNUJwQixFQUFFO3NCQUExQixLQUFLO3VCQUFDLGdCQUFnQjtnQkFHZCxhQUFhO3NCQUFyQixLQUFLO2dCQUdHLEtBQUs7c0JBQWIsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7dUJBQUMsRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUM7Z0JBS3BDLGdCQUFnQjtzQkFEZixLQUFLO3VCQUFDLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFDO2dCQUlwQixlQUFlO3NCQUQ5QixXQUFXO3VCQUFDLE9BQU87Z0JBaUNwQixZQUFZO3NCQURYLFlBQVk7dUJBQUMsT0FBTztnQkF1Q1YsVUFBVTtzQkFEcEIsV0FBVzt1QkFBQywrQkFBK0I7Z0JBWWpDLGlCQUFpQjtzQkFEM0IsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBib29sZWFuQXR0cmlidXRlLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtJdFNvcnREaXJlY3RpdmUsfSBmcm9tICcuLi9zb3J0LmRpcmVjdGl2ZSc7XG5pbXBvcnQge21lcmdlLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtJdEljb25Db21wb25lbnR9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL2ljb24vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHtJY29uTmFtZX0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvaWNvblwiO1xuaW1wb3J0IHtcbiAgSVRfU09SVF9ERUZBVUxUX09QVElPTlMsXG4gIEl0U29ydGFibGUsXG4gIEl0U29ydERlZmF1bHRPcHRpb25zLFxuICBTb3J0RGlyZWN0aW9uLFxuICBTb3J0SGVhZGVyQXJyb3dQb3NpdGlvblxufSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vaW50ZXJmYWNlcy9zb3J0YWJsZS10YWJsZVwiO1xuXG5cbi8qKlxuICogQXBwbGllcyBzb3J0aW5nIGJlaGF2aW9yIChjbGljayB0byBjaGFuZ2Ugc29ydCkgYW5kIHN0eWxlcyB0byBhbiBlbGVtZW50LCBpbmNsdWRpbmcgYW5cbiAqIGFycm93IHRvIGRpc3BsYXkgdGhlIGN1cnJlbnQgc29ydCBkaXJlY3Rpb24uXG4gKlxuICogTXVzdCBiZSBwcm92aWRlZCB3aXRoIGFuIGlkIGFuZCBjb250YWluZWQgd2l0aGluIGEgcGFyZW50IEl0U29ydCBkaXJlY3RpdmUuXG4gKlxuICogSWYgdXNlZCBvbiBoZWFkZXIgY2VsbHMgaW4gYSBDZGtUYWJsZSwgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IGRlZmF1bHQgaXRzIGlkIGZyb20gaXRzIGNvbnRhaW5pbmdcbiAqIGNvbHVtbiBkZWZpbml0aW9uLlxuICovXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdbaXQtc29ydC1oZWFkZXJdJyxcbiAgZXhwb3J0QXM6ICdpdFNvcnRIZWFkZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJdEljb25Db21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vc29ydC1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zb3J0LWhlYWRlci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgSXRTb3J0SGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgSXRTb3J0YWJsZSwgT25EZXN0cm95LCBPbkluaXQge1xuICAvKipcbiAgICogSUQgb2YgdGhpcyBzb3J0IGhlYWRlci4gSWYgdXNlZCB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYSBDZGtDb2x1bW5EZWYsIHRoaXMgd2lsbCBkZWZhdWx0IHRvXG4gICAqIHRoZSBjb2x1bW4ncyBuYW1lLlxuICAgKi9cbiAgQElucHV0KCdpdC1zb3J0LWhlYWRlcicpIGlkITogc3RyaW5nO1xuXG4gIC8qKiBTZXRzIHRoZSBwb3NpdGlvbiBvZiB0aGUgYXJyb3cgdGhhdCBkaXNwbGF5cyB3aGVuIHNvcnRlZC4gKi9cbiAgQElucHV0KCkgYXJyb3dQb3NpdGlvbjogU29ydEhlYWRlckFycm93UG9zaXRpb24gPSAnYWZ0ZXInO1xuXG4gIC8qKiBPdmVycmlkZXMgdGhlIHNvcnQgc3RhcnQgdmFsdWUgb2YgdGhlIGNvbnRhaW5pbmcgTWF0U29ydCBmb3IgdGhpcyBTb3J0SGVhZGVyQ29tcG9uZW50LiAqL1xuICBASW5wdXQoKSBzdGFydD86IFNvcnREaXJlY3Rpb247XG5cbiAgLyoqIHdoZXRoZXIgdGhlIHNvcnQgaGVhZGVyIGlzIGRpc2FibGVkLiAqL1xuICBASW5wdXQoe3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pXG4gIHNvcnREaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBPdmVycmlkZXMgdGhlIGRpc2FibGUgY2xlYXIgdmFsdWUgb2YgdGhlIGNvbnRhaW5pbmcgU29ydERpcmVjdGl2ZSBmb3IgdGhpcyBNYXRTb3J0YWJsZS4gKi9cbiAgQElucHV0KHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KVxuICBkaXNhYmxlU29ydENsZWFyPzogYm9vbGVhbjtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgcHVibGljIHJlYWRvbmx5IHNvcnRIZWFkZXJDbGFzcyA9ICdpdC1zb3J0LWhlYWRlcic7XG5cbiAgcHJpdmF0ZSBfcmVyZW5kZXJTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG5cbiAgLyoqIFRoZSBkaXJlY3Rpb24gdGhlIGFycm93IHNob3VsZCBiZSBmYWNpbmcgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IHN0YXRlLiAqL1xuICBwcml2YXRlIF9hcnJvd0RpcmVjdGlvbj86IFNvcnREaXJlY3Rpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIC8vIGBTb3J0RGlyZWN0aXZlYCBpcyBub3Qgb3B0aW9uYWxseSBpbmplY3RlZCwgYnV0IGp1c3QgYXNzZXJ0ZWQgbWFudWFsbHkgdy8gYmV0dGVyIGVycm9yLlxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyByZWFkb25seSBfc29ydDogSXRTb3J0RGlyZWN0aXZlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoSVRfU09SVF9ERUZBVUxUX09QVElPTlMpIGRlZmF1bHRPcHRpb25zPzogSXRTb3J0RGVmYXVsdE9wdGlvbnMsXG4gICkge1xuICAgIGlmIChkZWZhdWx0T3B0aW9ucz8uYXJyb3dQb3NpdGlvbikge1xuICAgICAgdGhpcy5hcnJvd1Bvc2l0aW9uID0gZGVmYXVsdE9wdGlvbnM/LmFycm93UG9zaXRpb247XG4gICAgfVxuXG4gICAgdGhpcy5faGFuZGxlU3RhdGVDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBJbml0aWFsaXplIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGFycm93IGFuZCBzZXQgdGhlIHZpZXcgc3RhdGUgdG8gYmUgaW1tZWRpYXRlbHkgdGhhdCBzdGF0ZS5cbiAgICB0aGlzLnVwZGF0ZUFycm93RGlyZWN0aW9uKCk7XG4gICAgdGhpcy5fc29ydC5yZWdpc3Rlcih0aGlzKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3NvcnQuZGVyZWdpc3Rlcih0aGlzKTtcbiAgICB0aGlzLl9yZXJlbmRlclN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgX2hhbmRsZUNsaWNrKCkge1xuICAgIGlmICghdGhpcy5pc0Rpc2FibGVkKSB7XG4gICAgICB0aGlzLl9zb3J0LnNvcnQodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBNYXRTb3J0SGVhZGVyIGlzIGN1cnJlbnRseSBzb3J0ZWQgaW4gZWl0aGVyIGFzY2VuZGluZyBvciBkZXNjZW5kaW5nIG9yZGVyLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBpc1NvcnRlZCgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5fc29ydC5hY3RpdmUgPT0gdGhpcy5pZCAmJlxuICAgICAgKHRoaXMuX3NvcnQuZGlyZWN0aW9uID09PSAnYXNjJyB8fCB0aGlzLl9zb3J0LmRpcmVjdGlvbiA9PT0gJ2Rlc2MnKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgaWNvbiBjbGFzcyBieSB0aGUgYXJyb3cgZGlyZWN0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IGFycm93SWNvbkNsYXNzKCk6IEljb25OYW1lIHtcbiAgICByZXR1cm4gYCR7dGhpcy5fYXJyb3dEaXJlY3Rpb24gPT0gJ2FzYycgPyAnYXJyb3ctdXAnIDogJ2Fycm93LWRvd24nfWA7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgZGlyZWN0aW9uIHRoZSBhcnJvdyBzaG91bGQgYmUgcG9pbnRpbmcuIElmIGl0IGlzIG5vdCBzb3J0ZWQsIHRoZSBhcnJvdyBzaG91bGQgYmVcbiAgICogZmFjaW5nIHRoZSBzdGFydCBkaXJlY3Rpb24uIE90aGVyd2lzZSBpZiBpdCBpcyBzb3J0ZWQsIHRoZSBhcnJvdyBzaG91bGQgcG9pbnQgaW4gdGhlIGN1cnJlbnRseVxuICAgKiBhY3RpdmUgc29ydGVkIGRpcmVjdGlvbi4gVGhlIHJlYXNvbiB0aGlzIGlzIHVwZGF0ZWQgdGhyb3VnaCBhIGZ1bmN0aW9uIGlzIGJlY2F1c2UgdGhlIGRpcmVjdGlvblxuICAgKiBzaG91bGQgb25seSBiZSBjaGFuZ2VkIGF0IHNwZWNpZmljIHRpbWVzIC0gd2hlbiBkZWFjdGl2YXRlZCBidXQgdGhlIGhpbnQgaXMgZGlzcGxheWVkIGFuZCB3aGVuXG4gICAqIHRoZSBzb3J0IGlzIGFjdGl2ZSBhbmQgdGhlIGRpcmVjdGlvbiBjaGFuZ2VzLiBPdGhlcndpc2UgdGhlIGFycm93J3MgZGlyZWN0aW9uIHNob3VsZCBsaW5nZXJcbiAgICogaW4gY2FzZXMgc3VjaCBhcyB0aGUgc29ydCBiZWNvbWluZyBkZWFjdGl2YXRlZCBidXQgd2Ugd2FudCB0byBhbmltYXRlIHRoZSBhcnJvdyBhd2F5IHdoaWxlXG4gICAqIHByZXNlcnZpbmcgaXRzIGRpcmVjdGlvbiwgZXZlbiB0aG91Z2ggdGhlIG5leHQgc29ydCBkaXJlY3Rpb24gaXMgYWN0dWFsbHkgZGlmZmVyZW50IGFuZCBzaG91bGRcbiAgICogb25seSBiZSBjaGFuZ2VkIG9uY2UgdGhlIGFycm93IGRpc3BsYXlzIGFnYWluIChoaW50IG9yIGFjdGl2YXRpb24pLlxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVBcnJvd0RpcmVjdGlvbigpIHtcbiAgICB0aGlzLl9hcnJvd0RpcmVjdGlvbiA9IHRoaXMuaXNTb3J0ZWQgPyB0aGlzLl9zb3J0LmRpcmVjdGlvbiA6IHRoaXMuc3RhcnQgfHwgdGhpcy5fc29ydC5zdGFydDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaXQtc29ydC1oZWFkZXItZGlzYWJsZWQnKVxuICBwdWJsaWMgZ2V0IGlzRGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NvcnQuc29ydERpc2FibGVkIHx8IHRoaXMuc29ydERpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGFyaWEtc29ydCBhdHRyaWJ1dGUgdGhhdCBzaG91bGQgYmUgYXBwbGllZCB0byB0aGlzIHNvcnQgaGVhZGVyLiBJZiB0aGlzIGhlYWRlclxuICAgKiBpcyBub3Qgc29ydGVkLCByZXR1cm5zIG51bGwgc28gdGhhdCB0aGUgYXR0cmlidXRlIGlzIHJlbW92ZWQgZnJvbSB0aGUgaG9zdCBlbGVtZW50LiBBcmlhIHNwZWNcbiAgICogc2F5cyB0aGF0IHRoZSBhcmlhLXNvcnQgcHJvcGVydHkgc2hvdWxkIG9ubHkgYmUgcHJlc2VudCBvbiBvbmUgaGVhZGVyIGF0IGEgdGltZSwgc28gcmVtb3ZpbmdcbiAgICogZW5zdXJlcyB0aGlzIGlzIHRydWUuXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1zb3J0JylcbiAgcHVibGljIGdldCBhcmlhU29ydEF0dHJpYnV0ZSgpIHtcbiAgICBpZiAoIXRoaXMuaXNTb3J0ZWQpIHtcbiAgICAgIHJldHVybiAnbm9uZSc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3NvcnQuZGlyZWN0aW9uID09ICdhc2MnID8gJ2FzY2VuZGluZycgOiAnZGVzY2VuZGluZyc7XG4gIH1cblxuXG4gIC8qKiBIYW5kbGVzIGNoYW5nZXMgaW4gdGhlIHNvcnRpbmcgc3RhdGUuICovXG4gIHByaXZhdGUgX2hhbmRsZVN0YXRlQ2hhbmdlcygpIHtcbiAgICB0aGlzLl9yZXJlbmRlclN1YnNjcmlwdGlvbiA9IG1lcmdlKFxuICAgICAgdGhpcy5fc29ydC5zb3J0Q2hhbmdlLFxuICAgICAgdGhpcy5fc29ydC5fc3RhdGVDaGFuZ2VzLFxuICAgICkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzU29ydGVkKSB7XG4gICAgICAgIHRoaXMudXBkYXRlQXJyb3dEaXJlY3Rpb24oKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbn1cbiIsIjwhLS1cbiAgV2Ugc2V0IHRoZSBgdGFiaW5kZXhgIG9uIGFuIGVsZW1lbnQgaW5zaWRlIHRoZSB0YWJsZSBoZWFkZXIsIHJhdGhlciB0aGFuIHRoZSBoZWFkZXIgaXRzZWxmLFxuICBiZWNhdXNlIG9mIGEgYnVnIGluIE5WREEgd2hlcmUgaGF2aW5nIGEgYHRhYmluZGV4YCBvbiBhIGB0aGAgYnJlYWtzIGtleWJvYXJkIG5hdmlnYXRpb24gaW4gdGhlXG4gIHRhYmxlIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL252YWNjZXNzL252ZGEvaXNzdWVzLzc3MTgpLiBUaGlzIGFsbG93cyBmb3IgdGhlIGhlYWRlciB0byBib3RoXG4gIGJlIGZvY3VzYWJsZSwgYW5kIGhhdmUgc2NyZWVuIHJlYWRlcnMgcmVhZCBvdXQgaXRzIGBhcmlhLXNvcnRgIHN0YXRlLiBXZSBwcmVmZXIgdGhpcyBhcHByb2FjaFxuICBvdmVyIGhhdmluZyBhIGJ1dHRvbiB3aXRoIGFuIGBhcmlhLWxhYmVsYCBpbnNpZGUgdGhlIGhlYWRlciwgYmVjYXVzZSB0aGUgYnV0dG9uJ3MgYGFyaWEtbGFiZWxgXG4gIHdpbGwgYmUgcmVhZCBvdXQgYXMgdGhlIHVzZXIgaXMgbmF2aWdhdGluZyB0aGUgdGFibGUncyBjZWxsIChzZWUgIzEzMDEyKS5cblxuICBUaGUgYXBwcm9hY2ggaXMgYmFzZWQgb2ZmIG9mOiBodHRwczovL2RlcXVldW5pdmVyc2l0eS5jb20vbGlicmFyeS9hcmlhL3RhYmxlcy9zZi1zb3J0YWJsZS1ncmlkXG4tLT5cbjxkaXYgY2xhc3M9XCJpdC1zb3J0LWhlYWRlci1jb250YWluZXIgaXQtZm9jdXMtaW5kaWNhdG9yXCJcbiAgICAgW2NsYXNzLml0LXNvcnQtaGVhZGVyLXNvcnRlZF09XCJpc1NvcnRlZFwiXG4gICAgIFtjbGFzcy5pdC1zb3J0LWhlYWRlci1wb3NpdGlvbi1iZWZvcmVdPVwiYXJyb3dQb3NpdGlvbiA9PT0gJ2JlZm9yZSdcIlxuICAgICBbYXR0ci50YWJpbmRleF09XCJpc0Rpc2FibGVkID8gbnVsbCA6IDBcIlxuICAgICBbYXR0ci5yb2xlXT1cImlzRGlzYWJsZWQgPyBudWxsIDogJ2J1dHRvbidcIj5cblxuICA8IS0tXG4gICAgV2UgaGF2ZSB0byBrZWVwIGl0IGR1ZSB0byBhIGxhcmdlIG51bWJlciBvZiBzY3JlZW5zaG90IGRpZmYgZmFpbHVyZXMuIEl0IHNob3VsZCBiZSByZW1vdmVkIGV2ZW50dWFsbHkuXG4gICAgTm90ZSB0aGF0IHRoZSBkaWZmZXJlbmNlIGlzbid0IHZpc2libGUgd2l0aCBhIHNob3J0ZXIgaGVhZGVyLCBidXQgb25jZSBpdCBicmVha3MgdXAgaW50byBtdWx0aXBsZSBsaW5lcywgdGhpcyBlbGVtZW50XG4gICAgY2F1c2VzIGl0IHRvIGJlIGNlbnRlci1hbGlnbmVkLCB3aGVyZWFzIHJlbW92aW5nIGl0IHdpbGwga2VlcCB0aGUgdGV4dCB0byB0aGUgbGVmdC5cbiAgLS0+XG4gIDxkaXYgY2xhc3M9XCJpdC1zb3J0LWhlYWRlci1jb250ZW50XCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cblxuICA8aXQtaWNvbiBjbGFzcz1cIml0LXNvcnQtYXJyb3dcIiBzaXplPVwic21cIiBbbmFtZV09XCJhcnJvd0ljb25DbGFzc1wiIC8+XG48L2Rpdj5cbiJdfQ==
|