@ojiepermana/angular-component 22.0.44 → 22.0.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/fesm2022/ojiepermana-angular-component-accordion.mjs +9 -11
  2. package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs +93 -32
  3. package/fesm2022/ojiepermana-angular-component-alert.mjs +5 -9
  4. package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs +2 -3
  5. package/fesm2022/ojiepermana-angular-component-avatar.mjs +7 -13
  6. package/fesm2022/ojiepermana-angular-component-badge.mjs +2 -3
  7. package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs +16 -19
  8. package/fesm2022/ojiepermana-angular-component-button-group.mjs +4 -7
  9. package/fesm2022/ojiepermana-angular-component-button.mjs +2 -3
  10. package/fesm2022/ojiepermana-angular-component-calendar.mjs +7 -5
  11. package/fesm2022/ojiepermana-angular-component-card.mjs +8 -15
  12. package/fesm2022/ojiepermana-angular-component-carousel.mjs +15 -18
  13. package/fesm2022/ojiepermana-angular-component-checkbox.mjs +40 -11
  14. package/fesm2022/ojiepermana-angular-component-collapsible.mjs +8 -6
  15. package/fesm2022/ojiepermana-angular-component-combobox.mjs +28 -15
  16. package/fesm2022/ojiepermana-angular-component-command.mjs +9 -17
  17. package/fesm2022/ojiepermana-angular-component-composer.mjs +15 -18
  18. package/fesm2022/ojiepermana-angular-component-date-picker.mjs +36 -11
  19. package/fesm2022/ojiepermana-angular-component-dialog.mjs +85 -30
  20. package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs +31 -26
  21. package/fesm2022/ojiepermana-angular-component-editor.mjs +37 -28
  22. package/fesm2022/ojiepermana-angular-component-empty.mjs +7 -13
  23. package/fesm2022/ojiepermana-angular-component-form.mjs +14 -22
  24. package/fesm2022/ojiepermana-angular-component-hover-card.mjs +2 -3
  25. package/fesm2022/ojiepermana-angular-component-icon.mjs +51 -6
  26. package/fesm2022/ojiepermana-angular-component-input-group.mjs +17 -15
  27. package/fesm2022/ojiepermana-angular-component-input-otp.mjs +15 -14
  28. package/fesm2022/ojiepermana-angular-component-input.mjs +2 -3
  29. package/fesm2022/ojiepermana-angular-component-item.mjs +11 -21
  30. package/fesm2022/ojiepermana-angular-component-kanban.mjs +27 -26
  31. package/fesm2022/ojiepermana-angular-component-kbd.mjs +3 -5
  32. package/fesm2022/ojiepermana-angular-component-label.mjs +2 -3
  33. package/fesm2022/ojiepermana-angular-component-menubar.mjs +6 -6
  34. package/fesm2022/ojiepermana-angular-component-native-select.mjs +3 -3
  35. package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs +25 -12
  36. package/fesm2022/ojiepermana-angular-component-pagination.mjs +22 -13
  37. package/fesm2022/ojiepermana-angular-component-pillbox.mjs +64 -36
  38. package/fesm2022/ojiepermana-angular-component-progress.mjs +7 -5
  39. package/fesm2022/ojiepermana-angular-component-radio.mjs +12 -8
  40. package/fesm2022/ojiepermana-angular-component-resizable.mjs +22 -11
  41. package/fesm2022/ojiepermana-angular-component-scroll-area.mjs +8 -6
  42. package/fesm2022/ojiepermana-angular-component-select.mjs +29 -17
  43. package/fesm2022/ojiepermana-angular-component-separator.mjs +2 -3
  44. package/fesm2022/ojiepermana-angular-component-sheet.mjs +86 -30
  45. package/fesm2022/ojiepermana-angular-component-skeleton.mjs +2 -3
  46. package/fesm2022/ojiepermana-angular-component-slider.mjs +25 -13
  47. package/fesm2022/ojiepermana-angular-component-spinner.mjs +6 -5
  48. package/fesm2022/ojiepermana-angular-component-switch.mjs +17 -8
  49. package/fesm2022/ojiepermana-angular-component-table.mjs +9 -17
  50. package/fesm2022/ojiepermana-angular-component-tabs.mjs +5 -9
  51. package/fesm2022/ojiepermana-angular-component-textarea.mjs +2 -3
  52. package/fesm2022/ojiepermana-angular-component-timeline.mjs +16 -16
  53. package/fesm2022/ojiepermana-angular-component-toggle-group.mjs +10 -5
  54. package/fesm2022/ojiepermana-angular-component-toggle.mjs +2 -3
  55. package/fesm2022/ojiepermana-angular-component-tooltip.mjs +7 -6
  56. package/package.json +10 -1
  57. package/types/ojiepermana-angular-component-alert-dialog.d.ts +42 -3
  58. package/types/ojiepermana-angular-component-dialog.d.ts +33 -3
  59. package/types/ojiepermana-angular-component-icon.d.ts +48 -1
  60. package/types/ojiepermana-angular-component-sheet.d.ts +33 -3
