@eagami/ui 5.53.0 → 5.55.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/eagami-ui.mjs +2184 -634
- package/fesm2022/eagami-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/src/styles/_tooltip.scss +5 -2
- package/types/eagami-ui.d.ts +1436 -778
package/types/eagami-ui.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from "@angular/core";
|
|
2
|
-
import { AfterContentChecked, ElementRef, EnvironmentProviders, InjectionToken, OnDestroy, OnInit, Signal, TemplateRef, Type } from "@angular/core";
|
|
2
|
+
import { AfterContentChecked, ElementRef, EnvironmentProviders, InjectionToken, Injector, OnDestroy, OnInit, Signal, TemplateRef, Type } from "@angular/core";
|
|
3
3
|
import { AbstractControl, ControlValueAccessor } from "@angular/forms";
|
|
4
4
|
/**
|
|
5
5
|
* BCP 47 locale tags supported out of the box. Consumers select one of these
|
|
@@ -136,6 +136,10 @@ export interface EagamiMessages {
|
|
|
136
136
|
dropdown: {
|
|
137
137
|
placeholder: string;
|
|
138
138
|
};
|
|
139
|
+
fieldLabel: {
|
|
140
|
+
/** Accessible name of the button that reveals a field label's help. */
|
|
141
|
+
help: (label: string) => string;
|
|
142
|
+
};
|
|
139
143
|
fileUploader: {
|
|
140
144
|
prompt: string;
|
|
141
145
|
promptSingle: string;
|
|
@@ -613,13 +617,19 @@ export type EaSize = '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
|
613
617
|
export type EaWidth = EaSize | '2xl' | 'full';
|
|
614
618
|
/**
|
|
615
619
|
* Single expandable section within an `ea-accordion`. Each item exposes a
|
|
616
|
-
* header button with the supplied `label
|
|
620
|
+
* header button with the supplied `label`, or with an element projected as
|
|
621
|
+
* `slot="label"` for richer content, and reveals its other projected content
|
|
617
622
|
* when expanded. Inherits its size from the parent accordion. Must be
|
|
618
623
|
* rendered inside an `ea-accordion`.
|
|
619
624
|
*/
|
|
620
625
|
export declare class AccordionItemComponent implements OnInit, OnDestroy {
|
|
621
626
|
private readonly accordion;
|
|
622
627
|
readonly value: import("@angular/core").InputSignal<string>;
|
|
628
|
+
/**
|
|
629
|
+
* Plain-text label shown in the header button. For richer content, project
|
|
630
|
+
* an element with `slot="label"` instead: its text then names the button, so
|
|
631
|
+
* mark purely decorative parts of it `aria-hidden`.
|
|
632
|
+
*/
|
|
623
633
|
readonly label: import("@angular/core").InputSignal<string>;
|
|
624
634
|
/** Optional icon component rendered before the label in the header button. */
|
|
625
635
|
readonly icon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
|
|
@@ -641,7 +651,7 @@ export declare class AccordionItemComponent implements OnInit, OnDestroy {
|
|
|
641
651
|
};
|
|
642
652
|
"label": {
|
|
643
653
|
"alias": "label";
|
|
644
|
-
"required":
|
|
654
|
+
"required": false;
|
|
645
655
|
"isSignal": true;
|
|
646
656
|
};
|
|
647
657
|
"icon": {
|
|
@@ -659,7 +669,7 @@ export declare class AccordionItemComponent implements OnInit, OnDestroy {
|
|
|
659
669
|
"required": false;
|
|
660
670
|
"isSignal": true;
|
|
661
671
|
};
|
|
662
|
-
}, {}, never, ["*"], true, never>;
|
|
672
|
+
}, {}, never, ["[slot=label]", "*"], true, never>;
|
|
663
673
|
}
|
|
664
674
|
/** Heading level exposed by each item's header for assistive technology. */
|
|
665
675
|
export type AccordionHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
|
|
@@ -668,7 +678,9 @@ export type AccordionSize = EaSize;
|
|
|
668
678
|
/**
|
|
669
679
|
* Container for expandable content sections. By default only one item can be
|
|
670
680
|
* open at a time; set `multi` to allow several to stay expanded together.
|
|
671
|
-
*
|
|
681
|
+
* Which items are open is the `expandedValues` model, so items can start
|
|
682
|
+
* expanded or be controlled from outside. Provides a built-in chevron
|
|
683
|
+
* animation and supports per-item disabling.
|
|
672
684
|
*/
|
|
673
685
|
export declare class AccordionComponent {
|
|
674
686
|
readonly multi: import("@angular/core").InputSignal<boolean>;
|
|
@@ -678,6 +690,12 @@ export declare class AccordionComponent {
|
|
|
678
690
|
readonly headingLevel: import("@angular/core").InputSignal<AccordionHeadingLevel>;
|
|
679
691
|
/** Tints an open item's header and sets its label, icon, and chevron in the brand color. */
|
|
680
692
|
readonly highlightExpanded: import("@angular/core").InputSignal<boolean>;
|
|
693
|
+
/**
|
|
694
|
+
* Values of the expanded items. Set it to open items from the start, or bind
|
|
695
|
+
* `[(expandedValues)]` to control expansion from outside. Without `multi`,
|
|
696
|
+
* only the first of them in document order stays open.
|
|
697
|
+
*/
|
|
698
|
+
readonly expandedValues: import("@angular/core").ModelSignal<readonly string[]>;
|
|
681
699
|
readonly expandedItems: import("@angular/core").WritableSignal<Set<string>>;
|
|
682
700
|
readonly registeredItems: import("@angular/core").WritableSignal<AccordionItemComponent[]>;
|
|
683
701
|
constructor();
|
|
@@ -707,16 +725,25 @@ export declare class AccordionComponent {
|
|
|
707
725
|
"required": false;
|
|
708
726
|
"isSignal": true;
|
|
709
727
|
};
|
|
710
|
-
|
|
728
|
+
"expandedValues": {
|
|
729
|
+
"alias": "expandedValues";
|
|
730
|
+
"required": false;
|
|
731
|
+
"isSignal": true;
|
|
732
|
+
};
|
|
733
|
+
}, {
|
|
734
|
+
"expandedValues": "expandedValuesChange";
|
|
735
|
+
}, never, ["*"], true, never>;
|
|
711
736
|
}
|
|
712
737
|
/** Semantic colour scheme of an alert. Drives icon and palette. */
|
|
713
738
|
export type AlertVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
|
|
714
739
|
/** Scales the alert's text, icon, and gap together. */
|
|
715
740
|
export type AlertSize = EaSize;
|
|
741
|
+
/** How assistive technology announces an alert. */
|
|
742
|
+
export type AlertLive = 'auto' | 'assertive' | 'polite' | 'off';
|
|
716
743
|
/**
|
|
717
744
|
* Inline banner for surfacing semantic messages such as success confirmations,
|
|
718
745
|
* warnings, or errors. Optionally dismissible, with a two-way `visible`
|
|
719
|
-
* binding and an
|
|
746
|
+
* binding and an ARIA role chosen by severity unless `live` sets one.
|
|
720
747
|
*/
|
|
721
748
|
export declare class AlertComponent {
|
|
722
749
|
protected readonly i18n: EagamiI18nService;
|
|
@@ -726,12 +753,20 @@ export declare class AlertComponent {
|
|
|
726
753
|
readonly visible: import("@angular/core").ModelSignal<boolean>;
|
|
727
754
|
/** Overrides the variant's default status icon with any icon component. */
|
|
728
755
|
readonly icon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
|
|
756
|
+
/**
|
|
757
|
+
* How assistive technology announces the alert. `auto` interrupts for
|
|
758
|
+
* `error` and `warning` (`role="alert"`) and waits its turn for the rest
|
|
759
|
+
* (`role="status"`); `assertive` and `polite` pick one of those whatever the
|
|
760
|
+
* variant, and `off` announces nothing, for static text that is part of the
|
|
761
|
+
* page rather than news about it.
|
|
762
|
+
*/
|
|
763
|
+
readonly live: import("@angular/core").InputSignal<AlertLive>;
|
|
729
764
|
/** Fires when the user dismisses the alert via its close button. */
|
|
730
765
|
readonly dismissed: import("@angular/core").OutputEmitterRef<void>;
|
|
731
766
|
readonly alertClasses: import("@angular/core").Signal<{
|
|
732
767
|
[x: string]: boolean;
|
|
733
768
|
}>;
|
|
734
|
-
readonly role: import("@angular/core").Signal<"alert" | "status">;
|
|
769
|
+
readonly role: import("@angular/core").Signal<"alert" | "status" | null>;
|
|
735
770
|
/** Hides the alert and emits `dismissed`. */
|
|
736
771
|
dismiss(): void;
|
|
737
772
|
static ɵfac: i0.ɵɵFactoryDeclaration<AlertComponent, never>;
|
|
@@ -761,6 +796,11 @@ export declare class AlertComponent {
|
|
|
761
796
|
"required": false;
|
|
762
797
|
"isSignal": true;
|
|
763
798
|
};
|
|
799
|
+
"live": {
|
|
800
|
+
"alias": "live";
|
|
801
|
+
"required": false;
|
|
802
|
+
"isSignal": true;
|
|
803
|
+
};
|
|
764
804
|
}, {
|
|
765
805
|
"visible": "visibleChange";
|
|
766
806
|
"dismissed": "dismissed";
|
|
@@ -834,6 +874,8 @@ export declare class AutocompleteComponent implements ControlValueAccessor {
|
|
|
834
874
|
readonly label: import("@angular/core").InputSignal<string | undefined>;
|
|
835
875
|
/** Optional icon component rendered before the label text. */
|
|
836
876
|
readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
|
|
877
|
+
/** Help revealed by an info button beside the label, as plain text or a template. */
|
|
878
|
+
readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
|
|
837
879
|
/** Accessible name for the input and suggestion list when no visible label is provided. */
|
|
838
880
|
readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
839
881
|
readonly placeholder: import("@angular/core").InputSignal<string>;
|
|
@@ -848,6 +890,8 @@ export declare class AutocompleteComponent implements ControlValueAccessor {
|
|
|
848
890
|
/** Per-validator-key message overrides for a bound form control (e.g. `{ required: '...' }`). */
|
|
849
891
|
readonly errorMessages: import("@angular/core").InputSignal<Partial<Record<string, string>> | undefined>;
|
|
850
892
|
readonly minLength: import("@angular/core").InputSignal<number>;
|
|
893
|
+
/** Maximum number of characters the input accepts (native `maxlength`). */
|
|
894
|
+
readonly maxLength: import("@angular/core").InputSignal<number | undefined>;
|
|
851
895
|
readonly maxResults: import("@angular/core").InputSignal<number>;
|
|
852
896
|
readonly emptyMessage: import("@angular/core").InputSignal<string | undefined>;
|
|
853
897
|
readonly id: import("@angular/core").InputSignal<string>;
|
|
@@ -922,6 +966,11 @@ export declare class AutocompleteComponent implements ControlValueAccessor {
|
|
|
922
966
|
"required": false;
|
|
923
967
|
"isSignal": true;
|
|
924
968
|
};
|
|
969
|
+
"labelHelp": {
|
|
970
|
+
"alias": "labelHelp";
|
|
971
|
+
"required": false;
|
|
972
|
+
"isSignal": true;
|
|
973
|
+
};
|
|
925
974
|
"ariaLabel": {
|
|
926
975
|
"alias": "ariaLabel";
|
|
927
976
|
"required": false;
|
|
@@ -977,6 +1026,11 @@ export declare class AutocompleteComponent implements ControlValueAccessor {
|
|
|
977
1026
|
"required": false;
|
|
978
1027
|
"isSignal": true;
|
|
979
1028
|
};
|
|
1029
|
+
"maxLength": {
|
|
1030
|
+
"alias": "maxLength";
|
|
1031
|
+
"required": false;
|
|
1032
|
+
"isSignal": true;
|
|
1033
|
+
};
|
|
980
1034
|
"maxResults": {
|
|
981
1035
|
"alias": "maxResults";
|
|
982
1036
|
"required": false;
|
|
@@ -1681,19 +1735,29 @@ export declare class BreadcrumbsComponent {
|
|
|
1681
1735
|
"clicked": "clicked";
|
|
1682
1736
|
}, never, never, true, never>;
|
|
1683
1737
|
}
|
|
1684
|
-
/**
|
|
1685
|
-
|
|
1738
|
+
/**
|
|
1739
|
+
* Visual style of a button; drives colour and emphasis. `link` drops the box
|
|
1740
|
+
* for an inline text link in the link colour, underlined on hover and focus.
|
|
1741
|
+
*/
|
|
1742
|
+
export type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'danger' | 'link';
|
|
1686
1743
|
/** Visual size of a button. */
|
|
1687
1744
|
export type ButtonSize = EaSize;
|
|
1688
1745
|
/** HTML `type` attribute applied to the underlying `<button>` element. */
|
|
1689
1746
|
export type ButtonType = 'button' | 'submit' | 'reset';
|
|
1690
1747
|
/**
|
|
1691
|
-
*
|
|
1692
|
-
*
|
|
1693
|
-
|
|
1748
|
+
* Placement of a button's content along its inline axis when the button is
|
|
1749
|
+
* wider than its content. `start` and `end` follow the text direction.
|
|
1750
|
+
*/
|
|
1751
|
+
export type ButtonAlign = 'start' | 'center' | 'end';
|
|
1752
|
+
/**
|
|
1753
|
+
* Standard action button supporting primary, secondary, ghost, danger, and
|
|
1754
|
+
* link variants. Includes a loading state that swaps the label for a spinner
|
|
1755
|
+
* while preserving the rendered width. Chrome is tunable per instance via
|
|
1694
1756
|
* `--ea-button-padding`, `--ea-button-min-height` and `--ea-button-radius`,
|
|
1695
1757
|
* which is how an icon-only button comes down to little more than its glyph
|
|
1696
|
-
* and how a call-to-action becomes a pill.
|
|
1758
|
+
* and how a call-to-action becomes a pill. For navigation, put
|
|
1759
|
+
* `ButtonLinkComponent` on an anchor instead (`<a eaButtonLink href="...">`):
|
|
1760
|
+
* it takes the same styling inputs and keeps real link behaviour.
|
|
1697
1761
|
*/
|
|
1698
1762
|
export declare class ButtonComponent {
|
|
1699
1763
|
readonly variant: import("@angular/core").InputSignal<ButtonVariant>;
|
|
@@ -1702,22 +1766,28 @@ export declare class ButtonComponent {
|
|
|
1702
1766
|
readonly disabled: import("@angular/core").InputSignal<boolean>;
|
|
1703
1767
|
readonly loading: import("@angular/core").InputSignal<boolean>;
|
|
1704
1768
|
readonly fullWidth: import("@angular/core").InputSignal<boolean>;
|
|
1769
|
+
/**
|
|
1770
|
+
* Places the content along the inline axis of a button wider than it, as a
|
|
1771
|
+
* full-width one is; `start` lets a stack of buttons read as list rows.
|
|
1772
|
+
*/
|
|
1773
|
+
readonly align: import("@angular/core").InputSignal<ButtonAlign>;
|
|
1705
1774
|
readonly uppercase: import("@angular/core").InputSignal<boolean>;
|
|
1706
1775
|
/** Optional icon component rendered to the left of the label. */
|
|
1707
1776
|
readonly icon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
|
|
1708
1777
|
readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
1709
1778
|
readonly ariaCurrent: import("@angular/core").InputSignal<string | undefined>;
|
|
1779
|
+
/** Space-separated ids of the elements whose text names the button. */
|
|
1780
|
+
readonly ariaLabelledby: import("@angular/core").InputSignal<string | undefined>;
|
|
1781
|
+
/** Space-separated ids of the elements that describe the button, e.g. a hint. */
|
|
1782
|
+
readonly ariaDescribedby: import("@angular/core").InputSignal<string | undefined>;
|
|
1783
|
+
private readonly buttonEl;
|
|
1710
1784
|
/** Fires when the button is activated; suppressed while disabled or loading. */
|
|
1711
1785
|
readonly clicked: import("@angular/core").OutputEmitterRef<MouseEvent>;
|
|
1712
1786
|
readonly isDisabled: import("@angular/core").Signal<boolean>;
|
|
1713
|
-
readonly hostClasses: import("@angular/core").Signal<
|
|
1714
|
-
[x: string]: boolean;
|
|
1715
|
-
'ea-button--full-width': boolean;
|
|
1716
|
-
'ea-button--uppercase': boolean;
|
|
1717
|
-
'ea-button--loading': boolean;
|
|
1718
|
-
'ea-button--disabled': boolean;
|
|
1719
|
-
}>;
|
|
1787
|
+
readonly hostClasses: import("@angular/core").Signal<Record<string, boolean>>;
|
|
1720
1788
|
handleClick(event: MouseEvent): void;
|
|
1789
|
+
/** Moves keyboard focus to the underlying native button. */
|
|
1790
|
+
focus(): void;
|
|
1721
1791
|
static ɵfac: i0.ɵɵFactoryDeclaration<ButtonComponent, never>;
|
|
1722
1792
|
static ɵcmp: i0.ɵɵComponentDeclaration<ButtonComponent, "ea-button", never, {
|
|
1723
1793
|
"variant": {
|
|
@@ -1750,6 +1820,11 @@ export declare class ButtonComponent {
|
|
|
1750
1820
|
"required": false;
|
|
1751
1821
|
"isSignal": true;
|
|
1752
1822
|
};
|
|
1823
|
+
"align": {
|
|
1824
|
+
"alias": "align";
|
|
1825
|
+
"required": false;
|
|
1826
|
+
"isSignal": true;
|
|
1827
|
+
};
|
|
1753
1828
|
"uppercase": {
|
|
1754
1829
|
"alias": "uppercase";
|
|
1755
1830
|
"required": false;
|
|
@@ -1770,10 +1845,88 @@ export declare class ButtonComponent {
|
|
|
1770
1845
|
"required": false;
|
|
1771
1846
|
"isSignal": true;
|
|
1772
1847
|
};
|
|
1848
|
+
"ariaLabelledby": {
|
|
1849
|
+
"alias": "aria-labelledby";
|
|
1850
|
+
"required": false;
|
|
1851
|
+
"isSignal": true;
|
|
1852
|
+
};
|
|
1853
|
+
"ariaDescribedby": {
|
|
1854
|
+
"alias": "aria-describedby";
|
|
1855
|
+
"required": false;
|
|
1856
|
+
"isSignal": true;
|
|
1857
|
+
};
|
|
1773
1858
|
}, {
|
|
1774
1859
|
"clicked": "clicked";
|
|
1775
1860
|
}, never, ["[slot=prefix]", "*", "[slot=suffix]"], true, never>;
|
|
1776
1861
|
}
|
|
1862
|
+
/**
|
|
1863
|
+
* Button styling for an anchor, for navigation that should look like a button
|
|
1864
|
+
* while staying a real link: middle-click and open in a new tab work, and
|
|
1865
|
+
* assistive technology announces it as a link. Put it on an `<a>` with an
|
|
1866
|
+
* `href`, or with Angular's `routerLink`, which binds the `href` itself
|
|
1867
|
+
* (`<a eaButtonLink routerLink="/pricing">`). Takes the same styling inputs as
|
|
1868
|
+
* `ea-button` and is painted by the same stylesheet.
|
|
1869
|
+
*
|
|
1870
|
+
* `disabled` sets `aria-disabled`, takes the link out of the tab order, and
|
|
1871
|
+
* blocks activation before `routerLink` or any `(click)` handler sees it, so
|
|
1872
|
+
* nothing navigates. There is no loading state: a link hands off to the
|
|
1873
|
+
* browser or router, so there is no in-flight action for a spinner to cover.
|
|
1874
|
+
*/
|
|
1875
|
+
export declare class ButtonLinkComponent {
|
|
1876
|
+
protected readonly authoredTabindex: string | null;
|
|
1877
|
+
readonly variant: import("@angular/core").InputSignal<ButtonVariant>;
|
|
1878
|
+
readonly size: import("@angular/core").InputSignal<import("@eagami/ui").EaSize>;
|
|
1879
|
+
readonly disabled: import("@angular/core").InputSignal<boolean>;
|
|
1880
|
+
readonly fullWidth: import("@angular/core").InputSignal<boolean>;
|
|
1881
|
+
/**
|
|
1882
|
+
* Places the content along the inline axis of a link wider than it, as a
|
|
1883
|
+
* full-width one is; `start` lets a stack of links read as list rows.
|
|
1884
|
+
*/
|
|
1885
|
+
readonly align: import("@angular/core").InputSignal<ButtonAlign>;
|
|
1886
|
+
readonly uppercase: import("@angular/core").InputSignal<boolean>;
|
|
1887
|
+
/** Optional icon component rendered before the label. */
|
|
1888
|
+
readonly icon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
|
|
1889
|
+
protected readonly boxClasses: import("@angular/core").Signal<Record<string, boolean>>;
|
|
1890
|
+
constructor();
|
|
1891
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ButtonLinkComponent, never>;
|
|
1892
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ButtonLinkComponent, "a[eaButtonLink]", never, {
|
|
1893
|
+
"variant": {
|
|
1894
|
+
"alias": "variant";
|
|
1895
|
+
"required": false;
|
|
1896
|
+
"isSignal": true;
|
|
1897
|
+
};
|
|
1898
|
+
"size": {
|
|
1899
|
+
"alias": "size";
|
|
1900
|
+
"required": false;
|
|
1901
|
+
"isSignal": true;
|
|
1902
|
+
};
|
|
1903
|
+
"disabled": {
|
|
1904
|
+
"alias": "disabled";
|
|
1905
|
+
"required": false;
|
|
1906
|
+
"isSignal": true;
|
|
1907
|
+
};
|
|
1908
|
+
"fullWidth": {
|
|
1909
|
+
"alias": "fullWidth";
|
|
1910
|
+
"required": false;
|
|
1911
|
+
"isSignal": true;
|
|
1912
|
+
};
|
|
1913
|
+
"align": {
|
|
1914
|
+
"alias": "align";
|
|
1915
|
+
"required": false;
|
|
1916
|
+
"isSignal": true;
|
|
1917
|
+
};
|
|
1918
|
+
"uppercase": {
|
|
1919
|
+
"alias": "uppercase";
|
|
1920
|
+
"required": false;
|
|
1921
|
+
"isSignal": true;
|
|
1922
|
+
};
|
|
1923
|
+
"icon": {
|
|
1924
|
+
"alias": "icon";
|
|
1925
|
+
"required": false;
|
|
1926
|
+
"isSignal": true;
|
|
1927
|
+
};
|
|
1928
|
+
}, {}, never, ["[slot=prefix]", "*", "[slot=suffix]"], true, never>;
|
|
1929
|
+
}
|
|
1777
1930
|
/** Visual style of a card surface. */
|
|
1778
1931
|
export type CardVariant = 'elevated' | 'outlined' | 'filled';
|
|
1779
1932
|
/** Padding preset applied to the card's content area. */
|
|
@@ -2216,6 +2369,8 @@ export declare class ColorPickerComponent implements ControlValueAccessor {
|
|
|
2216
2369
|
readonly label: import("@angular/core").InputSignal<string | undefined>;
|
|
2217
2370
|
/** Optional icon component rendered before the label text. */
|
|
2218
2371
|
readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
|
|
2372
|
+
/** Help revealed by an info button beside the label, as plain text or a template. */
|
|
2373
|
+
readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
|
|
2219
2374
|
readonly placeholder: import("@angular/core").InputSignal<string | undefined>;
|
|
2220
2375
|
readonly size: import("@angular/core").InputSignal<EaSize>;
|
|
2221
2376
|
readonly disabled: import("@angular/core").InputSignal<boolean>;
|
|
@@ -2389,6 +2544,11 @@ export declare class ColorPickerComponent implements ControlValueAccessor {
|
|
|
2389
2544
|
"required": false;
|
|
2390
2545
|
"isSignal": true;
|
|
2391
2546
|
};
|
|
2547
|
+
"labelHelp": {
|
|
2548
|
+
"alias": "labelHelp";
|
|
2549
|
+
"required": false;
|
|
2550
|
+
"isSignal": true;
|
|
2551
|
+
};
|
|
2392
2552
|
"placeholder": {
|
|
2393
2553
|
"alias": "placeholder";
|
|
2394
2554
|
"required": false;
|
|
@@ -2469,340 +2629,866 @@ export declare class ColorPickerComponent implements ControlValueAccessor {
|
|
|
2469
2629
|
"changed": "changed";
|
|
2470
2630
|
}, never, never, true, never>;
|
|
2471
2631
|
}
|
|
2472
|
-
/**
|
|
2473
|
-
|
|
2474
|
-
|
|
2475
|
-
|
|
2476
|
-
|
|
2477
|
-
|
|
2478
|
-
|
|
2479
|
-
|
|
2480
|
-
|
|
2481
|
-
|
|
2482
|
-
|
|
2483
|
-
|
|
2484
|
-
|
|
2485
|
-
|
|
2486
|
-
|
|
2487
|
-
|
|
2488
|
-
|
|
2489
|
-
|
|
2490
|
-
|
|
2491
|
-
|
|
2492
|
-
|
|
2632
|
+
/**
|
|
2633
|
+
* Placement of the popover relative to its anchor. Each outside placement names
|
|
2634
|
+
* the side of the anchor the popover attaches to, optionally followed by a corner
|
|
2635
|
+
* suffix (`-start` or `-end`) that decides the alignment along the perpendicular
|
|
2636
|
+
* axis. The plain side names (`top`, `bottom`, `left`, `right`) centre the
|
|
2637
|
+
* popover on that axis. The `inside-` placements sit over the anchor instead,
|
|
2638
|
+
* see {@link PopoverInsidePlacement}.
|
|
2639
|
+
*/
|
|
2640
|
+
export type PopoverPlacement = 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'right' | PopoverInsidePlacement;
|
|
2641
|
+
/**
|
|
2642
|
+
* Placements that sit over the anchor rather than beside it: pinned inside one of
|
|
2643
|
+
* its corners (`inside-top-start`), centred along one of its edges (`inside-top`,
|
|
2644
|
+
* `inside-start`), or centred on it (`inside-center`). `start` and `end` follow the
|
|
2645
|
+
* reading direction, so `inside-top-start` is the top-left corner in LTR and the
|
|
2646
|
+
* top-right corner in RTL. The offset insets the popover from the edges it is
|
|
2647
|
+
* pinned to, and it never flips.
|
|
2648
|
+
*/
|
|
2649
|
+
export type PopoverInsidePlacement = 'inside-top-start' | 'inside-top' | 'inside-top-end' | 'inside-start' | 'inside-center' | 'inside-end' | 'inside-bottom-start' | 'inside-bottom' | 'inside-bottom-end';
|
|
2650
|
+
/** A point in viewport coordinates, such as a pointer event's `clientX` and `clientY`. */
|
|
2651
|
+
export interface PopoverAnchorPoint {
|
|
2652
|
+
readonly x: number;
|
|
2653
|
+
readonly y: number;
|
|
2493
2654
|
}
|
|
2494
|
-
|
|
2495
|
-
|
|
2496
|
-
|
|
2497
|
-
|
|
2655
|
+
export interface PopoverPositionResult {
|
|
2656
|
+
/** Top coordinate in viewport (px); pairs with `position: fixed`. */
|
|
2657
|
+
readonly top: number;
|
|
2658
|
+
/** Left coordinate in viewport (px). */
|
|
2659
|
+
readonly left: number;
|
|
2660
|
+
/** Width hint when the popover should match the anchor's width. */
|
|
2661
|
+
readonly width?: number;
|
|
2662
|
+
/** The anchor's measured width, for a caller capping the popover against it. */
|
|
2663
|
+
readonly anchorWidth: number;
|
|
2664
|
+
/** Effective placement after any flip logic ran. */
|
|
2665
|
+
readonly placement: PopoverPlacement;
|
|
2666
|
+
}
|
|
2667
|
+
export interface PopoverPositionOptions {
|
|
2668
|
+
readonly placement: PopoverPlacement;
|
|
2669
|
+
/** Gap in px between the anchor and the popover. Default 4. */
|
|
2670
|
+
readonly offset?: number;
|
|
2671
|
+
/** Flip to the opposite side when the requested side overflows the viewport. Default true. */
|
|
2672
|
+
readonly flip?: boolean;
|
|
2673
|
+
/** Clamp inside the viewport when the popover still overflows after any flip. Default true. */
|
|
2674
|
+
readonly clamp?: boolean;
|
|
2675
|
+
/** Margin from the viewport edge in px when clamping. Default 8. */
|
|
2676
|
+
readonly margin?: number;
|
|
2677
|
+
/** Set the popover's width to match the anchor's. Useful for dropdown-style menus. */
|
|
2678
|
+
readonly matchAnchorWidth?: boolean;
|
|
2679
|
+
/** Right-to-left context. Swaps `-start`/`-end` alignment so they track the reading direction. */
|
|
2680
|
+
readonly rtl?: boolean;
|
|
2681
|
+
/**
|
|
2682
|
+
* Viewport point to position against instead of the anchor's box, as a zero-size
|
|
2683
|
+
* anchor. The anchor still supplies the width for `matchAnchorWidth`.
|
|
2684
|
+
*/
|
|
2685
|
+
readonly point?: PopoverAnchorPoint | null;
|
|
2686
|
+
}
|
|
2687
|
+
interface Rect {
|
|
2688
|
+
readonly width: number;
|
|
2689
|
+
readonly height: number;
|
|
2690
|
+
}
|
|
2691
|
+
interface AnchorRect extends Rect {
|
|
2692
|
+
readonly top: number;
|
|
2693
|
+
readonly bottom: number;
|
|
2694
|
+
readonly left: number;
|
|
2695
|
+
readonly right: number;
|
|
2696
|
+
}
|
|
2697
|
+
interface Viewport {
|
|
2698
|
+
readonly width: number;
|
|
2699
|
+
readonly height: number;
|
|
2498
2700
|
}
|
|
2499
2701
|
/**
|
|
2500
|
-
*
|
|
2501
|
-
*
|
|
2502
|
-
*
|
|
2503
|
-
*
|
|
2702
|
+
* Computes the viewport-space top/left for a popover anchored to `anchorRect`,
|
|
2703
|
+
* applying optional flip-on-overflow and edge-clamp logic. Pure function, no
|
|
2704
|
+
* DOM access. Both `<ea-popover>` and `[eaTooltip]` consume this.
|
|
2705
|
+
*
|
|
2706
|
+
* @param anchorRect The anchor element's `getBoundingClientRect()`.
|
|
2707
|
+
* @param popoverRect Width and height of the popover (post-render measurement).
|
|
2708
|
+
* @param viewport Viewport dimensions (`window.innerWidth/Height`).
|
|
2709
|
+
* @param options Placement and behavior flags.
|
|
2504
2710
|
*/
|
|
2505
|
-
export declare
|
|
2711
|
+
export declare function computePopoverPosition(anchorRect: AnchorRect, popoverRect: Rect, viewport: Viewport, options: PopoverPositionOptions): PopoverPositionResult;
|
|
2712
|
+
/** Placement of the menu list relative to its trigger. */
|
|
2713
|
+
export type MenuPlacement = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';
|
|
2714
|
+
/** Visual size of the menu, shared by all of its items. */
|
|
2715
|
+
export type MenuSize = EaSize;
|
|
2716
|
+
/**
|
|
2717
|
+
* Popup action menu attached to any focusable element via the
|
|
2718
|
+
* `[eaMenuTrigger]` directive. Supports keyboard navigation
|
|
2719
|
+
* (arrow keys, Home/End), closes on outside click or Escape, and restores
|
|
2720
|
+
* focus to the trigger on close. Positioning, dismissal, and SSR-safe scroll
|
|
2721
|
+
* handling are provided by `<ea-popover>`.
|
|
2722
|
+
*/
|
|
2723
|
+
export declare class MenuComponent {
|
|
2724
|
+
private readonly injector;
|
|
2506
2725
|
private readonly i18n;
|
|
2507
|
-
private readonly
|
|
2508
|
-
|
|
2509
|
-
|
|
2510
|
-
readonly columns: import("@angular/core").InputSignal<DataTableColumn<T>[]>;
|
|
2511
|
-
readonly data: import("@angular/core").InputSignal<T[]>;
|
|
2512
|
-
/**
|
|
2513
|
-
* Rows holding each column's widest content. They are laid out but never shown,
|
|
2514
|
-
* so column widths come from them rather than from whichever rows are in `data`,
|
|
2515
|
-
* and stay put across pages and while data loads. Moot with `stickyHeader`, whose
|
|
2516
|
-
* columns share the width equally unless given a `width`.
|
|
2517
|
-
*/
|
|
2518
|
-
readonly sizingRows: import("@angular/core").InputSignal<T[]>;
|
|
2519
|
-
/** Accessible name for the table, announced when it takes focus as a grid. */
|
|
2520
|
-
readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
2521
|
-
/** Visible caption rendered above the table; also names it for assistive technology. */
|
|
2522
|
-
readonly caption: import("@angular/core").InputSignal<string | undefined>;
|
|
2523
|
-
readonly trackBy: import("@angular/core").InputSignal<keyof T | undefined>;
|
|
2524
|
-
readonly density: import("@angular/core").InputSignal<DataTableDensity>;
|
|
2525
|
-
/** Visual size of the table; density paddings and icons scale with it. */
|
|
2726
|
+
private readonly listEl;
|
|
2727
|
+
readonly placement: import("@angular/core").InputSignal<MenuPlacement>;
|
|
2728
|
+
/** Visual size of the menu; every item inherits it. */
|
|
2526
2729
|
readonly size: import("@angular/core").InputSignal<EaSize>;
|
|
2527
|
-
|
|
2528
|
-
readonly
|
|
2529
|
-
readonly
|
|
2530
|
-
readonly
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
readonly
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
|
|
2537
|
-
|
|
2730
|
+
/** Max height of the scrollable list as a CSS length; tall menus scroll past it. */
|
|
2731
|
+
readonly maxHeight: import("@angular/core").InputSignal<string>;
|
|
2732
|
+
readonly disabled: import("@angular/core").InputSignal<boolean>;
|
|
2733
|
+
readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
2734
|
+
readonly id: import("@angular/core").InputSignal<string>;
|
|
2735
|
+
/** Accessible label for the menu, falling back to the active locale. */
|
|
2736
|
+
readonly resolvedAriaLabel: import("@angular/core").Signal<string>;
|
|
2737
|
+
readonly open: import("@angular/core").ModelSignal<boolean>;
|
|
2738
|
+
/** Fires when the menu opens. */
|
|
2739
|
+
readonly opened: import("@angular/core").OutputEmitterRef<void>;
|
|
2740
|
+
/** Fires when the menu closes. */
|
|
2741
|
+
readonly closed: import("@angular/core").OutputEmitterRef<void>;
|
|
2742
|
+
/** Trigger element currently anchoring the menu. Signal-typed so `<ea-popover>` reacts when it changes. */
|
|
2743
|
+
protected readonly triggerEl: import("@angular/core").WritableSignal<HTMLElement | undefined>;
|
|
2744
|
+
protected readonly asContextMenu: import("@angular/core").WritableSignal<boolean>;
|
|
2745
|
+
protected readonly anchorPoint: import("@angular/core").WritableSignal<PopoverAnchorPoint | null>;
|
|
2746
|
+
readonly activeItemId: import("@angular/core").WritableSignal<string | null>;
|
|
2747
|
+
constructor();
|
|
2748
|
+
/** Toggles the menu open state, anchoring it to the given trigger element. */
|
|
2749
|
+
toggleAt(triggerEl: HTMLElement): void;
|
|
2750
|
+
/** Opens the menu anchored to the given trigger element and focuses the first item. */
|
|
2751
|
+
openAt(triggerEl: HTMLElement): void;
|
|
2538
2752
|
/**
|
|
2539
|
-
*
|
|
2540
|
-
*
|
|
2541
|
-
*
|
|
2542
|
-
*
|
|
2753
|
+
* Opens the menu as the context menu of `anchorEl`: at `point` when given (a
|
|
2754
|
+
* pointer position, in viewport coordinates), else at its placement against the
|
|
2755
|
+
* anchor. Focuses the first item, closes on any click or context-menu request
|
|
2756
|
+
* outside the menu, and hands focus back to wherever it was on close.
|
|
2543
2757
|
*/
|
|
2544
|
-
|
|
2545
|
-
|
|
2546
|
-
/**
|
|
2547
|
-
|
|
2548
|
-
|
|
2549
|
-
|
|
2550
|
-
|
|
2551
|
-
|
|
2552
|
-
|
|
2553
|
-
|
|
2554
|
-
|
|
2555
|
-
|
|
2556
|
-
|
|
2557
|
-
|
|
2558
|
-
|
|
2559
|
-
|
|
2560
|
-
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
|
|
2573
|
-
|
|
2574
|
-
onRowActivate(row: T, event?: Event): void;
|
|
2575
|
-
onCellFocus(row: number, col: number): void;
|
|
2576
|
-
onGridKeydown(event: KeyboardEvent): void;
|
|
2577
|
-
private focusCell;
|
|
2578
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<DataTableComponent<any>, never>;
|
|
2579
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DataTableComponent<any>, "ea-data-table", never, {
|
|
2580
|
-
"columns": {
|
|
2581
|
-
"alias": "columns";
|
|
2582
|
-
"required": true;
|
|
2758
|
+
openAsContextMenu(anchorEl: HTMLElement, point?: PopoverAnchorPoint | null): void;
|
|
2759
|
+
private show;
|
|
2760
|
+
/**
|
|
2761
|
+
* Closes the menu if it is open. Pass `restoreFocus: true` to return focus
|
|
2762
|
+
* to the trigger element (used when closing via Escape or item activation;
|
|
2763
|
+
* not used on outside click, where the user has chosen a new focus target).
|
|
2764
|
+
*/
|
|
2765
|
+
close(restoreFocus?: boolean): void;
|
|
2766
|
+
/** Called by `<ea-popover>` when the user clicks outside the menu. */
|
|
2767
|
+
onPopoverCloseRequested(): void;
|
|
2768
|
+
private getEnabledItems;
|
|
2769
|
+
/**
|
|
2770
|
+
* `preventScroll: true` is critical here. The menu list is `position: fixed`
|
|
2771
|
+
* but its DOM ancestor is whatever element hosts the menu (often a sticky
|
|
2772
|
+
* header). When `.focus()` is called without `preventScroll`, Chromium uses
|
|
2773
|
+
* the focused element's DOM-tree position (inside the sticky ancestor) rather
|
|
2774
|
+
* than its rendered fixed position to decide whether to scroll, which on a
|
|
2775
|
+
* scrolled page nudges the document up by a few pixels per open, until the
|
|
2776
|
+
* trigger reaches the top edge. The same guard applies to keyboard navigation
|
|
2777
|
+
* and restoring focus on close.
|
|
2778
|
+
*/
|
|
2779
|
+
private focusFirstItem;
|
|
2780
|
+
private focusItem;
|
|
2781
|
+
onKeydown(event: KeyboardEvent): void;
|
|
2782
|
+
onEscape(event: Event): void;
|
|
2783
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MenuComponent, never>;
|
|
2784
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<MenuComponent, "ea-menu", never, {
|
|
2785
|
+
"placement": {
|
|
2786
|
+
"alias": "placement";
|
|
2787
|
+
"required": false;
|
|
2583
2788
|
"isSignal": true;
|
|
2584
2789
|
};
|
|
2585
|
-
"
|
|
2586
|
-
"alias": "
|
|
2587
|
-
"required":
|
|
2790
|
+
"size": {
|
|
2791
|
+
"alias": "size";
|
|
2792
|
+
"required": false;
|
|
2588
2793
|
"isSignal": true;
|
|
2589
2794
|
};
|
|
2590
|
-
"
|
|
2591
|
-
"alias": "
|
|
2795
|
+
"maxHeight": {
|
|
2796
|
+
"alias": "maxHeight";
|
|
2592
2797
|
"required": false;
|
|
2593
2798
|
"isSignal": true;
|
|
2594
2799
|
};
|
|
2595
|
-
"
|
|
2596
|
-
"alias": "
|
|
2800
|
+
"disabled": {
|
|
2801
|
+
"alias": "disabled";
|
|
2597
2802
|
"required": false;
|
|
2598
2803
|
"isSignal": true;
|
|
2599
2804
|
};
|
|
2600
|
-
"
|
|
2601
|
-
"alias": "
|
|
2805
|
+
"ariaLabel": {
|
|
2806
|
+
"alias": "aria-label";
|
|
2602
2807
|
"required": false;
|
|
2603
2808
|
"isSignal": true;
|
|
2604
2809
|
};
|
|
2605
|
-
"
|
|
2606
|
-
"alias": "
|
|
2810
|
+
"id": {
|
|
2811
|
+
"alias": "id";
|
|
2607
2812
|
"required": false;
|
|
2608
2813
|
"isSignal": true;
|
|
2609
2814
|
};
|
|
2610
|
-
"
|
|
2611
|
-
"alias": "
|
|
2815
|
+
"open": {
|
|
2816
|
+
"alias": "open";
|
|
2612
2817
|
"required": false;
|
|
2613
2818
|
"isSignal": true;
|
|
2614
2819
|
};
|
|
2615
|
-
|
|
2616
|
-
|
|
2617
|
-
|
|
2820
|
+
}, {
|
|
2821
|
+
"open": "openChange";
|
|
2822
|
+
"opened": "opened";
|
|
2823
|
+
"closed": "closed";
|
|
2824
|
+
}, never, ["*"], true, never>;
|
|
2825
|
+
}
|
|
2826
|
+
/** What a trigger such as `[eaContextMenuTrigger]` asked for when requesting the popover open. */
|
|
2827
|
+
export interface PopoverOpenRequest {
|
|
2828
|
+
/** Viewport point to open at, for the parent to bind to `[anchorPoint]`; `null` places it against the anchor. */
|
|
2829
|
+
readonly point: PopoverAnchorPoint | null;
|
|
2830
|
+
}
|
|
2831
|
+
/** ARIA role to apply to the popover surface. */
|
|
2832
|
+
export type PopoverRole = 'menu' | 'listbox' | 'dialog' | 'tooltip' | 'grid';
|
|
2833
|
+
/**
|
|
2834
|
+
* How the popover should respond to scroll / resize events while open.
|
|
2835
|
+
*
|
|
2836
|
+
* - `reposition` (default): re-measure the anchor and update the popover's
|
|
2837
|
+
* coordinates so it stays attached. Suitable for menus and tooltips.
|
|
2838
|
+
* - `close`: request close. Suitable for dropdown lists and the colour-picker
|
|
2839
|
+
* popover, where re-tracking a tall popover during a scroll feels intrusive.
|
|
2840
|
+
* - `ignore`: do nothing. The popover stays at its initial coordinates and
|
|
2841
|
+
* may visually detach from a scrolling anchor; useful when the anchor is
|
|
2842
|
+
* guaranteed not to move (e.g. inside a non-scrolling region).
|
|
2843
|
+
*/
|
|
2844
|
+
export type PopoverScrollBehavior = 'reposition' | 'close' | 'ignore';
|
|
2845
|
+
/** Width cap for a popover surface: px, or the anchor's own width. */
|
|
2846
|
+
export type PopoverMaxWidth = number | 'anchor';
|
|
2847
|
+
/**
|
|
2848
|
+
* Floating-element primitive. Renders projected content as `position: fixed`
|
|
2849
|
+
* anchored to an external element, with flip-on-overflow, viewport clamping,
|
|
2850
|
+
* outside-click and Escape dismissal, and SSR-safe scroll / resize handling.
|
|
2851
|
+
*
|
|
2852
|
+
* The primitive is intentionally low-level: a parent component drives the
|
|
2853
|
+
* `[open]` state and listens for `(closeRequested)` to mirror it back. Internal
|
|
2854
|
+
* library components (`<ea-menu>`, `<ea-dropdown>`, `<ea-color-picker>`,
|
|
2855
|
+
* `<ea-date-picker>`, `[eaTooltip]`) compose on top of it; downstream apps can
|
|
2856
|
+
* use it directly to build their own popover-based UI. Set `contextMenu` and
|
|
2857
|
+
* pair it with `[eaContextMenuTrigger]` to open it as a context menu.
|
|
2858
|
+
*
|
|
2859
|
+
* @example
|
|
2860
|
+
* ```html
|
|
2861
|
+
* <button #trigger (click)="open.set(!open())">Open</button>
|
|
2862
|
+
* <ea-popover [anchor]="trigger" [open]="open()" (closeRequested)="open.set(false)">
|
|
2863
|
+
* <div>Popover content</div>
|
|
2864
|
+
* </ea-popover>
|
|
2865
|
+
* ```
|
|
2866
|
+
*/
|
|
2867
|
+
export declare class PopoverComponent {
|
|
2868
|
+
private readonly destroyRef;
|
|
2869
|
+
private readonly press;
|
|
2870
|
+
private readonly surfaceEl;
|
|
2871
|
+
/** Anchor element the popover positions itself against. */
|
|
2872
|
+
readonly anchor: import("@angular/core").InputSignal<HTMLElement | ElementRef<HTMLElement> | undefined>;
|
|
2873
|
+
/** Whether the popover is currently open. */
|
|
2874
|
+
readonly open: import("@angular/core").InputSignal<boolean>;
|
|
2875
|
+
/** Where the popover attaches relative to the anchor. */
|
|
2876
|
+
readonly placement: import("@angular/core").InputSignal<PopoverPlacement>;
|
|
2877
|
+
/**
|
|
2878
|
+
* Viewport point to position against instead of the anchor's box, such as where
|
|
2879
|
+
* a context menu was requested. The placement applies around the point, which
|
|
2880
|
+
* keeps its offset from the anchor as the page scrolls.
|
|
2881
|
+
*/
|
|
2882
|
+
readonly anchorPoint: import("@angular/core").InputSignal<PopoverAnchorPoint | null>;
|
|
2883
|
+
/** ARIA role applied to the popover surface. */
|
|
2884
|
+
readonly role: import("@angular/core").InputSignal<PopoverRole>;
|
|
2885
|
+
/** Accessible label. Falls back to nothing; consumers should provide one when no visible heading is in the popover. */
|
|
2886
|
+
readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
2887
|
+
/** Id of the element that labels the popover surface, forwarded as `aria-labelledby`. */
|
|
2888
|
+
readonly ariaLabelledby: import("@angular/core").InputSignal<string | undefined>;
|
|
2889
|
+
/** Keep Tab and Shift+Tab cycling within the surface while open (dialog pattern). */
|
|
2890
|
+
readonly trapFocus: import("@angular/core").InputSignal<boolean>;
|
|
2891
|
+
/** DOM id for the surface so trigger elements can reference it via aria-controls. */
|
|
2892
|
+
readonly surfaceId: import("@angular/core").InputSignal<string>;
|
|
2893
|
+
/**
|
|
2894
|
+
* Gap in px between the anchor and the popover. Defaults to 2 so an open panel
|
|
2895
|
+
* clears the anchor's active focus ring instead of sitting flush over it.
|
|
2896
|
+
*/
|
|
2897
|
+
readonly offset: import("@angular/core").InputSignal<number>;
|
|
2898
|
+
/** Flip to the opposite side when the requested side overflows the viewport. */
|
|
2899
|
+
readonly flip: import("@angular/core").InputSignal<boolean>;
|
|
2900
|
+
/** Clamp the popover inside the viewport when it would otherwise overflow. */
|
|
2901
|
+
readonly clamp: import("@angular/core").InputSignal<boolean>;
|
|
2902
|
+
/** Set the popover's `min-width` to match the anchor's width (dropdown pattern). */
|
|
2903
|
+
readonly matchAnchorWidth: import("@angular/core").InputSignal<boolean>;
|
|
2904
|
+
/**
|
|
2905
|
+
* Widest the surface may grow: a px value, or `anchor` to cap it at the
|
|
2906
|
+
* anchor's own width so long content truncates instead of widening the panel.
|
|
2907
|
+
*/
|
|
2908
|
+
readonly maxWidth: import("@angular/core").InputSignal<PopoverMaxWidth | undefined>;
|
|
2909
|
+
/** Close on click outside the popover and the anchor. */
|
|
2910
|
+
readonly closeOnOutsideClick: import("@angular/core").InputSignal<boolean>;
|
|
2911
|
+
/** Close on Escape. */
|
|
2912
|
+
readonly closeOnEscape: import("@angular/core").InputSignal<boolean>;
|
|
2913
|
+
/** What to do on scroll / resize while open. */
|
|
2914
|
+
readonly scrollBehavior: import("@angular/core").InputSignal<PopoverScrollBehavior>;
|
|
2915
|
+
/**
|
|
2916
|
+
* Behaves as a context menu: moves focus to the first focusable element once
|
|
2917
|
+
* shown and hands it back on close, and treats clicks on the anchor and
|
|
2918
|
+
* context-menu requests anywhere outside the surface as outside clicks.
|
|
2919
|
+
*/
|
|
2920
|
+
readonly contextMenu: import("@angular/core").InputSignal<boolean>;
|
|
2921
|
+
/** Requested close. The parent should mirror this into `[open]`. */
|
|
2922
|
+
readonly closeRequested: import("@angular/core").OutputEmitterRef<void>;
|
|
2923
|
+
/**
|
|
2924
|
+
* Requested open, from a trigger such as `[eaContextMenuTrigger]`. The parent
|
|
2925
|
+
* should mirror this into `[open]`, and the point into `[anchorPoint]`.
|
|
2926
|
+
*/
|
|
2927
|
+
readonly openRequested: import("@angular/core").OutputEmitterRef<PopoverOpenRequest>;
|
|
2928
|
+
private readonly position;
|
|
2929
|
+
private latched;
|
|
2930
|
+
private pointOffset;
|
|
2931
|
+
private focusReturn;
|
|
2932
|
+
/** True placement after flip, for class-based styling (e.g. arrow direction). */
|
|
2933
|
+
readonly effectivePlacement: import("@angular/core").Signal<PopoverPlacement>;
|
|
2934
|
+
/** Latches true once the post-rAF reposition has run, so the surface is
|
|
2935
|
+
* only revealed after its dimensions are guaranteed stable. Reset on close. */
|
|
2936
|
+
private readonly stable;
|
|
2937
|
+
/** True once the first `reposition()` has resolved a placement on a
|
|
2938
|
+
* laid-out surface. Drives the `--positioned` class. */
|
|
2939
|
+
readonly isPositioned: import("@angular/core").Signal<boolean>;
|
|
2940
|
+
/** Class list for the surface. Computed in TS so the placement key (with
|
|
2941
|
+
* its interpolated suffix) and the positioned modifier compose cleanly. */
|
|
2942
|
+
readonly surfaceClass: import("@angular/core").Signal<string>;
|
|
2943
|
+
/** Inline style applied to the surface element. */
|
|
2944
|
+
readonly surfaceStyle: import("@angular/core").Signal<Record<string, string>>;
|
|
2945
|
+
constructor();
|
|
2946
|
+
requestOpen(point: PopoverAnchorPoint | null): void;
|
|
2947
|
+
private resolveAnchor;
|
|
2948
|
+
private reposition;
|
|
2949
|
+
onDocumentClick(event: MouseEvent): void;
|
|
2950
|
+
onSurfaceKeydown(event: KeyboardEvent): void;
|
|
2951
|
+
private focusableElements;
|
|
2952
|
+
private focusFirstElement;
|
|
2953
|
+
private trackFocusReturn;
|
|
2954
|
+
onEscape(event: Event): void;
|
|
2955
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PopoverComponent, never>;
|
|
2956
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PopoverComponent, "ea-popover", never, {
|
|
2957
|
+
"anchor": {
|
|
2958
|
+
"alias": "anchor";
|
|
2959
|
+
"required": true;
|
|
2618
2960
|
"isSignal": true;
|
|
2619
2961
|
};
|
|
2620
|
-
"
|
|
2621
|
-
"alias": "
|
|
2962
|
+
"open": {
|
|
2963
|
+
"alias": "open";
|
|
2622
2964
|
"required": false;
|
|
2623
2965
|
"isSignal": true;
|
|
2624
2966
|
};
|
|
2625
|
-
"
|
|
2626
|
-
"alias": "
|
|
2967
|
+
"placement": {
|
|
2968
|
+
"alias": "placement";
|
|
2627
2969
|
"required": false;
|
|
2628
2970
|
"isSignal": true;
|
|
2629
2971
|
};
|
|
2630
|
-
"
|
|
2631
|
-
"alias": "
|
|
2972
|
+
"anchorPoint": {
|
|
2973
|
+
"alias": "anchorPoint";
|
|
2632
2974
|
"required": false;
|
|
2633
2975
|
"isSignal": true;
|
|
2634
2976
|
};
|
|
2635
|
-
"
|
|
2636
|
-
"alias": "
|
|
2977
|
+
"role": {
|
|
2978
|
+
"alias": "role";
|
|
2637
2979
|
"required": false;
|
|
2638
2980
|
"isSignal": true;
|
|
2639
2981
|
};
|
|
2640
|
-
"
|
|
2641
|
-
"alias": "
|
|
2982
|
+
"ariaLabel": {
|
|
2983
|
+
"alias": "aria-label";
|
|
2642
2984
|
"required": false;
|
|
2643
2985
|
"isSignal": true;
|
|
2644
2986
|
};
|
|
2645
|
-
"
|
|
2646
|
-
"alias": "
|
|
2987
|
+
"ariaLabelledby": {
|
|
2988
|
+
"alias": "aria-labelledby";
|
|
2647
2989
|
"required": false;
|
|
2648
2990
|
"isSignal": true;
|
|
2649
2991
|
};
|
|
2650
|
-
"
|
|
2651
|
-
"alias": "
|
|
2992
|
+
"trapFocus": {
|
|
2993
|
+
"alias": "trapFocus";
|
|
2652
2994
|
"required": false;
|
|
2653
2995
|
"isSignal": true;
|
|
2654
2996
|
};
|
|
2655
|
-
"
|
|
2656
|
-
"alias": "
|
|
2997
|
+
"surfaceId": {
|
|
2998
|
+
"alias": "surfaceId";
|
|
2657
2999
|
"required": false;
|
|
2658
3000
|
"isSignal": true;
|
|
2659
3001
|
};
|
|
2660
|
-
"
|
|
2661
|
-
"alias": "
|
|
3002
|
+
"offset": {
|
|
3003
|
+
"alias": "offset";
|
|
2662
3004
|
"required": false;
|
|
2663
3005
|
"isSignal": true;
|
|
2664
3006
|
};
|
|
2665
|
-
"
|
|
2666
|
-
"alias": "
|
|
3007
|
+
"flip": {
|
|
3008
|
+
"alias": "flip";
|
|
2667
3009
|
"required": false;
|
|
2668
3010
|
"isSignal": true;
|
|
2669
3011
|
};
|
|
2670
|
-
|
|
2671
|
-
|
|
2672
|
-
"sorted": "sorted";
|
|
2673
|
-
"rowActivate": "rowActivate";
|
|
2674
|
-
}, ["noDataTemplate"], ["ea-paginator"], true, never>;
|
|
2675
|
-
}
|
|
2676
|
-
/** Visual size of each digit cell. */
|
|
2677
|
-
export type CodeInputSize = EaSize;
|
|
2678
|
-
/**
|
|
2679
|
-
* Verification code entry made up of one input per digit. Auto-advances on
|
|
2680
|
-
* input, supports paste of the full code at once, and integrates with Angular
|
|
2681
|
-
* forms via `ControlValueAccessor`.
|
|
2682
|
-
*/
|
|
2683
|
-
export declare class CodeInputComponent implements ControlValueAccessor {
|
|
2684
|
-
readonly digitEls: import("@angular/core").Signal<readonly ElementRef<HTMLInputElement>[]>;
|
|
2685
|
-
protected readonly i18n: EagamiI18nService;
|
|
2686
|
-
readonly label: import("@angular/core").InputSignal<string | undefined>;
|
|
2687
|
-
/** Optional icon component rendered before the label text. */
|
|
2688
|
-
readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
|
|
2689
|
-
/** Placeholder text spread one character per cell (cell i shows character i). */
|
|
2690
|
-
readonly placeholder: import("@angular/core").InputSignal<string>;
|
|
2691
|
-
readonly length: import("@angular/core").InputSignal<number>;
|
|
2692
|
-
readonly size: import("@angular/core").InputSignal<EaSize>;
|
|
2693
|
-
readonly hint: import("@angular/core").InputSignal<string | undefined>;
|
|
2694
|
-
readonly errorMsg: import("@angular/core").InputSignal<string | undefined>;
|
|
2695
|
-
/** Per-validator-key message overrides for a bound form control (e.g. `{ required: '...' }`). */
|
|
2696
|
-
readonly errorMessages: import("@angular/core").InputSignal<Partial<Record<string, string>> | undefined>;
|
|
2697
|
-
readonly disabled: import("@angular/core").InputSignal<boolean>;
|
|
2698
|
-
readonly readonly: import("@angular/core").InputSignal<boolean>;
|
|
2699
|
-
readonly required: import("@angular/core").InputSignal<boolean>;
|
|
2700
|
-
/** Allow any non-whitespace character; when false (default) only digits are accepted. */
|
|
2701
|
-
readonly allowAllChars: import("@angular/core").InputSignal<boolean>;
|
|
2702
|
-
readonly id: import("@angular/core").InputSignal<string>;
|
|
2703
|
-
readonly value: import("@angular/core").ModelSignal<string>;
|
|
2704
|
-
readonly focusedIndex: import("@angular/core").WritableSignal<number>;
|
|
2705
|
-
private readonly _formDisabled;
|
|
2706
|
-
/** Fires with the full code once every digit has been entered. */
|
|
2707
|
-
readonly completed: import("@angular/core").OutputEmitterRef<string>;
|
|
2708
|
-
private onChange;
|
|
2709
|
-
private onTouched;
|
|
2710
|
-
readonly isDisabled: import("@angular/core").Signal<boolean>;
|
|
2711
|
-
private readonly errorState;
|
|
2712
|
-
readonly errorText: import("@angular/core").Signal<string | null>;
|
|
2713
|
-
readonly hasError: import("@angular/core").Signal<boolean>;
|
|
2714
|
-
readonly showError: import("@angular/core").Signal<boolean>;
|
|
2715
|
-
readonly showHint: import("@angular/core").Signal<boolean>;
|
|
2716
|
-
readonly digits: import("@angular/core").Signal<string[]>;
|
|
2717
|
-
readonly placeholders: import("@angular/core").Signal<string[]>;
|
|
2718
|
-
readonly indices: import("@angular/core").Signal<number[]>;
|
|
2719
|
-
writeValue(val: string): void;
|
|
2720
|
-
registerOnChange(fn: (value: string) => void): void;
|
|
2721
|
-
registerOnTouched(fn: () => void): void;
|
|
2722
|
-
setDisabledState(isDisabled: boolean): void;
|
|
2723
|
-
handleInput(event: Event, index: number): void;
|
|
2724
|
-
handleKeydown(event: KeyboardEvent, index: number): void;
|
|
2725
|
-
handlePaste(event: ClipboardEvent): void;
|
|
2726
|
-
handleFocus(index: number): void;
|
|
2727
|
-
handleBlur(): void;
|
|
2728
|
-
/** Moves keyboard focus to the next empty digit (or the last one when full). */
|
|
2729
|
-
focus(): void;
|
|
2730
|
-
private sanitize;
|
|
2731
|
-
private focusDigit;
|
|
2732
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<CodeInputComponent, never>;
|
|
2733
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<CodeInputComponent, "ea-code-input", never, {
|
|
2734
|
-
"label": {
|
|
2735
|
-
"alias": "label";
|
|
3012
|
+
"clamp": {
|
|
3013
|
+
"alias": "clamp";
|
|
2736
3014
|
"required": false;
|
|
2737
3015
|
"isSignal": true;
|
|
2738
3016
|
};
|
|
2739
|
-
"
|
|
2740
|
-
"alias": "
|
|
3017
|
+
"matchAnchorWidth": {
|
|
3018
|
+
"alias": "matchAnchorWidth";
|
|
2741
3019
|
"required": false;
|
|
2742
3020
|
"isSignal": true;
|
|
2743
3021
|
};
|
|
2744
|
-
"
|
|
2745
|
-
"alias": "
|
|
3022
|
+
"maxWidth": {
|
|
3023
|
+
"alias": "maxWidth";
|
|
2746
3024
|
"required": false;
|
|
2747
3025
|
"isSignal": true;
|
|
2748
3026
|
};
|
|
2749
|
-
"
|
|
2750
|
-
"alias": "
|
|
3027
|
+
"closeOnOutsideClick": {
|
|
3028
|
+
"alias": "closeOnOutsideClick";
|
|
2751
3029
|
"required": false;
|
|
2752
3030
|
"isSignal": true;
|
|
2753
3031
|
};
|
|
2754
|
-
"
|
|
2755
|
-
"alias": "
|
|
3032
|
+
"closeOnEscape": {
|
|
3033
|
+
"alias": "closeOnEscape";
|
|
2756
3034
|
"required": false;
|
|
2757
3035
|
"isSignal": true;
|
|
2758
3036
|
};
|
|
2759
|
-
"
|
|
2760
|
-
"alias": "
|
|
3037
|
+
"scrollBehavior": {
|
|
3038
|
+
"alias": "scrollBehavior";
|
|
2761
3039
|
"required": false;
|
|
2762
3040
|
"isSignal": true;
|
|
2763
3041
|
};
|
|
2764
|
-
"
|
|
2765
|
-
"alias": "
|
|
3042
|
+
"contextMenu": {
|
|
3043
|
+
"alias": "contextMenu";
|
|
2766
3044
|
"required": false;
|
|
2767
3045
|
"isSignal": true;
|
|
2768
3046
|
};
|
|
2769
|
-
|
|
2770
|
-
|
|
3047
|
+
}, {
|
|
3048
|
+
"closeRequested": "closeRequested";
|
|
3049
|
+
"openRequested": "openRequested";
|
|
3050
|
+
}, never, ["*"], true, never>;
|
|
3051
|
+
}
|
|
3052
|
+
/**
|
|
3053
|
+
* Where `[eaContextMenuTrigger]` opens its target: at the pointer (below the
|
|
3054
|
+
* focused element for a keyboard request), or at the target's own placement
|
|
3055
|
+
* against the host.
|
|
3056
|
+
*/
|
|
3057
|
+
export type ContextMenuPosition = 'pointer' | 'anchor';
|
|
3058
|
+
/** An overlay `[eaContextMenuTrigger]` can open as a context menu. */
|
|
3059
|
+
export type ContextMenuTarget = MenuComponent | PopoverComponent;
|
|
3060
|
+
/**
|
|
3061
|
+
* Opens an `<ea-menu>` or `<ea-popover>` as the context menu of its host: on a
|
|
3062
|
+
* right-click or long press, or from the keyboard with Shift+F10 or the
|
|
3063
|
+
* context-menu key while focus is on the host or inside it. The browser's own
|
|
3064
|
+
* menu is suppressed only when the target opens, so a `null` target, a disabled
|
|
3065
|
+
* menu, or a request something inside the host has already handled leaves it be.
|
|
3066
|
+
*
|
|
3067
|
+
* A menu opens straight away. A popover's parent drives its `[open]` state, so it
|
|
3068
|
+
* emits `openRequested` with the point to bind to `[anchorPoint]` instead; give it
|
|
3069
|
+
* `[contextMenu]="true"` so it takes focus and dismisses like a context menu.
|
|
3070
|
+
*
|
|
3071
|
+
* @example
|
|
3072
|
+
* ```html
|
|
3073
|
+
* <article [eaContextMenuTrigger]="actions">Right-click me</article>
|
|
3074
|
+
* <ea-menu #actions>
|
|
3075
|
+
* <ea-menu-item>Rename</ea-menu-item>
|
|
3076
|
+
* </ea-menu>
|
|
3077
|
+
* ```
|
|
3078
|
+
*/
|
|
3079
|
+
export declare class ContextMenuTriggerDirective {
|
|
3080
|
+
private readonly el;
|
|
3081
|
+
/** The menu or popover to open; `null` or `undefined` leaves the browser's own menu. */
|
|
3082
|
+
readonly target: import("@angular/core").InputSignal<ContextMenuTarget | null | undefined>;
|
|
3083
|
+
/**
|
|
3084
|
+
* Opens at the pointer, or below the focused element for a keyboard request;
|
|
3085
|
+
* `anchor` opens at the target's placement against the host instead.
|
|
3086
|
+
*/
|
|
3087
|
+
readonly contextMenuPosition: import("@angular/core").InputSignal<ContextMenuPosition>;
|
|
3088
|
+
onContextMenu(event: MouseEvent): void;
|
|
3089
|
+
onKeydown(event: KeyboardEvent): void;
|
|
3090
|
+
private request;
|
|
3091
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ContextMenuTriggerDirective, never>;
|
|
3092
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<ContextMenuTriggerDirective, "[eaContextMenuTrigger]", never, {
|
|
3093
|
+
"target": {
|
|
3094
|
+
"alias": "eaContextMenuTrigger";
|
|
2771
3095
|
"required": false;
|
|
2772
3096
|
"isSignal": true;
|
|
2773
3097
|
};
|
|
2774
|
-
"
|
|
2775
|
-
"alias": "
|
|
3098
|
+
"contextMenuPosition": {
|
|
3099
|
+
"alias": "contextMenuPosition";
|
|
2776
3100
|
"required": false;
|
|
2777
3101
|
"isSignal": true;
|
|
2778
3102
|
};
|
|
2779
|
-
|
|
2780
|
-
|
|
2781
|
-
|
|
3103
|
+
}, {}, never, never, true, never>;
|
|
3104
|
+
}
|
|
3105
|
+
/** Vertical density preset for table rows and header cells. */
|
|
3106
|
+
export type DataTableDensity = 'compact' | 'comfortable' | 'spacious';
|
|
3107
|
+
/** Visual size of the table's text, paddings, and icons. */
|
|
3108
|
+
export type DataTableSize = EaSize;
|
|
3109
|
+
/** Sort direction; `null` means no sort is applied. */
|
|
3110
|
+
export type DataTableSortDirection = 'asc' | 'desc' | null;
|
|
3111
|
+
/** Column definition for the data table, including optional cell/header templates. */
|
|
3112
|
+
export interface DataTableColumn<T = Record<string, unknown>> {
|
|
3113
|
+
key: string;
|
|
3114
|
+
label: string;
|
|
3115
|
+
sortable?: boolean;
|
|
3116
|
+
align?: 'left' | 'center' | 'right';
|
|
3117
|
+
width?: string;
|
|
3118
|
+
format?: (value: unknown) => string;
|
|
3119
|
+
cellTemplate?: TemplateRef<{
|
|
3120
|
+
$implicit: T;
|
|
3121
|
+
value: unknown;
|
|
3122
|
+
}>;
|
|
3123
|
+
headerTemplate?: TemplateRef<{
|
|
3124
|
+
$implicit: DataTableColumn<T>;
|
|
3125
|
+
}>;
|
|
3126
|
+
/** Shown in this column's cells while the table is `loading`, in place of a skeleton bar. */
|
|
3127
|
+
placeholderTemplate?: TemplateRef<{
|
|
3128
|
+
$implicit: DataTableColumn<T>;
|
|
3129
|
+
index: number;
|
|
3130
|
+
}>;
|
|
3131
|
+
}
|
|
3132
|
+
/** A body row's context-menu request, as `rowContextMenu` emits it. */
|
|
3133
|
+
export interface DataTableRowContextMenuEvent<T = Record<string, unknown>> {
|
|
3134
|
+
/** The row's data. */
|
|
3135
|
+
readonly row: T;
|
|
3136
|
+
/** The row's `<tr>`, for anchoring a menu or popover to the row. */
|
|
3137
|
+
readonly rowElement: HTMLElement;
|
|
3138
|
+
/** Where to open a menu: the pointer, or below the focused row or cell for a keyboard request. */
|
|
3139
|
+
readonly point: PopoverAnchorPoint;
|
|
3140
|
+
/** The originating event; call `preventDefault()` on it to suppress the browser's own menu. */
|
|
3141
|
+
readonly event: MouseEvent | KeyboardEvent;
|
|
3142
|
+
}
|
|
3143
|
+
/** Current sort state: which column is sorted and in which direction. */
|
|
3144
|
+
export interface DataTableSortState {
|
|
3145
|
+
column: string;
|
|
3146
|
+
direction: DataTableSortDirection;
|
|
3147
|
+
}
|
|
3148
|
+
/**
|
|
3149
|
+
* Table for tabular data with sortable columns, sticky headers, and density
|
|
3150
|
+
* presets. Supports striping, borders, hoverable rows, and custom cell or
|
|
3151
|
+
* header templates via `ng-template`. Sort state is exposed as a two-way
|
|
3152
|
+
* `model()` binding.
|
|
3153
|
+
*/
|
|
3154
|
+
export declare class DataTableComponent<T = Record<string, unknown>> {
|
|
3155
|
+
private readonly i18n;
|
|
3156
|
+
private readonly host;
|
|
3157
|
+
private readonly activeCell;
|
|
3158
|
+
private static readonly PAGE_JUMP;
|
|
3159
|
+
private keyboardRequestPending;
|
|
3160
|
+
readonly columns: import("@angular/core").InputSignal<DataTableColumn<T>[]>;
|
|
3161
|
+
readonly data: import("@angular/core").InputSignal<T[]>;
|
|
3162
|
+
/**
|
|
3163
|
+
* Rows holding each column's widest content. They are laid out but never shown,
|
|
3164
|
+
* so column widths come from them rather than from whichever rows are in `data`,
|
|
3165
|
+
* and stay put across pages and while data loads. Moot with `stickyHeader`, whose
|
|
3166
|
+
* columns share the width equally unless given a `width`.
|
|
3167
|
+
*/
|
|
3168
|
+
readonly sizingRows: import("@angular/core").InputSignal<T[]>;
|
|
3169
|
+
/** Accessible name for the table, announced when it takes focus as a grid. */
|
|
3170
|
+
readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
3171
|
+
/** Visible caption rendered above the table; also names it for assistive technology. */
|
|
3172
|
+
readonly caption: import("@angular/core").InputSignal<string | undefined>;
|
|
3173
|
+
readonly trackBy: import("@angular/core").InputSignal<keyof T | undefined>;
|
|
3174
|
+
readonly density: import("@angular/core").InputSignal<DataTableDensity>;
|
|
3175
|
+
/** Visual size of the table; density paddings and icons scale with it. */
|
|
3176
|
+
readonly size: import("@angular/core").InputSignal<EaSize>;
|
|
3177
|
+
readonly stickyHeader: import("@angular/core").InputSignal<boolean>;
|
|
3178
|
+
readonly striped: import("@angular/core").InputSignal<boolean>;
|
|
3179
|
+
readonly hoverable: import("@angular/core").InputSignal<boolean>;
|
|
3180
|
+
readonly bordered: import("@angular/core").InputSignal<boolean>;
|
|
3181
|
+
/** Keeps every cell on one line, so a narrow viewport scrolls the table sideways instead of wrapping its text. */
|
|
3182
|
+
readonly nowrap: import("@angular/core").InputSignal<boolean>;
|
|
3183
|
+
readonly noDataText: import("@angular/core").InputSignal<string | undefined>;
|
|
3184
|
+
/** Enables grid keyboard navigation: `role="grid"`, roving tabindex, and arrow-key cell movement. */
|
|
3185
|
+
readonly navigable: import("@angular/core").InputSignal<boolean>;
|
|
3186
|
+
/** Marks body rows as clickable: shows a pointer cursor and emits `rowActivate` on click or Enter/Space. Independent of `hoverable` and `navigable`. */
|
|
3187
|
+
readonly clickable: import("@angular/core").InputSignal<boolean>;
|
|
3188
|
+
/**
|
|
3189
|
+
* Gives a row its link target, or `null` for none. Every cell of the row then holds
|
|
3190
|
+
* a real link, so the browser shows the target on hover and a modified click opens
|
|
3191
|
+
* it elsewhere, while a plain click still emits `rowActivate` for the app to route.
|
|
3192
|
+
* A row given `null` is inert: no link, hover highlight, focus or activation.
|
|
3193
|
+
*/
|
|
3194
|
+
readonly rowHref: import("@angular/core").InputSignal<((row: T) => string | null) | undefined>;
|
|
3195
|
+
/**
|
|
3196
|
+
* Shows placeholder rows in place of the data while it loads, and marks the table
|
|
3197
|
+
* busy for assistive technology. A placeholder row stands as tall as a row of text,
|
|
3198
|
+
* and `sizingRows` keep the columns at their loaded widths.
|
|
3199
|
+
*/
|
|
3200
|
+
readonly loading: import("@angular/core").InputSignal<boolean>;
|
|
3201
|
+
/** How many placeholder rows to show while `loading`. */
|
|
3202
|
+
readonly loadingRowCount: import("@angular/core").InputSignal<number>;
|
|
3203
|
+
readonly sort: import("@angular/core").ModelSignal<DataTableSortState>;
|
|
3204
|
+
/** Fires whenever the sort column or direction changes via header click. */
|
|
3205
|
+
readonly sorted: import("@angular/core").OutputEmitterRef<DataTableSortState>;
|
|
3206
|
+
/** Fires with the row's data when a body row is activated by click or Enter/Space while `clickable` is set. */
|
|
3207
|
+
readonly rowActivate: import("@angular/core").OutputEmitterRef<T>;
|
|
3208
|
+
/**
|
|
3209
|
+
* Fires when a body row's context menu is requested: by right-click or long press,
|
|
3210
|
+
* or by Shift+F10 or the context-menu key with focus in the row. Call
|
|
3211
|
+
* `event.preventDefault()` when opening a menu of your own.
|
|
3212
|
+
*/
|
|
3213
|
+
readonly rowContextMenu: import("@angular/core").OutputEmitterRef<DataTableRowContextMenuEvent<T>>;
|
|
3214
|
+
readonly noDataTemplate: import("@angular/core").Signal<TemplateRef<unknown> | undefined>;
|
|
3215
|
+
/** Empty-state text, falling back to the active locale's translation. */
|
|
3216
|
+
readonly resolvedNoDataText: import("@angular/core").Signal<string>;
|
|
3217
|
+
readonly placeholderRows: import("@angular/core").Signal<number[]>;
|
|
3218
|
+
private readonly bodyRowCount;
|
|
3219
|
+
readonly hostClasses: import("@angular/core").Signal<{
|
|
3220
|
+
[x: string]: boolean;
|
|
3221
|
+
'ea-data-table--sticky': boolean;
|
|
3222
|
+
'ea-data-table--striped': boolean;
|
|
3223
|
+
'ea-data-table--hoverable': boolean;
|
|
3224
|
+
'ea-data-table--bordered': boolean;
|
|
3225
|
+
'ea-data-table--nowrap': boolean;
|
|
3226
|
+
'ea-data-table--navigable': boolean;
|
|
3227
|
+
'ea-data-table--clickable': boolean;
|
|
3228
|
+
'ea-data-table--linked': boolean;
|
|
3229
|
+
}>;
|
|
3230
|
+
constructor();
|
|
3231
|
+
readonly sortedData: import("@angular/core").Signal<T[]>;
|
|
3232
|
+
getCellValue(row: T, key: string): unknown;
|
|
3233
|
+
onHeaderClick(col: DataTableColumn<T>): void;
|
|
3234
|
+
trackByFn(_index: number, item: T): unknown;
|
|
3235
|
+
headerTabindex(colIndex: number): number | null;
|
|
3236
|
+
onHeaderKeydown(event: Event, col: DataTableColumn<T>): void;
|
|
3237
|
+
bodyCellTabindex(row: number, colIndex: number): number | null;
|
|
3238
|
+
isInert(row: T): boolean;
|
|
3239
|
+
rowTabindex(row: T): number | null;
|
|
3240
|
+
onRowActivate(row: T, event?: Event): void;
|
|
3241
|
+
onRowContextMenu(row: T, rowElement: HTMLElement, event: MouseEvent | KeyboardEvent): void;
|
|
3242
|
+
clearKeyboardRequest(): void;
|
|
3243
|
+
onCellFocus(row: number, col: number): void;
|
|
3244
|
+
onGridKeydown(event: KeyboardEvent): void;
|
|
3245
|
+
private focusCell;
|
|
3246
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DataTableComponent<any>, never>;
|
|
3247
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DataTableComponent<any>, "ea-data-table", never, {
|
|
3248
|
+
"columns": {
|
|
3249
|
+
"alias": "columns";
|
|
3250
|
+
"required": true;
|
|
2782
3251
|
"isSignal": true;
|
|
2783
3252
|
};
|
|
2784
|
-
"
|
|
2785
|
-
"alias": "
|
|
2786
|
-
"required":
|
|
3253
|
+
"data": {
|
|
3254
|
+
"alias": "data";
|
|
3255
|
+
"required": true;
|
|
2787
3256
|
"isSignal": true;
|
|
2788
3257
|
};
|
|
2789
|
-
"
|
|
2790
|
-
"alias": "
|
|
3258
|
+
"sizingRows": {
|
|
3259
|
+
"alias": "sizingRows";
|
|
2791
3260
|
"required": false;
|
|
2792
3261
|
"isSignal": true;
|
|
2793
3262
|
};
|
|
2794
|
-
"
|
|
2795
|
-
"alias": "
|
|
3263
|
+
"ariaLabel": {
|
|
3264
|
+
"alias": "aria-label";
|
|
2796
3265
|
"required": false;
|
|
2797
3266
|
"isSignal": true;
|
|
2798
3267
|
};
|
|
2799
|
-
"
|
|
2800
|
-
"alias": "
|
|
3268
|
+
"caption": {
|
|
3269
|
+
"alias": "caption";
|
|
2801
3270
|
"required": false;
|
|
2802
3271
|
"isSignal": true;
|
|
2803
3272
|
};
|
|
2804
|
-
|
|
2805
|
-
|
|
3273
|
+
"trackBy": {
|
|
3274
|
+
"alias": "trackBy";
|
|
3275
|
+
"required": false;
|
|
3276
|
+
"isSignal": true;
|
|
3277
|
+
};
|
|
3278
|
+
"density": {
|
|
3279
|
+
"alias": "density";
|
|
3280
|
+
"required": false;
|
|
3281
|
+
"isSignal": true;
|
|
3282
|
+
};
|
|
3283
|
+
"size": {
|
|
3284
|
+
"alias": "size";
|
|
3285
|
+
"required": false;
|
|
3286
|
+
"isSignal": true;
|
|
3287
|
+
};
|
|
3288
|
+
"stickyHeader": {
|
|
3289
|
+
"alias": "stickyHeader";
|
|
3290
|
+
"required": false;
|
|
3291
|
+
"isSignal": true;
|
|
3292
|
+
};
|
|
3293
|
+
"striped": {
|
|
3294
|
+
"alias": "striped";
|
|
3295
|
+
"required": false;
|
|
3296
|
+
"isSignal": true;
|
|
3297
|
+
};
|
|
3298
|
+
"hoverable": {
|
|
3299
|
+
"alias": "hoverable";
|
|
3300
|
+
"required": false;
|
|
3301
|
+
"isSignal": true;
|
|
3302
|
+
};
|
|
3303
|
+
"bordered": {
|
|
3304
|
+
"alias": "bordered";
|
|
3305
|
+
"required": false;
|
|
3306
|
+
"isSignal": true;
|
|
3307
|
+
};
|
|
3308
|
+
"nowrap": {
|
|
3309
|
+
"alias": "nowrap";
|
|
3310
|
+
"required": false;
|
|
3311
|
+
"isSignal": true;
|
|
3312
|
+
};
|
|
3313
|
+
"noDataText": {
|
|
3314
|
+
"alias": "noDataText";
|
|
3315
|
+
"required": false;
|
|
3316
|
+
"isSignal": true;
|
|
3317
|
+
};
|
|
3318
|
+
"navigable": {
|
|
3319
|
+
"alias": "navigable";
|
|
3320
|
+
"required": false;
|
|
3321
|
+
"isSignal": true;
|
|
3322
|
+
};
|
|
3323
|
+
"clickable": {
|
|
3324
|
+
"alias": "clickable";
|
|
3325
|
+
"required": false;
|
|
3326
|
+
"isSignal": true;
|
|
3327
|
+
};
|
|
3328
|
+
"rowHref": {
|
|
3329
|
+
"alias": "rowHref";
|
|
3330
|
+
"required": false;
|
|
3331
|
+
"isSignal": true;
|
|
3332
|
+
};
|
|
3333
|
+
"loading": {
|
|
3334
|
+
"alias": "loading";
|
|
3335
|
+
"required": false;
|
|
3336
|
+
"isSignal": true;
|
|
3337
|
+
};
|
|
3338
|
+
"loadingRowCount": {
|
|
3339
|
+
"alias": "loadingRowCount";
|
|
3340
|
+
"required": false;
|
|
3341
|
+
"isSignal": true;
|
|
3342
|
+
};
|
|
3343
|
+
"sort": {
|
|
3344
|
+
"alias": "sort";
|
|
3345
|
+
"required": false;
|
|
3346
|
+
"isSignal": true;
|
|
3347
|
+
};
|
|
3348
|
+
}, {
|
|
3349
|
+
"sort": "sortChange";
|
|
3350
|
+
"sorted": "sorted";
|
|
3351
|
+
"rowActivate": "rowActivate";
|
|
3352
|
+
"rowContextMenu": "rowContextMenu";
|
|
3353
|
+
}, ["noDataTemplate"], ["ea-paginator"], true, never>;
|
|
3354
|
+
}
|
|
3355
|
+
/** Visual size of each digit cell. */
|
|
3356
|
+
export type CodeInputSize = EaSize;
|
|
3357
|
+
/**
|
|
3358
|
+
* Verification code entry made up of one input per digit. Auto-advances on
|
|
3359
|
+
* input, supports paste of the full code at once, and integrates with Angular
|
|
3360
|
+
* forms via `ControlValueAccessor`.
|
|
3361
|
+
*/
|
|
3362
|
+
export declare class CodeInputComponent implements ControlValueAccessor {
|
|
3363
|
+
readonly digitEls: import("@angular/core").Signal<readonly ElementRef<HTMLInputElement>[]>;
|
|
3364
|
+
protected readonly i18n: EagamiI18nService;
|
|
3365
|
+
readonly label: import("@angular/core").InputSignal<string | undefined>;
|
|
3366
|
+
/** Optional icon component rendered before the label text. */
|
|
3367
|
+
readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
|
|
3368
|
+
/** Help revealed by an info button beside the label, as plain text or a template. */
|
|
3369
|
+
readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
|
|
3370
|
+
/** Placeholder text spread one character per cell (cell i shows character i). */
|
|
3371
|
+
readonly placeholder: import("@angular/core").InputSignal<string>;
|
|
3372
|
+
readonly length: import("@angular/core").InputSignal<number>;
|
|
3373
|
+
readonly size: import("@angular/core").InputSignal<EaSize>;
|
|
3374
|
+
readonly hint: import("@angular/core").InputSignal<string | undefined>;
|
|
3375
|
+
readonly errorMsg: import("@angular/core").InputSignal<string | undefined>;
|
|
3376
|
+
/** Per-validator-key message overrides for a bound form control (e.g. `{ required: '...' }`). */
|
|
3377
|
+
readonly errorMessages: import("@angular/core").InputSignal<Partial<Record<string, string>> | undefined>;
|
|
3378
|
+
readonly disabled: import("@angular/core").InputSignal<boolean>;
|
|
3379
|
+
readonly readonly: import("@angular/core").InputSignal<boolean>;
|
|
3380
|
+
readonly required: import("@angular/core").InputSignal<boolean>;
|
|
3381
|
+
/** Allow any non-whitespace character; when false (default) only digits are accepted. */
|
|
3382
|
+
readonly allowAllChars: import("@angular/core").InputSignal<boolean>;
|
|
3383
|
+
readonly id: import("@angular/core").InputSignal<string>;
|
|
3384
|
+
readonly value: import("@angular/core").ModelSignal<string>;
|
|
3385
|
+
readonly focusedIndex: import("@angular/core").WritableSignal<number>;
|
|
3386
|
+
private readonly _formDisabled;
|
|
3387
|
+
/** Fires with the full code once every digit has been entered. */
|
|
3388
|
+
readonly completed: import("@angular/core").OutputEmitterRef<string>;
|
|
3389
|
+
private onChange;
|
|
3390
|
+
private onTouched;
|
|
3391
|
+
readonly isDisabled: import("@angular/core").Signal<boolean>;
|
|
3392
|
+
private readonly errorState;
|
|
3393
|
+
readonly errorText: import("@angular/core").Signal<string | null>;
|
|
3394
|
+
readonly hasError: import("@angular/core").Signal<boolean>;
|
|
3395
|
+
readonly showError: import("@angular/core").Signal<boolean>;
|
|
3396
|
+
readonly showHint: import("@angular/core").Signal<boolean>;
|
|
3397
|
+
readonly digits: import("@angular/core").Signal<string[]>;
|
|
3398
|
+
readonly placeholders: import("@angular/core").Signal<string[]>;
|
|
3399
|
+
readonly indices: import("@angular/core").Signal<number[]>;
|
|
3400
|
+
writeValue(val: string): void;
|
|
3401
|
+
registerOnChange(fn: (value: string) => void): void;
|
|
3402
|
+
registerOnTouched(fn: () => void): void;
|
|
3403
|
+
setDisabledState(isDisabled: boolean): void;
|
|
3404
|
+
handleInput(event: Event, index: number): void;
|
|
3405
|
+
handleKeydown(event: KeyboardEvent, index: number): void;
|
|
3406
|
+
handlePaste(event: ClipboardEvent): void;
|
|
3407
|
+
handleFocus(index: number): void;
|
|
3408
|
+
handleBlur(): void;
|
|
3409
|
+
/** Moves keyboard focus to the next empty digit (or the last one when full). */
|
|
3410
|
+
focus(): void;
|
|
3411
|
+
private sanitize;
|
|
3412
|
+
private focusDigit;
|
|
3413
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CodeInputComponent, never>;
|
|
3414
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CodeInputComponent, "ea-code-input", never, {
|
|
3415
|
+
"label": {
|
|
3416
|
+
"alias": "label";
|
|
3417
|
+
"required": false;
|
|
3418
|
+
"isSignal": true;
|
|
3419
|
+
};
|
|
3420
|
+
"labelIcon": {
|
|
3421
|
+
"alias": "labelIcon";
|
|
3422
|
+
"required": false;
|
|
3423
|
+
"isSignal": true;
|
|
3424
|
+
};
|
|
3425
|
+
"labelHelp": {
|
|
3426
|
+
"alias": "labelHelp";
|
|
3427
|
+
"required": false;
|
|
3428
|
+
"isSignal": true;
|
|
3429
|
+
};
|
|
3430
|
+
"placeholder": {
|
|
3431
|
+
"alias": "placeholder";
|
|
3432
|
+
"required": false;
|
|
3433
|
+
"isSignal": true;
|
|
3434
|
+
};
|
|
3435
|
+
"length": {
|
|
3436
|
+
"alias": "length";
|
|
3437
|
+
"required": false;
|
|
3438
|
+
"isSignal": true;
|
|
3439
|
+
};
|
|
3440
|
+
"size": {
|
|
3441
|
+
"alias": "size";
|
|
3442
|
+
"required": false;
|
|
3443
|
+
"isSignal": true;
|
|
3444
|
+
};
|
|
3445
|
+
"hint": {
|
|
3446
|
+
"alias": "hint";
|
|
3447
|
+
"required": false;
|
|
3448
|
+
"isSignal": true;
|
|
3449
|
+
};
|
|
3450
|
+
"errorMsg": {
|
|
3451
|
+
"alias": "errorMsg";
|
|
3452
|
+
"required": false;
|
|
3453
|
+
"isSignal": true;
|
|
3454
|
+
};
|
|
3455
|
+
"errorMessages": {
|
|
3456
|
+
"alias": "errorMessages";
|
|
3457
|
+
"required": false;
|
|
3458
|
+
"isSignal": true;
|
|
3459
|
+
};
|
|
3460
|
+
"disabled": {
|
|
3461
|
+
"alias": "disabled";
|
|
3462
|
+
"required": false;
|
|
3463
|
+
"isSignal": true;
|
|
3464
|
+
};
|
|
3465
|
+
"readonly": {
|
|
3466
|
+
"alias": "readonly";
|
|
3467
|
+
"required": false;
|
|
3468
|
+
"isSignal": true;
|
|
3469
|
+
};
|
|
3470
|
+
"required": {
|
|
3471
|
+
"alias": "required";
|
|
3472
|
+
"required": false;
|
|
3473
|
+
"isSignal": true;
|
|
3474
|
+
};
|
|
3475
|
+
"allowAllChars": {
|
|
3476
|
+
"alias": "allowAllChars";
|
|
3477
|
+
"required": false;
|
|
3478
|
+
"isSignal": true;
|
|
3479
|
+
};
|
|
3480
|
+
"id": {
|
|
3481
|
+
"alias": "id";
|
|
3482
|
+
"required": false;
|
|
3483
|
+
"isSignal": true;
|
|
3484
|
+
};
|
|
3485
|
+
"value": {
|
|
3486
|
+
"alias": "value";
|
|
3487
|
+
"required": false;
|
|
3488
|
+
"isSignal": true;
|
|
3489
|
+
};
|
|
3490
|
+
}, {
|
|
3491
|
+
"value": "valueChange";
|
|
2806
3492
|
"completed": "completed";
|
|
2807
3493
|
}, never, never, true, never>;
|
|
2808
3494
|
}
|
|
@@ -2840,6 +3526,8 @@ export declare class DatePickerComponent implements ControlValueAccessor {
|
|
|
2840
3526
|
readonly label: import("@angular/core").InputSignal<string | undefined>;
|
|
2841
3527
|
/** Optional icon component rendered before the label text. */
|
|
2842
3528
|
readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
|
|
3529
|
+
/** Help revealed by an info button beside the label, as plain text or a template. */
|
|
3530
|
+
readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
|
|
2843
3531
|
/** Placeholder shown in the field when no date is selected. */
|
|
2844
3532
|
readonly placeholder: import("@angular/core").InputSignal<string | undefined>;
|
|
2845
3533
|
readonly size: import("@angular/core").InputSignal<EaSize>;
|
|
@@ -2962,6 +3650,11 @@ export declare class DatePickerComponent implements ControlValueAccessor {
|
|
|
2962
3650
|
"required": false;
|
|
2963
3651
|
"isSignal": true;
|
|
2964
3652
|
};
|
|
3653
|
+
"labelHelp": {
|
|
3654
|
+
"alias": "labelHelp";
|
|
3655
|
+
"required": false;
|
|
3656
|
+
"isSignal": true;
|
|
3657
|
+
};
|
|
2965
3658
|
"placeholder": {
|
|
2966
3659
|
"alias": "placeholder";
|
|
2967
3660
|
"required": false;
|
|
@@ -3060,6 +3753,10 @@ export type DialogWidth = EaWidth;
|
|
|
3060
3753
|
* `--ea-dialog-body-padding`, and `--ea-dialog-status-padding`; an
|
|
3061
3754
|
* edge-to-edge media surface zeroes the inset, radius, and paddings.
|
|
3062
3755
|
*
|
|
3756
|
+
* The first dialog rendered by a component opened through `DialogService`
|
|
3757
|
+
* answers to its `DialogRef`: it opens as soon as it renders, and a dismissal
|
|
3758
|
+
* closes the ref with `undefined`.
|
|
3759
|
+
*
|
|
3063
3760
|
* Specs running under jsdom need `installNativeDialogShim()` from
|
|
3064
3761
|
* `@eagami/ui/testing` before opening one.
|
|
3065
3762
|
*/
|
|
@@ -3072,6 +3769,7 @@ export declare class DialogComponent implements AfterContentChecked {
|
|
|
3072
3769
|
private readonly press;
|
|
3073
3770
|
private readonly scrollLock;
|
|
3074
3771
|
private holdsScroll;
|
|
3772
|
+
private boundRef;
|
|
3075
3773
|
readonly width: import("@angular/core").InputSignal<EaWidth>;
|
|
3076
3774
|
/**
|
|
3077
3775
|
* Modal by default: shown via `showModal()`, with the backdrop overlay and
|
|
@@ -3115,6 +3813,7 @@ export declare class DialogComponent implements AfterContentChecked {
|
|
|
3115
3813
|
protected readonly hasHeader: import("@angular/core").WritableSignal<boolean>;
|
|
3116
3814
|
ngAfterContentChecked(): void;
|
|
3117
3815
|
constructor();
|
|
3816
|
+
private closeSurface;
|
|
3118
3817
|
private holdScroll;
|
|
3119
3818
|
private dropScroll;
|
|
3120
3819
|
handleClose(): void;
|
|
@@ -3183,6 +3882,64 @@ export declare class DialogComponent implements AfterContentChecked {
|
|
|
3183
3882
|
"closeRequested": "closeRequested";
|
|
3184
3883
|
}, never, ["[slot=header]", "*", "[slot=status]", "[slot=footer]"], true, never>;
|
|
3185
3884
|
}
|
|
3885
|
+
/**
|
|
3886
|
+
* Handle on one dialog opened through `DialogService`. The component it opened
|
|
3887
|
+
* injects it to close with an answer, which settles `result` for whoever
|
|
3888
|
+
* opened it; a dismissal (Escape, the backdrop, the close button) closes it
|
|
3889
|
+
* with `undefined`. Construct one directly to stand in for the service in a
|
|
3890
|
+
* spec.
|
|
3891
|
+
*/
|
|
3892
|
+
export declare class DialogRef<R = unknown> {
|
|
3893
|
+
private readonly isClosed;
|
|
3894
|
+
private settler;
|
|
3895
|
+
/** Whether the dialog has closed. */
|
|
3896
|
+
readonly closed: Signal<boolean>;
|
|
3897
|
+
/**
|
|
3898
|
+
* Settles when the dialog closes: with the value passed to `close`, or with
|
|
3899
|
+
* `undefined` when it was dismissed.
|
|
3900
|
+
*/
|
|
3901
|
+
readonly result: Promise<R | undefined>;
|
|
3902
|
+
/** Closes the dialog and settles `result` with `value`. Only the first call has any effect. */
|
|
3903
|
+
close(value?: R): void;
|
|
3904
|
+
}
|
|
3905
|
+
/** Options for {@link DialogService.open}. */
|
|
3906
|
+
export interface DialogOptions {
|
|
3907
|
+
/** Values for the component's inputs, keyed by input name and set before it first renders. */
|
|
3908
|
+
inputs?: Readonly<Record<string, unknown>>;
|
|
3909
|
+
/**
|
|
3910
|
+
* Injector the component resolves its dependencies through, such as the
|
|
3911
|
+
* opener's own so providers scoped to it reach the dialog. Defaults to the
|
|
3912
|
+
* application's root injector.
|
|
3913
|
+
*/
|
|
3914
|
+
injector?: Injector;
|
|
3915
|
+
}
|
|
3916
|
+
/**
|
|
3917
|
+
* Opens dialogs from code. `open` renders a component at the end of `<body>`
|
|
3918
|
+
* and returns its {@link DialogRef}. The component lays out its own
|
|
3919
|
+
* `<ea-dialog>`, which shows itself straight away and closes the ref with
|
|
3920
|
+
* `undefined` on any dismissal, and injects the ref to close it with an
|
|
3921
|
+
* answer. Closing the ref takes the component down and hands focus back to
|
|
3922
|
+
* wherever it was when the dialog opened. A dialog opened while another is up
|
|
3923
|
+
* stacks on top of it.
|
|
3924
|
+
*
|
|
3925
|
+
* On the server nothing is rendered and the ref closes at once.
|
|
3926
|
+
*/
|
|
3927
|
+
export declare class DialogService {
|
|
3928
|
+
private readonly appRef;
|
|
3929
|
+
private readonly document;
|
|
3930
|
+
private readonly injector;
|
|
3931
|
+
private readonly isBrowser;
|
|
3932
|
+
private readonly openDialogs;
|
|
3933
|
+
/** Dialogs currently open, oldest first. */
|
|
3934
|
+
readonly dialogs: Signal<readonly DialogRef<unknown>[]>;
|
|
3935
|
+
constructor();
|
|
3936
|
+
/** Opens `component` as a dialog and returns its ref, whose `result` settles when it closes. */
|
|
3937
|
+
open<R = unknown>(component: Type<unknown>, options?: DialogOptions): DialogRef<R>;
|
|
3938
|
+
/** Closes every open dialog, newest first, settling each `result` with `undefined`. */
|
|
3939
|
+
closeAll(): void;
|
|
3940
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DialogService, never>;
|
|
3941
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
3942
|
+
}
|
|
3186
3943
|
/** Orientation of the divider rule. */
|
|
3187
3944
|
export type DividerOrientation = 'horizontal' | 'vertical';
|
|
3188
3945
|
/**
|
|
@@ -3398,6 +4155,8 @@ export declare class DropdownComponent implements ControlValueAccessor {
|
|
|
3398
4155
|
readonly label: import("@angular/core").InputSignal<string | undefined>;
|
|
3399
4156
|
/** Optional icon component rendered before the label text. */
|
|
3400
4157
|
readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
|
|
4158
|
+
/** Help revealed by an info button beside the label, as plain text or a template. */
|
|
4159
|
+
readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
|
|
3401
4160
|
readonly placeholder: import("@angular/core").InputSignal<string | undefined>;
|
|
3402
4161
|
/** Selectable options, either flat or split into groups. */
|
|
3403
4162
|
readonly options: import("@angular/core").InputSignal<SelectOptions>;
|
|
@@ -3482,6 +4241,11 @@ export declare class DropdownComponent implements ControlValueAccessor {
|
|
|
3482
4241
|
"required": false;
|
|
3483
4242
|
"isSignal": true;
|
|
3484
4243
|
};
|
|
4244
|
+
"labelHelp": {
|
|
4245
|
+
"alias": "labelHelp";
|
|
4246
|
+
"required": false;
|
|
4247
|
+
"isSignal": true;
|
|
4248
|
+
};
|
|
3485
4249
|
"placeholder": {
|
|
3486
4250
|
"alias": "placeholder";
|
|
3487
4251
|
"required": false;
|
|
@@ -3646,12 +4410,33 @@ export declare class EmptyStateComponent {
|
|
|
3646
4410
|
}, {}, never, ["[slot=media]", "[slot=actions]"], true, never>;
|
|
3647
4411
|
}
|
|
3648
4412
|
export declare class FieldLabelComponent {
|
|
4413
|
+
private readonly i18n;
|
|
4414
|
+
private readonly press;
|
|
4415
|
+
private readonly renderer;
|
|
3649
4416
|
readonly text: import("@angular/core").InputSignal<string>;
|
|
3650
4417
|
/** Optional icon component rendered before the label text. */
|
|
3651
4418
|
readonly icon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
|
|
4419
|
+
/**
|
|
4420
|
+
* Help revealed by an info button beside the label, as plain text or a
|
|
4421
|
+
* template. Click, tap, Enter or Space toggles it, and it is announced when
|
|
4422
|
+
* shown; Escape, a click outside, or moving focus away closes it.
|
|
4423
|
+
*/
|
|
4424
|
+
readonly help: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
|
|
3652
4425
|
readonly forId: import("@angular/core").InputSignal<string | undefined>;
|
|
3653
4426
|
readonly required: import("@angular/core").InputSignal<boolean>;
|
|
3654
4427
|
readonly labelId: import("@angular/core").InputSignal<string | undefined>;
|
|
4428
|
+
protected readonly helpOpen: import("@angular/core").WritableSignal<boolean>;
|
|
4429
|
+
protected readonly helpId: string;
|
|
4430
|
+
protected readonly helpTemplate: import("@angular/core").Signal<TemplateRef<unknown> | null>;
|
|
4431
|
+
protected readonly helpTriggerLabel: import("@angular/core").Signal<string>;
|
|
4432
|
+
private readonly helpEl;
|
|
4433
|
+
private readonly helpTrigger;
|
|
4434
|
+
private readonly helpBubble;
|
|
4435
|
+
constructor();
|
|
4436
|
+
protected toggleHelp(): void;
|
|
4437
|
+
protected onHelpFocusout(event: FocusEvent): void;
|
|
4438
|
+
/** Raises and places an open bubble and wires its dismissal; returns the teardown. */
|
|
4439
|
+
private attachHelpBubble;
|
|
3655
4440
|
static ɵfac: i0.ɵɵFactoryDeclaration<FieldLabelComponent, never>;
|
|
3656
4441
|
static ɵcmp: i0.ɵɵComponentDeclaration<FieldLabelComponent, "ea-field-label", never, {
|
|
3657
4442
|
"text": {
|
|
@@ -3664,6 +4449,11 @@ export declare class FieldLabelComponent {
|
|
|
3664
4449
|
"required": false;
|
|
3665
4450
|
"isSignal": true;
|
|
3666
4451
|
};
|
|
4452
|
+
"help": {
|
|
4453
|
+
"alias": "help";
|
|
4454
|
+
"required": false;
|
|
4455
|
+
"isSignal": true;
|
|
4456
|
+
};
|
|
3667
4457
|
"forId": {
|
|
3668
4458
|
"alias": "forId";
|
|
3669
4459
|
"required": false;
|
|
@@ -3725,6 +4515,8 @@ export declare class FormFieldComponent {
|
|
|
3725
4515
|
readonly label: import("@angular/core").InputSignal<string | undefined>;
|
|
3726
4516
|
/** Optional icon component rendered before the label text. */
|
|
3727
4517
|
readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
|
|
4518
|
+
/** Help revealed by an info button beside the label, as plain text or a template. */
|
|
4519
|
+
readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
|
|
3728
4520
|
/** Helper text shown below the control; hidden while an error is showing. */
|
|
3729
4521
|
readonly hint: import("@angular/core").InputSignal<string | undefined>;
|
|
3730
4522
|
/** Error message shown below the control; replaces the hint and flags the field invalid. */
|
|
@@ -3760,6 +4552,11 @@ export declare class FormFieldComponent {
|
|
|
3760
4552
|
"required": false;
|
|
3761
4553
|
"isSignal": true;
|
|
3762
4554
|
};
|
|
4555
|
+
"labelHelp": {
|
|
4556
|
+
"alias": "labelHelp";
|
|
4557
|
+
"required": false;
|
|
4558
|
+
"isSignal": true;
|
|
4559
|
+
};
|
|
3763
4560
|
"hint": {
|
|
3764
4561
|
"alias": "hint";
|
|
3765
4562
|
"required": false;
|
|
@@ -3842,6 +4639,8 @@ declare function controlErrorStateFrom(control: Signal<AbstractControl | null>,
|
|
|
3842
4639
|
declare function injectControlErrorState(config: ControlErrorStateConfig): ControlErrorState;
|
|
3843
4640
|
/** Visual size of the file uploader. */
|
|
3844
4641
|
export type FileUploaderSize = EaSize;
|
|
4642
|
+
/** Presentation of the uploader: a drag-and-drop zone, or a compact picker button. */
|
|
4643
|
+
export type FileUploaderVariant = 'dropzone' | 'button';
|
|
3845
4644
|
/** Reason a file was rejected during selection. */
|
|
3846
4645
|
export type FileUploaderRejectionReason = 'type' | 'size' | 'count';
|
|
3847
4646
|
/** Detail object emitted on the `rejected` output when one or more files fail validation. */
|
|
@@ -3859,25 +4658,56 @@ export interface FileUploaderRejection {
|
|
|
3859
4658
|
* slot via the `icon` attribute: project any element to override it, and the
|
|
3860
4659
|
* dropzone's size-aware wrapper handles sizing automatically.
|
|
3861
4660
|
*
|
|
4661
|
+
* Where a dropzone is too large, `variant="button"` swaps it for a compact
|
|
4662
|
+
* `ea-button` that opens the file picker, keeping the same validation, file
|
|
4663
|
+
* list and outputs.
|
|
4664
|
+
*
|
|
3862
4665
|
* @example
|
|
3863
4666
|
* ```html
|
|
3864
4667
|
* <ea-file-uploader label="Attach files">
|
|
3865
4668
|
* <ea-icon-paperclip icon />
|
|
3866
4669
|
* </ea-file-uploader>
|
|
4670
|
+
*
|
|
4671
|
+
* <ea-file-uploader
|
|
4672
|
+
* variant="button"
|
|
4673
|
+
* accept=".csv"
|
|
4674
|
+
* buttonLabel="Import CSV"
|
|
4675
|
+
* [buttonIcon]="uploadIcon"
|
|
4676
|
+
* [multiple]="false" />
|
|
3867
4677
|
* ```
|
|
3868
4678
|
*/
|
|
3869
4679
|
export declare class FileUploaderComponent implements ControlValueAccessor {
|
|
3870
4680
|
private readonly fileInputEl;
|
|
3871
4681
|
private readonly dropzoneEl;
|
|
4682
|
+
private readonly pickerButton;
|
|
3872
4683
|
protected readonly i18n: EagamiI18nService;
|
|
3873
4684
|
readonly label: import("@angular/core").InputSignal<string | undefined>;
|
|
3874
4685
|
/** Optional icon component rendered before the label text. */
|
|
3875
4686
|
readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
|
|
4687
|
+
/** Help revealed by an info button beside the label, as plain text or a template. */
|
|
4688
|
+
readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
|
|
3876
4689
|
readonly hint: import("@angular/core").InputSignal<string | undefined>;
|
|
3877
4690
|
readonly errorMsg: import("@angular/core").InputSignal<string | undefined>;
|
|
3878
4691
|
/** Per-validator-key message overrides for a bound form control (e.g. `{ required: '...' }`). */
|
|
3879
4692
|
readonly errorMessages: import("@angular/core").InputSignal<Partial<Record<string, string>> | undefined>;
|
|
3880
4693
|
readonly size: import("@angular/core").InputSignal<EaSize>;
|
|
4694
|
+
/**
|
|
4695
|
+
* `dropzone` renders the drag-and-drop area; `button` renders a compact
|
|
4696
|
+
* secondary `ea-button` that opens the file picker instead, without drop support.
|
|
4697
|
+
*/
|
|
4698
|
+
readonly variant: import("@angular/core").InputSignal<FileUploaderVariant>;
|
|
4699
|
+
/**
|
|
4700
|
+
* Visible text of the `button` variant, falling back to the localized "Browse
|
|
4701
|
+
* files". An empty string together with a `buttonIcon` leaves an icon-only button.
|
|
4702
|
+
*/
|
|
4703
|
+
readonly buttonLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
4704
|
+
/** Optional icon component rendered before the `button` variant's text. */
|
|
4705
|
+
readonly buttonIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
|
|
4706
|
+
/**
|
|
4707
|
+
* Accessible name when nothing visible names the control: no `label`, and in
|
|
4708
|
+
* the `button` variant no button text either.
|
|
4709
|
+
*/
|
|
4710
|
+
readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
3881
4711
|
readonly disabled: import("@angular/core").InputSignal<boolean>;
|
|
3882
4712
|
readonly required: import("@angular/core").InputSignal<boolean>;
|
|
3883
4713
|
/**
|
|
@@ -3895,7 +4725,12 @@ export declare class FileUploaderComponent implements ControlValueAccessor {
|
|
|
3895
4725
|
/** Toggle the file list under the dropzone. */
|
|
3896
4726
|
readonly showFileList: import("@angular/core").InputSignal<boolean>;
|
|
3897
4727
|
/**
|
|
3898
|
-
*
|
|
4728
|
+
* Toggle the line listing the accepted types, size and file count limits, for a
|
|
4729
|
+
* compact placement (an icon button in a toolbar) where it would crowd the control.
|
|
4730
|
+
*/
|
|
4731
|
+
readonly showConstraints: import("@angular/core").InputSignal<boolean>;
|
|
4732
|
+
/**
|
|
4733
|
+
* Optional per-file progress (0-100). Keyed by `File` object identity, so
|
|
3899
4734
|
* consumers must keep the same `File` references between change-detection
|
|
3900
4735
|
* runs. When unset, no progress bar is rendered.
|
|
3901
4736
|
*/
|
|
@@ -3926,6 +4761,7 @@ export declare class FileUploaderComponent implements ControlValueAccessor {
|
|
|
3926
4761
|
protected readonly showHint: import("@angular/core").Signal<boolean>;
|
|
3927
4762
|
protected readonly hostClasses: import("@angular/core").Signal<{
|
|
3928
4763
|
[x: string]: boolean;
|
|
4764
|
+
'ea-file-uploader-field--button': boolean;
|
|
3929
4765
|
'ea-file-uploader-field--error': boolean;
|
|
3930
4766
|
'ea-file-uploader-field--disabled': boolean;
|
|
3931
4767
|
'ea-file-uploader-field--drag-over': boolean;
|
|
@@ -3938,6 +4774,12 @@ export declare class FileUploaderComponent implements ControlValueAccessor {
|
|
|
3938
4774
|
/** Joined human-readable description of accept / maxSize / maxFiles limits. */
|
|
3939
4775
|
protected readonly constraintsText: import("@angular/core").Signal<string>;
|
|
3940
4776
|
protected readonly promptText: import("@angular/core").Signal<string>;
|
|
4777
|
+
protected readonly dropzoneLabel: import("@angular/core").Signal<string>;
|
|
4778
|
+
protected readonly labelId: import("@angular/core").Signal<string>;
|
|
4779
|
+
protected readonly buttonTextId: import("@angular/core").Signal<string>;
|
|
4780
|
+
protected readonly buttonText: import("@angular/core").Signal<string>;
|
|
4781
|
+
protected readonly buttonLabelledBy: import("@angular/core").Signal<string | undefined>;
|
|
4782
|
+
protected readonly buttonAriaLabel: import("@angular/core").Signal<string | undefined>;
|
|
3941
4783
|
writeValue(value: readonly File[] | null | undefined): void;
|
|
3942
4784
|
registerOnChange(fn: (value: readonly File[]) => void): void;
|
|
3943
4785
|
registerOnTouched(fn: () => void): void;
|
|
@@ -3946,6 +4788,7 @@ export declare class FileUploaderComponent implements ControlValueAccessor {
|
|
|
3946
4788
|
protected onDropzoneKeydown(event: KeyboardEvent): void;
|
|
3947
4789
|
protected onDropzoneFocus(): void;
|
|
3948
4790
|
protected onDropzoneBlur(): void;
|
|
4791
|
+
protected onPickerButtonFocusOut(): void;
|
|
3949
4792
|
protected onFileSelected(event: Event): void;
|
|
3950
4793
|
protected onDragEnter(event: DragEvent): void;
|
|
3951
4794
|
protected onDragOver(event: DragEvent): void;
|
|
@@ -3971,6 +4814,11 @@ export declare class FileUploaderComponent implements ControlValueAccessor {
|
|
|
3971
4814
|
"required": false;
|
|
3972
4815
|
"isSignal": true;
|
|
3973
4816
|
};
|
|
4817
|
+
"labelHelp": {
|
|
4818
|
+
"alias": "labelHelp";
|
|
4819
|
+
"required": false;
|
|
4820
|
+
"isSignal": true;
|
|
4821
|
+
};
|
|
3974
4822
|
"hint": {
|
|
3975
4823
|
"alias": "hint";
|
|
3976
4824
|
"required": false;
|
|
@@ -3991,6 +4839,26 @@ export declare class FileUploaderComponent implements ControlValueAccessor {
|
|
|
3991
4839
|
"required": false;
|
|
3992
4840
|
"isSignal": true;
|
|
3993
4841
|
};
|
|
4842
|
+
"variant": {
|
|
4843
|
+
"alias": "variant";
|
|
4844
|
+
"required": false;
|
|
4845
|
+
"isSignal": true;
|
|
4846
|
+
};
|
|
4847
|
+
"buttonLabel": {
|
|
4848
|
+
"alias": "buttonLabel";
|
|
4849
|
+
"required": false;
|
|
4850
|
+
"isSignal": true;
|
|
4851
|
+
};
|
|
4852
|
+
"buttonIcon": {
|
|
4853
|
+
"alias": "buttonIcon";
|
|
4854
|
+
"required": false;
|
|
4855
|
+
"isSignal": true;
|
|
4856
|
+
};
|
|
4857
|
+
"ariaLabel": {
|
|
4858
|
+
"alias": "aria-label";
|
|
4859
|
+
"required": false;
|
|
4860
|
+
"isSignal": true;
|
|
4861
|
+
};
|
|
3994
4862
|
"disabled": {
|
|
3995
4863
|
"alias": "disabled";
|
|
3996
4864
|
"required": false;
|
|
@@ -4026,6 +4894,11 @@ export declare class FileUploaderComponent implements ControlValueAccessor {
|
|
|
4026
4894
|
"required": false;
|
|
4027
4895
|
"isSignal": true;
|
|
4028
4896
|
};
|
|
4897
|
+
"showConstraints": {
|
|
4898
|
+
"alias": "showConstraints";
|
|
4899
|
+
"required": false;
|
|
4900
|
+
"isSignal": true;
|
|
4901
|
+
};
|
|
4029
4902
|
"progress": {
|
|
4030
4903
|
"alias": "progress";
|
|
4031
4904
|
"required": false;
|
|
@@ -4066,6 +4939,8 @@ export declare class InputComponent implements ControlValueAccessor {
|
|
|
4066
4939
|
readonly label: import("@angular/core").InputSignal<string | undefined>;
|
|
4067
4940
|
/** Optional icon component rendered before the label text. */
|
|
4068
4941
|
readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
|
|
4942
|
+
/** Help revealed by an info button beside the label, as plain text or a template. */
|
|
4943
|
+
readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
|
|
4069
4944
|
/** Accessible name for the control when no visible `label` is set. */
|
|
4070
4945
|
readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
4071
4946
|
/** ARIA role applied to the native input, e.g. `combobox` for a typeahead host. */
|
|
@@ -4185,6 +5060,11 @@ export declare class InputComponent implements ControlValueAccessor {
|
|
|
4185
5060
|
"required": false;
|
|
4186
5061
|
"isSignal": true;
|
|
4187
5062
|
};
|
|
5063
|
+
"labelHelp": {
|
|
5064
|
+
"alias": "labelHelp";
|
|
5065
|
+
"required": false;
|
|
5066
|
+
"isSignal": true;
|
|
5067
|
+
};
|
|
4188
5068
|
"ariaLabel": {
|
|
4189
5069
|
"alias": "aria-label";
|
|
4190
5070
|
"required": false;
|
|
@@ -4398,9 +5278,9 @@ interface XDomain {
|
|
|
4398
5278
|
* Plots one or more series of values as lines, with optional points and area
|
|
4399
5279
|
* fills. Points are spaced evenly by default, or placed along a numeric scale
|
|
4400
5280
|
* by `xValues`, with the x-axis labelled per point or by `xTicks`. A
|
|
4401
|
-
* `visibleXSpan` window makes a long run of data pannable. Hovering
|
|
4402
|
-
* arrowing through the chart reveals each point's values in a tooltip, and
|
|
4403
|
-
* visually hidden table carries the full data for screen readers.
|
|
5281
|
+
* `visibleXSpan` window makes a long run of data pannable. Hovering, tapping,
|
|
5282
|
+
* or arrowing through the chart reveals each point's values in a tooltip, and
|
|
5283
|
+
* a visually hidden table carries the full data for screen readers.
|
|
4404
5284
|
*/
|
|
4405
5285
|
export declare class LineChartComponent {
|
|
4406
5286
|
protected readonly i18n: EagamiI18nService;
|
|
@@ -4469,6 +5349,7 @@ export declare class LineChartComponent {
|
|
|
4469
5349
|
readonly visibleRangeChange: import("@angular/core").OutputEmitterRef<LineChartVisibleRange>;
|
|
4470
5350
|
private readonly viewport;
|
|
4471
5351
|
private readonly format;
|
|
5352
|
+
private readonly plotEl;
|
|
4472
5353
|
protected readonly active: import("@angular/core").WritableSignal<ActivePoint | null>;
|
|
4473
5354
|
protected readonly clipId: string;
|
|
4474
5355
|
protected readonly breakMaskId: string;
|
|
@@ -4478,6 +5359,7 @@ export declare class LineChartComponent {
|
|
|
4478
5359
|
protected readonly panning: import("@angular/core").WritableSignal<boolean>;
|
|
4479
5360
|
private drag;
|
|
4480
5361
|
private suppressClick;
|
|
5362
|
+
private releaseTap;
|
|
4481
5363
|
protected readonly label: import("@angular/core").Signal<string>;
|
|
4482
5364
|
protected readonly count: import("@angular/core").Signal<number>;
|
|
4483
5365
|
protected readonly hasData: import("@angular/core").Signal<boolean>;
|
|
@@ -4528,568 +5410,222 @@ export declare class LineChartComponent {
|
|
|
4528
5410
|
value: string;
|
|
4529
5411
|
active: boolean;
|
|
4530
5412
|
}[];
|
|
4531
|
-
key: string;
|
|
4532
|
-
} | null>;
|
|
4533
|
-
protected readonly tooltips: import("@angular/core").Signal<{
|
|
4534
|
-
x: number;
|
|
4535
|
-
y: number;
|
|
4536
|
-
title: string;
|
|
4537
|
-
rows: {
|
|
4538
|
-
name: string;
|
|
4539
|
-
color: string;
|
|
4540
|
-
value: string;
|
|
4541
|
-
active: boolean;
|
|
4542
|
-
}[];
|
|
4543
|
-
key: string;
|
|
4544
|
-
}[]>;
|
|
4545
|
-
protected readonly announcement: import("@angular/core").Signal<string>;
|
|
4546
|
-
protected readonly showsLegend: import("@angular/core").Signal<boolean>;
|
|
4547
|
-
protected seriesColor(index: number): string;
|
|
4548
|
-
protected isDimmed(index: number): boolean;
|
|
4549
|
-
protected isActivePoint(seriesIndex: number, index: number): boolean;
|
|
4550
|
-
protected tableValue(value: number | null | undefined): string;
|
|
4551
|
-
protected onPointerDown(event: PointerEvent): void;
|
|
4552
|
-
protected onPointerMove(event: PointerEvent): void;
|
|
4553
|
-
protected onPointerUp(event: PointerEvent): void;
|
|
4554
|
-
protected onPointerLeave(): void;
|
|
4555
|
-
protected onWheel(event: WheelEvent): void;
|
|
4556
|
-
protected onClick(): void;
|
|
4557
|
-
protected onFocus(): void;
|
|
4558
|
-
protected onBlur(): void;
|
|
4559
|
-
protected onKeydown(event: KeyboardEvent): void;
|
|
4560
|
-
private isValue;
|
|
4561
|
-
private yScale;
|
|
4562
|
-
private atPosition;
|
|
4563
|
-
private xLabelCandidates;
|
|
4564
|
-
private labelsFit;
|
|
4565
|
-
private xLabels;
|
|
4566
|
-
private widestXLabel;
|
|
4567
|
-
protected onGestureStart(event: Event): void;
|
|
4568
|
-
protected onGestureChange(event: Event): void;
|
|
4569
|
-
protected onGestureEnd(): void;
|
|
4570
|
-
private zoomTo;
|
|
4571
|
-
private minSpan;
|
|
4572
|
-
private unitsPerPx;
|
|
4573
|
-
private panTo;
|
|
4574
|
-
private endDrag;
|
|
4575
|
-
private reveal;
|
|
4576
|
-
private indexAt;
|
|
4577
|
-
private valueAt;
|
|
4578
|
-
private firstPoint;
|
|
4579
|
-
private nearestValid;
|
|
4580
|
-
private eventFor;
|
|
4581
|
-
private setActive;
|
|
4582
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<LineChartComponent, never>;
|
|
4583
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<LineChartComponent, "ea-line-chart", never, {
|
|
4584
|
-
"labels": {
|
|
4585
|
-
"alias": "labels";
|
|
4586
|
-
"required": false;
|
|
4587
|
-
"isSignal": true;
|
|
4588
|
-
};
|
|
4589
|
-
"series": {
|
|
4590
|
-
"alias": "series";
|
|
4591
|
-
"required": false;
|
|
4592
|
-
"isSignal": true;
|
|
4593
|
-
};
|
|
4594
|
-
"xValues": {
|
|
4595
|
-
"alias": "xValues";
|
|
4596
|
-
"required": false;
|
|
4597
|
-
"isSignal": true;
|
|
4598
|
-
};
|
|
4599
|
-
"xTicks": {
|
|
4600
|
-
"alias": "xTicks";
|
|
4601
|
-
"required": false;
|
|
4602
|
-
"isSignal": true;
|
|
4603
|
-
};
|
|
4604
|
-
"visibleXSpan": {
|
|
4605
|
-
"alias": "visibleXSpan";
|
|
4606
|
-
"required": false;
|
|
4607
|
-
"isSignal": true;
|
|
4608
|
-
};
|
|
4609
|
-
"curve": {
|
|
4610
|
-
"alias": "curve";
|
|
4611
|
-
"required": false;
|
|
4612
|
-
"isSignal": true;
|
|
4613
|
-
};
|
|
4614
|
-
"showArea": {
|
|
4615
|
-
"alias": "showArea";
|
|
4616
|
-
"required": false;
|
|
4617
|
-
"isSignal": true;
|
|
4618
|
-
};
|
|
4619
|
-
"showPoints": {
|
|
4620
|
-
"alias": "showPoints";
|
|
4621
|
-
"required": false;
|
|
4622
|
-
"isSignal": true;
|
|
4623
|
-
};
|
|
4624
|
-
"showGrid": {
|
|
4625
|
-
"alias": "showGrid";
|
|
4626
|
-
"required": false;
|
|
4627
|
-
"isSignal": true;
|
|
4628
|
-
};
|
|
4629
|
-
"showLegend": {
|
|
4630
|
-
"alias": "showLegend";
|
|
4631
|
-
"required": false;
|
|
4632
|
-
"isSignal": true;
|
|
4633
|
-
};
|
|
4634
|
-
"yMin": {
|
|
4635
|
-
"alias": "yMin";
|
|
4636
|
-
"required": false;
|
|
4637
|
-
"isSignal": true;
|
|
4638
|
-
};
|
|
4639
|
-
"yMax": {
|
|
4640
|
-
"alias": "yMax";
|
|
4641
|
-
"required": false;
|
|
4642
|
-
"isSignal": true;
|
|
4643
|
-
};
|
|
4644
|
-
"xLabelOrientation": {
|
|
4645
|
-
"alias": "xLabelOrientation";
|
|
4646
|
-
"required": false;
|
|
4647
|
-
"isSignal": true;
|
|
4648
|
-
};
|
|
4649
|
-
"showAxisBreak": {
|
|
4650
|
-
"alias": "showAxisBreak";
|
|
4651
|
-
"required": false;
|
|
4652
|
-
"isSignal": true;
|
|
4653
|
-
};
|
|
4654
|
-
"height": {
|
|
4655
|
-
"alias": "height";
|
|
4656
|
-
"required": false;
|
|
4657
|
-
"isSignal": true;
|
|
4658
|
-
};
|
|
4659
|
-
"size": {
|
|
4660
|
-
"alias": "size";
|
|
4661
|
-
"required": false;
|
|
4662
|
-
"isSignal": true;
|
|
4663
|
-
};
|
|
4664
|
-
"animation": {
|
|
4665
|
-
"alias": "animation";
|
|
4666
|
-
"required": false;
|
|
4667
|
-
"isSignal": true;
|
|
4668
|
-
};
|
|
4669
|
-
"animationDuration": {
|
|
4670
|
-
"alias": "animationDuration";
|
|
4671
|
-
"required": false;
|
|
4672
|
-
"isSignal": true;
|
|
4673
|
-
};
|
|
4674
|
-
"formatValue": {
|
|
4675
|
-
"alias": "formatValue";
|
|
4676
|
-
"required": false;
|
|
4677
|
-
"isSignal": true;
|
|
4678
|
-
};
|
|
4679
|
-
"ariaLabel": {
|
|
4680
|
-
"alias": "aria-label";
|
|
4681
|
-
"required": false;
|
|
4682
|
-
"isSignal": true;
|
|
4683
|
-
};
|
|
4684
|
-
}, {
|
|
4685
|
-
"pointClick": "pointClick";
|
|
4686
|
-
"activePointChange": "activePointChange";
|
|
4687
|
-
"visibleRangeChange": "visibleRangeChange";
|
|
4688
|
-
}, never, never, true, never>;
|
|
4689
|
-
}
|
|
4690
|
-
/** Placement of the menu list relative to its trigger. */
|
|
4691
|
-
export type MenuPlacement = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';
|
|
4692
|
-
/** Visual size of the menu, shared by all of its items. */
|
|
4693
|
-
export type MenuSize = EaSize;
|
|
4694
|
-
/**
|
|
4695
|
-
* Popup action menu attached to any focusable element via the
|
|
4696
|
-
* `[eaMenuTrigger]` directive. Supports keyboard navigation
|
|
4697
|
-
* (arrow keys, Home/End), closes on outside click or Escape, and restores
|
|
4698
|
-
* focus to the trigger on close. Positioning, dismissal, and SSR-safe scroll
|
|
4699
|
-
* handling are provided by `<ea-popover>`.
|
|
4700
|
-
*/
|
|
4701
|
-
export declare class MenuComponent {
|
|
4702
|
-
private readonly injector;
|
|
4703
|
-
private readonly i18n;
|
|
4704
|
-
private readonly listEl;
|
|
4705
|
-
readonly placement: import("@angular/core").InputSignal<MenuPlacement>;
|
|
4706
|
-
/** Visual size of the menu; every item inherits it. */
|
|
4707
|
-
readonly size: import("@angular/core").InputSignal<EaSize>;
|
|
4708
|
-
/** Max height of the scrollable list as a CSS length; tall menus scroll past it. */
|
|
4709
|
-
readonly maxHeight: import("@angular/core").InputSignal<string>;
|
|
4710
|
-
readonly disabled: import("@angular/core").InputSignal<boolean>;
|
|
4711
|
-
readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
4712
|
-
readonly id: import("@angular/core").InputSignal<string>;
|
|
4713
|
-
/** Accessible label for the menu, falling back to the active locale. */
|
|
4714
|
-
readonly resolvedAriaLabel: import("@angular/core").Signal<string>;
|
|
4715
|
-
readonly open: import("@angular/core").ModelSignal<boolean>;
|
|
4716
|
-
/** Fires when the menu opens. */
|
|
4717
|
-
readonly opened: import("@angular/core").OutputEmitterRef<void>;
|
|
4718
|
-
/** Fires when the menu closes. */
|
|
4719
|
-
readonly closed: import("@angular/core").OutputEmitterRef<void>;
|
|
4720
|
-
/** Trigger element currently anchoring the menu. Signal-typed so `<ea-popover>` reacts when it changes. */
|
|
4721
|
-
protected readonly triggerEl: import("@angular/core").WritableSignal<HTMLElement | undefined>;
|
|
4722
|
-
readonly activeItemId: import("@angular/core").WritableSignal<string | null>;
|
|
4723
|
-
constructor();
|
|
4724
|
-
/** Toggles the menu open state, anchoring it to the given trigger element. */
|
|
4725
|
-
toggleAt(triggerEl: HTMLElement): void;
|
|
4726
|
-
/** Opens the menu anchored to the given trigger element and focuses the first item. */
|
|
4727
|
-
openAt(triggerEl: HTMLElement): void;
|
|
4728
|
-
/**
|
|
4729
|
-
* Closes the menu if it is open. Pass `restoreFocus: true` to return focus
|
|
4730
|
-
* to the trigger element (used when closing via Escape or item activation;
|
|
4731
|
-
* not used on outside click, where the user has chosen a new focus target).
|
|
4732
|
-
*/
|
|
4733
|
-
close(restoreFocus?: boolean): void;
|
|
4734
|
-
/** Called by `<ea-popover>` when the user clicks outside the menu. */
|
|
4735
|
-
onPopoverCloseRequested(): void;
|
|
4736
|
-
private getEnabledItems;
|
|
4737
|
-
/**
|
|
4738
|
-
* `preventScroll: true` is critical here. The menu list is `position: fixed`
|
|
4739
|
-
* but its DOM ancestor is whatever element hosts the menu (often a sticky
|
|
4740
|
-
* header). When `.focus()` is called without `preventScroll`, Chromium uses
|
|
4741
|
-
* the focused element's DOM-tree position (inside the sticky ancestor) rather
|
|
4742
|
-
* than its rendered fixed position to decide whether to scroll, which on a
|
|
4743
|
-
* scrolled page nudges the document up by a few pixels per open, until the
|
|
4744
|
-
* trigger reaches the top edge. The same guard applies to keyboard navigation
|
|
4745
|
-
* and restoring focus on close.
|
|
4746
|
-
*/
|
|
4747
|
-
private focusFirstItem;
|
|
4748
|
-
private focusItem;
|
|
4749
|
-
onKeydown(event: KeyboardEvent): void;
|
|
4750
|
-
onEscape(event: Event): void;
|
|
4751
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<MenuComponent, never>;
|
|
4752
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<MenuComponent, "ea-menu", never, {
|
|
4753
|
-
"placement": {
|
|
4754
|
-
"alias": "placement";
|
|
4755
|
-
"required": false;
|
|
4756
|
-
"isSignal": true;
|
|
4757
|
-
};
|
|
4758
|
-
"size": {
|
|
4759
|
-
"alias": "size";
|
|
4760
|
-
"required": false;
|
|
4761
|
-
"isSignal": true;
|
|
4762
|
-
};
|
|
4763
|
-
"maxHeight": {
|
|
4764
|
-
"alias": "maxHeight";
|
|
4765
|
-
"required": false;
|
|
4766
|
-
"isSignal": true;
|
|
4767
|
-
};
|
|
4768
|
-
"disabled": {
|
|
4769
|
-
"alias": "disabled";
|
|
4770
|
-
"required": false;
|
|
4771
|
-
"isSignal": true;
|
|
4772
|
-
};
|
|
4773
|
-
"ariaLabel": {
|
|
4774
|
-
"alias": "aria-label";
|
|
4775
|
-
"required": false;
|
|
4776
|
-
"isSignal": true;
|
|
4777
|
-
};
|
|
4778
|
-
"id": {
|
|
4779
|
-
"alias": "id";
|
|
4780
|
-
"required": false;
|
|
4781
|
-
"isSignal": true;
|
|
4782
|
-
};
|
|
4783
|
-
"open": {
|
|
4784
|
-
"alias": "open";
|
|
4785
|
-
"required": false;
|
|
4786
|
-
"isSignal": true;
|
|
4787
|
-
};
|
|
4788
|
-
}, {
|
|
4789
|
-
"open": "openChange";
|
|
4790
|
-
"opened": "opened";
|
|
4791
|
-
"closed": "closed";
|
|
4792
|
-
}, never, ["*"], true, never>;
|
|
4793
|
-
}
|
|
4794
|
-
/** Visual style of a menu item; `danger` for destructive actions. */
|
|
4795
|
-
export type MenuItemVariant = 'default' | 'danger';
|
|
4796
|
-
/**
|
|
4797
|
-
* Selectable row inside an `ea-menu`. Supports leading icons via the `icon`
|
|
4798
|
-
* content slot, a disabled state, and a `danger` variant for destructive
|
|
4799
|
-
* actions. Inherits its size from the parent menu, and activating an item
|
|
4800
|
-
* closes that menu.
|
|
4801
|
-
*/
|
|
4802
|
-
export declare class MenuItemComponent {
|
|
4803
|
-
private readonly menu;
|
|
4804
|
-
protected readonly itemId: string;
|
|
4805
|
-
protected readonly tabIndex: import("@angular/core").Signal<0 | -1>;
|
|
4806
|
-
readonly disabled: import("@angular/core").InputSignal<boolean>;
|
|
4807
|
-
readonly variant: import("@angular/core").InputSignal<MenuItemVariant>;
|
|
4808
|
-
/** Fires when the item is activated; the parent menu closes immediately afterwards. */
|
|
4809
|
-
readonly clicked: import("@angular/core").OutputEmitterRef<MouseEvent>;
|
|
4810
|
-
handleClick(event: MouseEvent): void;
|
|
4811
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<MenuItemComponent, never>;
|
|
4812
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<MenuItemComponent, "ea-menu-item", never, {
|
|
4813
|
-
"disabled": {
|
|
4814
|
-
"alias": "disabled";
|
|
4815
|
-
"required": false;
|
|
4816
|
-
"isSignal": true;
|
|
4817
|
-
};
|
|
4818
|
-
"variant": {
|
|
4819
|
-
"alias": "variant";
|
|
4820
|
-
"required": false;
|
|
4821
|
-
"isSignal": true;
|
|
4822
|
-
};
|
|
4823
|
-
}, {
|
|
4824
|
-
"clicked": "clicked";
|
|
4825
|
-
}, never, ["[slot=icon]", "*"], true, never>;
|
|
4826
|
-
}
|
|
4827
|
-
/**
|
|
4828
|
-
* Wires a focusable host element (typically a button) to an `ea-menu`,
|
|
4829
|
-
* handling click and keyboard activation (ArrowDown/Enter/Space to open,
|
|
4830
|
-
* Escape to close) and applying the appropriate ARIA attributes.
|
|
4831
|
-
*/
|
|
4832
|
-
export declare class MenuTriggerDirective {
|
|
4833
|
-
private readonly el;
|
|
4834
|
-
private readonly renderer;
|
|
4835
|
-
readonly menu: import("@angular/core").InputSignal<MenuComponent>;
|
|
4836
|
-
constructor();
|
|
4837
|
-
handleClick(): void;
|
|
4838
|
-
handleKeydown(event: KeyboardEvent): void;
|
|
4839
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<MenuTriggerDirective, never>;
|
|
4840
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<MenuTriggerDirective, "[eaMenuTrigger]", never, {
|
|
4841
|
-
"menu": {
|
|
4842
|
-
"alias": "eaMenuTrigger";
|
|
4843
|
-
"required": true;
|
|
4844
|
-
"isSignal": true;
|
|
4845
|
-
};
|
|
4846
|
-
}, {}, never, never, true, never>;
|
|
4847
|
-
}
|
|
4848
|
-
/**
|
|
4849
|
-
* Placement of the popover relative to its anchor. Each placement names the
|
|
4850
|
-
* side of the anchor the popover attaches to, optionally followed by a corner
|
|
4851
|
-
* suffix (`-start` or `-end`) that decides the alignment along the perpendicular
|
|
4852
|
-
* axis. The plain side names (`top`, `bottom`, `left`, `right`) centre the
|
|
4853
|
-
* popover on that axis.
|
|
4854
|
-
*/
|
|
4855
|
-
export type PopoverPlacement = 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'right';
|
|
4856
|
-
export interface PopoverPositionResult {
|
|
4857
|
-
/** Top coordinate in viewport (px); pairs with `position: fixed`. */
|
|
4858
|
-
readonly top: number;
|
|
4859
|
-
/** Left coordinate in viewport (px). */
|
|
4860
|
-
readonly left: number;
|
|
4861
|
-
/** Width hint when the popover should match the anchor's width. */
|
|
4862
|
-
readonly width?: number;
|
|
4863
|
-
/** The anchor's measured width, for a caller capping the popover against it. */
|
|
4864
|
-
readonly anchorWidth: number;
|
|
4865
|
-
/** Effective placement after any flip logic ran. */
|
|
4866
|
-
readonly placement: PopoverPlacement;
|
|
4867
|
-
}
|
|
4868
|
-
export interface PopoverPositionOptions {
|
|
4869
|
-
readonly placement: PopoverPlacement;
|
|
4870
|
-
/** Gap in px between the anchor and the popover. Default 4. */
|
|
4871
|
-
readonly offset?: number;
|
|
4872
|
-
/** Flip to the opposite side when the requested side overflows the viewport. Default true. */
|
|
4873
|
-
readonly flip?: boolean;
|
|
4874
|
-
/** Clamp inside the viewport when the popover still overflows after any flip. Default true. */
|
|
4875
|
-
readonly clamp?: boolean;
|
|
4876
|
-
/** Margin from the viewport edge in px when clamping. Default 8. */
|
|
4877
|
-
readonly margin?: number;
|
|
4878
|
-
/** Set the popover's width to match the anchor's. Useful for dropdown-style menus. */
|
|
4879
|
-
readonly matchAnchorWidth?: boolean;
|
|
4880
|
-
/** Right-to-left context. Swaps `-start`/`-end` alignment so they track the reading direction. */
|
|
4881
|
-
readonly rtl?: boolean;
|
|
4882
|
-
}
|
|
4883
|
-
interface Rect {
|
|
4884
|
-
readonly width: number;
|
|
4885
|
-
readonly height: number;
|
|
4886
|
-
}
|
|
4887
|
-
interface AnchorRect extends Rect {
|
|
4888
|
-
readonly top: number;
|
|
4889
|
-
readonly bottom: number;
|
|
4890
|
-
readonly left: number;
|
|
4891
|
-
readonly right: number;
|
|
4892
|
-
}
|
|
4893
|
-
interface Viewport {
|
|
4894
|
-
readonly width: number;
|
|
4895
|
-
readonly height: number;
|
|
4896
|
-
}
|
|
4897
|
-
/**
|
|
4898
|
-
* Computes the viewport-space top/left for a popover anchored to `anchorRect`,
|
|
4899
|
-
* applying optional flip-on-overflow and edge-clamp logic. Pure function, no
|
|
4900
|
-
* DOM access. Both `<ea-popover>` and `[eaTooltip]` consume this.
|
|
4901
|
-
*
|
|
4902
|
-
* @param anchorRect The anchor element's `getBoundingClientRect()`.
|
|
4903
|
-
* @param popoverRect Width and height of the popover (post-render measurement).
|
|
4904
|
-
* @param viewport Viewport dimensions (`window.innerWidth/Height`).
|
|
4905
|
-
* @param options Placement and behavior flags.
|
|
4906
|
-
*/
|
|
4907
|
-
export declare function computePopoverPosition(anchorRect: AnchorRect, popoverRect: Rect, viewport: Viewport, options: PopoverPositionOptions): PopoverPositionResult;
|
|
4908
|
-
/** ARIA role to apply to the popover surface. */
|
|
4909
|
-
export type PopoverRole = 'menu' | 'listbox' | 'dialog' | 'tooltip' | 'grid';
|
|
4910
|
-
/**
|
|
4911
|
-
* How the popover should respond to scroll / resize events while open.
|
|
4912
|
-
*
|
|
4913
|
-
* - `reposition` (default): re-measure the anchor and update the popover's
|
|
4914
|
-
* coordinates so it stays attached. Suitable for menus and tooltips.
|
|
4915
|
-
* - `close`: request close. Suitable for dropdown lists and the colour-picker
|
|
4916
|
-
* popover, where re-tracking a tall popover during a scroll feels intrusive.
|
|
4917
|
-
* - `ignore`: do nothing. The popover stays at its initial coordinates and
|
|
4918
|
-
* may visually detach from a scrolling anchor; useful when the anchor is
|
|
4919
|
-
* guaranteed not to move (e.g. inside a non-scrolling region).
|
|
4920
|
-
*/
|
|
4921
|
-
export type PopoverScrollBehavior = 'reposition' | 'close' | 'ignore';
|
|
4922
|
-
/** Width cap for a popover surface: px, or the anchor's own width. */
|
|
4923
|
-
export type PopoverMaxWidth = number | 'anchor';
|
|
4924
|
-
/**
|
|
4925
|
-
* Floating-element primitive. Renders projected content as `position: fixed`
|
|
4926
|
-
* anchored to an external element, with flip-on-overflow, viewport clamping,
|
|
4927
|
-
* outside-click and Escape dismissal, and SSR-safe scroll / resize handling.
|
|
4928
|
-
*
|
|
4929
|
-
* The primitive is intentionally low-level: a parent component drives the
|
|
4930
|
-
* `[open]` state and listens for `(closeRequested)` to mirror it back. Internal
|
|
4931
|
-
* library components (`<ea-menu>`, `<ea-dropdown>`, `<ea-color-picker>`,
|
|
4932
|
-
* `<ea-date-picker>`, `[eaTooltip]`) compose on top of it; downstream apps can
|
|
4933
|
-
* use it directly to build their own popover-based UI.
|
|
4934
|
-
*
|
|
4935
|
-
* @example
|
|
4936
|
-
* ```html
|
|
4937
|
-
* <button #trigger (click)="open.set(!open())">Open</button>
|
|
4938
|
-
* <ea-popover [anchor]="trigger" [open]="open()" (closeRequested)="open.set(false)">
|
|
4939
|
-
* <div>Popover content</div>
|
|
4940
|
-
* </ea-popover>
|
|
4941
|
-
* ```
|
|
4942
|
-
*/
|
|
4943
|
-
export declare class PopoverComponent {
|
|
4944
|
-
private readonly destroyRef;
|
|
4945
|
-
private readonly press;
|
|
4946
|
-
private readonly surfaceEl;
|
|
4947
|
-
/** Anchor element the popover positions itself against. */
|
|
4948
|
-
readonly anchor: import("@angular/core").InputSignal<HTMLElement | ElementRef<HTMLElement> | undefined>;
|
|
4949
|
-
/** Whether the popover is currently open. */
|
|
4950
|
-
readonly open: import("@angular/core").InputSignal<boolean>;
|
|
4951
|
-
/** Where the popover attaches relative to the anchor. */
|
|
4952
|
-
readonly placement: import("@angular/core").InputSignal<PopoverPlacement>;
|
|
4953
|
-
/** ARIA role applied to the popover surface. */
|
|
4954
|
-
readonly role: import("@angular/core").InputSignal<PopoverRole>;
|
|
4955
|
-
/** Accessible label. Falls back to nothing; consumers should provide one when no visible heading is in the popover. */
|
|
4956
|
-
readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
4957
|
-
/** Id of the element that labels the popover surface, forwarded as `aria-labelledby`. */
|
|
4958
|
-
readonly ariaLabelledby: import("@angular/core").InputSignal<string | undefined>;
|
|
4959
|
-
/** Keep Tab and Shift+Tab cycling within the surface while open (dialog pattern). */
|
|
4960
|
-
readonly trapFocus: import("@angular/core").InputSignal<boolean>;
|
|
4961
|
-
/** DOM id for the surface so trigger elements can reference it via aria-controls. */
|
|
4962
|
-
readonly surfaceId: import("@angular/core").InputSignal<string>;
|
|
4963
|
-
/**
|
|
4964
|
-
* Gap in px between the anchor and the popover. Defaults to 2 so an open panel
|
|
4965
|
-
* clears the anchor's active focus ring instead of sitting flush over it.
|
|
4966
|
-
*/
|
|
4967
|
-
readonly offset: import("@angular/core").InputSignal<number>;
|
|
4968
|
-
/** Flip to the opposite side when the requested side overflows the viewport. */
|
|
4969
|
-
readonly flip: import("@angular/core").InputSignal<boolean>;
|
|
4970
|
-
/** Clamp the popover inside the viewport when it would otherwise overflow. */
|
|
4971
|
-
readonly clamp: import("@angular/core").InputSignal<boolean>;
|
|
4972
|
-
/** Set the popover's `min-width` to match the anchor's width (dropdown pattern). */
|
|
4973
|
-
readonly matchAnchorWidth: import("@angular/core").InputSignal<boolean>;
|
|
4974
|
-
/**
|
|
4975
|
-
* Widest the surface may grow: a px value, or `anchor` to cap it at the
|
|
4976
|
-
* anchor's own width so long content truncates instead of widening the panel.
|
|
4977
|
-
*/
|
|
4978
|
-
readonly maxWidth: import("@angular/core").InputSignal<PopoverMaxWidth | undefined>;
|
|
4979
|
-
/** Close on click outside the popover and the anchor. */
|
|
4980
|
-
readonly closeOnOutsideClick: import("@angular/core").InputSignal<boolean>;
|
|
4981
|
-
/** Close on Escape. */
|
|
4982
|
-
readonly closeOnEscape: import("@angular/core").InputSignal<boolean>;
|
|
4983
|
-
/** What to do on scroll / resize while open. */
|
|
4984
|
-
readonly scrollBehavior: import("@angular/core").InputSignal<PopoverScrollBehavior>;
|
|
4985
|
-
/** Requested close. The parent should mirror this into `[open]`. */
|
|
4986
|
-
readonly closeRequested: import("@angular/core").OutputEmitterRef<void>;
|
|
4987
|
-
private readonly position;
|
|
4988
|
-
private latched;
|
|
4989
|
-
/** True placement after flip, for class-based styling (e.g. arrow direction). */
|
|
4990
|
-
readonly effectivePlacement: import("@angular/core").Signal<PopoverPlacement>;
|
|
4991
|
-
/** Latches true once the post-rAF reposition has run, so the surface is
|
|
4992
|
-
* only revealed after its dimensions are guaranteed stable. Reset on close. */
|
|
4993
|
-
private readonly stable;
|
|
4994
|
-
/** True once the first `reposition()` has resolved a placement on a
|
|
4995
|
-
* laid-out surface. Drives the `--positioned` class. */
|
|
4996
|
-
readonly isPositioned: import("@angular/core").Signal<boolean>;
|
|
4997
|
-
/** Class list for the surface. Computed in TS so the placement key (with
|
|
4998
|
-
* its interpolated suffix) and the positioned modifier compose cleanly. */
|
|
4999
|
-
readonly surfaceClass: import("@angular/core").Signal<string>;
|
|
5000
|
-
/** Inline style applied to the surface element. */
|
|
5001
|
-
readonly surfaceStyle: import("@angular/core").Signal<Record<string, string>>;
|
|
5413
|
+
key: string;
|
|
5414
|
+
} | null>;
|
|
5415
|
+
protected readonly tooltips: import("@angular/core").Signal<{
|
|
5416
|
+
x: number;
|
|
5417
|
+
y: number;
|
|
5418
|
+
title: string;
|
|
5419
|
+
rows: {
|
|
5420
|
+
name: string;
|
|
5421
|
+
color: string;
|
|
5422
|
+
value: string;
|
|
5423
|
+
active: boolean;
|
|
5424
|
+
}[];
|
|
5425
|
+
key: string;
|
|
5426
|
+
}[]>;
|
|
5427
|
+
protected readonly announcement: import("@angular/core").Signal<string>;
|
|
5428
|
+
protected readonly showsLegend: import("@angular/core").Signal<boolean>;
|
|
5002
5429
|
constructor();
|
|
5003
|
-
|
|
5004
|
-
|
|
5005
|
-
|
|
5006
|
-
|
|
5007
|
-
|
|
5008
|
-
|
|
5009
|
-
|
|
5010
|
-
|
|
5011
|
-
|
|
5012
|
-
|
|
5430
|
+
protected seriesColor(index: number): string;
|
|
5431
|
+
protected isDimmed(index: number): boolean;
|
|
5432
|
+
protected isActivePoint(seriesIndex: number, index: number): boolean;
|
|
5433
|
+
protected tableValue(value: number | null | undefined): string;
|
|
5434
|
+
protected onPointerDown(event: PointerEvent): void;
|
|
5435
|
+
protected onPointerMove(event: PointerEvent): void;
|
|
5436
|
+
protected onPointerUp(event: PointerEvent): void;
|
|
5437
|
+
protected onPointerCancel(event: PointerEvent): void;
|
|
5438
|
+
protected onPointerLeave(): void;
|
|
5439
|
+
protected onWheel(event: WheelEvent): void;
|
|
5440
|
+
protected onClick(): void;
|
|
5441
|
+
protected onFocus(): void;
|
|
5442
|
+
protected onBlur(): void;
|
|
5443
|
+
protected onKeydown(event: KeyboardEvent): void;
|
|
5444
|
+
private isValue;
|
|
5445
|
+
private yScale;
|
|
5446
|
+
private atPosition;
|
|
5447
|
+
private xLabelCandidates;
|
|
5448
|
+
private labelsFit;
|
|
5449
|
+
private xLabels;
|
|
5450
|
+
private widestXLabel;
|
|
5451
|
+
protected onGestureStart(event: Event): void;
|
|
5452
|
+
protected onGestureChange(event: Event): void;
|
|
5453
|
+
protected onGestureEnd(): void;
|
|
5454
|
+
private zoomTo;
|
|
5455
|
+
private minSpan;
|
|
5456
|
+
private unitsPerPx;
|
|
5457
|
+
private panTo;
|
|
5458
|
+
private endDrag;
|
|
5459
|
+
private holdTap;
|
|
5460
|
+
private endTapHold;
|
|
5461
|
+
private reveal;
|
|
5462
|
+
private indexAt;
|
|
5463
|
+
private valueAt;
|
|
5464
|
+
private firstPoint;
|
|
5465
|
+
private nearestValid;
|
|
5466
|
+
private eventFor;
|
|
5467
|
+
private setActive;
|
|
5468
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LineChartComponent, never>;
|
|
5469
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<LineChartComponent, "ea-line-chart", never, {
|
|
5470
|
+
"labels": {
|
|
5471
|
+
"alias": "labels";
|
|
5472
|
+
"required": false;
|
|
5013
5473
|
"isSignal": true;
|
|
5014
5474
|
};
|
|
5015
|
-
"
|
|
5016
|
-
"alias": "
|
|
5475
|
+
"series": {
|
|
5476
|
+
"alias": "series";
|
|
5017
5477
|
"required": false;
|
|
5018
5478
|
"isSignal": true;
|
|
5019
5479
|
};
|
|
5020
|
-
"
|
|
5021
|
-
"alias": "
|
|
5480
|
+
"xValues": {
|
|
5481
|
+
"alias": "xValues";
|
|
5022
5482
|
"required": false;
|
|
5023
5483
|
"isSignal": true;
|
|
5024
5484
|
};
|
|
5025
|
-
"
|
|
5026
|
-
"alias": "
|
|
5485
|
+
"xTicks": {
|
|
5486
|
+
"alias": "xTicks";
|
|
5027
5487
|
"required": false;
|
|
5028
5488
|
"isSignal": true;
|
|
5029
5489
|
};
|
|
5030
|
-
"
|
|
5031
|
-
"alias": "
|
|
5490
|
+
"visibleXSpan": {
|
|
5491
|
+
"alias": "visibleXSpan";
|
|
5032
5492
|
"required": false;
|
|
5033
5493
|
"isSignal": true;
|
|
5034
5494
|
};
|
|
5035
|
-
"
|
|
5036
|
-
"alias": "
|
|
5495
|
+
"curve": {
|
|
5496
|
+
"alias": "curve";
|
|
5037
5497
|
"required": false;
|
|
5038
5498
|
"isSignal": true;
|
|
5039
5499
|
};
|
|
5040
|
-
"
|
|
5041
|
-
"alias": "
|
|
5500
|
+
"showArea": {
|
|
5501
|
+
"alias": "showArea";
|
|
5042
5502
|
"required": false;
|
|
5043
5503
|
"isSignal": true;
|
|
5044
5504
|
};
|
|
5045
|
-
"
|
|
5046
|
-
"alias": "
|
|
5505
|
+
"showPoints": {
|
|
5506
|
+
"alias": "showPoints";
|
|
5047
5507
|
"required": false;
|
|
5048
5508
|
"isSignal": true;
|
|
5049
5509
|
};
|
|
5050
|
-
"
|
|
5051
|
-
"alias": "
|
|
5510
|
+
"showGrid": {
|
|
5511
|
+
"alias": "showGrid";
|
|
5052
5512
|
"required": false;
|
|
5053
5513
|
"isSignal": true;
|
|
5054
5514
|
};
|
|
5055
|
-
"
|
|
5056
|
-
"alias": "
|
|
5515
|
+
"showLegend": {
|
|
5516
|
+
"alias": "showLegend";
|
|
5057
5517
|
"required": false;
|
|
5058
5518
|
"isSignal": true;
|
|
5059
5519
|
};
|
|
5060
|
-
"
|
|
5061
|
-
"alias": "
|
|
5520
|
+
"yMin": {
|
|
5521
|
+
"alias": "yMin";
|
|
5062
5522
|
"required": false;
|
|
5063
5523
|
"isSignal": true;
|
|
5064
5524
|
};
|
|
5065
|
-
"
|
|
5066
|
-
"alias": "
|
|
5525
|
+
"yMax": {
|
|
5526
|
+
"alias": "yMax";
|
|
5067
5527
|
"required": false;
|
|
5068
5528
|
"isSignal": true;
|
|
5069
5529
|
};
|
|
5070
|
-
"
|
|
5071
|
-
"alias": "
|
|
5530
|
+
"xLabelOrientation": {
|
|
5531
|
+
"alias": "xLabelOrientation";
|
|
5072
5532
|
"required": false;
|
|
5073
5533
|
"isSignal": true;
|
|
5074
5534
|
};
|
|
5075
|
-
"
|
|
5076
|
-
"alias": "
|
|
5535
|
+
"showAxisBreak": {
|
|
5536
|
+
"alias": "showAxisBreak";
|
|
5077
5537
|
"required": false;
|
|
5078
5538
|
"isSignal": true;
|
|
5079
5539
|
};
|
|
5080
|
-
"
|
|
5081
|
-
"alias": "
|
|
5540
|
+
"height": {
|
|
5541
|
+
"alias": "height";
|
|
5082
5542
|
"required": false;
|
|
5083
5543
|
"isSignal": true;
|
|
5084
5544
|
};
|
|
5085
|
-
"
|
|
5086
|
-
"alias": "
|
|
5545
|
+
"size": {
|
|
5546
|
+
"alias": "size";
|
|
5547
|
+
"required": false;
|
|
5548
|
+
"isSignal": true;
|
|
5549
|
+
};
|
|
5550
|
+
"animation": {
|
|
5551
|
+
"alias": "animation";
|
|
5552
|
+
"required": false;
|
|
5553
|
+
"isSignal": true;
|
|
5554
|
+
};
|
|
5555
|
+
"animationDuration": {
|
|
5556
|
+
"alias": "animationDuration";
|
|
5557
|
+
"required": false;
|
|
5558
|
+
"isSignal": true;
|
|
5559
|
+
};
|
|
5560
|
+
"formatValue": {
|
|
5561
|
+
"alias": "formatValue";
|
|
5562
|
+
"required": false;
|
|
5563
|
+
"isSignal": true;
|
|
5564
|
+
};
|
|
5565
|
+
"ariaLabel": {
|
|
5566
|
+
"alias": "aria-label";
|
|
5087
5567
|
"required": false;
|
|
5088
5568
|
"isSignal": true;
|
|
5089
5569
|
};
|
|
5090
5570
|
}, {
|
|
5091
|
-
"
|
|
5092
|
-
|
|
5571
|
+
"pointClick": "pointClick";
|
|
5572
|
+
"activePointChange": "activePointChange";
|
|
5573
|
+
"visibleRangeChange": "visibleRangeChange";
|
|
5574
|
+
}, never, never, true, never>;
|
|
5575
|
+
}
|
|
5576
|
+
/** Visual style of a menu item; `danger` for destructive actions. */
|
|
5577
|
+
export type MenuItemVariant = 'default' | 'danger';
|
|
5578
|
+
/**
|
|
5579
|
+
* Selectable row inside an `ea-menu`. Supports leading icons via the `icon`
|
|
5580
|
+
* content slot, a disabled state, and a `danger` variant for destructive
|
|
5581
|
+
* actions. Inherits its size from the parent menu, and activating an item
|
|
5582
|
+
* closes that menu.
|
|
5583
|
+
*/
|
|
5584
|
+
export declare class MenuItemComponent {
|
|
5585
|
+
private readonly menu;
|
|
5586
|
+
protected readonly itemId: string;
|
|
5587
|
+
protected readonly tabIndex: import("@angular/core").Signal<0 | -1>;
|
|
5588
|
+
readonly disabled: import("@angular/core").InputSignal<boolean>;
|
|
5589
|
+
readonly variant: import("@angular/core").InputSignal<MenuItemVariant>;
|
|
5590
|
+
/** Fires when the item is activated; the parent menu closes immediately afterwards. */
|
|
5591
|
+
readonly clicked: import("@angular/core").OutputEmitterRef<MouseEvent>;
|
|
5592
|
+
handleClick(event: MouseEvent): void;
|
|
5593
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MenuItemComponent, never>;
|
|
5594
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<MenuItemComponent, "ea-menu-item", never, {
|
|
5595
|
+
"disabled": {
|
|
5596
|
+
"alias": "disabled";
|
|
5597
|
+
"required": false;
|
|
5598
|
+
"isSignal": true;
|
|
5599
|
+
};
|
|
5600
|
+
"variant": {
|
|
5601
|
+
"alias": "variant";
|
|
5602
|
+
"required": false;
|
|
5603
|
+
"isSignal": true;
|
|
5604
|
+
};
|
|
5605
|
+
}, {
|
|
5606
|
+
"clicked": "clicked";
|
|
5607
|
+
}, never, ["[slot=icon]", "*"], true, never>;
|
|
5608
|
+
}
|
|
5609
|
+
/**
|
|
5610
|
+
* Wires a focusable host element (typically a button) to an `ea-menu`,
|
|
5611
|
+
* handling click and keyboard activation (ArrowDown/Enter/Space to open,
|
|
5612
|
+
* Escape to close) and applying the appropriate ARIA attributes.
|
|
5613
|
+
*/
|
|
5614
|
+
export declare class MenuTriggerDirective {
|
|
5615
|
+
private readonly el;
|
|
5616
|
+
private readonly renderer;
|
|
5617
|
+
readonly menu: import("@angular/core").InputSignal<MenuComponent>;
|
|
5618
|
+
constructor();
|
|
5619
|
+
handleClick(): void;
|
|
5620
|
+
handleKeydown(event: KeyboardEvent): void;
|
|
5621
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MenuTriggerDirective, never>;
|
|
5622
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<MenuTriggerDirective, "[eaMenuTrigger]", never, {
|
|
5623
|
+
"menu": {
|
|
5624
|
+
"alias": "eaMenuTrigger";
|
|
5625
|
+
"required": true;
|
|
5626
|
+
"isSignal": true;
|
|
5627
|
+
};
|
|
5628
|
+
}, {}, never, never, true, never>;
|
|
5093
5629
|
}
|
|
5094
5630
|
/** Visual size of the multi-select trigger. */
|
|
5095
5631
|
export type MultiSelectSize = EaSize;
|
|
@@ -5114,6 +5650,8 @@ export declare class MultiSelectComponent implements ControlValueAccessor {
|
|
|
5114
5650
|
readonly label: import("@angular/core").InputSignal<string | undefined>;
|
|
5115
5651
|
/** Optional icon component rendered before the label text. */
|
|
5116
5652
|
readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
|
|
5653
|
+
/** Help revealed by an info button beside the label, as plain text or a template. */
|
|
5654
|
+
readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
|
|
5117
5655
|
/** Accessible name for the combobox when no visible `label` is set. */
|
|
5118
5656
|
readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
5119
5657
|
readonly placeholder: import("@angular/core").InputSignal<string | undefined>;
|
|
@@ -5302,6 +5840,11 @@ export declare class MultiSelectComponent implements ControlValueAccessor {
|
|
|
5302
5840
|
"required": false;
|
|
5303
5841
|
"isSignal": true;
|
|
5304
5842
|
};
|
|
5843
|
+
"labelHelp": {
|
|
5844
|
+
"alias": "labelHelp";
|
|
5845
|
+
"required": false;
|
|
5846
|
+
"isSignal": true;
|
|
5847
|
+
};
|
|
5305
5848
|
"ariaLabel": {
|
|
5306
5849
|
"alias": "aria-label";
|
|
5307
5850
|
"required": false;
|
|
@@ -5423,6 +5966,8 @@ export declare class NumberInputComponent implements ControlValueAccessor {
|
|
|
5423
5966
|
readonly label: import("@angular/core").InputSignal<string | undefined>;
|
|
5424
5967
|
/** Optional icon component rendered before the label text. */
|
|
5425
5968
|
readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
|
|
5969
|
+
/** Help revealed by an info button beside the label, as plain text or a template. */
|
|
5970
|
+
readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
|
|
5426
5971
|
/** Placeholder shown while the field is empty. */
|
|
5427
5972
|
readonly placeholder: import("@angular/core").InputSignal<string>;
|
|
5428
5973
|
/** Visual size of the field. */
|
|
@@ -5511,6 +6056,11 @@ export declare class NumberInputComponent implements ControlValueAccessor {
|
|
|
5511
6056
|
"required": false;
|
|
5512
6057
|
"isSignal": true;
|
|
5513
6058
|
};
|
|
6059
|
+
"labelHelp": {
|
|
6060
|
+
"alias": "labelHelp";
|
|
6061
|
+
"required": false;
|
|
6062
|
+
"isSignal": true;
|
|
6063
|
+
};
|
|
5514
6064
|
"placeholder": {
|
|
5515
6065
|
"alias": "placeholder";
|
|
5516
6066
|
"required": false;
|
|
@@ -5998,6 +6548,8 @@ export declare class RadioGroupComponent implements ControlValueAccessor {
|
|
|
5998
6548
|
readonly label: import("@angular/core").InputSignal<string | undefined>;
|
|
5999
6549
|
/** Optional icon component rendered before the label text. */
|
|
6000
6550
|
readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
|
|
6551
|
+
/** Help revealed by an info button beside the label, as plain text or a template. */
|
|
6552
|
+
readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
|
|
6001
6553
|
readonly hint: import("@angular/core").InputSignal<string | undefined>;
|
|
6002
6554
|
readonly errorMsg: import("@angular/core").InputSignal<string | undefined>;
|
|
6003
6555
|
/** Per-validator-key message overrides for a bound form control (e.g. `{ required: '...' }`). */
|
|
@@ -6063,6 +6615,11 @@ export declare class RadioGroupComponent implements ControlValueAccessor {
|
|
|
6063
6615
|
"required": false;
|
|
6064
6616
|
"isSignal": true;
|
|
6065
6617
|
};
|
|
6618
|
+
"labelHelp": {
|
|
6619
|
+
"alias": "labelHelp";
|
|
6620
|
+
"required": false;
|
|
6621
|
+
"isSignal": true;
|
|
6622
|
+
};
|
|
6066
6623
|
"hint": {
|
|
6067
6624
|
"alias": "hint";
|
|
6068
6625
|
"required": false;
|
|
@@ -6162,6 +6719,8 @@ export declare class RangeSliderComponent implements ControlValueAccessor {
|
|
|
6162
6719
|
readonly label: import("@angular/core").InputSignal<string | undefined>;
|
|
6163
6720
|
/** Optional icon component rendered before the label text. */
|
|
6164
6721
|
readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
|
|
6722
|
+
/** Help revealed by an info button beside the label, as plain text or a template. */
|
|
6723
|
+
readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
|
|
6165
6724
|
readonly hint: import("@angular/core").InputSignal<string | undefined>;
|
|
6166
6725
|
readonly errorMsg: import("@angular/core").InputSignal<string | undefined>;
|
|
6167
6726
|
/** Per-validator-key message overrides for a bound form control (e.g. `{ required: '...' }`). */
|
|
@@ -6237,6 +6796,11 @@ export declare class RangeSliderComponent implements ControlValueAccessor {
|
|
|
6237
6796
|
"required": false;
|
|
6238
6797
|
"isSignal": true;
|
|
6239
6798
|
};
|
|
6799
|
+
"labelHelp": {
|
|
6800
|
+
"alias": "labelHelp";
|
|
6801
|
+
"required": false;
|
|
6802
|
+
"isSignal": true;
|
|
6803
|
+
};
|
|
6240
6804
|
"hint": {
|
|
6241
6805
|
"alias": "hint";
|
|
6242
6806
|
"required": false;
|
|
@@ -6353,6 +6917,8 @@ export declare class RatingComponent implements ControlValueAccessor {
|
|
|
6353
6917
|
readonly label: import("@angular/core").InputSignal<string | undefined>;
|
|
6354
6918
|
/** Optional icon component rendered before the label text. */
|
|
6355
6919
|
readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
|
|
6920
|
+
/** Help revealed by an info button beside the label, as plain text or a template. */
|
|
6921
|
+
readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
|
|
6356
6922
|
readonly hint: import("@angular/core").InputSignal<string | undefined>;
|
|
6357
6923
|
readonly errorMsg: import("@angular/core").InputSignal<string | undefined>;
|
|
6358
6924
|
/** Per-validator-key message overrides for a bound form control (e.g. `{ required: '...' }`). */
|
|
@@ -6433,6 +6999,11 @@ export declare class RatingComponent implements ControlValueAccessor {
|
|
|
6433
6999
|
"required": false;
|
|
6434
7000
|
"isSignal": true;
|
|
6435
7001
|
};
|
|
7002
|
+
"labelHelp": {
|
|
7003
|
+
"alias": "labelHelp";
|
|
7004
|
+
"required": false;
|
|
7005
|
+
"isSignal": true;
|
|
7006
|
+
};
|
|
6436
7007
|
"hint": {
|
|
6437
7008
|
"alias": "hint";
|
|
6438
7009
|
"required": false;
|
|
@@ -6527,6 +7098,8 @@ export declare class SegmentedComponent implements ControlValueAccessor {
|
|
|
6527
7098
|
readonly label: import("@angular/core").InputSignal<string | undefined>;
|
|
6528
7099
|
/** Optional icon component rendered before the label text. */
|
|
6529
7100
|
readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
|
|
7101
|
+
/** Help revealed by an info button beside the label, as plain text or a template. */
|
|
7102
|
+
readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
|
|
6530
7103
|
readonly hint: import("@angular/core").InputSignal<string | undefined>;
|
|
6531
7104
|
readonly errorMsg: import("@angular/core").InputSignal<string | undefined>;
|
|
6532
7105
|
/** Per-validator-key message overrides for a bound form control (e.g. `{ required: '...' }`). */
|
|
@@ -6584,6 +7157,11 @@ export declare class SegmentedComponent implements ControlValueAccessor {
|
|
|
6584
7157
|
"required": false;
|
|
6585
7158
|
"isSignal": true;
|
|
6586
7159
|
};
|
|
7160
|
+
"labelHelp": {
|
|
7161
|
+
"alias": "labelHelp";
|
|
7162
|
+
"required": false;
|
|
7163
|
+
"isSignal": true;
|
|
7164
|
+
};
|
|
6587
7165
|
"hint": {
|
|
6588
7166
|
"alias": "hint";
|
|
6589
7167
|
"required": false;
|
|
@@ -6688,6 +7266,8 @@ export declare class SliderComponent implements ControlValueAccessor {
|
|
|
6688
7266
|
readonly label: import("@angular/core").InputSignal<string | undefined>;
|
|
6689
7267
|
/** Optional icon component rendered before the label text. */
|
|
6690
7268
|
readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
|
|
7269
|
+
/** Help revealed by an info button beside the label, as plain text or a template. */
|
|
7270
|
+
readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
|
|
6691
7271
|
readonly hint: import("@angular/core").InputSignal<string | undefined>;
|
|
6692
7272
|
readonly errorMsg: import("@angular/core").InputSignal<string | undefined>;
|
|
6693
7273
|
/** Per-validator-key message overrides for a bound form control (e.g. `{ required: '...' }`). */
|
|
@@ -6765,6 +7345,11 @@ export declare class SliderComponent implements ControlValueAccessor {
|
|
|
6765
7345
|
"required": false;
|
|
6766
7346
|
"isSignal": true;
|
|
6767
7347
|
};
|
|
7348
|
+
"labelHelp": {
|
|
7349
|
+
"alias": "labelHelp";
|
|
7350
|
+
"required": false;
|
|
7351
|
+
"isSignal": true;
|
|
7352
|
+
};
|
|
6768
7353
|
"hint": {
|
|
6769
7354
|
"alias": "hint";
|
|
6770
7355
|
"required": false;
|
|
@@ -7018,6 +7603,8 @@ export declare class StepperComponent {
|
|
|
7018
7603
|
}
|
|
7019
7604
|
/** Visual size of the switch. */
|
|
7020
7605
|
export type SwitchSize = EaSize;
|
|
7606
|
+
/** Status tone applied to the switch track in both states. */
|
|
7607
|
+
export type SwitchVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
|
|
7021
7608
|
/**
|
|
7022
7609
|
* On/off toggle styled as a sliding switch. Backed by a visually hidden
|
|
7023
7610
|
* native checkbox and integrates with Angular forms via
|
|
@@ -7030,6 +7617,15 @@ export declare class SwitchComponent implements ControlValueAccessor {
|
|
|
7030
7617
|
/** Per-validator-key message overrides for a bound form control (e.g. `{ required: '...' }`). */
|
|
7031
7618
|
readonly errorMessages: import("@angular/core").InputSignal<Partial<Record<string, string>> | undefined>;
|
|
7032
7619
|
readonly size: import("@angular/core").InputSignal<EaSize>;
|
|
7620
|
+
/**
|
|
7621
|
+
* Status tone for the track: a tinted wash with a toned border while off and
|
|
7622
|
+
* the solid tone while on. `default` keeps the neutral off track and brand on track.
|
|
7623
|
+
*/
|
|
7624
|
+
readonly variant: import("@angular/core").InputSignal<SwitchVariant>;
|
|
7625
|
+
/** Optional icon component drawn in the thumb while the switch is on. */
|
|
7626
|
+
readonly onIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
|
|
7627
|
+
/** Optional icon component drawn in the thumb while the switch is off. */
|
|
7628
|
+
readonly offIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
|
|
7033
7629
|
readonly disabled: import("@angular/core").InputSignal<boolean>;
|
|
7034
7630
|
readonly required: import("@angular/core").InputSignal<boolean>;
|
|
7035
7631
|
readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
@@ -7052,6 +7648,7 @@ export declare class SwitchComponent implements ControlValueAccessor {
|
|
|
7052
7648
|
'ea-switch--disabled': boolean;
|
|
7053
7649
|
'ea-switch--error': boolean;
|
|
7054
7650
|
}>;
|
|
7651
|
+
protected readonly thumbIcon: import("@angular/core").Signal<Type<unknown> | undefined>;
|
|
7055
7652
|
writeValue(val: boolean): void;
|
|
7056
7653
|
registerOnChange(fn: (value: boolean) => void): void;
|
|
7057
7654
|
registerOnTouched(fn: () => void): void;
|
|
@@ -7084,6 +7681,21 @@ export declare class SwitchComponent implements ControlValueAccessor {
|
|
|
7084
7681
|
"required": false;
|
|
7085
7682
|
"isSignal": true;
|
|
7086
7683
|
};
|
|
7684
|
+
"variant": {
|
|
7685
|
+
"alias": "variant";
|
|
7686
|
+
"required": false;
|
|
7687
|
+
"isSignal": true;
|
|
7688
|
+
};
|
|
7689
|
+
"onIcon": {
|
|
7690
|
+
"alias": "onIcon";
|
|
7691
|
+
"required": false;
|
|
7692
|
+
"isSignal": true;
|
|
7693
|
+
};
|
|
7694
|
+
"offIcon": {
|
|
7695
|
+
"alias": "offIcon";
|
|
7696
|
+
"required": false;
|
|
7697
|
+
"isSignal": true;
|
|
7698
|
+
};
|
|
7087
7699
|
"disabled": {
|
|
7088
7700
|
"alias": "disabled";
|
|
7089
7701
|
"required": false;
|
|
@@ -7375,11 +7987,19 @@ export declare class TagComponent {
|
|
|
7375
7987
|
*/
|
|
7376
7988
|
readonly maxWidth: import("@angular/core").InputSignal<string | number | undefined>;
|
|
7377
7989
|
/**
|
|
7378
|
-
* Fill colour
|
|
7379
|
-
*
|
|
7380
|
-
*
|
|
7990
|
+
* Fill colour, for a tag carrying a colour of its own (a user-chosen label).
|
|
7991
|
+
* Paints the chip and its border, and takes precedence over `variant`. On
|
|
7992
|
+
* its own it must be a hex value, from which the tag picks whichever ink
|
|
7993
|
+
* reads better; alongside `ink` it takes any CSS colour, such as a
|
|
7994
|
+
* theme-aware `var(--my-token)`.
|
|
7381
7995
|
*/
|
|
7382
7996
|
readonly color: import("@angular/core").InputSignal<string | undefined>;
|
|
7997
|
+
/**
|
|
7998
|
+
* Text colour, as any CSS colour, overriding the ink the tag would pick for
|
|
7999
|
+
* `color`. Supplying it lets `color` be a value the tag cannot measure, so
|
|
8000
|
+
* the contrast between the two rests with the caller.
|
|
8001
|
+
*/
|
|
8002
|
+
readonly ink: import("@angular/core").InputSignal<string | undefined>;
|
|
7383
8003
|
/**
|
|
7384
8004
|
* Where a label clipped by `maxWidth` reveals its full text. Set `none` for
|
|
7385
8005
|
* a tag rendered inside a tooltip, which would otherwise stack a second
|
|
@@ -7409,7 +8029,7 @@ export declare class TagComponent {
|
|
|
7409
8029
|
}>;
|
|
7410
8030
|
/** `maxWidth` as a CSS length; a bare number is px, as the input documents. */
|
|
7411
8031
|
protected readonly resolvedMaxWidth: import("@angular/core").Signal<string | null>;
|
|
7412
|
-
/**
|
|
8032
|
+
/** The caller's `ink`, else one that reads on a hex `color`, else `null`. */
|
|
7413
8033
|
protected readonly resolvedInk: import("@angular/core").Signal<string | null>;
|
|
7414
8034
|
protected readonly resolvedColor: import("@angular/core").Signal<string | null>;
|
|
7415
8035
|
constructor();
|
|
@@ -7457,6 +8077,11 @@ export declare class TagComponent {
|
|
|
7457
8077
|
"required": false;
|
|
7458
8078
|
"isSignal": true;
|
|
7459
8079
|
};
|
|
8080
|
+
"ink": {
|
|
8081
|
+
"alias": "ink";
|
|
8082
|
+
"required": false;
|
|
8083
|
+
"isSignal": true;
|
|
8084
|
+
};
|
|
7460
8085
|
"tooltip": {
|
|
7461
8086
|
"alias": "tooltip";
|
|
7462
8087
|
"required": false;
|
|
@@ -7480,9 +8105,15 @@ export declare class TagComponent {
|
|
|
7480
8105
|
export type TextareaSize = EaSize;
|
|
7481
8106
|
/** Axis along which the user is allowed to resize the textarea. */
|
|
7482
8107
|
export type TextareaResize = 'none' | 'vertical' | 'horizontal' | 'both';
|
|
8108
|
+
/** Selected character range in the textarea; `start` equals `end` for a bare caret. */
|
|
8109
|
+
export interface TextareaSelection {
|
|
8110
|
+
readonly start: number;
|
|
8111
|
+
readonly end: number;
|
|
8112
|
+
}
|
|
7483
8113
|
/**
|
|
7484
8114
|
* Multiline text field that mirrors the `ea-input` API. Supports configurable
|
|
7485
|
-
* `resize` direction and `maxlength`,
|
|
8115
|
+
* `resize` direction and `maxlength`, exposes the caret through
|
|
8116
|
+
* `getSelection()` and `insertText()`, and integrates with Angular
|
|
7486
8117
|
* forms via `ControlValueAccessor`.
|
|
7487
8118
|
*/
|
|
7488
8119
|
export declare class TextareaComponent implements ControlValueAccessor {
|
|
@@ -7490,6 +8121,8 @@ export declare class TextareaComponent implements ControlValueAccessor {
|
|
|
7490
8121
|
readonly label: import("@angular/core").InputSignal<string | undefined>;
|
|
7491
8122
|
/** Optional icon component rendered before the label text. */
|
|
7492
8123
|
readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
|
|
8124
|
+
/** Help revealed by an info button beside the label, as plain text or a template. */
|
|
8125
|
+
readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
|
|
7493
8126
|
/** Accessible name for the control when no visible `label` is set. */
|
|
7494
8127
|
readonly ariaLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
7495
8128
|
readonly placeholder: import("@angular/core").InputSignal<string>;
|
|
@@ -7542,6 +8175,19 @@ export declare class TextareaComponent implements ControlValueAccessor {
|
|
|
7542
8175
|
handleBlur(event: FocusEvent): void;
|
|
7543
8176
|
/** Moves keyboard focus to the underlying native textarea element. */
|
|
7544
8177
|
focus(): void;
|
|
8178
|
+
/**
|
|
8179
|
+
* Returns the selected range as character offsets into the value. The browser
|
|
8180
|
+
* keeps it after the field loses focus, so it still reflects where the caret
|
|
8181
|
+
* was left once the user has moved on to a button or a dialog.
|
|
8182
|
+
*/
|
|
8183
|
+
getSelection(): TextareaSelection;
|
|
8184
|
+
/**
|
|
8185
|
+
* Replaces the current selection with `text` and places the caret after it,
|
|
8186
|
+
* notifying the value model, a bound form control and native `input`
|
|
8187
|
+
* listeners exactly as typing does. Does nothing while disabled or read-only,
|
|
8188
|
+
* and leaves focus where it is.
|
|
8189
|
+
*/
|
|
8190
|
+
insertText(text: string): void;
|
|
7545
8191
|
static ɵfac: i0.ɵɵFactoryDeclaration<TextareaComponent, never>;
|
|
7546
8192
|
static ɵcmp: i0.ɵɵComponentDeclaration<TextareaComponent, "ea-textarea", never, {
|
|
7547
8193
|
"label": {
|
|
@@ -7554,6 +8200,11 @@ export declare class TextareaComponent implements ControlValueAccessor {
|
|
|
7554
8200
|
"required": false;
|
|
7555
8201
|
"isSignal": true;
|
|
7556
8202
|
};
|
|
8203
|
+
"labelHelp": {
|
|
8204
|
+
"alias": "labelHelp";
|
|
8205
|
+
"required": false;
|
|
8206
|
+
"isSignal": true;
|
|
8207
|
+
};
|
|
7557
8208
|
"ariaLabel": {
|
|
7558
8209
|
"alias": "aria-label";
|
|
7559
8210
|
"required": false;
|
|
@@ -7681,6 +8332,8 @@ export declare class TimePickerComponent implements ControlValueAccessor {
|
|
|
7681
8332
|
readonly label: import("@angular/core").InputSignal<string | undefined>;
|
|
7682
8333
|
/** Optional icon component rendered before the label text. */
|
|
7683
8334
|
readonly labelIcon: import("@angular/core").InputSignal<Type<unknown> | undefined>;
|
|
8335
|
+
/** Help revealed by an info button beside the label, as plain text or a template. */
|
|
8336
|
+
readonly labelHelp: import("@angular/core").InputSignal<string | TemplateRef<unknown> | undefined>;
|
|
7684
8337
|
readonly placeholder: import("@angular/core").InputSignal<string | undefined>;
|
|
7685
8338
|
readonly size: import("@angular/core").InputSignal<EaSize>;
|
|
7686
8339
|
readonly disabled: import("@angular/core").InputSignal<boolean>;
|
|
@@ -7851,6 +8504,11 @@ export declare class TimePickerComponent implements ControlValueAccessor {
|
|
|
7851
8504
|
"required": false;
|
|
7852
8505
|
"isSignal": true;
|
|
7853
8506
|
};
|
|
8507
|
+
"labelHelp": {
|
|
8508
|
+
"alias": "labelHelp";
|
|
8509
|
+
"required": false;
|
|
8510
|
+
"isSignal": true;
|
|
8511
|
+
};
|
|
7854
8512
|
"placeholder": {
|
|
7855
8513
|
"alias": "placeholder";
|
|
7856
8514
|
"required": false;
|