@enigmatry/entry-components 15.1.0-preview.4 → 15.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/common/date-time/entry-date-time-adapter.d.ts +36 -0
  2. package/common/date-time/entry-date-time.d.ts +7 -0
  3. package/common/date-time/index.d.ts +2 -0
  4. package/common/public-api.d.ts +1 -0
  5. package/esm2020/common/date-time/entry-date-time-adapter.mjs +101 -0
  6. package/esm2020/common/date-time/entry-date-time.mjs +3 -0
  7. package/esm2020/common/date-time/index.mjs +3 -0
  8. package/esm2020/common/public-api.mjs +2 -1
  9. package/esm2020/search-filter/control-type.mjs +3 -1
  10. package/esm2020/search-filter/date/date-search-filter.component.mjs +19 -0
  11. package/esm2020/search-filter/date/date-search-filter.model.mjs +12 -0
  12. package/esm2020/search-filter/date-time/date-time-search-filter.component.mjs +27 -0
  13. package/esm2020/search-filter/date-time/date-time-search-filter.model.mjs +12 -0
  14. package/esm2020/search-filter/entry-search-filter.component.mjs +13 -5
  15. package/esm2020/search-filter/entry-search-filter.module.mjs +20 -6
  16. package/esm2020/search-filter/public-api.mjs +3 -1
  17. package/fesm2015/enigmatry-entry-components-common.mjs +104 -2
  18. package/fesm2015/enigmatry-entry-components-common.mjs.map +1 -1
  19. package/fesm2015/enigmatry-entry-components-search-filter.mjs +91 -17
  20. package/fesm2015/enigmatry-entry-components-search-filter.mjs.map +1 -1
  21. package/fesm2020/enigmatry-entry-components-common.mjs +102 -2
  22. package/fesm2020/enigmatry-entry-components-common.mjs.map +1 -1
  23. package/fesm2020/enigmatry-entry-components-search-filter.mjs +91 -17
  24. package/fesm2020/enigmatry-entry-components-search-filter.mjs.map +1 -1
  25. package/package.json +1 -1
  26. package/search-filter/README.md +48 -4
  27. package/search-filter/control-type.d.ts +3 -1
  28. package/search-filter/date/date-search-filter.component.d.ts +10 -0
  29. package/search-filter/date/date-search-filter.model.d.ts +8 -0
  30. package/search-filter/date-time/date-time-search-filter.component.d.ts +10 -0
  31. package/search-filter/date-time/date-time-search-filter.model.d.ts +8 -0
  32. package/search-filter/entry-search-filter.component.d.ts +4 -0
  33. package/search-filter/entry-search-filter.module.d.ts +12 -8
  34. package/search-filter/public-api.d.ts +2 -0
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Directive, Input, Self, Injectable, NgModule, InjectionToken, inject, LOCALE_ID } from '@angular/core';
2
+ import { Directive, Input, Self, Injectable, NgModule, InjectionToken, inject, LOCALE_ID, Optional, Inject, SkipSelf } from '@angular/core';
3
3
  import { CommonModule } from '@angular/common';
4
4
  import { Subject, fromEvent, timer } from 'rxjs';
5
5
  import { takeUntil } from 'rxjs/operators';
@@ -7,6 +7,8 @@ import { coerceNumberProperty } from '@angular/cdk/coercion';
7
7
  import * as i1 from '@angular/forms';
8
8
  import { debounce, throttle } from 'lodash-es';
9
9
  import { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';
10
+ import * as i1$1 from '@angular/material/core';
11
+ import { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';
10
12
 
11
13
  const NG_VALID_CLASS = '.ng-valid';
12
14
  const NG_INVALID_CLASS = '.ng-invalid';
@@ -295,9 +297,109 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
295
297
  type: Injectable
296
298
  }] });
297
299
 
300
+ const ENTRY_MAT_DATE_TIME = new InjectionToken('');
301
+
302
+ /**
303
+ * Extends provided DateAdapter with date time support
304
+ */
305
+ class EntryDateTimeAdapter extends DateAdapter {
306
+ constructor(matDateLocale, entryMatDateTime, dateAdapter) {
307
+ super();
308
+ this.dateAdapter = dateAdapter;
309
+ this.compareFunction = entryMatDateTime.compareDate;
310
+ this.dateAdapter.setLocale(matDateLocale);
311
+ }
312
+ getYear(date) {
313
+ return this.dateAdapter.getYear(date);
314
+ }
315
+ getMonth(date) {
316
+ return this.dateAdapter.getMonth(date);
317
+ }
318
+ getDate(date) {
319
+ return this.dateAdapter.getDate(date);
320
+ }
321
+ getDayOfWeek(date) {
322
+ return this.dateAdapter.getDayOfWeek(date);
323
+ }
324
+ getMonthNames(style) {
325
+ return this.dateAdapter.getMonthNames(style);
326
+ }
327
+ getDateNames() {
328
+ return this.dateAdapter.getDateNames();
329
+ }
330
+ getDayOfWeekNames(style) {
331
+ return this.dateAdapter.getDayOfWeekNames(style);
332
+ }
333
+ getYearName(date) {
334
+ return this.dateAdapter.getYearName(date);
335
+ }
336
+ getFirstDayOfWeek() {
337
+ return this.dateAdapter.getFirstDayOfWeek();
338
+ }
339
+ getNumDaysInMonth(date) {
340
+ return this.dateAdapter.getNumDaysInMonth(date);
341
+ }
342
+ clone(date) {
343
+ return this.dateAdapter.clone(date);
344
+ }
345
+ createDate(year, month, date) {
346
+ return this.dateAdapter.createDate(year, month, date);
347
+ }
348
+ today() {
349
+ return this.dateAdapter.today();
350
+ }
351
+ parse(value, parseFormat) {
352
+ return this.dateAdapter.parse(value, parseFormat);
353
+ }
354
+ format(date, displayFormat) {
355
+ return this.dateAdapter.format(date, displayFormat);
356
+ }
357
+ addCalendarYears(date, years) {
358
+ return this.dateAdapter.addCalendarYears(date, years);
359
+ }
360
+ addCalendarMonths(date, months) {
361
+ return this.dateAdapter.addCalendarMonths(date, months);
362
+ }
363
+ addCalendarDays(date, days) {
364
+ return this.dateAdapter.addCalendarDays(date, days);
365
+ }
366
+ toIso8601(date) {
367
+ return this.dateAdapter.toIso8601(date);
368
+ }
369
+ isDateInstance(obj) {
370
+ return this.dateAdapter.isDateInstance(obj);
371
+ }
372
+ isValid(date) {
373
+ return this.dateAdapter.isValid(date);
374
+ }
375
+ invalid() {
376
+ return this.dateAdapter.invalid();
377
+ }
378
+ compareDate(first, second) {
379
+ return this.compareFunction(first, second);
380
+ }
381
+ }
382
+ EntryDateTimeAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EntryDateTimeAdapter, deps: [{ token: MAT_DATE_LOCALE, optional: true }, { token: ENTRY_MAT_DATE_TIME }, { token: i1$1.DateAdapter, skipSelf: true }], target: i0.ɵɵFactoryTarget.Injectable });
383
+ EntryDateTimeAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EntryDateTimeAdapter });
384
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EntryDateTimeAdapter, decorators: [{
385
+ type: Injectable
386
+ }], ctorParameters: function () {
387
+ return [{ type: undefined, decorators: [{
388
+ type: Optional
389
+ }, {
390
+ type: Inject,
391
+ args: [MAT_DATE_LOCALE]
392
+ }] }, { type: undefined, decorators: [{
393
+ type: Inject,
394
+ args: [ENTRY_MAT_DATE_TIME]
395
+ }] }, { type: i1$1.DateAdapter, decorators: [{
396
+ type: SkipSelf
397
+ }] }];
398
+ } });
399
+
298
400
  /**
299
401
  * Generated bundle index. Do not edit.
300
402
  */
