ngx-sumax-erp-components 1.0.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/esm2022/lib/date-picker/CustomDatePickerFormat.mjs +43 -0
- package/esm2022/lib/date-picker/CustomDatePickerI18n.mjs +50 -0
- package/esm2022/lib/date-picker/date-picker.component.mjs +366 -0
- package/esm2022/lib/date-picker/date-picker.mjs +3 -0
- package/esm2022/lib/date-picker/date-picker.module.mjs +69 -0
- package/esm2022/lib/date-picker/date-picker.service.mjs +68 -0
- package/esm2022/lib/date-time-picker/date-time-picker.component.mjs +311 -0
- package/esm2022/lib/date-time-picker/date-time-picker.mjs +3 -0
- package/esm2022/lib/date-time-picker/date-time-picker.module.mjs +76 -0
- package/esm2022/lib/date-time-picker/date-time-picker.service.mjs +64 -0
- package/esm2022/lib/date-time-picker-editable/date-time-picker-editable.component.mjs +1136 -0
- package/esm2022/lib/date-time-picker-editable/date-time-picker-editable.module.mjs +89 -0
- package/esm2022/lib/date-time-picker-editable/date-time-picker-editable.service.mjs +78 -0
- package/esm2022/lib/dialog-ag-grid-search/dialog-ag-grid-search.component.mjs +283 -0
- package/esm2022/lib/dialog-ag-grid-search/dialog-ag-grid-search.module.mjs +23 -0
- package/esm2022/lib/error-message/error-message.component.mjs +24 -0
- package/esm2022/lib/error-message/error-message.module.mjs +19 -0
- package/esm2022/lib/input-number/input-number.component.mjs +348 -0
- package/esm2022/lib/input-number/input-number.mjs +3 -0
- package/esm2022/lib/input-number/input-number.module.mjs +65 -0
- package/esm2022/lib/input-number/input-number.service.mjs +68 -0
- package/esm2022/lib/input-text/input-text.component.mjs +313 -0
- package/esm2022/lib/input-text/input-text.mjs +3 -0
- package/esm2022/lib/input-text/input-text.module.mjs +70 -0
- package/esm2022/lib/input-text/input-text.service.mjs +75 -0
- package/esm2022/lib/ng-select-multiple/ng-select-multiple.component.mjs +375 -0
- package/esm2022/lib/ng-select-multiple/ng-select-multiple.mjs +3 -0
- package/esm2022/lib/ng-select-multiple/ng-select-multiple.module.mjs +69 -0
- package/esm2022/lib/ng-select-multiple/ng-select-multiple.service.mjs +96 -0
- package/esm2022/lib/ng-select-simple/ng-select-simple.component.mjs +458 -0
- package/esm2022/lib/ng-select-simple/ng-select-simple.mjs +3 -0
- package/esm2022/lib/ng-select-simple/ng-select-simple.module.mjs +53 -0
- package/esm2022/lib/ng-select-simple/ng-select-simple.service.mjs +138 -0
- package/esm2022/lib/sc-ag-grid/cell-editors/container-shared/container-shared.component.mjs +144 -0
- package/esm2022/lib/sc-ag-grid/cell-render/no-rows-overlay/noRowsOverlayCustom.component.mjs +27 -0
- package/esm2022/lib/sc-ag-grid/cell-render/no-rows-overlay/noRowsOverlayDefault.component.mjs +22 -0
- package/esm2022/lib/sc-ag-grid/cell-render/sc-cell-render-button/sc-cell-render-button.component.mjs +242 -0
- package/esm2022/lib/sc-ag-grid/cell-render/sc-cell-render-checkbox-list/sc-cell-render-checkbox-list.component.mjs +62 -0
- package/esm2022/lib/sc-ag-grid/cell-render/sc-cell-render-config.mjs +27 -0
- package/esm2022/lib/sc-ag-grid/cell-render/sc-cell-render-select/sc-cell-render-select.component.mjs +70 -0
- package/esm2022/lib/sc-ag-grid/cell-render/sc-cell-render-toggle/sc-cell-render-toggle.component.mjs +45 -0
- package/esm2022/lib/sc-ag-grid/directives/scAgGrid.directive.mjs +25 -0
- package/esm2022/lib/sc-ag-grid/index.mjs +14 -0
- package/esm2022/lib/sc-ag-grid/input-search/input-search.component.mjs +20 -0
- package/esm2022/lib/sc-ag-grid/input-search/input-search.module.mjs +31 -0
- package/esm2022/lib/sc-ag-grid/sc-ag-grid-customizable/sc-ag-grid-customizable.component.mjs +564 -0
- package/esm2022/lib/sc-ag-grid/sc-ag-grid-pagination/sc-ag-grid-pagination.component.mjs +80 -0
- package/esm2022/lib/sc-ag-grid/sc-ag-grid-pagination/sc-ag-grid-pagination.module.mjs +31 -0
- package/esm2022/lib/sc-ag-grid/sc-ag-grid.module.mjs +118 -0
- package/esm2022/lib/sc-ag-grid/sc-grid.uitl.mjs +10 -0
- package/esm2022/lib/sc-wizard/sc-wizard.component.mjs +65 -0
- package/esm2022/lib/sc-wizard/sc-wizard.module.mjs +40 -0
- package/esm2022/lib/text-area/text-area.component.mjs +272 -0
- package/esm2022/lib/text-area/text-area.mjs +3 -0
- package/esm2022/lib/text-area/text-area.module.mjs +60 -0
- package/esm2022/lib/text-area/text-area.service.mjs +54 -0
- package/esm2022/lib/tooltip-message/tooltip-message.component.mjs +25 -0
- package/esm2022/lib/tooltip-message/tooltip-message.module.mjs +21 -0
- package/esm2022/lib/utils/DateTimeModel.mjs +56 -0
- package/esm2022/lib/utils/DateTimePickerEditable.mjs +3 -0
- package/esm2022/lib/utils/DateUtil.mjs +196 -0
- package/esm2022/lib/utils/INgSelect.mjs +2 -0
- package/esm2022/lib/utils/IScAgGrid.mjs +7 -0
- package/esm2022/lib/utils/ScWizardBase.mjs +14 -0
- package/esm2022/lib/utils/SharedComponentsUtil.mjs +38 -0
- package/esm2022/lib/utils/ValidateUtil.mjs +18 -0
- package/esm2022/lib/utils/message-util.service.mjs +75 -0
- package/esm2022/ngx-sumax-erp-components.mjs +5 -0
- package/esm2022/public-api.mjs +33 -0
- package/fesm2022/ngx-sumax-erp-components.mjs +6956 -0
- package/fesm2022/ngx-sumax-erp-components.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/date-picker/CustomDatePickerFormat.d.ts +11 -0
- package/lib/date-picker/CustomDatePickerI18n.d.ts +25 -0
- package/lib/date-picker/date-picker.component.d.ts +108 -0
- package/lib/date-picker/date-picker.d.ts +10 -0
- package/lib/date-picker/date-picker.module.d.ts +18 -0
- package/lib/date-picker/date-picker.service.d.ts +22 -0
- package/lib/date-time-picker/date-time-picker.component.d.ts +96 -0
- package/lib/date-time-picker/date-time-picker.d.ts +9 -0
- package/lib/date-time-picker/date-time-picker.module.d.ts +18 -0
- package/lib/date-time-picker/date-time-picker.service.d.ts +20 -0
- package/lib/date-time-picker-editable/date-time-picker-editable.component.d.ts +117 -0
- package/lib/date-time-picker-editable/date-time-picker-editable.module.d.ts +16 -0
- package/lib/date-time-picker-editable/date-time-picker-editable.service.d.ts +25 -0
- package/lib/dialog-ag-grid-search/dialog-ag-grid-search.component.d.ts +82 -0
- package/lib/dialog-ag-grid-search/dialog-ag-grid-search.module.d.ts +13 -0
- package/lib/error-message/error-message.component.d.ts +13 -0
- package/lib/error-message/error-message.module.d.ts +9 -0
- package/lib/input-number/input-number.component.d.ts +73 -0
- package/lib/input-number/input-number.d.ts +10 -0
- package/lib/input-number/input-number.module.d.ts +17 -0
- package/lib/input-number/input-number.service.d.ts +22 -0
- package/lib/input-text/input-text.component.d.ts +78 -0
- package/lib/input-text/input-text.d.ts +12 -0
- package/lib/input-text/input-text.module.d.ts +18 -0
- package/lib/input-text/input-text.service.d.ts +25 -0
- package/lib/ng-select-multiple/ng-select-multiple.component.d.ts +83 -0
- package/lib/ng-select-multiple/ng-select-multiple.d.ts +14 -0
- package/lib/ng-select-multiple/ng-select-multiple.module.d.ts +17 -0
- package/lib/ng-select-multiple/ng-select-multiple.service.d.ts +30 -0
- package/lib/ng-select-simple/ng-select-simple.component.d.ts +123 -0
- package/lib/ng-select-simple/ng-select-simple.d.ts +20 -0
- package/lib/ng-select-simple/ng-select-simple.module.d.ts +17 -0
- package/lib/ng-select-simple/ng-select-simple.service.d.ts +42 -0
- package/lib/sc-ag-grid/cell-editors/container-shared/container-shared.component.d.ts +61 -0
- package/lib/sc-ag-grid/cell-render/no-rows-overlay/noRowsOverlayCustom.component.d.ts +10 -0
- package/lib/sc-ag-grid/cell-render/no-rows-overlay/noRowsOverlayDefault.component.d.ts +9 -0
- package/lib/sc-ag-grid/cell-render/sc-cell-render-button/sc-cell-render-button.component.d.ts +49 -0
- package/lib/sc-ag-grid/cell-render/sc-cell-render-checkbox-list/sc-cell-render-checkbox-list.component.d.ts +11 -0
- package/lib/sc-ag-grid/cell-render/sc-cell-render-config.d.ts +20 -0
- package/lib/sc-ag-grid/cell-render/sc-cell-render-select/sc-cell-render-select.component.d.ts +16 -0
- package/lib/sc-ag-grid/cell-render/sc-cell-render-toggle/sc-cell-render-toggle.component.d.ts +16 -0
- package/lib/sc-ag-grid/directives/scAgGrid.directive.d.ts +10 -0
- package/lib/sc-ag-grid/index.d.ts +13 -0
- package/lib/sc-ag-grid/input-search/input-search.component.d.ts +11 -0
- package/lib/sc-ag-grid/input-search/input-search.module.d.ts +9 -0
- package/lib/sc-ag-grid/sc-ag-grid-customizable/sc-ag-grid-customizable.component.d.ts +191 -0
- package/lib/sc-ag-grid/sc-ag-grid-pagination/sc-ag-grid-pagination.component.d.ts +25 -0
- package/lib/sc-ag-grid/sc-ag-grid-pagination/sc-ag-grid-pagination.module.d.ts +9 -0
- package/lib/sc-ag-grid/sc-ag-grid.module.d.ts +32 -0
- package/lib/sc-ag-grid/sc-grid.uitl.d.ts +5 -0
- package/lib/sc-wizard/sc-wizard.component.d.ts +34 -0
- package/lib/sc-wizard/sc-wizard.module.d.ts +12 -0
- package/lib/text-area/text-area.component.d.ts +66 -0
- package/lib/text-area/text-area.d.ts +8 -0
- package/lib/text-area/text-area.module.d.ts +16 -0
- package/lib/text-area/text-area.service.d.ts +18 -0
- package/lib/tooltip-message/tooltip-message.component.d.ts +13 -0
- package/lib/tooltip-message/tooltip-message.module.d.ts +11 -0
- package/lib/utils/DateTimeModel.d.ts +16 -0
- package/lib/utils/DateTimePickerEditable.d.ts +12 -0
- package/lib/utils/DateUtil.d.ts +37 -0
- package/lib/utils/INgSelect.d.ts +6 -0
- package/lib/utils/IScAgGrid.d.ts +65 -0
- package/lib/utils/ScWizardBase.d.ts +9 -0
- package/lib/utils/SharedComponentsUtil.d.ts +6 -0
- package/lib/utils/ValidateUtil.d.ts +4 -0
- package/lib/utils/message-util.service.d.ts +10 -0
- package/package.json +32 -0
- package/public-api.d.ts +29 -0
package/README.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# SumaxComponents
|
|
2
|
+
|
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 17.3.0.
|
|
4
|
+
|
|
5
|
+
## Code scaffolding
|
|
6
|
+
|
|
7
|
+
Run `ng generate component component-name --project ngx-sumax-erp-component` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project ngx-sumax-erp-component`.
|
|
8
|
+
> Note: Don't forget to add `--project ngx-sumax-erp-component` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
+
|
|
10
|
+
## Build
|
|
11
|
+
|
|
12
|
+
Run `ng build ngx-sumax-erp-component` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
+
|
|
14
|
+
## Publishing
|
|
15
|
+
|
|
16
|
+
After building your library with `ng build ngx-sumax-erp-component`, go to the dist folder `cd dist/ngx-sumax-erp-component` and run `npm publish`.
|
|
17
|
+
|
|
18
|
+
## Running unit tests
|
|
19
|
+
|
|
20
|
+
Run `ng test ngx-sumax-erp-component` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
21
|
+
|
|
22
|
+
## Further help
|
|
23
|
+
|
|
24
|
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import { NgbDateParserFormatter } from "@ng-bootstrap/ng-bootstrap";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export function toInteger(value) {
|
|
5
|
+
return parseInt(`${value}`, 10);
|
|
6
|
+
}
|
|
7
|
+
export function isNumber(value) {
|
|
8
|
+
return !isNaN(toInteger(value));
|
|
9
|
+
}
|
|
10
|
+
export function padNumber(value) {
|
|
11
|
+
if (isNumber(value)) {
|
|
12
|
+
return `0${value}`.slice(-2);
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
return "";
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export class CustomDatepickerFormat extends NgbDateParserFormatter {
|
|
19
|
+
parse(value) {
|
|
20
|
+
if (value) {
|
|
21
|
+
const dateParts = value.trim().split("-");
|
|
22
|
+
if (dateParts.length === 1 && isNumber(dateParts[0])) {
|
|
23
|
+
return { day: toInteger(dateParts[0]), month: null, year: null };
|
|
24
|
+
}
|
|
25
|
+
else if (dateParts.length === 2 && isNumber(dateParts[0]) && isNumber(dateParts[1])) {
|
|
26
|
+
return { day: toInteger(dateParts[0]), month: toInteger(dateParts[1]), year: null };
|
|
27
|
+
}
|
|
28
|
+
else if (dateParts.length === 3 && isNumber(dateParts[0]) && isNumber(dateParts[1]) && isNumber(dateParts[2])) {
|
|
29
|
+
return { day: toInteger(dateParts[0]), month: toInteger(dateParts[1]), year: toInteger(dateParts[2]) };
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
format(date) {
|
|
35
|
+
return date ? `${isNumber(date.day) ? padNumber(date.day) : ""}/${isNumber(date.month) ? padNumber(date.month) : ""}/${date.year}` : "";
|
|
36
|
+
}
|
|
37
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: CustomDatepickerFormat, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
38
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: CustomDatepickerFormat }); }
|
|
39
|
+
}
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: CustomDatepickerFormat, decorators: [{
|
|
41
|
+
type: Injectable
|
|
42
|
+
}] });
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3VzdG9tRGF0ZVBpY2tlckZvcm1hdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdW1heC1lcnAtY29tcG9uZW50L3NyYy9saWIvZGF0ZS1waWNrZXIvQ3VzdG9tRGF0ZVBpY2tlckZvcm1hdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxzQkFBc0IsRUFBaUIsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFbkYsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQUFVO0lBQ2xDLE9BQU8sUUFBUSxDQUFDLEdBQUcsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQUVELE1BQU0sVUFBVSxRQUFRLENBQUMsS0FBVTtJQUNqQyxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLEtBQWE7SUFDckMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNwQixPQUFPLElBQUksS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxPQUFPLHNCQUF1QixTQUFRLHNCQUFzQjtJQUNoRSxLQUFLLENBQUMsS0FBYTtRQUNqQixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMxQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNyRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUNuRSxDQUFDO2lCQUFNLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUN0RixPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUN0RixDQUFDO2lCQUFNLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDaEgsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDekcsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBbUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMxSSxDQUFDOytHQWpCVSxzQkFBc0I7bUhBQXRCLHNCQUFzQjs7NEZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBOZ2JEYXRlUGFyc2VyRm9ybWF0dGVyLCBOZ2JEYXRlU3RydWN0IH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdG9JbnRlZ2VyKHZhbHVlOiBhbnkpOiBudW1iZXIge1xyXG4gIHJldHVybiBwYXJzZUludChgJHt2YWx1ZX1gLCAxMCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc051bWJlcih2YWx1ZTogYW55KTogdmFsdWUgaXMgbnVtYmVyIHtcclxuICByZXR1cm4gIWlzTmFOKHRvSW50ZWdlcih2YWx1ZSkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcGFkTnVtYmVyKHZhbHVlOiBudW1iZXIpIHtcclxuICBpZiAoaXNOdW1iZXIodmFsdWUpKSB7XHJcbiAgICByZXR1cm4gYDAke3ZhbHVlfWAuc2xpY2UoLTIpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcbn1cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ3VzdG9tRGF0ZXBpY2tlckZvcm1hdCBleHRlbmRzIE5nYkRhdGVQYXJzZXJGb3JtYXR0ZXIge1xyXG4gIHBhcnNlKHZhbHVlOiBzdHJpbmcpOiBOZ2JEYXRlU3RydWN0IHwgYW55IHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICBjb25zdCBkYXRlUGFydHMgPSB2YWx1ZS50cmltKCkuc3BsaXQoXCItXCIpO1xyXG4gICAgICBpZiAoZGF0ZVBhcnRzLmxlbmd0aCA9PT0gMSAmJiBpc051bWJlcihkYXRlUGFydHNbMF0pKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgZGF5OiB0b0ludGVnZXIoZGF0ZVBhcnRzWzBdKSwgbW9udGg6IG51bGwsIHllYXI6IG51bGwgfTtcclxuICAgICAgfSBlbHNlIGlmIChkYXRlUGFydHMubGVuZ3RoID09PSAyICYmIGlzTnVtYmVyKGRhdGVQYXJ0c1swXSkgJiYgaXNOdW1iZXIoZGF0ZVBhcnRzWzFdKSkge1xyXG4gICAgICAgIHJldHVybiB7IGRheTogdG9JbnRlZ2VyKGRhdGVQYXJ0c1swXSksIG1vbnRoOiB0b0ludGVnZXIoZGF0ZVBhcnRzWzFdKSwgeWVhcjogbnVsbCB9O1xyXG4gICAgICB9IGVsc2UgaWYgKGRhdGVQYXJ0cy5sZW5ndGggPT09IDMgJiYgaXNOdW1iZXIoZGF0ZVBhcnRzWzBdKSAmJiBpc051bWJlcihkYXRlUGFydHNbMV0pICYmIGlzTnVtYmVyKGRhdGVQYXJ0c1syXSkpIHtcclxuICAgICAgICByZXR1cm4geyBkYXk6IHRvSW50ZWdlcihkYXRlUGFydHNbMF0pLCBtb250aDogdG9JbnRlZ2VyKGRhdGVQYXJ0c1sxXSksIHllYXI6IHRvSW50ZWdlcihkYXRlUGFydHNbMl0pIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0KGRhdGU6IE5nYkRhdGVTdHJ1Y3QpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGRhdGUgPyBgJHtpc051bWJlcihkYXRlLmRheSkgPyBwYWROdW1iZXIoZGF0ZS5kYXkpIDogXCJcIn0vJHtpc051bWJlcihkYXRlLm1vbnRoKSA/IHBhZE51bWJlcihkYXRlLm1vbnRoKSA6IFwiXCJ9LyR7ZGF0ZS55ZWFyfWAgOiBcIlwiO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import { NgbDatepickerI18n } from "@ng-bootstrap/ng-bootstrap";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
const I18N_VALUES = {
|
|
5
|
+
fr: {
|
|
6
|
+
weekdays: ["Lu", "Ma", "Mi", "Jue", "Vi", "Sa", "Do"],
|
|
7
|
+
months: ["Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"],
|
|
8
|
+
},
|
|
9
|
+
// other languages you would support
|
|
10
|
+
};
|
|
11
|
+
// Define a service holding the language. You probably already have one if your app is i18ned. Or you could also
|
|
12
|
+
// use the Angular LOCALE_ID value
|
|
13
|
+
export class I18n {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.language = "fr";
|
|
16
|
+
}
|
|
17
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: I18n, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
18
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: I18n }); }
|
|
19
|
+
}
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: I18n, decorators: [{
|
|
21
|
+
type: Injectable
|
|
22
|
+
}] });
|
|
23
|
+
// Define custom service providing the months and weekdays translations
|
|
24
|
+
export class CustomDatepickerI18n extends NgbDatepickerI18n {
|
|
25
|
+
constructor(_i18n) {
|
|
26
|
+
super();
|
|
27
|
+
this._i18n = _i18n;
|
|
28
|
+
}
|
|
29
|
+
getWeekdayShortName(weekday) {
|
|
30
|
+
return I18N_VALUES[this._i18n.language].weekdays[weekday - 1];
|
|
31
|
+
}
|
|
32
|
+
getMonthShortName(month) {
|
|
33
|
+
return I18N_VALUES[this._i18n.language].months[month - 1];
|
|
34
|
+
}
|
|
35
|
+
getMonthFullName(month) {
|
|
36
|
+
return this.getMonthShortName(month);
|
|
37
|
+
}
|
|
38
|
+
getDayAriaLabel(date) {
|
|
39
|
+
return `${date.day}-${date.month}-${date.year}`;
|
|
40
|
+
}
|
|
41
|
+
getWeekdayLabel(weekday) {
|
|
42
|
+
return I18N_VALUES[this._i18n.language].weekdays[weekday - 1];
|
|
43
|
+
}
|
|
44
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: CustomDatepickerI18n, deps: [{ token: I18n }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
45
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: CustomDatepickerI18n }); }
|
|
46
|
+
}
|
|
47
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: CustomDatepickerI18n, decorators: [{
|
|
48
|
+
type: Injectable
|
|
49
|
+
}], ctorParameters: () => [{ type: I18n }] });
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3VzdG9tRGF0ZVBpY2tlckkxOG4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL2RhdGUtcGlja2VyL0N1c3RvbURhdGVQaWNrZXJJMThuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFpQixpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQVM5RSxNQUFNLFdBQVcsR0FBUztJQUN4QixFQUFFLEVBQUU7UUFDRixRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7UUFDckQsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUM7S0FDN0Y7SUFDRCxvQ0FBb0M7Q0FDckMsQ0FBQztBQUVGLGlIQUFpSDtBQUNqSCxrQ0FBa0M7QUFFbEMsTUFBTSxPQUFPLElBQUk7SUFEakI7UUFFRSxhQUFRLEdBQWUsSUFBSSxDQUFDO0tBQzdCOytHQUZZLElBQUk7bUhBQUosSUFBSTs7NEZBQUosSUFBSTtrQkFEaEIsVUFBVTs7QUFLWCx1RUFBdUU7QUFFdkUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGlCQUFpQjtJQUN6RCxZQUFvQixLQUFXO1FBQzdCLEtBQUssRUFBRSxDQUFDO1FBRFUsVUFBSyxHQUFMLEtBQUssQ0FBTTtJQUUvQixDQUFDO0lBRUQsbUJBQW1CLENBQUMsT0FBZTtRQUNqQyxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUNELGlCQUFpQixDQUFDLEtBQWE7UUFDN0IsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxLQUFhO1FBQzVCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxlQUFlLENBQUMsSUFBbUI7UUFDakMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUFlO1FBQzdCLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDOytHQXJCVSxvQkFBb0I7bUhBQXBCLG9CQUFvQjs7NEZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBOZ2JEYXRlU3RydWN0LCBOZ2JEYXRlcGlja2VySTE4biB9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xyXG5cclxuaW50ZXJmYWNlIEkxOE4ge1xyXG4gIGZyOiB7XHJcbiAgICB3ZWVrZGF5czogc3RyaW5nW107XHJcbiAgICBtb250aHM6IHN0cmluZ1tdO1xyXG4gIH07XHJcbn1cclxuXHJcbmNvbnN0IEkxOE5fVkFMVUVTOiBJMThOID0ge1xyXG4gIGZyOiB7XHJcbiAgICB3ZWVrZGF5czogW1wiTHVcIiwgXCJNYVwiLCBcIk1pXCIsIFwiSnVlXCIsIFwiVmlcIiwgXCJTYVwiLCBcIkRvXCJdLFxyXG4gICAgbW9udGhzOiBbXCJFbmVcIiwgXCJGZWJcIiwgXCJNYXJcIiwgXCJBYnJcIiwgXCJNYXlcIiwgXCJKdW5cIiwgXCJKdWxcIiwgXCJBZ29cIiwgXCJTZXBcIiwgXCJPY3RcIiwgXCJOb3ZcIiwgXCJEaWNcIl0sXHJcbiAgfSxcclxuICAvLyBvdGhlciBsYW5ndWFnZXMgeW91IHdvdWxkIHN1cHBvcnRcclxufTtcclxuXHJcbi8vIERlZmluZSBhIHNlcnZpY2UgaG9sZGluZyB0aGUgbGFuZ3VhZ2UuIFlvdSBwcm9iYWJseSBhbHJlYWR5IGhhdmUgb25lIGlmIHlvdXIgYXBwIGlzIGkxOG5lZC4gT3IgeW91ICBjb3VsZCBhbHNvXHJcbi8vIHVzZSB0aGUgQW5ndWxhciBMT0NBTEVfSUQgdmFsdWVcclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgSTE4biB7XHJcbiAgbGFuZ3VhZ2U6IGtleW9mIEkxOE4gPSBcImZyXCI7XHJcbn1cclxuXHJcbi8vIERlZmluZSBjdXN0b20gc2VydmljZSBwcm92aWRpbmcgdGhlIG1vbnRocyBhbmQgd2Vla2RheXMgdHJhbnNsYXRpb25zXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEN1c3RvbURhdGVwaWNrZXJJMThuIGV4dGVuZHMgTmdiRGF0ZXBpY2tlckkxOG4ge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2kxOG46IEkxOG4pIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBnZXRXZWVrZGF5U2hvcnROYW1lKHdlZWtkYXk6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gSTE4Tl9WQUxVRVNbdGhpcy5faTE4bi5sYW5ndWFnZV0ud2Vla2RheXNbd2Vla2RheSAtIDFdO1xyXG4gIH1cclxuICBnZXRNb250aFNob3J0TmFtZShtb250aDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBJMThOX1ZBTFVFU1t0aGlzLl9pMThuLmxhbmd1YWdlXS5tb250aHNbbW9udGggLSAxXTtcclxuICB9XHJcbiAgZ2V0TW9udGhGdWxsTmFtZShtb250aDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmdldE1vbnRoU2hvcnROYW1lKG1vbnRoKTtcclxuICB9XHJcblxyXG4gIGdldERheUFyaWFMYWJlbChkYXRlOiBOZ2JEYXRlU3RydWN0KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHtkYXRlLmRheX0tJHtkYXRlLm1vbnRofS0ke2RhdGUueWVhcn1gO1xyXG4gIH1cclxuXHJcbiAgZ2V0V2Vla2RheUxhYmVsKHdlZWtkYXk6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gSTE4Tl9WQUxVRVNbdGhpcy5faTE4bi5sYW5ndWFnZV0ud2Vla2RheXNbd2Vla2RheSAtIDFdO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild, forwardRef, } from '@angular/core';
|
|
2
|
+
import { NG_VALIDATORS, NG_VALUE_ACCESSOR, } from '@angular/forms';
|
|
3
|
+
import { NgbDate, NgbDateParserFormatter, NgbDatepickerI18n, } from '@ng-bootstrap/ng-bootstrap';
|
|
4
|
+
import { CustomDatepickerI18n, I18n } from './CustomDatePickerI18n';
|
|
5
|
+
import { CustomDatepickerFormat } from './CustomDatePickerFormat';
|
|
6
|
+
import { SharedComponentsUtil } from '../utils/SharedComponentsUtil';
|
|
7
|
+
import { DateUtil } from '../utils/DateUtil';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "../utils/message-util.service";
|
|
10
|
+
import * as i2 from "./date-picker.service";
|
|
11
|
+
import * as i3 from "@angular/common";
|
|
12
|
+
import * as i4 from "@angular/forms";
|
|
13
|
+
import * as i5 from "../error-message/error-message.component";
|
|
14
|
+
import * as i6 from "../tooltip-message/tooltip-message.component";
|
|
15
|
+
import * as i7 from "@angular/material/tooltip";
|
|
16
|
+
import * as i8 from "@ng-bootstrap/ng-bootstrap";
|
|
17
|
+
// providers: [I18n, { provide: NgbDatepickerI18n, useClass: CustomDatepickerI18n }, { provide: NgbDateParserFormatter, useClass: CustomDatepickerFormat }]
|
|
18
|
+
export class DatePickerComponent {
|
|
19
|
+
constructor(el, messageUtilService, datePickerService, _render) {
|
|
20
|
+
this.el = el;
|
|
21
|
+
this.messageUtilService = messageUtilService;
|
|
22
|
+
this.datePickerService = datePickerService;
|
|
23
|
+
this._render = _render;
|
|
24
|
+
/**
|
|
25
|
+
* @description Parametro de la visualización del texto superior
|
|
26
|
+
* @default true
|
|
27
|
+
* @type boolean
|
|
28
|
+
*/
|
|
29
|
+
this.showLabel = true;
|
|
30
|
+
/**
|
|
31
|
+
* @description Texto superion
|
|
32
|
+
* @default null
|
|
33
|
+
* @type any
|
|
34
|
+
*/
|
|
35
|
+
this.label = null;
|
|
36
|
+
/**
|
|
37
|
+
* @description Parametro de autocompletado
|
|
38
|
+
* @default 'off'
|
|
39
|
+
* @type string
|
|
40
|
+
*/
|
|
41
|
+
this.autocomplete = 'off';
|
|
42
|
+
/**
|
|
43
|
+
* @description Parametro de control requerido
|
|
44
|
+
* @default false
|
|
45
|
+
* @type boolean
|
|
46
|
+
*/
|
|
47
|
+
this.required = false;
|
|
48
|
+
this.noAutoCompleteNull = true;
|
|
49
|
+
this.readonly = false;
|
|
50
|
+
this.validatorMessage = false;
|
|
51
|
+
this.tooltipMessage = true;
|
|
52
|
+
this.validatorAlert = false;
|
|
53
|
+
this.submitted = true;
|
|
54
|
+
this.labelInfo = false;
|
|
55
|
+
this.textLabelInfo = '';
|
|
56
|
+
this.invalid = false;
|
|
57
|
+
this.focusInitial = false;
|
|
58
|
+
/**
|
|
59
|
+
* @description Parametro deshabilitar control
|
|
60
|
+
* @default false
|
|
61
|
+
* @type {boolean}
|
|
62
|
+
*/
|
|
63
|
+
this.disabled = false;
|
|
64
|
+
this.onNext = new EventEmitter();
|
|
65
|
+
this.onBack = new EventEmitter();
|
|
66
|
+
this.input = new EventEmitter();
|
|
67
|
+
this.onchange = new EventEmitter();
|
|
68
|
+
this.blur = new EventEmitter();
|
|
69
|
+
this.emitValue = '';
|
|
70
|
+
this.sharedComponentsUtil = new SharedComponentsUtil();
|
|
71
|
+
this._tempValue = '';
|
|
72
|
+
this._initValue = false;
|
|
73
|
+
this.onChange = (_) => { };
|
|
74
|
+
this.onValidationChange = () => { };
|
|
75
|
+
this.onTouch = () => { };
|
|
76
|
+
this.focus = () => {
|
|
77
|
+
const invalidControl = this.el.nativeElement.querySelector('[type="text"]');
|
|
78
|
+
invalidControl.focus();
|
|
79
|
+
invalidControl.select();
|
|
80
|
+
};
|
|
81
|
+
this.showLabel = this.datePickerService.getShowLabel();
|
|
82
|
+
this.autocomplete = this.datePickerService.getAutocomplete();
|
|
83
|
+
this.noAutoCompleteNull = this.datePickerService.getNoAutoCompleteNull();
|
|
84
|
+
this.focusInitial = this.datePickerService.getFocusInitial();
|
|
85
|
+
this.validatorMessage = this.datePickerService.getValidatorMessage();
|
|
86
|
+
this.tooltipMessage = this.datePickerService.getTooltipMessage();
|
|
87
|
+
this.submitted = this.datePickerService.getSubmitted();
|
|
88
|
+
this.validatorAlert = this.datePickerService.getValidatorAlert();
|
|
89
|
+
}
|
|
90
|
+
ngOnChanges(changes) {
|
|
91
|
+
if (changes['submitted']) {
|
|
92
|
+
if (this.controls !== undefined && changes['submitted'].currentValue) {
|
|
93
|
+
this.controls.markAsDirty();
|
|
94
|
+
this.controls.markAsTouched();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
ngOnInit() {
|
|
99
|
+
if (this.minDate) {
|
|
100
|
+
this.minDate = this.strDateToNgbDate(this.minDate);
|
|
101
|
+
}
|
|
102
|
+
if (this.focusInitial == true && this.disabled == false) {
|
|
103
|
+
const invalidControl = this.el.nativeElement.querySelector('[type="text"]');
|
|
104
|
+
invalidControl.focus();
|
|
105
|
+
invalidControl.select();
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
onFocus(evt) {
|
|
109
|
+
if (evt) {
|
|
110
|
+
const invalidControl = this.el.nativeElement.querySelector('[type="text"]');
|
|
111
|
+
invalidControl.select();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
writeValue(value) {
|
|
115
|
+
if (value) {
|
|
116
|
+
this.value = this.strDateToNgbDate(value) || '';
|
|
117
|
+
if (value && value instanceof Date) {
|
|
118
|
+
this._tempValue = DateUtil.dateAutoComplete(value);
|
|
119
|
+
if (this.controls) {
|
|
120
|
+
this._render.setProperty(this.controls, 'value', this._tempValue);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
if (value && typeof value === 'string')
|
|
124
|
+
this._tempValue = value.trim();
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
this.value = '';
|
|
128
|
+
this._tempValue = '';
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
registerOnChange(fn) {
|
|
132
|
+
this.onChange = fn;
|
|
133
|
+
}
|
|
134
|
+
registerOnTouched(fn) {
|
|
135
|
+
this.onTouch = fn;
|
|
136
|
+
}
|
|
137
|
+
setDisabledState(isDisabled = false) {
|
|
138
|
+
this.disabled = isDisabled;
|
|
139
|
+
}
|
|
140
|
+
validate(control) {
|
|
141
|
+
this.controls = control;
|
|
142
|
+
if (!this._initValue) {
|
|
143
|
+
if (this._tempValue) {
|
|
144
|
+
this._render.setProperty(control, 'value', this._tempValue);
|
|
145
|
+
}
|
|
146
|
+
this._initValue = true;
|
|
147
|
+
}
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
registerOnValidatorChange(fn) {
|
|
151
|
+
this.onValidationChange = fn;
|
|
152
|
+
}
|
|
153
|
+
onBlur() {
|
|
154
|
+
this.onTouch();
|
|
155
|
+
}
|
|
156
|
+
onInput(value) {
|
|
157
|
+
this.emitValue = value;
|
|
158
|
+
this.value = value;
|
|
159
|
+
if (this.value instanceof NgbDate) {
|
|
160
|
+
this.emitValue = this.ngbDatetoString(value);
|
|
161
|
+
}
|
|
162
|
+
this.onChange(this.emitValue);
|
|
163
|
+
this.onchange.emit(this.emitValue);
|
|
164
|
+
this.input.emit(this.emitValue);
|
|
165
|
+
this._tempValue = '';
|
|
166
|
+
}
|
|
167
|
+
onKeyUpEnter() {
|
|
168
|
+
this.enterKeyUp();
|
|
169
|
+
}
|
|
170
|
+
onlyNumbers(e) {
|
|
171
|
+
if (!(e.keyCode >= 48 && e.keyCode <= 57) && e.keyCode != 47) {
|
|
172
|
+
e.preventDefault();
|
|
173
|
+
e.stopPropagation();
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
strDateToNgbDate(value) {
|
|
177
|
+
const date = DateUtil.parse(value, 'DATE');
|
|
178
|
+
const ngbDate = {
|
|
179
|
+
day: Number(DateUtil.getDay(date)),
|
|
180
|
+
month: Number(DateUtil.getMonth(date)),
|
|
181
|
+
year: Number(DateUtil.getYear(date)),
|
|
182
|
+
};
|
|
183
|
+
// return ngbDate;
|
|
184
|
+
return new NgbDate(ngbDate.year, ngbDate.month, ngbDate.day);
|
|
185
|
+
}
|
|
186
|
+
ngbDatetoString(value) {
|
|
187
|
+
const concatNgbDate = `0${value.day}`.slice(-2) + `0${value.month}`.slice(-2) + value.year;
|
|
188
|
+
return DateUtil.dateAutoComplete(concatNgbDate);
|
|
189
|
+
}
|
|
190
|
+
enterKeyUp() {
|
|
191
|
+
if (!this.disabled) {
|
|
192
|
+
let validator = this.sharedComponentsUtil.stopByValidator(this.controls, this.validatorAlert, this.label);
|
|
193
|
+
if (validator.error) {
|
|
194
|
+
this.messageUtilService.getMessageError('000046', 'Error', validator.message);
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
if (this.next != undefined) {
|
|
199
|
+
if (this.next.disabled || this.next.readonly) {
|
|
200
|
+
if (this.nextIsDisable != undefined) {
|
|
201
|
+
this.nextIsDisable.focus();
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
this.next.focus();
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
if (this.nextIsDisable != undefined) {
|
|
210
|
+
this.nextIsDisable.focus();
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
this.onNext.emit();
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
arrowUpKeyUp() {
|
|
218
|
+
if (!this.disabled) {
|
|
219
|
+
let validator = this.sharedComponentsUtil.stopByValidator(this.controls, this.validatorAlert, this.label);
|
|
220
|
+
if (validator.error) {
|
|
221
|
+
this.messageUtilService.getMessageError('000046', 'Error', validator.message);
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
if (this.back != undefined) {
|
|
226
|
+
if (this.back.disabled || this.back.readonly) {
|
|
227
|
+
if (this.backIsDisable != undefined) {
|
|
228
|
+
this.backIsDisable.focus();
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
this.back.focus();
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
if (this.backIsDisable != undefined) {
|
|
237
|
+
this.backIsDisable.focus();
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
this.onBack.emit();
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
focusOut(value) {
|
|
245
|
+
if (value && value.trim() !== '') {
|
|
246
|
+
if (this._tempValue === value)
|
|
247
|
+
return;
|
|
248
|
+
this.ngbDatepicker.close();
|
|
249
|
+
if (value instanceof NgbDate) {
|
|
250
|
+
if (value !== this.ngbDatetoString(value)) {
|
|
251
|
+
this.emitValue = this.ngbDatetoString(value);
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
this.emitValue = value;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
value = value.replaceAll('/', '');
|
|
259
|
+
if (this.noAutoCompleteNull) {
|
|
260
|
+
this.value = this.strDateToNgbDate(DateUtil.dateAutoComplete(value));
|
|
261
|
+
this.emitValue = DateUtil.dateAutoComplete(value);
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
if (value != '' && value != null) {
|
|
265
|
+
this.value = this.strDateToNgbDate(DateUtil.dateAutoComplete(value));
|
|
266
|
+
this.emitValue = DateUtil.dateAutoComplete(value);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
this.onTouch();
|
|
271
|
+
this.onChange(this.emitValue);
|
|
272
|
+
if (typeof this.emitValue === 'string')
|
|
273
|
+
this._tempValue = this.emitValue;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: DatePickerComponent, deps: [{ token: i0.ElementRef }, { token: i1.MessageUtilService }, { token: i2.DatePickerService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
277
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: DatePickerComponent, selector: "date-picker", inputs: { showLabel: "showLabel", label: "label", autocomplete: "autocomplete", next: "next", nextIsDisable: "nextIsDisable", back: "back", backIsDisable: "backIsDisable", required: "required", noAutoCompleteNull: "noAutoCompleteNull", readonly: "readonly", validatorMessage: "validatorMessage", tooltipMessage: "tooltipMessage", validatorAlert: "validatorAlert", submitted: "submitted", labelInfo: "labelInfo", textLabelInfo: "textLabelInfo", minDate: "minDate", maxDate: "maxDate", invalid: "invalid", focusInitial: "focusInitial", disabled: "disabled" }, outputs: { onNext: "onNext", onBack: "onBack", input: "input", onchange: "onchange", blur: "blur" }, providers: [
|
|
278
|
+
{
|
|
279
|
+
provide: NG_VALUE_ACCESSOR,
|
|
280
|
+
useExisting: forwardRef(() => DatePickerComponent),
|
|
281
|
+
multi: true,
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
provide: NG_VALIDATORS,
|
|
285
|
+
useExisting: forwardRef(() => DatePickerComponent),
|
|
286
|
+
multi: true,
|
|
287
|
+
},
|
|
288
|
+
I18n,
|
|
289
|
+
{ provide: NgbDatepickerI18n, useClass: CustomDatepickerI18n },
|
|
290
|
+
{ provide: NgbDateParserFormatter, useClass: CustomDatepickerFormat },
|
|
291
|
+
], viewQueries: [{ propertyName: "ngbDatepicker", first: true, predicate: ["fecha"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<label *ngIf=\"label != null && label != '' && showLabel\" class=\"d-flex sumax-label mb-0 p-0\"\r\n ><span [title]=\"label\" style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis\">{{ label }}</span>\r\n <span *ngIf=\"required\" class=\"ms-1\" [class.text-danger]=\"controls?.errors != null\"> *</span>\r\n <span *ngIf=\"labelInfo\">\r\n <i class=\"fa fa-exclamation-circle text-info ms-2\" [matTooltip]=\"textLabelInfo\" matTooltipClass=\"bg-info\"></i>\r\n </span>\r\n</label>\r\n<div\r\n [class.input-icon]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\r\n [class.right]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\">\r\n <!-- tooltip-message es el icono de error -->\r\n\r\n <div class=\"d-flex p-0 group-input-button position-relative\">\r\n <tooltip-message\r\n [label]=\"label\"\r\n [controls]=\"controls\"\r\n [validatorMessage]=\"validatorMessage\"\r\n [submitted]=\"submitted\"\r\n [tooltipMessage]=\"tooltipMessage\"></tooltip-message>\r\n <input\r\n type=\"text\"\r\n [autocomplete]=\"autocomplete\"\r\n [class.is-invalid]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\r\n [disabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n (keyup.enter)=\"onKeyUpEnter()\"\r\n (keyup.ArrowUp)=\"arrowUpKeyUp()\"\r\n (keypress)=\"onlyNumbers($event)\"\r\n (input)=\"onInput($any($event.target).value)\"\r\n (dateSelect)=\"onInput($event)\"\r\n (focus)=\"onFocus($any($event.target).value)\"\r\n (focusout)=\"focusOut($any($event.target).value)\"\r\n (blur)=\"onBlur()\"\r\n class=\"form-control form-control-sm rounded-left use-input\"\r\n container=\"body\"\r\n placeholder=\"dd/mm/yyyy\"\r\n [minDate]=\"minDate\"\r\n [maxDate]=\"maxDate\"\r\n name=\"fecha\"\r\n ngbDatepicker\r\n #fecha=\"ngbDatepicker\"\r\n [(ngModel)]=\"value\" />\r\n <button type=\"button\" [disabled]=\"disabled || readonly\" class=\"btn btn-info p-0 rounded-0 use-button\" (click)=\"fecha.toggle()\">\r\n <!-- <mat-icon class=\"text-white pt-1\" style=\"font-size: 18px;\" [matTooltip]=\"'Calendario'\" matTooltipClass=\"bg-info\">calendar_today</mat-icon> -->\r\n <i class=\"fa fa-calendar text-white px-1\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n</div>\r\n<!-- error-message es el mansaje que aparece abajo del componente -->\r\n<error-message\r\n [label]=\"label\"\r\n [controls]=\"controls\"\r\n [validatorMessage]=\"validatorMessage\"\r\n [submitted]=\"submitted\"\r\n [tooltipMessage]=\"tooltipMessage\"></error-message>\r\n", styles: ["button[disabled]{pointer-events:none}.sumax-label{color:#646c9a!important}.input-icon tooltip-message{color:#ccc;position:absolute;z-index:3;width:16px;font-size:16px;text-align:center;left:auto;right:35px;top:50%;transform:translateY(-50%)}.input-icon.right>.form-control{padding-right:33px;padding-left:12px}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.was-validated .form-control:invalid,.form-control.is-invalid{background-image:none;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.form-control:focus,.form-control:active{border-color:#007eff;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #007eff1a!important}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.errorMessageComponent, selector: "error-message", inputs: ["tooltipMessage", "validatorMessage", "controls", "label", "submitted"] }, { kind: "component", type: i6.tooltipMessageComponent, selector: "tooltip-message", inputs: ["tooltipMessage", "validatorMessage", "controls", "label", "submitted"] }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i8.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "contentTemplate", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "popperOptions", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }] }); }
|
|
292
|
+
}
|
|
293
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
294
|
+
type: Component,
|
|
295
|
+
args: [{ selector: 'date-picker', providers: [
|
|
296
|
+
{
|
|
297
|
+
provide: NG_VALUE_ACCESSOR,
|
|
298
|
+
useExisting: forwardRef(() => DatePickerComponent),
|
|
299
|
+
multi: true,
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
provide: NG_VALIDATORS,
|
|
303
|
+
useExisting: forwardRef(() => DatePickerComponent),
|
|
304
|
+
multi: true,
|
|
305
|
+
},
|
|
306
|
+
I18n,
|
|
307
|
+
{ provide: NgbDatepickerI18n, useClass: CustomDatepickerI18n },
|
|
308
|
+
{ provide: NgbDateParserFormatter, useClass: CustomDatepickerFormat },
|
|
309
|
+
], template: "<label *ngIf=\"label != null && label != '' && showLabel\" class=\"d-flex sumax-label mb-0 p-0\"\r\n ><span [title]=\"label\" style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis\">{{ label }}</span>\r\n <span *ngIf=\"required\" class=\"ms-1\" [class.text-danger]=\"controls?.errors != null\"> *</span>\r\n <span *ngIf=\"labelInfo\">\r\n <i class=\"fa fa-exclamation-circle text-info ms-2\" [matTooltip]=\"textLabelInfo\" matTooltipClass=\"bg-info\"></i>\r\n </span>\r\n</label>\r\n<div\r\n [class.input-icon]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\r\n [class.right]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\">\r\n <!-- tooltip-message es el icono de error -->\r\n\r\n <div class=\"d-flex p-0 group-input-button position-relative\">\r\n <tooltip-message\r\n [label]=\"label\"\r\n [controls]=\"controls\"\r\n [validatorMessage]=\"validatorMessage\"\r\n [submitted]=\"submitted\"\r\n [tooltipMessage]=\"tooltipMessage\"></tooltip-message>\r\n <input\r\n type=\"text\"\r\n [autocomplete]=\"autocomplete\"\r\n [class.is-invalid]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\r\n [disabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n (keyup.enter)=\"onKeyUpEnter()\"\r\n (keyup.ArrowUp)=\"arrowUpKeyUp()\"\r\n (keypress)=\"onlyNumbers($event)\"\r\n (input)=\"onInput($any($event.target).value)\"\r\n (dateSelect)=\"onInput($event)\"\r\n (focus)=\"onFocus($any($event.target).value)\"\r\n (focusout)=\"focusOut($any($event.target).value)\"\r\n (blur)=\"onBlur()\"\r\n class=\"form-control form-control-sm rounded-left use-input\"\r\n container=\"body\"\r\n placeholder=\"dd/mm/yyyy\"\r\n [minDate]=\"minDate\"\r\n [maxDate]=\"maxDate\"\r\n name=\"fecha\"\r\n ngbDatepicker\r\n #fecha=\"ngbDatepicker\"\r\n [(ngModel)]=\"value\" />\r\n <button type=\"button\" [disabled]=\"disabled || readonly\" class=\"btn btn-info p-0 rounded-0 use-button\" (click)=\"fecha.toggle()\">\r\n <!-- <mat-icon class=\"text-white pt-1\" style=\"font-size: 18px;\" [matTooltip]=\"'Calendario'\" matTooltipClass=\"bg-info\">calendar_today</mat-icon> -->\r\n <i class=\"fa fa-calendar text-white px-1\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n</div>\r\n<!-- error-message es el mansaje que aparece abajo del componente -->\r\n<error-message\r\n [label]=\"label\"\r\n [controls]=\"controls\"\r\n [validatorMessage]=\"validatorMessage\"\r\n [submitted]=\"submitted\"\r\n [tooltipMessage]=\"tooltipMessage\"></error-message>\r\n", styles: ["button[disabled]{pointer-events:none}.sumax-label{color:#646c9a!important}.input-icon tooltip-message{color:#ccc;position:absolute;z-index:3;width:16px;font-size:16px;text-align:center;left:auto;right:35px;top:50%;transform:translateY(-50%)}.input-icon.right>.form-control{padding-right:33px;padding-left:12px}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.was-validated .form-control:invalid,.form-control.is-invalid{background-image:none;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.form-control:focus,.form-control:active{border-color:#007eff;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #007eff1a!important}\n"] }]
|
|
310
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.MessageUtilService }, { type: i2.DatePickerService }, { type: i0.Renderer2 }], propDecorators: { showLabel: [{
|
|
311
|
+
type: Input
|
|
312
|
+
}], label: [{
|
|
313
|
+
type: Input
|
|
314
|
+
}], autocomplete: [{
|
|
315
|
+
type: Input
|
|
316
|
+
}], next: [{
|
|
317
|
+
type: Input
|
|
318
|
+
}], nextIsDisable: [{
|
|
319
|
+
type: Input
|
|
320
|
+
}], back: [{
|
|
321
|
+
type: Input
|
|
322
|
+
}], backIsDisable: [{
|
|
323
|
+
type: Input
|
|
324
|
+
}], required: [{
|
|
325
|
+
type: Input
|
|
326
|
+
}], noAutoCompleteNull: [{
|
|
327
|
+
type: Input
|
|
328
|
+
}], readonly: [{
|
|
329
|
+
type: Input
|
|
330
|
+
}], validatorMessage: [{
|
|
331
|
+
type: Input
|
|
332
|
+
}], tooltipMessage: [{
|
|
333
|
+
type: Input
|
|
334
|
+
}], validatorAlert: [{
|
|
335
|
+
type: Input
|
|
336
|
+
}], submitted: [{
|
|
337
|
+
type: Input
|
|
338
|
+
}], labelInfo: [{
|
|
339
|
+
type: Input
|
|
340
|
+
}], textLabelInfo: [{
|
|
341
|
+
type: Input
|
|
342
|
+
}], minDate: [{
|
|
343
|
+
type: Input
|
|
344
|
+
}], maxDate: [{
|
|
345
|
+
type: Input
|
|
346
|
+
}], invalid: [{
|
|
347
|
+
type: Input
|
|
348
|
+
}], focusInitial: [{
|
|
349
|
+
type: Input
|
|
350
|
+
}], disabled: [{
|
|
351
|
+
type: Input
|
|
352
|
+
}], onNext: [{
|
|
353
|
+
type: Output
|
|
354
|
+
}], onBack: [{
|
|
355
|
+
type: Output
|
|
356
|
+
}], input: [{
|
|
357
|
+
type: Output
|
|
358
|
+
}], onchange: [{
|
|
359
|
+
type: Output
|
|
360
|
+
}], blur: [{
|
|
361
|
+
type: Output
|
|
362
|
+
}], ngbDatepicker: [{
|
|
363
|
+
type: ViewChild,
|
|
364
|
+
args: ['fecha']
|
|
365
|
+
}] } });
|
|
366
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN1bWF4LWVycC1jb21wb25lbnQvc3JjL2xpYi9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxFQUNULFVBQVUsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsYUFBYSxFQUNiLGlCQUFpQixHQUVsQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDTCxPQUFPLEVBQ1Asc0JBQXNCLEVBR3RCLGlCQUFpQixHQUNsQixNQUFNLDRCQUE0QixDQUFDO0FBR3BDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7Ozs7QUF1QjdDLDJKQUEySjtBQUMzSixNQUFNLE9BQU8sbUJBQW1CO0lBNkU5QixZQUNVLEVBQWMsRUFDZCxrQkFBc0MsRUFDdEMsaUJBQW9DLEVBQ3BDLE9BQWtCO1FBSGxCLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsWUFBTyxHQUFQLE9B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SztnQkFNRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csS0FBSztzQkFBZCxNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNO2dCQU9hLGFBQWE7c0JBQWhDLFNBQVM7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFJlbmRlcmVyMixcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxuICBmb3J3YXJkUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFic3RyYWN0Q29udHJvbCxcclxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcclxuICBOR19WQUxJREFUT1JTLFxyXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gIFZhbGlkYXRpb25FcnJvcnMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1xyXG4gIE5nYkRhdGUsXHJcbiAgTmdiRGF0ZVBhcnNlckZvcm1hdHRlcixcclxuICBOZ2JEYXRlU3RydWN0LFxyXG4gIE5nYkRhdGVwaWNrZXIsXHJcbiAgTmdiRGF0ZXBpY2tlckkxOG4sXHJcbn0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VyU2VydmljZSB9IGZyb20gJy4vZGF0ZS1waWNrZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IE1lc3NhZ2VVdGlsU2VydmljZSB9IGZyb20gJy4uL3V0aWxzL21lc3NhZ2UtdXRpbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ3VzdG9tRGF0ZXBpY2tlckkxOG4sIEkxOG4gfSBmcm9tICcuL0N1c3RvbURhdGVQaWNrZXJJMThuJztcclxuaW1wb3J0IHsgQ3VzdG9tRGF0ZXBpY2tlckZvcm1hdCB9IGZyb20gJy4vQ3VzdG9tRGF0ZVBpY2tlckZvcm1hdCc7XHJcbmltcG9ydCB7IFNoYXJlZENvbXBvbmVudHNVdGlsIH0gZnJvbSAnLi4vdXRpbHMvU2hhcmVkQ29tcG9uZW50c1V0aWwnO1xyXG5pbXBvcnQgeyBEYXRlVXRpbCB9IGZyb20gJy4uL3V0aWxzL0RhdGVVdGlsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZGF0ZS1waWNrZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVQaWNrZXJDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVQaWNrZXJDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICBJMThuLFxyXG4gICAgeyBwcm92aWRlOiBOZ2JEYXRlcGlja2VySTE4biwgdXNlQ2xhc3M6IEN1c3RvbURhdGVwaWNrZXJJMThuIH0sXHJcbiAgICB7IHByb3ZpZGU6IE5nYkRhdGVQYXJzZXJGb3JtYXR0ZXIsIHVzZUNsYXNzOiBDdXN0b21EYXRlcGlja2VyRm9ybWF0IH0sXHJcbiAgXSxcclxufSlcclxuXHJcbi8vIHByb3ZpZGVyczogW0kxOG4sIHsgcHJvdmlkZTogTmdiRGF0ZXBpY2tlckkxOG4sIHVzZUNsYXNzOiBDdXN0b21EYXRlcGlja2VySTE4biB9LCB7IHByb3ZpZGU6IE5nYkRhdGVQYXJzZXJGb3JtYXR0ZXIsIHVzZUNsYXNzOiBDdXN0b21EYXRlcGlja2VyRm9ybWF0IH1dXHJcbmV4cG9ydCBjbGFzcyBEYXRlUGlja2VyQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQ29udHJvbFZhbHVlQWNjZXNzb3Jcclxue1xyXG4gIC8qKlxyXG4gICogQGRlc2NyaXB0aW9uIFBhcmFtZXRybyBkZSBsYSB2aXN1YWxpemFjacOzbiBkZWwgdGV4dG8gc3VwZXJpb3JcclxuICAqIEBkZWZhdWx0IHRydWVcclxuICAqIEB0eXBlIGJvb2xlYW5cclxuICAqL1xyXG4gIEBJbnB1dCgpIHNob3dMYWJlbDogYm9vbGVhbiA9IHRydWU7XHJcbiAgLyoqXHJcbiAgKiBAZGVzY3JpcHRpb24gVGV4dG8gc3VwZXJpb25cclxuICAqIEBkZWZhdWx0IG51bGxcclxuICAqIEB0eXBlIGFueVxyXG4gICovXHJcbiAgQElucHV0KCkgbGFiZWw6IGFueSA9IG51bGw7XHJcbiAgLyoqXHJcbiAgKiBAZGVzY3JpcHRpb24gUGFyYW1ldHJvIGRlIGF1dG9jb21wbGV0YWRvXHJcbiAgKiBAZGVmYXVsdCAnb2ZmJ1xyXG4gICogQHR5cGUgc3RyaW5nXHJcbiAgKi9cclxuICBASW5wdXQoKSBhdXRvY29tcGxldGU6IHN0cmluZyA9ICdvZmYnO1xyXG4gIC8qKlxyXG4gICogQGRlc2NyaXB0aW9uIFByw7N4aW1vIGNvbnRyb2wgYSBoYWNlciBmb2N1c1xyXG4gICovXHJcbiAgQElucHV0KCkgbmV4dDogYW55O1xyXG4gIC8qKlxyXG4gICogQGRlc2NyaXB0aW9uIFByw7N4aW1vIGNvbnRyb2wgYSBoYWNlciBmb2N1cyBlbiBjYXNvIGVsIE5FWFQgZXN0w6kgZGVzaGFiaWxpdGFkb1xyXG4gICovXHJcbiAgQElucHV0KCkgbmV4dElzRGlzYWJsZTogYW55O1xyXG4gIC8qKlxyXG4gICogQGRlc2NyaXB0aW9uIEFudGVyaW9yIGNvbnRyb2wgYSBoYWNlciBmb2N1c1xyXG4gICovXHJcbiAgQElucHV0KCkgYmFjazogYW55O1xyXG4gIC8qKlxyXG4gICogQGRlc2NyaXB0aW9uIEFudGVyaW9yIGNvbnRyb2wgYSBoYWNlciBmb2N1cyBlbiBjYXNvIGVsIEJBQ0sgZXN0w6kgZGVzaGFiaWxpdGFkb1xyXG4gICovXHJcbiAgQElucHV0KCkgYmFja0lzRGlzYWJsZTogYW55O1xyXG4gIC8qKlxyXG4gICogQGRlc2NyaXB0aW9uIFBhcmFtZXRybyBkZSBjb250cm9sIHJlcXVlcmlkb1xyXG4gICogQGRlZmF1bHQgZmFsc2VcclxuICAqIEB0eXBlIGJvb2xlYW5cclxuICAqL1xyXG4gIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbm9BdXRvQ29tcGxldGVOdWxsOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHZhbGlkYXRvck1lc3NhZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSB0b29sdGlwTWVzc2FnZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgdmFsaWRhdG9yQWxlcnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzdWJtaXR0ZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGxhYmVsSW5mbzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHRleHRMYWJlbEluZm86IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIG1pbkRhdGUhOiBOZ2JEYXRlU3RydWN0O1xyXG4gIEBJbnB1dCgpIG1heERhdGUhOiBOZ2JEYXRlU3RydWN0O1xyXG4gIEBJbnB1dCgpIGludmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBmb2N1c0luaXRpYWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKipcclxuICAqIEBkZXNjcmlwdGlvbiBQYXJhbWV0cm8gZGVzaGFiaWxpdGFyIGNvbnRyb2xcclxuICAqIEBkZWZhdWx0IGZhbHNlXHJcbiAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAqL1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIG9uTmV4dDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQmFjazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGlucHV0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25jaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBibHVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAvLyB4bWluRGF0ZSA9IG51bGw7XHJcbiAgLy8geG1heERhdGUgPSBudWxsO1xyXG4gIHZhbHVlOiBhbnk7XHJcbiAgY29udHJvbHM6IGFueTtcclxuICBlbWl0VmFsdWU6IE5nYkRhdGUgfCBzdHJpbmcgPSAnJztcclxuICBzaGFyZWRDb21wb25lbnRzVXRpbCA9IG5ldyBTaGFyZWRDb21wb25lbnRzVXRpbCgpO1xyXG4gIEBWaWV3Q2hpbGQoJ2ZlY2hhJykgbmdiRGF0ZXBpY2tlcjogTmdiRGF0ZXBpY2tlciB8IGFueTtcclxuXHJcbiAgX3RlbXBWYWx1ZSA9ICcnO1xyXG4gIF9pbml0VmFsdWUgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSBtZXNzYWdlVXRpbFNlcnZpY2U6IE1lc3NhZ2VVdGlsU2VydmljZSxcclxuICAgIHByaXZhdGUgZGF0ZVBpY2tlclNlcnZpY2U6IERhdGVQaWNrZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcmVuZGVyOiBSZW5kZXJlcjJcclxuICApIHtcclxuICAgIHRoaXMuc2hvd0xhYmVsID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5nZXRTaG93TGFiZWwoKTtcclxuICAgIHRoaXMuYXV0b2NvbXBsZXRlID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5nZXRBdXRvY29tcGxldGUoKTtcclxuICAgIHRoaXMubm9BdXRvQ29tcGxldGVOdWxsID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5nZXROb0F1dG9Db21wbGV0ZU51bGwoKTtcclxuICAgIHRoaXMuZm9jdXNJbml0aWFsID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5nZXRGb2N1c0luaXRpYWwoKTtcclxuICAgIHRoaXMudmFsaWRhdG9yTWVzc2FnZSA9IHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuZ2V0VmFsaWRhdG9yTWVzc2FnZSgpO1xyXG4gICAgdGhpcy50b29sdGlwTWVzc2FnZSA9IHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuZ2V0VG9vbHRpcE1lc3NhZ2UoKTtcclxuICAgIHRoaXMuc3VibWl0dGVkID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5nZXRTdWJtaXR0ZWQoKTtcclxuICAgIHRoaXMudmFsaWRhdG9yQWxlcnQgPSB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmdldFZhbGlkYXRvckFsZXJ0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snc3VibWl0dGVkJ10pIHtcclxuICAgICAgaWYgKHRoaXMuY29udHJvbHMgIT09IHVuZGVmaW5lZCAmJiBjaGFuZ2VzWydzdWJtaXR0ZWQnXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2xzLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgdGhpcy5jb250cm9scy5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMubWluRGF0ZSkge1xyXG4gICAgICB0aGlzLm1pbkRhdGUgPSB0aGlzLnN0ckRhdGVUb05nYkRhdGUodGhpcy5taW5EYXRlKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZvY3VzSW5pdGlhbCA9PSB0cnVlICYmIHRoaXMuZGlzYWJsZWQgPT0gZmFsc2UpIHtcclxuICAgICAgY29uc3QgaW52YWxpZENvbnRyb2wgPVxyXG4gICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbdHlwZT1cInRleHRcIl0nKTtcclxuICAgICAgaW52YWxpZENvbnRyb2wuZm9jdXMoKTtcclxuICAgICAgaW52YWxpZENvbnRyb2wuc2VsZWN0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xyXG4gIG9uVmFsaWRhdGlvbkNoYW5nZSA9ICgpID0+IHt9O1xyXG4gIG9uVG91Y2ggPSAoKSA9PiB7fTtcclxuXHJcbiAgZm9jdXMgPSAoKSA9PiB7XHJcbiAgICBjb25zdCBpbnZhbGlkQ29udHJvbCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbdHlwZT1cInRleHRcIl0nKTtcclxuICAgIGludmFsaWRDb250cm9sLmZvY3VzKCk7XHJcbiAgICBpbnZhbGlkQ29udHJvbC5zZWxlY3QoKTtcclxuICB9O1xyXG5cclxuICBvbkZvY3VzKGV2dDogYW55KSB7XHJcbiAgICBpZiAoZXZ0KSB7XHJcbiAgICAgIGNvbnN0IGludmFsaWRDb250cm9sID1cclxuICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignW3R5cGU9XCJ0ZXh0XCJdJyk7XHJcbiAgICAgIGludmFsaWRDb250cm9sLnNlbGVjdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuc3RyRGF0ZVRvTmdiRGF0ZSh2YWx1ZSkgfHwgJyc7XHJcbiAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcclxuICAgICAgICB0aGlzLl90ZW1wVmFsdWUgPSBEYXRlVXRpbC5kYXRlQXV0b0NvbXBsZXRlKHZhbHVlKTtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9scykge1xyXG4gICAgICAgICAgdGhpcy5fcmVuZGVyLnNldFByb3BlcnR5KHRoaXMuY29udHJvbHMsICd2YWx1ZScsIHRoaXMuX3RlbXBWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB0aGlzLl90ZW1wVmFsdWUgPSB2YWx1ZS50cmltKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnZhbHVlID0gJyc7XHJcbiAgICAgIHRoaXMuX3RlbXBWYWx1ZSA9ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoID0gZm47XHJcbiAgfVxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgYW55IHtcclxuICAgIHRoaXMuY29udHJvbHMgPSBjb250cm9sO1xyXG4gICAgaWYgKCF0aGlzLl9pbml0VmFsdWUpIHtcclxuICAgICAgaWYgKHRoaXMuX3RlbXBWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMuX3JlbmRlci5zZXRQcm9wZXJ0eShjb250cm9sLCAndmFsdWUnLCB0aGlzLl90ZW1wVmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX2luaXRWYWx1ZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2U/KGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVmFsaWRhdGlvbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgb25CbHVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgfVxyXG5cclxuICBvbklucHV0KHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuZW1pdFZhbHVlID0gdmFsdWU7XHJcblxyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgaWYgKHRoaXMudmFsdWUgaW5zdGFuY2VvZiBOZ2JEYXRlKSB7XHJcbiAgICAgIHRoaXMuZW1pdFZhbHVlID0gdGhpcy5uZ2JEYXRldG9TdHJpbmcodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub25DaGFuZ2UodGhpcy5lbWl0VmFsdWUpO1xyXG4gICAgdGhpcy5vbmNoYW5nZS5lbWl0KHRoaXMuZW1pdFZhbHVlKTtcclxuICAgIHRoaXMuaW5wdXQuZW1pdCh0aGlzLmVtaXRWYWx1ZSk7XHJcblxyXG4gICAgdGhpcy5fdGVtcFZhbHVlID0gJyc7XHJcbiAgfVxyXG5cclxuICBvbktleVVwRW50ZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVudGVyS2V5VXAoKTtcclxuICB9XHJcblxyXG4gIG9ubHlOdW1iZXJzKGU6IGFueSkge1xyXG4gICAgaWYgKCEoZS5rZXlDb2RlID49IDQ4ICYmIGUua2V5Q29kZSA8PSA1NykgJiYgZS5rZXlDb2RlICE9IDQ3KSB7XHJcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0ckRhdGVUb05nYkRhdGUodmFsdWU6IGFueSkge1xyXG4gICAgY29uc3QgZGF0ZTogRGF0ZSA9IERhdGVVdGlsLnBhcnNlKHZhbHVlLCAnREFURScpO1xyXG4gICAgY29uc3QgbmdiRGF0ZTogTmdiRGF0ZVN0cnVjdCA9IHtcclxuICAgICAgZGF5OiBOdW1iZXIoRGF0ZVV0aWwuZ2V0RGF5KGRhdGUpKSxcclxuICAgICAgbW9udGg6IE51bWJlcihEYXRlVXRpbC5nZXRNb250aChkYXRlKSksXHJcbiAgICAgIHllYXI6IE51bWJlcihEYXRlVXRpbC5nZXRZZWFyKGRhdGUpKSxcclxuICAgIH07XHJcbiAgICAvLyByZXR1cm4gbmdiRGF0ZTtcclxuICAgIHJldHVybiBuZXcgTmdiRGF0ZShuZ2JEYXRlLnllYXIsIG5nYkRhdGUubW9udGgsIG5nYkRhdGUuZGF5KTtcclxuICB9XHJcblxyXG4gIG5nYkRhdGV0b1N0cmluZyh2YWx1ZTogTmdiRGF0ZVN0cnVjdCk6IE5nYkRhdGUgfCBzdHJpbmcge1xyXG4gICAgY29uc3QgY29uY2F0TmdiRGF0ZSA9XHJcbiAgICAgIGAwJHt2YWx1ZS5kYXl9YC5zbGljZSgtMikgKyBgMCR7dmFsdWUubW9udGh9YC5zbGljZSgtMikgKyB2YWx1ZS55ZWFyO1xyXG4gICAgcmV0dXJuIERhdGVVdGlsLmRhdGVBdXRvQ29tcGxldGUoY29uY2F0TmdiRGF0ZSk7XHJcbiAgfVxyXG5cclxuICBlbnRlcktleVVwKCkge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIGxldCB2YWxpZGF0b3IgPSB0aGlzLnNoYXJlZENvbXBvbmVudHNVdGlsLnN0b3BCeVZhbGlkYXRvcihcclxuICAgICAgICB0aGlzLmNvbnRyb2xzLFxyXG4gICAgICAgIHRoaXMudmFsaWRhdG9yQWxlcnQsXHJcbiAgICAgICAgdGhpcy5sYWJlbFxyXG4gICAgICApO1xyXG4gICAgICBpZiAodmFsaWRhdG9yLmVycm9yKSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlVXRpbFNlcnZpY2UuZ2V0TWVzc2FnZUVycm9yKFxyXG4gICAgICAgICAgJzAwMDA0NicsXHJcbiAgICAgICAgICAnRXJyb3InLFxyXG4gICAgICAgICAgdmFsaWRhdG9yLm1lc3NhZ2VcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubmV4dCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgaWYgKHRoaXMubmV4dC5kaXNhYmxlZCB8fCB0aGlzLm5leHQucmVhZG9ubHkpIHtcclxuICAgICAgICBpZiAodGhpcy5uZXh0SXNEaXNhYmxlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgdGhpcy5uZXh0SXNEaXNhYmxlLmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubmV4dC5mb2N1cygpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5uZXh0SXNEaXNhYmxlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMubmV4dElzRGlzYWJsZS5mb2N1cygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMub25OZXh0LmVtaXQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXJyb3dVcEtleVVwKCkge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIGxldCB2YWxpZGF0b3IgPSB0aGlzLnNoYXJlZENvbXBvbmVudHNVdGlsLnN0b3BCeVZhbGlkYXRvcihcclxuICAgICAgICB0aGlzLmNvbnRyb2xzLFxyXG4gICAgICAgIHRoaXMudmFsaWRhdG9yQWxlcnQsXHJcbiAgICAgICAgdGhpcy5sYWJlbFxyXG4gICAgICApO1xyXG4gICAgICBpZiAodmFsaWRhdG9yLmVycm9yKSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlVXRpbFNlcnZpY2UuZ2V0TWVzc2FnZUVycm9yKFxyXG4gICAgICAgICAgJzAwMDA0NicsXHJcbiAgICAgICAgICAnRXJyb3InLFxyXG4gICAgICAgICAgdmFsaWRhdG9yLm1lc3NhZ2VcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuYmFjayAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgaWYgKHRoaXMuYmFjay5kaXNhYmxlZCB8fCB0aGlzLmJhY2sucmVhZG9ubHkpIHtcclxuICAgICAgICBpZiAodGhpcy5iYWNrSXNEaXNhYmxlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgdGhpcy5iYWNrSXNEaXNhYmxlLmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYmFjay5mb2N1cygpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5iYWNrSXNEaXNhYmxlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuYmFja0lzRGlzYWJsZS5mb2N1cygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMub25CYWNrLmVtaXQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9jdXNPdXQodmFsdWU6IGFueSkge1xyXG4gICAgaWYgKHZhbHVlICYmIHZhbHVlLnRyaW0oKSAhPT0gJycpIHtcclxuICAgICAgaWYgKHRoaXMuX3RlbXBWYWx1ZSA9PT0gdmFsdWUpIHJldHVybjtcclxuXHJcbiAgICAgIHRoaXMubmdiRGF0ZXBpY2tlci5jbG9zZSgpO1xyXG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBOZ2JEYXRlKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLm5nYkRhdGV0b1N0cmluZyh2YWx1ZSkpIHtcclxuICAgICAgICAgIHRoaXMuZW1pdFZhbHVlID0gdGhpcy5uZ2JEYXRldG9TdHJpbmcodmFsdWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmVtaXRWYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2VBbGwoJy8nLCAnJyk7XHJcbiAgICAgICAgaWYgKHRoaXMubm9BdXRvQ29tcGxldGVOdWxsKSB7XHJcbiAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5zdHJEYXRlVG9OZ2JEYXRlKFxyXG4gICAgICAgICAgICBEYXRlVXRpbC5kYXRlQXV0b0NvbXBsZXRlKHZhbHVlKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMuZW1pdFZhbHVlID0gRGF0ZVV0aWwuZGF0ZUF1dG9Db21wbGV0ZSh2YWx1ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmICh2YWx1ZSAhPSAnJyAmJiB2YWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnN0ckRhdGVUb05nYkRhdGUoXHJcbiAgICAgICAgICAgICAgRGF0ZVV0aWwuZGF0ZUF1dG9Db21wbGV0ZSh2YWx1ZSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5lbWl0VmFsdWUgPSBEYXRlVXRpbC5kYXRlQXV0b0NvbXBsZXRlKHZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuZW1pdFZhbHVlKTtcclxuXHJcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5lbWl0VmFsdWUgPT09ICdzdHJpbmcnKSB0aGlzLl90ZW1wVmFsdWUgPSB0aGlzLmVtaXRWYWx1ZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGxhYmVsICpuZ0lmPVwibGFiZWwgIT0gbnVsbCAmJiBsYWJlbCAhPSAnJyAmJiBzaG93TGFiZWxcIiBjbGFzcz1cImQtZmxleCBzdW1heC1sYWJlbCBtYi0wIHAtMFwiXHJcbiAgPjxzcGFuIFt0aXRsZV09XCJsYWJlbFwiIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcDsgb3ZlcmZsb3c6IGhpZGRlbjsgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXNcIj57eyBsYWJlbCB9fTwvc3Bhbj5cclxuICA8c3BhbiAqbmdJZj1cInJlcXVpcmVkXCIgY2xhc3M9XCJtcy0xXCIgW2NsYXNzLnRleHQtZGFuZ2VyXT1cImNvbnRyb2xzPy5lcnJvcnMgIT0gbnVsbFwiPiAqPC9zcGFuPlxyXG4gIDxzcGFuICpuZ0lmPVwibGFiZWxJbmZvXCI+XHJcbiAgICA8aSBjbGFzcz1cImZhIGZhLWV4Y2xhbWF0aW9uLWNpcmNsZSB0ZXh0LWluZm8gbXMtMlwiIFttYXRUb29sdGlwXT1cInRleHRMYWJlbEluZm9cIiBtYXRUb29sdGlwQ2xhc3M9XCJiZy1pbmZvXCI+PC9pPlxyXG4gIDwvc3Bhbj5cclxuPC9sYWJlbD5cclxuPGRpdlxyXG4gIFtjbGFzcy5pbnB1dC1pY29uXT1cImNvbnRyb2xzPy5lcnJvcnMgIT0gbnVsbCAmJiAoY29udHJvbHM/LmRpcnR5IHx8IGNvbnRyb2xzPy50b3VjaGVkKSAmJiBzdWJtaXR0ZWRcIlxyXG4gIFtjbGFzcy5yaWdodF09XCJjb250cm9scz8uZXJyb3JzICE9IG51bGwgJiYgKGNvbnRyb2xzPy5kaXJ0eSB8fCBjb250cm9scz8udG91Y2hlZCkgJiYgc3VibWl0dGVkXCI+XHJcbiAgPCEtLSB0b29sdGlwLW1lc3NhZ2UgZXMgZWwgaWNvbm8gZGUgZXJyb3IgLS0+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggcC0wIGdyb3VwLWlucHV0LWJ1dHRvbiBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgPHRvb2x0aXAtbWVzc2FnZVxyXG4gICAgW2xhYmVsXT1cImxhYmVsXCJcclxuICAgIFtjb250cm9sc109XCJjb250cm9sc1wiXHJcbiAgICBbdmFsaWRhdG9yTWVzc2FnZV09XCJ2YWxpZGF0b3JNZXNzYWdlXCJcclxuICAgIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCJcclxuICAgIFt0b29sdGlwTWVzc2FnZV09XCJ0b29sdGlwTWVzc2FnZVwiPjwvdG9vbHRpcC1tZXNzYWdlPlxyXG4gICAgPGlucHV0XHJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgW2F1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGVcIlxyXG4gICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJjb250cm9scz8uZXJyb3JzICE9IG51bGwgJiYgKGNvbnRyb2xzPy5kaXJ0eSB8fCBjb250cm9scz8udG91Y2hlZCkgJiYgc3VibWl0dGVkXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgKGtleXVwLmVudGVyKT1cIm9uS2V5VXBFbnRlcigpXCJcclxuICAgICAgKGtleXVwLkFycm93VXApPVwiYXJyb3dVcEtleVVwKClcIlxyXG4gICAgICAoa2V5cHJlc3MpPVwib25seU51bWJlcnMoJGV2ZW50KVwiXHJcbiAgICAgIChpbnB1dCk9XCJvbklucHV0KCRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpXCJcclxuICAgICAgKGRhdGVTZWxlY3QpPVwib25JbnB1dCgkZXZlbnQpXCJcclxuICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSlcIlxyXG4gICAgICAoZm9jdXNvdXQpPVwiZm9jdXNPdXQoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSlcIlxyXG4gICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXHJcbiAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSByb3VuZGVkLWxlZnQgdXNlLWlucHV0XCJcclxuICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgIHBsYWNlaG9sZGVyPVwiZGQvbW0veXl5eVwiXHJcbiAgICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxyXG4gICAgICBbbWF4RGF0ZV09XCJtYXhEYXRlXCJcclxuICAgICAgbmFtZT1cImZlY2hhXCJcclxuICAgICAgbmdiRGF0ZXBpY2tlclxyXG4gICAgICAjZmVjaGE9XCJuZ2JEYXRlcGlja2VyXCJcclxuICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIC8+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHlcIiBjbGFzcz1cImJ0biBidG4taW5mbyBwLTAgcm91bmRlZC0wIHVzZS1idXR0b25cIiAoY2xpY2spPVwiZmVjaGEudG9nZ2xlKClcIj5cclxuICAgICAgPCEtLSA8bWF0LWljb24gY2xhc3M9XCJ0ZXh0LXdoaXRlIHB0LTFcIiBzdHlsZT1cImZvbnQtc2l6ZTogMThweDtcIiBbbWF0VG9vbHRpcF09XCInQ2FsZW5kYXJpbydcIiBtYXRUb29sdGlwQ2xhc3M9XCJiZy1pbmZvXCI+Y2FsZW5kYXJfdG9kYXk8L21hdC1pY29uPiAtLT5cclxuICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jYWxlbmRhciB0ZXh0LXdoaXRlIHB4LTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjwhLS0gZXJyb3ItbWVzc2FnZSBlcyBlbCBtYW5zYWplIHF1ZSBhcGFyZWNlIGFiYWpvIGRlbCBjb21wb25lbnRlIC0tPlxyXG48ZXJyb3ItbWVzc2FnZVxyXG4gIFtsYWJlbF09XCJsYWJlbFwiXHJcbiAgW2NvbnRyb2xzXT1cImNvbnRyb2xzXCJcclxuICBbdmFsaWRhdG9yTWVzc2FnZV09XCJ2YWxpZGF0b3JNZXNzYWdlXCJcclxuICBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiXHJcbiAgW3Rvb2x0aXBNZXNzYWdlXT1cInRvb2x0aXBNZXNzYWdlXCI+PC9lcnJvci1tZXNzYWdlPlxyXG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export class DatePicker {
|
|
2
|
+
}
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxVQUFVO0NBU3RCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIERhdGVQaWNrZXIge1xyXG4gIHNob3dMYWJlbD86IGJvb2xlYW47XHJcbiAgYXV0b2NvbXBsZXRlPzogc3RyaW5nO1xyXG4gIG5vQXV0b0NvbXBsZXRlTnVsbD86IGJvb2xlYW47XHJcbiAgZm9jdXNJbml0aWFsPzogYm9vbGVhbjtcclxuICB2YWxpZGF0b3JNZXNzYWdlPzogYm9vbGVhbjtcclxuICB0b29sdGlwTWVzc2FnZT86IGJvb2xlYW47XHJcbiAgc3VibWl0dGVkPzogYm9vbGVhbjtcclxuICB2YWxpZGF0b3JBbGVydD86IGJvb2xlYW47XHJcbn1cclxuIl19
|