@sumaris-net/ngx-components 18.18.9 → 18.18.10

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 (81) hide show
  1. package/esm2022/public_api.mjs +5 -4
  2. package/esm2022/src/app/core/core.testing.module.mjs +15 -1
  3. package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +13 -9
  4. package/esm2022/src/app/{shared/material → core/form}/text/testing/text-form.testing.mjs +4 -4
  5. package/esm2022/src/app/core/form/text/testing/text-form.testing.module.mjs +25 -0
  6. package/esm2022/src/app/core/form/text/text-form.component.mjs +205 -0
  7. package/esm2022/src/app/core/form/text/text-form.module.mjs +31 -0
  8. package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +4 -12
  9. package/esm2022/src/app/core/form/text-popover/text-popover.component.mjs +4 -4
  10. package/esm2022/src/app/core/form/text-popover/text-popover.module.mjs +5 -4
  11. package/esm2022/src/app/core/services/base-entity-service.class.mjs +1 -1
  12. package/esm2022/src/app/core/table/column/row-field.component.mjs +1 -1
  13. package/esm2022/src/app/shared/file/csv.utils.mjs +1 -1
  14. package/esm2022/src/app/shared/form/field.component.mjs +1 -1
  15. package/esm2022/src/app/shared/form/field.model.mjs +1 -1
  16. package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +1 -1
  17. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.config.mjs +1 -1
  18. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +1 -1
  19. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.utils.mjs +1 -1
  20. package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +1 -1
  21. package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +1 -1
  22. package/esm2022/src/app/shared/material/chips/material.chips.mjs +1 -1
  23. package/esm2022/src/app/shared/material/datetime/material.date.mjs +1 -1
  24. package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +1 -1
  25. package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +1 -1
  26. package/esm2022/src/app/shared/material/duration/material.duration.mjs +1 -1
  27. package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +1 -1
  28. package/esm2022/src/app/shared/material/material.module.mjs +4 -9
  29. package/esm2022/src/app/shared/material/material.testing.module.mjs +1 -12
  30. package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +1 -1
  31. package/esm2022/src/app/shared/material/swipe/testing/swipe.test.mjs +1 -1
  32. package/esm2022/src/app/shared/pipes/string.pipes.mjs +1 -1
  33. package/esm2022/src/app/shared/pipes/types.pipes.mjs +1 -1
  34. package/esm2022/src/app/shared/services/entity-service.class.mjs +1 -1
  35. package/esm2022/src/app/shared/types.mjs +1 -1
  36. package/esm2022/src/app/social/user-event/testing/user-event.testing.service.mjs +1 -1
  37. package/esm2022/src/app/social/user-event/user-event.service.mjs +1 -1
  38. package/esm2022/src/environments/environment.class.mjs +1 -1
  39. package/fesm2022/sumaris-net.ngx-components.mjs +4302 -4318
  40. package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
  41. package/package.json +1 -1
  42. package/public_api.d.ts +4 -3
  43. package/src/app/core/core.testing.module.d.ts +5 -4
  44. package/src/app/core/form/entity/entity-editor.class.d.ts +12 -12
  45. package/src/app/core/form/text/testing/text-form.testing.module.d.ts +14 -0
  46. package/src/app/{shared/material → core/form}/text/text-form.component.d.ts +2 -2
  47. package/src/app/core/form/text/text-form.module.d.ts +9 -0
  48. package/src/app/core/form/text-popover/testing/text-popover.testing.module.d.ts +1 -1
  49. package/src/app/core/form/text-popover/text-popover.component.d.ts +1 -1
  50. package/src/app/core/form/text-popover/text-popover.module.d.ts +3 -2
  51. package/src/app/core/services/base-entity-service.class.d.ts +11 -19
  52. package/src/app/core/table/column/row-field.component.d.ts +2 -1
  53. package/src/app/shared/file/csv.utils.d.ts +1 -1
  54. package/src/app/shared/form/field.component.d.ts +2 -2
  55. package/src/app/shared/form/field.model.d.ts +1 -6
  56. package/src/app/shared/material/autocomplete/material.autocomplete.config.d.ts +1 -1
  57. package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +1 -1
  58. package/src/app/shared/material/autocomplete/material.autocomplete.utils.d.ts +1 -1
  59. package/src/app/shared/material/boolean/material.boolean.d.ts +1 -1
  60. package/src/app/shared/material/boolean/testing/boolean.test.page.d.ts +1 -1
  61. package/src/app/shared/material/chips/material.chips.d.ts +1 -1
  62. package/src/app/shared/material/datetime/material.date.d.ts +1 -1
  63. package/src/app/shared/material/datetime/material.dateshort.d.ts +1 -1
  64. package/src/app/shared/material/datetime/material.datetime.d.ts +1 -1
  65. package/src/app/shared/material/duration/material.duration.d.ts +1 -1
  66. package/src/app/shared/material/latlong/material.latlong.d.ts +1 -1
  67. package/src/app/shared/material/material.module.d.ts +1 -2
  68. package/src/app/shared/material/material.testing.module.d.ts +16 -17
  69. package/src/app/shared/material/swipe/material.swipe.d.ts +1 -1
  70. package/src/app/shared/material/swipe/testing/swipe.test.d.ts +1 -1
  71. package/src/app/shared/pipes/string.pipes.d.ts +1 -2
  72. package/src/app/shared/pipes/types.pipes.d.ts +1 -1
  73. package/src/app/shared/services/entity-service.class.d.ts +21 -4
  74. package/src/app/shared/types.d.ts +5 -0
  75. package/src/app/social/user-event/testing/user-event.testing.service.d.ts +2 -3
  76. package/src/app/social/user-event/user-event.service.d.ts +5 -5
  77. package/src/assets/manifest.json +1 -1
  78. package/esm2022/src/app/shared/material/text/text-form.component.mjs +0 -205
  79. package/esm2022/src/app/shared/material/text/text-form.module.mjs +0 -63
  80. package/src/app/shared/material/text/text-form.module.d.ts +0 -16
  81. /package/src/app/{shared/material → core/form}/text/testing/text-form.testing.d.ts +0 -0
@@ -1,7 +1,8 @@
1
1
  import { Observable } from 'rxjs';
