@enigmatry/entry-components 16.1.0 → 16.1.1-preview.4

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 (48) hide show
  1. package/common/common.module.d.ts +3 -1
  2. package/common/date-time/entry-date-time-adapter.d.ts +12 -7
  3. package/common/date-time/entry-date-time-formats.d.ts +25 -0
  4. package/common/date-time/entry-time-adapter.d.ts +9 -0
  5. package/common/date-time/index.d.ts +4 -2
  6. package/common/date-time/native-time-adapter.d.ts +13 -0
  7. package/common/directives/index.d.ts +2 -0
  8. package/common/directives/ng-control-accessor.directive.d.ts +12 -0
  9. package/common/directives/noop-control-value-accessor.d.ts +10 -0
  10. package/date-time-picker/README.md +69 -0
  11. package/date-time-picker/date-time-picker.component.d.ts +35 -0
  12. package/date-time-picker/date-time-picker.module.d.ts +16 -0
  13. package/date-time-picker/index.d.ts +5 -0
  14. package/date-time-picker/public-api.d.ts +2 -0
  15. package/date-time-picker/time-picker.component.d.ts +26 -0
  16. package/esm2022/common/common.module.mjs +11 -3
  17. package/esm2022/common/date-time/entry-date-time-adapter.mjs +30 -12
  18. package/esm2022/common/date-time/entry-date-time-formats.mjs +14 -0
  19. package/esm2022/common/date-time/entry-time-adapter.mjs +10 -0
  20. package/esm2022/common/date-time/index.mjs +5 -3
  21. package/esm2022/common/date-time/native-time-adapter.mjs +31 -0
  22. package/esm2022/common/directives/index.mjs +3 -1
  23. package/esm2022/common/directives/ng-control-accessor.directive.mjs +46 -0
  24. package/esm2022/common/directives/noop-control-value-accessor.mjs +32 -0
  25. package/esm2022/date-time-picker/date-time-picker.component.mjs +126 -0
  26. package/esm2022/date-time-picker/date-time-picker.module.mjs +58 -0
  27. package/esm2022/date-time-picker/enigmatry-entry-components-date-time-picker.mjs +5 -0
  28. package/esm2022/date-time-picker/public-api.mjs +3 -0
  29. package/esm2022/date-time-picker/time-picker.component.mjs +80 -0
  30. package/esm2022/search-filter/date-time/date-time-search-filter.component.mjs +4 -4
  31. package/fesm2022/enigmatry-entry-components-common.mjs +158 -16
  32. package/fesm2022/enigmatry-entry-components-common.mjs.map +1 -1
  33. package/fesm2022/enigmatry-entry-components-date-time-picker.mjs +258 -0
  34. package/fesm2022/enigmatry-entry-components-date-time-picker.mjs.map +1 -0
  35. package/fesm2022/enigmatry-entry-components-search-filter.mjs +3 -3
  36. package/fesm2022/enigmatry-entry-components-search-filter.mjs.map +1 -1
  37. package/package.json +95 -89
  38. package/styles/modules/_default-theme.scss +12 -10
  39. package/styles/modules/components/buttons/_radio.scss +10 -5
  40. package/styles/modules/components/checkboxes/_generator.scss +17 -12
  41. package/styles/modules/components/tables/_header.scss +4 -2
  42. package/styles/modules/components/tables/_rows.scss +23 -11
  43. package/styles/modules/components/toggle/_generator.scss +25 -23
  44. package/styles/partials/core/components/_index.scss +2 -1
  45. package/styles/partials/core/components/date-time-picker/_general.scss +65 -0
  46. package/styles/partials/core/components/forms/_general.scss +0 -4
  47. package/common/date-time/entry-date-time.d.ts +0 -7
  48. package/esm2022/common/date-time/entry-date-time.mjs +0 -3
