@enigmatry/entry-components 19.0.0 → 19.0.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.
@@ -47,7 +47,7 @@ Provide ENTRY_MAT_DATE_TIME_FORMATS and EntryTimeAdapter in a feature or shared
47
47
  export class SharedModule { }
48
48
  ```
49
49
 
50
- Inputs:
50
+ ## Inputs
51
51
 
52
52
  - label: Label for the control
53
53
  - placeholder: Placeholder for the control
@@ -58,11 +58,25 @@ Inputs:
58
58
  - max: Maximum selectable date
59
59
  - defaultTime: Default time for time picker component, if undefined sets default values to now.
60
60
 
61
- Outputs:
61
+ Configure seconds globally via `provideEntryDateTimePickerConfig` in feature or shared module:
62
+
63
+ ```typescript
64
+ @NgModule({
65
+ providers: [
66
+ ...
67
+ provideEntryDateTimePickerConfig({ showSeconds: true })
68
+ ...
69
+ ],
70
+ ...
71
+ })
72
+ export class SharedModule { }
73
+ ```
74
+
75
+ ## Outputs
62
76
 
63
77
  - dateTimeChanged: Event emitted when the date time value changes
64
78
 
65
- Use the component
79
+ ## Use the component
66
80
 
67
81
  ```html
68
82
  <entry-date-time-picker [formControl]="dateTime" label="Expires on"></entry-date-time-picker>
@@ -0,0 +1,20 @@
1
+ import { Provider } from '@angular/core';
2
+ /**
3
+ * Used to provide default configurations on module level.
4
+ */
5
+ export declare class EntryDateTimePickerConfig {
6
+ /** Shows seconds selector in date-time-picker pop-up (default false) */
7
+ showSeconds: boolean;
8
+ constructor(config?: Partial<EntryDateTimePickerConfig>);
9
+ }
10
+ /**
11
+ * Entry date-time-picker injection token of EntryDateTimePickerConfig type containing dialog default configurations.
12
+ *
13
+ * Defaults:
14
+ * - showSeconds: false
15
+ */
16
+ export declare const ENTRY_DATE_TIME_PICKER_CONFIG: import("@angular/core").InjectionToken<EntryDateTimePickerConfig>;
17
+ /**
18
+ * Can be used to provide entry date-time-picker configuration.
19
+ */
20
+ export declare function provideEntryDateTimePickerConfig(config: Partial<EntryDateTimePickerConfig>): Provider;
@@ -2,12 +2,13 @@ import { OnDestroy, OnInit } from '@angular/core';
2
2
  import { FormControl } from '@angular/forms';
3
3
  import { EntryTimePickerComponent } from './time-picker.component';
4
4
  import { Subject } from 'rxjs';
5
+ import { EntryDateTimePickerConfig } from './date-time-picker-config.model';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "@enigmatry/entry-components/common";
7
8
  export declare class EntryDateTimePickerComponent<D> implements OnInit, OnDestroy {
8
9
  class: string;
9
10
  label: string;
10
- showSeconds: boolean;
11
+ showSeconds: boolean | undefined;
11
12
  min: D;
12
13
  max: D;
13
14
  placeholder: string | undefined;
@@ -21,6 +22,7 @@ export declare class EntryDateTimePickerComponent<D> implements OnInit, OnDestro
21
22
  private dateTimeAdapter;
22
23
  private format;
23
24
  private changeDetectorRef;
25
+ config: EntryDateTimePickerConfig;
24
26
  get formControl(): FormControl<D>;
25
27
  calendarControl: FormControl<D>;
26
28
  is12HourClock: boolean;
@@ -1,2 +1,3 @@
1
1
  export { EntryDateTimePickerComponent } from './date-time-picker.component';
2
2
  export { EntryDateTimePickerModule } from './date-time-picker.module';
3
+ export { ENTRY_DATE_TIME_PICKER_CONFIG, EntryDateTimePickerConfig, provideEntryDateTimePickerConfig } from './date-time-picker-config.model';
@@ -13,6 +13,7 @@ import { MatFormFieldModule } from '@angular/material/form-field';
13
13
  import * as i4$1 from '@angular/material/select';
14
14
  import { MatSelectModule } from '@angular/material/select';
15
15
  import { Subject, takeUntil } from 'rxjs';
16
+ import { createInjectionToken, provideConfig } from '@enigmatry/entry-components';
16
17
  import * as i5$1 from '@angular/material/datepicker';
17
18
  import { MatDatepickerModule } from '@angular/material/datepicker';
18
19
  import * as i6 from '@angular/material/input';
@@ -96,6 +97,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.3", ngImpor
96
97
  type: Input
97
98
  }] } });
98
99
 