301
403
 
302
- export { AcceptLanguageInterceptor, AutoDisableButtonDirective, DebounceEventPlugin, EntryCommonModule, NG_EVENT_PLUGINS, ScrollToInvalidControlDirective, ThrottleEventPlugin, createInjectionToken, provideConfig };
404
+ export { AcceptLanguageInterceptor, AutoDisableButtonDirective, DebounceEventPlugin, ENTRY_MAT_DATE_TIME, EntryCommonModule, EntryDateTimeAdapter, NG_EVENT_PLUGINS, ScrollToInvalidControlDirective, ThrottleEventPlugin, createInjectionToken, provideConfig };
303
405
  //# sourceMappingURL=enigmatry-entry-components-common.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"enigmatry-entry-components-common.mjs","sources":["../../../../libs/entry-components/common/constants.ts","../../../../libs/entry-components/common/directives/auto-disable-button.directive.ts","../../../../libs/entry-components/common/directives/scroll-to-invalid-control.directive.ts","../../../../libs/entry-components/common/event-plugins/abstract.plugin.ts","../../../../libs/entry-components/common/event-plugins/debounce.plugin.ts","../../../../libs/entry-components/common/event-plugins/throttle.plugin.ts","../../../../libs/entry-components/common/common.module.ts","../../../../libs/entry-components/common/utils/provide-config.ts","../../../../libs/entry-components/common/interceptors/accept-language.interceptor.ts","../../../../libs/entry-components/common/enigmatry-entry-components-common.ts"],"sourcesContent":["export const NG_VALID_CLASS = '.ng-valid';\r\nexport const NG_INVALID_CLASS = '.ng-invalid';\r\n","import { Directive, ElementRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject, fromEvent, timer } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { NG_VALID_CLASS } from '../constants';\nimport { NumberInput, coerceNumberProperty } from '@angular/cdk/coercion';\n\n/**\n * Auto disable button after click or submit with entry-auto-disable directive.\n * Directive is applied to 'button[entry-auto-disable]:not([disabled])'\n * Default auto disable interval is 2000ms (2sec)\n *\n * Usage\n * <button mat-button entry-submit-button entry-auto-disable type=\"submit\">Submit</button>\n * or with auto disabled interval in milliseconds\n * <button mat-button entry-submit-button entry-auto-disable=\"5000\" type=\"submit\">Submit</button>\n */\n@Directive({\n standalone: true,\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'button[entry-auto-disable]:not([disabled])'\n})\nexport class AutoDisableButtonDirective implements OnInit, OnDestroy {\n\n private _destroy$ = new Subject<void>();\n private _disableIntervalInMs = 2000;\n\n constructor(private elementRef: ElementRef<HTMLButtonElement>) { }\n\n @Input('entry-auto-disable')\n get disableIntervalInMs() {\n return this._disableIntervalInMs;\n }\n set disableIntervalInMs(value: NumberInput) {\n this._disableIntervalInMs = coerceNumberProperty(value, 2000);\n }\n\n ngOnInit(): void {\n const button = this.elementRef.nativeElement;\n const isTypeSubmit = button.getAttribute('type') === 'submit';\n const form: HTMLFormElement = button.closest('form');\n\n if (isTypeSubmit && form) {\n // listen to form submit event\n fromEvent(form, 'submit')\n .pipe(takeUntil(this._destroy$))\n .subscribe(_ => {\n if (form.matches(NG_VALID_CLASS)) {\n this.disableButton(this._disableIntervalInMs);\n }\n });\n } else {\n // otherwise listen to click event\n fromEvent(button, 'click')\n .pipe(takeUntil(this._destroy$))\n .subscribe(_ => this.disableButton(this._disableIntervalInMs));\n }\n }\n\n ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n private disableButton(disablePeriodInMs: number): void {\n const button = this.elementRef.nativeElement;\n\n button.disabled = true;\n\n timer(disablePeriodInMs)\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => button.disabled = false);\n }\n}\n","import { Directive, ElementRef, OnDestroy, OnInit, Self } from '@angular/core';\r\nimport { ControlContainer } from '@angular/forms';\r\nimport { Subject, fromEvent } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { NG_INVALID_CLASS } from '../constants';\r\n\r\n/**\r\n * Scroll to first invalid control when form is submitted.\r\n * Directive is applied to 'form[formGroup],form[ngForm]' (reactive or template driven forms)\r\n */\r\n@Directive({\r\n standalone: true,\r\n selector: 'form[formGroup],form[ngForm]'\r\n})\r\nexport class ScrollToInvalidControlDirective implements OnInit, OnDestroy {\r\n\r\n private destroy$ = new Subject<void>();\r\n\r\n constructor(\r\n @Self() private form: ControlContainer,\r\n private elementRef: ElementRef<HTMLFormElement>) { }\r\n\r\n ngOnInit(): void {\r\n fromEvent(this.elementRef.nativeElement, 'submit')\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(_ => {\r\n if (this.form.invalid) {\r\n this.scrollToInvalidControl();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n private scrollToInvalidControl() {\r\n const firstInvalidControl: HTMLElement =\r\n this.elementRef.nativeElement.querySelector(NG_INVALID_CLASS);\r\n\r\n if (firstInvalidControl) {\r\n firstInvalidControl.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center' // vertical alignment\r\n });\r\n }\r\n }\r\n}\r\n","import { EventManager } from '@angular/platform-browser';\r\n\r\n/**\r\n * abstract class EventManagerPlugin will be exposed in the public api\r\n * https://github.com/angular/angular/pull/49969\r\n *\r\n * Until then creating it from reference\r\n * https://github.com/angular/angular/blob/main/packages/platform-browser/src/dom/events/event_manager.ts#L93\r\n *\r\n * How to create custom event modifiers\r\n * https://github.com/Tinkoff/ng-event-plugins,\r\n * https://github.com/angular/angular/blob/main/packages/platform-browser/src/dom/events/key_events.ts\r\n * https://netbasal.com/lifting-the-veil-insights-into-angulars-eventmanagerplugin-ed9d14cbb31a\r\n */\r\nexport abstract class EventManagerPlugin {\r\n\r\n // Using non-null assertion because it's set by EventManager's constructor\r\n manager!: EventManager;\r\n\r\n /** Should return `true` for every event name that should be supported by this plugin */\r\n abstract supports(eventName: string): boolean;\r\n\r\n /**\r\n * Registers a handler for a specific element and event.\r\n *\r\n * @param element The HTML element to receive event notifications.\r\n * @param eventName The name of the event to listen for.\r\n * @param handler A function to call when the notification occurs. Receives the\r\n * event object as an argument.\r\n * @returns A callback function that can be used to remove the handler.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/ban-types\r\n abstract addEventListener(element: HTMLElement, eventName: string, handler: Function): Function;\r\n}\r\n\r\n/**\r\n * Entry event plugin base class\r\n */\r\nexport abstract class EntryEventManagerPlugin extends EventManagerPlugin {\r\n abstract modifier: string;\r\n\r\n /** return `true` for every event name that has specified modifier */\r\n supports(eventName: string): boolean {\r\n return eventName.includes(this.modifier);\r\n }\r\n\r\n /** unwrap params e.g. (click.debounce.500) => ['debounce', 500] */\r\n unwrapParams(eventName: string): string[] {\r\n return eventName\r\n .substring(eventName.indexOf(this.modifier))\r\n .split('.')\r\n .filter(x => !!x);\r\n }\r\n\r\n /** get event name e.g. (click.debounce.500) => click */\r\n unwrapEventName(eventName: string): string {\r\n return eventName.substring(0, eventName.indexOf(this.modifier));\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/ban-types */\r\nimport { Injectable } from '@angular/core';\r\nimport { EntryEventManagerPlugin } from './abstract.plugin';\r\nimport { debounce } from 'lodash-es';\r\n\r\n/**\r\n * Provides event plugin for debouncing events.\r\n *\r\n * How to use:\r\n * <button (click.debounce)=\"doSomething($event)\">\r\n * <input (keyup.debounce.500)=\"doSomething($event)\">\r\n */\r\n@Injectable()\r\nexport class DebounceEventPlugin extends EntryEventManagerPlugin {\r\n\r\n modifier = '.debounce';\r\n\r\n addEventListener(element: HTMLElement, eventName: string, originalHandler: Function): Function {\r\n // e.g. (click.debounce.500)\r\n const [_modifier, milliseconds = 500, option = 'leading'] = this.unwrapParams(eventName);\r\n\r\n // run original handler inside ngZone in which the event occurred\r\n const innerHandler = (event: any) => this.manager.getZone().runGuarded(() => originalHandler(event));\r\n\r\n // create debounced handler\r\n const debouncedHandler = debounce(innerHandler, milliseconds,\r\n { leading: option === 'leading', trailing: option === 'trailing' });\r\n\r\n // register event with debounced handler\r\n return this.manager.addEventListener(element, this.unwrapEventName(eventName), debouncedHandler);\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/ban-types */\r\nimport { Injectable } from '@angular/core';\r\nimport { EntryEventManagerPlugin } from './abstract.plugin';\r\nimport { throttle } from 'lodash-es';\r\n\r\n/**\r\n * Provides event plugin for throttling events.\r\n *\r\n * How to use:\r\n * <button (click.throttle)=\"doSomething($event)\">\r\n * <input (keyup.throttle.500)=\"doSomething($event)\">\r\n */\r\n@Injectable()\r\nexport class ThrottleEventPlugin extends EntryEventManagerPlugin {\r\n\r\n modifier = '.throttle';\r\n\r\n addEventListener(element: HTMLElement, eventName: string, originalHandler: Function): Function {\r\n // e.g. (keyup.throttle.500)\r\n const [_modifier, milliseconds = 500] = this.unwrapParams(eventName);\r\n\r\n // run original handler inside ngZone in which the event occurred\r\n const innerHandler = (event: any) => this.manager.getZone().runGuarded(() => originalHandler(event));\r\n\r\n // create throttled handler\r\n const throttledHandler = throttle(innerHandler, milliseconds);\r\n\r\n // register event with throttled handler\r\n return this.manager.addEventListener(element, this.unwrapEventName(eventName), throttledHandler);\r\n }\r\n}\r\n","import { ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport { CommonModule } from '@angular/common';\r\n\r\n/** Directives */\r\n\r\nimport { AutoDisableButtonDirective } from './directives/auto-disable-button.directive';\r\nimport { ScrollToInvalidControlDirective } from './directives/scroll-to-invalid-control.directive';\r\n\r\nconst DIRECTIVES = [\r\n AutoDisableButtonDirective,\r\n ScrollToInvalidControlDirective,\r\n];\r\n\r\n/** Event plugins */\n\nimport { DebounceEventPlugin } from './event-plugins/debounce.plugin';\nimport { ThrottleEventPlugin } from './event-plugins/throttle.plugin';\nimport { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';\n\nconst EVENT_PLUGINS = [\n DebounceEventPlugin,\n ThrottleEventPlugin\n];\n\nexport const NG_EVENT_PLUGINS: Provider[] = EVENT_PLUGINS.map(useClass => ({\n provide: EVENT_MANAGER_PLUGINS,\n multi: true,\n useClass\n}));\n\n\n@NgModule({\r\n declarations: [\r\n ],\r\n imports: [\r\n CommonModule,\r\n DIRECTIVES\r\n ],\r\n exports: [\r\n DIRECTIVES\r\n ]\r\n})\r\nexport class EntryCommonModule {\r\n static forRoot(): ModuleWithProviders<EntryCommonModule> {\n return {\n ngModule: EntryCommonModule,\n providers: NG_EVENT_PLUGINS\n };\n }\n}\r\n","import { InjectionToken, Provider } from '@angular/core';\r\n\r\nexport function createInjectionToken<T>(defaultValue: T): InjectionToken<T> {\r\n return new InjectionToken<T>(defaultValue.constructor.name,\r\n {\r\n providedIn: 'root',\r\n factory: () => defaultValue\r\n }\r\n );\r\n}\r\n\r\nexport function provideConfig<T>(token: InjectionToken<T>, factory: () => T): Provider {\r\n return {\r\n provide: token,\r\n useFactory: factory\r\n };\r\n}\r\n","import { Injectable, LOCALE_ID, inject } from '@angular/core';\nimport {\n HttpRequest,\n HttpHandler,\n HttpEvent,\n HttpInterceptor\n} from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n/**\n * Sets the Accept-Language HTTP request header using the value from LOCALE_ID.\n */\n@Injectable()\nexport class AcceptLanguageInterceptor implements HttpInterceptor {\n private localeId = inject(LOCALE_ID);\n\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\n const newRequest = request.clone({\n headers: request.headers.set('Accept-Language', this.localeId)\n });\n return next.handle(newRequest);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;AAAO,MAAM,cAAc,GAAG,WAAW,CAAC;AACnC,MAAM,gBAAgB,GAAG,aAAa;;ACK7C;;;;;;;;;AASG;MAMU,0BAA0B,CAAA;AAKrC,IAAA,WAAA,CAAoB,UAAyC,EAAA;AAAzC,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAA+B;AAHrD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;AAChC,QAAA,IAAoB,CAAA,oBAAA,GAAG,IAAI,CAAC;KAE8B;AAElE,IAAA,IACI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,oBAAoB,CAAC;KAClC;IACD,IAAI,mBAAmB,CAAC,KAAkB,EAAA;QACxC,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KAC/D;IAED,QAAQ,GAAA;AACN,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAC7C,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC;QAC9D,MAAM,IAAI,GAAoB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAErD,IAAI,YAAY,IAAI,IAAI,EAAE;;AAExB,YAAA,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC;AACtB,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBAC/B,SAAS,CAAC,CAAC,IAAG;AACb,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;AAChC,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAC/C,iBAAA;AACH,aAAC,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;;AAEL,YAAA,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;AACvB,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/B,iBAAA,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAClE,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;AAEO,IAAA,aAAa,CAAC,iBAAyB,EAAA;AAC7C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AAE7C,QAAA,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;QAEvB,KAAK,CAAC,iBAAiB,CAAC;AACrB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAC/B,SAAS,CAAC,MAAM,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;KAC7C;;wHAlDU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4GAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4CAAA,EAAA,MAAA,EAAA,EAAA,mBAAA,EAAA,CAAA,oBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;4FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;;AAEhB,oBAAA,QAAQ,EAAE,4CAA4C;iBACvD,CAAA;iGASK,mBAAmB,EAAA,CAAA;sBADtB,KAAK;uBAAC,oBAAoB,CAAA;;;ACtB7B;;;AAGG;MAKU,+BAA+B,CAAA;IAI1C,WACkB,CAAA,IAAsB,EAC9B,UAAuC,EAAA;AAD/B,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAkB;AAC9B,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAA6B;AAJzC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;KAIe;IAEtD,QAAQ,GAAA;QACN,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,QAAQ,CAAC;AAC/C,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC9B,SAAS,CAAC,CAAC,IAAG;AACb,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACrB,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC/B,aAAA;AACH,SAAC,CAAC,CAAC;KACN;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KAC1B;IAEO,sBAAsB,GAAA;AAC5B,QAAA,MAAM,mBAAmB,GACvB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;AAEhE,QAAA,IAAI,mBAAmB,EAAE;YACvB,mBAAmB,CAAC,cAAc,CAAC;AACjC,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,KAAK,EAAE,QAAQ;AAChB,aAAA,CAAC,CAAC;AACJ,SAAA;KACF;;6HAjCU,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;iHAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;4FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAJ3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,8BAA8B;iBACzC,CAAA;;;8BAMI,IAAI;;;;ACjBT;;;;;;;;;;;AAWG;MACmB,kBAAkB,CAAA;AAmBvC,CAAA;AAED;;AAEG;AACG,MAAgB,uBAAwB,SAAQ,kBAAkB,CAAA;;AAItE,IAAA,QAAQ,CAAC,SAAiB,EAAA;QACxB,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC1C;;AAGD,IAAA,YAAY,CAAC,SAAiB,EAAA;AAC5B,QAAA,OAAO,SAAS;aACb,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC3C,KAAK,CAAC,GAAG,CAAC;aACV,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KACrB;;AAGD,IAAA,eAAe,CAAC,SAAiB,EAAA;AAC/B,QAAA,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;KACjE;AACF;;AC1DD;AAKA;;;;;;AAMG;AAEG,MAAO,mBAAoB,SAAQ,uBAAuB,CAAA;AADhE,IAAA,WAAA,GAAA;;AAGE,QAAA,IAAQ,CAAA,QAAA,GAAG,WAAW,CAAC;KAgBxB;AAdC,IAAA,gBAAgB,CAAC,OAAoB,EAAE,SAAiB,EAAE,eAAyB,EAAA;;AAEjF,QAAA,MAAM,CAAC,SAAS,EAAE,YAAY,GAAG,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;;QAGzF,MAAM,YAAY,GAAG,CAAC,KAAU,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;;QAGrG,MAAM,gBAAgB,GAAG,QAAQ,CAAC,YAAY,EAAE,YAAY,EAC1D,EAAE,OAAO,EAAE,MAAM,KAAK,SAAS,EAAE,QAAQ,EAAE,MAAM,KAAK,UAAU,EAAE,CAAC,CAAC;;AAGtE,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC,CAAC;KAClG;;iHAjBU,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;qHAAnB,mBAAmB,EAAA,CAAA,CAAA;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;ACZX;AAKA;;;;;;AAMG;AAEG,MAAO,mBAAoB,SAAQ,uBAAuB,CAAA;AADhE,IAAA,WAAA,GAAA;;AAGE,QAAA,IAAQ,CAAA,QAAA,GAAG,WAAW,CAAC;KAexB;AAbC,IAAA,gBAAgB,CAAC,OAAoB,EAAE,SAAiB,EAAE,eAAyB,EAAA;;AAEjF,QAAA,MAAM,CAAC,SAAS,EAAE,YAAY,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;;QAGrE,MAAM,YAAY,GAAG,CAAC,KAAU,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;;QAGrG,MAAM,gBAAgB,GAAG,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;;AAG9D,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC,CAAC;KAClG;;iHAhBU,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;qHAAnB,mBAAmB,EAAA,CAAA,CAAA;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;ACJX,MAAM,UAAU,GAAG;IACjB,0BAA0B;IAC1B,+BAA+B;CAChC,CAAC;AAQF,MAAM,aAAa,GAAG;IACpB,mBAAmB;IACnB,mBAAmB;CACpB,CAAC;AAEK,MAAM,gBAAgB,GAAe,aAAa,CAAC,GAAG,CAAC,QAAQ,KAAK;AACzE,IAAA,OAAO,EAAE,qBAAqB;AAC9B,IAAA,KAAK,EAAE,IAAI;IACX,QAAQ;AACT,CAAA,CAAC,EAAE;MAcS,iBAAiB,CAAA;AAC5B,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,iBAAiB;AAC3B,YAAA,SAAS,EAAE,gBAAgB;SAC5B,CAAC;KACH;;+GANU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAjB,iBAAiB,EAAA,OAAA,EAAA,CAP1B,YAAY,EA1Bd,0BAA0B;AAC1B,QAAA,+BAA+B,aAD/B,0BAA0B;QAC1B,+BAA+B,CAAA,EAAA,CAAA,CAAA;AAgCpB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAP1B,YAAY,CAAA,EAAA,CAAA,CAAA;4FAOH,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAX7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EACb;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,UAAU;AACX,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,UAAU;AACX,qBAAA;iBACF,CAAA;;;ACvCK,SAAU,oBAAoB,CAAI,YAAe,EAAA;IACrD,OAAO,IAAI,cAAc,CAAI,YAAY,CAAC,WAAW,CAAC,IAAI,EACxD;AACE,QAAA,UAAU,EAAE,MAAM;AAClB,QAAA,OAAO,EAAE,MAAM,YAAY;AAC5B,KAAA,CACF,CAAC;AACJ,CAAC;AAEe,SAAA,aAAa,CAAI,KAAwB,EAAE,OAAgB,EAAA;IACzE,OAAO;AACL,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,UAAU,EAAE,OAAO;KACpB,CAAC;AACJ;;ACPA;;AAEG;MAEU,yBAAyB,CAAA;AADtC,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;KAQtC;IANC,SAAS,CAAC,OAA6B,EAAE,IAAiB,EAAA;AACxD,QAAA,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC;AAC/B,YAAA,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,QAAQ,CAAC;AAC/D,SAAA,CAAC,CAAC;AACH,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;KAChC;;uHARU,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2HAAzB,yBAAyB,EAAA,CAAA,CAAA;4FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,UAAU;;;ACZX;;AAEG;;;;"}
