@wlcm/angular 0.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/README.md +62 -0
- package/button/README.md +7 -0
- package/button/esm2022/index.mjs +3 -0
- package/button/esm2022/lib/button.module.mjs +16 -0
- package/button/esm2022/lib/components/button/button.component.mjs +37 -0
- package/button/esm2022/lib/models/button.models.mjs +2 -0
- package/button/esm2022/wlcm-angular-button.mjs +5 -0
- package/button/fesm2022/wlcm-angular-button.mjs +57 -0
- package/button/fesm2022/wlcm-angular-button.mjs.map +1 -0
- package/button/index.d.ts +2 -0
- package/button/lib/button.module.d.ts +7 -0
- package/button/lib/components/button/button.component.d.ts +13 -0
- package/button/lib/models/button.models.d.ts +1 -0
- package/core/README.md +7 -0
- package/core/esm2022/index.mjs +10 -0
- package/core/esm2022/lib/components/chevron-down-icon/chevron-down-icon.component.mjs +12 -0
- package/core/esm2022/lib/components/close-icon/close-icon.component.mjs +12 -0
- package/core/esm2022/lib/components/search-icon/search-icon.component.mjs +12 -0
- package/core/esm2022/lib/constants/http.constants.mjs +6 -0
- package/core/esm2022/lib/models/option.models.mjs +15 -0
- package/core/esm2022/lib/models/paginated-data.models.mjs +2 -0
- package/core/esm2022/lib/models/query-params.models.mjs +6 -0
- package/core/esm2022/lib/utils/stream.utils.mjs +28 -0
- package/core/esm2022/wlcm-angular-core.mjs +5 -0
- package/core/fesm2022/wlcm-angular-core.mjs +92 -0
- package/core/fesm2022/wlcm-angular-core.mjs.map +1 -0
- package/core/index.d.ts +8 -0
- package/core/lib/components/chevron-down-icon/chevron-down-icon.component.d.ts +5 -0
- package/core/lib/components/close-icon/close-icon.component.d.ts +5 -0
- package/core/lib/components/search-icon/search-icon.component.d.ts +5 -0
- package/core/lib/constants/http.constants.d.ts +2 -0
- package/core/lib/models/option.models.d.ts +11 -0
- package/core/lib/models/paginated-data.models.d.ts +6 -0
- package/core/lib/models/query-params.models.d.ts +26 -0
- package/core/lib/utils/stream.utils.d.ts +7 -0
- package/filters/README.md +7 -0
- package/filters/esm2022/index.mjs +8 -0
- package/filters/esm2022/lib/filters/components/filters/filters.component.mjs +21 -0
- package/filters/esm2022/lib/filters/components/filters-button/filters-button.component.mjs +25 -0
- package/filters/esm2022/lib/filters/components/filters-panel/filters-panel.component.mjs +86 -0
- package/filters/esm2022/lib/filters/components/filters-unit/filters-unit.component.mjs +55 -0
- package/filters/esm2022/lib/filters/directives/filters-content.directive.mjs +11 -0
- package/filters/esm2022/lib/filters/directives/filters-trigger.directive.mjs +69 -0
- package/filters/esm2022/lib/filters/filters.module.mjs +53 -0
- package/filters/esm2022/lib/filters/models/filters-default-selection-model.mjs +56 -0
- package/filters/esm2022/lib/filters/models/filters-trigger.base.mjs +56 -0
- package/filters/esm2022/lib/filters/models/filters.models.mjs +44 -0
- package/filters/esm2022/lib/filters/pipes/is-filters-param-checked.pipe.mjs +21 -0
- package/filters/esm2022/lib/filters/pipes/total-filters-applied.pipe.mjs +18 -0
- package/filters/esm2022/lib/filters/utils/filters.utils.mjs +13 -0
- package/filters/esm2022/wlcm-angular-filters.mjs +5 -0
- package/filters/fesm2022/wlcm-angular-filters.mjs +474 -0
- package/filters/fesm2022/wlcm-angular-filters.mjs.map +1 -0
- package/filters/index.d.ts +7 -0
- package/filters/lib/filters/components/filters/filters.component.d.ts +10 -0
- package/filters/lib/filters/components/filters-button/filters-button.component.d.ts +11 -0
- package/filters/lib/filters/components/filters-panel/filters-panel.component.d.ts +25 -0
- package/filters/lib/filters/components/filters-unit/filters-unit.component.d.ts +21 -0
- package/filters/lib/filters/directives/filters-content.directive.d.ts +5 -0
- package/filters/lib/filters/directives/filters-trigger.directive.d.ts +22 -0
- package/filters/lib/filters/filters.module.d.ts +20 -0
- package/filters/lib/filters/models/filters-default-selection-model.d.ts +18 -0
- package/filters/lib/filters/models/filters-trigger.base.d.ts +15 -0
- package/filters/lib/filters/models/filters.models.d.ts +42 -0
- package/filters/lib/filters/pipes/is-filters-param-checked.pipe.d.ts +10 -0
- package/filters/lib/filters/pipes/total-filters-applied.pipe.d.ts +8 -0
- package/filters/lib/filters/utils/filters.utils.d.ts +5 -0
- package/forms/README.md +7 -0
- package/forms/esm2022/index.mjs +10 -0
- package/forms/esm2022/lib/forms/components/autocomplete/autocomplete.component.mjs +164 -0
- package/forms/esm2022/lib/forms/components/error/error.component.mjs +12 -0
- package/forms/esm2022/lib/forms/components/form-field/form-field.component.mjs +118 -0
- package/forms/esm2022/lib/forms/components/index.mjs +6 -0
- package/forms/esm2022/lib/forms/components/label/label.component.mjs +23 -0
- package/forms/esm2022/lib/forms/components/select/select.component.mjs +107 -0
- package/forms/esm2022/lib/forms/constants/form-elements.constants.mjs +5 -0
- package/forms/esm2022/lib/forms/constants/form-errors.constants.mjs +7 -0
- package/forms/esm2022/lib/forms/constants/form-state-handlers.constants.mjs +13 -0
- package/forms/esm2022/lib/forms/constants/index.mjs +4 -0
- package/forms/esm2022/lib/forms/directives/ac-input-binder.directive.mjs +33 -0
- package/forms/esm2022/lib/forms/directives/autocomplete.directive.mjs +63 -0
- package/forms/esm2022/lib/forms/directives/form-field-custom-container.directive.mjs +17 -0
- package/forms/esm2022/lib/forms/directives/form-field-hint.directive.mjs +15 -0
- package/forms/esm2022/lib/forms/directives/form-field-suffix.directive.mjs +14 -0
- package/forms/esm2022/lib/forms/directives/input.directive.mjs +35 -0
- package/forms/esm2022/lib/forms/forms.module.mjs +51 -0
- package/forms/esm2022/lib/forms/models/_index.mjs +4 -0
- package/forms/esm2022/lib/forms/models/form-errors.models.mjs +2 -0
- package/forms/esm2022/lib/forms/models/form.models.mjs +2 -0
- package/forms/esm2022/lib/forms/models/input.models.mjs +2 -0
- package/forms/esm2022/lib/forms/pipes/errors-mapper.pipe.mjs +53 -0
- package/forms/esm2022/lib/forms/services/form-state-handler.service.mjs +19 -0
- package/forms/esm2022/lib/forms/services/index.mjs +2 -0
- package/forms/esm2022/wlcm-angular-forms.mjs +5 -0
- package/forms/fesm2022/wlcm-angular-forms.mjs +675 -0
- package/forms/fesm2022/wlcm-angular-forms.mjs.map +1 -0
- package/forms/index.d.ts +9 -0
- package/forms/lib/forms/components/autocomplete/autocomplete.component.d.ts +46 -0
- package/forms/lib/forms/components/error/error.component.d.ts +5 -0
- package/forms/lib/forms/components/form-field/form-field.component.d.ts +27 -0
- package/forms/lib/forms/components/index.d.ts +5 -0
- package/forms/lib/forms/components/label/label.component.d.ts +7 -0
- package/forms/lib/forms/components/select/select.component.d.ts +31 -0
- package/forms/lib/forms/constants/form-elements.constants.d.ts +6 -0
- package/forms/lib/forms/constants/form-errors.constants.d.ts +4 -0
- package/forms/lib/forms/constants/form-state-handlers.constants.d.ts +6 -0
- package/forms/lib/forms/constants/index.d.ts +3 -0
- package/forms/lib/forms/directives/ac-input-binder.directive.d.ts +5 -0
- package/forms/lib/forms/directives/autocomplete.directive.d.ts +16 -0
- package/forms/lib/forms/directives/form-field-custom-container.directive.d.ts +8 -0
- package/forms/lib/forms/directives/form-field-hint.directive.d.ts +5 -0
- package/forms/lib/forms/directives/form-field-suffix.directive.d.ts +5 -0
- package/forms/lib/forms/directives/input.directive.d.ts +5 -0
- package/forms/lib/forms/forms.module.d.ts +15 -0
- package/forms/lib/forms/models/_index.d.ts +3 -0
- package/forms/lib/forms/models/form-errors.models.d.ts +5 -0
- package/forms/lib/forms/models/form.models.d.ts +11 -0
- package/forms/lib/forms/models/input.models.d.ts +7 -0
- package/forms/lib/forms/pipes/errors-mapper.pipe.d.ts +17 -0
- package/forms/lib/forms/services/form-state-handler.service.d.ts +10 -0
- package/forms/lib/forms/services/index.d.ts +1 -0
- package/index.d.ts +1 -0
- package/index.mjs +4 -0
- package/package.json +109 -0
- package/search-field/README.md +7 -0
- package/search-field/esm2022/index.mjs +3 -0
- package/search-field/esm2022/lib/components/search-field/search-field.component.mjs +36 -0
- package/search-field/esm2022/lib/search-field.module.mjs +18 -0
- package/search-field/esm2022/wlcm-angular-search-field.mjs +5 -0
- package/search-field/fesm2022/wlcm-angular-search-field.mjs +57 -0
- package/search-field/fesm2022/wlcm-angular-search-field.mjs.map +1 -0
- package/search-field/index.d.ts +2 -0
- package/search-field/lib/components/search-field/search-field.component.d.ts +14 -0
- package/search-field/lib/search-field.module.d.ts +8 -0
- package/styles/components/button/index.scss +91 -0
- package/styles/components/common/index.scss +33 -0
- package/styles/components/filters/_filters-panel.scss +44 -0
- package/styles/components/filters/_filters-unit.scss +92 -0
- package/styles/components/filters/index.scss +7 -0
- package/styles/components/forms/_checkbox.scss +89 -0
- package/styles/components/forms/_error.scss +23 -0
- package/styles/components/forms/_form-field.scss +65 -0
- package/styles/components/forms/_label.scss +42 -0
- package/styles/components/forms/_select.scss +74 -0
- package/styles/components/forms/index.scss +13 -0
- package/styles/components/search-field/index.scss +31 -0
- package/styles/core/_all-theme.scss +15 -0
- package/styles/core/_core.scss +10 -0
- package/styles/core/_utils.scss +53 -0
- package/styles/wlcm.scss +3 -0
@@ -0,0 +1,25 @@
|
|
1
|
+
import { Injector, OnInit, TemplateRef } from '@angular/core';
|
2
|
+
import { CountResultsFn, WlcmFiltersTriggerControl, WlcmFiltersSelectionModel } from '../../models/filters.models';
|
3
|
+
import { BehaviorSubject } from 'rxjs';
|
4
|
+
import * as i0 from "@angular/core";
|
5
|
+
export declare class WlcmFiltersPanelComponent implements OnInit {
|
6
|
+
protected injector: Injector;
|
7
|
+
private panelControl;
|
8
|
+
private globalSelectionModel;
|
9
|
+
countResults?: CountResultsFn;
|
10
|
+
filtersContent: TemplateRef<void>;
|
11
|
+
readonly loading$: BehaviorSubject<boolean>;
|
12
|
+
readonly totalResults$: BehaviorSubject<number | null>;
|
13
|
+
private _selectionModel;
|
14
|
+
private _countResults$;
|
15
|
+
constructor(injector: Injector, panelControl: WlcmFiltersTriggerControl, globalSelectionModel: WlcmFiltersSelectionModel);
|
16
|
+
ngOnInit(): void;
|
17
|
+
apply(): void;
|
18
|
+
reset(): void;
|
19
|
+
close(): void;
|
20
|
+
private updateGlobalModel;
|
21
|
+
private handleSelectionChanges;
|
22
|
+
private handleCountResultsEvent;
|
23
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WlcmFiltersPanelComponent, [null, null, { skipSelf: true; }]>;
|
24
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<WlcmFiltersPanelComponent, "wlcm-filters-panel", never, { "countResults": { "alias": "countResults"; "required": false; }; "filtersContent": { "alias": "filtersContent"; "required": false; }; }, {}, never, never, false, never>;
|
25
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import { OnInit } from '@angular/core';
|
2
|
+
import { WlcmFiltersSelectionModel, WlcmFiltersUnit } from '../../models/filters.models';
|
3
|
+
import { MatCheckboxChange } from '@angular/material/checkbox';
|
4
|
+
import { WlcmOption } from '@wlcm/angular/core';
|
5
|
+
import { Observable } from 'rxjs';
|
6
|
+
import * as i0 from "@angular/core";
|
7
|
+
export declare class WlcmFiltersUnitComponent implements OnInit {
|
8
|
+
private selectionModel;
|
9
|
+
label: string;
|
10
|
+
param: string;
|
11
|
+
options: WlcmOption[];
|
12
|
+
protected filtersUnit: WlcmFiltersUnit;
|
13
|
+
protected dataChanges$: Observable<Set<string>>;
|
14
|
+
constructor(selectionModel: WlcmFiltersSelectionModel);
|
15
|
+
ngOnInit(): void;
|
16
|
+
reset(): void;
|
17
|
+
change(event: MatCheckboxChange): void;
|
18
|
+
private initializeFiltersUnit;
|
19
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WlcmFiltersUnitComponent, never>;
|
20
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<WlcmFiltersUnitComponent, "wlcm-filters-unit", never, { "label": { "alias": "label"; "required": false; }; "param": { "alias": "param"; "required": false; }; "options": { "alias": "options"; "required": false; }; }, {}, never, never, false, never>;
|
21
|
+
}
|
@@ -0,0 +1,5 @@
|
|
1
|
+
import * as i0 from "@angular/core";
|
2
|
+
export declare class WlcmFiltersContentDirective {
|
3
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WlcmFiltersContentDirective, never>;
|
4
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<WlcmFiltersContentDirective, "[wlcmFiltersContent]", never, {}, {}, never, never, false, never>;
|
5
|
+
}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import { ElementRef, Injector, ViewContainerRef } from '@angular/core';
|
2
|
+
import { Overlay } from '@angular/cdk/overlay';
|
3
|
+
import { WlcmFiltersSelectionModel } from '../models/filters.models';
|
4
|
+
import { WlcmFiltersComponent } from '../components/filters/filters.component';
|
5
|
+
import { FiltersTriggerBase } from '../models/filters-trigger.base';
|
6
|
+
import * as i0 from "@angular/core";
|
7
|
+
export declare class WlcmFiltersTriggerDirective extends FiltersTriggerBase {
|
8
|
+
private overlay;
|
9
|
+
private injector;
|
10
|
+
private elementRef;
|
11
|
+
private viewContainerRef;
|
12
|
+
protected selectionModel: WlcmFiltersSelectionModel;
|
13
|
+
panel: WlcmFiltersComponent;
|
14
|
+
openPanel(): void;
|
15
|
+
private overlayRef;
|
16
|
+
constructor(overlay: Overlay, injector: Injector, elementRef: ElementRef, viewContainerRef: ViewContainerRef, selectionModel: WlcmFiltersSelectionModel);
|
17
|
+
close(): void;
|
18
|
+
private createInjector;
|
19
|
+
private createOverlayConfig;
|
20
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WlcmFiltersTriggerDirective, never>;
|
21
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<WlcmFiltersTriggerDirective, "[wlcmFiltersTrigger]", never, { "panel": { "alias": "wlcmFiltersTrigger"; "required": false; }; }, {}, never, never, false, never>;
|
22
|
+
}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import * as i0 from "@angular/core";
|
2
|
+
import * as i1 from "./components/filters/filters.component";
|
3
|
+
import * as i2 from "./components/filters-unit/filters-unit.component";
|
4
|
+
import * as i3 from "./components/filters-button/filters-button.component";
|
5
|
+
import * as i4 from "./directives/filters-trigger.directive";
|
6
|
+
import * as i5 from "./directives/filters-content.directive";
|
7
|
+
import * as i6 from "./components/filters-panel/filters-panel.component";
|
8
|
+
import * as i7 from "./pipes/is-filters-param-checked.pipe";
|
9
|
+
import * as i8 from "@rx-angular/template/let";
|
10
|
+
import * as i9 from "@angular/common";
|
11
|
+
import * as i10 from "@angular/material/expansion";
|
12
|
+
import * as i11 from "@angular/material/checkbox";
|
13
|
+
import * as i12 from "./pipes/total-filters-applied.pipe";
|
14
|
+
import * as i13 from "@wlcm/angular/core";
|
15
|
+
import * as i14 from "@wlcm/angular/button";
|
16
|
+
export declare class WlcmFiltersModule {
|
17
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WlcmFiltersModule, never>;
|
18
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<WlcmFiltersModule, [typeof i1.WlcmFiltersComponent, typeof i2.WlcmFiltersUnitComponent, typeof i3.WlcmFiltersButtonComponent, typeof i4.WlcmFiltersTriggerDirective, typeof i5.WlcmFiltersContentDirective, typeof i6.WlcmFiltersPanelComponent, typeof i7.IsFiltersParamCheckedPipe], [typeof i8.RxLet, typeof i9.CommonModule, typeof i10.MatExpansionModule, typeof i11.MatCheckboxModule, typeof i12.WlcmTotalFiltersAppliedPipe, typeof i13.ChevronDownIconComponent, typeof i14.WlcmButtonComponent, typeof i13.CloseIconComponent], [typeof i1.WlcmFiltersComponent, typeof i2.WlcmFiltersUnitComponent, typeof i3.WlcmFiltersButtonComponent, typeof i4.WlcmFiltersTriggerDirective, typeof i5.WlcmFiltersContentDirective]>;
|
19
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<WlcmFiltersModule>;
|
20
|
+
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import { Observable } from 'rxjs';
|
2
|
+
import { WlcmFiltersModel, WlcmFiltersSelectionModel, WlcmFiltersUnit } from './filters.models';
|
3
|
+
export declare class FiltersDefaultSelectionModel extends WlcmFiltersSelectionModel {
|
4
|
+
model: WlcmFiltersModel;
|
5
|
+
private readonly _modelChanges$;
|
6
|
+
readonly modelChanges$: Observable<WlcmFiltersModel>;
|
7
|
+
add(param: string, unit: WlcmFiltersUnit, wlcmtChanges?: boolean): void;
|
8
|
+
has(param: string): boolean;
|
9
|
+
get(param: string): WlcmFiltersUnit;
|
10
|
+
createUnit(param: string): WlcmFiltersUnit;
|
11
|
+
updateSelection(model: WlcmFiltersModel): void;
|
12
|
+
syncUnitChanges(): void;
|
13
|
+
clone(): WlcmFiltersSelectionModel;
|
14
|
+
reset(): void;
|
15
|
+
get isEmpty(): boolean;
|
16
|
+
private cloneModel;
|
17
|
+
private notifyChanges;
|
18
|
+
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
2
|
+
import { WlcmFiltersSelectionModel } from './filters.models';
|
3
|
+
import { QueryFilters } from '@wlcm/angular/core';
|
4
|
+
import * as i0 from "@angular/core";
|
5
|
+
export declare class FiltersTriggerBase {
|
6
|
+
protected selectionModel: WlcmFiltersSelectionModel;
|
7
|
+
set filters(value: QueryFilters | undefined);
|
8
|
+
filtersChanges: EventEmitter<QueryFilters>;
|
9
|
+
private _filters;
|
10
|
+
constructor(selectionModel: WlcmFiltersSelectionModel);
|
11
|
+
protected updateSelectionModel(): void;
|
12
|
+
protected handleModelChanges(): void;
|
13
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FiltersTriggerBase, never>;
|
14
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<FiltersTriggerBase, never, never, { "filters": { "alias": "wlcmFiltersTriggerData"; "required": false; }; }, { "filtersChanges": "wlcmFiltersTriggerDataChanges"; }, never, never, false, never>;
|
15
|
+
}
|
@@ -0,0 +1,42 @@
|
|
1
|
+
import { QueryFilters } from '@wlcm/angular/core';
|
2
|
+
import { Observable } from 'rxjs';
|
3
|
+
export declare class WlcmFiltersUnit {
|
4
|
+
param: string;
|
5
|
+
data: string[];
|
6
|
+
parent: WlcmFiltersSelectionModel;
|
7
|
+
private readonly _dataChanges$;
|
8
|
+
readonly dataChanges$: Observable<string[]>;
|
9
|
+
constructor(param: string, parent: WlcmFiltersSelectionModel);
|
10
|
+
add(value: string): void;
|
11
|
+
setAll(value: string[], onlySelf?: boolean): void;
|
12
|
+
remove(value: string): void;
|
13
|
+
reset(onlySelf?: boolean): void;
|
14
|
+
clone(parent: WlcmFiltersSelectionModel): WlcmFiltersUnit;
|
15
|
+
private notifyChanges;
|
16
|
+
}
|
17
|
+
export interface WlcmFiltersModel {
|
18
|
+
[key: string]: WlcmFiltersUnit;
|
19
|
+
}
|
20
|
+
export declare abstract class WlcmFiltersSelectionModel {
|
21
|
+
abstract model: WlcmFiltersModel;
|
22
|
+
abstract readonly modelChanges$: Observable<WlcmFiltersModel>;
|
23
|
+
abstract add(param: string, unit: WlcmFiltersUnit, wlcmtChanges?: boolean): void;
|
24
|
+
abstract has(param: string): boolean;
|
25
|
+
abstract get(param: string): WlcmFiltersUnit;
|
26
|
+
abstract createUnit(param: string): WlcmFiltersUnit;
|
27
|
+
abstract updateSelection(model: WlcmFiltersModel): void;
|
28
|
+
abstract syncUnitChanges(): void;
|
29
|
+
abstract clone(): WlcmFiltersSelectionModel;
|
30
|
+
abstract reset(): void;
|
31
|
+
abstract get isEmpty(): boolean;
|
32
|
+
}
|
33
|
+
export declare abstract class WlcmFiltersTriggerControl {
|
34
|
+
abstract close(): void;
|
35
|
+
}
|
36
|
+
export type CountResultsFn = (filters: QueryFilters) => Observable<number>;
|
37
|
+
export interface WlcmFiltersPanelControl {
|
38
|
+
readonly loading$: Observable<boolean>;
|
39
|
+
readonly totalResults$: Observable<number | null>;
|
40
|
+
apply(): void;
|
41
|
+
reset(): void;
|
42
|
+
}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { PipeTransform } from '@angular/core';
|
2
|
+
import { MatCheckbox } from '@angular/material/checkbox';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
export declare class IsFiltersParamCheckedPipe implements PipeTransform {
|
5
|
+
private checkbox;
|
6
|
+
transform(data: Set<string>): boolean;
|
7
|
+
constructor(checkbox: MatCheckbox);
|
8
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<IsFiltersParamCheckedPipe, [{ host: true; }]>;
|
9
|
+
static ɵpipe: i0.ɵɵPipeDeclaration<IsFiltersParamCheckedPipe, "isFiltersParamChecked", false>;
|
10
|
+
}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { PipeTransform } from '@angular/core';
|
2
|
+
import { QueryFilters } from '@wlcm/angular/core';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
export declare class WlcmTotalFiltersAppliedPipe implements PipeTransform {
|
5
|
+
transform(filters: QueryFilters | undefined): number;
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WlcmTotalFiltersAppliedPipe, never>;
|
7
|
+
static ɵpipe: i0.ɵɵPipeDeclaration<WlcmTotalFiltersAppliedPipe, "totalFiltersApplied", true>;
|
8
|
+
}
|
package/forms/README.md
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
export * from './lib/forms/forms.module';
|
2
|
+
export * from './lib/forms/models/_index';
|
3
|
+
export * from './lib/forms/constants/index';
|
4
|
+
export * from './lib/forms/directives/form-field-custom-container.directive';
|
5
|
+
export * from './lib/forms/directives/form-field-suffix.directive';
|
6
|
+
export * from './lib/forms/directives/form-field-hint.directive';
|
7
|
+
export * from './lib/forms/directives/ac-input-binder.directive';
|
8
|
+
export * from './lib/forms/directives/input.directive';
|
9
|
+
export * from './lib/forms/components';
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9tb2R1bGVzL2Zvcm1zL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDhEQUE4RCxDQUFDO0FBQzdFLGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm1zL2Zvcm1zLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3Jtcy9tb2RlbHMvX2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm1zL2NvbnN0YW50cy9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3Jtcy9kaXJlY3RpdmVzL2Zvcm0tZmllbGQtY3VzdG9tLWNvbnRhaW5lci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybXMvZGlyZWN0aXZlcy9mb3JtLWZpZWxkLXN1ZmZpeC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybXMvZGlyZWN0aXZlcy9mb3JtLWZpZWxkLWhpbnQuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm1zL2RpcmVjdGl2ZXMvYWMtaW5wdXQtYmluZGVyLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3Jtcy9kaXJlY3RpdmVzL2lucHV0LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3Jtcy9jb21wb25lbnRzJztcbiJdfQ==
|
@@ -0,0 +1,164 @@
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
2
|
+
import { ChangeDetectionStrategy, Component, Inject, Input, ViewChild, forwardRef, } from '@angular/core';
|
3
|
+
import { FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, } from '@angular/forms';
|
4
|
+
import { CommonModule } from '@angular/common';
|
5
|
+
import { WlcmFormFieldComponent } from '../form-field/form-field.component';
|
6
|
+
import { WlcmLabelComponent } from '../label/label.component';
|
7
|
+
import { WlcmInputDirective } from '../../directives/input.directive';
|
8
|
+
import { MatAutocompleteModule, MatAutocompleteOrigin, MatAutocompleteTrigger } from '@angular/material/autocomplete';
|
9
|
+
import { BehaviorSubject, EMPTY, Observable, Subject, asyncScheduler, concatMap, debounceTime, filter, first, observeOn, switchMap, tap, } from 'rxjs';
|
10
|
+
import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
|
11
|
+
import { AutocompleteDirective } from '../../directives/autocomplete.directive';
|
12
|
+
import { DEFAULT_QUERY_PARAMS } from '@wlcm/angular/core';
|
13
|
+
import { WLCM_FORM_FIELD, WLCM_INPUT } from '../../constants';
|
14
|
+
import * as i0 from "@angular/core";
|
15
|
+
import * as i1 from "@angular/common";
|
16
|
+
import * as i2 from "@angular/material/autocomplete";
|
17
|
+
import * as i3 from "@angular/material/core";
|
18
|
+
import * as i4 from "@angular/forms";
|
19
|
+
let WlcmAutocompleteComponent = class WlcmAutocompleteComponent {
|
20
|
+
constructor(formField) {
|
21
|
+
this.formField = formField;
|
22
|
+
this.required = false;
|
23
|
+
this.placeholder = '';
|
24
|
+
this.control = new FormControl('');
|
25
|
+
this._loadMore$ = new Subject();
|
26
|
+
this._options$ = new BehaviorSubject([]);
|
27
|
+
this.options$ = this._options$.asObservable();
|
28
|
+
this.closed$ = new Subject();
|
29
|
+
this.queryParams = { ...DEFAULT_QUERY_PARAMS, limit: 15 };
|
30
|
+
this._paginatedData = null;
|
31
|
+
this.handleLoadMoreEvent();
|
32
|
+
this.handleControlValueChanges();
|
33
|
+
}
|
34
|
+
ngOnInit() {
|
35
|
+
this.loadOptions(this.queryParams).subscribe();
|
36
|
+
}
|
37
|
+
ngAfterViewInit() {
|
38
|
+
const container = this.formField.inputContainer;
|
39
|
+
const origin = new MatAutocompleteOrigin(container);
|
40
|
+
this.autocompleteTrigger.connectedTo = origin;
|
41
|
+
}
|
42
|
+
displayWith(value) {
|
43
|
+
if (value instanceof Object) {
|
44
|
+
return value.viewValue;
|
45
|
+
}
|
46
|
+
return value;
|
47
|
+
}
|
48
|
+
loadMore() {
|
49
|
+
this._loadMore$.next();
|
50
|
+
}
|
51
|
+
writeValue(value) {
|
52
|
+
this.control.setValue(value);
|
53
|
+
}
|
54
|
+
registerOnChange(callback) {
|
55
|
+
this._changed = callback;
|
56
|
+
}
|
57
|
+
registerOnTouched(callback) {
|
58
|
+
this._touched = callback;
|
59
|
+
}
|
60
|
+
setDisabledState(isDisabled) {
|
61
|
+
if (isDisabled) {
|
62
|
+
return this.control.disable();
|
63
|
+
}
|
64
|
+
this.control.enable();
|
65
|
+
}
|
66
|
+
blured() {
|
67
|
+
let closed = new Observable((observer) => (observer.next(), observer.complete()));
|
68
|
+
if (this.autocompleteTrigger.panelOpen) {
|
69
|
+
closed = this.closed$.pipe(first(), observeOn(asyncScheduler));
|
70
|
+
}
|
71
|
+
closed.subscribe(() => this._touched?.());
|
72
|
+
}
|
73
|
+
validate(control) {
|
74
|
+
if (!!this.control.value) {
|
75
|
+
if (this.control.value instanceof Object)
|
76
|
+
return null;
|
77
|
+
return { ...control.errors, unselected: true, required: false };
|
78
|
+
}
|
79
|
+
return null;
|
80
|
+
}
|
81
|
+
registerOnValidatorChange(fn) {
|
82
|
+
this._onValidatorChange = fn;
|
83
|
+
}
|
84
|
+
loadOptions(params) {
|
85
|
+
this._options$.next([]);
|
86
|
+
return this.pullDataMethod({ ...params, page: 1 }).pipe(tap((paginatedData) => {
|
87
|
+
this._paginatedData = paginatedData;
|
88
|
+
this._options$.next(paginatedData.data);
|
89
|
+
}));
|
90
|
+
}
|
91
|
+
handleLoadMoreEvent() {
|
92
|
+
this._loadMore$
|
93
|
+
.pipe(concatMap(() => {
|
94
|
+
if (this._paginatedData && this._paginatedData.currPage + 1 <= this._paginatedData.totalPages) {
|
95
|
+
this.queryParams.page++;
|
96
|
+
return this.pullDataMethod(this.queryParams).pipe(tap((paginatedData) => {
|
97
|
+
this._paginatedData = paginatedData;
|
98
|
+
this._options$.next([...this._options$.value, ...paginatedData.data]);
|
99
|
+
}));
|
100
|
+
}
|
101
|
+
return EMPTY;
|
102
|
+
}))
|
103
|
+
.subscribe();
|
104
|
+
}
|
105
|
+
handleControlValueChanges() {
|
106
|
+
this.control.valueChanges
|
107
|
+
.pipe(debounceTime(200))
|
108
|
+
.pipe(untilDestroyed(this))
|
109
|
+
.pipe(filter((value) => {
|
110
|
+
this._onValidatorChange?.();
|
111
|
+
if (!(value instanceof Object))
|
112
|
+
return true;
|
113
|
+
this._changed?.(value.value);
|
114
|
+
return false;
|
115
|
+
}))
|
116
|
+
.pipe(switchMap((value) => {
|
117
|
+
return this.loadOptions({ ...this.queryParams, query: value });
|
118
|
+
}))
|
119
|
+
.subscribe();
|
120
|
+
}
|
121
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmAutocompleteComponent, deps: [{ token: WLCM_FORM_FIELD }], target: i0.ɵɵFactoryTarget.Component }); }
|
122
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: WlcmAutocompleteComponent, isStandalone: true, selector: "wlcm-autocomplete", inputs: { pullDataMethod: "pullDataMethod", label: "label", required: "required", placeholder: "placeholder" }, providers: [
|
123
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmAutocompleteComponent), multi: true },
|
124
|
+
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmAutocompleteComponent), multi: true },
|
125
|
+
], viewQueries: [{ propertyName: "wlcmInput", first: true, predicate: WLCM_INPUT, descendants: true }, { propertyName: "autocompleteTrigger", first: true, predicate: MatAutocompleteTrigger, descendants: true }], ngImport: i0, template: "<input\n wlcmInput\n type=\"text\"\n [matAutocomplete]=\"autocomplete\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n (blur)=\"blured()\"\n/>\n\n<mat-autocomplete\n #autocomplete=\"matAutocomplete\"\n wlcmAutocomplete\n [disableRipple]=\"true\"\n [displayWith]=\"displayWith\"\n [hideSingleSelectionIndicator]=\"true\"\n (panelScrolled)=\"loadMore()\"\n (closed)=\"closed$.next()\"\n>\n <mat-option *ngFor=\"let option of options$ | async\" [value]=\"option\">\n {{ option.viewValue }}\n </mat-option>\n</mat-autocomplete>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i2.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i2.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: AutocompleteDirective, selector: "[wlcmAutocomplete]", outputs: ["panelScrolled"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: WlcmInputDirective, selector: "[wlcmInput]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
126
|
+
};
|
127
|
+
WlcmAutocompleteComponent = __decorate([
|
128
|
+
UntilDestroy(),
|
129
|
+
__metadata("design:paramtypes", [Object])
|
130
|
+
], WlcmAutocompleteComponent);
|
131
|
+
export { WlcmAutocompleteComponent };
|
132
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmAutocompleteComponent, decorators: [{
|
133
|
+
type: Component,
|
134
|
+
args: [{ selector: 'wlcm-autocomplete', standalone: true, imports: [
|
135
|
+
CommonModule,
|
136
|
+
MatAutocompleteModule,
|
137
|
+
AutocompleteDirective,
|
138
|
+
ReactiveFormsModule,
|
139
|
+
WlcmFormFieldComponent,
|
140
|
+
WlcmLabelComponent,
|
141
|
+
WlcmInputDirective,
|
142
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
143
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmAutocompleteComponent), multi: true },
|
144
|
+
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmAutocompleteComponent), multi: true },
|
145
|
+
], template: "<input\n wlcmInput\n type=\"text\"\n [matAutocomplete]=\"autocomplete\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n (blur)=\"blured()\"\n/>\n\n<mat-autocomplete\n #autocomplete=\"matAutocomplete\"\n wlcmAutocomplete\n [disableRipple]=\"true\"\n [displayWith]=\"displayWith\"\n [hideSingleSelectionIndicator]=\"true\"\n (panelScrolled)=\"loadMore()\"\n (closed)=\"closed$.next()\"\n>\n <mat-option *ngFor=\"let option of options$ | async\" [value]=\"option\">\n {{ option.viewValue }}\n </mat-option>\n</mat-autocomplete>\n", styles: [":host{display:block}\n"] }]
|
146
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
147
|
+
type: Inject,
|
148
|
+
args: [WLCM_FORM_FIELD]
|
149
|
+
}] }], propDecorators: { pullDataMethod: [{
|
150
|
+
type: Input
|
151
|
+
}], label: [{
|
152
|
+
type: Input
|
153
|
+
}], required: [{
|
154
|
+
type: Input
|
155
|
+
}], placeholder: [{
|
156
|
+
type: Input
|
157
|
+
}], wlcmInput: [{
|
158
|
+
type: ViewChild,
|
159
|
+
args: [WLCM_INPUT]
|
160
|
+
}], autocompleteTrigger: [{
|
161
|
+
type: ViewChild,
|
162
|
+
args: [MatAutocompleteTrigger]
|
163
|
+
}] } });
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvZm9ybXMvc3JjL2xpYi9mb3Jtcy9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9mb3Jtcy9zcmMvbGliL2Zvcm1zL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsTUFBTSxFQUNOLEtBQUssRUFFTCxTQUFTLEVBQ1QsVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHTCxXQUFXLEVBQ1gsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixtQkFBbUIsR0FHcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEgsT0FBTyxFQUNMLGVBQWUsRUFDZixLQUFLLEVBQ0wsVUFBVSxFQUNWLE9BQU8sRUFDUCxjQUFjLEVBQ2QsU0FBUyxFQUNULFlBQVksRUFFWixNQUFNLEVBQ04sS0FBSyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLFlBQVks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LEVBQUUsSUFBSSxFQUFFO3FCQUNsRzs7MEJBbUNZLE1BQU07MkJBQUMsZUFBZTt5Q0FoQzFCLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFzQndCLFNBQVM7c0JBQXRDLFNBQVM7dUJBQUMsVUFBVTtnQkFFc0IsbUJBQW1CO3NCQUE3RCxTQUFTO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxuICBmb3J3YXJkUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIEZvcm1Db250cm9sLFxuICBOR19WQUxJREFUT1JTLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgV2xjbUZvcm1GaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tZmllbGQvZm9ybS1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgV2xjbUxhYmVsQ29tcG9uZW50IH0gZnJvbSAnLi4vbGFiZWwvbGFiZWwuY29tcG9uZW50JztcbmltcG9ydCB7IFdsY21JbnB1dERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvaW5wdXQuZGlyZWN0aXZlJztcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZU1vZHVsZSwgTWF0QXV0b2NvbXBsZXRlT3JpZ2luLCBNYXRBdXRvY29tcGxldGVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgRU1QVFksXG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIGFzeW5jU2NoZWR1bGVyLFxuICBjb25jYXRNYXAsXG4gIGRlYm91bmNlVGltZSxcbiAgZW1wdHksXG4gIGZpbHRlcixcbiAgZmlyc3QsXG4gIG9ic2VydmVPbixcbiAgc3dpdGNoTWFwLFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2F1dG9jb21wbGV0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgREVGQVVMVF9RVUVSWV9QQVJBTVMsIFBhZ2luYXRlZERhdGEsIFF1ZXJ5UGFyYW1zLCBXbGNtQXV0b2NvbXBsZXRlT3B0aW9uIH0gZnJvbSAnQHdsY20vYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFdMQ01fRk9STV9GSUVMRCwgV0xDTV9JTlBVVCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBXbGNtSW5wdXRHZXR0ZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMvaW5wdXQubW9kZWxzJztcbmltcG9ydCB7IFdsY21Gb3JtRmllbGQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZm9ybS5tb2RlbHMnO1xuXG50eXBlIE9wdGlvbiA9IFdsY21BdXRvY29tcGxldGVPcHRpb247XG5cbnR5cGUgQXV0b2NvbXBsZXRlVmFsdWUgPSBXbGNtQXV0b2NvbXBsZXRlT3B0aW9uIHwgc3RyaW5nIHwgbnVsbDtcblxuQFVudGlsRGVzdHJveSgpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3bGNtLWF1dG9jb21wbGV0ZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuICAgIEF1dG9jb21wbGV0ZURpcmVjdGl2ZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFdsY21Gb3JtRmllbGRDb21wb25lbnQsXG4gICAgV2xjbUxhYmVsQ29tcG9uZW50LFxuICAgIFdsY21JbnB1dERpcmVjdGl2ZSxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gV2xjbUF1dG9jb21wbGV0ZUNvbXBvbmVudCksIG11bHRpOiB0cnVlIH0sXG4gICAgeyBwcm92aWRlOiBOR19WQUxJREFUT1JTLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBXbGNtQXV0b2NvbXBsZXRlQ29tcG9uZW50KSwgbXVsdGk6IHRydWUgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgV2xjbUF1dG9jb21wbGV0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIHB1bGxEYXRhTWV0aG9kITogKHBhcmFtczogUXVlcnlQYXJhbXMpID0+IE9ic2VydmFibGU8UGFnaW5hdGVkRGF0YTxPcHRpb24+PjtcblxuICBASW5wdXQoKSBsYWJlbCE6IHN0cmluZztcblxuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcblxuICByZWFkb25seSBjb250cm9sOiBGb3JtQ29udHJvbDxBdXRvY29tcGxldGVWYWx1ZT4gPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvYWRNb3JlJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfb3B0aW9ucyQ6IEJlaGF2aW9yU3ViamVjdDxPcHRpb25bXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE9wdGlvbltdPihbXSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wdGlvbnMkOiBPYnNlcnZhYmxlPE9wdGlvbltdPiA9IHRoaXMuX29wdGlvbnMkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBjbG9zZWQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIHF1ZXJ5UGFyYW1zOiBRdWVyeVBhcmFtcyA9IHsgLi4uREVGQVVMVF9RVUVSWV9QQVJBTVMsIGxpbWl0OiAxNSB9O1xuXG4gIHByaXZhdGUgX2NoYW5nZWQ/OiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcblxuICBwcml2YXRlIF90b3VjaGVkPzogKCkgPT4gdm9pZDtcblxuICBwcml2YXRlIF9vblZhbGlkYXRvckNoYW5nZT86ICgpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfcGFnaW5hdGVkRGF0YTogUGFnaW5hdGVkRGF0YTxPcHRpb24+IHwgbnVsbCA9IG51bGw7XG5cbiAgQFZpZXdDaGlsZChXTENNX0lOUFVUKSBwdWJsaWMgd2xjbUlucHV0ITogV2xjbUlucHV0R2V0dGVyO1xuXG4gIEBWaWV3Q2hpbGQoTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcikgcHJpdmF0ZSBhdXRvY29tcGxldGVUcmlnZ2VyITogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KFdMQ01fRk9STV9GSUVMRCkgcHJpdmF0ZSBmb3JtRmllbGQ6IFdsY21Gb3JtRmllbGQpIHtcbiAgICB0aGlzLmhhbmRsZUxvYWRNb3JlRXZlbnQoKTtcbiAgICB0aGlzLmhhbmRsZUNvbnRyb2xWYWx1ZUNoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubG9hZE9wdGlvbnModGhpcy5xdWVyeVBhcmFtcykuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgY29udGFpbmVyOiBFbGVtZW50UmVmID0gdGhpcy5mb3JtRmllbGQuaW5wdXRDb250YWluZXI7XG5cbiAgICBjb25zdCBvcmlnaW46IE1hdEF1dG9jb21wbGV0ZU9yaWdpbiA9IG5ldyBNYXRBdXRvY29tcGxldGVPcmlnaW4oY29udGFpbmVyKTtcblxuICAgIHRoaXMuYXV0b2NvbXBsZXRlVHJpZ2dlci5jb25uZWN0ZWRUbyA9IG9yaWdpbjtcbiAgfVxuXG4gIGRpc3BsYXlXaXRoKHZhbHVlOiBPcHRpb24gfCBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgcmV0dXJuIHZhbHVlLnZpZXdWYWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBsb2FkTW9yZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9sb2FkTW9yZSQubmV4dCgpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogQXV0b2NvbXBsZXRlVmFsdWUpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShjYWxsYmFjazogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFuZ2VkID0gY2FsbGJhY2s7XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX3RvdWNoZWQgPSBjYWxsYmFjaztcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb250cm9sLmRpc2FibGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbnRyb2wuZW5hYmxlKCk7XG4gIH1cblxuICBibHVyZWQoKTogdm9pZCB7XG4gICAgbGV0IGNsb3NlZDogT2JzZXJ2YWJsZTx2b2lkPiA9IG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4gKG9ic2VydmVyLm5leHQoKSwgb2JzZXJ2ZXIuY29tcGxldGUoKSkpO1xuXG4gICAgaWYgKHRoaXMuYXV0b2NvbXBsZXRlVHJpZ2dlci5wYW5lbE9wZW4pIHtcbiAgICAgIGNsb3NlZCA9IHRoaXMuY2xvc2VkJC5waXBlKGZpcnN0KCksIG9ic2VydmVPbihhc3luY1NjaGVkdWxlcikpO1xuICAgIH1cblxuICAgIGNsb3NlZC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fdG91Y2hlZD8uKCkpO1xuICB9XG5cbiAgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmICghIXRoaXMuY29udHJvbC52YWx1ZSkge1xuICAgICAgaWYgKHRoaXMuY29udHJvbC52YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCkgcmV0dXJuIG51bGw7XG5cbiAgICAgIHJldHVybiB7IC4uLmNvbnRyb2wuZXJyb3JzLCB1bnNlbGVjdGVkOiB0cnVlLCByZXF1aXJlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9vblZhbGlkYXRvckNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkT3B0aW9ucyhwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxQYWdpbmF0ZWREYXRhPE9wdGlvbj4+IHtcbiAgICB0aGlzLl9vcHRpb25zJC5uZXh0KFtdKTtcblxuICAgIHJldHVybiB0aGlzLnB1bGxEYXRhTWV0aG9kKHsgLi4ucGFyYW1zLCBwYWdlOiAxIH0pLnBpcGUoXG4gICAgICB0YXAoKHBhZ2luYXRlZERhdGE6IFBhZ2luYXRlZERhdGE8T3B0aW9uPikgPT4ge1xuICAgICAgICB0aGlzLl9wYWdpbmF0ZWREYXRhID0gcGFnaW5hdGVkRGF0YTtcblxuICAgICAgICB0aGlzLl9vcHRpb25zJC5uZXh0KHBhZ2luYXRlZERhdGEuZGF0YSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUxvYWRNb3JlRXZlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5fbG9hZE1vcmUkXG4gICAgICAucGlwZShcbiAgICAgICAgY29uY2F0TWFwKCgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5fcGFnaW5hdGVkRGF0YSAmJiB0aGlzLl9wYWdpbmF0ZWREYXRhLmN1cnJQYWdlICsgMSA8PSB0aGlzLl9wYWdpbmF0ZWREYXRhLnRvdGFsUGFnZXMpIHtcbiAgICAgICAgICAgIHRoaXMucXVlcnlQYXJhbXMucGFnZSsrO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wdWxsRGF0YU1ldGhvZCh0aGlzLnF1ZXJ5UGFyYW1zKS5waXBlKFxuICAgICAgICAgICAgICB0YXAoKHBhZ2luYXRlZERhdGE6IFBhZ2luYXRlZERhdGE8T3B0aW9uPikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3BhZ2luYXRlZERhdGEgPSBwYWdpbmF0ZWREYXRhO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9ucyQubmV4dChbLi4udGhpcy5fb3B0aW9ucyQudmFsdWUsIC4uLnBhZ2luYXRlZERhdGEuZGF0YV0pO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNvbnRyb2xWYWx1ZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDIwMCkpXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKHZhbHVlOiBBdXRvY29tcGxldGVWYWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuX29uVmFsaWRhdG9yQ2hhbmdlPy4oKTtcblxuICAgICAgICAgIGlmICghKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSkgcmV0dXJuIHRydWU7XG5cbiAgICAgICAgICB0aGlzLl9jaGFuZ2VkPy4odmFsdWUudmFsdWUpO1xuXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgodmFsdWU6IEF1dG9jb21wbGV0ZVZhbHVlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubG9hZE9wdGlvbnMoeyAuLi50aGlzLnF1ZXJ5UGFyYW1zLCBxdWVyeTogdmFsdWUgYXMgc3RyaW5nIH0pO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8aW5wdXRcbiAgd2xjbUlucHV0XG4gIHR5cGU9XCJ0ZXh0XCJcbiAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGVcIlxuICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gIChibHVyKT1cImJsdXJlZCgpXCJcbi8+XG5cbjxtYXQtYXV0b2NvbXBsZXRlXG4gICNhdXRvY29tcGxldGU9XCJtYXRBdXRvY29tcGxldGVcIlxuICB3bGNtQXV0b2NvbXBsZXRlXG4gIFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIlxuICBbZGlzcGxheVdpdGhdPVwiZGlzcGxheVdpdGhcIlxuICBbaGlkZVNpbmdsZVNlbGVjdGlvbkluZGljYXRvcl09XCJ0cnVlXCJcbiAgKHBhbmVsU2Nyb2xsZWQpPVwibG9hZE1vcmUoKVwiXG4gIChjbG9zZWQpPVwiY2xvc2VkJC5uZXh0KClcIlxuPlxuICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnMkIHwgYXN5bmNcIiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAge3sgb3B0aW9uLnZpZXdWYWx1ZSB9fVxuICA8L21hdC1vcHRpb24+XG48L21hdC1hdXRvY29tcGxldGU+XG4iXX0=
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
2
|
+
import { CommonModule } from '@angular/common';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
export class WlcmErrorComponent {
|
5
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
6
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: WlcmErrorComponent, isStandalone: true, selector: "wlcm-error", host: { classAttribute: "wlcm-error" }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
7
|
+
}
|
8
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmErrorComponent, decorators: [{
|
9
|
+
type: Component,
|
10
|
+
args: [{ selector: 'wlcm-error', standalone: true, imports: [CommonModule], host: { class: 'wlcm-error' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n" }]
|
11
|
+
}] });
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9mb3Jtcy9zcmMvbGliL2Zvcm1zL2NvbXBvbmVudHMvZXJyb3IvZXJyb3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9mb3Jtcy9zcmMvbGliL2Zvcm1zL2NvbXBvbmVudHMvZXJyb3IvZXJyb3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBVy9DLE1BQU0sT0FBTyxrQkFBa0I7OEdBQWxCLGtCQUFrQjtrR0FBbEIsa0JBQWtCLDhHQ1ovQiw2QkFDQSx5RERLWSxZQUFZOzsyRkFNWCxrQkFBa0I7a0JBVDlCLFNBQVM7K0JBQ0UsWUFBWSxjQUNWLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxRQUNqQixFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsbUJBR1osdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dsY20tZXJyb3InLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgaG9zdDogeyBjbGFzczogJ3dsY20tZXJyb3InIH0sXG4gIHRlbXBsYXRlVXJsOiAnLi9lcnJvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Vycm9yLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBXbGNtRXJyb3JDb21wb25lbnQge31cbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==
|
@@ -0,0 +1,118 @@
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
2
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, HostBinding, Inject, Optional, ViewChild, forwardRef, } from '@angular/core';
|
3
|
+
import { Validators, NgControl } from '@angular/forms';
|
4
|
+
import { CommonModule } from '@angular/common';
|
5
|
+
import { fromEvent, merge } from 'rxjs';
|
6
|
+
import { WlcmErrorComponent } from '../error/error.component';
|
7
|
+
import { WLCM_FORM_CONTROL, WLCM_FORM_CONTROL_PROVIDER } from '../../constants/form-state-handlers.constants';
|
8
|
+
import { WlcmFormFieldCustomContainerDirective } from '../../directives/form-field-custom-container.directive';
|
9
|
+
import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
|
10
|
+
import { ErrorsMapperPipe } from '../../pipes/errors-mapper.pipe';
|
11
|
+
import { WLCM_FORM_FIELD, WLCM_INPUT } from '../../constants/form-elements.constants';
|
12
|
+
import * as i0 from "@angular/core";
|
13
|
+
import * as i1 from "@angular/common";
|
14
|
+
let WlcmFormFieldComponent = class WlcmFormFieldComponent {
|
15
|
+
get isFocused() {
|
16
|
+
return this.inputRef?.nativeElement === document.activeElement;
|
17
|
+
}
|
18
|
+
get isRequired() {
|
19
|
+
return this.control?.hasValidator(Validators.required);
|
20
|
+
}
|
21
|
+
get isInvalid() {
|
22
|
+
return this.control?.invalid;
|
23
|
+
}
|
24
|
+
get isTouched() {
|
25
|
+
return this.control?.touched;
|
26
|
+
}
|
27
|
+
constructor(parentFormMember, changeDetectorRef) {
|
28
|
+
this.parentFormMember = parentFormMember;
|
29
|
+
this.changeDetectorRef = changeDetectorRef;
|
30
|
+
}
|
31
|
+
ngAfterViewInit() {
|
32
|
+
if (!this.inputRef && !this.customContainer) {
|
33
|
+
throw new Error('Input element should be bound to the wlcmInput directive.');
|
34
|
+
}
|
35
|
+
this.handleStateChanges();
|
36
|
+
}
|
37
|
+
focus() {
|
38
|
+
if (!this.isFocused) {
|
39
|
+
this.inputRef?.nativeElement.focus();
|
40
|
+
}
|
41
|
+
}
|
42
|
+
get control() {
|
43
|
+
return this.ngControl?.control;
|
44
|
+
}
|
45
|
+
get inputContainer() {
|
46
|
+
return this.customContainer?.elementRef || this.defaultContainer;
|
47
|
+
}
|
48
|
+
handleStateChanges() {
|
49
|
+
const events = this.controlEvents;
|
50
|
+
if (this.parentFormMember) {
|
51
|
+
events.push(this.parentFormMember.stateChanges$);
|
52
|
+
}
|
53
|
+
merge(...events)
|
54
|
+
.pipe(untilDestroyed(this))
|
55
|
+
.subscribe(() => this.changeDetectorRef.markForCheck());
|
56
|
+
}
|
57
|
+
get inputRef() {
|
58
|
+
return this._inputRef?.get();
|
59
|
+
}
|
60
|
+
get controlEvents() {
|
61
|
+
const events = [];
|
62
|
+
if (this.inputRef) {
|
63
|
+
const element = this.inputRef.nativeElement;
|
64
|
+
events.push(fromEvent(element, 'focus'), fromEvent(element, 'blur'));
|
65
|
+
}
|
66
|
+
if (this.control) {
|
67
|
+
events.push(this.control.statusChanges);
|
68
|
+
}
|
69
|
+
return events;
|
70
|
+
}
|
71
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFormFieldComponent, deps: [{ token: WLCM_FORM_CONTROL, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
72
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: WlcmFormFieldComponent, isStandalone: true, selector: "wlcm-form-field", host: { properties: { "class.wlcm-field-focused": "this.isFocused", "class.wlcm-field-required": "this.isRequired", "class.wlcm-field-invalid": "this.isInvalid", "class.wlcm-field-touched": "this.isTouched" }, classAttribute: "wlcm-form-field" }, providers: [
|
73
|
+
WLCM_FORM_CONTROL_PROVIDER,
|
74
|
+
{ provide: WLCM_FORM_FIELD, useExisting: forwardRef(() => WlcmFormFieldComponent) },
|
75
|
+
], queries: [{ propertyName: "ngControl", first: true, predicate: NgControl, descendants: true }, { propertyName: "_inputRef", first: true, predicate: WLCM_INPUT, descendants: true }, { propertyName: "customContainer", first: true, predicate: WlcmFormFieldCustomContainerDirective, descendants: true }], viewQueries: [{ propertyName: "defaultContainer", first: true, predicate: ["defaultContainer"], descendants: true }], ngImport: i0, template: "<ng-content select=\"wlcm-label\"></ng-content>\n\n<ng-content select=\"[wlcmFormFieldCustomContainer]\"></ng-content>\n\n<div\n class=\"wlcm-field-container\"\n (click)=\"focus()\"\n #defaultContainer\n *ngIf=\"!customContainer\"\n>\n <ng-content select=\"[wlcmInput], wlcm-autocomplete\"></ng-content>\n\n <div class=\"wlcm-field-suffix\">\n <ng-content select=\"[wlcmFormFieldSuffix]\"></ng-content>\n </div>\n</div>\n\n<ng-content select=\"[wlcmFormFieldHint]\"></ng-content>\n\n<div class=\"wlcm-field-error-container\" *ngIf=\"control\">\n <wlcm-error>{{ $any(control) | errorsMapper }}</wlcm-error>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: WlcmErrorComponent, selector: "wlcm-error" }, { kind: "pipe", type: ErrorsMapperPipe, name: "errorsMapper" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
76
|
+
};
|
77
|
+
WlcmFormFieldComponent = __decorate([
|
78
|
+
UntilDestroy(),
|
79
|
+
__metadata("design:paramtypes", [Object, ChangeDetectorRef])
|
80
|
+
], WlcmFormFieldComponent);
|
81
|
+
export { WlcmFormFieldComponent };
|
82
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFormFieldComponent, decorators: [{
|
83
|
+
type: Component,
|
84
|
+
args: [{ selector: 'wlcm-form-field', standalone: true, imports: [CommonModule, WlcmErrorComponent, ErrorsMapperPipe], host: { class: 'wlcm-form-field' }, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
85
|
+
WLCM_FORM_CONTROL_PROVIDER,
|
86
|
+
{ provide: WLCM_FORM_FIELD, useExisting: forwardRef(() => WlcmFormFieldComponent) },
|
87
|
+
], template: "<ng-content select=\"wlcm-label\"></ng-content>\n\n<ng-content select=\"[wlcmFormFieldCustomContainer]\"></ng-content>\n\n<div\n class=\"wlcm-field-container\"\n (click)=\"focus()\"\n #defaultContainer\n *ngIf=\"!customContainer\"\n>\n <ng-content select=\"[wlcmInput], wlcm-autocomplete\"></ng-content>\n\n <div class=\"wlcm-field-suffix\">\n <ng-content select=\"[wlcmFormFieldSuffix]\"></ng-content>\n </div>\n</div>\n\n<ng-content select=\"[wlcmFormFieldHint]\"></ng-content>\n\n<div class=\"wlcm-field-error-container\" *ngIf=\"control\">\n <wlcm-error>{{ $any(control) | errorsMapper }}</wlcm-error>\n</div>\n" }]
|
88
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
89
|
+
type: Optional
|
90
|
+
}, {
|
91
|
+
type: Inject,
|
92
|
+
args: [WLCM_FORM_CONTROL]
|
93
|
+
}] }, { type: i0.ChangeDetectorRef }], propDecorators: { ngControl: [{
|
94
|
+
type: ContentChild,
|
95
|
+
args: [NgControl, { descendants: true }]
|
96
|
+
}], _inputRef: [{
|
97
|
+
type: ContentChild,
|
98
|
+
args: [WLCM_INPUT]
|
99
|
+
}], customContainer: [{
|
100
|
+
type: ContentChild,
|
101
|
+
args: [WlcmFormFieldCustomContainerDirective]
|
102
|
+
}], defaultContainer: [{
|
103
|
+
type: ViewChild,
|
104
|
+
args: ['defaultContainer']
|
105
|
+
}], isFocused: [{
|
106
|
+
type: HostBinding,
|
107
|
+
args: ['class.wlcm-field-focused']
|
108
|
+
}], isRequired: [{
|
109
|
+
type: HostBinding,
|
110
|
+
args: ['class.wlcm-field-required']
|
111
|
+
}], isInvalid: [{
|
112
|
+
type: HostBinding,
|
113
|
+
args: ['class.wlcm-field-invalid']
|
114
|
+
}], isTouched: [{
|
115
|
+
type: HostBinding,
|
116
|
+
args: ['class.wlcm-field-touched']
|
117
|
+
}] } });
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL2Zvcm1zL3NyYy9saWIvZm9ybXMvY29tcG9uZW50cy9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9mb3Jtcy9zcmMvbGliL2Zvcm1zL2NvbXBvbmVudHMvZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEVBQ1QsVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQW1CLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQWMsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM5RyxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUMvRyxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0seUNBQXlDLENBQUM7OztBQWtCL0UsSUFBTSxzQkFB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c0JBQXNCLENBQUMsRUFBRTtTQUNwRixpRUFHYSxTQUFTLDRFQUVULFVBQVUsa0ZBRVYscUNBQXFDLHNLQzVDckQsb25CQXNCQSx5RERPWSxZQUFZLG1JQUFFLGtCQUFrQixrREFBRSxnQkFBZ0I7O0FBVWpELHNCQUFzQjtJQWRsQyxZQUFZLEVBQUU7NkNBNkNnQixpQkFBaUI7R0EvQm5DLHNCQUFzQixDQXVGbEM7OzJGQXZGWSxzQkFBc0I7a0JBYmxDLFNBQVM7K0JBQ0UsaUJBQWlCLGNBQ2YsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixDQUFDLFFBQ3ZELEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLG1CQUdqQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNULDBCQUEwQjt3QkFDMUIsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHVCQUF1QixDQUFDLEVBQUU7cUJBQ3BGOzswQkE4QkUsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyxpQkFBaUI7eUVBNUI2QixTQUFTO3NCQUFoRSxZQUFZO3VCQUFDLFNBQVMsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBRVosU0FBUztzQkFBMUMsWUFBWTt1QkFBQyxVQUFVO2dCQUdkLGVBQWU7c0JBRHhCLFlBQVk7dUJBQUMscUNBQXFDO2dCQUl6QyxnQkFBZ0I7c0JBRHpCLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUdnQixTQUFTO3NCQUFyRCxXQUFXO3VCQUFDLDBCQUEwQjtnQkFJTyxVQUFVO3NCQUF2RCxXQUFXO3VCQUFDLDJCQUEyQjtnQkFJSyxTQUFTO3NCQUFyRCxXQUFXO3VCQUFDLDBCQUEwQjtnQkFJTSxTQUFTO3NCQUFyRCxXQUFXO3VCQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3QsXG4gIE9wdGlvbmFsLFxuICBWaWV3Q2hpbGQsXG4gIGZvcndhcmRSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycywgQWJzdHJhY3RDb250cm9sLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZnJvbUV2ZW50LCBtZXJnZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgV2xjbUVycm9yQ29tcG9uZW50IH0gZnJvbSAnLi4vZXJyb3IvZXJyb3IuY29tcG9uZW50JztcbmltcG9ydCB7IFdMQ01fRk9STV9DT05UUk9MLCBXTENNX0ZPUk1fQ09OVFJPTF9QUk9WSURFUiB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9mb3JtLXN0YXRlLWhhbmRsZXJzLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBXbGNtRm9ybUZpZWxkQ3VzdG9tQ29udGFpbmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9mb3JtLWZpZWxkLWN1c3RvbS1jb250YWluZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFVudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWQgfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHsgRXJyb3JzTWFwcGVyUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2Vycm9ycy1tYXBwZXIucGlwZSc7XG5pbXBvcnQgeyBXTENNX0ZPUk1fRklFTEQsIFdMQ01fSU5QVVQgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvZm9ybS1lbGVtZW50cy5jb25zdGFudHMnO1xuaW1wb3J0IHsgV2xjbUZvcm1Db250cm9sIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Zvcm0ubW9kZWxzJztcbmltcG9ydCB7IFdsY21JbnB1dEdldHRlciB9IGZyb20gJy4uLy4uL21vZGVscy9pbnB1dC5tb2RlbHMnO1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dsY20tZm9ybS1maWVsZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFdsY21FcnJvckNvbXBvbmVudCwgRXJyb3JzTWFwcGVyUGlwZV0sXG4gIGhvc3Q6IHsgY2xhc3M6ICd3bGNtLWZvcm0tZmllbGQnIH0sXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybS1maWVsZC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgV0xDTV9GT1JNX0NPTlRST0xfUFJPVklERVIsXG4gICAgeyBwcm92aWRlOiBXTENNX0ZPUk1fRklFTEQsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFdsY21Gb3JtRmllbGRDb21wb25lbnQpIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFdsY21Gb3JtRmllbGRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQENvbnRlbnRDaGlsZChOZ0NvbnRyb2wsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgcHJpdmF0ZSBuZ0NvbnRyb2whOiBOZ0NvbnRyb2w7XG5cbiAgQENvbnRlbnRDaGlsZChXTENNX0lOUFVUKSBwcml2YXRlIF9pbnB1dFJlZj86IFdsY21JbnB1dEdldHRlcjtcblxuICBAQ29udGVudENoaWxkKFdsY21Gb3JtRmllbGRDdXN0b21Db250YWluZXJEaXJlY3RpdmUpXG4gIHByb3RlY3RlZCBjdXN0b21Db250YWluZXI/OiBXbGNtRm9ybUZpZWxkQ3VzdG9tQ29udGFpbmVyRGlyZWN0aXZlO1xuXG4gIEBWaWV3Q2hpbGQoJ2RlZmF1bHRDb250YWluZXInKVxuICBwcm90ZWN0ZWQgZGVmYXVsdENvbnRhaW5lcj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3Mud2xjbS1maWVsZC1mb2N1c2VkJykgZ2V0IGlzRm9jdXNlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dFJlZj8ubmF0aXZlRWxlbWVudCA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3Mud2xjbS1maWVsZC1yZXF1aXJlZCcpIGdldCBpc1JlcXVpcmVkKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2w/Lmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3Mud2xjbS1maWVsZC1pbnZhbGlkJykgZ2V0IGlzSW52YWxpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sPy5pbnZhbGlkO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy53bGNtLWZpZWxkLXRvdWNoZWQnKSBnZXQgaXNUb3VjaGVkKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2w/LnRvdWNoZWQ7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoV0xDTV9GT1JNX0NPTlRST0wpXG4gICAgcHJpdmF0ZSBwYXJlbnRGb3JtTWVtYmVyOiBXbGNtRm9ybUNvbnRyb2wsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaW5wdXRSZWYgJiYgIXRoaXMuY3VzdG9tQ29udGFpbmVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0lucHV0IGVsZW1lbnQgc2hvdWxkIGJlIGJvdW5kIHRvIHRoZSB3bGNtSW5wdXQgZGlyZWN0aXZlLicpO1xuICAgIH1cblxuICAgIHRoaXMuaGFuZGxlU3RhdGVDaGFuZ2VzKCk7XG4gIH1cblxuICBmb2N1cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNGb2N1c2VkKSB7XG4gICAgICB0aGlzLmlucHV0UmVmPy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMubmdDb250cm9sPy5jb250cm9sO1xuICB9XG5cbiAgZ2V0IGlucHV0Q29udGFpbmVyKCk6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5jdXN0b21Db250YWluZXI/LmVsZW1lbnRSZWYgfHwgKHRoaXMuZGVmYXVsdENvbnRhaW5lciBhcyBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVN0YXRlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBjb25zdCBldmVudHM6IE9ic2VydmFibGU8dW5rbm93bj5bXSA9IHRoaXMuY29udHJvbEV2ZW50cztcblxuICAgIGlmICh0aGlzLnBhcmVudEZvcm1NZW1iZXIpIHtcbiAgICAgIGV2ZW50cy5wdXNoKHRoaXMucGFyZW50Rm9ybU1lbWJlci5zdGF0ZUNoYW5nZXMkKTtcbiAgICB9XG5cbiAgICBtZXJnZSguLi5ldmVudHMpXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSk7XG4gIH1cblxuICBwcml2YXRlIGdldCBpbnB1dFJlZigpOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRSZWY/LmdldCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgY29udHJvbEV2ZW50cygpOiBPYnNlcnZhYmxlPHVua25vd24+W10ge1xuICAgIGNvbnN0IGV2ZW50czogT2JzZXJ2YWJsZTx1bmtub3duPltdID0gW107XG5cbiAgICBpZiAodGhpcy5pbnB1dFJlZikge1xuICAgICAgY29uc3QgZWxlbWVudDogSFRNTElucHV0RWxlbWVudCA9ICh0aGlzLmlucHV0UmVmIGFzIEVsZW1lbnRSZWYpLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgIGV2ZW50cy5wdXNoKGZyb21FdmVudChlbGVtZW50LCAnZm9jdXMnKSwgZnJvbUV2ZW50KGVsZW1lbnQsICdibHVyJykpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgIGV2ZW50cy5wdXNoKHRoaXMuY29udHJvbC5zdGF0dXNDaGFuZ2VzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXZlbnRzO1xuICB9XG59XG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCJ3bGNtLWxhYmVsXCI+PC9uZy1jb250ZW50PlxuXG48bmctY29udGVudCBzZWxlY3Q9XCJbd2xjbUZvcm1GaWVsZEN1c3RvbUNvbnRhaW5lcl1cIj48L25nLWNvbnRlbnQ+XG5cbjxkaXZcbiAgY2xhc3M9XCJ3bGNtLWZpZWxkLWNvbnRhaW5lclwiXG4gIChjbGljayk9XCJmb2N1cygpXCJcbiAgI2RlZmF1bHRDb250YWluZXJcbiAgKm5nSWY9XCIhY3VzdG9tQ29udGFpbmVyXCJcbj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3dsY21JbnB1dF0sIHdsY20tYXV0b2NvbXBsZXRlXCI+PC9uZy1jb250ZW50PlxuXG4gIDxkaXYgY2xhc3M9XCJ3bGNtLWZpZWxkLXN1ZmZpeFwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlt3bGNtRm9ybUZpZWxkU3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3dsY21Gb3JtRmllbGRIaW50XVwiPjwvbmctY29udGVudD5cblxuPGRpdiBjbGFzcz1cIndsY20tZmllbGQtZXJyb3ItY29udGFpbmVyXCIgKm5nSWY9XCJjb250cm9sXCI+XG4gIDx3bGNtLWVycm9yPnt7ICRhbnkoY29udHJvbCkgfCBlcnJvcnNNYXBwZXIgfX08L3dsY20tZXJyb3I+XG48L2Rpdj5cbiJdfQ==
|
@@ -0,0 +1,6 @@
|
|
1
|
+
export * from './autocomplete/autocomplete.component';
|
2
|
+
export * from './form-field/form-field.component';
|
3
|
+
export * from './select/select.component';
|
4
|
+
export * from './error/error.component';
|
5
|
+
export * from './label/label.component';
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL2Zvcm1zL3NyYy9saWIvZm9ybXMvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZXJyb3IvZXJyb3IuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGFiZWwvbGFiZWwuY29tcG9uZW50JztcbiJdfQ==
|