@@ -59,15 +76,15 @@ const TemplateScrolling: Story = (args: DialogComponent) => ({
props: args,
template: `
- Scrolling Example
-
+ Scrolling Example
+
Dialog body text goes here.
repeating lines of characters
end of sequence!
-
+
SaveCancel
diff --git a/libs/components/src/dialog/dialog-close.directive.ts b/libs/components/src/dialog/directives/dialog-close.directive.ts
similarity index 72%
rename from libs/components/src/dialog/dialog-close.directive.ts
rename to libs/components/src/dialog/directives/dialog-close.directive.ts
index 11f894e04dc..a45991bb5e6 100644
--- a/libs/components/src/dialog/dialog-close.directive.ts
+++ b/libs/components/src/dialog/directives/dialog-close.directive.ts
@@ -1,18 +1,15 @@
import { DialogRef } from "@angular/cdk/dialog";
-import { Directive, Input, Optional } from "@angular/core";
+import { Directive, HostListener, Input, Optional } from "@angular/core";
@Directive({
selector: "[bitDialogClose]",
- host: {
- "(click)": "close()",
- },
})
export class DialogCloseDirective {
@Input("bit-dialog-close") dialogResult: any;
constructor(@Optional() public dialogRef: DialogRef) {}
- close() {
+ @HostListener("click") close(): void {
this.dialogRef.close(this.dialogResult);
}
}
diff --git a/libs/components/src/dialog/directives/dialog-title-container.directive.ts b/libs/components/src/dialog/directives/dialog-title-container.directive.ts
new file mode 100644
index 00000000000..96664a5f94b
--- /dev/null
+++ b/libs/components/src/dialog/directives/dialog-title-container.directive.ts
@@ -0,0 +1,30 @@
+import { CdkDialogContainer, DialogRef } from "@angular/cdk/dialog";
+import { Directive, HostBinding, Input, OnInit, Optional } from "@angular/core";
+
+// Increments for each instance of this component
+let nextId = 0;
+
+@Directive({
+ selector: "[bitDialogTitleContainer]",
+})
+export class DialogTitleContainerDirective implements OnInit {
+ @HostBinding("id") id = `bit-dialog-title-${nextId++}`;
+
+ @Input() simple = false;
+
+ constructor(@Optional() private dialogRef: DialogRef) {}
+
+ ngOnInit(): void {
+ // Based on angular/components, licensed under MIT
+ // https://github.com/angular/components/blob/14.2.0/src/material/dialog/dialog-content-directives.ts#L121-L128
+ if (this.dialogRef) {
+ Promise.resolve().then(() => {
+ const container = this.dialogRef.containerInstance as CdkDialogContainer;
+
+ if (container && !container._ariaLabelledBy) {
+ container._ariaLabelledBy = this.id;
+ }
+ });
+ }
+ }
+}
diff --git a/libs/components/src/dialog/dialog-service.stories.ts b/libs/components/src/dialog/simple-dialog.service.stories.ts
similarity index 68%
rename from libs/components/src/dialog/dialog-service.stories.ts
rename to libs/components/src/dialog/simple-dialog.service.stories.ts
index 50514d3c756..90963515aaa 100644
--- a/libs/components/src/dialog/dialog-service.stories.ts
+++ b/libs/components/src/dialog/simple-dialog.service.stories.ts
@@ -4,9 +4,10 @@ import { Meta, moduleMetadata, Story } from "@storybook/angular";
import { ButtonModule } from "../button";
-import { DialogCloseDirective } from "./dialog-close.directive";
import { DialogService } from "./dialog.service";
-import { DialogComponent } from "./dialog/dialog.component";
+import { DialogCloseDirective } from "./directives/dialog-close.directive";
+import { DialogTitleContainerDirective } from "./directives/dialog-title-container.directive";
+import { SimpleDialogComponent } from "./simple-dialog/simple-dialog.component";
interface Animal {
animal: string;
@@ -14,7 +15,7 @@ interface Animal {
@Component({
selector: "app-story-dialog",
- template: `Open Dialog`,
+ template: `Open Simple Dialog`,
})
class StoryDialogComponent {
constructor(public dialogService: DialogService) {}
@@ -31,18 +32,18 @@ class StoryDialogComponent {
@Component({
selector: "story-dialog-content",
template: `
-
- Dialog Title
-
+
+ Dialog Title
+
Dialog body text goes here.
Animal: {{ animal }}
-