iss-ctrl 0.0.1
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/components/autocomplete/autocomplete.component.d.ts +6 -0
- package/components/base-ctrl.d.ts +33 -0
- package/components/checkbox/checkbox.component.d.ts +16 -0
- package/components/chips/chips.component.d.ts +6 -0
- package/components/ctrl-array/ctrl-array.component.d.ts +6 -0
- package/components/date-picker/date-adapter.d.ts +37 -0
- package/components/date-picker/date-picker.component.d.ts +15 -0
- package/components/date-range-picker/date-range-picker.component.d.ts +19 -0
- package/components/datetime-picker/datetime-picker.component.d.ts +14 -0
- package/components/datetime-range-picker/datetime-range-picker.component.d.ts +6 -0
- package/components/file-picker/file-picker.component.d.ts +17 -0
- package/components/hints/hints.component.d.ts +9 -0
- package/components/input/input.component.d.ts +8 -0
- package/components/mobile/COUNTRIES.d.ts +2 -0
- package/components/mobile/mobile.component.d.ts +26 -0
- package/components/mobile/phone.service.d.ts +17 -0
- package/components/note/note.component.d.ts +6 -0
- package/components/plate-number/plate-number.component.d.ts +16 -0
- package/components/radio/radio.component.d.ts +11 -0
- package/components/select/select.component.d.ts +20 -0
- package/components/slide-toggle/slide-toggle.component.d.ts +7 -0
- package/components/textarea/textarea.component.d.ts +6 -0
- package/components/time-picker/time-picker.component.d.ts +19 -0
- package/components/toggle-button/toggle-button.component.d.ts +16 -0
- package/directives/droppable.directive.d.ts +10 -0
- package/esm2022/components/autocomplete/autocomplete.component.mjs +17 -0
- package/esm2022/components/base-ctrl.mjs +93 -0
- package/esm2022/components/checkbox/checkbox.component.mjs +73 -0
- package/esm2022/components/chips/chips.component.mjs +17 -0
- package/esm2022/components/ctrl-array/ctrl-array.component.mjs +17 -0
- package/esm2022/components/date-picker/date-adapter.mjs +183 -0
- package/esm2022/components/date-picker/date-picker.component.mjs +55 -0
- package/esm2022/components/date-range-picker/date-range-picker.component.mjs +101 -0
- package/esm2022/components/datetime-picker/datetime-picker.component.mjs +79 -0
- package/esm2022/components/datetime-range-picker/datetime-range-picker.component.mjs +17 -0
- package/esm2022/components/file-picker/file-picker.component.mjs +121 -0
- package/esm2022/components/hints/hints.component.mjs +66 -0
- package/esm2022/components/input/input.component.mjs +32 -0
- package/esm2022/components/mobile/COUNTRIES.mjs +2041 -0
- package/esm2022/components/mobile/mobile.component.mjs +141 -0
- package/esm2022/components/mobile/phone.service.mjs +99 -0
- package/esm2022/components/note/note.component.mjs +17 -0
- package/esm2022/components/plate-number/plate-number.component.mjs +114 -0
- package/esm2022/components/radio/radio.component.mjs +40 -0
- package/esm2022/components/select/select.component.mjs +124 -0
- package/esm2022/components/slide-toggle/slide-toggle.component.mjs +23 -0
- package/esm2022/components/textarea/textarea.component.mjs +17 -0
- package/esm2022/components/time-picker/time-picker.component.mjs +169 -0
- package/esm2022/components/toggle-button/toggle-button.component.mjs +87 -0
- package/esm2022/directives/droppable.directive.mjs +39 -0
- package/esm2022/interfaces/country.interface.mjs +2 -0
- package/esm2022/interfaces/date-range-emission-object.mjs +2 -0
- package/esm2022/interfaces/hint.interface.mjs +2 -0
- package/esm2022/interfaces/iso2.interface.mjs +2 -0
- package/esm2022/interfaces/mobile.interface.mjs +2 -0
- package/esm2022/interfaces/option.interface.mjs +2 -0
- package/esm2022/interfaces/time.interface.mjs +2 -0
- package/esm2022/iss-ctrl.mjs +5 -0
- package/esm2022/pipes/select-status.pipe.mjs +18 -0
- package/esm2022/public-api.mjs +20 -0
- package/fesm2022/iss-ctrl.mjs +3659 -0
- package/fesm2022/iss-ctrl.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/interfaces/country.interface.d.ts +10 -0
- package/interfaces/date-range-emission-object.d.ts +5 -0
- package/interfaces/hint.interface.d.ts +5 -0
- package/interfaces/iso2.interface.d.ts +1 -0
- package/interfaces/mobile.interface.d.ts +11 -0
- package/interfaces/option.interface.d.ts +4 -0
- package/interfaces/time.interface.d.ts +5 -0
- package/package.json +25 -0
- package/pipes/select-status.pipe.d.ts +8 -0
- package/public-api.d.ts +19 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Component, input, signal, } from "@angular/core";
|
|
2
|
+
import { NG_VALUE_ACCESSOR, ReactiveFormsModule } from "@angular/forms";
|
|
3
|
+
import { BaseCtrl } from "../base-ctrl";
|
|
4
|
+
import { MatCheckboxModule } from "@angular/material/checkbox";
|
|
5
|
+
import { SelectStatusPipe } from "../../pipes/select-status.pipe";
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/material/checkbox";
|
|
8
|
+
export class CheckboxComponent extends BaseCtrl {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments);
|
|
11
|
+
this.options = input.required();
|
|
12
|
+
this.selectedOptions = signal(new Map());
|
|
13
|
+
}
|
|
14
|
+
writeValue(value) {
|
|
15
|
+
this.#reset();
|
|
16
|
+
if (value === null || value === undefined) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const values = value.split(",").map((val) => val.trim());
|
|
20
|
+
let selectedOptions = this.options().filter((option) => values.includes(option.value));
|
|
21
|
+
this.addToSelectedOptionsMap(this.#selectedOptionsMapFactory(selectedOptions));
|
|
22
|
+
this.ctrl.setValue(selectedOptions);
|
|
23
|
+
}
|
|
24
|
+
addToSelectedOptionsMap(option) {
|
|
25
|
+
if (option) {
|
|
26
|
+
this.selectedOptions = signal(option);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
onCheckboxChange(checked, value) {
|
|
30
|
+
const selectedOption = this.options().find(option => option.value == value);
|
|
31
|
+
this.selectedOptions.update((prev) => {
|
|
32
|
+
const options = prev;
|
|
33
|
+
if (checked)
|
|
34
|
+
options.set(selectedOption?.value, selectedOption);
|
|
35
|
+
else
|
|
36
|
+
options.delete(selectedOption?.value);
|
|
37
|
+
return options;
|
|
38
|
+
});
|
|
39
|
+
this.getEmissionValue(this.selectedOptions());
|
|
40
|
+
}
|
|
41
|
+
stringifySelectedOptions() {
|
|
42
|
+
if (!this.selectedOptions()?.size) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
return Array.from(this.selectedOptions(), ([value]) => value).join();
|
|
46
|
+
}
|
|
47
|
+
getEmissionValue(options) {
|
|
48
|
+
this.addToSelectedOptionsMap(options);
|
|
49
|
+
this.emitValue(this.stringifySelectedOptions());
|
|
50
|
+
}
|
|
51
|
+
#selectedOptionsMapFactory(selectedOptions) {
|
|
52
|
+
let selectedOptionsMap = new Map();
|
|
53
|
+
for (let option of selectedOptions) {
|
|
54
|
+
selectedOptionsMap.set(option.value, option);
|
|
55
|
+
}
|
|
56
|
+
return selectedOptionsMap;
|
|
57
|
+
}
|
|
58
|
+
#reset() {
|
|
59
|
+
this.selectedOptions().clear();
|
|
60
|
+
this.ctrl.setValue(null);
|
|
61
|
+
}
|
|
62
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: CheckboxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
63
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: CheckboxComponent, isStandalone: true, selector: "iss-ctrl-checkbox", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null } }, providers: [
|
|
64
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: CheckboxComponent, multi: true },
|
|
65
|
+
], usesInheritance: true, ngImport: i0, template: "<ul class=\"list-unstyled\">\r\n @for (option of options(); track option.value; ) {\r\n <li class=\"mb-2\">\r\n <mat-checkbox\r\n [checked]=\"option | selectStatus: selectedOptions()\"\r\n (change)=\"onCheckboxChange($event.checked, option.value)\"\r\n >\r\n {{ option.label }}\r\n </mat-checkbox>\r\n </li>\r\n }\r\n</ul>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "pipe", type: SelectStatusPipe, name: "selectStatus" }] }); }
|
|
66
|
+
}
|
|
67
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
68
|
+
type: Component,
|
|
69
|
+
args: [{ selector: "iss-ctrl-checkbox", standalone: true, imports: [ReactiveFormsModule, MatCheckboxModule, SelectStatusPipe], providers: [
|
|
70
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: CheckboxComponent, multi: true },
|
|
71
|
+
], template: "<ul class=\"list-unstyled\">\r\n @for (option of options(); track option.value; ) {\r\n <li class=\"mb-2\">\r\n <mat-checkbox\r\n [checked]=\"option | selectStatus: selectedOptions()\"\r\n (change)=\"onCheckboxChange($event.checked, option.value)\"\r\n >\r\n {{ option.label }}\r\n </mat-checkbox>\r\n </li>\r\n }\r\n</ul>\r\n" }]
|
|
72
|
+
}] });
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQWUsTUFBTSxHQUFrQixNQUFNLGVBQWUsQ0FBQztBQUNyRixPQUFPLEVBQUMsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRXRDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGdDQUFnQyxDQUFDOzs7QUFZaEUsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFFBQVE7SUFWL0M7O1FBV0UsWUFBTyxHQUEwQixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEQsb0JBQWUsR0FBd0MsTUFBTSxDQUFDLElBQUksR0FBRyxFQUFrQixDQUFDLENBQUM7S0E2RDFGO0lBM0RVLFVBQVUsQ0FBQyxLQUFvQjtRQUN0QyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDZCxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzFDLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQWEsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFD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RSxnQkFBZ0IsQ0FBQyxhQUd4RDt3QkFDVCxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLG1CQUFtQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7cUJBQzFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIGlucHV0LCBJbnB1dFNpZ25hbCwgc2lnbmFsLCBXcml0YWJsZVNpZ25hbCx9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7TkdfVkFMVUVfQUNDRVNTT1IsIFJlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge0Jhc2VDdHJsfSBmcm9tIFwiLi4vYmFzZS1jdHJsXCI7XHJcbmltcG9ydCB7T3B0aW9ufSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9vcHRpb24uaW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7TWF0Q2hlY2tib3hNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveFwiO1xyXG5pbXBvcnQge1NlbGVjdFN0YXR1c1BpcGV9IGZyb20gXCIuLi8uLi9waXBlcy9zZWxlY3Qtc3RhdHVzLnBpcGVcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImlzcy1jdHJsLWNoZWNrYm94XCIsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbUmVhY3RpdmVGb3Jtc01vZHVsZSwgTWF0Q2hlY2tib3hNb2R1bGUsIFNlbGVjdFN0YXR1c1BpcGVdLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vY2hlY2tib3guY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL2NoZWNrYm94LmNvbXBvbmVudC5zY3NzXCIsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7cHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBDaGVja2JveENvbXBvbmVudCwgbXVsdGk6IHRydWV9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGVja2JveENvbXBvbmVudCBleHRlbmRzIEJhc2VDdHJsIHtcclxuICBvcHRpb25zOiBJbnB1dFNpZ25hbDxPcHRpb25bXT4gPSBpbnB1dC5yZXF1aXJlZCgpO1xyXG4gIHNlbGVjdGVkT3B0aW9uczogV3JpdGFibGVTaWduYWw8TWFwPHN0cmluZywgT3B0aW9uPj4gPSBzaWduYWwobmV3IE1hcDxzdHJpbmcsIE9wdGlvbj4oKSk7XHJcblxyXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyB8IG51bGwpIHtcclxuICAgIHRoaXMuI3Jlc2V0KCk7XHJcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB2YWx1ZXM6IHN0cmluZ1tdID0gdmFsdWUuc3BsaXQoXCIsXCIpLm1hcCgodmFsOiBzdHJpbmcpID0+IHZhbC50cmltKCkpO1xyXG5cclxuICAgIGxldCBzZWxlY3RlZE9wdGlvbnM6IE9wdGlvbltdID0gdGhpcy5vcHRpb25zKCkuZmlsdGVyKChvcHRpb246IE9wdGlvbikgPT4gdmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkpO1xyXG4gICAgdGhpcy5hZGRUb1NlbGVjdGVkT3B0aW9uc01hcCh0aGlzLiNzZWxlY3RlZE9wdGlvbnNNYXBGYWN0b3J5KHNlbGVjdGVkT3B0aW9ucykpO1xyXG4gICAgdGhpcy5jdHJsLnNldFZhbHVlKHNlbGVjdGVkT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBhZGRUb1NlbGVjdGVkT3B0aW9uc01hcChvcHRpb246IE1hcDxzdHJpbmcsIE9wdGlvbj4pIHtcclxuICAgIGlmIChvcHRpb24pIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBzaWduYWwob3B0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2hlY2tib3hDaGFuZ2UoY2hlY2tlZDogYm9vbGVhbiwgdmFsdWU6IHN0cmluZykge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRPcHRpb24gPSB0aGlzLm9wdGlvbnMoKS5maW5kKG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT0gdmFsdWUpO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zLnVwZGF0ZSgocHJldikgPT4ge1xyXG4gICAgICBjb25zdCBvcHRpb25zID0gcHJldjtcclxuXHJcbiAgICAgIGlmIChjaGVja2VkKSBvcHRpb25zLnNldChzZWxlY3RlZE9wdGlvbj8udmFsdWUhLCBzZWxlY3RlZE9wdGlvbiEpO1xyXG4gICAgICBlbHNlIG9wdGlvbnMuZGVsZXRlKHNlbGVjdGVkT3B0aW9uPy52YWx1ZSEpO1xyXG5cclxuICAgICAgcmV0dXJuIG9wdGlvbnM7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmdldEVtaXNzaW9uVmFsdWUodGhpcy5zZWxlY3RlZE9wdGlvbnMoKSk7XHJcbiAgfVxyXG5cclxuICBzdHJpbmdpZnlTZWxlY3RlZE9wdGlvbnMoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRPcHRpb25zKCk/LnNpemUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5zZWxlY3RlZE9wdGlvbnMoKSwgKFt2YWx1ZV0pID0+IHZhbHVlKS5qb2luKCk7XHJcbiAgfVxyXG5cclxuICBnZXRFbWlzc2lvblZhbHVlKG9wdGlvbnM6IGFueSkge1xyXG4gICAgdGhpcy5hZGRUb1NlbGVjdGVkT3B0aW9uc01hcChvcHRpb25zKTtcclxuICAgIHRoaXMuZW1pdFZhbHVlKHRoaXMuc3RyaW5naWZ5U2VsZWN0ZWRPcHRpb25zKCkpO1xyXG4gIH1cclxuXHJcbiAgI3NlbGVjdGVkT3B0aW9uc01hcEZhY3Rvcnkoc2VsZWN0ZWRPcHRpb25zOiBPcHRpb25bXSkge1xyXG4gICAgbGV0IHNlbGVjdGVkT3B0aW9uc01hcDogTWFwPHN0cmluZywgT3B0aW9uPiA9IG5ldyBNYXAoKTtcclxuXHJcbiAgICBmb3IgKGxldCBvcHRpb24gb2Ygc2VsZWN0ZWRPcHRpb25zKSB7XHJcbiAgICAgIHNlbGVjdGVkT3B0aW9uc01hcC5zZXQob3B0aW9uLnZhbHVlLCBvcHRpb24pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHNlbGVjdGVkT3B0aW9uc01hcDtcclxuICB9XHJcblxyXG4gICNyZXNldCgpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zKCkuY2xlYXIoKTtcclxuICAgIHRoaXMuY3RybC5zZXRWYWx1ZShudWxsKTtcclxuICB9XHJcbn1cclxuIiwiPHVsIGNsYXNzPVwibGlzdC11bnN0eWxlZFwiPlxyXG4gIEBmb3IgKG9wdGlvbiBvZiBvcHRpb25zKCk7IHRyYWNrIG9wdGlvbi52YWx1ZTsgKSB7XHJcbiAgICA8bGkgY2xhc3M9XCJtYi0yXCI+XHJcbiAgICAgIDxtYXQtY2hlY2tib3hcclxuICAgICAgICBbY2hlY2tlZF09XCJvcHRpb24gfCBzZWxlY3RTdGF0dXM6IHNlbGVjdGVkT3B0aW9ucygpXCJcclxuICAgICAgICAoY2hhbmdlKT1cIm9uQ2hlY2tib3hDaGFuZ2UoJGV2ZW50LmNoZWNrZWQsIG9wdGlvbi52YWx1ZSlcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XHJcbiAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgPC9saT5cclxuICB9XHJcbjwvdWw+XHJcbiJdfQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Component } from "@angular/core";
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from "@angular/forms";
|
|
3
|
+
import { BaseCtrl } from "../base-ctrl";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class ChipsComponent extends BaseCtrl {
|
|
6
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ChipsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
7
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: ChipsComponent, isStandalone: true, selector: "iss-ctrl-chips", providers: [
|
|
8
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: ChipsComponent, multi: true }
|
|
9
|
+
], usesInheritance: true, ngImport: i0, template: "<p>chips works!</p>\r\n", styles: [""] }); }
|
|
10
|
+
}
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ChipsComponent, decorators: [{
|
|
12
|
+
type: Component,
|
|
13
|
+
args: [{ selector: "iss-ctrl-chips", standalone: true, imports: [], providers: [
|
|
14
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: ChipsComponent, multi: true }
|
|
15
|
+
], template: "<p>chips works!</p>\r\n" }]
|
|
16
|
+
}] });
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvY2hpcHMvY2hpcHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvY2hpcHMvY2hpcHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sY0FBYyxDQUFDOztBQVl0QyxNQUFNLE9BQU8sY0FBZSxTQUFRLFFBQVE7OEdBQS9CLGNBQWM7a0dBQWQsY0FBYyw2REFKZDtZQUNULEVBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQztTQUN2RSxpRENaSCx5QkFDQTs7MkZEYWEsY0FBYztrQkFWMUIsU0FBUzsrQkFDRSxnQkFBZ0IsY0FDZCxJQUFJLFdBQ1AsRUFBRSxhQUdBO3dCQUNULEVBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQztxQkFDdkUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7QmFzZUN0cmx9IGZyb20gXCIuLi9iYXNlLWN0cmxcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImlzcy1jdHJsLWNoaXBzXCIsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXSxcclxuICB0ZW1wbGF0ZVVybDogXCIuL2NoaXBzLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi9jaGlwcy5jb21wb25lbnQuc2Nzc1wiLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge3Byb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogQ2hpcHNDb21wb25lbnQsIG11bHRpOiB0cnVlfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIENoaXBzQ29tcG9uZW50IGV4dGVuZHMgQmFzZUN0cmwge1xyXG5cclxufVxyXG4iLCI8cD5jaGlwcyB3b3JrcyE8L3A+XHJcbiJdfQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Component } from "@angular/core";
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from "@angular/forms";
|
|
3
|
+
import { BaseCtrl } from "../base-ctrl";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class CtrlArrayComponent extends BaseCtrl {
|
|
6
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: CtrlArrayComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
7
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: CtrlArrayComponent, isStandalone: true, selector: "iss-ctrl-ctrl-array", providers: [
|
|
8
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: CtrlArrayComponent, multi: true }
|
|
9
|
+
], usesInheritance: true, ngImport: i0, template: "<p>ctrl-array works!</p>\r\n", styles: [""] }); }
|
|
10
|
+
}
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: CtrlArrayComponent, decorators: [{
|
|
12
|
+
type: Component,
|
|
13
|
+
args: [{ selector: "iss-ctrl-ctrl-array", standalone: true, imports: [], providers: [
|
|
14
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: CtrlArrayComponent, multi: true }
|
|
15
|
+
], template: "<p>ctrl-array works!</p>\r\n" }]
|
|
16
|
+
}] });
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3RybC1hcnJheS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pc3MtY3RybC9zcmMvY29tcG9uZW50cy9jdHJsLWFycmF5L2N0cmwtYXJyYXkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvY3RybC1hcnJheS9jdHJsLWFycmF5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGNBQWMsQ0FBQzs7QUFZdEMsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFFBQVE7OEdBQW5DLGtCQUFrQjtrR0FBbEIsa0JBQWtCLGtFQUpsQjtZQUNULEVBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDO1NBQzNFLGlEQ1pILDhCQUNBOzsyRkRhYSxrQkFBa0I7a0JBVjlCLFNBQVM7K0JBQ0UscUJBQXFCLGNBQ25CLElBQUksV0FDUCxFQUFFLGFBR0E7d0JBQ1QsRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDO3FCQUMzRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge05HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtCYXNlQ3RybH0gZnJvbSBcIi4uL2Jhc2UtY3RybFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiaXNzLWN0cmwtY3RybC1hcnJheVwiLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW10sXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9jdHJsLWFycmF5LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi9jdHJsLWFycmF5LmNvbXBvbmVudC5zY3NzXCIsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7cHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBDdHJsQXJyYXlDb21wb25lbnQsIG11bHRpOiB0cnVlfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEN0cmxBcnJheUNvbXBvbmVudCBleHRlbmRzIEJhc2VDdHJsIHtcclxuXHJcbn1cclxuIiwiPHA+Y3RybC1hcnJheSB3b3JrcyE8L3A+XHJcbiJdfQ==
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { Inject, Injectable, Optional } from "@angular/core";
|
|
2
|
+
import { DateAdapter, MAT_DATE_LOCALE } from "@angular/material/core";
|
|
3
|
+
import { addDays, addMonths, addYears, format, formatISO, getDate, getDay, getDaysInMonth, getMonth, getYear, isDate, isValid, parse, parseISO, } from "date-fns";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
const WEEK_STARTS_ON = 0;
|
|
6
|
+
export const DATE_FORMAT_ADAPTER = {
|
|
7
|
+
parse: {
|
|
8
|
+
dateInput: "dd/MM/yyyy"
|
|
9
|
+
},
|
|
10
|
+
display: {
|
|
11
|
+
dateInput: "dd/MM/yyyy",
|
|
12
|
+
monthYearLabel: "LLLL y",
|
|
13
|
+
dateA11yLabel: "dd/MM/yyyy",
|
|
14
|
+
monthYearA11yLabel: "MMMM y"
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
/** Creates an array and fills it with values. */
|
|
18
|
+
function range(length, valueFunction) {
|
|
19
|
+
const valuesArray = Array(length);
|
|
20
|
+
for (let i = 0; i < length; i++) {
|
|
21
|
+
valuesArray[i] = valueFunction(i);
|
|
22
|
+
}
|
|
23
|
+
return valuesArray;
|
|
24
|
+
}
|
|
25
|
+
// date-fns doesn't have a way to read/print month names or days of the week directly,
|
|
26
|
+
// so we get them by formatting a date with a format that produces the desired month/day.
|
|
27
|
+
const MONTH_FORMATS = {
|
|
28
|
+
long: "LLLL",
|
|
29
|
+
short: "LLL",
|
|
30
|
+
narrow: "LLLLL",
|
|
31
|
+
};
|
|
32
|
+
const DAY_OF_WEEK_FORMATS = {
|
|
33
|
+
long: "EEEE",
|
|
34
|
+
short: "EEE",
|
|
35
|
+
narrow: "EEEEE",
|
|
36
|
+
};
|
|
37
|
+
export class ISSDateAdapter extends DateAdapter {
|
|
38
|
+
constructor(matDateLocale) {
|
|
39
|
+
super();
|
|
40
|
+
this.setLocale(matDateLocale);
|
|
41
|
+
}
|
|
42
|
+
getYear(date) {
|
|
43
|
+
return getYear(date);
|
|
44
|
+
}
|
|
45
|
+
getMonth(date) {
|
|
46
|
+
return getMonth(date);
|
|
47
|
+
}
|
|
48
|
+
getDate(date) {
|
|
49
|
+
return getDate(date);
|
|
50
|
+
}
|
|
51
|
+
getDayOfWeek(date) {
|
|
52
|
+
return getDay(date);
|
|
53
|
+
}
|
|
54
|
+
getMonthNames(style) {
|
|
55
|
+
const pattern = MONTH_FORMATS[style];
|
|
56
|
+
return range(12, i => this.format(new Date(2017, i, 1), pattern));
|
|
57
|
+
}
|
|
58
|
+
getDateNames() {
|
|
59
|
+
const dtf = typeof Intl !== "undefined"
|
|
60
|
+
? new Intl.DateTimeFormat(this.locale.code, {
|
|
61
|
+
day: "numeric",
|
|
62
|
+
timeZone: "utc",
|
|
63
|
+
})
|
|
64
|
+
: null;
|
|
65
|
+
return range(31, i => {
|
|
66
|
+
if (dtf) {
|
|
67
|
+
// date-fns doesn't appear to support this functionality.
|
|
68
|
+
// Fall back to `Intl` on supported browsers.
|
|
69
|
+
const date = new Date();
|
|
70
|
+
date.setUTCFullYear(2017, 0, i + 1);
|
|
71
|
+
date.setUTCHours(0, 0, 0, 0);
|
|
72
|
+
return dtf.format(date).replace(/[\u200e\u200f]/g, "");
|
|
73
|
+
}
|
|
74
|
+
return i + "";
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
getDayOfWeekNames(style) {
|
|
78
|
+
const pattern = DAY_OF_WEEK_FORMATS[style];
|
|
79
|
+
return range(7, i => this.format(new Date(2017, 0, i + 1), pattern));
|
|
80
|
+
}
|
|
81
|
+
getYearName(date) {
|
|
82
|
+
return this.format(date, "y");
|
|
83
|
+
}
|
|
84
|
+
getFirstDayOfWeek() {
|
|
85
|
+
return WEEK_STARTS_ON;
|
|
86
|
+
}
|
|
87
|
+
getNumDaysInMonth(date) {
|
|
88
|
+
return getDaysInMonth(date);
|
|
89
|
+
}
|
|
90
|
+
clone(date) {
|
|
91
|
+
return new Date(date.getTime());
|
|
92
|
+
}
|
|
93
|
+
createDate(year, month, date) {
|
|
94
|
+
const result = new Date();
|
|
95
|
+
result.setFullYear(year, month, date);
|
|
96
|
+
result.setHours(0, 0, 0, 0);
|
|
97
|
+
return result;
|
|
98
|
+
}
|
|
99
|
+
today() {
|
|
100
|
+
return new Date();
|
|
101
|
+
}
|
|
102
|
+
parse(value, parseFormat) {
|
|
103
|
+
if (typeof value === "string" && value.length > 0) {
|
|
104
|
+
const iso8601Date = parseISO(value);
|
|
105
|
+
if (this.isValid(iso8601Date)) {
|
|
106
|
+
return iso8601Date;
|
|
107
|
+
}
|
|
108
|
+
const formats = Array.isArray(parseFormat) ? parseFormat : [parseFormat];
|
|
109
|
+
if (!parseFormat.length) {
|
|
110
|
+
throw Error("Formats array must not be empty.");
|
|
111
|
+
}
|
|
112
|
+
for (const currentFormat of formats) {
|
|
113
|
+
const fromFormat = parse(value, currentFormat, new Date(), { locale: this.locale });
|
|
114
|
+
if (this.isValid(fromFormat)) {
|
|
115
|
+
return fromFormat;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return this.invalid();
|
|
119
|
+
}
|
|
120
|
+
else if (typeof value === "number") {
|
|
121
|
+
return new Date(value);
|
|
122
|
+
}
|
|
123
|
+
else if (value instanceof Date) {
|
|
124
|
+
return this.clone(value);
|
|
125
|
+
}
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
format(date, displayFormat) {
|
|
129
|
+
if (!this.isValid(date)) {
|
|
130
|
+
throw Error("DateFnsAdapter: Cannot format invalid date.");
|
|
131
|
+
}
|
|
132
|
+
return format(date, displayFormat, { locale: this.locale });
|
|
133
|
+
}
|
|
134
|
+
addCalendarYears(date, years) {
|
|
135
|
+
return addYears(date, years);
|
|
136
|
+
}
|
|
137
|
+
addCalendarMonths(date, months) {
|
|
138
|
+
return addMonths(date, months);
|
|
139
|
+
}
|
|
140
|
+
addCalendarDays(date, days) {
|
|
141
|
+
return addDays(date, days);
|
|
142
|
+
}
|
|
143
|
+
toIso8601(date) {
|
|
144
|
+
return formatISO(date, { representation: "date" });
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings
|
|
148
|
+
* (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an
|
|
149
|
+
* invalid date for all other values.
|
|
150
|
+
*/
|
|
151
|
+
deserialize(value) {
|
|
152
|
+
if (typeof value === "string") {
|
|
153
|
+
if (!value) {
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
const date = parseISO(value);
|
|
157
|
+
if (this.isValid(date)) {
|
|
158
|
+
return date;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return super.deserialize(value);
|
|
162
|
+
}
|
|
163
|
+
isDateInstance(obj) {
|
|
164
|
+
return isDate(obj);
|
|
165
|
+
}
|
|
166
|
+
isValid(date) {
|
|
167
|
+
return isValid(date);
|
|
168
|
+
}
|
|
169
|
+
invalid() {
|
|
170
|
+
return new Date(NaN);
|
|
171
|
+
}
|
|
172
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ISSDateAdapter, deps: [{ token: MAT_DATE_LOCALE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
173
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ISSDateAdapter }); }
|
|
174
|
+
}
|
|
175
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ISSDateAdapter, decorators: [{
|
|
176
|
+
type: Injectable
|
|
177
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
178
|
+
type: Optional
|
|
179
|
+
}, {
|
|
180
|
+
type: Inject,
|
|
181
|
+
args: [MAT_DATE_LOCALE]
|
|
182
|
+
}] }] });
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvZGF0ZS1waWNrZXIvZGF0ZS1hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUMsV0FBVyxFQUFFLGVBQWUsRUFBaUIsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRixPQUFPLEVBQ0wsT0FBTyxFQUNQLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxPQUFPLEVBQ1AsTUFBTSxFQUNOLGNBQWMsRUFDZCxRQUFRLEVBQ1IsT0FBTyxFQUNQLE1BQU0sRUFDTixPQUFPLEVBRVAsS0FBSyxFQUNMLFFBQVEsR0FDVCxNQUFNLFVBQVUsQ0FBQzs7QUFFbEIsTUFBTSxjQUFjLEdBQVcsQ0FBQyxDQUFDO0FBRWpDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFtQjtJQUNqRCxLQUFLLEVBQUU7UUFDTCxTQUFTLEVBQUUsWUFBWTtLQUN4QjtJQUNELE9BQU8sRUFBRTtRQUNQLFNBQVMsRUFBRSxZQUFZO1FBQ3ZCLGNBQWMsRUFBRSxRQUFRO1FBQ3hCLGFBQWEsRUFBRSxZQUFZO1FBQzNCLGtCQUFrQixFQUFFLFFBQVE7S0FDN0I7Q0FDRixDQUFDO0FBR0YsaURBQWlEO0FBQ2pELFNBQVMsS0FBSyxDQUFJLE1BQWMsRUFBRSxhQUFtQztJQUNuRSxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2hDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENB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IHtJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0RhdGVBZGFwdGVyLCBNQVRfREFURV9MT0NBTEUsIE1hdERhdGVGb3JtYXRzfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gIGFkZERheXMsXHJcbiAgYWRkTW9udGhzLFxyXG4gIGFkZFllYXJzLFxyXG4gIGZvcm1hdCxcclxuICBmb3JtYXRJU08sXHJcbiAgZ2V0RGF0ZSxcclxuICBnZXREYXksXHJcbiAgZ2V0RGF5c0luTW9udGgsXHJcbiAgZ2V0TW9udGgsXHJcbiAgZ2V0WWVhcixcclxuICBpc0RhdGUsXHJcbiAgaXNWYWxpZCxcclxuICBMb2NhbGUsXHJcbiAgcGFyc2UsXHJcbiAgcGFyc2VJU08sXHJcbn0gZnJvbSBcImRhdGUtZm5zXCI7XHJcblxyXG5jb25zdCBXRUVLX1NUQVJUU19PTjogbnVtYmVyID0gMDtcclxuXHJcbmV4cG9ydCBjb25zdCBEQVRFX0ZPUk1BVF9BREFQVEVSOiBNYXREYXRlRm9ybWF0cyA9IHtcclxuICBwYXJzZToge1xyXG4gICAgZGF0ZUlucHV0OiBcImRkL01NL3l5eXlcIlxyXG4gIH0sXHJcbiAgZGlzcGxheToge1xyXG4gICAgZGF0ZUlucHV0OiBcImRkL01NL3l5eXlcIixcclxuICAgIG1vbnRoWWVhckxhYmVsOiBcIkxMTEwgeVwiLFxyXG4gICAgZGF0ZUExMXlMYWJlbDogXCJkZC9NTS95eXl5XCIsXHJcbiAgICBtb250aFllYXJBMTF5TGFiZWw6IFwiTU1NTSB5XCJcclxuICB9XHJcbn07XHJcblxyXG5cclxuLyoqIENyZWF0ZXMgYW4gYXJyYXkgYW5kIGZpbGxzIGl0IHdpdGggdmFsdWVzLiAqL1xyXG5mdW5jdGlvbiByYW5nZTxUPihsZW5ndGg6IG51bWJlciwgdmFsdWVGdW5jdGlvbjogKGluZGV4OiBudW1iZXIpID0+IFQpOiBUW10ge1xyXG4gIGNvbnN0IHZhbHVlc0FycmF5ID0gQXJyYXkobGVuZ3RoKTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XHJcbiAgICB2YWx1ZXNBcnJheVtpXSA9IHZhbHVlRnVuY3Rpb24oaSk7XHJcbiAgfVxyXG4gIHJldHVybiB2YWx1ZXNBcnJheTtcclxufVxyXG5cclxuLy8gZGF0ZS1mbnMgZG9lc24ndCBoYXZlIGEgd2F5IHRvIHJlYWQvcHJpbnQgbW9udGggbmFtZXMgb3IgZGF5cyBvZiB0aGUgd2VlayBkaXJlY3RseSxcclxuLy8gc28gd2UgZ2V0IHRoZW0gYnkgZm9ybWF0dGluZyBhIGRhdGUgd2l0aCBhIGZvcm1hdCB0aGF0IHByb2R1Y2VzIHRoZSBkZXNpcmVkIG1vbnRoL2RheS5cclxuY29uc3QgTU9OVEhfRk9STUFUUyA9IHtcclxuICBsb25nOiBcIkxMTExcIixcclxuICBzaG9ydDogXCJMTExcIixcclxuICBuYXJyb3c6IFwiTExMTExcIixcclxufTtcclxuXHJcbmNvbnN0IERBWV9PRl9XRUVLX0ZPUk1BVFMgPSB7XHJcbiAgbG9uZzogXCJFRUVFXCIsXHJcbiAgc2hvcnQ6IFwiRUVFXCIsXHJcbiAgbmFycm93OiBcIkVFRUVFXCIsXHJcbn07XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBJU1NEYXRlQWRhcHRlciBleHRlbmRzIERhdGVBZGFwdGVyPERhdGUsIExvY2FsZT4ge1xyXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoTUFUX0RBVEVfTE9DQUxFKSBtYXREYXRlTG9jYWxlOiB7fSkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMuc2V0TG9jYWxlKG1hdERhdGVMb2NhbGUgYXMgTG9jYWxlKTtcclxuICB9XHJcblxyXG4gIGdldFllYXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gZ2V0WWVhcihkYXRlKTtcclxuICB9XHJcblxyXG4gIGdldE1vbnRoKGRhdGU6IERhdGUpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIGdldE1vbnRoKGRhdGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGF0ZShkYXRlOiBEYXRlKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBnZXREYXRlKGRhdGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGF5T2ZXZWVrKGRhdGU6IERhdGUpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIGdldERheShkYXRlKTtcclxuICB9XHJcblxyXG4gIGdldE1vbnRoTmFtZXMoc3R5bGU6IFwibG9uZ1wiIHwgXCJzaG9ydFwiIHwgXCJuYXJyb3dcIik6IHN0cmluZ1tdIHtcclxuICAgIGNvbnN0IHBhdHRlcm4gPSBNT05USF9GT1JNQVRTW3N0eWxlXTtcclxuICAgIHJldHVybiByYW5nZSgxMiwgaSA9PiB0aGlzLmZvcm1hdChuZXcgRGF0ZSgyMDE3LCBpLCAxKSwgcGF0dGVybikpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGF0ZU5hbWVzKCk6IHN0cmluZ1tdIHtcclxuICAgIGNvbnN0IGR0ZiA9XHJcbiAgICAgIHR5cGVvZiBJbnRsICE9PSBcInVuZGVmaW5lZFwiXHJcbiAgICAgICAgPyBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0aGlzLmxvY2FsZS5jb2RlLCB7XHJcbiAgICAgICAgICBkYXk6IFwibnVtZXJpY1wiLFxyXG4gICAgICAgICAgdGltZVpvbmU6IFwidXRjXCIsXHJcbiAgICAgICAgfSlcclxuICAgICAgICA6IG51bGw7XHJcblxyXG4gICAgcmV0dXJuIHJhbmdlKDMxLCBpID0+IHtcclxuICAgICAgaWYgKGR0Zikge1xyXG4gICAgICAgIC8vIGRhdGUtZm5zIGRvZXNuJ3QgYXBwZWFyIHRvIHN1cHBvcnQgdGhpcyBmdW5jdGlvbmFsaXR5LlxyXG4gICAgICAgIC8vIEZhbGwgYmFjayB0byBgSW50bGAgb24gc3VwcG9ydGVkIGJyb3dzZXJzLlxyXG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoMjAxNywgMCwgaSArIDEpO1xyXG4gICAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XHJcbiAgICAgICAgcmV0dXJuIGR0Zi5mb3JtYXQoZGF0ZSkucmVwbGFjZSgvW1xcdTIwMGVcXHUyMDBmXS9nLCBcIlwiKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIGkgKyBcIlwiO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXREYXlPZldlZWtOYW1lcyhzdHlsZTogXCJsb25nXCIgfCBcInNob3J0XCIgfCBcIm5hcnJvd1wiKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3QgcGF0dGVybiA9IERBWV9PRl9XRUVLX0ZPUk1BVFNbc3R5bGVdO1xyXG4gICAgcmV0dXJuIHJhbmdlKDcsIGkgPT4gdGhpcy5mb3JtYXQobmV3IERhdGUoMjAxNywgMCwgaSArIDEpLCBwYXR0ZXJuKSk7XHJcbiAgfVxyXG5cclxuICBnZXRZZWFyTmFtZShkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1hdChkYXRlLCBcInlcIik7XHJcbiAgfVxyXG5cclxuICBnZXRGaXJzdERheU9mV2VlaygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIFdFRUtfU1RBUlRTX09OO1xyXG4gIH1cclxuXHJcbiAgZ2V0TnVtRGF5c0luTW9udGgoZGF0ZTogRGF0ZSk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gZ2V0RGF5c0luTW9udGgoZGF0ZSk7XHJcbiAgfVxyXG5cclxuICBjbG9uZShkYXRlOiBEYXRlKTogRGF0ZSB7XHJcbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkpO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlRGF0ZSh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRhdGU6IG51bWJlcik6IERhdGUge1xyXG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IERhdGUoKTtcclxuICAgIHJlc3VsdC5zZXRGdWxsWWVhcih5ZWFyLCBtb250aCwgZGF0ZSk7XHJcbiAgICByZXN1bHQuc2V0SG91cnMoMCwgMCwgMCwgMCk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHRvZGF5KCk6IERhdGUge1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKCk7XHJcbiAgfVxyXG5cclxuICBwYXJzZSh2YWx1ZTogYW55LCBwYXJzZUZvcm1hdDogc3RyaW5nIHwgc3RyaW5nW10pOiBEYXRlIHwgbnVsbCB7XHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgaXNvODYwMURhdGUgPSBwYXJzZUlTTyh2YWx1ZSk7XHJcblxyXG4gICAgICBpZiAodGhpcy5pc1ZhbGlkKGlzbzg2MDFEYXRlKSkge1xyXG4gICAgICAgIHJldHVybiBpc284NjAxRGF0ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgZm9ybWF0cyA9IEFycmF5LmlzQXJyYXkocGFyc2VGb3JtYXQpID8gcGFyc2VGb3JtYXQgOiBbcGFyc2VGb3JtYXRdO1xyXG5cclxuICAgICAgaWYgKCFwYXJzZUZvcm1hdC5sZW5ndGgpIHtcclxuICAgICAgICB0aHJvdyBFcnJvcihcIkZvcm1hdHMgYXJyYXkgbXVzdCBub3QgYmUgZW1wdHkuXCIpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBmb3IgKGNvbnN0IGN1cnJlbnRGb3JtYXQgb2YgZm9ybWF0cykge1xyXG4gICAgICAgIGNvbnN0IGZyb21Gb3JtYXQgPSBwYXJzZSh2YWx1ZSwgY3VycmVudEZvcm1hdCwgbmV3IERhdGUoKSwge2xvY2FsZTogdGhpcy5sb2NhbGV9KTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaXNWYWxpZChmcm9tRm9ybWF0KSkge1xyXG4gICAgICAgICAgcmV0dXJuIGZyb21Gb3JtYXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5pbnZhbGlkKCk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikge1xyXG4gICAgICByZXR1cm4gbmV3IERhdGUodmFsdWUpO1xyXG4gICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY2xvbmUodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0KGRhdGU6IERhdGUsIGRpc3BsYXlGb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXRoaXMuaXNWYWxpZChkYXRlKSkge1xyXG4gICAgICB0aHJvdyBFcnJvcihcIkRhdGVGbnNBZGFwdGVyOiBDYW5ub3QgZm9ybWF0IGludmFsaWQgZGF0ZS5cIik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZvcm1hdChkYXRlLCBkaXNwbGF5Rm9ybWF0LCB7bG9jYWxlOiB0aGlzLmxvY2FsZX0pO1xyXG4gIH1cclxuXHJcbiAgYWRkQ2FsZW5kYXJZZWFycyhkYXRlOiBEYXRlLCB5ZWFyczogbnVtYmVyKTogRGF0ZSB7XHJcbiAgICByZXR1cm4gYWRkWWVhcnMoZGF0ZSwgeWVhcnMpO1xyXG4gIH1cclxuXHJcbiAgYWRkQ2FsZW5kYXJNb250aHMoZGF0ZTogRGF0ZSwgbW9udGhzOiBudW1iZXIpOiBEYXRlIHtcclxuICAgIHJldHVybiBhZGRNb250aHMoZGF0ZSwgbW9udGhzKTtcclxuICB9XHJcblxyXG4gIGFkZENhbGVuZGFyRGF5cyhkYXRlOiBEYXRlLCBkYXlzOiBudW1iZXIpOiBEYXRlIHtcclxuICAgIHJldHVybiBhZGREYXlzKGRhdGUsIGRheXMpO1xyXG4gIH1cclxuXHJcbiAgdG9Jc284NjAxKGRhdGU6IERhdGUpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGZvcm1hdElTTyhkYXRlLCB7cmVwcmVzZW50YXRpb246IFwiZGF0ZVwifSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBnaXZlbiB2YWx1ZSBpZiBnaXZlbiBhIHZhbGlkIERhdGUgb3IgbnVsbC4gRGVzZXJpYWxpemVzIHZhbGlkIElTTyA4NjAxIHN0cmluZ3NcclxuICAgKiAoaHR0cHM6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzMzMzkudHh0KSBpbnRvIHZhbGlkIERhdGVzIGFuZCBlbXB0eSBzdHJpbmcgaW50byBudWxsLiBSZXR1cm5zIGFuXHJcbiAgICogaW52YWxpZCBkYXRlIGZvciBhbGwgb3RoZXIgdmFsdWVzLlxyXG4gICAqL1xyXG4gIG92ZXJyaWRlIGRlc2VyaWFsaXplKHZhbHVlOiBhbnkpOiBEYXRlIHwgbnVsbCB7XHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBkYXRlID0gcGFyc2VJU08odmFsdWUpO1xyXG4gICAgICBpZiAodGhpcy5pc1ZhbGlkKGRhdGUpKSB7XHJcbiAgICAgICAgcmV0dXJuIGRhdGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBzdXBlci5kZXNlcmlhbGl6ZSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBpc0RhdGVJbnN0YW5jZShvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGlzRGF0ZShvYmopO1xyXG4gIH1cclxuXHJcbiAgaXNWYWxpZChkYXRlOiBEYXRlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gaXNWYWxpZChkYXRlKTtcclxuICB9XHJcblxyXG4gIGludmFsaWQoKTogRGF0ZSB7XHJcbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Component, inject, input } from "@angular/core";
|
|
2
|
+
import { BaseCtrl } from "../base-ctrl";
|
|
3
|
+
import { NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule } from "@angular/forms";
|
|
4
|
+
import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from "@angular/material/core";
|
|
5
|
+
import { MatFormFieldModule } from "@angular/material/form-field";
|
|
6
|
+
import { MatDatepickerModule } from "@angular/material/datepicker";
|
|
7
|
+
import { MatInputModule } from "@angular/material/input";
|
|
8
|
+
import { MatIconModule } from "@angular/material/icon";
|
|
9
|
+
import { DATE_FORMAT_ADAPTER, ISSDateAdapter } from "./date-adapter";
|
|
10
|
+
import { DatePipe } from "@angular/common";
|
|
11
|
+
import { enGB } from "date-fns/locale";
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
import * as i1 from "@angular/material/form-field";
|
|
14
|
+
import * as i2 from "@angular/material/input";
|
|
15
|
+
import * as i3 from "@angular/material/datepicker";
|
|
16
|
+
import * as i4 from "@angular/forms";
|
|
17
|
+
export class DatePickerComponent extends BaseCtrl {
|
|
18
|
+
constructor() {
|
|
19
|
+
super(...arguments);
|
|
20
|
+
this.disabledDays = input([]);
|
|
21
|
+
this.minDate = input(null);
|
|
22
|
+
this.maxDate = input(null);
|
|
23
|
+
this.#datePipe = inject(DatePipe);
|
|
24
|
+
this.calendarDaysFilter = (d) => {
|
|
25
|
+
const day = (d || new Date()).getDay();
|
|
26
|
+
return !(this.disabledDays().includes(day));
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
#datePipe;
|
|
30
|
+
emit($event) {
|
|
31
|
+
const selectedDateString = this.#datePipe.transform($event.value, "yyyy-MM-ddTHH:mm:ss") + "Z";
|
|
32
|
+
this.emitValue(selectedDateString);
|
|
33
|
+
}
|
|
34
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DatePickerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
35
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.1.0", type: DatePickerComponent, isStandalone: true, selector: "iss-ctrl-date-picker", inputs: { disabledDays: { classPropertyName: "disabledDays", publicName: "disabledDays", isSignal: true, isRequired: false, transformFunction: null }, minDate: { classPropertyName: "minDate", publicName: "minDate", isSignal: true, isRequired: false, transformFunction: null }, maxDate: { classPropertyName: "maxDate", publicName: "maxDate", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
36
|
+
DatePipe,
|
|
37
|
+
{ provide: DateAdapter, useClass: ISSDateAdapter },
|
|
38
|
+
{ provide: MAT_DATE_FORMATS, useValue: DATE_FORMAT_ADAPTER },
|
|
39
|
+
{ provide: MAT_DATE_LOCALE, useValue: enGB },
|
|
40
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: DatePickerComponent, multi: true },
|
|
41
|
+
{ provide: NG_VALIDATORS, useExisting: DatePickerComponent, multi: true },
|
|
42
|
+
], usesInheritance: true, ngImport: i0, template: "<mat-form-field>\r\n <input\r\n class=\"cursor-pointer\"\r\n matInput\r\n readonly\r\n [matDatepicker]=\"picker\"\r\n (click)=\"picker.open(); markAsTouched()\"\r\n [formControl]=\"ctrl\"\r\n [min]=\"minDate()\"\r\n [max]=\"maxDate()\"\r\n [placeholder]=\"'dd/mm/yyyy'\"\r\n [matDatepickerFilter]=\"calendarDaysFilter\"\r\n (dateChange)=\"emit($event)\"\r\n />\r\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker></mat-datepicker>\r\n</mat-form-field>\r\n", styles: ["::ng-deep tr:has(>.mat-calendar-body-label[colspan=\"7\"]){opacity:0!important;display:none}::ng-deep .mat-datepicker-content .mat-calendar{height:unset!important}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i3.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i3.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i3.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
|
|
43
|
+
}
|
|
44
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
45
|
+
type: Component,
|
|
46
|
+
args: [{ selector: "iss-ctrl-date-picker", standalone: true, imports: [MatFormFieldModule, MatInputModule, MatDatepickerModule, MatIconModule, ReactiveFormsModule], providers: [
|
|
47
|
+
DatePipe,
|
|
48
|
+
{ provide: DateAdapter, useClass: ISSDateAdapter },
|
|
49
|
+
{ provide: MAT_DATE_FORMATS, useValue: DATE_FORMAT_ADAPTER },
|
|
50
|
+
{ provide: MAT_DATE_LOCALE, useValue: enGB },
|
|
51
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: DatePickerComponent, multi: true },
|
|
52
|
+
{ provide: NG_VALIDATORS, useExisting: DatePickerComponent, multi: true },
|
|
53
|
+
], template: "<mat-form-field>\r\n <input\r\n class=\"cursor-pointer\"\r\n matInput\r\n readonly\r\n [matDatepicker]=\"picker\"\r\n (click)=\"picker.open(); markAsTouched()\"\r\n [formControl]=\"ctrl\"\r\n [min]=\"minDate()\"\r\n [max]=\"maxDate()\"\r\n [placeholder]=\"'dd/mm/yyyy'\"\r\n [matDatepickerFilter]=\"calendarDaysFilter\"\r\n (dateChange)=\"emit($event)\"\r\n />\r\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker></mat-datepicker>\r\n</mat-form-field>\r\n", styles: ["::ng-deep tr:has(>.mat-calendar-body-label[colspan=\"7\"]){opacity:0!important;display:none}::ng-deep .mat-datepicker-content .mat-calendar{height:unset!important}\n"] }]
|
|
54
|
+
}] });
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUFDLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBWSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hHLE9BQU8sRUFBQyxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDdEYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUEwQixtQkFBbUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzFGLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLG1CQUFtQixFQUFFLGNBQWMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25FLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQWlCckMsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFFBQVE7SUFmakQ7O1FBZ0JFLGlCQUFZLEdBQTBCLEtBQUssQ0FBVyxFQUFFLENBQUMsQ0FBQztRQUMxRCxZQUFPLEdBQTZCLEtBQUssQ0FBYyxJQUFJLENBQUMsQ0FBQztRQUM3RCxZQUFPLEdBQTZCLEtBQUssQ0FBYyxJQUFJLENBQUMsQ0FBQztRQUM3RCxjQUFTLEdBQWEsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTdCLHVCQUFrQixHQUFHLENBQUMsQ0FBYyxFQUFXLEVBQUU7WUFDekQsTUFBTSxHQUFHLEdBQVcsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQy9DLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUM7S0FNSDtJQVhDLFNBQVMsQ0FBOEI7SUFPN0IsSUFBSSxDQUFDLE1BQW9DO1FBQ2pELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUMvRixJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDckMsQ0FBQzs4R0FkVSxtQkFBbUI7a0dBQW5CLG1CQUFtQix3ZEFUbkI7WUFDVCxRQUFRO1lBQ1IsRUFBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUM7WUFDaEQsRUFBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFDO1lBQzFELEVBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFDO1lBQzFDLEVBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDO1lBQzNFLEVBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQztTQUN4RSxpREN6QkgseWlCQWlCQSw4TkRBWSxrQkFBa0IsMFdBQUUsY0FBYywwV0FBRSxtQkFBbUIsaWdCQUFFLGFBQWEsOEJBQUUsbUJBQW1COzsyRkFVMUYsbUJBQW1CO2tCQWYvQixTQUFTOytCQUNFLHNCQUFzQixjQUNwQixJQUFJLFdBR1AsQ0FBQyxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixDQUFDLGFBQzNGO3dCQUNULFFBQVE7d0JBQ1IsRUFBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUM7d0JBQ2hELEVBQUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBQzt3QkFDMUQsRUFBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUM7d0JBQzFDLEVBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcscUJBQXFCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQzt3QkFDM0UsRUFBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcscUJBQXFCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQztxQkFDeEUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgaW5qZWN0LCBpbnB1dCwgSW5wdXRTaWduYWx9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7QmFzZUN0cmx9IGZyb20gXCIuLi9iYXNlLWN0cmxcIjtcclxuaW1wb3J0IHtOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9yfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtEYXRlQWRhcHRlciwgTUFUX0RBVEVfRk9STUFUUywgTUFUX0RBVEVfTE9DQUxFfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xyXG5pbXBvcnQge01hdEZvcm1GaWVsZE1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcclxuaW1wb3J0IHtNYXREYXRlcGlja2VySW5wdXRFdmVudCwgTWF0RGF0ZXBpY2tlck1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXJcIjtcclxuaW1wb3J0IHtNYXRJbnB1dE1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2lucHV0XCI7XHJcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcclxuaW1wb3J0IHtEQVRFX0ZPUk1BVF9BREFQVEVSLCBJU1NEYXRlQWRhcHRlcn0gZnJvbSBcIi4vZGF0ZS1hZGFwdGVyXCI7XHJcbmltcG9ydCB7RGF0ZVBpcGV9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtlbkdCfSBmcm9tIFwiZGF0ZS1mbnMvbG9jYWxlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJpc3MtY3RybC1kYXRlLXBpY2tlclwiLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vZGF0ZS1waWNrZXIuY29tcG9uZW50LnNjc3NcIixcclxuICBpbXBvcnRzOiBbTWF0Rm9ybUZpZWxkTW9kdWxlLCBNYXRJbnB1dE1vZHVsZSwgTWF0RGF0ZXBpY2tlck1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZV0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBEYXRlUGlwZSxcclxuICAgIHtwcm92aWRlOiBEYXRlQWRhcHRlciwgdXNlQ2xhc3M6IElTU0RhdGVBZGFwdGVyfSxcclxuICAgIHtwcm92aWRlOiBNQVRfREFURV9GT1JNQVRTLCB1c2VWYWx1ZTogREFURV9GT1JNQVRfQURBUFRFUn0sXHJcbiAgICB7cHJvdmlkZTogTUFUX0RBVEVfTE9DQUxFLCB1c2VWYWx1ZTogZW5HQn0sXHJcbiAgICB7cHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBEYXRlUGlja2VyQ29tcG9uZW50LCBtdWx0aTogdHJ1ZX0sXHJcbiAgICB7cHJvdmlkZTogTkdfVkFMSURBVE9SUywgdXNlRXhpc3Rpbmc6IERhdGVQaWNrZXJDb21wb25lbnQsIG11bHRpOiB0cnVlfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0ZVBpY2tlckNvbXBvbmVudCBleHRlbmRzIEJhc2VDdHJsIGltcGxlbWVudHMgVmFsaWRhdG9yIHtcclxuICBkaXNhYmxlZERheXM6IElucHV0U2lnbmFsPG51bWJlcltdPiA9IGlucHV0PG51bWJlcltdPihbXSk7XHJcbiAgbWluRGF0ZTogSW5wdXRTaWduYWw8RGF0ZSB8IG51bGw+ID0gaW5wdXQ8RGF0ZSB8IG51bGw+KG51bGwpO1xyXG4gIG1heERhdGU6IElucHV0U2lnbmFsPERhdGUgfCBudWxsPiA9IGlucHV0PERhdGUgfCBudWxsPihudWxsKTtcclxuICAjZGF0ZVBpcGU6IERhdGVQaXBlID0gaW5qZWN0KERhdGVQaXBlKTtcclxuXHJcbiAgcHJvdGVjdGVkIGNhbGVuZGFyRGF5c0ZpbHRlciA9IChkOiBEYXRlIHwgbnVsbCk6IGJvb2xlYW4gPT4ge1xyXG4gICAgY29uc3QgZGF5OiBudW1iZXIgPSAoZCB8fCBuZXcgRGF0ZSgpKS5nZXREYXkoKTtcclxuICAgIHJldHVybiAhKHRoaXMuZGlzYWJsZWREYXlzKCkuaW5jbHVkZXMoZGF5KSk7XHJcbiAgfTtcclxuXHJcbiAgcHJvdGVjdGVkIGVtaXQoJGV2ZW50OiBNYXREYXRlcGlja2VySW5wdXRFdmVudDxhbnk+KSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZERhdGVTdHJpbmcgPSB0aGlzLiNkYXRlUGlwZS50cmFuc2Zvcm0oJGV2ZW50LnZhbHVlLCBcInl5eXktTU0tZGRUSEg6bW06c3NcIikgKyBcIlpcIjtcclxuICAgIHRoaXMuZW1pdFZhbHVlKHNlbGVjdGVkRGF0ZVN0cmluZyk7XHJcbiAgfVxyXG59XHJcbiIsIjxtYXQtZm9ybS1maWVsZD5cclxuICA8aW5wdXRcclxuICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgbWF0SW5wdXRcclxuICAgIHJlYWRvbmx5XHJcbiAgICBbbWF0RGF0ZXBpY2tlcl09XCJwaWNrZXJcIlxyXG4gICAgKGNsaWNrKT1cInBpY2tlci5vcGVuKCk7IG1hcmtBc1RvdWNoZWQoKVwiXHJcbiAgICBbZm9ybUNvbnRyb2xdPVwiY3RybFwiXHJcbiAgICBbbWluXT1cIm1pbkRhdGUoKVwiXHJcbiAgICBbbWF4XT1cIm1heERhdGUoKVwiXHJcbiAgICBbcGxhY2Vob2xkZXJdPVwiJ2RkL21tL3l5eXknXCJcclxuICAgIFttYXREYXRlcGlja2VyRmlsdGVyXT1cImNhbGVuZGFyRGF5c0ZpbHRlclwiXHJcbiAgICAoZGF0ZUNoYW5nZSk9XCJlbWl0KCRldmVudClcIlxyXG4gIC8+XHJcbiAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRJY29uU3VmZml4IFtmb3JdPVwicGlja2VyXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XHJcbiAgPG1hdC1kYXRlcGlja2VyICNwaWNrZXI+PC9tYXQtZGF0ZXBpY2tlcj5cclxuPC9tYXQtZm9ybS1maWVsZD5cclxuIl19
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { Component, inject, input, output } from "@angular/core";
|
|
2
|
+
import { FormControl, FormGroup, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from "@angular/forms";
|
|
3
|
+
import { BaseCtrl } from "../base-ctrl";
|
|
4
|
+
import { DatePipe } from "@angular/common";
|
|
5
|
+
import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from "@angular/material/core";
|
|
6
|
+
import { MatDatepickerModule } from "@angular/material/datepicker";
|
|
7
|
+
import { MatFormFieldModule } from "@angular/material/form-field";
|
|
8
|
+
import { DATE_FORMAT_ADAPTER, ISSDateAdapter } from "../date-picker/date-adapter";
|
|
9
|
+
import { enGB } from "date-fns/locale";
|
|
10
|
+
import { Subscription } from "rxjs";
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "@angular/material/form-field";
|
|
13
|
+
import * as i2 from "@angular/material/datepicker";
|
|
14
|
+
import * as i3 from "@angular/forms";
|
|
15
|
+
export class DateRangePickerComponent extends BaseCtrl {
|
|
16
|
+
constructor() {
|
|
17
|
+
super(...arguments);
|
|
18
|
+
this.disabledDays = input([]);
|
|
19
|
+
this.minDate = input(null);
|
|
20
|
+
this.maxDate = input(null);
|
|
21
|
+
this.onDateRangeObjectChange = output();
|
|
22
|
+
this.range = new FormGroup({
|
|
23
|
+
start: new FormControl(null),
|
|
24
|
+
end: new FormControl(null),
|
|
25
|
+
});
|
|
26
|
+
this.#datePipe = inject(DatePipe);
|
|
27
|
+
this.#sub = new Subscription();
|
|
28
|
+
this.calendarDaysFilter = (d) => {
|
|
29
|
+
const day = (d || new Date()).getDay();
|
|
30
|
+
return !(this.disabledDays().includes(day));
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
#datePipe;
|
|
34
|
+
#sub;
|
|
35
|
+
ngOnInit() {
|
|
36
|
+
this.#sub.add(this.range.valueChanges.subscribe((values) => {
|
|
37
|
+
if (values.start && values.end) {
|
|
38
|
+
this.emitValue(this.#getEmissionValue(values.start, values.end));
|
|
39
|
+
this.onDateRangeObjectChange.emit(this.#getEmissionObject(values.start, values.end));
|
|
40
|
+
}
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
43
|
+
writeValue(value) {
|
|
44
|
+
if (typeof value === "string") {
|
|
45
|
+
const valArr = value?.split(",");
|
|
46
|
+
const valObj = {
|
|
47
|
+
start: valArr[0],
|
|
48
|
+
end: valArr[1],
|
|
49
|
+
};
|
|
50
|
+
this.range.patchValue(valObj, { emitEvent: false });
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
ngOnDestroy() {
|
|
54
|
+
this.#sub.unsubscribe();
|
|
55
|
+
}
|
|
56
|
+
#getDuration(startDate, endDate) {
|
|
57
|
+
let start = new Date(startDate).getTime();
|
|
58
|
+
let end = new Date(endDate).getTime();
|
|
59
|
+
return Math.ceil((end - start) / (1000 * 60 * 60 * 24) + 1);
|
|
60
|
+
}
|
|
61
|
+
#getFormatedDate(date) {
|
|
62
|
+
return this.#datePipe.transform(date, "yyyy-MM-ddTHH:mm:ss") + "Z";
|
|
63
|
+
}
|
|
64
|
+
#getFormatedEndDate(endDate) {
|
|
65
|
+
let inputDate = new Date(new Date(endDate).setHours(23, 59, 59));
|
|
66
|
+
return this.#getFormatedDate(inputDate);
|
|
67
|
+
}
|
|
68
|
+
#getEmissionValue(start, end) {
|
|
69
|
+
let formatedStart = this.#getFormatedDate(start);
|
|
70
|
+
let formatedEnd = this.#getFormatedEndDate(end);
|
|
71
|
+
return `${formatedStart},${formatedEnd}`;
|
|
72
|
+
}
|
|
73
|
+
#getEmissionObject(start, end) {
|
|
74
|
+
return {
|
|
75
|
+
duration: this.#getDuration(start, end),
|
|
76
|
+
start: this.#getFormatedDate(start),
|
|
77
|
+
end: this.#getFormatedEndDate(end)
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DateRangePickerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
81
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.1.0", type: DateRangePickerComponent, isStandalone: true, selector: "iss-ctrl-date-range-picker", inputs: { disabledDays: { classPropertyName: "disabledDays", publicName: "disabledDays", isSignal: true, isRequired: false, transformFunction: null }, minDate: { classPropertyName: "minDate", publicName: "minDate", isSignal: true, isRequired: false, transformFunction: null }, maxDate: { classPropertyName: "maxDate", publicName: "maxDate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onDateRangeObjectChange: "onDateRangeObjectChange" }, providers: [
|
|
82
|
+
DatePipe,
|
|
83
|
+
{ provide: DateAdapter, useClass: ISSDateAdapter },
|
|
84
|
+
{ provide: MAT_DATE_FORMATS, useValue: DATE_FORMAT_ADAPTER },
|
|
85
|
+
{ provide: MAT_DATE_LOCALE, useValue: enGB },
|
|
86
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: DateRangePickerComponent, multi: true },
|
|
87
|
+
], usesInheritance: true, ngImport: i0, template: "<mat-form-field>\r\n <mat-date-range-input\r\n [formGroup]=\"range\"\r\n [rangePicker]=\"picker\"\r\n [min]=\"minDate()\"\r\n [max]=\"maxDate()\"\r\n [dateFilter]=\"calendarDaysFilter\"\r\n >\r\n <input\r\n matStartDate\r\n formControlName=\"start\"\r\n placeholder=\"dd/mm/yyyy\"\r\n (click)=\"picker.open(); markAsTouched()\"\r\n />\r\n <input\r\n matEndDate\r\n formControlName=\"end\"\r\n placeholder=\"dd/mm/yyyy\"\r\n (click)=\"picker.open(); markAsTouched()\"\r\n />\r\n </mat-date-range-input>\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #picker></mat-date-range-picker>\r\n</mat-form-field>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i2.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i2.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i2.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i2.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "ngmodule", type: FormsModule }, { 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: "ngmodule", type: ReactiveFormsModule }, { 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"] }] }); }
|
|
88
|
+
}
|
|
89
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DateRangePickerComponent, decorators: [{
|
|
90
|
+
type: Component,
|
|
91
|
+
args: [{ selector: "iss-ctrl-date-range-picker", standalone: true, imports: [
|
|
92
|
+
MatFormFieldModule, MatDatepickerModule, FormsModule, ReactiveFormsModule,
|
|
93
|
+
], providers: [
|
|
94
|
+
DatePipe,
|
|
95
|
+
{ provide: DateAdapter, useClass: ISSDateAdapter },
|
|
96
|
+
{ provide: MAT_DATE_FORMATS, useValue: DATE_FORMAT_ADAPTER },
|
|
97
|
+
{ provide: MAT_DATE_LOCALE, useValue: enGB },
|
|
98
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: DateRangePickerComponent, multi: true },
|
|
99
|
+
], template: "<mat-form-field>\r\n <mat-date-range-input\r\n [formGroup]=\"range\"\r\n [rangePicker]=\"picker\"\r\n [min]=\"minDate()\"\r\n [max]=\"maxDate()\"\r\n [dateFilter]=\"calendarDaysFilter\"\r\n >\r\n <input\r\n matStartDate\r\n formControlName=\"start\"\r\n placeholder=\"dd/mm/yyyy\"\r\n (click)=\"picker.open(); markAsTouched()\"\r\n />\r\n <input\r\n matEndDate\r\n formControlName=\"end\"\r\n placeholder=\"dd/mm/yyyy\"\r\n (click)=\"picker.open(); markAsTouched()\"\r\n />\r\n </mat-date-range-input>\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #picker></mat-date-range-picker>\r\n</mat-form-field>\r\n" }]
|
|
100
|
+
}] });
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvZGF0ZS1yYW5nZS1waWNrZXIvZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvZGF0ZS1yYW5nZS1waWNrZXIvZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFrQyxNQUFNLEVBQW1CLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNHLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDdEYsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLG1CQUFtQixFQUFFLGNBQWMsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ2hGLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNyQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7OztBQW1CbEMsTUFBTSxPQUFPLHdCQUF5QixTQUFRLFFBQVE7SUFoQnREOztRQWlCRSxpQkFBWSxH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QztTQUNqRixpREMxQkgsbXVCQXdCQSx5RERSSSxrQkFBa0IsMFdBQUUsbUJBQW1CLG96QkFBRSxXQUFXLGtqQkFBRSxtQkFBbUI7OzJGQVloRSx3QkFBd0I7a0JBaEJwQyxTQUFTOytCQUNFLDRCQUE0QixjQUMxQixJQUFJLFdBQ1A7d0JBQ1Asa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLG1CQUFtQjtxQkFDMUUsYUFHVTt3QkFDVCxRQUFRO3dCQUNSLEVBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFDO3dCQUNoRCxFQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUM7d0JBQzFELEVBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFDO3dCQUMxQyxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLDBCQUEwQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7cUJBQ2pGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIGluamVjdCwgaW5wdXQsIElucHV0U2lnbmFsLCBPbkRlc3Ryb3ksIE9uSW5pdCwgb3V0cHV0LCBPdXRwdXRFbWl0dGVyUmVmfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0Zvcm1Db250cm9sLCBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiwgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7QmFzZUN0cmx9IGZyb20gXCIuLi9iYXNlLWN0cmxcIjtcclxuaW1wb3J0IHtEYXRlUGlwZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge0RhdGVBZGFwdGVyLCBNQVRfREFURV9GT1JNQVRTLCBNQVRfREFURV9MT0NBTEV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jb3JlXCI7XHJcbmltcG9ydCB7TWF0RGF0ZXBpY2tlck1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXJcIjtcclxuaW1wb3J0IHtNYXRGb3JtRmllbGRNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XHJcbmltcG9ydCB7REFURV9GT1JNQVRfQURBUFRFUiwgSVNTRGF0ZUFkYXB0ZXJ9IGZyb20gXCIuLi9kYXRlLXBpY2tlci9kYXRlLWFkYXB0ZXJcIjtcclxuaW1wb3J0IHtlbkdCfSBmcm9tIFwiZGF0ZS1mbnMvbG9jYWxlXCI7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge0RhdGVSYW5nZUVtaXNzaW9uT2JqZWN0fSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9kYXRlLXJhbmdlLWVtaXNzaW9uLW9iamVjdFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiaXNzLWN0cmwtZGF0ZS1yYW5nZS1waWNrZXJcIixcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSwgTWF0RGF0ZXBpY2tlck1vZHVsZSwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogXCIuL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQuc2Nzc1wiLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgRGF0ZVBpcGUsXHJcbiAgICB7cHJvdmlkZTogRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBJU1NEYXRlQWRhcHRlcn0sXHJcbiAgICB7cHJvdmlkZTogTUFUX0RBVEVfRk9STUFUUywgdXNlVmFsdWU6IERBVEVfRk9STUFUX0FEQVBURVJ9LFxyXG4gICAge3Byb3ZpZGU6IE1BVF9EQVRFX0xPQ0FMRSwgdXNlVmFsdWU6IGVuR0J9LFxyXG4gICAge3Byb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50LCBtdWx0aTogdHJ1ZX0sXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUN0cmwgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgZGlzYWJsZWREYXlzOiBJbnB1dFNpZ25hbDxudW1iZXJbXT4gPSBpbnB1dDxudW1iZXJbXT4oW10pO1xyXG4gIG1pbkRhdGU6IElucHV0U2lnbmFsPERhdGUgfCBudWxsPiA9IGlucHV0PERhdGUgfCBudWxsPihudWxsKTtcclxuICBtYXhEYXRlOiBJbnB1dFNpZ25hbDxEYXRlIHwgbnVsbD4gPSBpbnB1dDxEYXRlIHwgbnVsbD4obnVsbCk7XHJcbiAgb25EYXRlUmFuZ2VPYmplY3RDaGFuZ2U6IE91dHB1dEVtaXR0ZXJSZWY8RGF0ZVJhbmdlRW1pc3Npb25PYmplY3Q+ID0gb3V0cHV0KCk7XHJcbiAgcmVhZG9ubHkgcmFuZ2U6IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xyXG4gICAgc3RhcnQ6IG5ldyBGb3JtQ29udHJvbChudWxsKSxcclxuICAgIGVuZDogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG4gIH0pO1xyXG4gICNkYXRlUGlwZTogRGF0ZVBpcGUgPSBpbmplY3QoRGF0ZVBpcGUpO1xyXG4gICNzdWI6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLiNzdWIuYWRkKFxyXG4gICAgICB0aGlzLnJhbmdlLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlcykgPT4ge1xyXG4gICAgICAgIGlmICh2YWx1ZXMuc3RhcnQgJiYgdmFsdWVzLmVuZCkge1xyXG4gICAgICAgICAgdGhpcy5lbWl0VmFsdWUodGhpcy4jZ2V0RW1pc3Npb25WYWx1ZSh2YWx1ZXMuc3RhcnQsIHZhbHVlcy5lbmQpKTtcclxuICAgICAgICAgIHRoaXMub25EYXRlUmFuZ2VPYmplY3RDaGFuZ2UuZW1pdCh0aGlzLiNnZXRFbWlzc2lvbk9iamVjdCh2YWx1ZXMuc3RhcnQsIHZhbHVlcy5lbmQpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgRm9ybURhdGEgfCBudWxsKSB7XHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgIGNvbnN0IHZhbEFycjogc3RyaW5nW10gPSB2YWx1ZT8uc3BsaXQoXCIsXCIpO1xyXG4gICAgICBjb25zdCB2YWxPYmogPSB7XHJcbiAgICAgICAgc3RhcnQ6IHZhbEFyclswXSxcclxuICAgICAgICBlbmQ6IHZhbEFyclsxXSxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5yYW5nZS5wYXRjaFZhbHVlKHZhbE9iaiwge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy4jc3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgY2FsZW5kYXJEYXlzRmlsdGVyID0gKGQ6IERhdGUgfCBudWxsKTogYm9vbGVhbiA9PiB7XHJcbiAgICBjb25zdCBkYXk6IG51bWJlciA9IChkIHx8IG5ldyBEYXRlKCkpLmdldERheSgpO1xyXG4gICAgcmV0dXJuICEodGhpcy5kaXNhYmxlZERheXMoKS5pbmNsdWRlcyhkYXkpKTtcclxuICB9O1xyXG5cclxuICAjZ2V0RHVyYXRpb24oc3RhcnREYXRlOiBEYXRlLCBlbmREYXRlOiBEYXRlKSB7XHJcbiAgICBsZXQgc3RhcnQ6IG51bWJlciA9IG5ldyBEYXRlKHN0YXJ0RGF0ZSkuZ2V0VGltZSgpO1xyXG4gICAgbGV0IGVuZDogbnVtYmVyID0gbmV3IERhdGUoZW5kRGF0ZSkuZ2V0VGltZSgpO1xyXG4gICAgcmV0dXJuIE1hdGguY2VpbCgoZW5kIC0gc3RhcnQpIC8gKDEwMDAgKiA2MCAqIDYwICogMjQpICsgMSk7XHJcbiAgfVxyXG5cclxuICAjZ2V0Rm9ybWF0ZWREYXRlKGRhdGU6IERhdGUpIHtcclxuICAgIHJldHVybiB0aGlzLiNkYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZSwgXCJ5eXl5LU1NLWRkVEhIOm1tOnNzXCIpICsgXCJaXCI7XHJcbiAgfVxyXG5cclxuICAjZ2V0Rm9ybWF0ZWRFbmREYXRlKGVuZERhdGU6IERhdGUpIHtcclxuICAgIGxldCBpbnB1dERhdGU6IERhdGUgPSBuZXcgRGF0ZShuZXcgRGF0ZShlbmREYXRlKS5zZXRIb3VycygyMywgNTksIDU5KSk7XHJcbiAgICByZXR1cm4gdGhpcy4jZ2V0Rm9ybWF0ZWREYXRlKGlucHV0RGF0ZSk7XHJcbiAgfVxyXG5cclxuICAjZ2V0RW1pc3Npb25WYWx1ZShzdGFydDogRGF0ZSwgZW5kOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGxldCBmb3JtYXRlZFN0YXJ0OiBzdHJpbmcgPSB0aGlzLiNnZXRGb3JtYXRlZERhdGUoc3RhcnQpO1xyXG4gICAgbGV0IGZvcm1hdGVkRW5kOiBzdHJpbmcgPSB0aGlzLiNnZXRGb3JtYXRlZEVuZERhdGUoZW5kKTtcclxuICAgIHJldHVybiBgJHtmb3JtYXRlZFN0YXJ0fSwke2Zvcm1hdGVkRW5kfWA7XHJcbiAgfVxyXG5cclxuICAjZ2V0RW1pc3Npb25PYmplY3Qoc3RhcnQ6IERhdGUsIGVuZDogRGF0ZSk6IERhdGVSYW5nZUVtaXNzaW9uT2JqZWN0IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGR1cmF0aW9uOiB0aGlzLiNnZXREdXJhdGlvbihzdGFydCwgZW5kKSxcclxuICAgICAgc3RhcnQ6IHRoaXMuI2dldEZvcm1hdGVkRGF0ZShzdGFydCksXHJcbiAgICAgIGVuZDogdGhpcy4jZ2V0Rm9ybWF0ZWRFbmREYXRlKGVuZClcclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiIsIjxtYXQtZm9ybS1maWVsZD5cclxuICA8bWF0LWRhdGUtcmFuZ2UtaW5wdXRcclxuICAgIFtmb3JtR3JvdXBdPVwicmFuZ2VcIlxyXG4gICAgW3JhbmdlUGlja2VyXT1cInBpY2tlclwiXHJcbiAgICBbbWluXT1cIm1pbkRhdGUoKVwiXHJcbiAgICBbbWF4XT1cIm1heERhdGUoKVwiXHJcbiAgICBbZGF0ZUZpbHRlcl09XCJjYWxlbmRhckRheXNGaWx0ZXJcIlxyXG4gID5cclxuICAgIDxpbnB1dFxyXG4gICAgICBtYXRTdGFydERhdGVcclxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic3RhcnRcIlxyXG4gICAgICBwbGFjZWhvbGRlcj1cImRkL21tL3l5eXlcIlxyXG4gICAgICAoY2xpY2spPVwicGlja2VyLm9wZW4oKTsgbWFya0FzVG91Y2hlZCgpXCJcclxuICAgIC8+XHJcbiAgICA8aW5wdXRcclxuICAgICAgbWF0RW5kRGF0ZVxyXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbmRcIlxyXG4gICAgICBwbGFjZWhvbGRlcj1cImRkL21tL3l5eXlcIlxyXG4gICAgICAoY2xpY2spPVwicGlja2VyLm9wZW4oKTsgbWFya0FzVG91Y2hlZCgpXCJcclxuICAgIC8+XHJcbiAgPC9tYXQtZGF0ZS1yYW5nZS1pbnB1dD5cclxuICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cInBpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gIDxtYXQtZGF0ZS1yYW5nZS1waWNrZXIgI3BpY2tlcj48L21hdC1kYXRlLXJhbmdlLXBpY2tlcj5cclxuPC9tYXQtZm9ybS1maWVsZD5cclxuIl19
|