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.
Files changed (74) hide show
  1. package/README.md +24 -0
  2. package/components/autocomplete/autocomplete.component.d.ts +6 -0
  3. package/components/base-ctrl.d.ts +33 -0
  4. package/components/checkbox/checkbox.component.d.ts +16 -0
  5. package/components/chips/chips.component.d.ts +6 -0
  6. package/components/ctrl-array/ctrl-array.component.d.ts +6 -0
  7. package/components/date-picker/date-adapter.d.ts +37 -0
  8. package/components/date-picker/date-picker.component.d.ts +15 -0
  9. package/components/date-range-picker/date-range-picker.component.d.ts +19 -0
  10. package/components/datetime-picker/datetime-picker.component.d.ts +14 -0
  11. package/components/datetime-range-picker/datetime-range-picker.component.d.ts +6 -0
  12. package/components/file-picker/file-picker.component.d.ts +17 -0
  13. package/components/hints/hints.component.d.ts +9 -0
  14. package/components/input/input.component.d.ts +8 -0
  15. package/components/mobile/COUNTRIES.d.ts +2 -0
  16. package/components/mobile/mobile.component.d.ts +26 -0
  17. package/components/mobile/phone.service.d.ts +17 -0
  18. package/components/note/note.component.d.ts +6 -0
  19. package/components/plate-number/plate-number.component.d.ts +16 -0
  20. package/components/radio/radio.component.d.ts +11 -0
  21. package/components/select/select.component.d.ts +20 -0
  22. package/components/slide-toggle/slide-toggle.component.d.ts +7 -0
  23. package/components/textarea/textarea.component.d.ts +6 -0
  24. package/components/time-picker/time-picker.component.d.ts +19 -0
  25. package/components/toggle-button/toggle-button.component.d.ts +16 -0
  26. package/directives/droppable.directive.d.ts +10 -0
  27. package/esm2022/components/autocomplete/autocomplete.component.mjs +17 -0
  28. package/esm2022/components/base-ctrl.mjs +93 -0
  29. package/esm2022/components/checkbox/checkbox.component.mjs +73 -0
  30. package/esm2022/components/chips/chips.component.mjs +17 -0
  31. package/esm2022/components/ctrl-array/ctrl-array.component.mjs +17 -0
  32. package/esm2022/components/date-picker/date-adapter.mjs +183 -0
  33. package/esm2022/components/date-picker/date-picker.component.mjs +55 -0
  34. package/esm2022/components/date-range-picker/date-range-picker.component.mjs +101 -0
  35. package/esm2022/components/datetime-picker/datetime-picker.component.mjs +79 -0
  36. package/esm2022/components/datetime-range-picker/datetime-range-picker.component.mjs +17 -0
  37. package/esm2022/components/file-picker/file-picker.component.mjs +121 -0
  38. package/esm2022/components/hints/hints.component.mjs +66 -0
  39. package/esm2022/components/input/input.component.mjs +32 -0
  40. package/esm2022/components/mobile/COUNTRIES.mjs +2041 -0
  41. package/esm2022/components/mobile/mobile.component.mjs +141 -0
  42. package/esm2022/components/mobile/phone.service.mjs +99 -0
  43. package/esm2022/components/note/note.component.mjs +17 -0
  44. package/esm2022/components/plate-number/plate-number.component.mjs +114 -0
  45. package/esm2022/components/radio/radio.component.mjs +40 -0
  46. package/esm2022/components/select/select.component.mjs +124 -0
  47. package/esm2022/components/slide-toggle/slide-toggle.component.mjs +23 -0
  48. package/esm2022/components/textarea/textarea.component.mjs +17 -0
  49. package/esm2022/components/time-picker/time-picker.component.mjs +169 -0
  50. package/esm2022/components/toggle-button/toggle-button.component.mjs +87 -0
  51. package/esm2022/directives/droppable.directive.mjs +39 -0
  52. package/esm2022/interfaces/country.interface.mjs +2 -0
  53. package/esm2022/interfaces/date-range-emission-object.mjs +2 -0
  54. package/esm2022/interfaces/hint.interface.mjs +2 -0
  55. package/esm2022/interfaces/iso2.interface.mjs +2 -0
  56. package/esm2022/interfaces/mobile.interface.mjs +2 -0
  57. package/esm2022/interfaces/option.interface.mjs +2 -0
  58. package/esm2022/interfaces/time.interface.mjs +2 -0
  59. package/esm2022/iss-ctrl.mjs +5 -0
  60. package/esm2022/pipes/select-status.pipe.mjs +18 -0
  61. package/esm2022/public-api.mjs +20 -0
  62. package/fesm2022/iss-ctrl.mjs +3659 -0
  63. package/fesm2022/iss-ctrl.mjs.map +1 -0
  64. package/index.d.ts +5 -0
  65. package/interfaces/country.interface.d.ts +10 -0
  66. package/interfaces/date-range-emission-object.d.ts +5 -0
  67. package/interfaces/hint.interface.d.ts +5 -0
  68. package/interfaces/iso2.interface.d.ts +1 -0
  69. package/interfaces/mobile.interface.d.ts +11 -0
  70. package/interfaces/option.interface.d.ts +4 -0
  71. package/interfaces/time.interface.d.ts +5 -0
  72. package/package.json +25 -0
  73. package/pipes/select-status.pipe.d.ts +8 -0
  74. package/public-api.d.ts +19 -0
