@ojiepermana/angular-component 22.0.46 → 22.0.47

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/dialog/README.md CHANGED
@@ -128,6 +128,24 @@ Use `[showCloseButton]="false"` without an internal close action when Escape and
128
128
  </Dialog>
129
129
  ```
130
130
 
131
+ ### Backdrop appearance
132
+
133
+ The area outside the surface is dimmed by default (`backdrop="dim"`), using the shared
134
+ `--overlay-backdrop` theme token so it recolors with the active theme and light/dark mode. Switch
135
+ to a frosted overlay with `backdrop="blur"`, or disable dimming entirely with
136
+ `backdrop="transparent"` when the dialog should float over a fully visible page.
137
+
138
+ ```html
139
+ <!-- Dimmed (default) -->
140
+ <Dialog [(open)]="open">…</Dialog>
141
+
142
+ <!-- Frosted blur behind the surface -->
143
+ <Dialog [(open)]="open" backdrop="blur">…</Dialog>
144
+
145
+ <!-- No dimming; page stays fully visible -->
146
+ <Dialog [(open)]="open" backdrop="transparent">…</Dialog>
147
+ ```
148
+
131
149
  ### Sticky footer for long content
132
150
 
133
151
  Move the scroll region into `DialogContent` and keep the footer outside that overflow container so primary actions remain visible.
@@ -177,16 +195,17 @@ Wrap the trigger and dialog in a `dir="rtl"` container or set direction globally
177
195
 
178
196
  ### `DialogComponent`
179
197
 
180
- | Input | Type | Default |
181
- | ---------------------- | ---------------- | --------- |
182
- | `open` (model) | `boolean` | `false` |
183
- | `closeOnEscape` | `boolean` | `true` |
184
- | `closeOnBackdropClick` | `boolean` | `true` |
185
- | `showCloseButton` | `boolean` | `true` |
186
- | `closeButtonLabel` | `string` | `'Close'` |
187
- | `aria-labelledby` | `string \| null` | `null` |
188
- | `aria-describedby` | `string \| null` | `null` |
189
- | `class` | `string` | `''` |
198
+ | Input | Type | Default |
199
+ | ---------------------- | ------------------------------------- | --------- |
200
+ | `open` (model) | `boolean` | `false` |
201
+ | `closeOnEscape` | `boolean` | `true` |
202
+ | `closeOnBackdropClick` | `boolean` | `true` |
203
+ | `backdrop` | `'dim' \| 'blur' \| 'transparent'` | `'dim'` |
204
+ | `showCloseButton` | `boolean` | `true` |
205
+ | `closeButtonLabel` | `string` | `'Close'` |
206
+ | `aria-labelledby` | `string \| null` | `null` |
207
+ | `aria-describedby` | `string \| null` | `null` |
208
+ | `class` | `string` | `''` |
190
209
 
191
210
  Output: `openedChange: boolean`. Method: `close()`.
192
211
 
@@ -24,6 +24,9 @@ class AlertDialogComponent {
24
24
  ...(ngDevMode ? [{ debugName: "closeOnEscape" }] : /* istanbul ignore next */ []));
25
25
  closeOnBackdropClick = input(false, /* @ts-ignore */
26
26
  ...(ngDevMode ? [{ debugName: "closeOnBackdropClick" }] : /* istanbul ignore next */ []));
27
+ /** Appearance of the area outside the surface. Defaults to a dimmed overlay. */
28
+ backdrop = input('dim', /* @ts-ignore */
29
+ ...(ngDevMode ? [{ debugName: "backdrop" }] : /* istanbul ignore next */ []));
27
30
  showCloseButton = input(false, /* @ts-ignore */
28
31
  ...(ngDevMode ? [{ debugName: "showCloseButton" }] : /* istanbul ignore next */ []));
29
32
  closeButtonLabel = input('Close', /* @ts-ignore */
@@ -83,12 +86,13 @@ class AlertDialogComponent {
83
86
  this.open.set(false);
84
87
  }
85
88
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: AlertDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
86
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: AlertDialogComponent, isStandalone: true, selector: "AlertDialog", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, closeOnEscape: { classPropertyName: "closeOnEscape", publicName: "closeOnEscape", isSignal: true, isRequired: false, transformFunction: null }, closeOnBackdropClick: { classPropertyName: "closeOnBackdropClick", publicName: "closeOnBackdropClick", isSignal: true, isRequired: false, transformFunction: null }, showCloseButton: { classPropertyName: "showCloseButton", publicName: "showCloseButton", isSignal: true, isRequired: false, transformFunction: null }, closeButtonLabel: { classPropertyName: "closeButtonLabel", publicName: "closeButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, labelledBy: { classPropertyName: "labelledBy", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, describedBy: { classPropertyName: "describedBy", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: false, transformFunction: null }, density: { classPropertyName: "density", publicName: "density", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", openedChange: "openedChange" }, host: { properties: { "attr.aria-labelledby": "null", "attr.aria-describedby": "null" } }, ngImport: i0, template: `
89
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: AlertDialogComponent, isStandalone: true, selector: "AlertDialog", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, closeOnEscape: { classPropertyName: "closeOnEscape", publicName: "closeOnEscape", isSignal: true, isRequired: false, transformFunction: null }, closeOnBackdropClick: { classPropertyName: "closeOnBackdropClick", publicName: "closeOnBackdropClick", isSignal: true, isRequired: false, transformFunction: null }, backdrop: { classPropertyName: "backdrop", publicName: "backdrop", isSignal: true, isRequired: false, transformFunction: null }, showCloseButton: { classPropertyName: "showCloseButton", publicName: "showCloseButton", isSignal: true, isRequired: false, transformFunction: null }, closeButtonLabel: { classPropertyName: "closeButtonLabel", publicName: "closeButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, labelledBy: { classPropertyName: "labelledBy", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, describedBy: { classPropertyName: "describedBy", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: false, transformFunction: null }, density: { classPropertyName: "density", publicName: "density", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", openedChange: "openedChange" }, host: { properties: { "attr.aria-labelledby": "null", "attr.aria-describedby": "null" } }, ngImport: i0, template: `
87
90
  <Dialog
88
91
  [(open)]="open"
89
92
  [role]="role()"
90
93
  [closeOnEscape]="closeOnEscape()"
91
94
  [closeOnBackdropClick]="closeOnBackdropClick()"
95
+ [backdrop]="backdrop()"
92
96
  [showCloseButton]="showCloseButton()"
93
97
  [closeButtonLabel]="closeButtonLabel()"
94
98
  [aria-labelledby]="resolvedLabelledBy()"
@@ -100,7 +104,7 @@ class AlertDialogComponent {
100
104
  >
101
105
  <ng-content />
102
106
  </Dialog>
103
- `, isInline: true, dependencies: [{ kind: "component", type: DialogComponent, selector: "Dialog", inputs: ["open", "closeOnEscape", "closeOnBackdropClick", "showCloseButton", "closeButtonLabel", "aria-labelledby", "aria-describedby", "role", "class", "radius", "density"], outputs: ["openChange", "openedChange"] }] });
107
+ `, isInline: true, dependencies: [{ kind: "component", type: DialogComponent, selector: "Dialog", inputs: ["open", "closeOnEscape", "closeOnBackdropClick", "backdrop", "showCloseButton", "closeButtonLabel", "aria-labelledby", "aria-describedby", "role", "class", "radius", "density"], outputs: ["openChange", "openedChange"] }] });
104
108
  }
105
109
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: AlertDialogComponent, decorators: [{
106
110
  type: Component,
@@ -120,6 +124,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImpor
120
124
  [role]="role()"
121
125
  [closeOnEscape]="closeOnEscape()"
122
126
  [closeOnBackdropClick]="closeOnBackdropClick()"
127
+ [backdrop]="backdrop()"
123
128
  [showCloseButton]="showCloseButton()"
124
129
  [closeButtonLabel]="closeButtonLabel()"
125
130
  [aria-labelledby]="resolvedLabelledBy()"
@@ -133,7 +138,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImpor
133
138
  </Dialog>
134
139
  `,