100
+ /**
101
+ * Used to provide default configurations on module level.
102
+ */
103
+ class EntryDateTimePickerConfig {
104
+ constructor(config = {}) {
105
+ this.showSeconds = config.showSeconds ?? false;
106
+ }
107
+ }
108
+ /**
109
+ * Entry date-time-picker injection token of EntryDateTimePickerConfig type containing dialog default configurations.
110
+ *
111
+ * Defaults:
112
+ * - showSeconds: false
113
+ */
114
+ const ENTRY_DATE_TIME_PICKER_CONFIG = createInjectionToken(new EntryDateTimePickerConfig());
115
+ /**
116
+ * Can be used to provide entry date-time-picker configuration.
117
+ */
118
+ function provideEntryDateTimePickerConfig(config) {
119
+ return provideConfig(ENTRY_DATE_TIME_PICKER_CONFIG, () => new EntryDateTimePickerConfig(config));
120
+ }
121
+
99
122
  class EntryDateTimePickerComponent {
100
123
  constructor() {
101
124
  this.class = 'entry-date-time-picker';
@@ -104,6 +127,7 @@ class EntryDateTimePickerComponent {
104
127
  this.dateTimeAdapter = inject(DateAdapter);
105
128
  this.format = inject(ENTRY_MAT_DATE_TIME_FORMATS);
106
129
  this.changeDetectorRef = inject(ChangeDetectorRef);
130
+ this.config = inject(ENTRY_DATE_TIME_PICKER_CONFIG);
107
131
  // Control that is connected to calendar
108
132
  this.calendarControl = new FormControl(undefined);
109
133
  this.is12HourClock = this.dateTimeAdapter.is12HoursClock(this.format.display.dateInput);
@@ -184,14 +208,14 @@ class EntryDateTimePickerComponent {
184
208
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.3", type: EntryDateTimePickerComponent, isStandalone: false, selector: "entry-date-time-picker", inputs: { label: "label", showSeconds: "showSeconds", min: "min", max: "max", placeholder: "placeholder", hint: "hint", defaultTime: "defaultTime", disabled: "disabled" }, outputs: { dateTimeChanged: "dateTimeChanged" }, host: { properties: { "class": "this.class" } }, providers: [
185
209
  { provide: MAT_DATE_FORMATS, useFactory: () => inject(ENTRY_MAT_DATE_TIME_FORMATS) },
186
210
  { provide: DateAdapter, useClass: EntryDateTimeAdapter }
187
- ], viewQueries: [{ propertyName: "timePicker", first: true, predicate: EntryTimePickerComponent, descendants: true, static: true }], hostDirectives: [{ directive: i1$1.NoopControlValueAccessorDirective }, { directive: i1$1.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\" aria-label=\"Calendar Control\">\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-error entryDisplayControlValidation [control]=\"formControl\"></mat-error>\n</mat-form-field>", dependencies: [{ kind: "directive", type: i1.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.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i5$1.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i5$1.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i5$1.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i5$1.MatDatepickerActions, selector: "mat-datepicker-actions, mat-date-range-picker-actions" }, { kind: "directive", type: i5$1.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", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i9.EntryDisplayControlValidationDirective, selector: "[entryDisplayControlValidation]", inputs: ["control"] }, { kind: "component", type: EntryTimePickerComponent, selector: "entry-time-picker", inputs: ["date", "showSeconds", "is12HourClock", "defaultTime"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
211
+ ], viewQueries: [{ propertyName: "timePicker", first: true, predicate: EntryTimePickerComponent, descendants: true, static: true }], hostDirectives: [{ directive: i1$1.NoopControlValueAccessorDirective }, { directive: i1$1.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\" aria-label=\"Calendar Control\">\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 ?? config.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-error entryDisplayControlValidation [control]=\"formControl\"></mat-error>\n</mat-form-field>", dependencies: [{ kind: "directive", type: i1.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.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i5$1.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i5$1.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i5$1.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i5$1.MatDatepickerActions, selector: "mat-datepicker-actions, mat-date-range-picker-actions" }, { kind: "directive", type: i5$1.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", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i9.EntryDisplayControlValidationDirective, selector: "[entryDisplayControlValidation]", inputs: ["control"] }, { kind: "component", type: EntryTimePickerComponent, selector: "entry-time-picker", inputs: ["date", "showSeconds", "is12HourClock", "defaultTime"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
188
212
  }
189
213
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.3", ngImport: i0, type: EntryDateTimePickerComponent, decorators: [{
190
214
  type: Component,
191
215
  args: [{ selector: 'entry-date-time-picker', providers: [
192
216
  { provide: MAT_DATE_FORMATS, useFactory: () => inject(ENTRY_MAT_DATE_TIME_FORMATS) },
193
217
  { provide: DateAdapter, useClass: EntryDateTimeAdapter }
194
- ], hostDirectives: [NoopControlValueAccessorDirective, NgControlAccessorDirective], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, 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\" aria-label=\"Calendar Control\">\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-error entryDisplayControlValidation [control]=\"formControl\"></mat-error>\n</mat-form-field>" }]
218
+ ], hostDirectives: [NoopControlValueAccessorDirective, NgControlAccessorDirective], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, 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\" aria-label=\"Calendar Control\">\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 ?? config.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-error entryDisplayControlValidation [control]=\"formControl\"></mat-error>\n</mat-form-field>" }]
195
219
  }], propDecorators: { class: [{
196
220
  type: HostBinding,
197
221
  args: ['class']
@@ -271,5 +295,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.3", ngImpor
271
295
  * Generated bundle index. Do not edit.
272
296
  */
273
297
 
274
- export { EntryDateTimePickerComponent, EntryDateTimePickerModule };
298
+ export { ENTRY_DATE_TIME_PICKER_CONFIG, EntryDateTimePickerComponent, EntryDateTimePickerConfig, EntryDateTimePickerModule, provideEntryDateTimePickerConfig };
275
299
  //# sourceMappingURL=enigmatry-entry-components-date-time-picker.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"enigmatry-entry-components-date-time-picker.mjs","sources":["../../../../libs/entry-components/date-time-picker/time-picker.component.ts","../../../../libs/entry-components/date-time-picker/time-picker.component.html","../../../../libs/entry-components/date-time-picker/date-time-picker.component.ts","../../../../libs/entry-components/date-time-picker/date-time-picker.component.html","../../../../libs/entry-components/date-time-picker/date-time-picker.module.ts","../../../../libs/entry-components/date-time-picker/enigmatry-entry-components-date-time-picker.ts"],"sourcesContent":["import { Component, HostBinding, Input, OnChanges, SimpleChanges, inject } from '@angular/core';\nimport { DateAdapter } from '@angular/material/core';\nimport { EntryDateTimeAdapter } from '@enigmatry/entry-components/common';\n\nexport type meridiem = 'am' | 'pm';\n\n@Component({\n selector: 'entry-time-picker',\n templateUrl: './time-picker.component.html',\n standalone: false\n})\nexport class EntryTimePickerComponent<D> implements OnChanges {\n @HostBinding('class') class = 'entry-time-picker';\n\n readonly timeAdapter = inject(DateAdapter) as EntryDateTimeAdapter<D, unknown>;\n\n @Input() date: D | undefined;\n @Input() showSeconds: boolean;\n @Input() is12HourClock: boolean;\n @Input() defaultTime: D | undefined;\n\n hours = 0;\n minutes = 0;\n seconds = 0;\n meridiem: meridiem = 'am';\n\n readonly hours12 = Array.from(Array(12), (_, i) => i + 1);\n readonly hours24 = Array.from(Array(24), (_, i) => i);\n readonly sixty = Array.from(Array(60), (_, i) => i);\n\n get possibleHours() {\n return this.is12HourClock ? this.hours12 : this.hours24;\n }\n\n ngOnChanges(_changes: SimpleChanges): void {\n this.update();\n }\n\n update() {\n const now = this.timeAdapter.today();\n\n this.hours = this.date\n ? this.timeAdapter.getHours(this.date)\n : this.timeAdapter.getHours(this.defaultTime ?? now);\n\n this.minutes = this.date\n ? this.timeAdapter.getMinutes(this.date)\n : this.timeAdapter.getMinutes(this.defaultTime ?? now);\n\n this.seconds = (this.showSeconds && this.date)\n ? this.timeAdapter.getSeconds(this.date)\n : this.timeAdapter.getSeconds(this.defaultTime ?? now);\n\n this.meridiem = this.hours >= 12 ? 'pm' : 'am';\n\n if (this.is12HourClock) {\n this.to12HourClock();\n }\n }\n\n to12HourClock() {\n if (this.hours > 12) {\n this.hours = this.hours - 12;\n }\n if (this.hours === 0) {\n this.hours = 12;\n }\n }\n\n to24HourClock() {\n if (!this.is12HourClock) {\n return;\n }\n if (this.meridiem === \"am\" && this.hours === 12) {\n this.hours = 0;\n }\n if (this.meridiem == \"pm\" && this.hours != 12) {\n this.hours = this.hours + 12;\n }\n }\n}\n","<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>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, Input, OnDestroy, OnInit, Output, ViewChild, inject } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { MAT_DATE_FORMATS, DateAdapter, MatDateFormats } from '@angular/material/core';\nimport { ENTRY_MAT_DATE_TIME_FORMATS, EntryDateTimeAdapter, NgControlAccessorDirective, NoopControlValueAccessorDirective } from '@enigmatry/entry-components/common';\nimport { EntryTimePickerComponent } from './time-picker.component';\nimport { Subject, takeUntil } from 'rxjs';\n\n@Component({\n selector: 'entry-date-time-picker',\n templateUrl: './date-time-picker.component.html',\n providers: [\n { provide: MAT_DATE_FORMATS, useFactory: () => inject(ENTRY_MAT_DATE_TIME_FORMATS) },\n { provide: DateAdapter, useClass: EntryDateTimeAdapter }\n ],\n hostDirectives: [NoopControlValueAccessorDirective, NgControlAccessorDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class EntryDateTimePickerComponent<D> implements OnInit, OnDestroy {\n @HostBinding('class') class = 'entry-date-time-picker';\n\n @Input() label: string;\n @Input() showSeconds: boolean;\n @Input() min: D;\n @Input() max: D;\n @Input() placeholder: string | undefined;\n @Input() hint: string | undefined;\n @Input() defaultTime: D | undefined;\n @Output() dateTimeChanged = new Subject<D>();\n\n _disabled: boolean;\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value: boolean) {\n this._disabled = value;\n this.setDisabled();\n }\n\n private ngControlAccessor = inject(NgControlAccessorDirective);\n private dateTimeAdapter: EntryDateTimeAdapter<D, unknown> = inject(DateAdapter) as EntryDateTimeAdapter<D, unknown>;\n private format: MatDateFormats = inject(ENTRY_MAT_DATE_TIME_FORMATS);\n private changeDetectorRef = inject(ChangeDetectorRef);\n\n // Control bound to component using FormsApi (ngModel, formControl, formControlName)\n get formControl(): FormControl<D> {\n return this.ngControlAccessor.control;\n }\n\n // Control that is connected to calendar\n calendarControl: FormControl<D> = new FormControl<D>(undefined);\n\n is12HourClock = this.dateTimeAdapter.is12HoursClock(this.format.display.dateInput);\n\n @ViewChild(EntryTimePickerComponent, { static: true }) timePicker: EntryTimePickerComponent<D>;\n\n private $destroy = new Subject<void>();\n\n get minDate() {\n if (!this.min) {\n return undefined;\n }\n const result = this.dateTimeAdapter.clone(this.min);\n this.dateTimeAdapter.setTime(result, 0, 0, 0);\n return result;\n }\n\n get maxDate() {\n if (!this.max) {\n return undefined;\n }\n const result = this.dateTimeAdapter.clone(this.max);\n this.dateTimeAdapter.setTime(result, 0, 0, 0);\n return result;\n }\n\n ngOnInit(): void {\n this.calendarControl.setValue(this.formControl.value, { emitEvent: false });\n this.setDisabled();\n this.formControl.statusChanges\n .pipe(takeUntil(this.$destroy))\n .subscribe(status => {\n if (status === 'DISABLED') {\n this.calendarControl.disable({ emitEvent: false });\n } else {\n this.calendarControl.enable({ emitEvent: false });\n }\n this.changeDetectorRef.markForCheck();\n })\n\n this.formControl.valueChanges\n .pipe(takeUntil(this.$destroy))\n .subscribe(value => {\n this.calendarControl.setValue(value, { emitEvent: false });\n this.dateTimeChanged.next(value);\n }\n );\n\n this.calendarControl.valueChanges\n .pipe(takeUntil(this.$destroy))\n .subscribe(value => {\n this.timePicker.to24HourClock();\n this.dateTimeAdapter.setTime(value, this.timePicker.hours, this.timePicker.minutes, this.timePicker.seconds);\n this.formControl.setValue(value);\n this.formControl.markAsDirty();\n this.formControl.markAsTouched();\n });\n }\n\n ngOnDestroy(): void {\n this.$destroy.next();\n this.$destroy.complete();\n }\n\n private setDisabled() {\n if (this._disabled && this.formControl?.enabled) {\n this.formControl?.disable();\n this.calendarControl?.disable({ emitEvent: false });\n } else if (this.formControl?.disabled) {\n this.formControl?.enable();\n this.calendarControl?.enable({ emitEvent: false });\n }\n }\n}\n","<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\" aria-label=\"Calendar Control\">\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-error entryDisplayControlValidation [control]=\"formControl\"></mat-error>\n</mat-form-field>","import { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { CommonModule } from \"@angular/common\";\nimport { MatSelectModule } from \"@angular/material/select\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatInputModule } from \"@angular/material/input\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { EntryValidationModule } from \"@enigmatry/entry-components/validation\";\nimport { EntryDateTimePickerComponent } from \"./date-time-picker.component\";\nimport { EntryTimePickerComponent } from './time-picker.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatDatepickerModule,\n MatInputModule,\n MatSelectModule,\n MatButtonModule,\n MatIconModule,\n EntryValidationModule\n ],\n declarations: [\n EntryDateTimePickerComponent,\n EntryTimePickerComponent\n ],\n exports: [\n EntryDateTimePickerComponent\n ]\n})\nexport class EntryDateTimePickerModule { }","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i4","i5","i10.EntryTimePickerComponent"],"mappings":"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"}
1
+ {"version":3,"file":"enigmatry-entry-components-date-time-picker.mjs","sources":["../../../../libs/entry-components/date-time-picker/time-picker.component.ts","../../../../libs/entry-components/date-time-picker/time-picker.component.html","../../../../libs/entry-components/date-time-picker/date-time-picker-config.model.ts","../../../../libs/entry-components/date-time-picker/date-time-picker.component.ts","../../../../libs/entry-components/date-time-picker/date-time-picker.component.html","../../../../libs/entry-components/date-time-picker/date-time-picker.module.ts","../../../../libs/entry-components/date-time-picker/enigmatry-entry-components-date-time-picker.ts"],"sourcesContent":["import { Component, HostBinding, Input, OnChanges, SimpleChanges, inject } from '@angular/core';\nimport { DateAdapter } from '@angular/material/core';\nimport { EntryDateTimeAdapter } from '@enigmatry/entry-components/common';\n\nexport type meridiem = 'am' | 'pm';\n\n@Component({\n selector: 'entry-time-picker',\n templateUrl: './time-picker.component.html',\n standalone: false\n})\nexport class EntryTimePickerComponent<D> implements OnChanges {\n @HostBinding('class') class = 'entry-time-picker';\n\n readonly timeAdapter = inject(DateAdapter) as EntryDateTimeAdapter<D, unknown>;\n\n @Input() date: D | undefined;\n @Input() showSeconds: boolean;\n @Input() is12HourClock: boolean;\n @Input() defaultTime: D | undefined;\n\n hours = 0;\n minutes = 0;\n seconds = 0;\n meridiem: meridiem = 'am';\n\n readonly hours12 = Array.from(Array(12), (_, i) => i + 1);\n readonly hours24 = Array.from(Array(24), (_, i) => i);\n readonly sixty = Array.from(Array(60), (_, i) => i);\n\n get possibleHours() {\n return this.is12HourClock ? this.hours12 : this.hours24;\n }\n\n ngOnChanges(_changes: SimpleChanges): void {\n this.update();\n }\n\n update() {\n const now = this.timeAdapter.today();\n\n this.hours = this.date\n ? this.timeAdapter.getHours(this.date)\n : this.timeAdapter.getHours(this.defaultTime ?? now);\n\n this.minutes = this.date\n ? this.timeAdapter.getMinutes(this.date)\n : this.timeAdapter.getMinutes(this.defaultTime ?? now);\n\n this.seconds = (this.showSeconds && this.date)\n ? this.timeAdapter.getSeconds(this.date)\n : this.timeAdapter.getSeconds(this.defaultTime ?? now);\n\n this.meridiem = this.hours >= 12 ? 'pm' : 'am';\n\n if (this.is12HourClock) {\n this.to12HourClock();\n }\n }\n\n to12HourClock() {\n if (this.hours > 12) {\n this.hours = this.hours - 12;\n }\n if (this.hours === 0) {\n this.hours = 12;\n }\n }\n\n to24HourClock() {\n if (!this.is12HourClock) {\n return;\n }\n if (this.meridiem === \"am\" && this.hours === 12) {\n this.hours = 0;\n }\n if (this.meridiem == \"pm\" && this.hours != 12) {\n this.hours = this.hours + 12;\n }\n }\n}\n","<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>","import { Provider } from '@angular/core';\nimport { createInjectionToken, provideConfig } from '@enigmatry/entry-components';\n/**\n * Used to provide default configurations on module level.\n */\nexport class EntryDateTimePickerConfig {\n /** Shows seconds selector in date-time-picker pop-up (default false) */\n showSeconds: boolean;\n\n constructor(config: Partial<EntryDateTimePickerConfig> = {}) {\n this.showSeconds = config.showSeconds ?? false;\n }\n}\n\n/**\n * Entry date-time-picker injection token of EntryDateTimePickerConfig type containing dialog default configurations.\n *\n * Defaults:\n * - showSeconds: false\n */\nexport const ENTRY_DATE_TIME_PICKER_CONFIG = createInjectionToken(new EntryDateTimePickerConfig());\n\n/**\n * Can be used to provide entry date-time-picker configuration.\n */\nexport function provideEntryDateTimePickerConfig(config: Partial<EntryDateTimePickerConfig>): Provider {\n return provideConfig(ENTRY_DATE_TIME_PICKER_CONFIG, () => new EntryDateTimePickerConfig(config));\n}","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, Input, OnDestroy, OnInit, Output, ViewChild, inject } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { MAT_DATE_FORMATS, DateAdapter, MatDateFormats } from '@angular/material/core';\nimport { ENTRY_MAT_DATE_TIME_FORMATS, EntryDateTimeAdapter, NgControlAccessorDirective, NoopControlValueAccessorDirective } from '@enigmatry/entry-components/common';\nimport { EntryTimePickerComponent } from './time-picker.component';\nimport { Subject, takeUntil } from 'rxjs';\nimport { ENTRY_DATE_TIME_PICKER_CONFIG, EntryDateTimePickerConfig } from './date-time-picker-config.model';\n\n@Component({\n selector: 'entry-date-time-picker',\n templateUrl: './date-time-picker.component.html',\n providers: [\n { provide: MAT_DATE_FORMATS, useFactory: () => inject(ENTRY_MAT_DATE_TIME_FORMATS) },\n { provide: DateAdapter, useClass: EntryDateTimeAdapter }\n ],\n hostDirectives: [NoopControlValueAccessorDirective, NgControlAccessorDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class EntryDateTimePickerComponent<D> implements OnInit, OnDestroy {\n @HostBinding('class') class = 'entry-date-time-picker';\n\n @Input() label: string;\n @Input() showSeconds: boolean | undefined;\n @Input() min: D;\n @Input() max: D;\n @Input() placeholder: string | undefined;\n @Input() hint: string | undefined;\n @Input() defaultTime: D | undefined;\n @Output() dateTimeChanged = new Subject<D>();\n\n _disabled: boolean;\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value: boolean) {\n this._disabled = value;\n this.setDisabled();\n }\n\n private ngControlAccessor = inject(NgControlAccessorDirective);\n private dateTimeAdapter: EntryDateTimeAdapter<D, unknown> = inject(DateAdapter) as EntryDateTimeAdapter<D, unknown>;\n private format: MatDateFormats = inject(ENTRY_MAT_DATE_TIME_FORMATS);\n private changeDetectorRef = inject(ChangeDetectorRef);\n public config: EntryDateTimePickerConfig = inject(ENTRY_DATE_TIME_PICKER_CONFIG);\n\n // Control bound to component using FormsApi (ngModel, formControl, formControlName)\n get formControl(): FormControl<D> {\n return this.ngControlAccessor.control;\n }\n\n // Control that is connected to calendar\n calendarControl: FormControl<D> = new FormControl<D>(undefined);\n\n is12HourClock = this.dateTimeAdapter.is12HoursClock(this.format.display.dateInput);\n\n @ViewChild(EntryTimePickerComponent, { static: true }) timePicker: EntryTimePickerComponent<D>;\n\n private $destroy = new Subject<void>();\n\n get minDate() {\n if (!this.min) {\n return undefined;\n }\n const result = this.dateTimeAdapter.clone(this.min);\n this.dateTimeAdapter.setTime(result, 0, 0, 0);\n return result;\n }\n\n get maxDate() {\n if (!this.max) {\n return undefined;\n }\n const result = this.dateTimeAdapter.clone(this.max);\n this.dateTimeAdapter.setTime(result, 0, 0, 0);\n return result;\n }\n\n ngOnInit(): void {\n this.calendarControl.setValue(this.formControl.value, { emitEvent: false });\n this.setDisabled();\n this.formControl.statusChanges\n .pipe(takeUntil(this.$destroy))\n .subscribe(status => {\n if (status === 'DISABLED') {\n this.calendarControl.disable({ emitEvent: false });\n } else {\n this.calendarControl.enable({ emitEvent: false });\n }\n this.changeDetectorRef.markForCheck();\n })\n\n this.formControl.valueChanges\n .pipe(takeUntil(this.$destroy))\n .subscribe(value => {\n this.calendarControl.setValue(value, { emitEvent: false });\n this.dateTimeChanged.next(value);\n }\n );\n\n this.calendarControl.valueChanges\n .pipe(takeUntil(this.$destroy))\n .subscribe(value => {\n this.timePicker.to24HourClock();\n this.dateTimeAdapter.setTime(value, this.timePicker.hours, this.timePicker.minutes, this.timePicker.seconds);\n this.formControl.setValue(value);\n this.formControl.markAsDirty();\n this.formControl.markAsTouched();\n });\n }\n\n ngOnDestroy(): void {\n this.$destroy.next();\n this.$destroy.complete();\n }\n\n private setDisabled() {\n if (this._disabled && this.formControl?.enabled) {\n this.formControl?.disable();\n this.calendarControl?.disable({ emitEvent: false });\n } else if (this.formControl?.disabled) {\n this.formControl?.enable();\n this.calendarControl?.enable({ emitEvent: false });\n }\n }\n}\n","<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\" aria-label=\"Calendar Control\">\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 ?? config.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-error entryDisplayControlValidation [control]=\"formControl\"></mat-error>\n</mat-form-field>","import { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { CommonModule } from \"@angular/common\";\nimport { MatSelectModule } from \"@angular/material/select\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatInputModule } from \"@angular/material/input\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { EntryValidationModule } from \"@enigmatry/entry-components/validation\";\nimport { EntryDateTimePickerComponent } from \"./date-time-picker.component\";\nimport { EntryTimePickerComponent } from './time-picker.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatDatepickerModule,\n MatInputModule,\n MatSelectModule,\n MatButtonModule,\n MatIconModule,\n EntryValidationModule\n ],\n declarations: [\n EntryDateTimePickerComponent,\n EntryTimePickerComponent\n ],\n exports: [\n EntryDateTimePickerComponent\n ]\n})\nexport class EntryDateTimePickerModule { }","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i4","i5","i10.EntryTimePickerComponent"],"mappings":"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"}
@@ -70,11 +70,11 @@ class SelectSearchFilterComponent {
70
70
  this.config = config;
71
71
  }
72
72
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.3", ngImport: i0, type: SelectSearchFilterComponent, deps: [{ token: ENTRY_SEARCH_FILTER_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
73
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.3", type: SelectSearchFilterComponent, isStandalone: false, selector: "entry-select-search-filter", inputs: { searchFilter: "searchFilter", form: "form" }, ngImport: i0, template: "<mat-form-field [formGroup]=\"form\" subscriptSizing=\"dynamic\">\n <mat-label [attr.for]=\"searchFilter.key\">{{searchFilter.label}}</mat-label>\n <mat-select [formControlName]=\"searchFilter.key\" [id]=\"searchFilter.key\" [multiple]=\"searchFilter.multiSelect\">\n <mat-option *ngIf=\"!searchFilter.multiSelect\" [value]=\"undefined\">\n {{config.noneSelectedOptionText}}\n </mat-option>\n <ng-container *ngIf=\"searchFilter.options$ !== undefined; else fixedSelectValues\">\n <mat-option *ngFor=\"let option of searchFilter.options$ | async\"\n [value]=\"option.key\">{{option.label}}</mat-option>\n </ng-container>\n <ng-template #fixedSelectValues>\n <mat-option *ngFor=\"let option of searchFilter.options\" [value]=\"option.key\">{{option.label}}</mat-option>\n </ng-template>\n </mat-select>\n <mat-error entryDisplayControlValidation [control]=\"form.get(searchFilter.key)\"></mat-error>\n</mat-form-field>", dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: "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.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i5$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i5.EntryDisplayControlValidationDirective, selector: "[entryDisplayControlValidation]", inputs: ["control"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
73
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.3", type: SelectSearchFilterComponent, isStandalone: false, selector: "entry-select-search-filter", inputs: { searchFilter: "searchFilter", form: "form" }, ngImport: i0, template: "<mat-form-field [formGroup]=\"form\" subscriptSizing=\"dynamic\">\n <mat-label [attr.for]=\"searchFilter.key\">{{searchFilter.label}}</mat-label>\n <mat-select [formControlName]=\"searchFilter.key\" [id]=\"searchFilter.key\" [multiple]=\"searchFilter.multiSelect\">\n <mat-option *ngIf=\"!searchFilter.multiSelect && searchFilter.showNoneOption\" [value]=\"undefined\">\n {{config.noneSelectedOptionText}}\n </mat-option>\n <ng-container *ngIf=\"searchFilter.options$ !== undefined; else fixedSelectValues\">\n <mat-option *ngFor=\"let option of searchFilter.options$ | async\"\n [value]=\"option.key\">{{option.label}}</mat-option>\n </ng-container>\n <ng-template #fixedSelectValues>\n <mat-option *ngFor=\"let option of searchFilter.options\" [value]=\"option.key\">{{option.label}}</mat-option>\n </ng-template>\n </mat-select>\n <mat-error entryDisplayControlValidation [control]=\"form.get(searchFilter.key)\"></mat-error>\n</mat-form-field>", dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: "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.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i5$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i5.EntryDisplayControlValidationDirective, selector: "[entryDisplayControlValidation]", inputs: ["control"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
74
74
  }
75
75
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.3", ngImport: i0, type: SelectSearchFilterComponent, decorators: [{
76
76
  type: Component,
77
- args: [{ selector: 'entry-select-search-filter', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<mat-form-field [formGroup]=\"form\" subscriptSizing=\"dynamic\">\n <mat-label [attr.for]=\"searchFilter.key\">{{searchFilter.label}}</mat-label>\n <mat-select [formControlName]=\"searchFilter.key\" [id]=\"searchFilter.key\" [multiple]=\"searchFilter.multiSelect\">\n <mat-option *ngIf=\"!searchFilter.multiSelect\" [value]=\"undefined\">\n {{config.noneSelectedOptionText}}\n </mat-option>\n <ng-container *ngIf=\"searchFilter.options$ !== undefined; else fixedSelectValues\">\n <mat-option *ngFor=\"let option of searchFilter.options$ | async\"\n [value]=\"option.key\">{{option.label}}</mat-option>\n </ng-container>\n <ng-template #fixedSelectValues>\n <mat-option *ngFor=\"let option of searchFilter.options\" [value]=\"option.key\">{{option.label}}</mat-option>\n </ng-template>\n </mat-select>\n <mat-error entryDisplayControlValidation [control]=\"form.get(searchFilter.key)\"></mat-error>\n</mat-form-field>" }]
77
+ args: [{ selector: 'entry-select-search-filter', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<mat-form-field [formGroup]=\"form\" subscriptSizing=\"dynamic\">\n <mat-label [attr.for]=\"searchFilter.key\">{{searchFilter.label}}</mat-label>\n <mat-select [formControlName]=\"searchFilter.key\" [id]=\"searchFilter.key\" [multiple]=\"searchFilter.multiSelect\">\n <mat-option *ngIf=\"!searchFilter.multiSelect && searchFilter.showNoneOption\" [value]=\"undefined\">\n {{config.noneSelectedOptionText}}\n </mat-option>\n <ng-container *ngIf=\"searchFilter.options$ !== undefined; else fixedSelectValues\">\n <mat-option *ngFor=\"let option of searchFilter.options$ | async\"\n [value]=\"option.key\">{{option.label}}</mat-option>\n </ng-container>\n <ng-template #fixedSelectValues>\n <mat-option *ngFor=\"let option of searchFilter.options\" [value]=\"option.key\">{{option.label}}</mat-option>\n </ng-template>\n </mat-select>\n <mat-error entryDisplayControlValidation [control]=\"form.get(searchFilter.key)\"></mat-error>\n</mat-form-field>" }]
78
78
  }], ctorParameters: () => [{ type: EntrySearchFilterConfig, decorators: [{
79
79
  type: Inject,
80
80
  args: [ENTRY_SEARCH_FILTER_CONFIG]
@@ -269,9 +269,11 @@ class SelectSearchFilter extends SearchFilterBase {
269
269
  * If it is set to false, 'none selected' option becomes available as a first option.
270
270
  * */
271
271
  this.multiSelect = true;
272
+ this.showNoneOption = true;
272
273
  this.options = options.options;
273
274
  this.options$ = options.options$;
274
275
  this.multiSelect = options.multiSelect;
276
+ this.showNoneOption = options.showNoneOption;
275
277
  }
276
278
  }
277
279
 
@@ -1 +1 @@
1
- {"version":3,"file":"enigmatry-entry-components-search-filter.mjs","sources":["../../../../libs/entry-components/search-filter/search-filter-config.model.ts","../../../../libs/entry-components/search-filter/control-type.ts","../../../../libs/entry-components/search-filter/text/text-search-filter.component.ts","../../../../libs/entry-components/search-filter/text/text-search-filter.component.html","../../../../libs/entry-components/search-filter/select/select-search-filter.component.ts","../../../../libs/entry-components/search-filter/select/select-search-filter.component.html","../../../../libs/entry-components/search-filter/autocomplete/autocomplete-search-filter.component.ts","../../../../libs/entry-components/search-filter/autocomplete/autocomplete-search-filter.component.html","../../../../libs/entry-components/search-filter/date-time/date-time-search-filter.component.ts","../../../../libs/entry-components/search-filter/date-time/date-time-search-filter.component.html","../../../../libs/entry-components/search-filter/date/date-search-filter.component.ts","../../../../libs/entry-components/search-filter/date/date-search-filter.component.html","../../../../libs/entry-components/search-filter/entry-search-filter.component.ts","../../../../libs/entry-components/search-filter/entry-search-filter.component.html","../../../../libs/entry-components/search-filter/search-filter-base.model.ts","../../../../libs/entry-components/search-filter/text/text-search-filter.model.ts","../../../../libs/entry-components/search-filter/select/select-search-filter.model.ts","../../../../libs/entry-components/search-filter/autocomplete/autocomplete-search-filter.model.ts","../../../../libs/entry-components/search-filter/select-option.model.ts","../../../../libs/entry-components/search-filter/date-time/date-time-search-filter.model.ts","../../../../libs/entry-components/search-filter/date/date-search-filter.model.ts","../../../../libs/entry-components/search-filter/entry-search-filter.module.ts","../../../../libs/entry-components/search-filter/enigmatry-entry-components-search-filter.ts"],"sourcesContent":["import { Provider } from '@angular/core';\nimport { createInjectionToken, provideConfig } from '@enigmatry/entry-components/common';\n\n/**\n * Used to provide entry search filter configuration on module level.\n */\nexport class EntrySearchFilterConfig {\n /** Apply search filters button label (default 'Apply') */\n applyButtonText: string;\n /** Label for 'none selected' select filter option */\n noneSelectedOptionText: string;\n\n constructor(config: Partial<EntrySearchFilterConfig> = {}) {\n this.applyButtonText = config.applyButtonText ?? 'Apply';\n this.noneSelectedOptionText = config.noneSelectedOptionText ?? 'None';\n }\n}\nexport const ENTRY_SEARCH_FILTER_CONFIG = createInjectionToken(new EntrySearchFilterConfig());\n\n/**\n * Can be used to provide entry search filter configuration.\n */\nexport function provideEntrySearchFilterConfig(config: Partial<EntrySearchFilterConfig>): Provider {\n return provideConfig(ENTRY_SEARCH_FILTER_CONFIG, () => new EntrySearchFilterConfig(config));\n}\n","export enum ControlType {\n text = 'text-input',\n select = 'select-input',\n autocomplete = 'autocomplete-input',\n date = 'date-input',\n dateTime = 'date-time-input'\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { TextSearchFilter } from './text-search-filter.model';\n\n@Component({\n selector: 'entry-text-search-filter',\n templateUrl: './text-search-filter.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class TextSearchFilterComponent {\n @Input() searchFilter: TextSearchFilter;\n /** Form group to which the search-filter input component will be added. */\n @Input() form: UntypedFormGroup;\n}\n","<mat-form-field [formGroup]=\"form\" subscriptSizing=\"dynamic\">\n <mat-label [attr.for]=\"searchFilter.key\">{{searchFilter.label}}</mat-label>\n <input [formControlName]=\"searchFilter.key\" [id]=\"searchFilter.key\" [type]=\"searchFilter.type\" matInput\n [placeholder]=\"searchFilter.placeholder\" [maxlength]=\"searchFilter.maxLength\">\n <mat-error entryDisplayControlValidation [control]=\"form.get(searchFilter.key)\"></mat-error>\n</mat-form-field>","import { ChangeDetectionStrategy, Component, Inject, Input } from '@angular/core';\nimport { SelectSearchFilter } from './select-search-filter.model';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { ENTRY_SEARCH_FILTER_CONFIG, EntrySearchFilterConfig } from '../search-filter-config.model';\n\n@Component({\n selector: 'entry-select-search-filter',\n templateUrl: './select-search-filter.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class SelectSearchFilterComponent<T> {\n /** Configuration of the search filters inputs that will be displayed in the search-filter component. */\n @Input() searchFilter: SelectSearchFilter<T>;\n /** Form group to which the search-filter input component will be added. */\n @Input() form: UntypedFormGroup;\n\n constructor(@Inject(ENTRY_SEARCH_FILTER_CONFIG) public config: EntrySearchFilterConfig) { }\n}\n","<mat-form-field [formGroup]=\"form\" subscriptSizing=\"dynamic\">\n <mat-label [attr.for]=\"searchFilter.key\">{{searchFilter.label}}</mat-label>\n <mat-select [formControlName]=\"searchFilter.key\" [id]=\"searchFilter.key\" [multiple]=\"searchFilter.multiSelect\">\n <mat-option *ngIf=\"!searchFilter.multiSelect\" [value]=\"undefined\">\n {{config.noneSelectedOptionText}}\n </mat-option>\n <ng-container *ngIf=\"searchFilter.options$ !== undefined; else fixedSelectValues\">\n <mat-option *ngFor=\"let option of searchFilter.options$ | async\"\n [value]=\"option.key\">{{option.label}}</mat-option>\n </ng-container>\n <ng-template #fixedSelectValues>\n <mat-option *ngFor=\"let option of searchFilter.options\" [value]=\"option.key\">{{option.label}}</mat-option>\n </ng-template>\n </mat-select>\n <mat-error entryDisplayControlValidation [control]=\"form.get(searchFilter.key)\"></mat-error>\n</mat-form-field>","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { Observable, Subject, of } from 'rxjs';\nimport { filter, tap, takeUntil, debounceTime } from 'rxjs/operators';\nimport { SelectOption } from '../select-option.model';\nimport { AutocompleteSearchFilter } from './autocomplete-search-filter.model';\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\n\n@Component({\n selector: 'entry-autocomplete-search-filter',\n templateUrl: './autocomplete-search-filter.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class AutocompleteSearchFilterComponent<T> implements AfterViewInit, OnDestroy {\n @Input() searchFilter: AutocompleteSearchFilter<T>;\n\n searchField = new FormControl('');\n\n options$: Observable<SelectOption<T>[]> = of([]);\n\n destroy$ = new Subject<void>();\n\n constructor(private cdr: ChangeDetectorRef) { }\n\n ngAfterViewInit(): void {\n this.searchField\n .valueChanges\n .pipe(\n takeUntil(this.destroy$),\n tap(value => this.clearFilterIfLabelMismatch(value)),\n filter(value => value?.length >= this.searchFilter.minimumCharacters),\n debounceTime(this.searchFilter.debounceTime)\n )\n .subscribe(searchValue => {\n // call search and retrieve options\n this.options$ = this.searchFilter.search(searchValue);\n // mark for check because of the debounce\n this.cdr.markForCheck();\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n displayFn = (_selectedValue: SelectOption<T>): string => this.searchFilter.formControl.value?.label;\n\n onSelected = (event: MatAutocompleteSelectedEvent) => {\n this.searchFilter.formControl.patchValue(event.option.value);\n this.searchField.patchValue(event.option.value.label, { emitEvent: false });\n };\n\n private clearFilterIfLabelMismatch(value: string) {\n const label = this.searchFilter.formControl.value?.label;\n if (label && label !== value) {\n this.searchFilter.formControl.patchValue(undefined);\n this.searchField.patchValue(null, { emitEvent: false });\n }\n }\n}\n","<mat-form-field subscriptSizing=\"dynamic\">\n <mat-label>{{searchFilter.label}}</mat-label>\n <input type=\"text\" matInput [placeholder]=\"searchFilter.placeholder\"\n [formControl]=\"searchField\" [id]=\"searchFilter.key\" [matAutocomplete]=\"auto\">\n <mat-autocomplete [displayWith]=\"displayFn\" #auto=\"matAutocomplete\" (optionSelected)=\"onSelected($event)\">\n <mat-option *ngFor=\"let option of options$ | async\" [value]=\"option\">\n {{option.label}}\n </mat-option>\n </mat-autocomplete>\n <mat-error entryDisplayControlValidation [control]=\"searchField\"></mat-error>\n</mat-form-field>","import { Component, Input, inject } from '@angular/core';\nimport { DateTimeSearchFilter } from './date-time-search-filter.model';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';\nimport { ENTRY_MAT_DATE_TIME_FORMATS, EntryDateTimeAdapter } from '@enigmatry/entry-components/common';\n\n@Component({\n selector: 'entry-date-time-search-filter',\n templateUrl: './date-time-search-filter.component.html',\n providers: [\n { provide: MAT_DATE_FORMATS, useFactory: () => inject(ENTRY_MAT_DATE_TIME_FORMATS) },\n { provide: DateAdapter, useClass: EntryDateTimeAdapter }\n ],\n standalone: false\n})\nexport class DateTimeSearchFilterComponent<D> {\n @Input() searchFilter: DateTimeSearchFilter<D>;\n /** Form group to which the search-filter input component will be added. */\n @Input() form: UntypedFormGroup;\n}\n","<mat-form-field class=\"date-time-search-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-error entryDisplayControlValidation [control]=\"form.get(searchFilter.key)\"></mat-error>\n</mat-form-field>","import { Component, Input } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { DateSearchFilter } from './date-search-filter.model';\n\n@Component({\n selector: 'entry-date-search-filter',\n templateUrl: './date-search-filter.component.html',\n standalone: false\n})\nexport class DateSearchFilterComponent<D> {\n @Input() searchFilter: DateSearchFilter<D>;\n /** Form group to which the search-filter input component will be added. */\n @Input() form: UntypedFormGroup;\n}\n","<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-error entryDisplayControlValidation [control]=\"form.get(searchFilter.key)\"></mat-error>\n</mat-form-field>","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\r\nimport { UntypedFormGroup } from '@angular/forms';\r\nimport { SearchFilterParams } from './search-filter-params.type';\r\nimport { ENTRY_SEARCH_FILTER_CONFIG, EntrySearchFilterConfig } from './search-filter-config.model';\r\nimport { SearchFilterBase } from './search-filter-base.model';\r\nimport { TextSearchFilter } from './text/text-search-filter.model';\r\nimport { SelectSearchFilter } from './select/select-search-filter.model';\r\nimport { AutocompleteSearchFilter } from './autocomplete/autocomplete-search-filter.model';\r\nimport { ControlType } from './control-type';\r\nimport { DateTimeSearchFilter } from './date-time/date-time-search-filter.model';\r\nimport { DateSearchFilter } from './date/date-search-filter.model';\r\nimport { SelectOption } from './select-option.model';\r\n\r\n/**\r\n * Entry SearchFilter component.\r\n */\r\n@Component({\n selector: 'entry-search-filter',\n templateUrl: './entry-search-filter.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\r\nexport class EntrySearchFilterComponent implements OnInit {\r\n\r\n /** Configuration of the search filters inputs that will be displayed in the search-filter component. */\r\n @Input() searchFilters: SearchFilterBase<any>[] = [];\r\n /**\r\n * Emits the change in SearchFilterParams so the containing component can apply them and retrieve the filtered results.\r\n */\r\n @Output() searchFilterChange = new EventEmitter<SearchFilterParams>();\r\n\r\n searchFilterForm!: UntypedFormGroup;\r\n controlType = ControlType;\r\n\r\n constructor(@Inject(ENTRY_SEARCH_FILTER_CONFIG) public config: EntrySearchFilterConfig) { }\r\n\r\n ngOnInit() {\r\n this.searchFilterForm = this.toFormGroup(this.searchFilters);\r\n }\r\n\r\n onSubmit() {\r\n const formValue = this.searchFilterForm.value;\r\n this.searchFilterChange.emit(formValue);\r\n }\r\n\r\n toFormGroup(searchFilters: SearchFilterBase<any>[]) {\r\n const group: any = {};\r\n searchFilters.forEach(searchFilter => {\r\n const formControl = searchFilter.toFormControl();\r\n group[searchFilter.key] = formControl;\r\n searchFilter.formControl = formControl;\r\n });\r\n return new UntypedFormGroup(group);\r\n }\r\n\r\n asTextSearchFilter(searchFilter: SearchFilterBase<any>): TextSearchFilter {\r\n return searchFilter as TextSearchFilter;\r\n }\r\n\r\n asSelectSearchFilter<T>(searchFilter: SearchFilterBase<T>): SelectSearchFilter<T> {\r\n return searchFilter as SelectSearchFilter<T>;\r\n }\r\n\r\n asAutocompleteSearchFilter<T>(searchFilter: SearchFilterBase<SelectOption<T>>): AutocompleteSearchFilter<T> {\r\n return searchFilter as AutocompleteSearchFilter<T>;\r\n }\r\n\r\n asDateTimeSearchFilter<T>(searchFilter: SearchFilterBase<T>): DateTimeSearchFilter<T> {\r\n return searchFilter as DateTimeSearchFilter<T>;\r\n }\r\n\r\n asDateSearchFilter<T>(searchFilter: SearchFilterBase<T>): DateSearchFilter<T> {\r\n return searchFilter as DateSearchFilter<T>;\r\n }\r\n}","<form (ngSubmit)=\"onSubmit()\" [formGroup]=\"searchFilterForm\" class=\"search-form-container entry-form\">\r\n <entry-form-errors [form]=\"searchFilterForm\"></entry-form-errors>\r\n <div *ngFor=\"let searchFilter of searchFilters\" class=\"form-field\">\r\n <ng-container [ngSwitch]=\"searchFilter.controlType\">\r\n <entry-text-search-filter *ngSwitchCase=\"controlType.text\" [searchFilter]=\"asTextSearchFilter(searchFilter)\" [form]=\"searchFilterForm\"></entry-text-search-filter>\r\n <entry-select-search-filter *ngSwitchCase=\"controlType.select\" [searchFilter]=\"asSelectSearchFilter(searchFilter)\" [form]=\"searchFilterForm\"></entry-select-search-filter>\r\n <entry-autocomplete-search-filter *ngSwitchCase=\"controlType.autocomplete\" [searchFilter]=\"asAutocompleteSearchFilter(searchFilter)\"></entry-autocomplete-search-filter>\r\n <entry-date-time-search-filter *ngSwitchCase=\"controlType.dateTime\" [searchFilter]=\"asDateTimeSearchFilter(searchFilter)\" [form]=\"searchFilterForm\"></entry-date-time-search-filter>\r\n <entry-date-search-filter *ngSwitchCase=\"controlType.date\" [searchFilter]=\"asDateSearchFilter(searchFilter)\" [form]=\"searchFilterForm\"></entry-date-search-filter>\r\n </ng-container>\r\n </div>\r\n <div class=\"entry-search-filter-actions\">\r\n <button mat-button entry-submit-button>\r\n <span>{{config.applyButtonText}}</span>\r\n </button>\r\n </div>\r\n</form>","import { FormControl } from '@angular/forms';\nimport { ControlType } from './control-type';\n\n/**\n * Base Entry search filter input component.\n */\nexport class SearchFilterBase<T> {\n /** Unique search-filter input key */\n key: string;\n /** Default value to be displayed/selected in the input control */\n value: T | undefined;\n /** Label text to be displayed for the search-filter input control */\n label: string;\n /** Placeholder text for search-filter input control */\n placeholder: string;\n /** Type of input control e.g. 'text' or 'email' */\n type: string;\n /** Control type to be overridden in implementing class, used to render the proper input type e.g. 'text-input' */\n controlType: ControlType;\n /** Max text length to be entered in the input component (default is 256) */\n maxLength: number;\n /** A reference to the form control it represents */\n formControl: FormControl<T>;\n\n constructor(options: Partial<SearchFilterBase<T>> = {}) {\n this.value = options.value;\n this.key = options.key || '';\n this.label = options.label || '';\n this.placeholder = options.placeholder || '';\n this.controlType = options.controlType || ControlType.text;\n this.type = options.type || ControlType.text;\n this.maxLength = options.maxLength || 256;\n }\n\n setValue(value: T | undefined) {\n this.value = value;\n if (this.formControl) {\n this.formControl.patchValue(value);\n }\n }\n\n toFormControl(): FormControl<T> {\n return new FormControl<T>(this.value);\n }\n}\n","import { SearchFilterBase } from '../search-filter-base.model';\nimport { ControlType } from '../control-type';\n\n/**\n * Search filter text input filed configuration.\n */\nexport class TextSearchFilter extends SearchFilterBase<string> {\n override controlType = ControlType.text;\n}\n","import { Observable } from 'rxjs';\nimport { SearchFilterBase } from '../search-filter-base.model';\nimport { ControlType } from '../control-type';\nimport { SelectOption } from '../select-option.model';\n\n/**\n * Search filter select input field configuration. Select options can be provided as fixed list (`options`)\n * or observable (dynamic) list (`options$`).\n */\nexport class SelectSearchFilter<T> extends SearchFilterBase<T> {\n override controlType = ControlType.select;\n /** Fixed list of select filter options (default is empty list) */\n options: SelectOption<T>[] = [];\n /** Observable (dynamic) list of select filter options */\n options$: Observable<SelectOption<T>[]> | undefined;\n /**\n * Enables selection of multiple options (default is true).\n * If it is set to false, 'none selected' option becomes available as a first option.\n * */\n multiSelect = true;\n\n constructor(options: Partial<SelectSearchFilter<T>> = {}) {\n super(options);\n this.options = options.options;\n this.options$ = options.options$;\n this.multiSelect = options.multiSelect;\n }\n}\n","import { ControlType } from '../control-type';\nimport { SearchFilterBase } from '../search-filter-base.model';\nimport { SelectOption } from '../select-option.model';\nimport { Observable } from 'rxjs';\n\n/**\n * Search filter autocomplete field configuration. Options for the autocomplete are provided\n * indirectly via the search function that takes a string and returns an observable array of\n * SelectOption<T>\n */\nexport class AutocompleteSearchFilter<T> extends SearchFilterBase<SelectOption<T>>{\n controlType = ControlType.autocomplete;\n /** Callback function for autocomplete options */\n search: (input: string) => Observable<SelectOption<T>[]>;\n /** Minimum number of characters that must enter to trigger the search function(default is 3) */\n minimumCharacters: number;\n /** Delay in typing before triggering the search function in milliseconds(default is 300) */\n debounceTime: number;\n\n constructor(options: Partial<AutocompleteSearchFilter<T>> = {}) {\n super(options);\n this.search = options.search;\n this.placeholder = options.placeholder;\n this.label = options.label;\n this.debounceTime = options.debounceTime ?? 300;\n this.minimumCharacters = options.minimumCharacters ?? 3;\n }\n}\n","/** Model used to populate select or autocomplete options. */\nexport class SelectOption<T> {\n constructor(\n /** Key used as a value for selected option */\n public key: T,\n /** String value used as display label of select option */\n public label: string) { }\n}\n","import { ControlType } from '../control-type';\nimport { SearchFilterBase } from '../search-filter-base.model';\n\n/**\n * Search filter date time input filed configuration.\n */\nexport class DateTimeSearchFilter<D> extends SearchFilterBase<D>{\n override controlType = ControlType.dateTime;\n}\n","import { ControlType } from '../control-type';\nimport { SearchFilterBase } from '../search-filter-base.model';\n\n/**\n * Search filter date input filed configuration.\n */\nexport class DateSearchFilter<D> extends SearchFilterBase<D>{\n override controlType = ControlType.date;\n}\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { EntryButtonModule } from '@enigmatry/entry-components/button';\r\nimport { EntrySearchFilterComponent } from './entry-search-filter.component';\r\nimport { TextSearchFilterComponent } from './text/text-search-filter.component';\r\nimport { SelectSearchFilterComponent } from './select/select-search-filter.component';\r\nimport { AutocompleteSearchFilterComponent } from './autocomplete/autocomplete-search-filter.component';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { DateTimeSearchFilterComponent } from './date-time/date-time-search-filter.component';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { DateSearchFilterComponent } from './date/date-search-filter.component';\r\nimport { EntryValidationModule } from '@enigmatry/entry-components/validation';\r\n\r\n@NgModule({\r\n declarations: [\r\n EntrySearchFilterComponent,\r\n TextSearchFilterComponent,\r\n SelectSearchFilterComponent,\r\n AutocompleteSearchFilterComponent,\r\n DateTimeSearchFilterComponent,\r\n DateSearchFilterComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatButtonModule,\r\n EntryButtonModule,\r\n MatSelectModule,\r\n MatAutocompleteModule,\r\n MatDatepickerModule,\r\n MatFormFieldModule,\r\n EntryValidationModule\r\n ],\r\n exports: [\r\n EntrySearchFilterComponent\r\n ]\r\n})\r\nexport class EntrySearchFilterModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i4","i1","i2","i5","i6","i3","i7","i6.TextSearchFilterComponent","i7.SelectSearchFilterComponent","i8.AutocompleteSearchFilterComponent","i9.DateTimeSearchFilterComponent","i10.DateSearchFilterComponent"],"mappings":"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"}
1
+ {"version":3,"file":"enigmatry-entry-components-search-filter.mjs","sources":["../../../../libs/entry-components/search-filter/search-filter-config.model.ts","../../../../libs/entry-components/search-filter/control-type.ts","../../../../libs/entry-components/search-filter/text/text-search-filter.component.ts","../../../../libs/entry-components/search-filter/text/text-search-filter.component.html","../../../../libs/entry-components/search-filter/select/select-search-filter.component.ts","../../../../libs/entry-components/search-filter/select/select-search-filter.component.html","../../../../libs/entry-components/search-filter/autocomplete/autocomplete-search-filter.component.ts","../../../../libs/entry-components/search-filter/autocomplete/autocomplete-search-filter.component.html","../../../../libs/entry-components/search-filter/date-time/date-time-search-filter.component.ts","../../../../libs/entry-components/search-filter/date-time/date-time-search-filter.component.html","../../../../libs/entry-components/search-filter/date/date-search-filter.component.ts","../../../../libs/entry-components/search-filter/date/date-search-filter.component.html","../../../../libs/entry-components/search-filter/entry-search-filter.component.ts","../../../../libs/entry-components/search-filter/entry-search-filter.component.html","../../../../libs/entry-components/search-filter/search-filter-base.model.ts","../../../../libs/entry-components/search-filter/text/text-search-filter.model.ts","../../../../libs/entry-components/search-filter/select/select-search-filter.model.ts","../../../../libs/entry-components/search-filter/autocomplete/autocomplete-search-filter.model.ts","../../../../libs/entry-components/search-filter/select-option.model.ts","../../../../libs/entry-components/search-filter/date-time/date-time-search-filter.model.ts","../../../../libs/entry-components/search-filter/date/date-search-filter.model.ts","../../../../libs/entry-components/search-filter/entry-search-filter.module.ts","../../../../libs/entry-components/search-filter/enigmatry-entry-components-search-filter.ts"],"sourcesContent":["import { Provider } from '@angular/core';\nimport { createInjectionToken, provideConfig } from '@enigmatry/entry-components/common';\n\n/**\n * Used to provide entry search filter configuration on module level.\n */\nexport class EntrySearchFilterConfig {\n /** Apply search filters button label (default 'Apply') */\n applyButtonText: string;\n /** Label for 'none selected' select filter option */\n noneSelectedOptionText: string;\n\n constructor(config: Partial<EntrySearchFilterConfig> = {}) {\n this.applyButtonText = config.applyButtonText ?? 'Apply';\n this.noneSelectedOptionText = config.noneSelectedOptionText ?? 'None';\n }\n}\nexport const ENTRY_SEARCH_FILTER_CONFIG = createInjectionToken(new EntrySearchFilterConfig());\n\n/**\n * Can be used to provide entry search filter configuration.\n */\nexport function provideEntrySearchFilterConfig(config: Partial<EntrySearchFilterConfig>): Provider {\n return provideConfig(ENTRY_SEARCH_FILTER_CONFIG, () => new EntrySearchFilterConfig(config));\n}\n","export enum ControlType {\n text = 'text-input',\n select = 'select-input',\n autocomplete = 'autocomplete-input',\n date = 'date-input',\n dateTime = 'date-time-input'\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { TextSearchFilter } from './text-search-filter.model';\n\n@Component({\n selector: 'entry-text-search-filter',\n templateUrl: './text-search-filter.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class TextSearchFilterComponent {\n @Input() searchFilter: TextSearchFilter;\n /** Form group to which the search-filter input component will be added. */\n @Input() form: UntypedFormGroup;\n}\n","<mat-form-field [formGroup]=\"form\" subscriptSizing=\"dynamic\">\n <mat-label [attr.for]=\"searchFilter.key\">{{searchFilter.label}}</mat-label>\n <input [formControlName]=\"searchFilter.key\" [id]=\"searchFilter.key\" [type]=\"searchFilter.type\" matInput\n [placeholder]=\"searchFilter.placeholder\" [maxlength]=\"searchFilter.maxLength\">\n <mat-error entryDisplayControlValidation [control]=\"form.get(searchFilter.key)\"></mat-error>\n</mat-form-field>","import { ChangeDetectionStrategy, Component, Inject, Input } from '@angular/core';\nimport { SelectSearchFilter } from './select-search-filter.model';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { ENTRY_SEARCH_FILTER_CONFIG, EntrySearchFilterConfig } from '../search-filter-config.model';\n\n@Component({\n selector: 'entry-select-search-filter',\n templateUrl: './select-search-filter.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class SelectSearchFilterComponent<T> {\n /** Configuration of the search filters inputs that will be displayed in the search-filter component. */\n @Input() searchFilter: SelectSearchFilter<T>;\n /** Form group to which the search-filter input component will be added. */\n @Input() form: UntypedFormGroup;\n\n constructor(@Inject(ENTRY_SEARCH_FILTER_CONFIG) public config: EntrySearchFilterConfig) { }\n}\n","<mat-form-field [formGroup]=\"form\" subscriptSizing=\"dynamic\">\n <mat-label [attr.for]=\"searchFilter.key\">{{searchFilter.label}}</mat-label>\n <mat-select [formControlName]=\"searchFilter.key\" [id]=\"searchFilter.key\" [multiple]=\"searchFilter.multiSelect\">\n <mat-option *ngIf=\"!searchFilter.multiSelect && searchFilter.showNoneOption\" [value]=\"undefined\">\n {{config.noneSelectedOptionText}}\n </mat-option>\n <ng-container *ngIf=\"searchFilter.options$ !== undefined; else fixedSelectValues\">\n <mat-option *ngFor=\"let option of searchFilter.options$ | async\"\n [value]=\"option.key\">{{option.label}}</mat-option>\n </ng-container>\n <ng-template #fixedSelectValues>\n <mat-option *ngFor=\"let option of searchFilter.options\" [value]=\"option.key\">{{option.label}}</mat-option>\n </ng-template>\n </mat-select>\n <mat-error entryDisplayControlValidation [control]=\"form.get(searchFilter.key)\"></mat-error>\n</mat-form-field>","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { Observable, Subject, of } from 'rxjs';\nimport { filter, tap, takeUntil, debounceTime } from 'rxjs/operators';\nimport { SelectOption } from '../select-option.model';\nimport { AutocompleteSearchFilter } from './autocomplete-search-filter.model';\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\n\n@Component({\n selector: 'entry-autocomplete-search-filter',\n templateUrl: './autocomplete-search-filter.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class AutocompleteSearchFilterComponent<T> implements AfterViewInit, OnDestroy {\n @Input() searchFilter: AutocompleteSearchFilter<T>;\n\n searchField = new FormControl('');\n\n options$: Observable<SelectOption<T>[]> = of([]);\n\n destroy$ = new Subject<void>();\n\n constructor(private cdr: ChangeDetectorRef) { }\n\n ngAfterViewInit(): void {\n this.searchField\n .valueChanges\n .pipe(\n takeUntil(this.destroy$),\n tap(value => this.clearFilterIfLabelMismatch(value)),\n filter(value => value?.length >= this.searchFilter.minimumCharacters),\n debounceTime(this.searchFilter.debounceTime)\n )\n .subscribe(searchValue => {\n // call search and retrieve options\n this.options$ = this.searchFilter.search(searchValue);\n // mark for check because of the debounce\n this.cdr.markForCheck();\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n displayFn = (_selectedValue: SelectOption<T>): string => this.searchFilter.formControl.value?.label;\n\n onSelected = (event: MatAutocompleteSelectedEvent) => {\n this.searchFilter.formControl.patchValue(event.option.value);\n this.searchField.patchValue(event.option.value.label, { emitEvent: false });\n };\n\n private clearFilterIfLabelMismatch(value: string) {\n const label = this.searchFilter.formControl.value?.label;\n if (label && label !== value) {\n this.searchFilter.formControl.patchValue(undefined);\n this.searchField.patchValue(null, { emitEvent: false });\n }\n }\n}\n","<mat-form-field subscriptSizing=\"dynamic\">\n <mat-label>{{searchFilter.label}}</mat-label>\n <input type=\"text\" matInput [placeholder]=\"searchFilter.placeholder\"\n [formControl]=\"searchField\" [id]=\"searchFilter.key\" [matAutocomplete]=\"auto\">\n <mat-autocomplete [displayWith]=\"displayFn\" #auto=\"matAutocomplete\" (optionSelected)=\"onSelected($event)\">\n <mat-option *ngFor=\"let option of options$ | async\" [value]=\"option\">\n {{option.label}}\n </mat-option>\n </mat-autocomplete>\n <mat-error entryDisplayControlValidation [control]=\"searchField\"></mat-error>\n</mat-form-field>","import { Component, Input, inject } from '@angular/core';\nimport { DateTimeSearchFilter } from './date-time-search-filter.model';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';\nimport { ENTRY_MAT_DATE_TIME_FORMATS, EntryDateTimeAdapter } from '@enigmatry/entry-components/common';\n\n@Component({\n selector: 'entry-date-time-search-filter',\n templateUrl: './date-time-search-filter.component.html',\n providers: [\n { provide: MAT_DATE_FORMATS, useFactory: () => inject(ENTRY_MAT_DATE_TIME_FORMATS) },\n { provide: DateAdapter, useClass: EntryDateTimeAdapter }\n ],\n standalone: false\n})\nexport class DateTimeSearchFilterComponent<D> {\n @Input() searchFilter: DateTimeSearchFilter<D>;\n /** Form group to which the search-filter input component will be added. */\n @Input() form: UntypedFormGroup;\n}\n","<mat-form-field class=\"date-time-search-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-error entryDisplayControlValidation [control]=\"form.get(searchFilter.key)\"></mat-error>\n</mat-form-field>","import { Component, Input } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { DateSearchFilter } from './date-search-filter.model';\n\n@Component({\n selector: 'entry-date-search-filter',\n templateUrl: './date-search-filter.component.html',\n standalone: false\n})\nexport class DateSearchFilterComponent<D> {\n @Input() searchFilter: DateSearchFilter<D>;\n /** Form group to which the search-filter input component will be added. */\n @Input() form: UntypedFormGroup;\n}\n","<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-error entryDisplayControlValidation [control]=\"form.get(searchFilter.key)\"></mat-error>\n</mat-form-field>","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\r\nimport { UntypedFormGroup } from '@angular/forms';\r\nimport { SearchFilterParams } from './search-filter-params.type';\r\nimport { ENTRY_SEARCH_FILTER_CONFIG, EntrySearchFilterConfig } from './search-filter-config.model';\r\nimport { SearchFilterBase } from './search-filter-base.model';\r\nimport { TextSearchFilter } from './text/text-search-filter.model';\r\nimport { SelectSearchFilter } from './select/select-search-filter.model';\r\nimport { AutocompleteSearchFilter } from './autocomplete/autocomplete-search-filter.model';\r\nimport { ControlType } from './control-type';\r\nimport { DateTimeSearchFilter } from './date-time/date-time-search-filter.model';\r\nimport { DateSearchFilter } from './date/date-search-filter.model';\r\nimport { SelectOption } from './select-option.model';\r\n\r\n/**\r\n * Entry SearchFilter component.\r\n */\r\n@Component({\n selector: 'entry-search-filter',\n templateUrl: './entry-search-filter.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\r\nexport class EntrySearchFilterComponent implements OnInit {\r\n\r\n /** Configuration of the search filters inputs that will be displayed in the search-filter component. */\r\n @Input() searchFilters: SearchFilterBase<any>[] = [];\r\n /**\r\n * Emits the change in SearchFilterParams so the containing component can apply them and retrieve the filtered results.\r\n */\r\n @Output() searchFilterChange = new EventEmitter<SearchFilterParams>();\r\n\r\n searchFilterForm!: UntypedFormGroup;\r\n controlType = ControlType;\r\n\r\n constructor(@Inject(ENTRY_SEARCH_FILTER_CONFIG) public config: EntrySearchFilterConfig) { }\r\n\r\n ngOnInit() {\r\n this.searchFilterForm = this.toFormGroup(this.searchFilters);\r\n }\r\n\r\n onSubmit() {\r\n const formValue = this.searchFilterForm.value;\r\n this.searchFilterChange.emit(formValue);\r\n }\r\n\r\n toFormGroup(searchFilters: SearchFilterBase<any>[]) {\r\n const group: any = {};\r\n searchFilters.forEach(searchFilter => {\r\n const formControl = searchFilter.toFormControl();\r\n group[searchFilter.key] = formControl;\r\n searchFilter.formControl = formControl;\r\n });\r\n return new UntypedFormGroup(group);\r\n }\r\n\r\n asTextSearchFilter(searchFilter: SearchFilterBase<any>): TextSearchFilter {\r\n return searchFilter as TextSearchFilter;\r\n }\r\n\r\n asSelectSearchFilter<T>(searchFilter: SearchFilterBase<T>): SelectSearchFilter<T> {\r\n return searchFilter as SelectSearchFilter<T>;\r\n }\r\n\r\n asAutocompleteSearchFilter<T>(searchFilter: SearchFilterBase<SelectOption<T>>): AutocompleteSearchFilter<T> {\r\n return searchFilter as AutocompleteSearchFilter<T>;\r\n }\r\n\r\n asDateTimeSearchFilter<T>(searchFilter: SearchFilterBase<T>): DateTimeSearchFilter<T> {\r\n return searchFilter as DateTimeSearchFilter<T>;\r\n }\r\n\r\n asDateSearchFilter<T>(searchFilter: SearchFilterBase<T>): DateSearchFilter<T> {\r\n return searchFilter as DateSearchFilter<T>;\r\n }\r\n}","<form (ngSubmit)=\"onSubmit()\" [formGroup]=\"searchFilterForm\" class=\"search-form-container entry-form\">\r\n <entry-form-errors [form]=\"searchFilterForm\"></entry-form-errors>\r\n <div *ngFor=\"let searchFilter of searchFilters\" class=\"form-field\">\r\n <ng-container [ngSwitch]=\"searchFilter.controlType\">\r\n <entry-text-search-filter *ngSwitchCase=\"controlType.text\" [searchFilter]=\"asTextSearchFilter(searchFilter)\" [form]=\"searchFilterForm\"></entry-text-search-filter>\r\n <entry-select-search-filter *ngSwitchCase=\"controlType.select\" [searchFilter]=\"asSelectSearchFilter(searchFilter)\" [form]=\"searchFilterForm\"></entry-select-search-filter>\r\n <entry-autocomplete-search-filter *ngSwitchCase=\"controlType.autocomplete\" [searchFilter]=\"asAutocompleteSearchFilter(searchFilter)\"></entry-autocomplete-search-filter>\r\n <entry-date-time-search-filter *ngSwitchCase=\"controlType.dateTime\" [searchFilter]=\"asDateTimeSearchFilter(searchFilter)\" [form]=\"searchFilterForm\"></entry-date-time-search-filter>\r\n <entry-date-search-filter *ngSwitchCase=\"controlType.date\" [searchFilter]=\"asDateSearchFilter(searchFilter)\" [form]=\"searchFilterForm\"></entry-date-search-filter>\r\n </ng-container>\r\n </div>\r\n <div class=\"entry-search-filter-actions\">\r\n <button mat-button entry-submit-button>\r\n <span>{{config.applyButtonText}}</span>\r\n </button>\r\n </div>\r\n</form>","import { FormControl } from '@angular/forms';\nimport { ControlType } from './control-type';\n\n/**\n * Base Entry search filter input component.\n */\nexport class SearchFilterBase<T> {\n /** Unique search-filter input key */\n key: string;\n /** Default value to be displayed/selected in the input control */\n value: T | undefined;\n /** Label text to be displayed for the search-filter input control */\n label: string;\n /** Placeholder text for search-filter input control */\n placeholder: string;\n /** Type of input control e.g. 'text' or 'email' */\n type: string;\n /** Control type to be overridden in implementing class, used to render the proper input type e.g. 'text-input' */\n controlType: ControlType;\n /** Max text length to be entered in the input component (default is 256) */\n maxLength: number;\n /** A reference to the form control it represents */\n formControl: FormControl<T>;\n\n constructor(options: Partial<SearchFilterBase<T>> = {}) {\n this.value = options.value;\n this.key = options.key || '';\n this.label = options.label || '';\n this.placeholder = options.placeholder || '';\n this.controlType = options.controlType || ControlType.text;\n this.type = options.type || ControlType.text;\n this.maxLength = options.maxLength || 256;\n }\n\n setValue(value: T | undefined) {\n this.value = value;\n if (this.formControl) {\n this.formControl.patchValue(value);\n }\n }\n\n toFormControl(): FormControl<T> {\n return new FormControl<T>(this.value);\n }\n}\n","import { SearchFilterBase } from '../search-filter-base.model';\nimport { ControlType } from '../control-type';\n\n/**\n * Search filter text input filed configuration.\n */\nexport class TextSearchFilter extends SearchFilterBase<string> {\n override controlType = ControlType.text;\n}\n","import { Observable } from 'rxjs';\nimport { SearchFilterBase } from '../search-filter-base.model';\nimport { ControlType } from '../control-type';\nimport { SelectOption } from '../select-option.model';\n\n/**\n * Search filter select input field configuration. Select options can be provided as fixed list (`options`)\n * or observable (dynamic) list (`options$`).\n */\nexport class SelectSearchFilter<T> extends SearchFilterBase<T> {\n override controlType = ControlType.select;\n /** Fixed list of select filter options (default is empty list) */\n options: SelectOption<T>[] = [];\n /** Observable (dynamic) list of select filter options */\n options$: Observable<SelectOption<T>[]> | undefined;\n /**\n * Enables selection of multiple options (default is true).\n * If it is set to false, 'none selected' option becomes available as a first option.\n * */\n multiSelect = true;\n showNoneOption = true;\n\n constructor(options: Partial<SelectSearchFilter<T>> = {}) {\n super(options);\n this.options = options.options;\n this.options$ = options.options$;\n this.multiSelect = options.multiSelect;\n this.showNoneOption = options.showNoneOption;\n }\n}\n","import { ControlType } from '../control-type';\nimport { SearchFilterBase } from '../search-filter-base.model';\nimport { SelectOption } from '../select-option.model';\nimport { Observable } from 'rxjs';\n\n/**\n * Search filter autocomplete field configuration. Options for the autocomplete are provided\n * indirectly via the search function that takes a string and returns an observable array of\n * SelectOption<T>\n */\nexport class AutocompleteSearchFilter<T> extends SearchFilterBase<SelectOption<T>>{\n controlType = ControlType.autocomplete;\n /** Callback function for autocomplete options */\n search: (input: string) => Observable<SelectOption<T>[]>;\n /** Minimum number of characters that must enter to trigger the search function(default is 3) */\n minimumCharacters: number;\n /** Delay in typing before triggering the search function in milliseconds(default is 300) */\n debounceTime: number;\n\n constructor(options: Partial<AutocompleteSearchFilter<T>> = {}) {\n super(options);\n this.search = options.search;\n this.placeholder = options.placeholder;\n this.label = options.label;\n this.debounceTime = options.debounceTime ?? 300;\n this.minimumCharacters = options.minimumCharacters ?? 3;\n }\n}\n","/** Model used to populate select or autocomplete options. */\nexport class SelectOption<T> {\n constructor(\n /** Key used as a value for selected option */\n public key: T,\n /** String value used as display label of select option */\n public label: string) { }\n}\n","import { ControlType } from '../control-type';\nimport { SearchFilterBase } from '../search-filter-base.model';\n\n/**\n * Search filter date time input filed configuration.\n */\nexport class DateTimeSearchFilter<D> extends SearchFilterBase<D>{\n override controlType = ControlType.dateTime;\n}\n","import { ControlType } from '../control-type';\nimport { SearchFilterBase } from '../search-filter-base.model';\n\n/**\n * Search filter date input filed configuration.\n */\nexport class DateSearchFilter<D> extends SearchFilterBase<D>{\n override controlType = ControlType.date;\n}\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { EntryButtonModule } from '@enigmatry/entry-components/button';\r\nimport { EntrySearchFilterComponent } from './entry-search-filter.component';\r\nimport { TextSearchFilterComponent } from './text/text-search-filter.component';\r\nimport { SelectSearchFilterComponent } from './select/select-search-filter.component';\r\nimport { AutocompleteSearchFilterComponent } from './autocomplete/autocomplete-search-filter.component';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { DateTimeSearchFilterComponent } from './date-time/date-time-search-filter.component';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { DateSearchFilterComponent } from './date/date-search-filter.component';\r\nimport { EntryValidationModule } from '@enigmatry/entry-components/validation';\r\n\r\n@NgModule({\r\n declarations: [\r\n EntrySearchFilterComponent,\r\n TextSearchFilterComponent,\r\n SelectSearchFilterComponent,\r\n AutocompleteSearchFilterComponent,\r\n DateTimeSearchFilterComponent,\r\n DateSearchFilterComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatButtonModule,\r\n EntryButtonModule,\r\n MatSelectModule,\r\n MatAutocompleteModule,\r\n MatDatepickerModule,\r\n MatFormFieldModule,\r\n EntryValidationModule\r\n ],\r\n exports: [\r\n EntrySearchFilterComponent\r\n ]\r\n})\r\nexport class EntrySearchFilterModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i4","i1","i2","i5","i6","i3","i7","i6.TextSearchFilterComponent","i7.SelectSearchFilterComponent","i8.AutocompleteSearchFilterComponent","i9.DateTimeSearchFilterComponent","i10.DateSearchFilterComponent"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@enigmatry/entry-components",
3
- "version": "19.0.0",
3
+ "version": "19.0.1-preview.4",
4
4
  "author": "Enigmatry",
5
5
  "description": "Enigmatry entry angular material components",
6
6
  "homepage": "https://github.com/enigmatry/entry-angular-building-blocks/tree/master/libs/entry-components#readme",
@@ -17,5 +17,6 @@ export declare class SelectSearchFilter<T> extends SearchFilterBase<T> {
17
17
  * If it is set to false, 'none selected' option becomes available as a first option.
18
18
  * */
19
19
  multiSelect: boolean;
20
+ showNoneOption: boolean;
20
21
  constructor(options?: Partial<SelectSearchFilter<T>>);
21
22
  }
@@ -8,13 +8,14 @@
8
8
  }
9
9
  $current-lightness: color.lightness($color);
10
10
  $adjustment: if($current-lightness > 50%, -$percentage, $percentage);
11
+
11
12
  @return color.adjust($color, $lightness: $adjustment);
12
13
  }
13
14
 
14
15
  @mixin generate-from($theme) {
15
16
  $enabled-states: 'enabled', 'enabled:focus:not(:active)', 'enabled:active', 'enabled:hover:not(:focus):not(:active)';
16
17
  $handle-selector: '.mdc-switch__handle::after';
17
-
18
+
18
19
  $toggle: map.get($theme, 'general', 'toggle');
19
20
  $handle-on-background: map.get($toggle, 'on', 'background');
20
21
  $handle-off-background: map.get($toggle, 'off', 'background');
@@ -35,7 +36,7 @@
35
36
  &::after {
36
37
  background-color: -adjust-lightness($handle-on-background);
37
38
  }
38
-
39
+
39
40
  &::before {
40
41
  background-color: -adjust-lightness($handle-off-background);
41
42
  }
@@ -42,5 +42,6 @@
42
42
  }
43
43
 
44
44
  $color: map.get($theme, 'general', 'colors', $key);
45
+
45
46
  @return palette-generator.generate-from($color);
46
47
  }
@@ -83,6 +83,7 @@
83
83
  @function -set-text-groups-for($typography, $body-font, $buttons-font) {
84
84
  $typography: -set-typography-group($typography, ('body-1', 'body-2', 'caption'), $body-font);
85
85
  $typography: -set-typography-group($typography, ('button'), $buttons-font);
86
+
86
87
  @return $typography;
87
88
  }
88
89
 
@@ -104,5 +105,6 @@
104
105
 
105
106
  @function -set-typography-font($typography, $section, $font) {
106
107
  $typography: map.set($typography, $section, 'font-family', '"#{$font}"');
108
+
107
109
  @return $typography;
108
110
  }