ng-tailwind 4.1.8 → 4.1.10

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.
@@ -1,9 +1,11 @@
1
- import { ElementRef, EventEmitter, OnDestroy, SimpleChanges } from '@angular/core';
1
+ import { ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, SimpleChanges } from '@angular/core';
2
2
  import { NgtDropdownContainerComponent } from './ngt-dropdown-container/ngt-dropdown-container.component';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class NgtDropdownComponent implements OnDestroy {
5
5
  private ngtDropdownContainer;
6
+ private changeDetector;
6
7
  containerRef: ElementRef;
8
+ scrollable: boolean;
7
9
  autoXReverse: boolean;
8
10
  autoYReverse: boolean;
9
11
  reverseXPosition: boolean;
@@ -22,7 +24,7 @@ export declare class NgtDropdownComponent implements OnDestroy {
22
24
  private subscriptions;
23
25
  private containerXPosition;
24
26
  private containerYPosition;
25
- constructor(ngtDropdownContainer: NgtDropdownContainerComponent);
27
+ constructor(ngtDropdownContainer: NgtDropdownContainerComponent, changeDetector: ChangeDetectorRef);
26
28
  ngOnChanges(changes: SimpleChanges): void;
27
29
  ngOnDestroy(): void;
28
30
  open(): void;
@@ -40,8 +42,8 @@ export declare class NgtDropdownComponent implements OnDestroy {
40
42
  private isInHover;
41
43
  private destroySubscriptions;
42
44
  private isClickMethod;
43
- static ɵfac: i0.ɵɵFactoryDeclaration<NgtDropdownComponent, [{ optional: true; skipSelf: true; }]>;
44
- static ɵcmp: i0.ɵɵComponentDeclaration<NgtDropdownComponent, "ngt-dropdown", never, { "autoXReverse": "autoXReverse"; "autoYReverse": "autoYReverse"; "reverseXPosition": "reverseXPosition"; "reverseYPosition": "reverseYPosition"; "closeOnClick": "closeOnClick"; "closeTimeout": "closeTimeout"; "openMethod": "openMethod"; }, { "onToggle": "onToggle"; "onHostClick": "onHostClick"; }, never, ["[host]", "[container]"], false, never>;
45
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgtDropdownComponent, [{ optional: true; skipSelf: true; }, null]>;
46
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgtDropdownComponent, "ngt-dropdown", never, { "scrollable": "scrollable"; "autoXReverse": "autoXReverse"; "autoYReverse": "autoYReverse"; "reverseXPosition": "reverseXPosition"; "reverseYPosition": "reverseYPosition"; "closeOnClick": "closeOnClick"; "closeTimeout": "closeTimeout"; "openMethod": "openMethod"; }, { "onToggle": "onToggle"; "onHostClick": "onHostClick"; }, never, ["[host]", "[container]"], false, never>;
45
47
  }
46
48
  export declare enum NgtDropdownOpenMethod {
47
49
  CLICK = "CLICK",
@@ -32,6 +32,7 @@ export declare class NgtInputComponent extends NgtBaseNgModel implements OnInit,
32
32
  innerRightIconColor: string;
33
33
  decimalMaskPrecision: number;
34
34
  showCharactersLength: boolean;
35
+ uppercase: boolean;
35
36
  isDisabled: boolean;
36
37
  isReadonly: boolean;
37
38
  showRoundedIcon: boolean;
@@ -102,5 +103,5 @@ export declare class NgtInputComponent extends NgtBaseNgModel implements OnInit,
102
103
  private hasEmailServiceValidation;
103
104
  private destroySubscriptions;
104
105
  static ɵfac: i0.ɵɵFactoryDeclaration<NgtInputComponent, [null, { optional: true; self: true; }, { optional: true; host: true; }, { optional: true; skipSelf: true; }, null, { optional: true; skipSelf: true; }, { optional: true; skipSelf: true; }, null, { optional: true; }]>;
105
- static ɵcmp: i0.ɵɵComponentDeclaration<NgtInputComponent, "ngt-input", never, { "label": "label"; "placeholder": "placeholder"; "shining": "shining"; "loading": "loading"; "helpTitle": "helpTitle"; "helpTextColor": "helpTextColor"; "helpText": "helpText"; "innerLeftIcon": "innerLeftIcon"; "innerLeftIconColor": "innerLeftIconColor"; "innerRightIcon": "innerRightIcon"; "innerRightIconColor": "innerRightIconColor"; "decimalMaskPrecision": "decimalMaskPrecision"; "showCharactersLength": "showCharactersLength"; "isDisabled": "isDisabled"; "isReadonly": "isReadonly"; "showRoundedIcon": "showRoundedIcon"; "type": "type"; "name": "name"; "mask": "mask"; "focus": "focus"; "allowClear": "allowClear"; "jit": "jit"; "findExistingResource": "findExistingResource"; "allowPhoneValidation": "allowPhoneValidation"; "isRequired": "isRequired"; "uniqueResource": "uniqueResource"; "minValue": "minValue"; "maxValue": "maxValue"; "maxLength": "maxLength"; "minLength": "minLength"; "match": "match"; "multipleOf": "multipleOf"; "externalServerDependency": "externalServerDependency"; }, { "onClickLeftIcon": "onClickLeftIcon"; "onClickRightIcon": "onClickRightIcon"; "validatePhoneResult": "validatePhoneResult"; }, never, ["*"], false, never>;
106
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgtInputComponent, "ngt-input", never, { "label": "label"; "placeholder": "placeholder"; "shining": "shining"; "loading": "loading"; "helpTitle": "helpTitle"; "helpTextColor": "helpTextColor"; "helpText": "helpText"; "innerLeftIcon": "innerLeftIcon"; "innerLeftIconColor": "innerLeftIconColor"; "innerRightIcon": "innerRightIcon"; "innerRightIconColor": "innerRightIconColor"; "decimalMaskPrecision": "decimalMaskPrecision"; "showCharactersLength": "showCharactersLength"; "uppercase": "uppercase"; "isDisabled": "isDisabled"; "isReadonly": "isReadonly"; "showRoundedIcon": "showRoundedIcon"; "type": "type"; "name": "name"; "mask": "mask"; "focus": "focus"; "allowClear": "allowClear"; "jit": "jit"; "findExistingResource": "findExistingResource"; "allowPhoneValidation": "allowPhoneValidation"; "isRequired": "isRequired"; "uniqueResource": "uniqueResource"; "minValue": "minValue"; "maxValue": "maxValue"; "maxLength": "maxLength"; "minLength": "minLength"; "match": "match"; "multipleOf": "multipleOf"; "externalServerDependency": "externalServerDependency"; }, { "onClickLeftIcon": "onClickLeftIcon"; "onClickRightIcon": "onClickRightIcon"; "validatePhoneResult": "validatePhoneResult"; }, never, ["*"], false, never>;
106
107
  }
@@ -0,0 +1,15 @@
1
+ import { TemplateRef } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class NgtPopoverTooltipComponent {
4
+ popover: string;
5
+ popoverTemplate: TemplateRef<any>;
6
+ position: NgtPopoverPosition;
7
+ positionClasses: any;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgtPopoverTooltipComponent, never>;
9
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgtPopoverTooltipComponent, "ngt-popover-tooltip", never, {}, {}, never, never, false, never>;
10
+ }
11
+ export declare enum NgtPopoverPosition {
12
+ DEFAULT = "TOP",
13
+ TOP = "TOP",
14
+ BOTTOM = "BOTTOM"
15
+ }
@@ -0,0 +1,27 @@
1
+ import { ComponentFactoryResolver, ElementRef, OnDestroy, TemplateRef, ViewContainerRef } from '@angular/core';
2
+ import { NgtPopoverPosition } from './ngt-popover-tooltip/ngt-popover-tooltip.component';
3
+ import * as i0 from "@angular/core";
4
+ export declare class NgtPopoverDirective implements OnDestroy {
5
+ private elementRef;
6
+ private componentFactoryResolver;
7
+ private viewContainerRef;
8
+ popover: string;
9
+ popoverTemplate: TemplateRef<any>;
10
+ dismissDelay: number;
11
+ dismissOnClick: boolean;
12
+ position: NgtPopoverPosition;
13
+ openMethod: 'HOVER' | 'CLICK';
14
+ private componentRef;
15
+ private dismissTimeoutInstance;
16
+ constructor(elementRef: ElementRef, componentFactoryResolver: ComponentFactoryResolver, viewContainerRef: ViewContainerRef);
17
+ onClick(): void;
18
+ onDocumentClick(target: HTMLElement): void;
19
+ onMouseLeave(): void;
20
+ onMouseEnter(): void;
21
+ ngOnDestroy(): void;
22
+ private createPopover;
23
+ private destroy;
24
+ private setupPopoverComponent;
25
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgtPopoverDirective, never>;
26
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgtPopoverDirective, "[ngt-popover]", never, { "popover": "popover"; "popoverTemplate": "popoverTemplate"; "dismissDelay": "dismissDelay"; "dismissOnClick": "dismissOnClick"; "position": "position"; "openMethod": "openMethod"; }, {}, never, never, false, never>;
27
+ }
@@ -1,9 +1,11 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./ngt-popover.component";
3
- import * as i2 from "@angular/common";
4
- import * as i3 from "../ngt-dropdown/ngt-dropdown.module";
3
+ import * as i2 from "./ngt-popover-tooltip/ngt-popover-tooltip.component";
4
+ import * as i3 from "./ngt-popover.directive";
5
+ import * as i4 from "@angular/common";
6
+ import * as i5 from "../ngt-dropdown/ngt-dropdown.module";
5
7
  export declare class NgtPopoverModule {
6
8
  static ɵfac: i0.ɵɵFactoryDeclaration<NgtPopoverModule, never>;
7
- static ɵmod: i0.ɵɵNgModuleDeclaration<NgtPopoverModule, [typeof i1.NgtPopoverComponent], [typeof i2.CommonModule, typeof i3.NgtDropdownModule], [typeof i1.NgtPopoverComponent]>;
9
+ static ɵmod: i0.ɵɵNgModuleDeclaration<NgtPopoverModule, [typeof i1.NgtPopoverComponent, typeof i2.NgtPopoverTooltipComponent, typeof i3.NgtPopoverDirective], [typeof i4.CommonModule, typeof i5.NgtDropdownModule], [typeof i1.NgtPopoverComponent, typeof i3.NgtPopoverDirective]>;
8
10
  static ɵinj: i0.ɵɵInjectorDeclaration<NgtPopoverModule>;
9
11
  }
@@ -171,7 +171,7 @@ export class NgtThComponent {
171
171
  }
172
172
  }
173
173
  NgtThComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtThComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: i1.NgtStylizableDirective, optional: true, self: true }, { token: i2.NgtDatatableComponent, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
174
- NgtThComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: NgtThComponent, selector: "[ngt-th]", inputs: { reference: "reference", sortReference: "sortReference", modalWidth: "modalWidth", sortable: "sortable", searchable: "searchable", hasCustomSearch: "hasCustomSearch", searchLabel: "searchLabel", sortableTooltip: "sortableTooltip" }, outputs: { onEnableSearch: "onEnableSearch" }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "modal", first: true, predicate: ["modal"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex items-center w-full {{ ngtStyle.compile(['justifyContent']) }}\" [title]=\"getTooltip()\" (click)='sort()'\n [class.cursor-pointer]='sortable'>\n <ng-content></ng-content>\n <ng-container *ngIf='sortable && isCurrentSort'>\n <svg *ngIf=\"sortDirection == 'asc'\" class=\"fill-current self-center cursor-pointer ml-1\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\">\n <path d=\"M9.293 12.95l.707.707L15.657 8l-1.414-1.414L10 10.828 5.757 6.586 4.343 8z\" />\n </svg>\n\n <svg *ngIf=\"sortDirection == 'desc'\" class=\"fill-current self-center cursor-pointer ml-1\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\">\n <path d=\"M10.707 7.05L10 6.343 4.343 12l1.414 1.414L10 9.172l4.243 4.242L15.657 12z\" />\n </svg>\n </ng-container>\n\n <ng-container *ngIf='searchable'>\n <div (click)='enableSearch($event)' class=\"float-right ml-2\" title=\"Filtrar\">\n <ngt-action class=\"text-lg\" h='h-6' w='w-6' ngt-stylizable>\n <svg class=\"fill-current self-center\" viewBox=\"0 0 1792 1792\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M1595 295q17 41-14 70l-493 493v742q0 42-39 59-13 5-25 5-27 0-45-19l-256-256q-19-19-19-45V858L211 365q-31-29-14-70 17-39 59-39h1280q42 0 59 39z\" />\n </svg>\n </ngt-action>\n </div>\n </ng-container>\n</div>\n\n<ng-template #modal>\n <ngt-modal-header [disableDefaultCloses]=\"ngtDataTable.searchModal.disableDefaultCloses\"\n (onClose)=\"ngtDataTable.searchModal.close()\">\n <span *ngIf=\"searchLabel\" class=\"font-semibold text-gray-800 text-sm\">{{ searchLabel }}</span>\n\n <ng-content select='[customSearchHeader]'></ng-content>\n </ngt-modal-header>\n\n <ngt-modal-body>\n <ngt-input *ngIf=\"!hasCustomSearch\" jit='true' [(ngModel)]='searchTerm' (ngModelChange)='search($event)'\n placeholder='Pesquisar...' name='{{ reference }}_filter' #searchInput>\n </ngt-input>\n\n <div [hidden]='!hasCustomSearch'>\n <ng-content select='[customSearch]'></ng-content>\n </div>\n </ngt-modal-body>\n</ng-template>", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.NgtInputComponent, selector: "ngt-input", inputs: ["label", "placeholder", "shining", "loading", "helpTitle", "helpTextColor", "helpText", "innerLeftIcon", "innerLeftIconColor", "innerRightIcon", "innerRightIconColor", "decimalMaskPrecision", "showCharactersLength", "isDisabled", "isReadonly", "showRoundedIcon", "type", "name", "mask", "focus", "allowClear", "jit", "findExistingResource", "allowPhoneValidation", "isRequired", "uniqueResource", "minValue", "maxValue", "maxLength", "minLength", "match", "multipleOf", "externalServerDependency"], outputs: ["onClickLeftIcon", "onClickRightIcon", "validatePhoneResult"] }, { kind: "component", type: i6.NgtModalHeaderComponent, selector: "ngt-modal-header", inputs: ["disableDefaultCloses"] }, { kind: "component", type: i7.NgtModalBodyComponent, selector: "ngt-modal-body" }, { kind: "component", type: i8.NgtActionComponent, selector: "ngt-action", inputs: ["href", "icon", "ngtStyle", "isDisabled"] }, { kind: "directive", type: i1.NgtStylizableDirective, selector: "[ngt-stylizable]", inputs: ["color", "color.text", "color.bg", "color.border", "h", "w", "p", "px", "py", "pt", "pr", "pb", "pl", "m", "mx", "my", "mt", "mr", "mb", "ml", "border", "shadow", "rounded", "font", "text", "breakWords", "overflow", "position", "justifyContent", "cursor", "fontCase"] }] });
174
+ NgtThComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: NgtThComponent, selector: "[ngt-th]", inputs: { reference: "reference", sortReference: "sortReference", modalWidth: "modalWidth", sortable: "sortable", searchable: "searchable", hasCustomSearch: "hasCustomSearch", searchLabel: "searchLabel", sortableTooltip: "sortableTooltip" }, outputs: { onEnableSearch: "onEnableSearch" }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "modal", first: true, predicate: ["modal"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex items-center w-full {{ ngtStyle.compile(['justifyContent']) }}\" [title]=\"getTooltip()\" (click)='sort()'\n [class.cursor-pointer]='sortable'>\n <ng-content></ng-content>\n <ng-container *ngIf='sortable && isCurrentSort'>\n <svg *ngIf=\"sortDirection == 'asc'\" class=\"fill-current self-center cursor-pointer ml-1\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\">\n <path d=\"M9.293 12.95l.707.707L15.657 8l-1.414-1.414L10 10.828 5.757 6.586 4.343 8z\" />\n </svg>\n\n <svg *ngIf=\"sortDirection == 'desc'\" class=\"fill-current self-center cursor-pointer ml-1\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\">\n <path d=\"M10.707 7.05L10 6.343 4.343 12l1.414 1.414L10 9.172l4.243 4.242L15.657 12z\" />\n </svg>\n </ng-container>\n\n <ng-container *ngIf='searchable'>\n <div (click)='enableSearch($event)' class=\"float-right ml-2\" title=\"Filtrar\">\n <ngt-action class=\"text-lg\" h='h-6' w='w-6' ngt-stylizable>\n <svg class=\"fill-current self-center\" viewBox=\"0 0 1792 1792\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M1595 295q17 41-14 70l-493 493v742q0 42-39 59-13 5-25 5-27 0-45-19l-256-256q-19-19-19-45V858L211 365q-31-29-14-70 17-39 59-39h1280q42 0 59 39z\" />\n </svg>\n </ngt-action>\n </div>\n </ng-container>\n</div>\n\n<ng-template #modal>\n <ngt-modal-header [disableDefaultCloses]=\"ngtDataTable.searchModal.disableDefaultCloses\"\n (onClose)=\"ngtDataTable.searchModal.close()\">\n <span *ngIf=\"searchLabel\" class=\"font-semibold text-gray-800 text-sm\">{{ searchLabel }}</span>\n\n <ng-content select='[customSearchHeader]'></ng-content>\n </ngt-modal-header>\n\n <ngt-modal-body>\n <ngt-input *ngIf=\"!hasCustomSearch\" jit='true' [(ngModel)]='searchTerm' (ngModelChange)='search($event)'\n placeholder='Pesquisar...' name='{{ reference }}_filter' #searchInput>\n </ngt-input>\n\n <div [hidden]='!hasCustomSearch'>\n <ng-content select='[customSearch]'></ng-content>\n </div>\n </ngt-modal-body>\n</ng-template>", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.NgtInputComponent, selector: "ngt-input", inputs: ["label", "placeholder", "shining", "loading", "helpTitle", "helpTextColor", "helpText", "innerLeftIcon", "innerLeftIconColor", "innerRightIcon", "innerRightIconColor", "decimalMaskPrecision", "showCharactersLength", "uppercase", "isDisabled", "isReadonly", "showRoundedIcon", "type", "name", "mask", "focus", "allowClear", "jit", "findExistingResource", "allowPhoneValidation", "isRequired", "uniqueResource", "minValue", "maxValue", "maxLength", "minLength", "match", "multipleOf", "externalServerDependency"], outputs: ["onClickLeftIcon", "onClickRightIcon", "validatePhoneResult"] }, { kind: "component", type: i6.NgtModalHeaderComponent, selector: "ngt-modal-header", inputs: ["disableDefaultCloses"] }, { kind: "component", type: i7.NgtModalBodyComponent, selector: "ngt-modal-body" }, { kind: "component", type: i8.NgtActionComponent, selector: "ngt-action", inputs: ["href", "icon", "ngtStyle", "isDisabled"] }, { kind: "directive", type: i1.NgtStylizableDirective, selector: "[ngt-stylizable]", inputs: ["color", "color.text", "color.bg", "color.border", "h", "w", "p", "px", "py", "pt", "pr", "pb", "pl", "m", "mx", "my", "mt", "mr", "mb", "ml", "border", "shadow", "rounded", "font", "text", "breakWords", "overflow", "position", "justifyContent", "cursor", "fontCase"] }] });
175
175
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtThComponent, decorators: [{
176
176
  type: Component,
177
177
  args: [{ selector: '[ngt-th]', template: "<div class=\"flex items-center w-full {{ ngtStyle.compile(['justifyContent']) }}\" [title]=\"getTooltip()\" (click)='sort()'\n [class.cursor-pointer]='sortable'>\n <ng-content></ng-content>\n <ng-container *ngIf='sortable && isCurrentSort'>\n <svg *ngIf=\"sortDirection == 'asc'\" class=\"fill-current self-center cursor-pointer ml-1\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\">\n <path d=\"M9.293 12.95l.707.707L15.657 8l-1.414-1.414L10 10.828 5.757 6.586 4.343 8z\" />\n </svg>\n\n <svg *ngIf=\"sortDirection == 'desc'\" class=\"fill-current self-center cursor-pointer ml-1\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\">\n <path d=\"M10.707 7.05L10 6.343 4.343 12l1.414 1.414L10 9.172l4.243 4.242L15.657 12z\" />\n </svg>\n </ng-container>\n\n <ng-container *ngIf='searchable'>\n <div (click)='enableSearch($event)' class=\"float-right ml-2\" title=\"Filtrar\">\n <ngt-action class=\"text-lg\" h='h-6' w='w-6' ngt-stylizable>\n <svg class=\"fill-current self-center\" viewBox=\"0 0 1792 1792\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M1595 295q17 41-14 70l-493 493v742q0 42-39 59-13 5-25 5-27 0-45-19l-256-256q-19-19-19-45V858L211 365q-31-29-14-70 17-39 59-39h1280q42 0 59 39z\" />\n </svg>\n </ngt-action>\n </div>\n </ng-container>\n</div>\n\n<ng-template #modal>\n <ngt-modal-header [disableDefaultCloses]=\"ngtDataTable.searchModal.disableDefaultCloses\"\n (onClose)=\"ngtDataTable.searchModal.close()\">\n <span *ngIf=\"searchLabel\" class=\"font-semibold text-gray-800 text-sm\">{{ searchLabel }}</span>\n\n <ng-content select='[customSearchHeader]'></ng-content>\n </ngt-modal-header>\n\n <ngt-modal-body>\n <ngt-input *ngIf=\"!hasCustomSearch\" jit='true' [(ngModel)]='searchTerm' (ngModelChange)='search($event)'\n placeholder='Pesquisar...' name='{{ reference }}_filter' #searchInput>\n </ngt-input>\n\n <div [hidden]='!hasCustomSearch'>\n <ng-content select='[customSearch]'></ng-content>\n </div>\n </ngt-modal-body>\n</ng-template>" }]
@@ -6,16 +6,15 @@ import * as i0 from "@angular/core";
6
6
  import * as i1 from "./ngt-dropdown-container/ngt-dropdown-container.component";
7
7
  import * as i2 from "@angular/common";
8
8
  export class NgtDropdownComponent {
9
- constructor(ngtDropdownContainer) {
9
+ constructor(ngtDropdownContainer, changeDetector) {
10
10
  this.ngtDropdownContainer = ngtDropdownContainer;
11
+ this.changeDetector = changeDetector;
11
12
  this.autoYReverse = true;
12
13
  this.closeTimeout = 1000;
13
14
  this.openMethod = NgtDropdownOpenMethod.HOVER;
14
15
  this.onToggle = new EventEmitter();
15
16
  this.onHostClick = new EventEmitter();
16
17
  this.name = uuid();
17
- this.isYPositionReversed = false;
18
- this.isXPositionReversed = false;
19
18
  this.isBindingYPosition = true;
20
19
  this.isBindingXPosition = true;
21
20
  this.subscriptions = [];
@@ -36,6 +35,9 @@ export class NgtDropdownComponent {
36
35
  open() {
37
36
  this.isOpen = true;
38
37
  this.ngtDropdownContainer?.setActiveDropdown(this);
38
+ this.changeDetector.detectChanges();
39
+ this.bindContainerXPosition();
40
+ this.bindContainerYPosition();
39
41
  }
40
42
  closeOnSelectOption() {
41
43
  if (this.closeOnClick) {
@@ -86,20 +88,18 @@ export class NgtDropdownComponent {
86
88
  if (!this.autoXReverse || this.reverseXPosition !== undefined) {
87
89
  return this.reverseXPosition;
88
90
  }
89
- if (this.isOpen) {
90
- this.bindContainerXPosition();
91
+ if (this.isOpen && !this.isBindingXPosition) {
91
92
  this.isXPositionReversed = !(this.containerXPosition > document.documentElement.clientWidth);
92
- return !this.isBindingXPosition && this.isXPositionReversed;
93
+ return this.isXPositionReversed;
93
94
  }
94
95
  }
95
96
  shouldReverseYPosition() {
96
97
  if (!this.autoYReverse || this.reverseYPosition !== undefined) {
97
98
  return this.reverseYPosition;
98
99
  }
99
- if (this.isOpen) {
100
- this.bindContainerYPosition();
100
+ if (this.isOpen && !this.isBindingYPosition) {
101
101
  this.isYPositionReversed = this.containerYPosition > (document.documentElement.clientHeight * 0.9);
102
- return !this.isBindingYPosition && this.isYPositionReversed;
102
+ return this.isYPositionReversed;
103
103
  }
104
104
  }
105
105
  bindContainerXPosition() {
@@ -109,6 +109,7 @@ export class NgtDropdownComponent {
109
109
  this.containerXPosition = this.containerRef.nativeElement.getBoundingClientRect().x
110
110
  + this.containerRef.nativeElement.offsetWidth;
111
111
  this.isBindingXPosition = false;
112
+ this.changeDetector.detectChanges();
112
113
  });
113
114
  }
114
115
  }
@@ -119,6 +120,7 @@ export class NgtDropdownComponent {
119
120
  this.containerYPosition = this.containerRef.nativeElement.getBoundingClientRect().y
120
121
  + this.containerRef.nativeElement.offsetHeight;
121
122
  this.isBindingYPosition = false;
123
+ this.changeDetector.detectChanges();
122
124
  });
123
125
  }
124
126
  }
@@ -143,8 +145,8 @@ export class NgtDropdownComponent {
143
145
  || this.openMethod == NgtDropdownOpenMethod.POPOVER_CLICK;
144
146
  }
145
147
  }
146
- NgtDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtDropdownComponent, deps: [{ token: i1.NgtDropdownContainerComponent, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
147
- NgtDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: NgtDropdownComponent, selector: "ngt-dropdown", inputs: { autoXReverse: "autoXReverse", autoYReverse: "autoYReverse", reverseXPosition: "reverseXPosition", reverseYPosition: "reverseYPosition", closeOnClick: "closeOnClick", closeTimeout: "closeTimeout", openMethod: "openMethod" }, outputs: { onToggle: "onToggle", onHostClick: "onHostClick" }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"sm:relative\">\n <div (mouseenter)=\"onHover(host, container)\" (click)=\"onClick($event, host, container)\" (contextmenu)=\"onRightClick($event)\" #host>\n <ng-content select='[host]'></ng-content>\n </div>\n\n <div [hidden]='!isOpen'\n class=\"{{ shouldReverseYPosition() ? 'mb-12 bottom-0' : 'mt-4' }} {{ shouldReverseXPosition() ? 'left-0': 'right-0' }} ngt-dropdown-container sm:mr-0 mr-3 max-w-xs absolute\"\n [@openClose]=\"isOpen ? 'open' : 'closed'\" (mouseenter)=\"onHover(host, container)\"\n (click)='closeOnSelectOption()' style=\"z-index: 1100 !important;\" #container>\n\n <ng-content select='[container]'></ng-content>\n </div>\n</div>\n\n<button *ngIf=\"isOpen && openMethod != 'HOVER'\" class=\"fixed z-40 inset-0 h-full w-full opacity-0 cursor-default\"\n (click)='toggle()'>\n</button>\n", styles: [".ngt-dropdown-container{max-height:30rem;width:max-content}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [
148
+ NgtDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtDropdownComponent, deps: [{ token: i1.NgtDropdownContainerComponent, optional: true, skipSelf: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
149
+ NgtDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: NgtDropdownComponent, selector: "ngt-dropdown", inputs: { scrollable: "scrollable", autoXReverse: "autoXReverse", autoYReverse: "autoYReverse", reverseXPosition: "reverseXPosition", reverseYPosition: "reverseYPosition", closeOnClick: "closeOnClick", closeTimeout: "closeTimeout", openMethod: "openMethod" }, outputs: { onToggle: "onToggle", onHostClick: "onHostClick" }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"sm:relative\">\n <div (mouseenter)=\"onHover(host, container)\" (click)=\"onClick($event, host, container)\"\n (contextmenu)=\"onRightClick($event)\" #host>\n <ng-content select='[host]'></ng-content>\n </div>\n\n <div [hidden]='!isOpen'\n class=\"{{ shouldReverseYPosition() ? 'mb-12 bottom-0' : 'mt-4' }} {{ shouldReverseXPosition() ? 'left-0': 'right-0' }} ngt-dropdown-container sm:mr-0 mr-3 max-w-xs absolute\"\n [@openClose]=\"isOpen ? 'open' : 'closed'\" (mouseenter)=\"onHover(host, container)\"\n (click)='closeOnSelectOption()' style=\"z-index: 1100 !important;\" #container>\n\n <div class=\"flex flex-col\" [ngClass]=\"{ 'h-64 overflow-auto':scrollable }\">\n <ng-content select='[container]'></ng-content>\n </div>\n </div>\n</div>\n\n<button *ngIf=\"isOpen && openMethod != 'HOVER'\" class=\"fixed z-40 inset-0 h-full w-full opacity-0 cursor-default\"\n (click)='toggle()'>\n</button>", styles: [".ngt-dropdown-container{max-height:30rem;width:max-content}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [
148
150
  trigger('openClose', [
149
151
  state('open', style({ opacity: 1, transform: 'translateY(0px)' })),
150
152
  state('closed', style({ opacity: 0, transform: 'translateY(-10px)' })),
@@ -163,14 +165,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
163
165
  animate(300)
164
166
  ]),
165
167
  ]),
166
- ], template: "<div class=\"sm:relative\">\n <div (mouseenter)=\"onHover(host, container)\" (click)=\"onClick($event, host, container)\" (contextmenu)=\"onRightClick($event)\" #host>\n <ng-content select='[host]'></ng-content>\n </div>\n\n <div [hidden]='!isOpen'\n class=\"{{ shouldReverseYPosition() ? 'mb-12 bottom-0' : 'mt-4' }} {{ shouldReverseXPosition() ? 'left-0': 'right-0' }} ngt-dropdown-container sm:mr-0 mr-3 max-w-xs absolute\"\n [@openClose]=\"isOpen ? 'open' : 'closed'\" (mouseenter)=\"onHover(host, container)\"\n (click)='closeOnSelectOption()' style=\"z-index: 1100 !important;\" #container>\n\n <ng-content select='[container]'></ng-content>\n </div>\n</div>\n\n<button *ngIf=\"isOpen && openMethod != 'HOVER'\" class=\"fixed z-40 inset-0 h-full w-full opacity-0 cursor-default\"\n (click)='toggle()'>\n</button>\n", styles: [".ngt-dropdown-container{max-height:30rem;width:max-content}\n"] }]
168
+ ], template: "<div class=\"sm:relative\">\n <div (mouseenter)=\"onHover(host, container)\" (click)=\"onClick($event, host, container)\"\n (contextmenu)=\"onRightClick($event)\" #host>\n <ng-content select='[host]'></ng-content>\n </div>\n\n <div [hidden]='!isOpen'\n class=\"{{ shouldReverseYPosition() ? 'mb-12 bottom-0' : 'mt-4' }} {{ shouldReverseXPosition() ? 'left-0': 'right-0' }} ngt-dropdown-container sm:mr-0 mr-3 max-w-xs absolute\"\n [@openClose]=\"isOpen ? 'open' : 'closed'\" (mouseenter)=\"onHover(host, container)\"\n (click)='closeOnSelectOption()' style=\"z-index: 1100 !important;\" #container>\n\n <div class=\"flex flex-col\" [ngClass]=\"{ 'h-64 overflow-auto':scrollable }\">\n <ng-content select='[container]'></ng-content>\n </div>\n </div>\n</div>\n\n<button *ngIf=\"isOpen && openMethod != 'HOVER'\" class=\"fixed z-40 inset-0 h-full w-full opacity-0 cursor-default\"\n (click)='toggle()'>\n</button>", styles: [".ngt-dropdown-container{max-height:30rem;width:max-content}\n"] }]
167
169
  }], ctorParameters: function () { return [{ type: i1.NgtDropdownContainerComponent, decorators: [{
168
170
  type: Optional
169
171
  }, {
170
172
  type: SkipSelf
171
- }] }]; }, propDecorators: { containerRef: [{
173
+ }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { containerRef: [{
172
174
  type: ViewChild,
173
175
  args: ['container', { static: true }]
176
+ }], scrollable: [{
177
+ type: Input
174
178
  }], autoXReverse: [{
175
179
  type: Input
176
180
  }], autoYReverse: [{
@@ -197,4 +201,4 @@ export var NgtDropdownOpenMethod;
197
201
  NgtDropdownOpenMethod["RIGHT_CLICK"] = "RIGHT_CLICK";
198
202
  NgtDropdownOpenMethod["HOVER"] = "HOVER";
199
203
  })(NgtDropdownOpenMethod || (NgtDropdownOpenMethod = {}));
200
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXRhaWx3aW5kL3NyYy9jb21wb25lbnRzL25ndC1kcm9wZG93bi9uZ3QtZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LWRyb3Bkb3duL25ndC1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFDSCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLFFBQVEsRUFDUixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7O0FBaUIxQyxNQUFNLE9BQU8sb0JBQW9CO0lBeUI3QixZQUVZLG9CQUFtRDtRQUFuRCx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQStCO1FBdkIvQyxpQkFBWSxHQUFZLElBQUksQ0FBQztRQUk3QixpQkFBWSxHQUFXLElBQUksQ0FBQztRQUM1QixlQUFVLEdBQTBCLHFCQUFxQixDQUFDLEtBQUssQ0FBQztRQUUvRCxhQUFRLEdBQTBCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDckQsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU5RCxTQUFJLEdBQVcsSUFBSSxFQUFFLENBQUM7UUFFdEIsd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBQ3JDLHdCQUFtQixHQUFZLEtBQUssQ0FBQztRQUNyQyx1QkFB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RSxDQUFDLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQzs0QkFDdEUsVUFBVSxDQUFDLGdCQUFnQixFQUFFO2dDQUN6QixPQUFPLENBQUMsR0FBRyxDQUFDOzZCQUNmLENBQUM7eUJBQ0wsQ0FBQztxQkFDTDs7MEJBNEJJLFFBQVE7OzBCQUFJLFFBQVE7NENBekJ3QixZQUFZO3NCQUE1RCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRXhCLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxnQkFBZ0I7c0JBQS9CLEtBQUs7Z0JBQ1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUVXLFFBQVE7c0JBQXhCLE1BQU07Z0JBQ1UsV0FBVztzQkFBM0IsTUFBTTs7QUE4S1gsTUFBTSxDQUFOLElBQVkscUJBS1g7QUFMRCxXQUFZLHFCQUFxQjtJQUM3Qix3Q0FBZSxDQUFBO0lBQ2Ysd0RBQStCLENBQUE7SUFDL0Isb0RBQTJCLENBQUE7SUFDM0Isd0NBQWUsQ0FBQTtBQUNuQixDQUFDLEVBTFcscUJBQXFCLEtBQXJCLHFCQUFxQixRQUtoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFNraXBTZWxmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgZ2V0RW51bUZyb21TdHJpbmcgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2VudW0vZW51bSc7XG5pbXBvcnQgeyB1dWlkIH0gZnJvbSAnLi4vLi4vaGVscGVycy91dWlkJztcbmltcG9ydCB7IE5ndERyb3Bkb3duQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9uZ3QtZHJvcGRvd24tY29udGFpbmVyL25ndC1kcm9wZG93bi1jb250YWluZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3QtZHJvcGRvd24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9uZ3QtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL25ndC1kcm9wZG93bi5jb21wb25lbnQuY3NzJ10sXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdvcGVuQ2xvc2UnLCBbXG4gICAgICAgICAgICBzdGF0ZSgnb3BlbicsIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwcHgpJyB9KSksXG4gICAgICAgICAgICBzdGF0ZSgnY2xvc2VkJywgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0xMHB4KScgfSkpLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignY2xvc2VkID0+IG9wZW4nLCBbXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgzMDApXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgXSksXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3REcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIGNvbnRhaW5lclJlZjogRWxlbWVudFJlZjtcblxuICAgIEBJbnB1dCgpIHB1YmxpYyBhdXRvWFJldmVyc2U6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcHVibGljIGF1dG9ZUmV2ZXJzZTogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgcHVibGljIHJldmVyc2VYUG9zaXRpb246IGJvb2xlYW47XG4gICAgQElucHV0KCkgcHVibGljIHJldmVyc2VZUG9zaXRpb246IGJvb2xlYW47XG4gICAgQElucHV0KCkgcHVibGljIGNsb3NlT25DbGljazogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBwdWJsaWMgY2xvc2VUaW1lb3V0OiBudW1iZXIgPSAxMDAwO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBvcGVuTWV0aG9kOiBOZ3REcm9wZG93bk9wZW5NZXRob2QgPSBOZ3REcm9wZG93bk9wZW5NZXRob2QuSE9WRVI7XG5cbiAgICBAT3V0cHV0KCkgcHVibGljIG9uVG9nZ2xlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBvbkhvc3RDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nID0gdXVpZCgpO1xuICAgIHB1YmxpYyBpc09wZW46IGJvb2xlYW47XG4gICAgcHVibGljIGlzWVBvc2l0aW9uUmV2ZXJzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgaXNYUG9zaXRpb25SZXZlcnNlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBpc0JpbmRpbmdZUG9zaXRpb246IGJvb2xlYW4gPSB0cnVlO1xuICAgIHB1YmxpYyBpc0JpbmRpbmdYUG9zaXRpb246IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBBcnJheTxTdWJzY3JpcHRpb24+ID0gW107XG4gICAgcHJpdmF0ZSBjb250YWluZXJYUG9zaXRpb246IG51bWJlcjtcbiAgICBwcml2YXRlIGNvbnRhaW5lcllQb3NpdGlvbjogbnVtYmVyO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKVxuICAgICAgICBwcml2YXRlIG5ndERyb3Bkb3duQ29udGFpbmVyOiBOZ3REcm9wZG93bkNvbnRhaW5lckNvbXBvbmVudFxuICAgICkge1xuICAgICAgICBpZiAodGhpcy5uZ3REcm9wZG93bkNvbnRhaW5lcikge1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgICAgICAgICAgdGhpcy5uZ3REcm9wZG93bkNvbnRhaW5lci5vbkFjdGl2ZURyb3Bkb3duQ2hhbmdlLnN1YnNjcmliZSgoYWN0aXZlRHJvcGRvd246IE5ndERyb3Bkb3duQ29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gKGFjdGl2ZURyb3Bkb3duLm5hbWUgPT09IHRoaXMubmFtZSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy5vcGVuTWV0aG9kKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5NZXRob2QgPSBnZXRFbnVtRnJvbVN0cmluZyhjaGFuZ2VzLm9wZW5NZXRob2QuY3VycmVudFZhbHVlLCBOZ3REcm9wZG93bk9wZW5NZXRob2QpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3lTdWJzY3JpcHRpb25zKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9wZW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5uZ3REcm9wZG93bkNvbnRhaW5lcj8uc2V0QWN0aXZlRHJvcGRvd24odGhpcyk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsb3NlT25TZWxlY3RPcHRpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNsb3NlT25DbGljaykge1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNvbnRhaW5lclhQb3NpdGlvbiA9IG51bGw7XG4gICAgICAgIHRoaXMuY29udGFpbmVyWVBvc2l0aW9uID0gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9nZ2xlKCk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMub25Ub2dnbGUuZW1pdCh0aGlzLmlzT3Blbik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkhvdmVyKGhvc3Q6IGFueSwgY29udGFpbmVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3Blbk1ldGhvZCA9PSBOZ3REcm9wZG93bk9wZW5NZXRob2QuSE9WRVIgJiYgaG9zdCAmJiBjb250YWluZXIpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICAgICAgdGhpcy53YXRjaEhvdmVyKGhvc3QsIGNvbnRhaW5lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGljayhldmVudDogRXZlbnQsIGhvc3Q6IGFueSwgY29udGFpbmVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkhvc3RDbGljaz8uZW1pdCgpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzQ2xpY2tNZXRob2QoKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMub3Blbk1ldGhvZCA9PSBOZ3REcm9wZG93bk9wZW5NZXRob2QuUE9QT1ZFUl9DTElDSykge1xuICAgICAgICAgICAgdGhpcy53YXRjaEhvdmVyKGhvc3QsIGNvbnRhaW5lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25SaWdodENsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcGVuTWV0aG9kID09IE5ndERyb3Bkb3duT3Blbk1ldGhvZC5SSUdIVF9DTElDSykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzaG91bGRSZXZlcnNlWFBvc2l0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuYXV0b1hSZXZlcnNlIHx8IHRoaXMucmV2ZXJzZVhQb3NpdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXZlcnNlWFBvc2l0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmJpbmRDb250YWluZXJYUG9zaXRpb24oKTtcblxuICAgICAgICAgICAgdGhpcy5pc1hQb3NpdGlvblJldmVyc2VkID0gISh0aGlzLmNvbnRhaW5lclhQb3NpdGlvbiA+IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCk7XG5cbiAgICAgICAgICAgIHJldHVybiAhdGhpcy5pc0JpbmRpbmdYUG9zaXRpb24gJiYgdGhpcy5pc1hQb3NpdGlvblJldmVyc2VkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNob3VsZFJldmVyc2VZUG9zaXRpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5hdXRvWVJldmVyc2UgfHwgdGhpcy5yZXZlcnNlWVBvc2l0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJldmVyc2VZUG9zaXRpb247XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuYmluZENvbnRhaW5lcllQb3NpdGlvbigpO1xuXG4gICAgICAgICAgICB0aGlzLmlzWVBvc2l0aW9uUmV2ZXJzZWQgPSB0aGlzLmNvbnRhaW5lcllQb3NpdGlvbiA+IChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0ICogMC45KTtcblxuICAgICAgICAgICAgcmV0dXJuICF0aGlzLmlzQmluZGluZ1lQb3NpdGlvbiAmJiB0aGlzLmlzWVBvc2l0aW9uUmV2ZXJzZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGJpbmRDb250YWluZXJYUG9zaXRpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jb250YWluZXJYUG9zaXRpb24gJiYgdGhpcy5jb250YWluZXJSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5pc0JpbmRpbmdYUG9zaXRpb24gPSB0cnVlO1xuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lclhQb3NpdGlvbiA9IHRoaXMuY29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkueFxuICAgICAgICAgICAgICAgICAgICArIHRoaXMuY29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmlzQmluZGluZ1hQb3NpdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGJpbmRDb250YWluZXJZUG9zaXRpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jb250YWluZXJZUG9zaXRpb24gJiYgdGhpcy5jb250YWluZXJSZWY/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KSB7XG4gICAgICAgICAgICB0aGlzLmlzQmluZGluZ1lQb3NpdGlvbiA9IHRydWU7XG5cbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGFpbmVyWVBvc2l0aW9uID0gdGhpcy5jb250YWluZXJSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS55XG4gICAgICAgICAgICAgICAgICAgICsgdGhpcy5jb250YWluZXJSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmlzQmluZGluZ1lQb3NpdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHdhdGNoSG92ZXIoaG9zdDogYW55LCBjb250YWluZXI6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgIGlmICghaG9zdCB8fCAhY29udGFpbmVyIHx8ICF0aGlzLmlzSW5Ib3Zlcihob3N0LCBjb250YWluZXIpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB0aGlzLmNsb3NlVGltZW91dCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0luSG92ZXIoaG9zdDogYW55LCBjb250YWluZXI6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaG9zdC5wYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJzpob3ZlcicpID09IGhvc3QgfHxcbiAgICAgICAgICAgIGNvbnRhaW5lci5wYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJzpob3ZlcicpID09IGNvbnRhaW5lcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlc3Ryb3lTdWJzY3JpcHRpb25zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWJzY3JpcHRpb24gPT4gc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQ2xpY2tNZXRob2QoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wZW5NZXRob2QgPT0gTmd0RHJvcGRvd25PcGVuTWV0aG9kLkNMSUNLXG4gICAgICAgICAgICB8fCB0aGlzLm9wZW5NZXRob2QgPT0gTmd0RHJvcGRvd25PcGVuTWV0aG9kLlBPUE9WRVJfQ0xJQ0s7XG4gICAgfVxufVxuXG5leHBvcnQgZW51bSBOZ3REcm9wZG93bk9wZW5NZXRob2Qge1xuICAgIENMSUNLID0gJ0NMSUNLJyxcbiAgICBQT1BPVkVSX0NMSUNLID0gJ1BPUE9WRVJfQ0xJQ0snLFxuICAgIFJJR0hUX0NMSUNLID0gJ1JJR0hUX0NMSUNLJyxcbiAgICBIT1ZFUiA9ICdIT1ZFUidcbn1cbiIsIjxkaXYgY2xhc3M9XCJzbTpyZWxhdGl2ZVwiPlxuICAgIDxkaXYgKG1vdXNlZW50ZXIpPVwib25Ib3Zlcihob3N0LCBjb250YWluZXIpXCIgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50LCBob3N0LCBjb250YWluZXIpXCIgKGNvbnRleHRtZW51KT1cIm9uUmlnaHRDbGljaygkZXZlbnQpXCIgI2hvc3Q+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD0nW2hvc3RdJz48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IFtoaWRkZW5dPSchaXNPcGVuJ1xuICAgICAgICBjbGFzcz1cInt7IHNob3VsZFJldmVyc2VZUG9zaXRpb24oKSA/ICdtYi0xMiBib3R0b20tMCcgOiAnbXQtNCcgfX0ge3sgc2hvdWxkUmV2ZXJzZVhQb3NpdGlvbigpID8gJ2xlZnQtMCc6ICdyaWdodC0wJyB9fSBuZ3QtZHJvcGRvd24tY29udGFpbmVyIHNtOm1yLTAgbXItMyBtYXgtdy14cyBhYnNvbHV0ZVwiXG4gICAgICAgIFtAb3BlbkNsb3NlXT1cImlzT3BlbiA/ICdvcGVuJyA6ICdjbG9zZWQnXCIgKG1vdXNlZW50ZXIpPVwib25Ib3Zlcihob3N0LCBjb250YWluZXIpXCJcbiAgICAgICAgKGNsaWNrKT0nY2xvc2VPblNlbGVjdE9wdGlvbigpJyBzdHlsZT1cInotaW5kZXg6IDExMDAgIWltcG9ydGFudDtcIiAjY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD0nW2NvbnRhaW5lcl0nPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48YnV0dG9uICpuZ0lmPVwiaXNPcGVuICYmIG9wZW5NZXRob2QgIT0gJ0hPVkVSJ1wiIGNsYXNzPVwiZml4ZWQgei00MCBpbnNldC0wIGgtZnVsbCB3LWZ1bGwgb3BhY2l0eS0wIGN1cnNvci1kZWZhdWx0XCJcbiAgICAoY2xpY2spPSd0b2dnbGUoKSc+XG48L2J1dHRvbj5cbiJdfQ==
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXRhaWx3aW5kL3NyYy9jb21wb25lbnRzL25ndC1kcm9wZG93bi9uZ3QtZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LWRyb3Bkb3duL25ndC1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFFSCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLFFBQVEsRUFDUixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7O0FBaUIxQyxNQUFNLE9BQU8sb0JBQW9CO0lBMEI3QixZQUVZLG9CQUFtRCxFQUNuRCxjQUFpQztRQURqQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQStCO1FBQ25ELG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQXhCN0IsaUJBQVksR0FBWSxJQUFJLENBQUM7UUFJN0IsaUJBQVksR0FBVyxJQUFJLENBQUM7UUFDNUIsZUFBVSxHQUEwQixxQkFBcUIsQ0FBQyxLQUFLLENBQUM7UUFFL0QsYUFBUSxHQUEwQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3JELGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFOUQsU0FBSSxHQUFXLElBQUksRUFBRSxDQUFDO1FBSXRCLHVCQUFrQixHQUFZLElBQUksQ0FB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QUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDOzRCQUNsRSxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQzs0QkFDdEUsVUFBVSxDQUFDLGdCQUFnQixFQUFFO2dDQUN6QixPQUFPLENBQUMsR0FBRyxDQUFDOzZCQUNmLENBQUM7eUJBQ0wsQ0FBQztxQkFDTDs7MEJBNkJJLFFBQVE7OzBCQUFJLFFBQVE7NEVBMUJ3QixZQUFZO3NCQUE1RCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRXhCLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUNVLGdCQUFnQjtzQkFBL0IsS0FBSztnQkFDVSxnQkFBZ0I7c0JBQS9CLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBRVcsUUFBUTtzQkFBeEIsTUFBTTtnQkFDVSxXQUFXO3NCQUEzQixNQUFNOztBQW9MWCxNQUFNLENBQU4sSUFBWSxxQkFLWDtBQUxELFdBQVkscUJBQXFCO0lBQzdCLHdDQUFlLENBQUE7SUFDZix3REFBK0IsQ0FBQTtJQUMvQixvREFBMkIsQ0FBQTtJQUMzQix3Q0FBZSxDQUFBO0FBQ25CLENBQUMsRUFMVyxxQkFBcUIsS0FBckIscUJBQXFCLFFBS2hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgU2tpcFNlbGYsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBnZXRFbnVtRnJvbVN0cmluZyB9IGZyb20gJy4uLy4uL2hlbHBlcnMvZW51bS9lbnVtJztcbmltcG9ydCB7IHV1aWQgfSBmcm9tICcuLi8uLi9oZWxwZXJzL3V1aWQnO1xuaW1wb3J0IHsgTmd0RHJvcGRvd25Db250YWluZXJDb21wb25lbnQgfSBmcm9tICcuL25ndC1kcm9wZG93bi1jb250YWluZXIvbmd0LWRyb3Bkb3duLWNvbnRhaW5lci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndC1kcm9wZG93bicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL25ndC1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbmd0LWRyb3Bkb3duLmNvbXBvbmVudC5jc3MnXSxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ29wZW5DbG9zZScsIFtcbiAgICAgICAgICAgIHN0YXRlKCdvcGVuJywgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDBweCknIH0pKSxcbiAgICAgICAgICAgIHN0YXRlKCdjbG9zZWQnLCBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLTEwcHgpJyB9KSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCdjbG9zZWQgPT4gb3BlbicsIFtcbiAgICAgICAgICAgICAgICBhbmltYXRlKDMwMClcbiAgICAgICAgICAgIF0pLFxuICAgICAgICBdKSxcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE5ndERyb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgY29udGFpbmVyUmVmOiBFbGVtZW50UmVmO1xuXG4gICAgQElucHV0KCkgcHVibGljIHNjcm9sbGFibGU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcHVibGljIGF1dG9YUmV2ZXJzZTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBwdWJsaWMgYXV0b1lSZXZlcnNlOiBib29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgcmV2ZXJzZVhQb3NpdGlvbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBwdWJsaWMgcmV2ZXJzZVlQb3NpdGlvbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBwdWJsaWMgY2xvc2VPbkNsaWNrOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBjbG9zZVRpbWVvdXQ6IG51bWJlciA9IDEwMDA7XG4gICAgQElucHV0KCkgcHVibGljIG9wZW5NZXRob2Q6IE5ndERyb3Bkb3duT3Blbk1ldGhvZCA9IE5ndERyb3Bkb3duT3Blbk1ldGhvZC5IT1ZFUjtcblxuICAgIEBPdXRwdXQoKSBwdWJsaWMgb25Ub2dnbGU6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgcHVibGljIG9uSG9zdENsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmcgPSB1dWlkKCk7XG4gICAgcHVibGljIGlzT3BlbjogYm9vbGVhbjtcbiAgICBwdWJsaWMgaXNZUG9zaXRpb25SZXZlcnNlZDogYm9vbGVhbjtcbiAgICBwdWJsaWMgaXNYUG9zaXRpb25SZXZlcnNlZDogYm9vbGVhbjtcbiAgICBwdWJsaWMgaXNCaW5kaW5nWVBvc2l0aW9uOiBib29sZWFuID0gdHJ1ZTtcbiAgICBwdWJsaWMgaXNCaW5kaW5nWFBvc2l0aW9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uczogQXJyYXk8U3Vic2NyaXB0aW9uPiA9IFtdO1xuICAgIHByaXZhdGUgY29udGFpbmVyWFBvc2l0aW9uOiBudW1iZXI7XG4gICAgcHJpdmF0ZSBjb250YWluZXJZUG9zaXRpb246IG51bWJlcjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKClcbiAgICAgICAgcHJpdmF0ZSBuZ3REcm9wZG93bkNvbnRhaW5lcjogTmd0RHJvcGRvd25Db250YWluZXJDb21wb25lbnQsXG4gICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7XG4gICAgICAgIGlmICh0aGlzLm5ndERyb3Bkb3duQ29udGFpbmVyKSB7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICAgICAgICB0aGlzLm5ndERyb3Bkb3duQ29udGFpbmVyLm9uQWN0aXZlRHJvcGRvd25DaGFuZ2Uuc3Vic2NyaWJlKChhY3RpdmVEcm9wZG93bjogTmd0RHJvcGRvd25Db21wb25lbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc09wZW4gPSAoYWN0aXZlRHJvcGRvd24ubmFtZSA9PT0gdGhpcy5uYW1lKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLm9wZW5NZXRob2QpIHtcbiAgICAgICAgICAgIHRoaXMub3Blbk1ldGhvZCA9IGdldEVudW1Gcm9tU3RyaW5nKGNoYW5nZXMub3Blbk1ldGhvZC5jdXJyZW50VmFsdWUsIE5ndERyb3Bkb3duT3Blbk1ldGhvZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveVN1YnNjcmlwdGlvbnMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICAgICAgICB0aGlzLm5ndERyb3Bkb3duQ29udGFpbmVyPy5zZXRBY3RpdmVEcm9wZG93bih0aGlzKTtcblxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICB0aGlzLmJpbmRDb250YWluZXJYUG9zaXRpb24oKTtcbiAgICAgICAgdGhpcy5iaW5kQ29udGFpbmVyWVBvc2l0aW9uKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsb3NlT25TZWxlY3RPcHRpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNsb3NlT25DbGljaykge1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNvbnRhaW5lclhQb3NpdGlvbiA9IG51bGw7XG4gICAgICAgIHRoaXMuY29udGFpbmVyWVBvc2l0aW9uID0gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9nZ2xlKCk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMub25Ub2dnbGUuZW1pdCh0aGlzLmlzT3Blbik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkhvdmVyKGhvc3Q6IGFueSwgY29udGFpbmVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3Blbk1ldGhvZCA9PSBOZ3REcm9wZG93bk9wZW5NZXRob2QuSE9WRVIgJiYgaG9zdCAmJiBjb250YWluZXIpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICAgICAgdGhpcy53YXRjaEhvdmVyKGhvc3QsIGNvbnRhaW5lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGljayhldmVudDogRXZlbnQsIGhvc3Q6IGFueSwgY29udGFpbmVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkhvc3RDbGljaz8uZW1pdCgpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzQ2xpY2tNZXRob2QoKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMub3Blbk1ldGhvZCA9PSBOZ3REcm9wZG93bk9wZW5NZXRob2QuUE9QT1ZFUl9DTElDSykge1xuICAgICAgICAgICAgdGhpcy53YXRjaEhvdmVyKGhvc3QsIGNvbnRhaW5lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25SaWdodENsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcGVuTWV0aG9kID09IE5ndERyb3Bkb3duT3Blbk1ldGhvZC5SSUdIVF9DTElDSykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzaG91bGRSZXZlcnNlWFBvc2l0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuYXV0b1hSZXZlcnNlIHx8IHRoaXMucmV2ZXJzZVhQb3NpdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXZlcnNlWFBvc2l0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuICYmICF0aGlzLmlzQmluZGluZ1hQb3NpdGlvbikge1xuICAgICAgICAgICAgdGhpcy5pc1hQb3NpdGlvblJldmVyc2VkID0gISh0aGlzLmNvbnRhaW5lclhQb3NpdGlvbiA+IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCk7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzWFBvc2l0aW9uUmV2ZXJzZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2hvdWxkUmV2ZXJzZVlQb3NpdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLmF1dG9ZUmV2ZXJzZSB8fCB0aGlzLnJldmVyc2VZUG9zaXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV2ZXJzZVlQb3NpdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzT3BlbiAmJiAhdGhpcy5pc0JpbmRpbmdZUG9zaXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuaXNZUG9zaXRpb25SZXZlcnNlZCA9IHRoaXMuY29udGFpbmVyWVBvc2l0aW9uID4gKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgKiAwLjkpO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc1lQb3NpdGlvblJldmVyc2VkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiaW5kQ29udGFpbmVyWFBvc2l0aW9uKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuY29udGFpbmVyWFBvc2l0aW9uICYmIHRoaXMuY29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpIHtcbiAgICAgICAgICAgIHRoaXMuaXNCaW5kaW5nWFBvc2l0aW9uID0gdHJ1ZTtcblxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXJYUG9zaXRpb24gPSB0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnhcbiAgICAgICAgICAgICAgICAgICAgKyB0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5pc0JpbmRpbmdYUG9zaXRpb24gPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGJpbmRDb250YWluZXJZUG9zaXRpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jb250YWluZXJZUG9zaXRpb24gJiYgdGhpcy5jb250YWluZXJSZWY/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KSB7XG4gICAgICAgICAgICB0aGlzLmlzQmluZGluZ1lQb3NpdGlvbiA9IHRydWU7XG5cbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGFpbmVyWVBvc2l0aW9uID0gdGhpcy5jb250YWluZXJSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS55XG4gICAgICAgICAgICAgICAgICAgICsgdGhpcy5jb250YWluZXJSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmlzQmluZGluZ1lQb3NpdGlvbiA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgd2F0Y2hIb3Zlcihob3N0OiBhbnksIGNvbnRhaW5lcjogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFob3N0IHx8ICFjb250YWluZXIgfHwgIXRoaXMuaXNJbkhvdmVyKGhvc3QsIGNvbnRhaW5lcikpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHRoaXMuY2xvc2VUaW1lb3V0KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzSW5Ib3Zlcihob3N0OiBhbnksIGNvbnRhaW5lcjogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBob3N0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignOmhvdmVyJykgPT0gaG9zdCB8fFxuICAgICAgICAgICAgY29udGFpbmVyLnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignOmhvdmVyJykgPT0gY29udGFpbmVyO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVzdHJveVN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YnNjcmlwdGlvbiA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IFtdO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNDbGlja01ldGhvZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3Blbk1ldGhvZCA9PSBOZ3REcm9wZG93bk9wZW5NZXRob2QuQ0xJQ0tcbiAgICAgICAgICAgIHx8IHRoaXMub3Blbk1ldGhvZCA9PSBOZ3REcm9wZG93bk9wZW5NZXRob2QuUE9QT1ZFUl9DTElDSztcbiAgICB9XG59XG5cbmV4cG9ydCBlbnVtIE5ndERyb3Bkb3duT3Blbk1ldGhvZCB7XG4gICAgQ0xJQ0sgPSAnQ0xJQ0snLFxuICAgIFBPUE9WRVJfQ0xJQ0sgPSAnUE9QT1ZFUl9DTElDSycsXG4gICAgUklHSFRfQ0xJQ0sgPSAnUklHSFRfQ0xJQ0snLFxuICAgIEhPVkVSID0gJ0hPVkVSJ1xufVxuIiwiPGRpdiBjbGFzcz1cInNtOnJlbGF0aXZlXCI+XG4gICAgPGRpdiAobW91c2VlbnRlcik9XCJvbkhvdmVyKGhvc3QsIGNvbnRhaW5lcilcIiAoY2xpY2spPVwib25DbGljaygkZXZlbnQsIGhvc3QsIGNvbnRhaW5lcilcIlxuICAgICAgICAoY29udGV4dG1lbnUpPVwib25SaWdodENsaWNrKCRldmVudClcIiAjaG9zdD5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PSdbaG9zdF0nPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgW2hpZGRlbl09JyFpc09wZW4nXG4gICAgICAgIGNsYXNzPVwie3sgc2hvdWxkUmV2ZXJzZVlQb3NpdGlvbigpID8gJ21iLTEyIGJvdHRvbS0wJyA6ICdtdC00JyB9fSB7eyBzaG91bGRSZXZlcnNlWFBvc2l0aW9uKCkgPyAnbGVmdC0wJzogJ3JpZ2h0LTAnIH19IG5ndC1kcm9wZG93bi1jb250YWluZXIgc206bXItMCBtci0zIG1heC13LXhzIGFic29sdXRlXCJcbiAgICAgICAgW0BvcGVuQ2xvc2VdPVwiaXNPcGVuID8gJ29wZW4nIDogJ2Nsb3NlZCdcIiAobW91c2VlbnRlcik9XCJvbkhvdmVyKGhvc3QsIGNvbnRhaW5lcilcIlxuICAgICAgICAoY2xpY2spPSdjbG9zZU9uU2VsZWN0T3B0aW9uKCknIHN0eWxlPVwiei1pbmRleDogMTEwMCAhaW1wb3J0YW50O1wiICNjb250YWluZXI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIiBbbmdDbGFzc109XCJ7ICdoLTY0IG92ZXJmbG93LWF1dG8nOnNjcm9sbGFibGUgfVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PSdbY29udGFpbmVyXSc+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48YnV0dG9uICpuZ0lmPVwiaXNPcGVuICYmIG9wZW5NZXRob2QgIT0gJ0hPVkVSJ1wiIGNsYXNzPVwiZml4ZWQgei00MCBpbnNldC0wIGgtZnVsbCB3LWZ1bGwgb3BhY2l0eS0wIGN1cnNvci1kZWZhdWx0XCJcbiAgICAoY2xpY2spPSd0b2dnbGUoKSc+XG48L2J1dHRvbj4iXX0=
@@ -31,7 +31,7 @@ export class NgtHelperComponent {
31
31
  }
32
32
  }
33
33
  NgtHelperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtHelperComponent, deps: [{ token: i1.NgtStylizableDirective, optional: true, self: true }, { token: i2.NgtTranslateService, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
34
- NgtHelperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: NgtHelperComponent, selector: "ngt-helper", inputs: { helpTextColor: "helpTextColor", helpText: "helpText", helpTitle: "helpTitle", icon: "icon", iconSize: "iconSize", iconColor: "iconColor", iconTitle: "iconTitle", tooltipSize: "tooltipSize", autoXReverse: "autoXReverse" }, viewQueries: [{ propertyName: "dropdownRef", first: true, predicate: ["dropdownRef"], descendants: true, static: true }], ngImport: i0, template: "<ngt-dropdown class=\"flex w-full hover:opacity-100\" [closeOnClick]=\"true\" [autoXReverse]=\"autoXReverse\" #dropdownRef>\n <div class=\"flex rounded-full {{ iconColor ?? 'text-green-500'}} {{ ngtStyle.compile(['px', 'text']) }}\" style=\"cursor: help;\"\n host>\n <ngt-svg *ngIf=\"icon\" [class]=\"iconSize\" [src]=\"icon\" style=\"cursor: help;\"></ngt-svg>\n\n <div *ngIf=\"!icon\" style=\"cursor: help;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path class=\"fill-current\"\n d=\"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z\" />\n </svg>\n </div>\n\n <p *ngIf=\"helpText\" class=\"cursor-pointer {{helpTextColor}}\" style=\"margin-left: 2px\">{{helpText}}</p>\n </div>\n\n <div class=\"bg-gray-100 rounded-lg hover:opacity-100 text-gray-800 {{tooltipSize}} shadow-lg {{ ngtStyle.compile(['text', 'fontCase']) }}\"\n [class.-mb-4]='dropdownRef.isYPositionReversed' container>\n <div\n class=\"{{ ngtStyle.compile(['color.bg', 'color.text']) }} flex justify-center rounded-t-lg hover:opacity-100 font-semibold border-b border-dashed border-gray-400 text-center px-6 py-1\">\n <ngt-svg *ngIf=\"iconTitle\" [src]=\"iconTitle\" style=\"margin-right: 3px\"></ngt-svg>\n {{ helpTitle || ngtTranslateService.ngtStandardHelperTitle }}\n </div>\n <div class=\"px-2 py-1 text-center hover:opacity-100\">\n <ng-content></ng-content>\n </div>\n </div>\n</ngt-dropdown>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.NgtSvgComponent, selector: "ngt-svg", inputs: ["src", "class"] }, { kind: "component", type: i5.NgtDropdownComponent, selector: "ngt-dropdown", inputs: ["autoXReverse", "autoYReverse", "reverseXPosition", "reverseYPosition", "closeOnClick", "closeTimeout", "openMethod"], outputs: ["onToggle", "onHostClick"] }], encapsulation: i0.ViewEncapsulation.None });
34
+ NgtHelperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: NgtHelperComponent, selector: "ngt-helper", inputs: { helpTextColor: "helpTextColor", helpText: "helpText", helpTitle: "helpTitle", icon: "icon", iconSize: "iconSize", iconColor: "iconColor", iconTitle: "iconTitle", tooltipSize: "tooltipSize", autoXReverse: "autoXReverse" }, viewQueries: [{ propertyName: "dropdownRef", first: true, predicate: ["dropdownRef"], descendants: true, static: true }], ngImport: i0, template: "<ngt-dropdown class=\"flex w-full hover:opacity-100\" [closeOnClick]=\"true\" [autoXReverse]=\"autoXReverse\" #dropdownRef>\n <div class=\"flex rounded-full {{ iconColor ?? 'text-green-500'}} {{ ngtStyle.compile(['px', 'text']) }}\" style=\"cursor: help;\"\n host>\n <ngt-svg *ngIf=\"icon\" [class]=\"iconSize\" [src]=\"icon\" style=\"cursor: help;\"></ngt-svg>\n\n <div *ngIf=\"!icon\" style=\"cursor: help;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path class=\"fill-current\"\n d=\"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z\" />\n </svg>\n </div>\n\n <p *ngIf=\"helpText\" class=\"cursor-pointer {{helpTextColor}}\" style=\"margin-left: 2px\">{{helpText}}</p>\n </div>\n\n <div class=\"bg-gray-100 rounded-lg hover:opacity-100 text-gray-800 {{tooltipSize}} shadow-lg {{ ngtStyle.compile(['text', 'fontCase']) }}\"\n [class.-mb-4]='dropdownRef.isYPositionReversed' container>\n <div\n class=\"{{ ngtStyle.compile(['color.bg', 'color.text']) }} flex justify-center rounded-t-lg hover:opacity-100 font-semibold border-b border-dashed border-gray-400 text-center px-6 py-1\">\n <ngt-svg *ngIf=\"iconTitle\" [src]=\"iconTitle\" style=\"margin-right: 3px\"></ngt-svg>\n {{ helpTitle || ngtTranslateService.ngtStandardHelperTitle }}\n </div>\n <div class=\"px-2 py-1 text-center hover:opacity-100\">\n <ng-content></ng-content>\n </div>\n </div>\n</ngt-dropdown>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.NgtSvgComponent, selector: "ngt-svg", inputs: ["src", "class"] }, { kind: "component", type: i5.NgtDropdownComponent, selector: "ngt-dropdown", inputs: ["scrollable", "autoXReverse", "autoYReverse", "reverseXPosition", "reverseYPosition", "closeOnClick", "closeTimeout", "openMethod"], outputs: ["onToggle", "onHostClick"] }], encapsulation: i0.ViewEncapsulation.None });
35
35
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NgtHelperComponent, decorators: [{
36
36
  type: Component,
37
37
  args: [{ selector: 'ngt-helper', encapsulation: ViewEncapsulation.None, template: "<ngt-dropdown class=\"flex w-full hover:opacity-100\" [closeOnClick]=\"true\" [autoXReverse]=\"autoXReverse\" #dropdownRef>\n <div class=\"flex rounded-full {{ iconColor ?? 'text-green-500'}} {{ ngtStyle.compile(['px', 'text']) }}\" style=\"cursor: help;\"\n host>\n <ngt-svg *ngIf=\"icon\" [class]=\"iconSize\" [src]=\"icon\" style=\"cursor: help;\"></ngt-svg>\n\n <div *ngIf=\"!icon\" style=\"cursor: help;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path class=\"fill-current\"\n d=\"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z\" />\n </svg>\n </div>\n\n <p *ngIf=\"helpText\" class=\"cursor-pointer {{helpTextColor}}\" style=\"margin-left: 2px\">{{helpText}}</p>\n </div>\n\n <div class=\"bg-gray-100 rounded-lg hover:opacity-100 text-gray-800 {{tooltipSize}} shadow-lg {{ ngtStyle.compile(['text', 'fontCase']) }}\"\n [class.-mb-4]='dropdownRef.isYPositionReversed' container>\n <div\n class=\"{{ ngtStyle.compile(['color.bg', 'color.text']) }} flex justify-center rounded-t-lg hover:opacity-100 font-semibold border-b border-dashed border-gray-400 text-center px-6 py-1\">\n <ngt-svg *ngIf=\"iconTitle\" [src]=\"iconTitle\" style=\"margin-right: 3px\"></ngt-svg>\n {{ helpTitle || ngtTranslateService.ngtStandardHelperTitle }}\n </div>\n <div class=\"px-2 py-1 text-center hover:opacity-100\">\n <ng-content></ng-content>\n </div>\n </div>\n</ngt-dropdown>\n" }]