@ojiepermana/angular-component 22.0.43 → 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 (63) hide show
  1. package/fesm2022/ojiepermana-angular-component-accordion.mjs +21 -23
  2. package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs +111 -50
  3. package/fesm2022/ojiepermana-angular-component-alert.mjs +13 -17
  4. package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs +4 -5
  5. package/fesm2022/ojiepermana-angular-component-avatar.mjs +20 -26
  6. package/fesm2022/ojiepermana-angular-component-badge.mjs +4 -5
  7. package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs +32 -35
  8. package/fesm2022/ojiepermana-angular-component-button-group.mjs +10 -13
  9. package/fesm2022/ojiepermana-angular-component-button.mjs +4 -5
  10. package/fesm2022/ojiepermana-angular-component-calendar.mjs +10 -8
  11. package/fesm2022/ojiepermana-angular-component-card.mjs +22 -29
  12. package/fesm2022/ojiepermana-angular-component-carousel.mjs +31 -34
  13. package/fesm2022/ojiepermana-angular-component-checkbox.mjs +42 -13
  14. package/fesm2022/ojiepermana-angular-component-collapsible.mjs +19 -17
  15. package/fesm2022/ojiepermana-angular-component-combobox.mjs +30 -17
  16. package/fesm2022/ojiepermana-angular-component-command.mjs +29 -37
  17. package/fesm2022/ojiepermana-angular-component-composer.mjs +31 -34
  18. package/fesm2022/ojiepermana-angular-component-context-menu.mjs +3 -3
  19. package/fesm2022/ojiepermana-angular-component-date-picker.mjs +39 -14
  20. package/fesm2022/ojiepermana-angular-component-dialog.mjs +100 -45
  21. package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs +61 -56
  22. package/fesm2022/ojiepermana-angular-component-editor.mjs +52 -43
  23. package/fesm2022/ojiepermana-angular-component-empty.mjs +19 -25
  24. package/fesm2022/ojiepermana-angular-component-form.mjs +41 -49
  25. package/fesm2022/ojiepermana-angular-component-hover-card.mjs +10 -11
  26. package/fesm2022/ojiepermana-angular-component-icon.mjs +56 -11
  27. package/fesm2022/ojiepermana-angular-component-input-group.mjs +29 -27
  28. package/fesm2022/ojiepermana-angular-component-input-otp.mjs +29 -28
  29. package/fesm2022/ojiepermana-angular-component-input.mjs +4 -5
  30. package/fesm2022/ojiepermana-angular-component-item.mjs +31 -41
  31. package/fesm2022/ojiepermana-angular-component-kanban.mjs +47 -46
  32. package/fesm2022/ojiepermana-angular-component-kbd.mjs +7 -9
  33. package/fesm2022/ojiepermana-angular-component-label.mjs +4 -5
  34. package/fesm2022/ojiepermana-angular-component-menubar.mjs +16 -16
  35. package/fesm2022/ojiepermana-angular-component-native-select.mjs +11 -11
  36. package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs +41 -28
  37. package/fesm2022/ojiepermana-angular-component-pagination.mjs +25 -16
  38. package/fesm2022/ojiepermana-angular-component-pillbox.mjs +78 -50
  39. package/fesm2022/ojiepermana-angular-component-popover.mjs +6 -6
  40. package/fesm2022/ojiepermana-angular-component-progress.mjs +10 -8
  41. package/fesm2022/ojiepermana-angular-component-radio.mjs +17 -13
  42. package/fesm2022/ojiepermana-angular-component-resizable.mjs +32 -21
  43. package/fesm2022/ojiepermana-angular-component-scroll-area.mjs +11 -9
  44. package/fesm2022/ojiepermana-angular-component-select.mjs +35 -23
  45. package/fesm2022/ojiepermana-angular-component-separator.mjs +4 -5
  46. package/fesm2022/ojiepermana-angular-component-sheet.mjs +101 -45
  47. package/fesm2022/ojiepermana-angular-component-skeleton.mjs +4 -5
  48. package/fesm2022/ojiepermana-angular-component-slider.mjs +30 -18
  49. package/fesm2022/ojiepermana-angular-component-spinner.mjs +9 -8
  50. package/fesm2022/ojiepermana-angular-component-switch.mjs +19 -10
  51. package/fesm2022/ojiepermana-angular-component-table.mjs +26 -34
  52. package/fesm2022/ojiepermana-angular-component-tabs.mjs +20 -24
  53. package/fesm2022/ojiepermana-angular-component-textarea.mjs +4 -5
  54. package/fesm2022/ojiepermana-angular-component-timeline.mjs +28 -28
  55. package/fesm2022/ojiepermana-angular-component-toast.mjs +3 -3
  56. package/fesm2022/ojiepermana-angular-component-toggle-group.mjs +18 -13
  57. package/fesm2022/ojiepermana-angular-component-toggle.mjs +4 -5
  58. package/fesm2022/ojiepermana-angular-component-tooltip.mjs +20 -19
  59. package/package.json +10 -1
  60. package/types/ojiepermana-angular-component-alert-dialog.d.ts +42 -3
  61. package/types/ojiepermana-angular-component-dialog.d.ts +33 -3
  62. package/types/ojiepermana-angular-component-icon.d.ts +48 -1
  63. package/types/ojiepermana-angular-component-sheet.d.ts +33 -3
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Directive, input, model, numberAttribute, inject, ElementRef, signal, computed, forwardRef, ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { Directive, input, model, numberAttribute, inject, ElementRef, signal, computed, forwardRef, Component } from '@angular/core';
3
3
  import { toggleVariants } from '@ojiepermana/angular-component/toggle';
