@sumaris-net/ngx-components 21.3.6-rc1 → 21.4.1

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.
@@ -4,11 +4,11 @@ import * as i0 from '@angular/core';
4
4
  import { InjectionToken, Predicate, Injector, ElementRef, QueryList, OnInit, AfterViewInit, OnDestroy, ChangeDetectorRef, Renderer2, EventEmitter, TemplateRef, PipeTransform, AfterContentInit, OnChanges, SimpleChanges, ViewContainerRef, AfterContentChecked, NgZone, Provider, ModuleWithProviders } from '@angular/core';
5
5
  import { CacheConfig } from 'ionic-cache/lib/interfaces/cache-config.interface';
6
6
  import * as i28 from '@angular/material/core';
7
- import { ThemePalette, DateAdapter, ErrorStateMatcher } from '@angular/material/core';
7
+ import { ThemePalette, ErrorStateMatcher, DateAdapter } from '@angular/material/core';
8
8
  import * as _ionic_core from '@ionic/core';
9
9
  import { PredefinedColors, Color as Color$1, OverlayEventDetail, ToastOptions, Platforms } from '@ionic/core';
10
10
  import * as i8 from '@angular/material/form-field';
11
- import { FloatLabelType, MatFormFieldAppearance, SubscriptSizing, MatFormFieldControl, MatFormField, MatFormFieldDefaultOptions } from '@angular/material/form-field';
11
+ import { FloatLabelType, MatFormFieldAppearance, SubscriptSizing, MatFormFieldDefaultOptions, MatFormFieldControl, MatFormField } from '@angular/material/form-field';
12
12
  import { ConnectionType, ConnectionStatus } from '@capacitor/network';
13
13
  export { ConnectionType } from '@capacitor/network';
14
14
  import { HttpClient, HttpProgressEvent, HttpResponse, HttpEventType, HttpEvent, HttpHeaders, HttpParams, HttpInterceptor, HttpRequest, HttpHandler } from '@angular/common/http';
