@recursyve/ngx-material-components 20.1.0 → 21.0.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 (19) hide show
  1. package/fesm2022/recursyve-ngx-material-components-chip-list.mjs +11 -11
  2. package/fesm2022/recursyve-ngx-material-components-chip-list.mjs.map +1 -1
  3. package/fesm2022/recursyve-ngx-material-components-common.mjs +3 -3
  4. package/fesm2022/recursyve-ngx-material-components-dropzone.mjs +27 -27
  5. package/fesm2022/recursyve-ngx-material-components-dropzone.mjs.map +1 -1
  6. package/fesm2022/recursyve-ngx-material-components-form-field-error.mjs +6 -6
  7. package/fesm2022/recursyve-ngx-material-components-form-field-error.mjs.map +1 -1
  8. package/fesm2022/recursyve-ngx-material-components-loading.mjs +9 -9
  9. package/fesm2022/recursyve-ngx-material-components-loading.mjs.map +1 -1
  10. package/fesm2022/recursyve-ngx-material-components-typeahead.mjs +20 -20
  11. package/fesm2022/recursyve-ngx-material-components-typeahead.mjs.map +1 -1
  12. package/package.json +14 -14
  13. /package/{chip-list/index.d.ts → types/recursyve-ngx-material-components-chip-list.d.ts} +0 -0
  14. /package/{common/index.d.ts → types/recursyve-ngx-material-components-common.d.ts} +0 -0
  15. /package/{dropzone/index.d.ts → types/recursyve-ngx-material-components-dropzone.d.ts} +0 -0
  16. /package/{form-field-error/index.d.ts → types/recursyve-ngx-material-components-form-field-error.d.ts} +0 -0
  17. /package/{loading/index.d.ts → types/recursyve-ngx-material-components-loading.d.ts} +0 -0
  18. /package/{typeahead/index.d.ts → types/recursyve-ngx-material-components-typeahead.d.ts} +0 -0
  19. /package/{index.d.ts → types/recursyve-ngx-material-components.d.ts} +0 -0
@@ -67,8 +67,8 @@ class NiceFormErrorComponent {
67
67
  }
68
68
  this.message = value;
69
69
  }
70
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceFormErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
71
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.1", type: NiceFormErrorComponent, isStandalone: true, selector: "nice-form-field-error", inputs: { error: "error" }, ngImport: i0, template: `
70
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: NiceFormErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
71
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.5", type: NiceFormErrorComponent, isStandalone: true, selector: "nice-form-field-error", inputs: { error: "error" }, ngImport: i0, template: `
72
72
  @if (message) {
73
73
  <div [@animation]="increment">
74
74
  <mat-error>{{ message }}</mat-error>
@@ -85,7 +85,7 @@ class NiceFormErrorComponent {
85
85
  ])
86
86
  ], encapsulation: i0.ViewEncapsulation.None });
87
87
  }
