@sumaris-net/ngx-components 18.27.0-alpha1 → 18.27.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 (64) hide show
  1. package/doc/changelog.md +8 -2
  2. package/esm2022/public_api.mjs +1 -2
  3. package/esm2022/src/app/core/about/about.modal.mjs +16 -3
  4. package/esm2022/src/app/core/core.module.mjs +1 -4
  5. package/esm2022/src/app/core/form/form.utils.mjs +1 -12
  6. package/esm2022/src/app/core/menu/menu.component.mjs +3 -3
  7. package/esm2022/src/app/core/services/config/core.config.mjs +6 -1
  8. package/esm2022/src/app/core/services/platform.service.mjs +37 -7
  9. package/esm2022/src/app/core/settings/settings.page.mjs +8 -4
  10. package/esm2022/src/app/shared/capacitor/plugins.mjs +2 -1
  11. package/esm2022/src/app/shared/focusable.mjs +1 -1
  12. package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +3 -3
  13. package/esm2022/src/app/shared/image/gallery/slideshow/image-gallery-slideshow.component.mjs +2 -2
  14. package/esm2022/src/app/shared/inputs.mjs +3 -22
  15. package/esm2022/src/app/shared/markdown/markdown.component.mjs +3 -3
  16. package/esm2022/src/app/shared/markdown/testing/markdown.test.mjs +2 -2
  17. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +46 -175
  18. package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +23 -69
  19. package/esm2022/src/app/shared/material/datetime/material.date.mjs +4 -18
  20. package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +28 -116
  21. package/esm2022/src/app/shared/material/duration/duration.module.mjs +3 -10
  22. package/esm2022/src/app/shared/material/duration/material.duration.mjs +33 -63
  23. package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +3 -3
  24. package/esm2022/src/app/shared/material/latlong/material.latlong-input.mjs +1 -14
  25. package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +1 -16
  26. package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +25 -14
  27. package/esm2022/src/app/shared/material/testing/common.test.mjs +27 -218
  28. package/esm2022/src/app/shared/platforms.mjs +23 -1
  29. package/esm2022/src/app/shared/version/versions.mjs +10 -3
  30. package/esm2022/src/app/social/feed/feed.component.mjs +3 -3
  31. package/esm2022/src/environments/environment.class.mjs +2 -1
  32. package/esm2022/src/environments/environment.mjs +2 -1
  33. package/fesm2022/sumaris-net.ngx-components.mjs +552 -1015
  34. package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
  35. package/package.json +32 -14
  36. package/public_api.d.ts +0 -1
  37. package/src/app/core/about/about.modal.d.ts +2 -0
  38. package/src/app/core/core.module.d.ts +15 -15
  39. package/src/app/core/form/form.utils.d.ts +0 -7
  40. package/src/app/core/services/config/core.config.d.ts +1 -0
  41. package/src/app/core/services/platform.service.d.ts +2 -0
  42. package/src/app/core/settings/settings.page.d.ts +1 -1
  43. package/src/app/shared/capacitor/plugins.d.ts +1 -0
  44. package/src/app/shared/focusable.d.ts +1 -3
  45. package/src/app/shared/inputs.d.ts +1 -3
  46. package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +7 -20
  47. package/src/app/shared/material/boolean/material.boolean.d.ts +4 -12
  48. package/src/app/shared/material/datetime/material.date.d.ts +2 -6
  49. package/src/app/shared/material/datetime/material.datetime.d.ts +4 -20
  50. package/src/app/shared/material/duration/duration.module.d.ts +1 -3
  51. package/src/app/shared/material/duration/material.duration.d.ts +13 -15
  52. package/src/app/shared/material/latlong/material.latlong-input.d.ts +3 -5
  53. package/src/app/shared/material/latlong/material.latlong.d.ts +1 -5
  54. package/src/app/shared/material/paginator/material.paginator-i18n.d.ts +5 -1
  55. package/src/app/shared/material/testing/common.test.d.ts +6 -49
  56. package/src/app/shared/platforms.d.ts +1 -0
  57. package/src/assets/i18n/en-US.json +2 -1
  58. package/src/assets/i18n/en.json +3 -2
  59. package/src/assets/i18n/fr.json +2 -1
  60. package/src/assets/manifest.json +1 -1
  61. package/src/environments/environment.class.d.ts +1 -0
  62. package/src/theme/_ngx-components.table.scss +5 -0
  63. package/esm2022/src/app/shared/field-accessor.mjs +0 -16
  64. package/src/app/shared/field-accessor.d.ts +0 -51