@@ -0,0 +1,79 @@
1
+ import { Component, effect, inject, input } from "@angular/core";
2
+ import { BaseCtrl } from "../base-ctrl";
3
+ import { FormControl, FormGroup, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from "@angular/forms";
4
+ import { MatDatepicker, MatDatepickerInput, MatDatepickerToggle } from "@angular/material/datepicker";
5
+ import { MatFormField, MatSuffix } from "@angular/material/form-field";
6
+ import { MatInput } from "@angular/material/input";
7
+ import { DatePipe } from "@angular/common";
8
+ import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from "@angular/material/core";
9
+ import { DATE_FORMAT_ADAPTER, ISSDateAdapter } from "../date-picker/date-adapter";
10
+ import { enGB } from "date-fns/locale";
11
+ import { toSignal } from "@angular/core/rxjs-interop";
12
+ import { TimePickerComponent } from "../time-picker/time-picker.component";
13
+ import { DatePickerComponent } from "../date-picker/date-picker.component";
14
+ import * as i0 from "@angular/core";
15
+ import * as i1 from "@angular/forms";
16
+ export class DatetimePickerComponent extends BaseCtrl {
17
+ constructor() {
18
+ super(...arguments);
19
+ this.disabledDays = input([]);
20
+ this.minDate = input(null);
21
+ this.maxDate = input(null);
22
+ this.datetimePicker = new FormGroup({
23
+ date: new FormControl(),
24
+ time: new FormControl(),
25
+ });
26
+ this.#datePipe = inject(DatePipe);
27
+ this.#formChanges = toSignal(this.datetimePicker.valueChanges);
28
+ this.#effectRef = effect(() => {
29
+ if (this.#formChanges() && this.#formChanges().date && this.#formChanges().time) {
30
+ this.emitValue(this.#getEmissionValue(this.#formChanges().date, this.#formChanges().time));
31
+ }
32
+ });
33
+ }
34
+ #datePipe;
35
+ #formChanges;
36
+ #effectRef;
37
+ ngOnDestroy() {
38
+ this.#effectRef.destroy();
39
+ }
40
+ #getEmissionValue(date, time) {
41
+ const d = new Date(date);
42
+ let timeArr = time.split(":");
43
+ let datetime = new Date(d.setHours(+timeArr[0], +timeArr[1], 0));
44
+ return this.#formatDate(datetime);
45
+ }
46
+ #formatDate(date) {
47
+ return this.#datePipe.transform(date, "yyyy-MM-ddTHH:mm:ss") + "Z";
48
+ }
49
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DatetimePickerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
50
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.1.0", type: DatetimePickerComponent, isStandalone: true, selector: "iss-ctrl-datetime-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: [
51
+ DatePipe,
52
+ { provide: DateAdapter, useClass: ISSDateAdapter },
53
+ { provide: MAT_DATE_FORMATS, useValue: DATE_FORMAT_ADAPTER },
54
+ { provide: MAT_DATE_LOCALE, useValue: enGB },
55
+ { provide: NG_VALUE_ACCESSOR, useExisting: DatetimePickerComponent, multi: true }
56
+ ], usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"datetimePicker\" class=\"d-flex gap-3\">\r\n <iss-ctrl-date-picker class=\"flex-grow-1\" formControlName=\"date\" [minDate]=\"minDate()\" [maxDate]=\"maxDate()\" [disabledDays]=\"disabledDays()\"/>\r\n <iss-ctrl-time-picker class=\"flex-grow-1\" formControlName=\"time\" [min]=\"min()\" [max]=\"max()\"/>\r\n</form>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: TimePickerComponent, selector: "iss-ctrl-time-picker" }, { kind: "component", type: DatePickerComponent, selector: "iss-ctrl-date-picker", inputs: ["disabledDays", "minDate", "maxDate"] }] }); }
57
+ }
58
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DatetimePickerComponent, decorators: [{
59
+ type: Component,
60
+ args: [{ selector: "iss-ctrl-datetime-picker", standalone: true, imports: [
61
+ FormsModule,
62
+ MatDatepicker,
63
+ MatDatepickerInput,
64
+ MatDatepickerToggle,
65
+ MatFormField,
66
+ MatInput,
67
+ MatSuffix,
68
+ ReactiveFormsModule,
69
+ TimePickerComponent,
70
+ DatePickerComponent
71
+ ], providers: [
72
+ DatePipe,
73
+ { provide: DateAdapter, useClass: ISSDateAdapter },
74
+ { provide: MAT_DATE_FORMATS, useValue: DATE_FORMAT_ADAPTER },
75
+ { provide: MAT_DATE_LOCALE, useValue: enGB },
76
+ { provide: NG_VALUE_ACCESSOR, useExisting: DatetimePickerComponent, multi: true }
77
+ ], template: "<form [formGroup]=\"datetimePicker\" class=\"d-flex gap-3\">\r\n <iss-ctrl-date-picker class=\"flex-grow-1\" formControlName=\"date\" [minDate]=\"minDate()\" [maxDate]=\"maxDate()\" [disabledDays]=\"disabledDays()\"/>\r\n <iss-ctrl-time-picker class=\"flex-grow-1\" formControlName=\"time\" [min]=\"min()\" [max]=\"max()\"/>\r\n</form>\r\n" }]
78
+ }] });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lzcy1jdHJsL3NyYy9jb21wb25lbnRzL2RhdGV0aW1lLXBpY2tlci9kYXRldGltZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvZGF0ZXRpbWUtcGlja2VyL2RhdGV0aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBYSxNQUFNLEVBQUUsS0FBSyxFQUF5QixNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNHLE9BQU8sRUFBQyxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRyxPQUFPLEVBQUMsWUFBWSxFQUFFLFNBQVMsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3JFLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFDLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RixPQUFPLEVBQUMsbUJBQW1CLEVBQUUsY0FBYyxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDaEYsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3JDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSw0QkFBNEIs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bkIsWUFBWTt3QkFDWixRQUFRO3dCQUNSLFNBQVM7d0JBQ1QsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLG1CQUFtQjtxQkFDcEIsYUFHVTt3QkFDVCxRQUFRO3dCQUNSLEVBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFDO3dCQUNoRCxFQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUM7d0JBQzFELEVBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFDO3dCQUMxQyxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLHlCQUF5QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7cUJBQ2hGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIGVmZmVjdCwgRWZmZWN0UmVmLCBpbmplY3QsIGlucHV0LCBJbnB1dFNpZ25hbCwgT25EZXN0cm95fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0Jhc2VDdHJsfSBmcm9tIFwiLi4vYmFzZS1jdHJsXCI7XHJcbmltcG9ydCB7Rm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SLCBSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtNYXREYXRlcGlja2VyLCBNYXREYXRlcGlja2VySW5wdXQsIE1hdERhdGVwaWNrZXJUb2dnbGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyXCI7XHJcbmltcG9ydCB7TWF0Rm9ybUZpZWxkLCBNYXRTdWZmaXh9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XHJcbmltcG9ydCB7TWF0SW5wdXR9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xyXG5pbXBvcnQge0RhdGVQaXBlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7RGF0ZUFkYXB0ZXIsIE1BVF9EQVRFX0ZPUk1BVFMsIE1BVF9EQVRFX0xPQ0FMRX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcclxuaW1wb3J0IHtEQVRFX0ZPUk1BVF9BREFQVEVSLCBJU1NEYXRlQWRhcHRlcn0gZnJvbSBcIi4uL2RhdGUtcGlja2VyL2RhdGUtYWRhcHRlclwiO1xyXG5pbXBvcnQge2VuR0J9IGZyb20gXCJkYXRlLWZucy9sb2NhbGVcIjtcclxuaW1wb3J0IHt0b1NpZ25hbH0gZnJvbSBcIkBhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wXCI7XHJcbmltcG9ydCB7VGltZVBpY2tlckNvbXBvbmVudH0gZnJvbSBcIi4uL3RpbWUtcGlja2VyL3RpbWUtcGlja2VyLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0RhdGVQaWNrZXJDb21wb25lbnR9IGZyb20gXCIuLi9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImlzcy1jdHJsLWRhdGV0aW1lLXBpY2tlclwiLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBNYXREYXRlcGlja2VyLFxyXG4gICAgTWF0RGF0ZXBpY2tlcklucHV0LFxyXG4gICAgTWF0RGF0ZXBpY2tlclRvZ2dsZSxcclxuICAgIE1hdEZvcm1GaWVsZCxcclxuICAgIE1hdElucHV0LFxyXG4gICAgTWF0U3VmZml4LFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIFRpbWVQaWNrZXJDb21wb25lbnQsXHJcbiAgICBEYXRlUGlja2VyQ29tcG9uZW50XHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogXCIuL2RhdGV0aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vZGF0ZXRpbWUtcGlja2VyLmNvbXBvbmVudC5zY3NzXCIsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBEYXRlUGlwZSxcclxuICAgIHtwcm92aWRlOiBEYXRlQWRhcHRlciwgdXNlQ2xhc3M6IElTU0RhdGVBZGFwdGVyfSxcclxuICAgIHtwcm92aWRlOiBNQVRfREFURV9GT1JNQVRTLCB1c2VWYWx1ZTogREFURV9GT1JNQVRfQURBUFRFUn0sXHJcbiAgICB7cHJvdmlkZTogTUFUX0RBVEVfTE9DQUxFLCB1c2VWYWx1ZTogZW5HQn0sXHJcbiAgICB7cHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBEYXRldGltZVBpY2tlckNvbXBvbmVudCwgbXVsdGk6IHRydWV9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0ZXRpbWVQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ3RybCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgZGlzYWJsZWREYXlzOiBJbnB1dFNpZ25hbDxudW1iZXJbXT4gPSBpbnB1dDxudW1iZXJbXT4oW10pO1xyXG4gIG1pbkRhdGU6IElucHV0U2lnbmFsPERhdGUgfCBudWxsPiA9IGlucHV0PERhdGUgfCBudWxsPihudWxsKTtcclxuICBtYXhEYXRlOiBJbnB1dFNpZ25hbDxEYXRlIHwgbnVsbD4gPSBpbnB1dDxEYXRlIHwgbnVsbD4obnVsbCk7XHJcbiAgZGF0ZXRpbWVQaWNrZXI6IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xyXG4gICAgZGF0ZTogbmV3IEZvcm1Db250cm9sKCksXHJcbiAgICB0aW1lOiBuZXcgRm9ybUNvbnRyb2woKSxcclxuICB9KTtcclxuICAjZGF0ZVBpcGU6IERhdGVQaXBlID0gaW5qZWN0KERhdGVQaXBlKTtcclxuICAjZm9ybUNoYW5nZXMgPSB0b1NpZ25hbCh0aGlzLmRhdGV0aW1lUGlja2VyLnZhbHVlQ2hhbmdlcyk7XHJcbiAgI2VmZmVjdFJlZjogRWZmZWN0UmVmID0gZWZmZWN0KCgpID0+IHtcclxuICAgIGlmICh0aGlzLiNmb3JtQ2hhbmdlcygpICYmIHRoaXMuI2Zvcm1DaGFuZ2VzKCkuZGF0ZSAmJiB0aGlzLiNmb3JtQ2hhbmdlcygpLnRpbWUpIHtcclxuICAgICAgdGhpcy5lbWl0VmFsdWUodGhpcy4jZ2V0RW1pc3Npb25WYWx1ZSh0aGlzLiNmb3JtQ2hhbmdlcygpLmRhdGUsIHRoaXMuI2Zvcm1DaGFuZ2VzKCkudGltZSkpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuI2VmZmVjdFJlZi5kZXN0cm95KCk7XHJcbiAgfVxyXG5cclxuICAjZ2V0RW1pc3Npb25WYWx1ZShkYXRlOiBzdHJpbmcsIHRpbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBkID0gbmV3IERhdGUoZGF0ZSk7XHJcbiAgICBsZXQgdGltZUFycjogc3RyaW5nW10gPSB0aW1lLnNwbGl0KFwiOlwiKTtcclxuICAgIGxldCBkYXRldGltZTogRGF0ZSA9IG5ldyBEYXRlKGQuc2V0SG91cnMoK3RpbWVBcnJbMF0sICt0aW1lQXJyWzFdLCAwKSk7XHJcbiAgICByZXR1cm4gdGhpcy4jZm9ybWF0RGF0ZShkYXRldGltZSk7XHJcbiAgfVxyXG5cclxuICAjZm9ybWF0RGF0ZShkYXRlOiBEYXRlIHwgbnVsbCkge1xyXG4gICAgcmV0dXJuIHRoaXMuI2RhdGVQaXBlLnRyYW5zZm9ybShkYXRlLCBcInl5eXktTU0tZGRUSEg6bW06c3NcIikgKyBcIlpcIjtcclxuICB9XHJcbn1cclxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJkYXRldGltZVBpY2tlclwiIGNsYXNzPVwiZC1mbGV4IGdhcC0zXCI+XHJcbiAgPGlzcy1jdHJsLWRhdGUtcGlja2VyIGNsYXNzPVwiZmxleC1ncm93LTFcIiBmb3JtQ29udHJvbE5hbWU9XCJkYXRlXCIgW21pbkRhdGVdPVwibWluRGF0ZSgpXCIgW21heERhdGVdPVwibWF4RGF0ZSgpXCIgW2Rpc2FibGVkRGF5c109XCJkaXNhYmxlZERheXMoKVwiLz5cclxuICA8aXNzLWN0cmwtdGltZS1waWNrZXIgY2xhc3M9XCJmbGV4LWdyb3ctMVwiIGZvcm1Db250cm9sTmFtZT1cInRpbWVcIiBbbWluXT1cIm1pbigpXCIgW21heF09XCJtYXgoKVwiLz5cclxuPC9mb3JtPlxyXG4iXX0=
@@ -0,0 +1,17 @@
1
+ import { Component } from "@angular/core";
2
+ import { BaseCtrl } from "../base-ctrl";
3
+ import { NG_VALUE_ACCESSOR } from "@angular/forms";
4
+ import * as i0 from "@angular/core";
5
+ export class DatetimeRangePickerComponent extends BaseCtrl {
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DatetimeRangePickerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
7
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: DatetimeRangePickerComponent, isStandalone: true, selector: "iss-ctrl-datetime-range-picker", providers: [
8
+ { provide: NG_VALUE_ACCESSOR, useExisting: DatetimeRangePickerComponent, multi: true }
9
+ ], usesInheritance: true, ngImport: i0, template: "<p>datetime-range-picker works!</p>\r\n", styles: [""] }); }
10
+ }
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DatetimeRangePickerComponent, decorators: [{
12
+ type: Component,
13
+ args: [{ selector: "iss-ctrl-datetime-range-picker", standalone: true, imports: [], providers: [
14
+ { provide: NG_VALUE_ACCESSOR, useExisting: DatetimeRangePickerComponent, multi: true }
15
+ ], template: "<p>datetime-range-picker works!</p>\r\n" }]
16
+ }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lzcy1jdHJsL3NyYy9jb21wb25lbnRzL2RhdGV0aW1lLXJhbmdlLXBpY2tlci9kYXRldGltZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvZGF0ZXRpbWUtcmFuZ2UtcGlja2VyL2RhdGV0aW1lLXJhbmdlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7O0FBWWpELE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxRQUFROzhHQUE3Qyw0QkFBNEI7a0dBQTVCLDRCQUE0Qiw2RUFKNUI7WUFDVCxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsNEJBQTRCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQztTQUNyRixpRENaSCx5Q0FDQTs7MkZEYWEsNEJBQTRCO2tCQVZ4QyxTQUFTOytCQUNFLGdDQUFnQyxjQUM5QixJQUFJLFdBQ1AsRUFBRSxhQUdBO3dCQUNULEVBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsOEJBQThCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQztxQkFDckYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtCYXNlQ3RybH0gZnJvbSBcIi4uL2Jhc2UtY3RybFwiO1xyXG5pbXBvcnQge05HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImlzcy1jdHJsLWRhdGV0aW1lLXJhbmdlLXBpY2tlclwiLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW10sXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9kYXRldGltZS1yYW5nZS1waWNrZXIuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL2RhdGV0aW1lLXJhbmdlLXBpY2tlci5jb21wb25lbnQuc2Nzc1wiLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge3Byb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogRGF0ZXRpbWVSYW5nZVBpY2tlckNvbXBvbmVudCwgbXVsdGk6IHRydWV9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0ZXRpbWVSYW5nZVBpY2tlckNvbXBvbmVudCBleHRlbmRzIEJhc2VDdHJsIHtcclxuXHJcbn1cclxuIiwiPHA+ZGF0ZXRpbWUtcmFuZ2UtcGlja2VyIHdvcmtzITwvcD5cclxuIl19
@@ -0,0 +1,121 @@
1
+ import { Component, CUSTOM_ELEMENTS_SCHEMA, effect, input, signal } from "@angular/core";
2
+ import { NG_VALUE_ACCESSOR, ReactiveFormsModule } from "@angular/forms";
3
+ import { BaseCtrl } from "../base-ctrl";
4
+ import { MatTooltip } from "@angular/material/tooltip";
5
+ import { DroppableDirective } from "../../directives/droppable.directive";
6
+ import { HintsComponent } from "../hints/hints.component";
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/forms";
9
+ export class FilePickerComponent extends BaseCtrl {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.accept = input();
13
+ this.showDownloadButton = input(true);
14
+ this.showDeleteButton = input(true);
15
+ this.attachments = signal([]);
16
+ this.#effectRef = effect(() => {
17
+ if (this.attachments().length) {
18
+ this.emitValue(this.#formDataFactory(this.attachments()));
19
+ }
20
+ });
21
+ }
22
+ #effectRef;
23
+ ngOnDestroy() {
24
+ this.#effectRef.destroy();
25
+ }
26
+ writeValue(val) {
27
+ this.#reset();
28
+ if (val) {
29
+ this.attachments.set([...this.attachments(), ...this.#convertFormDataToFiles(val)]);
30
+ }
31
+ }
32
+ onDownload($event) {
33
+ const fileUrl = this.#createObjectUrl($event.detail.value);
34
+ const anchorElement = this.#createAnchorElement(fileUrl, $event.detail.value.name);
35
+ this.#useAnchorElementThenDispose(anchorElement, fileUrl);
36
+ }
37
+ onDelete(index) {
38
+ const fileHtmlElement = document.getElementById("file");
39
+ if (fileHtmlElement) {
40
+ fileHtmlElement.value = "";
41
+ }
42
+ this.attachments.update((files) => {
43
+ return files.filter((_, i) => i !== index);
44
+ });
45
+ }
46
+ captureFile($event) {
47
+ if (!$event) {
48
+ return;
49
+ }
50
+ if (!$event.length) {
51
+ return;
52
+ }
53
+ this.markAsTouched();
54
+ const files = Array.from($event);
55
+ this.#updateAttachments(files);
56
+ }
57
+ #createObjectUrl(file) {
58
+ const blob = new Blob([file], {
59
+ type: "application/octet-stream",
60
+ });
61
+ return window.URL.createObjectURL(blob);
62
+ }
63
+ #updateAttachments(selectedFiles) {
64
+ if (!this.multiple()) {
65
+ this.attachments.set([]);
66
+ this.attachments()[0] = selectedFiles[0];
67
+ return;
68
+ }
69
+ this.attachments.update((files) => {
70
+ files = [...files, ...selectedFiles];
71
+ return files;
72
+ });
73
+ }
74
+ #formDataFactory(files) {
75
+ const fd = new FormData();
76
+ for (let i = 0; i < files.length; i++) {
77
+ fd.append("file", files[i]);
78
+ }
79
+ return fd;
80
+ }
81
+ #reset() {
82
+ this.attachments.set([]);
83
+ }
84
+ #convertFormDataToFiles(val) {
85
+ let files = [];
86
+ for (let pair of val.entries()) {
87
+ if (pair[1] instanceof File) {
88
+ files.push(pair[1]);
89
+ }
90
+ }
91
+ return files;
92
+ }
93
+ #createAnchorElement(fileUrl, fileName) {
94
+ let a = document.createElement("a");
95
+ a.setAttribute("style", "display: none");
96
+ a.href = fileUrl;
97
+ a.download = fileName;
98
+ return a;
99
+ }
100
+ #useAnchorElementThenDispose(a, fileUrl) {
101
+ a.click();
102
+ window.URL.revokeObjectURL(fileUrl);
103
+ a.remove();
104
+ }
105
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FilePickerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
106
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: FilePickerComponent, isStandalone: true, selector: "iss-ctrl-file-picker", inputs: { accept: { classPropertyName: "accept", publicName: "accept", isSignal: true, isRequired: false, transformFunction: null }, showDownloadButton: { classPropertyName: "showDownloadButton", publicName: "showDownloadButton", isSignal: true, isRequired: false, transformFunction: null }, showDeleteButton: { classPropertyName: "showDeleteButton", publicName: "showDeleteButton", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
107
+ { provide: NG_VALUE_ACCESSOR, useExisting: FilePickerComponent, multi: true }
108
+ ], usesInheritance: true, ngImport: i0, template: "<ds-file-picker (click)=\"inputFile.click(); markAsTouched()\" droppable (onDrop)=\"captureFile($event)\">\r\n <input\r\n id=\"file\"\r\n type=\"file\"\r\n #inputFile\r\n [style.display]=\"'none'\"\r\n [formControl]=\"ctrl\"\r\n [multiple]=\"multiple()\"\r\n [accept]=\"accept()\"\r\n (change)=\"captureFile($any($event.target).files)\"\r\n />\r\n</ds-file-picker>\r\n\r\n<iss-ctrl-hints [hints]=\"hints()\" [touched]=\"touched()\"/>\r\n@if (attachments().length) {\r\n <section class=\"files-list\">\r\n @for (file of attachments(); track $index) {\r\n <div class=\"file-item-container\">\r\n @if (file) {\r\n <ds-attachments\r\n [matTooltip]=\"file.name\"\r\n [file]=\"file\"\r\n [showDownload]=\"showDownloadButton()\"\r\n [showActions]=\"showDeleteButton()\"\r\n (downloadEvent)=\"onDownload($event)\"\r\n (deleteEvent)=\"onDelete($index)\"\r\n >\r\n </ds-attachments>\r\n }\r\n </div>\r\n }\r\n </section>\r\n}\r\n", styles: [".file-uploader{--uploader-height: 150px;--uploader-width: 100%;--uploader-bg: var(--off-white);--uploader-border: 1px dashed var(--dark-gray);--uploader-radius: var(--box-radius);--uploader-padding: 1rem;height:var(--uploader-height);background-color:var(--uploader-bg);border:var(--uploader-border);border-radius:var(--uploader-radius);padding:var(--uploader-padding);text-align:center;cursor:pointer}.file-uploader--input{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:.75rem}.insideTableStyle{width:272px}.files-list{--file-item-width: 270px;display:grid;grid-template-columns:repeat(auto-fill,var(--file-item-width));grid-gap:.5rem}@media (max-width: 768px){.files-list{grid-template-columns:repeat(auto-fill,minmax(var(--file-item-width),1fr))}}.files-list .file-item-container .file-item{--file-bg: var(--off-white);--file-radius: var(--box-radius);--icon-color: var(--purple);--icon-size: 2rem;--file-border: transparent;display:flex;align-items:center;background-color:var(--file-bg);border:1px solid var(--file-border);border-radius:var(--file-radius);padding:0 1rem;height:70px;gap:.75rem}.files-list .file-item-container .file-item.error{--file-bg: rgba(var(--rgb-red), 10%);--file-border: var(--red);--icon-color: var(--red)}.files-list .file-item-container .file-item .icon{color:var(--icon-color);font-size:var(--icon-size)}.files-list .file-item-container .file-item .file-action{display:flex;align-items:center;gap:.5rem}ds-attachments::part(base){--file-width: 250px}::ng-deep .file-item .name-size{display:flex;flex-direction:column;justify-content:center;flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:120px}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: DroppableDirective, selector: "[droppable]", outputs: ["onDrop"] }, { kind: "component", type: HintsComponent, selector: "iss-ctrl-hints", inputs: ["hints", "touched"] }] }); }
109
+ }
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FilePickerComponent, decorators: [{
111
+ type: Component,
112
+ args: [{ selector: "iss-ctrl-file-picker", standalone: true, imports: [
113
+ ReactiveFormsModule,
114
+ MatTooltip,
115
+ DroppableDirective,
116
+ HintsComponent,
117
+ ], providers: [
118
+ { provide: NG_VALUE_ACCESSOR, useExisting: FilePickerComponent, multi: true }
119
+ ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<ds-file-picker (click)=\"inputFile.click(); markAsTouched()\" droppable (onDrop)=\"captureFile($event)\">\r\n <input\r\n id=\"file\"\r\n type=\"file\"\r\n #inputFile\r\n [style.display]=\"'none'\"\r\n [formControl]=\"ctrl\"\r\n [multiple]=\"multiple()\"\r\n [accept]=\"accept()\"\r\n (change)=\"captureFile($any($event.target).files)\"\r\n />\r\n</ds-file-picker>\r\n\r\n<iss-ctrl-hints [hints]=\"hints()\" [touched]=\"touched()\"/>\r\n@if (attachments().length) {\r\n <section class=\"files-list\">\r\n @for (file of attachments(); track $index) {\r\n <div class=\"file-item-container\">\r\n @if (file) {\r\n <ds-attachments\r\n [matTooltip]=\"file.name\"\r\n [file]=\"file\"\r\n [showDownload]=\"showDownloadButton()\"\r\n [showActions]=\"showDeleteButton()\"\r\n (downloadEvent)=\"onDownload($event)\"\r\n (deleteEvent)=\"onDelete($index)\"\r\n >\r\n </ds-attachments>\r\n }\r\n </div>\r\n }\r\n </section>\r\n}\r\n", styles: [".file-uploader{--uploader-height: 150px;--uploader-width: 100%;--uploader-bg: var(--off-white);--uploader-border: 1px dashed var(--dark-gray);--uploader-radius: var(--box-radius);--uploader-padding: 1rem;height:var(--uploader-height);background-color:var(--uploader-bg);border:var(--uploader-border);border-radius:var(--uploader-radius);padding:var(--uploader-padding);text-align:center;cursor:pointer}.file-uploader--input{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:.75rem}.insideTableStyle{width:272px}.files-list{--file-item-width: 270px;display:grid;grid-template-columns:repeat(auto-fill,var(--file-item-width));grid-gap:.5rem}@media (max-width: 768px){.files-list{grid-template-columns:repeat(auto-fill,minmax(var(--file-item-width),1fr))}}.files-list .file-item-container .file-item{--file-bg: var(--off-white);--file-radius: var(--box-radius);--icon-color: var(--purple);--icon-size: 2rem;--file-border: transparent;display:flex;align-items:center;background-color:var(--file-bg);border:1px solid var(--file-border);border-radius:var(--file-radius);padding:0 1rem;height:70px;gap:.75rem}.files-list .file-item-container .file-item.error{--file-bg: rgba(var(--rgb-red), 10%);--file-border: var(--red);--icon-color: var(--red)}.files-list .file-item-container .file-item .icon{color:var(--icon-color);font-size:var(--icon-size)}.files-list .file-item-container .file-item .file-action{display:flex;align-items:center;gap:.5rem}ds-attachments::part(base){--file-width: 250px}::ng-deep .file-item .name-size{display:flex;flex-direction:column;justify-content:center;flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:120px}\n"] }]
120
+ }] });
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvZmlsZS1waWNrZXIvZmlsZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvZmlsZS1waWNrZXIvZmlsZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQWEsS0FBSyxFQUEwQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzFJLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3RFLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBa0J4RCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsUUFBUTtJQWhCakQ7O1FBaUJFLFdBQU0sR0FBb0MsS0FBSyxFQUFFLENBQUM7UUFDbEQsdUJBQWtCLEdBQXlCLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2RCxxQkFBZ0IsR0FBeUIsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLGdCQUFXLEdBQTJCLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzRCxlQUFVLEdBQWMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNsQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLFNB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LENBQUMsS0FBSyxFQUFFLENBQUM7UUFDVixNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDYixDQUFDOzhHQXhHVSxtQkFBbUI7a0dBQW5CLG1CQUFtQixrZ0JBTG5CO1lBQ1QsRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7U0FDNUUsaURDcEJILGdqQ0FpQ0EscXVERHRCSSxtQkFBbUIsMGtCQUNuQixVQUFVLGlSQUNWLGtCQUFrQiw2RUFDbEIsY0FBYzs7MkZBU0wsbUJBQW1CO2tCQWhCL0IsU0FBUzsrQkFDRSxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQO3dCQUNQLG1CQUFtQjt3QkFDbkIsVUFBVTt3QkFDVixrQkFBa0I7d0JBQ2xCLGNBQWM7cUJBQ2YsYUFHVTt3QkFDVCxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLHFCQUFxQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7cUJBQzVFLFdBQ1EsQ0FBQyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBlZmZlY3QsIEVmZmVjdFJlZiwgaW5wdXQsIElucHV0U2lnbmFsLCBPbkRlc3Ryb3ksIHNpZ25hbCwgV3JpdGFibGVTaWduYWx9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7TkdfVkFMVUVfQUNDRVNTT1IsIFJlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge0Jhc2VDdHJsfSBmcm9tIFwiLi4vYmFzZS1jdHJsXCI7XHJcbmltcG9ydCB7TWF0VG9vbHRpcH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXBcIjtcclxuaW1wb3J0IHtEcm9wcGFibGVEaXJlY3RpdmV9IGZyb20gXCIuLi8uLi9kaXJlY3RpdmVzL2Ryb3BwYWJsZS5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHtIaW50c0NvbXBvbmVudH0gZnJvbSBcIi4uL2hpbnRzL2hpbnRzLmNvbXBvbmVudFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiaXNzLWN0cmwtZmlsZS1waWNrZXJcIixcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBNYXRUb29sdGlwLFxyXG4gICAgRHJvcHBhYmxlRGlyZWN0aXZlLFxyXG4gICAgSGludHNDb21wb25lbnQsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogXCIuL2ZpbGUtcGlja2VyLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi9maWxlLXBpY2tlci5jb21wb25lbnQuc2Nzc1wiLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge3Byb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogRmlsZVBpY2tlckNvbXBvbmVudCwgbXVsdGk6IHRydWV9XHJcbiAgXSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbGVQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ3RybCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgYWNjZXB0OiBJbnB1dFNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+ID0gaW5wdXQoKTtcclxuICBzaG93RG93bmxvYWRCdXR0b246IElucHV0U2lnbmFsPGJvb2xlYW4+ID0gaW5wdXQodHJ1ZSk7XHJcbiAgc2hvd0RlbGV0ZUJ1dHRvbjogSW5wdXRTaWduYWw8Ym9vbGVhbj4gPSBpbnB1dCh0cnVlKTtcclxuICBwcm90ZWN0ZWQgYXR0YWNobWVudHM6IFdyaXRhYmxlU2lnbmFsPEZpbGVbXT4gPSBzaWduYWwoW10pO1xyXG4gICNlZmZlY3RSZWY6IEVmZmVjdFJlZiA9IGVmZmVjdCgoKSA9PiB7XHJcbiAgICBpZiAodGhpcy5hdHRhY2htZW50cygpLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmVtaXRWYWx1ZSh0aGlzLiNmb3JtRGF0YUZhY3RvcnkodGhpcy5hdHRhY2htZW50cygpKSk7XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy4jZWZmZWN0UmVmLmRlc3Ryb3koKTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsOiBGb3JtRGF0YSB8IG51bGwpOiB2b2lkIHtcclxuICAgIHRoaXMuI3Jlc2V0KCk7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIHRoaXMuYXR0YWNobWVudHMuc2V0KFsuLi50aGlzLmF0dGFjaG1lbnRzKCksIC4uLnRoaXMuI2NvbnZlcnRGb3JtRGF0YVRvRmlsZXModmFsKV0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG9uRG93bmxvYWQoJGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGZpbGVVcmw6IHN0cmluZyA9IHRoaXMuI2NyZWF0ZU9iamVjdFVybCgkZXZlbnQuZGV0YWlsLnZhbHVlKTtcclxuICAgIGNvbnN0IGFuY2hvckVsZW1lbnQ6IEhUTUxBbmNob3JFbGVtZW50ID0gdGhpcy4jY3JlYXRlQW5jaG9yRWxlbWVudChmaWxlVXJsLCAkZXZlbnQuZGV0YWlsLnZhbHVlLm5hbWUpO1xyXG4gICAgdGhpcy4jdXNlQW5jaG9yRWxlbWVudFRoZW5EaXNwb3NlKGFuY2hvckVsZW1lbnQsIGZpbGVVcmwpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG9uRGVsZXRlKGluZGV4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGZpbGVIdG1sRWxlbWVudDogSFRNTElucHV0RWxlbWVudCB8IG51bGwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImZpbGVcIikgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGlmIChmaWxlSHRtbEVsZW1lbnQpIHtcclxuICAgICAgZmlsZUh0bWxFbGVtZW50LnZhbHVlID0gXCJcIjtcclxuICAgIH1cclxuICAgIHRoaXMuYXR0YWNobWVudHMudXBkYXRlKChmaWxlczogRmlsZVtdKSA9PiB7XHJcbiAgICAgIHJldHVybiBmaWxlcy5maWx0ZXIoKF86IEZpbGUsIGk6IG51bWJlcik6IGJvb2xlYW4gPT4gaSAhPT0gaW5kZXgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgY2FwdHVyZUZpbGUoJGV2ZW50OiBGaWxlTGlzdCkge1xyXG4gICAgaWYgKCEkZXZlbnQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKCEkZXZlbnQubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgY29uc3QgZmlsZXM6IEZpbGVbXSA9IEFycmF5LmZyb20oJGV2ZW50KTtcclxuICAgIHRoaXMuI3VwZGF0ZUF0dGFjaG1lbnRzKGZpbGVzKTtcclxuICB9XHJcblxyXG4gICNjcmVhdGVPYmplY3RVcmwoZmlsZTogRmlsZSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBibG9iOiBCbG9iID0gbmV3IEJsb2IoW2ZpbGVdLCB7XHJcbiAgICAgIHR5cGU6IFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCIsXHJcbiAgICB9KTtcclxuICAgIHJldHVybiB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICB9XHJcblxyXG4gICN1cGRhdGVBdHRhY2htZW50cyhzZWxlY3RlZEZpbGVzOiBGaWxlW10pIHtcclxuICAgIGlmICghdGhpcy5tdWx0aXBsZSgpKSB7XHJcbiAgICAgIHRoaXMuYXR0YWNobWVudHMuc2V0KFtdKTtcclxuICAgICAgdGhpcy5hdHRhY2htZW50cygpWzBdID0gc2VsZWN0ZWRGaWxlc1swXTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYXR0YWNobWVudHMudXBkYXRlKChmaWxlczogRmlsZVtdKSA9PiB7XHJcbiAgICAgIGZpbGVzID0gWy4uLmZpbGVzLCAuLi5zZWxlY3RlZEZpbGVzXTtcclxuICAgICAgcmV0dXJuIGZpbGVzO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAjZm9ybURhdGFGYWN0b3J5KGZpbGVzOiBGaWxlW10pOiBGb3JtRGF0YSB7XHJcbiAgICBjb25zdCBmZDogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgZmQuYXBwZW5kKFwiZmlsZVwiLCBmaWxlc1tpXSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmQ7XHJcbiAgfVxyXG5cclxuICAjcmVzZXQoKSB7XHJcbiAgICB0aGlzLmF0dGFjaG1lbnRzLnNldChbXSk7XHJcbiAgfVxyXG5cclxuICAjY29udmVydEZvcm1EYXRhVG9GaWxlcyh2YWw6IEZvcm1EYXRhKSB7XHJcbiAgICBsZXQgZmlsZXM6IEZpbGVbXSA9IFtdO1xyXG4gICAgZm9yIChsZXQgcGFpciBvZiB2YWwuZW50cmllcygpKSB7XHJcbiAgICAgIGlmIChwYWlyWzFdIGluc3RhbmNlb2YgRmlsZSkge1xyXG4gICAgICAgIGZpbGVzLnB1c2gocGFpclsxXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmaWxlcztcclxuICB9XHJcblxyXG4gICNjcmVhdGVBbmNob3JFbGVtZW50KGZpbGVVcmw6IHN0cmluZywgZmlsZU5hbWU6IHN0cmluZyk6IEhUTUxBbmNob3JFbGVtZW50IHtcclxuICAgIGxldCBhOiBIVE1MQW5jaG9yRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xyXG4gICAgYS5zZXRBdHRyaWJ1dGUoXCJzdHlsZVwiLCBcImRpc3BsYXk6IG5vbmVcIik7XHJcbiAgICBhLmhyZWYgPSBmaWxlVXJsO1xyXG4gICAgYS5kb3dubG9hZCA9IGZpbGVOYW1lO1xyXG4gICAgcmV0dXJuIGE7XHJcbiAgfVxyXG5cclxuICAjdXNlQW5jaG9yRWxlbWVudFRoZW5EaXNwb3NlKGE6IEhUTUxBbmNob3JFbGVtZW50LCBmaWxlVXJsOiBzdHJpbmcpIHtcclxuICAgIGEuY2xpY2soKTtcclxuICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKGZpbGVVcmwpO1xyXG4gICAgYS5yZW1vdmUoKTtcclxuICB9XHJcbn1cclxuIiwiPGRzLWZpbGUtcGlja2VyIChjbGljayk9XCJpbnB1dEZpbGUuY2xpY2soKTsgbWFya0FzVG91Y2hlZCgpXCIgZHJvcHBhYmxlIChvbkRyb3ApPVwiY2FwdHVyZUZpbGUoJGV2ZW50KVwiPlxyXG4gIDxpbnB1dFxyXG4gICAgaWQ9XCJmaWxlXCJcclxuICAgIHR5cGU9XCJmaWxlXCJcclxuICAgICNpbnB1dEZpbGVcclxuICAgIFtzdHlsZS5kaXNwbGF5XT1cIidub25lJ1wiXHJcbiAgICBbZm9ybUNvbnRyb2xdPVwiY3RybFwiXHJcbiAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGUoKVwiXHJcbiAgICBbYWNjZXB0XT1cImFjY2VwdCgpXCJcclxuICAgIChjaGFuZ2UpPVwiY2FwdHVyZUZpbGUoJGFueSgkZXZlbnQudGFyZ2V0KS5maWxlcylcIlxyXG4gIC8+XHJcbjwvZHMtZmlsZS1waWNrZXI+XHJcblxyXG48aXNzLWN0cmwtaGludHMgW2hpbnRzXT1cImhpbnRzKClcIiBbdG91Y2hlZF09XCJ0b3VjaGVkKClcIi8+XHJcbkBpZiAoYXR0YWNobWVudHMoKS5sZW5ndGgpIHtcclxuICA8c2VjdGlvbiBjbGFzcz1cImZpbGVzLWxpc3RcIj5cclxuICAgIEBmb3IgKGZpbGUgb2YgYXR0YWNobWVudHMoKTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWl0ZW0tY29udGFpbmVyXCI+XHJcbiAgICAgICAgQGlmIChmaWxlKSB7XHJcbiAgICAgICAgICA8ZHMtYXR0YWNobWVudHNcclxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiZmlsZS5uYW1lXCJcclxuICAgICAgICAgICAgW2ZpbGVdPVwiZmlsZVwiXHJcbiAgICAgICAgICAgIFtzaG93RG93bmxvYWRdPVwic2hvd0Rvd25sb2FkQnV0dG9uKClcIlxyXG4gICAgICAgICAgICBbc2hvd0FjdGlvbnNdPVwic2hvd0RlbGV0ZUJ1dHRvbigpXCJcclxuICAgICAgICAgICAgKGRvd25sb2FkRXZlbnQpPVwib25Eb3dubG9hZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgKGRlbGV0ZUV2ZW50KT1cIm9uRGVsZXRlKCRpbmRleClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPC9kcy1hdHRhY2htZW50cz5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIDwvc2VjdGlvbj5cclxufVxyXG4iXX0=
@@ -0,0 +1,66 @@
1
+ import { Component, CUSTOM_ELEMENTS_SCHEMA, input } from "@angular/core";
2
+ import { MatHint } from "@angular/material/form-field";
3
+ import * as i0 from "@angular/core";
4
+ export class HintsComponent {
5
+ constructor() {
6
+ this.hints = input([]);
7
+ this.touched = input(false);
8
+ }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: HintsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: HintsComponent, isStandalone: true, selector: "iss-ctrl-hints", inputs: { hints: { classPropertyName: "hints", publicName: "hints", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
11
+ @if (hints().length) {
12
+ <div class="d-flex align-items-center flex-wrap gap-2 mb-3">
13
+ @for (hint of hints(); track $index) {
14
+ @if (hint) {
15
+ <mat-hint class="d-flex align-items-center gap-1 fs-12">
16
+ @if (hint.valid === undefined) {
17
+ <ds-icon icon="info" class="fs-24 fc-dark-gray"></ds-icon>
18
+ <span class="fc-dark-gray text-break">{{ hint.label }}</span>
19
+ } @else {
20
+ <ds-icon
21
+ icon="{{ touched() ? (hint.valid ? 'check-circle-f' : 'close-circle') : 'check-circle-o' }}"
22
+ class="fs-24 {{ touched() ? (hint.valid ? 'fc-green' : 'fc-red') : 'fc-dark-gray' }}"
23
+ >
24
+ </ds-icon>
25
+ <span class="{{ touched() ? (hint.valid ? 'fc-green' : 'fc-red') : 'fc-dark-gray' }} text-break">{{ hint.label }}</span>
26
+ }
27
+ </mat-hint>
28
+ }
29
+ }
30
+ </div>
31
+ }
32
+ `, isInline: true, dependencies: [{ kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }] }); }
33
+ }
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: HintsComponent, decorators: [{
35
+ type: Component,
36
+ args: [{
37
+ selector: "iss-ctrl-hints",
38
+ standalone: true,
39
+ imports: [MatHint,],
40
+ template: `
41
+ @if (hints().length) {
42
+ <div class="d-flex align-items-center flex-wrap gap-2 mb-3">
43
+ @for (hint of hints(); track $index) {
44
+ @if (hint) {
45
+ <mat-hint class="d-flex align-items-center gap-1 fs-12">
46
+ @if (hint.valid === undefined) {
47
+ <ds-icon icon="info" class="fs-24 fc-dark-gray"></ds-icon>
48
+ <span class="fc-dark-gray text-break">{{ hint.label }}</span>
49
+ } @else {
50
+ <ds-icon
51
+ icon="{{ touched() ? (hint.valid ? 'check-circle-f' : 'close-circle') : 'check-circle-o' }}"
52
+ class="fs-24 {{ touched() ? (hint.valid ? 'fc-green' : 'fc-red') : 'fc-dark-gray' }}"
53
+ >
54
+ </ds-icon>
55
+ <span class="{{ touched() ? (hint.valid ? 'fc-green' : 'fc-red') : 'fc-dark-gray' }} text-break">{{ hint.label }}</span>
56
+ }
57
+ </mat-hint>
58
+ }
59
+ }
60
+ </div>
61
+ }
62
+ `,
63
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
64
+ }]
65
+ }] });
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGludHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvaGludHMvaGludHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBRXBGLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQzs7QUErQnJELE1BQU0sT0FBTyxjQUFjO0lBN0IzQjtRQThCRSxVQUFLLEdBQXdCLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUMvQyxZQUFPLEdBQXlCLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUM5Qzs4R0FIWSxjQUFjO2tHQUFkLGNBQWMsNFVBekJmOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JULDREQXZCUyxPQUFPOzsyRkEwQk4sY0FBYztrQkE3QjFCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRTtvQkFDbkIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBpbnB1dCwgSW5wdXRTaWduYWx9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7SGludH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvaGludC5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtNYXRIaW50fSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiaXNzLWN0cmwtaGludHNcIixcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtNYXRIaW50LF0sXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIEBpZiAoaGludHMoKS5sZW5ndGgpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC13cmFwIGdhcC0yIG1iLTNcIj5cclxuICAgICAgICBAZm9yIChoaW50IG9mIGhpbnRzKCk7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgQGlmIChoaW50KSB7XHJcbiAgICAgICAgICAgIDxtYXQtaGludCBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTEgZnMtMTJcIj5cclxuICAgICAgICAgICAgICBAaWYgKGhpbnQudmFsaWQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgPGRzLWljb24gaWNvbj1cImluZm9cIiBjbGFzcz1cImZzLTI0IGZjLWRhcmstZ3JheVwiPjwvZHMtaWNvbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmMtZGFyay1ncmF5IHRleHQtYnJlYWtcIj57eyBoaW50LmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgPGRzLWljb25cclxuICAgICAgICAgICAgICAgICAgaWNvbj1cInt7IHRvdWNoZWQoKSA/IChoaW50LnZhbGlkID8gJ2NoZWNrLWNpcmNsZS1mJyA6ICdjbG9zZS1jaXJjbGUnKSA6ICdjaGVjay1jaXJjbGUtbycgfX1cIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZzLTI0IHt7IHRvdWNoZWQoKSA/IChoaW50LnZhbGlkID8gJ2ZjLWdyZWVuJyA6ICdmYy1yZWQnKSA6ICdmYy1kYXJrLWdyYXknIH19XCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwvZHMtaWNvbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwie3sgdG91Y2hlZCgpID8gKGhpbnQudmFsaWQgPyAnZmMtZ3JlZW4nIDogJ2ZjLXJlZCcpIDogJ2ZjLWRhcmstZ3JheScgfX0gdGV4dC1icmVha1wiPnt7IGhpbnQubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L21hdC1oaW50PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgYCxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIaW50c0NvbXBvbmVudCB7XHJcbiAgaGludHM6IElucHV0U2lnbmFsPEhpbnRbXT4gPSBpbnB1dDxIaW50W10+KFtdKTtcclxuICB0b3VjaGVkOiBJbnB1dFNpZ25hbDxib29sZWFuPiA9IGlucHV0KGZhbHNlKTtcclxufVxyXG4iXX0=
@@ -0,0 +1,32 @@
1
+ import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, input } from "@angular/core";
2
+ import { MatFormFieldModule } from "@angular/material/form-field";
3
+ import { MatInputModule } from "@angular/material/input";
4
+ import { BaseCtrl } from "../base-ctrl";
5
+ import { NG_VALUE_ACCESSOR, ReactiveFormsModule } from "@angular/forms";
6
+ import { HintsComponent } from "../hints/hints.component";
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/material/form-field";
9
+ import * as i2 from "@angular/material/input";
10
+ import * as i3 from "@angular/forms";
11
+ export class InputComponent extends BaseCtrl {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.type = input("text");
15
+ }
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: InputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
17
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.1.0", type: InputComponent, isStandalone: true, selector: "iss-ctrl-input", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
18
+ { provide: NG_VALUE_ACCESSOR, useExisting: InputComponent, multi: true }
19
+ ], usesInheritance: true, ngImport: i0, template: "<mat-form-field appearance=\"outline\">\r\n <input\r\n (blur)=\"markAsTouched()\"\r\n (input)=\"emitOnChangeEvent()\"\r\n [formControl]=\"ctrl\"\r\n [maxlength]=\"max()\"\r\n [minlength]=\"min()\"\r\n [placeholder]=\"placeholder()\"\r\n [type]=\"type()\"\r\n matInput\r\n />\r\n <iss-ctrl-hints [hints]=\"hints()\"/>\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: "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: ReactiveFormsModule }, { 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.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: HintsComponent, selector: "iss-ctrl-hints", inputs: ["hints", "touched"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
20
+ }
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: InputComponent, decorators: [{
22
+ type: Component,
23
+ args: [{ selector: "iss-ctrl-input", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
24
+ MatFormFieldModule,
25
+ MatInputModule,
26
+ ReactiveFormsModule,
27
+ HintsComponent
28
+ ], providers: [
29
+ { provide: NG_VALUE_ACCESSOR, useExisting: InputComponent, multi: true }
30
+ ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<mat-form-field appearance=\"outline\">\r\n <input\r\n (blur)=\"markAsTouched()\"\r\n (input)=\"emitOnChangeEvent()\"\r\n [formControl]=\"ctrl\"\r\n [maxlength]=\"max()\"\r\n [minlength]=\"min()\"\r\n [placeholder]=\"placeholder()\"\r\n [type]=\"type()\"\r\n matInput\r\n />\r\n <iss-ctrl-hints [hints]=\"hints()\"/>\r\n</mat-form-field>\r\n" }]
31
+ }] });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvaW5wdXQvaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvaW5wdXQvaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDN0csT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUFDLGlCQUFpQixFQUFFLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDBCQUEwQixDQUFDOzs7OztBQW9CeEQsTUFBTSxPQUFPLGNBQWUsU0FBUSxRQUFRO0lBbEI1Qzs7UUFtQkUsU0FBSSxHQUF3QixLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDM0M7OEdBRlksY0FBYztrR0FBZCxjQUFjLDhMQU5kO1lBQ1QsRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDO1NBQ3ZFLGlEQ3JCSCxrWEFhQSx5RERESSxrQkFBa0IseU9BQ2xCLGNBQWMsMFdBQ2QsbUJBQW1CLGc1QkFDbkIsY0FBYzs7MkZBVUwsY0FBYztrQkFsQjFCLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBQ2QsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLGNBQWM7cUJBQ2YsYUFHVTt3QkFDVCxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLGdCQUFnQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7cUJBQ3ZFLFdBQ1EsQ0FBQyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgaW5wdXQsIElucHV0U2lnbmFsfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge01hdEZvcm1GaWVsZE1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcclxuaW1wb3J0IHtNYXRJbnB1dE1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2lucHV0XCI7XHJcbmltcG9ydCB7QmFzZUN0cmx9IGZyb20gXCIuLi9iYXNlLWN0cmxcIjtcclxuaW1wb3J0IHtOR19WQUxVRV9BQ0NFU1NPUiwgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7SGludHNDb21wb25lbnR9IGZyb20gXCIuLi9oaW50cy9oaW50cy5jb21wb25lbnRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImlzcy1jdHJsLWlucHV0XCIsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXHJcbiAgICBNYXRJbnB1dE1vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBIaW50c0NvbXBvbmVudFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9pbnB1dC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vaW5wdXQuY29tcG9uZW50LnNjc3NcIixcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IElucHV0Q29tcG9uZW50LCBtdWx0aTogdHJ1ZX1cclxuICBdLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXVxyXG5cclxufSlcclxuZXhwb3J0IGNsYXNzIElucHV0Q29tcG9uZW50IGV4dGVuZHMgQmFzZUN0cmwge1xyXG4gIHR5cGU6IElucHV0U2lnbmFsPHN0cmluZz4gPSBpbnB1dChcInRleHRcIik7XHJcbn1cclxuIiwiPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgPGlucHV0XHJcbiAgICAoYmx1cik9XCJtYXJrQXNUb3VjaGVkKClcIlxyXG4gICAgKGlucHV0KT1cImVtaXRPbkNoYW5nZUV2ZW50KClcIlxyXG4gICAgW2Zvcm1Db250cm9sXT1cImN0cmxcIlxyXG4gICAgW21heGxlbmd0aF09XCJtYXgoKVwiXHJcbiAgICBbbWlubGVuZ3RoXT1cIm1pbigpXCJcclxuICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcigpXCJcclxuICAgIFt0eXBlXT1cInR5cGUoKVwiXHJcbiAgICBtYXRJbnB1dFxyXG4gIC8+XHJcbiAgPGlzcy1jdHJsLWhpbnRzIFtoaW50c109XCJoaW50cygpXCIvPlxyXG48L21hdC1mb3JtLWZpZWxkPlxyXG4iXX0=