135
140
  }]
136
- }], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], closeOnEscape: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnEscape", required: false }] }], closeOnBackdropClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnBackdropClick", required: false }] }], showCloseButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCloseButton", required: false }] }], closeButtonLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeButtonLabel", required: false }] }], labelledBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-labelledby", required: false }] }], describedBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-describedby", required: false }] }], role: [{ type: i0.Input, args: [{ isSignal: true, alias: "role", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], radius: [{ type: i0.Input, args: [{ isSignal: true, alias: "radius", required: false }] }], density: [{ type: i0.Input, args: [{ isSignal: true, alias: "density", required: false }] }], openedChange: [{ type: i0.Output, args: ["openedChange"] }] } });
141
+ }], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], closeOnEscape: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnEscape", required: false }] }], closeOnBackdropClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnBackdropClick", required: false }] }], backdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "backdrop", required: false }] }], showCloseButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCloseButton", required: false }] }], closeButtonLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeButtonLabel", required: false }] }], labelledBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-labelledby", required: false }] }], describedBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-describedby", required: false }] }], role: [{ type: i0.Input, args: [{ isSignal: true, alias: "role", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], radius: [{ type: i0.Input, args: [{ isSignal: true, alias: "radius", required: false }] }], density: [{ type: i0.Input, args: [{ isSignal: true, alias: "density", required: false }] }], openedChange: [{ type: i0.Output, args: ["openedChange"] }] } });
137
142
 
