@radix-ng/primitives 1.0.0-beta.4 → 1.0.1
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/composite/README.md +3 -0
- package/fesm2022/radix-ng-primitives-accordion.mjs +12 -36
- package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-checkbox.mjs +33 -18
- package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-composite.mjs +515 -0
- package/fesm2022/radix-ng-primitives-composite.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-core.mjs +7 -0
- package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-dialog.mjs +54 -12
- package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-drawer.mjs +442 -2
- package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-editable.mjs +12 -7
- package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs +294 -8
- package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-focus-scope.mjs +9 -0
- package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menu.mjs +71 -20
- package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menubar.mjs +68 -36
- package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs +281 -88
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-number-field.mjs +7 -2
- package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popover.mjs +117 -35
- package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popper.mjs +73 -65
- package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-radio.mjs +77 -36
- package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-roving-focus.mjs +40 -8
- package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-scroll-area.mjs +56 -25
- package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-select.mjs +62 -37
- package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-slider.mjs +259 -28
- package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-stepper.mjs +11 -7
- package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-switch.mjs +10 -5
- package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tabs.mjs +64 -30
- package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle-group.mjs +69 -19
- package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle.mjs +37 -13
- package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toolbar.mjs +50 -24
- package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tooltip.mjs +180 -35
- package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
- package/navigation-menu/README.md +5 -2
- package/package.json +5 -1
- package/types/radix-ng-primitives-accordion.d.ts +9 -13
- package/types/radix-ng-primitives-checkbox.d.ts +27 -15
- package/types/radix-ng-primitives-composite.d.ts +152 -0
- package/types/radix-ng-primitives-core.d.ts +2 -0
- package/types/radix-ng-primitives-dialog.d.ts +13 -2
- package/types/radix-ng-primitives-drawer.d.ts +40 -2
- package/types/radix-ng-primitives-editable.d.ts +11 -5
- package/types/radix-ng-primitives-floating-focus-manager.d.ts +113 -16
- package/types/radix-ng-primitives-menu.d.ts +13 -5
- package/types/radix-ng-primitives-menubar.d.ts +10 -5
- package/types/radix-ng-primitives-navigation-menu.d.ts +65 -33
- package/types/radix-ng-primitives-number-field.d.ts +8 -3
- package/types/radix-ng-primitives-popover.d.ts +26 -10
- package/types/radix-ng-primitives-popper.d.ts +1 -0
- package/types/radix-ng-primitives-radio.d.ts +22 -13
- package/types/radix-ng-primitives-roving-focus.d.ts +15 -1
- package/types/radix-ng-primitives-scroll-area.d.ts +4 -1
- package/types/radix-ng-primitives-select.d.ts +16 -20
- package/types/radix-ng-primitives-slider.d.ts +60 -9
- package/types/radix-ng-primitives-stepper.d.ts +11 -4
- package/types/radix-ng-primitives-switch.d.ts +10 -4
- package/types/radix-ng-primitives-tabs.d.ts +20 -11
- package/types/radix-ng-primitives-toggle-group.d.ts +34 -17
- package/types/radix-ng-primitives-toggle.d.ts +14 -7
- package/types/radix-ng-primitives-toolbar.d.ts +22 -14
- package/types/radix-ng-primitives-tooltip.d.ts +38 -14
|
@@ -2,10 +2,10 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { InjectionToken, booleanAttribute, inject, DestroyRef, model, input, output, signal, computed, ElementRef, effect, untracked, Directive, Injector, afterNextRender, isDevMode, NgModule } from '@angular/core';
|
|
3
3
|
import * as i1 from '@radix-ng/primitives/core';
|
|
4
4
|
import { createContext, useTransitionStatus, injectId, createFloatingRootContext, createCancelableChangeEventDetails, provideFloatingTree, provideFloatingRootContext, RDX_FLOATING_ROOT_CONTEXT, RDX_FLOATING_REGISTRATION, useScrollLock, setupInternalBackdrop, RdxFloatingNodeRegistration, rdxDevError } from '@radix-ng/primitives/core';
|
|
5
|
+
import * as i2 from '@radix-ng/primitives/floating-focus-manager';
|
|
6
|
+
import { getInteractionTypeFromEvent, RdxFloatingFocusManager, provideFloatingFocusManagerConfig, createRdxTriggerInteraction, useTriggerFocusGuardAnchor } from '@radix-ng/primitives/floating-focus-manager';
|
|
5
7
|
import { outputFromObservable, outputToObservable } from '@angular/core/rxjs-interop';
|
|
6
8
|
import { RdxDismiss } from '@radix-ng/primitives/dismissable-layer';
|
|
7
|
-
import * as i2 from '@radix-ng/primitives/floating-focus-manager';
|
|
8
|
-
import { RdxFloatingFocusManager, provideFloatingFocusManagerConfig } from '@radix-ng/primitives/floating-focus-manager';
|
|
9
9
|
import { RdxFocusScope } from '@radix-ng/primitives/focus-scope';
|
|
10
10
|
import * as i1$1 from '@radix-ng/primitives/portal';
|
|
11
11
|
import { RdxPortalPresence } from '@radix-ng/primitives/portal';
|
|
@@ -86,7 +86,10 @@ class RdxDialogRoot {
|
|
|
86
86
|
this.triggers = signal([], ...(ngDevMode ? [{ debugName: "triggers" }] : /* istanbul ignore next */ []));
|
|
87
87
|
this.payload = signal(undefined, ...(ngDevMode ? [{ debugName: "payload" }] : /* istanbul ignore next */ []));
|
|
88
88
|
this.nestedOpenCount = signal(0, ...(ngDevMode ? [{ debugName: "nestedOpenCount" }] : /* istanbul ignore next */ []));
|
|
89
|
+
this.openInteractionType = signal(null, ...(ngDevMode ? [{ debugName: "openInteractionType" }] : /* istanbul ignore next */ []));
|
|
90
|
+
this.closeInteractionType = signal(null, ...(ngDevMode ? [{ debugName: "closeInteractionType" }] : /* istanbul ignore next */ []));
|
|
89
91
|
this.preventUnmountOnClose = signal(false, ...(ngDevMode ? [{ debugName: "preventUnmountOnClose" }] : /* istanbul ignore next */ []));
|
|
92
|
+
this.pendingTriggerOpenInteractionType = signal(null, ...(ngDevMode ? [{ debugName: "pendingTriggerOpenInteractionType" }] : /* istanbul ignore next */ []));
|
|
90
93
|
this.present = computed(() => this.open() || this.preventUnmountOnClose(), ...(ngDevMode ? [{ debugName: "present" }] : /* istanbul ignore next */ []));
|
|
91
94
|
/** Whether this dialog is rendered inside another dialog. Fixed at construction. */
|
|
92
95
|
this.nested = !!this.parentRoot;
|
|
@@ -153,7 +156,7 @@ class RdxDialogRoot {
|
|
|
153
156
|
}
|
|
154
157
|
});
|
|
155
158
|
}
|
|
156
|
-
show(trigger = this.trigger(), payload, triggerId, reason = 'none', event
|
|
159
|
+
show(trigger = this.trigger(), payload, triggerId, reason = 'none', event) {
|
|
157
160
|
const shouldAdoptPayload = trigger !== undefined || payload !== undefined;
|
|
158
161
|
if (this.open()) {
|
|
159
162
|
if (trigger) {
|
|
@@ -169,11 +172,13 @@ class RdxDialogRoot {
|
|
|
169
172
|
}
|
|
170
173
|
return;
|
|
171
174
|
}
|
|
172
|
-
const
|
|
175
|
+
const resolvedEvent = event ?? new Event('dialog.open-change');
|
|
176
|
+
const change = this.createOpenChangeEvent(true, reason, resolvedEvent, trigger, triggerId ?? this.triggerId());
|
|
173
177
|
this.onOpenChange.emit(change.payload);
|
|
174
178
|
if (change.eventDetails.isCanceled()) {
|
|
175
179
|
return;
|
|
176
180
|
}
|
|
181
|
+
this.openInteractionType.set(this.consumeOpenInteractionType(event));
|
|
177
182
|
if (trigger) {
|
|
178
183
|
this.trigger.set(trigger);
|
|
179
184
|
}
|
|
@@ -187,15 +192,18 @@ class RdxDialogRoot {
|
|
|
187
192
|
this.open.set(true);
|
|
188
193
|
this.floatingContext.events.emit('openchange', { open: true, reason, event: change.eventDetails.event });
|
|
189
194
|
}
|
|
190
|
-
close(reason = 'none', event
|
|
195
|
+
close(reason = 'none', event) {
|
|
191
196
|
if (!this.open()) {
|
|
192
197
|
return;
|
|
193
198
|
}
|
|
194
|
-
const
|
|
199
|
+
const resolvedEvent = event ?? new Event('dialog.open-change');
|
|
200
|
+
const change = this.createOpenChangeEvent(false, reason, resolvedEvent, this.trigger(), this.triggerId());
|
|
195
201
|
this.onOpenChange.emit(change.payload);
|
|
196
202
|
if (change.eventDetails.isCanceled()) {
|
|
197
203
|
return;
|
|
198
204
|
}
|
|
205
|
+
this.pendingTriggerOpenInteractionType.set(null);
|
|
206
|
+
this.closeInteractionType.set(getInteractionTypeFromEvent(event));
|
|
199
207
|
this.preventUnmountOnClose.set(change.shouldPreventUnmountOnClose());
|
|
200
208
|
this.open.set(false);
|
|
201
209
|
this.floatingContext.events.emit('openchange', { open: false, reason, event: change.eventDetails.event });
|
|
@@ -207,6 +215,9 @@ class RdxDialogRoot {
|
|
|
207
215
|
}
|
|
208
216
|
this.show(trigger, payload, triggerId, 'trigger-press', event);
|
|
209
217
|
}
|
|
218
|
+
setTriggerOpenInteractionType(type) {
|
|
219
|
+
this.pendingTriggerOpenInteractionType.set(type);
|
|
220
|
+
}
|
|
210
221
|
registerTrigger(id, trigger, payload) {
|
|
211
222
|
this.registeredTriggers.set(id, { element: trigger, payload });
|
|
212
223
|
this.triggers.update((triggers) => (triggers.includes(trigger) ? triggers : [...triggers, trigger]));
|
|
@@ -273,6 +284,11 @@ class RdxDialogRoot {
|
|
|
273
284
|
this.onOpenChangeComplete.emit(open);
|
|
274
285
|
}
|
|
275
286
|
}
|
|
287
|
+
consumeOpenInteractionType(event) {
|
|
288
|
+
const pending = this.pendingTriggerOpenInteractionType();
|
|
289
|
+
this.pendingTriggerOpenInteractionType.set(null);
|
|
290
|
+
return pending ?? getInteractionTypeFromEvent(event);
|
|
291
|
+
}
|
|
276
292
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxDialogRoot, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
277
293
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: RdxDialogRoot, isStandalone: true, selector: "[rdxDialogRoot]", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, defaultOpen: { classPropertyName: "defaultOpen", publicName: "defaultOpen", isSignal: true, isRequired: false, transformFunction: null }, triggerId: { classPropertyName: "triggerId", publicName: "triggerId", isSignal: true, isRequired: false, transformFunction: null }, defaultTriggerId: { classPropertyName: "defaultTriggerId", publicName: "defaultTriggerId", isSignal: true, isRequired: false, transformFunction: null }, modal: { classPropertyName: "modal", publicName: "modal", isSignal: true, isRequired: false, transformFunction: null }, disablePointerDismissal: { classPropertyName: "disablePointerDismissal", publicName: "disablePointerDismissal", isSignal: true, isRequired: false, transformFunction: null }, handle: { classPropertyName: "handle", publicName: "handle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", triggerId: "triggerIdChange", onOpenChange: "onOpenChange", onOpenChangeComplete: "onOpenChangeComplete" }, providers: [
|
|
278
294
|
provideRdxDialogRootContext(context),
|
|
@@ -310,12 +326,15 @@ function contextFor(root) {
|
|
|
310
326
|
trigger: root.trigger.asReadonly(),
|
|
311
327
|
triggers: root.triggers.asReadonly(),
|
|
312
328
|
payload: root.payload.asReadonly(),
|
|
329
|
+
openInteractionType: root.openInteractionType.asReadonly(),
|
|
330
|
+
closeInteractionType: root.closeInteractionType.asReadonly(),
|
|
313
331
|
nested: root.nested,
|
|
314
332
|
nestedDialogOpen: root.nestedDialogOpen,
|
|
315
333
|
setTitleId: (id) => root.titleId.set(id),
|
|
316
334
|
setDescriptionId: (id) => root.descriptionId.set(id),
|
|
317
335
|
registerTransitionElement: (element) => root.registerTransitionElement(element),
|
|
318
336
|
registerTrigger: (id, trigger, payload) => root.registerTrigger(id, trigger, payload),
|
|
337
|
+
setTriggerOpenInteractionType: (type) => root.setTriggerOpenInteractionType(type),
|
|
319
338
|
open: (trigger, payload, triggerId, reason, event) => root.show(trigger, payload, triggerId, reason, event),
|
|
320
339
|
close: (reason, event) => root.close(reason, event),
|
|
321
340
|
toggle: (triggerId, trigger, payload, event) => root.toggle(triggerId, trigger, payload, event)
|
|
@@ -544,6 +563,9 @@ class RdxDialogPopup {
|
|
|
544
563
|
// `FloatingFocusManager disabled={!mounted}` (NOT `open`) for trap/return-focus.
|
|
545
564
|
// Marker + isolation are additionally gated on `open` inside the manager.
|
|
546
565
|
enabled: () => rootContext.present(),
|
|
566
|
+
restoreFocus: () => 'popup',
|
|
567
|
+
openInteractionType: () => rootContext.openInteractionType(),
|
|
568
|
+
closeInteractionType: () => rootContext.closeInteractionType(),
|
|
547
569
|
closeOnFocusOut: () => !rootContext.disablePointerDismissal()
|
|
548
570
|
};
|
|
549
571
|
})
|
|
@@ -568,6 +590,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
568
590
|
// `FloatingFocusManager disabled={!mounted}` (NOT `open`) for trap/return-focus.
|
|
569
591
|
// Marker + isolation are additionally gated on `open` inside the manager.
|
|
570
592
|
enabled: () => rootContext.present(),
|
|
593
|
+
restoreFocus: () => 'popup',
|
|
594
|
+
openInteractionType: () => rootContext.openInteractionType(),
|
|
595
|
+
closeInteractionType: () => rootContext.closeInteractionType(),
|
|
571
596
|
closeOnFocusOut: () => !rootContext.disablePointerDismissal()
|
|
572
597
|
};
|
|
573
598
|
})
|
|
@@ -693,6 +718,13 @@ class RdxDialogTrigger {
|
|
|
693
718
|
this.triggerId = computed(() => this.id() ?? this.generatedId, ...(ngDevMode ? [{ debugName: "triggerId" }] : /* istanbul ignore next */ []));
|
|
694
719
|
this.rootContext = computed(() => this.handle()?.context() ?? this.parentRootContext, ...(ngDevMode ? [{ debugName: "rootContext" }] : /* istanbul ignore next */ []));
|
|
695
720
|
this.isOpen = computed(() => this.rootContext()?.isOpen() === true && this.rootContext()?.trigger() === this.elementRef.nativeElement, ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
|
|
721
|
+
this.triggerInteraction = createRdxTriggerInteraction({
|
|
722
|
+
trigger: () => this.elementRef.nativeElement,
|
|
723
|
+
activeTrigger: () => this.rootContext()?.trigger(),
|
|
724
|
+
open: () => this.rootContext()?.isOpen() ?? false,
|
|
725
|
+
disabled: () => this.disabled(),
|
|
726
|
+
contentId: () => this.rootContext()?.contentId
|
|
727
|
+
});
|
|
696
728
|
effect((onCleanup) => {
|
|
697
729
|
const handle = this.handle();
|
|
698
730
|
if (handle) {
|
|
@@ -702,11 +734,17 @@ class RdxDialogTrigger {
|
|
|
702
734
|
onCleanup(untracked(() => this.parentRootContext.registerTrigger(this.triggerId(), this.elementRef.nativeElement, () => this.payload())));
|
|
703
735
|
}
|
|
704
736
|
});
|
|
737
|
+
useTriggerFocusGuardAnchor({
|
|
738
|
+
trigger: () => this.elementRef.nativeElement,
|
|
739
|
+
contentId: () => this.rootContext()?.contentId,
|
|
740
|
+
enabled: () => this.triggerInteraction.isActive()
|
|
741
|
+
});
|
|
705
742
|
}
|
|
706
743
|
handleClick(event) {
|
|
707
744
|
if (this.disabled()) {
|
|
708
745
|
return;
|
|
709
746
|
}
|
|
747
|
+
this.rootContext()?.setTriggerOpenInteractionType(this.triggerInteraction.clickInteractionType(event));
|
|
710
748
|
if (this.handle()) {
|
|
711
749
|
this.handle().toggle(this.triggerId(), event);
|
|
712
750
|
}
|
|
@@ -714,8 +752,11 @@ class RdxDialogTrigger {
|
|
|
714
752
|
this.parentRootContext?.toggle(this.triggerId(), this.elementRef.nativeElement, this.payload(), event);
|
|
715
753
|
}
|
|
716
754
|
}
|
|
755
|
+
handlePointerDown(event) {
|
|
756
|
+
this.triggerInteraction.recordPointerDown(event);
|
|
757
|
+
}
|
|
717
758
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxDialogTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
718
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: RdxDialogTrigger, isStandalone: true, selector: "button[rdxDialogTrigger]", inputs: { handle: { classPropertyName: "handle", publicName: "handle", isSignal: true, isRequired: false, transformFunction: null }, payload: { classPropertyName: "payload", publicName: "payload", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "type": "button" }, listeners: { "click": "handleClick($event)" }, properties: { "attr.aria-haspopup": "\"dialog\"", "attr.aria-controls": "rootContext()?.contentId", "attr.aria-expanded": "
|
|
759
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: RdxDialogTrigger, isStandalone: true, selector: "button[rdxDialogTrigger]", inputs: { handle: { classPropertyName: "handle", publicName: "handle", isSignal: true, isRequired: false, transformFunction: null }, payload: { classPropertyName: "payload", publicName: "payload", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "type": "button" }, listeners: { "click": "handleClick($event)", "pointerdown": "handlePointerDown($event)" }, properties: { "attr.aria-haspopup": "\"dialog\"", "attr.aria-controls": "rootContext()?.contentId", "attr.aria-expanded": "triggerInteraction.ariaExpanded()", "attr.data-state": "triggerInteraction.dataState()", "attr.data-popup-open": "triggerInteraction.dataPopupOpen()", "attr.disabled": "triggerInteraction.disabled() ? \"\" : undefined", "id": "triggerId()" } }, exportAs: ["rdxDialogTrigger"], ngImport: i0 }); }
|
|
719
760
|
}
|
|
720
761
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxDialogTrigger, decorators: [{
|
|
721
762
|
type: Directive,
|
|
@@ -726,12 +767,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
726
767
|
type: 'button',
|
|
727
768
|
'[attr.aria-haspopup]': '"dialog"',
|
|
728
769
|
'[attr.aria-controls]': 'rootContext()?.contentId',
|
|
729
|
-
'[attr.aria-expanded]': '
|
|
730
|
-
'[attr.data-state]': '
|
|
731
|
-
'[attr.data-popup-open]': '
|
|
732
|
-
'[attr.disabled]': 'disabled() ? "" : undefined',
|
|
770
|
+
'[attr.aria-expanded]': 'triggerInteraction.ariaExpanded()',
|
|
771
|
+
'[attr.data-state]': 'triggerInteraction.dataState()',
|
|
772
|
+
'[attr.data-popup-open]': 'triggerInteraction.dataPopupOpen()',
|
|
773
|
+
'[attr.disabled]': 'triggerInteraction.disabled() ? "" : undefined',
|
|
733
774
|
'[id]': 'triggerId()',
|
|
734
|
-
'(click)': 'handleClick($event)'
|
|
775
|
+
'(click)': 'handleClick($event)',
|
|
776
|
+
'(pointerdown)': 'handlePointerDown($event)'
|
|
735
777
|
}
|
|
736
778
|
}]
|
|
737
779
|
}], ctorParameters: () => [], propDecorators: { handle: [{ type: i0.Input, args: [{ isSignal: true, alias: "handle", required: false }] }], payload: [{ type: i0.Input, args: [{ isSignal: true, alias: "payload", required: false }] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
|
|
@@ -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-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 ElementRef,\n inject,\n input,\n model,\n output,\n Signal,\n signal,\n untracked\n} from '@angular/core';\nimport {\n BooleanInput,\n createCancelableChangeEventDetails,\n createContext,\n createFloatingRootContext,\n injectId,\n provideFloatingRootContext,\n provideFloatingTree,\n RdxCancelableChangeEventDetails,\n RdxFloatingRootContext,\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 type RdxDialogOpenChangeEventDetails = RdxCancelableChangeEventDetails<RdxDialogOpenChangeReason>;\n\nexport interface RdxDialogOpenChange {\n open: boolean;\n triggerId: string | null;\n trigger: HTMLElement | undefined;\n reason: RdxDialogOpenChangeReason;\n event: Event;\n eventDetails: RdxDialogOpenChangeEventDetails;\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 present: 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: [\n provideRdxDialogRootContext(context),\n // New floating foundation (ADR 0015/0017 migration). Inherit-or-create tree so a nested dialog\n // shares its parent's tree; the per-popup root context bridges open / triggers / reference.\n provideFloatingTree(),\n provideFloatingRootContext(() => inject(RdxDialogRoot).floatingContext)\n ]\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 private readonly preventUnmountOnClose = signal(false);\n\n readonly present = computed(() => this.open() || this.preventUnmountOnClose());\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 /**\n * The shared per-popup floating context (ADR 0015 §1) — `open` mirrors the dialog's open state, the\n * trigger registry is bridged from {@link registerTrigger}, and the reference / floating elements are\n * set by the trigger / popup. The new dismissal + focus engines read this once the popup migrates.\n */\n readonly floatingContext: RdxFloatingRootContext = createFloatingRootContext({\n ownerDocument: inject(ElementRef).nativeElement.ownerDocument,\n open: () => this.open()\n });\n\n constructor() {\n // Keep the floating context's reference element in sync with the active trigger.\n effect(() => this.floatingContext.setReferenceElement(this.trigger() ?? null));\n\n effect(() => {\n if (this.open() && this.preventUnmountOnClose()) {\n this.preventUnmountOnClose.set(false);\n }\n });\n\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 const shouldAdoptPayload = trigger !== undefined || payload !== undefined;\n\n if (this.open()) {\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 (shouldAdoptPayload) {\n this.payload.set(payload);\n }\n\n return;\n }\n\n const change = this.createOpenChangeEvent(true, reason, event, trigger, triggerId ?? this.triggerId());\n this.onOpenChange.emit(change.payload);\n\n if (change.eventDetails.isCanceled()) {\n return;\n }\n\n if (trigger) {\n this.trigger.set(trigger);\n }\n\n if (triggerId !== undefined) {\n this.triggerId.set(triggerId);\n }\n\n if (shouldAdoptPayload) {\n this.payload.set(payload);\n }\n\n this.preventUnmountOnClose.set(false);\n this.open.set(true);\n this.floatingContext.events.emit('openchange', { open: true, reason, event: change.eventDetails.event });\n }\n\n close(reason: RdxDialogOpenChangeReason = 'none', event = new Event('dialog.open-change')) {\n if (!this.open()) {\n return;\n }\n\n const change = this.createOpenChangeEvent(false, reason, event, this.trigger(), this.triggerId());\n this.onOpenChange.emit(change.payload);\n\n if (change.eventDetails.isCanceled()) {\n return;\n }\n\n this.preventUnmountOnClose.set(change.shouldPreventUnmountOnClose());\n this.open.set(false);\n this.floatingContext.events.emit('openchange', { open: false, reason, event: change.eventDetails.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 // Bridge into the floating context's trigger registry — the new dismissal/focus engines read it\n // for inside-element checks (a press/focus on the trigger counts as inside, ADR 0015 §2).\n this.floatingContext.triggers.add(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 this.floatingContext.triggers.delete(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 createOpenChangeEvent(\n open: boolean,\n reason: RdxDialogOpenChangeReason,\n event: Event,\n trigger: HTMLElement | undefined,\n triggerId: string | null\n ) {\n const change = createCancelableChangeEventDetails(reason, event, trigger);\n\n return {\n eventDetails: change.eventDetails,\n shouldPreventUnmountOnClose: change.shouldPreventUnmountOnClose,\n payload: {\n open,\n triggerId,\n trigger: change.eventDetails.trigger,\n reason: change.eventDetails.reason,\n event: change.eventDetails.event,\n eventDetails: change.eventDetails\n } satisfies RdxDialogOpenChange\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 present: root.present,\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 { booleanAttribute, DestroyRef, Directive, ElementRef, inject, input } from '@angular/core';\nimport { BooleanInput, RDX_FLOATING_ROOT_CONTEXT } from '@radix-ng/primitives/core';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * An overlay displayed beneath the dialog popup.\n *\n * Decorative-only, so it carries `role=\"presentation\"` (Base UI `DialogBackdrop`). By default a **nested**\n * dialog renders no backdrop — the parent's already dims the page; stacking a second one double-darkens\n * and intercepts the parent's outside-press. Set `forceRender` to opt back in.\n */\n@Directive({\n selector: '[rdxDialogBackdrop]',\n exportAs: 'rdxDialogBackdrop',\n host: {\n role: 'presentation',\n '[hidden]': 'rootContext.nested && !forceRender()',\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 /** Render the backdrop even for a nested dialog (off by default, matching Base UI). */\n readonly forceRender = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n constructor() {\n // The backdrop is a second portal root (a body sibling of the popup). It is registered as owned DOM\n // footprint for primitive-specific checks, but it is not a marker/aria keep-set member.\n const floatingContext = inject(RDX_FLOATING_ROOT_CONTEXT, { optional: true });\n if (floatingContext) {\n const host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n floatingContext.addFloatingElement(host);\n inject(DestroyRef).onDestroy(() => floatingContext.removeFloatingElement(host));\n }\n }\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 { afterNextRender, computed, DestroyRef, Directive, ElementRef, inject, Injector, output } from '@angular/core';\nimport { outputFromObservable, outputToObservable } from '@angular/core/rxjs-interop';\nimport {\n RDX_FLOATING_REGISTRATION,\n RDX_FLOATING_ROOT_CONTEXT,\n RdxFloatingNodeRegistration,\n setupInternalBackdrop,\n useScrollLock\n} from '@radix-ng/primitives/core';\nimport { RdxDismiss, RdxOutsidePressDomEvent } from '@radix-ng/primitives/dismissable-layer';\nimport {\n provideFloatingFocusManagerConfig,\n RdxFloatingFocusManager\n} from '@radix-ng/primitives/floating-focus-manager';\nimport { RdxFocusScope } from '@radix-ng/primitives/focus-scope';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/** Composite navigation keys a Dialog popup keeps to itself, so they never reach an enclosing Menu / Composite. */\nconst COMPOSITE_KEYS = new Set(['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'Home', 'End']);\nconst DIALOG_INTERNAL_BACKDROP_ATTR = 'data-rdx-dialog-internal-backdrop';\n\n/**\n * A container for the dialog contents.\n *\n * **ADR 0015/0017 Phase-4 migration — Dialog is the PILOT cutover onto the new floating dismissal +\n * focus engine. Browser-verified** by `apps/visual-regression/tests/dialog.behavior.spec.ts` (trap,\n * initial / return focus, Escape / outside-press / focus-out dismissal, nested-Escape deepest-first,\n * backdrop-not-marked).\n *\n * **Mapping (legacy → new):**\n * - `RdxDismissableLayer` (legacy) → `RdxFloatingNodeRegistration` (registers the tree node) +\n * `RdxDismiss` (Escape / outside-press; reads the root context + node).\n * - `RdxFocusScope` (direct) → `RdxFloatingFocusManager` (composes the reworked focus scope; trap +\n * markOthers + close-on-focus-out), driven by `provideFloatingFocusManagerConfig`.\n * - `disableOutsidePointerEvents` → the focus manager's `inert` pass marks outside elements\n * non-interactive for a modal (finding #4), scoped to siblings of the popup's ancestor chain instead\n * of a global `body { pointer-events: none }` lock — so the popup needs no `pointer-events: auto`.\n * - focus-out close moved from the dismissal capability (`focusOutside: () => false`) to the manager\n * (`manager.focusOut`), per ADR 0017 §3.\n * - `isEventOnTrigger` preventDefault → removed: the trigger is in `context.triggers`, so the engine\n * treats a press/focus on it as **inside** (no close-then-reopen).\n *\n * **Parity notes:**\n * - **Lifecycle split (resolved 2026-06-16):** `enabled` is `open || transitionStatus === 'ending'`, so\n * the trap / return-focus machinery survives the exit animation, while the manager's marker + isolation\n * passes additionally key off `open` and release at close-start (Base UI `markOthers` gating).\n * - **`trap-focus` split:** the manager traps focus for `modal === true` and `'trap-focus'`, but applies\n * real `inert` isolation only for `modal === true`, matching Base UI's public contract that\n * `modal=\"trap-focus\"` leaves outside pointer interaction enabled.\n * - **`returnFocus` orchestration (resolved 2026-06-16):** the manager now owns the return-focus *target*\n * via the focus scope's `returnFocus` config seam (the scope owns the *timing* — its queued post-unmount\n * frame). Dialog leaves it at the default (`returnFocus: true` → return to the element focused before\n * open), so behavior is unchanged; a consumer can now also pass `false` / an element / a callback.\n */\n@Directive({\n selector: '[rdxDialogPopup]',\n exportAs: 'rdxDialogPopup',\n hostDirectives: [RdxFloatingNodeRegistration, RdxFloatingFocusManager],\n providers: [\n provideFloatingFocusManagerConfig(() => {\n const rootContext = injectRdxDialogRootContext();\n return {\n // Trap for a modal or trap-focus dialog (Base UI `modal={modal !== false}`).\n modal: () => rootContext.modal() === true || rootContext.modal() === 'trap-focus',\n // Full modal blocks outside pointer interaction; `trap-focus` only traps focus.\n inert: () => rootContext.modal() === true,\n // Active for the whole MOUNTED lifetime — including an explicit\n // `preventUnmountOnClose()` cycle after the exit transition — matching Base UI's\n // `FloatingFocusManager disabled={!mounted}` (NOT `open`) for trap/return-focus.\n // Marker + isolation are additionally gated on `open` inside the manager.\n enabled: () => rootContext.present(),\n closeOnFocusOut: () => !rootContext.disablePointerDismissal()\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 '(keydown)': 'onKeyDown($event)'\n }\n})\nexport class RdxDialogPopup {\n protected readonly rootContext = injectRdxDialogRootContext();\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly floatingContext = inject(RDX_FLOATING_ROOT_CONTEXT);\n private readonly registration = inject(RDX_FLOATING_REGISTRATION, { optional: true });\n private readonly focusManager = inject(RdxFloatingFocusManager);\n private readonly focusScope = inject(RdxFocusScope);\n\n /** Event handler called when the escape key is down. Can be prevented. */\n readonly escapeKeyDown = output<KeyboardEvent>();\n\n /** Event handler called when a pointerdown event happens outside of the popup. Can be prevented. */\n readonly pointerDownOutside = output<RdxOutsidePressDomEvent>();\n\n /** Event handler called when focus moves outside of the popup. Can be prevented. */\n readonly focusOutside = output<FocusEvent>();\n\n /** Event handler called when an interaction (pointer / focus) happens outside of the popup. */\n readonly interactOutside = output<RdxOutsidePressDomEvent | FocusEvent>();\n\n /** Event handler called before focus moves into the popup. Can be prevented. */\n readonly openAutoFocus = outputFromObservable(outputToObservable(this.focusScope.mountAutoFocus));\n\n /** Event handler called before focus returns after the popup is removed. Can be prevented. */\n readonly closeAutoFocus = outputFromObservable(outputToObservable(this.focusScope.unmountAutoFocus));\n\n constructor() {\n // The popup element is this layer's floating element (inside-surface for containment checks).\n this.floatingContext.setFloatingElement(this.host);\n\n // Scroll lock follows Base UI (`open && modal === true`): released at close-start so the page is\n // scrollable again as the exit animation plays. Background pointer/AT isolation is no longer a\n // global body lock — the focus manager applies real `inert` to outside elements (finding #4).\n useScrollLock(\n computed(() => this.rootContext.modal() === true && this.rootContext.isOpen()),\n {\n referenceElement: () => this.host\n }\n );\n\n const unregisterTransitionElement = this.rootContext.registerTransitionElement(this.host);\n inject(DestroyRef).onDestroy(unregisterTransitionElement);\n\n // Base UI always renders an internal backdrop for a fully modal dialog. It is invisible and exists\n // even when consumers also render `rdxDialogBackdrop`: outside pointer events land on this owned\n // target instead of being swallowed by inert page content.\n const injector = inject(Injector);\n afterNextRender(() =>\n setupInternalBackdrop(this.host, injector, {\n marker: DIALOG_INTERNAL_BACKDROP_ATTR,\n isOpen: () => this.rootContext.isOpen(),\n shouldRender: () => this.rootContext.modal() === true,\n cutout: () => this.host.closest('[rdxDialogViewport]'),\n passThrough: () => this.host.closest('[rdxDialogViewport]') !== null\n })\n );\n\n // Dismissal (Base UI Dialog outside-press policy): Escape always closes; an outside press closes\n // only the **topmost** dialog (a parent with an open nested dialog never self-closes) and only when\n // pointer dismissal is enabled. A fully modal dialog uses the internal backdrop and intentional\n // outside-press timing (click, not pointerdown). Focus-out is owned by the focus manager (below).\n new RdxDismiss(this.floatingContext, () => this.registration?.node() ?? null, {\n escapeKey: () => true,\n outsidePress: () => this.isTopmost() && !this.rootContext.disablePointerDismissal(),\n outsidePressEvent: () => (this.rootContext.modal() === true ? 'intentional' : 'sloppy'),\n focusOutside: () => false,\n onEscapeKeyDown: (event) => this.escapeKeyDown.emit(event),\n onPointerDownOutside: (event) => {\n this.pointerDownOutside.emit(event);\n this.interactOutside.emit(event);\n },\n onDismiss: (reason, event) => {\n this.rootContext.close(reason === 'escape-key' ? 'escape-key' : 'outside-press', event);\n }\n });\n\n // Focus-out close (ADR 0017 §3) — the manager emits when focus leaves a non-modal dialog to an\n // unrelated node; re-expose as `focusOutside` (preventable) and close unless vetoed.\n this.focusManager.focusOut.subscribe((event) => {\n this.focusOutside.emit(event);\n this.interactOutside.emit(event);\n if (!event.defaultPrevented) {\n this.rootContext.close('focus-out', event);\n }\n });\n }\n\n /** This dialog is the topmost (deepest open) one — it has no open nested dialog above it. */\n private isTopmost(): boolean {\n return this.rootContext.isOpen() && !this.rootContext.nestedDialogOpen();\n }\n\n /**\n * Composite navigation keys (arrows / Home / End) are kept inside the dialog (Base UI `DialogPopup`):\n * a dialog opened from inside a Menu / Menubar / Composite must not let an arrow press bubble out and\n * move the outer collection's active item.\n */\n protected onKeyDown(event: KeyboardEvent): void {\n if (COMPOSITE_KEYS.has(event.key)) {\n event.stopPropagation();\n }\n }\n}\n","import { Directive, input, isDevMode } from '@angular/core';\nimport { rdxDevError } from '@radix-ng/primitives/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().present }))]\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 rdxDevError(\n 'dialog/portal-on-element',\n '`rdxDialogPortal` is now a structural directive. ' +\n 'Use `<ng-template rdxDialogPortal>` around the backdrop and popup. ' +\n 'rdxDialogPortalPresence has been removed.',\n 'components/dialog'\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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"}
|
|
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 ElementRef,\n inject,\n input,\n model,\n output,\n Signal,\n signal,\n untracked\n} from '@angular/core';\nimport {\n BooleanInput,\n createCancelableChangeEventDetails,\n createContext,\n createFloatingRootContext,\n injectId,\n provideFloatingRootContext,\n provideFloatingTree,\n RdxCancelableChangeEventDetails,\n RdxFloatingRootContext,\n RdxTransitionStatus,\n useTransitionStatus\n} from '@radix-ng/primitives/core';\nimport { getInteractionTypeFromEvent, RdxInteractionType } from '@radix-ng/primitives/floating-focus-manager';\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 type RdxDialogOpenChangeEventDetails = RdxCancelableChangeEventDetails<RdxDialogOpenChangeReason>;\n\nexport interface RdxDialogOpenChange {\n open: boolean;\n triggerId: string | null;\n trigger: HTMLElement | undefined;\n reason: RdxDialogOpenChangeReason;\n event: Event;\n eventDetails: RdxDialogOpenChangeEventDetails;\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 present: 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 openInteractionType: Signal<RdxInteractionType>;\n closeInteractionType: Signal<RdxInteractionType>;\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 setTriggerOpenInteractionType: (type: RdxInteractionType) => 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: [\n provideRdxDialogRootContext(context),\n // New floating foundation (ADR 0015/0017 migration). Inherit-or-create tree so a nested dialog\n // shares its parent's tree; the per-popup root context bridges open / triggers / reference.\n provideFloatingTree(),\n provideFloatingRootContext(() => inject(RdxDialogRoot).floatingContext)\n ]\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 readonly openInteractionType = signal<RdxInteractionType>(null);\n readonly closeInteractionType = signal<RdxInteractionType>(null);\n private readonly preventUnmountOnClose = signal(false);\n private readonly pendingTriggerOpenInteractionType = signal<RdxInteractionType>(null);\n\n readonly present = computed(() => this.open() || this.preventUnmountOnClose());\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 /**\n * The shared per-popup floating context (ADR 0015 §1) — `open` mirrors the dialog's open state, the\n * trigger registry is bridged from {@link registerTrigger}, and the reference / floating elements are\n * set by the trigger / popup. The new dismissal + focus engines read this once the popup migrates.\n */\n readonly floatingContext: RdxFloatingRootContext = createFloatingRootContext({\n ownerDocument: inject(ElementRef).nativeElement.ownerDocument,\n open: () => this.open()\n });\n\n constructor() {\n // Keep the floating context's reference element in sync with the active trigger.\n effect(() => this.floatingContext.setReferenceElement(this.trigger() ?? null));\n\n effect(() => {\n if (this.open() && this.preventUnmountOnClose()) {\n this.preventUnmountOnClose.set(false);\n }\n });\n\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?: Event\n ) {\n const shouldAdoptPayload = trigger !== undefined || payload !== undefined;\n\n if (this.open()) {\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 (shouldAdoptPayload) {\n this.payload.set(payload);\n }\n\n return;\n }\n\n const resolvedEvent = event ?? new Event('dialog.open-change');\n const change = this.createOpenChangeEvent(true, reason, resolvedEvent, trigger, triggerId ?? this.triggerId());\n this.onOpenChange.emit(change.payload);\n\n if (change.eventDetails.isCanceled()) {\n return;\n }\n\n this.openInteractionType.set(this.consumeOpenInteractionType(event));\n\n if (trigger) {\n this.trigger.set(trigger);\n }\n\n if (triggerId !== undefined) {\n this.triggerId.set(triggerId);\n }\n\n if (shouldAdoptPayload) {\n this.payload.set(payload);\n }\n\n this.preventUnmountOnClose.set(false);\n this.open.set(true);\n this.floatingContext.events.emit('openchange', { open: true, reason, event: change.eventDetails.event });\n }\n\n close(reason: RdxDialogOpenChangeReason = 'none', event?: Event) {\n if (!this.open()) {\n return;\n }\n\n const resolvedEvent = event ?? new Event('dialog.open-change');\n const change = this.createOpenChangeEvent(false, reason, resolvedEvent, this.trigger(), this.triggerId());\n this.onOpenChange.emit(change.payload);\n\n if (change.eventDetails.isCanceled()) {\n return;\n }\n\n this.pendingTriggerOpenInteractionType.set(null);\n this.closeInteractionType.set(getInteractionTypeFromEvent(event));\n this.preventUnmountOnClose.set(change.shouldPreventUnmountOnClose());\n this.open.set(false);\n this.floatingContext.events.emit('openchange', { open: false, reason, event: change.eventDetails.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 setTriggerOpenInteractionType(type: RdxInteractionType): void {\n this.pendingTriggerOpenInteractionType.set(type);\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 // Bridge into the floating context's trigger registry — the new dismissal/focus engines read it\n // for inside-element checks (a press/focus on the trigger counts as inside, ADR 0015 §2).\n this.floatingContext.triggers.add(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 this.floatingContext.triggers.delete(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 createOpenChangeEvent(\n open: boolean,\n reason: RdxDialogOpenChangeReason,\n event: Event,\n trigger: HTMLElement | undefined,\n triggerId: string | null\n ) {\n const change = createCancelableChangeEventDetails(reason, event, trigger);\n\n return {\n eventDetails: change.eventDetails,\n shouldPreventUnmountOnClose: change.shouldPreventUnmountOnClose,\n payload: {\n open,\n triggerId,\n trigger: change.eventDetails.trigger,\n reason: change.eventDetails.reason,\n event: change.eventDetails.event,\n eventDetails: change.eventDetails\n } satisfies RdxDialogOpenChange\n };\n }\n\n private emitOpenChangeComplete(open: boolean) {\n if (!this.destroyRef.destroyed) {\n this.onOpenChangeComplete.emit(open);\n }\n }\n\n private consumeOpenInteractionType(event?: Event): RdxInteractionType {\n const pending = this.pendingTriggerOpenInteractionType();\n this.pendingTriggerOpenInteractionType.set(null);\n return pending ?? getInteractionTypeFromEvent(event);\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 present: root.present,\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 openInteractionType: root.openInteractionType.asReadonly(),\n closeInteractionType: root.closeInteractionType.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 setTriggerOpenInteractionType: (type) => root.setTriggerOpenInteractionType(type),\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 { booleanAttribute, DestroyRef, Directive, ElementRef, inject, input } from '@angular/core';\nimport { BooleanInput, RDX_FLOATING_ROOT_CONTEXT } from '@radix-ng/primitives/core';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * An overlay displayed beneath the dialog popup.\n *\n * Decorative-only, so it carries `role=\"presentation\"` (Base UI `DialogBackdrop`). By default a **nested**\n * dialog renders no backdrop — the parent's already dims the page; stacking a second one double-darkens\n * and intercepts the parent's outside-press. Set `forceRender` to opt back in.\n */\n@Directive({\n selector: '[rdxDialogBackdrop]',\n exportAs: 'rdxDialogBackdrop',\n host: {\n role: 'presentation',\n '[hidden]': 'rootContext.nested && !forceRender()',\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 /** Render the backdrop even for a nested dialog (off by default, matching Base UI). */\n readonly forceRender = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n constructor() {\n // The backdrop is a second portal root (a body sibling of the popup). It is registered as owned DOM\n // footprint for primitive-specific checks, but it is not a marker/aria keep-set member.\n const floatingContext = inject(RDX_FLOATING_ROOT_CONTEXT, { optional: true });\n if (floatingContext) {\n const host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n floatingContext.addFloatingElement(host);\n inject(DestroyRef).onDestroy(() => floatingContext.removeFloatingElement(host));\n }\n }\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 { afterNextRender, computed, DestroyRef, Directive, ElementRef, inject, Injector, output } from '@angular/core';\nimport { outputFromObservable, outputToObservable } from '@angular/core/rxjs-interop';\nimport {\n RDX_FLOATING_REGISTRATION,\n RDX_FLOATING_ROOT_CONTEXT,\n RdxFloatingNodeRegistration,\n setupInternalBackdrop,\n useScrollLock\n} from '@radix-ng/primitives/core';\nimport { RdxDismiss, RdxOutsidePressDomEvent } from '@radix-ng/primitives/dismissable-layer';\nimport {\n provideFloatingFocusManagerConfig,\n RdxFloatingFocusManager\n} from '@radix-ng/primitives/floating-focus-manager';\nimport { RdxFocusScope } from '@radix-ng/primitives/focus-scope';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/** Composite navigation keys a Dialog popup keeps to itself, so they never reach an enclosing Menu / Composite. */\nconst COMPOSITE_KEYS = new Set(['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'Home', 'End']);\nconst DIALOG_INTERNAL_BACKDROP_ATTR = 'data-rdx-dialog-internal-backdrop';\n\n/**\n * A container for the dialog contents.\n *\n * **ADR 0015/0017 Phase-4 migration — Dialog is the PILOT cutover onto the new floating dismissal +\n * focus engine. Browser-verified** by `apps/visual-regression/tests/dialog.behavior.spec.ts` (trap,\n * initial / return focus, Escape / outside-press / focus-out dismissal, nested-Escape deepest-first,\n * backdrop-not-marked).\n *\n * **Mapping (legacy → new):**\n * - `RdxDismissableLayer` (legacy) → `RdxFloatingNodeRegistration` (registers the tree node) +\n * `RdxDismiss` (Escape / outside-press; reads the root context + node).\n * - `RdxFocusScope` (direct) → `RdxFloatingFocusManager` (composes the reworked focus scope; trap +\n * markOthers + close-on-focus-out), driven by `provideFloatingFocusManagerConfig`.\n * - `disableOutsidePointerEvents` → the focus manager's `inert` pass marks outside elements\n * non-interactive for a modal (finding #4), scoped to siblings of the popup's ancestor chain instead\n * of a global `body { pointer-events: none }` lock — so the popup needs no `pointer-events: auto`.\n * - focus-out close moved from the dismissal capability (`focusOutside: () => false`) to the manager\n * (`manager.focusOut`), per ADR 0017 §3.\n * - `isEventOnTrigger` preventDefault → removed: the trigger is in `context.triggers`, so the engine\n * treats a press/focus on it as **inside** (no close-then-reopen).\n *\n * **Parity notes:**\n * - **Lifecycle split (resolved 2026-06-16):** `enabled` is `open || transitionStatus === 'ending'`, so\n * the trap / return-focus machinery survives the exit animation, while the manager's marker + isolation\n * passes additionally key off `open` and release at close-start (Base UI `markOthers` gating).\n * - **`trap-focus` split:** the manager traps focus for `modal === true` and `'trap-focus'`, but applies\n * real `inert` isolation only for `modal === true`, matching Base UI's public contract that\n * `modal=\"trap-focus\"` leaves outside pointer interaction enabled.\n * - **`returnFocus` orchestration (resolved 2026-06-16):** the manager now owns the return-focus *target*\n * via the focus scope's `returnFocus` config seam (the scope owns the *timing* — its queued post-unmount\n * frame). Dialog leaves it at the default (`returnFocus: true` → return to the element focused before\n * open), so behavior is unchanged; a consumer can now also pass `false` / an element / a callback.\n */\n@Directive({\n selector: '[rdxDialogPopup]',\n exportAs: 'rdxDialogPopup',\n hostDirectives: [RdxFloatingNodeRegistration, RdxFloatingFocusManager],\n providers: [\n provideFloatingFocusManagerConfig(() => {\n const rootContext = injectRdxDialogRootContext();\n return {\n // Trap for a modal or trap-focus dialog (Base UI `modal={modal !== false}`).\n modal: () => rootContext.modal() === true || rootContext.modal() === 'trap-focus',\n // Full modal blocks outside pointer interaction; `trap-focus` only traps focus.\n inert: () => rootContext.modal() === true,\n // Active for the whole MOUNTED lifetime — including an explicit\n // `preventUnmountOnClose()` cycle after the exit transition — matching Base UI's\n // `FloatingFocusManager disabled={!mounted}` (NOT `open`) for trap/return-focus.\n // Marker + isolation are additionally gated on `open` inside the manager.\n enabled: () => rootContext.present(),\n restoreFocus: () => 'popup',\n openInteractionType: () => rootContext.openInteractionType(),\n closeInteractionType: () => rootContext.closeInteractionType(),\n closeOnFocusOut: () => !rootContext.disablePointerDismissal()\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 '(keydown)': 'onKeyDown($event)'\n }\n})\nexport class RdxDialogPopup {\n protected readonly rootContext = injectRdxDialogRootContext();\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly floatingContext = inject(RDX_FLOATING_ROOT_CONTEXT);\n private readonly registration = inject(RDX_FLOATING_REGISTRATION, { optional: true });\n private readonly focusManager = inject(RdxFloatingFocusManager);\n private readonly focusScope = inject(RdxFocusScope);\n\n /** Event handler called when the escape key is down. Can be prevented. */\n readonly escapeKeyDown = output<KeyboardEvent>();\n\n /** Event handler called when a pointerdown event happens outside of the popup. Can be prevented. */\n readonly pointerDownOutside = output<RdxOutsidePressDomEvent>();\n\n /** Event handler called when focus moves outside of the popup. Can be prevented. */\n readonly focusOutside = output<FocusEvent>();\n\n /** Event handler called when an interaction (pointer / focus) happens outside of the popup. */\n readonly interactOutside = output<RdxOutsidePressDomEvent | FocusEvent>();\n\n /** Event handler called before focus moves into the popup. Can be prevented. */\n readonly openAutoFocus = outputFromObservable(outputToObservable(this.focusScope.mountAutoFocus));\n\n /** Event handler called before focus returns after the popup is removed. Can be prevented. */\n readonly closeAutoFocus = outputFromObservable(outputToObservable(this.focusScope.unmountAutoFocus));\n\n constructor() {\n // The popup element is this layer's floating element (inside-surface for containment checks).\n this.floatingContext.setFloatingElement(this.host);\n\n // Scroll lock follows Base UI (`open && modal === true`): released at close-start so the page is\n // scrollable again as the exit animation plays. Background pointer/AT isolation is no longer a\n // global body lock — the focus manager applies real `inert` to outside elements (finding #4).\n useScrollLock(\n computed(() => this.rootContext.modal() === true && this.rootContext.isOpen()),\n {\n referenceElement: () => this.host\n }\n );\n\n const unregisterTransitionElement = this.rootContext.registerTransitionElement(this.host);\n inject(DestroyRef).onDestroy(unregisterTransitionElement);\n\n // Base UI always renders an internal backdrop for a fully modal dialog. It is invisible and exists\n // even when consumers also render `rdxDialogBackdrop`: outside pointer events land on this owned\n // target instead of being swallowed by inert page content.\n const injector = inject(Injector);\n afterNextRender(() =>\n setupInternalBackdrop(this.host, injector, {\n marker: DIALOG_INTERNAL_BACKDROP_ATTR,\n isOpen: () => this.rootContext.isOpen(),\n shouldRender: () => this.rootContext.modal() === true,\n cutout: () => this.host.closest('[rdxDialogViewport]'),\n passThrough: () => this.host.closest('[rdxDialogViewport]') !== null\n })\n );\n\n // Dismissal (Base UI Dialog outside-press policy): Escape always closes; an outside press closes\n // only the **topmost** dialog (a parent with an open nested dialog never self-closes) and only when\n // pointer dismissal is enabled. A fully modal dialog uses the internal backdrop and intentional\n // outside-press timing (click, not pointerdown). Focus-out is owned by the focus manager (below).\n new RdxDismiss(this.floatingContext, () => this.registration?.node() ?? null, {\n escapeKey: () => true,\n outsidePress: () => this.isTopmost() && !this.rootContext.disablePointerDismissal(),\n outsidePressEvent: () => (this.rootContext.modal() === true ? 'intentional' : 'sloppy'),\n focusOutside: () => false,\n onEscapeKeyDown: (event) => this.escapeKeyDown.emit(event),\n onPointerDownOutside: (event) => {\n this.pointerDownOutside.emit(event);\n this.interactOutside.emit(event);\n },\n onDismiss: (reason, event) => {\n this.rootContext.close(reason === 'escape-key' ? 'escape-key' : 'outside-press', event);\n }\n });\n\n // Focus-out close (ADR 0017 §3) — the manager emits when focus leaves a non-modal dialog to an\n // unrelated node; re-expose as `focusOutside` (preventable) and close unless vetoed.\n this.focusManager.focusOut.subscribe((event) => {\n this.focusOutside.emit(event);\n this.interactOutside.emit(event);\n if (!event.defaultPrevented) {\n this.rootContext.close('focus-out', event);\n }\n });\n }\n\n /** This dialog is the topmost (deepest open) one — it has no open nested dialog above it. */\n private isTopmost(): boolean {\n return this.rootContext.isOpen() && !this.rootContext.nestedDialogOpen();\n }\n\n /**\n * Composite navigation keys (arrows / Home / End) are kept inside the dialog (Base UI `DialogPopup`):\n * a dialog opened from inside a Menu / Menubar / Composite must not let an arrow press bubble out and\n * move the outer collection's active item.\n */\n protected onKeyDown(event: KeyboardEvent): void {\n if (COMPOSITE_KEYS.has(event.key)) {\n event.stopPropagation();\n }\n }\n}\n","import { Directive, input, isDevMode } from '@angular/core';\nimport { rdxDevError } from '@radix-ng/primitives/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().present }))]\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 rdxDevError(\n 'dialog/portal-on-element',\n '`rdxDialogPortal` is now a structural directive. ' +\n 'Use `<ng-template rdxDialogPortal>` around the backdrop and popup. ' +\n 'rdxDialogPortalPresence has been removed.',\n 'components/dialog'\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 { createRdxTriggerInteraction, useTriggerFocusGuardAnchor } from '@radix-ng/primitives/floating-focus-manager';\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]': 'triggerInteraction.ariaExpanded()',\n '[attr.data-state]': 'triggerInteraction.dataState()',\n '[attr.data-popup-open]': 'triggerInteraction.dataPopupOpen()',\n '[attr.disabled]': 'triggerInteraction.disabled() ? \"\" : undefined',\n '[id]': 'triggerId()',\n '(click)': 'handleClick($event)',\n '(pointerdown)': 'handlePointerDown($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 protected readonly triggerInteraction = createRdxTriggerInteraction({\n trigger: () => this.elementRef.nativeElement,\n activeTrigger: () => this.rootContext()?.trigger(),\n open: () => this.rootContext()?.isOpen() ?? false,\n disabled: () => this.disabled(),\n contentId: () => this.rootContext()?.contentId\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 useTriggerFocusGuardAnchor({\n trigger: () => this.elementRef.nativeElement,\n contentId: () => this.rootContext()?.contentId,\n enabled: () => this.triggerInteraction.isActive()\n });\n }\n\n protected handleClick(event: MouseEvent) {\n if (this.disabled()) {\n return;\n }\n\n this.rootContext()?.setTriggerOpenInteractionType(this.triggerInteraction.clickInteractionType(event));\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 protected handlePointerDown(event: PointerEvent) {\n this.triggerInteraction.recordPointerDown(event);\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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"}
|