88
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceFormErrorComponent, decorators: [{
88
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: NiceFormErrorComponent, decorators: [{
89
89
  type: Component,
90
90
  args: [{ selector: "nice-form-field-error", template: `
91
91
  @if (message) {
@@ -179,10 +179,10 @@ class NiceFormFieldErrorDirective {
179
179
  }
180
180
  this.ref.instance.error = text.length > 0 ? this.translater(text, params) : text;
181
181
  }
182
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceFormFieldErrorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
183
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.1", type: NiceFormFieldErrorDirective, isStandalone: true, selector: "[niceFormFieldError]", ngImport: i0 });
182
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: NiceFormFieldErrorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
183
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.5", type: NiceFormFieldErrorDirective, isStandalone: true, selector: "[niceFormFieldError]", ngImport: i0 });
184
184
  }
185
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceFormFieldErrorDirective, decorators: [{
185
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: NiceFormFieldErrorDirective, decorators: [{
186
186
  type: Directive,
187
187
  args: [{ selector: "[niceFormFieldError]", standalone: true }]
188
188
  }] });
@@ -1 +1 @@
1
- {"version":3,"file":"recursyve-ngx-material-components-form-field-error.mjs","sources":["../../../src/material-components/form-field-error/error-transformer.ts","../../../src/material-components/form-field-error/form-field-error.ts","../../../src/material-components/form-field-error/constant.ts","../../../src/material-components/form-field-error/form-field-error.directive.ts","../../../src/material-components/form-field-error/provider.ts","../../../src/material-components/form-field-error/recursyve-ngx-material-components-form-field-error.ts"],"sourcesContent":["import { ValidationErrors } from \"@angular/forms\";\n\nexport type TransformedError = { key: string; params?: Record<string, string> };\nexport type ErrorTransformer = (error: string, details: ValidationErrors) => TransformedError;\nexport type ErrorTransformers = Record<string, ErrorTransformer>;\n\nexport const PatternErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n if (details[\"requiredPattern\"]) {\n return {\n key: details[\"requiredPattern\"]\n }\n }\n\n return { key: error };\n};\n\nexport const MaskErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n if (details[\"requiredMask\"]) {\n return {\n key: details[\"requiredMask\"]\n }\n }\n\n return { key: error };\n};\n\nexport const LengthErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n return {\n key: error,\n params: {\n value: details[\"requiredLength\"]\n }\n };\n};\n\nexport const MinErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n return {\n key: error,\n params: {\n min: details[\"min\"],\n actual: details[\"actual\"]\n }\n };\n};\n\nexport const MaxErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n return {\n key: error,\n params: {\n max: details[\"max\"],\n actual: details[\"actual\"]\n }\n };\n};\n\nexport const DefaultErrorTransformers: ErrorTransformers = {\n pattern: PatternErrorTransformer,\n mask: MaskErrorTransformer,\n minlength: LengthErrorTransformer,\n maxlength: LengthErrorTransformer,\n min: MinErrorTransformer,\n max: MaxErrorTransformer\n};\n","import { animate, style, transition, trigger } from \"@angular/animations\";\nimport { Component, Input, ViewEncapsulation } from \"@angular/core\";\nimport { MatError } from \"@angular/material/form-field\";\n\n@Component({\n selector: \"nice-form-field-error\",\n template: `\n @if (message) {\n <div [@animation]=\"increment\">\n <mat-error>{{ message }}</mat-error>\n </div>\n }\n `,\n styleUrls: [\"./form-field-error.scss\"],\n animations: [\n trigger(\"animation\", [\n transition(\":increment\", [style({ opacity: 0 }), animate(\"200ms ease-in\", style({ opacity: 1 }))]),\n transition(\":enter\", [\n style({ opacity: 0, transform: \"translateY(-1rem)\" }),\n animate(\"200ms ease-in\", style({ opacity: 1, transform: \"translateY(0)\" }))\n ]),\n transition(\":leave\", [animate(\"200ms ease-out\", style({ opacity: 0, transform: \"translateY(-1rem)\" }))])\n ])\n ],\n encapsulation: ViewEncapsulation.None,\n imports: [\n MatError\n ]\n})\nexport class NiceFormErrorComponent {\n public message = \"\";\n public increment = 0;\n\n @Input()\n public set error(value: string) {\n if (value) {\n if (this.message !== value) {\n this.increment++;\n }\n }\n this.message = value;\n }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_FORM_FIELD_ERROR_TRANSFORMERS = new InjectionToken(\"nice_form_field_error_transformers\");\nexport const NICE_FORM_FIELD_ERROR_TRANSLATER = new InjectionToken(\"nice_form_field_error_translater\");\n","import {\n AfterViewInit,\n ComponentRef,\n DestroyRef,\n Directive,\n ElementRef,\n inject,\n ViewContainerRef\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { AbstractControlDirective, NgControl } from \"@angular/forms\";\nimport { MatFormField } from \"@angular/material/form-field\";\nimport { NiceTranslater } from \"@recursyve/ngx-material-components/common\";\nimport { combineLatest, startWith } from \"rxjs\";\n\nimport { NiceFormErrorComponent } from \"./form-field-error\";\nimport { ErrorTransformers } from \"./error-transformer\";\nimport { NICE_FORM_FIELD_ERROR_TRANSFORMERS, NICE_FORM_FIELD_ERROR_TRANSLATER } from \"./constant\";\n\n@Directive({ selector: \"[niceFormFieldError]\", standalone: true })\nexport class NiceFormFieldErrorDirective implements AfterViewInit {\n private readonly destroyRef = inject(DestroyRef);\n private readonly elementRef = inject(ElementRef);\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly formField = inject(MatFormField);\n private readonly transformers = inject<ErrorTransformers>(NICE_FORM_FIELD_ERROR_TRANSFORMERS);\n private readonly translater = inject<NiceTranslater>(NICE_FORM_FIELD_ERROR_TRANSLATER);\n\n private ref: ComponentRef<NiceFormErrorComponent> | null = null ;\n private control: NgControl | AbstractControlDirective | null = null;\n\n public onChange = () => {\n if (this.control === null || this.control.pending) {\n return;\n }\n\n if (this.control.valid || this.control.untouched) {\n this.setError(\"\", {});\n return;\n }\n\n for (const error in this.control.errors) {\n const details = this.control.errors[error];\n if (typeof details !== \"object\") {\n this.setError(`errors.${error}`, {});\n continue;\n }\n\n const transformer = this.transformers[error];\n if (!transformer) {\n this.setError(`errors.${error}`, {});\n continue;\n }\n\n const { key, params } = transformer(error, details);\n this.setError(`errors.${key}`, params ?? {});\n }\n }\n\n public ngAfterViewInit(): void {\n this.control = this.formField._control.ngControl;\n\n if (this.control !== null && this.control.statusChanges !== null) {\n combineLatest([\n this.formField._control.stateChanges,\n this.control.statusChanges.pipe(startWith(this.control.status))\n ])\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.onChange());\n }\n }\n\n public setError(text: string, params: Record<string, string>): void {\n if (!this.ref) {\n this.ref = this.viewContainerRef.createComponent(NiceFormErrorComponent);\n if (this.elementRef.nativeElement.getElementsByClassName(\"mat-mdc-form-field-subscript-wrapper\").item(0)) {\n const hint = this.elementRef.nativeElement.getElementsByClassName(\"mat-mdc-form-field-hint\").item(0);\n (this.ref.location.nativeElement as HTMLDivElement).style.position = \"absolute\";\n (this.ref.location.nativeElement as HTMLDivElement).style.top = hint ? \"16px\" : \"0\";\n\n const wrapper = this.elementRef.nativeElement\n .getElementsByClassName(\"mat-mdc-form-field-subscript-wrapper\")\n .item(0);\n if (hint) {\n wrapper.classList.add(\"override-height\");\n }\n\n wrapper.prepend(this.ref.location.nativeElement);\n }\n }\n\n if (text) {\n this.elementRef.nativeElement.classList.add(\"form-error-show\");\n } else {\n this.elementRef.nativeElement.classList.remove(\"form-error-show\");\n }\n\n this.ref.instance.error = text.length > 0 ? this.translater(text, params) : text;\n }\n}\n","import { Provider } from \"@angular/core\";\nimport { NICE_FORM_FIELD_ERROR_TRANSFORMERS, NICE_FORM_FIELD_ERROR_TRANSLATER } from \"./constant\";\nimport { NiceFormFieldErrorsOptions } from \"./options\";\nimport { DefaultErrorTransformers } from \"./error-transformer\";\n\nexport function provideFormFieldError(options: NiceFormFieldErrorsOptions): Provider[] {\n return [\n {\n provide: NICE_FORM_FIELD_ERROR_TRANSFORMERS,\n useValue: {\n ...DefaultErrorTransformers,\n ...options.errorTransformers\n }\n },\n {\n provide: NICE_FORM_FIELD_ERROR_TRANSLATER,\n ...options.translater\n }\n ];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recursyve-ngx-material-components-form-field-error.mjs","sources":["../../../src/material-components/form-field-error/error-transformer.ts","../../../src/material-components/form-field-error/form-field-error.ts","../../../src/material-components/form-field-error/constant.ts","../../../src/material-components/form-field-error/form-field-error.directive.ts","../../../src/material-components/form-field-error/provider.ts","../../../src/material-components/form-field-error/recursyve-ngx-material-components-form-field-error.ts"],"sourcesContent":["import { ValidationErrors } from \"@angular/forms\";\n\nexport type TransformedError = { key: string; params?: Record<string, string> };\nexport type ErrorTransformer = (error: string, details: ValidationErrors) => TransformedError;\nexport type ErrorTransformers = Record<string, ErrorTransformer>;\n\nexport const PatternErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n if (details[\"requiredPattern\"]) {\n return {\n key: details[\"requiredPattern\"]\n }\n }\n\n return { key: error };\n};\n\nexport const MaskErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n if (details[\"requiredMask\"]) {\n return {\n key: details[\"requiredMask\"]\n }\n }\n\n return { key: error };\n};\n\nexport const LengthErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n return {\n key: error,\n params: {\n value: details[\"requiredLength\"]\n }\n };\n};\n\nexport const MinErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n return {\n key: error,\n params: {\n min: details[\"min\"],\n actual: details[\"actual\"]\n }\n };\n};\n\nexport const MaxErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n return {\n key: error,\n params: {\n max: details[\"max\"],\n actual: details[\"actual\"]\n }\n };\n};\n\nexport const DefaultErrorTransformers: ErrorTransformers = {\n pattern: PatternErrorTransformer,\n mask: MaskErrorTransformer,\n minlength: LengthErrorTransformer,\n maxlength: LengthErrorTransformer,\n min: MinErrorTransformer,\n max: MaxErrorTransformer\n};\n","import { animate, style, transition, trigger } from \"@angular/animations\";\nimport { Component, Input, ViewEncapsulation } from \"@angular/core\";\nimport { MatError } from \"@angular/material/form-field\";\n\n@Component({\n selector: \"nice-form-field-error\",\n template: `\n @if (message) {\n <div [@animation]=\"increment\">\n <mat-error>{{ message }}</mat-error>\n </div>\n }\n `,\n styleUrls: [\"./form-field-error.scss\"],\n animations: [\n trigger(\"animation\", [\n transition(\":increment\", [style({ opacity: 0 }), animate(\"200ms ease-in\", style({ opacity: 1 }))]),\n transition(\":enter\", [\n style({ opacity: 0, transform: \"translateY(-1rem)\" }),\n animate(\"200ms ease-in\", style({ opacity: 1, transform: \"translateY(0)\" }))\n ]),\n transition(\":leave\", [animate(\"200ms ease-out\", style({ opacity: 0, transform: \"translateY(-1rem)\" }))])\n ])\n ],\n encapsulation: ViewEncapsulation.None,\n imports: [\n MatError\n ]\n})\nexport class NiceFormErrorComponent {\n public message = \"\";\n public increment = 0;\n\n @Input()\n public set error(value: string) {\n if (value) {\n if (this.message !== value) {\n this.increment++;\n }\n }\n this.message = value;\n }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_FORM_FIELD_ERROR_TRANSFORMERS = new InjectionToken(\"nice_form_field_error_transformers\");\nexport const NICE_FORM_FIELD_ERROR_TRANSLATER = new InjectionToken(\"nice_form_field_error_translater\");\n","import {\n AfterViewInit,\n ComponentRef,\n DestroyRef,\n Directive,\n ElementRef,\n inject,\n ViewContainerRef\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { AbstractControlDirective, NgControl } from \"@angular/forms\";\nimport { MatFormField } from \"@angular/material/form-field\";\nimport { NiceTranslater } from \"@recursyve/ngx-material-components/common\";\nimport { combineLatest, startWith } from \"rxjs\";\n\nimport { NiceFormErrorComponent } from \"./form-field-error\";\nimport { ErrorTransformers } from \"./error-transformer\";\nimport { NICE_FORM_FIELD_ERROR_TRANSFORMERS, NICE_FORM_FIELD_ERROR_TRANSLATER } from \"./constant\";\n\n@Directive({ selector: \"[niceFormFieldError]\", standalone: true })\nexport class NiceFormFieldErrorDirective implements AfterViewInit {\n private readonly destroyRef = inject(DestroyRef);\n private readonly elementRef = inject(ElementRef);\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly formField = inject(MatFormField);\n private readonly transformers = inject<ErrorTransformers>(NICE_FORM_FIELD_ERROR_TRANSFORMERS);\n private readonly translater = inject<NiceTranslater>(NICE_FORM_FIELD_ERROR_TRANSLATER);\n\n private ref: ComponentRef<NiceFormErrorComponent> | null = null ;\n private control: NgControl | AbstractControlDirective | null = null;\n\n public onChange = () => {\n if (this.control === null || this.control.pending) {\n return;\n }\n\n if (this.control.valid || this.control.untouched) {\n this.setError(\"\", {});\n return;\n }\n\n for (const error in this.control.errors) {\n const details = this.control.errors[error];\n if (typeof details !== \"object\") {\n this.setError(`errors.${error}`, {});\n continue;\n }\n\n const transformer = this.transformers[error];\n if (!transformer) {\n this.setError(`errors.${error}`, {});\n continue;\n }\n\n const { key, params } = transformer(error, details);\n this.setError(`errors.${key}`, params ?? {});\n }\n }\n\n public ngAfterViewInit(): void {\n this.control = this.formField._control.ngControl;\n\n if (this.control !== null && this.control.statusChanges !== null) {\n combineLatest([\n this.formField._control.stateChanges,\n this.control.statusChanges.pipe(startWith(this.control.status))\n ])\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.onChange());\n }\n }\n\n public setError(text: string, params: Record<string, string>): void {\n if (!this.ref) {\n this.ref = this.viewContainerRef.createComponent(NiceFormErrorComponent);\n if (this.elementRef.nativeElement.getElementsByClassName(\"mat-mdc-form-field-subscript-wrapper\").item(0)) {\n const hint = this.elementRef.nativeElement.getElementsByClassName(\"mat-mdc-form-field-hint\").item(0);\n (this.ref.location.nativeElement as HTMLDivElement).style.position = \"absolute\";\n (this.ref.location.nativeElement as HTMLDivElement).style.top = hint ? \"16px\" : \"0\";\n\n const wrapper = this.elementRef.nativeElement\n .getElementsByClassName(\"mat-mdc-form-field-subscript-wrapper\")\n .item(0);\n if (hint) {\n wrapper.classList.add(\"override-height\");\n }\n\n wrapper.prepend(this.ref.location.nativeElement);\n }\n }\n\n if (text) {\n this.elementRef.nativeElement.classList.add(\"form-error-show\");\n } else {\n this.elementRef.nativeElement.classList.remove(\"form-error-show\");\n }\n\n this.ref.instance.error = text.length > 0 ? this.translater(text, params) : text;\n }\n}\n","import { Provider } from \"@angular/core\";\nimport { NICE_FORM_FIELD_ERROR_TRANSFORMERS, NICE_FORM_FIELD_ERROR_TRANSLATER } from \"./constant\";\nimport { NiceFormFieldErrorsOptions } from \"./options\";\nimport { DefaultErrorTransformers } from \"./error-transformer\";\n\nexport function provideFormFieldError(options: NiceFormFieldErrorsOptions): Provider[] {\n return [\n {\n provide: NICE_FORM_FIELD_ERROR_TRANSFORMERS,\n useValue: {\n ...DefaultErrorTransformers,\n ...options.errorTransformers\n }\n },\n {\n provide: NICE_FORM_FIELD_ERROR_TRANSLATER,\n ...options.translater\n }\n ];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -10,18 +10,18 @@ class NiceLoadingSpinner {
10
10
  loading = input(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
11
11
  mode = input("indeterminate", ...(ngDevMode ? [{ debugName: "mode" }] : []));
12
12
  diameter = input(50, ...(ngDevMode ? [{ debugName: "diameter" }] : []));
13
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceLoadingSpinner, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.2.1", type: NiceLoadingSpinner, isStandalone: true, selector: "nice-loading-spinner", inputs: { loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, diameter: { classPropertyName: "diameter", publicName: "diameter", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<mat-spinner [diameter]=\"diameter()\" [mode]=\"mode()\"></mat-spinner>\n", styles: [":host{display:inline-block}\n"], dependencies: [{ kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] });
13
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: NiceLoadingSpinner, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.5", type: NiceLoadingSpinner, isStandalone: true, selector: "nice-loading-spinner", inputs: { loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, diameter: { classPropertyName: "diameter", publicName: "diameter", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<mat-spinner [diameter]=\"diameter()\" [mode]=\"mode()\"></mat-spinner>\n", styles: [":host{display:inline-block}\n"], dependencies: [{ kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] });
15
15
  }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceLoadingSpinner, decorators: [{
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: NiceLoadingSpinner, decorators: [{
17
17
  type: Component,
18
18
  args: [{ selector: "nice-loading-spinner", imports: [MatProgressSpinner], template: "<mat-spinner [diameter]=\"diameter()\" [mode]=\"mode()\"></mat-spinner>\n", styles: [":host{display:inline-block}\n"] }]
19
- }] });
19
+ }], propDecorators: { loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], diameter: [{ type: i0.Input, args: [{ isSignal: true, alias: "diameter", required: false }] }] } });
20
20
 
21
21
  class NiceLoadingDirective {
22
22
  options = inject(NICE_LOADING_OPTIONS, { optional: true });
23
23
  overlay = inject(Overlay);
24
- loading = input(null, ...(ngDevMode ? [{ debugName: "loading", alias: "niceLoadingOverlay" }] : [{ alias: "niceLoadingOverlay" }]));
24
+ loading = input(null, { ...(ngDevMode ? { debugName: "loading" } : {}), alias: "niceLoadingOverlay" });
25
25
  overlayRef = null;
26
26
  _loading = false;
27
27
  constructor() {
@@ -57,13 +57,13 @@ class NiceLoadingDirective {
57
57
  this.overlayRef.detach();
58
58
  }
59
59
  }
60
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceLoadingDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
61
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.1", type: NiceLoadingDirective, isStandalone: true, selector: "[niceLoadingOverlay]", inputs: { loading: { classPropertyName: "loading", publicName: "niceLoadingOverlay", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
60
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: NiceLoadingDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
61
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.5", type: NiceLoadingDirective, isStandalone: true, selector: "[niceLoadingOverlay]", inputs: { loading: { classPropertyName: "loading", publicName: "niceLoadingOverlay", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
62
62
  }
63
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceLoadingDirective, decorators: [{
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: NiceLoadingDirective, decorators: [{
64
64
  type: Directive,
65
65
  args: [{ selector: "[niceLoadingOverlay]", standalone: true }]
66
- }], ctorParameters: () => [] });
66
+ }], ctorParameters: () => [], propDecorators: { loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "niceLoadingOverlay", required: false }] }] } });
67
67
 
