ng-tailwind 4.2.29 → 4.3.30
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/components/ngt-action/ngt-action.component.d.ts +15 -4
- package/components/ngt-button/ngt-button.component.d.ts +8 -5
- package/components/ngt-checkbox/ngt-checkbox.component.d.ts +10 -6
- package/components/ngt-form/ngt-form.component.d.ts +6 -3
- package/components/ngt-radio-button/ngt-radio-button.component.d.ts +10 -5
- package/components/ngt-section/ngt-section.component.d.ts +6 -3
- package/components/ngt-select/ngt-select.component.d.ts +8 -5
- package/esm2020/components/ngt-action/ngt-action.component.mjs +59 -9
- package/esm2020/components/ngt-button/ngt-button.component.mjs +35 -26
- package/esm2020/components/ngt-checkbox/ngt-checkbox.component.mjs +46 -19
- package/esm2020/components/ngt-datatable/ngt-datatable.component.mjs +4 -2
- package/esm2020/components/ngt-form/ngt-form.component.mjs +14 -4
- package/esm2020/components/ngt-input/ngt-input.component.mjs +2 -1
- package/esm2020/components/ngt-radio-button/ngt-radio-button.component.mjs +46 -18
- package/esm2020/components/ngt-section/ngt-section.component.mjs +13 -3
- package/esm2020/components/ngt-select/ngt-select.component.mjs +66 -36
- package/esm2020/components/ngt-shining/ngt-shining.component.mjs +2 -2
- package/fesm2015/ng-tailwind.mjs +788 -610
- package/fesm2015/ng-tailwind.mjs.map +1 -1
- package/fesm2020/ng-tailwind.mjs +780 -618
- package/fesm2020/ng-tailwind.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,16 +1,27 @@
|
|
|
1
|
-
import { Injector } from '@angular/core';
|
|
1
|
+
import { AfterViewInit, ChangeDetectorRef, Injector, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';
|
|
2
2
|
import { NgtStylizableDirective } from '../../directives/ngt-stylizable/ngt-stylizable.directive';
|
|
3
3
|
import { NgtStylizableService } from '../../services/ngt-stylizable/ngt-stylizable.service';
|
|
4
|
+
import { NgtFormComponent } from '../ngt-form/ngt-form.component';
|
|
5
|
+
import { NgtSectionComponent } from '../ngt-section/ngt-section.component';
|
|
4
6
|
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class NgtActionComponent {
|
|
7
|
+
export declare class NgtActionComponent implements AfterViewInit, OnChanges, OnDestroy {
|
|
6
8
|
private injector;
|
|
9
|
+
private changeDetector;
|
|
7
10
|
private ngtStylizableDirective;
|
|
11
|
+
ngtForm: NgtFormComponent;
|
|
12
|
+
ngtSection: NgtSectionComponent;
|
|
8
13
|
href: string;
|
|
9
14
|
icon: string;
|
|
10
15
|
ngtStyle: NgtStylizableService;
|
|
11
16
|
isDisabled: boolean;
|
|
12
|
-
|
|
17
|
+
private subscriptions;
|
|
18
|
+
constructor(injector: Injector, changeDetector: ChangeDetectorRef, ngtStylizableDirective: NgtStylizableDirective, ngtForm: NgtFormComponent, ngtSection: NgtSectionComponent);
|
|
19
|
+
ngAfterViewInit(): void;
|
|
20
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
21
|
+
ngOnDestroy(): void;
|
|
13
22
|
onClick(event: Event): void;
|
|
14
|
-
|
|
23
|
+
private bindSubscriptions;
|
|
24
|
+
private destroySubscriptions;
|
|
25
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgtActionComponent, [null, null, { optional: true; self: true; }, { optional: true; skipSelf: true; }, { optional: true; skipSelf: true; }]>;
|
|
15
26
|
static ɵcmp: i0.ɵɵComponentDeclaration<NgtActionComponent, "ngt-action", never, { "href": "href"; "icon": "icon"; "ngtStyle": "ngtStyle"; "isDisabled": "isDisabled"; }, {}, never, ["*", "*"], false, never>;
|
|
16
27
|
}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { Injector, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';
|
|
1
|
+
import { AfterViewInit, ChangeDetectorRef, Injector, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';
|
|
2
2
|
import { NgtStylizableDirective } from '../../directives/ngt-stylizable/ngt-stylizable.directive';
|
|
3
3
|
import { NgtStylizableService } from '../../services/ngt-stylizable/ngt-stylizable.service';
|
|
4
4
|
import { NgtFormComponent } from '../ngt-form/ngt-form.component';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
|
-
export declare class NgtButtonComponent implements OnChanges, OnDestroy {
|
|
7
|
-
private
|
|
6
|
+
export declare class NgtButtonComponent implements AfterViewInit, OnChanges, OnDestroy {
|
|
7
|
+
private changeDetector;
|
|
8
8
|
private injector;
|
|
9
|
+
private ngtForm;
|
|
9
10
|
private ngtStylizableDirective;
|
|
10
11
|
link: boolean;
|
|
11
12
|
href: string;
|
|
@@ -15,11 +16,13 @@ export declare class NgtButtonComponent implements OnChanges, OnDestroy {
|
|
|
15
16
|
noSubmit: boolean;
|
|
16
17
|
ngtStyle: NgtStylizableService;
|
|
17
18
|
private subscriptions;
|
|
18
|
-
constructor(
|
|
19
|
+
constructor(changeDetector: ChangeDetectorRef, injector: Injector, ngtForm: NgtFormComponent, ngtStylizableDirective: NgtStylizableDirective);
|
|
19
20
|
onClick(event: Event): void;
|
|
21
|
+
ngAfterViewInit(): void;
|
|
20
22
|
ngOnChanges(changes: SimpleChanges): void;
|
|
21
23
|
ngOnDestroy(): void;
|
|
24
|
+
private bindSubscriptions;
|
|
22
25
|
private destroySubscriptions;
|
|
23
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<NgtButtonComponent, [{ optional: true; skipSelf: true; },
|
|
26
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgtButtonComponent, [null, null, { optional: true; skipSelf: true; }, { optional: true; self: true; }]>;
|
|
24
27
|
static ɵcmp: i0.ɵɵComponentDeclaration<NgtButtonComponent, "ngt-button", never, { "link": "link"; "href": "href"; "type": "type"; "loading": "loading"; "isDisabled": "isDisabled"; "noSubmit": "noSubmit"; }, {}, never, ["*"], false, never>;
|
|
25
28
|
}
|
|
@@ -1,16 +1,19 @@
|
|
|
1
|
-
import { AfterViewInit, ElementRef, Injector, OnDestroy, Renderer2, SimpleChanges } from '@angular/core';
|
|
1
|
+
import { AfterViewInit, ChangeDetectorRef, ElementRef, Injector, OnChanges, OnDestroy, Renderer2, SimpleChanges } from '@angular/core';
|
|
2
2
|
import { ControlContainer } from '@angular/forms';
|
|
3
3
|
import { NgtBaseNgModel } from '../../base/ngt-base-ng-model';
|
|
4
4
|
import { NgtStylizableDirective } from '../../directives/ngt-stylizable/ngt-stylizable.directive';
|
|
5
5
|
import { NgtStylizableService } from '../../services/ngt-stylizable/ngt-stylizable.service';
|
|
6
6
|
import { NgtFormComponent } from '../ngt-form/ngt-form.component';
|
|
7
|
+
import { NgtSectionComponent } from '../ngt-section/ngt-section.component';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
|
-
export declare class NgtCheckboxComponent extends NgtBaseNgModel implements AfterViewInit, OnDestroy {
|
|
9
|
+
export declare class NgtCheckboxComponent extends NgtBaseNgModel implements AfterViewInit, OnChanges, OnDestroy {
|
|
10
|
+
private changeDetector;
|
|
9
11
|
private injector;
|
|
10
12
|
formContainer: ControlContainer;
|
|
11
13
|
private renderer;
|
|
12
14
|
private ngtStylizableDirective;
|
|
13
|
-
private
|
|
15
|
+
private ngtForm;
|
|
16
|
+
ngtSection: NgtSectionComponent;
|
|
14
17
|
element: ElementRef;
|
|
15
18
|
label: string;
|
|
16
19
|
shining: boolean;
|
|
@@ -24,8 +27,9 @@ export declare class NgtCheckboxComponent extends NgtBaseNgModel implements Afte
|
|
|
24
27
|
helperAutoXReverse: boolean;
|
|
25
28
|
ngtStyle: NgtStylizableService;
|
|
26
29
|
private subscriptions;
|
|
27
|
-
constructor(injector: Injector, formContainer: ControlContainer, renderer: Renderer2, ngtStylizableDirective: NgtStylizableDirective,
|
|
30
|
+
constructor(changeDetector: ChangeDetectorRef, injector: Injector, formContainer: ControlContainer, renderer: Renderer2, ngtStylizableDirective: NgtStylizableDirective, ngtForm: NgtFormComponent, ngtSection: NgtSectionComponent);
|
|
28
31
|
ngAfterViewInit(): void;
|
|
32
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
29
33
|
ngOnDestroy(): void;
|
|
30
34
|
change(value: any): void;
|
|
31
35
|
onNativeChange(value: any): void;
|
|
@@ -34,9 +38,9 @@ export declare class NgtCheckboxComponent extends NgtBaseNgModel implements Afte
|
|
|
34
38
|
isSideToggleMode(): boolean;
|
|
35
39
|
isDefaultMode(): boolean;
|
|
36
40
|
isRadioMode(): boolean;
|
|
37
|
-
|
|
41
|
+
private bindSubscriptions;
|
|
38
42
|
private destroySubscriptions;
|
|
39
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<NgtCheckboxComponent, [null, { optional: true; host: true; }, null, { optional: true; self: true; }, { optional: true; skipSelf: true; }]>;
|
|
43
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgtCheckboxComponent, [null, null, { optional: true; host: true; }, null, { optional: true; self: true; }, { optional: true; skipSelf: true; }, { optional: true; skipSelf: true; }]>;
|
|
40
44
|
static ɵcmp: i0.ɵɵComponentDeclaration<NgtCheckboxComponent, "ngt-checkbox", never, { "label": "label"; "shining": "shining"; "isDisabled": "isDisabled"; "isClickDisabled": "isClickDisabled"; "name": "name"; "mode": "mode"; "helpTitle": "helpTitle"; "helpTextColor": "helpTextColor"; "helpText": "helpText"; "helperAutoXReverse": "helperAutoXReverse"; }, {}, never, never, false, never>;
|
|
41
45
|
}
|
|
42
46
|
export declare enum NgtCheckboxMode {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { EventEmitter, OnDestroy, OnInit } from '@angular/core';
|
|
1
|
+
import { EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
|
|
2
2
|
import { ControlContainer, NgForm } from '@angular/forms';
|
|
3
3
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
4
4
|
import { Observable } from 'rxjs';
|
|
5
5
|
import { NgtHttpFormService } from '../../services/http/ngt-http-form.service';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
|
-
export declare class NgtFormComponent implements OnInit, OnDestroy {
|
|
7
|
+
export declare class NgtFormComponent implements OnInit, OnDestroy, OnChanges {
|
|
8
8
|
formContainer: ControlContainer;
|
|
9
9
|
ngForm: NgForm;
|
|
10
10
|
router: Router;
|
|
@@ -15,11 +15,13 @@ export declare class NgtFormComponent implements OnInit, OnDestroy {
|
|
|
15
15
|
routeIdentifier: string;
|
|
16
16
|
resource: any;
|
|
17
17
|
customLayout: boolean;
|
|
18
|
+
isDisabled: boolean;
|
|
18
19
|
static onSubmitInvalidForm: EventEmitter<NgForm>;
|
|
19
20
|
onCreating: EventEmitter<any>;
|
|
20
21
|
onEditing: EventEmitter<any>;
|
|
21
22
|
onLoadingChange: EventEmitter<boolean>;
|
|
22
23
|
onShiningChange: EventEmitter<boolean>;
|
|
24
|
+
onIsDisabledChange: EventEmitter<boolean>;
|
|
23
25
|
setupComponent: EventEmitter<any>;
|
|
24
26
|
onResourceLoadingError: EventEmitter<string>;
|
|
25
27
|
formState: NgtFormState;
|
|
@@ -29,6 +31,7 @@ export declare class NgtFormComponent implements OnInit, OnDestroy {
|
|
|
29
31
|
private subscriptions;
|
|
30
32
|
constructor(formContainer: ControlContainer, ngForm: NgForm, router: Router, route: ActivatedRoute, ngtHttpFormService: NgtHttpFormService);
|
|
31
33
|
ngOnInit(): void;
|
|
34
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
32
35
|
ngOnDestroy(): void;
|
|
33
36
|
isCreating(): boolean;
|
|
34
37
|
isEditing(): boolean;
|
|
@@ -47,7 +50,7 @@ export declare class NgtFormComponent implements OnInit, OnDestroy {
|
|
|
47
50
|
private determineFormState;
|
|
48
51
|
private destroySubscriptions;
|
|
49
52
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgtFormComponent, [{ optional: true; host: true; }, { optional: true; host: true; }, null, null, null]>;
|
|
50
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NgtFormComponent, "ngt-form", never, { "guessFormState": "guessFormState"; "message": "message"; "routeIdentifier": "routeIdentifier"; "resource": "resource"; "customLayout": "customLayout"; }, { "onCreating": "onCreating"; "onEditing": "onEditing"; "onLoadingChange": "onLoadingChange"; "onShiningChange": "onShiningChange"; "setupComponent": "setupComponent"; "onResourceLoadingError": "onResourceLoadingError"; }, never, ["*"], false, never>;
|
|
53
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgtFormComponent, "ngt-form", never, { "guessFormState": "guessFormState"; "message": "message"; "routeIdentifier": "routeIdentifier"; "resource": "resource"; "customLayout": "customLayout"; "isDisabled": "isDisabled"; }, { "onCreating": "onCreating"; "onEditing": "onEditing"; "onLoadingChange": "onLoadingChange"; "onShiningChange": "onShiningChange"; "onIsDisabledChange": "onIsDisabledChange"; "setupComponent": "setupComponent"; "onResourceLoadingError": "onResourceLoadingError"; }, never, ["*"], false, never>;
|
|
51
54
|
}
|
|
52
55
|
export declare enum NgtFormState {
|
|
53
56
|
CREATING = "CREATING",
|
|
@@ -1,17 +1,20 @@
|
|
|
1
|
-
import { AfterViewInit, ElementRef, Injector, OnDestroy, Renderer2 } from '@angular/core';
|
|
1
|
+
import { AfterViewInit, ChangeDetectorRef, ElementRef, Injector, OnChanges, OnDestroy, Renderer2, SimpleChanges } from '@angular/core';
|
|
2
2
|
import { ControlContainer } from '@angular/forms';
|
|
3
3
|
import { NgtBaseNgModel } from '../../base/ngt-base-ng-model';
|
|
4
4
|
import { NgtStylizableDirective } from '../../directives/ngt-stylizable/ngt-stylizable.directive';
|
|
5
5
|
import { NgtStylizableService } from '../../services/ngt-stylizable/ngt-stylizable.service';
|
|
6
6
|
import { NgtFormComponent } from '../ngt-form/ngt-form.component';
|
|
7
|
+
import { NgtSectionComponent } from '../ngt-section/ngt-section.component';
|
|
7
8
|
import { NgtRadioButtonContainerComponent } from './ngt-radio-button-container/ngt-radio-button-container.component';
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
|
-
export declare class NgtRadioButtonComponent extends NgtBaseNgModel implements AfterViewInit, OnDestroy {
|
|
10
|
+
export declare class NgtRadioButtonComponent extends NgtBaseNgModel implements AfterViewInit, OnChanges, OnDestroy {
|
|
11
|
+
private changeDetector;
|
|
10
12
|
private injector;
|
|
11
13
|
formContainer: ControlContainer;
|
|
12
14
|
private renderer;
|
|
13
15
|
private ngtStylizableDirective;
|
|
14
|
-
private
|
|
16
|
+
private ngtForm;
|
|
17
|
+
ngtSection: NgtSectionComponent;
|
|
15
18
|
private ngtRadioButtonContainer;
|
|
16
19
|
element: ElementRef;
|
|
17
20
|
label: string;
|
|
@@ -24,12 +27,14 @@ export declare class NgtRadioButtonComponent extends NgtBaseNgModel implements A
|
|
|
24
27
|
helpText: string;
|
|
25
28
|
ngtStyle: NgtStylizableService;
|
|
26
29
|
private subscriptions;
|
|
27
|
-
constructor(injector: Injector, formContainer: ControlContainer, renderer: Renderer2, ngtStylizableDirective: NgtStylizableDirective,
|
|
30
|
+
constructor(changeDetector: ChangeDetectorRef, injector: Injector, formContainer: ControlContainer, renderer: Renderer2, ngtStylizableDirective: NgtStylizableDirective, ngtForm: NgtFormComponent, ngtSection: NgtSectionComponent, ngtRadioButtonContainer: NgtRadioButtonContainerComponent);
|
|
28
31
|
ngAfterViewInit(): void;
|
|
32
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
29
33
|
ngOnDestroy(): void;
|
|
30
34
|
change(value: boolean): void;
|
|
31
35
|
onNativeChange(value: boolean): void;
|
|
36
|
+
private bindSubscriptions;
|
|
32
37
|
private destroySubscriptions;
|
|
33
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<NgtRadioButtonComponent, [null, { optional: true; host: true; }, null, { optional: true; self: true; }, { optional: true; skipSelf: true; }, { optional: true; skipSelf: true; }]>;
|
|
38
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgtRadioButtonComponent, [null, null, { optional: true; host: true; }, null, { optional: true; self: true; }, { optional: true; skipSelf: true; }, { optional: true; skipSelf: true; }, { optional: true; skipSelf: true; }]>;
|
|
34
39
|
static ɵcmp: i0.ɵɵComponentDeclaration<NgtRadioButtonComponent, "ngt-radio-button", never, { "label": "label"; "name": "name"; "shining": "shining"; "isSelectable": "isSelectable"; "isDisabled": "isDisabled"; "helpTitle": "helpTitle"; "helpTextColor": "helpTextColor"; "helpText": "helpText"; }, {}, never, never, false, never>;
|
|
35
40
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { EventEmitter, Injector } from '@angular/core';
|
|
1
|
+
import { EventEmitter, Injector, OnChanges, SimpleChanges } from '@angular/core';
|
|
2
2
|
import { NgtStylizableDirective } from '../../directives/ngt-stylizable/ngt-stylizable.directive';
|
|
3
3
|
import { NgtStylizableService } from '../../services/ngt-stylizable/ngt-stylizable.service';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class NgtSectionComponent {
|
|
5
|
+
export declare class NgtSectionComponent implements OnChanges {
|
|
6
6
|
private injector;
|
|
7
7
|
private ngtStylizableDirective;
|
|
8
8
|
icon: string;
|
|
@@ -14,16 +14,19 @@ export declare class NgtSectionComponent {
|
|
|
14
14
|
helpTitle: string;
|
|
15
15
|
helpText: string;
|
|
16
16
|
helpIconColor: string;
|
|
17
|
+
isDisabled: boolean;
|
|
17
18
|
onRemove: EventEmitter<void>;
|
|
18
19
|
onToggleSection: EventEmitter<boolean>;
|
|
20
|
+
onIsDisabledChange: EventEmitter<boolean>;
|
|
19
21
|
ngtSectionStyle: NgtStylizableService;
|
|
20
22
|
ngtCaptionStyle: NgtStylizableService;
|
|
21
23
|
ngtSubtitleStyle: NgtStylizableService;
|
|
22
24
|
constructor(injector: Injector, ngtStylizableDirective: NgtStylizableDirective);
|
|
25
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
23
26
|
open(): void;
|
|
24
27
|
close(): void;
|
|
25
28
|
toggle(): void;
|
|
26
29
|
remove(event: Event): void;
|
|
27
30
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgtSectionComponent, [null, { optional: true; self: true; }]>;
|
|
28
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NgtSectionComponent, "ngt-section", never, { "icon": "icon"; "caption": "caption"; "subtitle": "subtitle"; "accordion": "accordion"; "showSection": "showSection"; "removable": "removable"; "helpTitle": "helpTitle"; "helpText": "helpText"; "helpIconColor": "helpIconColor"; }, { "onRemove": "onRemove"; "onToggleSection": "onToggleSection"; }, never, ["*"], false, never>;
|
|
31
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgtSectionComponent, "ngt-section", never, { "icon": "icon"; "caption": "caption"; "subtitle": "subtitle"; "accordion": "accordion"; "showSection": "showSection"; "removable": "removable"; "helpTitle": "helpTitle"; "helpText": "helpText"; "helpIconColor": "helpIconColor"; "isDisabled": "isDisabled"; }, { "onRemove": "onRemove"; "onToggleSection": "onToggleSection"; "onIsDisabledChange": "onIsDisabledChange"; }, never, ["*"], false, never>;
|
|
29
32
|
}
|
|
@@ -8,12 +8,14 @@ import { NgtHttpService } from '../../services/http/ngt-http.service';
|
|
|
8
8
|
import { NgtTranslateService } from '../../services/http/ngt-translate.service';
|
|
9
9
|
import { NgtStylizableService } from '../../services/ngt-stylizable/ngt-stylizable.service';
|
|
10
10
|
import { NgtFormComponent } from '../ngt-form/ngt-form.component';
|
|
11
|
+
import { NgtSectionComponent } from '../ngt-section/ngt-section.component';
|
|
11
12
|
import * as i0 from "@angular/core";
|
|
12
13
|
export declare class NgtSelectComponent extends NgtBaseNgModel implements OnChanges, OnDestroy, OnInit, DoCheck {
|
|
13
14
|
ngtStylizableDirective: NgtStylizableDirective;
|
|
14
15
|
private injector;
|
|
15
16
|
formContainer: ControlContainer;
|
|
16
|
-
|
|
17
|
+
ngtForm: NgtFormComponent;
|
|
18
|
+
ngtSection: NgtSectionComponent;
|
|
17
19
|
private ngtHttp;
|
|
18
20
|
private changeDetector;
|
|
19
21
|
ngtTranslateService: NgtTranslateService;
|
|
@@ -87,16 +89,16 @@ export declare class NgtSelectComponent extends NgtBaseNgModel implements OnChan
|
|
|
87
89
|
private currentState;
|
|
88
90
|
private searchTimeout;
|
|
89
91
|
private hadFirstItemsLoad;
|
|
90
|
-
constructor(ngtStylizableDirective: NgtStylizableDirective, injector: Injector, formContainer: ControlContainer,
|
|
92
|
+
constructor(ngtStylizableDirective: NgtStylizableDirective, injector: Injector, formContainer: ControlContainer, ngtForm: NgtFormComponent, ngtSection: NgtSectionComponent, ngtHttp: NgtHttpService, changeDetector: ChangeDetectorRef, ngtTranslateService: NgtTranslateService);
|
|
91
93
|
compareWith: (a: any, b: any) => boolean;
|
|
92
94
|
ngOnInit(): void;
|
|
93
95
|
ngAfterViewInit(): void;
|
|
96
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
94
97
|
ngDoCheck(): void;
|
|
95
98
|
ngOnDestroy(): void;
|
|
96
99
|
removeItem(event: Event, item: any): void;
|
|
97
100
|
refresh(): void;
|
|
98
101
|
reset(): void;
|
|
99
|
-
ngOnChanges(changes: SimpleChanges): void;
|
|
100
102
|
setFocus(): void;
|
|
101
103
|
onClearSelect(): void;
|
|
102
104
|
onRemoveSelectedItem(item: NgOption): void;
|
|
@@ -123,9 +125,10 @@ export declare class NgtSelectComponent extends NgtBaseNgModel implements OnChan
|
|
|
123
125
|
private hadPreviousSelection;
|
|
124
126
|
private isColoquentResource;
|
|
125
127
|
private canLoadItems;
|
|
126
|
-
private destroySubscriptions;
|
|
127
128
|
private canAutoSelectUniqueOption;
|
|
128
|
-
|
|
129
|
+
private bindSubscriptions;
|
|
130
|
+
private destroySubscriptions;
|
|
131
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgtSelectComponent, [{ optional: true; self: true; }, null, { optional: true; host: true; }, { optional: true; skipSelf: true; }, { optional: true; skipSelf: true; }, null, null, { optional: true; }]>;
|
|
129
132
|
static ɵcmp: i0.ɵɵComponentDeclaration<NgtSelectComponent, "ngt-select", never, { "label": "label"; "labelIcon": "labelIcon"; "labelIconColor": "labelIconColor"; "helpTitle": "helpTitle"; "helpText": "helpText"; "helpTextColor": "helpTextColor"; "shining": "shining"; "loading": "loading"; "loadingText": "loadingText"; "notFoundText": "notFoundText"; "dropdownPosition": "dropdownPosition"; "typeToSearchText": "typeToSearchText"; "clearAllTooltip": "clearAllTooltip"; "placeholder": "placeholder"; "createText": "createText"; "labelForId": "labelForId"; "dropdownPanelMinHeight": "dropdownPanelMinHeight"; "helperReverseYPosition": "helperReverseYPosition"; "helperAutoXReverse": "helperAutoXReverse"; "name": "name"; "autoLoad": "autoLoad"; "allowCreate": "allowCreate"; "allowOriginalItemsUnselect": "allowOriginalItemsUnselect"; "isDisabled": "isDisabled"; "isReadonly": "isReadonly"; "remoteResource": "remoteResource"; "hideSelected": "hideSelected"; "bindLabel": "bindLabel"; "bindValue": "bindValue"; "items": "items"; "inputAttrs": "inputAttrs"; "closeOnSelect": "closeOnSelect"; "clearable": "clearable"; "groupBy": "groupBy"; "maxSelectedItems": "maxSelectedItems"; "multiple": "multiple"; "searchable": "searchable"; "clearSearchOnAdd": "clearSearchOnAdd"; "virtualScroll": "virtualScroll"; "tabIndex": "tabIndex"; "typeahead": "typeahead"; "guessCompareWith": "guessCompareWith"; "autoSelectUniqueOption": "autoSelectUniqueOption"; "groupValue": "groupValue"; "trackBy": "trackBy"; "isRequired": "isRequired"; "compareWith": "compareWith"; }, { "onLoadRemoteResource": "onLoadRemoteResource"; "onClear": "onClear"; }, ["ngtOptionTemplate", "ngtOptionSelectedTemplate", "ngtSelectHeaderTemplate"], never, false, never>;
|
|
130
133
|
}
|
|
131
134
|
export declare enum NgtSelectDropdownPanelHeight {
|
|
@@ -1,14 +1,20 @@
|
|
|
1
|
-
import { Component, Input, Optional, Self } from '@angular/core';
|
|
1
|
+
import { Component, Input, Optional, Self, SkipSelf, } from '@angular/core';
|
|
2
2
|
import { NgtStylizableService } from '../../services/ngt-stylizable/ngt-stylizable.service';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "../../directives/ngt-stylizable/ngt-stylizable.directive";
|
|
5
|
-
import * as i2 from "
|
|
6
|
-
import * as i3 from "
|
|
7
|
-
import * as i4 from "
|
|
5
|
+
import * as i2 from "../ngt-form/ngt-form.component";
|
|
6
|
+
import * as i3 from "../ngt-section/ngt-section.component";
|
|
7
|
+
import * as i4 from "@angular/common";
|
|
8
|
+
import * as i5 from "@angular/router";
|
|
9
|
+
import * as i6 from "../ngt-svg/ngt-svg.component";
|
|
8
10
|
export class NgtActionComponent {
|
|
9
|
-
constructor(injector, ngtStylizableDirective) {
|
|
11
|
+
constructor(injector, changeDetector, ngtStylizableDirective, ngtForm, ngtSection) {
|
|
10
12
|
this.injector = injector;
|
|
13
|
+
this.changeDetector = changeDetector;
|
|
11
14
|
this.ngtStylizableDirective = ngtStylizableDirective;
|
|
15
|
+
this.ngtForm = ngtForm;
|
|
16
|
+
this.ngtSection = ngtSection;
|
|
17
|
+
this.subscriptions = [];
|
|
12
18
|
if (this.ngtStylizableDirective) {
|
|
13
19
|
this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();
|
|
14
20
|
}
|
|
@@ -27,21 +33,65 @@ export class NgtActionComponent {
|
|
|
27
33
|
border: 'border-0',
|
|
28
34
|
});
|
|
29
35
|
}
|
|
36
|
+
ngAfterViewInit() {
|
|
37
|
+
this.bindSubscriptions();
|
|
38
|
+
}
|
|
39
|
+
ngOnChanges(changes) {
|
|
40
|
+
if (changes.isDisabled && !changes.isDisabled.currentValue) {
|
|
41
|
+
this.isDisabled = this.ngtForm?.isDisabled || this.ngtSection?.isDisabled;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
ngOnDestroy() {
|
|
45
|
+
this.destroySubscriptions();
|
|
46
|
+
}
|
|
30
47
|
onClick(event) {
|
|
31
48
|
if (this.isDisabled) {
|
|
32
49
|
event.stopPropagation();
|
|
33
50
|
}
|
|
34
51
|
}
|
|
52
|
+
bindSubscriptions() {
|
|
53
|
+
this.changeDetector.detectChanges();
|
|
54
|
+
if (!this.isDisabled) {
|
|
55
|
+
this.isDisabled = this.ngtForm?.isDisabled || this.ngtSection?.isDisabled;
|
|
56
|
+
}
|
|
57
|
+
if (this.ngtForm) {
|
|
58
|
+
this.subscriptions.push(this.ngtForm.onIsDisabledChange.subscribe((isDisabled) => {
|
|
59
|
+
if (!this.isDisabled) {
|
|
60
|
+
this.isDisabled = isDisabled || this.ngtSection?.isDisabled;
|
|
61
|
+
}
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
if (this.ngtSection) {
|
|
65
|
+
this.subscriptions.push(this.ngtSection.onIsDisabledChange.subscribe((isDisabled) => {
|
|
66
|
+
if (!this.isDisabled) {
|
|
67
|
+
this.isDisabled = isDisabled || this.ngtForm?.isDisabled;
|
|
68
|
+
}
|
|
69
|
+
}));
|
|
70
|
+
}
|
|
71
|
+
this.changeDetector.detectChanges();
|
|
72
|
+
}
|
|
73
|
+
destroySubscriptions() {
|
|
74
|
+
this.subscriptions.forEach(subscription => subscription.unsubscribe());
|
|
75
|
+
this.subscriptions = [];
|
|
76
|
+
}
|
|
35
77
|
}
|
|
36
|
-
NgtActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtActionComponent, deps: [{ token: i0.Injector }, { token: i1.NgtStylizableDirective, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
37
|
-
NgtActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: NgtActionComponent, selector: "ngt-action", inputs: { href: "href", icon: "icon", ngtStyle: "ngtStyle", isDisabled: "isDisabled" }, ngImport: i0, template: "<a *ngIf=\"href\"\n [class]=\"isDisabled ? 'block rounded-full cursor-not-allowed text-gray-600 bg-gray-400 hover:bg-gray-400 opacity-50' : 'cursor-pointer'\"\n [routerLink]=\"href\" (click)='onClick($event)'>\n <div\n class=\"flex justify-center rounded-full {{ ngtStyle.compile(['h', 'w', 'color.bg', 'color.text', 'px', 'py', 'shadow', 'text']) }}\">\n <ngt-svg [src]=\"icon\" class='self-center' *ngIf=\"icon\">\n </ngt-svg>\n <div class=\"self-center\">\n <ng-content></ng-content>\n </div>\n </div>\n</a>\n\n<a *ngIf=\"!href\"\n [class]=\"isDisabled ? 'block rounded-full cursor-not-allowed text-gray-600 bg-gray-400 hover:bg-gray-400 opacity-50' : 'cursor-pointer'\"\n (click)='onClick($event)'>\n <div\n class=\"flex justify-center rounded-full {{ ngtStyle.compile(['h', 'w', 'color.bg', 'color.text', 'px', 'py', 'shadow', 'text', 'border', 'color.border']) }}\">\n <ngt-svg [src]=\"icon\" class='self-center' *ngIf=\"icon\"></ngt-svg>\n <div class=\"self-center\">\n <ng-content></ng-content>\n </div>\n </div>\n</a>\n", dependencies: [{ kind: "directive", type:
|
|
78
|
+
NgtActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtActionComponent, deps: [{ token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: i1.NgtStylizableDirective, optional: true, self: true }, { token: i2.NgtFormComponent, optional: true, skipSelf: true }, { token: i3.NgtSectionComponent, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
79
|
+
NgtActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: NgtActionComponent, selector: "ngt-action", inputs: { href: "href", icon: "icon", ngtStyle: "ngtStyle", isDisabled: "isDisabled" }, usesOnChanges: true, ngImport: i0, template: "<a *ngIf=\"href\"\n [class]=\"isDisabled ? 'block rounded-full cursor-not-allowed text-gray-600 bg-gray-400 hover:bg-gray-400 opacity-50' : 'cursor-pointer'\"\n [routerLink]=\"href\" (click)='onClick($event)'>\n <div\n class=\"flex justify-center rounded-full {{ ngtStyle.compile(['h', 'w', 'color.bg', 'color.text', 'px', 'py', 'shadow', 'text']) }}\">\n <ngt-svg [src]=\"icon\" class='self-center' *ngIf=\"icon\">\n </ngt-svg>\n <div class=\"self-center\">\n <ng-content></ng-content>\n </div>\n </div>\n</a>\n\n<a *ngIf=\"!href\"\n [class]=\"isDisabled ? 'block rounded-full cursor-not-allowed text-gray-600 bg-gray-400 hover:bg-gray-400 opacity-50' : 'cursor-pointer'\"\n (click)='onClick($event)'>\n <div\n class=\"flex justify-center rounded-full {{ ngtStyle.compile(['h', 'w', 'color.bg', 'color.text', 'px', 'py', 'shadow', 'text', 'border', 'color.border']) }}\">\n <ngt-svg [src]=\"icon\" class='self-center' *ngIf=\"icon\"></ngt-svg>\n <div class=\"self-center\">\n <ng-content></ng-content>\n </div>\n </div>\n</a>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i6.NgtSvgComponent, selector: "ngt-svg", inputs: ["src", "class"] }] });
|
|
38
80
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtActionComponent, decorators: [{
|
|
39
81
|
type: Component,
|
|
40
82
|
args: [{ selector: 'ngt-action', template: "<a *ngIf=\"href\"\n [class]=\"isDisabled ? 'block rounded-full cursor-not-allowed text-gray-600 bg-gray-400 hover:bg-gray-400 opacity-50' : 'cursor-pointer'\"\n [routerLink]=\"href\" (click)='onClick($event)'>\n <div\n class=\"flex justify-center rounded-full {{ ngtStyle.compile(['h', 'w', 'color.bg', 'color.text', 'px', 'py', 'shadow', 'text']) }}\">\n <ngt-svg [src]=\"icon\" class='self-center' *ngIf=\"icon\">\n </ngt-svg>\n <div class=\"self-center\">\n <ng-content></ng-content>\n </div>\n </div>\n</a>\n\n<a *ngIf=\"!href\"\n [class]=\"isDisabled ? 'block rounded-full cursor-not-allowed text-gray-600 bg-gray-400 hover:bg-gray-400 opacity-50' : 'cursor-pointer'\"\n (click)='onClick($event)'>\n <div\n class=\"flex justify-center rounded-full {{ ngtStyle.compile(['h', 'w', 'color.bg', 'color.text', 'px', 'py', 'shadow', 'text', 'border', 'color.border']) }}\">\n <ngt-svg [src]=\"icon\" class='self-center' *ngIf=\"icon\"></ngt-svg>\n <div class=\"self-center\">\n <ng-content></ng-content>\n </div>\n </div>\n</a>\n" }]
|
|
41
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.NgtStylizableDirective, decorators: [{
|
|
83
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: i1.NgtStylizableDirective, decorators: [{
|
|
42
84
|
type: Self
|
|
43
85
|
}, {
|
|
44
86
|
type: Optional
|
|
87
|
+
}] }, { type: i2.NgtFormComponent, decorators: [{
|
|
88
|
+
type: Optional
|
|
89
|
+
}, {
|
|
90
|
+
type: SkipSelf
|
|
91
|
+
}] }, { type: i3.NgtSectionComponent, decorators: [{
|
|
92
|
+
type: Optional
|
|
93
|
+
}, {
|
|
94
|
+
type: SkipSelf
|
|
45
95
|
}] }]; }, propDecorators: { href: [{
|
|
46
96
|
type: Input
|
|
47
97
|
}], icon: [{
|
|
@@ -51,4 +101,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
|
|
|
51
101
|
}], isDisabled: [{
|
|
52
102
|
type: Input
|
|
53
103
|
}] } });
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWFjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy10YWlsd2luZC9zcmMvY29tcG9uZW50cy9uZ3QtYWN0aW9uL25ndC1hY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LWFjdGlvbi9uZ3QtYWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCxTQUFTLEVBRVQsS0FBSyxFQUdMLFFBQVEsRUFDUixJQUFJLEVBRUosUUFBUSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDOzs7Ozs7OztBQVE1RixNQUFNLE9BQU8sa0JBQWtCO0lBUTNCLFlBQ1ksUUFBa0IsRUFDbEIsY0FBaUMsRUFFakMsc0JBQThDLEVBRS9DLE9BQXlCLEVBRXpCLFVBQStCO1FBUDlCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBRWpDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFFL0MsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFFekIsZUFBVSxHQUFWLFVBQVUsQ0FBcUI7UUFWbEMsa0JBQWEsR0FBd0IsRUFBRSxDQUFDO1FBWTVDLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHVCQUF1QixFQUFFLENBQUM7U0FDekU7YUFBTTtZQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO1NBQzlDO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUU7WUFDM0MsQ0FB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bmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZixcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFNraXBTZWxmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBOZ3RTdHlsaXphYmxlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9uZ3Qtc3R5bGl6YWJsZS9uZ3Qtc3R5bGl6YWJsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTmd0U3R5bGl6YWJsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9uZ3Qtc3R5bGl6YWJsZS9uZ3Qtc3R5bGl6YWJsZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5ndEZvcm1Db21wb25lbnQgfSBmcm9tICcuLi9uZ3QtZm9ybS9uZ3QtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd0U2VjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL25ndC1zZWN0aW9uL25ndC1zZWN0aW9uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd0LWFjdGlvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL25ndC1hY3Rpb24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIE5ndEFjdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBwdWJsaWMgaHJlZjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpY29uOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIG5ndFN0eWxlOiBOZ3RTdHlsaXphYmxlU2VydmljZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgaXNEaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uczogQXJyYXk8U3Vic2NyaXB0aW9uPiA9IFtdO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBTZWxmKCkgQE9wdGlvbmFsKClcbiAgICAgICAgcHJpdmF0ZSBuZ3RTdHlsaXphYmxlRGlyZWN0aXZlOiBOZ3RTdHlsaXphYmxlRGlyZWN0aXZlLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKVxuICAgICAgICBwdWJsaWMgbmd0Rm9ybTogTmd0Rm9ybUNvbXBvbmVudCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKClcbiAgICAgICAgcHVibGljIG5ndFNlY3Rpb246IE5ndFNlY3Rpb25Db21wb25lbnRcbiAgICApIHtcbiAgICAgICAgaWYgKHRoaXMubmd0U3R5bGl6YWJsZURpcmVjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5uZ3RTdHlsZSA9IHRoaXMubmd0U3R5bGl6YWJsZURpcmVjdGl2ZS5nZXROZ3RTdHlsaXphYmxlU2VydmljZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5uZ3RTdHlsZSA9IG5ldyBOZ3RTdHlsaXphYmxlU2VydmljZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5uZ3RTdHlsZS5sb2FkKHRoaXMuaW5qZWN0b3IsICdOZ3RBY3Rpb24nLCB7XG4gICAgICAgICAgICBoOiAnaC1mdWxsJyxcbiAgICAgICAgICAgIHc6ICd3LWZ1bGwnLFxuICAgICAgICAgICAgY29sb3I6IHtcbiAgICAgICAgICAgICAgICBiZzogJ2JnLWdyYXktNTAwJyxcbiAgICAgICAgICAgICAgICB0ZXh0OiAndGV4dC13aGl0ZScsXG4gICAgICAgICAgICAgICAgYm9yZGVyOiAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0OiAndGV4dC14bCcsXG4gICAgICAgICAgICBib3JkZXI6ICdib3JkZXItMCcsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYmluZFN1YnNjcmlwdGlvbnMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy5pc0Rpc2FibGVkICYmICFjaGFuZ2VzLmlzRGlzYWJsZWQuY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmlzRGlzYWJsZWQgPSB0aGlzLm5ndEZvcm0/LmlzRGlzYWJsZWQgfHwgdGhpcy5uZ3RTZWN0aW9uPy5pc0Rpc2FibGVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lTdWJzY3JpcHRpb25zKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiaW5kU3Vic2NyaXB0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNEaXNhYmxlZCA9IHRoaXMubmd0Rm9ybT8uaXNEaXNhYmxlZCB8fCB0aGlzLm5ndFNlY3Rpb24/LmlzRGlzYWJsZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5uZ3RGb3JtKSB7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICAgICAgICB0aGlzLm5ndEZvcm0ub25Jc0Rpc2FibGVkQ2hhbmdlLnN1YnNjcmliZSgoaXNEaXNhYmxlZDogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0Rpc2FibGVkID0gaXNEaXNhYmxlZCB8fCB0aGlzLm5ndFNlY3Rpb24/LmlzRGlzYWJsZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm5ndFNlY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgICAgICAgIHRoaXMubmd0U2VjdGlvbi5vbklzRGlzYWJsZWRDaGFuZ2Uuc3Vic2NyaWJlKChpc0Rpc2FibGVkOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRGlzYWJsZWQgPSBpc0Rpc2FibGVkIHx8IHRoaXMubmd0Rm9ybT8uaXNEaXNhYmxlZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXN0cm95U3Vic2NyaXB0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goc3Vic2NyaXB0aW9uID0+IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zID0gW107XG4gICAgfVxufVxuIiwiPGEgKm5nSWY9XCJocmVmXCJcbiAgICBbY2xhc3NdPVwiaXNEaXNhYmxlZCA/ICdibG9jayByb3VuZGVkLWZ1bGwgY3Vyc29yLW5vdC1hbGxvd2VkIHRleHQtZ3JheS02MDAgYmctZ3JheS00MDAgaG92ZXI6YmctZ3JheS00MDAgb3BhY2l0eS01MCcgOiAnY3Vyc29yLXBvaW50ZXInXCJcbiAgICBbcm91dGVyTGlua109XCJocmVmXCIgKGNsaWNrKT0nb25DbGljaygkZXZlbnQpJz5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWZ1bGwge3sgbmd0U3R5bGUuY29tcGlsZShbJ2gnLCAndycsICdjb2xvci5iZycsICdjb2xvci50ZXh0JywgJ3B4JywgJ3B5JywgJ3NoYWRvdycsICd0ZXh0J10pIH19XCI+XG4gICAgICAgIDxuZ3Qtc3ZnIFtzcmNdPVwiaWNvblwiIGNsYXNzPSdzZWxmLWNlbnRlcicgKm5nSWY9XCJpY29uXCI+XG4gICAgICAgIDwvbmd0LXN2Zz5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGYtY2VudGVyXCI+XG4gICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9hPlxuXG48YSAqbmdJZj1cIiFocmVmXCJcbiAgICBbY2xhc3NdPVwiaXNEaXNhYmxlZCA/ICdibG9jayByb3VuZGVkLWZ1bGwgY3Vyc29yLW5vdC1hbGxvd2VkIHRleHQtZ3JheS02MDAgYmctZ3JheS00MDAgaG92ZXI6YmctZ3JheS00MDAgb3BhY2l0eS01MCcgOiAnY3Vyc29yLXBvaW50ZXInXCJcbiAgICAoY2xpY2spPSdvbkNsaWNrKCRldmVudCknPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCB7eyBuZ3RTdHlsZS5jb21waWxlKFsnaCcsICd3JywgJ2NvbG9yLmJnJywgJ2NvbG9yLnRleHQnLCAncHgnLCAncHknLCAnc2hhZG93JywgJ3RleHQnLCAnYm9yZGVyJywgJ2NvbG9yLmJvcmRlciddKSB9fVwiPlxuICAgICAgICA8bmd0LXN2ZyBbc3JjXT1cImljb25cIiBjbGFzcz0nc2VsZi1jZW50ZXInICpuZ0lmPVwiaWNvblwiPjwvbmd0LXN2Zz5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGYtY2VudGVyXCI+XG4gICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9hPlxuIl19
|