@@ -0,0 +1,32 @@
1
+ /* eslint-disable @typescript-eslint/no-empty-function */
2
+ import { Directive } from "@angular/core";
3
+ import { NG_VALUE_ACCESSOR } from "@angular/forms";
4
+ import * as i0 from "@angular/core";
5
+ export class NoopControlValueAccessorDirective {
6
+ writeValue(_obj) { }
7
+ registerOnChange(_fn) { }
8
+ registerOnTouched(_fn) { }
9
+ setDisabledState(_isDisabled) { }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NoopControlValueAccessorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
11
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: NoopControlValueAccessorDirective, isStandalone: true, providers: [
12
+ {
13
+ provide: NG_VALUE_ACCESSOR,
14
+ multi: true,
15
+ useExisting: NoopControlValueAccessorDirective
16
+ }
17
+ ], ngImport: i0 }); }
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NoopControlValueAccessorDirective, decorators: [{
20
+ type: Directive,
21
+ args: [{
22
+ standalone: true,
23
+ providers: [
24
+ {
25
+ provide: NG_VALUE_ACCESSOR,
26
+ multi: true,
27
+ useExisting: NoopControlValueAccessorDirective
28
+ }
29
+ ]
30
+ }]
31
+ }] });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9vcC1jb250cm9sLXZhbHVlLWFjY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9lbnRyeS1jb21wb25lbnRzL2NvbW1vbi9kaXJlY3RpdmVzL25vb3AtY29udHJvbC12YWx1ZS1hY2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5REFBeUQ7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBWXpFLE1BQU0sT0FBTyxpQ0FBaUM7SUFDMUMsVUFBVSxDQUFDLElBQVMsSUFBVSxDQUFDO0lBQy9CLGdCQUFnQixDQUFDLEdBQVEsSUFBVSxDQUFDO0lBQ3BDLGlCQUFpQixDQUFDLEdBQVEsSUFBVSxDQUFDO0lBQ3JDLGdCQUFnQixDQUFFLFdBQW9CLElBQVUsQ0FBQzsrR0FKeEMsaUNBQWlDO21HQUFqQyxpQ0FBaUMsaUNBUi9CO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsV0FBVyxFQUFFLGlDQUFpQzthQUNqRDtTQUNKOzs0RkFFUSxpQ0FBaUM7a0JBVjdDLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixLQUFLLEVBQUUsSUFBSTs0QkFDWCxXQUFXLG1DQUFtQzt5QkFDakQ7cUJBQ0o7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb24gKi9cbmltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBOb29wQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTm9vcENvbnRyb2xWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgIHdyaXRlVmFsdWUoX29iajogYW55KTogdm9pZCB7IH1cbiAgICByZWdpc3Rlck9uQ2hhbmdlKF9mbjogYW55KTogdm9pZCB7IH1cbiAgICByZWdpc3Rlck9uVG91Y2hlZChfZm46IGFueSk6IHZvaWQgeyB9XG4gICAgc2V0RGlzYWJsZWRTdGF0ZT8oX2lzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHsgfVxufSJdfQ==
@@ -0,0 +1,126 @@
1
+ import { ChangeDetectionStrategy, Component, HostBinding, Input, Output, ViewChild, inject } from '@angular/core';
2
+ import { FormControl } from '@angular/forms';
3
+ import { MAT_DATE_FORMATS, DateAdapter } from '@angular/material/core';
4
+ import { ENTRY_MAT_DATE_TIME_FORMATS, EntryDateTimeAdapter, NgControlAccessorDirective, NoopControlValueAccessorDirective } from '@enigmatry/entry-components/common';
5
+ import { EntryTimePickerComponent } from './time-picker.component';
6
+ import { Subject, takeUntil } from 'rxjs';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@enigmatry/entry-components/common";
9
+ import * as i2 from "@angular/common";
10
+ import * as i3 from "@angular/forms";
11
+ import * as i4 from "@angular/material/form-field";
12
+ import * as i5 from "@angular/material/datepicker";
13
+ import * as i6 from "@angular/material/input";
14
+ import * as i7 from "@angular/material/button";
15
+ import * as i8 from "@angular/material/icon";
16
+ import * as i9 from "./time-picker.component";
17
+ export class EntryDateTimePickerComponent {
18
+ constructor() {
19
+ this.class = 'entry-date-time-picker';
20
+ this.dateTimeChanged = new Subject();
21
+ this.ngControlAccessor = inject(NgControlAccessorDirective);
22
+ this.dateTimeAdapter = inject(DateAdapter);
23
+ this.format = inject(ENTRY_MAT_DATE_TIME_FORMATS);
24
+ // Control that is connected to calendar
25
+ this.calendarControl = new FormControl(undefined);
26
+ this.is12HourClock = this.dateTimeAdapter.is12HoursClock(this.format.display.dateInput);
27
+ this.$destroy = new Subject();
28
+ }
29
+ // Control bound to component using FormsApi (ngModel, formControl, formControlName)
30
+ get formControl() {
31
+ return this.ngControlAccessor.control;
32
+ }
33
+ get minDate() {
34
+ if (!this.min) {
35
+ return undefined;
36
+ }
37
+ const result = this.dateTimeAdapter.clone(this.min);
38
+ this.dateTimeAdapter.setTime(result, 0, 0, 0);
39
+ return result;
40
+ }
41
+ get maxDate() {
42
+ if (!this.max) {
43
+ return undefined;
44
+ }
45
+ const result = this.dateTimeAdapter.clone(this.max);
46
+ this.dateTimeAdapter.setTime(result, 0, 0, 0);
47
+ return result;
48
+ }
49
+ ngOnInit() {
50
+ this.calendarControl.setValue(this.formControl.value, { emitEvent: false });
51
+ this.formControl.statusChanges
52
+ .pipe(takeUntil(this.$destroy))
53
+ .subscribe(status => {
54
+ if (status === 'DISABLED') {
55
+ this.calendarControl.disable({ emitEvent: false });
56
+ }
57
+ else {
58
+ this.calendarControl.enable({ emitEvent: false });
59
+ }
60
+ });
61
+ this.formControl.valueChanges
62
+ .pipe(takeUntil(this.$destroy))
63
+ .subscribe(value => {
64
+ this.calendarControl.setValue(value, { emitEvent: false });
65
+ this.dateTimeChanged.next(value);
66
+ });
67
+ this.calendarControl.valueChanges
68
+ .pipe(takeUntil(this.$destroy))
69
+ .subscribe(value => {
70
+ this.timePicker.to24HourClock();
71
+ this.dateTimeAdapter.setTime(value, this.timePicker.hours, this.timePicker.minutes, this.timePicker.seconds);
72
+ this.formControl.setValue(value);
73
+ });
74
+ }
75
+ ngOnChanges(_changes) {
76
+ if (this.disabled) {
77
+ this.formControl.disable();
78
+ this.calendarControl.disable();
79
+ }
80
+ else {
81
+ this.formControl.enable();
82
+ this.calendarControl.enable();
83
+ }
84
+ }
85
+ ngOnDestroy() {
86
+ this.$destroy.next();
87
+ this.$destroy.complete();
88
+ }
89
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EntryDateTimePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
90
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EntryDateTimePickerComponent, selector: "entry-date-time-picker", inputs: { label: "label", showSeconds: "showSeconds", disabled: "disabled", min: "min", max: "max", placeholder: "placeholder", hint: "hint", defaultTime: "defaultTime" }, outputs: { dateTimeChanged: "dateTimeChanged" }, host: { properties: { "class": "this.class" } }, providers: [
91
+ { provide: MAT_DATE_FORMATS, useFactory: () => inject(ENTRY_MAT_DATE_TIME_FORMATS) },
92
+ { provide: DateAdapter, useClass: EntryDateTimeAdapter }
93
+ ], viewQueries: [{ propertyName: "timePicker", first: true, predicate: EntryTimePickerComponent, descendants: true, static: true }], usesOnChanges: true, hostDirectives: [{ directive: i1.NoopControlValueAccessorDirective }, { directive: i1.NgControlAccessorDirective }], ngImport: i0, template: "<mat-form-field>\n <mat-label>{{ label }}</mat-label>\n <input matInput [matDatepicker]=\"hiddenPicker\" [placeholder]=\"placeholder\" [formControl]=\"formControl\">\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\n <mat-datepicker #hiddenPicker class=\"hidden\"></mat-datepicker>\n <input class=\"hidden\" matInput [min]=\"minDate\" [max]=\"maxDate\" [matDatepicker]=\"picker\"\n [formControl]=\"calendarControl\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker (opened)=\"timePicker.update()\">\n <mat-datepicker-actions>\n <entry-time-picker [date]=\"formControl.value\" [showSeconds]=\"showSeconds\" [is12HourClock]=\"is12HourClock\"\n [defaultTime]=\"defaultTime\"></entry-time-picker>\n <button mat-raised-button color=\"primary\" matDateRangePickerApply class=\"entry-submit-button\">\n <mat-icon aria-hidden=\"false\" aria-label=\"Apply\" fontIcon=\"done\" class=\"icon\"></mat-icon>\n </button>\n </mat-datepicker-actions>\n </mat-datepicker>\n</mat-form-field>", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i5.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i5.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i5.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i5.MatDatepickerActions, selector: "mat-datepicker-actions, mat-date-range-picker-actions" }, { kind: "directive", type: i5.MatDatepickerApply, selector: "[matDatepickerApply], [matDateRangePickerApply]" }, { kind: "directive", type: i6.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: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.EntryTimePickerComponent, selector: "entry-time-picker", inputs: ["date", "showSeconds", "is12HourClock", "defaultTime"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
94
+ }
95
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EntryDateTimePickerComponent, decorators: [{
96
+ type: Component,
97
+ args: [{ selector: 'entry-date-time-picker', providers: [
98
+ { provide: MAT_DATE_FORMATS, useFactory: () => inject(ENTRY_MAT_DATE_TIME_FORMATS) },
99
+ { provide: DateAdapter, useClass: EntryDateTimeAdapter }
100
+ ], hostDirectives: [NoopControlValueAccessorDirective, NgControlAccessorDirective], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-form-field>\n <mat-label>{{ label }}</mat-label>\n <input matInput [matDatepicker]=\"hiddenPicker\" [placeholder]=\"placeholder\" [formControl]=\"formControl\">\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\n <mat-datepicker #hiddenPicker class=\"hidden\"></mat-datepicker>\n <input class=\"hidden\" matInput [min]=\"minDate\" [max]=\"maxDate\" [matDatepicker]=\"picker\"\n [formControl]=\"calendarControl\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker (opened)=\"timePicker.update()\">\n <mat-datepicker-actions>\n <entry-time-picker [date]=\"formControl.value\" [showSeconds]=\"showSeconds\" [is12HourClock]=\"is12HourClock\"\n [defaultTime]=\"defaultTime\"></entry-time-picker>\n <button mat-raised-button color=\"primary\" matDateRangePickerApply class=\"entry-submit-button\">\n <mat-icon aria-hidden=\"false\" aria-label=\"Apply\" fontIcon=\"done\" class=\"icon\"></mat-icon>\n </button>\n </mat-datepicker-actions>\n </mat-datepicker>\n</mat-form-field>" }]
101
+ }], propDecorators: { class: [{
102
+ type: HostBinding,
103
+ args: ['class']
104
+ }], label: [{
105
+ type: Input
106
+ }], showSeconds: [{
107
+ type: Input
108
+ }], disabled: [{
109
+ type: Input
110
+ }], min: [{
111
+ type: Input
112
+ }], max: [{
113
+ type: Input
114
+ }], placeholder: [{
115
+ type: Input
116
+ }], hint: [{
117
+ type: Input
118
+ }], defaultTime: [{
119
+ type: Input
120
+ }], dateTimeChanged: [{
121
+ type: Output
122
+ }], timePicker: [{
123
+ type: ViewChild,
124
+ args: [EntryTimePickerComponent, { static: true }]
125
+ }] } });
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2VudHJ5LWNvbXBvbmVudHMvZGF0ZS10aW1lLXBpY2tlci9kYXRlLXRpbWUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvZW50cnktY29tcG9uZW50cy9kYXRlLXRpbWUtcGlja2VyL2RhdGUtdGltZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFnQyxNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0osT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQWtCLE1BQU0sd0JBQXdCLENBQUM7QUFDdkYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLG9CQUFvQixFQUFFLDBCQUEwQixFQUFFLGlDQUFpQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdEssT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7O0FBWTFDLE1BQU0sT0FBTyw0QkFBNEI7SUFWekM7UUFXd0IsVUFBSyxHQUFHLHdCQUF3QixDQUFDO1FBVTdDLG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQUssQ0FBQztRQUU3QyxzQkFBaUIsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUN2RCxvQkFBZSxHQUFxQyxNQUFNLENBQUMsV0FBVyxDQUFxQyxDQUFDO1FBQzVHLFdBQU0sR0FBbUIsTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFPN0Qs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Vzt1QkFBQyxPQUFPO2dCQUVYLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNJLGVBQWU7c0JBQXhCLE1BQU07Z0JBZ0JnRCxVQUFVO3NCQUFoRSxTQUFTO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNQVRfREFURV9GT1JNQVRTLCBEYXRlQWRhcHRlciwgTWF0RGF0ZUZvcm1hdHMgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IEVOVFJZX01BVF9EQVRFX1RJTUVfRk9STUFUUywgRW50cnlEYXRlVGltZUFkYXB0ZXIsIE5nQ29udHJvbEFjY2Vzc29yRGlyZWN0aXZlLCBOb29wQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmUgfSBmcm9tICdAZW5pZ21hdHJ5L2VudHJ5LWNvbXBvbmVudHMvY29tbW9uJztcbmltcG9ydCB7IEVudHJ5VGltZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vdGltZS1waWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlbnRyeS1kYXRlLXRpbWUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtdGltZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZUZhY3Rvcnk6ICgpID0+IGluamVjdChFTlRSWV9NQVRfREFURV9USU1FX0ZPUk1BVFMpIH0sXG4gICAgeyBwcm92aWRlOiBEYXRlQWRhcHRlciwgdXNlQ2xhc3M6IEVudHJ5RGF0ZVRpbWVBZGFwdGVyIH1cbiAgXSxcbiAgaG9zdERpcmVjdGl2ZXM6IFtOb29wQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmUsIE5nQ29udHJvbEFjY2Vzc29yRGlyZWN0aXZlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRW50cnlEYXRlVGltZVBpY2tlckNvbXBvbmVudDxEPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3MgPSAnZW50cnktZGF0ZS10aW1lLXBpY2tlcic7XG5cbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcbiAgQElucHV0KCkgc2hvd1NlY29uZHM6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKSBtaW46IEQ7XG4gIEBJbnB1dCgpIG1heDogRDtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgaGludDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBkZWZhdWx0VGltZTogRCB8IHVuZGVmaW5lZDtcbiAgQE91dHB1dCgpIGRhdGVUaW1lQ2hhbmdlZCA9IG5ldyBTdWJqZWN0PEQ+KCk7XG5cbiAgbmdDb250cm9sQWNjZXNzb3IgPSBpbmplY3QoTmdDb250cm9sQWNjZXNzb3JEaXJlY3RpdmUpO1xuICBkYXRlVGltZUFkYXB0ZXI6IEVudHJ5RGF0ZVRpbWVBZGFwdGVyPEQsIHVua25vd24+ID0gaW5qZWN0KERhdGVBZGFwdGVyKSBhcyBFbnRyeURhdGVUaW1lQWRhcHRlcjxELCB1bmtub3duPjtcbiAgZm9ybWF0OiBNYXREYXRlRm9ybWF0cyA9IGluamVjdChFTlRSWV9NQVRfREFURV9USU1FX0ZPUk1BVFMpO1xuXG4gIC8vIENvbnRyb2wgYm91bmQgdG8gY29tcG9uZW50IHVzaW5nIEZvcm1zQXBpIChuZ01vZGVsLCBmb3JtQ29udHJvbCwgZm9ybUNvbnRyb2xOYW1lKVxuICBnZXQgZm9ybUNvbnRyb2woKTogRm9ybUNvbnRyb2w8RD4ge1xuICAgIHJldHVybiB0aGlzLm5nQ29udHJvbEFjY2Vzc29yLmNvbnRyb2w7XG4gIH1cblxuICAvLyBDb250cm9sIHRoYXQgaXMgY29ubmVjdGVkIHRvIGNhbGVuZGFyXG4gIGNhbGVuZGFyQ29udHJvbDogRm9ybUNvbnRyb2w8RD4gPSBuZXcgRm9ybUNvbnRyb2w8RD4odW5kZWZpbmVkKTtcblxuICBpczEySG91ckNsb2NrID0gdGhpcy5kYXRlVGltZUFkYXB0ZXIuaXMxMkhvdXJzQ2xvY2sodGhpcy5mb3JtYXQuZGlzcGxheS5kYXRlSW5wdXQpO1xuXG4gIEBWaWV3Q2hpbGQoRW50cnlUaW1lUGlja2VyQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSB0aW1lUGlja2VyOiBFbnRyeVRpbWVQaWNrZXJDb21wb25lbnQ8RD47XG5cbiAgcHJpdmF0ZSAkZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgZ2V0IG1pbkRhdGUoKSB7XG4gICAgaWYgKCF0aGlzLm1pbikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5kYXRlVGltZUFkYXB0ZXIuY2xvbmUodGhpcy5taW4pO1xuICAgIHRoaXMuZGF0ZVRpbWVBZGFwdGVyLnNldFRpbWUocmVzdWx0LCAwLCAwLCAwKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZ2V0IG1heERhdGUoKSB7XG4gICAgaWYgKCF0aGlzLm1heCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5kYXRlVGltZUFkYXB0ZXIuY2xvbmUodGhpcy5tYXgpO1xuICAgIHRoaXMuZGF0ZVRpbWVBZGFwdGVyLnNldFRpbWUocmVzdWx0LCAwLCAwLCAwKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jYWxlbmRhckNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtQ29udHJvbC52YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zdGF0dXNDaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4kZGVzdHJveSkpXG4gICAgICAuc3Vic2NyaWJlKHN0YXR1cyA9PiB7XG4gICAgICAgIGlmIChzdGF0dXMgPT09ICdESVNBQkxFRCcpIHtcbiAgICAgICAgICB0aGlzLmNhbGVuZGFyQ29udHJvbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmNhbGVuZGFyQ29udHJvbC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgdGhpcy5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiRkZXN0cm95KSlcbiAgICAgIC5zdWJzY3JpYmUodmFsdWUgPT5cbiAgICAgICAge1xuICAgICAgICAgIHRoaXMuY2FsZW5kYXJDb250cm9sLnNldFZhbHVlKHZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNoYW5nZWQubmV4dCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICB0aGlzLmNhbGVuZGFyQ29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiRkZXN0cm95KSlcbiAgICAgIC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICB0aGlzLnRpbWVQaWNrZXIudG8yNEhvdXJDbG9jaygpO1xuICAgICAgICB0aGlzLmRhdGVUaW1lQWRhcHRlci5zZXRUaW1lKHZhbHVlLCB0aGlzLnRpbWVQaWNrZXIuaG91cnMsIHRoaXMudGltZVBpY2tlci5taW51dGVzLCB0aGlzLnRpbWVQaWNrZXIuc2Vjb25kcyk7XG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhfY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLmRpc2FibGUoKTtcbiAgICAgIHRoaXMuY2FsZW5kYXJDb250cm9sLmRpc2FibGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5lbmFibGUoKTtcbiAgICAgIHRoaXMuY2FsZW5kYXJDb250cm9sLmVuYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuJGRlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMuJGRlc3Ryb3kuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPG1hdC1mb3JtLWZpZWxkPlxuICAgIDxtYXQtbGFiZWw+e3sgbGFiZWwgfX08L21hdC1sYWJlbD5cbiAgICA8aW5wdXQgbWF0SW5wdXQgW21hdERhdGVwaWNrZXJdPVwiaGlkZGVuUGlja2VyXCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCI+XG4gICAgPG1hdC1oaW50ICpuZ0lmPVwiaGludFwiPnt7aGludH19PC9tYXQtaGludD5cbiAgICA8bWF0LWRhdGVwaWNrZXIgI2hpZGRlblBpY2tlciBjbGFzcz1cImhpZGRlblwiPjwvbWF0LWRhdGVwaWNrZXI+XG4gICAgPGlucHV0IGNsYXNzPVwiaGlkZGVuXCIgbWF0SW5wdXQgW21pbl09XCJtaW5EYXRlXCIgW21heF09XCJtYXhEYXRlXCIgW21hdERhdGVwaWNrZXJdPVwicGlja2VyXCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImNhbGVuZGFyQ29udHJvbFwiPlxuICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwicGlja2VyXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gICAgPG1hdC1kYXRlcGlja2VyICNwaWNrZXIgKG9wZW5lZCk9XCJ0aW1lUGlja2VyLnVwZGF0ZSgpXCI+XG4gICAgICAgIDxtYXQtZGF0ZXBpY2tlci1hY3Rpb25zPlxuICAgICAgICAgICAgPGVudHJ5LXRpbWUtcGlja2VyIFtkYXRlXT1cImZvcm1Db250cm9sLnZhbHVlXCIgW3Nob3dTZWNvbmRzXT1cInNob3dTZWNvbmRzXCIgW2lzMTJIb3VyQ2xvY2tdPVwiaXMxMkhvdXJDbG9ja1wiXG4gICAgICAgICAgICAgICAgW2RlZmF1bHRUaW1lXT1cImRlZmF1bHRUaW1lXCI+PC9lbnRyeS10aW1lLXBpY2tlcj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgbWF0RGF0ZVJhbmdlUGlja2VyQXBwbHkgY2xhc3M9XCJlbnRyeS1zdWJtaXQtYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIGFyaWEtaGlkZGVuPVwiZmFsc2VcIiBhcmlhLWxhYmVsPVwiQXBwbHlcIiBmb250SWNvbj1cImRvbmVcIiBjbGFzcz1cImljb25cIj48L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbWF0LWRhdGVwaWNrZXItYWN0aW9ucz5cbiAgICA8L21hdC1kYXRlcGlja2VyPlxuPC9tYXQtZm9ybS1maWVsZD4iXX0=
@@ -0,0 +1,58 @@
1
+ import { NgModule } from "@angular/core";
2
+ import { FormsModule, ReactiveFormsModule } from "@angular/forms";
3
+ import { MatDatepickerModule } from "@angular/material/datepicker";
4
+ import { MatFormFieldModule } from "@angular/material/form-field";
5
+ import { EntryDateTimePickerComponent } from "./date-time-picker.component";
6
+ import { CommonModule } from "@angular/common";
7
+ import { MatSelectModule } from "@angular/material/select";
8
+ import { MatButtonModule } from "@angular/material/button";
9
+ import { MatInputModule } from "@angular/material/input";
10
+ import { MatIconModule } from "@angular/material/icon";
11
+ import { EntryTimePickerComponent } from './time-picker.component';
12
+ import * as i0 from "@angular/core";
13
+ export class EntryDateTimePickerModule {
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EntryDateTimePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
15
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: EntryDateTimePickerModule, declarations: [EntryDateTimePickerComponent,
16
+ EntryTimePickerComponent], imports: [CommonModule,
17
+ FormsModule,
18
+ ReactiveFormsModule,
19
+ MatFormFieldModule,
20
+ MatDatepickerModule,
21
+ MatInputModule,
22
+ MatSelectModule,
23
+ MatButtonModule,
24
+ MatIconModule], exports: [EntryDateTimePickerComponent] }); }
25
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EntryDateTimePickerModule, imports: [CommonModule,
26
+ FormsModule,
27
+ ReactiveFormsModule,
28
+ MatFormFieldModule,
29
+ MatDatepickerModule,
30
+ MatInputModule,
31
+ MatSelectModule,
32
+ MatButtonModule,
33
+ MatIconModule] }); }
34
+ }
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EntryDateTimePickerModule, decorators: [{
36
+ type: NgModule,
37
+ args: [{
38
+ imports: [
39
+ CommonModule,
40
+ FormsModule,
41
+ ReactiveFormsModule,
42
+ MatFormFieldModule,
43
+ MatDatepickerModule,
44
+ MatInputModule,
45
+ MatSelectModule,
46
+ MatButtonModule,
47
+ MatIconModule
48
+ ],
49
+ declarations: [
50
+ EntryDateTimePickerComponent,
51
+ EntryTimePickerComponent
52
+ ],
53
+ exports: [
54
+ EntryDateTimePickerComponent
55
+ ]
56
+ }]
57
+ }] });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLXBpY2tlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2VudHJ5LWNvbXBvbmVudHMvZGF0ZS10aW1lLXBpY2tlci9kYXRlLXRpbWUtcGlja2VyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQXNCbkUsTUFBTSxPQUFPLHlCQUF5QjsrR0FBekIseUJBQXlCO2dIQUF6Qix5QkFBeUIsaUJBUDlCLDRCQUE0QjtZQUM1Qix3QkFBd0IsYUFaeEIsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsa0JBQWtCO1lBQ2xCLG1CQUFtQjtZQUNuQixjQUFjO1lBQ2QsZUFBZTtZQUNmLGVBQWU7WUFDZixhQUFhLGFBT2IsNEJBQTRCO2dIQUd2Qix5QkFBeUIsWUFsQjlCLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGtCQUFrQjtZQUNsQixtQkFBbUI7WUFDbkIsY0FBYztZQUNkLGVBQWU7WUFDZixlQUFlO1lBQ2YsYUFBYTs7NEZBVVIseUJBQXlCO2tCQXBCckMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGFBQWE7cUJBQ2hCO29CQUNELFlBQVksRUFBRTt3QkFDViw0QkFBNEI7d0JBQzVCLHdCQUF3QjtxQkFDM0I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNMLDRCQUE0QjtxQkFDL0I7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgTWF0RGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyXCI7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xuaW1wb3J0IHsgRW50cnlEYXRlVGltZVBpY2tlckNvbXBvbmVudCB9IGZyb20gXCIuL2RhdGUtdGltZS1waWNrZXIuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0XCI7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XG5pbXBvcnQgeyBFbnRyeVRpbWVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL3RpbWUtcGlja2VyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgICAgIE1hdERhdGVwaWNrZXJNb2R1bGUsXG4gICAgICAgIE1hdElucHV0TW9kdWxlLFxuICAgICAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgTWF0SWNvbk1vZHVsZVxuICAgIF0sXG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIEVudHJ5RGF0ZVRpbWVQaWNrZXJDb21wb25lbnQsXG4gICAgICAgIEVudHJ5VGltZVBpY2tlckNvbXBvbmVudFxuICAgIF0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBFbnRyeURhdGVUaW1lUGlja2VyQ29tcG9uZW50XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBFbnRyeURhdGVUaW1lUGlja2VyTW9kdWxlIHsgfSJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5pZ21hdHJ5LWVudHJ5LWNvbXBvbmVudHMtZGF0ZS10aW1lLXBpY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZW50cnktY29tcG9uZW50cy9kYXRlLXRpbWUtcGlja2VyL2VuaWdtYXRyeS1lbnRyeS1jb21wb25lbnRzLWRhdGUtdGltZS1waWNrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export { EntryDateTimePickerComponent } from './date-time-picker.component';
2
+ export { EntryDateTimePickerModule } from './date-time-picker.module';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZW50cnktY29tcG9uZW50cy9kYXRlLXRpbWUtcGlja2VyL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBFbnRyeURhdGVUaW1lUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRlLXRpbWUtcGlja2VyLmNvbXBvbmVudCc7XG5leHBvcnQgeyBFbnRyeURhdGVUaW1lUGlja2VyTW9kdWxlIH0gZnJvbSAnLi9kYXRlLXRpbWUtcGlja2VyLm1vZHVsZSc7XG4iXX0=
@@ -0,0 +1,80 @@
1
+ import { Component, HostBinding, Input, inject } from '@angular/core';
2
+ import { DateAdapter } from '@angular/material/core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@angular/forms";
6
+ import * as i3 from "@angular/material/form-field";
7
+ import * as i4 from "@angular/material/select";
8
+ import * as i5 from "@angular/material/core";
9
+ export class EntryTimePickerComponent {
10
+ constructor() {
11
+ this.class = 'entry-time-picker';
12
+ this.timeAdapter = inject(DateAdapter);
13
+ this.hours = 0;
14
+ this.minutes = 0;
15
+ this.seconds = 0;
16
+ this.meridiem = 'am';
17
+ this.hours12 = Array.from(Array(12), (_, i) => i + 1);
18
+ this.hours24 = Array.from(Array(24), (_, i) => i);
19
+ this.sixty = Array.from(Array(60), (_, i) => i);
20
+ }
21
+ get possibleHours() {
22
+ return this.is12HourClock ? this.hours12 : this.hours24;
23
+ }
24
+ ngOnChanges(_changes) {
25
+ this.update();
26
+ }
27
+ update() {
28
+ const now = this.timeAdapter.today();
29
+ this.hours = this.date
30
+ ? this.timeAdapter.getHours(this.date)
31
+ : this.timeAdapter.getHours(this.defaultTime ?? now);
32
+ this.minutes = this.date
33
+ ? this.timeAdapter.getMinutes(this.date)
34
+ : this.timeAdapter.getMinutes(this.defaultTime ?? now);
35
+ this.seconds = (this.showSeconds && this.date)
36
+ ? this.timeAdapter.getSeconds(this.date)
37
+ : this.timeAdapter.getSeconds(this.defaultTime ?? now);
38
+ this.meridiem = this.hours >= 12 ? 'pm' : 'am';
39
+ if (this.is12HourClock) {
40
+ this.to12HourClock();
41
+ }
42
+ }
43
+ to12HourClock() {
44
+ if (this.hours > 12) {
45
+ this.hours = this.hours - 12;
46
+ }
47
+ if (this.hours === 0) {
48
+ this.hours = 12;
49
+ }
50
+ }
51
+ to24HourClock() {
52
+ if (!this.is12HourClock) {
53
+ return;
54
+ }
55
+ if (this.meridiem === "am" && this.hours === 12) {
56
+ this.hours = 0;
57
+ }
58
+ if (this.meridiem == "pm" && this.hours != 12) {
59
+ this.hours = this.hours + 12;
60
+ }
61
+ }
62
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EntryTimePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
63
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EntryTimePickerComponent, selector: "entry-time-picker", inputs: { date: "date", showSeconds: "showSeconds", is12HourClock: "is12HourClock", defaultTime: "defaultTime" }, host: { properties: { "class": "this.class" } }, usesOnChanges: true, ngImport: i0, template: "<mat-form-field appearance=\"fill\">\n <mat-select [(ngModel)]=\"hours\" [hideSingleSelectionIndicator]=\"true\" [panelWidth]=\"null\">\n <mat-option *ngFor=\"let hour of possibleHours\" [value]=\"hour\">{{hour | number:'2.0'}}</mat-option>\n </mat-select>\n</mat-form-field>\n<span class=\"time-separator\">&#58;</span>\n<mat-form-field appearance=\"fill\">\n <mat-select [(ngModel)]=\"minutes\" [hideSingleSelectionIndicator]=\"true\" [panelWidth]=\"null\">\n <mat-option *ngFor=\"let minute of sixty\" [value]=\"minute\">{{minute | number:'2.0'}}</mat-option>\n </mat-select>\n</mat-form-field>\n<span *ngIf=\"showSeconds\" class=\"time-separator\">&#58;</span>\n<mat-form-field *ngIf=\"showSeconds\" appearance=\"fill\">\n <mat-select [(ngModel)]=\"seconds\" [hideSingleSelectionIndicator]=\"true\" [panelWidth]=\"null\">\n <mat-option *ngFor=\"let second of sixty\" [value]=\"second\">{{second | number:'2.0'}}</mat-option>\n </mat-select>\n</mat-form-field>\n<mat-form-field *ngIf=\"is12HourClock\" appearance=\"fill\">\n <mat-select [(ngModel)]=\"meridiem\" [hideSingleSelectionIndicator]=\"true\" [panelWidth]=\"null\">\n <mat-option value=\"am\">AM</mat-option>\n <mat-option value=\"pm\">PM</mat-option>\n </mat-select>\n</mat-form-field>", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }] }); }
64
+ }
65
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EntryTimePickerComponent, decorators: [{
66
+ type: Component,
67
+ args: [{ selector: 'entry-time-picker', template: "<mat-form-field appearance=\"fill\">\n <mat-select [(ngModel)]=\"hours\" [hideSingleSelectionIndicator]=\"true\" [panelWidth]=\"null\">\n <mat-option *ngFor=\"let hour of possibleHours\" [value]=\"hour\">{{hour | number:'2.0'}}</mat-option>\n </mat-select>\n</mat-form-field>\n<span class=\"time-separator\">&#58;</span>\n<mat-form-field appearance=\"fill\">\n <mat-select [(ngModel)]=\"minutes\" [hideSingleSelectionIndicator]=\"true\" [panelWidth]=\"null\">\n <mat-option *ngFor=\"let minute of sixty\" [value]=\"minute\">{{minute | number:'2.0'}}</mat-option>\n </mat-select>\n</mat-form-field>\n<span *ngIf=\"showSeconds\" class=\"time-separator\">&#58;</span>\n<mat-form-field *ngIf=\"showSeconds\" appearance=\"fill\">\n <mat-select [(ngModel)]=\"seconds\" [hideSingleSelectionIndicator]=\"true\" [panelWidth]=\"null\">\n <mat-option *ngFor=\"let second of sixty\" [value]=\"second\">{{second | number:'2.0'}}</mat-option>\n </mat-select>\n</mat-form-field>\n<mat-form-field *ngIf=\"is12HourClock\" appearance=\"fill\">\n <mat-select [(ngModel)]=\"meridiem\" [hideSingleSelectionIndicator]=\"true\" [panelWidth]=\"null\">\n <mat-option value=\"am\">AM</mat-option>\n <mat-option value=\"pm\">PM</mat-option>\n </mat-select>\n</mat-form-field>" }]
68
+ }], propDecorators: { class: [{
69
+ type: HostBinding,
70
+ args: ['class']
71
+ }], date: [{
72
+ type: Input
73
+ }], showSeconds: [{
74
+ type: Input
75
+ }], is12HourClock: [{
76
+ type: Input
77
+ }], defaultTime: [{
78
+ type: Input
79
+ }] } });
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9lbnRyeS1jb21wb25lbnRzL2RhdGUtdGltZS1waWNrZXIvdGltZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9lbnRyeS1jb21wb25lbnRzL2RhdGUtdGltZS1waWNrZXIvdGltZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUE0QixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7O0FBU3JELE1BQU0sT0FBTyx3QkFBd0I7SUFKckM7UUFLd0IsVUFBSyxHQUFHLG1CQUFtQixDQUFDO1FBRXpDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBcUMsQ0FBQztRQU8vRSxVQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsWUFBTyxHQUFHLENBQUMsQ0FBQztRQUNaLFlBQU8sR0FBRyxDQUFDLENBQUM7UUFDWixhQUFRLEdBQWEsSUFBSSxDQUFDO1FBRWpCLFlBQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqRCxZQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QyxVQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFF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eyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBFbnRyeURhdGVUaW1lQWRhcHRlciB9IGZyb20gJ0BlbmlnbWF0cnkvZW50cnktY29tcG9uZW50cy9jb21tb24nO1xuXG5leHBvcnQgdHlwZSBtZXJpZGllbSA9ICdhbScgfCAncG0nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlbnRyeS10aW1lLXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi90aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRW50cnlUaW1lUGlja2VyQ29tcG9uZW50PEQ+IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzID0gJ2VudHJ5LXRpbWUtcGlja2VyJztcblxuICByZWFkb25seSB0aW1lQWRhcHRlciA9IGluamVjdChEYXRlQWRhcHRlcikgYXMgRW50cnlEYXRlVGltZUFkYXB0ZXI8RCwgdW5rbm93bj47XG5cbiAgQElucHV0KCkgZGF0ZTogRCB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgc2hvd1NlY29uZHM6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlzMTJIb3VyQ2xvY2s6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGRlZmF1bHRUaW1lOiBEIHwgdW5kZWZpbmVkO1xuXG4gIGhvdXJzID0gMDtcbiAgbWludXRlcyA9IDA7XG4gIHNlY29uZHMgPSAwO1xuICBtZXJpZGllbTogbWVyaWRpZW0gPSAnYW0nO1xuXG4gIHJlYWRvbmx5IGhvdXJzMTIgPSBBcnJheS5mcm9tKEFycmF5KDEyKSwgKF8sIGkpID0+IGkgKyAxKTtcbiAgcmVhZG9ubHkgaG91cnMyNCA9IEFycmF5LmZyb20oQXJyYXkoMjQpLCAoXywgaSkgPT4gaSk7XG4gIHJlYWRvbmx5IHNpeHR5ID0gQXJyYXkuZnJvbShBcnJheSg2MCksIChfLCBpKSA9PiBpKTtcblxuICBnZXQgcG9zc2libGVIb3VycygpIHtcbiAgICByZXR1cm4gdGhpcy5pczEySG91ckNsb2NrID8gdGhpcy5ob3VyczEyIDogdGhpcy5ob3VyczI0O1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoX2NoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZSgpO1xuICB9XG5cbiAgdXBkYXRlKCkge1xuICAgIGNvbnN0IG5vdyA9IHRoaXMudGltZUFkYXB0ZXIudG9kYXkoKTtcblxuICAgIHRoaXMuaG91cnMgPSB0aGlzLmRhdGVcbiAgICAgID8gdGhpcy50aW1lQWRhcHRlci5nZXRIb3Vycyh0aGlzLmRhdGUpXG4gICAgICA6IHRoaXMudGltZUFkYXB0ZXIuZ2V0SG91cnModGhpcy5kZWZhdWx0VGltZSA/PyBub3cpO1xuXG4gICAgdGhpcy5taW51dGVzID0gdGhpcy5kYXRlXG4gICAgICA/IHRoaXMudGltZUFkYXB0ZXIuZ2V0TWludXRlcyh0aGlzLmRhdGUpXG4gICAgICA6IHRoaXMudGltZUFkYXB0ZXIuZ2V0TWludXRlcyh0aGlzLmRlZmF1bHRUaW1lID8/IG5vdyk7XG5cbiAgICB0aGlzLnNlY29uZHMgPSAodGhpcy5zaG93U2Vjb25kcyAmJiB0aGlzLmRhdGUpXG4gICAgICA/IHRoaXMudGltZUFkYXB0ZXIuZ2V0U2Vjb25kcyh0aGlzLmRhdGUpXG4gICAgICA6IHRoaXMudGltZUFkYXB0ZXIuZ2V0U2Vjb25kcyh0aGlzLmRlZmF1bHRUaW1lID8/IG5vdyk7XG5cbiAgICB0aGlzLm1lcmlkaWVtID0gdGhpcy5ob3VycyA+PSAxMiA/ICdwbScgOiAnYW0nO1xuXG4gICAgaWYgKHRoaXMuaXMxMkhvdXJDbG9jaykge1xuICAgICAgdGhpcy50bzEySG91ckNsb2NrKCk7XG4gICAgfVxuICB9XG5cbiAgdG8xMkhvdXJDbG9jaygpIHtcbiAgICBpZiAodGhpcy5ob3VycyA+IDEyKSB7XG4gICAgICB0aGlzLmhvdXJzID0gdGhpcy5ob3VycyAtIDEyO1xuICAgIH1cbiAgICBpZiAodGhpcy5ob3VycyA9PT0gMCkge1xuICAgICAgdGhpcy5ob3VycyA9IDEyO1xuICAgIH1cbiAgfVxuXG4gIHRvMjRIb3VyQ2xvY2soKSB7XG4gICAgaWYgKCF0aGlzLmlzMTJIb3VyQ2xvY2spIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMubWVyaWRpZW0gPT09IFwiYW1cIiAmJiB0aGlzLmhvdXJzID09PSAxMikge1xuICAgICAgdGhpcy5ob3VycyA9IDA7XG4gICAgfVxuICAgIGlmICh0aGlzLm1lcmlkaWVtID09IFwicG1cIiAmJiB0aGlzLmhvdXJzICE9IDEyKSB7XG4gICAgICB0aGlzLmhvdXJzID0gdGhpcy5ob3VycyArIDEyO1xuICAgIH1cbiAgfVxufVxuIiwiPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gIDxtYXQtc2VsZWN0IFsobmdNb2RlbCldPVwiaG91cnNcIiBbaGlkZVNpbmdsZVNlbGVjdGlvbkluZGljYXRvcl09XCJ0cnVlXCIgW3BhbmVsV2lkdGhdPVwibnVsbFwiPlxuICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBob3VyIG9mIHBvc3NpYmxlSG91cnNcIiBbdmFsdWVdPVwiaG91clwiPnt7aG91ciB8IG51bWJlcjonMi4wJ319PC9tYXQtb3B0aW9uPlxuICA8L21hdC1zZWxlY3Q+XG48L21hdC1mb3JtLWZpZWxkPlxuPHNwYW4gY2xhc3M9XCJ0aW1lLXNlcGFyYXRvclwiPiYjNTg7PC9zcGFuPlxuPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gIDxtYXQtc2VsZWN0IFsobmdNb2RlbCldPVwibWludXRlc1wiIFtoaWRlU2luZ2xlU2VsZWN0aW9uSW5kaWNhdG9yXT1cInRydWVcIiBbcGFuZWxXaWR0aF09XCJudWxsXCI+XG4gICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG1pbnV0ZSBvZiBzaXh0eVwiIFt2YWx1ZV09XCJtaW51dGVcIj57e21pbnV0ZSB8IG51bWJlcjonMi4wJ319PC9tYXQtb3B0aW9uPlxuICA8L21hdC1zZWxlY3Q+XG48L21hdC1mb3JtLWZpZWxkPlxuPHNwYW4gKm5nSWY9XCJzaG93U2Vjb25kc1wiIGNsYXNzPVwidGltZS1zZXBhcmF0b3JcIj4mIzU4Ozwvc3Bhbj5cbjxtYXQtZm9ybS1maWVsZCAqbmdJZj1cInNob3dTZWNvbmRzXCIgYXBwZWFyYW5jZT1cImZpbGxcIj5cbiAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJzZWNvbmRzXCIgW2hpZGVTaW5nbGVTZWxlY3Rpb25JbmRpY2F0b3JdPVwidHJ1ZVwiIFtwYW5lbFdpZHRoXT1cIm51bGxcIj5cbiAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgc2Vjb25kIG9mIHNpeHR5XCIgW3ZhbHVlXT1cInNlY29uZFwiPnt7c2Vjb25kIHwgbnVtYmVyOicyLjAnfX08L21hdC1vcHRpb24+XG4gIDwvbWF0LXNlbGVjdD5cbjwvbWF0LWZvcm0tZmllbGQ+XG48bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJpczEySG91ckNsb2NrXCIgYXBwZWFyYW5jZT1cImZpbGxcIj5cbiAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJtZXJpZGllbVwiIFtoaWRlU2luZ2xlU2VsZWN0aW9uSW5kaWNhdG9yXT1cInRydWVcIiBbcGFuZWxXaWR0aF09XCJudWxsXCI+XG4gICAgPG1hdC1vcHRpb24gdmFsdWU9XCJhbVwiPkFNPC9tYXQtb3B0aW9uPlxuICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwicG1cIj5QTTwvbWF0LW9wdGlvbj5cbiAgPC9tYXQtc2VsZWN0PlxuPC9tYXQtZm9ybS1maWVsZD4iXX0=
@@ -1,6 +1,6 @@
1
1
  import { Component, Input, inject } from '@angular/core';