4
4
  import { cn } from '@ojiepermana/angular-component/utils';
5
5
 
@@ -23,10 +23,10 @@ const connectedItemClasses = {
23
23
  ].join(' '),
24
24
  };
25
25
  class ToggleGroupContextBase {
26
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.3", ngImport: i0, type: ToggleGroupContextBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
27
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.3", type: ToggleGroupContextBase, isStandalone: true, ngImport: i0 });
26
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: ToggleGroupContextBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
27
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.4", type: ToggleGroupContextBase, isStandalone: true, ngImport: i0 });
28
28
  }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.3", ngImport: i0, type: ToggleGroupContextBase, decorators: [{
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: ToggleGroupContextBase, decorators: [{
30
30
  type: Directive
31
31
  }] });
32
32
  class ToggleGroupComponent extends ToggleGroupContextBase {
@@ -117,7 +117,9 @@ class ToggleGroupComponent extends ToggleGroupContextBase {
117
117
  return;
118
118
  this.focusedValue.set(value);
119
119
  if (this.type() === 'multiple') {
120
- this.values.update((current) => current.includes(value) ? current.filter((itemValue) => itemValue !== value) : [...current, value]);
120
+ this.values.update((current) => current.includes(value)
121
+ ? current.filter((itemValue) => itemValue !== value)
122
+ : [...current, value]);
121
123
  return;
122
124
  }
123
125
  this.value.set(this.value() === value ? null : value);
@@ -173,15 +175,18 @@ class ToggleGroupComponent extends ToggleGroupContextBase {
173
175
  bumpRegistrationVersion() {
174
176
  this.registrationVersion.update((version) => version + 1);
175
177
  }
176
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.3", ngImport: i0, type: ToggleGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
177
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.3", type: ToggleGroupComponent, isStandalone: true, selector: "ToggleGroup", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, values: { classPropertyName: "values", publicName: "values", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null }, loop: { classPropertyName: "loop", publicName: "loop", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, dir: { classPropertyName: "dir", publicName: "dir", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", values: "valuesChange" }, host: { properties: { "class": "classes()", "attr.role": "\"group\"", "attr.dir": "dir() ?? null", "attr.aria-orientation": "orientation()", "attr.data-disabled": "disabled() ? \"\" : null", "attr.data-orientation": "orientation()", "attr.data-slot": "\"toggle-group\"", "attr.data-type": "type()" } }, providers: [{ provide: ToggleGroupContextBase, useExisting: forwardRef(() => ToggleGroupComponent) }], usesInheritance: true, ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
178
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: ToggleGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
179
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: ToggleGroupComponent, isStandalone: true, selector: "ToggleGroup", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, values: { classPropertyName: "values", publicName: "values", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null }, loop: { classPropertyName: "loop", publicName: "loop", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, dir: { classPropertyName: "dir", publicName: "dir", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", values: "valuesChange" }, host: { properties: { "class": "classes()", "attr.role": "\"group\"", "attr.dir": "dir() ?? null", "attr.aria-orientation": "orientation()", "attr.data-disabled": "disabled() ? \"\" : null", "attr.data-orientation": "orientation()", "attr.data-slot": "\"toggle-group\"", "attr.data-type": "type()" } }, providers: [
180
+ { provide: ToggleGroupContextBase, useExisting: forwardRef(() => ToggleGroupComponent) },
181
+ ], usesInheritance: true, ngImport: i0, template: `<ng-content />`, isInline: true });
178
182
  }
