feat(design-system): add reusable Dialog primitive
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
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:
33
src/app/shared/ui/dialog/dialog.component.html
Normal file
33
src/app/shared/ui/dialog/dialog.component.html
Normal 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"
|
||||
>
|
||||
×
|
||||
</button>
|
||||
</div>
|
||||
}
|
||||
<div class="app-dialog-panel__body">
|
||||
<ng-content />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
Reference in New Issue
Block a user