2
2
  import { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
3
- import { ENTRY_MAT_DATE_TIME, EntryDateTimeAdapter } from '@enigmatry/entry-components/common';
3
+ import { ENTRY_MAT_DATE_TIME_FORMATS, EntryDateTimeAdapter } from '@enigmatry/entry-components/common';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/forms";
6
6
  import * as i2 from "@angular/material/input";
@@ -9,14 +9,14 @@ import * as i4 from "@angular/material/datepicker";
9
9
  export class DateTimeSearchFilterComponent {
10
10
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateTimeSearchFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
11
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DateTimeSearchFilterComponent, selector: "entry-date-time-search-filter", inputs: { searchFilter: "searchFilter", form: "form" }, providers: [
12
- { provide: MAT_DATE_FORMATS, useFactory: () => inject(ENTRY_MAT_DATE_TIME).matDateFormats },
12
+ { provide: MAT_DATE_FORMATS, useFactory: () => inject(ENTRY_MAT_DATE_TIME_FORMATS) },
13
13
  { provide: DateAdapter, useClass: EntryDateTimeAdapter }
14
14
  ], ngImport: i0, template: "<mat-form-field [formGroup]=\"form\" subscriptSizing=\"dynamic\">\n <mat-label [attr.for]=\"searchFilter.key\">{{searchFilter.label}}</mat-label>\n <input matInput [formControlName]=\"searchFilter.key\" [matDatepicker]=\"picker\" [id]=\"searchFilter.key\">\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n</mat-form-field>", dependencies: [{ 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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { 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: "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: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i4.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i4.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i4.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }] }); }
15
15
  }
16
16
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateTimeSearchFilterComponent, decorators: [{
17
17
  type: Component,
18
18
  args: [{ selector: 'entry-date-time-search-filter', providers: [
19
- { provide: MAT_DATE_FORMATS, useFactory: () => inject(ENTRY_MAT_DATE_TIME).matDateFormats },
19
+ { provide: MAT_DATE_FORMATS, useFactory: () => inject(ENTRY_MAT_DATE_TIME_FORMATS) },
20
20
  { provide: DateAdapter, useClass: EntryDateTimeAdapter }
21
21
  ], template: "<mat-form-field [formGroup]=\"form\" subscriptSizing=\"dynamic\">\n <mat-label [attr.for]=\"searchFilter.key\">{{searchFilter.label}}</mat-label>\n <input matInput [formControlName]=\"searchFilter.key\" [matDatepicker]=\"picker\" [id]=\"searchFilter.key\">\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n</mat-form-field>" }]
22
22
  }], propDecorators: { searchFilter: [{
@@ -24,4 +24,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
24
24
  }], form: [{
25
25
  type: Input
26
26
  }] } });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLXNlYXJjaC1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9lbnRyeS1jb21wb25lbnRzL3NlYXJjaC1maWx0ZXIvZGF0ZS10aW1lL2RhdGUtdGltZS1zZWFyY2gtZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZW50cnktY29tcG9uZW50cy9zZWFyY2gtZmlsdGVyL2RhdGUtdGltZS9kYXRlLXRpbWUtc2VhcmNoLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7Ozs7QUFVL0YsTUFBTSxPQUFPLDZCQUE2QjsrR0FBN0IsNkJBQTZCO21HQUE3Qiw2QkFBNkIsZ0hBTDdCO1lBQ1QsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLGNBQWMsRUFBRTtZQUMzRixFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFO1NBQ3pELDBCQ1pILDhaQUtpQjs7NEZEU0osNkJBQTZCO2tCQVJ6QyxTQUFTOytCQUNFLCtCQUErQixhQUU5Qjt3QkFDVCxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUMsY0FBYyxFQUFFO3dCQUMzRixFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFO3FCQUN6RDs4QkFHUSxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0ZVRpbWVTZWFyY2hGaWx0ZXIgfSBmcm9tICcuL2RhdGUtdGltZS1zZWFyY2gtZmlsdGVyLm1vZGVsJztcbmltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEYXRlQWRhcHRlciwgTUFUX0RBVEVfRk9STUFUUyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgRU5UUllfTUFUX0RBVEVfVElNRSwgRW50cnlEYXRlVGltZUFkYXB0ZXIgfSBmcm9tICdAZW5pZ21hdHJ5L2VudHJ5LWNvbXBvbmVudHMvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW50cnktZGF0ZS10aW1lLXNlYXJjaC1maWx0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS10aW1lLXNlYXJjaC1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZUZhY3Rvcnk6ICgpID0+IGluamVjdChFTlRSWV9NQVRfREFURV9USU1FKS5tYXREYXRlRm9ybWF0cyB9LFxuICAgIHsgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBFbnRyeURhdGVUaW1lQWRhcHRlciB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVRpbWVTZWFyY2hGaWx0ZXJDb21wb25lbnQ8RD4ge1xuICBASW5wdXQoKSBzZWFyY2hGaWx0ZXI6IERhdGVUaW1lU2VhcmNoRmlsdGVyPEQ+O1xuICAvKiogRm9ybSBncm91cCB0byB3aGljaCB0aGUgc2VhcmNoLWZpbHRlciBpbnB1dCBjb21wb25lbnQgd2lsbCBiZSBhZGRlZC4gKi9cbiAgQElucHV0KCkgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcbn1cbiIsIjxtYXQtZm9ybS1maWVsZCBbZm9ybUdyb3VwXT1cImZvcm1cIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgPG1hdC1sYWJlbCBbYXR0ci5mb3JdPVwic2VhcmNoRmlsdGVyLmtleVwiPnt7c2VhcmNoRmlsdGVyLmxhYmVsfX08L21hdC1sYWJlbD5cbiAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sTmFtZV09XCJzZWFyY2hGaWx0ZXIua2V5XCIgW21hdERhdGVwaWNrZXJdPVwicGlja2VyXCIgW2lkXT1cInNlYXJjaEZpbHRlci5rZXlcIj5cbiAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdEljb25TdWZmaXggW2Zvcl09XCJwaWNrZXJcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cbiAgICA8bWF0LWRhdGVwaWNrZXIgI3BpY2tlcj48L21hdC1kYXRlcGlja2VyPlxuPC9tYXQtZm9ybS1maWVsZD4iXX0=
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLXNlYXJjaC1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9lbnRyeS1jb21wb25lbnRzL3NlYXJjaC1maWx0ZXIvZGF0ZS10aW1lL2RhdGUtdGltZS1zZWFyY2gtZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZW50cnktY29tcG9uZW50cy9zZWFyY2gtZmlsdGVyL2RhdGUtdGltZS9kYXRlLXRpbWUtc2VhcmNoLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7Ozs7QUFVdkcsTUFBTSxPQUFPLDZCQUE2QjsrR0FBN0IsNkJBQTZCO21HQUE3Qiw2QkFBNkIsZ0hBTDdCO1lBQ1QsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxFQUFFO1lBQ3BGLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsb0JBQW9CLEVBQUU7U0FDekQsMEJDWkgsOFpBS2lCOzs0RkRTSiw2QkFBNkI7a0JBUnpDLFNBQVM7K0JBQ0UsK0JBQStCLGFBRTlCO3dCQUNULEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsMkJBQTJCLENBQUMsRUFBRTt3QkFDcEYsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRTtxQkFDekQ7OEJBR1EsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGVUaW1lU2VhcmNoRmlsdGVyIH0gZnJvbSAnLi9kYXRlLXRpbWUtc2VhcmNoLWZpbHRlci5tb2RlbCc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIsIE1BVF9EQVRFX0ZPUk1BVFMgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IEVOVFJZX01BVF9EQVRFX1RJTUVfRk9STUFUUywgRW50cnlEYXRlVGltZUFkYXB0ZXIgfSBmcm9tICdAZW5pZ21hdHJ5L2VudHJ5LWNvbXBvbmVudHMvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW50cnktZGF0ZS10aW1lLXNlYXJjaC1maWx0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS10aW1lLXNlYXJjaC1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZUZhY3Rvcnk6ICgpID0+IGluamVjdChFTlRSWV9NQVRfREFURV9USU1FX0ZPUk1BVFMpIH0sXG4gICAgeyBwcm92aWRlOiBEYXRlQWRhcHRlciwgdXNlQ2xhc3M6IEVudHJ5RGF0ZVRpbWVBZGFwdGVyIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlVGltZVNlYXJjaEZpbHRlckNvbXBvbmVudDxEPiB7XG4gIEBJbnB1dCgpIHNlYXJjaEZpbHRlcjogRGF0ZVRpbWVTZWFyY2hGaWx0ZXI8RD47XG4gIC8qKiBGb3JtIGdyb3VwIHRvIHdoaWNoIHRoZSBzZWFyY2gtZmlsdGVyIGlucHV0IGNvbXBvbmVudCB3aWxsIGJlIGFkZGVkLiAqL1xuICBASW5wdXQoKSBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xufVxuIiwiPG1hdC1mb3JtLWZpZWxkIFtmb3JtR3JvdXBdPVwiZm9ybVwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICA8bWF0LWxhYmVsIFthdHRyLmZvcl09XCJzZWFyY2hGaWx0ZXIua2V5XCI+e3tzZWFyY2hGaWx0ZXIubGFiZWx9fTwvbWF0LWxhYmVsPlxuICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xOYW1lXT1cInNlYXJjaEZpbHRlci5rZXlcIiBbbWF0RGF0ZXBpY2tlcl09XCJwaWNrZXJcIiBbaWRdPVwic2VhcmNoRmlsdGVyLmtleVwiPlxuICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0SWNvblN1ZmZpeCBbZm9yXT1cInBpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgIDxtYXQtZGF0ZXBpY2tlciAjcGlja2VyPjwvbWF0LWRhdGVwaWNrZXI+XG48L21hdC1mb3JtLWZpZWxkPiJdfQ==