@@ -1513,6 +1513,10 @@ declare abstract class FormFieldValuesHolder {
1513
1513
  interface FocusableElement {
1514
1514
  focus(): any;
1515
1515
  }
1516
+ /**
1517
+ * Check if the element, or one of its children, has the focus
1518
+ */
1519
+ declare function hasFocusWithin(element: Element): boolean;
1516
1520
  declare function isFocusableElement(object: any): object is FocusableElement;
1517
1521
 
1518
1522
  declare function selectInputContentFromEvent(event: Event): boolean;
@@ -1521,6 +1525,24 @@ declare function selectInputRange(input: HTMLInputElement | HTMLTextAreaElement,
1521
1525
  declare function getCaretPosition(input: any): number;
1522
1526
  declare function moveInputCaretToSeparator(event: KeyboardEvent, separator: string, forward?: boolean): boolean;
1523
1527
  declare function filterNumberInput(event: KeyboardEvent, allowDecimals: boolean, decimalSeparator?: string): void;
1528
+ /**
1529
+ * Type a text into an input, as if typed by the user (e.g. a key press, or a barcode scanner):
1530
+ * the text is inserted at the caret position (replacing the selected text, if any).
1531
+ * Can be called several times (e.g. char by char).
1532
+ *
1533
+ * A 'beforeinput' event is dispatched first, so that an input mask (e.g. Maskito) can reject or transform the text.
1534
+ * Then, because a synthetic event has no default action, the text is inserted, and an 'input' event is dispatched
1535
+ * (to update the value accessor, the mask, etc.)
1536
+ *
1537
+ * @param input the input element
1538
+ * @param text the text to type
1539
+ * @param opts.replaceAllIfRejected if true, and if the text is rejected (e.g. the input is full), then the whole input text
1540
+ * is replaced by the typed text (e.g. to restart typing, in a complete date field)
1541
+ * @return true if the input value has changed, false if the text has been rejected (e.g. by the mask), or if the input is disabled or readonly
1542
+ */
1543
+ declare function typeTextIntoInput(input: HTMLInputElement | HTMLTextAreaElement, text: string, opts?: {
1544
+ replaceAllIfRejected?: boolean;
1545
+ }): boolean;
1524
1546
  declare function focusInput<T = any>(element: ElementRef<T>): void;
1525
1547
  declare function setTabIndex<T = any>(element: ElementRef<T>, tabIndex: number): void;
1526
1548
  interface InputElement extends FocusableElement {
@@ -1532,7 +1554,7 @@ interface InputElement extends FocusableElement {
1532
1554
  value: any;
1533
1555
  }
1534
1556
  declare function isInputElement(object: any): object is InputElement;
1535
- declare function asInputElement<T = any>(object: ElementRef<T>): InputElement | undefined;
1557
+ declare function asInputElement<T = any>(object: ElementRef<T> | InputElement): InputElement | undefined;
1536
1558
  declare function tabindexComparator(a: InputElement, b: InputElement): 0 | 1 | -1;
1537
1559
  interface CanGainFocusOptions {
1538
1560
  minTabindex?: number;
@@ -1551,6 +1573,58 @@ declare function focusPreviousInput<T = any>(event: Event | undefined, elements:
1551
1573
  declare function getInputSelectionRangesFromMask(mask: (string | RegExp)[]): number[][];
1552
1574
  declare function getInputRangeFromCaretIndex(caretIndex: number, inputRanges: number[][]): number[];
1553
1575
 
1576
+ /**
1577
+ * Generic interface for programmatic access to a form field.
1578
+ *
1579
+ * Implemented by form field components (autocomplete, date, duration, boolean, lat/long, etc.)
1580
+ * to allow external code to focus, write values, or type text without knowing
1581
+ * the concrete component type.
1582
+ *
1583
+ * Use cases: barcode scanner navigation, voice dictation, keyboard shortcuts,
1584
+ * test automation — any scenario that needs programmatic field interaction.
1585
+ */
1586
+ interface IAppInputField extends InputElement {
1587
+ /** Write a value to the field (the `ControlValueAccessor.writeValue()` of the component - may only update the view) */
1588
+ writeValue(value: any): void;
1589
+ /** Clear the value (as the clear button would do): the form control is updated */
1590
+ clearValue(event?: Event): void;
1591
+ /** True if the field (or one of its inner elements) has the focus */
1592
+ readonly hasFocus: boolean;
1593
+ /** The control name, if this field is part of a reactive form (given by `formControlName`, or deduced from the form control) */
1594
+ readonly controlName?: string;
1595
+ }
1596
+ /**
1597
+ * Extended interface for fields that accept typed text input
1598
+ * (autocomplete search text, text inputs, dates, duration, lat/long, etc.).
1599
+ *
1600
+ * Unlike writeValue() which sets the final value (and may only update the view),
1601
+ * typeText() simulates the user typing characters: the form control is updated, as after a user input.
1602
+ */
1603
+ interface IAppTextInputField extends IAppInputField {
1604
+ /**
1605
+ * Type a text into the field, as if typed by the user (e.g. a key press, or a barcode scanner):
1606
+ * the text is inserted at the caret position (replacing the selected text, if any), and the input mask (if any) is applied.
1607
+ * Can be called several times, e.g. char by char: typeText('A') then typeText('B') displays 'AB'.
1608
+ */
1609
+ typeText(text: string): void;
1610
+ }
1611
+ /**
1612
+ * Injection token for IAppInputField.
1613
+ *
1614
+ * Components that implement IAppInputField should provide themselves:
1615
+ * ```typescript
1616
+ * @Component({
1617
+ * providers: [{ provide: APP_INPUT_FIELD, useExisting: forwardRef(() => MyFieldComponent) }]
1618
+ * })
1619
+ * ```
1620
+ *
1621
+ * Consumers (e.g. barcode navigation directives) inject this token with @Host()
1622
+ * to access the field component they're placed on.
1623
+ */
1624
+ declare const APP_INPUT_FIELD: InjectionToken<IAppInputField>;
1625
+ declare function isAppInputField(object: any): object is IAppInputField;
1626
+ declare function isAppTextInputField(object: any): object is IAppTextInputField;
1627
+
1554
1628
  interface MatAutocompleteFieldSelectChange {
1555
1629
  source: MatSelect | MatAutocomplete;
1556
1630
  value: any;
@@ -1559,13 +1633,18 @@ interface MatAutocompleteFieldToggleFavorite {
1559
1633
  source: MatSelect | MatAutocomplete;
1560
1634
  value: any;
1561
1635
  }
1562
- declare class MatAutocompleteField implements OnInit, AfterViewInit, OnDestroy, InputElement, ControlValueAccessor {
1636
+ declare class MatAutocompleteField implements OnInit, AfterViewInit, OnDestroy, IAppTextInputField, ControlValueAccessor {
1563
1637
  protected injector: Injector;
1564
1638
  protected el: ElementRef<HTMLElement>;
1565
1639
  protected cd: ChangeDetectorRef;
1566
1640
  protected modalController: ModalController;
1567
1641
  protected renderer: Renderer2;
1568
1642
  private formGroupDir;
1643
+ protected readonly _hostElement: HTMLElement;
1644
+ /** IAppInputField: true if the field (or one of its inner elements) has the focus */
1645
+ get hasFocus(): boolean;
1646
+ /** IAppInputField: the control name (given by `formControlName`, or deduced from the form control) */
1647
+ get controlName(): string | undefined;
1569
1648
  private _onChangeCallback;
1570
1649
  private _onTouchedCallback;
1571
1650
  private _onFetchMoreCallback;
@@ -1584,6 +1663,9 @@ declare class MatAutocompleteField implements OnInit, AfterViewInit, OnDestroy,
1584
1663
  protected _$filteredItems: BehaviorSubject<any[]>;
1585
1664
  protected _selectedItem: any;
1586
1665
  protected _displayValue: string;
1666
+ protected _searchbarText: string;
1667
+ protected _searchbarAppliedText: string;
1668
+ protected _searchbarOpening: boolean;
1587
1669
  protected _moreItemsCount: number;
1588
1670
  protected _fetchMore$: EventEmitter<Event>;
1589
1671
  protected _defaultPanelWidth: string;
@@ -1701,6 +1783,18 @@ declare class MatAutocompleteField implements OnInit, AfterViewInit, OnDestroy,
1701
1783
  registerOnTouched(fn: any): void;
1702
1784
  setDisabledState(isDisabled: boolean): void;
1703
1785
  focus(): void;
1786
+ /**
1787
+ * IAppTextInputField: type text into the search text, then trigger suggest. Can be called several times (e.g. char by char).
1788
+ * If an item is already selected, the search restarts (the typed text replaces the selected item, as a user would do).
1789
+ * - desktop mode: the text is inserted into the input, at the caret position;
1790
+ * - mobile (or multiple) mode: the panel of the <mat-select> is opened, and the text is appended to the <ion-searchbar>
1791
+ * (or to a hidden search text, if no search bar).
1792
+ */
1793
+ typeText(text: string): void;
1794
+ protected hasSelectedItem(): boolean;
1795
+ protected typeTextIntoSearchbar(text: string): void;
1796
+ protected applySearchbarText(): void;
1797
+ protected searchFromText(value: string): void;
1704
1798
  filterInputTextFocusEvent(event: FocusEvent): boolean;
1705
1799
  protected filterInputTextBlurEvent(event: FocusEvent): void;
1706
1800
  protected emitEnter(event: Event | KeyboardEvent): void;
@@ -1771,14 +1865,184 @@ declare class MatAutocompleteField implements OnInit, AfterViewInit, OnDestroy,
1771
1865
  static ngAcceptInputType_readonly: unknown;
1772
1866
  }
1773
1867
 
1774
- declare class AppFormField implements OnInit, ControlValueAccessor {
1868
+ declare class MatChipsField implements OnInit, OnDestroy, IAppInputField, ControlValueAccessor {
1869
+ protected cd: ChangeDetectorRef;
1870
+ private formGroupDir;
1871
+ protected readonly _hostElement: HTMLElement;
1872
+ /** IAppInputField: true if the field (or one of its inner elements) has the focus */
1873
+ get hasFocus(): boolean;
1874
+ /** IAppInputField: the control name (given by `formControlName`, or deduced from the form control) */
1875
+ get controlName(): string | undefined;
1876
+ private _onChangeCallback;
1877
+ private _onTouchedCallback;
1878
+ private _onFetchMoreCallback;
1879
+ private _implicitValue;
1880
+ private _subscription;
1881
+ private _itemsSubscription;
1882
+ private _openedSubscription;
1883
+ private _$filter;
1884
+ private _itemCount;
1885
+ private _suggestExecutionId;
1886
+ private _reload$;
1887
+ private _appearance;
1888
+ private _subscriptSizing;
1889
+ private readonly _defaultAppearance;
1890
+ private readonly _defaultSubscriptSizing;
1891
+ protected _tabindex: number;
1892
+ protected _$inputItems: BehaviorSubject<any[]>;
1893
+ protected _$filteredItems: BehaviorSubject<any[]>;
1894
+ protected _inputControl: UntypedFormControl;
1895
+ protected _moreItemsCount: number;
1896
+ protected _fetchMore$: EventEmitter<Event>;
1897
+ protected _errorStateMatcher: ErrorStateMatcher;
1898
+ equals: EqualsFn;
1899
+ logPrefix: string;
1900
+ formControl: UntypedFormControl;
1901
+ formControlName: string;
1902
+ floatLabel: AppFloatLabelType;
1903
+ placeholder: string;
1904
+ suggestFn: SuggestFn<any, any>;
1905
+ required: boolean;
1906
+ mobile: boolean;
1907
+ readonly: boolean;
1908
+ clearable: boolean;
1909
+ debounceTime: number;
1910
+ displaySeparator: string | null;
1911
+ displayWith: DisplayFn | null;
1912
+ displayAttributes: string[];
1913
+ displayColumnSizes: (number | 'auto' | undefined)[];
1914
+ displayColumnNames: string[];
1915
+ highlightAccent: boolean;
1916
+ showAllOnFocus: boolean;
1917
+ showPanelOnFocus: boolean;
1918
+ autofocus: boolean;
1919
+ config: MatAutocompleteFieldConfig;
1920
+ i18nPrefix: string;
1921
+ noResultMessage: string;
1922
+ panelClass: string;
1923
+ panelWidth: string;
1924
+ disableRipple: boolean;
1925
+ matAutocompletePosition: 'auto' | 'above' | 'below';
1926
+ itemSize: string;
1927
+ fetchMoreThreshold: string;
1928
+ suggestLengthThreshold: number;
1929
+ showLoadingSpinner: boolean;
1930
+ chipColor: ThemePalette;
1931
+ debug: boolean;
1932
+ applyImplicitValue: boolean | ((value: any) => boolean);
1933
+ dropButtonTitle: string;
1934
+ clearButtonTitle: string;
1935
+ trimSearchText: boolean;
1936
+ hideRequiredMarker: boolean;
1937
+ colSizes: [number | 'auto', number | 'auto'];
1938
+ separatorKeysCodes: number[];
1939
+ showChips: boolean;
1940
+ set appearance(value: MatFormFieldAppearance);
1941
+ get appearance(): MatFormFieldAppearance;
1942
+ set subscriptSizing(value: SubscriptSizing);
1943
+ get subscriptSizing(): SubscriptSizing;
1944
+ /**
1945
+ * @deprecated Use panelClass instead
1946
+ */
1947
+ set classList(value: string);
1948
+ get classList(): string;
1949
+ clicked: EventEmitter<MouseEvent>;
1950
+ blurred: EventEmitter<FocusEvent>;
1951
+ focused: EventEmitter<FocusEvent>;
1952
+ dropButtonClick: EventEmitter<Event>;
1953
+ keydownEscape: EventEmitter<Event>;
1954
+ keyupEnter: EventEmitter<Event>;
1955
+ matInputText: ElementRef;
1956
+ autocomplete: MatAutocomplete;
1957
+ autocompleteTrigger: MatAutocompleteTrigger;
1958
+ showTooltip: boolean;
1959
+ constructor(cd: ChangeDetectorRef, formGroupDir: FormGroupDirective, defaultOptions?: MatFormFieldDefaultOptions);
1960
+ get itemCount(): number;
1961
+ get canFetchMore(): boolean;
1962
+ set filter(value: any);
1963
+ get filter(): any;
1964
+ set tabindex(value: number);
1965
+ get tabindex(): number;
1966
+ set items(value: Observable<any[]> | any[]);
1967
+ get items(): Observable<any[]> | any[];
1968
+ get value(): any[];
1969
+ get disabled(): boolean;
1970
+ get enabled(): boolean;
1971
+ get loading(): boolean;
1972
+ ngOnInit(): void;
1973
+ ngOnDestroy(): void;
1974
+ /**
1975
+ * Add item to chips
1976
+ *
1977
+ * @param item
1978
+ */
1979
+ add(item: any): void;
1980
+ /**
1981
+ * Remove item from chips
1982
+ *
1983
+ * @param item
1984
+ */
1985
+ remove(item: any): void;
1986
+ /**
1987
+ * Allow to reload content. Useful when filter has been changed but not detected
1988
+ */
1989
+ reloadItems(value?: any): void;
1990
+ writeValue(value: any[]): void;
1991
+ registerOnChange(fn: any): void;
1992
+ registerOnTouched(fn: any): void;
1993
+ setDisabledState(isDisabled: boolean): void;
1994
+ focus(): void;
1995
+ filterInputTextFocusEvent(event: FocusEvent): boolean;
1996
+ protected filterInputTextBlurEvent(event: FocusEvent): void;
1997
+ filterChipsFocusEvent(event: FocusEvent): void;
1998
+ clearValue(event?: Event): void;
1999
+ _initAutocompleteInfiniteScroll(threshold?: string): void;
2000
+ get isOpen(): boolean;
2001
+ closePanel(): void;
2002
+ protected toggleShowPanel(event: Event): void;
2003
+ private suggest;
2004
+ private fetchMore;
2005
+ private updateImplicitValue;
2006
+ private checkIfTouched;
2007
+ private getAutocompletePanel;
2008
+ private markForCheck;
2009
+ private markAsLoading;
2010
+ static ɵfac: i0.ɵɵFactoryDeclaration<MatChipsField, [null, { optional: true; }, null]>;
2011
+ static ɵcmp: i0.ɵɵComponentDeclaration<MatChipsField, "mat-chips-field", never, { "equals": { "alias": "equals"; "required": false; }; "logPrefix": { "alias": "logPrefix"; "required": false; }; "formControl": { "alias": "formControl"; "required": false; }; "formControlName": { "alias": "formControlName"; "required": false; }; "floatLabel": { "alias": "floatLabel"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "suggestFn": { "alias": "suggestFn"; "required": false; }; "required": { "alias": "required"; "required": false; }; "mobile": { "alias": "mobile"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "debounceTime": { "alias": "debounceTime"; "required": false; }; "displaySeparator": { "alias": "displaySeparator"; "required": false; }; "displayWith": { "alias": "displayWith"; "required": false; }; "displayAttributes": { "alias": "displayAttributes"; "required": false; }; "displayColumnSizes": { "alias": "displayColumnSizes"; "required": false; }; "displayColumnNames": { "alias": "displayColumnNames"; "required": false; }; "highlightAccent": { "alias": "highlightAccent"; "required": false; }; "showAllOnFocus": { "alias": "showAllOnFocus"; "required": false; }; "showPanelOnFocus": { "alias": "showPanelOnFocus"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "config": { "alias": "config"; "required": false; }; "i18nPrefix": { "alias": "i18nPrefix"; "required": false; }; "noResultMessage": { "alias": "noResultMessage"; "required": false; }; "panelClass": { "alias": "panelClass"; "required": false; }; "panelWidth": { "alias": "panelWidth"; "required": false; }; "disableRipple": { "alias": "disableRipple"; "required": false; }; "matAutocompletePosition": { "alias": "matAutocompletePosition"; "required": false; }; "itemSize": { "alias": "itemSize"; "required": false; }; "fetchMoreThreshold": { "alias": "fetchMoreThreshold"; "required": false; }; "suggestLengthThreshold": { "alias": "suggestLengthThreshold"; "required": false; }; "showLoadingSpinner": { "alias": "showLoadingSpinner"; "required": false; }; "chipColor": { "alias": "chipColor"; "required": false; }; "debug": { "alias": "debug"; "required": false; }; "applyImplicitValue": { "alias": "applyImplicitValue"; "required": false; }; "dropButtonTitle": { "alias": "dropButtonTitle"; "required": false; }; "clearButtonTitle": { "alias": "clearButtonTitle"; "required": false; }; "trimSearchText": { "alias": "trimSearchText"; "required": false; }; "hideRequiredMarker": { "alias": "hideRequiredMarker"; "required": false; }; "colSizes": { "alias": "colSizes"; "required": false; }; "separatorKeysCodes": { "alias": "separatorKeysCodes"; "required": false; }; "showChips": { "alias": "showChips"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "subscriptSizing": { "alias": "subscriptSizing"; "required": false; }; "classList": { "alias": "class"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "items": { "alias": "items"; "required": false; }; }, { "clicked": "click"; "blurred": "blur"; "focused": "focus"; "dropButtonClick": "dropButtonClick"; "keydownEscape": "keydown.escape"; "keyupEnter": "keyup.enter"; }, never, ["[matAfter]", "[matPrefix]", "[matSuffix]", "mat-error,[matError]", "mat-hint:not([align='end']),[matHint]", "mat-hint[align='end']"], false, never>;
2012
+ static ngAcceptInputType_required: unknown;
2013
+ static ngAcceptInputType_mobile: unknown;
2014
+ static ngAcceptInputType_readonly: unknown;
2015
+ static ngAcceptInputType_clearable: unknown;
2016
+ static ngAcceptInputType_debounceTime: unknown;
2017
+ static ngAcceptInputType_highlightAccent: unknown;
2018
+ static ngAcceptInputType_showAllOnFocus: unknown;
2019
+ static ngAcceptInputType_showPanelOnFocus: unknown;
2020
+ static ngAcceptInputType_autofocus: unknown;
2021
+ static ngAcceptInputType_disableRipple: unknown;
2022
+ static ngAcceptInputType_suggestLengthThreshold: unknown;
2023
+ static ngAcceptInputType_showLoadingSpinner: unknown;
2024
+ static ngAcceptInputType_debug: unknown;
2025
+ static ngAcceptInputType_trimSearchText: unknown;
2026
+ static ngAcceptInputType_hideRequiredMarker: unknown;
2027
+ static ngAcceptInputType_showChips: unknown;
2028
+ }
2029
+
2030
+ declare class AppFormField implements OnInit, ControlValueAccessor, IAppTextInputField {
1775
2031
  protected translate: TranslateService;
1776
2032
  protected cd: ChangeDetectorRef;
1777
2033
  protected injector: Injector;
1778
2034
  private formGroupDir;
2035
+ protected readonly _hostElement: HTMLElement;
2036
+ /** IAppInputField: true if the field (or one of its inner elements) has the focus */
2037
+ get hasFocus(): boolean;
2038
+ /** IAppInputField: the control name (given by `formControlName`, or deduced from the form control) */
2039
+ get controlName(): string | undefined;
2040
+ static TYPED_TEXT_RESET_DELAY_MS: number;
1779
2041
  private _onChangeCallback;
1780
2042
  private _onTouchedCallback;
1781
2043
  private _definition;
2044
+ private _typedText;
2045
+ private _typedTextTime;
1782
2046
  protected _values: Property[];
1783
2047
  protected type: FormFieldType;
1784
2048
  protected numberInputStep: string;
@@ -1807,17 +2071,30 @@ declare class AppFormField implements OnInit, ControlValueAccessor {
1807
2071
  onKeyupEnter: EventEmitter<any>;
1808
2072
  definitionChanged: EventEmitter<FormFieldDefinition<string, FormFieldType, any, any>>;
1809
2073
  get value(): any;
1810
- matInput: ElementRef;
2074
+ matInput: ElementRef | IAppInputField;
1811
2075
  autocompleteField: MatAutocompleteField;
2076
+ chipsField: MatChipsField;
2077
+ matSelect: MatSelect;
1812
2078
  constructor(translate: TranslateService, cd: ChangeDetectorRef, injector: Injector, formGroupDir: FormGroupDirective);
1813
2079
  ngOnInit(): void;
1814
2080
  writeValue(obj: any): void;
2081
+ clearValue(event?: Event): void;
1815
2082
  registerOnChange(fn: any): void;
1816
2083
  registerOnTouched(fn: any): void;
1817
2084
  setDisabledState(disabled: boolean): void;
1818
2085
  markAsTouched(): void;
1819
2086
  filterAlphanumericalInput(event: KeyboardEvent): void;
1820
2087
  focus(): void;
2088
+ /**
2089
+ * IAppTextInputField: type text into the field, as a user (or a barcode scanner) would do.
2090
+ * Can be called several times (e.g. char by char):
2091
+ * - text inputs (string, integer, double, color): insert the text at the caret position;
2092
+ * - entity, boolean, date, dateTime: delegate to the inner field (e.g. autocomplete search text, yes/no first letter, masked date input);
2093
+ * - enum (no text input): the typed texts are accumulated (until a pause of TYPED_TEXT_RESET_DELAY_MS),
2094
+ * then the matching item is selected (by key or translated label, or by their first letters - case insensitive);
2095
+ * - enums, entities: not supported.
2096
+ */
2097
+ typeText(text: string): void;
1821
2098
  filterNumberInput: typeof filterNumberInput;
1822
2099
  selectInputContentFromEvent: typeof selectInputContentFromEvent;
1823
2100
  getDisplayValueFn: typeof FormFieldDefinitionUtils.getDisplayValueFn;
@@ -1828,6 +2105,20 @@ declare class AppFormField implements OnInit, ControlValueAccessor {
1828
2105
  * @param value
1829
2106
  */
1830
2107
  reloadItems(value?: any): void;
2108
+ /**
2109
+ * The inner field component, that implements IAppInputField (autocomplete, chips, boolean, date, dateTime), if any
2110
+ */
2111
+ protected get innerField(): IAppInputField | undefined;
2112
+ /**
2113
+ * Convert a typed text into an enum value
2114
+ *
2115
+ * @return the value, or undefined if the text does not match
2116
+ */
2117
+ protected parseTypedText(text: string): any;
2118
+ /**
2119
+ * Find an enum item, by its key or its translated label (case insensitive): exact match first, then by the first letters
2120
+ */
2121
+ protected findEnumValue(text: string): Property | undefined;
1831
2122
  protected computeNumberInputStep(definition: FormFieldDefinition): string;
1832
2123
  protected checkAndResolveFormControl(): void;
1833
2124
  protected _onDefinitionChanged(definition: FormFieldDefinition, opts?: {
@@ -2327,6 +2618,21 @@ declare function splitDegreesToDDMMSSArray(value: number, opts: LatLongFormatOpt
2327
2618
  longitude: boolean;
2328
2619
  }): number[];
2329
2620
  declare function parseLatitudeOrLongitude(input: string, pattern: string, maxDecimals?: number, placeholderChar?: string): number | null;
2621
+ /**
2622
+ * Parse a free text lat/long (e.g. from a barcode scanner, or a voice dictation), whatever the display pattern of the field:
2623
+ * - decimal degrees: `47.5083`, `-4,25`, `4.25 W`
2624
+ * - degrees and decimal minutes: `47°30.5' N`, `47 30.5 N`, `-4 15`
2625
+ * - degrees, minutes and decimal seconds: `47°30'15.5" N`, `47 30 15.5 S`
2626
+ *
2627
+ * The sign is given by a leading '-', or by a hemisphere letter (N/S/E/W, or 'O' for 'Ouest'), as prefix or suffix.
2628
+ * Only the last part (degrees, minutes or seconds) can have decimals.
2629
+ *
2630
+ * @return the decimal degrees, null if the text is blank, or NaN if the text is invalid (or out of range)
2631
+ */
2632
+ declare function parseLatLongText(text: string, opts?: {
2633
+ type?: LatLongType;
2634
+ maxDecimals?: number;
2635
+ }): number | null;
2330
2636
  declare function computeDecimalDegrees(degrees: number, minutes: number, seconds: number, sign: -1 | 1, maxDecimals?: number): number;
2331
2637
 
2332
2638
  declare class LatitudeFormatPipe implements PipeTransform {
@@ -2389,8 +2695,9 @@ declare class NumberFormatPipe implements PipeTransform {
2389
2695
  */
2390
2696
 
2391
2697
  declare class FileSizePipe implements PipeTransform {
2392
- private units;
2393
- transform(bytes?: number, precision?: number): string;
2698
+ private static readonly UNITS;
2699
+ private readonly translate;
2700
+ transform(bytes: number, precision?: number): string;
2394
2701
  static ɵfac: i0.ɵɵFactoryDeclaration<FileSizePipe, never>;
2395
2702
  static ɵpipe: i0.ɵɵPipeDeclaration<FileSizePipe, "fileSize", false>;
2396
2703
  }
@@ -2859,6 +3166,12 @@ declare function waitIdle<T extends {
2859
3166
  declare function filterFormErrorsByPrefix(errors: FormErrors, ...prefixes: string[]): FormErrors;
2860
3167
  declare function filterFormErrorsByPath(errors: FormErrors, filter: Predicate<string>): FormErrors;
2861
3168
  declare function filterFormErrors(errors: FormErrors, filter: Predicate<[string, any]>): FormErrors;
3169
+ /**
3170
+ * Get the name of a control, in its parent form group (or its index, in a form array)
3171
+ *
3172
+ * @return the control name, or undefined if not found (e.g. a control without parent)
3173
+ */
3174
+ declare function getFormControlName(control: AbstractControl): string | undefined;
2862
3175
 
2863
3176
  declare const APP_FORM_ERROR_I18N_KEYS: InjectionToken<ObjectMap<string>>;
2864
3177
  interface IFormPathTranslatorOptions {
@@ -3350,12 +3663,36 @@ declare class MatLatLongFieldInput implements MatFormFieldControl<number>, Contr
3350
3663
  autoFocusPrev(controlName: string, prevControlName: string): void;
3351
3664
  getElementByName(name: string): HTMLElement | undefined;
3352
3665
  setDescribedByIds(ids: string[]): void;
3666
+ focus(): void;
3667
+ /**
3668
+ * Type a text, char by char, as if typed by the user, into the focused part (degrees, minutes or seconds)
3669
+ * - or into the first empty part, if no part is focused:
3670
+ * - digits, decimal separator or minus sign: typed into the part (with its mask). When a part is complete,
3671
+ * the focus moves to the next part (see handleInput());
3672
+ * - a separator (°, ', ", space): moves to the next part (if the current part is not empty);
3673
+ * - a hemisphere letter (N/S/E/W, or O for 'Ouest'): set the sign.
3674
+ */
3675
+ typeText(text: string): void;
3676
+ protected typeChar(char: string): void;
3677
+ /**
3678
+ * Check if all parts (degrees, minutes, seconds) are filled, and valid
3679
+ */
3680
+ protected isComplete(): boolean;
3681
+ /**
3682
+ * Clear all parts (and reset the sign to its default), to restart typing
3683
+ */
3684
+ protected restartTyping(): void;
3685
+ protected getPartNames(): string[];
3686
+ protected getFocusedPartName(): string | undefined;
3687
+ protected getFirstEmptyPartName(): string;
3688
+ protected getNextPartName(partName: string): string | undefined;
3353
3689
  onContainerClick(): void;
3354
3690
  writeValue(value: number | null): void;
3355
3691
  registerOnChange(fn: any): void;
3356
3692
  registerOnTouched(fn: any): void;
3357
3693
  setDisabledState(isDisabled: boolean): void;
3358
3694
  private computeLatLongFormGroupValue;
3695
+ private countIntegerDigits;
3359
3696
  private safeParseFloat;
3360
3697
  private updateValidators;
3361
3698
  static ɵfac: i0.ɵɵFactoryDeclaration<MatLatLongFieldInput, [null, { optional: true; }, { optional: true; self: true; }]>;
@@ -3364,9 +3701,14 @@ declare class MatLatLongFieldInput implements MatFormFieldControl<number>, Contr
3364
3701
  static ngAcceptInputType_disabled: unknown;
3365
3702
  }
3366
3703
 
3367
- declare class MatLatLongField implements ControlValueAccessor, OnInit, AfterViewInit, OnDestroy {
3704
+ declare class MatLatLongField implements ControlValueAccessor, IAppTextInputField, OnInit, AfterViewInit, OnDestroy {
3368
3705
  private cd;
3369
3706
  private formGroupDir;
3707
+ protected readonly _hostElement: HTMLElement;
3708
+ /** IAppInputField: true if the field (or one of its inner elements) has the focus */
3709
+ get hasFocus(): boolean;
3710
+ /** IAppInputField: the control name (given by `formControlName`, or deduced from the form control) */
3711
+ get controlName(): string | undefined;
3370
3712
  private _subscription;
3371
3713
  private _appearance;
3372
3714
  private _subscriptSizing;
@@ -3428,6 +3770,7 @@ declare class MatLatLongField implements ControlValueAccessor, OnInit, AfterView
3428
3770
  set subscriptSizing(value: SubscriptSizing);
3429
3771
  get subscriptSizing(): SubscriptSizing;
3430
3772
  get disabled(): any;
3773
+ get value(): number | null;
3431
3774
  input: MatLatLongFieldInput;
3432
3775
  pendingValue: any;
3433
3776
  pendingValueSet: boolean;
@@ -3443,6 +3786,15 @@ declare class MatLatLongField implements ControlValueAccessor, OnInit, AfterView
3443
3786
  ngAfterViewInit(): void;
3444
3787
  ngOnDestroy(): void;
3445
3788
  clearValue(event?: Event): void;
3789
+ focus(): void;
3790
+ /**
3791
+ * IAppTextInputField: type a text, as if typed by the user. Can be called several times (e.g. char by char):
3792
+ * - a single char, or digits only (e.g. '473015'): typed char by char into the parts (degrees, minutes, seconds),
3793
+ * moving to the next part when a part is complete (see MatLatLongFieldInput.typeText());
3794
+ * - a full lat/long text, with separators, sign or decimals (e.g. `47°30.5' N`, `-4.25`): parsed, whatever
3795
+ * the display pattern (DD, DDMM, DDMMSS), then the value is replaced (if the text is valid).
3796
+ */
3797
+ typeText(text: string): void;
3446
3798
  private markForCheck;
3447
3799
  static ɵfac: i0.ɵɵFactoryDeclaration<MatLatLongField, [null, { optional: true; }, null]>;
3448
3800
  static ɵcmp: i0.ɵɵComponentDeclaration<MatLatLongField, "mat-latlong-field", never, { "formControl": { "alias": "formControl"; "required": false; }; "formControlName": { "alias": "formControlName"; "required": false; }; "type": { "alias": "type"; "required": false; }; "pattern": { "alias": "latLongPattern"; "required": false; }; "maxDecimals": { "alias": "maxDecimals"; "required": false; }; "required": { "alias": "required"; "required": false; }; "floatLabel": { "alias": "floatLabel"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "defaultSign": { "alias": "defaultSign"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "mobile": { "alias": "mobile"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "classList": { "alias": "class"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "subscriptSizing": { "alias": "subscriptSizing"; "required": false; }; }, {}, never, ["[matPrefix]", "[matSuffix]", "mat-error,[matError]", "mat-hint:not([align='end']),[matHint]", "mat-hint[align='end']"], false, never>;
@@ -3459,12 +3811,17 @@ declare class SharedMatLatLongModule {
3459
3811
  static ɵinj: i0.ɵɵInjectorDeclaration<SharedMatLatLongModule>;
3460
3812
  }
3461
3813
 
3462
- declare class MatDate implements OnInit, AfterViewInit, OnDestroy, ControlValueAccessor, InputElement {
3814
+ declare class MatDate implements OnInit, AfterViewInit, OnDestroy, ControlValueAccessor, IAppTextInputField {
3463
3815
  private dateAdapter;
3464
3816
  private translate;
3465
3817
  private formBuilder;
3466
3818
  private cd;
3467
3819
  private formGroupDir;
3820
+ protected readonly _hostElement: HTMLElement;
3821
+ /** IAppInputField: true if the field (or one of its inner elements) has the focus */
3822
+ get hasFocus(): boolean;
3823
+ /** IAppInputField: the control name (given by `formControlName`, or deduced from the form control) */
3824
+ get controlName(): string | undefined;
3468
3825
  private _onChangeCallback;
3469
3826
  private _onTouchedCallback;
3470
3827
  private readonly _subscription;
@@ -3510,6 +3867,14 @@ declare class MatDate implements OnInit, AfterViewInit, OnDestroy, ControlValueA
3510
3867
  ngAfterViewInit(): void;
3511
3868
  ngOnDestroy(): void;
3512
3869
  writeValue(value: any): void;
3870
+ /**
3871
+ * IAppTextInputField: type text into the date input (with the date mask), at the caret position, as if typed by the user.
3872
+ * The form control is updated as after a user input. Can be called several times (e.g. char by char).
3873
+ * If the value is already complete (the mask rejects the text), typing restarts (the whole text is replaced)
3874
+ */
3875
+ typeText(text: string): void;
3876
+ protected hasCompleteValue(): boolean;
3877
+ clearValue(event?: Event): void;
3513
3878
  registerOnChange(fn: any): void;
3514
3879
  registerOnTouched(fn: any): void;
3515
3880
  setDisabledState(isDisabled: boolean): void;
@@ -3543,13 +3908,18 @@ declare interface NgxTimePicker {
3543
3908
  open(): any;
3544
3909
  close(): any;
3545
3910
  }
3546
- declare class MatDateTime implements OnInit, AfterViewInit, OnDestroy, ControlValueAccessor, InputElement {
3911
+ declare class MatDateTime implements OnInit, AfterViewInit, OnDestroy, ControlValueAccessor, IAppTextInputField {
3547
3912
  private dateAdapter;
3548
3913
  private translate;
3549
3914
  private formBuilder;
3550
3915
  private renderer;
3551
3916
  private cd;
3552
3917
  private formGroupDir;
3918
+ protected readonly _hostElement: HTMLElement;
3919
+ /** IAppInputField: true if the field (or one of its inner elements) has the focus */
3920
+ get hasFocus(): boolean;
3921
+ /** IAppInputField: the control name (given by `formControlName`, or deduced from the form control) */
3922
+ get controlName(): string | undefined;
3553
3923
  private _onChangeCallback;
3554
3924
  private _onTouchedCallback;
3555
3925
  private _subscription;
@@ -3622,6 +3992,15 @@ declare class MatDateTime implements OnInit, AfterViewInit, OnDestroy, ControlVa
3622
3992
  ngAfterViewInit(): void;
3623
3993
  ngOnDestroy(): void;
3624
3994
  writeValue(value: any): void;
3995
+ /**
3996
+ * IAppTextInputField: type text into the date input (or the time input, if focused), at the caret position,
3997
+ * as if typed by the user. When the date is complete (the date mask rejects the text), the text is typed into the time input.
3998
+ * When date and time are complete, typing restarts (from the date).
3999
+ * The form control is updated as after a user input. Can be called several times (e.g. char by char)
4000
+ */
4001
+ typeText(text: string): void;
4002
+ protected hasCompleteValue(): boolean;
4003
+ clearValue(event?: Event): void;
3625
4004
  registerOnChange(fn: any): void;
3626
4005
  registerOnTouched(fn: any): void;
3627
4006
  setDisabledState(isDisabled: boolean): void;
@@ -3670,12 +4049,17 @@ declare class MatDateTime implements OnInit, AfterViewInit, OnDestroy, ControlVa
3670
4049
  static ngAcceptInputType_debug: unknown;
3671
4050
  }
3672
4051
 
3673
- declare class MatDateShort implements OnInit, ControlValueAccessor, InputElement, AfterViewInit, OnDestroy {
4052
+ declare class MatDateShort implements OnInit, ControlValueAccessor, IAppTextInputField, AfterViewInit, OnDestroy {
3674
4053
  private dateAdapter;
3675
4054
  private translate;
3676
4055
  private formBuilder;
3677
4056
  private cd;
3678
4057
  private formGroupDir;
4058
+ protected readonly _hostElement: HTMLElement;
4059
+ /** IAppInputField: true if the field (or one of its inner elements) has the focus */
4060
+ get hasFocus(): boolean;
4061
+ /** IAppInputField: the control name (given by `formControlName`, or deduced from the form control) */
4062
+ get controlName(): string | undefined;
3679
4063
  private _onChangeCallback;
3680
4064
  private _onTouchedCallback;
3681
4065
  private readonly _subscription;
@@ -3720,6 +4104,14 @@ declare class MatDateShort implements OnInit, ControlValueAccessor, InputElement
3720
4104
  ngAfterViewInit(): void;
3721
4105
  ngOnDestroy(): void;
3722
4106
  writeValue(value: any): void;
4107
+ /**
4108
+ * IAppTextInputField: type text into the year input (with the year mask), at the caret position, as if typed by the user.
4109
+ * The form control is updated as after a user input. Can be called several times (e.g. char by char).
4110
+ * If the value is already complete (the mask rejects the text), typing restarts (the whole text is replaced)
4111
+ */
4112
+ typeText(text: string): void;
4113
+ protected hasCompleteValue(): boolean;
4114
+ clearValue(event?: Event): void;
3723
4115
  registerOnChange(fn: any): void;
3724
4116
  registerOnTouched(fn: any): void;
3725
4117
  setDisabledState(isDisabled: boolean): void;
@@ -3755,12 +4147,17 @@ declare class SharedMatDateTimeModule {
3755
4147
  static ɵinj: i0.ɵɵInjectorDeclaration<SharedMatDateTimeModule>;
3756
4148
  }
3757
4149
 
3758
- declare class MatDuration implements OnInit, OnDestroy, ControlValueAccessor, InputElement {
4150
+ declare class MatDuration implements OnInit, OnDestroy, ControlValueAccessor, IAppTextInputField {
3759
4151
  private dateAdapter;
3760
4152
  private translate;
3761
4153
  private formBuilder;
3762
4154
  private cd;
3763
4155
  private formGroupDir;
4156
+ protected readonly _hostElement: HTMLElement;
4157
+ /** IAppInputField: true if the field (or one of its inner elements) has the focus */
4158
+ get hasFocus(): boolean;
4159
+ /** IAppInputField: the control name (given by `formControlName`, or deduced from the form control) */
4160
+ get controlName(): string | undefined;
3764
4161
  private _subscription;
3765
4162
  private _onChangeCallback;
3766
4163
  private _onTouchedCallback;
@@ -3792,6 +4189,14 @@ declare class MatDuration implements OnInit, OnDestroy, ControlValueAccessor, In
3792
4189
  ngOnInit(): void;
3793
4190
  ngOnDestroy(): void;
3794
4191
  writeValue(obj: any): void;
4192
+ /**
4193
+ * IAppTextInputField: type text into the duration input (with the duration mask), at the caret position, as if typed by the user.
4194
+ * The form control is updated as after a user input. Can be called several times (e.g. char by char).
4195
+ * If the value is already complete (the mask rejects the text), typing restarts (the whole text is replaced)
4196
+ */
4197
+ typeText(text: string): void;
4198
+ protected hasCompleteValue(): boolean;
4199
+ clearValue(event?: Event): void;
3795
4200
  registerOnChange(fn: any): void;
3796
4201
  registerOnTouched(fn: any): void;
3797
4202
  setDisabledState(isDisabled: boolean): void;
@@ -3816,9 +4221,15 @@ declare class SharedMatDurationModule {
3816
4221
  static ɵinj: i0.ɵɵInjectorDeclaration<SharedMatDurationModule>;
3817
4222
  }
3818
4223
 
3819
- declare class MatBooleanField implements OnInit, ControlValueAccessor, InputElement, OnDestroy {
4224
+ declare class MatBooleanField implements OnInit, ControlValueAccessor, IAppTextInputField, OnDestroy {
3820
4225
  private cd;
3821
4226
  private formGroupDir;
4227
+ protected readonly _hostElement: HTMLElement;
4228
+ protected readonly translate: TranslateService;
4229
+ /** IAppInputField: true if the field (or one of its inner elements) has the focus */
4230
+ get hasFocus(): boolean;
4231
+ /** IAppInputField: the control name (given by `formControlName`, or deduced from the form control) */
4232
+ get controlName(): string | undefined;
3822
4233
  private _onChangeCallback;
3823
4234
  private _onTouchedCallback;
3824
4235
  private readonly _subscription;
@@ -3871,6 +4282,16 @@ declare class MatBooleanField implements OnInit, ControlValueAccessor, InputElem
3871
4282
  setDisabledState(isDisabled: boolean): void;
3872
4283
  protected onFocusFakeInput(event: FocusEvent): void;
3873
4284
  protected onBlurInput(event: FocusEvent): void;
4285
+ /**
4286
+ * IAppTextInputField: set the value from a typed text (e.g. a barcode scanner), case insensitive:
4287
+ * '1' / '0', 'true' / 'false', or the yes/no labels (or their first letters, e.g. 'Y' / 'N' in English, 'O' / 'N' in French).
4288
+ * An unknown text is ignored.
4289
+ */
4290
+ typeText(text: string): void;
4291
+ /**
4292
+ * When focused, a key press can set the value (e.g. '1' / '0', or the first letter of the yes/no labels)
4293
+ */
4294
+ protected onKeydown(event: KeyboardEvent): void;
3874
4295
  focus(): void;
3875
4296
  protected onRadioValueChanged(event: MatRadioChange): void;
3876
4297
  protected onCheckboxValueChanged(event: MatCheckboxChange): void;
@@ -3909,9 +4330,14 @@ declare class SharedMatBooleanModule {
3909
4330
  static ɵinj: i0.ɵɵInjectorDeclaration<SharedMatBooleanModule>;
3910
4331
  }
3911
4332
 
3912
- declare class MatSwipeField implements OnInit, InputElement, OnDestroy, ControlValueAccessor {
4333
+ declare class MatSwipeField implements OnInit, IAppInputField, OnDestroy, ControlValueAccessor {
3913
4334
  protected cd: ChangeDetectorRef;
3914
4335
  private formGroupDir;
4336
+ protected readonly _hostElement: HTMLElement;
4337
+ /** IAppInputField: true if the field (or one of its inner elements) has the focus */
4338
+ get hasFocus(): boolean;
4339
+ /** IAppInputField: the control name (given by `formControlName`, or deduced from the form control) */
4340
+ get controlName(): string | undefined;
3915
4341
  private _onChangeCallback;
3916
4342
  private _onTouchedCallback;
3917
4343
  private _value;
@@ -3967,7 +4393,7 @@ declare class MatSwipeField implements OnInit, InputElement, OnDestroy, ControlV
3967
4393
  */
3968
4394
  private updateTabIndex;
3969
4395
  writeValue(value: any): void;
3970
- clearValue(event: Event): void;
4396
+ clearValue(event?: Event): void;
3971
4397
  registerOnChange(fn: any): void;
3972
4398
  registerOnTouched(fn: any): void;
3973
4399
  setDisabledState(isDisabled: boolean): void;
@@ -3996,163 +4422,6 @@ declare class SharedMatSwipeModule {
3996
4422
  static ɵinj: i0.ɵɵInjectorDeclaration<SharedMatSwipeModule>;
3997
4423
  }
3998
4424
 
3999
- declare class MatChipsField implements OnInit, OnDestroy, InputElement, ControlValueAccessor {
4000
- protected cd: ChangeDetectorRef;
4001
- private formGroupDir;
4002
- private _onChangeCallback;
4003
- private _onTouchedCallback;
4004
- private _onFetchMoreCallback;
4005
- private _implicitValue;
4006
- private _subscription;
4007
- private _itemsSubscription;
4008
- private _openedSubscription;
4009
- private _$filter;
4010
- private _itemCount;
4011
- private _suggestExecutionId;
4012
- private _reload$;
4013
- private _appearance;
4014
- private _subscriptSizing;
4015
- private readonly _defaultAppearance;
4016
- private readonly _defaultSubscriptSizing;
4017
- protected _tabindex: number;
4018
- protected _$inputItems: BehaviorSubject<any[]>;
4019
- protected _$filteredItems: BehaviorSubject<any[]>;
4020
- protected _inputControl: UntypedFormControl;
4021
- protected _moreItemsCount: number;
4022
- protected _fetchMore$: EventEmitter<Event>;
4023
- protected _errorStateMatcher: ErrorStateMatcher;
4024
- equals: EqualsFn;
4025
- logPrefix: string;
4026
- formControl: UntypedFormControl;
4027
- formControlName: string;
4028
- floatLabel: AppFloatLabelType;
4029
- placeholder: string;
4030
- suggestFn: SuggestFn<any, any>;
4031
- required: boolean;
4032
- mobile: boolean;
4033
- readonly: boolean;
4034
- clearable: boolean;
4035
- debounceTime: number;
4036
- displaySeparator: string | null;
4037
- displayWith: DisplayFn | null;
4038
- displayAttributes: string[];
4039
- displayColumnSizes: (number | 'auto' | undefined)[];
4040
- displayColumnNames: string[];
4041
- highlightAccent: boolean;
4042
- showAllOnFocus: boolean;
4043
- showPanelOnFocus: boolean;
4044
- autofocus: boolean;
4045
- config: MatAutocompleteFieldConfig;
4046
- i18nPrefix: string;
4047
- noResultMessage: string;
4048
- panelClass: string;
4049
- panelWidth: string;
4050
- disableRipple: boolean;
4051
- matAutocompletePosition: 'auto' | 'above' | 'below';
4052
- itemSize: string;
4053
- fetchMoreThreshold: string;
4054
- suggestLengthThreshold: number;
4055
- showLoadingSpinner: boolean;
4056
- chipColor: ThemePalette;
4057
- debug: boolean;
4058
- applyImplicitValue: boolean | ((value: any) => boolean);
4059
- dropButtonTitle: string;
4060
- clearButtonTitle: string;
4061
- trimSearchText: boolean;
4062
- hideRequiredMarker: boolean;
4063
- colSizes: [number | 'auto', number | 'auto'];
4064
- separatorKeysCodes: number[];
4065
- showChips: boolean;
4066
- set appearance(value: MatFormFieldAppearance);
4067
- get appearance(): MatFormFieldAppearance;
4068
- set subscriptSizing(value: SubscriptSizing);
4069
- get subscriptSizing(): SubscriptSizing;
4070
- /**
4071
- * @deprecated Use panelClass instead
4072
- */
4073
- set classList(value: string);
4074
- get classList(): string;
4075
- clicked: EventEmitter<MouseEvent>;
4076
- blurred: EventEmitter<FocusEvent>;
4077
- focused: EventEmitter<FocusEvent>;
4078
- dropButtonClick: EventEmitter<Event>;
4079
- keydownEscape: EventEmitter<Event>;
4080
- keyupEnter: EventEmitter<Event>;
4081
- matInputText: ElementRef;
4082
- autocomplete: MatAutocomplete;
4083
- autocompleteTrigger: MatAutocompleteTrigger;
4084
- showTooltip: boolean;
4085
- constructor(cd: ChangeDetectorRef, formGroupDir: FormGroupDirective, defaultOptions?: MatFormFieldDefaultOptions);
4086
- get itemCount(): number;
4087
- get canFetchMore(): boolean;
4088
- set filter(value: any);
4089
- get filter(): any;
4090
- set tabindex(value: number);
4091
- get tabindex(): number;
4092
- set items(value: Observable<any[]> | any[]);
4093
- get items(): Observable<any[]> | any[];
4094
- get value(): any[];
4095
- get disabled(): boolean;
4096
- get enabled(): boolean;
4097
- get loading(): boolean;
4098
- ngOnInit(): void;
4099
- ngOnDestroy(): void;
4100
- /**
4101
- * Add item to chips
4102
- *
4103
- * @param item
4104
- */
4105
- add(item: any): void;
4106
- /**
4107
- * Remove item from chips
4108
- *
4109
- * @param item
4110
- */
4111
- remove(item: any): void;
4112
- /**
4113
- * Allow to reload content. Useful when filter has been changed but not detected
4114
- */
4115
- reloadItems(value?: any): void;
4116
- writeValue(value: any[]): void;
4117
- registerOnChange(fn: any): void;
4118
- registerOnTouched(fn: any): void;
4119
- setDisabledState(isDisabled: boolean): void;
4120
- focus(): void;
4121
- filterInputTextFocusEvent(event: FocusEvent): boolean;
4122
- protected filterInputTextBlurEvent(event: FocusEvent): void;
4123
- filterChipsFocusEvent(event: FocusEvent): void;
4124
- clearValue(event: Event): void;
4125
- _initAutocompleteInfiniteScroll(threshold?: string): void;
4126
- get isOpen(): boolean;
4127
- closePanel(): void;
4128
- protected toggleShowPanel(event: Event): void;
4129
- private suggest;
4130
- private fetchMore;
4131
- private updateImplicitValue;
4132
- private checkIfTouched;
4133
- private getAutocompletePanel;
4134
- private markForCheck;
4135
- private markAsLoading;
4136
- static ɵfac: i0.ɵɵFactoryDeclaration<MatChipsField, [null, { optional: true; }, null]>;
4137
- static ɵcmp: i0.ɵɵComponentDeclaration<MatChipsField, "mat-chips-field", never, { "equals": { "alias": "equals"; "required": false; }; "logPrefix": { "alias": "logPrefix"; "required": false; }; "formControl": { "alias": "formControl"; "required": false; }; "formControlName": { "alias": "formControlName"; "required": false; }; "floatLabel": { "alias": "floatLabel"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "suggestFn": { "alias": "suggestFn"; "required": false; }; "required": { "alias": "required"; "required": false; }; "mobile": { "alias": "mobile"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "debounceTime": { "alias": "debounceTime"; "required": false; }; "displaySeparator": { "alias": "displaySeparator"; "required": false; }; "displayWith": { "alias": "displayWith"; "required": false; }; "displayAttributes": { "alias": "displayAttributes"; "required": false; }; "displayColumnSizes": { "alias": "displayColumnSizes"; "required": false; }; "displayColumnNames": { "alias": "displayColumnNames"; "required": false; }; "highlightAccent": { "alias": "highlightAccent"; "required": false; }; "showAllOnFocus": { "alias": "showAllOnFocus"; "required": false; }; "showPanelOnFocus": { "alias": "showPanelOnFocus"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "config": { "alias": "config"; "required": false; }; "i18nPrefix": { "alias": "i18nPrefix"; "required": false; }; "noResultMessage": { "alias": "noResultMessage"; "required": false; }; "panelClass": { "alias": "panelClass"; "required": false; }; "panelWidth": { "alias": "panelWidth"; "required": false; }; "disableRipple": { "alias": "disableRipple"; "required": false; }; "matAutocompletePosition": { "alias": "matAutocompletePosition"; "required": false; }; "itemSize": { "alias": "itemSize"; "required": false; }; "fetchMoreThreshold": { "alias": "fetchMoreThreshold"; "required": false; }; "suggestLengthThreshold": { "alias": "suggestLengthThreshold"; "required": false; }; "showLoadingSpinner": { "alias": "showLoadingSpinner"; "required": false; }; "chipColor": { "alias": "chipColor"; "required": false; }; "debug": { "alias": "debug"; "required": false; }; "applyImplicitValue": { "alias": "applyImplicitValue"; "required": false; }; "dropButtonTitle": { "alias": "dropButtonTitle"; "required": false; }; "clearButtonTitle": { "alias": "clearButtonTitle"; "required": false; }; "trimSearchText": { "alias": "trimSearchText"; "required": false; }; "hideRequiredMarker": { "alias": "hideRequiredMarker"; "required": false; }; "colSizes": { "alias": "colSizes"; "required": false; }; "separatorKeysCodes": { "alias": "separatorKeysCodes"; "required": false; }; "showChips": { "alias": "showChips"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "subscriptSizing": { "alias": "subscriptSizing"; "required": false; }; "classList": { "alias": "class"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "items": { "alias": "items"; "required": false; }; }, { "clicked": "click"; "blurred": "blur"; "focused": "focus"; "dropButtonClick": "dropButtonClick"; "keydownEscape": "keydown.escape"; "keyupEnter": "keyup.enter"; }, never, ["[matAfter]", "[matPrefix]", "[matSuffix]", "mat-error,[matError]", "mat-hint:not([align='end']),[matHint]", "mat-hint[align='end']"], false, never>;
4138
- static ngAcceptInputType_required: unknown;
4139
- static ngAcceptInputType_mobile: unknown;
4140
- static ngAcceptInputType_readonly: unknown;
4141
- static ngAcceptInputType_clearable: unknown;
4142
- static ngAcceptInputType_debounceTime: unknown;
4143
- static ngAcceptInputType_highlightAccent: unknown;
4144
- static ngAcceptInputType_showAllOnFocus: unknown;
4145
- static ngAcceptInputType_showPanelOnFocus: unknown;
4146
- static ngAcceptInputType_autofocus: unknown;
4147
- static ngAcceptInputType_disableRipple: unknown;
4148
- static ngAcceptInputType_suggestLengthThreshold: unknown;
4149
- static ngAcceptInputType_showLoadingSpinner: unknown;
4150
- static ngAcceptInputType_debug: unknown;
4151
- static ngAcceptInputType_trimSearchText: unknown;
4152
- static ngAcceptInputType_hideRequiredMarker: unknown;
4153
- static ngAcceptInputType_showChips: unknown;
4154
- }
4155
-
4156
4425
  declare class SharedMatChipsModule {
4157
4426
  static ɵfac: i0.ɵɵFactoryDeclaration<SharedMatChipsModule, never>;
4158
4427
  static ɵmod: i0.ɵɵNgModuleDeclaration<SharedMatChipsModule, [typeof MatChipsField], [typeof i2$1.CommonModule, typeof SharedIonicModule, typeof i5.ReactiveFormsModule, typeof SharedPipesModule, typeof SharedDirectivesModule, typeof i10.MatAutocompleteModule, typeof i8.MatFormFieldModule, typeof i9$1.MatInputModule, typeof i10$1.MatIconModule, typeof i12.MatButtonModule, typeof i12$2.MatChipsModule, typeof RxStateModule, typeof i30.MatTooltip], [typeof MatChipsField]>;
@@ -4192,6 +4461,11 @@ declare class BadgeDirective extends MatBadge implements AfterViewInit, OnChange
4192
4461
  ngAfterViewInit(): void;
4193
4462
  ngOnChanges(changes: SimpleChanges): void;
4194
4463
  ngOnDestroy(): void;
4464
+ /**
4465
+ * The badge is appended inside the host element: it is NOT rendered if the host has a shadow DOM without slot (e.g. <ion-icon>).
4466
+ * Warn the developer, to use a wrapper element instead
4467
+ */
4468
+ protected checkHostCanRenderBadge(): void;
4195
4469
  private updateView;
4196
4470
  static ɵfac: i0.ɵɵFactoryDeclaration<BadgeDirective, [null, null, null, null, { optional: true; }]>;
4197
4471
  static ɵdir: i0.ɵɵDirectiveDeclaration<BadgeDirective, "[appBadge], [appBadgeIcon], [appBadgeMatIcon]", never, { "appBadge": { "alias": "appBadge"; "required": false; }; "appBadgeDisabled": { "alias": "appBadgeDisabled"; "required": false; }; "appBadgeSize": { "alias": "appBadgeSize"; "required": false; }; "appBadgeColor": { "alias": "appBadgeColor"; "required": false; }; "appBadgeFill": { "alias": "appBadgeFill"; "required": false; }; "appBadgeMatIcon": { "alias": "appBadgeMatIcon"; "required": false; }; "appBadgeIcon": { "alias": "appBadgeIcon"; "required": false; }; "appBadgeHidden": { "alias": "appBadgeHidden"; "required": false; }; "appBadgeOverlap": { "alias": "appBadgeOverlap"; "required": false; }; "appBadgePosition": { "alias": "appBadgePosition"; "required": false; }; }, {}, never, never, false, never>;
@@ -7225,6 +7499,18 @@ declare const slideUpDownAnimation: _angular_animations.AnimationTriggerMetadata
7225
7499
  declare const slideDownAnimation: _angular_animations.AnimationTriggerMetadata;
7226
7500
  declare const expansionAnimation: _angular_animations.AnimationTriggerMetadata;
7227
7501
 
7502
+ /**
7503
+ * Convert a typed text (e.g. a key press, or a barcode scanner) into a boolean, case insensitive:
7504
+ * - '1' / '0', 'true' / 'false';
7505
+ * - the yes/no labels (already translated), or their first letters (e.g. 'Y' / 'N' in English, 'O' / 'N' in French).
7506
+ *
7507
+ * @param text the typed text
7508
+ * @param yesLabel the translated 'yes' label (e.g. 'Yes')
7509
+ * @param noLabel the translated 'no' label (e.g. 'No')
7510
+ * @return the boolean value, or undefined if the text does not match (or if it matches both labels)
7511
+ */
7512
+ declare function parseBooleanText(text: string, yesLabel: string, noLabel: string): boolean | undefined;
7513
+
7228
7514
  declare class MatAutocompleteFieldUtils {
7229
7515
  static createDisplayFn(displayAttributes: string[], multiple?: boolean, propertySeparator?: string, itemSeparator?: string): DisplayFn;
7230
7516
  static defaultEquals(o1: any, o2: any): boolean;
@@ -8458,393 +8744,393 @@ declare class CsvUtils {
8458
8744
  static getLocalizedEncoding(translate: TranslateService, defaultEncoding?: string): string;
8459
8745
  }
8460
8746
 
8461
- declare class JsonUtils {
8462
- static DEFAULT_ENCODING: string;
8463
- static exportToFile(content: any, opts?: {
8464
- filename?: string;
8465
- encoding?: string;
8466
- type?: string;
8467
- }): void;
8468
- static writeToFile(content: any, opts?: {
8469
- filename?: string;
8470
- type?: string;
8471
- }): File;
8472
- static parseFile<T = any>(file: File, opts?: {
8473
- encoding?: string;
8474
- }): Observable<FileEvent<T>>;
8475
- static getLocalizedEncoding(translate: TranslateService, defaultEncoding?: string): string;
8747
+ /**
8748
+ * A remote file, attached to something (e.g. a feed item, a message), that can be previewed or downloaded
8749
+ */
8750
+ interface FileAttachmentInfo {
8751
+ /** URL of the file (download URL) */
8752
+ url: string;
8753
+ /** Name (or title) of the file. If empty, computed from the URL */
8754
+ name?: string;
8755
+ mimeType?: string;
8756
+ /** Size, in bytes */
8757
+ size?: number;
8476
8758
  }
8477
-
8478
- declare class UriUtils {
8759
+ declare class FileAttachmentUtils {
8479
8760
  /**
8480
- * Extract the filename, from an uri (using the last slash)
8481
- *
8482
- * @param uri
8761
+ * Get the file name of an attachment (its name, or the last part of its URL)
8483
8762
  */
8484
- static getFilename(uri: string): string;
8763
+ static getFilename(attachment: FileAttachmentInfo): string;
8764
+ /**
8765
+ * Get the Material icon (font ligature) of an attachment
8766
+ */
8767
+ static getIcon(attachment: FileAttachmentInfo): string;
8485
8768
  }
8486
8769
 
8487
- declare abstract class UrlUtils {
8770
+ interface FileDownloadOptions {
8771
+ /** Name of the downloaded file */
8772
+ filename?: string;
8773
+ mimeType?: string;
8774
+ }
8775
+ interface FilePreviewInfo {
8776
+ name?: string;
8777
+ mimeType?: string;
8778
+ }
8779
+ /**
8780
+ * Download (or read) a remote file, sending the application headers (e.g. authorization) when the file is on the current peer.
8781
+ *
8782
+ * - On Android (Cordova downloader): the file is downloaded by the native download manager (visible in the "Downloads" app);
8783
+ * - Otherwise (web, iOS): the file is fetched as a Blob, then saved using a temporary object URL.
8784
+ */
8785
+ declare class FileDownloadService {
8786
+ protected readonly network: NetworkService;
8787
+ protected readonly platform: PlatformService;
8488
8788
  /**
8489
- * Determines if a given URL is a relative URL.
8490
- *
8491
- * @param {string | null} href - The URL to check.
8492
- * @return {boolean} True if the URL is relative, false otherwise.
8789
+ * Can the file be previewed (displayed without being downloaded)?
8493
8790
  */
8494
- static isRelativeUrl(href: string | null): boolean;
8791
+ canPreview(file: FilePreviewInfo): boolean;
8792
+ isImage(file: FilePreviewInfo): boolean;
8793
+ isText(file: FilePreviewInfo): boolean;
8794
+ isMarkdown(file: FilePreviewInfo): boolean;
8795
+ isHtml(file: FilePreviewInfo): boolean;
8495
8796
  /**
8496
- * Determines if a given URL is an internal URL.
8497
- *
8498
- * @param {string | null} href - The URL to be checked. Can be a string representing the URL or null.
8499
- * @return {boolean} Returns true if the URL is internal, otherwise false.
8797
+ * Fetch a remote file, as a Blob
8500
8798
  */
8501
- static isInternalUrl(href: string | null): boolean;
8502
- static isExternalUrl(href: string | null): boolean;
8799
+ getBlob(url: string): Promise<Blob>;
8503
8800
  /**
8504
- * Removes the query string from the given URL, returning only the base URL.
8505
- *
8506
- * @param {string} url - The URL from which the query string will be stripped.
8507
- * @return {string} The URL without the query string.
8801
+ * Remove duplicated slashes in the path of an URL (e.g. 'http://host//api/file' => 'http://host/api/file').
8802
+ * Needed because the server (and its CORS rules) does not match a path with duplicated slashes.
8508
8803
  */
8509
- static stripQuery(url: string): string;
8804
+ static normalizeUrl(url: string): string;
8510
8805
  /**
8511
- * Removes the fragment and query components from a given URL string.
8512
- *
8513
- * @param {string} url - The URL string to process.
8514
- * @return {string} The URL without its fragment and query components.
8806
+ * Fetch a remote file, as a text (e.g. to preview it)
8515
8807
  */
8516
- static stripFragmentAndQuery(url: string): string;
8808
+ getText(url: string): Promise<string>;
8517
8809
  /**
8518
- * Extracts the fragment identifier from the given URL.
8519
- *
8520
- * @param {string} url - The URL from which to extract the fragment.
8521
- * @return {string} The fragment identifier of the URL, excluding the '#' symbol.
8810
+ * Download a remote file
8522
8811
  */
8523
- static getFragment(url: string): string;
8524
- static resolveRelativeUrl(baseUrl: string, relativePath: string, opts?: {
8525
- absoluteByDefault: boolean;
8526
- }): string;
8812
+ download(url: string, opts?: FileDownloadOptions): Promise<void>;
8813
+ protected getFilename(url: string): string;
8814
+ static ɵfac: i0.ɵɵFactoryDeclaration<FileDownloadService, never>;
8815
+ static ɵprov: i0.ɵɵInjectableDeclaration<FileDownloadService>;
8816
+ }
8817
+
8818
+ /**
8819
+ * Display an attachment as a compact badge (chip): icon, file name, and size (in the tooltip).
8820
+ *
8821
+ * - Click on the badge: display the file content in a modal (text, markdown, image, HTML), or download it if not previewable;
8822
+ * - Download part (right side, visible on hover - always visible on mobile): download the file.
8823
+ */
8824
+ declare class FileAttachmentComponent {
8825
+ protected readonly modalCtrl: ModalController;
8826
+ protected readonly toastCtrl: ToastController;
8827
+ protected readonly translate: TranslateService;
8828
+ protected readonly fileDownload: FileDownloadService;
8829
+ protected readonly getFilename: typeof FileAttachmentUtils.getFilename;
8830
+ protected readonly getIcon: typeof FileAttachmentUtils.getIcon;
8831
+ protected readonly canPreview: (attachment: FileAttachmentInfo) => boolean;
8832
+ attachment: FileAttachmentInfo;
8833
+ /** Bigger badge (touch), with the download part always visible. Default: the mobile local settings */
8834
+ mobile: boolean;
8527
8835
  /**
8528
- * Resolves a given URL by normalizing its parts, removing unnecessary path segments like "." and "..".
8529
- *
8530
- * @param {string} url - The URL to be resolved. Must be a non-empty string.
8531
- * @return {string} The resolved and cleaned URL string.
8532
- * @throws {Error} If the provided URL is missing or undefined.
8836
+ * Open the attachment: display its content, if possible (text, markdown, image...), or download it
8533
8837
  */
8534
- static normalizeUrl(url: string): string;
8838
+ open(event?: Event): Promise<void>;
8535
8839
  /**
8536
- * This function completes a base URL with an object containing key-value pairs
8537
- * representing the query parameters to add. It properly encodes the
8538
- * parameters and ensures they are added with the appropriate separator ('?' or '&').
8539
- * Parameters with null or undefined values are automatically filtered out.
8540
- *
8541
- * @example
8542
- * // In a template
8543
- * <a [href]="'https://example.com' | appendQueryParams:{id: 123, name: 'test'}">Link</a>
8544
- * // Result: https://example.com?id=123&name=test
8840
+ * Download the attachment (using the native download manager on Android)
8841
+ */
8842
+ download(event?: Event): Promise<void>;
8843
+ static ɵfac: i0.ɵɵFactoryDeclaration<FileAttachmentComponent, never>;
8844
+ static ɵcmp: i0.ɵɵComponentDeclaration<FileAttachmentComponent, "app-file-attachment", never, { "attachment": { "alias": "attachment"; "required": true; }; "mobile": { "alias": "mobile"; "required": false; }; }, {}, never, never, false, never>;
8845
+ }
8846
+
8847
+ interface FileAttachmentPreviewModalOptions {
8848
+ attachment: FileAttachmentInfo;
8849
+ }
8850
+ /**
8851
+ * Display the content of an attachment (text, markdown, image, HTML), without downloading it
8852
+ */
8853
+ declare class FileAttachmentPreviewModal implements FileAttachmentPreviewModalOptions, OnInit, OnDestroy {
8854
+ protected readonly cd: ChangeDetectorRef;
8855
+ protected readonly modalCtrl: ModalController;
8856
+ protected readonly fileDownload: FileDownloadService;
8857
+ protected readonly mobile: boolean;
8858
+ protected readonly sanitizer: DomSanitizer;
8859
+ protected readonly elementRef: ElementRef<HTMLElement>;
8860
+ attachment: FileAttachmentInfo;
8861
+ protected loading: boolean;
8862
+ protected error: string;
8863
+ protected filename: string;
8864
+ protected text: string;
8865
+ protected markdown: boolean;
8866
+ protected imageUrl: string;
8867
+ /** HTML content, displayed in a sandboxed iframe (scripts allowed, but isolated from the application: no same origin) */
8868
+ protected html: SafeHtml;
8869
+ /** Display the modal in a large size */
8870
+ protected maximized: boolean;
8871
+ ngOnInit(): Promise<void>;
8872
+ ngOnDestroy(): void;
8873
+ protected download(): Promise<void>;
8874
+ /** Display the modal in a large size (to restore the size: close then reopen the attachment) */
8875
+ protected maximize(): void;
8876
+ protected close(): Promise<boolean>;
8877
+ static ɵfac: i0.ɵɵFactoryDeclaration<FileAttachmentPreviewModal, never>;
8878
+ static ɵcmp: i0.ɵɵComponentDeclaration<FileAttachmentPreviewModal, "app-file-attachment-preview-modal", never, { "attachment": { "alias": "attachment"; "required": false; }; }, {}, never, never, false, never>;
8879
+ }
8880
+
8881
+ declare class MarkdownService {
8882
+ private route;
8883
+ private router;
8884
+ private platform;
8885
+ private locationStrategy;
8886
+ private navController;
8887
+ private baseUrl;
8888
+ private _markedRenderer;
8889
+ get renderer(): MarkedRenderer;
8890
+ set renderer(value: MarkedRenderer);
8891
+ onClickMarkdownUrl: Subject<string>;
8892
+ constructor();
8893
+ setBaseUrl(baseUrl: string): void;
8894
+ resetBaseUrl(): void;
8895
+ getUrlTree(url: string): UrlTree;
8896
+ navigate(url: string, replaceUrl?: boolean): void;
8897
+ listenClickEvents(nativeElement: HTMLElement): Subscription;
8898
+ /**
8899
+ * Transform a relative URL to its absolute representation according to current router state.
8900
+ * @param url Relative URL path.
8901
+ * @return Absolute URL based on the current route.
8902
+ */
8903
+ normalizeUrl(url: string): string;
8904
+ scrollToAnchor(containerElement: HTMLElement, anchorId: string): void;
8905
+ protected setRenderer(renderer: MarkedRenderer): void;
8906
+ protected click(event: Event, containerElement: HTMLElement): Promise<boolean>;
8907
+ protected link(href: string | null, title: string | null, text: string): string;
8908
+ protected image(href: string, title: string | null, text: string): string;
8909
+ protected heading(text: string, depth: number): string;
8910
+ static ɵfac: i0.ɵɵFactoryDeclaration<MarkdownService, never>;
8911
+ static ɵprov: i0.ɵɵInjectableDeclaration<MarkdownService>;
8912
+ }
8913
+
8914
+ interface PrintOptions {
8915
+ id?: string | number;
8916
+ title?: string;
8917
+ showToast?: boolean;
8918
+ toastMessage?: string;
8919
+ style?: string;
8920
+ }
8921
+ declare const PRINT_LOADING_STORAGE_KEY_PREFIX = "print-loading-";
8922
+ declare const PRINT_ID_QUERY_PARAM = "print-id";
8923
+ declare class PrintService {
8924
+ protected toastController: ToastController;
8925
+ protected translate: TranslateService;
8926
+ protected storage: StorageService;
8927
+ protected document: Document;
8928
+ private _printId;
8929
+ constructor(toastController: ToastController, translate: TranslateService, storage: StorageService, document: Document);
8930
+ nextJobId(): number;
8931
+ /**
8932
+ * Extracts and returns the job ID from a given URL.
8545
8933
  *
8546
- * @example
8547
- * // If the URL already contains parameters
8548
- * <a [href]="'https://example.com?page=1' | appendQueryParams:{sort: 'asc'}">Link</a>
8549
- * // Result: https://example.com?page=1&sort=asc
8934
+ * @param {string} [url] - The URL from which to extract the job ID. If not provided, `window.location.href` will be used.
8935
+ * @return {number | undefined} The extracted job ID as a number, or `undefined` if the job ID is not present or invalid.
8936
+ */
8937
+ getJobId(url?: string): string | undefined;
8938
+ /**
8939
+ * Determines whether the provided URL or the current page's URL contains
8940
+ * a specific query parameter, indicating it's a printing-related URL.
8550
8941
  *
8551
- * @param url
8552
- * @param queryParams
8942
+ * @param {string} [url] - The optional URL to check. If not provided, the current page's URL is used.
8943
+ * @param {string} [queryParam='print-id'] - The query parameter to look for, defaulting to 'print-id'.
8944
+ * @return {boolean} Returns true if the query parameter is found in the URL; otherwise, false.
8553
8945
  */
8554
- static appendQueryParams(url: string | any[], queryParams: {
8555
- [key: string]: any;
8556
- }): string;
8946
+ isPrintingUrl(url?: string, queryParam?: string): boolean;
8947
+ printElement(element: HTMLElement, opts?: PrintOptions): Promise<number | string>;
8948
+ printHTML(html: string, opts?: PrintOptions): Promise<number | string>;
8557
8949
  /**
8558
- * Extracts and returns the root URL from the given complete URL string.
8950
+ * Prints the content of a URL by rendering it in an iframe.
8559
8951
  *
8560
- * @param {string} url - The complete URL string from which the root URL will be extracted.
8561
- * @return {string} The root URL including the protocol and host (and port if present).
8562
- * @throws {Error} Throws an error if the provided URL is missing or is in an invalid format.
8952
+ * @param {string} url The URL of the content to print. This parameter is required.
8953
+ * @param {Omit<PrintOptions, 'style'>} [opts] Optional settings for printing, excluding the 'style' option.
8954
+ * @return {Promise<number>} A promise that resolves to the ID of the print job.
8563
8955
  */
8564
- static getRootUrl(url: string): string;
8956
+ printUrl(url: string, opts?: Omit<PrintOptions, 'style'>): Promise<number | string>;
8565
8957
  /**
8566
- * Retrieves the parent URL or directory path from the provided URL.
8567
- * This method handles both relative and absolute URLs.
8958
+ * Prints the content of the specified iframe element.
8568
8959
  *
8569
- * @param {string} url - The URL from which to derive the parent path.
8570
- * Must be a valid URL or relative path.
8571
- * @return {string} The parent URL or directory path. Throws an error if the input is invalid.
8960
+ * @param {HTMLIFrameElement} iframe - The iframe element whose content needs to be printed. Must be a valid and loaded iframe element.
8961
+ * @param {PrintOptions} [opts] - Optional parameters for the print operation, which may include options for toast messages and job configuration.
8962
+ * @return {Promise<number>} A promise that resolves to the unique ID of the print job.
8963
+ * @throws Will throw an error if the required 'iframe' argument is missing or invalid.
8572
8964
  */
8573
- static getParent(url: string): string;
8965
+ printIframe(iframe: HTMLIFrameElement, opts?: PrintOptions): Promise<number | string>;
8966
+ markAsLoading(id: string | number): Promise<void>;
8967
+ markAsLoaded(id: string | number): Promise<void>;
8968
+ isLoaded(id: string | number): Promise<boolean>;
8969
+ isLoading(id: string | number): Promise<boolean>;
8970
+ protected createPrintIframeByUrl(url: string, opts?: {
8971
+ id?: number | string;
8972
+ }): HTMLIFrameElement;
8973
+ protected createPrintIframeByHtml(html: string, opts?: {
8974
+ title?: string;
8975
+ inlineStyle?: string;
8976
+ }): HTMLIFrameElement;
8574
8977
  /**
8575
- * Cleans the provided URL by encoding it safely and replacing specific patterns.
8978
+ * Applies the styles from the provided document, including external stylesheets and inline styles,
8979
+ * to the specified iframe's document.
8576
8980
  *
8577
- * @param {string} href - The URL string to be cleaned.
8578
- * @return {string|null} The cleaned and encoded URL string, or null if an error occurs.
8981
+ * @param {HTMLIFrameElement} iframe - The iframe to which the styles are applied.
8982
+ * @return {void} Does not return a value.
8579
8983
  */
8580
- static cleanUrl(href: string): string;
8581
- static addTrailingSlash(url: string): string;
8582
- static addStartingSlash(url: string): string;
8583
- static removeStartingSlash(url: string): string;
8584
- static concat(basePath: string, relativePath: string): string;
8984
+ protected applyDocumentStyleToIframe(iframe: HTMLIFrameElement): void;
8985
+ protected waitIdle(iframe: HTMLIFrameElement, opts?: {
8986
+ id?: number | string;
8987
+ timeout?: number;
8988
+ }): Promise<void>;
8585
8989
  /**
8586
- * Cleans the given pathname by replacing occurrences of multiple consecutive slashes with a single slash.
8990
+ * Triggers the print functionality of the given iframe and resolves or rejects based on the print completion or timeout.
8587
8991
  *
8588
- * @param {string} pathname - The pathname to be cleaned.
8589
- * @return {string} The cleaned pathname with redundant slashes removed.
8992
+ * @param {HTMLIFrameElement} iframe - The iframe element to be printed.
8993
+ * @param {{timeout?: number}} [opts] - An optional configuration object.
8994
+ * @param {number} [opts.timeout] - The maximum time in milliseconds to wait for the print to complete before rejecting the promise.
8995
+ * @return {Promise<void>} A promise that resolves after the print is completed or rejects if a timeout occurs.
8590
8996
  */
8591
- static cleanPath(pathname: string): string;
8592
- static noTrailingSlash: typeof noTrailingSlash;
8997
+ protected print(iframe: HTMLIFrameElement, opts?: {
8998
+ timeout?: number;
8999
+ }): Promise<void>;
9000
+ private showToast;
9001
+ static ɵfac: i0.ɵɵFactoryDeclaration<PrintService, never>;
9002
+ static ɵprov: i0.ɵɵInjectableDeclaration<PrintService>;
8593
9003
  }
8594
9004
 
8595
- type ColorName = PredefinedColors | 'white' | 'red' | 'green' | 'blue';
8596
- /**
8597
- * Useful class for color conversion
8598
- */
8599
- declare class Color {
8600
- private _rgbArray;
8601
- private _opacity?;
8602
- private _name;
8603
- static get(name: ColorName): Color;
8604
- static parseRgba(rgba: string): Color | null;
8605
- static transparent: () => Color;
8606
- constructor(_rgbArray: number[], _opacity?: number, _name?: string);
8607
- get name(): string;
8608
- get opacity(): number;
8609
- get rgb(): number[];
8610
- get r(): number;
8611
- get g(): number;
8612
- get b(): number;
8613
- rgba(opacity?: number): string;
8614
- }
8615
- declare interface ColorGradientOptions {
8616
- startColor?: number[];
8617
- mainColor?: number[];
8618
- mainColorIndex?: number;
8619
- endColor?: number[];
8620
- }
8621
- declare interface ColorScaleOptions extends ColorGradientOptions {
8622
- opacity?: number;
8623
- min?: number;
8624
- max?: number;
8625
- upperMax?: boolean;
8626
- }
8627
- declare interface ColorScaleLegendItem {
8628
- label: string | number[];
8629
- color: Color;
8630
- }
8631
- declare interface ColorScaleLegend {
8632
- items: ColorScaleLegendItem[];
8633
- }
8634
- /**
8635
- * Helper class for colors scale
8636
- */
8637
- declare class ColorScale {
8638
- static custom: (count: number, options?: ColorScaleOptions) => ColorScale;
8639
- static default(): ColorScale;
8640
- /**
8641
- * Create an array with the given color
8642
- **/
8643
- static fix(length?: number, colorName?: ColorName): string[];
8644
- private _min;
8645
- private _max;
8646
- private _rangeSize;
8647
- private _legendItems;
8648
- get min(): number;
8649
- get max(): number;
8650
- constructor(colorArray: number[][], options?: ColorScaleOptions);
8651
- get legend(): ColorScaleLegend;
8652
- getValueColor(value: number): Color;
8653
- getLegendForValue(value: number): ColorScaleLegendItem;
8654
- getLegendAtIndex(index: number): ColorScaleLegendItem;
8655
- protected computeLegendItems(colorArray: number[][]): ColorScaleLegendItem[];
9005
+ interface AppMarkdownOptions {
9006
+ data?: string;
9007
+ src?: string;
9008
+ showError?: boolean;
8656
9009
  }
8657
-
8658
- declare function rgbToHex(r: number, g: number, b: number): string;
8659
- declare function rgbArrayToHex(rgb: number[]): string;
8660
- declare function hexToRgbArray(hex: string): number[];
8661
- declare function hexToRgb(hex: string): {
8662
- r: number;
8663
- g: number;
8664
- b: number;
8665
- };
8666
- declare function mixHex(color1: string, color2: string, weight?: number): string;
8667
- declare function getColorShade(color: string): string;
8668
- declare function getColorTint(color: string): string;
8669
- /**
8670
- *
8671
- * @param color
8672
- * @param bw if true, will use black or white color, instead of the exact inverse
8673
- */
8674
- declare function getColorContrast(color: string, bw?: boolean): string;
8675
- /**
8676
- * Determine the luminance of a color
8677
- * Uses coefficients from http://stackoverflow.com/a/3943023/112731
8678
- *
8679
- * Note: Color must be in hex format (e.g. "#RRGGBB").
8680
- * @param color Hex color string
8681
- * @returns th color luminance
8682
- */
8683
- declare function getColorLuminance(color: string): number;
8684
- /**
8685
- * Determine if a color is considered light based on perceived luminance.
8686
- *
8687
- * Note: Color must be in hex format (e.g. "#RRGGBB").
8688
- * @param color Hex color string
8689
- * @returns true if the color is light, false otherwise
8690
- */
8691
- declare function isLightColor(color: string): boolean;
8692
-
8693
- declare const HAMMER_TAP_TIME = 250;
8694
- declare const HAMMER_PRESS_TIME = 400;
8695
- /**
8696
- * @hidden
8697
- * This class overrides the default Angular gesture config.
8698
- *
8699
- */
8700
- declare class AppGestureConfig extends HammerGestureConfig {
8701
- overrides: any;
8702
- buildHammer(element: HTMLElement): any;
8703
- static ɵfac: i0.ɵɵFactoryDeclaration<AppGestureConfig, never>;
8704
- static ɵprov: i0.ɵɵInjectableDeclaration<AppGestureConfig>;
9010
+ declare class AppMarkdownContent implements AppMarkdownOptions, OnDestroy {
9011
+ protected cd: ChangeDetectorRef;
9012
+ protected element: ElementRef<HTMLElement>;
9013
+ private _document;
9014
+ protected route: ActivatedRoute;
9015
+ private _printId;
9016
+ private _clickSubscription;
9017
+ protected navController: NavController;
9018
+ protected settings: LocalSettingsService;
9019
+ protected translate: TranslateService;
9020
+ protected network: NetworkService;
9021
+ protected markdownService: MarkdownService;
9022
+ protected toastController: ToastController;
9023
+ protected printService: PrintService;
9024
+ protected loading: boolean;
9025
+ protected error: string;
9026
+ protected baseUrl: string;
9027
+ protected _data: string;
9028
+ protected _src: string;
9029
+ protected _fallbackSrc: string;
9030
+ protected _anchor: string;
9031
+ protected _navHistory: {
9032
+ src?: string;
9033
+ fallbackSrc?: string;
9034
+ data?: string;
9035
+ anchor?: string;
9036
+ }[];
9037
+ set data(value: string);
9038
+ get data(): string;
9039
+ set src(value: string);
9040
+ get src(): string;
9041
+ set anchor(value: string);
9042
+ get anchor(): string;
9043
+ debug: boolean;
9044
+ showError: boolean;
9045
+ animated: boolean;
9046
+ enableNavigationHistory: boolean;
9047
+ updateRouteLocation: boolean;
9048
+ markdownUrlChange: EventEmitter<string>;
9049
+ constructor(cd: ChangeDetectorRef, element: ElementRef<HTMLElement>, _document: Document, route: ActivatedRoute);
9050
+ ngOnDestroy(): void;
9051
+ goBack(event?: Event): void;
9052
+ get canGoBack(): boolean;
9053
+ print(): Promise<void>;
9054
+ markAsLoaded(opts?: {
9055
+ emitEvent?: boolean;
9056
+ }): void;
9057
+ markAsLoading(opts?: {
9058
+ emitEvent?: boolean;
9059
+ }): void;
9060
+ setError(error: string | Error): void;
9061
+ resetError(): void;
9062
+ protected setData(value: string, opts?: {
9063
+ anchor?: string;
9064
+ addToNavigationHistory?: boolean;
9065
+ }): void;
9066
+ protected setSrc(src: string, opts?: {
9067
+ fallbackSrc?: string;
9068
+ anchor?: string;
9069
+ addToNavigationHistory?: boolean;
9070
+ }): void;
9071
+ protected onReady(): void;
9072
+ protected onLoadError(error?: string | Error): void;
9073
+ protected startListenClickEvents(): void;
9074
+ static ɵfac: i0.ɵɵFactoryDeclaration<AppMarkdownContent, [null, null, null, { optional: true; }]>;
9075
+ static ɵcmp: i0.ɵɵComponentDeclaration<AppMarkdownContent, "app-markdown-content", never, { "data": { "alias": "data"; "required": false; }; "src": { "alias": "src"; "required": false; }; "anchor": { "alias": "anchor"; "required": false; }; "debug": { "alias": "debug"; "required": false; }; "showError": { "alias": "showError"; "required": false; }; "animated": { "alias": "animated"; "required": false; }; "enableNavigationHistory": { "alias": "enableNavigationHistory"; "required": false; }; "updateRouteLocation": { "alias": "updateRouteLocation"; "required": false; }; }, { "markdownUrlChange": "markdownUrlChange"; }, never, never, false, never>;
9076
+ static ngAcceptInputType_debug: unknown;
9077
+ static ngAcceptInputType_showError: unknown;
9078
+ static ngAcceptInputType_animated: unknown;
9079
+ static ngAcceptInputType_enableNavigationHistory: unknown;
9080
+ static ngAcceptInputType_updateRouteLocation: unknown;
8705
9081
  }
8706
9082
 
8707
- declare class SharedValidators {
8708
- private static _DOUBLE_REGEXP_CACHE;
8709
- private static getDoubleRegexp;
8710
- static equals(otherControlName: string): ValidatorFn;
8711
- static readonly I18N_ERROR_KEYS: {
8712
- required: string;
8713
- min: string;
8714
- max: string;
8715
- minlength: string;
8716
- maxlength: string;
8717
- pubkey: string;
8718
- validDate: string;
8719
- dateIsAfter: string;
8720
- dateIsBefore: string;
8721
- dateRange: string;
8722
- dateMinDuration: string;
8723
- dateMaxDuration: string;
8724
- maxDecimals: string;
8725
- decimal: string;
8726
- integer: string;
8727
- precision: string;
8728
- email: string;
8729
- latitude: string;
8730
- longitude: string;
8731
- pattern: string;
8732
- unique: string;
8733
- entity: string;
8734
- invalid: string;
8735
- inconsistent: string;
8736
- equals: string;
8737
- };
8738
- static latitude(control: UntypedFormControl): ValidationErrors | null;
8739
- static longitude(control: UntypedFormControl): ValidationErrors | null;
8740
- static object(control: UntypedFormControl): ValidationErrors | null;
8741
- static entity(control: UntypedFormControl): ValidationErrors | null;
8742
- static entities(control: UntypedFormControl): ValidationErrors | null;
8743
- static empty(control: UntypedFormControl): ValidationErrors | null;
8744
- static pubkey(control: UntypedFormControl): ValidationErrors | null;
8745
- static integer(control: UntypedFormControl): ValidationErrors | null;
8746
- static decimal(opts?: {
8747
- maxDecimals?: number;
8748
- }): ValidatorFn;
8749
- /**
8750
- * Check precision. e.g. if precision=0.5 then value=0.6 is invalid, but 1.5 is valid
8751
- *
8752
- * @param precision
8753
- */
8754
- static precision(precision: number): ValidatorFn;
8755
- static validDateTime(requiredTime?: boolean): ValidatorFn;
8756
- static validDate: ValidatorFn;
8757
- static validDateAllowNoTime: ValidatorFn;
8758
- static dateIsAfter(previousValue: Moment, errorParam: string, granularity?: unitOfTime$1.StartOf): ValidatorFn;
8759
- static dateIsBefore(maxValue: Moment, errorParam: string, granularity?: unitOfTime$1.StartOf): ValidatorFn;
8760
- static dateRangeEnd(startDateFieldName: string, msg?: string): ValidatorFn;
8761
- static dateRangeStart(endDateFieldName: string, msg?: string): ValidatorFn;
8762
- static copyParentErrors(errorNames?: string[]): ValidatorFn;
8763
- static clearError(control: AbstractControl, errorCode: string): void;
8764
- static copyError(sourceControl: AbstractControl, targetControl: AbstractControl, errorCode: string): void;
8765
- }
8766
- declare class SharedFormGroupValidators {
8767
- static dateRange(startDateField: string, endDateField: string, opts?: {
8768
- msg?: string;
8769
- fieldOnly?: boolean;
8770
- skipIfNoTime?: boolean;
8771
- } | string): ValidatorFn;
8772
- static dateMaxDuration(startDateField: string, endDateField: string, maxDuration: number, durationUnit?: moment.unitOfTime.Diff, opts?: {
8773
- skipIfNoTime?: boolean;
8774
- }): ValidatorFn;
8775
- static dateMinDuration(startDateField: string, endDateField: string, minDuration: number, durationUnit?: moment.unitOfTime.Diff): ValidatorFn;
8776
- static requiredIf(fieldName: string, anotherFieldToCheck: string | AbstractControl, opts?: {
8777
- fieldOnly?: boolean;
8778
- isEmpty?: (control: AbstractControl) => boolean;
8779
- predicate?: (control: AbstractControl) => boolean;
8780
- }): ValidatorFn;
8781
- static requiredIfTrue(fieldName: string, anotherFieldToCheck: string | AbstractControl, opts?: {
8782
- fieldOnly?: boolean;
8783
- isEmpty?: (control: AbstractControl) => boolean;
8784
- }): ValidatorFn;
8785
- static requiredIfFalse(fieldName: string, anotherFieldToCheck: string | AbstractControl, opts?: {
8786
- fieldOnly?: boolean;
8787
- isEmpty?: (control: AbstractControl) => boolean;
8788
- }): ValidatorFn;
8789
- static requiredIfEmpty(fieldName: string, anotherFieldToCheck: string, opts?: {
8790
- fieldOnly?: boolean;
8791
- isEmpty?: (control: AbstractControl) => boolean;
8792
- }): ValidatorFn;
8793
- static propagateIfDirty(fieldName: string, fieldNameToPropagate: string, valueToPropagate: any): ValidatorFn;
8794
- /**
8795
- * Same as compose, but keep only the first errors (instead of the union)
8796
- *
8797
- * @param validators
8798
- */
8799
- first(validators: (ValidatorFn | null | undefined)[]): ValidationErrors | null;
9083
+ interface AppMarkdownModalOptions {
9084
+ title?: string;
9085
+ data?: string;
9086
+ src?: string;
9087
+ showError?: boolean;
9088
+ cssClass?: string;
9089
+ canPrint?: boolean;
9090
+ enableNavigationHistory?: boolean;
9091
+ debug?: boolean;
8800
9092
  }
8801
- declare class SharedFormArrayValidators {
8802
- /**
8803
- * Validate uniqueness of an entity in a FormArray
8804
- *
8805
- * @param controlName the name of the control in FormArray
8806
- */
8807
- static uniqueEntity(controlName: string): ValidatorFn;
8808
- static requiredArrayMinLength(minLength?: number): ValidatorFn;
8809
- static arrayMaxLength(maxLength?: number): ValidatorFn;
8810
- /**
8811
- * Validate the sum of control values in an FormArray not overflow the max value
8812
- *
8813
- * @param controlName the name of the control in FormArray
8814
- * @param max the maximum value
8815
- */
8816
- static validSumMaxValue(controlName: string, max: number): ValidatorFn;
9093
+ declare class AppMarkdownModal implements AppMarkdownModalOptions {
9094
+ protected injector: Injector;
9095
+ protected viewCtrl: ModalController;
9096
+ protected platform: PlatformService;
9097
+ protected settings: LocalSettingsService;
9098
+ protected translate: TranslateService;
9099
+ protected network: NetworkService;
9100
+ protected cd: ChangeDetectorRef;
9101
+ title: string;
9102
+ showError: boolean;
9103
+ canPrint: boolean;
9104
+ data: string;
9105
+ src: string;
9106
+ enableNavigationHistory: boolean;
9107
+ debug: boolean;
9108
+ content: AppMarkdownContent;
9109
+ static show(modalCtrl: ModalController, options: AppMarkdownModalOptions): Promise<_ionic_core.OverlayEventDetail<any>>;
9110
+ constructor(injector: Injector, viewCtrl: ModalController, platform: PlatformService, settings: LocalSettingsService, translate: TranslateService, network: NetworkService, cd: ChangeDetectorRef);
9111
+ close(_?: Event): Promise<boolean>;
9112
+ goBack(event: Event, content: AppMarkdownContent): void;
9113
+ protected markAsLoaded(): void;
9114
+ protected markAsLoading(): void;
9115
+ protected setError(err: string | Error): void;
9116
+ protected resetError(): void;
9117
+ static ɵfac: i0.ɵɵFactoryDeclaration<AppMarkdownModal, never>;
9118
+ static ɵcmp: i0.ɵɵComponentDeclaration<AppMarkdownModal, "app-markdown-modal", never, { "title": { "alias": "title"; "required": false; }; "showError": { "alias": "showError"; "required": false; }; "canPrint": { "alias": "canPrint"; "required": false; }; "data": { "alias": "data"; "required": false; }; "src": { "alias": "src"; "required": false; }; "enableNavigationHistory": { "alias": "enableNavigationHistory"; "required": false; }; "debug": { "alias": "debug"; "required": false; }; }, {}, never, never, false, never>;
9119
+ static ngAcceptInputType_showError: unknown;
9120
+ static ngAcceptInputType_canPrint: unknown;
9121
+ static ngAcceptInputType_enableNavigationHistory: unknown;
9122
+ static ngAcceptInputType_debug: unknown;
8817
9123
  }
8818
- type ObservableValidatorFn = (control: AbstractControl) => Observable<ValidationErrors | null>;
8819
- type PromiseValidatorFn = (control: AbstractControl) => Promise<ValidationErrors | null>;
8820
- declare class SharedAsyncValidators {
8821
- private static DEBOUNCE_TIME_VALIDATOR_ID;
8822
- static get lastDebounceTimeId(): number;
8823
- /**
8824
- * Add a debounce time to a validator.
8825
- *
8826
- * @param form
8827
- * @param validatorFn
8828
- * @param opts Use opts.stopSubject to stop the validator, before end
8829
- */
8830
- static debounceTime(validatorFn: ValidatorFn | AsyncValidatorFn, opts?: {
8831
- dispose?: Observable<any>;
8832
- debounceTime?: number;
8833
- markForCheck?: () => void;
8834
- debug?: boolean;
8835
- }): ObservableValidatorFn;
8836
- /**
8837
- * Add an async validator, that can be disposed by the returned subscription
8838
- *
8839
- * @param form
8840
- * @param validatorFn the validator or job to execute
8841
- * @param opts
8842
- */
8843
- static registerAsyncValidator(form: AbstractControl, validatorFn: ValidatorFn | AsyncValidatorFn, opts?: {
8844
- debounceTime?: number;
8845
- markForCheck?: () => void;
8846
- debug?: boolean;
8847
- }): Subscription;
9124
+
9125
+ declare class MarkdownDirective implements OnDestroy {
9126
+ private service;
9127
+ private element;
9128
+ private _subscription;
9129
+ constructor(service: MarkdownService, element: ElementRef<HTMLElement>);
9130
+ processAnchors(): void;
9131
+ ngOnDestroy(): void;
9132
+ static ɵfac: i0.ɵɵFactoryDeclaration<MarkdownDirective, never>;
9133
+ static ɵdir: i0.ɵɵDirectiveDeclaration<MarkdownDirective, "markdown,[markdown]", never, {}, {}, never, never, false, never>;
8848
9134
  }
8849
9135
 
8850
9136
  declare class DebugComponent {
@@ -8865,266 +9151,406 @@ declare class SharedDebugModule {
8865
9151
  static ɵinj: i0.ɵɵInjectorDeclaration<SharedDebugModule>;
8866
9152
  }
8867
9153
 
8868
- declare class MarkdownService {
8869
- private route;
8870
- private router;
8871
- private platform;
8872
- private locationStrategy;
8873
- private navController;
8874
- private baseUrl;
8875
- private _markedRenderer;
8876
- get renderer(): MarkedRenderer;
8877
- set renderer(value: MarkedRenderer);
8878
- onClickMarkdownUrl: Subject<string>;
8879
- constructor();
8880
- setBaseUrl(baseUrl: string): void;
8881
- resetBaseUrl(): void;
8882
- getUrlTree(url: string): UrlTree;
8883
- navigate(url: string, replaceUrl?: boolean): void;
8884
- listenClickEvents(nativeElement: HTMLElement): Subscription;
9154
+ declare class SharedMarkdownModule {
9155
+ static forRoot(): ModuleWithProviders<SharedMarkdownModule>;
9156
+ static ɵfac: i0.ɵɵFactoryDeclaration<SharedMarkdownModule, never>;
9157
+ static ɵmod: i0.ɵɵNgModuleDeclaration<SharedMarkdownModule, [typeof AppMarkdownContent, typeof AppMarkdownModal, typeof MarkdownDirective], [typeof i2$1.CommonModule, typeof SharedIonicModule, typeof i9.TranslatePipe, typeof i11$1.MarkdownModule, typeof SharedToolbarModule, typeof SharedDebugModule], [typeof i11$1.MarkdownModule, typeof AppMarkdownContent, typeof MarkdownDirective]>;
9158
+ static ɵinj: i0.ɵɵInjectorDeclaration<SharedMarkdownModule>;
9159
+ }
9160
+
9161
+ declare class SharedFileAttachmentModule {
9162
+ static ɵfac: i0.ɵɵFactoryDeclaration<SharedFileAttachmentModule, never>;
9163
+ static ɵmod: i0.ɵɵNgModuleDeclaration<SharedFileAttachmentModule, [typeof FileAttachmentComponent, typeof FileAttachmentPreviewModal], [typeof i2$1.CommonModule, typeof SharedIonicModule, typeof SharedMaterialModule, typeof SharedPipesModule, typeof SharedMarkdownModule, typeof i9.TranslatePipe], [typeof FileAttachmentComponent, typeof FileAttachmentPreviewModal]>;
9164
+ static ɵinj: i0.ɵɵInjectorDeclaration<SharedFileAttachmentModule>;
9165
+ }
9166
+
9167
+ declare class JsonUtils {
9168
+ static DEFAULT_ENCODING: string;
9169
+ static exportToFile(content: any, opts?: {
9170
+ filename?: string;
9171
+ encoding?: string;
9172
+ type?: string;
9173
+ }): void;
9174
+ static writeToFile(content: any, opts?: {
9175
+ filename?: string;
9176
+ type?: string;
9177
+ }): File;
9178
+ static parseFile<T = any>(file: File, opts?: {
9179
+ encoding?: string;
9180
+ }): Observable<FileEvent<T>>;
9181
+ static getLocalizedEncoding(translate: TranslateService, defaultEncoding?: string): string;
9182
+ }
9183
+
9184
+ declare class UriUtils {
8885
9185
  /**
8886
- * Transform a relative URL to its absolute representation according to current router state.
8887
- * @param url Relative URL path.
8888
- * @return Absolute URL based on the current route.
9186
+ * Extract the filename, from an uri (using the last slash)
9187
+ *
9188
+ * @param uri
8889
9189
  */
8890
- normalizeUrl(url: string): string;
8891
- scrollToAnchor(containerElement: HTMLElement, anchorId: string): void;
8892
- protected setRenderer(renderer: MarkedRenderer): void;
8893
- protected click(event: Event, containerElement: HTMLElement): Promise<boolean>;
8894
- protected link(href: string | null, title: string | null, text: string): string;
8895
- protected image(href: string, title: string | null, text: string): string;
8896
- protected heading(text: string, depth: number): string;
8897
- static ɵfac: i0.ɵɵFactoryDeclaration<MarkdownService, never>;
8898
- static ɵprov: i0.ɵɵInjectableDeclaration<MarkdownService>;
9190
+ static getFilename(uri: string): string;
8899
9191
  }
8900
9192
 
8901
- interface PrintOptions {
8902
- id?: string | number;
8903
- title?: string;
8904
- showToast?: boolean;
8905
- toastMessage?: string;
8906
- style?: string;
8907
- }
8908
- declare const PRINT_LOADING_STORAGE_KEY_PREFIX = "print-loading-";
8909
- declare const PRINT_ID_QUERY_PARAM = "print-id";
8910
- declare class PrintService {
8911
- protected toastController: ToastController;
8912
- protected translate: TranslateService;
8913
- protected storage: StorageService;
8914
- protected document: Document;
8915
- private _printId;
8916
- constructor(toastController: ToastController, translate: TranslateService, storage: StorageService, document: Document);
8917
- nextJobId(): number;
9193
+ declare abstract class UrlUtils {
8918
9194
  /**
8919
- * Extracts and returns the job ID from a given URL.
9195
+ * Determines if a given URL is a relative URL.
8920
9196
  *
8921
- * @param {string} [url] - The URL from which to extract the job ID. If not provided, `window.location.href` will be used.
8922
- * @return {number | undefined} The extracted job ID as a number, or `undefined` if the job ID is not present or invalid.
9197
+ * @param {string | null} href - The URL to check.
9198
+ * @return {boolean} True if the URL is relative, false otherwise.
8923
9199
  */
8924
- getJobId(url?: string): string | undefined;
9200
+ static isRelativeUrl(href: string | null): boolean;
8925
9201
  /**
8926
- * Determines whether the provided URL or the current page's URL contains
8927
- * a specific query parameter, indicating it's a printing-related URL.
9202
+ * Determines if a given URL is an internal URL.
8928
9203
  *
8929
- * @param {string} [url] - The optional URL to check. If not provided, the current page's URL is used.
8930
- * @param {string} [queryParam='print-id'] - The query parameter to look for, defaulting to 'print-id'.
8931
- * @return {boolean} Returns true if the query parameter is found in the URL; otherwise, false.
9204
+ * @param {string | null} href - The URL to be checked. Can be a string representing the URL or null.
9205
+ * @return {boolean} Returns true if the URL is internal, otherwise false.
8932
9206
  */
8933
- isPrintingUrl(url?: string, queryParam?: string): boolean;
8934
- printElement(element: HTMLElement, opts?: PrintOptions): Promise<number | string>;
8935
- printHTML(html: string, opts?: PrintOptions): Promise<number | string>;
9207
+ static isInternalUrl(href: string | null): boolean;
9208
+ static isExternalUrl(href: string | null): boolean;
8936
9209
  /**
8937
- * Prints the content of a URL by rendering it in an iframe.
9210
+ * Removes the query string from the given URL, returning only the base URL.
8938
9211
  *
8939
- * @param {string} url The URL of the content to print. This parameter is required.
8940
- * @param {Omit<PrintOptions, 'style'>} [opts] Optional settings for printing, excluding the 'style' option.
8941
- * @return {Promise<number>} A promise that resolves to the ID of the print job.
9212
+ * @param {string} url - The URL from which the query string will be stripped.
9213
+ * @return {string} The URL without the query string.
8942
9214
  */
8943
- printUrl(url: string, opts?: Omit<PrintOptions, 'style'>): Promise<number | string>;
9215
+ static stripQuery(url: string): string;
8944
9216
  /**
8945
- * Prints the content of the specified iframe element.
9217
+ * Removes the fragment and query components from a given URL string.
8946
9218
  *
8947
- * @param {HTMLIFrameElement} iframe - The iframe element whose content needs to be printed. Must be a valid and loaded iframe element.
8948
- * @param {PrintOptions} [opts] - Optional parameters for the print operation, which may include options for toast messages and job configuration.
8949
- * @return {Promise<number>} A promise that resolves to the unique ID of the print job.
8950
- * @throws Will throw an error if the required 'iframe' argument is missing or invalid.
9219
+ * @param {string} url - The URL string to process.
9220
+ * @return {string} The URL without its fragment and query components.
8951
9221
  */
8952
- printIframe(iframe: HTMLIFrameElement, opts?: PrintOptions): Promise<number | string>;
8953
- markAsLoading(id: string | number): Promise<void>;
8954
- markAsLoaded(id: string | number): Promise<void>;
8955
- isLoaded(id: string | number): Promise<boolean>;
8956
- isLoading(id: string | number): Promise<boolean>;
8957
- protected createPrintIframeByUrl(url: string, opts?: {
8958
- id?: number | string;
8959
- }): HTMLIFrameElement;
8960
- protected createPrintIframeByHtml(html: string, opts?: {
8961
- title?: string;
8962
- inlineStyle?: string;
8963
- }): HTMLIFrameElement;
9222
+ static stripFragmentAndQuery(url: string): string;
9223
+ /**
9224
+ * Extracts the fragment identifier from the given URL.
9225
+ *
9226
+ * @param {string} url - The URL from which to extract the fragment.
9227
+ * @return {string} The fragment identifier of the URL, excluding the '#' symbol.
9228
+ */
9229
+ static getFragment(url: string): string;
9230
+ static resolveRelativeUrl(baseUrl: string, relativePath: string, opts?: {
9231
+ absoluteByDefault: boolean;
9232
+ }): string;
9233
+ /**
9234
+ * Resolves a given URL by normalizing its parts, removing unnecessary path segments like "." and "..".
9235
+ *
9236
+ * @param {string} url - The URL to be resolved. Must be a non-empty string.
9237
+ * @return {string} The resolved and cleaned URL string.
9238
+ * @throws {Error} If the provided URL is missing or undefined.
9239
+ */
9240
+ static normalizeUrl(url: string): string;
9241
+ /**
9242
+ * This function completes a base URL with an object containing key-value pairs
9243
+ * representing the query parameters to add. It properly encodes the
9244
+ * parameters and ensures they are added with the appropriate separator ('?' or '&').
9245
+ * Parameters with null or undefined values are automatically filtered out.
9246
+ *
9247
+ * @example
9248
+ * // In a template
9249
+ * <a [href]="'https://example.com' | appendQueryParams:{id: 123, name: 'test'}">Link</a>
9250
+ * // Result: https://example.com?id=123&name=test
9251
+ *
9252
+ * @example
9253
+ * // If the URL already contains parameters
9254
+ * <a [href]="'https://example.com?page=1' | appendQueryParams:{sort: 'asc'}">Link</a>
9255
+ * // Result: https://example.com?page=1&sort=asc
9256
+ *
9257
+ * @param url
9258
+ * @param queryParams
9259
+ */
9260
+ static appendQueryParams(url: string | any[], queryParams: {
9261
+ [key: string]: any;
9262
+ }): string;
9263
+ /**
9264
+ * Extracts and returns the root URL from the given complete URL string.
9265
+ *
9266
+ * @param {string} url - The complete URL string from which the root URL will be extracted.
9267
+ * @return {string} The root URL including the protocol and host (and port if present).
9268
+ * @throws {Error} Throws an error if the provided URL is missing or is in an invalid format.
9269
+ */
9270
+ static getRootUrl(url: string): string;
9271
+ /**
9272
+ * Retrieves the parent URL or directory path from the provided URL.
9273
+ * This method handles both relative and absolute URLs.
9274
+ *
9275
+ * @param {string} url - The URL from which to derive the parent path.
9276
+ * Must be a valid URL or relative path.
9277
+ * @return {string} The parent URL or directory path. Throws an error if the input is invalid.
9278
+ */
9279
+ static getParent(url: string): string;
8964
9280
  /**
8965
- * Applies the styles from the provided document, including external stylesheets and inline styles,
8966
- * to the specified iframe's document.
9281
+ * Cleans the provided URL by encoding it safely and replacing specific patterns.
8967
9282
  *
8968
- * @param {HTMLIFrameElement} iframe - The iframe to which the styles are applied.
8969
- * @return {void} Does not return a value.
9283
+ * @param {string} href - The URL string to be cleaned.
9284
+ * @return {string|null} The cleaned and encoded URL string, or null if an error occurs.
8970
9285
  */
8971
- protected applyDocumentStyleToIframe(iframe: HTMLIFrameElement): void;
8972
- protected waitIdle(iframe: HTMLIFrameElement, opts?: {
8973
- id?: number | string;
8974
- timeout?: number;
8975
- }): Promise<void>;
9286
+ static cleanUrl(href: string): string;
9287
+ static addTrailingSlash(url: string): string;
9288
+ static addStartingSlash(url: string): string;
9289
+ static removeStartingSlash(url: string): string;
9290
+ static concat(basePath: string, relativePath: string): string;
8976
9291
  /**
8977
- * Triggers the print functionality of the given iframe and resolves or rejects based on the print completion or timeout.
9292
+ * Cleans the given pathname by replacing occurrences of multiple consecutive slashes with a single slash.
8978
9293
  *
8979
- * @param {HTMLIFrameElement} iframe - The iframe element to be printed.
8980
- * @param {{timeout?: number}} [opts] - An optional configuration object.
8981
- * @param {number} [opts.timeout] - The maximum time in milliseconds to wait for the print to complete before rejecting the promise.
8982
- * @return {Promise<void>} A promise that resolves after the print is completed or rejects if a timeout occurs.
9294
+ * @param {string} pathname - The pathname to be cleaned.
9295
+ * @return {string} The cleaned pathname with redundant slashes removed.
8983
9296
  */
8984
- protected print(iframe: HTMLIFrameElement, opts?: {
8985
- timeout?: number;
8986
- }): Promise<void>;
8987
- private showToast;
8988
- static ɵfac: i0.ɵɵFactoryDeclaration<PrintService, never>;
8989
- static ɵprov: i0.ɵɵInjectableDeclaration<PrintService>;
9297
+ static cleanPath(pathname: string): string;
9298
+ static noTrailingSlash: typeof noTrailingSlash;
8990
9299
  }
8991
9300
 
8992
- interface AppMarkdownOptions {
8993
- data?: string;
8994
- src?: string;
8995
- showError?: boolean;
9301
+ type ColorName = PredefinedColors | 'white' | 'red' | 'green' | 'blue';
9302
+ /**
9303
+ * Useful class for color conversion
9304
+ */
9305
+ declare class Color {
9306
+ private _rgbArray;
9307
+ private _opacity?;
9308
+ private _name;
9309
+ static get(name: ColorName): Color;
9310
+ static parseRgba(rgba: string): Color | null;
9311
+ static transparent: () => Color;
9312
+ constructor(_rgbArray: number[], _opacity?: number, _name?: string);
9313
+ get name(): string;
9314
+ get opacity(): number;
9315
+ get rgb(): number[];
9316
+ get r(): number;
9317
+ get g(): number;
9318
+ get b(): number;
9319
+ rgba(opacity?: number): string;
8996
9320
  }
8997
- declare class AppMarkdownContent implements AppMarkdownOptions, OnDestroy {
8998
- protected cd: ChangeDetectorRef;
8999
- protected element: ElementRef<HTMLElement>;
9000
- private _document;
9001
- protected route: ActivatedRoute;
9002
- private _printId;
9003
- private _clickSubscription;
9004
- protected navController: NavController;
9005
- protected settings: LocalSettingsService;
9006
- protected translate: TranslateService;
9007
- protected network: NetworkService;
9008
- protected markdownService: MarkdownService;
9009
- protected toastController: ToastController;
9010
- protected printService: PrintService;
9011
- protected loading: boolean;
9012
- protected error: string;
9013
- protected baseUrl: string;
9014
- protected _data: string;
9015
- protected _src: string;
9016
- protected _fallbackSrc: string;
9017
- protected _anchor: string;
9018
- protected _navHistory: {
9019
- src?: string;
9020
- fallbackSrc?: string;
9021
- data?: string;
9022
- anchor?: string;
9023
- }[];
9024
- set data(value: string);
9025
- get data(): string;
9026
- set src(value: string);
9027
- get src(): string;
9028
- set anchor(value: string);
9029
- get anchor(): string;
9030
- debug: boolean;
9031
- showError: boolean;
9032
- animated: boolean;
9033
- enableNavigationHistory: boolean;
9034
- updateRouteLocation: boolean;
9035
- markdownUrlChange: EventEmitter<string>;
9036
- constructor(cd: ChangeDetectorRef, element: ElementRef<HTMLElement>, _document: Document, route: ActivatedRoute);
9037
- ngOnDestroy(): void;
9038
- goBack(event?: Event): void;
9039
- get canGoBack(): boolean;
9040
- print(): Promise<void>;
9041
- markAsLoaded(opts?: {
9042
- emitEvent?: boolean;
9043
- }): void;
9044
- markAsLoading(opts?: {
9045
- emitEvent?: boolean;
9046
- }): void;
9047
- setError(error: string | Error): void;
9048
- resetError(): void;
9049
- protected setData(value: string, opts?: {
9050
- anchor?: string;
9051
- addToNavigationHistory?: boolean;
9052
- }): void;
9053
- protected setSrc(src: string, opts?: {
9054
- fallbackSrc?: string;
9055
- anchor?: string;
9056
- addToNavigationHistory?: boolean;
9057
- }): void;
9058
- protected onReady(): void;
9059
- protected onLoadError(error?: string | Error): void;
9060
- protected startListenClickEvents(): void;
9061
- static ɵfac: i0.ɵɵFactoryDeclaration<AppMarkdownContent, [null, null, null, { optional: true; }]>;
9062
- static ɵcmp: i0.ɵɵComponentDeclaration<AppMarkdownContent, "app-markdown-content", never, { "data": { "alias": "data"; "required": false; }; "src": { "alias": "src"; "required": false; }; "anchor": { "alias": "anchor"; "required": false; }; "debug": { "alias": "debug"; "required": false; }; "showError": { "alias": "showError"; "required": false; }; "animated": { "alias": "animated"; "required": false; }; "enableNavigationHistory": { "alias": "enableNavigationHistory"; "required": false; }; "updateRouteLocation": { "alias": "updateRouteLocation"; "required": false; }; }, { "markdownUrlChange": "markdownUrlChange"; }, never, never, false, never>;
9063
- static ngAcceptInputType_debug: unknown;
9064
- static ngAcceptInputType_showError: unknown;
9065
- static ngAcceptInputType_animated: unknown;
9066
- static ngAcceptInputType_enableNavigationHistory: unknown;
9067
- static ngAcceptInputType_updateRouteLocation: unknown;
9321
+ declare interface ColorGradientOptions {
9322
+ startColor?: number[];
9323
+ mainColor?: number[];
9324
+ mainColorIndex?: number;
9325
+ endColor?: number[];
9068
9326
  }
9069
-
9070
- interface AppMarkdownModalOptions {
9071
- title?: string;
9072
- data?: string;
9073
- src?: string;
9074
- showError?: boolean;
9075
- cssClass?: string;
9076
- canPrint?: boolean;
9077
- enableNavigationHistory?: boolean;
9078
- debug?: boolean;
9327
+ declare interface ColorScaleOptions extends ColorGradientOptions {
9328
+ opacity?: number;
9329
+ min?: number;
9330
+ max?: number;
9331
+ upperMax?: boolean;
9079
9332
  }
9080
- declare class AppMarkdownModal implements AppMarkdownModalOptions {
9081
- protected injector: Injector;
9082
- protected viewCtrl: ModalController;
9083
- protected platform: PlatformService;
9084
- protected settings: LocalSettingsService;
9085
- protected translate: TranslateService;
9086
- protected network: NetworkService;
9087
- protected cd: ChangeDetectorRef;
9088
- title: string;
9089
- showError: boolean;
9090
- canPrint: boolean;
9091
- data: string;
9092
- src: string;
9093
- enableNavigationHistory: boolean;
9094
- debug: boolean;
9095
- content: AppMarkdownContent;
9096
- static show(modalCtrl: ModalController, options: AppMarkdownModalOptions): Promise<_ionic_core.OverlayEventDetail<any>>;
9097
- constructor(injector: Injector, viewCtrl: ModalController, platform: PlatformService, settings: LocalSettingsService, translate: TranslateService, network: NetworkService, cd: ChangeDetectorRef);
9098
- close(_?: Event): Promise<boolean>;
9099
- goBack(event: Event, content: AppMarkdownContent): void;
9100
- protected markAsLoaded(): void;
9101
- protected markAsLoading(): void;
9102
- protected setError(err: string | Error): void;
9103
- protected resetError(): void;
9104
- static ɵfac: i0.ɵɵFactoryDeclaration<AppMarkdownModal, never>;
9105
- static ɵcmp: i0.ɵɵComponentDeclaration<AppMarkdownModal, "app-markdown-modal", never, { "title": { "alias": "title"; "required": false; }; "showError": { "alias": "showError"; "required": false; }; "canPrint": { "alias": "canPrint"; "required": false; }; "data": { "alias": "data"; "required": false; }; "src": { "alias": "src"; "required": false; }; "enableNavigationHistory": { "alias": "enableNavigationHistory"; "required": false; }; "debug": { "alias": "debug"; "required": false; }; }, {}, never, never, false, never>;
9106
- static ngAcceptInputType_showError: unknown;
9107
- static ngAcceptInputType_canPrint: unknown;
9108
- static ngAcceptInputType_enableNavigationHistory: unknown;
9109
- static ngAcceptInputType_debug: unknown;
9333
+ declare interface ColorScaleLegendItem {
9334
+ label: string | number[];
9335
+ color: Color;
9336
+ }
9337
+ declare interface ColorScaleLegend {
9338
+ items: ColorScaleLegendItem[];
9339
+ }
9340
+ /**
9341
+ * Helper class for colors scale
9342
+ */
9343
+ declare class ColorScale {
9344
+ static custom: (count: number, options?: ColorScaleOptions) => ColorScale;
9345
+ static default(): ColorScale;
9346
+ /**
9347
+ * Create an array with the given color
9348
+ **/
9349
+ static fix(length?: number, colorName?: ColorName): string[];
9350
+ private _min;
9351
+ private _max;
9352
+ private _rangeSize;
9353
+ private _legendItems;
9354
+ get min(): number;
9355
+ get max(): number;
9356
+ constructor(colorArray: number[][], options?: ColorScaleOptions);
9357
+ get legend(): ColorScaleLegend;
9358
+ getValueColor(value: number): Color;
9359
+ getLegendForValue(value: number): ColorScaleLegendItem;
9360
+ getLegendAtIndex(index: number): ColorScaleLegendItem;
9361
+ protected computeLegendItems(colorArray: number[][]): ColorScaleLegendItem[];
9362
+ }
9363
+
9364
+ declare function rgbToHex(r: number, g: number, b: number): string;
9365
+ declare function rgbArrayToHex(rgb: number[]): string;
9366
+ declare function hexToRgbArray(hex: string): number[];
9367
+ declare function hexToRgb(hex: string): {
9368
+ r: number;
9369
+ g: number;
9370
+ b: number;
9371
+ };
9372
+ declare function mixHex(color1: string, color2: string, weight?: number): string;
9373
+ declare function getColorShade(color: string): string;
9374
+ declare function getColorTint(color: string): string;
9375
+ /**
9376
+ *
9377
+ * @param color
9378
+ * @param bw if true, will use black or white color, instead of the exact inverse
9379
+ */
9380
+ declare function getColorContrast(color: string, bw?: boolean): string;
9381
+ /**
9382
+ * Determine the luminance of a color
9383
+ * Uses coefficients from http://stackoverflow.com/a/3943023/112731
9384
+ *
9385
+ * Note: Color must be in hex format (e.g. "#RRGGBB").
9386
+ * @param color Hex color string
9387
+ * @returns th color luminance
9388
+ */
9389
+ declare function getColorLuminance(color: string): number;
9390
+ /**
9391
+ * Determine if a color is considered light based on perceived luminance.
9392
+ *
9393
+ * Note: Color must be in hex format (e.g. "#RRGGBB").
9394
+ * @param color Hex color string
9395
+ * @returns true if the color is light, false otherwise
9396
+ */
9397
+ declare function isLightColor(color: string): boolean;
9398
+
9399
+ declare const HAMMER_TAP_TIME = 250;
9400
+ declare const HAMMER_PRESS_TIME = 400;
9401
+ /**
9402
+ * @hidden
9403
+ * This class overrides the default Angular gesture config.
9404
+ *
9405
+ */
9406
+ declare class AppGestureConfig extends HammerGestureConfig {
9407
+ overrides: any;
9408
+ buildHammer(element: HTMLElement): any;
9409
+ static ɵfac: i0.ɵɵFactoryDeclaration<AppGestureConfig, never>;
9410
+ static ɵprov: i0.ɵɵInjectableDeclaration<AppGestureConfig>;
9110
9411
  }
9111
9412
 
9112
- declare class MarkdownDirective implements OnDestroy {
9113
- private service;
9114
- private element;
9115
- private _subscription;
9116
- constructor(service: MarkdownService, element: ElementRef<HTMLElement>);
9117
- processAnchors(): void;
9118
- ngOnDestroy(): void;
9119
- static ɵfac: i0.ɵɵFactoryDeclaration<MarkdownDirective, never>;
9120
- static ɵdir: i0.ɵɵDirectiveDeclaration<MarkdownDirective, "markdown,[markdown]", never, {}, {}, never, never, false, never>;
9413
+ declare class SharedValidators {
9414
+ private static _DOUBLE_REGEXP_CACHE;
9415
+ private static getDoubleRegexp;
9416
+ static equals(otherControlName: string): ValidatorFn;
9417
+ static readonly I18N_ERROR_KEYS: {
9418
+ required: string;
9419
+ min: string;
9420
+ max: string;
9421
+ minlength: string;
9422
+ maxlength: string;
9423
+ pubkey: string;
9424
+ validDate: string;
9425
+ dateIsAfter: string;
9426
+ dateIsBefore: string;
9427
+ dateRange: string;
9428
+ dateMinDuration: string;
9429
+ dateMaxDuration: string;
9430
+ maxDecimals: string;
9431
+ decimal: string;
9432
+ integer: string;
9433
+ precision: string;
9434
+ email: string;
9435
+ latitude: string;
9436
+ longitude: string;
9437
+ pattern: string;
9438
+ unique: string;
9439
+ entity: string;
9440
+ invalid: string;
9441
+ inconsistent: string;
9442
+ equals: string;
9443
+ };
9444
+ static latitude(control: UntypedFormControl): ValidationErrors | null;
9445
+ static longitude(control: UntypedFormControl): ValidationErrors | null;
9446
+ static object(control: UntypedFormControl): ValidationErrors | null;
9447
+ static entity(control: UntypedFormControl): ValidationErrors | null;
9448
+ static entities(control: UntypedFormControl): ValidationErrors | null;
9449
+ static empty(control: UntypedFormControl): ValidationErrors | null;
9450
+ static pubkey(control: UntypedFormControl): ValidationErrors | null;
9451
+ static integer(control: UntypedFormControl): ValidationErrors | null;
9452
+ static decimal(opts?: {
9453
+ maxDecimals?: number;
9454
+ }): ValidatorFn;
9455
+ /**
9456
+ * Check precision. e.g. if precision=0.5 then value=0.6 is invalid, but 1.5 is valid
9457
+ *
9458
+ * @param precision
9459
+ */
9460
+ static precision(precision: number): ValidatorFn;
9461
+ static validDateTime(requiredTime?: boolean): ValidatorFn;
9462
+ static validDate: ValidatorFn;
9463
+ static validDateAllowNoTime: ValidatorFn;
9464
+ static dateIsAfter(previousValue: Moment, errorParam: string, granularity?: unitOfTime$1.StartOf): ValidatorFn;
9465
+ static dateIsBefore(maxValue: Moment, errorParam: string, granularity?: unitOfTime$1.StartOf): ValidatorFn;
9466
+ static dateRangeEnd(startDateFieldName: string, msg?: string): ValidatorFn;
9467
+ static dateRangeStart(endDateFieldName: string, msg?: string): ValidatorFn;
9468
+ static copyParentErrors(errorNames?: string[]): ValidatorFn;
9469
+ static clearError(control: AbstractControl, errorCode: string): void;
9470
+ static copyError(sourceControl: AbstractControl, targetControl: AbstractControl, errorCode: string): void;
9121
9471
  }
9122
-
9123
- declare class SharedMarkdownModule {
9124
- static forRoot(): ModuleWithProviders<SharedMarkdownModule>;
9125
- static ɵfac: i0.ɵɵFactoryDeclaration<SharedMarkdownModule, never>;
9126
- static ɵmod: i0.ɵɵNgModuleDeclaration<SharedMarkdownModule, [typeof AppMarkdownContent, typeof AppMarkdownModal, typeof MarkdownDirective], [typeof i2$1.CommonModule, typeof SharedIonicModule, typeof i9.TranslatePipe, typeof i11$1.MarkdownModule, typeof SharedToolbarModule, typeof SharedDebugModule], [typeof i11$1.MarkdownModule, typeof AppMarkdownContent, typeof MarkdownDirective]>;
9127
- static ɵinj: i0.ɵɵInjectorDeclaration<SharedMarkdownModule>;
9472
+ declare class SharedFormGroupValidators {
9473
+ static dateRange(startDateField: string, endDateField: string, opts?: {
9474
+ msg?: string;
9475
+ fieldOnly?: boolean;
9476
+ skipIfNoTime?: boolean;
9477
+ } | string): ValidatorFn;
9478
+ static dateMaxDuration(startDateField: string, endDateField: string, maxDuration: number, durationUnit?: moment.unitOfTime.Diff, opts?: {
9479
+ skipIfNoTime?: boolean;
9480
+ }): ValidatorFn;
9481
+ static dateMinDuration(startDateField: string, endDateField: string, minDuration: number, durationUnit?: moment.unitOfTime.Diff): ValidatorFn;
9482
+ static requiredIf(fieldName: string, anotherFieldToCheck: string | AbstractControl, opts?: {
9483
+ fieldOnly?: boolean;
9484
+ isEmpty?: (control: AbstractControl) => boolean;
9485
+ predicate?: (control: AbstractControl) => boolean;
9486
+ }): ValidatorFn;
9487
+ static requiredIfTrue(fieldName: string, anotherFieldToCheck: string | AbstractControl, opts?: {
9488
+ fieldOnly?: boolean;
9489
+ isEmpty?: (control: AbstractControl) => boolean;
9490
+ }): ValidatorFn;
9491
+ static requiredIfFalse(fieldName: string, anotherFieldToCheck: string | AbstractControl, opts?: {
9492
+ fieldOnly?: boolean;
9493
+ isEmpty?: (control: AbstractControl) => boolean;
9494
+ }): ValidatorFn;
9495
+ static requiredIfEmpty(fieldName: string, anotherFieldToCheck: string, opts?: {
9496
+ fieldOnly?: boolean;
9497
+ isEmpty?: (control: AbstractControl) => boolean;
9498
+ }): ValidatorFn;
9499
+ static propagateIfDirty(fieldName: string, fieldNameToPropagate: string, valueToPropagate: any): ValidatorFn;
9500
+ /**
9501
+ * Same as compose, but keep only the first errors (instead of the union)
9502
+ *
9503
+ * @param validators
9504
+ */
9505
+ first(validators: (ValidatorFn | null | undefined)[]): ValidationErrors | null;
9506
+ }
9507
+ declare class SharedFormArrayValidators {
9508
+ /**
9509
+ * Validate uniqueness of an entity in a FormArray
9510
+ *
9511
+ * @param controlName the name of the control in FormArray
9512
+ */
9513
+ static uniqueEntity(controlName: string): ValidatorFn;
9514
+ static requiredArrayMinLength(minLength?: number): ValidatorFn;
9515
+ static arrayMaxLength(maxLength?: number): ValidatorFn;
9516
+ /**
9517
+ * Validate the sum of control values in an FormArray not overflow the max value
9518
+ *
9519
+ * @param controlName the name of the control in FormArray
9520
+ * @param max the maximum value
9521
+ */
9522
+ static validSumMaxValue(controlName: string, max: number): ValidatorFn;
9523
+ }
9524
+ type ObservableValidatorFn = (control: AbstractControl) => Observable<ValidationErrors | null>;
9525
+ type PromiseValidatorFn = (control: AbstractControl) => Promise<ValidationErrors | null>;
9526
+ declare class SharedAsyncValidators {
9527
+ private static DEBOUNCE_TIME_VALIDATOR_ID;
9528
+ static get lastDebounceTimeId(): number;
9529
+ /**
9530
+ * Add a debounce time to a validator.
9531
+ *
9532
+ * @param form
9533
+ * @param validatorFn
9534
+ * @param opts Use opts.stopSubject to stop the validator, before end
9535
+ */
9536
+ static debounceTime(validatorFn: ValidatorFn | AsyncValidatorFn, opts?: {
9537
+ dispose?: Observable<any>;
9538
+ debounceTime?: number;
9539
+ markForCheck?: () => void;
9540
+ debug?: boolean;
9541
+ }): ObservableValidatorFn;
9542
+ /**
9543
+ * Add an async validator, that can be disposed by the returned subscription
9544
+ *
9545
+ * @param form
9546
+ * @param validatorFn the validator or job to execute
9547
+ * @param opts
9548
+ */
9549
+ static registerAsyncValidator(form: AbstractControl, validatorFn: ValidatorFn | AsyncValidatorFn, opts?: {
9550
+ debounceTime?: number;
9551
+ markForCheck?: () => void;
9552
+ debug?: boolean;
9553
+ }): Subscription;
9128
9554
  }
9129
9555
 
9130
9556
  declare class MarkdownUtils {
@@ -9681,6 +10107,17 @@ declare const DEFAULT_PAGE_SIZE = 20;
9681
10107
  declare const DEFAULT_PAGE_SIZE_OPTIONS: number[];
9682
10108
  declare const RESERVED_START_COLUMNS: string[];
9683
10109
  declare const RESERVED_END_COLUMNS: string[];
10110
+ type AppTableAddButtonPosition = 'left' | 'right';
10111
+ /**
10112
+ * Global options of the tables (provided with the APP_TABLE_OPTIONS token)
10113
+ */
10114
+ interface AppTableOptions {
10115
+ /** Position of the add button, in the table toolbar (default: 'right') */
10116
+ addButtonPosition?: AppTableAddButtonPosition;
10117
+ /** Color of the "no result" label (default: 'danger') */
10118
+ noResultColor?: AppColors;
10119
+ }
10120
+ declare const APP_TABLE_OPTIONS: InjectionToken<AppTableOptions>;
9684
10121
  declare const DEFAULT_REQUIRED_COLUMNS: string[];
9685
10122
  declare const TABLE_SETTINGS_ENUM: {
9686
10123
  FILTER_KEY: string;
@@ -9873,6 +10310,11 @@ declare abstract class AppTable<T extends IEntity<T, ID>, F = any, ID = number>
9873
10310
  readonly mobile: boolean;
9874
10311
  settingsId: string;
9875
10312
  debug: boolean;
10313
+ protected readonly tableOptions: AppTableOptions;
10314
+ /** Position of the add button, in the table toolbar (default: given by the APP_TABLE_OPTIONS token, or 'right') */
10315
+ addButtonPosition: AppTableAddButtonPosition;
10316
+ /** Color of the "no result" label (default: given by the APP_TABLE_OPTIONS token, or 'danger') */
10317
+ noResultColor: AppColors;
9876
10318
  i18nColumnPrefix: string;
9877
10319
  i18nColumnSuffix: string;
9878
10320
  autoLoad: boolean;
@@ -10227,7 +10669,7 @@ declare abstract class AppTable<T extends IEntity<T, ID>, F = any, ID = number>
10227
10669
  private startCellValueChanges;
10228
10670
  private stopCellValueChanges;
10229
10671
  static ɵfac: i0.ɵɵFactoryDeclaration<AppTable<any, any, any>, never>;
10230
- static ɵdir: i0.ɵɵDirectiveDeclaration<AppTable<any, any, any>, never, never, { "settingsId": { "alias": "settingsId"; "required": false; }; "debug": { "alias": "debug"; "required": false; }; "i18nColumnPrefix": { "alias": "i18nColumnPrefix"; "required": false; }; "i18nColumnSuffix": { "alias": "i18nColumnSuffix"; "required": false; }; "autoLoad": { "alias": "autoLoad"; "required": false; }; "readOnly": { "alias": "readOnly"; "required": false; }; "inlineEdition": { "alias": "inlineEdition"; "required": false; }; "focusFirstColumn": { "alias": "focusFirstColumn"; "required": false; }; "confirmBeforeDelete": { "alias": "confirmBeforeDelete"; "required": false; }; "confirmBeforeCancel": { "alias": "confirmBeforeCancel"; "required": false; }; "undoableDeletion": { "alias": "undoableDeletion"; "required": false; }; "saveBeforeDelete": { "alias": "saveBeforeDelete"; "required": false; }; "keepEditedRowOnSave": { "alias": "keepEditedRowOnSave"; "required": false; }; "saveBeforeSort": { "alias": "saveBeforeSort"; "required": false; }; "saveBeforeFilter": { "alias": "saveBeforeFilter"; "required": false; }; "propagateRowError": { "alias": "propagateRowError"; "required": false; }; "permanentSelectionAllowed": { "alias": "permanentSelectionAllowed"; "required": false; }; "openRowThrottleTime": { "alias": "openRowThrottleTime"; "required": false; }; "loadingDebounceTime": { "alias": "loadingDebounceTime"; "required": false; }; "defaultSortBy": { "alias": "defaultSortBy"; "required": false; }; "defaultSortDirection": { "alias": "defaultSortDirection"; "required": false; }; "defaultPageSize": { "alias": "defaultPageSize"; "required": false; }; "defaultPageSizeOptions": { "alias": "defaultPageSizeOptions"; "required": false; }; "focusColumn": { "alias": "focusColumn"; "required": false; }; "dataSource": { "alias": "dataSource"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "paginator": { "alias": "paginator"; "required": false; }; }, { "onRefresh": "onRefresh"; "onClickRow": "onClickRow"; "onOpenRow": "onOpenRow"; "onNewRow": "onNewRow"; "onStartEditingRow": "onStartEditingRow"; "onConfirmEditCreateRow": "onConfirmEditCreateRow"; "onCancelOrDeleteRow": "onCancelOrDeleteRow"; "onBeforeDeleteRows": "onBeforeDeleteRows"; "onBeforeCancelRows": "onBeforeCancelRows"; "onBeforeSave": "onBeforeSave"; "onAfterDeletedRows": "onAfterDeletedRows"; "onSort": "onSort"; "onDirty": "onDirty"; "onError": "onError"; }, never, never, true, never>;
10672
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AppTable<any, any, any>, never, never, { "settingsId": { "alias": "settingsId"; "required": false; }; "debug": { "alias": "debug"; "required": false; }; "addButtonPosition": { "alias": "addButtonPosition"; "required": false; }; "noResultColor": { "alias": "noResultColor"; "required": false; }; "i18nColumnPrefix": { "alias": "i18nColumnPrefix"; "required": false; }; "i18nColumnSuffix": { "alias": "i18nColumnSuffix"; "required": false; }; "autoLoad": { "alias": "autoLoad"; "required": false; }; "readOnly": { "alias": "readOnly"; "required": false; }; "inlineEdition": { "alias": "inlineEdition"; "required": false; }; "focusFirstColumn": { "alias": "focusFirstColumn"; "required": false; }; "confirmBeforeDelete": { "alias": "confirmBeforeDelete"; "required": false; }; "confirmBeforeCancel": { "alias": "confirmBeforeCancel"; "required": false; }; "undoableDeletion": { "alias": "undoableDeletion"; "required": false; }; "saveBeforeDelete": { "alias": "saveBeforeDelete"; "required": false; }; "keepEditedRowOnSave": { "alias": "keepEditedRowOnSave"; "required": false; }; "saveBeforeSort": { "alias": "saveBeforeSort"; "required": false; }; "saveBeforeFilter": { "alias": "saveBeforeFilter"; "required": false; }; "propagateRowError": { "alias": "propagateRowError"; "required": false; }; "permanentSelectionAllowed": { "alias": "permanentSelectionAllowed"; "required": false; }; "openRowThrottleTime": { "alias": "openRowThrottleTime"; "required": false; }; "loadingDebounceTime": { "alias": "loadingDebounceTime"; "required": false; }; "defaultSortBy": { "alias": "defaultSortBy"; "required": false; }; "defaultSortDirection": { "alias": "defaultSortDirection"; "required": false; }; "defaultPageSize": { "alias": "defaultPageSize"; "required": false; }; "defaultPageSizeOptions": { "alias": "defaultPageSizeOptions"; "required": false; }; "focusColumn": { "alias": "focusColumn"; "required": false; }; "dataSource": { "alias": "dataSource"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "paginator": { "alias": "paginator"; "required": false; }; }, { "onRefresh": "onRefresh"; "onClickRow": "onClickRow"; "onOpenRow": "onOpenRow"; "onNewRow": "onNewRow"; "onStartEditingRow": "onStartEditingRow"; "onConfirmEditCreateRow": "onConfirmEditCreateRow"; "onCancelOrDeleteRow": "onCancelOrDeleteRow"; "onBeforeDeleteRows": "onBeforeDeleteRows"; "onBeforeCancelRows": "onBeforeCancelRows"; "onBeforeSave": "onBeforeSave"; "onAfterDeletedRows": "onAfterDeletedRows"; "onSort": "onSort"; "onDirty": "onDirty"; "onError": "onError"; }, never, never, true, never>;
10231
10673
  }
10232
10674
 
10233
10675
  declare abstract class AppInMemoryTable<T extends IEntity<T, ID>, F = any, ID = number> extends AppTable<T, F, ID> implements OnInit {
@@ -10314,6 +10756,8 @@ declare class AppPropertiesTable extends AppInMemoryTable<PropertyEntity, Proper
10314
10756
  declare class UserTokenTable extends AppInMemoryTable<UserToken> implements OnInit {
10315
10757
  protected configService: ConfigService;
10316
10758
  useSticky: boolean;
10759
+ showToolbar: boolean;
10760
+ showFabButton: boolean;
10317
10761
  protected showScopes: boolean;
10318
10762
  protected defaultScope: string;
10319
10763
  protected tokenScopes: TokenScope[];
@@ -10329,7 +10773,9 @@ declare class UserTokenTable extends AppInMemoryTable<UserToken> implements OnIn
10329
10773
  display(scopes: TokenScope[]): string;
10330
10774
  protected onConfigLoaded(config: Configuration): void;
10331
10775
  static ɵfac: i0.ɵɵFactoryDeclaration<UserTokenTable, [null, null, null, null, { optional: true; }]>;
10332
- static ɵcmp: i0.ɵɵComponentDeclaration<UserTokenTable, "app-user-token-table", never, { "useSticky": { "alias": "useSticky"; "required": false; }; }, {}, never, never, false, never>;
10776
+ static ɵcmp: i0.ɵɵComponentDeclaration<UserTokenTable, "app-user-token-table", never, { "useSticky": { "alias": "useSticky"; "required": false; }; "showToolbar": { "alias": "showToolbar"; "required": false; }; "showFabButton": { "alias": "showFabButton"; "required": false; }; }, {}, never, never, false, never>;
10777
+ static ngAcceptInputType_showToolbar: unknown;
10778
+ static ngAcceptInputType_showFabButton: unknown;
10333
10779
  }
10334
10780
 
10335
10781
  declare class AccountPage extends AppForm<Account> implements OnInit, OnDestroy, CanLeave {
@@ -10349,6 +10795,16 @@ declare class AccountPage extends AppForm<Account> implements OnInit, OnDestroy,
10349
10795
  propertiesTable: AppPropertiesTable;
10350
10796
  tokensTable: UserTokenTable;
10351
10797
  protected alertCtrl: AlertController;
10798
+ static readonly TABS: Readonly<{
10799
+ USER_DETAILS: 0;
10800
+ SETTINGS: 1;
10801
+ TOKENS: 2;
10802
+ }>;
10803
+ protected readonly TABS: Readonly<{
10804
+ USER_DETAILS: 0;
10805
+ SETTINGS: 1;
10806
+ TOKENS: 2;
10807
+ }>;
10352
10808
  protected selectedTabIndex: number;
10353
10809
  protected isLogin: boolean;
10354
10810
  protected changesSubscription: Subscription;
@@ -12581,55 +13037,11 @@ declare class FeedService<S extends FeedServiceState, T extends JsonFeed = JsonF
12581
13037
  static ɵprov: i0.ɵɵInjectableDeclaration<FeedService<any, any>>;
12582
13038
  }
12583
13039
 
12584
- interface FileDownloadOptions {
12585
- /** Name of the downloaded file */
12586
- filename?: string;
12587
- mimeType?: string;
12588
- }
12589
- interface FilePreviewInfo {
12590
- name?: string;
12591
- mimeType?: string;
12592
- }
12593
- /**
12594
- * Download (or read) a remote file, sending the application headers (e.g. authorization) when the file is on the current peer.
12595
- *
12596
- * - On Android (Cordova downloader): the file is downloaded by the native download manager (visible in the "Downloads" app);
12597
- * - Otherwise (web, iOS): the file is fetched as a Blob, then saved using a temporary object URL.
12598
- */
12599
- declare class FileDownloadService {
12600
- protected readonly network: NetworkService;
12601
- protected readonly platform: PlatformService;
12602
- /**
12603
- * Can the file be previewed (displayed without being downloaded)?
12604
- */
12605
- canPreview(file: FilePreviewInfo): boolean;
12606
- isImage(file: FilePreviewInfo): boolean;
12607
- isText(file: FilePreviewInfo): boolean;
12608
- isMarkdown(file: FilePreviewInfo): boolean;
12609
- isHtml(file: FilePreviewInfo): boolean;
12610
- /**
12611
- * Fetch a remote file, as a Blob
12612
- */
12613
- getBlob(url: string): Promise<Blob>;
12614
- /**
12615
- * Remove duplicated slashes in the path of an URL (e.g. 'http://host//api/file' => 'http://host/api/file').
12616
- * Needed because the server (and its CORS rules) does not match a path with duplicated slashes.
12617
- */
12618
- static normalizeUrl(url: string): string;
12619
- /**
12620
- * Fetch a remote file, as a text (e.g. to preview it)
12621
- */
12622
- getText(url: string): Promise<string>;
13040
+ declare class FeedAttachmentUtils {
12623
13041
  /**
12624
- * Download a remote file
13042
+ * Convert a feed attachment (JSON Feed format) into a generic file attachment
12625
13043
  */
12626
- download(url: string, opts?: FileDownloadOptions): Promise<void>;
12627
- protected getFilename(url: string): string;
12628
- static ɵfac: i0.ɵɵFactoryDeclaration<FileDownloadService, never>;
12629
- static ɵprov: i0.ɵɵInjectableDeclaration<FileDownloadService>;
12630
- }
12631
-
12632
- declare class FeedAttachmentUtils {
13044
+ static toFileAttachment(attachment: JsonFeedAttachment): FileAttachmentInfo;
12633
13045
  /**
12634
13046
  * Get the file name of an attachment (its title, or the last part of its URL)
12635
13047
  */
@@ -12661,9 +13073,6 @@ declare class FeedsComponent<T extends JsonFeed = JsonFeed, S extends FeedState<
12661
13073
  protected platform: PlatformService;
12662
13074
  protected networkService: NetworkService;
12663
13075
  protected router: Router;
12664
- protected fileDownload: FileDownloadService;
12665
- protected modalCtrl: ModalController;
12666
- protected toastCtrl: ToastController;
12667
13076
  protected version: string;
12668
13077
  protected modalItemId: string;
12669
13078
  protected onRefresh: EventEmitter<any>;
@@ -12726,17 +13135,7 @@ declare class FeedsComponent<T extends JsonFeed = JsonFeed, S extends FeedState<
12726
13135
  feed: T;
12727
13136
  item: JsonFeedItem;
12728
13137
  }[];
12729
- getAttachmentFilename: typeof FeedAttachmentUtils.getFilename;
12730
- getAttachmentIcon: typeof FeedAttachmentUtils.getIcon;
12731
- canPreviewAttachment: (attachment: JsonFeedAttachment) => boolean;
12732
- /**
12733
- * Open an attachment: display its content, if possible (text, markdown, image...), or download it
12734
- */
12735
- openAttachment(event: Event, attachment: JsonFeedAttachment): Promise<void>;
12736
- /**
12737
- * Download an attachment (using the native download manager on Android)
12738
- */
12739
- downloadAttachment(event: Event, attachment: JsonFeedAttachment): Promise<void>;
13138
+ toFileAttachment: typeof FeedAttachmentUtils.toFileAttachment;
12740
13139
  protected getFeedHomeUrl(feed: T): string;
12741
13140
  /**
12742
13141
  * Check if the current user is the author of the feed item
@@ -13207,40 +13606,6 @@ declare class FeedDirective implements AfterViewInit, OnDestroy {
13207
13606
  static ɵdir: i0.ɵɵDirectiveDeclaration<FeedDirective, "feed,[feed]", never, { "feedUrl": { "alias": "feed"; "required": true; }; }, {}, never, never, false, never>;
13208
13607
  }
13209
13608
 
13210
- interface FeedAttachmentPreviewModalOptions {
13211
- attachment: JsonFeedAttachment;
13212
- }
13213
- /**
13214
- * Display the content of a feed attachment (text, markdown, image), without downloading it
13215
- */
13216
- declare class FeedAttachmentPreviewModal implements FeedAttachmentPreviewModalOptions, OnInit, OnDestroy {
13217
- protected readonly cd: ChangeDetectorRef;
13218
- protected readonly modalCtrl: ModalController;
13219
- protected readonly fileDownload: FileDownloadService;
13220
- protected readonly mobile: boolean;
13221
- protected readonly sanitizer: DomSanitizer;
13222
- protected readonly elementRef: ElementRef<HTMLElement>;
13223
- attachment: JsonFeedAttachment;
13224
- protected loading: boolean;
13225
- protected error: string;
13226
- protected filename: string;
13227
- protected text: string;
13228
- protected markdown: boolean;
13229
- protected imageUrl: string;
13230
- /** HTML content, displayed in a sandboxed iframe (scripts allowed, but isolated from the application: no same origin) */
13231
- protected html: SafeHtml;
13232
- /** Display the modal in a large size (same as the feed details modal) */
13233
- protected maximized: boolean;
13234
- ngOnInit(): Promise<void>;
13235
- ngOnDestroy(): void;
13236
- protected download(): Promise<void>;
13237
- /** Display the modal in a large size (to restore the size: close then reopen the attachment) */
13238
- protected maximize(): void;
13239
- protected close(): Promise<boolean>;
13240
- static ɵfac: i0.ɵɵFactoryDeclaration<FeedAttachmentPreviewModal, never>;
13241
- static ɵcmp: i0.ɵɵComponentDeclaration<FeedAttachmentPreviewModal, "app-feed-attachment-preview-modal", never, { "attachment": { "alias": "attachment"; "required": false; }; }, {}, never, never, false, never>;
13242
- }
13243
-
13244
13609
  declare class MessageForm extends AppForm<Message> implements OnInit {
13245
13610
  private formBuilder;
13246
13611
  private readonly cd;
@@ -13404,7 +13769,7 @@ declare class MessageModule {
13404
13769
 
13405
13770
  declare class FeedModule {
13406
13771
  static ɵfac: i0.ɵɵFactoryDeclaration<FeedModule, never>;
13407
- static ɵmod: i0.ɵɵNgModuleDeclaration<FeedModule, [typeof FeedsComponent, typeof FeedPage, typeof FeedDirective, typeof FeedAttachmentPreviewModal], [typeof SharedModule, typeof SharedDebugModule, typeof SharedMarkdownModule, typeof MessageModule], [typeof FeedsComponent, typeof FeedPage, typeof FeedDirective, typeof FeedAttachmentPreviewModal]>;
13772
+ static ɵmod: i0.ɵɵNgModuleDeclaration<FeedModule, [typeof FeedsComponent, typeof FeedPage, typeof FeedDirective], [typeof SharedModule, typeof SharedDebugModule, typeof SharedMarkdownModule, typeof SharedFileAttachmentModule, typeof MessageModule], [typeof FeedsComponent, typeof FeedPage, typeof FeedDirective, typeof SharedFileAttachmentModule]>;
13408
13773
  static ɵinj: i0.ɵɵInjectorDeclaration<FeedModule>;
13409
13774
  }
13410
13775
 
@@ -14496,6 +14861,53 @@ declare class MatCommonTestPage implements OnInit, OnDestroy {
14496
14861
  static ɵcmp: i0.ɵɵComponentDeclaration<MatCommonTestPage, "mat-common-test", never, {}, {}, never, never, false, never>;
14497
14862
  }
14498
14863
 
14864
+ declare class InputFieldTestPage implements OnInit, OnDestroy {
14865
+ protected formBuilder: UntypedFormBuilder;
14866
+ protected cd: ChangeDetectorRef;
14867
+ private readonly _subscription;
14868
+ protected fields: QueryList<IAppInputField>;
14869
+ protected readonly FOCUSED_FIELD = "__focused__";
14870
+ protected readonly items: {
14871
+ id: number;
14872
+ label: string;
14873
+ name: string;
14874
+ }[];
14875
+ protected readonly stringify: {
14876
+ (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string;
14877
+ (value: any, replacer?: (number | string)[] | null, space?: string | number): string;
14878
+ };
14879
+ protected mode: 'mobile' | 'desktop';
14880
+ protected form: UntypedFormGroup;
14881
+ protected readonly stringDefinition: FormFieldDefinition;
14882
+ protected readonly integerDefinition: FormFieldDefinition;
14883
+ protected readonly booleanDefinition: FormFieldDefinition;
14884
+ protected readonly enumDefinition: FormFieldDefinition;
14885
+ protected target: string;
14886
+ protected writeValueText: string;
14887
+ protected typeTextValue: string;
14888
+ protected letterByLetter: boolean;
14889
+ protected letterDelayMs: number;
14890
+ protected lastAction: string;
14891
+ protected lastFocusedField: IAppInputField;
14892
+ constructor(formBuilder: UntypedFormBuilder, cd: ChangeDetectorRef);
14893
+ ngOnInit(): void;
14894
+ ngOnDestroy(): void;
14895
+ protected setMode(mode: 'mobile' | 'desktop'): void;
14896
+ protected get controlNames(): string[];
14897
+ protected getField(): IAppInputField | undefined;
14898
+ protected onFormFocusChange(): void;
14899
+ protected getFieldLabel(field: IAppInputField): string;
14900
+ protected doFocus(): void;
14901
+ protected doClear(): void;
14902
+ protected doWriteValue(): void;
14903
+ protected doTypeText(): Promise<void>;
14904
+ protected clearAll(): void;
14905
+ protected parseValue(text: string): any;
14906
+ protected log(message: string): void;
14907
+ static ɵfac: i0.ɵɵFactoryDeclaration<InputFieldTestPage, never>;
14908
+ static ɵcmp: i0.ɵɵComponentDeclaration<InputFieldTestPage, "app-input-field-test", never, {}, {}, never, never, false, never>;
14909
+ }
14910
+
14499
14911
  declare class DateTimeTestPage implements OnInit {
14500
14912
  protected platform: Platform;
14501
14913
  protected formBuilder: UntypedFormBuilder;
@@ -14745,6 +15157,8 @@ declare class MatBadgeTestPage {
14745
15157
  $color: BehaviorSubject<string>;
14746
15158
  $hidden: BehaviorSubject<boolean>;
14747
15159
  $overlap: BehaviorSubject<boolean>;
15160
+ showIonIconCode: boolean;
15161
+ readonly ionIconCode = "<!-- A badge placed directly on the <ion-icon> is not rendered (shadow DOM without slot).\n Use an inline-block wrapper element: -->\n<span appBadge=\"3\" style=\"display: inline-block; line-height: 0\">\n <ion-icon name=\"navigate\" style=\"font-size: 24px\"></ion-icon>\n</span>";
14748
15162
  constructor(cd: ChangeDetectorRef);
14749
15163
  onInputChanged(event: any): void;
14750
15164
  onMatBadgeContentChanged(event: any): void;
@@ -14787,7 +15201,7 @@ declare const SHARED_MATERIAL_TESTING_PAGES: TestingPage[];
14787
15201
 
14788
15202
  declare class MaterialTestingModule {
14789
15203
  static ɵfac: i0.ɵɵFactoryDeclaration<MaterialTestingModule, never>;
14790
- static ɵmod: i0.ɵɵNgModuleDeclaration<MaterialTestingModule, [typeof MatCommonTestPage, typeof DateTimeTestPage, typeof DateTestPage, typeof DateShortTestPage, typeof DurationTestPage, typeof AutocompleteTestPage, typeof BooleanTestPage, typeof LatLongTestPage, typeof SwipeTestPage, typeof ChipsTestPage, typeof MatBadgeTestPage, typeof ObservableTestPage, typeof MaskitoTestPage], [typeof i2$1.CommonModule, typeof SharedIonicModule, typeof i5.ReactiveFormsModule, typeof SharedMaterialModule, typeof i4$1.RouterModule, typeof SharedPipesModule, typeof SharedBadgeModule, typeof i5.FormsModule, typeof i11.MaskitoDirective, typeof SharedMatLatLongModule], [typeof SharedMaterialModule, typeof i4$1.RouterModule, typeof MatCommonTestPage, typeof DateTimeTestPage, typeof DateTestPage, typeof DateShortTestPage, typeof DurationTestPage, typeof AutocompleteTestPage, typeof BooleanTestPage, typeof LatLongTestPage, typeof SwipeTestPage, typeof ChipsTestPage, typeof MatBadgeTestPage, typeof ObservableTestPage, typeof MaskitoTestPage]>;
15204
+ static ɵmod: i0.ɵɵNgModuleDeclaration<MaterialTestingModule, [typeof MatCommonTestPage, typeof InputFieldTestPage, typeof DateTimeTestPage, typeof DateTestPage, typeof DateShortTestPage, typeof DurationTestPage, typeof AutocompleteTestPage, typeof BooleanTestPage, typeof LatLongTestPage, typeof SwipeTestPage, typeof ChipsTestPage, typeof MatBadgeTestPage, typeof ObservableTestPage, typeof MaskitoTestPage], [typeof i2$1.CommonModule, typeof SharedIonicModule, typeof i5.ReactiveFormsModule, typeof SharedMaterialModule, typeof i4$1.RouterModule, typeof SharedPipesModule, typeof SharedBadgeModule, typeof i5.FormsModule, typeof i11.MaskitoDirective, typeof SharedMatLatLongModule, typeof SharedModule], [typeof SharedMaterialModule, typeof i4$1.RouterModule, typeof MatCommonTestPage, typeof InputFieldTestPage, typeof DateTimeTestPage, typeof DateTestPage, typeof DateShortTestPage, typeof DurationTestPage, typeof AutocompleteTestPage, typeof BooleanTestPage, typeof LatLongTestPage, typeof SwipeTestPage, typeof ChipsTestPage, typeof MatBadgeTestPage, typeof ObservableTestPage, typeof MaskitoTestPage]>;
14791
15205
  static ɵinj: i0.ɵɵInjectorDeclaration<MaterialTestingModule>;
14792
15206
  }
14793
15207
 
@@ -15576,5 +15990,5 @@ declare class TableValidatorService extends ReferentialValidatorService {
15576
15990
  static ɵprov: i0.ɵɵInjectableDeclaration<TableValidatorService>;
15577
15991
  }
15578
15992
 
15579
- export { ADMIN_ICONS, APP_ABOUT_DEVELOPERS, APP_ABOUT_PARTNERS, APP_ACCOUNT_SERVICE, APP_ACCOUNT_SERVICE_OPTIONS, APP_CELL_SELECTION_SERVICE_CONFIG_TOKEN, APP_CELL_SELECTION_SERVICE_TOKEN, APP_CONFIG_OPTIONS, APP_DEBUG_DATA_SERVICE, APP_FEED_SERVICE, APP_FILE_TRANSFER_SERVICE, APP_FORM_ERROR_I18N_KEYS, APP_GRAPHQL_FRAGMENTS, APP_GRAPHQL_SERVICE, APP_GRAPHQL_TYPE_POLICIES, APP_HOME_BUTTONS, APP_HOME_CONFIG, APP_HOME_TOOLBAR_BUTTONS, APP_HOTKEYS_CONFIG, APP_JOB_PROGRESSION_SERVICE, APP_LOCALES, APP_LOCAL_SETTINGS, APP_LOCAL_SETTINGS_OPTIONS, APP_LOCAL_STORAGE_TYPE_POLICIES, APP_LOGGING_SERVICE, APP_MENU_ITEMS, APP_MENU_OPTIONS, APP_MESSAGE_SERVICE_OPTIONS, APP_NAMED_FILTER_SERVICE, APP_PERSON_SERVICE, APP_PERSON_SERVICE_OPTIONS, APP_PROGRESS_BAR_SERVICE, APP_SETTINGS_MENU_ITEMS, APP_SHOW_TOOLTIP, APP_STORAGE, APP_STORAGE_EXPLORER_PROTECTED_KEYS, APP_TESTING_PAGES, APP_USER_EVENT_LIST_INFINITE_SCROLL_THRESHOLD, APP_USER_EVENT_SERVICE, APP_USER_SETTINGS_OPTIONS, APP_USER_TOKEN_SCOPES, AboutModal, AbstractNamedFilterService, AbstractPersonService, AbstractSelectionModelPipe, AbstractTableSelectionPipe, AbstractUserEventService, Account, AccountPage, AccountService, AccountToStringPipe, AccountUtils, ActionsColumnComponent, AdminModule, AdminRoutingModule, AdminUsersModule, Alerts, AndroidOsEnvironment, AppAboutModalModule, AppAccountModule, AppAsyncTable, AppAuthForm, AppAuthModal, AppAuthModule, AppChangePasswordModule, AppChangePasswordPage, AppEditor, AppEditorOptions, AppEntityEditor, AppEntityEditorModal, AppEntityEditorModalOptions, AppEntityFormModule, AppForm, AppFormArray, AppFormButtonsBarModule, AppFormContainer, AppFormField, AppFormModule, AppFormProvider, AppFormUtils, AppGestureConfig, AppHomePageModule, AppIconComponent, AppIconModule, AppIconSelectorField, AppIconSelectorModal, AppIconSelectorModule, AppImageGalleryComponent, AppImageGallerySlideshowComponent, AppInMemoryTable, AppInstallUpgradeCard, AppInstallUpgradeCardModule, AppListForm, AppListFormModule, AppLoadingSpinner, AppMarkdownContent, AppMarkdownModal, AppMenuModule, AppNullForm, AppPropertiesForm, AppPropertiesFormModule, AppPropertiesTable, AppPropertiesUtils, AppPropertyUtils, AppRegisterModule, AppResetPasswordModal, AppRowField, AppSelectPeerModule, AppSelectUsersModal, AppSettingsPageModule, AppTabEditor, AppTabEditorOptions, AppTable, AppTableModule, AppTableUtils, AppTextFormModule, AppTextPopoverModule, AppUpdateOfflineModeCard, AppUpdateOfflineModeCardModule, AppValidatorService, AppWebSocket, AppendQueryParamsPipePipe, ArrayDistinctPipe, ArrayFilterPipe, ArrayFindByPropertyPipe, ArrayFindPipe, ArrayFirstPipe, ArrayFormTestPage, ArrayIncludesPipe, ArrayJoinPipe, ArrayLastPipe, ArrayLengthPipe, ArrayMapPipe, ArrayPluckPipe, ArraySlicePipe, ArraySortPipe, AsAnyPipe, AsArrayPipe, AsBooleanPipe, AsFloatLabelTypePipe, AsObservablePipe, AudioProvider, AudioTestingModule, AudioTestingPage, AuthGuardService, AutoResizeDirective, AutoTitleDirective, AutoTooltipDirective, AutocompleteTestPage, AutofocusDirective, BadgeDirective, BadgeNumberPipe, Base58, BaseEntityService, BaseGraphqlService, BaseGraphqlServiceOptions, BaseReferential, Beans, BooleanFormatPipe, BooleanTestPage, CORE_CONFIG_OPTIONS, CORE_ICONS, CORE_TESTING_PAGES, CapitalizePipe, CellIdentifierDirective, CellSelectionDirective, CellSelectionService, CellValueChangeListener, ChangeCaseToUnderscorePipe, ChangePasswordForm, ChipsTestPage, Color, ColorScale, ComponentDirtyGuard, ConfigFragments, ConfigService, Configuration, CoreModule, CorePipesModule, CoreTestingModule, CryptoService, CsvUtils, DATE_ISO_PATTERN, DATE_ISO_PATTERNS, DATE_MATCH_REGEXP, DATE_PATTERN, DATE_UNIX_MS_TIMESTAMP, DATE_UNIX_TIMESTAMP, DEFAULT_JOIN_ARRAY_VALUES_SEPARATOR, DEFAULT_JOIN_PROPERTIES_SEPARATOR, DEFAULT_MENU_SHOW_WHEN, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLACEHOLDER_CHAR, DEFAULT_REQUIRED_COLUMNS, DateDiffDurationPipe, DateFormatPipe, DateFormatService, DateFromNowPipe, DateFromPipe, DateShortTestPage, DateTestPage, DateTimeTestPage, DateUtils, DebugComponent, Department, DepartmentToStringPipe, DisplayWithPipe, DragAndDropDirective, DurationPipe, DurationTestPage, ED25519_SEED_LENGTH, EMPTY_PLACEHOLDER_CHAR, EMPTY_PLACEHOLDER_CHAR_REGEXP_GLOBAL, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EmptyMissingTranslationHandler, EntitiesAsyncTableDataSource, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, EnvironmentHttpLoader, EnvironmentLoader, ErrorCodes, EvenPipe, FILE_KIND_ICONS, FeedAttachmentPreviewModal, FeedAttachmentUtils, FeedDirective, FeedModule, FeedPage, FeedService, FeedsComponent, FileDownloadService, FileResponse, FileService, FileSizePipe, FileTypeUtils, FilesUtils, FirstFalsePipe, FirstPipe, FirstTruePipe, FormArrayAtControlPipe, FormArrayAtGroupPipe, FormArrayHelper, FormArrayTestModule, FormButtonsBarComponent, FormButtonsBarToken, FormErrorPipe, FormErrorTranslatePipe, FormErrorTranslator, FormFieldDefinitionUtils, FormFieldValuesHolder, FormGetArrayPipe, FormGetControlPipe, FormGetGroupPipe, FormGetNamePipe, FormGetPipe, FormGetValuePipe, GalleryTestPage, GeolocationUtils, GitlabUtils, GraphqlService, HAMMER_PRESS_TIME, HAMMER_TAP_TIME, HighlightPipe, HomePage, Hotkeys, HotkeysDialogComponent, HttpUtils, IMAGE_DEFAULTS, ION_ICONS, IPosition, IconSelectorTestPage, IconSelectorTestingModule, ImageAttachment$1 as ImageAttachment, ImageAttachmentFilter$1 as ImageAttachmentFilter, ImageAttachmentService, ImageGalleryModule, ImageGalleryTestingModule, ImageModule, ImageService, ImageSizes, ImagesUtils, InMemoryEntitiesService, IsAllSelectedPipe, IsEmptySelectionPipe, IsLoginAccountPipe, IsMultipleSelectionPipe, IsNilOrBlankPipe, IsNilOrNaNPipe, IsNilPipe, IsNotAllSelectedPipe, IsNotEmptySelectionPipe, IsNotNilOrBlankPipe, IsNotNilOrNaNPipe, IsNotNilPipe, IsOnDeskPipe, IsOnFieldPipe, IsSelectedPipe, IsSingleSelectionPipe, IsValidDatePipe, JobModule, JobProgression, JobProgressionComponent, JobProgressionIcon, JobProgressionList, JobProgressionService, JobProgressionTestService, JobProgressionTestingPage, JobTestingModule, JobUtils, JsonFeedUtils, JsonUtils, KEYBOARD_HIDE_DELAY_MS, LAT_LONG_PATTERNS, LAT_LONG_PATTERN_MAX_DECIMALS, LAT_LONG_VALUE_MAX_DECIMALS, LatLongFormatOptions, LatLongFormatPipe, LatLongTestPage, LatitudeFormatPipe, ListFormTestPage, ListFormTestingModule, LocalSettingsService, LogLevel, LogUtils, Logger, LoggingService, LoggingServiceModule, LongitudeFormatPipe, MASKS, MASK_RANGES, MAT_FORM_FIELD_DEFAULT_APPEARANCE, MAT_FORM_FIELD_DEFAULT_SUBSCRIPT_SIZING, MINIFY_ENTITY_FOR_LOCAL_STORAGE, MINIFY_ENTITY_FOR_POD, MOMENT_NO_TIME_PROPERTY, MapGetPipe, MapKeysPipe, MapPipe, MapToPipe, MapValuesPipe, MarkdownDirective, MarkdownService, MarkdownTestPage, MarkdownTestingModule, MarkdownUtils, MaskitoPlaceholderPipe, MaskitoTestPage, MatAutocompleteConfigHolder, MatAutocompleteField, MatAutocompleteFieldUtils, MatBadgeTestPage, MatBooleanField, MatChipsField, MatColorPipe, MatCommonTestPage, MatDate, MatDateShort, MatDateTime, MatDuration, MatLatLongField, MatLatLongFieldInput, MatPaginatorI18n, MatStepperI18n, MatSwipeField, MaterialAutocompleteFooterDirective, MaterialAutocompleteHeaderDirective, MaterialTestingModule, MathAbsPipe, MenuComponent, MenuItem, MenuItems, MenuOptions, MenuService, MenuTestingModule, MenuTestingPage, Message, MessageAttachment, MessageFilter, MessageForm, MessageModal, MessageModule, MessageService, MessageTypeList, MessageTypes, MimeTypes, ModalToolbarComponent, NETWORK_DEFAULT_CONNECTION_TIMEOUT, NamedFilter, NamedFilterFilter, NamedFilterSelector, NamedFilterSelectorTestingModule, NamedFilterSelectorTestingPage, NativeWebSocket, NavActionsColumnComponent, NestedTableTestPage, NetworkService, NetworkUtils, NewTokenForm, NewTokenModal, NgInitDirective, NgVarDirective, NoHtmlPipe, NotEmptyArrayPipe, NumberFormatPipe, ObservableTestPage, OddPipe, OtherMenuTestingPage, PEER_URL_REGEXP, PLUS_PLACEHOLDER_CHAR_REGEXP_GLOBAL, PRINT_ID_QUERY_PARAM, PRINT_LOADING_STORAGE_KEY_PREFIX, PRIORITIZED_AUTHORITIES, PUBKEY_REGEXP, Peer, Person, PersonFilter, PersonFilterAdditionalFields, PersonFragments, PersonService, PersonToStringPipe, PersonUtils, PersonValidatorService, PlatformService, PrintService, ProgressBarService, ProgressInterceptor, PropertiesFormTestPage, PropertiesFormTestingModule, PropertyEntity, PropertyEntityFilter, PropertyEntityValidator, PropertyFormatPipe, PropertyGetPipe, RESERVED_END_COLUMNS, RESERVED_START_COLUMNS, Referential, ReferentialFilter, ReferentialRef, ReferentialToStringPipe, ReferentialUtils, ReferentialValidatorService, ReferentialsToStringPipe, RegExpUtils, RegisterConfirmPage, RegisterForm, RegisterModal, ResizableComponent, ResizableDirective, ResizableModule, RoundPipe, RxStateComputed, RxStateModule, RxStateOutput, RxStateProperty, RxStateRegister, RxStateSelect, SCRYPT_PARAMS, SETTINGS_COMPACT_ROWS, SETTINGS_DISPLAY_COLUMNS, SETTINGS_FILTER, SETTINGS_PAGE_SIZE, SETTINGS_SORTED_COLUMN, SETTINGS_STORAGE_KEY, SETTINGS_TRANSIENT_PROPERTIES, SHARED_ICONS, SHARED_IONIC_COMPONENTS, SHARED_MATERIAL_TESTING_PAGES, SHARED_STORAGE_TESTING_PAGES, SHARED_TESTING_PAGES, SOCIAL_CONFIG_OPTIONS, SOCIAL_ICONS, SOCIAL_TESTING_PAGES, SPACE_PLACEHOLDER_CHAR, SPACE_PLACEHOLDER_CHAR_REGEXP_GLOBAL, STARTUP_DATA_STORAGE_KEY, SafeHtmlPipe, SafeStylePipe, SelectPeerModal, SelectionLengthPipe, ServerErrorCodes, SettingsPage, SharedAsyncValidators, SharedBadgeModule, SharedDebugModule, SharedDirectivesModule, SharedFormArrayValidators, SharedFormGroupValidators, SharedHotkeysModule, SharedIonicModule, SharedMarkdownModule, SharedMatAutocompleteModule, SharedMatBooleanModule, SharedMatChipsModule, SharedMatDateTimeModule, SharedMatDurationModule, SharedMatLatLongModule, SharedMatSwipeModule, SharedMaterialModule, SharedModule, SharedNamedFilterModule, SharedPipesModule, SharedRoutingModule, SharedTestingModule, SharedTestsPage, SharedToolbarModule, SharedValidators, SocialErrorCodes, SocialModule, SocialModuleOptionsToken, SocialTestingModule, Software, SplitArrayInChunksPipe, StartableService, StartupService, StatusById, StatusIds, StatusList, StorageDrivers, StorageExplorerComponent, StorageExplorerModule, StorageExplorerTestingModule, StorageExplorerTestingRoutingModule, StorageService, StorageServiceWrapper, StrIncludesPipe, StrLengthPipe, StrReplacePipe, SubMenuTabDirective, SwipeTestPage, TABLE_SETTINGS_ENUM, TOOLBAR_HEADER_ID, TRACKED_QUERIES_STORAGE_KEY, Table2TestPage, TableSelectColumnsComponent, TableTestPage, TableTestingModule, TableValidatorService, TextForm, TextFormTestingModule, TextFormTestingPage, TextPopover, TextPopoverTestingModule, TextPopoverTestingPage, ThrottledClickDirective, TimeFormatPipe, ToStringPipe, ToastTestingModule, ToastTestingPage, Toasts, TokenScope, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, TreeItemEntityUtils, TruncHtmlPipe, TruncTextPipe, TruncateHtmlPipe, USER_CONTROLLER, UploadFile, UploadFileComponent, UploadFilePopover, UploadFileTestingModule, UploadFileTestingPage, UriUtils, UrlUtils, UserController, UserEventModule, UserEventNotificationIcon, UserEventNotificationList, UserEventNotificationModal, UserEventTestService, UserEventTestingModule, UserEventTestingPage, UserSettings, UserToken, UserTokenTable, UsersPage, ValueFormatPipe, VersionUtils, accountToString, adaptValueToControl, addValueInArray, arrayDistinct, arrayResize, arraySize, asInputElement, assignSkipUndefined, base64ArrayBuffer, booleanToString, canHaveFocus, capitalizeFirstLetter, chainPromises, changeCaseToUnderscore, clearValueInArray, collectByProperty, collectByPropertyPath, compareValues, compareValuesDesc, compareVersionNumbers, composeComparators, computeDecimalDegrees, computeDecimalPart, copyEntity2Form, createApolloClientOptions, createAppStartupInitializer, createPromiseEvent, createPromiseEventEmitter, createTestingImageDataUrl, createTrackerLink, decorateWithTakeUntil, deepMergeSkipUndefined, departmentToString, departmentsToString, disableAndClearControl, disableAndClearControls, disableControl, disableControls, emitPromiseEvent, enableControl, enableControls, enableRxStateProdMode, entityToString, equals, equalsOrNil, escapeRegExp, expansionAnimation, fadeInAnimation, fadeInOutAnimation, fadeInSlowAnimation, filterFalse, filterFormErrors, filterFormErrorsByPath, filterFormErrorsByPrefix, filterNotNil, filterNumberInput, filterTrue, findParentWithClass, firstArrayValue, firstFalse, firstFalsePromise, firstNotNil, firstNotNilPromise, firstPromise, firstTrue, firstTruePromise, focusInput, focusNextInput, focusPreviousInput, formatLatLong, formatLatitude, formatLongitude, fromDateISOString, fromScrollEndEvent, fromUnixMsTimestamp, fromUnixTimestamp, getCaretPosition, getColorContrast, getColorLuminance, getColorShade, getColorTint, getControlFromPath, getFocusableInputElements, getFormErrors, getFormValueFromEntity, getInputRangeFromCaretIndex, getInputSelectionRangesFromMask, getProperty, getPropertyByPath, getPropertyByPathAsString, getRandomImage, getRandomImageWithCredit, getUserAgent, hexToRgb, hexToRgbArray, initArrayControlsFromValues, initializeSharedModule, interpolateString, intersectArrays, isAndroid, isBlankString, isCapacitor, isChrome, isControlHasInput, isEdge, isEmptyArray, isEntityService, isFirefox, isFocusableElement, isIOS, isInputElement, isInstanceOf, isInt, isIpad, isLightColor, isMacOS, isMobile, isMutationOperation, isNil, isNilOrBlank, isNilOrNaN, isNotEmptyArray, isNotNil, isNotNilBoolean, isNotNilObject, isNotNilOrBlank, isNotNilOrNaN, isNotNilString, isNumber, isNumberRange, isOnFieldMode, isPrint, isProgressEvent, isPromise, isResponseEvent, isSafari, isSameVersion, isStartableService, isSubscriptionOperation, isTouchUi, isValidVersion, isVersionCompatible, isWebAnimationsSupported, isWindows, joinProperties, joinPropertiesPath, lastArrayValue, logFormErrors, loggerLink, markAllAsTouched, markAsUntouched, markControlAsTouched, markFormGroupAsTouched, maskitoAutoSelectByMaskPattern, maskitoPrefixPlugin, matchMedia, matchUpperCase, mergeLoadResult, mergeObjectsWithoutUndefined, mixHex, moveInputCaretToSeparator, newArray, noHtml, noTrailingSlash, notNilOrDefault, nullIfNilOrBlank, nullIfUndefined, numberOrNilAttribute, numberToString, parseLatitudeOrLongitude, parseVersion, propertiesPathComparator, propertyComparator, propertyPathComparator, provideAccountService, provideAllIonicIcons, provideIonicIcons, provideIonicIconsInitializer, providePersonService, referentialToString, referentialsToString, registerIonicIcons, remove, removeAll, removeDiacritics, removeDuplicatesFromArray, removeEnd, removeValueInArray, replaceAll, resetCalculatedValue, resizeArray, restoreTrackedQueries, rgbArrayToHex, rgbToHex, round, scrollFactory, selectInputContent, selectInputContentFromEvent, selectInputRange, setCalculatedValue, setControlEnabled, setControlRequired, setControlsEnabled, setFormErrors, setPropertyByPath, setTabIndex, sleep, slideDownAnimation, slideInAnimation, slideInOutAnimation, slideUpDownAnimation, sort, splitArrayInChunks, splitById, splitByProperty, splitDegreesToDDArray, splitDegreesToDDMMArray, splitDegreesToDDMMSSArray, startsWithUpperCase, suggestFromArray, suggestFromStringArray, tabindexComparator, testUserAgent, toBoolean, toDateISOString, toDuration, toFloat, toInt, toLoadData, toLoadResult, toNotNil, toNumber, trimEmptyToNull, truncateHtml, uncapitalizeFirstLetter, undefinedIfNull, underscoreToChangeCase, updateValueAndValidity, waitFor, waitForFalse, waitForTrue, waitIdle, waitWhilePending };
15580
- export type { AbstractPersonServiceOptions, AccountDetails, AccountServiceGraphqlMutations, AccountServiceGraphqlQueries, AccountServiceGraphqlSubscriptions, AccountServiceOptions, AccountViewName, AccountWatchOptions, AddToPageHistoryOptions, AppColors, AppError, AppErrorWithDetails, AppFloatLabelType, AppFormArrayOptions, AppListFormOptions, AppManifest, AppMarkdownModalOptions, AppMarkdownOptions, AppPropertiesFormState, AppSelectUsersModalOptions, AppTableRowCountProperty, AudioType, AuthData, AuthTokenType, BaseEntityGraphqlMutations, BaseEntityGraphqlQueries, BaseEntityGraphqlSubscriptions, BaseEntityServiceOptions, BiFunction, CallableWithProgressionFn, CallableWithProgressionOptions, CanGainFocusOptions, CanLeave, CanSave, CellSelectionEvent, CellSelectionServiceConfig, ChangePasswordData, Cloneable, ColorGradientOptions, ColorName, ColorScaleLegend, ColorScaleLegendItem, ColorScaleOptions, ColumnItem, CompareFn, CompletableEvent, ConnectionParams, Constructor, DisplayFn, EmptyObject, EntitiesAsyncTableDataSourceConfig, EntitiesServiceDeleteOptions, EntitiesServiceLoadOptions, EntitiesServiceSaveOptions, EntitiesServiceWatchOptions, EntitiesStorageTypePolicies, EntitiesTableDataSourceConfig, EntityAsObjectOptions, EntitySaveOptions, EntityServiceDeleteOptions, EntityServiceListenChangesOptions, EntityServiceLoadOptions, EntityServiceRefetchQueriesOptions, EntityServiceSaveOptions, EntityServiceWatchOptions, EntityStorageLoadOptions, EntityStoreTypePolicy, EntityStoreTypePolicyMode, EqualsFn, EventLevel, FeedAttachmentPreviewModalOptions, FeedLoadOptions, FeedServiceState, FeedState, FeedsLoadOptions, FeedsWatchOptions, FetchMoreFn, FileCheck, FileCheckEnabledFn, FileDeleteFn, FileDownloadOptions, FileEvent, FileHasErrorFn, FileKind, FilePreviewInfo, FileProgressEvent, FileServiceGetImageOptions, FileTransferUploadOptions, FileTransferUploadResponseBody, FileUploadFn, FilterFn, FilterFnFactory, FilterItemFunction, FindMutableWatchQueriesOptions, FirstOptions, FocusableElement, FormArrayHelperOptions, FormErrorTranslateOptions, FormErrors, FormFieldDefinition, FormFieldDefinitionMap, FormFieldType, Function$1 as Function, GalleryMode, GetFocusableInputOptions, HammerSwipeAction, HammerSwipeEvent, HammerTapEvent, HistoryPageReference, HomePageState, HotKeysConfig, IAppEditor, IAppEntityEditor, IAppForm, IAppFormContainer, IAppFormGetter, IAppTabEditor, ICellId, IDebugDataService, IEntitiesService, IEntitiesTableDataSource, IEntity, IEntityEditorModalOptions, IEntityFilter, IEntityFullService, IEntityService, IFeedService, IFileTransferService, IFormPathTranslator, IFormPathTranslatorOptions, IGitlabRelease, IHomePageConfig, IJobProgressionService, ILatLongData, ILogger, ILoggingAppender, ILoggingService, IMenuItem, IModalDetailOptions, INamedFilter, INamedFilterFilter, INamedFilterService, INewTokenOptions, IPersonService, IProgressBarService, IReferentialRef, ISelectPeerModalOptions, ISelectPeerModalState, IStartableService, IStatus, IStorage, ITreeItemEntity, IUserController, IUserEvent, IUserEventAction, IUserEventFilter, IUserEventListener, IUserEventMutations, IUserEventQueries, IUserEventService, IUserEventSubscriptions, IconRef, Image, ImageEditEvent, ImageEditFormat, ImageGallerySizes, ImageGallerySlideChangeEvent, ImageGallerySlideshowMode, ImageResizeOptions, ImageSize, InMemoryEntitiesServiceOptions, InputElement, InstallAppLink, IsEmailExistsVariables, ItemButton, JobProgressionIconState, JobProgressionListOptions, JobProgressionOptions, JobProgressionState, JoinOptions, JsonFeed, JsonFeedAttachment, JsonFeedAuthor, JsonFeedItem, KeyType, KeyValueType, KeysEnum, LatLongPattern, LatLongSign, LatLongSignValue, LatLongType, LoadResult, LoadResultByPageFn, LocalSettings, LocalSettingsOptions, LocaleConfig, Log, LoggingServiceConfig, MaskitoPlaceholderPipeOptions, MatAutocompleteFieldAddOptions, MatAutocompleteFieldConfig, MatAutocompleteFieldSelectChange, MatAutocompleteFieldToggleFavorite, MatBadgeFill, MenuPathParam, MessageModalOptions, MessageServiceOptions, MutableWatchQueriesUpdatePolicy, MutableWatchQueryDescription, MutableWatchQueryOptions, MutateQueryOptions, MutateQueryWithCacheUpdateOptions, NamedFilterLoadOptions, NamedFilterSelectorButtonsPosition, NamedFilterWatchOptions, NetworkEventType, NodeInfo, ObjectMap, ObjectMapEntry, ObservablePropertyDecorator, ObservableValidatorFn, Observed, OfflineFeature, OmitFunctions, OnReady, Page, PersonServiceOptions, PersonValidatorOptions, PrintOptions, ProgressMode, PromiseEvent, PromiseEventPayload, PromiseValidatorFn, PropertiesArray, PropertiesMap, Property, PropertyMap, QueryVariables, ReferentialAsObjectOptions, RegisterData, SaveActionType, SemVersion, ServiceError, SharedModuleConfig, ShowToastOptions, SimpleFunction, SocialModuleOptions, Sound, SplitPaneShowWhen, StartupData, StartupMethod, StatePropertyDecorator, Statefull, SuggestFn, SuggestService, SynchronizationHistory, TestingPage, TextPopoverButton, TextPopoverOptions, TrackableMutationContext, TrackedQuery, UploadFilePopoverOptions, UsageMode, UserEventAction, UserEventLoadOptions, UserEventNotificationListOptions, UserEventNotificationModalOptions, UserEventServiceOptions, UserEventWatchOptions, UserProfileLabel, UserSettingsOptions, WaitForOptions, WatchQueryOptions };
15993
+ export { ADMIN_ICONS, APP_ABOUT_DEVELOPERS, APP_ABOUT_PARTNERS, APP_ACCOUNT_SERVICE, APP_ACCOUNT_SERVICE_OPTIONS, APP_CELL_SELECTION_SERVICE_CONFIG_TOKEN, APP_CELL_SELECTION_SERVICE_TOKEN, APP_CONFIG_OPTIONS, APP_DEBUG_DATA_SERVICE, APP_FEED_SERVICE, APP_FILE_TRANSFER_SERVICE, APP_FORM_ERROR_I18N_KEYS, APP_GRAPHQL_FRAGMENTS, APP_GRAPHQL_SERVICE, APP_GRAPHQL_TYPE_POLICIES, APP_HOME_BUTTONS, APP_HOME_CONFIG, APP_HOME_TOOLBAR_BUTTONS, APP_HOTKEYS_CONFIG, APP_INPUT_FIELD, APP_JOB_PROGRESSION_SERVICE, APP_LOCALES, APP_LOCAL_SETTINGS, APP_LOCAL_SETTINGS_OPTIONS, APP_LOCAL_STORAGE_TYPE_POLICIES, APP_LOGGING_SERVICE, APP_MENU_ITEMS, APP_MENU_OPTIONS, APP_MESSAGE_SERVICE_OPTIONS, APP_NAMED_FILTER_SERVICE, APP_PERSON_SERVICE, APP_PERSON_SERVICE_OPTIONS, APP_PROGRESS_BAR_SERVICE, APP_SETTINGS_MENU_ITEMS, APP_SHOW_TOOLTIP, APP_STORAGE, APP_STORAGE_EXPLORER_PROTECTED_KEYS, APP_TABLE_OPTIONS, APP_TESTING_PAGES, APP_USER_EVENT_LIST_INFINITE_SCROLL_THRESHOLD, APP_USER_EVENT_SERVICE, APP_USER_SETTINGS_OPTIONS, APP_USER_TOKEN_SCOPES, AboutModal, AbstractNamedFilterService, AbstractPersonService, AbstractSelectionModelPipe, AbstractTableSelectionPipe, AbstractUserEventService, Account, AccountPage, AccountService, AccountToStringPipe, AccountUtils, ActionsColumnComponent, AdminModule, AdminRoutingModule, AdminUsersModule, Alerts, AndroidOsEnvironment, AppAboutModalModule, AppAccountModule, AppAsyncTable, AppAuthForm, AppAuthModal, AppAuthModule, AppChangePasswordModule, AppChangePasswordPage, AppEditor, AppEditorOptions, AppEntityEditor, AppEntityEditorModal, AppEntityEditorModalOptions, AppEntityFormModule, AppForm, AppFormArray, AppFormButtonsBarModule, AppFormContainer, AppFormField, AppFormModule, AppFormProvider, AppFormUtils, AppGestureConfig, AppHomePageModule, AppIconComponent, AppIconModule, AppIconSelectorField, AppIconSelectorModal, AppIconSelectorModule, AppImageGalleryComponent, AppImageGallerySlideshowComponent, AppInMemoryTable, AppInstallUpgradeCard, AppInstallUpgradeCardModule, AppListForm, AppListFormModule, AppLoadingSpinner, AppMarkdownContent, AppMarkdownModal, AppMenuModule, AppNullForm, AppPropertiesForm, AppPropertiesFormModule, AppPropertiesTable, AppPropertiesUtils, AppPropertyUtils, AppRegisterModule, AppResetPasswordModal, AppRowField, AppSelectPeerModule, AppSelectUsersModal, AppSettingsPageModule, AppTabEditor, AppTabEditorOptions, AppTable, AppTableModule, AppTableUtils, AppTextFormModule, AppTextPopoverModule, AppUpdateOfflineModeCard, AppUpdateOfflineModeCardModule, AppValidatorService, AppWebSocket, AppendQueryParamsPipePipe, ArrayDistinctPipe, ArrayFilterPipe, ArrayFindByPropertyPipe, ArrayFindPipe, ArrayFirstPipe, ArrayFormTestPage, ArrayIncludesPipe, ArrayJoinPipe, ArrayLastPipe, ArrayLengthPipe, ArrayMapPipe, ArrayPluckPipe, ArraySlicePipe, ArraySortPipe, AsAnyPipe, AsArrayPipe, AsBooleanPipe, AsFloatLabelTypePipe, AsObservablePipe, AudioProvider, AudioTestingModule, AudioTestingPage, AuthGuardService, AutoResizeDirective, AutoTitleDirective, AutoTooltipDirective, AutocompleteTestPage, AutofocusDirective, BadgeDirective, BadgeNumberPipe, Base58, BaseEntityService, BaseGraphqlService, BaseGraphqlServiceOptions, BaseReferential, Beans, BooleanFormatPipe, BooleanTestPage, CORE_CONFIG_OPTIONS, CORE_ICONS, CORE_TESTING_PAGES, CapitalizePipe, CellIdentifierDirective, CellSelectionDirective, CellSelectionService, CellValueChangeListener, ChangeCaseToUnderscorePipe, ChangePasswordForm, ChipsTestPage, Color, ColorScale, ComponentDirtyGuard, ConfigFragments, ConfigService, Configuration, CoreModule, CorePipesModule, CoreTestingModule, CryptoService, CsvUtils, DATE_ISO_PATTERN, DATE_ISO_PATTERNS, DATE_MATCH_REGEXP, DATE_PATTERN, DATE_UNIX_MS_TIMESTAMP, DATE_UNIX_TIMESTAMP, DEFAULT_JOIN_ARRAY_VALUES_SEPARATOR, DEFAULT_JOIN_PROPERTIES_SEPARATOR, DEFAULT_MENU_SHOW_WHEN, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLACEHOLDER_CHAR, DEFAULT_REQUIRED_COLUMNS, DateDiffDurationPipe, DateFormatPipe, DateFormatService, DateFromNowPipe, DateFromPipe, DateShortTestPage, DateTestPage, DateTimeTestPage, DateUtils, DebugComponent, Department, DepartmentToStringPipe, DisplayWithPipe, DragAndDropDirective, DurationPipe, DurationTestPage, ED25519_SEED_LENGTH, EMPTY_PLACEHOLDER_CHAR, EMPTY_PLACEHOLDER_CHAR_REGEXP_GLOBAL, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EmptyMissingTranslationHandler, EntitiesAsyncTableDataSource, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, EnvironmentHttpLoader, EnvironmentLoader, ErrorCodes, EvenPipe, FILE_KIND_ICONS, FeedAttachmentUtils, FeedDirective, FeedModule, FeedPage, FeedService, FeedsComponent, FileAttachmentComponent, FileAttachmentPreviewModal, FileAttachmentUtils, FileDownloadService, FileResponse, FileService, FileSizePipe, FileTypeUtils, FilesUtils, FirstFalsePipe, FirstPipe, FirstTruePipe, FormArrayAtControlPipe, FormArrayAtGroupPipe, FormArrayHelper, FormArrayTestModule, FormButtonsBarComponent, FormButtonsBarToken, FormErrorPipe, FormErrorTranslatePipe, FormErrorTranslator, FormFieldDefinitionUtils, FormFieldValuesHolder, FormGetArrayPipe, FormGetControlPipe, FormGetGroupPipe, FormGetNamePipe, FormGetPipe, FormGetValuePipe, GalleryTestPage, GeolocationUtils, GitlabUtils, GraphqlService, HAMMER_PRESS_TIME, HAMMER_TAP_TIME, HighlightPipe, HomePage, Hotkeys, HotkeysDialogComponent, HttpUtils, IMAGE_DEFAULTS, ION_ICONS, IPosition, IconSelectorTestPage, IconSelectorTestingModule, ImageAttachment$1 as ImageAttachment, ImageAttachmentFilter$1 as ImageAttachmentFilter, ImageAttachmentService, ImageGalleryModule, ImageGalleryTestingModule, ImageModule, ImageService, ImageSizes, ImagesUtils, InMemoryEntitiesService, InputFieldTestPage, IsAllSelectedPipe, IsEmptySelectionPipe, IsLoginAccountPipe, IsMultipleSelectionPipe, IsNilOrBlankPipe, IsNilOrNaNPipe, IsNilPipe, IsNotAllSelectedPipe, IsNotEmptySelectionPipe, IsNotNilOrBlankPipe, IsNotNilOrNaNPipe, IsNotNilPipe, IsOnDeskPipe, IsOnFieldPipe, IsSelectedPipe, IsSingleSelectionPipe, IsValidDatePipe, JobModule, JobProgression, JobProgressionComponent, JobProgressionIcon, JobProgressionList, JobProgressionService, JobProgressionTestService, JobProgressionTestingPage, JobTestingModule, JobUtils, JsonFeedUtils, JsonUtils, KEYBOARD_HIDE_DELAY_MS, LAT_LONG_PATTERNS, LAT_LONG_PATTERN_MAX_DECIMALS, LAT_LONG_VALUE_MAX_DECIMALS, LatLongFormatOptions, LatLongFormatPipe, LatLongTestPage, LatitudeFormatPipe, ListFormTestPage, ListFormTestingModule, LocalSettingsService, LogLevel, LogUtils, Logger, LoggingService, LoggingServiceModule, LongitudeFormatPipe, MASKS, MASK_RANGES, MAT_FORM_FIELD_DEFAULT_APPEARANCE, MAT_FORM_FIELD_DEFAULT_SUBSCRIPT_SIZING, MINIFY_ENTITY_FOR_LOCAL_STORAGE, MINIFY_ENTITY_FOR_POD, MOMENT_NO_TIME_PROPERTY, MapGetPipe, MapKeysPipe, MapPipe, MapToPipe, MapValuesPipe, MarkdownDirective, MarkdownService, MarkdownTestPage, MarkdownTestingModule, MarkdownUtils, MaskitoPlaceholderPipe, MaskitoTestPage, MatAutocompleteConfigHolder, MatAutocompleteField, MatAutocompleteFieldUtils, MatBadgeTestPage, MatBooleanField, MatChipsField, MatColorPipe, MatCommonTestPage, MatDate, MatDateShort, MatDateTime, MatDuration, MatLatLongField, MatLatLongFieldInput, MatPaginatorI18n, MatStepperI18n, MatSwipeField, MaterialAutocompleteFooterDirective, MaterialAutocompleteHeaderDirective, MaterialTestingModule, MathAbsPipe, MenuComponent, MenuItem, MenuItems, MenuOptions, MenuService, MenuTestingModule, MenuTestingPage, Message, MessageAttachment, MessageFilter, MessageForm, MessageModal, MessageModule, MessageService, MessageTypeList, MessageTypes, MimeTypes, ModalToolbarComponent, NETWORK_DEFAULT_CONNECTION_TIMEOUT, NamedFilter, NamedFilterFilter, NamedFilterSelector, NamedFilterSelectorTestingModule, NamedFilterSelectorTestingPage, NativeWebSocket, NavActionsColumnComponent, NestedTableTestPage, NetworkService, NetworkUtils, NewTokenForm, NewTokenModal, NgInitDirective, NgVarDirective, NoHtmlPipe, NotEmptyArrayPipe, NumberFormatPipe, ObservableTestPage, OddPipe, OtherMenuTestingPage, PEER_URL_REGEXP, PLUS_PLACEHOLDER_CHAR_REGEXP_GLOBAL, PRINT_ID_QUERY_PARAM, PRINT_LOADING_STORAGE_KEY_PREFIX, PRIORITIZED_AUTHORITIES, PUBKEY_REGEXP, Peer, Person, PersonFilter, PersonFilterAdditionalFields, PersonFragments, PersonService, PersonToStringPipe, PersonUtils, PersonValidatorService, PlatformService, PrintService, ProgressBarService, ProgressInterceptor, PropertiesFormTestPage, PropertiesFormTestingModule, PropertyEntity, PropertyEntityFilter, PropertyEntityValidator, PropertyFormatPipe, PropertyGetPipe, RESERVED_END_COLUMNS, RESERVED_START_COLUMNS, Referential, ReferentialFilter, ReferentialRef, ReferentialToStringPipe, ReferentialUtils, ReferentialValidatorService, ReferentialsToStringPipe, RegExpUtils, RegisterConfirmPage, RegisterForm, RegisterModal, ResizableComponent, ResizableDirective, ResizableModule, RoundPipe, RxStateComputed, RxStateModule, RxStateOutput, RxStateProperty, RxStateRegister, RxStateSelect, SCRYPT_PARAMS, SETTINGS_COMPACT_ROWS, SETTINGS_DISPLAY_COLUMNS, SETTINGS_FILTER, SETTINGS_PAGE_SIZE, SETTINGS_SORTED_COLUMN, SETTINGS_STORAGE_KEY, SETTINGS_TRANSIENT_PROPERTIES, SHARED_ICONS, SHARED_IONIC_COMPONENTS, SHARED_MATERIAL_TESTING_PAGES, SHARED_STORAGE_TESTING_PAGES, SHARED_TESTING_PAGES, SOCIAL_CONFIG_OPTIONS, SOCIAL_ICONS, SOCIAL_TESTING_PAGES, SPACE_PLACEHOLDER_CHAR, SPACE_PLACEHOLDER_CHAR_REGEXP_GLOBAL, STARTUP_DATA_STORAGE_KEY, SafeHtmlPipe, SafeStylePipe, SelectPeerModal, SelectionLengthPipe, ServerErrorCodes, SettingsPage, SharedAsyncValidators, SharedBadgeModule, SharedDebugModule, SharedDirectivesModule, SharedFileAttachmentModule, SharedFormArrayValidators, SharedFormGroupValidators, SharedHotkeysModule, SharedIonicModule, SharedMarkdownModule, SharedMatAutocompleteModule, SharedMatBooleanModule, SharedMatChipsModule, SharedMatDateTimeModule, SharedMatDurationModule, SharedMatLatLongModule, SharedMatSwipeModule, SharedMaterialModule, SharedModule, SharedNamedFilterModule, SharedPipesModule, SharedRoutingModule, SharedTestingModule, SharedTestsPage, SharedToolbarModule, SharedValidators, SocialErrorCodes, SocialModule, SocialModuleOptionsToken, SocialTestingModule, Software, SplitArrayInChunksPipe, StartableService, StartupService, StatusById, StatusIds, StatusList, StorageDrivers, StorageExplorerComponent, StorageExplorerModule, StorageExplorerTestingModule, StorageExplorerTestingRoutingModule, StorageService, StorageServiceWrapper, StrIncludesPipe, StrLengthPipe, StrReplacePipe, SubMenuTabDirective, SwipeTestPage, TABLE_SETTINGS_ENUM, TOOLBAR_HEADER_ID, TRACKED_QUERIES_STORAGE_KEY, Table2TestPage, TableSelectColumnsComponent, TableTestPage, TableTestingModule, TableValidatorService, TextForm, TextFormTestingModule, TextFormTestingPage, TextPopover, TextPopoverTestingModule, TextPopoverTestingPage, ThrottledClickDirective, TimeFormatPipe, ToStringPipe, ToastTestingModule, ToastTestingPage, Toasts, TokenScope, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, TreeItemEntityUtils, TruncHtmlPipe, TruncTextPipe, TruncateHtmlPipe, USER_CONTROLLER, UploadFile, UploadFileComponent, UploadFilePopover, UploadFileTestingModule, UploadFileTestingPage, UriUtils, UrlUtils, UserController, UserEventModule, UserEventNotificationIcon, UserEventNotificationList, UserEventNotificationModal, UserEventTestService, UserEventTestingModule, UserEventTestingPage, UserSettings, UserToken, UserTokenTable, UsersPage, ValueFormatPipe, VersionUtils, accountToString, adaptValueToControl, addValueInArray, arrayDistinct, arrayResize, arraySize, asInputElement, assignSkipUndefined, base64ArrayBuffer, booleanToString, canHaveFocus, capitalizeFirstLetter, chainPromises, changeCaseToUnderscore, clearValueInArray, collectByProperty, collectByPropertyPath, compareValues, compareValuesDesc, compareVersionNumbers, composeComparators, computeDecimalDegrees, computeDecimalPart, copyEntity2Form, createApolloClientOptions, createAppStartupInitializer, createPromiseEvent, createPromiseEventEmitter, createTestingImageDataUrl, createTrackerLink, decorateWithTakeUntil, deepMergeSkipUndefined, departmentToString, departmentsToString, disableAndClearControl, disableAndClearControls, disableControl, disableControls, emitPromiseEvent, enableControl, enableControls, enableRxStateProdMode, entityToString, equals, equalsOrNil, escapeRegExp, expansionAnimation, fadeInAnimation, fadeInOutAnimation, fadeInSlowAnimation, filterFalse, filterFormErrors, filterFormErrorsByPath, filterFormErrorsByPrefix, filterNotNil, filterNumberInput, filterTrue, findParentWithClass, firstArrayValue, firstFalse, firstFalsePromise, firstNotNil, firstNotNilPromise, firstPromise, firstTrue, firstTruePromise, focusInput, focusNextInput, focusPreviousInput, formatLatLong, formatLatitude, formatLongitude, fromDateISOString, fromScrollEndEvent, fromUnixMsTimestamp, fromUnixTimestamp, getCaretPosition, getColorContrast, getColorLuminance, getColorShade, getColorTint, getControlFromPath, getFocusableInputElements, getFormControlName, getFormErrors, getFormValueFromEntity, getInputRangeFromCaretIndex, getInputSelectionRangesFromMask, getProperty, getPropertyByPath, getPropertyByPathAsString, getRandomImage, getRandomImageWithCredit, getUserAgent, hasFocusWithin, hexToRgb, hexToRgbArray, initArrayControlsFromValues, initializeSharedModule, interpolateString, intersectArrays, isAndroid, isAppInputField, isAppTextInputField, isBlankString, isCapacitor, isChrome, isControlHasInput, isEdge, isEmptyArray, isEntityService, isFirefox, isFocusableElement, isIOS, isInputElement, isInstanceOf, isInt, isIpad, isLightColor, isMacOS, isMobile, isMutationOperation, isNil, isNilOrBlank, isNilOrNaN, isNotEmptyArray, isNotNil, isNotNilBoolean, isNotNilObject, isNotNilOrBlank, isNotNilOrNaN, isNotNilString, isNumber, isNumberRange, isOnFieldMode, isPrint, isProgressEvent, isPromise, isResponseEvent, isSafari, isSameVersion, isStartableService, isSubscriptionOperation, isTouchUi, isValidVersion, isVersionCompatible, isWebAnimationsSupported, isWindows, joinProperties, joinPropertiesPath, lastArrayValue, logFormErrors, loggerLink, markAllAsTouched, markAsUntouched, markControlAsTouched, markFormGroupAsTouched, maskitoAutoSelectByMaskPattern, maskitoPrefixPlugin, matchMedia, matchUpperCase, mergeLoadResult, mergeObjectsWithoutUndefined, mixHex, moveInputCaretToSeparator, newArray, noHtml, noTrailingSlash, notNilOrDefault, nullIfNilOrBlank, nullIfUndefined, numberOrNilAttribute, numberToString, parseBooleanText, parseLatLongText, parseLatitudeOrLongitude, parseVersion, propertiesPathComparator, propertyComparator, propertyPathComparator, provideAccountService, provideAllIonicIcons, provideIonicIcons, provideIonicIconsInitializer, providePersonService, referentialToString, referentialsToString, registerIonicIcons, remove, removeAll, removeDiacritics, removeDuplicatesFromArray, removeEnd, removeValueInArray, replaceAll, resetCalculatedValue, resizeArray, restoreTrackedQueries, rgbArrayToHex, rgbToHex, round, scrollFactory, selectInputContent, selectInputContentFromEvent, selectInputRange, setCalculatedValue, setControlEnabled, setControlRequired, setControlsEnabled, setFormErrors, setPropertyByPath, setTabIndex, sleep, slideDownAnimation, slideInAnimation, slideInOutAnimation, slideUpDownAnimation, sort, splitArrayInChunks, splitById, splitByProperty, splitDegreesToDDArray, splitDegreesToDDMMArray, splitDegreesToDDMMSSArray, startsWithUpperCase, suggestFromArray, suggestFromStringArray, tabindexComparator, testUserAgent, toBoolean, toDateISOString, toDuration, toFloat, toInt, toLoadData, toLoadResult, toNotNil, toNumber, trimEmptyToNull, truncateHtml, typeTextIntoInput, uncapitalizeFirstLetter, undefinedIfNull, underscoreToChangeCase, updateValueAndValidity, waitFor, waitForFalse, waitForTrue, waitIdle, waitWhilePending };
15994
+ export type { AbstractPersonServiceOptions, AccountDetails, AccountServiceGraphqlMutations, AccountServiceGraphqlQueries, AccountServiceGraphqlSubscriptions, AccountServiceOptions, AccountViewName, AccountWatchOptions, AddToPageHistoryOptions, AppColors, AppError, AppErrorWithDetails, AppFloatLabelType, AppFormArrayOptions, AppListFormOptions, AppManifest, AppMarkdownModalOptions, AppMarkdownOptions, AppPropertiesFormState, AppSelectUsersModalOptions, AppTableAddButtonPosition, AppTableOptions, AppTableRowCountProperty, AudioType, AuthData, AuthTokenType, BaseEntityGraphqlMutations, BaseEntityGraphqlQueries, BaseEntityGraphqlSubscriptions, BaseEntityServiceOptions, BiFunction, CallableWithProgressionFn, CallableWithProgressionOptions, CanGainFocusOptions, CanLeave, CanSave, CellSelectionEvent, CellSelectionServiceConfig, ChangePasswordData, Cloneable, ColorGradientOptions, ColorName, ColorScaleLegend, ColorScaleLegendItem, ColorScaleOptions, ColumnItem, CompareFn, CompletableEvent, ConnectionParams, Constructor, DisplayFn, EmptyObject, EntitiesAsyncTableDataSourceConfig, EntitiesServiceDeleteOptions, EntitiesServiceLoadOptions, EntitiesServiceSaveOptions, EntitiesServiceWatchOptions, EntitiesStorageTypePolicies, EntitiesTableDataSourceConfig, EntityAsObjectOptions, EntitySaveOptions, EntityServiceDeleteOptions, EntityServiceListenChangesOptions, EntityServiceLoadOptions, EntityServiceRefetchQueriesOptions, EntityServiceSaveOptions, EntityServiceWatchOptions, EntityStorageLoadOptions, EntityStoreTypePolicy, EntityStoreTypePolicyMode, EqualsFn, EventLevel, FeedLoadOptions, FeedServiceState, FeedState, FeedsLoadOptions, FeedsWatchOptions, FetchMoreFn, FileAttachmentInfo, FileAttachmentPreviewModalOptions, FileCheck, FileCheckEnabledFn, FileDeleteFn, FileDownloadOptions, FileEvent, FileHasErrorFn, FileKind, FilePreviewInfo, FileProgressEvent, FileServiceGetImageOptions, FileTransferUploadOptions, FileTransferUploadResponseBody, FileUploadFn, FilterFn, FilterFnFactory, FilterItemFunction, FindMutableWatchQueriesOptions, FirstOptions, FocusableElement, FormArrayHelperOptions, FormErrorTranslateOptions, FormErrors, FormFieldDefinition, FormFieldDefinitionMap, FormFieldType, Function$1 as Function, GalleryMode, GetFocusableInputOptions, HammerSwipeAction, HammerSwipeEvent, HammerTapEvent, HistoryPageReference, HomePageState, HotKeysConfig, IAppEditor, IAppEntityEditor, IAppForm, IAppFormContainer, IAppFormGetter, IAppInputField, IAppTabEditor, IAppTextInputField, ICellId, IDebugDataService, IEntitiesService, IEntitiesTableDataSource, IEntity, IEntityEditorModalOptions, IEntityFilter, IEntityFullService, IEntityService, IFeedService, IFileTransferService, IFormPathTranslator, IFormPathTranslatorOptions, IGitlabRelease, IHomePageConfig, IJobProgressionService, ILatLongData, ILogger, ILoggingAppender, ILoggingService, IMenuItem, IModalDetailOptions, INamedFilter, INamedFilterFilter, INamedFilterService, INewTokenOptions, IPersonService, IProgressBarService, IReferentialRef, ISelectPeerModalOptions, ISelectPeerModalState, IStartableService, IStatus, IStorage, ITreeItemEntity, IUserController, IUserEvent, IUserEventAction, IUserEventFilter, IUserEventListener, IUserEventMutations, IUserEventQueries, IUserEventService, IUserEventSubscriptions, IconRef, Image, ImageEditEvent, ImageEditFormat, ImageGallerySizes, ImageGallerySlideChangeEvent, ImageGallerySlideshowMode, ImageResizeOptions, ImageSize, InMemoryEntitiesServiceOptions, InputElement, InstallAppLink, IsEmailExistsVariables, ItemButton, JobProgressionIconState, JobProgressionListOptions, JobProgressionOptions, JobProgressionState, JoinOptions, JsonFeed, JsonFeedAttachment, JsonFeedAuthor, JsonFeedItem, KeyType, KeyValueType, KeysEnum, LatLongPattern, LatLongSign, LatLongSignValue, LatLongType, LoadResult, LoadResultByPageFn, LocalSettings, LocalSettingsOptions, LocaleConfig, Log, LoggingServiceConfig, MaskitoPlaceholderPipeOptions, MatAutocompleteFieldAddOptions, MatAutocompleteFieldConfig, MatAutocompleteFieldSelectChange, MatAutocompleteFieldToggleFavorite, MatBadgeFill, MenuPathParam, MessageModalOptions, MessageServiceOptions, MutableWatchQueriesUpdatePolicy, MutableWatchQueryDescription, MutableWatchQueryOptions, MutateQueryOptions, MutateQueryWithCacheUpdateOptions, NamedFilterLoadOptions, NamedFilterSelectorButtonsPosition, NamedFilterWatchOptions, NetworkEventType, NodeInfo, ObjectMap, ObjectMapEntry, ObservablePropertyDecorator, ObservableValidatorFn, Observed, OfflineFeature, OmitFunctions, OnReady, Page, PersonServiceOptions, PersonValidatorOptions, PrintOptions, ProgressMode, PromiseEvent, PromiseEventPayload, PromiseValidatorFn, PropertiesArray, PropertiesMap, Property, PropertyMap, QueryVariables, ReferentialAsObjectOptions, RegisterData, SaveActionType, SemVersion, ServiceError, SharedModuleConfig, ShowToastOptions, SimpleFunction, SocialModuleOptions, Sound, SplitPaneShowWhen, StartupData, StartupMethod, StatePropertyDecorator, Statefull, SuggestFn, SuggestService, SynchronizationHistory, TestingPage, TextPopoverButton, TextPopoverOptions, TrackableMutationContext, TrackedQuery, UploadFilePopoverOptions, UsageMode, UserEventAction, UserEventLoadOptions, UserEventNotificationListOptions, UserEventNotificationModalOptions, UserEventServiceOptions, UserEventWatchOptions, UserProfileLabel, UserSettingsOptions, WaitForOptions, WatchQueryOptions };