179
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.3", ngImport: i0, type: ToggleGroupComponent, decorators: [{
183
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: ToggleGroupComponent, decorators: [{
180
184
  type: Component,
181
185
  args: [{
182
186
  selector: 'ToggleGroup',
183
- changeDetection: ChangeDetectionStrategy.OnPush,
184
- providers: [{ provide: ToggleGroupContextBase, useExisting: forwardRef(() => ToggleGroupComponent) }],
187
+ providers: [
188
+ { provide: ToggleGroupContextBase, useExisting: forwardRef(() => ToggleGroupComponent) },
189
+ ],
185
190
  host: {
186
191
  '[class]': 'classes()',
187
192
  '[attr.role]': '"group"',
@@ -243,10 +248,10 @@ class ToggleGroupItemDirective {
243
248
  event.preventDefault();
244
249
  this.ctx.focusLast();
245
250
  }
246
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.3", ngImport: i0, type: ToggleGroupItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
247
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.3", type: ToggleGroupItemDirective, isStandalone: true, selector: "button[ToggleGroupItem]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "type": "button" }, listeners: { "click": "onClick()", "focus": "onFocus()", "keydown.arrowDown": "onArrow($any($event), 1)", "keydown.arrowLeft": "onHorizontalArrow($any($event), -1)", "keydown.arrowRight": "onHorizontalArrow($any($event), 1)", "keydown.arrowUp": "onArrow($any($event), -1)", "keydown.end": "onEnd($any($event))", "keydown.home": "onHome($any($event))" }, properties: { "class": "classes()", "attr.aria-disabled": "isDisabled() ? \"true\" : null", "attr.aria-pressed": "selected()", "attr.data-disabled": "isDisabled() ? \"\" : null", "attr.data-orientation": "ctx.groupOrientation()", "attr.data-size": "ctx.groupSize()", "attr.data-slot": "\"toggle-group-item\"", "attr.data-state": "selected() ? \"on\" : \"off\"", "attr.data-variant": "ctx.groupVariant()", "attr.tabindex": "ctx.tabindexFor(value(), isDisabled())", "disabled": "isDisabled() || null" } }, ngImport: i0 });
251
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: ToggleGroupItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
252
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.4", type: ToggleGroupItemDirective, isStandalone: true, selector: "button[ToggleGroupItem]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "type": "button" }, listeners: { "click": "onClick()", "focus": "onFocus()", "keydown.arrowDown": "onArrow($any($event), 1)", "keydown.arrowLeft": "onHorizontalArrow($any($event), -1)", "keydown.arrowRight": "onHorizontalArrow($any($event), 1)", "keydown.arrowUp": "onArrow($any($event), -1)", "keydown.end": "onEnd($any($event))", "keydown.home": "onHome($any($event))" }, properties: { "class": "classes()", "attr.aria-disabled": "isDisabled() ? \"true\" : null", "attr.aria-pressed": "selected()", "attr.data-disabled": "isDisabled() ? \"\" : null", "attr.data-orientation": "ctx.groupOrientation()", "attr.data-size": "ctx.groupSize()", "attr.data-slot": "\"toggle-group-item\"", "attr.data-state": "selected() ? \"on\" : \"off\"", "attr.data-variant": "ctx.groupVariant()", "attr.tabindex": "ctx.tabindexFor(value(), isDisabled())", "disabled": "isDisabled() || null" } }, ngImport: i0 });
248
253
  }