68
68
  function provideNiceLoadingOptions(options) {
69
69
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"recursyve-ngx-material-components-loading.mjs","sources":["../../../src/material-components/loading/constant.ts","../../../src/material-components/loading/loading-spinner.ts","../../../src/material-components/loading/loading-spinner.html","../../../src/material-components/loading/loading.ts","../../../src/material-components/loading/provider.ts","../../../src/material-components/loading/recursyve-ngx-material-components-loading.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_LOADING_OPTIONS = new InjectionToken(\"nice_loading_options\");\n","import { Component, input } from \"@angular/core\";\nimport { MatProgressSpinner, ProgressSpinnerMode } from \"@angular/material/progress-spinner\";\n\n@Component({\n selector: \"nice-loading-spinner\",\n templateUrl: \"loading-spinner.html\",\n styleUrls: [\"./loading-spinner.scss\"],\n imports: [MatProgressSpinner]\n})\nexport class NiceLoadingSpinner {\n public readonly loading = input<boolean>(false);\n public readonly mode = input<ProgressSpinnerMode>(\"indeterminate\");\n public readonly diameter = input(50);\n}\n","<mat-spinner [diameter]=\"diameter()\" [mode]=\"mode()\"></mat-spinner>\n","import { Overlay, OverlayRef } from \"@angular/cdk/overlay\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { Directive, effect, inject, input, OnDestroy } from \"@angular/core\";\nimport { NICE_LOADING_OPTIONS } from \"./constant\";\nimport { NiceLoadingSpinner } from \"./loading-spinner\";\nimport { NiceLoadingOptions } from \"./options\";\n\n@Directive({ selector: \"[niceLoadingOverlay]\", standalone: true })\nexport class NiceLoadingDirective implements OnDestroy {\n private readonly options = inject<NiceLoadingOptions>(NICE_LOADING_OPTIONS, { optional: true });\n private readonly overlay = inject(Overlay);\n\n public loading = input<boolean | null>(null, { alias: \"niceLoadingOverlay\" });\n\n private overlayRef: OverlayRef | null = null;\n private _loading = false;\n\n constructor() {\n effect(() => {\n if (this.loading() === this._loading) {\n return;\n }\n\n this._loading = this.loading() ?? false;\n if (!this.overlayRef) {\n this.overlayRef = this.overlay.create({\n positionStrategy: this.overlay\n .position()\n .global()\n .centerHorizontally()\n .centerVertically(),\n hasBackdrop: true,\n panelClass: \"nice-loading-overlay\"\n });\n }\n\n if (this._loading) {\n this.overlayRef.attach(new ComponentPortal(this.options?.customLoading ?? NiceLoadingSpinner));\n } else {\n this.overlayRef.detach();\n }\n });\n }\n\n public ngOnDestroy(): void {\n if (!this.overlayRef) {\n return;\n }\n\n if (this.overlayRef.hasAttached()) {\n this.overlayRef.detach();\n }\n }\n}\n","import { Provider } from \"@angular/core\";\nimport { NiceLoadingOptions } from \"./options\";\nimport { NICE_LOADING_OPTIONS } from \"./constant\";\n\nexport function provideNiceLoadingOptions(options: NiceLoadingOptions): Provider {\n return {\n provide: NICE_LOADING_OPTIONS,\n useValue: options\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recursyve-ngx-material-components-loading.mjs","sources":["../../../src/material-components/loading/constant.ts","../../../src/material-components/loading/loading-spinner.ts","../../../src/material-components/loading/loading-spinner.html","../../../src/material-components/loading/loading.ts","../../../src/material-components/loading/provider.ts","../../../src/material-components/loading/recursyve-ngx-material-components-loading.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_LOADING_OPTIONS = new InjectionToken(\"nice_loading_options\");\n","import { Component, input } from \"@angular/core\";\nimport { MatProgressSpinner, ProgressSpinnerMode } from \"@angular/material/progress-spinner\";\n\n@Component({\n selector: \"nice-loading-spinner\",\n templateUrl: \"loading-spinner.html\",\n styleUrls: [\"./loading-spinner.scss\"],\n imports: [MatProgressSpinner]\n})\nexport class NiceLoadingSpinner {\n public readonly loading = input<boolean>(false);\n public readonly mode = input<ProgressSpinnerMode>(\"indeterminate\");\n public readonly diameter = input(50);\n}\n","<mat-spinner [diameter]=\"diameter()\" [mode]=\"mode()\"></mat-spinner>\n","import { Overlay, OverlayRef } from \"@angular/cdk/overlay\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { Directive, effect, inject, input, OnDestroy } from \"@angular/core\";\nimport { NICE_LOADING_OPTIONS } from \"./constant\";\nimport { NiceLoadingSpinner } from \"./loading-spinner\";\nimport { NiceLoadingOptions } from \"./options\";\n\n@Directive({ selector: \"[niceLoadingOverlay]\", standalone: true })\nexport class NiceLoadingDirective implements OnDestroy {\n private readonly options = inject<NiceLoadingOptions>(NICE_LOADING_OPTIONS, { optional: true });\n private readonly overlay = inject(Overlay);\n\n public loading = input<boolean | null>(null, { alias: \"niceLoadingOverlay\" });\n\n private overlayRef: OverlayRef | null = null;\n private _loading = false;\n\n constructor() {\n effect(() => {\n if (this.loading() === this._loading) {\n return;\n }\n\n this._loading = this.loading() ?? false;\n if (!this.overlayRef) {\n this.overlayRef = this.overlay.create({\n positionStrategy: this.overlay\n .position()\n .global()\n .centerHorizontally()\n .centerVertically(),\n hasBackdrop: true,\n panelClass: \"nice-loading-overlay\"\n });\n }\n\n if (this._loading) {\n this.overlayRef.attach(new ComponentPortal(this.options?.customLoading ?? NiceLoadingSpinner));\n } else {\n this.overlayRef.detach();\n }\n });\n }\n\n public ngOnDestroy(): void {\n if (!this.overlayRef) {\n return;\n }\n\n if (this.overlayRef.hasAttached()) {\n this.overlayRef.detach();\n }\n }\n}\n","import { Provider } from \"@angular/core\";\nimport { NiceLoadingOptions } from \"./options\";\nimport { NICE_LOADING_OPTIONS } from \"./constant\";\n\nexport function provideNiceLoadingOptions(options: NiceLoadingOptions): Provider {\n return {\n provide: NICE_LOADING_OPTIONS,\n useValue: options\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -192,10 +192,10 @@ class NiceTypeaheadService {
192
192
  }
193
193
  return this.resourceProvider.format(item);
194
194
  }
195
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceTypeaheadService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
196
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceTypeaheadService });
195
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: NiceTypeaheadService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
196
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: NiceTypeaheadService });
197
197
  }
