@softpak/components 0.0.0-beta.18 → 0.0.0-beta.180
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/esm2022/spx-button/spx-button.component.mjs +12 -3
- package/esm2022/spx-change-details/public-api.mjs +2 -0
- package/esm2022/spx-change-details/softpak-components-spx-change-details.mjs +5 -0
- package/esm2022/spx-change-details/spx-change-details-value.interface.mjs +2 -0
- package/esm2022/spx-change-details/spx-change-details.component.mjs +149 -0
- package/esm2022/spx-channel-selection/src/spx-channel-selection.component.mjs +1 -1
- package/esm2022/spx-channel-selection/src/spx-company-selection.component.mjs +2 -2
- package/esm2022/spx-check-digit/spx-check-digit.component.mjs +12 -4
- package/esm2022/spx-form-section/spx-form-section.component.mjs +9 -9
- package/esm2022/spx-form-view/public-api.mjs +4 -0
- package/esm2022/spx-form-view/softpak-components-spx-form-view.mjs +5 -0
- package/esm2022/spx-form-view/spx-autocomplete-search.component.mjs +119 -0
- package/esm2022/spx-form-view/spx-form-field.interface.mjs +2 -0
- package/esm2022/spx-form-view/spx-form-section.interface.mjs +2 -0
- package/esm2022/spx-form-view/spx-form-view.component.mjs +215 -0
- package/esm2022/spx-inputs/spx-dropdown.component.mjs +94 -0
- package/esm2022/spx-inputs/spx-input-box.component.mjs +70 -46
- package/esm2022/spx-inputs/spx-input-date.component.mjs +1 -1
- package/esm2022/spx-inputs/spx-input-float.component.mjs +10 -5
- package/esm2022/spx-inputs/spx-input-number.component.mjs +10 -5
- package/esm2022/spx-inputs/spx-input-radio.component.mjs +93 -27
- package/esm2022/spx-inputs/spx-input-text.component.mjs +21 -32
- package/esm2022/spx-inputs/spx-input-type.enum.mjs +3 -1
- package/esm2022/spx-inputs/spx-input.component.mjs +48 -13
- package/esm2022/spx-navigation/spx-home-tile.component.mjs +29 -10
- package/esm2022/spx-navigation/spx-navigation-item.interface.mjs +1 -1
- package/esm2022/spx-navigation/spx-navigation.component.mjs +11 -5
- package/esm2022/spx-number-check/public-api.mjs +2 -0
- package/esm2022/spx-number-check/softpak-components-spx-number-check.mjs +5 -0
- package/esm2022/spx-number-check/spx-number-check.component.mjs +259 -0
- package/esm2022/spx-suggestion/spx-suggestion.component.mjs +28 -10
- package/esm2022/spx-update/src/spx-update-info.component.mjs +1 -1
- package/fesm2022/softpak-components-spx-button.mjs +11 -2
- package/fesm2022/softpak-components-spx-button.mjs.map +1 -1
- package/fesm2022/softpak-components-spx-change-details.mjs +156 -0
- package/fesm2022/softpak-components-spx-change-details.mjs.map +1 -0
- package/fesm2022/softpak-components-spx-channel-selection.mjs +2 -2
- package/fesm2022/softpak-components-spx-channel-selection.mjs.map +1 -1
- package/fesm2022/softpak-components-spx-check-digit.mjs +11 -3
- package/fesm2022/softpak-components-spx-check-digit.mjs.map +1 -1
- package/fesm2022/softpak-components-spx-form-section.mjs +8 -8
- package/fesm2022/softpak-components-spx-form-section.mjs.map +1 -1
- package/fesm2022/softpak-components-spx-form-view.mjs +334 -0
- package/fesm2022/softpak-components-spx-form-view.mjs.map +1 -0
- package/fesm2022/softpak-components-spx-inputs.mjs +332 -118
- package/fesm2022/softpak-components-spx-inputs.mjs.map +1 -1
- package/fesm2022/softpak-components-spx-navigation.mjs +37 -12
- package/fesm2022/softpak-components-spx-navigation.mjs.map +1 -1
- package/fesm2022/softpak-components-spx-number-check.mjs +266 -0
- package/fesm2022/softpak-components-spx-number-check.mjs.map +1 -0
- package/fesm2022/softpak-components-spx-suggestion.mjs +27 -9
- package/fesm2022/softpak-components-spx-suggestion.mjs.map +1 -1
- package/fesm2022/softpak-components-spx-update.mjs +1 -1
- package/fesm2022/softpak-components-spx-update.mjs.map +1 -1
- package/package.json +24 -6
- package/spx-button/spx-button.component.d.ts +3 -1
- package/spx-change-details/index.d.ts +5 -0
- package/spx-change-details/public-api.d.ts +1 -0
- package/spx-change-details/spx-change-details-value.interface.d.ts +7 -0
- package/spx-change-details/spx-change-details.component.d.ts +51 -0
- package/spx-check-digit/spx-check-digit.component.d.ts +3 -1
- package/spx-form-view/index.d.ts +5 -0
- package/spx-form-view/public-api.d.ts +3 -0
- package/spx-form-view/spx-autocomplete-search.component.d.ts +43 -0
- package/spx-form-view/spx-form-field.interface.d.ts +16 -0
- package/spx-form-view/spx-form-section.interface.d.ts +9 -0
- package/spx-form-view/spx-form-view.component.d.ts +37 -0
- package/spx-inputs/spx-dropdown.component.d.ts +18 -0
- package/spx-inputs/spx-input-box.component.d.ts +14 -7
- package/spx-inputs/spx-input-float.component.d.ts +3 -2
- package/spx-inputs/spx-input-number.component.d.ts +3 -2
- package/spx-inputs/spx-input-radio.component.d.ts +13 -5
- package/spx-inputs/spx-input-text.component.d.ts +3 -2
- package/spx-inputs/spx-input-type.enum.d.ts +3 -1
- package/spx-inputs/spx-input.component.d.ts +11 -3
- package/spx-navigation/spx-home-tile.component.d.ts +5 -1
- package/spx-navigation/spx-navigation-item.interface.d.ts +1 -0
- package/spx-navigation/spx-navigation.component.d.ts +4 -1
- package/spx-number-check/index.d.ts +5 -0
- package/spx-number-check/public-api.d.ts +1 -0
- package/spx-number-check/spx-number-check.component.d.ts +48 -0
- package/spx-suggestion/spx-suggestion.component.d.ts +3 -1
- package/tailwind.css +1 -1
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
3
|
+
import { debounceTime } from 'rxjs';
|
|
4
|
+
import { SpxValidationModule } from '@softpak/components/spx-validation';
|
|
5
|
+
import { CommonModule } from '@angular/common';
|
|
6
|
+
import { SpxInputComponent, SpxInputTypeEnum } from '@softpak/components/spx-inputs';
|
|
7
|
+
import { SpxButtonComponent } from '@softpak/components/spx-button';
|
|
8
|
+
import { SpxSeverityEnum } from '@softpak/components/spx-helpers';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@angular/forms";
|
|
11
|
+
export const sectionAutocompleteSearch = 'autocompleteSearch';
|
|
12
|
+
export const ctrlQuery = 'query';
|
|
13
|
+
export const ctrlOptions = 'options';
|
|
14
|
+
export class SpxAutocompleteSearchComponent {
|
|
15
|
+
get ctrlQuery() { return this.formGroup.get(ctrlQuery); }
|
|
16
|
+
get ctrlOptions() { return this.formGroup.get(ctrlOptions); }
|
|
17
|
+
constructor(formBuilder) {
|
|
18
|
+
this.formBuilder = formBuilder;
|
|
19
|
+
this.spxSuggestions = [];
|
|
20
|
+
this.spxCancel = new EventEmitter();
|
|
21
|
+
this.spxSearch = new EventEmitter();
|
|
22
|
+
this.spxSubmit = new EventEmitter();
|
|
23
|
+
this.inputTypeRadio = SpxInputTypeEnum.radio;
|
|
24
|
+
this.inputTypeText = SpxInputTypeEnum.text;
|
|
25
|
+
this.severityError = SpxSeverityEnum.error;
|
|
26
|
+
this.severitySuccess = SpxSeverityEnum.success;
|
|
27
|
+
this.sections = [
|
|
28
|
+
{
|
|
29
|
+
key: sectionAutocompleteSearch,
|
|
30
|
+
showTitle: () => false,
|
|
31
|
+
fields: [
|
|
32
|
+
{
|
|
33
|
+
key: ctrlQuery,
|
|
34
|
+
type: () => SpxInputTypeEnum.text,
|
|
35
|
+
label: () => this.txtQuery,
|
|
36
|
+
capitalize: () => true,
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
key: ctrlOptions,
|
|
40
|
+
type: () => SpxInputTypeEnum.radio,
|
|
41
|
+
label: () => this.txtOptions,
|
|
42
|
+
},
|
|
43
|
+
]
|
|
44
|
+
}
|
|
45
|
+
];
|
|
46
|
+
this.createForm();
|
|
47
|
+
}
|
|
48
|
+
ngOnInit() {
|
|
49
|
+
this.listenToSelection();
|
|
50
|
+
this.listenToQuery();
|
|
51
|
+
this.ctrlQuery.setValue(this.spxValuePair, { emitEvent: false });
|
|
52
|
+
this.spxSearch.emit(this.spxValuePair);
|
|
53
|
+
}
|
|
54
|
+
ngOnDestroy() {
|
|
55
|
+
if (this.subSelection) {
|
|
56
|
+
this.subSelection.unsubscribe();
|
|
57
|
+
}
|
|
58
|
+
if (this.subQuery) {
|
|
59
|
+
this.subQuery.unsubscribe();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
createForm() {
|
|
63
|
+
this.formGroup = this.formBuilder.group({
|
|
64
|
+
[ctrlQuery]: [null],
|
|
65
|
+
[ctrlOptions]: [null],
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
getRawValidators(formControl) {
|
|
69
|
+
return formControl._rawValidators;
|
|
70
|
+
}
|
|
71
|
+
onCancel() {
|
|
72
|
+
this.spxCancel.emit();
|
|
73
|
+
}
|
|
74
|
+
onSubmit() {
|
|
75
|
+
this.spxSubmit.emit(this.ctrlQuery.value);
|
|
76
|
+
}
|
|
77
|
+
listenToQuery() {
|
|
78
|
+
this.subQuery = this.ctrlQuery.valueChanges.pipe(debounceTime(500)).subscribe(valuePair => {
|
|
79
|
+
this.spxSearch.emit(valuePair);
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
listenToSelection() {
|
|
83
|
+
this.subSelection = this.ctrlOptions.valueChanges.subscribe(valuePair => {
|
|
84
|
+
this.ctrlQuery.setValue(valuePair);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SpxAutocompleteSearchComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
88
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: SpxAutocompleteSearchComponent, isStandalone: true, selector: "spx-autocomplete-search", inputs: { spxSuggestions: "spxSuggestions", spxField: "spxField", txtOptions: "txtOptions", txtQuery: "txtQuery", txtSubmit: "txtSubmit", spxValuePair: "spxValuePair" }, outputs: { spxCancel: "spxCancel", spxSearch: "spxSearch", spxSubmit: "spxSubmit" }, ngImport: i0, template: "<div class=\"bg-black fixed top-0 left-0 right-0 bottom-0 px-3 pt-16 z-50 overflow-auto\">\n <form [formGroup]=\"formGroup\" class=\"max-w-lg mx-auto flex flex-col gap-3\" (ngSubmit)=\"onSubmit()\">\n <spx-input\n [formControl]=\"ctrlQuery\"\n [spxLabel]=\"txtQuery\"\n [spxType]=\"inputTypeText\">\n </spx-input>\n <spx-input\n [formControl]=\"ctrlOptions\"\n [spxLabel]=\"txtOptions\"\n [spxSuggestions]=\"spxSuggestions\"\n [spxType]=\"inputTypeRadio\">\n </spx-input>\n <spx-button\n [spxFullWidth]=\"true\"\n [spxSeverity]=\"severitySuccess\">\n Save\n </spx-button>\n <spx-button\n [spxFullWidth]=\"true\"\n [spxSeverity]=\"severityError\"\n [spxType]=\"'button'\"\n (spxClick)=\"onCancel()\">\n Cancel\n </spx-button>\n </form>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType"], outputs: ["spxClick"] }, { kind: "component", type: SpxInputComponent, selector: "spx-input", inputs: ["spxLabel", "spxMax", "spxMin", "spxName", "spxReadonly", "spxAutofocus", "spxInputMode", "spxPattern", "spxRequired", "spxSelectMonth", "spxSelectDay", "spxShowEdit", "spxShowHelp", "spxShowLabel", "spxCompact", "spxShowClear", "spxShowSearch", "spxShowValidationMessages", "spxStep", "spxSuggestions", "spxType", "spxValidators", "value", "spxCapitalize", "spxFocused"], outputs: ["spxBlur", "spxClear", "spxChange", "spxFocus", "spxEdit", "spxHelp", "spxSearch"] }, { kind: "ngmodule", type: SpxValidationModule }] }); }
|
|
89
|
+
}
|
|
90
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SpxAutocompleteSearchComponent, decorators: [{
|
|
91
|
+
type: Component,
|
|
92
|
+
args: [{ selector: 'spx-autocomplete-search', standalone: true, imports: [
|
|
93
|
+
CommonModule,
|
|
94
|
+
FormsModule,
|
|
95
|
+
ReactiveFormsModule,
|
|
96
|
+
SpxButtonComponent,
|
|
97
|
+
SpxInputComponent,
|
|
98
|
+
SpxValidationModule,
|
|
99
|
+
], template: "<div class=\"bg-black fixed top-0 left-0 right-0 bottom-0 px-3 pt-16 z-50 overflow-auto\">\n <form [formGroup]=\"formGroup\" class=\"max-w-lg mx-auto flex flex-col gap-3\" (ngSubmit)=\"onSubmit()\">\n <spx-input\n [formControl]=\"ctrlQuery\"\n [spxLabel]=\"txtQuery\"\n [spxType]=\"inputTypeText\">\n </spx-input>\n <spx-input\n [formControl]=\"ctrlOptions\"\n [spxLabel]=\"txtOptions\"\n [spxSuggestions]=\"spxSuggestions\"\n [spxType]=\"inputTypeRadio\">\n </spx-input>\n <spx-button\n [spxFullWidth]=\"true\"\n [spxSeverity]=\"severitySuccess\">\n Save\n </spx-button>\n <spx-button\n [spxFullWidth]=\"true\"\n [spxSeverity]=\"severityError\"\n [spxType]=\"'button'\"\n (spxClick)=\"onCancel()\">\n Cancel\n </spx-button>\n </form>\n</div>\n" }]
|
|
100
|
+
}], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { spxSuggestions: [{
|
|
101
|
+
type: Input
|
|
102
|
+
}], spxField: [{
|
|
103
|
+
type: Input
|
|
104
|
+
}], txtOptions: [{
|
|
105
|
+
type: Input
|
|
106
|
+
}], txtQuery: [{
|
|
107
|
+
type: Input
|
|
108
|
+
}], txtSubmit: [{
|
|
109
|
+
type: Input
|
|
110
|
+
}], spxValuePair: [{
|
|
111
|
+
type: Input
|
|
112
|
+
}], spxCancel: [{
|
|
113
|
+
type: Output
|
|
114
|
+
}], spxSearch: [{
|
|
115
|
+
type: Output
|
|
116
|
+
}], spxSubmit: [{
|
|
117
|
+
type: Output
|
|
118
|
+
}] } });
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LWF1dG9jb21wbGV0ZS1zZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc29mdHBhay9jb21wb25lbnRzL3NweC1mb3JtLXZpZXcvc3B4LWF1dG9jb21wbGV0ZS1zZWFyY2guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc29mdHBhay9jb21wb25lbnRzL3NweC1mb3JtLXZpZXcvc3B4LWF1dG9jb21wbGV0ZS1zZWFyY2guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUF1QyxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RyxPQUFPLEVBQTBCLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFnQixNQUFNLGdDQUFnQyxDQUFDO0FBQ25HLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7O0FBSWxFLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLG9CQUFvQixDQUFDO0FBQzlELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUM7QUFDakMsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQztBQWVyQyxNQUFNLE9BQU8sOEJBQThCO0lBb0N6QyxJQUFJLFNBQVMsS0FBa0IsT0FBTyxJQUFJLENBQUMsU0FB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LFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3hGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUN0RSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBM0ZVLDhCQUE4QjtrR0FBOUIsOEJBQThCLGtWQzVCM0MsKzBCQTJCQSwyQ0RQSSxZQUFZLDhCQUNaLFdBQVcsMllBQ1gsbUJBQW1CLG1XQUNuQixrQkFBa0IscU9BQ2xCLGlCQUFpQixpaEJBQ2pCLG1CQUFtQjs7MkZBR1YsOEJBQThCO2tCQWIxQyxTQUFTOytCQUNFLHlCQUF5QixjQUV2QixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixpQkFBaUI7d0JBQ2pCLG1CQUFtQjtxQkFDcEI7Z0ZBSVEsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0ksU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZGVib3VuY2UsIGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3B4VmFsaWRhdGlvbk1vZHVsZSB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LXZhbGlkYXRpb24nO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFNweElucHV0Q29tcG9uZW50LCBTcHhJbnB1dFR5cGVFbnVtLCBTcHhWYWx1ZVBhaXIgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1pbnB1dHMnO1xuaW1wb3J0IHsgU3B4QnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtYnV0dG9uJztcbmltcG9ydCB7IFNweFNldmVyaXR5RW51bSB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWhlbHBlcnMnO1xuaW1wb3J0IHsgU3B4Rm9ybUZpZWxkSSB9IGZyb20gJy4vc3B4LWZvcm0tZmllbGQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNweEZvcm1TZWN0aW9uSSB9IGZyb20gJy4vc3B4LWZvcm0tc2VjdGlvbi5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY29uc3Qgc2VjdGlvbkF1dG9jb21wbGV0ZVNlYXJjaCA9ICdhdXRvY29tcGxldGVTZWFyY2gnO1xuZXhwb3J0IGNvbnN0IGN0cmxRdWVyeSA9ICdxdWVyeSc7XG5leHBvcnQgY29uc3QgY3RybE9wdGlvbnMgPSAnb3B0aW9ucyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NweC1hdXRvY29tcGxldGUtc2VhcmNoJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NweC1hdXRvY29tcGxldGUtc2VhcmNoLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFNweEJ1dHRvbkNvbXBvbmVudCxcbiAgICBTcHhJbnB1dENvbXBvbmVudCxcbiAgICBTcHhWYWxpZGF0aW9uTW9kdWxlLFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFNweEF1dG9jb21wbGV0ZVNlYXJjaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgZm9ybUdyb3VwITogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBzcHhTdWdnZXN0aW9uczogU3B4VmFsdWVQYWlyPGFueT5bXSA9IFtdO1xuICBASW5wdXQoKSBzcHhGaWVsZCE6IFNweEZvcm1GaWVsZEk7XG4gIEBJbnB1dCgpIHR4dE9wdGlvbnMhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHR4dFF1ZXJ5ITogc3RyaW5nO1xuICBASW5wdXQoKSB0eHRTdWJtaXQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNweFZhbHVlUGFpciE6IFNweFZhbHVlUGFpcjxhbnk+O1xuICBAT3V0cHV0KCkgc3B4Q2FuY2VsOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBzcHhTZWFyY2g6IEV2ZW50RW1pdHRlcjxTcHhWYWx1ZVBhaXI8YW55Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxhbnk+PigpOyBcbiAgQE91dHB1dCgpIHNweFN1Ym1pdDogRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxhbnk+PiA9IG5ldyBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPGFueT4+KCk7XG4gIGlucHV0VHlwZVJhZGlvID0gU3B4SW5wdXRUeXBlRW51bS5yYWRpbztcbiAgaW5wdXRUeXBlVGV4dCA9IFNweElucHV0VHlwZUVudW0udGV4dDtcbiAgc2V2ZXJpdHlFcnJvciA9IFNweFNldmVyaXR5RW51bS5lcnJvcjtcbiAgc2V2ZXJpdHlTdWNjZXNzID0gU3B4U2V2ZXJpdHlFbnVtLnN1Y2Nlc3M7XG4gXG4gIHNlY3Rpb25zOiBTcHhGb3JtU2VjdGlvbklbXSA9IFtcbiAgICB7XG4gICAgICBrZXk6IHNlY3Rpb25BdXRvY29tcGxldGVTZWFyY2gsXG4gICAgICBzaG93VGl0bGU6ICgpID0+IGZhbHNlLFxuICAgICAgZmllbGRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBrZXk6IGN0cmxRdWVyeSxcbiAgICAgICAgICB0eXBlOiAoKSA9PiBTcHhJbnB1dFR5cGVFbnVtLnRleHQsXG4gICAgICAgICAgbGFiZWw6ICgpID0+IHRoaXMudHh0UXVlcnksXG4gICAgICAgICAgY2FwaXRhbGl6ZTogKCkgPT4gdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGtleTogY3RybE9wdGlvbnMsXG4gICAgICAgICAgdHlwZTogKCkgPT4gU3B4SW5wdXRUeXBlRW51bS5yYWRpbyxcbiAgICAgICAgICBsYWJlbDogKCkgPT4gdGhpcy50eHRPcHRpb25zLFxuICAgICAgICB9LFxuICAgICAgXVxuICAgIH1cbiAgXTtcblxuICBnZXQgY3RybFF1ZXJ5KCk6IEZvcm1Db250cm9sIHsgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldChjdHJsUXVlcnkpIGFzIEZvcm1Db250cm9sOyB9XG4gIGdldCBjdHJsT3B0aW9ucygpOiBGb3JtQ29udHJvbCB7IHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoY3RybE9wdGlvbnMpIGFzIEZvcm1Db250cm9sOyB9XG5cbiAgcHJpdmF0ZSBzdWJTZWxlY3Rpb24/OiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgc3ViUXVlcnk/OiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7XG4gICAgdGhpcy5jcmVhdGVGb3JtKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RlblRvU2VsZWN0aW9uKCk7XG4gICAgdGhpcy5saXN0ZW5Ub1F1ZXJ5KCk7XG4gICAgdGhpcy5jdHJsUXVlcnkuc2V0VmFsdWUodGhpcy5zcHhWYWx1ZVBhaXIsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB0aGlzLnNweFNlYXJjaC5lbWl0KHRoaXMuc3B4VmFsdWVQYWlyKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN1YlNlbGVjdGlvbikge1xuICAgICAgdGhpcy5zdWJTZWxlY3Rpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3ViUXVlcnkpIHtcbiAgICAgIHRoaXMuc3ViUXVlcnkudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIFtjdHJsUXVlcnldOiBbbnVsbF0sXG4gICAgICBbY3RybE9wdGlvbnNdOiBbbnVsbF0sXG4gICAgfSk7XG4gIH1cblxuICBnZXRSYXdWYWxpZGF0b3JzKGZvcm1Db250cm9sOiBGb3JtQ29udHJvbCkge1xuICAgIHJldHVybiAoZm9ybUNvbnRyb2wgYXMgYW55KS5fcmF3VmFsaWRhdG9ycztcbiAgfVxuXG4gIG9uQ2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuc3B4Q2FuY2VsLmVtaXQoKTtcbiAgfVxuICBcbiAgb25TdWJtaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zcHhTdWJtaXQuZW1pdCh0aGlzLmN0cmxRdWVyeS52YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblRvUXVlcnkoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJRdWVyeSA9IHRoaXMuY3RybFF1ZXJ5LnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSg1MDApKS5zdWJzY3JpYmUodmFsdWVQYWlyID0+IHtcbiAgICAgIHRoaXMuc3B4U2VhcmNoLmVtaXQodmFsdWVQYWlyKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuVG9TZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zdWJTZWxlY3Rpb24gPSB0aGlzLmN0cmxPcHRpb25zLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsdWVQYWlyID0+IHtcbiAgICAgIHRoaXMuY3RybFF1ZXJ5LnNldFZhbHVlKHZhbHVlUGFpcik7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJiZy1ibGFjayBmaXhlZCB0b3AtMCBsZWZ0LTAgcmlnaHQtMCBib3R0b20tMCBweC0zIHB0LTE2IHotNTAgb3ZlcmZsb3ctYXV0b1wiPlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIGNsYXNzPVwibWF4LXctbGcgbXgtYXV0byBmbGV4IGZsZXgtY29sIGdhcC0zXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0KClcIj5cbiAgICA8c3B4LWlucHV0XG4gICAgICBbZm9ybUNvbnRyb2xdPVwiY3RybFF1ZXJ5XCJcbiAgICAgIFtzcHhMYWJlbF09XCJ0eHRRdWVyeVwiXG4gICAgICBbc3B4VHlwZV09XCJpbnB1dFR5cGVUZXh0XCI+XG4gICAgPC9zcHgtaW5wdXQ+XG4gICAgPHNweC1pbnB1dFxuICAgICAgW2Zvcm1Db250cm9sXT1cImN0cmxPcHRpb25zXCJcbiAgICAgIFtzcHhMYWJlbF09XCJ0eHRPcHRpb25zXCJcbiAgICAgIFtzcHhTdWdnZXN0aW9uc109XCJzcHhTdWdnZXN0aW9uc1wiXG4gICAgICBbc3B4VHlwZV09XCJpbnB1dFR5cGVSYWRpb1wiPlxuICAgIDwvc3B4LWlucHV0PlxuICAgIDxzcHgtYnV0dG9uXG4gICAgICBbc3B4RnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgW3NweFNldmVyaXR5XT1cInNldmVyaXR5U3VjY2Vzc1wiPlxuICAgICAgU2F2ZVxuICAgIDwvc3B4LWJ1dHRvbj5cbiAgICA8c3B4LWJ1dHRvblxuICAgICAgW3NweEZ1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICAgIFtzcHhTZXZlcml0eV09XCJzZXZlcml0eUVycm9yXCJcbiAgICAgIFtzcHhUeXBlXT1cIididXR0b24nXCJcbiAgICAgIChzcHhDbGljayk9XCJvbkNhbmNlbCgpXCI+XG4gICAgICBDYW5jZWxcbiAgICA8L3NweC1idXR0b24+XG4gIDwvZm9ybT5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LWZvcm0tZmllbGQuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc29mdHBhay9jb21wb25lbnRzL3NweC1mb3JtLXZpZXcvc3B4LWZvcm0tZmllbGQuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTcHhJbnB1dFR5cGVFbnVtLCBTcHhWYWx1ZVBhaXIgfSBmcm9tIFwiQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtaW5wdXRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3B4Rm9ybUZpZWxkSSB7XG4gICAgYWZ0ZXJWYWx1ZUNoYW5nZT86ICh2YWx1ZTogU3B4VmFsdWVQYWlyPHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBhbnk+KSA9PiB2b2lkO1xuICAgIGF1dG9mb2N1cz86ICgpID0+IGJvb2xlYW47XG4gICAgY2FwaXRhbGl6ZT86ICgpID0+IGJvb2xlYW47XG4gICAgZGVmYXVsdFZhbHVlPzogKCkgPT4gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IGFueTtcbiAgICBrZXk6IHN0cmluZztcbiAgICBsYWJlbD86ICgpID0+IHN0cmluZztcbiAgICByZWFkb25seT86ICgpID0+IGJvb2xlYW47XG4gICAgc2hvdz86ICgpID0+IGJvb2xlYW47XG4gICAgc3RlcD86ICgpID0+IG51bWJlcjtcbiAgICBzdWdnZXN0aW9ucz86ICgpID0+IGJvb2xlYW47XG4gICAgc3VnZ2VzdGlvbnNGaXhlZD86ICgpID0+IFNweFZhbHVlUGFpcjxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgYW55PltdXG4gICAgdHlwZTogKCkgPT4gU3B4SW5wdXRUeXBlRW51bTtcbiAgICB2YWxpZGF0b3JzPzogKCkgPT4gYW55W107XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LWZvcm0tc2VjdGlvbi5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWZvcm0tdmlldy9zcHgtZm9ybS1zZWN0aW9uLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3B4Rm9ybUZpZWxkSSB9IGZyb20gXCIuL3NweC1mb3JtLWZpZWxkLmludGVyZmFjZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNweEZvcm1TZWN0aW9uSSB7XG4gICAgZmllbGRzOiBTcHhGb3JtRmllbGRJW107XG4gICAgaW5kZXg/OiAoKSA9PiBudW1iZXI7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgc2hvdz86ICgpID0+IGJvb2xlYW47XG4gICAgc2hvd1RpdGxlPzogKCkgPT4gYm9vbGVhbjtcbiAgICB0aXRsZT86ICgpID0+IHN0cmluZztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import { JsonPipe, NgFor, NgIf } from '@angular/common';
|
|
2
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
|
+
import { SpxFormSectionComponent } from '@softpak/components/spx-form-section';
|
|
4
|
+
import { SpxInputComponent, SpxInputTypeEnum } from '@softpak/components/spx-inputs';
|
|
5
|
+
import { SpxCapitalizePipe } from '@softpak/components/spx-capitalize';
|
|
6
|
+
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
7
|
+
import { SpxAutocompleteSearchComponent } from './spx-autocomplete-search.component';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/forms";
|
|
10
|
+
export class SpxFormViewComponent {
|
|
11
|
+
onBlur(field) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
onAutocompleteCancel() {
|
|
15
|
+
this.autocompleteField = undefined;
|
|
16
|
+
}
|
|
17
|
+
onAutocompleteSearch(valuePair) {
|
|
18
|
+
console.log('spxFormView - onAutocompleteSearch: ', valuePair, this.autocompleteField);
|
|
19
|
+
if (this.autocompleteField) {
|
|
20
|
+
this.spxSearch.emit({
|
|
21
|
+
field: this.autocompleteField,
|
|
22
|
+
valuePair,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
onAutocompleteSave(valuePair) {
|
|
27
|
+
this.spxFormGroup.get(this.autocompleteField.key)?.setValue(valuePair);
|
|
28
|
+
this.autocompleteField = undefined;
|
|
29
|
+
}
|
|
30
|
+
onSearch(field) {
|
|
31
|
+
this.autocompleteField = field;
|
|
32
|
+
}
|
|
33
|
+
getRawValidators(formControl) {
|
|
34
|
+
// eslint-disable-next-line no-underscore-dangle
|
|
35
|
+
return formControl._rawValidators;
|
|
36
|
+
}
|
|
37
|
+
hasRequiredField(abstractControl) {
|
|
38
|
+
if (abstractControl.validator) {
|
|
39
|
+
const validator = abstractControl.validator({});
|
|
40
|
+
if (validator && validator['required']) {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (abstractControl['controls']) {
|
|
45
|
+
for (const controlName in abstractControl['controls']) {
|
|
46
|
+
if (abstractControl['controls'][controlName]) {
|
|
47
|
+
if (this.hasRequiredField(abstractControl['controls'][controlName])) {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
static initialFormValue(sections) {
|
|
56
|
+
const formObject = {};
|
|
57
|
+
sections.forEach(section => {
|
|
58
|
+
section.fields.forEach(field => {
|
|
59
|
+
formObject[field.key] = [field.defaultValue ? field.defaultValue() : null, field.validators ? [...field.validators()] : []];
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
return formObject;
|
|
63
|
+
}
|
|
64
|
+
static createForm(formBuilder, sections) {
|
|
65
|
+
return formBuilder.group(this.initialFormValue(sections));
|
|
66
|
+
}
|
|
67
|
+
constructor(formBuilder) {
|
|
68
|
+
this.formBuilder = formBuilder;
|
|
69
|
+
this.spxSearch = new EventEmitter();
|
|
70
|
+
this.typeAutocomplete = SpxInputTypeEnum.autocomplete;
|
|
71
|
+
this.typeFloat = SpxInputTypeEnum.float;
|
|
72
|
+
this.typeNumber = SpxInputTypeEnum.number;
|
|
73
|
+
this.typeRadio = SpxInputTypeEnum.radio;
|
|
74
|
+
this.typeText = SpxInputTypeEnum.text;
|
|
75
|
+
this.typeNumericKeyboard = SpxInputTypeEnum.textNumericKeyboard;
|
|
76
|
+
this.typeOverlay = SpxInputTypeEnum.overlay;
|
|
77
|
+
this.typeOverlayNumber = SpxInputTypeEnum.overlayNumber;
|
|
78
|
+
}
|
|
79
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SpxFormViewComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
80
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: SpxFormViewComponent, isStandalone: true, selector: "spx-form-view", inputs: { spxFormGroup: "spxFormGroup", spxSections: "spxSections", spxSuggestions: "spxSuggestions" }, outputs: { spxSearch: "spxSearch" }, ngImport: i0, template: `<spx-autocomplete-search
|
|
81
|
+
*ngIf="autocompleteField"
|
|
82
|
+
[spxField]="autocompleteField"
|
|
83
|
+
[spxSuggestions]="this.spxSuggestions[autocompleteField.key]"
|
|
84
|
+
[spxValuePair]="$any(this.spxFormGroup.get(autocompleteField.key)).value"
|
|
85
|
+
[txtOptions]="'Options'"
|
|
86
|
+
[txtQuery]="'Query'"
|
|
87
|
+
[txtSubmit]="'Save'"
|
|
88
|
+
(spxCancel)="onAutocompleteCancel()"
|
|
89
|
+
(spxSearch)="onAutocompleteSearch($event)"
|
|
90
|
+
(spxSubmit)="onAutocompleteSave($event)">
|
|
91
|
+
</spx-autocomplete-search>
|
|
92
|
+
<spx-form-section
|
|
93
|
+
*ngFor="let spxSection of spxSections; let spxSectionIndex = index;"
|
|
94
|
+
[spxShowTitle]="!spxSection.showTitle || spxSection.showTitle()"
|
|
95
|
+
[spxIndex]="spxSectionIndex + 1"
|
|
96
|
+
[spxTitle]="spxSection.title ? spxSection.title() : undefined">
|
|
97
|
+
<ng-container *ngFor="let spxField of spxSection.fields; let spxFieldIndex = index;">
|
|
98
|
+
<ng-container *ngIf="spxField.show === undefined || spxField.show()">
|
|
99
|
+
<spx-input
|
|
100
|
+
*ngIf="spxField.type() === typeOverlay || spxField.type() === typeOverlayNumber || spxField.type() === typeFloat || spxField.type() === typeNumber || spxField.type() === typeText || spxField.type() === typeAutocomplete || spxField.type() === typeNumericKeyboard"
|
|
101
|
+
[formControl]="$any(this.spxFormGroup.get(spxField.key))"
|
|
102
|
+
[spxAutofocus]="spxField.autofocus ? spxField.autofocus() : false"
|
|
103
|
+
[spxCapitalize]="spxField.capitalize ? spxField.capitalize() : false"
|
|
104
|
+
[spxLabel]="(spxField.label ? spxField.label() : spxField.key) | capitalize"
|
|
105
|
+
[spxPattern]="spxField.type() === typeNumericKeyboard ? '\\d*' : undefined"
|
|
106
|
+
[spxReadonly]="spxField.readonly ? spxField.readonly() : false"
|
|
107
|
+
[spxRequired]="hasRequiredField(this.spxFormGroup.get(spxField.key)!)"
|
|
108
|
+
[spxShowSearch]="spxField.type() === typeAutocomplete"
|
|
109
|
+
[spxShowHelp]="false"
|
|
110
|
+
[spxShowValidationMessages]="this.spxFormGroup.get(spxField.key)! && this.spxFormGroup.get(spxField.key)!.errors && this.spxFormGroup.get(spxField.key)!.touched"
|
|
111
|
+
[spxStep]="spxField.step ? spxField.step() : undefined"
|
|
112
|
+
[spxType]="spxField.type()"
|
|
113
|
+
[spxValidators]="getRawValidators(this.spxFormGroup.get(spxField.key)!)"
|
|
114
|
+
[spxSuggestions]="spxField.suggestionsFixed ? spxField.suggestionsFixed() : this.spxSuggestions[spxField.key]"
|
|
115
|
+
(spxBlur)="onBlur(spxField)"
|
|
116
|
+
(spxSearch)="onSearch(spxField)">
|
|
117
|
+
</spx-input>
|
|
118
|
+
|
|
119
|
+
<spx-input
|
|
120
|
+
*ngIf="spxField.type() === typeRadio"
|
|
121
|
+
[formControl]="$any(this.spxFormGroup.get(spxField.key))"
|
|
122
|
+
[spxLabel]="(spxField.label ? spxField.label() : spxField.key) | capitalize"
|
|
123
|
+
[spxReadonly]="spxField.readonly ? spxField.readonly() : false"
|
|
124
|
+
[spxRequired]="hasRequiredField(this.spxFormGroup.get(spxField.key)!)"
|
|
125
|
+
[spxShowHelp]="false"
|
|
126
|
+
[spxShowValidationMessages]="this.spxFormGroup.get(spxField.key)! && this.spxFormGroup.get(spxField.key)!.errors && this.spxFormGroup.get(spxField.key)!.touched"
|
|
127
|
+
[spxSuggestions]="spxField.suggestionsFixed ? spxField.suggestionsFixed() : this.spxSuggestions[spxField.key]"
|
|
128
|
+
[spxType]="typeRadio"
|
|
129
|
+
[spxValidators]="getRawValidators(this.spxFormGroup.get(spxField.key)!)">
|
|
130
|
+
</spx-input>
|
|
131
|
+
</ng-container>
|
|
132
|
+
</ng-container>
|
|
133
|
+
</spx-form-section>`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: SpxAutocompleteSearchComponent, selector: "spx-autocomplete-search", inputs: ["spxSuggestions", "spxField", "txtOptions", "txtQuery", "txtSubmit", "spxValuePair"], outputs: ["spxCancel", "spxSearch", "spxSubmit"] }, { kind: "pipe", type: SpxCapitalizePipe, name: "capitalize" }, { kind: "component", type: SpxFormSectionComponent, selector: "spx-form-section", inputs: ["spxIndex", "spxIndexSecondary", "spxTitle", "spxShowTitle"] }, { kind: "component", type: SpxInputComponent, selector: "spx-input", inputs: ["spxLabel", "spxMax", "spxMin", "spxName", "spxReadonly", "spxAutofocus", "spxInputMode", "spxPattern", "spxRequired", "spxSelectMonth", "spxSelectDay", "spxShowEdit", "spxShowHelp", "spxShowLabel", "spxCompact", "spxShowClear", "spxShowSearch", "spxShowValidationMessages", "spxStep", "spxSuggestions", "spxType", "spxValidators", "value", "spxCapitalize", "spxFocused"], outputs: ["spxBlur", "spxClear", "spxChange", "spxFocus", "spxEdit", "spxHelp", "spxSearch"] }] }); }
|
|
134
|
+
}
|
|
135
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SpxFormViewComponent, decorators: [{
|
|
136
|
+
type: Component,
|
|
137
|
+
args: [{
|
|
138
|
+
selector: 'spx-form-view',
|
|
139
|
+
standalone: true,
|
|
140
|
+
imports: [
|
|
141
|
+
FormsModule,
|
|
142
|
+
ReactiveFormsModule,
|
|
143
|
+
JsonPipe,
|
|
144
|
+
NgIf,
|
|
145
|
+
NgFor,
|
|
146
|
+
SpxAutocompleteSearchComponent,
|
|
147
|
+
SpxCapitalizePipe,
|
|
148
|
+
SpxFormSectionComponent,
|
|
149
|
+
SpxInputComponent,
|
|
150
|
+
],
|
|
151
|
+
template: `<spx-autocomplete-search
|
|
152
|
+
*ngIf="autocompleteField"
|
|
153
|
+
[spxField]="autocompleteField"
|
|
154
|
+
[spxSuggestions]="this.spxSuggestions[autocompleteField.key]"
|
|
155
|
+
[spxValuePair]="$any(this.spxFormGroup.get(autocompleteField.key)).value"
|
|
156
|
+
[txtOptions]="'Options'"
|
|
157
|
+
[txtQuery]="'Query'"
|
|
158
|
+
[txtSubmit]="'Save'"
|
|
159
|
+
(spxCancel)="onAutocompleteCancel()"
|
|
160
|
+
(spxSearch)="onAutocompleteSearch($event)"
|
|
161
|
+
(spxSubmit)="onAutocompleteSave($event)">
|
|
162
|
+
</spx-autocomplete-search>
|
|
163
|
+
<spx-form-section
|
|
164
|
+
*ngFor="let spxSection of spxSections; let spxSectionIndex = index;"
|
|
165
|
+
[spxShowTitle]="!spxSection.showTitle || spxSection.showTitle()"
|
|
166
|
+
[spxIndex]="spxSectionIndex + 1"
|
|
167
|
+
[spxTitle]="spxSection.title ? spxSection.title() : undefined">
|
|
168
|
+
<ng-container *ngFor="let spxField of spxSection.fields; let spxFieldIndex = index;">
|
|
169
|
+
<ng-container *ngIf="spxField.show === undefined || spxField.show()">
|
|
170
|
+
<spx-input
|
|
171
|
+
*ngIf="spxField.type() === typeOverlay || spxField.type() === typeOverlayNumber || spxField.type() === typeFloat || spxField.type() === typeNumber || spxField.type() === typeText || spxField.type() === typeAutocomplete || spxField.type() === typeNumericKeyboard"
|
|
172
|
+
[formControl]="$any(this.spxFormGroup.get(spxField.key))"
|
|
173
|
+
[spxAutofocus]="spxField.autofocus ? spxField.autofocus() : false"
|
|
174
|
+
[spxCapitalize]="spxField.capitalize ? spxField.capitalize() : false"
|
|
175
|
+
[spxLabel]="(spxField.label ? spxField.label() : spxField.key) | capitalize"
|
|
176
|
+
[spxPattern]="spxField.type() === typeNumericKeyboard ? '\\d*' : undefined"
|
|
177
|
+
[spxReadonly]="spxField.readonly ? spxField.readonly() : false"
|
|
178
|
+
[spxRequired]="hasRequiredField(this.spxFormGroup.get(spxField.key)!)"
|
|
179
|
+
[spxShowSearch]="spxField.type() === typeAutocomplete"
|
|
180
|
+
[spxShowHelp]="false"
|
|
181
|
+
[spxShowValidationMessages]="this.spxFormGroup.get(spxField.key)! && this.spxFormGroup.get(spxField.key)!.errors && this.spxFormGroup.get(spxField.key)!.touched"
|
|
182
|
+
[spxStep]="spxField.step ? spxField.step() : undefined"
|
|
183
|
+
[spxType]="spxField.type()"
|
|
184
|
+
[spxValidators]="getRawValidators(this.spxFormGroup.get(spxField.key)!)"
|
|
185
|
+
[spxSuggestions]="spxField.suggestionsFixed ? spxField.suggestionsFixed() : this.spxSuggestions[spxField.key]"
|
|
186
|
+
(spxBlur)="onBlur(spxField)"
|
|
187
|
+
(spxSearch)="onSearch(spxField)">
|
|
188
|
+
</spx-input>
|
|
189
|
+
|
|
190
|
+
<spx-input
|
|
191
|
+
*ngIf="spxField.type() === typeRadio"
|
|
192
|
+
[formControl]="$any(this.spxFormGroup.get(spxField.key))"
|
|
193
|
+
[spxLabel]="(spxField.label ? spxField.label() : spxField.key) | capitalize"
|
|
194
|
+
[spxReadonly]="spxField.readonly ? spxField.readonly() : false"
|
|
195
|
+
[spxRequired]="hasRequiredField(this.spxFormGroup.get(spxField.key)!)"
|
|
196
|
+
[spxShowHelp]="false"
|
|
197
|
+
[spxShowValidationMessages]="this.spxFormGroup.get(spxField.key)! && this.spxFormGroup.get(spxField.key)!.errors && this.spxFormGroup.get(spxField.key)!.touched"
|
|
198
|
+
[spxSuggestions]="spxField.suggestionsFixed ? spxField.suggestionsFixed() : this.spxSuggestions[spxField.key]"
|
|
199
|
+
[spxType]="typeRadio"
|
|
200
|
+
[spxValidators]="getRawValidators(this.spxFormGroup.get(spxField.key)!)">
|
|
201
|
+
</spx-input>
|
|
202
|
+
</ng-container>
|
|
203
|
+
</ng-container>
|
|
204
|
+
</spx-form-section>`,
|
|
205
|
+
}]
|
|
206
|
+
}], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { spxFormGroup: [{
|
|
207
|
+
type: Input
|
|
208
|
+
}], spxSections: [{
|
|
209
|
+
type: Input
|
|
210
|
+
}], spxSuggestions: [{
|
|
211
|
+
type: Input
|
|
212
|
+
}], spxSearch: [{
|
|
213
|
+
type: Output
|
|
214
|
+
}] } });
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LWZvcm0tdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWZvcm0tdmlldy9zcHgtZm9ybS12aWV3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBZ0IsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQTJDLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNHLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7QUF1RXJGLE1BQU0sT0FBTyxvQkFBb0I7SUFnQi9CLE1BQU0sQ0FBQyxLQUFvQjtRQUN6QixPQUFPO0lBQ1QsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxTQUE0QjtRQUMvQyxPQUFPLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN2RixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO2dCQUNsQixLQUFLLEVBQUUsSUFBSSxDQUFDLGlC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QUM7UUFDM0QsZ0JBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7UUFDdkMsc0JBQWlCLEdBQUcsZ0JBQWdCLENBQUMsYUFBYSxDQUFDO0lBb0VuRCxDQUFDOzhHQWxGVSxvQkFBb0I7a0dBQXBCLG9CQUFvQixzTkF2RHJCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQkFxRFUsMkRBL0RsQixXQUFXLHNJQUNYLG1CQUFtQixrTkFFbkIsSUFBSSw2RkFDSixLQUFLLG1IQUNMLDhCQUE4QixnTkFDOUIsaUJBQWlCLG1EQUNqQix1QkFBdUIsb0lBQ3ZCLGlCQUFpQjs7MkZBeURSLG9CQUFvQjtrQkFyRWhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUU7d0JBQ1AsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLFFBQVE7d0JBQ1IsSUFBSTt3QkFDSixLQUFLO3dCQUNMLDhCQUE4Qjt3QkFDOUIsaUJBQWlCO3dCQUNqQix1QkFBdUI7d0JBQ3ZCLGlCQUFpQjtxQkFDbEI7b0JBQ0QsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQkFxRFU7aUJBQ3JCO2dGQUVVLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNJLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBKc29uUGlwZSwgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNweEZvcm1TZWN0aW9uSSB9IGZyb20gJy4vc3B4LWZvcm0tc2VjdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU3B4Rm9ybVNlY3Rpb25Db21wb25lbnQgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1mb3JtLXNlY3Rpb24nO1xuaW1wb3J0IHsgU3B4SW5wdXRDb21wb25lbnQsIFNweElucHV0VHlwZUVudW0sIFNweFZhbHVlUGFpciB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWlucHV0cyc7XG5pbXBvcnQgeyBTcHhDYXBpdGFsaXplUGlwZSB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWNhcGl0YWxpemUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNweEZvcm1GaWVsZEkgfSBmcm9tICcuL3NweC1mb3JtLWZpZWxkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTcHhBdXRvY29tcGxldGVTZWFyY2hDb21wb25lbnQgfSBmcm9tICcuL3NweC1hdXRvY29tcGxldGUtc2VhcmNoLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NweC1mb3JtLXZpZXcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBKc29uUGlwZSxcbiAgICBOZ0lmLFxuICAgIE5nRm9yLFxuICAgIFNweEF1dG9jb21wbGV0ZVNlYXJjaENvbXBvbmVudCxcbiAgICBTcHhDYXBpdGFsaXplUGlwZSxcbiAgICBTcHhGb3JtU2VjdGlvbkNvbXBvbmVudCxcbiAgICBTcHhJbnB1dENvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGA8c3B4LWF1dG9jb21wbGV0ZS1zZWFyY2hcbiAgICAqbmdJZj1cImF1dG9jb21wbGV0ZUZpZWxkXCJcbiAgICBbc3B4RmllbGRdPVwiYXV0b2NvbXBsZXRlRmllbGRcIlxuICAgIFtzcHhTdWdnZXN0aW9uc109XCJ0aGlzLnNweFN1Z2dlc3Rpb25zW2F1dG9jb21wbGV0ZUZpZWxkLmtleV1cIlxuICAgIFtzcHhWYWx1ZVBhaXJdPVwiJGFueSh0aGlzLnNweEZvcm1Hcm91cC5nZXQoYXV0b2NvbXBsZXRlRmllbGQua2V5KSkudmFsdWVcIlxuICAgIFt0eHRPcHRpb25zXT1cIidPcHRpb25zJ1wiXG4gICAgW3R4dFF1ZXJ5XT1cIidRdWVyeSdcIlxuICAgIFt0eHRTdWJtaXRdPVwiJ1NhdmUnXCJcbiAgICAoc3B4Q2FuY2VsKT1cIm9uQXV0b2NvbXBsZXRlQ2FuY2VsKClcIlxuICAgIChzcHhTZWFyY2gpPVwib25BdXRvY29tcGxldGVTZWFyY2goJGV2ZW50KVwiXG4gICAgKHNweFN1Ym1pdCk9XCJvbkF1dG9jb21wbGV0ZVNhdmUoJGV2ZW50KVwiPlxuICA8L3NweC1hdXRvY29tcGxldGUtc2VhcmNoPlxuICAgIDxzcHgtZm9ybS1zZWN0aW9uXG4gICAgKm5nRm9yPVwibGV0IHNweFNlY3Rpb24gb2Ygc3B4U2VjdGlvbnM7IGxldCBzcHhTZWN0aW9uSW5kZXggPSBpbmRleDtcIlxuICAgIFtzcHhTaG93VGl0bGVdPVwiIXNweFNlY3Rpb24uc2hvd1RpdGxlIHx8IHNweFNlY3Rpb24uc2hvd1RpdGxlKClcIlxuICAgIFtzcHhJbmRleF09XCJzcHhTZWN0aW9uSW5kZXggKyAxXCJcbiAgICBbc3B4VGl0bGVdPVwic3B4U2VjdGlvbi50aXRsZSA/IHNweFNlY3Rpb24udGl0bGUoKSA6IHVuZGVmaW5lZFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHNweEZpZWxkIG9mIHNweFNlY3Rpb24uZmllbGRzOyBsZXQgc3B4RmllbGRJbmRleCA9IGluZGV4O1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNweEZpZWxkLnNob3cgPT09IHVuZGVmaW5lZCB8fCBzcHhGaWVsZC5zaG93KClcIj5cbiAgICAgICAgPHNweC1pbnB1dFxuICAgICAgICAgICpuZ0lmPVwic3B4RmllbGQudHlwZSgpID09PSB0eXBlT3ZlcmxheSB8fCBzcHhGaWVsZC50eXBlKCkgPT09IHR5cGVPdmVybGF5TnVtYmVyIHx8IHNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZUZsb2F0IHx8IHNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZU51bWJlciB8fCBzcHhGaWVsZC50eXBlKCkgPT09IHR5cGVUZXh0IHx8IHNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZUF1dG9jb21wbGV0ZSB8fCBzcHhGaWVsZC50eXBlKCkgPT09IHR5cGVOdW1lcmljS2V5Ym9hcmRcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCIkYW55KHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpKVwiXG4gICAgICAgICAgW3NweEF1dG9mb2N1c109XCJzcHhGaWVsZC5hdXRvZm9jdXMgPyBzcHhGaWVsZC5hdXRvZm9jdXMoKSA6IGZhbHNlXCJcbiAgICAgICAgICBbc3B4Q2FwaXRhbGl6ZV09XCJzcHhGaWVsZC5jYXBpdGFsaXplID8gc3B4RmllbGQuY2FwaXRhbGl6ZSgpIDogZmFsc2VcIlxuICAgICAgICAgIFtzcHhMYWJlbF09XCIoc3B4RmllbGQubGFiZWwgPyBzcHhGaWVsZC5sYWJlbCgpIDogc3B4RmllbGQua2V5KSB8IGNhcGl0YWxpemVcIlxuICAgICAgICAgIFtzcHhQYXR0ZXJuXT1cInNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZU51bWVyaWNLZXlib2FyZCA/ICdcXFxcZConIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICBbc3B4UmVhZG9ubHldPVwic3B4RmllbGQucmVhZG9ubHkgPyBzcHhGaWVsZC5yZWFkb25seSgpIDogZmFsc2VcIlxuICAgICAgICAgIFtzcHhSZXF1aXJlZF09XCJoYXNSZXF1aXJlZEZpZWxkKHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpISlcIlxuICAgICAgICAgIFtzcHhTaG93U2VhcmNoXT1cInNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZUF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgW3NweFNob3dIZWxwXT1cImZhbHNlXCJcbiAgICAgICAgICBbc3B4U2hvd1ZhbGlkYXRpb25NZXNzYWdlc109XCJ0aGlzLnNweEZvcm1Hcm91cC5nZXQoc3B4RmllbGQua2V5KSEgJiYgdGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHNweEZpZWxkLmtleSkhLmVycm9ycyAmJiB0aGlzLnNweEZvcm1Hcm91cC5nZXQoc3B4RmllbGQua2V5KSEudG91Y2hlZFwiXG4gICAgICAgICAgW3NweFN0ZXBdPVwic3B4RmllbGQuc3RlcCA/IHNweEZpZWxkLnN0ZXAoKSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgW3NweFR5cGVdPVwic3B4RmllbGQudHlwZSgpXCJcbiAgICAgICAgICBbc3B4VmFsaWRhdG9yc109XCJnZXRSYXdWYWxpZGF0b3JzKHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpISlcIlxuICAgICAgICAgIFtzcHhTdWdnZXN0aW9uc109XCJzcHhGaWVsZC5zdWdnZXN0aW9uc0ZpeGVkID8gc3B4RmllbGQuc3VnZ2VzdGlvbnNGaXhlZCgpIDogdGhpcy5zcHhTdWdnZXN0aW9uc1tzcHhGaWVsZC5rZXldXCJcbiAgICAgICAgICAoc3B4Qmx1cik9XCJvbkJsdXIoc3B4RmllbGQpXCJcbiAgICAgICAgICAoc3B4U2VhcmNoKT1cIm9uU2VhcmNoKHNweEZpZWxkKVwiPlxuICAgICAgICA8L3NweC1pbnB1dD5cblxuICAgICAgICA8c3B4LWlucHV0XG4gICAgICAgICAgKm5nSWY9XCJzcHhGaWVsZC50eXBlKCkgPT09IHR5cGVSYWRpb1wiXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cIiRhbnkodGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHNweEZpZWxkLmtleSkpXCJcbiAgICAgICAgICBbc3B4TGFiZWxdPVwiKHNweEZpZWxkLmxhYmVsID8gc3B4RmllbGQubGFiZWwoKSA6IHNweEZpZWxkLmtleSkgfCBjYXBpdGFsaXplXCJcbiAgICAgICAgICBbc3B4UmVhZG9ubHldPVwic3B4RmllbGQucmVhZG9ubHkgPyBzcHhGaWVsZC5yZWFkb25seSgpIDogZmFsc2VcIlxuICAgICAgICAgIFtzcHhSZXF1aXJlZF09XCJoYXNSZXF1aXJlZEZpZWxkKHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpISlcIlxuICAgICAgICAgIFtzcHhTaG93SGVscF09XCJmYWxzZVwiXG4gICAgICAgICAgW3NweFNob3dWYWxpZGF0aW9uTWVzc2FnZXNdPVwidGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHNweEZpZWxkLmtleSkhICYmIHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpIS5lcnJvcnMgJiYgdGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHNweEZpZWxkLmtleSkhLnRvdWNoZWRcIlxuICAgICAgICAgIFtzcHhTdWdnZXN0aW9uc109XCJzcHhGaWVsZC5zdWdnZXN0aW9uc0ZpeGVkID8gc3B4RmllbGQuc3VnZ2VzdGlvbnNGaXhlZCgpIDogdGhpcy5zcHhTdWdnZXN0aW9uc1tzcHhGaWVsZC5rZXldXCJcbiAgICAgICAgICBbc3B4VHlwZV09XCJ0eXBlUmFkaW9cIlxuICAgICAgICAgIFtzcHhWYWxpZGF0b3JzXT1cImdldFJhd1ZhbGlkYXRvcnModGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHNweEZpZWxkLmtleSkhKVwiPlxuICAgICAgICA8L3NweC1pbnB1dD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3NweC1mb3JtLXNlY3Rpb24+YCxcbn0pXG5leHBvcnQgY2xhc3MgU3B4Rm9ybVZpZXdDb21wb25lbnQge1xuICBASW5wdXQoKSBzcHhGb3JtR3JvdXAhOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHNweFNlY3Rpb25zITogU3B4Rm9ybVNlY3Rpb25JW107XG4gIEBJbnB1dCgpIHNweFN1Z2dlc3Rpb25zITogYW55O1xuICBAT3V0cHV0KCkgc3B4U2VhcmNoOiBFdmVudEVtaXR0ZXI8eyBmaWVsZDogU3B4Rm9ybUZpZWxkSSwgdmFsdWVQYWlyOiBTcHhWYWx1ZVBhaXI8YW55PiB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBmaWVsZDogU3B4Rm9ybUZpZWxkSSwgdmFsdWVQYWlyOiBTcHhWYWx1ZVBhaXI8YW55PiB9PigpO1xuICBhdXRvY29tcGxldGVGaWVsZD86IFNweEZvcm1GaWVsZEk7XG5cbiAgdHlwZUF1dG9jb21wbGV0ZSA9IFNweElucHV0VHlwZUVudW0uYXV0b2NvbXBsZXRlO1xuICB0eXBlRmxvYXQgPSBTcHhJbnB1dFR5cGVFbnVtLmZsb2F0O1xuICB0eXBlTnVtYmVyID0gU3B4SW5wdXRUeXBlRW51bS5udW1iZXI7XG4gIHR5cGVSYWRpbyA9IFNweElucHV0VHlwZUVudW0ucmFkaW87XG4gIHR5cGVUZXh0ID0gU3B4SW5wdXRUeXBlRW51bS50ZXh0O1xuICB0eXBlTnVtZXJpY0tleWJvYXJkID0gU3B4SW5wdXRUeXBlRW51bS50ZXh0TnVtZXJpY0tleWJvYXJkO1xuICB0eXBlT3ZlcmxheSA9IFNweElucHV0VHlwZUVudW0ub3ZlcmxheTtcbiAgdHlwZU92ZXJsYXlOdW1iZXIgPSBTcHhJbnB1dFR5cGVFbnVtLm92ZXJsYXlOdW1iZXI7XG5cbiAgb25CbHVyKGZpZWxkOiBTcHhGb3JtRmllbGRJKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgb25BdXRvY29tcGxldGVDYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5hdXRvY29tcGxldGVGaWVsZCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIG9uQXV0b2NvbXBsZXRlU2VhcmNoKHZhbHVlUGFpcjogU3B4VmFsdWVQYWlyPGFueT4pOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygnc3B4Rm9ybVZpZXcgLSBvbkF1dG9jb21wbGV0ZVNlYXJjaDogJywgdmFsdWVQYWlyLCB0aGlzLmF1dG9jb21wbGV0ZUZpZWxkKTtcbiAgICBpZiAodGhpcy5hdXRvY29tcGxldGVGaWVsZCkge1xuICAgICAgdGhpcy5zcHhTZWFyY2guZW1pdCh7XG4gICAgICAgIGZpZWxkOiB0aGlzLmF1dG9jb21wbGV0ZUZpZWxkLFxuICAgICAgICB2YWx1ZVBhaXIsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvbkF1dG9jb21wbGV0ZVNhdmUodmFsdWVQYWlyOiBTcHhWYWx1ZVBhaXI8YW55Pikge1xuICAgIHRoaXMuc3B4Rm9ybUdyb3VwLmdldCh0aGlzLmF1dG9jb21wbGV0ZUZpZWxkIS5rZXkpPy5zZXRWYWx1ZSh2YWx1ZVBhaXIpO1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlRmllbGQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBvblNlYXJjaChmaWVsZDogU3B4Rm9ybUZpZWxkSSkge1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlRmllbGQgPSBmaWVsZDtcbiAgfVxuXG4gIGdldFJhd1ZhbGlkYXRvcnMoZm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlcnNjb3JlLWRhbmdsZVxuICAgIHJldHVybiAoZm9ybUNvbnRyb2wgYXMgYW55KS5fcmF3VmFsaWRhdG9ycztcbiAgfVxuXG4gIGhhc1JlcXVpcmVkRmllbGQoYWJzdHJhY3RDb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBib29sZWFuIHtcbiAgICBpZiAoYWJzdHJhY3RDb250cm9sLnZhbGlkYXRvcikge1xuICAgICAgY29uc3QgdmFsaWRhdG9yID0gYWJzdHJhY3RDb250cm9sLnZhbGlkYXRvcih7fSBhcyBBYnN0cmFjdENvbnRyb2wpO1xuICAgICAgaWYgKHZhbGlkYXRvciAmJiB2YWxpZGF0b3JbJ3JlcXVpcmVkJ10pIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICgoYWJzdHJhY3RDb250cm9sIGFzIGFueSlbJ2NvbnRyb2xzJ10pIHtcbiAgICAgIGZvciAoY29uc3QgY29udHJvbE5hbWUgaW4gKGFic3RyYWN0Q29udHJvbCBhcyBhbnkpWydjb250cm9scyddKSB7XG4gICAgICAgIGlmICgoYWJzdHJhY3RDb250cm9sIGFzIGFueSlbJ2NvbnRyb2xzJ11bY29udHJvbE5hbWVdKSB7XG4gICAgICAgICAgaWYgKHRoaXMuaGFzUmVxdWlyZWRGaWVsZCgoYWJzdHJhY3RDb250cm9sIGFzIGFueSlbJ2NvbnRyb2xzJ11bY29udHJvbE5hbWVdKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0YXRpYyBpbml0aWFsRm9ybVZhbHVlKHNlY3Rpb25zOiBTcHhGb3JtU2VjdGlvbklbXSkge1xuICAgIGNvbnN0IGZvcm1PYmplY3Q6IGFueSA9IHt9O1xuICAgIHNlY3Rpb25zLmZvckVhY2goc2VjdGlvbiA9PiB7XG4gICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgZm9ybU9iamVjdFtmaWVsZC5rZXldID0gW2ZpZWxkLmRlZmF1bHRWYWx1ZSA/IGZpZWxkLmRlZmF1bHRWYWx1ZSgpIDogbnVsbCwgZmllbGQudmFsaWRhdG9ycyA/IFsuLi5maWVsZC52YWxpZGF0b3JzKCldIDogW11dO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGZvcm1PYmplY3Q7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlRm9ybShmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsIHNlY3Rpb25zOiBTcHhGb3JtU2VjdGlvbklbXSk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIGZvcm1CdWlsZGVyLmdyb3VwKHRoaXMuaW5pdGlhbEZvcm1WYWx1ZShzZWN0aW9ucykpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { NgFor, NgIf } from '@angular/common';
|
|
2
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
|
+
import { SpxButtonComponent } from '@softpak/components/spx-button';
|
|
4
|
+
import { fromEvent } from 'rxjs';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class SpxDropdownComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.focusPosition = 0;
|
|
9
|
+
this.spxSuggestions = [];
|
|
10
|
+
this.spxSelect = new EventEmitter();
|
|
11
|
+
}
|
|
12
|
+
ngOnInit() {
|
|
13
|
+
this.listenToKeyUp();
|
|
14
|
+
}
|
|
15
|
+
ngOnChanges(changes) {
|
|
16
|
+
this.focusPosition = 0;
|
|
17
|
+
}
|
|
18
|
+
ngOnDestroy() {
|
|
19
|
+
this.subscriptionKeyUp?.unsubscribe();
|
|
20
|
+
}
|
|
21
|
+
handleSuggestionClick(valuePair) {
|
|
22
|
+
this.select(valuePair);
|
|
23
|
+
}
|
|
24
|
+
listenToKeyUp() {
|
|
25
|
+
this.subscriptionKeyUp = fromEvent(window, 'keyup').subscribe((event) => {
|
|
26
|
+
if (event.key === 'ArrowUp' && this.focusPosition > 0) {
|
|
27
|
+
this.focusPosition = this.focusPosition - 1;
|
|
28
|
+
event.preventDefault();
|
|
29
|
+
}
|
|
30
|
+
if (event.key === 'ArrowDown' && this.focusPosition < this.spxSuggestions.length - 1) {
|
|
31
|
+
this.focusPosition = this.focusPosition + 1;
|
|
32
|
+
event.preventDefault();
|
|
33
|
+
}
|
|
34
|
+
if (event.key === 'Enter' && this.spxSuggestions.length > 0) {
|
|
35
|
+
this.select(this.spxSuggestions.at(this.focusPosition));
|
|
36
|
+
event.preventDefault();
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
select(valuePair) {
|
|
41
|
+
this.focusPosition = 0;
|
|
42
|
+
this.spxSelect.emit(valuePair);
|
|
43
|
+
}
|
|
44
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SpxDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
45
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: SpxDropdownComponent, isStandalone: true, selector: "spx-dropdown", inputs: { spxSuggestions: "spxSuggestions" }, outputs: { spxSelect: "spxSelect" }, usesOnChanges: true, ngImport: i0, template: `<div class="relative text-black">
|
|
46
|
+
<div
|
|
47
|
+
class="absolute bg-gray-100 left-0 right-0 z-20">
|
|
48
|
+
<button
|
|
49
|
+
*ngFor="let valuePair of this.spxSuggestions; let i = index"
|
|
50
|
+
class="text-black block w-full p-2 border border-gray-200 rounded-lg shadow hover:bg-gray-200 flex items-center text-left"
|
|
51
|
+
[class.bg-gray-100]="i === this.focusPosition"
|
|
52
|
+
[class.bg-white]="i !== this.focusPosition"
|
|
53
|
+
(click)="this.handleSuggestionClick(valuePair)"
|
|
54
|
+
[attr.tabindex]="-1"
|
|
55
|
+
[attr.type]="'button'">
|
|
56
|
+
<div class="flex-1 p-1 font-bold text-lg">{{valuePair?.description}}</div>
|
|
57
|
+
<spx-button (spxClick)="this.handleSuggestionClick(valuePair)" [spxType]="'button'" [spxTabIndex]="-1">Select</spx-button>
|
|
58
|
+
</button>
|
|
59
|
+
</div>
|
|
60
|
+
</div>`, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType"], outputs: ["spxClick"] }] }); }
|
|
61
|
+
}
|
|
62
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SpxDropdownComponent, decorators: [{
|
|
63
|
+
type: Component,
|
|
64
|
+
args: [{
|
|
65
|
+
selector: 'spx-dropdown',
|
|
66
|
+
standalone: true,
|
|
67
|
+
imports: [
|
|
68
|
+
NgIf,
|
|
69
|
+
NgFor,
|
|
70
|
+
SpxButtonComponent,
|
|
71
|
+
],
|
|
72
|
+
template: `<div class="relative text-black">
|
|
73
|
+
<div
|
|
74
|
+
class="absolute bg-gray-100 left-0 right-0 z-20">
|
|
75
|
+
<button
|
|
76
|
+
*ngFor="let valuePair of this.spxSuggestions; let i = index"
|
|
77
|
+
class="text-black block w-full p-2 border border-gray-200 rounded-lg shadow hover:bg-gray-200 flex items-center text-left"
|
|
78
|
+
[class.bg-gray-100]="i === this.focusPosition"
|
|
79
|
+
[class.bg-white]="i !== this.focusPosition"
|
|
80
|
+
(click)="this.handleSuggestionClick(valuePair)"
|
|
81
|
+
[attr.tabindex]="-1"
|
|
82
|
+
[attr.type]="'button'">
|
|
83
|
+
<div class="flex-1 p-1 font-bold text-lg">{{valuePair?.description}}</div>
|
|
84
|
+
<spx-button (spxClick)="this.handleSuggestionClick(valuePair)" [spxType]="'button'" [spxTabIndex]="-1">Select</spx-button>
|
|
85
|
+
</button>
|
|
86
|
+
</div>
|
|
87
|
+
</div>`,
|
|
88
|
+
}]
|
|
89
|
+
}], propDecorators: { spxSuggestions: [{
|
|
90
|
+
type: Input
|
|
91
|
+
}], spxSelect: [{
|
|
92
|
+
type: Output
|
|
93
|
+
}] } });
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtaW5wdXRzL3NweC1kcm9wZG93bi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWdDLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFcEgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBMkIvQyxNQUFNLE9BQU8sb0JBQW9CO0lBekJqQztRQTBCWSxrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUNuQixtQkFBYyxHQUE4QyxFQUFFLENBQUM7UUFDOUQsY0FBUyxHQUFvQyxJQUFJLFlBQVksRUFBcUIsQ0FBQztLQXdDOUY7SUFyQ0MsUUFBUTtRQUNOLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxTQUFrRDtRQUN0RSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3RFLElBQUssS0FBdUIsQ0FBQyxHQUFHLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pFLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7Z0JBQzVDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6QixDQUFDO1lBQ0QsSUFBSyxLQUF1QixDQUFDLEdBQUcsS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDeEcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztnQkFDNUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pCLENBQUM7WUFDRCxJQUFLLEtBQXVCLENBQUMsR0FBRyxLQUFLLE9BQU8sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDL0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFFLENBQUMsQ0FBQztnQkFDekQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxNQUFNLENBQUMsU0FBa0Q7UUFDL0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakMsQ0FBQzs4R0ExQ1Usb0JBQW9CO2tHQUFwQixvQkFBb0IsZ0xBakJyQjs7Ozs7Ozs7Ozs7Ozs7O09BZUwsNERBbEJILEtBQUssbUhBQ0wsa0JBQWtCOzsyRkFtQlQsb0JBQW9CO2tCQXpCaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsY0FBYztvQkFDeEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRTt3QkFDUCxJQUFJO3dCQUNKLEtBQUs7d0JBQ0wsa0JBQWtCO3FCQUNuQjtvQkFDRCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7OztPQWVMO2lCQUNOOzhCQUdVLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0ksU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nRm9yLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTcHhWYWx1ZVBhaXIgfSBmcm9tICcuL3NweC12YWx1ZS1pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU3B4QnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtYnV0dG9uJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NweC1kcm9wZG93bicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBOZ0lmLFxuICAgIE5nRm9yLFxuICAgIFNweEJ1dHRvbkNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgdGV4dC1ibGFja1wiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJhYnNvbHV0ZSBiZy1ncmF5LTEwMCBsZWZ0LTAgcmlnaHQtMCB6LTIwXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0Zvcj1cImxldCB2YWx1ZVBhaXIgb2YgdGhpcy5zcHhTdWdnZXN0aW9uczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgIGNsYXNzPVwidGV4dC1ibGFjayBibG9jayB3LWZ1bGwgcC0yIGJvcmRlciBib3JkZXItZ3JheS0yMDAgcm91bmRlZC1sZyBzaGFkb3cgaG92ZXI6YmctZ3JheS0yMDAgZmxleCBpdGVtcy1jZW50ZXIgdGV4dC1sZWZ0XCJcbiAgICAgICAgW2NsYXNzLmJnLWdyYXktMTAwXT1cImkgPT09IHRoaXMuZm9jdXNQb3NpdGlvblwiXG4gICAgICAgIFtjbGFzcy5iZy13aGl0ZV09XCJpICE9PSB0aGlzLmZvY3VzUG9zaXRpb25cIlxuICAgICAgICAoY2xpY2spPVwidGhpcy5oYW5kbGVTdWdnZXN0aW9uQ2xpY2sodmFsdWVQYWlyKVwiXG4gICAgICAgIFthdHRyLnRhYmluZGV4XT1cIi0xXCJcbiAgICAgICAgW2F0dHIudHlwZV09XCInYnV0dG9uJ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC0xIHAtMSBmb250LWJvbGQgdGV4dC1sZ1wiPnt7dmFsdWVQYWlyPy5kZXNjcmlwdGlvbn19PC9kaXY+XG4gICAgICA8c3B4LWJ1dHRvbiAoc3B4Q2xpY2spPVwidGhpcy5oYW5kbGVTdWdnZXN0aW9uQ2xpY2sodmFsdWVQYWlyKVwiIFtzcHhUeXBlXT1cIididXR0b24nXCIgW3NweFRhYkluZGV4XT1cIi0xXCI+U2VsZWN0PC9zcHgtYnV0dG9uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PmAsXG59KVxuZXhwb3J0IGNsYXNzIFNweERyb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByb3RlY3RlZCBmb2N1c1Bvc2l0aW9uID0gMDtcbiAgQElucHV0KCkgc3B4U3VnZ2VzdGlvbnM6IFNweFZhbHVlUGFpcjxib29sZWFuIHwgbnVtYmVyIHwgc3RyaW5nPltdID0gW107XG4gIEBPdXRwdXQoKSBzcHhTZWxlY3Q6IEV2ZW50RW1pdHRlcjxTcHhWYWx1ZVBhaXI8YW55Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxhbnk+PigpO1xuICBzdWJzY3JpcHRpb25LZXlVcD86IFN1YnNjcmlwdGlvbjtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RlblRvS2V5VXAoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLmZvY3VzUG9zaXRpb24gPSAwO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25LZXlVcD8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGhhbmRsZVN1Z2dlc3Rpb25DbGljayh2YWx1ZVBhaXI6IFNweFZhbHVlUGFpcjxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPikge1xuICAgIHRoaXMuc2VsZWN0KHZhbHVlUGFpcik7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblRvS2V5VXAoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25LZXlVcCA9IGZyb21FdmVudCh3aW5kb3csICdrZXl1cCcpLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgIGlmICgoZXZlbnQgYXMgS2V5Ym9hcmRFdmVudCkua2V5ID09PSAnQXJyb3dVcCcgJiYgdGhpcy5mb2N1c1Bvc2l0aW9uID4gMCkge1xuICAgICAgICB0aGlzLmZvY3VzUG9zaXRpb24gPSB0aGlzLmZvY3VzUG9zaXRpb24gLSAxO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgICAgaWYgKChldmVudCBhcyBLZXlib2FyZEV2ZW50KS5rZXkgPT09ICdBcnJvd0Rvd24nICYmIHRoaXMuZm9jdXNQb3NpdGlvbiA8IHRoaXMuc3B4U3VnZ2VzdGlvbnMubGVuZ3RoIC0gMSkge1xuICAgICAgICB0aGlzLmZvY3VzUG9zaXRpb24gPSB0aGlzLmZvY3VzUG9zaXRpb24gKyAxO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgICAgaWYgKChldmVudCBhcyBLZXlib2FyZEV2ZW50KS5rZXkgPT09ICdFbnRlcicgJiYgdGhpcy5zcHhTdWdnZXN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0KHRoaXMuc3B4U3VnZ2VzdGlvbnMuYXQodGhpcy5mb2N1c1Bvc2l0aW9uKSEpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3QodmFsdWVQYWlyOiBTcHhWYWx1ZVBhaXI8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4pOiB2b2lkIHtcbiAgICB0aGlzLmZvY3VzUG9zaXRpb24gPSAwO1xuICAgIHRoaXMuc3B4U2VsZWN0LmVtaXQodmFsdWVQYWlyKTtcbiAgfVxufVxuIl19
|