@ohioepa/oepa-ui-lib 1.4.14 → 1.4.15
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/lib/date-input/date-input.component.mjs +1 -1
- package/esm2022/lib/date-input-modal/date-input-modal.component.mjs +1 -1
- package/esm2022/lib/datepicker/datepicker.component.mjs +9 -3
- package/fesm2022/ohioepa-oepa-ui-lib.mjs +10 -4
- package/fesm2022/ohioepa-oepa-ui-lib.mjs.map +1 -1
- package/lib/datepicker/datepicker.component.d.ts +5 -1
- package/ohioepa-oepa-ui-lib-1.4.15.tgz +0 -0
- package/package.json +1 -1
- package/ohioepa-oepa-ui-lib-1.4.14.tgz +0 -0
|
@@ -29,7 +29,7 @@ export class DateInputComponent {
|
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
32
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DateInputComponent, selector: "oepa-date-input", inputs: { group: "group", field: "field", tableIdx: "tableIdx", placement: "placement", showValidation: "showValidation", pauseChangeProcessing: "pauseChangeProcessing" }, outputs: { onValueChange: "onValueChange" }, ngImport: i0, template: "<div [formGroup]=\"group\">\n <oepa-datepicker [group]=\"group\" [field]=\"field\" [tableIdx]=\"tableIdx\" \n [placement]=\"placement\" [showValidation]=\"showValidation\"></oepa-datepicker>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i2.DatepickerComponent, selector: "oepa-datepicker", inputs: ["group", "field", "bsConfig", "showValidation", "placement", "tableIdx", "small"] }] });
|
|
32
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DateInputComponent, selector: "oepa-date-input", inputs: { group: "group", field: "field", tableIdx: "tableIdx", placement: "placement", showValidation: "showValidation", pauseChangeProcessing: "pauseChangeProcessing" }, outputs: { onValueChange: "onValueChange" }, ngImport: i0, template: "<div [formGroup]=\"group\">\n <oepa-datepicker [group]=\"group\" [field]=\"field\" [tableIdx]=\"tableIdx\" \n [placement]=\"placement\" [showValidation]=\"showValidation\"></oepa-datepicker>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i2.DatepickerComponent, selector: "oepa-datepicker", inputs: ["group", "field", "bsConfig", "showValidation", "placement", "tableIdx", "small"], exportAs: ["oepa-datepicker"] }] });
|
|
33
33
|
}
|
|
34
34
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateInputComponent, decorators: [{
|
|
35
35
|
type: Component,
|
|
@@ -46,7 +46,7 @@ export class DateInputModalComponent {
|
|
|
46
46
|
this.bsModalRef.hide();
|
|
47
47
|
}
|
|
48
48
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateInputModalComponent, deps: [{ token: i1.BsModalRef }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
49
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DateInputModalComponent, selector: "oepa-date-input-modal", inputs: { title: "title", infoText: "infoText", dateLabel: "dateLabel", submitBtnLabel: "submitBtnLabel", cancelBtnLabel: "cancelBtnLabel", bsConfig: "bsConfig" }, outputs: { onSubmit: "onSubmit", onCancel: "onCancel" }, ngImport: i0, template: "<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">{{title}}</h4>\n <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n <span aria-hidden=\"true\">×</span>\n </button>\n</div>\n<div class=\"modal-body\">\n <div class=\"row\">\n <div *ngIf=\"infoText\" class=\"col-sm-12\">\n <div class=\"alert alert-info\">\n {{infoText}}\n </div>\n </div>\n <div class=\"col-sm-12\">\n <div>\n <label>{{dateLabel}}</label>\n <oepa-datepicker [group]=\"dateForm\" field=\"date\" [bsConfig]=\"bsConfig || {}\" [showValidation]=\"true\"></oepa-datepicker>\n </div>\n </div>\n </div>\n <div *ngIf=\"errorMessage\" class=\"col-sm-12\">\n <div class=\"alert alert-danger\">{{errorMessage}}</div>\n </div>\n</div>\n<div class=\"modal-footer\">\n <button type=\"submit\" class=\"btn btn-primary mr-1\" (click)=\"submit()\" \n [id]=\"'submitDateBtn'\" [disabled]=\"dateForm.status === 'INVALID'\">{{submitBtnLabel}}</button>\n <button [id]=\"'cancelDateInputBtn'\" type=\"button\" class=\"btn btn-primary mr-1\" (click)=\"cancel()\">{{cancelBtnLabel}}</button>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.DatepickerComponent, selector: "oepa-datepicker", inputs: ["group", "field", "bsConfig", "showValidation", "placement", "tableIdx", "small"] }] });
|
|
49
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DateInputModalComponent, selector: "oepa-date-input-modal", inputs: { title: "title", infoText: "infoText", dateLabel: "dateLabel", submitBtnLabel: "submitBtnLabel", cancelBtnLabel: "cancelBtnLabel", bsConfig: "bsConfig" }, outputs: { onSubmit: "onSubmit", onCancel: "onCancel" }, ngImport: i0, template: "<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">{{title}}</h4>\n <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n <span aria-hidden=\"true\">×</span>\n </button>\n</div>\n<div class=\"modal-body\">\n <div class=\"row\">\n <div *ngIf=\"infoText\" class=\"col-sm-12\">\n <div class=\"alert alert-info\">\n {{infoText}}\n </div>\n </div>\n <div class=\"col-sm-12\">\n <div>\n <label>{{dateLabel}}</label>\n <oepa-datepicker [group]=\"dateForm\" field=\"date\" [bsConfig]=\"bsConfig || {}\" [showValidation]=\"true\"></oepa-datepicker>\n </div>\n </div>\n </div>\n <div *ngIf=\"errorMessage\" class=\"col-sm-12\">\n <div class=\"alert alert-danger\">{{errorMessage}}</div>\n </div>\n</div>\n<div class=\"modal-footer\">\n <button type=\"submit\" class=\"btn btn-primary mr-1\" (click)=\"submit()\" \n [id]=\"'submitDateBtn'\" [disabled]=\"dateForm.status === 'INVALID'\">{{submitBtnLabel}}</button>\n <button [id]=\"'cancelDateInputBtn'\" type=\"button\" class=\"btn btn-primary mr-1\" (click)=\"cancel()\">{{cancelBtnLabel}}</button>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.DatepickerComponent, selector: "oepa-datepicker", inputs: ["group", "field", "bsConfig", "showValidation", "placement", "tableIdx", "small"], exportAs: ["oepa-datepicker"] }] });
|
|
50
50
|
}
|
|
51
51
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateInputModalComponent, decorators: [{
|
|
52
52
|
type: Component,
|
|
@@ -6,6 +6,12 @@ import * as i3 from "@angular/forms";
|
|
|
6
6
|
import * as i4 from "ngx-bootstrap/datepicker";
|
|
7
7
|
export class DatepickerComponent {
|
|
8
8
|
idService;
|
|
9
|
+
/**
|
|
10
|
+
* Exposes the input element's id for parent label association.
|
|
11
|
+
*/
|
|
12
|
+
get inputId() {
|
|
13
|
+
return this.componentId + '_Input';
|
|
14
|
+
}
|
|
9
15
|
componentId = 'OepaDatepickerComponent';
|
|
10
16
|
group;
|
|
11
17
|
field;
|
|
@@ -108,11 +114,11 @@ export class DatepickerComponent {
|
|
|
108
114
|
}
|
|
109
115
|
}
|
|
110
116
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatepickerComponent, deps: [{ token: i1.OepaComponentIdService }], target: i0.ɵɵFactoryTarget.Component });
|
|
111
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DatepickerComponent, selector: "oepa-datepicker", inputs: { group: "group", field: "field", bsConfig: "bsConfig", showValidation: "showValidation", placement: "placement", tableIdx: "tableIdx", small: "small" }, usesOnChanges: true, ngImport: i0, template: "\n<div [formGroup]=\"group\">\n <div>\n <div class=\"input-group\">\n <
|
|
117
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DatepickerComponent, selector: "oepa-datepicker", inputs: { group: "group", field: "field", bsConfig: "bsConfig", showValidation: "showValidation", placement: "placement", tableIdx: "tableIdx", small: "small" }, exportAs: ["oepa-datepicker"], usesOnChanges: true, ngImport: i0, template: "\n<div [formGroup]=\"group\">\n <div>\n <div class=\"input-group\">\n <input\n [id]=\"componentId+'_Input'\"\n class=\"form-control\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n #dp=\"bsDatepicker\"\n bsDatepicker\n [formControlName]=\"field\"\n [bsConfig]=\"bsConfig\"\n [isDisabled]=\"group.get('field')?.disabled || false\"\n [placement]=\"getPlacement() || 'bottom'\"\n [ngClass]=\"{'is-invalid':showValidation && !checkValidity()}\"\n (bsValueChange)=\"onValueChange($event)\"\n [attr.aria-describedby]=\"(showValidation && group.get(field)?.invalid) ? (componentId + '_Error') : null\"\n [attr.aria-invalid]=\"showValidation && !checkValidity() ? 'true' : 'false'\"\n autocomplete=\"off\"\n >\n <div class=\"btn-group\" role=\"group\" aria-label=\"Datepicker controls\">\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"dp.toggle()\"\n [id]=\"componentId+'_ToggleBtn'\"\n [disabled]=\"group.get(field)?.disabled\"\n aria-label=\"Open calendar\"\n >\n <i class=\"bi bi-calendar3\" aria-hidden=\"true\"></i>\n </button>\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"clearDate()\"\n [id]=\"componentId+'_ClearBtn'\"\n [disabled]=\"group.get(field)?.disabled\"\n aria-label=\"Clear date\"\n >\n <i class=\"bi bi-x-lg\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n <small\n class=\"invalid-feedback d-block\"\n *ngIf=\"showValidation && group.get(field)?.hasError('required')\"\n [id]=\"componentId+'_Error'\"\n role=\"alert\"\n aria-live=\"assertive\"\n >\n Date is required\n </small>\n <small\n class=\"invalid-feedback d-block\"\n *ngIf=\"showValidation && group.get(field)?.invalid && !group.get(field)?.hasError('required')\"\n [id]=\"componentId+'_Error'\"\n role=\"alert\"\n aria-live=\"assertive\"\n >\n Date is out of range\n </small>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "ignoreMinMaxErrors", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i4.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }] });
|
|
112
118
|
}
|
|
113
119
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatepickerComponent, decorators: [{
|
|
114
120
|
type: Component,
|
|
115
|
-
args: [{ selector: 'oepa-datepicker', template: "\n<div [formGroup]=\"group\">\n <div>\n <div class=\"input-group\">\n <
|
|
121
|
+
args: [{ selector: 'oepa-datepicker', exportAs: 'oepa-datepicker', template: "\n<div [formGroup]=\"group\">\n <div>\n <div class=\"input-group\">\n <input\n [id]=\"componentId+'_Input'\"\n class=\"form-control\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n #dp=\"bsDatepicker\"\n bsDatepicker\n [formControlName]=\"field\"\n [bsConfig]=\"bsConfig\"\n [isDisabled]=\"group.get('field')?.disabled || false\"\n [placement]=\"getPlacement() || 'bottom'\"\n [ngClass]=\"{'is-invalid':showValidation && !checkValidity()}\"\n (bsValueChange)=\"onValueChange($event)\"\n [attr.aria-describedby]=\"(showValidation && group.get(field)?.invalid) ? (componentId + '_Error') : null\"\n [attr.aria-invalid]=\"showValidation && !checkValidity() ? 'true' : 'false'\"\n autocomplete=\"off\"\n >\n <div class=\"btn-group\" role=\"group\" aria-label=\"Datepicker controls\">\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"dp.toggle()\"\n [id]=\"componentId+'_ToggleBtn'\"\n [disabled]=\"group.get(field)?.disabled\"\n aria-label=\"Open calendar\"\n >\n <i class=\"bi bi-calendar3\" aria-hidden=\"true\"></i>\n </button>\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"clearDate()\"\n [id]=\"componentId+'_ClearBtn'\"\n [disabled]=\"group.get(field)?.disabled\"\n aria-label=\"Clear date\"\n >\n <i class=\"bi bi-x-lg\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n <small\n class=\"invalid-feedback d-block\"\n *ngIf=\"showValidation && group.get(field)?.hasError('required')\"\n [id]=\"componentId+'_Error'\"\n role=\"alert\"\n aria-live=\"assertive\"\n >\n Date is required\n </small>\n <small\n class=\"invalid-feedback d-block\"\n *ngIf=\"showValidation && group.get(field)?.invalid && !group.get(field)?.hasError('required')\"\n [id]=\"componentId+'_Error'\"\n role=\"alert\"\n aria-live=\"assertive\"\n >\n Date is out of range\n </small>\n </div>\n</div>\n" }]
|
|
116
122
|
}], ctorParameters: () => [{ type: i1.OepaComponentIdService }], propDecorators: { group: [{
|
|
117
123
|
type: Input
|
|
118
124
|
}], field: [{
|
|
@@ -128,4 +134,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
128
134
|
}], small: [{
|
|
129
135
|
type: Input
|
|
130
136
|
}] } });
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBb0MsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVluRixNQUFNLE9BQU8sbUJBQW1CO0lBOEJWO0lBN0JiLFdBQVcsR0FBRyx5QkFBeUIsQ0FBQztJQUN0QyxLQUFLLENBQWE7SUFDbEIsS0FBSyxDQUFVO0lBQ2YsUUFBUSxDQUErQjtJQUN2QyxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLFNBQVMsQ0FBVTtJQUNuQixRQUFRLENBQXFCO0lBQzdCLEtBQUssR0FBRyxLQUFLLENBQUM7SUFFaEIsT0FBTyxDQUFvQjtJQUMzQixPQUFPLENBQW9CO0lBQzNCLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFFbkIsWUFBWTtRQUNqQixRQUFRLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN2QixLQUFLLEtBQUs7Z0JBQ1IsT0FBTyxLQUFLLENBQUM7Z0JBQ2IsTUFBTTtZQUNSLEtBQUssTUFBTTtnQkFDVCxPQUFPLE1BQU0sQ0FBQztnQkFDZCxNQUFNO1lBQ1IsS0FBSyxPQUFPO2dCQUNWLE9BQU8sT0FBTyxDQUFDO2dCQUNmLE1BQU07WUFDUjtnQkFDRSxPQUFPLFFBQVEsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQW9CLFNBQWlDO1FBQWpDLGNBQVMsR0FBVCxTQUFTLENBQXdCO0lBQUksQ0FBQztJQUUxRCxhQUFhO1FBQ1gsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENB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RSxpQkFBaUI7MkZBTWxCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBCc0RhdGVwaWNrZXJDb25maWcgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2RhdGVwaWNrZXInO1xuXG5pbXBvcnQgeyBPZXBhQ29tcG9uZW50SWRTZXJ2aWNlIH0gZnJvbSAnQG9oaW9lcGEvb2VwYS1jb21tb24tbGliJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2VwYS1kYXRlcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlcGlja2VyLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlcGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBwdWJsaWMgY29tcG9uZW50SWQgPSAnT2VwYURhdGVwaWNrZXJDb21wb25lbnQnO1xuICBASW5wdXQoKSBncm91cCE6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgZmllbGQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGJzQ29uZmlnITogUGFydGlhbDxCc0RhdGVwaWNrZXJDb25maWc+O1xuICBASW5wdXQoKSBzaG93VmFsaWRhdGlvbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwbGFjZW1lbnQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRhYmxlSWR4OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIHNtYWxsID0gZmFsc2U7XG5cbiAgcHVibGljIG1pbkRhdGUhOiBEYXRlIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgbWF4RGF0ZSE6IERhdGUgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyBpc0Rpc2FibGVkID0gZmFsc2U7XG5cbiAgcHVibGljIGdldFBsYWNlbWVudCgpIDogJ3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCcge1xuICAgIHN3aXRjaCAodGhpcy5wbGFjZW1lbnQpIHtcbiAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgIHJldHVybiAndG9wJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgcmV0dXJuICdsZWZ0JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIHJldHVybiAncmlnaHQnO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnYm90dG9tJztcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGlkU2VydmljZTogT2VwYUNvbXBvbmVudElkU2VydmljZSkgeyB9XG5cbiAgY2hlY2tWYWxpZGl0eSgpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmdyb3VwLmNvbnRyb2xzKSB7XG4gICAgICBpZiAodGhpcy5ncm91cC5jb250cm9scy5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIGtleSA9PT0gdGhpcy5maWVsZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ncm91cC5jb250cm9sc1trZXldLnN0YXR1cyAhPT0gJ0lOVkFMSUQnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNsZWFyRGF0ZSgpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmdyb3VwLmNvbnRyb2xzKSB7XG4gICAgICBpZiAodGhpcy5ncm91cC5jb250cm9scy5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIGtleSA9PT0gdGhpcy5maWVsZCkge1xuICAgICAgICB0aGlzLmdyb3VwLmNvbnRyb2xzW2tleV0uc2V0VmFsdWUobnVsbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuYnNDb25maWcpIHtcbiAgICAgIGlmICh0aGlzLmJzQ29uZmlnLm1pbkRhdGUpIHtcbiAgICAgICAgdGhpcy5taW5EYXRlID0gdGhpcy5ic0NvbmZpZy5taW5EYXRlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5taW5EYXRlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuYnNDb25maWcubWF4RGF0ZSkge1xuICAgICAgICB0aGlzLm1heERhdGUgPSB0aGlzLmJzQ29uZmlnLm1heERhdGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1heERhdGUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5ic0NvbmZpZy5pc0Rpc2FibGVkKSB7XG4gICAgICAgIHRoaXMuaXNEaXNhYmxlZCA9IHRoaXMuYnNDb25maWcuaXNEaXNhYmxlZDsgLy8gZGVmYXVsdHMgdG8gZmFsc2VcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ic0NvbmZpZyA9IHt9O1xuICAgIH1cbiAgICB0aGlzLmJzQ29uZmlnLnNob3dXZWVrTnVtYmVycyA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmdyb3VwKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudElkID0gdGhpcy5pZFNlcnZpY2UuZ2V0Q29tcG9uZW50SWQodGhpcy5ncm91cCk7XG4gICAgICB0aGlzLmNvbXBvbmVudElkICs9ICh0aGlzLmNvbXBvbmVudElkLmxlbmd0aCA+IDAgPyAnXycgOiAnJykgKyAodGhpcy5maWVsZCB8fCAnJykgKyAodGhpcy50YWJsZUlkeCB8fCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKCdPT1BTIE5vIGRhdGVwaWNrZXJGb3JtIHlldCcpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGZvcmNlIHZhbHVlIHRvIG51bGwgaW4gY2FzZSB3aGVyZSB1c2VyIGVudGVycyBub24tbnVtZXJpYyB2YWx1ZXNcbiAgLy8gaW4gdGhlIGZpZWxkLiBUaGUgXCJub3JtYWxcIiBiZWhhdmlvciBvZiB0aGUgbmd4LWJvb3RzdHJhcCBkYXRlcGlja2VyXG4gIC8vIGlzIHRvIHNldCB0aGUgaW5wdXQgdmFsdWUgdG8gXCJJbnZhbGlkIERhdGVcIi4gVW5mb3J0dW5hdGVseSwgdGhpcyBtZXNzZXNcbiAgLy8gdXAgdmFsaWRhdGlvbi4gVGhlIG1ldGhvZCBiZWxvdyB3aWxsIGZvcmNlIHRoZSBpbnB1dCB2YWx1ZSB0byBudWxsXG4gIC8vIGluIHRoaXMgY2FzZSB3aGljaCB3aWxsIGVuc3VyZSB0aGF0IHZhbGlkYXRpb24gd29ya3MgcHJvcGVybHkuXG4gIG9uVmFsdWVDaGFuZ2UoZXZlbnQ6YW55KSB7XG4gICAgLy8gdGltZW91dCBpcyBuZWVkZWQgdG8gbWFrZSB0aGlzIHdvcmsgcHJvcGVybHlcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmdyb3VwICYmIHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5maWVsZF0pIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdyb3VwLmNvbnRyb2xzW3RoaXMuZmllbGRdLnZhbHVlO1xuICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUudG9KU09OKCkgPT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmdyb3VwLmNvbnRyb2xzW3RoaXMuZmllbGRdLnNldFZhbHVlKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5maWVsZF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgfVxuICAgIH0sIDUwKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snYnNDb25maWcnXSkge1xuICAgICAgaWYgKGNoYW5nZXNbJ2JzQ29uZmlnJ10uY3VycmVudFZhbHVlLm1pbkRhdGUgfHwgY2hhbmdlc1snYnNDb25maWcnXS5jdXJyZW50VmFsdWUubWluRGF0ZSA9PSBudWxsKSB7XG4gICAgICAgIHRoaXMubWluRGF0ZSA9IGNoYW5nZXNbJ2JzQ29uZmlnJ10uY3VycmVudFZhbHVlLm1pbkRhdGU7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFuZ2VzWydic0NvbmZpZyddLmN1cnJlbnRWYWx1ZS5tYXhEYXRlIHx8IGNoYW5nZXNbJ2JzQ29uZmlnJ10uY3VycmVudFZhbHVlLm1heERhdGUgPT0gbnVsbCkge1xuICAgICAgICB0aGlzLm1heERhdGUgPSBjaGFuZ2VzWydic0NvbmZpZyddLmN1cnJlbnRWYWx1ZS5tYXhEYXRlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG59XG4iLCJcbjxkaXYgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxuICA8ZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgPGxhYmVsIFtmb3JdPVwiY29tcG9uZW50SWQrJ19JbnB1dCdcIiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiIFtpZF09XCJjb21wb25lbnRJZCsnX0xhYmVsJ1wiPlxuICAgICAgICBEYXRlIFBpY2tlclxuICAgICAgPC9sYWJlbD5cbiAgICAgIDxpbnB1dFxuICAgICAgICBbaWRdPVwiY29tcG9uZW50SWQrJ19JbnB1dCdcIlxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxuICAgICAgICBbbWF4RGF0ZV09XCJtYXhEYXRlXCJcbiAgICAgICAgI2RwPVwiYnNEYXRlcGlja2VyXCJcbiAgICAgICAgYnNEYXRlcGlja2VyXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGRcIlxuICAgICAgICBbYnNDb25maWddPVwiYnNDb25maWdcIlxuICAgICAgICBbaXNEaXNhYmxlZF09XCJncm91cC5nZXQoJ2ZpZWxkJyk/LmRpc2FibGVkIHx8IGZhbHNlXCJcbiAgICAgICAgW3BsYWNlbWVudF09XCJnZXRQbGFjZW1lbnQoKSAgfHwgJ2JvdHRvbSdcIlxuICAgICAgICBbbmdDbGFzc109XCJ7J2lzLWludmFsaWQnOnNob3dWYWxpZGF0aW9uICYmICFjaGVja1ZhbGlkaXR5KCl9XCJcbiAgICAgICAgKGJzVmFsdWVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImNvbXBvbmVudElkICsgJ19MYWJlbCdcIlxuICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImNvbXBvbmVudElkICsgJ19FcnJvcidcIlxuICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwic2hvd1ZhbGlkYXRpb24gJiYgIWNoZWNrVmFsaWRpdHkoKSA/ICd0cnVlJyA6ICdmYWxzZSdcIlxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWw9XCJEYXRlcGlja2VyIGNvbnRyb2xzXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgKGNsaWNrKT1cImRwLnRvZ2dsZSgpXCJcbiAgICAgICAgICBbaWRdPVwiY29tcG9uZW50SWQrJ19Ub2dnbGVCdG4nXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZ3JvdXAuZ2V0KGZpZWxkKT8uZGlzYWJsZWRcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJPcGVuIGNhbGVuZGFyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIGNsYXNzPVwiYmkgYmktY2FsZW5kYXIzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICAoY2xpY2spPVwiY2xlYXJEYXRlKClcIlxuICAgICAgICAgIFtpZF09XCJjb21wb25lbnRJZCsnX0NsZWFyQnRuJ1wiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImdyb3VwLmdldChmaWVsZCk/LmRpc2FibGVkXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXIgZGF0ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjbGFzcz1cImJpIGJpLXgtbGdcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPHNtYWxsXG4gICAgICBjbGFzcz1cImludmFsaWQtZmVlZGJhY2sgZC1ibG9ja1wiXG4gICAgICAqbmdJZj1cInNob3dWYWxpZGF0aW9uICYmIGdyb3VwLmdldChmaWVsZCk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCJcbiAgICAgIFtpZF09XCJjb21wb25lbnRJZCsnX0Vycm9yJ1wiXG4gICAgICByb2xlPVwiYWxlcnRcIlxuICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCJcbiAgICA+XG4gICAgICBEYXRlIGlzIHJlcXVpcmVkXG4gICAgPC9zbWFsbD5cbiAgICA8c21hbGxcbiAgICAgIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFjayBkLWJsb2NrXCJcbiAgICAgICpuZ0lmPVwic2hvd1ZhbGlkYXRpb24gJiYgZ3JvdXAuZ2V0KGZpZWxkKT8uaW52YWxpZCAmJiAhZ3JvdXAuZ2V0KGZpZWxkKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIlxuICAgICAgW2lkXT1cImNvbXBvbmVudElkKydfRXJyb3InXCJcbiAgICAgIHJvbGU9XCJhbGVydFwiXG4gICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIlxuICAgID5cbiAgICAgIERhdGUgaXMgb3V0IG9mIHJhbmdlXG4gICAgPC9zbWFsbD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBb0MsTUFBTSxlQUFlLENBQUM7Ozs7OztBQWFuRixNQUFNLE9BQU8sbUJBQW1CO0lBb0NWO0lBbkNwQjs7T0FFRztJQUNILElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDO0lBQ3JDLENBQUM7SUFDTSxXQUFXLEdBQUcseUJBQXlCLENBQUM7SUFDdEMsS0FBSyxDQUFhO0lBQ2xCLEtBQUssQ0FBVTtJQUNmLFFBQVEsQ0FBK0I7SUFDdkMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUN2QixTQUFTLENBQVU7SUFDbkIsUUFBUSxDQUFxQjtJQUM3QixLQUFLLEdBQUcsS0FBSyxDQUFDO0lBRWhCLE9BQU8sQ0FBb0I7SUFDM0IsT0FBTyxDQUFvQjtJQUMzQixVQUFVLEdBQUcsS0FBSyxDQUFDO0lBRW5CLFlBQVk7UUFDakIsUUFBUSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdkIsS0FBSyxLQUFLO2dCQUNSLE9BQU8sS0FBSyxDQUFDO2dCQUNiLE1BQU07WUFDUixLQUFLLE1BQU07Z0JBQ1QsT0FBTyxNQUFNLENBQUM7Z0JBQ2QsTUFBTTtZQUNSLEtBQUssT0FBTztnQkFDVixPQUFPLE9BQU8sQ0FBQztnQkFDZixNQUFNO1lBQ1I7Z0JBQ0UsT0FBTyxRQUFRLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFFRCxZQUFvQixTQUFpQztR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Q0FBQzt3R0E5R1UsbUJBQW1COzRGQUFuQixtQkFBbUIsNlFDYmhDLDhwRUFnRUE7OzRGRG5EYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0UsaUJBQWlCLFlBR2pCLGlCQUFpQjsyRkFVbEIsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IEJzRGF0ZXBpY2tlckNvbmZpZyB9IGZyb20gJ25neC1ib290c3RyYXAvZGF0ZXBpY2tlcic7XG5cbmltcG9ydCB7IE9lcGFDb21wb25lbnRJZFNlcnZpY2UgfSBmcm9tICdAb2hpb2VwYS9vZXBhLWNvbW1vbi1saWInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvZXBhLWRhdGVwaWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGVwaWNrZXIuY29tcG9uZW50LmNzcyddLFxuICBleHBvcnRBczogJ29lcGEtZGF0ZXBpY2tlcidcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZXBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgLyoqXG4gICAqIEV4cG9zZXMgdGhlIGlucHV0IGVsZW1lbnQncyBpZCBmb3IgcGFyZW50IGxhYmVsIGFzc29jaWF0aW9uLlxuICAgKi9cbiAgcHVibGljIGdldCBpbnB1dElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50SWQgKyAnX0lucHV0JztcbiAgfVxuICBwdWJsaWMgY29tcG9uZW50SWQgPSAnT2VwYURhdGVwaWNrZXJDb21wb25lbnQnO1xuICBASW5wdXQoKSBncm91cCE6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgZmllbGQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGJzQ29uZmlnITogUGFydGlhbDxCc0RhdGVwaWNrZXJDb25maWc+O1xuICBASW5wdXQoKSBzaG93VmFsaWRhdGlvbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwbGFjZW1lbnQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRhYmxlSWR4OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIHNtYWxsID0gZmFsc2U7XG5cbiAgcHVibGljIG1pbkRhdGUhOiBEYXRlIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgbWF4RGF0ZSE6IERhdGUgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyBpc0Rpc2FibGVkID0gZmFsc2U7XG5cbiAgcHVibGljIGdldFBsYWNlbWVudCgpIDogJ3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCcge1xuICAgIHN3aXRjaCAodGhpcy5wbGFjZW1lbnQpIHtcbiAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgIHJldHVybiAndG9wJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgcmV0dXJuICdsZWZ0JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIHJldHVybiAncmlnaHQnO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnYm90dG9tJztcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGlkU2VydmljZTogT2VwYUNvbXBvbmVudElkU2VydmljZSkgeyB9XG5cbiAgY2hlY2tWYWxpZGl0eSgpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmdyb3VwLmNvbnRyb2xzKSB7XG4gICAgICBpZiAodGhpcy5ncm91cC5jb250cm9scy5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIGtleSA9PT0gdGhpcy5maWVsZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ncm91cC5jb250cm9sc1trZXldLnN0YXR1cyAhPT0gJ0lOVkFMSUQnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNsZWFyRGF0ZSgpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmdyb3VwLmNvbnRyb2xzKSB7XG4gICAgICBpZiAodGhpcy5ncm91cC5jb250cm9scy5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIGtleSA9PT0gdGhpcy5maWVsZCkge1xuICAgICAgICB0aGlzLmdyb3VwLmNvbnRyb2xzW2tleV0uc2V0VmFsdWUobnVsbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuYnNDb25maWcpIHtcbiAgICAgIGlmICh0aGlzLmJzQ29uZmlnLm1pbkRhdGUpIHtcbiAgICAgICAgdGhpcy5taW5EYXRlID0gdGhpcy5ic0NvbmZpZy5taW5EYXRlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5taW5EYXRlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuYnNDb25maWcubWF4RGF0ZSkge1xuICAgICAgICB0aGlzLm1heERhdGUgPSB0aGlzLmJzQ29uZmlnLm1heERhdGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1heERhdGUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5ic0NvbmZpZy5pc0Rpc2FibGVkKSB7XG4gICAgICAgIHRoaXMuaXNEaXNhYmxlZCA9IHRoaXMuYnNDb25maWcuaXNEaXNhYmxlZDsgLy8gZGVmYXVsdHMgdG8gZmFsc2VcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ic0NvbmZpZyA9IHt9O1xuICAgIH1cbiAgICB0aGlzLmJzQ29uZmlnLnNob3dXZWVrTnVtYmVycyA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmdyb3VwKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudElkID0gdGhpcy5pZFNlcnZpY2UuZ2V0Q29tcG9uZW50SWQodGhpcy5ncm91cCk7XG4gICAgICB0aGlzLmNvbXBvbmVudElkICs9ICh0aGlzLmNvbXBvbmVudElkLmxlbmd0aCA+IDAgPyAnXycgOiAnJykgKyAodGhpcy5maWVsZCB8fCAnJykgKyAodGhpcy50YWJsZUlkeCB8fCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKCdPT1BTIE5vIGRhdGVwaWNrZXJGb3JtIHlldCcpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGZvcmNlIHZhbHVlIHRvIG51bGwgaW4gY2FzZSB3aGVyZSB1c2VyIGVudGVycyBub24tbnVtZXJpYyB2YWx1ZXNcbiAgLy8gaW4gdGhlIGZpZWxkLiBUaGUgXCJub3JtYWxcIiBiZWhhdmlvciBvZiB0aGUgbmd4LWJvb3RzdHJhcCBkYXRlcGlja2VyXG4gIC8vIGlzIHRvIHNldCB0aGUgaW5wdXQgdmFsdWUgdG8gXCJJbnZhbGlkIERhdGVcIi4gVW5mb3J0dW5hdGVseSwgdGhpcyBtZXNzZXNcbiAgLy8gdXAgdmFsaWRhdGlvbi4gVGhlIG1ldGhvZCBiZWxvdyB3aWxsIGZvcmNlIHRoZSBpbnB1dCB2YWx1ZSB0byBudWxsXG4gIC8vIGluIHRoaXMgY2FzZSB3aGljaCB3aWxsIGVuc3VyZSB0aGF0IHZhbGlkYXRpb24gd29ya3MgcHJvcGVybHkuXG4gIG9uVmFsdWVDaGFuZ2UoZXZlbnQ6YW55KSB7XG4gICAgLy8gdGltZW91dCBpcyBuZWVkZWQgdG8gbWFrZSB0aGlzIHdvcmsgcHJvcGVybHlcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmdyb3VwICYmIHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5maWVsZF0pIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdyb3VwLmNvbnRyb2xzW3RoaXMuZmllbGRdLnZhbHVlO1xuICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUudG9KU09OKCkgPT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmdyb3VwLmNvbnRyb2xzW3RoaXMuZmllbGRdLnNldFZhbHVlKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5maWVsZF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgfVxuICAgIH0sIDUwKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snYnNDb25maWcnXSkge1xuICAgICAgaWYgKGNoYW5nZXNbJ2JzQ29uZmlnJ10uY3VycmVudFZhbHVlLm1pbkRhdGUgfHwgY2hhbmdlc1snYnNDb25maWcnXS5jdXJyZW50VmFsdWUubWluRGF0ZSA9PSBudWxsKSB7XG4gICAgICAgIHRoaXMubWluRGF0ZSA9IGNoYW5nZXNbJ2JzQ29uZmlnJ10uY3VycmVudFZhbHVlLm1pbkRhdGU7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFuZ2VzWydic0NvbmZpZyddLmN1cnJlbnRWYWx1ZS5tYXhEYXRlIHx8IGNoYW5nZXNbJ2JzQ29uZmlnJ10uY3VycmVudFZhbHVlLm1heERhdGUgPT0gbnVsbCkge1xuICAgICAgICB0aGlzLm1heERhdGUgPSBjaGFuZ2VzWydic0NvbmZpZyddLmN1cnJlbnRWYWx1ZS5tYXhEYXRlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG59XG4iLCJcbjxkaXYgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxuICA8ZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIFtpZF09XCJjb21wb25lbnRJZCsnX0lucHV0J1wiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXG4gICAgICAgIFttYXhEYXRlXT1cIm1heERhdGVcIlxuICAgICAgICAjZHA9XCJic0RhdGVwaWNrZXJcIlxuICAgICAgICBic0RhdGVwaWNrZXJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZFwiXG4gICAgICAgIFtic0NvbmZpZ109XCJic0NvbmZpZ1wiXG4gICAgICAgIFtpc0Rpc2FibGVkXT1cImdyb3VwLmdldCgnZmllbGQnKT8uZGlzYWJsZWQgfHwgZmFsc2VcIlxuICAgICAgICBbcGxhY2VtZW50XT1cImdldFBsYWNlbWVudCgpICB8fCAnYm90dG9tJ1wiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsnaXMtaW52YWxpZCc6c2hvd1ZhbGlkYXRpb24gJiYgIWNoZWNrVmFsaWRpdHkoKX1cIlxuICAgICAgICAoYnNWYWx1ZUNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cIihzaG93VmFsaWRhdGlvbiAmJiBncm91cC5nZXQoZmllbGQpPy5pbnZhbGlkKSA/IChjb21wb25lbnRJZCArICdfRXJyb3InKSA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwic2hvd1ZhbGlkYXRpb24gJiYgIWNoZWNrVmFsaWRpdHkoKSA/ICd0cnVlJyA6ICdmYWxzZSdcIlxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWw9XCJEYXRlcGlja2VyIGNvbnRyb2xzXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgKGNsaWNrKT1cImRwLnRvZ2dsZSgpXCJcbiAgICAgICAgICBbaWRdPVwiY29tcG9uZW50SWQrJ19Ub2dnbGVCdG4nXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZ3JvdXAuZ2V0KGZpZWxkKT8uZGlzYWJsZWRcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJPcGVuIGNhbGVuZGFyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIGNsYXNzPVwiYmkgYmktY2FsZW5kYXIzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICAoY2xpY2spPVwiY2xlYXJEYXRlKClcIlxuICAgICAgICAgIFtpZF09XCJjb21wb25lbnRJZCsnX0NsZWFyQnRuJ1wiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImdyb3VwLmdldChmaWVsZCk/LmRpc2FibGVkXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXIgZGF0ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjbGFzcz1cImJpIGJpLXgtbGdcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPHNtYWxsXG4gICAgICBjbGFzcz1cImludmFsaWQtZmVlZGJhY2sgZC1ibG9ja1wiXG4gICAgICAqbmdJZj1cInNob3dWYWxpZGF0aW9uICYmIGdyb3VwLmdldChmaWVsZCk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCJcbiAgICAgIFtpZF09XCJjb21wb25lbnRJZCsnX0Vycm9yJ1wiXG4gICAgICByb2xlPVwiYWxlcnRcIlxuICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCJcbiAgICA+XG4gICAgICBEYXRlIGlzIHJlcXVpcmVkXG4gICAgPC9zbWFsbD5cbiAgICA8c21hbGxcbiAgICAgIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFjayBkLWJsb2NrXCJcbiAgICAgICpuZ0lmPVwic2hvd1ZhbGlkYXRpb24gJiYgZ3JvdXAuZ2V0KGZpZWxkKT8uaW52YWxpZCAmJiAhZ3JvdXAuZ2V0KGZpZWxkKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIlxuICAgICAgW2lkXT1cImNvbXBvbmVudElkKydfRXJyb3InXCJcbiAgICAgIHJvbGU9XCJhbGVydFwiXG4gICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIlxuICAgID5cbiAgICAgIERhdGUgaXMgb3V0IG9mIHJhbmdlXG4gICAgPC9zbWFsbD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -387,6 +387,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
387
387
|
|
|
388
388
|
class DatepickerComponent {
|
|
389
389
|
idService;
|
|
390
|
+
/**
|
|
391
|
+
* Exposes the input element's id for parent label association.
|
|
392
|
+
*/
|
|
393
|
+
get inputId() {
|
|
394
|
+
return this.componentId + '_Input';
|
|
395
|
+
}
|
|
390
396
|
componentId = 'OepaDatepickerComponent';
|
|
391
397
|
group;
|
|
392
398
|
field;
|
|
@@ -489,11 +495,11 @@ class DatepickerComponent {
|
|
|
489
495
|
}
|
|
490
496
|
}
|
|
491
497
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatepickerComponent, deps: [{ token: i1$1.OepaComponentIdService }], target: i0.ɵɵFactoryTarget.Component });
|
|
492
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DatepickerComponent, selector: "oepa-datepicker", inputs: { group: "group", field: "field", bsConfig: "bsConfig", showValidation: "showValidation", placement: "placement", tableIdx: "tableIdx", small: "small" }, usesOnChanges: true, ngImport: i0, template: "\n<div [formGroup]=\"group\">\n <div>\n <div class=\"input-group\">\n <
|
|
498
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DatepickerComponent, selector: "oepa-datepicker", inputs: { group: "group", field: "field", bsConfig: "bsConfig", showValidation: "showValidation", placement: "placement", tableIdx: "tableIdx", small: "small" }, exportAs: ["oepa-datepicker"], usesOnChanges: true, ngImport: i0, template: "\n<div [formGroup]=\"group\">\n <div>\n <div class=\"input-group\">\n <input\n [id]=\"componentId+'_Input'\"\n class=\"form-control\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n #dp=\"bsDatepicker\"\n bsDatepicker\n [formControlName]=\"field\"\n [bsConfig]=\"bsConfig\"\n [isDisabled]=\"group.get('field')?.disabled || false\"\n [placement]=\"getPlacement() || 'bottom'\"\n [ngClass]=\"{'is-invalid':showValidation && !checkValidity()}\"\n (bsValueChange)=\"onValueChange($event)\"\n [attr.aria-describedby]=\"(showValidation && group.get(field)?.invalid) ? (componentId + '_Error') : null\"\n [attr.aria-invalid]=\"showValidation && !checkValidity() ? 'true' : 'false'\"\n autocomplete=\"off\"\n >\n <div class=\"btn-group\" role=\"group\" aria-label=\"Datepicker controls\">\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"dp.toggle()\"\n [id]=\"componentId+'_ToggleBtn'\"\n [disabled]=\"group.get(field)?.disabled\"\n aria-label=\"Open calendar\"\n >\n <i class=\"bi bi-calendar3\" aria-hidden=\"true\"></i>\n </button>\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"clearDate()\"\n [id]=\"componentId+'_ClearBtn'\"\n [disabled]=\"group.get(field)?.disabled\"\n aria-label=\"Clear date\"\n >\n <i class=\"bi bi-x-lg\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n <small\n class=\"invalid-feedback d-block\"\n *ngIf=\"showValidation && group.get(field)?.hasError('required')\"\n [id]=\"componentId+'_Error'\"\n role=\"alert\"\n aria-live=\"assertive\"\n >\n Date is required\n </small>\n <small\n class=\"invalid-feedback d-block\"\n *ngIf=\"showValidation && group.get(field)?.invalid && !group.get(field)?.hasError('required')\"\n [id]=\"componentId+'_Error'\"\n role=\"alert\"\n aria-live=\"assertive\"\n >\n Date is out of range\n </small>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.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: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "ignoreMinMaxErrors", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i4.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }] });
|
|
493
499
|
}
|
|
494
500
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatepickerComponent, decorators: [{
|
|
495
501
|
type: Component,
|
|
496
|
-
args: [{ selector: 'oepa-datepicker', template: "\n<div [formGroup]=\"group\">\n <div>\n <div class=\"input-group\">\n <
|
|
502
|
+
args: [{ selector: 'oepa-datepicker', exportAs: 'oepa-datepicker', template: "\n<div [formGroup]=\"group\">\n <div>\n <div class=\"input-group\">\n <input\n [id]=\"componentId+'_Input'\"\n class=\"form-control\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n #dp=\"bsDatepicker\"\n bsDatepicker\n [formControlName]=\"field\"\n [bsConfig]=\"bsConfig\"\n [isDisabled]=\"group.get('field')?.disabled || false\"\n [placement]=\"getPlacement() || 'bottom'\"\n [ngClass]=\"{'is-invalid':showValidation && !checkValidity()}\"\n (bsValueChange)=\"onValueChange($event)\"\n [attr.aria-describedby]=\"(showValidation && group.get(field)?.invalid) ? (componentId + '_Error') : null\"\n [attr.aria-invalid]=\"showValidation && !checkValidity() ? 'true' : 'false'\"\n autocomplete=\"off\"\n >\n <div class=\"btn-group\" role=\"group\" aria-label=\"Datepicker controls\">\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"dp.toggle()\"\n [id]=\"componentId+'_ToggleBtn'\"\n [disabled]=\"group.get(field)?.disabled\"\n aria-label=\"Open calendar\"\n >\n <i class=\"bi bi-calendar3\" aria-hidden=\"true\"></i>\n </button>\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"clearDate()\"\n [id]=\"componentId+'_ClearBtn'\"\n [disabled]=\"group.get(field)?.disabled\"\n aria-label=\"Clear date\"\n >\n <i class=\"bi bi-x-lg\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n <small\n class=\"invalid-feedback d-block\"\n *ngIf=\"showValidation && group.get(field)?.hasError('required')\"\n [id]=\"componentId+'_Error'\"\n role=\"alert\"\n aria-live=\"assertive\"\n >\n Date is required\n </small>\n <small\n class=\"invalid-feedback d-block\"\n *ngIf=\"showValidation && group.get(field)?.invalid && !group.get(field)?.hasError('required')\"\n [id]=\"componentId+'_Error'\"\n role=\"alert\"\n aria-live=\"assertive\"\n >\n Date is out of range\n </small>\n </div>\n</div>\n" }]
|
|
497
503
|
}], ctorParameters: () => [{ type: i1$1.OepaComponentIdService }], propDecorators: { group: [{
|
|
498
504
|
type: Input
|
|
499
505
|
}], field: [{
|
|
@@ -5965,7 +5971,7 @@ class DateInputModalComponent {
|
|
|
5965
5971
|
this.bsModalRef.hide();
|
|
5966
5972
|
}
|
|
5967
5973
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateInputModalComponent, deps: [{ token: i2$1.BsModalRef }, { token: i1$2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
5968
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DateInputModalComponent, selector: "oepa-date-input-modal", inputs: { title: "title", infoText: "infoText", dateLabel: "dateLabel", submitBtnLabel: "submitBtnLabel", cancelBtnLabel: "cancelBtnLabel", bsConfig: "bsConfig" }, outputs: { onSubmit: "onSubmit", onCancel: "onCancel" }, ngImport: i0, template: "<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">{{title}}</h4>\n <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n <span aria-hidden=\"true\">×</span>\n </button>\n</div>\n<div class=\"modal-body\">\n <div class=\"row\">\n <div *ngIf=\"infoText\" class=\"col-sm-12\">\n <div class=\"alert alert-info\">\n {{infoText}}\n </div>\n </div>\n <div class=\"col-sm-12\">\n <div>\n <label>{{dateLabel}}</label>\n <oepa-datepicker [group]=\"dateForm\" field=\"date\" [bsConfig]=\"bsConfig || {}\" [showValidation]=\"true\"></oepa-datepicker>\n </div>\n </div>\n </div>\n <div *ngIf=\"errorMessage\" class=\"col-sm-12\">\n <div class=\"alert alert-danger\">{{errorMessage}}</div>\n </div>\n</div>\n<div class=\"modal-footer\">\n <button type=\"submit\" class=\"btn btn-primary mr-1\" (click)=\"submit()\" \n [id]=\"'submitDateBtn'\" [disabled]=\"dateForm.status === 'INVALID'\">{{submitBtnLabel}}</button>\n <button [id]=\"'cancelDateInputBtn'\" type=\"button\" class=\"btn btn-primary mr-1\" (click)=\"cancel()\">{{cancelBtnLabel}}</button>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DatepickerComponent, selector: "oepa-datepicker", inputs: ["group", "field", "bsConfig", "showValidation", "placement", "tableIdx", "small"] }] });
|
|
5974
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DateInputModalComponent, selector: "oepa-date-input-modal", inputs: { title: "title", infoText: "infoText", dateLabel: "dateLabel", submitBtnLabel: "submitBtnLabel", cancelBtnLabel: "cancelBtnLabel", bsConfig: "bsConfig" }, outputs: { onSubmit: "onSubmit", onCancel: "onCancel" }, ngImport: i0, template: "<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">{{title}}</h4>\n <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n <span aria-hidden=\"true\">×</span>\n </button>\n</div>\n<div class=\"modal-body\">\n <div class=\"row\">\n <div *ngIf=\"infoText\" class=\"col-sm-12\">\n <div class=\"alert alert-info\">\n {{infoText}}\n </div>\n </div>\n <div class=\"col-sm-12\">\n <div>\n <label>{{dateLabel}}</label>\n <oepa-datepicker [group]=\"dateForm\" field=\"date\" [bsConfig]=\"bsConfig || {}\" [showValidation]=\"true\"></oepa-datepicker>\n </div>\n </div>\n </div>\n <div *ngIf=\"errorMessage\" class=\"col-sm-12\">\n <div class=\"alert alert-danger\">{{errorMessage}}</div>\n </div>\n</div>\n<div class=\"modal-footer\">\n <button type=\"submit\" class=\"btn btn-primary mr-1\" (click)=\"submit()\" \n [id]=\"'submitDateBtn'\" [disabled]=\"dateForm.status === 'INVALID'\">{{submitBtnLabel}}</button>\n <button [id]=\"'cancelDateInputBtn'\" type=\"button\" class=\"btn btn-primary mr-1\" (click)=\"cancel()\">{{cancelBtnLabel}}</button>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DatepickerComponent, selector: "oepa-datepicker", inputs: ["group", "field", "bsConfig", "showValidation", "placement", "tableIdx", "small"], exportAs: ["oepa-datepicker"] }] });
|
|
5969
5975
|
}
|
|
5970
5976
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateInputModalComponent, decorators: [{
|
|
5971
5977
|
type: Component,
|
|
@@ -8607,7 +8613,7 @@ class DateInputComponent {
|
|
|
8607
8613
|
}
|
|
8608
8614
|
}
|
|
8609
8615
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8610
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DateInputComponent, selector: "oepa-date-input", inputs: { group: "group", field: "field", tableIdx: "tableIdx", placement: "placement", showValidation: "showValidation", pauseChangeProcessing: "pauseChangeProcessing" }, outputs: { onValueChange: "onValueChange" }, ngImport: i0, template: "<div [formGroup]=\"group\">\n <oepa-datepicker [group]=\"group\" [field]=\"field\" [tableIdx]=\"tableIdx\" \n [placement]=\"placement\" [showValidation]=\"showValidation\"></oepa-datepicker>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: DatepickerComponent, selector: "oepa-datepicker", inputs: ["group", "field", "bsConfig", "showValidation", "placement", "tableIdx", "small"] }] });
|
|
8616
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DateInputComponent, selector: "oepa-date-input", inputs: { group: "group", field: "field", tableIdx: "tableIdx", placement: "placement", showValidation: "showValidation", pauseChangeProcessing: "pauseChangeProcessing" }, outputs: { onValueChange: "onValueChange" }, ngImport: i0, template: "<div [formGroup]=\"group\">\n <oepa-datepicker [group]=\"group\" [field]=\"field\" [tableIdx]=\"tableIdx\" \n [placement]=\"placement\" [showValidation]=\"showValidation\"></oepa-datepicker>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: DatepickerComponent, selector: "oepa-datepicker", inputs: ["group", "field", "bsConfig", "showValidation", "placement", "tableIdx", "small"], exportAs: ["oepa-datepicker"] }] });
|
|
8611
8617
|
}
|
|
8612
8618
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateInputComponent, decorators: [{
|
|
8613
8619
|
type: Component,
|