138
143
  const ALERT_DIALOG_MEDIA_SIZE_CLASSES = {
139
144
  default: 'h-12 w-12 [&_svg]:h-5 [&_svg]:w-5',
@@ -38,6 +38,9 @@ class DialogComponent {
38
38
  ...(ngDevMode ? [{ debugName: "closeOnEscape" }] : /* istanbul ignore next */ []));
39
39
  closeOnBackdropClick = input(true, /* @ts-ignore */
40
40
  ...(ngDevMode ? [{ debugName: "closeOnBackdropClick" }] : /* istanbul ignore next */ []));
41
+ /** Appearance of the area outside the surface. Defaults to a dimmed overlay. */
42
+ backdrop = input('dim', /* @ts-ignore */
43
+ ...(ngDevMode ? [{ debugName: "backdrop" }] : /* istanbul ignore next */ []));
41
44
  showCloseButton = input(true, /* @ts-ignore */
42
45
  ...(ngDevMode ? [{ debugName: "showCloseButton" }] : /* istanbul ignore next */ []));
43
46
  closeButtonLabel = input('Close', /* @ts-ignore */
@@ -94,6 +97,17 @@ class DialogComponent {
94
97
  ...(ngDevMode ? [{ debugName: "radiusBase" }] : /* istanbul ignore next */ []));
95
98
  densityBase = computed(() => densityBaseValue(this.density()), /* @ts-ignore */
96
99
  ...(ngDevMode ? [{ debugName: "densityBase" }] : /* istanbul ignore next */ []));
100
+ /** CDK `backdropClass` list: shared marker plus the selected appearance modifier. */
101
+ backdropClass = computed(() => {
102
+ const classes = ['dialog-backdrop'];
103
+ const kind = this.backdrop();
104
+ if (kind === 'blur')
105
+ classes.push('dialog-backdrop-blur');
106
+ else if (kind === 'transparent')
107
+ classes.push('dialog-backdrop-transparent');
108
+ return classes;
109
+ }, /* @ts-ignore */
110
+ ...(ngDevMode ? [{ debugName: "backdropClass" }] : /* istanbul ignore next */ []));
97
111
  constructor() {
98
112
  this.destroyRef.onDestroy(() => this.detach(false));
99
113
  effect(() => {
@@ -106,7 +120,7 @@ class DialogComponent {
106
120
  this.previousFocus = this.doc.activeElement;
107
121
  this.overlayRef = this.overlay.create({
108
122
  hasBackdrop: true,
109
- backdropClass: 'dialog-backdrop',
123
+ backdropClass: this.backdropClass(),
110
124
  panelClass: 'dialog-panel',
111
125
  scrollStrategy: this.overlay.scrollStrategies.block(),
112
126
  positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),
@@ -150,7 +164,7 @@ class DialogComponent {
150
164
  this.requestClose();
151
165
  }
152
166
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
153
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: DialogComponent, isStandalone: true, selector: "Dialog", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, closeOnEscape: { classPropertyName: "closeOnEscape", publicName: "closeOnEscape", isSignal: true, isRequired: false, transformFunction: null }, closeOnBackdropClick: { classPropertyName: "closeOnBackdropClick", publicName: "closeOnBackdropClick", isSignal: true, isRequired: false, transformFunction: null }, showCloseButton: { classPropertyName: "showCloseButton", publicName: "showCloseButton", isSignal: true, isRequired: false, transformFunction: null }, closeButtonLabel: { classPropertyName: "closeButtonLabel", publicName: "closeButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, labelledBy: { classPropertyName: "labelledBy", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, describedBy: { classPropertyName: "describedBy", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: false, transformFunction: null }, density: { classPropertyName: "density", publicName: "density", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", openedChange: "openedChange" }, viewQueries: [{ propertyName: "tpl", first: true, predicate: ["tpl"], descendants: true, isSignal: true }], ngImport: i0, template: `
167
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: DialogComponent, isStandalone: true, selector: "Dialog", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, closeOnEscape: { classPropertyName: "closeOnEscape", publicName: "closeOnEscape", isSignal: true, isRequired: false, transformFunction: null }, closeOnBackdropClick: { classPropertyName: "closeOnBackdropClick", publicName: "closeOnBackdropClick", isSignal: true, isRequired: false, transformFunction: null }, backdrop: { classPropertyName: "backdrop", publicName: "backdrop", isSignal: true, isRequired: false, transformFunction: null }, showCloseButton: { classPropertyName: "showCloseButton", publicName: "showCloseButton", isSignal: true, isRequired: false, transformFunction: null }, closeButtonLabel: { classPropertyName: "closeButtonLabel", publicName: "closeButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, labelledBy: { classPropertyName: "labelledBy", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, describedBy: { classPropertyName: "describedBy", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: false, transformFunction: null }, density: { classPropertyName: "density", publicName: "density", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", openedChange: "openedChange" }, viewQueries: [{ propertyName: "tpl", first: true, predicate: ["tpl"], descendants: true, isSignal: true }], ngImport: i0, template: `
154
168
  <ng-template #tpl>
155
169
  <div
156
170
  class="dialog-surface"
@@ -217,7 +231,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImpor
217
231
  </ng-template>
218
232
  `,
219
233
  }]
220
- }], ctorParameters: () => [], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], closeOnEscape: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnEscape", required: false }] }], closeOnBackdropClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnBackdropClick", required: false }] }], showCloseButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCloseButton", required: false }] }], closeButtonLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeButtonLabel", required: false }] }], labelledBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-labelledby", required: false }] }], describedBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-describedby", required: false }] }], role: [{ type: i0.Input, args: [{ isSignal: true, alias: "role", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], radius: [{ type: i0.Input, args: [{ isSignal: true, alias: "radius", required: false }] }], density: [{ type: i0.Input, args: [{ isSignal: true, alias: "density", required: false }] }], openedChange: [{ type: i0.Output, args: ["openedChange"] }], tpl: [{ type: i0.ViewChild, args: ['tpl', { isSignal: true }] }] } });
234
+ }], ctorParameters: () => [], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], closeOnEscape: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnEscape", required: false }] }], closeOnBackdropClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnBackdropClick", required: false }] }], backdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "backdrop", required: false }] }], showCloseButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCloseButton", required: false }] }], closeButtonLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeButtonLabel", required: false }] }], labelledBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-labelledby", required: false }] }], describedBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-describedby", required: false }] }], role: [{ type: i0.Input, args: [{ isSignal: true, alias: "role", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], radius: [{ type: i0.Input, args: [{ isSignal: true, alias: "radius", required: false }] }], density: [{ type: i0.Input, args: [{ isSignal: true, alias: "density", required: false }] }], openedChange: [{ type: i0.Output, args: ["openedChange"] }], tpl: [{ type: i0.ViewChild, args: ['tpl', { isSignal: true }] }] } });
221
235
 
222
236
  class DialogCloseDirective {
223
237
  dialog = inject(DialogComponent);
@@ -45,6 +45,9 @@ class SheetComponent {
45
45
  ...(ngDevMode ? [{ debugName: "closeOnEscape" }] : /* istanbul ignore next */ []));
46
46
  closeOnBackdropClick = input(true, /* @ts-ignore */
47
47
  ...(ngDevMode ? [{ debugName: "closeOnBackdropClick" }] : /* istanbul ignore next */ []));
48
+ /** Appearance of the area outside the surface. Defaults to a dimmed overlay. */
49
+ backdrop = input('dim', /* @ts-ignore */
50
+ ...(ngDevMode ? [{ debugName: "backdrop" }] : /* istanbul ignore next */ []));
48
51
  showCloseButton = input(true, /* @ts-ignore */
49
52
  ...(ngDevMode ? [{ debugName: "showCloseButton" }] : /* istanbul ignore next */ []));
50
53
  closeButtonLabel = input('Close', /* @ts-ignore */
@@ -85,6 +88,17 @@ class SheetComponent {
85
88
  ...(ngDevMode ? [{ debugName: "radiusBase" }] : /* istanbul ignore next */ []));
86
89
  densityBase = computed(() => densityBaseValue(this.density()), /* @ts-ignore */
87
90
  ...(ngDevMode ? [{ debugName: "densityBase" }] : /* istanbul ignore next */ []));
91
+ /** CDK `backdropClass` list: shared marker plus the selected appearance modifier. */
92
+ backdropClass = computed(() => {
93
+ const classes = ['dialog-backdrop'];
94
+ const kind = this.backdrop();
95
+ if (kind === 'blur')
96
+ classes.push('dialog-backdrop-blur');
97
+ else if (kind === 'transparent')
98
+ classes.push('dialog-backdrop-transparent');
99
+ return classes;
100
+ }, /* @ts-ignore */
101
+ ...(ngDevMode ? [{ debugName: "backdropClass" }] : /* istanbul ignore next */ []));
88
102
  constructor() {
89
103
  this.destroyRef.onDestroy(() => this.detach(false));
90
104
  effect(() => {
@@ -97,7 +111,7 @@ class SheetComponent {
97
111
  this.previousFocus = this.doc.activeElement;
98
112
  this.overlayRef = this.overlay.create({
99
113
  hasBackdrop: true,
100
- backdropClass: 'dialog-backdrop',
114
+ backdropClass: this.backdropClass(),
101
115
  panelClass: 'sheet-panel',
102
116
  scrollStrategy: this.overlay.scrollStrategies.block(),
103
117
  positionStrategy: this.overlay.position().global(),
@@ -167,7 +181,7 @@ class SheetComponent {
167
181
  return this.host.nativeElement.localName === 'drawer';
168
182
  }
169
183
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: SheetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
170
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: SheetComponent, isStandalone: true, selector: "Sheet, Drawer", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, closeOnEscape: { classPropertyName: "closeOnEscape", publicName: "closeOnEscape", isSignal: true, isRequired: false, transformFunction: null }, closeOnBackdropClick: { classPropertyName: "closeOnBackdropClick", publicName: "closeOnBackdropClick", isSignal: true, isRequired: false, transformFunction: null }, showCloseButton: { classPropertyName: "showCloseButton", publicName: "showCloseButton", isSignal: true, isRequired: false, transformFunction: null }, closeButtonLabel: { classPropertyName: "closeButtonLabel", publicName: "closeButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, labelledBy: { classPropertyName: "labelledBy", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, describedBy: { classPropertyName: "describedBy", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: false, transformFunction: null }, density: { classPropertyName: "density", publicName: "density", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", openedChange: "openedChange" }, host: { properties: { "attr.aria-labelledby": "null", "attr.aria-describedby": "null" } }, viewQueries: [{ propertyName: "tpl", first: true, predicate: ["tpl"], descendants: true, isSignal: true }], ngImport: i0, template: `
184
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: SheetComponent, isStandalone: true, selector: "Sheet, Drawer", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, closeOnEscape: { classPropertyName: "closeOnEscape", publicName: "closeOnEscape", isSignal: true, isRequired: false, transformFunction: null }, closeOnBackdropClick: { classPropertyName: "closeOnBackdropClick", publicName: "closeOnBackdropClick", isSignal: true, isRequired: false, transformFunction: null }, backdrop: { classPropertyName: "backdrop", publicName: "backdrop", isSignal: true, isRequired: false, transformFunction: null }, showCloseButton: { classPropertyName: "showCloseButton", publicName: "showCloseButton", isSignal: true, isRequired: false, transformFunction: null }, closeButtonLabel: { classPropertyName: "closeButtonLabel", publicName: "closeButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, labelledBy: { classPropertyName: "labelledBy", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, describedBy: { classPropertyName: "describedBy", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: false, transformFunction: null }, density: { classPropertyName: "density", publicName: "density", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", openedChange: "openedChange" }, host: { properties: { "attr.aria-labelledby": "null", "attr.aria-describedby": "null" } }, viewQueries: [{ propertyName: "tpl", first: true, predicate: ["tpl"], descendants: true, isSignal: true }], ngImport: i0, template: `
171
185
  <ng-template #tpl>
172
186
  <div
173
187
  class="sheet-surface fixed z-50 bg-background shadow-lg transition ease-in-out"
@@ -235,7 +249,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImpor
235
249
  </div>
236
250
  </ng-template>
237
251
  `, styles: [".sheet-surface{animation:sheet-in .3s cubic-bezier(.2,0,0,1)}@keyframes sheet-in{0%{transform:var(--sheet-from)}to{transform:translate(0)}}@media(prefers-reduced-motion:reduce){.sheet-surface{animation-duration:0ms}}\n"] }]
238
- }], ctorParameters: () => [], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], side: [{ type: i0.Input, args: [{ isSignal: true, alias: "side", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], closeOnEscape: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnEscape", required: false }] }], closeOnBackdropClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnBackdropClick", required: false }] }], showCloseButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCloseButton", required: false }] }], closeButtonLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeButtonLabel", required: false }] }], labelledBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-labelledby", required: false }] }], describedBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-describedby", required: false }] }], role: [{ type: i0.Input, args: [{ isSignal: true, alias: "role", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], radius: [{ type: i0.Input, args: [{ isSignal: true, alias: "radius", required: false }] }], density: [{ type: i0.Input, args: [{ isSignal: true, alias: "density", required: false }] }], openedChange: [{ type: i0.Output, args: ["openedChange"] }], tpl: [{ type: i0.ViewChild, args: ['tpl', { isSignal: true }] }] } });
252
+ }], ctorParameters: () => [], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], side: [{ type: i0.Input, args: [{ isSignal: true, alias: "side", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], closeOnEscape: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnEscape", required: false }] }], closeOnBackdropClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnBackdropClick", required: false }] }], backdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "backdrop", required: false }] }], showCloseButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCloseButton", required: false }] }], closeButtonLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeButtonLabel", required: false }] }], labelledBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-labelledby", required: false }] }], describedBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-describedby", required: false }] }], role: [{ type: i0.Input, args: [{ isSignal: true, alias: "role", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], radius: [{ type: i0.Input, args: [{ isSignal: true, alias: "radius", required: false }] }], density: [{ type: i0.Input, args: [{ isSignal: true, alias: "density", required: false }] }], openedChange: [{ type: i0.Output, args: ["openedChange"] }], tpl: [{ type: i0.ViewChild, args: ['tpl', { isSignal: true }] }] } });
239
253
 