249
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.3", ngImport: i0, type: ToggleGroupItemDirective, decorators: [{
254
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: ToggleGroupItemDirective, decorators: [{
250
255
  type: Directive,
251
256
  args: [{
252
257
  selector: 'button[ToggleGroupItem]',
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { model, input, computed, ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { model, input, computed, Component } from '@angular/core';
3
3
  import { cn } from '@ojiepermana/angular-component/utils';
4
4
  import { cva } from 'class-variance-authority';
5
5
 
@@ -51,14 +51,13 @@ class ToggleComponent {
51
51
  }
52
52
  this.pressed.update((pressed) => !pressed);
53
53
  }
54
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.3", ngImport: i0, type: ToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
55
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.3", type: ToggleComponent, isStandalone: true, selector: "button[Toggle]", inputs: { pressed: { classPropertyName: "pressed", publicName: "pressed", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pressed: "pressedChange" }, host: { attributes: { "type": "button" }, listeners: { "click": "toggle()" }, properties: { "class": "classes()", "attr.aria-pressed": "pressed()", "attr.data-disabled": "disabled() ? \"\" : null", "attr.data-size": "size()", "attr.data-state": "pressed() ? \"on\" : \"off\"", "attr.data-variant": "variant()", "disabled": "disabled() || null" } }, ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
54
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: ToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
55
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: ToggleComponent, isStandalone: true, selector: "button[Toggle]", inputs: { pressed: { classPropertyName: "pressed", publicName: "pressed", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pressed: "pressedChange" }, host: { attributes: { "type": "button" }, listeners: { "click": "toggle()" }, properties: { "class": "classes()", "attr.aria-pressed": "pressed()", "attr.data-disabled": "disabled() ? \"\" : null", "attr.data-size": "size()", "attr.data-state": "pressed() ? \"on\" : \"off\"", "attr.data-variant": "variant()", "disabled": "disabled() || null" } }, ngImport: i0, template: `<ng-content />`, isInline: true });
56
56
  }
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.3", ngImport: i0, type: ToggleComponent, decorators: [{
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: ToggleComponent, decorators: [{
58
58
  type: Component,
59
59
  args: [{
60
60
  selector: 'button[Toggle]',
61
- changeDetection: ChangeDetectionStrategy.OnPush,
62
61
  host: {
63
62
  '[class]': 'classes()',
64
63
  type: 'button',
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, input, forwardRef, ChangeDetectionStrategy, Component, inject, TemplateRef, computed, Directive, ViewContainerRef, ElementRef, DestroyRef, output, signal, effect } from '@angular/core';
2
+ import { InjectionToken, input, forwardRef, Component, inject, TemplateRef, computed, Directive, ViewContainerRef, ElementRef, DestroyRef, output, signal, effect } from '@angular/core';
3
3
  import { radiusBaseValue, densityBaseValue, connectedPositionFor, oppositeSide, uniqueId, overlayDismissals } from '@ojiepermana/angular-component/utils';
4
4
  import { Overlay } from '@angular/cdk/overlay';
5
5
  import { TemplatePortal, ComponentPortal } from '@angular/cdk/portal';
@@ -17,14 +17,13 @@ class TooltipComponent {
17
17
  ...(ngDevMode ? [{ debugName: "openDelay" }] : /* istanbul ignore next */ []));
18
18
  closeDelay = input(0, /* @ts-ignore */
19
19
  ...(ngDevMode ? [{ debugName: "closeDelay" }] : /* istanbul ignore next */ []));
20
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.3", ngImport: i0, type: TooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.3", type: TooltipComponent, isStandalone: true, selector: "Tooltip", inputs: { side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, sideOffset: { classPropertyName: "sideOffset", publicName: "sideOffset", isSignal: true, isRequired: false, transformFunction: null }, openDelay: { classPropertyName: "openDelay", publicName: "openDelay", isSignal: true, isRequired: false, transformFunction: null }, closeDelay: { classPropertyName: "closeDelay", publicName: "closeDelay", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "contents" }, providers: [{ provide: TOOLTIP_DEFAULTS, useExisting: forwardRef(() => TooltipComponent) }], ngImport: i0, template: '<ng-content />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
20
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: TooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: TooltipComponent, isStandalone: true, selector: "Tooltip", inputs: { side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, sideOffset: { classPropertyName: "sideOffset", publicName: "sideOffset", isSignal: true, isRequired: false, transformFunction: null }, openDelay: { classPropertyName: "openDelay", publicName: "openDelay", isSignal: true, isRequired: false, transformFunction: null }, closeDelay: { classPropertyName: "closeDelay", publicName: "closeDelay", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "contents" }, providers: [{ provide: TOOLTIP_DEFAULTS, useExisting: forwardRef(() => TooltipComponent) }], ngImport: i0, template: '<ng-content />', isInline: true });
22
22
  }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.3", ngImport: i0, type: TooltipComponent, decorators: [{
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: TooltipComponent, decorators: [{
24
24
  type: Component,
25
25
  args: [{
26
26
  selector: 'Tooltip',
27
- changeDetection: ChangeDetectionStrategy.OnPush,
28
27
  providers: [{ provide: TOOLTIP_DEFAULTS, useExisting: forwardRef(() => TooltipComponent) }],
29
28
  host: {
30
29
  class: 'contents',
@@ -50,10 +49,10 @@ class TooltipContentDirective {
50
49
  ...(ngDevMode ? [{ debugName: "radiusBase" }] : /* istanbul ignore next */ []));
51
50
  densityBase = computed(() => densityBaseValue(this.density()), /* @ts-ignore */
52
51
  ...(ngDevMode ? [{ debugName: "densityBase" }] : /* istanbul ignore next */ []));
53
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.3", ngImport: i0, type: TooltipContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
54
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.3", type: TooltipContentDirective, isStandalone: true, selector: "ng-template[TooltipContent]", inputs: { radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: false, transformFunction: null }, density: { classPropertyName: "density", publicName: "density", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.--radius-base": "radiusBase()", "style.--spacing-base": "densityBase()" } }, exportAs: ["TooltipContent"], ngImport: i0 });
52
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: TooltipContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
53
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.4", type: TooltipContentDirective, isStandalone: true, selector: "ng-template[TooltipContent]", inputs: { radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: false, transformFunction: null }, density: { classPropertyName: "density", publicName: "density", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.--radius-base": "radiusBase()", "style.--spacing-base": "densityBase()" } }, exportAs: ["TooltipContent"], ngImport: i0 });
55
54
  }
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.3", ngImport: i0, type: TooltipContentDirective, decorators: [{
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: TooltipContentDirective, decorators: [{
57
56
  type: Directive,
58
57
  args: [{
59
58
  selector: 'ng-template[TooltipContent]',
@@ -272,10 +271,10 @@ class TooltipTriggerDirective {
272
271
  this.closeTimeoutId = null;
273
272
  }
274
273
  }
275
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.3", ngImport: i0, type: TooltipTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
276
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.3", type: TooltipTriggerDirective, isStandalone: true, selector: "[TooltipTrigger]", inputs: { TooltipTrigger: { classPropertyName: "TooltipTrigger", publicName: "TooltipTrigger", isSignal: true, isRequired: true, transformFunction: null }, side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, sideOffset: { classPropertyName: "sideOffset", publicName: "sideOffset", isSignal: true, isRequired: false, transformFunction: null }, openDelay: { classPropertyName: "openDelay", publicName: "openDelay", isSignal: true, isRequired: false, transformFunction: null }, closeDelay: { classPropertyName: "closeDelay", publicName: "closeDelay", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openedChange: "openedChange" }, host: { listeners: { "pointerenter": "handlePointerEnter()", "pointerleave": "handlePointerLeave($event)", "focusin": "handleFocusIn()", "focusout": "handleFocusOut($event)", "keydown.escape": "close()" }, properties: { "attr.aria-describedby": "contentId()", "attr.data-state": "isOpen() ? \"open\" : \"closed\"" } }, exportAs: ["TooltipTrigger"], ngImport: i0 });
274
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: TooltipTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
275
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.4", type: TooltipTriggerDirective, isStandalone: true, selector: "[TooltipTrigger]", inputs: { TooltipTrigger: { classPropertyName: "TooltipTrigger", publicName: "TooltipTrigger", isSignal: true, isRequired: true, transformFunction: null }, side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, sideOffset: { classPropertyName: "sideOffset", publicName: "sideOffset", isSignal: true, isRequired: false, transformFunction: null }, openDelay: { classPropertyName: "openDelay", publicName: "openDelay", isSignal: true, isRequired: false, transformFunction: null }, closeDelay: { classPropertyName: "closeDelay", publicName: "closeDelay", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openedChange: "openedChange" }, host: { listeners: { "pointerenter": "handlePointerEnter()", "pointerleave": "handlePointerLeave($event)", "focusin": "handleFocusIn()", "focusout": "handleFocusOut($event)", "keydown.escape": "close()" }, properties: { "attr.aria-describedby": "contentId()", "attr.data-state": "isOpen() ? \"open\" : \"closed\"" } }, exportAs: ["TooltipTrigger"], ngImport: i0 });
277
276
  }