@@ -1,12 +1,16 @@
1
1
  import { ChangeDetectorRef, ElementRef, OnDestroy, OnInit, QueryList } from '@angular/core';
2
+ import { Platform } from '@ionic/angular';
3
+ import { DateAdapter } from '@angular/material/core';
2
4
  import { ControlValueAccessor, FormGroupDirective, UntypedFormBuilder, UntypedFormControl } from '@angular/forms';
3
5
  import { TranslateService } from '@ngx-translate/core';
6
+ import { Moment } from 'moment';
4
7
  import { InputElement } from '../../inputs';
5
- import { ControlFieldAccessor, TextControlFieldAccessor } from '../../field-accessor';
6
8
  import { MatFormFieldAppearance } from '@angular/material/form-field';
7
9
  import { AppFloatLabelType } from '../../types';
8
10
  import * as i0 from "@angular/core";
9
- export declare class MatDuration implements OnInit, OnDestroy, ControlValueAccessor, InputElement, ControlFieldAccessor, TextControlFieldAccessor {
11
+ export declare class MatDuration implements OnInit, OnDestroy, ControlValueAccessor, InputElement {
12
+ private dateAdapter;
13
+ private translate;
10
14
  private formBuilder;
11
15
  private cd;
12
16
  private formGroupDir;
@@ -17,11 +21,9 @@ export declare class MatDuration implements OnInit, OnDestroy, ControlValueAcces
17
21
  private disabling;
18
22
  private _tabindex;
19
23
  private _value;
20
- protected readonly durationMask: (string | RegExp)[];
21
- protected dayUnit: string;
22
- protected textControl: UntypedFormControl;
23
- protected maskitoPlaceholder: string;
24
- protected showTooltip: boolean;
24
+ textControl: UntypedFormControl;
25
+ maskitoPlaceholder: string;
26
+ readonly durationMask: (string | RegExp)[];
25
27
  disabled: boolean;
26
28
  formControl: UntypedFormControl;
27
29
  formControlName: string;
@@ -33,19 +35,16 @@ export declare class MatDuration implements OnInit, OnDestroy, ControlValueAcces
33
35
  compact: boolean;
34
36
  maxDecimals: number;
35
37
  placeholderChar: string;
36
- clearButtonTitle: string;
37
38
  set tabindex(value: number);
38
39
  get tabindex(): number;
39
40
  clearable: boolean;
40
41
  matInputs: QueryList<ElementRef>;
41
42
  get value(): any;
42
- get focused(): any;
43
- get controlName(): string;
44
- constructor(translate: TranslateService, formBuilder: UntypedFormBuilder, cd: ChangeDetectorRef, formGroupDir: FormGroupDirective);
43
+ protected dayUnit: string;
44
+ constructor(platform: Platform, dateAdapter: DateAdapter<Moment>, translate: TranslateService, formBuilder: UntypedFormBuilder, cd: ChangeDetectorRef, formGroupDir: FormGroupDirective);
45
45
  ngOnInit(): void;
46
46
  ngOnDestroy(): void;
47
47
  writeValue(obj: any): void;
48
- clearValue(event?: Event): void;
49
48
  registerOnChange(fn: any): void;
50
49
  registerOnTouched(fn: any): void;
51
50
  setDisabledState(isDisabled: boolean): void;
@@ -53,12 +52,11 @@ export declare class MatDuration implements OnInit, OnDestroy, ControlValueAcces
53
52
  checkIfTouched(): void;
54
53
  preventEvent(event: Event): void;
55
54
  focus(): void;
56
- typeText(text: string): void;
57
55
  moveCaretToSeparator(event: any, forward: boolean): boolean;
58
56
  protected updateTabIndex(): void;
59
57
  protected markForCheck(): void;
60
- static ɵfac: i0.ɵɵFactoryDeclaration<MatDuration, [null, null, null, { optional: true; }]>;
61
- static ɵcmp: i0.ɵɵComponentDeclaration<MatDuration, "mat-duration-field", never, { "disabled": { "alias": "disabled"; "required": false; }; "formControl": { "alias": "formControl"; "required": false; }; "formControlName": { "alias": "formControlName"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "floatLabel": { "alias": "floatLabel"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "compact": { "alias": "compact"; "required": false; }; "maxDecimals": { "alias": "maxDecimals"; "required": false; }; "placeholderChar": { "alias": "placeholderChar"; "required": false; }; "clearButtonTitle": { "alias": "clearButtonTitle"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; }, {}, never, ["[matPrefix]", "mat-error"], false, never>;
58
+ static ɵfac: i0.ɵɵFactoryDeclaration<MatDuration, [null, null, null, null, null, { optional: true; }]>;
59
+ static ɵcmp: i0.ɵɵComponentDeclaration<MatDuration, "mat-duration-field", never, { "disabled": { "alias": "disabled"; "required": false; }; "formControl": { "alias": "formControl"; "required": false; }; "formControlName": { "alias": "formControlName"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "floatLabel": { "alias": "floatLabel"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "compact": { "alias": "compact"; "required": false; }; "maxDecimals": { "alias": "maxDecimals"; "required": false; }; "placeholderChar": { "alias": "placeholderChar"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; }, {}, never, ["[matPrefix]", "mat-error"], false, never>;
62
60
  static ngAcceptInputType_disabled: unknown;
63
61
  static ngAcceptInputType_readonly: unknown;
64
62
  static ngAcceptInputType_required: unknown;
@@ -4,7 +4,6 @@ import { LatLongPattern, LatLongSign, LatLongType } from './latlong.utils';
4
4
  import { MaskitoOptions } from '@maskito/core';
5
5
  import { MatFormField, MatFormFieldControl } from '@angular/material/form-field';
6
6
  import { Subject } from 'rxjs';
7
- import { FocusOrigin } from '@angular/cdk/a11y';
8
7
  import * as i0 from "@angular/core";
9
8
  export declare class MatLatLongFieldInput implements MatFormFieldControl<number>, ControlValueAccessor, OnInit, OnDestroy {
10
9
  private _elementRef;
@@ -70,10 +69,9 @@ export declare class MatLatLongFieldInput implements MatFormFieldControl<number>
70
69
  constructor(_elementRef: ElementRef<HTMLElement>, _formField: MatFormField, ngControl: NgControl);
71
70
  ngOnInit(): void;
72
71
  ngOnDestroy(): void;
73
- focus(options?: FocusOptions, origin?: FocusOrigin): void;
74
- protected onFocusIn(event: FocusEvent): void;
75
- protected onFocusOut(event: FocusEvent): void;
76
- private updatePattern;
72
+ onFocusIn(event: FocusEvent): void;
73
+ onFocusOut(event: FocusEvent): void;
74
+ updatePattern(pattern: LatLongPattern): void;
77
75
  protected updateFormGroup(value: number | null): void;
78
76
  handleInput(controlName: string, nextControlName?: string): void;
79
77
  autoFocusNext(controlName: string, nextControlName?: string): void;
@@ -4,10 +4,8 @@ import { MatFormFieldAppearance, MatFormFieldDefaultOptions, SubscriptSizing } f
4
4
  import { LatLongPattern, LatLongSign, LatLongType } from './latlong.utils';
5
5
  import { MatLatLongFieldInput } from './material.latlong-input';
6
6
  import { AppFloatLabelType } from '../../types';
7
- import { ControlFieldAccessor } from '../../field-accessor';
8
- import { FocusOrigin } from '@angular/cdk/a11y';
9
7
  import * as i0 from "@angular/core";
10
- export declare class MatLatLongField implements ControlValueAccessor, OnInit, AfterViewInit, OnDestroy, ControlFieldAccessor {
8
+ export declare class MatLatLongField implements ControlValueAccessor, OnInit, AfterViewInit, OnDestroy {
11
9
  private cd;
12
10
  private formGroupDir;
13
11
  private _subscription;
@@ -66,7 +64,6 @@ export declare class MatLatLongField implements ControlValueAccessor, OnInit, Af
66
64
  set subscriptSizing(value: SubscriptSizing);
67
65
  get subscriptSizing(): SubscriptSizing;
68
66
  get disabled(): any;
69
- get focused(): boolean;
70
67
  input: MatLatLongFieldInput;
71
68
  pendingValue: any;
72
69
  pendingValueSet: boolean;
@@ -81,7 +78,6 @@ export declare class MatLatLongField implements ControlValueAccessor, OnInit, Af
81
78
  ngOnInit(): void;
82
79
  ngAfterViewInit(): void;
83
80
  ngOnDestroy(): void;
84
- focus(options?: FocusOptions, origin?: FocusOrigin): void;
85
81
  clearValue(event?: Event): void;
86
82
  private markForCheck;
87
83
  static ɵfac: i0.ɵɵFactoryDeclaration<MatLatLongField, [null, { optional: true; }, null]>;
@@ -1,12 +1,16 @@
1
1
  import { TranslateService } from '@ngx-translate/core';
2
+ import { OnDestroy } from '@angular/core';
2
3
  import { MatPaginatorIntl } from '@angular/material/paginator';
3
4
  import * as i0 from "@angular/core";
4
- export declare class MatPaginatorI18n extends MatPaginatorIntl {
5
+ export declare class MatPaginatorI18n extends MatPaginatorIntl implements OnDestroy {
5
6
  protected translate: TranslateService;
6
7
  ofLabel: string;
8
+ private _subscription;
7
9
  constructor(translate: TranslateService);
10
+ ngOnDestroy(): void;
8
11
  getRangeLabel: (page: number, pageSize: number, length: number) => string;
9
12
  protected _getTranslationValue(translations: any, key: string, defaultValue: string): string;
13
+ private _updateTranslations;
10
14
  static ɵfac: i0.ɵɵFactoryDeclaration<MatPaginatorI18n, never>;
11
15
  static ɵprov: i0.ɵɵInjectableDeclaration<MatPaginatorI18n>;
12
16
  }
@@ -1,68 +1,25 @@
1
- import { ChangeDetectorRef, OnDestroy, OnInit, QueryList } from '@angular/core';
1
+ import { ChangeDetectorRef, OnDestroy, OnInit } from '@angular/core';
2
2
  import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
3
- import { MatAutocompleteField } from '../autocomplete/material.autocomplete';
4
- import { MatBooleanField } from '../boolean/material.boolean';
5
- import { MatDate } from '../datetime/material.date';
6
- import { MatDateTime } from '../datetime/material.datetime';
7
- import { MatDuration } from '../duration/material.duration';
8
- import { ControlFieldAccessor } from '../../field-accessor';
9
- import { MatLatLongField } from '../latlong/material.latlong';
10
3
  import * as i0 from "@angular/core";
11
4
  export declare class MatCommonTestPage implements OnInit, OnDestroy {
12
5
  protected formBuilder: UntypedFormBuilder;
13
6
  protected cd: ChangeDetectorRef;
7
+ showLogPanel: boolean;
8
+ logContent: string;
9
+ form: UntypedFormGroup;
10
+ statusList: readonly import("../../../core/services/model/referential.model").IStatus[];
14
11
  private subscription;
15
- protected form: UntypedFormGroup;
16
- protected showLogPanel: boolean;
17
- protected logContent: string;
18
- protected statusList: readonly import("../../../core/services/model/referential.model").IStatus[];
19
- protected mode: 'mobile' | 'desktop';
20
12
  constructor(formBuilder: UntypedFormBuilder, cd: ChangeDetectorRef);
21
13
  ngOnInit(): void;
22
14
  ngOnDestroy(): void;
23
- toggleMode(value: 'mobile' | 'desktop'): void;
24
15
  loadData(): Promise<void>;
25
16
  doSubmit(_: any): void;
26
17
  log(message: string): void;
27
18
  clearLogPanel(): void;
28
- readonly stringify: {
19
+ stringify: {
29
20
  (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string;
30
21
  (value: any, replacer?: (string | number)[], space?: string | number): string;
31
22
  };
32
- inputFieldAccessors: QueryList<ControlFieldAccessor>;
33
- autocompleteField: MatAutocompleteField;
34
- booleanField: MatBooleanField;
35
- dateField: MatDate;
36
- dateTimeField: MatDateTime;
37
- latitudeField: MatLatLongField;
38
- longitudeField: MatLatLongField;
39
- durationField: MatDuration;
40
- protected readonly accessorFieldOptions: {
41
- id: string;
42
- label: string;
43
- hasTypeText: boolean;
44
- }[];
45
- protected selectedAccessorField: {
46
- id: string;
47
- label: string;
48
- hasTypeText: boolean;
49
- };
50
- protected accessorWriteValue: string;
51
- protected accessorTypeText: string;
52
- protected accessorLastAction: string;
53
- protected accessorTypeTextLetterByLetter: boolean;
54
- readonly autocompleteSuggestItems: {
55
- id: number;
56
- label: string;
57
- name: string;
58
- }[];
59
- private _getAccessor;
60
- selectAccessorField(option: (typeof this.accessorFieldOptions)[0]): void;
61
- selectAccessorFieldById(id: string): void;
62
- doAccessorFocus(): void;
63
- doAccessorClear(): void;
64
- doAccessorWriteValue(): void;
65
- doAccessorTypeText(event?: Event): Promise<void>;
66
23
  static ɵfac: i0.ɵɵFactoryDeclaration<MatCommonTestPage, never>;
67
24
  static ɵcmp: i0.ɵɵComponentDeclaration<MatCommonTestPage, "mat-common-test", never, {}, {}, never, never, false, never>;
68
25
  }
@@ -14,3 +14,4 @@ export declare function isAndroid(win: Window): boolean;
14
14
  export declare function isCapacitor(win: any): boolean;
15
15
  export declare function isMobile(win: Window): any;
16
16
  export declare function isPrint(win?: Window): boolean;
17
+ export declare function isWebAnimationsSupported(): boolean;
@@ -263,7 +263,8 @@
263
263
  "DEVELOPED_BY": "Developed by:",
264
264
  "PARTNERS": "Partners and sponsors:",
265
265
  "POD_VERSION": "Pod v{{version}}",
266
- "APP_VERSION": "App v{{version}}"
266
+ "APP_VERSION": "App v{{version}}",
267
+ "BTN_CHANGELOG": "Changelog"
267
268
  },
268
269
  "HOME": {
269
270
  "WELCOME_WEB": "Welcome to the {{appName}} web site!",
@@ -126,7 +126,7 @@
126
126
  "HAS_ERROR": "Please correct errors in the form"
127
127
  },
128
128
  "PAGINATOR": {
129
- "ITEMS_PER_PAGE": "Number of lines",
129
+ "ITEMS_PER_PAGE": "Items per page",
130
130
  "NEXT_PAGE": "Next page",
131
131
  "PREVIOUS_PAGE": "Previous page",
132
132
  "OF": "on",
@@ -263,7 +263,8 @@
263
263
  "DEVELOPED_BY": "Developed by:",
264
264
  "PARTNERS": "Partners and sponsors:",
265
265
  "POD_VERSION": "Pod v{{version}}",
266
- "APP_VERSION": "App v{{version}}"
266
+ "APP_VERSION": "App v{{version}}",
267
+ "BTN_CHANGELOG": "Changelog"
267
268
  },
268
269
  "HOME": {
269
270
  "WELCOME_WEB": "Welcome to the {{appName}} web site!",
@@ -263,7 +263,8 @@
263
263
  "DEVELOPED_BY": "Développé par :",
264
264
  "PARTNERS": "Partenaires et sponsors :",
265
265
  "POD_VERSION": "Pod v{{version}}",
266
- "APP_VERSION": "App v{{version}}"
266
+ "APP_VERSION": "App v{{version}}",
267
+ "BTN_CHANGELOG": "Notes de version"
267
268
  },
268
269
  "HOME": {
269
270
  "WELCOME_WEB": "Bienvenue sur le site web {{appName}} !",
@@ -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.27.0-alpha1",
5
+ "version": "18.27.0",
6
6
  "default_locale": "fr",
7
7
  "description": "Angular components for building beautiful and responsive Apps",
8
8
  "icons": [{
@@ -57,6 +57,7 @@ export declare class Environment {
57
57
  storageSavePeriodMs?: number;
58
58
  sourceUrl?: string;
59
59
  reportIssueUrl?: string;
60
+ changelogUrl?: string;
60
61
  forumUrl?: string;
61
62
  helpUrl?: string;
62
63
  privacyPolicyUrl?: string;
@@ -115,6 +115,8 @@
115
115
  .mat-mdc-footer-cell {
116
116
  // Remove default padding
117
117
  padding-inline: 0;
118
+ padding-inline-start: 0; // Compat Chrome < 87 (padding-inline not exists yet)
119
+ padding-inline-end: 0; // Compat Chrome < 87 (padding-inline not exists yet)
118
120
 
119
121
  &.ion-padding-start {
120
122
  padding-inline-start: var(--mat-cell-horizontal-padding);
@@ -352,7 +354,10 @@
352
354
  }
353
355
 
354
356
  .mdc-text-field {
357
+ // Remove default padding
355
358
  padding-inline: 0;
359
+ padding-inline-start: 0; // Compat Chrome < 87 (padding-inline not exists yet)
360
+ padding-inline-end: 0; // Compat Chrome < 87 (padding-inline not exists yet)
356
361
  }
357
362
 
358
363
  // Prefix
@@ -1,16 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- /**
3
- * Injection token for IInputFieldAccessor.
4
- *
5
- * Components that implement IInputFieldAccessor should provide themselves:
6
- * ```typescript
7
- * @Component({
8
- * providers: [{ provide: INPUT_FIELD_ACCESSOR, useExisting: MyFieldComponent }]
9
- * })
10
- * ```
11
- *
12
- * Consumers (e.g. barcode navigation directives) inject this token with @Host()
13
- * to access the field handler of the component they're placed on.
14
- */
15
- export const INPUT_FIELD_ACCESSOR = new InjectionToken('INPUT_FIELD_ACCESSOR');
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtYWNjZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9maWVsZC1hY2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBNEMvQzs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLGNBQWMsQ0FBdUIsc0JBQXNCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0ZvY3VzT3JpZ2lufSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5cbi8qKlxuICogR2VuZXJpYyBpbnRlcmZhY2UgZm9yIHByb2dyYW1tYXRpYyBhY2Nlc3MgdG8gYSBmb3JtIGZpZWxkLlxuICpcbiAqIEltcGxlbWVudGVkIGJ5IGZvcm0gZmllbGQgY29tcG9uZW50cyAoYXV0b2NvbXBsZXRlLCBkYXRlLCBkdXJhdGlvbiwgYm9vbGVhbiwgZXRjLilcbiAqIHRvIGFsbG93IGV4dGVybmFsIGNvZGUgdG8gZm9jdXMsIHdyaXRlIHZhbHVlcywgb3IgdHlwZSB0ZXh0IHdpdGhvdXQga25vd2luZ1xuICogdGhlIGNvbmNyZXRlIGNvbXBvbmVudCB0eXBlLlxuICpcbiAqIFVzZSBjYXNlczogYmFyY29kZSBzY2FubmVyIG5hdmlnYXRpb24sIHZvaWNlIGRpY3RhdGlvbiwga2V5Ym9hcmQgc2hvcnRjdXRzLFxuICogdGVzdCBhdXRvbWF0aW9uIOKAlCBhbnkgc2NlbmFyaW8gdGhhdCBuZWVkcyBwcm9ncmFtbWF0aWMgZmllbGQgaW50ZXJhY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJvbEZpZWxkQWNjZXNzb3Ige1xuICAvKiogU2V0IGZvY3VzIG9uIHRoaXMgZmllbGQgKi9cbiAgZm9jdXMob3B0aW9ucz86IEZvY3VzT3B0aW9ucywgb3JpZ2luPzogRm9jdXNPcmlnaW4pOiB2b2lkO1xuXG4gIC8qKiBXcml0ZSBhIHZhbHVlIHRvIHRoZSBmaWVsZCAoZXF1aXZhbGVudCB0byBDb250cm9sVmFsdWVBY2Nlc3Nvci53cml0ZVZhbHVlKSAqL1xuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkO1xuXG4gIGNsZWFyVmFsdWUoKTogdm9pZDtcblxuICByZWFkb25seSBmb2N1c2VkOiBib29sZWFuO1xuXG4gIC8qKiBUaGUgZm9ybUNvbnRyb2wgbmFtZSwgaWYgdGhpcyBmaWVsZCBpcyBwYXJ0IG9mIGEgcmVhY3RpdmUgZm9ybSAqL1xuICByZWFkb25seSBjb250cm9sTmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBFeHRlbmRlZCBpbnRlcmZhY2UgZm9yIGZpZWxkcyB0aGF0IGFjY2VwdCB0eXBlZCB0ZXh0IGlucHV0XG4gKiAoYXV0b2NvbXBsZXRlIHNlYXJjaCB0ZXh0LCB0ZXh0IGlucHV0cywgdGV4dGFyZWFzKS5cbiAqXG4gKiBVbmxpa2Ugd3JpdGVWYWx1ZSgpIHdoaWNoIHNldHMgdGhlIGZpbmFsIHZhbHVlLCB0eXBlVGV4dCgpIHNpbXVsYXRlc1xuICogdGhlIHVzZXIgdHlwaW5nIGNoYXJhY3RlcnMg4oCUIHVzZWZ1bCBmb3IgYXV0b2NvbXBsZXRlIGZpbHRlcmluZyB3aGVyZVxuICogdGhlIHNlYXJjaCB0ZXh0IGlzIG5vdCB0aGUgZmluYWwgdmFsdWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGV4dENvbnRyb2xGaWVsZEFjY2Vzc29yIGV4dGVuZHMgQ29udHJvbEZpZWxkQWNjZXNzb3Ige1xuICAvKipcbiAgICogVHlwZSB0ZXh0IGludG8gdGhlIGlucHV0IGZpZWxkIChlLmcuIGF1dG9jb21wbGV0ZSBzZWFyY2ggdGV4dCkuXG4gICAqIEFwcGVuZHMgdG8gZXhpc3RpbmcgdGV4dCBvciByZXBsYWNlcyBpdCwgZGVwZW5kaW5nIG9uIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICB0eXBlVGV4dCh0ZXh0OiBzdHJpbmcpOiB2b2lkO1xufVxuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiBmb3IgSUlucHV0RmllbGRBY2Nlc3Nvci5cbiAqXG4gKiBDb21wb25lbnRzIHRoYXQgaW1wbGVtZW50IElJbnB1dEZpZWxkQWNjZXNzb3Igc2hvdWxkIHByb3ZpZGUgdGhlbXNlbHZlczpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIEBDb21wb25lbnQoe1xuICogICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IElOUFVUX0ZJRUxEX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogTXlGaWVsZENvbXBvbmVudCB9XVxuICogfSlcbiAqIGBgYFxuICpcbiAqIENvbnN1bWVycyAoZS5nLiBiYXJjb2RlIG5hdmlnYXRpb24gZGlyZWN0aXZlcykgaW5qZWN0IHRoaXMgdG9rZW4gd2l0aCBASG9zdCgpXG4gKiB0byBhY2Nlc3MgdGhlIGZpZWxkIGhhbmRsZXIgb2YgdGhlIGNvbXBvbmVudCB0aGV5J3JlIHBsYWNlZCBvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IElOUFVUX0ZJRUxEX0FDQ0VTU09SID0gbmV3IEluamVjdGlvblRva2VuPENvbnRyb2xGaWVsZEFjY2Vzc29yPignSU5QVVRfRklFTERfQUNDRVNTT1InKTtcbiJdfQ==
@@ -1,51 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- import { FocusOrigin } from '@angular/cdk/a11y';
3
- /**
4
- * Generic interface for programmatic access to a form field.
5
- *
6
- * Implemented by form field components (autocomplete, date, duration, boolean, etc.)
7
- * to allow external code to focus, write values, or type text without knowing
8
- * the concrete component type.
9
- *
10
- * Use cases: barcode scanner navigation, voice dictation, keyboard shortcuts,
11
- * test automation — any scenario that needs programmatic field interaction.
12
- */
13
- export interface ControlFieldAccessor {
14
- /** Set focus on this field */
15
- focus(options?: FocusOptions, origin?: FocusOrigin): void;
16
- /** Write a value to the field (equivalent to ControlValueAccessor.writeValue) */
17
- writeValue(value: any): void;
18
- clearValue(): void;
19
- readonly focused: boolean;
20
- /** The formControl name, if this field is part of a reactive form */
21
- readonly controlName?: string;
22
- }
23
- /**
24
- * Extended interface for fields that accept typed text input
25
- * (autocomplete search text, text inputs, textareas).
26
- *
27
- * Unlike writeValue() which sets the final value, typeText() simulates
28
- * the user typing characters — useful for autocomplete filtering where
29
- * the search text is not the final value.
30
- */
31
- export interface TextControlFieldAccessor extends ControlFieldAccessor {
32
- /**
33
- * Type text into the input field (e.g. autocomplete search text).
34
- * Appends to existing text or replaces it, depending on the component.
35
- */
36
- typeText(text: string): void;
37
- }
38
- /**
39
- * Injection token for IInputFieldAccessor.
40
- *
41
- * Components that implement IInputFieldAccessor should provide themselves:
42
- * ```typescript
43
- * @Component({
44
- * providers: [{ provide: INPUT_FIELD_ACCESSOR, useExisting: MyFieldComponent }]
45
- * })
46
- * ```
47
- *
48
- * Consumers (e.g. barcode navigation directives) inject this token with @Host()
49
- * to access the field handler of the component they're placed on.
50
- */
51
- export declare const INPUT_FIELD_ACCESSOR: InjectionToken<ControlFieldAccessor>;