240
254
  class SheetCloseDirective {
241
255
  sheet = inject(SheetComponent);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ojiepermana/angular-component",
3
- "version": "22.0.46",
3
+ "version": "22.0.47",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/edsis/angular.git"
@@ -1,4 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
+ import { DialogBackdrop } from '@ojiepermana/angular-component/dialog';
2
3
  import { ButtonVariant, ButtonSize } from '@ojiepermana/angular-component/button';
3
4
 
4
5
  type AlertDialogSize = 'default' | 'sm';
@@ -16,6 +17,8 @@ declare class AlertDialogComponent {
16
17
  readonly open: _angular_core.ModelSignal<boolean>;
17
18
  readonly closeOnEscape: _angular_core.InputSignal<boolean>;
18
19
  readonly closeOnBackdropClick: _angular_core.InputSignal<boolean>;
20
+ /** Appearance of the area outside the surface. Defaults to a dimmed overlay. */
21
+ readonly backdrop: _angular_core.InputSignal<DialogBackdrop>;
19
22
  readonly showCloseButton: _angular_core.InputSignal<boolean>;
20
23
  readonly closeButtonLabel: _angular_core.InputSignal<string>;
21
24
  readonly labelledBy: _angular_core.InputSignal<string | null>;
@@ -46,7 +49,7 @@ declare class AlertDialogComponent {
46
49
  unregisterDescriptionId(id: string): void;
47
50
  close(): void;
48
51
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AlertDialogComponent, 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>;
52
+ 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; }; "backdrop": { "alias": "backdrop"; "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>;
50
53
  }
51
54
 
52
55
  declare class AlertDialogContentComponent {
@@ -85,7 +85,7 @@ declare class CommandItemComponent {
85
85
  readonly value: _angular_core.InputSignal<string>;
86
86
  readonly disabled: _angular_core.InputSignal<boolean>;
87
87
  readonly class: _angular_core.InputSignal<string>;
88
- readonly selected: _angular_core.OutputEmitterRef<KeyboardEvent | MouseEvent>;
88
+ readonly selected: _angular_core.OutputEmitterRef<MouseEvent | KeyboardEvent>;
89
89
  readonly active: _angular_core.WritableSignal<boolean>;
90
90
  readonly visible: _angular_core.Signal<boolean>;
91
91
  protected readonly classes: _angular_core.Signal<string>;
@@ -1,5 +1,14 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
 
3
+ /**
4
+ * Backdrop appearance for the area outside the dialog surface.
5
+ *
6
+ * - `'dim'`: dark, semi-transparent overlay (default) driven by the
7
+ * `--overlay-backdrop` theme token, so it recolors with theme/mode.
8
+ * - `'blur'`: the dim overlay plus a frosted `backdrop-filter` blur.
9
+ * - `'transparent'`: no dimming; the page behind stays fully visible.
10
+ */
11
+ type DialogBackdrop = 'dim' | 'blur' | 'transparent';
3
12
  /**
4
13
  * Declarative modal dialog. Renders into the body via CDK overlay when
5
14
  * `open` becomes `true`. Focus is trapped inside; restored to trigger on close.
@@ -26,6 +35,8 @@ declare class DialogComponent {
26
35
  readonly open: _angular_core.ModelSignal<boolean>;
27
36
  readonly closeOnEscape: _angular_core.InputSignal<boolean>;
28
37
  readonly closeOnBackdropClick: _angular_core.InputSignal<boolean>;
38
+ /** Appearance of the area outside the surface. Defaults to a dimmed overlay. */
39
+ readonly backdrop: _angular_core.InputSignal<DialogBackdrop>;
29
40
  readonly showCloseButton: _angular_core.InputSignal<boolean>;
30
41
  readonly closeButtonLabel: _angular_core.InputSignal<string>;
31
42
  readonly labelledBy: _angular_core.InputSignal<string | null>;
@@ -57,13 +68,15 @@ declare class DialogComponent {
57
68
  protected readonly surfaceClasses: _angular_core.Signal<string>;
58
69
  protected readonly radiusBase: _angular_core.Signal<string | null>;
59
70
  protected readonly densityBase: _angular_core.Signal<string | null>;
71
+ /** CDK `backdropClass` list: shared marker plus the selected appearance modifier. */
72
+ private readonly backdropClass;
60
73
  constructor();
61
74
  private attach;
62
75
  private detach;
63
76
  private requestClose;
64
77
  close(): void;
65
78
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DialogComponent, 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>;
79
+ 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; }; "backdrop": { "alias": "backdrop"; "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>;
67
80
  }
68
81
 
69
82
  declare class DialogCloseDirective {
@@ -119,3 +132,4 @@ declare class DialogFooterComponent {
119
132
  }
120
133
 
121
134
  export { DialogCloseDirective, DialogComponent, DialogContentComponent, DialogDescriptionComponent, DialogFooterComponent, DialogHeaderComponent, DialogTitleComponent };
135
+ export type { DialogBackdrop };
@@ -8,6 +8,15 @@ declare class SheetCloseDirective {
8
8
  }
9
9
 
10
10
  type SheetSide = 'top' | 'right' | 'bottom' | 'left';
11
+ /**
12
+ * Backdrop appearance for the area outside the sheet/drawer surface.
13
+ *
14
+ * - `'dim'`: dark, semi-transparent overlay (default) driven by the
15
+ * `--overlay-backdrop` theme token, so it recolors with theme/mode.
16
+ * - `'blur'`: the dim overlay plus a frosted `backdrop-filter` blur.
17
+ * - `'transparent'`: no dimming; the page behind stays fully visible.
18
+ */
19
+ type SheetBackdrop = 'dim' | 'blur' | 'transparent';
11
20
  declare class SheetComponent {
12
21
  private readonly overlay;
13
22
  private readonly vcr;
@@ -21,6 +30,8 @@ declare class SheetComponent {
21
30
  readonly variant: _angular_core.InputSignal<"sheet" | "drawer" | null>;
22
31
  readonly closeOnEscape: _angular_core.InputSignal<boolean>;
23
32
  readonly closeOnBackdropClick: _angular_core.InputSignal<boolean>;
33
+ /** Appearance of the area outside the surface. Defaults to a dimmed overlay. */
34
+ readonly backdrop: _angular_core.InputSignal<SheetBackdrop>;
24
35
  readonly showCloseButton: _angular_core.InputSignal<boolean>;
25
36
  readonly closeButtonLabel: _angular_core.InputSignal<string>;
26
37
  readonly labelledBy: _angular_core.InputSignal<string | null>;
@@ -46,6 +57,8 @@ declare class SheetComponent {
46
57
  protected readonly enterFrom: _angular_core.Signal<string>;
47
58
  protected readonly radiusBase: _angular_core.Signal<string | null>;
48
59
  protected readonly densityBase: _angular_core.Signal<string | null>;
60
+ /** CDK `backdropClass` list: shared marker plus the selected appearance modifier. */
61
+ private readonly backdropClass;
49
62
  constructor();
50
63
  private attach;
51
64
  private detach;
@@ -60,7 +73,7 @@ declare class SheetComponent {
60
73
  unregisterDescriptionId(id: string): void;
61
74
  private isDrawerHost;
62
75
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SheetComponent, 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>;
76
+ 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; }; "backdrop": { "alias": "backdrop"; "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>;
64
77
  }
65
78
 
66
79
  declare class SheetHeaderComponent {
@@ -109,4 +122,4 @@ declare class SheetFooterComponent {
109
122
  }
110
123
 
111
124
  export { SheetCloseDirective, SheetComponent, SheetContentComponent, SheetDescriptionComponent, SheetFooterComponent, SheetHeaderComponent, SheetTitleComponent };
112
- export type { SheetSide };
125
+ export type { SheetBackdrop, SheetSide };