@odx/angular 1.0.4 → 2.0.0
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/cdk/autocomplete-control/README.md +3 -0
- package/cdk/autocomplete-control/index.d.ts +3 -0
- package/cdk/autocomplete-control/lib/abstract/base-search-field.directive.d.ts +13 -0
- package/cdk/autocomplete-control/lib/abstract/index.d.ts +1 -0
- package/cdk/autocomplete-control/lib/autocomplete-control.d.ts +39 -0
- package/cdk/autocomplete-control/lib/pipes/base-search-filter-pipe.d.ts +11 -0
- package/cdk/autocomplete-control/lib/pipes/index.d.ts +1 -0
- package/cdk/option-control/README.md +3 -0
- package/cdk/option-control/index.d.ts +1 -0
- package/cdk/option-control/lib/option-control.d.ts +17 -0
- package/components/autocomplete/README.md +3 -0
- package/components/autocomplete/index.d.ts +6 -0
- package/components/autocomplete/lib/autocomplete.component.d.ts +30 -0
- package/components/autocomplete/lib/autocomplete.module.d.ts +11 -0
- package/components/autocomplete/lib/autocomplete.tokens.d.ts +3 -0
- package/components/autocomplete/lib/components/index.d.ts +1 -0
- package/components/autocomplete/lib/components/option/autocomplete-option.component.d.ts +9 -0
- package/components/autocomplete/lib/directives/autocomplete-search-field.directive.d.ts +9 -0
- package/components/autocomplete/lib/directives/index.d.ts +1 -0
- package/components/autocomplete/lib/pipes/autocomplete-search-filter.pipe.d.ts +12 -0
- package/components/autocomplete/lib/pipes/index.d.ts +1 -0
- package/components/chip/index.d.ts +1 -1
- package/components/chip/lib/{chip.component.d.ts → components/chip/chip.component.d.ts} +1 -1
- package/components/chip/lib/components/chip-list/chip-list.component.d.ts +6 -0
- package/components/chip/lib/components/chip-list-row/chip-list-row.component.d.ts +6 -0
- package/components/chip/lib/components/index.d.ts +3 -0
- package/components/dropdown/lib/dropdown.directive.d.ts +2 -1
- package/components/form-field/lib/models/form-field-variant.d.ts +1 -0
- package/components/main-menu/lib/directives/index.d.ts +1 -0
- package/components/main-menu/lib/directives/main-menu-close.directive.d.ts +7 -0
- package/components/main-menu/lib/directives/main-menu-item.directive.d.ts +3 -4
- package/components/main-menu/lib/main-menu.module.d.ts +3 -2
- package/components/menu/lib/directives/menu-item.directive.d.ts +1 -1
- package/components/select/index.d.ts +0 -1
- package/components/select/lib/components/index.d.ts +1 -1
- package/components/select/lib/components/select-option/select-option.component.d.ts +19 -0
- package/components/select/lib/directives/select-search-field.directive.d.ts +3 -7
- package/components/select/lib/pipes/select-search-filter.pipe.d.ts +8 -8
- package/components/select/lib/select.component.d.ts +15 -30
- package/components/select/lib/select.module.d.ts +2 -2
- package/components/select/lib/select.tokens.d.ts +2 -2
- package/components/table/README.md +3 -0
- package/components/table/index.d.ts +5 -0
- package/components/table/lib/components/check-cell/check-cell.component.d.ts +11 -0
- package/components/table/lib/components/header-title/header-title.component.d.ts +28 -0
- package/components/table/lib/components/index.d.ts +2 -0
- package/components/table/lib/directives/index.d.ts +2 -0
- package/components/table/lib/directives/table-cell.directive.d.ts +6 -0
- package/components/table/lib/directives/table-row.directive.d.ts +6 -0
- package/components/table/lib/interfaces/index.d.ts +3 -0
- package/components/table/lib/models/index.d.ts +2 -0
- package/components/table/lib/models/sort-variant.d.ts +6 -0
- package/components/table/lib/models/table-variant.d.ts +5 -0
- package/components/table/lib/table.component.d.ts +29 -0
- package/components/table/lib/table.config.d.ts +4 -0
- package/components/table/lib/table.module.d.ts +11 -0
- package/components/wizard/README.md +3 -0
- package/components/wizard/index.d.ts +3 -0
- package/components/wizard/lib/components/index.d.ts +1 -0
- package/components/wizard/lib/components/wizard-step/wizard-step.component.d.ts +17 -0
- package/components/wizard/lib/wizard.component.d.ts +31 -0
- package/components/wizard/lib/wizard.module.d.ts +9 -0
- package/esm2020/cdk/autocomplete-control/index.mjs +4 -0
- package/esm2020/cdk/autocomplete-control/lib/abstract/base-search-field.directive.mjs +38 -0
- package/esm2020/cdk/autocomplete-control/lib/abstract/index.mjs +2 -0
- package/esm2020/cdk/autocomplete-control/lib/autocomplete-control.mjs +90 -0
- package/esm2020/cdk/autocomplete-control/lib/pipes/base-search-filter-pipe.mjs +32 -0
- package/esm2020/cdk/autocomplete-control/lib/pipes/index.mjs +2 -0
- package/esm2020/cdk/autocomplete-control/odx-angular-cdk-autocomplete-control.mjs +5 -0
- package/esm2020/cdk/option-control/index.mjs +2 -0
- package/esm2020/cdk/option-control/lib/option-control.mjs +47 -0
- package/esm2020/cdk/option-control/odx-angular-cdk-option-control.mjs +5 -0
- package/esm2020/components/autocomplete/index.mjs +7 -0
- package/esm2020/components/autocomplete/lib/autocomplete.component.mjs +162 -0
- package/esm2020/components/autocomplete/lib/autocomplete.module.mjs +21 -0
- package/esm2020/components/autocomplete/lib/autocomplete.tokens.mjs +3 -0
- package/esm2020/components/autocomplete/lib/components/index.mjs +2 -0
- package/esm2020/components/autocomplete/lib/components/option/autocomplete-option.component.mjs +33 -0
- package/esm2020/components/autocomplete/lib/directives/autocomplete-search-field.directive.mjs +26 -0
- package/esm2020/components/autocomplete/lib/directives/index.mjs +2 -0
- package/esm2020/components/autocomplete/lib/pipes/autocomplete-search-filter.pipe.mjs +30 -0
- package/esm2020/components/autocomplete/lib/pipes/index.mjs +2 -0
- package/esm2020/components/autocomplete/odx-angular-components-autocomplete.mjs +5 -0
- package/esm2020/components/card/lib/card.component.mjs +2 -2
- package/esm2020/components/chip/index.mjs +2 -2
- package/esm2020/components/chip/lib/{chip.component.mjs → components/chip/chip.component.mjs} +2 -2
- package/esm2020/components/chip/lib/components/chip-list/chip-list.component.mjs +21 -0
- package/esm2020/components/chip/lib/components/chip-list-row/chip-list-row.component.mjs +21 -0
- package/esm2020/components/chip/lib/components/index.mjs +4 -0
- package/esm2020/components/dropdown/lib/dropdown.component.mjs +3 -3
- package/esm2020/components/dropdown/lib/dropdown.directive.mjs +10 -2
- package/esm2020/components/form-field/lib/components/form-group/form-group.component.mjs +3 -3
- package/esm2020/components/form-field/lib/form-field.component.mjs +3 -3
- package/esm2020/components/form-field/lib/form-field.service.mjs +2 -2
- package/esm2020/components/form-field/lib/models/form-field-variant.mjs +2 -1
- package/esm2020/components/main-menu/lib/directives/index.mjs +2 -1
- package/esm2020/components/main-menu/lib/directives/main-menu-close.directive.mjs +24 -0
- package/esm2020/components/main-menu/lib/directives/main-menu-item.directive.mjs +6 -12
- package/esm2020/components/main-menu/lib/main-menu.module.mjs +4 -4
- package/esm2020/components/menu/lib/directives/menu-item.directive.mjs +3 -3
- package/esm2020/components/select/index.mjs +1 -2
- package/esm2020/components/select/lib/components/index.mjs +2 -2
- package/esm2020/components/select/lib/components/select-option/select-option.component.mjs +75 -0
- package/esm2020/components/select/lib/directives/select-search-field.directive.mjs +9 -21
- package/esm2020/components/select/lib/pipes/select-search-filter.pipe.mjs +12 -33
- package/esm2020/components/select/lib/select.component.mjs +44 -86
- package/esm2020/components/select/lib/select.module.mjs +5 -5
- package/esm2020/components/select/lib/select.tokens.mjs +2 -2
- package/esm2020/components/table/index.mjs +6 -0
- package/esm2020/components/table/lib/components/check-cell/check-cell.component.mjs +29 -0
- package/esm2020/components/table/lib/components/header-title/header-title.component.mjs +86 -0
- package/esm2020/components/table/lib/components/index.mjs +3 -0
- package/esm2020/components/table/lib/directives/index.mjs +3 -0
- package/esm2020/components/table/lib/directives/table-cell.directive.mjs +27 -0
- package/esm2020/components/table/lib/directives/table-row.directive.mjs +28 -0
- package/esm2020/components/table/lib/interfaces/index.mjs +4 -0
- package/esm2020/components/table/lib/models/index.mjs +3 -0
- package/esm2020/components/table/lib/models/sort-variant.mjs +6 -0
- package/esm2020/components/table/lib/models/table-variant.mjs +5 -0
- package/esm2020/components/table/lib/table.component.mjs +86 -0
- package/esm2020/components/table/lib/table.config.mjs +3 -0
- package/esm2020/components/table/lib/table.module.mjs +21 -0
- package/esm2020/components/table/odx-angular-components-table.mjs +5 -0
- package/esm2020/components/wizard/index.mjs +4 -0
- package/esm2020/components/wizard/lib/components/index.mjs +2 -0
- package/esm2020/components/wizard/lib/components/wizard-step/wizard-step.component.mjs +73 -0
- package/esm2020/components/wizard/lib/wizard.component.mjs +155 -0
- package/esm2020/components/wizard/lib/wizard.module.mjs +19 -0
- package/esm2020/components/wizard/odx-angular-components-wizard.mjs +5 -0
- package/esm2020/lib/services/window-ref.mjs +4 -1
- package/fesm2015/odx-angular-cdk-autocomplete-control.mjs +164 -0
- package/fesm2015/odx-angular-cdk-autocomplete-control.mjs.map +1 -0
- package/fesm2015/odx-angular-cdk-option-control.mjs +55 -0
- package/fesm2015/odx-angular-cdk-option-control.mjs.map +1 -0
- package/fesm2015/odx-angular-components-autocomplete.mjs +263 -0
- package/fesm2015/odx-angular-components-autocomplete.mjs.map +1 -0
- package/fesm2015/odx-angular-components-card.mjs +1 -1
- package/fesm2015/odx-angular-components-card.mjs.map +1 -1
- package/fesm2015/odx-angular-components-chip.mjs +35 -5
- package/fesm2015/odx-angular-components-chip.mjs.map +1 -1
- package/fesm2015/odx-angular-components-dropdown.mjs +11 -3
- package/fesm2015/odx-angular-components-dropdown.mjs.map +1 -1
- package/fesm2015/odx-angular-components-form-field.mjs +5 -4
- package/fesm2015/odx-angular-components-form-field.mjs.map +1 -1
- package/fesm2015/odx-angular-components-main-menu.mjs +28 -14
- package/fesm2015/odx-angular-components-main-menu.mjs.map +1 -1
- package/fesm2015/odx-angular-components-menu.mjs +2 -2
- package/fesm2015/odx-angular-components-menu.mjs.map +1 -1
- package/fesm2015/odx-angular-components-select.mjs +80 -175
- package/fesm2015/odx-angular-components-select.mjs.map +1 -1
- package/fesm2015/odx-angular-components-table.mjs +264 -0
- package/fesm2015/odx-angular-components-table.mjs.map +1 -0
- package/fesm2015/odx-angular-components-wizard.mjs +242 -0
- package/fesm2015/odx-angular-components-wizard.mjs.map +1 -0
- package/fesm2015/odx-angular.mjs +3 -0
- package/fesm2015/odx-angular.mjs.map +1 -1
- package/fesm2020/odx-angular-cdk-autocomplete-control.mjs +160 -0
- package/fesm2020/odx-angular-cdk-autocomplete-control.mjs.map +1 -0
- package/fesm2020/odx-angular-cdk-option-control.mjs +54 -0
- package/fesm2020/odx-angular-cdk-option-control.mjs.map +1 -0
- package/fesm2020/odx-angular-components-autocomplete.mjs +254 -0
- package/fesm2020/odx-angular-components-autocomplete.mjs.map +1 -0
- package/fesm2020/odx-angular-components-card.mjs +1 -1
- package/fesm2020/odx-angular-components-card.mjs.map +1 -1
- package/fesm2020/odx-angular-components-chip.mjs +35 -5
- package/fesm2020/odx-angular-components-chip.mjs.map +1 -1
- package/fesm2020/odx-angular-components-dropdown.mjs +11 -3
- package/fesm2020/odx-angular-components-dropdown.mjs.map +1 -1
- package/fesm2020/odx-angular-components-form-field.mjs +5 -4
- package/fesm2020/odx-angular-components-form-field.mjs.map +1 -1
- package/fesm2020/odx-angular-components-main-menu.mjs +28 -14
- package/fesm2020/odx-angular-components-main-menu.mjs.map +1 -1
- package/fesm2020/odx-angular-components-menu.mjs +2 -2
- package/fesm2020/odx-angular-components-menu.mjs.map +1 -1
- package/fesm2020/odx-angular-components-select.mjs +77 -170
- package/fesm2020/odx-angular-components-select.mjs.map +1 -1
- package/fesm2020/odx-angular-components-table.mjs +259 -0
- package/fesm2020/odx-angular-components-table.mjs.map +1 -0
- package/fesm2020/odx-angular-components-wizard.mjs +239 -0
- package/fesm2020/odx-angular-components-wizard.mjs.map +1 -0
- package/fesm2020/odx-angular.mjs +3 -0
- package/fesm2020/odx-angular.mjs.map +1 -1
- package/lib/services/window-ref.d.ts +1 -0
- package/package.json +42 -2
- package/components/select/lib/abstract/index.d.ts +0 -2
- package/components/select/lib/abstract/select-control-option.d.ts +0 -9
- package/components/select/lib/abstract/select-control.d.ts +0 -12
- package/components/select/lib/components/option/option.component.d.ts +0 -26
- package/esm2020/components/select/lib/abstract/index.mjs +0 -3
- package/esm2020/components/select/lib/abstract/select-control-option.mjs +0 -2
- package/esm2020/components/select/lib/abstract/select-control.mjs +0 -2
- package/esm2020/components/select/lib/components/option/option.component.mjs +0 -95
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { EventEmitter, OnInit, QueryList } from '@angular/core';
|
|
2
|
+
import { FormGroup } from '@angular/forms';
|
|
3
|
+
import { HeaderTitleComponent } from './components/header-title/header-title.component';
|
|
4
|
+
import { SortStatus, TableHeaderCell } from './interfaces';
|
|
5
|
+
import { TableVariant } from './models';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export declare class TableComponent<T> implements OnInit {
|
|
8
|
+
private readonly takeUntilDestroyed;
|
|
9
|
+
readonly element: import("@angular/core").ElementRef<HTMLElement>;
|
|
10
|
+
variant?: TableVariant | null;
|
|
11
|
+
data: T[];
|
|
12
|
+
headerData: TableHeaderCell[];
|
|
13
|
+
form: FormGroup;
|
|
14
|
+
readonly sorted: EventEmitter<SortStatus>;
|
|
15
|
+
readonly filtered: EventEmitter<{
|
|
16
|
+
[key: string]: string;
|
|
17
|
+
}>;
|
|
18
|
+
readonly checked: EventEmitter<{
|
|
19
|
+
column: string;
|
|
20
|
+
check: boolean;
|
|
21
|
+
}>;
|
|
22
|
+
headers: QueryList<HeaderTitleComponent>;
|
|
23
|
+
ngOnInit(): void;
|
|
24
|
+
clearSort(): void;
|
|
25
|
+
private formListener;
|
|
26
|
+
private setHeaderData;
|
|
27
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TableComponent<any>, never>;
|
|
28
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TableComponent<any>, "table[odxTable]", never, { "variant": "variant"; "data": "data"; "headerData": "headerData"; }, { "sorted": "sorted"; "filtered": "filtered"; "checked": "checked"; }, never, ["tr"], true, never>;
|
|
29
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "./table.component";
|
|
3
|
+
import * as i2 from "./directives/table-row.directive";
|
|
4
|
+
import * as i3 from "./directives/table-cell.directive";
|
|
5
|
+
import * as i4 from "./components/check-cell/check-cell.component";
|
|
6
|
+
import * as i5 from "@odx/angular";
|
|
7
|
+
export declare class TableModule {
|
|
8
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TableModule, never>;
|
|
9
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<TableModule, never, [typeof i1.TableComponent, typeof i2.TableRowDirective, typeof i3.TableCellDirective, typeof i4.CheckCellComponent], [typeof i5.CoreModule, typeof i1.TableComponent, typeof i2.TableRowDirective, typeof i3.TableCellDirective, typeof i4.CheckCellComponent]>;
|
|
10
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<TableModule>;
|
|
11
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './wizard-step/wizard-step.component';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Subject } from 'rxjs';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@odx/angular";
|
|
4
|
+
export declare class WizardStepComponent {
|
|
5
|
+
readonly element: import("@angular/core").ElementRef<HTMLElement>;
|
|
6
|
+
readonly stepChosen$: Subject<WizardStepComponent>;
|
|
7
|
+
isLastTouched: boolean;
|
|
8
|
+
active: boolean;
|
|
9
|
+
passed: boolean;
|
|
10
|
+
visible: boolean;
|
|
11
|
+
valid: boolean;
|
|
12
|
+
touched: boolean;
|
|
13
|
+
setValid(state: boolean): void;
|
|
14
|
+
protected chooseStep(): void;
|
|
15
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WizardStepComponent, never>;
|
|
16
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<WizardStepComponent, "odx-wizard-step", never, { "valid": "valid"; }, {}, never, ["*"], true, [{ directive: typeof i1.WithTabIndex; inputs: {}; outputs: {}; }, { directive: typeof i1.WithDisabledState; inputs: {}; outputs: {}; }]>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { BooleanInput } from '@angular/cdk/coercion';
|
|
2
|
+
import { AfterViewInit, EventEmitter } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class WizardComponent implements AfterViewInit {
|
|
5
|
+
static ngAcceptInputType_vertical: BooleanInput;
|
|
6
|
+
private readonly steps;
|
|
7
|
+
private readonly destroyed;
|
|
8
|
+
private readonly renderer;
|
|
9
|
+
private visibleStepsSegments;
|
|
10
|
+
private readonly dottedLineStart;
|
|
11
|
+
private readonly dottedLineEnd;
|
|
12
|
+
private readonly windowRef;
|
|
13
|
+
private activeStep;
|
|
14
|
+
readonly element: import("@angular/core").ElementRef<HTMLElement>;
|
|
15
|
+
vertical: boolean;
|
|
16
|
+
activeStepChanged: EventEmitter<number>;
|
|
17
|
+
ngAfterViewInit(): void;
|
|
18
|
+
nextStep(): void;
|
|
19
|
+
previousStep(): void;
|
|
20
|
+
setActiveStepValid(): void;
|
|
21
|
+
private calculateVisibleStepsSegments;
|
|
22
|
+
private getStyleFromCSS;
|
|
23
|
+
private setActiveStep;
|
|
24
|
+
private clickStepSubscriber;
|
|
25
|
+
private changeStepHandler;
|
|
26
|
+
private setHiddenSteps;
|
|
27
|
+
private isNeighbors;
|
|
28
|
+
private setDottedLineActive;
|
|
29
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WizardComponent, never>;
|
|
30
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<WizardComponent, "odx-wizard", never, { "vertical": "vertical"; }, { "activeStepChanged": "activeStepChanged"; }, ["steps"], ["odx-wizard-step"], true, never>;
|
|
31
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "./wizard.component";
|
|
3
|
+
import * as i2 from "./components/wizard-step/wizard-step.component";
|
|
4
|
+
import * as i3 from "@odx/angular";
|
|
5
|
+
export declare class WizardModule {
|
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WizardModule, never>;
|
|
7
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<WizardModule, never, [typeof i1.WizardComponent, typeof i2.WizardStepComponent], [typeof i3.CoreModule, typeof i1.WizardComponent, typeof i2.WizardStepComponent]>;
|
|
8
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<WizardModule>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './lib/abstract';
|
|
2
|
+
export * from './lib/autocomplete-control';
|
|
3
|
+
export * from './lib/pipes';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY2RrL2F1dG9jb21wbGV0ZS1jb250cm9sL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9hYnN0cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdXRvY29tcGxldGUtY29udHJvbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcyc7XG4iXX0=
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Directive } from '@angular/core';
|
|
2
|
+
import { injectElement, untilDestroyed } from '@odx/angular/utils';
|
|
3
|
+
import { distinctUntilChanged, fromEvent, map } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class BaseSearchFieldDirective {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.takeUntilDestroyed = untilDestroyed();
|
|
8
|
+
this.element = injectElement();
|
|
9
|
+
this.valueChange$ = fromEvent(this.element.nativeElement, 'input').pipe(distinctUntilChanged(), map(() => this.nativeElementValue), this.takeUntilDestroyed());
|
|
10
|
+
}
|
|
11
|
+
get nativeElementValue() {
|
|
12
|
+
return this.element.nativeElement.value;
|
|
13
|
+
}
|
|
14
|
+
set nativeElementValue(value) {
|
|
15
|
+
this.element.nativeElement.value = value;
|
|
16
|
+
}
|
|
17
|
+
focus() {
|
|
18
|
+
this.element.nativeElement.focus();
|
|
19
|
+
}
|
|
20
|
+
blur() {
|
|
21
|
+
this.element.nativeElement.blur();
|
|
22
|
+
}
|
|
23
|
+
reset() {
|
|
24
|
+
this.element.nativeElement.value = '';
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
BaseSearchFieldDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseSearchFieldDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
28
|
+
BaseSearchFieldDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: BaseSearchFieldDirective, isStandalone: true, host: { properties: { "class.odx-form-field-control": "true" } }, ngImport: i0 });
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseSearchFieldDirective, decorators: [{
|
|
30
|
+
type: Directive,
|
|
31
|
+
args: [{
|
|
32
|
+
standalone: true,
|
|
33
|
+
host: {
|
|
34
|
+
'[class.odx-form-field-control]': 'true',
|
|
35
|
+
},
|
|
36
|
+
}]
|
|
37
|
+
}] });
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zZWFyY2gtZmllbGQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2Nkay9hdXRvY29tcGxldGUtY29udHJvbC9zcmMvbGliL2Fic3RyYWN0L2Jhc2Utc2VhcmNoLWZpZWxkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBUTVELE1BQU0sT0FBZ0Isd0JBQXdCO0lBTjlDO1FBT3FCLHVCQUFrQixHQUFHLGNBQWMsRUFBRSxDQUFDO1FBRXpDLFlBQU8sR0FBRyxhQUFhLEVBQW9CLENBQUM7UUFFckQsaUJBQVksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUN2RSxvQkFBb0IsRUFBRSxFQUN0QixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQ2xDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUMxQixDQUFDO0tBcUJIO0lBbkJDLElBQVcsa0JBQWtCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFXLGtCQUFrQixDQUFDLEtBQWE7UUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUMzQyxDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFTSxJQUFJO1FBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ3hDLENBQUM7O3FIQTdCbUIsd0JBQXdCO3lHQUF4Qix3QkFBd0I7MkZBQXhCLHdCQUF3QjtrQkFON0MsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFO3dCQUNKLGdDQUFnQyxFQUFFLE1BQU07cUJBQ3pDO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3RFbGVtZW50LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZnJvbUV2ZW50LCBtYXAgfSBmcm9tICdyeGpzJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm9keC1mb3JtLWZpZWxkLWNvbnRyb2xdJzogJ3RydWUnLFxuICB9LFxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlU2VhcmNoRmllbGREaXJlY3RpdmUge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGFrZVVudGlsRGVzdHJveWVkID0gdW50aWxEZXN0cm95ZWQoKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZWxlbWVudCA9IGluamVjdEVsZW1lbnQ8SFRNTElucHV0RWxlbWVudD4oKTtcblxuICBwdWJsaWMgdmFsdWVDaGFuZ2UkID0gZnJvbUV2ZW50KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCAnaW5wdXQnKS5waXBlKFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgbWFwKCgpID0+IHRoaXMubmF0aXZlRWxlbWVudFZhbHVlKSxcbiAgICB0aGlzLnRha2VVbnRpbERlc3Ryb3llZCgpXG4gICk7XG5cbiAgcHVibGljIGdldCBuYXRpdmVFbGVtZW50VmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gIH1cblxuICBwdWJsaWMgc2V0IG5hdGl2ZUVsZW1lbnRWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBmb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgcHVibGljIGJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICB9XG5cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './base-search-field.directive';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY2RrL2F1dG9jb21wbGV0ZS1jb250cm9sL3NyYy9saWIvYWJzdHJhY3QvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywrQkFBK0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYmFzZS1zZWFyY2gtZmllbGQuZGlyZWN0aXZlJztcbiJdfQ==
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
|
|
3
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
4
|
+
import { ChangeDetectorRef, Directive, EventEmitter, HostListener, inject, Input, Output, ViewChild } from '@angular/core';
|
|
5
|
+
import { detectControllerChanges } from '@odx/angular';
|
|
6
|
+
import { CustomFormControl } from '@odx/angular/cdk/custom-form-control';
|
|
7
|
+
import { DropdownDirective } from '@odx/angular/components/dropdown';
|
|
8
|
+
import { injectElement, isFunction, Transform, untilDestroyed } from '@odx/angular/utils';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
export class AutocompleteControl extends CustomFormControl {
|
|
11
|
+
get hasOptions() {
|
|
12
|
+
return !!this.options?.length;
|
|
13
|
+
}
|
|
14
|
+
get isOpen() {
|
|
15
|
+
return !!this.dropdown?.isOpen;
|
|
16
|
+
}
|
|
17
|
+
constructor() {
|
|
18
|
+
super(null);
|
|
19
|
+
this.smoothScrollEnabled = false;
|
|
20
|
+
this.takeUntilDestroyed = untilDestroyed();
|
|
21
|
+
this.changeDetector = inject(ChangeDetectorRef);
|
|
22
|
+
this.element = injectElement();
|
|
23
|
+
this.isLoading = false;
|
|
24
|
+
this.optionSelected = new EventEmitter();
|
|
25
|
+
detectControllerChanges(this).subscribe();
|
|
26
|
+
}
|
|
27
|
+
ngAfterViewInit() {
|
|
28
|
+
if (!this.options)
|
|
29
|
+
return;
|
|
30
|
+
this.initKeyManager(this.options);
|
|
31
|
+
this.handleQueryListOption(this.options);
|
|
32
|
+
this.handleSearchFieldChanges();
|
|
33
|
+
}
|
|
34
|
+
scrollOptionIntoView({ element }) {
|
|
35
|
+
const behavior = this.smoothScrollEnabled ? 'smooth' : undefined;
|
|
36
|
+
if (isFunction(element.nativeElement.scrollIntoView)) {
|
|
37
|
+
element.nativeElement.scrollIntoView({ block: 'center', behavior });
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
initKeyManager(options) {
|
|
41
|
+
this.keyManager = new ActiveDescendantKeyManager(options).withHomeAndEnd();
|
|
42
|
+
}
|
|
43
|
+
disableSmoothScroll() {
|
|
44
|
+
this.smoothScrollEnabled = false;
|
|
45
|
+
}
|
|
46
|
+
enableSmoothScroll() {
|
|
47
|
+
this.smoothScrollEnabled = true;
|
|
48
|
+
}
|
|
49
|
+
openDropdown() {
|
|
50
|
+
this.dropdown?.open();
|
|
51
|
+
}
|
|
52
|
+
closeDropdown() {
|
|
53
|
+
this.dropdown?.close();
|
|
54
|
+
}
|
|
55
|
+
handleFocusOut(event) {
|
|
56
|
+
if (this.isOpen) {
|
|
57
|
+
event.stopImmediatePropagation();
|
|
58
|
+
}
|
|
59
|
+
this.onTouched();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
AutocompleteControl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AutocompleteControl, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
63
|
+
AutocompleteControl.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: AutocompleteControl, isStandalone: true, inputs: { isLoading: "isLoading", stringify: "stringify" }, outputs: { optionSelected: "optionSelected" }, host: { listeners: { "focusout": "handleFocusOut($event)" }, properties: { "class.is-open": "isOpen", "attr.aria-disabled": "isDisabled || null" } }, viewQueries: [{ propertyName: "dropdown", first: true, predicate: DropdownDirective, descendants: true }], usesInheritance: true, ngImport: i0 });
|
|
64
|
+
__decorate([
|
|
65
|
+
Transform(coerceBooleanProperty),
|
|
66
|
+
__metadata("design:type", Object)
|
|
67
|
+
], AutocompleteControl.prototype, "isLoading", void 0);
|
|
68
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AutocompleteControl, decorators: [{
|
|
69
|
+
type: Directive,
|
|
70
|
+
args: [{
|
|
71
|
+
standalone: true,
|
|
72
|
+
host: {
|
|
73
|
+
'[class.is-open]': 'isOpen',
|
|
74
|
+
'[attr.aria-disabled]': 'isDisabled || null',
|
|
75
|
+
},
|
|
76
|
+
}]
|
|
77
|
+
}], ctorParameters: function () { return []; }, propDecorators: { dropdown: [{
|
|
78
|
+
type: ViewChild,
|
|
79
|
+
args: [DropdownDirective]
|
|
80
|
+
}], isLoading: [{
|
|
81
|
+
type: Input
|
|
82
|
+
}], stringify: [{
|
|
83
|
+
type: Input
|
|
84
|
+
}], optionSelected: [{
|
|
85
|
+
type: Output
|
|
86
|
+
}], handleFocusOut: [{
|
|
87
|
+
type: HostListener,
|
|
88
|
+
args: ['focusout', ['$event']]
|
|
89
|
+
}] } });
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWNvbnRyb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY2RrL2F1dG9jb21wbGV0ZS1jb250cm9sL3NyYy9saWIvYXV0b2NvbXBsZXRlLWNvbnRyb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9ELE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQWlCLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFhLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNySixPQUFPLEVBQUUsdUJBQXVCLEVBQWUsTUFBTSxjQUFjLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQVUxRixNQUFNLE9BQWdCLG1CQUF1QixTQUFRLGlCQUEyQjtJQW9COUUsSUFBVyxVQUFVO1FBQ25CLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFXLE1BQU07UUFDZixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQztJQUNqQyxDQUFDO0lBWUQ7UUFDRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFsQ0osd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBT25CLHVCQUFrQixHQUFHLGNBQWMsRUFBRSxDQUFDO1FBRXRDLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFJOUMsWUFBTyxHQUFHLGFBQWEsRUFBRSxDQUFDO1FBWW5DLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFNbEIsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBSyxDQUFDO1FBSTVDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFTSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU87UUFFMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRU0sb0JBQW9CLENBQUMsRUFBRSxPQUFPLEVBQW9CO1FBQ3ZELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDakUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUNwRCxPQUFPLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUNyRTtJQUNILENBQUM7SUFRUyxjQUFjLENBQUMsT0FBb0M7UUFDM0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzdFLENBQUM7SUFFUyxtQkFBbUI7UUFDM0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztJQUNuQyxDQUFDO0lBRVMsa0JBQWtCO1FBQzFCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7SUFDbEMsQ0FBQztJQUVTLFlBQVk7UUFDcEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRVMsYUFBYTtRQUNyQixJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFHUyxjQUFjLENBQUMsS0FBaUI7UUFDeEMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsS0FBSyxDQUFDLHdCQUF3QixFQUFFLENBQUM7U0FDbEM7UUFDRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQzs7Z0hBMUZtQixtQkFBbUI7b0dBQW5CLG1CQUFtQix5VkFPNUIsaUJBQWlCO0FBcUI1QjtJQUFDLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQzs7c0RBRVI7MkZBOUJMLG1CQUFtQjtrQkFQeEMsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFO3dCQUNKLGlCQUFpQixFQUFFLFFBQVE7d0JBQzNCLHNCQUFzQixFQUFFLG9CQUFvQjtxQkFDN0M7aUJBQ0Y7MEVBU29CLFFBQVE7c0JBRDFCLFNBQVM7dUJBQUMsaUJBQWlCO2dCQXVCckIsU0FBUztzQkFEZixLQUFLO2dCQUlDLFNBQVM7c0JBRGYsS0FBSztnQkFJQyxjQUFjO3NCQURwQixNQUFNO2dCQWtERyxjQUFjO3NCQUR2QixZQUFZO3VCQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIGluamVjdCwgSW5wdXQsIE91dHB1dCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRldGVjdENvbnRyb2xsZXJDaGFuZ2VzLCBTdHJpbmdpZnlGbiB9IGZyb20gJ0BvZHgvYW5ndWxhcic7XG5pbXBvcnQgeyBDdXN0b21Gb3JtQ29udHJvbCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jZGsvY3VzdG9tLWZvcm0tY29udHJvbCc7XG5pbXBvcnQgeyBPcHRpb25Db250cm9sIH0gZnJvbSAnQG9keC9hbmd1bGFyL2Nkay9vcHRpb24tY29udHJvbCc7XG5pbXBvcnQgeyBEcm9wZG93bkRpcmVjdGl2ZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IGluamVjdEVsZW1lbnQsIGlzRnVuY3Rpb24sIFRyYW5zZm9ybSwgdW50aWxEZXN0cm95ZWQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgQmFzZVNlYXJjaEZpZWxkRGlyZWN0aXZlIH0gZnJvbSAnLi9hYnN0cmFjdCc7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5pcy1vcGVuXSc6ICdpc09wZW4nLFxuICAgICdbYXR0ci5hcmlhLWRpc2FibGVkXSc6ICdpc0Rpc2FibGVkIHx8IG51bGwnLFxuICB9LFxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBdXRvY29tcGxldGVDb250cm9sPFQ+IGV4dGVuZHMgQ3VzdG9tRm9ybUNvbnRyb2w8VCB8IG51bGw+IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIHB1YmxpYyBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfaXNMb2FkaW5nOiBCb29sZWFuSW5wdXQ7XG5cbiAgcHJvdGVjdGVkIGtleU1hbmFnZXI/OiBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcjxPcHRpb25Db250cm9sPFQ+PjtcblxuICBwcm90ZWN0ZWQgc21vb3RoU2Nyb2xsRW5hYmxlZCA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoRHJvcGRvd25EaXJlY3RpdmUpXG4gIHByb3RlY3RlZCByZWFkb25seSBkcm9wZG93bj86IERyb3Bkb3duRGlyZWN0aXZlO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkb25seSBvcHRpb25zPzogUXVlcnlMaXN0PE9wdGlvbkNvbnRyb2w8VD4+O1xuXG4gIHByb3RlY3RlZCByZWFkb25seSB0YWtlVW50aWxEZXN0cm95ZWQgPSB1bnRpbERlc3Ryb3llZCgpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBjaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgcHVibGljIGFic3RyYWN0IHNlYXJjaEZpZWxkPzogQmFzZVNlYXJjaEZpZWxkRGlyZWN0aXZlO1xuXG4gIHB1YmxpYyByZWFkb25seSBlbGVtZW50ID0gaW5qZWN0RWxlbWVudCgpO1xuXG4gIHB1YmxpYyBnZXQgaGFzT3B0aW9ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLm9wdGlvbnM/Lmxlbmd0aDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZHJvcGRvd24/LmlzT3BlbjtcbiAgfVxuXG4gIEBUcmFuc2Zvcm0oY29lcmNlQm9vbGVhblByb3BlcnR5KVxuICBASW5wdXQoKVxuICBwdWJsaWMgaXNMb2FkaW5nID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHN0cmluZ2lmeT86IFN0cmluZ2lmeUZuPHVua25vd24+O1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgb3B0aW9uU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIobnVsbCk7XG4gICAgZGV0ZWN0Q29udHJvbGxlckNoYW5nZXModGhpcykuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5vcHRpb25zKSByZXR1cm47XG5cbiAgICB0aGlzLmluaXRLZXlNYW5hZ2VyKHRoaXMub3B0aW9ucyk7XG4gICAgdGhpcy5oYW5kbGVRdWVyeUxpc3RPcHRpb24odGhpcy5vcHRpb25zKTtcbiAgICB0aGlzLmhhbmRsZVNlYXJjaEZpZWxkQ2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIHNjcm9sbE9wdGlvbkludG9WaWV3KHsgZWxlbWVudCB9OiBPcHRpb25Db250cm9sPFQ+KTogdm9pZCB7XG4gICAgY29uc3QgYmVoYXZpb3IgPSB0aGlzLnNtb290aFNjcm9sbEVuYWJsZWQgPyAnc21vb3RoJyA6IHVuZGVmaW5lZDtcbiAgICBpZiAoaXNGdW5jdGlvbihlbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcpKSB7XG4gICAgICBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ2NlbnRlcicsIGJlaGF2aW9yIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBoYW5kbGVRdWVyeUxpc3RPcHRpb24ob3B0aW9uczogUXVlcnlMaXN0PE9wdGlvbkNvbnRyb2w8VD4+KTogdm9pZDtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgaGFuZGxlU2VhcmNoRmllbGRDaGFuZ2VzKCk6IHZvaWQ7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGFjdGl2YXRlU2VsZWN0ZWRPcHRpb24oKTogdm9pZDtcblxuICBwcm90ZWN0ZWQgaW5pdEtleU1hbmFnZXIob3B0aW9uczogUXVlcnlMaXN0PE9wdGlvbkNvbnRyb2w8VD4+KTogdm9pZCB7XG4gICAgdGhpcy5rZXlNYW5hZ2VyID0gbmV3IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyKG9wdGlvbnMpLndpdGhIb21lQW5kRW5kKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZGlzYWJsZVNtb290aFNjcm9sbCgpOiB2b2lkIHtcbiAgICB0aGlzLnNtb290aFNjcm9sbEVuYWJsZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBlbmFibGVTbW9vdGhTY3JvbGwoKTogdm9pZCB7XG4gICAgdGhpcy5zbW9vdGhTY3JvbGxFbmFibGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvcGVuRHJvcGRvd24oKTogdm9pZCB7XG4gICAgdGhpcy5kcm9wZG93bj8ub3BlbigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNsb3NlRHJvcGRvd24oKTogdm9pZCB7XG4gICAgdGhpcy5kcm9wZG93bj8uY2xvc2UoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgWyckZXZlbnQnXSlcbiAgcHJvdGVjdGVkIGhhbmRsZUZvY3VzT3V0KGV2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { inject } from '@angular/core';
|
|
3
|
+
import { ODX_STRINGIFY, ODX_STRING_SEARCH_HANDLER } from '@odx/angular';
|
|
4
|
+
import { Pure } from '@odx/angular/utils';
|
|
5
|
+
export class BaseSearchFilterPipe {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.stringSearchHandler = inject(ODX_STRING_SEARCH_HANDLER);
|
|
8
|
+
this.stringify = inject(ODX_STRINGIFY);
|
|
9
|
+
}
|
|
10
|
+
transform(items, searchHandler) {
|
|
11
|
+
if (this.searchField) {
|
|
12
|
+
return this.filter(items, this.searchField.nativeElementValue, searchHandler);
|
|
13
|
+
}
|
|
14
|
+
return items;
|
|
15
|
+
}
|
|
16
|
+
filter(items, query, searchHandler) {
|
|
17
|
+
if (!items)
|
|
18
|
+
return null;
|
|
19
|
+
query = this.queryHandler(query);
|
|
20
|
+
if (query === '')
|
|
21
|
+
return items;
|
|
22
|
+
const search = searchHandler ?? this.stringSearchHandler;
|
|
23
|
+
return items.filter((item) => search(this.searchBy(item), query));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
__decorate([
|
|
27
|
+
Pure,
|
|
28
|
+
__metadata("design:type", Function),
|
|
29
|
+
__metadata("design:paramtypes", [Object, String, Function]),
|
|
30
|
+
__metadata("design:returntype", Object)
|
|
31
|
+
], BaseSearchFilterPipe.prototype, "filter", null);
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zZWFyY2gtZmlsdGVyLXBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY2RrL2F1dG9jb21wbGV0ZS1jb250cm9sL3NyYy9saWIvcGlwZXMvYmFzZS1zZWFyY2gtZmlsdGVyLXBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLGFBQWEsRUFBRSx5QkFBeUIsRUFBb0MsTUFBTSxjQUFjLENBQUM7QUFDMUcsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzFDLE1BQU0sT0FBZ0Isb0JBQW9CO0lBQTFDO1FBQ21CLHdCQUFtQixHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3RELGNBQVMsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUF5QnZELENBQUM7SUF2QlEsU0FBUyxDQUFJLEtBQWlCLEVBQUUsYUFBbUM7UUFDeEUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRSxhQUFhLENBQUMsQ0FBQztTQUMvRTtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQU9PLE1BQU0sQ0FBSSxLQUFpQixFQUFFLEtBQWEsRUFBRSxhQUFtQztRQUNyRixJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXhCLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWpDLElBQUksS0FBSyxLQUFLLEVBQUU7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUUvQixNQUFNLE1BQU0sR0FBRyxhQUFhLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBRXpELE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQU8sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0NBQ0Y7QUFaQztJQUFDLElBQUk7Ozs7a0RBV0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9EWF9TVFJJTkdJRlksIE9EWF9TVFJJTkdfU0VBUkNIX0hBTkRMRVIsIFN0cmluZ2lmeUZuLCBTdHJpbmdTZWFyY2hIYW5kbGVyIH0gZnJvbSAnQG9keC9hbmd1bGFyJztcbmltcG9ydCB7IFB1cmUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgQmFzZVNlYXJjaEZpZWxkRGlyZWN0aXZlIH0gZnJvbSAnLi4vYWJzdHJhY3QnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVNlYXJjaEZpbHRlclBpcGUge1xuICBwcml2YXRlIHJlYWRvbmx5IHN0cmluZ1NlYXJjaEhhbmRsZXIgPSBpbmplY3QoT0RYX1NUUklOR19TRUFSQ0hfSEFORExFUik7XG4gIHByb3RlY3RlZCByZWFkb25seSBzdHJpbmdpZnkgPSBpbmplY3QoT0RYX1NUUklOR0lGWSk7XG5cbiAgcHVibGljIHRyYW5zZm9ybTxUPihpdGVtczogVFtdIHwgbnVsbCwgc2VhcmNoSGFuZGxlcj86IFN0cmluZ1NlYXJjaEhhbmRsZXIpOiBUW10gfCBudWxsIHtcbiAgICBpZiAodGhpcy5zZWFyY2hGaWVsZCkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKGl0ZW1zLCB0aGlzLnNlYXJjaEZpZWxkLm5hdGl2ZUVsZW1lbnRWYWx1ZSwgc2VhcmNoSGFuZGxlcik7XG4gICAgfVxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgc2VhcmNoRmllbGQoKTogQmFzZVNlYXJjaEZpZWxkRGlyZWN0aXZlIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IHNlYXJjaEJ5KCk6IFN0cmluZ2lmeUZuPHVua25vd24+O1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcXVlcnlIYW5kbGVyKHF1ZXJ5OiBzdHJpbmcpOiBzdHJpbmc7XG5cbiAgQFB1cmVcbiAgcHJpdmF0ZSBmaWx0ZXI8VD4oaXRlbXM6IFRbXSB8IG51bGwsIHF1ZXJ5OiBzdHJpbmcsIHNlYXJjaEhhbmRsZXI/OiBTdHJpbmdTZWFyY2hIYW5kbGVyKTogVFtdIHwgbnVsbCB7XG4gICAgaWYgKCFpdGVtcykgcmV0dXJuIG51bGw7XG5cbiAgICBxdWVyeSA9IHRoaXMucXVlcnlIYW5kbGVyKHF1ZXJ5KTtcblxuICAgIGlmIChxdWVyeSA9PT0gJycpIHJldHVybiBpdGVtcztcblxuICAgIGNvbnN0IHNlYXJjaCA9IHNlYXJjaEhhbmRsZXIgPz8gdGhpcy5zdHJpbmdTZWFyY2hIYW5kbGVyO1xuXG4gICAgcmV0dXJuIGl0ZW1zLmZpbHRlcigoaXRlbTogVCkgPT4gc2VhcmNoKHRoaXMuc2VhcmNoQnkoaXRlbSksIHF1ZXJ5KSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './base-search-filter-pipe';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY2RrL2F1dG9jb21wbGV0ZS1jb250cm9sL3NyYy9saWIvcGlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYmFzZS1zZWFyY2gtZmlsdGVyLXBpcGUnO1xuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2R4LWFuZ3VsYXItY2RrLWF1dG9jb21wbGV0ZS1jb250cm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2Nkay9hdXRvY29tcGxldGUtY29udHJvbC9zcmMvb2R4LWFuZ3VsYXItY2RrLWF1dG9jb21wbGV0ZS1jb250cm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './lib/option-control';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY2RrL29wdGlvbi1jb250cm9sL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvb3B0aW9uLWNvbnRyb2wnO1xuIl19
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { ChangeDetectorRef, Directive, HostListener, inject, Input } from '@angular/core';
|
|
2
|
+
import { injectElement, untilDestroyed } from '@odx/angular/utils';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class OptionControl {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.takeUntilDestroyed = untilDestroyed();
|
|
7
|
+
this.cdr = inject(ChangeDetectorRef);
|
|
8
|
+
this.isActive = false;
|
|
9
|
+
this.value = null;
|
|
10
|
+
this.element = injectElement();
|
|
11
|
+
}
|
|
12
|
+
setActiveStyles() {
|
|
13
|
+
this.isActive = true;
|
|
14
|
+
}
|
|
15
|
+
setInactiveStyles() {
|
|
16
|
+
this.isActive = false;
|
|
17
|
+
}
|
|
18
|
+
getLabel() {
|
|
19
|
+
return this.element.nativeElement.textContent?.trim() ?? '';
|
|
20
|
+
}
|
|
21
|
+
select(event) {
|
|
22
|
+
event.stopPropagation();
|
|
23
|
+
event.preventDefault();
|
|
24
|
+
this.selectOption();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
OptionControl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OptionControl, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
28
|
+
OptionControl.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: OptionControl, isStandalone: true, inputs: { value: "value" }, host: { attributes: { "role": "option" }, listeners: { "click": "select($event)" }, properties: { "class.odx-option": "true", "class.is-active": "isActive", "attr.aria-selected": "isSelected", "class.is-selected": "isSelected" } }, ngImport: i0 });
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OptionControl, decorators: [{
|
|
30
|
+
type: Directive,
|
|
31
|
+
args: [{
|
|
32
|
+
standalone: true,
|
|
33
|
+
host: {
|
|
34
|
+
role: 'option',
|
|
35
|
+
'[class.odx-option]': 'true',
|
|
36
|
+
'[class.is-active]': 'isActive',
|
|
37
|
+
'[attr.aria-selected]': 'isSelected',
|
|
38
|
+
'[class.is-selected]': 'isSelected',
|
|
39
|
+
},
|
|
40
|
+
}]
|
|
41
|
+
}], propDecorators: { value: [{
|
|
42
|
+
type: Input
|
|
43
|
+
}], select: [{
|
|
44
|
+
type: HostListener,
|
|
45
|
+
args: ['click', ['$event']]
|
|
46
|
+
}] } });
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLWNvbnRyb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY2RrL29wdGlvbi1jb250cm9sL3NyYy9saWIvb3B0aW9uLWNvbnRyb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQVluRSxNQUFNLE9BQWdCLGFBQWE7SUFWbkM7UUFXcUIsdUJBQWtCLEdBQUcsY0FBYyxFQUFFLENBQUM7UUFDdEMsUUFBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRXpDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFHcEIsVUFBSyxHQUFhLElBQUksQ0FBQztRQUVkLFlBQU8sR0FBNEIsYUFBYSxFQUFFLENBQUM7S0F1QnBFO0lBckJRLGVBQWU7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUVNLGlCQUFpQjtRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRU0sUUFBUTtRQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUM5RCxDQUFDO0lBS1MsTUFBTSxDQUFDLEtBQVk7UUFDM0IsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV2QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQzs7MEdBL0JtQixhQUFhOzhGQUFiLGFBQWE7MkZBQWIsYUFBYTtrQkFWbEMsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFO3dCQUNKLElBQUksRUFBRSxRQUFRO3dCQUNkLG9CQUFvQixFQUFFLE1BQU07d0JBQzVCLG1CQUFtQixFQUFFLFVBQVU7d0JBQy9CLHNCQUFzQixFQUFFLFlBQVk7d0JBQ3BDLHFCQUFxQixFQUFFLFlBQVk7cUJBQ3BDO2lCQUNGOzhCQVFRLEtBQUs7c0JBRFgsS0FBSztnQkFvQkksTUFBTTtzQkFEZixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhpZ2hsaWdodGFibGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIGluamVjdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluamVjdEVsZW1lbnQsIHVudGlsRGVzdHJveWVkIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGhvc3Q6IHtcbiAgICByb2xlOiAnb3B0aW9uJyxcbiAgICAnW2NsYXNzLm9keC1vcHRpb25dJzogJ3RydWUnLFxuICAgICdbY2xhc3MuaXMtYWN0aXZlXSc6ICdpc0FjdGl2ZScsXG4gICAgJ1thdHRyLmFyaWEtc2VsZWN0ZWRdJzogJ2lzU2VsZWN0ZWQnLFxuICAgICdbY2xhc3MuaXMtc2VsZWN0ZWRdJzogJ2lzU2VsZWN0ZWQnLFxuICB9LFxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBPcHRpb25Db250cm9sPFQ+IGltcGxlbWVudHMgSGlnaGxpZ2h0YWJsZSB7XG4gIHByb3RlY3RlZCByZWFkb25seSB0YWtlVW50aWxEZXN0cm95ZWQgPSB1bnRpbERlc3Ryb3llZCgpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICBwcm90ZWN0ZWQgaXNBY3RpdmUgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgdmFsdWU6IFQgfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgcmVhZG9ubHkgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gPSBpbmplY3RFbGVtZW50KCk7XG5cbiAgcHVibGljIHNldEFjdGl2ZVN0eWxlcygpOiB2b2lkIHtcbiAgICB0aGlzLmlzQWN0aXZlID0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRJbmFjdGl2ZVN0eWxlcygpOiB2b2lkIHtcbiAgICB0aGlzLmlzQWN0aXZlID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0TGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQ/LnRyaW0oKSA/PyAnJztcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzZWxlY3RPcHRpb24oKTogdm9pZDtcblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gIHByb3RlY3RlZCBzZWxlY3QoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIHRoaXMuc2VsZWN0T3B0aW9uKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2R4LWFuZ3VsYXItY2RrLW9wdGlvbi1jb250cm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2Nkay9vcHRpb24tY29udHJvbC9zcmMvb2R4LWFuZ3VsYXItY2RrLW9wdGlvbi1jb250cm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './lib/autocomplete.component';
|
|
2
|
+
export * from './lib/autocomplete.module';
|
|
3
|
+
export * from './lib/autocomplete.tokens';
|
|
4
|
+
export * from './lib/components';
|
|
5
|
+
export * from './lib/directives';
|
|
6
|
+
export * from './lib/pipes';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9hdXRvY29tcGxldGUvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2F1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0b2NvbXBsZXRlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdXRvY29tcGxldGUudG9rZW5zJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcyc7XG4iXX0=
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
var AutocompleteComponent_1;
|
|
2
|
+
import { __decorate } from "tslib";
|
|
3
|
+
import { ChangeDetectionStrategy, Component, ContentChild, ContentChildren, forwardRef, HostListener, inject, QueryList, ViewEncapsulation, } from '@angular/core';
|
|
4
|
+
import { ClickOutsideDirective } from '@odx/angular';
|
|
5
|
+
import { AutocompleteControl } from '@odx/angular/cdk/autocomplete-control';
|
|
6
|
+
import { DropdownDirective } from '@odx/angular/components/dropdown';
|
|
7
|
+
import { LoadingSpinnerModule } from '@odx/angular/components/loading-spinner';
|
|
8
|
+
import { CSSComponent } from '@odx/angular/internal';
|
|
9
|
+
import { fromQueryList } from '@odx/angular/rxjs';
|
|
10
|
+
import { deferFn } from '@odx/angular/utils';
|
|
11
|
+
import { AUTOCOMPLETE_CONTROL } from './autocomplete.tokens';
|
|
12
|
+
import { AutocompleteOptionComponent } from './components';
|
|
13
|
+
import { AutocompleteSearchFieldDirective } from './directives';
|
|
14
|
+
import * as i0 from "@angular/core";
|
|
15
|
+
import * as i1 from "@odx/angular";
|
|
16
|
+
import * as i2 from "@angular/common";
|
|
17
|
+
let AutocompleteComponent = AutocompleteComponent_1 = class AutocompleteComponent extends AutocompleteControl {
|
|
18
|
+
constructor() {
|
|
19
|
+
super(...arguments);
|
|
20
|
+
this.defaultActiveOptionIndex = 0;
|
|
21
|
+
this.clickOutsideDirective = inject(ClickOutsideDirective, { host: true });
|
|
22
|
+
this.dropdownOpenTriggers = [];
|
|
23
|
+
}
|
|
24
|
+
ngAfterViewInit() {
|
|
25
|
+
if (!this.options)
|
|
26
|
+
return;
|
|
27
|
+
this.initKeyManager(this.options);
|
|
28
|
+
this.handleQueryListOption(this.options);
|
|
29
|
+
this.handleSearchFieldChanges();
|
|
30
|
+
this.handleClickOutside();
|
|
31
|
+
}
|
|
32
|
+
selectOption(option) {
|
|
33
|
+
if (!option?.value)
|
|
34
|
+
return;
|
|
35
|
+
this.updateValue(option.value);
|
|
36
|
+
this.updateSearchField(option.value);
|
|
37
|
+
this.optionSelected.emit(option.value);
|
|
38
|
+
this.closeDropdown();
|
|
39
|
+
}
|
|
40
|
+
resetSearchField() {
|
|
41
|
+
this.updateValue('');
|
|
42
|
+
this.searchField?.reset();
|
|
43
|
+
}
|
|
44
|
+
handleQueryListOption(options) {
|
|
45
|
+
fromQueryList(options)
|
|
46
|
+
.pipe(this.takeUntilDestroyed())
|
|
47
|
+
.subscribe(() => {
|
|
48
|
+
if (this.isOpen) {
|
|
49
|
+
deferFn(() => this.activateSelectedOption());
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
handleSearchFieldChanges() {
|
|
54
|
+
this.searchField?.valueChange$.pipe(this.takeUntilDestroyed()).subscribe(() => {
|
|
55
|
+
this.triggerControllerChange();
|
|
56
|
+
deferFn(() => this.handleSearchFieldValueChange());
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
handleClickOutside() {
|
|
60
|
+
this.clickOutsideDirective.odxClickOutside.pipe(this.takeUntilDestroyed()).subscribe(() => this.clickOutside());
|
|
61
|
+
}
|
|
62
|
+
clickOutside() {
|
|
63
|
+
this.closeDropdown();
|
|
64
|
+
this.blurSelectSearchField();
|
|
65
|
+
}
|
|
66
|
+
handleSearchFieldValueChange() {
|
|
67
|
+
this.updateValue((this.searchField?.nativeElementValue ?? ''));
|
|
68
|
+
if (this.isOpen && !this.hasOptions) {
|
|
69
|
+
this.closeDropdown();
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (this.isOpen && this.hasOptions) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
if (!this.isOpen && this.hasOptions) {
|
|
76
|
+
this.openDropdown();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
handleClickEvent() {
|
|
80
|
+
if (this.isLoading && this.isOpen) {
|
|
81
|
+
this.closeDropdown();
|
|
82
|
+
this.blurSelectSearchField();
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
if (this.isReadonly || this.isDisabled)
|
|
86
|
+
return;
|
|
87
|
+
if (!this.isOpen && this.hasOptions) {
|
|
88
|
+
this.openDropdown();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
handleKeyboardEvent(event) {
|
|
92
|
+
if (this.isReadonly || this.isDisabled)
|
|
93
|
+
return;
|
|
94
|
+
if (this.isOpen && this.hasOptions) {
|
|
95
|
+
if (event.key === 'Enter' || event.key === 'Tab') {
|
|
96
|
+
event.preventDefault();
|
|
97
|
+
event.stopImmediatePropagation();
|
|
98
|
+
this.selectOption(this.keyManager?.activeItem);
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (event.key === 'Enter') {
|
|
103
|
+
this.optionSelected.emit((this.value ?? ''));
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
if (!this.isOpen && event.key === 'Tab') {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if (!this.isOpen && this.hasOptions) {
|
|
110
|
+
this.openDropdown();
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
this.keyManager?.onKeydown(event);
|
|
114
|
+
}
|
|
115
|
+
activateSelectedOption() {
|
|
116
|
+
this.keyManager?.setActiveItem(this.defaultActiveOptionIndex);
|
|
117
|
+
}
|
|
118
|
+
onDropdownBeforeOpen() {
|
|
119
|
+
this.activateSelectedOption();
|
|
120
|
+
}
|
|
121
|
+
updateSearchField(value) {
|
|
122
|
+
if (!this.searchField)
|
|
123
|
+
return;
|
|
124
|
+
this.searchField.nativeElementValue = this.stringify?.(value) ?? value;
|
|
125
|
+
}
|
|
126
|
+
blurSelectSearchField() {
|
|
127
|
+
this.searchField?.blur();
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
AutocompleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AutocompleteComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
131
|
+
AutocompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: AutocompleteComponent, isStandalone: true, selector: "odx-autocomplete", host: { listeners: { "click": "handleClickEvent()", "keydown": "handleKeyboardEvent($event)" } }, providers: [
|
|
132
|
+
{
|
|
133
|
+
provide: AUTOCOMPLETE_CONTROL,
|
|
134
|
+
useExisting: forwardRef(() => AutocompleteComponent_1),
|
|
135
|
+
},
|
|
136
|
+
], queries: [{ propertyName: "searchField", first: true, predicate: AutocompleteSearchFieldDirective, descendants: true }, { propertyName: "options", predicate: AutocompleteOptionComponent, descendants: true }], usesInheritance: true, hostDirectives: [{ directive: i1.ClickOutsideDirective }], ngImport: i0, template: "<div\n aria-haspopup=\"listbox\"\n class=\"odx-autocomplete__trigger\"\n [odxDropdown]=\"dropdownContent\"\n [odxDropdownDisabled]=\"isDisabled || isReadonly\"\n [odxDropdownOptions]=\"{ matchReferenceWidth: true, offset: 4, outerPadding: 10, position: 'bottom-start' }\"\n [odxDropdownReferenceElement]=\"element.nativeElement\"\n [odxDropdownShowLoader]=\"isLoading\"\n [odxDropdownOpenTrigger]=\"dropdownOpenTriggers\"\n [odxDropdownClickOutsideActive]=\"false\"\n (odxDropdownBeforeOpen)=\"onDropdownBeforeOpen()\"\n (odxDropdownAfterOpen)=\"enableSmoothScroll()\"\n (odxDropdownBeforeClose)=\"disableSmoothScroll()\"\n>\n <ng-content select=\"input[odxAutocompleteControl]\"></ng-content>\n</div>\n\n<ng-template #dropdownContent>\n <div class=\"odx-dropdown__option-list\" role=\"listbox\">\n <ng-template [ngIf]=\"hasOptions\">\n <ng-content></ng-content>\n </ng-template>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: DropdownDirective, selector: "[odxDropdown]", inputs: ["odxDropdown", "odxDropdownDisabled", "odxDropdownShowLoader", "odxDropdownClickOutsideActive", "odxDropdownOptions", "odxDropdownReferenceElement", "odxDropdownTriggerElement", "odxDropdownHost", "odxDropdownOpenTrigger", "odxDropdownCloseTrigger"], outputs: ["odxDropdownBeforeOpen", "odxDropdownAfterOpen", "odxDropdownBeforeClose", "odxDropdownAfterClose"], exportAs: ["odxDropdown"] }, { kind: "ngmodule", type: LoadingSpinnerModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
137
|
+
AutocompleteComponent = AutocompleteComponent_1 = __decorate([
|
|
138
|
+
CSSComponent('autocomplete')
|
|
139
|
+
], AutocompleteComponent);
|
|
140
|
+
export { AutocompleteComponent };
|
|
141
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
|
142
|
+
type: Component,
|
|
143
|
+
args: [{ standalone: true, selector: 'odx-autocomplete', imports: [DropdownDirective, AutocompleteOptionComponent, LoadingSpinnerModule], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
144
|
+
{
|
|
145
|
+
provide: AUTOCOMPLETE_CONTROL,
|
|
146
|
+
useExisting: forwardRef(() => AutocompleteComponent),
|
|
147
|
+
},
|
|
148
|
+
], hostDirectives: [ClickOutsideDirective], template: "<div\n aria-haspopup=\"listbox\"\n class=\"odx-autocomplete__trigger\"\n [odxDropdown]=\"dropdownContent\"\n [odxDropdownDisabled]=\"isDisabled || isReadonly\"\n [odxDropdownOptions]=\"{ matchReferenceWidth: true, offset: 4, outerPadding: 10, position: 'bottom-start' }\"\n [odxDropdownReferenceElement]=\"element.nativeElement\"\n [odxDropdownShowLoader]=\"isLoading\"\n [odxDropdownOpenTrigger]=\"dropdownOpenTriggers\"\n [odxDropdownClickOutsideActive]=\"false\"\n (odxDropdownBeforeOpen)=\"onDropdownBeforeOpen()\"\n (odxDropdownAfterOpen)=\"enableSmoothScroll()\"\n (odxDropdownBeforeClose)=\"disableSmoothScroll()\"\n>\n <ng-content select=\"input[odxAutocompleteControl]\"></ng-content>\n</div>\n\n<ng-template #dropdownContent>\n <div class=\"odx-dropdown__option-list\" role=\"listbox\">\n <ng-template [ngIf]=\"hasOptions\">\n <ng-content></ng-content>\n </ng-template>\n </div>\n</ng-template>\n" }]
|
|
149
|
+
}], propDecorators: { options: [{
|
|
150
|
+
type: ContentChildren,
|
|
151
|
+
args: [AutocompleteOptionComponent, { descendants: true, emitDistinctChangesOnly: true }]
|
|
152
|
+
}], searchField: [{
|
|
153
|
+
type: ContentChild,
|
|
154
|
+
args: [AutocompleteSearchFieldDirective]
|
|
155
|
+
}], handleClickEvent: [{
|
|
156
|
+
type: HostListener,
|
|
157
|
+
args: ['click']
|
|
158
|
+
}], handleKeyboardEvent: [{
|
|
159
|
+
type: HostListener,
|
|
160
|
+
args: ['keydown', ['$event']]
|
|
161
|
+
}] } });
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS9zcmMvbGliL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9hdXRvY29tcGxldGUvc3JjL2xpYi9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7QUFrQnpELElBQU0scUJBQXFCLDZCQUEzQixNQUFNLHFCQUFtQyxTQUFR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QkFBMkIsRUFBRSxvQkFBb0IsQ0FBQyxpQkFFaEUsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsb0JBQW9COzRCQUM3QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxzQkFBc0IsQ0FBQzt5QkFDckQ7cUJBQ0Ysa0JBQ2UsQ0FBQyxxQkFBcUIsQ0FBQzs4QkFRaEMsT0FBTztzQkFEYixlQUFlO3VCQUFDLDJCQUEyQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSxJQUFJLEVBQUU7Z0JBSTNGLFdBQVc7c0JBRGpCLFlBQVk7dUJBQUMsZ0NBQWdDO2dCQTBFcEMsZ0JBQWdCO3NCQUR6QixZQUFZO3VCQUFDLE9BQU87Z0JBZ0JYLG1CQUFtQjtzQkFENUIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBpbmplY3QsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2xpY2tPdXRzaWRlRGlyZWN0aXZlIH0gZnJvbSAnQG9keC9hbmd1bGFyJztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZUNvbnRyb2wgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2F1dG9jb21wbGV0ZS1jb250cm9sJztcbmltcG9ydCB7IERyb3Bkb3duRGlyZWN0aXZlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgTG9hZGluZ1NwaW5uZXJNb2R1bGUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9sb2FkaW5nLXNwaW5uZXInO1xuaW1wb3J0IHsgQ1NTQ29tcG9uZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2ludGVybmFsJztcbmltcG9ydCB7IGZyb21RdWVyeUxpc3QgfSBmcm9tICdAb2R4L2FuZ3VsYXIvcnhqcyc7XG5pbXBvcnQgeyBkZWZlckZuIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IEFVVE9DT01QTEVURV9DT05UUk9MIH0gZnJvbSAnLi9hdXRvY29tcGxldGUudG9rZW5zJztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZU9wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVTZWFyY2hGaWVsZERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcyc7XG5cbkBDU1NDb21wb25lbnQoJ2F1dG9jb21wbGV0ZScpXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdvZHgtYXV0b2NvbXBsZXRlJyxcbiAgaW1wb3J0czogW0Ryb3Bkb3duRGlyZWN0aXZlLCBBdXRvY29tcGxldGVPcHRpb25Db21wb25lbnQsIExvYWRpbmdTcGlubmVyTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBBVVRPQ09NUExFVEVfQ09OVFJPTCxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEF1dG9jb21wbGV0ZUNvbXBvbmVudCksXG4gICAgfSxcbiAgXSxcbiAgaG9zdERpcmVjdGl2ZXM6IFtDbGlja091dHNpZGVEaXJlY3RpdmVdLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVDb21wb25lbnQ8VCA9IHVua25vd24+IGV4dGVuZHMgQXV0b2NvbXBsZXRlQ29udHJvbDxUIHwgbnVsbD4gaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0QWN0aXZlT3B0aW9uSW5kZXggPSAwO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBjbGlja091dHNpZGVEaXJlY3RpdmUgPSBpbmplY3QoQ2xpY2tPdXRzaWRlRGlyZWN0aXZlLCB7IGhvc3Q6IHRydWUgfSk7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihBdXRvY29tcGxldGVPcHRpb25Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUsIGVtaXREaXN0aW5jdENoYW5nZXNPbmx5OiB0cnVlIH0pXG4gIHB1YmxpYyBvcHRpb25zPzogUXVlcnlMaXN0PEF1dG9jb21wbGV0ZU9wdGlvbkNvbXBvbmVudDxUPj47XG5cbiAgQENvbnRlbnRDaGlsZChBdXRvY29tcGxldGVTZWFyY2hGaWVsZERpcmVjdGl2ZSlcbiAgcHVibGljIHNlYXJjaEZpZWxkPzogQXV0b2NvbXBsZXRlU2VhcmNoRmllbGREaXJlY3RpdmU7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRyb3Bkb3duT3BlblRyaWdnZXJzID0gW107XG5cbiAgcHVibGljIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucykgcmV0dXJuO1xuXG4gICAgdGhpcy5pbml0S2V5TWFuYWdlcih0aGlzLm9wdGlvbnMpO1xuICAgIHRoaXMuaGFuZGxlUXVlcnlMaXN0T3B0aW9uKHRoaXMub3B0aW9ucyk7XG4gICAgdGhpcy5oYW5kbGVTZWFyY2hGaWVsZENoYW5nZXMoKTtcbiAgICB0aGlzLmhhbmRsZUNsaWNrT3V0c2lkZSgpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdE9wdGlvbihvcHRpb24/OiBBdXRvY29tcGxldGVPcHRpb25Db21wb25lbnQ8VD4gfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKCFvcHRpb24/LnZhbHVlKSByZXR1cm47XG5cbiAgICB0aGlzLnVwZGF0ZVZhbHVlKG9wdGlvbi52YWx1ZSk7XG4gICAgdGhpcy51cGRhdGVTZWFyY2hGaWVsZChvcHRpb24udmFsdWUpO1xuXG4gICAgdGhpcy5vcHRpb25TZWxlY3RlZC5lbWl0KG9wdGlvbi52YWx1ZSk7XG5cbiAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNldFNlYXJjaEZpZWxkKCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlVmFsdWUoJycgYXMgVCk7XG4gICAgdGhpcy5zZWFyY2hGaWVsZD8ucmVzZXQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVRdWVyeUxpc3RPcHRpb24ob3B0aW9uczogUXVlcnlMaXN0PEF1dG9jb21wbGV0ZU9wdGlvbkNvbXBvbmVudDxUPj4pOiB2b2lkIHtcbiAgICBmcm9tUXVlcnlMaXN0KG9wdGlvbnMpXG4gICAgICAucGlwZSh0aGlzLnRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgIGRlZmVyRm4oKCkgPT4gdGhpcy5hY3RpdmF0ZVNlbGVjdGVkT3B0aW9uKCkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVTZWFyY2hGaWVsZENoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hGaWVsZD8udmFsdWVDaGFuZ2UkLnBpcGUodGhpcy50YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMudHJpZ2dlckNvbnRyb2xsZXJDaGFuZ2UoKTtcbiAgICAgIGRlZmVyRm4oKCkgPT4gdGhpcy5oYW5kbGVTZWFyY2hGaWVsZFZhbHVlQ2hhbmdlKCkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUNsaWNrT3V0c2lkZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsaWNrT3V0c2lkZURpcmVjdGl2ZS5vZHhDbGlja091dHNpZGUucGlwZSh0aGlzLnRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbGlja091dHNpZGUoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2xpY2tPdXRzaWRlKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgIHRoaXMuYmx1clNlbGVjdFNlYXJjaEZpZWxkKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlU2VhcmNoRmllbGRWYWx1ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKCh0aGlzLnNlYXJjaEZpZWxkPy5uYXRpdmVFbGVtZW50VmFsdWUgPz8gJycpIGFzIFQpO1xuXG4gICAgaWYgKHRoaXMuaXNPcGVuICYmICF0aGlzLmhhc09wdGlvbnMpIHtcbiAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzT3BlbiAmJiB0aGlzLmhhc09wdGlvbnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaXNPcGVuICYmIHRoaXMuaGFzT3B0aW9ucykge1xuICAgICAgdGhpcy5vcGVuRHJvcGRvd24oKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIHByb3RlY3RlZCBoYW5kbGVDbGlja0V2ZW50KCkge1xuICAgIGlmICh0aGlzLmlzTG9hZGluZyAmJiB0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICB0aGlzLmJsdXJTZWxlY3RTZWFyY2hGaWVsZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzUmVhZG9ubHkgfHwgdGhpcy5pc0Rpc2FibGVkKSByZXR1cm47XG5cbiAgICBpZiAoIXRoaXMuaXNPcGVuICYmIHRoaXMuaGFzT3B0aW9ucykge1xuICAgICAgdGhpcy5vcGVuRHJvcGRvd24oKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgcHJvdGVjdGVkIGhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAodGhpcy5pc1JlYWRvbmx5IHx8IHRoaXMuaXNEaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMuaXNPcGVuICYmIHRoaXMuaGFzT3B0aW9ucykge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJyB8fCBldmVudC5rZXkgPT09ICdUYWInKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnNlbGVjdE9wdGlvbih0aGlzLmtleU1hbmFnZXI/LmFjdGl2ZUl0ZW0gYXMgQXV0b2NvbXBsZXRlT3B0aW9uQ29tcG9uZW50PFQ+IHwgdW5kZWZpbmVkKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgIHRoaXMub3B0aW9uU2VsZWN0ZWQuZW1pdCgodGhpcy52YWx1ZSA/PyAnJykgYXMgVCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmlzT3BlbiAmJiBldmVudC5rZXkgPT09ICdUYWInKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmlzT3BlbiAmJiB0aGlzLmhhc09wdGlvbnMpIHtcbiAgICAgIHRoaXMub3BlbkRyb3Bkb3duKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5rZXlNYW5hZ2VyPy5vbktleWRvd24oZXZlbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFjdGl2YXRlU2VsZWN0ZWRPcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5rZXlNYW5hZ2VyPy5zZXRBY3RpdmVJdGVtKHRoaXMuZGVmYXVsdEFjdGl2ZU9wdGlvbkluZGV4KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkRyb3Bkb3duQmVmb3JlT3BlbigpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2YXRlU2VsZWN0ZWRPcHRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU2VhcmNoRmllbGQodmFsdWU6IFQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VhcmNoRmllbGQpIHJldHVybjtcblxuICAgIHRoaXMuc2VhcmNoRmllbGQubmF0aXZlRWxlbWVudFZhbHVlID0gdGhpcy5zdHJpbmdpZnk/Lih2YWx1ZSkgPz8gKHZhbHVlIGFzIHN0cmluZyk7XG4gIH1cblxuICBwcml2YXRlIGJsdXJTZWxlY3RTZWFyY2hGaWVsZCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaEZpZWxkPy5ibHVyKCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgYXJpYS1oYXNwb3B1cD1cImxpc3Rib3hcIlxuICBjbGFzcz1cIm9keC1hdXRvY29tcGxldGVfX3RyaWdnZXJcIlxuICBbb2R4RHJvcGRvd25dPVwiZHJvcGRvd25Db250ZW50XCJcbiAgW29keERyb3Bkb3duRGlzYWJsZWRdPVwiaXNEaXNhYmxlZCB8fCBpc1JlYWRvbmx5XCJcbiAgW29keERyb3Bkb3duT3B0aW9uc109XCJ7IG1hdGNoUmVmZXJlbmNlV2lkdGg6IHRydWUsIG9mZnNldDogNCwgb3V0ZXJQYWRkaW5nOiAxMCwgcG9zaXRpb246ICdib3R0b20tc3RhcnQnIH1cIlxuICBbb2R4RHJvcGRvd25SZWZlcmVuY2VFbGVtZW50XT1cImVsZW1lbnQubmF0aXZlRWxlbWVudFwiXG4gIFtvZHhEcm9wZG93blNob3dMb2FkZXJdPVwiaXNMb2FkaW5nXCJcbiAgW29keERyb3Bkb3duT3BlblRyaWdnZXJdPVwiZHJvcGRvd25PcGVuVHJpZ2dlcnNcIlxuICBbb2R4RHJvcGRvd25DbGlja091dHNpZGVBY3RpdmVdPVwiZmFsc2VcIlxuICAob2R4RHJvcGRvd25CZWZvcmVPcGVuKT1cIm9uRHJvcGRvd25CZWZvcmVPcGVuKClcIlxuICAob2R4RHJvcGRvd25BZnRlck9wZW4pPVwiZW5hYmxlU21vb3RoU2Nyb2xsKClcIlxuICAob2R4RHJvcGRvd25CZWZvcmVDbG9zZSk9XCJkaXNhYmxlU21vb3RoU2Nyb2xsKClcIlxuPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJpbnB1dFtvZHhBdXRvY29tcGxldGVDb250cm9sXVwiPjwvbmctY29udGVudD5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2Ryb3Bkb3duQ29udGVudD5cbiAgPGRpdiBjbGFzcz1cIm9keC1kcm9wZG93bl9fb3B0aW9uLWxpc3RcIiByb2xlPVwibGlzdGJveFwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJoYXNPcHRpb25zXCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|