@radix-ng/primitives 1.0.0-beta.1 → 1.0.0-beta.3
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/LICENSE +1 -1
- package/README.md +76 -6
- package/fesm2022/radix-ng-primitives-accordion.mjs +2 -2
- package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-alert-dialog.mjs +30 -24
- package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-autocomplete.mjs +1786 -0
- package/fesm2022/radix-ng-primitives-autocomplete.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-calendar.mjs +14 -1
- package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-checkbox.mjs +2 -2
- package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-collapsible.mjs +1 -1
- package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-combobox.mjs +1983 -0
- package/fesm2022/radix-ng-primitives-combobox.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-context-menu.mjs +1 -1
- package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-core.mjs +480 -469
- package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-cropper.mjs +1 -1
- package/fesm2022/radix-ng-primitives-cropper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-date-field.mjs +11 -0
- package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-dialog.mjs +44 -46
- package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-drawer.mjs +154 -64
- package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-editable.mjs +1 -1
- package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-field.mjs +86 -6
- package/fesm2022/radix-ng-primitives-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-fieldset.mjs +1 -1
- package/fesm2022/radix-ng-primitives-fieldset.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-focus-scope.mjs +1 -1
- package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-form.mjs +207 -0
- package/fesm2022/radix-ng-primitives-form.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-input.mjs +85 -4
- package/fesm2022/radix-ng-primitives-input.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menu.mjs +44 -24
- package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menubar.mjs +1 -1
- package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-meter.mjs +1 -1
- package/fesm2022/radix-ng-primitives-meter.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs +39 -55
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-number-field.mjs +2 -2
- package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popover.mjs +36 -51
- package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popper.mjs +12 -6
- package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-portal.mjs +107 -17
- package/fesm2022/radix-ng-primitives-portal.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-presence.mjs +262 -79
- package/fesm2022/radix-ng-primitives-presence.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-preview-card.mjs +37 -51
- package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-progress.mjs +1 -1
- package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-roving-focus.mjs +1 -1
- package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-scroll-area.mjs +3 -3
- package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-select.mjs +469 -258
- package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-slider.mjs +1 -1
- package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-switch.mjs +3 -2
- package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tabs.mjs +1 -1
- package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-time-field.mjs +27 -3
- package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toast.mjs +1 -1
- package/fesm2022/radix-ng-primitives-toast.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle-group.mjs +1 -1
- package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toolbar.mjs +2 -2
- package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tooltip.mjs +39 -42
- package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
- package/package.json +13 -1
- package/schematics/ng-add/index.js +57 -0
- package/schematics/ng-add/index.js.map +1 -1
- package/schematics/ng-add/schema.d.ts +1 -0
- package/schematics/ng-add/schema.json +6 -0
- package/types/radix-ng-primitives-alert-dialog.d.ts +17 -11
- package/types/radix-ng-primitives-autocomplete.d.ts +596 -0
- package/types/radix-ng-primitives-combobox.d.ts +1310 -0
- package/types/radix-ng-primitives-core.d.ts +148 -56
- package/types/radix-ng-primitives-dialog.d.ts +32 -25
- package/types/radix-ng-primitives-drawer.d.ts +49 -22
- package/types/radix-ng-primitives-field.d.ts +71 -2
- package/types/radix-ng-primitives-form.d.ts +124 -0
- package/types/radix-ng-primitives-input.d.ts +75 -5
- package/types/radix-ng-primitives-menu.d.ts +19 -10
- package/types/radix-ng-primitives-navigation-menu.d.ts +24 -26
- package/types/radix-ng-primitives-popover.d.ts +23 -23
- package/types/radix-ng-primitives-popper.d.ts +7 -1
- package/types/radix-ng-primitives-portal.d.ts +53 -8
- package/types/radix-ng-primitives-presence.d.ts +98 -17
- package/types/radix-ng-primitives-preview-card.d.ts +24 -23
- package/types/radix-ng-primitives-select.d.ts +294 -137
- package/types/radix-ng-primitives-tooltip.d.ts +26 -19
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, booleanAttribute, inject, DestroyRef, model, input, output, signal, computed, effect, untracked, Directive, ElementRef, NgModule } from '@angular/core';
|
|
2
|
+
import { InjectionToken, booleanAttribute, inject, DestroyRef, model, input, output, signal, computed, effect, untracked, Directive, ElementRef, isDevMode, NgModule } from '@angular/core';
|
|
3
3
|
import { createContext, useTransitionStatus, injectId, useScrollLock } from '@radix-ng/primitives/core';
|
|
4
4
|
import { outputFromObservable, outputToObservable } from '@angular/core/rxjs-interop';
|
|
5
5
|
import * as i1 from '@radix-ng/primitives/dismissable-layer';
|
|
@@ -7,9 +7,8 @@ import { RdxDismissableLayer, provideRdxDismissableLayerConfig } from '@radix-ng
|
|
|
7
7
|
import * as i2 from '@radix-ng/primitives/focus-scope';
|
|
8
8
|
import { RdxFocusScope, provideRdxFocusScopeConfig } from '@radix-ng/primitives/focus-scope';
|
|
9
9
|
import * as i1$1 from '@radix-ng/primitives/portal';
|
|
10
|
-
import {
|
|
11
|
-
import
|
|
12
|
-
import { provideRdxPresenceContext, RdxPresenceDirective } from '@radix-ng/primitives/presence';
|
|
10
|
+
import { RdxPortalPresence } from '@radix-ng/primitives/portal';
|
|
11
|
+
import { provideRdxPresenceContext } from '@radix-ng/primitives/presence';
|
|
13
12
|
|
|
14
13
|
const DEFAULT_VARIANT = {
|
|
15
14
|
role: 'dialog',
|
|
@@ -25,7 +24,7 @@ function provideRdxDialogVariant(variant) {
|
|
|
25
24
|
|
|
26
25
|
const transformModal = (value) => value === 'trap-focus' ? value : booleanAttribute(value);
|
|
27
26
|
const context = () => contextFor(inject(RdxDialogRoot));
|
|
28
|
-
const [injectRdxDialogRootContext, provideRdxDialogRootContext] = createContext('RdxDialogRootContext');
|
|
27
|
+
const [injectRdxDialogRootContext, provideRdxDialogRootContext] = createContext('RdxDialogRootContext', 'components/dialog');
|
|
29
28
|
/**
|
|
30
29
|
* Groups all parts of the dialog.
|
|
31
30
|
*/
|
|
@@ -368,7 +367,13 @@ class RdxDialogPopup {
|
|
|
368
367
|
* Event handler called before focus returns after the popup is removed. Can be prevented.
|
|
369
368
|
*/
|
|
370
369
|
this.closeAutoFocus = outputFromObservable(outputToObservable(this.focusScope.unmountAutoFocus));
|
|
371
|
-
|
|
370
|
+
// Lock for the popup's whole mounted lifetime, not just while `isOpen()`. The popup is kept
|
|
371
|
+
// mounted by the portal-presence machine until the exit `@keyframes` finish, then destroyed
|
|
372
|
+
// (firing `useScrollLock`'s `onDestroy` unlock). Gating on `isOpen()` would restore the page
|
|
373
|
+
// scrollbar the instant the dialog starts closing, reflowing the page by the scrollbar width
|
|
374
|
+
// mid-animation — a visible judder. Holding the lock until unmount defers that to after the
|
|
375
|
+
// animation, when the dialog is already gone.
|
|
376
|
+
useScrollLock(computed(() => this.rootContext.modal() === true));
|
|
372
377
|
const unregisterTransitionElement = this.rootContext.registerTransitionElement(inject(ElementRef).nativeElement);
|
|
373
378
|
inject(DestroyRef).onDestroy(unregisterTransitionElement);
|
|
374
379
|
this.dismissableLayer.pointerDownOutside.subscribe((event) => {
|
|
@@ -458,63 +463,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
458
463
|
}], ctorParameters: () => [], propDecorators: { escapeKeyDown: [{ type: i0.Output, args: ["escapeKeyDown"] }], pointerDownOutside: [{ type: i0.Output, args: ["pointerDownOutside"] }], focusOutside: [{ type: i0.Output, args: ["focusOutside"] }], interactOutside: [{ type: i0.Output, args: ["interactOutside"] }], openAutoFocus: [{ type: i0.Output, args: ["openAutoFocus"] }], closeAutoFocus: [{ type: i0.Output, args: ["closeAutoFocus"] }] } });
|
|
459
464
|
|
|
460
465
|
/**
|
|
461
|
-
*
|
|
466
|
+
* Structural directive that teleports the dialog content (backdrop + popup) into a container (default
|
|
467
|
+
* `document.body`) while the dialog is open, and keeps it mounted until the CSS exit `@keyframes` on
|
|
468
|
+
* every root element finish.
|
|
469
|
+
*
|
|
470
|
+
* Dialog has two root nodes (backdrop + popup), so use the explicit `<ng-template rdxDialogPortal>`
|
|
471
|
+
* form. Pass `[container]` to portal into a different element.
|
|
462
472
|
*/
|
|
463
473
|
class RdxDialogPortal {
|
|
464
474
|
constructor() {
|
|
465
|
-
this.rootContext = injectRdxDialogRootContext();
|
|
466
475
|
/**
|
|
467
|
-
* Optional container to portal the content into. Defaults to `document.body`.
|
|
476
|
+
* Optional container to portal the content into. Defaults to `document.body`. Declared here (and
|
|
477
|
+
* forwarded to the composed {@link RdxPortalPresence}) so that the drawer and alert-dialog portals
|
|
478
|
+
* can re-expose it through their own `hostDirectives`.
|
|
468
479
|
*/
|
|
469
480
|
this.container = input(...(ngDevMode ? [undefined, { debugName: "container" }] : /* istanbul ignore next */ []));
|
|
470
481
|
}
|
|
471
482
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxDialogPortal, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
472
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: RdxDialogPortal, isStandalone: true, selector: "[rdxDialogPortal]", inputs: { container: { classPropertyName: "container", publicName: "container", isSignal: true, isRequired: false, transformFunction: null } },
|
|
483
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: RdxDialogPortal, isStandalone: true, selector: "ng-template[rdxDialogPortal]", inputs: { container: { classPropertyName: "container", publicName: "container", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideRdxPresenceContext(() => ({ present: injectRdxDialogRootContext().isOpen }))], exportAs: ["rdxDialogPortal"], hostDirectives: [{ directive: i1$1.RdxPortalPresence, inputs: ["container", "container"] }], ngImport: i0 }); }
|
|
473
484
|
}
|
|
474
485
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxDialogPortal, decorators: [{
|
|
475
486
|
type: Directive,
|
|
476
487
|
args: [{
|
|
477
|
-
selector: '[rdxDialogPortal]',
|
|
488
|
+
selector: 'ng-template[rdxDialogPortal]',
|
|
478
489
|
exportAs: 'rdxDialogPortal',
|
|
479
|
-
hostDirectives: [
|
|
480
|
-
|
|
481
|
-
directive: RdxPortal,
|
|
482
|
-
inputs: ['container']
|
|
483
|
-
}
|
|
484
|
-
],
|
|
485
|
-
host: {
|
|
486
|
-
'[attr.data-closed]': 'rootContext.isOpen() ? undefined : ""',
|
|
487
|
-
'[attr.data-open]': 'rootContext.isOpen() ? "" : undefined',
|
|
488
|
-
'[attr.data-state]': 'rootContext.isOpen() ? "open" : "closed"'
|
|
489
|
-
}
|
|
490
|
+
hostDirectives: [{ directive: RdxPortalPresence, inputs: ['container'] }],
|
|
491
|
+
providers: [provideRdxPresenceContext(() => ({ present: injectRdxDialogRootContext().isOpen }))]
|
|
490
492
|
}]
|
|
491
493
|
}], propDecorators: { container: [{ type: i0.Input, args: [{ isSignal: true, alias: "container", required: false }] }] } });
|
|
492
|
-
|
|
493
494
|
/**
|
|
494
|
-
*
|
|
495
|
+
* Dev-mode guard: `rdxDialogPortal` used to be an attribute directive on a `<div>`. It is now
|
|
496
|
+
* structural, so the old `<div rdxDialogPortal>` markup would silently stop portaling — fail loudly
|
|
497
|
+
* instead.
|
|
495
498
|
*/
|
|
496
|
-
class
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
499
|
+
class RdxDialogPortalMisuseGuard {
|
|
500
|
+
constructor() {
|
|
501
|
+
if (isDevMode()) {
|
|
502
|
+
throw new Error('[rdxDialogPortal] is now a structural directive. ' +
|
|
503
|
+
'Use `<ng-template rdxDialogPortal>` around the backdrop and popup. ' +
|
|
504
|
+
'rdxDialogPortalPresence has been removed. See https://radix-ng.com/components/dialog.md');
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxDialogPortalMisuseGuard, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
508
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: RdxDialogPortalMisuseGuard, isStandalone: true, selector: "[rdxDialogPortal]:not(ng-template)", ngImport: i0 }); }
|
|
504
509
|
}
|
|
505
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type:
|
|
510
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxDialogPortalMisuseGuard, decorators: [{
|
|
506
511
|
type: Directive,
|
|
507
512
|
args: [{
|
|
508
|
-
selector: 'ng-template
|
|
509
|
-
hostDirectives: [RdxPresenceDirective],
|
|
510
|
-
providers: [
|
|
511
|
-
provideRdxPresenceContext(() => {
|
|
512
|
-
const context = injectRdxDialogRootContext();
|
|
513
|
-
return { present: context.isOpen };
|
|
514
|
-
})
|
|
515
|
-
]
|
|
513
|
+
selector: '[rdxDialogPortal]:not(ng-template)'
|
|
516
514
|
}]
|
|
517
|
-
}] });
|
|
515
|
+
}], ctorParameters: () => [] });
|
|
518
516
|
|
|
519
517
|
/**
|
|
520
518
|
* An accessible title for the dialog.
|
|
@@ -709,8 +707,8 @@ function createRdxDialogHandle() {
|
|
|
709
707
|
const dialogImports = [
|
|
710
708
|
RdxDialogRoot,
|
|
711
709
|
RdxDialogTrigger,
|
|
712
|
-
RdxDialogPortalPresence,
|
|
713
710
|
RdxDialogPortal,
|
|
711
|
+
RdxDialogPortalMisuseGuard,
|
|
714
712
|
RdxDialogBackdrop,
|
|
715
713
|
RdxDialogViewport,
|
|
716
714
|
RdxDialogPopup,
|
|
@@ -722,8 +720,8 @@ class RdxDialogModule {
|
|
|
722
720
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
723
721
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: RdxDialogModule, imports: [RdxDialogRoot,
|
|
724
722
|
RdxDialogTrigger,
|
|
725
|
-
RdxDialogPortalPresence,
|
|
726
723
|
RdxDialogPortal,
|
|
724
|
+
RdxDialogPortalMisuseGuard,
|
|
727
725
|
RdxDialogBackdrop,
|
|
728
726
|
RdxDialogViewport,
|
|
729
727
|
RdxDialogPopup,
|
|
@@ -731,8 +729,8 @@ class RdxDialogModule {
|
|
|
731
729
|
RdxDialogDescription,
|
|
732
730
|
RdxDialogClose], exports: [RdxDialogRoot,
|
|
733
731
|
RdxDialogTrigger,
|
|
734
|
-
RdxDialogPortalPresence,
|
|
735
732
|
RdxDialogPortal,
|
|
733
|
+
RdxDialogPortalMisuseGuard,
|
|
736
734
|
RdxDialogBackdrop,
|
|
737
735
|
RdxDialogViewport,
|
|
738
736
|
RdxDialogPopup,
|
|
@@ -753,5 +751,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
753
751
|
* Generated bundle index. Do not edit.
|
|
754
752
|
*/
|
|
755
753
|
|
|
756
|
-
export { RDX_DIALOG_VARIANT, RdxDialogBackdrop, RdxDialogClose, RdxDialogDescription, RdxDialogHandle, RdxDialogModule, RdxDialogPopup, RdxDialogPortal,
|
|
754
|
+
export { RDX_DIALOG_VARIANT, RdxDialogBackdrop, RdxDialogClose, RdxDialogDescription, RdxDialogHandle, RdxDialogModule, RdxDialogPopup, RdxDialogPortal, RdxDialogPortalMisuseGuard, RdxDialogRoot, RdxDialogTitle, RdxDialogTrigger, RdxDialogViewport, createRdxDialogHandle, dialogImports, injectRdxDialogRootContext, provideRdxDialogRootContext, provideRdxDialogVariant };
|
|
757
755
|
//# sourceMappingURL=radix-ng-primitives-dialog.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radix-ng-primitives-dialog.mjs","sources":["../../../packages/primitives/dialog/src/dialog-variant.ts","../../../packages/primitives/dialog/src/dialog-root.ts","../../../packages/primitives/dialog/src/dialog-backdrop.ts","../../../packages/primitives/dialog/src/dialog-close.ts","../../../packages/primitives/dialog/src/dialog-description.ts","../../../packages/primitives/dialog/src/dialog-popup.ts","../../../packages/primitives/dialog/src/dialog-portal.ts","../../../packages/primitives/dialog/src/dialog-portal-presence.ts","../../../packages/primitives/dialog/src/dialog-title.ts","../../../packages/primitives/dialog/src/dialog-trigger.ts","../../../packages/primitives/dialog/src/dialog-viewport.ts","../../../packages/primitives/dialog/src/dialog-handle.ts","../../../packages/primitives/dialog/index.ts","../../../packages/primitives/dialog/radix-ng-primitives-dialog.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core';\n\nexport type RdxDialogRole = 'dialog' | 'alertdialog';\n\n/**\n * Behavioral profile for a dialog, supplied by a composing root (e.g. alert-dialog, drawer) to\n * specialize the shared Dialog without new public dialog inputs.\n *\n * These are *force-only* overrides: a variant uses them to pin behavior regardless of the public\n * inputs (as alert-dialog does). A variant that wants a configurable default instead simply leaves\n * the flags off and lets the composing root proxy the `modal` / `disablePointerDismissal` inputs —\n * that is how Drawer stays modal-by-default while remaining user-overridable.\n *\n * The three concerns are kept independent on purpose so future variants can mix them freely\n * (e.g. a modal, non-dismissable drawer that is still `role=\"dialog\"`):\n * - `role` — ARIA role rendered on the popup.\n * - `forceModal` — pin modality to `true` regardless of the `modal` input.\n * - `forcePointerDismissalDisabled` — disable outside-press / focus-out dismissal (Escape still closes).\n */\nexport interface RdxDialogVariant {\n role: RdxDialogRole;\n forceModal: boolean;\n forcePointerDismissalDisabled: boolean;\n}\n\nconst DEFAULT_VARIANT: RdxDialogVariant = {\n role: 'dialog',\n forceModal: false,\n forcePointerDismissalDisabled: false\n};\n\nexport const RDX_DIALOG_VARIANT = new InjectionToken<RdxDialogVariant>('RdxDialogVariant', {\n factory: () => DEFAULT_VARIANT\n});\n\nexport function provideRdxDialogVariant(variant: Partial<RdxDialogVariant>): Provider {\n return { provide: RDX_DIALOG_VARIANT, useValue: { ...DEFAULT_VARIANT, ...variant } };\n}\n","import {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n inject,\n input,\n model,\n output,\n Signal,\n signal,\n untracked\n} from '@angular/core';\nimport {\n BooleanInput,\n createContext,\n injectId,\n RdxTransitionStatus,\n useTransitionStatus\n} from '@radix-ng/primitives/core';\nimport { RdxDialogHandle } from './dialog-handle';\nimport { RDX_DIALOG_VARIANT, RdxDialogRole } from './dialog-variant';\n\nexport type RdxDialogModal = boolean | 'trap-focus';\n\nexport type RdxDialogOpenChangeReason =\n | 'trigger-press'\n | 'close-press'\n | 'outside-press'\n | 'focus-out'\n | 'escape-key'\n | 'swipe'\n | 'imperative-action'\n | 'none';\n\nexport interface RdxDialogOpenChange {\n open: boolean;\n triggerId: string | null;\n trigger: HTMLElement | undefined;\n reason: RdxDialogOpenChangeReason;\n event: Event;\n}\n\ninterface RdxDialogRegisteredTrigger {\n element: HTMLElement;\n payload: () => unknown;\n}\n\nconst transformModal = (value: BooleanInput | 'trap-focus'): RdxDialogModal =>\n value === 'trap-focus' ? value : booleanAttribute(value);\n\nconst context = () => contextFor(inject(RdxDialogRoot));\n\nexport interface RdxDialogRootContext {\n contentId: string;\n titleId: Signal<string | undefined>;\n descriptionId: Signal<string | undefined>;\n isOpen: Signal<boolean>;\n /** Effective modality (the variant can pin this to `true`). */\n modal: Signal<RdxDialogModal>;\n /** Effective outside-press / focus-out dismissal flag (the variant can force it on). */\n disablePointerDismissal: Signal<boolean>;\n /** ARIA role for the popup; constant, fixed by the variant at construction. */\n role: RdxDialogRole;\n transitionStatus: Signal<RdxTransitionStatus>;\n trigger: Signal<HTMLElement | undefined>;\n triggers: Signal<HTMLElement[]>;\n payload: Signal<unknown>;\n /** Whether this dialog is nested in another; constant, fixed at construction. */\n nested: boolean;\n nestedDialogOpen: Signal<boolean>;\n setTitleId: (id: string | undefined) => void;\n setDescriptionId: (id: string | undefined) => void;\n registerTransitionElement: (element: HTMLElement) => () => void;\n registerTrigger: (id: string, trigger: HTMLElement, payload: () => unknown) => () => void;\n open: (\n trigger?: HTMLElement,\n payload?: unknown,\n triggerId?: string,\n reason?: RdxDialogOpenChangeReason,\n event?: Event\n ) => void;\n close: (reason?: RdxDialogOpenChangeReason, event?: Event) => void;\n toggle: (triggerId: string, trigger: HTMLElement, payload?: unknown, event?: Event) => void;\n}\n\nexport const [injectRdxDialogRootContext, provideRdxDialogRootContext] =\n createContext<RdxDialogRootContext>('RdxDialogRootContext');\n\n/**\n * Groups all parts of the dialog.\n */\n@Directive({\n selector: '[rdxDialogRoot]',\n exportAs: 'rdxDialogRoot',\n providers: [provideRdxDialogRootContext(context)]\n})\nexport class RdxDialogRoot {\n private readonly destroyRef = inject(DestroyRef);\n private readonly parentRoot = inject(RdxDialogRoot, { optional: true, skipSelf: true });\n private readonly variant = inject(RDX_DIALOG_VARIANT);\n private hasAppliedDefaultOpen = false;\n private hasAppliedDefaultTriggerId = false;\n private readonly registeredTriggers = new Map<string, RdxDialogRegisteredTrigger>();\n\n private readonly transition = useTransitionStatus((open) => this.emitOpenChangeComplete(open));\n readonly transitionStatus = this.transition.status;\n readonly registerTransitionElement = this.transition.registerElement;\n\n /**\n * Whether the dialog is currently open.\n */\n readonly open = model(false);\n\n /**\n * Whether the dialog is initially open.\n */\n readonly defaultOpen = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * ID of the trigger associated with a controlled dialog.\n */\n readonly triggerId = model<string | null>(null);\n\n /**\n * ID of the trigger associated with an initially open uncontrolled dialog.\n */\n readonly defaultTriggerId = input<string | null>(null);\n\n /**\n * Determines if the dialog enters a modal state when open.\n * - `true`: focus is trapped, page scroll is locked, outside pointer events are disabled.\n * - `false`: interaction with the rest of the document is allowed.\n * - `'trap-focus'`: focus is trapped, but scroll is not locked and outside pointer events remain enabled.\n */\n readonly modal = input<RdxDialogModal, BooleanInput | 'trap-focus'>(true, { transform: transformModal });\n\n /**\n * Determines whether the dialog should close on outside clicks.\n */\n readonly disablePointerDismissal = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Associates this root with detached trigger elements rendered outside of it.\n */\n readonly handle = input<RdxDialogHandle<any>>();\n\n /**\n * Event handler called when the dialog is opened or closed.\n */\n readonly onOpenChange = output<RdxDialogOpenChange>();\n\n /**\n * Event handler called after any animations complete when the dialog is opened or closed.\n */\n readonly onOpenChangeComplete = output<boolean>();\n\n readonly contentId = injectId('rdx-dialog-content-');\n readonly titleId = signal<string | undefined>(undefined);\n readonly descriptionId = signal<string | undefined>(undefined);\n readonly trigger = signal<HTMLElement | undefined>(undefined);\n readonly triggers = signal<HTMLElement[]>([]);\n readonly payload = signal<unknown>(undefined);\n readonly nestedOpenCount = signal(0);\n\n /** Whether this dialog is rendered inside another dialog. Fixed at construction. */\n readonly nested = !!this.parentRoot;\n readonly nestedDialogOpen = computed(() => this.nestedOpenCount() > 0);\n\n /** ARIA role, fixed at construction by the dialog variant (`alertdialog` for alert dialogs). */\n readonly role = this.variant.role;\n\n /** Effective modality: the variant can pin it to `true` regardless of the `modal` input. */\n readonly effectiveModal = computed<RdxDialogModal>(() => (this.variant.forceModal ? true : this.modal()));\n /** Effective dismissal flag: disabled when the input asks, or when the variant forces it (alerts). */\n readonly effectiveDisablePointerDismissal = computed(\n () => this.disablePointerDismissal() || this.variant.forcePointerDismissalDisabled\n );\n\n constructor() {\n let previousOpen = this.open();\n\n effect(() => {\n const defaultOpen = this.defaultOpen();\n\n if (!this.hasAppliedDefaultOpen && defaultOpen) {\n this.hasAppliedDefaultOpen = true;\n this.open.set(defaultOpen);\n }\n });\n\n effect(() => {\n const defaultTriggerId = this.defaultTriggerId();\n\n if (!this.hasAppliedDefaultTriggerId && defaultTriggerId !== null) {\n this.hasAppliedDefaultTriggerId = true;\n this.triggerId.set(defaultTriggerId);\n }\n });\n\n effect(() => {\n const triggerId = this.triggerId();\n untracked(() => this.syncTriggerId(triggerId));\n });\n\n effect(() => {\n const open = this.open();\n\n if (open !== previousOpen) {\n previousOpen = open;\n untracked(() => this.transition.start(open));\n }\n });\n\n // Report nested open state to the parent dialog so it can apply data-nested-dialog-open.\n effect((onCleanup) => {\n const open = this.open();\n\n if (open && this.parentRoot) {\n onCleanup(untracked(() => this.parentRoot!.openNestedChild()));\n }\n });\n\n effect((onCleanup) => {\n const handle = this.handle();\n\n if (handle) {\n onCleanup(untracked(() => handle.registerRoot(contextFor(this))));\n }\n });\n }\n\n show(\n trigger = this.trigger(),\n payload?: unknown,\n triggerId?: string,\n reason: RdxDialogOpenChangeReason = 'none',\n event = new Event('dialog.open-change')\n ) {\n if (trigger) {\n this.trigger.set(trigger);\n }\n\n if (triggerId !== undefined) {\n this.triggerId.set(triggerId);\n }\n\n // Only adopt the payload when a trigger context is actually provided, so a bare\n // imperative re-show on an already-open dialog doesn't clobber the live payload.\n if (trigger !== undefined || payload !== undefined) {\n this.payload.set(payload);\n }\n\n if (this.open()) {\n return;\n }\n\n this.open.set(true);\n this.emitOpenChange(true, reason, event);\n }\n\n close(reason: RdxDialogOpenChangeReason = 'none', event = new Event('dialog.open-change')) {\n if (!this.open()) {\n return;\n }\n\n this.open.set(false);\n this.emitOpenChange(false, reason, event);\n }\n\n toggle(triggerId: string, trigger: HTMLElement, payload?: unknown, event = new Event('dialog.open-change')) {\n if (this.open() && this.trigger() === trigger) {\n this.close('trigger-press', event);\n return;\n }\n\n this.show(trigger, payload, triggerId, 'trigger-press', event);\n }\n\n registerTrigger(id: string, trigger: HTMLElement, payload: () => unknown) {\n this.registeredTriggers.set(id, { element: trigger, payload });\n this.triggers.update((triggers) => (triggers.includes(trigger) ? triggers : [...triggers, trigger]));\n\n if (this.triggerId() === id || (!this.trigger() && this.triggerId() === null)) {\n this.trigger.set(trigger);\n this.payload.set(payload());\n }\n\n return () => {\n if (this.registeredTriggers.get(id)?.element === trigger) {\n this.registeredTriggers.delete(id);\n }\n\n this.triggers.update((triggers) => triggers.filter((candidate) => candidate !== trigger));\n\n if (!this.destroyRef.destroyed && this.trigger() === trigger) {\n const next = this.registeredTriggers.entries().next().value;\n\n if (this.triggerId() !== null) {\n this.triggerId.set(next?.[0] ?? null);\n }\n\n this.trigger.set(next?.[1].element);\n this.payload.set(next?.[1].payload());\n\n // Intentionally do NOT close when the last trigger unregisters (unlike popover):\n // a controlled / imperatively-opened dialog must survive its trigger unmounting.\n }\n };\n }\n\n /** Increments the nested-open counter and returns a release callback that decrements it. */\n openNestedChild() {\n this.nestedOpenCount.update((count) => count + 1);\n return () => this.nestedOpenCount.update((count) => count - 1);\n }\n\n private syncTriggerId(triggerId: string | null) {\n if (triggerId === null) {\n // Controlled triggerId cleared: drop the active trigger so stale state doesn't linger.\n this.trigger.set(undefined);\n this.payload.set(undefined);\n return;\n }\n\n const trigger = this.registeredTriggers.get(triggerId);\n\n if (trigger && trigger.element !== this.trigger()) {\n this.trigger.set(trigger.element);\n this.payload.set(trigger.payload());\n }\n }\n\n private emitOpenChange(open: boolean, reason: RdxDialogOpenChangeReason, event: Event) {\n this.onOpenChange.emit({\n open,\n triggerId: this.triggerId(),\n trigger: this.trigger(),\n reason,\n event\n });\n }\n\n private emitOpenChangeComplete(open: boolean) {\n if (!this.destroyRef.destroyed) {\n this.onOpenChangeComplete.emit(open);\n }\n }\n}\n\nfunction contextFor(root: RdxDialogRoot): RdxDialogRootContext {\n return {\n contentId: root.contentId,\n titleId: root.titleId.asReadonly(),\n descriptionId: root.descriptionId.asReadonly(),\n isOpen: root.open,\n modal: root.effectiveModal,\n disablePointerDismissal: root.effectiveDisablePointerDismissal,\n role: root.role,\n transitionStatus: root.transitionStatus,\n trigger: root.trigger.asReadonly(),\n triggers: root.triggers.asReadonly(),\n payload: root.payload.asReadonly(),\n nested: root.nested,\n nestedDialogOpen: root.nestedDialogOpen,\n setTitleId: (id: string | undefined) => root.titleId.set(id),\n setDescriptionId: (id: string | undefined) => root.descriptionId.set(id),\n registerTransitionElement: (element) => root.registerTransitionElement(element),\n registerTrigger: (id, trigger, payload) => root.registerTrigger(id, trigger, payload),\n open: (trigger, payload, triggerId, reason, event) => root.show(trigger, payload, triggerId, reason, event),\n close: (reason, event) => root.close(reason, event),\n toggle: (triggerId, trigger, payload, event) => root.toggle(triggerId, trigger, payload, event)\n };\n}\n","import { Directive } from '@angular/core';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * An overlay displayed beneath the dialog popup.\n */\n@Directive({\n selector: '[rdxDialogBackdrop]',\n exportAs: 'rdxDialogBackdrop',\n host: {\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-ending-style]': 'rootContext.transitionStatus() === \"ending\" ? \"\" : undefined',\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-starting-style]': 'rootContext.transitionStatus() === \"starting\" ? \"\" : undefined',\n '[attr.data-state]': 'rootContext.isOpen() ? \"open\" : \"closed\"',\n '[attr.data-nested]': 'rootContext.nested ? \"\" : undefined',\n '[attr.data-nested-dialog-open]': 'rootContext.nestedDialogOpen() ? \"\" : undefined'\n }\n})\nexport class RdxDialogBackdrop {\n protected readonly rootContext = injectRdxDialogRootContext();\n}\n","import { Directive } from '@angular/core';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * A button that closes the dialog.\n */\n@Directive({\n selector: 'button[rdxDialogClose]',\n exportAs: 'rdxDialogClose',\n host: {\n type: 'button',\n '(click)': 'rootContext.close(\"close-press\", $event)'\n }\n})\nexport class RdxDialogClose {\n protected readonly rootContext = injectRdxDialogRootContext();\n}\n","import { DestroyRef, Directive, inject } from '@angular/core';\nimport { injectId } from '@radix-ng/primitives/core';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * An accessible description for the dialog.\n */\n@Directive({\n selector: '[rdxDialogDescription]',\n exportAs: 'rdxDialogDescription',\n host: {\n '[id]': 'id'\n }\n})\nexport class RdxDialogDescription {\n private readonly rootContext = injectRdxDialogRootContext();\n readonly id = injectId('rdx-dialog-description-');\n\n constructor() {\n this.rootContext.setDescriptionId(this.id);\n inject(DestroyRef).onDestroy(() => this.rootContext.setDescriptionId(undefined));\n }\n}\n","import { computed, DestroyRef, Directive, ElementRef, inject } from '@angular/core';\nimport { outputFromObservable, outputToObservable } from '@angular/core/rxjs-interop';\nimport { useScrollLock } from '@radix-ng/primitives/core';\nimport { provideRdxDismissableLayerConfig, RdxDismissableLayer } from '@radix-ng/primitives/dismissable-layer';\nimport { provideRdxFocusScopeConfig, RdxFocusScope } from '@radix-ng/primitives/focus-scope';\nimport { injectRdxDialogRootContext, RdxDialogOpenChangeReason } from './dialog-root';\n\n/**\n * A container for the dialog contents.\n */\n@Directive({\n selector: '[rdxDialogPopup]',\n exportAs: 'rdxDialogPopup',\n hostDirectives: [RdxDismissableLayer, RdxFocusScope],\n providers: [\n provideRdxDismissableLayerConfig(() => {\n const rootContext = injectRdxDialogRootContext();\n\n return {\n disableOutsidePointerEvents: computed(() => rootContext.modal() === true)\n };\n }),\n provideRdxFocusScopeConfig(() => {\n const rootContext = injectRdxDialogRootContext();\n\n return {\n trapped: computed(() => rootContext.modal() === 'trap-focus' || rootContext.modal() === true)\n };\n })\n ],\n host: {\n '[attr.role]': 'rootContext.role',\n '[attr.aria-modal]': 'rootContext.modal() === true ? \"true\" : undefined',\n '[attr.aria-describedby]': 'rootContext.descriptionId()',\n '[attr.aria-labelledby]': 'rootContext.titleId()',\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-ending-style]': 'rootContext.transitionStatus() === \"ending\" ? \"\" : undefined',\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-starting-style]': 'rootContext.transitionStatus() === \"starting\" ? \"\" : undefined',\n '[attr.data-state]': 'rootContext.isOpen() ? \"open\" : \"closed\"',\n '[attr.data-nested]': 'rootContext.nested ? \"\" : undefined',\n '[attr.data-nested-dialog-open]': 'rootContext.nestedDialogOpen() ? \"\" : undefined',\n '[id]': 'rootContext.contentId'\n }\n})\nexport class RdxDialogPopup {\n protected readonly rootContext = injectRdxDialogRootContext();\n private readonly dismissableLayer = inject(RdxDismissableLayer);\n private readonly focusScope = inject(RdxFocusScope);\n private dismissDetails: { reason: RdxDialogOpenChangeReason; event: Event } = {\n reason: 'none',\n event: new Event('dialog.dismiss')\n };\n\n /**\n * Event handler called when the escape key is down. Can be prevented.\n */\n readonly escapeKeyDown = outputFromObservable(outputToObservable(this.dismissableLayer.escapeKeyDown));\n\n /**\n * Event handler called when a pointerdown event happens outside of the popup. Can be prevented.\n */\n readonly pointerDownOutside = outputFromObservable(outputToObservable(this.dismissableLayer.pointerDownOutside));\n\n /**\n * Event handler called when focus moves outside of the popup. Can be prevented.\n */\n readonly focusOutside = outputFromObservable(outputToObservable(this.dismissableLayer.focusOutside));\n\n /**\n * Event handler called when an interaction happens outside of the popup. Can be prevented.\n */\n readonly interactOutside = outputFromObservable(outputToObservable(this.dismissableLayer.interactOutside));\n\n /**\n * Event handler called before focus moves into the popup. Can be prevented.\n */\n readonly openAutoFocus = outputFromObservable(outputToObservable(this.focusScope.mountAutoFocus));\n\n /**\n * Event handler called before focus returns after the popup is removed. Can be prevented.\n */\n readonly closeAutoFocus = outputFromObservable(outputToObservable(this.focusScope.unmountAutoFocus));\n\n constructor() {\n useScrollLock(computed(() => this.rootContext.modal() === true && this.rootContext.isOpen()));\n\n const unregisterTransitionElement = this.rootContext.registerTransitionElement(\n inject<ElementRef<HTMLElement>>(ElementRef).nativeElement\n );\n\n inject(DestroyRef).onDestroy(unregisterTransitionElement);\n\n this.dismissableLayer.pointerDownOutside.subscribe((event) => {\n this.dismissDetails = { reason: 'outside-press', event };\n\n // A pointerdown on the trigger is an \"outside\" press relative to the portaled popup.\n // Let the trigger's own click toggle the dialog instead of dismissing here (which would\n // close and then immediately reopen).\n if (this.isEventOnTrigger(event)) {\n event.preventDefault();\n }\n });\n\n this.dismissableLayer.focusOutside.subscribe((event) => {\n this.dismissDetails = { reason: 'focus-out', event };\n\n if (this.isEventOnTrigger(event)) {\n event.preventDefault();\n }\n });\n\n this.dismissableLayer.escapeKeyDown.subscribe((event) => {\n this.dismissDetails = { reason: 'escape-key', event };\n });\n\n this.dismissableLayer.dismiss.subscribe(() => {\n const { reason, event } = this.dismissDetails;\n this.dismissDetails = { reason: 'none', event: new Event('dialog.dismiss') };\n\n // When pointer dismissal is disabled, keep the dialog open on outside interactions.\n // Escape always closes (standard a11y behavior).\n if ((reason === 'outside-press' || reason === 'focus-out') && this.rootContext.disablePointerDismissal()) {\n return;\n }\n\n this.rootContext.close(reason, event);\n });\n }\n\n private isEventOnTrigger(event: Event): boolean {\n const target = event.target as Node | null;\n return !!target && this.rootContext.triggers().some((trigger) => trigger.contains(target));\n }\n}\n","import { Directive, input } from '@angular/core';\nimport { RdxPortal, RdxPortalContainer } from '@radix-ng/primitives/portal';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * Moves the dialog to a different part of the DOM.\n */\n@Directive({\n selector: '[rdxDialogPortal]',\n exportAs: 'rdxDialogPortal',\n hostDirectives: [\n {\n directive: RdxPortal,\n inputs: ['container']\n }\n ],\n host: {\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-state]': 'rootContext.isOpen() ? \"open\" : \"closed\"'\n }\n})\nexport class RdxDialogPortal {\n protected readonly rootContext = injectRdxDialogRootContext();\n\n /**\n * Optional container to portal the content into. Defaults to `document.body`.\n */\n readonly container = input<RdxPortalContainer>();\n}\n","import { Directive } from '@angular/core';\nimport { provideRdxPresenceContext, RdxPresenceDirective } from '@radix-ng/primitives/presence';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * Mounts the portal while the dialog is open and waits for CSS exit keyframes before unmounting.\n */\n@Directive({\n selector: 'ng-template[rdxDialogPortalPresence]',\n hostDirectives: [RdxPresenceDirective],\n providers: [\n provideRdxPresenceContext(() => {\n const context = injectRdxDialogRootContext();\n\n return { present: context.isOpen };\n })\n ]\n})\nexport class RdxDialogPortalPresence {}\n","import { DestroyRef, Directive, inject } from '@angular/core';\nimport { injectId } from '@radix-ng/primitives/core';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * An accessible title for the dialog.\n */\n@Directive({\n selector: '[rdxDialogTitle]',\n exportAs: 'rdxDialogTitle',\n host: {\n '[id]': 'id'\n }\n})\nexport class RdxDialogTitle {\n private readonly rootContext = injectRdxDialogRootContext();\n readonly id = injectId('rdx-dialog-title-');\n\n constructor() {\n this.rootContext.setTitleId(this.id);\n inject(DestroyRef).onDestroy(() => this.rootContext.setTitleId(undefined));\n }\n}\n","import { booleanAttribute, computed, Directive, effect, ElementRef, inject, input, untracked } from '@angular/core';\nimport { injectId } from '@radix-ng/primitives/core';\nimport { RdxDialogHandle } from './dialog-handle';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * A button that opens the dialog.\n */\n@Directive({\n selector: 'button[rdxDialogTrigger]',\n exportAs: 'rdxDialogTrigger',\n host: {\n type: 'button',\n '[attr.aria-haspopup]': '\"dialog\"',\n '[attr.aria-controls]': 'rootContext()?.contentId',\n '[attr.aria-expanded]': 'isOpen()',\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\n '[attr.data-popup-open]': 'isOpen() ? \"\" : undefined',\n '[attr.disabled]': 'disabled() ? \"\" : undefined',\n '[id]': 'triggerId()',\n '(click)': 'handleClick($event)'\n }\n})\nexport class RdxDialogTrigger {\n private readonly parentRootContext = injectRdxDialogRootContext(true);\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Associates this trigger with a detached dialog root.\n */\n readonly handle = input<RdxDialogHandle<any>>();\n\n /**\n * Data associated with this trigger while it is active.\n */\n readonly payload = input<unknown>();\n\n /**\n * ID used to identify this trigger when opening a detached or controlled dialog.\n */\n readonly id = input<string>();\n\n /**\n * Whether the trigger should ignore user interaction.\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n private readonly generatedId = injectId('rdx-dialog-trigger-');\n protected readonly triggerId = computed(() => this.id() ?? this.generatedId);\n protected readonly rootContext = computed(() => this.handle()?.context() ?? this.parentRootContext);\n protected readonly isOpen = computed(\n () => this.rootContext()?.isOpen() === true && this.rootContext()?.trigger() === this.elementRef.nativeElement\n );\n\n constructor() {\n effect((onCleanup) => {\n const handle = this.handle();\n\n if (handle) {\n onCleanup(\n untracked(() =>\n handle.registerTrigger(this.triggerId(), this.elementRef.nativeElement, () => this.payload())\n )\n );\n } else if (this.parentRootContext) {\n onCleanup(\n untracked(() =>\n this.parentRootContext!.registerTrigger(this.triggerId(), this.elementRef.nativeElement, () =>\n this.payload()\n )\n )\n );\n }\n });\n }\n\n protected handleClick(event: MouseEvent) {\n if (this.disabled()) {\n return;\n }\n\n if (this.handle()) {\n this.handle()!.toggle(this.triggerId(), event);\n } else {\n this.parentRootContext?.toggle(this.triggerId(), this.elementRef.nativeElement, this.payload(), event);\n }\n }\n}\n","import { Directive } from '@angular/core';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * A positioning container for the dialog popup that can be made scrollable.\n *\n * Place it inside the portal, around the popup, to scroll the popup when it is taller than the\n * viewport (outside scroll). Pointer events pass through while the dialog is closed.\n */\n@Directive({\n selector: '[rdxDialogViewport]',\n exportAs: 'rdxDialogViewport',\n host: {\n role: 'presentation',\n '[style.pointer-events]': 'rootContext.isOpen() ? null : \"none\"',\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-ending-style]': 'rootContext.transitionStatus() === \"ending\" ? \"\" : undefined',\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-starting-style]': 'rootContext.transitionStatus() === \"starting\" ? \"\" : undefined',\n '[attr.data-state]': 'rootContext.isOpen() ? \"open\" : \"closed\"',\n '[attr.data-nested]': 'rootContext.nested ? \"\" : undefined',\n '[attr.data-nested-dialog-open]': 'rootContext.nestedDialogOpen() ? \"\" : undefined'\n }\n})\nexport class RdxDialogViewport {\n protected readonly rootContext = injectRdxDialogRootContext();\n}\n","import { computed, signal } from '@angular/core';\nimport type { RdxDialogRootContext } from './dialog-root';\n\ninterface RdxDialogHandleTrigger<Payload> {\n element: HTMLElement;\n payload: () => Payload | undefined;\n}\n\n/**\n * Connects a dialog root with trigger elements rendered elsewhere in the DOM, and exposes\n * imperative `open`/`close`/`toggle` methods.\n */\nexport class RdxDialogHandle<Payload = unknown> {\n private readonly rootContext = signal<RdxDialogRootContext | undefined>(undefined);\n private readonly triggers = new Map<string, RdxDialogHandleTrigger<Payload>>();\n private readonly rootTriggerCleanups = new Map<string, () => void>();\n\n readonly isOpen = computed(() => this.rootContext()?.isOpen() ?? false);\n\n open(triggerId: string) {\n const trigger = this.triggers.get(triggerId);\n\n if (!trigger) {\n throw new Error(`No dialog trigger registered with id \"${triggerId}\".`);\n }\n\n this.rootContext()?.open(\n trigger.element,\n trigger.payload(),\n triggerId,\n 'imperative-action',\n new Event('dialog.open')\n );\n }\n\n close() {\n this.rootContext()?.close('imperative-action', new Event('dialog.close'));\n }\n\n toggle(triggerId: string, event = new Event('dialog.toggle')) {\n const trigger = this.triggers.get(triggerId);\n\n if (!trigger) {\n throw new Error(`No dialog trigger registered with id \"${triggerId}\".`);\n }\n\n this.rootContext()?.toggle(triggerId, trigger.element, trigger.payload(), event);\n }\n\n registerRoot(rootContext: RdxDialogRootContext) {\n this.rootContext.set(rootContext);\n this.triggers.forEach((trigger, id) => {\n this.rootTriggerCleanups.set(id, rootContext.registerTrigger(id, trigger.element, trigger.payload));\n });\n\n return () => {\n if (this.rootContext() === rootContext) {\n this.rootTriggerCleanups.forEach((cleanup) => cleanup());\n this.rootTriggerCleanups.clear();\n this.rootContext.set(undefined);\n }\n };\n }\n\n registerTrigger(id: string, trigger: HTMLElement, payload: () => Payload | undefined) {\n this.rootTriggerCleanups.get(id)?.();\n this.triggers.set(id, { element: trigger, payload });\n const unregisterFromRoot = this.rootContext()?.registerTrigger(id, trigger, payload);\n\n if (unregisterFromRoot) {\n this.rootTriggerCleanups.set(id, unregisterFromRoot);\n }\n\n return () => {\n this.rootTriggerCleanups.get(id)?.();\n this.rootTriggerCleanups.delete(id);\n\n if (this.triggers.get(id)?.element === trigger) {\n this.triggers.delete(id);\n }\n };\n }\n\n context() {\n return this.rootContext();\n }\n}\n\nexport function createRdxDialogHandle<Payload = unknown>() {\n return new RdxDialogHandle<Payload>();\n}\n","import { NgModule } from '@angular/core';\nimport { RdxDialogBackdrop } from './src/dialog-backdrop';\nimport { RdxDialogClose } from './src/dialog-close';\nimport { RdxDialogDescription } from './src/dialog-description';\nimport { RdxDialogPopup } from './src/dialog-popup';\nimport { RdxDialogPortal } from './src/dialog-portal';\nimport { RdxDialogPortalPresence } from './src/dialog-portal-presence';\nimport { RdxDialogRoot } from './src/dialog-root';\nimport { RdxDialogTitle } from './src/dialog-title';\nimport { RdxDialogTrigger } from './src/dialog-trigger';\nimport { RdxDialogViewport } from './src/dialog-viewport';\n\nexport * from './src/dialog-backdrop';\nexport * from './src/dialog-close';\nexport * from './src/dialog-description';\nexport * from './src/dialog-handle';\nexport * from './src/dialog-popup';\nexport * from './src/dialog-portal';\nexport * from './src/dialog-portal-presence';\nexport * from './src/dialog-root';\nexport * from './src/dialog-title';\nexport * from './src/dialog-trigger';\nexport * from './src/dialog-variant';\nexport * from './src/dialog-viewport';\n\nexport const dialogImports = [\n RdxDialogRoot,\n RdxDialogTrigger,\n RdxDialogPortalPresence,\n RdxDialogPortal,\n RdxDialogBackdrop,\n RdxDialogViewport,\n RdxDialogPopup,\n RdxDialogTitle,\n RdxDialogDescription,\n RdxDialogClose\n];\n\n@NgModule({\n imports: [...dialogImports],\n exports: [...dialogImports]\n})\nexport class RdxDialogModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"radix-ng-primitives-dialog.mjs","sources":["../../../packages/primitives/dialog/src/dialog-variant.ts","../../../packages/primitives/dialog/src/dialog-root.ts","../../../packages/primitives/dialog/src/dialog-backdrop.ts","../../../packages/primitives/dialog/src/dialog-close.ts","../../../packages/primitives/dialog/src/dialog-description.ts","../../../packages/primitives/dialog/src/dialog-popup.ts","../../../packages/primitives/dialog/src/dialog-portal.ts","../../../packages/primitives/dialog/src/dialog-title.ts","../../../packages/primitives/dialog/src/dialog-trigger.ts","../../../packages/primitives/dialog/src/dialog-viewport.ts","../../../packages/primitives/dialog/src/dialog-handle.ts","../../../packages/primitives/dialog/index.ts","../../../packages/primitives/dialog/radix-ng-primitives-dialog.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core';\n\nexport type RdxDialogRole = 'dialog' | 'alertdialog';\n\n/**\n * Behavioral profile for a dialog, supplied by a composing root (e.g. alert-dialog, drawer) to\n * specialize the shared Dialog without new public dialog inputs.\n *\n * These are *force-only* overrides: a variant uses them to pin behavior regardless of the public\n * inputs (as alert-dialog does). A variant that wants a configurable default instead simply leaves\n * the flags off and lets the composing root proxy the `modal` / `disablePointerDismissal` inputs —\n * that is how Drawer stays modal-by-default while remaining user-overridable.\n *\n * The three concerns are kept independent on purpose so future variants can mix them freely\n * (e.g. a modal, non-dismissable drawer that is still `role=\"dialog\"`):\n * - `role` — ARIA role rendered on the popup.\n * - `forceModal` — pin modality to `true` regardless of the `modal` input.\n * - `forcePointerDismissalDisabled` — disable outside-press / focus-out dismissal (Escape still closes).\n */\nexport interface RdxDialogVariant {\n role: RdxDialogRole;\n forceModal: boolean;\n forcePointerDismissalDisabled: boolean;\n}\n\nconst DEFAULT_VARIANT: RdxDialogVariant = {\n role: 'dialog',\n forceModal: false,\n forcePointerDismissalDisabled: false\n};\n\nexport const RDX_DIALOG_VARIANT = new InjectionToken<RdxDialogVariant>('RdxDialogVariant', {\n factory: () => DEFAULT_VARIANT\n});\n\nexport function provideRdxDialogVariant(variant: Partial<RdxDialogVariant>): Provider {\n return { provide: RDX_DIALOG_VARIANT, useValue: { ...DEFAULT_VARIANT, ...variant } };\n}\n","import {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n inject,\n input,\n model,\n output,\n Signal,\n signal,\n untracked\n} from '@angular/core';\nimport {\n BooleanInput,\n createContext,\n injectId,\n RdxTransitionStatus,\n useTransitionStatus\n} from '@radix-ng/primitives/core';\nimport { RdxDialogHandle } from './dialog-handle';\nimport { RDX_DIALOG_VARIANT, RdxDialogRole } from './dialog-variant';\n\nexport type RdxDialogModal = boolean | 'trap-focus';\n\nexport type RdxDialogOpenChangeReason =\n | 'trigger-press'\n | 'close-press'\n | 'outside-press'\n | 'focus-out'\n | 'escape-key'\n | 'swipe'\n | 'imperative-action'\n | 'none';\n\nexport interface RdxDialogOpenChange {\n open: boolean;\n triggerId: string | null;\n trigger: HTMLElement | undefined;\n reason: RdxDialogOpenChangeReason;\n event: Event;\n}\n\ninterface RdxDialogRegisteredTrigger {\n element: HTMLElement;\n payload: () => unknown;\n}\n\nconst transformModal = (value: BooleanInput | 'trap-focus'): RdxDialogModal =>\n value === 'trap-focus' ? value : booleanAttribute(value);\n\nconst context = () => contextFor(inject(RdxDialogRoot));\n\nexport interface RdxDialogRootContext {\n contentId: string;\n titleId: Signal<string | undefined>;\n descriptionId: Signal<string | undefined>;\n isOpen: Signal<boolean>;\n /** Effective modality (the variant can pin this to `true`). */\n modal: Signal<RdxDialogModal>;\n /** Effective outside-press / focus-out dismissal flag (the variant can force it on). */\n disablePointerDismissal: Signal<boolean>;\n /** ARIA role for the popup; constant, fixed by the variant at construction. */\n role: RdxDialogRole;\n transitionStatus: Signal<RdxTransitionStatus>;\n trigger: Signal<HTMLElement | undefined>;\n triggers: Signal<HTMLElement[]>;\n payload: Signal<unknown>;\n /** Whether this dialog is nested in another; constant, fixed at construction. */\n nested: boolean;\n nestedDialogOpen: Signal<boolean>;\n setTitleId: (id: string | undefined) => void;\n setDescriptionId: (id: string | undefined) => void;\n registerTransitionElement: (element: HTMLElement) => () => void;\n registerTrigger: (id: string, trigger: HTMLElement, payload: () => unknown) => () => void;\n open: (\n trigger?: HTMLElement,\n payload?: unknown,\n triggerId?: string,\n reason?: RdxDialogOpenChangeReason,\n event?: Event\n ) => void;\n close: (reason?: RdxDialogOpenChangeReason, event?: Event) => void;\n toggle: (triggerId: string, trigger: HTMLElement, payload?: unknown, event?: Event) => void;\n}\n\nexport const [injectRdxDialogRootContext, provideRdxDialogRootContext] = createContext<RdxDialogRootContext>(\n 'RdxDialogRootContext',\n 'components/dialog'\n);\n\n/**\n * Groups all parts of the dialog.\n */\n@Directive({\n selector: '[rdxDialogRoot]',\n exportAs: 'rdxDialogRoot',\n providers: [provideRdxDialogRootContext(context)]\n})\nexport class RdxDialogRoot {\n private readonly destroyRef = inject(DestroyRef);\n private readonly parentRoot = inject(RdxDialogRoot, { optional: true, skipSelf: true });\n private readonly variant = inject(RDX_DIALOG_VARIANT);\n private hasAppliedDefaultOpen = false;\n private hasAppliedDefaultTriggerId = false;\n private readonly registeredTriggers = new Map<string, RdxDialogRegisteredTrigger>();\n\n private readonly transition = useTransitionStatus((open) => this.emitOpenChangeComplete(open));\n readonly transitionStatus = this.transition.status;\n readonly registerTransitionElement = this.transition.registerElement;\n\n /**\n * Whether the dialog is currently open.\n */\n readonly open = model(false);\n\n /**\n * Whether the dialog is initially open.\n */\n readonly defaultOpen = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * ID of the trigger associated with a controlled dialog.\n */\n readonly triggerId = model<string | null>(null);\n\n /**\n * ID of the trigger associated with an initially open uncontrolled dialog.\n */\n readonly defaultTriggerId = input<string | null>(null);\n\n /**\n * Determines if the dialog enters a modal state when open.\n * - `true`: focus is trapped, page scroll is locked, outside pointer events are disabled.\n * - `false`: interaction with the rest of the document is allowed.\n * - `'trap-focus'`: focus is trapped, but scroll is not locked and outside pointer events remain enabled.\n */\n readonly modal = input<RdxDialogModal, BooleanInput | 'trap-focus'>(true, { transform: transformModal });\n\n /**\n * Determines whether the dialog should close on outside clicks.\n */\n readonly disablePointerDismissal = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Associates this root with detached trigger elements rendered outside of it.\n */\n readonly handle = input<RdxDialogHandle<any>>();\n\n /**\n * Event handler called when the dialog is opened or closed.\n */\n readonly onOpenChange = output<RdxDialogOpenChange>();\n\n /**\n * Event handler called after any animations complete when the dialog is opened or closed.\n */\n readonly onOpenChangeComplete = output<boolean>();\n\n readonly contentId = injectId('rdx-dialog-content-');\n readonly titleId = signal<string | undefined>(undefined);\n readonly descriptionId = signal<string | undefined>(undefined);\n readonly trigger = signal<HTMLElement | undefined>(undefined);\n readonly triggers = signal<HTMLElement[]>([]);\n readonly payload = signal<unknown>(undefined);\n readonly nestedOpenCount = signal(0);\n\n /** Whether this dialog is rendered inside another dialog. Fixed at construction. */\n readonly nested = !!this.parentRoot;\n readonly nestedDialogOpen = computed(() => this.nestedOpenCount() > 0);\n\n /** ARIA role, fixed at construction by the dialog variant (`alertdialog` for alert dialogs). */\n readonly role = this.variant.role;\n\n /** Effective modality: the variant can pin it to `true` regardless of the `modal` input. */\n readonly effectiveModal = computed<RdxDialogModal>(() => (this.variant.forceModal ? true : this.modal()));\n /** Effective dismissal flag: disabled when the input asks, or when the variant forces it (alerts). */\n readonly effectiveDisablePointerDismissal = computed(\n () => this.disablePointerDismissal() || this.variant.forcePointerDismissalDisabled\n );\n\n constructor() {\n let previousOpen = this.open();\n\n effect(() => {\n const defaultOpen = this.defaultOpen();\n\n if (!this.hasAppliedDefaultOpen && defaultOpen) {\n this.hasAppliedDefaultOpen = true;\n this.open.set(defaultOpen);\n }\n });\n\n effect(() => {\n const defaultTriggerId = this.defaultTriggerId();\n\n if (!this.hasAppliedDefaultTriggerId && defaultTriggerId !== null) {\n this.hasAppliedDefaultTriggerId = true;\n this.triggerId.set(defaultTriggerId);\n }\n });\n\n effect(() => {\n const triggerId = this.triggerId();\n untracked(() => this.syncTriggerId(triggerId));\n });\n\n effect(() => {\n const open = this.open();\n\n if (open !== previousOpen) {\n previousOpen = open;\n untracked(() => this.transition.start(open));\n }\n });\n\n // Report nested open state to the parent dialog so it can apply data-nested-dialog-open.\n effect((onCleanup) => {\n const open = this.open();\n\n if (open && this.parentRoot) {\n onCleanup(untracked(() => this.parentRoot!.openNestedChild()));\n }\n });\n\n effect((onCleanup) => {\n const handle = this.handle();\n\n if (handle) {\n onCleanup(untracked(() => handle.registerRoot(contextFor(this))));\n }\n });\n }\n\n show(\n trigger = this.trigger(),\n payload?: unknown,\n triggerId?: string,\n reason: RdxDialogOpenChangeReason = 'none',\n event = new Event('dialog.open-change')\n ) {\n if (trigger) {\n this.trigger.set(trigger);\n }\n\n if (triggerId !== undefined) {\n this.triggerId.set(triggerId);\n }\n\n // Only adopt the payload when a trigger context is actually provided, so a bare\n // imperative re-show on an already-open dialog doesn't clobber the live payload.\n if (trigger !== undefined || payload !== undefined) {\n this.payload.set(payload);\n }\n\n if (this.open()) {\n return;\n }\n\n this.open.set(true);\n this.emitOpenChange(true, reason, event);\n }\n\n close(reason: RdxDialogOpenChangeReason = 'none', event = new Event('dialog.open-change')) {\n if (!this.open()) {\n return;\n }\n\n this.open.set(false);\n this.emitOpenChange(false, reason, event);\n }\n\n toggle(triggerId: string, trigger: HTMLElement, payload?: unknown, event = new Event('dialog.open-change')) {\n if (this.open() && this.trigger() === trigger) {\n this.close('trigger-press', event);\n return;\n }\n\n this.show(trigger, payload, triggerId, 'trigger-press', event);\n }\n\n registerTrigger(id: string, trigger: HTMLElement, payload: () => unknown) {\n this.registeredTriggers.set(id, { element: trigger, payload });\n this.triggers.update((triggers) => (triggers.includes(trigger) ? triggers : [...triggers, trigger]));\n\n if (this.triggerId() === id || (!this.trigger() && this.triggerId() === null)) {\n this.trigger.set(trigger);\n this.payload.set(payload());\n }\n\n return () => {\n if (this.registeredTriggers.get(id)?.element === trigger) {\n this.registeredTriggers.delete(id);\n }\n\n this.triggers.update((triggers) => triggers.filter((candidate) => candidate !== trigger));\n\n if (!this.destroyRef.destroyed && this.trigger() === trigger) {\n const next = this.registeredTriggers.entries().next().value;\n\n if (this.triggerId() !== null) {\n this.triggerId.set(next?.[0] ?? null);\n }\n\n this.trigger.set(next?.[1].element);\n this.payload.set(next?.[1].payload());\n\n // Intentionally do NOT close when the last trigger unregisters (unlike popover):\n // a controlled / imperatively-opened dialog must survive its trigger unmounting.\n }\n };\n }\n\n /** Increments the nested-open counter and returns a release callback that decrements it. */\n openNestedChild() {\n this.nestedOpenCount.update((count) => count + 1);\n return () => this.nestedOpenCount.update((count) => count - 1);\n }\n\n private syncTriggerId(triggerId: string | null) {\n if (triggerId === null) {\n // Controlled triggerId cleared: drop the active trigger so stale state doesn't linger.\n this.trigger.set(undefined);\n this.payload.set(undefined);\n return;\n }\n\n const trigger = this.registeredTriggers.get(triggerId);\n\n if (trigger && trigger.element !== this.trigger()) {\n this.trigger.set(trigger.element);\n this.payload.set(trigger.payload());\n }\n }\n\n private emitOpenChange(open: boolean, reason: RdxDialogOpenChangeReason, event: Event) {\n this.onOpenChange.emit({\n open,\n triggerId: this.triggerId(),\n trigger: this.trigger(),\n reason,\n event\n });\n }\n\n private emitOpenChangeComplete(open: boolean) {\n if (!this.destroyRef.destroyed) {\n this.onOpenChangeComplete.emit(open);\n }\n }\n}\n\nfunction contextFor(root: RdxDialogRoot): RdxDialogRootContext {\n return {\n contentId: root.contentId,\n titleId: root.titleId.asReadonly(),\n descriptionId: root.descriptionId.asReadonly(),\n isOpen: root.open,\n modal: root.effectiveModal,\n disablePointerDismissal: root.effectiveDisablePointerDismissal,\n role: root.role,\n transitionStatus: root.transitionStatus,\n trigger: root.trigger.asReadonly(),\n triggers: root.triggers.asReadonly(),\n payload: root.payload.asReadonly(),\n nested: root.nested,\n nestedDialogOpen: root.nestedDialogOpen,\n setTitleId: (id: string | undefined) => root.titleId.set(id),\n setDescriptionId: (id: string | undefined) => root.descriptionId.set(id),\n registerTransitionElement: (element) => root.registerTransitionElement(element),\n registerTrigger: (id, trigger, payload) => root.registerTrigger(id, trigger, payload),\n open: (trigger, payload, triggerId, reason, event) => root.show(trigger, payload, triggerId, reason, event),\n close: (reason, event) => root.close(reason, event),\n toggle: (triggerId, trigger, payload, event) => root.toggle(triggerId, trigger, payload, event)\n };\n}\n","import { Directive } from '@angular/core';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * An overlay displayed beneath the dialog popup.\n */\n@Directive({\n selector: '[rdxDialogBackdrop]',\n exportAs: 'rdxDialogBackdrop',\n host: {\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-ending-style]': 'rootContext.transitionStatus() === \"ending\" ? \"\" : undefined',\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-starting-style]': 'rootContext.transitionStatus() === \"starting\" ? \"\" : undefined',\n '[attr.data-state]': 'rootContext.isOpen() ? \"open\" : \"closed\"',\n '[attr.data-nested]': 'rootContext.nested ? \"\" : undefined',\n '[attr.data-nested-dialog-open]': 'rootContext.nestedDialogOpen() ? \"\" : undefined'\n }\n})\nexport class RdxDialogBackdrop {\n protected readonly rootContext = injectRdxDialogRootContext();\n}\n","import { Directive } from '@angular/core';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * A button that closes the dialog.\n */\n@Directive({\n selector: 'button[rdxDialogClose]',\n exportAs: 'rdxDialogClose',\n host: {\n type: 'button',\n '(click)': 'rootContext.close(\"close-press\", $event)'\n }\n})\nexport class RdxDialogClose {\n protected readonly rootContext = injectRdxDialogRootContext();\n}\n","import { DestroyRef, Directive, inject } from '@angular/core';\nimport { injectId } from '@radix-ng/primitives/core';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * An accessible description for the dialog.\n */\n@Directive({\n selector: '[rdxDialogDescription]',\n exportAs: 'rdxDialogDescription',\n host: {\n '[id]': 'id'\n }\n})\nexport class RdxDialogDescription {\n private readonly rootContext = injectRdxDialogRootContext();\n readonly id = injectId('rdx-dialog-description-');\n\n constructor() {\n this.rootContext.setDescriptionId(this.id);\n inject(DestroyRef).onDestroy(() => this.rootContext.setDescriptionId(undefined));\n }\n}\n","import { computed, DestroyRef, Directive, ElementRef, inject } from '@angular/core';\nimport { outputFromObservable, outputToObservable } from '@angular/core/rxjs-interop';\nimport { useScrollLock } from '@radix-ng/primitives/core';\nimport { provideRdxDismissableLayerConfig, RdxDismissableLayer } from '@radix-ng/primitives/dismissable-layer';\nimport { provideRdxFocusScopeConfig, RdxFocusScope } from '@radix-ng/primitives/focus-scope';\nimport { injectRdxDialogRootContext, RdxDialogOpenChangeReason } from './dialog-root';\n\n/**\n * A container for the dialog contents.\n */\n@Directive({\n selector: '[rdxDialogPopup]',\n exportAs: 'rdxDialogPopup',\n hostDirectives: [RdxDismissableLayer, RdxFocusScope],\n providers: [\n provideRdxDismissableLayerConfig(() => {\n const rootContext = injectRdxDialogRootContext();\n\n return {\n disableOutsidePointerEvents: computed(() => rootContext.modal() === true)\n };\n }),\n provideRdxFocusScopeConfig(() => {\n const rootContext = injectRdxDialogRootContext();\n\n return {\n trapped: computed(() => rootContext.modal() === 'trap-focus' || rootContext.modal() === true)\n };\n })\n ],\n host: {\n '[attr.role]': 'rootContext.role',\n '[attr.aria-modal]': 'rootContext.modal() === true ? \"true\" : undefined',\n '[attr.aria-describedby]': 'rootContext.descriptionId()',\n '[attr.aria-labelledby]': 'rootContext.titleId()',\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-ending-style]': 'rootContext.transitionStatus() === \"ending\" ? \"\" : undefined',\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-starting-style]': 'rootContext.transitionStatus() === \"starting\" ? \"\" : undefined',\n '[attr.data-state]': 'rootContext.isOpen() ? \"open\" : \"closed\"',\n '[attr.data-nested]': 'rootContext.nested ? \"\" : undefined',\n '[attr.data-nested-dialog-open]': 'rootContext.nestedDialogOpen() ? \"\" : undefined',\n '[id]': 'rootContext.contentId'\n }\n})\nexport class RdxDialogPopup {\n protected readonly rootContext = injectRdxDialogRootContext();\n private readonly dismissableLayer = inject(RdxDismissableLayer);\n private readonly focusScope = inject(RdxFocusScope);\n private dismissDetails: { reason: RdxDialogOpenChangeReason; event: Event } = {\n reason: 'none',\n event: new Event('dialog.dismiss')\n };\n\n /**\n * Event handler called when the escape key is down. Can be prevented.\n */\n readonly escapeKeyDown = outputFromObservable(outputToObservable(this.dismissableLayer.escapeKeyDown));\n\n /**\n * Event handler called when a pointerdown event happens outside of the popup. Can be prevented.\n */\n readonly pointerDownOutside = outputFromObservable(outputToObservable(this.dismissableLayer.pointerDownOutside));\n\n /**\n * Event handler called when focus moves outside of the popup. Can be prevented.\n */\n readonly focusOutside = outputFromObservable(outputToObservable(this.dismissableLayer.focusOutside));\n\n /**\n * Event handler called when an interaction happens outside of the popup. Can be prevented.\n */\n readonly interactOutside = outputFromObservable(outputToObservable(this.dismissableLayer.interactOutside));\n\n /**\n * Event handler called before focus moves into the popup. Can be prevented.\n */\n readonly openAutoFocus = outputFromObservable(outputToObservable(this.focusScope.mountAutoFocus));\n\n /**\n * Event handler called before focus returns after the popup is removed. Can be prevented.\n */\n readonly closeAutoFocus = outputFromObservable(outputToObservable(this.focusScope.unmountAutoFocus));\n\n constructor() {\n // Lock for the popup's whole mounted lifetime, not just while `isOpen()`. The popup is kept\n // mounted by the portal-presence machine until the exit `@keyframes` finish, then destroyed\n // (firing `useScrollLock`'s `onDestroy` unlock). Gating on `isOpen()` would restore the page\n // scrollbar the instant the dialog starts closing, reflowing the page by the scrollbar width\n // mid-animation — a visible judder. Holding the lock until unmount defers that to after the\n // animation, when the dialog is already gone.\n useScrollLock(computed(() => this.rootContext.modal() === true));\n\n const unregisterTransitionElement = this.rootContext.registerTransitionElement(\n inject<ElementRef<HTMLElement>>(ElementRef).nativeElement\n );\n\n inject(DestroyRef).onDestroy(unregisterTransitionElement);\n\n this.dismissableLayer.pointerDownOutside.subscribe((event) => {\n this.dismissDetails = { reason: 'outside-press', event };\n\n // A pointerdown on the trigger is an \"outside\" press relative to the portaled popup.\n // Let the trigger's own click toggle the dialog instead of dismissing here (which would\n // close and then immediately reopen).\n if (this.isEventOnTrigger(event)) {\n event.preventDefault();\n }\n });\n\n this.dismissableLayer.focusOutside.subscribe((event) => {\n this.dismissDetails = { reason: 'focus-out', event };\n\n if (this.isEventOnTrigger(event)) {\n event.preventDefault();\n }\n });\n\n this.dismissableLayer.escapeKeyDown.subscribe((event) => {\n this.dismissDetails = { reason: 'escape-key', event };\n });\n\n this.dismissableLayer.dismiss.subscribe(() => {\n const { reason, event } = this.dismissDetails;\n this.dismissDetails = { reason: 'none', event: new Event('dialog.dismiss') };\n\n // When pointer dismissal is disabled, keep the dialog open on outside interactions.\n // Escape always closes (standard a11y behavior).\n if ((reason === 'outside-press' || reason === 'focus-out') && this.rootContext.disablePointerDismissal()) {\n return;\n }\n\n this.rootContext.close(reason, event);\n });\n }\n\n private isEventOnTrigger(event: Event): boolean {\n const target = event.target as Node | null;\n return !!target && this.rootContext.triggers().some((trigger) => trigger.contains(target));\n }\n}\n","import { Directive, input, isDevMode } from '@angular/core';\nimport { RdxPortalContainer, RdxPortalPresence } from '@radix-ng/primitives/portal';\nimport { provideRdxPresenceContext } from '@radix-ng/primitives/presence';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * Structural directive that teleports the dialog content (backdrop + popup) into a container (default\n * `document.body`) while the dialog is open, and keeps it mounted until the CSS exit `@keyframes` on\n * every root element finish.\n *\n * Dialog has two root nodes (backdrop + popup), so use the explicit `<ng-template rdxDialogPortal>`\n * form. Pass `[container]` to portal into a different element.\n */\n@Directive({\n selector: 'ng-template[rdxDialogPortal]',\n exportAs: 'rdxDialogPortal',\n hostDirectives: [{ directive: RdxPortalPresence, inputs: ['container'] }],\n providers: [provideRdxPresenceContext(() => ({ present: injectRdxDialogRootContext().isOpen }))]\n})\nexport class RdxDialogPortal {\n /**\n * Optional container to portal the content into. Defaults to `document.body`. Declared here (and\n * forwarded to the composed {@link RdxPortalPresence}) so that the drawer and alert-dialog portals\n * can re-expose it through their own `hostDirectives`.\n */\n readonly container = input<RdxPortalContainer>();\n}\n\n/**\n * Dev-mode guard: `rdxDialogPortal` used to be an attribute directive on a `<div>`. It is now\n * structural, so the old `<div rdxDialogPortal>` markup would silently stop portaling — fail loudly\n * instead.\n */\n@Directive({\n selector: '[rdxDialogPortal]:not(ng-template)'\n})\nexport class RdxDialogPortalMisuseGuard {\n constructor() {\n if (isDevMode()) {\n throw new Error(\n '[rdxDialogPortal] is now a structural directive. ' +\n 'Use `<ng-template rdxDialogPortal>` around the backdrop and popup. ' +\n 'rdxDialogPortalPresence has been removed. See https://radix-ng.com/components/dialog.md'\n );\n }\n }\n}\n","import { DestroyRef, Directive, inject } from '@angular/core';\nimport { injectId } from '@radix-ng/primitives/core';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * An accessible title for the dialog.\n */\n@Directive({\n selector: '[rdxDialogTitle]',\n exportAs: 'rdxDialogTitle',\n host: {\n '[id]': 'id'\n }\n})\nexport class RdxDialogTitle {\n private readonly rootContext = injectRdxDialogRootContext();\n readonly id = injectId('rdx-dialog-title-');\n\n constructor() {\n this.rootContext.setTitleId(this.id);\n inject(DestroyRef).onDestroy(() => this.rootContext.setTitleId(undefined));\n }\n}\n","import { booleanAttribute, computed, Directive, effect, ElementRef, inject, input, untracked } from '@angular/core';\nimport { injectId } from '@radix-ng/primitives/core';\nimport { RdxDialogHandle } from './dialog-handle';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * A button that opens the dialog.\n */\n@Directive({\n selector: 'button[rdxDialogTrigger]',\n exportAs: 'rdxDialogTrigger',\n host: {\n type: 'button',\n '[attr.aria-haspopup]': '\"dialog\"',\n '[attr.aria-controls]': 'rootContext()?.contentId',\n '[attr.aria-expanded]': 'isOpen()',\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\n '[attr.data-popup-open]': 'isOpen() ? \"\" : undefined',\n '[attr.disabled]': 'disabled() ? \"\" : undefined',\n '[id]': 'triggerId()',\n '(click)': 'handleClick($event)'\n }\n})\nexport class RdxDialogTrigger {\n private readonly parentRootContext = injectRdxDialogRootContext(true);\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Associates this trigger with a detached dialog root.\n */\n readonly handle = input<RdxDialogHandle<any>>();\n\n /**\n * Data associated with this trigger while it is active.\n */\n readonly payload = input<unknown>();\n\n /**\n * ID used to identify this trigger when opening a detached or controlled dialog.\n */\n readonly id = input<string>();\n\n /**\n * Whether the trigger should ignore user interaction.\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n private readonly generatedId = injectId('rdx-dialog-trigger-');\n protected readonly triggerId = computed(() => this.id() ?? this.generatedId);\n protected readonly rootContext = computed(() => this.handle()?.context() ?? this.parentRootContext);\n protected readonly isOpen = computed(\n () => this.rootContext()?.isOpen() === true && this.rootContext()?.trigger() === this.elementRef.nativeElement\n );\n\n constructor() {\n effect((onCleanup) => {\n const handle = this.handle();\n\n if (handle) {\n onCleanup(\n untracked(() =>\n handle.registerTrigger(this.triggerId(), this.elementRef.nativeElement, () => this.payload())\n )\n );\n } else if (this.parentRootContext) {\n onCleanup(\n untracked(() =>\n this.parentRootContext!.registerTrigger(this.triggerId(), this.elementRef.nativeElement, () =>\n this.payload()\n )\n )\n );\n }\n });\n }\n\n protected handleClick(event: MouseEvent) {\n if (this.disabled()) {\n return;\n }\n\n if (this.handle()) {\n this.handle()!.toggle(this.triggerId(), event);\n } else {\n this.parentRootContext?.toggle(this.triggerId(), this.elementRef.nativeElement, this.payload(), event);\n }\n }\n}\n","import { Directive } from '@angular/core';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * A positioning container for the dialog popup that can be made scrollable.\n *\n * Place it inside the portal, around the popup, to scroll the popup when it is taller than the\n * viewport (outside scroll). Pointer events pass through while the dialog is closed.\n */\n@Directive({\n selector: '[rdxDialogViewport]',\n exportAs: 'rdxDialogViewport',\n host: {\n role: 'presentation',\n '[style.pointer-events]': 'rootContext.isOpen() ? null : \"none\"',\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-ending-style]': 'rootContext.transitionStatus() === \"ending\" ? \"\" : undefined',\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-starting-style]': 'rootContext.transitionStatus() === \"starting\" ? \"\" : undefined',\n '[attr.data-state]': 'rootContext.isOpen() ? \"open\" : \"closed\"',\n '[attr.data-nested]': 'rootContext.nested ? \"\" : undefined',\n '[attr.data-nested-dialog-open]': 'rootContext.nestedDialogOpen() ? \"\" : undefined'\n }\n})\nexport class RdxDialogViewport {\n protected readonly rootContext = injectRdxDialogRootContext();\n}\n","import { computed, signal } from '@angular/core';\nimport type { RdxDialogRootContext } from './dialog-root';\n\ninterface RdxDialogHandleTrigger<Payload> {\n element: HTMLElement;\n payload: () => Payload | undefined;\n}\n\n/**\n * Connects a dialog root with trigger elements rendered elsewhere in the DOM, and exposes\n * imperative `open`/`close`/`toggle` methods.\n */\nexport class RdxDialogHandle<Payload = unknown> {\n private readonly rootContext = signal<RdxDialogRootContext | undefined>(undefined);\n private readonly triggers = new Map<string, RdxDialogHandleTrigger<Payload>>();\n private readonly rootTriggerCleanups = new Map<string, () => void>();\n\n readonly isOpen = computed(() => this.rootContext()?.isOpen() ?? false);\n\n open(triggerId: string) {\n const trigger = this.triggers.get(triggerId);\n\n if (!trigger) {\n throw new Error(`No dialog trigger registered with id \"${triggerId}\".`);\n }\n\n this.rootContext()?.open(\n trigger.element,\n trigger.payload(),\n triggerId,\n 'imperative-action',\n new Event('dialog.open')\n );\n }\n\n close() {\n this.rootContext()?.close('imperative-action', new Event('dialog.close'));\n }\n\n toggle(triggerId: string, event = new Event('dialog.toggle')) {\n const trigger = this.triggers.get(triggerId);\n\n if (!trigger) {\n throw new Error(`No dialog trigger registered with id \"${triggerId}\".`);\n }\n\n this.rootContext()?.toggle(triggerId, trigger.element, trigger.payload(), event);\n }\n\n registerRoot(rootContext: RdxDialogRootContext) {\n this.rootContext.set(rootContext);\n this.triggers.forEach((trigger, id) => {\n this.rootTriggerCleanups.set(id, rootContext.registerTrigger(id, trigger.element, trigger.payload));\n });\n\n return () => {\n if (this.rootContext() === rootContext) {\n this.rootTriggerCleanups.forEach((cleanup) => cleanup());\n this.rootTriggerCleanups.clear();\n this.rootContext.set(undefined);\n }\n };\n }\n\n registerTrigger(id: string, trigger: HTMLElement, payload: () => Payload | undefined) {\n this.rootTriggerCleanups.get(id)?.();\n this.triggers.set(id, { element: trigger, payload });\n const unregisterFromRoot = this.rootContext()?.registerTrigger(id, trigger, payload);\n\n if (unregisterFromRoot) {\n this.rootTriggerCleanups.set(id, unregisterFromRoot);\n }\n\n return () => {\n this.rootTriggerCleanups.get(id)?.();\n this.rootTriggerCleanups.delete(id);\n\n if (this.triggers.get(id)?.element === trigger) {\n this.triggers.delete(id);\n }\n };\n }\n\n context() {\n return this.rootContext();\n }\n}\n\nexport function createRdxDialogHandle<Payload = unknown>() {\n return new RdxDialogHandle<Payload>();\n}\n","import { NgModule } from '@angular/core';\nimport { RdxDialogBackdrop } from './src/dialog-backdrop';\nimport { RdxDialogClose } from './src/dialog-close';\nimport { RdxDialogDescription } from './src/dialog-description';\nimport { RdxDialogPopup } from './src/dialog-popup';\nimport { RdxDialogPortal, RdxDialogPortalMisuseGuard } from './src/dialog-portal';\nimport { RdxDialogRoot } from './src/dialog-root';\nimport { RdxDialogTitle } from './src/dialog-title';\nimport { RdxDialogTrigger } from './src/dialog-trigger';\nimport { RdxDialogViewport } from './src/dialog-viewport';\n\nexport * from './src/dialog-backdrop';\nexport * from './src/dialog-close';\nexport * from './src/dialog-description';\nexport * from './src/dialog-handle';\nexport * from './src/dialog-popup';\nexport * from './src/dialog-portal';\nexport * from './src/dialog-root';\nexport * from './src/dialog-title';\nexport * from './src/dialog-trigger';\nexport * from './src/dialog-variant';\nexport * from './src/dialog-viewport';\n\nexport const dialogImports = [\n RdxDialogRoot,\n RdxDialogTrigger,\n RdxDialogPortal,\n RdxDialogPortalMisuseGuard,\n RdxDialogBackdrop,\n RdxDialogViewport,\n RdxDialogPopup,\n RdxDialogTitle,\n RdxDialogDescription,\n RdxDialogClose\n];\n\n@NgModule({\n imports: [...dialogImports],\n exports: [...dialogImports]\n})\nexport class RdxDialogModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|