1
+ {"version":3,"file":"enigmatry-entry-components-common.mjs","sources":["../../../../libs/entry-components/common/constants.ts","../../../../libs/entry-components/common/directives/auto-disable-button.directive.ts","../../../../libs/entry-components/common/directives/scroll-to-invalid-control.directive.ts","../../../../libs/entry-components/common/event-plugins/abstract.plugin.ts","../../../../libs/entry-components/common/event-plugins/debounce.plugin.ts","../../../../libs/entry-components/common/event-plugins/throttle.plugin.ts","../../../../libs/entry-components/common/common.module.ts","../../../../libs/entry-components/common/utils/provide-config.ts","../../../../libs/entry-components/common/interceptors/accept-language.interceptor.ts","../../../../libs/entry-components/common/date-time/entry-date-time.ts","../../../../libs/entry-components/common/date-time/entry-date-time-adapter.ts","../../../../libs/entry-components/common/enigmatry-entry-components-common.ts"],"sourcesContent":["export const NG_VALID_CLASS = '.ng-valid';\r\nexport const NG_INVALID_CLASS = '.ng-invalid';\r\n","import { Directive, ElementRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject, fromEvent, timer } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { NG_VALID_CLASS } from '../constants';\nimport { NumberInput, coerceNumberProperty } from '@angular/cdk/coercion';\n\n/**\n * Auto disable button after click or submit with entry-auto-disable directive.\n * Directive is applied to 'button[entry-auto-disable]:not([disabled])'\n * Default auto disable interval is 2000ms (2sec)\n *\n * Usage\n * <button mat-button entry-submit-button entry-auto-disable type=\"submit\">Submit</button>\n * or with auto disabled interval in milliseconds\n * <button mat-button entry-submit-button entry-auto-disable=\"5000\" type=\"submit\">Submit</button>\n */\n@Directive({\n standalone: true,\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'button[entry-auto-disable]:not([disabled])'\n})\nexport class AutoDisableButtonDirective implements OnInit, OnDestroy {\n\n private _destroy$ = new Subject<void>();\n private _disableIntervalInMs = 2000;\n\n constructor(private elementRef: ElementRef<HTMLButtonElement>) { }\n\n @Input('entry-auto-disable')\n get disableIntervalInMs() {\n return this._disableIntervalInMs;\n }\n set disableIntervalInMs(value: NumberInput) {\n this._disableIntervalInMs = coerceNumberProperty(value, 2000);\n }\n\n ngOnInit(): void {\n const button = this.elementRef.nativeElement;\n const isTypeSubmit = button.getAttribute('type') === 'submit';\n const form: HTMLFormElement = button.closest('form');\n\n if (isTypeSubmit && form) {\n // listen to form submit event\n fromEvent(form, 'submit')\n .pipe(takeUntil(this._destroy$))\n .subscribe(_ => {\n if (form.matches(NG_VALID_CLASS)) {\n this.disableButton(this._disableIntervalInMs);\n }\n });\n } else {\n // otherwise listen to click event\n fromEvent(button, 'click')\n .pipe(takeUntil(this._destroy$))\n .subscribe(_ => this.disableButton(this._disableIntervalInMs));\n }\n }\n\n ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n private disableButton(disablePeriodInMs: number): void {\n const button = this.elementRef.nativeElement;\n\n button.disabled = true;\n\n timer(disablePeriodInMs)\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => button.disabled = false);\n }\n}\n","import { Directive, ElementRef, OnDestroy, OnInit, Self } from '@angular/core';\r\nimport { ControlContainer } from '@angular/forms';\r\nimport { Subject, fromEvent } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { NG_INVALID_CLASS } from '../constants';\r\n\r\n/**\r\n * Scroll to first invalid control when form is submitted.\r\n * Directive is applied to 'form[formGroup],form[ngForm]' (reactive or template driven forms)\r\n */\r\n@Directive({\r\n standalone: true,\r\n selector: 'form[formGroup],form[ngForm]'\r\n})\r\nexport class ScrollToInvalidControlDirective implements OnInit, OnDestroy {\r\n\r\n private destroy$ = new Subject<void>();\r\n\r\n constructor(\r\n @Self() private form: ControlContainer,\r\n private elementRef: ElementRef<HTMLFormElement>) { }\r\n\r\n ngOnInit(): void {\r\n fromEvent(this.elementRef.nativeElement, 'submit')\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(_ => {\r\n if (this.form.invalid) {\r\n this.scrollToInvalidControl();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n private scrollToInvalidControl() {\r\n const firstInvalidControl: HTMLElement =\r\n this.elementRef.nativeElement.querySelector(NG_INVALID_CLASS);\r\n\r\n if (firstInvalidControl) {\r\n firstInvalidControl.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center' // vertical alignment\r\n });\r\n }\r\n }\r\n}\r\n","import { EventManager } from '@angular/platform-browser';\r\n\r\n/**\r\n * abstract class EventManagerPlugin will be exposed in the public api\r\n * https://github.com/angular/angular/pull/49969\r\n *\r\n * Until then creating it from reference\r\n * https://github.com/angular/angular/blob/main/packages/platform-browser/src/dom/events/event_manager.ts#L93\r\n *\r\n * How to create custom event modifiers\r\n * https://github.com/Tinkoff/ng-event-plugins,\r\n * https://github.com/angular/angular/blob/main/packages/platform-browser/src/dom/events/key_events.ts\r\n * https://netbasal.com/lifting-the-veil-insights-into-angulars-eventmanagerplugin-ed9d14cbb31a\r\n */\r\nexport abstract class EventManagerPlugin {\r\n\r\n // Using non-null assertion because it's set by EventManager's constructor\r\n manager!: EventManager;\r\n\r\n /** Should return `true` for every event name that should be supported by this plugin */\r\n abstract supports(eventName: string): boolean;\r\n\r\n /**\r\n * Registers a handler for a specific element and event.\r\n *\r\n * @param element The HTML element to receive event notifications.\r\n * @param eventName The name of the event to listen for.\r\n * @param handler A function to call when the notification occurs. Receives the\r\n * event object as an argument.\r\n * @returns A callback function that can be used to remove the handler.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/ban-types\r\n abstract addEventListener(element: HTMLElement, eventName: string, handler: Function): Function;\r\n}\r\n\r\n/**\r\n * Entry event plugin base class\r\n */\r\nexport abstract class EntryEventManagerPlugin extends EventManagerPlugin {\r\n abstract modifier: string;\r\n\r\n /** return `true` for every event name that has specified modifier */\r\n supports(eventName: string): boolean {\r\n return eventName.includes(this.modifier);\r\n }\r\n\r\n /** unwrap params e.g. (click.debounce.500) => ['debounce', 500] */\r\n unwrapParams(eventName: string): string[] {\r\n return eventName\r\n .substring(eventName.indexOf(this.modifier))\r\n .split('.')\r\n .filter(x => !!x);\r\n }\r\n\r\n /** get event name e.g. (click.debounce.500) => click */\r\n unwrapEventName(eventName: string): string {\r\n return eventName.substring(0, eventName.indexOf(this.modifier));\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/ban-types */\r\nimport { Injectable } from '@angular/core';\r\nimport { EntryEventManagerPlugin } from './abstract.plugin';\r\nimport { debounce } from 'lodash-es';\r\n\r\n/**\r\n * Provides event plugin for debouncing events.\r\n *\r\n * How to use:\r\n * <button (click.debounce)=\"doSomething($event)\">\r\n * <input (keyup.debounce.500)=\"doSomething($event)\">\r\n */\r\n@Injectable()\r\nexport class DebounceEventPlugin extends EntryEventManagerPlugin {\r\n\r\n modifier = '.debounce';\r\n\r\n addEventListener(element: HTMLElement, eventName: string, originalHandler: Function): Function {\r\n // e.g. (click.debounce.500)\r\n const [_modifier, milliseconds = 500, option = 'leading'] = this.unwrapParams(eventName);\r\n\r\n // run original handler inside ngZone in which the event occurred\r\n const innerHandler = (event: any) => this.manager.getZone().runGuarded(() => originalHandler(event));\r\n\r\n // create debounced handler\r\n const debouncedHandler = debounce(innerHandler, milliseconds,\r\n { leading: option === 'leading', trailing: option === 'trailing' });\r\n\r\n // register event with debounced handler\r\n return this.manager.addEventListener(element, this.unwrapEventName(eventName), debouncedHandler);\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/ban-types */\r\nimport { Injectable } from '@angular/core';\r\nimport { EntryEventManagerPlugin } from './abstract.plugin';\r\nimport { throttle } from 'lodash-es';\r\n\r\n/**\r\n * Provides event plugin for throttling events.\r\n *\r\n * How to use:\r\n * <button (click.throttle)=\"doSomething($event)\">\r\n * <input (keyup.throttle.500)=\"doSomething($event)\">\r\n */\r\n@Injectable()\r\nexport class ThrottleEventPlugin extends EntryEventManagerPlugin {\r\n\r\n modifier = '.throttle';\r\n\r\n addEventListener(element: HTMLElement, eventName: string, originalHandler: Function): Function {\r\n // e.g. (keyup.throttle.500)\r\n const [_modifier, milliseconds = 500] = this.unwrapParams(eventName);\r\n\r\n // run original handler inside ngZone in which the event occurred\r\n const innerHandler = (event: any) => this.manager.getZone().runGuarded(() => originalHandler(event));\r\n\r\n // create throttled handler\r\n const throttledHandler = throttle(innerHandler, milliseconds);\r\n\r\n // register event with throttled handler\r\n return this.manager.addEventListener(element, this.unwrapEventName(eventName), throttledHandler);\r\n }\r\n}\r\n","import { ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport { CommonModule } from '@angular/common';\r\n\r\n/** Directives */\r\n\r\nimport { AutoDisableButtonDirective } from './directives/auto-disable-button.directive';\r\nimport { ScrollToInvalidControlDirective } from './directives/scroll-to-invalid-control.directive';\r\n\r\nconst DIRECTIVES = [\r\n AutoDisableButtonDirective,\r\n ScrollToInvalidControlDirective,\r\n];\r\n\r\n/** Event plugins */\n\nimport { DebounceEventPlugin } from './event-plugins/debounce.plugin';\nimport { ThrottleEventPlugin } from './event-plugins/throttle.plugin';\nimport { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';\n\nconst EVENT_PLUGINS = [\n DebounceEventPlugin,\n ThrottleEventPlugin\n];\n\nexport const NG_EVENT_PLUGINS: Provider[] = EVENT_PLUGINS.map(useClass => ({\n provide: EVENT_MANAGER_PLUGINS,\n multi: true,\n useClass\n}));\n\n\n@NgModule({\r\n declarations: [\r\n ],\r\n imports: [\r\n CommonModule,\r\n DIRECTIVES\r\n ],\r\n exports: [\r\n DIRECTIVES\r\n ]\r\n})\r\nexport class EntryCommonModule {\r\n static forRoot(): ModuleWithProviders<EntryCommonModule> {\n return {\n ngModule: EntryCommonModule,\n providers: NG_EVENT_PLUGINS\n };\n }\n}\r\n","import { InjectionToken, Provider } from '@angular/core';\r\n\r\nexport function createInjectionToken<T>(defaultValue: T): InjectionToken<T> {\r\n return new InjectionToken<T>(defaultValue.constructor.name,\r\n {\r\n providedIn: 'root',\r\n factory: () => defaultValue\r\n }\r\n );\r\n}\r\n\r\nexport function provideConfig<T>(token: InjectionToken<T>, factory: () => T): Provider {\r\n return {\r\n provide: token,\r\n useFactory: factory\r\n };\r\n}\r\n","import { Injectable, LOCALE_ID, inject } from '@angular/core';\nimport {\n HttpRequest,\n HttpHandler,\n HttpEvent,\n HttpInterceptor\n} from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n/**\n * Sets the Accept-Language HTTP request header using the value from LOCALE_ID.\n */\n@Injectable()\nexport class AcceptLanguageInterceptor implements HttpInterceptor {\n private localeId = inject(LOCALE_ID);\n\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\n const newRequest = request.clone({\n headers: request.headers.set('Accept-Language', this.localeId)\n });\n return next.handle(newRequest);\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { MatDateFormats } from '@angular/material/core';\n\nexport declare type EntryMatDateTime<D> = {\n matDateFormats: MatDateFormats;\n compareDate(first: D, second: D): number;\n};\n\nexport const ENTRY_MAT_DATE_TIME = new InjectionToken<EntryMatDateTime<any>>('');\n","import { Inject, Injectable, Optional, SkipSelf, inject } from '@angular/core';\nimport { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';\nimport { ENTRY_MAT_DATE_TIME, EntryMatDateTime } from './entry-date-time';\n\n/**\n * Extends provided DateAdapter with date time support\n */\n@Injectable()\nexport class EntryDateTimeAdapter<D, L> extends DateAdapter<D, L> {\n private compareFunction: (first: D, second: D) => number;\n\n constructor(@Optional() @Inject(MAT_DATE_LOCALE) matDateLocale: L,\n @Inject(ENTRY_MAT_DATE_TIME) entryMatDateTime: EntryMatDateTime<D>,\n @SkipSelf() private dateAdapter: DateAdapter<D, L>) {\n super();\n this.compareFunction = entryMatDateTime.compareDate;\n this.dateAdapter.setLocale(matDateLocale);\n }\n\n getYear(date: D): number {\n return this.dateAdapter.getYear(date);\n }\n\n getMonth(date: D): number {\n return this.dateAdapter.getMonth(date);\n }\n\n getDate(date: D): number {\n return this.dateAdapter.getDate(date);\n }\n\n getDayOfWeek(date: D): number {\n return this.dateAdapter.getDayOfWeek(date);\n }\n\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n return this.dateAdapter.getMonthNames(style);\n }\n\n getDateNames(): string[] {\n return this.dateAdapter.getDateNames();\n }\n\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n return this.dateAdapter.getDayOfWeekNames(style);\n }\n\n getYearName(date: D): string {\n return this.dateAdapter.getYearName(date);\n }\n\n getFirstDayOfWeek(): number {\n return this.dateAdapter.getFirstDayOfWeek();\n }\n\n getNumDaysInMonth(date: D): number {\n return this.dateAdapter.getNumDaysInMonth(date);\n }\n\n clone(date: D): D {\n return this.dateAdapter.clone(date);\n }\n\n createDate(year: number, month: number, date: number): D {\n return this.dateAdapter.createDate(year, month, date);\n }\n\n today(): D {\n return this.dateAdapter.today();\n }\n\n parse(value: any, parseFormat: any): D {\n return this.dateAdapter.parse(value, parseFormat);\n }\n\n format(date: D, displayFormat: any): string {\n return this.dateAdapter.format(date, displayFormat);\n }\n\n addCalendarYears(date: D, years: number): D {\n return this.dateAdapter.addCalendarYears(date, years);\n }\n\n addCalendarMonths(date: D, months: number): D {\n return this.dateAdapter.addCalendarMonths(date, months);\n }\n\n addCalendarDays(date: D, days: number): D {\n return this.dateAdapter.addCalendarDays(date, days);\n }\n\n toIso8601(date: D): string {\n return this.dateAdapter.toIso8601(date);\n }\n\n isDateInstance(obj: any): boolean {\n return this.dateAdapter.isDateInstance(obj);\n }\n\n isValid(date: D): boolean {\n return this.dateAdapter.isValid(date);\n }\n\n invalid(): D {\n return this.dateAdapter.invalid();\n }\n\n override compareDate(first: D, second: D): number {\n return this.compareFunction(first, second);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
@@ -1,24 +1,28 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, ChangeDetectionStrategy, Input, Inject, ViewChild, EventEmitter, Output, NgModule } from '@angular/core';
3
- import * as i2 from '@angular/forms';
2
+ import { Component, ChangeDetectionStrategy, Input, Inject, ViewChild, inject, EventEmitter, Output, NgModule } from '@angular/core';
3
+ import * as i1 from '@angular/forms';
4
4
  import { FormControlName, UntypedFormGroup, FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
5
- import { createInjectionToken, provideConfig } from '@enigmatry/entry-components/common';
6
- import * as i1 from '@angular/common';
5
+ import { createInjectionToken, provideConfig, ENTRY_MAT_DATE_TIME, EntryDateTimeAdapter } from '@enigmatry/entry-components/common';
6
+ import * as i1$1 from '@angular/common';
7
7
  import { CommonModule } from '@angular/common';
8
8
  import * as i3$1 from '@angular/material/button';
9
9
  import { MatButtonModule } from '@angular/material/button';
10
- import * as i4$1 from '@enigmatry/entry-components/button';
10
+ import * as i4$2 from '@enigmatry/entry-components/button';
11
11
  import { EntryButtonModule } from '@enigmatry/entry-components/button';
12
- import * as i2$1 from '@angular/material/input';
12
+ import * as i2 from '@angular/material/input';
13
13
  import { MatInputModule } from '@angular/material/input';
14
14
  import * as i3 from '@angular/material/form-field';
15
+ import { MatFormFieldModule } from '@angular/material/form-field';
15
16
  import * as i4 from '@angular/material/select';
16
17
  import { MatSelectModule } from '@angular/material/select';
17
18
  import * as i5 from '@angular/material/core';
19
+ import { MAT_DATE_FORMATS, DateAdapter } from '@angular/material/core';
18
20
  import { of, Subject } from 'rxjs';
19
21
  import { takeUntil, filter, debounceTime, tap } from 'rxjs/operators';
20
22
  import * as i6 from '@angular/material/autocomplete';
21
23
  import { MatAutocompleteModule } from '@angular/material/autocomplete';
24
+ import * as i4$1 from '@angular/material/datepicker';
25
+ import { MatDatepickerModule } from '@angular/material/datepicker';
22
26
 
23
27
  /**
24
28
  * Used to provide entry search filter configuration on module level.
@@ -43,12 +47,14 @@ var ControlType;
43
47
  ControlType["text"] = "text-input";
44
48
  ControlType["select"] = "select-input";
45
49
  ControlType["autocomplete"] = "autocomplete-input";
50
+ ControlType["date"] = "date-input";
51
+ ControlType["dateTime"] = "date-time-input";
46
52
  })(ControlType || (ControlType = {}));
47
53
 
48
54
  class TextSearchFilterComponent {
49
55
  }
50
56
  TextSearchFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TextSearchFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
51
- TextSearchFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TextSearchFilterComponent, selector: "entry-text-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 <input [formControlName]=\"searchFilter.key\" [id]=\"searchFilter.key\" [type]=\"searchFilter.type\" matInput\n [placeholder]=\"searchFilter.placeholder\" [maxlength]=\"searchFilter.maxLength\">\n</mat-form-field>", dependencies: [{ kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
57
+ TextSearchFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TextSearchFilterComponent, selector: "entry-text-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 <input [formControlName]=\"searchFilter.key\" [id]=\"searchFilter.key\" [type]=\"searchFilter.type\" matInput\n [placeholder]=\"searchFilter.placeholder\" [maxlength]=\"searchFilter.maxLength\">\n</mat-form-field>", dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
52
58
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TextSearchFilterComponent, decorators: [{
53
59
  type: Component,
54
60
  args: [{ selector: 'entry-text-search-filter', changeDetection: ChangeDetectionStrategy.OnPush, template: "<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-form-field>" }]
@@ -64,7 +70,7 @@ class SelectSearchFilterComponent {
64
70
  }
65
71
  }
66
72
  SelectSearchFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SelectSearchFilterComponent, deps: [{ token: ENTRY_SEARCH_FILTER_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
67
- SelectSearchFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SelectSearchFilterComponent, 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-form-field>", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.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: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
73
+ SelectSearchFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SelectSearchFilterComponent, 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-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: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
68
74
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SelectSearchFilterComponent, decorators: [{
69
75
  type: Component,
70
76
  args: [{ selector: 'entry-select-search-filter', changeDetection: ChangeDetectionStrategy.OnPush, 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-form-field>" }]
@@ -105,7 +111,7 @@ class AutocompleteSearchFilterComponent {
105
111
  }
106
112
  }
107
113
  AutocompleteSearchFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AutocompleteSearchFilterComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
108
- AutocompleteSearchFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AutocompleteSearchFilterComponent, selector: "entry-autocomplete-search-filter", inputs: { searchFilter: "searchFilter", form: "form" }, viewQueries: [{ propertyName: "searchField", first: true, predicate: FormControlName, descendants: true }], ngImport: i0, template: "<mat-form-field [formGroup]=\"form\" subscriptSizing=\"dynamic\">\n <mat-label>{{searchFilter.label}}</mat-label>\n <input type=\"text\" matInput [placeholder]=\"searchFilter.placeholder\"\n [formControlName]=\"searchFilter.key\" [id]=\"searchFilter.key\" [matAutocomplete]=\"auto\">\n <mat-autocomplete [displayWith]=\"displayFn\" #auto=\"matAutocomplete\">\n <mat-option *ngFor=\"let option of options$ | async\" [value]=\"option.key\">\n {{option.label}}\n </mat-option>\n </mat-autocomplete>\n</mat-form-field>", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
114
+ AutocompleteSearchFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AutocompleteSearchFilterComponent, selector: "entry-autocomplete-search-filter", inputs: { searchFilter: "searchFilter", form: "form" }, viewQueries: [{ propertyName: "searchField", first: true, predicate: FormControlName, descendants: true }], ngImport: i0, template: "<mat-form-field [formGroup]=\"form\" subscriptSizing=\"dynamic\">\n <mat-label>{{searchFilter.label}}</mat-label>\n <input type=\"text\" matInput [placeholder]=\"searchFilter.placeholder\"\n [formControlName]=\"searchFilter.key\" [id]=\"searchFilter.key\" [matAutocomplete]=\"auto\">\n <mat-autocomplete [displayWith]=\"displayFn\" #auto=\"matAutocomplete\">\n <mat-option *ngFor=\"let option of options$ | async\" [value]=\"option.key\">\n {{option.label}}\n </mat-option>\n </mat-autocomplete>\n</mat-form-field>", dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
109
115
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AutocompleteSearchFilterComponent, decorators: [{
110
116
  type: Component,
111
117
  args: [{ selector: 'entry-autocomplete-search-filter', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-form-field [formGroup]=\"form\" subscriptSizing=\"dynamic\">\n <mat-label>{{searchFilter.label}}</mat-label>\n <input type=\"text\" matInput [placeholder]=\"searchFilter.placeholder\"\n [formControlName]=\"searchFilter.key\" [id]=\"searchFilter.key\" [matAutocomplete]=\"auto\">\n <mat-autocomplete [displayWith]=\"displayFn\" #auto=\"matAutocomplete\">\n <mat-option *ngFor=\"let option of options$ | async\" [value]=\"option.key\">\n {{option.label}}\n </mat-option>\n </mat-autocomplete>\n</mat-form-field>" }]
@@ -118,6 +124,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
118
124
  args: [FormControlName]
119
125
  }] } });
120
126
 
127
+ class DateTimeSearchFilterComponent {
128
+ }
129
+ DateTimeSearchFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DateTimeSearchFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
130
+ DateTimeSearchFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DateTimeSearchFilterComponent, selector: "entry-date-time-search-filter", inputs: { searchFilter: "searchFilter", form: "form" }, providers: [
131
+ { provide: MAT_DATE_FORMATS, useFactory: () => inject(ENTRY_MAT_DATE_TIME).matDateFormats },
132
+ { provide: DateAdapter, useClass: EntryDateTimeAdapter }
133
+ ], ngImport: i0, template: "<mat-form-field [formGroup]=\"form\" subscriptSizing=\"dynamic\">\n <mat-label [attr.for]=\"searchFilter.key\">{{searchFilter.label}}</mat-label>\n <input matInput [formControlName]=\"searchFilter.key\" [matDatepicker]=\"picker\" [id]=\"searchFilter.key\">\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n</mat-form-field>", dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i4$1.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i4$1.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i4$1.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }] });
134
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DateTimeSearchFilterComponent, decorators: [{
135
+ type: Component,
136
+ args: [{ selector: 'entry-date-time-search-filter', providers: [
137
+ { provide: MAT_DATE_FORMATS, useFactory: () => inject(ENTRY_MAT_DATE_TIME).matDateFormats },
138
+ { provide: DateAdapter, useClass: EntryDateTimeAdapter }
139
+ ], template: "<mat-form-field [formGroup]=\"form\" subscriptSizing=\"dynamic\">\n <mat-label [attr.for]=\"searchFilter.key\">{{searchFilter.label}}</mat-label>\n <input matInput [formControlName]=\"searchFilter.key\" [matDatepicker]=\"picker\" [id]=\"searchFilter.key\">\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n</mat-form-field>" }]
140
+ }], propDecorators: { searchFilter: [{
141
+ type: Input
142
+ }], form: [{
143
+ type: Input
144
+ }] } });
145
+
146
+ class DateSearchFilterComponent {
147
+ }
148
+ DateSearchFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DateSearchFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
149
+ DateSearchFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DateSearchFilterComponent, selector: "entry-date-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 <input matInput [formControlName]=\"searchFilter.key\" [matDatepicker]=\"picker\" [id]=\"searchFilter.key\">\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n</mat-form-field>", dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i4$1.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i4$1.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i4$1.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }] });
150
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DateSearchFilterComponent, decorators: [{
151
+ type: Component,
152
+ args: [{ selector: 'entry-date-search-filter', template: "<mat-form-field [formGroup]=\"form\" subscriptSizing=\"dynamic\">\n <mat-label [attr.for]=\"searchFilter.key\">{{searchFilter.label}}</mat-label>\n <input matInput [formControlName]=\"searchFilter.key\" [matDatepicker]=\"picker\" [id]=\"searchFilter.key\">\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n</mat-form-field>" }]
153
+ }], propDecorators: { searchFilter: [{
154
+ type: Input
155
+ }], form: [{
156
+ type: Input
157
+ }] } });
158
+
121
159
  /**
122
160
  * Entry SearchFilter component.
123
161
  */
@@ -157,12 +195,18 @@ class EntrySearchFilterComponent {
157
195
  asAutocompleteSearchFilter(searchFilter) {
158
196
  return searchFilter;
159
197
  }
198
+ asDateTimeSearchFilter(searchFilter) {
199
+ return searchFilter;
200
+ }
201
+ asDateSearchFilter(searchFilter) {
202
+ return searchFilter;
203
+ }
160
204
  }
161
205
  EntrySearchFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EntrySearchFilterComponent, deps: [{ token: ENTRY_SEARCH_FILTER_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
162
- EntrySearchFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: EntrySearchFilterComponent, selector: "entry-search-filter", inputs: { searchFilters: "searchFilters" }, outputs: { searchFilterChange: "searchFilterChange" }, ngImport: i0, template: "<form (ngSubmit)=\"onSubmit()\" [formGroup]=\"searchFilterForm\" class=\"search-form-container entry-form\">\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)\" [form]=\"searchFilterForm\"></entry-autocomplete-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>", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i4$1.EntryButtonDirective, selector: "[mat-button][entry-submit-button],[mat-button][entry-cancel-button]" }, { kind: "component", type: TextSearchFilterComponent, selector: "entry-text-search-filter", inputs: ["searchFilter", "form"] }, { kind: "component", type: SelectSearchFilterComponent, selector: "entry-select-search-filter", inputs: ["searchFilter", "form"] }, { kind: "component", type: AutocompleteSearchFilterComponent, selector: "entry-autocomplete-search-filter", inputs: ["searchFilter", "form"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
206
+ EntrySearchFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: EntrySearchFilterComponent, selector: "entry-search-filter", inputs: { searchFilters: "searchFilters" }, outputs: { searchFilterChange: "searchFilterChange" }, ngImport: i0, template: "<form (ngSubmit)=\"onSubmit()\" [formGroup]=\"searchFilterForm\" class=\"search-form-container entry-form\">\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)\" [form]=\"searchFilterForm\"></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>", dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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: "component", type: i3$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i4$2.EntryButtonDirective, selector: "[mat-button][entry-submit-button],[mat-button][entry-cancel-button]" }, { kind: "component", type: TextSearchFilterComponent, selector: "entry-text-search-filter", inputs: ["searchFilter", "form"] }, { kind: "component", type: SelectSearchFilterComponent, selector: "entry-select-search-filter", inputs: ["searchFilter", "form"] }, { kind: "component", type: AutocompleteSearchFilterComponent, selector: "entry-autocomplete-search-filter", inputs: ["searchFilter", "form"] }, { kind: "component", type: DateTimeSearchFilterComponent, selector: "entry-date-time-search-filter", inputs: ["searchFilter", "form"] }, { kind: "component", type: DateSearchFilterComponent, selector: "entry-date-search-filter", inputs: ["searchFilter", "form"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
163
207
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EntrySearchFilterComponent, decorators: [{
164
208
  type: Component,
165
- args: [{ selector: 'entry-search-filter', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form (ngSubmit)=\"onSubmit()\" [formGroup]=\"searchFilterForm\" class=\"search-form-container entry-form\">\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)\" [form]=\"searchFilterForm\"></entry-autocomplete-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>" }]
209
+ args: [{ selector: 'entry-search-filter', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form (ngSubmit)=\"onSubmit()\" [formGroup]=\"searchFilterForm\" class=\"search-form-container entry-form\">\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)\" [form]=\"searchFilterForm\"></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>" }]
166
210
  }], ctorParameters: function () {
167
211
  return [{ type: EntrySearchFilterConfig, decorators: [{
168
212
  type: Inject,
@@ -259,20 +303,44 @@ class SelectOption {
259
303
  }
260
304
  }
261
305
 
306
+ /**
307
+ * Search filter date time input filed configuration.
308
+ */
309
+ class DateTimeSearchFilter extends SearchFilterBase {
310
+ constructor() {
311
+ super(...arguments);
312
+ this.controlType = ControlType.dateTime;
313
+ }
314
+ }
315
+
316
+ /**
317
+ * Search filter date input filed configuration.
318
+ */
319
+ class DateSearchFilter extends SearchFilterBase {
320
+ constructor() {
321
+ super(...arguments);
322
+ this.controlType = ControlType.date;
323
+ }
324
+ }
325
+
262
326
  class EntrySearchFilterModule {
263
327
  }
264
328
  EntrySearchFilterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EntrySearchFilterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
265
329
  EntrySearchFilterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: EntrySearchFilterModule, declarations: [EntrySearchFilterComponent,
266
330
  TextSearchFilterComponent,
267
331
  SelectSearchFilterComponent,
268
- AutocompleteSearchFilterComponent], imports: [CommonModule,
332
+ AutocompleteSearchFilterComponent,
333
+ DateTimeSearchFilterComponent,
334
+ DateSearchFilterComponent], imports: [CommonModule,
269
335
  FormsModule,
270
336
  ReactiveFormsModule,
271
337
  MatInputModule,
272
338
  MatButtonModule,
273
339
  EntryButtonModule,
274
340
  MatSelectModule,
275
- MatAutocompleteModule], exports: [EntrySearchFilterComponent] });
341
+ MatAutocompleteModule,
342
+ MatDatepickerModule,
343
+ MatFormFieldModule], exports: [EntrySearchFilterComponent] });
276
344
  EntrySearchFilterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EntrySearchFilterModule, imports: [CommonModule,
277
345
  FormsModule,
278
346
  ReactiveFormsModule,
@@ -280,7 +348,9 @@ EntrySearchFilterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0",
280
348
  MatButtonModule,
281
349
  EntryButtonModule,
282
350
  MatSelectModule,
283
- MatAutocompleteModule] });
351
+ MatAutocompleteModule,
352
+ MatDatepickerModule,
353
+ MatFormFieldModule] });
284
354
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EntrySearchFilterModule, decorators: [{
285
355
  type: NgModule,
286
356
  args: [{
@@ -288,7 +358,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
288
358
  EntrySearchFilterComponent,
289
359
  TextSearchFilterComponent,
290
360
  SelectSearchFilterComponent,
291
- AutocompleteSearchFilterComponent
361
+ AutocompleteSearchFilterComponent,
362
+ DateTimeSearchFilterComponent,
363
+ DateSearchFilterComponent
292
364
  ],
293
365
  imports: [
294
366
  CommonModule,
@@ -298,7 +370,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
298
370
  MatButtonModule,
299
371
  EntryButtonModule,
300
372
  MatSelectModule,
301
- MatAutocompleteModule
373
+ MatAutocompleteModule,
374
+ MatDatepickerModule,
375
+ MatFormFieldModule
302
376
  ],
303
377
  exports: [
304
378
  EntrySearchFilterComponent
@@ -310,5 +384,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
310
384
  * Generated bundle index. Do not edit.
311
385
  */
312
386
 
313
- export { AutocompleteSearchFilter, ENTRY_SEARCH_FILTER_CONFIG, EntrySearchFilterComponent, EntrySearchFilterConfig, EntrySearchFilterModule, SearchFilterBase, SelectOption, SelectSearchFilter, TextSearchFilter, provideEntrySearchFilterConfig };
387
+ export { AutocompleteSearchFilter, DateSearchFilter, DateTimeSearchFilter, ENTRY_SEARCH_FILTER_CONFIG, EntrySearchFilterComponent, EntrySearchFilterConfig, EntrySearchFilterModule, SearchFilterBase, SelectOption, SelectSearchFilter, TextSearchFilter, provideEntrySearchFilterConfig };
314
388
  //# sourceMappingURL=enigmatry-entry-components-search-filter.mjs.map