278
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.3", ngImport: i0, type: TooltipTriggerDirective, decorators: [{
277
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: TooltipTriggerDirective, decorators: [{
279
278
  type: Directive,
280
279
  args: [{
281
280
  selector: '[TooltipTrigger]',
@@ -322,13 +321,12 @@ const PANEL_CLASSES = [
322
321
  class TooltipTextComponent {
323
322
  text = signal('', /* @ts-ignore */
324
323
  ...(ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []));
325
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.3", ngImport: i0, type: TooltipTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
326
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.3", type: TooltipTextComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `{{ text() }}`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
324
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: TooltipTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
325
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.4", type: TooltipTextComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `{{ text() }}`, isInline: true });
327
326
  }
328
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.3", ngImport: i0, type: TooltipTextComponent, decorators: [{
327
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: TooltipTextComponent, decorators: [{
329
328
  type: Component,
330
329
  args: [{
331
- changeDetection: ChangeDetectionStrategy.OnPush,
332
330
  template: `{{ text() }}`,
333
331
  }]
334
332
  }] });
@@ -377,7 +375,10 @@ class TooltipDirective {
377
375
  const positionStrategy = this.overlay
378
376
  .position()
379
377
  .flexibleConnectedTo(this.el)
380
- .withPositions([connectedPositionFor(side, 'center', 4), connectedPositionFor(oppositeSide(side), 'center', 4)])
378
+ .withPositions([
379
+ connectedPositionFor(side, 'center', 4),
380
+ connectedPositionFor(oppositeSide(side), 'center', 4),
381
+ ])
381
382
  .withPush(false)
382
383
  .withFlexibleDimensions(false);
383
384
  this.overlayRef = this.overlay.create({
@@ -424,10 +425,10 @@ class TooltipDirective {
424
425
  this.hideTimeoutId = null;
425
426
  }
426
427
  }
427
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.3", ngImport: i0, type: TooltipDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
428
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.3", type: TooltipDirective, isStandalone: true, selector: "[Tooltip]", inputs: { Tooltip: { classPropertyName: "Tooltip", publicName: "Tooltip", isSignal: true, isRequired: false, transformFunction: null }, TooltipPosition: { classPropertyName: "TooltipPosition", publicName: "TooltipPosition", isSignal: true, isRequired: false, transformFunction: null }, TooltipDisabled: { classPropertyName: "TooltipDisabled", publicName: "TooltipDisabled", isSignal: true, isRequired: false, transformFunction: null }, TooltipShowDelay: { classPropertyName: "TooltipShowDelay", publicName: "TooltipShowDelay", isSignal: true, isRequired: false, transformFunction: null }, TooltipHideDelay: { classPropertyName: "TooltipHideDelay", publicName: "TooltipHideDelay", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "pointerenter": "scheduleShow()", "pointerleave": "scheduleHide()", "focusin": "scheduleShow()", "focusout": "scheduleHide()", "keydown.escape": "hide()" } }, exportAs: ["Tooltip"], ngImport: i0 });
428
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: TooltipDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
429
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.4", type: TooltipDirective, isStandalone: true, selector: "[Tooltip]", inputs: { Tooltip: { classPropertyName: "Tooltip", publicName: "Tooltip", isSignal: true, isRequired: false, transformFunction: null }, TooltipPosition: { classPropertyName: "TooltipPosition", publicName: "TooltipPosition", isSignal: true, isRequired: false, transformFunction: null }, TooltipDisabled: { classPropertyName: "TooltipDisabled", publicName: "TooltipDisabled", isSignal: true, isRequired: false, transformFunction: null }, TooltipShowDelay: { classPropertyName: "TooltipShowDelay", publicName: "TooltipShowDelay", isSignal: true, isRequired: false, transformFunction: null }, TooltipHideDelay: { classPropertyName: "TooltipHideDelay", publicName: "TooltipHideDelay", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "pointerenter": "scheduleShow()", "pointerleave": "scheduleHide()", "focusin": "scheduleShow()", "focusout": "scheduleHide()", "keydown.escape": "hide()" } }, exportAs: ["Tooltip"], ngImport: i0 });
429
430
  }
430
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.3", ngImport: i0, type: TooltipDirective, decorators: [{
431
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: TooltipDirective, decorators: [{
431
432
  type: Directive,
432
433
  args: [{
433
434
  selector: '[Tooltip]',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ojiepermana/angular-component",
3
- "version": "22.0.43",
3
+ "version": "22.0.45",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/edsis/angular.git"
@@ -21,6 +21,15 @@
21
21
  "peerDependenciesMeta": {
22
22
  "@angular/material": {
23
23
  "optional": true
24
+ },
25
+ "@angular/forms": {
26
+ "optional": true
27
+ },
28
+ "@angular/platform-browser": {
29
+ "optional": true
30
+ },
31
+ "@angular/router": {
32
+ "optional": true
24
33
  }
25
34
  },
26
35
  "dependencies": {
@@ -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>;