198
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceTypeaheadService, decorators: [{
198
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: NiceTypeaheadService, decorators: [{
199
199
  type: Injectable
200
200
  }] });
201
201
 
@@ -208,10 +208,10 @@ function provideAsyncTypeaheadResources(providers) {
208
208
  }
209
209
 
210
210
  class NiceTypeaheadSearchIcon {
211
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceTypeaheadSearchIcon, deps: [], target: i0.ɵɵFactoryTarget.Component });
212
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.1", type: NiceTypeaheadSearchIcon, isStandalone: true, selector: "nice-typeahead-search-icon", ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path d=\"M1.4720451262 13.356970375A9.063 9.063 0 1 0 18.154024235 6.267298379a9.063 9.063 0 1 0 -16.6819791088 7.089671996Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"></path>\n <path d=\"m16.221 16.22 7.029 7.03\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"></path>\n</svg>\n" });
211
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: NiceTypeaheadSearchIcon, deps: [], target: i0.ɵɵFactoryTarget.Component });
212
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.5", type: NiceTypeaheadSearchIcon, isStandalone: true, selector: "nice-typeahead-search-icon", ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path d=\"M1.4720451262 13.356970375A9.063 9.063 0 1 0 18.154024235 6.267298379a9.063 9.063 0 1 0 -16.6819791088 7.089671996Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"></path>\n <path d=\"m16.221 16.22 7.029 7.03\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"></path>\n</svg>\n" });
213
213
  }
214
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceTypeaheadSearchIcon, decorators: [{
214
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: NiceTypeaheadSearchIcon, decorators: [{
215
215
  type: Component,
216
216
  args: [{ selector: "nice-typeahead-search-icon", template: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path d=\"M1.4720451262 13.356970375A9.063 9.063 0 1 0 18.154024235 6.267298379a9.063 9.063 0 1 0 -16.6819791088 7.089671996Z\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"></path>\n <path d=\"m16.221 16.22 7.029 7.03\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"></path>\n</svg>\n" }]
217
217
  }] });
@@ -679,15 +679,15 @@ class NiceTypeaheadBase {
679
679
  }
680
680
  return false;
681
681
  }
682
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceTypeaheadBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
683
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.2.1", type: NiceTypeaheadBase, isStandalone: true, inputs: { noItemsFoundLabel: { classPropertyName: "noItemsFoundLabel", publicName: "noItemsFoundLabel", isSignal: true, isRequired: false, transformFunction: null }, labelProperty: { classPropertyName: "labelProperty", publicName: "labelProperty", isSignal: true, isRequired: false, transformFunction: null }, formatLabelFn: { classPropertyName: "formatLabelFn", publicName: "formatLabelFn", isSignal: true, isRequired: false, transformFunction: null }, optionTemplate: { classPropertyName: "optionTemplate", publicName: "optionTemplate", isSignal: true, isRequired: false, transformFunction: null }, panelClass: { classPropertyName: "panelClass", publicName: "panelClass", isSignal: true, isRequired: false, transformFunction: null }, canRemoveValue: { classPropertyName: "canRemoveValue", publicName: "canRemoveValue", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "_input", first: true, predicate: ["input"], descendants: true, isSignal: true }, { propertyName: "_panel", first: true, predicate: ["panel"], descendants: true, isSignal: true }, { propertyName: "_overlayDir", first: true, predicate: CdkConnectedOverlay, descendants: true, isSignal: true }, { propertyName: "options", predicate: MatOption, descendants: true }], ngImport: i0 });
682
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: NiceTypeaheadBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
683
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.0.5", type: NiceTypeaheadBase, isStandalone: true, inputs: { noItemsFoundLabel: { classPropertyName: "noItemsFoundLabel", publicName: "noItemsFoundLabel", isSignal: true, isRequired: false, transformFunction: null }, labelProperty: { classPropertyName: "labelProperty", publicName: "labelProperty", isSignal: true, isRequired: false, transformFunction: null }, formatLabelFn: { classPropertyName: "formatLabelFn", publicName: "formatLabelFn", isSignal: true, isRequired: false, transformFunction: null }, optionTemplate: { classPropertyName: "optionTemplate", publicName: "optionTemplate", isSignal: true, isRequired: false, transformFunction: null }, panelClass: { classPropertyName: "panelClass", publicName: "panelClass", isSignal: true, isRequired: false, transformFunction: null }, canRemoveValue: { classPropertyName: "canRemoveValue", publicName: "canRemoveValue", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "_input", first: true, predicate: ["input"], descendants: true, isSignal: true }, { propertyName: "_panel", first: true, predicate: ["panel"], descendants: true, isSignal: true }, { propertyName: "_overlayDir", first: true, predicate: CdkConnectedOverlay, descendants: true, isSignal: true }, { propertyName: "options", predicate: MatOption, descendants: true }], ngImport: i0 });
684
684
  }
685
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceTypeaheadBase, decorators: [{
685
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: NiceTypeaheadBase, decorators: [{
686
686
  type: Directive
687
687
  }], ctorParameters: () => [], propDecorators: { options: [{
688
688
  type: ViewChildren,
689
689
  args: [MatOption]
690
- }] } });
690
+ }], noItemsFoundLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "noItemsFoundLabel", required: false }] }], labelProperty: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelProperty", required: false }] }], formatLabelFn: [{ type: i0.Input, args: [{ isSignal: true, alias: "formatLabelFn", required: false }] }], optionTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionTemplate", required: false }] }], panelClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "panelClass", required: false }] }], canRemoveValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "canRemoveValue", required: false }] }], selected: [{ type: i0.Output, args: ["selected"] }], _input: [{ type: i0.ViewChild, args: ["input", { isSignal: true }] }], _panel: [{ type: i0.ViewChild, args: ["panel", { isSignal: true }] }], _overlayDir: [{ type: i0.ViewChild, args: [i0.forwardRef(() => CdkConnectedOverlay), { isSignal: true }] }] } });
691
691
 