@@ -3,6 +3,15 @@ import { ButtonVariant, ButtonSize } from '@ojiepermana/angular-component/button
3
3
 
4
4
  type AlertDialogSize = 'default' | 'sm';
5
5
 
6
+ /**
7
+ * Confirmation dialog with `role="alertdialog"`.
8
+ *
9
+ * For the accessible name/description to wire up automatically, project the
10
+ * matching `AlertDialogTitle` / `AlertDialogDescription` parts (they register
11
+ * their ids with this component). Plain `DialogTitle` / `DialogDescription` will
12
+ * not auto-wire here — pass `aria-labelledby` / `aria-describedby` explicitly if
13
+ * you use custom markup.
14
+ */
6
15
  declare class AlertDialogComponent {
7
16
  readonly open: _angular_core.ModelSignal<boolean>;
8
17
  readonly closeOnEscape: _angular_core.InputSignal<boolean>;
@@ -11,17 +20,33 @@ declare class AlertDialogComponent {
11
20
  readonly closeButtonLabel: _angular_core.InputSignal<string>;
12
21
  readonly labelledBy: _angular_core.InputSignal<string | null>;
13
22
  readonly describedBy: _angular_core.InputSignal<string | null>;
23
+ /** ARIA role passed to the underlying dialog surface. `'alertdialog'` by default. */
24
+ readonly role: _angular_core.InputSignal<string>;
14
25
  readonly class: _angular_core.InputSignal<string>;
15
26
  readonly radius: _angular_core.InputSignal<"sm" | "inherit" | "none" | "md" | "lg" | "xl" | "full">;
16
27
  readonly density: _angular_core.InputSignal<"inherit" | "compact" | "normal" | "relaxed" | "spacious">;
17
28
  readonly openedChange: _angular_core.OutputEmitterRef<boolean>;
18
29
  private readonly contentSize;
30
+ private readonly registeredTitleId;
31
+ private readonly registeredDescriptionId;
19
32
  readonly resolvedSize: _angular_core.Signal<AlertDialogSize>;
20
33
  protected readonly surfaceClasses: _angular_core.Signal<string>;
34
+ /** Explicit `aria-labelledby` wins; otherwise a projected `AlertDialogTitle` supplies the id. */
35
+ protected readonly resolvedLabelledBy: _angular_core.Signal<string | null>;
36
+ /** Explicit `aria-describedby` wins; otherwise a projected `AlertDialogDescription` supplies the id. */
37
+ protected readonly resolvedDescribedBy: _angular_core.Signal<string | null>;
21
38
  setContentSize(size: AlertDialogSize): void;
39
+ /** Called by a projected `AlertDialogTitle` so default usage has an accessible name (AXE-safe). */
40
+ registerTitleId(id: string | null): void;
41
+ /** Cleared by an `AlertDialogTitle` on destroy so a reopened alert never points at a stale id. */
42
+ unregisterTitleId(id: string): void;
43
+ /** Called by a projected `AlertDialogDescription`. */
44
+ registerDescriptionId(id: string | null): void;
45
+ /** Cleared by an `AlertDialogDescription` on destroy. */
46
+ unregisterDescriptionId(id: string): void;
22
47
  close(): void;
23
48
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AlertDialogComponent, never>;
24
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AlertDialogComponent, "AlertDialog", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "closeOnBackdropClick": { "alias": "closeOnBackdropClick"; "required": false; "isSignal": true; }; "showCloseButton": { "alias": "showCloseButton"; "required": false; "isSignal": true; }; "closeButtonLabel": { "alias": "closeButtonLabel"; "required": false; "isSignal": true; }; "labelledBy": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; "describedBy": { "alias": "aria-describedby"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "radius": { "alias": "radius"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "openedChange": "openedChange"; }, never, ["*"], true, never>;
49
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AlertDialogComponent, "AlertDialog", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "closeOnBackdropClick": { "alias": "closeOnBackdropClick"; "required": false; "isSignal": true; }; "showCloseButton": { "alias": "showCloseButton"; "required": false; "isSignal": true; }; "closeButtonLabel": { "alias": "closeButtonLabel"; "required": false; "isSignal": true; }; "labelledBy": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; "describedBy": { "alias": "aria-describedby"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "radius": { "alias": "radius"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "openedChange": "openedChange"; }, never, ["*"], true, never>;
25
50
  }
26
51
 
27
52
  declare class AlertDialogContentComponent {
@@ -40,16 +65,30 @@ declare class AlertDialogHeaderComponent {
40
65
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AlertDialogHeaderComponent, "AlertDialogHeader", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
41
66
  }
42
67
  declare class AlertDialogTitleComponent {
68
+ /** Explicit id override; when omitted a document-unique id is generated. */
69
+ readonly id: _angular_core.InputSignal<string | null>;
43
70
  readonly class: _angular_core.InputSignal<string>;
71
+ private readonly autoId;
72
+ private readonly alertDialog;
73
+ /** The id rendered on the element, used by the parent alert dialog for aria-labelledby. */
74
+ readonly resolvedId: _angular_core.Signal<string>;
44
75
  protected readonly classes: _angular_core.Signal<string>;
76
+ constructor();
45
77
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AlertDialogTitleComponent, never>;
46
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AlertDialogTitleComponent, "AlertDialogTitle, h2[AlertDialogTitle]", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
78
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AlertDialogTitleComponent, "AlertDialogTitle, h2[AlertDialogTitle]", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
47
79
  }
48
80
  declare class AlertDialogDescriptionComponent {
81
+ /** Explicit id override; when omitted a document-unique id is generated. */
82
+ readonly id: _angular_core.InputSignal<string | null>;
49
83
  readonly class: _angular_core.InputSignal<string>;
84
+ private readonly autoId;
85
+ private readonly alertDialog;
86
+ /** The id rendered on the element, used by the parent alert dialog for aria-describedby. */
87
+ readonly resolvedId: _angular_core.Signal<string>;
50
88
  protected readonly classes: _angular_core.Signal<string>;
89
+ constructor();
51
90
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AlertDialogDescriptionComponent, never>;
52
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AlertDialogDescriptionComponent, "AlertDialogDescription, p[AlertDialogDescription]", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
91
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AlertDialogDescriptionComponent, "AlertDialogDescription, p[AlertDialogDescription]", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
53
92
  }
54
93
  declare class AlertDialogMediaComponent {
55
94
  readonly class: _angular_core.InputSignal<string>;
@@ -30,10 +30,26 @@ declare class DialogComponent {
30
30
  readonly closeButtonLabel: _angular_core.InputSignal<string>;
31
31
  readonly labelledBy: _angular_core.InputSignal<string | null>;
32
32
  readonly describedBy: _angular_core.InputSignal<string | null>;
33
+ /** ARIA role for the surface. `'dialog'` by default; `AlertDialog` sets `'alertdialog'`. */
34
+ readonly role: _angular_core.InputSignal<string>;
33
35
  readonly class: _angular_core.InputSignal<string>;
34
36
  readonly radius: _angular_core.InputSignal<"inherit" | "none" | "sm" | "md" | "lg" | "xl" | "full">;
35
37
  readonly density: _angular_core.InputSignal<"inherit" | "compact" | "normal" | "relaxed" | "spacious">;
36
38
  readonly openedChange: _angular_core.OutputEmitterRef<boolean>;
39
+ private readonly registeredTitleId;
40
+ private readonly registeredDescriptionId;
41
+ /** Explicit `aria-labelledby` wins; otherwise a projected `DialogTitle` supplies the id. */
42
+ protected readonly resolvedLabelledBy: _angular_core.Signal<string | null>;
43
+ /** Explicit `aria-describedby` wins; otherwise a projected `DialogDescription` supplies the id. */
44
+ protected readonly resolvedDescribedBy: _angular_core.Signal<string | null>;
45
+ /** Called by a projected `DialogTitle` so default usage has an accessible name (AXE-safe). */
46
+ registerTitleId(id: string | null): void;
47
+ /** Cleared by a `DialogTitle` on destroy so a closed/reopened dialog never points at a stale id. */
48
+ unregisterTitleId(id: string): void;
49
+ /** Called by a projected `DialogDescription`. */
50
+ registerDescriptionId(id: string | null): void;
51
+ /** Cleared by a `DialogDescription` on destroy. */
52
+ unregisterDescriptionId(id: string): void;
37
53
  private readonly tpl;
38
54
  private overlayRef;
39
55
  private focusTrap;
@@ -47,7 +63,7 @@ declare class DialogComponent {
47
63
  private requestClose;
48
64
  close(): void;
49
65
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DialogComponent, never>;
50
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DialogComponent, "Dialog", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "closeOnBackdropClick": { "alias": "closeOnBackdropClick"; "required": false; "isSignal": true; }; "showCloseButton": { "alias": "showCloseButton"; "required": false; "isSignal": true; }; "closeButtonLabel": { "alias": "closeButtonLabel"; "required": false; "isSignal": true; }; "labelledBy": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; "describedBy": { "alias": "aria-describedby"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "radius": { "alias": "radius"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "openedChange": "openedChange"; }, never, ["*"], true, never>;
66
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DialogComponent, "Dialog", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "closeOnBackdropClick": { "alias": "closeOnBackdropClick"; "required": false; "isSignal": true; }; "showCloseButton": { "alias": "showCloseButton"; "required": false; "isSignal": true; }; "closeButtonLabel": { "alias": "closeButtonLabel"; "required": false; "isSignal": true; }; "labelledBy": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; "describedBy": { "alias": "aria-describedby"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "radius": { "alias": "radius"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "openedChange": "openedChange"; }, never, ["*"], true, never>;
51
67
  }
52
68
 
53
69
  declare class DialogCloseDirective {
@@ -64,16 +80,30 @@ declare class DialogHeaderComponent {
64
80
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DialogHeaderComponent, "DialogHeader", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
65
81
  }
66
82
  declare class DialogTitleComponent {
83
+ /** Explicit id override; when omitted a document-unique id is generated. */
84
+ readonly id: _angular_core.InputSignal<string | null>;
67
85
  readonly class: _angular_core.InputSignal<string>;
86
+ private readonly autoId;
87
+ private readonly dialog;
88
+ /** The id rendered on the element, used by the parent dialog for aria-labelledby. */
89
+ readonly resolvedId: _angular_core.Signal<string>;
68
90
  protected readonly classes: _angular_core.Signal<string>;
91
+ constructor();
69
92
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DialogTitleComponent, never>;
70
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DialogTitleComponent, "DialogTitle, h2[DialogTitle]", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
93
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DialogTitleComponent, "DialogTitle, h2[DialogTitle]", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
71
94
  }
72
95
  declare class DialogDescriptionComponent {
96
+ /** Explicit id override; when omitted a document-unique id is generated. */
97
+ readonly id: _angular_core.InputSignal<string | null>;
73
98
  readonly class: _angular_core.InputSignal<string>;
99
+ private readonly autoId;
100
+ private readonly dialog;
101
+ /** The id rendered on the element, used by the parent dialog for aria-describedby. */
102
+ readonly resolvedId: _angular_core.Signal<string>;
74
103
  protected readonly classes: _angular_core.Signal<string>;
104
+ constructor();
75
105
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DialogDescriptionComponent, never>;
76
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DialogDescriptionComponent, "DialogDescription, p[DialogDescription]", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
106
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DialogDescriptionComponent, "DialogDescription, p[DialogDescription]", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
77
107
  }
78
108
  declare class DialogContentComponent {
79
109
  readonly class: _angular_core.InputSignal<string>;
@@ -1,4 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
+ import { InjectionToken, EnvironmentProviders } from '@angular/core';
2
3
 
3
4
  declare class IconComponent {
4
5
  private readonly materialSymbols;
@@ -20,12 +21,58 @@ declare class IconComponent {
20
21
  declare const MATERIAL_SYMBOLS_FONT_ATTR = "data-icon-font";
21
22
  declare const MATERIAL_SYMBOLS_FONT_ID = "material-symbols-outlined";
22
23
  declare const MATERIAL_SYMBOLS_FONT_HREF = "https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0";
24
+ /** Configuration for {@link provideMaterialSymbols}. */
25
+ interface MaterialSymbolsConfig {
26
+ /**
27
+ * Stylesheet URL to load the Material Symbols font from. Defaults to the
28
+ * Google Fonts URL ({@link MATERIAL_SYMBOLS_FONT_HREF}). Point this at a
29
+ * self-hosted stylesheet for offline / CSP / privacy-safe setups.
30
+ */
31
+ readonly href?: string;
32
+ }
33
+ /**
34
+ * Presence of this token is what enables {@link IconComponent} to auto-load the
35
+ * font. It is only provided when the app opts in via `provideMaterialSymbols()`;
36
+ * without it, `<Icon>` makes no network request.
37
+ */
38
+ declare const MATERIAL_SYMBOLS_CONFIG: InjectionToken<MaterialSymbolsConfig>;
23
39
  declare class MaterialSymbolsService {
24
40
  private readonly documentRef;
25
41
  private readonly platformId;
42
+ private readonly config;
43
+ /**
44
+ * Token-gated load. No-op unless the app opted in via `provideMaterialSymbols()`
45
+ * (which provides {@link MATERIAL_SYMBOLS_CONFIG}). Called by `IconComponent`
46
+ * so rendering an icon never triggers an implicit network request on its own.
47
+ */
26
48
  ensureLoaded(): void;
49
+ /**
50
+ * Explicitly inject the font stylesheet, regardless of whether the config
51
+ * token is present. Used by integrations that decide to load the font from
52
+ * their own option surface (e.g. `provideUiTheme({ icons: { materialSymbols: true } })`).
53
+ */
54
+ load(config?: MaterialSymbolsConfig): void;
27
55
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<MaterialSymbolsService, never>;
28
56
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<MaterialSymbolsService>;
29
57
  }
30
58
 
31
- export { IconComponent, MATERIAL_SYMBOLS_FONT_ATTR, MATERIAL_SYMBOLS_FONT_HREF, MATERIAL_SYMBOLS_FONT_ID, MaterialSymbolsService };
59
+ /**
60
+ * Opt in to loading the Material Symbols icon font that `<Icon>` renders with.
61
+ *
62
+ * By default `IconComponent` makes **no** network request — better for privacy,
63
+ * offline, and strict CSP. Add this provider to your bootstrap to fetch the font
64
+ * stylesheet once at startup. Pass `{ href }` to load from a self-hosted source
65
+ * instead of Google Fonts.
66
+ *
67
+ * @example
68
+ * // Google Fonts (default source):
69
+ * bootstrapApplication(App, { providers: [provideMaterialSymbols()] });
70
+ *
71
+ * @example
72
+ * // Self-hosted / offline:
73
+ * provideMaterialSymbols({ href: '/assets/material-symbols.css' });
74
+ */
75
+ declare function provideMaterialSymbols(config?: MaterialSymbolsConfig): EnvironmentProviders;
76
+
77
+ export { IconComponent, MATERIAL_SYMBOLS_CONFIG, MATERIAL_SYMBOLS_FONT_ATTR, MATERIAL_SYMBOLS_FONT_HREF, MATERIAL_SYMBOLS_FONT_ID, MaterialSymbolsService, provideMaterialSymbols };
78
+ export type { MaterialSymbolsConfig };
@@ -25,10 +25,18 @@ declare class SheetComponent {
25
25
  readonly closeButtonLabel: _angular_core.InputSignal<string>;
26
26
  readonly labelledBy: _angular_core.InputSignal<string | null>;
27
27
  readonly describedBy: _angular_core.InputSignal<string | null>;
28
+ /** ARIA role for the surface. Defaults to `'dialog'`. */
29
+ readonly role: _angular_core.InputSignal<string>;
28
30
  readonly class: _angular_core.InputSignal<string>;
29
31
  readonly radius: _angular_core.InputSignal<"inherit" | "none" | "sm" | "md" | "lg" | "xl" | "full">;
30
32
  readonly density: _angular_core.InputSignal<"inherit" | "compact" | "normal" | "relaxed" | "spacious">;
31
33
  readonly openedChange: _angular_core.OutputEmitterRef<boolean>;
34
+ private readonly registeredTitleId;
35
+ private readonly registeredDescriptionId;
36
+ /** Explicit `aria-labelledby` wins; otherwise a projected `SheetTitle` supplies the id. */
37
+ protected readonly resolvedLabelledBy: _angular_core.Signal<string | null>;
38
+ /** Explicit `aria-describedby` wins; otherwise a projected `SheetDescription` supplies the id. */
39
+ protected readonly resolvedDescribedBy: _angular_core.Signal<string | null>;
32
40
  private readonly tpl;
33
41
  private overlayRef;
34
42
  private focusTrap;
@@ -42,9 +50,17 @@ declare class SheetComponent {
42
50
  private attach;
43
51
  private detach;
44
52
  close(): void;
53
+ /** Called by a projected `SheetTitle` so default usage has an accessible name (AXE-safe). */
54
+ registerTitleId(id: string | null): void;
55
+ /** Cleared by a `SheetTitle` on destroy so a closed/reopened sheet never points at a stale id. */
56
+ unregisterTitleId(id: string): void;
57
+ /** Called by a projected `SheetDescription`. */
58
+ registerDescriptionId(id: string | null): void;
59
+ /** Cleared by a `SheetDescription` on destroy. */
60
+ unregisterDescriptionId(id: string): void;
45
61
  private isDrawerHost;
46
62
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SheetComponent, never>;
47
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SheetComponent, "Sheet, Drawer", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "side": { "alias": "side"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "closeOnBackdropClick": { "alias": "closeOnBackdropClick"; "required": false; "isSignal": true; }; "showCloseButton": { "alias": "showCloseButton"; "required": false; "isSignal": true; }; "closeButtonLabel": { "alias": "closeButtonLabel"; "required": false; "isSignal": true; }; "labelledBy": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; "describedBy": { "alias": "aria-describedby"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "radius": { "alias": "radius"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "openedChange": "openedChange"; }, never, ["*"], true, never>;
63
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SheetComponent, "Sheet, Drawer", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "side": { "alias": "side"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "closeOnBackdropClick": { "alias": "closeOnBackdropClick"; "required": false; "isSignal": true; }; "showCloseButton": { "alias": "showCloseButton"; "required": false; "isSignal": true; }; "closeButtonLabel": { "alias": "closeButtonLabel"; "required": false; "isSignal": true; }; "labelledBy": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; "describedBy": { "alias": "aria-describedby"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "radius": { "alias": "radius"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "openedChange": "openedChange"; }, never, ["*"], true, never>;
48
64
  }
49
65
 
50
66
  declare class SheetHeaderComponent {
@@ -54,16 +70,30 @@ declare class SheetHeaderComponent {
54
70
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SheetHeaderComponent, "SheetHeader, DrawerHeader", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
55
71
  }
56
72
  declare class SheetTitleComponent {
73
+ /** Explicit id override; when omitted a document-unique id is generated. */
74
+ readonly id: _angular_core.InputSignal<string | null>;
57
75
  readonly class: _angular_core.InputSignal<string>;
76
+ private readonly autoId;
77
+ private readonly sheet;
78
+ /** The id rendered on the element, used by the parent sheet for aria-labelledby. */
79
+ readonly resolvedId: _angular_core.Signal<string>;
58
80
  protected readonly classes: _angular_core.Signal<string>;
81
+ constructor();
59
82
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SheetTitleComponent, never>;
60
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SheetTitleComponent, "SheetTitle, DrawerTitle, h2[SheetTitle], h2[DrawerTitle]", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
83
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SheetTitleComponent, "SheetTitle, DrawerTitle, h2[SheetTitle], h2[DrawerTitle]", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
61
84
  }
62
85
  declare class SheetDescriptionComponent {
86
+ /** Explicit id override; when omitted a document-unique id is generated. */
87
+ readonly id: _angular_core.InputSignal<string | null>;
63
88
  readonly class: _angular_core.InputSignal<string>;
89
+ private readonly autoId;
90
+ private readonly sheet;
91
+ /** The id rendered on the element, used by the parent sheet for aria-describedby. */
92
+ readonly resolvedId: _angular_core.Signal<string>;
64
93
  protected readonly classes: _angular_core.Signal<string>;
94
+ constructor();
65
95
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SheetDescriptionComponent, never>;
66
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SheetDescriptionComponent, "SheetDescription, DrawerDescription, p[SheetDescription], p[DrawerDescription]", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
96
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SheetDescriptionComponent, "SheetDescription, DrawerDescription, p[SheetDescription], p[DrawerDescription]", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
67
97
  }
68
98
  declare class SheetContentComponent {
69
99
  readonly class: _angular_core.InputSignal<string>;