@radix-ng/primitives 1.0.0-beta.3 → 1.0.0-beta.4
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/README.md +1 -1
- package/fesm2022/radix-ng-primitives-accordion.mjs +5 -3
- package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-alert-dialog.mjs +3 -2
- package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-autocomplete.mjs +617 -659
- package/fesm2022/radix-ng-primitives-autocomplete.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-calendar.mjs +5 -3
- package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-combobox.mjs +1305 -572
- package/fesm2022/radix-ng-primitives-combobox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-config.mjs +13 -4
- package/fesm2022/radix-ng-primitives-config.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-context-menu.mjs +51 -10
- package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-core.mjs +1345 -64
- package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-date-field.mjs +5 -3
- package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-dialog.mjs +240 -112
- package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-direction-provider.mjs +70 -0
- package/fesm2022/radix-ng-primitives-direction-provider.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-dismissable-layer.mjs +519 -184
- package/fesm2022/radix-ng-primitives-dismissable-layer.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-drawer.mjs +3 -3
- package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-field.mjs +3 -2
- package/fesm2022/radix-ng-primitives-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs +517 -0
- package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-focus-scope.mjs +296 -70
- package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menu.mjs +861 -286
- package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menubar.mjs +32 -4
- package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs +144 -159
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popover.mjs +220 -205
- package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popper.mjs +94 -51
- package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-presence.mjs +1 -1
- package/fesm2022/radix-ng-primitives-presence.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-preview-card.mjs +141 -173
- package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-roving-focus.mjs +4 -2
- package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-scroll-area.mjs +5 -4
- package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-select.mjs +211 -156
- package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-slider.mjs +5 -3
- package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-stepper.mjs +5 -3
- package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-time-field.mjs +5 -3
- package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toast.mjs +15 -36
- package/fesm2022/radix-ng-primitives-toast.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle-group.mjs +5 -3
- package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toolbar.mjs +5 -3
- package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tooltip.mjs +73 -110
- package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
- package/package.json +10 -1
- package/types/radix-ng-primitives-accordion.d.ts +4 -3
- package/types/radix-ng-primitives-autocomplete.d.ts +217 -152
- package/types/radix-ng-primitives-calendar.d.ts +5 -3
- package/types/radix-ng-primitives-combobox.d.ts +672 -283
- package/types/radix-ng-primitives-config.d.ts +1 -1
- package/types/radix-ng-primitives-context-menu.d.ts +15 -5
- package/types/radix-ng-primitives-core.d.ts +762 -14
- package/types/radix-ng-primitives-date-field.d.ts +3 -2
- package/types/radix-ng-primitives-dialog.d.ts +77 -32
- package/types/radix-ng-primitives-direction-provider.d.ts +41 -0
- package/types/radix-ng-primitives-dismissable-layer.d.ts +147 -99
- package/types/radix-ng-primitives-field.d.ts +1 -0
- package/types/radix-ng-primitives-floating-focus-manager.d.ts +175 -0
- package/types/radix-ng-primitives-focus-scope.d.ts +132 -1
- package/types/radix-ng-primitives-menu.d.ts +186 -103
- package/types/radix-ng-primitives-navigation-menu.d.ts +37 -75
- package/types/radix-ng-primitives-popover.d.ts +59 -92
- package/types/radix-ng-primitives-popper.d.ts +39 -9
- package/types/radix-ng-primitives-preview-card.d.ts +39 -72
- package/types/radix-ng-primitives-roving-focus.d.ts +7 -6
- package/types/radix-ng-primitives-scroll-area.d.ts +2 -2
- package/types/radix-ng-primitives-select.d.ts +145 -108
- package/types/radix-ng-primitives-slider.d.ts +5 -4
- package/types/radix-ng-primitives-stepper.d.ts +4 -3
- package/types/radix-ng-primitives-time-field.d.ts +3 -2
- package/types/radix-ng-primitives-toast.d.ts +7 -7
- package/types/radix-ng-primitives-toggle-group.d.ts +5 -4
- package/types/radix-ng-primitives-toolbar.d.ts +3 -2
- package/types/radix-ng-primitives-tooltip.d.ts +24 -67
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, DestroyRef, signal, model, input, booleanAttribute, output, computed, effect, untracked, Directive,
|
|
2
|
+
import { inject, DestroyRef, ElementRef, signal, model, input, booleanAttribute, output, computed, effect, untracked, Directive, isDevMode, numberAttribute, afterNextRender, NgModule } from '@angular/core';
|
|
3
3
|
import * as i1 from '@radix-ng/primitives/popper';
|
|
4
|
-
import { RdxPopper, RdxPopperContentWrapper, RdxPopperArrow, RdxPopperContent, provideRdxPopperContentConfig, RdxPopperAnchor } from '@radix-ng/primitives/popper';
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
8
|
-
import { RdxDismissableLayer, provideRdxDismissableLayerConfig } from '@radix-ng/primitives/dismissable-layer';
|
|
4
|
+
import { RdxPopper, RdxPopperContentWrapper, RdxPopperArrow, RdxPopperContent, legacyPopperVars, provideRdxPopperContentWrapper, provideRdxPopperContentConfig, RdxPopperAnchor } from '@radix-ng/primitives/popper';
|
|
5
|
+
import * as i2 from '@radix-ng/primitives/core';
|
|
6
|
+
import { createContext, createFloatingRootContext, useTransitionStatus, injectId, createCancelableChangeEventDetails, provideFloatingTree, provideFloatingRootContext, RDX_FLOATING_ROOT_CONTEXT, RDX_FLOATING_REGISTRATION, RdxFloatingNodeRegistration, rdxDevError, useGraceArea, rdxCheckTriggerElement } from '@radix-ng/primitives/core';
|
|
7
|
+
import { RdxDismiss } from '@radix-ng/primitives/dismissable-layer';
|
|
9
8
|
import * as i1$1 from '@radix-ng/primitives/portal';
|
|
10
9
|
import { RdxPortalPresence } from '@radix-ng/primitives/portal';
|
|
11
10
|
import { provideRdxPresenceContext } from '@radix-ng/primitives/presence';
|
|
@@ -19,6 +18,15 @@ class RdxPreviewCardRoot {
|
|
|
19
18
|
constructor() {
|
|
20
19
|
this.popper = inject(RdxPopper);
|
|
21
20
|
this.destroyRef = inject(DestroyRef);
|
|
21
|
+
/**
|
|
22
|
+
* Per-popup floating root context (ADR 0015) — the shared store the popup's dismissal capability
|
|
23
|
+
* reads (`open`, `triggers`, the reference/floating elements). The tree node is registered by the
|
|
24
|
+
* popup; this context exists independently so dismissal can read `open()`.
|
|
25
|
+
*/
|
|
26
|
+
this.floatingContext = createFloatingRootContext({
|
|
27
|
+
ownerDocument: inject(ElementRef).nativeElement.ownerDocument,
|
|
28
|
+
open: () => this.open()
|
|
29
|
+
});
|
|
22
30
|
/** Shared open/close transition state machine (completes on the real animationend). */
|
|
23
31
|
this.transition = useTransitionStatus((open) => {
|
|
24
32
|
this.instant.set(false);
|
|
@@ -57,11 +65,13 @@ class RdxPreviewCardRoot {
|
|
|
57
65
|
this.triggers = signal([], ...(ngDevMode ? [{ debugName: "triggers" }] : /* istanbul ignore next */ []));
|
|
58
66
|
this.payload = signal(undefined, ...(ngDevMode ? [{ debugName: "payload" }] : /* istanbul ignore next */ []));
|
|
59
67
|
this.isPointerDownOnTrigger = signal(false, ...(ngDevMode ? [{ debugName: "isPointerDownOnTrigger" }] : /* istanbul ignore next */ []));
|
|
68
|
+
this.preventUnmountOnClose = signal(false, ...(ngDevMode ? [{ debugName: "preventUnmountOnClose" }] : /* istanbul ignore next */ []));
|
|
60
69
|
this.onOpenChange = output();
|
|
61
70
|
this.onOpenChangeComplete = output();
|
|
62
71
|
this.registeredTriggers = new Map();
|
|
63
72
|
this.viewportTriggerChange = new Set();
|
|
64
73
|
this.state = computed(() => (this.open() ? 'open' : 'closed'), ...(ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []));
|
|
74
|
+
this.present = computed(() => this.open() || this.preventUnmountOnClose(), ...(ngDevMode ? [{ debugName: "present" }] : /* istanbul ignore next */ []));
|
|
65
75
|
let previousOpen = this.open();
|
|
66
76
|
effect(() => {
|
|
67
77
|
const defaultOpen = this.defaultOpen();
|
|
@@ -95,6 +105,14 @@ class RdxPreviewCardRoot {
|
|
|
95
105
|
}
|
|
96
106
|
});
|
|
97
107
|
effect(() => this.popper.anchorOverride.set(this.trigger()));
|
|
108
|
+
// Sync the dismissal reference (the active trigger) so an outside-press on the trigger counts
|
|
109
|
+
// as "inside" and never dismisses (ADR 0015).
|
|
110
|
+
effect(() => this.floatingContext.setReferenceElement(this.trigger() ?? null));
|
|
111
|
+
effect(() => {
|
|
112
|
+
if (this.open() && this.preventUnmountOnClose()) {
|
|
113
|
+
this.preventUnmountOnClose.set(false);
|
|
114
|
+
}
|
|
115
|
+
});
|
|
98
116
|
this.destroyRef.onDestroy(() => {
|
|
99
117
|
this.clearHoverTimers();
|
|
100
118
|
if (this.instantFrame !== undefined) {
|
|
@@ -104,10 +122,25 @@ class RdxPreviewCardRoot {
|
|
|
104
122
|
}
|
|
105
123
|
show(trigger = this.trigger(), payload, triggerId, reason = 'none', event = new Event('preview-card.open-change'), fromHover = false) {
|
|
106
124
|
this.clearHoverTimers();
|
|
107
|
-
this.isHoverActive.set(fromHover);
|
|
108
|
-
this.openChangeReason.set(reason);
|
|
109
125
|
const previousTrigger = this.trigger();
|
|
110
126
|
const changedTriggerWhileOpen = this.open() && previousTrigger !== trigger;
|
|
127
|
+
const changed = !this.open() || previousTrigger !== trigger;
|
|
128
|
+
if (!changed) {
|
|
129
|
+
this.isHoverActive.set(fromHover);
|
|
130
|
+
this.openChangeReason.set(reason);
|
|
131
|
+
if (triggerId !== undefined) {
|
|
132
|
+
this.triggerId.set(triggerId);
|
|
133
|
+
}
|
|
134
|
+
this.payload.set(payload);
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
const change = this.createOpenChangeEvent(true, reason, event, trigger, triggerId ?? this.triggerId());
|
|
138
|
+
this.onOpenChange.emit(change.payload);
|
|
139
|
+
if (change.eventDetails.isCanceled()) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
this.isHoverActive.set(fromHover);
|
|
143
|
+
this.openChangeReason.set(reason);
|
|
111
144
|
this.instant.set(changedTriggerWhileOpen || reason === 'trigger-focus');
|
|
112
145
|
if (changedTriggerWhileOpen) {
|
|
113
146
|
this.scheduleInstantReset();
|
|
@@ -122,22 +155,26 @@ class RdxPreviewCardRoot {
|
|
|
122
155
|
this.triggerId.set(triggerId);
|
|
123
156
|
}
|
|
124
157
|
this.payload.set(payload);
|
|
125
|
-
|
|
158
|
+
this.preventUnmountOnClose.set(false);
|
|
126
159
|
this.open.set(true);
|
|
127
|
-
|
|
128
|
-
this.emitOpenChange(true, reason, event);
|
|
129
|
-
}
|
|
160
|
+
this.floatingContext.events.emit('openchange', { open: true, reason, event: change.eventDetails.event });
|
|
130
161
|
}
|
|
131
162
|
close(reason = 'none', event = new Event('preview-card.open-change')) {
|
|
132
163
|
this.clearHoverTimers();
|
|
133
|
-
this.isHoverActive.set(false);
|
|
134
164
|
if (!this.open()) {
|
|
135
165
|
return;
|
|
136
166
|
}
|
|
167
|
+
const change = this.createOpenChangeEvent(false, reason, event, this.trigger(), this.triggerId());
|
|
168
|
+
this.onOpenChange.emit(change.payload);
|
|
169
|
+
if (change.eventDetails.isCanceled()) {
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
this.isHoverActive.set(false);
|
|
137
173
|
this.instant.set(reason !== 'none' && reason !== 'trigger-hover');
|
|
138
174
|
this.openChangeReason.set(reason);
|
|
175
|
+
this.preventUnmountOnClose.set(change.shouldPreventUnmountOnClose());
|
|
139
176
|
this.open.set(false);
|
|
140
|
-
this.
|
|
177
|
+
this.floatingContext.events.emit('openchange', { open: false, reason, event: change.eventDetails.event });
|
|
141
178
|
}
|
|
142
179
|
toggle(triggerId, trigger, payload, event) {
|
|
143
180
|
this.clearHoverTimers();
|
|
@@ -177,6 +214,7 @@ class RdxPreviewCardRoot {
|
|
|
177
214
|
registerTrigger(id, trigger, payload) {
|
|
178
215
|
this.registeredTriggers.set(id, { element: trigger, payload });
|
|
179
216
|
this.triggers.update((triggers) => (triggers.includes(trigger) ? triggers : [...triggers, trigger]));
|
|
217
|
+
this.floatingContext.triggers.add(trigger);
|
|
180
218
|
if (this.triggerId() === id) {
|
|
181
219
|
this.trigger.set(trigger);
|
|
182
220
|
this.payload.set(payload());
|
|
@@ -190,6 +228,7 @@ class RdxPreviewCardRoot {
|
|
|
190
228
|
this.registeredTriggers.delete(id);
|
|
191
229
|
}
|
|
192
230
|
this.triggers.update((triggers) => triggers.filter((candidate) => candidate !== trigger));
|
|
231
|
+
this.floatingContext.triggers.delete(trigger);
|
|
193
232
|
if (this.destroyRef.destroyed) {
|
|
194
233
|
return;
|
|
195
234
|
}
|
|
@@ -235,14 +274,20 @@ class RdxPreviewCardRoot {
|
|
|
235
274
|
this.trigger.set(trigger.element);
|
|
236
275
|
this.payload.set(trigger.payload());
|
|
237
276
|
}
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
277
|
+
createOpenChangeEvent(open, reason, event, trigger, triggerId) {
|
|
278
|
+
const change = createCancelableChangeEventDetails(reason, event, trigger);
|
|
279
|
+
return {
|
|
280
|
+
eventDetails: change.eventDetails,
|
|
281
|
+
shouldPreventUnmountOnClose: change.shouldPreventUnmountOnClose,
|
|
282
|
+
payload: {
|
|
283
|
+
open,
|
|
284
|
+
triggerId,
|
|
285
|
+
trigger: change.eventDetails.trigger,
|
|
286
|
+
reason: change.eventDetails.reason,
|
|
287
|
+
event: change.eventDetails.event,
|
|
288
|
+
eventDetails: change.eventDetails
|
|
289
|
+
}
|
|
290
|
+
};
|
|
246
291
|
}
|
|
247
292
|
clearHoverTimers() {
|
|
248
293
|
this.clearOpenTimer();
|
|
@@ -272,14 +317,22 @@ class RdxPreviewCardRoot {
|
|
|
272
317
|
});
|
|
273
318
|
}
|
|
274
319
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxPreviewCardRoot, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
275
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: RdxPreviewCardRoot, isStandalone: true, selector: "[rdxPreviewCardRoot]", 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 }, handle: { classPropertyName: "handle", publicName: "handle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", triggerId: "triggerIdChange", onOpenChange: "onOpenChange", onOpenChangeComplete: "onOpenChangeComplete" }, providers: [
|
|
320
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: RdxPreviewCardRoot, isStandalone: true, selector: "[rdxPreviewCardRoot]", 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 }, handle: { classPropertyName: "handle", publicName: "handle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", triggerId: "triggerIdChange", onOpenChange: "onOpenChange", onOpenChangeComplete: "onOpenChangeComplete" }, providers: [
|
|
321
|
+
provideRdxPreviewCardRootContext(context),
|
|
322
|
+
provideFloatingTree(),
|
|
323
|
+
provideFloatingRootContext(() => inject(RdxPreviewCardRoot).floatingContext)
|
|
324
|
+
], exportAs: ["rdxPreviewCardRoot"], hostDirectives: [{ directive: i1.RdxPopper }], ngImport: i0 }); }
|
|
276
325
|
}
|
|
277
326
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxPreviewCardRoot, decorators: [{
|
|
278
327
|
type: Directive,
|
|
279
328
|
args: [{
|
|
280
329
|
selector: '[rdxPreviewCardRoot]',
|
|
281
330
|
exportAs: 'rdxPreviewCardRoot',
|
|
282
|
-
providers: [
|
|
331
|
+
providers: [
|
|
332
|
+
provideRdxPreviewCardRootContext(context),
|
|
333
|
+
provideFloatingTree(),
|
|
334
|
+
provideFloatingRootContext(() => inject(RdxPreviewCardRoot).floatingContext)
|
|
335
|
+
],
|
|
283
336
|
hostDirectives: [RdxPopper]
|
|
284
337
|
}]
|
|
285
338
|
}], ctorParameters: () => [], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], defaultOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultOpen", required: false }] }], triggerId: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerId", required: false }] }, { type: i0.Output, args: ["triggerIdChange"] }], defaultTriggerId: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultTriggerId", required: false }] }], handle: [{ type: i0.Input, args: [{ isSignal: true, alias: "handle", required: false }] }], onOpenChange: [{ type: i0.Output, args: ["onOpenChange"] }], onOpenChangeComplete: [{ type: i0.Output, args: ["onOpenChangeComplete"] }] } });
|
|
@@ -287,6 +340,7 @@ function contextFor(root) {
|
|
|
287
340
|
return {
|
|
288
341
|
contentId: root.contentId,
|
|
289
342
|
isOpen: root.open.asReadonly(),
|
|
343
|
+
present: root.present,
|
|
290
344
|
trigger: root.trigger.asReadonly(),
|
|
291
345
|
triggers: root.triggers.asReadonly(),
|
|
292
346
|
payload: root.payload.asReadonly(),
|
|
@@ -366,79 +420,73 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
366
420
|
|
|
367
421
|
/**
|
|
368
422
|
* A container for the preview-card contents.
|
|
423
|
+
*
|
|
424
|
+
* **ADR 0015 migration** onto the new floating dismissal engine (dismissal-only — a preview-card has
|
|
425
|
+
* no focus manager, ADR 0017 §1). Escape, an outside press, and a focus-out all close it (the legacy's
|
|
426
|
+
* trigger-press preventDefault is now automatic: the trigger is the registered reference, so a press on
|
|
427
|
+
* it is "inside" and never fires `pointerDownOutside`). A focus-out while a pointer is held on the
|
|
428
|
+
* trigger is still vetoed.
|
|
369
429
|
*/
|
|
370
430
|
class RdxPreviewCardPopup {
|
|
371
431
|
constructor() {
|
|
372
432
|
this.rootContext = injectRdxPreviewCardRootContext();
|
|
373
|
-
this.
|
|
433
|
+
this.host = inject(ElementRef).nativeElement;
|
|
434
|
+
this.floatingContext = inject(RDX_FLOATING_ROOT_CONTEXT);
|
|
435
|
+
this.registration = inject(RDX_FLOATING_REGISTRATION, { optional: true });
|
|
374
436
|
this.wrapper = inject(RdxPopperContentWrapper, { optional: true });
|
|
375
437
|
this.align = computed(() => this.wrapper?.placedAlign(), ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
|
|
376
438
|
this.side = computed(() => this.wrapper?.placedSide(), ...(ngDevMode ? [{ debugName: "side" }] : /* istanbul ignore next */ []));
|
|
377
|
-
this.dismissDetails = {
|
|
378
|
-
reason: 'none',
|
|
379
|
-
event: new Event('preview-card.dismiss')
|
|
380
|
-
};
|
|
381
439
|
/**
|
|
382
440
|
* Event handler called when the escape key is down. Can be prevented.
|
|
383
441
|
*/
|
|
384
|
-
this.escapeKeyDown =
|
|
442
|
+
this.escapeKeyDown = output();
|
|
385
443
|
/**
|
|
386
444
|
* Event handler called when a pointerdown event happens outside of the popup. Can be prevented.
|
|
387
445
|
*/
|
|
388
|
-
this.pointerDownOutside =
|
|
446
|
+
this.pointerDownOutside = output();
|
|
389
447
|
/**
|
|
390
448
|
* Event handler called when focus moves outside of the popup. Can be prevented.
|
|
391
449
|
*/
|
|
392
|
-
this.focusOutside =
|
|
450
|
+
this.focusOutside = output();
|
|
393
451
|
/**
|
|
394
452
|
* Event handler called when an interaction happens outside of the popup. Can be prevented.
|
|
395
453
|
*/
|
|
396
|
-
this.interactOutside =
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
454
|
+
this.interactOutside = output();
|
|
455
|
+
this.floatingContext.setFloatingElement(this.host);
|
|
456
|
+
const unregisterTransitionElement = this.rootContext.registerTransitionElement(this.host);
|
|
457
|
+
inject(DestroyRef).onDestroy(unregisterTransitionElement);
|
|
458
|
+
new RdxDismiss(this.floatingContext, () => this.registration?.node() ?? null, {
|
|
459
|
+
escapeKey: () => true,
|
|
460
|
+
outsidePress: () => true,
|
|
461
|
+
focusOutside: () => true,
|
|
462
|
+
onEscapeKeyDown: (event) => this.escapeKeyDown.emit(event),
|
|
463
|
+
onPointerDownOutside: (event) => {
|
|
464
|
+
this.pointerDownOutside.emit(event);
|
|
465
|
+
this.interactOutside.emit(event);
|
|
466
|
+
},
|
|
467
|
+
onFocusOutside: (event) => {
|
|
468
|
+
// A focus-out triggered by a pointer press still in flight on the trigger must not close
|
|
469
|
+
// the card (the toggle handles it) — veto it like the legacy did.
|
|
470
|
+
if (this.rootContext.isPointerDownOnTrigger()) {
|
|
471
|
+
event.preventDefault();
|
|
472
|
+
}
|
|
473
|
+
this.focusOutside.emit(event);
|
|
474
|
+
this.interactOutside.emit(event);
|
|
475
|
+
},
|
|
476
|
+
onDismiss: (reason, event) => {
|
|
477
|
+
const mapped = reason === 'escape-key' ? 'escape-key' : reason === 'outside-press' ? 'outside-press' : 'none';
|
|
478
|
+
this.rootContext.close(mapped, event);
|
|
411
479
|
}
|
|
412
480
|
});
|
|
413
|
-
this.dismissableLayer.escapeKeyDown.subscribe((event) => {
|
|
414
|
-
this.dismissDetails = { reason: 'escape-key', event };
|
|
415
|
-
});
|
|
416
|
-
this.dismissableLayer.dismiss.subscribe(() => {
|
|
417
|
-
this.rootContext.close(this.dismissDetails.reason, this.dismissDetails.event);
|
|
418
|
-
this.dismissDetails = { reason: 'none', event: new Event('preview-card.dismiss') };
|
|
419
|
-
});
|
|
420
481
|
}
|
|
421
482
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxPreviewCardPopup, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
422
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: RdxPreviewCardPopup, isStandalone: true, selector: "[rdxPreviewCardPopup]", outputs: { escapeKeyDown: "escapeKeyDown", pointerDownOutside: "pointerDownOutside", focusOutside: "focusOutside", interactOutside: "interactOutside" }, host: { listeners: { "pointerenter": "rootContext.cancelHoverClose()" }, properties: { "attr.data-closed": "rootContext.isOpen() ? undefined : \"\"", "attr.data-ending-style": "rootContext.transitionStatus() === \"ending\" ? \"\" : undefined", "attr.data-instant": "rootContext.instant() ? \"\" : undefined", "attr.data-open": "rootContext.isOpen() ? \"\" : undefined", "attr.data-starting-style": "rootContext.transitionStatus() === \"starting\" ? \"\" : undefined", "attr.data-state": "rootContext.isOpen() ? \"open\" : \"closed\"", "attr.data-align": "align()", "attr.data-side": "side()", "id": "rootContext.contentId" } },
|
|
423
|
-
provideRdxDismissableLayerConfig(() => {
|
|
424
|
-
return {
|
|
425
|
-
disableOutsidePointerEvents: signal(false)
|
|
426
|
-
};
|
|
427
|
-
})
|
|
428
|
-
], hostDirectives: [{ directive: i1.RdxPopperContent }, { directive: i2.RdxDismissableLayer }], ngImport: i0 }); }
|
|
483
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: RdxPreviewCardPopup, isStandalone: true, selector: "[rdxPreviewCardPopup]", outputs: { escapeKeyDown: "escapeKeyDown", pointerDownOutside: "pointerDownOutside", focusOutside: "focusOutside", interactOutside: "interactOutside" }, host: { listeners: { "pointerenter": "rootContext.cancelHoverClose()" }, properties: { "attr.data-closed": "rootContext.isOpen() ? undefined : \"\"", "attr.data-ending-style": "rootContext.transitionStatus() === \"ending\" ? \"\" : undefined", "attr.data-instant": "rootContext.instant() ? \"\" : undefined", "attr.data-open": "rootContext.isOpen() ? \"\" : undefined", "attr.data-starting-style": "rootContext.transitionStatus() === \"starting\" ? \"\" : undefined", "attr.data-state": "rootContext.isOpen() ? \"open\" : \"closed\"", "attr.data-align": "align()", "attr.data-side": "side()", "id": "rootContext.contentId" } }, hostDirectives: [{ directive: i1.RdxPopperContent }, { directive: i2.RdxFloatingNodeRegistration }], ngImport: i0 }); }
|
|
429
484
|
}
|
|
430
485
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxPreviewCardPopup, decorators: [{
|
|
431
486
|
type: Directive,
|
|
432
487
|
args: [{
|
|
433
488
|
selector: '[rdxPreviewCardPopup]',
|
|
434
|
-
hostDirectives: [RdxPopperContent,
|
|
435
|
-
providers: [
|
|
436
|
-
provideRdxDismissableLayerConfig(() => {
|
|
437
|
-
return {
|
|
438
|
-
disableOutsidePointerEvents: signal(false)
|
|
439
|
-
};
|
|
440
|
-
})
|
|
441
|
-
],
|
|
489
|
+
hostDirectives: [RdxPopperContent, RdxFloatingNodeRegistration],
|
|
442
490
|
host: {
|
|
443
491
|
'[attr.data-closed]': 'rootContext.isOpen() ? undefined : ""',
|
|
444
492
|
'[attr.data-ending-style]': 'rootContext.transitionStatus() === "ending" ? "" : undefined',
|
|
@@ -465,7 +513,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
465
513
|
*/
|
|
466
514
|
class RdxPreviewCardPortal {
|
|
467
515
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxPreviewCardPortal, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
468
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: RdxPreviewCardPortal, isStandalone: true, selector: "ng-template[rdxPreviewCardPortal]", providers: [provideRdxPresenceContext(() => ({ present: injectRdxPreviewCardRootContext().
|
|
516
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: RdxPreviewCardPortal, isStandalone: true, selector: "ng-template[rdxPreviewCardPortal]", providers: [provideRdxPresenceContext(() => ({ present: injectRdxPreviewCardRootContext().present }))], exportAs: ["rdxPreviewCardPortal"], hostDirectives: [{ directive: i1$1.RdxPortalPresence, inputs: ["container", "container"] }], ngImport: i0 }); }
|
|
469
517
|
}
|
|
470
518
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxPreviewCardPortal, decorators: [{
|
|
471
519
|
type: Directive,
|
|
@@ -473,7 +521,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
473
521
|
selector: 'ng-template[rdxPreviewCardPortal]',
|
|
474
522
|
exportAs: 'rdxPreviewCardPortal',
|
|
475
523
|
hostDirectives: [{ directive: RdxPortalPresence, inputs: ['container'] }],
|
|
476
|
-
providers: [provideRdxPresenceContext(() => ({ present: injectRdxPreviewCardRootContext().
|
|
524
|
+
providers: [provideRdxPresenceContext(() => ({ present: injectRdxPreviewCardRootContext().present }))]
|
|
477
525
|
}]
|
|
478
526
|
}] });
|
|
479
527
|
/**
|
|
@@ -484,9 +532,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
484
532
|
class RdxPreviewCardPortalMisuseGuard {
|
|
485
533
|
constructor() {
|
|
486
534
|
if (isDevMode()) {
|
|
487
|
-
|
|
535
|
+
rdxDevError('preview-card/portal-on-element', '`rdxPreviewCardPortal` is now a structural directive. ' +
|
|
488
536
|
'Use `*rdxPreviewCardPortal` on the positioner element or `<ng-template rdxPreviewCardPortal>`. ' +
|
|
489
|
-
'rdxPreviewCardPortalPresence has been removed.
|
|
537
|
+
'rdxPreviewCardPortalPresence has been removed.', 'components/preview-card');
|
|
490
538
|
}
|
|
491
539
|
}
|
|
492
540
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxPreviewCardPortalMisuseGuard, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
@@ -501,132 +549,51 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
501
549
|
|
|
502
550
|
/**
|
|
503
551
|
* Positions the preview-card against its trigger.
|
|
552
|
+
*
|
|
553
|
+
* A "thin" positioner (ADR 0012): it inherits the popper positioning surface (inputs, `placed`
|
|
554
|
+
* output, unified vars + placement attrs) from {@link RdxPopperContentWrapper} and adds preview-card's
|
|
555
|
+
* own concerns — Base UI-aligned defaults via the config provider, the open/closed/instant state
|
|
556
|
+
* attributes, the deprecated `--radix-preview-card-*` aliases, and the grace-area hover bridge.
|
|
504
557
|
*/
|
|
505
|
-
class RdxPreviewCardPositioner {
|
|
558
|
+
class RdxPreviewCardPositioner extends RdxPopperContentWrapper {
|
|
506
559
|
constructor() {
|
|
560
|
+
super();
|
|
507
561
|
this.rootContext = injectRdxPreviewCardRootContext();
|
|
508
|
-
this.
|
|
509
|
-
this.
|
|
562
|
+
this.legacyVars = legacyPopperVars('preview-card');
|
|
563
|
+
this.containerRef = inject(ElementRef);
|
|
510
564
|
this.triggerEl = signal(null, ...(ngDevMode ? [{ debugName: "triggerEl" }] : /* istanbul ignore next */ []));
|
|
511
|
-
this.containerEl = signal(this.
|
|
565
|
+
this.containerEl = signal(this.containerRef.nativeElement, ...(ngDevMode ? [{ debugName: "containerEl" }] : /* istanbul ignore next */ []));
|
|
512
566
|
this.graceArea = useGraceArea(this.triggerEl, this.containerEl);
|
|
513
|
-
/**
|
|
514
|
-
* An element to position the popup against. Defaults to the trigger.
|
|
515
|
-
*/
|
|
516
|
-
this.anchor = input(...(ngDevMode ? [undefined, { debugName: "anchor" }] : /* istanbul ignore next */ []));
|
|
517
|
-
/**
|
|
518
|
-
* The preferred side of the trigger to render against when open.
|
|
519
|
-
*/
|
|
520
|
-
this.side = input('bottom', ...(ngDevMode ? [{ debugName: "side" }] : /* istanbul ignore next */ []));
|
|
521
|
-
/**
|
|
522
|
-
* Distance between the trigger and the popup in pixels.
|
|
523
|
-
*/
|
|
524
|
-
this.sideOffset = input(0, { ...(ngDevMode ? { debugName: "sideOffset" } : /* istanbul ignore next */ {}), transform: numberAttribute });
|
|
525
|
-
/**
|
|
526
|
-
* How to align the popup relative to the specified side.
|
|
527
|
-
*/
|
|
528
|
-
this.align = input('center', ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
|
|
529
|
-
/**
|
|
530
|
-
* An offset in pixels from the `start` or `end` alignment options.
|
|
531
|
-
*/
|
|
532
|
-
this.alignOffset = input(0, { ...(ngDevMode ? { debugName: "alignOffset" } : /* istanbul ignore next */ {}), transform: numberAttribute });
|
|
533
|
-
/**
|
|
534
|
-
* Minimum distance to maintain between the arrow and the edges of the popup.
|
|
535
|
-
*/
|
|
536
|
-
this.arrowPadding = input(5, { ...(ngDevMode ? { debugName: "arrowPadding" } : /* istanbul ignore next */ {}), transform: numberAttribute });
|
|
537
|
-
/**
|
|
538
|
-
* Whether to override side and alignment preferences to prevent collisions.
|
|
539
|
-
*/
|
|
540
|
-
this.avoidCollisions = input(true, { ...(ngDevMode ? { debugName: "avoidCollisions" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
541
|
-
/**
|
|
542
|
-
* The element used as the collision boundary.
|
|
543
|
-
*/
|
|
544
|
-
this.collisionBoundary = input(...(ngDevMode ? [undefined, { debugName: "collisionBoundary" }] : /* istanbul ignore next */ []));
|
|
545
|
-
/**
|
|
546
|
-
* Distance in pixels from the boundary edges where collision detection should occur.
|
|
547
|
-
*/
|
|
548
|
-
this.collisionPadding = input(5, ...(ngDevMode ? [{ debugName: "collisionPadding" }] : /* istanbul ignore next */ []));
|
|
549
|
-
/**
|
|
550
|
-
* The sticky behavior on the alignment axis.
|
|
551
|
-
*/
|
|
552
|
-
this.sticky = input('partial', ...(ngDevMode ? [{ debugName: "sticky" }] : /* istanbul ignore next */ []));
|
|
553
|
-
/**
|
|
554
|
-
* Whether to hide the popup when the trigger becomes fully occluded.
|
|
555
|
-
*/
|
|
556
|
-
this.hideWhenDetached = input(false, { ...(ngDevMode ? { debugName: "hideWhenDetached" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
557
|
-
/**
|
|
558
|
-
* The CSS position strategy used by Floating UI.
|
|
559
|
-
*/
|
|
560
|
-
this.positionStrategy = input('fixed', ...(ngDevMode ? [{ debugName: "positionStrategy" }] : /* istanbul ignore next */ []));
|
|
561
|
-
/**
|
|
562
|
-
* Whether to update position on every animation frame.
|
|
563
|
-
*/
|
|
564
|
-
this.updatePositionStrategy = input('always', ...(ngDevMode ? [{ debugName: "updatePositionStrategy" }] : /* istanbul ignore next */ []));
|
|
565
|
-
/**
|
|
566
|
-
* Emits when the popup has been placed.
|
|
567
|
-
*/
|
|
568
|
-
this.placed = outputFromObservable(outputToObservable(inject(RdxPopperContentWrapper).placed));
|
|
569
567
|
effect(() => this.triggerEl.set(this.rootContext.trigger() ?? null));
|
|
570
568
|
this.graceArea.onPointerExit(() => {
|
|
571
569
|
this.rootContext.closeOnHover();
|
|
572
570
|
});
|
|
573
571
|
}
|
|
574
572
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxPreviewCardPositioner, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
575
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
573
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: RdxPreviewCardPositioner, isStandalone: true, selector: "[rdxPreviewCardPositioner]", host: { properties: { "attr.data-open": "rootContext.isOpen() ? \"\" : undefined", "attr.data-closed": "rootContext.isOpen() ? undefined : \"\"", "attr.data-instant": "rootContext.instant() ? \"\" : undefined", "style": "legacyVars" } }, providers: [
|
|
574
|
+
...provideRdxPopperContentWrapper(RdxPreviewCardPositioner),
|
|
576
575
|
provideRdxPopperContentConfig({ arrowPadding: 5, collisionPadding: 5, updatePositionStrategy: 'always' })
|
|
577
|
-
],
|
|
576
|
+
], usesInheritance: true, ngImport: i0 }); }
|
|
578
577
|
}
|
|
579
578
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxPreviewCardPositioner, decorators: [{
|
|
580
579
|
type: Directive,
|
|
581
580
|
args: [{
|
|
582
581
|
selector: '[rdxPreviewCardPositioner]',
|
|
583
582
|
providers: [
|
|
583
|
+
...provideRdxPopperContentWrapper(RdxPreviewCardPositioner),
|
|
584
584
|
provideRdxPopperContentConfig({ arrowPadding: 5, collisionPadding: 5, updatePositionStrategy: 'always' })
|
|
585
585
|
],
|
|
586
|
-
hostDirectives: [
|
|
587
|
-
{
|
|
588
|
-
directive: RdxPopperContentWrapper,
|
|
589
|
-
inputs: [
|
|
590
|
-
'anchor',
|
|
591
|
-
'side',
|
|
592
|
-
'sideOffset',
|
|
593
|
-
'align',
|
|
594
|
-
'alignOffset',
|
|
595
|
-
'arrowPadding',
|
|
596
|
-
'avoidCollisions',
|
|
597
|
-
'collisionBoundary',
|
|
598
|
-
'collisionPadding',
|
|
599
|
-
'sticky',
|
|
600
|
-
'hideWhenDetached',
|
|
601
|
-
'positionStrategy',
|
|
602
|
-
'updatePositionStrategy'
|
|
603
|
-
]
|
|
604
|
-
}
|
|
605
|
-
],
|
|
606
586
|
host: {
|
|
607
587
|
'[attr.data-open]': 'rootContext.isOpen() ? "" : undefined',
|
|
608
588
|
'[attr.data-closed]': 'rootContext.isOpen() ? undefined : ""',
|
|
609
|
-
'[attr.data-anchor-hidden]': 'wrapper.anchorHidden() ? "" : undefined',
|
|
610
|
-
'[attr.data-align]': 'wrapper.placedAlign()',
|
|
611
|
-
'[attr.data-side]': 'wrapper.placedSide()',
|
|
612
589
|
'[attr.data-instant]': 'rootContext.instant() ? "" : undefined',
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
'--available-height': 'var(--radix-popper-available-height)',
|
|
618
|
-
'--positioner-width': 'var(--radix-popper-content-wrapper-width)',
|
|
619
|
-
'--positioner-height': 'var(--radix-popper-content-wrapper-height)',
|
|
620
|
-
'--transform-origin': 'var(--radix-popper-transform-origin)',
|
|
621
|
-
'--radix-preview-card-content-transform-origin': 'var(--radix-popper-transform-origin)',
|
|
622
|
-
'--radix-preview-card-content-available-width': 'var(--radix-popper-available-width)',
|
|
623
|
-
'--radix-preview-card-content-available-height': 'var(--radix-popper-available-height)',
|
|
624
|
-
'--radix-preview-card-trigger-width': 'var(--radix-popper-anchor-width)',
|
|
625
|
-
'--radix-preview-card-trigger-height': 'var(--radix-popper-anchor-height)'
|
|
626
|
-
}`
|
|
590
|
+
// `data-side`/`data-align`/`data-anchor-hidden` and the unified `--anchor-*`/`--available-*`/
|
|
591
|
+
// `--transform-origin` vars come from the inherited wrapper (ADR 0012); only the deprecated
|
|
592
|
+
// `--radix-preview-card-*` aliases remain, for one release of back-compat.
|
|
593
|
+
'[style]': 'legacyVars'
|
|
627
594
|
}
|
|
628
595
|
}]
|
|
629
|
-
}], ctorParameters: () => []
|
|
596
|
+
}], ctorParameters: () => [] });
|
|
630
597
|
|
|
631
598
|
/**
|
|
632
599
|
* A link or element that opens the preview card.
|
|
@@ -664,6 +631,7 @@ class RdxPreviewCardTrigger {
|
|
|
664
631
|
this.isOpen = computed(() => this.rootContext()?.isOpen() === true && this.rootContext()?.trigger() === this.elementRef.nativeElement, ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
|
|
665
632
|
this.isPressed = computed(() => this.isOpen() && this.rootContext()?.openChangeReason() === 'trigger-press', ...(ngDevMode ? [{ debugName: "isPressed" }] : /* istanbul ignore next */ []));
|
|
666
633
|
this.generatedId = injectId('rdx-preview-card-trigger-');
|
|
634
|
+
rdxCheckTriggerElement('rdxPreviewCardTrigger', 'preview-card/trigger-element', 'components/preview-card');
|
|
667
635
|
effect((onCleanup) => {
|
|
668
636
|
const handle = this.handle();
|
|
669
637
|
if (handle) {
|