692
692
  class NiceAsyncTypeahead extends NiceTypeaheadBase {
693
693
  resource = input.required(...(ngDevMode ? [{ debugName: "resource" }] : []));
@@ -696,7 +696,7 @@ class NiceAsyncTypeahead extends NiceTypeaheadBase {
696
696
  /**
697
697
  * @deprecated Use autoSelectMode instead
698
698
  */
699
- autoSelectFirstValue = input(false, ...(ngDevMode ? [{ debugName: "autoSelectFirstValue", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
699
+ autoSelectFirstValue = input(false, { ...(ngDevMode ? { debugName: "autoSelectFirstValue" } : {}), transform: booleanAttribute });
700
700
  filteredValues = computed(() => this.service.items(), ...(ngDevMode ? [{ debugName: "filteredValues" }] : []));
701
701
  optionsContainer = viewChild("optionsContainer", ...(ngDevMode ? [{ debugName: "optionsContainer" }] : []));
702
702
  prefilled = signal(false, ...(ngDevMode ? [{ debugName: "prefilled" }] : []));
@@ -812,13 +812,13 @@ class NiceAsyncTypeahead extends NiceTypeaheadBase {
812
812
  this.lastScrollHeight = target.scrollHeight;
813
813
  }
814
814
  }
815
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceAsyncTypeahead, deps: [], target: i0.ɵɵFactoryTarget.Component });
816
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.1", type: NiceAsyncTypeahead, isStandalone: true, selector: "nice-async-typeahead", inputs: { resource: { classPropertyName: "resource", publicName: "resource", isSignal: true, isRequired: true, transformFunction: null }, searchOptions: { classPropertyName: "searchOptions", publicName: "searchOptions", isSignal: true, isRequired: false, transformFunction: null }, autoSelectMode: { classPropertyName: "autoSelectMode", publicName: "autoSelectMode", isSignal: true, isRequired: false, transformFunction: null }, autoSelectFirstValue: { classPropertyName: "autoSelectFirstValue", publicName: "autoSelectFirstValue", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "combobox", "aria-haspopup": "listbox" }, listeners: { "keydown": "_handleKeydown($event)", "focus": "onFocusChanged(true)", "blur": "onFocusChanged(false)" }, properties: { "attr.id": "id", "attr.aria-controls": "panelOpen ? id + \"-panel\" : null", "attr.aria-expanded": "panelOpen", "attr.aria-required": "required.toString()", "attr.aria-disabled": "disabled.toString()", "attr.aria-invalid": "errorState", "class.nice-typeahead-disabled": "disabled", "class.nice-typeahead-invalid": "errorState", "class.nice-typeahead-required": "required", "class.nice-typeahead-empty": "empty" }, classAttribute: "nice-typeahead" }, providers: [
815
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: NiceAsyncTypeahead, deps: [], target: i0.ɵɵFactoryTarget.Component });
816
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.5", type: NiceAsyncTypeahead, isStandalone: true, selector: "nice-async-typeahead", inputs: { resource: { classPropertyName: "resource", publicName: "resource", isSignal: true, isRequired: true, transformFunction: null }, searchOptions: { classPropertyName: "searchOptions", publicName: "searchOptions", isSignal: true, isRequired: false, transformFunction: null }, autoSelectMode: { classPropertyName: "autoSelectMode", publicName: "autoSelectMode", isSignal: true, isRequired: false, transformFunction: null }, autoSelectFirstValue: { classPropertyName: "autoSelectFirstValue", publicName: "autoSelectFirstValue", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "combobox", "aria-haspopup": "listbox" }, listeners: { "keydown": "_handleKeydown($event)", "focus": "onFocusChanged(true)", "blur": "onFocusChanged(false)" }, properties: { "attr.id": "id", "attr.aria-controls": "panelOpen ? id + \"-panel\" : null", "attr.aria-expanded": "panelOpen", "attr.aria-required": "required.toString()", "attr.aria-disabled": "disabled.toString()", "attr.aria-invalid": "errorState", "class.nice-typeahead-disabled": "disabled", "class.nice-typeahead-invalid": "errorState", "class.nice-typeahead-required": "required", "class.nice-typeahead-empty": "empty" }, classAttribute: "nice-typeahead" }, providers: [
817
817
  { provide: MatFormFieldControl, useExisting: NiceAsyncTypeahead },
818
818
  NiceTypeaheadService
819
- ], viewQueries: [{ propertyName: "optionsContainer", first: true, predicate: ["optionsContainer"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n class=\"nice-typeahead\"\n cdk-overlay-origin\n>\n <div class=\"nice-typeahead-value\">\n @if (_empty()) {\n <span class=\"nice-typeahead-placeholder mat-mdc-select-min-line\">{{ _placeholder() }}</span>\n } @else {\n <span class=\"nice-typeahead-value-text\">\n <span class=\"mat-mdc-select-min-line\">\n @if (_value(); as activeValue) {\n {{ formatLabel(activeValue) }}\n }\n </span>\n </span>\n }\n </div>\n\n <div class=\"nice-typeahead-suffix\">\n @if (_empty()) {\n <div class=\"mat-mdc-select-arrow\">\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </div>\n } @else if (canRemoveValue()) {\n <button class=\"nice-typeahead-remove\" mat-icon-button (click)=\"$event.stopPropagation(); removeActiveValue()\">\n <svg viewBox=\"0 -960 960 960\">\n <path d=\"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z\"/>\n </svg>\n </button>\n }\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n (attach)=\"_onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"nice-typeahead-panel nice-typeahead--open nice-typehead-animations-enabled\"\n [ngClass]=\"panelClass()\"\n [attr.id]=\"id + '-panel'\"\n (keydown)=\"_handleKeydown($event)\"\n (scrollend)=\"_handleScrollEnd()\"\n >\n <div class=\"nice-typeahead-search-input\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input\n #input\n class=\"nice-typeahead__input\"\n matInput\n [formControl]=\"_searchControl\"\n >\n\n <nice-typeahead-search-icon matIconPrefix />\n </mat-form-field>\n </div>\n\n <div #optionsContainer class=\"nice-typeahead-options\" role=\"presentation\">\n @for (item of filteredValues(); track item) {\n <mat-option [value]=\"item\">\n @if (optionTemplate(); as optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: item }\"></ng-container>\n } @else {\n {{ formatLabel(item) }}\n }\n </mat-option>\n } @empty {\n <mat-option disabled>\n <span class=\"nice-typeahead__no-items\">\n {{ noItemsFoundLabel() }}\n </span>\n </mat-option>\n }\n </div>\n </div>\n</ng-template>\n", styles: ["nice-typeahead,nice-async-typeahead{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-app-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-app-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-app-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-app-body-large-tracking))}nice-typeahead.nice-typeahead-disabled,nice-async-typeahead.nice-typeahead-disabled{color:var(--mat-select-disabled-trigger-text-color)}nice-typeahead.nice-typeahead-disabled .mat-mdc-select-arrow,nice-typeahead.nice-typeahead-disabled .nice-typeahead-remove,nice-async-typeahead.nice-typeahead-disabled .mat-mdc-select-arrow,nice-async-typeahead.nice-typeahead-disabled .nice-typeahead-remove{color:var(--mat-select-disabled-trigger-text-color)}nice-typeahead.nice-typeahead-invalid .mat-mdc-select-arrow,nice-async-typeahead.nice-typeahead-invalid .mat-mdc-select-arrow{color:var(--mat-select-invalid-arrow-color)}nice-typeahead .nice-typeahead,nice-async-typeahead .nice-typeahead{width:100%;display:inline-flex;align-items:center;justify-content:space-between;cursor:pointer;position:relative;box-sizing:border-box}nice-typeahead .nice-typeahead-suffix,nice-async-typeahead .nice-typeahead-suffix{height:24px;flex-shrink:0;display:inline-flex;align-items:center;--mdc-icon-button-state-layer-size: 24px}nice-typeahead .nice-typeahead-suffix .nice-typeahead-remove,nice-async-typeahead .nice-typeahead-suffix .nice-typeahead-remove{margin-right:-6px}nice-typeahead .nice-typeahead-value,nice-async-typeahead .nice-typeahead-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nice-typeahead .nice-typeahead-value-text,nice-async-typeahead .nice-typeahead-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}nice-typeahead .mat-mdc-select-min-line:empty:before,nice-async-typeahead .mat-mdc-select-min-line:empty:before{content:\" \";white-space:pre;width:1px;display:inline-block;visibility:hidden}nice-typeahead .nice-typeahead__input,nice-async-typeahead .nice-typeahead__input{border:none;outline:none;box-shadow:none;background:none;padding:0;margin:0;color:inherit}.mat-mdc-form-field-type-nice-typeahead:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-nice-typeahead.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}@keyframes _nice-typeahead-enter{0%{opacity:0;transform:scaleY(.8)}to{opacity:1;transform:none}}@keyframes _nice-typeahead-exit{0%{opacity:1}to{opacity:0}}div.nice-typeahead-panel{width:100%;outline:0;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color, var(--mat-app-surface-container))}div.nice-typeahead-panel nice-typeahead-search-icon{width:16px;height:16px;margin-right:8px;margin-left:16px}div.nice-typeahead-panel nice-typeahead-search-icon svg{width:16px;height:16px}div.nice-typeahead-panel .nice-typeahead-search-input{padding-left:8px;padding-right:8px;padding-bottom:8px}div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field,div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field-infix{width:100%}div.nice-typeahead-panel .nice-typeahead-options{overflow:auto;max-height:384px}div.nice-typeahead-panel{box-shadow:var(--mat-select-container-elevation-shadow)}.nice-typehead-animations-enabled{animation:_nice-typeahead-enter .12s cubic-bezier(0,0,.2,1)}.nice-typehead-animations-enabled.mat-select-panel-exit{animation:_nice-typeahead-exit .1s linear}\n"], dependencies: [{ kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: 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: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NiceTypeaheadSearchIcon, selector: "nice-typeahead-search-icon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
819
+ ], viewQueries: [{ propertyName: "optionsContainer", first: true, predicate: ["optionsContainer"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n class=\"nice-typeahead\"\n cdk-overlay-origin\n>\n <div class=\"nice-typeahead-value\">\n @if (_empty()) {\n <span class=\"nice-typeahead-placeholder mat-mdc-select-min-line\">{{ _placeholder() }}</span>\n } @else {\n <span class=\"nice-typeahead-value-text\">\n <span class=\"mat-mdc-select-min-line\">\n @if (_value(); as activeValue) {\n {{ formatLabel(activeValue) }}\n }\n </span>\n </span>\n }\n </div>\n\n <div class=\"nice-typeahead-suffix\">\n @if (_empty()) {\n <div class=\"mat-mdc-select-arrow\">\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </div>\n } @else if (canRemoveValue()) {\n <button class=\"nice-typeahead-remove\" mat-icon-button (click)=\"$event.stopPropagation(); removeActiveValue()\">\n <svg viewBox=\"0 -960 960 960\">\n <path d=\"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z\"/>\n </svg>\n </button>\n }\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n (attach)=\"_onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"nice-typeahead-panel nice-typeahead--open nice-typehead-animations-enabled\"\n [ngClass]=\"panelClass()\"\n [attr.id]=\"id + '-panel'\"\n (keydown)=\"_handleKeydown($event)\"\n (scrollend)=\"_handleScrollEnd()\"\n >\n <div class=\"nice-typeahead-search-input\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input\n #input\n class=\"nice-typeahead__input\"\n matInput\n [formControl]=\"_searchControl\"\n >\n\n <nice-typeahead-search-icon matIconPrefix />\n </mat-form-field>\n </div>\n\n <div #optionsContainer class=\"nice-typeahead-options\" role=\"presentation\">\n @for (item of filteredValues(); track item) {\n <mat-option [value]=\"item\">\n @if (optionTemplate(); as optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: item }\"></ng-container>\n } @else {\n {{ formatLabel(item) }}\n }\n </mat-option>\n } @empty {\n <mat-option disabled>\n <span class=\"nice-typeahead__no-items\">\n {{ noItemsFoundLabel() }}\n </span>\n </mat-option>\n }\n </div>\n </div>\n</ng-template>\n", styles: ["nice-typeahead,nice-async-typeahead{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-app-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-app-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-app-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-app-body-large-tracking))}nice-typeahead.nice-typeahead-disabled,nice-async-typeahead.nice-typeahead-disabled{color:var(--mat-select-disabled-trigger-text-color)}nice-typeahead.nice-typeahead-disabled .mat-mdc-select-arrow,nice-typeahead.nice-typeahead-disabled .nice-typeahead-remove,nice-async-typeahead.nice-typeahead-disabled .mat-mdc-select-arrow,nice-async-typeahead.nice-typeahead-disabled .nice-typeahead-remove{color:var(--mat-select-disabled-trigger-text-color)}nice-typeahead.nice-typeahead-invalid .mat-mdc-select-arrow,nice-async-typeahead.nice-typeahead-invalid .mat-mdc-select-arrow{color:var(--mat-select-invalid-arrow-color)}nice-typeahead .nice-typeahead,nice-async-typeahead .nice-typeahead{width:100%;display:inline-flex;align-items:center;justify-content:space-between;cursor:pointer;position:relative;box-sizing:border-box}nice-typeahead .nice-typeahead-suffix,nice-async-typeahead .nice-typeahead-suffix{height:24px;flex-shrink:0;display:inline-flex;align-items:center;--mdc-icon-button-state-layer-size: 24px}nice-typeahead .nice-typeahead-suffix .nice-typeahead-remove,nice-async-typeahead .nice-typeahead-suffix .nice-typeahead-remove{margin-right:-6px}nice-typeahead .nice-typeahead-value,nice-async-typeahead .nice-typeahead-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nice-typeahead .nice-typeahead-value-text,nice-async-typeahead .nice-typeahead-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}nice-typeahead .mat-mdc-select-min-line:empty:before,nice-async-typeahead .mat-mdc-select-min-line:empty:before{content:\" \";white-space:pre;width:1px;display:inline-block;visibility:hidden}nice-typeahead .nice-typeahead__input,nice-async-typeahead .nice-typeahead__input{border:none;outline:none;box-shadow:none;background:none;padding:0;margin:0;color:inherit}.mat-mdc-form-field-type-nice-typeahead:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-nice-typeahead.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}@keyframes _nice-typeahead-enter{0%{opacity:0;transform:scaleY(.8)}to{opacity:1;transform:none}}@keyframes _nice-typeahead-exit{0%{opacity:1}to{opacity:0}}div.nice-typeahead-panel{width:100%;outline:0;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color, var(--mat-app-surface-container))}div.nice-typeahead-panel nice-typeahead-search-icon{width:16px;height:16px;margin-right:8px;margin-left:16px}div.nice-typeahead-panel nice-typeahead-search-icon svg{width:16px;height:16px}div.nice-typeahead-panel .nice-typeahead-search-input{padding-left:8px;padding-right:8px;padding-bottom:8px}div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field,div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field-infix{width:100%}div.nice-typeahead-panel .nice-typeahead-options{overflow:auto;max-height:384px}div.nice-typeahead-panel{box-shadow:var(--mat-select-container-elevation-shadow)}.nice-typehead-animations-enabled{animation:_nice-typeahead-enter .12s cubic-bezier(0,0,.2,1)}.nice-typehead-animations-enabled.mat-select-panel-exit{animation:_nice-typeahead-exit .1s linear}\n"], dependencies: [{ kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation", "cdkConnectedOverlayUsePopover", "cdkConnectedOverlayMatchWidth", "cdkConnectedOverlay"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: 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: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NiceTypeaheadSearchIcon, selector: "nice-typeahead-search-icon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
820
820
  }
821
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceAsyncTypeahead, decorators: [{
821
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: NiceAsyncTypeahead, decorators: [{
822
822
  type: Component,
823
823
  args: [{ selector: "nice-async-typeahead", imports: [
824
824
  CdkOverlayOrigin,
@@ -853,7 +853,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
853
853
  "(focus)": "onFocusChanged(true)",
854
854
  "(blur)": "onFocusChanged(false)"
855
855
  }, template: "<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n class=\"nice-typeahead\"\n cdk-overlay-origin\n>\n <div class=\"nice-typeahead-value\">\n @if (_empty()) {\n <span class=\"nice-typeahead-placeholder mat-mdc-select-min-line\">{{ _placeholder() }}</span>\n } @else {\n <span class=\"nice-typeahead-value-text\">\n <span class=\"mat-mdc-select-min-line\">\n @if (_value(); as activeValue) {\n {{ formatLabel(activeValue) }}\n }\n </span>\n </span>\n }\n </div>\n\n <div class=\"nice-typeahead-suffix\">\n @if (_empty()) {\n <div class=\"mat-mdc-select-arrow\">\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </div>\n } @else if (canRemoveValue()) {\n <button class=\"nice-typeahead-remove\" mat-icon-button (click)=\"$event.stopPropagation(); removeActiveValue()\">\n <svg viewBox=\"0 -960 960 960\">\n <path d=\"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z\"/>\n </svg>\n </button>\n }\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n (attach)=\"_onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"nice-typeahead-panel nice-typeahead--open nice-typehead-animations-enabled\"\n [ngClass]=\"panelClass()\"\n [attr.id]=\"id + '-panel'\"\n (keydown)=\"_handleKeydown($event)\"\n (scrollend)=\"_handleScrollEnd()\"\n >\n <div class=\"nice-typeahead-search-input\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input\n #input\n class=\"nice-typeahead__input\"\n matInput\n [formControl]=\"_searchControl\"\n >\n\n <nice-typeahead-search-icon matIconPrefix />\n </mat-form-field>\n </div>\n\n <div #optionsContainer class=\"nice-typeahead-options\" role=\"presentation\">\n @for (item of filteredValues(); track item) {\n <mat-option [value]=\"item\">\n @if (optionTemplate(); as optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: item }\"></ng-container>\n } @else {\n {{ formatLabel(item) }}\n }\n </mat-option>\n } @empty {\n <mat-option disabled>\n <span class=\"nice-typeahead__no-items\">\n {{ noItemsFoundLabel() }}\n </span>\n </mat-option>\n }\n </div>\n </div>\n</ng-template>\n", styles: ["nice-typeahead,nice-async-typeahead{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-app-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-app-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-app-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-app-body-large-tracking))}nice-typeahead.nice-typeahead-disabled,nice-async-typeahead.nice-typeahead-disabled{color:var(--mat-select-disabled-trigger-text-color)}nice-typeahead.nice-typeahead-disabled .mat-mdc-select-arrow,nice-typeahead.nice-typeahead-disabled .nice-typeahead-remove,nice-async-typeahead.nice-typeahead-disabled .mat-mdc-select-arrow,nice-async-typeahead.nice-typeahead-disabled .nice-typeahead-remove{color:var(--mat-select-disabled-trigger-text-color)}nice-typeahead.nice-typeahead-invalid .mat-mdc-select-arrow,nice-async-typeahead.nice-typeahead-invalid .mat-mdc-select-arrow{color:var(--mat-select-invalid-arrow-color)}nice-typeahead .nice-typeahead,nice-async-typeahead .nice-typeahead{width:100%;display:inline-flex;align-items:center;justify-content:space-between;cursor:pointer;position:relative;box-sizing:border-box}nice-typeahead .nice-typeahead-suffix,nice-async-typeahead .nice-typeahead-suffix{height:24px;flex-shrink:0;display:inline-flex;align-items:center;--mdc-icon-button-state-layer-size: 24px}nice-typeahead .nice-typeahead-suffix .nice-typeahead-remove,nice-async-typeahead .nice-typeahead-suffix .nice-typeahead-remove{margin-right:-6px}nice-typeahead .nice-typeahead-value,nice-async-typeahead .nice-typeahead-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nice-typeahead .nice-typeahead-value-text,nice-async-typeahead .nice-typeahead-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}nice-typeahead .mat-mdc-select-min-line:empty:before,nice-async-typeahead .mat-mdc-select-min-line:empty:before{content:\" \";white-space:pre;width:1px;display:inline-block;visibility:hidden}nice-typeahead .nice-typeahead__input,nice-async-typeahead .nice-typeahead__input{border:none;outline:none;box-shadow:none;background:none;padding:0;margin:0;color:inherit}.mat-mdc-form-field-type-nice-typeahead:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-nice-typeahead.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}@keyframes _nice-typeahead-enter{0%{opacity:0;transform:scaleY(.8)}to{opacity:1;transform:none}}@keyframes _nice-typeahead-exit{0%{opacity:1}to{opacity:0}}div.nice-typeahead-panel{width:100%;outline:0;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color, var(--mat-app-surface-container))}div.nice-typeahead-panel nice-typeahead-search-icon{width:16px;height:16px;margin-right:8px;margin-left:16px}div.nice-typeahead-panel nice-typeahead-search-icon svg{width:16px;height:16px}div.nice-typeahead-panel .nice-typeahead-search-input{padding-left:8px;padding-right:8px;padding-bottom:8px}div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field,div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field-infix{width:100%}div.nice-typeahead-panel .nice-typeahead-options{overflow:auto;max-height:384px}div.nice-typeahead-panel{box-shadow:var(--mat-select-container-elevation-shadow)}.nice-typehead-animations-enabled{animation:_nice-typeahead-enter .12s cubic-bezier(0,0,.2,1)}.nice-typehead-animations-enabled.mat-select-panel-exit{animation:_nice-typeahead-exit .1s linear}\n"] }]
856
- }], ctorParameters: () => [] });
856
+ }], ctorParameters: () => [], propDecorators: { resource: [{ type: i0.Input, args: [{ isSignal: true, alias: "resource", required: true }] }], searchOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchOptions", required: false }] }], autoSelectMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoSelectMode", required: false }] }], autoSelectFirstValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoSelectFirstValue", required: false }] }], optionsContainer: [{ type: i0.ViewChild, args: ["optionsContainer", { isSignal: true }] }] } });
857
857
 
858
858
  class NiceTypeahead extends NiceTypeaheadBase {
859
859
  values = input.required(...(ngDevMode ? [{ debugName: "values" }] : []));
@@ -890,10 +890,10 @@ class NiceTypeahead extends NiceTypeaheadBase {
890
890
  return false;
891
891
  });
892
892
  }
893
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceTypeahead, deps: null, target: i0.ɵɵFactoryTarget.Component });
894
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.1", type: NiceTypeahead, isStandalone: true, selector: "nice-typeahead", inputs: { values: { classPropertyName: "values", publicName: "values", isSignal: true, isRequired: true, transformFunction: null }, searchFn: { classPropertyName: "searchFn", publicName: "searchFn", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "combobox", "aria-haspopup": "listbox" }, listeners: { "keydown": "_handleKeydown($event)", "focus": "onFocusChanged(true)", "blur": "onFocusChanged(false)" }, properties: { "attr.id": "id", "attr.aria-controls": "panelOpen ? id + \"-panel\" : null", "attr.aria-expanded": "panelOpen", "attr.aria-required": "required.toString()", "attr.aria-disabled": "disabled.toString()", "attr.aria-invalid": "errorState", "class.nice-typeahead-disabled": "disabled", "class.nice-typeahead-invalid": "errorState", "class.nice-typeahead-required": "required", "class.nice-typeahead-empty": "empty" }, classAttribute: "nice-typeahead" }, providers: [{ provide: MatFormFieldControl, useExisting: NiceTypeahead }], usesInheritance: true, ngImport: i0, template: "<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n class=\"nice-typeahead\"\n cdk-overlay-origin\n>\n <div class=\"nice-typeahead-value\">\n @if (_empty()) {\n <span class=\"nice-typeahead-placeholder mat-mdc-select-min-line\">{{ _placeholder() }}</span>\n } @else {\n <span class=\"nice-typeahead-value-text\">\n <span class=\"mat-mdc-select-min-line\">\n @if (_value(); as activeValue) {\n {{ formatLabel(activeValue) }}\n }\n </span>\n </span>\n }\n </div>\n\n <div class=\"nice-typeahead-suffix\">\n @if (_empty()) {\n <div class=\"mat-mdc-select-arrow\">\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </div>\n } @else if (canRemoveValue()) {\n <button class=\"nice-typeahead-remove\" mat-icon-button (click)=\"$event.stopPropagation(); removeActiveValue()\">\n <svg viewBox=\"0 -960 960 960\">\n <path d=\"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z\"/>\n </svg>\n </button>\n }\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n (attach)=\"_onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"nice-typeahead-panel nice-typeahead--open nice-typehead-animations-enabled\"\n [ngClass]=\"panelClass()\"\n [attr.id]=\"id + '-panel'\"\n (keydown)=\"_handleKeydown($event)\"\n (scrollend)=\"_handleScrollEnd()\"\n >\n <div class=\"nice-typeahead-search-input\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input\n #input\n class=\"nice-typeahead__input\"\n matInput\n [formControl]=\"_searchControl\"\n >\n\n <nice-typeahead-search-icon matIconPrefix />\n </mat-form-field>\n </div>\n\n <div #optionsContainer class=\"nice-typeahead-options\" role=\"presentation\">\n @for (item of filteredValues(); track item) {\n <mat-option [value]=\"item\">\n @if (optionTemplate(); as optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: item }\"></ng-container>\n } @else {\n {{ formatLabel(item) }}\n }\n </mat-option>\n } @empty {\n <mat-option disabled>\n <span class=\"nice-typeahead__no-items\">\n {{ noItemsFoundLabel() }}\n </span>\n </mat-option>\n }\n </div>\n </div>\n</ng-template>\n", styles: ["nice-typeahead,nice-async-typeahead{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-app-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-app-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-app-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-app-body-large-tracking))}nice-typeahead.nice-typeahead-disabled,nice-async-typeahead.nice-typeahead-disabled{color:var(--mat-select-disabled-trigger-text-color)}nice-typeahead.nice-typeahead-disabled .mat-mdc-select-arrow,nice-typeahead.nice-typeahead-disabled .nice-typeahead-remove,nice-async-typeahead.nice-typeahead-disabled .mat-mdc-select-arrow,nice-async-typeahead.nice-typeahead-disabled .nice-typeahead-remove{color:var(--mat-select-disabled-trigger-text-color)}nice-typeahead.nice-typeahead-invalid .mat-mdc-select-arrow,nice-async-typeahead.nice-typeahead-invalid .mat-mdc-select-arrow{color:var(--mat-select-invalid-arrow-color)}nice-typeahead .nice-typeahead,nice-async-typeahead .nice-typeahead{width:100%;display:inline-flex;align-items:center;justify-content:space-between;cursor:pointer;position:relative;box-sizing:border-box}nice-typeahead .nice-typeahead-suffix,nice-async-typeahead .nice-typeahead-suffix{height:24px;flex-shrink:0;display:inline-flex;align-items:center;--mdc-icon-button-state-layer-size: 24px}nice-typeahead .nice-typeahead-suffix .nice-typeahead-remove,nice-async-typeahead .nice-typeahead-suffix .nice-typeahead-remove{margin-right:-6px}nice-typeahead .nice-typeahead-value,nice-async-typeahead .nice-typeahead-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nice-typeahead .nice-typeahead-value-text,nice-async-typeahead .nice-typeahead-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}nice-typeahead .mat-mdc-select-min-line:empty:before,nice-async-typeahead .mat-mdc-select-min-line:empty:before{content:\" \";white-space:pre;width:1px;display:inline-block;visibility:hidden}nice-typeahead .nice-typeahead__input,nice-async-typeahead .nice-typeahead__input{border:none;outline:none;box-shadow:none;background:none;padding:0;margin:0;color:inherit}.mat-mdc-form-field-type-nice-typeahead:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-nice-typeahead.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}@keyframes _nice-typeahead-enter{0%{opacity:0;transform:scaleY(.8)}to{opacity:1;transform:none}}@keyframes _nice-typeahead-exit{0%{opacity:1}to{opacity:0}}div.nice-typeahead-panel{width:100%;outline:0;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color, var(--mat-app-surface-container))}div.nice-typeahead-panel nice-typeahead-search-icon{width:16px;height:16px;margin-right:8px;margin-left:16px}div.nice-typeahead-panel nice-typeahead-search-icon svg{width:16px;height:16px}div.nice-typeahead-panel .nice-typeahead-search-input{padding-left:8px;padding-right:8px;padding-bottom:8px}div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field,div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field-infix{width:100%}div.nice-typeahead-panel .nice-typeahead-options{overflow:auto;max-height:384px}div.nice-typeahead-panel{box-shadow:var(--mat-select-container-elevation-shadow)}.nice-typehead-animations-enabled{animation:_nice-typeahead-enter .12s cubic-bezier(0,0,.2,1)}.nice-typehead-animations-enabled.mat-select-panel-exit{animation:_nice-typeahead-exit .1s linear}\n"], dependencies: [{ kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: 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: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NiceTypeaheadSearchIcon, selector: "nice-typeahead-search-icon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
893
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: NiceTypeahead, deps: null, target: i0.ɵɵFactoryTarget.Component });
894
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.5", type: NiceTypeahead, isStandalone: true, selector: "nice-typeahead", inputs: { values: { classPropertyName: "values", publicName: "values", isSignal: true, isRequired: true, transformFunction: null }, searchFn: { classPropertyName: "searchFn", publicName: "searchFn", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "combobox", "aria-haspopup": "listbox" }, listeners: { "keydown": "_handleKeydown($event)", "focus": "onFocusChanged(true)", "blur": "onFocusChanged(false)" }, properties: { "attr.id": "id", "attr.aria-controls": "panelOpen ? id + \"-panel\" : null", "attr.aria-expanded": "panelOpen", "attr.aria-required": "required.toString()", "attr.aria-disabled": "disabled.toString()", "attr.aria-invalid": "errorState", "class.nice-typeahead-disabled": "disabled", "class.nice-typeahead-invalid": "errorState", "class.nice-typeahead-required": "required", "class.nice-typeahead-empty": "empty" }, classAttribute: "nice-typeahead" }, providers: [{ provide: MatFormFieldControl, useExisting: NiceTypeahead }], usesInheritance: true, ngImport: i0, template: "<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n class=\"nice-typeahead\"\n cdk-overlay-origin\n>\n <div class=\"nice-typeahead-value\">\n @if (_empty()) {\n <span class=\"nice-typeahead-placeholder mat-mdc-select-min-line\">{{ _placeholder() }}</span>\n } @else {\n <span class=\"nice-typeahead-value-text\">\n <span class=\"mat-mdc-select-min-line\">\n @if (_value(); as activeValue) {\n {{ formatLabel(activeValue) }}\n }\n </span>\n </span>\n }\n </div>\n\n <div class=\"nice-typeahead-suffix\">\n @if (_empty()) {\n <div class=\"mat-mdc-select-arrow\">\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </div>\n } @else if (canRemoveValue()) {\n <button class=\"nice-typeahead-remove\" mat-icon-button (click)=\"$event.stopPropagation(); removeActiveValue()\">\n <svg viewBox=\"0 -960 960 960\">\n <path d=\"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z\"/>\n </svg>\n </button>\n }\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n (attach)=\"_onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"nice-typeahead-panel nice-typeahead--open nice-typehead-animations-enabled\"\n [ngClass]=\"panelClass()\"\n [attr.id]=\"id + '-panel'\"\n (keydown)=\"_handleKeydown($event)\"\n (scrollend)=\"_handleScrollEnd()\"\n >\n <div class=\"nice-typeahead-search-input\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input\n #input\n class=\"nice-typeahead__input\"\n matInput\n [formControl]=\"_searchControl\"\n >\n\n <nice-typeahead-search-icon matIconPrefix />\n </mat-form-field>\n </div>\n\n <div #optionsContainer class=\"nice-typeahead-options\" role=\"presentation\">\n @for (item of filteredValues(); track item) {\n <mat-option [value]=\"item\">\n @if (optionTemplate(); as optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: item }\"></ng-container>\n } @else {\n {{ formatLabel(item) }}\n }\n </mat-option>\n } @empty {\n <mat-option disabled>\n <span class=\"nice-typeahead__no-items\">\n {{ noItemsFoundLabel() }}\n </span>\n </mat-option>\n }\n </div>\n </div>\n</ng-template>\n", styles: ["nice-typeahead,nice-async-typeahead{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-app-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-app-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-app-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-app-body-large-tracking))}nice-typeahead.nice-typeahead-disabled,nice-async-typeahead.nice-typeahead-disabled{color:var(--mat-select-disabled-trigger-text-color)}nice-typeahead.nice-typeahead-disabled .mat-mdc-select-arrow,nice-typeahead.nice-typeahead-disabled .nice-typeahead-remove,nice-async-typeahead.nice-typeahead-disabled .mat-mdc-select-arrow,nice-async-typeahead.nice-typeahead-disabled .nice-typeahead-remove{color:var(--mat-select-disabled-trigger-text-color)}nice-typeahead.nice-typeahead-invalid .mat-mdc-select-arrow,nice-async-typeahead.nice-typeahead-invalid .mat-mdc-select-arrow{color:var(--mat-select-invalid-arrow-color)}nice-typeahead .nice-typeahead,nice-async-typeahead .nice-typeahead{width:100%;display:inline-flex;align-items:center;justify-content:space-between;cursor:pointer;position:relative;box-sizing:border-box}nice-typeahead .nice-typeahead-suffix,nice-async-typeahead .nice-typeahead-suffix{height:24px;flex-shrink:0;display:inline-flex;align-items:center;--mdc-icon-button-state-layer-size: 24px}nice-typeahead .nice-typeahead-suffix .nice-typeahead-remove,nice-async-typeahead .nice-typeahead-suffix .nice-typeahead-remove{margin-right:-6px}nice-typeahead .nice-typeahead-value,nice-async-typeahead .nice-typeahead-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nice-typeahead .nice-typeahead-value-text,nice-async-typeahead .nice-typeahead-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}nice-typeahead .mat-mdc-select-min-line:empty:before,nice-async-typeahead .mat-mdc-select-min-line:empty:before{content:\" \";white-space:pre;width:1px;display:inline-block;visibility:hidden}nice-typeahead .nice-typeahead__input,nice-async-typeahead .nice-typeahead__input{border:none;outline:none;box-shadow:none;background:none;padding:0;margin:0;color:inherit}.mat-mdc-form-field-type-nice-typeahead:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-nice-typeahead.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}@keyframes _nice-typeahead-enter{0%{opacity:0;transform:scaleY(.8)}to{opacity:1;transform:none}}@keyframes _nice-typeahead-exit{0%{opacity:1}to{opacity:0}}div.nice-typeahead-panel{width:100%;outline:0;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color, var(--mat-app-surface-container))}div.nice-typeahead-panel nice-typeahead-search-icon{width:16px;height:16px;margin-right:8px;margin-left:16px}div.nice-typeahead-panel nice-typeahead-search-icon svg{width:16px;height:16px}div.nice-typeahead-panel .nice-typeahead-search-input{padding-left:8px;padding-right:8px;padding-bottom:8px}div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field,div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field-infix{width:100%}div.nice-typeahead-panel .nice-typeahead-options{overflow:auto;max-height:384px}div.nice-typeahead-panel{box-shadow:var(--mat-select-container-elevation-shadow)}.nice-typehead-animations-enabled{animation:_nice-typeahead-enter .12s cubic-bezier(0,0,.2,1)}.nice-typehead-animations-enabled.mat-select-panel-exit{animation:_nice-typeahead-exit .1s linear}\n"], dependencies: [{ kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation", "cdkConnectedOverlayUsePopover", "cdkConnectedOverlayMatchWidth", "cdkConnectedOverlay"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: 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: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NiceTypeaheadSearchIcon, selector: "nice-typeahead-search-icon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
895
895
  }
896
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceTypeahead, decorators: [{
896
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: NiceTypeahead, decorators: [{
897
897
  type: Component,
898
898
  args: [{ selector: "nice-typeahead", imports: [
899
899
  CdkOverlayOrigin,
@@ -925,7 +925,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
925
925
  "(focus)": "onFocusChanged(true)",
926
926
  "(blur)": "onFocusChanged(false)"
927
927
  }, template: "<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n class=\"nice-typeahead\"\n cdk-overlay-origin\n>\n <div class=\"nice-typeahead-value\">\n @if (_empty()) {\n <span class=\"nice-typeahead-placeholder mat-mdc-select-min-line\">{{ _placeholder() }}</span>\n } @else {\n <span class=\"nice-typeahead-value-text\">\n <span class=\"mat-mdc-select-min-line\">\n @if (_value(); as activeValue) {\n {{ formatLabel(activeValue) }}\n }\n </span>\n </span>\n }\n </div>\n\n <div class=\"nice-typeahead-suffix\">\n @if (_empty()) {\n <div class=\"mat-mdc-select-arrow\">\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </div>\n } @else if (canRemoveValue()) {\n <button class=\"nice-typeahead-remove\" mat-icon-button (click)=\"$event.stopPropagation(); removeActiveValue()\">\n <svg viewBox=\"0 -960 960 960\">\n <path d=\"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z\"/>\n </svg>\n </button>\n }\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n (attach)=\"_onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"nice-typeahead-panel nice-typeahead--open nice-typehead-animations-enabled\"\n [ngClass]=\"panelClass()\"\n [attr.id]=\"id + '-panel'\"\n (keydown)=\"_handleKeydown($event)\"\n (scrollend)=\"_handleScrollEnd()\"\n >\n <div class=\"nice-typeahead-search-input\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input\n #input\n class=\"nice-typeahead__input\"\n matInput\n [formControl]=\"_searchControl\"\n >\n\n <nice-typeahead-search-icon matIconPrefix />\n </mat-form-field>\n </div>\n\n <div #optionsContainer class=\"nice-typeahead-options\" role=\"presentation\">\n @for (item of filteredValues(); track item) {\n <mat-option [value]=\"item\">\n @if (optionTemplate(); as optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: item }\"></ng-container>\n } @else {\n {{ formatLabel(item) }}\n }\n </mat-option>\n } @empty {\n <mat-option disabled>\n <span class=\"nice-typeahead__no-items\">\n {{ noItemsFoundLabel() }}\n </span>\n </mat-option>\n }\n </div>\n </div>\n</ng-template>\n", styles: ["nice-typeahead,nice-async-typeahead{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-app-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-app-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-app-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-app-body-large-tracking))}nice-typeahead.nice-typeahead-disabled,nice-async-typeahead.nice-typeahead-disabled{color:var(--mat-select-disabled-trigger-text-color)}nice-typeahead.nice-typeahead-disabled .mat-mdc-select-arrow,nice-typeahead.nice-typeahead-disabled .nice-typeahead-remove,nice-async-typeahead.nice-typeahead-disabled .mat-mdc-select-arrow,nice-async-typeahead.nice-typeahead-disabled .nice-typeahead-remove{color:var(--mat-select-disabled-trigger-text-color)}nice-typeahead.nice-typeahead-invalid .mat-mdc-select-arrow,nice-async-typeahead.nice-typeahead-invalid .mat-mdc-select-arrow{color:var(--mat-select-invalid-arrow-color)}nice-typeahead .nice-typeahead,nice-async-typeahead .nice-typeahead{width:100%;display:inline-flex;align-items:center;justify-content:space-between;cursor:pointer;position:relative;box-sizing:border-box}nice-typeahead .nice-typeahead-suffix,nice-async-typeahead .nice-typeahead-suffix{height:24px;flex-shrink:0;display:inline-flex;align-items:center;--mdc-icon-button-state-layer-size: 24px}nice-typeahead .nice-typeahead-suffix .nice-typeahead-remove,nice-async-typeahead .nice-typeahead-suffix .nice-typeahead-remove{margin-right:-6px}nice-typeahead .nice-typeahead-value,nice-async-typeahead .nice-typeahead-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nice-typeahead .nice-typeahead-value-text,nice-async-typeahead .nice-typeahead-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}nice-typeahead .mat-mdc-select-min-line:empty:before,nice-async-typeahead .mat-mdc-select-min-line:empty:before{content:\" \";white-space:pre;width:1px;display:inline-block;visibility:hidden}nice-typeahead .nice-typeahead__input,nice-async-typeahead .nice-typeahead__input{border:none;outline:none;box-shadow:none;background:none;padding:0;margin:0;color:inherit}.mat-mdc-form-field-type-nice-typeahead:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-nice-typeahead.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}@keyframes _nice-typeahead-enter{0%{opacity:0;transform:scaleY(.8)}to{opacity:1;transform:none}}@keyframes _nice-typeahead-exit{0%{opacity:1}to{opacity:0}}div.nice-typeahead-panel{width:100%;outline:0;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color, var(--mat-app-surface-container))}div.nice-typeahead-panel nice-typeahead-search-icon{width:16px;height:16px;margin-right:8px;margin-left:16px}div.nice-typeahead-panel nice-typeahead-search-icon svg{width:16px;height:16px}div.nice-typeahead-panel .nice-typeahead-search-input{padding-left:8px;padding-right:8px;padding-bottom:8px}div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field,div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field-infix{width:100%}div.nice-typeahead-panel .nice-typeahead-options{overflow:auto;max-height:384px}div.nice-typeahead-panel{box-shadow:var(--mat-select-container-elevation-shadow)}.nice-typehead-animations-enabled{animation:_nice-typeahead-enter .12s cubic-bezier(0,0,.2,1)}.nice-typehead-animations-enabled.mat-select-panel-exit{animation:_nice-typeahead-exit .1s linear}\n"] }]
928
- }] });
928
+ }], propDecorators: { values: [{ type: i0.Input, args: [{ isSignal: true, alias: "values", required: true }] }], searchFn: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchFn", required: false }] }] } });
929
929
 
930
930
  /**
931
931
  * Generated bundle index. Do not edit.