feat(design-system): add reusable Dialog primitive
Some checks failed
Architecture Governance / architecture (push) Has been cancelled

Standalone, OnPush. Backdrop click and Escape close, focus trap with
return-focus on close, role=dialog/aria-modal. Sizes sm/md/lg. Colors/
radius/shadow/spacing via existing tenant CSS vars with fallbacks.
This commit is contained in:
sdarbinyan
2026-07-15 03:34:52 +04:00
parent 5cbc9e4873
commit 27ff3169b9
3 changed files with 244 additions and 0 deletions

View File

@@ -0,0 +1,33 @@
@if (open()) {
<div class="app-dialog-backdrop" (click)="handleBackdropClick()">
<div
#panel
class="app-dialog-panel"
[class.app-dialog-panel--sm]="size() === 'sm'"
[class.app-dialog-panel--md]="size() === 'md'"
[class.app-dialog-panel--lg]="size() === 'lg'"
role="dialog"
aria-modal="true"
[attr.aria-label]="titleText()"
tabindex="-1"
(click)="$event.stopPropagation()"
>
@if (titleText()) {
<div class="app-dialog-panel__header">
<h2 class="app-dialog-panel__title">{{ titleText() }}</h2>
<button
type="button"
class="app-dialog-panel__close"
(click)="requestClose()"
aria-label="Close dialog"
>
&times;
</button>
</div>
}
<div class="app-dialog-panel__body">
<ng-content />
</div>
</div>
</div>
}