2
- import { FetchPolicy, WatchQueryFetchPolicy } from '@apollo/client/core';
2
+ import { ApolloCache, FetchPolicy, InternalRefetchQueriesInclude, MutationUpdaterFn, MutationUpdaterFunction, WatchQueryFetchPolicy } from '@apollo/client/core';
3
3
  import { SortDirection } from '@angular/material/sort';
4
4
  import { EmptyObject } from '../../core/graphql/graphql.utils';
5
+ import { FetchResult } from '@apollo/client/link/core';
5
6
  export declare interface Page {
6
7
  offset: number;
7
8
  size: number;
@@ -32,6 +33,9 @@ export declare interface EntityServiceLoadOptions<E = any> {
32
33
  variables?: any;
33
34
  [key: string]: any;
34
35
  }
36
+ export declare interface EntityServiceDeleteOptions<E = any> {
37
+ [key: string]: any;
38
+ }
35
39
  export declare interface EntityServiceWatchOptions<T = any> {
36
40
  fetchPolicy?: WatchQueryFetchPolicy;
37
41
  trash?: boolean;
@@ -48,11 +52,24 @@ export declare interface EntityServiceListenChangesOptions<T = any> {
48
52
  variables?: any;
49
53
  [key: string]: any;
50
54
  }
51
- export declare interface IEntityService<T, ID = any, LO = EntityServiceLoadOptions<T>> {
55
+ export interface EntityServiceSaveOptions<T = any, V = any> {
56
+ refetchQueries?: ((result: FetchResult<{
57
+ data: T;
58
+ }>) => InternalRefetchQueriesInclude) | InternalRefetchQueriesInclude;
59
+ awaitRefetchQueries?: boolean;
60
+ update?: MutationUpdaterFn<{
61
+ data: any;
62
+ }> | MutationUpdaterFunction<{
63
+ data: any;
64
+ }, V, any, ApolloCache<{
65
+ data: any;
66
+ }>>;
67
+ }
68
+ export declare interface IEntityService<T, ID = any, LO = EntityServiceLoadOptions<T>, SO = EntityServiceSaveOptions<T>, DO = EntityServiceDeleteOptions<T>> {
52
69
  load(id: ID, opts?: LO): Promise<T>;
53
70
  canUserWrite(data: T, opts?: any): boolean;
54
- save(data: T, opts?: any): Promise<T>;
55
- delete(data: T, opts?: any): Promise<any>;
71
+ save(data: T, opts?: SO): Promise<T>;
72
+ delete(data: T, opts?: DO): Promise<any>;
56
73
  listenChanges(id: ID, opts?: any): Observable<T | undefined>;
57
74
  }
58
75
  export declare interface EntitiesServiceLoadOptions<T = any> extends EntityServiceLoadOptions<T> {
@@ -1,6 +1,7 @@
1
1
  import { ThemePalette } from '@angular/material/core';
2
2
  import { PredefinedColors } from '@ionic/core';
3
3
  import { Predicate } from '@angular/core';
4
+ import { FloatLabelType } from "@angular/material/form-field";
4
5
  export declare type KeyType = string | number;
5
6
  export declare type KeyValueType<T> = {
6
7
  [key in KeyType]: T;
@@ -38,3 +39,7 @@ export declare type BiFunction<P1, P2, R> = (v1: P1, v2: P2) => R;
38
39
  * @deprecated Use SimpleFunction instead
39
40
  */
40
41
  export declare type Function<P, R> = SimpleFunction<P, R>;
42
+ export declare type DisplayFn = (obj: any) => string;
43
+ export declare type EqualsFn = (o1: any, o2: any) => boolean;
44
+ export declare type CompareFn = (o1: any, o2: any) => number;
45
+ export declare type AppFloatLabelType = FloatLabelType | 'never';
@@ -6,10 +6,9 @@ import { NetworkService } from '../../../core/services/network.service';
6
6
  import { TranslateService } from '@ngx-translate/core';
7
7
  import { Environment } from '../../../../environments/environment.class';
8
8
  import { FetchPolicy } from '@apollo/client/core';
9
- import { LoadResult } from '../../../shared/services/entity-service.class';
9
+ import { EntityServiceSaveOptions, LoadResult } from '../../../shared/services/entity-service.class';
10
10
  import { SortDirection } from '@angular/material/sort';
11
11
  import { UserEventTest, UserEventTestFilter } from './user-event.testing.model';
12
- import { EntitySaveOptions } from '../../../core/services/base-entity-service.class';
13
12
  import * as i0 from "@angular/core";
14
13
  export declare class UserEventTestService extends AbstractUserEventService<UserEventTest, UserEventTestFilter> {
15
14
  protected graphql: GraphqlService;
@@ -32,7 +31,7 @@ export declare class UserEventTestService extends AbstractUserEventService<UserE
32
31
  listenAllChanges(filter: any, options?: UserEventLoadOptions<UserEventTest> & {
33
32
  interval?: number;
34
33
  }): Observable<any[]>;
35
- save(entity: any, options?: EntitySaveOptions<UserEventTest>): Promise<any>;
34
+ save(entity: any, options?: EntityServiceSaveOptions<UserEventTest>): Promise<any>;
36
35
  saveAll(data: any[], opts?: any): Promise<any[]>;
37
36
  protected defaultRecipient(): any;
38
37
  watchAll(offset: number, size: number, sortBy?: string, sortDirection?: SortDirection, filter?: Partial<any>, opts?: UserEventWatchOptions<UserEventTest>): Observable<LoadResult<any>>;
@@ -5,14 +5,14 @@ import { GraphqlService } from '../../core/graphql/graphql.service';
5
5
  import { BehaviorSubject, Observable } from 'rxjs';
6
6
  import { IUserEvent, IUserEventFilter } from './user-event.model';
7
7
  import { SortDirection } from '@angular/material/sort';
8
- import { EntitiesServiceLoadOptions, EntitiesServiceWatchOptions, IEntitiesService, LoadResult, Page } from '../../shared/services/entity-service.class';
8
+ import { EntitiesServiceLoadOptions, EntitiesServiceWatchOptions, EntityServiceSaveOptions, IEntitiesService, LoadResult, Page } from '../../shared/services/entity-service.class';
9
9
  import { TranslateService } from '@ngx-translate/core';
10
10
  import { NetworkService } from '../../core/services/network.service';
11
11
  import { BaseGraphqlService, BaseGraphqlServiceOptions } from '../../core/services/base-graphql-service.class';
12
12
  import { Moment } from 'moment';
13
13
  import { IStartableService } from '../../shared/services/startable-service.class';
14
14
  import { DocumentNode } from 'graphql/index';
15
- import { EntitySaveOptions, MutableWatchQueriesUpdatePolicy } from '../../core/services/base-entity-service.class';
15
+ import { MutableWatchQueriesUpdatePolicy } from '../../core/services/base-entity-service.class';
16
16
  import * as i0 from "@angular/core";
17
17
  export declare const APP_USER_EVENT_SERVICE: InjectionToken<IUserEventService<any, any, number, UserEventWatchOptions<any>, UserEventLoadOptions<any>>>;
18
18
  export declare interface UserEventLoadOptions<T> extends EntitiesServiceLoadOptions<T> {
@@ -59,7 +59,7 @@ export interface IUserEventService<E extends IUserEvent<E, ID>, F extends IUserE
59
59
  listenAllChanges(filter: Partial<F>, options?: LO & {
60
60
  interval?: number;
61
61
  }): Observable<E[]>;
62
- save(entity: E, options?: EntitySaveOptions<E>): Promise<E>;
62
+ save(entity: E, options?: EntityServiceSaveOptions<E>): Promise<E>;
63
63
  delete(entity: E): Promise<any>;
64
64
  markAllAsRead(entities: E[]): any;
65
65
  registerListener(listener: IUserEventListener<E, ID>): any;
@@ -102,8 +102,8 @@ export declare abstract class AbstractUserEventService<E extends IUserEvent<E, I
102
102
  }): Observable<E[]>;
103
103
  delete(entity: E): Promise<any>;
104
104
  deleteAll(entities: E[], opts?: any): Promise<any>;
105
- save(entity: E, opts?: EntitySaveOptions<E>): Promise<E>;
106
- saveAll(entities: E[], opts?: EntitySaveOptions<E>): Promise<E[]>;
105
+ save(entity: E, opts?: EntityServiceSaveOptions<E>): Promise<E>;
106
+ saveAll(entities: E[], opts?: EntityServiceSaveOptions<E>): Promise<E[]>;
107
107
  markAllAsRead(entities: E[]): Promise<void>;
108
108
  registerListener(listener: IUserEventListener<E, ID>): void;
109
109
  resetCount(): void;
@@ -2,7 +2,7 @@
2
2
  "name": "ngx-sumaris-components",
3
3
  "short_name": "ngx-sumaris-components",
4
4
  "manifest_version": 1,
5
- "version": "18.18.9",
5
+ "version": "18.18.10",
6
6
  "default_locale": "fr",
7
7
  "description": "Angular components for building beautiful and responsive Apps",
8
8
  "icons": [{
@@ -1,205 +0,0 @@
1
- import { booleanAttribute, ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Input, numberAttribute, Optional, Output, ViewChild, } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR, Validators, } from '@angular/forms';
3
- import { CdkTextareaAutosize } from '@angular/cdk/text-field';
4
- import { AppForm } from '../../../core/form/form.class';
5
- import { isNotNil } from '../../functions';
6
- import { focusInput } from '../../inputs';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/forms";
9
- import * as i2 from "@angular/common";
10
- import * as i3 from "@angular/material/form-field";
11
- import * as i4 from "@angular/material/input";
12
- import * as i5 from "@angular/cdk/text-field";
13
- import * as i6 from "../../directives/autofocus.directive";
14
- import * as i7 from "../../directives/autoresize.directive";
15
- import * as i8 from "@ngx-translate/core";
16
- import * as i9 from "../../pipes/types.pipes";
17
- const noop = () => { };
18
- export class TextForm extends AppForm {
19
- injector;
20
- cd;
21
- formBuilder;
22
- formGroupDir;
23
- showError = true;
24
- placeholder;
25
- multiline = true;
26
- autoSize = false;
27
- autoSizeMinRows;
28
- autoSizeMaxRows;
29
- maxLength = 2000;
30
- autofocus = false;
31
- validator = null;
32
- standalone = false;
33
- formControl;
34
- formControlName;
35
- floatLabel = 'auto';
36
- appearance;
37
- subscriptSizing;
38
- /**
39
- * @deprecated Use autoSize instead
40
- */
41
- set autoHeight(value) {
42
- this.autoSize = value;
43
- }
44
- get autoHeight() {
45
- return this.autoSize;
46
- }
47
- textAreaChanges = new EventEmitter();
48
- textArea;
49
- textInput;
50
- autosizeDirective;
51
- textControl;
52
- _onChangeCallback = noop;
53
- _onTouchedCallback = noop;
54
- constructor(injector, cd, formBuilder, formGroupDir) {
55
- super(injector);
56
- this.injector = injector;
57
- this.cd = cd;
58
- this.formBuilder = formBuilder;
59
- this.formGroupDir = formGroupDir;
60
- }
61
- ngOnInit() {
62
- if (!this.standalone) {
63
- this.formControl =
64
- this.formControl || (this.formControlName && this.formGroupDir && this.formGroupDir.form.get(this.formControlName));
65
- if (!this.formControl)
66
- throw new Error("Missing mandatory attribute 'formControl' or 'formControlName' in <mat-date-field>.");
67
- }
68
- // Compute validators
69
- const validators = isNotNil(this.maxLength) && this.maxLength > 0 ? [Validators.maxLength(this.maxLength)] : [];
70
- if (this.validator)
71
- validators.push(this.validator);
72
- // Create the form
73
- const form = this.formBuilder.group({
74
- text: [null, validators.length ? Validators.compose(validators) : null],
75
- });
76
- this.setForm(form);
77
- this.textControl = form.get('text');
78
- this.registerSubscription(this.textControl.valueChanges.subscribe((value) => {
79
- if (this.standalone) {
80
- this.textAreaChanges.emit(value);
81
- }
82
- else {
83
- this.textFormValueChanged(value);
84
- }
85
- }));
86
- super.ngOnInit();
87
- }
88
- containerResize() {
89
- this.autosizeDirective?.resizeToFitContent(true);
90
- }
91
- focusInput() {
92
- if (this.textArea)
93
- focusInput(this.textArea);
94
- if (this.textInput)
95
- focusInput(this.textInput);
96
- }
97
- registerOnChange(fn) {
98
- this._onChangeCallback = fn;
99
- }
100
- registerOnTouched(fn) {
101
- this._onTouchedCallback = fn;
102
- }
103
- setDisabledState(isDisabled) {
104
- if (isDisabled) {
105
- this.textControl.disable({ emitEvent: false });
106
- }
107
- else {
108
- this.textControl.enable({ emitEvent: false });
109
- }
110
- this.markForCheck();
111
- }
112
- writeValue(value) {
113
- this.textControl.patchValue(value);
114
- }
115
- markForCheck() {
116
- this.cd.markForCheck();
117
- }
118
- checkIfTouched(opts) {
119
- if (this.textControl.touched) {
120
- this._onTouchedCallback();
121
- if (!opts || opts.emitEvent !== false) {
122
- this.markForCheck();
123
- }
124
- }
125
- }
126
- textFormValueChanged(value) {
127
- if (this.formControl.value !== value) {
128
- this._onChangeCallback(value);
129
- this.checkIfTouched();
130
- }
131
- }
132
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextForm, deps: [{ token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: i1.UntypedFormBuilder }, { token: i1.FormGroupDirective, optional: true }], target: i0.ɵɵFactoryTarget.Component });
133
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: TextForm, selector: "app-text-form", inputs: { showError: ["showError", "showError", booleanAttribute], placeholder: "placeholder", multiline: ["multiline", "multiline", booleanAttribute], autoSize: ["autoSize", "autoSize", booleanAttribute], autoSizeMinRows: ["autoSizeMinRows", "autoSizeMinRows", numberAttribute], autoSizeMaxRows: ["autoSizeMaxRows", "autoSizeMaxRows", numberAttribute], maxLength: ["maxLength", "maxLength", numberAttribute], autofocus: ["autofocus", "autofocus", booleanAttribute], validator: "validator", standalone: ["standalone", "standalone", booleanAttribute], formControl: "formControl", formControlName: "formControlName", floatLabel: "floatLabel", appearance: "appearance", subscriptSizing: "subscriptSizing", autoHeight: ["autoHeight", "autoHeight", booleanAttribute] }, outputs: { textAreaChanges: "textAreaChanges" }, providers: [
134
- {
135
- provide: NG_VALUE_ACCESSOR,
136
- useExisting: forwardRef(() => TextForm),
137
- multi: true,
138
- },
139
- ], viewQueries: [{ propertyName: "textArea", first: true, predicate: ["textArea"], descendants: true }, { propertyName: "textInput", first: true, predicate: ["textInput"], descendants: true }, { propertyName: "autosizeDirective", first: true, predicate: CdkTextareaAutosize, descendants: true }], usesInheritance: true, ngImport: i0, template: "<form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"onSubmit.emit($event)\">\n @if (multiline) {\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n >\n @if (floatLabel !== 'never' && !!placeholder) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n <textarea\n #textArea\n matInput\n [formControl]=\"textControl\"\n [readonly]=\"textControl.disabled\"\n [placeholder]=\"floatLabel === 'never' ? placeholder : null\"\n [class.fixed-height]=\"!autoSize\"\n [cdkTextareaAutosize]=\"autoSize\"\n [cdkAutosizeMinRows]=\"autoSizeMinRows\"\n [cdkAutosizeMaxRows]=\"autoSizeMaxRows\"\n (keydown.control.enter)=\"onSubmit.emit($event)\"\n ></textarea>\n <mat-error *ngIf=\"textControl.hasError('maxlength')\">\n {{ 'ERROR.FIELD_MAX_LENGTH' | translate: textControl.errors['maxlength'] }}\n </mat-error>\n <mat-hint *ngIf=\"maxLength\" align=\"end\">\n {{ 'INFO.TEXT_PROGRESS' | translate: { current: textArea.value?.length || 0, max: maxLength } }}\n </mat-hint>\n </mat-form-field>\n } @else {\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n >\n @if (floatLabel !== 'never' && !!placeholder) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n <input\n #textInput\n matInput\n [formControl]=\"textControl\"\n [readonly]=\"textControl.disabled\"\n [placeholder]=\"floatLabel === 'never' ? placeholder : null\"\n [appAutofocus]=\"autofocus\"\n (keydown.control.enter)=\"onSubmit.emit($event)\"\n />\n <mat-error *ngIf=\"textControl.hasError('maxlength')\">\n {{ 'ERROR.FIELD_MAX_LENGTH' | translate: textControl.errors['maxlength'] }}\n </mat-error>\n <mat-error *ngIf=\"textControl.hasError('pattern')\">\n {{ 'ERROR.FIELD_INVALID' | translate }}\n </mat-error>\n <mat-error *ngIf=\"errorSpan.innerHTML.trim() as error\" [innerHTML]=\"error\"></mat-error>\n <span #errorSpan class=\"cdk-visually-hidden\">\n <ng-content select=\"[matError]\"></ng-content>\n </span>\n <mat-hint *ngIf=\"maxLength\" align=\"end\">\n {{ 'INFO.TEXT_PROGRESS' | translate: { current: textInput.value?.length || 0, max: maxLength } }}\n </mat-hint>\n </mat-form-field>\n }\n</form>\n", styles: ["textarea{--textarea-height: 11.5em;max-height:var(--textarea-height)}textarea.fixed-height{height:var(--textarea-height)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i5.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "directive", type: i6.AutofocusDirective, selector: "[autofocus], input[appAutofocus]", inputs: ["appAutofocus", "autofocusDelay"] }, { kind: "directive", type: i7.AutoResizeDirective, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMaxRows", "cdkAutosizeMinRows"] }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }, { kind: "pipe", type: i9.AsFloatLabelTypePipe, name: "asFloatLabelType" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
140
- }
141
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextForm, decorators: [{
142
- type: Component,
143
- args: [{ selector: 'app-text-form', providers: [
144
- {
145
- provide: NG_VALUE_ACCESSOR,
146
- useExisting: forwardRef(() => TextForm),
147
- multi: true,
148
- },
149
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"onSubmit.emit($event)\">\n @if (multiline) {\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n >\n @if (floatLabel !== 'never' && !!placeholder) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n <textarea\n #textArea\n matInput\n [formControl]=\"textControl\"\n [readonly]=\"textControl.disabled\"\n [placeholder]=\"floatLabel === 'never' ? placeholder : null\"\n [class.fixed-height]=\"!autoSize\"\n [cdkTextareaAutosize]=\"autoSize\"\n [cdkAutosizeMinRows]=\"autoSizeMinRows\"\n [cdkAutosizeMaxRows]=\"autoSizeMaxRows\"\n (keydown.control.enter)=\"onSubmit.emit($event)\"\n ></textarea>\n <mat-error *ngIf=\"textControl.hasError('maxlength')\">\n {{ 'ERROR.FIELD_MAX_LENGTH' | translate: textControl.errors['maxlength'] }}\n </mat-error>\n <mat-hint *ngIf=\"maxLength\" align=\"end\">\n {{ 'INFO.TEXT_PROGRESS' | translate: { current: textArea.value?.length || 0, max: maxLength } }}\n </mat-hint>\n </mat-form-field>\n } @else {\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n >\n @if (floatLabel !== 'never' && !!placeholder) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n <input\n #textInput\n matInput\n [formControl]=\"textControl\"\n [readonly]=\"textControl.disabled\"\n [placeholder]=\"floatLabel === 'never' ? placeholder : null\"\n [appAutofocus]=\"autofocus\"\n (keydown.control.enter)=\"onSubmit.emit($event)\"\n />\n <mat-error *ngIf=\"textControl.hasError('maxlength')\">\n {{ 'ERROR.FIELD_MAX_LENGTH' | translate: textControl.errors['maxlength'] }}\n </mat-error>\n <mat-error *ngIf=\"textControl.hasError('pattern')\">\n {{ 'ERROR.FIELD_INVALID' | translate }}\n </mat-error>\n <mat-error *ngIf=\"errorSpan.innerHTML.trim() as error\" [innerHTML]=\"error\"></mat-error>\n <span #errorSpan class=\"cdk-visually-hidden\">\n <ng-content select=\"[matError]\"></ng-content>\n </span>\n <mat-hint *ngIf=\"maxLength\" align=\"end\">\n {{ 'INFO.TEXT_PROGRESS' | translate: { current: textInput.value?.length || 0, max: maxLength } }}\n </mat-hint>\n </mat-form-field>\n }\n</form>\n", styles: ["textarea{--textarea-height: 11.5em;max-height:var(--textarea-height)}textarea.fixed-height{height:var(--textarea-height)}\n"] }]
150
- }], ctorParameters: () => [{ type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: i1.UntypedFormBuilder }, { type: i1.FormGroupDirective, decorators: [{
151
- type: Optional
152
- }] }], propDecorators: { showError: [{
153
- type: Input,
154
- args: [{ transform: booleanAttribute }]
155
- }], placeholder: [{
156
- type: Input
157
- }], multiline: [{
158
- type: Input,
159
- args: [{ transform: booleanAttribute }]
160
- }], autoSize: [{
161
- type: Input,
162
- args: [{ transform: booleanAttribute }]
163
- }], autoSizeMinRows: [{
164
- type: Input,
165
- args: [{ transform: numberAttribute }]
166
- }], autoSizeMaxRows: [{
167
- type: Input,
168
- args: [{ transform: numberAttribute }]
169
- }], maxLength: [{
170
- type: Input,
171
- args: [{ transform: numberAttribute }]
172
- }], autofocus: [{
173
- type: Input,
174
- args: [{ transform: booleanAttribute }]
175
- }], validator: [{
176
- type: Input
177
- }], standalone: [{
178
- type: Input,
179
- args: [{ transform: booleanAttribute }]
180
- }], formControl: [{
181
- type: Input
182
- }], formControlName: [{
183
- type: Input
184
- }], floatLabel: [{
185
- type: Input
186
- }], appearance: [{
187
- type: Input
188
- }], subscriptSizing: [{
189
- type: Input
190
- }], autoHeight: [{
191
- type: Input,
192
- args: [{ transform: booleanAttribute }]
193
- }], textAreaChanges: [{
194
- type: Output
195
- }], textArea: [{
196
- type: ViewChild,
197
- args: ['textArea']
198
- }], textInput: [{
199
- type: ViewChild,
200
- args: ['textInput']
201
- }], autosizeDirective: [{
202
- type: ViewChild,
203
- args: [CdkTextareaAutosize]
204
- }] } });
205
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL3RleHQvdGV4dC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL3RleHQvdGV4dC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUVWLEtBQUssRUFDTCxlQUFlLEVBRWYsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLGlCQUFpQixFQUlqQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7Ozs7O0FBSTFDLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztBQWV0QixNQUFNLE9BQU8sUUFBUyxTQUFRLE9BQXlCO0lBd0N6QztJQUNBO0lBQ0E7SUFDVTtJQTFDa0IsU0FBUyxHQUFHLElBQUksQ0FBQztJQUNoRCxXQUFXLENBQVM7SUFDVyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBRWpCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDbEIsZUFBZSxDQUFTO0lBQ3hCLGVBQWUsQ0FBUztJQUN4QixTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ2hCLFNBQVMsR0FBRyxLQUFLLENBQUM7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Z0JBQWdCLEVBQUU7Z0JBRUUsUUFBUTtzQkFBL0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDQyxlQUFlO3NCQUFyRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFDRSxlQUFlO3NCQUFyRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFDRSxTQUFTO3NCQUEvQyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFDRyxTQUFTO3NCQUFoRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUM3QixTQUFTO3NCQUFqQixLQUFLO2dCQUNrQyxVQUFVO3NCQUFqRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUM3QixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBS3NDLFVBQVU7c0JBQXJELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBTzVCLGVBQWU7c0JBQXhCLE1BQU07Z0JBRWdCLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFDRyxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ1UsaUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgbnVtYmVyQXR0cmlidXRlLFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUdyb3VwRGlyZWN0aXZlLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgVW50eXBlZEZvcm1CdWlsZGVyLFxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gIFZhbGlkYXRvckZuLFxuICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDZGtUZXh0YXJlYUF1dG9zaXplIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RleHQtZmllbGQnO1xuaW1wb3J0IHsgQXBwRm9ybSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvZm9ybS9mb3JtLmNsYXNzJztcbmltcG9ydCB7IGlzTm90TmlsIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zJztcbmltcG9ydCB7IGZvY3VzSW5wdXQgfSBmcm9tICcuLi8uLi9pbnB1dHMnO1xuaW1wb3J0IHsgQXBwRmxvYXRMYWJlbFR5cGUgfSBmcm9tICcuLi8uLi9mb3JtL2ZpZWxkLm1vZGVsJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UsIFN1YnNjcmlwdFNpemluZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuXG5jb25zdCBub29wID0gKCkgPT4ge307XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC10ZXh0LWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dC1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGV4dEZvcm0pLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFRleHRGb3JtIGV4dGVuZHMgQXBwRm9ybTx7IHRleHQ6IHN0cmluZyB9PiBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2hvd0Vycm9yID0gdHJ1ZTtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIG11bHRpbGluZSA9IHRydWU7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGF1dG9TaXplID0gZmFsc2U7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIGF1dG9TaXplTWluUm93czogbnVtYmVyO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBhdXRvU2l6ZU1heFJvd3M6IG51bWJlcjtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgbWF4TGVuZ3RoID0gMjAwMDtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGF1dG9mb2N1cyA9IGZhbHNlO1xuICBASW5wdXQoKSB2YWxpZGF0b3I6IFZhbGlkYXRvckZuID0gbnVsbDtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHN0YW5kYWxvbmUgPSBmYWxzZTtcbiAgQElucHV0KCkgZm9ybUNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbDtcbiAgQElucHV0KCkgZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGZsb2F0TGFiZWw6IEFwcEZsb2F0TGFiZWxUeXBlID0gJ2F1dG8nO1xuICBASW5wdXQoKSBhcHBlYXJhbmNlOiBNYXRGb3JtRmllbGRBcHBlYXJhbmNlO1xuICBASW5wdXQoKSBzdWJzY3JpcHRTaXppbmc6IFN1YnNjcmlwdFNpemluZztcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGF1dG9TaXplIGluc3RlYWRcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgYXV0b0hlaWdodCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuYXV0b1NpemUgPSB2YWx1ZTtcbiAgfVxuICBnZXQgYXV0b0hlaWdodCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hdXRvU2l6ZTtcbiAgfVxuXG4gIEBPdXRwdXQoKSB0ZXh0QXJlYUNoYW5nZXMgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBAVmlld0NoaWxkKCd0ZXh0QXJlYScpIHRleHRBcmVhOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCd0ZXh0SW5wdXQnKSB0ZXh0SW5wdXQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoQ2RrVGV4dGFyZWFBdXRvc2l6ZSkgYXV0b3NpemVEaXJlY3RpdmU6IENka1RleHRhcmVhQXV0b3NpemU7XG5cbiAgdGV4dENvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbDtcblxuICBwcml2YXRlIF9vbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBfb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSBub29wO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcm90ZWN0ZWQgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGZvcm1Hcm91cERpcjogRm9ybUdyb3VwRGlyZWN0aXZlXG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICghdGhpcy5zdGFuZGFsb25lKSB7XG4gICAgICB0aGlzLmZvcm1Db250cm9sID1cbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbCB8fCAodGhpcy5mb3JtQ29udHJvbE5hbWUgJiYgdGhpcy5mb3JtR3JvdXBEaXIgJiYgKHRoaXMuZm9ybUdyb3VwRGlyLmZvcm0uZ2V0KHRoaXMuZm9ybUNvbnRyb2xOYW1lKSBhcyBVbnR5cGVkRm9ybUNvbnRyb2wpKTtcbiAgICAgIGlmICghdGhpcy5mb3JtQ29udHJvbCkgdGhyb3cgbmV3IEVycm9yKFwiTWlzc2luZyBtYW5kYXRvcnkgYXR0cmlidXRlICdmb3JtQ29udHJvbCcgb3IgJ2Zvcm1Db250cm9sTmFtZScgaW4gPG1hdC1kYXRlLWZpZWxkPi5cIik7XG4gICAgfVxuXG4gICAgLy8gQ29tcHV0ZSB2YWxpZGF0b3JzXG4gICAgY29uc3QgdmFsaWRhdG9ycyA9IGlzTm90TmlsKHRoaXMubWF4TGVuZ3RoKSAmJiB0aGlzLm1heExlbmd0aCA+IDAgPyBbVmFsaWRhdG9ycy5tYXhMZW5ndGgodGhpcy5tYXhMZW5ndGgpXSA6IFtdO1xuICAgIGlmICh0aGlzLnZhbGlkYXRvcikgdmFsaWRhdG9ycy5wdXNoKHRoaXMudmFsaWRhdG9yKTtcblxuICAgIC8vIENyZWF0ZSB0aGUgZm9ybVxuICAgIGNvbnN0IGZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHRleHQ6IFtudWxsLCB2YWxpZGF0b3JzLmxlbmd0aCA/IFZhbGlkYXRvcnMuY29tcG9zZSh2YWxpZGF0b3JzKSA6IG51bGxdLFxuICAgIH0pO1xuICAgIHRoaXMuc2V0Rm9ybShmb3JtKTtcblxuICAgIHRoaXMudGV4dENvbnRyb2wgPSBmb3JtLmdldCgndGV4dCcpIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKFxuICAgICAgdGhpcy50ZXh0Q29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5zdGFuZGFsb25lKSB7XG4gICAgICAgICAgdGhpcy50ZXh0QXJlYUNoYW5nZXMuZW1pdCh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy50ZXh0Rm9ybVZhbHVlQ2hhbmdlZCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gIH1cblxuICBjb250YWluZXJSZXNpemUoKSB7XG4gICAgdGhpcy5hdXRvc2l6ZURpcmVjdGl2ZT8ucmVzaXplVG9GaXRDb250ZW50KHRydWUpO1xuICB9XG5cbiAgZm9jdXNJbnB1dCgpIHtcbiAgICBpZiAodGhpcy50ZXh0QXJlYSkgZm9jdXNJbnB1dCh0aGlzLnRleHRBcmVhKTtcbiAgICBpZiAodGhpcy50ZXh0SW5wdXQpIGZvY3VzSW5wdXQodGhpcy50ZXh0SW5wdXQpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX29uVG91Y2hlZENhbGxiYWNrID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoaXNEaXNhYmxlZCkge1xuICAgICAgdGhpcy50ZXh0Q29udHJvbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50ZXh0Q29udHJvbC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy50ZXh0Q29udHJvbC5wYXRjaFZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjaGVja0lmVG91Y2hlZChvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICBpZiAodGhpcy50ZXh0Q29udHJvbC50b3VjaGVkKSB7XG4gICAgICB0aGlzLl9vblRvdWNoZWRDYWxsYmFjaygpO1xuXG4gICAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0ZXh0Rm9ybVZhbHVlQ2hhbmdlZCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKHZhbHVlKTtcbiAgICAgIHRoaXMuY2hlY2tJZlRvdWNoZWQoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxmb3JtIGNsYXNzPVwiZm9ybS1jb250YWluZXJcIiBbZm9ybUdyb3VwXT1cImZvcm1cIiAobmdTdWJtaXQpPVwib25TdWJtaXQuZW1pdCgkZXZlbnQpXCI+XG4gIEBpZiAobXVsdGlsaW5lKSB7XG4gICAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsIHwgYXNGbG9hdExhYmVsVHlwZVwiXG4gICAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICAgIFtzdWJzY3JpcHRTaXppbmddPVwic3Vic2NyaXB0U2l6aW5nXCJcbiAgICA+XG4gICAgICBAaWYgKGZsb2F0TGFiZWwgIT09ICduZXZlcicgJiYgISFwbGFjZWhvbGRlcikge1xuICAgICAgICA8bWF0LWxhYmVsPnt7IHBsYWNlaG9sZGVyIH19PC9tYXQtbGFiZWw+XG4gICAgICB9XG4gICAgICA8dGV4dGFyZWFcbiAgICAgICAgI3RleHRBcmVhXG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJ0ZXh0Q29udHJvbFwiXG4gICAgICAgIFtyZWFkb25seV09XCJ0ZXh0Q29udHJvbC5kaXNhYmxlZFwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJmbG9hdExhYmVsID09PSAnbmV2ZXInID8gcGxhY2Vob2xkZXIgOiBudWxsXCJcbiAgICAgICAgW2NsYXNzLmZpeGVkLWhlaWdodF09XCIhYXV0b1NpemVcIlxuICAgICAgICBbY2RrVGV4dGFyZWFBdXRvc2l6ZV09XCJhdXRvU2l6ZVwiXG4gICAgICAgIFtjZGtBdXRvc2l6ZU1pblJvd3NdPVwiYXV0b1NpemVNaW5Sb3dzXCJcbiAgICAgICAgW2Nka0F1dG9zaXplTWF4Um93c109XCJhdXRvU2l6ZU1heFJvd3NcIlxuICAgICAgICAoa2V5ZG93bi5jb250cm9sLmVudGVyKT1cIm9uU3VibWl0LmVtaXQoJGV2ZW50KVwiXG4gICAgICA+PC90ZXh0YXJlYT5cbiAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJ0ZXh0Q29udHJvbC5oYXNFcnJvcignbWF4bGVuZ3RoJylcIj5cbiAgICAgICAge3sgJ0VSUk9SLkZJRUxEX01BWF9MRU5HVEgnIHwgdHJhbnNsYXRlOiB0ZXh0Q29udHJvbC5lcnJvcnNbJ21heGxlbmd0aCddIH19XG4gICAgICA8L21hdC1lcnJvcj5cbiAgICAgIDxtYXQtaGludCAqbmdJZj1cIm1heExlbmd0aFwiIGFsaWduPVwiZW5kXCI+XG4gICAgICAgIHt7ICdJTkZPLlRFWFRfUFJPR1JFU1MnIHwgdHJhbnNsYXRlOiB7IGN1cnJlbnQ6IHRleHRBcmVhLnZhbHVlPy5sZW5ndGggfHwgMCwgbWF4OiBtYXhMZW5ndGggfSB9fVxuICAgICAgPC9tYXQtaGludD5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICB9IEBlbHNlIHtcbiAgICA8bWF0LWZvcm0tZmllbGRcbiAgICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWwgfCBhc0Zsb2F0TGFiZWxUeXBlXCJcbiAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgICAgW3N1YnNjcmlwdFNpemluZ109XCJzdWJzY3JpcHRTaXppbmdcIlxuICAgID5cbiAgICAgIEBpZiAoZmxvYXRMYWJlbCAhPT0gJ25ldmVyJyAmJiAhIXBsYWNlaG9sZGVyKSB7XG4gICAgICAgIDxtYXQtbGFiZWw+e3sgcGxhY2Vob2xkZXIgfX08L21hdC1sYWJlbD5cbiAgICAgIH1cbiAgICAgIDxpbnB1dFxuICAgICAgICAjdGV4dElucHV0XG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJ0ZXh0Q29udHJvbFwiXG4gICAgICAgIFtyZWFkb25seV09XCJ0ZXh0Q29udHJvbC5kaXNhYmxlZFwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJmbG9hdExhYmVsID09PSAnbmV2ZXInID8gcGxhY2Vob2xkZXIgOiBudWxsXCJcbiAgICAgICAgW2FwcEF1dG9mb2N1c109XCJhdXRvZm9jdXNcIlxuICAgICAgICAoa2V5ZG93bi5jb250cm9sLmVudGVyKT1cIm9uU3VibWl0LmVtaXQoJGV2ZW50KVwiXG4gICAgICAvPlxuICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInRleHRDb250cm9sLmhhc0Vycm9yKCdtYXhsZW5ndGgnKVwiPlxuICAgICAgICB7eyAnRVJST1IuRklFTERfTUFYX0xFTkdUSCcgfCB0cmFuc2xhdGU6IHRleHRDb250cm9sLmVycm9yc1snbWF4bGVuZ3RoJ10gfX1cbiAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInRleHRDb250cm9sLmhhc0Vycm9yKCdwYXR0ZXJuJylcIj5cbiAgICAgICAge3sgJ0VSUk9SLkZJRUxEX0lOVkFMSUQnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L21hdC1lcnJvcj5cbiAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJlcnJvclNwYW4uaW5uZXJIVE1MLnRyaW0oKSBhcyBlcnJvclwiIFtpbm5lckhUTUxdPVwiZXJyb3JcIj48L21hdC1lcnJvcj5cbiAgICAgIDxzcGFuICNlcnJvclNwYW4gY2xhc3M9XCJjZGstdmlzdWFsbHktaGlkZGVuXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRFcnJvcl1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L3NwYW4+XG4gICAgICA8bWF0LWhpbnQgKm5nSWY9XCJtYXhMZW5ndGhcIiBhbGlnbj1cImVuZFwiPlxuICAgICAgICB7eyAnSU5GTy5URVhUX1BST0dSRVNTJyB8IHRyYW5zbGF0ZTogeyBjdXJyZW50OiB0ZXh0SW5wdXQudmFsdWU/Lmxlbmd0aCB8fCAwLCBtYXg6IG1heExlbmd0aCB9IH19XG4gICAgICA8L21hdC1oaW50PlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIH1cbjwvZm9ybT5cbiJdfQ==
@@ -1,63 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { TranslateModule } from '@ngx-translate/core';
3
- import { TextForm } from './text-form.component';
4
- import { MatInputModule } from '@angular/material/input';
5
- import { ReactiveFormsModule } from '@angular/forms';
6
- import { SharedDirectivesModule } from '../../directives/directives.module';
7
- import { CommonModule } from '@angular/common';
8
- import { IonicModule } from '@ionic/angular';
9
- import { SharedPipesModule } from '../../pipes/pipes.module';
10
- import { MatCommonModule } from '@angular/material/core';
11
- import { MatFormFieldModule } from '@angular/material/form-field';
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "@ngx-translate/core";
14
- export class SharedTextFormModule {
15
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SharedTextFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
16
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: SharedTextFormModule, declarations: [
17
- // Components
18
- TextForm], imports: [i1.TranslateModule, CommonModule,
19
- IonicModule,
20
- ReactiveFormsModule,
21
- SharedPipesModule,
22
- MatCommonModule,
23
- MatFormFieldModule,
24
- MatInputModule,
25
- SharedDirectivesModule], exports: [TranslateModule,
26
- // Components
27
- TextForm] });
28
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SharedTextFormModule, imports: [TranslateModule.forChild(),
29
- CommonModule,
30
- IonicModule,
31
- ReactiveFormsModule,
32
- SharedPipesModule,
33
- MatCommonModule,
34
- MatFormFieldModule,
35
- MatInputModule,
36
- SharedDirectivesModule, TranslateModule] });
37
- }
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SharedTextFormModule, decorators: [{
39
- type: NgModule,
40
- args: [{
41
- imports: [
42
- TranslateModule.forChild(),
43
- CommonModule,
44
- IonicModule,
45
- ReactiveFormsModule,
46
- SharedPipesModule,
47
- MatCommonModule,
48
- MatFormFieldModule,
49
- MatInputModule,
50
- SharedDirectivesModule,
51
- ],
52
- declarations: [
53
- // Components
54
- TextForm,
55
- ],
56
- exports: [
57
- TranslateModule,
58
- // Components
59
- TextForm,
60
- ],
61
- }]
62
- }] });
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1mb3JtLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL3RleHQvdGV4dC1mb3JtLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxZQUFZLEVBQVEsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7QUF5QmxFLE1BQU0sT0FBTyxvQkFBb0I7d0dBQXBCLG9CQUFvQjt5R0FBcEIsb0JBQW9CO1lBVDdCLGFBQWE7WUFDYixRQUFRLGlDQVpSLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGlCQUFpQjtZQUNqQixlQUFlO1lBQ2Ysa0JBQWtCO1lBQ2xCLGNBQWM7WUFDZCxzQkFBc0IsYUFRdEIsZUFBZTtZQUNmLGFBQWE7WUFDYixRQUFRO3lHQUdDLG9CQUFvQixZQXJCN0IsZUFBZSxDQUFDLFFBQVEsRUFBRTtZQUMxQixZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQixpQkFBaUI7WUFDakIsZUFBZTtZQUNmLGtCQUFrQjtZQUNsQixjQUFjO1lBQ2Qsc0JBQXNCLEVBUXRCLGVBQWU7OzRGQUtOLG9CQUFvQjtrQkF2QmhDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLGVBQWUsQ0FBQyxRQUFRLEVBQUU7d0JBQzFCLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2Qsc0JBQXNCO3FCQUN2QjtvQkFFRCxZQUFZLEVBQUU7d0JBQ1osYUFBYTt3QkFDYixRQUFRO3FCQUNUO29CQUNELE9BQU8sRUFBRTt3QkFDUCxlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsUUFBUTtxQkFDVDtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFRleHRGb3JtIH0gZnJvbSAnLi90ZXh0LWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNoYXJlZERpcmVjdGl2ZXNNb2R1bGUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2RpcmVjdGl2ZXMubW9kdWxlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJb25pY01vZHVsZSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IFNoYXJlZFBpcGVzTW9kdWxlIH0gZnJvbSAnLi4vLi4vcGlwZXMvcGlwZXMubW9kdWxlJztcbmltcG9ydCB7IE1hdENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBUcmFuc2xhdGVNb2R1bGUuZm9yQ2hpbGQoKSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSW9uaWNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBTaGFyZWRQaXBlc01vZHVsZSxcbiAgICBNYXRDb21tb25Nb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIFNoYXJlZERpcmVjdGl2ZXNNb2R1bGUsXG4gIF0sXG5cbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgLy8gQ29tcG9uZW50c1xuICAgIFRleHRGb3JtLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIC8vIENvbXBvbmVudHNcbiAgICBUZXh0Rm9ybSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2hhcmVkVGV4dEZvcm1Nb2R1bGUge31cbiJdfQ==
@@ -1,16 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- import * as i1 from "./text-form.component";
3
- import * as i2 from "@ngx-translate/core";
4
- import * as i3 from "@angular/common";
5
- import * as i4 from "@ionic/angular";
6
- import * as i5 from "@angular/forms";
7
- import * as i6 from "../../pipes/pipes.module";
8
- import * as i7 from "@angular/material/core";
9
- import * as i8 from "@angular/material/form-field";
10
- import * as i9 from "@angular/material/input";
11
- import * as i10 from "../../directives/directives.module";
12
- export declare class SharedTextFormModule {
13
- static ɵfac: i0.ɵɵFactoryDeclaration<SharedTextFormModule, never>;
14
- static ɵmod: i0.ɵɵNgModuleDeclaration<SharedTextFormModule, [typeof i1.TextForm], [typeof i2.TranslateModule, typeof i3.CommonModule, typeof i4.IonicModule, typeof i5.ReactiveFormsModule, typeof i6.SharedPipesModule, typeof i7.MatCommonModule, typeof i8.MatFormFieldModule, typeof i9.MatInputModule, typeof i10.SharedDirectivesModule], [typeof i2.TranslateModule, typeof i1.TextForm]>;
15
- static ɵinj: i0.ɵɵInjectorDeclaration<SharedTextFormModule>;
16
- }